@rpgjs/vite 5.0.0-alpha.8 → 5.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index-Bc9qRSkO.js +5496 -0
- package/dist/index-Bc9qRSkO.js.map +1 -0
- package/dist/index.js +4542 -863
- package/dist/index.js.map +1 -1
- package/dist/mmorpg-build-plugin.d.ts +8 -0
- package/dist/rpgjs-plugin.d.ts +8 -3
- package/dist/server-plugin.d.ts +2 -149
- package/package.json +14 -13
- package/src/mmorpg-build-plugin.ts +123 -0
- package/src/module-config.ts +13 -0
- package/src/rpgjs-plugin.ts +36 -4
- package/src/server-plugin.ts +15 -436
- package/tests/latency-simulation.spec.ts +209 -0
- package/tsconfig.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/tiled-map-folder-plugin.ts","../src/module-config.ts","../../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js","../../../node_modules/.pnpm/magic-string@0.30.17/node_modules/magic-string/dist/magic-string.es.mjs","../../../node_modules/.pnpm/acorn@8.14.1/node_modules/acorn/dist/acorn.mjs","../../../node_modules/.pnpm/acorn-walk@8.3.4/node_modules/acorn-walk/dist/walk.mjs","../src/directive-plugin.ts","../src/remove-imports-plugin.ts","../src/replace-config-import.ts","../src/server-plugin.ts","../src/entry-point-plugin.ts","../src/rpgjs-plugin.ts"],"sourcesContent":["import { Plugin } from 'vite';\nimport { readFileSync, existsSync, statSync, readdirSync, copyFileSync, mkdirSync } from 'fs';\nimport { join, extname, relative, dirname } from 'path';\n\nexport interface DataFolderPluginOptions {\n /**\n * Source folder containing the data files (TMX, TSX, images)\n */\n sourceFolder: string;\n \n /**\n * Public path prefix for accessing the data files\n * @default '/data'\n */\n publicPath?: string;\n \n /**\n * Target folder in build output for the data files\n * @default 'assets/data'\n */\n buildOutputPath?: string;\n \n /**\n * File extensions to include\n * @default ['.tmx', '.tsx', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg']\n */\n allowedExtensions?: string[];\n}\n\n/**\n * Vite plugin that serves a data folder in development mode and copies it to assets during build\n * \n * This plugin allows serving game data files (TMX maps, TSX tilesets, images) during development\n * and automatically includes them in the build output for production deployment.\n * \n * @param options - Configuration options for the plugin\n * \n * @example\n * ```js\n * // In vite.config.ts\n * import { defineConfig } from 'vite';\n * import { dataFolderPlugin } from '@rpgjs/vite';\n * \n * export default defineConfig({\n * plugins: [\n * dataFolderPlugin({\n * sourceFolder: './game-data',\n * publicPath: '/data',\n * buildOutputPath: 'assets/data'\n * })\n * ]\n * });\n * ```\n */\nexport function tiledMapFolderPlugin(options: DataFolderPluginOptions): Plugin {\n const {\n sourceFolder,\n publicPath = '/data',\n buildOutputPath = 'assets/data',\n allowedExtensions = ['.tmx', '.tsx', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg']\n } = options;\n\n let isBuild = false;\n let outputDir = 'dist';\n\n /**\n * Get MIME type based on file extension\n */\n const getMimeType = (filePath: string): string => {\n const ext = extname(filePath).toLowerCase();\n const mimeTypes: Record<string, string> = {\n '.tmx': 'application/xml',\n '.tsx': 'application/xml',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml'\n };\n return mimeTypes[ext] || 'application/octet-stream';\n };\n\n /**\n * Check if file extension is allowed\n */\n const isAllowedFile = (filePath: string): boolean => {\n const ext = extname(filePath).toLowerCase();\n return allowedExtensions.includes(ext);\n };\n\n /**\n * Recursively get all files from a directory\n */\n const getAllFiles = (dirPath: string, basePath: string = dirPath): string[] => {\n const files: string[] = [];\n \n if (!existsSync(dirPath)) {\n return files;\n }\n\n const items = readdirSync(dirPath);\n \n for (const item of items) {\n const fullPath = join(dirPath, item);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory()) {\n files.push(...getAllFiles(fullPath, basePath));\n } else if (isAllowedFile(fullPath)) {\n files.push(fullPath);\n }\n }\n \n return files;\n };\n\n /**\n * Copy files to build output directory\n */\n const copyFilesToBuild = (outputPath: string) => {\n const files = getAllFiles(sourceFolder);\n \n for (const filePath of files) {\n const relativePath = relative(sourceFolder, filePath);\n const targetPath = join(outputPath, buildOutputPath, relativePath);\n const targetDir = dirname(targetPath);\n \n // Create target directory if it doesn't exist\n mkdirSync(targetDir, { recursive: true });\n \n // Copy file\n copyFileSync(filePath, targetPath);\n console.log(`📁 Copied data file: ${relativePath}`);\n }\n };\n\n return {\n name: 'data-folder',\n enforce: 'pre',\n\n configResolved(config) {\n isBuild = config.command === 'build';\n outputDir = config.build.outDir || 'dist';\n },\n\n // Handle build mode - copy files to output directory\n generateBundle() {\n if (isBuild) {\n console.log(`📦 Copying data files from ${sourceFolder} to ${buildOutputPath}...`);\n copyFilesToBuild(outputDir);\n console.log('✅ Data files copied successfully');\n }\n },\n\n // Handle development mode - serve files via middleware\n configureServer(server) {\n if (!existsSync(sourceFolder)) {\n console.warn(`⚠️ Data folder not found: ${sourceFolder}`);\n return;\n }\n\n console.log(`📁 Serving data folder: ${sourceFolder} at ${publicPath}`);\n\n server.middlewares.use((req: any, res: any, next: any) => {\n if (!req.url?.startsWith(publicPath)) {\n return next();\n }\n\n // Remove public path prefix to get relative file path\n const relativePath = req.url.slice(publicPath.length);\n \n // Remove leading slash if present\n const cleanPath = relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;\n \n // Construct full file path\n const filePath = join(sourceFolder, cleanPath);\n\n // Security check - ensure file is within source folder\n const cwd = typeof process !== 'undefined' ? process.cwd() : '';\n const resolvedFilePath = join(cwd, filePath);\n const resolvedSourceFolder = join(cwd, sourceFolder);\n \n if (!resolvedFilePath.startsWith(resolvedSourceFolder)) {\n res.statusCode = 403;\n res.end('Forbidden');\n return;\n }\n\n // Check if file exists and is allowed\n if (!existsSync(filePath) || !isAllowedFile(filePath)) {\n res.statusCode = 404;\n res.end('Not Found');\n return;\n }\n\n // Check if it's a file (not directory)\n const stat = statSync(filePath);\n if (!stat.isFile()) {\n res.statusCode = 404;\n res.end('Not Found');\n return;\n }\n\n try {\n // Read and serve the file\n const fileContent = readFileSync(filePath);\n const mimeType = getMimeType(filePath);\n \n res.setHeader('Content-Type', mimeType);\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.end(fileContent);\n \n console.log(`📄 Served data file: ${cleanPath}`);\n } catch (error) {\n console.error(`❌ Error serving file ${filePath}:`, error);\n res.statusCode = 500;\n res.end('Internal Server Error');\n }\n });\n }\n };\n} ","import { defineConfig, build } from \"vite\";\nimport canvasengine from \"@canvasengine/compiler\";\nimport dts from \"vite-plugin-dts\";\nimport { directivePlugin, removeImportsPlugin } from \"./index\";\n\n/**\n * Creates a build configuration for client or server side\n * \n * This function generates a standardized Vite build configuration that can be used\n * for both client and server builds with different plugins and output directories.\n * \n * @param {Object} options - Build configuration options\n * @param {string} options.side - The build side ('client' or 'server')\n * @param {boolean} options.watch - Whether to enable watch mode\n * @returns {Object} Vite build configuration object\n * \n * @example\n * ```typescript\n * const clientConfig = createBuildConfig({ side: 'client', watch: false });\n * const serverConfig = createBuildConfig({ side: 'server', watch: true });\n * ```\n */\nfunction createBuildConfig({ side, watch }: { side: 'client' | 'server', watch: boolean }) {\n const isClient = side === 'client';\n \n const plugins = isClient \n ? [\n canvasengine(),\n removeImportsPlugin({ patterns: [/server/] }),\n directivePlugin({ side: \"client\" }),\n ]\n : [\n removeImportsPlugin({ patterns: [/\\.ce$/, /client/] }),\n directivePlugin({ side: \"server\" }),\n ];\n\n return {\n configFile: false as const, // Prevent using this config file\n plugins: [\n ...plugins,\n dts({ \n include: ['src/**/*.ts'],\n outDir: 'dist'\n })\n ],\n build: {\n watch: watch ? {} : undefined,\n outDir: `dist/${side}`,\n minify: false,\n lib: {\n entry: {\n index: \"src/index.ts\",\n },\n fileName: \"index\",\n formats: [\"es\" as const],\n },\n rollupOptions: {\n external: [\n /@rpgjs/,\n \"canvasengine\",\n \"esbuild\",\n \"@canvasengine/presets\",\n \"rxjs\",\n ],\n output: {\n preserveModules: true,\n preserveModulesRoot: \"src\",\n },\n },\n },\n };\n}\n\n/**\n * Builds both client and server configurations in parallel\n * \n * This function creates and executes build configurations for both client and server\n * sides simultaneously using Promise.all for better performance.\n * \n * @param {boolean} watch - Whether to enable watch mode for both builds\n * @returns {Promise<void[]>} Promise that resolves when both builds are complete\n * \n * @example\n * ```typescript\n * // Build once\n * await buildClientAndServer(false);\n * \n * // Build with watch mode\n * await buildClientAndServer(true);\n * ```\n */\nasync function buildClientAndServer(watch: boolean = false) {\n const clientBuild = build(createBuildConfig({ side: 'client', watch }));\n const serverBuild = build(createBuildConfig({ side: 'server', watch }));\n\n await Promise.all([clientBuild, serverBuild]);\n\n console.log(\"✅ Build complete\");\n}\n\nconst isWatchMode = process.argv.includes(\"--watch\");\nconst isBuildCommand = process.argv.includes(\"build\");\nconst isManualControl = isWatchMode && isBuildCommand;\n\nexport const rpgjsModuleViteConfig = () => {\n return defineConfig(async ({ command }) => {\n if (isManualControl) {\n buildClientAndServer(true);\n return {};\n }\n if (command === \"build\") {\n console.log(\"👀 Building...\");\n await buildClientAndServer();\n // Return empty config to prevent default build\n process.exit(0);\n } else {\n return {\n plugins: [],\n };\n }\n });\n};\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.sourcemapCodec = {}));\n})(this, (function (exports) { 'use strict';\n\n const comma = ','.charCodeAt(0);\n const semicolon = ';'.charCodeAt(0);\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n const intToChar = new Uint8Array(64); // 64 possible chars.\n const charToInt = new Uint8Array(128); // z is 122 in ASCII\n for (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n }\n function decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n return relative + value;\n }\n function encodeInteger(builder, num, relative) {\n let delta = num - relative;\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0)\n clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n return num;\n }\n function hasMoreVlq(reader, max) {\n if (reader.pos >= max)\n return false;\n return reader.peek() !== comma;\n }\n\n const bufLength = 1024 * 16;\n // Provide a fallback for older environments.\n const td = typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf) {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n class StringWriter {\n constructor() {\n this.pos = 0;\n this.out = '';\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n }\n class StringReader {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n }\n\n const EMPTY = [];\n function decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n const scope = (hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]);\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n }\n function encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length;) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n }\n function _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0)\n writer.write(comma);\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6)\n encodeInteger(writer, scope[5], 0);\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n for (index++; index < scopes.length;) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n return index;\n }\n function decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(reader, definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0);\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n }\n else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(reader, sameSource && prevLine === callsiteLine ? callsiteColumn : 0);\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n }\n else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n }\n function encodeGeneratedRanges(ranges) {\n if (ranges.length === 0)\n return '';\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length;) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n }\n function _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, isScope, callsite, bindings, } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n }\n else if (index > 0) {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, range[1], state[1]);\n const fields = (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n }\n else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1)\n encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);\n encodeInteger(writer, expRange[0], 0);\n }\n }\n }\n for (index++; index < ranges.length;) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n }\n else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n return index;\n }\n function catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n }\n\n function decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(';');\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol)\n sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n }\n else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n }\n else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted)\n sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n }\n function sort(line) {\n line.sort(sortComparator);\n }\n function sortComparator(a, b) {\n return a[0] - b[0];\n }\n function encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0)\n writer.write(semicolon);\n if (line.length === 0)\n continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0)\n writer.write(comma);\n genColumn = encodeInteger(writer, segment[0], genColumn);\n if (segment.length === 1)\n continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n if (segment.length === 4)\n continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n return writer.flush();\n }\n\n exports.decode = decode;\n exports.decodeGeneratedRanges = decodeGeneratedRanges;\n exports.decodeOriginalScopes = decodeOriginalScopes;\n exports.encode = encode;\n exports.encodeGeneratedRanges = encodeGeneratedRanges;\n exports.encodeOriginalScopes = encodeOriginalScopes;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=sourcemap-codec.umd.js.map\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nclass BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n\nclass Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\t{\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nclass SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n\nfunction guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n\nconst toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n\nconst wordRegex = /\\w/;\n\nclass Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nclass MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tif (previous !== replacement) this.overwrite(index, index + stringLength, replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nclass Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n\nexport { Bundle, SourceMap, MagicString as default };\n//# sourceMappingURL=magic-string.es.mjs.map\n","// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called when\n // a semicolon is automatically inserted. It will be passed the\n // position of the inserted semicolon as an offset, and if\n // `locations` is enabled, it is given the location as a `{line,\n // column}` object as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n // When this option has an array as value, objects representing the\n // comments are pushed to it.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_CLASS_FIELD_INIT = 512,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(SCOPE_TOP);\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n }\n return false\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n if (context) { return false }\n\n if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init$1)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init$1)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n var containsEsc = this.containsEsc;\n var refDestructuringErrors = new DestructuringErrors;\n var initPos = this.start;\n var init = awaitAt > -1\n ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n : this.parseExpression(true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n if (this.type === types$1._in) { this.unexpected(awaitAt); }\n node.await = true;\n } else if (isForOf && this.options.ecmaVersion >= 8) {\n if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n else if (this.options.ecmaVersion >= 9) { node.await = false; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(0);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = this.parseBindingAtom();\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n field.value = this.parseMaybeAssign();\n this.exitScope();\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseWithClause = function() {\n var nodes = [];\n if (!this.eat(types$1._with)) {\n return nodes\n }\n this.expect(types$1.braceL);\n var attributeKeys = {};\n var first = true;\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var attr = this.parseImportAttribute();\n var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n if (hasOwn(attributeKeys, keyName))\n { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n attributeKeys[keyName] = true;\n nodes.push(attr);\n }\n return nodes\n};\n\npp$8.parseImportAttribute = function() {\n var node = this.startNode();\n node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n this.expect(types$1.colon);\n if (this.type !== types$1.string) {\n this.unexpected();\n }\n node.value = this.parseExprAtom();\n return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += …;\n// import a from '…';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = …);\n// const a = …;\n// try { … } catch (a) { … }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n if (this.curContext().token === \"function\") { this.context.pop(); }\n this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this.type === types$1.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isLocalVariableAccess(node) {\n return (\n node.type === \"Identifier\" ||\n node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n )\n}\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n this.next();\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"import\";\n node.meta = this.finishNode(meta, \"Identifier\");\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n if (this.options.ecmaVersion >= 16) {\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n node.options = this.parseMaybeAssign();\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n this.unexpected();\n }\n }\n } else {\n node.options = null;\n }\n } else {\n node.options = null;\n }\n } else {\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n this.next();\n if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"new\";\n node.meta = this.finishNode(meta, \"Identifier\");\n this.next();\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n var kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n prop.kind = kind;\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n prop.kind = \"init\";\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.kind = \"init\";\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n this.type = types$1.name;\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n if (this.sourceFile) {\n message += \" in \" + this.sourceFile;\n }\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n // Parent disjunction branch\n this.parent = parent;\n // Identifies this set of sibling branches\n this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n // A branch is separate from another branch if they or any of\n // their parents are siblings in a given disjunction\n for (var self = this; self; self = self.parent) {\n for (var other = alt; other; other = other.parent) {\n if (self.base === other.base && self !== other) { return true }\n }\n }\n return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = Object.create(null);\n this.backReferenceNames = [];\n this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\nfunction hasProp(obj) {\n for (var _ in obj) { return true }\n return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames = Object.create(null);\n state.backReferenceNames.length = 0;\n state.branchID = null;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (!state.groupNames[name]) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n var trackDisjunction = this.options.ecmaVersion >= 16;\n if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n this.regexp_alternative(state);\n }\n if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */)) {\n if (this.options.ecmaVersion >= 16) {\n var addModifiers = this.regexp_eatModifiers(state);\n var hasHyphen = state.eat(0x2D /* - */);\n if (addModifiers || hasHyphen) {\n for (var i = 0; i < addModifiers.length; i++) {\n var modifier = addModifiers.charAt(i);\n if (addModifiers.indexOf(modifier, i + 1) > -1) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n if (hasHyphen) {\n var removeModifiers = this.regexp_eatModifiers(state);\n if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n state.raise(\"Invalid regular expression modifiers\");\n }\n for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n var modifier$1 = removeModifiers.charAt(i$1);\n if (\n removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n addModifiers.indexOf(modifier$1) > -1\n ) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n }\n }\n }\n if (state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n// RegularExpressionModifiers ::\n// [empty]\n// RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n var modifiers = \"\";\n var ch = 0;\n while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n modifiers += codePointToString(ch);\n state.advance();\n }\n return modifiers\n};\n// RegularExpressionModifier :: one of\n// `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n var trackDisjunction = this.options.ecmaVersion >= 16;\n var known = state.groupNames[state.lastStringValue];\n if (known) {\n if (trackDisjunction) {\n for (var i = 0, list = known; i < list.length; i += 1) {\n var altID = list[i];\n\n if (!altID.separatedFrom(state.branchID))\n { state.raise(\"Duplicate capture group name\"); }\n }\n } else {\n state.raise(\"Duplicate capture group name\");\n }\n }\n if (trackDisjunction) {\n (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n } else {\n state.groupNames[state.lastStringValue] = true;\n }\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(this.pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") { break }\n // fall through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n case \"\\r\":\n if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n // fall through\n case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n ++this.curLine;\n this.lineStart = this.pos + 1;\n break\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\n\nvar version = \"8.14.1\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","// AST walker module for ESTree compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All ESTree node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { baseVisitor[type](node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n baseVisitor[type](node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n baseVisitor[type](node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n baseVisitor[type](node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i = 0, list = node.cases; i < list.length; i += 1) {\n var cs = list[i];\n\n c(cs, st);\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n","import { Plugin } from 'vite';\nimport MagicString from 'magic-string';\nimport { parse } from 'acorn';\nimport * as walk from 'acorn-walk';\n\nexport interface DirectivePluginOptions {\n side: 'client' | 'server';\n}\n\nfunction removeNode(s: MagicString, start: number, end: number) {\n s.remove(start, end);\n}\n\nfunction isDirective(node: any): node is any {\n return node.type === 'ExpressionStatement' &&\n node.expression.type === 'Literal' &&\n (node.expression.value === 'use client' || node.expression.value === 'use server');\n}\n\nexport function directivePlugin(options: DirectivePluginOptions): Plugin {\n return {\n name: 'rpgjs-directive',\n transform(code, id) {\n const ast = parse(code, { ecmaVersion: 'latest', sourceType: 'module' }) as any;\n const s = new MagicString(code);\n\n let fileDirective: 'client' | 'server' | null = null;\n if (ast.body.length && isDirective(ast.body[0])) {\n fileDirective = (ast.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (fileDirective !== options.side) {\n return {\n code: 'export default null;',\n map: { mappings: '' }\n };\n }\n removeNode(s, ast.body[0].start, ast.body[0].end);\n }\n\n walk.ancestor(ast, {\n FunctionDeclaration(node: any, ancestors: any[]) {\n if (node.body && node.body.body && node.body.body.length && isDirective(node.body.body[0])) {\n const directive = (node.body.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (directive !== options.side) {\n removeNode(s, node.start, node.end);\n } else {\n removeNode(s, node.body.body[0].start, node.body.body[0].end);\n }\n }\n },\n FunctionExpression(node: any, ancestors: any[]) {\n if (node.body && node.body.body && node.body.body.length && isDirective(node.body.body[0])) {\n const directive = (node.body.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (directive !== options.side) {\n removeNode(s, node.start, node.end);\n } else {\n removeNode(s, node.body.body[0].start, node.body.body[0].end);\n }\n }\n },\n ArrowFunctionExpression(node: any, ancestors: any[]) {\n if (node.body && node.body.body && node.body.body.length && isDirective(node.body.body[0])) {\n const directive = (node.body.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (directive !== options.side) {\n const decl = ancestors.slice().reverse().find((n: any) => n.type === 'VariableDeclaration');\n if (decl) {\n removeNode(s, decl.start, decl.end);\n } else {\n removeNode(s, node.start, node.end);\n }\n } else {\n removeNode(s, node.body.body[0].start, node.body.body[0].end);\n }\n }\n }\n });\n\n return { code: s.toString(), map: s.generateMap({ hires: true }) };\n }\n };\n}\n","import { Plugin } from 'vite';\nimport MagicString from 'magic-string';\nimport { parse } from 'acorn';\nimport * as walk from 'acorn-walk';\n\nexport interface RemoveImportsPluginOptions {\n /**\n * Array of patterns to match against import sources\n * Can be strings (exact match) or RegExp objects\n */\n patterns: (string | RegExp)[];\n}\n\n/**\n * Replaces a node in the source code using MagicString\n * @param s - MagicString instance\n * @param start - Start position of the node\n * @param end - End position of the node\n * @param replacement - The replacement string\n */\nfunction replaceNode(s: MagicString, start: number, end: number, replacement: string) {\n s.overwrite(start, end, replacement);\n}\n\n/**\n * Checks if an import source matches any of the provided patterns\n * @param source - The import source string\n * @param patterns - Array of string or RegExp patterns\n * @returns True if the source matches any pattern\n * \n * @example\n * ```typescript\n * matchesPattern('react', ['react', /^@types/]) // true\n * matchesPattern('@types/node', ['react', /^@types/]) // true\n * matchesPattern('lodash', ['react', /^@types/]) // false\n * ```\n */\nfunction matchesPattern(source: string, patterns: (string | RegExp)[]): boolean {\n return patterns.some(pattern => {\n if (typeof pattern === 'string') {\n return source === pattern;\n } else if (pattern instanceof RegExp) {\n return pattern.test(source);\n }\n return false;\n });\n}\n\n/**\n * Generates const declarations from import specifiers\n * @param node - The import declaration node\n * @returns String with const declarations set to null\n * \n * @example\n * ```typescript\n * // import React, { useState, useEffect } from 'react'\n * // becomes: const React = null; const useState = null; const useEffect = null;\n * \n * // import * as utils from 'utils'\n * // becomes: const utils = null;\n * \n * // import 'side-effect-module'\n * // becomes: // removed import: side-effect-module\n * ```\n */\nfunction generateConstDeclarations(node: any): string {\n const declarations: string[] = [];\n \n if (node.specifiers && node.specifiers.length > 0) {\n for (const specifier of node.specifiers) {\n if (specifier.type === 'ImportDefaultSpecifier') {\n // import React from 'react' -> const React = null;\n declarations.push(`const ${specifier.local.name} = null;`);\n } else if (specifier.type === 'ImportSpecifier') {\n // import { useState } from 'react' -> const useState = null;\n declarations.push(`const ${specifier.local.name} = null;`);\n } else if (specifier.type === 'ImportNamespaceSpecifier') {\n // import * as React from 'react' -> const React = null;\n declarations.push(`const ${specifier.local.name} = null;`);\n }\n }\n } else {\n // Side-effect import like import 'module' -> comment\n declarations.push(`// removed import: ${node.source.value}`);\n }\n \n return declarations.join(' ');\n}\n\n/**\n * Vite plugin that replaces import statements with const declarations set to null\n * \n * This plugin analyzes JavaScript/TypeScript files and replaces import statements\n * whose source matches any of the provided patterns with const declarations set to null.\n * This is useful for removing dependencies while maintaining variable declarations.\n * \n * @param options - Configuration options for the plugin\n * @returns Vite plugin object\n * \n * @example\n * ```typescript\n * // Replace specific imports\n * removeImportsPlugin({\n * patterns: ['react', 'vue', '@types/node']\n * })\n * \n * // Replace imports using regex patterns\n * removeImportsPlugin({\n * patterns: [/^@types\\//, /^react-/, 'lodash']\n * })\n * \n * // Transform example:\n * // import React, { useState } from 'react';\n * // becomes: const React = null; const useState = null;\n * ```\n */\nexport function removeImportsPlugin(options: RemoveImportsPluginOptions): Plugin {\n return {\n name: 'rpgjs-remove-imports',\n transform(code, id) {\n // Skip non-JS/TS files\n if (!id.match(/\\.(js|ts|jsx|tsx)$/)) {\n return null;\n }\n\n try {\n const ast = parse(code, { \n ecmaVersion: 'latest', \n sourceType: 'module' \n }) as any;\n \n const s = new MagicString(code);\n let hasChanges = false;\n\n // Walk through the AST to find import declarations\n walk.simple(ast, {\n ImportDeclaration(node: any) {\n const importSource = node.source.value;\n \n if (matchesPattern(importSource, options.patterns)) {\n const replacement = generateConstDeclarations(node);\n replaceNode(s, node.start, node.end, replacement);\n hasChanges = true;\n }\n }\n });\n\n // Only return transformed code if changes were made\n if (hasChanges) {\n return {\n code: s.toString(),\n map: s.generateMap({ hires: true })\n };\n }\n\n return null;\n } catch (error) {\n // If parsing fails, return the original code\n console.warn(`Failed to parse ${id}:`, error);\n return null;\n }\n }\n };\n} ","import { existsSync } from \"fs\";\nimport { dirname } from \"path\";\nimport { join } from \"path\";\n\nexport function replaceConfigImport() {\n return {\n name: \"replace-config-import\",\n transform(code: string, id: string) {\n if (!id.endsWith(\"src/index.ts\")) {\n return;\n }\n\n const baseDir = dirname(id);\n const isProd = process.env.NODE_ENV === \"production\";\n const configFile = isProd ? \"config.prod.ts\" : \"config.dev.ts\";\n const configPath = join(baseDir, configFile);\n if (existsSync(configPath)) {\n const newImport = isProd ? \"./config.prod\" : \"./config.dev\";\n // Using regex to match both single and double quotes\n return code.replace(/['\"]\\.\\/(config)['\"]/g, `\"${newImport}\"`);\n }\n },\n };\n}\n","import { RpgServerEngine } from \"@rpgjs/server\";\nimport type { ViteDevServer } from \"vite\";\nimport { IncomingMessage } from \"http\";\nimport { Duplex } from \"stream\";\n\n// Types for WebSocket without importing ws directly\ninterface WSConnection {\n readyState: number;\n send(data: string): void;\n close(): void;\n on(event: string, callback: (...args: any[]) => void): void;\n}\n\ninterface WSServer {\n handleUpgrade(\n request: IncomingMessage,\n socket: Duplex,\n head: Buffer,\n callback: (ws: WSConnection) => void\n ): void;\n close(): void;\n}\n\n/**\n * PartyConnection class compatible with PartyKit's Party.Connection interface\n *\n * This class implements the Connection interface expected by RPG-JS server,\n * providing WebSocket communication capabilities and connection state management.\n *\n * @example\n * ```typescript\n * const connection = new PartyConnection(websocket, 'player123');\n * connection.send('Hello player!');\n * connection.setState({ username: 'Alice' });\n * ```\n */\nclass PartyConnection {\n public id: string;\n public uri: string;\n private _state: any = {};\n\n constructor(private ws: WSConnection, id?: string, uri?: string) {\n this.id = id || this.generateId();\n this.uri = uri || \"\";\n }\n\n /**\n * Generates a unique identifier for the connection\n *\n * @returns {string} Unique identifier based on timestamp and random number\n */\n private generateId(): string {\n return `conn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n /**\n * Sends data to the client via WebSocket\n *\n * @param {any} data - Data to send (automatically serialized to JSON if not string)\n */\n send(data: any): void {\n if (this.ws.readyState === 1) {\n // WebSocket.OPEN\n const message = typeof data === \"string\" ? data : JSON.stringify(data);\n this.ws.send(message);\n }\n }\n\n /**\n * Closes the WebSocket connection\n */\n close(): void {\n if (this.ws.readyState === 1) {\n // WebSocket.OPEN\n this.ws.close();\n }\n }\n\n /**\n * Sets state data for this connection\n *\n * @param {any} value - State data to store (max 2KB as per PartyKit spec)\n */\n setState(value: any): void {\n this._state = value;\n }\n\n /**\n * Gets the current state of this connection\n *\n * @returns {any} Current connection state\n */\n get state(): any {\n return this._state;\n }\n}\n\n/**\n * Room class compatible with PartyKit's Party.Room interface\n *\n * This class manages multiple WebSocket connections and provides broadcasting\n * capabilities, storage, and connection management as expected by RPG-JS server.\n *\n * @example\n * ```typescript\n * const room = new Room('lobby-1');\n * room.broadcast('Game started!');\n * const playerCount = [...room.getConnections()].length;\n * ```\n */\nclass Room {\n public id: string;\n public internalID: string;\n public env: Record<string, any> = {};\n public context: any = {};\n private connections: Map<string, PartyConnection> = new Map();\n private storageData: Map<string, any> = new Map();\n\n constructor(id: string) {\n this.id = id;\n this.internalID = `internal_${id}_${Date.now()}`;\n }\n\n /**\n * Broadcasts a message to all connected clients\n *\n * @param {any} message - Message to broadcast\n * @param {string[]} except - Array of connection IDs to exclude from broadcast\n */\n broadcast(message: any, except: string[] = []): void {\n const data =\n typeof message === \"string\" ? message : JSON.stringify(message);\n\n for (const [connectionId, connection] of this.connections) {\n if (!except.includes(connectionId)) {\n connection.send(data);\n }\n }\n }\n\n /**\n * Gets a connection by its ID\n *\n * @param {string} id - Connection ID\n * @returns {PartyConnection | undefined} The connection or undefined if not found\n */\n getConnection(id: string): PartyConnection | undefined {\n return this.connections.get(id);\n }\n\n /**\n * Gets all currently connected clients\n *\n * @param {string} tag - Optional tag to filter connections (not implemented yet)\n * @returns {IterableIterator<PartyConnection>} Iterator of all connections\n */\n getConnections(tag?: string): IterableIterator<PartyConnection> {\n // TODO: Implement tag filtering if needed\n return this.connections.values();\n }\n\n /**\n * Adds a connection to this room\n *\n * @param {PartyConnection} connection - Connection to add\n */\n addConnection(connection: PartyConnection): void {\n this.connections.set(connection.id, connection);\n }\n\n /**\n * Removes a connection from this room\n *\n * @param {string} connectionId - ID of connection to remove\n */\n removeConnection(connectionId: string): void {\n this.connections.delete(connectionId);\n }\n\n /**\n * Simple key-value storage for the room\n */\n get storage() {\n return {\n put: async (key: string, value: any) => {\n this.storageData.set(key, value);\n },\n get: async <T = any>(key: string): Promise<T | undefined> => {\n return this.storageData.get(key) as T;\n },\n delete: async (key: string) => {\n this.storageData.delete(key);\n },\n list: async () => {\n return Array.from(this.storageData.keys());\n },\n };\n }\n}\n\n/**\n * Utility function to safely import WebSocketServer\n *\n * This function checks if we are in a Node.js environment\n * before trying to import the ws module, thus avoiding\n * browser compatibility errors.\n *\n * @returns {Promise<any>} The WebSocketServer class or null if not available\n */\nasync function importWebSocketServer(): Promise<any> {\n // Check if we are in a Node.js environment\n if (typeof process === \"undefined\" || !process.versions?.node) {\n console.warn(\"Not in Node.js environment, WebSocket server not available\");\n return null;\n }\n\n try {\n // Use createRequire to import ws in an ES module context\n const { createRequire } = await import(\"module\");\n const require = createRequire(import.meta.url);\n const ws = require(\"ws\");\n return ws.WebSocketServer || ws.default?.WebSocketServer || ws;\n } catch (error) {\n console.warn(\"Failed to load ws module:\", error);\n return null;\n }\n}\n\n/**\n * Creates a Vite plugin for integrating RPG-JS server functionality\n *\n * This plugin configures the development server to automatically start\n * an RPG-JS server instance when Vite's dev server starts. It handles\n * the instantiation and initialization of the server module, and sets up\n * HTTP request and WebSocket connection forwarding to the RPG-JS server.\n *\n * The plugin intercepts:\n * - HTTP requests to `/parties/*` paths and forwards them to the RPG-JS server\n * - WebSocket upgrade requests and establishes connections with the RPG-JS server\n *\n * @param {new () => RpgServerEngine} serverModule - A class constructor that extends RpgServerEngine\n * @returns {Object} Vite plugin configuration object\n *\n * @example\n * ```typescript\n * // In vite.config.ts\n * import { serverPlugin } from '@rpgjs/vite';\n * import startServer from './src/server';\n *\n * export default defineConfig({\n * plugins: [\n * serverPlugin(startServer)\n * ]\n * });\n * ```\n */\nexport function serverPlugin(\n serverModule: new (room: Room) => RpgServerEngine\n) {\n let wsServer: WSServer | null = null;\n let rooms: Map<string, Room> = new Map();\n let servers: Map<string, RpgServerEngine> = new Map();\n\n return {\n name: \"server-plugin\",\n\n async configureServer(server: ViteDevServer) {\n // Dynamic import of WebSocketServer to avoid compatibility issues\n try {\n const WebSocketServerClass = await importWebSocketServer();\n if (WebSocketServerClass) {\n wsServer = new WebSocketServerClass({\n noServer: true,\n });\n console.log(\"WebSocket server initialized successfully\");\n } else {\n console.log(\"WebSocket server not available in this environment\");\n }\n } catch (error) {\n console.warn(\"WebSocket server not available:\", error);\n wsServer = null;\n }\n\n console.log('RPG-JS server plugin initialized');\n\n // HTTP request interception for /parties/* routes\n server.middlewares.use(\"/parties\", async (req, res, next) => {\n try {\n // For now, pass to the next middleware\n // The RPG-JS server handles its own routes via @signe/room\n console.log(`RPG-JS HTTP request: ${req.method} ${req.url}`);\n\n // Create a basic response for test routes\n if (req.url?.includes(\"/test\")) {\n res.statusCode = 200;\n res.setHeader(\"Content-Type\", \"application/json\");\n res.end(\n JSON.stringify({\n message: \"RPG-JS server is running\",\n timestamp: new Date().toISOString(),\n })\n );\n return;\n }\n\n next();\n } catch (error) {\n console.error(\"Error handling RPG-JS request:\", error);\n res.statusCode = 500;\n res.end(JSON.stringify({ error: \"Internal server error\" }));\n }\n });\n // WebSocket upgrade handling (if available)\n if (wsServer) {\n server.httpServer?.on(\n \"upgrade\",\n (request: IncomingMessage, socket: Duplex, head: Buffer) => {\n const url = new URL(request.url!, `http://${request.headers.host}`);\n\n // Check if it's a WebSocket connection for RPG-JS\n if (url.pathname.startsWith(\"/parties/\")) {\n console.log(`WebSocket upgrade request: ${url.pathname}`);\n\n wsServer!.handleUpgrade(\n request,\n socket,\n head,\n async (ws: WSConnection) => {\n try {\n // Extract room name from URL: /parties/main/lobby-1 -> lobby-1\n const pathParts = url.pathname.split(\"/\");\n const roomName = pathParts[pathParts.length - 1]; // Get the last part (lobby-1)\n\n // Extract query parameters (like _pk)\n const queryParams = Object.fromEntries(\n url.searchParams.entries()\n );\n console.log(\n `Room: ${roomName}, Query params:`,\n queryParams\n );\n\n // Get or create the room\n let room = rooms.get(roomName);\n if (!room) {\n room = new Room(roomName);\n rooms.set(roomName, room);\n console.log(`Created new room: ${roomName}`);\n }\n\n // Get or create the server for this room\n let rpgServer = servers.get(roomName);\n if (!rpgServer) {\n rpgServer = new serverModule(room);\n servers.set(roomName, rpgServer);\n console.log(`Created new server instance for room: ${roomName}`);\n \n // Call onStart on the new server instance\n if (typeof rpgServer.onStart === \"function\") {\n try {\n await rpgServer.onStart();\n console.log(`Server started for room: ${roomName}`);\n } catch (error) {\n console.error(`Error starting server for room ${roomName}:`, error);\n }\n }\n }\n\n // Create a connection instance\n const connection = new PartyConnection(\n ws,\n undefined,\n request.url\n );\n\n // Add connection to the room\n room.addConnection(connection);\n\n console.log(\n `WebSocket connection established: ${connection.id} in room: ${roomName}`\n );\n\n // Set up WebSocket event handlers\n ws.on(\"message\", async (data: Buffer) => {\n try {\n const message = data.toString();\n // Call onMessage on the RPG-JS server\n if (typeof rpgServer.onMessage === \"function\") {\n await rpgServer.onMessage(message, connection as any);\n }\n } catch (error) {\n console.error(\n \"Error processing WebSocket message:\",\n error\n );\n }\n });\n\n ws.on(\"close\", async () => {\n console.log(\n `WebSocket connection closed: ${connection.id} from room: ${roomName}`\n );\n // Remove connection from room\n room.removeConnection(connection.id);\n // Call onClose on the RPG-JS server\n if (typeof rpgServer.onClose === \"function\") {\n await rpgServer.onClose(connection as any);\n }\n });\n\n ws.on(\"error\", async (error: Error) => {\n console.error(\"WebSocket error:\", error);\n // Remove connection from room\n room.removeConnection(connection.id);\n // Call onClose on the RPG-JS server\n if (typeof rpgServer.onClose === \"function\") {\n await rpgServer.onClose(connection as any);\n }\n });\n\n // Call onConnect on the RPG-JS server if the method exists\n if (typeof rpgServer.onConnect === \"function\") {\n // Create a compatible connection context with Headers-like interface\n const headers = new Map();\n if (request.headers) {\n Object.entries(request.headers).forEach(\n ([key, value]) => {\n headers.set(\n key.toLowerCase(),\n Array.isArray(value) ? value[0] : value\n );\n }\n );\n }\n\n const connectionContext = {\n request: {\n headers: {\n has: (name: string) =>\n headers.has(name.toLowerCase()),\n get: (name: string) =>\n headers.get(name.toLowerCase()),\n entries: () => headers.entries(),\n keys: () => headers.keys(),\n values: () => headers.values(),\n },\n url: request.url,\n method: request.method,\n },\n url: url,\n };\n await rpgServer.onConnect(\n connection as any,\n connectionContext as any\n );\n }\n\n // Send connection confirmation\n connection.send({\n type: \"connected\",\n id: connection.id,\n message: \"Connected to RPG-JS server\",\n });\n } catch (error) {\n console.error(\n \"Error establishing WebSocket connection:\",\n error\n );\n ws.close();\n }\n }\n );\n }\n }\n );\n }\n\n console.log(\n \"RPG-JS server plugin configured with HTTP and WebSocket forwarding\"\n );\n },\n\n buildStart() {\n console.log(\"RPG-JS server starting...\");\n },\n\n buildEnd() {\n // Cleanup when server stops\n if (wsServer) {\n wsServer.close();\n }\n console.log(\"RPG-JS server stopped\");\n },\n };\n}\n","import { Plugin } from 'vite';\n\nexport interface EntryPointPluginOptions {\n /**\n * Entry points configuration for different RPG types\n * @default { rpg: './src/standalone.ts', mmorpg: './src/client.ts' }\n */\n entryPoints?: {\n rpg?: string;\n mmorpg?: string;\n };\n /**\n * RPG type from environment variable\n * @default process.env.RPG_TYPE || 'rpg'\n */\n rpgType?: string;\n}\n\n/**\n * Plugin Vite qui gère les points d'entrée selon le type de RPG\n * \n * Ce plugin modifie automatiquement le fichier HTML pour insérer la bonne balise script\n * selon la variable d'environnement RPG_TYPE. Il supporte deux types :\n * - 'rpg' : pour le mode standalone\n * - 'mmorpg' : pour le mode multijoueur\n * \n * Le plugin recherche dans le HTML les balises script existantes et les remplace\n * par le bon point d'entrée selon le type configuré.\n * \n * @param options - Configuration du plugin\n * @returns Plugin Vite\n * \n * @example\n * ```typescript\n * // vite.config.ts\n * import { entryPointPlugin } from '@rpgjs/vite';\n * \n * export default defineConfig({\n * plugins: [\n * entryPointPlugin({\n * entryPoints: {\n * rpg: './src/standalone.ts',\n * mmorpg: './src/client.ts'\n * }\n * })\n * ]\n * });\n * ```\n */\nexport function entryPointPlugin(options: EntryPointPluginOptions = {}): Plugin {\n const {\n entryPoints = {\n rpg: './src/standalone.ts',\n mmorpg: './src/client.ts'\n },\n rpgType = process.env.RPG_TYPE || 'rpg'\n } = options;\n\n return {\n name: 'rpgjs:entry-point',\n transformIndexHtml: {\n order: 'pre',\n handler(html: string) {\n // Determine the correct entry point based on RPG type\n const currentEntryPoint = entryPoints[rpgType as keyof typeof entryPoints];\n \n if (!currentEntryPoint) {\n console.warn(`[rpgjs:entry-point] Unknown RPG_TYPE: ${rpgType}. Using default 'rpg' type.`);\n const fallbackEntryPoint = entryPoints.rpg || './src/standalone.ts';\n return html.replace(\n /<script\\s+type=\"module\"\\s+src=\"[^\"]*\"[^>]*><\\/script>/gi,\n `<script type=\"module\" src=\"${fallbackEntryPoint}\"></script>`\n );\n }\n\n // Replace existing script tags with the correct entry point\n const transformedHtml = html.replace(\n /<script\\s+type=\"module\"\\s+src=\"[^\"]*\"[^>]*><\\/script>/gi,\n `<script type=\"module\" src=\"${currentEntryPoint}\"></script>`\n );\n\n // If no script tag was found, add one in the head\n if (transformedHtml === html && !html.includes('<script type=\"module\"')) {\n return html.replace(\n /<\\/head>/i,\n ` <script type=\"module\" src=\"${currentEntryPoint}\"></script>\\n </head>`\n );\n }\n\n return transformedHtml;\n }\n },\n configResolved(config) {\n // Log the current configuration for debugging\n console.log(`[rpgjs:entry-point] Using RPG_TYPE: ${rpgType}`);\n console.log(`[rpgjs:entry-point] Entry point: ${entryPoints[rpgType as keyof typeof entryPoints]}`);\n }\n };\n} ","import canvasengine from \"@canvasengine/compiler\";\nimport { replaceConfigImport } from \"./replace-config-import\";\nimport { serverPlugin } from \"./server-plugin\";\nimport { entryPointPlugin } from \"./entry-point-plugin\";\n\ninterface RpgjsPluginOptions {\n server: any;\n entryPoints?: {\n rpg: string;\n mmorpg: string;\n };\n}\n\nexport function rpgjs({\n server,\n entryPoints\n}: RpgjsPluginOptions) {\n return [\n canvasengine(),\n replaceConfigImport(),\n serverPlugin(server),\n entryPointPlugin({\n entryPoints: {\n rpg: entryPoints?.rpg ?? './src/standalone.ts',\n mmorpg: entryPoints?.mmorpg ?? './src/client.ts'\n }\n })\n ]\n}"],"names":["this","encode","toString","walk.ancestor","walk.simple"],"mappings":"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AAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC;;AAE1oC;AACA,IAAI,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,C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","x_google_ignoreList":[2,3,4,5]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/tiled-map-folder-plugin.ts","../src/module-config.ts","../../../node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs","../../../node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs","../../../node_modules/.pnpm/acorn@8.16.0/node_modules/acorn/dist/acorn.mjs","../../../node_modules/.pnpm/acorn-walk@8.3.5/node_modules/acorn-walk/dist/walk.mjs","../src/directive-plugin.ts","../src/remove-imports-plugin.ts","../src/replace-config-import.ts","../../server/dist/module-CaCW1SDh.js","../../server/dist/node/index.js","../src/server-plugin.ts","../src/entry-point-plugin.ts","../src/mmorpg-build-plugin.ts","../src/rpgjs-plugin.ts"],"sourcesContent":["import { Plugin } from 'vite';\nimport { readFileSync, existsSync, statSync, readdirSync, copyFileSync, mkdirSync } from 'fs';\nimport { join, extname, relative, dirname } from 'path';\n\nexport interface DataFolderPluginOptions {\n /**\n * Source folder containing the data files (TMX, TSX, images)\n */\n sourceFolder: string;\n \n /**\n * Public path prefix for accessing the data files\n * @default '/data'\n */\n publicPath?: string;\n \n /**\n * Target folder in build output for the data files\n * @default 'assets/data'\n */\n buildOutputPath?: string;\n \n /**\n * File extensions to include\n * @default ['.tmx', '.tsx', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg']\n */\n allowedExtensions?: string[];\n}\n\n/**\n * Vite plugin that serves a data folder in development mode and copies it to assets during build\n * \n * This plugin allows serving game data files (TMX maps, TSX tilesets, images) during development\n * and automatically includes them in the build output for production deployment.\n * \n * @param options - Configuration options for the plugin\n * \n * @example\n * ```js\n * // In vite.config.ts\n * import { defineConfig } from 'vite';\n * import { dataFolderPlugin } from '@rpgjs/vite';\n * \n * export default defineConfig({\n * plugins: [\n * dataFolderPlugin({\n * sourceFolder: './game-data',\n * publicPath: '/data',\n * buildOutputPath: 'assets/data'\n * })\n * ]\n * });\n * ```\n */\nexport function tiledMapFolderPlugin(options: DataFolderPluginOptions): Plugin {\n const {\n sourceFolder,\n publicPath = '/data',\n buildOutputPath = 'assets/data',\n allowedExtensions = ['.tmx', '.tsx', '.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg']\n } = options;\n\n let isBuild = false;\n let outputDir = 'dist';\n\n /**\n * Get MIME type based on file extension\n */\n const getMimeType = (filePath: string): string => {\n const ext = extname(filePath).toLowerCase();\n const mimeTypes: Record<string, string> = {\n '.tmx': 'application/xml',\n '.tsx': 'application/xml',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.svg': 'image/svg+xml'\n };\n return mimeTypes[ext] || 'application/octet-stream';\n };\n\n /**\n * Check if file extension is allowed\n */\n const isAllowedFile = (filePath: string): boolean => {\n const ext = extname(filePath).toLowerCase();\n return allowedExtensions.includes(ext);\n };\n\n /**\n * Recursively get all files from a directory\n */\n const getAllFiles = (dirPath: string, basePath: string = dirPath): string[] => {\n const files: string[] = [];\n \n if (!existsSync(dirPath)) {\n return files;\n }\n\n const items = readdirSync(dirPath);\n \n for (const item of items) {\n const fullPath = join(dirPath, item);\n const stat = statSync(fullPath);\n \n if (stat.isDirectory()) {\n files.push(...getAllFiles(fullPath, basePath));\n } else if (isAllowedFile(fullPath)) {\n files.push(fullPath);\n }\n }\n \n return files;\n };\n\n /**\n * Copy files to build output directory\n */\n const copyFilesToBuild = (outputPath: string) => {\n const files = getAllFiles(sourceFolder);\n \n for (const filePath of files) {\n const relativePath = relative(sourceFolder, filePath);\n const targetPath = join(outputPath, buildOutputPath, relativePath);\n const targetDir = dirname(targetPath);\n \n // Create target directory if it doesn't exist\n mkdirSync(targetDir, { recursive: true });\n \n // Copy file\n copyFileSync(filePath, targetPath);\n console.log(`📁 Copied data file: ${relativePath}`);\n }\n };\n\n return {\n name: 'data-folder',\n enforce: 'pre',\n\n configResolved(config) {\n isBuild = config.command === 'build';\n outputDir = config.build.outDir || 'dist';\n },\n\n // Handle build mode - copy files to output directory\n generateBundle() {\n if (isBuild) {\n console.log(`📦 Copying data files from ${sourceFolder} to ${buildOutputPath}...`);\n copyFilesToBuild(outputDir);\n console.log('✅ Data files copied successfully');\n }\n },\n\n // Handle development mode - serve files via middleware\n configureServer(server) {\n if (!existsSync(sourceFolder)) {\n console.warn(`⚠️ Data folder not found: ${sourceFolder}`);\n return;\n }\n\n console.log(`📁 Serving data folder: ${sourceFolder} at ${publicPath}`);\n\n server.middlewares.use((req: any, res: any, next: any) => {\n if (!req.url?.startsWith(publicPath)) {\n return next();\n }\n\n // Remove public path prefix to get relative file path\n const relativePath = req.url.slice(publicPath.length);\n \n // Remove leading slash if present\n const cleanPath = relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;\n \n // Construct full file path\n const filePath = join(sourceFolder, cleanPath);\n\n // Security check - ensure file is within source folder\n const cwd = typeof process !== 'undefined' ? process.cwd() : '';\n const resolvedFilePath = join(cwd, filePath);\n const resolvedSourceFolder = join(cwd, sourceFolder);\n \n if (!resolvedFilePath.startsWith(resolvedSourceFolder)) {\n res.statusCode = 403;\n res.end('Forbidden');\n return;\n }\n\n // Check if file exists and is allowed\n if (!existsSync(filePath) || !isAllowedFile(filePath)) {\n res.statusCode = 404;\n res.end('Not Found');\n return;\n }\n\n // Check if it's a file (not directory)\n const stat = statSync(filePath);\n if (!stat.isFile()) {\n res.statusCode = 404;\n res.end('Not Found');\n return;\n }\n\n try {\n // Read and serve the file\n const fileContent = readFileSync(filePath);\n const mimeType = getMimeType(filePath);\n \n res.setHeader('Content-Type', mimeType);\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.end(fileContent);\n \n console.log(`📄 Served data file: ${cleanPath}`);\n } catch (error) {\n console.error(`❌ Error serving file ${filePath}:`, error);\n res.statusCode = 500;\n res.end('Internal Server Error');\n }\n });\n }\n };\n} ","import { defineConfig, build } from \"vite\";\nimport canvasengine from \"@canvasengine/compiler\";\nimport dts from \"vite-plugin-dts\";\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { directivePlugin, removeImportsPlugin } from \"./index\";\n\n/**\n * Creates a build configuration for client or server side\n * \n * This function generates a standardized Vite build configuration that can be used\n * for both client and server builds with different plugins and output directories.\n * \n * @param {Object} options - Build configuration options\n * @param {string} options.side - The build side ('client' or 'server')\n * @param {boolean} options.watch - Whether to enable watch mode\n * @returns {Object} Vite build configuration object\n * \n * @example\n * ```typescript\n * const clientConfig = createBuildConfig({ side: 'client', watch: false });\n * const serverConfig = createBuildConfig({ side: 'server', watch: true });\n * ```\n */\nfunction createBuildConfig({ side, watch }: { side: 'client' | 'server', watch: boolean }) {\n const isClient = side === 'client';\n const runtimeDir = resolve(process.cwd(), \"runtime\");\n const resolveOptions = existsSync(runtimeDir)\n ? {\n alias: {\n \"@common\": runtimeDir,\n },\n }\n : undefined;\n \n const plugins = isClient \n ? [\n canvasengine(),\n removeImportsPlugin({ patterns: [/server/] }),\n directivePlugin({ side: \"client\" }),\n ]\n : [\n removeImportsPlugin({ patterns: [/\\.ce$/, /client/] }),\n directivePlugin({ side: \"server\" }),\n ];\n\n return {\n configFile: false as const, // Prevent using this config file\n resolve: resolveOptions,\n plugins: [\n ...plugins,\n dts({ \n include: ['src/**/*.ts'],\n outDir: 'dist'\n })\n ],\n build: {\n watch: watch ? {} : undefined,\n outDir: `dist/${side}`,\n minify: false,\n lib: {\n entry: {\n index: \"src/index.ts\",\n },\n fileName: \"index\",\n formats: [\"es\" as const],\n },\n rollupOptions: {\n external: [\n /@rpgjs/,\n /@signestack/,\n \"canvasengine\",\n \"pixi.js\",\n \"esbuild\",\n \"@canvasengine/presets\",\n \"rxjs\",\n ],\n output: {\n preserveModules: true,\n preserveModulesRoot: \"src\",\n },\n },\n },\n };\n}\n\n/**\n * Builds both client and server configurations in parallel\n * \n * This function creates and executes build configurations for both client and server\n * sides simultaneously using Promise.all for better performance.\n * \n * @param {boolean} watch - Whether to enable watch mode for both builds\n * @returns {Promise<void[]>} Promise that resolves when both builds are complete\n * \n * @example\n * ```typescript\n * // Build once\n * await buildClientAndServer(false);\n * \n * // Build with watch mode\n * await buildClientAndServer(true);\n * ```\n */\nasync function buildClientAndServer(watch: boolean = false) {\n const clientBuild = build(createBuildConfig({ side: 'client', watch }));\n const serverBuild = build(createBuildConfig({ side: 'server', watch }));\n\n await Promise.all([clientBuild, serverBuild]);\n\n console.log(\"✅ Build complete\");\n}\n\nconst isWatchMode = process.argv.includes(\"--watch\");\nconst isBuildCommand = process.argv.includes(\"build\");\nconst isManualControl = isWatchMode && isBuildCommand;\n\nexport const rpgjsModuleViteConfig = () => {\n return defineConfig(async ({ command }) => {\n if (isManualControl) {\n buildClientAndServer(true);\n return {};\n }\n if (command === \"build\") {\n console.log(\"👀 Building...\");\n await buildClientAndServer();\n // Return empty config to prevent default build\n process.exit(0);\n } else {\n return {\n plugins: [],\n };\n }\n });\n};\n","// src/vlq.ts\nvar comma = \",\".charCodeAt(0);\nvar semicolon = \";\".charCodeAt(0);\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar intToChar = new Uint8Array(64);\nvar charToInt = new Uint8Array(128);\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\nfunction decodeInteger(reader, relative) {\n let value = 0;\n let shift = 0;\n let integer = 0;\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n const shouldNegate = value & 1;\n value >>>= 1;\n if (shouldNegate) {\n value = -2147483648 | -value;\n }\n return relative + value;\n}\nfunction encodeInteger(builder, num, relative) {\n let delta = num - relative;\n delta = delta < 0 ? -delta << 1 | 1 : delta << 1;\n do {\n let clamped = delta & 31;\n delta >>>= 5;\n if (delta > 0) clamped |= 32;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n return num;\n}\nfunction hasMoreVlq(reader, max) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n\n// src/strings.ts\nvar bufLength = 1024 * 16;\nvar td = typeof TextDecoder !== \"undefined\" ? /* @__PURE__ */ new TextDecoder() : typeof Buffer !== \"undefined\" ? {\n decode(buf) {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n }\n} : {\n decode(buf) {\n let out = \"\";\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n }\n};\nvar StringWriter = class {\n constructor() {\n this.pos = 0;\n this.out = \"\";\n this.buffer = new Uint8Array(bufLength);\n }\n write(v) {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n flush() {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n};\nvar StringReader = class {\n constructor(buffer) {\n this.pos = 0;\n this.buffer = buffer;\n }\n next() {\n return this.buffer.charCodeAt(this.pos++);\n }\n peek() {\n return this.buffer.charCodeAt(this.pos);\n }\n indexOf(char) {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n};\n\n// src/scopes.ts\nvar EMPTY = [];\nfunction decodeOriginalScopes(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes = [];\n const stack = [];\n let line = 0;\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop();\n last[2] = line;\n last[3] = column;\n continue;\n }\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 1;\n const scope = hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind];\n let vars = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n scopes.push(scope);\n stack.push(scope);\n }\n return scopes;\n}\nfunction encodeOriginalScopes(scopes) {\n const writer = new StringWriter();\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n return writer.flush();\n}\nfunction _encodeOriginalScopes(scopes, index, writer, state) {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n if (index > 0) writer.write(comma);\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n const fields = scope.length === 6 ? 1 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n return index;\n}\nfunction decodeGeneratedRanges(input) {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges = [];\n const stack = [];\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n do {\n const semi = reader.indexOf(\";\");\n let genColumn = 0;\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop();\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 1;\n const hasCallsite = fields & 2;\n const hasScope = fields & 4;\n let callsite = null;\n let bindings = EMPTY;\n let range;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0\n );\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex];\n } else {\n range = [genLine, genColumn, 0, 0];\n }\n range.isScope = !!hasScope;\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0\n );\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges;\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n ranges.push(range);\n stack.push(range);\n }\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n return ranges;\n}\nfunction encodeGeneratedRanges(ranges) {\n if (ranges.length === 0) return \"\";\n const writer = new StringWriter();\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n return writer.flush();\n}\nfunction _encodeGeneratedRanges(ranges, index, writer, state) {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings\n } = range;\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, range[1], state[1]);\n const fields = (range.length === 6 ? 1 : 0) | (callsite ? 2 : 0) | (isScope ? 4 : 0);\n encodeInteger(writer, fields, 0);\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1], bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2], bindingStartColumn);\n encodeInteger(writer, expRange[0], 0);\n }\n }\n }\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || l === endLine && c >= endColumn) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n return index;\n}\nfunction catchupLine(writer, lastLine, line) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n\n// src/sourcemap-codec.ts\nfunction decode(mappings) {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n do {\n const semi = reader.indexOf(\";\");\n const line = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n while (reader.pos < semi) {\n let seg;\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n line.push(seg);\n reader.pos++;\n }\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n return decoded;\n}\nfunction sort(line) {\n line.sort(sortComparator);\n}\nfunction sortComparator(a, b) {\n return a[0] - b[0];\n}\nfunction encode(decoded) {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n let genColumn = 0;\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n genColumn = encodeInteger(writer, segment[0], genColumn);\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n return writer.flush();\n}\nexport {\n decode,\n decodeGeneratedRanges,\n decodeOriginalScopes,\n encode,\n encodeGeneratedRanges,\n encodeOriginalScopes\n};\n//# sourceMappingURL=sourcemap-codec.mjs.map\n","import { encode } from '@jridgewell/sourcemap-codec';\n\nclass BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n\nclass Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\t{\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nclass SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n\nfunction guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n\nconst toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n\nconst wordRegex = /\\w/;\n\nclass Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nclass MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\tif (this.outro) {\n\t\t\tmappings.advance(this.outro);\n\t\t}\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tlet previousChunk = chunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\n\t\t\t// Prevent infinite loop (e.g. via empty chunks, where start === end)\n\t\t\tif (chunk === previousChunk) return;\n\n\t\t\tpreviousChunk = chunk;\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tif (typeof replacement === 'function') {\n\t\t\t\treplacement = replacement(string, index, original);\n\t\t\t}\n\t\t\tif (string !== replacement) {\n\t\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tlet _replacement = replacement;\n\t\t\tif (typeof replacement === 'function') {\n\t\t\t\t_replacement = replacement(previous, index, original);\n\t\t\t}\n\t\t\tif (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nclass Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n\nexport { Bundle, SourceMap, MagicString as default };\n//# sourceMappingURL=magic-string.es.mjs.map\n","// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"`, `\"module\"` or `\"commonjs\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called when\n // a semicolon is automatically inserted. It will be passed the\n // position of the inserted semicolon as an offset, and if\n // `locations` is enabled, it is given the location as a `{line,\n // column}` object as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n // When this option has an array as value, objects representing the\n // comments are pushed to it.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_CLASS_FIELD_INIT = 512,\n SCOPE_SWITCH = 1024,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(\n this.options.sourceType === \"commonjs\"\n // In commonjs, the top-level scope behaves like a function scope\n ? SCOPE_FUNCTION\n : SCOPE_TOP\n );\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowReturn.get = function () {\n if (this.inFunction) { return true }\n if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n return false\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n }\n return false\n};\n\nprototypeAccessors.allowUsing.get = function () {\n var ref = this.currentScope();\n var flags = ref.flags;\n if (flags & SCOPE_SWITCH) { return false }\n if (!this.inModule && flags & SCOPE_TOP) { return false }\n return true\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType === \"commonjs\" ? \"script\" : this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n if (context) { return false }\n\n if (nextCh === 123) { return true } // '{'\n if (isIdentifierStart(nextCh)) {\n var start = next;\n do { next += nextCh <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n if (nextCh === 92) { return true }\n var ident = this.input.slice(start, next);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n};\n\npp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n\n if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n if (isAwaitUsing) {\n var usingEndPos = next + 5 /* using */, after;\n if (this.input.slice(next, usingEndPos) !== \"using\" ||\n usingEndPos === this.input.length ||\n isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n after === 92 /* '\\' */\n ) { return false }\n\n skipWhiteSpace.lastIndex = usingEndPos;\n var skipAfterUsing = skipWhiteSpace.exec(this.input);\n next = usingEndPos + skipAfterUsing[0].length;\n if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n }\n\n var ch = this.fullCharCodeAt(next);\n if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n var idStart = next;\n do { next += ch <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n if (ch === 92) { return true }\n var id = this.input.slice(idStart, next);\n if (keywordRelationalOperator.test(id) || isFor && id === \"of\") { return false }\n return true\n};\n\npp$8.isAwaitUsing = function(isFor) {\n return this.isUsingKeyword(true, isFor)\n};\n\npp$8.isUsing = function(isFor) {\n return this.isUsingKeyword(false, isFor)\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n if (usingKind) {\n if (!this.allowUsing) {\n this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n }\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.next();\n this.parseVar(node, false, usingKind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$1, awaitAt)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n if (usingKind) {\n var init$2 = this.startNode();\n this.next();\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.parseVar(init$2, true, usingKind);\n this.finishNode(init$2, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$2, awaitAt)\n }\n var containsEsc = this.containsEsc;\n var refDestructuringErrors = new DestructuringErrors;\n var initPos = this.start;\n var init = awaitAt > -1\n ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n : this.parseExpression(true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n if (this.type === types$1._in) { this.unexpected(awaitAt); }\n node.await = true;\n } else if (isForOf && this.options.ecmaVersion >= 8) {\n if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n else if (this.options.ecmaVersion >= 9) { node.await = false; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\n// Helper method to parse for loop after variable initialization\npp$8.parseForAfterInit = function(node, init, awaitAt) {\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.allowReturn)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(SCOPE_SWITCH);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = kind === \"using\" || kind === \"await using\"\n ? this.parseIdent()\n : this.parseBindingAtom();\n\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n field.value = this.parseMaybeAssign();\n this.exitScope();\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseWithClause = function() {\n var nodes = [];\n if (!this.eat(types$1._with)) {\n return nodes\n }\n this.expect(types$1.braceL);\n var attributeKeys = {};\n var first = true;\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var attr = this.parseImportAttribute();\n var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n if (hasOwn(attributeKeys, keyName))\n { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n attributeKeys[keyName] = true;\n nodes.push(attr);\n }\n return nodes\n};\n\npp$8.parseImportAttribute = function() {\n var node = this.startNode();\n node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n this.expect(types$1.colon);\n if (this.type !== types$1.string) {\n this.unexpected();\n }\n node.value = this.parseExprAtom();\n return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += …;\n// import a from '…';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = …);\n// const a = …;\n// try { … } catch (a) { … }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n if (this.curContext().token === \"function\") { this.context.pop(); }\n this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this.type === types$1.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isLocalVariableAccess(node) {\n return (\n node.type === \"Identifier\" ||\n node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n )\n}\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n this.next();\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"import\";\n node.meta = this.finishNode(meta, \"Identifier\");\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n if (this.options.ecmaVersion >= 16) {\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n node.options = this.parseMaybeAssign();\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n this.unexpected();\n }\n }\n } else {\n node.options = null;\n }\n } else {\n node.options = null;\n }\n } else {\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n this.next();\n if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"new\";\n node.meta = this.finishNode(meta, \"Identifier\");\n this.next();\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n var kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n prop.kind = kind;\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n prop.kind = \"init\";\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.kind = \"init\";\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n this.type = types$1.name;\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n if (this.sourceFile) {\n message += \" in \" + this.sourceFile;\n }\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n // Parent disjunction branch\n this.parent = parent;\n // Identifies this set of sibling branches\n this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n // A branch is separate from another branch if they or any of\n // their parents are siblings in a given disjunction\n for (var self = this; self; self = self.parent) {\n for (var other = alt; other; other = other.parent) {\n if (self.base === other.base && self !== other) { return true }\n }\n }\n return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = Object.create(null);\n this.backReferenceNames = [];\n this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\nfunction hasProp(obj) {\n for (var _ in obj) { return true }\n return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames = Object.create(null);\n state.backReferenceNames.length = 0;\n state.branchID = null;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (!state.groupNames[name]) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n var trackDisjunction = this.options.ecmaVersion >= 16;\n if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n this.regexp_alternative(state);\n }\n if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */)) {\n if (this.options.ecmaVersion >= 16) {\n var addModifiers = this.regexp_eatModifiers(state);\n var hasHyphen = state.eat(0x2D /* - */);\n if (addModifiers || hasHyphen) {\n for (var i = 0; i < addModifiers.length; i++) {\n var modifier = addModifiers.charAt(i);\n if (addModifiers.indexOf(modifier, i + 1) > -1) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n if (hasHyphen) {\n var removeModifiers = this.regexp_eatModifiers(state);\n if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n state.raise(\"Invalid regular expression modifiers\");\n }\n for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n var modifier$1 = removeModifiers.charAt(i$1);\n if (\n removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n addModifiers.indexOf(modifier$1) > -1\n ) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n }\n }\n }\n if (state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n// RegularExpressionModifiers ::\n// [empty]\n// RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n var modifiers = \"\";\n var ch = 0;\n while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n modifiers += codePointToString(ch);\n state.advance();\n }\n return modifiers\n};\n// RegularExpressionModifier :: one of\n// `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n var trackDisjunction = this.options.ecmaVersion >= 16;\n var known = state.groupNames[state.lastStringValue];\n if (known) {\n if (trackDisjunction) {\n for (var i = 0, list = known; i < list.length; i += 1) {\n var altID = list[i];\n\n if (!altID.separatedFrom(state.branchID))\n { state.raise(\"Duplicate capture group name\"); }\n }\n } else {\n state.raise(\"Duplicate capture group name\");\n }\n }\n if (trackDisjunction) {\n (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n } else {\n state.groupNames[state.lastStringValue] = true;\n }\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAt = function(pos) {\n var code = this.input.charCodeAt(pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.fullCharCodeAtPos = function() {\n return this.fullCharCodeAt(this.pos)\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") { break }\n // fall through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n case \"\\r\":\n if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n // fall through\n case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n ++this.curLine;\n this.lineStart = this.pos + 1;\n break\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n\n\nvar version = \"8.16.0\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","// AST walker module for ESTree compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All ESTree node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n visitNode(baseVisitor, type, node, st, c);\n if (visitors[type]) { visitors[type](node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n visitNode(baseVisitor, type, node, st, c);\n if (visitors[type]) { visitors[type](node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n visitNode(baseVisitor, type, node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n visitNode(baseVisitor, type, node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { visitNode(baseVisitor, type, node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n visitNode(baseVisitor, type, node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n visitNode(baseVisitor, type, node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n visitNode(baseVisitor, type, node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\nfunction visitNode(baseVisitor, type, node, st, c) {\n if (baseVisitor[type] == null) { throw new Error((\"No walker function defined for node type \" + type)) }\n baseVisitor[type](node, st, c);\n}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i = 0, list = node.cases; i < list.length; i += 1) {\n var cs = list[i];\n\n c(cs, st);\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n if (node.attributes)\n { for (var i = 0, list = node.attributes; i < list.length; i += 1)\n {\n var attr = list[i];\n\n c(attr, st);\n } }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n if (node.attributes)\n { for (var i = 0, list = node.attributes; i < list.length; i += 1)\n {\n var attr = list[i];\n\n c(attr, st);\n } }\n};\nbase.ImportAttribute = function (node, st, c) {\n c(node.value, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n if (node.attributes)\n { for (var i$1 = 0, list$1 = node.attributes; i$1 < list$1.length; i$1 += 1)\n {\n var attr = list$1[i$1];\n\n c(attr, st);\n } }\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n if (node.options) { c(node.options, st, \"Expression\"); }\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n","import { Plugin } from 'vite';\nimport MagicString from 'magic-string';\nimport { parse } from 'acorn';\nimport * as walk from 'acorn-walk';\n\nexport interface DirectivePluginOptions {\n side: 'client' | 'server';\n}\n\nfunction removeNode(s: MagicString, start: number, end: number) {\n s.remove(start, end);\n}\n\nfunction isDirective(node: any): node is any {\n return node.type === 'ExpressionStatement' &&\n node.expression.type === 'Literal' &&\n (node.expression.value === 'use client' || node.expression.value === 'use server');\n}\n\nexport function directivePlugin(options: DirectivePluginOptions): Plugin {\n return {\n name: 'rpgjs-directive',\n transform(code, id) {\n const ast = parse(code, { ecmaVersion: 'latest', sourceType: 'module' }) as any;\n const s = new MagicString(code);\n\n let fileDirective: 'client' | 'server' | null = null;\n if (ast.body.length && isDirective(ast.body[0])) {\n fileDirective = (ast.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (fileDirective !== options.side) {\n return {\n code: 'export default null;',\n map: { mappings: '' }\n };\n }\n removeNode(s, ast.body[0].start, ast.body[0].end);\n }\n\n walk.ancestor(ast, {\n FunctionDeclaration(node: any, ancestors: any[]) {\n if (node.body && node.body.body && node.body.body.length && isDirective(node.body.body[0])) {\n const directive = (node.body.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (directive !== options.side) {\n removeNode(s, node.start, node.end);\n } else {\n removeNode(s, node.body.body[0].start, node.body.body[0].end);\n }\n }\n },\n FunctionExpression(node: any, ancestors: any[]) {\n if (node.body && node.body.body && node.body.body.length && isDirective(node.body.body[0])) {\n const directive = (node.body.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (directive !== options.side) {\n removeNode(s, node.start, node.end);\n } else {\n removeNode(s, node.body.body[0].start, node.body.body[0].end);\n }\n }\n },\n ArrowFunctionExpression(node: any, ancestors: any[]) {\n if (node.body && node.body.body && node.body.body.length && isDirective(node.body.body[0])) {\n const directive = (node.body.body[0].expression.value as string).split(' ')[1] as 'client' | 'server';\n if (directive !== options.side) {\n const decl = ancestors.slice().reverse().find((n: any) => n.type === 'VariableDeclaration');\n if (decl) {\n removeNode(s, decl.start, decl.end);\n } else {\n removeNode(s, node.start, node.end);\n }\n } else {\n removeNode(s, node.body.body[0].start, node.body.body[0].end);\n }\n }\n }\n });\n\n return { code: s.toString(), map: s.generateMap({ hires: true }) };\n }\n };\n}\n","import { Plugin } from 'vite';\nimport MagicString from 'magic-string';\nimport { parse } from 'acorn';\nimport * as walk from 'acorn-walk';\n\nexport interface RemoveImportsPluginOptions {\n /**\n * Array of patterns to match against import sources\n * Can be strings (exact match) or RegExp objects\n */\n patterns: (string | RegExp)[];\n}\n\n/**\n * Replaces a node in the source code using MagicString\n * @param s - MagicString instance\n * @param start - Start position of the node\n * @param end - End position of the node\n * @param replacement - The replacement string\n */\nfunction replaceNode(s: MagicString, start: number, end: number, replacement: string) {\n s.overwrite(start, end, replacement);\n}\n\n/**\n * Checks if an import source matches any of the provided patterns\n * @param source - The import source string\n * @param patterns - Array of string or RegExp patterns\n * @returns True if the source matches any pattern\n * \n * @example\n * ```typescript\n * matchesPattern('react', ['react', /^@types/]) // true\n * matchesPattern('@types/node', ['react', /^@types/]) // true\n * matchesPattern('lodash', ['react', /^@types/]) // false\n * ```\n */\nfunction matchesPattern(source: string, patterns: (string | RegExp)[]): boolean {\n return patterns.some(pattern => {\n if (typeof pattern === 'string') {\n return source === pattern;\n } else if (pattern instanceof RegExp) {\n return pattern.test(source);\n }\n return false;\n });\n}\n\n/**\n * Generates const declarations from import specifiers\n * @param node - The import declaration node\n * @returns String with const declarations set to null\n * \n * @example\n * ```typescript\n * // import React, { useState, useEffect } from 'react'\n * // becomes: const React = null; const useState = null; const useEffect = null;\n * \n * // import * as utils from 'utils'\n * // becomes: const utils = null;\n * \n * // import 'side-effect-module'\n * // becomes: // removed import: side-effect-module\n * ```\n */\nfunction generateConstDeclarations(node: any): string {\n const declarations: string[] = [];\n \n if (node.specifiers && node.specifiers.length > 0) {\n for (const specifier of node.specifiers) {\n if (specifier.type === 'ImportDefaultSpecifier') {\n // import React from 'react' -> const React = null;\n declarations.push(`const ${specifier.local.name} = null;`);\n } else if (specifier.type === 'ImportSpecifier') {\n // import { useState } from 'react' -> const useState = null;\n declarations.push(`const ${specifier.local.name} = null;`);\n } else if (specifier.type === 'ImportNamespaceSpecifier') {\n // import * as React from 'react' -> const React = null;\n declarations.push(`const ${specifier.local.name} = null;`);\n }\n }\n } else {\n // Side-effect import like import 'module' -> comment\n declarations.push(`// removed import: ${node.source.value}`);\n }\n \n return declarations.join(' ');\n}\n\n/**\n * Vite plugin that replaces import statements with const declarations set to null\n * \n * This plugin analyzes JavaScript/TypeScript files and replaces import statements\n * whose source matches any of the provided patterns with const declarations set to null.\n * This is useful for removing dependencies while maintaining variable declarations.\n * \n * @param options - Configuration options for the plugin\n * @returns Vite plugin object\n * \n * @example\n * ```typescript\n * // Replace specific imports\n * removeImportsPlugin({\n * patterns: ['react', 'vue', '@types/node']\n * })\n * \n * // Replace imports using regex patterns\n * removeImportsPlugin({\n * patterns: [/^@types\\//, /^react-/, 'lodash']\n * })\n * \n * // Transform example:\n * // import React, { useState } from 'react';\n * // becomes: const React = null; const useState = null;\n * ```\n */\nexport function removeImportsPlugin(options: RemoveImportsPluginOptions): Plugin {\n return {\n name: 'rpgjs-remove-imports',\n transform(code, id) {\n // Skip non-JS/TS files\n if (!id.match(/\\.(js|ts|jsx|tsx)$/)) {\n return null;\n }\n\n try {\n const ast = parse(code, { \n ecmaVersion: 'latest', \n sourceType: 'module' \n }) as any;\n \n const s = new MagicString(code);\n let hasChanges = false;\n\n // Walk through the AST to find import declarations\n walk.simple(ast, {\n ImportDeclaration(node: any) {\n const importSource = node.source.value;\n \n if (matchesPattern(importSource, options.patterns)) {\n const replacement = generateConstDeclarations(node);\n replaceNode(s, node.start, node.end, replacement);\n hasChanges = true;\n }\n }\n });\n\n // Only return transformed code if changes were made\n if (hasChanges) {\n return {\n code: s.toString(),\n map: s.generateMap({ hires: true })\n };\n }\n\n return null;\n } catch (error) {\n // If parsing fails, return the original code\n console.warn(`Failed to parse ${id}:`, error);\n return null;\n }\n }\n };\n} ","import { existsSync } from \"fs\";\nimport { dirname } from \"path\";\nimport { join } from \"path\";\n\nexport function replaceConfigImport() {\n return {\n name: \"replace-config-import\",\n transform(code: string, id: string) {\n if (!id.endsWith(\"src/index.ts\")) {\n return;\n }\n\n const baseDir = dirname(id);\n const isProd = process.env.NODE_ENV === \"production\";\n const configFile = isProd ? \"config.prod.ts\" : \"config.dev.ts\";\n const configPath = join(baseDir, configFile);\n if (existsSync(configPath)) {\n const newImport = isProd ? \"./config.prod\" : \"./config.dev\";\n // Using regex to match both single and double quotes\n return code.replace(/['\"]\\.\\/(config)['\"]/g, `\"${newImport}\"`);\n }\n },\n };\n}\n","//#region ../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs\n/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar extendStatics = function(d, b) {\n\textendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d, b) {\n\t\td.__proto__ = b;\n\t} || function(d, b) {\n\t\tfor (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n\t};\n\treturn extendStatics(d, b);\n};\nfunction __extends(d, b) {\n\tif (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\textendStatics(d, b);\n\tfunction __() {\n\t\tthis.constructor = d;\n\t}\n\td.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nfunction __awaiter(thisArg, _arguments, P, generator) {\n\tfunction adopt(value) {\n\t\treturn value instanceof P ? value : new P(function(resolve) {\n\t\t\tresolve(value);\n\t\t});\n\t}\n\treturn new (P || (P = Promise))(function(resolve, reject) {\n\t\tfunction fulfilled(value) {\n\t\t\ttry {\n\t\t\t\tstep(generator.next(value));\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t}\n\t\tfunction rejected(value) {\n\t\t\ttry {\n\t\t\t\tstep(generator[\"throw\"](value));\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t}\n\t\tfunction step(result) {\n\t\t\tresult.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n\t\t}\n\t\tstep((generator = generator.apply(thisArg, _arguments || [])).next());\n\t});\n}\nfunction __generator(thisArg, body) {\n\tvar _ = {\n\t\tlabel: 0,\n\t\tsent: function() {\n\t\t\tif (t[0] & 1) throw t[1];\n\t\t\treturn t[1];\n\t\t},\n\t\ttrys: [],\n\t\tops: []\n\t}, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n\treturn g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n\t\treturn this;\n\t}), g;\n\tfunction verb(n) {\n\t\treturn function(v) {\n\t\t\treturn step([n, v]);\n\t\t};\n\t}\n\tfunction step(op) {\n\t\tif (f) throw new TypeError(\"Generator is already executing.\");\n\t\twhile (g && (g = 0, op[0] && (_ = 0)), _) try {\n\t\t\tif (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t\tif (y = 0, t) op = [op[0] & 2, t.value];\n\t\t\tswitch (op[0]) {\n\t\t\t\tcase 0:\n\t\t\t\tcase 1:\n\t\t\t\t\tt = op;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\t_.label++;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvalue: op[1],\n\t\t\t\t\t\tdone: false\n\t\t\t\t\t};\n\t\t\t\tcase 5:\n\t\t\t\t\t_.label++;\n\t\t\t\t\ty = op[1];\n\t\t\t\t\top = [0];\n\t\t\t\t\tcontinue;\n\t\t\t\tcase 7:\n\t\t\t\t\top = _.ops.pop();\n\t\t\t\t\t_.trys.pop();\n\t\t\t\t\tcontinue;\n\t\t\t\tdefault:\n\t\t\t\t\tif (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n\t\t\t\t\t\t_ = 0;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n\t\t\t\t\t\t_.label = op[1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (op[0] === 6 && _.label < t[1]) {\n\t\t\t\t\t\t_.label = t[1];\n\t\t\t\t\t\tt = op;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (t && _.label < t[2]) {\n\t\t\t\t\t\t_.label = t[2];\n\t\t\t\t\t\t_.ops.push(op);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (t[2]) _.ops.pop();\n\t\t\t\t\t_.trys.pop();\n\t\t\t\t\tcontinue;\n\t\t\t}\n\t\t\top = body.call(thisArg, _);\n\t\t} catch (e) {\n\t\t\top = [6, e];\n\t\t\ty = 0;\n\t\t} finally {\n\t\t\tf = t = 0;\n\t\t}\n\t\tif (op[0] & 5) throw op[1];\n\t\treturn {\n\t\t\tvalue: op[0] ? op[1] : void 0,\n\t\t\tdone: true\n\t\t};\n\t}\n}\nfunction __values(o) {\n\tvar s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\tif (m) return m.call(o);\n\tif (o && typeof o.length === \"number\") return { next: function() {\n\t\tif (o && i >= o.length) o = void 0;\n\t\treturn {\n\t\t\tvalue: o && o[i++],\n\t\t\tdone: !o\n\t\t};\n\t} };\n\tthrow new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n\tvar m = typeof Symbol === \"function\" && o[Symbol.iterator];\n\tif (!m) return o;\n\tvar i = m.call(o), r, ar = [], e;\n\ttry {\n\t\twhile ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n\t} catch (error) {\n\t\te = { error };\n\t} finally {\n\t\ttry {\n\t\t\tif (r && !r.done && (m = i[\"return\"])) m.call(i);\n\t\t} finally {\n\t\t\tif (e) throw e.error;\n\t\t}\n\t}\n\treturn ar;\n}\nfunction __spreadArray(to, from, pack) {\n\tif (pack || arguments.length === 2) {\n\t\tfor (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {\n\t\t\tif (!ar) ar = Array.prototype.slice.call(from, 0, i);\n\t\t\tar[i] = from[i];\n\t\t}\n\t}\n\treturn to.concat(ar || Array.prototype.slice.call(from));\n}\nfunction __await(v) {\n\treturn this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nfunction __asyncGenerator(thisArg, _arguments, generator) {\n\tif (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n\tvar g = generator.apply(thisArg, _arguments || []), i, q = [];\n\treturn i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function() {\n\t\treturn this;\n\t}, i;\n\tfunction awaitReturn(f) {\n\t\treturn function(v) {\n\t\t\treturn Promise.resolve(v).then(f, reject);\n\t\t};\n\t}\n\tfunction verb(n, f) {\n\t\tif (g[n]) {\n\t\t\ti[n] = function(v) {\n\t\t\t\treturn new Promise(function(a, b) {\n\t\t\t\t\tq.push([\n\t\t\t\t\t\tn,\n\t\t\t\t\t\tv,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tb\n\t\t\t\t\t]) > 1 || resume(n, v);\n\t\t\t\t});\n\t\t\t};\n\t\t\tif (f) i[n] = f(i[n]);\n\t\t}\n\t}\n\tfunction resume(n, v) {\n\t\ttry {\n\t\t\tstep(g[n](v));\n\t\t} catch (e) {\n\t\t\tsettle(q[0][3], e);\n\t\t}\n\t}\n\tfunction step(r) {\n\t\tr.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n\t}\n\tfunction fulfill(value) {\n\t\tresume(\"next\", value);\n\t}\n\tfunction reject(value) {\n\t\tresume(\"throw\", value);\n\t}\n\tfunction settle(f, v) {\n\t\tif (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n\t}\n}\nfunction __asyncValues(o) {\n\tif (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n\tvar m = o[Symbol.asyncIterator], i;\n\treturn m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function() {\n\t\treturn this;\n\t}, i);\n\tfunction verb(n) {\n\t\ti[n] = o[n] && function(v) {\n\t\t\treturn new Promise(function(resolve, reject) {\n\t\t\t\tv = o[n](v), settle(resolve, reject, v.done, v.value);\n\t\t\t});\n\t\t};\n\t}\n\tfunction settle(resolve, reject, d, v) {\n\t\tPromise.resolve(v).then(function(v) {\n\t\t\tresolve({\n\t\t\t\tvalue: v,\n\t\t\t\tdone: d\n\t\t\t});\n\t\t}, reject);\n\t}\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isFunction.js\nfunction isFunction$2(value) {\n\treturn typeof value === \"function\";\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js\nfunction createErrorClass(createImpl) {\n\tvar _super = function(instance) {\n\t\tError.call(instance);\n\t\tinstance.stack = (/* @__PURE__ */ new Error()).stack;\n\t};\n\tvar ctorFunc = createImpl(_super);\n\tctorFunc.prototype = Object.create(Error.prototype);\n\tctorFunc.prototype.constructor = ctorFunc;\n\treturn ctorFunc;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js\nvar UnsubscriptionError = createErrorClass(function(_super) {\n\treturn function UnsubscriptionErrorImpl(errors) {\n\t\t_super(this);\n\t\tthis.message = errors ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function(err, i) {\n\t\t\treturn i + 1 + \") \" + err.toString();\n\t\t}).join(\"\\n \") : \"\";\n\t\tthis.name = \"UnsubscriptionError\";\n\t\tthis.errors = errors;\n\t};\n});\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js\nfunction arrRemove(arr, item) {\n\tif (arr) {\n\t\tvar index = arr.indexOf(item);\n\t\t0 <= index && arr.splice(index, 1);\n\t}\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscription.js\nvar Subscription = function() {\n\tfunction Subscription(initialTeardown) {\n\t\tthis.initialTeardown = initialTeardown;\n\t\tthis.closed = false;\n\t\tthis._parentage = null;\n\t\tthis._finalizers = null;\n\t}\n\tSubscription.prototype.unsubscribe = function() {\n\t\tvar e_1, _a, e_2, _b;\n\t\tvar errors;\n\t\tif (!this.closed) {\n\t\t\tthis.closed = true;\n\t\t\tvar _parentage = this._parentage;\n\t\t\tif (_parentage) {\n\t\t\t\tthis._parentage = null;\n\t\t\t\tif (Array.isArray(_parentage)) try {\n\t\t\t\t\tfor (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) _parentage_1_1.value.remove(this);\n\t\t\t\t} catch (e_1_1) {\n\t\t\t\t\te_1 = { error: e_1_1 };\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (e_1) throw e_1.error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse _parentage.remove(this);\n\t\t\t}\n\t\t\tvar initialFinalizer = this.initialTeardown;\n\t\t\tif (isFunction$2(initialFinalizer)) try {\n\t\t\t\tinitialFinalizer();\n\t\t\t} catch (e) {\n\t\t\t\terrors = e instanceof UnsubscriptionError ? e.errors : [e];\n\t\t\t}\n\t\t\tvar _finalizers = this._finalizers;\n\t\t\tif (_finalizers) {\n\t\t\t\tthis._finalizers = null;\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n\t\t\t\t\t\tvar finalizer = _finalizers_1_1.value;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\texecFinalizer(finalizer);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\terrors = errors !== null && errors !== void 0 ? errors : [];\n\t\t\t\t\t\t\tif (err instanceof UnsubscriptionError) errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n\t\t\t\t\t\t\telse errors.push(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e_2_1) {\n\t\t\t\t\te_2 = { error: e_2_1 };\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (e_2) throw e_2.error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (errors) throw new UnsubscriptionError(errors);\n\t\t}\n\t};\n\tSubscription.prototype.add = function(teardown) {\n\t\tvar _a;\n\t\tif (teardown && teardown !== this) if (this.closed) execFinalizer(teardown);\n\t\telse {\n\t\t\tif (teardown instanceof Subscription) {\n\t\t\t\tif (teardown.closed || teardown._hasParent(this)) return;\n\t\t\t\tteardown._addParent(this);\n\t\t\t}\n\t\t\t(this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n\t\t}\n\t};\n\tSubscription.prototype._hasParent = function(parent) {\n\t\tvar _parentage = this._parentage;\n\t\treturn _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent);\n\t};\n\tSubscription.prototype._addParent = function(parent) {\n\t\tvar _parentage = this._parentage;\n\t\tthis._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n\t};\n\tSubscription.prototype._removeParent = function(parent) {\n\t\tvar _parentage = this._parentage;\n\t\tif (_parentage === parent) this._parentage = null;\n\t\telse if (Array.isArray(_parentage)) arrRemove(_parentage, parent);\n\t};\n\tSubscription.prototype.remove = function(teardown) {\n\t\tvar _finalizers = this._finalizers;\n\t\t_finalizers && arrRemove(_finalizers, teardown);\n\t\tif (teardown instanceof Subscription) teardown._removeParent(this);\n\t};\n\tSubscription.EMPTY = (function() {\n\t\tvar empty = new Subscription();\n\t\tempty.closed = true;\n\t\treturn empty;\n\t})();\n\treturn Subscription;\n}();\nvar EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nfunction isSubscription(value) {\n\treturn value instanceof Subscription || value && \"closed\" in value && isFunction$2(value.remove) && isFunction$2(value.add) && isFunction$2(value.unsubscribe);\n}\nfunction execFinalizer(finalizer) {\n\tif (isFunction$2(finalizer)) finalizer();\n\telse finalizer.unsubscribe();\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/config.js\nvar config = {\n\tonUnhandledError: null,\n\tonStoppedNotification: null,\n\tPromise: void 0,\n\tuseDeprecatedSynchronousErrorHandling: false,\n\tuseDeprecatedNextContext: false\n};\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js\nvar timeoutProvider = {\n\tsetTimeout: function(handler, timeout) {\n\t\tvar args = [];\n\t\tfor (var _i = 2; _i < arguments.length; _i++) args[_i - 2] = arguments[_i];\n\t\tvar delegate = timeoutProvider.delegate;\n\t\tif (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n\t\treturn setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n\t},\n\tclearTimeout: function(handle) {\n\t\tvar delegate = timeoutProvider.delegate;\n\t\treturn ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n\t},\n\tdelegate: void 0\n};\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js\nfunction reportUnhandledError(err) {\n\ttimeoutProvider.setTimeout(function() {\n\t\tvar onUnhandledError = config.onUnhandledError;\n\t\tif (onUnhandledError) onUnhandledError(err);\n\t\telse throw err;\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/noop.js\nfunction noop() {}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js\nvar COMPLETE_NOTIFICATION = (function() {\n\treturn createNotification(\"C\", void 0, void 0);\n})();\nfunction errorNotification(error) {\n\treturn createNotification(\"E\", void 0, error);\n}\nfunction nextNotification(value) {\n\treturn createNotification(\"N\", value, void 0);\n}\nfunction createNotification(kind, value, error) {\n\treturn {\n\t\tkind,\n\t\tvalue,\n\t\terror\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/errorContext.js\nvar context$2 = null;\nfunction errorContext(cb) {\n\tif (config.useDeprecatedSynchronousErrorHandling) {\n\t\tvar isRoot = !context$2;\n\t\tif (isRoot) context$2 = {\n\t\t\terrorThrown: false,\n\t\t\terror: null\n\t\t};\n\t\tcb();\n\t\tif (isRoot) {\n\t\t\tvar _a = context$2, errorThrown = _a.errorThrown, error = _a.error;\n\t\t\tcontext$2 = null;\n\t\t\tif (errorThrown) throw error;\n\t\t}\n\t} else cb();\n}\nfunction captureError(err) {\n\tif (config.useDeprecatedSynchronousErrorHandling && context$2) {\n\t\tcontext$2.errorThrown = true;\n\t\tcontext$2.error = err;\n\t}\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subscriber.js\nvar Subscriber = function(_super) {\n\t__extends(Subscriber, _super);\n\tfunction Subscriber(destination) {\n\t\tvar _this = _super.call(this) || this;\n\t\t_this.isStopped = false;\n\t\tif (destination) {\n\t\t\t_this.destination = destination;\n\t\t\tif (isSubscription(destination)) destination.add(_this);\n\t\t} else _this.destination = EMPTY_OBSERVER;\n\t\treturn _this;\n\t}\n\tSubscriber.create = function(next, error, complete) {\n\t\treturn new SafeSubscriber(next, error, complete);\n\t};\n\tSubscriber.prototype.next = function(value) {\n\t\tif (this.isStopped) handleStoppedNotification(nextNotification(value), this);\n\t\telse this._next(value);\n\t};\n\tSubscriber.prototype.error = function(err) {\n\t\tif (this.isStopped) handleStoppedNotification(errorNotification(err), this);\n\t\telse {\n\t\t\tthis.isStopped = true;\n\t\t\tthis._error(err);\n\t\t}\n\t};\n\tSubscriber.prototype.complete = function() {\n\t\tif (this.isStopped) handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n\t\telse {\n\t\t\tthis.isStopped = true;\n\t\t\tthis._complete();\n\t\t}\n\t};\n\tSubscriber.prototype.unsubscribe = function() {\n\t\tif (!this.closed) {\n\t\t\tthis.isStopped = true;\n\t\t\t_super.prototype.unsubscribe.call(this);\n\t\t\tthis.destination = null;\n\t\t}\n\t};\n\tSubscriber.prototype._next = function(value) {\n\t\tthis.destination.next(value);\n\t};\n\tSubscriber.prototype._error = function(err) {\n\t\ttry {\n\t\t\tthis.destination.error(err);\n\t\t} finally {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t};\n\tSubscriber.prototype._complete = function() {\n\t\ttry {\n\t\t\tthis.destination.complete();\n\t\t} finally {\n\t\t\tthis.unsubscribe();\n\t\t}\n\t};\n\treturn Subscriber;\n}(Subscription);\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n\treturn _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = function() {\n\tfunction ConsumerObserver(partialObserver) {\n\t\tthis.partialObserver = partialObserver;\n\t}\n\tConsumerObserver.prototype.next = function(value) {\n\t\tvar partialObserver = this.partialObserver;\n\t\tif (partialObserver.next) try {\n\t\t\tpartialObserver.next(value);\n\t\t} catch (error) {\n\t\t\thandleUnhandledError(error);\n\t\t}\n\t};\n\tConsumerObserver.prototype.error = function(err) {\n\t\tvar partialObserver = this.partialObserver;\n\t\tif (partialObserver.error) try {\n\t\t\tpartialObserver.error(err);\n\t\t} catch (error) {\n\t\t\thandleUnhandledError(error);\n\t\t}\n\t\telse handleUnhandledError(err);\n\t};\n\tConsumerObserver.prototype.complete = function() {\n\t\tvar partialObserver = this.partialObserver;\n\t\tif (partialObserver.complete) try {\n\t\t\tpartialObserver.complete();\n\t\t} catch (error) {\n\t\t\thandleUnhandledError(error);\n\t\t}\n\t};\n\treturn ConsumerObserver;\n}();\nvar SafeSubscriber = function(_super) {\n\t__extends(SafeSubscriber, _super);\n\tfunction SafeSubscriber(observerOrNext, error, complete) {\n\t\tvar _this = _super.call(this) || this;\n\t\tvar partialObserver;\n\t\tif (isFunction$2(observerOrNext) || !observerOrNext) partialObserver = {\n\t\t\tnext: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0,\n\t\t\terror: error !== null && error !== void 0 ? error : void 0,\n\t\t\tcomplete: complete !== null && complete !== void 0 ? complete : void 0\n\t\t};\n\t\telse {\n\t\t\tvar context_1;\n\t\t\tif (_this && config.useDeprecatedNextContext) {\n\t\t\t\tcontext_1 = Object.create(observerOrNext);\n\t\t\t\tcontext_1.unsubscribe = function() {\n\t\t\t\t\treturn _this.unsubscribe();\n\t\t\t\t};\n\t\t\t\tpartialObserver = {\n\t\t\t\t\tnext: observerOrNext.next && bind(observerOrNext.next, context_1),\n\t\t\t\t\terror: observerOrNext.error && bind(observerOrNext.error, context_1),\n\t\t\t\t\tcomplete: observerOrNext.complete && bind(observerOrNext.complete, context_1)\n\t\t\t\t};\n\t\t\t} else partialObserver = observerOrNext;\n\t\t}\n\t\t_this.destination = new ConsumerObserver(partialObserver);\n\t\treturn _this;\n\t}\n\treturn SafeSubscriber;\n}(Subscriber);\nfunction handleUnhandledError(error) {\n\tif (config.useDeprecatedSynchronousErrorHandling) captureError(error);\n\telse reportUnhandledError(error);\n}\nfunction defaultErrorHandler(err) {\n\tthrow err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n\tvar onStoppedNotification = config.onStoppedNotification;\n\tonStoppedNotification && timeoutProvider.setTimeout(function() {\n\t\treturn onStoppedNotification(notification, subscriber);\n\t});\n}\nvar EMPTY_OBSERVER = {\n\tclosed: true,\n\tnext: noop,\n\terror: defaultErrorHandler,\n\tcomplete: noop\n};\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/observable.js\nvar observable = (function() {\n\treturn typeof Symbol === \"function\" && Symbol.observable || \"@@observable\";\n})();\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/identity.js\nfunction identity(x) {\n\treturn x;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/pipe.js\nfunction pipeFromArray(fns) {\n\tif (fns.length === 0) return identity;\n\tif (fns.length === 1) return fns[0];\n\treturn function piped(input) {\n\t\treturn fns.reduce(function(prev, fn) {\n\t\t\treturn fn(prev);\n\t\t}, input);\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Observable.js\nvar Observable = function() {\n\tfunction Observable(subscribe) {\n\t\tif (subscribe) this._subscribe = subscribe;\n\t}\n\tObservable.prototype.lift = function(operator) {\n\t\tvar observable = new Observable();\n\t\tobservable.source = this;\n\t\tobservable.operator = operator;\n\t\treturn observable;\n\t};\n\tObservable.prototype.subscribe = function(observerOrNext, error, complete) {\n\t\tvar _this = this;\n\t\tvar subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\t\terrorContext(function() {\n\t\t\tvar _a = _this, operator = _a.operator, source = _a.source;\n\t\t\tsubscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber));\n\t\t});\n\t\treturn subscriber;\n\t};\n\tObservable.prototype._trySubscribe = function(sink) {\n\t\ttry {\n\t\t\treturn this._subscribe(sink);\n\t\t} catch (err) {\n\t\t\tsink.error(err);\n\t\t}\n\t};\n\tObservable.prototype.forEach = function(next, promiseCtor) {\n\t\tvar _this = this;\n\t\tpromiseCtor = getPromiseCtor(promiseCtor);\n\t\treturn new promiseCtor(function(resolve, reject) {\n\t\t\tvar subscriber = new SafeSubscriber({\n\t\t\t\tnext: function(value) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tnext(value);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\tsubscriber.unsubscribe();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: reject,\n\t\t\t\tcomplete: resolve\n\t\t\t});\n\t\t\t_this.subscribe(subscriber);\n\t\t});\n\t};\n\tObservable.prototype._subscribe = function(subscriber) {\n\t\tvar _a;\n\t\treturn (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n\t};\n\tObservable.prototype[observable] = function() {\n\t\treturn this;\n\t};\n\tObservable.prototype.pipe = function() {\n\t\tvar operations = [];\n\t\tfor (var _i = 0; _i < arguments.length; _i++) operations[_i] = arguments[_i];\n\t\treturn pipeFromArray(operations)(this);\n\t};\n\tObservable.prototype.toPromise = function(promiseCtor) {\n\t\tvar _this = this;\n\t\tpromiseCtor = getPromiseCtor(promiseCtor);\n\t\treturn new promiseCtor(function(resolve, reject) {\n\t\t\tvar value;\n\t\t\t_this.subscribe(function(x) {\n\t\t\t\treturn value = x;\n\t\t\t}, function(err) {\n\t\t\t\treturn reject(err);\n\t\t\t}, function() {\n\t\t\t\treturn resolve(value);\n\t\t\t});\n\t\t});\n\t};\n\tObservable.create = function(subscribe) {\n\t\treturn new Observable(subscribe);\n\t};\n\treturn Observable;\n}();\nfunction getPromiseCtor(promiseCtor) {\n\tvar _a;\n\treturn (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n\treturn value && isFunction$2(value.next) && isFunction$2(value.error) && isFunction$2(value.complete);\n}\nfunction isSubscriber(value) {\n\treturn value && value instanceof Subscriber || isObserver(value) && isSubscription(value);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/lift.js\nfunction hasLift(source) {\n\treturn isFunction$2(source === null || source === void 0 ? void 0 : source.lift);\n}\nfunction operate(init) {\n\treturn function(source) {\n\t\tif (hasLift(source)) return source.lift(function(liftedSource) {\n\t\t\ttry {\n\t\t\t\treturn init(liftedSource, this);\n\t\t\t} catch (err) {\n\t\t\t\tthis.error(err);\n\t\t\t}\n\t\t});\n\t\tthrow new TypeError(\"Unable to lift unknown Observable type\");\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js\nfunction createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n\treturn new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = function(_super) {\n\t__extends(OperatorSubscriber, _super);\n\tfunction OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n\t\tvar _this = _super.call(this, destination) || this;\n\t\t_this.onFinalize = onFinalize;\n\t\t_this.shouldUnsubscribe = shouldUnsubscribe;\n\t\t_this._next = onNext ? function(value) {\n\t\t\ttry {\n\t\t\t\tonNext(value);\n\t\t\t} catch (err) {\n\t\t\t\tdestination.error(err);\n\t\t\t}\n\t\t} : _super.prototype._next;\n\t\t_this._error = onError ? function(err) {\n\t\t\ttry {\n\t\t\t\tonError(err);\n\t\t\t} catch (err) {\n\t\t\t\tdestination.error(err);\n\t\t\t} finally {\n\t\t\t\tthis.unsubscribe();\n\t\t\t}\n\t\t} : _super.prototype._error;\n\t\t_this._complete = onComplete ? function() {\n\t\t\ttry {\n\t\t\t\tonComplete();\n\t\t\t} catch (err) {\n\t\t\t\tdestination.error(err);\n\t\t\t} finally {\n\t\t\t\tthis.unsubscribe();\n\t\t\t}\n\t\t} : _super.prototype._complete;\n\t\treturn _this;\n\t}\n\tOperatorSubscriber.prototype.unsubscribe = function() {\n\t\tvar _a;\n\t\tif (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n\t\t\tvar closed_1 = this.closed;\n\t\t\t_super.prototype.unsubscribe.call(this);\n\t\t\t!closed_1 && ((_a = this.onFinalize) === null || _a === void 0 || _a.call(this));\n\t\t}\n\t};\n\treturn OperatorSubscriber;\n}(Subscriber);\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js\nvar ObjectUnsubscribedError = createErrorClass(function(_super) {\n\treturn function ObjectUnsubscribedErrorImpl() {\n\t\t_super(this);\n\t\tthis.name = \"ObjectUnsubscribedError\";\n\t\tthis.message = \"object unsubscribed\";\n\t};\n});\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/Subject.js\nvar Subject = function(_super) {\n\t__extends(Subject, _super);\n\tfunction Subject() {\n\t\tvar _this = _super.call(this) || this;\n\t\t_this.closed = false;\n\t\t_this.currentObservers = null;\n\t\t_this.observers = [];\n\t\t_this.isStopped = false;\n\t\t_this.hasError = false;\n\t\t_this.thrownError = null;\n\t\treturn _this;\n\t}\n\tSubject.prototype.lift = function(operator) {\n\t\tvar subject = new AnonymousSubject(this, this);\n\t\tsubject.operator = operator;\n\t\treturn subject;\n\t};\n\tSubject.prototype._throwIfClosed = function() {\n\t\tif (this.closed) throw new ObjectUnsubscribedError();\n\t};\n\tSubject.prototype.next = function(value) {\n\t\tvar _this = this;\n\t\terrorContext(function() {\n\t\t\tvar e_1, _a;\n\t\t\t_this._throwIfClosed();\n\t\t\tif (!_this.isStopped) {\n\t\t\t\tif (!_this.currentObservers) _this.currentObservers = Array.from(_this.observers);\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) _c.value.next(value);\n\t\t\t\t} catch (e_1_1) {\n\t\t\t\t\te_1 = { error: e_1_1 };\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (e_1) throw e_1.error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\tSubject.prototype.error = function(err) {\n\t\tvar _this = this;\n\t\terrorContext(function() {\n\t\t\t_this._throwIfClosed();\n\t\t\tif (!_this.isStopped) {\n\t\t\t\t_this.hasError = _this.isStopped = true;\n\t\t\t\t_this.thrownError = err;\n\t\t\t\tvar observers = _this.observers;\n\t\t\t\twhile (observers.length) observers.shift().error(err);\n\t\t\t}\n\t\t});\n\t};\n\tSubject.prototype.complete = function() {\n\t\tvar _this = this;\n\t\terrorContext(function() {\n\t\t\t_this._throwIfClosed();\n\t\t\tif (!_this.isStopped) {\n\t\t\t\t_this.isStopped = true;\n\t\t\t\tvar observers = _this.observers;\n\t\t\t\twhile (observers.length) observers.shift().complete();\n\t\t\t}\n\t\t});\n\t};\n\tSubject.prototype.unsubscribe = function() {\n\t\tthis.isStopped = this.closed = true;\n\t\tthis.observers = this.currentObservers = null;\n\t};\n\tObject.defineProperty(Subject.prototype, \"observed\", {\n\t\tget: function() {\n\t\t\tvar _a;\n\t\t\treturn ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n\tSubject.prototype._trySubscribe = function(subscriber) {\n\t\tthis._throwIfClosed();\n\t\treturn _super.prototype._trySubscribe.call(this, subscriber);\n\t};\n\tSubject.prototype._subscribe = function(subscriber) {\n\t\tthis._throwIfClosed();\n\t\tthis._checkFinalizedStatuses(subscriber);\n\t\treturn this._innerSubscribe(subscriber);\n\t};\n\tSubject.prototype._innerSubscribe = function(subscriber) {\n\t\tvar _this = this;\n\t\tvar _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n\t\tif (hasError || isStopped) return EMPTY_SUBSCRIPTION;\n\t\tthis.currentObservers = null;\n\t\tobservers.push(subscriber);\n\t\treturn new Subscription(function() {\n\t\t\t_this.currentObservers = null;\n\t\t\tarrRemove(observers, subscriber);\n\t\t});\n\t};\n\tSubject.prototype._checkFinalizedStatuses = function(subscriber) {\n\t\tvar _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n\t\tif (hasError) subscriber.error(thrownError);\n\t\telse if (isStopped) subscriber.complete();\n\t};\n\tSubject.prototype.asObservable = function() {\n\t\tvar observable = new Observable();\n\t\tobservable.source = this;\n\t\treturn observable;\n\t};\n\tSubject.create = function(destination, source) {\n\t\treturn new AnonymousSubject(destination, source);\n\t};\n\treturn Subject;\n}(Observable);\nvar AnonymousSubject = function(_super) {\n\t__extends(AnonymousSubject, _super);\n\tfunction AnonymousSubject(destination, source) {\n\t\tvar _this = _super.call(this) || this;\n\t\t_this.destination = destination;\n\t\t_this.source = source;\n\t\treturn _this;\n\t}\n\tAnonymousSubject.prototype.next = function(value) {\n\t\tvar _a, _b;\n\t\t(_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 || _b.call(_a, value);\n\t};\n\tAnonymousSubject.prototype.error = function(err) {\n\t\tvar _a, _b;\n\t\t(_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 || _b.call(_a, err);\n\t};\n\tAnonymousSubject.prototype.complete = function() {\n\t\tvar _a, _b;\n\t\t(_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 || _b.call(_a);\n\t};\n\tAnonymousSubject.prototype._subscribe = function(subscriber) {\n\t\tvar _a, _b;\n\t\treturn (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n\t};\n\treturn AnonymousSubject;\n}(Subject);\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js\nvar BehaviorSubject = function(_super) {\n\t__extends(BehaviorSubject, _super);\n\tfunction BehaviorSubject(_value) {\n\t\tvar _this = _super.call(this) || this;\n\t\t_this._value = _value;\n\t\treturn _this;\n\t}\n\tObject.defineProperty(BehaviorSubject.prototype, \"value\", {\n\t\tget: function() {\n\t\t\treturn this.getValue();\n\t\t},\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n\tBehaviorSubject.prototype._subscribe = function(subscriber) {\n\t\tvar subscription = _super.prototype._subscribe.call(this, subscriber);\n\t\t!subscription.closed && subscriber.next(this._value);\n\t\treturn subscription;\n\t};\n\tBehaviorSubject.prototype.getValue = function() {\n\t\tvar _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n\t\tif (hasError) throw thrownError;\n\t\tthis._throwIfClosed();\n\t\treturn _value;\n\t};\n\tBehaviorSubject.prototype.next = function(value) {\n\t\t_super.prototype.next.call(this, this._value = value);\n\t};\n\treturn BehaviorSubject;\n}(Subject);\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js\nfunction isScheduler(value) {\n\treturn value && isFunction$2(value.schedule);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/args.js\nfunction last(arr) {\n\treturn arr[arr.length - 1];\n}\nfunction popResultSelector(args) {\n\treturn isFunction$2(last(args)) ? args.pop() : void 0;\n}\nfunction popScheduler(args) {\n\treturn isScheduler(last(args)) ? args.pop() : void 0;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js\nvar isArrayLike = (function(x) {\n\treturn x && typeof x.length === \"number\" && typeof x !== \"function\";\n});\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isPromise.js\nfunction isPromise(value) {\n\treturn isFunction$2(value === null || value === void 0 ? void 0 : value.then);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js\nfunction isInteropObservable(input) {\n\treturn isFunction$2(input[observable]);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js\nfunction isAsyncIterable(obj) {\n\treturn Symbol.asyncIterator && isFunction$2(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js\nfunction createInvalidObservableTypeError(input) {\n\treturn /* @__PURE__ */ new TypeError(\"You provided \" + (input !== null && typeof input === \"object\" ? \"an invalid object\" : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js\nfunction getSymbolIterator() {\n\tif (typeof Symbol !== \"function\" || !Symbol.iterator) return \"@@iterator\";\n\treturn Symbol.iterator;\n}\nvar iterator = getSymbolIterator();\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isIterable.js\nfunction isIterable(input) {\n\treturn isFunction$2(input === null || input === void 0 ? void 0 : input[iterator]);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js\nfunction readableStreamLikeToAsyncGenerator(readableStream) {\n\treturn __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n\t\tvar reader, _a, value, done;\n\t\treturn __generator(this, function(_b) {\n\t\t\tswitch (_b.label) {\n\t\t\t\tcase 0:\n\t\t\t\t\treader = readableStream.getReader();\n\t\t\t\t\t_b.label = 1;\n\t\t\t\tcase 1:\n\t\t\t\t\t_b.trys.push([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t,\n\t\t\t\t\t\t9,\n\t\t\t\t\t\t10\n\t\t\t\t\t]);\n\t\t\t\t\t_b.label = 2;\n\t\t\t\tcase 2: return [4, __await(reader.read())];\n\t\t\t\tcase 3:\n\t\t\t\t\t_a = _b.sent(), value = _a.value, done = _a.done;\n\t\t\t\t\tif (!done) return [3, 5];\n\t\t\t\t\treturn [4, __await(void 0)];\n\t\t\t\tcase 4: return [2, _b.sent()];\n\t\t\t\tcase 5: return [4, __await(value)];\n\t\t\t\tcase 6: return [4, _b.sent()];\n\t\t\t\tcase 7:\n\t\t\t\t\t_b.sent();\n\t\t\t\t\treturn [3, 2];\n\t\t\t\tcase 8: return [3, 10];\n\t\t\t\tcase 9:\n\t\t\t\t\treader.releaseLock();\n\t\t\t\t\treturn [7];\n\t\t\t\tcase 10: return [2];\n\t\t\t}\n\t\t});\n\t});\n}\nfunction isReadableStreamLike(obj) {\n\treturn isFunction$2(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js\nfunction innerFrom(input) {\n\tif (input instanceof Observable) return input;\n\tif (input != null) {\n\t\tif (isInteropObservable(input)) return fromInteropObservable(input);\n\t\tif (isArrayLike(input)) return fromArrayLike(input);\n\t\tif (isPromise(input)) return fromPromise(input);\n\t\tif (isAsyncIterable(input)) return fromAsyncIterable(input);\n\t\tif (isIterable(input)) return fromIterable(input);\n\t\tif (isReadableStreamLike(input)) return fromReadableStreamLike(input);\n\t}\n\tthrow createInvalidObservableTypeError(input);\n}\nfunction fromInteropObservable(obj) {\n\treturn new Observable(function(subscriber) {\n\t\tvar obs = obj[observable]();\n\t\tif (isFunction$2(obs.subscribe)) return obs.subscribe(subscriber);\n\t\tthrow new TypeError(\"Provided object does not correctly implement Symbol.observable\");\n\t});\n}\nfunction fromArrayLike(array) {\n\treturn new Observable(function(subscriber) {\n\t\tfor (var i = 0; i < array.length && !subscriber.closed; i++) subscriber.next(array[i]);\n\t\tsubscriber.complete();\n\t});\n}\nfunction fromPromise(promise) {\n\treturn new Observable(function(subscriber) {\n\t\tpromise.then(function(value) {\n\t\t\tif (!subscriber.closed) {\n\t\t\t\tsubscriber.next(value);\n\t\t\t\tsubscriber.complete();\n\t\t\t}\n\t\t}, function(err) {\n\t\t\treturn subscriber.error(err);\n\t\t}).then(null, reportUnhandledError);\n\t});\n}\nfunction fromIterable(iterable) {\n\treturn new Observable(function(subscriber) {\n\t\tvar e_1, _a;\n\t\ttry {\n\t\t\tfor (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n\t\t\t\tvar value = iterable_1_1.value;\n\t\t\t\tsubscriber.next(value);\n\t\t\t\tif (subscriber.closed) return;\n\t\t\t}\n\t\t} catch (e_1_1) {\n\t\t\te_1 = { error: e_1_1 };\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n\t\t\t} finally {\n\t\t\t\tif (e_1) throw e_1.error;\n\t\t\t}\n\t\t}\n\t\tsubscriber.complete();\n\t});\n}\nfunction fromAsyncIterable(asyncIterable) {\n\treturn new Observable(function(subscriber) {\n\t\tprocess$1(asyncIterable, subscriber).catch(function(err) {\n\t\t\treturn subscriber.error(err);\n\t\t});\n\t});\n}\nfunction fromReadableStreamLike(readableStream) {\n\treturn fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process$1(asyncIterable, subscriber) {\n\tvar asyncIterable_1, asyncIterable_1_1;\n\tvar e_2, _a;\n\treturn __awaiter(this, void 0, void 0, function() {\n\t\tvar value, e_2_1;\n\t\treturn __generator(this, function(_b) {\n\t\t\tswitch (_b.label) {\n\t\t\t\tcase 0:\n\t\t\t\t\t_b.trys.push([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t5,\n\t\t\t\t\t\t6,\n\t\t\t\t\t\t11\n\t\t\t\t\t]);\n\t\t\t\t\tasyncIterable_1 = __asyncValues(asyncIterable);\n\t\t\t\t\t_b.label = 1;\n\t\t\t\tcase 1: return [4, asyncIterable_1.next()];\n\t\t\t\tcase 2:\n\t\t\t\t\tif (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n\t\t\t\t\tvalue = asyncIterable_1_1.value;\n\t\t\t\t\tsubscriber.next(value);\n\t\t\t\t\tif (subscriber.closed) return [2];\n\t\t\t\t\t_b.label = 3;\n\t\t\t\tcase 3: return [3, 1];\n\t\t\t\tcase 4: return [3, 11];\n\t\t\t\tcase 5:\n\t\t\t\t\te_2_1 = _b.sent();\n\t\t\t\t\te_2 = { error: e_2_1 };\n\t\t\t\t\treturn [3, 11];\n\t\t\t\tcase 6:\n\t\t\t\t\t_b.trys.push([\n\t\t\t\t\t\t6,\n\t\t\t\t\t\t,\n\t\t\t\t\t\t9,\n\t\t\t\t\t\t10\n\t\t\t\t\t]);\n\t\t\t\t\tif (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n\t\t\t\t\treturn [4, _a.call(asyncIterable_1)];\n\t\t\t\tcase 7:\n\t\t\t\t\t_b.sent();\n\t\t\t\t\t_b.label = 8;\n\t\t\t\tcase 8: return [3, 10];\n\t\t\t\tcase 9:\n\t\t\t\t\tif (e_2) throw e_2.error;\n\t\t\t\t\treturn [7];\n\t\t\t\tcase 10: return [7];\n\t\t\t\tcase 11:\n\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\treturn [2];\n\t\t\t}\n\t\t});\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js\nfunction executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n\tif (delay === void 0) delay = 0;\n\tif (repeat === void 0) repeat = false;\n\tvar scheduleSubscription = scheduler.schedule(function() {\n\t\twork();\n\t\tif (repeat) parentSubscription.add(this.schedule(null, delay));\n\t\telse this.unsubscribe();\n\t}, delay);\n\tparentSubscription.add(scheduleSubscription);\n\tif (!repeat) return scheduleSubscription;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js\nfunction observeOn(scheduler, delay) {\n\tif (delay === void 0) delay = 0;\n\treturn operate(function(source, subscriber) {\n\t\tsource.subscribe(createOperatorSubscriber(subscriber, function(value) {\n\t\t\treturn executeSchedule(subscriber, scheduler, function() {\n\t\t\t\treturn subscriber.next(value);\n\t\t\t}, delay);\n\t\t}, function() {\n\t\t\treturn executeSchedule(subscriber, scheduler, function() {\n\t\t\t\treturn subscriber.complete();\n\t\t\t}, delay);\n\t\t}, function(err) {\n\t\t\treturn executeSchedule(subscriber, scheduler, function() {\n\t\t\t\treturn subscriber.error(err);\n\t\t\t}, delay);\n\t\t}));\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js\nfunction subscribeOn(scheduler, delay) {\n\tif (delay === void 0) delay = 0;\n\treturn operate(function(source, subscriber) {\n\t\tsubscriber.add(scheduler.schedule(function() {\n\t\t\treturn source.subscribe(subscriber);\n\t\t}, delay));\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js\nfunction scheduleObservable(input, scheduler) {\n\treturn innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js\nfunction schedulePromise(input, scheduler) {\n\treturn innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js\nfunction scheduleArray(input, scheduler) {\n\treturn new Observable(function(subscriber) {\n\t\tvar i = 0;\n\t\treturn scheduler.schedule(function() {\n\t\t\tif (i === input.length) subscriber.complete();\n\t\t\telse {\n\t\t\t\tsubscriber.next(input[i++]);\n\t\t\t\tif (!subscriber.closed) this.schedule();\n\t\t\t}\n\t\t});\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js\nfunction scheduleIterable(input, scheduler) {\n\treturn new Observable(function(subscriber) {\n\t\tvar iterator$1;\n\t\texecuteSchedule(subscriber, scheduler, function() {\n\t\t\titerator$1 = input[iterator]();\n\t\t\texecuteSchedule(subscriber, scheduler, function() {\n\t\t\t\tvar _a;\n\t\t\t\tvar value;\n\t\t\t\tvar done;\n\t\t\t\ttry {\n\t\t\t\t\t_a = iterator$1.next(), value = _a.value, done = _a.done;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tsubscriber.error(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (done) subscriber.complete();\n\t\t\t\telse subscriber.next(value);\n\t\t\t}, 0, true);\n\t\t});\n\t\treturn function() {\n\t\t\treturn isFunction$2(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return();\n\t\t};\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js\nfunction scheduleAsyncIterable(input, scheduler) {\n\tif (!input) throw new Error(\"Iterable cannot be null\");\n\treturn new Observable(function(subscriber) {\n\t\texecuteSchedule(subscriber, scheduler, function() {\n\t\t\tvar iterator = input[Symbol.asyncIterator]();\n\t\t\texecuteSchedule(subscriber, scheduler, function() {\n\t\t\t\titerator.next().then(function(result) {\n\t\t\t\t\tif (result.done) subscriber.complete();\n\t\t\t\t\telse subscriber.next(result.value);\n\t\t\t\t});\n\t\t\t}, 0, true);\n\t\t});\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js\nfunction scheduleReadableStreamLike(input, scheduler) {\n\treturn scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js\nfunction scheduled(input, scheduler) {\n\tif (input != null) {\n\t\tif (isInteropObservable(input)) return scheduleObservable(input, scheduler);\n\t\tif (isArrayLike(input)) return scheduleArray(input, scheduler);\n\t\tif (isPromise(input)) return schedulePromise(input, scheduler);\n\t\tif (isAsyncIterable(input)) return scheduleAsyncIterable(input, scheduler);\n\t\tif (isIterable(input)) return scheduleIterable(input, scheduler);\n\t\tif (isReadableStreamLike(input)) return scheduleReadableStreamLike(input, scheduler);\n\t}\n\tthrow createInvalidObservableTypeError(input);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/from.js\nfunction from(input, scheduler) {\n\treturn scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/map.js\nfunction map(project, thisArg) {\n\treturn operate(function(source, subscriber) {\n\t\tvar index = 0;\n\t\tsource.subscribe(createOperatorSubscriber(subscriber, function(value) {\n\t\t\tsubscriber.next(project.call(thisArg, value, index++));\n\t\t}));\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js\nvar isArray$2 = Array.isArray;\nfunction callOrApply(fn, args) {\n\treturn isArray$2(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nfunction mapOneOrManyArgs(fn) {\n\treturn map(function(args) {\n\t\treturn callOrApply(fn, args);\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js\nvar isArray$1 = Array.isArray;\nvar getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;\nfunction argsArgArrayOrObject(args) {\n\tif (args.length === 1) {\n\t\tvar first_1 = args[0];\n\t\tif (isArray$1(first_1)) return {\n\t\t\targs: first_1,\n\t\t\tkeys: null\n\t\t};\n\t\tif (isPOJO(first_1)) {\n\t\t\tvar keys = getKeys(first_1);\n\t\t\treturn {\n\t\t\t\targs: keys.map(function(key) {\n\t\t\t\t\treturn first_1[key];\n\t\t\t\t}),\n\t\t\t\tkeys\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\targs,\n\t\tkeys: null\n\t};\n}\nfunction isPOJO(obj) {\n\treturn obj && typeof obj === \"object\" && getPrototypeOf(obj) === objectProto;\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/createObject.js\nfunction createObject(keys, values) {\n\treturn keys.reduce(function(result, key, i) {\n\t\treturn result[key] = values[i], result;\n\t}, {});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js\nfunction combineLatest() {\n\tvar args = [];\n\tfor (var _i = 0; _i < arguments.length; _i++) args[_i] = arguments[_i];\n\tvar scheduler = popScheduler(args);\n\tvar resultSelector = popResultSelector(args);\n\tvar _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;\n\tif (observables.length === 0) return from([], scheduler);\n\tvar result = new Observable(combineLatestInit(observables, scheduler, keys ? function(values) {\n\t\treturn createObject(keys, values);\n\t} : identity));\n\treturn resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nfunction combineLatestInit(observables, scheduler, valueTransform) {\n\tif (valueTransform === void 0) valueTransform = identity;\n\treturn function(subscriber) {\n\t\tmaybeSchedule(scheduler, function() {\n\t\t\tvar length = observables.length;\n\t\t\tvar values = new Array(length);\n\t\t\tvar active = length;\n\t\t\tvar remainingFirstValues = length;\n\t\t\tvar _loop_1 = function(i) {\n\t\t\t\tmaybeSchedule(scheduler, function() {\n\t\t\t\t\tvar source = from(observables[i], scheduler);\n\t\t\t\t\tvar hasFirstValue = false;\n\t\t\t\t\tsource.subscribe(createOperatorSubscriber(subscriber, function(value) {\n\t\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\t\tif (!hasFirstValue) {\n\t\t\t\t\t\t\thasFirstValue = true;\n\t\t\t\t\t\t\tremainingFirstValues--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!remainingFirstValues) subscriber.next(valueTransform(values.slice()));\n\t\t\t\t\t}, function() {\n\t\t\t\t\t\tif (!--active) subscriber.complete();\n\t\t\t\t\t}));\n\t\t\t\t}, subscriber);\n\t\t\t};\n\t\t\tfor (var i = 0; i < length; i++) _loop_1(i);\n\t\t}, subscriber);\n\t};\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n\tif (scheduler) executeSchedule(subscription, scheduler, execute);\n\telse execute();\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js\nfunction mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n\tvar buffer = [];\n\tvar active = 0;\n\tvar index = 0;\n\tvar isComplete = false;\n\tvar checkComplete = function() {\n\t\tif (isComplete && !buffer.length && !active) subscriber.complete();\n\t};\n\tvar outerNext = function(value) {\n\t\treturn active < concurrent ? doInnerSub(value) : buffer.push(value);\n\t};\n\tvar doInnerSub = function(value) {\n\t\texpand && subscriber.next(value);\n\t\tactive++;\n\t\tvar innerComplete = false;\n\t\tinnerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function(innerValue) {\n\t\t\tonBeforeNext === null || onBeforeNext === void 0 || onBeforeNext(innerValue);\n\t\t\tif (expand) outerNext(innerValue);\n\t\t\telse subscriber.next(innerValue);\n\t\t}, function() {\n\t\t\tinnerComplete = true;\n\t\t}, void 0, function() {\n\t\t\tif (innerComplete) try {\n\t\t\t\tactive--;\n\t\t\t\tvar _loop_1 = function() {\n\t\t\t\t\tvar bufferedValue = buffer.shift();\n\t\t\t\t\tif (innerSubScheduler) executeSchedule(subscriber, innerSubScheduler, function() {\n\t\t\t\t\t\treturn doInnerSub(bufferedValue);\n\t\t\t\t\t});\n\t\t\t\t\telse doInnerSub(bufferedValue);\n\t\t\t\t};\n\t\t\t\twhile (buffer.length && active < concurrent) _loop_1();\n\t\t\t\tcheckComplete();\n\t\t\t} catch (err) {\n\t\t\t\tsubscriber.error(err);\n\t\t\t}\n\t\t}));\n\t};\n\tsource.subscribe(createOperatorSubscriber(subscriber, outerNext, function() {\n\t\tisComplete = true;\n\t\tcheckComplete();\n\t}));\n\treturn function() {\n\t\tadditionalFinalizer === null || additionalFinalizer === void 0 || additionalFinalizer();\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js\nfunction mergeMap(project, resultSelector, concurrent) {\n\tif (concurrent === void 0) concurrent = Infinity;\n\tif (isFunction$2(resultSelector)) return mergeMap(function(a, i) {\n\t\treturn map(function(b, ii) {\n\t\t\treturn resultSelector(a, b, i, ii);\n\t\t})(innerFrom(project(a, i)));\n\t}, concurrent);\n\telse if (typeof resultSelector === \"number\") concurrent = resultSelector;\n\treturn operate(function(source, subscriber) {\n\t\treturn mergeInternals(source, subscriber, project, concurrent);\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/filter.js\nfunction filter(predicate, thisArg) {\n\treturn operate(function(source, subscriber) {\n\t\tvar index = 0;\n\t\tsource.subscribe(createOperatorSubscriber(subscriber, function(value) {\n\t\t\treturn predicate.call(thisArg, value, index++) && subscriber.next(value);\n\t\t}));\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js\nfunction scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n\treturn function(source, subscriber) {\n\t\tvar hasState = hasSeed;\n\t\tvar state = seed;\n\t\tvar index = 0;\n\t\tsource.subscribe(createOperatorSubscriber(subscriber, function(value) {\n\t\t\tvar i = index++;\n\t\t\tstate = hasState ? accumulator(state, value, i) : (hasState = true, value);\n\t\t\temitOnNext && subscriber.next(state);\n\t\t}, emitBeforeComplete && (function() {\n\t\t\thasState && subscriber.next(state);\n\t\t\tsubscriber.complete();\n\t\t})));\n\t};\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/reduce.js\nfunction reduce(accumulator, seed) {\n\treturn operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/toArray.js\nvar arrReducer = function(arr, value) {\n\treturn arr.push(value), arr;\n};\nfunction toArray() {\n\treturn operate(function(source, subscriber) {\n\t\treduce(arrReducer, [])(source).subscribe(subscriber);\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/finalize.js\nfunction finalize(callback) {\n\treturn operate(function(source, subscriber) {\n\t\ttry {\n\t\t\tsource.subscribe(subscriber);\n\t\t} finally {\n\t\t\tsubscriber.add(callback);\n\t\t}\n\t});\n}\n//#endregion\n//#region ../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/operators/share.js\nfunction share(options) {\n\tif (options === void 0) options = {};\n\tvar _a = options.connector, connector = _a === void 0 ? function() {\n\t\treturn new Subject();\n\t} : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n\treturn function(wrapperSource) {\n\t\tvar connection;\n\t\tvar resetConnection;\n\t\tvar subject;\n\t\tvar refCount = 0;\n\t\tvar hasCompleted = false;\n\t\tvar hasErrored = false;\n\t\tvar cancelReset = function() {\n\t\t\tresetConnection === null || resetConnection === void 0 || resetConnection.unsubscribe();\n\t\t\tresetConnection = void 0;\n\t\t};\n\t\tvar reset = function() {\n\t\t\tcancelReset();\n\t\t\tconnection = subject = void 0;\n\t\t\thasCompleted = hasErrored = false;\n\t\t};\n\t\tvar resetAndUnsubscribe = function() {\n\t\t\tvar conn = connection;\n\t\t\treset();\n\t\t\tconn === null || conn === void 0 || conn.unsubscribe();\n\t\t};\n\t\treturn operate(function(source, subscriber) {\n\t\t\trefCount++;\n\t\t\tif (!hasErrored && !hasCompleted) cancelReset();\n\t\t\tvar dest = subject = subject !== null && subject !== void 0 ? subject : connector();\n\t\t\tsubscriber.add(function() {\n\t\t\t\trefCount--;\n\t\t\t\tif (refCount === 0 && !hasErrored && !hasCompleted) resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n\t\t\t});\n\t\t\tdest.subscribe(subscriber);\n\t\t\tif (!connection && refCount > 0) {\n\t\t\t\tconnection = new SafeSubscriber({\n\t\t\t\t\tnext: function(value) {\n\t\t\t\t\t\treturn dest.next(value);\n\t\t\t\t\t},\n\t\t\t\t\terror: function(err) {\n\t\t\t\t\t\thasErrored = true;\n\t\t\t\t\t\tcancelReset();\n\t\t\t\t\t\tresetConnection = handleReset(reset, resetOnError, err);\n\t\t\t\t\t\tdest.error(err);\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\thasCompleted = true;\n\t\t\t\t\t\tcancelReset();\n\t\t\t\t\t\tresetConnection = handleReset(reset, resetOnComplete);\n\t\t\t\t\t\tdest.complete();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tinnerFrom(source).subscribe(connection);\n\t\t\t}\n\t\t})(wrapperSource);\n\t};\n}\nfunction handleReset(reset, on) {\n\tvar args = [];\n\tfor (var _i = 2; _i < arguments.length; _i++) args[_i - 2] = arguments[_i];\n\tif (on === true) {\n\t\treset();\n\t\treturn;\n\t}\n\tif (on === false) return;\n\tvar onSubscriber = new SafeSubscriber({ next: function() {\n\t\tonSubscriber.unsubscribe();\n\t\treset();\n\t} });\n\treturn innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//#endregion\n//#region ../../node_modules/.pnpm/@signe+reactive@2.8.3/node_modules/@signe/reactive/dist/index.js\nvar __defProp$2 = Object.defineProperty;\nvar __name$2 = (target, value) => __defProp$2(target, \"name\", {\n\tvalue,\n\tconfigurable: true\n});\nvar ArraySubject = class extends BehaviorSubject {\n\tstatic {\n\t\t__name$2(this, \"ArraySubject\");\n\t}\n\t_items = [];\n\tconstructor(items = []) {\n\t\tsuper({\n\t\t\ttype: \"init\",\n\t\t\titems\n\t\t});\n\t\tthis.createProxy(items);\n\t}\n\tcreateProxy(items) {\n\t\tthis._items = new Proxy(items, {\n\t\t\tget: /* @__PURE__ */ __name$2((target, prop, receiver) => {\n\t\t\t\tconst origMethod = target[prop];\n\t\t\t\tif (typeof origMethod === \"function\") return (...args) => {\n\t\t\t\t\tlet changeType = \"update\";\n\t\t\t\t\tlet index = void 0;\n\t\t\t\t\tlet isMutateFn = false;\n\t\t\t\t\tlet itemsToEmit = [];\n\t\t\t\t\tlet changeSplice = true;\n\t\t\t\t\tswitch (prop) {\n\t\t\t\t\t\tcase \"push\":\n\t\t\t\t\t\t\tindex = target.length;\n\t\t\t\t\t\t\tchangeType = \"add\";\n\t\t\t\t\t\t\tisMutateFn = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"pop\":\n\t\t\t\t\t\t\tindex = target.length - 1;\n\t\t\t\t\t\t\tchangeType = \"remove\";\n\t\t\t\t\t\t\tisMutateFn = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"unshift\":\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tchangeType = \"add\";\n\t\t\t\t\t\t\tisMutateFn = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"shift\":\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tchangeType = \"remove\";\n\t\t\t\t\t\t\tisMutateFn = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"splice\":\n\t\t\t\t\t\t\tindex = args[0];\n\t\t\t\t\t\t\tconst deleteCount = args[1];\n\t\t\t\t\t\t\tconst newItems = args.slice(2);\n\t\t\t\t\t\t\titemsToEmit = newItems;\n\t\t\t\t\t\t\tif (deleteCount > 0 && newItems.length === 0) changeType = \"remove\";\n\t\t\t\t\t\t\telse if (deleteCount === 0 && newItems.length > 0) changeType = \"add\";\n\t\t\t\t\t\t\telse if (deleteCount === 0 && newItems.length === 0) changeSplice = false;\n\t\t\t\t\t\t\telse changeType = \"update\";\n\t\t\t\t\t\t\tisMutateFn = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst result = origMethod.apply(target, args);\n\t\t\t\t\tif (isMutateFn && changeSplice) if (prop === \"splice\") this.next({\n\t\t\t\t\t\ttype: changeType,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\titems: itemsToEmit\n\t\t\t\t\t});\n\t\t\t\t\telse this.next({\n\t\t\t\t\t\ttype: changeType,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\titems: args\n\t\t\t\t\t});\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t}, \"get\"),\n\t\t\tset: /* @__PURE__ */ __name$2((target, prop, value) => {\n\t\t\t\tconst index = !isNaN(Number(prop)) ? Number(prop) : void 0;\n\t\t\t\ttarget[prop] = value;\n\t\t\t\tthis.next({\n\t\t\t\t\ttype: \"update\",\n\t\t\t\t\tindex,\n\t\t\t\t\titems: [value]\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}, \"set\")\n\t\t});\n\t}\n\tget items() {\n\t\treturn this._items;\n\t}\n\tset items(newItems) {\n\t\tthis.createProxy(newItems);\n\t\tthis.next({\n\t\t\ttype: \"reset\",\n\t\t\titems: newItems\n\t\t});\n\t}\n};\nvar isArraySubject = /* @__PURE__ */ __name$2((value) => {\n\treturn \"_items\" in value;\n}, \"isArraySubject\");\nvar ObjectSubject = class extends BehaviorSubject {\n\tstatic {\n\t\t__name$2(this, \"ObjectSubject\");\n\t}\n\t_obj;\n\tconstructor(obj = {}) {\n\t\tsuper({\n\t\t\ttype: \"init\",\n\t\t\tvalue: obj\n\t\t});\n\t\tthis.createProxy(obj);\n\t}\n\tcreateProxy(obj) {\n\t\tthis._obj = new Proxy(obj, {\n\t\t\tget: /* @__PURE__ */ __name$2((target, prop, receiver) => {\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t}, \"get\"),\n\t\t\tset: /* @__PURE__ */ __name$2((target, prop, value, receiver) => {\n\t\t\t\tconst key = prop;\n\t\t\t\tconst changeType = key in target ? \"update\" : \"add\";\n\t\t\t\ttarget[key] = value;\n\t\t\t\tthis.next({\n\t\t\t\t\ttype: changeType,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}, \"set\"),\n\t\t\tdeleteProperty: /* @__PURE__ */ __name$2((target, prop) => {\n\t\t\t\tconst key = prop;\n\t\t\t\tif (key in target) {\n\t\t\t\t\tconst value = target[key];\n\t\t\t\t\tdelete target[key];\n\t\t\t\t\tthis.next({\n\t\t\t\t\t\ttype: \"remove\",\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}, \"deleteProperty\")\n\t\t});\n\t}\n\tget obj() {\n\t\treturn this._obj;\n\t}\n\tset obj(newObj) {\n\t\tthis.createProxy(newObj);\n\t\tthis.next({\n\t\t\ttype: \"reset\",\n\t\t\tvalue: newObj\n\t\t});\n\t}\n};\nvar isObjectSubject = /* @__PURE__ */ __name$2((value) => {\n\treturn \"_obj\" in value;\n}, \"isObjectSubject\");\nvar reactiveStore = (/* @__PURE__ */ __name$2(() => {\n\tconst globalKey = \"__REACTIVE_STORE__\";\n\tif (typeof globalThis !== \"undefined\") {\n\t\tif (!globalThis[globalKey]) globalThis[globalKey] = {\n\t\t\tcurrentDependencyTracker: null,\n\t\t\tcurrentSubscriptionsTracker: null\n\t\t};\n\t\treturn globalThis[globalKey];\n\t}\n\tlet globalObj;\n\tif (typeof window !== \"undefined\") globalObj = window;\n\telse if (typeof process !== \"undefined\" && process.versions && process.versions.node) globalObj = Function(\"return this\")();\n\telse if (typeof self !== \"undefined\") globalObj = self;\n\telse {\n\t\tconsole.warn(\"Unable to find global object, using local instance\");\n\t\treturn {\n\t\t\tcurrentDependencyTracker: null,\n\t\t\tcurrentSubscriptionsTracker: null\n\t\t};\n\t}\n\tif (!globalObj[globalKey]) globalObj[globalKey] = {\n\t\tcurrentDependencyTracker: null,\n\t\tcurrentSubscriptionsTracker: null\n\t};\n\treturn globalObj[globalKey];\n}, \"getGlobalReactiveStore\"))();\nvar trackDependency = /* @__PURE__ */ __name$2((signal2) => {\n\tif (reactiveStore.currentDependencyTracker) reactiveStore.currentDependencyTracker(signal2);\n}, \"trackDependency\");\nfunction signal(defaultValue, options) {\n\tlet subject;\n\tif (Array.isArray(defaultValue)) subject = new ArraySubject(defaultValue);\n\telse if (typeof defaultValue === \"object\" && defaultValue !== null) subject = new ObjectSubject(defaultValue);\n\telse subject = new BehaviorSubject(defaultValue);\n\tconst getValue = /* @__PURE__ */ __name$2(() => {\n\t\tif (subject instanceof ArraySubject) return subject.items;\n\t\telse if (subject instanceof ObjectSubject) return subject.obj;\n\t\treturn subject.value;\n\t}, \"getValue\");\n\tconst fn = /* @__PURE__ */ __name$2(function() {\n\t\ttrackDependency(fn);\n\t\treturn getValue();\n\t}, \"fn\");\n\tfn.set = (value) => {\n\t\tconst currentValue = getValue();\n\t\tlet shouldEmit = true;\n\t\tif (options?.equal) shouldEmit = !options.equal(currentValue, value);\n\t\telse shouldEmit = currentValue !== value;\n\t\tif (shouldEmit) if (subject instanceof ArraySubject) subject.items = value;\n\t\telse if (subject instanceof ObjectSubject) subject.obj = value;\n\t\telse subject.next(value);\n\t};\n\tfn._isFrozen = false;\n\tfn.freeze = () => {\n\t\tfn._isFrozen = true;\n\t};\n\tfn.unfreeze = () => {\n\t\tfn._isFrozen = false;\n\t\tif (subject instanceof ArraySubject) subject.next({\n\t\t\ttype: \"init\",\n\t\t\titems: subject.items\n\t\t});\n\t\telse if (subject instanceof ObjectSubject) subject.next({\n\t\t\ttype: \"init\",\n\t\t\tvalue: subject.obj\n\t\t});\n\t\telse subject.next(subject.value);\n\t};\n\tfn.mutate = (mutateFn) => {\n\t\tmutateFn(getValue());\n\t};\n\tfn.update = (updateFn) => {\n\t\tconst updatedValue = updateFn(getValue());\n\t\tfn.set(updatedValue);\n\t};\n\tfn.observable = subject.asObservable().pipe(filter(() => !fn._isFrozen));\n\tfn._subject = subject;\n\treturn fn;\n}\n__name$2(signal, \"signal\");\nfunction isSignal(value) {\n\treturn !!(value && value.observable);\n}\n__name$2(isSignal, \"isSignal\");\nfunction isComputed(value) {\n\treturn isSignal(value) && !!value.dependencies;\n}\n__name$2(isComputed, \"isComputed\");\nfunction computed(computeFunction, disposableFn) {\n\tconst dependencies = /* @__PURE__ */ new Set();\n\tlet init = true;\n\tlet lastComputedValue;\n\tconst previousTracker = reactiveStore.currentDependencyTracker;\n\treactiveStore.currentDependencyTracker = (signal2) => {\n\t\tdependencies.add(signal2);\n\t};\n\tlastComputedValue = computeFunction();\n\tif (computeFunction[\"isEffect\"]) disposableFn = lastComputedValue;\n\treactiveStore.currentDependencyTracker = previousTracker;\n\tconst computedObservable = combineLatest([...dependencies].map((dep) => {\n\t\tif (isComputed(dep) && \"dependencies\" in dep) {\n\t\t\tconst computedDep = dep;\n\t\t\tif (computedDep.dependencies.size === 0) return new BehaviorSubject(computedDep()).asObservable();\n\t\t}\n\t\treturn dep.observable;\n\t})).pipe(filter(() => !init), map(() => computeFunction()), finalize(() => disposableFn?.()));\n\tconst fn = /* @__PURE__ */ __name$2(function() {\n\t\ttrackDependency(fn);\n\t\treturn lastComputedValue;\n\t}, \"fn\");\n\tfn.observable = computedObservable;\n\tfn.subscription = computedObservable.subscribe((value) => {\n\t\tlastComputedValue = value;\n\t});\n\tfn.dependencies = dependencies;\n\treactiveStore.currentSubscriptionsTracker?.(fn.subscription);\n\tinit = false;\n\treturn fn;\n}\n__name$2(computed, \"computed\");\nfunction linkedSignal(computationOrOptions, simpleOptions) {\n\tconst dependencies = /* @__PURE__ */ new Set();\n\tlet init = true;\n\tlet lastComputedValue;\n\tlet computeFunction;\n\tlet sourceSignal;\n\tlet computationFn;\n\tlet equalFn;\n\tlet previousValue;\n\tlet isOverridden = false;\n\tlet overriddenValue;\n\tlet depVersion = 0;\n\tlet overrideDepVersion = null;\n\tif (typeof computationOrOptions === \"function\") {\n\t\tcomputeFunction = computationOrOptions;\n\t\tequalFn = simpleOptions?.equal;\n\t} else {\n\t\tconst options = computationOrOptions;\n\t\tsourceSignal = options.source;\n\t\tcomputationFn = options.computation;\n\t\tequalFn = options.equal;\n\t\tif (typeof sourceSignal === \"function\" && !isSignal(sourceSignal)) {\n\t\t\tconst sourceFn = sourceSignal;\n\t\t\tcomputeFunction = /* @__PURE__ */ __name$2(() => {\n\t\t\t\tconst sourceValue = sourceFn();\n\t\t\t\tif (computationFn.length > 1) {\n\t\t\t\t\tconst result = computationFn(sourceValue, previousValue);\n\t\t\t\t\tpreviousValue = {\n\t\t\t\t\t\tsource: sourceValue,\n\t\t\t\t\t\tvalue: result\n\t\t\t\t\t};\n\t\t\t\t\treturn result;\n\t\t\t\t} else {\n\t\t\t\t\tconst result = computationFn(sourceValue);\n\t\t\t\t\tpreviousValue = {\n\t\t\t\t\t\tsource: sourceValue,\n\t\t\t\t\t\tvalue: result\n\t\t\t\t\t};\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}, \"computeFunction\");\n\t\t} else {\n\t\t\tconst source = typeof sourceSignal === \"function\" ? sourceSignal : sourceSignal;\n\t\t\tcomputeFunction = /* @__PURE__ */ __name$2(() => {\n\t\t\t\tconst sourceValue = source();\n\t\t\t\tif (computationFn.length > 1) {\n\t\t\t\t\tconst result = computationFn(sourceValue, previousValue);\n\t\t\t\t\tpreviousValue = {\n\t\t\t\t\t\tsource: sourceValue,\n\t\t\t\t\t\tvalue: result\n\t\t\t\t\t};\n\t\t\t\t\treturn result;\n\t\t\t\t} else {\n\t\t\t\t\tconst result = computationFn(sourceValue);\n\t\t\t\t\tpreviousValue = {\n\t\t\t\t\t\tsource: sourceValue,\n\t\t\t\t\t\tvalue: result\n\t\t\t\t\t};\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}, \"computeFunction\");\n\t\t}\n\t}\n\tconst previousTracker = reactiveStore.currentDependencyTracker;\n\treactiveStore.currentDependencyTracker = (signal2) => {\n\t\tdependencies.add(signal2);\n\t};\n\tif (sourceSignal && typeof sourceSignal === \"function\" && !isSignal(sourceSignal)) lastComputedValue = computeFunction();\n\telse if (sourceSignal && isSignal(sourceSignal)) {\n\t\tdependencies.add(sourceSignal);\n\t\tlastComputedValue = computeFunction();\n\t} else lastComputedValue = computeFunction();\n\treactiveStore.currentDependencyTracker = previousTracker;\n\tconst subject = new BehaviorSubject(lastComputedValue);\n\tconst observables = [...dependencies].map((dep) => {\n\t\tif (isComputed(dep) && \"dependencies\" in dep) {\n\t\t\tconst computedDep = dep;\n\t\t\tif (computedDep.dependencies.size === 0) return new BehaviorSubject(computedDep()).asObservable();\n\t\t}\n\t\treturn dep.observable;\n\t});\n\tlet linkedObservable;\n\tif (observables.length > 0) linkedObservable = combineLatest(observables).pipe(filter(() => !init), map(() => {\n\t\tconst computed2 = computeFunction();\n\t\tif (equalFn) {\n\t\t\tif (!equalFn(lastComputedValue, computed2)) {\n\t\t\t\tlastComputedValue = computed2;\n\t\t\t\tisOverridden = false;\n\t\t\t}\n\t\t} else if (lastComputedValue !== computed2) {\n\t\t\tlastComputedValue = computed2;\n\t\t\tisOverridden = false;\n\t\t}\n\t\treturn lastComputedValue;\n\t}));\n\telse linkedObservable = subject.asObservable().pipe(filter(() => !init));\n\tconst fn = /* @__PURE__ */ __name$2(function() {\n\t\ttrackDependency(fn);\n\t\tif (isOverridden && dependencies.size > 0) {\n\t\t\tif (overrideDepVersion !== depVersion) {\n\t\t\t\tconst computed2 = computeFunction();\n\t\t\t\tisOverridden = false;\n\t\t\t\toverriddenValue = void 0;\n\t\t\t\tlastComputedValue = computed2;\n\t\t\t\toverrideDepVersion = null;\n\t\t\t\treturn computed2;\n\t\t\t}\n\t\t\treturn overriddenValue;\n\t\t}\n\t\tif (isOverridden) return overriddenValue;\n\t\tif (dependencies.size === 0) lastComputedValue = computeFunction();\n\t\treturn lastComputedValue;\n\t}, \"fn\");\n\tfn.observable = new Observable((observer) => {\n\t\tconst depSubscription = linkedObservable.subscribe((value) => {\n\t\t\tif (dependencies.size > 0) {\n\t\t\t\tdepVersion++;\n\t\t\t\tisOverridden = false;\n\t\t\t\toverrideDepVersion = null;\n\t\t\t\tlastComputedValue = value;\n\t\t\t} else lastComputedValue = value;\n\t\t\tobserver.next(value);\n\t\t});\n\t\tlet subjectSubscription;\n\t\tif (dependencies.size === 0) subjectSubscription = subject.pipe(filter(() => !init)).subscribe((value) => {\n\t\t\tobserver.next(value);\n\t\t});\n\t\tobserver.next(lastComputedValue);\n\t\treturn () => {\n\t\t\tdepSubscription.unsubscribe();\n\t\t\tif (subjectSubscription) subjectSubscription.unsubscribe();\n\t\t};\n\t});\n\tfn.subscription = fn.observable.subscribe(() => {});\n\tfn.dependencies = dependencies;\n\tfn._subject = subject;\n\tfn.set = (value) => {\n\t\tif (!isOverridden) {\n\t\t\toverrideDepVersion = depVersion;\n\t\t\tif (computationFn && sourceSignal) previousValue = {\n\t\t\t\tsource: untracked(() => {\n\t\t\t\t\tif (typeof sourceSignal === \"function\") {\n\t\t\t\t\t\tconst source = sourceSignal;\n\t\t\t\t\t\treturn isSignal(source) ? source() : sourceSignal();\n\t\t\t\t\t}\n\t\t\t\t\treturn sourceSignal();\n\t\t\t\t}),\n\t\t\t\tvalue\n\t\t\t};\n\t\t}\n\t\tisOverridden = true;\n\t\toverriddenValue = value;\n\t\tlastComputedValue = value;\n\t\tsubject.next(value);\n\t};\n\treactiveStore.currentSubscriptionsTracker?.(fn.subscription);\n\tinit = false;\n\treturn fn;\n}\n__name$2(linkedSignal, \"linkedSignal\");\nfunction untracked(fn) {\n\tconst prevDepTracker = reactiveStore.currentDependencyTracker;\n\tconst prevSubTracker = reactiveStore.currentSubscriptionsTracker;\n\treactiveStore.currentDependencyTracker = null;\n\treactiveStore.currentSubscriptionsTracker = null;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\treactiveStore.currentDependencyTracker = prevDepTracker;\n\t\treactiveStore.currentSubscriptionsTracker = prevSubTracker;\n\t}\n}\n__name$2(untracked, \"untracked\");\nfunction effect(fn) {\n\tfn[\"isEffect\"] = true;\n\treturn computed(fn);\n}\n__name$2(effect, \"effect\");\n//#endregion\n//#region ../../node_modules/.pnpm/@signe+sync@2.8.3/node_modules/@signe/sync/dist/chunk-7QVYU63E.js\nvar __defProp$1 = Object.defineProperty;\nvar __name$1 = (target, value) => __defProp$1(target, \"name\", {\n\tvalue,\n\tconfigurable: true\n});\n//#endregion\n//#region ../../node_modules/.pnpm/@signe+sync@2.8.3/node_modules/@signe/sync/dist/index.js\nfunction isFunction$1(val) {\n\treturn {}.toString.call(val) === \"[object Function]\";\n}\n__name$1(isFunction$1, \"isFunction\");\nfunction isClass(obj) {\n\treturn typeof obj === \"function\" && obj.prototype && obj.prototype.constructor === obj;\n}\n__name$1(isClass, \"isClass\");\nvar isObject = /* @__PURE__ */ __name$1((item) => item && typeof item === \"object\" && !Array.isArray(item) && item !== null, \"isObject\");\nfunction isInstanceOfClass(value) {\n\tif (value === null || typeof value !== \"object\" || value === void 0 || Array.isArray(value)) return false;\n\treturn Object.getPrototypeOf(value) !== Object.prototype;\n}\n__name$1(isInstanceOfClass, \"isInstanceOfClass\");\nfunction generateShortUUID() {\n\tconst chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\tlet uuid = \"\";\n\tfor (let i = 0; i < 8; i++) {\n\t\tconst randomIndex = Math.floor(Math.random() * 62);\n\t\tuuid += chars[randomIndex];\n\t}\n\treturn uuid;\n}\n__name$1(generateShortUUID, \"generateShortUUID\");\nvar DELETE_TOKEN = \"$delete\";\nfunction createStatesSnapshot(instance) {\n\tlet persistObject = {};\n\tif (instance?.$snapshot) for (const key of instance.$snapshot.keys()) {\n\t\tconst signal = instance.$snapshot.get(key);\n\t\tconst persist2 = signal.options.persist ?? true;\n\t\tlet value = signal();\n\t\tif (isObject(value) || Array.isArray(value)) continue;\n\t\tif (persist2) persistObject[key] = value;\n\t}\n\treturn persistObject;\n}\n__name$1(createStatesSnapshot, \"createStatesSnapshot\");\nvar SNAPSHOT_SKIP = Symbol(\"snapshot-skip\");\nvar serializeSnapshotDeep = /* @__PURE__ */ __name$1((value, path, options, seen) => {\n\tif (isSignal(value)) return serializeSnapshotDeep(value(), path, options, seen);\n\tif (value instanceof Map) return SNAPSHOT_SKIP;\n\tif (options.filter && !options.filter(value, path)) return SNAPSHOT_SKIP;\n\tif (value instanceof Date) return options.dateToString ? options.dateToString(value) : value.toISOString();\n\tif (value && typeof value === \"object\") {\n\t\tif (seen.has(value)) return SNAPSHOT_SKIP;\n\t\tseen.add(value);\n\t\tif (Array.isArray(value)) {\n\t\t\tconst result2 = [];\n\t\t\tvalue.forEach((item, index) => {\n\t\t\t\tconst serialized = serializeSnapshotDeep(item, path ? `${path}.${index}` : String(index), options, seen);\n\t\t\t\tif (serialized !== SNAPSHOT_SKIP) result2.push(serialized);\n\t\t\t});\n\t\t\treturn result2;\n\t\t}\n\t\tconst result = {};\n\t\tconst idKey = isInstanceOfClass(value) ? value.constructor?._propertyMetadata?.get(\"id\") : void 0;\n\t\tconst entries = Object.entries(value).filter(([key]) => isInstanceOfClass(value) ? key.startsWith(\"__\") || (idKey ? key === idKey : false) : true);\n\t\tfor (const [key, childValue] of entries) {\n\t\t\tconst normalizedKey = key.startsWith(\"__\") ? key.slice(2) : key;\n\t\t\tconst serialized = serializeSnapshotDeep(childValue, path ? `${path}.${normalizedKey}` : normalizedKey, options, seen);\n\t\t\tif (serialized !== SNAPSHOT_SKIP) result[normalizedKey] = serialized;\n\t\t}\n\t\treturn result;\n\t}\n\treturn value;\n}, \"serializeSnapshotDeep\");\nfunction createStatesSnapshotDeep(instance, options = {}) {\n\tconst persistObject = {};\n\tif (instance?.$snapshot) for (const key of instance.$snapshot.keys()) {\n\t\tconst signal = instance.$snapshot.get(key);\n\t\tif (!(signal.options.persist ?? true)) continue;\n\t\tconst serialized = serializeSnapshotDeep(signal(), key, options, /* @__PURE__ */ new WeakSet());\n\t\tif (serialized !== SNAPSHOT_SKIP) persistObject[key] = serialized;\n\t}\n\treturn persistObject;\n}\n__name$1(createStatesSnapshotDeep, \"createStatesSnapshotDeep\");\nfunction setMetadata(target, key, value) {\n\tconst propId = target.constructor._propertyMetadata?.get(key);\n\tif (propId) if (isSignal(target[propId])) target[propId].set(value);\n\telse target[propId] = value;\n}\n__name$1(setMetadata, \"setMetadata\");\nvar createSyncClass = /* @__PURE__ */ __name$1((currentClass, parentKey = null, parentClass = null, path = \"\") => {\n\tcurrentClass.$path = path;\n\tif (parentClass) currentClass.$valuesChanges = parentClass.$valuesChanges;\n\tif (parentKey) setMetadata(currentClass, \"id\", parentKey);\n\tif (currentClass.$snapshot) for (const key of currentClass.$snapshot.keys()) {\n\t\tconst signal = currentClass.$snapshot.get(key);\n\t\tconst syncToClient = signal.options?.syncToClient ?? true;\n\t\tconst persist2 = signal.options?.persist ?? true;\n\t\tconst transform = signal.options?.transform;\n\t\tlet signalValue = signal();\n\t\tif (transform) signalValue = transform(signalValue);\n\t\tif (isObject(signalValue) || Array.isArray(signalValue)) signalValue = { ...signalValue };\n\t\tconst transformedValue = signalValue;\n\t\tconst newPath = (path ? path + \".\" : \"\") + key;\n\t\tif (syncToClient) currentClass.$valuesChanges.set(newPath, transformedValue);\n\t\tif (persist2) {\n\t\t\tif (parentClass) currentClass.$valuesChanges.setPersist(path, transformedValue);\n\t\t}\n\t\tif (isComputed(signal)) signal.observable.subscribe((newValue) => {\n\t\t\tif (syncToClient) {\n\t\t\t\tconst transformedNewValue = transform ? transform(newValue) : newValue;\n\t\t\t\tcurrentClass.$valuesChanges.set(newPath, transformedNewValue);\n\t\t\t}\n\t\t});\n\t}\n}, \"createSyncClass\");\nvar type = /* @__PURE__ */ __name$1((_signal, path, options = {}, currentInstance) => {\n\tconst { syncToClient = true, persist: persist2 = true, transform } = options;\n\tlet init = true;\n\tconst handleObjectSubject = /* @__PURE__ */ __name$1((value, propPath) => {\n\t\tconst newPath = `${propPath}${value.key ? `.${value.key}` : \"\"}`;\n\t\tif ([\n\t\t\t\"add\",\n\t\t\t\"reset\",\n\t\t\t\"update\"\n\t\t].includes(value.type)) if (isInstanceOfClass(value.value)) createSyncClass(value.value, value.key, currentInstance, newPath);\n\t\telse if (value.type === \"update\" && (isObject(value.value) || Array.isArray(value.value))) createSyncClass(value.value, value.key, currentInstance, newPath);\n\t\telse savePath(newPath, value.value);\n\t\telse if (value.type === \"remove\") savePath(newPath, DELETE_TOKEN);\n\t}, \"handleObjectSubject\");\n\tconst handleArraySubject = /* @__PURE__ */ __name$1((value, propPath) => {\n\t\tif (value.type === \"reset\" && Array.isArray(value.items)) {\n\t\t\tvalue.items.forEach((item, index) => {\n\t\t\t\tconst newPath2 = `${propPath}.${index}`;\n\t\t\t\tif (isInstanceOfClass(item)) createSyncClass(item, value.key, currentInstance, newPath2);\n\t\t\t\telse savePath(newPath2, item);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst newPath = `${propPath}.${value.index}`;\n\t\tconst firstItem = value.items?.[0];\n\t\tif ([\"add\", \"update\"].includes(value.type) && firstItem !== void 0) if (isInstanceOfClass(firstItem)) createSyncClass(firstItem, value.key, currentInstance, newPath);\n\t\telse if (value.type === \"update\" && (isObject(firstItem) || Array.isArray(firstItem))) createSyncClass(firstItem, value.key, currentInstance, newPath);\n\t\telse savePath(newPath, firstItem);\n\t\telse if (value.type === \"remove\") savePath(newPath, DELETE_TOKEN);\n\t}, \"handleArraySubject\");\n\tconst savePath = /* @__PURE__ */ __name$1((propPath, value) => {\n\t\tconst transformedValue = transform && value !== \"$delete\" ? transform(value) : value;\n\t\tif (syncToClient) currentInstance.$valuesChanges.set(propPath, transformedValue);\n\t\tif (persist2 && currentInstance.$path !== void 0) currentInstance.$valuesChanges.setPersist(transformedValue == \"$delete\" ? propPath : currentInstance.$path, transformedValue);\n\t}, \"savePath\");\n\tconst setupSubscription = /* @__PURE__ */ __name$1((signal, signalPath) => {\n\t\tif (!isSignal(signal)) return;\n\t\tif (syncToClient && currentInstance.$valuesChanges) {\n\t\t\tconst initialValue = signal();\n\t\t\tconst transformedInitialValue = transform ? transform(initialValue) : initialValue;\n\t\t\tcurrentInstance.$valuesChanges.set(signalPath, transformedInitialValue);\n\t\t}\n\t\tsignal.options = options;\n\t\tsignal.observable.subscribe((value) => {\n\t\t\tif (init) return;\n\t\t\tif (currentInstance.$path !== void 0) {\n\t\t\t\tconst fullPath = `${currentInstance.$path ? currentInstance.$path + \".\" : \"\"}${signalPath}`;\n\t\t\t\tif (isComputed(signal)) savePath(fullPath, value);\n\t\t\t\telse if (isObjectSubject(signal._subject)) handleObjectSubject(value, fullPath);\n\t\t\t\telse if (isArraySubject(signal._subject)) handleArraySubject(value, fullPath);\n\t\t\t\telse savePath(fullPath, value);\n\t\t\t}\n\t\t});\n\t\tif (!currentInstance.$snapshot) currentInstance.$snapshot = /* @__PURE__ */ new Map();\n\t\tcurrentInstance.$snapshot.set(path, signal);\n\t}, \"setupSubscription\");\n\tif (!isSignal(_signal)) {\n\t\tif (_signal && typeof _signal === \"object\" && !Array.isArray(_signal)) {\n\t\t\tfor (const key in _signal) if (Object.prototype.hasOwnProperty.call(_signal, key)) {\n\t\t\t\tconst value = _signal[key];\n\t\t\t\tconst propertyPath = `${path}.${key}`;\n\t\t\t\tif (isSignal(value)) setupSubscription(value, propertyPath);\n\t\t\t\telse if (value && typeof value === \"object\" && !Array.isArray(value)) type(value, propertyPath, options, currentInstance);\n\t\t\t}\n\t\t\tinit = false;\n\t\t}\n\t\treturn _signal;\n\t}\n\tsetupSubscription(_signal, path);\n\tinit = false;\n\treturn _signal;\n}, \"type\");\nfunction sync(options) {\n\tlet classType;\n\tlet persist2 = true;\n\tlet syncToClient = true;\n\tlet transform;\n\tif (typeof options === \"function\") classType = options;\n\telse if (typeof options === \"object\") {\n\t\tclassType = options.classType;\n\t\tif (options.hasOwnProperty(\"persist\")) persist2 = options.persist;\n\t\tif (options.hasOwnProperty(\"syncToClient\")) syncToClient = options.syncToClient;\n\t\tif (options.hasOwnProperty(\"transform\")) transform = options.transform;\n\t}\n\treturn function(target, propertyKey) {\n\t\tconst privatePropertyKey = `__${propertyKey}`;\n\t\tObject.defineProperty(target, propertyKey, {\n\t\t\tget: /* @__PURE__ */ __name$1(function() {\n\t\t\t\treturn this[privatePropertyKey];\n\t\t\t}, \"getter\"),\n\t\t\tset: /* @__PURE__ */ __name$1(function(newVal) {\n\t\t\t\tthis[privatePropertyKey] = type(newVal, propertyKey, {\n\t\t\t\t\tclassType,\n\t\t\t\t\tpersist: persist2,\n\t\t\t\t\tsyncToClient,\n\t\t\t\t\ttransform\n\t\t\t\t}, this);\n\t\t\t}, \"setter\"),\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true\n\t\t});\n\t};\n}\n__name$1(sync, \"sync\");\nfunction id() {\n\treturn function(target, propertyKey) {\n\t\tif (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n\t\ttarget.constructor._propertyMetadata.set(\"id\", propertyKey);\n\t};\n}\n__name$1(id, \"id\");\nfunction users(options) {\n\treturn function(target, propertyKey) {\n\t\tif (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n\t\ttarget.constructor._propertyMetadata.set(\"users\", propertyKey);\n\t\tsync(options)(target, propertyKey);\n\t};\n}\n__name$1(users, \"users\");\nfunction persist() {\n\treturn sync({\n\t\tpersist: true,\n\t\tsyncToClient: false\n\t});\n}\n__name$1(persist, \"persist\");\nfunction connected() {\n\treturn function(target, propertyKey) {\n\t\tif (!target.constructor._propertyMetadata) target.constructor._propertyMetadata = /* @__PURE__ */ new Map();\n\t\ttarget.constructor._propertyMetadata.set(\"connected\", propertyKey);\n\t\tsync({ persist: false })(target, propertyKey);\n\t};\n}\n__name$1(connected, \"connected\");\nfunction load(rootInstance, values, valueIsObject) {\n\tif (valueIsObject) loadFromObject(rootInstance, values);\n\telse loadFromPaths(rootInstance, values);\n}\n__name$1(load, \"load\");\nfunction loadFromPaths(rootInstance, values) {\n\tfor (const [path, value] of Object.entries(values)) loadValue(rootInstance, path.split(\".\"), value);\n}\n__name$1(loadFromPaths, \"loadFromPaths\");\nfunction loadFromObject(rootInstance, values, currentPath = \"\") {\n\tfor (let key in values) {\n\t\tconst value = values[key];\n\t\tconst newPath = currentPath ? `${currentPath}.${key}` : key;\n\t\tif (typeof value === \"object\" && !Array.isArray(value) && value !== null) loadFromObject(rootInstance, value, newPath);\n\t\telse loadValue(rootInstance, newPath.split(\".\"), value);\n\t}\n}\n__name$1(loadFromObject, \"loadFromObject\");\nfunction loadValue(rootInstance, parts, value) {\n\tlet current = rootInstance;\n\tfor (let i = 0; i < parts.length; i++) {\n\t\tconst part = parts[i];\n\t\tif (i === parts.length - 1) if (value == \"$delete\") {\n\t\t\tif (isSignal(current)) current = current();\n\t\t\tReflect.deleteProperty(current, part);\n\t\t} else if (current[part]?._subject) current[part].set(value);\n\t\telse if (isSignal(current) && Array.isArray(current()) && !isNaN(Number(part))) current()[Number(part)] = value;\n\t\telse current[part] = value;\n\t\telse {\n\t\t\tif (isSignal(current)) current = current();\n\t\t\tif (current[part] === void 0) {\n\t\t\t\tconst classType = getByPath(rootInstance, parts.slice(0, i).join(\".\"))?.options?.classType;\n\t\t\t\tif (classType) {\n\t\t\t\t\tcurrent[part] = !isClass(classType) ? classType(part) : new classType();\n\t\t\t\t\tsetMetadata(current[part], \"id\", part);\n\t\t\t\t} else current[part] = {};\n\t\t\t}\n\t\t\tcurrent = current[part];\n\t\t}\n\t}\n}\n__name$1(loadValue, \"loadValue\");\nfunction getByPath(root, path) {\n\tconst parts = path.split(\".\");\n\tlet current = root;\n\tfor (const part of parts) {\n\t\tif (isSignal(current)) current = current();\n\t\tif (current[part]) current = current[part];\n\t\telse return;\n\t}\n\treturn current;\n}\n__name$1(getByPath, \"getByPath\");\n//#endregion\n//#region \\0@oxc-project+runtime@0.122.0/helpers/decorateMetadata.js\nfunction __decorateMetadata(k, v) {\n\tif (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n}\n//#endregion\n//#region \\0@oxc-project+runtime@0.122.0/helpers/decorate.js\nfunction __decorate(decorators, target, key, desc) {\n\tvar c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n\tif (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n\telse for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n\treturn c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n//#endregion\n//#region ../common/src/database/Item.ts\nvar Item = class {\n\tconstructor(data) {\n\t\tthis.id = signal(\"\");\n\t\tthis.name = signal(\"\");\n\t\tthis.description = signal(\"\");\n\t\tthis.price = signal(0);\n\t\tthis.atk = signal(0);\n\t\tthis.pdef = signal(0);\n\t\tthis.sdef = signal(0);\n\t\tthis.icon = signal(\"\");\n\t\tthis.quantity = signal(1);\n\t\tthis.onAdd = () => {};\n\t\tthis.description.set(data?.description ?? \"\");\n\t\tthis.price.set(data?.price ?? 0);\n\t\tthis.name.set(data?.name ?? \"\");\n\t\tthis.atk.set(data?.atk ?? 0);\n\t\tthis.pdef.set(data?.pdef ?? 0);\n\t\tthis.sdef.set(data?.sdef ?? 0);\n\t\tthis.icon.set(data?.icon ?? \"\");\n\t\tthis.onAdd = data?.onAdd?.bind(this) ?? (() => {});\n\t}\n};\n__decorate([id(), __decorateMetadata(\"design:type\", Object)], Item.prototype, \"id\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], Item.prototype, \"name\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], Item.prototype, \"icon\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], Item.prototype, \"quantity\", void 0);\n//#endregion\n//#region ../common/src/database/Skill.ts\nvar Skill = class {\n\tconstructor(data) {\n\t\tthis.id = signal(\"\");\n\t\tthis.name = signal(\"\");\n\t\tthis.description = signal(\"\");\n\t\tthis.spCost = signal(0);\n\t\tthis.icon = signal(\"\");\n\t\tthis.hitRate = signal(0);\n\t\tthis.power = signal(0);\n\t\tthis.coefficient = signal({});\n\t\tthis.id.set(data?.id ?? \"\");\n\t\tthis.name.set(data?.name ?? \"\");\n\t\tthis.description.set(data?.description ?? \"\");\n\t\tthis.spCost.set(data?.spCost ?? 0);\n\t\tthis.hitRate.set(data?.hitRate ?? 0);\n\t\tthis.power.set(data?.power ?? 0);\n\t\tthis.coefficient.set(data?.coefficient ?? {});\n\t\tthis.icon.set(data?.icon ?? \"\");\n\t}\n};\n__decorate([id(), __decorateMetadata(\"design:type\", Object)], Skill.prototype, \"id\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], Skill.prototype, \"name\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], Skill.prototype, \"spCost\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], Skill.prototype, \"icon\", void 0);\n//#endregion\n//#region ../common/src/Player.ts\nvar Direction = /* @__PURE__ */ function(Direction) {\n\tDirection[\"Up\"] = \"up\";\n\tDirection[\"Down\"] = \"down\";\n\tDirection[\"Left\"] = \"left\";\n\tDirection[\"Right\"] = \"right\";\n\treturn Direction;\n}({});\nvar RpgCommonPlayer = class {\n\tconstructor() {\n\t\tthis.name = signal(\"\");\n\t\tthis.type = signal(\"\");\n\t\tthis.x = signal(0);\n\t\tthis.y = signal(0);\n\t\tthis.z = signal(0);\n\t\tthis.tint = signal(\"white\");\n\t\tthis.direction = signal(Direction.Down);\n\t\tthis.speed = signal(4);\n\t\tthis.graphics = signal([]);\n\t\tthis.canMove = signal(true);\n\t\tthis.hitbox = signal({\n\t\t\tw: 32,\n\t\t\th: 32\n\t\t});\n\t\tthis._gold = signal(0);\n\t\tthis.animationName = signal(\"stand\");\n\t\tthis.hpSignal = signal(0);\n\t\tthis.spSignal = signal(0);\n\t\tthis._exp = signal(0);\n\t\tthis._level = signal(1);\n\t\tthis._class = signal({});\n\t\tthis.items = signal([]);\n\t\tthis.equipments = signal([]);\n\t\tthis.states = signal([]);\n\t\tthis.skills = signal([]);\n\t\tthis._effects = signal([]);\n\t\tthis._through = signal(false);\n\t\tthis._throughOtherPlayer = signal(true);\n\t\tthis._throughEvent = signal(false);\n\t\tthis._frequency = signal(0);\n\t\tthis._frames = signal([]);\n\t\tthis.componentsTop = signal(null);\n\t\tthis.componentsBottom = signal(null);\n\t\tthis.componentsCenter = signal(null);\n\t\tthis.componentsLeft = signal(null);\n\t\tthis.componentsRight = signal(null);\n\t\tthis.isConnected = signal(false);\n\t\tthis._intendedDirection = null;\n\t\tthis._directionFixed = signal(false);\n\t\tthis._animationFixed = signal(false);\n\t\tthis.pendingInputs = [];\n\t}\n\t/**\n\t* Get whether direction changes are locked\n\t* \n\t* @returns True if direction is locked and cannot be changed automatically\n\t* \n\t* @example\n\t* ```ts\n\t* if (player.directionFixed) {\n\t* // Direction is locked, won't change automatically\n\t* }\n\t* ```\n\t*/\n\tget directionFixed() {\n\t\treturn this._directionFixed();\n\t}\n\t/**\n\t* Set whether direction changes are locked\n\t* \n\t* When set to true, the player's direction will not change automatically\n\t* during movement or from physics engine callbacks.\n\t* \n\t* @param value - True to lock direction, false to allow automatic changes\n\t* \n\t* @example\n\t* ```ts\n\t* // Lock direction during a special animation\n\t* player.directionFixed = true;\n\t* player.setAnimation('attack');\n\t* // ... later\n\t* player.directionFixed = false;\n\t* ```\n\t*/\n\tset directionFixed(value) {\n\t\tthis._directionFixed.set(value);\n\t}\n\t/**\n\t* Get whether animation changes are locked\n\t* \n\t* @returns True if animation is locked and cannot be changed automatically\n\t* \n\t* @example\n\t* ```ts\n\t* if (player.animationFixed) {\n\t* // Animation is locked, won't change automatically\n\t* }\n\t* ```\n\t*/\n\tget animationFixed() {\n\t\treturn this._animationFixed();\n\t}\n\t/**\n\t* Set whether animation changes are locked\n\t* \n\t* When set to true, the player's animation will not change automatically\n\t* during movement or from physics engine callbacks.\n\t* \n\t* @param value - True to lock animation, false to allow automatic changes\n\t* \n\t* @example\n\t* ```ts\n\t* // Lock animation during a special skill\n\t* player.animationFixed = true;\n\t* player.setAnimation('skill');\n\t* // ... later\n\t* player.animationFixed = false;\n\t* ```\n\t*/\n\tset animationFixed(value) {\n\t\tthis._animationFixed.set(value);\n\t}\n\t/**\n\t* Change the player's facing direction\n\t*\n\t* Updates the direction the player is facing, which affects animations\n\t* and directional abilities. This should be called when the player\n\t* intends to move in a specific direction, not when they are pushed\n\t* by physics or sliding.\n\t* \n\t* If `directionFixed` is true, this method will not change the direction.\n\t*\n\t* @param direction - The new direction to face\n\t*\n\t* @example\n\t* ```ts\n\t* // Player presses right arrow key\n\t* player.changeDirection(Direction.Right);\n\t* \n\t* // Lock direction to prevent automatic changes\n\t* player.directionFixed = true;\n\t* player.changeDirection(Direction.Up); // This will be ignored\n\t* ```\n\t*/\n\tchangeDirection(direction) {\n\t\tif (this._directionFixed()) return;\n\t\tthis.direction.set(direction);\n\t}\n\t/**\n\t* Get the current facing direction\n\t*\n\t* @returns Current direction the player is facing\n\t*\n\t* @example\n\t* ```ts\n\t* const currentDirection = player.getDirection();\n\t* if (currentDirection === Direction.Up) {\n\t* // Player is facing up\n\t* }\n\t* ```\n\t*/\n\tgetDirection() {\n\t\treturn this.direction();\n\t}\n};\n__decorate([id(), __decorateMetadata(\"design:type\", String)], RpgCommonPlayer.prototype, \"id\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"name\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"type\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"x\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"y\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"z\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"tint\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"direction\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"speed\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"graphics\", void 0);\n__decorate([sync({ persist: false }), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"canMove\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"hitbox\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_gold\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"animationName\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"hpSignal\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"spSignal\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_exp\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_level\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_class\", void 0);\n__decorate([sync(Item), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"items\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"equipments\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"states\", void 0);\n__decorate([sync(Skill), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"skills\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_effects\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_through\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_throughOtherPlayer\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_throughEvent\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_frequency\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"_frames\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"componentsTop\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"componentsBottom\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"componentsCenter\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"componentsLeft\", void 0);\n__decorate([sync(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"componentsRight\", void 0);\n__decorate([connected(), __decorateMetadata(\"design:type\", Object)], RpgCommonPlayer.prototype, \"isConnected\", void 0);\n//#endregion\n//#region ../common/src/Shape.ts\n/**\n* Represents a zone shape attached to a player or event\n* \n* Shapes are used for detection zones, vision cones, and area-of-effect abilities.\n* They are backed by the physic engine's zone system for accurate detection.\n* \n* @example\n* ```ts\n* // Create a shape attached to a player\n* const visionShape = player.attachShape(\"vision\", {\n* radius: 150,\n* angle: 120,\n* direction: Direction.Right,\n* name: \"Vision Zone\",\n* properties: { type: \"detection\" }\n* });\n* \n* // Check if a player is in the shape\n* if (visionShape.playerIsIn(otherPlayer)) {\n* console.log(\"Player detected!\");\n* }\n* \n* // Get the owner of the shape\n* const owner = visionShape.getPlayerOwner();\n* ```\n*/\nvar RpgShape = class {\n\t/**\n\t* Creates a new RpgShape instance\n\t* \n\t* @param config - Shape configuration\n\t*/\n\tconstructor(config) {\n\t\tthis.name = config.name;\n\t\tthis.positioning = config.positioning;\n\t\tthis.width = config.width;\n\t\tthis.height = config.height;\n\t\tthis.x = config.x;\n\t\tthis.y = config.y;\n\t\tthis.properties = config.properties;\n\t\tthis._playerOwner = config.playerOwner;\n\t\tthis._physicZoneId = config.physicZoneId;\n\t\tthis._map = config.map;\n\t}\n\t/**\n\t* Checks if a player is currently inside this shape\n\t* \n\t* @param player - The player to check\n\t* @returns True if the player is inside the shape\n\t* \n\t* @example\n\t* ```ts\n\t* const shape = player.attachShape(\"detection\", { radius: 100 });\n\t* if (shape.playerIsIn(otherPlayer)) {\n\t* console.log(\"Player detected in zone\");\n\t* }\n\t* ```\n\t*/\n\tplayerIsIn(player) {\n\t\tif (!this._map) return false;\n\t\tconst entities = this._map.physic.getZoneManager().getEntitiesInZone(this._physicZoneId);\n\t\tif (!entities || entities.length === 0) return false;\n\t\tconst playerEntity = this._map.physic.getEntityByUUID(player.id);\n\t\tif (!playerEntity) return false;\n\t\treturn entities.some((entity) => entity.uuid === playerEntity.uuid);\n\t}\n\t/**\n\t* Gets the player that owns this shape\n\t* \n\t* Returns the player on which `attachShape()` was called to create this shape.\n\t* \n\t* @returns The player owner or undefined if not available\n\t* \n\t* @example\n\t* ```ts\n\t* const shape = player.attachShape(\"vision\", { radius: 150 });\n\t* const owner = shape.getPlayerOwner();\n\t* console.log(owner?.name); // Player's name\n\t* ```\n\t*/\n\tgetPlayerOwner() {\n\t\treturn this._playerOwner;\n\t}\n\t/**\n\t* Updates the shape's position\n\t* \n\t* @internal\n\t*/\n\t_updatePosition(x, y) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t}\n};\n//#endregion\n//#region ../physic/src/core/math/Vector2.ts\n/**\n* 2D Vector class with deterministic operations\n* \n* All operations are designed to be deterministic and avoid floating-point\n* precision issues. Methods support both in-place mutations and immutable operations.\n* \n* @example\n* ```typescript\n* const v1 = new Vector2(1, 2);\n* const v2 = new Vector2(3, 4);\n* const sum = v1.add(v2); // Returns new vector (4, 6)\n* v1.addInPlace(v2); // Mutates v1 to (4, 6)\n* ```\n*/\nvar Vector2 = class Vector2 {\n\t/**\n\t* Creates a new Vector2\n\t* \n\t* @param x - X component (default: 0)\n\t* @param y - Y component (default: 0)\n\t*/\n\tconstructor(x = 0, y = 0) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t}\n\t/**\n\t* Creates a copy of this vector\n\t* \n\t* @returns A new Vector2 with the same values\n\t*/\n\tclone() {\n\t\treturn new Vector2(this.x, this.y);\n\t}\n\t/**\n\t* Sets the components of this vector\n\t* \n\t* @param x - X component\n\t* @param y - Y component\n\t* @returns This vector for chaining\n\t*/\n\tset(x, y) {\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\treturn this;\n\t}\n\t/**\n\t* Copies values from another vector\n\t* \n\t* @param other - Vector to copy from\n\t* @returns This vector for chaining\n\t*/\n\tcopyFrom(other) {\n\t\tthis.x = other.x;\n\t\tthis.y = other.y;\n\t\treturn this;\n\t}\n\t/**\n\t* Adds another vector to this vector (immutable)\n\t* \n\t* @param other - Vector to add\n\t* @returns New vector with the result\n\t*/\n\tadd(other) {\n\t\treturn new Vector2(this.x + other.x, this.y + other.y);\n\t}\n\t/**\n\t* Adds another vector to this vector (in-place)\n\t* \n\t* @param other - Vector to add\n\t* @returns This vector for chaining\n\t*/\n\taddInPlace(other) {\n\t\tthis.x += other.x;\n\t\tthis.y += other.y;\n\t\treturn this;\n\t}\n\t/**\n\t* Subtracts another vector from this vector (immutable)\n\t* \n\t* @param other - Vector to subtract\n\t* @returns New vector with the result\n\t*/\n\tsub(other) {\n\t\treturn new Vector2(this.x - other.x, this.y - other.y);\n\t}\n\t/**\n\t* Subtracts another vector from this vector (in-place)\n\t* \n\t* @param other - Vector to subtract\n\t* @returns This vector for chaining\n\t*/\n\tsubInPlace(other) {\n\t\tthis.x -= other.x;\n\t\tthis.y -= other.y;\n\t\treturn this;\n\t}\n\t/**\n\t* Multiplies this vector by a scalar (immutable)\n\t* \n\t* @param scalar - Scalar value\n\t* @returns New vector with the result\n\t*/\n\tmul(scalar) {\n\t\treturn new Vector2(this.x * scalar, this.y * scalar);\n\t}\n\t/**\n\t* Multiplies this vector by a scalar (in-place)\n\t* \n\t* @param scalar - Scalar value\n\t* @returns This vector for chaining\n\t*/\n\tmulInPlace(scalar) {\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\treturn this;\n\t}\n\t/**\n\t* Divides this vector by a scalar (immutable)\n\t* \n\t* @param scalar - Scalar value (must not be zero)\n\t* @returns New vector with the result\n\t*/\n\tdiv(scalar) {\n\t\treturn new Vector2(this.x / scalar, this.y / scalar);\n\t}\n\t/**\n\t* Divides this vector by a scalar (in-place)\n\t* \n\t* @param scalar - Scalar value (must not be zero)\n\t* @returns This vector for chaining\n\t*/\n\tdivInPlace(scalar) {\n\t\tthis.x /= scalar;\n\t\tthis.y /= scalar;\n\t\treturn this;\n\t}\n\t/**\n\t* Calculates the dot product with another vector\n\t* \n\t* @param other - Vector to dot with\n\t* @returns Dot product value\n\t*/\n\tdot(other) {\n\t\treturn this.x * other.x + this.y * other.y;\n\t}\n\t/**\n\t* Calculates the 2D cross product (scalar result)\n\t* \n\t* @param other - Vector to cross with\n\t* @returns Cross product value (z-component of 3D cross product)\n\t*/\n\tcross(other) {\n\t\treturn this.x * other.y - this.y * other.x;\n\t}\n\t/**\n\t* Calculates the squared length (faster than length, avoids sqrt)\n\t* \n\t* @returns Squared length\n\t*/\n\tlengthSquared() {\n\t\treturn this.x * this.x + this.y * this.y;\n\t}\n\t/**\n\t* Calculates the length (magnitude) of the vector\n\t* \n\t* @returns Length\n\t*/\n\tlength() {\n\t\treturn Math.sqrt(this.lengthSquared());\n\t}\n\t/**\n\t* Normalizes this vector to unit length (immutable)\n\t* \n\t* @returns New normalized vector\n\t*/\n\tnormalize() {\n\t\tconst len = this.length();\n\t\tif (len === 0) return new Vector2(0, 0);\n\t\treturn this.div(len);\n\t}\n\t/**\n\t* Normalizes this vector to unit length (in-place)\n\t* \n\t* @returns This vector for chaining\n\t*/\n\tnormalizeInPlace() {\n\t\tconst len = this.length();\n\t\tif (len === 0) {\n\t\t\tthis.x = 0;\n\t\t\tthis.y = 0;\n\t\t} else this.divInPlace(len);\n\t\treturn this;\n\t}\n\t/**\n\t* Calculates the distance to another vector\n\t* \n\t* @param other - Target vector\n\t* @returns Distance\n\t*/\n\tdistanceTo(other) {\n\t\treturn this.sub(other).length();\n\t}\n\t/**\n\t* Calculates the squared distance to another vector (faster)\n\t* \n\t* @param other - Target vector\n\t* @returns Squared distance\n\t*/\n\tdistanceToSquared(other) {\n\t\treturn this.sub(other).lengthSquared();\n\t}\n\t/**\n\t* Rotates this vector by an angle in radians (immutable)\n\t* \n\t* @param angle - Angle in radians\n\t* @returns New rotated vector\n\t*/\n\trotate(angle) {\n\t\tconst cos = Math.cos(angle);\n\t\tconst sin = Math.sin(angle);\n\t\treturn new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos);\n\t}\n\t/**\n\t* Rotates this vector by an angle in radians (in-place)\n\t* \n\t* @param angle - Angle in radians\n\t* @returns This vector for chaining\n\t*/\n\trotateInPlace(angle) {\n\t\tconst cos = Math.cos(angle);\n\t\tconst sin = Math.sin(angle);\n\t\tconst x = this.x * cos - this.y * sin;\n\t\tconst y = this.x * sin + this.y * cos;\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\treturn this;\n\t}\n\t/**\n\t* Calculates the angle of this vector in radians\n\t* \n\t* @returns Angle in radians (range: -π to π)\n\t*/\n\tangle() {\n\t\treturn Math.atan2(this.y, this.x);\n\t}\n\t/**\n\t* Linearly interpolates between this vector and another\n\t* \n\t* @param other - Target vector\n\t* @param t - Interpolation factor (0 to 1)\n\t* @returns New interpolated vector\n\t*/\n\tlerp(other, t) {\n\t\treturn new Vector2(this.x + (other.x - this.x) * t, this.y + (other.y - this.y) * t);\n\t}\n\t/**\n\t* Checks if this vector equals another (with epsilon tolerance)\n\t* \n\t* @param other - Vector to compare\n\t* @param epsilon - Tolerance for comparison (default: 1e-5)\n\t* @returns True if vectors are approximately equal\n\t*/\n\tequals(other, epsilon = 1e-5) {\n\t\treturn Math.abs(this.x - other.x) < epsilon && Math.abs(this.y - other.y) < epsilon;\n\t}\n\t/**\n\t* Returns a string representation of this vector\n\t* \n\t* @returns String representation\n\t*/\n\ttoString() {\n\t\treturn `Vector2(${this.x}, ${this.y})`;\n\t}\n\tstatic {\n\t\tthis.ZERO = new Vector2(0, 0);\n\t}\n\tstatic {\n\t\tthis.UNIT_X = new Vector2(1, 0);\n\t}\n\tstatic {\n\t\tthis.UNIT_Y = new Vector2(0, 1);\n\t}\n};\n//#endregion\n//#region ../physic/src/core/math/AABB.ts\n/**\n* Axis-Aligned Bounding Box (AABB)\n* \n* Represents a rectangular bounding box aligned with the coordinate axes.\n* Used for fast collision detection and spatial queries.\n* \n* @example\n* ```typescript\n* const box = new AABB(0, 0, 10, 10);\n* const point = new Vector2(5, 5);\n* if (box.contains(point)) {\n* // Point is inside the box\n* }\n* ```\n*/\nvar AABB = class AABB {\n\t/**\n\t* Creates a new AABB\n\t* \n\t* @param minX - Minimum X coordinate\n\t* @param minY - Minimum Y coordinate\n\t* @param maxX - Maximum X coordinate\n\t* @param maxY - Maximum Y coordinate\n\t*/\n\tconstructor(minX, minY, maxX, maxY) {\n\t\tthis.minX = minX;\n\t\tthis.minY = minY;\n\t\tthis.maxX = maxX;\n\t\tthis.maxY = maxY;\n\t}\n\t/**\n\t* Creates an AABB from center and size\n\t* \n\t* @param centerX - Center X coordinate\n\t* @param centerY - Center Y coordinate\n\t* @param width - Width of the box\n\t* @param height - Height of the box\n\t* @returns New AABB\n\t*/\n\tstatic fromCenterSize(centerX, centerY, width, height) {\n\t\tconst halfWidth = width / 2;\n\t\tconst halfHeight = height / 2;\n\t\treturn new AABB(centerX - halfWidth, centerY - halfHeight, centerX + halfWidth, centerY + halfHeight);\n\t}\n\t/**\n\t* Creates an AABB from a center point and size\n\t* \n\t* @param center - Center point\n\t* @param width - Width of the box\n\t* @param height - Height of the box\n\t* @returns New AABB\n\t*/\n\tstatic fromCenterSizeVector(center, width, height) {\n\t\treturn AABB.fromCenterSize(center.x, center.y, width, height);\n\t}\n\t/**\n\t* Creates a copy of this AABB\n\t* \n\t* @returns New AABB with the same values\n\t*/\n\tclone() {\n\t\treturn new AABB(this.minX, this.minY, this.maxX, this.maxY);\n\t}\n\t/**\n\t* Copies values from another AABB\n\t* \n\t* @param other - AABB to copy from\n\t* @returns This AABB for chaining\n\t*/\n\tcopyFrom(other) {\n\t\tthis.minX = other.minX;\n\t\tthis.minY = other.minY;\n\t\tthis.maxX = other.maxX;\n\t\tthis.maxY = other.maxY;\n\t\treturn this;\n\t}\n\t/**\n\t* Gets the width of the AABB\n\t* \n\t* @returns Width\n\t*/\n\tgetWidth() {\n\t\treturn this.maxX - this.minX;\n\t}\n\t/**\n\t* Gets the height of the AABB\n\t* \n\t* @returns Height\n\t*/\n\tgetHeight() {\n\t\treturn this.maxY - this.minY;\n\t}\n\t/**\n\t* Gets the center point of the AABB\n\t* \n\t* @returns Center point\n\t*/\n\tgetCenter() {\n\t\treturn new Vector2((this.minX + this.maxX) / 2, (this.minY + this.maxY) / 2);\n\t}\n\t/**\n\t* Gets the center X coordinate\n\t* \n\t* @returns Center X\n\t*/\n\tgetCenterX() {\n\t\treturn (this.minX + this.maxX) / 2;\n\t}\n\t/**\n\t* Gets the center Y coordinate\n\t* \n\t* @returns Center Y\n\t*/\n\tgetCenterY() {\n\t\treturn (this.minY + this.maxY) / 2;\n\t}\n\t/**\n\t* Gets the area of the AABB\n\t* \n\t* @returns Area\n\t*/\n\tgetArea() {\n\t\treturn this.getWidth() * this.getHeight();\n\t}\n\t/**\n\t* Checks if a point is inside this AABB\n\t* \n\t* @param x - Point X coordinate\n\t* @param y - Point Y coordinate\n\t* @returns True if point is inside\n\t*/\n\tcontainsPoint(x, y) {\n\t\treturn x >= this.minX && x <= this.maxX && y >= this.minY && y <= this.maxY;\n\t}\n\t/**\n\t* Checks if a vector point is inside this AABB\n\t* \n\t* @param point - Point to check\n\t* @returns True if point is inside\n\t*/\n\tcontains(point) {\n\t\treturn this.containsPoint(point.x, point.y);\n\t}\n\t/**\n\t* Checks if another AABB is completely inside this AABB\n\t* \n\t* @param other - AABB to check\n\t* @returns True if other AABB is inside\n\t*/\n\tcontainsAABB(other) {\n\t\treturn this.minX <= other.minX && this.minY <= other.minY && this.maxX >= other.maxX && this.maxY >= other.maxY;\n\t}\n\t/**\n\t* Checks if this AABB intersects with another AABB\n\t* \n\t* @param other - AABB to check intersection with\n\t* @returns True if AABBs intersect\n\t*/\n\tintersects(other) {\n\t\treturn !(this.maxX < other.minX || this.minX > other.maxX || this.maxY < other.minY || this.minY > other.maxY);\n\t}\n\t/**\n\t* Calculates the intersection AABB with another AABB\n\t* \n\t* @param other - AABB to intersect with\n\t* @returns Intersection AABB, or null if no intersection\n\t*/\n\tintersection(other) {\n\t\tif (!this.intersects(other)) return null;\n\t\treturn new AABB(Math.max(this.minX, other.minX), Math.max(this.minY, other.minY), Math.min(this.maxX, other.maxX), Math.min(this.maxY, other.maxY));\n\t}\n\t/**\n\t* Calculates the union AABB with another AABB\n\t* \n\t* @param other - AABB to union with\n\t* @returns Union AABB\n\t*/\n\tunion(other) {\n\t\treturn new AABB(Math.min(this.minX, other.minX), Math.min(this.minY, other.minY), Math.max(this.maxX, other.maxX), Math.max(this.maxY, other.maxY));\n\t}\n\t/**\n\t* Expands this AABB by a given amount in all directions\n\t* \n\t* @param amount - Amount to expand by\n\t* @returns New expanded AABB\n\t*/\n\texpand(amount) {\n\t\treturn new AABB(this.minX - amount, this.minY - amount, this.maxX + amount, this.maxY + amount);\n\t}\n\t/**\n\t* Expands this AABB by a given amount (in-place)\n\t* \n\t* @param amount - Amount to expand by\n\t* @returns This AABB for chaining\n\t*/\n\texpandInPlace(amount) {\n\t\tthis.minX -= amount;\n\t\tthis.minY -= amount;\n\t\tthis.maxX += amount;\n\t\tthis.maxY += amount;\n\t\treturn this;\n\t}\n\t/**\n\t* Translates this AABB by a given offset\n\t* \n\t* @param dx - X offset\n\t* @param dy - Y offset\n\t* @returns New translated AABB\n\t*/\n\ttranslate(dx, dy) {\n\t\treturn new AABB(this.minX + dx, this.minY + dy, this.maxX + dx, this.maxY + dy);\n\t}\n\t/**\n\t* Translates this AABB by a given offset (in-place)\n\t* \n\t* @param dx - X offset\n\t* @param dy - Y offset\n\t* @returns This AABB for chaining\n\t*/\n\ttranslateInPlace(dx, dy) {\n\t\tthis.minX += dx;\n\t\tthis.minY += dy;\n\t\tthis.maxX += dx;\n\t\tthis.maxY += dy;\n\t\treturn this;\n\t}\n\t/**\n\t* Checks if this AABB equals another (with epsilon tolerance)\n\t* \n\t* @param other - AABB to compare\n\t* @param epsilon - Tolerance for comparison (default: 1e-5)\n\t* @returns True if AABBs are approximately equal\n\t*/\n\tequals(other, epsilon = 1e-5) {\n\t\treturn Math.abs(this.minX - other.minX) < epsilon && Math.abs(this.minY - other.minY) < epsilon && Math.abs(this.maxX - other.maxX) < epsilon && Math.abs(this.maxY - other.maxY) < epsilon;\n\t}\n\t/**\n\t* Returns a string representation of this AABB\n\t* \n\t* @returns String representation\n\t*/\n\ttoString() {\n\t\treturn `AABB(${this.minX}, ${this.minY}, ${this.maxX}, ${this.maxY})`;\n\t}\n\t/**\n\t* Clamps a point to be inside the AABB\n\t* \n\t* @param point - Point to clamp\n\t* @returns Clamped point\n\t*/\n\tclamp(point) {\n\t\treturn new Vector2(Math.max(this.minX, Math.min(this.maxX, point.x)), Math.max(this.minY, Math.min(this.maxY, point.y)));\n\t}\n};\n//#endregion\n//#region ../physic/src/core/types.ts\n/**\n* Entity state flags\n*/\nvar EntityState = /* @__PURE__ */ function(EntityState) {\n\t/** Static entity (does not move) */\n\tEntityState[EntityState[\"Static\"] = 1] = \"Static\";\n\t/** Dynamic entity (affected by forces) */\n\tEntityState[EntityState[\"Dynamic\"] = 2] = \"Dynamic\";\n\t/** Sleeping entity (inactive, not updated) */\n\tEntityState[EntityState[\"Sleeping\"] = 4] = \"Sleeping\";\n\t/** Kinematic entity (moved manually, but can collide) */\n\tEntityState[EntityState[\"Kinematic\"] = 8] = \"Kinematic\";\n\treturn EntityState;\n}({});\n//#endregion\n//#region ../physic/src/utils/uuid.ts\n/**\n* UUID generation utilities\n* \n* Generates UUID v4 for entity identification.\n* Deterministic version can be used for testing.\n*/\n/**\n* Generates a random UUID v4\n* \n* @returns UUID string\n* \n* @example\n* ```typescript\n* const id = generateUUID(); // \"550e8400-e29b-41d4-a716-446655440000\"\n* ```\n*/\nfunction generateUUID() {\n\treturn \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n\t\tconst r = Math.random() * 16 | 0;\n\t\treturn (c === \"x\" ? r : r & 3 | 8).toString(16);\n\t});\n}\n//#endregion\n//#region ../physic/src/physics/Entity.ts\nvar MOVEMENT_EPSILON = .001;\nvar MOVEMENT_EPSILON_SQ = MOVEMENT_EPSILON * MOVEMENT_EPSILON;\nvar DIRECTION_CHANGE_THRESHOLD = 1;\nvar DIRECTION_CHANGE_THRESHOLD_SQ = DIRECTION_CHANGE_THRESHOLD * DIRECTION_CHANGE_THRESHOLD;\n/**\n* Physical entity in the physics world\n* \n* Represents a dynamic or static object that can be affected by forces,\n* collisions, and other physical interactions.\n* \n* ## Creating Static Obstacles\n* \n* To create immovable obstacles (walls, decorations), set `mass` to `0` or `Infinity`.\n* This makes the entity static - it will block other entities but cannot be pushed.\n* \n* @example\n* ```typescript\n* // Dynamic entity (player, movable object)\n* const player = new Entity({\n* position: { x: 0, y: 0 },\n* radius: 10,\n* mass: 1,\n* velocity: { x: 5, y: 0 }\n* });\n* \n* // Static obstacle (wall, tree, decoration)\n* const wall = new Entity({\n* position: { x: 100, y: 0 },\n* width: 20,\n* height: 100,\n* mass: Infinity // or mass: 0\n* });\n* \n* player.applyForce(new Vector2(10, 0));\n* ```\n*/\nvar Entity = class Entity {\n\t/**\n\t* Creates a new entity\n\t* \n\t* @param config - Entity configuration\n\t*/\n\tconstructor(config = {}) {\n\t\tthis.lastCardinalDirection = \"idle\";\n\t\tthis.uuid = config.uuid ?? generateUUID();\n\t\tif (config.position instanceof Vector2) this.position = config.position.clone();\n\t\telse if (config.position) this.position = new Vector2(config.position.x, config.position.y);\n\t\telse this.position = new Vector2(0, 0);\n\t\tthis.currentTile = new Vector2(0, 0);\n\t\tif (config.velocity instanceof Vector2) this.velocity = config.velocity.clone();\n\t\telse if (config.velocity) this.velocity = new Vector2(config.velocity.x, config.velocity.y);\n\t\telse this.velocity = new Vector2(0, 0);\n\t\tthis.rotation = config.rotation ?? 0;\n\t\tthis.angularVelocity = config.angularVelocity ?? 0;\n\t\tthis.mass = config.mass ?? 1;\n\t\tthis.invMass = this.mass > 0 ? 1 / this.mass : 0;\n\t\tthis.radius = config.radius ?? 0;\n\t\tthis.width = config.width ?? 0;\n\t\tthis.height = config.height ?? 0;\n\t\tif (config.capsule !== void 0) this.capsule = config.capsule;\n\t\tthis.continuous = config.continuous ?? false;\n\t\tthis.state = config.state ?? EntityState.Dynamic;\n\t\tthis.restitution = config.restitution ?? .2;\n\t\tthis.friction = config.friction ?? .3;\n\t\tthis.linearDamping = config.linearDamping ?? .01;\n\t\tthis.angularDamping = config.angularDamping ?? .01;\n\t\tthis.maxLinearVelocity = config.maxLinearVelocity ?? Infinity;\n\t\tthis.maxAngularVelocity = config.maxAngularVelocity ?? Infinity;\n\t\tthis.force = new Vector2(0, 0);\n\t\tthis.torque = 0;\n\t\tthis.collisionMask = config.collisionMask ?? 4294967295;\n\t\tthis.collisionCategory = config.collisionCategory ?? 1;\n\t\tthis.timeSinceMovement = 0;\n\t\tthis.sleepThreshold = .5;\n\t\tthis.collisionEnterHandlers = /* @__PURE__ */ new Set();\n\t\tthis.collisionExitHandlers = /* @__PURE__ */ new Set();\n\t\tthis.positionSyncHandlers = /* @__PURE__ */ new Set();\n\t\tthis.directionSyncHandlers = /* @__PURE__ */ new Set();\n\t\tthis.positionSyncHandlers = /* @__PURE__ */ new Set();\n\t\tthis.directionSyncHandlers = /* @__PURE__ */ new Set();\n\t\tthis.movementChangeHandlers = /* @__PURE__ */ new Set();\n\t\tthis.enterTileHandlers = /* @__PURE__ */ new Set();\n\t\tthis.leaveTileHandlers = /* @__PURE__ */ new Set();\n\t\tthis.canEnterTileHandlers = /* @__PURE__ */ new Set();\n\t\tthis.collisionFilterHandlers = /* @__PURE__ */ new Set();\n\t\tthis.resolutionFilterHandlers = /* @__PURE__ */ new Set();\n\t\tthis.wasMoving = this.velocity.lengthSquared() > MOVEMENT_EPSILON_SQ;\n\t}\n\t/**\n\t* Registers a handler fired when this entity starts colliding with another one.\n\t*\n\t* - **Purpose:** offer per-entity collision hooks without subscribing to the global event system.\n\t* - **Design:** lightweight Set-based listeners returning an unsubscribe closure to keep GC pressure low.\n\t*\n\t* @param handler - Collision enter listener\n\t* @returns Unsubscribe closure\n\t* @example\n\t* ```typescript\n\t* const unsubscribe = entity.onCollisionEnter(({ other }) => {\n\t* console.log('Started colliding with', other.uuid);\n\t* });\n\t* ```\n\t*/\n\tonCollisionEnter(handler) {\n\t\tthis.collisionEnterHandlers.add(handler);\n\t\treturn () => this.collisionEnterHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers a handler fired when this entity stops colliding with another one.\n\t*\n\t* - **Purpose:** detect collision separation at the entity level for local gameplay reactions.\n\t* - **Design:** mirrors `onCollisionEnter` with identical lifecycle management semantics.\n\t*\n\t* @param handler - Collision exit listener\n\t* @returns Unsubscribe closure\n\t* @example\n\t* ```typescript\n\t* const unsubscribe = entity.onCollisionExit(({ other }) => {\n\t* console.log('Stopped colliding with', other.uuid);\n\t* });\n\t* ```\n\t*/\n\tonCollisionExit(handler) {\n\t\tthis.collisionExitHandlers.add(handler);\n\t\treturn () => this.collisionExitHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers a handler fired when the entity position changes (x, y).\n\t*\n\t* - **Purpose:** synchronize position changes for logging, rendering, network sync, etc.\n\t* - **Design:** lightweight Set-based listeners returning an unsubscribe closure to keep GC pressure low.\n\t*\n\t* @param handler - Position change listener\n\t* @returns Unsubscribe closure\n\t* @example\n\t* ```typescript\n\t* const unsubscribe = entity.onPositionChange(({ x, y }) => {\n\t* console.log('Position changed to', x, y);\n\t* // Update rendering, sync network, etc.\n\t* });\n\t* ```\n\t*/\n\tonPositionChange(handler) {\n\t\tthis.positionSyncHandlers.add(handler);\n\t\treturn () => this.positionSyncHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers a handler fired when the entity direction changes.\n\t*\n\t* - **Purpose:** synchronize direction changes for logging, rendering, network sync, etc.\n\t* - **Design:** lightweight Set-based listeners returning an unsubscribe closure to keep GC pressure low.\n\t*\n\t* @param handler - Direction change listener\n\t* @returns Unsubscribe closure\n\t* @example\n\t* ```typescript\n\t* const unsubscribe = entity.onDirectionChange(({ direction, cardinalDirection }) => {\n\t* console.log('Direction changed to', cardinalDirection);\n\t* // Update rendering, sync network, etc.\n\t* });\n\t* ```\n\t*/\n\tonDirectionChange(handler) {\n\t\tthis.directionSyncHandlers.add(handler);\n\t\treturn () => this.directionSyncHandlers.delete(handler);\n\t}\n\t/**\n\t* Manually notifies that the position has changed.\n\t*\n\t* - **Purpose:** allow external code to trigger position sync hooks when position is modified directly.\n\t* - **Design:** can be called after direct position modifications (e.g., `entity.position.set()`).\n\t*\n\t* @example\n\t* ```typescript\n\t* entity.position.set(100, 200);\n\t* entity.notifyPositionChange(); // Trigger sync hooks\n\t* ```\n\t*/\n\tnotifyPositionChange() {\n\t\tif (this.positionSyncHandlers.size === 0) return;\n\t\tconst payload = {\n\t\t\tentity: this,\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y\n\t\t};\n\t\tfor (const handler of this.positionSyncHandlers) handler(payload);\n\t}\n\t/**\n\t* Manually notifies that the direction has changed.\n\t*\n\t* - **Purpose:** allow external code to trigger direction sync hooks when direction is modified directly.\n\t* - **Design:** computes direction from velocity and cardinal direction.\n\t*\n\t* @example\n\t* ```typescript\n\t* entity.velocity.set(5, 0);\n\t* entity.notifyDirectionChange(); // Trigger sync hooks\n\t* ```\n\t*/\n\tnotifyDirectionChange() {\n\t\tconst direction = this.velocity.lengthSquared() > DIRECTION_CHANGE_THRESHOLD_SQ ? this.velocity.clone().normalize() : new Vector2(0, 0);\n\t\tconst cardinalDirection = this.computeCardinalDirection(direction);\n\t\tif (cardinalDirection !== \"idle\") this.lastCardinalDirection = cardinalDirection;\n\t\tif (this.directionSyncHandlers.size === 0) return;\n\t\tconst payload = {\n\t\t\tentity: this,\n\t\t\tdirection,\n\t\t\tcardinalDirection\n\t\t};\n\t\tfor (const handler of this.directionSyncHandlers) handler(payload);\n\t}\n\t/**\n\t* Gets the current cardinal direction.\n\t* \n\t* This value is updated whenever `notifyDirectionChange()` is called (e.g. by `setVelocity`).\n\t* It includes hysteresis logic to prevent rapid direction flipping during collisions.\n\t* \n\t* @returns The current cardinal direction ('up', 'down', 'left', 'right', 'idle')\n\t* \n\t* @example\n\t* ```typescript\n\t* const dir = entity.cardinalDirection;\n\t* if (dir === 'left') {\n\t* // Render left-facing sprite\n\t* }\n\t* ```\n\t*/\n\tget cardinalDirection() {\n\t\treturn this.lastCardinalDirection;\n\t}\n\t/**\n\t* Registers a handler fired when the entity movement state changes (moving/stopped).\n\t*\n\t* - **Purpose:** detect when an entity starts or stops moving for gameplay reactions, animations, or network sync.\n\t* - **Design:** lightweight Set-based listeners returning an unsubscribe closure to keep GC pressure low.\n\t* - **Movement detection:** uses `MOVEMENT_EPSILON` threshold to determine if entity is moving.\n\t* - **Intensity:** provides the movement speed magnitude to allow fine-grained animation control (e.g., walk vs run).\n\t*\n\t* @param handler - Movement state change listener\n\t* @returns Unsubscribe closure\n\t* @example\n\t* ```typescript\n\t* const unsubscribe = entity.onMovementChange(({ isMoving, intensity }) => {\n\t* console.log('Entity is', isMoving ? 'moving' : 'stopped', 'at speed', intensity);\n\t* // Update animations based on intensity\n\t* if (isMoving && intensity > 100) {\n\t* // Fast movement - use run animation\n\t* } else if (isMoving) {\n\t* // Slow movement - use walk animation\n\t* }\n\t* });\n\t* ```\n\t*/\n\tonMovementChange(handler) {\n\t\tthis.movementChangeHandlers.add(handler);\n\t\treturn () => this.movementChangeHandlers.delete(handler);\n\t}\n\t/**\n\t* Manually notifies that the movement state has changed.\n\t*\n\t* - **Purpose:** allow external code to trigger movement state sync hooks when velocity is modified directly.\n\t* - **Design:** checks if movement state (moving/stopped) has changed and notifies handlers with movement intensity.\n\t* - **Intensity:** calculated as the magnitude of the velocity vector (speed in pixels per second).\n\t*\n\t* @example\n\t* ```typescript\n\t* entity.velocity.set(5, 0);\n\t* entity.notifyMovementChange(); // Trigger sync hooks if state changed\n\t* ```\n\t*/\n\tnotifyMovementChange() {\n\t\tconst isMoving = this.velocity.lengthSquared() > MOVEMENT_EPSILON_SQ;\n\t\tconst intensity = this.velocity.length();\n\t\tif (this.movementChangeHandlers.size === 0) {\n\t\t\tthis.wasMoving = isMoving;\n\t\t\treturn;\n\t\t}\n\t\tif (isMoving !== this.wasMoving) {\n\t\t\tthis.wasMoving = isMoving;\n\t\t\tconst payload = {\n\t\t\t\tentity: this,\n\t\t\t\tisMoving,\n\t\t\t\tintensity\n\t\t\t};\n\t\t\tfor (const handler of this.movementChangeHandlers) handler(payload);\n\t\t} else this.wasMoving = isMoving;\n\t}\n\t/**\n\t* Registers a handler fired when the entity enters a new tile.\n\t* \n\t* @param handler - Tile enter listener\n\t* @returns Unsubscribe closure\n\t*/\n\tonEnterTile(handler) {\n\t\tthis.enterTileHandlers.add(handler);\n\t\treturn () => this.enterTileHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers a handler fired when the entity leaves a tile.\n\t* \n\t* @param handler - Tile leave listener\n\t* @returns Unsubscribe closure\n\t*/\n\tonLeaveTile(handler) {\n\t\tthis.leaveTileHandlers.add(handler);\n\t\treturn () => this.leaveTileHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers a handler to check if the entity can enter a tile.\n\t* If any handler returns false, the entity cannot enter.\n\t* \n\t* @param handler - Can enter tile listener\n\t* @returns Unsubscribe closure\n\t*/\n\tcanEnterTile(handler) {\n\t\tthis.canEnterTileHandlers.add(handler);\n\t\treturn () => this.canEnterTileHandlers.delete(handler);\n\t}\n\t/**\n\t* @internal\n\t* Notifies that the entity has entered a tile.\n\t*/\n\tnotifyEnterTile(x, y) {\n\t\tif (this.enterTileHandlers.size === 0) return;\n\t\tconst event = {\n\t\t\tentity: this,\n\t\t\tx,\n\t\t\ty\n\t\t};\n\t\tfor (const handler of this.enterTileHandlers) handler(event);\n\t}\n\t/**\n\t* @internal\n\t* Notifies that the entity has left a tile.\n\t*/\n\tnotifyLeaveTile(x, y) {\n\t\tif (this.leaveTileHandlers.size === 0) return;\n\t\tconst event = {\n\t\t\tentity: this,\n\t\t\tx,\n\t\t\ty\n\t\t};\n\t\tfor (const handler of this.leaveTileHandlers) handler(event);\n\t}\n\t/**\n\t* @internal\n\t* Checks if the entity can enter a tile.\n\t*/\n\tcheckCanEnterTile(x, y) {\n\t\tif (this.canEnterTileHandlers.size === 0) return true;\n\t\tconst event = {\n\t\t\tentity: this,\n\t\t\tx,\n\t\t\ty\n\t\t};\n\t\tfor (const handler of this.canEnterTileHandlers) if (handler(event) === false) return false;\n\t\treturn true;\n\t}\n\t/**\n\t* Applies a force to the entity\n\t* \n\t* Force is accumulated and applied during integration.\n\t* \n\t* @param force - Force vector to apply\n\t* @returns This entity for chaining\n\t* \n\t* @example\n\t* ```typescript\n\t* entity.applyForce(new Vector2(10, 0)); // Push right\n\t* ```\n\t*/\n\tapplyForce(force) {\n\t\tif (this.isStatic() || this.isSleeping()) return this;\n\t\tthis.force.addInPlace(force);\n\t\treturn this;\n\t}\n\t/**\n\t* Applies a force at a specific point (creates torque)\n\t* \n\t* @param force - Force vector to apply\n\t* @param point - Point of application in world space\n\t* @returns This entity for chaining\n\t*/\n\tapplyForceAtPoint(force, point) {\n\t\tif (this.isStatic() || this.isSleeping()) return this;\n\t\tthis.force.addInPlace(force);\n\t\tconst r = point.sub(this.position);\n\t\tthis.torque += r.cross(force);\n\t\treturn this;\n\t}\n\t/**\n\t* Applies an impulse (instantaneous change in velocity)\n\t* \n\t* @param impulse - Impulse vector\n\t* @returns This entity for chaining\n\t* \n\t* @example\n\t* ```typescript\n\t* entity.applyImpulse(new Vector2(5, 0)); // Instant push\n\t* ```\n\t*/\n\tapplyImpulse(impulse) {\n\t\tif (this.isStatic() || this.isSleeping()) return this;\n\t\tthis.velocity.addInPlace(impulse.mul(this.invMass));\n\t\tthis.notifyMovementChange();\n\t\tthis.notifyDirectionChange();\n\t\treturn this;\n\t}\n\t/**\n\t* Applies an angular impulse (instantaneous change in angular velocity)\n\t* \n\t* @param impulse - Angular impulse value\n\t* @returns This entity for chaining\n\t*/\n\tapplyAngularImpulse(impulse) {\n\t\tif (this.isStatic() || this.isSleeping()) return this;\n\t\tconst momentOfInertia = this.mass * this.radius * this.radius;\n\t\tif (momentOfInertia > 0) this.angularVelocity += impulse / momentOfInertia;\n\t\treturn this;\n\t}\n\t/**\n\t* Teleports the entity to a new position\n\t* \n\t* @param position - New position\n\t* @returns This entity for chaining\n\t*/\n\tteleport(position) {\n\t\tif (position instanceof Vector2) this.position.copyFrom(position);\n\t\telse this.position.set(position.x, position.y);\n\t\tthis.wakeUp();\n\t\tthis.notifyPositionChange();\n\t\treturn this;\n\t}\n\t/**\n\t* Sets the velocity directly\n\t* \n\t* @param velocity - New velocity\n\t* @returns This entity for chaining\n\t*/\n\tsetVelocity(velocity) {\n\t\tconst oldVelocity = this.velocity.clone();\n\t\tif (velocity instanceof Vector2) this.velocity.copyFrom(velocity);\n\t\telse this.velocity.set(velocity.x, velocity.y);\n\t\tthis.wakeUp();\n\t\tconst oldDirection = oldVelocity.lengthSquared() > MOVEMENT_EPSILON_SQ ? oldVelocity.clone().normalize() : new Vector2(0, 0);\n\t\tconst newDirection = this.velocity.lengthSquared() > MOVEMENT_EPSILON_SQ ? this.velocity.clone().normalize() : new Vector2(0, 0);\n\t\tif (this.computeCardinalDirection(oldDirection) !== this.computeCardinalDirection(newDirection) || Math.abs(oldDirection.dot(newDirection) - 1) > .01) this.notifyDirectionChange();\n\t\tthis.notifyMovementChange();\n\t\treturn this;\n\t}\n\t/**\n\t* Freezes the entity (makes it static)\n\t* \n\t* @returns This entity for chaining\n\t*/\n\tfreeze() {\n\t\tthis.state = EntityState.Static;\n\t\tthis.velocity.set(0, 0);\n\t\tthis.angularVelocity = 0;\n\t\tthis.force.set(0, 0);\n\t\tthis.torque = 0;\n\t\tthis.notifyMovementChange();\n\t\treturn this;\n\t}\n\t/**\n\t* Unfreezes the entity (makes it dynamic)\n\t* \n\t* @returns This entity for chaining\n\t*/\n\tunfreeze() {\n\t\tif (this.mass > 0) this.state = EntityState.Dynamic;\n\t\treturn this;\n\t}\n\t/**\n\t* Puts the entity to sleep (stops updating)\n\t* \n\t* @returns This entity for chaining\n\t*/\n\tsleep() {\n\t\tif (!this.isStatic()) {\n\t\t\tthis.state |= EntityState.Sleeping;\n\t\t\tthis.velocity.set(0, 0);\n\t\t\tthis.angularVelocity = 0;\n\t\t\tthis.force.set(0, 0);\n\t\t\tthis.torque = 0;\n\t\t\tthis.notifyMovementChange();\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t* Wakes up the entity (resumes updating)\n\t* \n\t* @returns This entity for chaining\n\t*/\n\twakeUp() {\n\t\tthis.state &= ~EntityState.Sleeping;\n\t\tthis.timeSinceMovement = 0;\n\t\treturn this;\n\t}\n\t/**\n\t* Checks if the entity is static\n\t* \n\t* An entity is considered static if:\n\t* - It has the Static state flag, OR\n\t* - It has infinite mass (mass = Infinity), OR\n\t* - It has zero inverse mass (invMass = 0)\n\t* \n\t* @returns True if static\n\t*/\n\tisStatic() {\n\t\treturn (this.state & EntityState.Static) !== 0 || this.invMass === 0;\n\t}\n\t/**\n\t* Checks if the entity is dynamic\n\t* \n\t* @returns True if dynamic\n\t*/\n\tisDynamic() {\n\t\treturn (this.state & EntityState.Dynamic) !== 0 && this.mass > 0;\n\t}\n\t/**\n\t* Checks if the entity is sleeping\n\t* \n\t* @returns True if sleeping\n\t*/\n\tisSleeping() {\n\t\treturn (this.state & EntityState.Sleeping) !== 0;\n\t}\n\t/**\n\t* Checks if the entity is kinematic\n\t* \n\t* @returns True if kinematic\n\t*/\n\tisKinematic() {\n\t\treturn (this.state & EntityState.Kinematic) !== 0;\n\t}\n\t/**\n\t* Resets accumulated forces and torques\n\t* \n\t* Called at the start of each physics step.\n\t*/\n\tclearForces() {\n\t\tthis.force.set(0, 0);\n\t\tthis.torque = 0;\n\t}\n\t/**\n\t* Stops all movement immediately\n\t* \n\t* Completely stops the entity's movement by:\n\t* - Setting velocity to zero\n\t* - Setting angular velocity to zero\n\t* - Clearing accumulated forces and torques\n\t* - Waking up the entity if it was sleeping\n\t* - Notifying movement state change\n\t* \n\t* Unlike `freeze()`, this method keeps the entity dynamic and does not\n\t* change its state. It's useful for stopping movement when changing maps,\n\t* teleporting, or when you need to halt an entity without making it static.\n\t* \n\t* @returns This entity for chaining\n\t* \n\t* @example\n\t* ```ts\n\t* // Stop movement when changing maps\n\t* if (mapChanged) {\n\t* entity.stopMovement();\n\t* }\n\t* \n\t* // Stop movement after teleporting\n\t* entity.position.set(100, 200);\n\t* entity.stopMovement();\n\t* \n\t* // Stop movement when player dies\n\t* if (player.isDead()) {\n\t* playerEntity.stopMovement();\n\t* }\n\t* ```\n\t*/\n\tstopMovement() {\n\t\tthis.velocity.set(0, 0);\n\t\tthis.angularVelocity = 0;\n\t\tthis.clearForces();\n\t\tthis.wakeUp();\n\t\tthis.notifyMovementChange();\n\t\tthis.notifyDirectionChange();\n\t\treturn this;\n\t}\n\t/**\n\t* Clamps velocities to maximum values\n\t*/\n\tclampVelocities() {\n\t\tif (this.velocity.length() > this.maxLinearVelocity) this.velocity.normalizeInPlace().mulInPlace(this.maxLinearVelocity);\n\t\tif (Math.abs(this.angularVelocity) > this.maxAngularVelocity) this.angularVelocity = Math.sign(this.angularVelocity) * this.maxAngularVelocity;\n\t}\n\t/**\n\t* Adds a collision filter to this entity\n\t* \n\t* Collision filters allow dynamic, conditional collision filtering beyond static bitmasks.\n\t* Each filter is called when checking if this entity can collide with another.\n\t* If any filter returns `false`, the collision is ignored.\n\t* \n\t* This enables scenarios like:\n\t* - Players passing through other players (`throughOtherPlayer`)\n\t* - Entities passing through all characters (`through`)\n\t* - Custom game-specific collision rules\n\t* \n\t* @param filter - Function that returns `true` to allow collision, `false` to ignore\n\t* @returns Unsubscribe function to remove the filter\n\t* \n\t* @example\n\t* ```typescript\n\t* // Allow entity to pass through other players\n\t* const unsubscribe = entity.addCollisionFilter((self, other) => {\n\t* const otherOwner = (other as any).owner;\n\t* if (otherOwner?.type === 'player') {\n\t* return false; // No collision with players\n\t* }\n\t* return true; // Collide with everything else\n\t* });\n\t* \n\t* // Later, remove the filter\n\t* unsubscribe();\n\t* ```\n\t*/\n\taddCollisionFilter(filter) {\n\t\tthis.collisionFilterHandlers.add(filter);\n\t\treturn () => this.collisionFilterHandlers.delete(filter);\n\t}\n\t/**\n\t* Checks if this entity can collide with another entity\n\t* \n\t* First checks collision masks (bitmask filtering), then executes all registered\n\t* collision filters. If any filter returns `false`, the collision is ignored.\n\t* \n\t* @param other - Other entity to check\n\t* @returns True if collision is possible\n\t*/\n\tcanCollideWith(other) {\n\t\tconst categoryA = this.collisionCategory;\n\t\tconst maskA = this.collisionMask;\n\t\tconst categoryB = other.collisionCategory;\n\t\tif ((categoryA & other.collisionMask) === 0 || (categoryB & maskA) === 0) return false;\n\t\tfor (const filter of this.collisionFilterHandlers) if (!filter(this, other)) return false;\n\t\tfor (const filter of other.collisionFilterHandlers) if (!filter(other, this)) return false;\n\t\treturn true;\n\t}\n\t/**\n\t* Adds a resolution filter to this entity\n\t* \n\t* Resolution filters determine whether a collision should be **resolved** (blocking)\n\t* or just **detected** (notification only). Unlike collision filters which prevent\n\t* detection entirely, resolution filters allow collision events to fire while\n\t* optionally skipping the physical blocking.\n\t* \n\t* This enables scenarios like:\n\t* - Players passing through other players but still triggering touch events\n\t* - Entities passing through characters but still calling onPlayerTouch hooks\n\t* - Ghost mode where collisions are detected but not resolved\n\t* \n\t* @param filter - Function that returns `true` to resolve (block), `false` to skip\n\t* @returns Unsubscribe function to remove the filter\n\t* \n\t* @example\n\t* ```typescript\n\t* // Allow entity to pass through players but still trigger events\n\t* const unsubscribe = entity.addResolutionFilter((self, other) => {\n\t* const otherOwner = (other as any).owner;\n\t* if (otherOwner?.type === 'player') {\n\t* return false; // Pass through but events still fire\n\t* }\n\t* return true; // Block other entities\n\t* });\n\t* \n\t* // Later, remove the filter\n\t* unsubscribe();\n\t* ```\n\t*/\n\taddResolutionFilter(filter) {\n\t\tthis.resolutionFilterHandlers.add(filter);\n\t\treturn () => this.resolutionFilterHandlers.delete(filter);\n\t}\n\t/**\n\t* Checks if this entity should resolve (block) a collision with another entity\n\t* \n\t* This is called by the CollisionResolver to determine if the collision should\n\t* result in physical blocking or just notification.\n\t* \n\t* @param other - Other entity to check\n\t* @returns True if collision should be resolved (blocking), false to pass through\n\t*/\n\tshouldResolveCollisionWith(other) {\n\t\tfor (const filter of this.resolutionFilterHandlers) if (!filter(this, other)) return false;\n\t\tfor (const filter of other.resolutionFilterHandlers) if (!filter(other, this)) return false;\n\t\treturn true;\n\t}\n\t/**\n\t* @internal\n\t*\n\t* Notifies the entity that a collision has started.\n\t*\n\t* @param collision - Collision information shared by the world\n\t* @param other - The counterpart entity\n\t*/\n\tnotifyCollisionEnter(collision, other) {\n\t\tif (this.collisionEnterHandlers.size === 0) return;\n\t\tconst payload = {\n\t\t\tentity: this,\n\t\t\tother,\n\t\t\tcollision\n\t\t};\n\t\tfor (const handler of this.collisionEnterHandlers) handler(payload);\n\t}\n\t/**\n\t* @internal\n\t*\n\t* Notifies the entity that a collision has ended.\n\t*\n\t* @param collision - Collision information stored before separation\n\t* @param other - The counterpart entity\n\t*/\n\tnotifyCollisionExit(collision, other) {\n\t\tif (this.collisionExitHandlers.size === 0) return;\n\t\tconst payload = {\n\t\t\tentity: this,\n\t\t\tother,\n\t\t\tcollision\n\t\t};\n\t\tfor (const handler of this.collisionExitHandlers) handler(payload);\n\t}\n\tcomputeCardinalDirection(direction) {\n\t\tif (direction.lengthSquared() <= MOVEMENT_EPSILON_SQ) return \"idle\";\n\t\tif (this.lastCardinalDirection === \"idle\") {\n\t\t\tif (Math.abs(direction.x) >= Math.abs(direction.y)) return direction.x >= 0 ? \"right\" : \"left\";\n\t\t\treturn direction.y >= 0 ? \"down\" : \"up\";\n\t\t}\n\t\tconst isOpposite = this.lastCardinalDirection === \"left\" && direction.x > .5 || this.lastCardinalDirection === \"right\" && direction.x < -.5 || this.lastCardinalDirection === \"up\" && direction.y > .5 || this.lastCardinalDirection === \"down\" && direction.y < -.5;\n\t\tconst speedSq = this.velocity.lengthSquared();\n\t\tif (isOpposite && speedSq < 100) return this.lastCardinalDirection;\n\t\tconst absX = Math.abs(direction.x);\n\t\tconst absY = Math.abs(direction.y);\n\t\tconst bias = 2;\n\t\tif ([\"left\", \"right\"].includes(this.lastCardinalDirection)) {\n\t\t\tif (absY > absX * bias) {\n\t\t\t\tif (Math.abs(this.velocity.y) > 5) return direction.y >= 0 ? \"down\" : \"up\";\n\t\t\t}\n\t\t\tif (speedSq > 1) return direction.x >= 0 ? \"right\" : \"left\";\n\t\t\treturn this.lastCardinalDirection;\n\t\t} else {\n\t\t\tif (absX > absY * bias) {\n\t\t\t\tif (Math.abs(this.velocity.x) > 5) return direction.x >= 0 ? \"right\" : \"left\";\n\t\t\t}\n\t\t\tif (speedSq > 1) return direction.y >= 0 ? \"down\" : \"up\";\n\t\t\treturn this.lastCardinalDirection;\n\t\t}\n\t}\n\t/**\n\t* Creates a copy of this entity\n\t* \n\t* @returns New entity with copied properties\n\t*/\n\tclone() {\n\t\treturn new Entity({\n\t\t\tposition: this.position.clone(),\n\t\t\tvelocity: this.velocity.clone(),\n\t\t\trotation: this.rotation,\n\t\t\tangularVelocity: this.angularVelocity,\n\t\t\tmass: this.mass,\n\t\t\tradius: this.radius,\n\t\t\twidth: this.width,\n\t\t\theight: this.height,\n\t\t\tstate: this.state,\n\t\t\trestitution: this.restitution,\n\t\t\tfriction: this.friction,\n\t\t\tlinearDamping: this.linearDamping,\n\t\t\tangularDamping: this.angularDamping,\n\t\t\tmaxLinearVelocity: this.maxLinearVelocity,\n\t\t\tmaxAngularVelocity: this.maxAngularVelocity,\n\t\t\tcollisionMask: this.collisionMask,\n\t\t\tcollisionCategory: this.collisionCategory,\n\t\t\tuuid: this.uuid\n\t\t});\n\t}\n};\n//#endregion\n//#region ../physic/src/physics/integrator.ts\n/**\n* Integration method type\n*/\nvar IntegrationMethod = /* @__PURE__ */ function(IntegrationMethod) {\n\t/** Semi-implicit Euler (default, stable and fast) */\n\tIntegrationMethod[\"Euler\"] = \"euler\";\n\t/** Verlet integration (more stable, better energy conservation) */\n\tIntegrationMethod[\"Verlet\"] = \"verlet\";\n\treturn IntegrationMethod;\n}({});\n/**\n* Physics integrator\n* \n* Handles numerical integration of physical entities.\n* Supports multiple integration methods for different stability requirements.\n* \n* @example\n* ```typescript\n* const integrator = new Integrator({ deltaTime: 1/60 });\n* integrator.integrate(entity);\n* ```\n*/\nvar Integrator = class {\n\t/**\n\t* Creates a new integrator\n\t* \n\t* @param config - Integrator configuration\n\t*/\n\tconstructor(config) {\n\t\tthis.config = config;\n\t\tthis.gravity = config.gravity?.clone() ?? new Vector2(0, 0);\n\t}\n\t/**\n\t* Integrates an entity's motion\n\t* \n\t* Updates position, velocity, and rotation based on forces and torques.\n\t* \n\t* @param entity - Entity to integrate\n\t*/\n\tintegrate(entity) {\n\t\tif (entity.isStatic() || entity.isSleeping()) return;\n\t\tswitch (this.config.method ?? IntegrationMethod.Euler) {\n\t\t\tcase IntegrationMethod.Euler:\n\t\t\t\tthis.integrateEuler(entity);\n\t\t\t\tbreak;\n\t\t\tcase IntegrationMethod.Verlet:\n\t\t\t\tthis.integrateVerlet(entity);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t/**\n\t* Semi-implicit Euler integration\n\t* \n\t* Updates velocity first, then position. More stable than explicit Euler.\n\t* \n\t* @param entity - Entity to integrate\n\t*/\n\tintegrateEuler(entity) {\n\t\tconst dt = this.config.deltaTime;\n\t\tconst invMass = entity.invMass;\n\t\tif (invMass > 0) entity.force.addInPlace(this.gravity.mul(entity.mass));\n\t\tconst acceleration = entity.force.mul(invMass);\n\t\tentity.velocity.addInPlace(acceleration.mul(dt));\n\t\tconst linearDampingFactor = 1 - entity.linearDamping;\n\t\tentity.velocity.mulInPlace(linearDampingFactor);\n\t\tentity.clampVelocities();\n\t\tentity.notifyMovementChange();\n\t\tconst oldPosition = entity.position.clone();\n\t\tentity.position.addInPlace(entity.velocity.mul(dt));\n\t\tif (entity.position.sub(oldPosition).lengthSquared() > 1e-6) entity.notifyPositionChange();\n\t\tconst momentOfInertia = entity.mass * entity.radius * entity.radius;\n\t\tif (momentOfInertia > 0) {\n\t\t\tconst angularAcceleration = entity.torque / momentOfInertia;\n\t\t\tentity.angularVelocity += angularAcceleration * dt;\n\t\t}\n\t\tconst angularDampingFactor = 1 - entity.angularDamping;\n\t\tentity.angularVelocity *= angularDampingFactor;\n\t\tif (Math.abs(entity.angularVelocity) > entity.maxAngularVelocity) entity.angularVelocity = Math.sign(entity.angularVelocity) * entity.maxAngularVelocity;\n\t\tentity.rotation += entity.angularVelocity * dt;\n\t\twhile (entity.rotation > Math.PI) entity.rotation -= 2 * Math.PI;\n\t\twhile (entity.rotation < -Math.PI) entity.rotation += 2 * Math.PI;\n\t\tentity.clearForces();\n\t}\n\t/**\n\t* Verlet integration\n\t* \n\t* More stable than Euler, better energy conservation.\n\t* Requires storing previous position.\n\t* \n\t* @param entity - Entity to integrate\n\t*/\n\tintegrateVerlet(entity) {\n\t\tconst dt = this.config.deltaTime;\n\t\tconst dt2 = dt * dt;\n\t\tconst invMass = entity.invMass;\n\t\tif (invMass > 0) entity.force.addInPlace(this.gravity.mul(entity.mass));\n\t\tconst acceleration = entity.force.mul(invMass);\n\t\tconst newPosition = entity.position.add(entity.velocity.mul(dt)).add(acceleration.mul(.5 * dt2));\n\t\tconst newVelocity = newPosition.sub(entity.position).div(dt);\n\t\tconst linearDampingFactor = 1 - entity.linearDamping;\n\t\tnewVelocity.mulInPlace(linearDampingFactor);\n\t\tconst oldPosition = entity.position.clone();\n\t\tentity.position = newPosition;\n\t\tentity.velocity = newVelocity;\n\t\tentity.clampVelocities();\n\t\tentity.notifyMovementChange();\n\t\tif (entity.position.sub(oldPosition).lengthSquared() > 1e-6) entity.notifyPositionChange();\n\t\tconst momentOfInertia = entity.mass * entity.radius * entity.radius;\n\t\tif (momentOfInertia > 0) {\n\t\t\tconst angularAcceleration = entity.torque / momentOfInertia;\n\t\t\tentity.angularVelocity += angularAcceleration * dt;\n\t\t}\n\t\tconst angularDampingFactor = 1 - entity.angularDamping;\n\t\tentity.angularVelocity *= angularDampingFactor;\n\t\tif (Math.abs(entity.angularVelocity) > entity.maxAngularVelocity) entity.angularVelocity = Math.sign(entity.angularVelocity) * entity.maxAngularVelocity;\n\t\tentity.rotation += entity.angularVelocity * dt;\n\t\twhile (entity.rotation > Math.PI) entity.rotation -= 2 * Math.PI;\n\t\twhile (entity.rotation < -Math.PI) entity.rotation += 2 * Math.PI;\n\t\tentity.clearForces();\n\t}\n\t/**\n\t* Updates the gravity vector\n\t* \n\t* @param gravity - New gravity vector\n\t*/\n\tsetGravity(gravity) {\n\t\tthis.gravity.copyFrom(gravity);\n\t}\n\t/**\n\t* Gets the current gravity vector\n\t* \n\t* @returns Gravity vector\n\t*/\n\tgetGravity() {\n\t\treturn this.gravity.clone();\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/AABBCollider.ts\n/**\n* AABB (Axis-Aligned Bounding Box) collider implementation\n* \n* Represents a rectangular collision shape aligned with the axes.\n* \n* @example\n* ```typescript\n* const entity = new Entity({ position: { x: 0, y: 0 }, width: 10, height: 10 });\n* const collider = new AABBCollider(entity);\n* ```\n*/\nvar AABBCollider = class AABBCollider {\n\t/**\n\t* Creates a new AABB collider\n\t* \n\t* @param entity - Entity this collider belongs to\n\t*/\n\tconstructor(entity) {\n\t\tthis.entity = entity;\n\t}\n\t/**\n\t* Gets the AABB bounds\n\t* \n\t* @returns AABB\n\t*/\n\tgetBounds() {\n\t\tconst center = this.entity.position;\n\t\tconst halfWidth = this.entity.width / 2;\n\t\tconst halfHeight = this.entity.height / 2;\n\t\treturn new AABB(center.x - halfWidth, center.y - halfHeight, center.x + halfWidth, center.y + halfHeight);\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\ttestCollision(other) {\n\t\tif (other instanceof CircleCollider) {\n\t\t\tconst collision = other.testCollision(this);\n\t\t\tif (collision) return {\n\t\t\t\tentityA: collision.entityB,\n\t\t\t\tentityB: collision.entityA,\n\t\t\t\tcontacts: collision.contacts.map((c) => ({\n\t\t\t\t\tpoint: c.point,\n\t\t\t\t\tnormal: c.normal.mul(-1),\n\t\t\t\t\tdepth: c.depth\n\t\t\t\t})),\n\t\t\t\tnormal: collision.normal.mul(-1),\n\t\t\t\tdepth: collision.depth\n\t\t\t};\n\t\t\treturn null;\n\t\t} else if (other instanceof AABBCollider) return this.testAABBAABB(other);\n\t\treturn null;\n\t}\n\t/**\n\t* Tests collision with another AABB\n\t* \n\t* @param other - Other AABB collider\n\t* @returns Collision info or null\n\t*/\n\ttestAABBAABB(other) {\n\t\tconst aabbA = this.getBounds();\n\t\tconst aabbB = other.getBounds();\n\t\tif (!aabbA.intersects(aabbB)) return null;\n\t\tconst intersection = aabbA.intersection(aabbB);\n\t\tif (!intersection) return null;\n\t\tconst overlapX = Math.min(aabbA.maxX - aabbB.minX, aabbB.maxX - aabbA.minX);\n\t\tconst overlapY = Math.min(aabbA.maxY - aabbB.minY, aabbB.maxY - aabbA.minY);\n\t\tlet normal;\n\t\tlet depth;\n\t\tif (overlapX < overlapY) {\n\t\t\tdepth = overlapX;\n\t\t\tnormal = aabbA.getCenterX() < aabbB.getCenterX() ? new Vector2(1, 0) : new Vector2(-1, 0);\n\t\t} else {\n\t\t\tdepth = overlapY;\n\t\t\tnormal = aabbA.getCenterY() < aabbB.getCenterY() ? new Vector2(0, 1) : new Vector2(0, -1);\n\t\t}\n\t\tconst contactPoint = intersection.getCenter();\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: other.entity,\n\t\t\tcontacts: [{\n\t\t\t\tpoint: contactPoint,\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\tgetContactPoints(other) {\n\t\treturn this.testCollision(other)?.contacts ?? [];\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\tgetEntity() {\n\t\treturn this.entity;\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\traycast(ray) {\n\t\tconst bounds = this.getBounds();\n\t\tconst tMin = (bounds.minX - ray.origin.x) / ray.direction.x;\n\t\tconst tMax = (bounds.maxX - ray.origin.x) / ray.direction.x;\n\t\tconst tymin = (bounds.minY - ray.origin.y) / ray.direction.y;\n\t\tconst tymax = (bounds.maxY - ray.origin.y) / ray.direction.y;\n\t\tconst t1 = Math.min(tMin, tMax);\n\t\tconst t2 = Math.max(tMin, tMax);\n\t\tconst t3 = Math.min(tymin, tymax);\n\t\tconst t4 = Math.max(tymin, tymax);\n\t\tconst tNear = Math.max(t1, t3);\n\t\tconst tFar = Math.min(t2, t4);\n\t\tif (tNear > tFar || tFar < 0) return null;\n\t\tif (tNear > ray.length) return null;\n\t\tconst t = tNear < 0 ? tFar : tNear;\n\t\tif (t < 0) return null;\n\t\tconst point = ray.getPoint(t);\n\t\tlet normal = new Vector2(0, 0);\n\t\tif (Math.abs(point.x - bounds.minX) < 1e-5) normal.set(-1, 0);\n\t\telse if (Math.abs(point.x - bounds.maxX) < 1e-5) normal.set(1, 0);\n\t\telse if (Math.abs(point.y - bounds.minY) < 1e-5) normal.set(0, -1);\n\t\telse if (Math.abs(point.y - bounds.maxY) < 1e-5) normal.set(0, 1);\n\t\treturn {\n\t\t\tentity: this.entity,\n\t\t\tpoint,\n\t\t\tnormal,\n\t\t\tdistance: t\n\t\t};\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/CircleCollider.ts\n/**\n* Circle collider implementation\n* \n* Represents a circular collision shape.\n* \n* @example\n* ```typescript\n* const entity = new Entity({ position: { x: 0, y: 0 }, radius: 10 });\n* const collider = new CircleCollider(entity);\n* ```\n*/\nvar CircleCollider = class CircleCollider {\n\t/**\n\t* Creates a new circle collider\n\t* \n\t* @param entity - Entity this collider belongs to\n\t*/\n\tconstructor(entity) {\n\t\tthis.entity = entity;\n\t}\n\t/**\n\t* Gets the radius of the circle\n\t* \n\t* @returns Radius\n\t*/\n\tgetRadius() {\n\t\treturn this.entity.radius;\n\t}\n\t/**\n\t* Gets the center position of the circle\n\t* \n\t* @returns Center position\n\t*/\n\tgetCenter() {\n\t\treturn this.entity.position;\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\tgetBounds() {\n\t\tconst radius = this.entity.radius;\n\t\tconst center = this.entity.position;\n\t\treturn new AABB(center.x - radius, center.y - radius, center.x + radius, center.y + radius);\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\ttestCollision(other) {\n\t\tif (other instanceof CircleCollider) return this.testCircleCircle(other);\n\t\telse if (other instanceof AABBCollider) return this.testCircleAABB(other);\n\t\treturn null;\n\t}\n\t/**\n\t* Tests collision with another circle\n\t* \n\t* @param other - Other circle collider\n\t* @returns Collision info or null\n\t*/\n\ttestCircleCircle(other) {\n\t\tconst centerA = this.getCenter();\n\t\tconst centerB = other.getCenter();\n\t\tconst radiusA = this.getRadius();\n\t\tconst radiusB = other.getRadius();\n\t\tconst distance = centerA.distanceTo(centerB);\n\t\tconst minDistance = radiusA + radiusB;\n\t\tif (distance >= minDistance) return null;\n\t\tconst depth = minDistance - distance;\n\t\tlet normal;\n\t\tif (distance < 1e-5) normal = new Vector2(1, 0);\n\t\telse normal = centerB.sub(centerA).normalize();\n\t\tconst contactPoint = centerA.add(normal.mul(radiusA));\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: other.entity,\n\t\t\tcontacts: [{\n\t\t\t\tpoint: contactPoint,\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\t/**\n\t* Tests collision with an AABB\n\t* \n\t* @param other - AABB collider\n\t* @returns Collision info or null\n\t*/\n\ttestCircleAABB(other) {\n\t\tconst circleCenter = this.getCenter();\n\t\tconst circleRadius = this.getRadius();\n\t\tconst aabb = other.getBounds();\n\t\tconst closestX = Math.max(aabb.minX, Math.min(circleCenter.x, aabb.maxX));\n\t\tconst closestY = Math.max(aabb.minY, Math.min(circleCenter.y, aabb.maxY));\n\t\tconst distanceSq = (circleCenter.x - closestX) ** 2 + (circleCenter.y - closestY) ** 2;\n\t\tif (distanceSq > circleRadius * circleRadius) return null;\n\t\tconst distance = Math.sqrt(distanceSq);\n\t\tconst depth = circleRadius - distance;\n\t\tlet normal;\n\t\tif (distance < 1e-5) {\n\t\t\tconst distToLeft = circleCenter.x - aabb.minX;\n\t\t\tconst distToRight = aabb.maxX - circleCenter.x;\n\t\t\tconst distToBottom = circleCenter.y - aabb.minY;\n\t\t\tconst distToTop = aabb.maxY - circleCenter.y;\n\t\t\tconst minDist = Math.min(distToLeft, distToRight, distToBottom, distToTop);\n\t\t\tif (minDist === distToLeft) normal = new Vector2(-1, 0);\n\t\t\telse if (minDist === distToRight) normal = new Vector2(1, 0);\n\t\t\telse if (minDist === distToBottom) normal = new Vector2(0, -1);\n\t\t\telse normal = new Vector2(0, 1);\n\t\t} else normal = new Vector2(closestX - circleCenter.x, closestY - circleCenter.y).normalize();\n\t\tconst contactPoint = new Vector2(closestX, closestY);\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: other.getEntity(),\n\t\t\tcontacts: [{\n\t\t\t\tpoint: contactPoint,\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\tgetContactPoints(other) {\n\t\treturn this.testCollision(other)?.contacts ?? [];\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\tgetEntity() {\n\t\treturn this.entity;\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\traycast(ray) {\n\t\tconst center = this.getCenter();\n\t\tconst radius = this.getRadius();\n\t\tconst m = ray.origin.sub(center);\n\t\tconst b = m.dot(ray.direction);\n\t\tconst c = m.dot(m) - radius * radius;\n\t\tif (c > 0 && b > 0) return null;\n\t\tconst discr = b * b - c;\n\t\tif (discr < 0) return null;\n\t\tlet t = -b - Math.sqrt(discr);\n\t\tif (t < 0) t = 0;\n\t\tif (t > ray.length) return null;\n\t\tconst point = ray.getPoint(t);\n\t\tconst normal = point.sub(center).normalize();\n\t\treturn {\n\t\t\tentity: this.entity,\n\t\t\tpoint,\n\t\t\tnormal,\n\t\t\tdistance: t\n\t\t};\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/CapsuleCollider.ts\n/**\n* Capsule collider\n* \n* Represents a capsule shape (pill shape) defined by a line segment and a radius.\n* Useful for character controllers as it handles steps and slopes better than AABBs.\n*/\nvar CapsuleCollider = class CapsuleCollider {\n\tconstructor(entity) {\n\t\tthis.entity = entity;\n\t}\n\tgetBounds() {\n\t\tconst { radius, height } = this.getCapsuleConfig();\n\t\tconst pos = this.entity.position;\n\t\tconst halfHeight = Math.max(0, height / 2 - radius);\n\t\treturn new AABB(pos.x - radius, pos.y - halfHeight - radius, pos.x + radius, pos.y + halfHeight + radius);\n\t}\n\tgetEntity() {\n\t\treturn this.entity;\n\t}\n\traycast(ray) {\n\t\tconst bounds = this.getBounds();\n\t\tconst tMin = (bounds.minX - ray.origin.x) / ray.direction.x;\n\t\tconst tMax = (bounds.maxX - ray.origin.x) / ray.direction.x;\n\t\tconst tymin = (bounds.minY - ray.origin.y) / ray.direction.y;\n\t\tconst tymax = (bounds.maxY - ray.origin.y) / ray.direction.y;\n\t\tconst t1 = Math.min(tMin, tMax);\n\t\tconst t2 = Math.max(tMin, tMax);\n\t\tconst t3 = Math.min(tymin, tymax);\n\t\tconst t4 = Math.max(tymin, tymax);\n\t\tconst tNear = Math.max(t1, t3);\n\t\tconst tFar = Math.min(t2, t4);\n\t\tif (tNear > tFar || tFar < 0) return null;\n\t\tif (tNear > ray.length) return null;\n\t\tconst t = tNear < 0 ? tFar : tNear;\n\t\tif (t < 0) return null;\n\t\tconst point = ray.getPoint(t);\n\t\tlet normal = new Vector2(0, 0);\n\t\tif (Math.abs(point.x - bounds.minX) < 1e-5) normal.set(-1, 0);\n\t\telse if (Math.abs(point.x - bounds.maxX) < 1e-5) normal.set(1, 0);\n\t\telse if (Math.abs(point.y - bounds.minY) < 1e-5) normal.set(0, -1);\n\t\telse if (Math.abs(point.y - bounds.maxY) < 1e-5) normal.set(0, 1);\n\t\treturn {\n\t\t\tentity: this.entity,\n\t\t\tpoint,\n\t\t\tnormal,\n\t\t\tdistance: t\n\t\t};\n\t}\n\ttestCollision(other) {\n\t\tif (other instanceof CircleCollider) return this.testCircle(other);\n\t\telse if (other instanceof AABBCollider) return this.testAABB(other);\n\t\telse if (other instanceof CapsuleCollider) return this.testCapsule(other);\n\t\treturn other.testCollision(this);\n\t}\n\tgetContactPoints(other) {\n\t\tconst collision = this.testCollision(other);\n\t\treturn collision ? collision.contacts : [];\n\t}\n\tgetCapsuleConfig() {\n\t\tif (this.entity.capsule) return this.entity.capsule;\n\t\treturn {\n\t\t\tradius: this.entity.radius || 10,\n\t\t\theight: this.entity.height || 30\n\t\t};\n\t}\n\tgetSegment() {\n\t\tconst { radius, height } = this.getCapsuleConfig();\n\t\tconst pos = this.entity.position;\n\t\tconst halfSegment = Math.max(0, height / 2 - radius);\n\t\treturn {\n\t\t\ta: new Vector2(pos.x, pos.y - halfSegment),\n\t\t\tb: new Vector2(pos.x, pos.y + halfSegment)\n\t\t};\n\t}\n\ttestCircle(circle) {\n\t\tconst seg = this.getSegment();\n\t\tconst circleCenter = circle.getCenter();\n\t\tconst circleRadius = circle.getRadius();\n\t\tconst capRadius = this.getCapsuleConfig().radius;\n\t\tconst closest = this.closestPointOnSegment(seg.a, seg.b, circleCenter);\n\t\tconst distSq = closest.distanceToSquared(circleCenter);\n\t\tconst minDist = capRadius + circleRadius;\n\t\tif (distSq > minDist * minDist) return null;\n\t\tconst dist = Math.sqrt(distSq);\n\t\tconst normal = dist > 0 ? circleCenter.sub(closest).normalize() : new Vector2(1, 0);\n\t\tconst depth = minDist - dist;\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: circle.getEntity(),\n\t\t\tcontacts: [{\n\t\t\t\tpoint: closest.add(normal.mul(capRadius)),\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\ttestAABB(box) {\n\t\tconst seg = this.getSegment();\n\t\tconst capRadius = this.getCapsuleConfig().radius;\n\t\tconst boxBounds = box.getBounds();\n\t\tconst closestOnSeg = this.closestPointOnSegment(seg.a, seg.b, box.getBounds().getCenter());\n\t\tconst closestOnBox = boxBounds.clamp(closestOnSeg);\n\t\tconst distSq = closestOnSeg.distanceToSquared(closestOnBox);\n\t\tif (distSq > capRadius * capRadius) return null;\n\t\tconst dist = Math.sqrt(distSq);\n\t\tconst normal = dist > 0 ? closestOnBox.sub(closestOnSeg).normalize() : new Vector2(0, 1);\n\t\tconst depth = capRadius - dist;\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: box.getEntity(),\n\t\t\tcontacts: [{\n\t\t\t\tpoint: closestOnBox,\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\ttestCapsule(other) {\n\t\tconst segA = this.getSegment();\n\t\tconst segB = other.getSegment();\n\t\tconst rA = this.getCapsuleConfig().radius;\n\t\tconst rB = other.getCapsuleConfig().radius;\n\t\tconst { p1, p2 } = this.closestPointsSegmentSegment(segA.a, segA.b, segB.a, segB.b);\n\t\tconst distSq = p1.distanceToSquared(p2);\n\t\tconst minDist = rA + rB;\n\t\tif (distSq > minDist * minDist) return null;\n\t\tconst dist = Math.sqrt(distSq);\n\t\tconst normal = dist > 0 ? p2.sub(p1).normalize() : new Vector2(1, 0);\n\t\tconst depth = minDist - dist;\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: other.getEntity(),\n\t\t\tcontacts: [{\n\t\t\t\tpoint: p1.add(normal.mul(rA)),\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\tclosestPointOnSegment(a, b, p) {\n\t\tconst ab = b.sub(a);\n\t\tconst t = p.sub(a).dot(ab) / ab.dot(ab);\n\t\treturn a.add(ab.mul(Math.max(0, Math.min(1, t))));\n\t}\n\tclosestPointsSegmentSegment(p1, p2, p3, p4) {\n\t\tconst u = p2.sub(p1);\n\t\tconst v = p4.sub(p3);\n\t\tconst w = p1.sub(p3);\n\t\tconst a = u.dot(u);\n\t\tconst b = u.dot(v);\n\t\tconst c = v.dot(v);\n\t\tconst d = u.dot(w);\n\t\tconst e = v.dot(w);\n\t\tconst D = a * c - b * b;\n\t\tlet sc, sN, sD = D;\n\t\tlet tc, tN, tD = D;\n\t\tif (D < 1e-8) {\n\t\t\tsN = 0;\n\t\t\tsD = 1;\n\t\t\ttN = e;\n\t\t\ttD = c;\n\t\t} else {\n\t\t\tsN = b * e - c * d;\n\t\t\ttN = a * e - b * d;\n\t\t\tif (sN < 0) {\n\t\t\t\tsN = 0;\n\t\t\t\ttN = e;\n\t\t\t\ttD = c;\n\t\t\t} else if (sN > sD) {\n\t\t\t\tsN = sD;\n\t\t\t\ttN = e + b;\n\t\t\t\ttD = c;\n\t\t\t}\n\t\t}\n\t\tif (tN < 0) {\n\t\t\ttN = 0;\n\t\t\tif (-d < 0) sN = 0;\n\t\t\telse if (-d > a) sN = sD;\n\t\t\telse {\n\t\t\t\tsN = -d;\n\t\t\t\tsD = a;\n\t\t\t}\n\t\t} else if (tN > tD) {\n\t\t\ttN = tD;\n\t\t\tif (-d + b < 0) sN = 0;\n\t\t\telse if (-d + b > a) sN = sD;\n\t\t\telse {\n\t\t\t\tsN = -d + b;\n\t\t\t\tsD = a;\n\t\t\t}\n\t\t}\n\t\tsc = Math.abs(sN) < 1e-8 ? 0 : sN / sD;\n\t\ttc = Math.abs(tN) < 1e-8 ? 0 : tN / tD;\n\t\treturn {\n\t\t\tp1: p1.add(u.mul(sc)),\n\t\t\tp2: p3.add(v.mul(tc))\n\t\t};\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/PolygonCollider.ts\n/**\n* Weak registry to attach polygon configurations to entities\n*/\nvar entityToPolygonConfig = /* @__PURE__ */ new WeakMap();\n/**\n* Assigns a polygon collider configuration to an existing entity.\n* The entity will use this collider when `createCollider` is invoked.\n*\n* @param entity - Target entity\n* @param config - Polygon configuration\n* @example\n* ```typescript\n* const e = new Entity({ position: { x: 0, y: 0 } });\n* assignPolygonCollider(e, { vertices: [new Vector2(-1, -1), new Vector2(1, -1), new Vector2(1, 1), new Vector2(-1, 1)], isConvex: true });\n* ```\n*/\nfunction assignPolygonCollider(entity, config) {\n\tentityToPolygonConfig.set(entity, config);\n}\n/**\n* Polygon collider implementation (convex via SAT; concave via convex parts)\n*\n* Design notes (in English):\n* - Vertices are defined in local space (centered on entity.position) and rotated by entity.rotation at query time.\n* - Concave shapes are supported by providing pre-decomposed convex `parts`. The collider iterates pairs of convex parts.\n* - Narrow-phase uses SAT (Separating Axis Theorem) on all candidate axes from both polygons.\n* - Contact point is approximated from the overlap normal and polygon centroid for performance and stability.\n*\n* @example\n* ```typescript\n* const e = new Entity({ position: { x: 0, y: 0 } });\n* assignPolygonCollider(e, { vertices: [new Vector2(0, 0), new Vector2(2, 0), new Vector2(1, 2)], isConvex: true });\n* const collider = new PolygonCollider(e);\n* ```\n*/\nvar PolygonCollider = class PolygonCollider {\n\tconstructor(entity) {\n\t\tthis.entity = entity;\n\t\tconst cfg = entityToPolygonConfig.get(entity);\n\t\tif (!cfg) {\n\t\t\tthis.convexParts = [];\n\t\t\treturn;\n\t\t}\n\t\tif (cfg.parts && cfg.parts.length > 0) this.convexParts = cfg.parts.map((p) => p.slice());\n\t\telse if (cfg.vertices && cfg.vertices.length >= 3) this.convexParts = [cfg.vertices.slice()];\n\t\telse this.convexParts = [];\n\t}\n\tgetEntity() {\n\t\treturn this.entity;\n\t}\n\tgetBounds() {\n\t\tconst rotation = this.entity.rotation;\n\t\tconst cos = Math.cos(rotation);\n\t\tconst sin = Math.sin(rotation);\n\t\tlet minX = Number.POSITIVE_INFINITY;\n\t\tlet minY = Number.POSITIVE_INFINITY;\n\t\tlet maxX = Number.NEGATIVE_INFINITY;\n\t\tlet maxY = Number.NEGATIVE_INFINITY;\n\t\tfor (const part of this.convexParts) for (const v of part) {\n\t\t\tconst x = v.x * cos - v.y * sin + this.entity.position.x;\n\t\t\tconst y = v.x * sin + v.y * cos + this.entity.position.y;\n\t\t\tif (x < minX) minX = x;\n\t\t\tif (y < minY) minY = y;\n\t\t\tif (x > maxX) maxX = x;\n\t\t\tif (y > maxY) maxY = y;\n\t\t}\n\t\tif (minX === Number.POSITIVE_INFINITY) {\n\t\t\tminX = maxX = this.entity.position.x;\n\t\t\tminY = maxY = this.entity.position.y;\n\t\t}\n\t\treturn new AABB(minX, minY, maxX, maxY);\n\t}\n\tgetContactPoints(other) {\n\t\tconst info = this.testCollision(other);\n\t\treturn info ? info.contacts : [];\n\t}\n\ttestCollision(other) {\n\t\tif (other instanceof CircleCollider) return this.testPolygonCircle(other);\n\t\tif (other instanceof AABBCollider) return this.testPolygonAABB(other);\n\t\tif (other instanceof PolygonCollider) return this.testPolygonPolygon(other);\n\t\treturn null;\n\t}\n\ttestPolygonAABB(other) {\n\t\tconst b = other.getBounds();\n\t\tconst halfW = (b.maxX - b.minX) / 2;\n\t\tconst halfH = (b.maxY - b.minY) / 2;\n\t\tconst center = new Vector2((b.minX + b.maxX) / 2, (b.minY + b.maxY) / 2);\n\t\tconst aabbPolyLocal = [\n\t\t\tnew Vector2(-halfW, -halfH),\n\t\t\tnew Vector2(halfW, -halfH),\n\t\t\tnew Vector2(halfW, halfH),\n\t\t\tnew Vector2(-halfW, halfH)\n\t\t];\n\t\tconst tempEntity = new Entity({\n\t\t\tposition: center,\n\t\t\trotation: 0,\n\t\t\tmass: 0\n\t\t});\n\t\tentityToPolygonConfig.set(tempEntity, {\n\t\t\tvertices: aabbPolyLocal,\n\t\t\tisConvex: true\n\t\t});\n\t\tconst tempPoly = new PolygonCollider(tempEntity);\n\t\tconst result = this.testPolygonPolygon(tempPoly);\n\t\tif (!result) return null;\n\t\treturn {\n\t\t\tentityA: result.entityA === tempEntity ? this.entity : result.entityA,\n\t\t\tentityB: other.getEntity(),\n\t\t\tcontacts: result.contacts,\n\t\t\tnormal: result.normal,\n\t\t\tdepth: result.depth\n\t\t};\n\t}\n\ttestPolygonCircle(other) {\n\t\tlet bestInfo = null;\n\t\tconst center = other.getCenter();\n\t\tconst r = other.getRadius();\n\t\tfor (const part of this.getWorldParts()) {\n\t\t\tlet minDistSq = Number.POSITIVE_INFINITY;\n\t\t\tlet closestPoint = null;\n\t\t\tfor (let i = 0; i < part.length; i++) {\n\t\t\t\tconst a = part[i];\n\t\t\t\tconst b = part[(i + 1) % part.length];\n\t\t\t\tif (!a || !b) continue;\n\t\t\t\tconst cp = closestPointOnSegment(a, b, center);\n\t\t\t\tconst dsq = center.distanceToSquared(cp);\n\t\t\t\tif (dsq < minDistSq) {\n\t\t\t\t\tminDistSq = dsq;\n\t\t\t\t\tclosestPoint = cp;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!closestPoint) continue;\n\t\t\tconst dist = Math.sqrt(minDistSq);\n\t\t\tif (dist <= r) {\n\t\t\t\tconst normal = dist > 1e-6 ? center.sub(closestPoint).normalize() : new Vector2(1, 0);\n\t\t\t\tconst depth = r - dist;\n\t\t\t\tconst info = {\n\t\t\t\t\tentityA: this.entity,\n\t\t\t\t\tentityB: other.getEntity(),\n\t\t\t\t\tcontacts: [{\n\t\t\t\t\t\tpoint: closestPoint,\n\t\t\t\t\t\tnormal,\n\t\t\t\t\t\tdepth\n\t\t\t\t\t}],\n\t\t\t\t\tnormal,\n\t\t\t\t\tdepth\n\t\t\t\t};\n\t\t\t\tif (!bestInfo || info.depth > bestInfo.depth) bestInfo = info;\n\t\t\t}\n\t\t}\n\t\treturn bestInfo;\n\t}\n\ttestPolygonPolygon(other) {\n\t\tlet bestDepth = Number.POSITIVE_INFINITY;\n\t\tlet bestAxis = null;\n\t\tlet flipNormal = false;\n\t\tconst partsA = this.getWorldParts();\n\t\tconst partsB = other.getWorldParts();\n\t\tlet collided = false;\n\t\tfor (const a of partsA) for (const b of partsB) {\n\t\t\tconst axes = gatherSATAxes(a, b);\n\t\t\tlet overlapDepth = Number.POSITIVE_INFINITY;\n\t\t\tlet axisForPair = null;\n\t\t\tfor (const axis of axes) {\n\t\t\t\tconst projA = projectOntoAxis(a, axis);\n\t\t\t\tconst projB = projectOntoAxis(b, axis);\n\t\t\t\tconst overlap = intervalOverlap(projA.min, projA.max, projB.min, projB.max);\n\t\t\t\tif (overlap <= 0) {\n\t\t\t\t\toverlapDepth = -1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (overlap < overlapDepth) {\n\t\t\t\t\toverlapDepth = overlap;\n\t\t\t\t\taxisForPair = axis;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (overlapDepth > 0 && axisForPair) {\n\t\t\t\tcollided = true;\n\t\t\t\tif (overlapDepth < bestDepth) {\n\t\t\t\t\tbestDepth = overlapDepth;\n\t\t\t\t\tbestAxis = axisForPair;\n\t\t\t\t\tconst cA = polygonCentroid(a);\n\t\t\t\t\tconst cB = polygonCentroid(b);\n\t\t\t\t\tflipNormal = cA.sub(cB).dot(bestAxis) > 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!collided || !bestAxis) return null;\n\t\tconst normal = flipNormal ? bestAxis.mul(-1) : bestAxis.clone();\n\t\tconst depth = bestDepth;\n\t\tconst contactPoint = polygonCentroid(partsA[0]).add(normal.mul(0));\n\t\treturn {\n\t\t\tentityA: this.entity,\n\t\t\tentityB: other.getEntity(),\n\t\t\tcontacts: [{\n\t\t\t\tpoint: contactPoint,\n\t\t\t\tnormal,\n\t\t\t\tdepth\n\t\t\t}],\n\t\t\tnormal,\n\t\t\tdepth\n\t\t};\n\t}\n\t/**\n\t* @inheritdoc\n\t*/\n\traycast(ray) {\n\t\tconst bounds = this.getBounds();\n\t\tconst tMin = (bounds.minX - ray.origin.x) / ray.direction.x;\n\t\tconst tMax = (bounds.maxX - ray.origin.x) / ray.direction.x;\n\t\tconst tymin = (bounds.minY - ray.origin.y) / ray.direction.y;\n\t\tconst tymax = (bounds.maxY - ray.origin.y) / ray.direction.y;\n\t\tconst t1 = Math.min(tMin, tMax);\n\t\tconst t2 = Math.max(tMin, tMax);\n\t\tconst t3 = Math.min(tymin, tymax);\n\t\tconst t4 = Math.max(tymin, tymax);\n\t\tconst tNear = Math.max(t1, t3);\n\t\tconst tFar = Math.min(t2, t4);\n\t\tif (tNear > tFar || tFar < 0) return null;\n\t\tif (tNear > ray.length) return null;\n\t\tlet closestHit = null;\n\t\tconst parts = this.getWorldParts();\n\t\tfor (const part of parts) for (let i = 0; i < part.length; i++) {\n\t\t\tconst p1 = part[i];\n\t\t\tconst p2 = part[(i + 1) % part.length];\n\t\t\tif (!p1 || !p2) continue;\n\t\t\tconst hit = this.rayCastSegment(ray, p1, p2);\n\t\t\tif (hit) {\n\t\t\t\tif (!closestHit || hit.distance < closestHit.distance) closestHit = hit;\n\t\t\t}\n\t\t}\n\t\treturn closestHit;\n\t}\n\trayCastSegment(ray, p1, p2) {\n\t\tconst v1 = ray.origin;\n\t\tconst v2 = ray.origin.add(ray.direction);\n\t\tconst v3 = p1;\n\t\tconst v4 = p2;\n\t\tconst den = (v1.x - v2.x) * (v3.y - v4.y) - (v1.y - v2.y) * (v3.x - v4.x);\n\t\tif (den === 0) return null;\n\t\tconst t = ((v1.x - v3.x) * (v3.y - v4.y) - (v1.y - v3.y) * (v3.x - v4.x)) / den;\n\t\tconst u = -((v1.x - v2.x) * (v1.y - v3.y) - (v1.y - v2.y) * (v1.x - v3.x)) / den;\n\t\tif (t >= 0 && t <= ray.length && u >= 0 && u <= 1) {\n\t\t\tconst point = new Vector2(v1.x + t * (v2.x - v1.x), v1.y + t * (v2.y - v1.y));\n\t\t\tconst segmentDir = p2.sub(p1).normalize();\n\t\t\tlet normal = new Vector2(-segmentDir.y, segmentDir.x);\n\t\t\tif (normal.dot(ray.direction) > 0) normal = normal.mul(-1);\n\t\t\treturn {\n\t\t\t\tentity: this.entity,\n\t\t\t\tpoint,\n\t\t\t\tnormal,\n\t\t\t\tdistance: t\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\tgetWorldParts() {\n\t\tconst rotation = this.entity.rotation;\n\t\tconst cos = Math.cos(rotation);\n\t\tconst sin = Math.sin(rotation);\n\t\tconst px = this.entity.position.x;\n\t\tconst py = this.entity.position.y;\n\t\tconst worldParts = [];\n\t\tfor (const part of this.convexParts) {\n\t\t\tconst w = new Array(part.length);\n\t\t\tfor (let i = 0; i < part.length; i++) {\n\t\t\t\tconst v = part[i];\n\t\t\t\tif (!v) continue;\n\t\t\t\tw[i] = new Vector2(v.x * cos - v.y * sin + px, v.x * sin + v.y * cos + py);\n\t\t\t}\n\t\t\tworldParts.push(w);\n\t\t}\n\t\treturn worldParts;\n\t}\n};\nfunction closestPointOnSegment(a, b, p) {\n\tconst ab = b.sub(a);\n\tconst ap = p.sub(a);\n\tconst t = Math.max(0, Math.min(1, ap.dot(ab) / ab.dot(ab)));\n\treturn a.add(ab.mul(t));\n}\nfunction gatherSATAxes(a, b) {\n\tconst axes = [];\n\tconst pushAxis = (p, i) => {\n\t\tconst p0 = p[i];\n\t\tconst p1 = p[(i + 1) % p.length];\n\t\tif (!p0 || !p1) return;\n\t\tconst edge = p1.sub(p0);\n\t\tconst axis = new Vector2(-edge.y, edge.x).normalize();\n\t\taxes.push(axis);\n\t};\n\tfor (let i = 0; i < a.length; i++) pushAxis(a, i);\n\tfor (let i = 0; i < b.length; i++) pushAxis(b, i);\n\treturn axes;\n}\nfunction projectOntoAxis(poly, axis) {\n\tlet min = Number.POSITIVE_INFINITY;\n\tlet max = Number.NEGATIVE_INFINITY;\n\tfor (const v of poly) {\n\t\tconst p = v.dot(axis);\n\t\tif (p < min) min = p;\n\t\tif (p > max) max = p;\n\t}\n\treturn {\n\t\tmin,\n\t\tmax\n\t};\n}\nfunction intervalOverlap(minA, maxA, minB, maxB) {\n\treturn Math.min(maxA, maxB) - Math.max(minA, minB);\n}\nfunction polygonCentroid(poly) {\n\tlet cx = 0;\n\tlet cy = 0;\n\tfor (const v of poly) {\n\t\tcx += v.x;\n\t\tcy += v.y;\n\t}\n\tconst n = poly.length > 0 ? poly.length : 1;\n\treturn new Vector2(cx / n, cy / n);\n}\n//#endregion\n//#region ../physic/src/collision/detector.ts\nvar colliderCache = /* @__PURE__ */ new WeakMap();\n/**\n* Collision detector\n* \n* Handles collision detection between entities using their colliders.\n* Supports efficient broad-phase and narrow-phase detection.\n*/\n/**\n* Creates a collider for an entity based on its shape\n* \n* @param entity - Entity to create collider for\n* @returns Appropriate collider instance\n*/\nfunction createCollider(entity) {\n\tconst cached = colliderCache.get(entity);\n\tif (cached) return cached;\n\tlet collider = null;\n\tif (entityToPolygonConfig.has(entity)) collider = new PolygonCollider(entity);\n\telse if (entity.capsule) collider = new CapsuleCollider(entity);\n\telse if (entity.radius > 0) collider = new CircleCollider(entity);\n\telse if (entity.width > 0 && entity.height > 0) collider = new AABBCollider(entity);\n\tif (collider) colliderCache.set(entity, collider);\n\treturn collider;\n}\n/**\n* Tests collision between two entities\n* \n* @param entityA - First entity\n* @param entityB - Second entity\n* @returns Collision info if collision detected, null otherwise\n*/\nfunction testCollision(entityA, entityB) {\n\tif (!entityA.canCollideWith(entityB)) return null;\n\tif (entityA.isStatic() && entityB.isStatic()) return null;\n\tconst colliderA = createCollider(entityA);\n\tconst colliderB = createCollider(entityB);\n\tif (!colliderA || !colliderB) return null;\n\treturn colliderA.testCollision(colliderB);\n}\n//#endregion\n//#region ../physic/src/collision/spatial-hash.ts\n/**\n* Spatial hash cell containing entities\n*/\nvar SpatialHashCell = class {\n\tconstructor() {\n\t\tthis.entities = [];\n\t}\n\t/**\n\t* Adds an entity to this cell\n\t* \n\t* @param entity - Entity to add\n\t*/\n\tadd(entity) {\n\t\tif (this.entities.indexOf(entity) === -1) this.entities.push(entity);\n\t}\n\t/**\n\t* Removes an entity from this cell\n\t* \n\t* @param entity - Entity to remove\n\t*/\n\tremove(entity) {\n\t\tconst index = this.entities.indexOf(entity);\n\t\tif (index !== -1) {\n\t\t\tconst last = this.entities[this.entities.length - 1];\n\t\t\tif (last) this.entities[index] = last;\n\t\t\tthis.entities.pop();\n\t\t}\n\t}\n\t/**\n\t* Clears all entities from this cell\n\t*/\n\tclear() {\n\t\tthis.entities.length = 0;\n\t}\n};\n/**\n* Spatial hash grid for efficient collision detection\n* \n* Divides the world into a grid of cells and stores entities in cells\n* based on their position. This reduces collision checks from O(n²) to O(n).\n* \n* @example\n* ```typescript\n* const spatialHash = new SpatialHash(100, 10); // 100x100 cell size, 10x10 grid\n* spatialHash.insert(entity);\n* const nearby = spatialHash.query(entity);\n* ```\n*/\nvar SpatialHash = class {\n\t/**\n\t* Creates a new spatial hash\n\t* \n\t* @param cellSize - Size of each cell in world units\n\t* @param gridWidth - Number of cells horizontally\n\t* @param gridHeight - Number of cells vertically (default: same as width)\n\t*/\n\tconstructor(cellSize, gridWidth, gridHeight) {\n\t\tthis.cellSize = cellSize;\n\t\tthis.gridWidth = gridWidth;\n\t\tthis.gridHeight = gridHeight ?? gridWidth;\n\t\tthis.cells = /* @__PURE__ */ new Map();\n\t\tthis.entityCells = /* @__PURE__ */ new WeakMap();\n\t}\n\t/**\n\t* Converts world coordinates to grid coordinates\n\t* \n\t* @param x - World X coordinate\n\t* @param y - World Y coordinate\n\t* @returns Grid coordinates\n\t*/\n\tworldToGrid(x, y) {\n\t\treturn {\n\t\t\tx: Math.floor(x / this.cellSize),\n\t\t\ty: Math.floor(y / this.cellSize)\n\t\t};\n\t}\n\t/**\n\t* Creates a cell key from grid coordinates\n\t* \n\t* @param gridX - Grid X coordinate\n\t* @param gridY - Grid Y coordinate\n\t* @returns Numeric cell key\n\t*/\n\tgetKey(gridX, gridY) {\n\t\treturn (gridX & 65535) << 16 | gridY & 65535;\n\t}\n\t/**\n\t* Gets or creates a cell at grid coordinates\n\t* \n\t* @param key - Cell key\n\t* @returns Cell instance\n\t*/\n\tgetCell(key) {\n\t\tlet cell = this.cells.get(key);\n\t\tif (!cell) {\n\t\t\tcell = new SpatialHashCell();\n\t\t\tthis.cells.set(key, cell);\n\t\t}\n\t\treturn cell;\n\t}\n\t/**\n\t* Gets all cell keys that an entity's AABB overlaps\n\t* \n\t* @param entity - Entity to get cells for\n\t* @param outKeys - Array to store keys in (to avoid allocation)\n\t* @returns Number of keys added\n\t*/\n\tgetEntityKeys(entity, outKeys) {\n\t\tconst collider = createCollider(entity);\n\t\tif (!collider) return 0;\n\t\tconst bounds = collider.getBounds();\n\t\tconst minGrid = this.worldToGrid(bounds.minX, bounds.minY);\n\t\tconst maxGrid = this.worldToGrid(bounds.maxX, bounds.maxY);\n\t\tlet count = 0;\n\t\toutKeys.length = 0;\n\t\tfor (let x = minGrid.x; x <= maxGrid.x; x++) for (let y = minGrid.y; y <= maxGrid.y; y++) {\n\t\t\tconst wrappedX = (x % this.gridWidth + this.gridWidth) % this.gridWidth;\n\t\t\tconst wrappedY = (y % this.gridHeight + this.gridHeight) % this.gridHeight;\n\t\t\toutKeys.push(this.getKey(wrappedX, wrappedY));\n\t\t\tcount++;\n\t\t}\n\t\treturn count;\n\t}\n\t/**\n\t* Inserts an entity into the spatial hash\n\t* \n\t* @param entity - Entity to insert\n\t*/\n\tinsert(entity) {\n\t\tconst newKeys = [];\n\t\tthis.getEntityKeys(entity, newKeys);\n\t\tthis.entityCells.set(entity, newKeys);\n\t\tfor (const key of newKeys) this.getCell(key).add(entity);\n\t}\n\t/**\n\t* Removes an entity from the spatial hash\n\t* \n\t* @param entity - Entity to remove\n\t*/\n\tremove(entity) {\n\t\tconst keys = this.entityCells.get(entity);\n\t\tif (!keys) return;\n\t\tfor (const key of keys) {\n\t\t\tconst cell = this.cells.get(key);\n\t\t\tif (cell) cell.remove(entity);\n\t\t}\n\t\tthis.entityCells.delete(entity);\n\t}\n\t/**\n\t* Updates an entity's position in the spatial hash\n\t* \n\t* Removes and re-inserts the entity if it moved to different cells.\n\t* \n\t* @param entity - Entity to update\n\t*/\n\tupdate(entity) {\n\t\tconst oldKeys = this.entityCells.get(entity);\n\t\tconst newKeys = [];\n\t\tthis.getEntityKeys(entity, newKeys);\n\t\tif (oldKeys && oldKeys.length === newKeys.length) {\n\t\t\tlet match = true;\n\t\t\tfor (let i = 0; i < oldKeys.length; i++) if (oldKeys[i] !== newKeys[i]) {\n\t\t\t\tmatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (match) return;\n\t\t}\n\t\tif (oldKeys) for (const key of oldKeys) {\n\t\t\tconst cell = this.cells.get(key);\n\t\t\tif (cell) cell.remove(entity);\n\t\t}\n\t\tthis.entityCells.set(entity, newKeys);\n\t\tfor (const key of newKeys) this.getCell(key).add(entity);\n\t}\n\t/**\n\t* Queries entities near a given entity\n\t* \n\t* @param entity - Entity to query around\n\t* @param results - Optional Set to store results in (avoids allocation)\n\t* @returns Set of nearby entities (excluding the query entity)\n\t*/\n\tquery(entity, results = /* @__PURE__ */ new Set()) {\n\t\tlet keys = this.entityCells.get(entity);\n\t\tif (!keys) {\n\t\t\tkeys = [];\n\t\t\tthis.getEntityKeys(entity, keys);\n\t\t}\n\t\tresults.clear();\n\t\tfor (const key of keys) {\n\t\t\tconst cell = this.cells.get(key);\n\t\t\tif (cell) {\n\t\t\t\tconst entities = cell.entities;\n\t\t\t\tfor (let i = 0; i < entities.length; i++) {\n\t\t\t\t\tconst other = entities[i];\n\t\t\t\t\tif (other && other !== entity) results.add(other);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n\t/**\n\t* Queries entities in an AABB region\n\t* \n\t* @param bounds - AABB to query\n\t* @returns Set of entities in the region\n\t*/\n\tqueryAABB(bounds) {\n\t\tconst minGrid = this.worldToGrid(bounds.minX, bounds.minY);\n\t\tconst maxGrid = this.worldToGrid(bounds.maxX, bounds.maxY);\n\t\tconst results = /* @__PURE__ */ new Set();\n\t\tfor (let x = minGrid.x; x <= maxGrid.x; x++) for (let y = minGrid.y; y <= maxGrid.y; y++) {\n\t\t\tconst wrappedX = (x % this.gridWidth + this.gridWidth) % this.gridWidth;\n\t\t\tconst wrappedY = (y % this.gridHeight + this.gridHeight) % this.gridHeight;\n\t\t\tconst key = this.getKey(wrappedX, wrappedY);\n\t\t\tconst cell = this.cells.get(key);\n\t\t\tif (cell) for (const entity of cell.entities) results.add(entity);\n\t\t}\n\t\treturn results;\n\t}\n\t/**\n\t* Clears all entities from the spatial hash\n\t*/\n\tclear() {\n\t\tthis.cells.clear();\n\t}\n\t/**\n\t* Gets statistics about the spatial hash\n\t* \n\t* @returns Statistics object\n\t*/\n\tgetStats() {\n\t\tlet totalEntities = 0;\n\t\tfor (const cell of this.cells.values()) totalEntities += cell.entities.length;\n\t\treturn {\n\t\t\ttotalCells: this.gridWidth * this.gridHeight,\n\t\t\tusedCells: this.cells.size,\n\t\t\ttotalEntities,\n\t\t\taverageEntitiesPerCell: this.cells.size > 0 ? totalEntities / this.cells.size : 0\n\t\t};\n\t}\n\t/**\n\t* Casts a ray against entities in the spatial hash\n\t* \n\t* @param ray - Ray to cast\n\t* @param mask - Optional collision mask (layer)\n\t* @param filter - Optional filter function (return true to include entity)\n\t* @returns Raycast hit info if hit, null otherwise\n\t*/\n\traycast(ray, mask, filter) {\n\t\tconst start = ray.origin;\n\t\tconst end = ray.getPoint(Math.min(ray.length, 1e4));\n\t\tlet x0 = start.x;\n\t\tlet y0 = start.y;\n\t\tconst x1 = end.x;\n\t\tconst y1 = end.y;\n\t\tlet gx0 = Math.floor(x0 / this.cellSize);\n\t\tlet gy0 = Math.floor(y0 / this.cellSize);\n\t\tconst gx1 = Math.floor(x1 / this.cellSize);\n\t\tconst gy1 = Math.floor(y1 / this.cellSize);\n\t\tconst sx = x0 < x1 ? 1 : -1;\n\t\tconst sy = y0 < y1 ? 1 : -1;\n\t\tconst visitedEntities = /* @__PURE__ */ new Set();\n\t\tlet closestHit = null;\n\t\tconst checkCell = (gx, gy) => {\n\t\t\tconst wrappedX = (gx % this.gridWidth + this.gridWidth) % this.gridWidth;\n\t\t\tconst wrappedY = (gy % this.gridHeight + this.gridHeight) % this.gridHeight;\n\t\t\tconst key = this.getKey(wrappedX, wrappedY);\n\t\t\tconst cell = this.cells.get(key);\n\t\t\tif (cell) for (const entity of cell.entities) {\n\t\t\t\tif (visitedEntities.has(entity)) continue;\n\t\t\t\tvisitedEntities.add(entity);\n\t\t\t\tif (mask !== void 0 && (entity.collisionCategory & mask) === 0) continue;\n\t\t\t\tif (filter && !filter(entity)) continue;\n\t\t\t\tconst collider = createCollider(entity);\n\t\t\t\tif (collider) {\n\t\t\t\t\tconst hit = collider.raycast(ray);\n\t\t\t\t\tif (hit) {\n\t\t\t\t\t\tif (!closestHit || hit.distance < closestHit.distance) closestHit = hit;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tlet x = gx0;\n\t\tlet y = gy0;\n\t\tconst stepX = sx;\n\t\tconst stepY = sy;\n\t\tconst tDeltaX = this.cellSize / Math.abs(ray.direction.x);\n\t\tconst tDeltaY = this.cellSize / Math.abs(ray.direction.y);\n\t\tlet tMaxX = ray.direction.x > 0 ? ((x + 1) * this.cellSize - start.x) / ray.direction.x : (start.x - x * this.cellSize) / -ray.direction.x;\n\t\tif (ray.direction.x < 0) tMaxX = (start.x - x * this.cellSize) / -ray.direction.x;\n\t\telse tMaxX = ((x + 1) * this.cellSize - start.x) / ray.direction.x;\n\t\tlet tMaxY = ray.direction.y > 0 ? ((y + 1) * this.cellSize - start.y) / ray.direction.y : (start.y - y * this.cellSize) / -ray.direction.y;\n\t\tif (ray.direction.y < 0) tMaxY = (start.y - y * this.cellSize) / -ray.direction.y;\n\t\telse tMaxY = ((y + 1) * this.cellSize - start.y) / ray.direction.y;\n\t\tif (Math.abs(ray.direction.x) < 1e-9) tMaxX = Infinity;\n\t\tif (Math.abs(ray.direction.y) < 1e-9) tMaxY = Infinity;\n\t\tlet steps = 0;\n\t\tconst maxSteps = Math.abs(gx1 - gx0) + Math.abs(gy1 - gy0) + 10;\n\t\twhile (steps < maxSteps) {\n\t\t\tcheckCell(x, y);\n\t\t\tif (closestHit) {\n\t\t\t\tif (closestHit.distance < Math.min(tMaxX, tMaxY)) return closestHit;\n\t\t\t}\n\t\t\tif (tMaxX < tMaxY) {\n\t\t\t\ttMaxX += tDeltaX;\n\t\t\t\tx += stepX;\n\t\t\t} else {\n\t\t\t\ttMaxY += tDeltaY;\n\t\t\t\ty += stepY;\n\t\t\t}\n\t\t\tsteps++;\n\t\t\tif (closestHit && closestHit.distance < ray.length) {}\n\t\t}\n\t\treturn closestHit;\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/Ray.ts\n/**\n* Ray for raycasting\n*/\nvar Ray = class {\n\t/**\n\t* Creates a new ray\n\t* \n\t* @param origin - Ray origin\n\t* @param direction - Ray direction\n\t* @param length - Maximum length (default: Infinity)\n\t*/\n\tconstructor(origin, direction, length = Infinity) {\n\t\tthis.origin = origin.clone();\n\t\tthis.direction = direction.clone().normalizeInPlace();\n\t\tthis.length = length;\n\t}\n\t/**\n\t* Gets a point along the ray\n\t* \n\t* @param distance - Distance from origin\n\t* @returns Point at distance\n\t*/\n\tgetPoint(distance) {\n\t\treturn this.origin.add(this.direction.mul(distance));\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/raycast.ts\n/**\n* Casts a ray in the world using the spatial partition for broad-phase, then shape-specific narrow-phase.\n* Direction will be normalized internally.\n*\n* @param partition - Spatial partition to query\n* @param origin - Ray origin\n* @param direction - Ray direction (any length)\n* @param maxDistance - Maximum distance\n* @param mask - Optional collision mask (layer)\n* @param filter - Optional filter function (return true to include entity)\n* @returns Nearest hit or null\n*\n* @example\n* ```typescript\n* const hit = raycast(worldPartition, new Vector2(0,0), new Vector2(1,0), 1000);\n* if (hit) {\n* // handle\n* }\n* ```\n*/\nfunction raycast(partition, origin, direction, maxDistance, mask, filter) {\n\tconst dir = direction.length() > 0 ? direction.normalize() : new Vector2(1, 0);\n\tconst end = origin.add(dir.mul(maxDistance));\n\tconst candidates = partition.raycast(new Ray(origin, dir, maxDistance), mask, filter);\n\tif (candidates) return candidates;\n\tconst bounds = new AABB(Math.min(origin.x, end.x), Math.min(origin.y, end.y), Math.max(origin.x, end.x), Math.max(origin.y, end.y));\n\tconst entities = partition.queryAABB(bounds);\n\tlet best = null;\n\tfor (const e of entities) {\n\t\tif (mask !== void 0 && (e.collisionCategory & mask) === 0) continue;\n\t\tif (filter && !filter(e)) continue;\n\t\tconst collider = createCollider(e);\n\t\tif (!collider) continue;\n\t\tconst hit = raycastCollider(collider, origin, dir, maxDistance);\n\t\tif (!hit) continue;\n\t\tif (!best || hit.distance < best.distance) best = hit;\n\t}\n\treturn best;\n}\nfunction raycastCollider(collider, origin, dir, maxDistance) {\n\tif (collider instanceof CircleCollider) return raycastCircle(collider, origin, dir, maxDistance);\n\tif (collider instanceof AABBCollider) return raycastAABB(collider, origin, dir, maxDistance);\n\tif (collider instanceof PolygonCollider) return raycastPolygon(collider, origin, dir, maxDistance);\n\treturn null;\n}\nfunction raycastCircle(circle, origin, dir, maxDistance) {\n\tconst c = circle.getCenter();\n\tconst r = circle.getRadius();\n\tconst m = origin.sub(c);\n\tconst b = m.dot(dir);\n\tconst cval = m.dot(m) - r * r;\n\tif (cval > 0 && b > 0) return null;\n\tconst discr = b * b - cval;\n\tif (discr < 0) return null;\n\tconst t = -b - Math.sqrt(discr);\n\tif (t < 0) return null;\n\tif (t > maxDistance) return null;\n\tconst point = origin.add(dir.mul(t));\n\tconst normal = point.sub(c).normalize();\n\treturn {\n\t\tentity: circle.getEntity(),\n\t\tpoint,\n\t\tnormal,\n\t\tdistance: t\n\t};\n}\nfunction raycastAABB(box, origin, dir, maxDistance) {\n\tconst b = box.getBounds();\n\tlet tmin = 0;\n\tlet tmax = maxDistance;\n\tconst invDx = 1 / (dir.x === 0 ? 1e-9 : dir.x);\n\tconst invDy = 1 / (dir.y === 0 ? 1e-9 : dir.y);\n\tlet tx1 = (b.minX - origin.x) * invDx;\n\tlet tx2 = (b.maxX - origin.x) * invDx;\n\tlet ty1 = (b.minY - origin.y) * invDy;\n\tlet ty2 = (b.maxY - origin.y) * invDy;\n\tconst tminX = Math.min(tx1, tx2);\n\tconst tmaxX = Math.max(tx1, tx2);\n\tconst tminY = Math.min(ty1, ty2);\n\tconst tmaxY = Math.max(ty1, ty2);\n\ttmin = Math.max(tmin, Math.max(tminX, tminY));\n\ttmax = Math.min(tmax, Math.min(tmaxX, tmaxY));\n\tif (tmax < tmin || tmin < 0 || tmin > maxDistance) return null;\n\tconst point = origin.add(dir.mul(tmin));\n\tlet normal;\n\tif (tmin === tminX) normal = new Vector2(dir.x > 0 ? -1 : 1, 0);\n\telse normal = new Vector2(0, dir.y > 0 ? -1 : 1);\n\treturn {\n\t\tentity: box.getEntity(),\n\t\tpoint,\n\t\tnormal,\n\t\tdistance: tmin\n\t};\n}\nfunction raycastPolygon(poly, origin, dir, maxDistance) {\n\tconst end = origin.add(dir.mul(maxDistance));\n\tlet bestT = Number.POSITIVE_INFINITY;\n\tlet bestPoint = null;\n\tlet bestNormal = null;\n\tconst any = poly;\n\tconst parts = any[\"getWorldParts\"] ? any[\"getWorldParts\"]() : [];\n\tfor (const part of parts) for (let i = 0; i < part.length; i++) {\n\t\tconst a = part[i];\n\t\tconst b = part[(i + 1) % part.length];\n\t\tif (!a || !b) continue;\n\t\tconst hit = segmentRayIntersection(a, b, origin, end);\n\t\tif (!hit) continue;\n\t\tconst t = hit.distance;\n\t\tif (t >= 0 && t <= maxDistance && t < bestT) {\n\t\t\tbestT = t;\n\t\t\tbestPoint = hit.point;\n\t\t\tconst edge = b.sub(a);\n\t\t\tbestNormal = new Vector2(-edge.y, edge.x).normalize();\n\t\t}\n\t}\n\tif (!bestPoint || !bestNormal || bestT === Number.POSITIVE_INFINITY) return null;\n\treturn {\n\t\tentity: poly.getEntity(),\n\t\tpoint: bestPoint,\n\t\tnormal: bestNormal,\n\t\tdistance: bestT\n\t};\n}\nfunction segmentRayIntersection(a, b, r0, r1) {\n\tconst v1 = r0.sub(a);\n\tconst v2 = b.sub(a);\n\tconst v3 = new Vector2(-(r1.y - r0.y), r1.x - r0.x);\n\tconst denom = v2.dot(v3);\n\tif (Math.abs(denom) < 1e-9) return null;\n\tconst t1 = v2.cross(v1) / denom;\n\tconst t2 = v1.dot(v3) / denom;\n\tif (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n\t\tconst hitPoint = new Vector2(r0.x + (r1.x - r0.x) * t1, r0.y + (r1.y - r0.y) * t1);\n\t\treturn {\n\t\t\tpoint: hitPoint,\n\t\t\tdistance: hitPoint.sub(r0).length()\n\t\t};\n\t}\n\treturn null;\n}\n//#endregion\n//#region ../physic/src/collision/resolver.ts\n/**\n* Collision resolver\n* \n* Resolves collisions by separating entities and applying impulses.\n* Uses impulse-based resolution for stable, deterministic physics.\n* \n* @example\n* ```typescript\n* const resolver = new CollisionResolver();\n* resolver.resolve(collision);\n* ```\n*/\nvar CollisionResolver = class {\n\t/**\n\t* Creates a new collision resolver\n\t* \n\t* @param config - Resolver configuration\n\t*/\n\tconstructor(config = {}) {\n\t\tthis.config = {\n\t\t\tpositionCorrectionFactor: config.positionCorrectionFactor ?? .8,\n\t\t\tminPenetrationDepth: config.minPenetrationDepth ?? 1e-4,\n\t\t\tmaxPositionCorrection: config.maxPositionCorrection ?? 5\n\t\t};\n\t}\n\t/**\n\t* Resolves a collision\n\t* \n\t* Separates entities and applies collision response.\n\t* First checks if the collision should be resolved using resolution filters.\n\t* If any entity has a resolution filter that returns false, the collision\n\t* is skipped (entities pass through) but events are still fired.\n\t* \n\t* @param collision - Collision information to resolve\n\t*/\n\tresolve(collision) {\n\t\tconst { entityA, entityB, normal, depth } = collision;\n\t\tif (depth < this.config.minPenetrationDepth) return;\n\t\tif (!entityA.shouldResolveCollisionWith(entityB)) return;\n\t\tthis.separateEntities(entityA, entityB, normal, depth);\n\t\tthis.resolveVelocities(entityA, entityB, normal);\n\t}\n\t/**\n\t* Separates two entities by moving them apart\n\t* \n\t* This method applies position corrections to resolve penetration between\n\t* colliding entities. After applying corrections, it notifies position change\n\t* handlers to ensure proper synchronization with game logic (e.g., updating\n\t* owner.x/y signals for network sync).\n\t* \n\t* @param entityA - First entity\n\t* @param entityB - Second entity\n\t* @param normal - Separation normal (from A to B)\n\t* @param depth - Penetration depth\n\t*/\n\tseparateEntities(entityA, entityB, normal, depth) {\n\t\tconst totalInvMass = entityA.invMass + entityB.invMass;\n\t\tif (totalInvMass === 0) return;\n\t\tconst correction = Math.min(depth * this.config.positionCorrectionFactor, this.config.maxPositionCorrection);\n\t\tconst correctionA = normal.mul(-correction * (entityA.invMass / totalInvMass));\n\t\tconst correctionB = normal.mul(correction * (entityB.invMass / totalInvMass));\n\t\tif (!entityA.isStatic()) {\n\t\t\tentityA.position.addInPlace(correctionA);\n\t\t\tentityA.notifyPositionChange();\n\t\t}\n\t\tif (!entityB.isStatic()) {\n\t\t\tentityB.position.addInPlace(correctionB);\n\t\t\tentityB.notifyPositionChange();\n\t\t}\n\t}\n\t/**\n\t* Resolves velocities using impulse-based collision response\n\t* \n\t* @param entityA - First entity\n\t* @param entityB - Second entity\n\t* @param normal - Collision normal (from A to B)\n\t*/\n\tresolveVelocities(entityA, entityB, normal) {\n\t\tconst relativeVelocity = entityB.velocity.sub(entityA.velocity);\n\t\tconst velocityAlongNormal = relativeVelocity.dot(normal);\n\t\tif (velocityAlongNormal > 0) return;\n\t\tconst restitution = Math.min(entityA.restitution, entityB.restitution);\n\t\tconst totalInvMass = entityA.invMass + entityB.invMass;\n\t\tif (totalInvMass === 0) return;\n\t\tconst impulseScalar = -(1 + restitution) * velocityAlongNormal / totalInvMass;\n\t\tconst impulse = normal.mul(impulseScalar);\n\t\tif (!entityA.isStatic()) {\n\t\t\tentityA.velocity.addInPlace(impulse.mul(-entityA.invMass));\n\t\t\tentityA.notifyMovementChange();\n\t\t}\n\t\tif (!entityB.isStatic()) {\n\t\t\tentityB.velocity.addInPlace(impulse.mul(entityB.invMass));\n\t\t\tentityB.notifyMovementChange();\n\t\t}\n\t\tconst tangent = relativeVelocity.sub(normal.mul(velocityAlongNormal));\n\t\tconst tangentLength = tangent.length();\n\t\tif (tangentLength > 1e-5) {\n\t\t\tconst friction = Math.sqrt(entityA.friction * entityB.friction);\n\t\t\tconst frictionImpulse = tangent.normalize().mul(-tangentLength * friction / totalInvMass);\n\t\t\tconst maxFriction = Math.abs(impulseScalar * friction);\n\t\t\tif (frictionImpulse.length() > maxFriction) frictionImpulse.normalizeInPlace().mulInPlace(maxFriction);\n\t\t\tif (!entityA.isStatic()) {\n\t\t\t\tentityA.velocity.addInPlace(frictionImpulse.mul(-entityA.invMass));\n\t\t\t\tentityA.notifyMovementChange();\n\t\t\t}\n\t\t\tif (!entityB.isStatic()) {\n\t\t\t\tentityB.velocity.addInPlace(frictionImpulse.mul(entityB.invMass));\n\t\t\t\tentityB.notifyMovementChange();\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Resolves multiple collisions\n\t* \n\t* @param collisions - Array of collisions to resolve\n\t*/\n\tresolveAll(collisions) {\n\t\tfor (const collision of collisions) this.resolve(collision);\n\t}\n};\n//#endregion\n//#region ../physic/src/collision/sweep.ts\n/**\n* Computes time-of-impact for a pair of entities using simple analytical sweeps.\n* Supports Circle-Circle, Circle-AABB, AABB-AABB. Polygon falls back to AABB sweep.\n*\n* @param a - First entity\n* @param b - Second entity\n* @param delta - World displacement of entity A over the step (A's motion, B assumed static). For relative motion, pass (vA - vB) * dt.\n* @returns SweepResult or null if no hit in [0,1]\n*\n* @example\n* ```typescript\n* const rel = entityA.velocity.sub(entityB.velocity).mul(dt);\n* const hit = sweepEntities(entityA, entityB, rel);\n* ```\n*/\nfunction sweepEntities(a, b, delta) {\n\tconst ca = createCollider(a);\n\tconst cb = createCollider(b);\n\tif (!ca || !cb) return null;\n\treturn sweepColliders(ca, cb, delta);\n}\nfunction sweepColliders(a, b, delta) {\n\tif (a instanceof CircleCollider && b instanceof CircleCollider) return sweepCircleCircle(a, b, delta);\n\tif (a instanceof CircleCollider && b instanceof AABBCollider) return sweepCircleAABB(a, b, delta);\n\tif (a instanceof AABBCollider && b instanceof CircleCollider) {\n\t\tconst res = sweepCircleAABB(b, a, delta.mul(-1));\n\t\tif (!res) return null;\n\t\treturn {\n\t\t\ttime: res.time,\n\t\t\tnormal: res.normal.mul(-1),\n\t\t\tpoint: res.point\n\t\t};\n\t}\n\tif (a instanceof AABBCollider && b instanceof AABBCollider) return sweepAABBAABB(a, b, delta);\n\tif (a instanceof PolygonCollider || b instanceof PolygonCollider) {\n\t\tconst aa = a.getBounds();\n\t\tconst bb = b.getBounds();\n\t\tconst ca = new AABBCollider(a.getEntity());\n\t\tconst cb = new AABBCollider(b.getEntity());\n\t\tca.getBounds = () => aa;\n\t\tcb.getBounds = () => bb;\n\t\treturn sweepAABBAABB(ca, cb, delta);\n\t}\n\treturn null;\n}\nfunction sweepCircleCircle(a, b, delta) {\n\tconst p0 = a.getCenter();\n\tconst c = b.getCenter();\n\tconst r = a.getRadius() + b.getRadius();\n\tconst m = p0.sub(c);\n\tconst d = delta;\n\tconst A = d.dot(d);\n\tconst B = 2 * m.dot(d);\n\tconst C = m.dot(m) - r * r;\n\tconst disc = B * B - 4 * A * C;\n\tif (disc < 0 || A === 0) return null;\n\tconst t = (-B - Math.sqrt(disc)) / (2 * A);\n\tif (t < 0 || t > 1) return null;\n\tconst hitPoint = p0.add(d.mul(t));\n\tconst normal = hitPoint.sub(c).normalize();\n\treturn {\n\t\ttime: t,\n\t\tnormal,\n\t\tpoint: hitPoint.sub(normal.mul(a.getRadius()))\n\t};\n}\nfunction sweepCircleAABB(circle, box, delta) {\n\tconst r = circle.getRadius();\n\tconst b = box.getBounds();\n\tconst expanded = new AABB(b.minX - r, b.minY - r, b.maxX + r, b.maxY + r);\n\tconst p0 = circle.getCenter();\n\tconst dir = delta;\n\tconst res = rayVsAABB(new Vector2(0, 0), dir, new AABB(expanded.minX - p0.x, expanded.minY - p0.y, expanded.maxX - p0.x, expanded.maxY - p0.y), 1);\n\tif (!res) return null;\n\tconst t = res.t;\n\tconst hitPos = p0.add(dir.mul(t));\n\tconst normal = res.normal;\n\treturn {\n\t\ttime: t,\n\t\tnormal,\n\t\tpoint: hitPos.sub(normal.mul(r))\n\t};\n}\nfunction sweepAABBAABB(a, b, delta) {\n\tconst A = a.getBounds();\n\tconst B = b.getBounds();\n\tconst invDx = 1 / (delta.x === 0 ? 1e-9 : delta.x);\n\tconst invDy = 1 / (delta.y === 0 ? 1e-9 : delta.y);\n\tconst xEntry = (delta.x > 0 ? B.minX - A.maxX : B.maxX - A.minX) * invDx;\n\tconst xExit = (delta.x > 0 ? B.maxX - A.minX : B.minX - A.maxX) * invDx;\n\tconst yEntry = (delta.y > 0 ? B.minY - A.maxY : B.maxY - A.minY) * invDy;\n\tconst yExit = (delta.y > 0 ? B.maxY - A.minY : B.minY - A.maxY) * invDy;\n\tconst tEntry = Math.max(Math.min(xEntry, xExit), Math.min(yEntry, yExit));\n\tif (tEntry > Math.min(Math.max(xEntry, xExit), Math.max(yEntry, yExit)) || tEntry < 0 || tEntry > 1) return null;\n\tlet normal;\n\tif (Math.min(xEntry, xExit) > Math.min(yEntry, yExit)) normal = new Vector2(delta.x > 0 ? -1 : 1, 0);\n\telse normal = new Vector2(0, delta.y > 0 ? -1 : 1);\n\tconst hitPoint = new Vector2(delta.x !== 0 ? delta.x > 0 ? A.maxX : A.minX : (A.minX + A.maxX) * .5, delta.y !== 0 ? delta.y > 0 ? A.maxY : A.minY : (A.minY + A.maxY) * .5);\n\treturn {\n\t\ttime: tEntry,\n\t\tnormal,\n\t\tpoint: hitPoint\n\t};\n}\nfunction rayVsAABB(origin, dir, b, maxT) {\n\tconst invDx = 1 / (dir.x === 0 ? 1e-9 : dir.x);\n\tconst invDy = 1 / (dir.y === 0 ? 1e-9 : dir.y);\n\tlet tmin = 0;\n\tlet tmax = maxT;\n\tconst tx1 = (b.minX - origin.x) * invDx;\n\tconst tx2 = (b.maxX - origin.x) * invDx;\n\tconst ty1 = (b.minY - origin.y) * invDy;\n\tconst ty2 = (b.maxY - origin.y) * invDy;\n\tconst tminX = Math.min(tx1, tx2);\n\tconst tmaxX = Math.max(tx1, tx2);\n\tconst tminY = Math.min(ty1, ty2);\n\tconst tmaxY = Math.max(ty1, ty2);\n\ttmin = Math.max(tmin, Math.max(tminX, tminY));\n\ttmax = Math.min(tmax, Math.min(tmaxX, tmaxY));\n\tif (tmax < tmin || tmin < 0 || tmin > maxT) return null;\n\tconst normal = tmin === tminX ? new Vector2(dir.x > 0 ? -1 : 1, 0) : new Vector2(0, dir.y > 0 ? -1 : 1);\n\treturn {\n\t\tt: tmin,\n\t\tnormal\n\t};\n}\n//#endregion\n//#region ../physic/src/world/events.ts\n/**\n* Event system for physics world\n* \n* Manages event handlers for collisions, entity lifecycle, and other physics events.\n*/\nvar EventSystem = class {\n\tconstructor() {\n\t\tthis.collisionEnterHandlers = /* @__PURE__ */ new Set();\n\t\tthis.collisionExitHandlers = /* @__PURE__ */ new Set();\n\t\tthis.entityAddedHandlers = /* @__PURE__ */ new Set();\n\t\tthis.entityRemovedHandlers = /* @__PURE__ */ new Set();\n\t\tthis.entitySleepHandlers = /* @__PURE__ */ new Set();\n\t\tthis.entityWakeHandlers = /* @__PURE__ */ new Set();\n\t}\n\t/**\n\t* Registers a collision enter handler\n\t* \n\t* @param handler - Handler function\n\t* @returns Unsubscribe function\n\t*/\n\tonCollisionEnter(handler) {\n\t\tthis.collisionEnterHandlers.add(handler);\n\t\treturn () => this.collisionEnterHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers a collision exit handler\n\t* \n\t* @param handler - Handler function\n\t* @returns Unsubscribe function\n\t*/\n\tonCollisionExit(handler) {\n\t\tthis.collisionExitHandlers.add(handler);\n\t\treturn () => this.collisionExitHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers an entity added handler\n\t* \n\t* @param handler - Handler function\n\t* @returns Unsubscribe function\n\t*/\n\tonEntityAdded(handler) {\n\t\tthis.entityAddedHandlers.add(handler);\n\t\treturn () => this.entityAddedHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers an entity removed handler\n\t* \n\t* @param handler - Handler function\n\t* @returns Unsubscribe function\n\t*/\n\tonEntityRemoved(handler) {\n\t\tthis.entityRemovedHandlers.add(handler);\n\t\treturn () => this.entityRemovedHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers an entity sleep handler\n\t* \n\t* @param handler - Handler function\n\t* @returns Unsubscribe function\n\t*/\n\tonEntitySleep(handler) {\n\t\tthis.entitySleepHandlers.add(handler);\n\t\treturn () => this.entitySleepHandlers.delete(handler);\n\t}\n\t/**\n\t* Registers an entity wake handler\n\t* \n\t* @param handler - Handler function\n\t* @returns Unsubscribe function\n\t*/\n\tonEntityWake(handler) {\n\t\tthis.entityWakeHandlers.add(handler);\n\t\treturn () => this.entityWakeHandlers.delete(handler);\n\t}\n\t/**\n\t* Emits a collision enter event\n\t* \n\t* @param collision - Collision information\n\t*/\n\temitCollisionEnter(collision) {\n\t\tfor (const handler of this.collisionEnterHandlers) handler(collision);\n\t}\n\t/**\n\t* Emits a collision exit event\n\t* \n\t* @param collision - Collision information\n\t*/\n\temitCollisionExit(collision) {\n\t\tfor (const handler of this.collisionExitHandlers) handler(collision);\n\t}\n\t/**\n\t* Emits an entity added event\n\t* \n\t* @param entity - Entity that was added\n\t*/\n\temitEntityAdded(entity) {\n\t\tfor (const handler of this.entityAddedHandlers) handler(entity);\n\t}\n\t/**\n\t* Emits an entity removed event\n\t* \n\t* @param entity - Entity that was removed\n\t*/\n\temitEntityRemoved(entity) {\n\t\tfor (const handler of this.entityRemovedHandlers) handler(entity);\n\t}\n\t/**\n\t* Emits an entity sleep event\n\t* \n\t* @param entity - Entity that went to sleep\n\t*/\n\temitEntitySleep(entity) {\n\t\tfor (const handler of this.entitySleepHandlers) handler(entity);\n\t}\n\t/**\n\t* Emits an entity wake event\n\t* \n\t* @param entity - Entity that woke up\n\t*/\n\temitEntityWake(entity) {\n\t\tfor (const handler of this.entityWakeHandlers) handler(entity);\n\t}\n\t/**\n\t* Clears all event handlers\n\t*/\n\tclear() {\n\t\tthis.collisionEnterHandlers.clear();\n\t\tthis.collisionExitHandlers.clear();\n\t\tthis.entityAddedHandlers.clear();\n\t\tthis.entityRemovedHandlers.clear();\n\t\tthis.entitySleepHandlers.clear();\n\t\tthis.entityWakeHandlers.clear();\n\t}\n};\n//#endregion\n//#region ../physic/src/world/World.ts\n/**\n* Physics world\n* \n* Manages entities, physics simulation, collisions, and events.\n* \n* @example\n* ```typescript\n* const world = new World({ timeStep: 1/60 });\n* const entity = world.addEntity({ position: { x: 0, y: 0 }, radius: 10 });\n* world.step();\n* ```\n*/\nvar World = class {\n\t/**\n\t* Creates a new physics world\n\t* \n\t* @param config - World configuration\n\t*/\n\tconstructor(config = {}) {\n\t\tthis.entities = /* @__PURE__ */ new Set();\n\t\tthis.staticEntities = /* @__PURE__ */ new Set();\n\t\tthis.dynamicEntities = /* @__PURE__ */ new Set();\n\t\tthis.previousCollisions = /* @__PURE__ */ new Map();\n\t\tthis.queryResults = /* @__PURE__ */ new Set();\n\t\tthis.timeStep = config.timeStep ?? 1 / 60;\n\t\tthis.enableSleep = config.enableSleep ?? true;\n\t\tthis.tileWidth = config.tileWidth ?? 32;\n\t\tthis.tileHeight = config.tileHeight ?? 32;\n\t\tthis.sleepThreshold = config.sleepThreshold ?? .5;\n\t\tthis.sleepVelocityThreshold = config.sleepVelocityThreshold ?? .01;\n\t\tthis.positionQuantizationStep = typeof config.positionQuantizationStep === \"number\" && config.positionQuantizationStep > 0 ? config.positionQuantizationStep : null;\n\t\tthis.velocityQuantizationStep = typeof config.velocityQuantizationStep === \"number\" && config.velocityQuantizationStep > 0 ? config.velocityQuantizationStep : null;\n\t\tconst integratorConfig = {\n\t\t\tdeltaTime: this.timeStep,\n\t\t\tmethod: config.integrationMethod ?? IntegrationMethod.Euler\n\t\t};\n\t\tif (config.gravity) integratorConfig.gravity = config.gravity;\n\t\tthis.integrator = new Integrator(integratorConfig);\n\t\tthis.resolverIterations = Math.max(1, Math.floor(config.resolverIterations ?? 3));\n\t\tconst resolverConfig = {};\n\t\tif (config.positionCorrectionFactor !== void 0) resolverConfig.positionCorrectionFactor = config.positionCorrectionFactor;\n\t\tif (config.maxPositionCorrection !== void 0) resolverConfig.maxPositionCorrection = config.maxPositionCorrection;\n\t\tif (config.minPenetrationDepth !== void 0) resolverConfig.minPenetrationDepth = config.minPenetrationDepth;\n\t\tthis.resolver = new CollisionResolver(resolverConfig);\n\t\tif (config.spatialPartition) this.spatialPartition = config.spatialPartition;\n\t\telse this.spatialPartition = new SpatialHash(config.spatialCellSize ?? 100, config.spatialGridWidth ?? 100, config.spatialGridHeight ?? 100);\n\t\tthis.events = new EventSystem();\n\t}\n\t/**\n\t* Gets the event system\n\t* \n\t* @returns Event system instance\n\t*/\n\tgetEvents() {\n\t\treturn this.events;\n\t}\n\t/**\n\t* Returns the fixed simulation time step.\n\t*\n\t* @returns Time step in seconds\n\t*/\n\tgetTimeStep() {\n\t\treturn this.timeStep;\n\t}\n\t/**\n\t* Adds an entity to the world\n\t* \n\t* @param entity - Entity to add\n\t* @returns The added entity\n\t*/\n\taddEntity(entity) {\n\t\tthis.entities.add(entity);\n\t\tif (entity.isStatic()) this.staticEntities.add(entity);\n\t\telse this.dynamicEntities.add(entity);\n\t\tthis.spatialPartition.insert(entity);\n\t\tthis.events.emitEntityAdded(entity);\n\t\treturn entity;\n\t}\n\t/**\n\t* Performs a raycast against all entities in the world.\n\t* \n\t* @param origin - Starting point of the ray\n\t* @param direction - Direction of the ray (normalized)\n\t* @param length - Maximum length (default: Infinity)\n\t* @param mask - Optional collision mask (layer)\n\t* @param filter - Optional filter function (return true to include entity)\n\t* @returns Raycast hit info if hit, null otherwise\n\t*/\n\traycast(origin, direction, length = Infinity, mask, filter) {\n\t\tconst ray = new Ray(origin, direction, length);\n\t\treturn this.spatialPartition.raycast(ray, mask, filter);\n\t}\n\t/**\n\t* Creates and adds a new entity\n\t* \n\t* @param config - Entity configuration\n\t* @returns Created entity\n\t*/\n\tcreateEntity(config) {\n\t\tconst entity = new Entity(config);\n\t\treturn this.addEntity(entity);\n\t}\n\t/**\n\t* Removes an entity from the world\n\t* \n\t* @param entity - Entity to remove\n\t*/\n\tremoveEntity(entity) {\n\t\tif (this.entities.delete(entity)) {\n\t\t\tthis.staticEntities.delete(entity);\n\t\t\tthis.dynamicEntities.delete(entity);\n\t\t\tthis.spatialPartition.remove(entity);\n\t\t\tthis.events.emitEntityRemoved(entity);\n\t\t}\n\t}\n\t/**\n\t* Gets all entities in the world\n\t* \n\t* @returns Array of entities\n\t*/\n\tgetEntities() {\n\t\treturn Array.from(this.entities);\n\t}\n\t/**\n\t* Gets an entity by UUID\n\t* \n\t* @param uuid - Entity UUID\n\t* @returns Entity or undefined\n\t*/\n\tgetEntityByUUID(uuid) {\n\t\tfor (const entity of this.entities) if (entity.uuid === uuid) return entity;\n\t}\n\t/**\n\t* Steps the physics simulation forward\n\t* \n\t* Updates all entities, detects and resolves collisions.\n\t*/\n\tstep() {\n\t\tthis.refreshDynamicEntitiesInPartition();\n\t\tfor (const entity of this.dynamicEntities) if (!entity.isSleeping()) {\n\t\t\tconst startPos = entity.position.clone();\n\t\t\tthis.integrator.integrate(entity);\n\t\t\tthis.updateEntityTile(entity, startPos);\n\t\t\tif (entity.continuous) this.performCCD(entity);\n\t\t}\n\t\tlet firstPassCollisions = [];\n\t\tfor (let iteration = 0; iteration < this.resolverIterations; iteration++) {\n\t\t\tconst collisions = this.detectCollisions();\n\t\t\tif (iteration === 0) firstPassCollisions = collisions;\n\t\t\tif (collisions.length === 0) break;\n\t\t\tthis.sortCollisionsForDeterminism(collisions);\n\t\t\tthis.resolver.resolveAll(collisions);\n\t\t\tif (iteration + 1 < this.resolverIterations) this.refreshDynamicEntitiesInPartition();\n\t\t}\n\t\tif (this.positionQuantizationStep !== null || this.velocityQuantizationStep !== null) this.quantizeEntities();\n\t\tthis.handleCollisionEvents(firstPassCollisions);\n\t\tif (this.enableSleep) this.updateSleepState();\n\t}\n\t/**\n\t* Detects collisions using spatial partition\n\t* \n\t* @returns Array of collision infos\n\t*/\n\t/**\n\t* Detects collisions using spatial partition\n\t* \n\t* @returns Array of collision infos\n\t*/\n\tdetectCollisions() {\n\t\tconst collisions = [];\n\t\tfor (const entity of this.dynamicEntities) {\n\t\t\tconst nearby = this.spatialPartition.query(entity, this.queryResults);\n\t\t\tfor (const other of nearby) {\n\t\t\t\tif (other.isDynamic() && entity.uuid > other.uuid) continue;\n\t\t\t\tconst collision = testCollision(entity, other);\n\t\t\t\tif (collision) collisions.push(collision);\n\t\t\t}\n\t\t}\n\t\treturn collisions;\n\t}\n\tsortCollisionsForDeterminism(collisions) {\n\t\tcollisions.sort((a, b) => {\n\t\t\tconst keyA = this.getCollisionKey(a);\n\t\t\tconst keyB = this.getCollisionKey(b);\n\t\t\treturn keyA.localeCompare(keyB);\n\t\t});\n\t}\n\tgetCollisionKey(collision) {\n\t\tconst idA = collision.entityA.uuid;\n\t\tconst idB = collision.entityB.uuid;\n\t\treturn idA < idB ? `${idA}-${idB}` : `${idB}-${idA}`;\n\t}\n\t/**\n\t* Handles collision enter/exit events\n\t* \n\t* @param collisions - Current frame collisions\n\t*/\n\thandleCollisionEvents(collisions) {\n\t\tconst currentCollisions = /* @__PURE__ */ new Map();\n\t\tfor (const collision of collisions) {\n\t\t\tconst pairKey = collision.entityA.uuid < collision.entityB.uuid ? `${collision.entityA.uuid}-${collision.entityB.uuid}` : `${collision.entityB.uuid}-${collision.entityA.uuid}`;\n\t\t\tcurrentCollisions.set(pairKey, collision);\n\t\t\tif (!this.previousCollisions.has(pairKey)) {\n\t\t\t\tthis.events.emitCollisionEnter(collision);\n\t\t\t\tcollision.entityA.notifyCollisionEnter(collision, collision.entityB);\n\t\t\t\tcollision.entityB.notifyCollisionEnter(collision, collision.entityA);\n\t\t\t}\n\t\t}\n\t\tfor (const [pairKey, collision] of this.previousCollisions) if (!currentCollisions.has(pairKey)) {\n\t\t\tthis.events.emitCollisionExit(collision);\n\t\t\tcollision.entityA.notifyCollisionExit(collision, collision.entityB);\n\t\t\tcollision.entityB.notifyCollisionExit(collision, collision.entityA);\n\t\t}\n\t\tthis.previousCollisions = currentCollisions;\n\t}\n\t/**\n\t* Updates sleep state for entities\n\t*/\n\tupdateSleepState() {\n\t\tfor (const entity of this.entities) {\n\t\t\tif (entity.isStatic() || entity.isSleeping()) continue;\n\t\t\tconst speed = entity.velocity.length();\n\t\t\tconst angularSpeed = Math.abs(entity.angularVelocity);\n\t\t\tif (speed < this.sleepVelocityThreshold && angularSpeed < this.sleepVelocityThreshold) {\n\t\t\t\tentity.timeSinceMovement += this.timeStep;\n\t\t\t\tif (entity.timeSinceMovement >= this.sleepThreshold) {\n\t\t\t\t\tentity.sleep();\n\t\t\t\t\tthis.events.emitEntitySleep(entity);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tentity.timeSinceMovement = 0;\n\t\t\t\tif (entity.isSleeping()) {\n\t\t\t\t\tentity.wakeUp();\n\t\t\t\t\tthis.events.emitEntityWake(entity);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Clears all entities from the world\n\t*/\n\tclear() {\n\t\tfor (const entity of this.entities) this.events.emitEntityRemoved(entity);\n\t\tthis.entities.clear();\n\t\tthis.spatialPartition.clear();\n\t\tthis.previousCollisions.clear();\n\t}\n\tquantizeEntities() {\n\t\tfor (const entity of this.dynamicEntities) {\n\t\t\tif (this.positionQuantizationStep !== null) {\n\t\t\t\tentity.position.x = this.quantizeValue(entity.position.x, this.positionQuantizationStep);\n\t\t\t\tentity.position.y = this.quantizeValue(entity.position.y, this.positionQuantizationStep);\n\t\t\t}\n\t\t\tif (this.velocityQuantizationStep !== null) {\n\t\t\t\tentity.velocity.x = this.quantizeValue(entity.velocity.x, this.velocityQuantizationStep);\n\t\t\t\tentity.velocity.y = this.quantizeValue(entity.velocity.y, this.velocityQuantizationStep);\n\t\t\t}\n\t\t}\n\t}\n\tquantizeValue(value, step) {\n\t\treturn Math.round(value / step) * step;\n\t}\n\trefreshDynamicEntitiesInPartition() {\n\t\tfor (const entity of this.dynamicEntities) this.spatialPartition.update(entity);\n\t}\n\t/**\n\t* Gets statistics about the world\n\t* \n\t* @returns Statistics object\n\t*/\n\tgetStats() {\n\t\tlet dynamic = 0;\n\t\tlet static_ = 0;\n\t\tlet sleeping = 0;\n\t\tfor (const entity of this.entities) {\n\t\t\tif (entity.isStatic()) static_++;\n\t\t\telse dynamic++;\n\t\t\tif (entity.isSleeping()) sleeping++;\n\t\t}\n\t\treturn {\n\t\t\ttotalEntities: this.entities.size,\n\t\t\tdynamicEntities: dynamic,\n\t\t\tstaticEntities: static_,\n\t\t\tsleepingEntities: sleeping\n\t\t};\n\t}\n\t/**\n\t* Performs Continuous Collision Detection (CCD) for an entity\n\t* \n\t* @param entity - Entity to check\n\t*/\n\t/**\n\t* Updates entity tile position and triggers hooks\n\t* \n\t* @param entity - Entity to update\n\t* @param previousPosition - Position before integration\n\t*/\n\tupdateEntityTile(entity, previousPosition) {\n\t\tconst oldTileX = Math.floor(previousPosition.x / this.tileWidth);\n\t\tconst oldTileY = Math.floor(previousPosition.y / this.tileHeight);\n\t\tconst newTileX = Math.floor(entity.position.x / this.tileWidth);\n\t\tconst newTileY = Math.floor(entity.position.y / this.tileHeight);\n\t\tif (entity.currentTile.x === 0 && entity.currentTile.y === 0 && (oldTileX !== 0 || oldTileY !== 0)) entity.currentTile.set(oldTileX, oldTileY);\n\t\tif (newTileX !== oldTileX || newTileY !== oldTileY) {\n\t\t\tif (!entity.checkCanEnterTile(newTileX, newTileY)) {\n\t\t\t\tentity.position.copyFrom(previousPosition);\n\t\t\t\tentity.velocity.set(0, 0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tentity.notifyLeaveTile(oldTileX, oldTileY);\n\t\t\tentity.currentTile.set(newTileX, newTileY);\n\t\t\tentity.notifyEnterTile(newTileX, newTileY);\n\t\t}\n\t}\n\tperformCCD(entity) {\n\t\tconst dt = this.timeStep;\n\t\tconst delta = entity.velocity.mul(dt);\n\t\tif (delta.length() < entity.radius) return;\n\t\tconst collider = createCollider(entity);\n\t\tif (!collider) return;\n\t\tconst currentBounds = collider.getBounds();\n\t\tconst originalBounds = currentBounds.translate(-delta.x, -delta.y);\n\t\tconst sweptBounds = currentBounds.union(originalBounds);\n\t\tconst nearby = this.spatialPartition.queryAABB(sweptBounds);\n\t\tlet minTime = 1;\n\t\tlet collision = null;\n\t\tfor (const other of nearby) {\n\t\t\tif (other === entity || !other.isStatic()) continue;\n\t\t\tif (!entity.canCollideWith(other)) continue;\n\t\t\tconst originalPos = entity.position.clone();\n\t\t\tentity.position.subInPlace(delta);\n\t\t\tconst hit = sweepEntities(entity, other, delta);\n\t\t\tentity.position.copyFrom(originalPos);\n\t\t\tif (hit && hit.time < minTime) {\n\t\t\t\tminTime = hit.time;\n\t\t\t\tcollision = hit;\n\t\t\t}\n\t\t}\n\t\tif (collision && minTime < 1) {\n\t\t\tconst correction = collision.normal.mul(.001);\n\t\t\tentity.position.subInPlace(delta.mul(1 - minTime)).addInPlace(correction);\n\t\t\tconst vn = entity.velocity.dot(collision.normal);\n\t\t\tif (vn < 0) entity.velocity.subInPlace(collision.normal.mul(vn));\n\t\t}\n\t}\n};\n//#endregion\n//#region ../physic/src/region/Region.ts\n/**\n* Physical region in a distributed world\n* \n* Represents an independent simulation zone that can contain entities.\n* Regions can overlap to allow smooth entity transitions.\n* \n* @example\n* ```typescript\n* const region = new Region({\n* bounds: new AABB(0, 0, 100, 100),\n* overlap: 10\n* });\n* ```\n*/\nvar Region = class {\n\t/**\n\t* Creates a new region\n\t* \n\t* @param config - Region configuration\n\t*/\n\tconstructor(config) {\n\t\tthis.entities = /* @__PURE__ */ new Set();\n\t\tthis.bounds = config.bounds.clone();\n\t\tthis.overlap = config.overlap ?? 0;\n\t\tthis.active = config.active ?? true;\n\t\tthis.world = new World({\n\t\t\tspatialCellSize: 50,\n\t\t\tspatialGridWidth: 50,\n\t\t\tspatialGridHeight: 50\n\t\t});\n\t}\n\t/**\n\t* Gets the region bounds\n\t* \n\t* @returns AABB bounds\n\t*/\n\tgetBounds() {\n\t\treturn this.bounds.clone();\n\t}\n\t/**\n\t* Gets the expanded bounds including overlap\n\t* \n\t* @returns Expanded AABB\n\t*/\n\tgetExpandedBounds() {\n\t\treturn this.bounds.expand(this.overlap);\n\t}\n\t/**\n\t* Checks if a point is inside this region\n\t* \n\t* @param point - Point to check\n\t* @returns True if point is inside\n\t*/\n\tcontains(point) {\n\t\treturn this.bounds.contains(point);\n\t}\n\t/**\n\t* Checks if an entity should belong to this region\n\t* \n\t* @param entity - Entity to check\n\t* @returns True if entity should be in this region\n\t*/\n\tshouldContain(entity) {\n\t\treturn this.bounds.contains(entity.position);\n\t}\n\t/**\n\t* Adds an entity to this region\n\t* \n\t* @param entity - Entity to add\n\t*/\n\taddEntity(entity) {\n\t\tif (this.entities.has(entity)) return;\n\t\tthis.entities.add(entity);\n\t\tthis.world.addEntity(entity);\n\t}\n\t/**\n\t* Removes an entity from this region\n\t* \n\t* @param entity - Entity to remove\n\t*/\n\tremoveEntity(entity) {\n\t\tif (this.entities.delete(entity)) this.world.removeEntity(entity);\n\t}\n\t/**\n\t* Gets all entities in this region\n\t* \n\t* @returns Array of entities\n\t*/\n\tgetEntities() {\n\t\treturn Array.from(this.entities);\n\t}\n\t/**\n\t* Steps the region's physics simulation\n\t*/\n\tstep() {\n\t\tif (!this.active) return;\n\t\tthis.world.step();\n\t}\n\t/**\n\t* Activates this region\n\t*/\n\tactivate() {\n\t\tthis.active = true;\n\t}\n\t/**\n\t* Deactivates this region\n\t*/\n\tdeactivate() {\n\t\tthis.active = false;\n\t}\n\t/**\n\t* Checks if this region is active\n\t* \n\t* @returns True if active\n\t*/\n\tisActive() {\n\t\treturn this.active;\n\t}\n\t/**\n\t* Gets the world instance for this region\n\t* \n\t* @returns World instance\n\t*/\n\tgetWorld() {\n\t\treturn this.world;\n\t}\n\t/**\n\t* Checks if this region overlaps with another region\n\t* \n\t* @param other - Other region to check\n\t* @returns True if regions overlap\n\t*/\n\toverlaps(other) {\n\t\tconst expandedA = this.getExpandedBounds();\n\t\tconst expandedB = other.getExpandedBounds();\n\t\treturn expandedA.intersects(expandedB);\n\t}\n\t/**\n\t* Gets entities that might need migration to neighboring regions\n\t* \n\t* @returns Array of entities near region boundaries\n\t*/\n\tgetBoundaryEntities() {\n\t\tconst boundaryEntities = [];\n\t\tconst expandedBounds = this.getExpandedBounds();\n\t\tfor (const entity of this.entities) if (expandedBounds.contains(entity.position) && !this.bounds.contains(entity.position)) boundaryEntities.push(entity);\n\t\treturn boundaryEntities;\n\t}\n};\n//#endregion\n//#region ../physic/src/region/RegionManager.ts\n/**\n* Region manager\n* \n* Manages multiple regions in a distributed physics world.\n* Handles entity migration between regions and region activation/deactivation.\n* \n* @example\n* ```typescript\n* const manager = new RegionManager({\n* worldBounds: new AABB(0, 0, 1000, 1000),\n* regionSize: 200,\n* overlap: 20\n* });\n* ```\n*/\nvar RegionManager = class {\n\t/**\n\t* Creates a new region manager\n\t* \n\t* @param config - Manager configuration\n\t*/\n\tconstructor(config) {\n\t\tthis.regions = [];\n\t\tthis.regionMap = /* @__PURE__ */ new Map();\n\t\tthis.entityRegionMap = /* @__PURE__ */ new Map();\n\t\tthis.config = {\n\t\t\tworldBounds: config.worldBounds,\n\t\t\tregionSize: config.regionSize,\n\t\t\toverlap: config.overlap ?? 0,\n\t\t\tautoActivate: config.autoActivate ?? true\n\t\t};\n\t\tthis.createRegions();\n\t}\n\t/**\n\t* Creates the grid of regions\n\t*/\n\tcreateRegions() {\n\t\tconst { worldBounds, regionSize, overlap } = this.config;\n\t\tconst worldWidth = worldBounds.getWidth();\n\t\tconst worldHeight = worldBounds.getHeight();\n\t\tconst cols = Math.ceil(worldWidth / regionSize);\n\t\tconst rows = Math.ceil(worldHeight / regionSize);\n\t\tfor (let row = 0; row < rows; row++) for (let col = 0; col < cols; col++) {\n\t\t\tconst minX = worldBounds.minX + col * regionSize;\n\t\t\tconst minY = worldBounds.minY + row * regionSize;\n\t\t\tconst region = new Region({\n\t\t\t\tbounds: new AABB(minX, minY, Math.min(minX + regionSize, worldBounds.maxX), Math.min(minY + regionSize, worldBounds.maxY)),\n\t\t\t\toverlap,\n\t\t\t\tactive: !this.config.autoActivate\n\t\t\t});\n\t\t\tconst key = this.getRegionKey(col, row);\n\t\t\tthis.regions.push(region);\n\t\t\tthis.regionMap.set(key, region);\n\t\t}\n\t}\n\t/**\n\t* Gets a region key from grid coordinates\n\t* \n\t* @param col - Column index\n\t* @param row - Row index\n\t* @returns Region key string\n\t*/\n\tgetRegionKey(col, row) {\n\t\treturn `${col},${row}`;\n\t}\n\t/**\n\t* Gets the region containing a point\n\t* \n\t* @param point - Point to find region for\n\t* @returns Region or null\n\t*/\n\tgetRegionAt(point) {\n\t\tfor (const region of this.regions) if (region.contains(point)) return region;\n\t\treturn null;\n\t}\n\t/**\n\t* Gets all regions that overlap with an AABB\n\t* \n\t* @param bounds - AABB to check\n\t* @returns Array of overlapping regions\n\t*/\n\tgetRegionsInBounds(bounds) {\n\t\tconst result = [];\n\t\tfor (const region of this.regions) if (region.getExpandedBounds().intersects(bounds)) result.push(region);\n\t\treturn result;\n\t}\n\t/**\n\t* Adds an entity to the appropriate region\n\t* \n\t* @param entity - Entity to add\n\t*/\n\taddEntity(entity) {\n\t\tconst region = this.getRegionAt(entity.position);\n\t\tif (region) {\n\t\t\tregion.addEntity(entity);\n\t\t\tthis.entityRegionMap.set(entity, region);\n\t\t\tif (this.config.autoActivate) region.activate();\n\t\t}\n\t}\n\t/**\n\t* Removes an entity from its region\n\t* \n\t* @param entity - Entity to remove\n\t*/\n\tremoveEntity(entity) {\n\t\tconst region = this.entityRegionMap.get(entity);\n\t\tif (region) {\n\t\t\tregion.removeEntity(entity);\n\t\t\tthis.entityRegionMap.delete(entity);\n\t\t\tif (this.config.autoActivate && region.getEntities().length === 0) region.deactivate();\n\t\t}\n\t}\n\t/**\n\t* Updates entity positions and migrates them between regions if needed\n\t*/\n\tupdateEntities() {\n\t\tconst entitiesToMigrate = [];\n\t\tfor (const [entity, currentRegion] of this.entityRegionMap) if (!currentRegion.shouldContain(entity)) {\n\t\t\tconst newRegion = this.getRegionAt(entity.position);\n\t\t\tif (newRegion && newRegion !== currentRegion) entitiesToMigrate.push({\n\t\t\t\tentity,\n\t\t\t\tnewRegion\n\t\t\t});\n\t\t}\n\t\tfor (const { entity, newRegion } of entitiesToMigrate) {\n\t\t\tconst oldRegion = this.entityRegionMap.get(entity);\n\t\t\tif (oldRegion) oldRegion.removeEntity(entity);\n\t\t\tnewRegion.addEntity(entity);\n\t\t\tthis.entityRegionMap.set(entity, newRegion);\n\t\t\tif (this.config.autoActivate) newRegion.activate();\n\t\t}\n\t}\n\t/**\n\t* Steps all active regions\n\t*/\n\tstep() {\n\t\tthis.updateEntities();\n\t\tfor (const region of this.regions) if (region.isActive()) region.step();\n\t}\n\t/**\n\t* Gets all regions\n\t* \n\t* @returns Array of all regions\n\t*/\n\tgetRegions() {\n\t\treturn [...this.regions];\n\t}\n\t/**\n\t* Gets active regions\n\t* \n\t* @returns Array of active regions\n\t*/\n\tgetActiveRegions() {\n\t\treturn this.regions.filter((r) => r.isActive());\n\t}\n\t/**\n\t* Gets the region containing an entity\n\t* \n\t* @param entity - Entity to find region for\n\t* @returns Region or null\n\t*/\n\tgetEntityRegion(entity) {\n\t\treturn this.entityRegionMap.get(entity) ?? null;\n\t}\n\t/**\n\t* Clears all entities from all regions\n\t*/\n\tclear() {\n\t\tfor (const region of this.regions) {\n\t\t\tconst entities = region.getEntities();\n\t\t\tfor (const entity of entities) region.removeEntity(entity);\n\t\t}\n\t\tthis.entityRegionMap.clear();\n\t}\n\t/**\n\t* Gets statistics about regions\n\t* \n\t* @returns Statistics object\n\t*/\n\tgetStats() {\n\t\tlet totalEntities = 0;\n\t\tfor (const region of this.regions) totalEntities += region.getEntities().length;\n\t\treturn {\n\t\t\ttotalRegions: this.regions.length,\n\t\t\tactiveRegions: this.getActiveRegions().length,\n\t\t\ttotalEntities\n\t\t};\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/adapters/EntityMovementBody.ts\n/**\n* Wraps a physics entity to expose the generic `MovementBody` interface.\n*/\nvar EntityMovementBody = class {\n\tconstructor(entity) {\n\t\tthis.entity = entity;\n\t}\n\tget id() {\n\t\treturn this.entity.uuid;\n\t}\n\tget position() {\n\t\treturn this.entity.position;\n\t}\n\tget velocity() {\n\t\treturn this.entity.velocity;\n\t}\n\tsetVelocity(velocity) {\n\t\tthis.entity.setVelocity(velocity);\n\t}\n\ttranslate(delta) {\n\t\tthis.entity.position.addInPlace(new Vector2(delta.x, delta.y));\n\t}\n\tisStatic() {\n\t\treturn this.entity.isStatic();\n\t}\n\t/**\n\t* Returns the underlying entity reference.\n\t*/\n\tgetEntity() {\n\t\treturn this.entity;\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/MovementManager.ts\n/**\n* Manages movement strategies assigned to entities.\n*\n* The manager executes strategies before each physics step, removes completed\n* behaviours and exposes utilities to inspect and maintain assignments.\n*\n* @example\n* ```typescript\n* const manager = new MovementManager((id) => engine.getEntityByUUID(id));\n* manager.add(playerEntity, new LinearMove({ x: 2, y: 0 }));\n*\n* // Game loop\n* manager.update(deltaSeconds);\n* engine.step();\n* ```\n*/\nvar MovementManager$1 = class MovementManager$1 {\n\tconstructor(resolveEntity) {\n\t\tthis.resolveEntity = resolveEntity;\n\t\tthis.entries = /* @__PURE__ */ new Map();\n\t\tthis.entityWrappers = /* @__PURE__ */ new WeakMap();\n\t}\n\t/**\n\t* Convenience factory that binds the manager to a physics engine.\n\t*\n\t* @param engine - Physics engine whose entities will be controlled\n\t* @returns A movement manager configured with an entity resolver\n\t*/\n\tstatic forEngine(engine) {\n\t\tlet manager;\n\t\tmanager = new MovementManager$1((id) => {\n\t\t\tconst entity = engine.getEntityByUUID(id);\n\t\t\treturn entity ? manager.wrapEntity(entity) : void 0;\n\t\t});\n\t\treturn manager;\n\t}\n\t/**\n\t* Adds a movement strategy to an entity.\n\t* \n\t* Returns a Promise that resolves when the movement completes (when `isFinished()` returns true).\n\t* If the strategy doesn't implement `isFinished()`, the Promise resolves immediately after adding.\n\t*\n\t* @param target - Entity instance or entity UUID when a resolver is configured\n\t* @param strategy - Strategy to execute\n\t* @param options - Optional callbacks for movement lifecycle events\n\t* @returns Promise that resolves when the movement completes\n\t* \n\t* @example\n\t* ```typescript\n\t* // Simple usage - fire and forget\n\t* manager.add(player, new Dash(8, { x: 1, y: 0 }, 200));\n\t* \n\t* // Wait for completion\n\t* await manager.add(player, new Dash(8, { x: 1, y: 0 }, 200));\n\t* console.log('Dash finished!');\n\t* \n\t* // With callbacks\n\t* await manager.add(player, new Knockback({ x: -1, y: 0 }, 5, 300), {\n\t* onStart: () => {\n\t* player.directionFixed = true;\n\t* player.animationFixed = true;\n\t* },\n\t* onComplete: () => {\n\t* player.directionFixed = false;\n\t* player.animationFixed = false;\n\t* }\n\t* });\n\t* ```\n\t*/\n\tadd(target, strategy, options) {\n\t\tconst body = this.resolveTarget(target);\n\t\tconst key = body.id;\n\t\tif (!this.entries.has(key)) this.entries.set(key, {\n\t\t\tbody,\n\t\t\tstrategies: []\n\t\t});\n\t\tif (!strategy.isFinished) {\n\t\t\tconst entry = {\n\t\t\t\tstrategy,\n\t\t\t\tstarted: false\n\t\t\t};\n\t\t\tif (options) entry.options = options;\n\t\t\tthis.entries.get(key).strategies.push(entry);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\treturn new Promise((resolve) => {\n\t\t\tconst entry = {\n\t\t\t\tstrategy,\n\t\t\t\tresolve,\n\t\t\t\tstarted: false\n\t\t\t};\n\t\t\tif (options) entry.options = options;\n\t\t\tthis.entries.get(key).strategies.push(entry);\n\t\t});\n\t}\n\t/**\n\t* Removes a specific strategy from an entity.\n\t* \n\t* Note: This will NOT trigger the onComplete callback or resolve the Promise.\n\t* Use this when you want to cancel a movement without completion.\n\t*\n\t* @param target - Entity instance or identifier\n\t* @param strategy - Strategy instance to remove\n\t* @returns True when the strategy has been removed\n\t*/\n\tremove(target, strategy) {\n\t\tconst body = this.resolveTarget(target);\n\t\tconst entry = this.entries.get(body.id);\n\t\tif (!entry) return false;\n\t\tconst index = entry.strategies.findIndex((e) => e.strategy === strategy);\n\t\tif (index === -1) return false;\n\t\tentry.strategies.splice(index, 1);\n\t\tif (entry.strategies.length === 0) this.entries.delete(body.id);\n\t\treturn true;\n\t}\n\t/**\n\t* Removes all strategies from an entity.\n\t*\n\t* @param target - Entity or identifier\n\t*/\n\tclear(target) {\n\t\tconst body = this.resolveTarget(target);\n\t\tthis.entries.delete(body.id);\n\t}\n\t/**\n\t* Stops all movement for an entity immediately\n\t* \n\t* This method completely stops an entity's movement by:\n\t* - Removing all active movement strategies (dash, linear moves, etc.)\n\t* - Stopping the entity's velocity and angular velocity\n\t* - Clearing accumulated forces\n\t* - Waking up the entity if it was sleeping\n\t* \n\t* This is useful when changing maps, teleporting, or when you need\n\t* to halt an entity's movement completely without making it static.\n\t* \n\t* @param target - Entity, MovementBody, or identifier\n\t* \n\t* @example\n\t* ```ts\n\t* // Stop movement when changing maps\n\t* if (mapChanged) {\n\t* movement.stopMovement(playerEntity);\n\t* }\n\t* \n\t* // Stop movement after teleporting\n\t* entity.position.set(100, 200);\n\t* movement.stopMovement(entity);\n\t* \n\t* // Stop movement when player dies\n\t* if (player.isDead()) {\n\t* movement.stopMovement(playerEntity);\n\t* }\n\t* ```\n\t*/\n\tstopMovement(target) {\n\t\tconst body = this.resolveTarget(target);\n\t\tthis.clear(target);\n\t\tif (\"getEntity\" in body && typeof body.getEntity === \"function\") {\n\t\t\tconst entity = body.getEntity();\n\t\t\tif (entity && typeof entity.stopMovement === \"function\") entity.stopMovement();\n\t\t}\n\t}\n\t/**\n\t* Checks if an entity has active strategies.\n\t*\n\t* @param target - Entity or identifier\n\t* @returns True when strategies are registered\n\t*/\n\thasActiveStrategies(target) {\n\t\tconst body = this.resolveTarget(target);\n\t\treturn (this.entries.get(body.id)?.strategies.length ?? 0) > 0;\n\t}\n\t/**\n\t* Returns a snapshot of the strategies assigned to an entity.\n\t*\n\t* @param target - Entity or identifier\n\t* @returns Copy of the strategies array (empty array when none)\n\t*/\n\tgetStrategies(target) {\n\t\tconst body = this.resolveTarget(target);\n\t\tconst entry = this.entries.get(body.id);\n\t\treturn entry ? entry.strategies.map((e) => e.strategy) : [];\n\t}\n\t/**\n\t* Updates all registered strategies.\n\t*\n\t* Call this method once per frame before `PhysicsEngine.step()` so that the\n\t* physics simulation integrates the velocities that strategies configure.\n\t* \n\t* This method handles the movement lifecycle:\n\t* - Triggers `onStart` callback on first update\n\t* - Calls `strategy.update()` each frame\n\t* - When `isFinished()` returns true:\n\t* - Calls `strategy.onFinished()` if defined\n\t* - Triggers `onComplete` callback\n\t* - Resolves the Promise returned by `add()`\n\t*\n\t* @param dt - Time delta in seconds\n\t*/\n\tupdate(dt) {\n\t\tfor (const [key, entry] of this.entries) {\n\t\t\tconst { body, strategies } = entry;\n\t\t\tif (strategies.length === 0) {\n\t\t\t\tthis.entries.delete(key);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (let i = strategies.length - 1; i >= 0; i -= 1) {\n\t\t\t\tconst strategyEntry = strategies[i];\n\t\t\t\tif (!strategyEntry) continue;\n\t\t\t\tconst { strategy, options, resolve } = strategyEntry;\n\t\t\t\tif (!strategyEntry.started) {\n\t\t\t\t\tstrategyEntry.started = true;\n\t\t\t\t\toptions?.onStart?.();\n\t\t\t\t}\n\t\t\t\tstrategy.update(body, dt);\n\t\t\t\tif (strategy.isFinished?.()) {\n\t\t\t\t\tstrategies.splice(i, 1);\n\t\t\t\t\tstrategy.onFinished?.();\n\t\t\t\t\toptions?.onComplete?.();\n\t\t\t\t\tresolve?.();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (strategies.length === 0) this.entries.delete(key);\n\t\t}\n\t}\n\t/**\n\t* Removes all strategies from all entities.\n\t*/\n\tclearAll() {\n\t\tthis.entries.clear();\n\t}\n\tresolveTarget(target) {\n\t\tif (this.isMovementBody(target)) return target;\n\t\tif (target instanceof Entity) return this.wrapEntity(target);\n\t\tif (!this.resolveEntity) throw new Error(\"MovementManager: cannot resolve entity from identifier without a resolver.\");\n\t\tconst entity = this.resolveEntity(target);\n\t\tif (!entity) throw new Error(`MovementManager: unable to resolve entity for identifier ${target}.`);\n\t\treturn entity;\n\t}\n\twrapEntity(entity) {\n\t\tlet wrapper = this.entityWrappers.get(entity);\n\t\tif (!wrapper) {\n\t\t\twrapper = new EntityMovementBody(entity);\n\t\t\tthis.entityWrappers.set(entity, wrapper);\n\t\t}\n\t\treturn wrapper;\n\t}\n\tisMovementBody(value) {\n\t\treturn Boolean(value && typeof value === \"object\" && \"id\" in value && \"setVelocity\" in value && typeof value.setVelocity === \"function\");\n\t}\n};\n//#endregion\n//#region ../physic/src/api/ZoneManager.ts\n/**\n* Zone manager for detecting entities within circular/cone-shaped areas.\n*\n* Zones can be used for vision, skill ranges, explosions, and other gameplay mechanics\n* that need to detect entities without physical collisions.\n*\n* @example\n* ```typescript\n* const engine = new PhysicsEngine({ timeStep: 1/60 });\n* const zones = new ZoneManager(engine);\n*\n* // Create a static zone\n* const zoneId = zones.createZone({\n* position: { x: 100, y: 100 },\n* radius: 50,\n* onEnter: (entities) => console.log('Entities entered:', entities),\n* });\n*\n* // Create a zone attached to an entity\n* const player = engine.createEntity({ position: { x: 0, y: 0 }, radius: 10 });\n* const visionZone = zones.createAttachedZone(player, {\n* radius: 100,\n* angle: 90,\n* direction: 'right',\n* onEnter: (entities) => console.log('Player sees:', entities),\n* });\n*\n* // Update zones after each physics step\n* engine.step();\n* zones.update();\n* ```\n*/\nvar ZoneManager = class {\n\t/**\n\t* Creates a new zone manager\n\t*\n\t* @param engine - Physics engine instance\n\t*/\n\tconstructor(engine) {\n\t\tthis.zones = /* @__PURE__ */ new Map();\n\t\tthis.engine = engine;\n\t}\n\t/**\n\t* Creates a new zone\n\t*\n\t* @param config - Zone configuration\n\t* @param callbacks - Optional event callbacks\n\t* @returns Zone identifier\n\t*\n\t* @example\n\t* ```typescript\n\t* const zoneId = zones.createZone({\n\t* position: { x: 100, y: 100 },\n\t* radius: 50,\n\t* angle: 180,\n\t* direction: 'right',\n\t* }, {\n\t* onEnter: (entities) => console.log('Entered:', entities),\n\t* onExit: (entities) => console.log('Exited:', entities),\n\t* });\n\t* ```\n\t*/\n\tcreateZone(config, callbacks) {\n\t\tconst id = generateUUID();\n\t\tconst radius = config.radius;\n\t\tif (typeof radius !== \"number\" || radius <= 0) throw new Error(\"Zone radius must be a positive number\");\n\t\tconst angle = config.angle ?? 360;\n\t\tconst direction = config.direction ?? \"down\";\n\t\tconst limitedByWalls = config.limitedByWalls ?? false;\n\t\tlet position;\n\t\tlet type;\n\t\tlet attachedEntity;\n\t\tlet offset;\n\t\tif (\"entity\" in config) {\n\t\t\ttype = \"attached\";\n\t\t\tattachedEntity = config.entity;\n\t\t\tconst entityPos = attachedEntity.position;\n\t\t\tconst offsetValue = config.offset ?? {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tif (offsetValue instanceof Vector2) offset = offsetValue.clone();\n\t\t\telse offset = new Vector2(offsetValue.x, offsetValue.y);\n\t\t\tposition = new Vector2(entityPos.x + offset.x, entityPos.y + offset.y);\n\t\t} else {\n\t\t\ttype = \"static\";\n\t\t\tconst pos = config.position;\n\t\t\tif (pos instanceof Vector2) position = pos.clone();\n\t\t\telse position = new Vector2(pos.x, pos.y);\n\t\t}\n\t\tconst record = {\n\t\t\tid,\n\t\t\ttype,\n\t\t\tposition,\n\t\t\tradius,\n\t\t\tangle,\n\t\t\tdirection,\n\t\t\tlimitedByWalls,\n\t\t\tmetadata: config.metadata,\n\t\t\tattachedEntity,\n\t\t\toffset,\n\t\t\tcallbacks,\n\t\t\tinside: /* @__PURE__ */ new Set()\n\t\t};\n\t\tthis.zones.set(id, record);\n\t\treturn id;\n\t}\n\t/**\n\t* Creates a zone attached to an entity (convenience method)\n\t*\n\t* @param entity - Entity to attach the zone to\n\t* @param config - Zone configuration\n\t* @param callbacks - Optional event callbacks\n\t* @returns Zone identifier\n\t*\n\t* @example\n\t* ```typescript\n\t* const visionZone = zones.createAttachedZone(player, {\n\t* radius: 100,\n\t* angle: 90,\n\t* direction: 'right',\n\t* offset: { x: 0, y: -10 },\n\t* }, {\n\t* onEnter: (entities) => console.log('Player sees:', entities),\n\t* });\n\t* ```\n\t*/\n\tcreateAttachedZone(entity, config, callbacks) {\n\t\treturn this.createZone({\n\t\t\t...config,\n\t\t\tentity\n\t\t}, callbacks);\n\t}\n\t/**\n\t* Updates a zone's configuration\n\t*\n\t* @param id - Zone identifier\n\t* @param updates - Partial configuration updates\n\t* @returns True if the zone was found and updated\n\t*\n\t* @example\n\t* ```typescript\n\t* zones.updateZone(zoneId, { radius: 75, angle: 120 });\n\t* ```\n\t*/\n\tupdateZone(id, updates) {\n\t\tconst zone = this.zones.get(id);\n\t\tif (!zone) return false;\n\t\tif (updates.radius !== void 0) {\n\t\t\tif (typeof updates.radius !== \"number\" || updates.radius <= 0) throw new Error(\"Zone radius must be a positive number\");\n\t\t\tzone.radius = updates.radius;\n\t\t}\n\t\tif (updates.angle !== void 0) zone.angle = updates.angle;\n\t\tif (updates.direction !== void 0) zone.direction = updates.direction;\n\t\tif (updates.limitedByWalls !== void 0) zone.limitedByWalls = updates.limitedByWalls;\n\t\tif (updates.metadata !== void 0) zone.metadata = updates.metadata;\n\t\tif (\"offset\" in updates && updates.offset !== void 0 && zone.type === \"attached\") {\n\t\t\tconst offsetValue = updates.offset;\n\t\t\tif (offsetValue instanceof Vector2) zone.offset = offsetValue.clone();\n\t\t\telse zone.offset = new Vector2(offsetValue.x, offsetValue.y);\n\t\t}\n\t\treturn true;\n\t}\n\t/**\n\t* Registers or updates callbacks for a zone\n\t*\n\t* @param id - Zone identifier\n\t* @param callbacks - Event callbacks\n\t* @returns True if the zone was found\n\t*\n\t* @example\n\t* ```typescript\n\t* zones.registerCallbacks(zoneId, {\n\t* onEnter: (entities) => console.log('Entered:', entities),\n\t* onExit: (entities) => console.log('Exited:', entities),\n\t* });\n\t* ```\n\t*/\n\tregisterCallbacks(id, callbacks) {\n\t\tconst zone = this.zones.get(id);\n\t\tif (!zone) return false;\n\t\tzone.callbacks = callbacks;\n\t\treturn true;\n\t}\n\t/**\n\t* Removes a zone\n\t*\n\t* @param id - Zone identifier\n\t* @returns True if the zone was found and removed\n\t*/\n\tremoveZone(id) {\n\t\treturn this.zones.delete(id);\n\t}\n\t/**\n\t* Gets zone information\n\t*\n\t* @param id - Zone identifier\n\t* @returns Zone information or undefined\n\t*/\n\tgetZone(id) {\n\t\tconst zone = this.zones.get(id);\n\t\tif (!zone) return void 0;\n\t\treturn {\n\t\t\tid: zone.id,\n\t\t\ttype: zone.type,\n\t\t\tposition: zone.position.clone(),\n\t\t\tradius: zone.radius,\n\t\t\tangle: zone.angle,\n\t\t\tdirection: zone.direction,\n\t\t\tlimitedByWalls: zone.limitedByWalls,\n\t\t\tmetadata: zone.metadata\n\t\t};\n\t}\n\t/**\n\t* Gets all entities currently inside a zone\n\t*\n\t* @param id - Zone identifier\n\t* @returns Array of entities inside the zone\n\t*/\n\tgetEntitiesInZone(id) {\n\t\tconst zone = this.zones.get(id);\n\t\tif (!zone) return [];\n\t\tconst entities = [];\n\t\tfor (const uuid of zone.inside) {\n\t\t\tconst entity = this.engine.getEntityByUUID(uuid);\n\t\t\tif (entity) entities.push(entity);\n\t\t}\n\t\treturn entities;\n\t}\n\t/**\n\t* Gets all zone identifiers\n\t*\n\t* @returns Array of zone IDs\n\t*/\n\tgetAllZoneIds() {\n\t\treturn Array.from(this.zones.keys());\n\t}\n\t/**\n\t* Clears all zones\n\t*/\n\tclear() {\n\t\tthis.zones.clear();\n\t}\n\t/**\n\t* Updates all zones, detecting entities entering/exiting\n\t*\n\t* This should be called after each physics step to keep zones synchronized.\n\t*\n\t* @param _deltaTime - Optional delta time (not used currently, but kept for future use)\n\t*\n\t* @example\n\t* ```typescript\n\t* engine.step();\n\t* zones.update();\n\t* ```\n\t*/\n\tupdate(_deltaTime) {\n\t\tfor (const zone of this.zones.values()) {\n\t\t\tif (zone.type === \"attached\" && zone.attachedEntity) {\n\t\t\t\tconst entityPos = zone.attachedEntity.position;\n\t\t\t\tconst offset = zone.offset ?? new Vector2(0, 0);\n\t\t\t\tzone.position.set(entityPos.x + offset.x, entityPos.y + offset.y);\n\t\t\t}\n\t\t\tconst aabb = new AABB(zone.position.x - zone.radius, zone.position.y - zone.radius, zone.position.x + zone.radius, zone.position.y + zone.radius);\n\t\t\tconst candidates = this.engine.queryAABB(aabb);\n\t\t\tconst hits = /* @__PURE__ */ new Set();\n\t\t\tfor (const entity of candidates) {\n\t\t\t\tif (zone.attachedEntity && entity.uuid === zone.attachedEntity.uuid) continue;\n\t\t\t\tif (this.isEntityInsideZone(zone, entity)) hits.add(entity.uuid);\n\t\t\t}\n\t\t\tconst previous = zone.inside;\n\t\t\tconst entered = [];\n\t\t\tconst exited = [];\n\t\t\tfor (const uuid of hits) if (!previous.has(uuid)) {\n\t\t\t\tconst entity = this.engine.getEntityByUUID(uuid);\n\t\t\t\tif (entity) entered.push(entity);\n\t\t\t}\n\t\t\tfor (const uuid of previous) if (!hits.has(uuid)) {\n\t\t\t\tconst entity = this.engine.getEntityByUUID(uuid);\n\t\t\t\tif (entity) exited.push(entity);\n\t\t\t}\n\t\t\tzone.inside = hits;\n\t\t\tif (entered.length > 0 && zone.callbacks?.onEnter) zone.callbacks.onEnter(entered);\n\t\t\tif (exited.length > 0 && zone.callbacks?.onExit) zone.callbacks.onExit(exited);\n\t\t}\n\t}\n\t/**\n\t* Checks if an entity is inside a zone\n\t*\n\t* @param zone - Zone record\n\t* @param entity - Entity to check\n\t* @returns True if the entity is inside the zone\n\t*/\n\tisEntityInsideZone(zone, entity) {\n\t\tconst zonePos = zone.position;\n\t\tconst entityPos = entity.position;\n\t\tconst dx = entityPos.x - zonePos.x;\n\t\tconst dy = entityPos.y - zonePos.y;\n\t\tif (Math.hypot(dx, dy) - (entity.radius > 0 ? entity.radius : Math.max(entity.width, entity.height) / 2) > zone.radius) return false;\n\t\tif (zone.angle < 360) {\n\t\t\tconst facing = this.directionToAngle(zone.direction);\n\t\t\tconst angle = Math.atan2(dy, dx);\n\t\t\tconst delta = this.normalizeAngle(angle - facing);\n\t\t\tconst halfAperture = zone.angle * Math.PI / 360;\n\t\t\tif (Math.abs(delta) > halfAperture) return false;\n\t\t}\n\t\tif (zone.limitedByWalls) {\n\t\t\tif (!this.hasLineOfSight(zonePos, entityPos, entity.uuid)) return false;\n\t\t}\n\t\treturn true;\n\t}\n\t/**\n\t* Checks if there's a clear line of sight between two points\n\t*\n\t* @param start - Start position\n\t* @param end - End position\n\t* @param ignoreEntityId - Entity UUID to ignore (usually the target entity)\n\t* @returns True if line of sight is clear\n\t*/\n\thasLineOfSight(start, end, ignoreEntityId) {\n\t\tconst direction = end.sub(start);\n\t\tconst distance = direction.length();\n\t\tif (distance < 1e-5) return true;\n\t\tdirection.normalizeInPlace();\n\t\treturn this.engine.raycast(start, direction, distance, void 0, (entity) => {\n\t\t\tif (!entity.isStatic()) return false;\n\t\t\tif (ignoreEntityId && entity.uuid === ignoreEntityId) return false;\n\t\t\treturn true;\n\t\t}) === null;\n\t}\n\t/**\n\t* Converts direction string to angle in radians\n\t*\n\t* @param dir - Direction\n\t* @returns Angle in radians\n\t*/\n\tdirectionToAngle(dir) {\n\t\tswitch (dir) {\n\t\t\tcase \"up\": return -Math.PI / 2;\n\t\t\tcase \"down\": return Math.PI / 2;\n\t\t\tcase \"left\": return Math.PI;\n\t\t\tdefault: return 0;\n\t\t}\n\t}\n\t/**\n\t* Normalizes angle to [-π, π]\n\t*\n\t* @param angle - Angle in radians\n\t* @returns Normalized angle\n\t*/\n\tnormalizeAngle(angle) {\n\t\tlet a = angle;\n\t\twhile (a > Math.PI) a -= Math.PI * 2;\n\t\twhile (a < -Math.PI) a += Math.PI * 2;\n\t\treturn a;\n\t}\n};\n//#endregion\n//#region ../physic/src/api/PhysicsEngine.ts\n/**\n* Main physics engine interface\n* \n* Provides a high-level, gameplay-oriented API for physics simulation.\n* Supports both single-world and multi-region simulation modes.\n* \n* @example\n* ```typescript\n* const engine = new PhysicsEngine({ timeStep: 1/60 });\n* const entity = engine.createEntity({\n* position: { x: 0, y: 0 },\n* radius: 10,\n* mass: 1\n* });\n* \n* engine.step();\n* ```\n*/\nvar PhysicsEngine = class {\n\t/**\n\t* Creates a new physics engine\n\t* \n\t* @param config - Engine configuration\n\t*/\n\tconstructor(config = {}) {\n\t\tthis.regionManager = null;\n\t\tthis.movementManager = null;\n\t\tthis.zoneManager = null;\n\t\tthis.tick = 0;\n\t\tthis.useRegions = config.enableRegions ?? false;\n\t\tif (this.useRegions) {\n\t\t\tif (!config.regionConfig) throw new Error(\"Region configuration is required when enableRegions is true\");\n\t\t\tthis.regionManager = new RegionManager(config.regionConfig);\n\t\t\tthis.world = new World({\n\t\t\t\t...config,\n\t\t\t\tenableSleep: false\n\t\t\t});\n\t\t} else this.world = new World(config);\n\t}\n\t/**\n\t* Gets the movement manager bound to this engine.\n\t*\n\t* The manager is lazily created and reused.\n\t*\n\t* @returns Movement manager instance\n\t*/\n\tgetMovementManager() {\n\t\tif (!this.movementManager) this.movementManager = MovementManager$1.forEngine(this);\n\t\treturn this.movementManager;\n\t}\n\t/**\n\t* Gets the zone manager bound to this engine.\n\t*\n\t* The manager is lazily created and reused. Zones allow detecting entities\n\t* within circular or cone-shaped areas without physical collisions (useful\n\t* for vision, skill ranges, explosions, etc.).\n\t*\n\t* **Important:** Call `zoneManager.update()` after each physics step to\n\t* keep zones synchronized:\n\t*\n\t* ```typescript\n\t* engine.step();\n\t* engine.getZoneManager().update();\n\t* ```\n\t*\n\t* @returns Zone manager instance\n\t*\n\t* @example\n\t* ```typescript\n\t* const zones = engine.getZoneManager();\n\t* const visionZone = zones.createAttachedZone(player, {\n\t* radius: 100,\n\t* angle: 90,\n\t* direction: 'right',\n\t* }, {\n\t* onEnter: (entities) => console.log('Player sees:', entities),\n\t* });\n\t*\n\t* engine.step();\n\t* zones.update();\n\t* ```\n\t*/\n\tgetZoneManager() {\n\t\tif (!this.zoneManager) this.zoneManager = new ZoneManager(this);\n\t\treturn this.zoneManager;\n\t}\n\t/**\n\t* Updates all registered movement strategies.\n\t*\n\t* @param dt - Time delta in seconds (defaults to the world's time step)\n\t*/\n\tupdateMovements(dt) {\n\t\tconst manager = this.getMovementManager();\n\t\tconst delta = dt ?? this.world.getTimeStep();\n\t\tmanager.update(delta);\n\t}\n\t/**\n\t* Updates movements and then steps the simulation.\n\t*\n\t* @param dt - Time delta in seconds (defaults to the world's time step)\n\t*/\n\tstepWithMovements(dt) {\n\t\tthis.updateMovements(dt);\n\t\tthis.step();\n\t}\n\t/**\n\t* Advances the simulation by exactly one fixed tick.\n\t*\n\t* This helper is equivalent to {@link step} but returns the tick index after the step,\n\t* making it convenient for client-side prediction loops.\n\t*\n\t* @returns Current tick index after stepping\n\t*/\n\tstepOneTick() {\n\t\tthis.step();\n\t\treturn this.tick;\n\t}\n\t/**\n\t* Advances the simulation by a fixed number of ticks.\n\t*\n\t* @param ticks - Number of ticks to simulate (>= 1)\n\t* @returns Current tick index after stepping\n\t*/\n\tstepTicks(ticks) {\n\t\tif (!Number.isFinite(ticks) || ticks <= 0) return this.tick;\n\t\tconst total = Math.floor(ticks);\n\t\tfor (let i = 0; i < total; i += 1) this.step();\n\t\treturn this.tick;\n\t}\n\t/**\n\t* Creates a new entity\n\t* \n\t* @param config - Entity configuration\n\t* @returns Created entity\n\t* \n\t* @example\n\t* ```typescript\n\t* const entity = engine.createEntity({\n\t* position: { x: 100, y: 100 },\n\t* radius: 15,\n\t* mass: 1,\n\t* velocity: { x: 5, y: 0 }\n\t* });\n\t* ```\n\t*/\n\tcreateEntity(config) {\n\t\tconst entity = new Entity(config);\n\t\tif (this.useRegions && this.regionManager) this.regionManager.addEntity(entity);\n\t\telse this.world.addEntity(entity);\n\t\treturn entity;\n\t}\n\t/**\n\t* Adds an existing entity to the engine\n\t* \n\t* @param entity - Entity to add\n\t* @returns The added entity\n\t*/\n\taddEntity(entity) {\n\t\tif (this.useRegions && this.regionManager) this.regionManager.addEntity(entity);\n\t\telse this.world.addEntity(entity);\n\t\treturn entity;\n\t}\n\t/**\n\t* Removes an entity from the engine\n\t* \n\t* @param entity - Entity to remove\n\t*/\n\tremoveEntity(entity) {\n\t\tif (this.useRegions && this.regionManager) this.regionManager.removeEntity(entity);\n\t\telse this.world.removeEntity(entity);\n\t}\n\t/**\n\t* Gets all entities\n\t* \n\t* @returns Array of all entities\n\t*/\n\tgetEntities() {\n\t\tif (this.useRegions && this.regionManager) {\n\t\t\tconst entities = [];\n\t\t\tfor (const region of this.regionManager.getRegions()) entities.push(...region.getEntities());\n\t\t\treturn entities;\n\t\t}\n\t\treturn this.world.getEntities();\n\t}\n\t/**\n\t* Gets an entity by UUID\n\t* \n\t* @param uuid - Entity UUID\n\t* @returns Entity or undefined\n\t*/\n\tgetEntityByUUID(uuid) {\n\t\tif (this.useRegions && this.regionManager) {\n\t\t\tfor (const region of this.regionManager.getRegions()) {\n\t\t\t\tconst entity = region.getWorld().getEntityByUUID(uuid);\n\t\t\t\tif (entity) return entity;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn this.world.getEntityByUUID(uuid);\n\t}\n\t/**\n\t* Steps the physics simulation forward\n\t* \n\t* Updates all entities, detects and resolves collisions.\n\t*/\n\tstep() {\n\t\tif (this.useRegions && this.regionManager) this.regionManager.step();\n\t\telse this.world.step();\n\t\tthis.tick += 1;\n\t}\n\t/**\n\t* Gets the event system\n\t* \n\t* @returns Event system instance\n\t*/\n\tgetEvents() {\n\t\treturn this.world.getEvents();\n\t}\n\t/**\n\t* Applies a force to an entity\n\t* \n\t* @param entity - Entity to apply force to\n\t* @param force - Force vector\n\t*/\n\tapplyForce(entity, force) {\n\t\tentity.applyForce(force);\n\t}\n\t/**\n\t* Applies an impulse to an entity\n\t* \n\t* @param entity - Entity to apply impulse to\n\t* @param impulse - Impulse vector\n\t*/\n\tapplyImpulse(entity, impulse) {\n\t\tentity.applyImpulse(impulse);\n\t}\n\t/**\n\t* Teleports an entity to a new position\n\t* \n\t* @param entity - Entity to teleport\n\t* @param position - New position\n\t*/\n\tteleport(entity, position) {\n\t\tentity.teleport(position);\n\t\tif (this.useRegions && this.regionManager) this.regionManager.updateEntities();\n\t}\n\t/**\n\t* Freezes an entity (makes it static)\n\t* \n\t* @param entity - Entity to freeze\n\t*/\n\tfreeze(entity) {\n\t\tentity.freeze();\n\t}\n\t/**\n\t* Unfreezes an entity (makes it dynamic)\n\t* \n\t* @param entity - Entity to unfreeze\n\t*/\n\tunfreeze(entity) {\n\t\tentity.unfreeze();\n\t}\n\t/**\n\t* Queries entities in an AABB region\n\t* \n\t* @param bounds - AABB to query\n\t* @returns Array of entities in the region\n\t*/\n\tqueryAABB(bounds) {\n\t\tif (this.useRegions && this.regionManager) {\n\t\t\tconst entities = [];\n\t\t\tconst regions = this.regionManager.getRegionsInBounds(bounds);\n\t\t\tfor (const region of regions) {\n\t\t\t\tconst worldEntities = region.getWorld().getEntities();\n\t\t\t\tfor (const entity of worldEntities) if (bounds.contains(entity.position)) entities.push(entity);\n\t\t\t}\n\t\t\treturn entities;\n\t\t}\n\t\tconst world = this.world;\n\t\tif (world.spatialPartition) return Array.from(world.spatialPartition.queryAABB(bounds));\n\t\treturn this.world.getEntities().filter((e) => bounds.contains(e.position));\n\t}\n\t/**\n\t* Clears all entities from the engine\n\t*/\n\tclear() {\n\t\tif (this.useRegions && this.regionManager) this.regionManager.clear();\n\t\telse this.world.clear();\n\t\tthis.tick = 0;\n\t}\n\t/**\n\t* Assigns a polygon collider to an entity (supports convex or concave via convex parts).\n\t*\n\t* Design: the collider is attached via a registry and used by the detector on demand.\n\t* This keeps entities lightweight and preserves the separation of detection/resolution.\n\t*\n\t* @param entity - Target entity\n\t* @param config - Polygon configuration\n\t* @example\n\t* ```typescript\n\t* engine.assignPolygonCollider(entity, { vertices: [new Vector2(-1,-1), new Vector2(1,-1), new Vector2(1,1), new Vector2(-1,1)], isConvex: true });\n\t* ```\n\t*/\n\tassignPolygonCollider(entity, config) {\n\t\tassignPolygonCollider(entity, config);\n\t}\n\t/**\n\t* Casts a ray in the physics world and returns the nearest hit, if any.\n\t* Uses the world's spatial partition for broad-phase and shape-specific narrow-phase tests.\n\t*\n\t* @param origin - Ray origin\n\t* @param direction - Ray direction (any length)\n\t* @param maxDistance - Maximum cast length\n\t* @param mask - Optional collision mask (layer)\n\t* @param filter - Optional filter function (return true to include entity)\n\t* @returns Raycast hit or null\n\t* @example\n\t* ```typescript\n\t* const hit = engine.raycast(new Vector2(0,0), new Vector2(1,0), 1000);\n\t* ```\n\t*/\n\traycast(origin, direction, maxDistance, mask, filter) {\n\t\tconst partition = this.world.spatialPartition;\n\t\tif (!partition) return null;\n\t\treturn raycast(partition, origin, direction, maxDistance, mask, filter);\n\t}\n\t/**\n\t* Computes continuous collision detection (sweep test) time-of-impact between two entities\n\t* over the next step of duration `dt`, using relative motion.\n\t*\n\t* @param a - First entity\n\t* @param b - Second entity\n\t* @param dt - Time step duration\n\t* @returns Sweep result or null if no hit in [0,1]\n\t* @example\n\t* ```typescript\n\t* const toi = engine.sweep(entityA, entityB, 1/60);\n\t* if (toi) {\n\t* // pre-resolve or clamp motion\n\t* }\n\t* ```\n\t*/\n\tsweep(a, b, dt) {\n\t\treturn sweepEntities(a, b, a.velocity.sub(b.velocity).mul(dt));\n\t}\n\t/**\n\t* Gets statistics about the engine\n\t* \n\t* @returns Statistics object\n\t*/\n\tgetStats() {\n\t\tif (this.useRegions && this.regionManager) {\n\t\t\tconst regionStats = this.regionManager.getStats();\n\t\t\treturn {\n\t\t\t\t...this.world.getStats(),\n\t\t\t\tregions: {\n\t\t\t\t\ttotal: regionStats.totalRegions,\n\t\t\t\t\tactive: regionStats.activeRegions\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn this.world.getStats();\n\t}\n\t/**\n\t* Gets the underlying world instance\n\t* \n\t* @returns World instance\n\t*/\n\tgetWorld() {\n\t\treturn this.world;\n\t}\n\t/**\n\t* Gets the current simulation tick.\n\t*\n\t* @returns Tick counter (starts at 0 and increments after each {@link step})\n\t*/\n\tgetTick() {\n\t\treturn this.tick;\n\t}\n\t/**\n\t* Captures a lightweight snapshot of the current world state.\n\t*\n\t* The snapshot only stores the minimum data required for client-side prediction:\n\t* position, velocity, rotation, angular velocity and sleeping flag per entity.\n\t*\n\t* @returns Snapshot object\n\t*/\n\ttakeSnapshot() {\n\t\treturn {\n\t\t\ttick: this.tick,\n\t\t\tentities: this.getEntities().map((entity) => ({\n\t\t\t\tuuid: entity.uuid,\n\t\t\t\tposition: {\n\t\t\t\t\tx: entity.position.x,\n\t\t\t\t\ty: entity.position.y\n\t\t\t\t},\n\t\t\t\tvelocity: {\n\t\t\t\t\tx: entity.velocity.x,\n\t\t\t\t\ty: entity.velocity.y\n\t\t\t\t},\n\t\t\t\trotation: entity.rotation,\n\t\t\t\tangularVelocity: entity.angularVelocity,\n\t\t\t\tsleeping: entity.isSleeping()\n\t\t\t}))\n\t\t};\n\t}\n\t/**\n\t* Restores a snapshot previously produced by {@link takeSnapshot}.\n\t*\n\t* Entities that cannot be found in the current engine are skipped silently.\n\t*\n\t* @param snapshot - Snapshot to restore\n\t*/\n\trestoreSnapshot(snapshot) {\n\t\tconst entities = new Map(this.getEntities().map((entity) => [entity.uuid, entity]));\n\t\tfor (const state of snapshot.entities) {\n\t\t\tconst entity = entities.get(state.uuid);\n\t\t\tif (!entity) continue;\n\t\t\tentity.position.set(state.position.x, state.position.y);\n\t\t\tentity.velocity.set(state.velocity.x, state.velocity.y);\n\t\t\tentity.rotation = state.rotation;\n\t\t\tentity.angularVelocity = state.angularVelocity;\n\t\t\tif (state.sleeping) entity.sleep();\n\t\t\telse entity.wakeUp();\n\t\t}\n\t\tthis.tick = snapshot.tick;\n\t}\n\t/**\n\t* Gets the region manager (if regions are enabled)\n\t* \n\t* @returns Region manager or null\n\t*/\n\tgetRegionManager() {\n\t\treturn this.regionManager;\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/Dash.ts\n/**\n* Applies a burst of velocity during a fixed duration.\n*\n* The dash sets a constant velocity along a direction, then stops the entity\n* once the duration has elapsed.\n*\n* @example\n* ```typescript\n* movementManager.add(player, new Dash(8, { x: 1, y: 0 }, 0.15));\n* ```\n*/\nvar Dash = class {\n\t/**\n\t* Creates a dash movement.\n\t*\n\t* @param speed - Movement speed in units per second\n\t* @param direction - Direction vector (will be normalized)\n\t* @param duration - Duration in seconds\n\t*/\n\tconstructor(speed, direction, duration) {\n\t\tthis.speed = speed;\n\t\tthis.duration = duration;\n\t\tthis.elapsed = 0;\n\t\tthis.finished = false;\n\t\tconst magnitude = Math.hypot(direction.x, direction.y);\n\t\tthis.direction = magnitude > 0 ? {\n\t\t\tx: direction.x / magnitude,\n\t\t\ty: direction.y / magnitude\n\t\t} : {\n\t\t\tx: 1,\n\t\t\ty: 0\n\t\t};\n\t}\n\tupdate(body, dt) {\n\t\tif (this.finished) return;\n\t\tthis.elapsed += dt;\n\t\tif (this.elapsed <= this.duration) body.setVelocity({\n\t\t\tx: this.direction.x * this.speed,\n\t\t\ty: this.direction.y * this.speed\n\t\t});\n\t\telse {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\tthis.finished = true;\n\t\t}\n\t}\n\tisFinished() {\n\t\treturn this.finished;\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/IceMovement.ts\n/**\n* Simulates slippery movement with gradual acceleration and deceleration.\n*\n* @example\n* ```typescript\n* const ice = new IceMovement({ x: 1, y: 0 }, 3, 0.25, 0.1);\n* movementManager.add(player, ice);\n* ```\n*/\nvar IceMovement = class {\n\t/**\n\t* Creates an ice-like movement behaviour.\n\t*\n\t* @param direction - Initial desired direction (normalized automatically)\n\t* @param maxSpeed - Maximum speed in units per second\n\t* @param acceleration - Fraction of the gap closed per second (0-1)\n\t* @param friction - Fraction of velocity retained per second when stopping (0-1)\n\t* @param duration - Optional duration in seconds\n\t*/\n\tconstructor(direction, maxSpeed = 4, acceleration = .2, friction = .08, duration) {\n\t\tthis.maxSpeed = maxSpeed;\n\t\tthis.acceleration = acceleration;\n\t\tthis.friction = friction;\n\t\tthis.duration = duration;\n\t\tthis.currentVelocity = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tthis.elapsed = 0;\n\t\tthis.stopped = false;\n\t\tconst magnitude = Math.hypot(direction.x, direction.y);\n\t\tthis.targetDirection = magnitude > 0 ? {\n\t\t\tx: direction.x / magnitude,\n\t\t\ty: direction.y / magnitude\n\t\t} : {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t}\n\tupdate(body, dt) {\n\t\tif (this.duration !== void 0) {\n\t\t\tthis.elapsed += dt;\n\t\t\tif (this.elapsed >= this.duration) this.stopped = true;\n\t\t}\n\t\tif (!this.stopped) {\n\t\t\tconst accelFactor = this.perSecondFactor(this.acceleration, dt);\n\t\t\tconst targetVx = this.targetDirection.x * this.maxSpeed;\n\t\t\tconst targetVy = this.targetDirection.y * this.maxSpeed;\n\t\t\tthis.currentVelocity.x += (targetVx - this.currentVelocity.x) * accelFactor;\n\t\t\tthis.currentVelocity.y += (targetVy - this.currentVelocity.y) * accelFactor;\n\t\t} else {\n\t\t\tconst frictionFactor = this.perSecondFactor(this.friction, dt);\n\t\t\tthis.currentVelocity.x *= 1 - frictionFactor;\n\t\t\tthis.currentVelocity.y *= 1 - frictionFactor;\n\t\t}\n\t\tbody.setVelocity({\n\t\t\tx: this.currentVelocity.x,\n\t\t\ty: this.currentVelocity.y\n\t\t});\n\t}\n\tisFinished() {\n\t\tif (!this.stopped) return false;\n\t\treturn Math.hypot(this.currentVelocity.x, this.currentVelocity.y) < .05;\n\t}\n\tstop() {\n\t\tthis.stopped = true;\n\t}\n\tresume() {\n\t\tthis.stopped = false;\n\t}\n\tsetTargetDirection(direction) {\n\t\tconst magnitude = Math.hypot(direction.x, direction.y);\n\t\tthis.targetDirection.x = magnitude > 0 ? direction.x / magnitude : 0;\n\t\tthis.targetDirection.y = magnitude > 0 ? direction.y / magnitude : 0;\n\t\tthis.stopped = false;\n\t}\n\tsetParameters(maxSpeed, acceleration, friction) {\n\t\tif (maxSpeed !== void 0) this.maxSpeed = maxSpeed;\n\t\tif (acceleration !== void 0) this.acceleration = acceleration;\n\t\tif (friction !== void 0) this.friction = friction;\n\t}\n\tperSecondFactor(value, dt) {\n\t\tconst clamped = Math.max(0, Math.min(1, value));\n\t\tif (dt <= 0) return clamped;\n\t\treturn 1 - Math.pow(1 - clamped, dt);\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/Knockback.ts\n/**\n* Simulates an impulse that pushes an entity away and gradually decays.\n*\n* @example\n* ```typescript\n* movementManager.add(enemy, new Knockback({ x: -1, y: 0 }, 12, 0.25, 0.4));\n* ```\n*/\nvar Knockback = class {\n\t/**\n\t* Creates a knockback movement.\n\t*\n\t* @param direction - Direction of the impulse (will be normalized)\n\t* @param initialSpeed - Initial speed in units per second\n\t* @param duration - Duration in seconds\n\t* @param decayFactor - Fraction of speed preserved per second (0-1)\n\t*/\n\tconstructor(direction, initialSpeed, duration, decayFactor = .35) {\n\t\tthis.duration = duration;\n\t\tthis.decayFactor = decayFactor;\n\t\tthis.elapsed = 0;\n\t\tconst magnitude = Math.hypot(direction.x, direction.y);\n\t\tthis.direction = magnitude > 0 ? {\n\t\t\tx: direction.x / magnitude,\n\t\t\ty: direction.y / magnitude\n\t\t} : {\n\t\t\tx: 1,\n\t\t\ty: 0\n\t\t};\n\t\tthis.currentSpeed = initialSpeed;\n\t}\n\tupdate(body, dt) {\n\t\tthis.elapsed += dt;\n\t\tif (this.elapsed <= this.duration) {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: this.direction.x * this.currentSpeed,\n\t\t\t\ty: this.direction.y * this.currentSpeed\n\t\t\t});\n\t\t\tconst decay = Math.max(0, Math.min(1, this.decayFactor));\n\t\t\tif (decay === 0) this.currentSpeed = 0;\n\t\t\telse if (decay === 1) {} else this.currentSpeed *= Math.pow(decay, dt);\n\t\t} else body.setVelocity({\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t}\n\tisFinished() {\n\t\treturn this.elapsed >= this.duration;\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/LinearRepulsion.ts\n/**\n* Seeks a target while repelling from nearby obstacles using a linear falloff.\n*\n* @example\n* ```typescript\n* const strategy = new LinearRepulsion(\n* engine,\n* () => player.position.clone(),\n* 3,\n* 2,\n* 5,\n* );\n* movementManager.add(enemy, strategy);\n* ```\n*/\nvar LinearRepulsion = class {\n\t/**\n\t* @param engine - Physics engine used for spatial queries\n\t* @param targetProvider - Function returning the target position\n\t* @param maxSpeed - Maximum speed in units per second\n\t* @param repulseRadius - Radius used to sample nearby obstacles\n\t* @param repulseWeight - Weight of the repulsion force\n\t* @param ignoredEntity - Optional entity to exclude from avoidance (e.g. the target)\n\t*/\n\tconstructor(engine, targetProvider, maxSpeed = 2.5, repulseRadius = 2, repulseWeight = 4, ignoredEntity) {\n\t\tthis.engine = engine;\n\t\tthis.targetProvider = targetProvider;\n\t\tthis.maxSpeed = maxSpeed;\n\t\tthis.repulseRadius = repulseRadius;\n\t\tthis.repulseWeight = repulseWeight;\n\t\tthis.ignoredEntity = ignoredEntity;\n\t\tthis.repulseRadiusSq = repulseRadius * repulseRadius;\n\t}\n\tupdate(body, _dt) {\n\t\tconst entity = body.getEntity?.();\n\t\tif (!entity) throw new Error(\"LinearRepulsion requires a movement body backed by a physics entity.\");\n\t\tconst targetPosition = this.targetProvider();\n\t\tconst toTarget = new Vector2(targetPosition.x - entity.position.x, targetPosition.y - entity.position.y);\n\t\tconst distance = toTarget.length();\n\t\tif (distance > 0) toTarget.divInPlace(distance);\n\t\telse toTarget.set(0, 0);\n\t\tconst bounds = AABB.fromCenterSize(entity.position.x, entity.position.y, this.repulseRadius * 2, this.repulseRadius * 2);\n\t\tconst neighbors = this.engine.queryAABB(bounds);\n\t\tconst ignored = this.ignoredEntity?.();\n\t\tconst push = new Vector2(0, 0);\n\t\tfor (const other of neighbors) {\n\t\t\tif (other === entity || other === ignored || other.isStatic()) continue;\n\t\t\tconst diff = new Vector2(entity.position.x - other.position.x, entity.position.y - other.position.y);\n\t\t\tconst d2 = diff.lengthSquared();\n\t\t\tif (d2 > this.repulseRadiusSq || d2 === 0) continue;\n\t\t\tconst d = Math.sqrt(d2);\n\t\t\tconst weight = this.repulseWeight * (this.repulseRadius - Math.min(d, this.repulseRadius)) / this.repulseRadius;\n\t\t\tpush.addInPlace(diff.mul(weight / d));\n\t\t}\n\t\tconst maxPush = this.maxSpeed * 3;\n\t\tconst pushLength = push.length();\n\t\tif (pushLength > maxPush && pushLength > 0) push.mulInPlace(maxPush / pushLength);\n\t\tconst desired = toTarget.mul(this.maxSpeed).add(push);\n\t\tconst desiredLength = desired.length();\n\t\tif (desiredLength > this.maxSpeed && desiredLength > 0) desired.mulInPlace(this.maxSpeed / desiredLength);\n\t\tif (!Number.isFinite(desired.x) || !Number.isFinite(desired.y)) {\n\t\t\tentity.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tbody.setVelocity(desired);\n\t}\n\tsetParameters(maxSpeed, repulseRadius, repulseWeight) {\n\t\tif (maxSpeed !== void 0) this.maxSpeed = maxSpeed;\n\t\tif (repulseRadius !== void 0) {\n\t\t\tthis.repulseRadius = repulseRadius;\n\t\t\tthis.repulseRadiusSq = repulseRadius * repulseRadius;\n\t\t}\n\t\tif (repulseWeight !== void 0) this.repulseWeight = repulseWeight;\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/Oscillate.ts\n/**\n* Oscillates an entity around its initial position using different wave patterns.\n*\n* @example\n* ```typescript\n* movementManager.add(platform, new Oscillate({ x: 1, y: 0 }, 2, 3, 'sine'));\n* ```\n*/\nvar Oscillate = class {\n\t/**\n\t* Creates an oscillating movement.\n\t*\n\t* @param direction - Base direction (will be normalized)\n\t* @param amplitude - Maximum displacement from the anchor position\n\t* @param period - Duration of a full cycle in seconds\n\t* @param type - Oscillation pattern\n\t* @param duration - Total life time in seconds (undefined for infinite)\n\t*/\n\tconstructor(direction, amplitude, period, type = \"sine\", duration) {\n\t\tthis.amplitude = amplitude;\n\t\tthis.period = period;\n\t\tthis.type = type;\n\t\tthis.duration = duration;\n\t\tthis.elapsed = 0;\n\t\tthis.anchor = null;\n\t\tconst magnitude = Math.hypot(direction.x, direction.y);\n\t\tthis.direction = magnitude > 0 ? {\n\t\t\tx: direction.x / magnitude,\n\t\t\ty: direction.y / magnitude\n\t\t} : {\n\t\t\tx: 1,\n\t\t\ty: 0\n\t\t};\n\t}\n\tupdate(body, dt) {\n\t\tif (this.anchor === null) this.anchor = {\n\t\t\tx: body.position.x,\n\t\t\ty: body.position.y\n\t\t};\n\t\tthis.elapsed += dt;\n\t\tif (this.duration !== void 0 && this.elapsed >= this.duration) {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst cycle = this.period <= 0 ? 0 : this.elapsed % this.period / this.period;\n\t\tconst frequency = this.period > 0 ? 2 * Math.PI / this.period : 0;\n\t\tlet velocityScale;\n\t\tswitch (this.type) {\n\t\t\tcase \"sine\":\n\t\t\t\tvelocityScale = Math.cos(cycle * Math.PI * 2) * frequency * this.amplitude;\n\t\t\t\tbreak;\n\t\t\tcase \"circular\":\n\t\t\t\tvelocityScale = Math.cos(cycle * Math.PI * 2) * frequency * this.amplitude;\n\t\t\t\tbreak;\n\t\t\tcase \"linear\":\n\t\t\t\tvelocityScale = (cycle < .5 ? 1 : -1) * (2 * this.amplitude) / (this.period / 2);\n\t\t\t\tbreak;\n\t\t\tdefault: velocityScale = 0;\n\t\t}\n\t\tconst vx = this.direction.x * velocityScale;\n\t\tconst vy = this.direction.y * velocityScale;\n\t\tif (this.type === \"circular\") {\n\t\t\tconst perpendicularScale = -Math.sin(cycle * Math.PI * 2) * frequency * this.amplitude;\n\t\t\tbody.setVelocity({\n\t\t\t\tx: vx - this.direction.y * perpendicularScale,\n\t\t\t\ty: vy + this.direction.x * perpendicularScale\n\t\t\t});\n\t\t} else body.setVelocity({\n\t\t\tx: vx,\n\t\t\ty: vy\n\t\t});\n\t}\n\tisFinished() {\n\t\treturn this.duration !== void 0 && this.elapsed >= this.duration;\n\t}\n\treset() {\n\t\tthis.elapsed = 0;\n\t\tthis.anchor = null;\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/PathFollow.ts\n/**\n* Makes an entity follow a list of waypoints at a constant speed.\n*\n* @example\n* ```typescript\n* movementManager.add(npc, new PathFollow(\n* [{ x: 0, y: 0 }, { x: 4, y: 0 }, { x: 4, y: 4 }],\n* 1.5,\n* true,\n* 0.5,\n* ));\n* ```\n*/\nvar PathFollow = class {\n\t/**\n\t* Creates a path-following strategy.\n\t*\n\t* @param waypoints - List of waypoints to traverse\n\t* @param speed - Travel speed in units per second\n\t* @param loop - When true, restart from the first waypoint\n\t* @param pauseAtWaypoints - Optional pause duration (seconds) at each waypoint\n\t* @param tolerance - Distance tolerance to consider a waypoint reached\n\t*/\n\tconstructor(waypoints, speed, loop = false, pauseAtWaypoints = 0, tolerance = .1) {\n\t\tthis.waypoints = waypoints;\n\t\tthis.speed = speed;\n\t\tthis.loop = loop;\n\t\tthis.pauseAtWaypoints = pauseAtWaypoints;\n\t\tthis.tolerance = tolerance;\n\t\tthis.currentWaypoint = 0;\n\t\tthis.elapsedPause = 0;\n\t\tthis.paused = false;\n\t\tthis.finished = false;\n\t\tthis.direction = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tif (waypoints.length === 0) this.finished = true;\n\t}\n\tupdate(body, dt) {\n\t\tif (this.finished || this.waypoints.length === 0) {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (this.paused) {\n\t\t\tthis.elapsedPause += dt;\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\tif (this.elapsedPause >= this.pauseAtWaypoints) {\n\t\t\t\tthis.paused = false;\n\t\t\t\tthis.elapsedPause = 0;\n\t\t\t} else return;\n\t\t}\n\t\tconst target = this.waypoints[this.currentWaypoint];\n\t\tif (!target) {\n\t\t\tthis.finished = true;\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst dx = target.x - body.position.x;\n\t\tconst dy = target.y - body.position.y;\n\t\tconst distance = Math.hypot(dx, dy);\n\t\tif (distance <= this.tolerance) {\n\t\t\tthis.currentWaypoint += 1;\n\t\t\tif (this.currentWaypoint >= this.waypoints.length) if (this.loop) this.currentWaypoint = 0;\n\t\t\telse {\n\t\t\t\tthis.finished = true;\n\t\t\t\tbody.setVelocity({\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.pauseAtWaypoints > 0) {\n\t\t\t\tthis.paused = true;\n\t\t\t\tthis.elapsedPause = 0;\n\t\t\t\tbody.setVelocity({\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (distance > 0) this.direction = {\n\t\t\tx: dx / distance,\n\t\t\ty: dy / distance\n\t\t};\n\t\tbody.setVelocity({\n\t\t\tx: this.direction.x * this.speed,\n\t\t\ty: this.direction.y * this.speed\n\t\t});\n\t}\n\tisFinished() {\n\t\treturn this.finished;\n\t}\n\tgetCurrentWaypoint() {\n\t\treturn this.currentWaypoint;\n\t}\n\tsetWaypoints(waypoints, reset = true) {\n\t\tthis.waypoints = waypoints;\n\t\tthis.finished = waypoints.length === 0;\n\t\tif (reset) {\n\t\t\tthis.currentWaypoint = 0;\n\t\t\tthis.paused = false;\n\t\t\tthis.elapsedPause = 0;\n\t\t}\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/ProjectileMovement.ts\n/**\n* Type of projectile trajectory.\n*/\nvar ProjectileType = /* @__PURE__ */ function(ProjectileType) {\n\tProjectileType[\"Straight\"] = \"straight\";\n\tProjectileType[\"Arc\"] = \"arc\";\n\tProjectileType[\"Bounce\"] = \"bounce\";\n\treturn ProjectileType;\n}({});\nvar ProjectileStage = /* @__PURE__ */ function(ProjectileStage) {\n\tProjectileStage[ProjectileStage[\"Flying\"] = 0] = \"Flying\";\n\tProjectileStage[ProjectileStage[\"Rolling\"] = 1] = \"Rolling\";\n\tProjectileStage[ProjectileStage[\"Finished\"] = 2] = \"Finished\";\n\treturn ProjectileStage;\n}(ProjectileStage || {});\n/**\n* Moves an entity following a projectile trajectory.\n*\n* @example\n* ```typescript\n* const projectile = new ProjectileMovement(ProjectileType.Arc, {\n* speed: 12,\n* direction: { x: 1, y: 0 },\n* maxHeight: 3,\n* gravity: 30,\n* });\n* movementManager.add(entity, projectile);\n* ```\n*/\nvar ProjectileMovement = class {\n\tconstructor(type, options) {\n\t\tthis.type = type;\n\t\tthis.elapsed = 0;\n\t\tthis.distanceTraveled = 0;\n\t\tthis.startPosition = null;\n\t\tthis.bounceCount = 0;\n\t\tthis.stage = ProjectileStage.Flying;\n\t\tthis.finished = false;\n\t\tthis.currentHeight = 0;\n\t\tthis.verticalVelocity = 0;\n\t\tthis.options = {\n\t\t\tspeed: options.speed,\n\t\t\tdirection: options.direction,\n\t\t\tinitialHeight: 0,\n\t\t\tmaxHeight: 2,\n\t\t\tgravity: 30,\n\t\t\tmaxBounces: 0,\n\t\t\tbounciness: .6,\n\t\t\tdrag: 0,\n\t\t\t...options\n\t\t};\n\t\tconst magnitude = Math.hypot(this.options.direction.x, this.options.direction.y);\n\t\tthis.direction = magnitude > 0 ? {\n\t\t\tx: this.options.direction.x / magnitude,\n\t\t\ty: this.options.direction.y / magnitude\n\t\t} : {\n\t\t\tx: 1,\n\t\t\ty: 0\n\t\t};\n\t\tthis.currentHeight = this.options.initialHeight ?? 0;\n\t\tif (this.type === ProjectileType.Arc || this.type === ProjectileType.Bounce) {\n\t\t\tconst gravity = this.options.gravity ?? 30;\n\t\t\tconst maxHeight = this.options.maxHeight ?? 2;\n\t\t\tthis.verticalVelocity = Math.sqrt(Math.max(0, 2 * gravity * maxHeight));\n\t\t}\n\t}\n\tupdate(body, dt) {\n\t\tif (this.finished || dt <= 0) {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (this.startPosition === null) this.startPosition = new Vector2(body.position.x, body.position.y);\n\t\tthis.elapsed += dt;\n\t\tif (this.options.lifetime !== void 0 && this.elapsed >= this.options.lifetime) {\n\t\t\tthis.finish(body);\n\t\t\treturn;\n\t\t}\n\t\tswitch (this.stage) {\n\t\t\tcase ProjectileStage.Flying:\n\t\t\t\tthis.updateFlying(body, dt);\n\t\t\t\tbreak;\n\t\t\tcase ProjectileStage.Rolling:\n\t\t\t\tthis.updateRolling(body, dt);\n\t\t\t\tbreak;\n\t\t\tcase ProjectileStage.Finished:\n\t\t\t\tthis.finish(body);\n\t\t\t\treturn;\n\t\t}\n\t\tif (this.startPosition) {\n\t\t\tthis.distanceTraveled = new Vector2(body.position.x, body.position.y).distanceTo(this.startPosition);\n\t\t\tif (this.options.maxRange !== void 0 && this.distanceTraveled >= this.options.maxRange) this.finish(body);\n\t\t}\n\t}\n\tisFinished() {\n\t\treturn this.finished;\n\t}\n\tgetHeight() {\n\t\treturn this.currentHeight;\n\t}\n\tgetProgress() {\n\t\tif (this.options.maxRange) return Math.min(1, this.distanceTraveled / this.options.maxRange);\n\t\tif (this.options.lifetime) return Math.min(1, this.elapsed / this.options.lifetime);\n\t\treturn 0;\n\t}\n\tupdateFlying(body, dt) {\n\t\tlet vx = this.direction.x * this.options.speed;\n\t\tlet vy = this.direction.y * this.options.speed;\n\t\tconst drag = Math.max(0, Math.min(1, this.options.drag ?? 0));\n\t\tif (drag > 0) {\n\t\t\tconst dragFactor = Math.pow(1 - drag, dt);\n\t\t\tvx *= dragFactor;\n\t\t\tvy *= dragFactor;\n\t\t}\n\t\tif (this.type === ProjectileType.Arc || this.type === ProjectileType.Bounce) {\n\t\t\tconst gravity = this.options.gravity ?? 30;\n\t\t\tthis.verticalVelocity -= gravity * dt;\n\t\t\tthis.currentHeight += this.verticalVelocity * dt;\n\t\t\tif (this.options.onHeightUpdate) this.options.onHeightUpdate(this.currentHeight, body);\n\t\t\telse {\n\t\t\t\tconst dispatcher = globalThis;\n\t\t\t\tif (typeof dispatcher.dispatchEvent === \"function\" && typeof CustomEvent !== \"undefined\") {\n\t\t\t\t\tconst event = new CustomEvent(\"projectile:height\", { detail: {\n\t\t\t\t\t\tid: body.id,\n\t\t\t\t\t\theight: this.currentHeight\n\t\t\t\t\t} });\n\t\t\t\t\tdispatcher.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.currentHeight <= 0) {\n\t\t\t\tthis.currentHeight = 0;\n\t\t\t\tif (this.type === ProjectileType.Bounce) if (this.bounceCount < (this.options.maxBounces ?? 0)) {\n\t\t\t\t\tconst bounceEnergy = this.options.bounciness ?? .6;\n\t\t\t\t\tthis.verticalVelocity = Math.abs(this.verticalVelocity) * bounceEnergy;\n\t\t\t\t\tvx *= bounceEnergy;\n\t\t\t\t\tvy *= bounceEnergy;\n\t\t\t\t\tthis.bounceCount += 1;\n\t\t\t\t} else this.stage = ProjectileStage.Rolling;\n\t\t\t\telse {\n\t\t\t\t\tthis.finish(body);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tbody.setVelocity({\n\t\t\tx: vx,\n\t\t\ty: vy\n\t\t});\n\t}\n\tupdateRolling(body, dt) {\n\t\tconst friction = .85;\n\t\tconst vx = body.velocity.x * Math.pow(friction, dt * 60);\n\t\tconst vy = body.velocity.y * Math.pow(friction, dt * 60);\n\t\tbody.setVelocity({\n\t\t\tx: vx,\n\t\t\ty: vy\n\t\t});\n\t\tif (Math.abs(vx) < .1 && Math.abs(vy) < .1) this.finish(body);\n\t}\n\tfinish(body) {\n\t\tthis.finished = true;\n\t\tthis.stage = ProjectileStage.Finished;\n\t\tbody.setVelocity({\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t}\n};\n//#endregion\n//#region ../physic/src/movement/strategies/SeekAvoid.ts\nvar EPSILON = .001;\n/**\n* Seeks a moving target while avoiding nearby obstacles.\n*\n* The strategy combines a pull towards the target with repulsive forces from\n* close entities, creating smooth avoidance behaviour.\n*\n* @example\n* ```typescript\n* const seek = new SeekAvoid(engine, () => playerEntity, 3, 2, 6, 0.5);\n* movementManager.add(enemy, seek);\n* ```\n*/\nvar SeekAvoid = class {\n\t/**\n\t* @param engine - Physics engine used for spatial queries\n\t* @param targetProvider - Function returning the target entity (or null)\n\t* @param maxSpeed - Maximum speed in units per second\n\t* @param repulseRadius - Radius in which obstacles apply repulsion\n\t* @param repulseWeight - Strength of the repulsion force\n\t* @param arriveRadius - Distance considered as arrival\n\t*/\n\tconstructor(engine, targetProvider, maxSpeed = 2.5, repulseRadius = 2, repulseWeight = 4, arriveRadius = .5) {\n\t\tthis.engine = engine;\n\t\tthis.targetProvider = targetProvider;\n\t\tthis.maxSpeed = maxSpeed;\n\t\tthis.repulseRadius = repulseRadius;\n\t\tthis.repulseWeight = repulseWeight;\n\t\tthis.repulseRadiusSq = repulseRadius * repulseRadius;\n\t\tthis.arriveRadiusSq = arriveRadius * arriveRadius;\n\t}\n\tupdate(body, _dt) {\n\t\tconst entity = body.getEntity?.();\n\t\tif (!entity) throw new Error(\"SeekAvoid requires a movement body backed by a physics entity.\");\n\t\tconst target = this.targetProvider();\n\t\tif (!target) {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst toTarget = new Vector2(target.position.x - entity.position.x, target.position.y - entity.position.y);\n\t\tconst distSq = toTarget.lengthSquared();\n\t\tlet arrived = false;\n\t\tif (distSq <= this.arriveRadiusSq) {\n\t\t\ttoTarget.set(0, 0);\n\t\t\tarrived = true;\n\t\t} else if (distSq > 0) toTarget.divInPlace(Math.sqrt(distSq));\n\t\tconst bounds = AABB.fromCenterSize(entity.position.x, entity.position.y, this.repulseRadius * 2, this.repulseRadius * 2);\n\t\tconst neighbors = this.engine.queryAABB(bounds);\n\t\tconst push = new Vector2(0, 0);\n\t\tlet neighborCount = 0;\n\t\tif (!arrived) for (const other of neighbors) {\n\t\t\tif (other === entity || other === target || other.isStatic()) continue;\n\t\t\tconst diff = new Vector2(entity.position.x - other.position.x, entity.position.y - other.position.y);\n\t\t\tlet d2 = diff.lengthSquared();\n\t\t\tif (d2 > this.repulseRadiusSq) continue;\n\t\t\tneighborCount++;\n\t\t\tif (d2 < EPSILON) d2 = EPSILON;\n\t\t\tconst weight = this.repulseWeight / d2;\n\t\t\tpush.addInPlace(diff.mul(weight));\n\t\t}\n\t\tconst pushLength = push.length();\n\t\tconst maxPush = this.maxSpeed * .5;\n\t\tif (pushLength > maxPush && pushLength > 0) push.mulInPlace(maxPush / pushLength);\n\t\tconst desired = toTarget.mul(this.maxSpeed).add(push);\n\t\tconst desiredLength = desired.length();\n\t\tconst maxCombinedSpeed = this.maxSpeed * 1.5;\n\t\tif (desiredLength > maxCombinedSpeed && desiredLength > 0) desired.mulInPlace(maxCombinedSpeed / desiredLength);\n\t\tif (!Number.isFinite(desired.x) || !Number.isFinite(desired.y)) {\n\t\t\tbody.setVelocity({\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tbody.setVelocity(desired);\n\t}\n\tsetParameters(maxSpeed, repulseRadius, repulseWeight, arriveRadius) {\n\t\tif (maxSpeed !== void 0) this.maxSpeed = maxSpeed;\n\t\tif (repulseRadius !== void 0) {\n\t\t\tthis.repulseRadius = repulseRadius;\n\t\t\tthis.repulseRadiusSq = repulseRadius * repulseRadius;\n\t\t}\n\t\tif (repulseWeight !== void 0) this.repulseWeight = repulseWeight;\n\t\tif (arriveRadius !== void 0) this.arriveRadiusSq = arriveRadius * arriveRadius;\n\t}\n};\n//#endregion\n//#region ../common/src/movement/MovementManager.ts\n/**\n* Thin proxy around the physics movement manager.\n*\n* Delegates every operation to the deterministic engine provided by `PhysicsEngine`\n* so strategies operate on the exact same entities as the physics simulation.\n*/\nvar MovementManager = class {\n\tconstructor(physicProvider) {\n\t\tthis.physicProvider = physicProvider;\n\t}\n\tget core() {\n\t\treturn this.physicProvider().getMovementManager();\n\t}\n\t/**\n\t* Adds a movement strategy and returns a Promise that resolves when it completes.\n\t* \n\t* @param id - Entity identifier\n\t* @param strategy - Movement strategy to add\n\t* @param options - Optional callbacks for movement lifecycle events\n\t* @returns Promise that resolves when the movement completes\n\t*/\n\tadd(id, strategy, options) {\n\t\treturn this.core.add(id, strategy, options);\n\t}\n\tremove(id, strategy) {\n\t\treturn this.core.remove(id, strategy);\n\t}\n\tclear(id) {\n\t\tthis.core.clear(id);\n\t}\n\tstopMovement(id) {\n\t\tthis.core.stopMovement(id);\n\t}\n\thasActiveStrategies(id) {\n\t\treturn this.core.hasActiveStrategies(id);\n\t}\n\tgetStrategies(id) {\n\t\treturn this.core.getStrategies(id);\n\t}\n\tupdate(dtMs) {\n\t\tthis.core.update(dtMs / 1e3);\n\t}\n\tclearAll() {\n\t\tthis.core.clearAll();\n\t}\n};\n//#endregion\n//#region ../common/src/rooms/Map.ts\nvar RpgCommonMap = class {\n\tconstructor() {\n\t\tthis.data = signal(null);\n\t\tthis.physic = new PhysicsEngine({\n\t\t\ttimeStep: 1 / 60,\n\t\t\tgravity: new Vector2(0, 0),\n\t\t\tenableSleep: false\n\t\t});\n\t\tthis.moveManager = new MovementManager(() => this.physic);\n\t\tthis.speedScalar = 50;\n\t\tthis.tileWidth = 32;\n\t\tthis.tileHeight = 32;\n\t\tthis.physicsAccumulatorMs = 0;\n\t\tthis.physicsSyncDepth = 0;\n\t\tthis.autoTickEnabled = true;\n\t\tthis.tick$ = new Observable((observer) => {\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tobserver.next({\n\t\t\t\t\tdelta: 16,\n\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t});\n\t\t\t}, 16);\n\t\t\treturn () => clearInterval(interval);\n\t\t}).pipe(share());\n\t}\n\tget isStandalone() {\n\t\treturn typeof window !== \"undefined\";\n\t}\n\t/**\n\t* Get the width of the map in pixels\n\t* \n\t* @returns The width of the map in pixels, or 0 if not loaded\n\t* \n\t* @example\n\t* ```ts\n\t* const width = map.widthPx;\n\t* console.log(`Map width: ${width}px`);\n\t* ```\n\t*/\n\tget widthPx() {\n\t\treturn this.data()?.width ?? 0;\n\t}\n\t/**\n\t* Get the height of the map in pixels\n\t* \n\t* @returns The height of the map in pixels, or 0 if not loaded\n\t* \n\t* @example\n\t* ```ts\n\t* const height = map.heightPx;\n\t* console.log(`Map height: ${height}px`);\n\t* ```\n\t*/\n\tget heightPx() {\n\t\treturn this.data()?.height ?? 0;\n\t}\n\t/**\n\t* Get the unique identifier of the map\n\t* \n\t* @returns The map ID, or empty string if not loaded\n\t* \n\t* @example\n\t* ```ts\n\t* const mapId = map.id;\n\t* console.log(`Current map: ${mapId}`);\n\t* ```\n\t*/\n\tget id() {\n\t\treturn this.data()?.id ?? \"\";\n\t}\n\t/**\n\t* Get the X position of this map in the world coordinate system\n\t* \n\t* This is used when maps are part of a larger world map. The world position\n\t* indicates where this map is located relative to other maps.\n\t* \n\t* @returns The X position in world coordinates, or 0 if not in a world\n\t* \n\t* @example\n\t* ```ts\n\t* const worldX = map.worldX;\n\t* console.log(`Map is at world position (${worldX}, ${map.worldY})`);\n\t* ```\n\t*/\n\tget worldX() {\n\t\tconst worldMaps = this.getWorldMapsManager?.();\n\t\tif (!worldMaps) return 0;\n\t\tconst mapId = this.id.startsWith(\"map-\") ? this.id.slice(4) : this.id;\n\t\treturn worldMaps.getMapInfo(mapId)?.worldX ?? 0;\n\t}\n\t/**\n\t* Get the Y position of this map in the world coordinate system\n\t* \n\t* This is used when maps are part of a larger world map. The world position\n\t* indicates where this map is located relative to other maps.\n\t* \n\t* @returns The Y position in world coordinates, or 0 if not in a world\n\t* \n\t* @example\n\t* ```ts\n\t* const worldY = map.worldY;\n\t* console.log(`Map is at world position (${map.worldX}, ${worldY})`);\n\t* ```\n\t*/\n\tget worldY() {\n\t\tconst worldMaps = this.getWorldMapsManager?.();\n\t\tif (!worldMaps) return 0;\n\t\tconst mapId = this.id.startsWith(\"map-\") ? this.id.slice(4) : this.id;\n\t\treturn worldMaps.getMapInfo(mapId)?.worldY ?? 0;\n\t}\n\t/**\n\t* Clear all physics content and reset to initial state\n\t* \n\t* This method completely clears the physics system by:\n\t* - Removing all hitboxes (static and movable)\n\t* - Removing all zones\n\t* - Clearing all collision data and events\n\t* - Clearing all movement events and sliding data\n\t* - Unsubscribing from the tick subscription\n\t* - Resetting the physics engine to a clean state\n\t* \n\t* Use this method when you need to completely reset the map's physics\n\t* system, such as when changing maps or restarting a level.\n\t* \n\t* @example\n\t* ```ts\n\t* // Clear all physics when changing maps\n\t* map.clearPhysic();\n\t* \n\t* // Then reload physics for the new map\n\t* map.loadPhysic();\n\t* ```\n\t*/\n\tclearPhysic() {\n\t\tif (this.tickSubscription) {\n\t\t\tthis.tickSubscription.unsubscribe();\n\t\t\tthis.tickSubscription = null;\n\t\t}\n\t\tif (this.playersSubscription) {\n\t\t\tthis.playersSubscription.unsubscribe();\n\t\t\tthis.playersSubscription = null;\n\t\t}\n\t\tif (this.eventsSubscription) {\n\t\t\tthis.eventsSubscription.unsubscribe();\n\t\t\tthis.eventsSubscription = null;\n\t\t}\n\t\tthis.clearAll();\n\t\tthis.moveManager.clearAll();\n\t\tthis.emitPhysicsReset();\n\t\tthis.physicsAccumulatorMs = 0;\n\t}\n\t/**\n\t* Clear all physics entities and internal state\n\t* @private\n\t*/\n\tclearAll() {\n\t\tconst entities = this.physic.getEntities();\n\t\tfor (const entity of entities) {\n\t\t\tconst owner = entity.owner;\n\t\t\tif (owner) this.emitPhysicsEntityRemove({\n\t\t\t\towner,\n\t\t\t\tentity,\n\t\t\t\tkind: this.resolvePhysicsEntityKind(owner, entity.uuid)\n\t\t\t});\n\t\t\tthis.unbindCharacterSignalSync(entity);\n\t\t\tthis.physic.removeEntity(entity);\n\t\t}\n\t\tthis.physic.getMovementManager().clearAll();\n\t\tthis.physic.getZoneManager().clear();\n\t}\n\tloadPhysic() {\n\t\tthis.clearPhysic();\n\t\tconst mapData = this.data?.();\n\t\tconst mapWidth = typeof mapData?.width === \"number\" ? mapData.width : 0;\n\t\tconst mapHeight = typeof mapData?.height === \"number\" ? mapData.height : 0;\n\t\tconst hitboxes = Array.isArray(mapData?.hitboxes) ? mapData.hitboxes : [];\n\t\tif (mapWidth > 0 && mapHeight > 0) {\n\t\t\tconst gap = 100;\n\t\t\tthis.addStaticHitbox(\"map-width-left\", -gap, 0, gap, mapHeight);\n\t\t\tthis.addStaticHitbox(\"map-width-right\", mapWidth, 0, gap, mapHeight);\n\t\t\tthis.addStaticHitbox(\"map-height-top\", 0, -gap, mapWidth, gap);\n\t\t\tthis.addStaticHitbox(\"map-height-bottom\", 0, mapHeight, mapWidth, gap);\n\t\t}\n\t\tfor (let staticHitbox of hitboxes) if (\"x\" in staticHitbox) this.addStaticHitbox(staticHitbox.id ?? generateShortUUID(), staticHitbox.x, staticHitbox.y, staticHitbox.width, staticHitbox.height);\n\t\telse if (\"points\" in staticHitbox) this.addStaticHitbox(staticHitbox.id ?? generateShortUUID(), staticHitbox.points);\n\t\tthis.emitPhysicsInit({ mapData });\n\t\tthis.playersSubscription = this.players.observable.subscribe(({ value: player, type, key }) => {\n\t\t\tif (type === \"remove\") {\n\t\t\t\tthis.removeHitbox(key, player, \"hero\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (type == \"reset\") {\n\t\t\t\tif (!player) return;\n\t\t\t\tfor (let id in player) {\n\t\t\t\t\tconst _player = player[id];\n\t\t\t\t\t_player.id = _player.id ?? id;\n\t\t\t\t\tthis.createCharacterHitbox(_player, \"hero\");\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!player) return;\n\t\t\tif (type === \"add\") {\n\t\t\t\tplayer.id = key;\n\t\t\t\tthis.createCharacterHitbox(player, \"hero\");\n\t\t\t} else if (type === \"update\") {\n\t\t\t\tplayer.id = player.id ?? key;\n\t\t\t\tif (!this.getBody(key)) {\n\t\t\t\t\tthis.createCharacterHitbox(player, \"hero\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.isPhysicsSyncingSignals) return;\n\t\t\t\tthis.updateCharacterHitbox(player);\n\t\t\t}\n\t\t});\n\t\tthis.eventsSubscription = this.events.observable.subscribe(({ value: event, type, key }) => {\n\t\t\tif (type === \"add\") {\n\t\t\t\tevent.id = key;\n\t\t\t\tthis.createCharacterHitbox(event, \"npc\", { mass: 100 });\n\t\t\t} else if (type === \"remove\") {\n\t\t\t\tconst eventObj = this.getObjectById(key);\n\t\t\t\tif (eventObj && typeof eventObj._movementUnsubscribe === \"function\") eventObj._movementUnsubscribe();\n\t\t\t\tthis.removeHitbox(key, event, \"npc\");\n\t\t\t} else if (type === \"update\") {\n\t\t\t\tevent.id = event.id ?? key;\n\t\t\t\tif (!this.getBody(key)) {\n\t\t\t\t\tthis.createCharacterHitbox(event, \"npc\", { mass: 100 });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.updateCharacterHitbox(event);\n\t\t\t} else if (type === \"reset\") for (const id in event) {\n\t\t\t\tconst _event = event[id];\n\t\t\t\tif (!_event) continue;\n\t\t\t\t_event.id = _event.id ?? id;\n\t\t\t\tthis.createCharacterHitbox(_event, \"npc\", { mass: 100 });\n\t\t\t}\n\t\t});\n\t\tconst players = this.players();\n\t\tfor (const id in players) {\n\t\t\tconst player = players[id];\n\t\t\tif (!player) continue;\n\t\t\tplayer.id = player.id ?? id;\n\t\t\tthis.createCharacterHitbox(player, \"hero\");\n\t\t}\n\t\tconst events = this.events();\n\t\tfor (const id in events) {\n\t\t\tconst event = events[id];\n\t\t\tif (!event) continue;\n\t\t\tevent.id = event.id ?? id;\n\t\t\tthis.createCharacterHitbox(event, \"npc\", { mass: 100 });\n\t\t}\n\t\tif (this.autoTickEnabled) this.tickSubscription = this.tick$.subscribe(({ delta }) => {\n\t\t\tthis.runFixedTicks(delta);\n\t\t});\n\t}\n\tasync movePlayer(player, direction) {\n\t\tconst currentX = player.x();\n\t\tconst currentY = player.y();\n\t\tconst speed = player.speed();\n\t\tlet nextX = currentX;\n\t\tlet nextY = currentY;\n\t\tswitch (direction) {\n\t\t\tcase Direction.Left:\n\t\t\t\tnextX = currentX - speed;\n\t\t\t\tbreak;\n\t\t\tcase Direction.Right:\n\t\t\t\tnextX = currentX + speed;\n\t\t\t\tbreak;\n\t\t\tcase Direction.Up:\n\t\t\t\tnextY = currentY - speed;\n\t\t\t\tbreak;\n\t\t\tcase Direction.Down:\n\t\t\t\tnextY = currentY + speed;\n\t\t\t\tbreak;\n\t\t}\n\t\tplayer.changeDirection(direction);\n\t\tif (typeof player.autoChangeMap === \"function\" && !player.isEvent()) {\n\t\t\tif (await player.autoChangeMap({\n\t\t\t\tx: nextX,\n\t\t\t\ty: nextY\n\t\t\t}, direction)) {\n\t\t\t\tthis.stopMovement(player);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tthis.moveBody(player, direction);\n\t}\n\t/**\n\t* Check if an entity is currently moving\n\t* \n\t* @param id - ID of the entity to check\n\t* @returns Boolean indicating if the entity is in motion\n\t* \n\t* @example\n\t* ```ts\n\t* // Check if player is moving\n\t* if (map.isMoving('player1')) {\n\t* // Player is in motion\n\t* }\n\t* ```\n\t*/\n\tisMoving(id) {\n\t\treturn this.isEntityMoving(id);\n\t}\n\tgetObjectById(id) {\n\t\treturn this.players()[id] ?? this.events()[id];\n\t}\n\t/**\n\t* Execute physics simulation with fixed timestep\n\t* \n\t* This method runs the physics engine using a fixed timestep accumulator pattern.\n\t* It ensures deterministic physics regardless of frame rate by:\n\t* 1. Accumulating delta time\n\t* 2. Running fixed-size physics steps until the accumulator is depleted\n\t* 3. Calling `updateMovements()` before each step to apply velocity changes\n\t* 4. Running post-tick updates (zones, callbacks) after each step\n\t* \n\t* ## Architecture\n\t* \n\t* The physics loop is centralized here and called from `tick$` subscription.\n\t* Input processing (`processInput`) only updates entity velocities - it does NOT\n\t* step the physics. This ensures:\n\t* - Consistent physics timing (60fps fixed timestep)\n\t* - No double-stepping when inputs are processed\n\t* - Proper accumulator-based interpolation support\n\t* \n\t* @param deltaMs - Time elapsed since last call in milliseconds\n\t* @param hooks - Optional callbacks for before/after each physics step\n\t* @returns Number of physics ticks executed\n\t* \n\t* @example\n\t* ```ts\n\t* // Called automatically by tick$ subscription\n\t* this.tickSubscription = this.tick$.subscribe(({ delta }) => {\n\t* this.runFixedTicks(delta);\n\t* });\n\t* \n\t* // Or manually with hooks for debugging\n\t* this.runFixedTicks(16, {\n\t* beforeStep: () => console.log('Before physics step'),\n\t* afterStep: (tick) => console.log(`Physics tick ${tick} completed`)\n\t* });\n\t* ```\n\t*/\n\trunFixedTicks(deltaMs, hooks) {\n\t\tif (!Number.isFinite(deltaMs) || deltaMs <= 0) return 0;\n\t\tconst fixedStepMs = this.physic.getWorld().getTimeStep() * 1e3;\n\t\tthis.physicsAccumulatorMs += deltaMs;\n\t\tlet executed = 0;\n\t\twhile (this.physicsAccumulatorMs >= fixedStepMs) {\n\t\t\tthis.physicsAccumulatorMs -= fixedStepMs;\n\t\t\thooks?.beforeStep?.();\n\t\t\tthis.physic.updateMovements();\n\t\t\tconst tick = this.physic.stepOneTick();\n\t\t\texecuted += 1;\n\t\t\tthis.runPostTickUpdates();\n\t\t\thooks?.afterStep?.(tick);\n\t\t}\n\t\treturn executed;\n\t}\n\t/**\n\t* Manually trigger a single game tick\n\t* \n\t* This method allows you to manually advance the game by one tick (16ms at 60fps).\n\t* It's primarily useful for testing where you need precise control over when\n\t* physics updates occur, rather than relying on the automatic tick$ subscription.\n\t* \n\t* ## Use Cases\n\t* \n\t* - **Testing**: Control exactly when physics steps occur in unit tests\n\t* - **Manual control**: Step through game state manually for debugging\n\t* - **Deterministic testing**: Ensure consistent timing in test scenarios\n\t* \n\t* ## Important\n\t* \n\t* This method should NOT be used in production code alongside the automatic `tick$`\n\t* subscription, as it will cause double-stepping. Use either:\n\t* - Automatic ticks (via `loadPhysic()` which subscribes to `tick$`)\n\t* - Manual ticks (via `nextTick()` without `loadPhysic()` subscription)\n\t* \n\t* @param deltaMs - Optional delta time in milliseconds (default: 16ms for 60fps)\n\t* @returns Number of physics ticks executed\n\t* \n\t* @example\n\t* ```ts\n\t* // In tests: manually advance game by one tick\n\t* map.nextTick(); // Advances by 16ms (one frame at 60fps)\n\t* \n\t* // With custom delta\n\t* map.nextTick(32); // Advances by 32ms (two frames at 60fps)\n\t* \n\t* // In a test loop\n\t* for (let i = 0; i < 60; i++) {\n\t* map.nextTick(); // Simulate 1 second of game time\n\t* }\n\t* ```\n\t*/\n\tnextTick(deltaMs = 16) {\n\t\treturn this.runFixedTicks(deltaMs);\n\t}\n\t/**\n\t* Force a single physics tick outside of the normal game loop\n\t* \n\t* This method is primarily used for **client-side prediction** where the client\n\t* needs to immediately simulate physics in response to local input, rather than\n\t* waiting for the next game loop tick.\n\t* \n\t* ## Use Cases\n\t* \n\t* - **Client-side prediction**: Immediately simulate player movement for responsive feel\n\t* - **Testing**: Force a physics step in unit tests\n\t* - **Special effects**: Immediate physics response for specific game events\n\t* \n\t* ## Important\n\t* \n\t* This method should NOT be used on the server for normal input processing.\n\t* Server-side physics is handled by `runFixedTicks` in the main game loop to ensure\n\t* deterministic simulation.\n\t* \n\t* @param hooks - Optional callbacks for before/after the physics step\n\t* @returns The physics tick number\n\t* \n\t* @example\n\t* ```ts\n\t* // Client-side: immediately simulate predicted movement\n\t* class RpgClientMap extends RpgCommonMap {\n\t* stepPredictionTick(): void {\n\t* this.forceSingleTick();\n\t* }\n\t* }\n\t* ```\n\t*/\n\tforceSingleTick(hooks) {\n\t\thooks?.beforeStep?.();\n\t\tthis.physic.updateMovements();\n\t\tconst tick = this.physic.stepOneTick();\n\t\tthis.runPostTickUpdates();\n\t\thooks?.afterStep?.(tick);\n\t\tconst fixedMs = this.physic.getWorld().getTimeStep() * 1e3;\n\t\tthis.physicsAccumulatorMs = Math.max(0, this.physicsAccumulatorMs - fixedMs);\n\t\treturn tick;\n\t}\n\tcreateCharacterHitbox(owner, kind, options) {\n\t\tif (!owner?.id) return;\n\t\tconst existingEntity = this.physic.getEntityByUUID(owner.id);\n\t\tif (existingEntity) {\n\t\t\texistingEntity.owner = owner;\n\t\t\tthis.bindCharacterSignalSync(existingEntity, owner);\n\t\t\tthis.updateCharacterHitbox(owner);\n\t\t\treturn;\n\t\t}\n\t\tconst hitbox = typeof owner.hitbox === \"function\" ? owner.hitbox() : owner.hitbox;\n\t\tconst width = hitbox?.w ?? 32;\n\t\tconst height = hitbox?.h ?? 32;\n\t\tconst radius = Math.max(width, height) / 2;\n\t\tthis.addCharacter({\n\t\t\towner,\n\t\t\tradius,\n\t\t\tkind,\n\t\t\tmaxSpeed: owner.speed(),\n\t\t\tcollidesWithCharacters: !this.shouldDisableCharacterCollisions(owner),\n\t\t\tisStatic: options?.isStatic,\n\t\t\tmass: options?.mass\n\t\t});\n\t\tconst entity = this.getBody(owner.id);\n\t\tif (entity) this.emitPhysicsEntityAdd({\n\t\t\towner,\n\t\t\tentity,\n\t\t\tkind\n\t\t});\n\t}\n\tupdateCharacterHitbox(owner) {\n\t\tif (!owner?.id) return;\n\t\tconst entity = this.physic.getEntityByUUID(owner.id);\n\t\tif (!entity) return;\n\t\tentity.owner = owner;\n\t\tthis.bindCharacterSignalSync(entity, owner);\n\t\tconst hitbox = typeof owner.hitbox === \"function\" ? owner.hitbox() : owner.hitbox;\n\t\tconst width = hitbox?.w ?? 32;\n\t\tconst height = hitbox?.h ?? 32;\n\t\tconst topLeftX = this.resolveNumeric(owner.x);\n\t\tconst topLeftY = this.resolveNumeric(owner.y);\n\t\tthis.updateHitbox(owner.id, topLeftX, topLeftY, width, height);\n\t\tthis.setCharacterCollisionEnabled(owner.id, !this.shouldDisableCharacterCollisions(owner));\n\t}\n\tresolveNumeric(source, fallback = 0) {\n\t\tif (typeof source === \"function\") try {\n\t\t\treturn Number(source()) ?? fallback;\n\t\t} catch {\n\t\t\treturn fallback;\n\t\t}\n\t\tif (typeof source === \"number\") return source;\n\t\treturn fallback;\n\t}\n\tbindCharacterSignalSync(entity, owner) {\n\t\tconst entityAny = entity;\n\t\tif (entityAny.__rpgSignalSyncOwner === owner && typeof entityAny.__rpgSignalSyncUnsubscribe === \"function\") return;\n\t\tthis.unbindCharacterSignalSync(entity);\n\t\tentityAny.__rpgSignalSyncOwner = owner;\n\t\tconst subscriptions = [];\n\t\tentityAny.__rpgSignalSyncUnsubscribe = () => {\n\t\t\tsubscriptions.forEach((subscription) => subscription.unsubscribe());\n\t\t\tdelete entityAny.__rpgSignalSyncUnsubscribe;\n\t\t\tdelete entityAny.__rpgSignalSyncOwner;\n\t\t};\n\t\tconst syncFromSignals = () => {\n\t\t\tif (this.isPhysicsSyncingSignals) return;\n\t\t\tconst currentOwner = entityAny.owner;\n\t\t\tif (!currentOwner?.id || currentOwner.id !== entity.uuid) return;\n\t\t\tthis.updateCharacterHitbox(currentOwner);\n\t\t};\n\t\tconst subscribeSignal = (signalLike) => {\n\t\t\tconst observable = signalLike?.observable;\n\t\t\tif (!observable || typeof observable.subscribe !== \"function\") return;\n\t\t\tsubscriptions.push(observable.subscribe(() => syncFromSignals()));\n\t\t};\n\t\tsubscribeSignal(owner.x);\n\t\tsubscribeSignal(owner.y);\n\t\tsubscribeSignal(owner.hitbox);\n\t\tsubscribeSignal(owner._through);\n\t}\n\tunbindCharacterSignalSync(entity) {\n\t\tconst entityAny = entity;\n\t\tconst unsubscribe = entityAny.__rpgSignalSyncUnsubscribe;\n\t\tif (typeof unsubscribe === \"function\") {\n\t\t\tunsubscribe();\n\t\t\treturn;\n\t\t}\n\t\tdelete entityAny.__rpgSignalSyncOwner;\n\t}\n\tshouldDisableCharacterCollisions(owner) {\n\t\tif (typeof owner._through === \"function\") try {\n\t\t\treturn !!owner._through();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof owner.through === \"boolean\") return owner.through;\n\t\treturn false;\n\t}\n\tresolvePhysicsEntityKind(owner, id) {\n\t\tif (typeof owner?.isEvent === \"function\") try {\n\t\t\tif (owner.isEvent()) return \"npc\";\n\t\t} catch {}\n\t\tconst ownerId = typeof owner?.id === \"string\" ? owner.id : id;\n\t\tif (ownerId && this.players()?.[ownerId]) return \"hero\";\n\t\tif (ownerId && this.events()?.[ownerId]) return \"npc\";\n\t\treturn \"generic\";\n\t}\n\temitPhysicsInit(_context) {}\n\temitPhysicsEntityAdd(_context) {}\n\temitPhysicsEntityRemove(_context) {}\n\temitPhysicsReset() {}\n\twithPhysicsSync(run) {\n\t\tthis.physicsSyncDepth += 1;\n\t\ttry {\n\t\t\treturn run();\n\t\t} finally {\n\t\t\tthis.physicsSyncDepth -= 1;\n\t\t}\n\t}\n\tget isPhysicsSyncingSignals() {\n\t\treturn this.physicsSyncDepth > 0;\n\t}\n\t/**\n\t* Get the world maps manager\n\t* \n\t* @returns WorldMapsManager instance or null if not configured\n\t* \n\t* @example\n\t* ```ts\n\t* const worldMaps = map.getWorldMapsManager();\n\t* if (worldMaps) {\n\t* const adjacentMaps = worldMaps.getAdjacentMaps(currentMap, coordinates);\n\t* }\n\t* ```\n\t*/\n\tgetWorldMapsManager() {\n\t\treturn this.worldMapsManager ?? null;\n\t}\n\t/**\n\t* Get attached World\n\t* \n\t* Recover the world attached to this map (undefined if no world attached)\n\t* \n\t* @since 3.0.0-beta.8\n\t* @returns {RpgWorldMaps | undefined} The world maps manager instance if attached, otherwise undefined\n\t* \n\t* @example\n\t* ```ts\n\t* const world = map.getInWorldMaps();\n\t* if (world) {\n\t* console.log(world.getAllMaps());\n\t* }\n\t* ```\n\t*/\n\tgetInWorldMaps() {\n\t\treturn this.worldMapsManager ?? void 0;\n\t}\n\t/**\n\t* Remove this map from the world\n\t* \n\t* Remove this map from the world\n\t* \n\t* @since 3.0.0-beta.8\n\t* @returns {boolean | undefined} True if removed, false if not found, undefined if no world attached\n\t* \n\t* @example\n\t* ```ts\n\t* const removed = map.removeFromWorldMaps();\n\t* ```\n\t*/\n\tremoveFromWorldMaps() {\n\t\tif (!this.worldMapsManager) return void 0;\n\t\tconst id = this.id;\n\t\tif (!id) return false;\n\t\treturn this.worldMapsManager.removeMap(id);\n\t}\n\t/**\n\t* Assign the map to a world\n\t* \n\t* Assign the map to a world\n\t* \n\t* @since 3.0.0-beta.8\n\t* @param {RpgWorldMaps} worldMap world maps\n\t* @returns {void}\n\t* \n\t* @example\n\t* ```ts\n\t* const world = new WorldMapsManager();\n\t* world.configure([{ id: 'm1', worldX: 0, worldY: 0, width: 1024, height: 1024 }]);\n\t* map.setInWorldMaps(world);\n\t* ```\n\t*/\n\tsetInWorldMaps(worldMap) {\n\t\tthis.worldMapsManager = worldMap;\n\t}\n\t/**\n\t* Create a temporary and moving hitbox on the map\n\t* \n\t* Allows to create a temporary hitbox that moves through multiple positions sequentially.\n\t* For example, you can use it to explode a bomb and find all the affected players, \n\t* or during a sword strike, you can create a moving hitbox and find the affected players.\n\t* \n\t* The method creates a zone sensor that moves through the specified hitbox positions\n\t* at the given speed, detecting collisions with players and events at each step.\n\t* \n\t* @param hitboxes - Array of hitbox positions to move through sequentially\n\t* @param options - Configuration options for the movement\n\t* @returns Observable that emits arrays of hit entities and completes when movement is finished\n\t* \n\t* @example\n\t* ```ts\n\t* // Create a sword slash effect that moves through two positions\n\t* map.createMovingHitbox([\n\t* { x: 100, y: 100, width: 50, height: 50 },\n\t* { x: 120, y: 100, width: 50, height: 50 }\n\t* ], { speed: 2 }).subscribe({\n\t* next(hits) {\n\t* // hits contains RpgPlayer or RpgEvent objects that were hit\n\t* console.log('Hit entities:', hits);\n\t* },\n\t* complete() {\n\t* console.log('Movement finished');\n\t* }\n\t* });\n\t* ```\n\t*/\n\tcreateMovingHitbox(hitboxes, options = {}) {\n\t\tconst { speed = 1 } = options;\n\t\tconst zoneId = `moving_hitbox_${generateShortUUID()}`;\n\t\treturn new Observable((observer) => {\n\t\t\tif (hitboxes.length === 0) {\n\t\t\t\tobserver.complete();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet currentIndex = 0;\n\t\t\tlet frameCounter = 0;\n\t\t\tconst hitEntities = /* @__PURE__ */ new Set();\n\t\t\tconst firstHitbox = hitboxes[0];\n\t\t\tconst radius = Math.max(firstHitbox.width, firstHitbox.height) / 2;\n\t\t\tthis.addZone(zoneId, {\n\t\t\t\tx: firstHitbox.x + firstHitbox.width / 2,\n\t\t\t\ty: firstHitbox.y + firstHitbox.height / 2,\n\t\t\t\tradius\n\t\t\t});\n\t\t\tthis.registerZoneEvents(zoneId, (hitIds) => {\n\t\t\t\tconst hitObjects = hitIds.map((id) => this.getObjectById(id)).filter((obj) => obj !== void 0);\n\t\t\t\tif (hitObjects.length > 0) {\n\t\t\t\t\thitIds.forEach((id) => hitEntities.add(id));\n\t\t\t\t\tobserver.next(hitObjects);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst tickSubscription = this.tick$.subscribe(() => {\n\t\t\t\tframeCounter++;\n\t\t\t\tif (frameCounter >= speed) {\n\t\t\t\t\tframeCounter = 0;\n\t\t\t\t\tcurrentIndex++;\n\t\t\t\t\tif (currentIndex >= hitboxes.length) {\n\t\t\t\t\t\tthis.removeZone(zoneId);\n\t\t\t\t\t\ttickSubscription.unsubscribe();\n\t\t\t\t\t\tobserver.complete();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst nextHitbox = hitboxes[currentIndex];\n\t\t\t\t\tif (this.getZone(zoneId)) {\n\t\t\t\t\t\tthis.removeZone(zoneId);\n\t\t\t\t\t\tconst newRadius = Math.max(nextHitbox.width, nextHitbox.height) / 2;\n\t\t\t\t\t\tthis.addZone(zoneId, {\n\t\t\t\t\t\t\tx: nextHitbox.x + nextHitbox.width / 2,\n\t\t\t\t\t\t\ty: nextHitbox.y + nextHitbox.height / 2,\n\t\t\t\t\t\t\tradius: newRadius\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.registerZoneEvents(zoneId, (hitIds) => {\n\t\t\t\t\t\t\tconst hitObjects = hitIds.map((id) => this.getObjectById(id)).filter((obj) => obj !== void 0);\n\t\t\t\t\t\t\tif (hitObjects.length > 0) {\n\t\t\t\t\t\t\t\thitIds.forEach((id) => hitEntities.add(id));\n\t\t\t\t\t\t\t\tobserver.next(hitObjects);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\ttickSubscription.unsubscribe();\n\t\t\t\tthis.removeZone(zoneId);\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Add a static hitbox to the physics world\n\t* @private\n\t*/\n\taddStaticHitbox(id, xOrPoints, y, width, height) {\n\t\tif (this.physic.getEntityByUUID(id)) throw new Error(`Hitbox with id ${id} already exists`);\n\t\tlet entity;\n\t\tlet boxWidth;\n\t\tlet boxHeight;\n\t\tif (Array.isArray(xOrPoints)) {\n\t\t\tconst points = xOrPoints;\n\t\t\tif (points.length < 3) throw new Error(`Polygon must have at least 3 points, got ${points.length}`);\n\t\t\tlet minX = Number.POSITIVE_INFINITY;\n\t\t\tlet minY = Number.POSITIVE_INFINITY;\n\t\t\tlet maxX = Number.NEGATIVE_INFINITY;\n\t\t\tlet maxY = Number.NEGATIVE_INFINITY;\n\t\t\tfor (const point of points) {\n\t\t\t\tif (!Array.isArray(point) || point.length !== 2 || typeof point[0] !== \"number\" || typeof point[1] !== \"number\") throw new Error(`Invalid point ${JSON.stringify(point)}. Expected [x, y].`);\n\t\t\t\tminX = Math.min(minX, point[0]);\n\t\t\t\tmaxX = Math.max(maxX, point[0]);\n\t\t\t\tminY = Math.min(minY, point[1]);\n\t\t\t\tmaxY = Math.max(maxY, point[1]);\n\t\t\t}\n\t\t\tconst centerX = (minX + maxX) / 2;\n\t\t\tconst centerY = (minY + maxY) / 2;\n\t\t\tboxWidth = Math.max(maxX - minX, 1);\n\t\t\tboxHeight = Math.max(maxY - minY, 1);\n\t\t\tentity = this.physic.createEntity({\n\t\t\t\tuuid: id,\n\t\t\t\tposition: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY\n\t\t\t\t},\n\t\t\t\twidth: boxWidth,\n\t\t\t\theight: boxHeight,\n\t\t\t\tmass: Infinity,\n\t\t\t\tstate: EntityState.Static,\n\t\t\t\trestitution: 0\n\t\t\t});\n\t\t\tentity.freeze();\n\t\t\tconst localVertices = points.map((point) => {\n\t\t\t\tconst [px, py] = point;\n\t\t\t\treturn new Vector2(px - centerX, py - centerY);\n\t\t\t});\n\t\t\tassignPolygonCollider(entity, { vertices: localVertices });\n\t\t} else {\n\t\t\tif (typeof y !== \"number\" || typeof width !== \"number\" || typeof height !== \"number\") throw new Error(\"Rectangle hitbox requires x, y, width and height parameters\");\n\t\t\tconst centerX = xOrPoints + width / 2;\n\t\t\tconst centerY = y + height / 2;\n\t\t\tboxWidth = Math.max(width, 1);\n\t\t\tboxHeight = Math.max(height, 1);\n\t\t\tentity = this.physic.createEntity({\n\t\t\t\tuuid: id,\n\t\t\t\tposition: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY\n\t\t\t\t},\n\t\t\t\twidth: boxWidth,\n\t\t\t\theight: boxHeight,\n\t\t\t\tmass: Infinity,\n\t\t\t\tstate: EntityState.Static,\n\t\t\t\trestitution: 0\n\t\t\t});\n\t\t\tentity.freeze();\n\t\t}\n\t\treturn id;\n\t}\n\t/**\n\t* Add a character to the physics world\n\t* @private\n\t*/\n\t/**\n\t* Add a character entity to the physics world\n\t* \n\t* Creates a physics entity for a character (player or NPC) with proper position handling.\n\t* The owner's x/y signals represent **top-left** coordinates, while the physics entity\n\t* uses **center** coordinates internally.\n\t* \n\t* ## Position System\n\t* \n\t* - `owner.x()` / `owner.y()` → **top-left** corner of the character's hitbox\n\t* - `entity.position` → **center** of the physics collider\n\t* - Conversion: `center = topLeft + (size / 2)`\n\t* \n\t* @param options - Character configuration\n\t* @returns The character's unique ID\n\t* \n\t* @example\n\t* ```ts\n\t* // Player at top-left position (100, 100) with 32x32 hitbox\n\t* // Physics entity will be at center (116, 116)\n\t* this.addCharacter({\n\t* owner: player,\n\t* x: 116, // center X (ignored, uses owner.x())\n\t* y: 116, // center Y (ignored, uses owner.y())\n\t* kind: \"hero\"\n\t* });\n\t* ```\n\t* \n\t* @private\n\t*/\n\taddCharacter(options) {\n\t\tif (!options || typeof options.owner?.id !== \"string\") throw new Error(\"Character requires an owner object with a string id\");\n\t\tconst owner = options.owner;\n\t\tconst id = owner.id;\n\t\tconst hitbox = typeof owner.hitbox === \"function\" ? owner.hitbox() : owner.hitbox;\n\t\tconst width = hitbox?.w ?? 32;\n\t\tconst height = hitbox?.h ?? 32;\n\t\tconst radius = Math.max(width, height) / 2;\n\t\tconst topLeftX = owner.x();\n\t\tconst topLeftY = owner.y();\n\t\tconst centerX = topLeftX + width / 2;\n\t\tconst centerY = topLeftY + height / 2;\n\t\tconst isStatic = !!options.isStatic;\n\t\tconst entity = this.physic.createEntity({\n\t\t\tuuid: id,\n\t\t\tposition: {\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY\n\t\t\t},\n\t\t\tradius: Math.max(radius, 1),\n\t\t\twidth,\n\t\t\theight,\n\t\t\tmass: options.mass ?? (isStatic ? Infinity : 1),\n\t\t\tfriction: options.friction ?? .4,\n\t\t\tlinearDamping: isStatic ? 1 : .2,\n\t\t\tmaxLinearVelocity: options.maxSpeed ? options.maxSpeed * this.speedScalar : 200,\n\t\t\trestitution: 0\n\t\t});\n\t\tif (isStatic) entity.freeze();\n\t\telse entity.unfreeze();\n\t\tentity.owner = owner;\n\t\tthis.bindCharacterSignalSync(entity, owner);\n\t\tentity.onDirectionChange(({ cardinalDirection }) => {\n\t\t\tif (!(\"$send\" in this)) return;\n\t\t\tconst owner = entity.owner;\n\t\t\tif (!owner) return;\n\t\t\tif (cardinalDirection === \"idle\") return;\n\t\t\tif (owner.directionFixed) return;\n\t\t\towner.changeDirection(cardinalDirection);\n\t\t});\n\t\tentity.onMovementChange(({ isMoving, intensity }) => {\n\t\t\tif (!(\"$send\" in this)) return;\n\t\t\tconst owner = entity.owner;\n\t\t\tif (!owner) return;\n\t\t\tif (owner.animationFixed) return;\n\t\t\tconst LOW_INTENSITY_THRESHOLD = 10;\n\t\t\tconst hasSetAnimation = typeof owner.setAnimation === \"function\";\n\t\t\tconst animationNameSignal = owner.animationName;\n\t\t\tconst ownerHasAnimationName = animationNameSignal && typeof animationNameSignal === \"object\" && typeof animationNameSignal.set === \"function\";\n\t\t\tif (isMoving && intensity > LOW_INTENSITY_THRESHOLD) {\n\t\t\t\tif (hasSetAnimation) owner.setGraphicAnimation(\"walk\");\n\t\t\t\telse if (ownerHasAnimationName) animationNameSignal.set(\"walk\");\n\t\t\t} else if (!isMoving) {\n\t\t\t\tif (hasSetAnimation) owner.setGraphicAnimation(\"stand\");\n\t\t\t\telse if (ownerHasAnimationName) animationNameSignal.set(\"stand\");\n\t\t\t}\n\t\t});\n\t\tentity.onPositionChange(({ x, y }) => {\n\t\t\tconst currentOwner = entity.owner;\n\t\t\tif (!currentOwner) return;\n\t\t\tconst entityWidth = entity.width || width;\n\t\t\tconst entityHeight = entity.height || height;\n\t\t\tconst topLeftX = x - entityWidth / 2;\n\t\t\tconst topLeftY = y - entityHeight / 2;\n\t\t\tlet changed = false;\n\t\t\tthis.withPhysicsSync(() => {\n\t\t\t\tif (typeof currentOwner.x === \"function\" && typeof currentOwner.x.set === \"function\") {\n\t\t\t\t\tcurrentOwner.x.set(Math.round(topLeftX));\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (typeof currentOwner.y === \"function\" && typeof currentOwner.y.set === \"function\") {\n\t\t\t\t\tcurrentOwner.y.set(Math.round(topLeftY));\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (changed) currentOwner.applyFrames?.();\n\t\t});\n\t\tentity.addResolutionFilter((self, other) => {\n\t\t\tconst selfOwner = self.owner;\n\t\t\tconst otherOwner = other.owner;\n\t\t\tif (!selfOwner || !otherOwner) return true;\n\t\t\tif (selfOwner.z() !== otherOwner.z()) return false;\n\t\t\tif (typeof selfOwner._through === \"function\") try {\n\t\t\t\tif (selfOwner._through() === true) return false;\n\t\t\t} catch {}\n\t\t\telse if (selfOwner.through === true) return false;\n\t\t\tconst playersMap = this.players();\n\t\t\tconst eventsMap = this.events();\n\t\t\tconst isSelfPlayer = !!playersMap[self.uuid];\n\t\t\tconst isOtherPlayer = !!playersMap[other.uuid];\n\t\t\tconst isSelfEvent = !!eventsMap[self.uuid];\n\t\t\tconst isOtherEvent = !!eventsMap[other.uuid];\n\t\t\tconst readScenarioOwnerId = (owner) => {\n\t\t\t\tconst scenarioOwnerId = owner?._scenarioOwnerId ?? owner?.scenarioOwnerId;\n\t\t\t\treturn typeof scenarioOwnerId === \"string\" && scenarioOwnerId.length > 0 ? scenarioOwnerId : void 0;\n\t\t\t};\n\t\t\tconst selfScenarioOwnerId = readScenarioOwnerId(selfOwner);\n\t\t\tconst otherScenarioOwnerId = readScenarioOwnerId(otherOwner);\n\t\t\tif (selfScenarioOwnerId) {\n\t\t\t\tif (isOtherPlayer && other.uuid !== selfScenarioOwnerId) return false;\n\t\t\t\tif (isOtherEvent && otherScenarioOwnerId !== selfScenarioOwnerId) return false;\n\t\t\t}\n\t\t\tif (otherScenarioOwnerId) {\n\t\t\t\tif (isSelfPlayer && self.uuid !== otherScenarioOwnerId) return false;\n\t\t\t\tif (isSelfEvent && selfScenarioOwnerId !== otherScenarioOwnerId) return false;\n\t\t\t}\n\t\t\tif (isSelfPlayer && isOtherPlayer) {\n\t\t\t\tif (typeof selfOwner._throughOtherPlayer === \"function\") try {\n\t\t\t\t\tif (selfOwner._throughOtherPlayer() === true) return false;\n\t\t\t\t} catch {}\n\t\t\t\telse if (selfOwner.throughOtherPlayer === true) return false;\n\t\t\t}\n\t\t\tif (isSelfPlayer && isOtherEvent) {\n\t\t\t\tif (typeof selfOwner._throughEvent === \"function\") try {\n\t\t\t\t\tif (selfOwner._throughEvent() === true) return false;\n\t\t\t\t} catch {}\n\t\t\t\telse if (selfOwner.throughEvent === true) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\treturn id;\n\t}\n\t/**\n\t* Update hitbox position and size\n\t* \n\t* @param id - Entity ID\n\t* @param x - Top-left X coordinate\n\t* @param y - Top-left Y coordinate\n\t* @param width - Optional width\n\t* @param height - Optional height\n\t* @returns True if hitbox was updated successfully\n\t*/\n\tupdateHitbox(id, x, y, width, height) {\n\t\tconst entity = this.physic.getEntityByUUID(id);\n\t\tif (!entity) return false;\n\t\tif (typeof width === \"number\" && typeof height === \"number\") {\n\t\t\tentity.width = Math.max(width, 1);\n\t\t\tentity.height = Math.max(height, 1);\n\t\t}\n\t\tconst entityWidth = entity.width || entity.radius * 2 || 32;\n\t\tconst entityHeight = entity.height || entity.radius * 2 || 32;\n\t\tconst centerX = x + entityWidth / 2;\n\t\tconst centerY = y + entityHeight / 2;\n\t\tentity.position.set(centerX, centerY);\n\t\treturn true;\n\t}\n\t/**\n\t* Remove a hitbox from the physics world\n\t* @private\n\t*/\n\tremoveHitbox(id, owner, kind) {\n\t\tconst entity = this.physic.getEntityByUUID(id);\n\t\tif (!entity) return false;\n\t\tthis.unbindCharacterSignalSync(entity);\n\t\tconst resolvedOwner = owner ?? entity.owner;\n\t\tif (resolvedOwner) this.emitPhysicsEntityRemove({\n\t\t\towner: resolvedOwner,\n\t\t\tentity,\n\t\t\tkind: kind ?? this.resolvePhysicsEntityKind(resolvedOwner, id)\n\t\t});\n\t\tthis.physic.removeEntity(entity);\n\t\treturn true;\n\t}\n\t/**\n\t* Check if an entity is moving\n\t* @private\n\t*/\n\tisEntityMoving(id) {\n\t\tconst entity = this.physic.getEntityByUUID(id);\n\t\tif (!entity) return false;\n\t\treturn entity.velocity.length() > .1;\n\t}\n\t/**\n\t* Move a body in a direction\n\t* @private\n\t*/\n\tmoveBody(player, direction) {\n\t\tconst entity = this.physic.getEntityByUUID(player.id);\n\t\tif (!entity) return false;\n\t\tconst speedValue = player.speed();\n\t\tlet vx = 0, vy = 0;\n\t\tswitch (direction) {\n\t\t\tcase Direction.Left:\n\t\t\t\tvx = -speedValue * this.speedScalar;\n\t\t\t\tbreak;\n\t\t\tcase Direction.Right:\n\t\t\t\tvx = speedValue * this.speedScalar;\n\t\t\t\tbreak;\n\t\t\tcase Direction.Up:\n\t\t\t\tvy = -speedValue * this.speedScalar;\n\t\t\t\tbreak;\n\t\t\tcase Direction.Down:\n\t\t\t\tvy = speedValue * this.speedScalar;\n\t\t\t\tbreak;\n\t\t}\n\t\tentity.setVelocity({\n\t\t\tx: vx,\n\t\t\ty: vy\n\t\t});\n\t\tentity.wakeUp();\n\t\treturn true;\n\t}\n\t/**\n\t* Stop movement for a player\n\t* \n\t* Completely stops all movement for a player, including:\n\t* - Clearing all active movement strategies (dash, linear moves, etc.)\n\t* - Setting velocity to zero\n\t* - Resetting intended direction\n\t* \n\t* This method is particularly useful when changing maps to ensure\n\t* the player doesn't carry over movement from the previous map.\n\t* \n\t* @param player - The player to stop\n\t* @returns True if the player was found and movement was stopped\n\t* \n\t* @example\n\t* ```ts\n\t* // Stop player movement when changing maps\n\t* if (mapChanged) {\n\t* map.stopMovement(player);\n\t* }\n\t* \n\t* // Stop movement when player dies\n\t* if (player.isDead()) {\n\t* map.stopMovement(player);\n\t* }\n\t* ```\n\t* @protected\n\t*/\n\tstopMovement(player) {\n\t\tif (!this.physic.getEntityByUUID(player.id)) return false;\n\t\tthis.moveManager.stopMovement(player.id);\n\t\tplayer.pendingInputs = [];\n\t\treturn true;\n\t}\n\t/**\n\t* Set character collision enabled\n\t* @private\n\t*/\n\tsetCharacterCollisionEnabled(id, collides) {\n\t\tif (!this.physic.getEntityByUUID(id)) return false;\n\t\treturn true;\n\t}\n\t/**\n\t* Get collisions for an entity\n\t* \n\t* Returns all entities that are colliding with the specified entity.\n\t* Uses the entity's actual AABB bounds to detect collisions in all directions.\n\t* \n\t* @param id - Entity UUID to check collisions for\n\t* @returns Array of entity UUIDs that are colliding with the specified entity\n\t* \n\t* @example\n\t* ```ts\n\t* // Get all entities colliding with player\n\t* const collisions = map.getCollisions('player1');\n\t* collisions.forEach(id => {\n\t* console.log(`Entity ${id} is colliding with player`);\n\t* });\n\t* ```\n\t*/\n\tgetCollisions(id) {\n\t\tconst entity = this.physic.getEntityByUUID(id);\n\t\tif (!entity) return [];\n\t\tconst collider = createCollider(entity);\n\t\tif (!collider) return [];\n\t\tconst entityAABB = collider.getBounds();\n\t\tconst expandedAABB = entityAABB.expand(1);\n\t\tconst nearby = this.physic.queryAABB(expandedAABB);\n\t\tconst collisions = [];\n\t\tfor (const other of nearby) {\n\t\t\tif (other.uuid === id) continue;\n\t\t\tconst otherCollider = createCollider(other);\n\t\t\tif (!otherCollider) continue;\n\t\t\tconst otherAABB = otherCollider.getBounds();\n\t\t\tif (entityAABB.intersects(otherAABB)) collisions.push(other.uuid);\n\t\t}\n\t\treturn collisions;\n\t}\n\t/**\n\t* Get physics body (entity) for an id\n\t* @protected\n\t*/\n\tgetBody(id) {\n\t\treturn this.physic.getEntityByUUID(id);\n\t}\n\t/**\n\t* Get the current physics tick\n\t* @returns Current tick number\n\t*/\n\tgetTick() {\n\t\treturn this.physic.getTick();\n\t}\n\t/**\n\t* Get body position in different modes\n\t* \n\t* @param id - Entity ID\n\t* @param mode - Position mode: \"center\" or \"top-left\"\n\t* @returns Position coordinates or undefined if entity not found\n\t*/\n\tgetBodyPosition(id, mode = \"center\") {\n\t\tconst entity = this.physic.getEntityByUUID(id);\n\t\tif (!entity) return void 0;\n\t\tconst centerX = entity.position.x;\n\t\tconst centerY = entity.position.y;\n\t\tif (mode === \"center\") return {\n\t\t\tx: centerX,\n\t\t\ty: centerY\n\t\t};\n\t\tconst width = entity.width || (entity.radius ? entity.radius * 2 : 32);\n\t\tconst height = entity.height || (entity.radius ? entity.radius * 2 : 32);\n\t\treturn {\n\t\t\tx: centerX - width / 2,\n\t\t\ty: centerY - height / 2\n\t\t};\n\t}\n\t/**\n\t* Set body position\n\t* \n\t* @param id - Entity ID\n\t* @param x - X coordinate\n\t* @param y - Y coordinate\n\t* @param mode - Position mode: \"center\" or \"top-left\"\n\t* @returns True if position was set successfully\n\t*/\n\tsetBodyPosition(id, x, y, mode = \"center\") {\n\t\tconst entity = this.physic.getEntityByUUID(id);\n\t\tif (!entity) return;\n\t\tconst width = entity.width || (entity.radius ? entity.radius * 2 : 32);\n\t\tconst height = entity.height || (entity.radius ? entity.radius * 2 : 32);\n\t\tlet centerX = x;\n\t\tlet centerY = y;\n\t\tif (mode === \"top-left\") {\n\t\t\tcenterX = x + width / 2;\n\t\t\tcenterY = y + height / 2;\n\t\t}\n\t\tentity.position.set(centerX, centerY);\n\t\tentity.notifyPositionChange();\n\t\treturn entity;\n\t}\n\t/**\n\t* Handle collision enter\n\t* @private\n\t*/\n\t/**\n\t* Add a zone\n\t* @private\n\t*/\n\taddZone(id, options) {\n\t\tconst zoneManager = this.physic.getZoneManager();\n\t\tif (this.physic.getEntityByUUID(id)) throw new Error(`Zone with id ${id} already exists as entity`);\n\t\tconst radius = options.radius;\n\t\tif (typeof radius !== \"number\" || radius <= 0) throw new Error(\"Zone radius must be a positive number\");\n\t\tlet attachedEntity;\n\t\tif (options.linkedTo) {\n\t\t\tattachedEntity = this.physic.getEntityByUUID(options.linkedTo);\n\t\t\tif (!attachedEntity) throw new Error(`Cannot link zone to unknown entity ${options.linkedTo}`);\n\t\t}\n\t\tconst callbacks = {};\n\t\tcallbacks._onEnterString = void 0;\n\t\tcallbacks._onExitString = void 0;\n\t\tconst zoneId = attachedEntity ? zoneManager.createAttachedZone(attachedEntity, {\n\t\t\tradius,\n\t\t\tangle: options.angle ?? 360,\n\t\t\tdirection: options.direction ?? \"down\",\n\t\t\tlimitedByWalls: options.limitedByWalls ?? false\n\t\t}, callbacks) : zoneManager.createZone({\n\t\t\tposition: {\n\t\t\t\tx: options.x ?? 0,\n\t\t\t\ty: options.y ?? 0\n\t\t\t},\n\t\t\tradius,\n\t\t\tangle: options.angle ?? 360,\n\t\t\tdirection: options.direction ?? \"down\",\n\t\t\tlimitedByWalls: options.limitedByWalls ?? false\n\t\t}, callbacks);\n\t\tthis._zoneIdMap = this._zoneIdMap || /* @__PURE__ */ new Map();\n\t\tthis._zoneIdMap.set(id, zoneId);\n\t\treturn id;\n\t}\n\t/**\n\t* Remove a zone\n\t* @private\n\t*/\n\tremoveZone(id) {\n\t\tconst zoneIdMap = this._zoneIdMap;\n\t\tif (!zoneIdMap) return false;\n\t\tconst zoneId = zoneIdMap.get(id);\n\t\tif (!zoneId) return false;\n\t\tthis.physic.getZoneManager().removeZone(zoneId);\n\t\tzoneIdMap.delete(id);\n\t\treturn true;\n\t}\n\t/**\n\t* Get a zone\n\t* @private\n\t*/\n\tgetZone(id) {\n\t\tconst zoneIdMap = this._zoneIdMap;\n\t\tif (!zoneIdMap) return void 0;\n\t\tconst zoneId = zoneIdMap.get(id);\n\t\tif (!zoneId) return void 0;\n\t\treturn this.physic.getZoneManager().getZone(zoneId);\n\t}\n\t/**\n\t* Register zone events\n\t* @private\n\t*/\n\tregisterZoneEvents(id, onEnter, onExit) {\n\t\tconst zoneIdMap = this._zoneIdMap;\n\t\tif (!zoneIdMap) return false;\n\t\tconst zoneId = zoneIdMap.get(id);\n\t\tif (!zoneId) return false;\n\t\tconst zoneManager = this.physic.getZoneManager();\n\t\tconst callbacks = {};\n\t\tif (onEnter) callbacks.onEnter = (entities) => {\n\t\t\tonEnter(entities.map((e) => e.uuid));\n\t\t};\n\t\tif (onExit) callbacks.onExit = (entities) => {\n\t\t\tonExit(entities.map((e) => e.uuid));\n\t\t};\n\t\treturn zoneManager.registerCallbacks(zoneId, callbacks);\n\t}\n\t/**\n\t* Run post-tick updates (update zones)\n\t* @private\n\t*/\n\trunPostTickUpdates() {\n\t\tthis.physic.getZoneManager().update();\n\t}\n};\n//#endregion\n//#region ../common/src/rooms/WorldMaps.ts\n/**\n* World Maps Manager\n* \n* Manages a collection of interconnected maps and their spatial relationships\n*/\nvar WorldMapsManager = class {\n\tconstructor() {\n\t\tthis.maps = /* @__PURE__ */ new Map();\n\t\tthis.spatialIndex = /* @__PURE__ */ new Map();\n\t}\n\t/**\n\t* Configure the world maps\n\t* \n\t* @param configs - Array of map configurations\n\t* \n\t* @example\n\t* ```ts\n\t* const worldMaps = new WorldMapsManager();\n\t* worldMaps.configure([\n\t* { id: \"town\", worldX: 0, worldY: 0, width: 1024, height: 768 },\n\t* { id: \"forest\", worldX: 1024, worldY: 0, width: 1024, height: 768 }\n\t* ]);\n\t* ```\n\t*/\n\tconfigure(configs) {\n\t\tthis.maps.clear();\n\t\tthis.spatialIndex.clear();\n\t\tfor (const config of configs) {\n\t\t\tconst worldMap = {\n\t\t\t\tid: config.id,\n\t\t\t\tx: config.worldX,\n\t\t\t\ty: config.worldY,\n\t\t\t\twidth: config.width,\n\t\t\t\theight: config.height,\n\t\t\t\tworldX: config.worldX,\n\t\t\t\tworldY: config.worldY,\n\t\t\t\twidthPx: config.width,\n\t\t\t\theightPx: config.height,\n\t\t\t\ttileWidth: config.tileWidth ?? 32,\n\t\t\t\ttileHeight: config.tileHeight ?? 32\n\t\t\t};\n\t\t\tthis.maps.set(config.id, worldMap);\n\t\t\tthis.spatialIndex.set(`${config.worldX},${config.worldY}`, config.id);\n\t\t}\n\t}\n\t/**\n\t* Remove a map from the world by its id\n\t* \n\t* Deletes the map from the internal registry and spatial index.\n\t* \n\t* @param mapId - Map identifier\n\t* @returns True if a map was removed, false otherwise\n\t* \n\t* @example\n\t* ```ts\n\t* const removed = world.removeMap(\"forest\");\n\t* ```\n\t*/\n\tremoveMap(mapId) {\n\t\tconst map = this.maps.get(mapId);\n\t\tif (!map) return false;\n\t\tthis.maps.delete(mapId);\n\t\tthis.spatialIndex.delete(`${map.worldX},${map.worldY}`);\n\t\treturn true;\n\t}\n\t/**\n\t* Find adjacent maps based on various search strategies\n\t* \n\t* Supports three search modes:\n\t* - PositionBox: collect maps intersecting the given box\n\t* - Direction: collect maps adjacent in the given direction\n\t* - Point: collect the map containing the given world point\n\t* \n\t* The given `map` can be any object exposing `worldX`, `worldY`, `width`, `height` properties\n\t* (e.g. your `RpgMap` instance or a `WorldMapInfo`).\n\t* \n\t* @param map - The source map\n\t* @param search - Search strategy (box, direction or point)\n\t* @returns Array of matching adjacent map infos\n\t* \n\t* @example\n\t* ```ts\n\t* // Point\n\t* world.getAdjacentMaps(currentMap, { x: 1024, y: 0 });\n\t* \n\t* // Direction\n\t* world.getAdjacentMaps(currentMap, Direction.Up);\n\t* \n\t* // Box\n\t* world.getAdjacentMaps(currentMap, { minX: 0, minY: 0, maxX: 2048, maxY: 1024 });\n\t* ```\n\t*/\n\tgetAdjacentMaps(map, search) {\n\t\tconst maps = Array.from(this.maps.values());\n\t\tif (typeof search === \"number\") {\n\t\t\tconst src = map;\n\t\t\treturn maps.filter((m) => {\n\t\t\t\tconst horizontallyOverlapsOrTouches = Math.max(src.worldX, m.worldX) <= Math.min(src.worldX + src.widthPx, m.worldX + m.widthPx);\n\t\t\t\tconst verticallyOverlapsOrTouches = Math.max(src.worldY, m.worldY) <= Math.min(src.worldY + src.heightPx, m.worldY + m.heightPx);\n\t\t\t\tconst marginLeftRight = src.tileWidth / 2;\n\t\t\t\tconst marginTopDown = src.tileHeight / 2;\n\t\t\t\tswitch (search) {\n\t\t\t\t\tcase 0: return verticallyOverlapsOrTouches && m.worldY + m.heightPx - marginTopDown === src.worldY;\n\t\t\t\t\tcase 1: return verticallyOverlapsOrTouches && m.worldY + marginTopDown === src.worldY + src.heightPx;\n\t\t\t\t\tcase 2: return horizontallyOverlapsOrTouches && m.worldX + m.widthPx - marginLeftRight === src.worldX;\n\t\t\t\t\tcase 3: return horizontallyOverlapsOrTouches && m.worldX + marginLeftRight === src.worldX + src.widthPx;\n\t\t\t\t\tdefault: return false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (\"x\" in search && \"y\" in search) {\n\t\t\tconst found = maps.find((m) => search.x >= m.worldX && search.x < m.worldX + m.widthPx && search.y >= m.worldY && search.y < m.worldY + m.heightPx);\n\t\t\treturn found ? [found] : [];\n\t\t}\n\t\tif (\"minX\" in search) {\n\t\t\tconst { minX, minY, maxX, maxY } = search;\n\t\t\treturn maps.filter((m) => {\n\t\t\t\tconst aLeft = m.worldX;\n\t\t\t\tconst aRight = m.worldX + m.widthPx;\n\t\t\t\tconst aTop = m.worldY;\n\t\t\t\tconst aBottom = m.worldY + m.heightPx;\n\t\t\t\treturn aLeft < maxX && aRight > minX && aTop < maxY && aBottom > minY;\n\t\t\t});\n\t\t}\n\t\treturn [];\n\t}\n\t/**\n\t* Get map information by ID\n\t* \n\t* @param mapId - Map ID\n\t* @returns Map information or null if not found\n\t* \n\t* @example\n\t* ```ts\n\t* const mapInfo = worldMaps.getMapInfo(\"forest\");\n\t* ```\n\t*/\n\tgetMapInfo(mapId) {\n\t\treturn this.maps.get(mapId) ?? null;\n\t}\n\t/**\n\t* Get all configured maps\n\t* \n\t* @returns Array of all world maps\n\t*/\n\tgetAllMaps() {\n\t\treturn Array.from(this.maps.values());\n\t}\n\t/**\n\t* Find map by world coordinates\n\t* \n\t* @param worldX - World X coordinate\n\t* @param worldY - World Y coordinate\n\t* @returns Map found or null\n\t*/\n\tgetMapByWorldCoordinates(worldX, worldY) {\n\t\tconst mapId = this.spatialIndex.get(`${worldX},${worldY}`);\n\t\treturn mapId ? this.maps.get(mapId) ?? null : null;\n\t}\n\t/**\n\t* Calculate absolute world position of a player\n\t* \n\t* @param map - Current map\n\t* @param localX - Local X position in the map\n\t* @param localY - Local Y position in the map\n\t* @returns Absolute coordinates in the world\n\t*/\n\tgetWorldPosition(map, localX, localY) {\n\t\treturn {\n\t\t\tx: map.worldX + localX,\n\t\t\ty: map.worldY + localY\n\t\t};\n\t}\n\t/**\n\t* Calculate local position from world position\n\t* \n\t* @param worldX - World X position\n\t* @param worldY - World Y position\n\t* @param targetMap - Target map\n\t* @returns Local position in the target map\n\t*/\n\tgetLocalPosition(worldX, worldY, targetMap) {\n\t\treturn {\n\t\t\tx: worldX - targetMap.worldX,\n\t\t\ty: worldY - targetMap.worldY\n\t\t};\n\t}\n};\n//#endregion\n//#region ../common/src/modules.ts\nvar ModulesToken = \"ModulesToken\";\nfunction RpgModule(options) {\n\treturn (target) => {\n\t\tif (options.hooks) target.hooks = options.hooks;\n\t\tfor (let key in options) target.prototype[key] = options[key];\n\t};\n}\nvar Hooks = class {\n\tconstructor(modules, namespace) {\n\t\tthis.modules = modules;\n\t\tthis.namespace = namespace;\n\t\tthis.moduleHooks = {};\n\t\tthis.hookFunctions = {};\n\t\tthis.init();\n\t}\n\tinit() {\n\t\tfor (const module of this.modules) for (const type in module) {\n\t\t\tconst hookObject = module[type];\n\t\t\tfor (const hook in hookObject) {\n\t\t\t\tconst hookFunction = hookObject[hook];\n\t\t\t\tif (hookFunction) {\n\t\t\t\t\tconst hookId = `${this.namespace}-${type}-${hook}`;\n\t\t\t\t\tif (!this.moduleHooks[hookId]) this.moduleHooks[hookId] = new Subject();\n\t\t\t\t\tif (!this.hookFunctions[hookId]) this.hookFunctions[hookId] = [];\n\t\t\t\t\tif (!this.hookFunctions[hookId].includes(hookFunction)) this.hookFunctions[hookId].push(hookFunction);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.moduleHooks;\n\t}\n\t/**\n\t* Call hooks for a specific ID, passing arguments to all subscribed hooks\n\t*\n\t* @param hookId - The unique identifier of the module hook\n\t* @param args - Arguments to pass to the hook functions\n\t* @returns An Observable that emits an array with all hook results when subscribed\n\t* @example\n\t* ```ts\n\t* // Call all hook functions for the ID 'my-namespace-type-hook'\n\t* callHooks('my-namespace-type-hook', { x: 10, y: 20 }).subscribe(results => {\n\t* console.log('Hook results:', results); // Array of all hook function results\n\t* });\n\t* \n\t* // Hook functions are only executed when you subscribe to the returned Observable\n\t* const observable = callHooks('my-namespace-type-hook', player);\n\t* // ... later ...\n\t* observable.subscribe(results => {\n\t* // Process results array\n\t* });\n\t* ```\n\t*/\n\tcallHooks(hookId, ...args) {\n\t\tif (!this.moduleHooks[hookId]) this.moduleHooks[hookId] = new Subject();\n\t\treturn new Observable((subscriber) => {\n\t\t\tif (this.hookFunctions[hookId] && this.hookFunctions[hookId].length > 0) {\n\t\t\t\tconst subscription = from(this.hookFunctions[hookId]).pipe(mergeMap((hookFunction) => {\n\t\t\t\t\tlet result;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = hookFunction(...args);\n\t\t\t\t\t\treturn from(Promise.resolve(result));\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tsubscriber.error(error);\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t}), toArray()).subscribe({\n\t\t\t\t\tnext: (results) => {\n\t\t\t\t\t\tthis.moduleHooks[hookId].next(results);\n\t\t\t\t\t\tsubscriber.next(results);\n\t\t\t\t\t\tsubscriber.complete();\n\t\t\t\t\t},\n\t\t\t\t\terror: (err) => {\n\t\t\t\t\t\tsubscriber.error(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn () => {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tsubscriber.next([]);\n\t\t\t\tsubscriber.complete();\n\t\t\t\treturn () => {};\n\t\t\t}\n\t\t});\n\t}\n};\n/**\n* Provide modules configuration to Angular Dependency Injection\n* Registers hook functions for later execution\n*\n* @param modules - Array of modules to provide\n* @param namespace - Namespace to prefix hook IDs\n* @returns Provider configuration for Angular DI\n* @example\n* ```ts\n* // Define modules\n* const modules = [\n* {\n* player: {\n* onMove: (player) => {\n* // Handle player movement\n* }\n* }\n* }\n* ];\n*\n* // Provide modules\n* const provider = provideModules(modules, 'game');\n* ```\n*/\nfunction provideModules(modules, namespace, transform) {\n\treturn {\n\t\tprovide: ModulesToken,\n\t\tuseFactory: (context) => {\n\t\t\tmodules = transform ? transform(modules, context) : modules;\n\t\t\treturn new Hooks(modules, namespace);\n\t\t}\n\t};\n}\nfunction findModules(context, namespace) {\n\tlet modules = [];\n\tfor (let key in context[\"values\"]) if (key.endsWith(\"Module\" + namespace)) modules.push(context[\"values\"][key].values.get(\"__default__\"));\n\treturn modules;\n}\n//#endregion\n//#region ../common/src/Utils.ts\nfunction random(min, max) {\n\treturn Math.floor(Math.random() * (max - min + 1) + min);\n}\nfunction isFunction(val) {\n\treturn {}.toString.call(val) === \"[object Function]\";\n}\nfunction isArray(val) {\n\treturn isInstanceOf(val, Array);\n}\nfunction isString(val) {\n\treturn typeof val == \"string\";\n}\nfunction isInstanceOf(val, _class) {\n\treturn val instanceof _class;\n}\nfunction arrayUniq(array) {\n\treturn [...new Set(array)];\n}\nfunction arrayFlat(array) {\n\treturn array.reduce((acc, val) => acc.concat(val), []);\n}\nfunction capitalize(s) {\n\tif (typeof s !== \"string\") return \"\";\n\treturn s.charAt(0).toUpperCase() + s.slice(1);\n}\n//#endregion\n//#region ../common/src/PrebuiltGui.ts\n/** \n* \n* Pre-made GUIs already exist. For example, the command `player.showText()` displays the rpg-dialog component. It is up to you to customize the component or take advantage of the `@rpgjs/default-gui` module which already contains ready-made components\n* \n* @title Prebuilt GUI\n* @enum {string}\n* \n* PrebuiltGui.Dialog | rpg-dialog\n* PrebuiltGui.MainMenu | rpg-main-menu\n* PrebuiltGui.Shop | rpg-shop\n* PrebuiltGui.Disconnect | rpg-disconnect\n* PrebuiltGui.Gameover | rpg-gameover\n* PrebuiltGui.Save | rpg-save\n* PrebuiltGui.Controls | rpg-controls\n* PrebuiltGui.Notification | rpg-notification\n* PrebuiltGui.TitleScreen | rpg-title-screen\n* @memberof PrebuiltGui\n* */\nvar PrebuiltGui = /* @__PURE__ */ function(PrebuiltGui) {\n\tPrebuiltGui[\"Dialog\"] = \"rpg-dialog\";\n\tPrebuiltGui[\"MainMenu\"] = \"rpg-main-menu\";\n\tPrebuiltGui[\"Shop\"] = \"rpg-shop\";\n\tPrebuiltGui[\"Disconnect\"] = \"rpg-disconnect\";\n\tPrebuiltGui[\"Gameover\"] = \"rpg-gameover\";\n\tPrebuiltGui[\"Save\"] = \"rpg-save\";\n\tPrebuiltGui[\"Controls\"] = \"rpg-controls\";\n\tPrebuiltGui[\"Notification\"] = \"rpg-notification\";\n\tPrebuiltGui[\"TitleScreen\"] = \"rpg-title-screen\";\n\treturn PrebuiltGui;\n}({});\n//#endregion\n//#region ../common/src/PerlinNoise.ts\n/**\n* Perlin Noise 2D Generator\n* \n* A simple, efficient, and performant implementation of 2D Perlin noise.\n* Perlin noise generates smooth, natural-looking random values that are coherent\n* across space, making it ideal for procedural generation and smooth random movements.\n* \n* ## Features\n* - **Deterministic**: Same seed and coordinates always produce the same value\n* - **Smooth**: Values change gradually, creating natural-looking patterns\n* - **Performant**: Optimized for real-time use in movement systems\n* - **Seeded**: Optional seed for reproducible results\n* \n* ## Usage\n* ```ts\n* const noise = new PerlinNoise2D();\n* const value = noise.get(x, y); // Returns value between -1 and 1\n* \n* // With seed for deterministic results\n* const seededNoise = new PerlinNoise2D(12345);\n* ```\n* \n* @example\n* ```ts\n* // Use in movement system for smooth random directions\n* const noise = new PerlinNoise2D();\n* const time = Date.now() * 0.001;\n* const direction = Math.floor(noise.get(player.x(), player.y(), time) * 4) % 4;\n* ```\n*/\nvar PerlinNoise2D = class {\n\t/**\n\t* Creates a new Perlin noise generator\n\t* \n\t* @param seed - Optional seed for deterministic noise generation. If not provided, uses a default seed.\n\t* \n\t* @example\n\t* ```ts\n\t* const noise = new PerlinNoise2D(12345);\n\t* const value = noise.get(10, 20);\n\t* ```\n\t*/\n\tconstructor(seed = 0) {\n\t\tthis.permutation = this.generatePermutation(seed);\n\t\tthis.p = [...this.permutation, ...this.permutation];\n\t}\n\t/**\n\t* Generates a permutation table based on seed\n\t* \n\t* @param seed - Seed value for permutation generation\n\t* @returns Array of 256 shuffled values\n\t*/\n\tgeneratePermutation(seed) {\n\t\tconst p = [];\n\t\tfor (let i = 0; i < 256; i++) p[i] = i;\n\t\tlet state = seed;\n\t\tconst lcg = () => {\n\t\t\tstate = state * 1103515245 + 12345 & 2147483647;\n\t\t\treturn state;\n\t\t};\n\t\tfor (let i = 255; i > 0; i--) {\n\t\t\tconst j = lcg() % (i + 1);\n\t\t\t[p[i], p[j]] = [p[j], p[i]];\n\t\t}\n\t\treturn p;\n\t}\n\t/**\n\t* Fade function for smooth interpolation (ease curve)\n\t* \n\t* @param t - Value between 0 and 1\n\t* @returns Smoothed value between 0 and 1\n\t*/\n\tfade(t) {\n\t\treturn t * t * t * (t * (t * 6 - 15) + 10);\n\t}\n\t/**\n\t* Linear interpolation\n\t* \n\t* @param a - Start value\n\t* @param b - End value\n\t* @param t - Interpolation factor (0 to 1)\n\t* @returns Interpolated value\n\t*/\n\tlerp(a, b, t) {\n\t\treturn a + t * (b - a);\n\t}\n\t/**\n\t* Gradient function - generates a pseudo-random gradient vector\n\t* \n\t* @param hash - Hash value from permutation table\n\t* @param x - X component\n\t* @param y - Y component\n\t* @returns Dot product of gradient and position\n\t*/\n\tgrad(hash, x, y) {\n\t\tswitch (hash & 3) {\n\t\t\tcase 0: return x + y;\n\t\t\tcase 1: return -x + y;\n\t\t\tcase 2: return x - y;\n\t\t\tcase 3: return -x - y;\n\t\t\tdefault: return 0;\n\t\t}\n\t}\n\t/**\n\t* Gets the noise value at the specified 2D coordinates\n\t* \n\t* Returns a value between approximately -1 and 1, though values near the edges\n\t* are less common. For practical use, you may want to clamp or normalize the result.\n\t* \n\t* @param x - X coordinate\n\t* @param y - Y coordinate\n\t* @param scale - Optional scale factor (default: 0.1). Lower values create smoother, larger patterns.\n\t* @returns Noise value between approximately -1 and 1\n\t* \n\t* @example\n\t* ```ts\n\t* const noise = new PerlinNoise2D();\n\t* const value = noise.get(10, 20); // Basic usage\n\t* const scaled = noise.get(10, 20, 0.05); // Smoother pattern\n\t* ```\n\t*/\n\tget(x, y, scale = .1) {\n\t\tx *= scale;\n\t\ty *= scale;\n\t\tconst X = Math.floor(x) & 255;\n\t\tconst Y = Math.floor(y) & 255;\n\t\tx -= Math.floor(x);\n\t\ty -= Math.floor(y);\n\t\tconst u = this.fade(x);\n\t\tconst v = this.fade(y);\n\t\tconst A = this.p[X] + Y;\n\t\tconst AA = this.p[A];\n\t\tconst AB = this.p[A + 1];\n\t\tconst B = this.p[X + 1] + Y;\n\t\tconst BA = this.p[B];\n\t\tconst BB = this.p[B + 1];\n\t\treturn this.lerp(this.lerp(this.grad(this.p[AA], x, y), this.grad(this.p[BA], x - 1, y), u), this.lerp(this.grad(this.p[AB], x, y - 1), this.grad(this.p[BB], x - 1, y - 1), u), v);\n\t}\n\t/**\n\t* Gets a normalized noise value between 0 and 1\n\t* \n\t* Convenience method that normalizes the noise output to a 0-1 range.\n\t* \n\t* @param x - X coordinate\n\t* @param y - Y coordinate\n\t* @param scale - Optional scale factor (default: 0.1)\n\t* @returns Noise value between 0 and 1\n\t* \n\t* @example\n\t* ```ts\n\t* const noise = new PerlinNoise2D();\n\t* const normalized = noise.getNormalized(10, 20);\n\t* // Returns value between 0 and 1\n\t* ```\n\t*/\n\tgetNormalized(x, y, scale = .1) {\n\t\treturn (this.get(x, y, scale) + 1) * .5;\n\t}\n\t/**\n\t* Gets a noise value mapped to a specific range\n\t* \n\t* Maps the noise output to a custom min-max range.\n\t* \n\t* @param x - X coordinate\n\t* @param y - Y coordinate\n\t* @param min - Minimum output value\n\t* @param max - Maximum output value\n\t* @param scale - Optional scale factor (default: 0.1)\n\t* @returns Noise value between min and max\n\t* \n\t* @example\n\t* ```ts\n\t* const noise = new PerlinNoise2D();\n\t* const direction = noise.getRange(10, 20, 0, 3); // Returns 0, 1, 2, or 3\n\t* ```\n\t*/\n\tgetRange(x, y, min, max, scale = .1) {\n\t\treturn min + this.getNormalized(x, y, scale) * (max - min);\n\t}\n\t/**\n\t* Gets an integer noise value in a specific range (inclusive)\n\t* \n\t* Useful for selecting discrete values like array indices or enum values.\n\t* \n\t* @param x - X coordinate\n\t* @param y - Y coordinate\n\t* @param min - Minimum integer value (inclusive)\n\t* @param max - Maximum integer value (inclusive)\n\t* @param scale - Optional scale factor (default: 0.1)\n\t* @returns Integer noise value between min and max (inclusive)\n\t* \n\t* @example\n\t* ```ts\n\t* const noise = new PerlinNoise2D();\n\t* const directionIndex = noise.getInt(10, 20, 0, 3); // Returns 0, 1, 2, or 3\n\t* ```\n\t*/\n\tgetInt(x, y, min, max, scale = .1) {\n\t\tconst value = this.getRange(x, y, min, max + 1, scale);\n\t\treturn Math.floor(value);\n\t}\n};\n//#endregion\n//#region ../common/src/Presets.ts\nvar MAXHP = \"maxHp\";\nvar MAXSP = \"maxSp\";\nvar ATK = \"atk\";\nvar PDEF = \"pdef\";\nvar SDEF = \"sdef\";\nvar STR = \"str\";\nvar AGI = \"agi\";\nvar INT = \"int\";\nvar DEX = \"dex\";\n//#endregion\n//#region ../../node_modules/.pnpm/@signe+di@2.9.0/node_modules/@signe/di/dist/index.js\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", {\n\tvalue,\n\tconfigurable: true\n});\nvar DEFAULT_INSTANCE_KEY = \"__default__\";\nfunction toTokenName(token) {\n\treturn typeof token === \"function\" ? token.name : token;\n}\n__name(toTokenName, \"toTokenName\");\nfunction toInstanceKey(name) {\n\treturn name ?? DEFAULT_INSTANCE_KEY;\n}\n__name(toInstanceKey, \"toInstanceKey\");\nfunction getRecord(context, token) {\n\treturn context.get(\"inject:\" + toTokenName(token));\n}\n__name(getRecord, \"getRecord\");\nfunction ensureRecord(context, token) {\n\tconst key = \"inject:\" + toTokenName(token);\n\tlet record = context.get(key);\n\tif (!record) record = {\n\t\tmulti: false,\n\t\tvalues: /* @__PURE__ */ new Map(),\n\t\tinjected: /* @__PURE__ */ new Set()\n\t};\n\tcontext.set(key, record);\n\treturn record;\n}\n__name(ensureRecord, \"ensureRecord\");\nfunction provide(context, token, value, options = {}) {\n\tconst record = ensureRecord(context, token);\n\tconst instanceKey = toInstanceKey(options.name);\n\tif (options.multi) record.multi = true;\n\tif (!record.multi && instanceKey !== DEFAULT_INSTANCE_KEY) record.multi = true;\n\trecord.values.set(instanceKey, value);\n\treturn value;\n}\n__name(provide, \"provide\");\nfunction isInjected(context, token, options = {}) {\n\tconst record = getRecord(context, token);\n\tif (!record) return false;\n\tif (options.name) return record.injected.has(toInstanceKey(options.name));\n\tif (record.multi) return record.injected.size > 0;\n\treturn record.injected.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isInjected, \"isInjected\");\nfunction isProvided(context, token, options = {}) {\n\tconst record = getRecord(context, token);\n\tif (!record) return false;\n\tif (options.name) return record.values.has(toInstanceKey(options.name));\n\tif (record.multi) return record.values.size > 0;\n\treturn record.values.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isProvided, \"isProvided\");\nfunction hasInstance(context, token, options = {}) {\n\treturn isProvided(context, token, options);\n}\n__name(hasInstance, \"hasInstance\");\nfunction handleMissingInjection(token, options) {\n\tconst name = toTokenName(token);\n\tif (options.name) throw new Error(`Injection provider ${name} with name ${options.name} not found`);\n\tthrow new Error(`Injection provider ${name} not found`);\n}\n__name(handleMissingInjection, \"handleMissingInjection\");\nfunction markInjected(record, key) {\n\trecord.injected.add(key);\n}\n__name(markInjected, \"markInjected\");\nfunction markAllInjected(record) {\n\tfor (const key of record.values.keys()) record.injected.add(key);\n}\n__name(markAllInjected, \"markAllInjected\");\nfunction inject$1(context, token, options = {}) {\n\tconst record = getRecord(context, token);\n\tif (!record) {\n\t\tif (options.optional) return options.multi ? [] : void 0;\n\t\treturn handleMissingInjection(token, options);\n\t}\n\tif (options.name) {\n\t\tconst instanceKey = toInstanceKey(options.name);\n\t\tif (!record.values.has(instanceKey)) {\n\t\t\tif (options.optional) return;\n\t\t\treturn handleMissingInjection(token, options);\n\t\t}\n\t\tconst value2 = record.values.get(instanceKey);\n\t\tmarkInjected(record, instanceKey);\n\t\treturn value2;\n\t}\n\tif (options.multi || record.multi) {\n\t\tif (record.values.size === 0) {\n\t\t\tif (options.optional) return [];\n\t\t\treturn handleMissingInjection(token, options);\n\t\t}\n\t\tmarkAllInjected(record);\n\t\treturn Array.from(record.values.values());\n\t}\n\tconst value = record.values.get(DEFAULT_INSTANCE_KEY);\n\tif (value === void 0) {\n\t\tif (options.optional) return;\n\t\treturn handleMissingInjection(token, options);\n\t}\n\tmarkInjected(record, DEFAULT_INSTANCE_KEY);\n\treturn value;\n}\n__name(inject$1, \"inject\");\nfunction override(providers, newProvider, options) {\n\tlet { upsert = false, key } = options ?? {};\n\tif (!key) key = typeof newProvider === \"function\" ? newProvider.name : newProvider.provide;\n\tconst flatProviders = providers.flat();\n\tconst exists = flatProviders.some((provider) => {\n\t\tif (typeof provider === \"function\") return provider.name === key;\n\t\telse if (typeof provider === \"object\") return provider.provide === key;\n\t\treturn false;\n\t});\n\tconst mappedProviders = flatProviders.map((provider) => {\n\t\tif (typeof provider === \"function\" && provider.name === key) return newProvider;\n\t\telse if (typeof provider === \"object\" && provider.provide === key) return newProvider;\n\t\treturn provider;\n\t});\n\tif (upsert && !exists) mappedProviders.push(newProvider);\n\treturn mappedProviders;\n}\n__name(override, \"override\");\nfunction findProviders(providers, name) {\n\tconst results = [];\n\tfor (const provider of providers) if (Array.isArray(provider)) results.push(...findProviders(provider, name));\n\telse if (findProvider(provider, name)) results.push(provider);\n\treturn results;\n}\n__name(findProviders, \"findProviders\");\nfunction findProvider(providers, name) {\n\tif (!Array.isArray(providers)) {\n\t\tif (typeof providers === \"object\" && \"provide\" in providers) {\n\t\t\tconst provider = providers;\n\t\t\tconst providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n\t\t\tif (name instanceof RegExp) {\n\t\t\t\tif (name.test(providerName)) return providers;\n\t\t\t} else if (providerName === name) return providers;\n\t\t}\n\t\treturn null;\n\t}\n\tfor (const provider of providers) {\n\t\tif (Array.isArray(provider)) {\n\t\t\tconst found = findProvider(provider, name);\n\t\t\tif (found) return found;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof provider === \"object\" && \"provide\" in provider) {\n\t\t\tconst providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n\t\t\tif (name instanceof RegExp) {\n\t\t\t\tif (name.test(providerName)) return provider;\n\t\t\t} else if (providerName === name) return provider;\n\t\t}\n\t}\n\treturn null;\n}\n__name(findProvider, \"findProvider\");\nfunction processProvider(mergedConfig, baseConfig, provider) {\n\tif (Array.isArray(provider)) {\n\t\tfor (const nestedProvider of provider) processProvider(mergedConfig, baseConfig, nestedProvider);\n\t\treturn;\n\t}\n\tif (findProvider(baseConfig.providers, provider.provide)) mergedConfig.providers = override(mergedConfig.providers, provider);\n\telse mergedConfig.providers.push(provider);\n}\n__name(processProvider, \"processProvider\");\nfunction mergeConfig(baseConfig, config) {\n\tconst mergedConfig = {\n\t\t...baseConfig,\n\t\t...config,\n\t\tproviders: [...baseConfig.providers]\n\t};\n\tfor (const provider of config.providers) processProvider(mergedConfig, baseConfig, provider);\n\treturn mergedConfig;\n}\n__name(mergeConfig, \"mergeConfig\");\nfunction extractProvideOptions(source) {\n\tif (!source) return;\n\tconst { multi, name } = source;\n\tif (multi === void 0 && name === void 0) return;\n\treturn {\n\t\tmulti,\n\t\tname\n\t};\n}\n__name(extractProvideOptions, \"extractProvideOptions\");\nfunction getDeps(provider) {\n\tif (typeof provider === \"function\") return provider.deps ?? [];\n\treturn provider.deps ?? [];\n}\n__name(getDeps, \"getDeps\");\nfunction sortProviders(providers) {\n\tconst tokenName = /* @__PURE__ */ __name((t) => typeof t === \"function\" ? t.name : t, \"tokenName\");\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const p of providers) {\n\t\tconst token = tokenName(typeof p === \"function\" ? p : p.provide);\n\t\tconst list = map.get(token);\n\t\tif (list) list.push(p);\n\t\telse map.set(token, [p]);\n\t}\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst stack = /* @__PURE__ */ new Set();\n\tconst visit = /* @__PURE__ */ __name((token) => {\n\t\tconst name = tokenName(token);\n\t\tif (visited.has(name)) return;\n\t\tif (stack.has(name)) throw new Error(`Circular dependency detected for provider ${name}`);\n\t\tstack.add(name);\n\t\tconst providersForToken = map.get(name);\n\t\tif (providersForToken) {\n\t\t\tfor (const provider of providersForToken) {\n\t\t\t\tfor (const dep of getDeps(provider)) visit(dep);\n\t\t\t\tresult.push(provider);\n\t\t\t}\n\t\t\tvisited.add(name);\n\t\t}\n\t\tstack.delete(name);\n\t}, \"visit\");\n\tfor (const p of providers) visit(typeof p === \"function\" ? p : p.provide);\n\treturn result;\n}\n__name(sortProviders, \"sortProviders\");\nasync function injector(context, providers) {\n\tproviders = providers.flat();\n\tproviders = sortProviders(providers);\n\tfor (const provider of providers) {\n\t\tlet token;\n\t\tlet instance;\n\t\tlet options;\n\t\tif (typeof provider === \"function\") {\n\t\t\ttoken = provider;\n\t\t\tinstance = new provider(context);\n\t\t\toptions = extractProvideOptions(provider.diOptions ?? provider.di);\n\t\t} else {\n\t\t\ttoken = provider.provide;\n\t\t\toptions = extractProvideOptions(provider);\n\t\t\tconst provideUserClass = provider.useClass;\n\t\t\tif (typeof provideUserClass === \"function\") instance = new provideUserClass(context);\n\t\t\telse if (\"useValue\" in provider) instance = provider.useValue;\n\t\t\telse if (\"useFactory\" in provider) {\n\t\t\t\tinstance = provider.useFactory?.(context);\n\t\t\t\tif (instance instanceof Promise) instance = await instance;\n\t\t\t} else if (\"useExisting\" in provider) instance = inject$1(context, provider.useExisting);\n\t\t}\n\t\tprovide(context, token, instance, options);\n\t}\n}\n__name(injector, \"injector\");\nvar Context = class {\n\tstatic {\n\t\t__name(this, \"Context\");\n\t}\n\t/** Internal storage for injected values */\n\tvalues = {};\n\t/**\n\t* Sets a value in the context\n\t* @param key - Unique identifier for the value\n\t* @param value - Value to store\n\t*/\n\tset(key, value) {\n\t\tthis.values[key] = value;\n\t}\n\t/**\n\t* Retrieves a value from the context\n\t* @param key - Unique identifier for the value\n\t* @returns The stored value or undefined if not found\n\t*/\n\tget(key) {\n\t\treturn this.values[key];\n\t}\n};\n//#endregion\n//#region src/core/inject.ts\nvar context$1 = null;\nfunction inject(service, _context) {\n\tconst c = _context ?? context$1;\n\tif (!c) throw new Error(\"Context is not set. use setInject() to set the context\");\n\treturn inject$1(c, service);\n}\nfunction setInject(_context) {\n\tcontext$1 = _context;\n}\nfunction clearInject() {\n\tcontext$1 = null;\n}\n//#endregion\n//#region src/core/context.ts\nvar context = new Context();\ncontext[\"side\"] = \"server\";\n//#endregion\n//#region src/node/map.ts\nvar MAP_UPDATE_TOKEN_HEADER = \"x-rpgjs-map-update-token\";\nvar MAP_UPDATE_TOKEN_ENV = \"RPGJS_MAP_UPDATE_TOKEN\";\nfunction getRuntimeProcess() {\n\treturn globalThis.process;\n}\nfunction readEnvVariable(name) {\n\tconst value = getRuntimeProcess()?.env?.[name];\n\treturn typeof value === \"string\" ? value : void 0;\n}\nfunction getWorkingDirectory() {\n\tconst cwd = getRuntimeProcess()?.cwd;\n\tif (typeof cwd !== \"function\") return;\n\ttry {\n\t\treturn cwd();\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction normalizeRoomMapId(roomId) {\n\treturn roomId.startsWith(\"map-\") ? roomId.slice(4) : roomId;\n}\nfunction toBasePathPrefix(basePath) {\n\tconst trimmed = basePath.trim();\n\tif (!trimmed) return \"\";\n\treturn trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`;\n}\nfunction extractFileLikeMapDefinition(maps, mapId) {\n\tfor (const mapDef of maps) {\n\t\tif (typeof mapDef === \"object\" && mapDef) {\n\t\t\tif ((typeof mapDef.id === \"string\" ? mapDef.id.replace(/^map-/, \"\") : \"\") === mapId) return mapDef;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof mapDef === \"string\") {\n\t\t\tif (mapDef.split(\"/\").pop()?.replace(/\\.tmx$/i, \"\") === mapId) return {\n\t\t\t\tid: mapId,\n\t\t\t\tfile: mapDef\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\nasync function fetchTextByUrl(url) {\n\ttry {\n\t\tconst response = await fetch(url);\n\t\tif (!response.ok) return null;\n\t\treturn await response.text();\n\t} catch {\n\t\treturn null;\n\t}\n}\nasync function readTextByFilePath(pathLike) {\n\ttry {\n\t\tconst { readFile } = await import(\"node:fs/promises\");\n\t\tconst { isAbsolute, join } = await import(\"node:path\");\n\t\tconst cwd = getWorkingDirectory();\n\t\tconst candidates = isAbsolute(pathLike) || !cwd ? [pathLike] : [pathLike, join(cwd, pathLike)];\n\t\tfor (const candidate of candidates) try {\n\t\t\treturn await readFile(candidate, \"utf8\");\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t} catch {\n\t\treturn null;\n\t}\n\treturn null;\n}\nfunction getTiledBasePaths(paths) {\n\tconst values = [\n\t\t...paths || [],\n\t\treadEnvVariable(\"RPGJS_TILED_BASE_PATH\"),\n\t\t\"map\",\n\t\t\"data\",\n\t\t\"assets/data\",\n\t\t\"assets/map\"\n\t].filter((value) => !!value);\n\treturn Array.from(new Set(values));\n}\nfunction resolveMapUpdateToken(explicitToken) {\n\treturn explicitToken ?? readEnvVariable(\"RPGJS_MAP_UPDATE_TOKEN\") ?? \"\";\n}\nfunction createMapUpdateHeaders(token, init) {\n\tconst headers = new Headers(init);\n\tif (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n\tconst resolvedToken = resolveMapUpdateToken(token);\n\tif (resolvedToken) headers.set(MAP_UPDATE_TOKEN_HEADER, resolvedToken);\n\treturn headers;\n}\nfunction readMapUpdateToken(headers) {\n\tconst directToken = headers.get(MAP_UPDATE_TOKEN_HEADER);\n\tif (directToken) return directToken;\n\tconst authorization = headers.get(\"authorization\");\n\tif (!authorization) return \"\";\n\tconst [scheme, value] = authorization.split(/\\s+/, 2);\n\tif (scheme?.toLowerCase() !== \"bearer\" || !value) return \"\";\n\treturn value.trim();\n}\nfunction isMapUpdateAuthorized(headers, expectedToken) {\n\tconst requiredToken = resolveMapUpdateToken(expectedToken);\n\tif (!requiredToken) return true;\n\treturn readMapUpdateToken(headers) === requiredToken;\n}\nasync function resolveMapDocument(mapId, mapDefinition, options) {\n\tif (typeof mapDefinition?.data === \"string\" && mapDefinition.data.includes(\"<map\")) return { xml: mapDefinition.data };\n\tif (typeof mapDefinition?.file === \"string\") {\n\t\tconst file = mapDefinition.file.trim();\n\t\tif (file.includes(\"<map\")) return { xml: file };\n\t\tif (/^https?:\\/\\//i.test(file)) {\n\t\t\tconst xml = await fetchTextByUrl(file);\n\t\t\tif (xml) return {\n\t\t\t\txml,\n\t\t\t\tsourceUrl: file\n\t\t\t};\n\t\t}\n\t\tif (file.startsWith(\"/\") && options.host) {\n\t\t\tconst sourceUrl = `http://${options.host}${file}`;\n\t\t\tconst xml = await fetchTextByUrl(sourceUrl);\n\t\t\tif (xml) return {\n\t\t\t\txml,\n\t\t\t\tsourceUrl\n\t\t\t};\n\t\t}\n\t\tconst xmlFromFile = await readTextByFilePath(file);\n\t\tif (xmlFromFile) return { xml: xmlFromFile };\n\t}\n\tif (options.host) for (const basePath of getTiledBasePaths(options.tiledBasePaths)) {\n\t\tconst prefix = toBasePathPrefix(basePath);\n\t\tconst sourceUrl = `http://${options.host}${prefix}/${mapId}.tmx`;\n\t\tconst xml = await fetchTextByUrl(sourceUrl);\n\t\tif (xml) return {\n\t\t\txml,\n\t\t\tsourceUrl\n\t\t};\n\t}\n\treturn { xml: \"\" };\n}\nasync function enrichMapWithParsedTiledData(payload, options = {}) {\n\tif (payload?.parsedMap || typeof payload?.id !== \"string\") return;\n\tconst mapDefinition = extractFileLikeMapDefinition(Array.isArray(payload.__maps) ? payload.__maps : [], payload.id);\n\tconst mapDoc = await resolveMapDocument(payload.id, mapDefinition, options);\n\tif (!mapDoc.xml) return;\n\ttry {\n\t\tconst TiledParser = (await import(\"@canvasengine/tiled\"))?.TiledParser;\n\t\tif (!TiledParser) return;\n\t\tconst parsedMap = new TiledParser(mapDoc.xml).parseMap();\n\t\tconst tilesets = Array.isArray(parsedMap?.tilesets) ? parsedMap.tilesets : [];\n\t\tconst mergedTilesets = [];\n\t\tfor (const tileset of tilesets) {\n\t\t\tif (!tileset?.source) {\n\t\t\t\tmergedTilesets.push(tileset);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet tilesetUrl;\n\t\t\tif (mapDoc.sourceUrl) try {\n\t\t\t\ttilesetUrl = new URL(tileset.source, mapDoc.sourceUrl).toString();\n\t\t\t} catch {\n\t\t\t\ttilesetUrl = void 0;\n\t\t\t}\n\t\t\telse if (options.host) {\n\t\t\t\tconst prefix = toBasePathPrefix(getTiledBasePaths(options.tiledBasePaths)[0] || \"map\");\n\t\t\t\tconst candidatePath = tileset.source.startsWith(\"/\") ? tileset.source : `${prefix}/${tileset.source}`.replace(/\\/{2,}/g, \"/\");\n\t\t\t\ttilesetUrl = `http://${options.host}${candidatePath.startsWith(\"/\") ? candidatePath : `/${candidatePath}`}`;\n\t\t\t}\n\t\t\tconst tilesetRaw = tilesetUrl ? await fetchTextByUrl(tilesetUrl) : await readTextByFilePath(tileset.source);\n\t\t\tif (!tilesetRaw) {\n\t\t\t\tmergedTilesets.push(tileset);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst parsedTileset = new TiledParser(tilesetRaw).parseTileset();\n\t\t\t\tmergedTilesets.push({\n\t\t\t\t\t...tileset,\n\t\t\t\t\t...parsedTileset\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tmergedTilesets.push(tileset);\n\t\t\t}\n\t\t}\n\t\tparsedMap.tilesets = mergedTilesets;\n\t\tpayload.data = mapDoc.xml;\n\t\tpayload.parsedMap = parsedMap;\n\t\tif (typeof parsedMap?.width === \"number\" && typeof parsedMap?.tilewidth === \"number\") payload.width = parsedMap.width * parsedMap.tilewidth;\n\t\tif (typeof parsedMap?.height === \"number\" && typeof parsedMap?.tileheight === \"number\") payload.height = parsedMap.height * parsedMap.tileheight;\n\t} catch {\n\t\treturn;\n\t}\n}\nasync function updateMap(roomId, rpgServer, options = {}) {\n\tif (!roomId.startsWith(\"map-\")) return;\n\ttry {\n\t\tconst defaultMapPayload = {\n\t\t\tid: normalizeRoomMapId(roomId),\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tevents: [],\n\t\t\t__maps: Array.isArray(rpgServer.maps) ? rpgServer.maps : []\n\t\t};\n\t\tawait enrichMapWithParsedTiledData(defaultMapPayload, options);\n\t\tdelete defaultMapPayload.__maps;\n\t\tconst headers = createMapUpdateHeaders(options.mapUpdateToken, options.headers);\n\t\tawait rpgServer.onRequest?.({\n\t\t\turl: `http://localhost/parties/main/${roomId}/map/update`,\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tjson: async () => defaultMapPayload,\n\t\t\ttext: async () => JSON.stringify(defaultMapPayload)\n\t\t});\n\t\tconsole.log(`Initialized map for room ${roomId} via POST /map/update`);\n\t} catch (error) {\n\t\tconsole.warn(`Failed initializing map for room ${roomId}:`, error);\n\t}\n}\n//#endregion\n//#region src/module.ts\n/**\n* Provides server modules configuration to Angular Dependency Injection\n* \n* This function accepts an array of server modules that can be either:\n* - Objects implementing the RpgServer interface\n* - Classes decorated with the @RpgModule decorator (which will be instantiated)\n* \n* @param modules - Array of server modules (objects or classes)\n* @returns FactoryProvider configuration for Angular DI\n* @example\n* ```ts\n* // Using an object\n* provideServerModules([\n* {\n* player: {\n* onConnected(player) {\n* console.log('Player connected')\n* }\n* }\n* }\n* ])\n* \n* // Using a decorated class\n* @RpgModule<RpgServer>({\n* engine: {\n* onStart(server) {\n* console.log('Server started')\n* }\n* }\n* })\n* class MyServerModule {}\n* \n* provideServerModules([MyServerModule])\n* ```\n*/\nfunction provideServerModules(modules) {\n\treturn provideModules(modules, \"server\", (modules, context) => {\n\t\tmodules = [...findModules(context, \"Server\"), ...modules];\n\t\tmodules = modules.map((module) => {\n\t\t\tif (typeof module === \"function\") {\n\t\t\t\tconst instance = new module();\n\t\t\t\tconst moduleObj = {};\n\t\t\t\tfor (const key in instance) moduleObj[key] = instance[key];\n\t\t\t\tmodule = moduleObj;\n\t\t\t}\n\t\t\tif (\"server\" in module) module = module.server;\n\t\t\tif (module.player?.props) module = {\n\t\t\t\t...module,\n\t\t\t\tplayerProps: { load: (player) => {\n\t\t\t\t\tplayer.setSync(module.player.props);\n\t\t\t\t} }\n\t\t\t};\n\t\t\tif (module.maps && Array.isArray(module.maps)) {\n\t\t\t\tconst maps = [...module.maps];\n\t\t\t\tmodule = {\n\t\t\t\t\t...module,\n\t\t\t\t\tmaps: { load: (engine) => {\n\t\t\t\t\t\tmaps.forEach((map) => {\n\t\t\t\t\t\t\tlet mapInstance;\n\t\t\t\t\t\t\tif (typeof map === \"function\") {\n\t\t\t\t\t\t\t\tconst MapClass = map;\n\t\t\t\t\t\t\t\tmapInstance = {\n\t\t\t\t\t\t\t\t\tid: MapClass.prototype?.id ?? MapClass.id,\n\t\t\t\t\t\t\t\t\tfile: MapClass.prototype?.file ?? MapClass.file,\n\t\t\t\t\t\t\t\t\ttype: MapClass.type,\n\t\t\t\t\t\t\t\t\tname: MapClass.prototype?.name,\n\t\t\t\t\t\t\t\t\tsounds: MapClass.prototype?.sounds,\n\t\t\t\t\t\t\t\t\tweather: MapClass.prototype?.weather,\n\t\t\t\t\t\t\t\t\tlowMemory: MapClass.prototype?.lowMemory,\n\t\t\t\t\t\t\t\t\tstopAllSoundsBeforeJoin: MapClass.prototype?.stopAllSoundsBeforeJoin,\n\t\t\t\t\t\t\t\t\tevents: MapClass.prototype?._events,\n\t\t\t\t\t\t\t\t\tsyncSchema: MapClass.prototype?.$schema,\n\t\t\t\t\t\t\t\t\tonLoad: MapClass.prototype?.onLoad,\n\t\t\t\t\t\t\t\t\tonJoin: MapClass.prototype?.onJoin,\n\t\t\t\t\t\t\t\t\tonLeave: MapClass.prototype?.onLeave\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else mapInstance = map;\n\t\t\t\t\t\t\tengine.maps.push(mapInstance);\n\t\t\t\t\t\t});\n\t\t\t\t\t} }\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (module.worldMaps && Array.isArray(module.worldMaps)) {\n\t\t\t\tconst worldMaps = [...module.worldMaps];\n\t\t\t\tmodule = {\n\t\t\t\t\t...module,\n\t\t\t\t\tworldMaps: { load: (engine) => {\n\t\t\t\t\t\tworldMaps.forEach((worldMap) => {\n\t\t\t\t\t\t\tengine.createDynamicWorldMaps(worldMap);\n\t\t\t\t\t\t});\n\t\t\t\t\t} }\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (module.database) {\n\t\t\t\tconst database = module.database;\n\t\t\t\tmodule = {\n\t\t\t\t\t...module,\n\t\t\t\t\tdatabaseHooks: { load: async (engine) => {\n\t\t\t\t\t\tconst data = typeof database === \"function\" ? await database(engine) : database;\n\t\t\t\t\t\tif (!data || typeof data !== \"object\") return;\n\t\t\t\t\t\tfor (const key in data) engine.addInDatabase(key, data[key]);\n\t\t\t\t\t} }\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn module;\n\t\t});\n\t\treturn modules;\n\t});\n}\n//#endregion\nexport { RpgCommonPlayer as $, isArray as A, ProjectileMovement as B, SDEF as C, arrayFlat as D, PrebuiltGui as E, ModulesToken as F, Knockback as G, PathFollow as H, RpgModule as I, Entity as J, IceMovement as K, WorldMapsManager as L, isInstanceOf as M, isString as N, arrayUniq as O, random as P, Direction as Q, RpgCommonMap as R, PDEF as S, PerlinNoise2D as T, Oscillate as U, ProjectileType as V, LinearRepulsion as W, Vector2 as X, EntityState as Y, RpgShape as Z, ATK as _, isMapUpdateAuthorized as a, finalize as at, MAXHP as b, updateMap as c, map as ct, context$1 as d, createErrorClass as dt, Skill as et, inject as f, AGI as g, injector as h, createMapUpdateHeaders as i, signal as it, isFunction as j, capitalize as k, context as l, BehaviorSubject as lt, inject$1 as m, MAP_UPDATE_TOKEN_ENV as n, __decorate as nt, readMapUpdateToken as o, filter as ot, setInject as p, Dash as q, MAP_UPDATE_TOKEN_HEADER as r, __decorateMetadata as rt, resolveMapUpdateToken as s, combineLatest as st, provideServerModules as t, Item as tt, clearInject as u, Observable as ut, DEX as v, STR as w, MAXSP as x, INT as y, SeekAvoid as z };\n\n//# sourceMappingURL=module-CaCW1SDh.js.map","import { a as isMapUpdateAuthorized, c as updateMap, h as injector, i as createMapUpdateHeaders, l as context, n as MAP_UPDATE_TOKEN_ENV, o as readMapUpdateToken, p as setInject, r as MAP_UPDATE_TOKEN_HEADER, s as resolveMapUpdateToken, t as provideServerModules } from \"../module-CaCW1SDh.js\";\n//#region src/node/connection.ts\nfunction readEnvVariable(name) {\n\tconst value = globalThis.process?.env?.[name];\n\treturn typeof value === \"string\" ? value : void 0;\n}\nvar PartyConnection = class PartyConnection {\n\tstatic {\n\t\tthis.packetLossRate = parseFloat(readEnvVariable(\"RPGJS_PACKET_LOSS_RATE\") || \"0.1\");\n\t}\n\tstatic {\n\t\tthis.packetLossEnabled = readEnvVariable(\"RPGJS_ENABLE_PACKET_LOSS\") === \"true\";\n\t}\n\tstatic {\n\t\tthis.packetLossFilter = readEnvVariable(\"RPGJS_PACKET_LOSS_FILTER\") || \"\";\n\t}\n\tstatic {\n\t\tthis.bandwidthEnabled = readEnvVariable(\"RPGJS_ENABLE_BANDWIDTH\") === \"true\";\n\t}\n\tstatic {\n\t\tthis.bandwidthKbps = parseInt(readEnvVariable(\"RPGJS_BANDWIDTH_KBPS\") || \"100\");\n\t}\n\tstatic {\n\t\tthis.bandwidthFilter = readEnvVariable(\"RPGJS_BANDWIDTH_FILTER\") || \"\";\n\t}\n\tstatic {\n\t\tthis.latencyEnabled = readEnvVariable(\"RPGJS_ENABLE_LATENCY\") === \"true\";\n\t}\n\tstatic {\n\t\tthis.latencyMs = parseInt(readEnvVariable(\"RPGJS_LATENCY_MS\") || \"50\");\n\t}\n\tstatic {\n\t\tthis.latencyFilter = readEnvVariable(\"RPGJS_LATENCY_FILTER\") || \"\";\n\t}\n\tconstructor(ws, id, uri) {\n\t\tthis.ws = ws;\n\t\tthis._state = {};\n\t\tthis.messageQueue = [];\n\t\tthis.isProcessingQueue = false;\n\t\tthis.sequenceCounter = 0;\n\t\tthis.incomingQueue = [];\n\t\tthis.isProcessingIncomingQueue = false;\n\t\tthis.id = id || this.generateId();\n\t\tthis.uri = uri || \"\";\n\t}\n\tgenerateId() {\n\t\treturn `conn_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;\n\t}\n\tasync send(data) {\n\t\tif (this.ws.readyState !== 1) return;\n\t\tconst message = typeof data === \"string\" ? data : JSON.stringify(data);\n\t\tconst timestamp = Date.now();\n\t\tconst sequence = ++this.sequenceCounter;\n\t\tthis.messageQueue.push({\n\t\t\tmessage,\n\t\t\ttimestamp,\n\t\t\tsequence\n\t\t});\n\t\tif (!this.isProcessingQueue) this.processMessageQueue();\n\t}\n\tasync processMessageQueue() {\n\t\tif (this.isProcessingQueue) return;\n\t\tthis.isProcessingQueue = true;\n\t\twhile (this.messageQueue.length > 0) {\n\t\t\tconst queueItem = this.messageQueue.shift();\n\t\t\tif (this.shouldApplyLatency(queueItem.message)) await this.waitUntil(queueItem.timestamp + PartyConnection.latencyMs);\n\t\t\tif (PartyConnection.bandwidthEnabled && PartyConnection.bandwidthKbps > 0) {\n\t\t\t\tif (!PartyConnection.bandwidthFilter || queueItem.message.includes(PartyConnection.bandwidthFilter)) {\n\t\t\t\t\tconst transmissionTimeMs = queueItem.message.length * 8 / (PartyConnection.bandwidthKbps * 1e3) * 1e3;\n\t\t\t\t\tconst bandwidthDelayMs = Math.max(transmissionTimeMs, 10);\n\t\t\t\t\tconsole.log(`\\x1b[34m[BANDWIDTH SIMULATION]\\x1b[0m Connection ${this.id}: Message #${queueItem.sequence} transmission time: ${bandwidthDelayMs.toFixed(1)}ms`);\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, bandwidthDelayMs));\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.ws.send(queueItem.message);\n\t\t}\n\t\tthis.isProcessingQueue = false;\n\t}\n\tshouldApplyLatency(message) {\n\t\tif (!PartyConnection.latencyEnabled || PartyConnection.latencyMs <= 0) return false;\n\t\tif (!PartyConnection.latencyFilter) return true;\n\t\treturn message.includes(PartyConnection.latencyFilter);\n\t}\n\tasync waitUntil(targetTimestamp) {\n\t\tconst delayMs = targetTimestamp - Date.now();\n\t\tif (delayMs <= 0) return;\n\t\tawait new Promise((resolve) => setTimeout(resolve, delayMs));\n\t}\n\tclose() {\n\t\tif (this.ws.readyState === 1) this.ws.close();\n\t}\n\tsetState(value) {\n\t\tthis._state = value;\n\t}\n\tget state() {\n\t\treturn this._state;\n\t}\n\tbufferIncoming(message, processor) {\n\t\tthis.incomingQueue.push({\n\t\t\tmessage,\n\t\t\ttimestamp: Date.now(),\n\t\t\tprocessor\n\t\t});\n\t\tif (!this.isProcessingIncomingQueue) this.processIncomingQueue();\n\t}\n\tasync processIncomingQueue() {\n\t\tif (this.isProcessingIncomingQueue) return;\n\t\tthis.isProcessingIncomingQueue = true;\n\t\twhile (this.incomingQueue.length > 0) {\n\t\t\tconst item = this.incomingQueue.shift();\n\t\t\tif (this.shouldApplyLatency(item.message)) await this.waitUntil(item.timestamp + PartyConnection.latencyMs);\n\t\t\ttry {\n\t\t\t\tawait item.processor([item.message]);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Error processing incoming message:\", err);\n\t\t\t}\n\t\t}\n\t\tthis.isProcessingIncomingQueue = false;\n\t}\n\tstatic configurePacketLoss(enabled, rate, filter) {\n\t\tPartyConnection.packetLossEnabled = enabled;\n\t\tPartyConnection.packetLossRate = Math.max(0, Math.min(1, rate));\n\t\tPartyConnection.packetLossFilter = filter || \"\";\n\t\tif (enabled && rate > 0) {\n\t\t\tconst filterInfo = filter ? ` (filtered: \"${filter}\")` : \"\";\n\t\t\tconsole.log(`\\x1b[35m[PACKET LOSS SIMULATION]\\x1b[0m Enabled with ${(rate * 100).toFixed(1)}% loss rate${filterInfo}`);\n\t\t} else if (enabled) console.log(\"\\x1B[35m[PACKET LOSS SIMULATION]\\x1B[0m Enabled but rate is 0% (no messages will be dropped)\");\n\t\telse console.log(\"\\x1B[35m[PACKET LOSS SIMULATION]\\x1B[0m Disabled\");\n\t}\n\tstatic getPacketLossStatus() {\n\t\treturn {\n\t\t\tenabled: PartyConnection.packetLossEnabled,\n\t\t\trate: PartyConnection.packetLossRate,\n\t\t\tfilter: PartyConnection.packetLossFilter\n\t\t};\n\t}\n\tstatic configureBandwidth(enabled, kbps, filter) {\n\t\tPartyConnection.bandwidthEnabled = enabled;\n\t\tPartyConnection.bandwidthKbps = Math.max(1, kbps);\n\t\tPartyConnection.bandwidthFilter = filter || \"\";\n\t\tif (enabled && kbps > 0) {\n\t\t\tconst filterInfo = filter ? ` (filtered: \"${filter}\")` : \"\";\n\t\t\tconsole.log(`\\x1b[35m[BANDWIDTH SIMULATION]\\x1b[0m Enabled with ${kbps} kbps bandwidth${filterInfo}`);\n\t\t} else if (enabled) console.log(\"\\x1B[35m[BANDWIDTH SIMULATION]\\x1B[0m Enabled but bandwidth is 0 kbps (no delay will be applied)\");\n\t\telse console.log(\"\\x1B[35m[BANDWIDTH SIMULATION]\\x1B[0m Disabled\");\n\t}\n\tstatic getBandwidthStatus() {\n\t\treturn {\n\t\t\tenabled: PartyConnection.bandwidthEnabled,\n\t\t\tkbps: PartyConnection.bandwidthKbps,\n\t\t\tfilter: PartyConnection.bandwidthFilter\n\t\t};\n\t}\n\tstatic configureLatency(enabled, ms, filter) {\n\t\tPartyConnection.latencyEnabled = enabled;\n\t\tPartyConnection.latencyMs = Math.max(0, ms);\n\t\tPartyConnection.latencyFilter = filter || \"\";\n\t\tif (enabled && ms > 0) {\n\t\t\tconst filterInfo = filter ? ` (filtered: \"${filter}\")` : \"\";\n\t\t\tconsole.log(`\\x1b[35m[LATENCY SIMULATION]\\x1b[0m Enabled with ${ms}ms fixed latency${filterInfo}`);\n\t\t} else if (enabled) console.log(\"\\x1B[35m[LATENCY SIMULATION]\\x1B[0m Enabled but latency is 0ms (no delay will be applied)\");\n\t\telse console.log(\"\\x1B[35m[LATENCY SIMULATION]\\x1B[0m Disabled\");\n\t}\n\tstatic getLatencyStatus() {\n\t\treturn {\n\t\t\tenabled: PartyConnection.latencyEnabled,\n\t\t\tms: PartyConnection.latencyMs,\n\t\t\tfilter: PartyConnection.latencyFilter\n\t\t};\n\t}\n};\nfunction logNetworkSimulationStatus() {\n\tconst packetLossStatus = PartyConnection.getPacketLossStatus();\n\tconst bandwidthStatus = PartyConnection.getBandwidthStatus();\n\tconst latencyStatus = PartyConnection.getLatencyStatus();\n\tif (packetLossStatus.enabled) {\n\t\tconst filterInfo = packetLossStatus.filter ? ` (filter: \"${packetLossStatus.filter}\")` : \"\";\n\t\tconsole.log(`\\x1b[36m[NETWORK SIMULATION]\\x1b[0m Packet loss simulation: ${(packetLossStatus.rate * 100).toFixed(1)}% loss rate${filterInfo}`);\n\t} else console.log(\"\\x1B[36m[NETWORK SIMULATION]\\x1B[0m Packet loss simulation: disabled\");\n\tif (bandwidthStatus.enabled) {\n\t\tconst filterInfo = bandwidthStatus.filter ? ` (filter: \"${bandwidthStatus.filter}\")` : \"\";\n\t\tconsole.log(`\\x1b[36m[NETWORK SIMULATION]\\x1b[0m Bandwidth simulation: ${bandwidthStatus.kbps} kbps${filterInfo}`);\n\t} else console.log(\"\\x1B[36m[NETWORK SIMULATION]\\x1B[0m Bandwidth simulation: disabled\");\n\tif (latencyStatus.enabled) {\n\t\tconst filterInfo = latencyStatus.filter ? ` (filter: \"${latencyStatus.filter}\")` : \"\";\n\t\tconsole.log(`\\x1b[36m[NETWORK SIMULATION]\\x1b[0m Latency simulation: ${latencyStatus.ms}ms ping${filterInfo}`);\n\t} else console.log(\"\\x1B[36m[NETWORK SIMULATION]\\x1B[0m Latency simulation: disabled\");\n}\n//#endregion\n//#region src/node/room.ts\nvar PartyRoom = class {\n\tconstructor(id) {\n\t\tthis.env = {};\n\t\tthis.context = {};\n\t\tthis.connections = /* @__PURE__ */ new Map();\n\t\tthis.storageData = /* @__PURE__ */ new Map();\n\t\tthis.id = id;\n\t\tthis.internalID = `internal_${id}_${Date.now()}`;\n\t}\n\tasync broadcast(message, except = []) {\n\t\tconst data = typeof message === \"string\" ? message : JSON.stringify(message);\n\t\tconst sendPromises = [];\n\t\tfor (const [connectionId, connection] of this.connections) if (!except.includes(connectionId)) sendPromises.push(connection.send(data));\n\t\tawait Promise.all(sendPromises);\n\t}\n\tgetConnection(id) {\n\t\treturn this.connections.get(id);\n\t}\n\tgetConnections(tag) {\n\t\treturn this.connections.values();\n\t}\n\taddConnection(connection) {\n\t\tthis.connections.set(connection.id, connection);\n\t}\n\tremoveConnection(connectionId) {\n\t\tthis.connections.delete(connectionId);\n\t}\n\tget storage() {\n\t\treturn {\n\t\t\tput: async (key, value) => {\n\t\t\t\tthis.storageData.set(key, value);\n\t\t\t},\n\t\t\tget: async (key) => {\n\t\t\t\treturn this.storageData.get(key);\n\t\t\t},\n\t\t\tdelete: async (key) => {\n\t\t\t\tthis.storageData.delete(key);\n\t\t\t},\n\t\t\tlist: async () => {\n\t\t\t\treturn Array.from(this.storageData.entries());\n\t\t\t}\n\t\t};\n\t}\n};\n//#endregion\n//#region src/node/transport.ts\nfunction normalizePathPrefix(path, fallback) {\n\tconst trimmed = (path || fallback).trim();\n\tif (!trimmed) return fallback;\n\tconst prefixed = trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`;\n\treturn prefixed !== \"/\" ? prefixed.replace(/\\/+$/, \"\") : prefixed;\n}\nfunction hasPathPrefix(pathname, prefix) {\n\treturn pathname === prefix || pathname.startsWith(`${prefix}/`);\n}\nfunction prependMountedPath(pathname, mountedPath) {\n\tif (!mountedPath) return pathname;\n\tconst normalizedMountedPath = normalizePathPrefix(mountedPath, \"/\");\n\tif (hasPathPrefix(pathname, normalizedMountedPath)) return pathname;\n\tif (pathname === \"/\") return normalizedMountedPath;\n\treturn `${normalizedMountedPath}${pathname.startsWith(\"/\") ? pathname : `/${pathname}`}`.replace(/\\/{2,}/g, \"/\");\n}\nfunction parseHttpRoute(pathname, partiesPath) {\n\tif (!hasPathPrefix(pathname, partiesPath)) return null;\n\tconst segments = pathname.slice(partiesPath.length).split(\"/\").filter(Boolean);\n\tif (segments.length < 2) return null;\n\treturn {\n\t\troomId: segments[0],\n\t\trequestPath: `/${segments.slice(1).join(\"/\")}`\n\t};\n}\nfunction parseSocketRoute(pathname, partiesPath) {\n\tif (!hasPathPrefix(pathname, partiesPath)) return null;\n\tconst segments = pathname.slice(partiesPath.length).split(\"/\").filter(Boolean);\n\tif (segments.length < 1) return null;\n\treturn { roomId: segments[0] };\n}\nfunction toHeaders(input) {\n\tif (!input) return new Headers();\n\tif (input instanceof Headers) return new Headers(input);\n\tif (Array.isArray(input)) return new Headers(input);\n\tif (input instanceof Map) {\n\t\tconst headers = new Headers();\n\t\tfor (const [key, value] of input) if (typeof value !== \"undefined\") headers.set(key, value);\n\t\treturn headers;\n\t}\n\tconst headers = new Headers();\n\tObject.entries(input).forEach(([key, value]) => {\n\t\tif (Array.isArray(value)) {\n\t\t\tif (typeof value[0] !== \"undefined\") headers.set(key, value[0]);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value !== \"undefined\") headers.set(key, String(value));\n\t});\n\treturn headers;\n}\nfunction createRequestLike(url, method, headers, bodyText) {\n\treturn {\n\t\turl,\n\t\tmethod,\n\t\theaders,\n\t\tjson: async () => {\n\t\t\tif (!bodyText) return;\n\t\t\treturn JSON.parse(bodyText);\n\t\t},\n\t\ttext: async () => bodyText\n\t};\n}\nasync function normalizeEngineResponse(result) {\n\tif (result instanceof Response) return result;\n\tif (typeof result === \"string\") return new Response(result, {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"text/plain\" }\n\t});\n\treturn new Response(JSON.stringify(result ?? {}), {\n\t\tstatus: 200,\n\t\theaders: { \"Content-Type\": \"application/json\" }\n\t});\n}\nasync function sendNodeResponse(res, response) {\n\tres.statusCode = response.status;\n\tresponse.headers.forEach((value, key) => {\n\t\tres.setHeader(key, value);\n\t});\n\tres.end(await response.text());\n}\nasync function readNodeBody(req) {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst chunks = [];\n\t\treq.on(\"data\", (chunk) => {\n\t\t\tchunks.push(typeof chunk === \"string\" ? Buffer.from(chunk) : chunk);\n\t\t});\n\t\treq.on(\"end\", () => {\n\t\t\tresolve(Buffer.concat(chunks).toString(\"utf8\"));\n\t\t});\n\t\treq.on(\"error\", reject);\n\t});\n}\nfunction resolveUrlFromSocketRequest(request) {\n\tconst headers = toHeaders(request.headers);\n\tconst host = headers.get(\"host\") || \"localhost\";\n\tconst rawUrl = request.url || \"/\";\n\tconst url = new URL(rawUrl, `http://${host}`);\n\treturn {\n\t\theaders,\n\t\tmethod: request.method,\n\t\trawUrl,\n\t\turl\n\t};\n}\nfunction createConnectionContext(url, headers, method) {\n\tconst normalizedHeaders = /* @__PURE__ */ new Map();\n\theaders.forEach((value, key) => {\n\t\tnormalizedHeaders.set(key.toLowerCase(), value);\n\t});\n\treturn {\n\t\trequest: {\n\t\t\theaders: {\n\t\t\t\thas: (name) => normalizedHeaders.has(name.toLowerCase()),\n\t\t\t\tget: (name) => normalizedHeaders.get(name.toLowerCase()),\n\t\t\t\tentries: () => normalizedHeaders.entries(),\n\t\t\t\tkeys: () => normalizedHeaders.keys(),\n\t\t\t\tvalues: () => normalizedHeaders.values()\n\t\t\t},\n\t\t\tmethod,\n\t\t\turl: url.toString()\n\t\t},\n\t\turl\n\t};\n}\nvar RpgServerTransport = class {\n\tconstructor(serverModule, options = {}) {\n\t\tthis.serverModule = serverModule;\n\t\tthis.serverContextInitialized = false;\n\t\tthis.rooms = /* @__PURE__ */ new Map();\n\t\tthis.servers = /* @__PURE__ */ new Map();\n\t\tthis.lastKnownHost = \"\";\n\t\tthis.initializeMaps = options.initializeMaps ?? true;\n\t\tthis.mapUpdateToken = resolveMapUpdateToken(options.mapUpdateToken);\n\t\tthis.partiesPath = normalizePathPrefix(options.partiesPath || \"/parties/main\", \"/parties/main\");\n\t\tthis.tiledBasePaths = options.tiledBasePaths;\n\t}\n\tasync ensureServerContext() {\n\t\tif (this.serverContextInitialized) return;\n\t\tsetInject(context);\n\t\tawait injector(context, [provideServerModules([])]);\n\t\tthis.serverContextInitialized = true;\n\t}\n\tgetRoom(roomId) {\n\t\treturn this.rooms.get(roomId);\n\t}\n\tgetServer(roomId) {\n\t\treturn this.servers.get(roomId);\n\t}\n\tasync ensureRoomAndServer(roomId, host) {\n\t\tif (host) this.lastKnownHost = host;\n\t\tlet room = this.rooms.get(roomId);\n\t\tif (!room) {\n\t\t\troom = new PartyRoom(roomId);\n\t\t\tthis.rooms.set(roomId, room);\n\t\t\tconsole.log(`Created new room: ${roomId}`);\n\t\t}\n\t\tlet rpgServer = this.servers.get(roomId);\n\t\tif (!rpgServer) {\n\t\t\tawait this.ensureServerContext();\n\t\t\trpgServer = new this.serverModule(room);\n\t\t\tthis.servers.set(roomId, rpgServer);\n\t\t\tconsole.log(`Created new server instance for room: ${roomId}`);\n\t\t\tif (typeof rpgServer.onStart === \"function\") try {\n\t\t\t\tawait rpgServer.onStart();\n\t\t\t\tconsole.log(`Server started for room: ${roomId}`);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(`Error starting server for room ${roomId}:`, error);\n\t\t\t}\n\t\t\tif (this.initializeMaps) await updateMap(roomId, rpgServer, {\n\t\t\t\thost: host || this.lastKnownHost,\n\t\t\t\tmapUpdateToken: this.mapUpdateToken,\n\t\t\t\ttiledBasePaths: this.tiledBasePaths\n\t\t\t});\n\t\t}\n\t\troom.context.parties = this.buildPartiesContext();\n\t\treturn {\n\t\t\troom,\n\t\t\trpgServer\n\t\t};\n\t}\n\tbuildPartiesContext() {\n\t\treturn { main: { get: async (targetRoomId) => {\n\t\t\treturn { fetch: async (path, init) => {\n\t\t\t\tconst method = (init?.method || \"GET\").toUpperCase();\n\t\t\t\tconst headers = toHeaders(init?.headers);\n\t\t\t\tconst requestPath = path.startsWith(\"/\") ? path : `/${path}`;\n\t\t\t\tlet bodyText = \"\";\n\t\t\t\tif (typeof init?.body === \"string\") bodyText = init.body;\n\t\t\t\telse if (typeof init?.body !== \"undefined\") bodyText = JSON.stringify(init.body);\n\t\t\t\treturn this.dispatchRoomRequest(targetRoomId, createRequestLike(`http://localhost${this.partiesPath}/${targetRoomId}${requestPath}`, method, headers, bodyText), this.lastKnownHost);\n\t\t\t} };\n\t\t} } };\n\t}\n\tasync dispatchRoomRequest(roomId, requestLike, host) {\n\t\tconst { room, rpgServer } = await this.ensureRoomAndServer(roomId, host);\n\t\troom.context.parties = this.buildPartiesContext();\n\t\treturn normalizeEngineResponse(await rpgServer.onRequest?.(requestLike));\n\t}\n\tasync fetch(request, init) {\n\t\tconst webRequest = request instanceof Request ? request : new Request(String(request), init);\n\t\tconst url = new URL(webRequest.url);\n\t\tconst route = parseHttpRoute(url.pathname, this.partiesPath);\n\t\tif (!route) return new Response(JSON.stringify({ error: \"Not found\" }), {\n\t\t\tstatus: 404,\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t\tconst bodyText = await webRequest.text();\n\t\treturn this.dispatchRoomRequest(route.roomId, createRequestLike(webRequest.url, webRequest.method.toUpperCase(), toHeaders(webRequest.headers), bodyText), url.host);\n\t}\n\tasync updateMap(mapId, payload, options = {}) {\n\t\tconst roomId = mapId.startsWith(\"map-\") ? mapId : `map-${mapId}`;\n\t\tconst headers = createMapUpdateHeaders(this.mapUpdateToken, options.headers);\n\t\tif (!headers.has(\"content-type\")) headers.set(\"content-type\", \"application/json\");\n\t\treturn this.dispatchRoomRequest(roomId, createRequestLike(`http://localhost${this.partiesPath}/${roomId}/map/update`, \"POST\", headers, JSON.stringify(payload)), options.host ?? this.lastKnownHost);\n\t}\n\tasync handleNodeRequest(req, res, next, options = {}) {\n\t\ttry {\n\t\t\tconst headers = toHeaders(req.headers);\n\t\t\tconst host = headers.get(\"host\") || \"localhost\";\n\t\t\tconst url = new URL(req.url || \"/\", `http://${host}`);\n\t\t\tconst normalizedPathname = prependMountedPath(url.pathname, options.mountedPath);\n\t\t\tconst normalizedUrl = new URL(url.toString());\n\t\t\tnormalizedUrl.pathname = normalizedPathname;\n\t\t\tconst route = parseHttpRoute(normalizedUrl.pathname, this.partiesPath);\n\t\t\tif (!route) {\n\t\t\t\tnext?.();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst bodyText = await readNodeBody(req);\n\t\t\tawait sendNodeResponse(res, await this.dispatchRoomRequest(route.roomId, createRequestLike(normalizedUrl.toString(), (req.method || \"GET\").toUpperCase(), headers, bodyText), host));\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error handling RPG-JS request:\", error);\n\t\t\tres.statusCode = 500;\n\t\t\tres.setHeader(\"Content-Type\", \"application/json\");\n\t\t\tres.end(JSON.stringify({ error: \"Internal server error\" }));\n\t\t\treturn true;\n\t\t}\n\t}\n\tasync acceptWebSocket(ws, request) {\n\t\tconst normalizedRequest = resolveUrlFromSocketRequest(request);\n\t\tconst route = parseSocketRoute(normalizedRequest.url.pathname, this.partiesPath);\n\t\tif (!route) return false;\n\t\ttry {\n\t\t\tconsole.log(`WebSocket upgrade request: ${normalizedRequest.url.pathname}`);\n\t\t\tconst queryParams = Object.fromEntries(normalizedRequest.url.searchParams.entries());\n\t\t\tconsole.log(`Room: ${route.roomId}, Query params:`, queryParams);\n\t\t\tconst { room, rpgServer } = await this.ensureRoomAndServer(route.roomId, normalizedRequest.url.host);\n\t\t\troom.context.parties = this.buildPartiesContext();\n\t\t\tconst connection = new PartyConnection(ws, queryParams._pk, normalizedRequest.rawUrl);\n\t\t\troom.addConnection(connection);\n\t\t\tconsole.log(`WebSocket connection established: ${connection.id} in room: ${route.roomId}`);\n\t\t\tlet isClosed = false;\n\t\t\tconst cleanup = async (logMessage, error) => {\n\t\t\t\tif (isClosed) return;\n\t\t\t\tisClosed = true;\n\t\t\t\tif (logMessage) console.log(logMessage);\n\t\t\t\tif (error) console.error(\"WebSocket error:\", error);\n\t\t\t\troom.removeConnection(connection.id);\n\t\t\t\tawait rpgServer.onClose?.(connection);\n\t\t\t};\n\t\t\tws.on(\"message\", async (data) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst rawMessage = typeof data === \"string\" ? data : data.toString();\n\t\t\t\t\tif (PartyConnection.packetLossEnabled && PartyConnection.packetLossRate > 0) {\n\t\t\t\t\t\tif (!PartyConnection.packetLossFilter || rawMessage.includes(PartyConnection.packetLossFilter)) {\n\t\t\t\t\t\t\tif (Math.random() < PartyConnection.packetLossRate) {\n\t\t\t\t\t\t\t\tconsole.log(`\\x1b[31m[PACKET LOSS]\\x1b[0m Connection ${connection.id}: Server dropped an incoming packet (${(PartyConnection.packetLossRate * 100).toFixed(1)}% loss rate)`);\n\t\t\t\t\t\t\t\tconsole.log(`\\x1b[33m[PACKET DATA]\\x1b[0m ${rawMessage.slice(0, 100)}${rawMessage.length > 100 ? \"...\" : \"\"}`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconnection.bufferIncoming(rawMessage, async (batch) => {\n\t\t\t\t\t\tfor (const message of batch) await rpgServer.onMessage?.(message, connection);\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\"Error processing WebSocket message:\", error);\n\t\t\t\t}\n\t\t\t});\n\t\t\tws.on(\"close\", () => {\n\t\t\t\tcleanup(`WebSocket connection closed: ${connection.id} from room: ${route.roomId}`);\n\t\t\t});\n\t\t\tws.on(\"error\", (error) => {\n\t\t\t\tcleanup(void 0, error);\n\t\t\t});\n\t\t\tif (typeof rpgServer.onConnect === \"function\") await rpgServer.onConnect(connection, createConnectionContext(normalizedRequest.url, normalizedRequest.headers, normalizedRequest.method));\n\t\t\tawait connection.send({\n\t\t\t\ttype: \"connected\",\n\t\t\t\tid: connection.id,\n\t\t\t\tmessage: \"Connected to RPG-JS server\"\n\t\t\t});\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error establishing WebSocket connection:\", error);\n\t\t\tws.close();\n\t\t\treturn true;\n\t\t}\n\t}\n\tasync handleUpgrade(wsServer, request, socket, head) {\n\t\tconst host = toHeaders(request.headers).get(\"host\") || \"localhost\";\n\t\tif (!parseSocketRoute(new URL(request.url || \"/\", `http://${host}`).pathname, this.partiesPath)) return false;\n\t\twsServer.handleUpgrade(request, socket, head, (ws) => {\n\t\t\tthis.acceptWebSocket(ws, request);\n\t\t});\n\t\treturn true;\n\t}\n};\nfunction createRpgServerTransport(serverModule, options) {\n\treturn new RpgServerTransport(serverModule, options);\n}\n//#endregion\nexport { MAP_UPDATE_TOKEN_ENV, MAP_UPDATE_TOKEN_HEADER, PartyConnection, PartyRoom, RpgServerTransport, createMapUpdateHeaders, createRpgServerTransport, isMapUpdateAuthorized, logNetworkSimulationStatus, readMapUpdateToken, resolveMapUpdateToken };\n\n//# sourceMappingURL=index.js.map","import { createRpgServerTransport, logNetworkSimulationStatus } from \"@rpgjs/server/node\";\nimport type { RpgTransportServerConstructor, RpgWebSocketServer } from \"@rpgjs/server/node\";\nimport type { ViteDevServer } from \"vite\";\n\nasync function importWebSocketServer(): Promise<any> {\n if (typeof process === \"undefined\" || !process.versions?.node) {\n console.warn(\"Not in Node.js environment, WebSocket server not available\");\n return null;\n }\n\n try {\n const { createRequire } = await import(\"module\");\n const require = createRequire(import.meta.url);\n const ws = require(\"ws\");\n return ws.WebSocketServer || ws.default?.WebSocketServer || ws;\n } catch (error) {\n console.warn(\"Failed to load ws module:\", error);\n return null;\n }\n}\n\nexport function serverPlugin(serverModule: RpgTransportServerConstructor) {\n let wsServer: RpgWebSocketServer | null = null;\n const transport = createRpgServerTransport(serverModule);\n\n return {\n name: \"server-plugin\",\n\n async configureServer(server: ViteDevServer) {\n try {\n const WebSocketServerClass = await importWebSocketServer();\n if (WebSocketServerClass) {\n wsServer = new WebSocketServerClass({\n noServer: true,\n });\n console.log(\"WebSocket server initialized successfully\");\n } else {\n console.log(\"WebSocket server not available in this environment\");\n }\n } catch (error) {\n console.warn(\"WebSocket server not available:\", error);\n wsServer = null;\n }\n\n console.log(\"RPG-JS server plugin initialized\");\n logNetworkSimulationStatus();\n\n server.middlewares.use(\"/parties\", async (req, res, next) => {\n await transport.handleNodeRequest(req, res, next, {\n mountedPath: \"/parties\",\n });\n });\n\n if (wsServer) {\n server.httpServer?.on(\"upgrade\", (request, socket, head) => {\n void transport.handleUpgrade(wsServer!, request, socket, head);\n });\n }\n\n console.log(\"RPG-JS server plugin configured with HTTP and WebSocket forwarding !\");\n },\n\n buildStart() {\n console.log(\"RPG-JS server starting...\");\n },\n\n buildEnd() {\n if (wsServer) {\n wsServer.close();\n }\n console.log(\"RPG-JS server stopped\");\n },\n };\n}\n","import { Plugin } from 'vite';\n\nexport interface EntryPointPluginOptions {\n /**\n * Entry points configuration for different RPG types\n * @default { rpg: './src/standalone.ts', mmorpg: './src/client.ts' }\n */\n entryPoints?: {\n rpg?: string;\n mmorpg?: string;\n };\n /**\n * RPG type from environment variable\n * @default process.env.RPG_TYPE || 'rpg'\n */\n rpgType?: string;\n}\n\n/**\n * Plugin Vite qui gère les points d'entrée selon le type de RPG\n * \n * Ce plugin modifie automatiquement le fichier HTML pour insérer la bonne balise script\n * selon la variable d'environnement RPG_TYPE. Il supporte deux types :\n * - 'rpg' : pour le mode standalone\n * - 'mmorpg' : pour le mode multijoueur\n * \n * Le plugin recherche dans le HTML les balises script existantes et les remplace\n * par le bon point d'entrée selon le type configuré.\n * \n * @param options - Configuration du plugin\n * @returns Plugin Vite\n * \n * @example\n * ```typescript\n * // vite.config.ts\n * import { entryPointPlugin } from '@rpgjs/vite';\n * \n * export default defineConfig({\n * plugins: [\n * entryPointPlugin({\n * entryPoints: {\n * rpg: './src/standalone.ts',\n * mmorpg: './src/client.ts'\n * }\n * })\n * ]\n * });\n * ```\n */\nexport function entryPointPlugin(options: EntryPointPluginOptions = {}): Plugin {\n const {\n entryPoints = {\n rpg: './src/standalone.ts',\n mmorpg: './src/client.ts'\n },\n rpgType = process.env.RPG_TYPE || 'rpg'\n } = options;\n\n return {\n name: 'rpgjs:entry-point',\n transformIndexHtml: {\n order: 'pre',\n handler(html: string) {\n // Determine the correct entry point based on RPG type\n const currentEntryPoint = entryPoints[rpgType as keyof typeof entryPoints];\n \n if (!currentEntryPoint) {\n console.warn(`[rpgjs:entry-point] Unknown RPG_TYPE: ${rpgType}. Using default 'rpg' type.`);\n const fallbackEntryPoint = entryPoints.rpg || './src/standalone.ts';\n return html.replace(\n /<script\\s+type=\"module\"\\s+src=\"[^\"]*\"[^>]*><\\/script>/gi,\n `<script type=\"module\" src=\"${fallbackEntryPoint}\"></script>`\n );\n }\n\n // Replace existing script tags with the correct entry point\n const transformedHtml = html.replace(\n /<script\\s+type=\"module\"\\s+src=\"[^\"]*\"[^>]*><\\/script>/gi,\n `<script type=\"module\" src=\"${currentEntryPoint}\"></script>`\n );\n\n // If no script tag was found, add one in the head\n if (transformedHtml === html && !html.includes('<script type=\"module\"')) {\n return html.replace(\n /<\\/head>/i,\n ` <script type=\"module\" src=\"${currentEntryPoint}\"></script>\\n </head>`\n );\n }\n\n return transformedHtml;\n }\n },\n configResolved(config) {\n // Log the current configuration for debugging\n console.log(`[rpgjs:entry-point] Using RPG_TYPE: ${rpgType}`);\n console.log(`[rpgjs:entry-point] Entry point: ${entryPoints[rpgType as keyof typeof entryPoints]}`);\n }\n };\n} ","import { existsSync, rmSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { build as viteBuild, type Plugin, type ResolvedConfig } from \"vite\";\n\ninterface MmorpgBuildPluginOptions {\n rpgType: string;\n serverEntry: string;\n adapterEntries?: Record<string, string>;\n}\n\nfunction isBareImport(id: string): boolean {\n return !id.startsWith(\".\") && !id.startsWith(\"/\") && !id.startsWith(\"\\0\");\n}\n\nfunction resolveEntry(root: string, entry: string): string {\n return resolve(root, entry);\n}\n\nfunction collectServerEntries(\n root: string,\n serverEntry: string,\n adapterEntries: Record<string, string>,\n): Record<string, string> {\n const entries: Record<string, string> = {};\n const resolvedServerEntry = resolveEntry(root, serverEntry);\n\n if (!existsSync(resolvedServerEntry)) {\n throw new Error(`[rpgjs:mmorpg-build] Missing server entry: ${serverEntry}`);\n }\n\n entries.server = resolvedServerEntry;\n\n for (const [name, entry] of Object.entries(adapterEntries)) {\n const resolvedAdapterEntry = resolveEntry(root, entry);\n if (!existsSync(resolvedAdapterEntry)) {\n throw new Error(`[rpgjs:mmorpg-build] Missing adapter entry \"${name}\": ${entry}`);\n }\n entries[name] = resolvedAdapterEntry;\n }\n\n return entries;\n}\n\nexport function mmorpgBuildPlugin({\n rpgType,\n serverEntry,\n adapterEntries = {},\n}: MmorpgBuildPluginOptions): Plugin {\n let config: ResolvedConfig;\n let didBuildServer = false;\n let didCleanDist = false;\n\n return {\n name: \"rpgjs:mmorpg-build\",\n apply: \"build\",\n enforce: \"post\",\n config(_, env) {\n if (env.command !== \"build\" || rpgType !== \"mmorpg\") {\n return;\n }\n\n return {\n build: {\n outDir: \"dist/client\",\n },\n };\n },\n configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n buildStart() {\n if (rpgType !== \"mmorpg\" || didCleanDist) {\n return;\n }\n didCleanDist = true;\n rmSync(resolve(config.root, \"dist\"), { recursive: true, force: true });\n },\n async closeBundle() {\n if (rpgType !== \"mmorpg\" || didBuildServer) {\n return;\n }\n didBuildServer = true;\n\n const entries = collectServerEntries(config.root, serverEntry, adapterEntries);\n console.log(\n `[rpgjs:mmorpg-build] Building server bundle(s): ${Object.keys(entries).join(\", \")}`,\n );\n\n await viteBuild({\n configFile: false,\n root: config.root,\n define: config.define,\n resolve: {\n alias: config.resolve.alias,\n dedupe: config.resolve.dedupe,\n extensions: config.resolve.extensions,\n mainFields: config.resolve.mainFields,\n conditions: config.resolve.conditions,\n },\n publicDir: false,\n build: {\n emptyOutDir: true,\n minify: false,\n outDir: \"dist/server\",\n sourcemap: config.build.sourcemap,\n target: \"node18\",\n lib: {\n entry: entries,\n formats: [\"es\"],\n },\n rollupOptions: {\n external(id) {\n return isBareImport(id);\n },\n output: {\n entryFileNames: \"[name].js\",\n },\n },\n },\n });\n },\n };\n}\n","import canvasengine from \"@canvasengine/compiler\";\nimport { replaceConfigImport } from \"./replace-config-import\";\nimport { serverPlugin } from \"./server-plugin\";\nimport { entryPointPlugin } from \"./entry-point-plugin\";\nimport { mmorpgBuildPlugin } from \"./mmorpg-build-plugin\";\n\ntype MmorpgEntryPoints =\n | string\n | {\n client?: string;\n server?: string;\n adapters?: Record<string, string>;\n };\n\ninterface RpgjsPluginOptions {\n server: any;\n entryPoints?: {\n rpg?: string;\n mmorpg?: MmorpgEntryPoints;\n };\n}\n\nfunction normalizeMmorpgEntryPoints(entryPoints?: MmorpgEntryPoints) {\n if (!entryPoints || typeof entryPoints === \"string\") {\n return {\n client: entryPoints ?? \"./src/client.ts\",\n server: \"./src/server.ts\",\n adapters: {},\n };\n }\n\n return {\n client: entryPoints.client ?? \"./src/client.ts\",\n server: entryPoints.server ?? \"./src/server.ts\",\n adapters: entryPoints.adapters ?? {},\n };\n}\n\nexport function rpgjs({\n server,\n entryPoints\n}: RpgjsPluginOptions) {\n const mmorpgEntryPoints = normalizeMmorpgEntryPoints(entryPoints?.mmorpg);\n\n return [\n canvasengine(),\n replaceConfigImport(),\n serverPlugin(server),\n mmorpgBuildPlugin({\n rpgType: process.env.RPG_TYPE || \"rpg\",\n serverEntry: mmorpgEntryPoints.server,\n adapterEntries: mmorpgEntryPoints.adapters,\n }),\n entryPointPlugin({\n entryPoints: {\n rpg: entryPoints?.rpg ?? './src/standalone.ts',\n mmorpg: mmorpgEntryPoints.client,\n }\n })\n ]\n}\n"],"names":["existsSync","toString","isObject","walk.ancestor","walk.simple","readEnvVariable","viteBuild"],"mappings":"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AE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC;;AAEnrC;AACA,IAAI,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;;AAExtE;AACA,IAAI,uBAAuB,GAAG,wmFAAwmF;;AAEtoF;AACA,IAAI,4BAA4B,GAAG,spIAAspI;;AAEzrI;AACA;AACA;AACA;;AAEA;;AAEA,IAAI,aAAa,GAAG;AACpB,EAAE,CAAC,EAAE,qNAAqN;AAC1N,EAAE,CAAC,EAAE,8CAA8C;AACnD,EAAE,CAAC,EAAE,MAAM;AACX,EAAE,MAAM,EAAE,wEAAwE;AAClF,EAAE,UAAU,EAAE;AACd,CAAC;;AAED;;AAEA,IAAI,oBAAoB,GAAG,6KAA6K;;AAExM,IAAI,UAAU,GAAG;AACjB,EAAE,CAAC,EAAE,oBAAoB;AACzB,EAAE,SAAS,EAAE,oBAAoB,GAAG,gBAAgB;AACpD,EAAE,CAAC,EAAE,oBAAoB,GAAG;AAC5B,CAAC;;AAED,IAAI,yBAAyB,GAAG,iBAAiB;;AAEjD;;AAEA,IAAI,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,GAAG,CAAC;AAClF,IAAI,kBAAkB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,4BAA4B,GAAG,uBAAuB,GAAG,GAAG,CAAC;;AAEvG;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE;AAClC,EAAE,IAAI,GAAG,GAAG,OAAO;AACnB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1C,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACjB,IAAI,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC;AACnC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC;AACnC,EAAE;AACF,EAAE,OAAO;AACT;;AAEA;;AAEA,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AACzC,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC;AACtC,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC;AAC/B,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC;AACtC,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,IAAI,IAAI,IAAI,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,EAAE,IAAI,MAAM,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC;AACvC,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,0BAA0B;AACvD;;AAEA;;AAEA,SAAS,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE;AACxC,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC;AACtC,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC;AAC/B,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,KAAK,CAAC;AAChC,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC;AAC/B,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC;AACtC,EAAE,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,IAAI,IAAI,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,EAAE,IAAI,MAAM,KAAK,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC;AACvC,EAAE,OAAO,aAAa,CAAC,IAAI,EAAE,0BAA0B,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,qBAAqB;AACrG;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,SAAS,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;AAChD,EAAE,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;;AAElC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC7B,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU;AACrC,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU;AACrC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ;AACjC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM;AAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO;AAC/B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI;AACjC,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI;AAC3B,CAAC;;AAED,SAAS,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;AAC3B,EAAE,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;AAC5D;AACA,IAAI,UAAU,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;;AAEpE;;AAEA,IAAI,QAAQ,GAAG,EAAE;;AAEjB;AACA,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE;AAC3B,EAAE,KAAK,OAAO,KAAK,MAAM,GAAG,OAAO,GAAG,EAAE;;AAExC,EAAE,OAAO,CAAC,OAAO,GAAG,IAAI;AACxB,EAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO;AACrD;;AAEA,IAAI,OAAO,GAAG;AACd,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;AACvC,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC7C,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC7C,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;AACzC,EAAE,SAAS,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC;AACnD,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;;AAE3B;AACA,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACpE,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC;AAC9B,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAClE,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC;AAC5B,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAClE,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC;AAC5B,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AACvC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AACtC,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AACvC,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC;AACzB,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAC1C,EAAE,WAAW,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC;AAClC,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;AACxC,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC;AACrC,EAAE,eAAe,EAAE,IAAI,SAAS,CAAC,iBAAiB,CAAC;AACnD,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;AAC5C,EAAE,SAAS,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAC3C,EAAE,YAAY,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,EAAE,EAAE,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5D,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjE,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACjF,EAAE,MAAM,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAClF,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3B,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3B,EAAE,QAAQ,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;AACrC,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACnC,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACjC,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC7F,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;AACxB,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;AACtB,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;AACvB,EAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACnD,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;;AAE1B;AACA,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;AACrB,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;AACrB,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC;AAC3B,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC;AAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AACrC,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACjD,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC;AACzB,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjC,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;AACvC,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;AACf,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;AACnC,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC;AACvB,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AACjC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC;AACjB,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC;AACjB,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;AACrB,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC;AACnB,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACvD,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AACjC,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AACjC,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;AACrC,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC;AACvB,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;AACnC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;AACjC,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,EAAE,WAAW,EAAE,EAAE,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AAC3E,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACvE,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;AAC1E,CAAC;;AAED;AACA;;AAEA,IAAI,SAAS,GAAG,wBAAwB;AACxC,IAAI,UAAU,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;;AAElD,SAAS,SAAS,CAAC,IAAI,EAAE;AACzB,EAAE,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK;AACnE;;AAEA,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;AACxC,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM;;AAEzC,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AACnC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC;AACvB,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3F,EAAE;AACF,EAAE,OAAO;AACT;;AAEA,IAAI,kBAAkB,GAAG,+CAA+C;;AAExE,IAAI,cAAc,GAAG,+BAA+B;;AAEpD,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS;AAC1B,IAAI,cAAc,GAAG,GAAG,CAAC,cAAc;AACvC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE3B,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,GAAG,EAAE,QAAQ,EAAE,EAAE;AAC1D,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ;AACnC,EAAE,CAAC,CAAC,CAAC;;AAEL,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,UAAU,GAAG,EAAE,EAAE;AACjD,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACzB,EAAE,CAAC,CAAC,CAAC;;AAEL,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAErC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AACzG;;AAEA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC;AACA,EAAE,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACzD,EAAE,IAAI,IAAI,OAAO;AACjB,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,MAAM;AAC1E;;AAEA,IAAI,aAAa,GAAG,8EAA8E;;AAElG;AACA;;AAEA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;AAC5C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG;AACnB,CAAC;;AAED,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;AAChD,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;AAChD,CAAC;;AAED,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;AAC5D,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG;AAChB,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE;AACpC,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI;AAChC,IAAI,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;AACrD,IAAI,IAAI,SAAS,GAAG,CAAC,EAAE,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;AACjE,IAAI,EAAE,IAAI;AACV,IAAI,GAAG,GAAG,SAAS;AACnB,EAAE;AACF;;AAEA;AACA;;AAEA,IAAI,cAAc,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,IAAI;AACnB;AACA;AACA;AACA,EAAE,UAAU,EAAE,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,IAAI;AAC3B;AACA;AACA,EAAE,eAAe,EAAE,IAAI;AACvB;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,IAAI;AACrB;AACA;AACA,EAAE,0BAA0B,EAAE,KAAK;AACnC;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,KAAK;AACpC;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,IAAI;AACjC;AACA;AACA,EAAE,uBAAuB,EAAE,IAAI;AAC/B;AACA;AACA;AACA,EAAE,aAAa,EAAE,KAAK;AACtB;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,IAAI;AAC1B;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,IAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,EAAE,KAAK;AACf;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,IAAI;AACf;AACA;AACA,EAAE,UAAU,EAAE,IAAI;AAClB;AACA;AACA,EAAE,gBAAgB,EAAE,IAAI;AACxB;AACA;AACA,EAAE,cAAc,EAAE;AAClB,CAAC;;AAED;;AAEA,IAAI,sBAAsB,GAAG,KAAK;;AAElC,SAAS,UAAU,CAAC,IAAI,EAAE;AAC1B,EAAE,IAAI,OAAO,GAAG,EAAE;;AAElB,EAAE,KAAK,IAAI,GAAG,IAAI,cAAc;AAChC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;;AAElF,EAAE,IAAI,OAAO,CAAC,WAAW,KAAK,QAAQ,EAAE;AACxC,IAAI,OAAO,CAAC,WAAW,GAAG,GAAG;AAC7B,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE;AAC1C,IAAI,IAAI,CAAC,sBAAsB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;AAChF,MAAM,sBAAsB,GAAG,IAAI;AACnC,MAAM,OAAO,CAAC,IAAI,CAAC,oHAAoH,CAAC;AACxI,IAAI;AACJ,IAAI,OAAO,CAAC,WAAW,GAAG,EAAE;AAC5B,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE;AAC1C,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI;AAC/B,EAAE;;AAEF,EAAE,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI;AACnC,IAAI,EAAE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;;AAEvD,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI;AACzC,IAAI,EAAE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;;AAEzD,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAChC,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO;AAChC,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAChC,IAAI,EAAE,OAAO,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;;AAEnE,EAAE,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,yBAAyB;AAC5E,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;;AAExF,EAAE,OAAO;AACT;;AAEA,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;AACrC,EAAE,OAAO,SAAS,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC7D,IAAI,IAAI,OAAO,GAAG;AAClB,MAAM,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM;AACpC,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,GAAG,EAAE;AACX,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,SAAS;AACzB,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE,IAAI,IAAI,OAAO,CAAC,MAAM;AACtB,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACtC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACvB,EAAE;AACF;;AAEA;AACA;AACA,IAAI,SAAS,GAAG,CAAC;AACjB,IAAI,cAAc,GAAG,CAAC;AACtB,IAAI,WAAW,GAAG,CAAC;AACnB,IAAI,eAAe,GAAG,CAAC;AACvB,IAAI,WAAW,GAAG,EAAE;AACpB,IAAI,kBAAkB,GAAG,EAAE;AAC3B,IAAI,WAAW,GAAG,EAAE;AACpB,IAAI,kBAAkB,GAAG,GAAG;AAC5B,IAAI,wBAAwB,GAAG,GAAG;AAClC,IAAI,sBAAsB,GAAG,GAAG;AAChC,IAAI,YAAY,GAAG,IAAI;AACvB,IAAI,SAAS,GAAG,SAAS,GAAG,cAAc,GAAG,wBAAwB;;AAErE,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACzC,EAAE,OAAO,cAAc,IAAI,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,IAAI,SAAS,GAAG,eAAe,GAAG,CAAC;AACtF;;AAEA;AACA;AACA,IAAI,SAAS,GAAG,CAAC;AACjB,IAAI,QAAQ,GAAG,CAAC;AAChB,IAAI,YAAY,GAAG,CAAC;AACpB,IAAI,aAAa,GAAG,CAAC;AACrB,IAAI,iBAAiB,GAAG,CAAC;AACzB,IAAI,YAAY,GAAG,CAAC,CAAC;;AAErB,IAAI,MAAM,GAAG,SAAS,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;AACvD,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;AAC9C,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;AACtC,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,KAAK,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AACzH,EAAE,IAAI,QAAQ,GAAG,EAAE;AACnB,EAAE,IAAI,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE;AACtC,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9F,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC;AACjE,EAAE;AACF,EAAE,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC;AAC5C,EAAE,IAAI,cAAc,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,IAAI,aAAa,CAAC,MAAM;AAC9E,EAAE,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,cAAc,CAAC;AACxD,EAAE,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAC,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC;AAC7F,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE5B;AACA;AACA;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;;AAE1B;;AAEA;AACA,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,IAAI,CAAC,GAAG,GAAG,QAAQ;AACvB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACnE,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM;AAC9E,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;AACjC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;AACpB,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG;AACzB;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;AACnB;AACA,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AAClC;AACA;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;;AAElD;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI;AAClD,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG;;AAEhD;AACA;AACA;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;;AAEzB;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,KAAK,QAAQ;AACjD,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE/D;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC5B,EAAE,IAAI,CAAC,wBAAwB,GAAG,KAAK;;AAEvC;AACA,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC;AACxD;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE;AAClB;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAE7C;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI;AAChF,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;;AAE/B;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE;AACtB,EAAE,IAAI,CAAC,UAAU;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK;AAChC;AACA,QAAQ;AACR,QAAQ;AACR,GAAG;;AAEH;AACA,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;;AAEzB;AACA;AACA;AACA,EAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE;AAC5B,CAAC;;AAED,IAAI,kBAAkB,GAAG,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;;AAExb,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,IAAI;AAC3C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AACrD,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI;AAChC,CAAC;;AAED,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,cAAc,IAAI,CAAC,CAAC,CAAC;;AAE9G,kBAAkB,CAAC,WAAW,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC;;AAEhH,kBAAkB,CAAC,OAAO,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC;;AAExG,kBAAkB,CAAC,QAAQ,CAAC,GAAG,GAAG,YAAY;AAC9C,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AAC3B,IAAI,IAAI,KAAK,IAAI,wBAAwB,GAAG,sBAAsB,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AACpF,IAAI,IAAI,KAAK,GAAG,cAAc,EAAE,EAAE,OAAO,CAAC,KAAK,GAAG,WAAW,IAAI,CAAC,CAAC;AACnE,EAAE;AACF,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC;AAC3E,CAAC;;AAED,kBAAkB,CAAC,WAAW,CAAC,GAAG,GAAG,YAAY;AACjD,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,IAAI,CAAC;AACrC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,0BAA0B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC;AACzG,EAAE,OAAO;AACT,CAAC;;AAED,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY;AAChD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnC,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AACzB,EAAE,OAAO,CAAC,KAAK,GAAG,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;AACnD,CAAC;;AAED,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,GAAG,kBAAkB,IAAI,CAAC,CAAC,CAAC;;AAEzH,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;;AAExH,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,GAAG,YAAY;AACvD,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAChC,MAAM,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AAC3B,IAAI,IAAI,KAAK,IAAI,wBAAwB,GAAG,sBAAsB,CAAC;AACnE,SAAS,CAAC,KAAK,GAAG,cAAc,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC5E,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,kBAAkB,CAAC,UAAU,CAAC,GAAG,GAAG,YAAY;AAChD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;AAC/B,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AACzB,EAAE,IAAI,KAAK,GAAG,YAAY,EAAE,EAAE,OAAO,KAAK,CAAC;AAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,SAAS,EAAE,EAAE,OAAO,KAAK,CAAC;AAC1D,EAAE,OAAO;AACT,CAAC;;AAED,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,GAAG,YAAY;AACxD,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,wBAAwB,IAAI;AACrE,CAAC;;AAED,MAAM,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AACnC,IAAI,IAAI,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM;AAC5C,IAAI,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,EAAE;;AAErD,EAAE,IAAI,GAAG,GAAG,IAAI;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,OAAO;AACT,CAAC;;AAED,MAAM,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;AAC/C,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK;AACvC,CAAC;;AAED,MAAM,CAAC,iBAAiB,GAAG,SAAS,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE;AAC5E,EAAE,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC;AAC5C,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,EAAE,OAAO,MAAM,CAAC,eAAe;AAC/B,CAAC;;AAED,MAAM,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;AACvD,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK;AAChC,CAAC;;AAED,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE;;AAE/D,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B;;AAEA,IAAI,OAAO,GAAG,oDAAoD;AAClE,IAAI,CAAC,eAAe,GAAG,SAAS,KAAK,EAAE;AACvC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AACnD,EAAE,SAAS;AACX;AACA,IAAI,cAAc,CAAC,SAAS,GAAG,KAAK;AACpC,IAAI,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AACtD,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC;AAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE;AACjD,MAAM,cAAc,CAAC,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;AACxD,MAAM,IAAI,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM;AACrG,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACvC,MAAM,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;AACzC,SAAS,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;AAClG,IAAI;AACJ,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;;AAE5B;AACA,IAAI,cAAc,CAAC,SAAS,GAAG,KAAK;AACpC,IAAI,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AACtD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG;AACjC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACjB,EAAE;AACF,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;AAC1B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AAC1B,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,OAAO;AACX,EAAE,CAAC,MAAM;AACT,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED;;AAEA,IAAI,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE;AACnC,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;AACpE,CAAC;;AAED;;AAEA,IAAI,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AAC/C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACvC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACtD,CAAC;;AAED;;AAEA,IAAI,CAAC,kBAAkB,GAAG,WAAW;AACrC,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG;AAClC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;AAChC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;AAChE,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACjC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB;AACxC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/E,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,SAAS,GAAG,WAAW;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/E,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,OAAO,EAAE,OAAO,EAAE;AACrD,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AAC7B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe;AACpC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/E,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACrB,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;AAC7B,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AACrC,CAAC;;AAED;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;AAChC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAChE,CAAC;;AAED,IAAI,mBAAmB,GAAG,SAAS,mBAAmB,GAAG;AACzD,EAAE,IAAI,CAAC,eAAe;AACtB,EAAE,IAAI,CAAC,aAAa;AACpB,EAAE,IAAI,CAAC,mBAAmB;AAC1B,EAAE,IAAI,CAAC,iBAAiB;AACxB,EAAE,IAAI,CAAC,WAAW;AAClB,IAAI,EAAE;AACN,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,sBAAsB,EAAE,QAAQ,EAAE;AACrE,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,CAAC;AACxC,EAAE,IAAI,sBAAsB,CAAC,aAAa,GAAG,EAAE;AAC/C,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,aAAa,EAAE,+CAA+C,CAAC,CAAC,CAAC;AACpH,EAAE,IAAI,MAAM,GAAG,QAAQ,GAAG,sBAAsB,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,iBAAiB;AAC/G,EAAE,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,qBAAqB,GAAG,uBAAuB,CAAC,CAAC,CAAC;AAChH,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,SAAS,sBAAsB,EAAE,QAAQ,EAAE;AACxE,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,OAAO,KAAK,CAAC;AAC9C,EAAE,IAAI,eAAe,GAAG,sBAAsB,CAAC,eAAe;AAC9D,EAAE,IAAI,WAAW,GAAG,sBAAsB,CAAC,WAAW;AACtD,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,eAAe,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC;AACnE,EAAE,IAAI,eAAe,IAAI,CAAC;AAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,yEAAyE,CAAC,CAAC,CAAC;AAC9G,EAAE,IAAI,WAAW,IAAI,CAAC;AACtB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC,CAAC;AAChF,CAAC;;AAED,IAAI,CAAC,8BAA8B,GAAG,WAAW;AACjD,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACxE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,IAAI,CAAC,QAAQ;AACnB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,4CAA4C,CAAC,CAAC,CAAC;AAC/E,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,SAAS,IAAI,EAAE;AAC3C,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB;AAC7C,IAAI,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxD,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK;AACrD,CAAC;;AAED,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B;;AAEA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;AACpC,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACpC,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE;AACpC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AACvD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,QAAQ;AACnB,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACxF,MAAM;AACN,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE1B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,GAAG,kBAAkB,EAAE;AAC1G,MAAM,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU;AAC/F,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS;AACxC,CAAC;;AAED,IAAI,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;;AAE9D,IAAI,CAAC,KAAK,GAAG,SAAS,OAAO,EAAE;AAC/B,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AAChF,EAAE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACrC,EAAE,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC1E;AACA;AACA;AACA;AACA,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;AACrD,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,KAAK,CAAC;;AAE9B,EAAE,IAAI,MAAM,KAAK,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC;AACrC,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE;AACjC,IAAI,IAAI,KAAK,GAAG,IAAI;AACpB,IAAI,GAAG,EAAE,IAAI,IAAI,MAAM,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,WAAW,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC/D,IAAI,IAAI,MAAM,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC;AACrC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7C,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC9D,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AACjE,IAAI,EAAE,OAAO,KAAK,CAAC;;AAEnB,EAAE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACrC,EAAE,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK;AAC7C,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,UAAU;AACnD,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;AACnC,KAAK,EAAE,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,WAAW;AACzF,CAAC;;AAED,IAAI,CAAC,cAAc,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE;AACpD,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAC3F,IAAI,EAAE,OAAO,KAAK,CAAC;;AAEnB,EAAE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACrC,EAAE,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;;AAEtC,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;;AAEvE,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,WAAW,GAAG,IAAI,GAAG,CAAC,cAAc,KAAK;AACjD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,OAAO;AACvD,MAAM,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;AACvC,MAAM,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAChE,MAAM,KAAK,KAAK,EAAE;AAClB,MAAM,EAAE,OAAO,KAAK,CAAC;;AAErB,IAAI,cAAc,CAAC,SAAS,GAAG,WAAW;AAC1C,IAAI,IAAI,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACxD,IAAI,IAAI,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM;AACjD,IAAI,IAAI,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AAC9F,EAAE;;AAEF,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACpC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,KAAK,CAAC;AACpE,EAAE,IAAI,OAAO,GAAG,IAAI;AACpB,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,SAAS,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzD,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC;AAC/B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;AAC1C,EAAE,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC;AACjF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,YAAY,GAAG,SAAS,KAAK,EAAE;AACpC,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK;AACxC,CAAC;;AAED,IAAI,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;AAC/B,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK;AACzC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,cAAc,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC3D,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI;;AAE1D,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3B,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI;AAC5B,IAAI,IAAI,GAAG,KAAK;AAChB,EAAE;;AAEF;AACA;AACA;;AAEA,EAAE,QAAQ,SAAS;AACnB,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO;AAC9G,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI;AACjE,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI;AACrD,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI;AACvD,EAAE,KAAK,OAAO,CAAC,SAAS;AACxB;AACA;AACA;AACA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrI,IAAI,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO;AAC5D,EAAE,KAAK,OAAO,CAAC,MAAM;AACrB,IAAI,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI;AACrC,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI;AACrD,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI;AAC7D,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI;AAC7D,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI;AAC3D,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI;AACvD,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI;AACxC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK;AAC7B,IAAI,IAAI,OAAO,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxD,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI;AAC5C,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI;AAC3D,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI;AACzD,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI;AACxD,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI;AACzD,EAAE,KAAK,OAAO,CAAC,OAAO;AACtB,EAAE,KAAK,OAAO,CAAC,OAAO;AACtB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,EAAE;AACxE,MAAM,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACzC,MAAM,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAChF,MAAM,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE;AACxC,QAAQ,EAAE,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC7E,IAAI;;AAEJ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE;AACnD,MAAM,IAAI,CAAC,QAAQ;AACnB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,wDAAwD,CAAC,CAAC,CAAC;AAC5F,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;AACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,iEAAiE,CAAC,CAAC,CAAC;AACrG,IAAI;AACJ,IAAI,OAAO,SAAS,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO;;AAElG;AACA;AACA;AACA;AACA;AACA,EAAE;AACF,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAChC,MAAM,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxC,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO;AAC7D,IAAI;;AAEJ,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI;AACnG,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,6GAA6G,CAAC;AAC7I,MAAM;AACN,MAAM,IAAI,SAAS,KAAK,aAAa,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,qDAAqD,CAAC;AACvF,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,EAAE;AACnB,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;AAC3C,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB;AACxD,IAAI;;AAEJ,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AAC7D,IAAI,IAAI,SAAS,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3F,MAAM,EAAE,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1E,SAAS,EAAE,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5D;AACA,CAAC;;AAED,IAAI,CAAC,2BAA2B,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;AAC3D,EAAE,IAAI,OAAO,GAAG,OAAO,KAAK,OAAO;AACnC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAC7E,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5D,OAAO;AACP,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,EAAE;;AAEF;AACA;AACA,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC5D,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;AACxE,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,EAAE,KAAK,CAAC;AACzC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;AACpF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,mBAAmB;AAC/E,CAAC;;AAED,IAAI,CAAC,sBAAsB,GAAG,SAAS,IAAI,EAAE;AAC7C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB;AAClD,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACvC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AACnC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B;AACA,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB;AACjD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE;AACxC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE;AACxH,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAClC,IAAI,IAAI,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;AACnC,EAAE;AACF,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE;AAC3E,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK;AACpE,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;AACrC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC;AAClD,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO;AACvD,EAAE;AACF,EAAE,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK;;AAE/D,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI;AAC/F,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,SAAS,KAAK,aAAa,EAAE;AACrC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,qDAAqD,CAAC;AACrF,MAAM;AACN,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,qBAAqB,CAAC;AAClD,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO;AACvD,EAAE;AACF,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,EAAE,IAAI,sBAAsB,GAAG,IAAI,mBAAmB;AACtD,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK;AAC1B,EAAE,IAAI,IAAI,GAAG,OAAO,GAAG;AACvB,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO;AAC9D,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,sBAAsB,CAAC;AACxD,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AACzG,IAAI,IAAI,OAAO,GAAG,EAAE,EAAE;AACtB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI;AACvB,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACzD,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9H,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACpE,IAAI;AACJ,IAAI,IAAI,aAAa,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,+DAA+D,CAAC,CAAC,CAAC;AAC7H,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC;AAC1D,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC/B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI;AACrC,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAC5D,EAAE;AACF,EAAE,IAAI,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;AACjC,CAAC;;AAED;AACA,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACnI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACvC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE;AACrC,QAAQ,IAAI,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AAC1C,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI;AACrC,EAAE;AACF,EAAE,IAAI,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI;AACjC,CAAC;;AAED,IAAI,CAAC,sBAAsB,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE;AAC3E,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,IAAI,mBAAmB,GAAG,CAAC,GAAG,sBAAsB,CAAC,EAAE,KAAK,EAAE,OAAO;AACrH,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACvC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC;AACA,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC7C,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;AAC7E,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa;AAC5C,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,SAAS,IAAI,EAAE;AAC3C,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AACvB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,IAAI,EAAE;;AAEb;AACA;AACA;;AAEA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAChF,OAAO,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACnE,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,SAAS,IAAI,EAAE;AAC3C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACjD,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE;AACjB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/B,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;;AAE/B;AACA;AACA;;AAEA,EAAE,IAAI,GAAG;AACT,EAAE,KAAK,IAAI,UAAU,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG;AAC9D,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;AACvE,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK;AAC9C,MAAM,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AACrD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7C,MAAM,GAAG,CAAC,UAAU,GAAG,EAAE;AACzB,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACzC,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,UAAU,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAChG,QAAQ,UAAU,GAAG,IAAI;AACzB,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI;AACvB,MAAM;AACN,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrC,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACpD,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AACjD,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACd,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,EAAE;AAC1C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC,CAAC,CAAC;AAClE,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB;AAC/C,CAAC;;AAED;;AAEA,IAAI,OAAO,GAAG,EAAE;;AAEhB,IAAI,CAAC,qBAAqB,GAAG,WAAW;AACxC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY;AAC1C,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,kBAAkB,GAAG,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,YAAY,CAAC;AACzE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;;AAE7B,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE;AACxC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI;AACrB,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACpC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,MAAM,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACjD,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9D,MAAM,MAAM,CAAC,KAAK,GAAG,IAAI;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACxB,IAAI;AACJ,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC;AACzD,EAAE;AACF,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;AACxE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;AACtC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC,CAAC;AACjE,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc;AAC7C,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,uBAAuB,EAAE;AACvE,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,CAAC;AAC3D,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB;AACpD,CAAC;;AAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,EAAE;AAC1C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACzC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC1C,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB;AAC/C,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,IAAI,EAAE;AACzC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC3C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACzC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe;AAC9C,CAAC;;AAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,EAAE;AAC1C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB;AAC/C,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,SAAS,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AACtE,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;;AAEzB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;AAChC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,uBAAuB,CAAC;AAC/E,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,GAAG,QAAQ,GAAG,IAAI;AACxF,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,IAAI,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,EAAE;AAC/C;AACA,MAAM,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK;AACzC,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI;AACzB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AACnB,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7E,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpH,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;AACnB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB;AACjD,CAAC;;AAED,IAAI,CAAC,wBAAwB,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AACrD,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI;AACxB,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB;AACpD,CAAC;;AAED;AACA;AACA;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,qBAAqB,EAAE,IAAI,EAAE,UAAU,EAAE;AACpE,EAAE,KAAK,qBAAqB,KAAK,MAAM,GAAG,qBAAqB,GAAG,IAAI;AACtE,EAAE,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;;AAEhD,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;AAChB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,qBAAqB,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACvC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,EAAE;AACF,EAAE,IAAI,UAAU,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACzC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,qBAAqB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AACjD,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB;AAC/C,CAAC;;AAED;AACA;AACA;;AAEA,IAAI,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AACrC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACxE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5E,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACxC,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc;AAC7C,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AACvC,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG;AACzC,EAAE,IAAI,CAAC,IAAI,EAAE;;AAEb,EAAE;AACF,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB;AACvC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI;AACrC;AACA,MAAM,CAAC,OAAO;AACd,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;AAClC,MAAM,IAAI,CAAC,MAAM;AACjB,MAAM,IAAI,CAAC,IAAI,KAAK,KAAK;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK;AACvC;AACA,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK;AACd,MAAM,IAAI,CAAC,KAAK;AAChB,OAAO,CAAC,OAAO,GAAG,QAAQ,GAAG,QAAQ,IAAI,wDAAwD;AACjG,KAAK;AACL,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACzE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACxC,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,gBAAgB;AAC5E,CAAC;;AAED;;AAEA,IAAI,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE;AACrE,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE;AACxB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,SAAS;AACX,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC9B,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,IAAI,IAAI,KAAK,OAAO,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3J,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,aAAa,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACpL,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,yBAAyB,GAAG,IAAI,GAAG,cAAc,EAAE;AACtF,IAAI,CAAC,MAAM,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAChJ,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,0DAA0D,CAAC;AAC7F,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI;AACtB,IAAI;AACJ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC;AAC1C,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AACvC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK;AACzC,MAAM,IAAI,CAAC,UAAU;AACrB,MAAM,IAAI,CAAC,gBAAgB,EAAE;;AAE7B,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,KAAK,KAAK,GAAG,QAAQ,GAAG,YAAY,EAAE,KAAK,CAAC;AACjF,CAAC;;AAED,IAAI,cAAc,GAAG,CAAC,EAAE,sBAAsB,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC;;AAExE;AACA;;AAEA;AACA,IAAI,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE;AACtF,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAClF,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,sBAAsB,CAAC;AAC1E,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AACnC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;;AAE9B,EAAE,IAAI,SAAS,GAAG,cAAc,EAAE;AAClC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,gBAAgB,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AACrG,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,sBAAsB,CAAC;AACxD;AACA;AACA;AACA;AACA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC;AAC3J,EAAE;;AAEF,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa;AACrG,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC;AACxB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;;AAE5D,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc,CAAC;AACnC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;;AAEvE,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAChC,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC;;AAEnE,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC7B,EAAE,IAAI,CAAC,aAAa,GAAG,gBAAgB;AACvC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,cAAc,IAAI,qBAAqB,GAAG,oBAAoB;AAC1G,CAAC;;AAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,EAAE;AAC1C,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;AAC3F,EAAE,IAAI,CAAC,8BAA8B,EAAE;AACvC,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE;AAC9C,EAAE,IAAI,CAAC,IAAI,EAAE;;AAEb;AACA;AACA,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI;;AAEpB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC;AACtC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC5B,EAAE,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,EAAE,IAAI,cAAc,GAAG,KAAK;AAC5B,EAAE,SAAS,CAAC,IAAI,GAAG,EAAE;AACrB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACvC,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;AAClE,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;AACjF,QAAQ,IAAI,cAAc,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC,CAAC;AAC/G,QAAQ,cAAc,GAAG,IAAI;AAC7B,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,mBAAmB,IAAI,uBAAuB,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;AAC9H,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,6BAA6B,EAAE;AACxH,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS;AACzB,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC;AACrD,EAAE,IAAI,CAAC,aAAa,EAAE;AACtB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,GAAG,iBAAiB;AACnF,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,sBAAsB,EAAE;AAC1D,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;;AAE5C,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAC5C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,OAAO,GAAG,EAAE;AAClB,EAAE,IAAI,WAAW,GAAG,KAAK;AACzB,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,IAAI,IAAI,GAAG,QAAQ;AACrB,EAAE,IAAI,QAAQ,GAAG,KAAK;;AAEtB,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;AACpC;AACA,IAAI,IAAI,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACvD,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACtC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AACtE,MAAM,QAAQ,GAAG,IAAI;AACrB,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,GAAG,QAAQ;AACxB,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ;AACxB,EAAE,IAAI,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACnE,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACtG,MAAM,OAAO,GAAG,IAAI;AACpB,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,GAAG,OAAO;AACvB,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5E,IAAI,WAAW,GAAG,IAAI;AACtB,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;AAC5C,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK;AAC9B,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAChE,MAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;AAC1C,QAAQ,IAAI,GAAG,SAAS;AACxB,MAAM,CAAC,MAAM;AACb,QAAQ,OAAO,GAAG,SAAS;AAC3B,MAAM;AACN,IAAI;AACJ,EAAE;;AAEF;AACA,EAAE,IAAI,OAAO,EAAE;AACf;AACA;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;AACxE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO;AAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;AAC3C,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;AACpC,EAAE;;AAEF;AACA,EAAE,IAAI,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,WAAW,IAAI,OAAO,EAAE;AACvG,IAAI,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC;AACzE,IAAI,IAAI,iBAAiB,GAAG,aAAa,IAAI,sBAAsB;AACnE;AACA,IAAI,IAAI,aAAa,IAAI,IAAI,KAAK,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC,CAAC;AACrH,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,GAAG,aAAa,GAAG,IAAI;AACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC;AACxE,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC9B,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,uBAAuB,GAAG,WAAW;AAC1C,EAAE;AACF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;AAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS;AACnC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG;AAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;AAChC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ;AAClC,IAAI,IAAI,CAAC,IAAI,CAAC;AACd;AACA,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,SAAS,OAAO,EAAE;AAC/C,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE;AACvC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,EAAE;AACtC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,oDAAoD,CAAC;AAClF,IAAI;AACJ,IAAI,OAAO,CAAC,QAAQ,GAAG,KAAK;AAC5B,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC1C,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACnC,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAClF;AACA,EAAE,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG;AACtB,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;AACrC,IAAI,IAAI,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC,CAAC;AAClF,IAAI,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC,CAAC;AAClF,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE;AACjE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,wDAAwD,CAAC;AACnF,EAAE;;AAEF;AACA,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC;;AAEtF;AACA,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AACxD,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;AAC1E,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AACxD,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC,CAAC;AAClF,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa;AACrE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC;;AAErF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,kBAAkB;AACnD,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,SAAS,KAAK,EAAE;AACvC,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;AAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,gDAAgD,CAAC;AACjF,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE;AAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,qDAAqD,CAAC;AACtF,EAAE;;AAEF,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAC5B;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,sBAAsB,GAAG,WAAW,CAAC;AACzD,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACzC,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI;AACtB,EAAE;AACF,EAAE,IAAI,CAAC,SAAS,EAAE;;AAElB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,oBAAoB;AACpD,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,SAAS,IAAI,EAAE;AAC5C,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;;AAEhB,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,UAAU,CAAC,wBAAwB,GAAG,WAAW,CAAC;AACzD,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACvC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS;;AAEzB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa;AAC5C,CAAC;;AAED,IAAI,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE;AAChD,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAClC,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,IAAI,IAAI,WAAW;AACnB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,WAAW,KAAK,IAAI;AAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI;AAClB,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE;AACtC,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI;AAC7F,CAAC;;AAED,IAAI,CAAC,cAAc,GAAG,WAAW;AACjC,EAAE,IAAI,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACzD,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACrC,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;;AAED,IAAI,CAAC,aAAa,GAAG,WAAW;AAChC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;AACvC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC7B,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI;AACrB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC;AACjD,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;AACxC,EAAE,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,CAAC;AAChE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACpC,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,GAAG,kBAAkB,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,0CAA0C,EAAE;AACtH,MAAM;AACN,IAAI;AACJ,EAAE;AACF,CAAC;;AAED,SAAS,uBAAuB,CAAC,cAAc,EAAE,OAAO,EAAE;AAC1D,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI;AAC7B,EAAE,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;;AAEjC,EAAE,IAAI,IAAI,GAAG,MAAM;AACnB,EAAE,IAAI,OAAO,CAAC,IAAI,KAAK,kBAAkB,KAAK,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AACjG,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI;AACtD,EAAE;;AAEF;AACA,EAAE;AACF,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM;AACtC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM;AACtC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM;AACtC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK;AAChC,IAAI;AACJ,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM;AACjC,IAAI,OAAO;AACX,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;AACpB,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;AAC/B,IAAI,OAAO;AACX,EAAE,CAAC,MAAM;AACT,IAAI,OAAO;AACX,EAAE;AACF;;AAEA,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE;AAClC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,EAAE,OAAO,CAAC,QAAQ;AAClB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;AAClD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK;AAC5C;AACA;;AAEA;;AAEA,IAAI,CAAC,yBAAyB,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;AACzD,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;AACtC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAClC,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAClD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;AACjE,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC1B,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC/B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACzD,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACpC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB;AACrD,CAAC;;AAED,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;AAC3C,EAAE,IAAI,CAAC,IAAI,EAAE;AACb;AACA,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9B,IAAI,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,OAAO;AACvD,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAClC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AAC3D,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,6BAA6B,EAAE;AAC3D,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,0BAA0B;AAC3D,EAAE;AACF;AACA,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;AACzC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACxD,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,qBAAqB;AACvD,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1E;AACA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE;AACxB,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;AACtB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACtC,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;AAC9B,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI;AAC3B,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACzD,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACpC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC7D,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACxC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACxC,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACpD,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACvE;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE1B,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC;AACA,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEzC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC3C,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,wEAAwE,CAAC;AAChH,QAAQ;AACR,MAAM;;AAEN,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI;AACxB,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACxC,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;AAChC,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,wBAAwB;AACvD,CAAC;;AAED,IAAI,CAAC,sBAAsB,GAAG,SAAS,IAAI,EAAE;AAC7C,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI;AACjC,CAAC;;AAED,IAAI,CAAC,6BAA6B,GAAG,WAAW;AAChD,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;AAC7E,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChC,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,EAAE,KAAK,EAAE,OAAO;AACtF,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AAC3C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY;AAC9C,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,WAAW,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;AAChD,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;AACzB,EAAE,IAAI,OAAO,IAAI,KAAK,QAAQ;AAC9B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,YAAY,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;AAC3B,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACrE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;AACtB,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE;AACjD,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI;AACrB,EAAE,IAAI,IAAI,KAAK,YAAY;AAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,OAAO,IAAI,IAAI,KAAK,eAAe;AACnC,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACpE,MAAM;AACN,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE1B,QAAQ,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9C,MAAM,CAAC,CAAC;AACR,OAAO,IAAI,IAAI,KAAK,cAAc;AAClC,IAAI,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAC9E,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;;AAE3B,QAAQ,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,IAAI,CAAC,CAAC;AACN,OAAO,IAAI,IAAI,KAAK,UAAU;AAC9B,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,OAAO,IAAI,IAAI,KAAK,mBAAmB;AACvC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,OAAO,IAAI,IAAI,KAAK,aAAa;AACjC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtD,CAAC;;AAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;AACpD,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC;AACzB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACvD,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AAC7C,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,0BAA0B,GAAG,WAAW;AAC7C,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK;AACpC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;AACjC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO;AACjC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU;AACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,IAAI,IAAI,CAAC,eAAe;AACxB,CAAC;;AAED;;AAEA,IAAI,CAAC,oBAAoB,GAAG,SAAS,OAAO,EAAE;AAC9C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;;AAE3C,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,KAAK;AACtF,EAAE,IAAI,CAAC,WAAW;AAClB,IAAI,OAAO;AACX,IAAI,IAAI,CAAC,QAAQ;AACjB,IAAI,IAAI,CAAC,QAAQ,CAAC;AAClB,GAAG;;AAEH,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,SAAS,OAAO,EAAE;AAC/C,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AAC9B;AACA,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;AAC3D,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;;AAE5B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAClD,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;AAClC,EAAE,IAAI,CAAC,IAAI,EAAE;;AAEb;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACpC,IAAI,IAAI,CAAC,UAAU,GAAG,OAAO;AAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAClD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACjC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AACzF,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACpC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB;AAClD,CAAC;;AAED;;AAEA,IAAI,CAAC,oBAAoB,GAAG,WAAW;AACvC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;;AAE9C,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAChC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC9B,EAAE;AACF,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;;AAEhD,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,2BAA2B,GAAG,WAAW;AAC9C;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;AAChD,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,wBAAwB;AACvD,CAAC;;AAED,IAAI,CAAC,6BAA6B,GAAG,WAAW;AAChD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;AAChD,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,0BAA0B;AACzD,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,WAAW;AACxC,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AAC9B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAClC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAClD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AACjD,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAClC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACpD,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;AAC3D,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;;AAE5B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC3C,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,EAAE,IAAI,KAAK,GAAG,EAAE;AAChB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,aAAa,GAAG,EAAE;AACxB,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;AAC3D,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;;AAE5B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC1C,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK;AACjF,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;AACtC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5F,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;AACjC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,WAAW;AACvC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC;AAC1H,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC5B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACpC,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,EAAE;AACF,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AACnC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,WAAW;AACxC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACtE,IAAI,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACrD,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AACjD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,iDAAiD,CAAC;AACxF,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;AAC7B,CAAC;;AAED;AACA,IAAI,CAAC,sBAAsB,GAAG,SAAS,UAAU,EAAE;AACnD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1F,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACvE,EAAE;AACF,CAAC;AACD,IAAI,CAAC,oBAAoB,GAAG,SAAS,SAAS,EAAE;AAChD,EAAE;AACF,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AACjC,IAAI,SAAS,CAAC,IAAI,KAAK,qBAAqB;AAC5C,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;AAC3C,IAAI,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,KAAK,QAAQ;AAClD;AACA,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAChF;AACA,CAAC;;AAED,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B;AACA;;AAEA,IAAI,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,SAAS,EAAE,sBAAsB,EAAE;AACtE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,EAAE;AAC7C,IAAI,QAAQ,IAAI,CAAC,IAAI;AACrB,IAAI,KAAK,YAAY;AACrB,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;AAC/C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,2DAA2D,CAAC,CAAC,CAAC;AAC/F,MAAM;;AAEN,IAAI,KAAK,eAAe;AACxB,IAAI,KAAK,cAAc;AACvB,IAAI,KAAK,mBAAmB;AAC5B,IAAI,KAAK,aAAa;AACtB,MAAM;;AAEN,IAAI,KAAK,kBAAkB;AAC3B,MAAM,IAAI,CAAC,IAAI,GAAG,eAAe;AACjC,MAAM,IAAI,sBAAsB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3F,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACvE,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE1B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,UAAU,IAAI,CAAC,IAAI,KAAK,aAAa;AACrC,WAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe;AAC1F,UAAU;AACV,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;AAC7D,QAAQ;AACR,MAAM;AACN,MAAM;;AAEN,IAAI,KAAK,UAAU;AACnB;AACA,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,+CAA+C,CAAC,CAAC,CAAC;AAC/G,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;AAC9C,MAAM;;AAEN,IAAI,KAAK,iBAAiB;AAC1B,MAAM,IAAI,CAAC,IAAI,GAAG,cAAc;AAChC,MAAM,IAAI,sBAAsB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3F,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACrD,MAAM;;AAEN,IAAI,KAAK,eAAe;AACxB,MAAM,IAAI,CAAC,IAAI,GAAG,aAAa;AAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACjD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB;AACpD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC,CAAC;AACxF,MAAM;;AAEN,IAAI,KAAK,sBAAsB;AAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,6DAA6D,CAAC,CAAC,CAAC;AAC7H,MAAM,IAAI,CAAC,IAAI,GAAG,mBAAmB;AACrC,MAAM,OAAO,IAAI,CAAC,QAAQ;AAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAC7C,MAAM;;AAEN,IAAI,KAAK,yBAAyB;AAClC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,sBAAsB,CAAC;AAC3E,MAAM;;AAEN,IAAI,KAAK,iBAAiB;AAC1B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,mDAAmD,CAAC;AAC5F,MAAM;;AAEN,IAAI,KAAK,kBAAkB;AAC3B,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC;;AAE9B,IAAI;AACJ,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC;AACnD;AACA,EAAE,CAAC,MAAM,IAAI,sBAAsB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9F,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,gBAAgB,GAAG,SAAS,QAAQ,EAAE,SAAS,EAAE;AACtD,EAAE,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AAClD,EAAE;AACF,EAAE,IAAI,GAAG,EAAE;AACX,IAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;AAChC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;AACjI,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,WAAW,GAAG,SAAS,sBAAsB,EAAE;AACpD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC;AACtE,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe;AAC9C,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,WAAW;AACnC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;;AAEb;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;AAClE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;AAEzB,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;;AAEzC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa;AAC5C,CAAC;;AAED;;AAEA,IAAI,CAAC,gBAAgB,GAAG,WAAW;AACnC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACrC,IAAI,QAAQ,IAAI,CAAC,IAAI;AACrB,IAAI,KAAK,OAAO,CAAC,QAAQ;AACzB,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;AACzE,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc;;AAEjD,IAAI,KAAK,OAAO,CAAC,MAAM;AACvB,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC/B;AACA,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,UAAU;AACxB,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE;AACxF,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AAC7B,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3B,IAAI,IAAI,KAAK,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;AAChC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;AACnD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,IAAI,CAAC,MAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACrE,MAAM;AACN,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;AAC/C,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACrC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,+CAA+C,CAAC,CAAC,CAAC;AAC7H,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACxB,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAC7D,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,uBAAuB,GAAG,SAAS,cAAc,EAAE;AACxD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC9D,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACjC,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,iBAAiB,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5D,EAAE,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACxC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC3E,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACjD,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACtC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;AACjE,EAAE,KAAK,WAAW,KAAK,MAAM,GAAG,WAAW,GAAG,SAAS;;AAEvD,EAAE,IAAI,MAAM,GAAG,WAAW,KAAK,SAAS;;AAExC,EAAE,QAAQ,IAAI,CAAC,IAAI;AACnB,EAAE,KAAK,YAAY;AACnB,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,UAAU,GAAG,eAAe,IAAI,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACpH,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,WAAW,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;AAC7D,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC,CAAC;AAC5F,MAAM,IAAI,YAAY,EAAE;AACxB,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC;AAC3C,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC;AACtE,QAAQ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACtC,MAAM;AACN,MAAM,IAAI,WAAW,KAAK,YAAY,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAChG,IAAI;AACJ,IAAI;;AAEJ,EAAE,KAAK,iBAAiB;AACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,mDAAmD,CAAC;AAC1F,IAAI;;AAEJ,EAAE,KAAK,kBAAkB;AACzB,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC;AAClF,IAAI;;AAEJ,EAAE,KAAK,yBAAyB;AAChC,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC,CAAC;AACzF,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY;;AAE1E,EAAE;AACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,cAAc,IAAI,SAAS,CAAC;AAC7E;AACA,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;AAClE,EAAE,KAAK,WAAW,KAAK,MAAM,GAAG,WAAW,GAAG,SAAS;;AAEvD,EAAE,QAAQ,IAAI,CAAC,IAAI;AACnB,EAAE,KAAK,eAAe;AACtB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACrE,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAExB,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;AAC/D,IAAI;AACJ,IAAI;;AAEJ,EAAE,KAAK,cAAc;AACrB,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAC7E,MAAM,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;;AAE5B,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7E,IAAI;AACJ,IAAI;;AAEJ,EAAE;AACF,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;AACzD;AACA,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;AACvE,EAAE,KAAK,WAAW,KAAK,MAAM,GAAG,WAAW,GAAG,SAAS;;AAEvD,EAAE,QAAQ,IAAI,CAAC,IAAI;AACnB,EAAE,KAAK,UAAU;AACjB;AACA,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC;AACrE,IAAI;;AAEJ,EAAE,KAAK,mBAAmB;AAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;AAC/D,IAAI;;AAEJ,EAAE,KAAK,aAAa;AACpB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC;AACnE,IAAI;;AAEJ,EAAE;AACF,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC;AAC1D;AACA,CAAC;;AAED;AACA;AACA;;;AAGA,IAAI,UAAU,GAAG,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE;AACxF,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;AACxB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa;AACtC,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC1B,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;AAC9B,CAAC;;AAED,IAAI,KAAK,GAAG;AACZ,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACpC,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;AACnC,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;AACrC,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC;AACpC,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;AACnC,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5F,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;AAC3C,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;AAC1C,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;AACjE,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;AAC5D,CAAC;;AAED,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B,IAAI,CAAC,cAAc,GAAG,WAAW;AACjC,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM;AACtB,CAAC;;AAED,IAAI,CAAC,UAAU,GAAG,WAAW;AAC7B,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AAC7C,CAAC;;AAED,IAAI,CAAC,YAAY,GAAG,SAAS,QAAQ,EAAE;AACvC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,EAAE,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;AACxD,IAAI,EAAE,OAAO,IAAI,CAAC;AAClB,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,KAAK,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;AACxF,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;;AAE5B;AACA;AACA;AACA,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW;AACnF,IAAI,EAAE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,QAAQ,KAAK,OAAO,CAAC,GAAG,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM,IAAI,QAAQ,KAAK,OAAO,CAAC,KAAK;AACtJ,IAAI,EAAE,OAAO,IAAI,CAAC;AAClB,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM;AACjC,IAAI,EAAE,OAAO,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;AACrC,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI;AAC3F,IAAI,EAAE,OAAO,KAAK,CAAC;AACnB,EAAE,OAAO,CAAC,IAAI,CAAC;AACf,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,WAAW;AACrC,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU;AACpC,MAAM,EAAE,OAAO,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;AACxC,EAAE,IAAI,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI;AAC9B,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC,GAAG;AAC9C,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAChC,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa;AACtC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnC;AACA,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC;;AAED;;AAEA,IAAI,CAAC,eAAe,GAAG,SAAS,QAAQ,EAAE;AAC1C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,EAAE;AACtC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ;AACpD,EAAE;AACF,CAAC;;AAED;;AAEA,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW;AACzE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI;AAC3B,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC9B,EAAE,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE;AACtE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC5B,EAAE;AACF,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,MAAM;AAChC,CAAC;;AAED,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;AAClD,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC9E,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,CAAC;;AAED,OAAO,CAAC,YAAY,CAAC,aAAa,GAAG,WAAW;AAChD,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACjC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,CAAC;;AAED,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;AAClD,EAAE,IAAI,eAAe,GAAG,QAAQ,KAAK,OAAO,CAAC,GAAG,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,QAAQ,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM;AAC1I,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAClE,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,CAAC;;AAED,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,WAAW;AAC1C;AACA,CAAC;;AAED,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;AACpF,EAAE,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,KAAK,OAAO,CAAC,KAAK;AACvD,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC;AACxE,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtG,MAAM,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC;AAC1G,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC;AACA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;AAC1B,CAAC;;AAED,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW;AACzC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK,UAAU,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,CAAC;;AAED,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW;AAC7C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,CAAC,MAAM;AACxC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1B;AACA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;AAC1B,CAAC;;AAED,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;AAChD,EAAE,IAAI,QAAQ,KAAK,OAAO,CAAC,SAAS,EAAE;AACtC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM;AAC5C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AAChD;AACA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3C,EAAE;AACF,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,CAAC;;AAED,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,QAAQ,EAAE;AAChD,EAAE,IAAI,OAAO,GAAG,KAAK;AACrB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC,GAAG,EAAE;AACjE,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW;AAChD,QAAQ,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3D,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;AACxB,EAAE;AACF,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO;AAC5B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B;AACA;AACA;AACA;;AAEA,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE;AACvE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;AACpE,IAAI,EAAE,MAAM,CAAC;AACb,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;AACvF,IAAI,EAAE,MAAM,CAAC;AACb,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,EAAE,IAAI,IAAI;AACV,EAAE,QAAQ,GAAG,CAAC,IAAI;AAClB,EAAE,KAAK,YAAY,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,EAAE,KAAK,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,EAAE,SAAS;AACX;AACA,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACrC,IAAI,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,EAAE;AACjD,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,sBAAsB,EAAE;AACpC,UAAU,IAAI,sBAAsB,CAAC,WAAW,GAAG,CAAC,EAAE;AACtD,YAAY,sBAAsB,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK;AAC1D,UAAU;AACV,QAAQ,CAAC,MAAM;AACf,UAAU,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,oCAAoC,CAAC;AAChF,QAAQ;AACR,MAAM;AACN,MAAM,QAAQ,CAAC,KAAK,GAAG,IAAI;AAC3B,IAAI;AACJ,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI;AACnB,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC5B,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,IAAI,YAAY;AACpB,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;AACxE,IAAI,CAAC,MAAM;AACX,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;AAC9C,IAAI;AACJ,IAAI,IAAI,YAAY;AACpB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG;AAC7B,MAAM,IAAI,EAAE,KAAK;AACjB,MAAM,GAAG,EAAE,KAAK;AAChB,MAAM,GAAG,EAAE;AACX,KAAK;AACL,EAAE;AACF,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI;AACpB,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,eAAe,GAAG,SAAS,OAAO,EAAE,sBAAsB,EAAE;AACjE,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC;AACnE,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;AACnC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC;AAC7B,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACrH,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,oBAAoB;AACrD,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,gBAAgB,GAAG,SAAS,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE;AAClF,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5D;AACA;AACA,SAAS,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AACrC,EAAE;;AAEF,EAAE,IAAI,sBAAsB,GAAG,KAAK,EAAE,cAAc,GAAG,EAAE,EAAE,gBAAgB,GAAG,EAAE,EAAE,cAAc,GAAG,EAAE;AACrG,EAAE,IAAI,sBAAsB,EAAE;AAC9B,IAAI,cAAc,GAAG,sBAAsB,CAAC,mBAAmB;AAC/D,IAAI,gBAAgB,GAAG,sBAAsB,CAAC,aAAa;AAC3D,IAAI,cAAc,GAAG,sBAAsB,CAAC,WAAW;AACvD,IAAI,sBAAsB,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,aAAa,GAAG,EAAE;AAC1F,EAAE,CAAC,MAAM;AACT,IAAI,sBAAsB,GAAG,IAAI,mBAAmB;AACpD,IAAI,sBAAsB,GAAG,IAAI;AACjC,EAAE;;AAEF,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrD,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAClE,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK;AACtC,IAAI,IAAI,CAAC,wBAAwB,GAAG,OAAO,KAAK,OAAO;AACvD,EAAE;AACF,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,CAAC;AACxE,EAAE,IAAI,cAAc,EAAE,EAAE,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpF,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;AAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;AAChC,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACjC,MAAM,sBAAsB,CAAC,mBAAmB,GAAG,sBAAsB,CAAC,aAAa,GAAG,sBAAsB,CAAC,WAAW,GAAG,EAAE;AACjI,IAAI;AACJ,IAAI,IAAI,sBAAsB,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK;AAC5D,MAAM,EAAE,sBAAsB,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;AACtD,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;AAChC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC;AACA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC/C,IAAI,IAAI,cAAc,GAAG,EAAE,EAAE,EAAE,sBAAsB,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;AACpF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,sBAAsB;AACvD,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,sBAAsB,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5F,EAAE;AACF,EAAE,IAAI,cAAc,GAAG,EAAE,EAAE,EAAE,sBAAsB,CAAC,mBAAmB,GAAG,cAAc,CAAC,CAAC;AAC1F,EAAE,IAAI,gBAAgB,GAAG,EAAE,EAAE,EAAE,sBAAsB,CAAC,aAAa,GAAG,gBAAgB,CAAC,CAAC;AACxF,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,qBAAqB,GAAG,SAAS,OAAO,EAAE,sBAAsB,EAAE;AACvE,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,sBAAsB,CAAC;AAC/D,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AACxE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAClC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;AACpB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,uBAAuB;AACxD,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,YAAY,GAAG,SAAS,OAAO,EAAE,sBAAsB,EAAE;AAC9D,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;AAChF,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AACxE,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO;AAC3I,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE;AAChF,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;AAC5B,EAAE,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE;AAC/D,IAAI,IAAI,IAAI,GAAG,OAAO,EAAE;AACxB,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU;AACvF,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ;AACnD,MAAM,IAAI,QAAQ,EAAE;AACpB;AACA;AACA,QAAQ,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK;AACvC,MAAM;AACN,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK;AACzB,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACzD,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC;AACxH,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,QAAQ,CAAC;AACnG,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,MAAM,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9I,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,0FAA0F,CAAC;AACrI,MAAM;AACN,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO;AAChF,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,WAAW,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE;AAC1E,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,+DAA+D,CAAC,CAAC,CAAC;AACtI,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACjD,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,mBAAmB,GAAG,kBAAkB;AACjF,CAAC;;AAED;;AAEA,IAAI,CAAC,eAAe,GAAG,SAAS,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACnF,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI;AAC3D,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AACnC,IAAI,QAAQ,GAAG,IAAI;AACnB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;AACtE,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;AAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;AACtB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;AACrE,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAC5D,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvD,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9F,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,wCAAwC,CAAC,CAAC,CAAC;AACrF,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9E,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC,CAAC;AAChF,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;AAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AACjF,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE;AAC3D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACjH,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACnC;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxD,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC;AACpE,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC;AAC1E,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC5D,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACvD,MAAM,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;AAClC,MAAM,MAAM,CAAC,MAAM,GAAG,KAAK;AAC3B,MAAM,MAAM,CAAC,QAAQ,GAAG,IAAI;AAC5B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAChC,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC;AACxD,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC7C,IAAI,IAAI,QAAQ;AAChB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5C;AACA,MAAM,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1H,EAAE,CAAC,MAAM;AACT,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED,SAAS,qBAAqB,CAAC,IAAI,EAAE;AACrC,EAAE;AACF,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;AAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU;AACpF;AACA;;AAEA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,EAAE;AACF,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB;AAClF,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,oBAAoB,CAAC,IAAI,CAAC,UAAU;AACnF;AACA;;AAEA;;AAEA,IAAI,CAAC,mBAAmB,GAAG,SAAS,sBAAsB,EAAE,OAAO,EAAE;AACrE,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,OAAO,CAAC;AAChE,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG;AAC7G,IAAI,EAAE,OAAO,IAAI,CAAC;AAClB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;AAC7E,EAAE,IAAI,sBAAsB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACpE,IAAI,IAAI,sBAAsB,CAAC,mBAAmB,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,sBAAsB,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;AACvH,IAAI,IAAI,sBAAsB,CAAC,iBAAiB,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,sBAAsB,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;AACnH,IAAI,IAAI,sBAAsB,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,sBAAsB,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;AAC3G,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;AAC5E,EAAE,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;AAC5G,MAAM,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC;AAC/F,MAAM,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,KAAK;AAC1C,EAAE,IAAI,eAAe,GAAG,KAAK;;AAE7B,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC;;AAEnH,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC;AACpD,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,yBAAyB,EAAE;AACxE,MAAM,IAAI,eAAe,EAAE;AAC3B,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5D,QAAQ,SAAS,CAAC,UAAU,GAAG,OAAO;AACtC,QAAQ,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,iBAAiB,CAAC;AAC/D,MAAM;AACN,MAAM,OAAO;AACb,IAAI;;AAEJ,IAAI,IAAI,GAAG,OAAO;AAClB,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,qBAAqB,GAAG,WAAW;AACxC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AAC7D,CAAC;;AAED,IAAI,CAAC,wBAAwB,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;AAChF,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO;AAChG,CAAC;;AAED,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE;AAC7G,EAAE,IAAI,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACxD,EAAE,IAAI,QAAQ,GAAG,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;AACnE,EAAE,IAAI,OAAO,IAAI,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,kEAAkE,CAAC,CAAC,CAAC;;AAEhI,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3C,EAAE,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC1H,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;AACtB,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AACzE,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE;AAC9C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO,CAAC;AAC7E,IAAI;AACJ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;AAC9B,IAAI,IAAI,iBAAiB,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC9B,IAAI;AACJ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC;AACpD,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnD,IAAI,IAAI,sBAAsB,GAAG,IAAI,mBAAmB,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa;AACzJ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;AACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;AACrB,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;AAC1B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,CAAC;AACnH,IAAI,IAAI,eAAe,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AACtE,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5D,MAAM,IAAI,CAAC,8BAA8B,EAAE;AAC3C,MAAM,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;AAChC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,2DAA2D,CAAC,CAAC,CAAC;AACvG,MAAM,IAAI,CAAC,QAAQ,GAAG,WAAW;AACjC,MAAM,IAAI,CAAC,QAAQ,GAAG,WAAW;AACjC,MAAM,IAAI,CAAC,aAAa,GAAG,gBAAgB;AAC3C,MAAM,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;AAChF,IAAI;AACJ,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAC5D,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ;AAChD,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ;AAChD,IAAI,IAAI,CAAC,aAAa,GAAG,gBAAgB,IAAI,IAAI,CAAC,aAAa;AAC/D,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACrD,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;AACxB,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ;AAC/B,IAAI,IAAI,iBAAiB,EAAE;AAC3B,MAAM,MAAM,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC;AACpD,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE;AAC9C,IAAI,IAAI,QAAQ,IAAI,eAAe,EAAE;AACrC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,2EAA2E,CAAC;AACzG,IAAI;AACJ,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACrD,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI;AACrB,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,0BAA0B,CAAC;AAC9D,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;;AAEA,IAAI,CAAC,aAAa,GAAG,SAAS,sBAAsB,EAAE,OAAO,EAAE,MAAM,EAAE;AACvE;AACA;AACA,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;AAExD,EAAE,IAAI,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,KAAK;AAC7D,EAAE,QAAQ,IAAI,CAAC,IAAI;AACnB,EAAE,KAAK,OAAO,CAAC,MAAM;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;AACxB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC,CAAC;AACpE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB;AAC9D,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,gDAAgD,CAAC,CAAC,CAAC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;AACnG,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO;;AAExC,EAAE,KAAK,OAAO,CAAC,KAAK;AACpB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB;;AAEjD,EAAE,KAAK,OAAO,CAAC,IAAI;AACnB,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,WAAW;AACvF,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC3I,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;AACxC,MAAM,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO;AAC7F,IAAI;AACJ,IAAI,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAClD,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACjC,QAAQ,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACvG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW;AAC5G,WAAW,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE;AACvF,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACjE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/B,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO;AAClG,MAAM;AACN,IAAI;AACJ,IAAI,OAAO;;AAEX,EAAE,KAAK,OAAO,CAAC,MAAM;AACrB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;AAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;AAC7D,IAAI,OAAO;;AAEX,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM;AACvC,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK;;AAEvC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM;AAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK;AACjF,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;AAChC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS;;AAE1C,EAAE,KAAK,OAAO,CAAC,MAAM;AACrB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,kCAAkC,CAAC,UAAU,EAAE,OAAO,CAAC;AAC/F,IAAI,IAAI,sBAAsB,EAAE;AAChC,MAAM,IAAI,sBAAsB,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC5F,QAAQ,EAAE,sBAAsB,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AAC9D,MAAM,IAAI,sBAAsB,CAAC,iBAAiB,GAAG,CAAC;AACtD,QAAQ,EAAE,sBAAsB,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;AAC5D,IAAI;AACJ,IAAI,OAAO;;AAEX,EAAE,KAAK,OAAO,CAAC,QAAQ;AACvB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC;AAC5F,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;;AAElD,EAAE,KAAK,OAAO,CAAC,MAAM;AACrB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,sBAAsB;;AAEtD,EAAE,KAAK,OAAO,CAAC,SAAS;AACxB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;;AAErC,EAAE,KAAK,OAAO,CAAC,MAAM;AACrB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK;;AAElD,EAAE,KAAK,OAAO,CAAC,IAAI;AACnB,IAAI,OAAO,IAAI,CAAC,QAAQ;;AAExB,EAAE,KAAK,OAAO,CAAC,SAAS;AACxB,IAAI,OAAO,IAAI,CAAC,aAAa;;AAE7B,EAAE,KAAK,OAAO,CAAC,OAAO;AACtB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;AACxC,MAAM,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM;AACxC,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,UAAU;AAC5B,IAAI;;AAEJ,EAAE;AACF,IAAI,OAAO,IAAI,CAAC,oBAAoB;AACpC;AACA,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,WAAW;AACvC,EAAE,IAAI,CAAC,UAAU,EAAE;AACnB,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,SAAS,MAAM,EAAE;AACxC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;;AAE7B;AACA;AACA,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC,CAAC;AAClG,EAAE,IAAI,CAAC,IAAI,EAAE;;AAEb,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;AAC/C,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI;AACvC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE;AACxC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvE,IAAI,IAAI,CAAC,IAAI,GAAG,QAAQ;AACxB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;AACnD,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI;AACpC,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,IAAI,EAAE;AACzC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;AAEd;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE;;AAEvC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;AACtC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpD,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACvC,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACpC,UAAU,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxD,YAAY,IAAI,CAAC,UAAU,EAAE;AAC7B,UAAU;AACV,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI;AACzB,IAAI;AACJ,EAAE,CAAC,MAAM;AACT;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK;AAC/B,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/D,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,2CAA2C,CAAC;AACpF,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACjC,MAAM;AACN,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB;AACjD,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE;AACtC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;AAEd,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;AAEvC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;AACnC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAC,CAAC;AAC9G,EAAE,IAAI,WAAW;AACjB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,mDAAmD,CAAC,CAAC,CAAC;AAC9F,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B;AACvF,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC,CAAC;;AAEtF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc;AAC7C,CAAC;;AAED,IAAI,CAAC,YAAY,GAAG,SAAS,KAAK,EAAE;AACpC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AACnD,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;AACtD,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1G,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS;AACxC,CAAC;;AAED,IAAI,CAAC,oBAAoB,GAAG,WAAW;AACvC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE;AAClC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,QAAQ,EAAE;AAC3C,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB;AACjC,CAAC;;AAED,IAAI,CAAC,kCAAkC,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE;AACxE,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AAC9G,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACrC,IAAI,IAAI,CAAC,IAAI,EAAE;;AAEf,IAAI,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC,QAAQ;AACjE,IAAI,IAAI,QAAQ,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,WAAW,GAAG,KAAK;AACxD,IAAI,IAAI,sBAAsB,GAAG,IAAI,mBAAmB,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW;AAC/H,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;AACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;AACrB;AACA,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AACzC,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACxD,MAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC/E,QAAQ,WAAW,GAAG,IAAI;AAC1B,QAAQ;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;AACjD,QAAQ,WAAW,GAAG,IAAI,CAAC,KAAK;AAChC,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;AACzC,UAAU,IAAI,CAAC,gBAAgB;AAC/B,YAAY,IAAI,CAAC,KAAK;AACtB,YAAY;AACZ,WAAW;AACX,QAAQ;AACR,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAChG,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC,aAAa;AACvE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;;AAE/B,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClF,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,KAAK,CAAC;AAC5D,MAAM,IAAI,CAAC,8BAA8B,EAAE;AAC3C,MAAM,IAAI,CAAC,QAAQ,GAAG,WAAW;AACjC,MAAM,IAAI,CAAC,QAAQ,GAAG,WAAW;AACjC,MAAM,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO;AAC3E,IAAI;;AAEJ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,WAAW,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/E,IAAI,IAAI,WAAW,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAC5D,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ;AAChD,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ;;AAEhD,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,aAAa,CAAC;AAC1D,MAAM,GAAG,CAAC,WAAW,GAAG,QAAQ;AAChC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,CAAC;AAC5E,IAAI,CAAC,MAAM;AACX,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AACvB,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACrC,EAAE;;AAEF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AACnC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAClD,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG;AACxB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,yBAAyB;AACzD,EAAE,CAAC,MAAM;AACT,IAAI,OAAO;AACX,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,EAAE;AACrC,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,mBAAmB,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC3E,EAAE,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO;AACjG,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,IAAI,KAAK,GAAG,EAAE;;AAEd,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC3B,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC,CAAC;AAC/F,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE;AAClE,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvE,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK;AACrB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;AACtC,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACzC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;AACvC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,sDAAsD,CAAC,CAAC,CAAC;AAC5G,IAAI,IAAI,WAAW;AACnB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC,CAAC;AAC/F,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB;AAC/B,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,mEAAmE,CAAC,CAAC,CAAC;AAChH,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc;AAC/C,EAAE;AACF,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ;AACrD,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5G,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7H,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;AACjC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe;AAC9C,CAAC;;AAED;;AAEA,IAAI,CAAC,oBAAoB,GAAG,SAAS,GAAG,EAAE;AAC1C,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,eAAe,EAAE;AAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,kDAAkD,CAAC;AAC3F,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,MAAM,MAAM,EAAE;AACd,KAAK;AACL,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,GAAG;AACjB,MAAM,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzE,MAAM,MAAM,EAAE,IAAI,CAAC;AACnB,KAAK;AACL,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS;AAC7C,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,aAAa,GAAG,SAAS,GAAG,EAAE;AACnC,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG,KAAK;;AAE1E,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE;AACvB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;AACxB,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;AACvB,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9E,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;AAClC,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO;AACtF,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACrN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC;AACjE,CAAC;;AAED;;AAEA,IAAI,CAAC,QAAQ,GAAG,SAAS,SAAS,EAAE,sBAAsB,EAAE;AAC5D,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,GAAG,EAAE;AAC1D,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE;AACtB,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACpC,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;AAC5F,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;;AAE5B,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,sBAAsB,CAAC;AACpE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACnF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,eAAe,GAAG,kBAAkB;AAC/E,CAAC;;AAED,IAAI,CAAC,aAAa,GAAG,SAAS,SAAS,EAAE,sBAAsB,EAAE;AACjE,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;AACvE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACnE,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC5C,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;AACvC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,+CAA+C,CAAC;AAC1F,MAAM;AACN,MAAM,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa;AAChD,IAAI;AACJ;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC;AACxE;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,aAAa,GAAG,CAAC,EAAE;AAC3G,MAAM,sBAAsB,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;AACvD,IAAI;AACJ;AACA,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe;AAChD,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK;AAC1B,IAAI,IAAI,SAAS,IAAI,sBAAsB,EAAE;AAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;AAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,IAAI;AACJ,IAAI,IAAI,CAAC,SAAS;AAClB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,EAAE;AACF,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC7G,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACzE,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChC,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,GAAG,KAAK;AACnB,EAAE;AACF,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,WAAW,CAAC;AACzH,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU;AACzC,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE;AACxC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI;AAC1B,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC9B,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;AAC9C,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE;AAC/C,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAChC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;AAC3B,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;AACtE;AACA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC,CAAC;AAC9E,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa;AAC1E,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAC5F,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,WAAW,EAAE;AACnI,EAAE,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK;AAC7D,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;AAEzB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC;AACrI,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM;AACtB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE;AAC5E,IAAI,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;AACtB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC;AACvD,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM;AACtB,EAAE,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW;AACvC,aAAa,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY;AAC9F,cAAc,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC;AACjE,cAAc,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE;AACxG,IAAI,IAAI,WAAW,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAChC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;AAChG,IAAI,IAAI,WAAW,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;AACxD,MAAM,EAAE,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;AACvC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtF,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,IAAI,sBAAsB,EAAE;AACnE,MAAM,IAAI,sBAAsB,CAAC,eAAe,GAAG,CAAC;AACpD,QAAQ,EAAE,sBAAsB,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtF,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM;AACtB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI;AACzB,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9B,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE;AACxC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACpC,MAAM,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC1B,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnC,MAAM,OAAO,IAAI,CAAC;AAClB,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC3B,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO;AAC7J,CAAC;;AAED;;AAEA,IAAI,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE;AACnC,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI;AAChB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;AACjF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAC3D,CAAC;;AAED;;AAEA,IAAI,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE;AACpE,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa;;AAE9H,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AACnC,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;AACpC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AACnC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;;AAE9B,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC;AACxB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,WAAW,IAAI,gBAAgB,GAAG,kBAAkB,GAAG,CAAC,CAAC,CAAC;;AAErH,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;AAC3F,EAAE,IAAI,CAAC,8BAA8B,EAAE;AACvC,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;;AAElD,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC7B,EAAE,IAAI,CAAC,aAAa,GAAG,gBAAgB;AACvC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,oBAAoB;AACnD,CAAC;;AAED;;AAEA,IAAI,CAAC,oBAAoB,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AACrE,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC,aAAa;;AAErG,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;AAC9D,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;;AAE/D,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACnB,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC;;AAExB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC;AACnD,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;;AAEpD,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC7B,EAAE,IAAI,CAAC,QAAQ,GAAG,WAAW;AAC7B,EAAE,IAAI,CAAC,aAAa,GAAG,gBAAgB;AACvC,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB;AACxD,CAAC;;AAED;;AAEA,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5E,EAAE,IAAI,YAAY,GAAG,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM;AACpE,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK;;AAEhD,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AACjC,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACzF,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;AACjC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAChD;AACA;AACA;AACA,MAAM,IAAI,SAAS,IAAI,SAAS;AAChC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,2EAA2E,CAAC,CAAC,CAAC;AAC1H,IAAI;AACJ;AACA;AACA,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM;AAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;AACpB,IAAI,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;;AAEzC;AACA;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5H;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC/E,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC;AAC1E,IAAI,IAAI,CAAC,UAAU,GAAG,KAAK;AAC3B,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS;AAC3B,EAAE;AACF,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,SAAS,MAAM,EAAE;AAC1C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACxD,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEvB,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,EAAE,OAAO;AAC9C,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO;AACT,CAAC;;AAED;AACA;;AAEA,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,eAAe,EAAE;AACnD,EAAE,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEvB,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,QAAQ,CAAC;AAClF,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,sBAAsB,EAAE;AAC7F,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI;AAC7B,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3B,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAChC,MAAM,IAAI,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC;AACxE,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;;AAE5B,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC;AACtB,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK;AACjD,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;AACpB,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;AAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;AACpD,MAAM,IAAI,sBAAsB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC,aAAa,GAAG,CAAC;AAC3G,QAAQ,EAAE,sBAAsB,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,IAAI,CAAC,MAAM;AACX,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAsB,CAAC;AAChE,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAClB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,SAAS,GAAG,EAAE;AACrC,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK;AACvB,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG;AACnB,EAAE,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI;;AAErB,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,KAAK,OAAO;AAC1C,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC,CAAC;AAC3F,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,OAAO;AACtC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,2DAA2D,CAAC,CAAC,CAAC;AACjG,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,IAAI,KAAK,WAAW;AAC1E,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,mDAAmD,CAAC,CAAC,CAAC;AACzF,EAAE,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,OAAO,CAAC;AAC3E,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,GAAG,IAAI,GAAG,uCAAuC,EAAE,CAAC,CAAC;AAC3F,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,sBAAsB,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;AAChE,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;AAClC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;AAChE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa;AACtE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,OAAO;AACzC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,sDAAsD,CAAC,CAAC,CAAC;AAC9F,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,eAAe,GAAG,IAAI,GAAG,eAAe,EAAE;AAC5E,EAAE;AACF,CAAC;;AAED;AACA;AACA;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;AACpC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAClC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACtB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;AACrC,EAAE,IAAI,CAAC,OAAO,EAAE;AAChB,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC9B,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;AACpD,MAAM,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,cAAc,GAAG,WAAW;AACjC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAClC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;AAC1B,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;;AAEjC;AACA;AACA;AACA;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;AAC1D,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE;AACtG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AACxB,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AAC5B,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,iBAAiB,GAAG,WAAW;AACpC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE;AACvC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;AAC1B,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC;;AAE5C;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACvC,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,0CAA0C,EAAE;AAC7G,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7E,IAAI;AACJ,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;;AAED;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;AAEpD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACxH,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxB,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1C,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAClD,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;AAEpD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;AAClE,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB;AAChD,CAAC;;AAED,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B;AACA;AACA;AACA;AACA;;AAEA,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;AACpC,EAAE,IAAI,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACxC,EAAE,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG;AACrD,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACvB,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU;AACvC,EAAE;AACF,EAAE,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC;AACpC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG;AACvD,EAAE,MAAM;AACR,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK;;AAElC,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC9B,IAAI,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS;AAC/D,EAAE;AACF,CAAC;;AAED,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,KAAK,EAAE;AAClC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB;AACA,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;AACf;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE;AACnB;AACA,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE;AACrB,CAAC;;AAED;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;AAClC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;;AAED,IAAI,CAAC,SAAS,GAAG,WAAW;AAC5B,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;AACvB,CAAC;;AAED;AACA;AACA;AACA,IAAI,CAAC,0BAA0B,GAAG,SAAS,KAAK,EAAE;AAClD,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,GAAG,SAAS;AACrF,CAAC;;AAED,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;AACpD,EAAE,IAAI,UAAU,GAAG,KAAK;AACxB,EAAE,IAAI,WAAW,KAAK,YAAY,EAAE;AACpC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;AACvH,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;AAClD,MAAM,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,MAAM,IAAI,WAAW,KAAK,iBAAiB,EAAE;AAChD,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,EAAE,CAAC,MAAM,IAAI,WAAW,KAAK,aAAa,EAAE;AAC5C,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,mBAAmB;AAChC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD;AACA,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3F,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1D,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AACtH,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;AAC7F,QAAQ,UAAU,GAAG,IAAI;AACzB,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;AACtD,QAAQ,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,MAAM,IAAI,OAAO,CAAC,KAAK,GAAG,SAAS,EAAE,EAAE,KAAK,CAAC;AAC7C,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,UAAU,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,cAAc,GAAG,IAAI,GAAG,6BAA6B,EAAE,CAAC,CAAC;AACzG,CAAC;;AAED,IAAI,CAAC,gBAAgB,GAAG,SAAS,EAAE,EAAE;AACrC;AACA,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;AACxD,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACtD,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;AACvC,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,YAAY,GAAG,WAAW;AAC/B,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AACnD,CAAC;;AAED,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;AACjD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,SAAS,GAAG,sBAAsB,GAAG,wBAAwB,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AACtG,EAAE;AACF,CAAC;;AAED;AACA,IAAI,CAAC,gBAAgB,GAAG,WAAW;AACnC,EAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;AACjD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,SAAS,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;AACrF,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AACrD,EAAE;AACF,CAAC;;AAED,IAAI,IAAI,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;AAC3C,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;AAChB,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG;AAClB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACd,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS;AAC9B,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB;AACrC,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACzD,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;AAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;;AAED;;AAEA,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B,IAAI,CAAC,SAAS,GAAG,WAAW;AAC5B,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ;AACjD,CAAC;;AAED,IAAI,CAAC,WAAW,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE;AACtC,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG;AAChC,CAAC;;AAED;;AAEA,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC5C,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG;AAChB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;AAC5B,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC1B,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;AACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3B,EAAE,OAAO;AACT;;AAEA,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AACvC,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa;AAChF,CAAC;;AAED;;AAEA,IAAI,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AACnD,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG;AACrD,CAAC;;AAED,IAAI,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;AAC/B,EAAE,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AACzD,EAAE,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,0BAA0B,GAAG,6NAA6N;;AAE9P;AACA;AACA;;AAEA;AACA,IAAI,qBAAqB,GAAG,69BAA69B;AACz/B,IAAI,sBAAsB,GAAG,qBAAqB,GAAG,wBAAwB;AAC7E,IAAI,sBAAsB,GAAG,sBAAsB;AACnD,IAAI,sBAAsB,GAAG,sBAAsB,GAAG,iCAAiC;AACvF,IAAI,sBAAsB,GAAG,sBAAsB;AACnD,IAAI,sBAAsB,GAAG,sBAAsB;;AAEnD,IAAI,uBAAuB,GAAG;AAC9B,EAAE,CAAC,EAAE,qBAAqB;AAC1B,EAAE,EAAE,EAAE,sBAAsB;AAC5B,EAAE,EAAE,EAAE,sBAAsB;AAC5B,EAAE,EAAE,EAAE,sBAAsB;AAC5B,EAAE,EAAE,EAAE,sBAAsB;AAC5B,EAAE,EAAE,EAAE;AACN,CAAC;;AAED;AACA,IAAI,+BAA+B,GAAG,+IAA+I;;AAErL,IAAI,gCAAgC,GAAG;AACvC,EAAE,CAAC,EAAE,EAAE;AACP,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE;AACN,CAAC;;AAED;AACA,IAAI,4BAA4B,GAAG,opBAAopB;;AAEvrB;AACA,IAAI,iBAAiB,GAAG,g+DAAg+D;AACx/D,IAAI,kBAAkB,GAAG,iBAAiB,GAAG,iHAAiH;AAC9J,IAAI,kBAAkB,GAAG,kBAAkB,GAAG,wEAAwE;AACtH,IAAI,kBAAkB,GAAG,kBAAkB,GAAG,wEAAwE;AACtH,IAAI,kBAAkB,GAAG,kBAAkB,GAAG,mEAAmE;AACjH,IAAI,kBAAkB,GAAG,kBAAkB,GAAG,GAAG,GAAG,0BAA0B;;AAE9E,IAAI,mBAAmB,GAAG;AAC1B,EAAE,CAAC,EAAE,iBAAiB;AACtB,EAAE,EAAE,EAAE,kBAAkB;AACxB,EAAE,EAAE,EAAE,kBAAkB;AACxB,EAAE,EAAE,EAAE,kBAAkB;AACxB,EAAE,EAAE,EAAE,kBAAkB;AACxB,EAAE,EAAE,EAAE;AACN,CAAC;;AAED,IAAI,IAAI,GAAG,EAAE;AACb,SAAS,gBAAgB,CAAC,WAAW,EAAE;AACvC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG;AAC9B,IAAI,MAAM,EAAE,WAAW,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,4BAA4B,CAAC;AAClG,IAAI,eAAe,EAAE,WAAW,CAAC,gCAAgC,CAAC,WAAW,CAAC,CAAC;AAC/E,IAAI,SAAS,EAAE;AACf,MAAM,gBAAgB,EAAE,WAAW,CAAC,4BAA4B,CAAC;AACjE,MAAM,MAAM,EAAE,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC;AAC1D;AACA,GAAG;AACH,EAAE,CAAC,CAAC,SAAS,CAAC,iBAAiB,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM;;AAEpD,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB;AAC/C,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM;AACrC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,iBAAiB;AACjD;;AAEA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACzE,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE3B,EAAE,gBAAgB,CAAC,WAAW,CAAC;AAC/B;;AAEA,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS;;AAE3B;AACA;AACA,IAAI,QAAQ,GAAG,SAAS,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/C;AACA,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB;AACA,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI;AAC1B,CAAC;;AAED,QAAQ,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,GAAG,EAAE;AAChE;AACA;AACA,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAClD,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AACvD,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;AACpE,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;AACjD,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI;AAC5C,CAAC;;AAED,IAAI,qBAAqB,GAAG,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACnE,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AACxN,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;AACnG,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE;AACjB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAChB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACd,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC;AACvB,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE;AAC3B,EAAE,IAAI,CAAC,2BAA2B,GAAG,KAAK;AAC1C,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC;AAC7B,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC;AAC3B,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,EAAE,IAAI,CAAC,kBAAkB,GAAG,EAAE;AAC9B,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI;AACtB,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AAC/E,EAAE,IAAI,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;AAC7C,EAAE,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;AACzC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC;AACxB,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,EAAE;AAC5B,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,EAAE,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;AAC5D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AAClE,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AAClE,EAAE;AACF,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;AACjE,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,GAAG,+BAA+B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,OAAO,EAAE;AAC/G,CAAC;;AAED;AACA;AACA,qBAAqB,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE;AAC7D,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;AACrB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;AAClB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACd,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC7E,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,SAAS,GAAG;AAC3E,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE;AAC3E,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;AACrB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;AAClB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACd,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI;AAC/B,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3E,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,GAAG,MAAM,EAAE;AAC9D,IAAI,OAAO,CAAC,GAAG;AACf,EAAE;AACF,EAAE,OAAO,CAAC,GAAG;AACb,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE;AACpE,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM;AACjC,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE;AACxE,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;AACzD,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE;AACpE,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7C,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE;AAChE,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;AACnC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACxB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,qBAAqB,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE;AAC3E,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAE3C,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACvD,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEpB,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;AACxC,IAAI,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,EAAE;AAC1C,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;AACrC,EAAE;AACF,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG;AAChB,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,mBAAmB,GAAG,SAAS,KAAK,EAAE;AAC3C,EAAE,IAAI,UAAU,GAAG,KAAK,CAAC,UAAU;AACnC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK;;AAEzB,EAAE,IAAI,CAAC,GAAG,KAAK;AACf,EAAE,IAAI,CAAC,GAAG,KAAK;;AAEf,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC;AAChE,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;AACzC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,mCAAmC,CAAC;AAClE,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAClC,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAClC,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AAChD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC;AAC9D,EAAE;AACF,CAAC;;AAED,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC;AACnC,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,qBAAqB,GAAG,SAAS,KAAK,EAAE;AAC7C,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;AAE5B;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACpF,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI;AACxB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9B,EAAE;AACF,CAAC;;AAED;AACA,IAAI,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;AACtC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;AACf,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;AACxB,EAAE,KAAK,CAAC,eAAe,GAAG,EAAE;AAC5B,EAAE,KAAK,CAAC,2BAA2B,GAAG,KAAK;AAC3C,EAAE,KAAK,CAAC,kBAAkB,GAAG,CAAC;AAC9B,EAAE,KAAK,CAAC,gBAAgB,GAAG,CAAC;AAC5B,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACxC,EAAE,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;AACrC,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI;;AAEvB,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AAEhC,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AACzC;AACA,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AAClC,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC5D,MAAM,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC;AAC7C,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,kBAAkB,EAAE;AACzD,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACjC,EAAE;AACF,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC5E,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACjC,MAAM,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC;AACrD,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,IAAI,CAAC,kBAAkB,GAAG,SAAS,KAAK,EAAE;AAC1C,EAAE,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACvD,EAAE,IAAI,gBAAgB,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAChC,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAClC,IAAI,IAAI,gBAAgB,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClC,EAAE;AACF,EAAE,IAAI,gBAAgB,EAAE,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;AAElE;AACA,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;AAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;AACpC,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC;AAC3C,EAAE;AACF,CAAC;;AAED;AACA,IAAI,CAAC,kBAAkB,GAAG,SAAS,KAAK,EAAE;AAC1C,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;AACzE,CAAC;;AAED;AACA,IAAI,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;AACtC,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACvC;AACA;AACA;AACA,IAAI,IAAI,KAAK,CAAC,2BAA2B,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;AAC/E;AACA,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,MAAM;AACN,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;AACvF,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACpC,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,mBAAmB,GAAG,SAAS,KAAK,EAAE;AAC3C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,KAAK,CAAC,2BAA2B,GAAG,KAAK;;AAE3C;AACA,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC1D,IAAI,OAAO;AACX,EAAE;;AAEF;AACA,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC5D,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;;AAEF;AACA,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC1D,IAAI,IAAI,UAAU,GAAG,KAAK;AAC1B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACvC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC1C,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC5D,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACpC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACpC,QAAQ,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,MAAM;AACN,MAAM,KAAK,CAAC,2BAA2B,GAAG,CAAC,UAAU;AACrD,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;;AAEF,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK;AACnB,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;AACrD,EAAE,KAAK,OAAO,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK;;AAE3C,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACvD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC3B,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,0BAA0B,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;AAC3D,EAAE;AACF,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC3B,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,OAAO;AAClD;AACA,CAAC;AACD,IAAI,CAAC,0BAA0B,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;AAC3D,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE;AACzB,IAAI,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;AAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY;AAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;AAC1E,QAAQ,GAAG,GAAG,KAAK,CAAC,YAAY;AAChC,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACnC;AACA,QAAQ,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AACjD,UAAU,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC;AAC9D,QAAQ;AACR,QAAQ,OAAO;AACf,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AACnC,MAAM,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;AAC1C,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;AACtC,EAAE;AACF,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;AAC3C,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC3B,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;AAClD,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;AAC1C,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK;AACvC;AACA,CAAC;AACD,IAAI,CAAC,kCAAkC,GAAG,SAAS,KAAK,EAAE;AAC1D,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;AAC1C,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,IAAI,CAAC,0BAA0B,GAAG,SAAS,KAAK,EAAE;AAClD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;AAC1C,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAC1D,QAAQ,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC/C,QAAQ,IAAI,YAAY,IAAI,SAAS,EAAE;AACvC,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,YAAY,IAAI,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;AAC5D,cAAc,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC;AACnE,YAAY;AACZ,UAAU;AACV,UAAU,IAAI,SAAS,EAAE;AACzB,YAAY,IAAI,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACjE,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU;AACvF,cAAc,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC;AACjE,YAAY;AACZ,YAAY,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;AACnE,cAAc,IAAI,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;AAC1D,cAAc;AACd,gBAAgB,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;AACjE,gBAAgB,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;AACnD,gBAAgB;AAChB,gBAAgB,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC;AACrE,cAAc;AACd,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACnC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACrC,UAAU,OAAO;AACjB,QAAQ;AACR,QAAQ,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACzC,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,IAAI,CAAC,wBAAwB,GAAG,SAAS,KAAK,EAAE;AAChD,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACvC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU;AACjD,MAAM,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;AAClC,IAAI;AACJ,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,KAAK,CAAC,kBAAkB,IAAI,CAAC;AACnC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC;AACrC,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD;AACA;AACA;AACA,IAAI,CAAC,mBAAmB,GAAG,SAAS,KAAK,EAAE;AAC3C,EAAE,IAAI,SAAS,GAAG,EAAE;AACpB,EAAE,IAAI,EAAE,GAAG,CAAC;AACZ,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,2BAA2B,CAAC,EAAE,CAAC,EAAE;AAC3E,IAAI,SAAS,IAAI,iBAAiB,CAAC,EAAE,CAAC;AACtC,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD;AACA;AACA,SAAS,2BAA2B,CAAC,EAAE,EAAE;AACzC,EAAE,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI;AAClE;;AAEA;AACA,IAAI,CAAC,sBAAsB,GAAG,SAAS,KAAK,EAAE;AAC9C,EAAE;AACF,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC3B,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC;AAClD,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;AAC1C,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC;AACjD,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK;AACjD;AACA,CAAC;;AAED;AACA,IAAI,CAAC,iCAAiC,GAAG,SAAS,KAAK,EAAE;AACzD,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;AACpD,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;AACpC,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,yBAAyB,GAAG,SAAS,KAAK,EAAE;AACjD,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,SAAS,iBAAiB,CAAC,EAAE,EAAE;AAC/B,EAAE;AACF,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC;AACA;;AAEA;AACA;AACA,IAAI,CAAC,2BAA2B,GAAG,SAAS,KAAK,EAAE;AACnD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,EAAE,GAAG,CAAC;AACZ,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;AAClE,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,GAAG,KAAK;AACvB,CAAC;;AAED;AACA,IAAI,CAAC,kCAAkC,GAAG,SAAS,KAAK,EAAE;AAC1D,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE;AACF,IAAI,EAAE,KAAK,EAAE;AACb,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,SAAS;AAC/C,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI;AACJ,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA,IAAI,CAAC,qBAAqB,GAAG,SAAS,KAAK,EAAE;AAC7C,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1E,IAAI,IAAI,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AACzD,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC;AACvD,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,gBAAgB,EAAE;AAC5B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/D,UAAU,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE7B,UAAU,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClD,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAC3D,QAAQ;AACR,MAAM,CAAC,MAAM;AACb,QAAQ,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC;AACnD,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,gBAAgB,EAAE;AAC1B,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACpF,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,IAAI;AACpD,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA,IAAI,CAAC,mBAAmB,GAAG,SAAS,KAAK,EAAE;AAC3C,EAAE,KAAK,CAAC,eAAe,GAAG,EAAE;AAC5B,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/E,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC;AAC7C,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAI,CAAC,8BAA8B,GAAG,SAAS,KAAK,EAAE;AACtD,EAAE,KAAK,CAAC,eAAe,GAAG,EAAE;AAC5B,EAAE,IAAI,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE;AACnD,IAAI,KAAK,CAAC,eAAe,IAAI,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;AAClE,IAAI,OAAO,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACvD,MAAM,KAAK,CAAC,eAAe,IAAI,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;AACpE,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,+BAA+B,GAAG,SAAS,KAAK,EAAE;AACvD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AAC7C,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAChC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEvB,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,IAAI,CAAC,qCAAqC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACxF,IAAI,EAAE,GAAG,KAAK,CAAC,YAAY;AAC3B,EAAE;AACF,EAAE,IAAI,uBAAuB,CAAC,EAAE,CAAC,EAAE;AACnC,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK;AACnB,EAAE,OAAO;AACT,CAAC;AACD,SAAS,uBAAuB,CAAC,EAAE,EAAE;AACrC,EAAE,OAAO,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,8BAA8B,GAAG,SAAS,KAAK,EAAE;AACtD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE;AAC7C,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAChC,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEvB,EAAE,IAAI,EAAE,KAAK,IAAI,YAAY,IAAI,CAAC,qCAAqC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AACxF,IAAI,EAAE,GAAG,KAAK,CAAC,YAAY;AAC3B,EAAE;AACF,EAAE,IAAI,sBAAsB,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK;AACnB,EAAE,OAAO;AACT,CAAC;AACD,SAAS,sBAAsB,CAAC,EAAE,EAAE;AACpC,EAAE,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,MAAM,iBAAiB,EAAE,KAAK,MAAM;AAChI;;AAEA;AACA,IAAI,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE;AACF,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;AAC9C,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AACzC,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACtD,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU;AAC1C,MAAM,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC;AAC3C,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACjC,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,IAAI,CAAC,uBAAuB,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;AAC3C,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY;AAC9B,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AACvB;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,gBAAgB,EAAE;AACtC,QAAQ,KAAK,CAAC,gBAAgB,GAAG,CAAC;AAClC,MAAM;AACN,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,kBAAkB,EAAE;AACvC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,IAAI,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AAC1D,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC;AAC1C,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,yBAAyB,GAAG,SAAS,KAAK,EAAE;AACjD,EAAE;AACF,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACxC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9B,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC;AAC3C,IAAI,IAAI,CAAC,qCAAqC,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5D,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;AACvE,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK;AACvC;AACA,CAAC;AACD,IAAI,CAAC,wBAAwB,GAAG,SAAS,KAAK,EAAE;AAChD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;AAC7C,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,IAAI,CAAC,cAAc,GAAG,SAAS,KAAK,EAAE;AACtC,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE;AAC9E,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC;AAC1B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,uBAAuB,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,uBAAuB,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI;AAClC,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;AACD,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,EAAE;AACF,IAAI,CAAC,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACrC,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACrC;AACA;;AAEA;AACA,IAAI,CAAC,qCAAqC,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE;AACrE,EAAE,KAAK,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK;;AAEzC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO;;AAEvC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;AACjD,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY;AACnC,MAAM,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;AACvD,QAAQ,IAAI,gBAAgB,GAAG,KAAK,CAAC,GAAG;AACxC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;AAC3G,UAAU,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY;AACxC,UAAU,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,EAAE;AAClD,YAAY,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,OAAO;AACrF,YAAY,OAAO;AACnB,UAAU;AACV,QAAQ;AACR,QAAQ,KAAK,CAAC,GAAG,GAAG,gBAAgB;AACpC,QAAQ,KAAK,CAAC,YAAY,GAAG,IAAI;AACjC,MAAM;AACN,MAAM,OAAO;AACb,IAAI;AACJ,IAAI;AACJ,MAAM,OAAO;AACb,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC7B,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACrC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC7B,MAAM,cAAc,CAAC,KAAK,CAAC,YAAY;AACvC,MAAM;AACN,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,OAAO,EAAE;AACjB,MAAM,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC;AAC3C,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;AACD,SAAS,cAAc,CAAC,EAAE,EAAE;AAC5B,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI;AAC1B;;AAEA;AACA,IAAI,CAAC,wBAAwB,GAAG,SAAS,KAAK,EAAE;AAChD,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE;AAC/C,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAChC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE;AACtE,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,uBAAuB,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;AACxB,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,UAAU;AAChD,IAAI,GAAG;AACP,MAAM,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,GAAG,IAAI,SAAS;AACxE,MAAM,KAAK,CAAC,OAAO,EAAE;AACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,IAAI,IAAI;AACjE,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,aAAa,GAAG,CAAC,CAAC;;AAEtB;AACA,IAAI,CAAC,8BAA8B,GAAG,SAAS,KAAK,EAAE;AACtD,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;;AAE1B,EAAE,IAAI,sBAAsB,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,IAAI,MAAM,GAAG,KAAK;AACpB,EAAE;AACF,IAAI,KAAK,CAAC,OAAO;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AACjC,KAAK,CAAC,MAAM,GAAG,EAAE,KAAK,IAAI,aAAa,EAAE,KAAK,IAAI;AAClD,IAAI;AACJ,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,IAAI,MAAM;AACd,IAAI;AACJ,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAC7B,OAAO,MAAM,GAAG,IAAI,CAAC,wCAAwC,CAAC,KAAK,CAAC,CAAC;AACrE,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI;AACpB,MAAM;AACN,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,aAAa,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACtF,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACxC,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;;AAED,SAAS,sBAAsB,CAAC,EAAE,EAAE;AACpC,EAAE;AACF,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf;AACA;;AAEA;AACA;AACA;AACA,IAAI,CAAC,wCAAwC,GAAG,SAAS,KAAK,EAAE;AAChE,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;;AAEvB;AACA,EAAE,IAAI,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC5E,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,eAAe;AACpC,IAAI,IAAI,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAAE;AACpD,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,eAAe;AACvC,MAAM,IAAI,CAAC,0CAA0C,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;AACzE,MAAM,OAAO;AACb,IAAI;AACJ,EAAE;AACF,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK;;AAEnB;AACA,EAAE,IAAI,IAAI,CAAC,wCAAwC,CAAC,KAAK,CAAC,EAAE;AAC5D,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,eAAe;AAC3C,IAAI,OAAO,IAAI,CAAC,yCAAyC,CAAC,KAAK,EAAE,WAAW;AAC5E,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,IAAI,CAAC,0CAA0C,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AAC/E,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC;AACtD,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAC7C,CAAC;;AAED,IAAI,CAAC,yCAAyC,GAAG,SAAS,KAAK,EAAE,WAAW,EAAE;AAC9E,EAAE,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,SAAS,CAAC;AAC3E,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,aAAa,CAAC;AACzG,EAAE,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACtC,CAAC;;AAED;AACA;AACA,IAAI,CAAC,6BAA6B,GAAG,SAAS,KAAK,EAAE;AACrD,EAAE,IAAI,EAAE,GAAG,CAAC;AACZ,EAAE,KAAK,CAAC,eAAe,GAAG,EAAE;AAC5B,EAAE,OAAO,8BAA8B,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAC/D,IAAI,KAAK,CAAC,eAAe,IAAI,iBAAiB,CAAC,EAAE,CAAC;AAClD,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,eAAe,KAAK;AACnC,CAAC;;AAED,SAAS,8BAA8B,CAAC,EAAE,EAAE;AAC5C,EAAE,OAAO,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI;AAC3C;;AAEA;AACA;AACA,IAAI,CAAC,8BAA8B,GAAG,SAAS,KAAK,EAAE;AACtD,EAAE,IAAI,EAAE,GAAG,CAAC;AACZ,EAAE,KAAK,CAAC,eAAe,GAAG,EAAE;AAC5B,EAAE,OAAO,+BAA+B,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAChE,IAAI,KAAK,CAAC,eAAe,IAAI,iBAAiB,CAAC,EAAE,CAAC;AAClD,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,eAAe,KAAK;AACnC,CAAC;AACD,SAAS,+BAA+B,CAAC,EAAE,EAAE;AAC7C,EAAE,OAAO,8BAA8B,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,EAAE;AAChE;;AAEA;AACA;AACA,IAAI,CAAC,wCAAwC,GAAG,SAAS,KAAK,EAAE;AAChE,EAAE,OAAO,IAAI,CAAC,8BAA8B,CAAC,KAAK;AAClD,CAAC;;AAED;AACA,IAAI,CAAC,wBAAwB,GAAG,SAAS,KAAK,EAAE;AAChD,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AACxC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACjD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AAChC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;AACrD,IAAI,IAAI,MAAM,IAAI,MAAM,KAAK,aAAa;AAC1C,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;AACpE,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA,IAAI,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,OAAO,SAAS,CAAC;AAC3D,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;AACxC,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA,IAAI,CAAC,0BAA0B,GAAG,SAAS,KAAK,EAAE;AAClD,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAC1C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY;AACjC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACpE,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY;AACpC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;AAC1D,QAAQ,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC;AAC9C,MAAM;AACN,MAAM,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,KAAK,EAAE;AACvD,QAAQ,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC;AAC5D,MAAM;AACN,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA;AACA,IAAI,CAAC,mBAAmB,GAAG,SAAS,KAAK,EAAE;AAC3C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;;AAEvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AACvB;AACA,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE;AAChC,MAAM,IAAI,IAAI,KAAK,IAAI,YAAY,YAAY,CAAC,IAAI,CAAC,EAAE;AACvD,QAAQ,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC;AAC3C,MAAM;AACN,MAAM,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnC,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;;AAEF,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,EAAE,KAAK,IAAI,UAAU;AAC3B,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,qBAAqB,GAAG,SAAS,KAAK,EAAE;AAC7C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;;AAEvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAChD,IAAI,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO;AACX,EAAE;;AAEF,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjD,IAAI,IAAI,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE;AAClD,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;;AAEF,EAAE;AACF,IAAI,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;AAC9C,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK;AACxC;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAI,CAAC,yBAAyB,GAAG,SAAS,KAAK,EAAE;AACjD,EAAE,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS;AACnC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE;AACzG,IAAI,IAAI,SAAS,KAAK,aAAa,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACzB,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AAClD,MAAM;AACN,QAAQ,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI;AAChC,SAAS,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAC1D,QAAQ;AACR,QAAQ,IAAI,SAAS,KAAK,aAAa,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAC/D,QAAQ;AACR,MAAM;AACN,MAAM,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC;AACzD,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,MAAM,CAAC;AAC7C;AACA,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AAClD,MAAM,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC;AAC5D,MAAM,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC;AACzD,IAAI;AACJ,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,MAAM,CAAC;AAC7C,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC;AACvD,EAAE;AACF;AACA,EAAE,SAAS;AACX,IAAI,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC;AACxD,IAAI,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AACrD,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,MAAM,CAAC;AACpC,IAAI,IAAI,SAAS,KAAK,aAAa,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;AAC/D,EAAE;AACF,CAAC;;AAED;AACA,IAAI,CAAC,uBAAuB,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE;AAC/C,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY;AACjC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE;AAC5E,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY;AACpC,MAAM,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,GAAG,KAAK,EAAE;AACvD,QAAQ,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC;AAC5D,MAAM;AACN,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,yBAAyB,GAAG,SAAS,KAAK,EAAE;AACjD,EAAE,IAAI,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,SAAS,CAAC;AAClE,EAAE,OAAO,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK;AACzF,CAAC;;AAED;AACA,IAAI,CAAC,qBAAqB,GAAG,SAAS,KAAK,EAAE;AAC7C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS;AACxC,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACjD,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,IAAI,MAAM,IAAI,MAAM,KAAK,aAAa,EAAE;AAC9C,QAAQ,KAAK,CAAC,KAAK,CAAC,6CAA6C,CAAC;AAClE,MAAM;AACN,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC;AAC7D,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,gCAAgC,GAAG,SAAS,KAAK,EAAE;AACxD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7C,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC;AACpE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACnC,QAAQ,OAAO;AACf,MAAM;AACN,IAAI,CAAC,MAAM;AACX;AACA,MAAM,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnC,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,qCAAqC,GAAG,SAAS,KAAK,EAAE;AAC7D,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC7C,EAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAClC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,aAAa,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;AACpF,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA,IAAI,CAAC,kBAAkB,GAAG,SAAS,KAAK,EAAE;AAC1C,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,OAAO,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,EAAE,OAAO,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG;AACnC,CAAC;;AAED;AACA,IAAI,CAAC,2BAA2B,GAAG,SAAS,KAAK,EAAE;AACnD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI;AACJ,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAC3C,MAAM,IAAI,CAAC,oCAAoC,CAAC,KAAK;AACrD,MAAM;AACN,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AACjC,MAAM,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAChC,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,SAAS,EAAE,IAAI,2CAA2C,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AAC5G,EAAE,IAAI,yBAAyB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC;AACpD,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,EAAE,KAAK,CAAC,YAAY,GAAG,EAAE;AACzB,EAAE,OAAO;AACT,CAAC;;AAED;AACA,SAAS,2CAA2C,CAAC,EAAE,EAAE;AACzD,EAAE;AACF,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf;AACA;;AAEA;AACA,SAAS,yBAAyB,CAAC,EAAE,EAAE;AACvC,EAAE;AACF,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC;AACA;;AAEA;AACA,IAAI,CAAC,oCAAoC,GAAG,SAAS,KAAK,EAAE;AAC5D,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,4BAA4B,CAAC,EAAE,CAAC,EAAE;AACxC,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE;AAC3B,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,SAAS,4BAA4B,CAAC,EAAE,EAAE;AAC1C,EAAE;AACF,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACpC,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf,IAAI,EAAE,KAAK,IAAI;AACf;AACA;;AAEA;AACA,IAAI,CAAC,4BAA4B,GAAG,SAAS,KAAK,EAAE;AACpD,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,UAAU;AACjD,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI;AAClC,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,2BAA2B,GAAG,SAAS,KAAK,EAAE;AACnD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;AACjD,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AACvB,MAAM,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnC,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK;AACrB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,uBAAuB,GAAG,SAAS,KAAK,EAAE;AAC/C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,EAAE,GAAG,CAAC;AACZ,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;AACxB,EAAE,OAAO,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAC/C,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,GAAG,IAAI,SAAS;AACtE,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,GAAG,KAAK;AACvB,CAAC;AACD,SAAS,cAAc,CAAC,EAAE,EAAE;AAC5B,EAAE,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACzC;;AAEA;AACA,IAAI,CAAC,mBAAmB,GAAG,SAAS,KAAK,EAAE;AAC3C,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,IAAI,EAAE,GAAG,CAAC;AACZ,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;AACxB,EAAE,OAAO,UAAU,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AAC3C,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC/D,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO,KAAK,CAAC,GAAG,KAAK;AACvB,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,EAAE;AACF,IAAI,CAAC,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACrC,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,SAAS;AAC9C,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACrC;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE;AACtB,EAAE,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,UAAU;AAChD,IAAI,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;AAC1B,EAAE;AACF,EAAE,IAAI,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI,UAAU;AAChD,IAAI,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI;AAC1B,EAAE;AACF,EAAE,OAAO,EAAE,GAAG,IAAI;AAClB;;AAEA;AACA;AACA,IAAI,CAAC,mCAAmC,GAAG,SAAS,KAAK,EAAE;AAC3D,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;AACxC,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,YAAY;AAC/B,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;AAC1C,MAAM,IAAI,EAAE,GAAG,KAAK,CAAC,YAAY;AACjC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;AACvD,QAAQ,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY;AAClE,MAAM,CAAC,MAAM;AACb,QAAQ,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;AACxC,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,CAAC,YAAY,GAAG,EAAE;AAC7B,IAAI;AACJ,IAAI,OAAO;AACX,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA,IAAI,CAAC,oBAAoB,GAAG,SAAS,KAAK,EAAE;AAC5C,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE;AACxB,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,IAAI,OAAO;AACX,EAAE;AACF,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;AACxB,EAAE,OAAO;AACT,CAAC;AACD,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,EAAE,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,IAAI,IAAI;AACzC;;AAEA;AACA;AACA;AACA,IAAI,CAAC,wBAAwB,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE;AACxD,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG;AACvB,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;AACxB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;AACnC,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;AAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;AACzB,MAAM,KAAK,CAAC,GAAG,GAAG,KAAK;AACvB,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC/D,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;;AAEA,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE;AAC9B,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;AACpB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;AACtB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;AAClB,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS;AACzB,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;AACtB,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC;;AAED;;AAEA,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS;;AAEzB;;AAEA,EAAE,CAAC,IAAI,GAAG,SAAS,6BAA6B,EAAE;AAClD,EAAE,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW;AAC7E,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5F,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;AAC1B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAE7C,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG;AAC5B,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;AAChC,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;AAClC,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ;AACtC,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,CAAC;;AAED,EAAE,CAAC,QAAQ,GAAG,WAAW;AACzB,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI;AACvB,CAAC;;AAED;AACA,IAAI,OAAO,MAAM,KAAK,WAAW;AACjC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW;AACrC,IAAI,IAAI,QAAQ,GAAG,IAAI;;AAEvB,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,YAAY;AACxB,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE;AACvC,QAAQ,OAAO;AACf,UAAU,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG;AAC1C,UAAU,KAAK,EAAE;AACjB;AACA,MAAM;AACN;AACA,EAAE,CAAC,CAAC,CAAC;;AAEL;AACA;;AAEA;AACA;;AAEA,EAAE,CAAC,SAAS,GAAG,WAAW;AAC1B,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;;AAEpE,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG;AACvB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACpE,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;;AAE5E,EAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9D,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;;AAED,EAAE,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;AAC9B;AACA;AACA,EAAE,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE;AAC3E,IAAI,EAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAE7B,EAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI;AACnC,CAAC;;AAED,EAAE,CAAC,cAAc,GAAG,SAAS,GAAG,EAAE;AAClC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AACvC,EAAE,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,OAAO,IAAI,CAAC;AACtD,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;AAC3C,EAAE,OAAO,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG;AACzE,CAAC;;AAED,EAAE,CAAC,iBAAiB,GAAG,WAAW;AAClC,EAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG;AACrC,CAAC;;AAED,EAAE,CAAC,gBAAgB,GAAG,WAAW;AACjC,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;AAC7D,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AACpB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC9B,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,EAAE,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;AAC9G,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS;AACtC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;AAC5B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG;AACpF,2BAA2B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;;AAED,EAAE,CAAC,eAAe,GAAG,SAAS,SAAS,EAAE;AACzC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;AACtB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE;AAC7D,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;AACvD,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACzD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;AAC5B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG;AAClG,2BAA2B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;;AAED;AACA;;AAEA,EAAE,CAAC,SAAS,GAAG,WAAW;AAC1B,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC7C,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,IAAI,QAAQ,EAAE;AACd,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG;AACrB,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,MAAM;AACN,IAAI,KAAK,EAAE;AACX,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AACtD,QAAQ,EAAE,IAAI,CAAC,GAAG;AAClB,MAAM;AACN,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI;AACjC,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAClC,QAAQ,EAAE,IAAI,CAAC,OAAO;AACtB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACjC,MAAM;AACN,MAAM;AACN,IAAI,KAAK,EAAE;AACX,MAAM,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACjD,MAAM,KAAK,EAAE;AACb,QAAQ,IAAI,CAAC,gBAAgB,EAAE;AAC/B,QAAQ;AACR,MAAM,KAAK,EAAE;AACb,QAAQ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/B,QAAQ;AACR,MAAM;AACN,QAAQ,MAAM;AACd;AACA,MAAM;AACN,IAAI;AACJ,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE;AAC/F,QAAQ,EAAE,IAAI,CAAC,GAAG;AAClB,MAAM,CAAC,MAAM;AACb,QAAQ,MAAM;AACd,MAAM;AACN;AACA,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA;;AAEA,EAAE,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE;AACrC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;AACrB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI;AAC1B,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;AAClB,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG;;AAElB,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC9B,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,aAAa,GAAG,WAAW;AAC9B,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/D,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACjD,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE;AACpE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ;AAC5C,EAAE,CAAC,MAAM;AACT,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG;AACvC,EAAE;AACF,CAAC;;AAED,EAAE,CAAC,eAAe,GAAG,WAAW;AAChC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/D,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACvC,CAAC;;AAED,EAAE,CAAC,yBAAyB,GAAG,SAAS,IAAI,EAAE;AAC9C,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,IAAI,SAAS,GAAG,IAAI,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM;;AAE7D;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE;AACnE,IAAI,EAAE,IAAI;AACV,IAAI,SAAS,GAAG,OAAO,CAAC,QAAQ;AAChC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9C,EAAE;;AAEF,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI;AACtC,CAAC;;AAED,EAAE,CAAC,kBAAkB,GAAG,SAAS,IAAI,EAAE;AACvC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AACrB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE;AACxC,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrD,MAAM,IAAI,KAAK,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAClE,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AACjF,EAAE;AACF,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;AAC/E,CAAC;;AAED,EAAE,CAAC,eAAe,GAAG,WAAW;AAChC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;AAC5C,CAAC;;AAED,EAAE,CAAC,kBAAkB,GAAG,SAAS,IAAI,EAAE;AACvC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AACrB,IAAI,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;AACnF,SAAS,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAChG;AACA,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7B,MAAM,IAAI,CAAC,SAAS,EAAE;AACtB,MAAM,OAAO,IAAI,CAAC,SAAS;AAC3B,IAAI;AACJ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1C,EAAE;AACF,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,CAAC;;AAED,EAAE,CAAC,eAAe,GAAG,SAAS,IAAI,EAAE;AACpC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,GAAG,CAAC;AACd,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AACrB,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;AAC5E,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AACxG,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI;AAC/C,EAAE;AACF,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;AAChG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AAClD;AACA,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3B,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,IAAI,OAAO,IAAI,CAAC,SAAS;AACzB,EAAE;AACF,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/B,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI;AAC/C,CAAC;;AAED,EAAE,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE;AACtC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChH,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACnE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK;AACzC,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC;;AAED,EAAE,CAAC,kBAAkB,GAAG,WAAW;AACnC,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAC5C,EAAE,IAAI,WAAW,IAAI,EAAE,EAAE;AACzB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAClD,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AACrB,MAAM,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrD,MAAM,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACnF,IAAI;AACJ,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AACrB,MAAM,IAAI,WAAW,IAAI,EAAE,EAAE;AAC7B,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACzD,QAAQ,IAAI,OAAO,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACtE,MAAM;AACN,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC9C,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC1C,CAAC;;AAED,EAAE,CAAC,oBAAoB,GAAG,WAAW;AACrC,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AAC5C,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB,EAAE,IAAI,WAAW,IAAI,EAAE,EAAE;AACzB,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACnC,IAAI,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,YAAY;AAChE,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AACjE,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAwB,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAChF,CAAC;;AAED,EAAE,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;AACrC,EAAE,QAAQ,IAAI;AACd;AACA;AACA,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,IAAI,CAAC,aAAa;;AAE7B;AACA,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM;AAC7D,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM;AAC7D,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI;AAC3D,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK;AAC5D,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ;AAC/D,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ;AAC/D,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM;AAC9D,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM;AAC9D,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK;;AAE5D,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;AAC9C,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS;;AAE7C,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAClD,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AACvC,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,MAAM,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI;;AAEJ;AACA;AACA,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AACjF,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK;;AAEhC;AACA,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAClB,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;;AAE/B;AACA;AACA;AACA;AACA,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,IAAI,CAAC,eAAe;;AAE/B,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAClB,IAAI,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI;;AAE9C,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI;;AAEvC,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,IAAI,CAAC,eAAe;;AAE/B,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAClB,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI;;AAEvC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAClB,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI;;AAEpC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AAClB,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI;;AAEtC,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,IAAI,CAAC,kBAAkB;;AAElC,EAAE,KAAK,GAAG;AACV,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;;AAE1C,EAAE,KAAK,EAAE;AACT,IAAI,OAAO,IAAI,CAAC,oBAAoB;AACpC;;AAEA,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAwB,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAChF,CAAC;;AAED,EAAE,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;AACnC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACvD,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;AAClB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG;AACnC,CAAC;;AAED,EAAE,CAAC,UAAU,GAAG,WAAW;AAC3B,EAAE,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG;AACxC,EAAE,SAAS;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC,CAAC;AAC/F,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC,CAAC;AACpF,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;AACxC,WAAW,IAAI,EAAE,KAAK,GAAG,IAAI,OAAO,EAAE,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;AACzD,WAAW,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;AAC/C,MAAM,OAAO,GAAG,EAAE,KAAK,IAAI;AAC3B,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC;AAC9B,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,EAAE;AACF,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AACjD,EAAE,EAAE,IAAI,CAAC,GAAG;AACZ,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG;AAC3B,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;;AAEvD;AACA,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACtF,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;AACpC,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACjC,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;;AAEnC;AACA,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,IAAI;AACN,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AACtC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd;AACA;AACA,EAAE;;AAEF,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACxF,CAAC;;AAED;AACA;AACA;;AAEA,EAAE,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE,8BAA8B,EAAE;AAClE;AACA,EAAE,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,GAAG,KAAK,SAAS;;AAE3E;AACA;AACA;AACA,EAAE,IAAI,2BAA2B,GAAG,8BAA8B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;;AAE5G,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC;AAC/C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,IAAI,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;AAC5E,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC;;AAE9D,IAAI,IAAI,eAAe,IAAI,IAAI,KAAK,EAAE,EAAE;AACxC,MAAM,IAAI,2BAA2B,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,mEAAmE,CAAC,CAAC,CAAC;AAC/I,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC,CAAC;AAClH,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,yDAAyD,CAAC,CAAC,CAAC;AACjH,MAAM,QAAQ,GAAG,IAAI;AACrB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7C,SAAS,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3D,SAAS,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC;AAC3B,IAAI,IAAI,GAAG,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC;AAC9B,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG;AAC/B,EAAE;;AAEF,EAAE,IAAI,eAAe,IAAI,QAAQ,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,wDAAwD,CAAC,CAAC,CAAC;AAC3I,EAAE,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,EAAE,EAAE,OAAO,IAAI,CAAC;;AAEnF,EAAE,OAAO;AACT,CAAC;;AAED,SAAS,cAAc,CAAC,GAAG,EAAE,2BAA2B,EAAE;AAC1D,EAAE,IAAI,2BAA2B,EAAE;AACnC,IAAI,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC1B,EAAE;;AAEF;AACA,EAAE,OAAO,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACzC;;AAEA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACpC,IAAI,OAAO;AACX,EAAE;;AAEF;AACA,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AACrC;;AAEA,EAAE,CAAC,eAAe,GAAG,SAAS,KAAK,EAAE;AACrC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;AACtB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAChB,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,2BAA2B,GAAG,KAAK,CAAC,CAAC,CAAC;AACtF,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;AACjF,IAAI,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,EAAE,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC,CAAC;AACtH,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG;AAC1C,CAAC;;AAED;;AAEA,EAAE,CAAC,UAAU,GAAG,SAAS,aAAa,EAAE;AACxC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;AACtB,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC3G,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE;AAC1E,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE;AAClF,IAAI,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACjE,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC,CAAC;AACjH,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK;AAC9C,EAAE;AACF,EAAE,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;AAChF,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAC7B,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACpB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,EAAE;AACF,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AAC5C,IAAI,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC1E,EAAE;AACF,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC,CAAC;;AAE/G,EAAE,IAAI,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AACpE,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG;AAC1C,CAAC;;AAED;;AAEA,EAAE,CAAC,aAAa,GAAG,WAAW;AAC9B,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI;;AAEhD,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE;AAClB,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3D,IAAI,IAAI,OAAO,GAAG,EAAE,IAAI,CAAC,GAAG;AAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AACzE,IAAI,EAAE,IAAI,CAAC,GAAG;AACd,IAAI,IAAI,IAAI,GAAG,QAAQ,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC,CAAC;AACzF,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9B,EAAE;AACF,EAAE,OAAO;AACT,CAAC;;AAED,EAAE,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;AAChC,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,IAAI,CAAC,GAAG;AACvC,EAAE,SAAS;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;AACjG,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,IAAI,IAAI,EAAE,KAAK,KAAK,EAAE,EAAE,KAAK,CAAC;AAC9B,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE;AACnB,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;AACnD,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;AAC3B,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM,EAAE;AAC/C,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;AACnG,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAClC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACjC,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;AACnF,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,IAAI;AACJ,EAAE;AACF,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACjD,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG;AAC7C,CAAC;;AAED;;AAEA,IAAI,6BAA6B,GAAG,EAAE;;AAEtC,EAAE,CAAC,oBAAoB,GAAG,WAAW;AACrC,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC/B,EAAE,IAAI;AACN,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,IAAI,GAAG,KAAK,6BAA6B,EAAE;AAC/C,MAAM,IAAI,CAAC,wBAAwB,EAAE;AACrC,IAAI,CAAC,MAAM;AACX,MAAM,MAAM;AACZ,IAAI;AACJ,EAAE;;AAEF,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAChC,CAAC;;AAED,EAAE,CAAC,kBAAkB,GAAG,SAAS,QAAQ,EAAE,OAAO,EAAE;AACpD,EAAE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;AAC/D,IAAI,MAAM;AACV,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;AACjC,EAAE;AACF,CAAC;;AAED,EAAE,CAAC,aAAa,GAAG,WAAW;AAC9B,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG;AACrC,EAAE,SAAS;AACX,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAC1F,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC/E,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,eAAe,CAAC,EAAE;AAChH,QAAQ,IAAI,EAAE,KAAK,EAAE,EAAE;AACvB,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC;AACvB,UAAU,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY;AACtD,QAAQ,CAAC,MAAM;AACf,UAAU,EAAE,IAAI,CAAC,GAAG;AACpB,UAAU,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS;AACnD,QAAQ;AACR,MAAM;AACN,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;AACnD,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG;AACnD,IAAI;AACJ,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE;AACnB,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;AACnD,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;AAC3B,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;AAC9B,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;AACnD,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,MAAM,QAAQ,EAAE;AAChB,MAAM,KAAK,EAAE;AACb,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,MAAM,KAAK,EAAE;AACb,QAAQ,GAAG,IAAI,IAAI;AACnB,QAAQ;AACR,MAAM;AACN,QAAQ,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;AACtC,QAAQ;AACR;AACA,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAClC,QAAQ,EAAE,IAAI,CAAC,OAAO;AACtB,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;AACjC,MAAM;AACN,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;AAC3B,IAAI,CAAC,MAAM;AACX,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,IAAI;AACJ,EAAE;AACF,CAAC;;AAED;AACA,EAAE,CAAC,wBAAwB,GAAG,WAAW;AACzC,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;AACnD,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,IAAI,KAAK,IAAI;AACb,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,MAAM;;AAEN,IAAI,KAAK,GAAG;AACZ,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC;AACpD;AACA,IAAI,KAAK,GAAG;AACZ,MAAM,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;;AAE7F,IAAI,KAAK,IAAI;AACb,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D;AACA,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,QAAQ;AAC3C,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;AACnC,MAAM;AACN;AACA,EAAE;AACF,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC;AACjD,CAAC;;AAED;;AAEA,EAAE,CAAC,eAAe,GAAG,SAAS,UAAU,EAAE;AAC1C,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AAC5C,EAAE,EAAE,IAAI,CAAC,GAAG;AACZ,EAAE,QAAQ,EAAE;AACZ,EAAE,KAAK,GAAG,EAAE,OAAO,IAAI;AACvB,EAAE,KAAK,GAAG,EAAE,OAAO,IAAI;AACvB,EAAE,KAAK,GAAG,EAAE,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3D,EAAE,KAAK,GAAG,EAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1D,EAAE,KAAK,GAAG,EAAE,OAAO,IAAI;AACvB,EAAE,KAAK,EAAE,EAAE,OAAO,IAAI;AACtB,EAAE,KAAK,GAAG,EAAE,OAAO,QAAQ;AAC3B,EAAE,KAAK,GAAG,EAAE,OAAO,IAAI;AACvB,EAAE,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7E,IAAI,OAAO;AACX,EAAE,KAAK,EAAE;AACT,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,IAAI,CAAC,kBAAkB;AAC7B,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC;AACpB,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;;AAEhC,MAAM,IAAI,CAAC,kBAAkB;AAC7B,QAAQ,OAAO;AACf,QAAQ;AACR,OAAO;AACP,IAAI;AACJ,EAAE;AACF,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AAC9B,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,MAAM,IAAI,KAAK,GAAG,GAAG,EAAE;AACvB,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACxC,QAAQ,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrC,MAAM;AACN,MAAM,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;AACrC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,MAAM,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,EAAE;AACvF,QAAQ,IAAI,CAAC,kBAAkB;AAC/B,UAAU,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;AACxC,UAAU;AACV,cAAc;AACd,cAAc;AACd,SAAS;AACT,MAAM;AACN,MAAM,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK;AACtC,IAAI;AACJ,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;AACvB;AACA;AACA,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/E,MAAM,OAAO;AACb,IAAI;AACJ,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE;AACjC;AACA,CAAC;;AAED;;AAEA,EAAE,CAAC,WAAW,GAAG,SAAS,GAAG,EAAE;AAC/B,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG;AACxB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC;AAC/B,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC,CAAC;AACvF,EAAE,OAAO;AACT,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,EAAE,CAAC,SAAS,GAAG,WAAW;AAC1B,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK;AAC1B,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG;AACpD,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC;AAC5C,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACrC,IAAI,IAAI,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE;AACtC,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;AACtC,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,EAAE;AAC1B,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI;AAC7B,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC;AACpD,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG;AAC7B,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG;AACnD,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,2CAA2C,CAAC,CAAC,CAAC;AAC1F,MAAM,EAAE,IAAI,CAAC,GAAG;AAChB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AACpC,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,iBAAiB,GAAG,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC;AACtE,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CAAC;AACvE,MAAM,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC;AACpC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;AAC3B,IAAI,CAAC,MAAM;AACX,MAAM;AACN,IAAI;AACJ,IAAI,KAAK,GAAG,KAAK;AACjB,EAAE;AACF,EAAE,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG;AACrD,CAAC;;AAED;AACA;;AAEA,EAAE,CAAC,QAAQ,GAAG,WAAW;AACzB,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;AAC7B,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI;AACzB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AACzB,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI;AACpC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,IAAI,OAAO,GAAG,QAAQ;;AAEtB,MAAM,CAAC,KAAK,GAAG;AACf,EAAE,MAAM,EAAE,MAAM;AAChB,EAAE,OAAO,EAAE,OAAO;AAClB,EAAE,cAAc,EAAE,cAAc;AAChC,EAAE,QAAQ,EAAE,QAAQ;AACpB,EAAE,cAAc,EAAE,cAAc;AAChC,EAAE,WAAW,EAAE,WAAW;AAC1B,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,SAAS,EAAE,SAAS;AACtB,EAAE,QAAQ,EAAE,OAAO;AACnB,EAAE,YAAY,EAAE,QAAQ;AACxB,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,WAAW,EAAE,KAAK;AACpB,EAAE,gBAAgB,EAAE,gBAAgB;AACpC,EAAE,iBAAiB,EAAE,iBAAiB;AACtC,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,SAAS,EAAE,SAAS;AACtB,EAAE,SAAS,EAAE,SAAS;AACtB,EAAE,UAAU,EAAE,UAAU;AACxB,EAAE,kBAAkB,EAAE;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO;AACpC;;ACxmMA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC9D,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,GAAG;AACpC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;AACrC,IAAI,IAAI,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI;AACpC,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACpD,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC3B;;AAEA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE;AAChE,EAAE,IAAI,SAAS,GAAG,EAAE;AACpB,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,GAAG;AACpC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE;AACrC,IAAI,IAAI,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI;AACpC,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACxD,IAAI,IAAI,KAAK,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E,IAAI,IAAI,KAAK,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAC3B;;AA0IA,SAAS,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACjD,SAAS,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;;AAEjC,SAAS,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACnD,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,IAAI,KAAK,EAAE,2CAA2C,GAAG,IAAI,EAAE,CAAC;AACzG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAChC;;AAEA;;AAEA,IAAI,IAAI,GAAG,EAAE;;AAEb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC/E,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC3D,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC5B,EAAE;AACF,CAAC;AACD,IAAI,CAAC,SAAS,GAAG,WAAW;AAC5B,IAAI,CAAC,cAAc,GAAG,MAAM;AAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe;AAC9E,EAAE,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACzE,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC1C,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,CAAC;AACrC,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5D,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AACxF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM;AACrD,IAAI,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC5C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC;AAClC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/B,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC9C,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,YAAY,CAAC;AACxC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9D,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEpB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;AACb,EAAE;AACF,CAAC;AACD,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACzC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACnD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC5B,EAAE;AACF,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC5F,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3D,CAAC;AACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;AACxC,EAAE,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACvE,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC3C,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AAChC,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3C,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5D,CAAC;AACD,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC1C,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAClD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/B,CAAC;AACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACrE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/B,CAAC;AACD,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC3C,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAChD,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACnD,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACvD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/B,CAAC;AACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACnE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC;AAC7B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;AACjC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/B,CAAC;AACD,IAAI,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACtC,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,IAAI,CAAC,iBAAiB,GAAG,MAAM;;AAE/B,IAAI,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACrF,IAAI,CAAC,mBAAmB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAClD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACnE,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACf,EAAE;AACF,CAAC;AACD,IAAI,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACjD,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC;AAC3B,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACnD,CAAC;;AAED,IAAI,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACvC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEvB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC;AAC3B,EAAE;AACF,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAChE,CAAC;;AAED,IAAI,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACtC,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;AAChC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACtC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB;AAC3C,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;AACpC;AACA,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACnB,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,MAAM;AAC7B,IAAI,CAAC,aAAa,GAAG,WAAW;AAChC,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACrF,IAAI,CAAC,YAAY,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC3C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjE,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;;AAErB,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AACtC,EAAE;AACF,CAAC;AACD,IAAI,CAAC,aAAa,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC5C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACnE,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAClC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC;AAClC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;AAC5C,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,CAAC;AACrC,IAAI;AACJ,EAAE;AACF,CAAC;;AAED,IAAI,CAAC,UAAU,GAAG,WAAW;AAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM;AAC7D,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC9C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AACjE,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;;AAErB,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACzC,EAAE;AACF,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC/C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACf,EAAE;AACF,CAAC;AACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,mBAAmB;AACjF,IAAI,CAAC,kBAAkB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACjD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAClE,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;AAC7B,EAAE;AACF,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC9C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC7D,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEvB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;AAChB,EAAE;;AAEF,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC5E,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;;AAE1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;AAC7B,EAAE;AACF,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,MAAM;AAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACtE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC;AACpC,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACxE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;AACjC,CAAC;AACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC5E,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC;AAC7B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;AACjC,CAAC;AACD,IAAI,CAAC,qBAAqB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACpD,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC;AACtC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,CAAC;AACrC,CAAC;AACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAClE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,SAAS;AACpB,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACpE,MAAM;AACN,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEzB,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,CAAC;AAChC,MAAM,CAAC,CAAC;AACR,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3D,CAAC;AACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACrF,EAAE,IAAI,IAAI,CAAC,WAAW;AACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,wBAAwB,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AAC3H,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,IAAI,CAAC,UAAU;AACrB,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACrE,MAAM;AACN,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE1B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACnB,MAAM,CAAC,CAAC;AACR,CAAC;AACD,IAAI,CAAC,oBAAoB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACnD,EAAE,IAAI,IAAI,CAAC,QAAQ;AACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,UAAU;AACrB,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACrE,MAAM;AACN,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAE1B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACnB,MAAM,CAAC,CAAC;AACR,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC9C,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;AACjC,CAAC;AACD,IAAI,CAAC,iBAAiB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAChD,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AACjE,IAAI;AACJ,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACf,EAAE;AACF,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,UAAU;AACrB,IAAI,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC/E,MAAM;AACN,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC;;AAE9B,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACnB,MAAM,CAAC,CAAC;AACR,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC;AAClC,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM;;AAErJ,IAAI,CAAC,wBAAwB,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACvD,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,CAAC;AAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC;AACjC,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACtG,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACpC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAClB,CAAC;AACD,IAAI,CAAC,SAAS,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACxC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC3D,IAAI;AACJ,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;;AAErB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;AACd,EAAE;AACF,CAAC;AACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;AACzF,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACtD,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AACrD,CAAC;;ACvcD,SAAS,UAAA,CAAW,CAAA,EAAgB,KAAA,EAAe,GAAA,EAAa;AAC5D,EAAA,CAAA,CAAE,MAAA,CAAO,OAAO,GAAG,CAAA;AACvB;AAEA,SAAS,YAAY,IAAA,EAAwB;AACzC,EAAA,OAAO,IAAA,CAAK,IAAA,KAAS,qBAAA,IACjB,IAAA,CAAK,UAAA,CAAW,IAAA,KAAS,SAAA,KACxB,IAAA,CAAK,UAAA,CAAW,KAAA,KAAU,YAAA,IAAgB,IAAA,CAAK,WAAW,KAAA,KAAU,YAAA,CAAA;AAC7E;AAEO,SAAS,gBAAgB,OAAA,EAAyC;AACrE,EAAA,OAAO;AAAA,IACH,IAAA,EAAM,iBAAA;AAAA,IACN,SAAA,CAAU,MAAM,EAAA,EAAI;AAChB,MAAA,MAAM,GAAA,GAAM,MAAM,IAAA,EAAM,EAAE,aAAa,QAAA,EAAU,UAAA,EAAY,UAAU,CAAA;AACvE,MAAA,MAAM,CAAA,GAAI,IAAI,WAAA,CAAY,IAAI,CAAA;AAE9B,MAAA,IAAI,aAAA,GAA4C,IAAA;AAChD,MAAA,IAAI,GAAA,CAAI,KAAK,MAAA,IAAU,WAAA,CAAY,IAAI,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AAC7C,QAAA,aAAA,GAAiB,GAAA,CAAI,KAAK,CAAC,CAAA,CAAE,WAAW,KAAA,CAAiB,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AACrE,QAAA,IAAI,aAAA,KAAkB,QAAQ,IAAA,EAAM;AAChC,UAAA,OAAO;AAAA,YACH,IAAA,EAAM,sBAAA;AAAA,YACN,GAAA,EAAK,EAAE,QAAA,EAAU,EAAA;AAAG,WACxB;AAAA,QACJ;AACA,QAAA,UAAA,CAAW,CAAA,EAAG,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAE,OAAO,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAE,GAAG,CAAA;AAAA,MACpD;AAEA,MAAAC,SAAc,GAAA,EAAK;AAAA,QACf,mBAAA,CAAoB,MAAW,SAAA,EAAkB;AAC7C,UAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAA,IAAU,YAAY,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AACxF,YAAA,MAAM,SAAA,GAAa,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA,CAAW,KAAA,CAAiB,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAC7E,YAAA,IAAI,SAAA,KAAc,QAAQ,IAAA,EAAM;AAC5B,cAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA;AAAA,YACtC,CAAA,MAAO;AACH,cAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,GAAG,CAAA;AAAA,YAChE;AAAA,UACJ;AAAA,QACJ,CAAA;AAAA,QACA,kBAAA,CAAmB,MAAW,SAAA,EAAkB;AAC5C,UAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAA,IAAU,YAAY,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AACxF,YAAA,MAAM,SAAA,GAAa,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA,CAAW,KAAA,CAAiB,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAC7E,YAAA,IAAI,SAAA,KAAc,QAAQ,IAAA,EAAM;AAC5B,cAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA;AAAA,YACtC,CAAA,MAAO;AACH,cAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,GAAG,CAAA;AAAA,YAChE;AAAA,UACJ;AAAA,QACJ,CAAA;AAAA,QACA,uBAAA,CAAwB,MAAW,SAAA,EAAkB;AACjD,UAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,MAAA,IAAU,YAAY,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AACxF,YAAA,MAAM,SAAA,GAAa,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA,CAAW,KAAA,CAAiB,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAC7E,YAAA,IAAI,SAAA,KAAc,QAAQ,IAAA,EAAM;AAC5B,cAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,EAAM,CAAE,OAAA,EAAQ,CAAE,IAAA,CAAK,CAAC,CAAA,KAAW,CAAA,CAAE,IAAA,KAAS,qBAAqB,CAAA;AAC1F,cAAA,IAAI,IAAA,EAAM;AACN,gBAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA;AAAA,cACtC,CAAA,MAAO;AACH,gBAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,GAAG,CAAA;AAAA,cACtC;AAAA,YACJ,CAAA,MAAO;AACH,cAAA,UAAA,CAAW,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,GAAG,CAAA;AAAA,YAChE;AAAA,UACJ;AAAA,QACJ;AAAA,OACH,CAAA;AAED,MAAA,OAAO,EAAE,IAAA,EAAM,CAAA,CAAE,QAAA,EAAS,EAAG,GAAA,EAAK,CAAA,CAAE,WAAA,CAAY,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA,EAAE;AAAA,IACrE;AAAA,GACJ;AACJ;;AC3DA,SAAS,WAAA,CAAY,CAAA,EAAgB,KAAA,EAAe,GAAA,EAAa,WAAA,EAAqB;AAClF,EAAA,CAAA,CAAE,SAAA,CAAU,KAAA,EAAO,GAAA,EAAK,WAAW,CAAA;AACvC;AAeA,SAAS,cAAA,CAAe,QAAgB,QAAA,EAAwC;AAC5E,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,OAAA,KAAW;AAC5B,IAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC7B,MAAA,OAAO,MAAA,KAAW,OAAA;AAAA,IACtB,CAAA,MAAA,IAAW,mBAAmB,MAAA,EAAQ;AAClC,MAAA,OAAO,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,IAC9B;AACA,IAAA,OAAO,KAAA;AAAA,EACX,CAAC,CAAA;AACL;AAmBA,SAAS,0BAA0B,IAAA,EAAmB;AAClD,EAAA,MAAM,eAAyB,EAAC;AAEhC,EAAA,IAAI,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,EAAG;AAC/C,IAAA,KAAA,MAAW,SAAA,IAAa,KAAK,UAAA,EAAY;AACrC,MAAA,IAAI,SAAA,CAAU,SAAS,wBAAA,EAA0B;AAE7C,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,MAAA,EAAS,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,QAAA,CAAU,CAAA;AAAA,MAC7D,CAAA,MAAA,IAAW,SAAA,CAAU,IAAA,KAAS,iBAAA,EAAmB;AAE7C,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,MAAA,EAAS,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,QAAA,CAAU,CAAA;AAAA,MAC7D,CAAA,MAAA,IAAW,SAAA,CAAU,IAAA,KAAS,0BAAA,EAA4B;AAEtD,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,MAAA,EAAS,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,QAAA,CAAU,CAAA;AAAA,MAC7D;AAAA,IACJ;AAAA,EACJ,CAAA,MAAO;AAEH,IAAA,YAAA,CAAa,IAAA,CAAK,CAAA,mBAAA,EAAsB,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,CAAE,CAAA;AAAA,EAC/D;AAEA,EAAA,OAAO,YAAA,CAAa,KAAK,GAAG,CAAA;AAChC;AA6BO,SAAS,oBAAoB,OAAA,EAA6C;AAC7E,EAAA,OAAO;AAAA,IACH,IAAA,EAAM,sBAAA;AAAA,IACN,SAAA,CAAU,MAAM,EAAA,EAAI;AAEhB,MAAA,IAAI,CAAC,EAAA,CAAG,KAAA,CAAM,oBAAoB,CAAA,EAAG;AACjC,QAAA,OAAO,IAAA;AAAA,MACX;AAEA,MAAA,IAAI;AACA,QAAA,MAAM,GAAA,GAAM,MAAM,IAAA,EAAM;AAAA,UACpB,WAAA,EAAa,QAAA;AAAA,UACb,UAAA,EAAY;AAAA,SACf,CAAA;AAED,QAAA,MAAM,CAAA,GAAI,IAAI,WAAA,CAAY,IAAI,CAAA;AAC9B,QAAA,IAAI,UAAA,GAAa,KAAA;AAGjB,QAAAC,OAAY,GAAA,EAAK;AAAA,UACb,kBAAkB,IAAA,EAAW;AACzB,YAAA,MAAM,YAAA,GAAe,KAAK,MAAA,CAAO,KAAA;AAEjC,YAAA,IAAI,cAAA,CAAe,YAAA,EAAc,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAChD,cAAA,MAAM,WAAA,GAAc,0BAA0B,IAAI,CAAA;AAClD,cAAA,WAAA,CAAY,CAAA,EAAG,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,KAAK,WAAW,CAAA;AAChD,cAAA,UAAA,GAAa,IAAA;AAAA,YACjB;AAAA,UACJ;AAAA,SACH,CAAA;AAGD,QAAA,IAAI,UAAA,EAAY;AACZ,UAAA,OAAO;AAAA,YACH,IAAA,EAAM,EAAE,QAAA,EAAS;AAAA,YACjB,KAAK,CAAA,CAAE,WAAA,CAAY,EAAE,KAAA,EAAO,MAAM;AAAA,WACtC;AAAA,QACJ;AAEA,QAAA,OAAO,IAAA;AAAA,MACX,SAAS,KAAA,EAAO;AAEZ,QAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,gBAAA,EAAmB,EAAE,CAAA,CAAA,CAAA,EAAK,KAAK,CAAA;AAC5C,QAAA,OAAO,IAAA;AAAA,MACX;AAAA,IACJ;AAAA,GACJ;AACJ;;AC/JO,SAAS,mBAAA,GAAsB;AACpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,uBAAA;AAAA,IACN,SAAA,CAAU,MAAc,EAAA,EAAY;AAClC,MAAA,IAAI,CAAC,EAAA,CAAG,QAAA,CAAS,cAAc,CAAA,EAAG;AAChC,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,QAAQ,EAAE,CAAA;AAC1B,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA;AACxC,MAAA,MAAM,UAAA,GAAa,SAAS,gBAAA,GAAmB,eAAA;AAC/C,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,EAAS,UAAU,CAAA;AAC3C,MAAA,IAAI,UAAA,CAAW,UAAU,CAAA,EAAG;AAC1B,QAAA,MAAM,SAAA,GAAY,SAAS,eAAA,GAAkB,cAAA;AAE7C,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,uBAAA,EAAyB,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,CAAA;AAAA,MAC/D;AAAA,IACF;AAAA,GACF;AACF;;ACvBA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;AACnC,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;AAC/F,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC;AACjB,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;AACF,CAAC,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AACD,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AACzB,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC;AACrI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC,SAAS,EAAE,GAAG;AACf,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;AACtB,CAAC;AACD,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACrF;AACA,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACtD,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE;AACvB,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE;AAC9D,GAAG,OAAO,CAAC,KAAK,CAAC;AACjB,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,MAAM,EAAE;AAC3D,EAAE,SAAS,SAAS,CAAC,KAAK,EAAE;AAC5B,GAAG,IAAI;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;AACf,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,GAAG;AACH,EAAE;AACF,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC3B,GAAG,IAAI;AACP,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;AACf,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,GAAG;AACH,EAAE;AACF,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE;AACxB,GAAG,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;AACtF,EAAE;AACF,EAAE,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC,CAAC,CAAC;AACH;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AACpC,CAAC,IAAI,CAAC,GAAG;AACT,EAAE,KAAK,EAAE,CAAC;AACV,EAAE,IAAI,EAAE,WAAW;AACnB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,EAAE;AACV,EAAE,GAAG,EAAE;AACP,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC;AAC9F,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW;AACxI,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,CAAC,EAAE,CAAC;AACN,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;AAClB,EAAE,OAAO,SAAS,CAAC,EAAE;AACrB,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,EAAE,CAAC;AACH,CAAC;AACD,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE;AACnB,EAAE,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC;AAC/D,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AAChD,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;AAC/J,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AAC1C,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChB,IAAI,KAAK,CAAC;AACV,IAAI,KAAK,CAAC;AACV,KAAK,CAAC,GAAG,EAAE;AACX,KAAK;AACL,IAAI,KAAK,CAAC;AACV,KAAK,CAAC,CAAC,KAAK,EAAE;AACd,KAAK,OAAO;AACZ,MAAM,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAClB,MAAM,IAAI,EAAE;AACZ,MAAM;AACN,IAAI,KAAK,CAAC;AACV,KAAK,CAAC,CAAC,KAAK,EAAE;AACd,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACd,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACb,KAAK;AACL,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrB,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACjB,KAAK;AACL,IAAI;AACJ,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7F,MAAM,CAAC,GAAG,CAAC;AACX,MAAM;AACN,KAAK;AACL,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9D,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACrB,MAAM;AACN,KAAK;AACL,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,CAAC,GAAG,EAAE;AACZ,MAAM;AACN,KAAK;AACL,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACpB,MAAM;AACN,KAAK;AACL,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AAC1B,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACjB,KAAK;AACL;AACA,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7B,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,GAAG,CAAC,GAAG,CAAC;AACR,EAAE,CAAC,SAAS;AACZ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACZ,EAAE;AACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM;AAChC,GAAG,IAAI,EAAE;AACT,GAAG;AACH,CAAC;AACD;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC;AAC9E,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW;AAClE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM;AACpC,EAAE,OAAO;AACT,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACrB,GAAG,IAAI,EAAE,CAAC;AACV,GAAG;AACH,CAAC,CAAC,EAAE;AACJ,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC;AACvF;AACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3D,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;AACjB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AACjC,CAAC,IAAI;AACL,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE;AACf,CAAC,CAAC,SAAS;AACX,EAAE,IAAI;AACN,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnD,EAAE,CAAC,SAAS;AACZ,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK;AACvB,EAAE;AACF,CAAC;AACD,CAAC,OAAO,EAAE;AACV;AACA,SAAS,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AACvC,CAAC,IAAY,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;AAC3E,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAClB,EAAE;AACF,CAAC;AACD,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD;AACA,SAAS,OAAO,CAAC,CAAC,EAAE;AACpB,CAAC,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC;AACrE;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AAC1D,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;AACvF,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE;AAC9D,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,aAAa,KAAK,UAAU,GAAG,aAAa,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,WAAW;AACpM,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,EAAE,CAAC;AACL,CAAC,SAAS,WAAW,CAAC,CAAC,EAAE;AACzB,EAAE,OAAO,SAAS,CAAC,EAAE;AACrB,GAAG,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;AAC5C,EAAE,CAAC;AACH,CAAC;AACD,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;AACrB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACZ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE;AACtB,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACtC,KAAK,CAAC,CAAC,IAAI,CAAC;AACZ,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM;AACN,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAI,CAAC,CAAC;AACN,GAAG,CAAC;AACJ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE;AACF,CAAC;AACD,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,IAAI;AACN,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AACd,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrB,EAAE;AACF,CAAC;AACD,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;AAClB,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpG,CAAC;AACD,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE;AACzB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACvB,CAAC;AACD,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE;AACxB,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AACxB,CAAC;AACD,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AACD;AACA,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;AACvF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;AACnC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,WAAW;AAC5L,EAAE,OAAO,IAAI;AACb,CAAC,CAAC,EAAE,CAAC,CAAC;AACN,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;AAClB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE;AAC7B,GAAG,OAAO,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;AAChD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,EAAE,CAAC;AACH,CAAC;AACD,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AACxC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACtC,GAAG,OAAO,CAAC;AACX,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,IAAI,EAAE;AACV,IAAI,CAAC;AACL,EAAE,CAAC,EAAE,MAAM,CAAC;AACZ,CAAC;AACD;AACA;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,CAAC,OAAO,OAAO,KAAK,KAAK,UAAU;AACnC;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,UAAU,EAAE;AACtC,CAAC,IAAI,MAAM,GAAG,SAAS,QAAQ,EAAE;AACjC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE,QAAQ,CAAC,KAAK,GAAG,iBAAiB,IAAI,KAAK,EAAE,EAAE,KAAK;AACtD,CAAC,CAAC;AACF,CAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;AAClC,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AACpD,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ;AAC1C,CAAC,OAAO,QAAQ;AAChB;AACA;AACA;AACA,IAAI,mBAAmB,GAAG,gBAAgB,CAAC,SAAS,MAAM,EAAE;AAC5D,CAAC,OAAO,SAAS,uBAAuB,CAAC,MAAM,EAAE;AACjD,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,2CAA2C,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE;AACpH,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE;AACvC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,qBAAqB;AACnC,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM;AACtB,CAAC,CAAC;AACF,CAAC,CAAC;AACF;AACA;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,CAAC,IAAI,GAAG,EAAE;AACV,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,EAAE,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACpC,CAAC;AACD;AACA;AACA;AACA,IAAI,YAAY,GAAG,WAAW;AAC9B,CAAC,SAAS,YAAY,CAAC,eAAe,EAAE;AACxC,EAAE,IAAI,CAAC,eAAe,GAAG,eAAe;AACxC,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;AACrB,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI;AACxB,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,CAAC;AACD,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;AACjD,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;AACtB,EAAE,IAAI,MAAM;AACZ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI;AACrB,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AACnC,GAAG,IAAI,UAAU,EAAE;AACnB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1B,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI;AACvC,KAAK,KAAK,IAAI,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACtL,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3B,IAAI,CAAC,SAAS;AACd,KAAK,IAAI;AACT,MAAM,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;AACrG,KAAK,CAAC,SAAS;AACf,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK;AAC9B,KAAK;AACL,IAAI;AACJ,SAAS,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,GAAG;AACH,GAAG,IAAI,gBAAgB,GAAG,IAAI,CAAC,eAAe;AAC9C,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,EAAE,IAAI;AAC3C,IAAI,gBAAgB,EAAE;AACtB,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE;AACf,IAAI,MAAM,GAAG,CAAC,YAAY,mBAAmB,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,GAAG;AACH,GAAG,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;AACrC,GAAG,IAAI,WAAW,EAAE;AACpB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI;AAC3B,IAAI,IAAI;AACR,KAAK,KAAK,IAAI,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE;AAC5J,MAAM,IAAI,SAAS,GAAG,eAAe,CAAC,KAAK;AAC3C,MAAM,IAAI;AACV,OAAO,aAAa,CAAC,SAAS,CAAC;AAC/B,MAAM,CAAC,CAAC,OAAO,GAAG,EAAE;AACpB,OAAO,MAAM,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,GAAG,MAAM,GAAG,EAAE;AAClE,OAAO,IAAI,GAAG,YAAY,mBAAmB,EAAE,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5H,YAAY,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,MAAM;AACN,KAAK;AACL,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3B,IAAI,CAAC,SAAS;AACd,KAAK,IAAI;AACT,MAAM,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;AACzG,KAAK,CAAC,SAAS;AACf,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK;AAC9B,KAAK;AACL,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,MAAM,EAAE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC;AACpD,EAAE;AACF,CAAC,CAAC;AACF,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,QAAQ,EAAE;AACjD,EAAE,IAAI,EAAE;AACR,EAAE,IAAI,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;AAC7E,OAAO;AACP,GAAG,IAAI,QAAQ,YAAY,YAAY,EAAE;AACzC,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACtD,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,GAAG;AACH,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;AAClG,EAAE;AACF,CAAC,CAAC;AACF,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,MAAM,EAAE;AACtD,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,EAAE,OAAO,UAAU,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1F,CAAC,CAAC;AACF,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,MAAM,EAAE;AACtD,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,IAAI,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM;AAClI,CAAC,CAAC;AACF,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,MAAM,EAAE;AACzD,EAAE,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,EAAE,IAAI,UAAU,KAAK,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI;AACnD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;AACnE,CAAC,CAAC;AACF,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,QAAQ,EAAE;AACpD,EAAE,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW;AACpC,EAAE,WAAW,IAAI,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;AACjD,EAAE,IAAI,QAAQ,YAAY,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,WAAW;AAClC,EAAE,IAAI,KAAK,GAAG,IAAI,YAAY,EAAE;AAChC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI;AACrB,EAAE,OAAO,KAAK;AACd,CAAC,CAAC,GAAG;AACL,CAAC,OAAO,YAAY;AACpB,CAAC,EAAE;AACH,IAAI,kBAAkB,GAAG,YAAY,CAAC,KAAK;AAC3C,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,CAAC,OAAO,KAAK,YAAY,YAAY,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;AAC/J;AACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE;AACzC,MAAM,SAAS,CAAC,WAAW,EAAE;AAC7B;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,CAEC,OAAO,EAAE,MAGV,CAAC;AACD;AACA;AACA,IAAI,eAAe,GAAG;AACtB,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,OAAO,EAAE;AACxC,EAAE,IAAI,IAAI,GAAG,EAAE;AACf,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;AAG5E,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,CAAC,CAAC;AACF,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE;AAEhC,EAAE,OAAO,CAAgF,YAAY,EAAE,MAAM,CAAC;AAC9G,CAAC,CAAC;AACF,CAAC,QAAQ,EAAE;AACX,CAAC;AACD;AACA;AACA,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,CAAC,eAAe,CAAC,UAAU,CAAC,WAAW;AAEvC,EACO,MAAM,GAAG;AAChB,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,IAAI,GAAG,CAAC;AAsBjB,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,CAYQ,EAAE,EAAE;AACZ;AAOA;AACA;AACA,IAAI,UAAU,GAAG,SAAS,MAAM,EAAE;AAClC,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;AAC9B,CAAC,SAAS,UAAU,CAAC,WAAW,EAAE;AAClC,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;AACvC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK;AACzB,EAAE,IAAI,WAAW,EAAE;AACnB,GAAG,KAAK,CAAC,WAAW,GAAG,WAAW;AAClC,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1D,EAAE,CAAC,MAAM,KAAK,CAAC,WAAW,GAAG,cAAc;AAC3C,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE;AACrD,EAAE,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;AAC7C,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;AAC5C,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,OAAO;AACP,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;AACxB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACnB,EAAE;AACF,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AAC5C,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;AACtB,OAAO;AACP,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;AACxB,GAAG,IAAI,CAAC,SAAS,EAAE;AACnB,EAAE;AACF,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACpB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;AACxB,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI;AAC1B,EAAE;AACF,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;AAC9C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;AAC7C,EAAE,IAAI;AACN,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,EAAE,CAAC,SAAS;AACZ,GAAG,IAAI,CAAC,WAAW,EAAE;AACrB,EAAE;AACF,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;AAC7C,EAAE,IAAI;AACN,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC9B,EAAE,CAAC,SAAS;AACZ,GAAG,IAAI,CAAC,WAAW,EAAE;AACrB,EAAE;AACF,CAAC,CAAC;AACF,CAAC,OAAO,UAAU;AAClB,CAAC,CAAC,YAAY,CAAC;AAKf,IAAI,gBAAgB,GAAG,WAAW;AAClC,CAAC,SAAS,gBAAgB,CAAC,eAAe,EAAE;AAC5C,EAAE,IAAI,CAAC,eAAe,GAAG,eAAe;AACxC,CAAC;AACD,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;AACnD,EAAE,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,EAAE,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI;AAChC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAC9B,EAAE;AACF,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;AAClD,EAAE,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE,IAAI;AACjC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAC9B,EAAE;AACF,OAAO,oBAAoB,CAAC,GAAG,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AAClD,EAAE,IAAI,eAAe,GAAG,IAAI,CAAC,eAAe;AAC5C,EAAE,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI;AACpC,GAAG,eAAe,CAAC,QAAQ,EAAE;AAC7B,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAC9B,EAAE;AACF,CAAC,CAAC;AACF,CAAC,OAAO,gBAAgB;AACxB,CAAC,EAAE;AACH,IAAI,cAAc,GAAG,SAAS,MAAM,EAAE;AACtC,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;AAClC,CAAC,SAAS,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC1D,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;AACvC,EAAE,IAAI,eAAe;AACrB,EAAE,IAAI,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG;AACzE,GAAG,IAAI,EAAE,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,cAAc,GAAG,MAAM;AACvF,GAAG,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM;AAC7D,GAAG,QAAQ,EAAE,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,QAAQ,GAAG;AACnE,GAAG;AACH,OAAO;AAEP,GAUU,eAAe,GAAG,cAAc;AAC1C,EAAE;AACF,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,eAAe,CAAC;AAC3D,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC,OAAO,cAAc;AACtB,CAAC,CAAC,UAAU,CAAC;AACb,SAAS,oBAAoB,CAAC,KAAK,EAAE;AACrC,CACM,oBAAoB,CAAC,KAAK,CAAC;AACjC;AACA,SAAS,mBAAmB,CAAC,GAAG,EAAE;AAClC,CAAC,MAAM,GAAG;AACV;AAOA,IAAI,cAAc,GAAG;AACrB,CAAC,MAAM,EAAE,IAAI;AACb,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,KAAK,EAAE,mBAAmB;AAC3B,CAAC,QAAQ,EAAE;AACX,CAAC;AACD;AACA;AACA,IAAI,UAAU,GAAG,CAAC,WAAW;AAC7B,CAAC,OAAO,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,cAAc;AAC3E,CAAC,GAAG;AACJ;AACA;AACA,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrB,CAAC,OAAO,CAAC;AACT;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,QAAQ;AACtC,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC,OAAO,SAAS,KAAK,CAAC,KAAK,EAAE;AAC9B,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE;AACvC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC;AAClB,EAAE,CAAC,EAAE,KAAK,CAAC;AACX,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,UAAU,GAAG,WAAW;AAC5B,CAAC,SAAS,UAAU,CAAC,SAAS,EAAE;AAChC,EAAE,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS;AAC5C,CAAC;AACD,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;AAChD,EAAE,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE;AACnC,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI;AAC1B,EAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ;AAChC,EAAE,OAAO,UAAU;AACnB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC5E,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,IAAI,UAAU,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,IAAI,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC;AACtH,EAAE,YAAY,CAAC,WAAW;AAC1B,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;AAC7D,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACzI,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,UAAU;AACnB,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,IAAI,EAAE;AACrD,EAAE,IAAI;AACN,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC/B,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE;AAChB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAClB,EAAE;AACF,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE;AAC5D,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;AAC3C,EAAE,OAAO,IAAI,WAAW,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;AACnD,GAAG,IAAI,UAAU,GAAG,IAAI,cAAc,CAAC;AACvC,IAAI,IAAI,EAAE,SAAS,KAAK,EAAE;AAC1B,KAAK,IAAI;AACT,MAAM,IAAI,CAAC,KAAK,CAAC;AACjB,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE;AACnB,MAAM,MAAM,CAAC,GAAG,CAAC;AACjB,MAAM,UAAU,CAAC,WAAW,EAAE;AAC9B,KAAK;AACL,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,MAAM;AACjB,IAAI,QAAQ,EAAE;AACd,IAAI,CAAC;AACL,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;AAC9B,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE;AACxD,EAAE,IAAI,EAAE;AACR,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,WAAW;AAC/C,EAAE,OAAO,IAAI;AACb,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;AACxC,EAAE,IAAI,UAAU,GAAG,EAAE;AACrB,EAAE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;AAC9E,EAAE,OAAO,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,WAAW,EAAE;AACxD,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;AAC3C,EAAE,OAAO,IAAI,WAAW,CAAC,SAAS,OAAO,EAAE,MAAM,EAAE;AACnD,GAAG,IAAI,KAAK;AACZ,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC/B,IAAI,OAAO,KAAK,GAAG,CAAC;AACpB,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE;AACpB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC;AACtB,GAAG,CAAC,EAAE,WAAW;AACjB,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC;AACzB,GAAG,CAAC,CAAC;AACL,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,SAAS,EAAE;AACzC,EAAE,OAAO,IAAI,UAAU,CAAC,SAAS,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,OAAO,UAAU;AAClB,CAAC,EAAE;AACH,SAAS,cAAc,CAAC,WAAW,EAAE;AACrC,CAAC,IAAI,EAAE;AACP,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,OAAO;AACrI;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,CAAC,OAAO,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtG;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,CAAC,OAAO,KAAK,IAAI,KAAK,YAAY,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC;AAC1F;AACA;AACA;AACA,SAAS,OAAO,CAAC,MAAM,EAAE;AACzB,CAAC,OAAO,YAAY,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;AACjF;AACA,SAAS,OAAO,CAAC,IAAI,EAAE;AACvB,CAAC,OAAO,SAAS,MAAM,EAAE;AACzB,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,YAAY,EAAE;AACjE,GAAG,IAAI;AACP,IAAI,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;AACnC,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACnB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC;AAC/D,CAAC,CAAC;AACF;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE;AACxF,CAAC,OAAO,IAAI,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;AACpF;AACA,IAAI,kBAAkB,GAAG,SAAS,MAAM,EAAE;AAC1C,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;AACtC,CAAC,SAAS,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE;AACtG,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI;AACpD,EAAE,KAAK,CAAC,UAAU,GAAG,UAAU;AAC/B,EAAE,KAAK,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,SAAS,KAAK,EAAE;AACzC,GAAG,IAAI;AACP,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,GAAG;AACH,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK;AAC5B,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE;AACzC,GAAG,IAAI;AACP,IAAI,OAAO,CAAC,GAAG,CAAC;AAChB,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,GAAG,CAAC,SAAS;AACb,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,GAAG;AACH,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM;AAC7B,EAAE,KAAK,CAAC,SAAS,GAAG,UAAU,GAAG,WAAW;AAC5C,GAAG,IAAI;AACP,IAAI,UAAU,EAAE;AAChB,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,GAAG,CAAC,SAAS;AACb,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,GAAG;AACH,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS;AAChC,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC,kBAAkB,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;AACvD,EAAE,IAAI,EAAE;AACR,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC3D,GAAG,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM;AAC7B,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,GAAG,CAAC,QAAQ,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,EAAE;AACF,CAAC,CAAC;AACF,CAAC,OAAO,kBAAkB;AAC1B,CAAC,CAAC,UAAU,CAAC;AACb;AACA;AACA,IAAI,uBAAuB,GAAG,gBAAgB,CAAC,SAAS,MAAM,EAAE;AAChE,CAAC,OAAO,SAAS,2BAA2B,GAAG;AAC/C,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,EAAE,IAAI,CAAC,IAAI,GAAG,yBAAyB;AACvC,EAAE,IAAI,CAAC,OAAO,GAAG,qBAAqB;AACtC,CAAC,CAAC;AACF,CAAC,CAAC;AACF;AACA;AACA,IAAI,OAAO,GAAG,SAAS,MAAM,EAAE;AAC/B,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;AAC3B,CAAC,SAAS,OAAO,GAAG;AACpB,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;AACvC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK;AACtB,EAAE,KAAK,CAAC,gBAAgB,GAAG,IAAI;AAC/B,EAAE,KAAK,CAAC,SAAS,GAAG,EAAE;AACtB,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK;AACzB,EAAE,KAAK,CAAC,QAAQ,GAAG,KAAK;AACxB,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI;AAC1B,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,QAAQ,EAAE;AAC7C,EAAE,IAAI,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;AAChD,EAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ;AAC7B,EAAE,OAAO,OAAO;AAChB,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,WAAW;AAC/C,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,uBAAuB,EAAE;AACtD,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;AAC1C,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,YAAY,CAAC,WAAW;AAC1B,GAAG,IAAI,GAAG,EAAE,EAAE;AACd,GAAG,KAAK,CAAC,cAAc,EAAE;AACzB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACzB,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACrF,IAAI,IAAI;AACR,KAAK,KAAK,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACnH,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3B,IAAI,CAAC,SAAS;AACd,KAAK,IAAI;AACT,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACzD,KAAK,CAAC,SAAS;AACf,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK;AAC9B,KAAK;AACL,IAAI;AACJ,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;AACzC,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,YAAY,CAAC,WAAW;AAC1B,GAAG,KAAK,CAAC,cAAc,EAAE;AACzB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACzB,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI;AAC3C,IAAI,KAAK,CAAC,WAAW,GAAG,GAAG;AAC3B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS;AACnC,IAAI,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AACzD,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AACzC,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,YAAY,CAAC,WAAW;AAC1B,GAAG,KAAK,CAAC,cAAc,EAAE;AACzB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACzB,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI;AAC1B,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS;AACnC,IAAI,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;AACzD,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;AAC5C,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI;AACrC,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC/C,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE;AACtD,EAAE,GAAG,EAAE,WAAW;AAClB,GAAG,IAAI,EAAE;AACT,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,CAAC;AACpF,EAAE,CAAC;AACH,EAAE,UAAU,EAAE,KAAK;AACnB,EAAE,YAAY,EAAE;AAChB,EAAE,CAAC;AACH,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,UAAU,EAAE;AACxD,EAAE,IAAI,CAAC,cAAc,EAAE;AACvB,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AAC9D,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE;AACrD,EAAE,IAAI,CAAC,cAAc,EAAE;AACvB,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;AAC1C,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,UAAU,EAAE;AAC1D,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS;AAC3F,EAAE,IAAI,QAAQ,IAAI,SAAS,EAAE,OAAO,kBAAkB;AACtD,EAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC9B,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5B,EAAE,OAAO,IAAI,YAAY,CAAC,WAAW;AACrC,GAAG,KAAK,CAAC,gBAAgB,GAAG,IAAI;AAChC,GAAG,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;AACnC,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,GAAG,SAAS,UAAU,EAAE;AAClE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,GAAG,EAAE,CAAC,SAAS;AAC/F,EAAE,IAAI,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;AAC7C,OAAO,IAAI,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE;AAC3C,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,WAAW;AAC7C,EAAE,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE;AACnC,EAAE,UAAU,CAAC,MAAM,GAAG,IAAI;AAC1B,EAAE,OAAO,UAAU;AACnB,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE;AAChD,EAAE,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,OAAO,OAAO;AACf,CAAC,CAAC,UAAU,CAAC;AACb,IAAI,gBAAgB,GAAG,SAAS,MAAM,EAAE;AACxC,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;AACpC,CAAC,SAAS,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE;AAChD,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;AACvC,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW;AACjC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;AACvB,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;AACnD,EAAE,IAAI,EAAE,EAAE,EAAE;AACZ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;AAC7H,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;AAClD,EAAE,IAAI,EAAE,EAAE,EAAE;AACZ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC;AAC5H,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AAClD,EAAE,IAAI,EAAE,EAAE,EAAE;AACZ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1H,CAAC,CAAC;AACF,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE;AAC9D,EAAE,IAAI,EAAE,EAAE,EAAE;AACZ,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,kBAAkB;AACpJ,CAAC,CAAC;AACF,CAAC,OAAO,gBAAgB;AACxB,CAAC,CAAC,OAAO,CAAC;AACV;AACA;AACA,IAAI,eAAe,GAAG,SAAS,MAAM,EAAE;AACvC,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;AACnC,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE;AAClC,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI;AACvC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;AACvB,EAAE,OAAO,KAAK;AACd,CAAC;AACD,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE;AAC3D,EAAE,GAAG,EAAE,WAAW;AAClB,GAAG,OAAO,IAAI,CAAC,QAAQ,EAAE;AACzB,EAAE,CAAC;AACH,EAAE,UAAU,EAAE,KAAK;AACnB,EAAE,YAAY,EAAE;AAChB,EAAE,CAAC;AACH,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE;AAC7D,EAAE,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;AACvE,EAAE,CAAC,YAAY,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,EAAE,OAAO,YAAY;AACrB,CAAC,CAAC;AACF,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;AACjD,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;AACzF,EAAE,IAAI,QAAQ,EAAE,MAAM,WAAW;AACjC,EAAE,IAAI,CAAC,cAAc,EAAE;AACvB,EAAE,OAAO,MAAM;AACf,CAAC,CAAC;AACF,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;AAClD,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvD,CAAC,CAAC;AACF,CAAC,OAAO,eAAe;AACvB,CAAC,CAAC,OAAO,CAAC;AACV;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,CAAC,OAAO,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC7C;AACA;AACA;AACA,SAAS,IAAI,CAAC,GAAG,EAAE;AACnB,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3B;AACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACjC,CAAC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;AACtD;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM;AACrD;AACA;AACA;AACA,IAAI,WAAW,IAAI,SAAS,CAAC,EAAE;AAC/B,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU;AACpE,CAAC,CAAC;AACF;AACA;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,CAAC,OAAO,YAAY,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9E;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC;AACA;AACA;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,CAAC,OAAO,MAAM,CAAC,aAAa,IAAI,YAAY,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjH;AACA;AACA;AACA,SAAS,gCAAgC,CAAC,KAAK,EAAE;AACjD,CAAC,uBAAuB,IAAI,SAAS,CAAC,eAAe,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,mBAAmB,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,0HAA0H,CAAC;AAC7Q;AACA;AACA;AACA,SAAS,iBAAiB,GAAG;AAC7B,CAAC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,YAAY;AAC1E,CAAC,OAAO,MAAM,CAAC,QAAQ;AACvB;AACA,IAAI,QAAQ,GAAG,iBAAiB,EAAE;AAClC;AACA;AACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,CAAC,OAAO,YAAY,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACnF;AACA;AACA;AACA,SAAS,kCAAkC,CAAC,cAAc,EAAE;AAC5D,CAAC,OAAO,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,oCAAoC,GAAG;AAC1F,EAAE,IAAI,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI;AAC7B,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;AACxC,GAAG,QAAQ,EAAE,CAAC,KAAK;AACnB,IAAI,KAAK,CAAC;AACV,KAAK,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE;AACxC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,MAAM,CAAC;AACP;AACA,MAAM,CAAC;AACP,MAAM;AACN,MAAM,CAAC;AACP,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI;AACrD,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,KAAK,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChC,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACjC,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACjC,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,CAAC,IAAI,EAAE;AACd,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAClB,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1B,IAAI,KAAK,CAAC;AACV,KAAK,MAAM,CAAC,WAAW,EAAE;AACzB,KAAK,OAAO,CAAC,CAAC,CAAC;AACf,IAAI,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvB;AACA,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,CAAC,OAAO,YAAY,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;AAC7E;AACA;AACA;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,CAAC,IAAI,KAAK,YAAY,UAAU,EAAE,OAAO,KAAK;AAC9C,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE;AACpB,EAAE,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO,qBAAqB,CAAC,KAAK,CAAC;AACrE,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC;AACrD,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC;AACjD,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC;AAC7D,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,YAAY,CAAC,KAAK,CAAC;AACnD,EAAE,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,OAAO,sBAAsB,CAAC,KAAK,CAAC;AACvE,CAAC;AACD,CAAC,MAAM,gCAAgC,CAAC,KAAK,CAAC;AAC9C;AACA,SAAS,qBAAqB,CAAC,GAAG,EAAE;AACpC,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE;AAC7B,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AACnE,EAAE,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC;AACvF,CAAC,CAAC,CAAC;AACH;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxF,EAAE,UAAU,CAAC,QAAQ,EAAE;AACvB,CAAC,CAAC,CAAC;AACH;AACA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE;AAC/B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,UAAU,CAAC,QAAQ,EAAE;AACzB,GAAG;AACH,EAAE,CAAC,EAAE,SAAS,GAAG,EAAE;AACnB,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC;AACrC,CAAC,CAAC,CAAC;AACH;AACA,SAAS,YAAY,CAAC,QAAQ,EAAE;AAChC,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,IAAI,GAAG,EAAE,EAAE;AACb,EAAE,IAAI;AACN,GAAG,KAAK,IAAI,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE;AACrI,IAAI,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK;AAClC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE;AAC3B,GAAG;AACH,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AACzB,EAAE,CAAC,SAAS;AACZ,GAAG,IAAI;AACP,IAAI,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3F,GAAG,CAAC,SAAS;AACb,IAAI,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK;AAC5B,GAAG;AACH,EAAE;AACF,EAAE,UAAU,CAAC,QAAQ,EAAE;AACvB,CAAC,CAAC,CAAC;AACH;AACA,SAAS,iBAAiB,CAAC,aAAa,EAAE;AAC1C,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;AAC3D,GAAG,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,SAAS,sBAAsB,CAAC,cAAc,EAAE;AAChD,CAAC,OAAO,iBAAiB,CAAC,kCAAkC,CAAC,cAAc,CAAC,CAAC;AAC7E;AACA,SAAS,SAAS,CAAC,aAAa,EAAE,UAAU,EAAE;AAC9C,CAAC,IAAI,eAAe,EAAE,iBAAiB;AACvC,CAAC,IAAI,GAAG,EAAE,EAAE;AACZ,CAAC,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;AACnD,EAAE,IAAI,KAAK,EAAE,KAAK;AAClB,EAAE,OAAO,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;AACxC,GAAG,QAAQ,EAAE,CAAC,KAAK;AACnB,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM;AACN,MAAM,CAAC;AACP,KAAK,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC;AACnD,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC;AAC9C,IAAI,KAAK,CAAC;AACV,KAAK,IAAI,EAAE,iBAAiB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,KAAK,KAAK,GAAG,iBAAiB,CAAC,KAAK;AACpC,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACtC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACzB,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1B,IAAI,KAAK,CAAC;AACV,KAAK,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE;AACtB,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3B,KAAK,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;AACnB,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,MAAM,CAAC;AACP;AACA,MAAM,CAAC;AACP,MAAM;AACN,MAAM,CAAC;AACP,KAAK,IAAI,EAAE,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACxG,KAAK,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACzC,IAAI,KAAK,CAAC;AACV,KAAK,EAAE,CAAC,IAAI,EAAE;AACd,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;AACjB,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1B,IAAI,KAAK,CAAC;AACV,KAAK,IAAI,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK;AAC7B,KAAK,OAAO,CAAC,CAAC,CAAC;AACf,IAAI,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvB,IAAI,KAAK,EAAE;AACX,KAAK,UAAU,CAAC,QAAQ,EAAE;AAC1B,KAAK,OAAO,CAAC,CAAC,CAAC;AACf;AACA,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,eAAe,CAAC,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;AAC7E,CAAC,IAAI,KAAK,KAAK,MAAM,EAAE,KAAK,GAAG,CAAC;AAChC,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,MAAM,GAAG,KAAK;AACtC,CAAC,IAAI,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW;AAC1D,EAAE,IAAI,EAAE;AACR,EAAE,IAAI,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChE,OAAO,IAAI,CAAC,WAAW,EAAE;AACzB,CAAC,CAAC,EAAE,KAAK,CAAC;AACV,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAC7C,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,oBAAoB;AACzC;AACA;AACA;AACA,SAAS,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE;AACrC,CAAC,IAAI,KAAK,KAAK,MAAM,EAAE,KAAK,GAAG,CAAC;AAChC,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AACxE,GAAG,OAAO,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AAC5D,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,EAAE,CAAC,EAAE,WAAW;AAChB,GAAG,OAAO,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AAC5D,IAAI,OAAO,UAAU,CAAC,QAAQ,EAAE;AAChC,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,EAAE,CAAC,EAAE,SAAS,GAAG,EAAE;AACnB,GAAG,OAAO,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AAC5D,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,EAAE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE;AACvC,CAAC,IAAI,KAAK,KAAK,MAAM,EAAE,KAAK,GAAG,CAAC;AAChC,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW;AAC/C,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;AACtC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AACZ,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE;AAC9C,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3E;AACA;AACA;AACA,SAAS,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE;AAC3C,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC3E;AACA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACzC,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,WAAW;AACvC,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE;AAChD,QAAQ;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC3C,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE;AAC5C,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,IAAI,UAAU;AAChB,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AACpD,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjC,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AACrD,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,KAAK;AACb,IAAI,IAAI,IAAI;AACZ,IAAI,IAAI;AACR,KAAK,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI;AAC7D,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE;AAClB,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,KAAK;AACL,IAAI;AACJ,IAAI,IAAI,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;AACnC,SAAS,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACd,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,WAAW;AACpB,GAAG,OAAO,YAAY,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE;AACxH,EAAE,CAAC;AACH,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE;AACjD,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AACvD,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,UAAU,EAAE;AAC5C,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AACpD,GAAG,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AAC/C,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AACrD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,MAAM,EAAE;AAC1C,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;AAC3C,UAAU,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACvC,IAAI,CAAC,CAAC;AACN,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACd,EAAE,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE;AACtD,CAAC,OAAO,qBAAqB,CAAC,kCAAkC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;AACnF;AACA;AACA;AACA,SAAS,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AACrC,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE;AACpB,EAAE,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC;AAC7E,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC;AAChE,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC;AAChE,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC;AAC5E,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AAClE,EAAE,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,OAAO,0BAA0B,CAAC,KAAK,EAAE,SAAS,CAAC;AACtF,CAAC;AACD,CAAC,MAAM,gCAAgC,CAAC,KAAK,CAAC;AAC9C;AACA;AACA;AACA,SAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE;AAChC,CAAC,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;AAClE;AACA;AACA;AACA,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/B,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AACxE,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,EAAE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO;AAC7B,SAAS,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE;AAC/B,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;AACtF;AACA,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,CAAC,OAAO,GAAG,CAAC,SAAS,IAAI,EAAE;AAC3B,EAAE,OAAO,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO;AAC7B,IAAI,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI;AACjG,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,EAAE,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO;AACjC,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,IAAI,EAAE;AACT,GAAG;AACH,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE;AACvB,GAAG,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B,GAAG,OAAO;AACV,IAAI,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE;AACjC,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC;AACxB,IAAI,CAAC,CAAC;AACN,IAAI;AACJ,IAAI;AACJ,EAAE;AACF,CAAC;AACD,CAAC,OAAO;AACR,EAAE,IAAI;AACN,EAAE,IAAI,EAAE;AACR,EAAE;AACF;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,CAAC,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,WAAW;AAC7E;AACA;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;AACpC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;AAC7C,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM;AACxC,CAAC,CAAC,EAAE,EAAE,CAAC;AACP;AACA;AACA;AACA,SAAS,aAAa,GAAG;AACzB,CAAC,IAAI,IAAI,GAAG,EAAE;AACd,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;AACvE,CAAC,IAAI,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;AACnC,CAAC,IAAI,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC7C,CAAC,IAAI,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI;AAC3E,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC;AACzD,CAAC,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,GAAG,SAAS,MAAM,EAAE;AAC/F,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACnC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AACf,CAAC,OAAO,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM;AAC/E;AACA,SAAS,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE;AACnE,CAAC,IAAI,cAAc,KAAK,MAAM,EAAE,cAAc,GAAG,QAAQ;AACzD,CAAC,OAAO,SAAS,UAAU,EAAE;AAC7B,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW;AACtC,GAAG,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM;AAClC,GAAG,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;AACjC,GAAG,IAAI,MAAM,GAAG,MAAM;AACtB,GAAG,IAAI,oBAAoB,GAAG,MAAM;AACpC,GAAG,IAAI,OAAO,GAAG,SAAS,CAAC,EAAE;AAC7B,IAAI,aAAa,CAAC,SAAS,EAAE,WAAW;AACxC,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;AACjD,KAAK,IAAI,aAAa,GAAG,KAAK;AAC9B,KAAK,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AAC3E,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK;AACvB,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,OAAO,aAAa,GAAG,IAAI;AAC3B,OAAO,oBAAoB,EAAE;AAC7B,MAAM;AACN,MAAM,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAChF,KAAK,CAAC,EAAE,WAAW;AACnB,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE;AAC1C,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,CAAC,EAAE,UAAU,CAAC;AAClB,GAAG,CAAC;AACJ,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9C,EAAE,CAAC,EAAE,UAAU,CAAC;AAChB,CAAC,CAAC;AACF;AACA,SAAS,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE;AACzD,CAAC,IAAI,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;AACjE,MAAM,OAAO,EAAE;AACf;AACA;AACA;AACA,SAAS,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,EAAE;AAC/H,CAAC,IAAI,MAAM,GAAG,EAAE;AAChB,CAAC,IAAI,MAAM,GAAG,CAAC;AACf,CAAC,IAAI,KAAK,GAAG,CAAC;AACd,CAAC,IAAI,UAAU,GAAG,KAAK;AACvB,CAAC,IAAI,aAAa,GAAG,WAAW;AAChC,EAAE,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE;AACpE,CAAC,CAAC;AACF,CAAC,IAAI,SAAS,GAAG,SAAS,KAAK,EAAE;AACjC,EAAE,OAAO,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,IAAI,UAAU,GAAG,SAAS,KAAK,EAAE;AAElC,EAAE,MAAM,EAAE;AACV,EAAE,IAAI,aAAa,GAAG,KAAK;AAC3B,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE;AAEzG,GACQ,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,EAAE,CAAC,EAAE,WAAW;AAChB,GAAG,aAAa,GAAG,IAAI;AACvB,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW;AACxB,GAAG,IAAI,aAAa,EAAE,IAAI;AAC1B,IAAI,MAAM,EAAE;AACZ,IAAI,IAAI,OAAO,GAAG,WAAW;AAC7B,KAAK,IAAI,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE;AACvC,KAAK,IAAI,iBAAiB,EAAE;AAG5B,UAAU,UAAU,CAAC,aAAa,CAAC;AACnC,IAAI,CAAC;AACL,IAAI,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE;AAC1D,IAAI,aAAa,EAAE;AACnB,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACzB,GAAG;AACH,EAAE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AAC7E,EAAE,UAAU,GAAG,IAAI;AACnB,EAAE,aAAa,EAAE;AACjB,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,OAAO,WAAW;AAEnB,CAAC,CAAC;AACF;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE;AACvD,CAAC,IAAI,UAAU,KAAK,MAAM,EAAE,UAAU,GAAG,QAAQ;AACjD,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AAClE,EAAE,OAAO,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;AAC7B,GAAG,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACrC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC,CAAC,EAAE,UAAU,CAAC;AACf,MAAM,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,UAAU,GAAG,cAAc;AACzE,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,OAAO,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC;AAChE,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE;AACpC,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AACxE,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3E,EAAE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE;AACnF,CAAC,OAAO,SAAS,MAAM,EAAE,UAAU,EAAE;AACrC,EAAE,IAAI,QAAQ,GAAG,OAAO;AACxB,EAAE,IAAI,KAAK,GAAG,IAAI;AAClB,EAAE,IAAI,KAAK,GAAG,CAAC;AACf,EAAE,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,KAAK,EAAE;AACxE,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE;AAClB,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC;AAE7E,EAAE,CAAC,EAAwB,CAAC,WAAW;AACvC,GAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,GAAG,UAAU,CAAC,QAAQ,EAAE;AACxB,EAAE,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AACF;AACA;AACA;AACA,SAAS,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE;AACnC,CAAC,OAAO,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACrF;AACA;AACA;AACA,IAAI,UAAU,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE;AACtC,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG;AAC5B,CAAC;AACD,SAAS,OAAO,GAAG;AACnB,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;AACtD,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,SAAS,QAAQ,CAAC,QAAQ,EAAE;AAC5B,CAAC,OAAO,OAAO,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE;AAC7C,EAAE,IAAI;AACN,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;AAC/B,EAAE,CAAC,SAAS;AACZ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,EAAE;AACF,CAAC,CAAC,CAAC;AACH;AA2EA;AACA;AACA,IAAI,WAAW,GAAG,MAAM,CAAC,cAAc;AACvC,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AAC9D,CAAC,KAAK;AACN,CAAC,YAAY,EAAE;AACf,CAAC,CAAC;AACF,IAAI,YAAY,GAAG,cAAc,eAAe,CAAC;AACjD,CAAC;AACD,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;AAChC;AACA,CAAC,MAAM,GAAG,EAAE;AACZ,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE;AACzB,EAAE,KAAK,CAAC;AACR,GAAG,IAAI,EAAE,MAAM;AACf,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACzB,CAAC;AACD,CAAC,WAAW,CAAC,KAAK,EAAE;AACpB,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AACjC,GAAG,GAAG,kBAAkB,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC7D,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,KAAK;AAC9D,KAAK,IAAI,UAAU,GAAG,QAAQ;AAC9B,KAAK,IAAI,KAAK,GAAG,MAAM;AACvB,KAAK,IAAI,UAAU,GAAG,KAAK;AAC3B,KAAK,IAAI,WAAW,GAAG,EAAE;AACzB,KAAK,IAAI,YAAY,GAAG,IAAI;AAC5B,KAAK,QAAQ,IAAI;AACjB,MAAM,KAAK,MAAM;AACjB,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM;AAC5B,OAAO,UAAU,GAAG,KAAK;AACzB,OAAO,UAAU,GAAG,IAAI;AACxB,OAAO;AACP,MAAM,KAAK,KAAK;AAChB,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAChC,OAAO,UAAU,GAAG,QAAQ;AAC5B,OAAO,UAAU,GAAG,IAAI;AACxB,OAAO;AACP,MAAM,KAAK,SAAS;AACpB,OAAO,KAAK,GAAG,CAAC;AAChB,OAAO,UAAU,GAAG,KAAK;AACzB,OAAO,UAAU,GAAG,IAAI;AACxB,OAAO;AACP,MAAM,KAAK,OAAO;AAClB,OAAO,KAAK,GAAG,CAAC;AAChB,OAAO,UAAU,GAAG,QAAQ;AAC5B,OAAO,UAAU,GAAG,IAAI;AACxB,OAAO;AACP,MAAM,KAAK,QAAQ;AACnB,OAAO,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;AACtB,OAAO,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;AAClC,OAAO,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,OAAO,WAAW,GAAG,QAAQ;AAC7B,OAAO,IAAI,WAAW,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,UAAU,GAAG,QAAQ;AAC1E,YAAY,IAAI,WAAW,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK;AAC5E,YAAY,IAAI,WAAW,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,YAAY,GAAG,KAAK;AAChF,YAAY,UAAU,GAAG,QAAQ;AACjC,OAAO,UAAU,GAAG,IAAI;AACxB,OAAO;AACP;AACA,KAAK,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;AAClD,KAAK,IAAI,UAAU,IAAI,YAAY,EAAE,IAAI,IAAI,KAAK,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;AACtE,MAAM,IAAI,EAAE,UAAU;AACtB,MAAM,KAAK;AACX,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,UAAU,IAAI,CAAC,IAAI,CAAC;AACpB,MAAM,IAAI,EAAE,UAAU;AACtB,MAAM,KAAK;AACX,MAAM,KAAK,EAAE;AACb,MAAM,CAAC;AACP,KAAK,OAAO,MAAM;AAClB,IAAI,CAAC;AACL,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9C,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,GAAG,GAAG,kBAAkB,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK;AAC1D,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM;AAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC;AACd,KAAK,IAAI,EAAE,QAAQ;AACnB,KAAK,KAAK;AACV,KAAK,KAAK,EAAE,CAAC,KAAK;AAClB,KAAK,CAAC;AACN,IAAI,OAAO,IAAI;AACf,GAAG,CAAC,EAAE,KAAK;AACX,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,IAAI,KAAK,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,MAAM;AACpB,CAAC;AACD,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE;AACrB,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC;AACZ,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,KAAK,EAAE;AACV,GAAG,CAAC;AACJ,CAAC;AACD,CAAC;AACD,IAAI,cAAc,mBAAmB,QAAQ,CAAC,CAAC,KAAK,KAAK;AACzD,CAAC,OAAO,QAAQ,IAAI,KAAK;AACzB,CAAC,EAAE,gBAAgB,CAAC;AACpB,IAAI,aAAa,GAAG,cAAc,eAAe,CAAC;AAClD,CAAC;AACD,EAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;AACjC;AACA,CAAC,IAAI;AACL,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE;AACvB,EAAE,KAAK,CAAC;AACR,GAAG,IAAI,EAAE,MAAM;AACf,GAAG,KAAK,EAAE;AACV,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACvB,CAAC;AACD,CAAC,WAAW,CAAC,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;AAC7B,GAAG,GAAG,kBAAkB,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK;AAC7D,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC9C,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,GAAG,GAAG,kBAAkB,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK;AACpE,IAAI,MAAM,GAAG,GAAG,IAAI;AACpB,IAAI,MAAM,UAAU,GAAG,GAAG,IAAI,MAAM,GAAG,QAAQ,GAAG,KAAK;AACvD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AACvB,IAAI,IAAI,CAAC,IAAI,CAAC;AACd,KAAK,IAAI,EAAE,UAAU;AACrB,KAAK,GAAG;AACR,KAAK;AACL,KAAK,CAAC;AACN,IAAI,OAAO,IAAI;AACf,GAAG,CAAC,EAAE,KAAK,CAAC;AACZ,GAAG,cAAc,kBAAkB,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK;AAC9D,IAAI,MAAM,GAAG,GAAG,IAAI;AACpB,IAAI,IAAI,GAAG,IAAI,MAAM,EAAE;AACvB,KAAK,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAC9B,KAAK,OAAO,MAAM,CAAC,GAAG,CAAC;AACvB,KAAK,IAAI,CAAC,IAAI,CAAC;AACf,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,GAAG;AACT,MAAM;AACN,MAAM,CAAC;AACP,KAAK,OAAO,IAAI;AAChB,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,GAAG,CAAC,EAAE,gBAAgB;AACtB,GAAG,CAAC;AACJ,CAAC;AACD,CAAC,IAAI,GAAG,GAAG;AACX,EAAE,OAAO,IAAI,CAAC,IAAI;AAClB,CAAC;AACD,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AACjB,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,CAAC,IAAI,CAAC;AACZ,GAAG,IAAI,EAAE,OAAO;AAChB,GAAG,KAAK,EAAE;AACV,GAAG,CAAC;AACJ,CAAC;AACD,CAAC;AACD,IAAI,eAAe,mBAAmB,QAAQ,CAAC,CAAC,KAAK,KAAK;AAC1D,CAAC,OAAO,MAAM,IAAI,KAAK;AACvB,CAAC,EAAE,iBAAiB,CAAC;AACrB,IAAI,aAAa,GAAG,iBAAiB,QAAQ,CAAC,MAAM;AACpD,CAAC,MAAM,SAAS,GAAG,oBAAoB;AACvC,CAAC,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AACxC,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG;AACtD,GAAG,wBAAwB,EAAE,IAAI;AACjC,GAAG,2BAA2B,EAAE;AAChC,GAAG;AACH,EAAE,OAAO,UAAU,CAAC,SAAS,CAAC;AAC9B,CAAC;AACD,CAAC,IAAI,SAAS;AACd,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,SAAS,GAAG,MAAM;AACtD,MAAM,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC5H,MAAM,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,SAAS,GAAG,IAAI;AACvD,MAAM;AACN,EAAE,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC;AACpE,EAAE,OAAO;AACT,GAAG,wBAAwB,EAAE,IAAI;AACjC,GAAG,2BAA2B,EAAE;AAChC,GAAG;AACH,CAAC;AACD,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG;AACnD,EAAE,wBAAwB,EAAE,IAAI;AAChC,EAAE,2BAA2B,EAAE;AAC/B,EAAE;AACF,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC;AAC5B,CAAC,EAAE,wBAAwB,CAAC,GAAG;AAC/B,IAAI,eAAe,mBAAmB,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC5D,CAAC,IAAI,aAAa,CAAC,wBAAwB,EAAE,aAAa,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAC5F,CAAC,EAAE,iBAAiB,CAAC;AACrB,SAAS,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE;AACvC,CAAC,IAAI,OAAO;AACZ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC;AAC1E,MAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC;AAC9G,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC;AACjD,CAAC,MAAM,QAAQ,mBAAmB,QAAQ,CAAC,MAAM;AACjD,EAAE,IAAI,OAAO,YAAY,YAAY,EAAE,OAAO,OAAO,CAAC,KAAK;AAC3D,OAAO,IAAI,OAAO,YAAY,aAAa,EAAE,OAAO,OAAO,CAAC,GAAG;AAC/D,EAAE,OAAO,OAAO,CAAC,KAAK;AACtB,CAAC,CAAC,EAAE,UAAU,CAAC;AACf,CAAC,MAAM,EAAE,mBAAmB,QAAQ,CAAC,WAAW;AAChD,EAAE,eAAe,CAAC,EAAE,CAAC;AACrB,EAAE,OAAO,QAAQ,EAAE;AACnB,CAAC,CAAC,EAAE,IAAI,CAAC;AACT,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK;AACrB,EAAE,MAAM,YAAY,GAAG,QAAQ,EAAE;AACjC,EAAE,IAAI,UAAU,GAAG,IAAI;AACvB,EAAE,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;AACtE,OAAO,UAAU,GAAG,YAAY,KAAK,KAAK;AAC1C,EAAE,IAAI,UAAU,EAAE,IAAI,OAAO,YAAY,YAAY,EAAE,OAAO,CAAC,KAAK,GAAG,KAAK;AAC5E,OAAO,IAAI,OAAO,YAAY,aAAa,EAAE,OAAO,CAAC,GAAG,GAAG,KAAK;AAChE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,SAAS,GAAG,KAAK;AACrB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM;AACnB,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI;AACrB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,QAAQ,GAAG,MAAM;AACrB,EAAE,EAAE,CAAC,SAAS,GAAG,KAAK;AACtB,EAAE,IAAI,OAAO,YAAY,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;AACpD,GAAG,IAAI,EAAE,MAAM;AACf,GAAG,KAAK,EAAE,OAAO,CAAC;AAClB,GAAG,CAAC;AACJ,OAAO,IAAI,OAAO,YAAY,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC;AAC1D,GAAG,IAAI,EAAE,MAAM;AACf,GAAG,KAAK,EAAE,OAAO,CAAC;AAClB,GAAG,CAAC;AACJ,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,QAAQ,KAAK;AAC3B,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,QAAQ,KAAK;AAC3B,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC3C,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,QAAQ,GAAG,OAAO;AACtB,CAAC,OAAO,EAAE;AACV;AACA,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC1B,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;AACrC;AACA,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC9B,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY;AAC/C;AACA,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;AAClC,SAAS,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE;AACjD,CAAC,MAAM,YAAY,mBAAmB,IAAI,GAAG,EAAE;AAC/C,CAAC,IAAI,IAAI,GAAG,IAAI;AAChB,CAAC,IAAI,iBAAiB;AACtB,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,wBAAwB;AAC/D,CAAC,aAAa,CAAC,wBAAwB,GAAG,CAAC,OAAO,KAAK;AACvD,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,iBAAiB,GAAG,eAAe,EAAE;AACtC,CAAC,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,YAAY,GAAG,iBAAiB;AAClE,CAAC,aAAa,CAAC,wBAAwB,GAAG,eAAe;AACzD,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACzE,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,IAAI,GAAG,EAAE;AAChD,GAAG,MAAM,WAAW,GAAG,GAAG;AAC1B,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE;AACpG,EAAE;AACF,EAAE,OAAO,GAAG,CAAC,UAAU;AACvB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC;AAC9F,CAAC,MAAM,EAAE,mBAAmB,QAAQ,CAAC,WAAW;AAChD,EAAE,eAAe,CAAC,EAAE,CAAC;AACrB,EAAE,OAAO,iBAAiB;AAC1B,CAAC,CAAC,EAAE,IAAI,CAAC;AACT,CAAC,EAAE,CAAC,UAAU,GAAG,kBAAkB;AACnC,CAAC,EAAE,CAAC,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AAC3D,EAAE,iBAAiB,GAAG,KAAK;AAC3B,CAAC,CAAC,CAAC;AACH,CAAC,EAAE,CAAC,YAAY,GAAG,YAAY;AAC/B,CAAC,aAAa,CAAC,2BAA2B,GAAG,EAAE,CAAC,YAAY,CAAC;AAC7D,CAAC,IAAI,GAAG,KAAK;AACb,CAAC,OAAO,EAAE;AACV;AACA,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC9B,SAAS,YAAY,CAAC,oBAAoB,EAAE,aAAa,EAAE;AAC3D,CAAC,MAAM,YAAY,mBAAmB,IAAI,GAAG,EAAE;AAC/C,CAAC,IAAI,IAAI,GAAG,IAAI;AAChB,CAAC,IAAI,iBAAiB;AACtB,CAAC,IAAI,eAAe;AACpB,CAAC,IAAI,YAAY;AACjB,CAAC,IAAI,aAAa;AAClB,CAAC,IAAI,OAAO;AACZ,CAAC,IAAI,aAAa;AAClB,CAAC,IAAI,YAAY,GAAG,KAAK;AACzB,CAAC,IAAI,eAAe;AACpB,CAAC,IAAI,UAAU,GAAG,CAAC;AACnB,CAAC,IAAI,kBAAkB,GAAG,IAAI;AAC9B,CAAC,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE;AACjD,EAAE,eAAe,GAAG,oBAAoB;AACxC,EAAE,OAAO,GAAG,aAAa,EAAE,KAAK;AAChC,CAAC,CAAC,MAAM;AACR,EAAE,MAAM,OAAO,GAAG,oBAAoB;AACtC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM;AAC/B,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW;AACrC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK;AACzB,EAAE,IAAI,OAAO,YAAY,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACrE,GAAG,MAAM,QAAQ,GAAG,YAAY;AAChC,GAAG,eAAe,mBAAmB,QAAQ,CAAC,MAAM;AACpD,IAAI,MAAM,WAAW,GAAG,QAAQ,EAAE;AAClC,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,KAAK,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;AAC7D,KAAK,aAAa,GAAG;AACrB,MAAM,MAAM,EAAE,WAAW;AACzB,MAAM,KAAK,EAAE;AACb,MAAM;AACN,KAAK,OAAO,MAAM;AAClB,IAAI,CAAC,MAAM;AACX,KAAK,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC;AAC9C,KAAK,aAAa,GAAG;AACrB,MAAM,MAAM,EAAE,WAAW;AACzB,MAAM,KAAK,EAAE;AACb,MAAM;AACN,KAAK,OAAO,MAAM;AAClB,IAAI;AACJ,GAAG,CAAC,EAAE,iBAAiB,CAAC;AACxB,EAAE,CAAC,MAAM;AACT,GAAG,MAAM,MAAM,GAAG,OAAO,YAAY,KAAK,UAAU,GAAG,YAAY,GAAG,YAAY;AAClF,GAAG,eAAe,mBAAmB,QAAQ,CAAC,MAAM;AACpD,IAAI,MAAM,WAAW,GAAG,MAAM,EAAE;AAChC,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,KAAK,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;AAC7D,KAAK,aAAa,GAAG;AACrB,MAAM,MAAM,EAAE,WAAW;AACzB,MAAM,KAAK,EAAE;AACb,MAAM;AACN,KAAK,OAAO,MAAM;AAClB,IAAI,CAAC,MAAM;AACX,KAAK,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC;AAC9C,KAAK,aAAa,GAAG;AACrB,MAAM,MAAM,EAAE,WAAW;AACzB,MAAM,KAAK,EAAE;AACb,MAAM;AACN,KAAK,OAAO,MAAM;AAClB,IAAI;AACJ,GAAG,CAAC,EAAE,iBAAiB,CAAC;AACxB,EAAE;AACF,CAAC;AACD,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,wBAAwB;AAC/D,CAAC,aAAa,CAAC,wBAAwB,GAAG,CAAC,OAAO,KAAK;AACvD,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,GAAG,eAAe,EAAE;AACzH,MAAM,IAAI,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE;AAClD,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AAChC,EAAE,iBAAiB,GAAG,eAAe,EAAE;AACvC,CAAC,CAAC,MAAM,iBAAiB,GAAG,eAAe,EAAE;AAC7C,CAAC,aAAa,CAAC,wBAAwB,GAAG,eAAe;AACzD,CAAC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,iBAAiB,CAAC;AACvD,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACpD,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,IAAI,GAAG,EAAE;AAChD,GAAG,MAAM,WAAW,GAAG,GAAG;AAC1B,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE;AACpG,EAAE;AACF,EAAE,OAAO,GAAG,CAAC,UAAU;AACvB,CAAC,CAAC,CAAC;AACH,CAAC,IAAI,gBAAgB;AACrB,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM;AAC/G,EAAE,MAAM,SAAS,GAAG,eAAe,EAAE;AACrC,EAAE,IAAI,OAAO,EAAE;AACf,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE;AAC/C,IAAI,iBAAiB,GAAG,SAAS;AACjC,IAAI,YAAY,GAAG,KAAK;AACxB,GAAG;AACH,EAAE,CAAC,MAAM,IAAI,iBAAiB,KAAK,SAAS,EAAE;AAC9C,GAAG,iBAAiB,GAAG,SAAS;AAChC,GAAG,YAAY,GAAG,KAAK;AACvB,EAAE;AACF,EAAE,OAAO,iBAAiB;AAC1B,CAAC,CAAC,CAAC,CAAC;AACJ,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,MAAM,EAAE,mBAAmB,QAAQ,CAAC,WAAW;AAChD,EAAE,eAAe,CAAC,EAAE,CAAC;AACrB,EAAE,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC7C,GAAG,IAAI,kBAAkB,KAAK,UAAU,EAAE;AAC1C,IAAI,MAAM,SAAS,GAAG,eAAe,EAAE;AACvC,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,eAAe,GAAG,MAAM;AAC5B,IAAI,iBAAiB,GAAG,SAAS;AACjC,IAAI,kBAAkB,GAAG,IAAI;AAC7B,IAAI,OAAO,SAAS;AACpB,GAAG;AACH,GAAG,OAAO,eAAe;AACzB,EAAE;AACF,EAAE,IAAI,YAAY,EAAE,OAAO,eAAe;AAC1C,EAAE,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,iBAAiB,GAAG,eAAe,EAAE;AACpE,EAAE,OAAO,iBAAiB;AAC1B,CAAC,CAAC,EAAE,IAAI,CAAC;AACT,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAK;AAC9C,EAAE,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AAChE,GAAG,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,IAAI,UAAU,EAAE;AAChB,IAAI,YAAY,GAAG,KAAK;AACxB,IAAI,kBAAkB,GAAG,IAAI;AAC7B,IAAI,iBAAiB,GAAG,KAAK;AAC7B,GAAG,CAAC,MAAM,iBAAiB,GAAG,KAAK;AACnC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,mBAAmB;AACzB,EAAE,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AAC5G,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACvB,EAAE,CAAC,CAAC;AACJ,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAClC,EAAE,OAAO,MAAM;AACf,GAAG,eAAe,CAAC,WAAW,EAAE;AAChC,GAAG,IAAI,mBAAmB,EAAE,mBAAmB,CAAC,WAAW,EAAE;AAC7D,EAAE,CAAC;AACH,CAAC,CAAC,CAAC;AACH,CAAC,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC,EAAE,CAAC,YAAY,GAAG,YAAY;AAC/B,CAAC,EAAE,CAAC,QAAQ,GAAG,OAAO;AACtB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK;AACrB,EAAE,IAAI,CAAC,YAAY,EAAE;AACrB,GAAG,kBAAkB,GAAG,UAAU;AAClC,GAAG,IAAI,aAAa,IAAI,YAAY,EAAE,aAAa,GAAG;AACtD,IAAI,MAAM,EAAE,SAAS,CAAC,MAAM;AAC5B,KAAK,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AAC7C,MAAM,MAAM,MAAM,GAAG,YAAY;AACjC,MAAM,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,YAAY,EAAE;AACzD,KAAK;AACL,KAAK,OAAO,YAAY,EAAE;AAC1B,IAAI,CAAC,CAAC;AACN,IAAI;AACJ,IAAI;AACJ,EAAE;AACF,EAAE,YAAY,GAAG,IAAI;AACrB,EAAE,eAAe,GAAG,KAAK;AACzB,EAAE,iBAAiB,GAAG,KAAK;AAC3B,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,aAAa,CAAC,2BAA2B,GAAG,EAAE,CAAC,YAAY,CAAC;AAC7D,CAAC,IAAI,GAAG,KAAK;AACb,CAAC,OAAO,EAAE;AACV;AACA,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;AACtC,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,wBAAwB;AAC9D,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,2BAA2B;AACjE,CAAC,aAAa,CAAC,wBAAwB,GAAG,IAAI;AAC9C,CAAC,aAAa,CAAC,2BAA2B,GAAG,IAAI;AACjD,CAAC,IAAI;AACL,EAAE,OAAO,EAAE,EAAE;AACb,CAAC,CAAC,SAAS;AACX,EAAE,aAAa,CAAC,wBAAwB,GAAG,cAAc;AACzD,EAAE,aAAa,CAAC,2BAA2B,GAAG,cAAc;AAC5D,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;AAChC,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI;AACtB,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC;AACpB;AACA,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC1B;AACA;AACA,IAAI,WAAW,GAAG,MAAM,CAAC,cAAc;AACvC,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AAC9D,CAAC,KAAK;AACN,CAAC,YAAY,EAAE;AACf,CAAC,CAAC;AACF;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAmB;AACrD;AACA,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;AACpC,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,CAAC,OAAO,OAAO,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,KAAK,GAAG;AACvF;AACA,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5B,IAAI,QAAQ,mBAAmB,QAAQ,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,UAAU,CAAC;AACxI,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK;AAC1G,CAAC,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS;AACzD;AACA,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;AAChD,SAAS,iBAAiB,GAAG;AAC7B,CAAC,MAAM,KAAK,GAAG,gEAAgE;AAC/E,CAAC,IAAI,IAAI,GAAG,EAAE;AACd,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7B,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;AACpD,EAAE,IAAI,IAAI,KAAK,CAAC,WAAW,CAAC;AAC5B,CAAC;AACD,CAAC,OAAO,IAAI;AACZ;AACA,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;AAChD,IAAI,YAAY,GAAG,SAAS;AAC5B,SAAS,oBAAoB,CAAC,QAAQ,EAAE;AACxC,CAAC,IAAI,aAAa,GAAG,EAAE;AACvB,CAAC,IAAI,QAAQ,EAAE,SAAS,EAAE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;AACvE,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5C,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI;AACjD,EAAE,IAAI,KAAK,GAAG,MAAM,EAAE;AACtB,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/C,EAAE,IAAI,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1C,CAAC;AACD,CAAC,OAAO,aAAa;AACrB;AACA,QAAQ,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;AACtD,IAAI,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AAC3C,IAAI,qBAAqB,mBAAmB,QAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK;AACrF,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAChF,CAAC,IAAI,KAAK,YAAY,GAAG,EAAE,OAAO,aAAa;AAC/C,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,aAAa;AACzE,CAAC,IAAI,KAAK,YAAY,IAAI,EAAE,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE;AAC3G,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACzC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,aAAa;AAC3C,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,GAAG,MAAM,OAAO,GAAG,EAAE;AACrB,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AAClC,IAAI,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC;AAC5G,IAAI,IAAI,UAAU,KAAK,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9D,GAAG,CAAC,CAAC;AACL,GAAG,OAAO,OAAO;AACjB,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM;AACnG,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;AACpJ,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE;AAC3C,GAAG,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;AAClE,GAAG,MAAM,UAAU,GAAG,qBAAqB,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC;AACzH,GAAG,IAAI,UAAU,KAAK,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,UAAU;AACvE,EAAE;AACF,EAAE,OAAO,MAAM;AACf,CAAC;AACD,CAAC,OAAO,KAAK;AACb,CAAC,EAAE,uBAAuB,CAAC;AAC3B,SAAS,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,CAAC,MAAM,aAAa,GAAG,EAAE;AACzB,CAAC,IAAI,QAAQ,EAAE,SAAS,EAAE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;AACvE,EAAE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5C,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE;AACzC,EAAE,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,kBAAkB,IAAI,OAAO,EAAE,CAAC;AACjG,EAAE,IAAI,UAAU,KAAK,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,UAAU;AACnE,CAAC;AACD,CAAC,OAAO,aAAa;AACrB;AACA,QAAQ,CAAC,wBAAwB,EAAE,0BAA0B,CAAC;AAC9D,SAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AACzC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC;AAC9D,CAAC,IAAI,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACpE,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK;AAC5B;AACA,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;AACpC,IAAI,eAAe,mBAAmB,QAAQ,CAAC,CAAC,YAAY,EAAE,SAAS,GAAG,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,KAAK;AAClH,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI;AAC1B,CAAC,IAAI,WAAW,EAAE,YAAY,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc;AAC1E,CAAC,IAAI,SAAS,EAAE,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;AAC1D,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;AAC9E,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAChD,EAAE,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI;AAC3D,EAAE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI;AAClD,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,SAAS;AAC7C,EAAE,IAAI,WAAW,GAAG,MAAM,EAAE;AAC5B,EAAE,IAAI,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AACrD,EAAE,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE;AAC3F,EAAE,MAAM,gBAAgB,GAAG,WAAW;AACtC,EAAE,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG;AAChD,EAAE,IAAI,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC;AAC9E,EAAE,IAAI,QAAQ,EAAE;AAChB,GAAG,IAAI,WAAW,EAAE,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC;AAClF,EAAE;AACF,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK;AACpE,GAAG,IAAI,YAAY,EAAE;AACrB,IAAI,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAC1E,IAAI,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC;AACjE,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,CAAC,EAAE,iBAAiB,CAAC;AACrB,IAAI,IAAI,mBAAmB,QAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,KAAK;AACtF,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO;AAC7E,CAAC,IAAI,IAAI,GAAG,IAAI;AAChB,CAAC,MAAM,mBAAmB,mBAAmB,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC3E,EAAE,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAClE,EAAE,IAAI;AACN,GAAG,KAAK;AACR,GAAG,OAAO;AACV,GAAG;AACH,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC;AAC/H,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC;AAC9J,OAAO,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;AACrC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;AACnE,CAAC,CAAC,EAAE,qBAAqB,CAAC;AAC1B,CAAC,MAAM,kBAAkB,mBAAmB,QAAQ,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK;AAC1E,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC5D,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACxC,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3C,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,CAAC;AAC5F,SAAS,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AACjC,GAAG,CAAC,CAAC;AACL,GAAG;AACH,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,MAAM,EAAE,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC;AACvK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,KAAK,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,CAAC;AACxJ,OAAO,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;AACnC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;AACnE,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACzB,CAAC,MAAM,QAAQ,mBAAmB,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK;AAChE,EAAE,MAAM,gBAAgB,GAAG,SAAS,IAAI,KAAK,KAAK,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK;AACtF,EAAE,IAAI,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAClF,EAAE,IAAI,QAAQ,IAAI,eAAe,CAAC,KAAK,KAAK,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,gBAAgB,IAAI,SAAS,GAAG,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACjL,CAAC,CAAC,EAAE,UAAU,CAAC;AACf,CAAC,MAAM,iBAAiB,mBAAmB,QAAQ,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK;AAC5E,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACzB,EAAE,IAAI,YAAY,IAAI,eAAe,CAAC,cAAc,EAAE;AACtD,GAAG,MAAM,YAAY,GAAG,MAAM,EAAE;AAChC,GAAG,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY;AACrF,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAuB,CAAC;AAC1E,EAAE;AACF,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO;AAC1B,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AACzC,GAAG,IAAI,IAAI,EAAE;AACb,GAAG,IAAI,eAAe,CAAC,KAAK,KAAK,MAAM,EAAE;AACzC,IAAI,MAAM,QAAQ,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/F,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrD,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACnF,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACjF,SAAS,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;AAClC,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,SAAS,mBAAmB,IAAI,GAAG,EAAE;AACvF,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC;AAC7C,CAAC,CAAC,EAAE,mBAAmB,CAAC;AACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACzB,EAAE,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzE,GAAG,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;AACtF,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAC9B,IAAI,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC;AAC/D,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC;AAC7H,GAAG;AACH,GAAG,IAAI,GAAG,KAAK;AACf,EAAE;AACF,EAAE,OAAO,OAAO;AAChB,CAAC;AACD,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC;AACjC,CAAC,IAAI,GAAG,KAAK;AACb,CAAC,OAAO,OAAO;AACf,CAAC,EAAE,MAAM,CAAC;AACV,SAAS,IAAI,CAAC,OAAO,EAAE;AACvB,CAAC,IAAI,SAAS;AACd,CAAC,IAAI,QAAQ,GAAG,IAAI;AACpB,CAAC,IAAI,YAAY,GAAG,IAAI;AACxB,CAAC,IAAI,SAAS;AACd,CAAC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,SAAS,GAAG,OAAO;AACvD,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACvC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS;AAC/B,EAAE,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO;AACnE,EAAE,IAAI,OAAO,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY;AACjF,EAAE,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS;AACxE,CAAC;AACD,CAAC,OAAO,SAAS,MAAM,EAAE,WAAW,EAAE;AACtC,EAAE,MAAM,kBAAkB,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AAC/C,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;AAC7C,GAAG,GAAG,kBAAkB,QAAQ,CAAC,WAAW;AAC5C,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,GAAG,CAAC,EAAE,QAAQ,CAAC;AACf,GAAG,GAAG,kBAAkB,QAAQ,CAAC,SAAS,MAAM,EAAE;AAClD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;AACzD,KAAK,SAAS;AACd,KAAK,OAAO,EAAE,QAAQ;AACtB,KAAK,YAAY;AACjB,KAAK;AACL,KAAK,EAAE,IAAI,CAAC;AACZ,GAAG,CAAC,EAAE,QAAQ,CAAC;AACf,GAAG,UAAU,EAAE,IAAI;AACnB,GAAG,YAAY,EAAE;AACjB,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;AACtB,SAAS,EAAE,GAAG;AACd,CAAC,OAAO,SAAS,MAAM,EAAE,WAAW,EAAE;AACtC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,mBAAmB,IAAI,GAAG,EAAE;AAC7G,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;AAC7D,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;AAClB,SAAS,KAAK,CAAC,OAAO,EAAE;AACxB,CAAC,OAAO,SAAS,MAAM,EAAE,WAAW,EAAE;AACtC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,mBAAmB,IAAI,GAAG,EAAE;AAC7G,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;AAChE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC;AACpC,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;AACxB,SAAS,OAAO,GAAG;AACnB,CAAC,OAAO,IAAI,CAAC;AACb,EAAE,OAAO,EAAE,IAAI;AACf,EAAE,YAAY,EAAE;AAChB,EAAE,CAAC;AACH;AACA,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5B,SAAS,SAAS,GAAG;AACrB,CAAC,OAAO,SAAS,MAAM,EAAE,WAAW,EAAE;AACtC,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,mBAAmB,IAAI,GAAG,EAAE;AAC7G,EAAE,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC;AACpE,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC;AAC/C,CAAC,CAAC;AACF;AACA,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;AAChC,SAAS,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE;AACnD,CAAC,IAAI,aAAa,EAAE,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC;AACxD,MAAM,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC;AACzC;AACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;AACtB,SAAS,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE;AAC7C,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AACpG;AACA,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;AACxC,SAAS,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE;AAChE,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;AACzB,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAC3B,EAAE,MAAM,OAAO,GAAG,WAAW,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG;AAC7D,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC;AACxH,OAAO,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AACzD,CAAC;AACD;AACA,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC;AAC1C,SAAS,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/C,CAAC,IAAI,OAAO,GAAG,YAAY;AAC3B,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,KAAK,IAAI,SAAS,EAAE;AACtD,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE;AAC7C,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;AACxC,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9D,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK;AACjH,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK;AAC5B,OAAO;AACP,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE;AAC7C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AACjC,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS;AAC9F,IAAI,IAAI,SAAS,EAAE;AACnB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE;AAC5E,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;AAC3C,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;AAC7B,GAAG;AACH,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B,EAAE;AACF,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;AAChC,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AAC/B,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,CAAC,IAAI,OAAO,GAAG,IAAI;AACnB,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC3B,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE;AAC5C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5C,OAAO;AACP,CAAC;AACD,CAAC,OAAO,OAAO;AACf;AACA,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;AAChC;AACA;AACA,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;AACzG;AACA;AACA;AACA,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AACnD,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAyE,IAAI,EAAE,CAAC;AAC7H,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AAC/H,MAAM,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;AAClJ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9D;AACA;AACA;AACA,IAAI,IAAI,GAAG,MAAM;AACjB,CAAC,WAAW,CAAC,IAAI,EAAE;AACnB,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;AAC/C,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AACD,CAAC;AACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;AAC3F,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/F,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC/F,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACnG;AACA;AACA,IAAI,KAAK,GAAG,MAAM;AAClB,CAAC,WAAW,CAAC,IAAI,EAAE;AACnB,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACtB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/B,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AAC7B,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AACjC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;AAC/C,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AACjC,CAAC;AACD,CAAC;AACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;AAC5F,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChG,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAClG,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAChG;AACA;AACA,IAAI,SAAS,mBAAmB,SAAS,SAAS,EAAE;AACpD,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI;AACvB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM;AAC3B,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM;AAC3B,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO;AAC7B,CAAC,OAAO,SAAS;AACjB,CAAC,CAAC,EAAE,CAAC;AACL,IAAI,eAAe,GAAG,MAAM;AAC5B,CAAC,WAAW,GAAG;AACf,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AACxB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AACzC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;AAC5B,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,GAAG,CAAC,EAAE,EAAE;AACR,GAAG,CAAC,EAAE;AACN,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;AACzB,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC;AAC9B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAC1B,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;AAC5B,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC;AACzC,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AACpC,EAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;AAC3B,EAAE,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;AACtC,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;AACtC,EAAE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;AACpC,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC;AACrC,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAChC,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;AACzB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,cAAc,GAAG;AACtB,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE;AAC/B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE;AAC3B,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,cAAc,GAAG;AACtB,EAAE,OAAO,IAAI,CAAC,eAAe,EAAE;AAC/B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE;AAC3B,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,eAAe,CAAC,SAAS,EAAE;AAC5B,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC9B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AAC/B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,YAAY,GAAG;AAChB,EAAE,OAAO,IAAI,CAAC,SAAS,EAAE;AACzB,CAAC;AACD,CAAC;AACD,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;AACtG,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvG,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvG,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC;AACvG,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAC/G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC3G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC9G,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC/H,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC5G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC3G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AACnH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC9G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC9G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AAC1G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC5G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC5G,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;AAC/G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAChH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AAC5G,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;AACjH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC9G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC9G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,qBAAqB,EAAE,MAAM,CAAC;AACzH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AACnH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;AAChH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AAC7G,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC;AACnH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AACtH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,MAAM,CAAC;AACtH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;AACpH,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC;AACrH,UAAU,CAAC,CAAC,SAAS,EAAE,EAAE,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC;AAgGtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACc,MAAM,OAAO,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3B,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AACX,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAClB,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,KAAK,EAAE;AACZ,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,KAAK,EAAE;AACnB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACnB,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,KAAK,EAAE;AACZ,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,KAAK,EAAE;AACnB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACnB,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,MAAM,EAAE;AACb,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AACtD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM;AAClB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM;AAClB,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,MAAM,EAAE;AACb,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;AACtD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,MAAM,EAAE;AACpB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM;AAClB,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM;AAClB,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,KAAK,EAAE;AACZ,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,CAAC,KAAK,EAAE;AACd,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC5C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,GAAG;AACjB,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,MAAM,GAAG;AACV,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,GAAG;AACb,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB,GAAG;AACpB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,EAAE,IAAI,GAAG,KAAK,CAAC,EAAE;AACjB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;AACb,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;AACb,EAAE,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7B,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,UAAU,CAAC,KAAK,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AACjC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC1B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE;AACxC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,MAAM,CAAC,KAAK,EAAE;AACf,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;AAC9E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,aAAa,CAAC,KAAK,EAAE;AACtB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG;AACvC,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG;AACvC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,KAAK,GAAG;AACT,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AAChB,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE;AAC/B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO;AACrF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,QAAQ,GAAG;AACZ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AACD,CAAC;AACD,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B;AACA,CAAC;AACD,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC;AACA,CAAC;AACD,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC;AACA;AAo0NA;AACA;AACA,IAAI,YAAY,GAAG,cAAc;AAOjC,IAAI,KAAK,GAAG,MAAM;AAClB,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AACjC,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO;AACxB,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS;AAC5B,EAAE,IAAI,CAAC,WAAW,GAAG,EAAE;AACvB,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;AACzB,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,CAAC;AACD,CAAC,IAAI,GAAG;AACR,EAAE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAChE,GAAG,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;AAClC,GAAG,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAClC,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC;AACzC,IAAI,IAAI,YAAY,EAAE;AACtB,KAAK,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACvD,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE;AAC5E,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE;AACrE,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1G,IAAI;AACJ,GAAG;AACH,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,WAAW;AACzB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE;AACzE,EAAE,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK;AACxC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5E,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,KAAK;AAC1F,KAAK,IAAI,MAAM;AACf,KAAK,IAAI;AACT,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;AACpC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,KAAK,CAAC,CAAC,OAAO,KAAK,EAAE;AACrB,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7B,MAAM,OAAO,EAAE;AACf,KAAK;AACL,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;AAC7B,KAAK,IAAI,EAAE,CAAC,OAAO,KAAK;AACxB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,MAAM,UAAU,CAAC,QAAQ,EAAE;AAC3B,KAAK,CAAC;AACN,KAAK,KAAK,EAAE,CAAC,GAAG,KAAK;AACrB,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3B,KAAK;AACL,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB,KAAK,YAAY,CAAC,WAAW,EAAE;AAC/B,IAAI,CAAC;AACL,GAAG,CAAC,MAAM;AACV,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACvB,IAAI,UAAU,CAAC,QAAQ,EAAE;AACzB,IAAI,OAAO,MAAM,CAAC,CAAC;AACnB,GAAG;AACH,EAAE,CAAC,CAAC;AACJ,CAAC;AACD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;AACvD,CAAC,OAAO;AACR,EAAE,OAAO,EAAE,YAAY;AACvB,EAAE,UAAU,EAAE,CAAC,OAAO,KAAK;AAC3B,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO;AAC9D,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;AACvC,EAAE;AACF,EAAE;AACF;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE;AACzC,CAAC,IAAI,OAAO,GAAG,EAAE;AACjB,CAAC,KAAK,IAAI,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC1I,CAAC,OAAO,OAAO;AACf;AAmRA;AACA;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE;AAC1D,CAAC,KAAK;AACN,CAAC,YAAY,EAAE;AACf,CAAC,CAAC;AACF,IAAI,oBAAoB,GAAG,aAAa;AACxC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,CAAC,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK;AACxD;AACA,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;AAClC,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,CAAC,OAAO,IAAI,IAAI,oBAAoB;AACpC;AACA,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AACtC,SAAS,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;AACnC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AACnD;AACA,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;AAC9B,SAAS,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE;AACtC,CAAC,MAAM,GAAG,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;AAC3C,CAAC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG;AACvB,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,MAAM,kBAAkB,IAAI,GAAG,EAAE;AACnC,EAAE,QAAQ,kBAAkB,IAAI,GAAG;AACnC,EAAE;AACF,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AACzB,CAAC,OAAO,MAAM;AACd;AACA,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;AACpC,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,CAAC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AAC5C,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AAChD,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI;AACvC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,WAAW,KAAK,oBAAoB,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI;AAC/E,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC;AACtC,CAAC,OAAO,KAAK;AACb;AACA,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1B,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAClD,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAC1B,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1E,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;AAClD,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACjD;AACA,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;AAChC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAClD,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;AAC1B,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AAChD,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAC/C;AACA,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;AAChC,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACnD,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;AAC3C;AACA,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;AAClC,SAAS,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE;AAChD,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;AAChC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACpG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACxD;AACA,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;AACxD,SAAS,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE;AACnC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACzB;AACA,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;AACpC,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,CAAC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACjE;AACA,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;AAC1C,SAAS,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAChD,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AACzC,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM;AAC1D,EAAE,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/C,CAAC;AACD,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;AACnB,EAAE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AACjD,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACvC,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE;AACzB,GAAG,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AAChD,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AAC/C,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;AACnC,EAAE,OAAO,MAAM;AACf,CAAC;AACD,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;AACpC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;AAChC,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE;AAClC,GAAG,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AAChD,EAAE;AACF,EAAE,eAAe,CAAC,MAAM,CAAC;AACzB,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AACD,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACtD,CAAC,IAAI,KAAK,KAAK,MAAM,EAAE;AACvB,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE;AACxB,EAAE,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AAC/C,CAAC;AACD,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC;AAC3C,CAAC,OAAO,KAAK;AACb;AACA,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1B,SAAS,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE;AACnD,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE;AAC5C,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO;AAC3F,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE;AACvC,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AACjD,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC,IAAI,KAAK,GAAG;AAClE,OAAO,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,OAAO,QAAQ,CAAC,OAAO,KAAK,GAAG;AACxE,EAAE,OAAO,KAAK;AACd,CAAC,CAAC,CAAC;AACH,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AACzD,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE,OAAO,WAAW;AACjF,OAAO,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,EAAE,OAAO,WAAW;AACvF,EAAE,OAAO,QAAQ;AACjB,CAAC,CAAC,CAAC;AACH,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AACzD,CAAC,OAAO,eAAe;AACvB;AACA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC5B,SAAS,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE;AACxC,CAAC,MAAM,OAAO,GAAG,EAAE;AACnB,CAAC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9G,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9D,CAAC,OAAO,OAAO;AACf;AACA,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AACtC,SAAS,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE;AACvC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAChC,EAAE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,SAAS,EAAE;AAC/D,GAAG,MAAM,QAAQ,GAAG,SAAS;AAC7B,GAAG,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO;AACzG,GAAG,IAAI,IAAI,YAAY,MAAM,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,SAAS;AACjD,GAAG,CAAC,MAAM,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO,SAAS;AACrD,EAAE;AACF,EAAE,OAAO,IAAI;AACb,CAAC;AACD,CAAC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACnC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,GAAG,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,GAAG,IAAI,KAAK,EAAE,OAAO,KAAK;AAC1B,GAAG;AACH,EAAE;AACF,EAAE,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE;AAC7D,GAAG,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO;AACzG,GAAG,IAAI,IAAI,YAAY,MAAM,EAAE;AAC/B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,QAAQ;AAChD,GAAG,CAAC,MAAM,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO,QAAQ;AACpD,EAAE;AACF,CAAC;AACD,CAAC,OAAO,IAAI;AACZ;AACA,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;AACpC,SAAS,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC7D,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC9B,EAAE,KAAK,MAAM,cAAc,IAAI,QAAQ,EAAE,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,cAAc,CAAC;AAClG,EAAE;AACF,CAAC;AACD,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC9H,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3C;AACA,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;AAC1C,SAAS,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE;AACzC,CAAC,MAAM,YAAY,GAAG;AACtB,EAAE,GAAG,UAAU;AACf,EAAE,GAAG,MAAM;AACX,EAAE,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,SAAS;AACrC,EAAE;AACF,CAAC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC7F,CAAC,OAAO,YAAY;AACpB;AACA,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;AAClC,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM;AAC/B,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAC1C,CAAC,OAAO;AACR,EAAE,KAAK;AACP,EAAE;AACF,EAAE;AACF;AACA,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;AACtD,SAAS,OAAO,CAAC,QAAQ,EAAE;AAC3B,CAAC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE;AAC/D,CAAC,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE;AAC3B;AACA,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1B,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,CAAC,MAAM,SAAS,mBAAmB,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC;AACnG,CAAC,MAAM,GAAG,mBAAmB,IAAI,GAAG,EAAE;AACtC,CAAC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AAC5B,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAClE,EAAE,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AACD,CAAC,MAAM,MAAM,GAAG,EAAE;AAClB,CAAC,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC1C,CAAC,MAAM,KAAK,mBAAmB,IAAI,GAAG,EAAE;AACxC,CAAC,MAAM,KAAK,mBAAmB,MAAM,CAAC,CAAC,KAAK,KAAK;AACjD,EAAE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;AAC/B,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACzB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3F,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,EAAE,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,EAAE,IAAI,iBAAiB,EAAE;AACzB,GAAG,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;AAC7C,IAAI,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AACnD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAG;AACH,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,EAAE;AACF,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC,EAAE,OAAO,CAAC;AACZ,CAAC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC,OAAO,MAAM;AACd;AACA,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AACtC,eAAe,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;AAC5C,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE;AAC7B,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;AACrC,CAAC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACnC,EAAE,IAAI,KAAK;AACX,EAAE,IAAI,QAAQ;AACd,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,GAAG,KAAK,GAAG,QAAQ;AACnB,GAAG,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC;AACnC,GAAG,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE,CAAC;AACrE,EAAE,CAAC,MAAM;AACT,GAAG,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC3B,GAAG,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AAC5C,GAAG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ;AAC7C,GAAG,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC;AACvF,QAAQ,IAAI,UAAU,IAAI,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAChE,QAAQ,IAAI,YAAY,IAAI,QAAQ,EAAE;AACtC,IAAI,QAAQ,GAAG,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC;AAC7C,IAAI,IAAI,QAAQ,YAAY,OAAO,EAAE,QAAQ,GAAG,MAAM,QAAQ;AAC9D,GAAG,CAAC,MAAM,IAAI,aAAa,IAAI,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC;AAC3F,EAAE;AACF,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC5C,CAAC;AACD;AACA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC5B,IAAI,OAAO,GAAG,MAAM;AACpB,CAAC;AACD,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;AACzB;AACA;AACA,CAAC,MAAM,GAAG,EAAE;AACZ;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AACjB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC,GAAG,CAAC,GAAG,EAAE;AACV,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACzB,CAAC;AACD,CAAC;AAeD;AACA;AACA,IAAI,OAAO,GAAG,IAAI,OAAO,EAAE;AAC3B,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ;AAC1B;AACA;AACA,IAAI,uBAAuB,GAAG,0BAA0B;AAExD,SAAS,iBAAiB,GAAG;AAC7B,CAAC,OAAO,UAAU,CAAC,OAAO;AAC1B;AACA,SAASC,iBAAe,CAAC,IAAI,EAAE;AAC/B,CAAC,MAAM,KAAK,GAAG,iBAAiB,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC;AAC/C,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM;AAClD;AACA,SAAS,mBAAmB,GAAG;AAC/B,CAAC,MAAM,GAAG,GAAG,iBAAiB,EAAE,EAAE,GAAG;AACrC,CAAC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAChC,CAAC,IAAI;AACL,EAAE,OAAO,GAAG,EAAE;AACd,CAAC,CAAC,CAAC,MAAM;AACT,EAAE;AACF,CAAC;AACD;AACA,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACpC,CAAC,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM;AAC5D;AACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE;AACpC,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE;AAChC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AACxB,CAAC,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzD;AACA,SAAS,4BAA4B,CAAC,IAAI,EAAE,KAAK,EAAE;AACnD,CAAC,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;AAC5B,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE;AAC5C,GAAG,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,EAAE,OAAO,MAAM;AACrG,GAAG;AACH,EAAE;AACF,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAClC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,OAAO;AACzE,IAAI,EAAE,EAAE,KAAK;AACb,IAAI,IAAI,EAAE;AACV,IAAI;AACJ,EAAE;AACF,CAAC;AACD,CAAC,OAAO,IAAI;AACZ;AACA,eAAe,cAAc,CAAC,GAAG,EAAE;AACnC,CAAC,IAAI;AACL,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC;AACnC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI;AAC/B,EAAE,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE;AAC9B,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD;AACA,eAAe,kBAAkB,CAAC,QAAQ,EAAE;AAC5C,CAAC,IAAI;AACL,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,kBAAkB,CAAC;AACvD,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,WAAW,CAAC;AACxD,EAAE,MAAM,GAAG,GAAG,mBAAmB,EAAE;AACnC,EAAE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChG,EAAE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,IAAI;AAC1C,GAAG,OAAO,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;AAC3C,EAAE,CAAC,CAAC,MAAM;AACV,GAAG;AACH,EAAE;AACF,CAAC,CAAC,CAAC,MAAM;AACT,EAAE,OAAO,IAAI;AACb,CAAC;AACD,CAAC,OAAO,IAAI;AACZ;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,CAAC,MAAM,MAAM,GAAG;AAChB,EAAE,GAAG,KAAK,IAAI,EAAE;AAChB,EAAEA,iBAAe,CAAC,uBAAuB,CAAC;AAC1C,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,aAAa;AACf,EAAE;AACF,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AAC7B,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC;AACA,SAAS,qBAAqB,CAAC,aAAa,EAAE;AAC9C,CAAC,OAAO,aAAa,IAAIA,iBAAe,CAAC,wBAAwB,CAAC,IAAI,EAAE;AACxE;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7C,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;AAClC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;AAClF,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACnD,CAAC,IAAI,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,aAAa,CAAC;AACvE,CAAC,OAAO,OAAO;AACf;AAeA,eAAe,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE;AACjE,CAAC,IAAI,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,EAAE;AACvH,CAAC,IAAI,OAAO,aAAa,EAAE,IAAI,KAAK,QAAQ,EAAE;AAC9C,EAAE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE;AACxC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE;AACjD,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAClC,GAAG,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC;AACzC,GAAG,IAAI,GAAG,EAAE,OAAO;AACnB,IAAI,GAAG;AACP,IAAI,SAAS,EAAE;AACf,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;AAC5C,GAAG,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACpD,GAAG,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC;AAC9C,GAAG,IAAI,GAAG,EAAE,OAAO;AACnB,IAAI,GAAG;AACP,IAAI;AACJ,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC;AACpD,EAAE,IAAI,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE;AAC9C,CAAC;AACD,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,MAAM,QAAQ,IAAI,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AACrF,EAAE,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAC3C,EAAE,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;AAClE,EAAE,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC;AAC7C,EAAE,IAAI,GAAG,EAAE,OAAO;AAClB,GAAG,GAAG;AACN,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;AACnB;AACA,eAAe,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACnE,CAAC,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,EAAE;AAC5D,CAAC,MAAM,aAAa,GAAG,4BAA4B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;AACpH,CAAC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC;AAC5E,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAClB,CAAC,IAAI;AACL,EAAE,MAAM,WAAW,GAAG,CAAC,MAAM,OAAO,qBAAqB,CAAC,GAAG,WAAW;AACxE,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,EAAE,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAC1D,EAAE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,GAAG,EAAE;AAC/E,EAAE,MAAM,cAAc,GAAG,EAAE;AAC3B,EAAE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAClC,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AACzB,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,UAAU;AACjB,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI;AAC7B,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;AACrE,GAAG,CAAC,CAAC,MAAM;AACX,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,GAAG;AACH,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAC1F,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACjI,IAAI,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/G,GAAG;AACH,GAAG,MAAM,UAAU,GAAG,UAAU,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9G,GAAG,IAAI,CAAC,UAAU,EAAE;AACpB,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,IAAI;AACJ,GAAG;AACH,GAAG,IAAI;AACP,IAAI,MAAM,aAAa,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE;AACpE,IAAI,cAAc,CAAC,IAAI,CAAC;AACxB,KAAK,GAAG,OAAO;AACf,KAAK,GAAG;AACR,KAAK,CAAC;AACN,GAAG,CAAC,CAAC,MAAM;AACX,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAChC,GAAG;AACH,EAAE;AACF,EAAE,SAAS,CAAC,QAAQ,GAAG,cAAc;AACrC,EAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG;AAC3B,EAAE,OAAO,CAAC,SAAS,GAAG,SAAS;AAC/B,EAAE,IAAI,OAAO,SAAS,EAAE,KAAK,KAAK,QAAQ,IAAI,OAAO,SAAS,EAAE,SAAS,KAAK,QAAQ,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,SAAS;AAC7I,EAAE,IAAI,OAAO,SAAS,EAAE,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,EAAE,UAAU,KAAK,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU;AAClJ,CAAC,CAAC,CAAC,MAAM;AACT,EAAE;AACF,CAAC;AACD;AACA,eAAe,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjC,CAAC,IAAI;AACL,EAAE,MAAM,iBAAiB,GAAG;AAC5B,GAAG,EAAE,EAAE,kBAAkB,CAAC,MAAM,CAAC;AACjC,GAAG,KAAK,EAAE,CAAC;AACX,GAAG,MAAM,EAAE,CAAC;AACZ,GAAG,MAAM,EAAE,EAAE;AACb,GAAG,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,GAAG;AAC5D,GAAG;AACH,EAAE,MAAM,4BAA4B,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAChE,EAAE,OAAO,iBAAiB,CAAC,MAAM;AACjC,EAAE,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;AACjF,EAAE,MAAM,SAAS,CAAC,SAAS,GAAG;AAC9B,GAAG,GAAG,EAAE,CAAC,8BAA8B,EAAE,MAAM,CAAC,WAAW,CAAC;AAC5D,GAAG,MAAM,EAAE,MAAM;AACjB,GAAG,OAAO;AACV,GAAG,IAAI,EAAE,YAAY,iBAAiB;AACtC,GAAG,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,iBAAiB;AACrD,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,yBAAyB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE;AACjB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACpE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,OAAO,EAAE;AACvC,CAAC,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;AAChE,EAAE,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC;AAC3D,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK;AACpC,GAAG,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AACrC,IAAI,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE;AACjC,IAAI,MAAM,SAAS,GAAG,EAAE;AACxB,IAAI,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC9D,IAAI,MAAM,GAAG,SAAS;AACtB,GAAG;AACH,GAAG,IAAI,QAAQ,IAAI,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM;AACjD,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;AACtC,IAAI,GAAG,MAAM;AACb,IAAI,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK;AACrC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,IAAI,CAAC;AACL,IAAI;AACJ,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClD,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,IAAI,MAAM,GAAG;AACb,KAAK,GAAG,MAAM;AACd,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK;AAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC5B,OAAO,IAAI,WAAW;AACtB,OAAO,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,GAAG;AAC5B,QAAQ,WAAW,GAAG;AACtB,SAAS,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,QAAQ,CAAC,EAAE;AAClD,SAAS,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI;AACxD,SAAS,IAAI,EAAE,QAAQ,CAAC,IAAI;AAC5B,SAAS,IAAI,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI;AACvC,SAAS,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;AAC3C,SAAS,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO;AAC7C,SAAS,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS;AACjD,SAAS,uBAAuB,EAAE,QAAQ,CAAC,SAAS,EAAE,uBAAuB;AAC7E,SAAS,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO;AAC5C,SAAS,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO;AAChD,SAAS,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;AAC3C,SAAS,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,MAAM;AAC3C,SAAS,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE;AACtC,SAAS;AACT,OAAO,CAAC,MAAM,WAAW,GAAG,GAAG;AAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACpC,MAAM,CAAC,CAAC;AACR,KAAK,CAAC;AACN,KAAK;AACL,GAAG;AACH,GAAG,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC5D,IAAI,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAC3C,IAAI,MAAM,GAAG;AACb,KAAK,GAAG,MAAM;AACd,KAAK,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK;AACpC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACtC,OAAO,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAC9C,MAAM,CAAC,CAAC;AACR,KAAK,CAAC;AACN,KAAK;AACL,GAAG;AACH,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE;AACxB,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AACpC,IAAI,MAAM,GAAG;AACb,KAAK,GAAG,MAAM;AACd,KAAK,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,MAAM,KAAK;AAC9C,MAAM,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ;AACrF,MAAM,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC7C,MAAM,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,KAAK,CAAC;AACN,KAAK;AACL,GAAG;AACH,GAAG,OAAO,MAAM;AAChB,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,OAAO;AAChB,CAAC,CAAC,CAAC;AACH;;ACpwVA;AACA,SAAS,eAAe,CAAC,IAAI,EAAE;AAC/B,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;AAC9C,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM;AAClD;AACA,IAAI,eAAe,GAAG,MAAM,eAAe,CAAC;AAC5C,CAAC;AACD,EAAE,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC;AACtF;AACA,CAAC;AACD,EAAE,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,0BAA0B,CAAC,KAAK,MAAM;AACjF;AACA,CAAC;AACD,EAAE,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,0BAA0B,CAAC,IAAI,EAAE;AAC3E;AACA,CAAC;AACD,EAAE,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,wBAAwB,CAAC,KAAK,MAAM;AAC9E;AACA,CAAC;AACD,EAAE,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC;AACjF;AACA,CAAC;AACD,EAAE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,wBAAwB,CAAC,IAAI,EAAE;AACxE;AACA,CAAC;AACD,EAAE,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,sBAAsB,CAAC,KAAK,MAAM;AAC1E;AACA,CAAC;AACD,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC;AACxE;AACA,CAAC;AACD,EAAE,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,sBAAsB,CAAC,IAAI,EAAE;AACpE;AACA,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAC1B,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;AACd,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE;AAClB,EAAE,IAAI,CAAC,YAAY,GAAG,EAAE;AACxB,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAChC,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC;AAC1B,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;AACzB,EAAE,IAAI,CAAC,yBAAyB,GAAG,KAAK;AACxC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;AACnC,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE;AACtB,CAAC;AACD,CAAC,UAAU,GAAG;AACd,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AACD,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;AAClB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE;AAChC,EAAE,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACxE,EAAE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9B,EAAE,MAAM,QAAQ,GAAG,EAAE,IAAI,CAAC,eAAe;AACzC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzB,GAAG,OAAO;AACV,GAAG,SAAS;AACZ,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACzD,CAAC;AACD,CAAC,MAAM,mBAAmB,GAAG;AAC7B,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC9B,EAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC/B,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,GAAG,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AAC9C,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AACxH,GAAG,IAAI,eAAe,CAAC,gBAAgB,IAAI,eAAe,CAAC,aAAa,GAAG,CAAC,EAAE;AAC9E,IAAI,IAAI,CAAC,eAAe,CAAC,eAAe,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE;AACzG,KAAK,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG;AAC1G,KAAK,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAC9D,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,iDAAiD,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACnK,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC1E,IAAI;AACJ,GAAG;AACH,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAClC,EAAE;AACF,EAAE,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAChC,CAAC;AACD,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAC7B,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,eAAe,CAAC,SAAS,IAAI,CAAC,EAAE,OAAO,KAAK;AACrF,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,IAAI;AACjD,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC;AACxD,CAAC;AACD,CAAC,MAAM,SAAS,CAAC,eAAe,EAAE;AAClC,EAAE,MAAM,OAAO,GAAG,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE;AAC9C,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE;AACpB,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AACD,CAAC,KAAK,GAAG;AACT,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AAC/C,CAAC;AACD,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjB,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;AACrB,CAAC;AACD,CAAC,IAAI,KAAK,GAAG;AACb,EAAE,OAAO,IAAI,CAAC,MAAM;AACpB,CAAC;AACD,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;AACpC,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC1B,GAAG,OAAO;AACV,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACxB,GAAG;AACH,GAAG,CAAC;AACJ,EAAE,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AAClE,CAAC;AACD,CAAC,MAAM,oBAAoB,GAAG;AAC9B,EAAE,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACtC,EAAE,IAAI,CAAC,yBAAyB,GAAG,IAAI;AACvC,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,GAAG,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC1C,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AAC9G,GAAG,IAAI;AACP,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,GAAG,CAAC,CAAC,OAAO,GAAG,EAAE;AACjB,IAAI,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC;AAC5D,GAAG;AACH,EAAE;AACF,EAAE,IAAI,CAAC,yBAAyB,GAAG,KAAK;AACxC,CAAC;AACD,CAAC,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AACnD,EAAE,eAAe,CAAC,iBAAiB,GAAG,OAAO;AAC7C,EAAE,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,EAAE,eAAe,CAAC,gBAAgB,GAAG,MAAM,IAAI,EAAE;AACjD,EAAE,IAAI,OAAO,IAAI,IAAI,GAAG,CAAC,EAAE;AAC3B,GAAG,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AAC9D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,qDAAqD,EAAE,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AACzH,EAAE,CAAC,MAAM,IAAI,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,8FAA8F,CAAC;AACjI,OAAO,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC;AACtE,CAAC;AACD,CAAC,OAAO,mBAAmB,GAAG;AAC9B,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,eAAe,CAAC,iBAAiB;AAC7C,GAAG,IAAI,EAAE,eAAe,CAAC,cAAc;AACvC,GAAG,MAAM,EAAE,eAAe,CAAC;AAC3B,GAAG;AACH,CAAC;AACD,CAAC,OAAO,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;AAClD,EAAE,eAAe,CAAC,gBAAgB,GAAG,OAAO;AAC5C,EAAE,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AACnD,EAAE,eAAe,CAAC,eAAe,GAAG,MAAM,IAAI,EAAE;AAChD,EAAE,IAAI,OAAO,IAAI,IAAI,GAAG,CAAC,EAAE;AAC3B,GAAG,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AAC9D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,mDAAmD,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;AACxG,EAAE,CAAC,MAAM,IAAI,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC;AACrI,OAAO,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC;AACpE,CAAC;AACD,CAAC,OAAO,kBAAkB,GAAG;AAC7B,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,eAAe,CAAC,gBAAgB;AAC5C,GAAG,IAAI,EAAE,eAAe,CAAC,aAAa;AACtC,GAAG,MAAM,EAAE,eAAe,CAAC;AAC3B,GAAG;AACH,CAAC;AACD,CAAC,OAAO,gBAAgB,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE;AAC9C,EAAE,eAAe,CAAC,cAAc,GAAG,OAAO;AAC1C,EAAE,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7C,EAAE,eAAe,CAAC,aAAa,GAAG,MAAM,IAAI,EAAE;AAC9C,EAAE,IAAI,OAAO,IAAI,EAAE,GAAG,CAAC,EAAE;AACzB,GAAG,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AAC9D,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,iDAAiD,EAAE,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;AACrG,EAAE,CAAC,MAAM,IAAI,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC;AAC9H,OAAO,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC;AAClE,CAAC;AACD,CAAC,OAAO,gBAAgB,GAAG;AAC3B,EAAE,OAAO;AACT,GAAG,OAAO,EAAE,eAAe,CAAC,cAAc;AAC1C,GAAG,EAAE,EAAE,eAAe,CAAC,SAAS;AAChC,GAAG,MAAM,EAAE,eAAe,CAAC;AAC3B,GAAG;AACH,CAAC;AACD,CAAC;AACD,SAAS,0BAA0B,GAAG;AACtC,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,EAAE;AAC/D,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,EAAE;AAC7D,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,EAAE;AACzD,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC/B,EAAE,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AAC7F,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,4DAA4D,EAAE,CAAC,gBAAgB,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;AAChJ,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC;AAC3F,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE;AAC9B,EAAE,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AAC3F,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,0DAA0D,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AACpH,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC;AACzF,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE;AAC5B,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;AACvF,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,wDAAwD,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAChH,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC;AACvF;AACA;AACA;AACA,IAAI,SAAS,GAAG,MAAM;AACtB,CAAC,WAAW,CAAC,EAAE,EAAE;AACjB,EAAE,IAAI,CAAC,GAAG,GAAG,EAAE;AACf,EAAE,IAAI,CAAC,OAAO,GAAG,EAAE;AACnB,EAAE,IAAI,CAAC,WAAW,mBAAmB,IAAI,GAAG,EAAE;AAC9C,EAAE,IAAI,CAAC,WAAW,mBAAmB,IAAI,GAAG,EAAE;AAC9C,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;AACd,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAClD,CAAC;AACD,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE;AACvC,EAAE,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9E,EAAE,MAAM,YAAY,GAAG,EAAE;AACzB,EAAE,KAAK,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACjC,CAAC;AACD,CAAC,aAAa,CAAC,EAAE,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AACjC,CAAC;AACD,CAAC,cAAc,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAClC,CAAC;AACD,CAAC,aAAa,CAAC,UAAU,EAAE;AAC3B,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC;AACjD,CAAC;AACD,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAChC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC;AACvC,CAAC;AACD,CAAC,IAAI,OAAO,GAAG;AACf,EAAE,OAAO;AACT,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,KAAK,KAAK;AAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACpC,GAAG,CAAC;AACJ,GAAG,GAAG,EAAE,OAAO,GAAG,KAAK;AACvB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,GAAG,CAAC;AACJ,GAAG,MAAM,EAAE,OAAO,GAAG,KAAK;AAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;AAChC,GAAG,CAAC;AACJ,GAAG,IAAI,EAAE,YAAY;AACrB,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AACjD,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC;AACD;AACA;AACA,SAAS,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC7C,CAAC,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI,EAAE;AAC1C,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,QAAQ;AAC9B,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC,OAAO,QAAQ,KAAK,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,QAAQ;AAClE;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzC,CAAC,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChE;AACA,SAAS,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE;AACnD,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,QAAQ;AAClC,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC;AACpE,CAAC,IAAI,aAAa,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,OAAO,QAAQ;AACpE,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE,OAAO,qBAAqB;AACnD,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACjH;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC/C,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI;AACvD,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/E,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;AACrC,CAAC,OAAO;AACR,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrB,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,EAAE;AACF;AACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE;AACjD,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,OAAO,IAAI;AACvD,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/E,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI;AACrC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC/B;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO,EAAE;AACjC,CAAC,IAAI,KAAK,YAAY,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACxD,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;AACpD,CAAC,IAAI,KAAK,YAAY,GAAG,EAAE;AAC3B,EAAE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;AAC/B,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC7F,EAAE,OAAO,OAAO;AAChB,CAAC;AACD,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;AAC9B,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACjD,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5B,GAAG,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,GAAG;AACH,EAAE;AACF,EAAE,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AACH,CAAC,OAAO,OAAO;AACf;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3D,CAAC,OAAO;AACR,EAAE,GAAG;AACL,EAAE,MAAM;AACR,EAAE,OAAO;AACT,EAAE,IAAI,EAAE,YAAY;AACpB,GAAG,IAAI,CAAC,QAAQ,EAAE;AAClB,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9B,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,YAAY;AACpB,EAAE;AACF;AACA,eAAe,uBAAuB,CAAC,MAAM,EAAE;AAC/C,CAAC,IAAI,MAAM,YAAY,QAAQ,EAAE,OAAO,MAAM;AAC9C,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC7D,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY;AACzC,EAAE,CAAC;AACH,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;AACnD,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAC/C,EAAE,CAAC;AACH;AACA,eAAe,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE;AAC/C,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM;AACjC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AAC1C,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3B,CAAC,CAAC,CAAC;AACH,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B;AACA,eAAe,YAAY,CAAC,GAAG,EAAE;AACjC,CAAC,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC/C,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AAC5B,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACtE,EAAE,CAAC,CAAC;AACJ,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACtB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClD,EAAE,CAAC,CAAC;AACJ,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AACzB,CAAC,CAAC,CAAC;AACH;AACA,SAAS,2BAA2B,CAAC,OAAO,EAAE;AAC9C,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW;AAChD,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG;AAClC,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC,OAAO;AACR,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;AACxB,EAAE,MAAM;AACR,EAAE;AACF,EAAE;AACF;AACA,SAAS,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE;AACvD,CAAC,MAAM,iBAAiB,mBAAmB,IAAI,GAAG,EAAE;AACpD,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AACjC,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC;AACjD,CAAC,CAAC,CAAC;AACH,CAAC,OAAO;AACR,EAAE,OAAO,EAAE;AACX,GAAG,OAAO,EAAE;AACZ,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5D,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5D,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC,OAAO,EAAE;AAC9C,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC,IAAI,EAAE;AACxC,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC,MAAM;AAC1C,IAAI;AACJ,GAAG,MAAM;AACT,GAAG,GAAG,EAAE,GAAG,CAAC,QAAQ;AACpB,GAAG;AACH,EAAE;AACF,EAAE;AACF;AACA,IAAI,kBAAkB,GAAG,MAAM;AAC/B,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE;AACzC,EAAE,IAAI,CAAC,YAAY,GAAG,YAAY;AAClC,EAAE,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACvC,EAAE,IAAI,CAAC,KAAK,mBAAmB,IAAI,GAAG,EAAE;AACxC,EAAE,IAAI,CAAC,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC1C,EAAE,IAAI,CAAC,aAAa,GAAG,EAAE;AACzB,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI;AACtD,EAAE,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,cAAc,CAAC;AACrE,EAAE,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,IAAI,eAAe,EAAE,eAAe,CAAC;AACjG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc;AAC9C,CAAC;AACD,CAAC,MAAM,mBAAmB,GAAG;AAC7B,EAAE,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAErC,EAAE,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,EAAE,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACtC,CAAC;AACD,CAAC,OAAO,CAAC,MAAM,EAAE;AACjB,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/B,CAAC;AACD,CAAC,SAAS,CAAC,MAAM,EAAE;AACnB,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,CAAC;AACD,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE;AACzC,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI;AACrC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC;AAC/B,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,EAAE;AACF,EAAE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1C,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE;AACnC,GAAG,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC1C,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AACtC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC,CAAC;AACjE,GAAG,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE,IAAI;AACpD,IAAI,MAAM,SAAS,CAAC,OAAO,EAAE;AAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,CAAC;AACrD,GAAG,CAAC,CAAC,OAAO,KAAK,EAAE;AACnB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACrE,GAAG;AACH,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE;AAC/D,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa;AACpC,IAAI,cAAc,EAAE,IAAI,CAAC,cAAc;AACvC,IAAI,cAAc,EAAE,IAAI,CAAC;AACzB,IAAI,CAAC;AACL,EAAE;AACF,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACnD,EAAE,OAAO;AACT,GAAG,IAAI;AACP,GAAG;AACH,GAAG;AACH,CAAC;AACD,CAAC,mBAAmB,GAAG;AACvB,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,YAAY,KAAK;AAChD,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,IAAI,KAAK;AACzC,IAAI,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE;AACxD,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;AAC5C,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAChE,IAAI,IAAI,QAAQ,GAAG,EAAE;AACrB,IAAI,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI;AAC5D,SAAS,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACpF,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;AACxL,GAAG,CAAC,EAAE;AACN,EAAE,CAAC,EAAE,EAAE;AACP,CAAC;AACD,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE;AACtD,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;AAC1E,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACnD,EAAE,OAAO,uBAAuB,CAAC,MAAM,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;AAC1E,CAAC;AACD,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5B,EAAE,MAAM,UAAU,GAAG,OAAO,YAAY,OAAO,GAAG,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;AAC9F,EAAE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;AACrC,EAAE,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;AAC9D,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE;AAC1E,GAAG,MAAM,EAAE,GAAG;AACd,GAAG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB;AAChD,GAAG,CAAC;AACJ,EAAE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE;AAC1C,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;AACtK,CAAC;AACD,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AAC/C,EAAE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClE,EAAE,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;AAC9E,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACnF,EAAE,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC;AACtM,CAAC;AACD,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;AACvD,EAAE,IAAI;AACN,GAAG,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW;AAClD,GAAG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,GAAG,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC;AACnF,GAAG,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AAChD,GAAG,aAAa,CAAC,QAAQ,GAAG,kBAAkB;AAC9C,GAAG,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;AACzE,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,IAAI,IAAI,IAAI;AACZ,IAAI,OAAO,KAAK;AAChB,GAAG;AACH,GAAG,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC;AAC3C,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AACvL,GAAG,OAAO,IAAI;AACd,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,GAAG,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC;AACzD,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG;AACvB,GAAG,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC;AACpD,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC9D,GAAG,OAAO,IAAI;AACd,EAAE;AACF,CAAC;AACD,CAAC,MAAM,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE;AACpC,EAAE,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,OAAO,CAAC;AAChE,EAAE,MAAM,KAAK,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;AAClF,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK;AAC1B,EAAE,IAAI;AACN,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,GAAG,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;AACvF,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;AACnE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AACvG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACpD,GAAG,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,CAAC;AACxF,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACjC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,kCAAkC,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7F,GAAG,IAAI,QAAQ,GAAG,KAAK;AACvB,GAAG,MAAM,OAAO,GAAG,OAAO,UAAU,EAAE,KAAK,KAAK;AAChD,IAAI,IAAI,QAAQ,EAAE;AAClB,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI,IAAI,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3C,IAAI,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;AACvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;AACxC,IAAI,MAAM,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC;AACzC,GAAG,CAAC;AACJ,GAAG,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK;AACpC,IAAI,IAAI;AACR,KAAK,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzE,KAAK,IAAI,eAAe,CAAC,iBAAiB,IAAI,eAAe,CAAC,cAAc,GAAG,CAAC,EAAE;AAClF,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;AACtG,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,cAAc,EAAE;AAC3D,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,wCAAwC,EAAE,UAAU,CAAC,EAAE,CAAC,qCAAqC,EAAE,CAAC,eAAe,CAAC,cAAc,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACpL,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,6BAA6B,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACtH,QAAQ;AACR,OAAO;AACP,MAAM;AACN,KAAK;AACL,KAAK,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,KAAK,KAAK;AAC5D,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC,SAAS,GAAG,OAAO,EAAE,UAAU,CAAC;AACnF,KAAK,CAAC,CAAC;AACP,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE;AACpB,KAAK,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC;AAChE,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AACxB,IAAI,OAAO,CAAC,CAAC,6BAA6B,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACvF,GAAG,CAAC,CAAC;AACL,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK;AAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,GAAG,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5L,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;AACzB,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,EAAE,EAAE,UAAU,CAAC,EAAE;AACrB,IAAI,OAAO,EAAE;AACb,IAAI,CAAC;AACL,GAAG,OAAO,IAAI;AACd,EAAE,CAAC,CAAC,OAAO,KAAK,EAAE;AAClB,GAAG,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC;AACnE,GAAG,EAAE,CAAC,KAAK,EAAE;AACb,GAAG,OAAO,IAAI;AACd,EAAE;AACF,CAAC;AACD,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;AACtD,EAAE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW;AACpE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,KAAK;AAC/G,EAAE,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK;AACxD,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC;AACpC,EAAE,CAAC,CAAC;AACJ,EAAE,OAAO,IAAI;AACb,CAAC;AACD,CAAC;AACD,SAAS,wBAAwB,CAAC,YAAY,EAAE,OAAO,EAAE;AACzD,CAAC,OAAO,IAAI,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC;AACrD;;AC9hBA,eAAe,qBAAA,GAAsC;AACnD,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,CAAC,OAAA,CAAQ,UAAU,IAAA,EAAM;AAC7D,IAAA,OAAA,CAAQ,KAAK,4DAA4D,CAAA;AACzE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,QAAQ,CAAA;AAC/C,IAAA,MAAM,OAAA,GAAU,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA;AAC7C,IAAA,MAAM,EAAA,GAAK,QAAQ,IAAI,CAAA;AACvB,IAAA,OAAO,EAAA,CAAG,eAAA,IAAmB,EAAA,CAAG,OAAA,EAAS,eAAA,IAAmB,EAAA;AAAA,EAC9D,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,IAAA,CAAK,6BAA6B,KAAK,CAAA;AAC/C,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEO,SAAS,aAAa,YAAA,EAA6C;AACxE,EAAA,IAAI,QAAA,GAAsC,IAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,yBAAyB,YAAY,CAAA;AAEvD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,eAAA;AAAA,IAEN,MAAM,gBAAgB,MAAA,EAAuB;AAC3C,MAAA,IAAI;AACF,QAAA,MAAM,oBAAA,GAAuB,MAAM,qBAAA,EAAsB;AACzD,QAAA,IAAI,oBAAA,EAAsB;AACxB,UAAA,QAAA,GAAW,IAAI,oBAAA,CAAqB;AAAA,YAClC,QAAA,EAAU;AAAA,WACX,CAAA;AACD,UAAA,OAAA,CAAQ,IAAI,2CAA2C,CAAA;AAAA,QACzD,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,IAAI,oDAAoD,CAAA;AAAA,QAClE;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,IAAA,CAAK,mCAAmC,KAAK,CAAA;AACrD,QAAA,QAAA,GAAW,IAAA;AAAA,MACb;AAEA,MAAA,OAAA,CAAQ,IAAI,kCAAkC,CAAA;AAC9C,MAAA,0BAAA,EAA2B;AAE3B,MAAA,MAAA,CAAO,YAAY,GAAA,CAAI,UAAA,EAAY,OAAO,GAAA,EAAK,KAAK,IAAA,KAAS;AAC3D,QAAA,MAAM,SAAA,CAAU,iBAAA,CAAkB,GAAA,EAAK,GAAA,EAAK,IAAA,EAAM;AAAA,UAChD,WAAA,EAAa;AAAA,SACd,CAAA;AAAA,MACH,CAAC,CAAA;AAED,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAA,CAAO,YAAY,EAAA,CAAG,SAAA,EAAW,CAAC,OAAA,EAAS,QAAQ,IAAA,KAAS;AAC1D,UAAA,KAAK,SAAA,CAAU,aAAA,CAAc,QAAA,EAAW,OAAA,EAAS,QAAQ,IAAI,CAAA;AAAA,QAC/D,CAAC,CAAA;AAAA,MACH;AAEA,MAAA,OAAA,CAAQ,IAAI,sEAAsE,CAAA;AAAA,IACpF,CAAA;AAAA,IAEA,UAAA,GAAa;AACX,MAAA,OAAA,CAAQ,IAAI,2BAA2B,CAAA;AAAA,IACzC,CAAA;AAAA,IAEA,QAAA,GAAW;AACT,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,KAAA,EAAM;AAAA,MACjB;AACA,MAAA,OAAA,CAAQ,IAAI,uBAAuB,CAAA;AAAA,IACrC;AAAA,GACF;AACF;;ACxBO,SAAS,gBAAA,CAAiB,OAAA,GAAmC,EAAC,EAAW;AAC9E,EAAA,MAAM;AAAA,IACJ,WAAA,GAAc;AAAA,MACZ,GAAA,EAAK,qBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,QAAA,IAAY;AAAA,GACpC,GAAI,OAAA;AAEJ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,mBAAA;AAAA,IACN,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO,KAAA;AAAA,MACP,QAAQ,IAAA,EAAc;AAEpB,QAAA,MAAM,iBAAA,GAAoB,YAAY,OAAmC,CAAA;AAEzE,QAAA,IAAI,CAAC,iBAAA,EAAmB;AACtB,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,sCAAA,EAAyC,OAAO,CAAA,2BAAA,CAA6B,CAAA;AAC1F,UAAA,MAAM,kBAAA,GAAqB,YAAY,GAAA,IAAO,qBAAA;AAC9C,UAAA,OAAO,IAAA,CAAK,OAAA;AAAA,YACV,yDAAA;AAAA,YACA,8BAA8B,kBAAkB,CAAA,YAAA;AAAA,WAClD;AAAA,QACF;AAGA,QAAA,MAAM,kBAAkB,IAAA,CAAK,OAAA;AAAA,UAC3B,yDAAA;AAAA,UACA,8BAA8B,iBAAiB,CAAA,YAAA;AAAA,SACjD;AAGA,QAAA,IAAI,oBAAoB,IAAA,IAAQ,CAAC,IAAA,CAAK,QAAA,CAAS,uBAAuB,CAAA,EAAG;AACvE,UAAA,OAAO,IAAA,CAAK,OAAA;AAAA,YACV,WAAA;AAAA,YACA,gCAAgC,iBAAiB,CAAA;AAAA,SAAA;AAAA,WACnD;AAAA,QACF;AAEA,QAAA,OAAO,eAAA;AAAA,MACT;AAAA,KACF;AAAA,IACA,eAAe,MAAA,EAAQ;AAErB,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,oCAAA,EAAuC,OAAO,CAAA,CAAE,CAAA;AAC5D,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,iCAAA,EAAoC,WAAA,CAAY,OAAmC,CAAC,CAAA,CAAE,CAAA;AAAA,IACpG;AAAA,GACF;AACF;;ACxFA,SAAS,aAAa,EAAA,EAAqB;AACzC,EAAA,OAAO,CAAC,EAAA,CAAG,UAAA,CAAW,GAAG,CAAA,IAAK,CAAC,EAAA,CAAG,UAAA,CAAW,GAAG,CAAA,IAAK,CAAC,EAAA,CAAG,WAAW,IAAI,CAAA;AAC1E;AAEA,SAAS,YAAA,CAAa,MAAc,KAAA,EAAuB;AACzD,EAAA,OAAO,OAAA,CAAQ,MAAM,KAAK,CAAA;AAC5B;AAEA,SAAS,oBAAA,CACP,IAAA,EACA,WAAA,EACA,cAAA,EACwB;AACxB,EAAA,MAAM,UAAkC,EAAC;AACzC,EAAA,MAAM,mBAAA,GAAsB,YAAA,CAAa,IAAA,EAAM,WAAW,CAAA;AAE1D,EAAA,IAAI,CAACL,YAAA,CAAW,mBAAmB,CAAA,EAAG;AACpC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2CAAA,EAA8C,WAAW,CAAA,CAAE,CAAA;AAAA,EAC7E;AAEA,EAAA,OAAA,CAAQ,MAAA,GAAS,mBAAA;AAEjB,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,EAAG;AAC1D,IAAA,MAAM,oBAAA,GAAuB,YAAA,CAAa,IAAA,EAAM,KAAK,CAAA;AACrD,IAAA,IAAI,CAACA,YAAA,CAAW,oBAAoB,CAAA,EAAG;AACrC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4CAAA,EAA+C,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AAAA,IAClF;AACA,IAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,oBAAA;AAAA,EAClB;AAEA,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,iBAAA,CAAkB;AAAA,EAChC,OAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAiB;AACnB,CAAA,EAAqC;AACnC,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,cAAA,GAAiB,KAAA;AACrB,EAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,oBAAA;AAAA,IACN,KAAA,EAAO,OAAA;AAAA,IACP,OAAA,EAAS,MAAA;AAAA,IACT,MAAA,CAAO,GAAG,GAAA,EAAK;AACb,MAAA,IAAI,GAAA,CAAI,OAAA,KAAY,OAAA,IAAW,OAAA,KAAY,QAAA,EAAU;AACnD,QAAA;AAAA,MACF;AAEA,MAAA,OAAO;AAAA,QACL,KAAA,EAAO;AAAA,UACL,MAAA,EAAQ;AAAA;AACV,OACF;AAAA,IACF,CAAA;AAAA,IACA,eAAe,cAAA,EAAgB;AAC7B,MAAA,MAAA,GAAS,cAAA;AAAA,IACX,CAAA;AAAA,IACA,UAAA,GAAa;AACX,MAAA,IAAI,OAAA,KAAY,YAAY,YAAA,EAAc;AACxC,QAAA;AAAA,MACF;AACA,MAAA,YAAA,GAAe,IAAA;AACf,MAAA,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA,EAAG,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,CAAA;AAAA,IACvE,CAAA;AAAA,IACA,MAAM,WAAA,GAAc;AAClB,MAAA,IAAI,OAAA,KAAY,YAAY,cAAA,EAAgB;AAC1C,QAAA;AAAA,MACF;AACA,MAAA,cAAA,GAAiB,IAAA;AAEjB,MAAA,MAAM,OAAA,GAAU,oBAAA,CAAqB,MAAA,CAAO,IAAA,EAAM,aAAa,cAAc,CAAA;AAC7E,MAAA,OAAA,CAAQ,GAAA;AAAA,QACN,mDAAmD,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,OACpF;AAEA,MAAA,MAAMM,KAAA,CAAU;AAAA,QACd,UAAA,EAAY,KAAA;AAAA,QACZ,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,OAAA,EAAS;AAAA,UACP,KAAA,EAAO,OAAO,OAAA,CAAQ,KAAA;AAAA,UACtB,MAAA,EAAQ,OAAO,OAAA,CAAQ,MAAA;AAAA,UACvB,UAAA,EAAY,OAAO,OAAA,CAAQ,UAAA;AAAA,UAC3B,UAAA,EAAY,OAAO,OAAA,CAAQ,UAAA;AAAA,UAC3B,UAAA,EAAY,OAAO,OAAA,CAAQ;AAAA,SAC7B;AAAA,QACA,SAAA,EAAW,KAAA;AAAA,QACX,KAAA,EAAO;AAAA,UACL,WAAA,EAAa,IAAA;AAAA,UACb,MAAA,EAAQ,KAAA;AAAA,UACR,MAAA,EAAQ,aAAA;AAAA,UACR,SAAA,EAAW,OAAO,KAAA,CAAM,SAAA;AAAA,UACxB,MAAA,EAAQ,QAAA;AAAA,UACR,GAAA,EAAK;AAAA,YACH,KAAA,EAAO,OAAA;AAAA,YACP,OAAA,EAAS,CAAC,IAAI;AAAA,WAChB;AAAA,UACA,aAAA,EAAe;AAAA,YACb,SAAS,EAAA,EAAI;AACX,cAAA,OAAO,aAAa,EAAE,CAAA;AAAA,YACxB,CAAA;AAAA,YACA,MAAA,EAAQ;AAAA,cACN,cAAA,EAAgB;AAAA;AAClB;AACF;AACF,OACD,CAAA;AAAA,IACH;AAAA,GACF;AACF;;ACpGA,SAAS,2BAA2B,WAAA,EAAiC;AACnE,EAAA,IAAI,CAAC,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,EAAU;AACnD,IAAA,OAAO;AAAA,MACL,QAAQ,WAAA,IAAe,iBAAA;AAAA,MACvB,MAAA,EAAQ,iBAAA;AAAA,MACR,UAAU;AAAC,KACb;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,YAAY,MAAA,IAAU,iBAAA;AAAA,IAC9B,MAAA,EAAQ,YAAY,MAAA,IAAU,iBAAA;AAAA,IAC9B,QAAA,EAAU,WAAA,CAAY,QAAA,IAAY;AAAC,GACrC;AACF;AAEO,SAAS,KAAA,CAAM;AAAA,EACpB,MAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,iBAAA,GAAoB,0BAAA,CAA2B,WAAA,EAAa,MAAM,CAAA;AAExE,EAAA,OAAO;AAAA,IACL,YAAA,EAAa;AAAA,IACb,mBAAA,EAAoB;AAAA,IACpB,aAAa,MAAM,CAAA;AAAA,IACnB,iBAAA,CAAkB;AAAA,MAChB,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,QAAA,IAAY,KAAA;AAAA,MACjC,aAAa,iBAAA,CAAkB,MAAA;AAAA,MAC/B,gBAAgB,iBAAA,CAAkB;AAAA,KACnC,CAAA;AAAA,IACD,gBAAA,CAAiB;AAAA,MACf,WAAA,EAAa;AAAA,QACX,GAAA,EAAK,aAAa,GAAA,IAAO,qBAAA;AAAA,QACzB,QAAQ,iBAAA,CAAkB;AAAA;AAC5B,KACD;AAAA,GACH;AACF;;;;","x_google_ignoreList":[2,3,4,5]}
|