@galacean/engine-shaderlab 1.6.4 → 1.6.6

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/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/Preprocessor.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/parser/GrammarSymbol.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/ParserUtils.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else 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 return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (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 if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum EGenType {\n GenType = 200,\n GenIntType,\n GenUintType,\n GenBoolType,\n Mat,\n BoolVec,\n IntVec,\n UintVec,\n Vec,\n GVec4,\n GSampler2D,\n GSampler3D,\n GSamplerCube,\n GSampler2DArray\n}\n\nexport type NonGenericGalaceanType = Exclude<GalaceanDataType, string>;\ntype BuiltinType = NonGenericGalaceanType | EGenType;\n\nfunction isGenericType(t: BuiltinType) {\n return t >= EGenType.GenType && t <= EGenType.GSampler2DArray;\n}\n\nconst BuiltinFunctionTable: Map<string, BuiltinFunction[]> = new Map();\n\nexport class BuiltinFunction {\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\n\n private _returnType: BuiltinType;\n private _realReturnType: NonGenericGalaceanType;\n\n get realReturnType(): NonGenericGalaceanType {\n return this._realReturnType;\n }\n\n private constructor(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n this.ident = ident;\n this._returnType = returnType;\n this.args = args;\n this.scope = scope;\n }\n\n static getReturnType(fn: BuiltinFunction, genType?: NonGenericGalaceanType) {\n if (!isGenericType(fn._returnType)) return fn._returnType as NonGenericGalaceanType;\n return genType;\n }\n\n static _create(ident: string, returnType: BuiltinType, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, EShaderStage.ALL, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n static _createWithScop(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, scope, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n // TODO: correct the type deduce, consider the following case:\n // It incorrectly inferred the type of the following expression as float, which should be vec3.\n // max(scatterAmt.xyz,0.0001)\n static getFn(ident: string, parameterTypes: NonGenericGalaceanType[]): BuiltinFunction | undefined {\n const list = BuiltinFunctionTable.get(ident);\n if (list) {\n for (let length = list.length, i = 0; i < length; i++) {\n const fn = list[i];\n const fnArgs = fn.args;\n const argLength = fnArgs.length;\n if (argLength !== parameterTypes.length) continue;\n // Try to match generic parameter type.\n let returnType = TypeAny;\n let found = true;\n for (let i = 0; i < argLength; i++) {\n const curFnArg = fnArgs[i];\n if (isGenericType(curFnArg)) {\n if (returnType === TypeAny) returnType = parameterTypes[i];\n } else {\n if (curFnArg !== parameterTypes[i] && parameterTypes[i] !== TypeAny) {\n found = false;\n break;\n }\n }\n }\n if (found) {\n fn._realReturnType = returnType;\n return fn;\n }\n }\n }\n }\n\n static isExist(ident: string) {\n return !!BuiltinFunctionTable.get(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"degrees\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tanh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atanh\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"pow\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sqrt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"inversesqrt\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"abs\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"abs\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"sign\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sign\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"floor\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"trunc\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"round\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"roundEven\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"ceil\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"fract\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenBoolType);\nBuiltinFunction._create(\"step\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"step\", EGenType.GenType, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"isnan\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"isinf\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", EGenType.GenUintType, EGenType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", EGenType.GenType, EGenType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", EGenType.GenType, EGenType.GenUintType);\n\nBuiltinFunction._create(\"packSnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", Keyword.VEC2, Keyword.UINT);\n\nBuiltinFunction._create(\"length\", Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"faceforward\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"reflect\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"refract\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.Mat);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4, Keyword.VEC4, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X3, Keyword.VEC3, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X2, Keyword.VEC2, Keyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X4, Keyword.VEC4, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X2, Keyword.VEC2, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X4, Keyword.VEC4, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X3, Keyword.VEC3, Keyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4, Keyword.MAT4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X3, Keyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X2, Keyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X2, Keyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X4, Keyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X4, Keyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X3, Keyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT2);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT3);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"inverse\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"inverse\", Keyword.MAT4, Keyword.MAT4);\n\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSamplerCube, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER2D_SHADOW, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER_CUBE_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCube\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\n\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER_CUBE_SHADOW,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._createWithScop(\"dFdx\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"dFdy\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"fwidth\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { Logger } from \"@galacean/engine\";\nimport { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n Logger.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { Logger } from \"@galacean/engine\";\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n Logger.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderLab._processingPassText).toString());\n }\n}\n","import { GalaceanDataType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number,\n public isInMacroBranch = false\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = {\n ident?: BaseToken;\n typeInfo?: SymbolType;\n astNode?: ASTNode.ParameterDeclaration | ASTNode.MacroParamBlock;\n};\n","import { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Preprocessor } from \"../Preprocessor\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderLabUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _parent: TreeNode;\n private _location: ShaderRange;\n private _codeCache: string;\n\n /**\n * Parent pointer for AST traversal.\n * @remarks\n * The parent pointer is only reliable after the entire AST has been constructed.\n * DO NOT rely on `parent` during the `semanticAnalyze` phase, as the AST may still be under construction.\n * It is safe to use `parent` during code generation or any phase after AST construction.\n */\n get parent(): TreeNode {\n return this._parent;\n }\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n for (const child of children) {\n if (child instanceof TreeNode) {\n child._parent = this;\n }\n }\n\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n setCache(code: string): string {\n this._codeCache = code;\n return code;\n }\n\n getCache(): string {\n return this._codeCache;\n }\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n const code = visitor.defaultCodeGen(this.children);\n this.setCache(code);\n return code;\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n type MacroExpression =\n | MacroPushContext\n | MacroPopContext\n | MacroElseExpression\n | MacroElifExpression\n | MacroUndef\n | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n lookupSymbol.set(fnIdent, ESymbolType.FN, undefined, undefined, paramSig);\n\n const fnSymbol = sa.symbolTableStack.lookup(lookupSymbol, true) as FnSymbol;\n\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: Array<AssignmentExpression | MacroCallArgBlock> = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children[0] instanceof AssignmentExpression) {\n const expr = children[0];\n paramSig.push(expr.type);\n paramNodes.push(expr);\n } else if (children[2] instanceof AssignmentExpression) {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n paramSig.push(...list.paramSig, decl.type);\n paramNodes.push(...list.paramNodes, decl);\n } else if (children[0] instanceof FunctionCallParameterList && children[1] instanceof MacroCallArgBlock) {\n paramSig.push(...children[0].paramSig, TypeAny);\n paramNodes.push(...children[0].paramNodes, children[1]);\n } else if (children[0] instanceof MacroCallArgBlock) {\n paramSig.push(TypeAny);\n paramNodes.push(children[0]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_case_list)\n export class MacroCallArgCaseList extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_block)\n export class MacroCallArgBlock extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_branch)\n export class MacroCallArgBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (!sa.symbolTableStack.isInMacroBranch) {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionIdentifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n // #endif\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n let needFindNames: string[];\n\n if (child instanceof BaseToken) {\n needFindNames = [child.lexeme];\n } else {\n needFindNames = (child as MacroCallSymbol | MacroCallFunction).referenceSymbolNames;\n }\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n if (sa.macroDefineList[name]) {\n continue;\n }\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n sa.reportWarning(this.location, `Please sure the identifier \"${name}\" will be declared before used.`);\n // #endif\n } else {\n this.typeInfo = symbols[0].dataType?.type;\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n if (currentScopeSymbol) {\n if (\n (currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n } else if (\n symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n }\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (child instanceof MacroUndef || child instanceof GlobalMacroIfStatement || child instanceof BaseToken) {\n sa.shaderData.globalMacroDeclarations.push(this);\n\n if (child instanceof GlobalMacroIfStatement) {\n this.macroExpressions.push(...child.macroExpressions);\n } else {\n this.macroExpressions.push(child);\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_undef)\n export class MacroUndef extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_push_context)\n export class MacroPushContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel++;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_pop_context)\n export class MacroPopContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel--;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_elif_expression)\n export class MacroElifExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_else_expression)\n export class MacroElseExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_declaration)\n export class GlobalMacroDeclaration extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 1) {\n macroExpressions.push(...(children[0] as GlobalDeclaration).macroExpressions);\n } else {\n macroExpressions.push(...(children[0] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[1] as GlobalDeclaration).macroExpressions);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n const children = this.children as TreeNode[];\n if (children.length === 1) {\n return this.setCache(children[0].codeGen(visitor));\n } else {\n return this.setCache(`${children[0].codeGen(visitor)}\\n${children[1].codeGen(visitor)}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_if_statement)\n export class GlobalMacroIfStatement extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 3) {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[2] as GlobalMacroBranch).macroExpressions);\n } else {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_branch)\n export class GlobalMacroBranch extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n const macroExpressions = this.macroExpressions;\n macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof GlobalMacroDeclaration) {\n macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof GlobalMacroBranch) {\n macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_if_statement)\n export class MacroIfStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_branch)\n export class MacroBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_call_symbol)\n export class MacroCallSymbol extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string;\n\n override init(): void {\n this.referenceSymbolNames.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroName = (children[0] as BaseToken).lexeme;\n\n this.macroName = macroName;\n\n Preprocessor.getReferenceSymbolNames(sa.macroDefineList, macroName, this.referenceSymbolNames);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[];\n macroName: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as MacroCallSymbol;\n\n this.referenceSymbolNames = child.referenceSymbolNames;\n this.macroName = child.macroName;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\n );\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderLab.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n // If it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this.macroDefineList[word]) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderMacro } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { MacroParserConstant, MacroParserKeyword, MacroParserToken } from \"./constants\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport MacroParserLexer from \"./MacroParserLexer\";\nimport { PpUtils } from \"./Utils\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class MacroParser {\n static lexer: MacroParserLexer;\n\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n private static _expandVisitedMacros: Record<string, number> = {};\n private static _expandVersionId: number = 1;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static parse(source: string, macros: ShaderMacro[]): string | null {\n MacroParser._reset();\n\n for (const macro of macros) {\n MacroParser._addPredefinedMacro(macro.name, macro.value);\n }\n\n this.lexer = new MacroParserLexer(source);\n return MacroParser._parseDirectives(this.lexer);\n }\n\n private static _reset() {\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n\n this._definedMacros.clear();\n this._addPredefinedMacro(\"GL_ES\");\n\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n private static _addPredefinedMacro(macro: string, value?: string) {\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value != undefined) {\n macroBody = BaseToken.pool.get();\n macroBody.set(MacroParserToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(token, macroBody));\n }\n\n private static _parseDirectives(lexer: MacroParserLexer): string | null {\n let directive: BaseToken | undefined;\n while ((directive = lexer.scanToken())) {\n switch (directive.type) {\n case MacroParserToken.id:\n this._parseMacro(lexer, directive);\n break;\n case MacroParserKeyword.define:\n this._parseDefine(lexer);\n break;\n case MacroParserKeyword.undef:\n this._parseUndef(lexer);\n break;\n case MacroParserKeyword.if:\n this._parseIfDirective(lexer, MacroParserKeyword.if);\n break;\n case MacroParserKeyword.ifndef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifndef);\n break;\n case MacroParserKeyword.ifdef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifdef);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this._getExpandSegments(), lexer.source, lexer.sourceMap);\n }\n\n private static _getExpandSegments(): ExpandSegment[] {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static _reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file?: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseIfDirective(lexer: MacroParserLexer, directiveType: MacroParserKeyword): void {\n const directiveLength =\n directiveType === MacroParserKeyword.if ? 3 : directiveType === MacroParserKeyword.ifdef ? 6 : 7; // #if = 3, #ifdef = 6, #ifndef = 7\n const start = lexer.currentIndex - directiveLength;\n let skipMacro = false;\n\n let shouldInclude: MacroParserConstant;\n if (directiveType === MacroParserKeyword.if) {\n shouldInclude = this._parseConstantExpression(lexer);\n } else {\n const macroToken = lexer.scanWord();\n const lexeme = macroToken.lexeme;\n if (lexeme.startsWith(\"GL_\")) {\n skipMacro = true;\n } else {\n const defined = this._definedMacros.get(lexeme);\n shouldInclude = directiveType === MacroParserKeyword.ifdef ? !!defined : !defined;\n }\n }\n\n lexer.skipSpace(true);\n const { body, nextDirective } = lexer.scanMacroBranchBody();\n\n if (skipMacro) return;\n\n if (shouldInclude) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? lexer.getShaderPosition(0) : lexer.scanRemainMacro();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, lexer);\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n end,\n expanded.content,\n lexer.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addEmptyReplace(lexer, start);\n this._processConditionalDirective(nextDirective.type, lexer);\n }\n }\n\n private static _processConditionalDirective(\n directive: MacroParserKeyword.elif | MacroParserKeyword.else | MacroParserKeyword.endif,\n scanner: MacroParserLexer\n ) {\n if (directive === MacroParserKeyword.endif) {\n return;\n }\n\n const start = scanner.currentIndex;\n\n if (directive === MacroParserKeyword.else) {\n const { body } = scanner.scanMacroBranchBody();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n scanner.getShaderPosition(0),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else if (directive === MacroParserKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { body, nextDirective } = scanner.scanMacroBranchBody();\n if (constantExpr) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? scanner.currentIndex : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(end),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(scanner.currentIndex),\n \"\",\n scanner.blockRange\n );\n this._processConditionalDirective(nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: MacroParserLexer): MacroParserConstant {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: MacroParserLexer) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n scanner.skipSpace(false);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: MacroParserLexer): MacroParserConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner.advance(1);\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner.advance(1);\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: MacroParserLexer): MacroParserConstant {\n if (BaseLexer.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === MacroParserKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord();\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner.advance(1);\n }\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n\n if (!macro) {\n return false;\n }\n\n if (!macro.body) {\n return true;\n }\n\n if (macro.isFunction) {\n this._reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this._reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n return value;\n }\n } else if (BaseLexer.isDigit(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this._reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n private static _parseMacroFunctionArgs(\n source: string,\n startIndex: number,\n macroName: string\n ): { args: string[]; endIndex: number } {\n const length = source.length;\n let i = startIndex + macroName.length;\n\n // Find opening parenthesis\n while (i < length && source.charCodeAt(i) !== 40) i++;\n\n // Parse function arguments\n const args: string[] = [];\n let level = 1;\n let argStart = i + 1;\n let k = argStart;\n\n while (k < length && level > 0) {\n const charCode = source.charCodeAt(k);\n if (charCode === 40) {\n level++;\n } else if (charCode === 41) {\n if (--level === 0) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n break;\n }\n } else if (charCode === 44 && level === 1) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n argStart = k + 1;\n }\n k++;\n }\n\n return { args, endIndex: k + 1 };\n }\n\n private static _expandMacroBody(body: string): string {\n const visitedMacros = this._expandVisitedMacros;\n const currentVersionId = ++this._expandVersionId;\n let expandedBody = body;\n let hasExpansion = true;\n\n while (hasExpansion) {\n hasExpansion = false;\n const length = expandedBody.length;\n let i = 0;\n\n while (i < length) {\n const charCode = expandedBody.charCodeAt(i);\n if (!BaseLexer.isAlpha(charCode)) {\n i++;\n continue;\n }\n\n const start = i;\n while (i < length && BaseLexer.isAlnum(expandedBody.charCodeAt(i))) {\n i++;\n }\n\n const macroName = expandedBody.substring(start, i);\n const macro = this._definedMacros.get(macroName);\n\n if (!macro || visitedMacros[macroName] === currentVersionId) {\n continue;\n }\n\n // Prevent circular references\n visitedMacros[macroName] = currentVersionId;\n\n let replacement: string;\n let endIndex: number;\n\n if (!macro.isFunction) {\n replacement = macro.body?.lexeme ?? \"\";\n endIndex = i;\n } else {\n const { args, endIndex: newEndIndex } = this._parseMacroFunctionArgs(expandedBody, start, macroName);\n replacement = macro.expandFunctionBody(args);\n endIndex = newEndIndex;\n }\n\n expandedBody = expandedBody.substring(0, start) + replacement + expandedBody.substring(endIndex);\n hasExpansion = true;\n break;\n }\n }\n\n return expandedBody;\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: MacroParserLexer\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: MacroParserLexer | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: MacroParserLexer;\n if (typeof scannerOrFile === \"string\") {\n scanner = new MacroParserLexer(chunk, scannerOrFile);\n } else {\n scanner = new MacroParserLexer(chunk, scannerOrFile.file, loc);\n }\n\n const ret = this._parseDirectives(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _addEmptyReplace(lexer: MacroParserLexer, start: number) {\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n lexer.getShaderPosition(0),\n \"\",\n lexer.blockRange\n );\n }\n\n private static _addContentReplace(\n sourceFile: string,\n start: ShaderPosition,\n end: ShaderPosition,\n content: string,\n sourceRange?: ShaderRange,\n sourceMap?: PpSourceMap\n ): void {\n // #if _VERBOSE\n const block = new BlockInfo(sourceFile, sourceRange, sourceMap);\n // #endif\n\n const range = ShaderLab.createRange(start, end);\n this._getExpandSegments().push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: content\n });\n }\n\n private static _parseDefine(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(7);\n const macroName = lexer.scanWord();\n\n const { lexeme, location } = macroName;\n let { end } = location;\n if (this._definedMacros.get(lexeme) && lexeme.startsWith(\"GL_\")) {\n this._reportError(location, `Redefined macro: ${lexeme}`, lexer.source, lexer.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (lexer.getCurChar() === \"(\") {\n macroArgs = lexer.scanWordsUntilTerminator(\")\");\n end = lexer.getShaderPosition(0);\n }\n const macroBody = lexer.scanMacroBody();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macroName, macroBody, range, macroArgs);\n this._definedMacros.set(lexeme, macroDefine);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseUndef(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(6);\n const macroName = lexer.scanWord();\n this._definedMacros.delete(macroName.lexeme);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseMacro(lexer: MacroParserLexer, token: BaseToken) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n const { location } = token;\n if (macro.isFunction) {\n const { args, endIndex } = this._parseMacroFunctionArgs(lexer.source, location.start.index, token.lexeme);\n const macroBodyExpanded = macro.expandFunctionBody(args);\n const expandedContent = this._expandMacroBody(macroBodyExpanded);\n\n const remainingLength = endIndex - location.end.index;\n lexer.advance(remainingLength);\n\n this._addContentReplace(\n lexer.file,\n location.start,\n lexer.getShaderPosition(0),\n expandedContent,\n lexer.blockRange\n );\n } else {\n const macroContent = macro.body?.lexeme ?? \"\";\n const expandedContent = this._expandMacroBody(macroContent);\n\n this._addContentReplace(lexer.file, location.start, location.end, expandedContent, lexer.blockRange);\n }\n }\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.lexer.sourceMap.map(index);\n }\n // #endif\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n Logger.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean ShaderLab\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n const startTime = performance.now();\n\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const constMap = { ...shaderRenderStates.constantMap, ...subShader.renderStates.constantMap };\n const variableMap = { ...shaderRenderStates.variableMap, ...subShader.renderStates.variableMap };\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n Object.assign(pass.renderStates.constantMap, constMap);\n Object.assign(pass.renderStates.variableMap, variableMap);\n if (pass.isUsePass) continue;\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[Task - Source compilation] cost time ${performance.now() - startTime}ms`);\n return shaderSource;\n }\n\n private static _parseShader(lexer: SourceLexer): IShaderSource {\n // Parse shader header\n lexer.scanLexeme(\"Shader\");\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const shaderSource = ShaderSourceFactory.createShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n let braceLevel = 1;\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n const { pendingContents } = shaderSource;\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSSubShader:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n const subShader = this._parseSubShader();\n shaderSource.subShaders.push(subShader);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSEditorProperties:\n case Keyword.GSEditorMacros:\n case Keyword.GSEditor:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n lexer.scanPairedChar(\"{\", \"}\", true, false);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n this._popScope();\n return shaderSource;\n }\n break;\n default:\n start = this._parseRenderState(token, start, pendingContents, shaderSource.renderStates);\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(renderStates: IRenderStates, stateToken: BaseToken): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\"{\");\n const renderState = this._parseRenderStateProperties(stateToken.lexeme);\n const symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);\n this._symbolTableStack.insert(symbol);\n } else if (token.lexeme === \"=\") {\n // Assignment\n const variable = lexer.scanToken();\n\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(variable.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${variable.lexeme}`, variable.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const renderState = sm.value as IRenderStates;\n Object.assign(renderStates.constantMap, renderState.constantMap);\n Object.assign(renderStates.variableMap, renderState.variableMap);\n return;\n }\n }\n\n private static _parseVariableDeclaration(): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, token.type);\n this._symbolTableStack.insert(symbol);\n }\n\n private static _pushScope(): void {\n const symbolTable = new SymbolTable<ShaderSourceSymbol>();\n this._symbolTableStack.pushScope(symbolTable);\n }\n\n private static _popScope(): void {\n this._symbolTableStack.popScope();\n }\n\n private static _parseRenderStateProperties(state: string): IRenderStates {\n const lexer = this._lexer;\n const renderStates = ShaderSourceFactory.createRenderStates();\n while (lexer.getCurChar() !== \"}\") {\n this._parseRenderStateProperty(state, renderStates);\n lexer.skipCommentsAndSpace();\n }\n lexer.advance(1);\n return renderStates;\n }\n\n private static _createCompileError(message: string, location?: ShaderPosition | ShaderRange): void {\n const error = this._lexer.createCompileError(message, location);\n // #if _VERBOSE\n this.errors.push(<GSError>error);\n // #endif\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n propertyValue = this._renderStateConstMap[valueToken.lexeme]?.[constValueToken.lexeme];\n if (propertyValue == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${valueToken.lexeme}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Logger, ShaderMacro, ShaderLanguage } from \"@galacean/engine\";\nimport { IShaderLab, IShaderSource } from \"@galacean/engine-design\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { MacroParser } from \"./macroProcessor/MacroParser\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./Preprocessor\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const totalStartTime = performance.now();\n const macroDefineList = {};\n Preprocessor._repeatIncludeSet.clear();\n const noIncludeContent = Preprocessor.parse(source, basePathForIncludeKey, macroDefineList);\n Logger.info(`[Task - Pre processor] cost time ${performance.now() - totalStartTime}ms`);\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const codeGenStartTime = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[Task - CodeGen] cost time: ${performance.now() - codeGenStartTime}ms`);\n Logger.info(`[Task - Total compilation] cost time: ${performance.now() - totalStartTime}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n return ret;\n }\n\n _parseMacros(content: string, macros: ShaderMacro[]): string {\n const startTime = performance.now();\n const parsedContent = MacroParser.parse(content, macros);\n Logger.info(`[Task - parse macros] cost time: ${performance.now() - startTime}ms`);\n\n // #if _VERBOSE\n this._logErrors(MacroParser._errors);\n // #endif\n\n return parsedContent;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","_isNumber","str","isNaN","Number","_isExist","list","item","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","name","paramsGroup","paramsStr","valueRaw","split","map","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","from","to","target","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","_repeatIncludeSet","has","warn","add","_macroDefineIncludeMap","get","chunkMacroDefineList","Map","Set","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","INT","UINT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","NoneTerminal","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","undefined","lookupAll","GSError","toString","diagnosticMessage","Error","wrappingLineCount","GSErrorName","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","node","parent","ASTNode","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","nt","TreeNode","children","_location","_children","child","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","SingleDeclaration","childrenLen","fullyType","id","sm","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","a","b","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","token","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","expr","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","MacroCallSymbol","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","ParserUtils","unwrapNodeByType","Token","isTerminal","START","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","CompilationError","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","Array","CodeGenVisitor","_tmpArrayPool","ret","return","join","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","astNodes","paramInfoList","paramsCode","variableParam","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","precision","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","vertex","_vertexMain","fragment","_fragmentMain","stage","fnSymbols","forEach","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","returnLocation","mrtSymbols","mrtSymbol","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","values","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","offset","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","MacroParserLexer","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","sourceMap","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","blockRange","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","startIndex","argStart","k","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Production","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","reduceProduction","translationRule","nextState","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","errors","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","constMap","j","pass","assign","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","stateToken","renderState","_parseRenderStateProperties","variable","_createCompileError","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","key","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outRenderStates","outTags","_parseShaderSource","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","line","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":";;;;;;AAAA,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACjC,IAAI,iBAAiB,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/E,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;AACxB;AACA,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC;;ACNA,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;AACzC,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;AACjE,QAAQ,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;AAClF,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACrJ;AACA,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5D;;ACVA,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACrF,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK,MAAM,OAAO,IAAI,YAAY,KAAK,CAAC;AACxC;;ACJA,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;AAC/D,QAAQ,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;AACvC;AACA,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC9D;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClE,KAAK;AACL,CAAC;AACD,SAAS,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;AAC7D,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACjE;AACA,IAAI,OAAO,WAAW,CAAC;AACvB;;AChBA,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1D;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E;AACA,IAAI,OAAO,IAAI,CAAC;AAChB;;ACJA,SAAS,8BAA8B,CAAC,CAAC,EAAE,MAAM,EAAE;AACnD,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO;AACnB,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACtE;AACA,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D;AACA,IAAI,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;AAChE,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,KAAK,WAAW,IAAI,0CAA0C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACxH;;ACTA,SAAS,oCAAoC,CAAC,CAAC,EAAE,cAAc,EAAE;AACjE,IAAI,IAAI,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;AACpF;AACA,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnD;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,8BAA8B,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC7H,QAAQ,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AACvB;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB;AACA,QAAQ,OAAO,WAAW;AAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD;AACA,YAAY,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAClD,SAAS,CAAC;AACV,KAAK;AACL;AACA,IAAI,MAAM,IAAI,SAAS,CAAC,uIAAuI,CAAC,CAAC;AACjK;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwCA;AACO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;AAC1D,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;AAC/H,EAAE,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,CAAC;AACjI,OAAO,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,CAAC;AACpJ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAgED;AACO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;AAC3C,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,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,CAAC;AACnM,EAAE,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,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9J,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACpE,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE;AACpB,MAAM,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;AACpE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACpD,UAAU,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,CAAC;AACvK,UAAU,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,UAAU,QAAQ,EAAE,CAAC,CAAC,CAAC;AACvB,cAAc,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;AAC5C,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtE,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;AAC/D,cAAc,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AAC/D,cAAc;AACd,kBAAkB,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,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;AAC9H,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACxG,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;AACvF,kBAAkB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;AACrF,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACxC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;AACzC,WAAW;AACX,UAAU,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACvF,GAAG;AACH,CAAC;AAgLD;AACuB,OAAO,eAAe,KAAK,UAAU,GAAG,eAAe,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;AACvH,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC;AACnF;;ACvUO,IAAA,WAAA,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAIXC,IAAAA,MAAAA,CAAAA,GAGC,GAHDA,SAAAA,GAAIC,CAAAA,KAAqB,EAAEC,GAAmB,EAAA;QAC5C,IAAI,CAACD,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACC,GAAG,GAAGA,GAAAA,CAAAA;AACb,KAAA,CAAA;IAEAC,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAAA,GAAAA;QACE,IAAI,CAACF,KAAK,CAACE,OAAO,EAAA,CAAA;QAClB,IAAI,CAACD,GAAG,CAACC,OAAO,EAAA,CAAA;AAClB,KAAA,CAAA;AAZWJ,IAAAA,OAAAA,WAAAA,CAAAA;AAaZ,CAAA,EAAA;;ACdM,IAAA,cAAA,iBAAA,WAAA;AAAMK,IAAAA,SAAAA,cAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAOXJ,IAAAA,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,GAAAA,CACEK,KAAa,EAAA;QAMb,IAAI,CAACA,KAAK,GAAGA,KAAAA,CAAAA;AAKf,KAAA,CAAA;IAEAF,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,GAAAA;QACE,IAAI,CAACE,KAAK,GAAG,CAAA,CAAA;AAKf,KAAA,CAAA;AA3BWD,IAAAA,OAAAA,cAAAA,CAAAA;AA4BZ,CAAA,EAAA;;AC5BM,IAAA,UAAKE,iBAAAA,SAAAA,UAAAA,EAAAA;;;;;cAKH,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAA,CAAA;eAEC,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAA,CAAA;cAED,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;eAEC,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAED,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;eAEC,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;eAEA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA,CAAA;cAED,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA,CAAA;aAED,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,IAAA,CAAA,GAAA,cAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,GAAA,eAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,GAAA,IAAA,CAAA,GAAA,KAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;;aAGA,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAA,CAAA;cAEC,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAA,CAAA;aAED,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;;cAGC,UAAA,CAAA,UAAA,CAAA,MAAA,CAAA,GAAA,IAAA,CAAA,GAAA,MAAA,CAAA;aAED,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,IAAA,CAAA,GAAA,YAAA,CAAA;cAEC,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAA,CAAA;;aAGD,UAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,IAAA,CAAA,GAAA,OAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAA,CAAA;aAEA,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAA,CAAA;;aAKA,UAAA,CAAA,UAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAA,CAAA;;AA/FIA,IAAAA,OAAAA,UAAAA,CAAAA;AAkGX,CAAA,CAAA,EAAA,CAAA,CAAA;AAEM,IAAMC,UAAU,IAAK;;ACtGrB,IAAA,OAAKC,iBAAAA,SAAAA,OAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,OAAAA,CAAAA;AAkHX,CAAA,CAAA,EAAA,CAAA;;AC1GM,IAAA,cAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,cAAAA,GAAAA,EAAAA;AAAAA,IAAAA,cAAAA,CAGJC,gBAIN,GAJD,SAAOA,gBAAAA,CAAyCC,IAAiB,EAAA;QAC/D,IAAMC,IAAAA,GAAO,IAAIC,0BAAuBF,CAAAA,IAAAA,CAAAA,CAAAA;QAJ/BF,cAKMK,CAAAA,uBAAuB,CAACC,IAAI,CAACH,IAAAA,CAAAA,CAAAA;QAC5C,OAAOA,IAAAA,CAAAA;AACT,KAAA,CAAA;IAPWH,cASJO,CAAAA,2BAIN,GAJD,SAAOA,2BAAAA,GAAAA;AACL,QAAA,IAAK,IAAIC,CAAAA,GAAI,CAAGC,EAAAA,CAAAA,GAAIT,cAVXA,CAU0BK,uBAAuB,CAACK,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAVtER,YAAAA,cAAAA,CAWQK,uBAAuB,CAACG,CAAE,CAAA,CAACG,KAAK,EAAA,CAAA;AACjD,SAAA;AACF,KAAA,CAAA;AAbWX,IAAAA,cAAAA,CAeJY,aAYN,GAZD,SAAOA,aAAAA,CACLC,OAAe,EACfC,SAAsB,EACtBC,MAAc,EACdC,QAAsC,EACtCC,IAAa,EAAA;AAKbC,QAAAA,aAAAA,CAAOC,KAAK,CAACN,OAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAA;AA3BWb,IAAAA,OAAAA,cAAAA,CAAAA;AA4BZ,CAAA,EAAA,CAAA;AA5BYA,cAAAA,CACIK,0BAA+D,EAAE;;ACH3E,IAAA,SAAA,iBAAA,WAAA;AAAMe,IAAAA,SAAAA,SAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IASX7B,MAAAA,CAAAA,GAiBC,GAjBDA,SAAAA,GAAAA,CAAIW,IAAO,EAAEmB,MAAc,EAAEC,GAAkC,EAAA;QAC7D,IAAI,CAACpB,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACmB,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,IAAIC,GAAK,EAAA;YACP,IAAO,WAAHA,CAAAA,GAAAA,EAAehC,WAAa,CAAA,EAAA;gBAC9B,IAAI,CAAC0B,QAAQ,GAAGM,GAAAA,CAAAA;aACX,MAAA;gBACL,IAAM7B,GAAAA,GAAM8B,UAAUC,cAAc,CAClCF,IAAI1B,KAAK,GAAGyB,OAAOX,MAAM,CAAA,CAAA;AAM3B,gBAAA,IAAI,CAACM,QAAQ,GAAGO,SAAUE,CAAAA,WAAW,CAACH,GAAK7B,EAAAA,GAAAA,CAAAA,CAAAA;AAC7C,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEAC,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,OAAiB,GAAA,EAAA,CAAA;AA5BN0B,IAAAA,OAAAA,SAAAA,CAAAA;AA6BZ,CAAA,EAAA,CAAA;AA7BYA,SACJjB,CAAAA,IAAAA,GAAOH,cAAeC,CAAAA,gBAAgB,CAACmB,SAAAA,CAAAA,CAAAA;AA8BzC,IAAMM,GAAM,GAAA,IAAIN,SAAY,EAAA,CAAA;AACnCM,GAAAA,CAAInC,GAAG,CAACM,UAAW6B,CAAAA,GAAG,EAAE,MAAA,CAAA;;ACdjB,IAAA,YAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,YAAAA,GAAAA,EAAAA;IAAAA,YAaJC,CAAAA,KAYN,GAZD,SAAOA,KACLb,CAAAA,MAAc,EACdc,qBAA6B,EAC7BC,kBAAmC,EACnCC,UAAiB,EAAA;;AAAjBA,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,IAAA,CAAA;AAEb,QAAA,IAAIA,UAAY,EAAA;YACd,IAAI,CAACC,kBAAkB,CAACjB,MAAQe,EAAAA,kBAAAA,CAAAA,CAAAA;AAClC,SAAA;QACA,OAAOf,MAAAA,CAAOkB,OAAO,CAAC,IAAI,CAACC,WAAW,EAAE,SAACC,CAAGC,EAAAA,WAAAA,EAAAA;mBAC1C,KAAKC,CAAAA,QAAQ,CAACD,WAAAA,EAAaP,qBAAuBC,EAAAA,kBAAAA,CAAAA,CAAAA;;AAEtD,KAAA,CAAA;IAzBWH,YA2BJW,CAAAA,uBAoBN,GApBD,SAAOA,uBAAAA,CAAwBC,eAAgC,EAAEC,SAAiB,EAAEC,GAAa,EAAA;AAC/FA,QAAAA,GAAAA,CAAI/B,MAAM,GAAG,CAAA,CAAA;QACb,IAAMgC,KAAAA,GAAQH,eAAe,CAACC,SAAU,CAAA,CAAA;AACxC,QAAA,IAAI,CAACE,KAAO,EAAA,OAAA;AAEZ,QAAA,IAAK,IAAIlC,CAAI,GAAA,CAAA,EAAGA,IAAIkC,KAAMhC,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;YACrC,IAAMmC,IAAAA,GAAOD,KAAK,CAAClC,CAAE,CAAA,CAAA;YACrB,IAAMoC,SAAAA,GAAYD,KAAKC,SAAS,CAAA;AAChC,YAAA,IAAIA,mBAA6CA,SAAqC,KAAA,CAAA,EAAA;AACpF,gBAAA,IAAMC,iBAAiBD,SAA4CD,KAAAA,CAAAA,GAAAA,IAAAA,CAAKG,gBAAgB,GAAGH,KAAKI,KAAK,CAAA;AACrG,gBAAA,IAAIJ,KAAKK,MAAM,CAACC,OAAO,CAACJ,cAAAA,CAAAA,KAAoB,CAAC,CAAG,EAAA,SAAA;gBAChD,IAAIJ,GAAAA,CAAIQ,OAAO,CAACJ,cAAAA,CAAAA,KAAoB,CAAC,CAAGJ,EAAAA,GAAAA,CAAInC,IAAI,CAACuC,cAAAA,CAAAA,CAAAA;aAOnD;AACF,SAAA;AACF,KAAA,CAAA;AA/CWlB,IAAAA,YAAAA,CAiDIuB,SAEd,GAFD,SAAeA,SAAAA,CAAUC,GAAW,EAAA;QAClC,OAAO,CAACC,MAAMC,MAAOF,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;AACvB,KAAA,CAAA;AAnDWxB,IAAAA,YAAAA,CAqDI2B,QAUd,GAVD,SAAeA,QAASC,CAAAA,IAAuB,EAAEC,IAAqB,EAAA;QACpE,OAAOD,IAAAA,CAAKE,IAAI,CACd,SAACC,CAAAA,EAAAA;AACCA,YAAAA,OAAAA,CAAAA,CAAEd,SAAS,KAAKY,IAAAA,CAAKZ,SAAS,IAC9Bc,EAAEX,KAAK,KAAKS,IAAKT,CAAAA,KAAK,IACtBW,CAAEC,CAAAA,UAAU,KAAKH,IAAKG,CAAAA,UAAU,IAChCD,CAAEZ,CAAAA,gBAAgB,KAAKU,IAAAA,CAAKV,gBAAgB,IAC5CY,CAAAA,CAAEV,MAAM,CAACtC,MAAM,KAAK8C,IAAKR,CAAAA,MAAM,CAACtC,MAAM,IACtCgD,CAAEV,CAAAA,MAAM,CAACY,KAAK,CAAC,SAACC,CAAGrD,EAAAA,CAAAA,EAAAA;uBAAMqD,CAAML,KAAAA,IAAAA,CAAKR,MAAM,CAACxC,CAAE,CAAA,CAAA;;;AAEnD,KAAA,CAAA;AA/DWmB,IAAAA,YAAAA,CAiEIK,kBA+Cd,GA/CD,SAAeA,kBAAmBjB,CAAAA,MAAc,EAAE+C,YAA6B,EAAA;QAC7E,IAAIC,KAAAA,CAAAA;AACJ,QAAA,IAAI,CAACC,WAAW,CAACC,SAAS,GAAG,CAAA,CAAA;QAE7B,MAAQF,CAAAA,KAAAA,GAAQ,IAAI,CAACC,WAAW,CAACE,IAAI,CAACnD,MAAM,CAAA,MAAO,IAAM,CAAA;AACvD,YAAA,IAASoD,OAA0CJ,KAApCK,CAAAA,CAAAA,CAAAA,EAAAA,WAAAA,GAAoCL,KAAvBM,CAAAA,CAAAA,CAAAA,EAAAA,SAAAA,GAAuBN,UAAZO,QAAYP,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACnD,YAAA,IAAMJ,UAAa,GAAA,CAAC,CAACS,WAAAA,IAAe,CAAC,CAACE,QAAAA,CAAAA;YACtC,IAAMtB,MAAAA,GACJW,cAAcU,SACVA,GAAAA,SAAAA,CACGE,KAAK,CAAC,GAAA,CAAA,CACNC,GAAG,CAAC,SAACX,CAAAA,EAAAA;AAAMA,gBAAAA,OAAAA,CAAAA,CAAEY,IAAI,EAAA,CAAA;eACjBC,MAAM,CAACC,WACV,EAAE,CAAA;AACR,YAAA,IAAM5B,KAAQuB,GAAAA,QAAAA,GAAWA,QAASG,CAAAA,IAAI,EAAK,GAAA,EAAA,CAAA;YAE3C,IAAI7B,SAAAA,GAAAA,CAAAA,CAAAA;AACJ,YAAA,IAAIE,gBAAmB,GAAA,EAAA,CAAA;AAEvB,YAAA,IAAI,IAAI,CAACI,SAAS,CAACH,KAAQ,CAAA,EAAA;AACzBH,gBAAAA,SAAAA,GAAAA,CAAAA,CAAAA;AACF,aAAA,MAAO,IAAI,IAAI,CAACgC,UAAU,CAACC,IAAI,CAAC9B,KAAQ,CAAA,EAAA;AACtCH,gBAAAA,SAAAA,GAAAA,CAAAA,CAAAA;aACK,MAAA;AACL,gBAAA,IAAMkC,YAAY,IAAI,CAACC,YAAY,CAACb,IAAI,CAACnB,KAAAA,CAAAA,CAAAA;AACzC,gBAAA,IAAI+B,SAAW,EAAA;AACblC,oBAAAA,SAAAA,GAAAA,CAAAA,CAAAA;oBACAE,gBAAmBgC,GAAAA,SAAS,CAAC,CAAE,CAAA,CAAA;AACjC,iBAAA;AACF,aAAA;AAEA,YAAA,IAAMnC,IAAwB,GAAA;gBAC5BgB,UAAAA,EAAAA,UAAAA;gBACAQ,IAAAA,EAAAA,IAAAA;gBACApB,KAAAA,EAAAA,KAAAA;gBACAH,SAAAA,EAAAA,SAAAA;gBACAI,MAAAA,EAAAA,MAAAA;gBACAF,gBAAAA,EAAAA,gBAAAA;AACF,aAAA,CAAA;YAEA,IAAMkC,GAAAA,GAAMlB,YAAY,CAACK,IAAK,CAAA,CAAA;AAC9B,YAAA,IAAIa,GAAK,EAAA;gBACP,IAAI,CAAC,IAAI,CAAC1B,QAAQ,CAAC0B,GAAKrC,EAAAA,IAAAA,CAAAA,EAAOqC,GAAI1E,CAAAA,IAAI,CAACqC,IAAAA,CAAAA,CAAAA;aACnC,MAAA;gBACLmB,YAAY,CAACK,KAAK,GAAG;AAACxB,oBAAAA,IAAAA;AAAK,iBAAA,CAAA;AAC7B,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAhHWhB,IAAAA,YAAAA,CAkHIsD,sBAad,GAbD,SAAeA,sBAAuBC,CAAAA,IAAqB,EAAEC,EAAmB,EAAA;QAC9E,IAAK,IAAM3C,aAAa0C,IAAM,CAAA;YAC5B,IAAIC,EAAE,CAAC3C,SAAAA,CAAU,EAAE;gBACjB,IAAM4C,MAAAA,GAASD,EAAE,CAAC3C,SAAU,CAAA,CAAA;gBAC5B,IAAM6C,GAAAA,GAAMH,IAAI,CAAC1C,SAAU,CAAA,CAAA;AAC3B,gBAAA,IAAK,IAAIhC,CAAI,GAAA,CAAA,EAAGA,IAAI6E,GAAI3E,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;oBACnC,IAAMmC,IAAAA,GAAO0C,GAAG,CAAC7E,CAAE,CAAA,CAAA;oBACnB,IAAI,CAAC,IAAI,CAAC8C,QAAQ,CAAC8B,MAAQzC,EAAAA,IAAAA,CAAAA,EAAOyC,MAAO9E,CAAAA,IAAI,CAACqC,IAAAA,CAAAA,CAAAA;AAChD,iBAAA;aACK,MAAA;AACLwC,gBAAAA,EAAE,CAAC3C,SAAAA,CAAU,GAAG0C,IAAI,CAAC1C,SAAU,CAAA,CAAA;AACjC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IA/HWb,YAiIIU,CAAAA,QAkCd,GAlCD,SAAeA,QAAAA,CACbD,WAAmB,EACnBP,qBAA6B,EAC7BC,kBAAmC,EAAA;QAEnC,IAAIwD,IAAAA,CAAAA;AACJ,QAAA,IAAIlD,WAAW,CAAC,CAAE,CAAA,KAAK,GAAK,EAAA;;YAE1BkD,IAAO,GAAA,IAAIC,GAAInD,CAAAA,WAAAA,EAAaP,qBAAuB2D,CAAAA,CAAAA,IAAI,CAACC,SAAS,CAACC,iBAAAA,CAAWC,eAAe,CAACjF,MAAM,CAAA,CAAA;SAC9F,MAAA;YACL4E,IAAOlD,GAAAA,WAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAMwD,KAAQ,GAACC,gBAAiB,CAACP,IAAK,CAAA,CAAA;AACtC,QAAA,IAAI,CAACM,KAAO,EAAA;AACV1E,YAAAA,aAAAA,CAAOC,KAAK,CAAC,gBAAC,GAAgBmE,IAAK,GAAA,gBAAA,CAAA,CAAA;YACnC,OAAO,EAAA,CAAA;AACT,SAAA;AAEA,QAAA,IAAI,IAAI,CAACQ,iBAAiB,CAACC,GAAG,CAACT,IAAO,CAAA,EAAA;AACpCpE,YAAAA,aAAAA,CAAO8E,IAAI,CAAC,gBAAC,GAAgBV,IAAK,GAAA,+BAAA,CAAA,CAAA;AACpC,SAAA;AACA,QAAA,IAAI,CAACQ,iBAAiB,CAACG,GAAG,CAACX,IAAAA,CAAAA,CAAAA;AAE3B,QAAA,IAAI,IAAI,CAACY,sBAAsB,CAACH,GAAG,CAACT,IAAO,CAAA,EAAA;YACzC,IAAI,CAACL,sBAAsB,CAAC,IAAI,CAACiB,sBAAsB,CAACC,GAAG,CAACb,IAAQxD,CAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;SAC/D,MAAA;AACL,YAAA,IAAMsE,uBAAwC,EAAC,CAAA;YAC/C,IAAI,CAACpE,kBAAkB,CAAC4D,KAAOQ,EAAAA,oBAAAA,CAAAA,CAAAA;AAC/B,YAAA,IAAI,CAACF,sBAAsB,CAAC3G,GAAG,CAAC+F,IAAMc,EAAAA,oBAAAA,CAAAA,CAAAA;YACtC,IAAI,CAACnB,sBAAsB,CAACmB,oBAAsBtE,EAAAA,kBAAAA,CAAAA,CAAAA;AACpD,SAAA;AAEA,QAAA,OAAO,IAAI,CAACF,KAAK,CAACgE,KAAAA,EAAO/D,uBAAuBC,kBAAoB,EAAA,KAAA,CAAA,CAAA;AACtE,KAAA,CAAA;AAnKWH,IAAAA,OAAAA,YAAAA,CAAAA;AAoKZ,CAAA,EAAA,CAAA;AApKYA,YAAAA,CACaO,WAAc,GAAA,kCAAA,CAAA;AAD3BP,YAAAA,CAEaqC,WACtB,GAAA,sFAAA,CAAA;AAHSrC,YAAAA,CAIaiD,UAAa,GAAA,0BAAA,CAAA;AAJ1BjD,YAAAA,CAKaoD,YAAe,GAAA,uCAAA,CAAA;AAL5BpD,YAAAA,CAMauE,yBAAyB,IAAIG,GAAAA,EAAAA,CAAAA;AAErD;;MARW1E,YAAAA,CAWJmE,oBAAoB,IAAIQ,GAAAA,EAAAA;;ACnCjC,SAAS,4BAA4B,GAAG;AACxC;AACA;AACA;AACA;AACA,IAAI,IAAI;AACR;AACA;AACA,QAAQ,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACpG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE;AAClB,IAAI,OAAO,CAAC,4BAA4B,GAAG,WAAW;AACtD,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK,GAAG,CAAC;AACT;;ACXA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AACzC,IAAI,IAAI,4BAA4B,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;AACvE,SAAS;AACT,QAAQ,UAAU,GAAG,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;AAC7D,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClC,YAAY,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,YAAY,IAAI,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAC7C;AACA,YAAY,IAAI,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACpE;AACA,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS,CAAC;AACV,KAAK;AACL;AACA,IAAI,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C;;AClBO,IAAA,YAAKC,iBAAAA,SAAAA,YAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,YAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA;;ACoBD,SAASC,cAAcC,CAAc,EAAA;AACnC,IAAA,OAAOA,CAAyBA,IAAAA,GAAAA,IAAAA,CAAAA,IAAAA,GAAAA,CAAAA;AAClC,CAAA;AAEA,IAAMC,uBAAuD,IAAIL,GAAAA,EAAAA,CAAAA;AAE1D,IAAA,eAAA,iBAAA,WAAA;AAAMM,IAAAA,SAAAA,eAAAA,CAYSC,KAAa,EAAEC,UAAuB,EAAEC,KAAmB,EAAA;AAAE,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGC,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAsB,CAAA,CAAA;;QACrG,IAAI,CAACH,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACI,WAAW,GAAGH,UAAAA,CAAAA;QACnB,IAAI,CAACE,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACD,KAAK,GAAGA,KAAAA,CAAAA;;AAhBJH,IAAAA,eAAAA,CAmBJM,aAGN,GAHD,SAAOA,aAAcC,CAAAA,EAAmB,EAAEC,OAAgC,EAAA;AACxE,QAAA,IAAI,CAACX,aAAcU,CAAAA,EAAAA,CAAGF,WAAW,CAAG,EAAA,OAAOE,GAAGF,WAAW,CAAA;QACzD,OAAOG,OAAAA,CAAAA;AACT,KAAA,CAAA;AAtBWR,IAAAA,eAAAA,CAwBJS,OAKN,GALD,SAAOA,OAAQR,CAAAA,KAAa,EAAEC,UAAuB,EAAA;AAAE,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGE,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAsB,CAAA,CAAA;;AAC3E,QAAA,IAAMG,KAAK,UAzBFP,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA;AAyBsBC,YAAAA,KAAAA;AAAOC,YAAAA,UAAAA;AAAYN,YAAAA,YAAAA,CAAac,GAAG;AAAKN,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC1DL,QAAAA,IAAAA,yBAAAA,CAAAA;QAAb,IAAMnD,IAAAA,GAAOmD,CAAAA,yBAAAA,GAAAA,oBAAAA,CAAqBP,GAAG,CAACS,KAAAA,CAAAA,KAAAA,IAAAA,GAAzBF,4BAAmC,EAAE,CAAA;AAClDnD,QAAAA,IAAAA,CAAKjD,IAAI,CAAC4G,EAAAA,CAAAA,CAAAA;QACVR,oBAAqBnH,CAAAA,GAAG,CAACqH,KAAOrD,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IA7BWoD,eA+BJW,CAAAA,eAKN,GALD,SAAOA,eAAAA,CAAgBV,KAAa,EAAEC,UAAuB,EAAEC,KAAmB,EAAA;AAAE,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGC,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAsB,CAAA,CAAA;;AACxG,QAAA,IAAMG,KAAK,UAhCFP,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA;AAgCsBC,YAAAA,KAAAA;AAAOC,YAAAA,UAAAA;AAAYC,YAAAA,KAAAA;AAAUC,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC/CL,QAAAA,IAAAA,yBAAAA,CAAAA;QAAb,IAAMnD,IAAAA,GAAOmD,CAAAA,yBAAAA,GAAAA,oBAAAA,CAAqBP,GAAG,CAACS,KAAAA,CAAAA,KAAAA,IAAAA,GAAzBF,4BAAmC,EAAE,CAAA;AAClDnD,QAAAA,IAAAA,CAAKjD,IAAI,CAAC4G,EAAAA,CAAAA,CAAAA;QACVR,oBAAqBnH,CAAAA,GAAG,CAACqH,KAAOrD,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;;;;AApCWoD,IAAAA,eAAAA,CAyCJY,KA4BN,GA5BD,SAAOA,KAAMX,CAAAA,KAAa,EAAEY,cAAwC,EAAA;QAClE,IAAMjE,IAAAA,GAAOmD,oBAAqBP,CAAAA,GAAG,CAACS,KAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAIrD,IAAM,EAAA;YACR,IAAK,IAAI7C,SAAS6C,IAAK7C,CAAAA,MAAM,EAAEF,CAAI,GAAA,CAAA,EAAGA,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;gBACrD,IAAM0G,EAAAA,GAAK3D,IAAI,CAAC/C,CAAE,CAAA,CAAA;gBAClB,IAAMiH,MAAAA,GAASP,GAAGH,IAAI,CAAA;gBACtB,IAAMW,SAAAA,GAAYD,OAAO/G,MAAM,CAAA;gBAC/B,IAAIgH,SAAAA,KAAcF,cAAe9G,CAAAA,MAAM,EAAE,SAAA;;AAEzC,gBAAA,IAAImG,UAAa/G,GAAAA,OAAAA,CAAAA;AACjB,gBAAA,IAAI6H,KAAQ,GAAA,IAAA,CAAA;AACZ,gBAAA,IAAK,IAAInH,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIkH,WAAWlH,EAAK,EAAA,CAAA;oBAClC,IAAMoH,QAAAA,GAAWH,MAAM,CAACjH,EAAE,CAAA,CAAA;AAC1B,oBAAA,IAAIgG,cAAcoB,QAAW,CAAA,EAAA;AAC3B,wBAAA,IAAIf,UAAe/G,KAAAA,OAAAA,EAAS+G,UAAaW,GAAAA,cAAc,CAAChH,EAAE,CAAA,CAAA;qBACrD,MAAA;wBACL,IAAIoH,QAAAA,KAAaJ,cAAc,CAAChH,EAAAA,CAAE,IAAIgH,cAAc,CAAChH,EAAE,CAAA,KAAKV,OAAS,EAAA;4BACnE6H,KAAQ,GAAA,KAAA,CAAA;AACR,4BAAA,MAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACA,gBAAA,IAAIA,KAAO,EAAA;AACTT,oBAAAA,EAAAA,CAAGW,eAAe,GAAGhB,UAAAA,CAAAA;oBACrB,OAAOK,EAAAA,CAAAA;AACT,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AArEWP,IAAAA,eAAAA,CAuEJmB,OAEN,GAFD,SAAOA,OAAAA,CAAQlB,KAAa,EAAA;AAC1B,QAAA,OAAO,CAAC,CAACF,oBAAqBP,CAAAA,GAAG,CAACS,KAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AAzEWD,IAAAA,aAAAA,CAAAA,eAAAA,EAAAA;;YAQPoB,GAAAA,EAAAA,gBAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACF,eAAe,CAAA;AAC7B,aAAA;;;AAVWlB,IAAAA,OAAAA,eAAAA,CAAAA;AA0EZ,CAAA,EAAA,CAAA;AAEDA,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAA2CrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAChFrB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAA2CrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAChFrB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAiDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACpFtB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAmDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQmI,IAAI,CAAA,CAAA;AACvFvB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAA2CrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAChFrB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAAiDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACpFtB,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAA6CrH,QAAQiI,KAAK,EAAEjI,QAAQiI,KAAK,CAAA,CAAA;AACjGrB,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAmDrH,QAAQkI,GAAG,EAAElI,QAAQkI,GAAG,CAAA,CAAA;AACnGtB,eAAAA,CAAgBS,OAAO,CACrB,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAMFT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAqDrH,QAAQmI,IAAI,EAAEnI,QAAQmI,IAAI,CAAA,CAAA;AACvGvB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,KAA6DrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAClGrB,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,MAA0BrH,EAAAA,GAAAA,EAAAA,OAAAA,CAAQiI,KAAK,EAAA,GAAA,CAAA,CAAA;AAC/DrB,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAgCrH,QAAQiI,KAAK,EAAEjI,QAAQiI,KAAK,EAAA,GAAA,CAAA,CAAA;AACpFrB,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,iBAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,iBAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAiBrH,QAAQmI,IAAI,EAAEnI,QAAQoI,IAAI,CAAA,CAAA;AACnExB,eAAAA,CAAgBS,OAAO,CAAC,iBAAA,EAAmBrH,QAAQoI,IAAI,EAAEpI,QAAQmI,IAAI,CAAA,CAAA;AACrEvB,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAiBrH,QAAQmI,IAAI,EAAEnI,QAAQoI,IAAI,CAAA,CAAA;AACnExB,eAAAA,CAAgBS,OAAO,CAAC,iBAAA,EAAmBrH,QAAQoI,IAAI,EAAEpI,QAAQmI,IAAI,CAAA,CAAA;AACrEvB,eAAAA,CAAgBS,OAAO,CAAC,cAAA,EAAgBrH,QAAQmI,IAAI,EAAEnI,QAAQoI,IAAI,CAAA,CAAA;AAClExB,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAkBrH,QAAQoI,IAAI,EAAEpI,QAAQmI,IAAI,CAAA,CAAA;AAEpEvB,eAAAA,CAAgBS,OAAO,CAAC,QAAUrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAA,GAAA,CAAA,CAAA;AAC/CrB,eAAAA,CAAgBS,OAAO,CAAC,UAAYrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACjDrB,eAAAA,CAAgBS,OAAO,CAAC,KAAOrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAC5CrB,eAAgBS,CAAAA,OAAO,CAAC,OAAA,EAASrH,OAAQqI,CAAAA,IAAI,EAAErI,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AACzEzB,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,SAAiErH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AACtGrB,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQsI,CAAAA,IAAI,EAAEtI,OAAQoI,CAAAA,IAAI,EAAEpI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAChFxB,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQuI,CAAAA,IAAI,EAAEvI,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAChFzB,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQwI,CAAAA,IAAI,EAAExI,OAAQyI,CAAAA,IAAI,EAAEzI,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAEhF7B,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQ0I,CAAAA,MAAM,EAAE1I,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAClFxB,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQ2I,CAAAA,MAAM,EAAE3I,OAAQoI,CAAAA,IAAI,EAAEpI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAElFzB,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQ4I,CAAAA,MAAM,EAAE5I,OAAQyI,CAAAA,IAAI,EAAEzI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAClFxB,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQ6I,CAAAA,MAAM,EAAE7I,OAAQoI,CAAAA,IAAI,EAAEpI,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAElF7B,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQ8I,CAAAA,MAAM,EAAE9I,OAAQyI,CAAAA,IAAI,EAAEzI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAClFzB,eAAgBS,CAAAA,OAAO,CAAC,cAAA,EAAgBrH,OAAQ+I,CAAAA,MAAM,EAAE/I,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAElF7B,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQsI,IAAI,EAAEtI,QAAQsI,IAAI,CAAA,CAAA;AAC/D1B,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQuI,IAAI,EAAEvI,QAAQuI,IAAI,CAAA,CAAA;AAC/D3B,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQwI,IAAI,EAAExI,QAAQwI,IAAI,CAAA,CAAA;AAC/D5B,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQ0I,MAAM,EAAE1I,QAAQ2I,MAAM,CAAA,CAAA;AACnE/B,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQ2I,MAAM,EAAE3I,QAAQ0I,MAAM,CAAA,CAAA;AACnE9B,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQ6I,MAAM,EAAE7I,QAAQ4I,MAAM,CAAA,CAAA;AACnEhC,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQ4I,MAAM,EAAE5I,QAAQ6I,MAAM,CAAA,CAAA;AACnEjC,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQ8I,MAAM,EAAE9I,QAAQ+I,MAAM,CAAA,CAAA;AACnEnC,eAAAA,CAAgBS,OAAO,CAAC,WAAA,EAAarH,QAAQ+I,MAAM,EAAE/I,QAAQ8I,MAAM,CAAA,CAAA;AAEnElC,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQiI,KAAK,EAAEjI,QAAQsI,IAAI,CAAA,CAAA;AAClE1B,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQiI,KAAK,EAAEjI,QAAQuI,IAAI,CAAA,CAAA;AAClE3B,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQiI,KAAK,EAAEjI,QAAQwI,IAAI,CAAA,CAAA;AAElE5B,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAWrH,QAAQsI,IAAI,EAAEtI,QAAQsI,IAAI,CAAA,CAAA;AAC7D1B,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAWrH,QAAQuI,IAAI,EAAEvI,QAAQuI,IAAI,CAAA,CAAA;AAC7D3B,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAWrH,QAAQwI,IAAI,EAAExI,QAAQwI,IAAI,CAAA,CAAA;AAE7D5B,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,kBAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,kBAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,kBAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,OAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AACxBT,eAAAA,CAAgBS,OAAO,CAAC,UAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,KAAOrH,EAAAA,OAAAA,CAAQgJ,IAAI,EAAA,GAAA,CAAA,CAAA;AAC3CpC,eAAAA,CAAgBS,OAAO,CAAC,KAAOrH,EAAAA,OAAAA,CAAQgJ,IAAI,EAAA,GAAA,CAAA,CAAA;AAC3CpC,eAAAA,CAAgBS,OAAO,CAAC,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;AAExBT,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQiJ,KAAK,EAAA,GAAA,EAAuBjJ,QAAQkI,GAAG,CAAA,CAAA;AACtFtB,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQkJ,KAAK,EAAA,GAAA,EAAuBlJ,QAAQkI,GAAG,CAAA,CAAA;AACtFtB,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQiJ,KAAK,EAAA,GAAA,EAAyBjJ,QAAQkI,GAAG,CAAA,CAAA;AAExFtB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAerH,OAAQiJ,CAAAA,KAAK,EAAEjJ,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAC3FtB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAerH,OAAQiJ,CAAAA,KAAK,EAAEjJ,OAAQoJ,CAAAA,mBAAmB,EAAEpJ,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAE9FtB,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQkJ,KAAK,EAAA,GAAA,EAA4BlJ,QAAQkI,GAAG,CAAA,CAAA;AAC3FtB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAerH,OAAQkJ,CAAAA,KAAK,EAAElJ,OAAQqJ,CAAAA,sBAAsB,EAAErJ,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAEjGtB,eAAgBS,CAAAA,OAAO,CAAC,WAAA,EAAarH,OAAQyI,CAAAA,IAAI,EAAEzI,OAAQsJ,CAAAA,SAAS,EAAEtJ,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAClFxB,eAAAA,CAAgBS,OAAO,CAAC,WAAarH,EAAAA,OAAAA,CAAQyI,IAAI,EAAEzI,OAAQsJ,CAAAA,SAAS,EAAEtJ,OAAAA,CAAQoI,IAAI,EAAEpI,QAAQiI,KAAK,CAAA,CAAA;AAEjGrB,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAAA,GAAA,EAAgDrH,QAAQoI,IAAI,EAAEpI,QAAQiI,KAAK,CAAA,CAAA;AACnGrB,eAAAA,CAAgBS,OAAO,CAAC,SAAgDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AACpFxB,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAAA,GAAA,EAAgDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACnGrB,eAAAA,CAAgBS,OAAO,CAAC,SAAgDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAEpFzB,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAAA,GAAA,EAAkDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACrGrB,eAAAA,CAAgBS,OAAO,CAAC,SAAkDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAEtFzB,eAAAA,CAAgBS,OAAO,CAAC,SAAWrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACvGrB,eAAgBS,CAAAA,OAAO,CAAC,SAAA,EAAWrH,OAAQiI,CAAAA,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAExFzB,eAAAA,CAAgBS,OAAO,CAAC,SAAWrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQoJ,CAAAA,mBAAmB,EAAEpJ,OAAAA,CAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AAC1GrB,eAAgBS,CAAAA,OAAO,CAAC,SAAA,EAAWrH,OAAQiI,CAAAA,KAAK,EAAEjI,OAAQoJ,CAAAA,mBAAmB,EAAEpJ,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAE3F7B,eAAgBS,CAAAA,OAAO,CAAC,SAAA,EAAA,GAAA,EAA2BrH,OAAQuJ,CAAAA,eAAe,EAAEvJ,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AACvGrB,eAAAA,CAAgBS,OAAO,CAAC,SAAA,EAAA,GAAA,EAA2BrH,QAAQuJ,eAAe,EAAEvJ,QAAQqI,IAAI,CAAA,CAAA;AAExFzB,eAAgBS,CAAAA,OAAO,CAAC,SAAA,EAAWrH,OAAQiI,CAAAA,KAAK,EAAEjI,OAAQqJ,CAAAA,sBAAsB,EAAErJ,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAE9F7B,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAoDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACvGrB,eAAAA,CAAgBS,OAAO,CAAC,aAAoDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AACxFzB,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAoDrH,QAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AACvGrB,eAAAA,CAAgBS,OAAO,CAAC,aAAoDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AACxF7B,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAoDrH,QAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AACvGrB,eAAAA,CAAgBS,OAAO,CAAC,aAAoDrH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAExF7B,eAAAA,CAAgBS,OAAO,CAAC,aAAerH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AAC3GrB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAerH,OAAQiI,CAAAA,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQyI,IAAI,CAAA,CAAA;AAE5F7B,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAmDrH,QAAQoI,IAAI,EAAEpI,QAAQiI,KAAK,CAAA,CAAA;AACtGrB,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAmDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACtGrB,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAqDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACxGrB,eAAAA,CAAgBS,OAAO,CAAC,YAAcrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AAC1GrB,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAwDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AAC3GrB,eAAAA,CAAgBS,OAAO,CAAC,iBAAA,EAAA,GAAA,EAAA,GAAA,EAAwDrH,QAAQoI,IAAI,EAAEpI,QAAQiI,KAAK,CAAA,CAAA;AAC3GrB,eAAAA,CAAgBS,OAAO,CAAC,iBAAA,EAAA,GAAA,EAAA,GAAA,EAAwDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AAE3GrB,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAerH,QAAQwJ,YAAY,EAAExJ,QAAQqI,IAAI,CAAA,CAAA;AACzEzB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAerH,OAAQwJ,CAAAA,YAAY,EAAExJ,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AACxFrB,eAAAA,CAAgBS,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAsDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AACzGrB,eAAgBS,CAAAA,OAAO,CAAC,gBAAA,EAAkBrH,OAAQwJ,CAAAA,YAAY,EAAExJ,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAC3FrB,eAAAA,CAAgBS,OAAO,CAAC,mBAAA,EAAA,GAAA,EAAA,GAAA,EAA4DrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AAE/GrB,eAAgBS,CAAAA,OAAO,CACrB,eAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQoI,CAAAA,IAAI,EACZpI,OAAQiJ,CAAAA,KAAK,EACbjJ,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAA,GAAA,EAAA,GAAA,EAAsDrH,QAAQoI,IAAI,EAAEpI,QAAQiJ,KAAK,CAAA,CAAA;AAEzGrC,eAAgBS,CAAAA,OAAO,CACrB,eAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQkJ,CAAAA,KAAK,EACblJ,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAA,GAAA,EAAA,GAAA,EAAsDrH,QAAQqI,IAAI,EAAErI,QAAQkJ,KAAK,CAAA,CAAA;AAEzGtC,eAAAA,CAAgBS,OAAO,CACrB,eAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQmJ,CAAAA,gBAAgB,EACxBnJ,OAAAA,CAAQqI,IAAI,EACZrI,OAAAA,CAAQiJ,KAAK,EACbjJ,QAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,eAAiBrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQqI,IAAI,EAAErI,QAAQiJ,KAAK,CAAA,CAAA;AAC7GrC,eAAgBS,CAAAA,OAAO,CACrB,eAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQiJ,CAAAA,KAAK,EACbjJ,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,eAAA,EAAA,GAAA,EAAA,GAAA,EAA2DrH,QAAQqI,IAAI,EAAErI,QAAQiJ,KAAK,CAAA,CAAA;AAE9GrC,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAmDrH,QAAQiJ,KAAK,EAAEjJ,QAAQkI,GAAG,CAAA,CAAA;AACrGtB,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAmDrH,QAAQkJ,KAAK,EAAElJ,QAAQkI,GAAG,CAAA,CAAA;AACrGtB,eAAAA,CAAgBS,OAAO,CAAC,YAAA,EAAA,GAAA,EAAA,GAAA,EAAwDrH,QAAQkJ,KAAK,EAAElJ,QAAQkI,GAAG,CAAA,CAAA;AAE1GtB,eAAgBS,CAAAA,OAAO,CACrB,kBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQiJ,CAAAA,KAAK,EACbjJ,OAAQkI,CAAAA,GAAG,EACXlI,OAAAA,CAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAgBS,CAAAA,OAAO,CACrB,kBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQkJ,CAAAA,KAAK,EACblJ,OAAQkI,CAAAA,GAAG,EACXlI,OAAAA,CAAQkJ,KAAK,CAAA,CAAA;AAEftC,eAAgBS,CAAAA,OAAO,CACrB,kBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQkJ,CAAAA,KAAK,EACblJ,OAAQkI,CAAAA,GAAG,EACXlI,OAAAA,CAAQiJ,KAAK,CAAA,CAAA;AAGfrC,eAAgBS,CAAAA,OAAO,CACrB,mBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQiJ,CAAAA,KAAK,EACbjJ,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,mBAAA,EAAA,GAAA,EAAA,GAAA,EAA0DrH,QAAQqI,IAAI,EAAErI,QAAQiJ,KAAK,CAAA,CAAA;AAE7GrC,eAAgBS,CAAAA,OAAO,CACrB,mBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQyI,CAAAA,IAAI,EACZzI,OAAQiJ,CAAAA,KAAK,EACbjJ,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,mBAAA,EAAA,GAAA,EAAA,GAAA,EAA0DrH,QAAQyI,IAAI,EAAEzI,QAAQiJ,KAAK,CAAA,CAAA;AAE7GrC,eAAgBS,CAAAA,OAAO,CACrB,mBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQyI,CAAAA,IAAI,EACZzI,OAAQkJ,CAAAA,KAAK,EACblJ,OAAAA,CAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,mBAAA,EAAA,GAAA,EAAA,GAAA,EAA0DrH,QAAQyI,IAAI,EAAEzI,QAAQkJ,KAAK,CAAA,CAAA;AAE7GtC,eAAAA,CAAgBS,OAAO,CACrB,mBAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQmJ,CAAAA,gBAAgB,EACxBnJ,OAAAA,CAAQyI,IAAI,EACZzI,OAAAA,CAAQiJ,KAAK,EACbjJ,QAAQiI,KAAK,CAAA,CAAA;AAEfrB,eAAAA,CAAgBS,OAAO,CAAC,mBAAqBrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQyI,IAAI,EAAEzI,QAAQiJ,KAAK,CAAA,CAAA;AAEjHrC,eAAgBS,CAAAA,OAAO,CACrB,kBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQoI,CAAAA,IAAI,EACZpI,OAAQiI,CAAAA,KAAK,EACbjI,OAAAA,CAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAgBS,CAAAA,OAAO,CACrB,kBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQiI,CAAAA,KAAK,EACbjI,OAAAA,CAAQkJ,KAAK,CAAA,CAAA;AAGftC,eAAAA,CAAgBS,OAAO,CACrB,kBAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQmJ,CAAAA,gBAAgB,EACxBnJ,OAAAA,CAAQqI,IAAI,EACZrI,OAAAA,CAAQiI,KAAK,EACbjI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAgBS,CAAAA,OAAO,CACrB,kBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQiI,CAAAA,KAAK,EACbjI,OAAAA,CAAQiJ,KAAK,CAAA,CAAA;AAGfrC,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAA,GAAA,EAAA,GAAA,EAAuDrH,QAAQqI,IAAI,EAAErI,QAAQiI,KAAK,CAAA,CAAA;AAC1GrB,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAA,GAAA,EAAA,GAAA,EAAuDrH,QAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AAC1GrB,eAAAA,CAAgBS,OAAO,CAAC,gBAAA,EAAA,GAAA,EAAA,GAAA,EAAuDrH,QAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AAC1GrB,eAAAA,CAAgBS,OAAO,CAAC,gBAAkBrH,EAAAA,OAAAA,CAAQiI,KAAK,EAAEjI,OAAQmJ,CAAAA,gBAAgB,EAAEnJ,OAAAA,CAAQyI,IAAI,EAAEzI,QAAQiI,KAAK,CAAA,CAAA;AAE9GrB,eAAgBS,CAAAA,OAAO,CACrB,sBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQiI,CAAAA,KAAK,EACbjI,OAAAA,CAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAgBS,CAAAA,OAAO,CACrB,sBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQyI,CAAAA,IAAI,EACZzI,OAAQiI,CAAAA,KAAK,EACbjI,OAAAA,CAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAgBS,CAAAA,OAAO,CACrB,sBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQyI,CAAAA,IAAI,EACZzI,OAAQiI,CAAAA,KAAK,EACbjI,OAAAA,CAAQkJ,KAAK,CAAA,CAAA;AAEftC,eAAAA,CAAgBS,OAAO,CACrB,sBAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQmJ,CAAAA,gBAAgB,EACxBnJ,OAAAA,CAAQyI,IAAI,EACZzI,OAAAA,CAAQiI,KAAK,EACbjI,QAAQiJ,KAAK,CAAA,CAAA;AAGfrC,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAoDrH,OAAQoI,CAAAA,IAAI,EAAEpI,OAAQoI,CAAAA,IAAI,EAAEpI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AACpHxB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAoDrH,OAAQqI,CAAAA,IAAI,EAAErI,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AACpHzB,eAAgBS,CAAAA,OAAO,CAAC,aAAA,EAAA,GAAA,EAAA,GAAA,EAAsDrH,OAAQqI,CAAAA,IAAI,EAAErI,OAAQqI,CAAAA,IAAI,EAAErI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAEtHzB,eAAAA,CAAgBS,OAAO,CACrB,aAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQmJ,CAAAA,gBAAgB,EACxBnJ,OAAAA,CAAQqI,IAAI,EACZrI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQoI,IAAI,CAAA,CAAA;AAEdxB,eAAAA,CAAgBS,OAAO,CACrB,aAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQoJ,CAAAA,mBAAmB,EAC3BpJ,OAAAA,CAAQyI,IAAI,EACZzI,OAAAA,CAAQqI,IAAI,EACZrI,QAAQqI,IAAI,CAAA,CAAA;AAGdzB,eAAgBS,CAAAA,OAAO,CACrB,aAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAEdxB,eAAAA,CAAgBS,OAAO,CACrB,aAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQqJ,CAAAA,sBAAsB,EAC9BrJ,OAAAA,CAAQyI,IAAI,EACZzI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQoI,IAAI,CAAA,CAAA;AAGdxB,eAAAA,CAAgBS,OAAO,CACrB,mBAGArH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQoI,IAAI,EACZpI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAAA,CAAgBS,OAAO,CACrB,mBAGArH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQqI,IAAI,EACZrI,OAAQqI,CAAAA,IAAI,EACZrI,OAAAA,CAAQqI,IAAI,EACZrI,QAAQkJ,KAAK,CAAA,CAAA;AAEftC,eAAAA,CAAgBS,OAAO,CACrB,mBAAA,EACArH,QAAQiI,KAAK,EACbjI,QAAQmJ,gBAAgB,EACxBnJ,QAAQqI,IAAI,EACZrI,QAAQoI,IAAI,EACZpI,QAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAAA,CAAgBS,OAAO,CACrB,mBAGArH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQqI,IAAI,EACZrI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAAA,CAAgBS,OAAO,CACrB,mBAAA,EACArH,QAAQiI,KAAK,EACbjI,QAAQqJ,sBAAsB,EAC9BrJ,QAAQqI,IAAI,EACZrI,QAAQoI,IAAI,EACZpI,QAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAGfrC,eAAgBS,CAAAA,OAAO,CACrB,iBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQqI,CAAAA,IAAI,EACZrI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAEdxB,eAAgBS,CAAAA,OAAO,CACrB,iBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQyI,CAAAA,IAAI,EACZzI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,CAAA,CAAA;AAEdxB,eAAgBS,CAAAA,OAAO,CACrB,iBAAA,EAAA,GAAA,EAAA,GAAA,EAGArH,OAAQyI,CAAAA,IAAI,EACZzI,OAAQqI,CAAAA,IAAI,EACZrI,OAAAA,CAAQqI,IAAI,CAAA,CAAA;AAEdzB,eAAAA,CAAgBS,OAAO,CACrB,iBAAA,EACArH,OAAQiI,CAAAA,KAAK,EACbjI,OAAQmJ,CAAAA,gBAAgB,EACxBnJ,OAAAA,CAAQyI,IAAI,EACZzI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQoI,IAAI,CAAA,CAAA;AAGdxB,eAAAA,CAAgBS,OAAO,CACrB,uBAGArH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQqI,IAAI,EACZrI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAAA,CAAgBS,OAAO,CACrB,uBAGArH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQyI,IAAI,EACZzI,OAAQoI,CAAAA,IAAI,EACZpI,OAAAA,CAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAAA,CAAgBS,OAAO,CACrB,uBAGArH,EAAAA,GAAAA,EAAAA,GAAAA,EAAAA,OAAAA,CAAQyI,IAAI,EACZzI,OAAQqI,CAAAA,IAAI,EACZrI,OAAAA,CAAQqI,IAAI,EACZrI,QAAQkJ,KAAK,CAAA,CAAA;AAEftC,eAAAA,CAAgBS,OAAO,CACrB,uBAAA,EACArH,QAAQiI,KAAK,EACbjI,QAAQmJ,gBAAgB,EACxBnJ,QAAQyI,IAAI,EACZzI,QAAQoI,IAAI,EACZpI,QAAQoI,IAAI,EACZpI,QAAQiJ,KAAK,CAAA,CAAA;AAEfrC,eAAAA,CAAgBW,eAAe,CAAC,MAA0Bf,EAAAA,GAAAA,EAAAA,YAAAA,CAAaiD,QAAQ,EAAA,GAAA,CAAA,CAAA;AAC/E7C,eAAAA,CAAgBW,eAAe,CAAC,MAA0Bf,EAAAA,GAAAA,EAAAA,YAAAA,CAAaiD,QAAQ,EAAA,GAAA,CAAA,CAAA;AAC/E7C,eAAAA,CAAgBW,eAAe,CAAC,QAA4Bf,EAAAA,GAAAA,EAAAA,YAAAA,CAAaiD,QAAQ,EAAA,GAAA,CAAA;;ACloB1E,IAAMC,oBAAqD,GAAA,IAAIpD,GAAM,EAAA,CAAA;AAErE,IAAA,eAAA,iBAAA,WAAA;AAAMqD,IAAAA,SAAAA,eAAAA,CAKSxJ,IAAsB,EAAEmB,MAAc,EAAEyF,KAAmB,EAAA;QAC7E,IAAI,CAAC5G,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACmB,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACyF,KAAK,GAAGA,KAAAA,CAAAA;;IARJ4C,eAWJC,CAAAA,cAGN,GAHD,SAAOA,cAAAA,CAAetI,MAAc,EAAEnB,IAAsB,EAAE4G,KAAwB,EAAA;QAAxBA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAQP,GAAAA,YAAAA,CAAac,GAAG,CAAA;AACpF,QAAA,IAAM7D,IAAO,GAAA,IAZJkG,eAYwBxJ,CAAAA,IAAAA,EAAMmB,MAAQyF,EAAAA,KAAAA,CAAAA,CAAAA;QAC/C2C,oBAAqBlK,CAAAA,GAAG,CAAC8B,MAAQmC,EAAAA,IAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AAdWkG,IAAAA,eAAAA,CAgBJE,MAEN,GAFD,SAAOA,MAAAA,CAAOhD,KAAa,EAAA;QACzB,OAAO6C,oBAAAA,CAAqBtD,GAAG,CAACS,KAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AAlBW8C,IAAAA,OAAAA,eAAAA,CAAAA;AAmBZ,CAAA,EAAA,CAAA;AAEDA,eAAAA,CAAgBC,cAAc,CAAC,aAAA,EAAe5J,QAAQkI,GAAG,EAAE1B,aAAasD,MAAM,CAAA,CAAA;AAC9EH,eAAAA,CAAgBC,cAAc,CAAC,eAAA,EAAiB5J,QAAQkI,GAAG,EAAE1B,aAAasD,MAAM,CAAA,CAAA;AAChFH,eAAAA,CAAgBC,cAAc,CAAC,aAAA,EAAe5J,QAAQyI,IAAI,EAAEjC,aAAasD,MAAM,CAAA,CAAA;AAC/EH,eAAAA,CAAgBC,cAAc,CAAC,cAAA,EAAgB5J,QAAQiI,KAAK,EAAEzB,aAAasD,MAAM,CAAA,CAAA;AAEjFH,eAAAA,CAAgBC,cAAc,CAAC,cAAA,EAAgB5J,QAAQyI,IAAI,EAAEjC,aAAaiD,QAAQ,CAAA,CAAA;AAClFE,eAAAA,CAAgBC,cAAc,CAAC,gBAAA,EAAkB5J,QAAQgJ,IAAI,EAAExC,aAAaiD,QAAQ,CAAA,CAAA;AACpFE,eAAAA,CAAgBC,cAAc,CAAC,cAAA,EAAgB5J,QAAQiI,KAAK,EAAEzB,aAAaiD,QAAQ,CAAA,CAAA;AACnFE,eAAAA,CAAgBC,cAAc,CAAC,eAAA,EAAiB5J,QAAQoI,IAAI,EAAE5B,aAAaiD,QAAQ,CAAA,CAAA;AACnFE,eAAAA,CAAgBC,cAAc,CAAC,cAAA,EAAgB5J,QAAQyI,IAAI,EAAEjC,aAAaiD,QAAQ,CAAA,CAAA;AAClFE,eAAAA,CAAgBC,cAAc,CAAC,aAAA,EAAe5J,QAAQ+J,UAAU,EAAEvD,aAAaiD,QAAQ,CAAA,CAAA;AAEvFE,eAAAA,CAAgBC,cAAc,CAAC,qBAAuB5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACjEyB,eAAAA,CAAgBC,cAAc,CAAC,4BAA8B5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACxEyB,eAAAA,CAAgBC,cAAc,CAAC,2BAA6B5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACvEyB,eAAAA,CAAgBC,cAAc,CAAC,4BAA8B5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACxEyB,eAAAA,CAAgBC,cAAc,CAAC,+BAAiC5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAC3EyB,eAAAA,CAAgBC,cAAc,CAAC,iCAAmC5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAC7EyB,eAAAA,CAAgBC,cAAc,CAAC,yBAA2B5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACrEyB,eAAAA,CAAgBC,cAAc,CAAC,8BAAgC5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAC1EyB,eAAAA,CAAgBC,cAAc,CAAC,mBAAqB5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AAC/DyB,eAAAA,CAAgBC,cAAc,CAAC,0BAA4B5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA,CAAA;AACtEyB,eAAAA,CAAgBC,cAAc,CAAC,0BAA4B5J,EAAAA,OAAAA,CAAQkI,GAAG,CAAA;;AC7C/D,IAAA,YAAK8B,iBAAAA,SAAAA,YAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,YAAAA,CAAAA;AAkIX,CAAA,CAAA,EAAA,CAAA;;ACnIM,IAAA,WAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,WAAAA,GAAAA;AACHC,QAAAA,IAAAA,CAAAA,MAAAA,GAA2B,IAAI5D,GAAAA,EAAAA,CAAAA;;AAD5B2D,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAGXE,IAAAA,MAAAA,CAAAA,MAeC,GAfDA,SAAAA,MAAOC,CAAAA,MAAS,EAAEC,eAAuB,EAAA;AAAvBA,QAAAA,IAAAA,4BAAAA,eAAkB,GAAA,KAAA,CAAA;AAClCD,QAAAA,MAAAA,CAAOC,eAAe,GAAGA,eAAAA,CAAAA;AAEX,QAAA,IAAA,gBAAA,CAAA;AAAd,QAAA,IAAMC,KAAQ,GAAA,CAAA,gBAAA,GAAA,IAAI,CAACJ,MAAM,CAAC9D,GAAG,CAACgE,MAAAA,CAAOvD,KAAK,CAAA,KAAA,IAAA,GAA5B,mBAAiC,EAAE,CAAA;QACjD,IAAK,IAAIpG,IAAI,CAAGC,EAAAA,CAAAA,GAAI4J,MAAM3J,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC5C,YAAA,IAAI6J,KAAK,CAAC7J,CAAE,CAAA,CAAC4J,eAAe,EAAE,SAAA;AAC9B,YAAA,IAAIC,KAAK,CAAC7J,CAAAA,CAAE,CAAC8J,KAAK,CAACH,MAAS,CAAA,EAAA;AAC1BjJ,gBAAAA,aAAAA,CAAO8E,IAAI,CAAC,iBAAmBmE,EAAAA,MAAAA,CAAOvD,KAAK,CAAA,CAAA;gBAC3CyD,KAAK,CAAC7J,EAAE,GAAG2J,MAAAA,CAAAA;AACX,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;AAEAE,QAAAA,KAAAA,CAAM/J,IAAI,CAAC6J,MAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACF,MAAM,CAAC1K,GAAG,CAAC4K,MAAAA,CAAOvD,KAAK,EAAEyD,KAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEAE,IAAAA,MAAAA,CAAAA,SASC,GATDA,SAAAA,SAAUJ,CAAAA,MAAS,EAAEK,YAAoB,EAAA;AAApBA,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,KAAA,CAAA;QAClC,IAAMH,KAAAA,GAAQ,IAAI,CAACJ,MAAM,CAAC9D,GAAG,CAACgE,OAAOvD,KAAK,CAAA,CAAA;AAC1C,QAAA,IAAIyD,KAAO,EAAA;YACT,IAAK,IAAI7J,IAAI6J,KAAM3J,CAAAA,MAAM,GAAG,CAAGF,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;gBAC1C,IAAMgD,IAAAA,GAAO6G,KAAK,CAAC7J,CAAE,CAAA,CAAA;AACrB,gBAAA,IAAI,CAACgK,YAAAA,IAAgBhH,IAAK4G,CAAAA,eAAe,EAAE,SAAA;AAC3C,gBAAA,IAAI5G,IAAK8G,CAAAA,KAAK,CAACH,MAAAA,CAAAA,EAAS,OAAO3G,IAAAA,CAAAA;AACjC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEAiH,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAAA,CAAWN,MAAS,EAAEK,YAAoB,EAAE/H,GAAQ,EAAA;AAA9B+H,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,KAAA,CAAA;AACnC/H,QAAAA,GAAAA,CAAI/B,MAAM,GAAG,CAAA,CAAA;AACb,QAAA,IAAI,CAACgK,WAAW,CAACP,MAAAA,EAAQK,YAAc/H,EAAAA,GAAAA,CAAAA,CAAAA;QAEvC,OAAOA,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;MAGAiI,MAAAA,CAAAA,WAYC,GAZDA,SAAAA,YAAYP,MAAS,EAAEK,YAAoB,EAAE/H,GAAQ,EAAA;AAA9B+H,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,KAAA,CAAA;QACpC,IAAMH,KAAAA,GAAQ,IAAI,CAACJ,MAAM,CAAC9D,GAAG,CAACgE,OAAOvD,KAAK,CAAA,CAAA;AAE1C,QAAA,IAAIyD,KAAO,EAAA;YACT,IAAK,IAAI7J,IAAI6J,KAAM3J,CAAAA,MAAM,GAAG,CAAGF,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;gBAC1C,IAAMgD,IAAAA,GAAO6G,KAAK,CAAC7J,CAAE,CAAA,CAAA;AACrB,gBAAA,IAAI,CAACgK,YAAAA,IAAgBhH,IAAK4G,CAAAA,eAAe,EAAE,SAAA;AAC3C,gBAAA,IAAI5G,KAAK8G,KAAK,CAACH,MAAS1H,CAAAA,EAAAA,GAAAA,CAAInC,IAAI,CAACkD,IAAAA,CAAAA,CAAAA;AACnC,aAAA;AACF,SAAA;QAEA,OAAOf,GAAAA,CAAAA;AACT,KAAA,CAAA;AArDWuH,IAAAA,OAAAA,WAAAA,CAAAA;AAsDZ,CAAA,EAAA;;ACtDM,IAAA,gBAAA,iBAAA,WAAA;AAAMW,IAAAA,SAAAA,gBAAAA,GAAAA;AACXC,QAAAA,IAAAA,CAAAA,KAAAA,GAAa,EAAE,CAAA;AAEf;;AAEC,MAAA,IAAA,CACDC,WAAc,GAAA,CAAA,CAAA;;AANHF,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAgBXG,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAUhE,KAAQ,EAAA;AAChB,QAAA,IAAI,CAAC8D,KAAK,CAACtK,IAAI,CAACwG,KAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;IAEAnG,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAACiK,KAAK,CAAClK,MAAM,GAAG,CAAA,CAAA;AACtB,KAAA,CAAA;IAEAqK,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACH,KAAK,CAACI,GAAG,EAAA,CAAA;AACvB,KAAA,CAAA;AAEAd,IAAAA,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,CAAOC,MAAS,EAAA;QACd,IAAI,CAACrD,KAAK,CAACoD,MAAM,CAACC,MAAQ,EAAA,IAAI,CAACC,eAAe,CAAA,CAAA;AAChD,KAAA,CAAA;AAEAa,IAAAA,MAAAA,CAAAA,MAOC,GAPDA,SAAAA,MAAOd,CAAAA,MAAS,EAAEK,YAAoB,EAAA;AAApBA,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,KAAA,CAAA;QAC/B,IAAK,IAAIhK,CAAI,GAAA,IAAI,CAACoK,KAAK,CAAClK,MAAM,GAAG,CAAA,EAAGF,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;AAC/C,YAAA,IAAM0K,WAAc,GAAA,IAAI,CAACN,KAAK,CAACpK,CAAE,CAAA,CAAA;AACjC,YAAA,IAAM2K,MAASD,GAAAA,WAAAA,CAAYX,SAAS,CAACJ,MAAQK,EAAAA,YAAAA,CAAAA,CAAAA;AAC7C,YAAA,IAAIW,QAAQ,OAAOA,MAAAA,CAAAA;AACrB,SAAA;QACA,OAAOC,SAAAA,CAAAA;AACT,KAAA,CAAA;IAEAC,MAAAA,CAAAA,SAOC,GAPDA,SAAAA,SAAAA,CAAUlB,MAAS,EAAEK,YAAoB,EAAE/H,GAAQ,EAAA;AAA9B+H,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,KAAA,CAAA;AAClC/H,QAAAA,GAAAA,CAAI/B,MAAM,GAAG,CAAA,CAAA;QACb,IAAK,IAAIF,CAAI,GAAA,IAAI,CAACoK,KAAK,CAAClK,MAAM,GAAG,CAAA,EAAGF,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;AAC/C,YAAA,IAAM0K,WAAc,GAAA,IAAI,CAACN,KAAK,CAACpK,CAAE,CAAA,CAAA;YACjC0K,WAAYR,CAAAA,WAAW,CAACP,MAAAA,EAAQK,YAAc/H,EAAAA,GAAAA,CAAAA,CAAAA;AAChD,SAAA;QACA,OAAOA,GAAAA,CAAAA;AACT,KAAA,CAAA;AAhDWkI,IAAAA,aAAAA,CAAAA,gBAAAA,EAAAA;;YAQP7D,GAAAA,EAAAA,OAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC8D,KAAK,CAAC,IAAI,CAACA,KAAK,CAAClK,MAAM,GAAG,CAAE,CAAA,CAAA;AAC1C,aAAA;;;YAEI0J,GAAAA,EAAAA,iBAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACS,WAAW,GAAG,CAAA,CAAA;AAC5B,aAAA;;;AAdWF,IAAAA,OAAAA,gBAAAA,CAAAA;AAiDZ,CAAA,EAAA;;ACpDD,SAAS,iBAAiB,CAAC,CAAC,EAAE;AAC9B,IAAI,iBAAiB,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,CAAC,EAAE;AACnG,QAAQ,OAAO,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACvD,KAAK,CAAC;AACN;AACA,IAAI,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAChC;;ACNA,SAAS,mBAAmB,CAAC,EAAE,EAAE;AACjC,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE;;ACGA,SAAS,kBAAkB,CAAC,KAAK,EAAE;AACnC,IAAI,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,SAAS,CAAC;AACnE,IAAI,kBAAkB,GAAG,SAAS,KAAK,EAAE;AACzC,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AACxE,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;AACnH,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,YAAY,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,SAAS;AACT;AACA,QAAQ,SAAS,OAAO,GAAG;AAC3B,YAAY,OAAO,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;AACrF,SAAS;AACT,QAAQ,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACvJ;AACA,QAAQ,OAAO,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACjD,KAAK,CAAC;AACN;AACA,IAAI,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACrC;;ACrBO,IAAA,OAAA,iBAAA,SAAA,MAAA,EAAA;AAAMW,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,MAAAA,CAAAA,CAAAA;aAAAA,OAITnH,CAAAA,IAAiB,EACjBtD,OAAe,EACCG,QAAsC,EACtD,MAA8B,EACdC,IAAa,EAAA;;AAE7B,QAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAMJ,OAJUG,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,QAAAA,GAAAA,QACAD,EAAAA,KAAAA,CAAAA,MAAAA,GAAAA,cACAE,IAAAA,GAAAA,IAAAA,CAAAA;AAGhB,QAAA,KAAA,CAAKkD,IAAI,GAAGA,IAAAA,CAAAA;;;AAXHmH,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;IAcX,MAASC,CAAAA,QA4CR,GA5CD,SAASA,QAAAA,GAAAA;QAEP,IAAsC,KAAA,GAAA,IAAI,EAAlC1K,OAA8B,GAAA,KAAA,CAA9BA,SAASG,QAAqB,GAAA,KAAA,CAArBA,QAAUD,EAAAA,MAAAA,GAAW,KAAXA,CAAAA,MAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACA,MAAQ,EAAA;YACX,OAAOF,OAAAA,CAAAA;AACT,SAAA;QAEA,IAAY,WAARG,CAAAA,QAAAA,EAAoBrB,cAAgB,CAAA,EAAA,CAEjC,MAAA;AACLH,YAAQwB,SAASxB,KAAK,CAAA;AACtBC,YAAMuB,SAASvB,GAAG,CAAA;AACpB,SAAA;QACcsB,MAAOwD,CAAAA,KAAK,CAAC,IAAA,EAAA;AAE3B,QAAA,IAAIiH,oBAAoB,IAAO,CAACrH,IAAI,GAAC,OAAItD,OAAQ,GAAA,MAAA,CAAA;QA4BjD,OAAO2K,iBAAAA,CAAAA;AACT,KAAA,CAAA;AA1DWF,IAAAA,OAAAA,OAAAA,CAAAA;qBAAgBG,KA2D5B,CAAA,EAAA;AA3DYH,OAAAA,CACJI,iBAAoB,GAAA,CAAA,CAAA;AA4DtB,IAAAC,aAAKA,iBAAAA,SAAAA,WAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;AAKX,CAAA,CAAA,EAAA;;AClEM,IAAMC,cAAN,GAAA,SAAMA,cAET,CAAO1L,IAAsB,EAC7B,UAAyB,EAClB2L,cAAuC,EAAA;SAFvC3L,IAAAA,GAAAA,IAAAA,CAAAA;SACA4L,UAAAA,GAAAA,UAAAA,CAAAA;SACAD,cAAAA,GAAAA,cAAAA,CAAAA;AAEV,CAAA;;ACJM,IAAA,WAAKE,iBAAAA,SAAAA,WAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;AAKX,CAAA,CAAA,EAAA,CAAA,CAAA;AAUM,IAAA,UAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,UAAAA,CAET,KAAoB,EACpB,IAAwB,EACxB,OAA8B,EACvBC,QAAyB,EACzBC,cAAmC,EAC1C,eAA8B,EAAA;AAA9B,QAAA,IAAO9B,4BAAAA,eAAkB,GAAA,KAAA,CAAA;aALlBxD,KAAAA,GAAAA,KAAAA,CAAAA;aACA1G,IAAAA,GAAAA,IAAAA,CAAAA;aACAiM,OAAAA,GAAAA,OAAAA,CAAAA;aACAF,QAAAA,GAAAA,QAAAA,CAAAA;aACAC,cAAAA,GAAAA,cAAAA,CAAAA;aACA9B,eAAAA,GAAAA,eAAAA,CAAAA;;AAPE4B,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAUXzM,IAAAA,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,GAAAA,CACEqH,KAAa,EACbwF,UAAuB,EACvBD,OAAuB,EACvBF,QAAyB,EACzBC,cAAmC,EAAA;QAEnC,IAAI,CAACtF,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAAC1G,IAAI,GAAGkM,UAAAA,CAAAA;QACZ,IAAI,CAACD,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAACF,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAACC,cAAc,GAAGA,cAAAA,CAAAA;AACxB,KAAA,CAAA;AAEA5B,IAAAA,MAAAA,CAAAA,KAkBC,GAlBDA,SAAAA,KAAAA,CAAMH,MAAkB,EAAA;QACtB,IAAIA,MAAAA,CAAOjK,IAAI,KAAA,CAAA,IAAwB,IAAI,CAACA,IAAI,KAAKiK,MAAAA,CAAOjK,IAAI,EAAE,OAAO,KAAA,CAAA;QACzE,IAAI,IAAI,CAACA,IAAI,KAAqB,CAAA,EAAA;YAChC,IAAI,CAACiK,OAAOgC,OAAO,IAAI,CAAChC,MAAO+B,CAAAA,cAAc,EAAE,OAAO,IAAA,CAAA;YAEtD,IAAMlJ,MAAAA,GAAS,IAAiC,CAACmJ,OAAO,CAAEE,SAAS,CAACC,QAAQ,CAAA;AACrDnC,YAAAA,IAAAA,sBAAAA,CAAAA;AAAvB,YAAA,IAAMoC,cAAiBpC,GAAAA,CAAAA,sBAAAA,GAAAA,MAAAA,CAAO+B,cAAc,KAAA,IAAA,GAArB/B,sBAAyB,GAA6BA,MAAOgC,CAAAA,OAAO,CAAEE,SAAS,CAACC,QAAQ,CAAA;YAC/G,IAAM5L,MAAAA,GAASsC,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAQtC,MAAM,CAAA;AAC7B,YAAA,IAAIA,MAAW6L,MAAAA,cAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAgB7L,CAAAA,MAAM,GAAE,OAAO,KAAA,CAAA;AAC9C,YAAA,IAAK,IAAIF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIE,QAAQF,CAAK,EAAA,CAAA;gBAC/B,IAAMgM,EAAAA,GAAKxJ,MAAM,CAACxC,CAAAA,CAAE,EAClBiM,EAAKF,GAAAA,cAAc,CAAC/L,CAAE,CAAA,CAAA;gBACxB,IAAIgM,EAAAA,KAAO1M,OAAW2M,IAAAA,EAAAA,KAAO3M,OAAS,EAAA,SAAA;gBACtC,IAAI0M,EAAAA,KAAOC,IAAI,OAAO,KAAA,CAAA;AACxB,aAAA;YACA,OAAO,IAAA,CAAA;AACT,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AA1CWT,IAAAA,OAAAA,UAAAA,CAAAA;AA2CZ,CAAA,EAAA;;AC3DM,IAAA,QAAA,iBAAA,SAAA,UAAA,EAAA;AAAMU,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,QAGCrL,CAAAA,MAAc,EAAE8K,OAAmC,EAAA;AAC7D,QAAA,IAAMjM,OAAO,IAAI0L,cAAAA,CACfO,OAAQE,CAAAA,SAAS,CAACxF,UAAU,CAAC3G,IAAI,EACjCiM,QAAQE,SAAS,CAACxF,UAAU,CAAC8F,aAAa,CAACtL,MAAM,CAAA,CAAA;AAEnD,QAAA,OAAA,UAAMA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAQ0K,WAAYa,CAAAA,EAAE,EAAET,OAASjM,EAAAA,IAAAA,CAAAA,IAAAA,IAAAA,CAAAA;;AAR9BwM,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBV,UAU7B,CAAA;;ACXM,IAAA,YAAA,iBAAA,SAAA,UAAA,EAAA;AAAMa,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,YAGCxL,CAAAA,MAAc,EAAE8K,OAAgC,EAAA;AAC1D,QAAA,OAAA,UAAM9K,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,EAAQ0K,WAAYe,CAAAA,MAAM,EAAEX,OAAAA,CAAAA,IAAAA,IAAAA,CAAAA;;AAJzBU,IAAAA,OAAAA,YAAAA,CAAAA;EAAqBb,UAMjC,CAAA;;ACLM,IAAA,SAAA,iBAAA,SAAA,UAAA,EAAA;AAAMe,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,CAUTnG,KAAa,EACbqF,QAAwB,EACxBe,gBAAyB,EACzBC,OAI+B,EAAA;;AAE/B,QAAA,KAAA,GAAA,UAAA,CAAA,IAAA,CAAA,IAAA,EAAMrG,KAAOmF,EAAAA,WAAAA,CAAYmB,GAAG,EAAED,OAAShB,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AACvC,QAAA,KAAA,CAAKe,gBAAgB,GAAGA,gBAAAA,CAAAA;;;AApBfD,IAAAA,OAAAA,SAAAA,CAAAA;EAAkBf,UAsB9B,CAAA;;ACvBM,IAAA,UAAA,iBAAA,WAAA;AAAMmB,IAAAA,SAAAA,UAAAA,GAAAA;AAMXC,QAAAA,IAAAA,CAAAA,gBAAAA,GAAiD,EAAE,CAAA;AAEnDC,QAAAA,IAAAA,CAAAA,uBAAAA,GAAuD,EAAE,CAAA;;AAR9CF,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;IAUXG,MAAAA,CAAAA,+BAEC,GAFDA,SAAAA,+BAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACD,uBAAuB,CAAC3I,MAAM,CAAC,SAAC6I,IAAAA,EAAAA;AAASA,YAAAA,OAAW,WAAXA,CAAAA,IAAAA,CAAKC,MAAM,EAAYC,QAAQC,eAAe,CAAA,CAAA;;AACrG,KAAA,CAAA;AAZWP,IAAAA,OAAAA,UAAAA,CAAAA;AAaZ,CAAA,EAAA;;ACKc,IAAA,gBAAA,iBAAA,WAAA;AAAMQ,IAAAA,SAAAA,gBAAAA,GAAAA;AAMnBC,QAAAA,IAAAA,CAAAA,aAAAA,GAA4B,EAAE,CAAA;aAC9BC,UAA+BzC,GAAAA,SAAAA,CAAAA;AAC/B0C,QAAAA,IAAAA,CAAAA,gBAAAA,GAA0E,IAAInD,gBAAAA,EAAAA,CAAAA;AAC9EoD,QAAAA,IAAAA,CAAAA,eAAAA,GAGI,EAAC,CAAA;AACGC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIb,UAAAA,EAAAA,CAAAA;AAClBc,QAAAA,IAAAA,CAAAA,qBAAAA,GAA2E,IAAI5H,GAAAA,EAAAA,CAAAA;AAiBrF,QAAA,IAAI,CAACyE,SAAS,EAAA,CAAA;;AA/BG6C,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAkCnBO,IAAAA,MAAAA,CAAAA,KASC,GATDA,SAAAA,KAAAA,CAAM3L,eAAgC,EAAA;QACpC,IAAI,CAAC4L,gBAAgB,GAAG5L,eAAAA,CAAAA;AACxB,QAAA,IAAI,CAACqL,aAAa,CAAClN,MAAM,GAAG,CAAA,CAAA;QAC5B,IAAI,CAACsN,WAAW,GAAG,IAAIb,UAAAA,EAAAA,CAAAA;QACvB,IAAI,CAACW,gBAAgB,CAACnN,KAAK,EAAA,CAAA;AAC3B,QAAA,IAAI,CAACmK,SAAS,EAAA,CAAA;AAIhB,KAAA,CAAA;IAEAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAI,CAACgD,gBAAgB,CAAChD,SAAS,CAAC,IAAId,WAAAA,EAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;IAEAe,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAAC+C,gBAAgB,CAAC/C,QAAQ,EAAA,CAAA;AACvC,KAAA,CAAA;AAEAqD,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAmBC,CAAAA,GAAW,EAAEC,IAAqB,EAAA;AACnD,QAAA,IAAI,CAACL,qBAAqB,CAAC1O,GAAG,CAAC8O,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAmBF,GAAW,EAAA;AAC5B,QAAA,OAAO,IAAI,CAACJ,qBAAqB,CAAC9H,GAAG,CAACkI,GAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AAEAG,IAAAA,MAAAA,CAAAA,WAMC,GANDA,SAAAA,WAAYC,CAAAA,GAAgB,EAAE5N,OAAe,EAAA;AAI3CK,QAAAA,aAAAA,CAAOC,KAAK,CAACN,OAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAA;AAEA6N,IAAAA,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAcD,CAAAA,GAAgB,EAAE5N,OAAe,EAAA;AAC7CK,QAAAA,aAAAA,CAAO8E,IAAI,CAAC,IAAIsF,OAAAA,CAAQK,aAAYgD,CAAAA,eAAe,EAAE9N,OAAAA,EAAS4N,GAAKlN,EAAAA,SAAAA,CAAUqN,mBAAmB,CAAA,CAAErD,QAAQ,EAAA,CAAA,CAAA;AAC5G,KAAA,CAAA;AAvEmBoC,IAAAA,aAAAA,CAAAA,gBAAAA,EAAAA;;YAsBfkB,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACb,WAAW,CAAA;AACzB,aAAA;;;YAEIzL,GAAAA,EAAAA,iBAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC4L,gBAAgB,CAAA;AAC9B,aAAA;;;AA5BmBR,IAAAA,OAAAA,gBAAAA,CAAAA;;AACnB;;AAEC,MAHkBA,gBAIZmB,CAAAA,aAAAA,GAA4B,IAAI9C,UAAAA,CAAW,EAAI,EAAA,IAAA,CAAA;;AClBjD,IAAM+C,UAAN,GAAA,SAAMA,UAET,CAAO7O,IAAsB,EAC7B,UAAyB,EAClB2L,cAAuC,EAAA;SAFvC3L,IAAAA,GAAAA,IAAAA,CAAAA;SACA4L,UAAAA,GAAAA,UAAAA,CAAAA;SACAD,cAAAA,GAAAA,cAAAA,CAAAA;AAEV,CAAA,CAAA;AAEM,IAAMmD,UAAN,GAAA,SAAMA,WAET,QAA2B,EACpBpI,KAAgB,EAChBqI,QAAiB,EACxB,eAA8B,EAAA;AAA9B,IAAA,IAAO7E,4BAAAA,eAAkB,GAAA,KAAA,CAAA;SAHlB8E,QAAAA,GAAAA,QAAAA,CAAAA;SACAtI,KAAAA,GAAAA,KAAAA,CAAAA;SACAqI,QAAAA,GAAAA,QAAAA,CAAAA;SACA7E,eAAAA,GAAAA,eAAAA,CAAAA;AAEV,CAAA;;ACPD,SAAS+E,iBAAiBC,WAAyB,EAAA;AACjD,IAAA,OAAO,SAA0C3B,OAAU,EAAA;QACzDA,OAAQ4B,CAAAA,SAAS,CAACC,EAAE,GAAGF,WAAAA,CAAAA;AACjB3B,QAAAA,OAAAA,CAAStN,IAAI,GAAGH,cAAeC,CAAAA,gBAAgB,CAACwN,OAAAA,CAAAA,CAAAA;AACxD,KAAA,CAAA;AACF,CAAA;AAEO,IAAA,QAAA,iBAAA,WAAA;AAAe8B,IAAAA,SAAAA,QAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AA6BpBhQ,IAAAA,MAAAA,CAAAA,GAUC,GAVDA,SAAAA,GAAIkP,CAAAA,GAAgB,EAAEe,QAAqB,EAAA;QACzC,IAAI,CAACC,SAAS,GAAGhB,GAAAA,CAAAA;QACjB,IAAI,CAACiB,SAAS,GAAGF,QAAAA,CAAAA;AACjB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoBA,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnBG,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAS,WAALA,CAAAA,KAAAA,EAjCYJ,QAiCe,CAAA,EAAA;gBAC7BI,KAAMC,CAAAA,OAAO,GAAG,IAAI,CAAA;AACtB,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACC,IAAI,EAAA,CAAA;AACX,KAAA,CAAA;IAEAA,MAAAA,CAAAA,IAAS,GAATA,SAAAA,IAAQ,GAAA,EAAA,CAAA;IAERnQ,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,OAAiB,GAAA,EAAA,CAAA;AAEjBoQ,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAASC,IAAY,EAAA;QACnB,IAAI,CAACC,UAAU,GAAGD,IAAAA,CAAAA;QAClB,OAAOA,IAAAA,CAAAA;AACT,KAAA,CAAA;IAEAE,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAACD,UAAU,CAAA;AACxB,KAAA,CAAA;;AAGAE,IAAAA,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,OAAAA,CAAQC,OAAuB,EAAA;AAC7B,QAAA,IAAMJ,OAAOI,OAAQC,CAAAA,cAAc,CAAC,IAAI,CAACZ,QAAQ,CAAA,CAAA;QACjD,IAAI,CAACM,QAAQ,CAACC,IAAAA,CAAAA,CAAAA;QACd,OAAOA,IAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;AAEC,MACDM,OAAAA,eAAwC,GAAxCA,SAAAA,eAAAA,CAAgBC,EAAoB,EAAG,EAAA,CAAA;AAhEnBf,IAAAA,aAAAA,CAAAA,QAAAA,EAAAA;;YAiBhB/B,GAAAA,EAAAA,QAAAA;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACoC,OAAO,CAAA;AACrB,aAAA;;;YAEIJ,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACE,SAAS,CAAA;AACvB,aAAA;;;YAEI1O,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACyO,SAAS,CAAA;AACvB,aAAA;;;AA3BoBF,IAAAA,OAAAA,QAAAA,CAAAA;AAiErB,CAAA,EAAA,CAAA;AAEgB9B,CAAAA,SAAAA,OAAAA,EAAAA;AAaR,IAAA,SAAS8C,aAAahD,IAAe,EAAA;QAC1C,IAAQ,WAAJA,CAAAA,IAAAA,EAAgBnM,SAAW,CAAA,EAAA;YAC7B,OAAOmM,IAAAA,CAAAA;AACT,SAAA;QACA,MAAM,WAAA,CAAA;AACR,KAAA;YALgBgD,YAAAA,GAAAA,YAAAA,CAAAA;AAOT,IAAA,SAASpK,IAAIhG,IAAiB,EAAEmQ,EAAoB,EAAE7B,GAAgB,EAAEe,QAAqB,EAAA;QAClG,IAAMjC,IAAAA,GAAOpN,KAAKgG,GAAG,EAAA,CAAA;QACrBoH,IAAKhO,CAAAA,GAAG,CAACkP,GAAKe,EAAAA,QAAAA,CAAAA,CAAAA;AACdjC,QAAAA,IAAAA,CAAK8C,eAAe,CAACC,EAAAA,CAAAA,CAAAA;QACrBA,EAAG1C,CAAAA,aAAa,CAACtN,IAAI,CAACiN,IAAAA,CAAAA,CAAAA;AACxB,KAAA;YALgBpH,GAAAA,GAAAA,GAAAA,CAAAA;AAQT,IAAA,IAAA,WAAA,iBAAA,SAAA,QAAA,EAAA;AAAMqK,QAAAA,SAAAA,CAAAA,WAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,WAAAA,CAAAA;AAAoBjB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAApBiB,WAAAA,GAAAA,WAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,OAAAA,CAAAA;;AAIxB,IAAA,IAAA,UAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,UAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASL,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGxF,SAAS,EAAA,CAAA;AACd,SAAA,CAAA;AAHW4F,QAAAA,OAAAA,UAAAA,CAAAA;AAAmBnB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAnBmB,UAAAA,GAAAA,UAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,WAAAA,CAAAA;;AAQxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASP,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGvF,QAAQ,EAAA,CAAA;AACb,SAAA,CAAA;AAHW6F,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBrB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtBqB,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AAQxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAASjB,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACkB,qBAAqB,GAAG,KAAA,CAAA;AAC/B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASV,eAIR,GAJD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI7C,OAAQ8C,CAAAA,YAAY,CAAC,IAAI,CAACf,QAAS,CAAC,CAAA,CAAE,CAAEtP,CAAAA,IAAI,KAAKH,OAAAA,CAAQiR,MAAM,EAAE;AACnEV,gBAAAA,EAAAA,CAAGvC,eAAe,CAACkD,eAAe,GAAG,IAAI,CAAA;AAC3C,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAASf,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQe,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA,CAAA;AACtD,SAAA,CAAA;AAfWJ,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBvB,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtBuB,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AA0CxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAeC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QASpB,MAASvB,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACwB,KAAK,GAAGjG,SAAAA,CAAAA;AACf,SAAA,CAAA;AAXoBgG,QAAAA,aAAAA,CAAAA,iBAAAA,EAAAA;;gBAEhBlR,GAAAA,EAAAA,MAAAA;AAGJ,gBAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACS,oBAAA,IAAA,WAAA,CAAA;AAAP,oBAAA,OAAO,CAAA,WAAA,GAAA,IAAI,CAACmR,KAAK,YAAV,WAAcvR,GAAAA,OAAAA,CAAAA;AACvB,iBAAA;AALA,gBAAA,GAAA,EAAA,SAAA,GAAA,CAAS2G,CAA+B,EAAA;oBACtC,IAAI,CAAC4K,KAAK,GAAG5K,CAAAA,CAAAA;AACf,iBAAA;;;AAJoB2K,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B7B,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B6B,iBAAAA,GAAAA,iBAAAA,CAAAA;AAoCf,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAME,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASzB,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAClD,aAAa,GAAGvB,SAAAA,CAAAA;YACrB,IAAI,CAACS,cAAc,GAAGT,SAAAA,CAAAA;AACxB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eA8BR,GA9BD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAM+B,WAAAA,GAAc/B,SAAS9O,MAAM,CAAA;YACnC,IAAM8Q,SAAAA,GAAYhC,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC7B,IAAM7C,aAAAA,GAAgB6E,UAAU7E,aAAa,CAAA;YAC7C,IAAI,CAACA,aAAa,GAAGA,aAAAA,CAAAA;AACrB,YAAA,IAAI,CAACd,cAAc,GAAGc,aAAAA,CAAcd,cAAc,CAAA;YAElD,IAAM4F,EAAAA,GAAKjC,QAAQ,CAAC,CAAE,CAAA,CAAA;YAEtB,IAAIkC,EAAAA,CAAAA;YACJ,IAAIH,WAAAA,KAAgB,CAAKA,IAAAA,WAAAA,KAAgB,CAAG,EAAA;gBAC1C,IAAMnF,UAAAA,GAAa,IAAI2C,UAAAA,CAAWyC,SAAUtR,CAAAA,IAAI,EAAEyM,aAAAA,CAActL,MAAM,EAAE,IAAI,CAACwK,cAAc,CAAA,CAAA;gBAC3F,IAAM8F,WAAAA,GAAcnC,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE/BkC,gBAAAA,EAAAA,GAAK,IAAI3E,SAAU0E,CAAAA,EAAAA,CAAGpQ,MAAM,EAAE+K,YAAY,KAAOuF,EAAAA,WAAAA,CAAAA,CAAAA;aAC5C,MAAA;gBACL,IAAM9F,cAAAA,GAAiB2D,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAMlC,IAAI,CAAC3D,cAAc,GAAGA,cAAAA,CAAAA;gBACtB,IAAMO,WAAAA,GAAa,IAAI2C,UAAAA,CAAWyC,SAAUtR,CAAAA,IAAI,EAAEyM,aAAAA,CAActL,MAAM,EAAE,IAAI,CAACwK,cAAc,CAAA,CAAA;gBAC3F,IAAM8F,YAAAA,GAAcnC,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE/BkC,gBAAAA,EAAAA,GAAK,IAAI3E,SAAU0E,CAAAA,EAAAA,CAAGpQ,MAAM,EAAE+K,aAAY,KAAOuF,EAAAA,YAAAA,CAAAA,CAAAA;AACnD,aAAA;YACArB,EAAGxC,CAAAA,gBAAgB,CAAC5D,MAAM,CAACwH,EAAAA,CAAAA,CAAAA;AAC7B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASxB,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQyB,CAAAA,sBAAsB,CAAC,IAAI,CAAA,CAAA,CAAA;AAC1D,SAAA,CAAA;AA3CWN,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B/B,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B+B,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBO,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAgDxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAASzB,eAIR,GAJD,SAASA,eAAAA,CAAgBlO,CAAmB,EAAA;YAC1C,IAAMqN,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC7C,aAAa,GAAI6C,QAAAA,CAAS9O,MAAM,KAAK,CAAI8O,GAAAA,QAAQ,CAAC,CAAA,CAAE,GAAGA,QAAQ,CAAC,CAAE,CAAA,CAAA;AACvE,YAAA,IAAI,CAACtP,IAAI,GAAG,IAAI,CAACyM,aAAa,CAACzM,IAAI,CAAA;AACrC,SAAA,CAAA;AARW4R,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BvC,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BuC,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAaxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBzC,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtByC,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AAIxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAS7B,eASR,GATD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMX,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC9B,IAAS,WAALG,CAAAA,KAAAA,EAAiBvO,SAAW,CAAA,EAAA;AAC9B,gBAAA,IAAI,CAAC+Q,SAAS,GAAGxC,KAAAA,CAAMzP,IAAI,CAAA;AAC3B,gBAAA,IAAI,CAACmB,MAAM,GAAGsO,KAAAA,CAAMtO,MAAM,CAAA;aACrB,MAAA;AACL,gBAAA,IAAI,CAAC8Q,SAAS,GAAwBxC,MAAOwC,SAAS,CAAA;AACtD,gBAAA,IAAI,CAAC9Q,MAAM,GAAwBsO,MAAOtO,MAAM,CAAA;AAClD,aAAA;AACF,SAAA,CAAA;AAbW6Q,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4B3C,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5B2C,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AA2CxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;QAMX,MAASxC,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACyC,SAAS,GAAGlH,SAAAA,CAAAA;AACnB,SAAA,CAAA;AAKA,QAAA,MAAA,CAASiF,eAOR,GAPD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAKzBd,YAAAA,IAAAA,UAAAA,CAAAA;YAJlB,IAAMA,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAM+C,UAAAA,GAAa/C,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,YAAA,IAAI,CAACtP,IAAI,GAAGqS,UAAAA,CAAWrS,IAAI,CAAA;AAC3B,YAAA,IAAI,CAACmB,MAAM,GAAGkR,UAAAA,CAAWlR,MAAM,CAAA;YAC/B,IAAI,CAACiR,SAAS,GAAI9C,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,UAAAA,GAAAA,QAAU,CAAC,CAAE,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd,UAACA,CAAkCgD,IAAI,CAAA;AACxD,YAAA,IAAI,CAACC,QAAQ,GAAG,OAAO,IAAI,CAACvS,IAAI,KAAK,QAAA,CAAA;AACvC,SAAA,CAAA;AApBWmS,QAAAA,aAAAA,CAAAA,aAAAA,EAAAA;;gBASPxG,GAAAA,EAAAA,gBAAAA;AAAJ,gBAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,oBAAA,OAAO,IAAI,CAAC2D,QAAQ,CAAC,CAAE,CAAA,CAAA;AACzB,iBAAA;;;AAXW6C,QAAAA,OAAAA,aAAAA,CAAAA;AAAsB9C,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtB8C,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AAyBxB,IAAA,IAAA,cAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAEX,QAAA,MAAA,CAAStC,eAGR,GAHD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMsC,mBAAsB,GAAA,IAAI,CAACpD,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC5C,YAAA,IAAI,CAACgD,IAAI,GAAGI,mBAAAA,CAAoB7P,KAAK,CAAA;AACvC,SAAA,CAAA;AALW4P,QAAAA,OAAAA,cAAAA,CAAAA;AAAuBpD,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAvBoD,cAAAA,GAAAA,cAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AAUxB,IAAA,IAAA,iCAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iCAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iCAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iCAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAASzC,eAsBR,GAtBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMyC,QAAW,GAAA,IAAI,CAACvD,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,YAAA,IAAI,CAACnO,MAAM,GAAG0R,QAAAA,CAAS1R,MAAM,CAAA;AAC7B,YAAA,OAAQ0R,SAAS7S,IAAI;AACnB,gBAAA,KAAKL,WAAWmT,IAAI;AAClB,oBAAA,IAAI,CAACC,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAKtT,WAAWuT,IAAI;AAClB,oBAAA,IAAI,CAACH,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAKtT,WAAWwT,IAAI;AAClB,oBAAA,IAAI,CAACJ,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAKtT,WAAWyT,KAAK;AACnB,oBAAA,IAAI,CAACL,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA,KAAKtT,WAAW0T,OAAO;AACrB,oBAAA,IAAI,CAACN,OAAO,GAAG,SAACC,CAAGC,EAAAA,CAAAA,EAAAA;+BAAMD,CAAIC,GAAAA,CAAAA,CAAAA;;AAC7B,oBAAA,MAAA;AACF,gBAAA;oBACE7C,EAAG9B,CAAAA,WAAW,CAACuE,QAAS/R,CAAAA,QAAQ,EAAE,2BAAC,GAA2B+R,SAAS1R,MAAM,CAAA,CAAA;AACjF,aAAA;AACF,SAAA,CAAA;AA1BWyR,QAAAA,OAAAA,iCAAAA,CAAAA;AAA0CvD,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1CuD,iCAAAA,GAAAA,iCAAAA,CAAAA;;AADkBU,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oCAAAA,CAAAA;;AA+BxB,IAAA,IAAA,yBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,yBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,yBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAS5D,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAC9M,KAAK,GAAGqI,SAAAA,CAAAA;AACf,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eAgBR,GAhBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,IAAI,CAACd,QAAQ,CAAC9O,MAAM,KAAK,CAAG,EAAA;AAC9B,gBAAA,IAAMiP,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC9B,IAAS,WAALG,CAAAA,KAAAA,EAAiBvO,SAAW,CAAA,EAAA;AAC9B,oBAAA,IAAI,CAAC2B,KAAK,GAAGM,MAAAA,CAAOsM,MAAMtO,MAAM,CAAA,CAAA;AAClC,iBAAA;AAUF,aAAA;AACF,SAAA,CAAA;AAvBWoS,QAAAA,OAAAA,yBAAAA,CAAAA;AAAkClE,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAlCkE,yBAAAA,GAAAA,yBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,2BAAAA,CAAAA;;AA4BxB,IAAA,IAAA,qBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,qBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS9D,CAAAA,IASR,GATD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAM+D,EAAK,GAAA,IAAI,CAACpE,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC3B,IAAM,WAAFoE,CAAAA,EAAAA,EAAcxS,SAAW,CAAA,EAAA;AAC3B,gBAAA,IAAI,CAAClB,IAAI,GAAG0T,EAAAA,CAAGvS,MAAM,CAAA;AACrB,gBAAA,IAAI,CAACA,MAAM,GAAGuS,EAAAA,CAAGvS,MAAM,CAAA;aAClB,MAAA;AACL,gBAAA,IAAI,CAACnB,IAAI,GAAI0T,GAAuC1T,IAAI,CAAA;AACxD,gBAAA,IAAI,CAACmB,MAAM,GAAIuS,GAAuCvS,MAAM,CAAA;AAC9D,aAAA;AACF,SAAA,CAAA;AAbWsS,QAAAA,OAAAA,qBAAAA,CAAAA;AAA8BpE,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA9BoE,qBAAAA,GAAAA,qBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,uBAAAA,CAAAA;;AAkBxB,IAAA,IAAA,+BAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,+BAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,+BAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,+BAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASjE,CAAAA,IAIR,GAJD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAMkE,KAAQ,GAAA,IAAI,CAACvE,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,YAAA,IAAI,CAACtP,IAAI,GAAG6T,KAAAA,CAAM7T,IAAI,CAAA;AACtB,YAAA,IAAI,CAACmB,MAAM,GAAG0S,KAAAA,CAAM1S,MAAM,CAAA;AAC5B,SAAA,CAAA;AARWyS,QAAAA,OAAAA,+BAAAA,CAAAA;AAAwCvE,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxCuE,+BAAAA,GAAAA,+BAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mCAAAA,CAAAA;;AAaxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAAS5D,eA6BR,GA7BD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAIoB,EAAAA,CAAAA;YACJ,IAAMlC,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAM0E,cAAAA,GAAiB1E,SAAS9O,MAAM,CAAA;AACtC,YAAA,IAAIwT,mBAAmB,CAAG,EAAA;gBACxB,IAA0C1E,UAAAA,GAAAA,QAAQ,CAAC,CAAA,CAAE,EAA7C7C,aAAkC6C,GAAAA,UAAAA,CAAlC7C,aAAed,EAAAA,cAAAA,GAAmB2D,UAAnB3D,CAAAA,cAAAA,CAAAA;gBACvB,IAAI,CAACqD,QAAQ,GAAG,IAAIH,UAAAA,CAAWpC,cAAczM,IAAI,EAAEyM,aAActL,CAAAA,MAAM,EAAEwK,cAAAA,CAAAA,CAAAA;aACpE,MAAA;gBACL,IAAMsI,YAAAA,GAAe3E,QAAQ,CAAC,CAAE,CAAA,CAAA;AAChC,gBAAA,IAAI,CAACN,QAAQ,GAAGiF,YAAAA,CAAajF,QAAQ,CAAA;AACvC,aAAA;YAEA,IAAIgF,cAAAA,KAAmB,CAAKA,IAAAA,cAAAA,KAAmB,CAAG,EAAA;gBAChD,IAAMzC,EAAAA,GAAKjC,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACtBkC,EAAK,GAAA,IAAI3E,SAAU0E,CAAAA,EAAAA,CAAGpQ,MAAM,EAAE,IAAI,CAAC6N,QAAQ,EAAE,KAAA,EAAO,IAAI,CAAA,CAAA;gBACxDoB,EAAGxC,CAAAA,gBAAgB,CAAC5D,MAAM,CAACwH,EAAAA,CAAAA,CAAAA;AAC7B,aAAA,MAAO,IAAIwC,cAAAA,KAAmB,CAAKA,IAAAA,cAAAA,KAAmB,CAAG,EAAA;gBACvD,IAAMhF,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,gBAAA,IAAMrD,eAAiB,GAAA,IAAI,CAAC2D,QAAQ,CAAC,CAAE,CAAA,CAAA;AAMvCN,gBAAAA,QAAAA,CAASrD,cAAc,GAAGA,eAAAA,CAAAA;gBAC1B,IAAM4F,GAAAA,GAAKjC,QAAQ,CAAC,CAAE,CAAA,CAAA;AACtBkC,gBAAAA,EAAAA,GAAK,IAAI3E,SAAU0E,CAAAA,GAAAA,CAAGpQ,MAAM,EAAE6N,QAAAA,EAAU,OAAO,IAAI,CAAA,CAAA;gBACnDoB,EAAGxC,CAAAA,gBAAgB,CAAC5D,MAAM,CAACwH,EAAAA,CAAAA,CAAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AAhCWuC,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B1E,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B0E,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAqCxB,IAAA,IAAA,cAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,cAAAA,GAAAA;;AACXC,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,MAAAA,GAAsB,EAAE,CAAA;;;AADbD,QAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAASxE,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACyE,MAAM,CAAC5T,MAAM,GAAG,CAAA,CAAA;AACvB,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAeR,GAfD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAwC,KAAA,GAAA,IAAI,EAApCd,QAAAA,GAAgC,MAAhCA,QAAU8E,EAAQC,YAAc,KAAtBD,CAAAA,MAAAA,CAAAA;YAClB,IAAI9E,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzB6T,gBAAAA,SAAAA,CAAUjU,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;aACrB,MAAA;gBACL,IAAMjM,IAAAA,GAAOiM,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAMiC,EAAAA,GAAKjC,QAAQ,CAAC,CAAE,CAAA,CAAA;AACtB,gBAAA,IAAMgF,YAAejR,GAAAA,IAAAA,CAAK+Q,MAAM,CAAC5T,MAAM,CAAA;gBACvC6T,SAAU7T,CAAAA,MAAM,GAAG8T,YAAe,GAAA,CAAA,CAAA;AAElC,gBAAA,IAAK,IAAIhU,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIgU,cAAchU,CAAK,EAAA,CAAA;AACrC+T,oBAAAA,SAAS,CAAC/T,CAAE,CAAA,GAAG+C,IAAK+Q,CAAAA,MAAM,CAAC9T,CAAE,CAAA,CAAA;AAC/B,iBAAA;gBACA+T,SAAS,CAACC,aAAa,GAAG/C,EAAAA,CAAAA;AAC5B,aAAA;AACF,SAAA,CAAA;AAtBW4C,QAAAA,OAAAA,cAAAA,CAAAA;AAAuB9E,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAvB8E,cAAAA,GAAAA,cAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AA2BxB,IAAA,IAAA,WAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,WAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASxE,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQwE,CAAAA,gBAAgB,CAAC,IAAI,CAAA,CAAA,CAAA;AACpD,SAAA,CAAA;AAHWD,QAAAA,OAAAA,WAAAA,CAAAA;AAAoBnF,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAApBmF,WAAAA,GAAAA,WAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,WAAAA,CAAAA;;AAQxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAMX,QAAA,MAAA,CAASxE,eAMR,GAND,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMwE,UAAa,GAAA,IAAI,CAACtF,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,IAAI,CAAC5I,KAAK,GAAGkO,UAAAA,CAAWlO,KAAK,CAAA;AAC7B,YAAA,IAAI,CAACC,UAAU,GAAGiO,UAAAA,CAAWjO,UAAU,CAAA;AACvC,YAAA,IAAI,CAACkO,aAAa,GAAGD,UAAAA,CAAWE,iBAAiB,CAAA;AACjD,YAAA,IAAI,CAAC1I,QAAQ,GAAGwI,UAAAA,CAAWxI,QAAQ,CAAA;AACrC,SAAA,CAAA;AAZWuI,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BtF,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1BsF,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAiBxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAMX,QAAA,MAAA,CAAS7E,eAWR,GAXD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3CA,EAAGvC,CAAAA,eAAe,CAACkD,eAAe,GAAG,IAAA,CAAA;AACrCX,YAAAA,EAAAA,CAAGvC,eAAe,CAACoH,MAAM,GAAG,IAAI,CAAA;YAEhC,IAAM3F,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAM2F,MAAAA,GAAS3F,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC1B,IAAMuF,aAAAA,GAAgBvF,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,YAAA,IAAI,CAAC5I,KAAK,GAAGuO,MAAAA,CAAOvO,KAAK,CAAA;AACzB,YAAA,IAAI,CAACC,UAAU,GAAGsO,MAAAA,CAAOtO,UAAU,CAAA;AACnC,YAAA,IAAI,CAACmO,iBAAiB,GAAGD,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAeC,iBAAiB,CAAA;AACzD,YAAA,IAAI,CAAC1I,QAAQ,GAAGyI,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAezI,QAAQ,CAAA;AACzC,SAAA,CAAA;AAjBW4I,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B3F,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B2F,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAsBxB,IAAA,IAAA,cAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAShF,eAKR,GALD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3CA,YAAAA,EAAAA,CAAGxF,SAAS,EAAA,CAAA;YACZ,IAAM0E,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC5I,KAAK,GAAG4I,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAI,CAAC3I,UAAU,GAAG2I,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC/B,SAAA,CAAA;AAEA,QAAA,MAAA,CAASU,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQmF,CAAAA,mBAAmB,CAAC,IAAI,CAAA,CAAA,CAAA;AACvD,SAAA,CAAA;AAbWD,QAAAA,OAAAA,cAAAA,CAAAA;AAAuB9F,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAvB8F,cAAAA,GAAAA,cAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,eAAAA,CAAAA;;AAkBxB,IAAA,IAAA,qBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,qBAAAA,GAAAA;;mEACXR,iBAAkC,GAAA,EAAE,EACpC1I,KAAAA,CAAAA,QAAAA,GAA+B,EAAE,CAAA;;;AAFtBkJ,QAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS3F,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACmF,iBAAiB,CAACtU,MAAM,GAAG,CAAA,CAAA;AAChC,YAAA,IAAI,CAAC4L,QAAQ,CAAC5L,MAAM,GAAG,CAAA,CAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAyBR,GAzBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAwC,QAAA,IAAI,EAApCwF,oBAAgC,KAAhCA,CAAAA,iBAAAA,EAAmB1I,WAAa,KAAbA,CAAAA,QAAAA,CAAAA;AAE3B,YAAA,IAAIkD,WAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAYiG,oBAAsB,CAAA,EAAA;AAGjCC,gBAAAA,IAAAA,cAAAA,CAAAA;gBAFd,IAAMA,IAAAA,GAAOlG,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxBwF,gBAAAA,iBAAAA,CAAkB1U,IAAI,CAAC;AAAEsG,oBAAAA,KAAAA,EAAO8O,KAAK9O,KAAK;AAAEsI,oBAAAA,QAAAA,EAAUwG,KAAKxG,QAAQ;oBAAE/C,OAASuJ,EAAAA,IAAAA;AAAK,iBAAA,CAAA,CAAA;AACrEA,gBAAAA,IAAAA,mBAAAA,CAAAA;gBAAdpJ,QAAShM,CAAAA,IAAI,CAACoV,CAAAA,mBAAAA,GAAAA,CAAAA,cAAAA,GAAAA,IAAKxG,CAAAA,QAAQ,KAAbwG,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAAA,CAAexV,IAAI,KAAA,IAAA,GAAnBwV,mBAAuB5V,GAAAA,OAAAA,CAAAA,CAAAA;AACvC,aAAA,MAAO,IAAI0P,WAAW,CAAXA,QAAQ,CAAC,CAAA,CAAE,EAAYiG,oBAAsB,CAAA,EAAA;oBAItDT,kBAKA1I,EAAAA,SAAAA,CAAAA;AAAgCoJ,gBAAAA,IAAAA,eAAAA,CAAAA;gBARhC,IAAMnS,IAAAA,GAAOiM,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAMkG,KAAAA,GAAOlG,QAAQ,CAAC,CAAE,CAAA,CAAA;AAExBwF,gBAAAA,CAAAA,qBAAAA,iBAAkB1U,EAAAA,IAAI,CAAtB0U,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAA0BzR,KAAKyR,iBAAiB,EAAA;AAAE,oBAAA;AAChDpO,wBAAAA,KAAAA,EAAO8O,MAAK9O,KAAK;AACjBsI,wBAAAA,QAAAA,EAAUwG,MAAKxG,QAAQ;wBACvB/C,OAASuJ,EAAAA,KAAAA;AACX,qBAAA;;AACgCA,gBAAAA,IAAAA,oBAAAA,CAAAA;AAAhCpJ,gBAAAA,CAAAA,YAAAA,QAAShM,EAAAA,IAAI,CAAbgM,KAAAA,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAiB/I,KAAK+I,QAAQ,EAAA;oBAAEoJ,CAAAA,oBAAAA,GAAAA,CAAAA,kBAAAA,KAAKxG,CAAAA,QAAQ,qBAAbwG,eAAexV,CAAAA,IAAI,YAAnBwV,oBAAuB5V,GAAAA,OAAAA;;AACzD,aAAA,MAAO,IAAe,WAAX0P,CAAAA,QAAQ,CAAC,CAAE,CAAA,EA3BbgG,qBA2BkDhG,CAAAA,IAAW,WAAXA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAYmG,eAAiB,CAAA,EAAA;oBACjGX,mBACA1I,EAAAA,UAAAA,CAAAA;gBADA0I,CAAAA,mBAAAA,GAAAA,mBAAkB1U,IAAI,CAAA,KAAA,CAAtB0U,+BAA0BxF,QAAQ,CAAC,CAAE,CAAA,CAACwF,iBAAiB,EAAA;AAAE,oBAAA;wBAAE7I,OAASqD,EAAAA,QAAQ,CAAC,CAAE,CAAA;AAAC,qBAAA;;gBAChFlD,CAAAA,UAAAA,GAAAA,UAAShM,IAAI,CAAA,KAAA,CAAbgM,sBAAiBkD,QAAQ,CAAC,CAAE,CAAA,CAAClD,QAAQ,EAAA;AAAExM,oBAAAA,OAAAA;;AACzC,aAAA,MAAO,IAAI0P,WAAW,CAAXA,QAAQ,CAAC,CAAA,CAAE,EAAYmG,eAAiB,CAAA,EAAA;AACjDX,gBAAAA,iBAAAA,CAAkB1U,IAAI,CAAC;oBAAE6L,OAASqD,EAAAA,QAAQ,CAAC,CAAE,CAAA;AAAC,iBAAA,CAAA,CAAA;AAC9ClD,gBAAAA,QAAAA,CAAShM,IAAI,CAACR,OAAAA,CAAAA,CAAAA;AAChB,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAASoQ,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQyF,CAAAA,0BAA0B,CAAC,IAAI,CAAA,CAAA,CAAA;AAC9D,SAAA,CAAA;AAtCWJ,QAAAA,OAAAA,qBAAAA,CAAAA;AAA8BjG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA9BiG,qBAAAA,GAAAA,qBAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,uBAAAA,CAAAA;;AA2CxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BvG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BuG,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAIxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMJ,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,eAAAA,CAAAA;AAAwBpG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxBoG,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBK,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AAIxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6B1G,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA7B0G,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,sBAAAA,CAAAA;;AAIxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMT,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;QAMX,MAAS5F,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACX,QAAQ,GAAG9D,SAAAA,CAAAA;YAChB,IAAI,CAACxE,KAAK,GAAGwE,SAAAA,CAAAA;AACf,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eAqBR,GArBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAI2G,mBAAAA,CAAAA;AAEJ,YAAA,IAAI3G,WAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAY4G,mBAAqB,CAAA,EAAA;gBAC9CD,mBAAsB3G,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,aAAA,MAAO,IAAIA,WAAW,CAAXA,QAAQ,CAAC,CAAA,CAAE,EAAY4G,mBAAqB,CAAA,EAAA;gBACrDD,mBAAsB3G,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,aAAA;AAEA,YAAA,IAAI2G,mBAAqB,EAAA;AACvB,gBAAA,IAAI,CAACjH,QAAQ,GAAGiH,mBAAAA,CAAoBjH,QAAQ,CAAA;AAC5C,gBAAA,IAAI,CAACtI,KAAK,GAAGuP,mBAAAA,CAAoBvP,KAAK,CAAA;gBACtC,IAAMyP,SAAAA,GAAY,IAAItJ,SAAAA,CACpBoJ,mBAAoBvP,CAAAA,KAAK,CAACvF,MAAM,EAChC8U,mBAAAA,CAAoBjH,QAAQ,EAC5B,KACAiH,EAAAA,mBAAAA,CAAAA,CAAAA;gBAEF7F,EAAGxC,CAAAA,gBAAgB,CAAC5D,MAAM,CAACmM,SAAAA,CAAAA,CAAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AAhCWZ,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6BlG,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA7BkG,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBa,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAqCxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMF,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAS/F,eAMR,GAND,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC5I,KAAK,GAAG4I,QAAQ,CAAC,CAAE,CAAA,CAAA;YACxB,IAAM7C,aAAAA,GAAgB6C,QAAQ,CAAC,CAAE,CAAA,CAAA;YACjC,IAAM3D,cAAAA,GAAiB2D,QAAQ,CAAC,CAAE,CAAA,CAAA;YAClC,IAAI,CAACN,QAAQ,GAAG,IAAIH,UAAAA,CAAWpC,cAAczM,IAAI,EAAEyM,aAActL,CAAAA,MAAM,EAAEwK,cAAAA,CAAAA,CAAAA;AAC3E,SAAA,CAAA;AAVWuK,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4B7G,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5B6G,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAuBxB,IAAA,IAAA,wBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,wBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,wBAAAA,CAAAA;AAAiCjH,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAjCiH,wBAAAA,GAAAA,wBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,2BAAAA,CAAAA;;AASxB,IAAA,IAAA,aAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASxG,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQwG,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA,CAAA;AACtD,SAAA,CAAA;AAHWD,QAAAA,OAAAA,aAAAA,CAAAA;AAAsBnH,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAtBmH,aAAAA,GAAAA,aAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,cAAAA,CAAAA;;AAQxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;QAMX,MAAShH,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACoB,eAAe,GAAG7F,SAAAA,CAAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eAyBR,GAzBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAACnD,SAAS,GAAGmD,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC5B,YAAA,IAAI,CAACsH,UAAU,GAAGtH,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE7Bc,YAAAA,EAAAA,CAAGvF,QAAQ,EAAA,CAAA;YACX,IAAM2G,EAAAA,GAAK,IAAIhF,QAAAA,CAAS,IAAI,CAACL,SAAS,CAACzF,KAAK,CAACvF,MAAM,EAAE,IAAI,CAAA,CAAA;YACzDiP,EAAGxC,CAAAA,gBAAgB,CAAC5D,MAAM,CAACwH,EAAAA,CAAAA,CAAAA;AAC3B,YAAA,IAAI,CAACtH,eAAe,GAAGkG,EAAGxC,CAAAA,gBAAgB,CAAC1D,eAAe,CAAA;YAE1D,IAAQ2D,kBAAoBuC,EAApBvC,CAAAA,eAAAA,CAAAA;AACR,YAAA,IAAQoH,MAA4BpH,GAAAA,eAAAA,CAA5BoH,MAAQlE,EAAAA,eAAAA,GAAoBlD,eAApBkD,CAAAA,eAAAA,CAAAA;AAChB,YAAA,IAAIkE,OAAOtO,UAAU,CAAC3G,IAAI,KAAKH,OAAAA,CAAQgX,IAAI,EAAE;AAC3C,gBAAA,IAAI9F,eAAiB,EAAA;AACnBX,oBAAAA,EAAAA,CAAG9B,WAAW,CAAC2G,MAAAA,CAAOtO,UAAU,CAAC7F,QAAQ,EAAE,0BAAA,CAAA,CAAA;AAC7C,iBAAA;aACK,MAAA;AACL,gBAAA,IAAI,CAACiQ,eAAiB,EAAA;AACpBX,oBAAAA,EAAAA,CAAG9B,WAAW,CAAC2G,MAAAA,CAAOtO,UAAU,CAAC7F,QAAQ,EAAG,4BAAA,CAAA,CAAA;iBACvC,MAAA;oBACL,IAAI,CAACiQ,eAAe,GAAGA,eAAAA,CAAAA;AACzB,iBAAA;AACF,aAAA;AACAlD,YAAAA,eAAAA,CAAgBoH,MAAM,GAAG/J,SAAAA,CAAAA;AACzB2C,YAAAA,eAAAA,CAAgBkD,eAAe,GAAG7F,SAAAA,CAAAA;AACpC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS8E,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQ6G,CAAAA,uBAAuB,CAAC,IAAI,CAAA,CAAA,CAAA;AAC3D,SAAA,CAAA;AAvCWH,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BtH,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BsH,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AA4CxB,IAAA,IAAA,YAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,YAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,YAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAS7G,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAI,CAACpQ,IAAI,GAAG,IAAK,CAACsP,QAAQ,CAAC,CAAE,CAAA,CAAyBtP,IAAI,CAAA;AAC5D,SAAA,CAAA;AAEA,QAAA,MAAA,CAASgQ,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQgH,CAAAA,iBAAiB,CAAC,IAAI,CAAA,CAAA,CAAA;AACrD,SAAA,CAAA;AAPWD,QAAAA,OAAAA,YAAAA,CAAAA;AAAqB9F,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAArB8F,YAAAA,GAAAA,YAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,aAAAA,CAAAA;;AAYxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAASxH,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,iBAAA,CAAA,SAAA,CAAMA,IAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;YACL,IAAI,CAACyH,QAAQ,GAAGlM,SAAAA,CAAAA;AAClB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eAoCR,GApCD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMiH,kBAAqB,GAAA,IAAI,CAAC/H,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC3C,IAAI+H,kBAAAA,CAAmBC,SAAS,EAAE;AAChC,gBAAA,IAAI,CAACtX,IAAI,GAAGqX,kBAAAA,CAAmB3Q,KAAK,CAAA;aAC/B,MAAA;AA6BO0Q,gBAAAA,IAAAA,kBAAAA,CAAAA;gBA5BZ,IAAMG,OAAAA,GAAkBF,mBAAmB3Q,KAAK,CAAA;gBAEhD,IAAI0F,QAAAA,CAAAA;AACJ,gBAAA,IAAI,IAAI,CAACkD,QAAQ,CAAC9O,MAAM,KAAK,CAAG,EAAA;AAC9B,oBAAA,IAAMgX,SAAY,GAAA,IAAI,CAAClI,QAAQ,CAAC,CAAE,CAAA,CAAA;oBAClC,IAAa,WAATkI,CAAAA,SAAAA,EAAqBC,yBAA2B,CAAA,EAAA;AAClDrL,wBAAAA,QAAAA,GAAWoL,UAAUpL,QAAQ,CAAA;AAC/B,qBAAA;AACF,iBAAA;gBASA,IAAMsL,YAAAA,GAAejK,iBAAiBmB,aAAa,CAAA;AACnD8I,gBAAAA,YAAAA,CAAarY,GAAG,CAACkY,OAAAA,EAAS1L,YAAYa,EAAE,EAAExB,WAAWA,SAAWkB,EAAAA,QAAAA,CAAAA,CAAAA;AAEhE,gBAAA,IAAMgL,WAAWhH,EAAGxC,CAAAA,gBAAgB,CAAC7C,MAAM,CAAC2M,YAAc,EAAA,IAAA,CAAA,CAAA;AAE1D,gBAAA,IAAI,CAACN,QAAU,EAAA;AAIb,oBAAA,OAAA;AACF,iBAAA;gBACA,IAAI,CAACpX,IAAI,GAAGoX,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,qBAAAA,QAAUrL,CAAAA,QAAQ,KAAlBqL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAoBpX,IAAI,CAAA;gBACpC,IAAI,CAACoX,QAAQ,GAAGA,QAAAA,CAAAA;AAClB,aAAA;AACF,SAAA,CAAA;AA5CWD,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4BjG,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA5BiG,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBQ,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAiDxB,IAAA,IAAA,yBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMF,QAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,yBAAAA,GAAAA;;mEACXrL,QAA+B,GAAA,EAAE,EACjCwL,KAAAA,CAAAA,UAAAA,GAA8D,EAAE,CAAA;;;AAFrDH,QAAAA,IAAAA,MAAAA,GAAAA,yBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS9H,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACvD,QAAQ,CAAC5L,MAAM,GAAG,CAAA,CAAA;AACvB,YAAA,IAAI,CAACoX,UAAU,CAACpX,MAAM,GAAG,CAAA,CAAA;AAC3B,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAkBR,GAlBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAA2C,KAAA,GAAA,IAAI,EAAvCd,QAAmC,GAAA,KAAA,CAAnCA,UAAUlD,QAAyB,GAAA,KAAA,CAAzBA,QAAUwL,EAAAA,UAAAA,GAAe,KAAfA,CAAAA,UAAAA,CAAAA;AAC5B,YAAA,IAAItI,WAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAYuI,oBAAsB,CAAA,EAAA;gBAC/C,IAAMC,IAAAA,GAAOxI,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxBlD,QAAShM,CAAAA,IAAI,CAAC0X,IAAAA,CAAK9X,IAAI,CAAA,CAAA;AACvB4X,gBAAAA,UAAAA,CAAWxX,IAAI,CAAC0X,IAAAA,CAAAA,CAAAA;AAClB,aAAA,MAAO,IAAIxI,WAAW,CAAXA,QAAQ,CAAC,CAAA,CAAE,EAAYuI,oBAAsB,CAAA,EAAA;oBAGtDzL,SACAwL,EAAAA,WAAAA,CAAAA;gBAHA,IAAMvU,IAAAA,GAAOiM,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAMkG,IAAAA,GAAOlG,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxBlD,gBAAAA,CAAAA,YAAAA,QAAShM,EAAAA,IAAI,CAAbgM,KAAAA,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAiB/I,KAAK+I,QAAQ,EAAA;AAAEoJ,oBAAAA,IAAAA,CAAKxV,IAAI;;AACzC4X,gBAAAA,CAAAA,cAAAA,UAAWxX,EAAAA,IAAI,CAAfwX,KAAAA,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAmBvU,KAAKuU,UAAU,EAAA;AAAEpC,oBAAAA,IAAAA;;AACtC,aAAA,MAAO,IAAe,WAAXlG,CAAAA,QAAQ,CAAC,CAAE,CAAA,EApBbmI,yBAoBsDnI,CAAAA,IAAW,WAAXA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAYyI,iBAAmB,CAAA,EAAA;oBACvG3L,UACAwL,EAAAA,YAAAA,CAAAA;gBADAxL,CAAAA,UAAAA,GAAAA,UAAShM,IAAI,CAAA,KAAA,CAAbgM,sBAAiBkD,QAAQ,CAAC,CAAE,CAAA,CAAClD,QAAQ,EAAA;AAAExM,oBAAAA,OAAAA;;gBACvCgY,CAAAA,YAAAA,GAAAA,YAAWxX,IAAI,CAAA,KAAA,CAAfwX,wBAAmBtI,QAAQ,CAAC,CAAE,CAAA,CAACsI,UAAU,EAAA;AAAEtI,oBAAAA,QAAQ,CAAC,CAAE,CAAA;;AACxD,aAAA,MAAO,IAAIA,WAAW,CAAXA,QAAQ,CAAC,CAAA,CAAE,EAAYyI,iBAAmB,CAAA,EAAA;AACnD3L,gBAAAA,QAAAA,CAAShM,IAAI,CAACR,OAAAA,CAAAA,CAAAA;AACdgY,gBAAAA,UAAAA,CAAWxX,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AA3BWmI,QAAAA,OAAAA,yBAAAA,CAAAA;AAAkCpI,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAlCoI,yBAAAA,GAAAA,yBAAAA,CAAAA;;AADkBO,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,4BAAAA,CAAAA;;AAgCxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6B5I,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA7B4I,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,wBAAAA,CAAAA;;AAGxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMH,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B1I,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B0I,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAGxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B/I,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B+I,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAIxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASnI,eAIR,GAJD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,CAACA,EAAAA,CAAGxC,gBAAgB,CAAC1D,eAAe,EAAE;AACxCkG,gBAAAA,EAAAA,CAAGzB,UAAU,CAACzB,gBAAgB,CAAC9M,IAAI,CAAC,IAAI,CAAA,CAAA;AAC1C,aAAA;AACF,SAAA,CAAA;AALWkY,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BjJ,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BiJ,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAUxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAKX,QAAA,MAAA,CAASrI,eAMR,GAND,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAM3D,aAAgB,GAAA,IAAI,CAAC6C,QAAQ,CAAC,CAAE,CAAA,CAAA;AAEtC,YAAA,IAAI,CAAC5I,KAAK,GAAG+F,aAAAA,CAAczM,IAAI,CAAA;AAC/B,YAAA,IAAI,CAACmB,MAAM,GAAGsL,aAAAA,CAActL,MAAM,CAAA;AAClC,YAAA,IAAI,CAACmW,SAAS,GAAG,OAAO,IAAI,CAAC5Q,KAAK,KAAK,QAAA,CAAA;AACzC,SAAA,CAAA;AAEA,QAAA,MAAA,CAASsJ,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQwI,CAAAA,uBAAuB,CAAC,IAAI,CAAA,CAAA,CAAA;AAC3D,SAAA,CAAA;AAfWD,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2BnJ,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3BmJ,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAoBxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMb,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6B3G,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA7B2G,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBc,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAqBxB,IAAA,IAAA,UAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,UAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,UAAAA,CAAAA;AAAmB1H,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAAnB0H,UAAAA,GAAAA,UAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,UAAAA,CAAAA;;AAgBxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAS3I,eAuBR,GAvBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,IAAI,CAACd,QAAQ,CAAC9O,MAAM,KAAK,CAAG,EAAA;AAC9B,gBAAA,IAAM+Q,EAAK,GAAA,IAAI,CAACjC,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC3B,IAAM,WAAFiC,CAAAA,EAAAA,EAAcwH,kBAAoB,CAAA,EAAA;AACxBxH,oBAAAA,IAAAA,YAAAA,CAAAA;oBAAZ,IAAI,CAACvR,IAAI,GAAGuR,CAAAA,eAAAA,EAAGvC,CAAAA,QAAQ,YAAXuC,YAAe3R,GAAAA,OAAAA,CAAAA;iBACtB,MAAA;oBACL,OAAoB2R,GAAIvR,IAAI;AAC1B,wBAAA,KAAKL,WAAWqZ,YAAY;AAC1B,4BAAA,IAAI,CAAC7H,KAAK,GAAGtR,OAAAA,CAAQkI,GAAG,CAAA;AACxB,4BAAA,MAAA;AACF,wBAAA,KAAKpI,WAAWsZ,cAAc;AAC5B,4BAAA,IAAI,CAACjZ,IAAI,GAAGH,OAAAA,CAAQiI,KAAK,CAAA;AACzB,4BAAA,MAAA;AACF,wBAAA,KAAKjI,QAAQqZ,IAAI,CAAA;AACjB,wBAAA,KAAKrZ,QAAQsZ,KAAK;AAChB,4BAAA,IAAI,CAACnZ,IAAI,GAAGH,OAAAA,CAAQgJ,IAAI,CAAA;AACxB,4BAAA,MAAA;AACJ,qBAAA;AACF,iBAAA;aACK,MAAA;AACL,gBAAA,IAAMgQ,UAAa,GAAA,IAAI,CAACvJ,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,gBAAA,IAAI,CAACtP,IAAI,GAAG6Y,UAAAA,CAAW7Y,IAAI,CAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AAxBW8Y,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B5H,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA1B4H,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBM,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AA6BxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,iBAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QACX,MAAS1J,CAAAA,IAMR,GAND,SAASA,IAAAA,GAAAA;AACP,YAAA,iBAAA,CAAA,SAAA,CAAMA,IAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,YAAA,IAAI,IAAI,CAACL,QAAQ,CAAC9O,MAAM,KAAK,CAAG,EAAA;AAC9B,gBAAA,IAAMiP,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,gBAAA,IAAI,CAACtP,IAAI,GAAGyP,KAAAA,CAAMzP,IAAI,CAAA;AACxB,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAASgQ,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQqJ,CAAAA,sBAAsB,CAAC,IAAI,CAAA,CAAA,CAAA;AAC1D,SAAA,CAAA;AAXWD,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BnI,KAAAA,CAAAA,iBAAAA,CAAAA,CAAAA;YAA1BmI,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAuKxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;QAMX,MAAS7J,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACjJ,KAAK,GAAGwE,SAAAA,CAAAA;AACf,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eAaR,GAbD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAACpF,eAAe,GAAGkG,EAAGxC,CAAAA,gBAAgB,CAAC1D,eAAe,CAAA;YAC1D,IAAIoF,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzB,gBAAA,IAAI,CAACkG,KAAK,GAAG4I,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxBc,gBAAAA,EAAAA,CAAGxC,gBAAgB,CAAC5D,MAAM,CAAC,IAAI2C,YAAAA,CAAa,IAAI,CAACjG,KAAK,CAACvF,MAAM,EAAE,IAAI,CAAA,CAAA,CAAA;gBAEnE,IAAI,CAACsY,QAAQ,GAAInK,QAAQ,CAAC,CAAA,CAAE,CAA2BmK,QAAQ,CAAA;gBAC/D,IAAI,CAACC,gBAAgB,GAAIpK,QAAQ,CAAC,CAAA,CAAE,CAA2BoK,gBAAgB,CAAA;aAC1E,MAAA;gBACL,IAAI,CAACD,QAAQ,GAAInK,QAAQ,CAAC,CAAA,CAAE,CAA2BmK,QAAQ,CAAA;gBAC/D,IAAI,CAACC,gBAAgB,GAAIpK,QAAQ,CAAC,CAAA,CAAE,CAA2BoK,gBAAgB,CAAA;AACjF,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS1J,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQ0J,CAAAA,oBAAoB,CAAC,IAAI,CAAA,CAAA,CAAA;AACxD,SAAA,CAAA;AA3BWH,QAAAA,OAAAA,eAAAA,CAAAA;AAAwBnK,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxBmK,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBI,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,gBAAAA,CAAAA;;AAgCxB,IAAA,IAAA,qBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,qBAAAA,GAAAA;;mEACXJ,QAAyB,GAAA,EAAE,EAC3BC,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAF7BG,QAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASlK,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC8J,QAAQ,CAACjZ,MAAM,GAAG,CAAA,CAAA;AACvB,YAAA,IAAI,CAACkZ,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAYR,GAZD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAiD,KAAA,GAAA,IAAI,EAA7Cd,QAAyC,GAAA,KAAA,CAAzCA,UAAUmK,QAA+B,GAAA,KAAA,CAA/BA,QAAUC,EAAAA,gBAAAA,GAAqB,KAArBA,CAAAA,gBAAAA,CAAAA;YAE5B,IAAIpK,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;oBACzBiZ,SACAC,EAAAA,iBAAAA,CAAAA;gBADAD,CAAAA,SAAAA,GAAAA,QAASrZ,EAAAA,IAAI,CAAbqZ,KAAAA,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAiB,QAAS,CAAC,CAAE,CAAA,CAAuBK,KAAK,CAAA,CAAA,CAAA;gBACzDJ,CAAAA,iBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAAuBA,gBAAgB,CAAA,CAAA,CAAA;aACvE,MAAA;AACLD,gBAAAA,IAAAA,UAAAA,EACAA,YACAC,kBACAA,EAAAA,kBAAAA,CAAAA;gBAHAD,CAAAA,UAAAA,GAAAA,QAASrZ,EAAAA,IAAI,CAAbqZ,KAAAA,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAiB,QAAS,CAAC,CAAE,CAAA,CAA2BA,QAAQ,CAAA,CAAA,CAAA;gBAChEA,CAAAA,UAAAA,GAAAA,QAASrZ,EAAAA,IAAI,CAAbqZ,KAAAA,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAiB,QAAS,CAAC,CAAE,CAAA,CAAuBK,KAAK,CAAA,CAAA,CAAA;gBACzDJ,CAAAA,kBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAA2BA,gBAAgB,CAAA,CAAA,CAAA;gBAChFA,CAAAA,kBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAAuBA,gBAAgB,CAAA,CAAA,CAAA;AAC9E,aAAA;AACF,SAAA,CAAA;AArBWG,QAAAA,OAAAA,qBAAAA,CAAAA;AAA8BxK,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA9BwK,qBAAAA,GAAAA,qBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,uBAAAA,CAAAA;;AA0BxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;mEACXF,KAAsB,GAAA,EAAE,EACxBJ,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAF7BM,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAOX,MAASrK,CAAAA,IAKR,GALD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACsK,cAAc,GAAG/O,SAAAA,CAAAA;YACtB,IAAI,CAACgP,eAAe,GAAGhP,SAAAA,CAAAA;AACvB,YAAA,IAAI,CAAC4O,KAAK,CAACtZ,MAAM,GAAG,CAAA,CAAA;AACpB,YAAA,IAAI,CAACkZ,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eA4CR,GA5CD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAA8C,KAAA,GAAA,IAAI,EAA1Cd,QAAsC,GAAA,KAAA,CAAtCA,UAAUwK,KAA4B,GAAA,KAAA,CAA5BA,KAAOJ,EAAAA,gBAAAA,GAAqB,KAArBA,CAAAA,gBAAAA,CAAAA;YAEzB,IAAIpK,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AASzBkZ,gBAAAA,IAAAA,iBAAAA,CAAAA;gBARA,IAAMS,sBAAAA,GAAyB7K,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC1C,IAAM8K,UAAAA,GAAaD,uBAAuBL,KAAK,CAAA;gBAE/C,IAAK,IAAIxZ,IAAI,CAAGE,EAAAA,MAAAA,GAAS4Z,WAAW5Z,MAAM,EAAEF,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;AAC3D8Z,oBAAAA,UAAU,CAAC9Z,CAAAA,CAAE,CAAC4J,eAAe,GAAG,IAAA,CAAA;AAChC4P,oBAAAA,KAAAA,CAAM1Z,IAAI,CAACga,UAAU,CAAC9Z,CAAE,CAAA,CAAA,CAAA;AAC1B,iBAAA;AAEAoZ,gBAAAA,CAAAA,oBAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyBS,uBAAuBT,gBAAgB,CAAA,CAAA,CAAA;AAEhE,gBAAA,OAAA;AACF,aAAA;YAEA,IAAIpK,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzB,gBAAA,IAAI,CAACyZ,cAAc,GAAG3K,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,gBAAA,IAAI,CAAC4K,eAAe,GAAG5K,QAAQ,CAAC,CAAE,CAAA,CAAA;aAC7B,MAAA;AACL,gBAAA,IAAI,CAAC2K,cAAc,GAAG3K,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,gBAAA,IAAI,CAAC4K,eAAe,GAAG5K,QAAQ,CAAC,CAAE,CAAA,CAAA;AACpC,aAAA;YAEA,IAAM+C,UAAAA,GAAa/C,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC9B,IAAyB,oBAAA,GAAA,IAAI,CAAC2K,cAAc,EAApCja,IAAiB,GAAA,oBAAA,CAAjBA,IAAMmB,EAAAA,MAAAA,GAAW,oBAAXA,CAAAA,MAAAA,CAAAA;AACd,YAAA,IAAM+I,eAAkBkG,GAAAA,EAAAA,CAAGxC,gBAAgB,CAAC1D,eAAe,CAAA;YAC3D,IAAc,WAAVmI,CAAAA,UAAAA,EAAsBgI,eAAiB,CAAA,EAAA;gBACzC,IAAMzF,UAAAA,GAAatF,QAAQ,CAAC,CAAE,CAAA,CAAA;gBAC9B,IAAMN,QAAAA,GAAW,IAAIH,UAAAA,CAAW7O,IAAMmB,EAAAA,MAAAA,CAAAA,CAAAA;gBACtC,IAAMmZ,IAAAA,GAAO,IAAIxL,UAAWE,CAAAA,QAAAA,EAAU4F,WAAWlO,KAAK,EAAE2L,UAAW3S,CAAAA,KAAK,EAAEwK,eAAAA,CAAAA,CAAAA;AAC1E4P,gBAAAA,KAAAA,CAAM1Z,IAAI,CAACka,IAAAA,CAAAA,CAAAA;aACN,MAAA;AACL,gBAAA,IAAMC,cAAiB,GAAA,IAAI,CAACL,eAAe,CAACK,cAAc,CAAA;gBAC1D,IAAMC,oBAAAA,GAAuBD,eAAe/Z,MAAM,CAAA;AAClDsZ,gBAAAA,KAAAA,CAAMtZ,MAAM,GAAGga,oBAAAA,CAAAA;AACf,gBAAA,IAAK,IAAIla,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIka,sBAAsBla,EAAK,EAAA,CAAA;oBAC7C,IAAMsU,WAAAA,GAAa2F,cAAc,CAACja,EAAE,CAAA,CAAA;AACpC,oBAAA,IAAM0O,YAAW,IAAIH,UAAAA,CAAW7O,IAAMmB,EAAAA,MAAAA,EAAQyT,YAAWjJ,cAAc,CAAA,CAAA;AACvE,oBAAA,IAAM2O,QAAO,IAAIxL,UAAAA,CAAWE,WAAU4F,WAAWlO,CAAAA,KAAK,EAAEwE,SAAWhB,EAAAA,eAAAA,CAAAA,CAAAA;oBACnE4P,KAAK,CAACxZ,GAAE,GAAGga,KAAAA,CAAAA;AACb,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AA1DWN,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B3K,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B2K,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBS,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AA+DxB,IAAA,IAAA,sBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,sBAAAA,GAAAA;;mEACXZ,KAAsB,GAAA,EAAE,EACxBJ,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAF7BgB,QAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS/K,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACmK,KAAK,CAACtZ,MAAM,GAAG,CAAA,CAAA;AACpB,YAAA,IAAI,CAACkZ,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;QAEA,MAAS2P,CAAAA,eAcR,GAdD,SAASA,eAAAA,GAAAA;YACP,IAAMb,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAE9B,YAAA,IAAI,CAACoK,gBAAgB,CAACtZ,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;YAEtC,IAAIA,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzB,gBAAA,IAAA,WAAA,EACA,cACA,sBACA,EAAA,uBAAA,CAAA;AAHA,gBAAA,CAAA,WAAA,GAAA,IAAI,CAACsZ,KAAK,EAAC1Z,IAAI,CAAf,KAAA,CAAA,WAAA,EAAA,EAAA,CAAA,MAAA,CAAmB,QAAS,CAAC,CAAA,CAAE,CAA2BqZ,QAAQ,CAAA,CAAA,CAAA;AAClE,gBAAA,CAAA,YAAA,GAAA,IAAI,CAACK,KAAK,EAAC1Z,IAAI,CAAf,KAAA,CAAA,YAAA,EAAA,EAAA,CAAA,MAAA,CAAmB,QAAS,CAAC,CAAA,CAAE,CAAuB0Z,KAAK,CAAA,CAAA,CAAA;AAC3D,gBAAA,CAAA,sBAAA,GAAA,IAAI,CAACJ,gBAAgB,EAACtZ,IAAI,CAA1B,KAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,MAAA,CAA8B,QAAS,CAAC,CAAA,CAAE,CAA2BsZ,gBAAgB,CAAA,CAAA,CAAA;AACrF,gBAAA,CAAA,uBAAA,GAAA,IAAI,CAACA,gBAAgB,EAACtZ,IAAI,CAA1B,KAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,MAAA,CAA8B,QAAS,CAAC,CAAA,CAAE,CAAuBsZ,gBAAgB,CAAA,CAAA,CAAA;aAC5E,MAAA;oBACL,YACA,EAAA,uBAAA,CAAA;AADA,gBAAA,CAAA,YAAA,GAAA,IAAI,CAACI,KAAK,EAAC1Z,IAAI,CAAf,KAAA,CAAA,YAAA,EAAA,EAAA,CAAA,MAAA,CAAmB,QAAS,CAAC,CAAA,CAAE,CAAuB0Z,KAAK,CAAA,CAAA,CAAA;AAC3D,gBAAA,CAAA,uBAAA,GAAA,IAAI,CAACJ,gBAAgB,EAACtZ,IAAI,CAA1B,KAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,MAAA,CAA8B,QAAS,CAAC,CAAA,CAAE,CAAuBsZ,gBAAgB,CAAA,CAAA,CAAA;AACnF,aAAA;AACF,SAAA,CAAA;AAvBWgB,QAAAA,OAAAA,sBAAAA,CAAAA;AAA+BrL,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA/BqL,sBAAAA,GAAAA,sBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,wBAAAA,CAAAA;;AA4BxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;mEACXd,KAAsB,GAAA,EAAE,EACxBJ,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAF7BkB,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASjL,CAAAA,IAGR,GAHD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACmK,KAAK,CAACtZ,MAAM,GAAG,CAAA,CAAA;AACpB,YAAA,IAAI,CAACkZ,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;QAEA,MAAS2P,CAAAA,eAmBR,GAnBD,SAASA,eAAAA,GAAAA;YACP,IAAMb,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAMuL,WAAWvL,QAAQ,CAACA,QAAS9O,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAE9C,YAAA,IAAI,CAACkZ,gBAAgB,CAACtZ,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAEtC,YAAA,IAAIA,WAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAYuK,qBAAuB,CAAA,EAAA;oBAChD,WACA,EAAA,sBAAA,CAAA;AADA,gBAAA,CAAA,WAAA,GAAA,IAAI,CAACC,KAAK,EAAC1Z,IAAI,CAAf,KAAA,CAAA,WAAA,EAAA,EAAA,CAAA,MAAA,CAAmBkP,QAAQ,CAAC,CAAE,CAAA,CAACmK,QAAQ,CAAA,CAAA,CAAA;AACvC,gBAAA,CAAA,sBAAA,GAAA,IAAI,CAACC,gBAAgB,EAACtZ,IAAI,CAA1B,KAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,MAAA,CAA8BkP,QAAQ,CAAC,CAAE,CAAA,CAACoK,gBAAgB,CAAA,CAAA,CAAA;AAC5D,aAAA;YAEA,IAAY,WAARmB,CAAAA,QAAAA,EApBKD,iBAoBkC,CAAA,EAAA;oBACzC,YACA,EAAA,uBAAA,CAAA;gBADA,CAAA,YAAA,GAAA,IAAI,CAACd,KAAK,EAAC1Z,IAAI,CAAA,KAAA,CAAf,YAAmBya,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAASf,KAAK,CAAA,CAAA,CAAA;gBACjC,CAAA,uBAAA,GAAA,IAAI,CAACJ,gBAAgB,EAACtZ,IAAI,CAAA,KAAA,CAA1B,uBAA8Bya,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,QAAAA,CAASnB,gBAAgB,CAAA,CAAA,CAAA;AACzD,aAAA;AAEA,YAAA,IAAIpK,SAAS9O,MAAM,GAAG,KAAKqa,WAAQ,CAARA,UAAoBC,eAAiB,CAAA,EAAA;AAC9D,gBAAA,IAAI,CAACpB,gBAAgB,CAACtZ,IAAI,CAACya,QAAAA,CAAAA,CAAAA;AAC7B,aAAA;AACF,SAAA,CAAA;AA5BWD,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BvL,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1BuL,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAiCxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMV,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAASlK,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAI,CAAC1Q,KAAK,GAAGyD,MAAO,CAAY,IAAI,CAACmM,QAAQ,CAAC,CAAE,CAAA,CAAEnO,MAAM,CAAA,CAAA;AAC1D,SAAA,CAAA;AALWkZ,QAAAA,OAAAA,eAAAA,CAAAA;AAAwBhL,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxBgL,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBW,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,gBAAAA,CAAAA;;AAUxB,IAAA,IAAA,oBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,oBAAAA,GAAAA;;AACXV,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,cAAAA,GAAqC,EAAE,CAAA;;;AAD5BU,QAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAStL,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC4K,cAAc,CAAC/Z,MAAM,GAAG,CAAA,CAAA;AAC/B,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAcR,GAdD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAqC,QAAA,IAAI,EAAjCd,WAA6B,KAA7BA,CAAAA,QAAAA,EAAUiL,iBAAmB,KAAnBA,CAAAA,cAAAA,CAAAA;YAClB,IAAIjL,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzB+Z,gBAAAA,cAAAA,CAAena,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;aAC1B,MAAA;gBACL,IAAMjM,IAAAA,GAAOiM,QAAQ,CAAC,CAAE,CAAA,CAAA;gBACxB,IAAMsF,UAAAA,GAAatF,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC9B,gBAAA,IAAM4L,UAAa7X,GAAAA,IAAAA,CAAKkX,cAAc,CAAC/Z,MAAM,CAAA;gBAC7C+Z,cAAe/Z,CAAAA,MAAM,GAAG0a,UAAa,GAAA,CAAA,CAAA;AACrC,gBAAA,IAAK,IAAI5a,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI4a,YAAY5a,CAAK,EAAA,CAAA;AACnCia,oBAAAA,cAAc,CAACja,CAAE,CAAA,GAAG+C,IAAKkX,CAAAA,cAAc,CAACja,CAAE,CAAA,CAAA;AAC5C,iBAAA;gBACAia,cAAc,CAACW,WAAW,GAAGtG,UAAAA,CAAAA;AAC/B,aAAA;AACF,SAAA,CAAA;AArBWqG,QAAAA,OAAAA,oBAAAA,CAAAA;AAA6B5L,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA7B4L,oBAAAA,GAAAA,oBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,sBAAAA,CAAAA;;AA0BxB,IAAA,IAAA,gBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,gBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASzL,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAChE,cAAc,GAAGT,SAAAA,CAAAA;AACxB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASiF,eAIR,GAJD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAI,CAAC5I,KAAK,GAAG4I,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAI,CAAC3D,cAAc,GAAG2D,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,SAAA,CAAA;AAZW8L,QAAAA,OAAAA,gBAAAA,CAAAA;AAAyB/L,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAzB+L,gBAAAA,GAAAA,gBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AAiBxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS3L,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAAC4L,QAAQ,GAAG,KAAA,CAAA;AAClB,SAAA,CAAA;AAEA,QAAA,MAAA,CAASpL,eAYR,GAZD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMtP,IAAAA,GAAOsP,QAAQ,CAAC,CAAE,CAAA,CAAA;YACxB,IAAM5I,KAAAA,GAAQ4I,QAAQ,CAAC,CAAE,CAAA,CAAA;YACzB,IAAI,CAACtP,IAAI,GAAGA,IAAAA,CAAAA;AACZ,YAAA,IAAMwR,KAAK,IAAI3E,SAAAA,CAAUnG,KAAMvF,CAAAA,MAAM,EAAE,IAAI0N,UAAAA,CAAW7O,IAAKA,CAAAA,IAAI,EAAEA,IAAKyM,CAAAA,aAAa,CAACtL,MAAM,CAAA,EAAG,MAAM,IAAI,CAAA,CAAA;YAEvGiP,EAAGxC,CAAAA,gBAAgB,CAAC5D,MAAM,CAACwH,EAAAA,CAAAA,CAAAA;YAE3B,IAAIlC,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;gBACzB,IAAI,CAAC+a,QAAQ,GAAG,IAAA,CAAA;AAClB,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAASvL,OAMR,GAND,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,IAAI,IAAI,CAACsL,QAAQ,EAAE;gBACjB,OAAO,QAAA,CAAA,SAAA,CAAMvL,OAAD,CAASC,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;aAChB,MAAA;AACL,gBAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQuL,CAAAA,8BAA8B,CAAC,IAAI,CAAA,CAAA,CAAA;AAClE,aAAA;AACF,SAAA,CAAA;AA5BWF,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4BjM,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5BiM,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,oBAAAA,CAAAA;;AAiCxB,IAAA,IAAA,uBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,uBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,uBAAAA,GAAAA;;AAEXC,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,oBAAAA,GAA8C,EAAE,CAAA;;;AAFrCD,QAAAA,IAAAA,MAAAA,GAAAA,uBAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAAS/L,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACgM,oBAAoB,CAACnb,MAAM,GAAG,CAAA,CAAA;AACrC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAyBR,GAzBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAQd,QAAa,GAAA,IAAI,CAAjBA,QAAAA,CAAAA;YACR,IAAM9O,MAAAA,GAAS8O,SAAS9O,MAAM,CAAA;YAC9B,IAAMiP,KAAAA,GAAQH,QAAQ,CAAC,CAAE,CAAA,CAAA;YACzB,IAAMtP,IAAAA,GAAOyP,MAAMzP,IAAI,CAAA;YACvB,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;YAEZ,IAAS,WAALyP,CAAAA,KAAAA,EAAiB6L,mBAAqB,CAAA,EAAA;AACxC,gBAAA,IAAI,CAACK,oBAAoB,CAACvb,IAAI,CAACqP,KAAAA,CAAAA,CAAAA;aAC1B,MAAA;AACL,gBAAA,IAAA,0BAAA,CAAA;gBAAA,CAAA,0BAAA,GAAA,IAAI,CAACkM,oBAAoB,EAACvb,IAAI,CAAA,KAAA,CAA9B,0BAAkCqP,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAMkM,oBAAoB,CAAA,CAAA,CAAA;gBAE5D,IAAMjV,KAAAA,GAAQ4I,QAAQ,CAAC,CAAE,CAAA,CAAA;AAEzB,gBAAA,IAAMsM,WAAcN,GAAAA,mBAAAA,CAAoBrb,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChD,gBAAA,IAAIzF,WAAW,CAAG,EAAA;;AAEhBob,oBAAAA,WAAAA,CAAYvc,GAAG,CAACqH,KAAM5F,CAAAA,QAAQ,EAAE;AAACd,wBAAAA,IAAAA;AAAM0G,wBAAAA,KAAAA;AAAM,qBAAA,CAAA,CAAA;iBACxC,MAAA;;AAELkV,oBAAAA,WAAAA,CAAYvc,GAAG,CAACqH,KAAM5F,CAAAA,QAAQ,EAAE;AAACd,wBAAAA,IAAAA;AAAM0G,wBAAAA,KAAAA;AAAO4I,wBAAAA,QAAQ,CAAC,CAAE,CAAA;AAAmB,qBAAA,CAAA,CAAA;AAC9E,iBAAA;AACAsM,gBAAAA,WAAAA,CAAYzL,eAAe,CAACC,EAAAA,CAAAA,CAAAA;AAC5B,gBAAA,IAAI,CAACuL,oBAAoB,CAACvb,IAAI,CAACwb,WAAAA,CAAAA,CAAAA;AACjC,aAAA;AACF,SAAA,CAAA;AAjCWF,QAAAA,OAAAA,uBAAAA,CAAAA;AAAgCrM,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAhCqM,uBAAAA,GAAAA,uBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,yBAAAA,CAAAA;;AAsCxB,IAAA,IAAA,kBAAA,iBAAA,SAAA,QAAA,EAAA;AAAM9C,QAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,kBAAAA,GAAAA;;mEAGX+C,0BAAuC,GAAA,EAAE,EAEjCC,KAAAA,CAAAA,QAAAA,GAAwC,EAAE,CAAA;;;AALvChD,QAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;QAOX,MAASpJ,CAAAA,IAIR,GAJD,SAASA,IAAAA,GAAAA;YACP,IAAI,CAACX,QAAQ,GAAGpP,OAAAA,CAAAA;AAChB,YAAA,IAAI,CAACkc,0BAA0B,CAACtb,MAAM,GAAG,CAAA,CAAA;AACzC,YAAA,IAAI,CAACub,QAAQ,CAACvb,MAAM,GAAG,CAAA,CAAA;AACzB,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAwDR,GAxDD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMX,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC9B,IAAMwM,0BAAAA,GAA6B,IAAI,CAACA,0BAA0B,CAAA;YAClE,IAAME,OAAAA,GAAU,IAAI,CAACD,QAAQ,CAAA;YAC7B,IAAMrE,YAAAA,GAAejK,iBAAiBmB,aAAa,CAAA;YACnD,IAAIqN,aAAAA,CAAAA;YAEJ,IAAS,WAALxM,CAAAA,KAAAA,EAAiBvO,SAAW,CAAA,EAAA;gBAC9B+a,aAAgB,GAAA;AAACxM,oBAAAA,KAAAA,CAAMtO,MAAM;AAAC,iBAAA,CAAA;aACzB,MAAA;gBACL8a,aAAgB,GAACxM,MAA8CyM,oBAAoB,CAAA;AACrF,aAAA;AAEA,YAAA,IAAK,IAAI5b,CAAI,GAAA,CAAA,EAAGA,IAAI2b,aAAczb,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;gBAC7C,IAAM2D,IAAAA,GAAOgY,aAAa,CAAC3b,CAAE,CAAA,CAAA;AAE7B,gBAAA,IAAI8P,EAAG/N,CAAAA,eAAe,CAAC4B,IAAAA,CAAK,EAAE;AAC5B,oBAAA,SAAA;AACF,iBAAA;;gBAGA,IAAI,CAAEwL,WAAAA,CAAAA,KAAAA,EAAiBvO,cAAcuF,eAAgBmB,CAAAA,OAAO,CAAC3D,IAAO,CAAA,EAAA;AAClE,oBAAA,SAAA;AACF,iBAAA;gBAEA,IAAMkY,UAAAA,GAAa3S,eAAgBE,CAAAA,MAAM,CAACzF,IAAAA,CAAAA,CAAAA;AAC1C,gBAAA,IAAIkY,UAAY,EAAA;AACd,oBAAA,IAAI,CAACnN,QAAQ,GAAGmN,UAAAA,CAAWnc,IAAI,CAAA;AAC/B,oBAAA,SAAA;AACF,iBAAA;AAEA0X,gBAAAA,YAAAA,CAAarY,GAAG,CAAC4E,IAAM4H,EAAAA,WAAAA,CAAYuQ,GAAG,CAAA,CAAA;AACtChM,gBAAAA,EAAAA,CAAGxC,gBAAgB,CAACzC,SAAS,CAACuM,cAAc,IAAMsE,EAAAA,OAAAA,CAAAA,CAAAA;AAElD,gBAAA,IAAI,CAACA,OAAAA,CAAQxb,MAAM,EAAE,CAId,MAAA;AACWwb,oBAAAA,IAAAA,kBAAAA,CAAAA;oBAAhB,IAAI,CAAChN,QAAQ,GAAA,CAAGgN,kBAAAA,GAAAA,OAAO,CAAC,CAAA,CAAE,CAACjQ,QAAQ,KAAnBiQ,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,CAAqBhc,IAAI,CAAA;oBACzC,IAAMqc,kBAAAA,GAA2CjM,GAAGxC,gBAAgB,CAAChH,KAAK,CAACyD,SAAS,CAACqN,YAAc,EAAA,IAAA,CAAA,CAAA;AACnG,oBAAA,IAAI2E,kBAAoB,EAAA;AACtB,wBAAA,IACE,CAACA,WAAkB,CAAlBA,oBAA8B7P,QAAY6P,CAAAA,IAAAA,kBAAAA,CAAmBvP,gBAAe,KAC7EgP,0BAA2B/Y,CAAAA,OAAO,CAACkB,IAAAA,CAAAA,KAAU,CAAC,CAC9C,EAAA;AACA6X,4BAAAA,0BAAAA,CAA2B1b,IAAI,CAAC6D,IAAAA,CAAAA,CAAAA;AAClC,yBAAA;AACF,qBAAA,MAAO,IACL+X,OAAAA,CAAQzY,IAAI,CAAC,SAAC+Y,CAAAA,EAAAA;AAAMA,wBAAAA,OAAC,WAADA,CAAAA,CAAAA,EAAa9P,QAAY8P,CAAAA,IAAAA,CAAAA,CAAExP,gBAAgB,CAAA;AAC/DgP,qBAAAA,CAAAA,IAAAA,0BAAAA,CAA2B/Y,OAAO,CAACkB,IAAU,CAAA,KAAA,CAAC,CAC9C,EAAA;AACA6X,wBAAAA,0BAAAA,CAA2B1b,IAAI,CAAC6D,IAAAA,CAAAA,CAAAA;AAClC,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS+L,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQsM,CAAAA,uBAAuB,CAAC,IAAI,CAAA,CAAA,CAAA;AAC3D,SAAA,CAAA;AAEAC,QAAAA,MAAAA,CAAAA,SAOC,GAPDA,SAAAA,SAAAA,CAAUvM,OAAuB,EAAA;AAC/B,YAAA,IAAMR,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC9B,IAAS,WAALG,CAAAA,KAAAA,EAAiBvO,SAAW,CAAA,EAAA;AAC9B,gBAAA,OAAOuO,MAAMtO,MAAM,CAAA;aACd,MAAA;gBACL,OAAOsO,KAAAA,CAAMO,OAAO,CAACC,OAAAA,CAAAA,CAAAA;AACvB,aAAA;AACF,SAAA,CAAA;AAlFW8I,QAAAA,OAAAA,kBAAAA,CAAAA;AAA2B1J,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA3B0J,kBAAAA,GAAAA,kBAAAA,CAAAA;;AADkB0D,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAuFxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMjP,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAGX,QAAA,MAAA,CAAS2C,eAGR,GAHD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAI,CAACzB,UAAU,GAAGyB,EAAAA,CAAGzB,UAAU,CAAA;YAC/B,IAAI,CAACA,UAAU,CAAC3D,WAAW,GAAGoF,EAAGxC,CAAAA,gBAAgB,CAAChH,KAAK,CAAA;AACzD,SAAA,CAAA;AANW4G,QAAAA,OAAAA,eAAAA,CAAAA;AAAwB6B,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxB7B,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBkP,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AAWxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;AACXjD,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,gBAAAA,GAAoE,EAAE,CAAA;;;AAD3DiD,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAShN,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC+J,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAYR,GAZD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMX,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;YAE9B,IAAS,WAALG,CAAAA,KAAAA,EAAiBmN,UAAcnN,CAAAA,IAAK,WAALA,CAAAA,KAAAA,EAAiBoN,sBAA0BpN,CAAAA,IAAK,WAALA,CAAAA,KAAAA,EAAiBvO,SAAW,CAAA,EAAA;AACxGkP,gBAAAA,EAAAA,CAAGzB,UAAU,CAACxB,uBAAuB,CAAC/M,IAAI,CAAC,IAAI,CAAA,CAAA;gBAE/C,IAAS,WAALqP,CAAAA,KAAAA,EAAiBoN,sBAAwB,CAAA,EAAA;AAC3C,oBAAA,IAAA,sBAAA,CAAA;oBAAA,CAAA,sBAAA,GAAA,IAAI,CAACnD,gBAAgB,EAACtZ,IAAI,CAAA,KAAA,CAA1B,sBAA8BqP,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAMiK,gBAAgB,CAAA,CAAA,CAAA;iBAC/C,MAAA;AACL,oBAAA,IAAI,CAACA,gBAAgB,CAACtZ,IAAI,CAACqP,KAAAA,CAAAA,CAAAA;AAC7B,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AAnBWkN,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BtN,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1BsN,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAwBxB,IAAA,IAAA,UAAA,iBAAA,SAAA,QAAA,EAAA;AAAMF,QAAAA,SAAAA,CAAAA,UAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAS5M,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAAC,QAAMI,CAAAA,SAAAA,CAAAA,OAAD,YAASC,OAAW,CAAA,GAAA,IAAA,CAAA,CAAA;AAChD,SAAA,CAAA;AAHW2M,QAAAA,OAAAA,UAAAA,CAAAA;AAAmBvN,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAnBuN,UAAAA,GAAAA,UAAAA,CAAAA;;AADkBG,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,WAAAA,CAAAA;;AAQxB,IAAA,IAAA,gBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,gBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAS7M,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3CA,EAAGxC,CAAAA,gBAAgB,CAACjD,WAAW,EAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAASqF,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAO,IAAI,CAACL,QAAQ,CAAC,OAAO,QAAMI,CAAAA,SAAAA,CAAAA,OAAD,YAASC,OAAW,CAAA,GAAA,IAAA,CAAA,CAAA;AACvD,SAAA,CAAA;AAPW+M,QAAAA,OAAAA,gBAAAA,CAAAA;AAAyB3N,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAzB2N,gBAAAA,GAAAA,gBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAYxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMnC,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAAS3K,eAER,GAFD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3CA,EAAGxC,CAAAA,gBAAgB,CAACjD,WAAW,EAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAASqF,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAO,IAAI,CAACL,QAAQ,CAAC,OAAO,QAAMI,CAAAA,SAAAA,CAAAA,OAAD,YAASC,OAAW,CAAA,GAAA,IAAA,CAAA,CAAA;AACvD,SAAA,CAAA;AAPW6K,QAAAA,OAAAA,eAAAA,CAAAA;AAAwBzL,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxByL,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBoC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AAYxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASnN,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAO,IAAI,CAACL,QAAQ,CAAC,OAAO,QAAMI,CAAAA,SAAAA,CAAAA,OAAD,YAASC,OAAW,CAAA,GAAA,IAAA,CAAA,CAAA;AACvD,SAAA,CAAA;AAHWkN,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4B9N,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5B8N,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAQxB,IAAA,IAAA,mBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AACX,QAAA,MAAA,CAASrN,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,OAAO,IAAI,CAACL,QAAQ,CAAC,OAAO,QAAMI,CAAAA,SAAAA,CAAAA,OAAD,YAASC,OAAW,CAAA,GAAA,IAAA,CAAA,CAAA;AACvD,SAAA,CAAA;AAHWoN,QAAAA,OAAAA,mBAAAA,CAAAA;AAA4BhO,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA5BgO,mBAAAA,GAAAA,mBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,qBAAAA,CAAAA;;AAQxB,IAAA,IAAA,sBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,sBAAAA,GAAAA;;AACX7D,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAD7B6D,QAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAS5N,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC+J,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAUR,GAVD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMoK,gBAAAA,GAAmB,IAAI,CAACA,gBAAgB,CAAA;YAE9C,IAAIpK,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzBkZ,gBAAAA,IAAAA,iBAAAA,CAAAA;gBAAAA,CAAAA,iBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAAuBA,gBAAgB,CAAA,CAAA,CAAA;aACvE,MAAA;oBACLA,kBACAA,EAAAA,kBAAAA,CAAAA;gBADAA,CAAAA,kBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAA4BA,gBAAgB,CAAA,CAAA,CAAA;gBACjFA,CAAAA,kBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAAuBA,gBAAgB,CAAA,CAAA,CAAA;AAC9E,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS1J,OAOR,GAPD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;YACtC,IAAMX,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAIA,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;gBACzB,OAAO,IAAI,CAACoP,QAAQ,CAACN,QAAQ,CAAC,CAAA,CAAE,CAACU,OAAO,CAACC,OAAAA,CAAAA,CAAAA,CAAAA;aACpC,MAAA;AACL,gBAAA,OAAO,IAAI,CAACL,QAAQ,CAAC,QAAW,CAAC,CAAE,CAAA,CAACI,OAAO,CAACC,WAAS,IAAIX,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAACU,OAAO,CAACC,OAAAA,CAAAA,CAAAA,CAAAA;AAC/E,aAAA;AACF,SAAA,CAAA;AA1BWsN,QAAAA,OAAAA,sBAAAA,CAAAA;AAA+BlO,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA/BkO,sBAAAA,GAAAA,sBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,wBAAAA,CAAAA;;AA+BxB,IAAA,IAAA,sBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMX,QAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,sBAAAA,GAAAA;;AACXnD,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAD7BmD,QAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAASlN,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC+J,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAYR,GAZD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAC9B,IAAMoK,gBAAAA,GAAmB,IAAI,CAACA,gBAAgB,CAAA;YAE9C,IAAIpK,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;oBAEzBkZ,iBACAA,EAAAA,kBAAAA,CAAAA;AAFAA,gBAAAA,gBAAAA,CAAiBtZ,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;gBACjCoK,CAAAA,iBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAA4BA,gBAAgB,CAAA,CAAA,CAAA;gBACjFA,CAAAA,kBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAAuBA,gBAAgB,CAAA,CAAA,CAAA;aACvE,MAAA;AAELA,gBAAAA,IAAAA,kBAAAA,CAAAA;AADAA,gBAAAA,gBAAAA,CAAiBtZ,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;gBACjCoK,CAAAA,kBAAAA,GAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyB,QAAS,CAAC,CAAE,CAAA,CAAuBA,gBAAgB,CAAA,CAAA,CAAA;AAC9E,aAAA;AACF,SAAA,CAAA;AAnBWmD,QAAAA,OAAAA,sBAAAA,CAAAA;AAA+BxN,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA/BwN,sBAAAA,GAAAA,sBAAAA,CAAAA;;AADkBY,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,yBAAAA,CAAAA;;AAwBxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;AACXhE,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,gBAAAA,GAAsC,EAAE,CAAA;;;AAD7BgE,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;QAGX,MAAS/N,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAAC+J,gBAAgB,CAAClZ,MAAM,GAAG,CAAA,CAAA;AACjC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAkBR,GAlBD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAMuL,WAAWvL,QAAQ,CAACA,QAAS9O,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;YAE9C,IAAMkZ,gBAAAA,GAAmB,IAAI,CAACA,gBAAgB,CAAA;AAC9CA,YAAAA,gBAAAA,CAAiBtZ,IAAI,CAACkP,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAEjC,YAAA,IAAIA,WAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAYiO,sBAAwB,CAAA,EAAA;AACjD7D,gBAAAA,IAAAA,iBAAAA,CAAAA;gBAAAA,CAAAA,iBAAAA,GAAAA,kBAAiBtZ,IAAI,CAAA,KAAA,CAArBsZ,6BAAyBpK,QAAQ,CAAC,CAAE,CAAA,CAACoK,gBAAgB,CAAA,CAAA,CAAA;AACvD,aAAA;YAEA,IAAY,WAARmB,CAAAA,QAAAA,EAlBK6C,iBAkBkC,CAAA,EAAA;AACzChE,gBAAAA,IAAAA,kBAAAA,CAAAA;AAAAA,gBAAAA,CAAAA,qBAAAA,gBAAiBtZ,EAAAA,IAAI,CAArBsZ,KAAAA,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAyBmB,SAASnB,gBAAgB,CAAA,CAAA,CAAA;AACpD,aAAA;AAEA,YAAA,IAAIpK,SAAS9O,MAAM,GAAG,KAAKqa,WAAQ,CAARA,UAAoBC,eAAiB,CAAA,EAAA;AAC9DpB,gBAAAA,gBAAAA,CAAiBtZ,IAAI,CAACya,QAAAA,CAAAA,CAAAA;AACxB,aAAA;AACF,SAAA,CAAA;AAzBW6C,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0BrO,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1BqO,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AA8BxB,IAAA,IAAA,gBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,gBAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,gBAAAA,CAAAA;AAAyBvO,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAzBuO,gBAAAA,GAAAA,gBAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,kBAAAA,CAAAA;;AAIxB,IAAA,IAAA,WAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,WAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,QAAAA,OAAAA,WAAAA,CAAAA;AAAoBzO,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAApByO,WAAAA,GAAAA,WAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,YAAAA,CAAAA;;AAIxB,IAAA,IAAA,eAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,eAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,eAAAA,GAAAA;;AACX9B,YAAAA,KAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,oBAAAA,GAAiC,EAAE,CAAA;;;AADxB8B,QAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;QAIX,MAASrO,CAAAA,IAER,GAFD,SAASA,IAAAA,GAAAA;AACP,YAAA,IAAI,CAACuM,oBAAoB,CAAC1b,MAAM,GAAG,CAAA,CAAA;AACrC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS2P,eAOR,GAPD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;YAC3C,IAAMd,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAMhN,YAAY,QAAS,CAAC,CAAA,CAAE,CAAenB,MAAM,CAAA;YAEnD,IAAI,CAACmB,SAAS,GAAGA,SAAAA,CAAAA;YAEjBb,YAAaW,CAAAA,uBAAuB,CAACgO,EAAG/N,CAAAA,eAAe,EAAEC,SAAW,EAAA,IAAI,CAAC4Z,oBAAoB,CAAA,CAAA;AAC/F,SAAA,CAAA;AAfW8B,QAAAA,OAAAA,eAAAA,CAAAA;AAAwB3O,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAAxB2O,eAAAA,GAAAA,eAAAA,CAAAA;;AADkBC,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,iBAAAA,CAAAA;;AAoBxB,IAAA,IAAA,iBAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,QAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,QAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,QAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAIX,QAAA,MAAA,CAAS/N,eAKR,GALD,SAASA,eAAAA,CAAgBC,EAAoB,EAAA;AAC3C,YAAA,IAAMX,KAAQ,GAAA,IAAI,CAACH,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE9B,YAAA,IAAI,CAAC4M,oBAAoB,GAAGzM,KAAAA,CAAMyM,oBAAoB,CAAA;AACtD,YAAA,IAAI,CAAC5Z,SAAS,GAAGmN,KAAAA,CAAMnN,SAAS,CAAA;AAClC,SAAA,CAAA;AAEA,QAAA,MAAA,CAAS0N,OAER,GAFD,SAASA,OAAAA,CAAQC,OAAuB,EAAA;AACtC,YAAA,OAAO,IAAI,CAACL,QAAQ,CAACK,OAAQkO,CAAAA,sBAAsB,CAAC,IAAI,CAAA,CAAA,CAAA;AAC1D,SAAA,CAAA;AAbWD,QAAAA,OAAAA,iBAAAA,CAAAA;AAA0B7O,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA;YAA1B6O,iBAAAA,GAAAA,iBAAAA,CAAAA;;AADkBE,QAAAA,gBAAAA,CAAAA,YAAAA,CAAAA,mBAAAA,CAAAA;;AAgBjC,CAAA,EAjiDiB7Q,OAAAA,KAAAA,OAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;;AChFV,IAAA,WAAA,iBAAA,WAAA;AAAM8Q,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,WAAAA,CACJC,gBAKN,GALD,SAAOA,gBAA+BjR,CAAAA,IAAc,EAAErN,IAAkB,EAAA;AACtE,QAAA,IAAMyP,KAAQpC,GAAAA,IAAAA,CAAKiC,QAAQ,CAAC,CAAE,CAAA,CAAA;QAC9B,IAAS,WAALG,CAAAA,KAAAA,EAAiB8O,SAAO,CAAA,EAAA,OAAA;AAC5B,QAAA,IAAI9O,KAAML,CAAAA,EAAE,KAAKpP,IAAAA,EAAM,OAAOyP,KAAAA,CAAAA;AAC9B,QAAA,OAAO4O,WALEA,CAKUC,gBAAgB,CAAC7O,KAAOzP,EAAAA,IAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AANWqe,IAAAA,WAAAA,CA4BJG,UAEN,GAFD,SAAOA,UAAAA,CAAWhN,EAAiB,EAAA;QACjC,OAAOA,EAAAA,GAAK3H,aAAa4U,KAAK,CAAA;AAChC,KAAA,CAAA;AA9BWJ,IAAAA,OAAAA,WAAAA,CAAAA;AAwDZ,CAAA,EAAA;;ACvDD,iBACO,IAAMK,cAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,cAAAA,GAAAA;AAcXC,QAAAA,IAAAA,CAAAA,gBAAAA,GAA8C,EAAE,CAAA;AAChDC,QAAAA,IAAAA,CAAAA,aAAAA,GAA8B,EAAE,CAAA;AAChCC,QAAAA,IAAAA,CAAAA,cAAAA,GAA4C,EAAE,CAAA;AAC9CC,QAAAA,IAAAA,CAAAA,WAAAA,GAA4B,EAAE,CAAA;AAC9BC,QAAAA,IAAAA,CAAAA,UAAAA,GAAwC,EAAE,CAAA;AAC1CC,QAAAA,IAAAA,CAAAA,OAAAA,GAAwB,EAAE,CAAA;AAS1BC,QAAAA,IAAAA,CAAAA,0BAAAA,GAAyC,EAAE,CAAA;;AA5BhCP,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAgCX1Q,IAAAA,MAAAA,CAAAA,KAeC,GAfDA,SAAAA,KAAAA,CAAMkR,QAAe,EAAA;AAAfA,QAAAA,IAAAA,qBAAAA,QAAW,GAAA,IAAA,CAAA;AACf,QAAA,IAAIA,QAAU,EAAA;AACZ,YAAA,IAAI,CAACP,gBAAgB,CAACne,MAAM,GAAG,CAAA,CAAA;AAC/B,YAAA,IAAI,CAACoe,aAAa,CAACpe,MAAM,GAAG,CAAA,CAAA;AAC5B,YAAA,IAAI,CAACqe,cAAc,CAACre,MAAM,GAAG,CAAA,CAAA;AAC7B,YAAA,IAAI,CAACse,WAAW,CAACte,MAAM,GAAG,CAAA,CAAA;AAC1B,YAAA,IAAI,CAACue,UAAU,CAACve,MAAM,GAAG,CAAA,CAAA;AACzB,YAAA,IAAI,CAACwe,OAAO,CAACxe,MAAM,GAAG,CAAA,CAAA;AACxB,SAAA;AAEA,QAAA,IAAI,CAAC2e,wBAAwB,GAAGC,MAAAA,CAAOC,MAAM,CAAC,IAAA,CAAA,CAAA;AAC9C,QAAA,IAAI,CAACC,sBAAsB,GAAGF,MAAAA,CAAOC,MAAM,CAAC,IAAA,CAAA,CAAA;AAC5C,QAAA,IAAI,CAACE,kBAAkB,GAAGH,MAAAA,CAAOC,MAAM,CAAC,IAAA,CAAA,CAAA;AACxC,QAAA,IAAI,CAACG,kBAAkB,GAAGJ,MAAAA,CAAOC,MAAM,CAAC,IAAA,CAAA,CAAA;AACxC,QAAA,IAAI,CAACJ,0BAA0B,CAACze,MAAM,GAAG,CAAA,CAAA;AAC3C,KAAA,CAAA;AAEAif,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBzf,IAAY,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC2e,gBAAgB,CAACe,SAAS,CAAC,SAACpc,IAAAA,EAAAA;mBAASA,IAAKoD,CAAAA,KAAK,CAAEvF,MAAM,KAAKnB,IAAAA,CAAAA;eAAU,CAAC,CAAA,CAAA;AACrF,KAAA,CAAA;AAEA2f,IAAAA,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,CAAgB3f,IAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC6e,cAAc,CAACa,SAAS,CAAC,SAACpc,IAAAA,EAAAA;mBAASA,IAAKoD,CAAAA,KAAK,CAAEvF,MAAM,KAAKnB,IAAAA,CAAAA;eAAU,CAAC,CAAA,CAAA;AACnF,KAAA,CAAA;AAEA4f,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAY5f,IAAY,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC+e,UAAU,CAACW,SAAS,CAAC,SAACpc,IAAAA,EAAAA;mBAASA,IAAKoD,CAAAA,KAAK,CAAEvF,MAAM,KAAKnB,IAAAA,CAAAA;eAAU,CAAC,CAAA,CAAA;AAC/E,KAAA,CAAA;AAEA6f,IAAAA,MAAAA,CAAAA,kBAcC,GAdDA,SAAAA,kBAAAA,CAAmBnZ,KAAgB,EAAA;QACjC,IAAMvF,MAAAA,GAASuF,MAAMvF,MAAM,CAAA;AAC3B,QAAA,IAAI,IAAI,CAACge,wBAAwB,CAAChe,OAAO,EAAE,OAAA;AAE3C,QAAA,IAAM2Y,QAAQ,IAAI,CAAC8E,aAAa,CAACpa,MAAM,CAAC,SAAClB,IAAAA,EAAAA;mBAASA,IAAKoD,CAAAA,KAAK,CAACvF,MAAM,KAAKA,MAAAA,CAAAA;;QACxE,IAAI,CAAC2Y,KAAMtZ,CAAAA,MAAM,EAAE;AACjB,YAAA,OAAOV,cAAeY,CAAAA,aAAa,CAChC,kCAAkCS,GAAAA,MAAAA,EACnCsK,aAAYqU,CAAAA,gBAAgB,EAC5Bze,SAAAA,CAAUqN,mBAAmB,EAC7BhI,MAAM5F,QAAQ,CAAA,CAAA;AAElB,SAAA;AACA,QAAA,IAAI,CAACqe,wBAAwB,CAAChe,MAAAA,CAAO,GAAG2Y,KAAAA,CAAAA;AAC1C,KAAA,CAAA;AAEAiG,IAAAA,MAAAA,CAAAA,gBAcC,GAdDA,SAAAA,gBAAAA,CAAiBrZ,KAAgB,EAAA;QAC/B,IAAMvF,MAAAA,GAASuF,MAAMvF,MAAM,CAAA;AAC3B,QAAA,IAAI,IAAI,CAACme,sBAAsB,CAACne,OAAO,EAAE,OAAA;AAEzC,QAAA,IAAM2Y,QAAQ,IAAI,CAACgF,WAAW,CAACta,MAAM,CAAC,SAAClB,IAAAA,EAAAA;mBAASA,IAAKoD,CAAAA,KAAK,CAACvF,MAAM,KAAKA,MAAAA,CAAAA;;QACtE,IAAI,CAAC2Y,KAAMtZ,CAAAA,MAAM,EAAE;AACjB,YAAA,OAAOV,cAAeY,CAAAA,aAAa,CAChC,gCAAgCS,GAAAA,MAAAA,EACjCsK,aAAYqU,CAAAA,gBAAgB,EAC5Bze,SAAAA,CAAUqN,mBAAmB,EAC7BhI,MAAM5F,QAAQ,CAAA,CAAA;AAElB,SAAA;AACA,QAAA,IAAI,CAACwe,sBAAsB,CAACne,MAAAA,CAAO,GAAG2Y,KAAAA,CAAAA;AACxC,KAAA,CAAA;AAEAkG,IAAAA,MAAAA,CAAAA,gBAcC,GAdDA,SAAAA,gBAAAA,CAAiBtZ,KAAgB,EAAA;QAC/B,IAAMvF,MAAAA,GAASuF,MAAMvF,MAAM,CAAA;AAC3B,QAAA,IAAI,IAAI,CAACoe,kBAAkB,CAACpe,OAAO,EAAE,OAAA;AAErC,QAAA,IAAM2Y,QAAQ,IAAI,CAACkF,OAAO,CAACxa,MAAM,CAAC,SAAClB,IAAAA,EAAAA;mBAASA,IAAKoD,CAAAA,KAAK,CAACvF,MAAM,KAAKA,MAAAA,CAAAA;;QAClE,IAAI,CAAC2Y,KAAMtZ,CAAAA,MAAM,EAAE;AACjB,YAAA,OAAOV,cAAeY,CAAAA,aAAa,CAChC,4BAA4BS,GAAAA,MAAAA,EAC7BsK,aAAYqU,CAAAA,gBAAgB,EAC5Bze,SAAAA,CAAUqN,mBAAmB,EAC7BhI,MAAM5F,QAAQ,CAAA,CAAA;AAElB,SAAA;AACA,QAAA,IAAI,CAACye,kBAAkB,CAACpe,MAAAA,CAAO,GAAG2Y,KAAAA,CAAAA;AACpC,KAAA,CAAA;AAEAmG,IAAAA,MAAAA,CAAAA,eAQC,GARDA,SAAAA,eAAgBvZ,CAAAA,KAAa,EAAE1G,IAAiB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAACwf,kBAAkB,CAAC9Y,MAAM,EAAE,OAAA;AAEpC,QAAA,IAAI,CAAC8Y,kBAAkB,CAAC9Y,KAAAA,CAAM,GAAG,EAAE,CAAA;QAEnC,IAAMgR,YAAAA,GAAegH,cAlHZA,CAkH2B9P,aAAa,CAAA;QACjD8I,YAAarY,CAAAA,GAAG,CAACqH,KAAO1G,EAAAA,IAAAA,CAAAA,CAAAA;QACxB,IAAI,CAACkgB,gBAAgB,CAAC3V,UAAU,CAACmN,YAAc,EAAA,IAAA,EAAM,IAAI,CAAC8H,kBAAkB,CAAC9Y,KAAM,CAAA,CAAA,CAAA;AACrF,KAAA,CAAA;IArHWgY,cAOJ1Q,CAAAA,KAKN,GALD,SAAOA,KAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACmS,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IATXzB,cAAAA,EAAAA,CAAAA;AAUT,SAAA;QACA,IAAI,CAACyB,UAAU,CAACnS,KAAK,EAAA,CAAA;AACvB,KAAA,CAAA;AAZW0Q,IAAAA,aAAAA,CAAAA,cAAAA,EAAAA,IAAAA,EAAAA;;YAGA0B,GAAAA,EAAAA,SAAAA;AAAX,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACD,UAAU,CAAA;AACxB,aAAA;;;AALWzB,IAAAA,OAAAA,cAAAA,CAAAA;AAsHZ,CAAA,EAAA,CAAA;AAtHYA,cACI9P,CAAAA,aAAAA,GAA4B,IAAI9C,UAAAA,CAAW,EAAI,EAAA,IAAA,CAAA;;ACVzD,IAAA,SAAA,iBAAA,WAAA;AAAMuU,IAAAA,SAAAA,SAAAA,GAAAA;AACXC,QAAAA,IAAAA,CAAAA,KAAAA,GAAkB,IAAIC,KAAAA,EAAAA,CAAAA;;AADXF,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IAGX7gB,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAAC8gB,KAAK,CAAC9f,MAAM,GAAG,CAAA,CAAA;AACtB,KAAA,CAAA;AALW6f,IAAAA,OAAAA,SAAAA,CAAAA;AAMZ,CAAA,EAAA;;ACUD;;;IAIO,IAAeG,cAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,cAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAWpBtQ,IAAAA,MAAAA,CAAAA,cAaC,GAbDA,SAAAA,cAAAA,CAAeZ,QAAqB,EAAA;QAClC,IAAMrP,IAAAA,GAAOugB,cAZKA,CAYUC,aAAa,CAAA;QACzC,IAAIC,GAAAA,GAAMzgB,KAAKgG,GAAG,EAAA,CAAA;AAClBya,QAAAA,GAAAA,CAAIlhB,OAAO,EAAA,CAAA;AACX,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoB8P,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnBG,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAS,WAALA,CAAAA,KAAAA,EAAiBvO,SAAW,CAAA,EAAA;AAC9Bwf,gBAAAA,GAAAA,CAAIJ,KAAK,CAAClgB,IAAI,CAACqP,MAAMtO,MAAM,CAAA,CAAA;aACtB,MAAA;AACLuf,gBAAAA,GAAAA,CAAIJ,KAAK,CAAClgB,IAAI,CAACqP,KAAMO,CAAAA,OAAO,CAAC,IAAI,CAAA,CAAA,CAAA;AACnC,aAAA;AACF,SAAA;AACA/P,QAAAA,IAAAA,CAAK0gB,MAAM,CAACD,GAAAA,CAAAA,CAAAA;AACZ,QAAA,OAAOA,GAAIJ,CAAAA,KAAK,CAACM,IAAI,CAAC,GAAA,CAAA,CAAA;AACxB,KAAA,CAAA;AAEAtH,IAAAA,MAAAA,CAAAA,sBAoDC,GApDDA,SAAAA,sBAAAA,CAAuBjM,IAA+B,EAAA;QACpD,IAAMiC,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAMuR,gBAAAA,GAAmBvR,SAAS9O,MAAM,CAAA;QACxC,IAAM4f,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;AAEtC,QAAA,IAAIS,qBAAqB,CAAG,EAAA;YAC1B,IAAMC,QAAAA,GAAWxR,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC5B,IAAMgL,IAAAA,GAAOhL,QAAQ,CAAC,CAAE,CAAA,CAAA;YAExB,IAAQ,WAAJgL,CAAAA,IAAAA,EAAgBpZ,SAAW,CAAA,EAAA;AAC7B,gBAAA,IAAIkf,OAAQX,CAAAA,iBAAiB,CAASqB,QAAAA,CAAS9gB,IAAI,CAAG,EAAA;oBACtCogB,OAAQP,CAAAA,kBAAkB,CAACvF,IAAAA,EAAAA;AAMzC,oBAAA,OAAOA,KAAKnZ,MAAM,CAAA;AACpB,iBAAA,MAAO,IAAIif,OAAQT,CAAAA,eAAe,CAASmB,QAAAA,CAAS9gB,IAAI,CAAG,EAAA;oBAC3CogB,OAAQL,CAAAA,gBAAgB,CAACzF,IAAAA,EAAAA;AAMvC,oBAAA,OAAOA,KAAKnZ,MAAM,CAAA;AACpB,iBAAA,MAAO,IAAIif,OAAQR,CAAAA,WAAW,CAASkB,QAAAA,CAAS9gB,IAAI,CAAG,EAAA;oBACvCogB,OAAQJ,CAAAA,gBAAgB,CAAC1F,IAAAA,EAAAA;AAMvC,oBAAA,OAAOA,KAAKnZ,MAAM,CAAA;AACpB,iBAAA;gBAEA,OAAU2f,SAAS9Q,OAAO,CAAC,IAAI,CAAE,GAAA,GAAA,GAAGsK,KAAKnZ,MAAM,CAAA;aAC1C,MAAA;gBACL,OAAU2f,QAAS9Q,CAAAA,OAAO,CAAC,IAAI,IAAE,GAAGsK,GAAAA,IAAAA,CAAKtK,OAAO,CAAC,IAAI,CAAA,CAAA;AACvD,aAAA;SACK,MAAA,IAAI6Q,qBAAqB,CAAG,EAAA;YACjC,IAAME,SAAAA,GAAYzR,QAAQ,CAAC,CAAE,CAAA,CAAA;YAC7B,IAAM0R,SAAAA,GAAY1R,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC7B,YAAA,IAAM2R,WAAcF,GAAAA,SAAAA,CAAU/Q,OAAO,CAAC,IAAI,CAAA,CAAA;AAC1C,YAAA,IAAMkR,WAAcF,GAAAA,SAAAA,CAAUhR,OAAO,CAAC,IAAI,CAAA,CAAA;AAC1C,YAAA,IAAIiR,gBAAgB,aAAe,EAAA;AACjC,gBAAA,IAAI,CAACE,YAAY,CAACJ,SAAAA,CAAUjgB,QAAQ,EAAE,+CAAA,CAAA,CAAA;AACxC,aAAA;YACA,OAAUmgB,WAAY,GAAA,GAAA,GAAGC,WAAY,GAAA,GAAA,CAAA;AACvC,SAAA;AAEA,QAAA,OAAO,IAAI,CAAChR,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEAiN,IAAAA,MAAAA,CAAAA,uBAMC,GANDA,SAAAA,uBAAAA,CAAwBlP,IAAgC,EAAA;QACtD,IAAiBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKyO,0BAA0B,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAzC7X,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACPya,YAAAA,cAAAA,CAAe0B,OAAO,CAACH,eAAe,CAAChc,IAAAA,EAAM4H,YAAYuQ,GAAG,CAAA,CAAA;AAC9D,SAAA;QAEA,OAAO/O,IAAAA,CAAKmP,SAAS,CAAC,IAAI,CAAA,CAAA;AAC5B,KAAA,CAAA;AAEAvF,IAAAA,MAAAA,CAAAA,iBAqCC,GArCDA,SAAAA,iBAAAA,CAAkB5J,IAA0B,EAAA;AAC1C,QAAA,IAAM+T,IAAO/T,GAAAA,IAAAA,CAAKiC,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC7B,QAAA,IAAI8R,WAAa,CAAbA,IAAKhK,CAAAA,QAAQ,EAAY5K,QAAU,CAAA,EAAA;YACrCkS,cAAe0B,CAAAA,OAAO,CAACH,eAAe,CAACmB,IAAAA,CAAKhK,QAAQ,CAAC1Q,KAAK,EAAEmF,WAAAA,CAAYa,EAAE,CAAA,CAAA;AAE1E,YAAA,IAAM8K,SAAY4J,GAAAA,IAAAA,CAAK9R,QAAQ,CAAC,CAAE,CAAA,CAAA;AAClC,YAAA,IAAIkI,WAAS,CAATA,SAAqBjK,EAAAA,OAAAA,CAAQkK,yBAAyB,CAAE,EAAA;gBAC1D,IAAM4J,QAAAA,GAAW7J,UAAUI,UAAU,CAAA;gBACrC,IAAM0J,aAAAA,GAAgBF,KAAKhK,QAAQ,CAACnL,OAAO,CAACE,SAAS,CAAC0I,aAAa,CAAA;AAEnE,gBAAA,IAAM/R,MAASue,GAAAA,QAAAA,CAAS7c,MAAM,CAAC,SAACvC,CAAG3B,EAAAA,CAAAA,EAAAA;AAChBghB,oBAAAA,IAAAA,gBAAAA,CAAAA;oBAAjB,IAAMtS,QAAAA,GAAWsS,kCAAAA,gBAAAA,GAAAA,aAAe,CAAChhB,CAAE,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAlBghB,iBAAoBtS,QAAQ,CAAA;oBAC7C,OACE,CAACA,QACA,IAAA,CAAC0P,cAAe0B,CAAAA,OAAO,CAACX,iBAAiB,CAACzQ,QAAAA,CAASpD,UAAU,CAAA,IAC5D,CAAC8S,cAAAA,CAAe0B,OAAO,CAACT,eAAe,CAAC3Q,QAASpD,CAAAA,UAAU,CAC3D,IAAA,CAAC8S,cAAe0B,CAAAA,OAAO,CAACR,WAAW,CAAC5Q,QAAAA,CAASpD,UAAU,CAAA,CAAA;AAE7D,iBAAA,CAAA,CAAA;AAEA,gBAAA,IAAI2V,UAAa,GAAA,EAAA,CAAA;gBAEjB,IAAK,IAAIjhB,IAAI,CAAGE,EAAAA,MAAAA,GAASsC,OAAOtC,MAAM,EAAEF,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;oBACvD,IAAM2L,OAAAA,GAAUnJ,MAAM,CAACxC,CAAE,CAAA,CAAA;AACzB,oBAAA,IAAMuP,IAAO5D,GAAAA,OAAAA,CAAQ+D,OAAO,CAAC,IAAI,CAAA,CAAA;AACjC,oBAAA,IAAI/D,WAAAA,CAAAA,OAAAA,EAAmBsB,QAAQwK,iBAAiB,CAAA,IAAIzX,MAAM,CAAG,EAAA;wBAC3DihB,UAAc1R,IAAAA,IAAAA,CAAAA;qBACT,MAAA;AACL0R,wBAAAA,UAAAA,IAAc,IAAK1R,GAAAA,IAAAA,CAAAA;AACrB,qBAAA;AACF,iBAAA;AAEA,gBAAA,OAAO,IAAQuH,CAAAA,QAAQ,CAAC1Q,KAAK,GAAC,MAAG6a,UAAW,GAAA,GAAA,CAAA;AAC9C,aAAA;AACF,SAAA;AAEA,QAAA,OAAO,IAAI,CAACrR,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA6O,IAAAA,MAAAA,CAAAA,sBA0CC,GA1CDA,SAAAA,sBAAAA,CAAuB9Q,IAA+B,EAAA;QACpD,IAAMiC,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAMkI,SAAAA,GAAYlI,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC7B,QAAA,IAAIkI,WAAS,CAATA,SAAqBjK,EAAAA,OAAAA,CAAQkK,yBAAyB,CAAE,EAAA;YAC1D,IAAM4J,QAAAA,GAAW7J,UAAUI,UAAU,CAAA;AAErC,YAAA,IAAM9U,MAASue,GAAAA,QAAAA,CAAS7c,MAAM,CAAC,SAAC6I,IAAAA,EAAAA;AAC9B,gBAAA,IAAIA,WAAI,CAAJA,IAAgBE,EAAAA,OAAAA,CAAQsK,oBAAoB,CAAE,EAAA;AAChD,oBAAA,IAAM2J,gBAAgBnD,WAAYC,CAAAA,gBAAgB,CAChDjR,IAAAA,EACAxD,aAAa4S,mBAAmB,CAAA,CAAA;AAElC,oBAAA,IACE+E,aACA,IAAA,OAAOA,aAAcxS,CAAAA,QAAQ,KAAK,QAAA,KACjC0P,cAAAA,CAAe0B,OAAO,CAACX,iBAAiB,CAAC+B,cAAcxS,QAAQ,CAAA,IAC9D0P,cAAe0B,CAAAA,OAAO,CAACT,eAAe,CAAC6B,aAAAA,CAAcxS,QAAQ,CAC7D0P,IAAAA,cAAAA,CAAe0B,OAAO,CAACR,WAAW,CAAC4B,aAAcxS,CAAAA,QAAQ,CAAA,CAC3D,EAAA;wBACA,OAAO,KAAA,CAAA;AACT,qBAAA;AACF,iBAAA;gBAEA,OAAO,IAAA,CAAA;AACT,aAAA,CAAA,CAAA;AAEA,YAAA,IAAIuS,UAAa,GAAA,EAAA,CAAA;YACjB,IAAK,IAAIjhB,IAAI,CAAGE,EAAAA,MAAAA,GAASsC,OAAOtC,MAAM,EAAEF,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;gBACvD,IAAM+M,MAAAA,GAAOvK,MAAM,CAACxC,CAAE,CAAA,CAAA;AACtB,gBAAA,IAAMuP,IAAOxC,GAAAA,MAAAA,CAAK2C,OAAO,CAAC,IAAI,CAAA,CAAA;AAE9B,gBAAA,IAAI3C,WAAAA,CAAAA,MAAAA,EAAgBE,QAAQwK,iBAAiB,CAAA,IAAIzX,MAAM,CAAG,EAAA;oBACxDihB,UAAc1R,IAAAA,IAAAA,CAAAA;iBACT,MAAA;AACL0R,oBAAAA,UAAAA,IAAc,IAAK1R,GAAAA,IAAAA,CAAAA;AACrB,iBAAA;AACF,aAAA;AAEA,YAAA,OAAO,IAAGxC,CAAK/K,SAAS,GAAC,MAAGif,UAAW,GAAA,GAAA,CAAA;SAClC,MAAA;AACL,YAAA,OAAO,IAAI,CAACrR,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,SAAA;AACF,KAAA,CAAA;AAEAmH,IAAAA,MAAAA,CAAAA,kBAOC,GAPDA,SAAAA,kBAAAA,CAAmBpJ,IAA2B,EAAA;QAC5C,IAAMiC,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAIA,QAAAA,CAAS9O,MAAM,KAAK,CAAG,EAAA;AACzB,YAAA,OAAO8O,QAAQ,CAAC,CAAA,CAAE,CAACU,OAAO,CAAC,IAAI,CAAA,CAAA;SAC1B,MAAA;AACL,YAAA,OAAO,QAAW,CAAC,CAAE,CAAA,CAACA,OAAO,CAAC,IAAI,CAAE,GAAA,IAAA,GAAIV,QAAQ,CAAC,CAAA,CAAE,CAACU,OAAO,CAAC,IAAI,CAAA,CAAA;AAClE,SAAA;AACF,KAAA,CAAA;AAEA0B,IAAAA,MAAAA,CAAAA,sBAMC,GANDA,SAAAA,sBAAAA,CAAuBrE,IAA+B,EAAA;AACpD,QAAA,IAAMrN,IAAOqN,GAAAA,IAAAA,CAAKZ,aAAa,CAACzM,IAAI,CAAA;QACpC,IAAI,OAAOA,SAAS,QAAU,EAAA;AAC5B0e,YAAAA,cAAAA,CAAe0B,OAAO,CAACH,eAAe,CAACjgB,IAAAA,EAAM6L,YAAYe,MAAM,CAAA,CAAA;AACjE,SAAA;AACA,QAAA,OAAO,IAAI,CAACsD,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEAkM,IAAAA,MAAAA,CAAAA,8BAOC,GAPDA,SAAAA,8BAAAA,CAA+BnO,IAAiC,EAAA;QAC9D,IAAMiC,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAMmS,QAAAA,GAAWnS,QAAQ,CAAC,CAAE,CAAA,CAAA;QAC5B,IAAY,WAARmS,CAAAA,QAAAA,EAAoBlU,OAAQqE,CAAAA,kBAAkB,KAAI6P,QAAShV,CAAAA,aAAa,CAAC8F,QAAQ,EAAE;YACrFmM,cAAe0B,CAAAA,OAAO,CAACH,eAAe,CAASwB,SAASzhB,IAAI,EAAE6L,YAAYe,MAAM,CAAA,CAAA;AAClF,SAAA;AACA,QAAA,OAAO,UAAC,GAAU,IAAI,CAACsD,cAAc,CAACZ,QAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AAEAmF,IAAAA,MAAAA,CAAAA,gBAUC,GAVDA,SAAAA,gBAAAA,CAAiBpH,IAAyB,EAAA;QACxC,IAAQ+S,UAAY1B,cAAZ0B,CAAAA,OAAAA,CAAAA;QACR,IAAM9Q,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAMG,KAAAA,GAAQH,QAAQ,CAAC,CAAE,CAAA,CAAA;AAEzB,QAAA,IAAIG,WAAK,CAALA,KAAiBlC,EAAAA,OAAAA,CAAQwG,kBAAkB,CAAE,EAAA;AAC/C,YAAA,IAAMnI,UAAa6D,GAAAA,KAAAA,CAAMT,QAAQ,CAACpD,UAAU,CAAA;YAC5C,IAAIwU,OAAAA,CAAQT,eAAe,CAAC/T,UAAAA,CAAAA,IAAewU,QAAQR,WAAW,CAAChU,aAAa,OAAO,EAAA,CAAA;AACrF,SAAA;QACA,OAAO,IAAI,CAACsE,cAAc,CAACZ,QAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEAoG,IAAAA,MAAAA,CAAAA,0BAsBC,GAtBDA,SAAAA,0BAAAA,CAA2BrI,IAAmC,EAAA;AAC5D,QAAA,IAAMvK,SAASuK,IAAKyH,CAAAA,iBAAiB,CAACtQ,MAAM,CAC1C,SAAClB,IAAAA,EAAAA;AACC,YAAA,OAAA,CAACA,IAAK0L,CAAAA,QAAQ,IACb,CAAC0P,eAAe0B,OAAO,CAACX,iBAAiB,CAACnc,KAAK0L,QAAQ,CAACpD,UAAU,CAAA,IACjE,CAAC8S,cAAe0B,CAAAA,OAAO,CAACT,eAAe,CAACrc,IAAAA,CAAK0L,QAAQ,CAACpD,UAAU,CAChE,IAAA,CAAC8S,cAAe0B,CAAAA,OAAO,CAACR,WAAW,CAACtc,IAAK0L,CAAAA,QAAQ,CAACpD,UAAU,CAAA,CAAA;;AAGlE,QAAA,IAAIrJ,GAAM,GAAA,EAAA,CAAA;QACV,IAAK,IAAIjC,IAAI,CAAGE,EAAAA,MAAAA,GAASsC,OAAOtC,MAAM,EAAEF,CAAIE,GAAAA,MAAAA,EAAQF,CAAK,EAAA,CAAA;YACvD,IAAMgD,IAAAA,GAAOR,MAAM,CAACxC,CAAE,CAAA,CAAA;YACtB,IAAM2L,OAAAA,GAAU3I,KAAK2I,OAAO,CAAA;AAC5B,YAAA,IAAM4D,IAAO5D,GAAAA,OAAAA,CAAQ+D,OAAO,CAAC,IAAI,CAAA,CAAA;AACjC,YAAA,IAAI/D,WAAAA,CAAAA,OAAAA,EAAmBsB,QAAQkI,eAAe,CAAA,IAAInV,MAAM,CAAG,EAAA;gBACzDiC,GAAOsN,IAAAA,IAAAA,CAAAA;aACF,MAAA;AACLtN,gBAAAA,GAAAA,IAAO,IAAKsN,GAAAA,IAAAA,CAAAA;AACd,aAAA;AACF,SAAA;QAEA,OAAOtN,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEA6S,IAAAA,MAAAA,CAAAA,mBAMC,GANDA,SAAAA,mBAAAA,CAAoB/H,IAA4B,EAAA;AAC9C,QAAA,IAAM1G,aAAa0G,IAAK1G,CAAAA,UAAU,CAAC8F,aAAa,CAACtL,MAAM,CAAA;AACvD,QAAA,IAAIud,cAAe0B,CAAAA,OAAO,CAACT,eAAe,CAAChZ,UAAa,CAAA,EAAA;AACtD,YAAA,OAAO,OAAQ0G,GAAAA,IAAAA,CAAK3G,KAAK,CAACvF,MAAM,GAAC,GAAA,CAAA;AACnC,SAAA;AACA,QAAA,OAAO,IAAI,CAAC+O,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEA0B,IAAAA,MAAAA,CAAAA,kBAoBC,GApBDA,SAAAA,kBAAAA,CAAmB3D,IAA2B,EAAA;QAC5C,IAAMiC,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAMoS,GAAAA,GAAMpS,QAAQ,CAAC,CAAE,CAAA,CAAA;AACvB,QAAA,IAAIoS,GAAI1hB,CAAAA,IAAI,KAAKH,OAAAA,CAAQiR,MAAM,EAAE;YAC/B,IAAMgH,IAAAA,GAAOxI,QAAQ,CAAC,CAAE,CAAA,CAAA;AACxB,YAAA,IAAIwI,WAAI,CAAJA,IAAgBvK,EAAAA,OAAAA,CAAQqL,UAAU,CAAE,EAAA;AACtC,gBAAA,IAAM+I,YAAYtD,WAAYC,CAAAA,gBAAgB,CAC5CxG,IAAAA,EACAjO,aAAa4S,mBAAmB,CAAA,CAAA;gBAElC,IAAIiC,cAAAA,CAAe0B,OAAO,CAACT,eAAe,CAASgC,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAW3S,QAAQ,CAAG,EAAA;oBACvE,OAAO,EAAA,CAAA;AACT,iBAAA;AACA,gBAAA,IAAM4S,eAAevD,WAAYC,CAAAA,gBAAgB,CAAuBxG,IAAAA,EAAMjO,aAAaqN,aAAa,CAAA,CAAA;gBACxG,IAAIwH,cAAAA,CAAe0B,OAAO,CAACT,eAAe,CAASiC,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAc5hB,IAAI,CAAG,EAAA;AACtE,oBAAA,OAAO,EAAG8X,GAAAA,IAAAA,CAAK9H,OAAO,CAAC,IAAI,CAAE,GAAA,GAAA,CAAA;AAC/B,iBAAA;AACF,aAAA;AACF,SAAA;QACA,OAAO,IAAI,CAACE,cAAc,CAACZ,QAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEAmJ,IAAAA,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,uBAAAA,CAAwBpL,IAAgC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC6C,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,KAAA,CAAA;AAEAqK,IAAAA,MAAAA,CAAAA,oBA0DC,GA1DDA,SAAAA,oBAAAA,CAAqBtM,IAA6B,EAAA;;QAChD,IAAM+S,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;AACtC,QAAA,IAAQvB,iBAAiDuB,OAAjDvB,CAAAA,cAAAA,EAAgBF,mBAAiCyB,OAAjCzB,CAAAA,gBAAAA,EAAkBI,aAAeqB,OAAfrB,CAAAA,UAAAA,CAAAA;AAC1C,QAAA,IAAMY,eAAkBd,GAAAA,cAAAA,CAAe9b,OAAO,CAACsK,UAAU,CAAC,CAAA,CAAA;AAC1D,QAAA,IAAMoS,iBAAoBd,GAAAA,gBAAAA,CAAiB5b,OAAO,CAACsK,UAAU,CAAC,CAAA,CAAA;AAC9D,QAAA,IAAMuS,WAAcb,GAAAA,UAAAA,CAAWhc,OAAO,CAACsK,UAAU,CAAC,CAAA,CAAA;AAElD,QAAA,IAAIsS,mBAAmBF,iBAAmB,EAAA;AACxC,YAAA,IAAI,CAAC0B,YAAY,CAAC9T,IAAAA,CAAKvM,QAAQ,EAAE,iDAAA,CAAA,CAAA;AACnC,SAAA;AAEA,QAAA,IAAI6e,mBAAmBC,WAAa,EAAA;AAClC,YAAA,IAAI,CAACuB,YAAY,CAAC9T,IAAAA,CAAKvM,QAAQ,EAAE,2CAAA,CAAA,CAAA;AACnC,SAAA;AAEA,QAAA,IAAI2e,qBAAqBG,WAAa,EAAA;AACpC,YAAA,IAAI,CAACuB,YAAY,CAAC9T,IAAAA,CAAKvM,QAAQ,EAAE,6CAAA,CAAA,CAAA;AACnC,SAAA;QAEA,IAAI6e,eAAAA,IAAmBF,qBAAqBG,WAAa,EAAA;AAGvD3U,YAAAA,IAAAA,OAAAA,CAAAA;AAFA,YAAA,IAAIA,SAAyB,EAAE,CAAA;YAE/BA,CAAAA,OAAAA,GAAAA,MAAO7K,EAAAA,IAAI,CAAX6K,KAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CACKoC,KAAKqM,gBAAgB,CAACpV,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAAU,gBAAA,OAAA;oBACtCue,IAAMve,EAAI,YAAJA,IAAgBpC,EAAAA,SAAAA,CAAAA,GAAYoC,KAAKnC,MAAM,GAAGmC,KAAK0M,OAAO,CAAA,KAAA,CAAA;AAC5DtQ,oBAAAA,KAAAA,EAAO4D,IAAKxC,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AAClC,iBAAA,CAAA;;YAGF,IAAmB2N,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKoM,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvBa,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AAEc8F,gBAAAA,IAAAA,oCAAAA,EAKSA,sCAKNA,EAAAA,gCAAAA,CAAAA;AAX1B,gBAAA,IAAMnc,IAAOqW,GAAAA,IAAAA,CAAK5T,KAAK,CAACvF,MAAM,CAAA;AAC9B,gBAAA,IAAIwe,eAAmBS,IAAAA,CAAAA,CAAAA,oCAAAA,GAAAA,OAAAA,CAAQd,sBAAsB,CAACrb,IAAK,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAApCmc,oCAAsCrd,CAAAA,OAAO,CAACuX,IAAAA,CAAAA,KAAS,CAAG,EAAA;AAC/ErP,oBAAAA,MAAAA,CAAO7K,IAAI,CAAC;AACVyhB,wBAAAA,IAAAA,EAAM,EAAG,GAAA,IAAI,CAACC,cAAc,CAACxH,IAAM,CAAA,GAAA,IAAA;AACnC5a,wBAAAA,KAAAA,EAAO4a,KAAK5T,KAAK,CAAC5F,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACxC,qBAAA,CAAA,CAAA;AACF,iBAAA,MAAO,IAAI+f,iBAAAA,IAAqBW,CAAAA,CAAAA,sCAAAA,GAAAA,OAAQjB,CAAAA,wBAAwB,CAAClb,IAAAA,CAAK,KAAtCmc,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sCAAAA,CAAwCrd,OAAO,CAACuX,UAAS,CAAG,EAAA;AAC1FrP,oBAAAA,MAAAA,CAAO7K,IAAI,CAAC;AACVyhB,wBAAAA,IAAAA,EAAM,EAAG,GAAA,IAAI,CAACE,gBAAgB,CAACzH,IAAM,CAAA,GAAA,IAAA;AACrC5a,wBAAAA,KAAAA,EAAO4a,KAAK5T,KAAK,CAAC5F,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACxC,qBAAA,CAAA,CAAA;AACF,iBAAA,MAAO,IAAIkgB,WAAAA,IAAeQ,CAAAA,CAAAA,gCAAAA,GAAAA,OAAQb,CAAAA,kBAAkB,CAACtb,IAAAA,CAAK,KAAhCmc,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gCAAAA,CAAkCrd,OAAO,CAACuX,UAAS,CAAG,EAAA;AAC9ErP,oBAAAA,MAAAA,CAAO7K,IAAI,CAAC;AACVyhB,wBAAAA,IAAAA,EAAM,EAAG,GAAA,IAAI,CAACG,UAAU,CAAC1H,IAAM,CAAA,GAAA,IAAA;AAC/B5a,wBAAAA,KAAAA,EAAO4a,KAAK5T,KAAK,CAAC5F,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACxC,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA;AAEA,YAAA,IAAMmiB,IAAO5W,GAAAA,MAAAA,CACVgX,IAAI,CAAC,SAACjP,CAAGC,EAAAA,CAAAA,EAAAA;uBAAMD,CAAEtT,CAAAA,KAAK,GAAGuT,CAAAA,CAAEvT,KAAK,CAAA;AAChC4E,aAAAA,CAAAA,CAAAA,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,gBAAAA,OAAAA,IAAAA,CAAKue,IAAI,CAAA;AACvBjB,aAAAA,CAAAA,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA;YAER,OAAOiB,IAAAA,CAAAA;SACF,MAAA;AACL,YAAA,OAAO,IAAI,CAAC3R,cAAc,CAAC7C,KAAKiC,QAAQ,CAAA,CAAA;AAC1C,SAAA;AACF,KAAA,CAAA;AAEAwH,IAAAA,MAAAA,CAAAA,uBAUC,GAVDA,SAAAA,uBAAAA,CAAwBoL,MAAkC,EAAA;AACxD,QAAA,IAAMC,SAASD,MAAO/V,CAAAA,SAAS,CAACzF,KAAK,CAACvF,MAAM,CAAA;QAC5C,IAAMif,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;QAEtC,IAAI+B,MAAAA,IAAU/B,OAAQgC,CAAAA,UAAU,EAAE;AAChC,YAAA,IAAMxL,aAAasL,MAAOtL,CAAAA,UAAU,CAAC5G,OAAO,CAAC,IAAI,CAAA,CAAA;AACjD,YAAA,OAAO,cAAe4G,GAAAA,UAAAA,CAAAA;SACjB,MAAA;AACL,YAAA,OAAO,IAAI,CAAC1G,cAAc,CAACgS,OAAO5S,QAAQ,CAAA,CAAA;AAC5C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAU6R,YAMT,GAND,SAAUA,YAAa5S,CAAAA,GAAiC,EAAE5N,OAAe,EAAA;AAIvEK,QAAAA,aAAAA,CAAOC,KAAK,CAACN,OAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAA;AAzVoB6f,IAAAA,OAAAA,cAAAA,CAAAA;AA0VrB,CAAA,EAAA,CAAA;AA1VqBA,cASHC,CAAAA,aAAAA,GAAgB,IAAI4B,2BAAAA,CAAqBhC,SAAmB,EAAA,EAAA,CAAA;;ACpB/E;;IAGO,IAAeiC,WAAf,iBAAA,SAAA,cAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;AACZC,QAAAA,KAAAA,GAAAA,cAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,gBAAAA,GAAmC,EAAE,CAAA;;;AADzBD,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IAKpBtU,MAAAA,CAAAA,KAIC,GAJDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAA8C,KAAA,GAAA,IAAI,EAAxBwU,kBAAoB,KAAtCD,CAAAA,gBAAAA,CAAAA;AACRC,QAAAA,eAAAA,CAAgBhiB,MAAM,GAAG,CAAA,CAAA;QAPP8hB,WAQNG,CAAAA,oBAAoB,CAAChiB,KAAK,EAAA,CAAA;AACxC,KAAA,CAAA;AAEAiiB,IAAAA,MAAAA,CAAAA,cAIC,GAJDA,SAAAA,cAAeC,CAAAA,IAAgB,EAAEpgB,GAAmB,EAAA;QAClD,IAAwBogB,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKzV,gBAAgB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApC0V,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTrgB,YAAAA,GAAAA,CAAInC,IAAI,CAAC;gBAAEyhB,IAAMe,EAAAA,SAAAA,CAAU5S,OAAO,CAAC,IAAI,CAAA;AAAGtQ,gBAAAA,KAAAA,EAAOkjB,SAAU9hB,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AAAC,aAAA,CAAA,CAAA;AAClF,SAAA;AACF,KAAA,CAAA;IAEAmjB,MAAAA,CAAAA,kBAgBC,GAhBDA,SAAAA,kBAAAA,CAAmBxV,IAA6B,EAAEyV,WAAmB,EAAEC,aAAqB,EAAA;AAI1FrE,QAAAA,cAAAA,CAAe1Q,KAAK,EAAA,CAAA;AACpB,QAAA,IAAI,CAACA,KAAK,EAAA,CAAA;QAEV,IAAMW,UAAAA,GAAatB,KAAKsB,UAAU,CAAA;AAClC+P,QAAAA,cAAAA,CAAe0B,OAAO,CAACF,gBAAgB,GAAGvR,WAAW3D,WAAW,CAAA;QAEhE,IAAMgY,4BAAAA,GAA+BrU,WAAWvB,+BAA+B,EAAA,CAAA;QAE/E,OAAO;AACL6V,YAAAA,MAAAA,EAAQ,IAAI,CAACC,WAAW,CAACJ,aAAanU,UAAYqU,EAAAA,4BAAAA,CAAAA;AAClDG,YAAAA,QAAAA,EAAU,IAAI,CAACC,aAAa,CAACL,eAAepU,UAAYqU,EAAAA,4BAAAA,CAAAA;AAC1D,SAAA,CAAA;AACF,KAAA,CAAA;IAEA,MAAQE,CAAAA,WAgFP,GAhFD,SAAQA,WAAAA,CACN/Y,KAAa,EACbwY,IAAgB,EAChBK,4BAAyD,EAAA;;QAEzD,IAAM5C,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;QACtCA,OAAQiD,CAAAA,KAAK,GAAGhd,YAAAA,CAAasD,MAAM,CAAA;AACnCyW,QAAAA,OAAAA,CAAQgC,UAAU,GAAGjY,KAAAA,CAAAA;QAErB,IAAMuN,YAAAA,GAAe4K,WA5CHA,CA4Ce1T,aAAa,CAAA;QAC9C,IAAM5D,WAAAA,GAAc2X,KAAK3X,WAAW,CAAA;AACpC0M,QAAAA,YAAAA,CAAarY,GAAG,CAAC8K,KAAO0B,EAAAA,WAAAA,CAAYa,EAAE,CAAA,CAAA;AACtC,QAAA,IAAM4W,YAAwBtY,WAAYT,CAAAA,UAAU,CAACmN,YAAAA,EAAc,MAAM,EAAE,CAAA,CAAA;AAC3E,QAAA,IAAI,CAAC4L,SAAU9iB,CAAAA,MAAM,EAAE,MAAM,2BAA4B2J,GAAAA,KAAAA,CAAAA;QAEzD,IAAQwU,gBAAAA,GAAiEyB,OAAjEzB,CAAAA,gBAAAA,EAAkBC,aAA+CwB,GAAAA,OAAAA,CAA/CxB,eAAeC,cAAgCuB,GAAAA,OAAAA,CAAhCvB,cAAgBC,EAAAA,WAAAA,GAAgBsB,OAAhBtB,CAAAA,WAAAA,CAAAA;QACzDwE,SAAUC,CAAAA,OAAO,CAAC,SAACnM,QAAAA,EAAAA;YACjB,IAAM8K,MAAAA,GAAS9K,SAASnL,OAAO,CAAA;AAC/B,YAAA,IAAMtF,UAAaub,GAAAA,MAAAA,CAAO/V,SAAS,CAACxF,UAAU,CAAA;AAE9C,YAAA,IAAI,OAAOA,UAAAA,CAAW3G,IAAI,KAAK,QAAU,EAAA;AACvC0X,gBAAAA,YAAAA,CAAarY,GAAG,CAACsH,UAAAA,CAAW3G,IAAI,EAAE6L,YAAYe,MAAM,CAAA,CAAA;AACpD,gBAAA,IAAM4W,iBAAiCxY,WAAYT,CAAAA,UAAU,CAACmN,YAAAA,EAAc,MAAM,EAAE,CAAA,CAAA;gBACpF,IAAI,CAAC8L,cAAehjB,CAAAA,MAAM,EAAE;oBAC1B,KAAK2gB,CAAAA,YAAY,CAACxa,UAAW7F,CAAAA,QAAQ,EAAE,2BAAC,GAA2B6F,UAAW3G,CAAAA,IAAI,GAAC,IAAA,CAAA,CAAA;iBAC9E,MAAA;AACL,oBAAA,IAAK,IAAIM,CAAI,GAAA,CAAA,EAAGA,IAAIkjB,cAAehjB,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;wBAC9C,IAAMmjB,aAAAA,GAAgBD,cAAc,CAACljB,CAAE,CAAA,CAAA;wBACvC,IAAM2L,OAAAA,GAAUwX,cAAcxX,OAAO,CAAA;AACrC4S,wBAAAA,cAAAA,CAAeze,IAAI,CAAC6L,OAAAA,CAAAA,CAAAA;wBACpB,IAAmBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,OAAAA,CAAQwN,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1Ba,4BAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTwE,4BAAAA,WAAAA,CAAY1e,IAAI,CAACka,IAAAA,CAAAA,CAAAA;AACnB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,MAAO,IAAI3T,UAAW3G,CAAAA,IAAI,KAAKH,OAAAA,CAAQgX,IAAI,EAAE;AAC3C,gBAAA,KAAA,CAAKsK,YAAY,CAACxa,UAAW7F,CAAAA,QAAQ,EAAE,mDAAA,CAAA,CAAA;AACzC,aAAA;AAEA,YAAA,IAAM0W,SAAY0K,GAAAA,MAAAA,CAAO/V,SAAS,CAAC0I,aAAa,CAAA;AAChD,YAAA,IAAM6O,cAAiBlM,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAW,CAAC,CAAE,CAAA,CAAA;AACrC,YAAA,IAAIkM,cAAgB,EAAA;AAClB,gBAAA,IAAMC,aAAgBD,GAAAA,cAAAA,CAAe1U,QAAQ,CAAChP,IAAI,CAAA;gBAClD,IAAI,OAAO2jB,kBAAkB,QAAU,EAAA;AACrCjM,oBAAAA,YAAAA,CAAarY,GAAG,CAACskB,aAAe9X,EAAAA,WAAAA,CAAYe,MAAM,CAAA,CAAA;AAClD,oBAAA,IAAMgX,mBAAmC5Y,WAAYT,CAAAA,UAAU,CAACmN,YAAAA,EAAc,MAAM,EAAE,CAAA,CAAA;oBACtF,IAAI,CAACkM,gBAAiBpjB,CAAAA,MAAM,EAAE;wBAC5B,KAAK2gB,CAAAA,YAAY,CAACuC,cAAezX,CAAAA,OAAO,CAACnL,QAAQ,EAAE,6BAAC,GAA6B6iB,aAAc,GAAA,IAAA,CAAA,CAAA;qBAC1F,MAAA;AACL,wBAAA,IAAK,IAAIrjB,EAAI,GAAA,CAAA,EAAGA,KAAIsjB,gBAAiBpjB,CAAAA,MAAM,EAAEF,EAAK,EAAA,CAAA;4BAChD,IAAMujB,eAAAA,GAAkBD,gBAAgB,CAACtjB,EAAE,CAAA,CAAA;4BAC3C,IAAM2L,QAAAA,GAAU4X,gBAAgB5X,OAAO,CAAA;AACvC0S,4BAAAA,gBAAAA,CAAiBve,IAAI,CAAC6L,QAAAA,CAAAA,CAAAA;4BACtB,IAAmBA,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAAQwN,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA1Ba,gCAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTsE,gCAAAA,aAAAA,CAAcxe,IAAI,CAACka,KAAAA,CAAAA,CAAAA;AACrB,6BAAA;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAA,CAAA;QAEA,IAAMkI,eAAAA,GAAkB,IAAI,CAACD,gBAAgB,CAAA;AAC7C7D,QAAAA,cAAAA,CAAe0B,OAAO,CAACH,eAAe,CAAC9V,KAAAA,EAAO0B,YAAYa,EAAE,CAAA,CAAA;QAE5D,IAAI,CAACoX,gBAAgB,CAACtB,eAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAI,CAACuB,gBAAgB,CAAC3D,OAAAA,CAAQzB,gBAAgB,EAAE6D,eAAAA,CAAAA,CAAAA;AAChD,QAAA,IAAI,CAACuB,gBAAgB,CAAC3D,OAAAA,CAAQvB,cAAc,EAAE2D,eAAAA,CAAAA,CAAAA;QAC9C,IAAI,CAACwB,2BAA2B,CAAChB,4BAA8BR,EAAAA,eAAAA,CAAAA,CAAAA;QAC/D,IAAI,CAACE,cAAc,CAACC,IAAMH,EAAAA,eAAAA,CAAAA,CAAAA;AAE1B,QAAA,IAAMyB,UAAazB,GAAAA,eAAAA,CAChBP,IAAI,CAAC,SAACjP,CAAGC,EAAAA,CAAAA,EAAAA;mBAAMD,CAAEtT,CAAAA,KAAK,GAAGuT,CAAAA,CAAEvT,KAAK,CAAA;AAChC4E,SAAAA,CAAAA,CAAAA,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAKue,IAAI,CAAA;AACvBjB,SAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;QAERlC,cAAe0B,CAAAA,OAAO,CAACpS,KAAK,CAAC,KAAA,CAAA,CAAA;AAC7B,QAAA,IAAI,CAACA,KAAK,EAAA,CAAA;QAEV,OAAOiW,UAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQb,CAAAA,aA8DP,GA9DD,SAAQA,aAAAA,CACNjZ,KAAa,EACbwY,IAAgB,EAChBuB,0BAAuD,EAAA;;QAEvD,IAAM9D,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;QACtCA,OAAQiD,CAAAA,KAAK,GAAGhd,YAAAA,CAAaiD,QAAQ,CAAA;AACrC8W,QAAAA,OAAAA,CAAQgC,UAAU,GAAGjY,KAAAA,CAAAA;QAErB,IAAMuN,YAAAA,GAAe4K,WA9HHA,CA8He1T,aAAa,CAAA;QAC9C,IAAQ5D,cAAgB2X,IAAhB3X,CAAAA,WAAAA,CAAAA;AACR0M,QAAAA,YAAAA,CAAarY,GAAG,CAAC8K,KAAO0B,EAAAA,WAAAA,CAAYa,EAAE,CAAA,CAAA;AACtC,QAAA,IAAM4W,YAAwBtY,WAAYT,CAAAA,UAAU,CAACmN,YAAAA,EAAc,MAAM,EAAE,CAAA,CAAA;AAC3E,QAAA,IAAI,EAAC4L,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAW9iB,MAAM,CAAE,EAAA,MAAM,2BAA4B2J,GAAAA,KAAAA,CAAAA;QAE1DmZ,SAAUC,CAAAA,OAAO,CAAC,SAACnM,QAAAA,EAAAA;YACjB,IAAM8K,MAAAA,GAAS9K,SAASnL,OAAO,CAAA;YAC/B,IAAQ8E,kBAAoBmR,MAApBnR,CAAAA,eAAAA,CAAAA;AAER,YAAA,IAAIA,eAAiB,EAAA;AACnBA,gBAAAA,eAAAA,CAAgBF,qBAAqB,GAAG,IAAA,CAAA;AAC1C,aAAA;AAEA,YAAA,IAA2DqR,4BAAAA,GAAAA,MAAAA,CAAO/V,SAAS,CAACxF,UAAU,EAA9E3G,cAAMmkB,GAA6CjC,4BAAnDliB,CAAAA,IAAAA,EAAsBc,cAAUsjB,GAAmBlC,4BAA7BphB,CAAAA,QAAAA,CAAAA;YAC9B,IAAI,OAAOqjB,mBAAmB,QAAU,EAAA;AACtCzM,gBAAAA,YAAAA,CAAarY,GAAG,CAAC8kB,cAAgBtY,EAAAA,WAAAA,CAAYe,MAAM,CAAA,CAAA;AACnD,gBAAA,IAAMyX,aAA6BrZ,WAAYT,CAAAA,UAAU,CAACmN,YAAAA,EAAc,MAAM,EAAE,CAAA,CAAA;gBAChF,IAAI,CAAC2M,UAAW7jB,CAAAA,MAAM,EAAE;AACtB,oBAAA,KAAA,CAAK2gB,YAAY,CAACiD,cAAgB,EAAC,sBAAsBD,GAAAA,cAAAA,CAAAA,CAAAA;iBACpD,MAAA;AACL,oBAAA,IAAK,IAAI7jB,CAAI,GAAA,CAAA,EAAGA,IAAI+jB,UAAW7jB,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;wBAC1C,IAAMgkB,SAAAA,GAAYD,UAAU,CAAC/jB,CAAE,CAAA,CAAA;wBAC/B,IAAM2L,OAAAA,GAAUqY,UAAUrY,OAAO,CAAA;wBACjCmU,OAAQrB,CAAAA,UAAU,CAAC3e,IAAI,CAAC6L,OAAAA,CAAAA,CAAAA;wBACxB,IAAmBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,OAAAA,CAAQwN,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1Ba,4BAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;4BACT8F,OAAQpB,CAAAA,OAAO,CAAC5e,IAAI,CAACka,IAAAA,CAAAA,CAAAA;AACvB,yBAAA;AACF,qBAAA;AACF,iBAAA;aACK,MAAA,IAAI6J,mBAAmBtkB,OAAQgX,CAAAA,IAAI,IAAIsN,cAAmBtkB,KAAAA,OAAAA,CAAQyI,IAAI,EAAE;gBAC7E,KAAK6Y,CAAAA,YAAY,CAACiD,cAAgB,EAAA,qDAAA,CAAA,CAAA;AACpC,aAAA;AACF,SAAA,CAAA,CAAA;QAEA,IAAM5B,eAAAA,GAAkB,IAAI,CAACD,gBAAgB,CAAA;AAC7C7D,QAAAA,cAAAA,CAAe0B,OAAO,CAACH,eAAe,CAAC9V,KAAAA,EAAO0B,YAAYa,EAAE,CAAA,CAAA;QAE5D,IAAI,CAACoX,gBAAgB,CAACtB,eAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAI,CAACuB,gBAAgB,CAAC3D,OAAAA,CAAQvB,cAAc,EAAE2D,eAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI,CAACuB,gBAAgB,CAAC3D,OAAAA,CAAQrB,UAAU,EAAEyD,eAAAA,CAAAA,CAAAA;QAC1C,IAAI,CAACwB,2BAA2B,CAACE,0BAA4B1B,EAAAA,eAAAA,CAAAA,CAAAA;QAC7D,IAAI,CAACE,cAAc,CAACC,IAAMH,EAAAA,eAAAA,CAAAA,CAAAA;AAE1B,QAAA,IAAMyB,UAAazB,GAAAA,eAAAA,CAChBP,IAAI,CAAC,SAACjP,CAAGC,EAAAA,CAAAA,EAAAA;mBAAMD,CAAEtT,CAAAA,KAAK,GAAGuT,CAAAA,CAAEvT,KAAK,CAAA;AAChC4E,SAAAA,CAAAA,CAAAA,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAKue,IAAI,CAAA;AACvBjB,SAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AAERR,QAAAA,OAAAA,CAAQpS,KAAK,EAAA,CAAA;AACb,QAAA,IAAI,CAACA,KAAK,EAAA,CAAA;QAEV,OAAOiW,UAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQH,gBA0BP,GA1BD,SAAQA,gBAAAA,CAAiBvhB,GAAmB,EAAA;AAC1C,QAAA,IAAM,kBAAEid,GAAuBd,cAAe0B,CAAAA,OAAO,CAA7CZ,kBAAAA,CAAAA;AAER,QAAA,IAAM+E,UAAanF,GAAAA,MAAAA,CAAOoF,IAAI,CAAChF,oBAAoBhf,MAAM,CAAA;AACzD,QAAA,IAAI+jB,eAAe,CAAG,EAAA,OAAA;QAEtB,IAAK,IAAM7d,SAAS8Y,kBAAoB,CAAA;AACtC,YAAA,IAAI8C,WAAYG,CAAAA,oBAAoB,CAAC5c,GAAG,CAACa,KAAQ,CAAA,EAAA,SAAA;YA5LjC4b,WA6LJG,CAAAA,oBAAoB,CAAC1c,GAAG,CAACW,KAAAA,CAAAA,CAAAA;YAErC,IAAMsV,OAAAA,GAAUwD,kBAAkB,CAAC9Y,KAAM,CAAA,CAAA;AACzC,YAAA,IAAK,IAAIpG,CAAI,GAAA,CAAA,EAAGA,IAAI0b,OAAQxb,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;gBACvC,IAAMkR,EAAAA,GAAKwK,OAAO,CAAC1b,CAAE,CAAA,CAAA;AACrB,gBAAA,IAAMuhB,OAAOrQ,EAAGvF,CAAAA,OAAO,CAAC+D,OAAO,CAAC,IAAI,CAAA,IAAKwB,EAAAA,CAAGxR,IAAI,KAAK6L,WAAAA,CAAYmB,GAAG,GAAG,MAAM,EAAC,CAAA,CAAA;gBAC9E,IAAI,CAACwE,EAAGtH,CAAAA,eAAe,EAAE;AACvB3H,oBAAAA,GAAAA,CAAInC,IAAI,CAAC;wBACPyhB,IAAAA,EAAAA,IAAAA;AACAniB,wBAAAA,KAAAA,EAAO8R,GAAGvF,OAAO,CAACnL,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACxC,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAI0f,OAAOoF,IAAI,CAAChF,kBAAoBhf,CAAAA,CAAAA,MAAM,KAAK+jB,UAAY,EAAA;YACzD,IAAI,CAACT,gBAAgB,CAACvhB,GAAAA,CAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQwhB,gBAQP,GARD,SAAQA,gBAAiBU,CAAAA,WAAsC,EAAEliB,GAAmB,EAAA;AAClF,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBkiB,WAAa,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBpX,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMwU,IAAOxU,GAAAA,IAAAA,CAAK2C,OAAO,CAAC,IAAI,CAAA,CAAA;YAE9B,IAAI,CAAC3C,IAAKnD,CAAAA,eAAe,EAAE;AACzB3H,gBAAAA,GAAAA,CAAInC,IAAI,CAAC;oBAAEyhB,IAAAA,EAAAA,IAAAA;AAAMniB,oBAAAA,KAAAA,EAAO2N,IAAKvM,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AAAC,iBAAA,CAAA,CAAA;AACpD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQskB,2BA0CP,GA1CD,SAAQA,2BAA4BU,CAAAA,MAAmC,EAAEniB,GAAmB,EAAA;;QAC1F,IAAM6d,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;QACtC,IAAMuE,iBAAAA,GAAoBvE,QAAQZ,kBAAkB,CAAA;QACpD,IAAMoF,yBAAAA,GAA4BxE,QAAQnB,0BAA0B,CAAA;AACpE2F,QAAAA,yBAAAA,CAA0BpkB,MAAM,GAAG,CAAA,CAAA;QAEnC,IAAsB4e,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOyF,MAAM,CAACF,iBAAoB,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7C3I,YAAAA,IAAAA,OAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAqBA,OAAS,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAnB/R,gBAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAIA,MAAAA,CAAOC,eAAe,EAAE;oBAC1B0a,yBAA0BxkB,CAAAA,IAAI,CAAC6J,MAAAA,CAAOgC,OAAO,CAAA,CAAA;AAC/C,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAoByY,MAAQ,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAjBI,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIjD,OAAAA,KAAAA,CAAAA,CAAAA;AACJ,YAAA,IAAMpS,KAAQqV,GAAAA,KAAAA,CAAMxV,QAAQ,CAAC,CAAE,CAAA,CAAA;AAE/B,YAAA,IAAIG,WAAK,CAALA,KAAiBlC,EAAAA,OAAAA,CAAQsP,sBAAsB,CAAE,EAAA;AAEnD5R,gBAAAA,IAAAA,OAAAA,CAAAA;AADA,gBAAA,IAAIA,SAAyB,EAAE,CAAA;gBAC/BA,CAAAA,OAAAA,GAAAA,MAAO7K,EAAAA,IAAI,CAAX6K,KAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CACK6Z,MAAMpL,gBAAgB,CAACpV,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAAU,oBAAA,OAAA;wBACvCue,IAAMve,EAAI,YAAJA,IAAgBpC,EAAAA,SAAAA,CAAAA,GAAYoC,KAAKnC,MAAM,GAAGmC,KAAK0M,OAAO,CAAA,KAAA,CAAA;AAC5DtQ,wBAAAA,KAAAA,EAAO4D,IAAKxC,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AAClC,qBAAA,CAAA;;gBAGF,IAAI,CAACqlB,4BAA4B,CAACtV,KAAOxE,EAAAA,MAAAA,CAAAA,CAAAA;AAEzC4W,gBAAAA,IAAAA,GAAO5W,MACJgX,CAAAA,IAAI,CAAC,SAACjP,CAAGC,EAAAA,CAAAA,EAAAA;2BAAMD,CAAEtT,CAAAA,KAAK,GAAGuT,CAAAA,CAAEvT,KAAK,CAAA;AAChC4E,iBAAAA,CAAAA,CAAAA,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,oBAAAA,OAAAA,IAAAA,CAAKue,IAAI,CAAA;AACvBjB,iBAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;aACH,MAAA;gBACLiB,IAAOiD,GAAAA,KAAAA,CAAM9U,OAAO,CAAC,IAAI,CAAA,CAAA;AAC3B,aAAA;AAEAzN,YAAAA,GAAAA,CAAInC,IAAI,CAAC;gBACPyhB,IAAAA,EAAAA,IAAAA;AACAniB,gBAAAA,KAAAA,EAAOolB,KAAMhkB,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACnC,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQqlB,4BA+CP,GA/CD,SAAQA,4BAA6B1X,CAAAA,IAAc,EAAE9K,GAAmB,EAAA;QACtE,IAAM+M,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;AAC9B,QAAA,IAAK,IAAIhP,CAAI,GAAA,CAAA,EAAGA,IAAIgP,QAAS9O,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;YACxC,IAAMmP,KAAAA,GAAQH,QAAQ,CAAChP,CAAE,CAAA,CAAA;AACzB,YAAA,IAAImP,WAAK,CAALA,KAAiBlC,EAAAA,OAAAA,CAAQ+K,kBAAkB,CAAE,EAAA;AAC/C/V,gBAAAA,GAAAA,CAAInC,IAAI,CAAC;oBACPyhB,IAAMpS,EAAAA,KAAAA,CAAMO,OAAO,CAAC,IAAI,CAAA;AACxBtQ,oBAAAA,KAAAA,EAAO+P,KAAM3O,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACnC,iBAAA,CAAA,CAAA;AACF,aAAA,MAAO,IAAI+P,WAAK,CAALA,KAAiBlC,EAAAA,OAAAA,CAAQoJ,kBAAkB,CAAE,EAAA;gBACtD,IAAI+H,cAAAA,CAAe0B,OAAO,CAACnB,0BAA0B,CAAClc,OAAO,CAAC0M,KAAW,CAAA,KAAA,CAAC,CAAG,EAAA;AAC3ElN,oBAAAA,GAAAA,CAAInC,IAAI,CAAC;AACPyhB,wBAAAA,IAAAA,EAAMpS,MAAMM,QAAQ,EAAA;AACpBrQ,wBAAAA,KAAAA,EAAO+P,KAAM3O,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACnC,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA,MAAO,IAAI+P,WAAK,CAALA,KAAiBlC,EAAAA,OAAAA,CAAQiM,eAAe,CAAE,EAAA;AAMnB/J,gBAAAA,IAAAA,YAAAA,EAAgDA,eAClDA,aAA4CA,EAAAA,aAAAA,CAAAA;gBAN1E,IAAM2Q,OAAAA,GAAU1B,eAAe0B,OAAO,CAAA;gBACtC,IAAMiD,KAAAA,GAAQjD,QAAQiD,KAAK,CAAA;gBAC3B,IACE3E,cAAAA,CAAe0B,OAAO,CAACnB,0BAA0B,CAAClc,OAAO,CAAC0M,KAAAA,CAAAA,KAAW,CAAC,CAAA,KACrE4T,KAAAA,KAAUhd,aAAasD,MAAM,GAC1ByW,OAAQX,CAAAA,iBAAiB,CAAChQ,CAAAA,YAAAA,GAAAA,KAAM/I,CAAAA,KAAK,KAAX+I,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAatO,MAAM,CAAA,IAAKif,OAAQT,CAAAA,eAAe,EAAClQ,aAAAA,GAAAA,KAAAA,CAAM/I,KAAK,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX+I,aAAatO,CAAAA,MAAM,CAC7Fif,GAAAA,OAAAA,CAAQT,eAAe,CAAA,CAAClQ,aAAAA,GAAAA,KAAAA,CAAM/I,KAAK,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX+I,cAAatO,MAAM,CAAA,IAAKif,OAAQR,CAAAA,WAAW,CAACnQ,CAAAA,aAAAA,GAAAA,KAAM/I,CAAAA,KAAK,KAAX+I,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAatO,MAAM,CAAA,CAC3F,EAAA;AACAoB,oBAAAA,GAAAA,CAAInC,IAAI,CAAC;AACPyhB,wBAAAA,IAAAA,EAAMpS,MAAMM,QAAQ,EAAA;AACpBrQ,wBAAAA,KAAAA,EAAO+P,KAAM3O,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACnC,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA,MAAO,IAAI+P,WAAK,CAALA,KAAiBlC,EAAAA,OAAAA,CAAQmO,uBAAuB,CAAE,EAAA;gBAC3D,IAAMC,oBAAAA,GAAuBlM,MAAMkM,oBAAoB,CAAA;AACvD,gBAAA,IAAK,IAAIrb,EAAI,GAAA,CAAA,EAAGA,KAAIqb,oBAAqBnb,CAAAA,MAAM,EAAEF,EAAK,EAAA,CAAA;oBACpD,IAAM0kB,mBAAAA,GAAsBrJ,oBAAoB,CAACrb,EAAE,CAAA,CAAA;oBACnD,IAAIoe,cAAAA,CAAe0B,OAAO,CAACnB,0BAA0B,CAAClc,OAAO,CAACiiB,mBAAyB,CAAA,KAAA,CAAC,CAAG,EAAA;AACzFziB,wBAAAA,GAAAA,CAAInC,IAAI,CAAC;4BACPyhB,IAAMmD,EAAAA,mBAAAA,CAAoBjV,QAAQ,EAAK,GAAA,GAAA;AACvCrQ,4BAAAA,KAAAA,EAAOslB,mBAAoBlkB,CAAAA,QAAQ,CAACxB,KAAK,CAACI,KAAK;AACjD,yBAAA,CAAA,CAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YAEA,IAAS,WAAL+P,CAAAA,KAAAA,EAAiBJ,QAAU,CAAA,EAAA;gBAC7B,IAAI,CAAC0V,4BAA4B,CAACtV,KAAOlN,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAtToB+f,IAAAA,OAAAA,WAAAA,CAAAA;EAAoB9B,cAuTzC,CAAA,CAAA;AAvTqB8B,WAEL1T,CAAAA,aAAAA,GAA4B,IAAI9C,UAAAA,CAAW,EAAI,EAAA,IAAA,CAAA,CAAA;AAF1CwW,WAAAA,CAGLG,uBAAuB,IAAIrc,GAAAA,EAAAA;;ACXrC,IAAA,cAAA,iBAAA,SAAA,WAAA,EAAA;AAAM6e,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AASX,IAAA,MAAA,CAASlD,gBAER,GAFD,SAASA,gBAAAA,CAAiBzH,IAAgB,EAAA;AACxC,QAAA,OAAO,YAAC,GAAYA,IAAKtL,CAAAA,QAAQ,CAACpD,UAAU,GAAC,GAAA,GAAG0O,IAAK5T,CAAAA,KAAK,CAACvF,MAAM,GAAC,GAAA,CAAA;AACpE,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2gB,cAER,GAFD,SAASA,cAAAA,CAAexH,IAAgB,EAAA;AACtC,QAAA,OAAO,UAAC,GAAUA,IAAKtL,CAAAA,QAAQ,CAACpD,UAAU,GAAC,GAAA,GAAG0O,IAAK5T,CAAAA,KAAK,CAACvF,MAAM,GAAC,GAAA,CAAA;AAClE,KAAA,CAAA;IAEA,MAAS6gB,CAAAA,UAER,GAFD,SAASA,UAAAA,GAAAA;QACP,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS1I,sBAcR,GAdD,SAASA,sBAAAA,CAAuBjM,IAA+B,EAAA;QAC7D,IAAQiC,WAAajC,IAAbiC,CAAAA,QAAAA,CAAAA;QACR,IAAMwR,QAAAA,GAAWxR,QAAQ,CAAC,CAAE,CAAA,CAAA;QAC5B,IAAQ8Q,UAAY1B,cAAZ0B,CAAAA,OAAAA,CAAAA;QACR,IAAY,WAARU,CAAAA,QAAAA,EAAoBvT,OAAQ8L,CAAAA,iBAAiB,CAAI+G,IAAAA,OAAAA,CAAQR,WAAW,CAASkB,QAAS9gB,CAAAA,IAAI,CAAG,EAAA;YAC/F,IAAMklB,cAAAA,GAAiB5V,QAAQ,CAAC,CAAE,CAAA,CAAA;AAClC,YAAA,IAAMgL,OAAO8F,OAAQpB,CAAAA,OAAO,CAACmG,IAAI,CAAC,SAAC7hB,IAAAA,EAAAA;AAASA,gBAAAA,OAAAA,IAAAA,CAAKoD,KAAK,CAACvF,MAAM,KAAK+jB,eAAe/jB,MAAM,CAAA;;AACvF,YAAA,IAAI,CAACmZ,IAAM,EAAA;gBACT,IAAI,CAAC6G,YAAY,CAAC+D,cAAAA,CAAepkB,QAAQ,EAAG,0BAA0BokB,GAAAA,cAAAA,CAAe/jB,MAAM,CAAA,CAAA;gBAC3F,OAAO,EAAA,CAAA;AACT,aAAA;AACA,YAAA,OAAO,cAAC,GAAcmZ,IAAKvL,CAAAA,QAAQ,GAAE,GAAA,CAAA;AACvC,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAMuK,sBAAD,CAAwBjM,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2D,kBASR,GATD,SAASA,kBAAAA,CAAmB3D,IAA2B,EAAA;QACrD,IAAIA,IAAAA,CAAKwD,qBAAqB,EAAE;AAC9B,YAAA,IAAI6N,eAAe0B,OAAO,CAACrB,UAAU,CAACve,MAAM,EAAE;gBAC5C,OAAO,EAAA,CAAA;AACT,aAAA;AACA,YAAA,IAAMqY,UAAaxL,GAAAA,IAAAA,CAAKiC,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,OAAO,iBAAC,GAAiBuJ,UAAW7I,CAAAA,OAAO,CAAC,IAAI,CAAA,CAAA;AAClD,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAMgB,kBAAD,CAAoB3D,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IA9CW4X,cAEJG,CAAAA,UAKN,GALD,SAAOA,UAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACjF,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IAJX8E,cAAAA,EAAAA,CAAAA;AAKT,SAAA;QACA,OAAO,IAAI,CAAC9E,UAAU,CAAA;AACxB,KAAA,CAAA;AAPW8E,IAAAA,OAAAA,cAAAA,CAAAA;EAAuB3C,WA+CnC,CAAA;;AC7CD,IAAM+C,eAAkB,GAAA,gBAAA,CAAA;AAEjB,IAAA,cAAA,iBAAA,SAAA,WAAA,EAAA;AAAMC,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;kEASHC,eAAkC,GAAA,EAAE,QACpCC,4BAA+B,GAAA,KAAA,CAAA;;;AAV5BF,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAYX,MAAStX,CAAAA,KAKR,GALD,SAASA,KAAAA,GAAAA;AACP,QAAA,WAAA,CAAA,SAAA,CAAMA,KAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AAEL,QAAA,IAAI,CAACuX,eAAe,CAAC/kB,MAAM,GAAG,CAAA,CAAA;QAC9B,IAAI,CAACglB,4BAA4B,GAAG,KAAA,CAAA;AACtC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9C,cAMR,GAND,SAASA,cAAeC,CAAAA,IAAgB,EAAEpgB,GAAmB,EAAA;QAC3D,WAAMmgB,CAAAA,SAAAA,CAAAA,cAAD,YAAgBC,IAAMpgB,EAAAA,GAAAA,CAAAA,CAAAA;AAE3B,QAAA,IAAK,IAAIjC,CAAAA,GAAI,CAAGC,EAAAA,CAAAA,GAAI,IAAI,CAACglB,eAAe,CAAC/kB,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC3DiC,YAAAA,GAAAA,CAAInC,IAAI,CAAC,IAAI,CAACmlB,eAAe,CAACjlB,CAAE,CAAA,CAAA,CAAA;AAClC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASyhB,gBAER,GAFD,SAASA,gBAAAA,CAAiBzH,IAAgB,EAAA;AACxC,QAAA,OAAO,KAAC,GAAKA,IAAKtL,CAAAA,QAAQ,CAACpD,UAAU,GAAC,GAAA,GAAG0O,IAAK5T,CAAAA,KAAK,CAACvF,MAAM,GAAC,GAAA,CAAA;AAC7D,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2gB,cAGR,GAHD,SAASA,cAAAA,CAAexH,IAAgB,EAAA;QACtC,IAAMrI,SAAAA,GAAYyM,eAAe0B,OAAO,CAACiD,KAAK,KAAKhd,YAAAA,CAAaiD,QAAQ,GAAG,IAAO,GAAA,KAAA,CAAA;AAClF,QAAA,OAAO,SAAG2I,GAAU,GAAGqI,GAAAA,IAAAA,CAAKtL,QAAQ,CAACpD,UAAU,GAAC,GAAG0O,GAAAA,IAAAA,CAAK5T,KAAK,CAACvF,MAAM,GAAC,GAAA,CAAA;AACvE,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS6gB,UAER,GAFD,SAASA,UAAAA,CAAW1H,IAAgB,EAAA;QAClC,OAAQ,oBAAoBA,GAAAA,IAAAA,CAAKvL,QAAQ,GAAC,gBAAauL,IAAK5T,CAAAA,KAAK,CAACvF,MAAM,GAAC,GAAA,CAAA;AAC3E,KAAA,CAAA;AAEA,IAAA,MAAA,CAASsX,uBAkCR,GAlCD,SAASA,uBAAAA,CAAwBpL,IAAgC,EAAA;QAC/D,IAAMiC,QAAAA,GAAWjC,KAAKiC,QAAQ,CAAA;QAC9B,IAAM7C,aAAAA,GAAgB6C,QAAQ,CAAC,CAAE,CAAA,CAAA;AACjC,QAAA,IAAI7C,aAAc6C,CAAAA,QAAQ,CAAC9O,MAAM,KAAK,CAAG,EAAA;YACvC,OAAO,IAAI,CAAC0P,cAAc,CAACZ,QAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAI5I,KAAAA,GAAQ2G,KAAKlM,MAAM,CAAA;AACvB,QAAA,OAAQkM,KAAK3G,KAAK;YAChB,KAAK,WAAA,CAAA;YACL,KAAK,aAAA;gBACHA,KAAQ,GAAA,SAAA,CAAA;AACR,gBAAA,MAAA;YACF,KAAK,eAAA;gBACHA,KAAQ,GAAA,aAAA,CAAA;AACR,gBAAA,MAAA;YACF,KAAK,iBAAA,CAAA;YACL,KAAK,mBAAA;gBACHA,KAAQ,GAAA,YAAA,CAAA;AACR,gBAAA,MAAA;YACF,KAAK,kBAAA,CAAA;YACL,KAAK,oBAAA;gBACHA,KAAQ,GAAA,aAAA,CAAA;AACR,gBAAA,MAAA;YACF,KAAK,qBAAA;gBACHA,KAAQ,GAAA,gBAAA,CAAA;AACR,gBAAA,MAAA;YACF,KAAK,sBAAA;gBACHA,KAAQ,GAAA,iBAAA,CAAA;AACR,gBAAA,MAAA;YACF,KAAK,iBAAA;gBACHA,KAAQ,GAAA,cAAA,CAAA;AACR,gBAAA,MAAA;AACJ,SAAA;QACA,OAAOA,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS6V,uBAWR,GAXD,SAASA,uBAAAA,CAAwBlP,IAAgC,EAAA;QAC/D,IAAQ+S,UAAY1B,cAAZ0B,CAAAA,OAAAA,CAAAA;QACR,IAAIA,OAAAA,CAAQiD,KAAK,KAAKhd,YAAaiD,CAAAA,QAAQ,IAAI+D,IAAAA,CAAKmP,SAAS,CAAC,IAAI,CAAA,KAAM,cAAgB,EAAA;AACtF,YAAA,IAAI4D,OAAQrB,CAAAA,UAAU,CAACve,MAAM,EAAE;AAC7B,gBAAA,IAAI,CAAC2gB,YAAY,CAAC9T,IAAAA,CAAKvM,QAAQ,EAAE,iEAAA,CAAA,CAAA;AACjC,gBAAA,OAAA;AACF,aAAA;AACA,YAAA,IAAI,CAAC2kB,0BAA0B,EAAA,CAAA;YAC/B,OAAOJ,eAAAA,CAAAA;AACT,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAM9I,uBAAD,CAAyBlP,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2D,kBAWR,GAXD,SAASA,kBAAAA,CAAmB3D,IAA2B,EAAA;QACrD,IAAIA,IAAAA,CAAKwD,qBAAqB,EAAE;AAC9B,YAAA,IAAI6N,eAAe0B,OAAO,CAACrB,UAAU,CAACve,MAAM,EAAE;gBAC5C,OAAO,EAAA,CAAA;AACT,aAAA;AACA,YAAA,IAAI,CAACilB,0BAA0B,EAAA,CAAA;AAE/B,YAAA,IAAM5M,UAAaxL,GAAAA,IAAAA,CAAKiC,QAAQ,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,OAAO,eAAmB,GAAA,KAAA,GAAKuJ,WAAW7I,OAAO,CAAC,IAAI,CAAE,GAAA,GAAA,CAAA;AAC1D,SAAA;QACA,OAAO,WAAA,CAAA,SAAA,CAAMgB,kBAAD,CAAoB3D,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IAEA,MAAQoY,CAAAA,0BAOP,GAPD,SAAQA,0BAAAA,GAAAA;QACN,IAAI,IAAI,CAACD,4BAA4B,EAAE,OAAA;AACvC,QAAA,IAAI,CAACD,eAAe,CAACnlB,IAAI,CAAC;YACxByhB,IAAM,EAAC,cAAWwD,eAAgB,GAAA,GAAA;YAClC3lB,KAAO,EAAA,CAAA;AACT,SAAA,CAAA,CAAA;QACA,IAAI,CAAC8lB,4BAA4B,GAAG,IAAA,CAAA;AACtC,KAAA,CAAA;IA7GWF,cAEJF,CAAAA,UAKN,GALD,SAAOA,UAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACjF,UAAU,EAAE;YACpB,IAAI,CAACA,UAAU,GAAG,IAJXmF,cAAAA,EAAAA,CAAAA;AAKT,SAAA;QACA,OAAO,IAAI,CAACnF,UAAU,CAAA;AACxB,KAAA,CAAA;AAPWmF,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBhD,WA8GnC,CAAA;;AC/GD;;IAGO,IAAeoD,SAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,SAAAA,CAyDR7kB,MAAe,EAAA;aA1BjB8kB,aAAgB,GAAA,CAAA,CAAA;QA2BxB,IAAI,CAACC,OAAO,GAAG/kB,MAAAA,CAAAA;;AA1DG6kB,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AA6DpBG,IAAAA,MAAAA,CAAAA,SAMC,GANDA,SAAAA,SAAAA,CAAUhlB,MAAc,EAAA;QACtB,IAAI,CAAC+kB,OAAO,GAAG/kB,MAAAA,CAAAA;QACf,IAAI,CAAC8kB,aAAa,GAAG,CAAA,CAAA;AAIvB,KAAA,CAAA;AAEAG,IAAAA,MAAAA,CAAAA,iBAQC,GARDA,SAAAA,iBAAAA,CAAkBC,UAAc,EAAA;AAAdA,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO1kB,UAAUC,cAAc,CAC7B,IAAI,CAACqkB,aAAa,GAAGI,UAAAA,CAAAA,CAAAA;AAMzB,KAAA,CAAA;IAEAC,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACE,OAAO,IAAI,CAACL,aAAa,IAAI,IAAI,CAACC,OAAO,CAACplB,MAAM,CAAA;AAClD,KAAA,CAAA;IAEAylB,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACL,OAAO,CAAC,IAAI,CAACD,aAAa,CAAC,CAAA;AACzC,KAAA,CAAA;IAEAO,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAACN,OAAO,CAACO,UAAU,CAAC,IAAI,CAACR,aAAa,CAAA,CAAA;AACnD,KAAA,CAAA;AAEAS,IAAAA,MAAAA,CAAAA,OAcC,GAdDA,SAAAA,OAAAA,CAAQC,KAAa,EAAA;QAanB,IAAI,CAACV,aAAa,IAAIU,KAAAA,CAAAA;AACxB,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,SAAAA,CAAUC,gBAAyB,EAAA;QACjC,MA5GkBb,UA4GDc,gBAAgB,CAAC,IAAI,CAACN,cAAc,IAAIK,gBAAmB,CAAA,CAAA;YAC1E,IAAI,CAACH,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;IAEAK,MAAAA,CAAAA,oBAoCC,GApCDA,SAAAA,oBAAAA,GAAAA;QACE,IAAM5lB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAC3B,IAAMplB,MAAAA,GAASK,OAAOL,MAAM,CAAA;QAC5B,IAAId,KAAAA,GAAQ,IAAI,CAACimB,aAAa,CAAA;AAE9B,QAAA,MAAOjmB,QAAQc,MAAQ,CAAA;;YAErB,MAAOd,KAAAA,GAAQc,MAAUklB,IAxHTA,SAwHmBc,CAAAA,gBAAgB,CAAC3lB,MAAOslB,CAAAA,UAAU,CAACzmB,KAAAA,CAAAA,EAAQ,IAAO,CAAA,CAAA;AACnFA,gBAAAA,KAAAA,EAAAA,CAAAA;AACF,aAAA;;AAGA,YAAA,IAAIA,QAAQ,CAAKc,IAAAA,MAAAA,IAAUK,OAAOslB,UAAU,CAACzmB,WAAW,EAAI,EAAA,MAAA;AAE5D,YAAA,IAAMgnB,QAAW7lB,GAAAA,MAAAA,CAAOslB,UAAU,CAACzmB,KAAQ,GAAA,CAAA,CAAA,CAAA;AAC3C,YAAA,IAAIgnB,aAAa,EAAI,EAAA;;gBAEnBhnB,KAAS,IAAA,CAAA,CAAA;AACT,gBAAA,MAAOA,QAAQc,MAAQ,CAAA;oBACrB,IAAMmmB,QAAAA,GAAW9lB,MAAOslB,CAAAA,UAAU,CAACzmB,KAAAA,CAAAA,CAAAA;oBACnC,IAAIinB,QAAAA,KAAa,EAAMA,IAAAA,QAAAA,KAAa,EAAI,EAAA,MAAA;AACxCjnB,oBAAAA,KAAAA,EAAAA,CAAAA;AACF,iBAAA;aACK,MAAA,IAAIgnB,aAAa,EAAI,EAAA;;gBAE1BhnB,KAAS,IAAA,CAAA,CAAA;AACT,gBAAA,MAAOA,QAAQ,CAAIc,GAAAA,MAAAA,IAAU,EAAEK,OAAOslB,UAAU,CAACzmB,KAAW,CAAA,KAAA,EAAA,IAAMmB,OAAOslB,UAAU,CAACzmB,KAAQ,GAAA,CAAA,CAAA,KAAO,EAAC,CAAI,CAAA;AACtGA,oBAAAA,KAAAA,EAAAA,CAAAA;AACF,iBAAA;AACAA,gBAAAA,KAAAA,IAAS;aACJ,MAAA;AACL,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAAC0mB,OAAO,CAAC1mB,KAAQ,GAAA,IAAI,CAACimB,aAAa,CAAA,CAAA;AACzC,KAAA,CAAA;AAEAiB,IAAAA,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAAA,CAAK3hB,EAAU,EAAA;QACb,IAAM4hB,MAAAA,GAAS,IAAI,CAAClB,aAAa,CAAA;AACjC,QAAA,OAAO,IAAI,CAACC,OAAO,CAACrgB,SAAS,CAACshB,QAAQA,MAAS5hB,GAAAA,EAAAA,CAAAA,CAAAA;AACjD,KAAA,CAAA;AAEA6hB,IAAAA,MAAAA,CAAAA,UAQC,GARDA,SAAAA,UAAAA,CAAW3lB,MAAc,EAAA;AACvB,QAAA,IAAI,CAACslB,oBAAoB,EAAA,CAAA;QACzB,IAAMjmB,MAAAA,GAASW,OAAOX,MAAM,CAAA;AAC5B,QAAA,IAAMomB,IAAO,GAAA,IAAI,CAACA,IAAI,CAACpmB,MAAAA,CAAAA,CAAAA;AACvB,QAAA,IAAIomB,SAASzlB,MAAQ,EAAA;AACnB,YAAA,IAAI,CAAC4lB,UAAU,CAAC,IAAI,CAACjB,iBAAiB,CAAC,CAAA,CAAA,EAAI,iBAAC,GAAiB3kB,MAAO,GAAA,cAAA,GAAcylB,IAAK,GAAA,GAAA,CAAA,CAAA;AACzF,SAAA;QACA,IAAI,CAACR,OAAO,CAAC5lB,MAAAA,CAAAA,CAAAA;AACf,KAAA,CAAA;AAEAwmB,IAAAA,MAAAA,CAAAA,sBAgBC,GAhBDA,SAAAA,sBAAuBC,CAAAA,OAAe,EAAEC,OAAe,EAAA;AACrD,QAAA,IAAI,CAACT,oBAAoB,EAAA,CAAA;;AAGzB,QAAA,IAAI,IAAI,CAACG,IAAI,CAACK,OAAQzmB,CAAAA,MAAM,MAAMymB,OAAS,EAAA;AACzC,YAAA,IAAI,CAACb,OAAO,CAACa,OAAAA,CAAQzmB,MAAM,CAAA,CAAA;YAC3B,OAAOymB,OAAAA,CAAAA;AACT,SAAA;;AAGA,QAAA,IAAI,IAAI,CAACL,IAAI,CAACM,OAAQ1mB,CAAAA,MAAM,MAAM0mB,OAAS,EAAA;AACzC,YAAA,IAAI,CAACd,OAAO,CAACc,OAAAA,CAAQ1mB,MAAM,CAAA,CAAA;YAC3B,OAAO0mB,OAAAA,CAAAA;AACT,SAAA;QAEA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AAEAH,IAAAA,MAAAA,CAAAA,UAMC,GANDA,SAAAA,UAAAA,CAAWI,GAAiC,EAAA;AAAE,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGC,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAc,CAAA,CAAA;;AAC1D,QAAA,IAAMnmB,KAAQnB,GAAAA,cAAAA,CAAeY,aAAa,CAAC0mB,KAAKxG,IAAI,CAAC,GAAMnV,CAAAA,EAAAA,aAAAA,CAAY4b,YAAY,EAAE,IAAI,CAACzB,OAAO,EAAEuB,GAAAA,CAAAA,CAAAA;QAInG,MAAMlmB,KAAAA,CAAAA;AACR,KAAA,CAAA;IAEAqmB,MAAAA,CAAAA,cAiCC,GAjCDA,SAAAA,cAAeC,CAAAA,IAAY,EAAEC,KAAa,EAAEC,QAAiB,EAAEC,WAAoB,EAAA;AACjF,QAAA,IAAI,CAACA,WAAa,EAAA;YAChB,IAAI,CAACZ,UAAU,CAACS,IAAAA,CAAAA,CAAAA;AAClB,SAAA;QAEA,IAAMjoB,KAAAA,GAAQ,IAAI,CAACqmB,aAAa,CAAA;QAChC,IAAM9kB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAC3B,IAAM+B,YAAAA,GAAe9mB,OAAOL,MAAM,CAAA;QAElC,IAAIonB,YAAAA,GAAe,IAAI,CAACjC,aAAa,CAAA;AACrC,QAAA,IAAI8B,QAAU,EAAA;AACZ,YAAA,IAAII,KAAQ,GAAA,CAAA,CAAA;AACZ,YAAA,MAAOD,eAAeD,YAAc,CAAA;gBAClC,IAAMG,WAAAA,GAAcjnB,MAAM,CAAC+mB,YAAa,CAAA,CAAA;AACxC,gBAAA,IAAIE,WAAgBN,KAAAA,KAAAA,IAAS,EAAEK,KAAAA,KAAU,CAAG,EAAA;AAC1C,oBAAA,MAAA;iBACK,MAAA,IAAIC,gBAAgBP,IAAM,EAAA;AAC/BM,oBAAAA,KAAAA,EAAAA,CAAAA;AACF,iBAAA;AACAD,gBAAAA,YAAAA,EAAAA,CAAAA;AACF,aAAA;SACK,MAAA;AACL,YAAA,MAAOA,eAAeD,YAAc,CAAA;AAClC,gBAAA,IAAI9mB,MAAM,CAAC+mB,YAAa,CAAA,KAAKJ,KAAO,EAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAI,gBAAAA,YAAAA,EAAAA,CAAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACxB,OAAO,CAACwB,eAAe,CAAI,GAAA,IAAI,CAACjC,aAAa,CAAA,CAAA;QAElD,OAAO9kB,MAAAA,CAAO0E,SAAS,CAACjG,KAAOsoB,EAAAA,YAAAA,CAAAA,CAAAA;AACjC,KAAA,CAAA;AAjOoBlC,IAAAA,SAAAA,CACbqC,OAEN,GAFD,SAAOA,OAAAA,CAAQpB,QAAgB,EAAA;AAC7B,QAAA,OAAOA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA,CAAA;AACvC,KAAA,CAAA;;AAHoBjB,IAAAA,SAAAA,CAMbsC,OAMN,GAND,SAAOA,OAAAA,CAAQrB,QAAgB,EAAA;QAC7B,OACEA,QAAAA,KAAa;QACZA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,EAAA;QAC9BA,QAAY,IAAA,EAAA,IAAMA,QAAY,IAAA,GAAA;;AAEnC,KAAA,CAAA;;AAZoBjB,IAAAA,SAAAA,CAebuC,OAEN,GAFD,SAAOA,OAAAA,CAAQtB,QAAgB,EAAA;QAC7B,OAhBkBjB,UAgBDsC,OAAO,CAACrB,aAAajB,SAhBpBA,CAgB8BqC,OAAO,CAACpB,QAAAA,CAAAA,CAAAA;AAC1D,KAAA,CAAA;AAjBoBjB,IAAAA,SAAAA,CAmBbwC,uBAEN,GAFD,SAAOA,uBAAAA,CAAwBvB,QAAgB,EAAA;QAC7C,OAAOA,QAAAA,KAAa;AACtB,KAAA,CAAA;AArBoBjB,IAAAA,SAAAA,CAuBbc,gBAMN,GAND,SAAOA,gBAAiBG,CAAAA,QAAgB,EAAEwB,YAAqB,EAAA;;QAE7D,IAAIxB,QAAAA,KAAa,EAAMA,IAAAA,QAAAA,KAAa,CAAG,EAAA;YACrC,OAAO,IAAA,CAAA;AACT,SAAA;AACA,QAAA,OAAOwB,iBAAiBxB,QAAAA,KAAa,MAAMA,QAAa,KAAA,EAAC;AAC3D,KAAA,CAAA;AA7BoBjB,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YAuChBkC,GAAAA,EAAAA,cAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACjC,aAAa,CAAA;AAC3B,aAAA;;;YAEI9kB,GAAAA,EAAAA,QAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC+kB,OAAO,CAAA;AACrB,aAAA;;;AA7CoBF,IAAAA,OAAAA,SAAAA,CAAAA;AAoOrB,CAAA,EAAA;;ACzOD;;IAGO,IAAM0C,KAAN,iBAAA,SAAA,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,KAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,KAuFTvnB,CAAAA,MAAc,EACPwB,eAAgC,EAAA;;gBAEvC,UAAMxB,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAFCwB,eAAAA,GAAAA,eAAAA,EAAAA,KAAAA,CAXDgmB,iCAAoC,GAAA,KAAA,CAAA;;;AA7EjCD,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;IA+EX,MAACE,CAAAA,QAKA,GALD,SAACA,QAAAA,GAAAA;;;;yBACQ,CAAC,IAAI,CAACtC,KAAK,EAAA,EAAA,OAAA;;;;AAChB,oBAAA,OAAA;;AAAM,wBAAA,IAAI,CAACuC,SAAS,EAAA;;;AAApB,oBAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;AAEF,oBAAA,OAAA;;AAAO/mB,wBAAAA,GAAAA;;;;AACT,KAAA,CAAA;IASA,MAAS+mB,CAAAA,SA4QR,GA5QD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAI,CAAC9B,oBAAoB,EAAA,CAAA;QACzB,IAAI,IAAI,CAACT,KAAK,EAAI,EAAA;YAChB,OAAOxkB,GAAAA,CAAAA;AACT,SAAA;QAEA,IAAI,IAAI,CAAC6mB,iCAAiC,EAAE;YAC1C,IAAI,CAACA,iCAAiC,GAAG,KAAA,CAAA;YACzC,OAAO,IAAI,CAACG,6BAA6B,EAAA,CAAA;AAC3C,SAAA;QAEA,IAAMC,WAAAA,GAAc,IAAI,CAACvC,cAAc,EAAA,CAAA;QACvC,IAAIR,SAAAA,CAAUwC,uBAAuB,CAACO,WAAc,CAAA,EAAA;YAClD,OAAO,IAAI,CAACC,eAAe,EAAA,CAAA;AAC7B,SAAA;QACA,IAAIhD,SAAAA,CAAUsC,OAAO,CAACS,WAAc,CAAA,EAAA;YAClC,OAAO,IAAI,CAACE,SAAS,EAAA,CAAA;AACvB,SAAA;QACA,IAAIjD,SAAAA,CAAUqC,OAAO,CAACU,WAAc,CAAA,EAAA;YAClC,OAAO,IAAI,CAACG,QAAQ,EAAA,CAAA;AACtB,SAAA;QAEA,IAAMtpB,KAAAA,GAAQ,IAAI,CAACwmB,iBAAiB,EAAA,CAAA;AACpC,QAAA,IAAMjS,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;QAChC,IAAI4iB,OAAAA,CAAAA;QAEJ,OAAQ,IAAI,CAAC5C,UAAU,EAAA;YACrB,KAAK,GAAA;gBACH,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,oBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;wBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,wBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWmpB,CAAAA,WAAW,EAAE,KAAOxpB,EAAAA,KAAAA,CAAAA,CAAAA;AACzC,wBAAA,MAAA;AACF,qBAAA;AACAuU,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWopB,CAAAA,OAAO,EAAE,IAAMzpB,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWqpB,CAAAA,KAAK,EAAE,IAAM1pB,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWspB,CAAAA,UAAU,EAAE,GAAK3pB,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,oBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;wBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,wBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWupB,CAAAA,YAAY,EAAE,KAAO5pB,EAAAA,KAAAA,CAAAA,CAAAA;AAC1C,wBAAA,MAAA;AACF,qBAAA;AACAuU,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWwpB,CAAAA,QAAQ,EAAE,IAAM7pB,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWypB,CAAAA,KAAK,EAAE,IAAM9pB,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW0pB,CAAAA,WAAW,EAAE,GAAK/pB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW2pB,CAAAA,MAAM,EAAE,IAAMhqB,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW4pB,CAAAA,UAAU,EAAE,IAAMjqB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWmT,CAAAA,IAAI,EAAE,GAAKxT,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW6pB,CAAAA,MAAM,EAAE,IAAMlqB,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW8pB,CAAAA,UAAU,EAAE,IAAMnqB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWuT,CAAAA,IAAI,EAAE,GAAK5T,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;oBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW+pB,CAAAA,KAAK,EAAE,IAAMpqB,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWgqB,CAAAA,KAAK,EAAE,GAAKrqB,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;oBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWiqB,CAAAA,KAAK,EAAE,IAAMtqB,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWkqB,CAAAA,IAAI,EAAE,GAAKvqB,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWmqB,CAAAA,MAAM,EAAE,IAAMxqB,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW4pB,CAAAA,UAAU,EAAE,IAAMjqB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWoqB,CAAAA,SAAS,EAAE,GAAKzqB,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWqqB,CAAAA,KAAK,EAAE,IAAM1qB,EAAAA,KAAAA,CAAAA,CAAAA;AAClC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWsqB,CAAAA,SAAS,EAAE,IAAM3qB,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWuqB,CAAAA,YAAY,EAAE,GAAK5qB,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AACzB,gBAAA,IAAI4C,YAAY,GAAK,EAAA;oBACnB,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWwqB,CAAAA,MAAM,EAAE,IAAM7qB,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,oBAAA,MAAA;iBACK,MAAA,IAAIupB,YAAY,GAAK,EAAA;oBAC1B,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWyqB,CAAAA,UAAU,EAAE,IAAM9qB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AACAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW0qB,CAAAA,KAAK,EAAE,GAAK/qB,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;oBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW2qB,CAAAA,UAAU,EAAE,IAAMhrB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AAEAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWwT,CAAAA,IAAI,EAAE,GAAK7T,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;oBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW4qB,CAAAA,UAAU,EAAE,IAAMjrB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AAEAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWyT,CAAAA,KAAK,EAAE,GAAK9T,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAI,IAAI,CAACH,UAAU,EAAA,KAAO,GAAK,EAAA;oBAC7B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,oBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW6qB,CAAAA,UAAU,EAAE,IAAMlrB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,oBAAA,MAAA;AACF,iBAAA;AAEAuU,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW0T,CAAAA,OAAO,EAAE,GAAK/T,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,gBAAA,MAAA;YAEF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW8qB,CAAAA,UAAU,EAAE,GAAKnrB,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW+qB,CAAAA,WAAW,EAAE,GAAKprB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWgrB,CAAAA,UAAU,EAAE,GAAKrrB,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWirB,CAAAA,WAAW,EAAE,GAAKtrB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWkrB,CAAAA,YAAY,EAAE,GAAKvrB,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWmrB,CAAAA,aAAa,EAAE,GAAKxrB,EAAAA,KAAAA,CAAAA,CAAAA;AACzC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAIV,UAAUqC,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAK,CAAA,EAAA;oBAC5C,OAAO,IAAI,CAAC6E,gBAAgB,EAAA,CAAA;AAC9B,iBAAA;AAEAlX,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWqrB,CAAAA,GAAG,EAAE,GAAK1rB,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWsrB,CAAAA,KAAK,EAAE,GAAK3rB,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWurB,CAAAA,KAAK,EAAE,GAAK5rB,EAAAA,KAAAA,CAAAA,CAAAA;gBACjC,OAAOuU,KAAAA,CAAAA;YACT,KAAK,GAAA;gBACH,IAAI,CAACuS,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWwrB,CAAAA,SAAS,EAAE,GAAK7rB,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWyrB,CAAAA,KAAK,EAAE,GAAK9rB,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;AAEbvS,gBAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAW0rB,CAAAA,QAAQ,EAAE,GAAK/rB,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,gBAAA,MAAA;YACF,KAAK,GAAA;gBACH,IAAI,CAAC8mB,OAAO,CAAC,CAAA,CAAA,CAAA;gBACb,OAAO,IAAI,CAACkF,gBAAgB,EAAA,CAAA;AAE9B,YAAA;AACE,gBAAA,IAAI,CAACvE,UAAU,CAAC,IAAI,CAACjB,iBAAiB,CAAC,CAAA,CAAA,EAAI,uBAAC,GAAuB,IAAI,CAACG,UAAU,EAAA,CAAA,CAAA;AACtF,SAAA;QACA,OAAOpS,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQyX,CAAAA,gBAaP,GAbD,SAAQA,gBAAAA,GAAAA;QACN,IAAMhsB,KAAAA,GAAQ,IAAI,CAACwmB,iBAAiB,EAAA,CAAA;AACpC,QAAA,IAAMyF,SAAmB,EAAE,CAAA;AAC3B,QAAA,MAAO,IAAI,CAACtF,UAAU,EAAA,KAAO,GAAK,CAAA;AAChCsF,YAAAA,MAAAA,CAAOnrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;YAC3B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;QACA,IAAI,CAACA,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,QAAA,IAAMoF,QAAQnqB,SAAUE,CAAAA,WAAW,CAACjC,KAAO,EAAA,IAAI,CAACwmB,iBAAiB,EAAA,CAAA,CAAA;AAEjE,QAAA,IAAMjS,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;QAChC4N,KAAMxU,CAAAA,GAAG,CAACM,UAAW8rB,CAAAA,YAAY,EAAEF,MAAO3K,CAAAA,IAAI,CAAC,EAAK4K,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA;QACpD,OAAO3X,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQkX,CAAAA,gBAUP,GAVD,SAAQA,gBAAAA,GAAAA;AACN,QAAA,IAAMQ,MAAS,GAAA;AAAC,YAAA,GAAA;AAAI,SAAA,CAAA;AACpB,QAAA,MAAO7F,UAAUqC,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAK,CAAA,CAAA;AAC/CqF,YAAAA,MAAAA,CAAOnrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;YAC3B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;QACA,IAAI,CAACsF,gBAAgB,CAACH,MAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAM1X,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,QAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWsZ,CAAAA,cAAc,EAAEsS,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAACkF,iBAAiB,CAACyF,OAAO/qB,MAAM,CAAA,CAAA,CAAA;QAC1F,OAAOqT,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ8X,kBAKP,GALD,SAAQA,kBAAAA,CAAmBC,SAAmB,EAAA;QAC5C,MAAO,IAAI,CAAC3F,UAAU,EAAA,KAAO,QAAQ,CAAC,IAAI,CAACD,KAAK,EAAI,CAAA;AAClD4F,YAAAA,SAAAA,CAAUxrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;YAC9B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;IAEA,MAAQsC,CAAAA,eAyBP,GAzBD,SAAQA,eAAAA,GAAAA;AACN,QAAA,IAAM6C,MAAmB,GAAA;AAAC,YAAA,IAAI,CAACtF,UAAU,EAAA;AAAG,SAAA,CAAA;QAC5C,IAAM3mB,KAAAA,GAAQ,IAAI,CAACwmB,iBAAiB,EAAA,CAAA;QACpC,IAAI,CAACM,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,QAAA,MAAOV,UAAUsC,OAAO,CAAC,IAAI,CAAC9B,cAAc,EAAK,CAAA,CAAA;AAC/CqF,YAAAA,MAAAA,CAAOnrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;YAC3B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAMvS,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;QAChC,IAAM4lB,IAAAA,GAAON,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA;;AAGzB,QAAA,IAAIiL,SAAS,SAAW,EAAA;YACtB,IAAI,CAACF,kBAAkB,CAACJ,MAAAA,CAAAA,CAAAA;AACxB,YAAA,IAAMM,KAAON,GAAAA,MAAAA,CAAO3K,IAAI,CAAC,EAAM,CAAA,GAAA,IAAA,CAAA;AAC/B/M,YAAAA,KAAAA,CAAMxU,GAAG,CAACQ,OAAQisB,CAAAA,uBAAuB,EAAED,KAAMvsB,EAAAA,KAAAA,CAAAA,CAAAA;SAC5C,MAAA;AACL,YAAA,IAAMysB,EAAK3D,GA9ZJA,KA8ZU4D,CAAAA,YAAY,CAACH,IAAK,CAAA,CAAA;AACnChY,YAAAA,KAAAA,CAAMxU,GAAG,CAAC0sB,EAAAA,IAAAA,IAAAA,GAAAA,KAAMpsB,UAAWssB,CAAAA,EAAE,EAAEJ,IAAMvsB,EAAAA,KAAAA,CAAAA,CAAAA;YACrC,IAAIusB,IAAAA,KAAS,KAASA,IAAAA,IAAAA,KAAS,OAAS,EAAA;gBACtC,IAAI,CAACxD,iCAAiC,GAAG,IAAA,CAAA;AAC3C,aAAA;AACF,SAAA;QAEA,OAAOxU,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ2U,CAAAA,6BAQP,GARD,SAAQA,6BAAAA,GAAAA;AACN,QAAA,IAAM+C,SAAS,IAAIhL,KAAAA,EAAAA,CAAAA;QACnB,IAAMjhB,KAAAA,GAAQ,IAAI,CAACwmB,iBAAiB,EAAA,CAAA;QACpC,IAAI,CAAC6F,kBAAkB,CAACJ,MAAAA,CAAAA,CAAAA;QACxB,IAAMM,IAAAA,GAAON,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA;AACzB,QAAA,IAAM/M,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,QAAAA,KAAAA,CAAMxU,GAAG,CAACQ,OAAQqsB,CAAAA,4BAA4B,EAAEL,IAAMvsB,EAAAA,KAAAA,CAAAA,CAAAA;QACtD,OAAOuU,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ8U,CAAAA,SAkBP,GAlBD,SAAQA,SAAAA,GAAAA;AACN,QAAA,IAAM4C,MAAmB,GAAA;AAAC,YAAA,IAAI,CAACtF,UAAU,EAAA;AAAG,SAAA,CAAA;QAC5C,IAAM3mB,KAAAA,GAAQ,IAAI,CAACwmB,iBAAiB,EAAA,CAAA;QACpC,IAAI,CAACM,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,QAAA,MAAOV,UAAUuC,OAAO,CAAC,IAAI,CAAC/B,cAAc,EAAK,CAAA,CAAA;AAC/CqF,YAAAA,MAAAA,CAAOnrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;YAC3B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAMvS,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;QAChC,IAAM4lB,IAAAA,GAAON,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA;AACzB,QAAA,IAAMmL,EAAK3D,GA5bFA,KA4bQ4D,CAAAA,YAAY,CAACH,IAAK,CAAA,CAAA;AAEnC,QAAA,IAAI,IAAI,CAACxpB,eAAe,CAACwpB,KAAK,EAAE;AAC9BhY,YAAAA,KAAAA,CAAMxU,GAAG,CAACQ,OAAQssB,CAAAA,UAAU,EAAEN,IAAMvsB,EAAAA,KAAAA,CAAAA,CAAAA;SAC/B,MAAA;AACLuU,YAAAA,KAAAA,CAAMxU,GAAG,CAAC0sB,EAAAA,IAAAA,IAAAA,GAAAA,KAAMpsB,UAAWssB,CAAAA,EAAE,EAAEJ,IAAMvsB,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,SAAA;QACA,OAAOuU,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ+U,CAAAA,QAkCP,GAlCD,SAAQA,QAAAA,GAAAA;AACN,QAAA,IAAM2C,SAAmB,EAAE,CAAA;AAC3B,QAAA,MAAO7F,UAAUqC,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAK,CAAA,CAAA;AAC/CqF,YAAAA,MAAAA,CAAOnrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;YAC3B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;QACA,IAAMyC,OAAAA,GAAU,IAAI,CAAC5C,UAAU,EAAA,CAAA;AAC/B,QAAA,IAAI4C,YAAY,GAAK,EAAA;AACnB0C,YAAAA,MAAAA,CAAOnrB,IAAI,CAACyoB,OAAAA,CAAAA,CAAAA;YACZ,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,YAAA,MAAOV,UAAUqC,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAK,CAAA,CAAA;AAC/CqF,gBAAAA,MAAAA,CAAOnrB,IAAI,CAAC,IAAI,CAAC6lB,UAAU,EAAA,CAAA,CAAA;gBAC3B,IAAI,CAACG,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,aAAA;YACA,IAAI,CAACsF,gBAAgB,CAACH,MAAAA,CAAAA,CAAAA;AAEtB,YAAA,IAAM1X,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,YAAAA,KAAAA,CAAMxU,GAAG,CAACM,UAAWsZ,CAAAA,cAAc,EAAEsS,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAACkF,iBAAiB,CAACyF,OAAO/qB,MAAM,CAAA,CAAA,CAAA;YAC1F,OAAOqT,KAAAA,CAAAA;SACF,MAAA;YACL,IAAIgV,OAAAA,KAAY,GAAOA,IAAAA,OAAAA,KAAY,GAAK,EAAA;gBACtC,IAAI,CAAC6C,gBAAgB,CAACH,MAAAA,CAAAA,CAAAA;AAEtB,gBAAA,IAAM1X,MAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,gBAAAA,MAAAA,CAAMxU,GAAG,CAACM,UAAWsZ,CAAAA,cAAc,EAAEsS,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAACkF,iBAAiB,CAACyF,OAAO/qB,MAAM,CAAA,CAAA,CAAA;gBAC1F,OAAOqT,MAAAA,CAAAA;aACF,MAAA;gBACL,IAAI,CAACuY,kBAAkB,CAACb,MAAAA,CAAAA,CAAAA;AAExB,gBAAA,IAAM1X,MAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,gBAAAA,MAAAA,CAAMxU,GAAG,CAACM,UAAWqZ,CAAAA,YAAY,EAAEuS,MAAO3K,CAAAA,IAAI,CAAC,EAAA,CAAA,EAAK,IAAI,CAACkF,iBAAiB,CAACyF,OAAO/qB,MAAM,CAAA,CAAA,CAAA;gBACxF,OAAOqT,MAAAA,CAAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6X,gBAwBP,GAxBD,SAAQA,gBAAAA,CAAiBH,MAAgB,EAAA;QACvC,IAAI1C,OAAAA,GAAU,IAAI,CAAC5C,UAAU,EAAA,CAAA;QAC7B,IAAI4C,OAAAA,KAAY,GAAOA,IAAAA,OAAAA,KAAY,GAAK,EAAA;AACtC0C,YAAAA,MAAAA,CAAOnrB,IAAI,CAACyoB,OAAAA,CAAAA,CAAAA;YACZ,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;YACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;YACzB,IAAI4C,OAAAA,KAAY,GAAOA,IAAAA,OAAAA,KAAY,GAAK,EAAA;AACtC0C,gBAAAA,MAAAA,CAAOnrB,IAAI,CAACyoB,OAAAA,CAAAA,CAAAA;gBACZ,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AAC3B,aAAA;AACA,YAAA,IAAI,CAACP,SAAUqC,CAAAA,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAA,CAAA,EACxC,IAAI,CAACa,UAAU,CAAC,IAAI,CAACjB,iBAAiB,CAAC,CAAI,CAAA,EAAA,wCAAA,CAAA,CAAA;YAE7C,GAAG;AACDyF,gBAAAA,MAAAA,CAAOnrB,IAAI,CAACyoB,OAAAA,CAAAA,CAAAA;gBACZ,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;gBACbyC,OAAU,GAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;AAC3B,aAAA,OAASP,UAAUqC,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAK,CAAA,EAAA;AACrD,SAAA;QACA,IAAI2C,OAAAA,KAAY,GAAOA,IAAAA,OAAAA,KAAY,GAAK,EAAA;AACtC0C,YAAAA,MAAAA,CAAOnrB,IAAI,CAACyoB,OAAAA,CAAAA,CAAAA;YACZ,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQgG,kBAMP,GAND,SAAQA,kBAAAA,CAAmBb,MAAgB,EAAA;QACzC,IAAM1C,OAAAA,GAAU,IAAI,CAAC5C,UAAU,EAAA,CAAA;QAC/B,IAAI4C,OAAAA,KAAY,GAAOA,IAAAA,OAAAA,KAAY,GAAK,EAAA;AACtC0C,YAAAA,MAAAA,CAAOnrB,IAAI,CAACyoB,OAAAA,CAAAA,CAAAA;YACZ,IAAI,CAACzC,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AA1gBWgC,IAAAA,OAAAA,KAAAA,CAAAA;EAAc1C,SA2gB1B,CAAA,CAAA;AA3gBY0C,KAAAA,CACI4D,YAAwC,GAAA;AACrDK,IAAAA,KAAAA,EAAOxsB,QAAQysB,KAAK;AACpBC,IAAAA,IAAAA,EAAM1sB,QAAQgJ,IAAI;AAClB2jB,IAAAA,KAAAA,EAAO3sB,QAAQiI,KAAK;AACpB2kB,IAAAA,MAAAA,EAAQ5sB,QAAQ6sB,MAAM;AACtBC,IAAAA,GAAAA,EAAK9sB,QAAQkI,GAAG;AAChB6kB,IAAAA,IAAAA,EAAM/sB,QAAQmI,IAAI;AAClB6kB,IAAAA,KAAAA,EAAOhtB,QAAQitB,KAAK;AACpBC,IAAAA,QAAAA,EAAUltB,QAAQmtB,QAAQ;AAC1BC,IAAAA,EAAAA,EAAIptB,QAAQqtB,EAAE;AACdC,IAAAA,IAAAA,EAAMttB,QAAQutB,IAAI;AAClBC,IAAAA,GAAAA,EAAKxtB,QAAQytB,GAAG;AAChBC,IAAAA,EAAAA,EAAI1tB,QAAQ2tB,EAAE;AACdC,IAAAA,KAAAA,EAAO5tB,QAAQ6tB,KAAK;AACpBC,IAAAA,OAAAA,EAAS9tB,QAAQ+tB,OAAO;AACxBjN,IAAAA,MAAAA,EAAQ9gB,QAAQiR,MAAM;AACtB+c,IAAAA,KAAAA,EAAOhuB,QAAQiuB,KAAK;AACpBC,IAAAA,KAAAA,EAAOluB,QAAQmuB,KAAK;AACpBC,IAAAA,KAAAA,EAAOpuB,QAAQquB,KAAK;AACpBC,IAAAA,KAAAA,EAAOtuB,QAAQiJ,KAAK;AACpBslB,IAAAA,KAAAA,EAAOvuB,QAAQkJ,KAAK;AACpBslB,IAAAA,KAAAA,EAAOxuB,QAAQyuB,KAAK;AACpBC,IAAAA,KAAAA,EAAO1uB,QAAQ2uB,KAAK;AACpBC,IAAAA,KAAAA,EAAO5uB,QAAQ6uB,KAAK;AACpBC,IAAAA,KAAAA,EAAO9uB,QAAQ+uB,KAAK;AACpBC,IAAAA,IAAAA,EAAMhvB,QAAQoI,IAAI;AAClB6mB,IAAAA,IAAAA,EAAMjvB,QAAQqI,IAAI;AAClB6mB,IAAAA,IAAAA,EAAMlvB,QAAQyI,IAAI;AAClB0mB,IAAAA,IAAAA,EAAMnvB,QAAQsI,IAAI;AAClB8mB,IAAAA,IAAAA,EAAMpvB,QAAQuI,IAAI;AAClB8mB,IAAAA,IAAAA,EAAMrvB,QAAQwI,IAAI;AAClB8mB,IAAAA,EAAAA,EAAItvB,QAAQuvB,EAAE;AACd7sB,IAAAA,GAAAA,EAAK1C,QAAQwvB,GAAG;AAChBC,IAAAA,KAAAA,EAAOzvB,QAAQ0vB,KAAK;AACpBC,IAAAA,SAAAA,EAAW3vB,QAAQsJ,SAAS;AAC5BsmB,IAAAA,WAAAA,EAAa5vB,QAAQwJ,YAAY;AACjCqmB,IAAAA,SAAAA,EAAW7vB,QAAQ8vB,SAAS;AAC5BC,IAAAA,eAAAA,EAAiB/vB,QAAQmJ,gBAAgB;AACzC6mB,IAAAA,iBAAAA,EAAmBhwB,QAAQoJ,mBAAmB;AAC9C6mB,IAAAA,cAAAA,EAAgBjwB,QAAQuJ,eAAe;AACvC2mB,IAAAA,oBAAAA,EAAsBlwB,QAAQqJ,sBAAsB;AACpD8mB,IAAAA,UAAAA,EAAYnwB,QAAQowB,WAAW;AAC/BC,IAAAA,UAAAA,EAAYrwB,QAAQswB,WAAW;AAC/BC,IAAAA,YAAAA,EAAcvwB,QAAQwwB,cAAc;AACpCC,IAAAA,eAAAA,EAAiBzwB,QAAQ0wB,iBAAiB;AAC1CC,IAAAA,UAAAA,EAAY3wB,QAAQ4wB,WAAW;AAC/BC,IAAAA,UAAAA,EAAY7wB,QAAQ8wB,WAAW;AAC/BC,IAAAA,YAAAA,EAAc/wB,QAAQgxB,cAAc;AACpCC,IAAAA,eAAAA,EAAiBjxB,QAAQkxB,iBAAiB;AAC1CC,IAAAA,MAAAA,EAAQnxB,QAAQ+M,MAAM;AACtBqkB,IAAAA,IAAAA,EAAMpxB,QAAQgX,IAAI;AAClBqa,IAAAA,IAAAA,EAAMrxB,QAAQqZ,IAAI;AAClBiY,IAAAA,KAAAA,EAAOtxB,QAAQsZ,KAAK;AACpByJ,IAAAA,SAAAA,EAAW/iB,QAAQuxB,SAAS;AAC5BC,IAAAA,OAAAA,EAASxxB,QAAQyxB,OAAO;AACxBC,IAAAA,KAAAA,EAAO1xB,QAAQ2xB,KAAK;AACpBC,IAAAA,OAAAA,EAAS5xB,QAAQ6xB,OAAO;AACxBC,IAAAA,IAAAA,EAAM9xB,QAAQ+xB,IAAI;AAClBC,IAAAA,SAAAA,EAAWhyB,QAAQiyB,SAAS;AAC5BC,IAAAA,IAAAA,EAAMlyB,QAAQmyB,IAAI;AAClBC,IAAAA,MAAAA,EAAQpyB,QAAQqyB,MAAM;AACtBC,IAAAA,aAAAA,EAAetyB,QAAQuyB,aAAa;AACpCC,IAAAA,QAAAA,EAAUxyB,QAAQyyB,QAAQ;AAC1BC,IAAAA,MAAAA,EAAQ1yB,QAAQ2yB,MAAM;AACtB1xB,IAAAA,QAAAA,EAAUjB,QAAQ4yB,QAAQ;;AAG1B,IAAA,KAAA,EAAO5yB,QAAQ6yB,QAAQ;AACvB,IAAA,QAAA,EAAU7yB,QAAQ8yB,WAAW;AAC7B,IAAA,SAAA,EAAW9yB,QAAQ+yB,YAAY;AAC/B,IAAA,OAAA,EAAS/yB,QAAQgzB,UAAU;AAC3B,IAAA,OAAA,EAAShzB,QAAQizB,UAAU;AAC3B,IAAA,QAAA,EAAUjzB,QAAQkzB,WAAW;AAC7B,IAAA,QAAA,EAAUlzB,QAAQmzB,WAAW;AAC/B,CAAA;;ACrFF,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,uBAAuB,CAAC;AAC5B;AACA,IAAI,OAAO,GAAG,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC;AACtG;;ACJO,IAAA,gBAAKC,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;;eAMF,gBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;cAED,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;;;eAIC,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAA,CAAA;cAED,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;cAEA,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;cAEA,gBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;cAEA,gBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAA,CAAA;cAEA,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,EAAA,CAAA,GAAA,IAAA,CAAA;aAED,gBAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,EAAA,CAAA,GAAA,YAAA,CAAA;cAEC,gBAAA,CAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAA,CAAA;cAEA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;aAED,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;cAEC,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;aAED,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,EAAA,CAAA,GAAA,MAAA,CAAA;cAEC,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,EAAA,CAAA,GAAA,OAAA,CAAA;aAED,gBAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAA,CAAA;;AAtCIA,IAAAA,OAAAA,gBAAAA,CAAAA;AA0CX,CAAA,CAAA,EAAA,CAAA,CAAA;AAEM,IAAA,kBAAKC,iBAAAA,SAAAA,kBAAAA,EAAAA;;;;;;;;;;AAAAA,IAAAA,OAAAA,kBAAAA,CAAAA;AAWX,CAAA,CAAA,EAAA,CAAA;;AChDM,IAAA,WAAA,iBAAA,WAAA;aAAMC,WAST,CAAgBrO,KAAgB,EAChC,IAAgC,EAChC,QAAsC,EACtBje,IAAkB,EAAA;aAHlBie,KAAAA,GAAAA,KAAAA,CAAAA;aACAsO,IAAAA,GAAAA,IAAAA,CAAAA;aACAtyB,QAAAA,GAAAA,QAAAA,CAAAA;aACA+F,IAAAA,GAAAA,IAAAA,CAAAA;AAEhB,QAAA,IAAIA,CAAAA,IAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAMrG,CAAAA,MAAM,IAAG,CAAG,EAAA;YACpB,IAAI,CAAC6yB,YAAY,GAAG,IAAI,CAACxsB,IAAI,CAACvC,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,gBAAAA,OAAAA,IAAAA,CAAKnC,MAAM,CAAA;;AACvD,YAAA,IAAI,CAACmyB,aAAa,GAAG,IAAIC,OAAO,MAAC,GAAM,IAAI,CAACF,YAAY,CAACzS,IAAI,CAAC,OAAK,MAAO,EAAA,GAAA,CAAA,CAAA;AAC5E,SAAA;;AAjBSuS,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAoBXK,IAAAA,MAAAA,CAAAA,kBAYC,GAZDA,SAAAA,kBAAAA,CAAmB3sB,IAAc,EAAA;;AACX,QAAA,IAAA,UAAA,CAAA;QAApB,IAAIA,IAAAA,CAAKrG,MAAM,MAAA,CAAK,UAAA,GAAA,IAAI,CAACqG,IAAI,KAAA,IAAA,GAAA,KAAA,CAAA,GAAT,UAAWrG,CAAAA,MAAM,CAAE,EAAA;YACrC,MAAMV,cAAAA,CAAeY,aAAa,CAAC,2BAA6B+K,EAAAA,WAAAA,CAAYgoB,iBAAiB,EAAE,EAAA,EAAI,IAAI,CAAC3yB,QAAQ,CAAA,CAAA;AAClH,SAAA;QAEA,IAAI+F,IAAAA,CAAKrG,MAAM,KAAK,CAAG,EAAA;AACrB,YAAA,OAAO,IAAI,CAAC4yB,IAAI,CAACjyB,MAAM,CAAA;AACzB,SAAA;AAEA,QAAA,OAAO,IAAI,CAACiyB,IAAI,CAACjyB,MAAM,CAACY,OAAO,CAAC,IAAI,CAACuxB,aAAa,EAAE,SAACI,CAAAA,EAAAA;AACnD,YAAA,OAAO7sB,IAAI,CAAC,KAAA,CAAKwsB,YAAY,CAACtwB,OAAO,CAAC2wB,CAAG,CAAA,CAAA,CAAA;AAC3C,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAhCWP,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YAIP1vB,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,CAAC,CAAC,IAAI,CAACoD,IAAI,CAAA;AACpB,aAAA;;;AANWssB,IAAAA,OAAAA,WAAAA,CAAAA;AAiCZ,CAAA,EAAA;;AC7Bc,IAAA,gBAAA,iBAAA,SAAA,UAAA,EAAA;AAAMQ,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,gBAAAA,CA6BjB9yB,MAAc,EAAA;;AAMd,QAAA,KAAA,GAAA,UAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,uBAfA+yB,QAAW,GAAA,CAAA,CAAA;;;AApBAD,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AA0CnBE,IAAAA,MAAAA,CAAAA,wBAaC,GAbDA,SAAAA,wBAAAA,CAAyBC,cAAsB,EAAA;AAC7C,QAAA,IAAMC,SAAsB,EAAE,CAAA;AAC9B,QAAA,MAAO,IAAM,CAAA;YACX,IAAI,CAACzN,SAAS,CAAC,IAAA,CAAA,CAAA;AACf,YAAA,IAAIZ,UAAUsC,OAAO,CAAC,IAAI,CAAC9B,cAAc,EAAK,CAAA,EAAA;AAC5C6N,gBAAAA,MAAAA,CAAO3zB,IAAI,CAAC,IAAI,CAAC4zB,QAAQ,EAAA,CAAA,CAAA;AAC3B,aAAA,MAAO,IAAI,IAAI,CAAC/N,UAAU,OAAO6N,cAAgB,EAAA;gBAC/C,IAAI,CAAC1N,OAAO,CAAC,CAAA,CAAA,CAAA;gBACb,OAAO2N,MAAAA,CAAAA;aACF,MAAA;gBACL,IAAI,CAAC3N,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA4N,MAAAA,CAAAA,QAwBC,GAxBDA,SAAAA,QAAAA,GAAAA;;AAEE,QAAA,MAAO,CAACtO,SAAAA,CAAUsC,OAAO,CAAC,IAAI,CAAC9B,cAAc,EAAA,CAAA,IAAO,CAAC,IAAI,CAACF,KAAK,EAAI,CAAA;YACjE,IAAI,CAACI,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;QAEA,IAAI,IAAI,CAACJ,KAAK,EAAI,EAAA;YAChB,OAAOxkB,GAAAA,CAAAA;AACT,SAAA;QAEA,IAAMlC,KAAAA,GAAQ,IAAI,CAACqmB,aAAa,CAAA;QAChC,MAAOD,SAAAA,CAAUuC,OAAO,CAAC,IAAI,CAAC/B,cAAc,EAAA,CAAA,IAAO,CAAC,IAAI,CAACF,KAAK,EAAI,CAAA;YAChE,IAAI,CAACI,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;QACA,IAAM7mB,GAAAA,GAAM,IAAI,CAAComB,aAAa,CAAA;AAC9B,QAAA,IAAMkG,OAAO,IAAI,CAACjG,OAAO,CAACqO,KAAK,CAAC30B,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAIA,QAAQD,KAAO,EAAA;AACjB,YAAA,IAAI,CAACynB,UAAU,CAAC,IAAI,CAACjB,iBAAiB,CAAC,CAAI,CAAA,EAAA,gBAAA,CAAA,CAAA;AAC7C,SAAA;AAEA,QAAA,IAAMjS,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AACd0tB,QAAAA,IAAAA,mCAAAA,CAAAA;QAAlB,IAAMO,SAAAA,GAAYP,CAAAA,mCAAAA,GAAAA,gBA9EDA,CA8EkB3H,YAAY,CAACH,IAAK,CAAA,KAAA,IAAA,GAAnC8H,mCAAuCV,GAAAA,gBAAAA,CAAiB1hB,EAAE,CAAA;QAC5EsC,KAAMxU,CAAAA,GAAG,CAAC60B,SAAWrI,EAAAA,IAAAA,EAAM,IAAI,CAAC/F,iBAAiB,CAAC+F,IAAAA,CAAKrrB,MAAM,CAAA,CAAA,CAAA;QAC7D,OAAOqT,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAS0U,CAAAA,SAkCR,GAlCD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAI,CAAC9B,oBAAoB,EAAA,CAAA;QACzB,IAAI,IAAI,CAACT,KAAK,EAAI,EAAA;AAChB,YAAA,OAAA;AACF,SAAA;QACA,IAAMnlB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAC3B,IAAItmB,KAAAA,GAAQ,IAAI,CAACqmB,aAAa,CAAA;AAC9B,QAAA,IAAIle,KAAQ,GAAA,KAAA,CAAA;QACZ,IAAK,IAAIlH,IAAIM,MAAOL,CAAAA,MAAM,EAAE,IAAI,CAACmlB,aAAa,GAAGplB,CAAK,EAAA;YACpD,IA5FeozB,gBA4FMQ,CAAAA,eAAe,CAACtzB,MAAAA,CAAOslB,UAAU,CAAC,IAAI,CAACR,aAAa,CAAI,CAAA,EAAA;gBAC3E,IAAI,CAACS,OAAO,CAAC,CAAA,CAAA,CAAA;gBACb3e,KAAQ,GAAA,IAAA,CAAA;aACH,MAAA;AACL,gBAAA,IAAIA,KAAO,EAAA;AACT,oBAAA,MAAA;AACF,iBAAA;gBACA,IAAI,CAAC2e,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAI,CAACK,oBAAoB,EAAA,CAAA;gBACzBnnB,KAAQ,GAAA,IAAI,CAACqmB,aAAa,CAAA;AAC5B,aAAA;AACF,SAAA;AAEA,QAAA,IAAMxkB,SAASN,MAAOozB,CAAAA,KAAK,CAAC30B,KAAO,EAAA,IAAI,CAACqmB,aAAa,CAAA,CAAA;AACrD,QAAA,IAAM9R,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AACnB0tB,QAAAA,IAAAA,qCAAAA,CAAAA;QAAb,IAAM3zB,IAAAA,GAAO2zB,CAAAA,qCAAAA,GAAAA,gBA3GIA,CA2Ga3H,YAAY,CAAC7qB,MAAO,CAAA,KAAA,IAAA,GAArCwyB,qCAAyCV,GAAAA,gBAAAA,CAAiB1hB,EAAE,CAAA;QACzEsC,KAAMxU,CAAAA,GAAG,CAACW,IAAAA,EAAMmB,MAAQ,EAAA,IAAI,CAAC2kB,iBAAiB,CAAC,IAAI,CAACH,aAAa,GAAGrmB,KAAAA,CAAAA,CAAAA,CAAAA;QAEpE,IAAIU,IAAAA,KAASkzB,kBAAmB3F,CAAAA,EAAE,IAAIvtB,IAAAA,KAASkzB,kBAAmBkB,CAAAA,KAAK,IAAIp0B,IAAAA,KAASkzB,kBAAmBmB,CAAAA,MAAM,EAAE;AAC7G,YAAA,IAAI,CAACT,QAAQ,EAAA,CAAA;AACf,SAAA,MAAO,IAAI5zB,IAAAA,KAASkzB,kBAAmBoB,CAAAA,KAAK,EAAE;AAC5C,YAAA,IAAI,CAACV,QAAQ,EAAA,CAAA;AACf,SAAA;QAEA,OAAO/f,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA0gB,MAAAA,CAAAA,gBA+BC,GA/BDA,SAAAA,gBAAAA,GAAAA;QACE,IAAI,CAACjO,SAAS,CAAC,IAAA,CAAA,CAAA;QACf,IAAMzlB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAC3B,IAAM+B,YAAAA,GAAe9mB,OAAOL,MAAM,CAAA;AAClC,QAAA,IAAMlB,KAAQ,GAAA,IAAI,CAACwmB,iBAAiB,CAAC,CAAA,CAAA,CAAA;QAErC,IAAIpmB,KAAAA,GAAQ,IAAI,CAACimB,aAAa,CAAA;;AAG9B,QAAA,IAAI9kB,MAAOslB,CAAAA,UAAU,CAACzmB,KAAAA,CAAAA,KAAW,EAAI,EAAA;;YAEnC,IAAI,CAACqnB,UAAU,CAACznB,KAAO,EAAA,gCAAA,CAAA,CAAA;AACzB,SAAA;QAEA,IAAMk1B,YAAAA,GAAe,EAAE90B,KAAAA,CAAAA;;AAGvB,QAAA,MAAOA,QAAQioB,YAAgB9mB,IAAAA,MAAAA,CAAOslB,UAAU,CAACzmB,WAAW,EAAI,CAAA;AAC9DA,YAAAA,KAAAA,EAAAA,CAAAA;AACF,SAAA;AAEA,QAAA,IAAIA,SAASioB,YAAc,EAAA;AACzB,YAAA,IAAI,CAACZ,UAAU,CAAC,IAAI,CAACjB,iBAAiB,CAAC,CAAI,CAAA,EAAA,gCAAA,CAAA,CAAA;AAC7C,SAAA;AAEA,QAAA,IAAM3kB,MAASN,GAAAA,MAAAA,CAAOozB,KAAK,CAACO,YAAc90B,EAAAA,KAAAA,CAAAA,CAAAA;QAC1C,IAAI,CAAC0mB,OAAO,CAAC1mB,KAAAA,GAAQ,IAAI,IAAI,CAACimB,aAAa,CAAA,CAAA;AAE3C,QAAA,IAAM9R,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,QAAAA,KAAAA,CAAMxU,GAAG,CAAC4zB,gBAAiBwB,CAAAA,YAAY,EAAEtzB,MAAQ7B,EAAAA,KAAAA,CAAAA,CAAAA;QACjD,OAAOuU,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA6gB,IAAAA,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAAA,CAAWC,IAAY,EAAA;QACrB,IAAM9zB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;AAC3B,QAAA,MAAO/kB,MAAM,CAAC,IAAI,CAAC8kB,aAAa,CAAC,KAAKgP,IAAAA,IAAQ,CAAC,IAAI,CAAC3O,KAAK,EAAI,CAAA;YAC3D,IAAI,CAACI,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;IAEAwO,MAAAA,CAAAA,mBAyBC,GAzBDA,SAAAA,mBAAAA,GAAAA;AAIE,QAAA,IAAMC,cAAiB,GAAA,IAAI,CAAC/O,iBAAiB,CAAC,CAAA,CAAA,CAAA;QAC9C,IAAMgP,UAAAA,GAAa,IAAI,CAAClB,QAAQ,CAAA;QAEhC,IAAImB,aAAAA,GAAgB,IAAI,CAACxM,SAAS,EAAA,CAAA;AAClC,QAAA,MAAO,IAAM,CAAA;YACX,IAAQvoB,OAAS+0B,aAAT/0B,CAAAA,IAAAA,CAAAA;YACR,IAAIA,IAAAA,KAASkzB,mBAAmBoB,KAAK,IAAIQ,aAAa,CAAM,KAAA,IAAI,CAAClB,QAAQ,EAAE;AACzE,gBAAA,MAAA;AACF,aAAA,MAAO,IACL,CAAC5zB,IAASkzB,KAAAA,kBAAAA,CAAmB8B,IAAI,IAAIh1B,IAAAA,KAASkzB,kBAAmB/F,CAAAA,IAAI,KACrE2H,UAAAA,KAAe,IAAI,CAAClB,QAAQ,EAC5B;AACA,gBAAA,MAAA;AACF,aAAA;YACAmB,aAAgB,GAAA,IAAI,CAACxM,SAAS,EAAA,CAAA;AAChC,SAAA;AAEA,QAAA,IAAMpnB,SAAS,IAAI,CAACykB,OAAO,CAACqO,KAAK,CAACY,cAAen1B,CAAAA,KAAK,EAAE,IAAI,CAACimB,aAAa,GAAGoP,cAAc5zB,MAAM,CAACX,MAAM,GAAG,CAAA,CAAA,CAAA;AAC3G,QAAA,IAAM4yB,IAAOlyB,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAC/BmtB,QAAAA,IAAAA,CAAK/zB,GAAG,CAAC4zB,gBAAiBvtB,CAAAA,KAAK,EAAEvE,MAAQ0zB,EAAAA,cAAAA,CAAAA,CAAAA;QACzC,OAAO;YAAEzB,IAAAA,EAAAA,IAAAA;YAAM2B,aAAAA,EAAAA,aAAAA;AAAc,SAAA,CAAA;AAC/B,KAAA,CAAA;AAEAE,IAAAA,MAAAA,CAAAA,eAeC,GAfDA,SAAAA,eAAgBC,CAAAA,EAAU,EAAEC,EAAU,EAAA;QACpC,IAAI,CAACT,UAAU,CAACQ,EAAAA,CAAAA,CAAAA;AAChB,QAAA,IAAIrN,KAAQ,GAAA,CAAA,CAAA;QACZ,IAAMhnB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAE3B,GAAG;AACD,YAAA,IAAMiD,UAAUhoB,MAAM,CAAC,IAAI,CAAC8kB,aAAa,CAAC,CAAA;AAE1C,YAAA,IAAIkD,YAAYqM,EAAI,EAAA;AAClBrN,gBAAAA,KAAAA,EAAAA,CAAAA;aACK,MAAA,IAAIgB,YAAYsM,EAAI,EAAA;AACzBtN,gBAAAA,KAAAA,EAAAA,CAAAA;AACF,aAAA;YACA,IAAI,CAACzB,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA,OAASyB,QAAQ,CAAG,EAAA;AACtB,KAAA,CAAA;AAEA;;MAGAuN,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,eAAAA,GAAAA;QACE,IAAMC,QAAAA,GAAW,IAAI,CAACzB,QAAQ,CAAA;QAC9B,IAAI0B,SAAAA,GAAY,IAAI,CAAC/M,SAAS,EAAA,CAAA;AAC9B,QAAA,MAAO,CAAC,IAAI,CAACvC,KAAK,EAAOsP,KAAAA,UAAUt1B,IAAI,KAAKkzB,kBAAmBoB,CAAAA,KAAK,IAAIe,QAAW,GAAA,CAAA,KAAM,IAAI,CAACzB,QAAQ,CAAG,CAAA;YACvG0B,SAAY,GAAA,IAAI,CAAC/M,SAAS,EAAA,CAAA;AAC5B,SAAA;QACA,OAAO,IAAI,CAACzC,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,KAAA,CAAA;IAEAyP,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,GAAAA;QACE,IAAIC,OAAAA,GAAU,IAAI,CAAC7P,aAAa,CAAA;QAChC,MAAO,IAAA,CAAKhhB,IAAI,CAAC,IAAI,CAACihB,OAAO,CAAC4P,QAAQ,CAAG,CAAA;YACvCA,OAAW,IAAA,CAAA,CAAA;AACb,SAAA;AACA,QAAA,OAAO,IAAI,CAAC5P,OAAO,CAAC4P,OAAQ,CAAA,CAAA;AAC9B,KAAA,CAAA;IAEAC,MAAAA,CAAAA,WAaC,GAbDA,SAAAA,WAAAA,GAAAA;QACE,IAAMn2B,KAAAA,GAAQ,IAAI,CAACqmB,aAAa,CAAA;AAChC,QAAA,MAAOD,UAAUqC,OAAO,CAAC,IAAI,CAAC7B,cAAc,EAAK,CAAA,CAAA;YAC/C,IAAI,CAACE,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAI,IAAI,CAACT,aAAa,KAAKrmB,KAAO,EAAA;AAChC,YAAA,IAAI,CAACynB,UAAU,CAAC,IAAI,CAACjB,iBAAiB,CAAC,CAAI,CAAA,EAAA,kBAAA,CAAA,CAAA;AAC7C,SAAA;QACA,IAAM4P,OAAAA,GAAU,IAAI,CAAC9P,OAAO,CAACqO,KAAK,CAAC30B,KAAAA,EAAO,IAAI,CAACqmB,aAAa,CAAA,CAAA;AAE5D,QAAA,IAAM9R,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;QAChC4N,KAAMxU,CAAAA,GAAG,CAAC4zB,gBAAiB0C,CAAAA,YAAY,EAAED,OAAS,EAAA,IAAI,CAAC5P,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA;QACzE,OAAOjS,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA+hB,MAAAA,CAAAA,aA0DC,GA1DDA,SAAAA,aAAAA,GAAAA;QACE,IAAI,CAACtP,SAAS,CAAC,KAAA,CAAA,CAAA;AACf,QAAA,IAAInlB,MAAS,GAAA,EAAA,CAAA;QACb,IAAMN,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAC3B,IAAM+B,YAAAA,GAAe9mB,OAAOL,MAAM,CAAA;AAElC,QAAA,IAAMlB,KAAQ,GAAA,IAAI,CAACwmB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACrC,QAAA,MAAO,IAAI,CAACH,aAAa,GAAGgC,YAAc,CAAA;AACxC,YAAA,IAAMhB,WAAW9lB,MAAOslB,CAAAA,UAAU,CAAC,IAAI,CAACR,aAAa,CAAA,CAAA;;AAGrD,YAAA,IAAIgB,aAAa,EAAI,EAAA;AACnB,gBAAA,MAAA;AACF,aAAA;;AAGA,YAAA,IAAIA,aAAa,EAAI,EAAA;AACnB,gBAAA,IAAMkP,SAAY,GAAA,IAAI,CAAClQ,aAAa,GAAG,CAAA,CAAA;AACvC,gBAAA,IAAIkQ,YAAYlO,YAAc,EAAA;oBAC5B,IAAMmO,YAAAA,GAAej1B,MAAOslB,CAAAA,UAAU,CAAC0P,SAAAA,CAAAA,CAAAA;;AAGvC,oBAAA,IAAIC,iBAAiB,EAAI,EAAA;AACvB,wBAAA,MAAA;AACF,qBAAA;;AAGA,oBAAA,IAAIA,iBAAiB,EAAI,EAAA;AACvB,wBAAA,IAAI,CAAC1P,OAAO,CAAC,CAAA,CAAA,CAAA;;AAGb,wBAAA,MAAO,IAAI,CAACT,aAAa,GAAG,IAAIgC,YAAc,CAAA;4BAC5C,IAAMC,YAAAA,GAAe,IAAI,CAACjC,aAAa,CAAA;4BACvC,IAAI9kB,MAAAA,CAAOslB,UAAU,CAACyB,YAAkB,CAAA,KAAA,EAAA,IAAM/mB,OAAOslB,UAAU,CAACyB,YAAe,GAAA,CAAA,CAAA,KAAO,EAAI,EAAA;AACxF,gCAAA,IAAI,CAACxB,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gCAAA,MAAA;AACF,6BAAA;4BACA,IAAI,CAACA,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,yBAAA;AAEAjlB,wBAAAA,MAAAA,IAAU;AACV,wBAAA,SAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;;AAGAA,YAAAA,MAAAA,IAAUN,MAAM,CAAC,IAAI,CAAC8kB,aAAa,CAAC,CAAA;YACpC,IAAI,CAACS,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AAEA,QAAA,IAAIjlB,WAAW,EAAI,EAAA;YACjB,OAAO,IAAA,CAAA;AACT,SAAA;AAEA,QAAA,IAAM40B,UAAa70B,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AACrC8vB,QAAAA,UAAAA,CAAW12B,GAAG,CAAC4zB,gBAAiB+C,CAAAA,WAAW,EAAE70B,MAAAA,EAAQE,SAAUE,CAAAA,WAAW,CAACjC,KAAAA,EAAO,IAAI,CAACwmB,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA;QACzG,OAAOiQ,UAAAA,CAAAA;AACT,KAAA,CAAA;AAxSmBpC,IAAAA,gBAAAA,CACJQ,eAKd,GALD,SAAeA,eAAAA,CAAgBxN,QAAgB,EAAA;QAC7C,OACEA,QAAAA,KAAa;QACbjB,SAAUuC,CAAAA,OAAO,CAACtB,QAAAA,CAAAA;;AAEtB,KAAA,CAAA;AANmBgN,IAAAA,OAAAA,gBAAAA,CAAAA;AAAyBjO,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA;AAAzBiO,gBAAAA,CAQJ3H,YAAmD,GAAA;AAChE,IAAA,SAAA,EAAWkH,mBAAmB+C,MAAM;AACpC,IAAA,QAAA,EAAU/C,mBAAmBgD,KAAK;AAClC,IAAA,KAAA,EAAOhD,mBAAmB3F,EAAE;AAC5B,IAAA,QAAA,EAAU2F,mBAAmBkB,KAAK;AAClC,IAAA,SAAA,EAAWlB,mBAAmBmB,MAAM;AACpC,IAAA,OAAA,EAASnB,mBAAmB/F,IAAI;AAChC,IAAA,OAAA,EAAS+F,mBAAmB8B,IAAI;AAChC,IAAA,QAAA,EAAU9B,mBAAmBoB,KAAK;AAClC6B,IAAAA,OAAAA,EAASjD,mBAAmBiD,OAAO;AACrC,CAAA;;ACxBK,IAAA,OAAA,iBAAA,WAAA;AAAMC,IAAAA,SAAAA,OAAAA,GAAAA,EAAAA;AAAAA,IAAAA,OAAAA,CACJC,MA8BN,GA9BD,SAAOA,MACLC,CAAAA,QAAyB,EACzBz1B,MAAc,EAAA;AAKd,QAAA,IAAM6f,MAAgB,EAAE,CAAA;AACxB,QAAA,IAAI6V,QAAW,GAAA,CAAA,CAAA;AACf,QAAA,IAAIC,YAAe,GAAA,CAAA,CAAA;AAEnB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAkBF,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBG,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMC,WAAAA,GAAc71B,MAAOozB,CAAAA,KAAK,CAACsC,QAAAA,EAAUE,IAAIE,YAAY,CAACr3B,KAAK,CAACI,KAAK,CAAA,CAAA;AACvEghB,YAAAA,GAAAA,CAAItgB,IAAI,CAACs2B,WAAaD,EAAAA,GAAAA,CAAI10B,OAAO,CAAA,CAAA;YAEjC,IAAM60B,eAAAA,GAAkBJ,eAAeE,WAAYl2B,CAAAA,MAAM,GAAGi2B,GAAI10B,CAAAA,OAAO,CAACvB,MAAM,CAAA;AAU9E+1B,YAAAA,QAAAA,GAAWE,GAAIE,CAAAA,YAAY,CAACp3B,GAAG,CAACG,KAAK,CAAA;YACrC82B,YAAeI,GAAAA,eAAAA,CAAAA;AACjB,SAAA;AACAlW,QAAAA,GAAAA,CAAItgB,IAAI,CAACS,MAAOozB,CAAAA,KAAK,CAACsC,QAAAA,CAAAA,CAAAA,CAAAA;QACtB,OAAO7V,GAAAA,CAAIE,IAAI,CAAC,EAAA,CAAA,CAAA;AAClB,KAAA,CAAA;AA/BWwV,IAAAA,OAAAA,OAAAA,CAAAA;AAgCZ,CAAA,EAAA;;ACdD,iBACO,IAAMS,WAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,WAAAA,CAaJn1B,KASN,GATD,SAAOA,KAAMb,CAAAA,MAAc,EAAE6jB,MAAqB,EAAA;AAbvCmS,QAAAA,WAAAA,CAcGC,MAAM,EAAA,CAAA;AAElB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoBpS,MAAQ,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBI,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AAhBF+R,YAAAA,WAAAA,CAiBKE,mBAAmB,CAACjS,KAAAA,CAAM7gB,IAAI,EAAE6gB,MAAMjiB,KAAK,CAAA,CAAA;AACzD,SAAA;AAEA,QAAA,IAAI,CAACm0B,KAAK,GAAG,IAAIrD,gBAAiB9yB,CAAAA,MAAAA,CAAAA,CAAAA;AAClC,QAAA,OAAOg2B,WAAYI,CAAAA,gBAAgB,CAAC,IAAI,CAACD,KAAK,CAAA,CAAA;AAChD,KAAA,CAAA;IAtBWH,WAwBIC,CAAAA,MAUd,GAVD,SAAeA,MAAAA,GAAAA;AACb,QAAA,IAAI,CAACI,oBAAoB,CAAC12B,MAAM,GAAG,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC02B,oBAAoB,CAAC92B,IAAI,CAAC,EAAE,CAAA,CAAA;QAEjC,IAAI,CAAC+2B,cAAc,CAAC12B,KAAK,EAAA,CAAA;QACzB,IAAI,CAACs2B,mBAAmB,CAAC,OAAA,CAAA,CAAA;AAK3B,KAAA,CAAA;AAlCWF,IAAAA,WAAAA,CAoCIE,mBAWd,GAXD,SAAeA,mBAAoBjS,CAAAA,KAAa,EAAEjiB,KAAc,EAAA;AAC9D,QAAA,IAAMgR,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAChC4N,QAAAA,KAAAA,CAAMxU,GAAG,CAAC4zB,gBAAiB1hB,CAAAA,EAAE,EAAEuT,KAAAA,CAAAA,CAAAA;QAE/B,IAAIsS,SAAAA,CAAAA;AACJ,QAAA,IAAIv0B,SAASqI,SAAW,EAAA;YACtBksB,SAAYl2B,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;AAC9BmxB,YAAAA,SAAAA,CAAU/3B,GAAG,CAAC4zB,gBAAiB1hB,CAAAA,EAAE,EAAE1O,KAAAA,CAAAA,CAAAA;AACrC,SAAA;QAEA,IAAI,CAACs0B,cAAc,CAAC93B,GAAG,CAACylB,KAAO,EAAA,IAAIqO,YAAYtf,KAAOujB,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AACxD,KAAA,CAAA;AA/CWP,IAAAA,WAAAA,CAiDII,gBA6Bd,GA7BD,SAAeA,gBAAAA,CAAiBD,KAAuB,EAAA;QACrD,IAAI1B,SAAAA,CAAAA;QACJ,MAAQA,SAAAA,GAAY0B,KAAMzO,CAAAA,SAAS,EAAK,CAAA;AACtC,YAAA,OAAQ+M,UAAUt1B,IAAI;AACpB,gBAAA,KAAKizB,iBAAiB1hB,EAAE;oBACtB,IAAI,CAAC8lB,WAAW,CAACL,KAAO1B,EAAAA,SAAAA,CAAAA,CAAAA;AACxB,oBAAA,MAAA;AACF,gBAAA,KAAKpC,mBAAmB+C,MAAM;oBAC5B,IAAI,CAACqB,YAAY,CAACN,KAAAA,CAAAA,CAAAA;AAClB,oBAAA,MAAA;AACF,gBAAA,KAAK9D,mBAAmBgD,KAAK;oBAC3B,IAAI,CAACqB,WAAW,CAACP,KAAAA,CAAAA,CAAAA;AACjB,oBAAA,MAAA;AACF,gBAAA,KAAK9D,mBAAmB3F,EAAE;AACxB,oBAAA,IAAI,CAACiK,iBAAiB,CAACR,KAAAA,EAAO9D,mBAAmB3F,EAAE,CAAA,CAAA;AACnD,oBAAA,MAAA;AACF,gBAAA,KAAK2F,mBAAmBmB,MAAM;AAC5B,oBAAA,IAAI,CAACmD,iBAAiB,CAACR,KAAAA,EAAO9D,mBAAmBmB,MAAM,CAAA,CAAA;AACvD,oBAAA,MAAA;AACF,gBAAA,KAAKnB,mBAAmBkB,KAAK;AAC3B,oBAAA,IAAI,CAACoD,iBAAiB,CAACR,KAAAA,EAAO9D,mBAAmBkB,KAAK,CAAA,CAAA;AACtD,oBAAA,MAAA;AACJ,aAAA;AACF,SAAA;QAKA,OAAOgC,OAAAA,CAAQC,MAAM,CAAC,IAAI,CAACoB,kBAAkB,EAAA,EAAIT,KAAMn2B,CAAAA,MAAM,EAAEm2B,KAAAA,CAAMU,SAAS,CAAA,CAAA;AAChF,KAAA,CAAA;IA9EWb,WAgFIY,CAAAA,kBAEd,GAFD,SAAeA,kBAAAA,GAAAA;QACb,OAAO,IAAI,CAACP,oBAAoB,CAAC,IAAI,CAACA,oBAAoB,CAAC12B,MAAM,GAAG,CAAE,CAAA,CAAA;AACxE,KAAA,CAAA;IAlFWq2B,WAoFI1V,CAAAA,YAKd,GALD,SAAeA,YAAa5S,CAAAA,GAAiC,EAAE5N,OAAe,EAAEE,MAAc,EAAEE,IAAa,EAAA;QAC7FjB,eAAeY,aAAa,CAACC,SAAS8K,aAAYgoB,CAAAA,iBAAiB,EAAE5yB,MAAAA,EAAQ0N,GAAKxN,EAAAA,IAAAA,EAAAA;AAIlG,KAAA,CAAA;AAzFW81B,IAAAA,WAAAA,CA2FIW,iBAyCd,GAzCD,SAAeA,iBAAkBR,CAAAA,KAAuB,EAAEW,aAAiC,EAAA;AACzF,QAAA,IAAMC,eACJD,GAAAA,aAAAA,KAAkBzE,kBAAmB3F,CAAAA,EAAE,GAAG,CAAA,GAAIoK,aAAkBzE,KAAAA,kBAAAA,CAAmBkB,KAAK,GAAG,CAAI,GAAA,CAAA,CAAA;QACjG,IAAM90B,KAAAA,GAAQ03B,KAAMpP,CAAAA,YAAY,GAAGgQ,eAAAA,CAAAA;AACnC,QAAA,IAAIC,SAAY,GAAA,KAAA,CAAA;QAEhB,IAAIC,aAAAA,CAAAA;QACJ,IAAIH,aAAAA,KAAkBzE,kBAAmB3F,CAAAA,EAAE,EAAE;YAC3CuK,aAAgB,GAAA,IAAI,CAACC,wBAAwB,CAACf,KAAAA,CAAAA,CAAAA;SACzC,MAAA;YACL,IAAMgB,UAAAA,GAAahB,MAAMhD,QAAQ,EAAA,CAAA;YACjC,IAAM7yB,MAAAA,GAAS62B,WAAW72B,MAAM,CAAA;YAChC,IAAIA,MAAAA,CAAO82B,UAAU,CAAC,KAAQ,CAAA,EAAA;gBAC5BJ,SAAY,GAAA,IAAA,CAAA;aACP,MAAA;AACL,gBAAA,IAAM1B,UAAU,IAAI,CAACgB,cAAc,CAAClxB,GAAG,CAAC9E,MAAAA,CAAAA,CAAAA;AACxC22B,gBAAAA,aAAAA,GAAgBH,kBAAkBzE,kBAAmBkB,CAAAA,KAAK,GAAG,CAAC,CAAC+B,UAAU,CAACA,OAAAA,CAAAA;AAC5E,aAAA;AACF,SAAA;AAEAa,QAAAA,KAAAA,CAAM1Q,SAAS,CAAC,IAAA,CAAA,CAAA;QAChB,IAAgC0Q,0BAAAA,GAAAA,MAAMpC,mBAAmB,EAAA,EAAjDxB,OAAwB4D,0BAAxB5D,CAAAA,IAAAA,EAAM2B,gBAAkBiC,0BAAlBjC,CAAAA,aAAAA,CAAAA;AAEd,QAAA,IAAI8C,SAAW,EAAA,OAAA;AAEf,QAAA,IAAIC,aAAe,EAAA;AACjB,YAAA,IAAMv4B,GACJw1B,GAAAA,aAAAA,CAAc/0B,IAAI,KAAKkzB,kBAAmBoB,CAAAA,KAAK,GAAG0C,KAAAA,CAAMlR,iBAAiB,CAAC,CAAKkR,CAAAA,GAAAA,KAAAA,CAAM5B,eAAe,EAAA,CAAA;YACtG,IAAM8C,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAAC/E,KAAKjyB,MAAM,EAAEiyB,IAAKtyB,CAAAA,QAAQ,EAAEk2B,KAAAA,CAAAA,CAAAA;AACpE,YAAA,IAAI,CAACoB,kBAAkB,CACrBpB,MAAMj2B,IAAI,EACVM,UAAUC,cAAc,CAAChC,KACzBC,CAAAA,EAAAA,GAAAA,EACA24B,SAASG,OAAO,EAChBrB,MAAMsB,UAAU,EAChBJ,SAASR,SAAS,CAAA,CAAA;SAEf,MAAA;YACL,IAAI,CAACa,gBAAgB,CAACvB,KAAO13B,EAAAA,KAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAI,CAACk5B,4BAA4B,CAACzD,aAAAA,CAAc/0B,IAAI,EAAEg3B,KAAAA,CAAAA,CAAAA;AACxD,SAAA;AACF,KAAA,CAAA;AApIWH,IAAAA,WAAAA,CAsII2B,4BA+Cd,GA/CD,SAAeA,4BACblD,CAAAA,SAAuF,EACvFmD,OAAyB,EAAA;QAEzB,IAAInD,SAAAA,KAAcpC,kBAAmBoB,CAAAA,KAAK,EAAE;AAC1C,YAAA,OAAA;AACF,SAAA;QAEA,IAAMh1B,KAAAA,GAAQm5B,QAAQ7Q,YAAY,CAAA;QAElC,IAAI0N,SAAAA,KAAcpC,kBAAmB/F,CAAAA,IAAI,EAAE;AACzC,YAAA,IAAM,IAAEiG,GAASqF,OAAQ7D,CAAAA,mBAAmB,EAApCxB,CAAAA,IAAAA,CAAAA;YACR,IAAM8E,QAAAA,GAAW,IAAI,CAACC,iBAAiB,CAAC/E,KAAKjyB,MAAM,EAAEiyB,IAAKtyB,CAAAA,QAAQ,EAAE23B,OAAAA,CAAAA,CAAAA;YACpE,IAAI,CAACL,kBAAkB,CACrBK,OAAAA,CAAQ13B,IAAI,EACZM,SAAAA,CAAUC,cAAc,CAAChC,KAAAA,CAAAA,EACzBm5B,QAAQ3S,iBAAiB,CAAC,IAC1BoS,QAASG,CAAAA,OAAO,EAChBI,OAAQH,CAAAA,UAAU,EAClBJ,QAAAA,CAASR,SAAS,CAAA,CAAA;AAEtB,SAAA,MAAO,IAAIpC,SAAAA,KAAcpC,kBAAmB8B,CAAAA,IAAI,EAAE;AAChD,YAAA,IAAM0D,YAAe,GAAA,IAAI,CAACX,wBAAwB,CAACU,OAAAA,CAAAA,CAAAA;YACnD,IAAgCA,4BAAAA,GAAAA,QAAQ7D,mBAAmB,EAAA,EAAnDxB,QAAwBqF,4BAAxBrF,CAAAA,IAAAA,EAAM2B,gBAAkB0D,4BAAlB1D,CAAAA,aAAAA,CAAAA;AACd,YAAA,IAAI2D,YAAc,EAAA;AAChB,gBAAA,IAAMn5B,GACJw1B,GAAAA,aAAAA,CAAc/0B,IAAI,KAAKkzB,kBAAmBoB,CAAAA,KAAK,GAAGmE,OAAAA,CAAQ7Q,YAAY,GAAG6Q,OAAQrD,CAAAA,eAAe,GAAG11B,KAAK,CAAA;gBAC1G,IAAMw4B,SAAAA,GAAW,IAAI,CAACC,iBAAiB,CAAC/E,MAAKjyB,MAAM,EAAEiyB,KAAKtyB,CAAAA,QAAQ,EAAE23B,OAAAA,CAAAA,CAAAA;gBACpE,IAAI,CAACL,kBAAkB,CACrBK,OAAAA,CAAQ13B,IAAI,EACZM,SAAAA,CAAUC,cAAc,CAAChC,KAAAA,CAAAA,EACzB+B,UAAUC,cAAc,CAAC/B,MACzB24B,SAASG,CAAAA,OAAO,EAChBI,OAAQH,CAAAA,UAAU,EAClBJ,SAAAA,CAASR,SAAS,CAAA,CAAA;aAEf,MAAA;AACL,gBAAA,IAAI,CAACU,kBAAkB,CACrBK,QAAQ13B,IAAI,EACZM,UAAUC,cAAc,CAAChC,KACzB+B,CAAAA,EAAAA,SAAAA,CAAUC,cAAc,CAACm3B,OAAAA,CAAQ7Q,YAAY,CAC7C,EAAA,EAAA,EACA6Q,QAAQH,UAAU,CAAA,CAAA;AAEpB,gBAAA,IAAI,CAACE,4BAA4B,CAACzD,aAAAA,CAAc/0B,IAAI,EAAEy4B,OAAAA,CAAAA,CAAAA;AACxD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AArLW5B,IAAAA,WAAAA,CAuLIkB,wBAGd,GAHD,SAAeA,wBAAAA,CAAyBU,OAAyB,EAAA;AAC/DA,QAAAA,OAAAA,CAAQnS,SAAS,CAAC,IAAA,CAAA,CAAA;QAClB,OAAO,IAAI,CAACqS,yBAAyB,CAACF,OAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AA1LW5B,IAAAA,WAAAA,CA4LI8B,yBAUd,GAVD,SAAeA,yBAAAA,CAA0BF,OAAyB,EAAA;AAChE,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACC,0BAA0B,CAACJ,OAAAA,CAAAA,CAAAA;QACjD,IAAM5lB,QAAAA,GAAW4lB,OAAQ7R,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;QAC9B,IAAI/T,QAAAA,IAAYA,aAAa,IAAM,EAAA;AACjC4lB,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBqS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACH,yBAAyB,CAACF,OAAAA,CAAAA,CAAAA;AAChD,YAAA,OAAOG,QAAYE,IAAAA,QAAAA,CAAAA;AACrB,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAtMW/B,IAAAA,WAAAA,CAwMIgC,0BAUd,GAVD,SAAeA,0BAAAA,CAA2BJ,OAAyB,EAAA;AACjE,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACG,wBAAwB,CAACN,OAAAA,CAAAA,CAAAA;QAC/C,IAAM5lB,QAAAA,GAAW4lB,OAAQ7R,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;QAC9B,IAAI/T,QAAAA,IAAYA,aAAa,IAAM,EAAA;AACjC4lB,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBqS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACD,0BAA0B,CAACJ,OAAAA,CAAAA,CAAAA;AACjD,YAAA,OAAOG,QAAYE,IAAAA,QAAAA,CAAAA;AACrB,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAlNW/B,IAAAA,WAAAA,CAoNIkC,wBAed,GAfD,SAAeA,wBAAAA,CAAyBN,OAAyB,EAAA;AAC/D,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACI,0BAA0B,CAACP,OAAAA,CAAAA,CAAAA;QACjD,IAAM5lB,QAAAA,GAAW4lB,OAAQ7R,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAC9B,QAAA,IAAI/T,QAAY,IAAA;AAAC,YAAA,IAAA;AAAM,YAAA,IAAA;SAAK,CAAComB,QAAQ,CAACpmB,QAAW,CAAA,EAAA;AAC/C4lB,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBqS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACC,wBAAwB,CAACN,OAAAA,CAAAA,CAAAA;YAC/C,OAAQ5lB,QAAAA;gBACN,KAAK,IAAA;AACH,oBAAA,OAAO+lB,QAAaE,KAAAA,QAAAA,CAAAA;gBACtB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAaE,KAAAA,QAAAA,CAAAA;AACxB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AAnOW/B,IAAAA,WAAAA,CAqOImC,0BAyBd,GAzBD,SAAeA,0BAAAA,CAA2BP,OAAyB,EAAA;AACjE,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACM,qBAAqB,CAACT,OAAAA,CAAAA,CAAAA;QAC5C,IAAI5lB,QAAAA,GAAW4lB,OAAQ7R,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;QAC5B,IAAI/T,QAAQ,CAAC,CAAE,CAAA,KAAK,KAAKA,QAAWA,GAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA;AAC/C,QAAA,IAAIA,QAAY,IAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,IAAA;AAAM,YAAA,IAAA;SAAK,CAAComB,QAAQ,CAACpmB,QAAW,CAAA,EAAA;YACzD,IAAMsmB,KAAAA,GAAQV,OAAQ3S,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;YACxC2S,OAAQrS,CAAAA,OAAO,CAACvT,QAAAA,CAASrS,MAAM,CAAA,CAAA;AAC/Bi4B,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACE,0BAA0B,CAACP,OAAAA,CAAAA,CAAAA;AACjD,YAAA,IAAI,CAAA,OAAOG,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAACzX,YAAY,CAACgY,KAAAA,EAAO,4CAA4CV,OAAQ53B,CAAAA,MAAM,EAAE43B,OAAAA,CAAQ13B,IAAI,CAAA,CAAA;AACjG,gBAAA,OAAA;AACF,aAAA;YACA,OAAQ8R,QAAAA;gBACN,KAAK,GAAA;AACH,oBAAA,OAAO+lB,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAYE,IAAAA,QAAAA,CAAAA;gBACrB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAYE,IAAAA,QAAAA,CAAAA;AACvB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AA9PW/B,IAAAA,WAAAA,CAgQIqC,qBAqBd,GArBD,SAAeA,qBAAAA,CAAsBT,OAAyB,EAAA;AAC5D,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACQ,wBAAwB,CAACX,OAAAA,CAAAA,CAAAA;QAC/C,IAAM5lB,QAAAA,GAAW4lB,OAAQ7R,CAAAA,IAAI,CAAC,CAAA,CAAA,CAAA;AAC9B,QAAA,IAAI/T,QAAY,IAAA;AAAC,YAAA,IAAA;AAAM,YAAA,IAAA;SAAK,CAAComB,QAAQ,CAACpmB,QAAW,CAAA,EAAA;YAC/C,IAAMsmB,KAAAA,GAAQV,OAAQ3S,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACxC2S,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBqS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACI,qBAAqB,CAACT,OAAAA,CAAAA,CAAAA;AAC5C,YAAA,IAAI,CAAA,OAAOG,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAACzX,YAAY,CAACgY,KAAAA,EAAO,yCAAyCV,OAAQ53B,CAAAA,MAAM,EAAE43B,OAAAA,CAAQ13B,IAAI,CAAA,CAAA;AAC9F,gBAAA,OAAA;AACF,aAAA;YACA,OAAQ8R,QAAAA;gBACN,KAAK,IAAA;AACH,oBAAA,OAAO+lB,QAAYE,IAAAA,QAAAA,CAAAA;gBACrB,KAAK,IAAA;AACH,oBAAA,OAAOF,QAAYE,IAAAA,QAAAA,CAAAA;AACvB,aAAA;AACF,SAAA;QAEA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AArRW/B,IAAAA,WAAAA,CAuRIuC,wBAqBd,GArBD,SAAeA,wBAAAA,CAAyBX,OAAyB,EAAA;AAC/D,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACS,2BAA2B,CAACZ,OAAAA,CAAAA,CAAAA;QAClD,IAAI;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA,CAACQ,QAAQ,CAACR,OAAQxS,CAAAA,UAAU,EAAK,CAAA,EAAA;YAC7C,IAAMkT,KAAAA,GAAQV,OAAQ3S,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACxC2S,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;YAEhB,IAAMvT,QAAAA,GAAW4lB,QAAQxS,UAAU,EAAA,CAAA;AACnCwS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACM,wBAAwB,CAACX,OAAAA,CAAAA,CAAAA;AAC/C,YAAA,IAAI,CAAA,OAAOG,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAACzX,YAAY,CAACgY,KAAAA,EAAO,qBAAqBV,OAAQ53B,CAAAA,MAAM,EAAE43B,OAAAA,CAAQ13B,IAAI,CAAA,CAAA;gBAC1E,OAAO,KAAA,CAAA;AACT,aAAA;YACA,OAAQ8R,QAAAA;gBACN,KAAK,GAAA;AACH,oBAAA,OAAO+lB,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;AACtB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AA5SW/B,IAAAA,WAAAA,CA8SIwC,2BAsBd,GAtBD,SAAeA,2BAAAA,CAA4BZ,OAAyB,EAAA;AAClE,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACU,qBAAqB,CAACb,OAAAA,CAAAA,CAAAA;AAC5CA,QAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;QAClB,IAAI;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;AAAI,SAAA,CAAC2S,QAAQ,CAACR,OAAQxS,CAAAA,UAAU,EAAK,CAAA,EAAA;YAClD,IAAMkT,KAAAA,GAAQV,OAAQ3S,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;YACxC,IAAMjT,QAAAA,GAAW4lB,QAAQxS,UAAU,EAAA,CAAA;AACnCwS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMwS,QAAW,GAAA,IAAI,CAACO,2BAA2B,CAACZ,OAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAI,CAAA,OAAOG,QAAP,KAAA,WAAA,GAAA,WAAA,GAAA,QAAA,CAAOA,SAAO,OAAM,OAAOE,QAAAA,KAAAA,WAAAA,GAAAA,WAAAA,GAAP,QAAOA,CAAAA,QAAAA,CAAO,CAAK,IAAA,OAAOF,aAAa,QAAU,EAAA;gBACvE,IAAI,CAACzX,YAAY,CAACgY,KAAAA,EAAO,qBAAqBV,OAAQ53B,CAAAA,MAAM,EAAE43B,OAAAA,CAAQ13B,IAAI,CAAA,CAAA;AAC1E,gBAAA,OAAA;AACF,aAAA;YACA,OAAQ8R,QAAAA;gBACN,KAAK,GAAA;AACH,oBAAA,OAAO+lB,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;gBACpB,KAAK,GAAA;AACH,oBAAA,OAAOF,QAAWE,GAAAA,QAAAA,CAAAA;AACtB,aAAA;AACF,SAAA;QACA,OAAOF,QAAAA,CAAAA;AACT,KAAA,CAAA;AApUW/B,IAAAA,WAAAA,CAsUIyC,qBAqBd,GArBD,SAAeA,qBAAAA,CAAsBb,OAAyB,EAAA;QAC5D,IAAM5lB,QAAAA,GAAW4lB,QAAQxS,UAAU,EAAA,CAAA;QACnC,IAAI;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;SAAI,CAACgT,QAAQ,CAACpmB,QAAW,CAAA,EAAA;YACtC,IAAMsmB,KAAAA,GAAQV,OAAQ3S,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACxC2S,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBqS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAMiT,SAAY,GAAA,IAAI,CAACC,2BAA2B,CAACf,OAAAA,CAAAA,CAAAA;YACnD,IAAK5lB,QAAa,KAAA,GAAA,IAAO,OAAO0mB,SAAAA,KAAc,aAAe1mB,QAAa,KAAA,GAAA,IAAO,OAAO0mB,SAAAA,KAAc,QAAW,EAAA;gBAC/G,IAAI,CAACpY,YAAY,CAACgY,KAAAA,EAAO,qBAAqBV,OAAQ53B,CAAAA,MAAM,EAAE43B,OAAAA,CAAQ13B,IAAI,CAAA,CAAA;AAC5E,aAAA;YAEA,OAAQ8R,QAAAA;gBACN,KAAK,GAAA;oBACH,OAAO0mB,SAAAA,CAAAA;gBACT,KAAK,GAAA;AACH,oBAAA,OAAO,CAACA,SAAAA,CAAAA;gBACV,KAAK,GAAA;AACH,oBAAA,OAAO,CAACA,SAAAA,CAAAA;AACZ,aAAA;AACF,SAAA;QACA,OAAO,IAAI,CAACC,2BAA2B,CAACf,OAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AA3VW5B,IAAAA,WAAAA,CA6VI2C,2BAUd,GAVD,SAAeA,2BAAAA,CAA4Bf,OAAyB,EAAA;QAClE,IAAIA,OAAAA,CAAQxS,UAAU,EAAA,KAAO,GAAK,EAAA;AAChCwS,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAChBqS,YAAAA,OAAAA,CAAQnS,SAAS,CAAC,KAAA,CAAA,CAAA;AAClB,YAAA,IAAM5F,GAAM,GAAA,IAAI,CAACqX,wBAAwB,CAACU,OAAAA,CAAAA,CAAAA;AAC1CA,YAAAA,OAAAA,CAAQ/D,UAAU,CAAC,GAAA,CAAA,CAAA;AACnB+D,YAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;YAChB,OAAO1F,GAAAA,CAAAA;AACT,SAAA;QACA,OAAO,IAAI,CAAC+Y,cAAc,CAAChB,OAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAvWW5B,IAAAA,WAAAA,CAyWI4C,cA0Cd,GA1CD,SAAeA,cAAAA,CAAehB,OAAyB,EAAA;AACrD,QAAA,IAAI/S,SAAUsC,CAAAA,OAAO,CAACyQ,OAAAA,CAAQvS,cAAc,EAAK,CAAA,EAAA;YAC/C,IAAM3U,EAAAA,GAAKknB,QAAQzE,QAAQ,EAAA,CAAA;AAC3B,YAAA,IAAIziB,EAAGvR,CAAAA,IAAI,KAAKkzB,kBAAAA,CAAmBiD,OAAO,EAAE;gBAC1C,IAAMuD,SAAAA,GAAYjB,OAAQlD,CAAAA,YAAY,EAAO,KAAA,GAAA,CAAA;gBAC7C,IAAMzQ,KAAAA,GAAQ2T,QAAQzE,QAAQ,EAAA,CAAA;AAC9B,gBAAA,IAAI0F,SAAW,EAAA;AACbjB,oBAAAA,OAAAA,CAAQ/D,UAAU,CAAC,GAAA,CAAA,CAAA;AACnB+D,oBAAAA,OAAAA,CAAQrS,OAAO,CAAC,CAAA,CAAA,CAAA;AAClB,iBAAA;gBACA,OAAO,CAAC,CAAC,IAAI,CAAC+Q,cAAc,CAAClxB,GAAG,CAAC6e,KAAAA,CAAM3jB,MAAM,CAAA,CAAA;aACxC,MAAA;gBACL,IAAM2jB,MAAAA,GAAQ,IAAI,CAACqS,cAAc,CAAClxB,GAAG,CAACsL,GAAGpQ,MAAM,CAAA,CAAA;AAE/C,gBAAA,IAAI,CAAC2jB,MAAO,EAAA;oBACV,OAAO,KAAA,CAAA;AACT,iBAAA;gBAEA,IAAI,CAACA,MAAMsO,CAAAA,IAAI,EAAE;oBACf,OAAO,IAAA,CAAA;AACT,iBAAA;gBAEA,IAAItO,MAAAA,CAAMrhB,UAAU,EAAE;oBACpB,IAAI,CAAC0d,YAAY,CAAC5P,EAAGzQ,CAAAA,QAAQ,EAAE,8BAAA,EAAgC23B,OAAQ53B,CAAAA,MAAM,EAAE43B,OAAAA,CAAQ13B,IAAI,CAAA,CAAA;AAC7F,iBAAA;AACA,gBAAA,IAAM8B,KAAQM,GAAAA,MAAAA,CAAO2hB,MAAMsO,CAAAA,IAAI,CAACjyB,MAAM,CAAA,CAAA;AACtC,gBAAA,IAAI,CAACgC,MAAAA,CAAOw2B,SAAS,CAAC92B,KAAQ,CAAA,EAAA;AAC5B,oBAAA,IAAI,CAACse,YAAY,CAAC5P,EAAAA,CAAGzQ,QAAQ,EAAG,uBAAuByQ,GAAAA,EAAAA,CAAGpQ,MAAM,EAAIs3B,OAAAA,CAAQ53B,MAAM,EAAE43B,QAAQ13B,IAAI,CAAA,CAAA;AAClG,iBAAA;gBACA,OAAO8B,KAAAA,CAAAA;AACT,aAAA;AACF,SAAA,MAAO,IAAI6iB,SAAUqC,CAAAA,OAAO,CAAC0Q,OAAAA,CAAQvS,cAAc,EAAK,CAAA,EAAA;YACtD,IAAMwP,OAAAA,GAAU+C,QAAQhD,WAAW,EAAA,CAAA;YACnC,OAAOtyB,MAAAA,CAAOuyB,QAAQv0B,MAAM,CAAA,CAAA;SACvB,MAAA;AACL,YAAA,IAAI,CAACggB,YAAY,CACfsX,OAAQ3S,CAAAA,iBAAiB,CAAC,CAC1B,CAAA,EAAC,iBAAiB2S,GAAAA,OAAAA,CAAQxS,UAAU,EACpCwS,EAAAA,OAAAA,CAAQ53B,MAAM,EACd43B,QAAQ13B,IAAI,CAAA,CAAA;AAEhB,SAAA;AACF,KAAA,CAAA;IAnZW81B,WAqZI+C,CAAAA,uBAoCd,GApCD,SAAeA,uBAAAA,CACb/4B,MAAc,EACdg5B,UAAkB,EAClBv3B,SAAiB,EAAA;QAEjB,IAAM9B,MAAAA,GAASK,OAAOL,MAAM,CAAA;QAC5B,IAAIF,CAAAA,GAAIu5B,UAAav3B,GAAAA,SAAAA,CAAU9B,MAAM,CAAA;;AAGrC,QAAA,MAAOF,IAAIE,MAAUK,IAAAA,MAAAA,CAAOslB,UAAU,CAAC7lB,OAAO,EAAIA,CAAAA,CAAAA,EAAAA,CAAAA;;AAGlD,QAAA,IAAMuG,OAAiB,EAAE,CAAA;AACzB,QAAA,IAAIghB,KAAQ,GAAA,CAAA,CAAA;AACZ,QAAA,IAAIiS,WAAWx5B,CAAI,GAAA,CAAA,CAAA;AACnB,QAAA,IAAIy5B,CAAID,GAAAA,QAAAA,CAAAA;QAER,MAAOC,CAAAA,GAAIv5B,MAAUqnB,IAAAA,KAAAA,GAAQ,CAAG,CAAA;YAC9B,IAAMlB,QAAAA,GAAW9lB,MAAOslB,CAAAA,UAAU,CAAC4T,CAAAA,CAAAA,CAAAA;AACnC,YAAA,IAAIpT,aAAa,EAAI,EAAA;AACnBkB,gBAAAA,KAAAA,EAAAA,CAAAA;aACK,MAAA,IAAIlB,aAAa,EAAI,EAAA;gBAC1B,IAAI,EAAEkB,UAAU,CAAG,EAAA;AACjB,oBAAA,IAAMzmB,MAAMP,MAAO0E,CAAAA,SAAS,CAACu0B,QAAAA,EAAUC,GAAGx1B,IAAI,EAAA,CAAA;AAC9C,oBAAA,IAAInD,IAAIZ,MAAM,GAAG,CAAGqG,EAAAA,IAAAA,CAAKzG,IAAI,CAACgB,GAAAA,CAAAA,CAAAA;AAC9B,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA,MAAO,IAAIulB,QAAAA,KAAa,EAAMkB,IAAAA,KAAAA,KAAU,CAAG,EAAA;AACzC,gBAAA,IAAMzmB,OAAMP,MAAO0E,CAAAA,SAAS,CAACu0B,QAAAA,EAAUC,GAAGx1B,IAAI,EAAA,CAAA;AAC9C,gBAAA,IAAInD,KAAIZ,MAAM,GAAG,CAAGqG,EAAAA,IAAAA,CAAKzG,IAAI,CAACgB,IAAAA,CAAAA,CAAAA;AAC9B04B,gBAAAA,QAAAA,GAAWC,CAAI,GAAA,CAAA,CAAA;AACjB,aAAA;AACAA,YAAAA,CAAAA,EAAAA,CAAAA;AACF,SAAA;QAEA,OAAO;YAAElzB,IAAAA,EAAAA,IAAAA;AAAMmzB,YAAAA,QAAAA,EAAUD,CAAI,GAAA,CAAA;AAAE,SAAA,CAAA;AACjC,KAAA,CAAA;AAzbWlD,IAAAA,WAAAA,CA2bIoD,gBAoDd,GApDD,SAAeA,gBAAAA,CAAiB7G,IAAY,EAAA;QAC1C,IAAM8G,aAAAA,GAAgB,IAAI,CAACC,oBAAoB,CAAA;AAC/C,QAAA,IAAMC,gBAAmB,GAAA,EAAE,IAAI,CAACC,gBAAgB,CAAA;AAChD,QAAA,IAAIC,YAAelH,GAAAA,IAAAA,CAAAA;AACnB,QAAA,IAAImH,YAAe,GAAA,IAAA,CAAA;AAEnB,QAAA,MAAOA,YAAc,CAAA;YACnBA,YAAe,GAAA,KAAA,CAAA;YACf,IAAM/5B,MAAAA,GAAS85B,aAAa95B,MAAM,CAAA;AAClC,YAAA,IAAIF,CAAI,GAAA,CAAA,CAAA;AAER,YAAA,MAAOA,IAAIE,MAAQ,CAAA;gBACjB,IAAMmmB,QAAAA,GAAW2T,YAAanU,CAAAA,UAAU,CAAC7lB,CAAAA,CAAAA,CAAAA;AACzC,gBAAA,IAAI,CAAColB,SAAAA,CAAUsC,OAAO,CAACrB,QAAW,CAAA,EAAA;AAChCrmB,oBAAAA,CAAAA,EAAAA,CAAAA;AACA,oBAAA,SAAA;AACF,iBAAA;AAEA,gBAAA,IAAMhB,KAAQgB,GAAAA,CAAAA,CAAAA;gBACd,MAAOA,CAAAA,GAAIE,UAAUklB,SAAUuC,CAAAA,OAAO,CAACqS,YAAanU,CAAAA,UAAU,CAAC7lB,CAAK,CAAA,CAAA,CAAA;AAClEA,oBAAAA,CAAAA,EAAAA,CAAAA;AACF,iBAAA;AAEA,gBAAA,IAAMgC,SAAYg4B,GAAAA,YAAAA,CAAa/0B,SAAS,CAACjG,KAAOgB,EAAAA,CAAAA,CAAAA,CAAAA;AAChD,gBAAA,IAAMwkB,QAAQ,IAAI,CAACqS,cAAc,CAAClxB,GAAG,CAAC3D,SAAAA,CAAAA,CAAAA;AAEtC,gBAAA,IAAI,CAACwiB,KAASoV,IAAAA,aAAa,CAAC53B,SAAAA,CAAU,KAAK83B,gBAAkB,EAAA;AAC3D,oBAAA,SAAA;AACF,iBAAA;;gBAGAF,aAAa,CAAC53B,UAAU,GAAG83B,gBAAAA,CAAAA;AAE3B,gBAAA,IAAII,cAAAA,KAAAA,CAAAA,CAAAA;AACJ,gBAAA,IAAIR,WAAAA,KAAAA,CAAAA,CAAAA;gBAEJ,IAAI,CAAClV,KAAMrhB,CAAAA,UAAU,EAAE;AACPqhB,oBAAAA,IAAAA,WAAAA,CAAAA;AAAAA,oBAAAA,IAAAA,kBAAAA,CAAAA;oBAAd0V,WAAc1V,GAAAA,CAAAA,sBAAAA,WAAAA,GAAAA,KAAAA,CAAMsO,IAAI,KAAVtO,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAY3jB,MAAM,KAAA,IAAA,GAAlB2jB,kBAAsB,GAAA,EAAA,CAAA;oBACpCkV,QAAW15B,GAAAA,CAAAA,CAAAA;iBACN,MAAA;AACL,oBAAA,IAAwC,6BAAA,GAAA,IAAI,CAACs5B,uBAAuB,CAACU,YAAAA,EAAch7B,KAAOgD,EAAAA,SAAAA,CAAAA,EAAlFuE,IAAgC,GAAA,6BAAA,CAAhCA,IAAMmzB,EAAUS,cAAgB,6BAA1BT,CAAAA,QAAAA,CAAAA;oBACdQ,WAAc1V,GAAAA,KAAAA,CAAM0O,kBAAkB,CAAC3sB,IAAAA,CAAAA,CAAAA;oBACvCmzB,QAAWS,GAAAA,WAAAA,CAAAA;AACb,iBAAA;gBAEAH,YAAeA,GAAAA,YAAAA,CAAa/0B,SAAS,CAAC,CAAA,EAAGjG,SAASk7B,WAAcF,GAAAA,YAAAA,CAAa/0B,SAAS,CAACy0B,QAAAA,CAAAA,CAAAA;gBACvFO,YAAe,GAAA,IAAA,CAAA;AACf,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAOD,YAAAA,CAAAA;AACT,KAAA,CAAA;IA/eWzD,WAwgBIsB,CAAAA,iBA0Bd,GA1BD,SAAeA,iBAAAA,CACbzyB,KAAa,EACb6I,GAAgB,EAChBmsB,aAAwC,EAAA;AAOxC,QAAA,IAAI,CAACxD,oBAAoB,CAAC92B,IAAI,CAAC,EAAE,CAAA,CAAA;QACjC,IAAIq4B,OAAAA,CAAAA;QACJ,IAAI,OAAOiC,kBAAkB,QAAU,EAAA;YACrCjC,OAAU,GAAA,IAAI9E,iBAAiBjuB,KAAOg1B,EAAAA,aAAAA,CAAAA,CAAAA;SACjC,MAAA;AACLjC,YAAAA,OAAAA,GAAU,IAAI9E,gBAAAA,CAAiBjuB,KAAOg1B,EAAAA,aAAAA,CAAc35B,IAAI,EAAEwN,GAAAA,CAAAA,CAAAA;AAC5D,SAAA;AAEA,QAAA,IAAMmS,GAAM,GAAA,IAAI,CAACuW,gBAAgB,CAACwB,OAAAA,CAAAA,CAAAA;QAClC,IAAI,CAACvB,oBAAoB,CAACpsB,GAAG,EAAA,CAAA;QAC7B,OAAO;YACLutB,OAAS3X,EAAAA,GAAAA;AAIX,SAAA,CAAA;AACF,KAAA,CAAA;AAliBWmW,IAAAA,WAAAA,CAoiBI0B,gBAQd,GARD,SAAeA,gBAAiBvB,CAAAA,KAAuB,EAAE13B,KAAa,EAAA;AACpE,QAAA,IAAI,CAAC84B,kBAAkB,CACrBpB,KAAMj2B,CAAAA,IAAI,EACVM,SAAUC,CAAAA,cAAc,CAAChC,KAAAA,CAAAA,EACzB03B,MAAMlR,iBAAiB,CAAC,CACxB,CAAA,EAAA,EAAA,EACAkR,MAAMsB,UAAU,CAAA,CAAA;AAEpB,KAAA,CAAA;AA5iBWzB,IAAAA,WAAAA,CA8iBIuB,kBAoBd,GApBD,SAAeA,kBAAAA,CACbuC,UAAkB,EAClBr7B,KAAqB,EACrBC,GAAmB,EACnB84B,OAAe,EACfuC,WAAyB,EACzBlD,SAAuB,EAAA;AAMvB,QAAA,IAAMlM,KAAQnqB,GAAAA,SAAAA,CAAUE,WAAW,CAACjC,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAI,CAACk4B,kBAAkB,EAAGr3B,CAAAA,IAAI,CAAC;YAI7Bu2B,YAAcnL,EAAAA,KAAAA;YACdzpB,OAASs2B,EAAAA,OAAAA;AACX,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAlkBWxB,IAAAA,WAAAA,CAokBIS,YAqBd,GArBD,SAAeA,YAAAA,CAAaN,KAAuB,EAAA;QACjD,IAAM13B,KAAAA,GAAQ03B,KAAMlR,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;QACtC,IAAMxjB,SAAAA,GAAY00B,MAAMhD,QAAQ,EAAA,CAAA;AAEhC,QAAA,IAAQ7yB,MAAqBmB,GAAAA,SAAAA,CAArBnB,MAAQL,EAAAA,QAAAA,GAAawB,SAAbxB,CAAAA,QAAAA,CAAAA;QAChB,IAAMvB,MAAQuB,QAARvB,CAAAA,GAAAA,CAAAA;QACN,IAAI,IAAI,CAAC43B,cAAc,CAAClxB,GAAG,CAAC9E,MAAWA,CAAAA,IAAAA,MAAAA,CAAO82B,UAAU,CAAC,KAAQ,CAAA,EAAA;YAC/D,IAAI,CAAC9W,YAAY,CAACrgB,QAAU,EAAC,mBAAmBK,GAAAA,MAAAA,EAAU61B,KAAMn2B,CAAAA,MAAM,EAAEm2B,KAAAA,CAAMj2B,IAAI,CAAA,CAAA;AACpF,SAAA;QAEA,IAAI85B,SAAAA,CAAAA;QACJ,IAAI7D,KAAAA,CAAM/Q,UAAU,EAAA,KAAO,GAAK,EAAA;YAC9B4U,SAAY7D,GAAAA,KAAAA,CAAMnD,wBAAwB,CAAC,GAAA,CAAA,CAAA;YAC3Ct0B,GAAMy3B,GAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,SAAA;QACA,IAAMsR,SAAAA,GAAYJ,MAAMpB,aAAa,EAAA,CAAA;AACrC,QAAA,IAAMpK,KAAQnqB,GAAAA,SAAAA,CAAUE,WAAW,CAACjC,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAMu7B,WAAc,GAAA,IAAI3H,WAAY7wB,CAAAA,SAAAA,EAAW80B,WAAW5L,KAAOqP,EAAAA,SAAAA,CAAAA,CAAAA;AACjE,QAAA,IAAI,CAAC1D,cAAc,CAAC93B,GAAG,CAAC8B,MAAQ25B,EAAAA,WAAAA,CAAAA,CAAAA;AAEhC,QAAA,IAAI,CAAC1C,kBAAkB,CAACpB,KAAAA,CAAMj2B,IAAI,EAAEzB,KAAO03B,EAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAI,CAAA,EAAA,EAAA,EAAIkR,MAAMsB,UAAU,CAAA,CAAA;AAC7F,KAAA,CAAA;AAzlBWzB,IAAAA,WAAAA,CA2lBIU,WAMd,GAND,SAAeA,WAAAA,CAAYP,KAAuB,EAAA;QAChD,IAAM13B,KAAAA,GAAQ03B,KAAMlR,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;QACtC,IAAMxjB,SAAAA,GAAY00B,MAAMhD,QAAQ,EAAA,CAAA;AAChC,QAAA,IAAI,CAACmD,cAAc,CAAC4D,MAAM,CAACz4B,UAAUnB,MAAM,CAAA,CAAA;AAE3C,QAAA,IAAI,CAACi3B,kBAAkB,CAACpB,KAAAA,CAAMj2B,IAAI,EAAEzB,KAAO03B,EAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAI,CAAA,EAAA,EAAA,EAAIkR,MAAMsB,UAAU,CAAA,CAAA;AAC7F,KAAA,CAAA;AAjmBWzB,IAAAA,WAAAA,CAmmBIQ,WA0Bd,GA1BD,SAAeA,WAAYL,CAAAA,KAAuB,EAAEnjB,KAAgB,EAAA;QAClE,IAAMiR,KAAAA,GAAQ,IAAI,CAACqS,cAAc,CAAClxB,GAAG,CAAC4N,MAAM1S,MAAM,CAAA,CAAA;AAClD,QAAA,IAAI2jB,KAAO,EAAA;YACT,IAAQhkB,WAAa+S,KAAb/S,CAAAA,QAAAA,CAAAA;YACR,IAAIgkB,KAAAA,CAAMrhB,UAAU,EAAE;gBACpB,IAA2B,6BAAA,GAAA,IAAI,CAACm2B,uBAAuB,CAAC5C,KAAMn2B,CAAAA,MAAM,EAAEC,QAASxB,CAAAA,KAAK,CAACI,KAAK,EAAEmU,MAAM1S,MAAM,CAAA,EAAhG0F,OAAmB,6BAAnBA,CAAAA,IAAAA,EAAMmzB,WAAa,6BAAbA,CAAAA,QAAAA,CAAAA;gBACd,IAAMgB,iBAAAA,GAAoBlW,KAAM0O,CAAAA,kBAAkB,CAAC3sB,IAAAA,CAAAA,CAAAA;AACnD,gBAAA,IAAMo0B,eAAkB,GAAA,IAAI,CAAChB,gBAAgB,CAACe,iBAAAA,CAAAA,CAAAA;AAE9C,gBAAA,IAAME,eAAkBlB,GAAAA,QAAAA,GAAWl5B,QAASvB,CAAAA,GAAG,CAACG,KAAK,CAAA;AACrDs3B,gBAAAA,KAAAA,CAAM5Q,OAAO,CAAC8U,eAAAA,CAAAA,CAAAA;AAEd,gBAAA,IAAI,CAAC9C,kBAAkB,CACrBpB,KAAAA,CAAMj2B,IAAI,EACVD,QAAAA,CAASxB,KAAK,EACd03B,MAAMlR,iBAAiB,CAAC,CACxBmV,CAAAA,EAAAA,eAAAA,EACAjE,MAAMsB,UAAU,CAAA,CAAA;aAEb,MAAA;AACgBxT,gBAAAA,IAAAA,WAAAA,CAAAA;AAAAA,gBAAAA,IAAAA,kBAAAA,CAAAA;gBAArB,IAAMqW,YAAAA,GAAerW,CAAAA,kBAAAA,GAAAA,CAAAA,WAAAA,GAAAA,KAAAA,CAAMsO,IAAI,KAAVtO,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAY3jB,MAAM,KAAA,IAAA,GAAlB2jB,kBAAsB,GAAA,EAAA,CAAA;AAC3C,gBAAA,IAAMmW,gBAAkB,GAAA,IAAI,CAAChB,gBAAgB,CAACkB,YAAAA,CAAAA,CAAAA;AAE9C,gBAAA,IAAI,CAAC/C,kBAAkB,CAACpB,KAAAA,CAAMj2B,IAAI,EAAED,QAAAA,CAASxB,KAAK,EAAEwB,QAASvB,CAAAA,GAAG,EAAE07B,gBAAAA,EAAiBjE,MAAMsB,UAAU,CAAA,CAAA;AACrG,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AA7nBWzB,IAAAA,OAAAA,WAAAA,CAAAA;AAooBZ,CAAA,EAAA,CAAA;AApoBYA,WAAAA,CAGIM,iBAA2C,IAAIhxB,GAAAA,EAAAA,CAAAA;AAHnD0wB,WAAAA,CAIIK,oBAA0C,GAAA;IAAC,EAAE;AAAC,CAAA,CAAA;AAJlDL,WAAAA,CAMIsD,uBAA+C,EAAC,CAAA;AANpDtD,WAAAA,CAOIwD,gBAA2B,GAAA,CAAA;;AC1B7B,IAAA,SAAA,iBAAA,WAAA;AAAMe,IAAAA,SAAAA,SAAAA,CAuBPC,UAAsB,EAAEC,QAAgB,EAAEC,SAA6B,EAAA;aAfnFC,YAAe,GAAA,IAAA,CAAA;QAgBb,IAAI,CAACH,UAAU,GAAGA,UAAAA,CAAAA;QAClB,IAAI,CAACC,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAACG,YAAY,GAAG,IAAIr1B,GAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBm1B,SAAW,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBG,YAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACD,YAAY,CAAC11B,GAAG,CAAC21B,EAAAA,CAAAA,CAAAA;AACxB,SAAA;AACA,QAAA,IAAI,CAACnqB,EAAE,GA9BU6pB,UA8BGO,GAAG,EAAA,CAAA;;AA9BNP,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAiCnBQ,IAAAA,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,CAAaC,EAAsB,EAAA;AACjC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgBA,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAATt1B,YAAAA,IAAAA,CAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,IAAI,CAACk1B,YAAY,CAAC51B,GAAG,CAACU,CAAI,CAAA,EAAA,SAAA;AAC9B,YAAA,IAAI,CAACk1B,YAAY,CAAC11B,GAAG,CAACQ,CAAAA,CAAAA,CAAAA;YACtB,IAAI,CAACu1B,WAAW,GAAG,IAAA,CAAA;AACrB,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,CAAelV,MAAc,EAAA;QAC3B,OAAO,IAAI,CAACwU,UAAU,CAACW,UAAU,CAAC,IAAI,CAACV,QAAQ,GAAGzU,MAAO,CAAA,CAAA;AAC3D,KAAA,CAAA;IAEAoV,MAAAA,CAAAA,SAQC,GARDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAACX,QAAQ,GAAG,IAAI,CAACD,UAAU,CAACW,UAAU,CAACx7B,MAAM,GAAG,GAAG,OAAO,IAAA,CAAA;AAC7D,aAAA;AACH,YAAA,IAAK,IAAIF,CAAAA,GAAI,IAAI,CAACg7B,QAAQ,EAAEh7B,CAAAA,GAAI,IAAI,CAAC+6B,UAAU,CAACW,UAAU,CAACx7B,MAAM,EAAEF,CAAK,EAAA,CAAA;gBACtE,IAAI,IAAI,CAAC+6B,UAAU,CAACW,UAAU,CAAC17B,CAAAA,CAAE,KAAKX,UAAAA,CAAWu8B,OAAO,EAAE,OAAO,KAAA,CAAA;AACnE,aAAA;YACA,OAAO,IAAA,CAAA;AACT,SAAA;AACF,KAAA,CAAA;IAEA9V,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;AAIE,QAAA,OAAO,IA3DUgV,SAAAA,CA2DI,IAAI,CAACC,UAAU,EAAE,IAAI,CAACC,QAAQ,GAAG,CAAG,EAAA,IAAI,CAACG,YAAY,CAAA,CAAA;AAC5E,KAAA,CAAA;AA5DmBL,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YASfU,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACN,YAAY,CAAA;AAC1B,aAAA;AACA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBW,CAAU,EAAA;gBACxB,IAAI,CAACX,YAAY,GAAGW,CAAAA,CAAAA;AACtB,aAAA;;;YAEIC,GAAAA,EAAAA,WAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACf,UAAU,CAACW,UAAU,CAAC,IAAI,CAACV,QAAQ,CAAC,CAAA;AAClD,aAAA;;;YACIe,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChB,UAAU,CAACW,UAAU,CAAC,IAAI,CAACV,QAAQ,GAAG,CAAE,CAAA,CAAA;AACtD,aAAA;;;AArBmBF,IAAAA,OAAAA,SAAAA,CAAAA;;AAAAA,SAAAA,CACZO,GAAM,GAAA,CAAA;;ACFA,IAAA,KAAA,iBAAA,WAAA;AAAMW,IAAAA,SAAAA,KAAAA,CA2CCC,KAA0B,EAAA;aA/B9CC,QAAW,GAAA,KAAA,CAAA;AAQHC,QAAAA,IAAAA,CAAAA,cAAAA,GAAuD,IAAIt2B,GAAAA,EAAAA,CAAAA;AAwBjE,QAAA,IAAI,CAACoL,EAAE,GA5CU+qB,MA4CDX,GAAG,EAAA,CAAA;AACnB,QAAA,IAAI,CAACe,MAAM,GAAG,IAAIt2B,GAAQm2B,CAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACA,KAAK,GAAG,IAAIn2B,GAAQm2B,CAAAA,EAAAA,CAAAA,MAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBA,KAAO,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAbI,YAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMC,UAAAA,GAAa,IAAI,CAACC,kBAAkB,CAACF,EAAGtB,CAAAA,UAAU,EAAEsB,EAAAA,CAAGrB,QAAQ,CAAA,CAAA;AACrE,YAAA,IAAI,CAACmB,cAAc,CAACp9B,GAAG,CAACu9B,UAAYD,EAAAA,EAAAA,CAAAA,CAAAA;AACtC,SAAA;QAlDiBL,KAmDXr8B,CAAAA,IAAI,CAACZ,GAAG,CAAC,IAAI,CAACkS,EAAE,EAAE,IAAI,CAAA,CAAA;;AAnDX+qB,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;;AAuDnBO,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAmBxB,CAAAA,UAAsB,EAAEC,QAAgB,EAAA;AACzD,QAAA,OAAO,UAAGD,CAAW9pB,EAAE,GAAC,GAAG+pB,GAAAA,QAAAA,CAAAA;AAC7B,KAAA,CAAA;IAEAwB,MAAAA,CAAAA,eAcC,GAdDA,SAAAA,eAAAA,CAAgBzB,UAAsB,EAAEC,QAAgB,EAAEG,YAA4C,EAAA;QAA5CA,IAAAA,YAAAA,KAAAA,KAAAA,CAAAA,EAAAA,eAAmC,IAAIr1B,GAAAA,EAAAA,CAAAA;AAC/F,QAAA,IAAM22B,KAAQ,GAAA,IAAI,CAACF,kBAAkB,CAACxB,UAAYC,EAAAA,QAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAMh4B,OAAO,IAAI,CAACm5B,cAAc,CAACx2B,GAAG,CAAC82B,KAAAA,CAAAA,CAAAA;AACrC,QAAA,IAAIz5B,IAAM,EAAA;AACR,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBm4B,YAAc,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBC,gBAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAIp4B,IAAKm4B,CAAAA,YAAY,CAAC51B,GAAG,CAAC61B,EAAK,CAAA,EAAA,SAAA;gBAC/Bp4B,IAAKm4B,CAAAA,YAAY,CAAC11B,GAAG,CAAC21B,EAAAA,CAAAA,CAAAA;AACtBp4B,gBAAAA,IAAAA,CAAKw4B,WAAW,GAAG,IAAA,CAAA;AACrB,aAAA;YACA,OAAOx4B,IAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAM05B,OAAU,GAAA,IAAI5B,SAAUC,CAAAA,UAAAA,EAAYC,QAAUG,EAAAA,YAAAA,CAAAA,CAAAA;AACpD,QAAA,IAAI,CAACgB,cAAc,CAACp9B,GAAG,CAAC09B,KAAOC,EAAAA,OAAAA,CAAAA,CAAAA;QAC/B,OAAOA,OAAAA,CAAAA;AACT,KAAA,CAAA;AAzEmBV,IAAAA,KAAAA,CAsBZjd,MAcN,GAdD,SAAOA,MAAAA,CAAOkd,KAAkB,EAAA;AAC9B,QAAA,IAAMU,QAAW,GAAA,IAAI,CAACC,SAAS,CAACX,KAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAMY,QAAQ,IAAI,CAACC,UAAU,CAACn3B,GAAG,CAACg3B,QAAAA,CAAAA,CAAAA;AAClC,QAAA,IAAIE,KAAO,EAAA;AACT,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBZ,KAAO,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAfc,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;;gBAETF,KAAML,CAAAA,eAAe,CAACO,IAAKhC,CAAAA,UAAU,EAAEgC,IAAK/B,CAAAA,QAAQ,EAAE+B,IAAAA,CAAK5B,YAAY,CAAA,CAAA;AACzE,aAAA;YACA,OAAO0B,KAAAA,CAAAA;AACT,SAAA;QAEA,IAAMG,QAAAA,GAAW,IAjCAhB,KAiCUC,CAAAA,KAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACa,UAAU,CAAC/9B,GAAG,CAAC49B,QAAUK,EAAAA,QAAAA,CAAAA,CAAAA;QAC9B,OAAOA,QAAAA,CAAAA;AACT,KAAA,CAAA;;AApCmBhB,IAAAA,KAAAA,CAuCZY,SAEN,GAFD,SAAOA,SAAAA,CAAUX,KAAkB,EAAA;QACjC,OAAOA,KAAAA,CAAMj4B,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAAS,YAAA,OAAGA,KAAK+3B,UAAU,CAAC9pB,EAAE,GAAC,GAAA,GAAGjO,KAAKg4B,QAAQ,CAAA;AAAI1a,SAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;AAC5E,KAAA,CAAA;AAzCmB0b,IAAAA,aAAAA,CAAAA,KAAAA,EAAAA;;YAQfiB,GAAAA,EAAAA,OAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACb,MAAM,CAAA;AACpB,aAAA;;;YAGIZ,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACS,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBc,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;oBACT,IAAIA,IAAAA,CAAKvB,WAAW,EAAE,OAAO,IAAA,CAAA;AAC/B,iBAAA;gBACA,OAAO,KAAA,CAAA;AACT,aAAA;;;AAlBmBQ,IAAAA,OAAAA,KAAAA,CAAAA;;AAAAA,KAAAA,CACZc,aAAqD,IAAIj3B,GAAAA,EAAAA,CAAAA;AAD7Cm2B,KAAAA,CAEZr8B,OAA2B,IAAIkG,GAAAA,EAAAA,CAAAA;AAFnBm2B,KAAAA,CAGZX,GAAM,GAAA,CAAA;;ACIA,IAAA,YAAA,iBAAA,WAAA;AAAM6B,IAAAA,SAAAA,YAAAA,GAAAA,EAAAA;AAAAA,IAAAA,YAAAA,CACZhf,UAEN,GAFD,SAAOA,UAAAA,CAAWhN,EAAiB,EAAA;QACjC,OAAOA,EAAAA,GAAK3H,aAAa4U,KAAK,CAAA;AAChC,KAAA,CAAA;AAHmB+e,IAAAA,YAAAA,CAKZnyB,QAKN,GALD,SAAOA,QAAAA,CAASmG,EAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAACgN,UAAU,CAAChN,EAAK,CAAA,EAAA;AAChB7R,YAAAA,IAAAA,cAAAA,CAAAA;YAAP,OAAOA,CAAAA,iBAAAA,UAAU,CAAC6R,GAAG,KAAd7R,IAAAA,GAAAA,cAAAA,GAAkBE,OAAO,CAAC2R,EAAG,CAAA,CAAA;AACtC,SAAA;QACA,OAAO3H,YAAY,CAAC2H,EAAG,CAAA,CAAA;AACzB,KAAA,CAAA;IAVmBgsB,YAYZC,CAAAA,2BAsBN,GAtBD,SAAOA,2BACLC,CAAAA,IAAkB,EAClBC,OAA0B,sBAE1BC,WAEC,EAAA;AAED,QAAA,IAAMld,MAAwD,EAAE,CAAA;AAChE,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAkBid,OAAS,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAhBE,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTnd,YAAAA,GAAAA,CAAItgB,IAAI,CAAC;;AACNs9B,oBAAAA,IAAAA;AAASG,iBAAAA,EAAAA,GAAAA,CAAAA;AACV,gBAAA,SAAUztB,EAAE,EAAA;AAAE,oBAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,QAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGd,wBAAAA,QAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAW,CAAA,CAAA;;AACvB,oBAAA,IAAI,CAACA,QAAQ,CAAC,CAAA,CAAE,EAAE,OAAA;AAClB,oBAAA,IAAMhQ,QAAQgQ,QAAQ,CAAC,EAAE,CAACxO,QAAQ,CAACxB,KAAK,CAAA;oBACxC,IAAMC,GAAAA,GAAM+P,QAAQ,CAACA,QAAS9O,CAAAA,MAAM,GAAG,CAAE,CAAA,CAACM,QAAQ,CAACvB,GAAG,CAAA;AACtD,oBAAA,IAAMuB,QAAWO,GAAAA,SAAAA,CAAUE,WAAW,CAACjC,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;oBAC9CgO,OAAQtH,CAAAA,GAAG,CAAC23B,WAAAA,IAAAA,IAAAA,GAAAA,WAAerwB,GAAAA,OAAAA,CAAQ+C,WAAW,CAACrQ,IAAI,EAAEmQ,EAAAA,EAAItP,QAAUwO,EAAAA,QAAAA,CAAAA,CAAAA;AACrE,iBAAA;AACD,aAAA,CAAA,CAAA;AACH,SAAA;QACA,OAAOoR,GAAAA,CAAAA;AACT,KAAA,CAAA;IAlCmB8c,YAoCZM,CAAAA,aAIN,GAJD,SAAOA,aAAAA,CAAoBx5B,GAAmB,EAAEy1B,CAAI,EAAEoC,CAAI,EAAA;AAC5C73B,QAAAA,IAAAA,QAAAA,CAAAA;QAAZ,IAAMjF,GAAAA,GAAMiF,CAAAA,QAAAA,GAAAA,GAAAA,CAAI2B,GAAG,CAAC8zB,CAAAA,CAAAA,KAAAA,IAAAA,GAARz1B,WAAc,IAAI8B,GAAAA,EAAAA,CAAAA;AAC9B/G,QAAAA,GAAAA,CAAI0G,GAAG,CAACo2B,CAAAA,CAAAA,CAAAA;QACR73B,GAAIjF,CAAAA,GAAG,CAAC06B,CAAG16B,EAAAA,GAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA;AAxCmBm+B,IAAAA,YAAAA,CA0CZO,QAKN,GALD,SAAOA,QAAY3tB,CAAAA,EAAU,EAAE4tB,EAAU,EAAA;AACvC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmB5tB,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAZ9M,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAAC06B,EAAAA,CAAGn4B,GAAG,CAACvC,OAAO,OAAO,KAAA,CAAA;AAC5B,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AA/CmBk6B,IAAAA,YAAAA,CAiDZS,aAEN,GAFD,SAAOA,aAAcjrB,CAAAA,CAAa,EAAEC,CAAa,EAAA;QAC/C,OAAOD,CAAAA,CAAEkrB,MAAM,KAAKjrB,CAAEirB,CAAAA,MAAM,IAAIlrB,CAAE9N,CAAAA,MAAM,KAAK+N,CAAAA,CAAE/N,MAAM,CAAA;AACvD,KAAA,CAAA;AAnDmBs4B,IAAAA,OAAAA,YAAAA,CAAAA;;;ACJd,IAAA,OAAKW,iBAAAA,SAAAA,OAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,OAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA;;ACDD;;IAGO,IAAMC,KAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,KAAAA,CAWCC,OAAgB,EAAA;AAVnBC,QAAAA,IAAAA,CAAAA,WAAAA,GAAgD,IAAIn4B,GAAAA,EAAAA,CAAAA;AACpDo4B,QAAAA,IAAAA,CAAAA,YAAAA,GAAiD,IAAIp4B,GAAAA,EAAAA,CAAAA;AAErDq4B,QAAAA,IAAAA,CAAAA,WAAAA,GAAgC,IAAIr4B,GAAAA,EAAAA,CAAAA;AACpCs4B,QAAAA,IAAAA,CAAAA,SAAAA,GAA4B,IAAIt4B,GAAAA,EAAAA,CAAAA;iCAGnB,IAAA,CACdu4B,mBAAmC,EAAE,CAAA;QAG3C,IAAI,CAACL,OAAO,GAAGA,OAAAA,CAAAA;;AAZND,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;IAeXO,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,GAAAA;AACE,QAAA,IAAI,CAACC,eAAe,EAAA,CAAA;AACpB,QAAA,IAAI,CAACC,eAAe,EAAA,CAAA;AACtB,KAAA,CAAA;IAEA,MAAQA,CAAAA,eAIP,GAJD,SAAQA,eAAAA,GAAAA;AACN,QAAA,IAAMC,kBAAqB,GAAA;YAAC,IAAI1D,SAAAA,CAAU,IAAI,CAACiD,OAAO,CAACU,WAAW,CAAC,CAAE,CAAA,EAAE,CAAG,EAAA;AAACp/B,gBAAAA,UAAAA,CAAW6B,GAAG;AAAC,aAAA,CAAA;AAAE,SAAA,CAAA;QAC5F,IAAMw9B,UAAAA,GAAa1C,KAAMjd,CAAAA,MAAM,CAACyf,kBAAAA,CAAAA,CAAAA;QAChC,IAAI,CAACG,YAAY,CAACD,UAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,YAOP,GAPD,SAAQA,YAAAA,CAAa9B,KAAY,EAAA;QAC/B,IAAI,CAACA,KAAMrB,CAAAA,WAAW,EAAE,OAAA;QACxB,IAAI,CAACoD,QAAQ,CAAC/B,KAAAA,CAAAA,CAAAA;AACd,QAAA,IAAMgC,SAAY,GAAA,IAAI,CAACC,eAAe,CAACjC,KAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAiBgC,SAAW,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjBE,YAAAA,IAAAA,EAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACJ,YAAY,CAACI,EAAAA,CAAAA,CAAAA;AACpB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQH,QAQP,GARD,SAAQA,QAAAA,CAAS/B,KAAY,EAAA;QAC3B,IAAmBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMZ,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBc,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACA,IAAKpB,CAAAA,SAAS,EAAI,EAAA;gBACrB,IAAI,CAACqD,gBAAgB,CAACnC,KAAOE,EAAAA,IAAAA,CAAAA,CAAAA;AAC/B,aAAA;AACF,SAAA;AACAF,QAAAA,KAAAA,CAAMX,QAAQ,GAAG,IAAA,CAAA;QACjB,OAAOW,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQmC,gBA+CP,GA/CD,SAAQA,gBAAiBnC,CAAAA,KAAY,EAAE75B,IAAe,EAAA;AACpD,QAAA,IAAIk6B,YAAahf,CAAAA,UAAU,CAAClb,IAAAA,CAAK84B,SAAS,CAAG,EAAA,OAAA;QAE7C,IAAMmD,cAAAA,GAAiB,IAAI,CAAClB,OAAO,CAACmB,iBAAiB,CAAel8B,KAAK84B,SAAS,CAAA,CAAA;QAElF,IAAI94B,IAAAA,CAAK+4B,UAAU,EAAE;AACnB,YAAA,IAAIoD,kBAAkB,IAAIr5B,GAAAA,EAAAA,CAAAA;YAC1B,IAAIs5B,YAAAA,CAAAA;AACJ,YAAA,IAAIC,aAAgB,GAAA,KAAA,CAAA;;;AAGpB,YAAA,IAAK,IAAIr/B,CAAI,GAAA,CAAA,EAAG+7B,UAAa/4B,GAAAA,IAAAA,CAAKy4B,cAAc,CAAC,CAAA,CAAA,EAAI,CAAC,CAACM,YAAYA,UAAa/4B,GAAAA,IAAAA,CAAKy4B,cAAc,CAAC,EAAEz7B,CAAI,CAAA,CAAA;gBACxG,IAAIk9B,YAAAA,CAAahf,UAAU,CAAC6d,UAAa,CAAA,EAAA;AACvCoD,oBAAAA,eAAAA,CAAgB15B,GAAG,CAAWs2B,UAAAA,CAAAA,CAAAA;oBAC9BsD,aAAgB,GAAA,IAAA,CAAA;AAChB,oBAAA,MAAA;AACF,iBAAA;AACAD,gBAAAA,YAAAA,GAAe,IAAI,CAACpB,WAAW,CAACr4B,GAAG,CAAeo2B,UAAAA,CAAAA,CAAAA;AAClD,gBAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgBqD,YAAc,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnBn5B,oBAAAA,IAAAA,CAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTk5B,oBAAAA,eAAAA,CAAgB15B,GAAG,CAACQ,CAAAA,CAAAA,CAAAA;AACtB,iBAAA;AACA,gBAAA,IAAI,CAACm5B,YAAa75B,CAAAA,GAAG,CAAClG,UAAAA,CAAWu8B,OAAO,CAAG,EAAA,MAAA;AAC7C,aAAA;YACA,IAAI,CAACyD,kBAAiBD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAAA,CAAc75B,GAAG,CAAClG,UAAAA,CAAWu8B,OAAO,CAAG,CAAA,EAAA;gBAC3D,IAAgB54B,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKm4B,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBl1B,oBAAAA,IAAAA,EAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTk5B,oBAAAA,eAAAA,CAAgB15B,GAAG,CAACQ,EAAAA,CAAAA,CAAAA;AACtB,iBAAA;AACF,aAAA;AAEA,YAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAyBg5B,cAAgB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9BlE,gBAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM2B,OAAUG,GAAAA,KAAAA,CAAML,eAAe,CAACzB,UAAY,EAAA,CAAA,CAAA,CAAA;AAClD,gBAAA,IAAI,CAAC8B,KAAAA,CAAMI,KAAK,CAAC13B,GAAG,CAACm3B,OAAAA,CAAAA,IAAY,CAAC4C,YAAAA,CAAM7B,QAAQ,CAAC0B,eAAiBzC,EAAAA,OAAAA,CAAQvB,YAAY,CAAG,EAAA;oBACvF0B,KAAMI,CAAAA,KAAK,CAACx3B,GAAG,CAACi3B,OAAAA,CAAAA,CAAAA;AAChBA,oBAAAA,OAAAA,CAAQpB,YAAY,CAAC6D,eAAAA,CAAAA,CAAAA;oBACrB,IAAI,CAACH,gBAAgB,CAACnC,KAAOH,EAAAA,OAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACF,aAAA;SACK,MAAA;AACL,YAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAyBuC,cAAgB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9BlE,gBAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM2B,QAAUG,GAAAA,KAAAA,CAAML,eAAe,CAACzB,WAAY,EAAA,CAAA,CAAA,CAAA;AAClD,gBAAA,IAAI,CAAC8B,KAAMI,CAAAA,KAAK,CAAC13B,GAAG,CAACm3B,QAAY,CAAA,IAAA,CAAC4C,YAAM7B,CAAAA,QAAQ,CAACz6B,IAAKm4B,CAAAA,YAAY,EAAEuB,QAAAA,CAAQvB,YAAY,CAAG,EAAA;oBACzF0B,KAAMI,CAAAA,KAAK,CAACx3B,GAAG,CAACi3B,QAAAA,CAAAA,CAAAA;oBAChBA,QAAQpB,CAAAA,YAAY,CAACt4B,IAAAA,CAAKm4B,YAAY,CAAA,CAAA;oBACtC,IAAI,CAAC6D,gBAAgB,CAACnC,KAAOH,EAAAA,QAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQoC,eA+CP,GA/CD,SAAQA,eAAAA,CAAgBjC,KAAY,EAAA;AAClC,QAAA,IAAM0C,UAA8C,IAAI15B,GAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAA,qBAAA,CAAA;AAAtC,QAAA,IAAM25B,gBAAgC,GAAA,CAAA,qBAAA,GAAA,IAAI,CAACtB,WAAW,CAACv4B,GAAG,CAACk3B,KAAAA,CAAM5rB,EAAE,CAAA,KAAA,IAAA,GAA7B,wBAAkC,IAAIpL,GAAAA,EAAAA,CAAAA;AAC1C,QAAA,IAAA,mBAAA,CAAA;AAAlC,QAAA,IAAM45B,cAA4B,GAAA,CAAA,mBAAA,GAAA,IAAI,CAACtB,SAAS,CAACx4B,GAAG,CAACk3B,KAAAA,CAAM5rB,EAAE,CAAA,KAAA,IAAA,GAA3B,sBAAgC,IAAIpL,GAAAA,EAAAA,CAAAA;AAEtE,QAAA,IAAI,CAACq4B,WAAW,CAACn/B,GAAG,CAAC89B,KAAAA,CAAM5rB,EAAE,EAAEuuB,gBAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACrB,SAAS,CAACp/B,GAAG,CAAC89B,KAAAA,CAAM5rB,EAAE,EAAEwuB,cAAAA,CAAAA,CAAAA;QAE7B,IAAwB5C,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMI,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1ByC,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,SAAAA,CAAU/D,SAAS,EAAI,EAAA;AACzB,gBAAA,IAAIiC,SAAAA,KAAAA,CAAAA,CAAAA;AACJ,gBAAA,IAAI8B,UAAU3E,UAAU,CAACqC,IAAI,KAAK7zB,YAAAA,CAAa4U,KAAK,EAAE;oBACpDyf,MAAS,GAAA;AACPA,wBAAAA,MAAAA,EAAQC,QAAQ8B,MAAM;wBACtB/6B,MAAQ86B,EAAAA,SAAAA,CAAU3E,UAAU,CAAC9pB,EAAE;AACjC,qBAAA,CAAA;iBACK,MAAA;oBACL2sB,MAAS,GAAA;AAAEA,wBAAAA,MAAAA,EAAQC,QAAQ+B,MAAM;AAAC,qBAAA,CAAA;AACpC,iBAAA;gBAEA,IAAgBF,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,SAAAA,CAAUvE,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA7Bl1B,oBAAAA,IAAAA,CAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,oBAAA,IAAI,CAAC45B,UAAU,CAACL,gBAAAA,EAAkBv5B,CAAG23B,EAAAA,MAAAA,CAAAA,CAAAA;AACvC,iBAAA;aACK,MAAA;gBACL,IAAMkC,QAAAA,GAAWJ,UAAU5Z,OAAO,EAAA,CAAA;AAClCwZ,gBAAAA,YAAAA,CAAM9B,aAAa,CAAC+B,OAASG,EAAAA,SAAAA,CAAU5D,SAAS,EAAEgE,QAAAA,CAAAA,CAAAA;AACpD,aAAA;AAEAJ,YAAAA,SAAAA,CAAUlE,WAAW,GAAG,KAAA,CAAA;AAC1B,SAAA;AAEA,QAAA,IAAMqD,YAAY,IAAI/4B,GAAAA,EAAAA,CAAAA;QACtB,IAA0By5B,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,OAAAA,CAAQQ,OAAO,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;4CAAjCC,EAAI/D,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACd,YAAA,IAAMe,WAAWhB,KAAMjd,CAAAA,MAAM,CAACkB,KAAAA,CAAMvb,IAAI,CAACu3B,KAAAA,CAAAA,CAAAA,CAAAA;YACzC,IAAIiB,YAAAA,CAAahf,UAAU,CAAC8hB,EAAK,CAAA,EAAA;AAC/B,gBAAA,IAAI,CAACH,UAAU,CAACL,gBAAAA,EAA4BQ,EAAI,EAAA;AAC9CpC,oBAAAA,MAAAA,EAAQC,QAAQoC,KAAK;AACrBr7B,oBAAAA,MAAAA,EAAQo4B,SAAS/rB,EAAE;AACrB,iBAAA,CAAA,CAAA;aACK,MAAA;AACLwuB,gBAAAA,cAAAA,CAAe1gC,GAAG,CAAeihC,EAAIhD,EAAAA,QAAAA,CAAS/rB,EAAE,CAAA,CAAA;AAClD,aAAA;AAEA4tB,YAAAA,SAAAA,CAAUp5B,GAAG,CAACu3B,QAAAA,CAAAA,CAAAA;AAChB,SAAA;QAEA,OAAO6B,SAAAA,CAAAA;AACT,KAAA,CAAA;8DAGA,MAAQgB,CAAAA,UAkBP,GAlBD,SAAQA,WAAWK,KAAkB,EAAEC,QAAkB,EAAEvC,MAAkB,EAAA;QAC3E,IAAMwC,KAAAA,GAAQF,KAAMv6B,CAAAA,GAAG,CAACw6B,QAAAA,CAAAA,CAAAA;AACxB,QAAA,IAAIC,SAAS,CAACd,YAAAA,CAAM3B,aAAa,CAACyC,OAAOxC,MAAS,CAAA,EAAA;;AAEhD,YAAA,IAAIuC,QAAa5gC,KAAAA,OAAAA,CAAQutB,IAAI,IAAIsT,MAAMxC,MAAM,KAAKC,OAAQoC,CAAAA,KAAK,IAAIrC,MAAOA,CAAAA,MAAM,KAAKC,OAAAA,CAAQ8B,MAAM,EAAE;AACnG,gBAAA,OAAA;AACF,aASA;AACF,SAAA;QACAO,KAAMnhC,CAAAA,GAAG,CAACohC,QAAUvC,EAAAA,MAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;;IAGA,MAAQU,CAAAA,eAIP,GAJD,SAAQA,eAAAA,GAAAA;QACN,IAAyB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACP,OAAO,CAACU,WAAW,CAAC9K,KAAK,CAAC,CAAI,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjDoH,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACsF,qBAAqB,CAACtF,UAAAA,CAAWqC,IAAI,CAAA,CAAA;AAC5C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQiD,qBAwCP,GAxCD,SAAQA,qBAAAA,CAAsBC,EAAgB,EAAA;;AAE5C,QAAA,IAAMC,MAAM,IAAI,CAACnC,gBAAgB,CAAChf,SAAS,CAAC,SAACpc,IAAAA,EAAAA;mBAASA,IAASs9B,KAAAA,EAAAA,CAAAA;;QAC/D,IAAIC,GAAAA,KAAQ,CAAC,CAAG,EAAA;AACd,YAAA,IAAMC,cAAc,IAAI,CAACxC,WAAW,CAACr4B,GAAG,CAAC26B,EAAAA,CAAAA,CAAAA;AACzC,YAAA,IAAMG,GAAM,GAAA,IAAI,CAACrC,gBAAgB,CAACl+B,MAAM,CAAA;AACxC,YAAA,IAAK,IAAIF,CAAIygC,GAAAA,GAAAA,GAAM,CAAGzgC,EAAAA,CAAAA,GAAIugC,KAAKvgC,CAAK,EAAA,CAAA;AAClC,gBAAA,IAAM0gC,KAAQ,GAAA,IAAI,CAACtC,gBAAgB,CAACp+B,CAAE,CAAA,CAAA;AACtC,gBAAA,IAAI,CAACg+B,WAAW,CAACj/B,GAAG,CAAC2hC,KAAOF,EAAAA,WAAAA,CAAAA,CAAAA;AAC9B,aAAA;YACA,OAAOA,WAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAI,CAACpC,gBAAgB,CAACt+B,IAAI,CAACwgC,EAAAA,CAAAA,CAAAA;AAE3B,QAAA,IAAMrB,iBAAiB,IAAI,CAAClB,OAAO,CAACmB,iBAAiB,CAACoB,EAAAA,CAAAA,CAAAA;AACtD,QAAA,IAAMK,WAAW,IAAI76B,GAAAA,EAAAA,CAAAA;AACrB,QAAA,IAAI,CAACk4B,WAAW,CAACj/B,GAAG,CAACuhC,EAAIK,EAAAA,QAAAA,CAAAA,CAAAA;QACzB,IAAI,IAAI,CAAC5C,OAAO,CAAC6C,YAAY,CAACN,EAAAA,CAAAA,EAAKK,QAASl7B,CAAAA,GAAG,CAACpG,UAAAA,CAAWu8B,OAAO,CAAA,CAAA;AAElE,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAyBqD,cAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BlE,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI/6B,EAAI,GAAA,CAAA,CAAA;AACR,YAAA,MAAOA,KAAI+6B,UAAWW,CAAAA,UAAU,CAACx7B,MAAM,EAAEF,EAAK,EAAA,CAAA;AAC5C,gBAAA,IAAMggC,EAAKjF,GAAAA,UAAAA,CAAWW,UAAU,CAAC17B,EAAE,CAAA,CAAA;gBACnC,IAAIk9B,YAAAA,CAAahf,UAAU,CAAC8hB,EAAK,CAAA,EAAA;AAC/BW,oBAAAA,QAAAA,CAASl7B,GAAG,CAAWu6B,EAAAA,CAAAA,CAAAA;AACvB,oBAAA,MAAA;AACF,iBAAA;AAEA,gBAAA,IAAMa,eAAkB,GAAA,IAAI,CAACR,qBAAqB,CAAeL,EAAAA,CAAAA,CAAAA;AAEjE,gBAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAmBa,eAAiB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzB79B,oBAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,oBAAA,IAAIA,SAAS3D,UAAWu8B,CAAAA,OAAO,EAAE+E,QAAAA,CAASl7B,GAAG,CAACzC,IAAAA,CAAAA,CAAAA;AAChD,iBAAA;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC+6B,OAAO,CAAC6C,YAAY,CAAeZ,EAAK,CAAA,EAAA,MAAA;AACpD,aAAA;YACA,IAAIhgC,EAAAA,KAAM+6B,UAAWW,CAAAA,UAAU,CAACx7B,MAAM,EAAEygC,QAASl7B,CAAAA,GAAG,CAACpG,UAAAA,CAAWu8B,OAAO,CAAA,CAAA;AACzE,SAAA;QAEA,IAAI,CAACwC,gBAAgB,CAAC5zB,GAAG,EAAA,CAAA;QACzB,OAAOm2B,QAAAA,CAAAA;AACT,KAAA,CAAA;AAnNW7C,IAAAA,OAAAA,KAAAA,CAAAA;AAoNZ,CAAA,EAAA;;AC/Nc,IAAA,UAAA,GAAA,SAAMgD,UAQP1D,CAAAA,IAAkB,EAAE1B,UAA2B,EAAA;IACzD,IAAI,CAAC0B,IAAI,GAAGA,IAAAA,CAAAA;IACZ,IAAI,CAAC1B,UAAU,GAAGA,UAAAA,CAAAA;AAClB,IAAA,IAAI,CAACzqB,EAAE,GAXU6vB,WAWIzF,GAAG,EAAA,CAAA;IAXPyF,UAYNnhC,CAAAA,IAAI,CAACZ,GAAG,CAAC,IAAI,CAACkS,EAAE,EAAE,IAAI,CAAA,CAAA;;AAZhB6vB,UAAAA,CACJzF,GAAM,GAAA,CAAA,CAAA;AADFyF,UAAAA,CAEZnhC,OAAgC,IAAIkG,GAAAA,EAAAA;;ACAtC,IAAA,OAAA,iBAAA,WAAA;aAAMk7B,OAYC/hC,CAAAA,KAAmB,EAAEy/B,WAAyB,EAAA;QACxD,IAAI,CAACuC,WAAW,GAAGhiC,KAAAA,CAAAA;AACnBy/B,QAAAA,WAAAA,CAAYwC,OAAO,CAAC,IAAIH,UAAWv3B,CAAAA,YAAAA,CAAa4U,KAAK,EAAE;AAACnf,YAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA,CAAA;QAC9D,IAAI,CAACy/B,WAAW,GAAGA,WAAAA,CAAAA;;AAfVsC,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAkBX7B,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBtwB,WAAyB,EAAA;AACzC,QAAA,OAAO,IAAI,CAAC6vB,WAAW,CAACv6B,MAAM,CAAC,SAAClB,IAAAA,EAAAA;AAASA,YAAAA,OAAAA,IAAAA,CAAKo6B,IAAI,KAAKxuB,WAAAA,CAAAA;;AACzD,KAAA,CAAA;AAEAgyB,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAaN,EAAgB,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC7B,WAAW,CAAC5Z,IAAI,CAAC,SAAC7hB,IAAAA,EAAAA;mBAASA,IAAKo6B,CAAAA,IAAI,KAAKkD,EAAMt9B,IAAAA,IAAAA,CAAK04B,UAAU,CAAC,CAAA,CAAE,KAAKr8B,UAAAA,CAAWu8B,OAAO,CAAA;;AACtG,KAAA,CAAA;AAEAsF,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBrzB,GAAW,EAAA;AAC3B,QAAA,OAAOizB,UAAWnhC,CAAAA,IAAI,CAACgG,GAAG,CAACkI,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AA5BWkzB,IAAAA,OAAAA,CAKJhiB,MAKN,GALD,SAAOA,MAAO/f,CAAAA,KAAmB,EAAEy/B,WAA8B,EAAA;AAC/D,QAAA,IAAM0C,GAAM1C,GAAAA,WAAAA,CAAYz6B,GAAG,CAAC,SAACo9B,GAAAA,EAAAA;YAC3B,OAAO,IAAIN,WAAyBM,GAAG,CAAC,EAAE,EAAEA,GAAAA,CAAIzN,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA;AACxD,SAAA,CAAA,CAAA;QACA,OAAO,IATEoN,QASU/hC,KAAOmiC,EAAAA,GAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAVWJ,IAAAA,OAAAA,OAAAA,CAAAA;AA6BZ,CAAA,EAAA;;ACjCD;AASA,IAAMM,+BACDnE,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa6S,iBAAiB,EAC9B;AAAC,IAAA;AAAC7S,QAAAA,YAAAA,CAAaiT,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAACjT,QAAAA,YAAAA,CAAa6S,iBAAiB;AAAE7S,QAAAA,YAAAA,CAAaiT,kBAAkB;AAAC,KAAA;CAAC,EACtGvP,OAAAA,CAAQC,eAAe,CAACvN,IAAI,CAAA,EAG3Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAaiT,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAACjT,QAAAA,YAAAA,CAAa0O,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC1O,QAAAA,YAAAA,CAAa+3B,8BAA8B;AAAC,KAAA;AAC7C,IAAA;AAAC/3B,QAAAA,YAAAA,CAAa+P,gBAAgB;AAAC,KAAA;AAC/B,IAAA;AAAC/P,QAAAA,YAAAA,CAAakN,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAClN,QAAAA,YAAAA,CAAa4T,yBAAyB;AAAC,KAAA;AACxC,IAAA;AAAC5T,QAAAA,YAAAA,CAAakT,WAAW;AAAC,KAAA;AAC1B,IAAA;AAACld,QAAAA,OAAAA,CAAQisB,uBAAuB;AAAC,KAAA;CAClC,EACDve,OAAAA,CAAQoP,iBAAiB,CAAC1c,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAaoU,CAAAA,iBAAiB,EAC9B;AAAC,IAAA;AAACpe,QAAAA,OAAAA,CAAQssB,UAAU;AAAC,KAAA;CAAC,EACtB5e,OAAAA,CAAQyQ,eAAe,CAAC/d,IAAI,CAAA,EAG3Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAauU,CAAAA,mBAAmB,EAChC;AACE,IAAA;AAACvU,QAAAA,YAAAA,CAAaoU,iBAAiB;AAAEte,QAAAA,UAAAA,CAAW8qB,UAAU;AAAE9qB,QAAAA,UAAAA,CAAW+qB,WAAW;AAAC,KAAA;AAC/E,IAAA;AACE7gB,QAAAA,YAAAA,CAAaoU,iBAAiB;AAC9Bte,QAAAA,UAAAA,CAAW8qB,UAAU;AACrB5gB,QAAAA,YAAAA,CAAamO,4BAA4B;AACzCrY,QAAAA,UAAAA,CAAW+qB,WAAW;AACvB,KAAA;CACF,EACDnd,OAAAA,CAAQ2Q,iBAAiB,CAACje,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAakT,CAAAA,WAAW,EACxB;AACE,IAAA;AAACld,QAAAA,OAAAA,CAAQmzB,WAAW;AAAErzB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AACpC,IAAA;AAACpsB,QAAAA,OAAAA,CAAQmzB,WAAW;AAAEnzB,QAAAA,OAAAA,CAAQssB,UAAU;AAAC,KAAA;CAC1C,EACD5e,OAAAA,CAAQqP,UAAU,CAAC3c,IAAI,CAAA,EAGtBu9B,aAAaC,2BAA2B,CACzC5zB,YAAaoT,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAACpd,QAAAA,OAAAA,CAAQ6yB,QAAQ;AAAE7yB,QAAAA,OAAAA,CAAQqsB,4BAA4B;AAAC,KAAA;AACxD,IAAA;AAACrsB,QAAAA,OAAAA,CAAQ8yB,WAAW;AAAEhzB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AACpC,IAAA;AAACpsB,QAAAA,OAAAA,CAAQ+yB,YAAY;AAAEjzB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AACrC,IAAA;AAACpsB,QAAAA,OAAAA,CAAQ8yB,WAAW;AAAE9oB,QAAAA,YAAAA,CAAaoU,iBAAiB;AAAC,KAAA;AACrD,IAAA;AAACpe,QAAAA,OAAAA,CAAQ+yB,YAAY;AAAE/oB,QAAAA,YAAAA,CAAaoU,iBAAiB;AAAC,KAAA;CACvD,EACD1Q,OAAAA,CAAQyP,gBAAgB,CAAC/c,IAAI,CAAA,EAG5Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAaqT,CAAAA,iBAAiB,EAC9B;AAAC,IAAA;AAACrd,QAAAA,OAAAA,CAAQkzB,WAAW;AAAC,KAAA;CAAC,EACvBxlB,OAAAA,CAAQuN,eAAe,CAAC7a,IAAI,CAAA,EAG3Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAauT,CAAAA,qBAAqB,EAClC;AAAC,IAAA;AAACvd,QAAAA,OAAAA,CAAQizB,UAAU;AAAEjzB,QAAAA,OAAAA,CAAQqsB,4BAA4B;AAAC,KAAA;CAAC,EAC5D3e,OAAAA,CAAQ4P,mBAAmB,CAACld,IAAI,CAAA,EAG/Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAayT,CAAAA,qBAAqB,EAClC;AAAC,IAAA;AAACzd,QAAAA,OAAAA,CAAQgzB,UAAU;AAAC,KAAA;CAAC,EACtBtlB,OAAAA,CAAQ8P,mBAAmB,CAACpd,IAAI,CAAA,EAG/Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa2T,CAAAA,wBAAwB,EACrC;AAAC,IAAA;AAAC3T,QAAAA,YAAAA,CAAaiT,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAACjT,QAAAA,YAAAA,CAAa2T,wBAAwB;AAAE3T,QAAAA,YAAAA,CAAaiT,kBAAkB;AAAC,KAAA;CAAC,EAC7GvP,OAAAA,CAAQgQ,sBAAsB,CAACtd,IAAI,CAAA,EAGlCu9B,aAAaC,2BAA2B,CACzC5zB,YAAa4T,CAAAA,yBAAyB,EACtC;AACE,IAAA;AAAC5T,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAa2T,wBAAwB;AAAE3T,QAAAA,YAAAA,CAAa8T,mBAAmB;AAAC,KAAA;AAC1G,IAAA;AAAC9T,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAa8T,mBAAmB;AAAC,KAAA;CACpE,EACDpQ,OAAAA,CAAQsP,sBAAsB,CAAC5c,IAAI,CAAA,EAGlCu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8T,CAAAA,mBAAmB,EAChC;AACE,IAAA;AAAC9T,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAa2T,wBAAwB;AAAE3T,QAAAA,YAAAA,CAAa8T,mBAAmB;AAAC,KAAA;AAC7G,IAAA;AAAC9T,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAa2T,wBAAwB;AAAE3T,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAC3G,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAa8T,mBAAmB;AAAC,KAAA;AACtE,IAAA;AAAC9T,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;CACrE,EACD3P,OAAAA,CAAQmQ,iBAAiB,CAACzd,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa4R,CAAAA,oBAAoB,EACjC;AACE,IAAA;AAAC5R,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAClD,IAAA;AAACpiB,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;AAChF,IAAA;AAAC9I,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEtsB,QAAAA,UAAAA,CAAWgqB,KAAK;AAAE9f,QAAAA,YAAAA,CAAa4H,WAAW;AAAC,KAAA;CAC/F,EACDlE,OAAAA,CAAQ+N,mBAAmB,CAACrb,IAAI,CAAA,EAG/Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAagS,CAAAA,yBAAyB,EACtC;AACE,IAAA;AAAChS,QAAAA,YAAAA,CAAa4R,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAAC5R,QAAAA,YAAAA,CAAagS,yBAAyB;AAAElc,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AACzE,IAAA;AAACpiB,QAAAA,YAAAA,CAAagS,yBAAyB;AAAElc,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;CACxG,EACDpF,OAAAA,CAAQmO,uBAAuB,CAACzb,IAAI,CAAA,EAGnCu9B,aAAaC,2BAA2B,CAAC5zB,YAAa+3B,CAAAA,8BAA8B,EAAE;AACvF,IAAA;AAAC/3B,QAAAA,YAAAA,CAAagS,yBAAyB;AAAElc,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AAC/D,CAAA,CAAA,EAEEqS,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAaiK,mCAAmC,EAChD;AACE,IAAA;AAACjU,QAAAA,OAAAA,CAAQgX,IAAI;AAAC,KAAA;AACd,IAAA;AAAChX,QAAAA,OAAAA,CAAQiI,KAAK;AAAC,KAAA;AACf,IAAA;AAACjI,QAAAA,OAAAA,CAAQgJ,IAAI;AAAC,KAAA;AACd,IAAA;AAAChJ,QAAAA,OAAAA,CAAQkI,GAAG;AAAC,KAAA;AACb,IAAA;AAAClI,QAAAA,OAAAA,CAAQmI,IAAI;AAAC,KAAA;AACd,IAAA;AAACnI,QAAAA,OAAAA,CAAQoI,IAAI;AAAC,KAAA;AACd,IAAA;AAACpI,QAAAA,OAAAA,CAAQqI,IAAI;AAAC,KAAA;AACd,IAAA;AAACrI,QAAAA,OAAAA,CAAQyI,IAAI;AAAC,KAAA;AACd,IAAA;AAACzI,QAAAA,OAAAA,CAAQiuB,KAAK;AAAC,KAAA;AACf,IAAA;AAACjuB,QAAAA,OAAAA,CAAQmuB,KAAK;AAAC,KAAA;AACf,IAAA;AAACnuB,QAAAA,OAAAA,CAAQquB,KAAK;AAAC,KAAA;AACf,IAAA;AAACruB,QAAAA,OAAAA,CAAQiJ,KAAK;AAAC,KAAA;AACf,IAAA;AAACjJ,QAAAA,OAAAA,CAAQkJ,KAAK;AAAC,KAAA;AACf,IAAA;AAAClJ,QAAAA,OAAAA,CAAQyuB,KAAK;AAAC,KAAA;AACf,IAAA;AAACzuB,QAAAA,OAAAA,CAAQ2uB,KAAK;AAAC,KAAA;AACf,IAAA;AAAC3uB,QAAAA,OAAAA,CAAQ6uB,KAAK;AAAC,KAAA;AACf,IAAA;AAAC7uB,QAAAA,OAAAA,CAAQ+uB,KAAK;AAAC,KAAA;AACf,IAAA;AAAC/uB,QAAAA,OAAAA,CAAQsI,IAAI;AAAC,KAAA;AACd,IAAA;AAACtI,QAAAA,OAAAA,CAAQuI,IAAI;AAAC,KAAA;AACd,IAAA;AAACvI,QAAAA,OAAAA,CAAQwI,IAAI;AAAC,KAAA;AACd,IAAA;AAACxI,QAAAA,OAAAA,CAAQ0I,MAAM;AAAC,KAAA;AAChB,IAAA;AAAC1I,QAAAA,OAAAA,CAAQ4I,MAAM;AAAC,KAAA;AAChB,IAAA;AAAC5I,QAAAA,OAAAA,CAAQ2I,MAAM;AAAC,KAAA;AAChB,IAAA;AAAC3I,QAAAA,OAAAA,CAAQ8I,MAAM;AAAC,KAAA;AAChB,IAAA;AAAC9I,QAAAA,OAAAA,CAAQ6I,MAAM;AAAC,KAAA;AAChB,IAAA;AAAC7I,QAAAA,OAAAA,CAAQ+I,MAAM;AAAC,KAAA;AAChB,IAAA;AAAC/I,QAAAA,OAAAA,CAAQsJ,SAAS;AAAC,KAAA;AACnB,IAAA;AAACtJ,QAAAA,OAAAA,CAAQ8vB,SAAS;AAAC,KAAA;AACnB,IAAA;AAAC9vB,QAAAA,OAAAA,CAAQwJ,YAAY;AAAC,KAAA;AACtB,IAAA;AAACxJ,QAAAA,OAAAA,CAAQmJ,gBAAgB;AAAC,KAAA;AAC1B,IAAA;AAACnJ,QAAAA,OAAAA,CAAQoJ,mBAAmB;AAAC,KAAA;AAC7B,IAAA;AAACpJ,QAAAA,OAAAA,CAAQuJ,eAAe;AAAC,KAAA;AACzB,IAAA;AAACvJ,QAAAA,OAAAA,CAAQqJ,sBAAsB;AAAC,KAAA;AAChC,IAAA;AAACrJ,QAAAA,OAAAA,CAAQowB,WAAW;AAAC,KAAA;AACrB,IAAA;AAACpwB,QAAAA,OAAAA,CAAQswB,WAAW;AAAC,KAAA;AACrB,IAAA;AAACtwB,QAAAA,OAAAA,CAAQwwB,cAAc;AAAC,KAAA;AACxB,IAAA;AAACxwB,QAAAA,OAAAA,CAAQ0wB,iBAAiB;AAAC,KAAA;AAC3B,IAAA;AAAC1wB,QAAAA,OAAAA,CAAQ4wB,WAAW;AAAC,KAAA;AACrB,IAAA;AAAC5wB,QAAAA,OAAAA,CAAQ8wB,WAAW;AAAC,KAAA;AACrB,IAAA;AAAC9wB,QAAAA,OAAAA,CAAQgxB,cAAc;AAAC,KAAA;AACxB,IAAA;AAAChxB,QAAAA,OAAAA,CAAQkxB,iBAAiB;AAAC,KAAA;CAC5B,EACDxjB,OAAAA,CAAQqG,+BAA+B,CAAC3T,IAAI,CAAA,EAG3Cu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8J,CAAAA,uBAAuB,EACpC;AAAC,IAAA;AAAChU,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAAE,IAAA;AAACpiB,QAAAA,YAAAA,CAAaiK,mCAAmC;AAAC,KAAA;CAAC,EACrEvG,OAAAA,CAAQkG,qBAAqB,CAACxT,IAAI,CAAA,EAGjCu9B,aAAaC,2BAA2B,CACzC5zB,YAAagI,CAAAA,oBAAoB,EACjC;AAAC,IAAA;AAAChI,QAAAA,YAAAA,CAAa2I,cAAc;AAAC,KAAA;AAAE,IAAA;AAAC3I,QAAAA,YAAAA,CAAakI,cAAc;AAAElI,QAAAA,YAAAA,CAAa2I,cAAc;AAAC,KAAA;CAAC,EAC3FjF,OAAAA,CAAQqE,kBAAkB,CAAC3R,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa2I,CAAAA,cAAc,EAC3B;AACE,IAAA;AAAC3I,QAAAA,YAAAA,CAAa8J,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAAC9J,QAAAA,YAAAA,CAAaiK,mCAAmC;AAAEjK,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;CACjF,EACDpF,OAAAA,CAAQ4E,aAAa,CAAClS,IAAI,CAAA,EAGzBu9B,aAAaC,2BAA2B,CACzC5zB,YAAakI,CAAAA,cAAc,EAC3B;AAAC,IAAA;AAAClI,QAAAA,YAAAA,CAAaqI,qBAAqB;AAAC,KAAA;AAAE,IAAA;AAACrI,QAAAA,YAAAA,CAAakI,cAAc;AAAElI,QAAAA,YAAAA,CAAaqI,qBAAqB;AAAC,KAAA;CAAC,EACzG3E,OAAAA,CAAQuE,aAAa,CAAC7R,IAAI,CAAA,EAGzBu9B,aAAaC,2BAA2B,CACzC5zB,YAAaqI,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAACrI,QAAAA,YAAAA,CAAag4B,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACh4B,QAAAA,YAAAA,CAAai4B,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACj4B,QAAAA,YAAAA,CAAak4B,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAACl4B,QAAAA,YAAAA,CAAam4B,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACniC,QAAAA,OAAAA,CAAQyxB,OAAO;AAAC,KAAA;CAClB,EACD/jB,OAAAA,CAAQyE,mBAAmB,CAAC/R,IAAI,CAAA,EAG/Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAag4B,CAAAA,iBAAiB,EAC9B;AAAC,IAAA;AAAChiC,QAAAA,OAAAA,CAAQysB,KAAK;AAAC,KAAA;AAAE,IAAA;AAACzsB,QAAAA,OAAAA,CAAQuvB,EAAE;AAAC,KAAA;AAAE,IAAA;AAACvvB,QAAAA,OAAAA,CAAQ0vB,KAAK;AAAC,KAAA;AAAE,IAAA;AAAC1vB,QAAAA,OAAAA,CAAQwvB,GAAG;AAAC,KAAA;AAAE,IAAA;AAACxvB,QAAAA,OAAAA,CAAQyyB,QAAQ;AAAC,KAAA;AAAC,CAAA,CAAA,EAMlFkL,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAak4B,uBAAuB,EACpC;AAAC,IAAA;AAACliC,QAAAA,OAAAA,CAAQqyB,MAAM;AAAC,KAAA;AAAE,IAAA;AAACryB,QAAAA,OAAAA,CAAQmyB,IAAI;AAAC,KAAA;AAAC,CAAA,CAAA,EAMjCwL,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAam4B,mBAAmB,EAChC;AAAC,IAAA;AAACniC,QAAAA,OAAAA,CAAQiyB,SAAS;AAAC,KAAA;AAAC,CAAA,CAAA,EAMpB0L,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAai4B,mBAAmB,EAChC;AAAC,IAAA;AAACjiC,QAAAA,OAAAA,CAAQ2xB,KAAK;AAAC,KAAA;AAAE,IAAA;AAAC3xB,QAAAA,OAAAA,CAAQ6xB,OAAO;AAAC,KAAA;AAAE,IAAA;AAAC7xB,QAAAA,OAAAA,CAAQ+xB,IAAI;AAAC,KAAA;AAAC,CAAA,CAAA,EAMnD4L,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa+P,gBAAgB,EAC7B;AACE,IAAA;AACE/Z,QAAAA,OAAAA,CAAQ+M,MAAM;AACdjN,QAAAA,UAAAA,CAAWssB,EAAE;AACbtsB,QAAAA,UAAAA,CAAWgrB,UAAU;AACrB9gB,QAAAA,YAAAA,CAAakQ,uBAAuB;AACpCpa,QAAAA,UAAAA,CAAWirB,WAAW;AACtBjrB,QAAAA,UAAAA,CAAWwrB,SAAS;AACrB,KAAA;AACD,IAAA;AACEtrB,QAAAA,OAAAA,CAAQ+M,MAAM;AACdjN,QAAAA,UAAAA,CAAWgrB,UAAU;AACrB9gB,QAAAA,YAAAA,CAAakQ,uBAAuB;AACpCpa,QAAAA,UAAAA,CAAWirB,WAAW;AACtBjrB,QAAAA,UAAAA,CAAWwrB,SAAS;AACrB,KAAA;CACF,EACD5d,OAAAA,CAAQiM,eAAe,CAACvZ,IAAI,CAAA,EAG3Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAakQ,CAAAA,uBAAuB,EACpC;AAAC,IAAA;AAAClQ,QAAAA,YAAAA,CAAa4Q,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAAC5Q,QAAAA,YAAAA,CAAakQ,uBAAuB;AAAElQ,QAAAA,YAAAA,CAAa4Q,kBAAkB;AAAC,KAAA;CAAC,EAC5GlN,OAAAA,CAAQsM,qBAAqB,CAAC5Z,IAAI,CAAA,EAGjCu9B,aAAaC,2BAA2B,CACzC5zB,YAAa4Q,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAAC5Q,QAAAA,YAAAA,CAAa2I,cAAc;AAAE3I,QAAAA,YAAAA,CAAasR,sBAAsB;AAAExb,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACxF,IAAA;AACEthB,QAAAA,YAAAA,CAAakI,cAAc;AAC3BlI,QAAAA,YAAAA,CAAa2I,cAAc;AAC3B3I,QAAAA,YAAAA,CAAasR,sBAAsB;AACnCxb,QAAAA,UAAAA,CAAWwrB,SAAS;AACrB,KAAA;AACD,IAAA;AACEthB,QAAAA,YAAAA,CAAamR,gBAAgB;AAC7BnR,QAAAA,YAAAA,CAAa2I,cAAc;AAC3B3I,QAAAA,YAAAA,CAAawR,iBAAiB;AAC9B1b,QAAAA,UAAAA,CAAWwrB,SAAS;AACrB,KAAA;AACD,IAAA;AAACthB,QAAAA,YAAAA,CAAa8Q,wBAAwB;AAAC,KAAA;CACxC,EACDpN,OAAAA,CAAQyM,iBAAiB,CAAC/Z,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8Q,CAAAA,wBAAwB,EACrC;AACE,IAAA;AAAC9Q,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAakQ,uBAAuB;AAAElQ,QAAAA,YAAAA,CAAakR,mBAAmB;AAAC,KAAA;AACzG,IAAA;AAAClR,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAakR,mBAAmB;AAAC,KAAA;CACpE,EACDxN,OAAAA,CAAQmN,sBAAsB,CAACza,IAAI,CAAA,EAGlCu9B,aAAaC,2BAA2B,CACzC5zB,YAAakR,CAAAA,mBAAmB,EAChC;AACE,IAAA;AAAClR,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAakQ,uBAAuB;AAAElQ,QAAAA,YAAAA,CAAakR,mBAAmB;AAAC,KAAA;AAC5G,IAAA;AAAClR,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAakQ,uBAAuB;AAAElQ,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAC1G,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAakR,mBAAmB;AAAC,KAAA;AACtE,IAAA;AAAClR,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;CACrE,EACD3P,OAAAA,CAAQqN,iBAAiB,CAAC3a,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAamR,CAAAA,gBAAgB,EAC7B;AACE,IAAA;AACEnb,QAAAA,OAAAA,CAAQ2yB,MAAM;AACd7yB,QAAAA,UAAAA,CAAW8qB,UAAU;AACrB5qB,QAAAA,OAAAA,CAAQ4yB,QAAQ;AAChB9yB,QAAAA,UAAAA,CAAWgqB,KAAK;AAChBhqB,QAAAA,UAAAA,CAAWqZ,YAAY;AACvBrZ,QAAAA,UAAAA,CAAW+qB,WAAW;AACvB,KAAA;CACF,EACDnd,OAAAA,CAAQ8M,eAAe,CAACpa,IAAI,CAAA,EAG3Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAasR,CAAAA,sBAAsB,EACnC;AACE,IAAA;AAACtR,QAAAA,YAAAA,CAAawR,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACxR,QAAAA,YAAAA,CAAasR,sBAAsB;AAAExb,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAawR,iBAAiB;AAAC,KAAA;CACxF,EACD9N,OAAAA,CAAQ0N,oBAAoB,CAAChb,IAAI,CAAA,EAGhCu9B,aAAaC,2BAA2B,CACzC5zB,YAAawR,CAAAA,iBAAiB,EAC9B;AAAC,IAAA;AAAC1b,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAAE,IAAA;AAACtsB,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;CAAC,EAChEpF,OAAAA,CAAQ6N,gBAAgB,CAACnb,IAAI,CAAA,EAG5Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8I,CAAAA,eAAe,EAC5B;AACE,IAAA;AAAChT,QAAAA,UAAAA,CAAWkrB,YAAY;AAAElrB,QAAAA,UAAAA,CAAWmrB,aAAa;AAAC,KAAA;AACnD,IAAA;AAACnrB,QAAAA,UAAAA,CAAWkrB,YAAY;AAAEhhB,QAAAA,YAAAA,CAAa2J,2BAA2B;AAAE7T,QAAAA,UAAAA,CAAWmrB,aAAa;AAAC,KAAA;CAC9F,EACDvd,OAAAA,CAAQkF,cAAc,CAACxS,IAAI,CAAA,EAG1Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAayJ,CAAAA,oCAAoC,EACjD;AAAC,IAAA;AAAC3T,QAAAA,UAAAA,CAAWmT,IAAI;AAAC,KAAA;AAAE,IAAA;AAACnT,QAAAA,UAAAA,CAAWuT,IAAI;AAAC,KAAA;AAAE,IAAA;AAACvT,QAAAA,UAAAA,CAAWwT,IAAI;AAAC,KAAA;AAAE,IAAA;AAACxT,QAAAA,UAAAA,CAAWyT,KAAK;AAAC,KAAA;AAAE,IAAA;AAACzT,QAAAA,UAAAA,CAAW0T,OAAO;AAAC,KAAA;CAAC,EACnG9F,OAAAA,CAAQqF,iCAAiC,CAAC3S,IAAI,CAAA,EAG7Cu9B,aAAaC,2BAA2B,CACzC5zB,YAAa2J,CAAAA,2BAA2B,EACxC;AACE,IAAA;AAAC3J,QAAAA,YAAAA,CAAa4S,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC9c,QAAAA,UAAAA,CAAWqZ,YAAY;AAAC,KAAA;AACzB,IAAA;AACEnP,QAAAA,YAAAA,CAAa2J,2BAA2B;AACxC3J,QAAAA,YAAAA,CAAayJ,oCAAoC;AACjD3T,QAAAA,UAAAA,CAAWqZ,YAAY;AACxB,KAAA;AACD,IAAA;AACEnP,QAAAA,YAAAA,CAAa2J,2BAA2B;AACxC3J,QAAAA,YAAAA,CAAayJ,oCAAoC;AACjDzJ,QAAAA,YAAAA,CAAa4S,mBAAmB;AACjC,KAAA;CACF,EACDlP,OAAAA,CAAQgG,yBAAyB,CAACtT,IAAI,CAAA,EAGrCu9B,aAAaC,2BAA2B,CACzC5zB,YAAao4B,CAAAA,sBAAsB,EACnC;AACE,IAAA;AAACp4B,QAAAA,YAAAA,CAAaq4B,qBAAqB;AAAC,KAAA;AACpC,IAAA;AACEr4B,QAAAA,YAAAA,CAAaq4B,qBAAqB;AAClCviC,QAAAA,UAAAA,CAAW0rB,QAAQ;AACnBxhB,QAAAA,YAAAA,CAAagP,UAAU;AACvBlZ,QAAAA,UAAAA,CAAWurB,KAAK;AAChBrhB,QAAAA,YAAAA,CAAa8O,qBAAqB;AACnC,KAAA;AACF,CAAA,CAAA,EAMA6kB,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAaq4B,qBAAqB,EAClC;AACE,IAAA;AAACr4B,QAAAA,YAAAA,CAAas4B,sBAAsB;AAAC,KAAA;AACrC,IAAA;AAACt4B,QAAAA,YAAAA,CAAaq4B,qBAAqB;AAAEviC,QAAAA,UAAAA,CAAWqqB,KAAK;AAAEngB,QAAAA,YAAAA,CAAas4B,sBAAsB;AAAC,KAAA;AAC5F,CAAA,CAAA,EAMA3E,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAas4B,sBAAsB,EACnC;AACE,IAAA;AAACt4B,QAAAA,YAAAA,CAAau4B,sBAAsB;AAAC,KAAA;AACrC,IAAA;AAACv4B,QAAAA,YAAAA,CAAas4B,sBAAsB;AAAExiC,QAAAA,UAAAA,CAAWwqB,MAAM;AAAEtgB,QAAAA,YAAAA,CAAau4B,sBAAsB;AAAC,KAAA;AAC9F,CAAA,CAAA,EAMA5E,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAau4B,sBAAsB,EACnC;AACE,IAAA;AAACv4B,QAAAA,YAAAA,CAAaw4B,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAACx4B,QAAAA,YAAAA,CAAau4B,sBAAsB;AAAEziC,QAAAA,UAAAA,CAAWmqB,MAAM;AAAEjgB,QAAAA,YAAAA,CAAaw4B,uBAAuB;AAAC,KAAA;AAC/F,CAAA,CAAA,EAMA7E,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAaw4B,uBAAuB,EACpC;AACE,IAAA;AAACx4B,QAAAA,YAAAA,CAAay4B,uBAAuB;AAAC,KAAA;AACtC,IAAA;AAACz4B,QAAAA,YAAAA,CAAaw4B,uBAAuB;AAAE1iC,QAAAA,UAAAA,CAAWuqB,YAAY;AAAErgB,QAAAA,YAAAA,CAAay4B,uBAAuB;AAAC,KAAA;AACtG,CAAA,CAAA,EAMA9E,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAay4B,uBAAuB,EACpC;AACE,IAAA;AAACz4B,QAAAA,YAAAA,CAAa04B,cAAc;AAAC,KAAA;AAC7B,IAAA;AAAC14B,QAAAA,YAAAA,CAAay4B,uBAAuB;AAAE3iC,QAAAA,UAAAA,CAAW0qB,KAAK;AAAExgB,QAAAA,YAAAA,CAAa04B,cAAc;AAAC,KAAA;AACtF,CAAA,CAAA,EAMA/E,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa04B,cAAc,EAC3B;AACE,IAAA;AAAC14B,QAAAA,YAAAA,CAAa24B,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC34B,QAAAA,YAAAA,CAAa04B,cAAc;AAAE5iC,QAAAA,UAAAA,CAAWoqB,SAAS;AAAElgB,QAAAA,YAAAA,CAAa24B,mBAAmB;AAAC,KAAA;AACtF,CAAA,CAAA,EAMAhF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa24B,mBAAmB,EAChC;AACE,IAAA;AAAC34B,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAC54B,QAAAA,YAAAA,CAAa24B,mBAAmB;AAAE7iC,QAAAA,UAAAA,CAAW+pB,KAAK;AAAE7f,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAC,KAAA;AACxF,IAAA;AAAC54B,QAAAA,YAAAA,CAAa24B,mBAAmB;AAAE7iC,QAAAA,UAAAA,CAAWiqB,KAAK;AAAE/f,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAC,KAAA;AACzF,CAAA,CAAA,EAMAjF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa44B,qBAAqB,EAClC;AACE,IAAA;AAAC54B,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAC,KAAA;AAC/B,IAAA;AAAC74B,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAE9iC,QAAAA,UAAAA,CAAWspB,UAAU;AAAEpf,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAC,KAAA;AAC1F,IAAA;AAAC74B,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAE9iC,QAAAA,UAAAA,CAAW0pB,WAAW;AAAExf,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAC,KAAA;AAC3F,IAAA;AAAC74B,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAE9iC,QAAAA,UAAAA,CAAWqpB,KAAK;AAAEnf,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAC,KAAA;AACrF,IAAA;AAAC74B,QAAAA,YAAAA,CAAa44B,qBAAqB;AAAE9iC,QAAAA,UAAAA,CAAWypB,KAAK;AAAEvf,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAC,KAAA;AACtF,CAAA,CAAA,EAMAlF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa64B,gBAAgB,EAC7B;AACE,IAAA;AAAC74B,QAAAA,YAAAA,CAAa84B,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC94B,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAE/iC,QAAAA,UAAAA,CAAWopB,OAAO;AAAElf,QAAAA,YAAAA,CAAa84B,mBAAmB;AAAC,KAAA;AACrF,IAAA;AAAC94B,QAAAA,YAAAA,CAAa64B,gBAAgB;AAAE/iC,QAAAA,UAAAA,CAAWwpB,QAAQ;AAAEtf,QAAAA,YAAAA,CAAa84B,mBAAmB;AAAC,KAAA;AACvF,CAAA,CAAA,EAMAnF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa84B,mBAAmB,EAChC;AACE,IAAA;AAAC94B,QAAAA,YAAAA,CAAa+4B,yBAAyB;AAAC,KAAA;AACxC,IAAA;AAAC/4B,QAAAA,YAAAA,CAAa84B,mBAAmB;AAAEhjC,QAAAA,UAAAA,CAAWmT,IAAI;AAAEjJ,QAAAA,YAAAA,CAAa+4B,yBAAyB;AAAC,KAAA;AAC3F,IAAA;AAAC/4B,QAAAA,YAAAA,CAAa84B,mBAAmB;AAAEhjC,QAAAA,UAAAA,CAAWuT,IAAI;AAAErJ,QAAAA,YAAAA,CAAa+4B,yBAAyB;AAAC,KAAA;AAC5F,CAAA,CAAA,EAMApF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa+4B,yBAAyB,EACtC;AACE,IAAA;AAAC/4B,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AAC/B,IAAA;AAACh5B,QAAAA,YAAAA,CAAa+4B,yBAAyB;AAAEjjC,QAAAA,UAAAA,CAAWwT,IAAI;AAAEtJ,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AACxF,IAAA;AAACh5B,QAAAA,YAAAA,CAAa+4B,yBAAyB;AAAEjjC,QAAAA,UAAAA,CAAWyT,KAAK;AAAEvJ,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AACzF,IAAA;AAACh5B,QAAAA,YAAAA,CAAa+4B,yBAAyB;AAAEjjC,QAAAA,UAAAA,CAAW0T,OAAO;AAAExJ,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AAC5F,CAAA,CAAA,EAMArF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAag5B,gBAAgB,EAC7B;AACE,IAAA;AAACh5B,QAAAA,YAAAA,CAAa0P,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAAC5Z,QAAAA,UAAAA,CAAW2pB,MAAM;AAAEzf,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AAClD,IAAA;AAACljC,QAAAA,UAAAA,CAAW6pB,MAAM;AAAE3f,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AAClD,IAAA;AAACh5B,QAAAA,YAAAA,CAAai5B,cAAc;AAAEj5B,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAC,KAAA;AAC7D,CAAA,CAAA,EAMArF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAai5B,cAAc,EAC3B;AAAC,IAAA;AAACnjC,QAAAA,UAAAA,CAAWmT,IAAI;AAAC,KAAA;AAAE,IAAA;AAACnT,QAAAA,UAAAA,CAAWuT,IAAI;AAAC,KAAA;AAAE,IAAA;AAACvT,QAAAA,UAAAA,CAAWkqB,IAAI;AAAC,KAAA;AAAE,IAAA;AAAClqB,QAAAA,UAAAA,CAAWyrB,KAAK;AAAC,KAAA;AAAC,CAAA,CAAA,EAM5EoS,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa0P,kBAAkB,EAC/B;AACE,IAAA;AAAC1P,QAAAA,YAAAA,CAAauP,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAACvP,QAAAA,YAAAA,CAAa0P,kBAAkB;AAAE5Z,QAAAA,UAAAA,CAAWkrB,YAAY;AAAEhhB,QAAAA,YAAAA,CAAagP,UAAU;AAAElZ,QAAAA,UAAAA,CAAWmrB,aAAa;AAAC,KAAA;AAC7G,IAAA;AAACjhB,QAAAA,YAAAA,CAAaqN,aAAa;AAAC,KAAA;AAC5B,IAAA;AAACrN,QAAAA,YAAAA,CAAa0P,kBAAkB;AAAE5Z,QAAAA,UAAAA,CAAWqrB,GAAG;AAAErrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAChE,IAAA;AAACpiB,QAAAA,YAAAA,CAAa0P,kBAAkB;AAAE5Z,QAAAA,UAAAA,CAAWqrB,GAAG;AAAEnhB,QAAAA,YAAAA,CAAaqN,aAAa;AAAC,KAAA;AAC7E,IAAA;AAACrN,QAAAA,YAAAA,CAAa0P,kBAAkB;AAAE5Z,QAAAA,UAAAA,CAAW2pB,MAAM;AAAC,KAAA;AACpD,IAAA;AAACzf,QAAAA,YAAAA,CAAa0P,kBAAkB;AAAE5Z,QAAAA,UAAAA,CAAW6pB,MAAM;AAAC,KAAA;CACrD,EACDjc,OAAAA,CAAQ8L,iBAAiB,CAACpZ,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAauP,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAACvP,QAAAA,YAAAA,CAAa4S,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAAC9c,QAAAA,UAAAA,CAAWqZ,YAAY;AAAC,KAAA;AACzB,IAAA;AAACrZ,QAAAA,UAAAA,CAAWsZ,cAAc;AAAC,KAAA;AAC3B,IAAA;AAACpZ,QAAAA,OAAAA,CAAQqZ,IAAI;AAAC,KAAA;AACd,IAAA;AAACrZ,QAAAA,OAAAA,CAAQsZ,KAAK;AAAC,KAAA;AACf,IAAA;AAACxZ,QAAAA,UAAAA,CAAW8qB,UAAU;AAAE5gB,QAAAA,YAAAA,CAAagP,UAAU;AAAElZ,QAAAA,UAAAA,CAAW+qB,WAAW;AAAC,KAAA;CACzE,EACDnd,OAAAA,CAAQuL,iBAAiB,CAAC7Y,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAagP,CAAAA,UAAU,EACvB;AACE,IAAA;AAAChP,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAC9O,QAAAA,YAAAA,CAAagP,UAAU;AAAElZ,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;CAChF,EACDpL,OAAAA,CAAQqL,UAAU,CAAC3Y,IAAI,CAAA,EAGtBu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8O,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAAC9O,QAAAA,YAAAA,CAAao4B,sBAAsB;AAAC,KAAA;AACrC,IAAA;AAACp4B,QAAAA,YAAAA,CAAag5B,gBAAgB;AAAEh5B,QAAAA,YAAAA,CAAak5B,mBAAmB;AAAEl5B,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;CACtG,EACDpL,OAAAA,CAAQsK,oBAAoB,CAAC5X,IAAI,CAAA,EAGhCu9B,aAAaC,2BAA2B,CACzC5zB,YAAak5B,CAAAA,mBAAmB,EAChC;AACE,IAAA;AAACpjC,QAAAA,UAAAA,CAAWgqB,KAAK;AAAC,KAAA;AAClB,IAAA;AAAChqB,QAAAA,UAAAA,CAAW2qB,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC3qB,QAAAA,UAAAA,CAAW4qB,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC5qB,QAAAA,UAAAA,CAAW6qB,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC7qB,QAAAA,UAAAA,CAAW4pB,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC5pB,QAAAA,UAAAA,CAAW8pB,UAAU;AAAC,KAAA;AACvB,IAAA;AAAC9pB,QAAAA,UAAAA,CAAWmpB,WAAW;AAAC,KAAA;AACxB,IAAA;AAACnpB,QAAAA,UAAAA,CAAWupB,YAAY;AAAC,KAAA;AACzB,IAAA;AAACvpB,QAAAA,UAAAA,CAAWqjC,UAAU;AAAC,KAAA;AACvB,IAAA;AAACrjC,QAAAA,UAAAA,CAAWyqB,UAAU;AAAC,KAAA;AACvB,IAAA;AAACzqB,QAAAA,UAAAA,CAAWsqB,SAAS;AAAC,KAAA;AACvB,CAAA,CAAA,EAMAuT,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAaqN,aAAa,EAC1B;AAAC,IAAA;AAACrN,QAAAA,YAAAA,CAAa8N,qBAAqB;AAAC,KAAA;CAAC,EACtCpK,OAAAA,CAAQyJ,YAAY,CAAC/W,IAAI,CAAA,EAGxBu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8N,CAAAA,qBAAqB,EAClC;AACE,IAAA;AACE9N,QAAAA,YAAAA,CAAa6O,mBAAmB;AAChC/Y,QAAAA,UAAAA,CAAW8qB,UAAU;AACrB5gB,QAAAA,YAAAA,CAAamO,4BAA4B;AACzCrY,QAAAA,UAAAA,CAAW+qB,WAAW;AACvB,KAAA;AACD,IAAA;AAAC7gB,QAAAA,YAAAA,CAAa6O,mBAAmB;AAAE/Y,QAAAA,UAAAA,CAAW8qB,UAAU;AAAE9qB,QAAAA,UAAAA,CAAW+qB,WAAW;AAAC,KAAA;AACjF,IAAA;AAAC7gB,QAAAA,YAAAA,CAAa6O,mBAAmB;AAAE7Y,QAAAA,OAAAA,CAAQgX,IAAI;AAAElX,QAAAA,UAAAA,CAAW+qB,WAAW;AAAC,KAAA;CACzE,EACDnd,OAAAA,CAAQ4J,mBAAmB,CAAClX,IAAI,CAAA,EAG/Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAamO,CAAAA,4BAA4B,EACzC;AACE,IAAA;AAACnO,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAC9O,QAAAA,YAAAA,CAAamO,4BAA4B;AAAErY,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACjG,IAAA;AAAC9O,QAAAA,YAAAA,CAAasO,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAACtO,QAAAA,YAAAA,CAAamO,4BAA4B;AAAEnO,QAAAA,YAAAA,CAAasO,oBAAoB;AAAC,KAAA;CAC/E,EACD5K,OAAAA,CAAQkK,yBAAyB,CAACxX,IAAI,CAAA,EAGrCu9B,aAAaC,2BAA2B,CACzC5zB,YAAaqO,CAAAA,wBAAwB,EACrC;AACE,IAAA;AAACrO,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAChZ,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACtD,IAAA;AAAC9O,QAAAA,YAAAA,CAAasO,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAACtO,QAAAA,YAAAA,CAAaqO,wBAAwB;AAAErO,QAAAA,YAAAA,CAAasO,oBAAoB;AAAC,KAAA;AAC1E,IAAA;AAACtO,QAAAA,YAAAA,CAAaqO,wBAAwB;AAAEvY,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;CAC9F,EACDpL,OAAAA,CAAQ0K,oBAAoB,CAAChY,IAAI,CAAA,EAGhCu9B,aAAaC,2BAA2B,CACzC5zB,YAAasO,CAAAA,oBAAoB,EACjC;AACE,IAAA;AAACtO,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAawO,qBAAqB;AAAC,KAAA;AACrE,IAAA;AAACxO,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAaqO,wBAAwB;AAAErO,QAAAA,YAAAA,CAAawO,qBAAqB;AAAC,KAAA;CAC7G,EACD9K,OAAAA,CAAQwK,iBAAiB,CAAC9X,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAawO,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAACxO,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAaqO,wBAAwB;AAAErO,QAAAA,YAAAA,CAAawO,qBAAqB;AAAC,KAAA;AAC/G,IAAA;AAACxO,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAaqO,wBAAwB;AAAErO,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAC3G,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAawO,qBAAqB;AAAC,KAAA;AACxE,IAAA;AAACxO,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;CACrE,EACD3P,OAAAA,CAAQ6K,kBAAkB,CAACnY,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa6O,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAAC7O,QAAAA,YAAAA,CAAa2I,cAAc;AAAC,KAAA;CAAC,EAC/BjF,OAAAA,CAAQiL,kBAAkB,CAACvY,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAakN,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAAClN,QAAAA,YAAAA,CAAakL,kBAAkB;AAAElL,QAAAA,YAAAA,CAAa0M,2BAA2B;AAAC,KAAA;CAAC,EAC7EhJ,OAAAA,CAAQoJ,kBAAkB,CAAC1W,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAakL,CAAAA,kBAAkB,EAC/B;AAAC,IAAA;AAAClL,QAAAA,YAAAA,CAAaqL,mBAAmB;AAAEvV,QAAAA,UAAAA,CAAW+qB,WAAW;AAAC,KAAA;CAAC,EAC5Dnd,OAAAA,CAAQoH,iBAAiB,CAAC1U,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAaqL,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAACrL,QAAAA,YAAAA,CAAawL,eAAe;AAAC,KAAA;AAAE,IAAA;AAACxL,QAAAA,YAAAA,CAAawL,eAAe;AAAExL,QAAAA,YAAAA,CAAa8L,uBAAuB;AAAC,KAAA;CAAC,EACtGpI,OAAAA,CAAQyH,kBAAkB,CAAC/U,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAawL,CAAAA,eAAe,EAC5B;AAAC,IAAA;AAACxL,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEtsB,QAAAA,UAAAA,CAAW8qB,UAAU;AAAC,KAAA;CAAC,EAC3Eld,OAAAA,CAAQ4H,cAAc,CAAClV,IAAI,CAAA,EAG1Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8L,CAAAA,uBAAuB,EACpC;AACE,IAAA;AAAC9L,QAAAA,YAAAA,CAAauM,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAACvM,QAAAA,YAAAA,CAAa8L,uBAAuB;AAAEhW,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAauM,qBAAqB;AAAC,KAAA;AAC5F,IAAA;AAACvM,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACjM,QAAAA,YAAAA,CAAa8L,uBAAuB;AAAE9L,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAC,KAAA;CACvE,EACDvI,OAAAA,CAAQ+H,qBAAqB,CAACrV,IAAI,CAAA,EAGjCu9B,aAAaC,2BAA2B,CACzC5zB,YAAagM,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAAChM,QAAAA,YAAAA,CAAauM,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAACzW,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAauM,qBAAqB;AAAC,KAAA;AACtD,IAAA;AAACvM,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACjM,QAAAA,YAAAA,CAAagM,qBAAqB;AAAEhM,QAAAA,YAAAA,CAAaiM,iBAAiB;AAAC,KAAA;AACpE,IAAA;AAACjM,QAAAA,YAAAA,CAAagM,qBAAqB;AAAElW,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAauM,qBAAqB;AAAC,KAAA;CAC3F,EACD7I,OAAAA,CAAQqI,kBAAkB,CAAC3V,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAaiM,CAAAA,iBAAiB,EAC9B;AACE,IAAA;AAACjM,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAamM,sBAAsB;AAAC,KAAA;AACtE,IAAA;AAACnM,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAagM,qBAAqB;AAAEhM,QAAAA,YAAAA,CAAamM,sBAAsB;AAAC,KAAA;CAC3G,EACDzI,OAAAA,CAAQkI,eAAe,CAACxV,IAAI,CAAA,EAG3Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAamM,CAAAA,sBAAsB,EACnC;AACE,IAAA;AAACnM,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAagM,qBAAqB;AAAEhM,QAAAA,YAAAA,CAAamM,sBAAsB;AAAC,KAAA;AAC7G,IAAA;AAACnM,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAagM,qBAAqB;AAAEhM,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AACxG,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAamM,sBAAsB;AAAC,KAAA;AACzE,IAAA;AAACnM,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;CACrE,EACD3P,OAAAA,CAAQwI,oBAAoB,CAAC9V,IAAI,CAAA,EAGhCu9B,aAAaC,2BAA2B,CACzC5zB,YAAauM,CAAAA,qBAAqB,EAClC;AACE,IAAA;AAACvM,QAAAA,YAAAA,CAAakI,cAAc;AAAElI,QAAAA,YAAAA,CAAawM,oBAAoB;AAAC,KAAA;AAChE,IAAA;AAACxM,QAAAA,YAAAA,CAAawM,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAACxM,QAAAA,YAAAA,CAAaoU,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACpU,QAAAA,YAAAA,CAAauU,mBAAmB;AAAC,KAAA;CACnC,EACD7Q,OAAAA,CAAQgI,oBAAoB,CAACtV,IAAI,CAAA,EAGhCu9B,aAAaC,2BAA2B,CACzC5zB,YAAawM,CAAAA,oBAAoB,EACjC;AACE,IAAA;AAACxM,QAAAA,YAAAA,CAAa2I,cAAc;AAAE7S,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAC5C,IAAA;AAACpiB,QAAAA,YAAAA,CAAa2I,cAAc;AAAE7S,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;CAC3E,EACDpF,OAAAA,CAAQ2I,mBAAmB,CAACjW,IAAI,CAAA,EAG/Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa6M,CAAAA,cAAc,EAC3B;AAAC,IAAA;AAAC7M,QAAAA,YAAAA,CAAao5B,SAAS;AAAC,KAAA;AAAE,IAAA;AAACp5B,QAAAA,YAAAA,CAAa6M,cAAc;AAAE7M,QAAAA,YAAAA,CAAao5B,SAAS;AAAC,KAAA;CAAC,EACjF11B,OAAAA,CAAQiJ,aAAa,CAACvW,IAAI,CAAA,EAGzBu9B,aAAaC,2BAA2B,CACzC5zB,YAAao5B,CAAAA,SAAS,EACtB;AAAC,IAAA;AAACp5B,QAAAA,YAAAA,CAAaq5B,kBAAkB;AAAC,KAAA;AAAE,IAAA;AAACr5B,QAAAA,YAAAA,CAAas5B,gBAAgB;AAAC,KAAA;AAAC,CAAA,CAAA,EAMnE3F,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa0M,2BAA2B,EACxC;AACE,IAAA;AAAC5W,QAAAA,UAAAA,CAAWgrB,UAAU;AAAEhrB,QAAAA,UAAAA,CAAWirB,WAAW;AAAC,KAAA;AAC/C,IAAA;AAACjrB,QAAAA,UAAAA,CAAWgrB,UAAU;AAAE9gB,QAAAA,YAAAA,CAAa6M,cAAc;AAAE/W,QAAAA,UAAAA,CAAWirB,WAAW;AAAC,KAAA;CAC7E,EACDrd,OAAAA,CAAQ+I,wBAAwB,CAACrW,IAAI,CAAA,EAGpCu9B,aAAaC,2BAA2B,CACzC5zB,YAAaq5B,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAACvjC,QAAAA,UAAAA,CAAWgrB,UAAU;AAAEhrB,QAAAA,UAAAA,CAAWirB,WAAW;AAAC,KAAA;AAC/C,IAAA;AAAC/gB,QAAAA,YAAAA,CAAa4G,WAAW;AAAE5G,QAAAA,YAAAA,CAAa6M,cAAc;AAAE7M,QAAAA,YAAAA,CAAa8G,eAAe;AAAC,KAAA;AACtF,CAAA,CAAA,EAMA6sB,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAas5B,gBAAgB,EAC7B;AACE,IAAA;AAACt5B,QAAAA,YAAAA,CAAa6K,WAAW;AAAC,KAAA;AAC1B,IAAA;AAAC7K,QAAAA,YAAAA,CAAau5B,oBAAoB;AAAC,KAAA;AACnC,IAAA;AAACv5B,QAAAA,YAAAA,CAAaw5B,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACx5B,QAAAA,YAAAA,CAAay5B,mBAAmB;AAAC,KAAA;AAClC,IAAA;AAACz5B,QAAAA,YAAAA,CAAaoH,cAAc;AAAC,KAAA;AAC7B,IAAA;AAACpH,QAAAA,YAAAA,CAAagU,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAAChU,QAAAA,YAAAA,CAAakT,WAAW;AAAC,KAAA;AAC1B,IAAA;AAACld,QAAAA,OAAAA,CAAQisB,uBAAuB;AAAC,KAAA;AAClC,CAAA,CAAA,EAMA0R,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa6K,WAAW,EACxB;AACE,IAAA;AAAC7K,QAAAA,YAAAA,CAAakL,kBAAkB;AAAEpV,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACvD,IAAA;AAACthB,QAAAA,YAAAA,CAAaqK,oBAAoB;AAAEvU,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACzD,IAAA;AACEtrB,QAAAA,OAAAA,CAAQuxB,SAAS;AACjBvnB,QAAAA,YAAAA,CAAai4B,mBAAmB;AAChCj4B,QAAAA,YAAAA,CAAaiK,mCAAmC;AAChDnU,QAAAA,UAAAA,CAAWwrB,SAAS;AACrB,KAAA;AACD,IAAA;AAACthB,QAAAA,YAAAA,CAAakI,cAAc;AAAEpS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEtsB,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AAClE,IAAA;AAACthB,QAAAA,YAAAA,CAAakI,cAAc;AAAEpS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa0K,eAAe;AAAE5U,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;CACjG,EACD5d,OAAAA,CAAQiH,WAAW,CAACvU,IAAI,CAAA,EAGvBu9B,aAAaC,2BAA2B,CACzC5zB,YAAa0K,CAAAA,eAAe,EAC5B;AACE,IAAA;AAAC5U,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AACjC,IAAA;AAACpiB,QAAAA,YAAAA,CAAa0K,eAAe;AAAE5U,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;CAChE,EACD1e,OAAAA,CAAQ4G,cAAc,CAAClU,IAAI,CAAA,EAG1Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAaqK,CAAAA,oBAAoB,EACjC;AACE,IAAA;AAACrK,QAAAA,YAAAA,CAAa8H,kBAAkB;AAAC,KAAA;AACjC,IAAA;AAAC9H,QAAAA,YAAAA,CAAaqK,oBAAoB;AAAEvU,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AACpE,IAAA;AAACpiB,QAAAA,YAAAA,CAAaqK,oBAAoB;AAAEvU,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;AAClG,IAAA;AACE9I,QAAAA,YAAAA,CAAaqK,oBAAoB;AACjCvU,QAAAA,UAAAA,CAAWsrB,KAAK;AAChBtrB,QAAAA,UAAAA,CAAWssB,EAAE;AACbpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAC5BhT,QAAAA,UAAAA,CAAWgqB,KAAK;AAChB9f,QAAAA,YAAAA,CAAa4H,WAAW;AACzB,KAAA;AACD,IAAA;AAAC5H,QAAAA,YAAAA,CAAaqK,oBAAoB;AAAEvU,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEtrB,QAAAA,UAAAA,CAAWssB,EAAE;AAAEtsB,QAAAA,UAAAA,CAAWgqB,KAAK;AAAE9f,QAAAA,YAAAA,CAAa4H,WAAW;AAAC,KAAA;CACjH,EACDlE,OAAAA,CAAQwG,kBAAkB,CAAC9T,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8H,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAAC9H,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAClD,IAAA;AAACpiB,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAAC,KAAA;AAChF,IAAA;AACE9I,QAAAA,YAAAA,CAAagI,oBAAoB;AACjClS,QAAAA,UAAAA,CAAWssB,EAAE;AACbpiB,QAAAA,YAAAA,CAAa8I,eAAe;AAC5BhT,QAAAA,UAAAA,CAAWgqB,KAAK;AAChB9f,QAAAA,YAAAA,CAAa4H,WAAW;AACzB,KAAA;AACD,IAAA;AAAC5H,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEtsB,QAAAA,UAAAA,CAAWgqB,KAAK;AAAE9f,QAAAA,YAAAA,CAAa4H,WAAW;AAAC,KAAA;CAC/F,EACDlE,OAAAA,CAAQ6D,iBAAiB,CAACnR,IAAI,CAAA,EAG7Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa4H,CAAAA,WAAW,EACxB;AACE,IAAA;AAAC5H,QAAAA,YAAAA,CAAa8O,qBAAqB;AAAC,KAAA;AACpC,IAAA;AAAChZ,QAAAA,UAAAA,CAAWgrB,UAAU;AAAE9gB,QAAAA,YAAAA,CAAa05B,gBAAgB;AAAE5jC,QAAAA,UAAAA,CAAWirB,WAAW;AAAC,KAAA;AAC/E,CAAA,CAAA,EAMA4S,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa05B,gBAAgB,EAC7B;AAAC,IAAA;AAAC15B,QAAAA,YAAAA,CAAa4H,WAAW;AAAC,KAAA;AAAE,IAAA;AAAC5H,QAAAA,YAAAA,CAAa05B,gBAAgB;AAAE5jC,QAAAA,UAAAA,CAAWsrB,KAAK;AAAEphB,QAAAA,YAAAA,CAAa4H,WAAW;AAAC,KAAA;AAAC,CAAA,CAAA,EAMxG+rB,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAau5B,oBAAoB,EACjC;AAAC,IAAA;AAACzjC,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AAAE,IAAA;AAACthB,QAAAA,YAAAA,CAAagP,UAAU;AAAElZ,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AAAC,CAAA,CAAA,EAOxEqS,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAaw5B,mBAAmB,EAChC;AACE,IAAA;AAACxjC,QAAAA,OAAAA,CAAQ2tB,EAAE;AAAE7tB,QAAAA,UAAAA,CAAW8qB,UAAU;AAAE5gB,QAAAA,YAAAA,CAAagP,UAAU;AAAElZ,QAAAA,UAAAA,CAAW+qB,WAAW;AAAE7gB,QAAAA,YAAAA,CAAao5B,SAAS;AAAC,KAAA;AAC5G,IAAA;AACEpjC,QAAAA,OAAAA,CAAQ2tB,EAAE;AACV7tB,QAAAA,UAAAA,CAAW8qB,UAAU;AACrB5gB,QAAAA,YAAAA,CAAagP,UAAU;AACvBlZ,QAAAA,UAAAA,CAAW+qB,WAAW;AACtB7gB,QAAAA,YAAAA,CAAao5B,SAAS;AACtBpjC,QAAAA,OAAAA,CAAQutB,IAAI;AACZvjB,QAAAA,YAAAA,CAAao5B,SAAS;AACvB,KAAA;AACF,CAAA,CAAA,EAMAzF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAay5B,mBAAmB,EAChC;AACE,IAAA;AAACzjC,QAAAA,OAAAA,CAAQ6tB,KAAK;AAAE/tB,QAAAA,UAAAA,CAAW8qB,UAAU;AAAE5gB,QAAAA,YAAAA,CAAa25B,SAAS;AAAE7jC,QAAAA,UAAAA,CAAW+qB,WAAW;AAAE7gB,QAAAA,YAAAA,CAAao5B,SAAS;AAAC,KAAA;AAC9G,IAAA;AACEpjC,QAAAA,OAAAA,CAAQytB,GAAG;AACX3tB,QAAAA,UAAAA,CAAW8qB,UAAU;AACrB5gB,QAAAA,YAAAA,CAAa45B,kBAAkB;AAC/B55B,QAAAA,YAAAA,CAAa65B,kBAAkB;AAC/B/jC,QAAAA,UAAAA,CAAW+qB,WAAW;AACtB7gB,QAAAA,YAAAA,CAAao5B,SAAS;AACvB,KAAA;AACF,CAAA,CAAA,EAMAzF,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa0O,mBAAmB,EAChC;AACE,IAAA;AACE1Y,QAAAA,OAAAA,CAAQuxB,SAAS;AACjBvnB,QAAAA,YAAAA,CAAai4B,mBAAmB;AAChCj4B,QAAAA,YAAAA,CAAaiK,mCAAmC;AAChDnU,QAAAA,UAAAA,CAAWwrB,SAAS;AACrB,KAAA;CACF,EACD5d,OAAAA,CAAQ+K,kBAAkB,CAACrY,IAAI,CAAA,EAG9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAa45B,CAAAA,kBAAkB,EAC/B;AAAC,IAAA;AAAC55B,QAAAA,YAAAA,CAAau5B,oBAAoB;AAAC,KAAA;AAAE,IAAA;AAACv5B,QAAAA,YAAAA,CAAa6K,WAAW;AAAC,KAAA;AAAC,CAAA,CAAA,EAMhE8oB,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa25B,SAAS,EACtB;AACE,IAAA;AAAC35B,QAAAA,YAAAA,CAAagP,UAAU;AAAC,KAAA;AACzB,IAAA;AAAChP,QAAAA,YAAAA,CAAagI,oBAAoB;AAAElS,QAAAA,UAAAA,CAAWssB,EAAE;AAAEtsB,QAAAA,UAAAA,CAAWgqB,KAAK;AAAE9f,QAAAA,YAAAA,CAAa4H,WAAW;AAAC,KAAA;AAC/F,CAAA,CAAA,EAMA+rB,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa65B,kBAAkB,EAC/B;AACE,IAAA;AAAC75B,QAAAA,YAAAA,CAAa85B,YAAY;AAAEhkC,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACjD,IAAA;AAACthB,QAAAA,YAAAA,CAAa85B,YAAY;AAAEhkC,QAAAA,UAAAA,CAAWwrB,SAAS;AAAEthB,QAAAA,YAAAA,CAAagP,UAAU;AAAC,KAAA;AAC3E,CAAA,CAAA,EAMA2kB,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAa85B,YAAY,EACzB;AAAC,IAAA;AAAChkC,QAAAA,UAAAA,CAAWu8B,OAAO;AAAC,KAAA;AAAE,IAAA;AAACryB,QAAAA,YAAAA,CAAa25B,SAAS;AAAC,KAAA;AAAC,CAAA,CAAA,EAM/ChG,YAAaC,CAAAA,2BAA2B,CACzC5zB,YAAAA,CAAaoH,cAAc,EAC3B;AACE,IAAA;AAACpR,QAAAA,OAAAA,CAAQmtB,QAAQ;AAAErtB,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACxC,IAAA;AAACtrB,QAAAA,OAAAA,CAAQitB,KAAK;AAAEntB,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACrC,IAAA;AAACtrB,QAAAA,OAAAA,CAAQiR,MAAM;AAAEnR,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AACtC,IAAA;AAACtrB,QAAAA,OAAAA,CAAQiR,MAAM;AAAEjH,QAAAA,YAAAA,CAAagP,UAAU;AAAElZ,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;AAC/D,IAAA;AAACtrB,QAAAA,OAAAA,CAAQ+tB,OAAO;AAAEjuB,QAAAA,UAAAA,CAAWwrB,SAAS;AAAC,KAAA;CACxC,EACD5d,OAAAA,CAAQqD,aAAa,CAAC3Q,IAAI,CAAA,EAGzBu9B,aAAaC,2BAA2B,CACzC5zB,YAAa4G,CAAAA,WAAW,EACxB;AAAC,IAAA;AAAC9Q,QAAAA,UAAAA,CAAWgrB,UAAU;AAAC,KAAA;CAAC,EACzBpd,OAAAA,CAAQiD,UAAU,CAACvQ,IAAI,CAAA,EAGtBu9B,aAAaC,2BAA2B,CACzC5zB,YAAa8G,CAAAA,eAAe,EAC5B;AAAC,IAAA;AAAChR,QAAAA,UAAAA,CAAWirB,WAAW;AAAC,KAAA;CAAC,EAC1Brd,OAAAA,CAAQmD,aAAa,CAACzQ,IAAI,CAAA,EAGzBu9B,aAAaC,2BAA2B,CACzC5zB,YAAa4S,CAAAA,mBAAmB,EAChC;AAAC,IAAA;AAAC9c,QAAAA,UAAAA,CAAWssB,EAAE;AAAC,KAAA;AAAE,IAAA;AAACpiB,QAAAA,YAAAA,CAAaoU,iBAAiB;AAAC,KAAA;AAAE,IAAA;AAACpU,QAAAA,YAAAA,CAAauU,mBAAmB;AAAC,KAAA;CAAC,EACvF7Q,OAAAA,CAAQwL,kBAAkB,CAAC9Y,IAAI,CAAA,EAI9Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAagU,CAAAA,kBAAkB,EAC/B;AACE,IAAA;AAAChU,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAa6M,cAAc;AAAE7M,QAAAA,YAAAA,CAAakU,YAAY;AAAC,KAAA;AACzF,IAAA;AAAClU,QAAAA,YAAAA,CAAaoT,kBAAkB;AAAEpT,QAAAA,YAAAA,CAAakU,YAAY;AAAC,KAAA;CAC7D,EACDxQ,OAAAA,CAAQqQ,gBAAgB,CAAC3d,IAAI,CAAA,EAG5Bu9B,aAAaC,2BAA2B,CACzC5zB,YAAakU,CAAAA,YAAY,EACzB;AACE,IAAA;AAAClU,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AAChC,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAa6M,cAAc;AAAE7M,QAAAA,YAAAA,CAAakU,YAAY;AAAC,KAAA;AAC5F,IAAA;AAAClU,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAa6M,cAAc;AAAE7M,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;AACjG,IAAA;AAACrT,QAAAA,YAAAA,CAAauT,qBAAqB;AAAEvT,QAAAA,YAAAA,CAAakU,YAAY;AAAC,KAAA;AAC/D,IAAA;AAAClU,QAAAA,YAAAA,CAAayT,qBAAqB;AAAEzT,QAAAA,YAAAA,CAAaqT,iBAAiB;AAAC,KAAA;CACrE,EACD3P,OAAAA,CAAQuQ,WAAW,CAAC7d,IAAI,CAAA,CAAA,CAAA;AAI5B,IAAM2jC,aAAgB,GAAA,WAAA;WACpBvC,OAAQhiB,CAAAA,MAAM,CACZxV,YAAa6S,CAAAA,iBAAiB,EAC9BilB,kBAAmBr9B,CAAAA,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,QAAAA,OAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;;;AAG5C,IAAM4K,qBAAqB,SAACkC,EAAAA,EAAAA;AAC1B,IAAA,IAAK,IAAI9P,CAAI,GAAA,CAAA,EAAGA,IAAIqhC,kBAAmBnhC,CAAAA,MAAM,EAAEF,CAAK,EAAA,CAAA;AAClD,QAAA,IAAM8N,IAAOuzB,GAAAA,kBAAkB,CAACrhC,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAA;AACrC,QAAA,IAAI8N,IAAM,EAAA;YACRgC,EAAGlC,CAAAA,kBAAkB,CAAC5N,CAAG8N,EAAAA,IAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACF,KAAA;AACF,CAAA;;ACtiCA;;IAGO,IAAMy1B,kBAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,kBAAAA,CAsCSrF,WAA6B,EAAEC,SAAyB,EAAEJ,OAAgB,EAAA;AAjCtFyF,QAAAA,IAAAA,CAAAA,eAAAA,GAA+C,EAAE,CAAA;QAkCvD,IAAI,CAACtF,WAAW,GAAGA,WAAAA,CAAAA;QACnB,IAAI,CAACC,SAAS,GAAGA,SAAAA,CAAAA;QACjB,IAAI,CAACJ,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAAC0F,eAAe,GAAG,IAAIC,gBAAAA,EAAAA,CAAAA;;AA1ClBH,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AA6CXniC,IAAAA,MAAAA,CAAAA,KA+DC,GA/DDA,SAAAA,KAAMqyB,CAAAA,MAAuC,EAAE1xB,eAAgC,EAAA;AAC7E,QAAA,IAAI,CAAC0hC,eAAe,CAAC/1B,KAAK,CAAC3L,eAAAA,CAAAA,CAAAA;QAC3B,IAAM/C,KAAAA,GAAQ2kC,YAAYC,GAAG,EAAA,CAAA;QAC7B,IAA6D,KAAA,GAAA,IAAI,EAAxCC,iBAAoC,KAArDL,CAAAA,eAAAA,EAAiCC,kBAAoB,KAApBA,CAAAA,eAAAA,CAAAA;AACzCI,QAAAA,cAAAA,CAAe/jC,IAAI,CAAC,CAAA,CAAA,CAAA;QAEpB,IAAIgkC,SAAAA,GAAYrQ,OAAOsQ,IAAI,EAAA,CAAA;AAC3B,QAAA,IAAIC,SAAY,GAAA,CAAA,CAAA;AAChB,QAAA,MAAO,IAAM,CAAA;YACXA,SAAa,IAAA,CAAA,CAAA;YACb,IAAMzwB,KAAAA,GAAQuwB,UAAUvhC,KAAK,CAAA;YAE7B,IAAM0hC,UAAAA,GAAa,IAAI,CAACzE,gBAAgB,CAAC75B,GAAG,CAAC4N,MAAM7T,IAAI,CAAA,CAAA;AACvD,YAAA,IAAIukC,CAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAYrG,MAAM,MAAKC,OAAAA,CAAQoC,KAAK,EAAE;AACxC4D,gBAAAA,cAAAA,CAAe/jC,IAAI,CAACyT,KAAO0wB,EAAAA,UAAAA,CAAWr/B,MAAM,CAAA,CAAA;AAC5Ck/B,gBAAAA,SAAAA,GAAYrQ,OAAOsQ,IAAI,EAAA,CAAA;aAClB,MAAA,IAAIE,CAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAYrG,MAAM,MAAKC,OAAAA,CAAQ+B,MAAM,EAAE;gBAChDl/B,aAAOyB,CAAAA,IAAI,CACR,sDAAsD6hC,GAAAA,SAAAA,GAAU,oBAC/DL,IAAAA,WAAYC,CAAAA,GAAG,EAAK5kC,GAAAA,KAAI,CACzB,GAAA,IAAA,CAAA,CAAA;AAEHykC,gBAAAA,eAAAA,CAAgBp2B,UAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAA1Bo2B,eAAgBp2B,CAAAA,UAAU,MAA1Bo2B,eAA6BA,EAAAA,eAAAA,CAAAA,CAAAA;gBAC7B,OAAOA,eAAAA,CAAgBr2B,aAAa,CAAC5C,GAAG,EAAA,CAAA;aACnC,MAAA,IAAIy5B,CAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAYrG,MAAM,MAAKC,OAAAA,CAAQ8B,MAAM,EAAE;gBAChD,IAAM/6B,MAAAA,GAASq/B,WAAWr/B,MAAM,CAAA;AAChC,gBAAA,IAAMs/B,mBAAmB,IAAI,CAACnG,OAAO,CAACmD,iBAAiB,CAACt8B,MAAAA,CAAAA,CAAAA;AACxD,gBAAA,IAAMu/B,eAAkBV,GAAAA,eAAAA,CAAgB11B,kBAAkB,CAACm2B,iBAAiBjzB,EAAE,CAAA,CAAA;AAE9E,gBAAA,IAAMsT,SAAmC,EAAE,CAAA;gBAE3C,IAAK,IAAIvkB,CAAIkkC,GAAAA,gBAAAA,CAAiBxI,UAAU,CAACx7B,MAAM,GAAG,CAAA,EAAGF,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA;AAChE,oBAAA,IAAIkkC,iBAAiBxI,UAAU,CAAC17B,EAAE,KAAKX,UAAAA,CAAWu8B,OAAO,EAAE,SAAA;AAC3DiI,oBAAAA,cAAAA,CAAer5B,GAAG,EAAA,CAAA;oBAClB,IAAM+I,MAAAA,GAAQswB,eAAer5B,GAAG,EAAA,CAAA;oBAChC,IAAS,WAAL+I,CAAAA,MAAAA,EAAiB3S,SAAW,CAAA,EAAA;AAC9B2jB,wBAAAA,MAAAA,CAAO0c,OAAO,CAAC1tB,MAAAA,CAAAA,CAAAA;qBACV,MAAA;AACL,wBAAA,IAAM5H,OAAU83B,GAAAA,eAAAA,CAAgBr2B,aAAa,CAAC5C,GAAG,EAAA,CAAA;AACjD+Z,wBAAAA,MAAAA,CAAO0c,OAAO,CAACt1B,OAAAA,CAAAA,CAAAA;AACjB,qBAAA;AACF,iBAAA;AACAw4B,gBAAAA,eAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,KAAAA,CAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA;AAAkBV,oBAAAA,eAAAA;AAAoBlf,iBAAAA,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;gBAEtC,IAAM4Z,SAAAA,GAAY,IAAI,CAACsB,cAAc,CAAA;gBACrCoE,cAAe/jC,CAAAA,IAAI,CAACokC,gBAAAA,CAAiB9G,IAAI,CAAA,CAAA;AAEzC,gBAAA,IAAMgH,YAAYjG,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAWx4B,GAAG,CAACu+B,iBAAiB9G,IAAI,CAAA,CAAA;AACtDyG,gBAAAA,cAAAA,CAAe/jC,IAAI,CAACskC,SAAAA,CAAAA,CAAAA;AACpB,gBAAA,SAAA;aACK,MAAA;AACL,gBAAc5kC,cAAeY,CAAAA,aAAa,CACvC,sBAAmBmT,KAAM1S,CAAAA,MAAM,EAChCsK,aAAAA,CAAYqU,gBAAgB,EAC5Bze,SAAAA,CAAUqN,mBAAmB,EAC7BmF,MAAM/S,QAAQ,EAAA;gBAKhB,OAAO,IAAA,CAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IA5GW+iC,kBA0BJxkB,CAAAA,MAUN,GAVD,SAAOA,MAAAA,GAAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAACc,UAAU,EAAE;AACpB,YAAA,IAAMke,OAAUuF,GAAAA,aAAAA,EAAAA,CAAAA;YAChB,IAAMe,SAAAA,GAAY,IAAIvG,KAAMC,CAAAA,OAAAA,CAAAA,CAAAA;AAC5BsG,YAAAA,SAAAA,CAAUhG,QAAQ,EAAA,CAAA;YAClB,IAAI,CAACxe,UAAU,GAAG,IA/BX0jB,kBAAAA,CA+BkCc,UAAUnG,WAAW,EAAEmG,SAAUlG,CAAAA,SAAS,EAAEJ,OAAAA,CAAAA,CAAAA;AACrFnwB,YAAAA,kBAAAA,CAAmB,IAAI,CAACiS,UAAU,CAAC4jB,eAAe,CAAA,CAAA;AACpD,SAAA;QAEA,OAAO,IAAI,CAAC5jB,UAAU,CAAA;AACxB,KAAA,CAAA;AApCW0jB,IAAAA,aAAAA,CAAAA,kBAAAA,EAAAA;;YAOCe,GAAAA,EAAAA,UAAAA;AAAZ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACd,eAAe,CAAC,IAAI,CAACA,eAAe,CAACtjC,MAAM,GAAG,CAAE,CAAA,CAAA;AAC9D,aAAA;;;YACYs/B,GAAAA,EAAAA,kBAAAA;AAAZ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACtB,WAAW,CAACv4B,GAAG,CAAC,IAAI,CAAC2+B,QAAQ,CAAA,CAAA;AAC3C,aAAA;;;YACY7E,GAAAA,EAAAA,gBAAAA;AAAZ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACtB,SAAS,CAACx4B,GAAG,CAAC,IAAI,CAAC2+B,QAAQ,CAAA,CAAA;AACzC,aAAA;;;AAfWf,IAAAA,OAAAA,kBAAAA,CAAAA;AA0HZ,CAAA,EAAA;;AC9ID,SAAS,QAAQ,GAAG;AACpB,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE;AACxD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,YAAY,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACrH,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C;;ACTO,IAAA,mBAAA,iBAAA,WAAA;AAAMgB,IAAAA,SAAAA,mBAAAA,GAAAA,EAAAA;IAAAA,mBACJC,CAAAA,kBAKN,GALD,SAAOA,kBAAAA,GAAAA;QACL,OAAO;AACLC,YAAAA,WAAAA,EAAa,EAAC;AACdC,YAAAA,WAAAA,EAAa,EAAC;AAChB,SAAA,CAAA;AACF,KAAA,CAAA;AANWH,IAAAA,mBAAAA,CAQJI,kBAON,GAPD,SAAOA,kBAAAA,CAAmBhhC,IAAY,EAAA;QACpC,OAAO;YACLA,IAAAA,EAAAA,IAAAA;AACAihC,YAAAA,UAAAA,EAAY,EAAE;AACdC,YAAAA,eAAAA,EAAiB,EAAE;YACnBC,YAAc,EAAA,IAAI,CAACN,kBAAkB,EAAA;AACvC,SAAA,CAAA;AACF,KAAA,CAAA;AAfWD,IAAAA,mBAAAA,CAiBJQ,qBAQN,GARD,SAAOA,qBAAAA,CAAsBphC,IAAY,EAAA;QACvC,OAAO;YACLA,IAAAA,EAAAA,IAAAA;AACAqhC,YAAAA,MAAAA,EAAQ,EAAE;AACVH,YAAAA,eAAAA,EAAiB,EAAE;AACnBI,YAAAA,IAAAA,EAAM,EAAC;YACPH,YAAc,EAAA,IAAI,CAACN,kBAAkB,EAAA;AACvC,SAAA,CAAA;AACF,KAAA,CAAA;AAzBWD,IAAAA,mBAAAA,CA2BJW,sBAON,GAPD,SAAOA,sBAAAA,CAAuBvhC,IAAY,EAAA;QACxC,OAAO;YACLA,IAAAA,EAAAA,IAAAA;AACAkhC,YAAAA,eAAAA,EAAiB,EAAE;AACnBI,YAAAA,IAAAA,EAAM,EAAC;YACPH,YAAc,EAAA,IAAI,CAACN,kBAAkB,EAAA;AACvC,SAAA,CAAA;AACF,KAAA,CAAA;AAlCWD,IAAAA,mBAAAA,CAoCJY,aAQN,GARD,SAAOA,aAAAA,CAAcxhC,IAAY,EAAA;QAC/B,OAAO;YACLA,IAAAA,EAAAA,IAAAA;AACAkhC,YAAAA,eAAAA,EAAiB,EAAE;YACnBO,SAAW,EAAA,IAAA;AACXH,YAAAA,IAAAA,EAAM,EAAC;YACPH,YAAc,EAAA,IAAI,CAACN,kBAAkB,EAAA;AACvC,SAAA,CAAA;AACF,KAAA,CAAA;AA5CWD,IAAAA,OAAAA,mBAAAA,CAAAA;AA6CZ,CAAA,EAAA;;AC7CM,IAAA,kBAAA,iBAAA,WAAA;AAAMc,IAAAA,SAAAA,kBAAAA,CAIT,KAAoB,EACpB,IAAmB,EACnB,KAAkB,EAAA;aAFXj/B,KAAAA,GAAAA,KAAAA,CAAAA;aACA1G,IAAAA,GAAAA,IAAAA,CAAAA;aACA6C,KAAAA,GAAAA,KAAAA,CAAAA;aALFqH,eAA2B,GAAA,KAAA,CAAA;;AADvBy7B,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;IASXtmC,MAAAA,CAAAA,GAIC,GAJDA,SAAAA,GAAAA,CAAIqH,KAAa,EAAE1G,IAAY,EAAE6C,KAAW,EAAA;QAC1C,IAAI,CAAC6D,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAAC1G,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAAC6C,KAAK,GAAGA,KAAAA,CAAAA;AACf,KAAA,CAAA;AAEAuH,IAAAA,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,CAAMw7B,KAAyB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC5lC,IAAI,KAAK4lC,MAAM5lC,IAAI,CAAA;AACjC,KAAA,CAAA;AAjBW2lC,IAAAA,OAAAA,kBAAAA,CAAAA;AAkBZ,CAAA,EAAA;;ACXc,IAAA,WAAA,iBAAA,SAAA,UAAA,EAAA;AAAME,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;iEACnBC,iBAAoB,GAAA,KAAA,CAAA;;;AADDD,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IA8DnBE,MAAAA,CAAAA,UAgBC,GAhBDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,IAAI,CAACtf,oBAAoB,EAAA,CAAA;QACzB,IAAMnnB,KAAAA,GAAQ,IAAI,CAACqmB,aAAa,CAAA;QAChC,IAAM9kB,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;QAC3B,IAAIlmB,KAAAA,GAAQ,IAAI,CAACimB,aAAa,CAAA;;AAG9BjmB,QAAAA,KAAAA,GAAQmmC,WArESA,CAqEGG,WAAW,CAACnlC,MAAQnB,EAAAA,KAAAA,CAAAA,CAAAA;;AAGxC,QAAA,IAAImB,MAAM,CAACnB,KAAM,CAAA,KAAK,GAAK,EAAA;AACzBA,YAAAA,KAAAA,GAAQmmC,WAzEOA,CAyEKG,WAAW,CAACnlC,QAAQnB,KAAQ,GAAA,CAAA,CAAA,CAAA;AAClD,SAAA;AAEA,QAAA,IAAI,CAAC0mB,OAAO,CAAC1mB,KAAQ,GAAA,IAAI,CAACimB,aAAa,CAAA,CAAA;AACvC,QAAA,OAAOxiB,MAAOtC,CAAAA,MAAAA,CAAO0E,SAAS,CAACjG,KAAOI,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;IAEAumC,MAAAA,CAAAA,SA4BC,GA5BDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACnf,UAAU,CAAC,GAAA,CAAA,CAAA;AAEhB,QAAA,IAAIof,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAIC,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAIlzB,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAID,CAAI,GAAA,CAAA,CAAA;QAERkzB,CAAI,GAAA,IAAI,CAACH,UAAU,EAAA,CAAA;AACnB,QAAA,IAAI,CAACtf,oBAAoB,EAAA,CAAA;AACzB,QAAA,IAAI,IAAI,CAACG,IAAI,CAAC,OAAO,GAAK,EAAA;YACxB,IAAI,CAACE,UAAU,CAAC,GAAA,CAAA,CAAA;YAChBqf,CAAI,GAAA,IAAI,CAACJ,UAAU,EAAA,CAAA;AACnB,YAAA,IAAI,CAACtf,oBAAoB,EAAA,CAAA;AACzB,YAAA,IAAI,IAAI,CAACG,IAAI,CAAC,OAAO,GAAK,EAAA;gBACxB,IAAI,CAACE,UAAU,CAAC,GAAA,CAAA,CAAA;gBAChB7T,CAAI,GAAA,IAAI,CAAC8yB,UAAU,EAAA,CAAA;AACnB,gBAAA,IAAI,CAACtf,oBAAoB,EAAA,CAAA;AACzB,gBAAA,IAAI,IAAI,CAACG,IAAI,CAAC,OAAO,GAAK,EAAA;oBACxB,IAAI,CAACE,UAAU,CAAC,GAAA,CAAA,CAAA;oBAChB9T,CAAI,GAAA,IAAI,CAAC+yB,UAAU,EAAA,CAAA;AACnB,oBAAA,IAAI,CAACtf,oBAAoB,EAAA,CAAA;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;QAEA,IAAI,CAACK,UAAU,CAAC,GAAA,CAAA,CAAA;AAChB,QAAA,OAAO,IAAIsf,YAAAA,CAAMF,CAAGC,EAAAA,CAAAA,EAAGlzB,CAAGD,EAAAA,CAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;IAEA,MAASuV,CAAAA,SA8BR,GA9BD,SAASA,SAAAA,GAAAA;AACP,QAAA,MAAO,IAAM,CAAA;AACX,YAAA,IAAI,CAAC9B,oBAAoB,EAAA,CAAA;YAEzB,IAAI,IAAI,CAACT,KAAK,EAAI,EAAA;AAChB,gBAAA,OAAA;AACF,aAAA;AAEA,YAAA,IAAM1mB,KAAQ,GAAA,IAAI,CAACwmB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACrC,YAAA,IAAIJ,UAAUsC,OAAO,CAAC,IAAI,CAAC9B,cAAc,EAAK,CAAA,EAAA;AAC5C,gBAAA,IAAMmgB,SAAY,GAAA,IAAI,CAAC1d,SAAS,CAACrpB,KAAAA,CAAAA,CAAAA;AACjC,gBAAA,IAAI+mC,cAAc,IAAM,EAAA;oBACtB,OAAOA,SAAAA,CAAAA;AACT,iBAAA;gBACA,IAAI,CAACP,iBAAiB,GAAG,IAAA,CAAA;AACzB,gBAAA,SAAA;AACF,aAAA;YAEA,IAAMhe,WAAAA,GAAc,IAAI,CAAC7B,UAAU,EAAA,CAAA;AACnC,YAAA,IAAMqgB,aAAgBT,GAjIPA,WAiImBU,CAAAA,kBAAkB,CAACze,WAAY,CAAA,CAAA;AACjE,YAAA,IAAIwe,kBAAkBp7B,SAAW,EAAA;gBAC/B,IAAI,CAACkb,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,gBAAA,IAAMvS,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;gBAChC4N,KAAMxU,CAAAA,GAAG,CAACinC,aAAAA,EAAexe,WAAaxoB,EAAAA,KAAAA,CAAAA,CAAAA;gBACtC,OAAOuU,KAAAA,CAAAA;AACT,aAAA;;YAGA,IAAI,CAACuS,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAWAogB,IAAAA,MAAAA,CAAAA,kBAOC,GAPDA,SAAAA,kBAAmB7lC,CAAAA,OAAe,EAAEG,QAAuC,EAAA;AACzE,QAAA,OAAOhB,eAAeY,aAAa,CACjCC,OACA8K,EAAAA,aAAAA,CAAYqU,gBAAgB,EAC5B,IAAI,CAACjf,MAAM,EACXC,QAAAA,IAAAA,IAAAA,GAAAA,QAAAA,GAAY,IAAI,CAACglB,iBAAiB,CAAC,CAAA,CAAA,CAAA,CAAA;AAEvC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6C,SAkBP,GAlBD,SAAQA,SAAAA,CAAUrpB,KAAqB,EAAA;;QAErC,MAAOomB,SAAAA,CAAUuC,OAAO,CAAC,IAAI,CAAC/B,cAAc,EAAA,CAAA,IAAO,CAAC,IAAI,CAACF,KAAK,EAAI,CAAA;YAChE,IAAI,CAACI,OAAO,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACA,QAAA,IAAM7mB,GAAM,GAAA,IAAI,CAACumB,iBAAiB,CAAC,CAAA,CAAA,CAAA;;QAGnC,IAAI,CAAC,IAAI,CAAC2gB,uBAAuB,CAACnnC,MAAMI,KAAK,EAAEH,GAAIG,CAAAA,KAAK,CAAG,EAAA;AACzD,YAAA,OAAO;AACT,SAAA;QAEA,IAAMyB,MAAAA,GAAS,IAAI,CAACykB,OAAO,CAACrgB,SAAS,CAACjG,KAAMI,CAAAA,KAAK,EAAEH,GAAAA,CAAIG,KAAK,CAAA,CAAA;AAC1CmmC,QAAAA,IAAAA,uCAAAA,CAAAA;QAAlB,IAAM3R,SAAAA,GAAY2R,CAAAA,uCAAAA,GAAAA,WA7KDA,CA6Kaa,mBAAmB,CAACvlC,MAAO,CAAA,KAAA,IAAA,GAAvC0kC,uCAA2ClmC,GAAAA,UAAAA,CAAWssB,EAAE,CAAA;AAC1E,QAAA,IAAMT,KAAQnqB,GAAAA,SAAAA,CAAUE,WAAW,CAACjC,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC3C,QAAA,IAAMsU,KAAQ3S,GAAAA,SAAAA,CAAUjB,IAAI,CAACgG,GAAG,EAAA,CAAA;QAChC4N,KAAMxU,CAAAA,GAAG,CAAC60B,SAAAA,EAAW/yB,MAAQqqB,EAAAA,KAAAA,CAAAA,CAAAA;QAC7B,OAAO3X,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ4yB,uBAoBP,GApBD,SAAQA,uBAAwB5M,CAAAA,UAAkB,EAAEG,QAAgB,EAAA;QAClE,IAAMn5B,MAAAA,GAAS,IAAI,CAAC+kB,OAAO,CAAA;;AAG3B,QAAA,IAAIiU,aAAa,CAAG,EAAA;AAClB,YAAA,IAAM8M,YAAe9lC,GAAAA,MAAAA,CAAOslB,UAAU,CAAC0T,UAAa,GAAA,CAAA,CAAA,CAAA;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC+M,oBAAoB,CAACD,YAAe,CAAA,EAAA;gBAC5C,OAAO,KAAA,CAAA;AACT,aAAA;AACF,SAAA;;QAGA,IAAI3M,QAAAA,GAAWn5B,MAAOL,CAAAA,MAAM,EAAE;YAC5B,IAAMs1B,YAAAA,GAAej1B,MAAOslB,CAAAA,UAAU,CAAC6T,QAAAA,CAAAA,CAAAA;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC4M,oBAAoB,CAAC9Q,YAAe,CAAA,EAAA;gBAC5C,OAAO,KAAA,CAAA;AACT,aAAA;AACF,SAAA;QAEA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ8Q,oBAEP,GAFD,SAAQA,oBAAAA,CAAqBjgB,QAAgB,EAAA;QAC3C,OAAOjB,SAAAA,CAAUc,gBAAgB,CAACG,QAAAA,EAAU,SAASkf,WA3MpCA,CA2MgDgB,oBAAoB,CAAClgB,QAAAA,CAAAA,CAAAA;AACxF,KAAA,CAAA;AA5MmBkf,IAAAA,WAAAA,CAqCJgB,oBAUd,GAVD,SAAeA,oBAAAA,CAAqBlgB,QAAgB,EAAA;QAClD,OACEA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;AACbA,QAAAA,QAAAA,KAAa;;AAEjB,KAAA,CAAA;AA/CmBkf,IAAAA,WAAAA,CAiDJG,WAWd,GAXD,SAAeA,WAAYnlC,CAAAA,MAAc,EAAEg5B,UAAkB,EAAA;AAC3D,QAAA,IAAIjS,YAAeiS,GAAAA,UAAAA,CAAAA;QACnB,MAAOjS,YAAAA,GAAe/mB,MAAOL,CAAAA,MAAM,CAAE;YACnC,IAAMmmB,QAAAA,GAAW9lB,MAAOslB,CAAAA,UAAU,CAACyB,YAAAA,CAAAA,CAAAA;YACnC,IAAIlC,SAAAA,CAAUqC,OAAO,CAACpB,QAAW,CAAA,EAAA;AAC/BiB,gBAAAA,YAAAA,EAAAA,CAAAA;aACK,MAAA;AACL,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;QACA,OAAOA,YAAAA,CAAAA;AACT,KAAA,CAAA;AA5DmBie,IAAAA,OAAAA,WAAAA,CAAAA;AAAoBngB,CAAAA,CAAAA,SAAAA,CAAAA,CAAAA;AAApBmgB,WAAAA,CAGJa,mBAA+C,GAAA;AAC5DI,IAAAA,eAAAA,EAAiBjnC,QAAQknC,iBAAiB;AAC1CC,IAAAA,UAAAA,EAAYnnC,QAAQonC,YAAY;AAChCC,IAAAA,UAAAA,EAAYrnC,QAAQsnC,YAAY;AAChCC,IAAAA,YAAAA,EAAcvnC,QAAQwnC,cAAc;AACpCC,IAAAA,WAAAA,EAAaznC,QAAQ0nC,aAAa;AAClCC,IAAAA,gBAAAA,EAAkB3nC,QAAQ4nC,kBAAkB;AAC5CC,IAAAA,YAAAA,EAAc7nC,QAAQ8nC,cAAc;AACpCC,IAAAA,MAAAA,EAAQ/nC,QAAQgoC,QAAQ;AACxBC,IAAAA,IAAAA,EAAMjoC,QAAQkoC,MAAM;AACpBC,IAAAA,YAAAA,EAAcnoC,QAAQooC,cAAc;AACpCC,IAAAA,cAAAA,EAAgBroC,QAAQsoC,gBAAgB;AACxCC,IAAAA,SAAAA,EAAWvoC,QAAQwoC,WAAW;AAC9BC,IAAAA,IAAAA,EAAMzoC,QAAQ0oC,MAAM;AACpBC,IAAAA,WAAAA,EAAa3oC,QAAQ4oC,aAAa;AAClCC,IAAAA,cAAAA,EAAgB7oC,QAAQ8oC,gBAAgB;AACxCC,IAAAA,IAAAA,EAAM/oC,QAAQgpC,MAAM;AACpB1lC,IAAAA,MAAAA,EAAQtD,QAAQipC,QAAQ;AACxB1C,IAAAA,KAAAA,EAAOvmC,QAAQkpC,OAAO;AACtBC,IAAAA,eAAAA,EAAiBnpC,QAAQopC,iBAAiB;AAC1CC,IAAAA,gBAAAA,EAAkBrpC,QAAQspC,kBAAkB;AAC5CC,IAAAA,QAAAA,EAAUvpC,QAAQwpC,UAAU;AAC5BC,IAAAA,OAAAA,EAASzpC,QAAQ0pC,SAAS;AAE1BrY,IAAAA,IAAAA,EAAMrxB,QAAQqZ,IAAI;AAClBiY,IAAAA,KAAAA,EAAOtxB,QAAQsZ,KAAK;AACtB,CAAA,CAAA;AA7BmB0sB,WAAAA,CA+BJU,kBAA8C,GAAA;AAC3D,IAAA,GAAA,EAAK1mC,QAAQ2pC,SAAS;AACtB,IAAA,GAAA,EAAK3pC,QAAQ4pC,UAAU;AACvB,IAAA,GAAA,EAAK5pC,QAAQ6pC,KAAK;AACpB,CAAA;;ACjBF;;IAGO,IAAMC,kBAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,kBAAAA,GAAAA,EAAAA;AAAAA,IAAAA,kBAAAA,CAeJjoC,KAiCN,GAjCD,SAAOA,KAAAA,CAAMkoC,UAAkB,EAAA;QAC7B,IAAMC,SAAAA,GAAY5F,YAAYC,GAAG,EAAA,CAAA;;AAGjC,QAAA,IAAI,CAAC4F,MAAM,CAACtpC,MAAM,GAAG,CAAA,CAAA;QACrB,IAAI,CAACupC,iBAAiB,CAACtpC,KAAK,EAAA,CAAA;AAC5B,QAAA,IAAI,CAACupC,UAAU,EAAA,CAAA;QAEf,IAAMhT,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;AACzBjT,QAAAA,KAAAA,CAAMnR,SAAS,CAAC+jB,UAAAA,CAAAA,CAAAA;AAEhB,QAAA,IAAMM,YAAe,GAAA,IAAI,CAACC,YAAY,CAACnT,KAAAA,CAAAA,CAAAA;QAEvC,IAAMoT,qBAAAA,GAAwBF,aAAa/E,eAAe,CAAA;QAC1D,IAAMkF,kBAAAA,GAAqBH,aAAa9E,YAAY,CAAA;QACpD,IAAK,IAAI9kC,CAAI,GAAA,CAAA,EAAGC,CAAI2pC,GAAAA,YAAAA,CAAahF,UAAU,CAAC1kC,MAAM,EAAEF,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC9D,YAAA,IAAMgqC,SAAYJ,GAAAA,YAAAA,CAAahF,UAAU,CAAC5kC,CAAE,CAAA,CAAA;AAC5C,YAAA,IAAMiqC,4BAA+BH,GAAAA,qBAAAA,CAAsBI,MAAM,CAACF,UAAUnF,eAAe,CAAA,CAAA;YAC3F,IAAMsF,QAAAA,GAAW,aAAKJ,kBAAmBtF,CAAAA,WAAW,EAAKuF,SAAUlF,CAAAA,YAAY,CAACL,WAAW,CAAA,CAAA;YAC3F,IAAMC,WAAAA,GAAc,aAAKqF,kBAAmBrF,CAAAA,WAAW,EAAKsF,SAAUlF,CAAAA,YAAY,CAACJ,WAAW,CAAA,CAAA;YAE9F,IAAK,IAAI0F,CAAI,GAAA,CAAA,EAAGhX,CAAI4W,GAAAA,SAAAA,CAAUhF,MAAM,CAAC9kC,MAAM,EAAEkqC,CAAIhX,GAAAA,CAAAA,EAAGgX,CAAK,EAAA,CAAA;AACvD,gBAAA,IAAMC,IAAOL,GAAAA,SAAAA,CAAUhF,MAAM,CAACoF,CAAE,CAAA,CAAA;AAChCtrB,gBAAAA,MAAAA,CAAOwrB,MAAM,CAACD,IAAAA,CAAKvF,YAAY,CAACL,WAAW,EAAE0F,QAAAA,CAAAA,CAAAA;AAC7CrrB,gBAAAA,MAAAA,CAAOwrB,MAAM,CAACD,IAAAA,CAAKvF,YAAY,CAACJ,WAAW,EAAEA,WAAAA,CAAAA,CAAAA;gBAC7C,IAAI2F,IAAAA,CAAKjF,SAAS,EAAE,SAAA;AACpB,gBAAA,IAAMmF,oBAAuBN,GAAAA,4BAAAA,CAA6BC,MAAM,CAACG,KAAKxF,eAAe,CAAA,CAAA;AACrFwF,gBAAAA,IAAAA,CAAKG,QAAQ,GAAGD,oBAAqBvmC,CAAAA,GAAG,CAAC,SAAChB,IAAAA,EAAAA;AAASA,oBAAAA,OAAAA,IAAAA,CAAK+0B,OAAO,CAAA;AAAEzX,iBAAAA,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAA;AACxE,aAAA;AACF,SAAA;QAEA5f,aAAOyB,CAAAA,IAAI,CAAC,wCAAC,IAAwCwhC,WAAYC,CAAAA,GAAG,EAAK2F,GAAAA,SAAQ,CAAE,GAAA,IAAA,CAAA,CAAA;QACnF,OAAOK,YAAAA,CAAAA;AACT,KAAA,CAAA;AAhDWP,IAAAA,kBAAAA,CAkDIQ,YA0Cd,GA1CD,SAAeA,YAAAA,CAAanT,KAAkB,EAAA;;AAE5CA,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,QAAA,CAAA,CAAA;AACjB,QAAA,IAAM7iB,OAAO+yB,KAAM1P,CAAAA,cAAc,CAAC,GAAA,EAAK,KAAK,KAAO,EAAA,KAAA,CAAA,CAAA;QACnD,IAAM4iB,YAAAA,GAAerF,mBAAoBI,CAAAA,kBAAkB,CAAChhC,IAAAA,CAAAA,CAAAA;AAC5D+yB,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AAEjB,QAAA,IAAIikB,UAAa,GAAA,CAAA,CAAA;AACjB/T,QAAAA,KAAAA,CAAMvQ,oBAAoB,EAAA,CAAA;QAC1B,IAAInnB,KAAAA,GAAQ03B,KAAMlR,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;QAEpC,IAAQqf,kBAAoB+E,YAApB/E,CAAAA,eAAAA,CAAAA;AACR,QAAA,MAAO,IAAM,CAAA;YACX,IAAMtxB,KAAAA,GAAQmjB,MAAMzO,SAAS,EAAA,CAAA;AAC7B,YAAA,OAAQ1U,MAAM7T,IAAI;AAChB,gBAAA,KAAKH,QAAQwoC,WAAW;oBACtB,IAAI,CAAC2C,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAE2kC,eAAAA,CAAAA,CAAAA;oBACrD,IAAMmF,SAAAA,GAAY,IAAI,CAACW,eAAe,EAAA,CAAA;oBACtCf,YAAahF,CAAAA,UAAU,CAAC9kC,IAAI,CAACkqC,SAAAA,CAAAA,CAAAA;oBAC7BhrC,KAAQ03B,GAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,oBAAA,MAAA;AACF,gBAAA,KAAKjmB,QAAQ4nC,kBAAkB,CAAA;AAC/B,gBAAA,KAAK5nC,QAAQ8nC,cAAc,CAAA;AAC3B,gBAAA,KAAK9nC,QAAQgoC,QAAQ;oBACnB,IAAI,CAACmD,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAE2kC,eAAAA,CAAAA,CAAAA;AACrDnO,oBAAAA,KAAAA,CAAM1P,cAAc,CAAC,GAAK,EAAA,GAAA,EAAK,IAAM,EAAA,KAAA,CAAA,CAAA;oBACrChoB,KAAQ03B,GAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,oBAAA,MAAA;AACF,gBAAA,KAAKjmB,QAAQ2pC,SAAS;oBACpB,EAAEuB,UAAAA,CAAAA;AACF,oBAAA,MAAA;AACF,gBAAA,KAAKlrC,QAAQ4pC,UAAU;oBACrB,IAAI,EAAEsB,eAAe,CAAG,EAAA;wBACtB,IAAI,CAACC,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAE2kC,eAAAA,CAAAA,CAAAA;AACrD,wBAAA,IAAI,CAAC+F,SAAS,EAAA,CAAA;wBACd,OAAOhB,YAAAA,CAAAA;AACT,qBAAA;AACA,oBAAA,MAAA;AACF,gBAAA;oBACE5qC,KAAQ,GAAA,IAAI,CAAC6rC,iBAAiB,CAACt3B,OAAOvU,KAAO6lC,EAAAA,eAAAA,EAAiB+E,aAAa9E,YAAY,CAAA,CAAA;AAC3F,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AA5FWuE,IAAAA,kBAAAA,CA8FIyB,wCA4Bd,GA5BD,SAAeA,wCAAyChG,CAAAA,YAA2B,EAAEiG,UAAqB,EAAA;QACxG,IAAMrU,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;QACzB,IAAMp2B,KAAAA,GAAQmjB,MAAMzO,SAAS,EAAA,CAAA;AAC7B,QAAA,IAAI1U,KAAM7T,CAAAA,IAAI,KAAKL,UAAAA,CAAWssB,EAAE,EAAE;;AAEhC+K,YAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjB,YAAA,IAAMwkB,cAAc,IAAI,CAACC,2BAA2B,CAACF,WAAWlqC,MAAM,CAAA,CAAA;YACtE,IAAM8I,MAAAA,GAAS,IAAI07B,kBAAmB9xB,CAAAA,KAAAA,CAAM1S,MAAM,EAAEkqC,UAAAA,CAAWrrC,IAAI,EAAEsrC,WAAAA,CAAAA,CAAAA;AACrE,YAAA,IAAI,CAACvB,iBAAiB,CAAC//B,MAAM,CAACC,MAAAA,CAAAA,CAAAA;AAChC,SAAA,MAAO,IAAI4J,KAAAA,CAAM1S,MAAM,KAAK,GAAK,EAAA;;YAE/B,IAAMqqC,QAAAA,GAAWxU,MAAMzO,SAAS,EAAA,CAAA;AAEhCyO,YAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;YACjB,IAAMpP,YAAAA,GAAe,IAAI,CAAC9I,aAAa,CAAA;AACvC8I,YAAAA,YAAAA,CAAarY,GAAG,CAACmsC,QAAAA,CAASrqC,MAAM,EAAEkqC,WAAWrrC,IAAI,CAAA,CAAA;AACjD,YAAA,IAAMwR,KAAK,IAAI,CAACu4B,iBAAiB,CAACh/B,MAAM,CAAC2M,YAAAA,CAAAA,CAAAA;AACzC,YAAA,IAAI,EAAClG,EAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAI3O,CAAAA,KAAK,CAAE,EAAA;AACd,gBAAA,IAAI,CAAC4oC,mBAAmB,CAAE,WAAWJ,GAAAA,UAAAA,CAAWlqC,MAAM,GAAC,cAAcqqC,GAAAA,QAAAA,CAASrqC,MAAM,EAAIqqC,SAAS1qC,QAAQ,CAAA,CAAA;AAI3G,aAAA;YACA,IAAMwqC,YAAAA,GAAc95B,GAAG3O,KAAK,CAAA;AAC5Buc,YAAAA,MAAAA,CAAOwrB,MAAM,CAACxF,YAAAA,CAAaL,WAAW,EAAEuG,aAAYvG,WAAW,CAAA,CAAA;AAC/D3lB,YAAAA,MAAAA,CAAOwrB,MAAM,CAACxF,YAAAA,CAAaJ,WAAW,EAAEsG,aAAYtG,WAAW,CAAA,CAAA;AAC/D,YAAA,OAAA;AACF,SAAA;AACF,KAAA,CAAA;IA1HW2E,kBA4HI+B,CAAAA,yBAMd,GAND,SAAeA,yBAAAA,GAAAA;QACb,IAAM1U,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;QACzB,IAAMp2B,KAAAA,GAAQmjB,MAAMzO,SAAS,EAAA,CAAA;AAC7ByO,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjB,QAAA,IAAM7c,SAAS,IAAI07B,kBAAAA,CAAmB9xB,MAAM1S,MAAM,EAAE0S,MAAM7T,IAAI,CAAA,CAAA;AAC9D,QAAA,IAAI,CAAC+pC,iBAAiB,CAAC//B,MAAM,CAACC,MAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;IAlIW0/B,kBAoIIK,CAAAA,UAGd,GAHD,SAAeA,UAAAA,GAAAA;AACb,QAAA,IAAMh/B,cAAc,IAAIlB,WAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAI,CAACigC,iBAAiB,CAACn/B,SAAS,CAACI,WAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;IAvIW2+B,kBAyIIuB,CAAAA,SAEd,GAFD,SAAeA,SAAAA,GAAAA;QACb,IAAI,CAACnB,iBAAiB,CAACl/B,QAAQ,EAAA,CAAA;AACjC,KAAA,CAAA;AA3IW8+B,IAAAA,kBAAAA,CA6II4B,2BASd,GATD,SAAeA,2BAAAA,CAA4BpO,KAAa,EAAA;QACtD,IAAMnG,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;QACzB,IAAM7E,YAAAA,GAAeP,oBAAoBC,kBAAkB,EAAA,CAAA;QAC3D,MAAO9N,KAAAA,CAAM/Q,UAAU,EAAA,KAAO,GAAK,CAAA;YACjC,IAAI,CAAC0lB,yBAAyB,CAACxO,KAAOiI,EAAAA,YAAAA,CAAAA,CAAAA;AACtCpO,YAAAA,KAAAA,CAAMvQ,oBAAoB,EAAA,CAAA;AAC5B,SAAA;AACAuQ,QAAAA,KAAAA,CAAM5Q,OAAO,CAAC,CAAA,CAAA,CAAA;QACd,OAAOgf,YAAAA,CAAAA;AACT,KAAA,CAAA;AAtJWuE,IAAAA,kBAAAA,CAwJI8B,mBAKd,GALD,SAAeA,mBAAoB9qC,CAAAA,OAAe,EAAEG,QAAuC,EAAA;AACzF,QAAc,IAAI,CAACmpC,MAAM,CAACzD,kBAAkB,CAAC7lC,OAASG,EAAAA,QAAAA,EAAAA;AAIxD,KAAA,CAAA;AA7JW6oC,IAAAA,kBAAAA,CA+JIgC,yBAmFd,GAnFD,SAAeA,yBAA0BC,CAAAA,WAAmB,EAAErpC,GAAkB,EAAA;QAC9E,IAAMy0B,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;QACzB,IAAM4B,aAAAA,GAAgB7U,MAAMzO,SAAS,EAAA,CAAA;QACrC,IAAMujB,cAAAA,GAAiBD,cAAc1qC,MAAM,CAAA;AAC3C,QAAA,IAAI4qC,eAAkBD,GAAAA,cAAAA,CAAAA;AACtB,QAAA,IAAIF,WAAgB,KAAA,YAAA,IAAgBE,cAAmB,KAAA,YAAA,IAAgBA,mBAAmB,iBAAmB,EAAA;AAC3G,YAAA,IAAIE,QAAW,GAAA,CAAA,CAAA;AACf,YAAA,IAAMC,aAAgBjV,GAAAA,KAAAA,CAAMhQ,sBAAsB,CAAC,GAAK,EAAA,GAAA,CAAA,CAAA;AACxD,YAAA,IAAIilB,kBAAkB,GAAK,EAAA;AACzBD,gBAAAA,QAAAA,GAAWhV,MAAM+O,UAAU,EAAA,CAAA;AAC3B/O,gBAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjBkQ,gBAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;aACZ,MAAA,IAAImlB,kBAAkB,GAAK,EAAA;gBAChC,IAAI,CAACR,mBAAmB,CAAE,6DAAA,CAAA,CAAA;AAK5B,aAAA;YACAM,eAAmBC,IAAAA,QAAAA,CAAAA;SACd,MAAA;AACLhV,YAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACnB,SAAA;AAEA,QAAA,IAAMolB,qBAAwBC,GAAAA,4BAAqB,CAACP,WAAAA,GAAcG,eAAgB,CAAA,CAAA;AAClF,QAAA,IAAIG,0BAA0BhhC,SAAW,EAAA;AACvC,YAAA,IAAI,CAACugC,mBAAmB,CAAE,gCAAgCK,GAAAA,cAAAA,CAAAA,CAAAA;AAK5D,SAAA;AAEA9U,QAAAA,KAAAA,CAAMvQ,oBAAoB,EAAA,CAAA;QAC1B,IAAI2lB,aAAAA,CAAAA;QAEJ,IAAM3jB,WAAAA,GAAcuO,MAAM9Q,cAAc,EAAA,CAAA;AACxC,QAAA,IAAIR,SAAUqC,CAAAA,OAAO,CAACU,WAAAA,CAAAA,IAAgBA,gBAAgB,EAAI,EAAA;;AAExD2jB,YAAAA,aAAAA,GAAgBpV,MAAM+O,UAAU,EAAA,CAAA;SAC3B,MAAA;YACL,IAAMhQ,UAAAA,GAAaiB,MAAMzO,SAAS,EAAA,CAAA;YAClC,IAAM8jB,cAAAA,GAAiBtW,WAAW/1B,IAAI,CAAA;YAEtC,IAAIqsC,cAAAA,KAAmBxsC,OAAQqZ,CAAAA,IAAI,EAAE;gBACnCkzB,aAAgB,GAAA,IAAA,CAAA;AAClB,aAAA,MAAO,IAAIC,cAAAA,KAAmBxsC,OAAQsZ,CAAAA,KAAK,EAAE;gBAC3CizB,aAAgB,GAAA,KAAA,CAAA;AAClB,aAAA,MAAO,IAAIC,cAAAA,KAAmBxsC,OAAQkpC,CAAAA,OAAO,EAAE;AAC7CqD,gBAAAA,aAAAA,GAAgBpV,MAAMiP,SAAS,EAAA,CAAA;AACjC,aAAA,MAAO,IAAIjP,KAAAA,CAAM/Q,UAAU,EAAA,KAAO,GAAK,EAAA;AAGrB,gBAAA,IAAA,4CAAA,CAAA;AAFhB+Q,gBAAAA,KAAAA,CAAM5Q,OAAO,CAAC,CAAA,CAAA,CAAA;gBACd,IAAMkmB,eAAAA,GAAkBtV,MAAMzO,SAAS,EAAA,CAAA;AACvC6jB,gBAAAA,aAAAA,GAAAA,CAAgB,4CAAA,GAAA,IAAI,CAACG,oBAAoB,CAACxW,UAAAA,CAAW50B,MAAM,CAAC,KAA5C,IAAA,GAAA,KAAA,CAAA,GAAA,4CAA8C,CAACmrC,eAAAA,CAAgBnrC,MAAM,CAAC,CAAA;AACtF,gBAAA,IAAIirC,iBAAiBlhC,SAAW,EAAA;AAC9B,oBAAA,IAAI,CAACugC,mBAAmB,CACrB,2BAA2B1V,GAAAA,UAAAA,CAAW50B,MAAM,GAAC,GAAGmrC,GAAAA,eAAAA,CAAgBnrC,MAAM,EACvEmrC,gBAAgBxrC,QAAQ,CAAA,CAAA;AAM5B,iBAAA;aACK,MAAA;AACLsrC,gBAAAA,aAAAA,GAAgBrW,WAAW50B,MAAM,CAAA;gBACjC,IAAMuW,YAAAA,GAAe,IAAI,CAAC9I,aAAa,CAAA;AACvC8I,gBAAAA,YAAAA,CAAarY,GAAG,CAAC02B,UAAAA,CAAW50B,MAAM,EAAExB,WAAWssB,EAAE,CAAA,CAAA;AACjD,gBAAA,IAAI,CAAC,IAAI,CAAC8d,iBAAiB,CAACh/B,MAAM,CAAC2M,YAAe,CAAA,EAAA;oBAChD,IAAI,CAAC+zB,mBAAmB,CAAC,UAAC,GAAUG,WAAY,GAAA,aAAA,GAAa7V,UAAW50B,CAAAA,MAAM,EAAI40B,UAAAA,CAAWj1B,QAAQ,CAAA,CAAA;AAKvG,iBAAA;AACF,aAAA;AACF,SAAA;AACAk2B,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;QACjB,IAAI,OAAOslB,kBAAkB,QAAU,EAAA;YACrC7pC,GAAIyiC,CAAAA,WAAW,CAACkH,qBAAAA,CAAsB,GAAGE,aAAAA,CAAAA;SACpC,MAAA;YACL7pC,GAAIwiC,CAAAA,WAAW,CAACmH,qBAAAA,CAAsB,GAAGE,aAAAA,CAAAA;AAC3C,SAAA;AACF,KAAA,CAAA;AAlPWzC,IAAAA,kBAAAA,CAoPI6C,wCAmCd,GAnCD,SAAeA,wCAAAA,CAAyCpH,YAA2B,EAAA;QACjF,IAAMpO,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;QACzB,IAAMp2B,KAAAA,GAAQmjB,MAAMzO,SAAS,EAAA,CAAA;AAC7B,QAAA,IAAI1U,KAAM7T,CAAAA,IAAI,KAAKL,UAAAA,CAAWssB,EAAE,EAAE;;AAEhC+K,YAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjB,YAAA,IAAM7c,SAAS,IAAI07B,kBAAAA,CAAmB9xB,MAAM1S,MAAM,EAAEtB,QAAQknC,iBAAiB,CAAA,CAAA;AAC7E,YAAA,IAAI,CAACgD,iBAAiB,CAAC//B,MAAM,CAACC,MAAAA,CAAAA,CAAAA;AAC9B,YAAA,OAAA;AACF,SAAA;QAEA,IAAI4J,KAAAA,CAAM1S,MAAM,KAAK,GAAK,EAAA;YACxB,IAAI,CAACsqC,mBAAmB,CAAE,mDAAgD53B,KAAM1S,CAAAA,MAAM,EAAI0S,KAAAA,CAAM/S,QAAQ,CAAA,CAAA;AAI1G,SAAA;QACA,IAAM+qB,IAAAA,GAAOmL,MAAMzO,SAAS,EAAA,CAAA;AAC5ByO,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;QACjB,IAAMjkB,KAAAA,GAAQ,IAAI,CAAC0pC,oBAAoB,CAACzF,eAAe,CAACjb,IAAK1qB,CAAAA,MAAM,CAAC,CAAA;QACpE,IAAMsrC,GAAAA,GAAMN,6BAAsBrF,eAAe,CAAA;AACjD,QAAA,IAAIjkC,SAASqI,SAAW,EAAA;AACtBk6B,YAAAA,YAAAA,CAAaJ,WAAW,CAACyH,GAAI,CAAA,GAAG5gB,KAAK1qB,MAAM,CAAA;YAC3C,IAAMuW,YAAAA,GAAe,IAAI,CAAC9I,aAAa,CAAA;AACvC8I,YAAAA,YAAAA,CAAarY,GAAG,CAACwsB,IAAAA,CAAK1qB,MAAM,EAAEtB,QAAQknC,iBAAiB,CAAA,CAAA;AACvD,YAAA,IAAMv1B,KAAK,IAAI,CAACu4B,iBAAiB,CAACh/B,MAAM,CAAC2M,YAAAA,CAAAA,CAAAA;AACzC,YAAA,IAAI,CAAClG,EAAI,EAAA;gBACP,IAAI,CAACi6B,mBAAmB,CAAE,uCAAoC5f,IAAK1qB,CAAAA,MAAM,EAAI0qB,IAAAA,CAAK/qB,QAAQ,CAAA,CAAA;AAI5F,aAAA;SACK,MAAA;YACLskC,YAAaL,CAAAA,WAAW,CAAC0H,GAAAA,CAAI,GAAG5pC,KAAAA,CAAAA;AAClC,SAAA;AACF,KAAA,CAAA;IAvRW8mC,kBAyRIqB,CAAAA,mBAcd,GAdD,SAAeA,mBAAAA,CACb1rC,KAAqB,EACrBymB,UAAkB,EAClB2mB,kBAAgC,EAAA;QAEhC,IAAM1V,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;QACzB,IAAIjT,KAAAA,CAAM8O,iBAAiB,EAAE;YAC3B,IAAM9L,QAAAA,GAAWhD,KAAMpP,CAAAA,YAAY,GAAG7B,UAAAA,CAAAA;AACtC2mB,YAAAA,kBAAAA,CAAmBtsC,IAAI,CAAC;gBACtBorB,KAAO,EAAA;oBAAElsB,KAAAA,EAAAA,KAAAA;oBAAOC,GAAK,EAAA,QAAA,CAAA,EAAA,EAAKy3B,KAAMlR,CAAAA,iBAAiB,CAAC,CAAA,CAAA,EAAA;AAAIpmB,wBAAAA,KAAAA,EAAOs6B,QAAW,GAAA,CAAA;;AAAI,iBAAA;gBAC5E3B,OAASrB,EAAAA,KAAAA,CAAMn2B,MAAM,CAAC0E,SAAS,CAACjG,KAAMI,CAAAA,KAAK,EAAEs6B,QAAW,GAAA,CAAA,CAAA;AAC1D,aAAA,CAAA,CAAA;AACAhD,YAAAA,KAAAA,CAAM8O,iBAAiB,GAAG,KAAA,CAAA;AAC5B,SAAA;AACF,KAAA,CAAA;IAvSW6D,kBAySIsB,CAAAA,eA+Cd,GA/CD,SAAeA,eAAAA,GAAAA;QACb,IAAMjU,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;AACzB,QAAA,IAAI,CAACD,UAAU,EAAA,CAAA;AAEf,QAAA,IAAIe,UAAa,GAAA,CAAA,CAAA;AACjB,QAAA,IAAM9mC,OAAO+yB,KAAM1P,CAAAA,cAAc,CAAC,GAAA,EAAK,KAAK,KAAO,EAAA,KAAA,CAAA,CAAA;QACnD,IAAMqlB,eAAAA,GAAkB9H,mBAAoBQ,CAAAA,qBAAqB,CAACphC,IAAAA,CAAAA,CAAAA;AAClE+yB,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AAEjBkQ,QAAAA,KAAAA,CAAMvQ,oBAAoB,EAAA,CAAA;QAC1B,IAAInnB,KAAAA,GAAQ03B,KAAMlR,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAEpC,QAAA,MAAO,IAAM,CAAA;YACX,IAAMjS,KAAAA,GAAQmjB,MAAMzO,SAAS,EAAA,CAAA;AAC7B,YAAA,OAAQ1U,MAAM7T,IAAI;AAChB,gBAAA,KAAKH,QAAQ0oC,MAAM;oBACjB,IAAI,CAACyC,mBAAmB,CAAC1rC,KAAOuU,EAAAA,KAAAA,CAAM1S,MAAM,CAACX,MAAM,EAAEmsC,eAAAA,CAAgBxH,eAAe,CAAA,CAAA;oBACpF,IAAMwF,IAAAA,GAAO,IAAI,CAACiC,UAAU,EAAA,CAAA;oBAC5BD,eAAgBrH,CAAAA,MAAM,CAACllC,IAAI,CAACuqC,IAAAA,CAAAA,CAAAA;oBAC5BrrC,KAAQ03B,GAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,oBAAA,MAAA;AACF,gBAAA,KAAKjmB,QAAQ0pC,SAAS;oBACpB,IAAI,CAACyB,mBAAmB,CAAC1rC,KAAOuU,EAAAA,KAAAA,CAAM1S,MAAM,CAACX,MAAM,EAAEmsC,eAAAA,CAAgBxH,eAAe,CAAA,CAAA;AACpF,oBAAA,IAAMlhC,QAAO+yB,KAAM1P,CAAAA,cAAc,CAAC,GAAA,EAAK,KAAK,KAAO,EAAA,KAAA,CAAA,CAAA;AACnDqlB,oBAAAA,eAAAA,CAAgBrH,MAAM,CAACllC,IAAI,CAACykC,mBAAAA,CAAoBY,aAAa,CAACxhC,KAAAA,CAAAA,CAAAA,CAAAA;oBAC9D3E,KAAQ03B,GAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,oBAAA,MAAA;AACF,gBAAA,KAAKjmB,QAAQ2pC,SAAS;oBACpB,EAAEuB,UAAAA,CAAAA;AACF,oBAAA,MAAA;AACF,gBAAA,KAAKlrC,QAAQ4pC,UAAU;oBACrB,IAAI,EAAEsB,eAAe,CAAG,EAAA;wBACtB,IAAI,CAACC,mBAAmB,CAAC1rC,KAAOuU,EAAAA,KAAAA,CAAM1S,MAAM,CAACX,MAAM,EAAEmsC,eAAAA,CAAgBxH,eAAe,CAAA,CAAA;AACpF,wBAAA,IAAI,CAAC+F,SAAS,EAAA,CAAA;wBACd,OAAOyB,eAAAA,CAAAA;AACT,qBAAA;AACA,oBAAA,MAAA;AACF,gBAAA;AACErtC,oBAAAA,KAAAA,GAAQ,IAAI,CAACutC,wBAAwB,CACnCh5B,KACAvU,EAAAA,KAAAA,EACAqtC,eAAgBxH,CAAAA,eAAe,EAC/BwH,eAAAA,CAAgBvH,YAAY,EAC5BuH,gBAAgBpH,IAAI,CAAA,CAAA;AAE1B,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAxVWoE,IAAAA,kBAAAA,CA0VImD,UAiBd,GAjBD,SAAeA,UAAAA,CAAWvH,IAA+C,EAAA;QACvE,IAAMvO,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;AACzBjT,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjB,QAAA,MAAO,IAAM,CAAA;YACX,IAAMpgB,KAAAA,GAAQswB,MAAMzO,SAAS,EAAA,CAAA;AAC7ByO,YAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjB,YAAA,IAAMjkB,QAAQm0B,KAAM1P,CAAAA,cAAc,CAAC,GAAA,EAAK,KAAK,KAAO,EAAA,KAAA,CAAA,CAAA;AACpD0P,YAAAA,KAAAA,CAAMvQ,oBAAoB,EAAA,CAAA;AAE1B8e,YAAAA,IAAI,CAAC7+B,KAAAA,CAAMvF,MAAM,CAAC,GAAG0B,KAAAA,CAAAA;AAErB,YAAA,IAAIm0B,KAAMpQ,CAAAA,IAAI,CAAC,CAAA,CAAA,KAAO,GAAK,EAAA;AACzBoQ,gBAAAA,KAAAA,CAAM5Q,OAAO,CAAC,CAAA,CAAA,CAAA;AACd,gBAAA,OAAA;AACF,aAAA;AACA4Q,YAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IA3WW6iB,kBA6WIiD,CAAAA,UAyDd,GAzDD,SAAeA,UAAAA,GAAAA;AACb,QAAA,IAAI,CAAC5C,UAAU,EAAA,CAAA;QACf,IAAMhT,KAAAA,GAAQ,IAAI,CAACiT,MAAM,CAAA;AAEzB,QAAA,IAAMhmC,OAAO+yB,KAAM1P,CAAAA,cAAc,CAAC,GAAA,EAAK,KAAK,KAAO,EAAA,KAAA,CAAA,CAAA;QACnD,IAAMylB,UAAAA,GAAalI,mBAAoBW,CAAAA,sBAAsB,CAACvhC,IAAAA,CAAAA,CAAAA;AAC9D+yB,QAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;AACjB,QAAA,IAAIikB,UAAa,GAAA,CAAA,CAAA;AAEjB/T,QAAAA,KAAAA,CAAMvQ,oBAAoB,EAAA,CAAA;QAC1B,IAAInnB,KAAAA,GAAQ03B,KAAMlR,CAAAA,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAEpC,QAAA,MAAO,IAAM,CAAA;YACX,IAAMjS,KAAAA,GAAQmjB,MAAMzO,SAAS,EAAA,CAAA;AAC7B,YAAA,OAAQ1U,MAAM7T,IAAI;AAChB,gBAAA,KAAKH,QAAQooC,cAAc,CAAA;AAC3B,gBAAA,KAAKpoC,QAAQsoC,gBAAgB;oBAC3B,IAAI,CAAC6C,mBAAmB,CAAC1rC,KAAOuU,EAAAA,KAAAA,CAAM1S,MAAM,CAACX,MAAM,EAAEusC,UAAAA,CAAW5H,eAAe,CAAA,CAAA;AAC/EnO,oBAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;oBACjB,IAAM3c,KAAAA,GAAQ6sB,MAAMzO,SAAS,EAAA,CAAA;AAC7B,oBAAA,IAAIwkB,UAAU,CAACl5B,KAAM1S,CAAAA,MAAM,CAAC,EAAE;AAC5B,wBAAcrB,cAAAA,CAAeY,aAAa,CACxC,qBACA+K,EAAAA,aAAAA,CAAYqU,gBAAgB,EAC5BkX,KAAMn2B,CAAAA,MAAM,EACZm2B,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,EAAA;AAM5B,qBAAA;AACA,oBAAA,IAAM2mB,MAAM54B,KAAM7T,CAAAA,IAAI,KAAKH,OAAQooC,CAAAA,cAAc,GAAG,aAAgB,GAAA,eAAA,CAAA;AACpE8E,oBAAAA,UAAU,CAACN,GAAAA,CAAI,GAAGtiC,KAAAA,CAAMhJ,MAAM,CAAA;AAC9B61B,oBAAAA,KAAAA,CAAMlQ,UAAU,CAAC,GAAA,CAAA,CAAA;oBACjBxnB,KAAQ03B,GAAAA,KAAAA,CAAMlR,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAChC,oBAAA,MAAA;AACF,gBAAA,KAAKjmB,QAAQ2pC,SAAS;oBACpB,EAAEuB,UAAAA,CAAAA;AACF,oBAAA,MAAA;AACF,gBAAA,KAAKlrC,QAAQ4pC,UAAU;oBACrB,IAAI,EAAEsB,eAAe,CAAG,EAAA;wBACtB,IAAI,CAACC,mBAAmB,CAAC1rC,KAAOuU,EAAAA,KAAAA,CAAM1S,MAAM,CAACX,MAAM,EAAEusC,UAAAA,CAAW5H,eAAe,CAAA,CAAA;AAC/E,wBAAA,IAAI,CAAC+F,SAAS,EAAA,CAAA;wBACd,OAAO6B,UAAAA,CAAAA;AACT,qBAAA;AACA,oBAAA,MAAA;AACF,gBAAA;AACEztC,oBAAAA,KAAAA,GAAQ,IAAI,CAACutC,wBAAwB,CACnCh5B,KACAvU,EAAAA,KAAAA,EACAytC,UAAW5H,CAAAA,eAAe,EAC1B4H,UAAAA,CAAW3H,YAAY,EACvB2H,WAAWxH,IAAI,CAAA,CAAA;AAErB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAtaWoE,IAAAA,kBAAAA,CAwaIkD,wBAiBd,GAjBD,SAAeA,wBAAAA,CACbh5B,KAAwB,EACxBvU,KAAqB,EACrB0tC,iBAA+B,EAC/BC,eAA8B,EAC9BC,OAAkD,EAAA;AAElD,QAAA,OAAQr5B,MAAM7T,IAAI;AAChB,YAAA,KAAKH,QAAQkoC,MAAM;gBACjB,IAAI,CAACiD,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAEwsC,iBAAAA,CAAAA,CAAAA;gBACrD,IAAI,CAACF,UAAU,CAACI,OAAAA,CAAAA,CAAAA;AAChB5tC,gBAAAA,KAAAA,GAAQ,IAAI,CAAC2qC,MAAM,CAACnkB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACtC,gBAAA,MAAA;AACF,YAAA;AACExmB,gBAAAA,KAAAA,GAAQ,IAAI,CAAC6rC,iBAAiB,CAACt3B,KAAAA,EAAOvU,OAAO0tC,iBAAmBC,EAAAA,eAAAA,CAAAA,CAAAA;AACpE,SAAA;QACA,OAAO3tC,KAAAA,CAAAA;AACT,KAAA,CAAA;IAzbWqqC,kBA2bIwB,CAAAA,iBAqCd,GArCD,SAAeA,iBACbt3B,CAAAA,KAAwB,EACxBvU,KAAqB,EACrB0tC,iBAA+B,EAC/BC,eAA8B,EAAA;AAE9B,QAAA,OAAQp5B,MAAM7T,IAAI;AAChB,YAAA,KAAKH,QAAQonC,YAAY,CAAA;AACzB,YAAA,KAAKpnC,QAAQsnC,YAAY,CAAA;AACzB,YAAA,KAAKtnC,QAAQ0nC,aAAa,CAAA;AAC1B,YAAA,KAAK1nC,QAAQwnC,cAAc;gBACzB,IAAI,CAAC2D,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAEwsC,iBAAAA,CAAAA,CAAAA;gBACrD,IAAI,CAAC5B,wCAAwC,CAAC6B,eAAiBp5B,EAAAA,KAAAA,CAAAA,CAAAA;AAC/DvU,gBAAAA,KAAAA,GAAQ,IAAI,CAAC2qC,MAAM,CAACnkB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACtC,gBAAA,MAAA;AACF,YAAA,KAAKjmB,QAAQ4oC,aAAa,CAAA;AAC1B,YAAA,KAAK5oC,QAAQ8oC,gBAAgB,CAAA;AAC7B,YAAA,KAAK9oC,QAAQgpC,MAAM,CAAA;AACnB,YAAA,KAAKhpC,QAAQipC,QAAQ,CAAA;AACrB,YAAA,KAAKjpC,QAAQkpC,OAAO,CAAA;AACpB,YAAA,KAAKlpC,QAAQopC,iBAAiB,CAAA;AAC9B,YAAA,KAAKppC,QAAQspC,kBAAkB,CAAA;AAC/B,YAAA,KAAKtpC,QAAQwpC,UAAU;gBACrB,IAAI,CAAC2B,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAEwsC,iBAAAA,CAAAA,CAAAA;AACrD,gBAAA,IAAI,CAACtB,yBAAyB,EAAA,CAAA;AAC9BpsC,gBAAAA,KAAAA,GAAQ,IAAI,CAAC2qC,MAAM,CAACnkB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACtC,gBAAA,MAAA;AACF,YAAA,KAAKjmB,QAAQknC,iBAAiB;gBAC5B,IAAI,CAACiE,mBAAmB,CAAC1rC,KAAAA,EAAOuU,MAAM1S,MAAM,CAACX,MAAM,EAAEwsC,iBAAAA,CAAAA,CAAAA;gBACrD,IAAI,CAACR,wCAAwC,CAACS,eAAAA,CAAAA,CAAAA;AAC9C3tC,gBAAAA,KAAAA,GAAQ,IAAI,CAAC2qC,MAAM,CAACnkB,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACtC,gBAAA,MAAA;AACF,YAAA;;AAEE,gBAAA,IAAI,CAACmkB,MAAM,CAACnE,iBAAiB,GAAG,IAAA,CAAA;AACpC,SAAA;QACA,OAAOxmC,KAAAA,CAAAA;AACT,KAAA,CAAA;AAheWqqC,IAAAA,OAAAA,kBAAAA,CAAAA;AAieZ,CAAA,EAAA,CAAA;AAjeYA,kBAAAA,CACKG,SAAS,IAAIvpB,KAAAA,EAAAA,CAAAA;AADlBopB,kBAAAA,CAGI4C,oBAAkF,GAAA;IAC/FzF,eAAAA,EAAAA,sBAAAA;IACAkC,eAAAA,EAAAA,sBAAAA;IACAE,gBAAAA,EAAAA,uBAAAA;IACAR,cAAAA,EAAAA,qBAAAA;IACAF,WAAAA,EAAAA,kBAAAA;IACAY,QAAAA,EAAAA,eAAAA;AACF,CAAA,CAAA;AAVWO,kBAAAA,CAWII,oBAAoB,IAAIt/B,gBAAAA,EAAAA,CAAAA;AAX5Bk/B,kBAAAA,CAYIM,SAAS,IAAIpE,WAAAA,EAAAA,CAAAA;AAZjB8D,kBAaI/6B,CAAAA,aAAAA,GAAgB,IAAI+2B,kBAAAA,CAAmB,EAAI,EAAA,IAAA,CAAA;;AC/BrD,IAAA,SAAA,iBAAA,WAAA;AAAMtkC,IAAAA,SAAAA,SAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AA2BX8rC,IAAAA,MAAAA,CAAAA,kBASC,GATDA,SAAAA,kBAAAA,CAAmBvD,UAAkB,EAAA;AACnC9pC,QAAAA,cAAAA,CAAeO,2BAA2B,EAAA,CAAA;QAC1C,IAAM6pC,YAAAA,GAAeP,kBAAmBjoC,CAAAA,KAAK,CAACkoC,UAAAA,CAAAA,CAAAA;QAM9C,OAAOM,YAAAA,CAAAA;AACT,KAAA,CAAA;AAEAkD,IAAAA,MAAAA,CAAAA,gBA2CC,GA3CDA,SAAAA,gBAAAA,CACEvsC,MAAc,EACdiiB,WAAmB,EACnBC,aAAqB,EACrBsqB,OAAuB,EACvB1rC,qBAA6B,EAAA;QAE7B,IAAM2rC,cAAAA,GAAiBrJ,YAAYC,GAAG,EAAA,CAAA;AACtC,QAAA,IAAM7hC,kBAAkB,EAAC,CAAA;QACzBZ,YAAamE,CAAAA,iBAAiB,CAACnF,KAAK,EAAA,CAAA;AACpC,QAAA,IAAM8sC,gBAAmB9rC,GAAAA,YAAAA,CAAaC,KAAK,CAACb,QAAQc,qBAAuBU,EAAAA,eAAAA,CAAAA,CAAAA;QAC3ErB,aAAOyB,CAAAA,IAAI,CAAC,mCAAC,IAAmCwhC,WAAYC,CAAAA,GAAG,EAAKoJ,GAAAA,cAAa,CAAE,GAAA,IAAA,CAAA,CAAA;QAEnF,IAAMtW,KAAAA,GAAQ,IAAI5O,KAAAA,CAAMmlB,gBAAkBlrC,EAAAA,eAAAA,CAAAA,CAAAA;QAE1C,IAAM0xB,MAAAA,GAASiD,MAAM1O,QAAQ,EAAA,CAAA;QAC7B,IAAiBklB,SAtDRnsC,SAsDDosC,CAAAA,OAAAA,CAAAA;AAtDCpsC,QAAAA,SAAAA,CAwDCqN,mBAAmB,GAAG6+B,gBAAAA,CAAAA;AAEhC,QAAA,IAAMG,OAAUF,GAAAA,MAAAA,CAAO9rC,KAAK,CAACqyB,MAAQ1xB,EAAAA,eAAAA,CAAAA,CAAAA;AAMrC,QAAA,IAAI,CAACqrC,OAAS,EAAA;YACZ,OAAOxiC,SAAAA,CAAAA;AACT,SAAA;QAEA,IAAM8E,OAAAA,GAAUq9B,YAAYM,qBAAeC,CAAAA,SAAS,GAAG3oB,cAAeG,CAAAA,UAAU,EAAKE,GAAAA,cAAAA,CAAeF,UAAU,EAAA,CAAA;QAE9G,IAAMyoB,gBAAAA,GAAmB5J,YAAYC,GAAG,EAAA,CAAA;AACxC,QAAA,IAAMxjB,GAAM1Q,GAAAA,OAAAA,CAAQ6S,kBAAkB,CAAC6qB,SAAS5qB,WAAaC,EAAAA,aAAAA,CAAAA,CAAAA;QAC7D/hB,aAAOyB,CAAAA,IAAI,CAAC,8BAAC,IAA8BwhC,WAAYC,CAAAA,GAAG,EAAK2J,GAAAA,gBAAe,CAAE,GAAA,IAAA,CAAA,CAAA;QAChF7sC,aAAOyB,CAAAA,IAAI,CAAC,wCAAC,IAAwCwhC,WAAYC,CAAAA,GAAG,EAAKoJ,GAAAA,cAAa,CAAE,GAAA,IAAA,CAAA,CAAA;AAzE/EjsC,QAAAA,SAAAA,CA0ECqN,mBAAmB,GAAGxD,SAAAA,CAAAA;QAMhC,OAAOwV,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEAotB,IAAAA,MAAAA,CAAAA,YAUC,GAVDA,SAAAA,YAAazV,CAAAA,OAAe,EAAE3T,MAAqB,EAAA;QACjD,IAAMmlB,SAAAA,GAAY5F,YAAYC,GAAG,EAAA,CAAA;AACjC,QAAA,IAAM6J,aAAgBlX,GAAAA,WAAAA,CAAYn1B,KAAK,CAAC22B,OAAS3T,EAAAA,MAAAA,CAAAA,CAAAA;QACjD1jB,aAAOyB,CAAAA,IAAI,CAAC,oCAAC,IAAoCwhC,WAAYC,CAAAA,GAAG,EAAK2F,GAAAA,SAAQ,CAAE,GAAA,IAAA,CAAA,CAAA;QAM/E,OAAOkE,aAAAA,CAAAA;AACT,KAAA,CAAA;IA7FW1sC,SASJC,CAAAA,cAUN,GAVD,SAAOA,cAAAA,CAAe5B,KAAa,EAAEsuC,IAAa,EAAEC,MAAe,EAAA;AACjE,QAAA,IAAM3S,QAAW,GAAA,IAAI,CAAC4S,mBAAmB,CAACjoC,GAAG,EAAA,CAAA;AAC7Cq1B,QAAAA,QAAAA,CAASj8B,GAAG,CACVK,KAAAA,CAAAA,CAAAA;QAMF,OAAO47B,QAAAA,CAAAA;AACT,KAAA,CAAA;AAnBWj6B,IAAAA,SAAAA,CAqBJE,WAIN,GAJD,SAAOA,WAAYjC,CAAAA,KAAqB,EAAEC,GAAmB,EAAA;AAC3D,QAAA,IAAMisB,KAAQ,GAAA,IAAI,CAAC2iB,gBAAgB,CAACloC,GAAG,EAAA,CAAA;QACvCulB,KAAMnsB,CAAAA,GAAG,CAACC,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;QACjB,OAAOisB,KAAAA,CAAAA;AACT,KAAA,CAAA;AAzBWnqB,IAAAA,OAAAA,SAAAA,CAAAA;AA2GZ,CAAA,GAAA;AA3GYA,SACIosC,CAAAA,OAAAA,GAAU5J,mBAAmBxkB,MAAM,EAAA,CAAA;AADvChe,SAEI6sC,CAAAA,mBAAAA,GAAsBpuC,cAAeC,CAAAA,gBAAgB,CAACN,cAAAA,CAAAA,CAAAA;AAF1D4B,SAGI8sC,CAAAA,gBAAAA,GAAmBruC,cAAeC,CAAAA,gBAAgB,CAACX,WAAAA,CAAAA;;ACXpE;AACO,IAAMgvC,UAAW,QAAgB;AAExC,IAAIC,IAAO,GAAA,SAAA,CAAA;AAKXC,OAAAA,CAAQC,GAAG,CAAC,qCAAC,GAAqCH,UAAQ,WAAWC,GAAAA,IAAAA,CAAAA;;;;;;;"}
1
+ {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/common/ShaderRange.ts","../src/common/ShaderPosition.ts","../src/common/types.ts","../src/common/enums/Keyword.ts","../src/ShaderLabUtils.ts","../src/common/BaseToken.ts","../src/Preprocessor.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../src/common/enums/ShaderStage.ts","../src/parser/builtin/functions.ts","../src/parser/builtin/variables.ts","../src/parser/GrammarSymbol.ts","../src/common/SymbolTable.ts","../src/common/SymbolTableStack.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/GSError.ts","../src/parser/symbolTable/SymbolDataType.ts","../src/parser/symbolTable/SymbolInfo.ts","../src/parser/symbolTable/FnSymbol.ts","../src/parser/symbolTable/StructSymbol.ts","../src/parser/symbolTable/VarSymbol.ts","../src/parser/ShaderInfo.ts","../src/parser/SemanticAnalyzer.ts","../src/parser/types.ts","../src/parser/AST.ts","../src/ParserUtils.ts","../src/codeGen/VisitorContext.ts","../src/TempArray.ts","../src/codeGen/CodeGenVisitor.ts","../src/codeGen/GLESVisitor.ts","../src/codeGen/GLES100.ts","../src/codeGen/GLES300.ts","../src/common/BaseLexer.ts","../src/lexer/Lexer.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../src/macroProcessor/constants.ts","../src/macroProcessor/MacroDefine.ts","../src/macroProcessor/MacroParserLexer.ts","../src/macroProcessor/Utils.ts","../src/macroProcessor/MacroParser.ts","../src/lalr/StateItem.ts","../src/lalr/State.ts","../src/lalr/Utils.ts","../src/lalr/types.ts","../src/lalr/LALR1.ts","../src/lalr/Production.ts","../src/parser/Grammar.ts","../src/lalr/CFG.ts","../src/parser/ShaderTargetParser.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/sourceParser/ShaderSourceFactory.ts","../src/sourceParser/ShaderSourceSymbol.ts","../src/sourceParser/SourceLexer.ts","../src/sourceParser/ShaderSourceParser.ts","../src/ShaderLab.ts","../src/index.ts"],"sourcesContent":["function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n\n var i = 0;\n\n return function() {\n if (i >= o.length) return { done: true };\n\n return { done: false, value: o[i++] };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else 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 return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (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 if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { IPoolElement } from \"@galacean/engine\";\nimport { ShaderPosition } from \"./ShaderPosition\";\n\nexport class ShaderRange implements IPoolElement {\n public start: ShaderPosition;\n public end: ShaderPosition;\n\n set(start: ShaderPosition, end: ShaderPosition) {\n this.start = start;\n this.end = end;\n }\n\n dispose(): void {\n this.start.dispose();\n this.end.dispose();\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class ShaderPosition implements IPoolElement {\n index: number;\n // #if _VERBOSE\n line: number;\n column: number;\n // #endif\n\n set(\n index: number,\n // #if _VERBOSE\n line: number,\n column: number\n // #endif\n ) {\n this.index = index;\n // #if _VERBOSE\n this.line = line;\n this.column = column;\n // #endif\n }\n\n dispose(): void {\n this.index = 0;\n // #if _VERBOSE\n this.line = 0;\n this.column = 0;\n // #endif\n }\n}\n","import { Keyword } from \"./enums/Keyword\";\n\nexport enum ETokenType {\n ID = 1000,\n FLOAT_CONSTANT,\n INT_CONSTANT,\n STRING_CONST,\n /** << */\n LEFT_OP,\n /** \\>> */\n RIGHT_OP,\n /** ++ */\n INC_OP,\n /** -- */\n DEC_OP,\n /** <= */\n LE_OP,\n /** \\>= */\n GE_OP,\n /** == */\n EQ_OP,\n /** != */\n NE_OP,\n /** && */\n AND_OP,\n /** || */\n OR_OP,\n /** ^^ */\n XOR_OP,\n /** *= */\n MUL_ASSIGN,\n /** /= */\n DIV_ASSIGN,\n /** += */\n ADD_ASSIGN,\n /** -= */\n SUB_ASSIGN,\n /** %= */\n MOD_ASSIGN,\n /** <<= */\n LEFT_ASSIGN,\n /** >>= */\n RIGHT_ASSIGN,\n /** &= */\n AND_ASSIGN,\n /** ^= */\n XOR_ASSIGN,\n /** |= */\n OR_ASSIGN,\n /** ( */\n LEFT_PAREN,\n /** ) */\n RIGHT_PAREN,\n /** [ */\n LEFT_BRACKET,\n /** ] */\n RIGHT_BRACKET,\n /** { */\n LEFT_BRACE,\n /** } */\n RIGHT_BRACE,\n /** . */\n DOT,\n /** , */\n COMMA,\n COLON,\n /** = */\n EQUAL,\n /** ; */\n SEMICOLON,\n /** ! */\n BANG,\n /** \\- */\n DASH,\n /** ~ */\n TILDE,\n PLUS,\n /** \\* */\n STAR,\n /** / */\n SLASH,\n /** % */\n PERCENT,\n /** < */\n LEFT_ANGLE,\n /** \\> */\n RIGHT_ANGLE,\n VERTICAL_BAR,\n /** ^ */\n CARET,\n /** & */\n AMPERSAND,\n /** ? */\n QUESTION,\n\n NotWord,\n\n /** ε */\n EPSILON = 1998,\n EOF = 1999\n}\n\nexport const TypeAny = 3000;\n\nexport type GalaceanDataType =\n | Keyword.VOID\n | Keyword.FLOAT\n | Keyword.BOOL\n | Keyword.INT\n | Keyword.UINT\n | Keyword.VEC2\n | Keyword.VEC3\n | Keyword.VEC4\n | Keyword.BVEC2\n | Keyword.BVEC3\n | Keyword.BVEC4\n | Keyword.IVEC2\n | Keyword.IVEC3\n | Keyword.IVEC4\n | Keyword.UVEC2\n | Keyword.UVEC3\n | Keyword.UVEC4\n | Keyword.MAT2\n | Keyword.MAT3\n | Keyword.MAT4\n | Keyword.MAT2X3\n | Keyword.MAT2X4\n | Keyword.MAT3X2\n | Keyword.MAT3X4\n | Keyword.MAT4X2\n | Keyword.MAT4X3\n | Keyword.SAMPLER2D\n | Keyword.SAMPLER3D\n | Keyword.SAMPLER_CUBE\n | Keyword.SAMPLER2D_SHADOW\n | Keyword.SAMPLER_CUBE_SHADOW\n | Keyword.SAMPLER2D_ARRAY\n | Keyword.SAMPLER2D_ARRAY_SHADOW\n | Keyword.I_SAMPLER2D\n | Keyword.I_SAMPLER3D\n | Keyword.I_SAMPLER_CUBE\n | Keyword.I_SAMPLER2D_ARRAY\n | Keyword.U_SAMPLER2D\n | Keyword.U_SAMPLER3D\n | Keyword.U_SAMPLER_CUBE\n | Keyword.U_SAMPLER2D_ARRAY\n | Keyword.VEC4_ARRAY\n | typeof TypeAny\n | string;\n\nexport type TokenType = ETokenType | Keyword;\n","export enum Keyword {\n CONST = 0,\n BOOL,\n FLOAT,\n DOUBLE,\n INT,\n UINT,\n BREAK,\n CONTINUE,\n DO,\n ELSE,\n FOR,\n IF,\n WHILE,\n DISCARD,\n RETURN,\n BVEC2,\n BVEC3,\n BVEC4,\n IVEC2,\n IVEC3,\n IVEC4,\n UVEC2,\n UVEC3,\n UVEC4,\n VEC2,\n VEC3,\n VEC4,\n VEC4_ARRAY,\n MAT2,\n MAT3,\n MAT4,\n MAT2X3,\n MAT2X4,\n MAT3X2,\n MAT3X4,\n MAT4X2,\n MAT4X3,\n IN,\n OUT,\n INOUT,\n CENTROID,\n SAMPLER2D,\n SAMPLER3D,\n SAMPLER_CUBE,\n SAMPLER2D_SHADOW,\n SAMPLER_CUBE_SHADOW,\n SAMPLER2D_ARRAY,\n SAMPLER2D_ARRAY_SHADOW,\n I_SAMPLER2D,\n I_SAMPLER3D,\n I_SAMPLER_CUBE,\n I_SAMPLER2D_ARRAY,\n U_SAMPLER2D,\n U_SAMPLER3D,\n U_SAMPLER_CUBE,\n U_SAMPLER2D_ARRAY,\n STRUCT,\n LAYOUT,\n LOCATION,\n VOID,\n\n PRECISION,\n PRECISE,\n HIGHP,\n MEDIUMP,\n LOWP,\n INVARIANT,\n SMOOTH,\n FLAT,\n NOPERSPECTIVE,\n\n // Common Tokens\n True,\n False,\n LeftBrace,\n RightBrace,\n Equal,\n\n // Source Parser Tokens\n GSRenderQueueType,\n GSBlendState,\n GSDepthState,\n GSStencilState,\n GSRasterState,\n GSEditorProperties,\n GSEditorMacros,\n GSEditor,\n GSTags,\n GSVertexShader,\n GSFragmentShader,\n GSSubShader,\n GSPass,\n GSBlendFactor,\n GSBlendOperation,\n GSBool,\n GSNumber,\n GSColor,\n GSCompareFunction,\n GSStencilOperation,\n GSCullMode,\n GSUsePass,\n\n // Macros\n MACRO_IF,\n MACRO_IFDEF,\n MACRO_IFNDEF,\n MACRO_ELSE,\n MACRO_ELIF,\n MACRO_ENDIF,\n MACRO_UNDEF,\n MACRO_DEFINE_EXPRESSION,\n MACRO_CONDITIONAL_EXPRESSION,\n MACRO_CALL\n}\n","import { ClearableObjectPool, IPoolElement, Logger } from \"@galacean/engine\";\nimport { GSErrorName } from \"./GSError\";\nimport { ShaderRange } from \"./common/ShaderRange\";\nimport { ShaderPosition } from \"./common/ShaderPosition\";\n// #if _VERBOSE\nimport { GSError } from \"./GSError\";\n// #endif\n\nexport class ShaderLabUtils {\n private static _shaderLabObjectPoolSet: ClearableObjectPool<IPoolElement>[] = [];\n\n static createObjectPool<T extends IPoolElement>(type: new () => T) {\n const pool = new ClearableObjectPool<T>(type);\n ShaderLabUtils._shaderLabObjectPoolSet.push(pool);\n return pool;\n }\n\n static clearAllShaderLabObjectPool() {\n for (let i = 0, n = ShaderLabUtils._shaderLabObjectPoolSet.length; i < n; i++) {\n ShaderLabUtils._shaderLabObjectPoolSet[i].clear();\n }\n }\n\n static createGSError(\n message: string,\n errorName: GSErrorName,\n source: string,\n location: ShaderRange | ShaderPosition,\n file?: string\n ): Error | undefined {\n // #if _VERBOSE\n return new GSError(errorName, message, location, source, file);\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { ETokenType } from \"./types\";\nimport { ShaderRange, ShaderPosition } from \".\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { IPoolElement } from \"@galacean/engine\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport class BaseToken<T extends number = number> implements IPoolElement {\n static pool = ShaderLabUtils.createObjectPool(BaseToken);\n\n type: T;\n lexeme: string;\n location: ShaderRange;\n\n set(type: T, lexeme: string, start?: ShaderPosition);\n set(type: T, lexeme: string, location?: ShaderRange);\n set(type: T, lexeme: string, arg?: ShaderRange | ShaderPosition) {\n this.type = type;\n this.lexeme = lexeme;\n if (arg) {\n if (arg instanceof ShaderRange) {\n this.location = arg as ShaderRange;\n } else {\n const end = ShaderLab.createPosition(\n arg.index + lexeme.length,\n // #if _VERBOSE\n arg.line,\n arg.column + lexeme.length\n // #endif\n );\n this.location = ShaderLab.createRange(arg, end);\n }\n }\n }\n\n dispose(): void {}\n}\n\nexport const EOF = new BaseToken();\nEOF.set(ETokenType.EOF, \"/EOF\");\n","import { Logger, ShaderPass } from \"@galacean/engine\";\n/** @ts-ignore */\nimport { ShaderLib } from \"@galacean/engine\";\n\nexport enum MacroValueType {\n Number, // 1, 1.1\n Symbol, // variable name\n FunctionCall, // function call, e.g. clamp(a, 0.0, 1.0)\n Other // shaderLab does not check this\n}\n\nexport interface MacroDefineInfo {\n isFunction: boolean;\n name: string;\n value: string;\n valueType: MacroValueType;\n params: string[];\n functionCallName: string;\n}\n\nexport interface MacroDefineList {\n [macroName: string]: MacroDefineInfo[];\n}\n\nexport class Preprocessor {\n private static readonly _includeReg = /^[ \\t]*#include +\"([\\w\\d./]+)\"/gm;\n private static readonly _macroRegex =\n /^\\s*#define\\s+(\\w+)[ ]*(\\(([^)]*)\\))?[ ]+(\\(?\\w+\\)?.*?)(?:\\/\\/.*|\\/\\*.*?\\*\\/)?\\s*$/gm;\n private static readonly _symbolReg = /^[a-zA-Z_][a-zA-Z0-9_]*$/;\n private static readonly _funcCallReg = /^([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\((.*)\\)$/;\n private static readonly _macroDefineIncludeMap = new Map<string, MacroDefineList>();\n\n /**\n * @internal\n */\n static _repeatIncludeSet = new Set<string>();\n\n static parse(\n source: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList,\n parseMacro = true\n ): string {\n if (parseMacro) {\n this._parseMacroDefines(source, outMacroDefineList);\n }\n return source.replace(this._includeReg, (_, includeName) =>\n this._replace(includeName, basePathForIncludeKey, outMacroDefineList)\n );\n }\n\n static getReferenceSymbolNames(macroDefineList: MacroDefineList, macroName: string, out: string[]): void {\n out.length = 0;\n const infos = macroDefineList[macroName];\n if (!infos) return;\n\n for (let i = 0; i < infos.length; i++) {\n const info = infos[i];\n const valueType = info.valueType;\n if (valueType === MacroValueType.FunctionCall || valueType === MacroValueType.Symbol) {\n const referencedName = valueType === MacroValueType.FunctionCall ? info.functionCallName : info.value;\n if (info.params.indexOf(referencedName) !== -1) continue;\n if (out.indexOf(referencedName) === -1) out.push(referencedName);\n } else if (valueType === MacroValueType.Other) {\n // #if _VERBOSE\n Logger.warn(\n `Warning: Macro \"${info.name}\" has an unrecognized value \"${info.value}\". ShaderLab does not validate this type.`\n );\n // #endif\n }\n }\n }\n\n private static _isNumber(str: string): boolean {\n return !isNaN(Number(str));\n }\n\n private static _isExist(list: MacroDefineInfo[], item: MacroDefineInfo): boolean {\n return list.some(\n (e) =>\n e.valueType === item.valueType &&\n e.value === item.value &&\n e.isFunction === item.isFunction &&\n e.functionCallName === item.functionCallName &&\n e.params.length === item.params.length &&\n e.params.every((p, i) => p === item.params[i])\n );\n }\n\n private static _parseMacroDefines(source: string, outMacroList: MacroDefineList): void {\n let match: RegExpExecArray | null;\n this._macroRegex.lastIndex = 0;\n\n while ((match = this._macroRegex.exec(source)) !== null) {\n const [, name, paramsGroup, paramsStr, valueRaw] = match;\n const isFunction = !!paramsGroup && !!valueRaw;\n const params =\n isFunction && paramsStr\n ? paramsStr\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean)\n : [];\n const value = valueRaw ? valueRaw.trim() : \"\";\n\n let valueType = MacroValueType.Other;\n let functionCallName = \"\";\n\n if (this._isNumber(value)) {\n valueType = MacroValueType.Number;\n } else if (this._symbolReg.test(value)) {\n valueType = MacroValueType.Symbol;\n } else {\n const callMatch = this._funcCallReg.exec(value);\n if (callMatch) {\n valueType = MacroValueType.FunctionCall;\n functionCallName = callMatch[1];\n }\n }\n\n const info: MacroDefineInfo = {\n isFunction,\n name,\n value,\n valueType,\n params,\n functionCallName\n };\n\n const arr = outMacroList[name];\n if (arr) {\n if (!this._isExist(arr, info)) arr.push(info);\n } else {\n outMacroList[name] = [info];\n }\n }\n }\n\n private static _mergeMacroDefineLists(from: MacroDefineList, to: MacroDefineList): void {\n for (const macroName in from) {\n if (to[macroName]) {\n const target = to[macroName];\n const src = from[macroName];\n for (let i = 0; i < src.length; i++) {\n const info = src[i];\n if (!this._isExist(target, info)) target.push(info);\n }\n } else {\n to[macroName] = from[macroName];\n }\n }\n }\n\n private static _replace(\n includeName: string,\n basePathForIncludeKey: string,\n outMacroDefineList: MacroDefineList\n ): string {\n let path: string;\n if (includeName[0] === \".\") {\n // @ts-ignore\n path = new URL(includeName, basePathForIncludeKey).href.substring(ShaderPass._shaderRootPath.length);\n } else {\n path = includeName;\n }\n\n const chunk = (ShaderLib as any)[path];\n if (!chunk) {\n Logger.error(`Shader slice \"${path}\" not founded.`);\n return \"\";\n }\n\n if (this._repeatIncludeSet.has(path)) {\n Logger.warn(`Shader slice \"${path}\" is included multiple times.`);\n }\n this._repeatIncludeSet.add(path);\n\n if (this._macroDefineIncludeMap.has(path)) {\n this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(path)!, outMacroDefineList);\n } else {\n const chunkMacroDefineList: MacroDefineList = {};\n this._parseMacroDefines(chunk, chunkMacroDefineList);\n this._macroDefineIncludeMap.set(path, chunkMacroDefineList);\n this._mergeMacroDefineLists(chunkMacroDefineList, outMacroDefineList);\n }\n\n return this.parse(chunk, basePathForIncludeKey, outMacroDefineList, false);\n }\n}\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","export enum EShaderStage {\n VERTEX,\n FRAGMENT,\n ALL\n}\n","import { GalaceanDataType, TypeAny } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport enum EGenType {\n GenType = 200,\n GenIntType,\n GenUintType,\n GenBoolType,\n Mat,\n BoolVec,\n IntVec,\n UintVec,\n Vec,\n GVec4,\n GSampler2D,\n GSampler3D,\n GSamplerCube,\n GSampler2DArray\n}\n\nexport type NonGenericGalaceanType = Exclude<GalaceanDataType, string>;\ntype BuiltinType = NonGenericGalaceanType | EGenType;\n\nfunction isGenericType(t: BuiltinType) {\n return t >= EGenType.GenType && t <= EGenType.GSampler2DArray;\n}\n\nconst BuiltinFunctionTable: Map<string, BuiltinFunction[]> = new Map();\n\nexport class BuiltinFunction {\n ident: string;\n readonly args: BuiltinType[];\n readonly scope: EShaderStage;\n\n private _returnType: BuiltinType;\n private _realReturnType: NonGenericGalaceanType;\n\n get realReturnType(): NonGenericGalaceanType {\n return this._realReturnType;\n }\n\n private constructor(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n this.ident = ident;\n this._returnType = returnType;\n this.args = args;\n this.scope = scope;\n }\n\n static getReturnType(fn: BuiltinFunction, genType?: NonGenericGalaceanType) {\n if (!isGenericType(fn._returnType)) return fn._returnType as NonGenericGalaceanType;\n return genType;\n }\n\n static _create(ident: string, returnType: BuiltinType, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, EShaderStage.ALL, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n static _createWithScop(ident: string, returnType: BuiltinType, scope: EShaderStage, ...args: BuiltinType[]) {\n const fn = new BuiltinFunction(ident, returnType, scope, ...args);\n const list = BuiltinFunctionTable.get(ident) ?? [];\n list.push(fn);\n BuiltinFunctionTable.set(ident, list);\n }\n\n // TODO: correct the type deduce, consider the following case:\n // It incorrectly inferred the type of the following expression as float, which should be vec3.\n // max(scatterAmt.xyz,0.0001)\n static getFn(ident: string, parameterTypes: NonGenericGalaceanType[]): BuiltinFunction | undefined {\n const list = BuiltinFunctionTable.get(ident);\n if (list) {\n for (let length = list.length, i = 0; i < length; i++) {\n const fn = list[i];\n const fnArgs = fn.args;\n const argLength = fnArgs.length;\n if (argLength !== parameterTypes.length) continue;\n // Try to match generic parameter type.\n let returnType = TypeAny;\n let found = true;\n for (let i = 0; i < argLength; i++) {\n const curFnArg = fnArgs[i];\n if (isGenericType(curFnArg)) {\n if (returnType === TypeAny) returnType = parameterTypes[i];\n } else {\n if (curFnArg !== parameterTypes[i] && parameterTypes[i] !== TypeAny) {\n found = false;\n break;\n }\n }\n }\n if (found) {\n fn._realReturnType = returnType;\n return fn;\n }\n }\n }\n }\n\n static isExist(ident: string) {\n return !!BuiltinFunctionTable.get(ident);\n }\n}\n\nBuiltinFunction._create(\"radians\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"degrees\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asin\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acos\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atan\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"tanh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"asinh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"acosh\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"atanh\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"pow\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"exp2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"log2\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sqrt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"inversesqrt\", EGenType.GenType, EGenType.GenType);\n\nBuiltinFunction._create(\"abs\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"abs\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"sign\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"sign\", EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"floor\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"trunc\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"round\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"roundEven\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"ceil\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"fract\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mod\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"min\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"min\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, EGenType.GenUintType);\nBuiltinFunction._create(\"min\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"max\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"max\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"clamp\", EGenType.GenType, EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType, EGenType.GenIntType);\nBuiltinFunction._create(\"clamp\", EGenType.GenIntType, EGenType.GenIntType, Keyword.INT, Keyword.INT);\nBuiltinFunction._create(\n \"clamp\",\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType,\n EGenType.GenUintType\n);\nBuiltinFunction._create(\"clamp\", EGenType.GenUintType, EGenType.GenUintType, Keyword.UINT, Keyword.UINT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"mix\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenBoolType);\nBuiltinFunction._create(\"step\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"step\", EGenType.GenType, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"smoothstep\", EGenType.GenType, Keyword.FLOAT, Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"isnan\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"isinf\", EGenType.GenBoolType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToInt\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"floatBitsToUint\", EGenType.GenUintType, EGenType.GenType);\nBuiltinFunction._create(\"intBitsToFloat\", EGenType.GenType, EGenType.GenIntType);\nBuiltinFunction._create(\"uintBitsToFloat\", EGenType.GenType, EGenType.GenUintType);\n\nBuiltinFunction._create(\"packSnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackSnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packUnorm2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackUnorm2x16\", Keyword.VEC2, Keyword.UINT);\nBuiltinFunction._create(\"packHalf2x16\", Keyword.UINT, Keyword.VEC2);\nBuiltinFunction._create(\"unpackHalf2x16\", Keyword.VEC2, Keyword.UINT);\n\nBuiltinFunction._create(\"length\", Keyword.FLOAT, EGenType.GenType);\nBuiltinFunction._create(\"distance\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"dot\", Keyword.FLOAT, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"cross\", Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"normalize\", EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"faceforward\", EGenType.GenType, EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"reflect\", EGenType.GenType, EGenType.GenType, EGenType.GenType);\nBuiltinFunction._create(\"refract\", EGenType.GenType, EGenType.GenType, EGenType.GenType, Keyword.FLOAT);\nBuiltinFunction._create(\"matrixCompMult\", EGenType.Mat, EGenType.Mat, EGenType.Mat);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4, Keyword.VEC4, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X3, Keyword.VEC3, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X2, Keyword.VEC2, Keyword.VEC3);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT2X4, Keyword.VEC4, Keyword.VEC2);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X2, Keyword.VEC2, Keyword.VEC4);\n\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT3X4, Keyword.VEC4, Keyword.VEC3);\nBuiltinFunction._create(\"outerProduct\", Keyword.MAT4X3, Keyword.VEC3, Keyword.VEC4);\n\nBuiltinFunction._create(\"transpose\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4, Keyword.MAT4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X3, Keyword.MAT3X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X2, Keyword.MAT2X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X2, Keyword.MAT2X4);\nBuiltinFunction._create(\"transpose\", Keyword.MAT2X4, Keyword.MAT4X2);\nBuiltinFunction._create(\"transpose\", Keyword.MAT3X4, Keyword.MAT4X3);\nBuiltinFunction._create(\"transpose\", Keyword.MAT4X3, Keyword.MAT3X4);\n\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT2);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT3);\nBuiltinFunction._create(\"determinant\", Keyword.FLOAT, Keyword.MAT4);\n\nBuiltinFunction._create(\"inverse\", Keyword.MAT2, Keyword.MAT2);\nBuiltinFunction._create(\"inverse\", Keyword.MAT3, Keyword.MAT3);\nBuiltinFunction._create(\"inverse\", Keyword.MAT4, Keyword.MAT4);\n\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"lessThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThan\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"greaterThanEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\n\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"equal\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.Vec, EGenType.Vec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.IntVec, EGenType.IntVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.UintVec, EGenType.UintVec);\nBuiltinFunction._create(\"notEqual\", EGenType.BoolVec, EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"any\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"all\", Keyword.BOOL, EGenType.BoolVec);\nBuiltinFunction._create(\"not\", EGenType.BoolVec, EGenType.BoolVec);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSampler2D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler3D, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, EGenType.GSamplerCube, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER2D_SHADOW, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC2, Keyword.SAMPLER_CUBE_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, EGenType.GSampler2DArray, Keyword.INT);\nBuiltinFunction._create(\"textureSize\", Keyword.IVEC3, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.INT);\n\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture2D\", Keyword.VEC4, Keyword.SAMPLER2D, Keyword.VEC2, Keyword.FLOAT);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER_CUBE_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture\", EGenType.GVec4, Keyword.SAMPLER2D_ARRAY, Keyword.VEC3);\n\nBuiltinFunction._create(\"texture\", Keyword.FLOAT, Keyword.SAMPLER2D_ARRAY_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProj\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4);\n\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureLod\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.FLOAT);\nBuiltinFunction._create(\"texture2DLodEXT\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3);\nBuiltinFunction._create(\"textureCube\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCube\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLod\", Keyword.SAMPLER_CUBE, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureCubeLodEXT\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC3, Keyword.IVEC2);\nBuiltinFunction._create(\n \"textureOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureOffset\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2D, Keyword.IVEC2, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler3D, Keyword.IVEC3, Keyword.INT);\nBuiltinFunction._create(\"texelFetch\", EGenType.GVec4, EGenType.GSampler2DArray, Keyword.IVEC3, Keyword.INT);\n\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.IVEC2,\n Keyword.INT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"texelFetchOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.IVEC3,\n Keyword.INT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.IVEC3,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.IVEC3);\n\nBuiltinFunction._create(\n \"textureProjOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.IVEC2,\n Keyword.FLOAT\n);\nBuiltinFunction._create(\"textureProjOffset\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.IVEC2);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\n\nBuiltinFunction._create(\n \"textureLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC3, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC4, Keyword.FLOAT);\nBuiltinFunction._create(\"textureProjLod\", Keyword.FLOAT, Keyword.SAMPLER2D_SHADOW, Keyword.VEC4, Keyword.FLOAT);\n\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjLodOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.FLOAT,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler2D, Keyword.VEC2, Keyword.VEC2, Keyword.VEC2);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSampler3D, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\nBuiltinFunction._create(\"textureGrad\", EGenType.GVec4, EGenType.GSamplerCube, Keyword.VEC3, Keyword.VEC3, Keyword.VEC3);\n\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER_CUBE_SHADOW,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\n\nBuiltinFunction._create(\n \"textureGrad\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2DArray,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_ARRAY_SHADOW,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3\n);\nBuiltinFunction._create(\n \"textureProjGrad\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2\n);\n\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC3,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler2D,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n EGenType.GVec4,\n EGenType.GSampler3D,\n Keyword.VEC4,\n Keyword.VEC3,\n Keyword.VEC3,\n Keyword.IVEC3\n);\nBuiltinFunction._create(\n \"textureProjGradOffset\",\n Keyword.FLOAT,\n Keyword.SAMPLER2D_SHADOW,\n Keyword.VEC4,\n Keyword.VEC2,\n Keyword.VEC2,\n Keyword.IVEC2\n);\nBuiltinFunction._createWithScop(\"dFdx\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"dFdy\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\nBuiltinFunction._createWithScop(\"fwidth\", EGenType.GenType, EShaderStage.FRAGMENT, EGenType.GenType);\n","import { GalaceanDataType } from \"../../common\";\nimport { Keyword } from \"../../common/enums/Keyword\";\nimport { EShaderStage } from \"../../common/enums/ShaderStage\";\n\nexport const BuiltinVariableTable: Map<string, BuiltinVariable> = new Map();\n\nexport class BuiltinVariable {\n type: GalaceanDataType;\n lexeme: string;\n scope: EShaderStage;\n\n private constructor(type: GalaceanDataType, lexeme: string, scope: EShaderStage) {\n this.type = type;\n this.lexeme = lexeme;\n this.scope = scope;\n }\n\n static createVariable(lexeme: string, type: GalaceanDataType, scope = EShaderStage.ALL) {\n const item = new BuiltinVariable(type, lexeme, scope);\n BuiltinVariableTable.set(lexeme, item);\n }\n\n static getVar(ident: string): BuiltinVariable {\n return BuiltinVariableTable.get(ident);\n }\n}\n\nBuiltinVariable.createVariable(\"gl_VertexID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_InstanceID\", Keyword.INT, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_Position\", Keyword.VEC4, EShaderStage.VERTEX);\nBuiltinVariable.createVariable(\"gl_PointSize\", Keyword.FLOAT, EShaderStage.VERTEX);\n\nBuiltinVariable.createVariable(\"gl_FragCoord\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FrontFacing\", Keyword.BOOL, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragDepth\", Keyword.FLOAT, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_PointCoord\", Keyword.VEC2, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragColor\", Keyword.VEC4, EShaderStage.FRAGMENT);\nBuiltinVariable.createVariable(\"gl_FragData\", Keyword.VEC4_ARRAY, EShaderStage.FRAGMENT);\n\nBuiltinVariable.createVariable(\"gl_MaxVertexAttribs\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexOutputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentInputVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxVertexTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxCombinedTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxTextureImageUnits\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxFragmentUniformVectors\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxDrawBuffers\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MinProgramTexelOffset\", Keyword.INT);\nBuiltinVariable.createVariable(\"gl_MaxProgramTexelOffset\", Keyword.INT);\n","import { TokenType } from \"../common\";\n\nexport type Terminal = TokenType;\n\nexport enum NoneTerminal {\n START = 2000,\n // galacean\n gs_shader_program,\n\n // glsl\n global_declaration,\n variable_declaration,\n variable_declaration_list,\n variable_declaration_statement,\n array_specifier_list,\n array_specifier,\n ext_builtin_type_specifier_nonarray,\n precision_specifier,\n variable_identifier,\n variable_identifier_node,\n primary_expression,\n postfix_expression,\n integer_expression,\n function_call,\n function_call_generic,\n function_call_header_no_parameters,\n function_call_header_with_parameters,\n function_call_parameter_list,\n function_call_header,\n function_identifier,\n constructor_identifier,\n unary_expression,\n unary_operator,\n multiplicative_expression,\n additive_expression,\n shift_expression,\n relational_expression,\n equality_expression,\n and_expression,\n inclusive_or_expression,\n exclusive_or_expression,\n logical_and_expression,\n logical_xor_expression,\n logical_or_expression,\n conditional_expression,\n assignment_expression,\n assignment_operator,\n expression,\n integer_constant_expression,\n integer_constant_expression_operator,\n declaration,\n function_prototype,\n function_declarator,\n function_header_with_parameters,\n function_header,\n function_parameter_list,\n parameter_declarator,\n parameter_declaration,\n parameter_qualifier,\n parameter_type_specifier,\n init_declarator_list,\n single_declaration,\n fully_specified_type,\n type_qualifier,\n single_type_qualifier,\n storage_qualifier,\n precision_qualifier,\n interpolation_qualifier,\n invariant_qualifier,\n type_specifier,\n type_specifier_nonarray,\n type_specifier_no_prec,\n basic_type,\n struct_specifier,\n struct_declaration_list,\n struct_declaration,\n layout_qualifier,\n struct_declarator_list,\n struct_declarator,\n identifier_list,\n decl_identifier,\n initializer,\n initializer_list,\n declaration_statement,\n simple_statement,\n compound_statement_no_scope,\n statement_with_scope,\n compound_statement,\n statement,\n statement_list,\n iteration_statement_no_new_scope,\n expression_statement,\n selection_statement,\n selection_rest_statement,\n condition,\n conditionopt,\n iteration_statement,\n for_init_statement,\n for_rest_statement,\n jump_statement,\n external_declaration,\n function_definition,\n field_selection,\n bool_constant,\n function_identifier_node,\n typename_identifier_node,\n scope_brace,\n scope_end_brace,\n\n // Macro\n macro_undef,\n macro_push_context,\n macro_pop_context,\n macro_elif_expression,\n macro_else_expression,\n global_macro_if_statement,\n global_macro_declaration,\n global_macro_branch,\n macro_struct_declaration,\n macro_struct_branch,\n macro_if_statement,\n macro_branch,\n macro_param_case_list,\n macro_param_block,\n macro_parameter_branch,\n macro_call_arg_case_list,\n macro_call_arg_block,\n macro_call_arg_branch,\n\n // Macro call\n macro_call_symbol,\n macro_call_function,\n\n _ignore\n}\n\nexport type GrammarSymbol = Terminal | NoneTerminal;\n\nexport type Derivation = GrammarSymbol[];\n","import { Logger } from \"@galacean/engine\";\nimport { IBaseSymbol } from \"./IBaseSymbol\";\n\nexport class SymbolTable<T extends IBaseSymbol> {\n private _table: Map<string, T[]> = new Map();\n\n insert(symbol: T, isInMacroBranch = false): void {\n symbol.isInMacroBranch = isInMacroBranch;\n\n const entry = this._table.get(symbol.ident) ?? [];\n for (let i = 0, n = entry.length; i < n; i++) {\n if (entry[i].isInMacroBranch) continue;\n if (entry[i].equal(symbol)) {\n Logger.warn(\"Replace symbol:\", symbol.ident);\n entry[i] = symbol;\n return;\n }\n }\n\n entry.push(symbol);\n this._table.set(symbol.ident, entry);\n }\n\n getSymbol(symbol: T, includeMacro = false): T | undefined {\n const entry = this._table.get(symbol.ident);\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) return item;\n }\n }\n }\n\n getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n out.length = 0;\n this._getSymbols(symbol, includeMacro, out);\n\n return out;\n }\n\n /**\n * @internal\n */\n _getSymbols(symbol: T, includeMacro = false, out: T[]): T[] {\n const entry = this._table.get(symbol.ident);\n\n if (entry) {\n for (let i = entry.length - 1; i >= 0; i--) {\n const item = entry[i];\n if (!includeMacro && item.isInMacroBranch) continue;\n if (item.equal(symbol)) out.push(item);\n }\n }\n\n return out;\n }\n}\n","import { IBaseSymbol } from \"./IBaseSymbol\";\nimport { SymbolTable } from \"./SymbolTable\";\n\nexport class SymbolTableStack<S extends IBaseSymbol, T extends SymbolTable<S>> {\n stack: T[] = [];\n\n /**\n * @internal\n */\n _macroLevel = 0;\n\n get scope(): T {\n return this.stack[this.stack.length - 1];\n }\n\n get isInMacroBranch(): boolean {\n return this._macroLevel > 0;\n }\n\n pushScope(scope: T): void {\n this.stack.push(scope);\n }\n\n clear(): void {\n this.stack.length = 0;\n }\n\n popScope(): T | undefined {\n return this.stack.pop();\n }\n\n insert(symbol: S): void {\n this.scope.insert(symbol, this.isInMacroBranch);\n }\n\n lookup(symbol: S, includeMacro = false): S | undefined {\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n const result = symbolTable.getSymbol(symbol, includeMacro);\n if (result) return result;\n }\n return undefined;\n }\n\n lookupAll(symbol: S, includeMacro = false, out: S[]): S[] {\n out.length = 0;\n for (let i = this.stack.length - 1; i >= 0; i--) {\n const symbolTable = this.stack[i];\n symbolTable._getSymbols(symbol, includeMacro, out);\n }\n return out;\n }\n}\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { ShaderPosition } from \"./common/ShaderPosition\";\nimport { ShaderRange } from \"./common/ShaderRange\";\n\nexport class GSError extends Error {\n static wrappingLineCount = 2;\n\n constructor(\n name: GSErrorName,\n message: string,\n public readonly location: ShaderRange | ShaderPosition,\n public readonly source: string,\n public readonly file?: string\n ) {\n super(message);\n this.name = name;\n }\n\n override toString(): string {\n let start: ShaderPosition, end: ShaderPosition;\n const { message, location, source } = this;\n if (!source) {\n return message;\n }\n\n if (location instanceof ShaderPosition) {\n start = end = location;\n } else {\n start = location.start;\n end = location.end;\n }\n const lines = source.split(\"\\n\");\n\n let diagnosticMessage = `${this.name}: ${message}\\n\\n`;\n\n // #if _VERBOSE\n const lineSplit = \"|···\";\n\n const wrappingLineCount = GSError.wrappingLineCount;\n for (let i = start.line - wrappingLineCount, n = end.line + wrappingLineCount; i <= n; i++) {\n const line = lines[i];\n diagnosticMessage += lineSplit + `${line}\\n`;\n\n if (i < start.line || i > end.line) continue;\n\n let remarkStart = 0;\n let remarkEnd = line.length;\n let paddingLength = lineSplit.length;\n if (i === start.line) {\n remarkStart = start.column;\n paddingLength += start.column;\n }\n if (i === end.line) {\n remarkEnd = end.column;\n }\n const remarkLength = Math.max(remarkEnd - remarkStart, 1);\n\n diagnosticMessage += \" \".repeat(paddingLength) + \"^\".repeat(remarkLength) + \"\\n\";\n }\n // #endif\n\n return diagnosticMessage;\n }\n}\n\nexport enum GSErrorName {\n PreprocessorError = \"PreprocessorError\",\n CompilationError = \"CompilationError\",\n ScannerError = \"ScannerError\",\n CompilationWarn = \"CompilationWarning\"\n}\n","import { GalaceanDataType } from \"../../common\";\nimport { ASTNode } from \"../AST\";\n\nexport class SymbolDataType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n","import { IBaseSymbol } from \"../../common/IBaseSymbol\";\nimport { GalaceanDataType, TypeAny } from \"../../common/types\";\nimport { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\n\nexport enum ESymbolType {\n VAR,\n FN,\n STRUCT,\n Any\n}\n\nexport type SymbolAstNode =\n | ASTNode.Initializer\n | ASTNode.StructSpecifier\n | ASTNode.FunctionDefinition\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\nexport class SymbolInfo implements IBaseSymbol {\n constructor(\n public ident: string,\n public type: ESymbolType,\n public astNode?: SymbolAstNode,\n public dataType?: SymbolDataType,\n public paramSignature?: GalaceanDataType[],\n public isInMacroBranch = false\n ) {}\n\n set(\n ident: string,\n symbolType: ESymbolType,\n astNode?: SymbolAstNode,\n dataType?: SymbolDataType,\n paramSignature?: GalaceanDataType[]\n ) {\n this.ident = ident;\n this.type = symbolType;\n this.astNode = astNode;\n this.dataType = dataType;\n this.paramSignature = paramSignature;\n }\n\n equal(symbol: SymbolInfo): boolean {\n if (symbol.type !== ESymbolType.Any && this.type !== symbol.type) return false;\n if (this.type === ESymbolType.FN) {\n if (!symbol.astNode && !symbol.paramSignature) return true;\n\n const params = (<ASTNode.FunctionDefinition>this.astNode).protoType.paramSig;\n const comparedParams = symbol.paramSignature ?? (<ASTNode.FunctionDefinition>symbol.astNode).protoType.paramSig;\n const length = params?.length;\n if (length !== comparedParams?.length) return false;\n for (let i = 0; i < length; i++) {\n const t1 = params[i],\n t2 = comparedParams[i];\n if (t1 === TypeAny || t2 === TypeAny) continue;\n if (t1 !== t2) return false;\n }\n return true;\n }\n return true;\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class FnSymbol extends SymbolInfo {\n declare astNode: ASTNode.FunctionDefinition;\n\n constructor(lexeme: string, astNode: ASTNode.FunctionDefinition) {\n const type = new SymbolDataType(\n astNode.protoType.returnType.type,\n astNode.protoType.returnType.typeSpecifier.lexeme\n );\n super(lexeme, ESymbolType.FN, astNode, type);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class StructSymbol extends SymbolInfo {\n declare astNode: ASTNode.StructSpecifier;\n\n constructor(lexeme: string, astNode: ASTNode.StructSpecifier) {\n super(lexeme, ESymbolType.STRUCT, astNode);\n }\n}\n","import { ASTNode } from \"../AST\";\nimport { SymbolDataType } from \"./SymbolDataType\";\nimport { ESymbolType, SymbolInfo } from \"./SymbolInfo\";\n\nexport class VarSymbol extends SymbolInfo {\n declare astNode:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration;\n\n readonly isGlobalVariable: boolean;\n\n constructor(\n ident: string,\n dataType: SymbolDataType,\n isGlobalVariable: boolean,\n initAst:\n | ASTNode.Initializer\n | ASTNode.ParameterDeclarator\n | ASTNode.InitDeclaratorList\n | ASTNode.VariableDeclaration\n ) {\n super(ident, ESymbolType.VAR, initAst, dataType);\n this.isGlobalVariable = isGlobalVariable;\n }\n}\n","import { SymbolInfo, SymbolTable } from \"../parser/symbolTable\";\nimport { ASTNode } from \"./AST\";\n\nexport class ShaderData {\n symbolTable: SymbolTable<SymbolInfo>;\n\n vertexMain: ASTNode.FunctionDefinition;\n fragmentMain: ASTNode.FunctionDefinition;\n\n globalPrecisions: ASTNode.PrecisionSpecifier[] = [];\n\n globalMacroDeclarations: ASTNode.GlobalDeclaration[] = [];\n\n getOuterGlobalMacroDeclarations(): ASTNode.GlobalDeclaration[] {\n return this.globalMacroDeclarations.filter((node) => node.parent instanceof ASTNode.GLShaderProgram);\n }\n}\n","import { ShaderRange } from \"../common\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { SymbolInfo } from \"../parser/symbolTable\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { NodeChild } from \"./types\";\n\nimport { Logger } from \"@galacean/engine\";\nimport { MacroDefineList } from \"../Preprocessor\";\n\nexport type TranslationRule<T = any> = (sa: SemanticAnalyzer, ...tokens: NodeChild[]) => T;\n\n/**\n * @internal\n * The semantic analyzer of `ShaderLab` compiler.\n * - Build symbol table\n * - Static analysis\n */\nexport default class SemanticAnalyzer {\n /**\n * @internal\n */\n static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n\n semanticStack: TreeNode[] = [];\n acceptRule?: TranslationRule = undefined;\n symbolTableStack: SymbolTableStack<SymbolInfo, SymbolTable<SymbolInfo>> = new SymbolTableStack();\n curFunctionInfo: {\n header?: ASTNode.FunctionDeclarator;\n returnStatement?: ASTNode.JumpStatement;\n } = {};\n private _shaderData = new ShaderData();\n private _translationRuleTable: Map<number /** production id */, TranslationRule> = new Map();\n\n private _macroDefineList: MacroDefineList;\n\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n get shaderData() {\n return this._shaderData;\n }\n\n get macroDefineList(): MacroDefineList {\n return this._macroDefineList;\n }\n\n constructor() {\n this.pushScope();\n }\n\n reset(macroDefineList: MacroDefineList) {\n this._macroDefineList = macroDefineList;\n this.semanticStack.length = 0;\n this._shaderData = new ShaderData();\n this.symbolTableStack.clear();\n this.pushScope();\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n }\n\n pushScope() {\n this.symbolTableStack.pushScope(new SymbolTable<SymbolInfo>());\n }\n\n popScope() {\n return this.symbolTableStack.popScope();\n }\n\n addTranslationRule(pid: number, rule: TranslationRule) {\n this._translationRuleTable.set(pid, rule);\n }\n\n getTranslationRule(pid: number) {\n return this._translationRuleTable.get(pid);\n }\n\n reportError(loc: ShaderRange, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n\n reportWarning(loc: ShaderRange, message: string): void {\n Logger.warn(new GSError(GSErrorName.CompilationWarn, message, loc, ShaderLab._processingPassText).toString());\n }\n}\n","import { GalaceanDataType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\n\nexport type TraceStackItem = NoneTerminal | BaseToken;\n\nexport class SymbolType {\n constructor(\n public type: GalaceanDataType,\n public typeLexeme: string,\n public arraySpecifier?: ASTNode.ArraySpecifier\n ) {}\n}\n\nexport class StructProp implements IParamInfo {\n constructor(\n public typeInfo: SymbolType,\n public ident: BaseToken,\n public mrtIndex?: number,\n public isInMacroBranch = false\n ) {}\n}\n\nexport type NodeChild = TreeNode | BaseToken;\n\nexport type IParamInfo = {\n ident?: BaseToken;\n typeInfo?: SymbolType;\n astNode?: ASTNode.ParameterDeclaration | ASTNode.MacroParamBlock;\n};\n","import { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { CodeGenVisitor } from \"../codeGen\";\nimport { ETokenType, GalaceanDataType, ShaderRange, TokenType, TypeAny } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { Preprocessor } from \"../Preprocessor\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BuiltinFunction, BuiltinVariable, NonGenericGalaceanType } from \"./builtin\";\nimport { NoneTerminal } from \"./GrammarSymbol\";\nimport SemanticAnalyzer from \"./SemanticAnalyzer\";\nimport { ShaderData } from \"./ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, VarSymbol } from \"./symbolTable\";\nimport { IParamInfo, NodeChild, StructProp, SymbolType } from \"./types\";\n\nfunction ASTNodeDecorator(nonTerminal: NoneTerminal) {\n return function <T extends { new (): TreeNode }>(ASTNode: T) {\n ASTNode.prototype.nt = nonTerminal;\n (<any>ASTNode).pool = ShaderLabUtils.createObjectPool(ASTNode);\n };\n}\n\nexport abstract class TreeNode implements IPoolElement {\n static pool: ClearableObjectPool<TreeNode & { set: (loc: ShaderRange, children: NodeChild[]) => void }>;\n\n /** The non-terminal in grammar. */\n nt: NoneTerminal;\n private _children: NodeChild[];\n private _parent: TreeNode;\n private _location: ShaderRange;\n private _codeCache: string;\n\n /**\n * Parent pointer for AST traversal.\n * @remarks\n * The parent pointer is only reliable after the entire AST has been constructed.\n * DO NOT rely on `parent` during the `semanticAnalyze` phase, as the AST may still be under construction.\n * It is safe to use `parent` during code generation or any phase after AST construction.\n */\n get parent(): TreeNode {\n return this._parent;\n }\n\n get children() {\n return this._children;\n }\n\n get location() {\n return this._location;\n }\n\n set(loc: ShaderRange, children: NodeChild[]): void {\n this._location = loc;\n this._children = children;\n for (const child of children) {\n if (child instanceof TreeNode) {\n child._parent = this;\n }\n }\n\n this.init();\n }\n\n init() {}\n\n dispose(): void {}\n\n setCache(code: string): string {\n this._codeCache = code;\n return code;\n }\n\n getCache(): string {\n return this._codeCache;\n }\n\n // Visitor pattern interface for code generation\n codeGen(visitor: CodeGenVisitor) {\n const code = visitor.defaultCodeGen(this.children);\n this.setCache(code);\n return code;\n }\n\n /**\n * Do semantic analyze right after the ast node is generated.\n */\n semanticAnalyze(sa: SemanticAnalyzer) {}\n}\n\nexport namespace ASTNode {\n type MacroExpression =\n | MacroPushContext\n | MacroPopContext\n | MacroElseExpression\n | MacroElifExpression\n | MacroUndef\n | BaseToken;\n\n export type ASTNodePool = ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >;\n\n export function _unwrapToken(node: NodeChild) {\n if (node instanceof BaseToken) {\n return node;\n }\n throw \"not token\";\n }\n\n export function get(pool: ASTNodePool, sa: SemanticAnalyzer, loc: ShaderRange, children: NodeChild[]) {\n const node = pool.get();\n node.set(loc, children);\n node.semanticAnalyze(sa);\n sa.semanticStack.push(node);\n }\n\n @ASTNodeDecorator(NoneTerminal._ignore)\n export class TrivialNode extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.scope_brace)\n export class ScopeBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.scope_end_brace)\n export class ScopeEndBrace extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.popScope();\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.jump_statement)\n export class JumpStatement extends TreeNode {\n isFragReturnStatement: boolean;\n\n override init(): void {\n this.isFragReturnStatement = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (ASTNode._unwrapToken(this.children![0]).type === Keyword.RETURN) {\n sa.curFunctionInfo.returnStatement = this;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitJumpStatement(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.conditionopt)\n export class ConditionOpt extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_rest_statement)\n export class ForRestStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.condition)\n export class Condition extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.for_init_statement)\n export class ForInitStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.iteration_statement)\n export class IterationStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.selection_statement)\n export class SelectionStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.expression_statement)\n export class ExpressionStatement extends TreeNode {}\n // #endif\n\n export abstract class ExpressionAstNode extends TreeNode {\n protected _type?: GalaceanDataType;\n set type(t: GalaceanDataType | undefined) {\n this._type = t;\n }\n get type() {\n return this._type ?? TypeAny;\n }\n\n override init(): void {\n this._type = undefined;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.initializer_list)\n export class InitializerList extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const init = this.children[0] as Initializer | InitializerList;\n this.type = init.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.initializer)\n export class Initializer extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AssignmentExpression>this.children[0]).type;\n } else {\n this.type = (<InitializerList>this.children[1]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.single_declaration)\n export class SingleDeclaration extends TreeNode {\n typeSpecifier: TypeSpecifier;\n arraySpecifier?: ArraySpecifier;\n\n override init(): void {\n this.typeSpecifier = undefined;\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const childrenLen = children.length;\n const fullyType = children[0] as FullySpecifiedType;\n const typeSpecifier = fullyType.typeSpecifier;\n this.typeSpecifier = typeSpecifier;\n this.arraySpecifier = typeSpecifier.arraySpecifier;\n\n const id = children[1] as BaseToken;\n\n let sm: VarSymbol;\n if (childrenLen === 2 || childrenLen === 4) {\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[3] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n } else {\n const arraySpecifier = children[2] as ArraySpecifier;\n // #if _VERBOSE\n if (arraySpecifier && this.arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n this.arraySpecifier = arraySpecifier;\n const symbolType = new SymbolType(fullyType.type, typeSpecifier.lexeme, this.arraySpecifier);\n const initializer = children[4] as Initializer;\n\n sm = new VarSymbol(id.lexeme, symbolType, false, initializer);\n }\n sa.symbolTableStack.insert(sm);\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitSingleDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.fully_specified_type)\n export class FullySpecifiedType extends TreeNode {\n typeSpecifier: TypeSpecifier;\n type: GalaceanDataType;\n\n override semanticAnalyze(_: SemanticAnalyzer): void {\n const children = this.children;\n this.typeSpecifier = (children.length === 1 ? children[0] : children[1]) as TypeSpecifier;\n this.type = this.typeSpecifier.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_qualifier)\n export class TypeQualifier extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.single_type_qualifier)\n export class SingleTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.qualifier = child.type as Keyword;\n this.lexeme = child.lexeme;\n } else {\n this.qualifier = (<BasicTypeQualifier>child).qualifier;\n this.lexeme = (<BasicTypeQualifier>child).lexeme;\n }\n }\n }\n\n abstract class BasicTypeQualifier extends TreeNode {\n qualifier: Keyword;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const token = this.children[0] as BaseToken;\n this.qualifier = token.type as Keyword;\n this.lexeme = token.lexeme;\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.storage_qualifier)\n export class StorageQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.precision_qualifier)\n export class PrecisionQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.interpolation_qualifier)\n export class InterpolationQualifier extends BasicTypeQualifier {}\n\n @ASTNodeDecorator(NoneTerminal.invariant_qualifier)\n export class InvariantQualifier extends BasicTypeQualifier {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.type_specifier)\n export class TypeSpecifier extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n arraySize?: number;\n isCustom: boolean;\n\n override init(): void {\n this.arraySize = undefined;\n }\n get arraySpecifier(): ArraySpecifier {\n return this.children[1] as ArraySpecifier;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const firstChild = children[0] as TypeSpecifierNonArray;\n this.type = firstChild.type;\n this.lexeme = firstChild.lexeme;\n this.arraySize = (children?.[1] as ArraySpecifier)?.size;\n this.isCustom = typeof this.type === \"string\";\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.array_specifier)\n export class ArraySpecifier extends TreeNode {\n size: number | undefined;\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const integerConstantExpr = this.children[1] as IntegerConstantExpression;\n this.size = integerConstantExpr.value;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression_operator)\n export class IntegerConstantExpressionOperator extends TreeNode {\n compute: (a: number, b: number) => number;\n lexeme: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const operator = this.children[0] as BaseToken;\n this.lexeme = operator.lexeme;\n switch (operator.type) {\n case ETokenType.PLUS:\n this.compute = (a, b) => a + b;\n break;\n case ETokenType.DASH:\n this.compute = (a, b) => a - b;\n break;\n case ETokenType.STAR:\n this.compute = (a, b) => a * b;\n break;\n case ETokenType.SLASH:\n this.compute = (a, b) => a / b;\n break;\n case ETokenType.PERCENT:\n this.compute = (a, b) => a % b;\n break;\n default:\n sa.reportError(operator.location, `not implemented operator ${operator.lexeme}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.integer_constant_expression)\n export class IntegerConstantExpression extends TreeNode {\n value?: number;\n\n override init(): void {\n this.value = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const child = this.children[0];\n if (child instanceof BaseToken) {\n this.value = Number(child.lexeme);\n }\n // #if _VERBOSE\n else {\n const id = child as VariableIdentifier;\n if (!ParserUtils.typeCompatible(Keyword.INT, id.typeInfo)) {\n sa.reportError(id.location, \"Invalid integer.\");\n return;\n }\n }\n // #endif\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.type_specifier_nonarray)\n export class TypeSpecifierNonArray extends TreeNode {\n type: GalaceanDataType;\n lexeme: string;\n\n override init(): void {\n const tt = this.children[0];\n if (tt instanceof BaseToken) {\n this.type = tt.lexeme;\n this.lexeme = tt.lexeme;\n } else {\n this.type = (tt as ExtBuiltinTypeSpecifierNonArray).type as GalaceanDataType;\n this.lexeme = (tt as ExtBuiltinTypeSpecifierNonArray).lexeme;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.ext_builtin_type_specifier_nonarray)\n export class ExtBuiltinTypeSpecifierNonArray extends TreeNode {\n type: TokenType;\n lexeme: string;\n\n override init(): void {\n const token = this.children[0] as BaseToken;\n this.type = token.type;\n this.lexeme = token.lexeme;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.init_declarator_list)\n export class InitDeclaratorList extends TreeNode {\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n let sm: VarSymbol;\n const children = this.children;\n const childrenLength = children.length;\n if (childrenLength === 1) {\n const { typeSpecifier, arraySpecifier } = children[0] as SingleDeclaration;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n } else {\n const initDeclList = children[0] as InitDeclaratorList;\n this.typeInfo = initDeclList.typeInfo;\n }\n\n if (childrenLength === 3 || childrenLength === 5) {\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, this.typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n } else if (childrenLength === 4 || childrenLength === 6) {\n const typeInfo = this.typeInfo;\n const arraySpecifier = this.children[3] as ArraySpecifier;\n // #if _VERBOSE\n if (typeInfo.arraySpecifier && arraySpecifier) {\n sa.reportError(arraySpecifier.location, \"Array of array is not supported.\");\n }\n // #endif\n typeInfo.arraySpecifier = arraySpecifier;\n const id = children[2] as BaseToken;\n sm = new VarSymbol(id.lexeme, typeInfo, false, this);\n sa.symbolTableStack.insert(sm);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.identifier_list)\n export class IdentifierList extends TreeNode {\n idList: BaseToken[] = [];\n\n override init(): void {\n this.idList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, idList: curIdList } = this;\n if (children.length === 2) {\n curIdList.push(children[1] as BaseToken);\n } else {\n const list = children[0] as IdentifierList;\n const id = children[2] as BaseToken;\n const listIdLength = list.idList.length;\n curIdList.length = listIdLength + 1;\n\n for (let i = 0; i < listIdLength; i++) {\n curIdList[i] = list.idList[i];\n }\n curIdList[listIdLength] = id;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.declaration)\n export class Declaration extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitDeclaration(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_prototype)\n export class FunctionProtoType extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterList: IParamInfo[];\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const declarator = this.children[0] as FunctionDeclarator;\n this.ident = declarator.ident;\n this.returnType = declarator.returnType;\n this.parameterList = declarator.parameterInfoList;\n this.paramSig = declarator.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_declarator)\n export class FunctionDeclarator extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n parameterInfoList: IParamInfo[] | undefined;\n paramSig: GalaceanDataType[] | undefined;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.curFunctionInfo.returnStatement = null;\n sa.curFunctionInfo.header = this;\n\n const children = this.children;\n const header = children[0] as FunctionHeader;\n const parameterList = children[1] as FunctionParameterList | undefined;\n this.ident = header.ident;\n this.returnType = header.returnType;\n this.parameterInfoList = parameterList?.parameterInfoList;\n this.paramSig = parameterList?.paramSig;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_header)\n export class FunctionHeader extends TreeNode {\n ident: BaseToken;\n returnType: FullySpecifiedType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.pushScope();\n const children = this.children;\n this.ident = children[1] as BaseToken;\n this.returnType = children[0] as FullySpecifiedType;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionHeader(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_parameter_list)\n export class FunctionParameterList extends TreeNode {\n parameterInfoList: IParamInfo[] = [];\n paramSig: GalaceanDataType[] = [];\n\n override init(): void {\n this.parameterInfoList.length = 0;\n this.paramSig.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const { parameterInfoList, paramSig } = this;\n\n if (children[0] instanceof ParameterDeclaration) {\n const decl = children[0];\n parameterInfoList.push({ ident: decl.ident, typeInfo: decl.typeInfo, astNode: decl });\n paramSig.push(decl.typeInfo?.type ?? TypeAny);\n } else if (children[2] instanceof ParameterDeclaration) {\n const list = children[0] as FunctionParameterList;\n const decl = children[2];\n\n parameterInfoList.push(...list.parameterInfoList, {\n ident: decl.ident,\n typeInfo: decl.typeInfo,\n astNode: decl\n });\n paramSig.push(...list.paramSig, decl.typeInfo?.type ?? TypeAny);\n } else if (children[0] instanceof FunctionParameterList && children[1] instanceof MacroParamBlock) {\n parameterInfoList.push(...children[0].parameterInfoList, { astNode: children[1] });\n paramSig.push(...children[0].paramSig, TypeAny);\n } else if (children[0] instanceof MacroParamBlock) {\n parameterInfoList.push({ astNode: children[0] });\n paramSig.push(TypeAny);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionParameterList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_param_case_list)\n export class MacroParamCaseList extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_param_block)\n export class MacroParamBlock extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_parameter_branch)\n export class MacroParameterBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.parameter_declaration)\n export class ParameterDeclaration extends TreeNode {\n // Some syntax is not recognized, eg.\n // `#define TEXTURE2D_SHADOW_PARAM(shadowMap) mediump sampler2D shadowMap`\n typeInfo?: SymbolType;\n ident?: BaseToken;\n\n override init(): void {\n this.typeInfo = undefined;\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n let parameterDeclarator: ParameterDeclarator | undefined;\n\n if (children[0] instanceof ParameterDeclarator) {\n parameterDeclarator = children[0];\n } else if (children[1] instanceof ParameterDeclarator) {\n parameterDeclarator = children[1];\n }\n\n if (parameterDeclarator) {\n this.typeInfo = parameterDeclarator.typeInfo;\n this.ident = parameterDeclarator.ident;\n const varSymbol = new VarSymbol(\n parameterDeclarator.ident.lexeme,\n parameterDeclarator.typeInfo,\n false,\n parameterDeclarator\n );\n sa.symbolTableStack.insert(varSymbol);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.parameter_declarator)\n export class ParameterDeclarator extends TreeNode {\n ident: BaseToken;\n typeInfo: SymbolType;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[1] as BaseToken;\n const typeSpecifier = children[0] as TypeSpecifier;\n const arraySpecifier = children[2] as ArraySpecifier;\n this.typeInfo = new SymbolType(typeSpecifier.type, typeSpecifier.lexeme, arraySpecifier);\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.simple_statement)\n export class SimpleStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.compound_statement)\n export class CompoundStatement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.compound_statement_no_scope)\n export class CompoundStatementNoScope extends TreeNode {}\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.statement)\n export class Statement extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.statement_list)\n export class StatementList extends TreeNode {\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitStatementList(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_definition)\n export class FunctionDefinition extends TreeNode {\n returnStatement?: ASTNode.JumpStatement;\n protoType: FunctionProtoType;\n statements: CompoundStatementNoScope;\n isInMacroBranch: boolean;\n\n override init(): void {\n this.returnStatement = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.protoType = children[0] as FunctionProtoType;\n this.statements = children[1] as CompoundStatementNoScope;\n\n sa.popScope();\n const sm = new FnSymbol(this.protoType.ident.lexeme, this);\n sa.symbolTableStack.insert(sm);\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n\n const { curFunctionInfo } = sa;\n const { header, returnStatement } = curFunctionInfo;\n if (header.returnType.type === Keyword.VOID) {\n if (returnStatement) {\n sa.reportError(header.returnType.location, \"Return in void function.\");\n }\n } else {\n if (!returnStatement) {\n sa.reportError(header.returnType.location, `No return statement found.`);\n } else {\n this.returnStatement = returnStatement;\n }\n }\n curFunctionInfo.header = undefined;\n curFunctionInfo.returnStatement = undefined;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionDefinition(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call)\n export class FunctionCall extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.type = (this.children[0] as FunctionCallGeneric).type;\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionCall(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_generic)\n export class FunctionCallGeneric extends ExpressionAstNode {\n fnSymbol: FnSymbol | StructSymbol | undefined;\n\n override init(): void {\n super.init();\n this.fnSymbol = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const functionIdentifier = this.children[0] as FunctionIdentifier;\n if (functionIdentifier.isBuiltin) {\n this.type = functionIdentifier.ident;\n } else {\n const fnIdent = <string>functionIdentifier.ident;\n\n let paramSig: NonGenericGalaceanType[] | undefined;\n if (this.children.length === 4) {\n const paramList = this.children[2];\n if (paramList instanceof FunctionCallParameterList) {\n paramSig = paramList.paramSig as any;\n }\n }\n // #if _VERBOSE\n const builtinFn = BuiltinFunction.getFn(fnIdent, paramSig);\n if (builtinFn) {\n this.type = builtinFn.realReturnType;\n return;\n }\n // #endif\n\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n lookupSymbol.set(fnIdent, ESymbolType.FN, undefined, undefined, paramSig);\n\n const fnSymbol = sa.symbolTableStack.lookup(lookupSymbol, true) as FnSymbol;\n\n if (!fnSymbol) {\n // #if _VERBOSE\n sa.reportError(this.location, `No overload function type found: ${functionIdentifier.ident}`);\n // #endif\n return;\n }\n this.type = fnSymbol?.dataType?.type;\n this.fnSymbol = fnSymbol;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_call_parameter_list)\n export class FunctionCallParameterList extends TreeNode {\n paramSig: GalaceanDataType[] = [];\n paramNodes: Array<AssignmentExpression | MacroCallArgBlock> = [];\n\n override init(): void {\n this.paramSig.length = 0;\n this.paramNodes.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, paramSig, paramNodes } = this;\n if (children[0] instanceof AssignmentExpression) {\n const expr = children[0];\n paramSig.push(expr.type);\n paramNodes.push(expr);\n } else if (children[2] instanceof AssignmentExpression) {\n const list = children[0] as FunctionCallParameterList;\n const decl = children[2] as AssignmentExpression;\n paramSig.push(...list.paramSig, decl.type);\n paramNodes.push(...list.paramNodes, decl);\n } else if (children[0] instanceof FunctionCallParameterList && children[1] instanceof MacroCallArgBlock) {\n paramSig.push(...children[0].paramSig, TypeAny);\n paramNodes.push(...children[0].paramNodes, children[1]);\n } else if (children[0] instanceof MacroCallArgBlock) {\n paramSig.push(TypeAny);\n paramNodes.push(children[0]);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_case_list)\n export class MacroCallArgCaseList extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_block)\n export class MacroCallArgBlock extends TreeNode {}\n @ASTNodeDecorator(NoneTerminal.macro_call_arg_branch)\n export class MacroCallArgBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.precision_specifier)\n export class PrecisionSpecifier extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (!sa.symbolTableStack.isInMacroBranch) {\n sa.shaderData.globalPrecisions.push(this);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.function_identifier)\n export class FunctionIdentifier extends TreeNode {\n ident: GalaceanDataType;\n lexeme: string;\n isBuiltin: boolean;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const typeSpecifier = this.children[0] as TypeSpecifier;\n\n this.ident = typeSpecifier.type;\n this.lexeme = typeSpecifier.lexeme;\n this.isBuiltin = typeof this.ident !== \"string\";\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitFunctionIdentifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.assignment_expression)\n export class AssignmentExpression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as ConditionalExpression;\n this.type = expr.type ?? TypeAny;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type ?? TypeAny;\n }\n }\n // #endif\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.assignment_operator)\n export class AssignmentOperator extends TreeNode {}\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.expression)\n export class Expression extends ExpressionAstNode {\n // #if _VERBOSE\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const expr = this.children[0] as AssignmentExpression;\n this.type = expr.type;\n } else {\n const expr = this.children[2] as AssignmentExpression;\n this.type = expr.type;\n }\n }\n // #endif\n }\n\n @ASTNodeDecorator(NoneTerminal.primary_expression)\n export class PrimaryExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n const id = this.children[0];\n if (id instanceof VariableIdentifier) {\n this.type = id.typeInfo ?? TypeAny;\n } else {\n switch ((<BaseToken>id).type) {\n case ETokenType.INT_CONSTANT:\n this._type = Keyword.INT;\n break;\n case ETokenType.FLOAT_CONSTANT:\n this.type = Keyword.FLOAT;\n break;\n case Keyword.True:\n case Keyword.False:\n this.type = Keyword.BOOL;\n break;\n }\n }\n } else {\n const expression = this.children[1] as Expression;\n this.type = expression.type;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.postfix_expression)\n export class PostfixExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n const child = this.children[0] as PrimaryExpression | FunctionCall;\n this.type = child.type;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitPostfixExpression(this));\n }\n }\n\n // #if _VERBOSE\n @ASTNodeDecorator(NoneTerminal.unary_operator)\n export class UnaryOperator extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.unary_expression)\n export class UnaryExpression extends ExpressionAstNode {\n override init(): void {\n this.type = (this.children[0] as PostfixExpression).type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.multiplicative_expression)\n export class MultiplicativeExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as UnaryExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as MultiplicativeExpression;\n // const exp2 = this.children[2] as UnaryExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.additive_expression)\n export class AdditiveExpression extends ExpressionAstNode {\n override init(): void {\n super.init();\n if (this.children.length === 1) {\n this.type = (this.children[0] as MultiplicativeExpression).type;\n // TODO: Temporarily remove type deduce due to generic function type issue.\n // } else {\n // const exp1 = this.children[0] as AdditiveExpression;\n // const exp2 = this.children[2] as MultiplicativeExpression;\n // if (exp1.type === exp2.type) {\n // this.type = exp1.type;\n // }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.shift_expression)\n export class ShiftExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const expr = this.children[0] as ExpressionAstNode;\n this.type = expr.type;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.relational_expression)\n export class RelationalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ShiftExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.equality_expression)\n export class EqualityExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<RelationalExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.and_expression)\n export class AndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.exclusive_or_expression)\n export class ExclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<AndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.inclusive_or_expression)\n export class InclusiveOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<ExclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.UINT;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_and_expression)\n export class LogicalAndExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<InclusiveOrExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_xor_expression)\n export class LogicalXorExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalAndExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.logical_or_expression)\n export class LogicalOrExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalXorExpression>this.children[0]).type;\n } else {\n this.type = Keyword.BOOL;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.conditional_expression)\n export class ConditionalExpression extends ExpressionAstNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n if (this.children.length === 1) {\n this.type = (<LogicalOrExpression>this.children[0]).type;\n }\n }\n }\n // #endif\n\n @ASTNodeDecorator(NoneTerminal.struct_specifier)\n export class StructSpecifier extends TreeNode {\n ident?: BaseToken;\n propList: StructProp[];\n macroExpressions: MacroExpression[];\n isInMacroBranch: boolean;\n\n override init(): void {\n this.ident = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (children.length === 6) {\n this.ident = children[1] as BaseToken;\n sa.symbolTableStack.insert(new StructSymbol(this.ident.lexeme, this));\n\n this.propList = (children[3] as StructDeclarationList).propList;\n this.macroExpressions = (children[3] as StructDeclarationList).macroExpressions;\n } else {\n this.propList = (children[2] as StructDeclarationList).propList;\n this.macroExpressions = (children[2] as StructDeclarationList).macroExpressions;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitStructSpecifier(this));\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration_list)\n export class StructDeclarationList extends TreeNode {\n propList: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.propList.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, propList, macroExpressions } = this;\n\n if (children.length === 1) {\n propList.push(...(children[0] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclaration).macroExpressions);\n } else {\n propList.push(...(children[0] as StructDeclarationList).propList);\n propList.push(...(children[1] as StructDeclaration).props);\n macroExpressions.push(...(children[0] as StructDeclarationList).macroExpressions);\n macroExpressions.push(...(children[1] as StructDeclaration).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declaration)\n export class StructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n private _typeSpecifier?: TypeSpecifier;\n private _declaratorList?: StructDeclaratorList;\n\n override init(): void {\n this._typeSpecifier = undefined;\n this._declaratorList = undefined;\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, props, macroExpressions } = this;\n\n if (children.length === 1) {\n const macroStructDeclaration = children[0] as MacroStructDeclaration;\n const macroProps = macroStructDeclaration.props;\n\n for (let i = 0, length = macroProps.length; i < length; i++) {\n macroProps[i].isInMacroBranch = true;\n props.push(macroProps[i]);\n }\n\n macroExpressions.push(...macroStructDeclaration.macroExpressions);\n\n return;\n }\n\n if (children.length === 3) {\n this._typeSpecifier = children[0] as TypeSpecifier;\n this._declaratorList = children[1] as StructDeclaratorList;\n } else {\n this._typeSpecifier = children[1] as TypeSpecifier;\n this._declaratorList = children[2] as StructDeclaratorList;\n }\n\n const firstChild = children[0];\n const { type, lexeme } = this._typeSpecifier;\n const isInMacroBranch = sa.symbolTableStack.isInMacroBranch;\n if (firstChild instanceof LayoutQualifier) {\n const declarator = children[2] as StructDeclarator;\n const typeInfo = new SymbolType(type, lexeme);\n const prop = new StructProp(typeInfo, declarator.ident, firstChild.index, isInMacroBranch);\n props.push(prop);\n } else {\n const declaratorList = this._declaratorList.declaratorList;\n const declaratorListLength = declaratorList.length;\n props.length = declaratorListLength;\n for (let i = 0; i < declaratorListLength; i++) {\n const declarator = declaratorList[i];\n const typeInfo = new SymbolType(type, lexeme, declarator.arraySpecifier);\n const prop = new StructProp(typeInfo, declarator.ident, undefined, isInMacroBranch);\n props[i] = prop;\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_declaration)\n export class MacroStructDeclaration extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n\n this.macroExpressions.push(children[0] as MacroPushContext);\n\n if (children.length === 3) {\n this.props.push(...(children[1] as StructDeclarationList).propList);\n this.props.push(...(children[2] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as StructDeclarationList).macroExpressions);\n this.macroExpressions.push(...(children[2] as MacroStructBranch).macroExpressions);\n } else {\n this.props.push(...(children[1] as MacroStructBranch).props);\n this.macroExpressions.push(...(children[1] as MacroStructBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_struct_branch)\n export class MacroStructBranch extends TreeNode {\n props: StructProp[] = [];\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.props.length = 0;\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n this.macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof StructDeclarationList) {\n this.props.push(...children[1].propList);\n this.macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof MacroStructBranch) {\n this.props.push(...lastNode.props);\n this.macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n this.macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.layout_qualifier)\n export class LayoutQualifier extends TreeNode {\n index: number;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.index = Number((<BaseToken>this.children[4]).lexeme);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator_list)\n export class StructDeclaratorList extends TreeNode {\n declaratorList: StructDeclarator[] = [];\n\n override init(): void {\n this.declaratorList.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children, declaratorList } = this;\n if (children.length === 1) {\n declaratorList.push(children[0] as StructDeclarator);\n } else {\n const list = children[0] as StructDeclaratorList;\n const declarator = children[1] as StructDeclarator;\n const listLength = list.declaratorList.length;\n declaratorList.length = listLength + 1;\n for (let i = 0; i < listLength; i++) {\n declaratorList[i] = list.declaratorList[i];\n }\n declaratorList[listLength] = declarator;\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.struct_declarator)\n export class StructDeclarator extends TreeNode {\n ident: BaseToken;\n arraySpecifier: ArraySpecifier | undefined;\n\n override init(): void {\n this.arraySpecifier = undefined;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n this.ident = children[0] as BaseToken;\n this.arraySpecifier = children[1] as ArraySpecifier;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration)\n export class VariableDeclaration extends TreeNode {\n type: FullySpecifiedType;\n isStatic: boolean;\n\n override init(): void {\n this.isStatic = false;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const type = children[0] as FullySpecifiedType;\n const ident = children[1] as BaseToken;\n this.type = type;\n const sm = new VarSymbol(ident.lexeme, new SymbolType(type.type, type.typeSpecifier.lexeme), true, this);\n\n sa.symbolTableStack.insert(sm);\n\n if (children.length === 4) {\n this.isStatic = true;\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n if (this.isStatic) {\n return super.codeGen(visitor);\n } else {\n return this.setCache(visitor.visitGlobalVariableDeclaration(this));\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_declaration_list)\n export class VariableDeclarationList extends TreeNode {\n type: FullySpecifiedType;\n variableDeclarations: VariableDeclaration[] = [];\n\n override init(): void {\n this.variableDeclarations.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const { children } = this;\n const length = children.length;\n const child = children[0] as VariableDeclaration | VariableDeclarationList;\n const type = child.type;\n this.type = type;\n\n if (child instanceof VariableDeclaration) {\n this.variableDeclarations.push(child);\n } else {\n this.variableDeclarations.push(...child.variableDeclarations);\n\n const ident = children[2] as BaseToken;\n\n const newVariable = VariableDeclaration.pool.get() as VariableDeclaration;\n if (length === 3) {\n // variable_declaration_list ',' id\n newVariable.set(ident.location, [type, ident]);\n } else {\n // variable_declaration_list ',' id array_specifier\n newVariable.set(ident.location, [type, ident, children[3] as ArraySpecifier]);\n }\n newVariable.semanticAnalyze(sa);\n this.variableDeclarations.push(newVariable);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.variable_identifier)\n export class VariableIdentifier extends TreeNode {\n // @todo: typeInfo may be multiple types\n typeInfo: GalaceanDataType;\n referenceGlobalSymbolNames: string[] = [];\n\n private _symbols: Array<VarSymbol | FnSymbol> = [];\n\n override init(): void {\n this.typeInfo = TypeAny;\n this.referenceGlobalSymbolNames.length = 0;\n this._symbols.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n const referenceGlobalSymbolNames = this.referenceGlobalSymbolNames;\n const symbols = this._symbols;\n const lookupSymbol = SemanticAnalyzer._lookupSymbol;\n let needFindNames: string[];\n\n if (child instanceof BaseToken) {\n needFindNames = [child.lexeme];\n } else {\n needFindNames = (child as MacroCallSymbol | MacroCallFunction).referenceSymbolNames;\n }\n\n for (let i = 0; i < needFindNames.length; i++) {\n const name = needFindNames[i];\n\n if (sa.macroDefineList[name]) {\n continue;\n }\n\n // only `macro_call` CFG can reference fnSymbols, others fnSymbols are referenced in `function_call_generic` CFG\n if (!(child instanceof BaseToken) && BuiltinFunction.isExist(name)) {\n continue;\n }\n\n const builtinVar = BuiltinVariable.getVar(name);\n if (builtinVar) {\n this.typeInfo = builtinVar.type;\n continue;\n }\n\n lookupSymbol.set(name, ESymbolType.Any);\n sa.symbolTableStack.lookupAll(lookupSymbol, true, symbols);\n\n if (!symbols.length) {\n // #if _VERBOSE\n sa.reportWarning(this.location, `Please sure the identifier \"${name}\" will be declared before used.`);\n // #endif\n } else {\n this.typeInfo = symbols[0].dataType?.type;\n const currentScopeSymbol = <VarSymbol | FnSymbol>sa.symbolTableStack.scope.getSymbol(lookupSymbol, true);\n if (currentScopeSymbol) {\n if (\n (currentScopeSymbol instanceof FnSymbol || currentScopeSymbol.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n } else if (\n symbols.some((s) => s instanceof FnSymbol || s.isGlobalVariable) &&\n referenceGlobalSymbolNames.indexOf(name) === -1\n ) {\n referenceGlobalSymbolNames.push(name);\n }\n }\n }\n }\n\n override codeGen(visitor: CodeGenVisitor): string {\n return this.setCache(visitor.visitVariableIdentifier(this));\n }\n\n getLexeme(visitor: CodeGenVisitor): string {\n const child = this.children[0] as BaseToken | MacroCallSymbol | MacroCallFunction;\n if (child instanceof BaseToken) {\n return child.lexeme;\n } else {\n return child.codeGen(visitor);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.gs_shader_program)\n export class GLShaderProgram extends TreeNode {\n shaderData: ShaderData;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n this.shaderData = sa.shaderData;\n this.shaderData.symbolTable = sa.symbolTableStack.scope;\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_declaration)\n export class GlobalDeclaration extends TreeNode {\n macroExpressions: Array<MacroExpression | MacroUndef | BaseToken> = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0];\n\n if (child instanceof MacroUndef || child instanceof GlobalMacroIfStatement || child instanceof BaseToken) {\n sa.shaderData.globalMacroDeclarations.push(this);\n\n if (child instanceof GlobalMacroIfStatement) {\n this.macroExpressions.push(...child.macroExpressions);\n } else {\n this.macroExpressions.push(child);\n }\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_undef)\n export class MacroUndef extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_push_context)\n export class MacroPushContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel++;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_pop_context)\n export class MacroPopContext extends TreeNode {\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n sa.symbolTableStack._macroLevel--;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_elif_expression)\n export class MacroElifExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_else_expression)\n export class MacroElseExpression extends TreeNode {\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(\"\\n\" + super.codeGen(visitor) + \"\\n\");\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_declaration)\n export class GlobalMacroDeclaration extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 1) {\n macroExpressions.push(...(children[0] as GlobalDeclaration).macroExpressions);\n } else {\n macroExpressions.push(...(children[0] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[1] as GlobalDeclaration).macroExpressions);\n }\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n const children = this.children as TreeNode[];\n if (children.length === 1) {\n return this.setCache(children[0].codeGen(visitor));\n } else {\n return this.setCache(`${children[0].codeGen(visitor)}\\n${children[1].codeGen(visitor)}`);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_if_statement)\n export class GlobalMacroIfStatement extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroExpressions = this.macroExpressions;\n\n if (children.length === 3) {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroDeclaration).macroExpressions);\n macroExpressions.push(...(children[2] as GlobalMacroBranch).macroExpressions);\n } else {\n macroExpressions.push(children[0] as MacroPushContext);\n macroExpressions.push(...(children[1] as GlobalMacroBranch).macroExpressions);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.global_macro_branch)\n export class GlobalMacroBranch extends TreeNode {\n macroExpressions: MacroExpression[] = [];\n\n override init(): void {\n this.macroExpressions.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const lastNode = children[children.length - 1];\n\n const macroExpressions = this.macroExpressions;\n macroExpressions.push(children[0] as MacroPopContext | MacroElseExpression | MacroElifExpression);\n\n if (children[1] instanceof GlobalMacroDeclaration) {\n macroExpressions.push(...children[1].macroExpressions);\n }\n\n if (lastNode instanceof GlobalMacroBranch) {\n macroExpressions.push(...lastNode.macroExpressions);\n }\n\n if (children.length > 1 && lastNode instanceof MacroPopContext) {\n macroExpressions.push(lastNode);\n }\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_if_statement)\n export class MacroIfStatement extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_branch)\n export class MacroBranch extends TreeNode {}\n\n @ASTNodeDecorator(NoneTerminal.macro_call_symbol)\n export class MacroCallSymbol extends TreeNode {\n referenceSymbolNames: string[] = [];\n macroName: string;\n\n override init(): void {\n this.referenceSymbolNames.length = 0;\n }\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const children = this.children;\n const macroName = (children[0] as BaseToken).lexeme;\n\n this.macroName = macroName;\n\n Preprocessor.getReferenceSymbolNames(sa.macroDefineList, macroName, this.referenceSymbolNames);\n }\n }\n\n @ASTNodeDecorator(NoneTerminal.macro_call_function)\n export class MacroCallFunction extends TreeNode {\n referenceSymbolNames: string[];\n macroName: string;\n\n override semanticAnalyze(sa: SemanticAnalyzer): void {\n const child = this.children[0] as MacroCallSymbol;\n\n this.referenceSymbolNames = child.referenceSymbolNames;\n this.macroName = child.macroName;\n }\n\n override codeGen(visitor: CodeGenVisitor) {\n return this.setCache(visitor.visitMacroCallFunction(this));\n }\n }\n}\n","import { ETokenType, GalaceanDataType, TypeAny } from \"./common\";\nimport { BaseToken as Token } from \"./common/BaseToken\";\nimport { TreeNode } from \"./parser/AST\";\nimport { GrammarSymbol, NoneTerminal } from \"./parser/GrammarSymbol\";\n// #if _VERBOSE\nimport { Keyword } from \"./common/enums/Keyword\";\nimport State from \"./lalr/State\";\n// #endif\n\nexport class ParserUtils {\n static unwrapNodeByType<T = TreeNode>(node: TreeNode, type: NoneTerminal): T | undefined {\n const child = node.children[0];\n if (child instanceof Token) return;\n if (child.nt === type) return child as T;\n return ParserUtils.unwrapNodeByType(child, type);\n }\n\n // #if _VERBOSE\n /**\n * Check if type `tb` is compatible with type `ta`.\n */\n static typeCompatible(ta: GalaceanDataType, tb: GalaceanDataType | undefined) {\n if (tb == undefined || tb === TypeAny) return true;\n if (ta === Keyword.INT) {\n return ta === tb || tb === Keyword.UINT;\n }\n return ta === tb;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n // #endif\n\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n /**\n * @internal\n */\n // #if _VERBOSE\n static printStatePool(logPath: string) {\n let output = \"\";\n\n console.log(\"========== Parser Pool ==========\");\n\n let count = 0;\n for (const state of State.pool.values()) {\n count++;\n let tmp = \"\";\n tmp += `${state.id}: \\n`.padEnd(4);\n for (const psItem of state.items) {\n tmp += \" \" + psItem.toString() + \"\\n\";\n }\n output += tmp;\n }\n\n console.log(\"state count:\", count);\n console.log(output);\n }\n // #endif\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ESymbolType, SymbolInfo } from \"../parser/symbolTable\";\nimport { StructProp } from \"../parser/types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\n/** @internal */\nexport class VisitorContext {\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _singleton: VisitorContext;\n static get context() {\n return this._singleton;\n }\n\n static reset() {\n if (!this._singleton) {\n this._singleton = new VisitorContext();\n }\n this._singleton.reset();\n }\n\n attributeStructs: ASTNode.StructSpecifier[] = [];\n attributeList: StructProp[] = [];\n varyingStructs: ASTNode.StructSpecifier[] = [];\n varyingList: StructProp[] = [];\n mrtStructs: ASTNode.StructSpecifier[] = [];\n mrtList: StructProp[] = [];\n\n stage: EShaderStage;\n stageEntry: string;\n\n _referencedAttributeList: Record<string, StructProp[]>;\n _referencedVaryingList: Record<string, StructProp[]>;\n _referencedMRTList: Record<string, StructProp[]>;\n _referencedGlobals: Record<string, SymbolInfo[]>;\n _referencedGlobalMacroASTs: TreeNode[] = [];\n\n _passSymbolTable: SymbolTable<SymbolInfo>;\n\n reset(resetAll = true) {\n if (resetAll) {\n this.attributeStructs.length = 0;\n this.attributeList.length = 0;\n this.varyingStructs.length = 0;\n this.varyingList.length = 0;\n this.mrtStructs.length = 0;\n this.mrtList.length = 0;\n }\n\n this._referencedAttributeList = Object.create(null);\n this._referencedVaryingList = Object.create(null);\n this._referencedMRTList = Object.create(null);\n this._referencedGlobals = Object.create(null);\n this._referencedGlobalMacroASTs.length = 0;\n }\n\n isAttributeStruct(type: string) {\n return this.attributeStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isVaryingStruct(type: string) {\n return this.varyingStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n isMRTStruct(type: string) {\n return this.mrtStructs.findIndex((item) => item.ident!.lexeme === type) !== -1;\n }\n\n referenceAttribute(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedAttributeList[lexeme]) return;\n\n const props = this.attributeList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced attribute not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedAttributeList[lexeme] = props;\n }\n\n referenceVarying(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedVaryingList[lexeme]) return;\n\n const props = this.varyingList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced varying not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedVaryingList[lexeme] = props;\n }\n\n referenceMRTProp(ident: BaseToken): Error | void {\n const lexeme = ident.lexeme;\n if (this._referencedMRTList[lexeme]) return;\n\n const props = this.mrtList.filter((item) => item.ident.lexeme === lexeme);\n if (!props.length) {\n return ShaderLabUtils.createGSError(\n `referenced mrt not found: ${lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n ident.location\n );\n }\n this._referencedMRTList[lexeme] = props;\n }\n\n referenceGlobal(ident: string, type: ESymbolType): void {\n if (this._referencedGlobals[ident]) return;\n\n this._referencedGlobals[ident] = [];\n\n const lookupSymbol = VisitorContext._lookupSymbol;\n lookupSymbol.set(ident, type);\n this._passSymbolTable.getSymbols(lookupSymbol, true, this._referencedGlobals[ident]);\n }\n}\n","import { IPoolElement } from \"@galacean/engine\";\n\nexport class TempArray<T> implements IPoolElement {\n array: Array<T> = new Array();\n\n dispose(): void {\n this.array.length = 0;\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { NoneTerminal } from \"../parser/GrammarSymbol\";\nimport { ESymbolType, FnSymbol } from \"../parser/symbolTable\";\nimport { NodeChild, StructProp } from \"../parser/types\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { VisitorContext } from \"./VisitorContext\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { Logger, ReturnableObjectPool } from \"@galacean/engine\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { TempArray } from \"../TempArray\";\nimport { ICodeSegment } from \"./types\";\n\n/**\n * @internal\n * The code generator\n */\nexport abstract class CodeGenVisitor {\n // #if _VERBOSE\n readonly errors: Error[] = [];\n // #endif\n\n abstract getAttributeProp(prop: StructProp): string;\n abstract getVaryingProp(prop: StructProp): string;\n abstract getMRTProp(prop: StructProp): string;\n\n protected static _tmpArrayPool = new ReturnableObjectPool(TempArray<string>, 10);\n\n defaultCodeGen(children: NodeChild[]) {\n const pool = CodeGenVisitor._tmpArrayPool;\n let ret = pool.get();\n ret.dispose();\n for (const child of children) {\n if (child instanceof BaseToken) {\n ret.array.push(child.lexeme);\n } else {\n ret.array.push(child.codeGen(this));\n }\n }\n pool.return(ret);\n return ret.array.join(\" \");\n }\n\n visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const children = node.children;\n const derivationLength = children.length;\n const context = VisitorContext.context;\n\n if (derivationLength === 3) {\n const postExpr = children[0] as ASTNode.PostfixExpression;\n const prop = children[2];\n\n if (prop instanceof BaseToken) {\n if (context.isAttributeStruct(<string>postExpr.type)) {\n const error = context.referenceAttribute(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isVaryingStruct(<string>postExpr.type)) {\n const error = context.referenceVarying(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n } else if (context.isMRTStruct(<string>postExpr.type)) {\n const error = context.referenceMRTProp(prop);\n // #if _VERBOSE\n if (error) {\n this.errors.push(<GSError>error);\n }\n // #endif\n return prop.lexeme;\n }\n\n return `${postExpr.codeGen(this)}.${prop.lexeme}`;\n } else {\n return `${postExpr.codeGen(this)}.${prop.codeGen(this)}`;\n }\n } else if (derivationLength === 4) {\n const identNode = children[0] as ASTNode.PostfixExpression;\n const indexNode = children[2] as ASTNode.Expression;\n const identLexeme = identNode.codeGen(this);\n const indexLexeme = indexNode.codeGen(this);\n if (identLexeme === \"gl_FragData\") {\n this._reportError(identNode.location, \"Please use MRT struct instead of gl_FragData.\");\n }\n return `${identLexeme}[${indexLexeme}]`;\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n for (let name of node.referenceGlobalSymbolNames) {\n VisitorContext.context.referenceGlobal(name, ESymbolType.Any);\n }\n\n return node.getLexeme(this);\n }\n\n visitFunctionCall(node: ASTNode.FunctionCall): string {\n const call = node.children[0] as ASTNode.FunctionCallGeneric;\n if (call.fnSymbol instanceof FnSymbol) {\n VisitorContext.context.referenceGlobal(call.fnSymbol.ident, ESymbolType.FN);\n\n const paramList = call.children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n const paramInfoList = call.fnSymbol.astNode.protoType.parameterList;\n\n const params = astNodes.filter((_, i) => {\n const typeInfo = paramInfoList?.[i]?.typeInfo;\n return (\n !typeInfo ||\n (!VisitorContext.context.isAttributeStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(typeInfo.typeLexeme))\n );\n });\n\n let paramsCode = \"\";\n\n for (let i = 0, length = params.length; i < length; i++) {\n const astNode = params[i];\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${call.fnSymbol.ident}(${paramsCode})`;\n }\n }\n\n return this.defaultCodeGen(node.children);\n }\n\n visitMacroCallFunction(node: ASTNode.MacroCallFunction): string {\n const children = node.children;\n const paramList = children[2];\n if (paramList instanceof ASTNode.FunctionCallParameterList) {\n const astNodes = paramList.paramNodes;\n\n const params = astNodes.filter((node) => {\n if (node instanceof ASTNode.AssignmentExpression) {\n const variableParam = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n node,\n NoneTerminal.variable_identifier\n );\n if (\n variableParam &&\n typeof variableParam.typeInfo === \"string\" &&\n (VisitorContext.context.isAttributeStruct(variableParam.typeInfo) ||\n VisitorContext.context.isVaryingStruct(variableParam.typeInfo) ||\n VisitorContext.context.isMRTStruct(variableParam.typeInfo))\n ) {\n return false;\n }\n }\n\n return true;\n });\n\n let paramsCode = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const node = params[i];\n const code = node.codeGen(this);\n\n if (node instanceof ASTNode.MacroCallArgBlock || i === 0) {\n paramsCode += code;\n } else {\n paramsCode += `, ${code}`;\n }\n }\n\n return `${node.macroName}(${paramsCode})`;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitStatementList(node: ASTNode.StatementList): string {\n const children = node.children as TreeNode[];\n if (children.length === 1) {\n return children[0].codeGen(this);\n } else {\n return `${children[0].codeGen(this)}\\n${children[1].codeGen(this)}`;\n }\n }\n\n visitSingleDeclaration(node: ASTNode.SingleDeclaration): string {\n const type = node.typeSpecifier.type;\n if (typeof type === \"string\") {\n VisitorContext.context.referenceGlobal(type, ESymbolType.STRUCT);\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitGlobalVariableDeclaration(node: ASTNode.VariableDeclaration): string {\n const children = node.children;\n const fullType = children[0];\n if (fullType instanceof ASTNode.FullySpecifiedType && fullType.typeSpecifier.isCustom) {\n VisitorContext.context.referenceGlobal(<string>fullType.type, ESymbolType.STRUCT);\n }\n return `uniform ${this.defaultCodeGen(children)}`;\n }\n\n visitDeclaration(node: ASTNode.Declaration): string {\n const { context } = VisitorContext;\n const children = node.children;\n const child = children[0];\n\n if (child instanceof ASTNode.InitDeclaratorList) {\n const typeLexeme = child.typeInfo.typeLexeme;\n if (context.isVaryingStruct(typeLexeme) || context.isMRTStruct(typeLexeme)) return \"\";\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionParameterList(node: ASTNode.FunctionParameterList): string {\n const params = node.parameterInfoList.filter(\n (item) =>\n !item.typeInfo ||\n (!VisitorContext.context.isAttributeStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isVaryingStruct(item.typeInfo.typeLexeme) &&\n !VisitorContext.context.isMRTStruct(item.typeInfo.typeLexeme))\n );\n\n let out = \"\";\n for (let i = 0, length = params.length; i < length; i++) {\n const item = params[i];\n const astNode = item.astNode;\n const code = astNode.codeGen(this);\n if (astNode instanceof ASTNode.MacroParamBlock || i === 0) {\n out += code;\n } else {\n out += `, ${code}`;\n }\n }\n\n return out;\n }\n\n visitFunctionHeader(node: ASTNode.FunctionHeader): string {\n const returnType = node.returnType.typeSpecifier.lexeme;\n if (VisitorContext.context.isVaryingStruct(returnType)) {\n return `void ${node.ident.lexeme}(`;\n }\n return this.defaultCodeGen(node.children);\n }\n\n visitJumpStatement(node: ASTNode.JumpStatement): string {\n const children = node.children;\n const cmd = children[0] as BaseToken;\n if (cmd.type === Keyword.RETURN) {\n const expr = children[1];\n if (expr instanceof ASTNode.Expression) {\n const returnVar = ParserUtils.unwrapNodeByType<ASTNode.VariableIdentifier>(\n expr,\n NoneTerminal.variable_identifier\n );\n if (VisitorContext.context.isVaryingStruct(<string>returnVar?.typeInfo)) {\n return \"\";\n }\n const returnFnCall = ParserUtils.unwrapNodeByType<ASTNode.FunctionCall>(expr, NoneTerminal.function_call);\n if (VisitorContext.context.isVaryingStruct(<string>returnFnCall?.type)) {\n return `${expr.codeGen(this)};`;\n }\n }\n }\n return this.defaultCodeGen(children);\n }\n\n visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n return this.defaultCodeGen(node.children);\n }\n\n visitStructSpecifier(node: ASTNode.StructSpecifier): string {\n const context = VisitorContext.context;\n const { varyingStructs, attributeStructs, mrtStructs } = context;\n const isVaryingStruct = varyingStructs.indexOf(node) !== -1;\n const isAttributeStruct = attributeStructs.indexOf(node) !== -1;\n const isMRTStruct = mrtStructs.indexOf(node) !== -1;\n\n if (isVaryingStruct && isAttributeStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and Attribute\");\n }\n\n if (isVaryingStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Varying and MRT\");\n }\n\n if (isAttributeStruct && isMRTStruct) {\n this._reportError(node.location, \"cannot use same struct as Attribute and MRT\");\n }\n\n if (isVaryingStruct || isAttributeStruct || isMRTStruct) {\n let result: ICodeSegment[] = [];\n\n result.push(\n ...node.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n for (const prop of node.propList) {\n const name = prop.ident.lexeme;\n if (isVaryingStruct && context._referencedVaryingList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getVaryingProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isAttributeStruct && context._referencedAttributeList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getAttributeProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n } else if (isMRTStruct && context._referencedMRTList[name]?.indexOf(prop) >= 0) {\n result.push({\n text: `${this.getMRTProp(prop)}\\n`,\n index: prop.ident.location.start.index\n });\n }\n }\n\n const text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\");\n\n return text;\n } else {\n return this.defaultCodeGen(node.children);\n }\n }\n\n visitFunctionDefinition(fnNode: ASTNode.FunctionDefinition): string {\n const fnName = fnNode.protoType.ident.lexeme;\n const context = VisitorContext.context;\n\n if (fnName == context.stageEntry) {\n const statements = fnNode.statements.codeGen(this);\n return `void main() ${statements}`;\n } else {\n return this.defaultCodeGen(fnNode.children);\n }\n }\n\n protected _reportError(loc: ShaderRange | ShaderPosition, message: string): void {\n // #if _VERBOSE\n this.errors.push(new GSError(GSErrorName.CompilationError, message, loc, ShaderLab._processingPassText));\n // #else\n Logger.error(message);\n // #endif\n }\n}\n","import { IShaderInfo } from \"@galacean/engine-design\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { ESymbolType, FnSymbol, StructSymbol, SymbolInfo } from \"../parser/symbolTable\";\nimport { CodeGenVisitor } from \"./CodeGenVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\n/**\n * @internal\n */\nexport abstract class GLESVisitor extends CodeGenVisitor {\n private _globalCodeArray: ICodeSegment[] = [];\n private static _lookupSymbol: SymbolInfo = new SymbolInfo(\"\", null);\n private static _serializedGlobalKey = new Set();\n\n reset(): void {\n const { _globalCodeArray: globalCodeArray } = this;\n globalCodeArray.length = 0;\n GLESVisitor._serializedGlobalKey.clear();\n }\n\n getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n for (const precision of data.globalPrecisions) {\n out.push({ text: precision.codeGen(this), index: precision.location.start.index });\n }\n }\n\n visitShaderProgram(node: ASTNode.GLShaderProgram, vertexEntry: string, fragmentEntry: string): IShaderInfo {\n // #if _VERBOSE\n this.errors.length = 0;\n // #endif\n VisitorContext.reset();\n this.reset();\n\n const shaderData = node.shaderData;\n VisitorContext.context._passSymbolTable = shaderData.symbolTable;\n\n const outerGlobalMacroDeclarations = shaderData.getOuterGlobalMacroDeclarations();\n\n return {\n vertex: this._vertexMain(vertexEntry, shaderData, outerGlobalMacroDeclarations),\n fragment: this._fragmentMain(fragmentEntry, shaderData, outerGlobalMacroDeclarations)\n };\n }\n\n private _vertexMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroDeclarations: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.VERTEX;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const symbolTable = data.symbolTable;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols.length) throw `no entry function found: ${entry}`;\n\n const { attributeStructs, attributeList, varyingStructs, varyingList } = context;\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const returnType = fnNode.protoType.returnType;\n\n if (typeof returnType.type === \"string\") {\n lookupSymbol.set(returnType.type, ESymbolType.STRUCT);\n const varyingSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!varyingSymbols.length) {\n this._reportError(returnType.location, `invalid varying struct: \"${returnType.type}\".`);\n } else {\n for (let i = 0; i < varyingSymbols.length; i++) {\n const varyingSymbol = varyingSymbols[i];\n const astNode = varyingSymbol.astNode;\n varyingStructs.push(astNode);\n for (const prop of astNode.propList) {\n varyingList.push(prop);\n }\n }\n }\n } else if (returnType.type !== Keyword.VOID) {\n this._reportError(returnType.location, \"vertex main entry can only return struct or void.\");\n }\n\n const paramList = fnNode.protoType.parameterList;\n const attributeParam = paramList?.[0];\n if (attributeParam) {\n const attributeType = attributeParam.typeInfo.type;\n if (typeof attributeType === \"string\") {\n lookupSymbol.set(attributeType, ESymbolType.STRUCT);\n const attributeSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!attributeSymbols.length) {\n this._reportError(attributeParam.astNode.location, `invalid attribute struct: \"${attributeType}\".`);\n } else {\n for (let i = 0; i < attributeSymbols.length; i++) {\n const attributeSymbol = attributeSymbols[i];\n const astNode = attributeSymbol.astNode;\n attributeStructs.push(astNode);\n for (const prop of astNode.propList) {\n attributeList.push(prop);\n }\n }\n }\n }\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.attributeStructs, globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroDeclarations, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n VisitorContext.context.reset(false);\n this.reset();\n\n return globalCode;\n }\n\n private _fragmentMain(\n entry: string,\n data: ShaderData,\n outerGlobalMacroStatements: ASTNode.GlobalDeclaration[]\n ): string {\n const context = VisitorContext.context;\n context.stage = EShaderStage.FRAGMENT;\n context.stageEntry = entry;\n\n const lookupSymbol = GLESVisitor._lookupSymbol;\n const { symbolTable } = data;\n lookupSymbol.set(entry, ESymbolType.FN);\n const fnSymbols = <FnSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!fnSymbols?.length) throw `no entry function found: ${entry}`;\n\n fnSymbols.forEach((fnSymbol) => {\n const fnNode = fnSymbol.astNode;\n const { returnStatement } = fnNode;\n\n if (returnStatement) {\n returnStatement.isFragReturnStatement = true;\n }\n\n const { type: returnDataType, location: returnLocation } = fnNode.protoType.returnType;\n if (typeof returnDataType === \"string\") {\n lookupSymbol.set(returnDataType, ESymbolType.STRUCT);\n const mrtSymbols = <StructSymbol[]>symbolTable.getSymbols(lookupSymbol, true, []);\n if (!mrtSymbols.length) {\n this._reportError(returnLocation, `invalid mrt struct: ${returnDataType}`);\n } else {\n for (let i = 0; i < mrtSymbols.length; i++) {\n const mrtSymbol = mrtSymbols[i];\n const astNode = mrtSymbol.astNode;\n context.mrtStructs.push(astNode);\n for (const prop of astNode.propList) {\n context.mrtList.push(prop);\n }\n }\n }\n } else if (returnDataType !== Keyword.VOID && returnDataType !== Keyword.VEC4) {\n this._reportError(returnLocation, \"fragment main entry can only return struct or vec4.\");\n }\n });\n\n const globalCodeArray = this._globalCodeArray;\n VisitorContext.context.referenceGlobal(entry, ESymbolType.FN);\n\n this._getGlobalSymbol(globalCodeArray);\n this._getCustomStruct(context.varyingStructs, globalCodeArray);\n this._getCustomStruct(context.mrtStructs, globalCodeArray);\n this._getGlobalMacroDeclarations(outerGlobalMacroStatements, globalCodeArray);\n this.getOtherGlobal(data, globalCodeArray);\n\n const globalCode = globalCodeArray\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n\n context.reset();\n this.reset();\n\n return globalCode;\n }\n\n private _getGlobalSymbol(out: ICodeSegment[]): void {\n const { _referencedGlobals } = VisitorContext.context;\n\n const lastLength = Object.keys(_referencedGlobals).length;\n if (lastLength === 0) return;\n\n for (const ident in _referencedGlobals) {\n if (GLESVisitor._serializedGlobalKey.has(ident)) continue;\n GLESVisitor._serializedGlobalKey.add(ident);\n\n const symbols = _referencedGlobals[ident];\n for (let i = 0; i < symbols.length; i++) {\n const sm = symbols[i];\n const text = sm.astNode.codeGen(this) + (sm.type === ESymbolType.VAR ? \";\" : \"\");\n if (!sm.isInMacroBranch) {\n out.push({\n text,\n index: sm.astNode.location.start.index\n });\n }\n }\n }\n\n if (Object.keys(_referencedGlobals).length !== lastLength) {\n this._getGlobalSymbol(out);\n }\n }\n\n private _getCustomStruct(structNodes: ASTNode.StructSpecifier[], out: ICodeSegment[]): void {\n for (const node of structNodes) {\n const text = node.codeGen(this);\n\n if (!node.isInMacroBranch) {\n out.push({ text, index: node.location.start.index });\n }\n }\n }\n\n private _getGlobalMacroDeclarations(macros: ASTNode.GlobalDeclaration[], out: ICodeSegment[]): void {\n const context = VisitorContext.context;\n const referencedGlobals = context._referencedGlobals;\n const referencedGlobalMacroASTs = context._referencedGlobalMacroASTs;\n referencedGlobalMacroASTs.length = 0;\n\n for (const symbols of Object.values(referencedGlobals)) {\n for (const symbol of symbols) {\n if (symbol.isInMacroBranch) {\n referencedGlobalMacroASTs.push(symbol.astNode);\n }\n }\n }\n\n for (const macro of macros) {\n let text: string;\n const child = macro.children[0];\n\n if (child instanceof ASTNode.GlobalMacroIfStatement) {\n let result: ICodeSegment[] = [];\n result.push(\n ...macro.macroExpressions.map((item) => ({\n text: item instanceof BaseToken ? item.lexeme : item.codeGen(this),\n index: item.location.start.index\n }))\n );\n\n this._visitGlobalMacroIfStatement(child, result);\n\n text = result\n .sort((a, b) => a.index - b.index)\n .map((item) => item.text)\n .join(\"\\n\");\n } else {\n text = macro.codeGen(this);\n }\n\n out.push({\n text,\n index: macro.location.start.index\n });\n }\n }\n\n private _visitGlobalMacroIfStatement(node: TreeNode, out: ICodeSegment[]): void {\n const children = node.children;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child instanceof ASTNode.PrecisionSpecifier) {\n out.push({\n text: child.codeGen(this),\n index: child.location.start.index\n });\n } else if (child instanceof ASTNode.FunctionDefinition) {\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.StructSpecifier) {\n const context = VisitorContext.context;\n const stage = context.stage;\n if (\n VisitorContext.context._referencedGlobalMacroASTs.indexOf(child) !== -1 ||\n (stage === EShaderStage.VERTEX\n ? context.isAttributeStruct(child.ident?.lexeme) || context.isVaryingStruct(child.ident?.lexeme)\n : context.isVaryingStruct(child.ident?.lexeme) || context.isMRTStruct(child.ident?.lexeme))\n ) {\n out.push({\n text: child.getCache(), // code has generated in `_getGlobalSymbol` or `_getCustomStruct`\n index: child.location.start.index\n });\n }\n } else if (child instanceof ASTNode.VariableDeclarationList) {\n const variableDeclarations = child.variableDeclarations;\n for (let i = 0; i < variableDeclarations.length; i++) {\n const variableDeclaration = variableDeclarations[i];\n if (VisitorContext.context._referencedGlobalMacroASTs.indexOf(variableDeclaration) !== -1) {\n out.push({\n text: variableDeclaration.getCache() + \";\", // code has generated in `_getGlobalSymbol`\n index: variableDeclaration.location.start.index\n });\n }\n }\n }\n\n if (child instanceof TreeNode) {\n this._visitGlobalMacroIfStatement(child, out);\n }\n }\n }\n}\n","import { BaseToken } from \"../common/BaseToken\";\nimport { ASTNode } from \"../parser/AST\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nexport class GLES100Visitor extends GLESVisitor {\n private static _singleton: GLES100Visitor;\n static getVisitor(): GLES100Visitor {\n if (!this._singleton) {\n this._singleton = new GLES100Visitor();\n }\n return this._singleton;\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `attribute ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n return `varying ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(): string {\n return null;\n }\n\n override visitPostfixExpression(node: ASTNode.PostfixExpression): string {\n const { children } = node;\n const postExpr = children[0];\n const { context } = VisitorContext;\n if (postExpr instanceof ASTNode.PostfixExpression && context.isMRTStruct(<string>postExpr.type)) {\n const propReferenced = children[2] as BaseToken;\n const prop = context.mrtList.find((item) => item.ident.lexeme === propReferenced.lexeme);\n if (!prop) {\n this._reportError(propReferenced.location, `not found mrt property: ${propReferenced.lexeme}`);\n return \"\";\n }\n return `gl_FragData[${prop.mrtIndex!}]`;\n }\n return super.visitPostfixExpression(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n const expression = node.children[1] as ASTNode.Expression;\n return `gl_FragColor = ${expression.codeGen(this)}`;\n }\n return super.visitJumpStatement(node);\n }\n}\n","import { EShaderStage } from \"../common/enums/ShaderStage\";\nimport { ASTNode } from \"../parser/AST\";\nimport { ShaderData } from \"../parser/ShaderInfo\";\nimport { StructProp } from \"../parser/types\";\nimport { GLESVisitor } from \"./GLESVisitor\";\nimport { ICodeSegment } from \"./types\";\nimport { VisitorContext } from \"./VisitorContext\";\n\nconst V3_GL_FragColor = \"GS_glFragColor\";\n\nexport class GLES300Visitor extends GLESVisitor {\n private static _singleton: GLES300Visitor;\n static getVisitor(): GLES300Visitor {\n if (!this._singleton) {\n this._singleton = new GLES300Visitor();\n }\n return this._singleton;\n }\n\n private _otherCodeArray: ICodeSegment[] = [];\n private _fragColorVariableRegistered = false;\n\n override reset(): void {\n super.reset();\n\n this._otherCodeArray.length = 0;\n this._fragColorVariableRegistered = false;\n }\n\n override getOtherGlobal(data: ShaderData, out: ICodeSegment[]): void {\n super.getOtherGlobal(data, out);\n\n for (let i = 0, n = this._otherCodeArray.length; i < n; i++) {\n out.push(this._otherCodeArray[i]);\n }\n }\n\n override getAttributeProp(prop: StructProp): string {\n return `in ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getVaryingProp(prop: StructProp): string {\n const qualifier = VisitorContext.context.stage === EShaderStage.FRAGMENT ? \"in\" : \"out\";\n return `${qualifier} ${prop.typeInfo.typeLexeme} ${prop.ident.lexeme};`;\n }\n\n override getMRTProp(prop: StructProp): string {\n return `layout(location = ${prop.mrtIndex}) out vec4 ${prop.ident.lexeme};`;\n }\n\n override visitFunctionIdentifier(node: ASTNode.FunctionIdentifier): string {\n const children = node.children;\n const typeSpecifier = children[0] as ASTNode.TypeSpecifier;\n if (typeSpecifier.children.length !== 1) {\n return this.defaultCodeGen(children);\n }\n let ident = node.lexeme;\n switch (node.ident) {\n case \"texture2D\":\n case \"textureCube\":\n ident = \"texture\";\n break;\n case \"texture2DProj\":\n ident = \"textureProj\";\n break;\n case \"texture2DLodEXT\":\n case \"textureCubeLodEXT\":\n ident = \"textureLod\";\n break;\n case \"texture2DGradEXT\":\n case \"textureCubeGradEXT\":\n ident = \"textureGrad\";\n break;\n case \"texture2DProjLodEXT\":\n ident = \"textureProjLod\";\n break;\n case \"texture2DProjGradEXT\":\n ident = \"textureProjGrad\";\n break;\n case \"gl_FragDepthEXT\":\n ident = \"gl_FragDepth\";\n break;\n }\n return ident;\n }\n\n override visitVariableIdentifier(node: ASTNode.VariableIdentifier): string {\n const { context } = VisitorContext;\n if (context.stage === EShaderStage.FRAGMENT && node.getLexeme(this) === \"gl_FragColor\") {\n if (context.mrtStructs.length) {\n this._reportError(node.location, \"gl_FragColor cannot be used with MRT (Multiple Render Targets).\");\n return;\n }\n this._registerFragColorVariable();\n return V3_GL_FragColor;\n }\n return super.visitVariableIdentifier(node);\n }\n\n override visitJumpStatement(node: ASTNode.JumpStatement): string {\n if (node.isFragReturnStatement) {\n if (VisitorContext.context.mrtStructs.length) {\n return \"\";\n }\n this._registerFragColorVariable();\n\n const expression = node.children[1] as ASTNode.Expression;\n return `${V3_GL_FragColor} = ${expression.codeGen(this)};`;\n }\n return super.visitJumpStatement(node);\n }\n\n private _registerFragColorVariable() {\n if (this._fragColorVariableRegistered) return;\n this._otherCodeArray.push({\n text: `out vec4 ${V3_GL_FragColor};`,\n index: 0\n });\n this._fragColorVariableRegistered = true;\n }\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \".\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { BaseToken } from \"./BaseToken\";\n\nexport type OnToken = (token: BaseToken, scanner: BaseLexer) => void;\n\n/**\n * @internal\n */\nexport abstract class BaseLexer {\n static isDigit(charCode: number): boolean {\n return charCode >= 48 && charCode <= 57; // 0-9\n }\n\n // Check if character is alphabetic or underscore (valid word start)\n static isAlpha(charCode: number): boolean {\n return (\n charCode === 95 || // _\n (charCode >= 65 && charCode <= 90) || // A-Z\n (charCode >= 97 && charCode <= 122) // a-z\n );\n }\n\n // Check if character is alphanumeric (alpha + digit)\n static isAlnum(charCode: number): boolean {\n return BaseLexer.isAlpha(charCode) || BaseLexer.isDigit(charCode);\n }\n\n static isPreprocessorStartChar(charCode: number): boolean {\n return charCode === 35; // #\n }\n\n static isWhiteSpaceChar(charCode: number, includeBreak: boolean): boolean {\n // Space || Tab\n if (charCode === 32 || charCode === 9) {\n return true;\n }\n return includeBreak && (charCode === 10 || charCode === 13); // \\n || \\r\n }\n\n protected _currentIndex = 0;\n protected _source: string;\n\n // #if _VERBOSE\n protected _column = 0;\n protected _line = 0;\n // #endif\n\n get currentIndex(): number {\n return this._currentIndex;\n }\n\n get source(): string {\n return this._source;\n }\n\n // #if _VERBOSE\n get line() {\n return this._line;\n }\n\n get column() {\n return this._column;\n }\n // #endif\n\n constructor(source?: string) {\n this._source = source;\n }\n\n setSource(source: string): void {\n this._source = source;\n this._currentIndex = 0;\n // #if _VERBOSE\n this._line = this._column = 0;\n // #endif\n }\n\n getShaderPosition(backOffset = 0): ShaderPosition {\n return ShaderLab.createPosition(\n this._currentIndex - backOffset,\n // #if _VERBOSE\n this._line,\n this._column - backOffset\n // #endif\n );\n }\n\n isEnd(): boolean {\n return this._currentIndex >= this._source.length;\n }\n\n getCurChar(): string {\n return this._source[this._currentIndex];\n }\n\n getCurCharCode(): number {\n return this._source.charCodeAt(this._currentIndex);\n }\n\n advance(count: number): void {\n // #if _VERBOSE\n const source = this._source;\n const startIndex = this._currentIndex;\n for (let i = 0; i < count; i++) {\n if (source[startIndex + i] === \"\\n\") {\n this._line += 1;\n this._column = 0;\n } else {\n this._column += 1;\n }\n }\n // #endif\n this._currentIndex += count;\n }\n\n skipSpace(includeLineBreak: boolean): void {\n while (BaseLexer.isWhiteSpaceChar(this.getCurCharCode(), includeLineBreak)) {\n this.advance(1);\n }\n }\n\n skipCommentsAndSpace(): void {\n const source = this._source;\n const length = source.length;\n let index = this._currentIndex;\n\n while (index < length) {\n // Skip whitespace\n while (index < length && BaseLexer.isWhiteSpaceChar(source.charCodeAt(index), true)) {\n index++;\n }\n\n // Check for comments: 47 is '/'\n if (index + 1 >= length || source.charCodeAt(index) !== 47) break;\n\n const nextChar = source.charCodeAt(index + 1);\n if (nextChar === 47) {\n // Single line comment: 10 is '\\n', 13 is '\\r'\n index += 2;\n while (index < length) {\n const charCode = source.charCodeAt(index);\n if (charCode === 10 || charCode === 13) break;\n index++;\n }\n } else if (nextChar === 42) {\n // Multi-line comment: 42 is '*'\n index += 2;\n while (index + 1 < length && !(source.charCodeAt(index) === 42 && source.charCodeAt(index + 1) === 47)) {\n index++;\n }\n index += 2; // Skip '*/'\n } else {\n break; // Not a comment, stop\n }\n }\n\n this.advance(index - this._currentIndex);\n }\n\n peek(to: number): string {\n const offset = this._currentIndex;\n return this._source.substring(offset, offset + to);\n }\n\n scanLexeme(lexeme: string): void {\n this.skipCommentsAndSpace();\n const length = lexeme.length;\n const peek = this.peek(length);\n if (peek !== lexeme) {\n this.throwError(this.getShaderPosition(0), `Expect lexeme \"${lexeme}\", but got \"${peek}\"`);\n }\n this.advance(length);\n }\n\n scanTwoExpectedLexemes(lexeme1: string, lexeme2: string): string | null {\n this.skipCommentsAndSpace();\n\n // Check first lexeme\n if (this.peek(lexeme1.length) === lexeme1) {\n this.advance(lexeme1.length);\n return lexeme1;\n }\n\n // Check second lexeme\n if (this.peek(lexeme2.length) === lexeme2) {\n this.advance(lexeme2.length);\n return lexeme2;\n }\n\n return null;\n }\n\n throwError(pos: ShaderPosition | ShaderRange, ...msgs: any[]) {\n const error = ShaderLabUtils.createGSError(msgs.join(\" \"), GSErrorName.ScannerError, this._source, pos);\n // #if _VERBOSE\n Logger.error(error!.toString());\n // #endif\n throw error;\n }\n\n scanPairedChar(left: string, right: string, balanced: boolean, skipLeading: boolean): string {\n if (!skipLeading) {\n this.scanLexeme(left);\n }\n\n const start = this._currentIndex;\n const source = this._source;\n const sourceLength = source.length;\n\n let currentIndex = this._currentIndex;\n if (balanced) {\n let level = 1;\n while (currentIndex < sourceLength) {\n const currentChar = source[currentIndex];\n if (currentChar === right && --level === 0) {\n break;\n } else if (currentChar === left) {\n level++;\n }\n currentIndex++;\n }\n } else {\n while (currentIndex < sourceLength) {\n if (source[currentIndex] === right) {\n break;\n }\n currentIndex++;\n }\n }\n\n this.advance(currentIndex + 1 - this._currentIndex);\n\n return source.substring(start, currentIndex);\n }\n\n abstract scanToken(onToken?: OnToken): void;\n}\n","import { ETokenType } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ShaderLab } from \"../ShaderLab\";\n\n/**\n * The Lexer of ShaderLab Compiler\n */\nexport class Lexer extends BaseLexer {\n private static _lexemeTable = <Record<string, Keyword>>{\n const: Keyword.CONST,\n bool: Keyword.BOOL,\n float: Keyword.FLOAT,\n double: Keyword.DOUBLE,\n int: Keyword.INT,\n uint: Keyword.UINT,\n break: Keyword.BREAK,\n continue: Keyword.CONTINUE,\n do: Keyword.DO,\n else: Keyword.ELSE,\n for: Keyword.FOR,\n if: Keyword.IF,\n while: Keyword.WHILE,\n discard: Keyword.DISCARD,\n return: Keyword.RETURN,\n bvec2: Keyword.BVEC2,\n bvec3: Keyword.BVEC3,\n bvec4: Keyword.BVEC4,\n ivec2: Keyword.IVEC2,\n ivec3: Keyword.IVEC3,\n ivec4: Keyword.IVEC4,\n uvec2: Keyword.UVEC2,\n uvec3: Keyword.UVEC3,\n uvec4: Keyword.UVEC4,\n vec2: Keyword.VEC2,\n vec3: Keyword.VEC3,\n vec4: Keyword.VEC4,\n mat2: Keyword.MAT2,\n mat3: Keyword.MAT3,\n mat4: Keyword.MAT4,\n in: Keyword.IN,\n out: Keyword.OUT,\n inout: Keyword.INOUT,\n sampler2D: Keyword.SAMPLER2D,\n samplerCube: Keyword.SAMPLER_CUBE,\n sampler3D: Keyword.SAMPLER3D,\n sampler2DShadow: Keyword.SAMPLER2D_SHADOW,\n samplerCubeShadow: Keyword.SAMPLER_CUBE_SHADOW,\n sampler2DArray: Keyword.SAMPLER2D_ARRAY,\n sampler2DArrayShadow: Keyword.SAMPLER2D_ARRAY_SHADOW,\n isampler2D: Keyword.I_SAMPLER2D,\n isampler3D: Keyword.I_SAMPLER3D,\n isamplerCube: Keyword.I_SAMPLER_CUBE,\n isampler2DArray: Keyword.I_SAMPLER2D_ARRAY,\n usampler2D: Keyword.U_SAMPLER2D,\n usampler3D: Keyword.U_SAMPLER3D,\n usamplerCube: Keyword.U_SAMPLER_CUBE,\n usampler2DArray: Keyword.U_SAMPLER2D_ARRAY,\n struct: Keyword.STRUCT,\n void: Keyword.VOID,\n true: Keyword.True,\n false: Keyword.False,\n precision: Keyword.PRECISION,\n precise: Keyword.PRECISE,\n highp: Keyword.HIGHP,\n mediump: Keyword.MEDIUMP,\n lowp: Keyword.LOWP,\n invariant: Keyword.INVARIANT,\n flat: Keyword.FLAT,\n smooth: Keyword.SMOOTH,\n noperspective: Keyword.NOPERSPECTIVE,\n centroid: Keyword.CENTROID,\n layout: Keyword.LAYOUT,\n location: Keyword.LOCATION,\n\n // Macros ...\n \"#if\": Keyword.MACRO_IF,\n \"#ifdef\": Keyword.MACRO_IFDEF,\n \"#ifndef\": Keyword.MACRO_IFNDEF,\n \"#else\": Keyword.MACRO_ELSE,\n \"#elif\": Keyword.MACRO_ELIF,\n \"#endif\": Keyword.MACRO_ENDIF,\n \"#undef\": Keyword.MACRO_UNDEF\n };\n\n private _needScanMacroConditionExpression = false;\n\n *tokenize() {\n while (!this.isEnd()) {\n yield this.scanToken();\n }\n return EOF;\n }\n\n constructor(\n source: string,\n public macroDefineList: MacroDefineList\n ) {\n super(source);\n }\n\n override scanToken(): BaseToken {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return EOF;\n }\n\n if (this._needScanMacroConditionExpression) {\n this._needScanMacroConditionExpression = false;\n return this._scanMacroConditionExpression();\n }\n\n const curCharCode = this.getCurCharCode();\n if (BaseLexer.isPreprocessorStartChar(curCharCode)) {\n return this._scanDirectives();\n }\n if (BaseLexer.isAlpha(curCharCode)) {\n return this._scanWord();\n }\n if (BaseLexer.isDigit(curCharCode)) {\n return this._scanNum();\n }\n\n const start = this.getShaderPosition();\n const token = BaseToken.pool.get();\n let curChar: string;\n\n switch (this.getCurChar()) {\n case \"<\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"<\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.LEFT_ASSIGN, \"<<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_OP, \"<<\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.LE_OP, \"<=\", start);\n break;\n }\n token.set(ETokenType.LEFT_ANGLE, \"<\", start);\n break;\n\n case \">\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \">\") {\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.RIGHT_ASSIGN, \">>=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_OP, \">>\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.GE_OP, \">=\", start);\n break;\n }\n token.set(ETokenType.RIGHT_ANGLE, \">\", start);\n break;\n\n case \"+\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\") {\n this.advance(1);\n token.set(ETokenType.INC_OP, \"++\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"+=\", start);\n break;\n }\n token.set(ETokenType.PLUS, \"+\", start);\n break;\n\n case \"-\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"-\") {\n this.advance(1);\n token.set(ETokenType.DEC_OP, \"--\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.SUB_ASSIGN, \"-=\", start);\n break;\n }\n token.set(ETokenType.DASH, \"-\", start);\n break;\n\n case \"=\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.EQ_OP, \"==\", start);\n break;\n }\n token.set(ETokenType.EQUAL, \"=\", start);\n break;\n\n case \"!\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.NE_OP, \"!=\", start);\n break;\n }\n token.set(ETokenType.BANG, \"!\", start);\n break;\n\n case \"&\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"&\") {\n this.advance(1);\n token.set(ETokenType.AND_OP, \"&&\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.ADD_ASSIGN, \"&=\", start);\n break;\n }\n token.set(ETokenType.AMPERSAND, \"&\", start);\n break;\n\n case \"|\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"|\") {\n this.advance(1);\n token.set(ETokenType.OR_OP, \"||\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.OR_ASSIGN, \"|=\", start);\n break;\n }\n token.set(ETokenType.VERTICAL_BAR, \"|\", start);\n break;\n\n case \"^\":\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"^\") {\n this.advance(1);\n token.set(ETokenType.XOR_OP, \"^^\", start);\n break;\n } else if (curChar === \"=\") {\n this.advance(1);\n token.set(ETokenType.XOR_ASSIGN, \"^=\", start);\n break;\n }\n token.set(ETokenType.CARET, \"^\", start);\n break;\n\n case \"*\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n token.set(ETokenType.MUL_ASSIGN, \"*=\", start);\n break;\n }\n\n token.set(ETokenType.STAR, \"*\", start);\n break;\n\n case \"/\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.DIV_ASSIGN, \"/=\", start);\n break;\n }\n\n token.set(ETokenType.SLASH, \"/\", start);\n break;\n\n case \"%\":\n this.advance(1);\n if (this.getCurChar() === \"=\") {\n this.advance(1);\n\n token.set(ETokenType.MOD_ASSIGN, \"%=\", start);\n break;\n }\n\n token.set(ETokenType.PERCENT, \"%\", start);\n break;\n\n case \"(\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_PAREN, \"(\", start);\n break;\n case \")\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_PAREN, \")\", start);\n break;\n case \"{\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACE, \"{\", start);\n break;\n case \"}\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACE, \"}\", start);\n break;\n case \"[\":\n this.advance(1);\n\n token.set(ETokenType.LEFT_BRACKET, \"[\", start);\n break;\n case \"]\":\n this.advance(1);\n\n token.set(ETokenType.RIGHT_BRACKET, \"]\", start);\n break;\n case \".\":\n this.advance(1);\n if (BaseLexer.isDigit(this.getCurCharCode())) {\n return this._scanNumAfterDot();\n }\n\n token.set(ETokenType.DOT, \".\", start);\n break;\n case \",\":\n this.advance(1);\n\n token.set(ETokenType.COMMA, \",\", start);\n break;\n case \":\":\n this.advance(1);\n\n token.set(ETokenType.COLON, \":\", start);\n return token;\n case \";\":\n this.advance(1);\n\n token.set(ETokenType.SEMICOLON, \";\", start);\n break;\n case \"~\":\n this.advance(1);\n\n token.set(ETokenType.TILDE, \"~\", start);\n break;\n case \"?\":\n this.advance(1);\n\n token.set(ETokenType.QUESTION, \"?\", start);\n break;\n case '\"':\n this.advance(1);\n return this._scanStringConst();\n\n default:\n this.throwError(this.getShaderPosition(0), `Unexpected character ${this.getCurChar()}`);\n }\n return token;\n }\n\n private _scanStringConst(): BaseToken {\n const start = this.getShaderPosition();\n const buffer: string[] = [];\n while (this.getCurChar() !== '\"') {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this.advance(1);\n const range = ShaderLab.createRange(start, this.getShaderPosition());\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.STRING_CONST, buffer.join(\"\"), range);\n return token;\n }\n\n private _scanNumAfterDot(): BaseToken {\n const buffer = [\".\"];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n\n private _scanUtilBreakLine(outBuffer: string[]): void {\n while (this.getCurChar() !== \"\\n\" && !this.isEnd()) {\n outBuffer.push(this.getCurChar());\n this.advance(1);\n }\n }\n\n private _scanDirectives(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlpha(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n\n // If it is a macro definition or conditional expression, we need to skip the rest of the line\n if (word === \"#define\") {\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\") + \"\\n\";\n token.set(Keyword.MACRO_DEFINE_EXPRESSION, word, start);\n } else {\n const kt = Lexer._lexemeTable[word];\n token.set(kt ?? ETokenType.ID, word, start);\n if (word === \"#if\" || word === \"#elif\") {\n this._needScanMacroConditionExpression = true;\n }\n }\n\n return token;\n }\n\n private _scanMacroConditionExpression(): BaseToken {\n const buffer = new Array<string>();\n const start = this.getShaderPosition();\n this._scanUtilBreakLine(buffer);\n const word = buffer.join(\"\");\n const token = BaseToken.pool.get();\n token.set(Keyword.MACRO_CONDITIONAL_EXPRESSION, word, start);\n return token;\n }\n\n private _scanWord(): BaseToken {\n const buffer: string[] = [this.getCurChar()];\n const start = this.getShaderPosition();\n this.advance(1);\n while (BaseLexer.isAlnum(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const token = BaseToken.pool.get();\n const word = buffer.join(\"\");\n const kt = Lexer._lexemeTable[word];\n\n if (this.macroDefineList[word]) {\n token.set(Keyword.MACRO_CALL, word, start);\n } else {\n token.set(kt ?? ETokenType.ID, word, start);\n }\n return token;\n }\n\n private _scanNum(): BaseToken {\n const buffer: string[] = [];\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n const curChar = this.getCurChar();\n if (curChar === \".\") {\n buffer.push(curChar);\n this.advance(1);\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n buffer.push(this.getCurChar());\n this.advance(1);\n }\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n if (curChar === \"e\" || curChar === \"E\") {\n this._scanFloatSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.FLOAT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n } else {\n this._scanIntegerSuffix(buffer);\n\n const token = BaseToken.pool.get();\n token.set(ETokenType.INT_CONSTANT, buffer.join(\"\"), this.getShaderPosition(buffer.length));\n return token;\n }\n }\n }\n\n private _scanFloatSuffix(buffer: string[]): void {\n let curChar = this.getCurChar();\n if (curChar === \"e\" || curChar === \"E\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n if (curChar === \"+\" || curChar === \"-\") {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n }\n if (!BaseLexer.isDigit(this.getCurCharCode()))\n this.throwError(this.getShaderPosition(0), \"lexing error, invalid exponent suffix.\");\n\n do {\n buffer.push(curChar);\n this.advance(1);\n curChar = this.getCurChar();\n } while (BaseLexer.isDigit(this.getCurCharCode()));\n }\n if (curChar === \"f\" || curChar === \"F\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n\n private _scanIntegerSuffix(buffer: string[]): void {\n const curChar = this.getCurChar();\n if (curChar === \"u\" || curChar === \"U\") {\n buffer.push(curChar);\n this.advance(1);\n }\n }\n}\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","export enum MacroParserToken {\n id,\n line_remain,\n chunk,\n int_constant,\n string_const,\n /** \\>> */\n right_op,\n /** << */\n left_op,\n left_paren,\n right_paren,\n /** \\>= */\n ge,\n /** <= */\n le,\n /** == */\n eq,\n /** != */\n neq,\n /** && */\n and,\n /** || */\n or,\n /** < */\n left_angle,\n /** \\> */\n right_angle,\n /** \\* */\n star,\n /** + */\n plus,\n /** \\- */\n dash,\n /** ! */\n bang,\n /** \\/ */\n slash,\n /** % */\n percent,\n\n EOF = 100\n}\n\nexport enum MacroParserKeyword {\n define = 101,\n undef,\n if,\n ifdef,\n ifndef,\n else,\n elif,\n endif,\n\n defined\n}\n\nexport type MacroParserConstant = boolean | number;\n","import { ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n// #if _VERBOSE\nimport { GSErrorName } from \"../GSError\";\n// #endif\n\nexport class MacroDefine {\n private _replaceRegex?: RegExp;\n private readonly _argsLexemes?: string[];\n\n get isFunction(): boolean {\n return !!this.args;\n }\n\n constructor(\n public readonly macro: BaseToken,\n public readonly body?: BaseToken,\n public readonly location?: ShaderRange,\n public readonly args?: BaseToken[]\n ) {\n if (args?.length > 0) {\n this._argsLexemes = this.args.map((item) => item.lexeme);\n this._replaceRegex = new RegExp(`\\\\b(${this._argsLexemes.join(\"|\")})\\\\b`, \"g\");\n }\n }\n\n expandFunctionBody(args: string[]): string {\n if (args.length !== this.args?.length) {\n throw ShaderLabUtils.createGSError(\"mismatched function macro\", GSErrorName.PreprocessorError, \"\", this.location);\n }\n\n if (args.length === 0) {\n return this.body.lexeme;\n }\n\n return this.body.lexeme.replace(this._replaceRegex, (m) => {\n return args[this._argsLexemes.indexOf(m)];\n });\n }\n}\n","import { ShaderPosition, ShaderRange } from \"../common\";\n// #if _VERBOSE\nimport PpSourceMap from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken, EOF } from \"../common/BaseToken\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { MacroParserKeyword, MacroParserToken } from \"./constants\";\n\nexport type OnToken = (token: BaseToken, scanner: MacroParserLexer) => void;\n\nexport default class MacroParserLexer extends BaseLexer {\n private static _isPpCharacters(charCode: number): boolean {\n return (\n charCode === 35 || // #\n BaseLexer.isAlnum(charCode) // _, A-Z, a-z, 0-9\n );\n }\n\n private static _lexemeTable = <Record<string, MacroParserKeyword>>{\n \"#define\": MacroParserKeyword.define,\n \"#undef\": MacroParserKeyword.undef,\n \"#if\": MacroParserKeyword.if,\n \"#ifdef\": MacroParserKeyword.ifdef,\n \"#ifndef\": MacroParserKeyword.ifndef,\n \"#else\": MacroParserKeyword.else,\n \"#elif\": MacroParserKeyword.elif,\n \"#endif\": MacroParserKeyword.endif,\n defined: MacroParserKeyword.defined\n };\n\n private macroLvl = 0;\n\n // #if _VERBOSE\n readonly sourceMap = new PpSourceMap();\n readonly file: string;\n readonly blockRange?: ShaderRange;\n // #endif\n\n constructor(\n source: string,\n // #if _VERBOSE\n file = \"__main__\",\n blockRange?: ShaderRange\n // #endif\n ) {\n super(source);\n // #if _VERBOSE\n this.file = file;\n this.blockRange = blockRange;\n // #endif\n }\n\n scanWordsUntilTerminator(terminatorChar: string): BaseToken[] {\n const tokens: BaseToken[] = [];\n while (true) {\n this.skipSpace(true);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n tokens.push(this.scanWord());\n } else if (this.getCurChar() === terminatorChar) {\n this.advance(1);\n return tokens;\n } else {\n this.advance(1);\n }\n }\n }\n\n scanWord(): BaseToken {\n // Skip all non-alphabetic characters, primarily used for handling defined(MACRO) syntax\n while (!BaseLexer.isAlpha(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n\n if (this.isEnd()) {\n return EOF;\n }\n\n const start = this._currentIndex;\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this._currentIndex;\n const word = this._source.slice(start, end);\n if (end === start) {\n this.throwError(this.getShaderPosition(0), \"no word found.\");\n }\n\n const token = BaseToken.pool.get();\n const tokenType = MacroParserLexer._lexemeTable[word] ?? MacroParserToken.id;\n token.set(tokenType, word, this.getShaderPosition(word.length));\n return token;\n }\n\n override scanToken(): BaseToken | undefined {\n this.skipCommentsAndSpace();\n if (this.isEnd()) {\n return;\n }\n const source = this._source;\n let start = this._currentIndex;\n let found = false;\n for (var n = source.length; this._currentIndex < n; ) {\n if (MacroParserLexer._isPpCharacters(source.charCodeAt(this._currentIndex))) {\n this.advance(1);\n found = true;\n } else {\n if (found) {\n break;\n }\n this.advance(1);\n this.skipCommentsAndSpace();\n start = this._currentIndex;\n }\n }\n\n const lexeme = source.slice(start, this._currentIndex);\n const token = BaseToken.pool.get();\n const type = MacroParserLexer._lexemeTable[lexeme] ?? MacroParserToken.id;\n token.set(type, lexeme, this.getShaderPosition(this._currentIndex - start));\n\n if (type === MacroParserKeyword.if || type === MacroParserKeyword.ifdef || type === MacroParserKeyword.ifndef) {\n this.macroLvl++;\n } else if (type === MacroParserKeyword.endif) {\n this.macroLvl--;\n }\n\n return token;\n }\n\n scanQuotedString(): BaseToken<MacroParserToken.string_const> {\n this.skipSpace(true);\n const source = this._source;\n const sourceLength = source.length;\n const start = this.getShaderPosition(0);\n\n let index = this._currentIndex;\n\n // Check for opening quote\n if (source.charCodeAt(index) !== 34) {\n // 34 = '\"'\n this.throwError(start, \"Unexpected char, expected '\\\"'\");\n }\n\n const contentStart = ++index; // Skip opening quote and record start\n\n // Fast scan to closing quote\n while (index < sourceLength && source.charCodeAt(index) !== 34) {\n index++;\n }\n\n if (index >= sourceLength) {\n this.throwError(this.getShaderPosition(0), \"Unexpected char, expected '\\\"'\");\n }\n\n const lexeme = source.slice(contentStart, index);\n this.advance(index + 1 - this._currentIndex); // Skip to after closing quote\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.string_const, lexeme, start);\n return token;\n }\n\n scanToChar(char: string) {\n const source = this._source;\n while (source[this._currentIndex] !== char && !this.isEnd()) {\n this.advance(1);\n }\n }\n\n scanMacroBranchBody(): {\n body: BaseToken<MacroParserToken.chunk>;\n nextDirective: BaseToken;\n } {\n const shaderPosition = this.getShaderPosition(0);\n const startLevel = this.macroLvl;\n\n let nextDirective = this.scanToken()!;\n while (true) {\n const { type } = nextDirective;\n if (type === MacroParserKeyword.endif && startLevel - 1 === this.macroLvl) {\n break;\n } else if (\n (type === MacroParserKeyword.elif || type === MacroParserKeyword.else) &&\n startLevel === this.macroLvl\n ) {\n break;\n }\n nextDirective = this.scanToken()!;\n }\n\n const lexeme = this._source.slice(shaderPosition.index, this._currentIndex - nextDirective.lexeme.length - 1);\n const body = BaseToken.pool.get();\n body.set(MacroParserToken.chunk, lexeme, shaderPosition);\n return { body, nextDirective };\n }\n\n scanPairedBlock(lc: string, rc: string): void {\n this.scanToChar(lc);\n let level = 0;\n const source = this._source;\n\n do {\n const curChar = source[this._currentIndex];\n\n if (curChar === lc) {\n level++;\n } else if (curChar === rc) {\n level--;\n }\n this.advance(1);\n } while (level > 0);\n }\n\n /**\n * @returns end ShaderPosition\n */\n scanRemainMacro(): ShaderPosition {\n const startLvl = this.macroLvl;\n let directive = this.scanToken()!;\n while (!this.isEnd() && (directive.type !== MacroParserKeyword.endif || startLvl - 1 !== this.macroLvl)) {\n directive = this.scanToken()!;\n }\n return this.getShaderPosition(0);\n }\n\n peekNonSpace() {\n let current = this._currentIndex;\n while (/\\s/.test(this._source[current])) {\n current += 1;\n }\n return this._source[current];\n }\n\n scanInteger() {\n const start = this._currentIndex;\n while (BaseLexer.isDigit(this.getCurCharCode())) {\n this.advance(1);\n }\n if (this._currentIndex === start) {\n this.throwError(this.getShaderPosition(0), \"no integer found\");\n }\n const integer = this._source.slice(start, this._currentIndex);\n\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.int_constant, integer, this.getShaderPosition(0));\n return token;\n }\n\n scanMacroBody(): BaseToken<MacroParserToken.line_remain> {\n this.skipSpace(false);\n let lexeme = \"\";\n const source = this._source;\n const sourceLength = source.length;\n\n const start = this.getShaderPosition(0);\n while (this._currentIndex < sourceLength) {\n const charCode = source.charCodeAt(this._currentIndex);\n\n // Check for line break (terminates macro definition), break when encounter \"\\n\"\n if (charCode === 10) {\n break;\n }\n\n // Check for comments (both single-line and multi-line)\n if (charCode === 47) {\n const nextIndex = this._currentIndex + 1;\n if (nextIndex < sourceLength) {\n const nextCharCode = source.charCodeAt(nextIndex);\n\n // Single-line comment (terminates macro definition), break when encounter \"//\"\n if (nextCharCode === 47) {\n break;\n }\n\n // Multi-line comment (skip but don't terminate)\n if (nextCharCode === 42) {\n this.advance(2); // Skip \"/*\"\n\n // Skip until end of multi-line comment\n while (this._currentIndex + 1 < sourceLength) {\n const currentIndex = this._currentIndex;\n if (source.charCodeAt(currentIndex) === 42 && source.charCodeAt(currentIndex + 1) === 47) {\n this.advance(2); // Skip \"*/\n break;\n }\n this.advance(1);\n }\n\n lexeme += \" \"; // Replace comment with space\n continue;\n }\n }\n }\n\n // Accumulate useful character\n lexeme += source[this._currentIndex];\n this.advance(1);\n }\n\n if (lexeme === \"\") {\n return null;\n }\n\n const valueToken = BaseToken.pool.get();\n valueToken.set(MacroParserToken.line_remain, lexeme, ShaderLab.createRange(start, this.getShaderPosition(0)));\n return valueToken;\n }\n}\n","import { ExpandSegment } from \"./MacroParser\";\n// #if _VERBOSE\nimport PpSourceMap, { MapRange } from \"./sourceMap\";\n// #endif\n\nexport class PpUtils {\n static expand(\n segments: ExpandSegment[],\n source: string,\n // #if _VERBOSE\n sourceMap?: PpSourceMap\n //#endif\n ) {\n const ret: string[] = [];\n let startIdx = 0;\n let generatedIdx = 0;\n\n for (const seg of segments) {\n const originSlice = source.slice(startIdx, seg.rangeInBlock.start.index);\n ret.push(originSlice, seg.replace);\n\n const generatedIdxEnd = generatedIdx + originSlice.length + seg.replace.length;\n\n // #if _VERBOSE\n const mapRange = new MapRange(seg.block, seg.rangeInBlock, {\n start: generatedIdx + originSlice.length,\n end: generatedIdxEnd\n });\n sourceMap?.addMapRange(mapRange);\n // #endif\n\n startIdx = seg.rangeInBlock.end.index;\n generatedIdx = generatedIdxEnd;\n }\n ret.push(source.slice(startIdx));\n return ret.join(\"\");\n }\n}\n","import { ShaderMacro } from \"@galacean/engine\";\nimport { ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { MacroParserConstant, MacroParserKeyword, MacroParserToken } from \"./constants\";\nimport { MacroDefine } from \"./MacroDefine\";\nimport MacroParserLexer from \"./MacroParserLexer\";\nimport { PpUtils } from \"./Utils\";\n// #if _VERBOSE\nimport PpSourceMap, { BlockInfo } from \"./sourceMap\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\n\nexport interface ExpandSegment {\n // #if _VERBOSE\n block?: BlockInfo;\n // #endif\n rangeInBlock: ShaderRange;\n replace: string;\n}\n\n/** @internal */\nexport class MacroParser {\n static lexer: MacroParserLexer;\n\n private static _definedMacros: Map<string, MacroDefine> = new Map();\n private static _expandSegmentsStack: ExpandSegment[][] = [[]];\n\n private static _expandVisitedMacros: Record<string, number> = {};\n private static _expandVersionId: number = 1;\n\n // #if _VERBOSE\n static _errors: Error[] = [];\n // #endif\n\n static parse(source: string, macros: ShaderMacro[]): string | null {\n MacroParser._reset();\n\n for (const macro of macros) {\n MacroParser._addPredefinedMacro(macro.name, macro.value);\n }\n\n this.lexer = new MacroParserLexer(source);\n return MacroParser._parseDirectives(this.lexer);\n }\n\n private static _reset() {\n this._expandSegmentsStack.length = 0;\n this._expandSegmentsStack.push([]);\n\n this._definedMacros.clear();\n this._addPredefinedMacro(\"GL_ES\");\n\n // #if _VERBOSE\n this._errors.length = 0;\n // #endif\n }\n\n private static _addPredefinedMacro(macro: string, value?: string) {\n const token = BaseToken.pool.get();\n token.set(MacroParserToken.id, macro);\n\n let macroBody: BaseToken | undefined;\n if (value != undefined) {\n macroBody = BaseToken.pool.get();\n macroBody.set(MacroParserToken.id, value);\n }\n\n this._definedMacros.set(macro, new MacroDefine(token, macroBody));\n }\n\n private static _parseDirectives(lexer: MacroParserLexer): string | null {\n let directive: BaseToken | undefined;\n while ((directive = lexer.scanToken())) {\n switch (directive.type) {\n case MacroParserToken.id:\n this._parseMacro(lexer, directive);\n break;\n case MacroParserKeyword.define:\n this._parseDefine(lexer);\n break;\n case MacroParserKeyword.undef:\n this._parseUndef(lexer);\n break;\n case MacroParserKeyword.if:\n this._parseIfDirective(lexer, MacroParserKeyword.if);\n break;\n case MacroParserKeyword.ifndef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifndef);\n break;\n case MacroParserKeyword.ifdef:\n this._parseIfDirective(lexer, MacroParserKeyword.ifdef);\n break;\n }\n }\n // #if _VERBOSE\n if (this._errors.length > 0) return null;\n // #endif\n\n return PpUtils.expand(this._getExpandSegments(), lexer.source, lexer.sourceMap);\n }\n\n private static _getExpandSegments(): ExpandSegment[] {\n return this._expandSegmentsStack[this._expandSegmentsStack.length - 1];\n }\n\n private static _reportError(loc: ShaderRange | ShaderPosition, message: string, source: string, file?: string) {\n const error = ShaderLabUtils.createGSError(message, GSErrorName.PreprocessorError, source, loc, file);\n // #if _VERBOSE\n this._errors.push(error);\n // #endif\n }\n\n private static _parseIfDirective(lexer: MacroParserLexer, directiveType: MacroParserKeyword): void {\n const directiveLength =\n directiveType === MacroParserKeyword.if ? 3 : directiveType === MacroParserKeyword.ifdef ? 6 : 7; // #if = 3, #ifdef = 6, #ifndef = 7\n const start = lexer.currentIndex - directiveLength;\n let skipMacro = false;\n\n let shouldInclude: MacroParserConstant;\n if (directiveType === MacroParserKeyword.if) {\n shouldInclude = this._parseConstantExpression(lexer);\n } else {\n const macroToken = lexer.scanWord();\n const lexeme = macroToken.lexeme;\n if (lexeme.startsWith(\"GL_\")) {\n skipMacro = true;\n } else {\n const defined = this._definedMacros.get(lexeme);\n shouldInclude = directiveType === MacroParserKeyword.ifdef ? !!defined : !defined;\n }\n }\n\n lexer.skipSpace(true);\n const { body, nextDirective } = lexer.scanMacroBranchBody();\n\n if (skipMacro) return;\n\n if (shouldInclude) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? lexer.getShaderPosition(0) : lexer.scanRemainMacro();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, lexer);\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n end,\n expanded.content,\n lexer.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addEmptyReplace(lexer, start);\n this._processConditionalDirective(nextDirective.type, lexer);\n }\n }\n\n private static _processConditionalDirective(\n directive: MacroParserKeyword.elif | MacroParserKeyword.else | MacroParserKeyword.endif,\n scanner: MacroParserLexer\n ) {\n if (directive === MacroParserKeyword.endif) {\n return;\n }\n\n const start = scanner.currentIndex;\n\n if (directive === MacroParserKeyword.else) {\n const { body } = scanner.scanMacroBranchBody();\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n scanner.getShaderPosition(0),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else if (directive === MacroParserKeyword.elif) {\n const constantExpr = this._parseConstantExpression(scanner);\n const { body, nextDirective } = scanner.scanMacroBranchBody();\n if (constantExpr) {\n const end =\n nextDirective.type === MacroParserKeyword.endif ? scanner.currentIndex : scanner.scanRemainMacro().index;\n const expanded = this._expandMacroChunk(body.lexeme, body.location, scanner);\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(end),\n expanded.content,\n scanner.blockRange,\n expanded.sourceMap\n );\n } else {\n this._addContentReplace(\n scanner.file,\n ShaderLab.createPosition(start),\n ShaderLab.createPosition(scanner.currentIndex),\n \"\",\n scanner.blockRange\n );\n this._processConditionalDirective(nextDirective.type, scanner);\n }\n }\n }\n\n private static _parseConstantExpression(scanner: MacroParserLexer): MacroParserConstant {\n scanner.skipSpace(true);\n return this._parseLogicalOrExpression(scanner);\n }\n\n private static _parseLogicalOrExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseLogicalAndExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"||\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalOrExpression(scanner);\n return operand1 || operand2;\n }\n return operand1;\n }\n\n private static _parseLogicalAndExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseEqualityExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && operator === \"&&\") {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseLogicalAndExpression(scanner);\n return operand1 && operand2;\n }\n return operand1;\n }\n\n private static _parseEqualityExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseRelationalExpression(scanner);\n const operator = scanner.peek(2);\n if (operator && [\"==\", \"!=\"].includes(operator)) {\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseEqualityExpression(scanner);\n switch (operator) {\n case \"==\":\n return operand1 === operand2;\n case \"!=\":\n return operand1 !== operand2;\n }\n }\n return operand1;\n }\n\n private static _parseRelationalExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseShiftExpression(scanner) as number;\n let operator = scanner.peek(2);\n if (operator[1] !== \"=\") operator = operator[0];\n if (operator && [\">\", \"<\", \">=\", \"<=\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(operator.length);\n scanner.skipSpace(false);\n const operand2 = this._parseRelationalExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in relation expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">\":\n return operand1 > operand2;\n case \"<\":\n return operand1 < operand2;\n case \">=\":\n return operand1 >= operand2;\n case \"<=\":\n return operand1 <= operand2;\n }\n }\n return operand1;\n }\n\n private static _parseShiftExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseAdditiveExpression(scanner) as number;\n const operator = scanner.peek(2);\n if (operator && [\">>\", \"<<\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(2);\n scanner.skipSpace(false);\n const operand2 = this._parseShiftExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator in shift expression.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \">>\":\n return operand1 >> operand2;\n case \"<<\":\n return operand1 << operand2;\n }\n }\n\n return operand1;\n }\n\n private static _parseAdditiveExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseMulticativeExpression(scanner) as number;\n if ([\">\", \"<\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseAdditiveExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return false;\n }\n switch (operator) {\n case \"+\":\n return operand1 + operand2;\n case \"-\":\n return operand1 - operand2;\n }\n }\n return operand1;\n }\n\n private static _parseMulticativeExpression(scanner: MacroParserLexer): MacroParserConstant {\n const operand1 = this._parseUnaryExpression(scanner) as number;\n scanner.skipSpace(false);\n if ([\"*\", \"/\", \"%\"].includes(scanner.getCurChar())) {\n const opPos = scanner.getShaderPosition(0);\n const operator = scanner.getCurChar();\n scanner.skipSpace(false);\n const operand2 = this._parseMulticativeExpression(scanner) as number;\n if (typeof operand1 !== typeof operand2 && typeof operand1 !== \"number\") {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n return;\n }\n switch (operator) {\n case \"*\":\n return operand1 * operand2;\n case \"/\":\n return operand1 / operand2;\n case \"%\":\n return operand1 % operand2;\n }\n }\n return operand1;\n }\n\n private static _parseUnaryExpression(scanner: MacroParserLexer) {\n const operator = scanner.getCurChar();\n if ([\"+\", \"-\", \"!\"].includes(operator)) {\n const opPos = scanner.getShaderPosition(0);\n scanner.advance(1);\n scanner.skipSpace(false);\n const parenExpr = this._parseParenthesisExpression(scanner);\n if ((operator === \"!\" && typeof parenExpr !== \"boolean\") || (operator !== \"!\" && typeof parenExpr !== \"number\")) {\n this._reportError(opPos, \"invalid operator.\", scanner.source, scanner.file);\n }\n\n switch (operator) {\n case \"+\":\n return parenExpr;\n case \"-\":\n return -parenExpr;\n case \"!\":\n return !parenExpr;\n }\n }\n return this._parseParenthesisExpression(scanner);\n }\n\n private static _parseParenthesisExpression(scanner: MacroParserLexer): MacroParserConstant {\n if (scanner.getCurChar() === \"(\") {\n scanner.advance(1);\n scanner.skipSpace(false);\n const ret = this._parseConstantExpression(scanner);\n scanner.scanToChar(\")\");\n scanner.advance(1);\n return ret;\n }\n return this._parseConstant(scanner);\n }\n\n private static _parseConstant(scanner: MacroParserLexer): MacroParserConstant {\n if (BaseLexer.isAlpha(scanner.getCurCharCode())) {\n const id = scanner.scanWord();\n if (id.type === MacroParserKeyword.defined) {\n const withParen = scanner.peekNonSpace() === \"(\";\n const macro = scanner.scanWord();\n if (withParen) {\n scanner.scanToChar(\")\");\n scanner.advance(1);\n }\n return !!this._definedMacros.get(macro.lexeme);\n } else {\n const macro = this._definedMacros.get(id.lexeme);\n\n if (!macro) {\n return false;\n }\n\n if (!macro.body) {\n return true;\n }\n\n if (macro.isFunction) {\n this._reportError(id.location, \"invalid function macro usage\", scanner.source, scanner.file);\n }\n const value = Number(macro.body.lexeme);\n if (!Number.isInteger(value)) {\n this._reportError(id.location, `invalid const macro: ${id.lexeme}`, scanner.source, scanner.file);\n }\n return value;\n }\n } else if (BaseLexer.isDigit(scanner.getCurCharCode())) {\n const integer = scanner.scanInteger();\n return Number(integer.lexeme);\n } else {\n this._reportError(\n scanner.getShaderPosition(0),\n `invalid token: ${scanner.getCurChar()}`,\n scanner.source,\n scanner.file\n );\n }\n }\n\n private static _parseMacroFunctionArgs(\n source: string,\n startIndex: number,\n macroName: string\n ): { args: string[]; endIndex: number } {\n const length = source.length;\n let i = startIndex + macroName.length;\n\n // Find opening parenthesis\n while (i < length && source.charCodeAt(i) !== 40) i++;\n\n // Parse function arguments\n const args: string[] = [];\n let level = 1;\n let argStart = i + 1;\n let k = argStart;\n\n while (k < length && level > 0) {\n const charCode = source.charCodeAt(k);\n if (charCode === 40) {\n level++;\n } else if (charCode === 41) {\n if (--level === 0) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n break;\n }\n } else if (charCode === 44 && level === 1) {\n const arg = source.substring(argStart, k).trim();\n if (arg.length > 0) args.push(arg);\n argStart = k + 1;\n }\n k++;\n }\n\n return { args, endIndex: k + 1 };\n }\n\n private static _expandMacroBody(body: string): string {\n const visitedMacros = this._expandVisitedMacros;\n const currentVersionId = ++this._expandVersionId;\n let expandedBody = body;\n let hasExpansion = true;\n\n while (hasExpansion) {\n hasExpansion = false;\n const length = expandedBody.length;\n let i = 0;\n\n while (i < length) {\n const charCode = expandedBody.charCodeAt(i);\n if (!BaseLexer.isAlpha(charCode)) {\n i++;\n continue;\n }\n\n const start = i;\n while (i < length && BaseLexer.isAlnum(expandedBody.charCodeAt(i))) {\n i++;\n }\n\n const macroName = expandedBody.substring(start, i);\n const macro = this._definedMacros.get(macroName);\n\n if (!macro || visitedMacros[macroName] === currentVersionId) {\n continue;\n }\n\n // Prevent circular references\n visitedMacros[macroName] = currentVersionId;\n\n let replacement: string;\n let endIndex: number;\n\n if (!macro.isFunction) {\n replacement = macro.body?.lexeme ?? \"\";\n endIndex = i;\n } else {\n const { args, endIndex: newEndIndex } = this._parseMacroFunctionArgs(expandedBody, start, macroName);\n replacement = macro.expandFunctionBody(args);\n endIndex = newEndIndex;\n }\n\n expandedBody = expandedBody.substring(0, start) + replacement + expandedBody.substring(endIndex);\n hasExpansion = true;\n break;\n }\n }\n\n return expandedBody;\n }\n\n /**\n * Recursively expand macro body and expansion.\n */\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n parentScanner: MacroParserLexer\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n file: string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n };\n private static _expandMacroChunk(\n chunk: string,\n loc: ShaderRange,\n scannerOrFile: MacroParserLexer | string\n ): {\n content: string;\n // #if _VERBOSE\n sourceMap: PpSourceMap;\n // #endif\n } {\n this._expandSegmentsStack.push([]);\n let scanner: MacroParserLexer;\n if (typeof scannerOrFile === \"string\") {\n scanner = new MacroParserLexer(chunk, scannerOrFile);\n } else {\n scanner = new MacroParserLexer(chunk, scannerOrFile.file, loc);\n }\n\n const ret = this._parseDirectives(scanner);\n this._expandSegmentsStack.pop();\n return {\n content: ret,\n // #if _VERBOSE\n sourceMap: scanner.sourceMap\n // #endif\n };\n }\n\n private static _addEmptyReplace(lexer: MacroParserLexer, start: number) {\n this._addContentReplace(\n lexer.file,\n ShaderLab.createPosition(start),\n lexer.getShaderPosition(0),\n \"\",\n lexer.blockRange\n );\n }\n\n private static _addContentReplace(\n sourceFile: string,\n start: ShaderPosition,\n end: ShaderPosition,\n content: string,\n sourceRange?: ShaderRange,\n sourceMap?: PpSourceMap\n ): void {\n // #if _VERBOSE\n const block = new BlockInfo(sourceFile, sourceRange, sourceMap);\n // #endif\n\n const range = ShaderLab.createRange(start, end);\n this._getExpandSegments().push({\n // #if _VERBOSE\n block,\n // #endif\n rangeInBlock: range,\n replace: content\n });\n }\n\n private static _parseDefine(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(7);\n const macroName = lexer.scanWord();\n\n const { lexeme, location } = macroName;\n let { end } = location;\n if (this._definedMacros.get(lexeme) && lexeme.startsWith(\"GL_\")) {\n this._reportError(location, `Redefined macro: ${lexeme}`, lexer.source, lexer.file);\n }\n\n let macroArgs: BaseToken[] | undefined;\n if (lexer.getCurChar() === \"(\") {\n macroArgs = lexer.scanWordsUntilTerminator(\")\");\n end = lexer.getShaderPosition(0);\n }\n const macroBody = lexer.scanMacroBody();\n const range = ShaderLab.createRange(start, end);\n const macroDefine = new MacroDefine(macroName, macroBody, range, macroArgs);\n this._definedMacros.set(lexeme, macroDefine);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseUndef(lexer: MacroParserLexer): void {\n const start = lexer.getShaderPosition(6);\n const macroName = lexer.scanWord();\n this._definedMacros.delete(macroName.lexeme);\n\n this._addContentReplace(lexer.file, start, lexer.getShaderPosition(0), \"\", lexer.blockRange);\n }\n\n private static _parseMacro(lexer: MacroParserLexer, token: BaseToken) {\n const macro = this._definedMacros.get(token.lexeme);\n if (macro) {\n const { location } = token;\n if (macro.isFunction) {\n const { args, endIndex } = this._parseMacroFunctionArgs(lexer.source, location.start.index, token.lexeme);\n const macroBodyExpanded = macro.expandFunctionBody(args);\n const expandedContent = this._expandMacroBody(macroBodyExpanded);\n\n const remainingLength = endIndex - location.end.index;\n lexer.advance(remainingLength);\n\n this._addContentReplace(\n lexer.file,\n location.start,\n lexer.getShaderPosition(0),\n expandedContent,\n lexer.blockRange\n );\n } else {\n const macroContent = macro.body?.lexeme ?? \"\";\n const expandedContent = this._expandMacroBody(macroContent);\n\n this._addContentReplace(lexer.file, location.start, location.end, expandedContent, lexer.blockRange);\n }\n }\n }\n\n // #if _VERBOSE\n static convertSourceIndex(index: number) {\n return this.lexer.sourceMap.map(index);\n }\n // #endif\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport GrammarUtils from \"./Utils\";\n\nexport default class StateItem {\n static _id = 0;\n\n readonly production: Production;\n readonly position: number;\n readonly lookaheadSet: Set<Terminal>;\n readonly id: number;\n\n _needReInfer = true;\n get needReInfer() {\n return this._needReInfer;\n }\n set needReInfer(v: boolean) {\n this._needReInfer = v;\n }\n\n get curSymbol() {\n return this.production.derivation[this.position];\n }\n get nextSymbol() {\n return this.production.derivation[this.position + 1];\n }\n\n constructor(production: Production, position: number, lookahead: Iterable<Terminal>) {\n this.production = production;\n this.position = position;\n this.lookaheadSet = new Set();\n for (const la of lookahead) {\n this.lookaheadSet.add(la);\n }\n this.id = StateItem._id++;\n }\n\n addLookahead(ts: Iterable<Terminal>) {\n for (const t of ts) {\n if (this.lookaheadSet.has(t)) continue;\n this.lookaheadSet.add(t);\n this.needReInfer = true;\n }\n }\n\n symbolByOffset(offset: number) {\n return this.production.derivation[this.position + offset];\n }\n\n canReduce() {\n if (this.position > this.production.derivation.length - 1) return true;\n else {\n for (let i = this.position; i < this.production.derivation.length; i++) {\n if (this.production.derivation[i] !== ETokenType.EPSILON) return false;\n }\n return true;\n }\n }\n\n advance() {\n // #if _VERBOSE\n if (this.canReduce()) throw `Error: advance reduce-able parsing state item`;\n // #endif\n return new StateItem(this.production, this.position + 1, this.lookaheadSet);\n }\n\n // #if _VERBOSE\n toString() {\n const coreItem = this.production.derivation.map((item) => GrammarUtils.toString(item));\n coreItem[this.position] = \".\" + (coreItem[this.position] ?? \"\");\n\n return `${NoneTerminal[this.production.goal]} :=> ${coreItem.join(\"|\")} ;${Array.from(this.lookaheadSet)\n .map((item) => GrammarUtils.toString(item))\n .join(\"/\")}`;\n }\n // #endif\n}\n","import { Terminal } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport StateItem from \"./StateItem\";\n\nexport default class State {\n static closureMap: Map<string /** state mapKey */, State> = new Map();\n static pool: Map<number, State> = new Map();\n static _id = 0;\n\n readonly id: number;\n readonly cores: Set<StateItem>;\n private _items: Set<StateItem>;\n get items() {\n return this._items;\n }\n\n closured = false;\n get needReInfer() {\n for (const core of this.cores) {\n if (core.needReInfer) return true;\n }\n return false;\n }\n\n private _stateItemPool: Map<string /** Map ID */, StateItem> = new Map();\n\n static create(cores: StateItem[]) {\n const cacheKey = this.getMapKey(cores);\n const state = this.closureMap.get(cacheKey);\n if (state) {\n for (const core of cores) {\n // merge lookahead\n state.createStateItem(core.production, core.position, core.lookaheadSet);\n }\n return state;\n }\n\n const newState = new State(cores);\n this.closureMap.set(cacheKey, newState);\n return newState;\n }\n\n // TODO: any optimization?\n static getMapKey(cores: StateItem[]) {\n return cores.map((item) => `${item.production.id},${item.position}`).join(\";\");\n }\n\n private constructor(cores: Iterable<StateItem>) {\n this.id = State._id++;\n this._items = new Set([...cores]);\n this.cores = new Set([...cores]);\n for (const it of cores) {\n const itemMapKey = this.getStateItemMapKey(it.production, it.position);\n this._stateItemPool.set(itemMapKey, it);\n }\n State.pool.set(this.id, this);\n }\n\n // TODO: any optimization?\n getStateItemMapKey(production: Production, position: number) {\n return `${production.id},${position}`;\n }\n\n createStateItem(production: Production, position: number, lookaheadSet: Iterable<Terminal> = new Set()) {\n const mapId = this.getStateItemMapKey(production, position);\n const item = this._stateItemPool.get(mapId);\n if (item) {\n for (const la of lookaheadSet) {\n if (item.lookaheadSet.has(la)) continue;\n item.lookaheadSet.add(la);\n item.needReInfer = true;\n }\n return item;\n }\n const newItem = new StateItem(production, position, lookaheadSet);\n this._stateItemPool.set(mapId, newItem);\n return newItem;\n }\n}\n","import { ETokenType, ShaderRange } from \"../common\";\nimport { ASTNode, TreeNode } from \"../parser/AST\";\nimport { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\nimport Production from \"./Production\";\nimport { ActionInfo, EAction } from \"./types\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ClearableObjectPool, IPoolElement } from \"@galacean/engine\";\nimport { NodeChild } from \"../parser/types\";\nimport { Keyword } from \"../common/enums/Keyword\";\n\nexport default class GrammarUtils {\n static isTerminal(sm: GrammarSymbol) {\n return sm < NoneTerminal.START;\n }\n\n static toString(sm: GrammarSymbol) {\n if (this.isTerminal(sm)) {\n return ETokenType[sm] ?? Keyword[sm];\n }\n return NoneTerminal[sm];\n }\n\n static createProductionWithOptions(\n goal: NoneTerminal,\n options: GrammarSymbol[][],\n /** the ast node */\n astTypePool?: ClearableObjectPool<\n { set: (loc: ShaderRange, children: NodeChild[]) => void } & IPoolElement & TreeNode\n >\n ) {\n const ret: [GrammarSymbol[], TranslationRule | undefined][] = [];\n for (const opt of options) {\n ret.push([\n [goal, ...opt],\n function (sa, ...children) {\n if (!children[0]) return;\n const start = children[0].location.start;\n const end = children[children.length - 1].location.end;\n const location = ShaderLab.createRange(start, end);\n ASTNode.get(astTypePool ?? ASTNode.TrivialNode.pool, sa, location, children);\n }\n ]);\n }\n return ret;\n }\n\n static addMapSetItem<K, T>(map: Map<K, Set<T>>, k: K, v: T) {\n const set = map.get(k) ?? new Set();\n set.add(v);\n map.set(k, set);\n }\n\n static isSubSet<T>(sa: Set<T>, sb: Set<T>) {\n for (const item of sa) {\n if (!sb.has(item)) return false;\n }\n return true;\n }\n\n static isActionEqual(a: ActionInfo, b: ActionInfo) {\n return a.action === b.action && a.target === b.target;\n }\n\n // #if _VERBOSE\n static printAction(actionInfo: ActionInfo) {\n const production = Production.pool.get(actionInfo.target!);\n return `<Action: ${EAction[actionInfo.action]} -> ${this.printProduction(production)}>`;\n }\n\n static printProduction(production: Production) {\n const deriv = production.derivation.map((gs) => GrammarUtils.toString(gs)).join(\"|\");\n return `${NoneTerminal[production.goal]} :=> ${deriv}`;\n }\n // #endif\n}\n","import { NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\n\nexport type StateActionTable = Map<number /** state ID */, ActionTable>;\nexport type ActionTable = Map<Terminal, ActionInfo>;\nexport type StateGotoTable = Map<number /** state ID */, GotoTable>;\nexport type GotoTable = Map<NoneTerminal, number /** state ID */>;\n\nexport enum EAction {\n Shift = 0,\n Reduce,\n Accept\n}\n\nexport interface ActionInfo {\n action: EAction;\n target?: number;\n}\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal, Terminal } from \"../parser/GrammarSymbol\";\nimport State from \"./State\";\nimport StateItem from \"./StateItem\";\nimport { default as GrammarUtils, default as Utils } from \"./Utils\";\nimport { ActionInfo, ActionTable, EAction, GotoTable, StateActionTable, StateGotoTable } from \"./types\";\n\n/**\n * The [LALR1](https://web.stanford.edu/class/archive/cs/cs143/cs143.1128/handouts/140%20LALR%20Parsing.pdf) Parser generator\n */\nexport class LALR1 {\n readonly firstSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n readonly followSetMap: Map<NoneTerminal, Set<Terminal>> = new Map();\n\n readonly actionTable: StateActionTable = new Map();\n readonly gotoTable: StateGotoTable = new Map();\n private grammar: Grammar;\n\n /** For circle detect */\n private _firstSetNTStack: NoneTerminal[] = [];\n\n constructor(grammar: Grammar) {\n this.grammar = grammar;\n }\n\n generate() {\n this.computeFirstSet();\n this.buildStateTable();\n }\n\n private buildStateTable() {\n const startStateItemCore = [new StateItem(this.grammar.productions[0], 0, [ETokenType.EOF])];\n const startState = State.create(startStateItemCore);\n this._extendState(startState);\n }\n\n private _extendState(state: State) {\n if (!state.needReInfer) return;\n this._closure(state);\n const newStates = this._inferNextState(state);\n for (const ns of newStates) {\n this._extendState(ns);\n }\n }\n\n private _closure(state: State) {\n for (const core of state.cores) {\n if (!core.canReduce()) {\n this._extendStateItem(state, core);\n }\n }\n state.closured = true;\n return state;\n }\n\n private _extendStateItem(state: State, item: StateItem) {\n if (GrammarUtils.isTerminal(item.curSymbol)) return;\n\n const productionList = this.grammar.getProductionList(<NoneTerminal>item.curSymbol);\n\n if (item.nextSymbol) {\n let newLookaheadSet = new Set<Terminal>();\n let lastFirstSet: Set<Terminal> | undefined;\n let terminalExist = false;\n // when A :=> a.BC, a; ==》 B :=> .xy, First(Ca)\n // newLookAhead = First(Ca)\n for (let i = 1, nextSymbol = item.symbolByOffset(1); !!nextSymbol; nextSymbol = item.symbolByOffset(++i)) {\n if (GrammarUtils.isTerminal(nextSymbol)) {\n newLookaheadSet.add(<Terminal>nextSymbol);\n terminalExist = true;\n break;\n }\n lastFirstSet = this.firstSetMap.get(<NoneTerminal>nextSymbol)!;\n for (const t of lastFirstSet) {\n newLookaheadSet.add(t);\n }\n if (!lastFirstSet.has(ETokenType.EPSILON)) break;\n }\n if (!terminalExist && lastFirstSet?.has(ETokenType.EPSILON)) {\n for (const t of item.lookaheadSet) {\n newLookaheadSet.add(t);\n }\n }\n\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(newLookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(newLookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n } else {\n for (const production of productionList) {\n const newItem = state.createStateItem(production, 0);\n if (!state.items.has(newItem) || !Utils.isSubSet(item.lookaheadSet, newItem.lookaheadSet)) {\n state.items.add(newItem);\n newItem.addLookahead(item.lookaheadSet);\n this._extendStateItem(state, newItem);\n }\n }\n }\n }\n\n private _inferNextState(state: State): Set<State> {\n const coreMap: Map<GrammarSymbol, Set<StateItem>> = new Map();\n const stateActionTable: ActionTable = this.actionTable.get(state.id) ?? new Map();\n const stateGotoTable: GotoTable = this.gotoTable.get(state.id) ?? new Map();\n\n this.actionTable.set(state.id, stateActionTable);\n this.gotoTable.set(state.id, stateGotoTable);\n\n for (const stateItem of state.items) {\n if (stateItem.canReduce()) {\n let action: ActionInfo;\n if (stateItem.production.goal !== NoneTerminal.START) {\n action = {\n action: EAction.Reduce,\n target: stateItem.production.id\n };\n } else {\n action = { action: EAction.Accept };\n }\n\n for (const t of stateItem.lookaheadSet) {\n this._addAction(stateActionTable, t, action);\n }\n } else {\n const nextItem = stateItem.advance();\n Utils.addMapSetItem(coreMap, stateItem.curSymbol, nextItem);\n }\n\n stateItem.needReInfer = false;\n }\n\n const newStates = new Set<State>();\n for (const [gs, cores] of coreMap.entries()) {\n const newState = State.create(Array.from(cores));\n if (GrammarUtils.isTerminal(gs)) {\n this._addAction(stateActionTable, <Terminal>gs, {\n action: EAction.Shift,\n target: newState.id\n });\n } else {\n stateGotoTable.set(<NoneTerminal>gs, newState.id);\n }\n\n newStates.add(newState);\n }\n\n return newStates;\n }\n\n /** Resolve shift-reduce/reduce-reduce conflict detect */\n private _addAction(table: ActionTable, terminal: Terminal, action: ActionInfo) {\n const exist = table.get(terminal);\n if (exist && !Utils.isActionEqual(exist, action)) {\n // Resolve dangling else ambiguity\n if (terminal === Keyword.ELSE && exist.action === EAction.Shift && action.action === EAction.Reduce) {\n return;\n } else {\n // #if _VERBOSE\n Logger.warn(\n `conflict detect: <Terminal ${GrammarUtils.toString(terminal)}> \\n`,\n Utils.printAction(exist),\n \"\\n\",\n Utils.printAction(action)\n );\n // #endif\n }\n }\n table.set(terminal, action);\n }\n\n // https://people.cs.pitt.edu/~jmisurda/teaching/cs1622/handouts/cs1622-first_and_follow.pdf\n private computeFirstSet() {\n for (const production of this.grammar.productions.slice(1)) {\n this._computeFirstSetForNT(production.goal);\n }\n }\n\n private _computeFirstSetForNT(NT: NoneTerminal) {\n // circle detect\n const idx = this._firstSetNTStack.findIndex((item) => item === NT);\n if (idx !== -1) {\n const computingFS = this.firstSetMap.get(NT)!;\n const len = this._firstSetNTStack.length;\n for (let i = len - 1; i > idx; i--) {\n const curNT = this._firstSetNTStack[i];\n this.firstSetMap.set(curNT, computingFS);\n }\n return computingFS;\n }\n this._firstSetNTStack.push(NT);\n\n const productionList = this.grammar.getProductionList(NT);\n const firstSet = new Set<Terminal>();\n this.firstSetMap.set(NT, firstSet);\n if (this.grammar.isNullableNT(NT)) firstSet.add(ETokenType.EPSILON);\n\n for (const production of productionList) {\n let i = 0;\n for (; i < production.derivation.length; i++) {\n const gs = production.derivation[i];\n if (GrammarUtils.isTerminal(gs)) {\n firstSet.add(<Terminal>gs);\n break;\n }\n\n const succeedFirstSet = this._computeFirstSetForNT(<NoneTerminal>gs);\n\n for (const item of succeedFirstSet) {\n if (item !== ETokenType.EPSILON) firstSet.add(item);\n }\n if (!this.grammar.isNullableNT(<NoneTerminal>gs)) break;\n }\n if (i === production.derivation.length) firstSet.add(ETokenType.EPSILON);\n }\n\n this._firstSetNTStack.pop();\n return firstSet;\n }\n}\n","import { NoneTerminal, GrammarSymbol } from \"../parser/GrammarSymbol\";\n\nexport default class Production {\n private static _id = 0;\n static pool: Map<number, Production> = new Map();\n\n readonly goal: NoneTerminal;\n readonly derivation: GrammarSymbol[];\n readonly id: number;\n\n constructor(goal: NoneTerminal, derivation: GrammarSymbol[]) {\n this.goal = goal;\n this.derivation = derivation;\n this.id = Production._id++;\n Production.pool.set(this.id, this);\n }\n}\n","import { ETokenType } from \"../common\";\nimport { NoneTerminal, GrammarSymbol } from \"./GrammarSymbol\";\nimport Production from \"../lalr/Production\";\n\nexport class Grammar {\n readonly productions: Production[];\n\n readonly startSymbol: NoneTerminal;\n\n static create(start: NoneTerminal, productions: GrammarSymbol[][]) {\n const _ps = productions.map((gsl) => {\n return new Production(<NoneTerminal>gsl[0], gsl.slice(1));\n });\n return new Grammar(start, _ps);\n }\n\n constructor(start: NoneTerminal, productions: Production[]) {\n this.startSymbol = start;\n productions.unshift(new Production(NoneTerminal.START, [start]));\n this.productions = productions;\n }\n\n getProductionList(nonTerminal: NoneTerminal) {\n return this.productions.filter((item) => item.goal === nonTerminal);\n }\n\n isNullableNT(NT: NoneTerminal) {\n return this.productions.find((item) => item.goal === NT && item.derivation[0] === ETokenType.EPSILON);\n }\n\n getProductionByID(pid: number) {\n return Production.pool.get(pid);\n }\n}\n","// Context Free Grammar of Galacean ShaderLab\nimport { ETokenType } from \"../common\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { ASTNode } from \"../parser/AST\";\nimport { Grammar } from \"../parser/Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"../parser/GrammarSymbol\";\nimport SemanticAnalyzer, { TranslationRule } from \"../parser/SemanticAnalyzer\";\nimport GrammarUtils from \"./Utils\";\n\nconst productionAndRules: [GrammarSymbol[], TranslationRule | undefined][] = [\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.gs_shader_program,\n [[NoneTerminal.global_declaration], [NoneTerminal.gs_shader_program, NoneTerminal.global_declaration]],\n ASTNode.GLShaderProgram.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_declaration,\n [\n [NoneTerminal.precision_specifier],\n [NoneTerminal.variable_declaration_statement],\n [NoneTerminal.struct_specifier],\n [NoneTerminal.function_definition],\n [NoneTerminal.global_macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n ASTNode.GlobalDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_symbol,\n [[Keyword.MACRO_CALL]],\n ASTNode.MacroCallSymbol.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_function,\n [\n [NoneTerminal.macro_call_symbol, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [\n NoneTerminal.macro_call_symbol,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.MacroCallFunction.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_undef,\n [\n [Keyword.MACRO_UNDEF, ETokenType.ID],\n [Keyword.MACRO_UNDEF, Keyword.MACRO_CALL]\n ],\n ASTNode.MacroUndef.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_push_context,\n [\n [Keyword.MACRO_IF, Keyword.MACRO_CONDITIONAL_EXPRESSION],\n [Keyword.MACRO_IFDEF, ETokenType.ID],\n [Keyword.MACRO_IFNDEF, ETokenType.ID],\n [Keyword.MACRO_IFDEF, NoneTerminal.macro_call_symbol],\n [Keyword.MACRO_IFNDEF, NoneTerminal.macro_call_symbol]\n ],\n ASTNode.MacroPushContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_pop_context,\n [[Keyword.MACRO_ENDIF]],\n ASTNode.MacroPopContext.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_elif_expression,\n [[Keyword.MACRO_ELIF, Keyword.MACRO_CONDITIONAL_EXPRESSION]],\n ASTNode.MacroElifExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_else_expression,\n [[Keyword.MACRO_ELSE]],\n ASTNode.MacroElseExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_declaration,\n [[NoneTerminal.global_declaration], [NoneTerminal.global_macro_declaration, NoneTerminal.global_declaration]],\n ASTNode.GlobalMacroDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.global_macro_branch]\n ],\n ASTNode.GlobalMacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.global_macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_declaration, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.global_macro_declaration, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.global_macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.GlobalMacroBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.VariableDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_declaration_list,\n [\n [NoneTerminal.variable_declaration],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.variable_declaration_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.VariableDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(NoneTerminal.variable_declaration_statement, [\n [NoneTerminal.variable_declaration_list, ETokenType.SEMICOLON]\n ]),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n [\n [Keyword.VOID],\n [Keyword.FLOAT],\n [Keyword.BOOL],\n [Keyword.INT],\n [Keyword.UINT],\n [Keyword.VEC2],\n [Keyword.VEC3],\n [Keyword.VEC4],\n [Keyword.BVEC2],\n [Keyword.BVEC3],\n [Keyword.BVEC4],\n [Keyword.IVEC2],\n [Keyword.IVEC3],\n [Keyword.IVEC4],\n [Keyword.UVEC2],\n [Keyword.UVEC3],\n [Keyword.UVEC4],\n [Keyword.MAT2],\n [Keyword.MAT3],\n [Keyword.MAT4],\n [Keyword.MAT2X3],\n [Keyword.MAT2X4],\n [Keyword.MAT3X2],\n [Keyword.MAT3X4],\n [Keyword.MAT4X2],\n [Keyword.MAT4X3],\n [Keyword.SAMPLER2D],\n [Keyword.SAMPLER3D],\n [Keyword.SAMPLER_CUBE],\n [Keyword.SAMPLER2D_SHADOW],\n [Keyword.SAMPLER_CUBE_SHADOW],\n [Keyword.SAMPLER2D_ARRAY],\n [Keyword.SAMPLER2D_ARRAY_SHADOW],\n [Keyword.I_SAMPLER2D],\n [Keyword.I_SAMPLER3D],\n [Keyword.I_SAMPLER_CUBE],\n [Keyword.I_SAMPLER2D_ARRAY],\n [Keyword.U_SAMPLER2D],\n [Keyword.U_SAMPLER3D],\n [Keyword.U_SAMPLER_CUBE],\n [Keyword.U_SAMPLER2D_ARRAY]\n ],\n ASTNode.ExtBuiltinTypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier_nonarray,\n [[ETokenType.ID], [NoneTerminal.ext_builtin_type_specifier_nonarray]],\n ASTNode.TypeSpecifierNonArray.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.fully_specified_type,\n [[NoneTerminal.type_specifier], [NoneTerminal.type_qualifier, NoneTerminal.type_specifier]],\n ASTNode.FullySpecifiedType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_specifier,\n [\n [NoneTerminal.type_specifier_nonarray],\n [NoneTerminal.ext_builtin_type_specifier_nonarray, NoneTerminal.array_specifier]\n ],\n ASTNode.TypeSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.type_qualifier,\n [[NoneTerminal.single_type_qualifier], [NoneTerminal.type_qualifier, NoneTerminal.single_type_qualifier]],\n ASTNode.TypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_type_qualifier,\n [\n [NoneTerminal.storage_qualifier],\n [NoneTerminal.precision_qualifier],\n [NoneTerminal.interpolation_qualifier],\n [NoneTerminal.invariant_qualifier],\n [Keyword.PRECISE]\n ],\n ASTNode.SingleTypeQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.storage_qualifier,\n [[Keyword.CONST], [Keyword.IN], [Keyword.INOUT], [Keyword.OUT], [Keyword.CENTROID]],\n // #if _VERBOSE\n ASTNode.StorageQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.interpolation_qualifier,\n [[Keyword.SMOOTH], [Keyword.FLAT]],\n // #if _VERBOSE\n ASTNode.InterpolationQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.invariant_qualifier,\n [[Keyword.INVARIANT]],\n // #if _VERBOSE\n ASTNode.InvariantQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_qualifier,\n [[Keyword.HIGHP], [Keyword.MEDIUMP], [Keyword.LOWP]],\n // #if _VERBOSE\n ASTNode.PrecisionQualifier.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_specifier,\n [\n [\n Keyword.STRUCT,\n ETokenType.ID,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ],\n [\n Keyword.STRUCT,\n ETokenType.LEFT_BRACE,\n NoneTerminal.struct_declaration_list,\n ETokenType.RIGHT_BRACE,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.StructSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration_list,\n [[NoneTerminal.struct_declaration], [NoneTerminal.struct_declaration_list, NoneTerminal.struct_declaration]],\n ASTNode.StructDeclarationList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declaration,\n [\n [NoneTerminal.type_specifier, NoneTerminal.struct_declarator_list, ETokenType.SEMICOLON],\n [\n NoneTerminal.type_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator_list,\n ETokenType.SEMICOLON\n ],\n [\n NoneTerminal.layout_qualifier,\n NoneTerminal.type_specifier,\n NoneTerminal.struct_declarator,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.macro_struct_declaration]\n ],\n ASTNode.StructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_declaration,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_struct_branch]\n ],\n ASTNode.MacroStructDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_struct_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.struct_declaration_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_struct_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroStructBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.layout_qualifier,\n [\n [\n Keyword.LAYOUT,\n ETokenType.LEFT_PAREN,\n Keyword.LOCATION,\n ETokenType.EQUAL,\n ETokenType.INT_CONSTANT,\n ETokenType.RIGHT_PAREN\n ]\n ],\n ASTNode.LayoutQualifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator_list,\n [\n [NoneTerminal.struct_declarator],\n [NoneTerminal.struct_declarator_list, ETokenType.COMMA, NoneTerminal.struct_declarator]\n ],\n ASTNode.StructDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.struct_declarator,\n [[ETokenType.ID], [ETokenType.ID, NoneTerminal.array_specifier]],\n ASTNode.StructDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.array_specifier,\n [\n [ETokenType.LEFT_BRACKET, ETokenType.RIGHT_BRACKET],\n [ETokenType.LEFT_BRACKET, NoneTerminal.integer_constant_expression, ETokenType.RIGHT_BRACKET]\n ],\n ASTNode.ArraySpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.STAR], [ETokenType.SLASH], [ETokenType.PERCENT]],\n ASTNode.IntegerConstantExpressionOperator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.integer_constant_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n ETokenType.INT_CONSTANT\n ],\n [\n NoneTerminal.integer_constant_expression,\n NoneTerminal.integer_constant_expression_operator,\n NoneTerminal.variable_identifier\n ]\n ],\n ASTNode.IntegerConstantExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditional_expression,\n [\n [NoneTerminal.logical_or_expression],\n [\n NoneTerminal.logical_or_expression,\n ETokenType.QUESTION,\n NoneTerminal.expression,\n ETokenType.COLON,\n NoneTerminal.assignment_expression\n ]\n ],\n // #if _VERBOSE\n ASTNode.ConditionalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_or_expression,\n [\n [NoneTerminal.logical_xor_expression],\n [NoneTerminal.logical_or_expression, ETokenType.OR_OP, NoneTerminal.logical_xor_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_xor_expression,\n [\n [NoneTerminal.logical_and_expression],\n [NoneTerminal.logical_xor_expression, ETokenType.XOR_OP, NoneTerminal.logical_and_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalXorExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.logical_and_expression,\n [\n [NoneTerminal.inclusive_or_expression],\n [NoneTerminal.logical_and_expression, ETokenType.AND_OP, NoneTerminal.inclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.LogicalAndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.inclusive_or_expression,\n [\n [NoneTerminal.exclusive_or_expression],\n [NoneTerminal.inclusive_or_expression, ETokenType.VERTICAL_BAR, NoneTerminal.exclusive_or_expression]\n ],\n // #if _VERBOSE\n ASTNode.InclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.exclusive_or_expression,\n [\n [NoneTerminal.and_expression],\n [NoneTerminal.exclusive_or_expression, ETokenType.CARET, NoneTerminal.and_expression]\n ],\n // #if _VERBOSE\n ASTNode.ExclusiveOrExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.and_expression,\n [\n [NoneTerminal.equality_expression],\n [NoneTerminal.and_expression, ETokenType.AMPERSAND, NoneTerminal.equality_expression]\n ],\n // #if _VERBOSE\n ASTNode.AndExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.equality_expression,\n [\n [NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.EQ_OP, NoneTerminal.relational_expression],\n [NoneTerminal.equality_expression, ETokenType.NE_OP, NoneTerminal.relational_expression]\n ],\n // #if _VERBOSE\n ASTNode.EqualityExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.relational_expression,\n [\n [NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LEFT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.RIGHT_ANGLE, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.LE_OP, NoneTerminal.shift_expression],\n [NoneTerminal.relational_expression, ETokenType.GE_OP, NoneTerminal.shift_expression]\n ],\n // #if _VERBOSE\n ASTNode.RelationalExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.shift_expression,\n [\n [NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.LEFT_OP, NoneTerminal.additive_expression],\n [NoneTerminal.shift_expression, ETokenType.RIGHT_OP, NoneTerminal.additive_expression]\n ],\n // #if _VERBOSE\n ASTNode.ShiftExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.additive_expression,\n [\n [NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.PLUS, NoneTerminal.multiplicative_expression],\n [NoneTerminal.additive_expression, ETokenType.DASH, NoneTerminal.multiplicative_expression]\n ],\n // #if _VERBOSE\n ASTNode.AdditiveExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.multiplicative_expression,\n [\n [NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.STAR, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.SLASH, NoneTerminal.unary_expression],\n [NoneTerminal.multiplicative_expression, ETokenType.PERCENT, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.MultiplicativeExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_expression,\n [\n [NoneTerminal.postfix_expression],\n [ETokenType.INC_OP, NoneTerminal.unary_expression],\n [ETokenType.DEC_OP, NoneTerminal.unary_expression],\n [NoneTerminal.unary_operator, NoneTerminal.unary_expression]\n ],\n // #if _VERBOSE\n ASTNode.UnaryExpression.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.unary_operator,\n [[ETokenType.PLUS], [ETokenType.DASH], [ETokenType.BANG], [ETokenType.TILDE]],\n // #if _VERBOSE\n ASTNode.UnaryOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.postfix_expression,\n [\n [NoneTerminal.primary_expression],\n [NoneTerminal.postfix_expression, ETokenType.LEFT_BRACKET, NoneTerminal.expression, ETokenType.RIGHT_BRACKET],\n [NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.DOT, ETokenType.ID],\n [NoneTerminal.postfix_expression, ETokenType.DOT, NoneTerminal.function_call],\n [NoneTerminal.postfix_expression, ETokenType.INC_OP],\n [NoneTerminal.postfix_expression, ETokenType.DEC_OP]\n ],\n ASTNode.PostfixExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.primary_expression,\n [\n [NoneTerminal.variable_identifier],\n [ETokenType.INT_CONSTANT],\n [ETokenType.FLOAT_CONSTANT],\n [Keyword.True],\n [Keyword.False],\n [ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.PrimaryExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.expression, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.Expression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_expression,\n [\n [NoneTerminal.conditional_expression],\n [NoneTerminal.unary_expression, NoneTerminal.assignment_operator, NoneTerminal.assignment_expression]\n ],\n ASTNode.AssignmentExpression.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.assignment_operator,\n [\n [ETokenType.EQUAL],\n [ETokenType.MUL_ASSIGN],\n [ETokenType.DIV_ASSIGN],\n [ETokenType.MOD_ASSIGN],\n [ETokenType.ADD_ASSIGN],\n [ETokenType.SUB_ASSIGN],\n [ETokenType.LEFT_ASSIGN],\n [ETokenType.RIGHT_ASSIGN],\n [ETokenType.AND_ASSIGN],\n [ETokenType.XOR_ASSIGN],\n [ETokenType.OR_ASSIGN]\n ],\n // #if _VERBOSE\n ASTNode.AssignmentOperator.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call,\n [[NoneTerminal.function_call_generic]],\n ASTNode.FunctionCall.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_generic,\n [\n [\n NoneTerminal.function_identifier,\n ETokenType.LEFT_PAREN,\n NoneTerminal.function_call_parameter_list,\n ETokenType.RIGHT_PAREN\n ],\n [NoneTerminal.function_identifier, ETokenType.LEFT_PAREN, ETokenType.RIGHT_PAREN],\n [NoneTerminal.function_identifier, Keyword.VOID, ETokenType.RIGHT_PAREN]\n ],\n ASTNode.FunctionCallGeneric.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_call_parameter_list,\n [\n [NoneTerminal.assignment_expression],\n [NoneTerminal.function_call_parameter_list, ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.function_call_parameter_list, NoneTerminal.macro_call_arg_block]\n ],\n ASTNode.FunctionCallParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_case_list,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.COMMA, NoneTerminal.assignment_expression],\n [NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_block],\n [NoneTerminal.macro_call_arg_case_list, ETokenType.COMMA, NoneTerminal.assignment_expression]\n ],\n ASTNode.MacroCallArgCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch]\n ],\n ASTNode.MacroCallArgBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_call_arg_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_call_arg_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_call_arg_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroCallArgBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_identifier,\n [[NoneTerminal.type_specifier]],\n ASTNode.FunctionIdentifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_definition,\n [[NoneTerminal.function_prototype, NoneTerminal.compound_statement_no_scope]],\n ASTNode.FunctionDefinition.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_prototype,\n [[NoneTerminal.function_declarator, ETokenType.RIGHT_PAREN]],\n ASTNode.FunctionProtoType.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_declarator,\n [[NoneTerminal.function_header], [NoneTerminal.function_header, NoneTerminal.function_parameter_list]],\n ASTNode.FunctionDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_header,\n [[NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.LEFT_PAREN]],\n ASTNode.FunctionHeader.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.function_parameter_list,\n [\n [NoneTerminal.parameter_declaration],\n [NoneTerminal.function_parameter_list, ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.function_parameter_list, NoneTerminal.macro_param_block]\n ],\n ASTNode.FunctionParameterList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_case_list,\n [\n [NoneTerminal.parameter_declaration],\n [ETokenType.COMMA, NoneTerminal.parameter_declaration],\n [NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, NoneTerminal.macro_param_block],\n [NoneTerminal.macro_param_case_list, ETokenType.COMMA, NoneTerminal.parameter_declaration]\n ],\n ASTNode.MacroParamCaseList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_param_block,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch]\n ],\n ASTNode.MacroParamBlock.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_parameter_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_param_case_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_parameter_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroParameterBranch.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declaration,\n [\n [NoneTerminal.type_qualifier, NoneTerminal.parameter_declarator],\n [NoneTerminal.parameter_declarator],\n [NoneTerminal.macro_call_symbol],\n [NoneTerminal.macro_call_function]\n ],\n ASTNode.ParameterDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.parameter_declarator,\n [\n [NoneTerminal.type_specifier, ETokenType.ID],\n [NoneTerminal.type_specifier, ETokenType.ID, NoneTerminal.array_specifier]\n ],\n ASTNode.ParameterDeclarator.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement_list,\n [[NoneTerminal.statement], [NoneTerminal.statement_list, NoneTerminal.statement]],\n ASTNode.StatementList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.statement,\n [[NoneTerminal.compound_statement], [NoneTerminal.simple_statement]],\n // #if _VERBOSE\n ASTNode.Statement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement_no_scope,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [ETokenType.LEFT_BRACE, NoneTerminal.statement_list, ETokenType.RIGHT_BRACE]\n ],\n ASTNode.CompoundStatementNoScope.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.compound_statement,\n [\n [ETokenType.LEFT_BRACE, ETokenType.RIGHT_BRACE],\n [NoneTerminal.scope_brace, NoneTerminal.statement_list, NoneTerminal.scope_end_brace]\n ],\n // #if _VERBOSE\n ASTNode.CompoundStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.simple_statement,\n [\n [NoneTerminal.declaration],\n [NoneTerminal.expression_statement],\n [NoneTerminal.selection_statement],\n [NoneTerminal.iteration_statement],\n [NoneTerminal.jump_statement],\n [NoneTerminal.macro_if_statement],\n [NoneTerminal.macro_undef],\n [Keyword.MACRO_DEFINE_EXPRESSION]\n ],\n // #if _VERBOSE\n ASTNode.SimpleStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.declaration,\n [\n [NoneTerminal.function_prototype, ETokenType.SEMICOLON],\n [NoneTerminal.init_declarator_list, ETokenType.SEMICOLON],\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ],\n [NoneTerminal.type_qualifier, ETokenType.ID, ETokenType.SEMICOLON],\n [NoneTerminal.type_qualifier, ETokenType.ID, NoneTerminal.identifier_list, ETokenType.SEMICOLON]\n ],\n ASTNode.Declaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.identifier_list,\n [\n [ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.identifier_list, ETokenType.COMMA, ETokenType.ID]\n ],\n ASTNode.IdentifierList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.init_declarator_list,\n [\n [NoneTerminal.single_declaration],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.init_declarator_list,\n ETokenType.COMMA,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.init_declarator_list, ETokenType.COMMA, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.InitDeclaratorList.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.single_declaration,\n [\n [NoneTerminal.fully_specified_type, ETokenType.ID],\n [NoneTerminal.fully_specified_type, ETokenType.ID, NoneTerminal.array_specifier],\n [\n NoneTerminal.fully_specified_type,\n ETokenType.ID,\n NoneTerminal.array_specifier,\n ETokenType.EQUAL,\n NoneTerminal.initializer\n ],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n ASTNode.SingleDeclaration.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer,\n [\n [NoneTerminal.assignment_expression],\n [ETokenType.LEFT_BRACE, NoneTerminal.initializer_list, ETokenType.RIGHT_BRACE]\n ],\n // #if _VERBOSE\n ASTNode.Initializer.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.initializer_list,\n [[NoneTerminal.initializer], [NoneTerminal.initializer_list, ETokenType.COMMA, NoneTerminal.initializer]],\n // #if _VERBOSE\n ASTNode.InitializerList.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.expression_statement,\n [[ETokenType.SEMICOLON], [NoneTerminal.expression, ETokenType.SEMICOLON]],\n // #if _VERBOSE\n ASTNode.ExpressionStatement.pool\n // #endif\n ),\n\n // dangling else ambiguity\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.selection_statement,\n [\n [Keyword.IF, ETokenType.LEFT_PAREN, NoneTerminal.expression, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.IF,\n ETokenType.LEFT_PAREN,\n NoneTerminal.expression,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement,\n Keyword.ELSE,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.SelectionStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.iteration_statement,\n [\n [Keyword.WHILE, ETokenType.LEFT_PAREN, NoneTerminal.condition, ETokenType.RIGHT_PAREN, NoneTerminal.statement],\n [\n Keyword.FOR,\n ETokenType.LEFT_PAREN,\n NoneTerminal.for_init_statement,\n NoneTerminal.for_rest_statement,\n ETokenType.RIGHT_PAREN,\n NoneTerminal.statement\n ]\n ],\n // #if _VERBOSE\n ASTNode.IterationStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.precision_specifier,\n [\n [\n Keyword.PRECISION,\n NoneTerminal.precision_qualifier,\n NoneTerminal.ext_builtin_type_specifier_nonarray,\n ETokenType.SEMICOLON\n ]\n ],\n ASTNode.PrecisionSpecifier.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_init_statement,\n [[NoneTerminal.expression_statement], [NoneTerminal.declaration]],\n // #if _VERBOSE\n ASTNode.ForInitStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.condition,\n [\n [NoneTerminal.expression],\n [NoneTerminal.fully_specified_type, ETokenType.ID, ETokenType.EQUAL, NoneTerminal.initializer]\n ],\n // #if _VERBOSE\n ASTNode.Condition.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.for_rest_statement,\n [\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON],\n [NoneTerminal.conditionopt, ETokenType.SEMICOLON, NoneTerminal.expression]\n ],\n // #if _VERBOSE\n ASTNode.ForRestStatement.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.conditionopt,\n [[ETokenType.EPSILON], [NoneTerminal.condition]],\n // #if _VERBOSE\n ASTNode.ConditionOpt.pool\n // #endif\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.jump_statement,\n [\n [Keyword.CONTINUE, ETokenType.SEMICOLON],\n [Keyword.BREAK, ETokenType.SEMICOLON],\n [Keyword.RETURN, ETokenType.SEMICOLON],\n [Keyword.RETURN, NoneTerminal.expression, ETokenType.SEMICOLON],\n [Keyword.DISCARD, ETokenType.SEMICOLON]\n ],\n ASTNode.JumpStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_brace,\n [[ETokenType.LEFT_BRACE]],\n ASTNode.ScopeBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.scope_end_brace,\n [[ETokenType.RIGHT_BRACE]],\n ASTNode.ScopeEndBrace.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.variable_identifier,\n [[ETokenType.ID], [NoneTerminal.macro_call_symbol], [NoneTerminal.macro_call_function]],\n ASTNode.VariableIdentifier.pool\n ),\n\n // Macros ...\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_if_statement,\n [\n [NoneTerminal.macro_push_context, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_push_context, NoneTerminal.macro_branch]\n ],\n ASTNode.MacroIfStatement.pool\n ),\n\n ...GrammarUtils.createProductionWithOptions(\n NoneTerminal.macro_branch,\n [\n [NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.statement_list, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.statement_list, NoneTerminal.macro_pop_context],\n [NoneTerminal.macro_elif_expression, NoneTerminal.macro_branch],\n [NoneTerminal.macro_else_expression, NoneTerminal.macro_pop_context]\n ],\n ASTNode.MacroBranch.pool\n )\n];\n\nconst createGrammar = () =>\n Grammar.create(\n NoneTerminal.gs_shader_program,\n productionAndRules.map((item) => item[0])\n );\n\nconst addTranslationRule = (sa: SemanticAnalyzer) => {\n for (let i = 0; i < productionAndRules.length; i++) {\n const rule = productionAndRules[i][1];\n if (rule) {\n sa.addTranslationRule(i, rule);\n }\n }\n};\n\nexport { addTranslationRule, createGrammar };\n","import { Logger } from \"@galacean/engine\";\nimport { ETokenType } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { GSError, GSErrorName } from \"../GSError\";\nimport { LALR1 } from \"../lalr\";\nimport { addTranslationRule, createGrammar } from \"../lalr/CFG\";\nimport { EAction, StateActionTable, StateGotoTable } from \"../lalr/types\";\nimport { MacroDefineList } from \"../Preprocessor\";\nimport { ParserUtils } from \"../ParserUtils\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ASTNode, TreeNode } from \"./AST\";\nimport { Grammar } from \"./Grammar\";\nimport { GrammarSymbol, NoneTerminal } from \"./GrammarSymbol\";\nimport SematicAnalyzer from \"./SemanticAnalyzer\";\nimport { TraceStackItem } from \"./types\";\n\n/**\n * The syntax parser and sematic analyzer of `ShaderLab` compiler\n */\nexport class ShaderTargetParser {\n readonly actionTable: StateActionTable;\n readonly gotoTable: StateGotoTable;\n readonly grammar: Grammar;\n readonly sematicAnalyzer: SematicAnalyzer;\n private _traceBackStack: (TraceStackItem | number)[] = [];\n\n private get curState() {\n return this._traceBackStack[this._traceBackStack.length - 1] as number;\n }\n private get stateActionTable() {\n return this.actionTable.get(this.curState)!;\n }\n private get stateGotoTable() {\n return this.gotoTable.get(this.curState);\n }\n\n // #if _VERBOSE\n /** @internal */\n get errors() {\n return this.sematicAnalyzer.errors;\n }\n // #endif\n\n static _singleton: ShaderTargetParser;\n\n static create() {\n if (!this._singleton) {\n const grammar = createGrammar();\n const generator = new LALR1(grammar);\n generator.generate();\n this._singleton = new ShaderTargetParser(generator.actionTable, generator.gotoTable, grammar);\n addTranslationRule(this._singleton.sematicAnalyzer);\n }\n\n return this._singleton;\n }\n\n private constructor(actionTable: StateActionTable, gotoTable: StateGotoTable, grammar: Grammar) {\n this.actionTable = actionTable;\n this.gotoTable = gotoTable;\n this.grammar = grammar;\n this.sematicAnalyzer = new SematicAnalyzer();\n }\n\n parse(tokens: Generator<BaseToken, BaseToken>, macroDefineList: MacroDefineList): ASTNode.GLShaderProgram | null {\n this.sematicAnalyzer.reset(macroDefineList);\n const start = performance.now();\n const { _traceBackStack: traceBackStack, sematicAnalyzer } = this;\n traceBackStack.push(0);\n\n let nextToken = tokens.next();\n let loopCount = 0;\n while (true) {\n loopCount += 1;\n const token = nextToken.value;\n\n const actionInfo = this.stateActionTable.get(token.type);\n if (actionInfo?.action === EAction.Shift) {\n traceBackStack.push(token, actionInfo.target!);\n nextToken = tokens.next();\n } else if (actionInfo?.action === EAction.Accept) {\n Logger.info(\n `[Task - AST compilation] Accept! State automata run ${loopCount} times! cost time ${\n performance.now() - start\n }ms`\n );\n sematicAnalyzer.acceptRule?.(sematicAnalyzer);\n return sematicAnalyzer.semanticStack.pop() as ASTNode.GLShaderProgram;\n } else if (actionInfo?.action === EAction.Reduce) {\n const target = actionInfo.target!;\n const reduceProduction = this.grammar.getProductionByID(target)!;\n const translationRule = sematicAnalyzer.getTranslationRule(reduceProduction.id);\n\n const values: (TreeNode | BaseToken)[] = [];\n\n for (let i = reduceProduction.derivation.length - 1; i >= 0; i--) {\n if (reduceProduction.derivation[i] === ETokenType.EPSILON) continue;\n traceBackStack.pop();\n const token = traceBackStack.pop();\n if (token instanceof BaseToken) {\n values.unshift(token);\n } else {\n const astNode = sematicAnalyzer.semanticStack.pop()!;\n values.unshift(astNode);\n }\n }\n translationRule?.(sematicAnalyzer, ...values);\n\n const gotoTable = this.stateGotoTable;\n traceBackStack.push(reduceProduction.goal);\n\n const nextState = gotoTable?.get(reduceProduction.goal)!;\n traceBackStack.push(nextState);\n continue;\n } else {\n const error = ShaderLabUtils.createGSError(\n `Unexpected token ${token.lexeme}`,\n GSErrorName.CompilationError,\n ShaderLab._processingPassText,\n token.location\n );\n // #if _VERBOSE\n this.sematicAnalyzer.errors.push(<GSError>error);\n // #endif\n return null;\n }\n }\n }\n\n // #if _VERBOSE\n private _printStack(nextToken: BaseToken) {\n let str = \"\";\n for (let i = 0; i < this._traceBackStack.length - 1; i++) {\n const state = <NoneTerminal>this._traceBackStack[i++];\n const token = this._traceBackStack[i];\n str += `State${state} - ${(<BaseToken>token).lexeme ?? ParserUtils.toString(token as GrammarSymbol)}; `;\n }\n str += `State${this._traceBackStack[this._traceBackStack.length - 1]} --- ${nextToken.lexeme}`;\n Logger.info(str);\n }\n // #endif\n}\n","function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { IRenderStates, IShaderPassSource, IShaderSource, ISubShaderSource } from \"@galacean/engine-design\";\n\nexport class ShaderSourceFactory {\n static createRenderStates(): IRenderStates {\n return {\n constantMap: {},\n variableMap: {}\n };\n }\n\n static createShaderSource(name: string): IShaderSource {\n return {\n name,\n subShaders: [],\n pendingContents: [],\n renderStates: this.createRenderStates()\n };\n }\n\n static createSubShaderSource(name: string): ISubShaderSource {\n return {\n name,\n passes: [],\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n };\n }\n\n static createShaderPassSource(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n\n static createUsePass(name: string): IShaderPassSource {\n return {\n name,\n pendingContents: [],\n isUsePass: true,\n tags: {},\n renderStates: this.createRenderStates()\n } as IShaderPassSource;\n }\n}\n","import { IBaseSymbol } from \"../common/IBaseSymbol\";\n\nexport class ShaderSourceSymbol implements IBaseSymbol {\n public isInMacroBranch: boolean = false;\n\n constructor(\n public ident: string,\n public type: number,\n public value?: any\n ) {}\n\n set(ident: string, type: number, value?: any): void {\n this.ident = ident;\n this.type = type;\n this.value = value;\n }\n\n equal(other: ShaderSourceSymbol): boolean {\n return this.type === other.type;\n }\n}\n","import { Color } from \"@galacean/engine\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { GSErrorName } from \"../GSError\";\nimport { ShaderLab } from \"../ShaderLab\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\n\nexport default class SourceLexer extends BaseLexer {\n hasPendingContent = false;\n\n private static _keywordLexemeTable = <Record<string, Keyword>>{\n RenderQueueType: Keyword.GSRenderQueueType,\n BlendState: Keyword.GSBlendState,\n DepthState: Keyword.GSDepthState,\n StencilState: Keyword.GSStencilState,\n RasterState: Keyword.GSRasterState,\n EditorProperties: Keyword.GSEditorProperties,\n EditorMacros: Keyword.GSEditorMacros,\n Editor: Keyword.GSEditor,\n Tags: Keyword.GSTags,\n VertexShader: Keyword.GSVertexShader,\n FragmentShader: Keyword.GSFragmentShader,\n SubShader: Keyword.GSSubShader,\n Pass: Keyword.GSPass,\n BlendFactor: Keyword.GSBlendFactor,\n BlendOperation: Keyword.GSBlendOperation,\n Bool: Keyword.GSBool,\n Number: Keyword.GSNumber,\n Color: Keyword.GSColor,\n CompareFunction: Keyword.GSCompareFunction,\n StencilOperation: Keyword.GSStencilOperation,\n CullMode: Keyword.GSCullMode,\n UsePass: Keyword.GSUsePass,\n\n true: Keyword.True,\n false: Keyword.False\n };\n\n private static _symbolLexemeTable = <Record<string, Keyword>>{\n \"{\": Keyword.LeftBrace,\n \"}\": Keyword.RightBrace,\n \"=\": Keyword.Equal\n };\n\n private static _isWordSeparatorChar(charCode: number): boolean {\n return (\n charCode === 123 || // {\n charCode === 125 || // }\n charCode === 61 || // =\n charCode === 59 || // ;\n charCode === 46 || // . CullMode.Back\n charCode === 91 || // [ Enabled[0],\n charCode === 40 // ( Color(1.0, 1.0, 1.0, 1.0);\n );\n }\n\n private static _scanDigits(source: string, startIndex: number): number {\n let currentIndex = startIndex;\n while (currentIndex < source.length) {\n const charCode = source.charCodeAt(currentIndex);\n if (BaseLexer.isDigit(charCode)) {\n currentIndex++;\n } else {\n break;\n }\n }\n return currentIndex;\n }\n\n scanNumber(): number {\n this.skipCommentsAndSpace();\n const start = this._currentIndex;\n const source = this._source;\n let index = this._currentIndex;\n\n // Scan integer part\n index = SourceLexer._scanDigits(source, index);\n\n // Scan decimal part if present\n if (source[index] === \".\") {\n index = SourceLexer._scanDigits(source, index + 1);\n }\n\n this.advance(index - this._currentIndex);\n return Number(source.substring(start, index));\n }\n\n scanColor(): Color {\n this.scanLexeme(\"(\");\n\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n\n r = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n g = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n b = this.scanNumber();\n this.skipCommentsAndSpace();\n if (this.peek(1) !== \")\") {\n this.scanLexeme(\",\");\n a = this.scanNumber();\n this.skipCommentsAndSpace();\n }\n }\n }\n\n this.scanLexeme(\")\");\n return new Color(r, g, b, a);\n }\n\n override scanToken(): BaseToken {\n while (true) {\n this.skipCommentsAndSpace();\n\n if (this.isEnd()) {\n return;\n }\n\n const start = this.getShaderPosition(0);\n if (BaseLexer.isAlpha(this.getCurCharCode())) {\n const wordToken = this._scanWord(start);\n if (wordToken !== null) {\n return wordToken;\n }\n this.hasPendingContent = true;\n continue; // Continue loop to scan next token if word was invalid\n }\n\n const currentChar = this.getCurChar();\n const symbolKeyword = SourceLexer._symbolLexemeTable[currentChar];\n if (symbolKeyword !== undefined) {\n this.advance(1);\n const token = BaseToken.pool.get();\n token.set(symbolKeyword, currentChar, start);\n return token;\n }\n\n // Skip unrecognized character and continue\n this.advance(1);\n }\n }\n\n // #if _VERBOSE\n scanToCharacter(char: string): void {\n while (this.getCurChar() !== char && !this.isEnd()) {\n this.advance(1);\n }\n this.advance(1);\n }\n // #endif\n\n createCompileError(message: string, location?: ShaderPosition | ShaderRange) {\n return ShaderLabUtils.createGSError(\n message,\n GSErrorName.CompilationError,\n this.source,\n location ?? this.getShaderPosition(0)\n );\n }\n\n private _scanWord(start: ShaderPosition): BaseToken | null {\n // Scan the complete word first\n while (BaseLexer.isAlnum(this.getCurCharCode()) && !this.isEnd()) {\n this.advance(1);\n }\n const end = this.getShaderPosition(0);\n\n // Validate both boundaries in one optimized call\n if (!this._validateWordBoundaries(start.index, end.index)) {\n return null; // Invalid word due to boundary violation\n }\n\n const lexeme = this._source.substring(start.index, end.index);\n const tokenType = SourceLexer._keywordLexemeTable[lexeme] ?? ETokenType.ID;\n const range = ShaderLab.createRange(start, end);\n const token = BaseToken.pool.get();\n token.set(tokenType, lexeme, range);\n return token;\n }\n\n private _validateWordBoundaries(startIndex: number, endIndex: number): boolean {\n const source = this._source;\n\n // Check previous boundary\n if (startIndex > 0) {\n const prevCharCode = source.charCodeAt(startIndex - 1);\n if (!this._isValidWordBoundary(prevCharCode)) {\n return false;\n }\n }\n\n // Check next boundary\n if (endIndex < source.length) {\n const nextCharCode = source.charCodeAt(endIndex);\n if (!this._isValidWordBoundary(nextCharCode)) {\n return false;\n }\n }\n\n return true;\n }\n\n private _isValidWordBoundary(charCode: number): boolean {\n return BaseLexer.isWhiteSpaceChar(charCode, true) || SourceLexer._isWordSeparatorChar(charCode);\n }\n}\n","import {\n BlendFactor,\n BlendOperation,\n Color,\n CompareFunction,\n CullMode,\n Logger,\n RenderQueueType,\n RenderStateElementKey,\n StencilOperation\n} from \"@galacean/engine\";\nimport { IRenderStates, IShaderPassSource, IShaderSource, IStatement, ISubShaderSource } from \"@galacean/engine-design\";\nimport { ETokenType, ShaderPosition, ShaderRange } from \"../common\";\nimport { BaseToken } from \"../common/BaseToken\";\nimport { SymbolTableStack } from \"../common/SymbolTableStack\";\nimport { GSErrorName } from \"../GSError\";\n// #if _VERBOSE\nimport { GSError } from \"../GSError\";\n// #endif\nimport { BaseLexer } from \"../common/BaseLexer\";\nimport { Keyword } from \"../common/enums/Keyword\";\nimport { SymbolTable } from \"../common/SymbolTable\";\nimport { ShaderLabUtils } from \"../ShaderLabUtils\";\nimport { ShaderSourceFactory } from \"./ShaderSourceFactory\";\nimport { ShaderSourceSymbol } from \"./ShaderSourceSymbol\";\nimport SourceLexer from \"./SourceLexer\";\n\n/**\n * @internal\n */\nexport class ShaderSourceParser {\n static readonly errors = new Array<GSError>();\n\n private static _renderStateConstMap = <Record<string, Record<string, number | string | boolean>>>{\n RenderQueueType,\n CompareFunction,\n StencilOperation,\n BlendOperation,\n BlendFactor,\n CullMode\n };\n private static _symbolTableStack = new SymbolTableStack<ShaderSourceSymbol, SymbolTable<ShaderSourceSymbol>>();\n private static _lexer = new SourceLexer();\n private static _lookupSymbol = new ShaderSourceSymbol(\"\", null);\n\n static parse(sourceCode: string): IShaderSource {\n const startTime = performance.now();\n\n // Clear previous data\n this.errors.length = 0;\n this._symbolTableStack.clear();\n this._pushScope();\n\n const lexer = this._lexer;\n lexer.setSource(sourceCode);\n\n const shaderSource = this._parseShader(lexer);\n\n const shaderPendingContents = shaderSource.pendingContents;\n const shaderRenderStates = shaderSource.renderStates;\n for (let i = 0, n = shaderSource.subShaders.length; i < n; i++) {\n const subShader = shaderSource.subShaders[i];\n const curSubShaderGlobalStatements = shaderPendingContents.concat(subShader.pendingContents);\n const globalSubShaderStates = {\n constantMap: { ...shaderRenderStates.constantMap },\n variableMap: { ...shaderRenderStates.variableMap }\n };\n this._mergeRenderStates(globalSubShaderStates, subShader.renderStates);\n\n for (let j = 0, m = subShader.passes.length; j < m; j++) {\n const pass = subShader.passes[j];\n const globalPassRenderStates = {\n constantMap: { ...globalSubShaderStates.constantMap },\n variableMap: { ...globalSubShaderStates.variableMap }\n };\n this._mergeRenderStates(globalPassRenderStates, pass.renderStates);\n pass.renderStates = globalPassRenderStates;\n\n if (pass.isUsePass) continue;\n const passGlobalStatements = curSubShaderGlobalStatements.concat(pass.pendingContents);\n pass.contents = passGlobalStatements.map((item) => item.content).join(\"\\n\");\n }\n }\n\n Logger.info(`[Task - Source compilation] cost time ${performance.now() - startTime}ms`);\n return shaderSource;\n }\n\n private static _parseShader(lexer: SourceLexer): IShaderSource {\n // Parse shader header\n lexer.scanLexeme(\"Shader\");\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const shaderSource = ShaderSourceFactory.createShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n let braceLevel = 1;\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n const { pendingContents } = shaderSource;\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSSubShader:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n const subShader = this._parseSubShader();\n shaderSource.subShaders.push(subShader);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSEditorProperties:\n case Keyword.GSEditorMacros:\n case Keyword.GSEditor:\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n lexer.scanPairedChar(\"{\", \"}\", true, false);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, pendingContents);\n this._popScope();\n return shaderSource;\n }\n break;\n default:\n start = this._parseRenderState(token, start, pendingContents, shaderSource.renderStates);\n }\n }\n }\n\n private static _parseRenderStateDeclarationOrAssignment(outRenderStates: IRenderStates, stateToken: BaseToken): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\"{\");\n const renderState = this._parseRenderStateProperties(stateToken.lexeme);\n const symbol = new ShaderSourceSymbol(token.lexeme, stateToken.type, renderState);\n this._symbolTableStack.insert(symbol);\n } else if (token.lexeme === \"=\") {\n // Check if it's direct assignment syntax sugar or variable assignment\n const nextToken = lexer.scanToken();\n\n let renderState: IRenderStates;\n if (nextToken.lexeme === \"{\") {\n // Syntax: DepthState = { ... }\n renderState = this._parseRenderStateProperties(stateToken.lexeme);\n } else {\n // Syntax: DepthState = customDepthState;\n lexer.scanLexeme(\";\");\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(nextToken.lexeme, stateToken.type);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm?.value) {\n this._createCompileError(`Invalid \"${stateToken.lexeme}\" variable: ${nextToken.lexeme}`, nextToken.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n renderState = sm.value as IRenderStates;\n }\n this._mergeRenderStates(outRenderStates, renderState);\n }\n }\n\n private static _mergeRenderStates(outTarget: IRenderStates, source: IRenderStates): void {\n // For each key in the source, remove it from the opposite map in target to ensure proper override\n const { constantMap: targetConstantMap, variableMap: targetVariableMap } = outTarget;\n const { constantMap: sourceConstantMap, variableMap: sourceVariableMap } = source;\n\n for (const key in sourceConstantMap) {\n delete targetVariableMap[key];\n targetConstantMap[key] = sourceConstantMap[key];\n }\n\n for (const key in sourceVariableMap) {\n delete targetConstantMap[key];\n targetVariableMap[key] = sourceVariableMap[key];\n }\n }\n\n private static _parseVariableDeclaration(): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, token.type);\n this._symbolTableStack.insert(symbol);\n }\n\n private static _pushScope(): void {\n const symbolTable = new SymbolTable<ShaderSourceSymbol>();\n this._symbolTableStack.pushScope(symbolTable);\n }\n\n private static _popScope(): void {\n this._symbolTableStack.popScope();\n }\n\n private static _parseRenderStateProperties(state: string): IRenderStates {\n const lexer = this._lexer;\n const renderStates = ShaderSourceFactory.createRenderStates();\n while (lexer.getCurChar() !== \"}\") {\n this._parseRenderStateProperty(state, renderStates);\n lexer.skipCommentsAndSpace();\n }\n lexer.advance(1);\n return renderStates;\n }\n\n private static _createCompileError(message: string, location?: ShaderPosition | ShaderRange): void {\n const error = this._lexer.createCompileError(message, location);\n // #if _VERBOSE\n this.errors.push(<GSError>error);\n // #endif\n }\n\n private static _parseRenderStateProperty(stateLexeme: string, out: IRenderStates): void {\n const lexer = this._lexer;\n const propertyToken = lexer.scanToken();\n const propertyLexeme = propertyToken.lexeme;\n let stateElementKey = propertyLexeme;\n if (stateLexeme === \"BlendState\" && propertyLexeme !== \"BlendColor\" && propertyLexeme !== \"AlphaToCoverage\") {\n let keyIndex = 0;\n const scannedLexeme = lexer.scanTwoExpectedLexemes(\"[\", \"=\");\n if (scannedLexeme === \"[\") {\n keyIndex = lexer.scanNumber();\n lexer.scanLexeme(\"]\");\n lexer.scanLexeme(\"=\");\n } else if (scannedLexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect '[' or '=', but got unexpected token`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n stateElementKey += keyIndex;\n } else {\n lexer.scanLexeme(\"=\");\n }\n\n const renderStateElementKey = RenderStateElementKey[stateLexeme + stateElementKey];\n if (renderStateElementKey === undefined) {\n this._createCompileError(`Invalid render state property ${propertyLexeme}`);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n\n lexer.skipCommentsAndSpace();\n let propertyValue: number | string | boolean | Color;\n\n const curCharCode = lexer.getCurCharCode();\n if (BaseLexer.isDigit(curCharCode) || curCharCode === 46) {\n // Digit or '.'\n propertyValue = lexer.scanNumber();\n } else {\n const valueToken = lexer.scanToken();\n const valueTokenType = valueToken.type;\n\n if (valueTokenType === Keyword.True) {\n propertyValue = true;\n } else if (valueTokenType === Keyword.False) {\n propertyValue = false;\n } else if (valueTokenType === Keyword.GSColor) {\n propertyValue = lexer.scanColor();\n } else if (lexer.getCurChar() === \".\") {\n lexer.advance(1);\n const constValueToken = lexer.scanToken();\n propertyValue = this._renderStateConstMap[valueToken.lexeme]?.[constValueToken.lexeme];\n if (propertyValue == undefined) {\n this._createCompileError(\n `Invalid engine constant: ${valueToken.lexeme}.${constValueToken.lexeme}`,\n constValueToken.location\n );\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n } else {\n propertyValue = valueToken.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(valueToken.lexeme, ETokenType.ID);\n if (!this._symbolTableStack.lookup(lookupSymbol)) {\n this._createCompileError(`Invalid ${stateLexeme} variable: ${valueToken.lexeme}`, valueToken.location);\n // #if _VERBOSE\n lexer.scanToCharacter(\";\");\n return;\n // #endif\n }\n }\n }\n lexer.scanLexeme(\";\");\n if (typeof propertyValue === \"string\") {\n out.variableMap[renderStateElementKey] = propertyValue;\n } else {\n out.constantMap[renderStateElementKey] = propertyValue;\n }\n }\n\n private static _parseRenderQueueDeclarationOrAssignment(renderStates: IRenderStates): void {\n const lexer = this._lexer;\n const token = lexer.scanToken();\n if (token.type === ETokenType.ID) {\n // Declaration\n lexer.scanLexeme(\";\");\n const symbol = new ShaderSourceSymbol(token.lexeme, Keyword.GSRenderQueueType);\n this._symbolTableStack.insert(symbol);\n return;\n }\n\n if (token.lexeme !== \"=\") {\n this._createCompileError(`Invalid syntax, expect character '=', but got ${token.lexeme}`, token.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n const word = lexer.scanToken();\n lexer.scanLexeme(\";\");\n const value = this._renderStateConstMap.RenderQueueType[word.lexeme];\n const key = RenderStateElementKey.RenderQueueType;\n if (value == undefined) {\n renderStates.variableMap[key] = word.lexeme;\n const lookupSymbol = this._lookupSymbol;\n lookupSymbol.set(word.lexeme, Keyword.GSRenderQueueType);\n const sm = this._symbolTableStack.lookup(lookupSymbol);\n if (!sm) {\n this._createCompileError(`Invalid RenderQueueType variable: ${word.lexeme}`, word.location);\n // #if _VERBOSE\n return;\n // #endif\n }\n } else {\n renderStates.constantMap[key] = value;\n }\n }\n\n private static _addPendingContents(\n start: ShaderPosition,\n backOffset: number,\n outPendingContents: IStatement[]\n ): void {\n const lexer = this._lexer;\n if (lexer.hasPendingContent) {\n const endIndex = lexer.currentIndex - backOffset;\n outPendingContents.push({\n range: { start, end: { ...lexer.getShaderPosition(0), index: endIndex - 1 } },\n content: lexer.source.substring(start.index, endIndex - 1)\n });\n lexer.hasPendingContent = false;\n }\n }\n\n private static _parseSubShader(): ISubShaderSource {\n const lexer = this._lexer;\n this._pushScope();\n\n let braceLevel = 1;\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const subShaderSource = ShaderSourceFactory.createSubShaderSource(name);\n lexer.scanLexeme(\"{\");\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSPass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const pass = this._parsePass();\n subShaderSource.passes.push(pass);\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.GSUsePass:\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n subShaderSource.passes.push(ShaderSourceFactory.createUsePass(name));\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, subShaderSource.pendingContents);\n this._popScope();\n return subShaderSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n subShaderSource.pendingContents,\n subShaderSource.renderStates,\n subShaderSource.tags\n );\n }\n }\n }\n\n private static _parseTags(tags: Record<string, number | string | boolean>): void {\n const lexer = this._lexer;\n lexer.scanLexeme(\"{\");\n while (true) {\n const ident = lexer.scanToken();\n lexer.scanLexeme(\"=\");\n const value = lexer.scanPairedChar('\"', '\"', false, false);\n lexer.skipCommentsAndSpace();\n\n tags[ident.lexeme] = value;\n\n if (lexer.peek(1) === \"}\") {\n lexer.advance(1);\n return;\n }\n lexer.scanLexeme(\",\");\n }\n }\n\n private static _parsePass(): IShaderPassSource {\n this._pushScope();\n const lexer = this._lexer;\n\n const name = lexer.scanPairedChar('\"', '\"', false, false);\n const passSource = ShaderSourceFactory.createShaderPassSource(name);\n lexer.scanLexeme(\"{\");\n let braceLevel = 1;\n\n lexer.skipCommentsAndSpace();\n let start = lexer.getShaderPosition(0);\n\n while (true) {\n const token = lexer.scanToken();\n switch (token.type) {\n case Keyword.GSVertexShader:\n case Keyword.GSFragmentShader:\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n lexer.scanLexeme(\"=\");\n const entry = lexer.scanToken();\n if (passSource[token.lexeme]) {\n const error = ShaderLabUtils.createGSError(\n \"Reassign main entry\",\n GSErrorName.CompilationError,\n lexer.source,\n lexer.getShaderPosition(0)\n );\n // #if _VERBOSE\n Logger.error(error.toString());\n throw error;\n // #endif\n }\n const key = token.type === Keyword.GSVertexShader ? \"vertexEntry\" : \"fragmentEntry\";\n passSource[key] = entry.lexeme;\n lexer.scanLexeme(\";\");\n start = lexer.getShaderPosition(0);\n break;\n case Keyword.LeftBrace:\n ++braceLevel;\n break;\n case Keyword.RightBrace:\n if (--braceLevel === 0) {\n this._addPendingContents(start, token.lexeme.length, passSource.pendingContents);\n this._popScope();\n return passSource;\n }\n break;\n default:\n start = this._parseRenderStateAndTags(\n token,\n start,\n passSource.pendingContents,\n passSource.renderStates,\n passSource.tags\n );\n }\n }\n }\n\n private static _parseRenderStateAndTags(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates,\n outTags: Record<string, number | string | boolean>\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSTags:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseTags(outTags);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n start = this._parseRenderState(token, start, outGlobalContents, outRenderStates);\n }\n return start;\n }\n\n private static _parseRenderState(\n token: BaseToken<number>,\n start: ShaderPosition,\n outGlobalContents: IStatement[],\n outRenderStates: IRenderStates\n ): ShaderPosition {\n switch (token.type) {\n case Keyword.GSBlendState:\n case Keyword.GSDepthState:\n case Keyword.GSRasterState:\n case Keyword.GSStencilState:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderStateDeclarationOrAssignment(outRenderStates, token);\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSBlendFactor:\n case Keyword.GSBlendOperation:\n case Keyword.GSBool:\n case Keyword.GSNumber:\n case Keyword.GSColor:\n case Keyword.GSCompareFunction:\n case Keyword.GSStencilOperation:\n case Keyword.GSCullMode:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseVariableDeclaration();\n start = this._lexer.getShaderPosition(0);\n break;\n case Keyword.GSRenderQueueType:\n this._addPendingContents(start, token.lexeme.length, outGlobalContents);\n this._parseRenderQueueDeclarationOrAssignment(outRenderStates);\n start = this._lexer.getShaderPosition(0);\n break;\n default:\n // Unrecognized tokens are defined as pending content\n this._lexer.hasPendingContent = true;\n }\n return start;\n }\n}\n","import { Logger, ShaderMacro, ShaderLanguage } from \"@galacean/engine\";\nimport { IShaderLab, IShaderSource } from \"@galacean/engine-design\";\nimport { IShaderProgramSource } from \"@galacean/engine-design/types/shader-lab/IShaderProgramSource\";\nimport { GLES100Visitor, GLES300Visitor } from \"./codeGen\";\nimport { ShaderPosition, ShaderRange } from \"./common\";\nimport { Lexer } from \"./lexer\";\nimport { MacroParser } from \"./macroProcessor/MacroParser\";\nimport { ShaderTargetParser } from \"./parser\";\nimport { Preprocessor } from \"./Preprocessor\";\nimport { ShaderLabUtils } from \"./ShaderLabUtils\";\nimport { ShaderSourceParser } from \"./sourceParser/ShaderSourceParser\";\n\nexport class ShaderLab implements IShaderLab {\n private static _parser = ShaderTargetParser.create();\n private static _shaderPositionPool = ShaderLabUtils.createObjectPool(ShaderPosition);\n private static _shaderRangePool = ShaderLabUtils.createObjectPool(ShaderRange);\n\n // #if _VERBOSE\n static _processingPassText?: string;\n // #endif\n\n static createPosition(index: number, line?: number, column?: number): ShaderPosition {\n const position = this._shaderPositionPool.get();\n position.set(\n index,\n // #if _VERBOSE\n line,\n column\n // #endif\n );\n return position;\n }\n\n static createRange(start: ShaderPosition, end: ShaderPosition): ShaderRange {\n const range = this._shaderRangePool.get();\n range.set(start, end);\n return range;\n }\n\n _parseShaderSource(sourceCode: string): IShaderSource {\n ShaderLabUtils.clearAllShaderLabObjectPool();\n const shaderSource = ShaderSourceParser.parse(sourceCode);\n\n // #if _VERBOSE\n this._logErrors(ShaderSourceParser.errors);\n // #endif\n\n return shaderSource;\n }\n\n _parseShaderPass(\n source: string,\n vertexEntry: string,\n fragmentEntry: string,\n backend: ShaderLanguage,\n basePathForIncludeKey: string\n ): IShaderProgramSource | undefined {\n const totalStartTime = performance.now();\n const macroDefineList = {};\n Preprocessor._repeatIncludeSet.clear();\n const noIncludeContent = Preprocessor.parse(source, basePathForIncludeKey, macroDefineList);\n Logger.info(`[Task - Pre processor] cost time ${performance.now() - totalStartTime}ms`);\n\n const lexer = new Lexer(noIncludeContent, macroDefineList);\n\n const tokens = lexer.tokenize();\n const { _parser: parser } = ShaderLab;\n\n ShaderLab._processingPassText = noIncludeContent;\n\n const program = parser.parse(tokens, macroDefineList);\n\n // #if _VERBOSE\n this._logErrors(parser.errors);\n // #endif\n\n if (!program) {\n return undefined;\n }\n\n const codeGen = backend === ShaderLanguage.GLSLES100 ? GLES100Visitor.getVisitor() : GLES300Visitor.getVisitor();\n\n const codeGenStartTime = performance.now();\n const ret = codeGen.visitShaderProgram(program, vertexEntry, fragmentEntry);\n Logger.info(`[Task - CodeGen] cost time: ${performance.now() - codeGenStartTime}ms`);\n Logger.info(`[Task - Total compilation] cost time: ${performance.now() - totalStartTime}ms`);\n ShaderLab._processingPassText = undefined;\n\n // #if _VERBOSE\n this._logErrors(codeGen.errors);\n // #endif\n\n return ret;\n }\n\n _parseMacros(content: string, macros: ShaderMacro[]): string {\n const startTime = performance.now();\n const parsedContent = MacroParser.parse(content, macros);\n Logger.info(`[Task - parse macros] cost time: ${performance.now() - startTime}ms`);\n\n // #if _VERBOSE\n this._logErrors(MacroParser._errors);\n // #endif\n\n return parsedContent;\n }\n\n // #if _VERBOSE\n /**\n * @internal\n */\n _logErrors(errors: Error[]) {\n if (errors.length === 0 || !Logger.isEnabled) return;\n Logger.error(`${errors.length} errors occur!`);\n for (const err of errors) {\n Logger.error(err.toString());\n }\n }\n // #endif\n}\n","export { ShaderLab } from \"./ShaderLab\";\n\nexport * from \"./GSError\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nlet mode = \"Release\";\n// #if _VERBOSE\nmode = \"Verbose\";\n// #endif\n\nconsole.log(`Galacean Engine ShaderLab Version: ${version} | Mode: ${mode}`);\n"],"names":["ShaderRange","set","start","end","dispose","ShaderPosition","index","ETokenType","TypeAny","Keyword","ShaderLabUtils","createObjectPool","type","pool","ClearableObjectPool","_shaderLabObjectPoolSet","push","clearAllShaderLabObjectPool","i","n","length","clear","createGSError","message","errorName","source","location","file","Logger","error","BaseToken","lexeme","arg","ShaderLab","createPosition","createRange","EOF","Preprocessor","parse","basePathForIncludeKey","outMacroDefineList","parseMacro","_parseMacroDefines","replace","_includeReg","_","includeName","_replace","getReferenceSymbolNames","macroDefineList","macroName","out","infos","info","valueType","referencedName","functionCallName","value","params","indexOf","_isNumber","str","isNaN","Number","_isExist","list","item","some","e","isFunction","every","p","outMacroList","match","_macroRegex","lastIndex","exec","name","paramsGroup","paramsStr","valueRaw","split","map","trim","filter","Boolean","_symbolReg","test","callMatch","_funcCallReg","arr","_mergeMacroDefineLists","from","to","target","src","path","URL","href","substring","ShaderPass","_shaderRootPath","chunk","ShaderLib","_repeatIncludeSet","has","warn","add","_macroDefineIncludeMap","get","chunkMacroDefineList","Map","Set","EShaderStage","isGenericType","t","BuiltinFunctionTable","BuiltinFunction","ident","returnType","scope","args","_returnType","getReturnType","fn","genType","_create","ALL","_createWithScop","getFn","parameterTypes","fnArgs","argLength","found","curFnArg","_realReturnType","isExist","realReturnType","FLOAT","INT","UINT","VEC2","VEC3","MAT2","MAT3","MAT4","VEC4","MAT2X3","MAT3X2","MAT2X4","MAT4X2","MAT3X4","MAT4X3","BOOL","IVEC2","IVEC3","SAMPLER2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER2D_ARRAY_SHADOW","SAMPLER2D","SAMPLER2D_ARRAY","SAMPLER_CUBE","FRAGMENT","BuiltinVariableTable","BuiltinVariable","createVariable","getVar","VERTEX","VEC4_ARRAY","NoneTerminal","SymbolTable","_table","insert","symbol","isInMacroBranch","entry","equal","getSymbol","includeMacro","getSymbols","_getSymbols","SymbolTableStack","stack","_macroLevel","pushScope","popScope","pop","lookup","symbolTable","result","undefined","lookupAll","GSError","toString","diagnosticMessage","Error","wrappingLineCount","GSErrorName","SymbolDataType","arraySpecifier","typeLexeme","ESymbolType","SymbolInfo","dataType","paramSignature","astNode","symbolType","protoType","paramSig","comparedParams","t1","t2","FnSymbol","typeSpecifier","FN","StructSymbol","STRUCT","VarSymbol","isGlobalVariable","initAst","VAR","ShaderData","globalPrecisions","globalMacroDeclarations","getOuterGlobalMacroDeclarations","node","parent","ASTNode","GLShaderProgram","SemanticAnalyzer","semanticStack","acceptRule","symbolTableStack","curFunctionInfo","_shaderData","_translationRuleTable","reset","_macroDefineList","addTranslationRule","pid","rule","getTranslationRule","reportError","loc","reportWarning","CompilationWarn","_processingPassText","shaderData","_lookupSymbol","SymbolType","StructProp","mrtIndex","typeInfo","ASTNodeDecorator","nonTerminal","prototype","nt","TreeNode","children","_location","_children","child","_parent","init","setCache","code","_codeCache","getCache","codeGen","visitor","defaultCodeGen","semanticAnalyze","sa","_unwrapToken","TrivialNode","_ignore","ScopeBrace","scope_brace","ScopeEndBrace","scope_end_brace","JumpStatement","isFragReturnStatement","RETURN","returnStatement","visitJumpStatement","jump_statement","ExpressionAstNode","_type","SingleDeclaration","childrenLen","fullyType","id","sm","initializer","visitSingleDeclaration","single_declaration","FullySpecifiedType","fully_specified_type","TypeQualifier","type_qualifier","SingleTypeQualifier","qualifier","single_type_qualifier","TypeSpecifier","arraySize","firstChild","size","isCustom","type_specifier","ArraySpecifier","integerConstantExpr","array_specifier","IntegerConstantExpressionOperator","operator","PLUS","compute","a","b","DASH","STAR","SLASH","PERCENT","integer_constant_expression_operator","IntegerConstantExpression","integer_constant_expression","TypeSpecifierNonArray","tt","type_specifier_nonarray","ExtBuiltinTypeSpecifierNonArray","token","ext_builtin_type_specifier_nonarray","InitDeclaratorList","childrenLength","initDeclList","init_declarator_list","IdentifierList","idList","curIdList","listIdLength","identifier_list","Declaration","visitDeclaration","declaration","FunctionProtoType","declarator","parameterList","parameterInfoList","function_prototype","FunctionDeclarator","header","function_declarator","FunctionHeader","visitFunctionHeader","function_header","FunctionParameterList","ParameterDeclaration","decl","MacroParamBlock","visitFunctionParameterList","function_parameter_list","MacroParamCaseList","macro_param_case_list","macro_param_block","MacroParameterBranch","macro_parameter_branch","parameterDeclarator","ParameterDeclarator","varSymbol","parameter_declaration","parameter_declarator","CompoundStatementNoScope","compound_statement_no_scope","StatementList","visitStatementList","statement_list","FunctionDefinition","statements","VOID","visitFunctionDefinition","function_definition","FunctionCall","visitFunctionCall","function_call","FunctionCallGeneric","fnSymbol","functionIdentifier","isBuiltin","fnIdent","paramList","FunctionCallParameterList","lookupSymbol","function_call_generic","paramNodes","AssignmentExpression","expr","MacroCallArgBlock","function_call_parameter_list","MacroCallArgCaseList","macro_call_arg_case_list","macro_call_arg_block","MacroCallArgBranch","macro_call_arg_branch","PrecisionSpecifier","precision_specifier","FunctionIdentifier","visitFunctionIdentifier","function_identifier","assignment_expression","Expression","expression","PrimaryExpression","VariableIdentifier","INT_CONSTANT","FLOAT_CONSTANT","True","False","primary_expression","PostfixExpression","visitPostfixExpression","postfix_expression","StructSpecifier","propList","macroExpressions","visitStructSpecifier","struct_specifier","StructDeclarationList","props","struct_declaration_list","StructDeclaration","_typeSpecifier","_declaratorList","macroStructDeclaration","macroProps","LayoutQualifier","prop","declaratorList","declaratorListLength","struct_declaration","MacroStructDeclaration","macro_struct_declaration","MacroStructBranch","lastNode","MacroPopContext","macro_struct_branch","layout_qualifier","StructDeclaratorList","listLength","struct_declarator_list","StructDeclarator","struct_declarator","VariableDeclaration","isStatic","visitGlobalVariableDeclaration","variable_declaration","VariableDeclarationList","variableDeclarations","newVariable","variable_declaration_list","referenceGlobalSymbolNames","_symbols","symbols","needFindNames","referenceSymbolNames","builtinVar","Any","currentScopeSymbol","s","visitVariableIdentifier","getLexeme","variable_identifier","gs_shader_program","GlobalDeclaration","MacroUndef","GlobalMacroIfStatement","global_declaration","macro_undef","MacroPushContext","macro_push_context","macro_pop_context","MacroElifExpression","macro_elif_expression","MacroElseExpression","macro_else_expression","GlobalMacroDeclaration","global_macro_declaration","global_macro_if_statement","GlobalMacroBranch","global_macro_branch","MacroIfStatement","macro_if_statement","MacroBranch","macro_branch","MacroCallSymbol","macro_call_symbol","MacroCallFunction","visitMacroCallFunction","macro_call_function","ParserUtils","unwrapNodeByType","Token","isTerminal","START","VisitorContext","attributeStructs","attributeList","varyingStructs","varyingList","mrtStructs","mrtList","_referencedGlobalMacroASTs","resetAll","_referencedAttributeList","Object","create","_referencedVaryingList","_referencedMRTList","_referencedGlobals","isAttributeStruct","findIndex","isVaryingStruct","isMRTStruct","referenceAttribute","CompilationError","referenceVarying","referenceMRTProp","referenceGlobal","_passSymbolTable","_singleton","context","TempArray","array","Array","CodeGenVisitor","_tmpArrayPool","ret","return","join","derivationLength","postExpr","identNode","indexNode","identLexeme","indexLexeme","_reportError","call","astNodes","paramInfoList","paramsCode","variableParam","fullType","cmd","returnVar","returnFnCall","text","getVaryingProp","getAttributeProp","getMRTProp","sort","fnNode","fnName","stageEntry","ReturnableObjectPool","GLESVisitor","_globalCodeArray","globalCodeArray","_serializedGlobalKey","getOtherGlobal","data","precision","visitShaderProgram","vertexEntry","fragmentEntry","outerGlobalMacroDeclarations","vertex","_vertexMain","fragment","_fragmentMain","stage","fnSymbols","forEach","varyingSymbols","varyingSymbol","attributeParam","attributeType","attributeSymbols","attributeSymbol","_getGlobalSymbol","_getCustomStruct","_getGlobalMacroDeclarations","globalCode","outerGlobalMacroStatements","returnDataType","returnLocation","mrtSymbols","mrtSymbol","lastLength","keys","structNodes","macros","referencedGlobals","referencedGlobalMacroASTs","values","macro","_visitGlobalMacroIfStatement","variableDeclaration","GLES100Visitor","propReferenced","find","getVisitor","V3_GL_FragColor","GLES300Visitor","_otherCodeArray","_fragColorVariableRegistered","_registerFragColorVariable","BaseLexer","_currentIndex","_source","setSource","getShaderPosition","backOffset","isEnd","getCurChar","getCurCharCode","charCodeAt","advance","count","skipSpace","includeLineBreak","isWhiteSpaceChar","skipCommentsAndSpace","nextChar","charCode","peek","offset","scanLexeme","throwError","scanTwoExpectedLexemes","lexeme1","lexeme2","pos","msgs","ScannerError","scanPairedChar","left","right","balanced","skipLeading","sourceLength","currentIndex","level","currentChar","isDigit","isAlpha","isAlnum","isPreprocessorStartChar","includeBreak","Lexer","_needScanMacroConditionExpression","tokenize","scanToken","_scanMacroConditionExpression","curCharCode","_scanDirectives","_scanWord","_scanNum","curChar","LEFT_ASSIGN","LEFT_OP","LE_OP","LEFT_ANGLE","RIGHT_ASSIGN","RIGHT_OP","GE_OP","RIGHT_ANGLE","INC_OP","ADD_ASSIGN","DEC_OP","SUB_ASSIGN","EQ_OP","EQUAL","NE_OP","BANG","AND_OP","AMPERSAND","OR_OP","OR_ASSIGN","VERTICAL_BAR","XOR_OP","XOR_ASSIGN","CARET","MUL_ASSIGN","DIV_ASSIGN","MOD_ASSIGN","LEFT_PAREN","RIGHT_PAREN","LEFT_BRACE","RIGHT_BRACE","LEFT_BRACKET","RIGHT_BRACKET","_scanNumAfterDot","DOT","COMMA","COLON","SEMICOLON","TILDE","QUESTION","_scanStringConst","buffer","range","STRING_CONST","_scanFloatSuffix","_scanUtilBreakLine","outBuffer","word","MACRO_DEFINE_EXPRESSION","kt","_lexemeTable","ID","MACRO_CONDITIONAL_EXPRESSION","MACRO_CALL","_scanIntegerSuffix","const","CONST","bool","float","double","DOUBLE","int","uint","break","BREAK","continue","CONTINUE","do","DO","else","ELSE","for","FOR","if","IF","while","WHILE","discard","DISCARD","bvec2","BVEC2","bvec3","BVEC3","bvec4","BVEC4","ivec2","ivec3","ivec4","IVEC4","uvec2","UVEC2","uvec3","UVEC3","uvec4","UVEC4","vec2","vec3","vec4","mat2","mat3","mat4","in","IN","OUT","inout","INOUT","sampler2D","samplerCube","sampler3D","SAMPLER3D","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","I_SAMPLER2D","isampler3D","I_SAMPLER3D","isamplerCube","I_SAMPLER_CUBE","isampler2DArray","I_SAMPLER2D_ARRAY","usampler2D","U_SAMPLER2D","usampler3D","U_SAMPLER3D","usamplerCube","U_SAMPLER_CUBE","usampler2DArray","U_SAMPLER2D_ARRAY","struct","void","true","false","PRECISION","precise","PRECISE","highp","HIGHP","mediump","MEDIUMP","lowp","LOWP","invariant","INVARIANT","flat","FLAT","smooth","SMOOTH","noperspective","NOPERSPECTIVE","centroid","CENTROID","layout","LAYOUT","LOCATION","MACRO_IF","MACRO_IFDEF","MACRO_IFNDEF","MACRO_ELSE","MACRO_ELIF","MACRO_ENDIF","MACRO_UNDEF","MacroParserToken","MacroParserKeyword","MacroDefine","body","_argsLexemes","_replaceRegex","RegExp","expandFunctionBody","PreprocessorError","m","MacroParserLexer","macroLvl","scanWordsUntilTerminator","terminatorChar","tokens","scanWord","slice","tokenType","_isPpCharacters","ifdef","ifndef","endif","scanQuotedString","contentStart","string_const","scanToChar","char","scanMacroBranchBody","shaderPosition","startLevel","nextDirective","elif","scanPairedBlock","lc","rc","scanRemainMacro","startLvl","directive","peekNonSpace","current","scanInteger","integer","int_constant","scanMacroBody","nextIndex","nextCharCode","valueToken","line_remain","define","undef","defined","PpUtils","expand","segments","startIdx","generatedIdx","seg","originSlice","rangeInBlock","generatedIdxEnd","MacroParser","_reset","_addPredefinedMacro","lexer","_parseDirectives","_expandSegmentsStack","_definedMacros","macroBody","_parseMacro","_parseDefine","_parseUndef","_parseIfDirective","_getExpandSegments","sourceMap","directiveType","directiveLength","skipMacro","shouldInclude","_parseConstantExpression","macroToken","startsWith","expanded","_expandMacroChunk","_addContentReplace","content","blockRange","_addEmptyReplace","_processConditionalDirective","scanner","constantExpr","_parseLogicalOrExpression","operand1","_parseLogicalAndExpression","operand2","_parseEqualityExpression","_parseRelationalExpression","includes","_parseShiftExpression","opPos","_parseAdditiveExpression","_parseMulticativeExpression","_parseUnaryExpression","parenExpr","_parseParenthesisExpression","_parseConstant","withParen","isInteger","_parseMacroFunctionArgs","startIndex","argStart","k","endIndex","_expandMacroBody","visitedMacros","_expandVisitedMacros","currentVersionId","_expandVersionId","expandedBody","hasExpansion","replacement","newEndIndex","scannerOrFile","sourceFile","sourceRange","macroArgs","macroDefine","delete","macroBodyExpanded","expandedContent","remainingLength","macroContent","StateItem","production","position","lookahead","_needReInfer","lookaheadSet","la","_id","addLookahead","ts","needReInfer","symbolByOffset","derivation","canReduce","EPSILON","v","curSymbol","nextSymbol","State","cores","closured","_stateItemPool","_items","it","itemMapKey","getStateItemMapKey","createStateItem","mapId","newItem","cacheKey","getMapKey","state","closureMap","core","newState","items","GrammarUtils","createProductionWithOptions","goal","options","astTypePool","opt","addMapSetItem","isSubSet","sb","isActionEqual","action","EAction","LALR1","grammar","firstSetMap","followSetMap","actionTable","gotoTable","_firstSetNTStack","generate","computeFirstSet","buildStateTable","startStateItemCore","productions","startState","_extendState","_closure","newStates","_inferNextState","ns","_extendStateItem","productionList","getProductionList","newLookaheadSet","lastFirstSet","terminalExist","Utils","coreMap","stateActionTable","stateGotoTable","stateItem","Reduce","Accept","_addAction","nextItem","entries","gs","Shift","table","terminal","exist","_computeFirstSetForNT","NT","idx","computingFS","len","curNT","firstSet","isNullableNT","succeedFirstSet","Production","Grammar","startSymbol","unshift","getProductionByID","_ps","gsl","productionAndRules","variable_declaration_statement","storage_qualifier","precision_qualifier","interpolation_qualifier","invariant_qualifier","conditional_expression","logical_or_expression","logical_xor_expression","logical_and_expression","inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression","relational_expression","shift_expression","additive_expression","multiplicative_expression","unary_expression","unary_operator","assignment_operator","AND_ASSIGN","statement","compound_statement","simple_statement","expression_statement","selection_statement","iteration_statement","initializer_list","condition","for_init_statement","for_rest_statement","conditionopt","createGrammar","ShaderTargetParser","_traceBackStack","sematicAnalyzer","SematicAnalyzer","performance","now","traceBackStack","nextToken","next","loopCount","actionInfo","reduceProduction","translationRule","nextState","generator","curState","ShaderSourceFactory","createRenderStates","constantMap","variableMap","createShaderSource","subShaders","pendingContents","renderStates","createSubShaderSource","passes","tags","createShaderPassSource","createUsePass","isUsePass","ShaderSourceSymbol","other","SourceLexer","hasPendingContent","scanNumber","_scanDigits","scanColor","r","g","Color","wordToken","symbolKeyword","_symbolLexemeTable","createCompileError","_validateWordBoundaries","_keywordLexemeTable","prevCharCode","_isValidWordBoundary","_isWordSeparatorChar","RenderQueueType","GSRenderQueueType","BlendState","GSBlendState","DepthState","GSDepthState","StencilState","GSStencilState","RasterState","GSRasterState","EditorProperties","GSEditorProperties","EditorMacros","GSEditorMacros","Editor","GSEditor","Tags","GSTags","VertexShader","GSVertexShader","FragmentShader","GSFragmentShader","SubShader","GSSubShader","Pass","GSPass","BlendFactor","GSBlendFactor","BlendOperation","GSBlendOperation","Bool","GSBool","GSNumber","GSColor","CompareFunction","GSCompareFunction","StencilOperation","GSStencilOperation","CullMode","GSCullMode","UsePass","GSUsePass","LeftBrace","RightBrace","Equal","ShaderSourceParser","sourceCode","startTime","errors","_symbolTableStack","_pushScope","_lexer","shaderSource","_parseShader","shaderPendingContents","shaderRenderStates","subShader","curSubShaderGlobalStatements","concat","globalSubShaderStates","_mergeRenderStates","j","pass","globalPassRenderStates","passGlobalStatements","contents","braceLevel","_addPendingContents","_parseSubShader","_popScope","_parseRenderState","_parseRenderStateDeclarationOrAssignment","outRenderStates","stateToken","renderState","_parseRenderStateProperties","_createCompileError","outTarget","targetVariableMap","sourceVariableMap","key","sourceConstantMap","targetConstantMap","_parseVariableDeclaration","_parseRenderStateProperty","stateLexeme","propertyToken","propertyLexeme","stateElementKey","keyIndex","scannedLexeme","renderStateElementKey","RenderStateElementKey","propertyValue","valueTokenType","constValueToken","_renderStateConstMap","_parseRenderQueueDeclarationOrAssignment","outPendingContents","subShaderSource","_parsePass","_parseRenderStateAndTags","_parseTags","passSource","outGlobalContents","outTags","_parseShaderSource","_parseShaderPass","backend","totalStartTime","noIncludeContent","parser","_parser","program","ShaderLanguage","GLSLES100","codeGenStartTime","_parseMacros","parsedContent","line","column","_shaderPositionPool","_shaderRangePool","version","mode","console","log"],"mappings":"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"}