@galacean/engine-ui 2.0.0-alpha.33 → 2.0.0-alpha.35

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.
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../../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/_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/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/component/UIGroup.ts","../src/Utils.ts","../src/enums/CanvasRenderMode.ts","../src/enums/ResolutionAdaptationMode.ts","../src/enums/HorizontalAlignmentMode.ts","../src/enums/VerticalAlignmentMode.ts","../src/component/UITransform.ts","../src/component/UIRenderer.ts","../src/component/interactive/UIInteractive.ts","../src/component/UICanvas.ts","../src/component/advanced/Button.ts","../src/component/advanced/Image.ts","../src/component/advanced/Text.ts","../src/component/interactive/transition/Transition.ts","../src/component/interactive/transition/ColorTransition.ts","../src/component/interactive/transition/ScaleTransition.ts","../src/component/interactive/transition/SpriteTransition.ts","../src/input/UIHitResult.ts","../src/input/UIPointerEventEmitter.ts","../src/index.ts"],"sourcesContent":["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 _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","/******************************************************************************\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 { Component, DisorderedArray, Entity, EntityModifyFlags, assignmentClone, ignoreClone } from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { IGroupAble } from \"../interface/IGroupAble\";\nimport { EntityUIModifyFlags, UICanvas } from \"./UICanvas\";\n\nexport class UIGroup extends Component implements IGroupAble {\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n _group: UIGroup;\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _disorderedElements: DisorderedArray<IGroupAble> = new DisorderedArray<IGroupAble>();\n\n /** @internal */\n @ignoreClone\n _globalAlpha = 1;\n /** @internal */\n @ignoreClone\n _globalInteractive = true;\n\n @assignmentClone\n private _alpha = 1;\n @assignmentClone\n private _interactive = true;\n @assignmentClone\n private _ignoreParentGroup = false;\n\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupDirtyFlags: number = GroupModifyFlags.None;\n\n /**\n * Whether to ignore the parent group.\n * @remarks If this parameter set to `true`,\n * all settings of the parent group will be ignored.\n */\n get ignoreParentGroup(): boolean {\n return this._ignoreParentGroup;\n }\n\n set ignoreParentGroup(value: boolean) {\n if (this._ignoreParentGroup !== value) {\n this._ignoreParentGroup = value;\n this._onGroupModify(GroupModifyFlags.All);\n }\n }\n\n /**\n * Whether the group is interactive.\n */\n get interactive(): boolean {\n return this._interactive;\n }\n\n set interactive(value: boolean) {\n if (this._interactive !== value) {\n this._interactive = value;\n this._onGroupModify(GroupModifyFlags.GlobalInteractive);\n }\n }\n\n /**\n * The alpha value of the group.\n */\n get alpha(): number {\n return this._alpha;\n }\n\n set alpha(value: number) {\n value = Math.max(0, Math.min(value, 1));\n if (this._alpha !== value) {\n this._alpha = value;\n this._onGroupModify(GroupModifyFlags.GlobalAlpha);\n }\n }\n\n /**\n * @internal\n */\n _getGlobalAlpha(): number {\n if (this._isContainDirtyFlag(GroupModifyFlags.GlobalAlpha)) {\n if (this._ignoreParentGroup) {\n this._globalAlpha = this._alpha;\n } else {\n const parentGroup = this._getGroup();\n this._globalAlpha = this._alpha * (parentGroup ? parentGroup._getGlobalAlpha() : 1);\n }\n this._setDirtyFlagFalse(GroupModifyFlags.GlobalAlpha);\n }\n return this._globalAlpha;\n }\n\n /**\n * @internal\n */\n _getGlobalInteractive(): boolean {\n if (this._isContainDirtyFlag(GroupModifyFlags.GlobalInteractive)) {\n if (this._ignoreParentGroup) {\n this._globalInteractive = this._interactive;\n } else {\n const parentGroup = this._getGroup();\n this._globalInteractive = this._interactive && (!parentGroup || parentGroup._getGlobalInteractive());\n }\n this._setDirtyFlagFalse(GroupModifyFlags.GlobalInteractive);\n }\n return this._globalInteractive;\n }\n\n constructor(entity: Entity) {\n super(entity);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n this._groupListener = this._groupListener.bind(this);\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n // @ts-ignore\n this.entity._dispatchModify(EntityUIModifyFlags.GroupEnableInScene);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n const disorderedElements = this._disorderedElements;\n disorderedElements.forEach((element: IGroupAble) => {\n Utils.setGroupDirty(element);\n });\n disorderedElements.length = 0;\n disorderedElements.garbageCollection();\n this._isRootCanvasDirty = this._isGroupDirty = false;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.CanvasEnableInScene) {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n _onGroupModify(flags: GroupModifyFlags, isPass: boolean = false): void {\n if (isPass && this._ignoreParentGroup) return;\n if (this._isContainDirtyFlags(flags)) return;\n this._setDirtyFlagTrue(flags);\n this._disorderedElements.forEach((element) => {\n element._onGroupModify(flags, true);\n });\n }\n\n private _isContainDirtyFlags(targetDirtyFlags: number): boolean {\n return (this._groupDirtyFlags & targetDirtyFlags) === targetDirtyFlags;\n }\n\n private _isContainDirtyFlag(type: number): boolean {\n return (this._groupDirtyFlags & type) != 0;\n }\n\n private _setDirtyFlagTrue(type: number) {\n this._groupDirtyFlags |= type;\n }\n\n private _setDirtyFlagFalse(type: number) {\n this._groupDirtyFlags &= ~type;\n }\n}\n\nexport enum GroupModifyFlags {\n None = 0x0,\n GlobalAlpha = 0x1,\n GlobalInteractive = 0x2,\n All = 0x3\n}\n","import { Entity } from \"@galacean/engine\";\nimport { RootCanvasModifyFlags, UICanvas } from \"./component/UICanvas\";\nimport { GroupModifyFlags, UIGroup } from \"./component/UIGroup\";\nimport { IElement } from \"./interface/IElement\";\nimport { IGroupAble } from \"./interface/IGroupAble\";\n\nexport class Utils {\n static setRootCanvasDirty(element: IElement): void {\n if (element._isRootCanvasDirty) return;\n element._isRootCanvasDirty = true;\n this._registerRootCanvas(element, null);\n element._onRootCanvasModify?.(RootCanvasModifyFlags.All);\n }\n\n static setRootCanvas(element: IElement, rootCanvas: UICanvas): void {\n element._isRootCanvasDirty = false;\n this._registerRootCanvas(element, rootCanvas);\n const fromEntity = element instanceof UICanvas ? element.entity.parent : element.entity;\n const toEntity = rootCanvas?.entity.parent ?? null;\n this._registerListener(fromEntity, toEntity, element._rootCanvasListener, element._rootCanvasListeningEntities);\n }\n\n static cleanRootCanvas(element: IElement): void {\n this._registerRootCanvas(element, null);\n this._unRegisterListener(element._rootCanvasListener, element._rootCanvasListeningEntities);\n }\n\n static searchRootCanvasInParents(element: IElement): UICanvas {\n let entity = element instanceof UICanvas ? element.entity.parent : element.entity;\n while (entity) {\n // @ts-ignore\n const components = entity._components;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (component.enabled && component instanceof UICanvas && component._isRootCanvas) {\n return component;\n }\n }\n entity = entity.parent;\n }\n return null;\n }\n\n static setGroupDirty(element: IGroupAble): void {\n if (element._isGroupDirty) return;\n element._isGroupDirty = true;\n this._registerGroup(element, null);\n element._onGroupModify(GroupModifyFlags.All);\n }\n\n static setGroup(element: IGroupAble, group: UIGroup): void {\n element._isGroupDirty = false;\n this._registerGroup(element, group);\n const rootCanvas = element._getRootCanvas();\n if (rootCanvas) {\n const fromEntity = element instanceof UIGroup ? element.entity.parent : element.entity;\n const toEntity = group?.entity ?? rootCanvas.entity.parent;\n this._registerListener(fromEntity, toEntity, element._groupListener, element._groupListeningEntities);\n } else {\n this._unRegisterListener(element._groupListener, element._groupListeningEntities);\n }\n }\n\n static cleanGroup(element: IGroupAble): void {\n this._registerGroup(element, null);\n this._unRegisterListener(element._groupListener, element._groupListeningEntities);\n }\n\n static searchGroupInParents(element: IGroupAble): UIGroup {\n const rootCanvas = element._getRootCanvas();\n if (!rootCanvas) return null;\n let entity = element instanceof UIGroup ? element.entity.parent : element.entity;\n const rootCanvasParent = rootCanvas.entity.parent;\n while (entity && entity !== rootCanvasParent) {\n // @ts-ignore\n const components = entity._components;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (component.enabled && component instanceof UIGroup) {\n return component;\n }\n }\n entity = entity.parent;\n }\n return null;\n }\n\n private static _registerRootCanvas(element: IElement, canvas: UICanvas): void {\n const preCanvas = element._rootCanvas;\n if (preCanvas !== canvas) {\n if (preCanvas) {\n const replaced = preCanvas._disorderedElements.deleteByIndex(element._indexInRootCanvas);\n replaced && (replaced._indexInRootCanvas = element._indexInRootCanvas);\n element._indexInRootCanvas = -1;\n }\n if (canvas) {\n const disorderedElements = canvas._disorderedElements;\n element._indexInRootCanvas = disorderedElements.length;\n disorderedElements.add(element);\n }\n element._rootCanvas = canvas;\n }\n }\n\n private static _registerGroup(element: IGroupAble, group: UIGroup): void {\n const preGroup = element._group;\n if (preGroup !== group) {\n if (preGroup) {\n const replaced = preGroup._disorderedElements.deleteByIndex(element._indexInGroup);\n replaced && (replaced._indexInGroup = element._indexInGroup);\n element._indexInGroup = -1;\n }\n if (group) {\n const disorderedElements = group._disorderedElements;\n element._indexInGroup = disorderedElements.length;\n disorderedElements.add(element);\n }\n element._group = group;\n element._onGroupModify(GroupModifyFlags.All);\n }\n }\n\n private static _registerListener(\n entity: Entity,\n root: Entity,\n listener: (flag: number, param?: any) => void,\n listeningEntities: Entity[]\n ): void {\n let count = 0;\n while (entity && entity !== root) {\n const preEntity = listeningEntities[count];\n if (preEntity !== entity) {\n // @ts-ignore\n preEntity?._unRegisterModifyListener(listener);\n listeningEntities[count] = entity;\n // @ts-ignore\n entity._registerModifyListener(listener);\n }\n entity = entity.parent;\n count++;\n }\n listeningEntities.length = count;\n }\n\n private static _unRegisterListener(listener: (flag: number, param?: any) => void, listeningEntities: Entity[]): void {\n for (let i = 0, n = listeningEntities.length; i < n; i++) {\n // @ts-ignore\n listeningEntities[i]._unRegisterModifyListener(listener);\n }\n listeningEntities.length = 0;\n }\n}\n","/**\n * Render mode for ui canvas.\n */\nexport enum CanvasRenderMode {\n /**\n * The UI canvas will be rendered directly onto the screen and adapted to screen space,\n * overlaying other rendering elements in the same scene.\n * @remarks if the `engine.canvas` size change, the UI canvas will automatically adapt.\n */\n ScreenSpaceOverlay = 0,\n /**\n * The UI canvas is placed at a specified distance in front of the camera and adapted to screen space,\n * with all objects rendered by the camera.\n * @remarks if the camera's properties or the `engine.canvas` size change, the UI canvas will automatically adapt.\n * @remarks if set `ScreenSpaceCamera` but no corresponding camera is assigned, the actual rendering mode defaults to `ScreenSpaceOverlay`.\n */\n ScreenSpaceCamera = 1,\n /**\n * The UI canvas is placed in the 3D world space and rendered by every camera in the same scene.\n */\n WorldSpace = 2\n}\n","/**\n * Resolution adaptation mode.\n * @remarks Only effective in screen space.\n */\nexport enum ResolutionAdaptationMode {\n /** Adapt based on width.(`referenceResolution.x`) */\n WidthAdaptation,\n /** Adapt based on height.(`referenceResolution.y`) */\n HeightAdaptation,\n /** Adapt based on both width and height.(`referenceResolution`) */\n BothAdaptation,\n /** Adapt to the side with a larger ratio. */\n ExpandAdaptation,\n /** Adapt to the side with smaller ratio. */\n ShrinkAdaptation\n}\n","/** Horizontal alignment mode. */\nexport enum HorizontalAlignmentMode {\n /** No horizontal alignment. */\n None = 0,\n /** Left-aligned, `alignLeft` drives `position.x`. */\n Left = 0x1,\n /** Right-aligned, `alignRight` drives `position.x`. */\n Right = 0x2,\n /** Horizontal stretch, `alignLeft` and `alignRight` drive `position.x` and `size.x`. */\n LeftAndRight = 0x3,\n /** Center-aligned, `alignCenter` drives `position.x`. */\n Center = 0x4\n}\n","/** Vertical alignment mode. */\nexport enum VerticalAlignmentMode {\n /** No vertical alignment. */\n None = 0,\n /** Top-aligned, `alignTop` drives `position.y`. */\n Top = 0x1,\n /** Bottom-aligned, `alignBottom` drives `position.y`. */\n Bottom = 0x2,\n /** Vertical stretch, `alignTop` and `alignBottom` drive `position.y` and `size.y`. */\n TopAndBottom = 0x3,\n /** Middle-aligned, `alignMiddle` drives `position.y`. */\n Middle = 0x4\n}\n","import {\n Entity,\n MathUtil,\n Rect,\n Transform,\n TransformModifyFlags,\n Vector2,\n deepClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { HorizontalAlignmentMode } from \"../enums/HorizontalAlignmentMode\";\nimport { VerticalAlignmentMode } from \"../enums/VerticalAlignmentMode\";\n\n/**\n * The Transform component exclusive to the UI element.\n */\nexport class UITransform extends Transform {\n @ignoreClone\n private _size = new Vector2(100, 100);\n @ignoreClone\n private _pivot = new Vector2(0.5, 0.5);\n @deepClone\n private _rect = new Rect(-50, -50, 100, 100);\n\n private _alignLeft = 0;\n private _alignRight = 0;\n private _alignCenter = 0;\n private _alignTop = 0;\n private _alignBottom = 0;\n private _alignMiddle = 0;\n private _horizontalAlignment = HorizontalAlignmentMode.None;\n private _verticalAlignment = VerticalAlignmentMode.None;\n\n /**\n * Width and height of UI element.\n */\n get size(): Vector2 {\n return this._size;\n }\n\n set size(value: Vector2) {\n const { _size: size } = this;\n if (size === value) return;\n (size.x !== value.x || size.y !== value.y) && size.copyFrom(value);\n }\n\n /**\n * Pivot of UI element.\n */\n get pivot(): Vector2 {\n return this._pivot;\n }\n\n set pivot(value: Vector2) {\n const { _pivot: pivot } = this;\n if (pivot === value) return;\n (pivot.x !== value.x || pivot.y !== value.y) && pivot.copyFrom(value);\n }\n\n /**\n * Horizontal alignment mode.\n *\n * @remarks\n * Controls how the element aligns horizontally within its parent:\n * - `Left` - Align to parent's left edge\n * - `Center` - Align to parent's horizontal center\n * - `Right` - Align to parent's right edge\n * - `LeftAndRight` - Align to both left and right edges (stretch to fill width)\n */\n get horizontalAlignment(): HorizontalAlignmentMode {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment(value: HorizontalAlignmentMode) {\n if (this._horizontalAlignment === value) return;\n this._horizontalAlignment = value;\n switch (value) {\n case HorizontalAlignmentMode.Left:\n case HorizontalAlignmentMode.Right:\n case HorizontalAlignmentMode.Center:\n this._onPositionChanged();\n break;\n case HorizontalAlignmentMode.LeftAndRight:\n this._onPositionChanged();\n this._onSizeChanged();\n break;\n default:\n break;\n }\n }\n\n /**\n * Left margin when horizontalAlignment is Left or LeftAndRight.\n *\n * @remarks\n * Only effective when horizontalAlignment includes Left mode.\n * Distance from the parent's left edge to the element's left edge.\n */\n get alignLeft(): number {\n return this._alignLeft;\n }\n\n set alignLeft(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignLeft)) return;\n this._alignLeft = value;\n if (this._horizontalAlignment & HorizontalAlignmentMode.Left) {\n this._onPositionChanged();\n this._horizontalAlignment & HorizontalAlignmentMode.Right && this._onSizeChanged();\n }\n }\n\n /**\n * Right margin when horizontalAlignment is Right or LeftAndRight.\n *\n * @remarks\n * Only effective when horizontalAlignment includes Right mode.\n * Distance from the parent's right edge to the element's right edge.\n */\n get alignRight(): number {\n return this._alignRight;\n }\n\n set alignRight(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignRight)) return;\n this._alignRight = value;\n if (this._horizontalAlignment & HorizontalAlignmentMode.Right) {\n this._onPositionChanged();\n this._horizontalAlignment & HorizontalAlignmentMode.Left && this._onSizeChanged();\n }\n }\n\n /**\n * Horizontal center offset when horizontalAlignment is Center.\n *\n * @remarks\n * Only effective when horizontalAlignment is Center mode.\n * Positive values move the element to the right, negative values to the left.\n */\n get alignCenter(): number {\n return this._alignCenter;\n }\n\n set alignCenter(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignCenter)) return;\n this._alignCenter = value;\n this._horizontalAlignment & HorizontalAlignmentMode.Center && this._onPositionChanged();\n }\n\n /**\n * Vertical alignment mode.\n *\n * @remarks\n * Controls how the element aligns vertically within its parent:\n * - `Top` - Align to parent's top edge\n * - `Middle` - Align to parent's vertical center\n * - `Bottom` - Align to parent's bottom edge\n * - `TopAndBottom` - Align to both top and bottom edges (stretch to fill height)\n */\n get verticalAlignment(): VerticalAlignmentMode {\n return this._verticalAlignment;\n }\n\n set verticalAlignment(value: VerticalAlignmentMode) {\n if (this._verticalAlignment === value) return;\n this._verticalAlignment = value;\n switch (value) {\n case VerticalAlignmentMode.Top:\n case VerticalAlignmentMode.Bottom:\n case VerticalAlignmentMode.Middle:\n this._onPositionChanged();\n break;\n case VerticalAlignmentMode.TopAndBottom:\n this._onPositionChanged();\n this._onSizeChanged();\n break;\n default:\n break;\n }\n }\n\n /**\n * Top margin when verticalAlignment is Top or TopAndBottom.\n *\n * @remarks\n * Only effective when verticalAlignment includes Top mode.\n * Used to offset the element from the parent's top edge.\n */\n get alignTop(): number {\n return this._alignTop;\n }\n\n set alignTop(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignTop)) return;\n this._alignTop = value;\n if (this._verticalAlignment & VerticalAlignmentMode.Top) {\n this._onPositionChanged();\n this._verticalAlignment & VerticalAlignmentMode.Bottom && this._onSizeChanged();\n }\n }\n\n /**\n * Bottom inset used in vertical alignment formulas.\n */\n get alignBottom(): number {\n return this._alignBottom;\n }\n\n set alignBottom(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignBottom)) return;\n this._alignBottom = value;\n if (this._verticalAlignment & VerticalAlignmentMode.Bottom) {\n this._onPositionChanged();\n this._verticalAlignment & VerticalAlignmentMode.Top && this._onSizeChanged();\n }\n }\n\n /**\n * Vertical middle offset relative to parent's middle.\n */\n get alignMiddle(): number {\n return this._alignMiddle;\n }\n\n set alignMiddle(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignMiddle)) return;\n this._alignMiddle = value;\n this._verticalAlignment & VerticalAlignmentMode.Middle && this._onPositionChanged();\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._onSizeChanged = this._onSizeChanged.bind(this);\n this._onPivotChanged = this._onPivotChanged.bind(this);\n // @ts-ignore\n this._size._onValueChanged = this._onSizeChanged;\n // @ts-ignore\n this._pivot._onValueChanged = this._onPivotChanged;\n }\n\n /**\n * @internal\n */\n _parentChange(): void {\n this._isParentDirty = true;\n this._updateWorldFlagWithParentRectChange(TransformModifyFlags.WmWpWeWqWsWus);\n }\n\n // @ts-ignore\n override _cloneTo(target: UITransform): void {\n // @ts-ignore\n super._cloneTo(target);\n const { _size: size, _pivot: pivot } = target;\n // @ts-ignore\n size._onValueChanged = pivot._onValueChanged = null;\n size.copyFrom(this._size);\n pivot.copyFrom(this._pivot);\n // @ts-ignore\n size._onValueChanged = target._onSizeChanged;\n // @ts-ignore\n pivot._onValueChanged = target._onPivotChanged;\n }\n\n protected override _onLocalMatrixChanging(): void {\n // `super._onLocalMatrixChanging()` will set `LocalMatrix` dirty flag `false`\n // If there is an alignment, `position` and `localMatrix` will be reset again\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n } else {\n super._onLocalMatrixChanging();\n }\n }\n\n protected override _onWorldMatrixChanging(): void {\n // `super._onWorldMatrixChanging()` will set `WorldMatrix` dirty flag `false`\n // If there is an alignment, `position` and `worldMatrix` will be reset again(`worldMatrix` dirty flag is already `true`)\n !this._horizontalAlignment && !this._verticalAlignment && super._onWorldMatrixChanging();\n }\n\n @ignoreClone\n protected override _onPositionChanged(): void {\n (this._horizontalAlignment || this._verticalAlignment) && this._updatePositionByAlignment();\n super._onPositionChanged();\n }\n\n @ignoreClone\n protected override _onWorldPositionChanged(): void {\n super._onWorldPositionChanged();\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._setDirtyFlagTrue(TransformModifyFlags.WorldPosition);\n }\n }\n\n private _updatePositionByAlignment(): void {\n const parentRect = (this._getParentTransform() as UITransform)?._rect;\n if (parentRect) {\n const position = this.position;\n // @ts-ignore\n position._onValueChanged = null;\n const rect = this._rect;\n switch (this._horizontalAlignment) {\n case HorizontalAlignmentMode.Left:\n case HorizontalAlignmentMode.LeftAndRight:\n position.x = parentRect.x - rect.x + this._alignLeft;\n break;\n case HorizontalAlignmentMode.Center:\n position.x = parentRect.x + parentRect.width * 0.5 - rect.x - rect.width * 0.5 + this._alignCenter;\n break;\n case HorizontalAlignmentMode.Right:\n position.x = parentRect.x + parentRect.width - rect.x - rect.width - this._alignRight;\n break;\n default:\n break;\n }\n switch (this._verticalAlignment) {\n case VerticalAlignmentMode.Top:\n position.y = parentRect.y + parentRect.height - rect.y - rect.height - this._alignTop;\n break;\n case VerticalAlignmentMode.Middle:\n position.y = parentRect.y + parentRect.height * 0.5 - rect.y - rect.height * 0.5 + this._alignMiddle;\n break;\n case VerticalAlignmentMode.Bottom:\n case VerticalAlignmentMode.TopAndBottom:\n position.y = parentRect.y - rect.y + this._alignBottom;\n break;\n default:\n break;\n }\n // @ts-ignore\n position._onValueChanged = this._onPositionChanged;\n }\n }\n\n private _updateSizeByAlignment(): void {\n const parentRect = (this._getParentTransform() as UITransform)?._rect;\n if (parentRect) {\n const size = this._size;\n // @ts-ignore\n size._onValueChanged = null;\n // The values of size must be greater than 0\n if (this._horizontalAlignment === HorizontalAlignmentMode.LeftAndRight) {\n size.x = Math.max(parentRect.width - this._alignLeft - this._alignRight, 0);\n }\n if (this._verticalAlignment === VerticalAlignmentMode.TopAndBottom) {\n size.y = Math.max(parentRect.height - this._alignTop - this._alignBottom, 0);\n }\n // @ts-ignore\n size._onValueChanged = this._onSizeChanged;\n }\n }\n\n private _updateRectBySizeAndPivot(): void {\n const { size, _pivot: pivot } = this;\n const x = -pivot.x * size.x;\n const y = -pivot.y * size.y;\n this._rect.set(x, y, size.x, size.y);\n }\n\n @ignoreClone\n private _onSizeChanged(): void {\n if (\n this._horizontalAlignment === HorizontalAlignmentMode.LeftAndRight ||\n this._verticalAlignment === VerticalAlignmentMode.TopAndBottom\n ) {\n this._updateSizeByAlignment();\n }\n this._updateRectBySizeAndPivot();\n this._updateWorldFlagWithSelfRectChange();\n // @ts-ignore\n this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Size);\n }\n\n @ignoreClone\n private _onPivotChanged(): void {\n this._updateRectBySizeAndPivot();\n this._updateWorldFlagWithSelfRectChange();\n // @ts-ignore\n this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Pivot);\n }\n\n private _updateWorldFlagWithSelfRectChange(): void {\n let worldFlags = 0;\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n worldFlags = TransformModifyFlags.WmWp;\n !this._isContainDirtyFlags(worldFlags) && this._worldAssociatedChange(worldFlags);\n }\n const children = this.entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n (children[i].transform as UITransform)?._updateWorldFlagWithParentRectChange?.(worldFlags);\n }\n }\n\n private _updateWorldFlagWithParentRectChange(flags: number, parentChange: boolean = true): void {\n let selfChange = false;\n if (parentChange) {\n const { _horizontalAlignment: horizontalAlignment, _verticalAlignment: verticalAlignment } = this;\n if (horizontalAlignment || verticalAlignment) {\n if (\n horizontalAlignment === HorizontalAlignmentMode.LeftAndRight ||\n verticalAlignment === VerticalAlignmentMode.TopAndBottom\n ) {\n this._updateSizeByAlignment();\n this._updateRectBySizeAndPivot();\n selfChange = true;\n }\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n flags |= TransformModifyFlags.WmWp;\n }\n }\n const containDirtyFlags = this._isContainDirtyFlags(flags);\n !containDirtyFlags && this._worldAssociatedChange(flags);\n if (selfChange || !containDirtyFlags) {\n const children = this.entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n (children[i].transform as UITransform)?._updateWorldFlagWithParentRectChange?.(flags, selfChange);\n }\n }\n // @ts-ignore\n selfChange && this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Size);\n }\n}\n\n/**\n * @internal\n * extends TransformModifyFlags\n */\nexport enum UITransformModifyFlags {\n Size = 0x200,\n Pivot = 0x400\n}\n","import {\n BatchUtils,\n Color,\n DependentMode,\n Entity,\n EntityModifyFlags,\n Matrix,\n Plane,\n Ray,\n Renderer,\n RendererUpdateFlags,\n ShaderMacroCollection,\n ShaderProperty,\n Vector3,\n Vector4,\n assignmentClone,\n deepClone,\n dependentComponents,\n ignoreClone\n} from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { UIHitResult } from \"../input/UIHitResult\";\nimport { IGraphics } from \"../interface/IGraphics\";\nimport { EntityUIModifyFlags, UICanvas } from \"./UICanvas\";\nimport { GroupModifyFlags, UIGroup } from \"./UIGroup\";\nimport { UITransform } from \"./UITransform\";\n\n@dependentComponents(UITransform, DependentMode.AutoAdd)\nexport class UIRenderer extends Renderer implements IGraphics {\n /** @internal */\n static _tempVec30: Vector3 = new Vector3();\n /** @internal */\n static _tempVec31: Vector3 = new Vector3();\n /** @internal */\n static _tempMat: Matrix = new Matrix();\n /** @internal */\n static _tempPlane: Plane = new Plane();\n /** @internal */\n static _textureProperty: ShaderProperty = ShaderProperty.getByName(\"renderer_UITexture\");\n\n /**\n * Custom boundary for raycast detection.\n * @remarks this is based on `this.entity.transform`.\n */\n @deepClone\n raycastPadding: Vector4 = new Vector4(0, 0, 0, 0);\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _subChunk;\n\n @assignmentClone\n private _raycastEnabled: boolean = true;\n @deepClone\n protected _color: Color = new Color(1, 1, 1, 1);\n\n /**\n * Rendering color for the ui renderer.\n */\n get color(): Color {\n return this._color;\n }\n\n set color(value: Color) {\n if (this._color !== value) {\n this._color.copyFrom(value);\n }\n }\n\n /**\n * Whether this renderer be picked up by raycast.\n */\n get raycastEnabled(): boolean {\n return this._raycastEnabled;\n }\n\n set raycastEnabled(value: boolean) {\n this._raycastEnabled = value;\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._dirtyUpdateFlag = RendererUpdateFlags.WorldVolume | UIRendererUpdateFlags.Color;\n this._onColorChanged = this._onColorChanged.bind(this);\n //@ts-ignore\n this._color._onValueChanged = this._onColorChanged;\n this._groupListener = this._groupListener.bind(this);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n }\n\n // @ts-ignore\n override _canBatch(elementA, elementB): boolean {\n return BatchUtils.canBatchSprite(elementA, elementB);\n }\n\n // @ts-ignore\n override _batch(elementA, elementB?): void {\n BatchUtils.batchFor2D(elementA, elementB);\n }\n\n // @ts-ignore\n override _updateTransformShaderData(context, onlyMVP: boolean, batched: boolean): void {\n // @ts-ignore\n super._updateTransformShaderData(context, onlyMVP, true);\n }\n\n // @ts-ignore\n override _prepareRender(context): void {\n // Update once per frame per renderer, not influenced by batched\n if (this._renderFrameCount !== this.engine.time.frameCount) {\n this._update(context);\n }\n\n this._render(context);\n\n // union camera global macro and renderer macro.\n ShaderMacroCollection.unionCollection(\n context.camera._globalShaderMacro,\n // @ts-ignore\n this.shaderData._macroCollection,\n //@ts-ignore\n this._globalShaderMacro\n );\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n // @ts-ignore\n this._overrideUpdate && this.scene._componentsManager.addOnUpdateRenderers(this);\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n // @ts-ignore\n this._overrideUpdate && this.scene._componentsManager.removeOnUpdateRenderers(this);\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n }\n\n /**\n * @internal\n */\n _getGlobalAlpha(): number {\n return this._getGroup()?._getGlobalAlpha() ?? 1;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number, entity: Entity): void {\n switch (flag) {\n case EntityModifyFlags.Parent:\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n case EntityModifyFlags.Child:\n entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n break;\n default:\n break;\n }\n }\n\n /**\n * @internal\n */\n _onGroupModify(flags: GroupModifyFlags): void {\n if (flags & GroupModifyFlags.GlobalAlpha) {\n this._dirtyUpdateFlag |= UIRendererUpdateFlags.Color;\n }\n }\n\n @ignoreClone\n private _onColorChanged(): void {\n this._dirtyUpdateFlag |= UIRendererUpdateFlags.Color;\n }\n\n /**\n * @internal\n */\n _getChunkManager() {\n // @ts-ignore\n return this.engine._batcherManager.primitiveChunkManagerUI;\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, out: UIHitResult, distance: number = Number.MAX_SAFE_INTEGER): boolean {\n const plane = UIRenderer._tempPlane;\n const transform = <UITransform>this._transformEntity.transform;\n const normal = plane.normal.copyFrom(transform.worldForward);\n plane.distance = -Vector3.dot(normal, transform.worldPosition);\n const curDistance = ray.intersectPlane(plane);\n if (curDistance >= 0 && curDistance < distance) {\n const hitPointWorld = ray.getPoint(curDistance, UIRenderer._tempVec30);\n const worldMatrixInv = UIRenderer._tempMat;\n Matrix.invert(transform.worldMatrix, worldMatrixInv);\n const localPosition = UIRenderer._tempVec31;\n Vector3.transformCoordinate(hitPointWorld, worldMatrixInv, localPosition);\n if (this._hitTest(localPosition)) {\n out.component = this;\n out.distance = curDistance;\n out.entity = this.entity;\n out.normal.copyFrom(normal);\n out.point.copyFrom(hitPointWorld);\n return true;\n }\n }\n return false;\n }\n\n protected _hitTest(localPosition: Vector3): boolean {\n const { x, y } = localPosition;\n const uiTransform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = uiTransform.size;\n const { x: pivotX, y: pivotY } = uiTransform.pivot;\n const { x: paddingLeft, y: paddingBottom, z: paddingRight, w: paddingTop } = this.raycastPadding;\n return (\n x >= -width * pivotX + paddingLeft &&\n x <= width * (1 - pivotX) - paddingRight &&\n y >= -height * pivotY + paddingTop &&\n y <= height * (1 - pivotY) - paddingBottom\n );\n }\n\n protected override _onDestroy(): void {\n if (this._subChunk) {\n this._getChunkManager().freeSubChunk(this._subChunk);\n this._subChunk = null;\n }\n super._onDestroy();\n //@ts-ignore\n this._color._onValueChanged = null;\n this._color = null;\n }\n}\n\n/**\n * @remarks Extends `RendererUpdateFlags`.\n */\nexport enum UIRendererUpdateFlags {\n Color = 0x2\n}\n","import {\n CloneUtils,\n Entity,\n EntityModifyFlags,\n Script,\n assignmentClone,\n deepClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { UIGroup } from \"../..\";\nimport { Utils } from \"../../Utils\";\nimport { IGroupAble } from \"../../interface/IGroupAble\";\nimport { EntityUIModifyFlags, UICanvas } from \"../UICanvas\";\nimport { GroupModifyFlags } from \"../UIGroup\";\nimport { Transition } from \"./transition/Transition\";\n\n/**\n * Interactive component.\n */\nexport class UIInteractive extends Script implements IGroupAble {\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n\n /** @internal */\n @ignoreClone\n _globalInteractive: boolean = false;\n /** @internal */\n @ignoreClone\n _globalInteractiveDirty: boolean = false;\n\n @deepClone\n protected _transitions: Transition[] = [];\n @assignmentClone\n protected _interactive: boolean = true;\n @ignoreClone\n protected _state: InteractiveState = InteractiveState.Normal;\n\n /** @todo Multi-touch points are not considered yet. */\n @ignoreClone\n private _isPointerInside: boolean = false;\n @ignoreClone\n private _isPointerDragging: boolean = false;\n\n /**\n * The transitions of this interactive.\n */\n get transitions(): Readonly<Transition[]> {\n return this._transitions;\n }\n\n /**\n * Whether the interactive is enabled.\n */\n get interactive() {\n return this._interactive;\n }\n\n set interactive(value: boolean) {\n if (this._interactive !== value) {\n this._interactive = value;\n this._globalInteractiveDirty = true;\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._groupListener = this._groupListener.bind(this);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n }\n\n /**\n * Add transition on this interactive.\n * @param transition - The transition\n */\n addTransition(transition: Transition): void {\n const interactive = transition._interactive;\n if (interactive !== this) {\n interactive?.removeTransition(transition);\n this._transitions.push(transition);\n transition._interactive = this;\n transition._setState(this._state, true);\n }\n }\n\n /**\n * Remove a transition.\n * @param shape - The transition.\n */\n removeTransition(transition: Transition): void {\n const transitions = this._transitions;\n const lastOneIndex = transitions.length - 1;\n for (let i = lastOneIndex; i >= 0; i--) {\n if (transitions[i] === transition) {\n i !== lastOneIndex && (transitions[i] = transitions[lastOneIndex]);\n transitions.length = lastOneIndex;\n transition._interactive = null;\n break;\n }\n }\n }\n\n /**\n * Remove all transitions.\n */\n clearTransitions(): void {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._interactive = null;\n }\n transitions.length = 0;\n }\n\n override onUpdate(deltaTime: number): void {\n if (this._getGlobalInteractive()) {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._onUpdate(deltaTime);\n }\n }\n }\n\n override onPointerBeginDrag(): void {\n this._isPointerDragging = true;\n this._updateState(false);\n }\n\n override onPointerEndDrag(): void {\n this._isPointerDragging = false;\n this._updateState(false);\n }\n\n override onPointerEnter(): void {\n this._isPointerInside = true;\n this._updateState(false);\n }\n\n override onPointerExit(): void {\n this._isPointerInside = false;\n this._updateState(false);\n }\n\n override onDestroy(): void {\n super.onDestroy();\n const transitions = this._transitions;\n for (let i = transitions.length - 1; i >= 0; i--) {\n transitions[i].destroy();\n }\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n // @ts-ignore\n super._onEnableInScene();\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n this._updateState(true);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n // @ts-ignore\n super._onDisableInScene();\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n this._isPointerInside = this._isPointerDragging = false;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.CanvasEnableInScene) {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _onGroupModify(flags: GroupModifyFlags): void {\n if (flags & GroupModifyFlags.GlobalInteractive) {\n this._globalInteractiveDirty = true;\n }\n }\n\n /**\n * @internal\n */\n _getGlobalInteractive(): boolean {\n if (this._globalInteractiveDirty) {\n const group = this._getGroup();\n const globalInteractive = this._interactive && (!group || group._getGlobalInteractive());\n if (this._globalInteractive !== globalInteractive) {\n this._globalInteractive = globalInteractive;\n this._updateState(true);\n }\n this._globalInteractiveDirty = false;\n }\n return this._globalInteractive;\n }\n\n private _updateState(instant: boolean): void {\n const state = this._getInteractiveState();\n if (this._state !== state) {\n this._state = state;\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._setState(state, instant);\n }\n }\n }\n\n private _getInteractiveState(): InteractiveState {\n if (!this._getGlobalInteractive()) {\n return InteractiveState.Disable;\n }\n if (this._isPointerDragging) {\n return InteractiveState.Pressed;\n } else {\n return this._isPointerInside ? InteractiveState.Hover : InteractiveState.Normal;\n }\n }\n}\n\nexport enum InteractiveState {\n Normal,\n Pressed,\n Hover,\n Disable\n}\n","import {\n BoolUpdateFlag,\n Camera,\n CameraModifyFlags,\n Component,\n DependentMode,\n DisorderedArray,\n Entity,\n EntityModifyFlags,\n Logger,\n MathUtil,\n Matrix,\n Ray,\n Vector2,\n Vector3,\n assignmentClone,\n deepClone,\n dependentComponents,\n ignoreClone,\n CloneUtils\n} from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { CanvasRenderMode } from \"../enums/CanvasRenderMode\";\nimport { ResolutionAdaptationMode } from \"../enums/ResolutionAdaptationMode\";\nimport { UIHitResult } from \"../input/UIHitResult\";\nimport { IElement } from \"../interface/IElement\";\nimport { IGroupAble } from \"../interface/IGroupAble\";\nimport { UIGroup } from \"./UIGroup\";\nimport { UIRenderer } from \"./UIRenderer\";\nimport { UITransform } from \"./UITransform\";\nimport { UIInteractive } from \"./interactive/UIInteractive\";\n\n/**\n * The UI Canvas component serves as the root node for UI elements,\n * handling rendering and events based on it.\n */\n@dependentComponents(UITransform, DependentMode.AutoAdd)\nexport class UICanvas extends Component implements IElement {\n /** @internal */\n static _hierarchyCounter: number = 1;\n private static _tempGroupAbleList: IGroupAble[] = [];\n private static _tempVec3: Vector3 = new Vector3();\n private static _tempMat: Matrix = new Matrix();\n\n /** @internal */\n @ignoreClone\n _canvasIndex: number = -1;\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n\n /** @internal */\n @ignoreClone\n _isRootCanvas: boolean = false;\n /** @internal */\n @ignoreClone\n _renderElement: any;\n /** @internal */\n @ignoreClone\n _sortDistance: number = 0;\n /** @internal */\n @ignoreClone\n _orderedRenderers: UIRenderer[] = [];\n /** @internal */\n @ignoreClone\n _realRenderMode: number = CanvasRealRenderMode.None;\n /** @internal */\n @ignoreClone\n _disorderedElements: DisorderedArray<IElement> = new DisorderedArray<IElement>();\n\n @ignoreClone\n private _renderMode = CanvasRenderMode.WorldSpace;\n private _camera: Camera;\n private _cameraObserver: Camera;\n @assignmentClone\n private _resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation;\n @assignmentClone\n private _sortOrder: number = 0;\n @assignmentClone\n private _distance: number = 10;\n @deepClone\n private _referenceResolution: Vector2 = new Vector2(800, 600);\n @assignmentClone\n private _referenceResolutionPerUnit: number = 100;\n @ignoreClone\n private _hierarchyVersion: number = -1;\n @ignoreClone\n private _center: Vector3 = new Vector3();\n @ignoreClone\n private _centerDirtyFlag: BoolUpdateFlag;\n\n /**\n * The conversion ratio between reference resolution and unit for UI elements in this canvas.\n */\n get referenceResolutionPerUnit(): number {\n return this._referenceResolutionPerUnit;\n }\n\n set referenceResolutionPerUnit(value: number) {\n if (this._referenceResolutionPerUnit !== value) {\n this._referenceResolutionPerUnit = value;\n this._disorderedElements.forEach((element) => {\n element._onRootCanvasModify?.(RootCanvasModifyFlags.ReferenceResolutionPerUnit);\n });\n }\n }\n\n /**\n * The reference resolution of the UI canvas in `ScreenSpaceCamera` and `ScreenSpaceOverlay` mode.\n */\n get referenceResolution(): Vector2 {\n return this._referenceResolution;\n }\n\n set referenceResolution(value: Vector2) {\n const referenceResolution = this._referenceResolution;\n if (referenceResolution === value) return;\n (referenceResolution.x !== value.x || referenceResolution.y !== value.y) && referenceResolution.copyFrom(value);\n }\n\n /**\n * The rendering mode of the UI canvas.\n */\n get renderMode(): CanvasRenderMode {\n return this._renderMode;\n }\n\n set renderMode(mode: CanvasRenderMode) {\n const preMode = this._renderMode;\n if (preMode !== mode) {\n this._renderMode = mode;\n this._updateCameraObserver();\n this._setRealRenderMode(this._getRealRenderMode());\n }\n }\n\n /**\n * The camera associated with this canvas.\n * @remarks\n * - `ScreenSpaceCamera` mode: Used for rendering adaptation. Defaults to `ScreenSpaceOverlay` if not assigned.\n * - `WorldSpace` mode: Used for event detection. If not assigned, events are handled by the highest-priority camera.\n */\n get camera(): Camera {\n return this._camera;\n }\n\n set camera(value: Camera) {\n const preCamera = this._camera;\n if (preCamera !== value) {\n if (value && this._isSameOrChildEntity(value.entity)) {\n Logger.warn(\n \"Camera entity matching or nested within the canvas entity disables canvas auto-adaptation in ScreenSpaceCamera mode.\"\n );\n }\n this._camera = value;\n this._updateCameraObserver();\n const preRenderMode = this._realRenderMode;\n const curRenderMode = this._getRealRenderMode();\n if (preRenderMode === curRenderMode) {\n if (curRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n }\n } else {\n this._setRealRenderMode(curRenderMode);\n }\n }\n }\n\n /**\n * @deprecated Use {@link camera} instead.\n */\n get renderCamera(): Camera {\n return this.camera;\n }\n\n set renderCamera(value: Camera) {\n this.camera = value;\n }\n\n /**\n * The screen resolution adaptation mode of the UI canvas in `ScreenSpaceCamera` and `ScreenSpaceOverlay` mode.\n */\n get resolutionAdaptationMode(): ResolutionAdaptationMode {\n return this._resolutionAdaptationMode;\n }\n\n set resolutionAdaptationMode(value: ResolutionAdaptationMode) {\n if (this._resolutionAdaptationMode !== value) {\n this._resolutionAdaptationMode = value;\n const realRenderMode = this._realRenderMode;\n if (\n realRenderMode === CanvasRenderMode.ScreenSpaceCamera ||\n realRenderMode === CanvasRenderMode.ScreenSpaceOverlay\n ) {\n this._adapterSizeInScreenSpace();\n }\n }\n }\n\n /**\n * The rendering order priority of the UI canvas in `ScreenSpaceOverlay` mode.\n */\n get sortOrder(): number {\n return this._sortOrder;\n }\n\n set sortOrder(value: number) {\n if (this._sortOrder !== value) {\n this._sortOrder = value;\n this._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay &&\n // @ts-ignore\n (this.scene._componentsManager._overlayCanvasesSortingFlag = true);\n }\n }\n\n /**\n * The distance between the UI canvas and the camera in `ScreenSpaceCamera` mode.\n */\n get distance(): number {\n return this._distance;\n }\n\n set distance(value: number) {\n if (this._distance !== value) {\n this._distance = value;\n if (this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n }\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._onCanvasSizeListener = this._onCanvasSizeListener.bind(this);\n this._onCameraModifyListener = this._onCameraModifyListener.bind(this);\n this._onCameraTransformListener = this._onCameraTransformListener.bind(this);\n this._onReferenceResolutionChanged = this._onReferenceResolutionChanged.bind(this);\n // @ts-ignore\n this._referenceResolution._onValueChanged = this._onReferenceResolutionChanged;\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n this._centerDirtyFlag = entity.registerWorldChangeFlag();\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, out: UIHitResult, distance: number = Number.MAX_SAFE_INTEGER): boolean {\n const renderers = this._getRenderers();\n for (let i = renderers.length - 1; i >= 0; i--) {\n const element = renderers[i];\n if (element.raycastEnabled && element._raycast(ray, out, distance)) {\n return true;\n }\n }\n out.component = null;\n out.entity = null;\n out.distance = 0;\n out.point.set(0, 0, 0);\n out.normal.set(0, 0, 0);\n return false;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _canRender(camera: Camera): boolean {\n return this._realRenderMode !== CanvasRenderMode.ScreenSpaceCamera || this._camera === camera;\n }\n\n /**\n * @internal\n */\n _canDispatchEvent(camera: Camera): boolean {\n const realMode = this._realRenderMode;\n if (realMode === CanvasRenderMode.ScreenSpaceOverlay) {\n return true;\n }\n const assignedCamera = this._camera;\n // @ts-ignore\n return !assignedCamera || !assignedCamera._phasedActiveInScene || assignedCamera === camera;\n }\n\n /**\n * @internal\n */\n _prepareRender(context): void {\n const { engine, _realRenderMode: mode } = this;\n const { enableFrustumCulling, cullingMask, _frustum: frustum } = context.camera;\n const { frameCount } = engine.time;\n // @ts-ignore\n const renderElement = (this._renderElement = engine._renderElementPool.get());\n const virtualCamera = context.virtualCamera;\n this._updateSortDistance(virtualCamera.isOrthographic, virtualCamera.position, virtualCamera.forward);\n renderElement.set(this.sortOrder, this._sortDistance);\n const { width, height } = engine.canvas;\n const renderers = this._getRenderers();\n for (let i = 0, n = renderers.length; i < n; i++) {\n const renderer = renderers[i];\n // Filter by camera culling mask\n if (!(cullingMask & renderer.entity.layer)) {\n continue;\n }\n // Filter by camera frustum\n if (enableFrustumCulling) {\n switch (mode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n const { min, max } = renderer.bounds;\n if (min.x > width || max.x < 0 || min.y > height || max.y < 0) {\n continue;\n }\n break;\n case CanvasRenderMode.ScreenSpaceCamera:\n case CanvasRenderMode.WorldSpace:\n if (!frustum.intersectsBox(renderer.bounds)) {\n continue;\n }\n break;\n default:\n break;\n }\n }\n renderer._prepareRender(context);\n renderer._renderFrameCount = frameCount;\n }\n }\n\n /**\n * @internal\n */\n _updateSortDistance(isOrthographic: boolean, cameraPosition: Vector3, cameraForward: Vector3): void {\n switch (this._realRenderMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._sortDistance = 0;\n break;\n case CanvasRenderMode.ScreenSpaceCamera:\n this._sortDistance = this._distance;\n break;\n case CanvasRenderMode.WorldSpace:\n const boundsCenter = this._getCenter();\n if (isOrthographic) {\n const distance = UICanvas._tempVec3;\n Vector3.subtract(boundsCenter, cameraPosition, distance);\n this._sortDistance = Vector3.dot(distance, cameraForward);\n } else {\n this._sortDistance = Vector3.distanceSquared(boundsCenter, cameraPosition);\n }\n break;\n }\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n const entity = this.entity;\n // @ts-ignore\n entity._dispatchModify(EntityUIModifyFlags.CanvasEnableInScene, this);\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n this._setIsRootCanvas(false);\n Utils.cleanRootCanvas(this);\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number, param: any): void {\n if (this._isRootCanvas) {\n if (flag === EntityModifyFlags.Parent) {\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n } else if (flag === EntityUIModifyFlags.CanvasEnableInScene) {\n this._setIsRootCanvas(false);\n Utils.setRootCanvas(this, <UICanvas>param);\n }\n } else {\n if (flag === EntityModifyFlags.Parent) {\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n }\n }\n }\n\n /**\n * @internal\n */\n _cloneTo(target: UICanvas): void {\n target.renderMode = this._renderMode;\n }\n\n private _getRenderers(): UIRenderer[] {\n const { _orderedRenderers: renderers, entity } = this;\n const uiHierarchyVersion = entity._uiHierarchyVersion;\n if (this._hierarchyVersion !== uiHierarchyVersion) {\n renderers.length = this._walk(this.entity, renderers);\n UICanvas._tempGroupAbleList.length = 0;\n this._hierarchyVersion = uiHierarchyVersion;\n ++UICanvas._hierarchyCounter;\n }\n return renderers;\n }\n\n private _adapterPoseInScreenSpace(): void {\n const transform = this.entity.transform;\n const realRenderMode = this._realRenderMode;\n if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n const cameraEntity = this._camera.entity;\n if (!this._isSameOrChildEntity(cameraEntity)) {\n const { transform: cameraTransform } = cameraEntity;\n const { worldPosition: cameraWorldPosition, worldForward: cameraWorldForward } = cameraTransform;\n const distance = this._distance;\n transform.setWorldPosition(\n cameraWorldPosition.x + cameraWorldForward.x * distance,\n cameraWorldPosition.y + cameraWorldForward.y * distance,\n cameraWorldPosition.z + cameraWorldForward.z * distance\n );\n transform.worldRotationQuaternion.copyFrom(cameraTransform.worldRotationQuaternion);\n }\n } else {\n const { canvas } = this.engine;\n transform.setWorldPosition(canvas.width * 0.5, canvas.height * 0.5, 0);\n transform.worldRotationQuaternion.set(0, 0, 0, 1);\n }\n }\n\n private _adapterSizeInScreenSpace(): void {\n const transform = <UITransform>this.entity.transform;\n const realRenderMode = this._realRenderMode;\n const { x: width, y: height } = this._referenceResolution;\n let curWidth: number;\n let curHeight: number;\n if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n const camera = this._camera;\n curHeight = camera.isOrthographic\n ? camera.orthographicSize * 2\n : 2 * (Math.tan(MathUtil.degreeToRadian(camera.fieldOfView * 0.5)) * this._distance);\n curWidth = camera.aspectRatio * curHeight;\n } else {\n const canvas = this.engine.canvas;\n curHeight = canvas.height;\n curWidth = canvas.width;\n }\n let expectX: number, expectY: number, expectZ: number;\n switch (this._resolutionAdaptationMode) {\n case ResolutionAdaptationMode.WidthAdaptation:\n expectX = expectY = expectZ = curWidth / width;\n break;\n case ResolutionAdaptationMode.HeightAdaptation:\n expectX = expectY = expectZ = curHeight / height;\n break;\n case ResolutionAdaptationMode.BothAdaptation:\n expectX = curWidth / width;\n expectY = curHeight / height;\n expectZ = (expectX + expectY) * 0.5;\n break;\n case ResolutionAdaptationMode.ExpandAdaptation:\n expectX = expectY = expectZ = Math.min(curWidth / width, curHeight / height);\n break;\n case ResolutionAdaptationMode.ShrinkAdaptation:\n expectX = expectY = expectZ = Math.max(curWidth / width, curHeight / height);\n break;\n default:\n break;\n }\n\n const worldMatrix = UICanvas._tempMat;\n Matrix.affineTransformation(\n UICanvas._tempVec3.set(expectX, expectY, expectZ),\n transform.worldRotationQuaternion,\n transform.worldPosition,\n worldMatrix\n );\n transform.worldMatrix = worldMatrix;\n transform.size.set(curWidth / expectX, curHeight / expectY);\n }\n\n private _walk(entity: Entity, renderers: UIRenderer[], depth = 0, group: UIGroup = null): number {\n // @ts-ignore\n const components: Component[] = entity._components;\n const tempGroupAbleList = UICanvas._tempGroupAbleList;\n let groupAbleCount = 0;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (!component.enabled) continue;\n if (component instanceof UIRenderer) {\n renderers[depth] = component;\n ++depth;\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n if (component._isGroupDirty) {\n tempGroupAbleList[groupAbleCount++] = component;\n }\n } else if (component instanceof UIInteractive) {\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n if (component._isGroupDirty) {\n tempGroupAbleList[groupAbleCount++] = component;\n }\n } else if (component instanceof UIGroup) {\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n component._isGroupDirty && Utils.setGroup(component, group);\n group = component;\n }\n }\n for (let i = 0; i < groupAbleCount; i++) {\n Utils.setGroup(tempGroupAbleList[i], group);\n }\n const children = entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n const child = children[i];\n child.isActive && (depth = this._walk(child, renderers, depth, group));\n }\n return depth;\n }\n\n private _updateCameraObserver(): void {\n const camera = this._isRootCanvas && this._renderMode === CanvasRenderMode.ScreenSpaceCamera ? this._camera : null;\n const preCamera = this._cameraObserver;\n if (preCamera !== camera) {\n this._cameraObserver = camera;\n if (preCamera) {\n // @ts-ignore\n preCamera.entity._updateFlagManager.removeListener(this._onCameraTransformListener);\n // @ts-ignore\n preCamera._unRegisterModifyListener(this._onCameraModifyListener);\n }\n if (camera) {\n // @ts-ignore\n camera.entity._updateFlagManager.addListener(this._onCameraTransformListener);\n // @ts-ignore\n camera._registerModifyListener(this._onCameraModifyListener);\n }\n }\n }\n\n @ignoreClone\n private _onCameraModifyListener(flag: CameraModifyFlags): void {\n if (this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n switch (flag) {\n case CameraModifyFlags.ProjectionType:\n case CameraModifyFlags.AspectRatio:\n this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.FieldOfView:\n !this._camera.isOrthographic && this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.OrthographicSize:\n this._camera.isOrthographic && this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.DisableInScene:\n this._setRealRenderMode(CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n } else {\n flag === CameraModifyFlags.EnableInScene && this._setRealRenderMode(CanvasRenderMode.ScreenSpaceCamera);\n }\n }\n\n @ignoreClone\n private _onCameraTransformListener(): void {\n this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera && this._adapterPoseInScreenSpace();\n }\n\n private _addCanvasListener(): void {\n // @ts-ignore\n this.engine.canvas._sizeUpdateFlagManager.addListener(this._onCanvasSizeListener);\n }\n\n private _removeCanvasListener(): void {\n // @ts-ignore\n this.engine.canvas._sizeUpdateFlagManager.removeListener(this._onCanvasSizeListener);\n }\n\n @ignoreClone\n private _onCanvasSizeListener(): void {\n const { canvas } = this.engine;\n this.entity.transform.setWorldPosition(canvas.width * 0.5, canvas.height * 0.5, 0);\n this._adapterSizeInScreenSpace();\n }\n\n @ignoreClone\n private _onReferenceResolutionChanged(): void {\n const realRenderMode = this._realRenderMode;\n if (\n realRenderMode === CanvasRenderMode.ScreenSpaceOverlay ||\n realRenderMode === CanvasRenderMode.ScreenSpaceCamera\n ) {\n this._adapterSizeInScreenSpace();\n }\n }\n\n private _setIsRootCanvas(isRootCanvas: boolean): void {\n if (this._isRootCanvas !== isRootCanvas) {\n this._isRootCanvas = isRootCanvas;\n this._updateCameraObserver();\n this._setRealRenderMode(this._getRealRenderMode());\n if (isRootCanvas) {\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n } else {\n const { _disorderedElements: disorderedElements } = this;\n disorderedElements.forEach((element: IElement) => {\n if (element instanceof UICanvas) {\n const rootCanvas = Utils.searchRootCanvasInParents(element);\n element._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(element, rootCanvas);\n } else {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(<IGroupAble>element);\n }\n });\n disorderedElements.length = 0;\n disorderedElements.garbageCollection();\n this._orderedRenderers.length = 0;\n }\n }\n }\n\n private _getCenter(): Vector3 {\n if (this._centerDirtyFlag.flag) {\n const center = this._center;\n const uiTransform = <UITransform>this.entity.transform;\n const { pivot, size } = uiTransform;\n center.set((0.5 - pivot.x) * size.x, (0.5 - pivot.y) * size.y, 0);\n Vector3.transformCoordinate(center, uiTransform.worldMatrix, center);\n this._centerDirtyFlag.flag = false;\n }\n return this._center;\n }\n\n private _getRealRenderMode(): number {\n if (this._isRootCanvas) {\n const mode = this._renderMode;\n // @ts-ignore\n if (mode === CanvasRenderMode.ScreenSpaceCamera && !this._camera?._phasedActiveInScene) {\n return CanvasRenderMode.ScreenSpaceOverlay;\n } else {\n return mode;\n }\n } else {\n return CanvasRealRenderMode.None;\n }\n }\n\n private _setRealRenderMode(curRealMode: number): void {\n const preRealMode = this._realRenderMode;\n if (preRealMode !== curRealMode) {\n this._realRenderMode = curRealMode;\n // @ts-ignore\n const componentsManager = this.scene._componentsManager;\n switch (preRealMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._removeCanvasListener();\n case CanvasRenderMode.ScreenSpaceCamera:\n case CanvasRenderMode.WorldSpace:\n componentsManager.removeUICanvas(this, preRealMode === CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n switch (curRealMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._addCanvasListener();\n case CanvasRenderMode.ScreenSpaceCamera:\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n case CanvasRenderMode.WorldSpace:\n componentsManager.addUICanvas(this, curRealMode === CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n }\n }\n\n private _isSameOrChildEntity(cameraEntity: Entity): boolean {\n const canvasEntity = this.entity;\n while (cameraEntity) {\n if (cameraEntity === canvasEntity) return true;\n cameraEntity = cameraEntity.parent;\n }\n return false;\n }\n}\n\n/**\n * @remarks Extends `CanvasRenderMode`.\n */\nenum CanvasRealRenderMode {\n None = 4\n}\n\n/**\n * @remarks Extends `EntityModifyFlags`.\n */\nexport enum EntityUIModifyFlags {\n CanvasEnableInScene = 0x4,\n GroupEnableInScene = 0x8\n}\n\nexport enum RootCanvasModifyFlags {\n None = 0x0,\n ReferenceResolutionPerUnit = 0x1,\n All = 0x1\n}\n","import { deepClone, PointerEventData, Signal } from \"@galacean/engine\";\nimport { UIInteractive } from \"../interactive/UIInteractive\";\n\nexport class Button extends UIInteractive {\n /** Signal emitted when the button is clicked. */\n @deepClone\n readonly onClick = new Signal<[PointerEventData]>();\n\n override onPointerClick(event: PointerEventData): void {\n if (!this._getGlobalInteractive()) return;\n this.onClick.invoke(event);\n }\n\n override onDestroy(): void {\n super.onDestroy();\n this.onClick.removeAll();\n }\n\n /**\n * Add a listening function for click.\n * @deprecated Use `onClick.on(listener, context)` instead.\n */\n addClicked(listener: (event: PointerEventData) => void): void {\n this.onClick.on(listener);\n }\n\n /**\n * Remove a listening function of click.\n * @deprecated Use `onClick.off(listener, context)` instead.\n */\n removeClicked(listener: (event: PointerEventData) => void): void {\n this.onClick.off(listener);\n }\n}\n","import {\n BoundingBox,\n Entity,\n ISpriteAssembler,\n ISpriteRenderer,\n MathUtil,\n RenderQueueFlags,\n RendererUpdateFlags,\n SimpleSpriteAssembler,\n SlicedSpriteAssembler,\n Sprite,\n SpriteDrawMode,\n SpriteModifyFlags,\n SpriteTileMode,\n TiledSpriteAssembler,\n assignmentClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { CanvasRenderMode } from \"../../enums/CanvasRenderMode\";\nimport { RootCanvasModifyFlags } from \"../UICanvas\";\nimport { UIRenderer, UIRendererUpdateFlags } from \"../UIRenderer\";\nimport { UITransform, UITransformModifyFlags } from \"../UITransform\";\n\n/**\n * UI element that renders an image.\n */\nexport class Image extends UIRenderer implements ISpriteRenderer {\n @ignoreClone\n private _sprite: Sprite = null;\n @ignoreClone\n private _drawMode: SpriteDrawMode;\n @ignoreClone\n private _assembler: ISpriteAssembler;\n @assignmentClone\n private _tileMode: SpriteTileMode = SpriteTileMode.Continuous;\n @assignmentClone\n private _tiledAdaptiveThreshold: number = 0.5;\n\n /**\n * The draw mode of the image.\n */\n get drawMode(): SpriteDrawMode {\n return this._drawMode;\n }\n\n set drawMode(value: SpriteDrawMode) {\n if (this._drawMode !== value) {\n this._drawMode = value;\n switch (value) {\n case SpriteDrawMode.Simple:\n this._assembler = SimpleSpriteAssembler;\n break;\n case SpriteDrawMode.Sliced:\n this._assembler = SlicedSpriteAssembler;\n break;\n case SpriteDrawMode.Tiled:\n this._assembler = TiledSpriteAssembler;\n break;\n default:\n break;\n }\n this._assembler.resetData(this);\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n\n /**\n * The tiling mode of the image. (Only works in tiled mode.)\n */\n get tileMode(): SpriteTileMode {\n return this._tileMode;\n }\n\n set tileMode(value: SpriteTileMode) {\n if (this._tileMode !== value) {\n this._tileMode = value;\n if (this.drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n }\n\n /**\n * Stretch Threshold in Tile Adaptive Mode, specified in normalized. (Only works in tiled adaptive mode.)\n */\n get tiledAdaptiveThreshold(): number {\n return this._tiledAdaptiveThreshold;\n }\n\n set tiledAdaptiveThreshold(value: number) {\n if (value !== this._tiledAdaptiveThreshold) {\n value = MathUtil.clamp(value, 0, 1);\n this._tiledAdaptiveThreshold = value;\n if (this.drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n }\n\n /**\n * The Sprite to render.\n */\n get sprite(): Sprite {\n return this._sprite;\n }\n\n set sprite(value: Sprite | null) {\n const lastSprite = this._sprite;\n if (lastSprite !== value) {\n if (lastSprite) {\n this._addResourceReferCount(lastSprite, -1);\n // @ts-ignore\n lastSprite._updateFlagManager.removeListener(this._onSpriteChange);\n }\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n if (value) {\n this._addResourceReferCount(value, 1);\n // @ts-ignore\n value._updateFlagManager.addListener(this._onSpriteChange);\n this.shaderData.setTexture(UIRenderer._textureProperty, value.texture);\n } else {\n this.shaderData.setTexture(UIRenderer._textureProperty, null);\n }\n this._sprite = value;\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this.drawMode = SpriteDrawMode.Simple;\n // @ts-ignore\n this.setMaterial(this._engine._getUIDefaultMaterial());\n this._onSpriteChange = this._onSpriteChange.bind(this);\n }\n\n /**\n * @internal\n */\n _onRootCanvasModify(flag: RootCanvasModifyFlags): void {\n if (flag & RootCanvasModifyFlags.ReferenceResolutionPerUnit) {\n const drawMode = this._drawMode;\n if (drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.All;\n } else if (drawMode === SpriteDrawMode.Sliced) {\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n }\n }\n }\n\n /**\n * @internal\n */\n _cloneTo(target: Image): void {\n // @ts-ignore\n super._cloneTo(target);\n target.sprite = this._sprite;\n target.drawMode = this._drawMode;\n }\n\n protected override _updateBounds(worldBounds: BoundingBox): void {\n const sprite = this._sprite;\n const rootCanvas = this._getRootCanvas();\n if (sprite && rootCanvas) {\n const transform = <UITransform>this._transformEntity.transform;\n const { size } = transform;\n this._assembler.updatePositions(\n this,\n transform.worldMatrix,\n size.x,\n size.y,\n transform.pivot,\n false,\n false,\n rootCanvas.referenceResolutionPerUnit\n );\n } else {\n const { worldPosition } = this._transformEntity.transform;\n worldBounds.min.copyFrom(worldPosition);\n worldBounds.max.copyFrom(worldPosition);\n }\n }\n\n protected override _render(context): void {\n const { _sprite: sprite } = this;\n const transform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = transform.size;\n if (!sprite?.texture || !width || !height) {\n return;\n }\n\n let material = this.getMaterial();\n if (!material) {\n return;\n }\n // @todo: This question needs to be raised rather than hidden.\n if (material.destroyed) {\n // @ts-ignore\n material = this._engine._getUIDefaultMaterial();\n }\n\n const alpha = this._getGlobalAlpha();\n if (this._color.a * alpha <= 0) {\n return;\n }\n\n let { _dirtyUpdateFlag: dirtyUpdateFlag } = this;\n const canvas = this._getRootCanvas();\n // Update position\n if (dirtyUpdateFlag & RendererUpdateFlags.WorldVolume) {\n this._assembler.updatePositions(\n this,\n transform.worldMatrix,\n width,\n height,\n transform.pivot,\n false,\n false,\n canvas.referenceResolutionPerUnit\n );\n dirtyUpdateFlag &= ~RendererUpdateFlags.WorldVolume;\n }\n\n // Update uv\n if (dirtyUpdateFlag & ImageUpdateFlags.UV) {\n this._assembler.updateUVs(this);\n dirtyUpdateFlag &= ~ImageUpdateFlags.UV;\n }\n\n // Update color\n if (dirtyUpdateFlag & UIRendererUpdateFlags.Color) {\n this._assembler.updateColor(this, alpha);\n dirtyUpdateFlag &= ~UIRendererUpdateFlags.Color;\n }\n\n this._dirtyUpdateFlag = dirtyUpdateFlag;\n // Init sub render element.\n const { engine } = context.camera;\n const subRenderElement = engine._subRenderElementPool.get();\n const subChunk = this._subChunk;\n subRenderElement.set(this, material, subChunk.chunk.primitive, subChunk.subMesh, this.sprite.texture, subChunk);\n if (canvas._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay) {\n subRenderElement.shaderPasses = material.shader.subShaders[0].passes;\n subRenderElement.renderQueueFlags = RenderQueueFlags.All;\n }\n canvas._renderElement.addSubRenderElement(subRenderElement);\n }\n\n @ignoreClone\n protected override _onTransformChanged(type: number): void {\n if (type & UITransformModifyFlags.Size && this._drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.All;\n }\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n }\n\n protected override _onDestroy(): void {\n const sprite = this._sprite;\n if (sprite) {\n this._addResourceReferCount(sprite, -1);\n // @ts-ignore\n sprite._updateFlagManager.removeListener(this._onSpriteChange);\n this._sprite = null;\n }\n super._onDestroy();\n }\n\n @ignoreClone\n private _onSpriteChange(type: SpriteModifyFlags): void {\n switch (type) {\n case SpriteModifyFlags.texture:\n this.shaderData.setTexture(UIRenderer._textureProperty, this.sprite.texture);\n break;\n case SpriteModifyFlags.size:\n switch (this._drawMode) {\n case SpriteDrawMode.Sliced:\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n break;\n case SpriteDrawMode.Tiled:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n break;\n default:\n break;\n }\n break;\n case SpriteModifyFlags.border:\n switch (this._drawMode) {\n case SpriteDrawMode.Sliced:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeAndUV;\n break;\n case SpriteDrawMode.Tiled:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n break;\n default:\n break;\n }\n break;\n case SpriteModifyFlags.region:\n case SpriteModifyFlags.atlasRegionOffset:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeAndUV;\n break;\n case SpriteModifyFlags.atlasRegion:\n this._dirtyUpdateFlag |= ImageUpdateFlags.UV;\n break;\n case SpriteModifyFlags.destroy:\n this.sprite = null;\n break;\n }\n }\n}\n\n/**\n * @remarks Extends `UIRendererUpdateFlags`.\n */\nenum ImageUpdateFlags {\n /** UV. */\n UV = 0x4,\n /** Automatic Size. */\n AutomaticSize = 0x8,\n /** WorldVolume and UV. */\n WorldVolumeAndUV = 0x5,\n /** WorldVolume, UV and Color. */\n WorldVolumeUVAndColor = 0x7,\n /** All. */\n All = 0xf\n}\n","import {\n BoundingBox,\n CharRenderInfo,\n Engine,\n Entity,\n Font,\n FontStyle,\n ITextRenderer,\n OverflowMode,\n RenderQueueFlags,\n RendererUpdateFlags,\n ShaderData,\n ShaderDataGroup,\n ShaderProperty,\n SubFont,\n TextHorizontalAlignment,\n TextUtils,\n TextVerticalAlignment,\n Texture2D,\n Vector3,\n assignmentClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { CanvasRenderMode } from \"../../enums/CanvasRenderMode\";\nimport { RootCanvasModifyFlags } from \"../UICanvas\";\nimport { UIRenderer, UIRendererUpdateFlags } from \"../UIRenderer\";\nimport { UITransform, UITransformModifyFlags } from \"../UITransform\";\n\n/**\n * UI component used to render text.\n */\nexport class Text extends UIRenderer implements ITextRenderer {\n private static _textTextureProperty = ShaderProperty.getByName(\"renderElement_TextTexture\");\n private static _worldPositions = [new Vector3(), new Vector3(), new Vector3(), new Vector3()];\n private static _charRenderInfos: CharRenderInfo[] = [];\n\n @ignoreClone\n private _textChunks = Array<TextChunk>();\n @ignoreClone\n private _subFont: SubFont = null;\n @assignmentClone\n private _text: string = \"\";\n @ignoreClone\n private _localBounds: BoundingBox = new BoundingBox();\n @assignmentClone\n private _font: Font = null;\n @assignmentClone\n private _fontSize: number = 24;\n @assignmentClone\n private _fontStyle: FontStyle = FontStyle.None;\n @assignmentClone\n private _lineSpacing: number = 0;\n @assignmentClone\n private _characterSpacing: number = 0;\n @assignmentClone\n private _horizontalAlignment: TextHorizontalAlignment = TextHorizontalAlignment.Center;\n @assignmentClone\n private _verticalAlignment: TextVerticalAlignment = TextVerticalAlignment.Center;\n @assignmentClone\n private _enableWrapping: boolean = false;\n @assignmentClone\n private _overflowMode: OverflowMode = OverflowMode.Overflow;\n\n /**\n * Rendering string for the Text.\n */\n get text(): string {\n return this._text;\n }\n\n set text(value: string) {\n value = value || \"\";\n if (this._text !== value) {\n this._text = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The font of the Text.\n */\n get font(): Font {\n return this._font;\n }\n\n set font(value: Font) {\n const lastFont = this._font;\n if (lastFont !== value) {\n lastFont && this._addResourceReferCount(lastFont, -1);\n value && this._addResourceReferCount(value, 1);\n this._font = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The font size of the Text.\n */\n get fontSize(): number {\n return this._fontSize;\n }\n\n set fontSize(value: number) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The style of the font.\n */\n get fontStyle(): FontStyle {\n return this._fontStyle;\n }\n\n set fontStyle(value: FontStyle) {\n if (this.fontStyle !== value) {\n this._fontStyle = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The space between two lines, in em (ratio of fontSize).\n */\n get lineSpacing(): number {\n return this._lineSpacing;\n }\n\n set lineSpacing(value: number) {\n if (this._lineSpacing !== value) {\n this._lineSpacing = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The space between two characters, in em (ratio of fontSize).\n */\n get characterSpacing(): number {\n return this._characterSpacing;\n }\n\n set characterSpacing(value: number) {\n if (this._characterSpacing !== value) {\n this._characterSpacing = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The horizontal alignment.\n */\n get horizontalAlignment(): TextHorizontalAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment(value: TextHorizontalAlignment) {\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The vertical alignment.\n */\n get verticalAlignment(): TextVerticalAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment(value: TextVerticalAlignment) {\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * Whether wrap text to next line when exceeds the width of the container.\n */\n get enableWrapping(): boolean {\n return this._enableWrapping;\n }\n\n set enableWrapping(value: boolean) {\n if (this._enableWrapping !== value) {\n this._enableWrapping = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The overflow mode.\n */\n get overflowMode(): OverflowMode {\n return this._overflowMode;\n }\n\n set overflowMode(value: OverflowMode) {\n if (this._overflowMode !== value) {\n this._overflowMode = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The mask layer the sprite renderer belongs to.\n */\n get maskLayer(): number {\n return this._maskLayer;\n }\n\n set maskLayer(value: number) {\n this._maskLayer = value;\n }\n\n /**\n * The bounding volume of the TextRenderer.\n */\n override get bounds(): BoundingBox {\n if (this._isTextNoVisible()) {\n if (this._isContainDirtyFlag(RendererUpdateFlags.WorldVolume)) {\n const localBounds = this._localBounds;\n localBounds.min.set(0, 0, 0);\n localBounds.max.set(0, 0, 0);\n this._updateBounds(this._bounds);\n this._setDirtyFlagFalse(RendererUpdateFlags.WorldVolume);\n }\n return this._bounds;\n }\n this._isContainDirtyFlag(DirtyFlag.SubFont) && this._resetSubFont();\n this._isContainDirtyFlag(DirtyFlag.LocalPositionBounds) && this._updateLocalData();\n this._isContainDirtyFlag(DirtyFlag.WorldPosition) && this._updatePosition();\n this._isContainDirtyFlag(RendererUpdateFlags.WorldVolume) && this._updateBounds(this._bounds);\n this._setDirtyFlagFalse(DirtyFlag.Font);\n\n return this._bounds;\n }\n\n constructor(entity: Entity) {\n super(entity);\n const { engine } = this;\n // @ts-ignore\n this.font = engine._textDefaultFont;\n this.raycastEnabled = false;\n // @ts-ignore\n this.setMaterial(engine._basicResources.textDefaultMaterial);\n }\n\n /**\n * @internal\n */\n protected override _onDestroy(): void {\n if (this._font) {\n this._addResourceReferCount(this._font, -1);\n this._font = null;\n }\n\n super._onDestroy();\n\n this._freeTextChunks();\n this._textChunks = null;\n\n this._subFont && (this._subFont = null);\n }\n\n // @ts-ignore\n override _cloneTo(target: Text): void {\n // @ts-ignore\n super._cloneTo(target);\n target.font = this._font;\n target._subFont = this._subFont;\n }\n\n /**\n * @internal\n */\n _isContainDirtyFlag(type: number): boolean {\n return (this._dirtyUpdateFlag & type) != 0;\n }\n\n /**\n * @internal\n */\n _setDirtyFlagTrue(type: number): void {\n this._dirtyUpdateFlag |= type;\n }\n\n /**\n * @internal\n */\n _setDirtyFlagFalse(type: number): void {\n this._dirtyUpdateFlag &= ~type;\n }\n\n /**\n * @internal\n */\n _getSubFont(): SubFont {\n if (!this._subFont) {\n this._resetSubFont();\n }\n return this._subFont;\n }\n\n /**\n * @internal\n */\n _onRootCanvasModify(flag: RootCanvasModifyFlags): void {\n if (flag === RootCanvasModifyFlags.ReferenceResolutionPerUnit) {\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n protected override _updateBounds(worldBounds: BoundingBox): void {\n const transform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = transform.size;\n const { x: pivotX, y: pivotY } = transform.pivot;\n worldBounds.min.set(-width * pivotX, -height * pivotY, 0);\n worldBounds.max.set(width * (1 - pivotX), height * (1 - pivotY), 0);\n BoundingBox.transform(worldBounds, this._transformEntity.transform.worldMatrix, worldBounds);\n }\n\n protected override _render(context): void {\n if (this._isTextNoVisible()) {\n return;\n }\n\n if (this._isContainDirtyFlag(DirtyFlag.SubFont)) {\n this._resetSubFont();\n this._setDirtyFlagFalse(DirtyFlag.SubFont);\n }\n\n const canvas = this._getRootCanvas();\n if (this._isContainDirtyFlag(DirtyFlag.LocalPositionBounds)) {\n this._updateLocalData();\n this._setDirtyFlagFalse(DirtyFlag.LocalPositionBounds);\n }\n\n if (this._isContainDirtyFlag(DirtyFlag.WorldPosition)) {\n this._updatePosition();\n this._setDirtyFlagFalse(DirtyFlag.WorldPosition);\n }\n\n if (this._isContainDirtyFlag(UIRendererUpdateFlags.Color)) {\n this._updateColor();\n this._setDirtyFlagFalse(UIRendererUpdateFlags.Color);\n }\n\n const engine = context.camera.engine;\n const textSubRenderElementPool = engine._textSubRenderElementPool;\n const material = this.getMaterial();\n const renderElement = canvas._renderElement;\n const textChunks = this._textChunks;\n const isOverlay = canvas._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const { subChunk, texture } = textChunks[i];\n const subRenderElement = textSubRenderElementPool.get();\n subRenderElement.set(this, material, subChunk.chunk.primitive, subChunk.subMesh, texture, subChunk);\n // @ts-ignore\n subRenderElement.shaderData ||= new ShaderData(ShaderDataGroup.RenderElement);\n subRenderElement.shaderData.setTexture(Text._textTextureProperty, texture);\n if (isOverlay) {\n subRenderElement.shaderPasses = material.shader.subShaders[0].passes;\n subRenderElement.renderQueueFlags = RenderQueueFlags.All;\n }\n renderElement.addSubRenderElement(subRenderElement);\n }\n }\n\n private _resetSubFont(): void {\n const font = this._font;\n // @ts-ignore\n this._subFont = font._getSubFont(this.fontSize, this.fontStyle);\n this._subFont.nativeFontString = TextUtils.getNativeFontString(font.name, this.fontSize, this.fontStyle);\n }\n\n private _updatePosition(): void {\n const e = this._transformEntity.transform.worldMatrix.elements;\n\n // prettier-ignore\n const e0 = e[0], e1 = e[1], e2 = e[2],\n e4 = e[4], e5 = e[5], e6 = e[6],\n e12 = e[12], e13 = e[13], e14 = e[14];\n\n const up = UIRenderer._tempVec31.set(e4, e5, e6);\n const right = UIRenderer._tempVec30.set(e0, e1, e2);\n\n const worldPositions = Text._worldPositions;\n const [worldPosition0, worldPosition1, worldPosition2, worldPosition3] = worldPositions;\n const textChunks = this._textChunks;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const { subChunk, charRenderInfos } = textChunks[i];\n for (let j = 0, m = charRenderInfos.length; j < m; ++j) {\n const charRenderInfo = charRenderInfos[j];\n const { localPositions } = charRenderInfo;\n const { x: topLeftX, y: topLeftY } = localPositions;\n\n // Top-Left\n worldPosition0.set(\n topLeftX * e0 + topLeftY * e4 + e12,\n topLeftX * e1 + topLeftY * e5 + e13,\n topLeftX * e2 + topLeftY * e6 + e14\n );\n\n // Right offset\n Vector3.scale(right, localPositions.z - topLeftX, worldPosition1);\n // Top-Right\n Vector3.add(worldPosition0, worldPosition1, worldPosition1);\n // Up offset\n Vector3.scale(up, localPositions.w - topLeftY, worldPosition2);\n // Bottom-Left\n Vector3.add(worldPosition0, worldPosition2, worldPosition3);\n // Bottom-Right\n Vector3.add(worldPosition1, worldPosition2, worldPosition2);\n\n const vertices = subChunk.chunk.vertices;\n for (let k = 0, o = subChunk.vertexArea.start + charRenderInfo.indexInChunk * 36; k < 4; ++k, o += 9) {\n worldPositions[k].copyToArray(vertices, o);\n }\n }\n }\n }\n\n private _updateColor(): void {\n const { r, g, b, a } = this._color;\n const finalAlpha = a * this._getGlobalAlpha();\n const textChunks = this._textChunks;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const subChunk = textChunks[i].subChunk;\n const vertexArea = subChunk.vertexArea;\n const vertexCount = vertexArea.size / 9;\n const vertices = subChunk.chunk.vertices;\n for (let j = 0, o = vertexArea.start + 5; j < vertexCount; ++j, o += 9) {\n vertices[o] = r;\n vertices[o + 1] = g;\n vertices[o + 2] = b;\n vertices[o + 3] = finalAlpha;\n }\n }\n }\n\n private _updateLocalData(): void {\n // @ts-ignore\n const pixelsPerResolution = Engine._pixelsPerUnit / this._getRootCanvas().referenceResolutionPerUnit;\n const { min, max } = this._localBounds;\n const charRenderInfos = Text._charRenderInfos;\n const charFont = this._getSubFont();\n const { size, pivot } = <UITransform>this._transformEntity.transform;\n let rendererWidth = size.x;\n let rendererHeight = size.y;\n const offsetWidth = rendererWidth * (0.5 - pivot.x);\n const offsetHeight = rendererHeight * (0.5 - pivot.y);\n const characterSpacing = this._characterSpacing * this._fontSize;\n const textMetrics = this.enableWrapping\n ? TextUtils.measureTextWithWrap(\n this,\n rendererWidth * pixelsPerResolution,\n rendererHeight * pixelsPerResolution,\n this._lineSpacing * this._fontSize,\n characterSpacing\n )\n : TextUtils.measureTextWithoutWrap(\n this,\n rendererHeight * pixelsPerResolution,\n this._lineSpacing * this._fontSize,\n characterSpacing\n );\n const { height, lines, lineWidths, lineHeight, lineMaxSizes } = textMetrics;\n // @ts-ignore\n const charRenderInfoPool = this.engine._charRenderInfoPool;\n const linesLen = lines.length;\n let renderElementCount = 0;\n\n if (linesLen > 0) {\n const { horizontalAlignment } = this;\n const pixelsPerUnitReciprocal = 1.0 / pixelsPerResolution;\n rendererWidth *= pixelsPerResolution;\n rendererHeight *= pixelsPerResolution;\n const halfRendererWidth = rendererWidth * 0.5;\n const halfLineHeight = lineHeight * 0.5;\n\n let startY = 0;\n const topDiff = lineHeight * 0.5 - lineMaxSizes[0].ascent;\n const bottomDiff = lineHeight * 0.5 - lineMaxSizes[linesLen - 1].descent - 1;\n switch (this.verticalAlignment) {\n case TextVerticalAlignment.Top:\n startY = rendererHeight * 0.5 - halfLineHeight + topDiff;\n break;\n case TextVerticalAlignment.Center:\n startY = height * 0.5 - halfLineHeight - (bottomDiff - topDiff) * 0.5;\n break;\n case TextVerticalAlignment.Bottom:\n startY = height - rendererHeight * 0.5 - halfLineHeight - bottomDiff;\n break;\n }\n\n let firstLine = -1;\n let minX = Number.MAX_SAFE_INTEGER;\n let minY = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n let maxY = Number.MIN_SAFE_INTEGER;\n for (let i = 0; i < linesLen; ++i) {\n const lineWidth = lineWidths[i];\n if (lineWidth > 0) {\n const line = lines[i];\n let startX = 0;\n let firstRow = -1;\n if (firstLine < 0) {\n firstLine = i;\n }\n switch (horizontalAlignment) {\n case TextHorizontalAlignment.Left:\n startX = -halfRendererWidth;\n break;\n case TextHorizontalAlignment.Center:\n startX = -lineWidth * 0.5;\n break;\n case TextHorizontalAlignment.Right:\n startX = halfRendererWidth - lineWidth;\n break;\n }\n for (let j = 0, n = line.length; j < n; ++j) {\n const char = line[j];\n const charInfo = charFont._getCharInfo(char);\n if (charInfo.h > 0) {\n firstRow < 0 && (firstRow = j);\n const charRenderInfo = (charRenderInfos[renderElementCount++] = charRenderInfoPool.get());\n const { localPositions } = charRenderInfo;\n charRenderInfo.texture = charFont._getTextureByIndex(charInfo.index);\n charRenderInfo.uvs = charInfo.uvs;\n const { w, ascent, descent } = charInfo;\n const left = (startX + offsetWidth) * pixelsPerUnitReciprocal;\n const right = (startX + w + offsetWidth) * pixelsPerUnitReciprocal;\n const top = (startY + ascent + offsetHeight) * pixelsPerUnitReciprocal;\n const bottom = (startY - descent + offsetHeight) * pixelsPerUnitReciprocal;\n localPositions.set(left, top, right, bottom);\n i === firstLine && (maxY = Math.max(maxY, top));\n minY = Math.min(minY, bottom);\n j === firstRow && (minX = Math.min(minX, left));\n maxX = Math.max(maxX, right);\n }\n startX += charInfo.xAdvance + characterSpacing;\n }\n }\n startY -= lineHeight;\n }\n if (firstLine < 0) {\n min.set(0, 0, 0);\n max.set(0, 0, 0);\n } else {\n min.set(minX, minY, 0);\n max.set(maxX, maxY, 0);\n }\n } else {\n min.set(0, 0, 0);\n max.set(0, 0, 0);\n }\n\n charFont._getLastIndex() > 0 &&\n charRenderInfos.sort((a, b) => {\n return a.texture.instanceId - b.texture.instanceId;\n });\n\n this._freeTextChunks();\n\n if (renderElementCount === 0) {\n return;\n }\n\n const textChunks = this._textChunks;\n let curTextChunk = new TextChunk();\n textChunks.push(curTextChunk);\n\n const chunkMaxVertexCount = this._getChunkManager().maxVertexCount;\n const curCharRenderInfo = charRenderInfos[0];\n let curTexture = curCharRenderInfo.texture;\n curTextChunk.texture = curTexture;\n let curCharInfos = curTextChunk.charRenderInfos;\n curCharInfos.push(curCharRenderInfo);\n\n for (let i = 1; i < renderElementCount; ++i) {\n const charRenderInfo = charRenderInfos[i];\n const texture = charRenderInfo.texture;\n if (curTexture !== texture || curCharInfos.length * 4 + 4 > chunkMaxVertexCount) {\n this._buildChunk(curTextChunk, curCharInfos.length);\n\n curTextChunk = new TextChunk();\n textChunks.push(curTextChunk);\n curTexture = texture;\n curTextChunk.texture = texture;\n curCharInfos = curTextChunk.charRenderInfos;\n }\n curCharInfos.push(charRenderInfo);\n }\n const charLength = curCharInfos.length;\n if (charLength > 0) {\n this._buildChunk(curTextChunk, charLength);\n }\n charRenderInfos.length = 0;\n }\n\n @ignoreClone\n protected override _onTransformChanged(type: number): void {\n if (type & UITransformModifyFlags.Size || type & UITransformModifyFlags.Pivot) {\n this._dirtyUpdateFlag |= DirtyFlag.LocalPositionBounds;\n }\n super._onTransformChanged(type);\n this._setDirtyFlagTrue(DirtyFlag.WorldPosition);\n }\n\n private _isTextNoVisible(): boolean {\n const size = (<UITransform>this._transformEntity.transform).size;\n return (\n !this._font ||\n this._text === \"\" ||\n this._fontSize === 0 ||\n (this.enableWrapping && size.x <= 0) ||\n (this.overflowMode === OverflowMode.Truncate && size.y <= 0) ||\n !this._getRootCanvas()\n );\n }\n\n private _buildChunk(textChunk: TextChunk, count: number) {\n const { r, g, b, a } = this.color;\n const finalAlpha = a * this._getGlobalAlpha();\n const tempIndices = CharRenderInfo.triangles;\n const tempIndicesLength = tempIndices.length;\n const subChunk = (textChunk.subChunk = this._getChunkManager().allocateSubChunk(count * 4));\n const vertices = subChunk.chunk.vertices;\n const indices = (subChunk.indices = []);\n const charRenderInfos = textChunk.charRenderInfos;\n for (let i = 0, ii = 0, io = 0, vo = subChunk.vertexArea.start + 3; i < count; ++i, io += 4) {\n const charRenderInfo = charRenderInfos[i];\n charRenderInfo.indexInChunk = i;\n\n // Set indices\n for (let j = 0; j < tempIndicesLength; ++j) {\n indices[ii++] = tempIndices[j] + io;\n }\n\n // Set uv and color for vertices\n for (let j = 0; j < 4; ++j, vo += 9) {\n const uv = charRenderInfo.uvs[j];\n uv.copyToArray(vertices, vo);\n vertices[vo + 2] = r;\n vertices[vo + 3] = g;\n vertices[vo + 4] = b;\n vertices[vo + 5] = finalAlpha;\n }\n }\n\n return subChunk;\n }\n\n private _freeTextChunks(): void {\n const textChunks = this._textChunks;\n // @ts-ignore\n const charRenderInfoPool = this.engine._charRenderInfoPool;\n const manager = this._getChunkManager();\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const textChunk = textChunks[i];\n const { charRenderInfos } = textChunk;\n for (let j = 0, m = charRenderInfos.length; j < m; ++j) {\n charRenderInfoPool.return(charRenderInfos[j]);\n }\n charRenderInfos.length = 0;\n manager.freeSubChunk(textChunk.subChunk);\n textChunk.subChunk = null;\n textChunk.texture = null;\n }\n textChunks.length = 0;\n }\n}\n\nclass TextChunk {\n charRenderInfos = new Array<CharRenderInfo>();\n texture: Texture2D;\n subChunk;\n}\n\n/**\n * @remarks Extends `UIRendererUpdateFlags`.\n */\nenum DirtyFlag {\n SubFont = 0x4,\n LocalPositionBounds = 0x8,\n WorldPosition = 0x10,\n\n // LocalPositionBounds | WorldPosition | WorldVolume\n Position = 0x19,\n Font = SubFont | Position\n}\n","import { Color, ReferResource, Sprite } from \"@galacean/engine\";\nimport { UIRenderer } from \"../../UIRenderer\";\nimport { InteractiveState, UIInteractive } from \"../UIInteractive\";\n\n/**\n * The transition behavior of UIInteractive.\n */\nexport abstract class Transition<\n T extends TransitionValueType = TransitionValueType,\n K extends UIRenderer = UIRenderer\n> {\n /** @internal */\n _interactive: UIInteractive;\n\n protected _target: K;\n protected _normal: T;\n protected _pressed: T;\n protected _hover: T;\n protected _disabled: T;\n protected _duration: number = 0;\n protected _countDown: number = 0;\n protected _initialValue: T;\n protected _finalValue: T;\n protected _currentValue: T;\n protected _finalState: InteractiveState = InteractiveState.Normal;\n\n /**\n * The normal state of the transition.\n */\n get normal(): T {\n return this._normal;\n }\n\n set normal(value: T) {\n const preNormal = this._normal;\n if (preNormal !== value) {\n this._normal = value;\n this._onStateValueDirty(InteractiveState.Normal, preNormal, value);\n }\n }\n\n /**\n * The pressed state of the transition.\n */\n get pressed(): T {\n return this._pressed;\n }\n\n set pressed(value: T) {\n const prePressed = this._pressed;\n if (prePressed !== value) {\n this._pressed = value;\n this._onStateValueDirty(InteractiveState.Pressed, prePressed, value);\n }\n }\n\n /**\n * The hover state of the transition.\n */\n get hover(): T {\n return this._hover;\n }\n\n set hover(value: T) {\n const preHover = this._hover;\n if (preHover !== value) {\n this._hover = value;\n this._onStateValueDirty(InteractiveState.Hover, preHover, value);\n }\n }\n\n /**\n * The disabled state of the transition.\n */\n get disabled(): T {\n return this._disabled;\n }\n\n set disabled(value: T) {\n const preDisabled = this._disabled;\n if (preDisabled !== value) {\n this._disabled = value;\n this._onStateValueDirty(InteractiveState.Disable, preDisabled, value);\n }\n }\n\n /**\n * The target of the transition.\n */\n get target(): K {\n return this._target;\n }\n\n set target(value: K) {\n if (this._target !== value) {\n this._target = value;\n value?.enabled && this._applyValue(this._currentValue);\n }\n }\n\n /**\n * The duration of the transition.\n */\n get duration(): number {\n return this._duration;\n }\n\n set duration(value: number) {\n if (value < 0) value = 0;\n const preDuration = this._duration;\n if (preDuration !== value) {\n this._duration = value;\n if (this._countDown > 0) {\n this._countDown = value * (1 - this._countDown / preDuration);\n this._updateValue();\n }\n }\n }\n\n destroy(): void {\n this._interactive?.removeTransition(this);\n this._target = null;\n }\n\n /**\n * @internal\n */\n _setState(state: InteractiveState, instant: boolean) {\n this._finalState = state;\n const value = this._getValueByState(state);\n if (instant) {\n this._countDown = 0;\n this._initialValue = this._finalValue = value;\n } else {\n this._countDown = this._duration;\n this._initialValue = this._getTargetValueCopy();\n this._finalValue = value;\n }\n this._updateValue();\n }\n\n /**\n * @internal\n */\n _onUpdate(delta: number): void {\n if (this._countDown > 0) {\n this._countDown -= delta;\n this._updateValue();\n }\n }\n\n protected abstract _getTargetValueCopy(): T;\n protected abstract _updateCurrentValue(srcValue: T, destValue: T, weight: number): void;\n protected abstract _applyValue(value: T): void;\n\n protected _onStateValueDirty(state: InteractiveState, preValue: T, curValue: T): void {\n // @ts-ignore\n preValue instanceof ReferResource && preValue._addReferCount(-1);\n // @ts-ignore\n curValue instanceof ReferResource && curValue._addReferCount(1);\n if (this._finalState === state) {\n this._finalValue = curValue;\n this._updateValue();\n }\n }\n\n protected _updateValue() {\n const weight = this._duration ? 1 - this._countDown / this._duration : 1;\n this._updateCurrentValue(this._initialValue, this._finalValue, weight);\n this._target?.enabled && this._applyValue(this._currentValue);\n }\n\n private _getValueByState(state: InteractiveState): T {\n switch (state) {\n case InteractiveState.Normal:\n return this.normal;\n case InteractiveState.Pressed:\n return this.pressed;\n case InteractiveState.Hover:\n return this.hover;\n case InteractiveState.Disable:\n return this.disabled;\n }\n }\n}\n\nexport type TransitionValueType = number | Sprite | Color;\n","import { Color } from \"@galacean/engine\";\nimport { UIRenderer } from \"../../UIRenderer\";\nimport { InteractiveState } from \"../UIInteractive\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Color transition.\n */\nexport class ColorTransition extends Transition<Color, UIRenderer> {\n private _color: Color = new Color();\n constructor() {\n super();\n this._normal = new Color(1, 1, 1, 1);\n this._hover = new Color(0.9130986517934192, 0.9130986517934192, 0.9130986517934192, 1);\n this._pressed = new Color(0.5775804404296506, 0.5775804404296506, 0.5775804404296506, 1);\n this._disabled = new Color(0.5775804404296506, 0.5775804404296506, 0.5775804404296506, 1);\n this._duration = 0.1;\n this._currentValue = new Color();\n\n this._onNormalValueChanged = this._onNormalValueChanged.bind(this);\n this._onHoverValueChanged = this._onHoverValueChanged.bind(this);\n this._onPressedValueChanged = this._onPressedValueChanged.bind(this);\n this._onDisabledValueChanged = this._onDisabledValueChanged.bind(this);\n\n // @ts-ignore\n this._normal._onValueChanged = this._onNormalValueChanged;\n // @ts-ignore\n this._hover._onValueChanged = this._onHoverValueChanged;\n // @ts-ignore\n this._pressed._onValueChanged = this._onPressedValueChanged;\n // @ts-ignore\n this._disabled._onValueChanged = this._onDisabledValueChanged;\n }\n\n private _onNormalValueChanged(): void {\n if (this._finalState === InteractiveState.Normal) {\n this._finalValue = this._normal;\n this._updateValue();\n }\n }\n\n private _onHoverValueChanged(): void {\n if (this._finalState === InteractiveState.Hover) {\n this._finalValue = this._hover;\n this._updateValue();\n }\n }\n\n private _onPressedValueChanged(): void {\n if (this._finalState === InteractiveState.Pressed) {\n this._finalValue = this._pressed;\n this._updateValue();\n }\n }\n\n private _onDisabledValueChanged(): void {\n if (this._finalState === InteractiveState.Disable) {\n this._finalValue = this._disabled;\n this._updateValue();\n }\n }\n\n protected _getTargetValueCopy(): Color {\n const color = this._color;\n color.copyFrom(this._target?.color || this._normal);\n return color;\n }\n\n protected override _updateCurrentValue(srcValue: Color, destValue: Color, weight: number): void {\n if (weight >= 1) {\n this._currentValue.copyFrom(destValue);\n } else {\n Color.lerp(srcValue, destValue, weight, this._currentValue);\n }\n }\n\n protected override _applyValue(value: Color): void {\n this._target.color = value;\n }\n}\n","import { UIRenderer } from \"../../UIRenderer\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Scale transition.\n */\nexport class ScaleTransition extends Transition<number, UIRenderer> {\n constructor() {\n super();\n this._normal = 1;\n this._hover = 1;\n this._pressed = 1.2;\n this._disabled = 1;\n this._duration = 0.1;\n }\n\n protected _getTargetValueCopy(): number {\n return this._target?.entity.transform.scale.x || this._normal;\n }\n\n protected override _updateCurrentValue(srcValue: number, destValue: number, weight: number): void {\n this._currentValue = weight >= 1 ? destValue : (destValue - srcValue) * weight + srcValue;\n }\n\n protected override _applyValue(value: number): void {\n this._target.entity.transform.setScale(value, value, value);\n }\n}\n","import { Sprite } from \"@galacean/engine\";\nimport { Image } from \"../../advanced/Image\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Sprite transition.\n */\nexport class SpriteTransition extends Transition<Sprite, Image> {\n /**\n * @internal\n */\n override destroy(): void {\n super.destroy();\n if (this._normal) {\n // @ts-ignore\n this._normal._addReferCount(-1);\n this._normal = null;\n }\n if (this._hover) {\n // @ts-ignore\n this._hover._addReferCount(-1);\n this._hover = null;\n }\n if (this._pressed) {\n // @ts-ignore\n this._pressed._addReferCount(-1);\n this._pressed = null;\n }\n if (this._disabled) {\n // @ts-ignore\n this._disabled._addReferCount(-1);\n this._disabled = null;\n }\n this._initialValue = this._currentValue = this._finalValue = null;\n this._target = null;\n }\n\n protected _getTargetValueCopy(): Sprite {\n return this._target?.sprite;\n }\n\n protected override _updateCurrentValue(srcValue: Sprite, destValue: Sprite, weight: number): void {\n this._currentValue = weight >= 1 ? destValue : srcValue;\n }\n\n protected override _applyValue(value: Sprite): void {\n this._target.sprite = value;\n }\n}\n","import { Entity, Vector3 } from \"@galacean/engine\";\nimport { UIRenderer } from \"../component/UIRenderer\";\n\n/**\n * @internal\n */\nexport class UIHitResult {\n entity: Entity = null;\n distance: number = 0;\n point: Vector3 = new Vector3();\n normal: Vector3 = new Vector3();\n component: UIRenderer = null;\n}\n","import {\n CameraClearFlags,\n DisorderedArray,\n Entity,\n Pointer,\n PointerEventData,\n PointerEventEmitter,\n Scene,\n registerPointerEventEmitter\n} from \"@galacean/engine\";\nimport { UICanvas } from \"..\";\nimport { UIRenderer } from \"../component/UIRenderer\";\nimport { UIHitResult } from \"./UIHitResult\";\n\n/**\n * @internal\n */\n@registerPointerEventEmitter()\nexport class UIPointerEventEmitter extends PointerEventEmitter {\n private static _MAX_PATH_DEPTH = 2048;\n private static _tempSet: Set<number> = new Set();\n private static _path: Entity[] = [];\n private static _tempArray0: Entity[] = [];\n private static _tempArray1: Entity[] = [];\n\n private _enteredPath: Entity[] = [];\n private _pressedPath: Entity[] = [];\n private _draggedPath: Entity[] = [];\n\n _init(): void {\n this._hitResult = new UIHitResult();\n }\n\n override processRaycast(scenes: readonly Scene[], pointer: Pointer): void {\n const { _tempRay: ray } = PointerEventEmitter;\n const hitResult = this._hitResult;\n const { position } = pointer;\n const { x, y } = position;\n for (let i = scenes.length - 1; i >= 0; i--) {\n const scene = scenes[i];\n if (!scene.isActive || scene.destroyed) continue;\n // @ts-ignore\n const componentsManager = scene._componentsManager;\n // Overlay Canvas\n let canvasElements: DisorderedArray<UICanvas> = componentsManager._overlayCanvases;\n // Screen to world ( Assume that world units have a one-to-one relationship with pixel units )\n ray.origin.set(position.x, scene.engine.canvas.height - position.y, 1);\n ray.direction.set(0, 0, -1);\n for (let j = canvasElements.length - 1; j >= 0; j--) {\n if (canvasElements.get(j)._raycast(ray, hitResult)) {\n this._updateRaycast((<UIHitResult>hitResult).component, pointer);\n return;\n }\n }\n\n const cameras = componentsManager._activeCameras;\n for (let j = cameras.length - 1; j >= 0; j--) {\n const camera = cameras.get(j);\n if (camera.renderTarget) continue;\n const { pixelViewport } = camera;\n if (\n x < pixelViewport.x ||\n y < pixelViewport.y ||\n x > pixelViewport.x + pixelViewport.width ||\n y > pixelViewport.y + pixelViewport.height\n ) {\n continue;\n }\n camera.screenPointToRay(pointer.position, ray);\n\n // Other canvases\n const isOrthographic = camera.isOrthographic;\n const { worldPosition: cameraPosition, worldForward: cameraForward } = camera.entity.transform;\n // Sort by rendering order\n canvasElements = componentsManager._canvases;\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n canvasElements.get(k)._updateSortDistance(isOrthographic, cameraPosition, cameraForward);\n }\n canvasElements.sort((a, b) => a.sortOrder - b.sortOrder || a._sortDistance - b._sortDistance);\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n canvasElements.get(k)._canvasIndex = k;\n }\n const farClipPlane = camera.farClipPlane;\n // Post-rendering first detection\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n const canvas = canvasElements.get(k);\n if (!canvas._canDispatchEvent(camera)) continue;\n if (canvas._raycast(ray, hitResult, farClipPlane)) {\n this._updateRaycast((<UIHitResult>hitResult).component, pointer);\n return;\n }\n }\n if (camera.clearFlags & CameraClearFlags.Color) {\n this._updateRaycast(null);\n return;\n }\n }\n this._updateRaycast(null);\n }\n }\n\n override processDrag(pointer: Pointer): void {\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireDrag);\n }\n }\n\n override processDown(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n const pressedPath = this._pressedPath;\n const draggedPath = this._draggedPath;\n const length = (draggedPath.length = pressedPath.length = enteredPath.length);\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n pressedPath[i] = draggedPath[i] = enteredPath[i];\n }\n this._bubble(pressedPath, pointer, this._fireDown);\n this._bubble(draggedPath, pointer, this._fireBeginDrag);\n }\n }\n\n override processUp(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n const pressedPath = this._pressedPath;\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireUp);\n if (pressedPath.length > 0) {\n const common = UIPointerEventEmitter._tempArray0;\n if (this._findCommonInPath(enteredPath, pressedPath, common)) {\n const eventData = this._createEventData(pointer);\n for (let i = 0, n = common.length; i < n; i++) {\n this._fireClick(common[i], eventData);\n }\n common.length = 0;\n }\n }\n }\n\n pressedPath.length = 0;\n\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireEndDrag);\n draggedPath.length = 0;\n }\n\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireDrop);\n }\n }\n\n override processLeave(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireExit);\n enteredPath.length = 0;\n }\n\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireEndDrag);\n draggedPath.length = 0;\n }\n\n this._pressedPath.length = 0;\n }\n\n override dispose(): void {\n this._enteredPath.length = this._pressedPath.length = this._draggedPath.length = 0;\n }\n\n private _updateRaycast(element: UIRenderer, pointer: Pointer = null): void {\n const enteredPath = this._enteredPath;\n const curPath = this._composedPath(element, UIPointerEventEmitter._path);\n const add = UIPointerEventEmitter._tempArray0;\n const del = UIPointerEventEmitter._tempArray1;\n if (this._findDiffInPath(enteredPath, curPath, add, del)) {\n const eventData = this._createEventData(pointer);\n for (let i = 0, n = add.length; i < n; i++) {\n this._fireEnter(add[i], eventData);\n }\n for (let i = 0, n = del.length; i < n; i++) {\n this._fireExit(del[i], eventData);\n }\n\n const length = (enteredPath.length = curPath.length);\n for (let i = 0; i < length; i++) {\n enteredPath[i] = curPath[i];\n }\n add.length = del.length = 0;\n }\n curPath.length = 0;\n }\n\n private _composedPath(element: UIRenderer, path: Entity[]): Entity[] {\n if (!element) {\n path.length = 0;\n return path;\n }\n let entity = (path[0] = element.entity);\n let i = 1;\n const rootEntity = element._getRootCanvas().entity;\n for (; i < UIPointerEventEmitter._MAX_PATH_DEPTH && !!entity && entity !== rootEntity; i++) {\n entity = path[i] = entity.parent;\n }\n path.length = i;\n return path;\n }\n\n private _findCommonInPath(prePath: Entity[], curPath: Entity[], common: Entity[]): boolean {\n const idSet = UIPointerEventEmitter._tempSet;\n idSet.clear();\n for (let i = 0, n = prePath.length; i < n; i++) {\n idSet.add(prePath[i].instanceId);\n }\n let hasCommon = false;\n for (let i = 0, n = curPath.length; i < n; i++) {\n const entity = curPath[i];\n if (idSet.has(entity.instanceId)) {\n common.push(entity);\n hasCommon = true;\n }\n }\n return hasCommon;\n }\n\n private _findDiffInPath(prePath: Entity[], curPath: Entity[], add: Entity[], del: Entity[]): boolean {\n const idSet = UIPointerEventEmitter._tempSet;\n idSet.clear();\n let changed = false;\n for (let i = 0, n = prePath.length; i < n; i++) {\n idSet.add(prePath[i].instanceId);\n }\n for (let i = 0, n = curPath.length; i < n; i++) {\n const entity = curPath[i];\n if (!idSet.has(entity.instanceId)) {\n add.push(entity);\n changed = true;\n }\n }\n idSet.clear();\n for (let i = 0, n = curPath.length; i < n; i++) {\n idSet.add(curPath[i].instanceId);\n }\n for (let i = 0, n = prePath.length; i < n; i++) {\n const entity = prePath[i];\n if (!idSet.has(entity.instanceId)) {\n del.push(entity);\n changed = true;\n }\n }\n return changed;\n }\n\n private _bubble(path: Entity[], pointer: Pointer, fireEvent: FireEvent): void {\n const length = path.length;\n if (length <= 0) return;\n const eventData = this._createEventData(pointer);\n for (let i = 0; i < length; i++) {\n fireEvent(path[i], eventData);\n }\n }\n}\n\ntype FireEvent = (entity: Entity, eventData: PointerEventData) => void;\n","import { Engine, Entity, Loader, Material, Shader } from \"@galacean/engine\";\nimport * as GUIComponent from \"./component\";\nexport * from \"./component\";\nexport { CanvasRenderMode } from \"./enums/CanvasRenderMode\";\nexport { HorizontalAlignmentMode } from \"./enums/HorizontalAlignmentMode\";\nexport { ResolutionAdaptationMode } from \"./enums/ResolutionAdaptationMode\";\nexport { VerticalAlignmentMode } from \"./enums/VerticalAlignmentMode\";\nexport { UIPointerEventEmitter } from \"./input/UIPointerEventEmitter\";\n\nexport class EngineExtension {\n _uiDefaultMaterial: Material;\n _getUIDefaultMaterial(): Material {\n if (!this._uiDefaultMaterial) {\n const shader = _getOrCreateUIShader();\n // @ts-ignore\n const material = new Material(this, shader);\n material.isGCIgnored = true;\n this._uiDefaultMaterial = material;\n }\n return this._uiDefaultMaterial;\n }\n}\n\nexport class EntityExtension {\n _uiHierarchyVersion = 0;\n _updateUIHierarchyVersion(version: number): void {\n if (this._uiHierarchyVersion !== version) {\n this._uiHierarchyVersion = version;\n // @ts-ignore\n this.parent?._updateUIHierarchyVersion(version);\n }\n }\n}\n\ndeclare module \"@galacean/engine\" {\n interface Engine {\n // @internal\n _uiDefaultMaterial: Material;\n // @internal\n _getUIDefaultMaterial(): Material;\n }\n interface Entity {\n // @internal\n _uiHierarchyVersion: number;\n // @internal\n _updateUIHierarchyVersion(version: number): void;\n }\n}\n\nfunction ApplyMixins(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}\n\nApplyMixins(Engine, [EngineExtension]);\nApplyMixins(Entity, [EntityExtension]);\n\n/**\n * Register GUI components for the editor.\n */\nexport function registerGUI() {\n for (let key in GUIComponent) {\n Loader.registerClass(key, GUIComponent[key]);\n }\n _getOrCreateUIShader();\n}\n\nfunction _getOrCreateUIShader(): Shader {\n return Shader.find(\"2D/UIDefault\");\n}\n"],"names":["UIGroup","entity","_indexInGroup","_indexInRootCanvas","_disorderedElements","DisorderedArray","_globalAlpha","_globalInteractive","_alpha","_interactive","_ignoreParentGroup","_rootCanvasListeningEntities","_groupListeningEntities","_isRootCanvasDirty","_isGroupDirty","_groupDirtyFlags","_rootCanvasListener","bind","_groupListener","_getGlobalAlpha","_isContainDirtyFlag","parentGroup","_getGroup","_setDirtyFlagFalse","_getGlobalInteractive","_onEnableInScene","Utils","setRootCanvasDirty","setGroupDirty","_dispatchModify","EntityUIModifyFlags","GroupEnableInScene","_onDisableInScene","cleanRootCanvas","cleanGroup","disorderedElements","forEach","element","length","garbageCollection","_getRootCanvas","setRootCanvas","searchRootCanvasInParents","_rootCanvas","setGroup","searchGroupInParents","_group","flag","EntityModifyFlags","Parent","CanvasEnableInScene","_onGroupModify","flags","isPass","_isContainDirtyFlags","_setDirtyFlagTrue","targetDirtyFlags","type","ignoreParentGroup","value","interactive","alpha","Math","max","min","Component","GroupModifyFlags","_registerRootCanvas","_onRootCanvasModify","RootCanvasModifyFlags","All","rootCanvas","fromEntity","UICanvas","parent","toEntity","_registerListener","_unRegisterListener","components","_components","i","n","component","enabled","_isRootCanvas","_registerGroup","group","rootCanvasParent","canvas","preCanvas","replaced","deleteByIndex","add","preGroup","root","listener","listeningEntities","count","preEntity","_unRegisterModifyListener","_registerModifyListener","CanvasRenderMode","ResolutionAdaptationMode","HorizontalAlignmentMode","VerticalAlignmentMode","UITransform","_size","Vector2","_pivot","_rect","Rect","_alignLeft","_alignRight","_alignCenter","_alignTop","_alignBottom","_alignMiddle","_horizontalAlignment","None","_verticalAlignment","_onSizeChanged","_onPivotChanged","_onValueChanged","_parentChange","_isParentDirty","_updateWorldFlagWithParentRectChange","TransformModifyFlags","WmWpWeWqWsWus","_cloneTo","target","pivot","size","copyFrom","_onLocalMatrixChanging","_updatePositionByAlignment","LocalMatrix","_onWorldMatrixChanging","_onPositionChanged","_onWorldPositionChanged","WorldPosition","parentRect","_getParentTransform","position","rect","Left","LeftAndRight","x","Center","width","Right","Top","y","height","Middle","Bottom","TopAndBottom","_updateSizeByAlignment","_updateRectBySizeAndPivot","set","_updateWorldFlagWithSelfRectChange","_entity","_updateFlagManager","dispatch","worldFlags","WmWp","_worldAssociatedChange","children","transform","parentChange","selfChange","horizontalAlignment","verticalAlignment","containDirtyFlags","alignLeft","Number","isFinite","MathUtil","equals","alignRight","alignCenter","alignTop","alignBottom","alignMiddle","Transform","UITransformModifyFlags","UIRenderer","raycastPadding","Vector4","_raycastEnabled","_color","Color","_dirtyUpdateFlag","RendererUpdateFlags","WorldVolume","_onColorChanged","_canBatch","elementA","elementB","BatchUtils","canBatchSprite","_batch","batchFor2D","_updateTransformShaderData","context","onlyMVP","batched","_prepareRender","_renderFrameCount","engine","time","frameCount","_update","_render","ShaderMacroCollection","unionCollection","camera","_globalShaderMacro","shaderData","_macroCollection","_overrideUpdate","scene","_componentsManager","addOnUpdateRenderers","_updateUIHierarchyVersion","_hierarchyCounter","removeOnUpdateRenderers","Child","GlobalAlpha","_getChunkManager","_batcherManager","primitiveChunkManagerUI","_raycast","ray","out","distance","MAX_SAFE_INTEGER","plane","_tempPlane","_transformEntity","normal","worldForward","Vector3","dot","worldPosition","curDistance","intersectPlane","hitPointWorld","getPoint","_tempVec30","worldMatrixInv","_tempMat","Matrix","invert","worldMatrix","localPosition","_tempVec31","transformCoordinate","_hitTest","point","uiTransform","pivotX","pivotY","paddingLeft","z","paddingRight","w","paddingTop","paddingBottom","_onDestroy","_subChunk","freeSubChunk","color","raycastEnabled","Renderer","Plane","_textureProperty","ShaderProperty","getByName","AutoAdd","UIRendererUpdateFlags","UIInteractive","_globalInteractiveDirty","_transitions","_state","_isPointerInside","_isPointerDragging","addTransition","transition","removeTransition","push","_setState","transitions","lastOneIndex","clearTransitions","onUpdate","deltaTime","_onUpdate","onPointerBeginDrag","_updateState","onPointerEndDrag","onPointerEnter","onPointerExit","onDestroy","destroy","GlobalInteractive","globalInteractive","instant","state","_getInteractiveState","Script","InteractiveState","_canvasIndex","_sortDistance","_orderedRenderers","_realRenderMode","_renderMode","WorldSpace","_resolutionAdaptationMode","HeightAdaptation","_sortOrder","_distance","_referenceResolution","_referenceResolutionPerUnit","_hierarchyVersion","_center","_onCanvasSizeListener","_onCameraModifyListener","_onCameraTransformListener","_onReferenceResolutionChanged","_centerDirtyFlag","registerWorldChangeFlag","renderers","_getRenderers","_canRender","ScreenSpaceCamera","_camera","_canDispatchEvent","realMode","ScreenSpaceOverlay","assignedCamera","_phasedActiveInScene","mode","enableFrustumCulling","cullingMask","_frustum","frustum","renderElement","_renderElement","_renderElementPool","get","virtualCamera","_updateSortDistance","isOrthographic","forward","sortOrder","renderer","layer","bounds","intersectsBox","cameraPosition","cameraForward","boundsCenter","_getCenter","_tempVec3","subtract","distanceSquared","_setIsRootCanvas","param","renderMode","uiHierarchyVersion","_uiHierarchyVersion","_walk","_tempGroupAbleList","_adapterPoseInScreenSpace","realRenderMode","cameraEntity","_isSameOrChildEntity","cameraTransform","cameraWorldForward","setWorldPosition","cameraWorldPosition","worldRotationQuaternion","_adapterSizeInScreenSpace","curWidth","curHeight","orthographicSize","tan","degreeToRadian","fieldOfView","aspectRatio","expectX","expectY","expectZ","WidthAdaptation","BothAdaptation","ExpandAdaptation","ShrinkAdaptation","affineTransformation","depth","tempGroupAbleList","groupAbleCount","child","isActive","_updateCameraObserver","preCamera","_cameraObserver","removeListener","addListener","CameraModifyFlags","ProjectionType","AspectRatio","FieldOfView","OrthographicSize","DisableInScene","_setRealRenderMode","EnableInScene","_addCanvasListener","_sizeUpdateFlagManager","_removeCanvasListener","isRootCanvas","_getRealRenderMode","center","curRealMode","preRealMode","componentsManager","removeUICanvas","addUICanvas","canvasEntity","referenceResolutionPerUnit","referenceResolution","preMode","Logger","warn","preRenderMode","curRenderMode","renderCamera","resolutionAdaptationMode","_overlayCanvasesSortingFlag","Button","onClick","Signal","onPointerClick","event","invoke","removeAll","addClicked","on","removeClicked","off","Image","_sprite","_tileMode","SpriteTileMode","Continuous","_tiledAdaptiveThreshold","drawMode","SpriteDrawMode","Simple","setMaterial","_engine","_getUIDefaultMaterial","_onSpriteChange","ReferenceResolutionPerUnit","_drawMode","Tiled","Sliced","sprite","_updateBounds","worldBounds","_assembler","updatePositions","texture","material","getMaterial","destroyed","a","dirtyUpdateFlag","updateUVs","updateColor","subRenderElement","_subRenderElementPool","subChunk","chunk","primitive","subMesh","shaderPasses","shader","subShaders","passes","renderQueueFlags","RenderQueueFlags","addSubRenderElement","_onTransformChanged","Size","_addResourceReferCount","SpriteModifyFlags","setTexture","border","region","atlasRegionOffset","atlasRegion","SimpleSpriteAssembler","SlicedSpriteAssembler","TiledSpriteAssembler","resetData","tileMode","tiledAdaptiveThreshold","clamp","lastSprite","Text","_textChunks","Array","_subFont","_text","_localBounds","BoundingBox","_font","_fontSize","_fontStyle","FontStyle","_lineSpacing","_characterSpacing","TextHorizontalAlignment","TextVerticalAlignment","_enableWrapping","_overflowMode","OverflowMode","Overflow","font","_textDefaultFont","_basicResources","textDefaultMaterial","_freeTextChunks","_getSubFont","_resetSubFont","_isTextNoVisible","_updateLocalData","_updatePosition","_updateColor","textSubRenderElementPool","_textSubRenderElementPool","textChunks","isOverlay","ShaderData","ShaderDataGroup","RenderElement","_textTextureProperty","fontSize","fontStyle","nativeFontString","TextUtils","getNativeFontString","name","e","elements","e0","e1","e2","e4","e5","e6","e12","e13","e14","up","right","worldPositions","_worldPositions","worldPosition0","worldPosition1","worldPosition2","worldPosition3","charRenderInfos","j","m","charRenderInfo","localPositions","topLeftY","topLeftX","scale","vertices","k","o","vertexArea","start","indexInChunk","copyToArray","r","g","b","finalAlpha","vertexCount","pixelsPerResolution","Engine","_pixelsPerUnit","_charRenderInfos","charFont","rendererWidth","rendererHeight","offsetWidth","offsetHeight","characterSpacing","textMetrics","enableWrapping","measureTextWithWrap","measureTextWithoutWrap","lines","lineWidths","lineHeight","lineMaxSizes","charRenderInfoPool","_charRenderInfoPool","linesLen","renderElementCount","pixelsPerUnitReciprocal","halfRendererWidth","halfLineHeight","startY","topDiff","ascent","bottomDiff","descent","firstLine","minX","minY","maxX","MIN_SAFE_INTEGER","maxY","lineWidth","line","startX","firstRow","char","charInfo","_getCharInfo","h","_getTextureByIndex","index","uvs","left","top","bottom","xAdvance","_getLastIndex","sort","instanceId","curTextChunk","TextChunk","chunkMaxVertexCount","maxVertexCount","curCharRenderInfo","curTexture","curCharInfos","_buildChunk","charLength","Pivot","overflowMode","Truncate","textChunk","tempIndices","CharRenderInfo","triangles","tempIndicesLength","allocateSubChunk","indices","ii","io","vo","uv","manager","return","text","lastFont","lineSpacing","maskLayer","_maskLayer","localBounds","_bounds","Transition","_duration","_countDown","_finalState","Normal","_target","_getValueByState","_initialValue","_finalValue","_getTargetValueCopy","_updateValue","delta","_onStateValueDirty","preValue","curValue","ReferResource","_addReferCount","weight","_updateCurrentValue","_applyValue","_currentValue","Pressed","pressed","Hover","hover","Disable","disabled","_normal","preNormal","_pressed","prePressed","_hover","preHover","_disabled","preDisabled","duration","preDuration","ColorTransition","_onNormalValueChanged","_onHoverValueChanged","_onPressedValueChanged","_onDisabledValueChanged","srcValue","destValue","lerp","ScaleTransition","setScale","SpriteTransition","UIHitResult","UIPointerEventEmitter","_enteredPath","_pressedPath","_draggedPath","_init","_hitResult","processRaycast","scenes","pointer","PointerEventEmitter","_tempRay","hitResult","canvasElements","_overlayCanvases","origin","direction","_updateRaycast","cameras","_activeCameras","renderTarget","pixelViewport","screenPointToRay","_canvases","farClipPlane","clearFlags","CameraClearFlags","processDrag","draggedPath","_bubble","_fireDrag","processDown","enteredPath","pressedPath","_fireDown","_fireBeginDrag","processUp","_fireUp","common","_tempArray0","_findCommonInPath","eventData","_createEventData","_fireClick","_fireEndDrag","_fireDrop","processLeave","_fireExit","dispose","curPath","_composedPath","_path","del","_tempArray1","_findDiffInPath","_fireEnter","path","rootEntity","_MAX_PATH_DEPTH","prePath","idSet","_tempSet","clear","hasCommon","has","changed","fireEvent","Set","EngineExtension","_uiDefaultMaterial","_getOrCreateUIShader","Material","isGCIgnored","EntityExtension","version","ApplyMixins","derivedCtor","baseCtors","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","Entity","registerGUI","key","GUIComponent","Loader","registerClass","Shader","find"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../../../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/_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/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/component/UIGroup.ts","../src/Utils.ts","../src/component/UIBatchSorter.ts","../src/enums/CanvasRenderMode.ts","../src/enums/ResolutionAdaptationMode.ts","../src/enums/HorizontalAlignmentMode.ts","../src/enums/VerticalAlignmentMode.ts","../src/component/UITransform.ts","../src/component/UIRenderer.ts","../src/component/interactive/UIInteractive.ts","../src/component/UICanvas.ts","../src/component/advanced/Button.ts","../src/component/advanced/Image.ts","../src/component/advanced/Text.ts","../src/component/interactive/transition/Transition.ts","../src/component/interactive/transition/ColorTransition.ts","../src/component/interactive/transition/ScaleTransition.ts","../src/component/interactive/transition/SpriteTransition.ts","../src/input/UIHitResult.ts","../src/input/UIPointerEventEmitter.ts","../src/index.ts"],"sourcesContent":["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 _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","/******************************************************************************\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 { Component, DisorderedArray, Entity, EntityModifyFlags, assignmentClone, ignoreClone } from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { IGroupAble } from \"../interface/IGroupAble\";\nimport { EntityUIModifyFlags, UICanvas } from \"./UICanvas\";\n\nexport class UIGroup extends Component implements IGroupAble {\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n _group: UIGroup;\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _disorderedElements: DisorderedArray<IGroupAble> = new DisorderedArray<IGroupAble>();\n\n /** @internal */\n @ignoreClone\n _globalAlpha = 1;\n /** @internal */\n @ignoreClone\n _globalInteractive = true;\n\n @assignmentClone\n private _alpha = 1;\n @assignmentClone\n private _interactive = true;\n @assignmentClone\n private _ignoreParentGroup = false;\n\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupDirtyFlags: number = GroupModifyFlags.None;\n\n /**\n * Whether to ignore the parent group.\n * @remarks If this parameter set to `true`,\n * all settings of the parent group will be ignored.\n */\n get ignoreParentGroup(): boolean {\n return this._ignoreParentGroup;\n }\n\n set ignoreParentGroup(value: boolean) {\n if (this._ignoreParentGroup !== value) {\n this._ignoreParentGroup = value;\n this._onGroupModify(GroupModifyFlags.All);\n }\n }\n\n /**\n * Whether the group is interactive.\n */\n get interactive(): boolean {\n return this._interactive;\n }\n\n set interactive(value: boolean) {\n if (this._interactive !== value) {\n this._interactive = value;\n this._onGroupModify(GroupModifyFlags.GlobalInteractive);\n }\n }\n\n /**\n * The alpha value of the group.\n */\n get alpha(): number {\n return this._alpha;\n }\n\n set alpha(value: number) {\n value = Math.max(0, Math.min(value, 1));\n if (this._alpha !== value) {\n this._alpha = value;\n this._onGroupModify(GroupModifyFlags.GlobalAlpha);\n }\n }\n\n /**\n * @internal\n */\n _getGlobalAlpha(): number {\n if (this._isContainDirtyFlag(GroupModifyFlags.GlobalAlpha)) {\n if (this._ignoreParentGroup) {\n this._globalAlpha = this._alpha;\n } else {\n const parentGroup = this._getGroup();\n this._globalAlpha = this._alpha * (parentGroup ? parentGroup._getGlobalAlpha() : 1);\n }\n this._setDirtyFlagFalse(GroupModifyFlags.GlobalAlpha);\n }\n return this._globalAlpha;\n }\n\n /**\n * @internal\n */\n _getGlobalInteractive(): boolean {\n if (this._isContainDirtyFlag(GroupModifyFlags.GlobalInteractive)) {\n if (this._ignoreParentGroup) {\n this._globalInteractive = this._interactive;\n } else {\n const parentGroup = this._getGroup();\n this._globalInteractive = this._interactive && (!parentGroup || parentGroup._getGlobalInteractive());\n }\n this._setDirtyFlagFalse(GroupModifyFlags.GlobalInteractive);\n }\n return this._globalInteractive;\n }\n\n constructor(entity: Entity) {\n super(entity);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n this._groupListener = this._groupListener.bind(this);\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n // @ts-ignore\n this.entity._dispatchModify(EntityUIModifyFlags.GroupEnableInScene);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n const disorderedElements = this._disorderedElements;\n disorderedElements.forEach((element: IGroupAble) => {\n Utils.setGroupDirty(element);\n });\n disorderedElements.length = 0;\n disorderedElements.garbageCollection();\n this._isRootCanvasDirty = this._isGroupDirty = false;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.CanvasEnableInScene) {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n _onGroupModify(flags: GroupModifyFlags, isPass: boolean = false): void {\n if (isPass && this._ignoreParentGroup) return;\n if (this._isContainDirtyFlags(flags)) return;\n this._setDirtyFlagTrue(flags);\n this._disorderedElements.forEach((element) => {\n element._onGroupModify(flags, true);\n });\n }\n\n private _isContainDirtyFlags(targetDirtyFlags: number): boolean {\n return (this._groupDirtyFlags & targetDirtyFlags) === targetDirtyFlags;\n }\n\n private _isContainDirtyFlag(type: number): boolean {\n return (this._groupDirtyFlags & type) != 0;\n }\n\n private _setDirtyFlagTrue(type: number) {\n this._groupDirtyFlags |= type;\n }\n\n private _setDirtyFlagFalse(type: number) {\n this._groupDirtyFlags &= ~type;\n }\n}\n\nexport enum GroupModifyFlags {\n None = 0x0,\n GlobalAlpha = 0x1,\n GlobalInteractive = 0x2,\n All = 0x3\n}\n","import { Entity } from \"@galacean/engine\";\nimport { RootCanvasModifyFlags, UICanvas } from \"./component/UICanvas\";\nimport { GroupModifyFlags, UIGroup } from \"./component/UIGroup\";\nimport { IElement } from \"./interface/IElement\";\nimport { IGroupAble } from \"./interface/IGroupAble\";\n\nexport class Utils {\n static setRootCanvasDirty(element: IElement): void {\n if (element._isRootCanvasDirty) return;\n element._isRootCanvasDirty = true;\n this._registerRootCanvas(element, null);\n element._onRootCanvasModify?.(RootCanvasModifyFlags.All);\n }\n\n static setRootCanvas(element: IElement, rootCanvas: UICanvas): void {\n element._isRootCanvasDirty = false;\n this._registerRootCanvas(element, rootCanvas);\n const fromEntity = element instanceof UICanvas ? element.entity.parent : element.entity;\n const toEntity = rootCanvas?.entity.parent ?? null;\n this._registerListener(fromEntity, toEntity, element._rootCanvasListener, element._rootCanvasListeningEntities);\n }\n\n static cleanRootCanvas(element: IElement): void {\n this._registerRootCanvas(element, null);\n this._unRegisterListener(element._rootCanvasListener, element._rootCanvasListeningEntities);\n }\n\n static searchRootCanvasInParents(element: IElement): UICanvas {\n let entity = element instanceof UICanvas ? element.entity.parent : element.entity;\n while (entity) {\n // @ts-ignore\n const components = entity._components;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (component.enabled && component instanceof UICanvas && component._isRootCanvas) {\n return component;\n }\n }\n entity = entity.parent;\n }\n return null;\n }\n\n static setGroupDirty(element: IGroupAble): void {\n if (element._isGroupDirty) return;\n element._isGroupDirty = true;\n this._registerGroup(element, null);\n element._onGroupModify(GroupModifyFlags.All);\n }\n\n static setGroup(element: IGroupAble, group: UIGroup): void {\n element._isGroupDirty = false;\n this._registerGroup(element, group);\n const rootCanvas = element._getRootCanvas();\n if (rootCanvas) {\n const fromEntity = element instanceof UIGroup ? element.entity.parent : element.entity;\n const toEntity = group?.entity ?? rootCanvas.entity.parent;\n this._registerListener(fromEntity, toEntity, element._groupListener, element._groupListeningEntities);\n } else {\n this._unRegisterListener(element._groupListener, element._groupListeningEntities);\n }\n }\n\n static cleanGroup(element: IGroupAble): void {\n this._registerGroup(element, null);\n this._unRegisterListener(element._groupListener, element._groupListeningEntities);\n }\n\n static searchGroupInParents(element: IGroupAble): UIGroup {\n const rootCanvas = element._getRootCanvas();\n if (!rootCanvas) return null;\n let entity = element instanceof UIGroup ? element.entity.parent : element.entity;\n const rootCanvasParent = rootCanvas.entity.parent;\n while (entity && entity !== rootCanvasParent) {\n // @ts-ignore\n const components = entity._components;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (component.enabled && component instanceof UIGroup) {\n return component;\n }\n }\n entity = entity.parent;\n }\n return null;\n }\n\n private static _registerRootCanvas(element: IElement, canvas: UICanvas): void {\n const preCanvas = element._rootCanvas;\n if (preCanvas !== canvas) {\n if (preCanvas) {\n const replaced = preCanvas._disorderedElements.deleteByIndex(element._indexInRootCanvas);\n replaced && (replaced._indexInRootCanvas = element._indexInRootCanvas);\n element._indexInRootCanvas = -1;\n }\n if (canvas) {\n const disorderedElements = canvas._disorderedElements;\n element._indexInRootCanvas = disorderedElements.length;\n disorderedElements.add(element);\n }\n element._rootCanvas = canvas;\n }\n }\n\n private static _registerGroup(element: IGroupAble, group: UIGroup): void {\n const preGroup = element._group;\n if (preGroup !== group) {\n if (preGroup) {\n const replaced = preGroup._disorderedElements.deleteByIndex(element._indexInGroup);\n replaced && (replaced._indexInGroup = element._indexInGroup);\n element._indexInGroup = -1;\n }\n if (group) {\n const disorderedElements = group._disorderedElements;\n element._indexInGroup = disorderedElements.length;\n disorderedElements.add(element);\n }\n element._group = group;\n element._onGroupModify(GroupModifyFlags.All);\n }\n }\n\n private static _registerListener(\n entity: Entity,\n root: Entity,\n listener: (flag: number, param?: any) => void,\n listeningEntities: Entity[]\n ): void {\n let count = 0;\n while (entity && entity !== root) {\n const preEntity = listeningEntities[count];\n if (preEntity !== entity) {\n // @ts-ignore\n preEntity?._unRegisterModifyListener(listener);\n listeningEntities[count] = entity;\n // @ts-ignore\n entity._registerModifyListener(listener);\n }\n entity = entity.parent;\n count++;\n }\n listeningEntities.length = count;\n }\n\n private static _unRegisterListener(listener: (flag: number, param?: any) => void, listeningEntities: Entity[]): void {\n for (let i = 0, n = listeningEntities.length; i < n; i++) {\n // @ts-ignore\n listeningEntities[i]._unRegisterModifyListener(listener);\n }\n listeningEntities.length = 0;\n }\n}\n","import { BoundingBox, Matrix, RenderElement, Utils } from \"@galacean/engine\";\n\n/**\n * @internal\n * Visual-layering driven UI batching: solve visual correctness first, batching falls out for free.\n *\n * Think of it as stacking elements onto numbered shelves (depths):\n * - Non-overlapping elements share shelf 0 — free to cluster regardless of material.\n * - Overlapping + batch-compatible — share the same shelf, still cluster.\n * - Overlapping + batch-incompatible — bumped one shelf higher (drawn on top).\n *\n * `depth` is a global tag, not a spatial group: distant elements at the same visual layer\n * share the same depth and get clustered together. Once depth is assigned, sort by\n * (depth, material, texture, hierarchyIndex) — visual order is locked, batching is the\n * by-product of materials clustering within each depth band.\n *\n * Overlap detection is accelerated by a 10×10 spatial grid. Grid origin and cell size\n * are derived from the union AABB of input elements (the bounds transform itself is the\n * work the loop must do anyway, so the union accumulation just piggybacks). This stays\n * correct across SS/WS canvases, any pivot, and any element distribution — no dependency\n * on canvas configuration.\n */\nexport class UIBatchSorter {\n // Spatial-hash is fastest when cell size ≈ typical element size (one element per cell).\n // UI elements typically span ~10% of the canvas → 10×10 grid.\n private static readonly _gridDim = 10;\n\n private static readonly _entries = new Array<SortEntry>();\n private static readonly _grid: GridCell[][] = [];\n // Interleaved (x, y) cell coords touched in the previous frame\n private static readonly _dirtyCells = new Array<number>();\n private static readonly _localBoundsPool = new Array<BoundingBox>();\n private static readonly _worldToLocal = new Matrix();\n\n /**\n * Reorders `elements` in place for optimal batching.\n * @param elements - in hierarchy order (depth-first traversal); mutated in place\n * @param canvasWorldMatrix - reduces world bounds to canvas-local for precise overlap\n */\n static sort(elements: RenderElement[], canvasWorldMatrix: Matrix): void {\n const count = elements.length;\n if (count <= 1) return;\n\n const gridDim = this._gridDim;\n const entries = this._entries;\n const grid = this._grid;\n const dirtyCells = this._dirtyCells;\n const localBoundsPool = this._localBoundsPool;\n const worldToLocal = this._worldToLocal;\n Matrix.invert(canvasWorldMatrix, worldToLocal);\n while (entries.length < count) entries.push(new SortEntry());\n\n // Allocate grid once, reuse forever (each cell must be a real [], not a sparse hole)\n if (grid.length < gridDim) {\n while (grid.length < gridDim) grid.push([]);\n for (let i = 0; i < gridDim; i++) {\n const row = grid[i];\n while (row.length < gridDim) row.push([]);\n }\n }\n\n // Clear only previously-used cells (no full sweep)\n for (let k = 0, n = dirtyCells.length; k < n; k += 2) {\n grid[dirtyCells[k]][dirtyCells[k + 1]].length = 0;\n }\n dirtyCells.length = 0;\n\n // Pass 1: transform world bounds to canvas-local + accumulate the union AABB.\n // Transform is already required to do precise overlap, so the union accumulation\n // is essentially free — just a few minmax compares riding on the existing pass\n let unionMinX = Infinity;\n let unionMinY = Infinity;\n let unionMaxX = -Infinity;\n let unionMaxY = -Infinity;\n for (let i = 0; i < count; i++) {\n const localBounds = (localBoundsPool[i] ||= new BoundingBox());\n BoundingBox.transform(elements[i].component.bounds, worldToLocal, localBounds);\n const { min, max } = localBounds;\n if (min.x < unionMinX) unionMinX = min.x;\n if (min.y < unionMinY) unionMinY = min.y;\n if (max.x > unionMaxX) unionMaxX = max.x;\n if (max.y > unionMaxY) unionMaxY = max.y;\n }\n // Guard against a degenerate union (all elements collapsed onto a single point /\n // axis); the grid then collapses to cell 0 which is semantically correct\n const cellSizeX = Math.max(1e-6, unionMaxX - unionMinX) / gridDim;\n const cellSizeY = Math.max(1e-6, unionMaxY - unionMinY) / gridDim;\n const maxCell = gridDim - 1;\n\n // Pass 2: register each element into grid cells and compute its depth\n for (let i = 0; i < count; i++) {\n const element = elements[i];\n const localBounds = localBoundsPool[i];\n const materialId = element.material.instanceId;\n const textureId = element.texture ? element.texture.instanceId : 0;\n\n // Floor + clamp guards floating-point edge cases (a `max` exactly on the union\n // boundary would otherwise produce `gridDim`)\n const minCellX = Math.min(maxCell, Math.max(0, Math.floor((localBounds.min.x - unionMinX) / cellSizeX)));\n const maxCellX = Math.min(maxCell, Math.max(0, Math.floor((localBounds.max.x - unionMinX) / cellSizeX)));\n const minCellY = Math.min(maxCell, Math.max(0, Math.floor((localBounds.min.y - unionMinY) / cellSizeY)));\n const maxCellY = Math.min(maxCell, Math.max(0, Math.floor((localBounds.max.y - unionMinY) / cellSizeY)));\n\n // Find the deepest overlapping prior, and whether that shelf has any incompatible occupant\n let maxDepth = -1;\n let maxDepthIncompatible = false;\n for (let cellY = minCellY; cellY <= maxCellY; cellY++) {\n for (let cellX = minCellX; cellX <= maxCellX; cellX++) {\n const cell = grid[cellX][cellY];\n for (let j = 0, m = cell.length; j < m; j++) {\n const other = cell[j];\n if (!UIBatchSorter._rectOverlap(localBounds, other.bounds)) continue;\n const otherDepth = other.depth;\n const otherIncompatible = other.materialId !== materialId || other.textureId !== textureId;\n if (otherDepth > maxDepth) {\n maxDepth = otherDepth;\n maxDepthIncompatible = otherIncompatible;\n } else if (otherDepth === maxDepth && otherIncompatible) {\n maxDepthIncompatible = true;\n }\n }\n }\n }\n\n const entry = entries[i];\n entry.element = element;\n entry.hierarchyIndex = i;\n // Share the deepest shelf if compatible; bump up one if blocked by an incompatible occupant\n entry.depth = maxDepth < 0 ? 0 : maxDepth + (maxDepthIncompatible ? 1 : 0);\n entry.materialId = materialId;\n entry.textureId = textureId;\n entry.bounds = localBounds;\n\n for (let cellY = minCellY; cellY <= maxCellY; cellY++) {\n for (let cellX = minCellX; cellX <= maxCellX; cellX++) {\n const cell = grid[cellX][cellY];\n if (cell.length === 0) dirtyCells.push(cellX, cellY);\n cell.push(entry);\n }\n }\n }\n\n // @ts-ignore — Utils._quickSort is @internal\n Utils._quickSort(entries, 0, count, UIBatchSorter._compareEntries);\n for (let i = 0; i < count; i++) elements[i] = entries[i].element;\n }\n\n private static _rectOverlap(a: BoundingBox, b: BoundingBox): boolean {\n return a.min.x < b.max.x && a.max.x > b.min.x && a.min.y < b.max.y && a.max.y > b.min.y;\n }\n\n private static _compareEntries(a: SortEntry, b: SortEntry): number {\n return (\n a.depth - b.depth ||\n a.materialId - b.materialId ||\n a.textureId - b.textureId ||\n a.hierarchyIndex - b.hierarchyIndex\n );\n }\n}\n\ntype GridCell = SortEntry[];\n\n// materialId/textureId/bounds are flattened from RenderElement to avoid\n// multi-hop property access in the hot inner loop and the sort comparator.\nclass SortEntry {\n element: RenderElement;\n hierarchyIndex = 0;\n depth = 0;\n materialId = 0;\n textureId = 0;\n bounds: BoundingBox;\n}\n","/**\n * Render mode for ui canvas.\n */\nexport enum CanvasRenderMode {\n /**\n * The UI canvas will be rendered directly onto the screen and adapted to screen space,\n * overlaying other rendering elements in the same scene.\n * @remarks if the `engine.canvas` size change, the UI canvas will automatically adapt.\n */\n ScreenSpaceOverlay = 0,\n /**\n * The UI canvas is placed at a specified distance in front of the camera and adapted to screen space,\n * with all objects rendered by the camera.\n * @remarks if the camera's properties or the `engine.canvas` size change, the UI canvas will automatically adapt.\n * @remarks if set `ScreenSpaceCamera` but no corresponding camera is assigned, the actual rendering mode defaults to `ScreenSpaceOverlay`.\n */\n ScreenSpaceCamera = 1,\n /**\n * The UI canvas is placed in the 3D world space and rendered by every camera in the same scene.\n */\n WorldSpace = 2\n}\n","/**\n * Resolution adaptation mode.\n * @remarks Only effective in screen space.\n */\nexport enum ResolutionAdaptationMode {\n /** Adapt based on width.(`referenceResolution.x`) */\n WidthAdaptation,\n /** Adapt based on height.(`referenceResolution.y`) */\n HeightAdaptation,\n /** Adapt based on both width and height.(`referenceResolution`) */\n BothAdaptation,\n /** Adapt to the side with a larger ratio. */\n ExpandAdaptation,\n /** Adapt to the side with smaller ratio. */\n ShrinkAdaptation\n}\n","/** Horizontal alignment mode. */\nexport enum HorizontalAlignmentMode {\n /** No horizontal alignment. */\n None = 0,\n /** Left-aligned, `alignLeft` drives `position.x`. */\n Left = 0x1,\n /** Right-aligned, `alignRight` drives `position.x`. */\n Right = 0x2,\n /** Horizontal stretch, `alignLeft` and `alignRight` drive `position.x` and `size.x`. */\n LeftAndRight = 0x3,\n /** Center-aligned, `alignCenter` drives `position.x`. */\n Center = 0x4\n}\n","/** Vertical alignment mode. */\nexport enum VerticalAlignmentMode {\n /** No vertical alignment. */\n None = 0,\n /** Top-aligned, `alignTop` drives `position.y`. */\n Top = 0x1,\n /** Bottom-aligned, `alignBottom` drives `position.y`. */\n Bottom = 0x2,\n /** Vertical stretch, `alignTop` and `alignBottom` drive `position.y` and `size.y`. */\n TopAndBottom = 0x3,\n /** Middle-aligned, `alignMiddle` drives `position.y`. */\n Middle = 0x4\n}\n","import {\n Entity,\n MathUtil,\n Rect,\n Transform,\n TransformModifyFlags,\n Vector2,\n deepClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { HorizontalAlignmentMode } from \"../enums/HorizontalAlignmentMode\";\nimport { VerticalAlignmentMode } from \"../enums/VerticalAlignmentMode\";\n\n/**\n * The Transform component exclusive to the UI element.\n */\nexport class UITransform extends Transform {\n @ignoreClone\n private _size = new Vector2(100, 100);\n @ignoreClone\n private _pivot = new Vector2(0.5, 0.5);\n @deepClone\n private _rect = new Rect(-50, -50, 100, 100);\n\n private _alignLeft = 0;\n private _alignRight = 0;\n private _alignCenter = 0;\n private _alignTop = 0;\n private _alignBottom = 0;\n private _alignMiddle = 0;\n private _horizontalAlignment = HorizontalAlignmentMode.None;\n private _verticalAlignment = VerticalAlignmentMode.None;\n\n /**\n * Width and height of UI element.\n */\n get size(): Vector2 {\n return this._size;\n }\n\n set size(value: Vector2) {\n const { _size: size } = this;\n if (size === value) return;\n (size.x !== value.x || size.y !== value.y) && size.copyFrom(value);\n }\n\n /**\n * Pivot of UI element.\n */\n get pivot(): Vector2 {\n return this._pivot;\n }\n\n set pivot(value: Vector2) {\n const { _pivot: pivot } = this;\n if (pivot === value) return;\n (pivot.x !== value.x || pivot.y !== value.y) && pivot.copyFrom(value);\n }\n\n /**\n * Horizontal alignment mode.\n *\n * @remarks\n * Controls how the element aligns horizontally within its parent:\n * - `Left` - Align to parent's left edge\n * - `Center` - Align to parent's horizontal center\n * - `Right` - Align to parent's right edge\n * - `LeftAndRight` - Align to both left and right edges (stretch to fill width)\n */\n get horizontalAlignment(): HorizontalAlignmentMode {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment(value: HorizontalAlignmentMode) {\n if (this._horizontalAlignment === value) return;\n this._horizontalAlignment = value;\n switch (value) {\n case HorizontalAlignmentMode.Left:\n case HorizontalAlignmentMode.Right:\n case HorizontalAlignmentMode.Center:\n this._onPositionChanged();\n break;\n case HorizontalAlignmentMode.LeftAndRight:\n this._onPositionChanged();\n this._onSizeChanged();\n break;\n default:\n break;\n }\n }\n\n /**\n * Left margin when horizontalAlignment is Left or LeftAndRight.\n *\n * @remarks\n * Only effective when horizontalAlignment includes Left mode.\n * Distance from the parent's left edge to the element's left edge.\n */\n get alignLeft(): number {\n return this._alignLeft;\n }\n\n set alignLeft(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignLeft)) return;\n this._alignLeft = value;\n if (this._horizontalAlignment & HorizontalAlignmentMode.Left) {\n this._onPositionChanged();\n this._horizontalAlignment & HorizontalAlignmentMode.Right && this._onSizeChanged();\n }\n }\n\n /**\n * Right margin when horizontalAlignment is Right or LeftAndRight.\n *\n * @remarks\n * Only effective when horizontalAlignment includes Right mode.\n * Distance from the parent's right edge to the element's right edge.\n */\n get alignRight(): number {\n return this._alignRight;\n }\n\n set alignRight(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignRight)) return;\n this._alignRight = value;\n if (this._horizontalAlignment & HorizontalAlignmentMode.Right) {\n this._onPositionChanged();\n this._horizontalAlignment & HorizontalAlignmentMode.Left && this._onSizeChanged();\n }\n }\n\n /**\n * Horizontal center offset when horizontalAlignment is Center.\n *\n * @remarks\n * Only effective when horizontalAlignment is Center mode.\n * Positive values move the element to the right, negative values to the left.\n */\n get alignCenter(): number {\n return this._alignCenter;\n }\n\n set alignCenter(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignCenter)) return;\n this._alignCenter = value;\n this._horizontalAlignment & HorizontalAlignmentMode.Center && this._onPositionChanged();\n }\n\n /**\n * Vertical alignment mode.\n *\n * @remarks\n * Controls how the element aligns vertically within its parent:\n * - `Top` - Align to parent's top edge\n * - `Middle` - Align to parent's vertical center\n * - `Bottom` - Align to parent's bottom edge\n * - `TopAndBottom` - Align to both top and bottom edges (stretch to fill height)\n */\n get verticalAlignment(): VerticalAlignmentMode {\n return this._verticalAlignment;\n }\n\n set verticalAlignment(value: VerticalAlignmentMode) {\n if (this._verticalAlignment === value) return;\n this._verticalAlignment = value;\n switch (value) {\n case VerticalAlignmentMode.Top:\n case VerticalAlignmentMode.Bottom:\n case VerticalAlignmentMode.Middle:\n this._onPositionChanged();\n break;\n case VerticalAlignmentMode.TopAndBottom:\n this._onPositionChanged();\n this._onSizeChanged();\n break;\n default:\n break;\n }\n }\n\n /**\n * Top margin when verticalAlignment is Top or TopAndBottom.\n *\n * @remarks\n * Only effective when verticalAlignment includes Top mode.\n * Used to offset the element from the parent's top edge.\n */\n get alignTop(): number {\n return this._alignTop;\n }\n\n set alignTop(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignTop)) return;\n this._alignTop = value;\n if (this._verticalAlignment & VerticalAlignmentMode.Top) {\n this._onPositionChanged();\n this._verticalAlignment & VerticalAlignmentMode.Bottom && this._onSizeChanged();\n }\n }\n\n /**\n * Bottom inset used in vertical alignment formulas.\n */\n get alignBottom(): number {\n return this._alignBottom;\n }\n\n set alignBottom(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignBottom)) return;\n this._alignBottom = value;\n if (this._verticalAlignment & VerticalAlignmentMode.Bottom) {\n this._onPositionChanged();\n this._verticalAlignment & VerticalAlignmentMode.Top && this._onSizeChanged();\n }\n }\n\n /**\n * Vertical middle offset relative to parent's middle.\n */\n get alignMiddle(): number {\n return this._alignMiddle;\n }\n\n set alignMiddle(value: number) {\n if (!Number.isFinite(value)) return;\n if (MathUtil.equals(value, this._alignMiddle)) return;\n this._alignMiddle = value;\n this._verticalAlignment & VerticalAlignmentMode.Middle && this._onPositionChanged();\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._onSizeChanged = this._onSizeChanged.bind(this);\n this._onPivotChanged = this._onPivotChanged.bind(this);\n // @ts-ignore\n this._size._onValueChanged = this._onSizeChanged;\n // @ts-ignore\n this._pivot._onValueChanged = this._onPivotChanged;\n }\n\n /**\n * @internal\n */\n _parentChange(): void {\n this._isParentDirty = true;\n this._updateWorldFlagWithParentRectChange(TransformModifyFlags.WmWpWeWqWsWus);\n }\n\n // @ts-ignore\n override _cloneTo(target: UITransform): void {\n // @ts-ignore\n super._cloneTo(target);\n const { _size: size, _pivot: pivot } = target;\n // @ts-ignore\n size._onValueChanged = pivot._onValueChanged = null;\n size.copyFrom(this._size);\n pivot.copyFrom(this._pivot);\n // @ts-ignore\n size._onValueChanged = target._onSizeChanged;\n // @ts-ignore\n pivot._onValueChanged = target._onPivotChanged;\n }\n\n protected override _onLocalMatrixChanging(): void {\n // `super._onLocalMatrixChanging()` will set `LocalMatrix` dirty flag `false`\n // If there is an alignment, `position` and `localMatrix` will be reset again\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n } else {\n super._onLocalMatrixChanging();\n }\n }\n\n protected override _onWorldMatrixChanging(): void {\n // `super._onWorldMatrixChanging()` will set `WorldMatrix` dirty flag `false`\n // If there is an alignment, `position` and `worldMatrix` will be reset again(`worldMatrix` dirty flag is already `true`)\n !this._horizontalAlignment && !this._verticalAlignment && super._onWorldMatrixChanging();\n }\n\n @ignoreClone\n protected override _onPositionChanged(): void {\n (this._horizontalAlignment || this._verticalAlignment) && this._updatePositionByAlignment();\n super._onPositionChanged();\n }\n\n @ignoreClone\n protected override _onWorldPositionChanged(): void {\n super._onWorldPositionChanged();\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._setDirtyFlagTrue(TransformModifyFlags.WorldPosition);\n }\n }\n\n private _updatePositionByAlignment(): void {\n const parentRect = (this._getParentTransform() as UITransform)?._rect;\n if (parentRect) {\n const position = this.position;\n // @ts-ignore\n position._onValueChanged = null;\n const rect = this._rect;\n switch (this._horizontalAlignment) {\n case HorizontalAlignmentMode.Left:\n case HorizontalAlignmentMode.LeftAndRight:\n position.x = parentRect.x - rect.x + this._alignLeft;\n break;\n case HorizontalAlignmentMode.Center:\n position.x = parentRect.x + parentRect.width * 0.5 - rect.x - rect.width * 0.5 + this._alignCenter;\n break;\n case HorizontalAlignmentMode.Right:\n position.x = parentRect.x + parentRect.width - rect.x - rect.width - this._alignRight;\n break;\n default:\n break;\n }\n switch (this._verticalAlignment) {\n case VerticalAlignmentMode.Top:\n position.y = parentRect.y + parentRect.height - rect.y - rect.height - this._alignTop;\n break;\n case VerticalAlignmentMode.Middle:\n position.y = parentRect.y + parentRect.height * 0.5 - rect.y - rect.height * 0.5 + this._alignMiddle;\n break;\n case VerticalAlignmentMode.Bottom:\n case VerticalAlignmentMode.TopAndBottom:\n position.y = parentRect.y - rect.y + this._alignBottom;\n break;\n default:\n break;\n }\n // @ts-ignore\n position._onValueChanged = this._onPositionChanged;\n }\n }\n\n private _updateSizeByAlignment(): void {\n const parentRect = (this._getParentTransform() as UITransform)?._rect;\n if (parentRect) {\n const size = this._size;\n // @ts-ignore\n size._onValueChanged = null;\n // The values of size must be greater than 0\n if (this._horizontalAlignment === HorizontalAlignmentMode.LeftAndRight) {\n size.x = Math.max(parentRect.width - this._alignLeft - this._alignRight, 0);\n }\n if (this._verticalAlignment === VerticalAlignmentMode.TopAndBottom) {\n size.y = Math.max(parentRect.height - this._alignTop - this._alignBottom, 0);\n }\n // @ts-ignore\n size._onValueChanged = this._onSizeChanged;\n }\n }\n\n private _updateRectBySizeAndPivot(): void {\n const { size, _pivot: pivot } = this;\n const x = -pivot.x * size.x;\n const y = -pivot.y * size.y;\n this._rect.set(x, y, size.x, size.y);\n }\n\n @ignoreClone\n private _onSizeChanged(): void {\n if (\n this._horizontalAlignment === HorizontalAlignmentMode.LeftAndRight ||\n this._verticalAlignment === VerticalAlignmentMode.TopAndBottom\n ) {\n this._updateSizeByAlignment();\n }\n this._updateRectBySizeAndPivot();\n this._updateWorldFlagWithSelfRectChange();\n // @ts-ignore\n this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Size);\n }\n\n @ignoreClone\n private _onPivotChanged(): void {\n this._updateRectBySizeAndPivot();\n this._updateWorldFlagWithSelfRectChange();\n // @ts-ignore\n this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Pivot);\n }\n\n private _updateWorldFlagWithSelfRectChange(): void {\n let worldFlags = 0;\n if (this._horizontalAlignment || this._verticalAlignment) {\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n worldFlags = TransformModifyFlags.WmWp;\n !this._isContainDirtyFlags(worldFlags) && this._worldAssociatedChange(worldFlags);\n }\n const children = this.entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n (children[i].transform as UITransform)?._updateWorldFlagWithParentRectChange?.(worldFlags);\n }\n }\n\n private _updateWorldFlagWithParentRectChange(flags: number, parentChange: boolean = true): void {\n let selfChange = false;\n if (parentChange) {\n const { _horizontalAlignment: horizontalAlignment, _verticalAlignment: verticalAlignment } = this;\n if (horizontalAlignment || verticalAlignment) {\n if (\n horizontalAlignment === HorizontalAlignmentMode.LeftAndRight ||\n verticalAlignment === VerticalAlignmentMode.TopAndBottom\n ) {\n this._updateSizeByAlignment();\n this._updateRectBySizeAndPivot();\n selfChange = true;\n }\n this._updatePositionByAlignment();\n this._setDirtyFlagTrue(TransformModifyFlags.LocalMatrix);\n flags |= TransformModifyFlags.WmWp;\n }\n }\n const containDirtyFlags = this._isContainDirtyFlags(flags);\n !containDirtyFlags && this._worldAssociatedChange(flags);\n if (selfChange || !containDirtyFlags) {\n const children = this.entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n (children[i].transform as UITransform)?._updateWorldFlagWithParentRectChange?.(flags, selfChange);\n }\n }\n // @ts-ignore\n selfChange && this._entity._updateFlagManager.dispatch(UITransformModifyFlags.Size);\n }\n}\n\n/**\n * @internal\n * extends TransformModifyFlags\n */\nexport enum UITransformModifyFlags {\n Size = 0x200,\n Pivot = 0x400\n}\n","import {\n VertexMergeBatcher,\n Color,\n DependentMode,\n Entity,\n EntityModifyFlags,\n Matrix,\n Plane,\n Ray,\n Renderer,\n RendererUpdateFlags,\n ShaderMacroCollection,\n ShaderProperty,\n Vector3,\n Vector4,\n assignmentClone,\n deepClone,\n dependentComponents,\n ignoreClone\n} from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { UIHitResult } from \"../input/UIHitResult\";\nimport { IGraphics } from \"../interface/IGraphics\";\nimport { EntityUIModifyFlags, UICanvas } from \"./UICanvas\";\nimport { GroupModifyFlags, UIGroup } from \"./UIGroup\";\nimport { UITransform } from \"./UITransform\";\n\n@dependentComponents(UITransform, DependentMode.AutoAdd)\nexport class UIRenderer extends Renderer implements IGraphics {\n /** @internal */\n static _tempVec30: Vector3 = new Vector3();\n /** @internal */\n static _tempVec31: Vector3 = new Vector3();\n /** @internal */\n static _tempMat: Matrix = new Matrix();\n /** @internal */\n static _tempPlane: Plane = new Plane();\n /** @internal */\n static _textureProperty: ShaderProperty = ShaderProperty.getByName(\"renderer_UITexture\");\n\n /**\n * Custom boundary for raycast detection.\n * @remarks this is based on `this.entity.transform`.\n */\n @deepClone\n raycastPadding: Vector4 = new Vector4(0, 0, 0, 0);\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n /** @internal */\n @ignoreClone\n _subChunk;\n\n @assignmentClone\n private _raycastEnabled: boolean = true;\n @deepClone\n protected _color: Color = new Color(1, 1, 1, 1);\n\n /**\n * Rendering color for the ui renderer.\n */\n get color(): Color {\n return this._color;\n }\n\n set color(value: Color) {\n if (this._color !== value) {\n this._color.copyFrom(value);\n }\n }\n\n /**\n * Whether this renderer be picked up by raycast.\n */\n get raycastEnabled(): boolean {\n return this._raycastEnabled;\n }\n\n set raycastEnabled(value: boolean) {\n this._raycastEnabled = value;\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._dirtyUpdateFlag = RendererUpdateFlags.WorldVolume | UIRendererUpdateFlags.Color;\n this._onColorChanged = this._onColorChanged.bind(this);\n //@ts-ignore\n this._color._onValueChanged = this._onColorChanged;\n this._groupListener = this._groupListener.bind(this);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n }\n\n // @ts-ignore\n override _canBatch(preElement, curElement): boolean {\n return VertexMergeBatcher.canBatchSprite(preElement, curElement);\n }\n\n // @ts-ignore\n override _batch(preElement, curElement): void {\n VertexMergeBatcher.batch(preElement, curElement);\n }\n\n // @ts-ignore\n override _updateTransformShaderData(context, onlyMVP: boolean): void {\n // @ts-ignore\n this._updateWorldSpaceTransformShaderData(context, onlyMVP);\n }\n\n // @ts-ignore\n override _prepareRender(context): void {\n // Update once per frame per renderer, not influenced by batched\n if (this._renderFrameCount !== this.engine.time.frameCount) {\n this._update(context);\n }\n\n this._render(context);\n\n // union camera global macro and renderer macro.\n ShaderMacroCollection.unionCollection(\n context.camera._globalShaderMacro,\n // @ts-ignore\n this.shaderData._macroCollection,\n //@ts-ignore\n this._globalShaderMacro\n );\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n // @ts-ignore\n this._overrideUpdate && this.scene._componentsManager.addOnUpdateRenderers(this);\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n // @ts-ignore\n this._overrideUpdate && this.scene._componentsManager.removeOnUpdateRenderers(this);\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n }\n\n /**\n * @internal\n */\n _getGlobalAlpha(): number {\n return this._getGroup()?._getGlobalAlpha() ?? 1;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number, entity: Entity): void {\n switch (flag) {\n case EntityModifyFlags.Parent:\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n case EntityModifyFlags.Child:\n entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n break;\n default:\n break;\n }\n }\n\n /**\n * @internal\n */\n _onGroupModify(flags: GroupModifyFlags): void {\n if (flags & GroupModifyFlags.GlobalAlpha) {\n this._dirtyUpdateFlag |= UIRendererUpdateFlags.Color;\n }\n }\n\n @ignoreClone\n private _onColorChanged(): void {\n this._dirtyUpdateFlag |= UIRendererUpdateFlags.Color;\n }\n\n /**\n * @internal\n */\n _getChunkManager() {\n // @ts-ignore\n return this.engine._batcherManager.primitiveChunkManagerUI;\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, out: UIHitResult, distance: number = Number.MAX_SAFE_INTEGER): boolean {\n const plane = UIRenderer._tempPlane;\n const transform = <UITransform>this._transformEntity.transform;\n const normal = plane.normal.copyFrom(transform.worldForward);\n plane.distance = -Vector3.dot(normal, transform.worldPosition);\n const curDistance = ray.intersectPlane(plane);\n if (curDistance >= 0 && curDistance < distance) {\n const hitPointWorld = ray.getPoint(curDistance, UIRenderer._tempVec30);\n const worldMatrixInv = UIRenderer._tempMat;\n Matrix.invert(transform.worldMatrix, worldMatrixInv);\n const localPosition = UIRenderer._tempVec31;\n Vector3.transformCoordinate(hitPointWorld, worldMatrixInv, localPosition);\n if (this._hitTest(localPosition)) {\n out.component = this;\n out.distance = curDistance;\n out.entity = this.entity;\n out.normal.copyFrom(normal);\n out.point.copyFrom(hitPointWorld);\n return true;\n }\n }\n return false;\n }\n\n protected _hitTest(localPosition: Vector3): boolean {\n const { x, y } = localPosition;\n const uiTransform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = uiTransform.size;\n const { x: pivotX, y: pivotY } = uiTransform.pivot;\n const { x: paddingLeft, y: paddingBottom, z: paddingRight, w: paddingTop } = this.raycastPadding;\n return (\n x >= -width * pivotX + paddingLeft &&\n x <= width * (1 - pivotX) - paddingRight &&\n y >= -height * pivotY + paddingTop &&\n y <= height * (1 - pivotY) - paddingBottom\n );\n }\n\n protected override _onDestroy(): void {\n if (this._subChunk) {\n this._getChunkManager().freeSubChunk(this._subChunk);\n this._subChunk = null;\n }\n super._onDestroy();\n //@ts-ignore\n this._color._onValueChanged = null;\n this._color = null;\n }\n}\n\n/**\n * @remarks Extends `RendererUpdateFlags`.\n */\nexport enum UIRendererUpdateFlags {\n Color = 0x2\n}\n","import {\n CloneUtils,\n Entity,\n EntityModifyFlags,\n Script,\n assignmentClone,\n deepClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { UIGroup } from \"../..\";\nimport { Utils } from \"../../Utils\";\nimport { IGroupAble } from \"../../interface/IGroupAble\";\nimport { EntityUIModifyFlags, UICanvas } from \"../UICanvas\";\nimport { GroupModifyFlags } from \"../UIGroup\";\nimport { Transition } from \"./transition/Transition\";\n\n/**\n * Interactive component.\n */\nexport class UIInteractive extends Script implements IGroupAble {\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n /** @internal */\n _group: UIGroup;\n /** @internal */\n @ignoreClone\n _indexInGroup: number = -1;\n /** @internal */\n @ignoreClone\n _isGroupDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _groupListeningEntities: Entity[] = [];\n\n /** @internal */\n @ignoreClone\n _globalInteractive: boolean = false;\n /** @internal */\n @ignoreClone\n _globalInteractiveDirty: boolean = false;\n\n @deepClone\n protected _transitions: Transition[] = [];\n @assignmentClone\n protected _interactive: boolean = true;\n @ignoreClone\n protected _state: InteractiveState = InteractiveState.Normal;\n\n /** @todo Multi-touch points are not considered yet. */\n @ignoreClone\n private _isPointerInside: boolean = false;\n @ignoreClone\n private _isPointerDragging: boolean = false;\n\n /**\n * The transitions of this interactive.\n */\n get transitions(): Readonly<Transition[]> {\n return this._transitions;\n }\n\n /**\n * Whether the interactive is enabled.\n */\n get interactive() {\n return this._interactive;\n }\n\n set interactive(value: boolean) {\n if (this._interactive !== value) {\n this._interactive = value;\n this._globalInteractiveDirty = true;\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._groupListener = this._groupListener.bind(this);\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n }\n\n /**\n * Add transition on this interactive.\n * @param transition - The transition\n */\n addTransition(transition: Transition): void {\n const interactive = transition._interactive;\n if (interactive !== this) {\n interactive?.removeTransition(transition);\n this._transitions.push(transition);\n transition._interactive = this;\n transition._setState(this._state, true);\n }\n }\n\n /**\n * Remove a transition.\n * @param shape - The transition.\n */\n removeTransition(transition: Transition): void {\n const transitions = this._transitions;\n const lastOneIndex = transitions.length - 1;\n for (let i = lastOneIndex; i >= 0; i--) {\n if (transitions[i] === transition) {\n i !== lastOneIndex && (transitions[i] = transitions[lastOneIndex]);\n transitions.length = lastOneIndex;\n transition._interactive = null;\n break;\n }\n }\n }\n\n /**\n * Remove all transitions.\n */\n clearTransitions(): void {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._interactive = null;\n }\n transitions.length = 0;\n }\n\n override onUpdate(deltaTime: number): void {\n if (this._getGlobalInteractive()) {\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._onUpdate(deltaTime);\n }\n }\n }\n\n override onPointerBeginDrag(): void {\n this._isPointerDragging = true;\n this._updateState(false);\n }\n\n override onPointerEndDrag(): void {\n this._isPointerDragging = false;\n this._updateState(false);\n }\n\n override onPointerEnter(): void {\n this._isPointerInside = true;\n this._updateState(false);\n }\n\n override onPointerExit(): void {\n this._isPointerInside = false;\n this._updateState(false);\n }\n\n override onDestroy(): void {\n super.onDestroy();\n const transitions = this._transitions;\n for (let i = transitions.length - 1; i >= 0; i--) {\n transitions[i].destroy();\n }\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n this._isRootCanvasDirty && Utils.setRootCanvas(this, Utils.searchRootCanvasInParents(this));\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _getGroup(): UIGroup {\n this._isGroupDirty && Utils.setGroup(this, Utils.searchGroupInParents(this));\n return this._group;\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n // @ts-ignore\n super._onEnableInScene();\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n this._updateState(true);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n // @ts-ignore\n super._onDisableInScene();\n Utils.cleanRootCanvas(this);\n Utils.cleanGroup(this);\n this._isPointerInside = this._isPointerDragging = false;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _groupListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.GroupEnableInScene) {\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number): void {\n if (flag === EntityModifyFlags.Parent || flag === EntityUIModifyFlags.CanvasEnableInScene) {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(this);\n }\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _onGroupModify(flags: GroupModifyFlags): void {\n if (flags & GroupModifyFlags.GlobalInteractive) {\n this._globalInteractiveDirty = true;\n }\n }\n\n /**\n * @internal\n */\n _getGlobalInteractive(): boolean {\n if (this._globalInteractiveDirty) {\n const group = this._getGroup();\n const globalInteractive = this._interactive && (!group || group._getGlobalInteractive());\n if (this._globalInteractive !== globalInteractive) {\n this._globalInteractive = globalInteractive;\n this._updateState(true);\n }\n this._globalInteractiveDirty = false;\n }\n return this._globalInteractive;\n }\n\n private _updateState(instant: boolean): void {\n const state = this._getInteractiveState();\n if (this._state !== state) {\n this._state = state;\n const transitions = this._transitions;\n for (let i = 0, n = transitions.length; i < n; i++) {\n transitions[i]._setState(state, instant);\n }\n }\n }\n\n private _getInteractiveState(): InteractiveState {\n if (!this._getGlobalInteractive()) {\n return InteractiveState.Disable;\n }\n if (this._isPointerDragging) {\n return InteractiveState.Pressed;\n } else {\n return this._isPointerInside ? InteractiveState.Hover : InteractiveState.Normal;\n }\n }\n}\n\nexport enum InteractiveState {\n Normal,\n Pressed,\n Hover,\n Disable\n}\n","import {\n BoolUpdateFlag,\n Camera,\n CameraModifyFlags,\n Component,\n DependentMode,\n DisorderedArray,\n Entity,\n EntityModifyFlags,\n Logger,\n MathUtil,\n Matrix,\n Ray,\n RenderElement,\n Vector2,\n Vector3,\n assignmentClone,\n deepClone,\n dependentComponents,\n ignoreClone\n} from \"@galacean/engine\";\nimport { Utils } from \"../Utils\";\nimport { UIBatchSorter } from \"./UIBatchSorter\";\nimport { CanvasRenderMode } from \"../enums/CanvasRenderMode\";\nimport { ResolutionAdaptationMode } from \"../enums/ResolutionAdaptationMode\";\nimport { UIHitResult } from \"../input/UIHitResult\";\nimport { IElement } from \"../interface/IElement\";\nimport { IGroupAble } from \"../interface/IGroupAble\";\nimport { UIGroup } from \"./UIGroup\";\nimport { UIRenderer } from \"./UIRenderer\";\nimport { UITransform } from \"./UITransform\";\nimport { UIInteractive } from \"./interactive/UIInteractive\";\n\n/**\n * The UI Canvas component serves as the root node for UI elements,\n * handling rendering and events based on it.\n */\n@dependentComponents(UITransform, DependentMode.AutoAdd)\nexport class UICanvas extends Component implements IElement {\n /** @internal */\n static _hierarchyCounter: number = 1;\n private static _tempGroupAbleList: IGroupAble[] = [];\n private static _tempVec3: Vector3 = new Vector3();\n private static _tempMat: Matrix = new Matrix();\n\n /** @internal */\n @ignoreClone\n _canvasIndex: number = -1;\n /** @internal */\n _rootCanvas: UICanvas;\n /** @internal */\n @ignoreClone\n _indexInRootCanvas: number = -1;\n /** @internal */\n @ignoreClone\n _isRootCanvasDirty: boolean = false;\n /** @internal */\n @ignoreClone\n _rootCanvasListeningEntities: Entity[] = [];\n\n /** @internal */\n @ignoreClone\n _isRootCanvas: boolean = false;\n /** @internal */\n @ignoreClone\n _renderElements: RenderElement[] = [];\n /** @internal */\n @ignoreClone\n _batchedRenderElements: RenderElement[] = [];\n /** @internal */\n @ignoreClone\n _sortDistance: number = 0;\n /** @internal */\n @ignoreClone\n _orderedRenderers: UIRenderer[] = [];\n /** @internal */\n @ignoreClone\n _realRenderMode: number = CanvasRealRenderMode.None;\n /** @internal */\n @ignoreClone\n _disorderedElements: DisorderedArray<IElement> = new DisorderedArray<IElement>();\n\n @ignoreClone\n private _renderMode = CanvasRenderMode.WorldSpace;\n private _camera: Camera;\n private _cameraObserver: Camera;\n @assignmentClone\n private _resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation;\n @assignmentClone\n private _sortOrder: number = 0;\n @assignmentClone\n private _distance: number = 10;\n @deepClone\n private _referenceResolution: Vector2 = new Vector2(800, 600);\n @assignmentClone\n private _referenceResolutionPerUnit: number = 100;\n @ignoreClone\n private _hierarchyVersion: number = -1;\n @ignoreClone\n private _center: Vector3 = new Vector3();\n @ignoreClone\n private _centerDirtyFlag: BoolUpdateFlag;\n\n /**\n * The conversion ratio between reference resolution and unit for UI elements in this canvas.\n */\n get referenceResolutionPerUnit(): number {\n return this._referenceResolutionPerUnit;\n }\n\n set referenceResolutionPerUnit(value: number) {\n if (this._referenceResolutionPerUnit !== value) {\n this._referenceResolutionPerUnit = value;\n this._disorderedElements.forEach((element) => {\n element._onRootCanvasModify?.(RootCanvasModifyFlags.ReferenceResolutionPerUnit);\n });\n }\n }\n\n /**\n * The reference resolution of the UI canvas in `ScreenSpaceCamera` and `ScreenSpaceOverlay` mode.\n */\n get referenceResolution(): Vector2 {\n return this._referenceResolution;\n }\n\n set referenceResolution(value: Vector2) {\n const referenceResolution = this._referenceResolution;\n if (referenceResolution === value) return;\n (referenceResolution.x !== value.x || referenceResolution.y !== value.y) && referenceResolution.copyFrom(value);\n }\n\n /**\n * The rendering mode of the UI canvas.\n */\n get renderMode(): CanvasRenderMode {\n return this._renderMode;\n }\n\n set renderMode(mode: CanvasRenderMode) {\n const preMode = this._renderMode;\n if (preMode !== mode) {\n this._renderMode = mode;\n this._updateCameraObserver();\n this._setRealRenderMode(this._getRealRenderMode());\n }\n }\n\n /**\n * The camera associated with this canvas.\n * @remarks\n * - `ScreenSpaceCamera` mode: Used for rendering adaptation. Defaults to `ScreenSpaceOverlay` if not assigned.\n * - `WorldSpace` mode: Used for event detection. If not assigned, events are handled by the highest-priority camera.\n */\n get camera(): Camera {\n return this._camera;\n }\n\n set camera(value: Camera) {\n const preCamera = this._camera;\n if (preCamera !== value) {\n if (value && this._isSameOrChildEntity(value.entity)) {\n Logger.warn(\n \"Camera entity matching or nested within the canvas entity disables canvas auto-adaptation in ScreenSpaceCamera mode.\"\n );\n }\n this._camera = value;\n this._updateCameraObserver();\n const preRenderMode = this._realRenderMode;\n const curRenderMode = this._getRealRenderMode();\n if (preRenderMode === curRenderMode) {\n if (curRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n }\n } else {\n this._setRealRenderMode(curRenderMode);\n }\n }\n }\n\n /**\n * @deprecated Use {@link camera} instead.\n */\n get renderCamera(): Camera {\n return this.camera;\n }\n\n set renderCamera(value: Camera) {\n this.camera = value;\n }\n\n /**\n * The screen resolution adaptation mode of the UI canvas in `ScreenSpaceCamera` and `ScreenSpaceOverlay` mode.\n */\n get resolutionAdaptationMode(): ResolutionAdaptationMode {\n return this._resolutionAdaptationMode;\n }\n\n set resolutionAdaptationMode(value: ResolutionAdaptationMode) {\n if (this._resolutionAdaptationMode !== value) {\n this._resolutionAdaptationMode = value;\n const realRenderMode = this._realRenderMode;\n if (\n realRenderMode === CanvasRenderMode.ScreenSpaceCamera ||\n realRenderMode === CanvasRenderMode.ScreenSpaceOverlay\n ) {\n this._adapterSizeInScreenSpace();\n }\n }\n }\n\n /**\n * The rendering order priority of the UI canvas in `ScreenSpaceOverlay` mode.\n */\n get sortOrder(): number {\n return this._sortOrder;\n }\n\n set sortOrder(value: number) {\n if (this._sortOrder !== value) {\n this._sortOrder = value;\n this._realRenderMode === CanvasRenderMode.ScreenSpaceOverlay &&\n // @ts-ignore\n (this.scene._componentsManager._overlayCanvasesSortingFlag = true);\n }\n }\n\n /**\n * The distance between the UI canvas and the camera in `ScreenSpaceCamera` mode.\n */\n get distance(): number {\n return this._distance;\n }\n\n set distance(value: number) {\n if (this._distance !== value) {\n this._distance = value;\n if (this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n }\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this._onCanvasSizeListener = this._onCanvasSizeListener.bind(this);\n this._onCameraModifyListener = this._onCameraModifyListener.bind(this);\n this._onCameraTransformListener = this._onCameraTransformListener.bind(this);\n this._onReferenceResolutionChanged = this._onReferenceResolutionChanged.bind(this);\n // @ts-ignore\n this._referenceResolution._onValueChanged = this._onReferenceResolutionChanged;\n this._rootCanvasListener = this._rootCanvasListener.bind(this);\n this._centerDirtyFlag = entity.registerWorldChangeFlag();\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, out: UIHitResult, distance: number = Number.MAX_SAFE_INTEGER): boolean {\n const renderers = this._getRenderers();\n for (let i = renderers.length - 1; i >= 0; i--) {\n const element = renderers[i];\n if (element.raycastEnabled && element._raycast(ray, out, distance)) {\n return true;\n }\n }\n out.component = null;\n out.entity = null;\n out.distance = 0;\n out.point.set(0, 0, 0);\n out.normal.set(0, 0, 0);\n return false;\n }\n\n /**\n * @internal\n */\n _getRootCanvas(): UICanvas {\n return this._rootCanvas;\n }\n\n /**\n * @internal\n */\n _canRender(camera: Camera): boolean {\n return this._realRenderMode !== CanvasRenderMode.ScreenSpaceCamera || this._camera === camera;\n }\n\n /**\n * @internal\n */\n _canDispatchEvent(camera: Camera): boolean {\n const realMode = this._realRenderMode;\n if (realMode === CanvasRenderMode.ScreenSpaceOverlay) {\n return true;\n }\n const assignedCamera = this._camera;\n // @ts-ignore\n return !assignedCamera || !assignedCamera._phasedActiveInScene || assignedCamera === camera;\n }\n\n /**\n * @internal\n */\n _prepareRender(context): void {\n const { engine, _realRenderMode: mode } = this;\n const { enableFrustumCulling, cullingMask, _frustum: frustum } = context.camera;\n const { frameCount } = engine.time;\n const renderElements = this._renderElements;\n renderElements.length = 0;\n const virtualCamera = context.virtualCamera;\n this._updateSortDistance(virtualCamera.isOrthographic, virtualCamera.position, virtualCamera.forward);\n const { width, height } = engine.canvas;\n const renderers = this._getRenderers();\n for (let i = 0, n = renderers.length; i < n; i++) {\n const renderer = renderers[i];\n // Filter by camera culling mask\n if (!(cullingMask & renderer.entity.layer)) {\n continue;\n }\n // Filter by camera frustum\n if (enableFrustumCulling) {\n switch (mode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n const { min, max } = renderer.bounds;\n if (min.x > width || max.x < 0 || min.y > height || max.y < 0) {\n continue;\n }\n break;\n case CanvasRenderMode.ScreenSpaceCamera:\n case CanvasRenderMode.WorldSpace:\n if (!frustum.intersectsBox(renderer.bounds)) {\n continue;\n }\n break;\n default:\n break;\n }\n }\n renderer._prepareRender(context);\n renderer._renderFrameCount = frameCount;\n }\n\n const batchedRenderElements = this._batchedRenderElements;\n batchedRenderElements.length = 0;\n UIBatchSorter.sort(renderElements, this.entity.transform.worldMatrix);\n (engine as any)._batcherManager.batch(renderElements, batchedRenderElements);\n for (let i = 0, n = batchedRenderElements.length; i < n; i++) {\n batchedRenderElements[i].subDistancePriority = i;\n }\n }\n\n /**\n * @internal\n */\n _updateSortDistance(isOrthographic: boolean, cameraPosition: Vector3, cameraForward: Vector3): void {\n switch (this._realRenderMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._sortDistance = 0;\n break;\n case CanvasRenderMode.ScreenSpaceCamera:\n this._sortDistance = this._distance;\n break;\n case CanvasRenderMode.WorldSpace:\n const boundsCenter = this._getCenter();\n if (isOrthographic) {\n const distance = UICanvas._tempVec3;\n Vector3.subtract(boundsCenter, cameraPosition, distance);\n this._sortDistance = Vector3.dot(distance, cameraForward);\n } else {\n this._sortDistance = Vector3.distanceSquared(boundsCenter, cameraPosition);\n }\n break;\n }\n }\n\n // @ts-ignore\n override _onEnableInScene(): void {\n const entity = this.entity;\n // @ts-ignore\n entity._dispatchModify(EntityUIModifyFlags.CanvasEnableInScene, this);\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n }\n\n // @ts-ignore\n override _onDisableInScene(): void {\n this._setIsRootCanvas(false);\n Utils.cleanRootCanvas(this);\n }\n\n // @ts-ignore\n override _onDisable(): void {\n this._renderElements.length = 0;\n this._batchedRenderElements.length = 0;\n }\n\n /**\n * @internal\n */\n @ignoreClone\n _rootCanvasListener(flag: number, param: any): void {\n if (this._isRootCanvas) {\n if (flag === EntityModifyFlags.Parent) {\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n } else if (flag === EntityUIModifyFlags.CanvasEnableInScene) {\n this._setIsRootCanvas(false);\n Utils.setRootCanvas(this, <UICanvas>param);\n }\n } else {\n if (flag === EntityModifyFlags.Parent) {\n const rootCanvas = Utils.searchRootCanvasInParents(this);\n this._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(this, rootCanvas);\n }\n }\n }\n\n /**\n * @internal\n */\n _cloneTo(target: UICanvas): void {\n target.renderMode = this._renderMode;\n }\n\n private _getRenderers(): UIRenderer[] {\n const { _orderedRenderers: renderers, entity } = this;\n const uiHierarchyVersion = entity._uiHierarchyVersion;\n if (this._hierarchyVersion !== uiHierarchyVersion) {\n renderers.length = this._walk(this.entity, renderers);\n UICanvas._tempGroupAbleList.length = 0;\n this._hierarchyVersion = uiHierarchyVersion;\n ++UICanvas._hierarchyCounter;\n }\n return renderers;\n }\n\n private _adapterPoseInScreenSpace(): void {\n const transform = this.entity.transform;\n const realRenderMode = this._realRenderMode;\n if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n const cameraEntity = this._camera.entity;\n if (!this._isSameOrChildEntity(cameraEntity)) {\n const { transform: cameraTransform } = cameraEntity;\n const { worldPosition: cameraWorldPosition, worldForward: cameraWorldForward } = cameraTransform;\n const distance = this._distance;\n transform.setWorldPosition(\n cameraWorldPosition.x + cameraWorldForward.x * distance,\n cameraWorldPosition.y + cameraWorldForward.y * distance,\n cameraWorldPosition.z + cameraWorldForward.z * distance\n );\n transform.worldRotationQuaternion.copyFrom(cameraTransform.worldRotationQuaternion);\n }\n } else {\n const { canvas } = this.engine;\n transform.setWorldPosition(canvas.width * 0.5, canvas.height * 0.5, 0);\n transform.worldRotationQuaternion.set(0, 0, 0, 1);\n }\n }\n\n private _adapterSizeInScreenSpace(): void {\n const transform = <UITransform>this.entity.transform;\n const realRenderMode = this._realRenderMode;\n const { x: width, y: height } = this._referenceResolution;\n let curWidth: number;\n let curHeight: number;\n if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n const camera = this._camera;\n curHeight = camera.isOrthographic\n ? camera.orthographicSize * 2\n : 2 * (Math.tan(MathUtil.degreeToRadian(camera.fieldOfView * 0.5)) * this._distance);\n curWidth = camera.aspectRatio * curHeight;\n } else {\n const canvas = this.engine.canvas;\n curHeight = canvas.height;\n curWidth = canvas.width;\n }\n let expectX: number, expectY: number, expectZ: number;\n switch (this._resolutionAdaptationMode) {\n case ResolutionAdaptationMode.WidthAdaptation:\n expectX = expectY = expectZ = curWidth / width;\n break;\n case ResolutionAdaptationMode.HeightAdaptation:\n expectX = expectY = expectZ = curHeight / height;\n break;\n case ResolutionAdaptationMode.BothAdaptation:\n expectX = curWidth / width;\n expectY = curHeight / height;\n expectZ = (expectX + expectY) * 0.5;\n break;\n case ResolutionAdaptationMode.ExpandAdaptation:\n expectX = expectY = expectZ = Math.min(curWidth / width, curHeight / height);\n break;\n case ResolutionAdaptationMode.ShrinkAdaptation:\n expectX = expectY = expectZ = Math.max(curWidth / width, curHeight / height);\n break;\n default:\n break;\n }\n\n const worldMatrix = UICanvas._tempMat;\n Matrix.affineTransformation(\n UICanvas._tempVec3.set(expectX, expectY, expectZ),\n transform.worldRotationQuaternion,\n transform.worldPosition,\n worldMatrix\n );\n transform.worldMatrix = worldMatrix;\n transform.size.set(curWidth / expectX, curHeight / expectY);\n }\n\n private _walk(entity: Entity, renderers: UIRenderer[], depth = 0, group: UIGroup = null): number {\n // @ts-ignore\n const components: Component[] = entity._components;\n const tempGroupAbleList = UICanvas._tempGroupAbleList;\n let groupAbleCount = 0;\n for (let i = 0, n = components.length; i < n; i++) {\n const component = components[i];\n if (!component.enabled) continue;\n if (component instanceof UIRenderer) {\n renderers[depth] = component;\n ++depth;\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n if (component._isGroupDirty) {\n tempGroupAbleList[groupAbleCount++] = component;\n }\n } else if (component instanceof UIInteractive) {\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n if (component._isGroupDirty) {\n tempGroupAbleList[groupAbleCount++] = component;\n }\n } else if (component instanceof UIGroup) {\n component._isRootCanvasDirty && Utils.setRootCanvas(component, this);\n component._isGroupDirty && Utils.setGroup(component, group);\n group = component;\n }\n }\n for (let i = 0; i < groupAbleCount; i++) {\n Utils.setGroup(tempGroupAbleList[i], group);\n }\n const children = entity.children;\n for (let i = 0, n = children.length; i < n; i++) {\n const child = children[i];\n child.isActive && (depth = this._walk(child, renderers, depth, group));\n }\n return depth;\n }\n\n private _updateCameraObserver(): void {\n const camera = this._isRootCanvas && this._renderMode === CanvasRenderMode.ScreenSpaceCamera ? this._camera : null;\n const preCamera = this._cameraObserver;\n if (preCamera !== camera) {\n this._cameraObserver = camera;\n if (preCamera) {\n // @ts-ignore\n preCamera.entity._updateFlagManager.removeListener(this._onCameraTransformListener);\n // @ts-ignore\n preCamera._unRegisterModifyListener(this._onCameraModifyListener);\n }\n if (camera) {\n // @ts-ignore\n camera.entity._updateFlagManager.addListener(this._onCameraTransformListener);\n // @ts-ignore\n camera._registerModifyListener(this._onCameraModifyListener);\n }\n }\n }\n\n @ignoreClone\n private _onCameraModifyListener(flag: CameraModifyFlags): void {\n if (this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {\n switch (flag) {\n case CameraModifyFlags.ProjectionType:\n case CameraModifyFlags.AspectRatio:\n this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.FieldOfView:\n !this._camera.isOrthographic && this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.OrthographicSize:\n this._camera.isOrthographic && this._adapterSizeInScreenSpace();\n break;\n case CameraModifyFlags.DisableInScene:\n this._setRealRenderMode(CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n } else {\n flag === CameraModifyFlags.EnableInScene && this._setRealRenderMode(CanvasRenderMode.ScreenSpaceCamera);\n }\n }\n\n @ignoreClone\n private _onCameraTransformListener(): void {\n this._realRenderMode === CanvasRenderMode.ScreenSpaceCamera && this._adapterPoseInScreenSpace();\n }\n\n private _addCanvasListener(): void {\n // @ts-ignore\n this.engine.canvas._sizeUpdateFlagManager.addListener(this._onCanvasSizeListener);\n }\n\n private _removeCanvasListener(): void {\n // @ts-ignore\n this.engine.canvas._sizeUpdateFlagManager.removeListener(this._onCanvasSizeListener);\n }\n\n @ignoreClone\n private _onCanvasSizeListener(): void {\n const { canvas } = this.engine;\n this.entity.transform.setWorldPosition(canvas.width * 0.5, canvas.height * 0.5, 0);\n this._adapterSizeInScreenSpace();\n }\n\n @ignoreClone\n private _onReferenceResolutionChanged(): void {\n const realRenderMode = this._realRenderMode;\n if (\n realRenderMode === CanvasRenderMode.ScreenSpaceOverlay ||\n realRenderMode === CanvasRenderMode.ScreenSpaceCamera\n ) {\n this._adapterSizeInScreenSpace();\n }\n }\n\n private _setIsRootCanvas(isRootCanvas: boolean): void {\n if (this._isRootCanvas !== isRootCanvas) {\n this._isRootCanvas = isRootCanvas;\n this._updateCameraObserver();\n this._setRealRenderMode(this._getRealRenderMode());\n if (isRootCanvas) {\n this.entity._updateUIHierarchyVersion(UICanvas._hierarchyCounter);\n } else {\n const { _disorderedElements: disorderedElements } = this;\n disorderedElements.forEach((element: IElement) => {\n if (element instanceof UICanvas) {\n const rootCanvas = Utils.searchRootCanvasInParents(element);\n element._setIsRootCanvas(!rootCanvas);\n Utils.setRootCanvas(element, rootCanvas);\n } else {\n Utils.setRootCanvasDirty(this);\n Utils.setGroupDirty(<IGroupAble>element);\n }\n });\n disorderedElements.length = 0;\n disorderedElements.garbageCollection();\n this._orderedRenderers.length = 0;\n }\n }\n }\n\n private _getCenter(): Vector3 {\n if (this._centerDirtyFlag.flag) {\n const center = this._center;\n const uiTransform = <UITransform>this.entity.transform;\n const { pivot, size } = uiTransform;\n center.set((0.5 - pivot.x) * size.x, (0.5 - pivot.y) * size.y, 0);\n Vector3.transformCoordinate(center, uiTransform.worldMatrix, center);\n this._centerDirtyFlag.flag = false;\n }\n return this._center;\n }\n\n private _getRealRenderMode(): number {\n if (this._isRootCanvas) {\n const mode = this._renderMode;\n // @ts-ignore\n if (mode === CanvasRenderMode.ScreenSpaceCamera && !this._camera?._phasedActiveInScene) {\n return CanvasRenderMode.ScreenSpaceOverlay;\n } else {\n return mode;\n }\n } else {\n return CanvasRealRenderMode.None;\n }\n }\n\n private _setRealRenderMode(curRealMode: number): void {\n const preRealMode = this._realRenderMode;\n if (preRealMode !== curRealMode) {\n this._realRenderMode = curRealMode;\n // @ts-ignore\n const componentsManager = this.scene._componentsManager;\n switch (preRealMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._removeCanvasListener();\n case CanvasRenderMode.ScreenSpaceCamera:\n case CanvasRenderMode.WorldSpace:\n componentsManager.removeUICanvas(this, preRealMode === CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n switch (curRealMode) {\n case CanvasRenderMode.ScreenSpaceOverlay:\n this._addCanvasListener();\n case CanvasRenderMode.ScreenSpaceCamera:\n this._adapterPoseInScreenSpace();\n this._adapterSizeInScreenSpace();\n case CanvasRenderMode.WorldSpace:\n componentsManager.addUICanvas(this, curRealMode === CanvasRenderMode.ScreenSpaceOverlay);\n break;\n default:\n break;\n }\n }\n }\n\n private _isSameOrChildEntity(cameraEntity: Entity): boolean {\n const canvasEntity = this.entity;\n while (cameraEntity) {\n if (cameraEntity === canvasEntity) return true;\n cameraEntity = cameraEntity.parent;\n }\n return false;\n }\n}\n\n/**\n * @remarks Extends `CanvasRenderMode`.\n */\nenum CanvasRealRenderMode {\n None = 4\n}\n\n/**\n * @remarks Extends `EntityModifyFlags`.\n */\nexport enum EntityUIModifyFlags {\n CanvasEnableInScene = 0x4,\n GroupEnableInScene = 0x8\n}\n\nexport enum RootCanvasModifyFlags {\n None = 0x0,\n ReferenceResolutionPerUnit = 0x1,\n All = 0x1\n}\n","import { deepClone, PointerEventData, Signal } from \"@galacean/engine\";\nimport { UIInteractive } from \"../interactive/UIInteractive\";\n\nexport class Button extends UIInteractive {\n /** Signal emitted when the button is clicked. */\n @deepClone\n readonly onClick = new Signal<[PointerEventData]>();\n\n override onPointerClick(event: PointerEventData): void {\n if (!this._getGlobalInteractive()) return;\n this.onClick.invoke(event);\n }\n\n override onDestroy(): void {\n super.onDestroy();\n this.onClick.removeAll();\n }\n\n /**\n * Add a listening function for click.\n * @deprecated Use `onClick.on(listener, context)` instead.\n */\n addClicked(listener: (event: PointerEventData) => void): void {\n this.onClick.on(listener);\n }\n\n /**\n * Remove a listening function of click.\n * @deprecated Use `onClick.off(listener, context)` instead.\n */\n removeClicked(listener: (event: PointerEventData) => void): void {\n this.onClick.off(listener);\n }\n}\n","import {\n BoundingBox,\n Entity,\n ISpriteAssembler,\n ISpriteRenderer,\n MathUtil,\n RendererUpdateFlags,\n SimpleSpriteAssembler,\n SlicedSpriteAssembler,\n Sprite,\n SpriteDrawMode,\n SpriteModifyFlags,\n SpriteTileMode,\n TiledSpriteAssembler,\n assignmentClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { CanvasRenderMode } from \"../../enums/CanvasRenderMode\";\nimport { RootCanvasModifyFlags } from \"../UICanvas\";\nimport { UIRenderer, UIRendererUpdateFlags } from \"../UIRenderer\";\nimport { UITransform, UITransformModifyFlags } from \"../UITransform\";\n\n/**\n * UI element that renders an image.\n */\nexport class Image extends UIRenderer implements ISpriteRenderer {\n @ignoreClone\n private _sprite: Sprite = null;\n @ignoreClone\n private _drawMode: SpriteDrawMode;\n @ignoreClone\n private _assembler: ISpriteAssembler;\n @assignmentClone\n private _tileMode: SpriteTileMode = SpriteTileMode.Continuous;\n @assignmentClone\n private _tiledAdaptiveThreshold: number = 0.5;\n\n /**\n * The draw mode of the image.\n */\n get drawMode(): SpriteDrawMode {\n return this._drawMode;\n }\n\n set drawMode(value: SpriteDrawMode) {\n if (this._drawMode !== value) {\n this._drawMode = value;\n switch (value) {\n case SpriteDrawMode.Simple:\n this._assembler = SimpleSpriteAssembler;\n break;\n case SpriteDrawMode.Sliced:\n this._assembler = SlicedSpriteAssembler;\n break;\n case SpriteDrawMode.Tiled:\n this._assembler = TiledSpriteAssembler;\n break;\n default:\n break;\n }\n this._assembler.resetData(this);\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n\n /**\n * The tiling mode of the image. (Only works in tiled mode.)\n */\n get tileMode(): SpriteTileMode {\n return this._tileMode;\n }\n\n set tileMode(value: SpriteTileMode) {\n if (this._tileMode !== value) {\n this._tileMode = value;\n if (this.drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n }\n\n /**\n * Stretch Threshold in Tile Adaptive Mode, specified in normalized. (Only works in tiled adaptive mode.)\n */\n get tiledAdaptiveThreshold(): number {\n return this._tiledAdaptiveThreshold;\n }\n\n set tiledAdaptiveThreshold(value: number) {\n if (value !== this._tiledAdaptiveThreshold) {\n value = MathUtil.clamp(value, 0, 1);\n this._tiledAdaptiveThreshold = value;\n if (this.drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n }\n }\n }\n\n /**\n * The Sprite to render.\n */\n get sprite(): Sprite {\n return this._sprite;\n }\n\n set sprite(value: Sprite | null) {\n const lastSprite = this._sprite;\n if (lastSprite !== value) {\n if (lastSprite) {\n this._addResourceReferCount(lastSprite, -1);\n // @ts-ignore\n lastSprite._updateFlagManager.removeListener(this._onSpriteChange);\n }\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n if (value) {\n this._addResourceReferCount(value, 1);\n // @ts-ignore\n value._updateFlagManager.addListener(this._onSpriteChange);\n this.shaderData.setTexture(UIRenderer._textureProperty, value.texture);\n } else {\n this.shaderData.setTexture(UIRenderer._textureProperty, null);\n }\n this._sprite = value;\n }\n }\n\n /**\n * @internal\n */\n constructor(entity: Entity) {\n super(entity);\n this.drawMode = SpriteDrawMode.Simple;\n // @ts-ignore\n this.setMaterial(this._engine._getUIDefaultMaterial());\n this._onSpriteChange = this._onSpriteChange.bind(this);\n }\n\n /**\n * @internal\n */\n _onRootCanvasModify(flag: RootCanvasModifyFlags): void {\n if (flag & RootCanvasModifyFlags.ReferenceResolutionPerUnit) {\n const drawMode = this._drawMode;\n if (drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.All;\n } else if (drawMode === SpriteDrawMode.Sliced) {\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n }\n }\n }\n\n /**\n * @internal\n */\n _cloneTo(target: Image): void {\n // @ts-ignore\n super._cloneTo(target);\n target.sprite = this._sprite;\n target.drawMode = this._drawMode;\n }\n\n protected override _updateBounds(worldBounds: BoundingBox): void {\n const sprite = this._sprite;\n const rootCanvas = this._getRootCanvas();\n if (sprite && rootCanvas) {\n const transform = <UITransform>this._transformEntity.transform;\n const { size } = transform;\n this._assembler.updatePositions(\n this,\n transform.worldMatrix,\n size.x,\n size.y,\n transform.pivot,\n false,\n false,\n rootCanvas.referenceResolutionPerUnit\n );\n } else {\n const { worldPosition } = this._transformEntity.transform;\n worldBounds.min.copyFrom(worldPosition);\n worldBounds.max.copyFrom(worldPosition);\n }\n }\n\n protected override _render(context): void {\n const { _sprite: sprite } = this;\n const transform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = transform.size;\n if (!sprite?.texture || !width || !height) {\n return;\n }\n\n let material = this.getMaterial();\n if (!material) {\n return;\n }\n // @todo: This question needs to be raised rather than hidden.\n if (material.destroyed) {\n // @ts-ignore\n material = this._engine._getUIDefaultMaterial();\n }\n\n const alpha = this._getGlobalAlpha();\n if (this._color.a * alpha <= 0) {\n return;\n }\n\n let { _dirtyUpdateFlag: dirtyUpdateFlag } = this;\n const canvas = this._getRootCanvas();\n // Update position\n if (dirtyUpdateFlag & RendererUpdateFlags.WorldVolume) {\n this._assembler.updatePositions(\n this,\n transform.worldMatrix,\n width,\n height,\n transform.pivot,\n false,\n false,\n canvas.referenceResolutionPerUnit\n );\n dirtyUpdateFlag &= ~RendererUpdateFlags.WorldVolume;\n }\n\n // Update uv\n if (dirtyUpdateFlag & ImageUpdateFlags.UV) {\n this._assembler.updateUVs(this);\n dirtyUpdateFlag &= ~ImageUpdateFlags.UV;\n }\n\n // Update color\n if (dirtyUpdateFlag & UIRendererUpdateFlags.Color) {\n this._assembler.updateColor(this, alpha);\n dirtyUpdateFlag &= ~UIRendererUpdateFlags.Color;\n }\n\n this._dirtyUpdateFlag = dirtyUpdateFlag;\n const { engine } = context.camera;\n const renderElement = engine._renderElementPool.get();\n const subChunk = this._subChunk;\n renderElement.set(this, material, subChunk.chunk.primitive, subChunk.subMesh, this.sprite.texture, subChunk);\n renderElement.subShader = material.shader.subShaders[0];\n renderElement.priority = canvas.sortOrder;\n renderElement.distanceForSort = canvas._sortDistance;\n canvas._renderElements.push(renderElement);\n }\n\n @ignoreClone\n protected override _onTransformChanged(type: number): void {\n if (type & UITransformModifyFlags.Size && this._drawMode === SpriteDrawMode.Tiled) {\n this._dirtyUpdateFlag |= ImageUpdateFlags.All;\n }\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n }\n\n protected override _onDestroy(): void {\n const sprite = this._sprite;\n if (sprite) {\n this._addResourceReferCount(sprite, -1);\n // @ts-ignore\n sprite._updateFlagManager.removeListener(this._onSpriteChange);\n this._sprite = null;\n }\n super._onDestroy();\n }\n\n @ignoreClone\n private _onSpriteChange(type: SpriteModifyFlags): void {\n switch (type) {\n case SpriteModifyFlags.texture:\n this.shaderData.setTexture(UIRenderer._textureProperty, this.sprite.texture);\n break;\n case SpriteModifyFlags.size:\n switch (this._drawMode) {\n case SpriteDrawMode.Sliced:\n this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;\n break;\n case SpriteDrawMode.Tiled:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n break;\n default:\n break;\n }\n break;\n case SpriteModifyFlags.border:\n switch (this._drawMode) {\n case SpriteDrawMode.Sliced:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeAndUV;\n break;\n case SpriteDrawMode.Tiled:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeUVAndColor;\n break;\n default:\n break;\n }\n break;\n case SpriteModifyFlags.region:\n case SpriteModifyFlags.atlasRegionOffset:\n this._dirtyUpdateFlag |= ImageUpdateFlags.WorldVolumeAndUV;\n break;\n case SpriteModifyFlags.atlasRegion:\n this._dirtyUpdateFlag |= ImageUpdateFlags.UV;\n break;\n case SpriteModifyFlags.destroy:\n this.sprite = null;\n break;\n }\n }\n}\n\n/**\n * @remarks Extends `UIRendererUpdateFlags`.\n */\nenum ImageUpdateFlags {\n /** UV. */\n UV = 0x4,\n /** Automatic Size. */\n AutomaticSize = 0x8,\n /** WorldVolume and UV. */\n WorldVolumeAndUV = 0x5,\n /** WorldVolume, UV and Color. */\n WorldVolumeUVAndColor = 0x7,\n /** All. */\n All = 0xf\n}\n","import {\n BoundingBox,\n CharRenderInfo,\n Engine,\n Entity,\n Font,\n FontStyle,\n ITextRenderer,\n OverflowMode,\n RendererUpdateFlags,\n ShaderData,\n ShaderDataGroup,\n ShaderProperty,\n SubFont,\n TextHorizontalAlignment,\n TextUtils,\n TextVerticalAlignment,\n Texture2D,\n Vector3,\n assignmentClone,\n ignoreClone\n} from \"@galacean/engine\";\nimport { CanvasRenderMode } from \"../../enums/CanvasRenderMode\";\nimport { RootCanvasModifyFlags } from \"../UICanvas\";\nimport { UIRenderer, UIRendererUpdateFlags } from \"../UIRenderer\";\nimport { UITransform, UITransformModifyFlags } from \"../UITransform\";\n\n/**\n * UI component used to render text.\n */\nexport class Text extends UIRenderer implements ITextRenderer {\n private static _textTextureProperty = ShaderProperty.getByName(\"renderElement_TextTexture\");\n private static _worldPositions = [new Vector3(), new Vector3(), new Vector3(), new Vector3()];\n private static _charRenderInfos: CharRenderInfo[] = [];\n\n @ignoreClone\n private _textChunks = Array<TextChunk>();\n @ignoreClone\n private _subFont: SubFont = null;\n @assignmentClone\n private _text: string = \"\";\n @ignoreClone\n private _localBounds: BoundingBox = new BoundingBox();\n @assignmentClone\n private _font: Font = null;\n @assignmentClone\n private _fontSize: number = 24;\n @assignmentClone\n private _fontStyle: FontStyle = FontStyle.None;\n @assignmentClone\n private _lineSpacing: number = 0;\n @assignmentClone\n private _characterSpacing: number = 0;\n @assignmentClone\n private _horizontalAlignment: TextHorizontalAlignment = TextHorizontalAlignment.Center;\n @assignmentClone\n private _verticalAlignment: TextVerticalAlignment = TextVerticalAlignment.Center;\n @assignmentClone\n private _enableWrapping: boolean = false;\n @assignmentClone\n private _overflowMode: OverflowMode = OverflowMode.Overflow;\n\n /**\n * Rendering string for the Text.\n */\n get text(): string {\n return this._text;\n }\n\n set text(value: string) {\n value = value || \"\";\n if (this._text !== value) {\n this._text = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The font of the Text.\n */\n get font(): Font {\n return this._font;\n }\n\n set font(value: Font) {\n const lastFont = this._font;\n if (lastFont !== value) {\n lastFont && this._addResourceReferCount(lastFont, -1);\n value && this._addResourceReferCount(value, 1);\n this._font = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The font size of the Text.\n */\n get fontSize(): number {\n return this._fontSize;\n }\n\n set fontSize(value: number) {\n if (this._fontSize !== value) {\n this._fontSize = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The style of the font.\n */\n get fontStyle(): FontStyle {\n return this._fontStyle;\n }\n\n set fontStyle(value: FontStyle) {\n if (this.fontStyle !== value) {\n this._fontStyle = value;\n this._setDirtyFlagTrue(DirtyFlag.Font);\n }\n }\n\n /**\n * The space between two lines, in em (ratio of fontSize).\n */\n get lineSpacing(): number {\n return this._lineSpacing;\n }\n\n set lineSpacing(value: number) {\n if (this._lineSpacing !== value) {\n this._lineSpacing = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The space between two characters, in em (ratio of fontSize).\n */\n get characterSpacing(): number {\n return this._characterSpacing;\n }\n\n set characterSpacing(value: number) {\n if (this._characterSpacing !== value) {\n this._characterSpacing = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The horizontal alignment.\n */\n get horizontalAlignment(): TextHorizontalAlignment {\n return this._horizontalAlignment;\n }\n\n set horizontalAlignment(value: TextHorizontalAlignment) {\n if (this._horizontalAlignment !== value) {\n this._horizontalAlignment = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The vertical alignment.\n */\n get verticalAlignment(): TextVerticalAlignment {\n return this._verticalAlignment;\n }\n\n set verticalAlignment(value: TextVerticalAlignment) {\n if (this._verticalAlignment !== value) {\n this._verticalAlignment = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * Whether wrap text to next line when exceeds the width of the container.\n */\n get enableWrapping(): boolean {\n return this._enableWrapping;\n }\n\n set enableWrapping(value: boolean) {\n if (this._enableWrapping !== value) {\n this._enableWrapping = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The overflow mode.\n */\n get overflowMode(): OverflowMode {\n return this._overflowMode;\n }\n\n set overflowMode(value: OverflowMode) {\n if (this._overflowMode !== value) {\n this._overflowMode = value;\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n /**\n * The mask layer the sprite renderer belongs to.\n */\n get maskLayer(): number {\n return this._maskLayer;\n }\n\n set maskLayer(value: number) {\n this._maskLayer = value;\n }\n\n /**\n * The bounding volume of the TextRenderer.\n */\n override get bounds(): BoundingBox {\n if (this._isTextNoVisible()) {\n if (this._isContainDirtyFlag(RendererUpdateFlags.WorldVolume)) {\n const localBounds = this._localBounds;\n localBounds.min.set(0, 0, 0);\n localBounds.max.set(0, 0, 0);\n this._updateBounds(this._bounds);\n this._setDirtyFlagFalse(RendererUpdateFlags.WorldVolume);\n }\n return this._bounds;\n }\n this._isContainDirtyFlag(DirtyFlag.SubFont) && this._resetSubFont();\n this._isContainDirtyFlag(DirtyFlag.LocalPositionBounds) && this._updateLocalData();\n this._isContainDirtyFlag(DirtyFlag.WorldPosition) && this._updatePosition();\n this._isContainDirtyFlag(RendererUpdateFlags.WorldVolume) && this._updateBounds(this._bounds);\n this._setDirtyFlagFalse(DirtyFlag.Font);\n\n return this._bounds;\n }\n\n constructor(entity: Entity) {\n super(entity);\n const { engine } = this;\n // @ts-ignore\n this.font = engine._textDefaultFont;\n this.raycastEnabled = false;\n // @ts-ignore\n this.setMaterial(engine._basicResources.textDefaultMaterial);\n }\n\n /**\n * @internal\n */\n protected override _onDestroy(): void {\n if (this._font) {\n this._addResourceReferCount(this._font, -1);\n this._font = null;\n }\n\n super._onDestroy();\n\n this._freeTextChunks();\n this._textChunks = null;\n\n this._subFont && (this._subFont = null);\n }\n\n // @ts-ignore\n override _cloneTo(target: Text): void {\n // @ts-ignore\n super._cloneTo(target);\n target.font = this._font;\n target._subFont = this._subFont;\n }\n\n /**\n * @internal\n */\n _isContainDirtyFlag(type: number): boolean {\n return (this._dirtyUpdateFlag & type) != 0;\n }\n\n /**\n * @internal\n */\n _setDirtyFlagTrue(type: number): void {\n this._dirtyUpdateFlag |= type;\n }\n\n /**\n * @internal\n */\n _setDirtyFlagFalse(type: number): void {\n this._dirtyUpdateFlag &= ~type;\n }\n\n /**\n * @internal\n */\n _getSubFont(): SubFont {\n if (!this._subFont) {\n this._resetSubFont();\n }\n return this._subFont;\n }\n\n /**\n * @internal\n */\n _onRootCanvasModify(flag: RootCanvasModifyFlags): void {\n if (flag === RootCanvasModifyFlags.ReferenceResolutionPerUnit) {\n this._setDirtyFlagTrue(DirtyFlag.Position);\n }\n }\n\n protected override _updateBounds(worldBounds: BoundingBox): void {\n const transform = <UITransform>this._transformEntity.transform;\n const { x: width, y: height } = transform.size;\n const { x: pivotX, y: pivotY } = transform.pivot;\n worldBounds.min.set(-width * pivotX, -height * pivotY, 0);\n worldBounds.max.set(width * (1 - pivotX), height * (1 - pivotY), 0);\n BoundingBox.transform(worldBounds, this._transformEntity.transform.worldMatrix, worldBounds);\n }\n\n protected override _render(context): void {\n if (this._isTextNoVisible()) {\n return;\n }\n\n if (this._isContainDirtyFlag(DirtyFlag.SubFont)) {\n this._resetSubFont();\n this._setDirtyFlagFalse(DirtyFlag.SubFont);\n }\n\n const canvas = this._getRootCanvas();\n if (this._isContainDirtyFlag(DirtyFlag.LocalPositionBounds)) {\n this._updateLocalData();\n this._setDirtyFlagFalse(DirtyFlag.LocalPositionBounds);\n }\n\n if (this._isContainDirtyFlag(DirtyFlag.WorldPosition)) {\n this._updatePosition();\n this._setDirtyFlagFalse(DirtyFlag.WorldPosition);\n }\n\n if (this._isContainDirtyFlag(UIRendererUpdateFlags.Color)) {\n this._updateColor();\n this._setDirtyFlagFalse(UIRendererUpdateFlags.Color);\n }\n\n const engine = context.camera.engine;\n const textRenderElementPool = engine._textRenderElementPool;\n const material = this.getMaterial();\n const renderElements = canvas._renderElements;\n const priority = canvas.sortOrder;\n const distanceForSort = canvas._sortDistance;\n const textChunks = this._textChunks;\n const subShader = material.shader.subShaders[0];\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const { subChunk, texture } = textChunks[i];\n const renderElement = textRenderElementPool.get();\n renderElement.set(this, material, subChunk.chunk.primitive, subChunk.subMesh, texture, subChunk);\n // @ts-ignore\n renderElement.shaderData ||= new ShaderData(ShaderDataGroup.RenderElement);\n renderElement.shaderData.setTexture(Text._textTextureProperty, texture);\n renderElement.subShader = subShader;\n renderElement.priority = priority;\n renderElement.distanceForSort = distanceForSort;\n renderElements.push(renderElement);\n }\n }\n\n private _resetSubFont(): void {\n const font = this._font;\n // @ts-ignore\n this._subFont = font._getSubFont(this.fontSize, this.fontStyle);\n this._subFont.nativeFontString = TextUtils.getNativeFontString(font.name, this.fontSize, this.fontStyle);\n }\n\n private _updatePosition(): void {\n const e = this._transformEntity.transform.worldMatrix.elements;\n\n // prettier-ignore\n const e0 = e[0], e1 = e[1], e2 = e[2],\n e4 = e[4], e5 = e[5], e6 = e[6],\n e12 = e[12], e13 = e[13], e14 = e[14];\n\n const up = UIRenderer._tempVec31.set(e4, e5, e6);\n const right = UIRenderer._tempVec30.set(e0, e1, e2);\n\n const worldPositions = Text._worldPositions;\n const [worldPosition0, worldPosition1, worldPosition2, worldPosition3] = worldPositions;\n const textChunks = this._textChunks;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const { subChunk, charRenderInfos } = textChunks[i];\n for (let j = 0, m = charRenderInfos.length; j < m; ++j) {\n const charRenderInfo = charRenderInfos[j];\n const { localPositions } = charRenderInfo;\n const { x: topLeftX, y: topLeftY } = localPositions;\n\n // Top-Left\n worldPosition0.set(\n topLeftX * e0 + topLeftY * e4 + e12,\n topLeftX * e1 + topLeftY * e5 + e13,\n topLeftX * e2 + topLeftY * e6 + e14\n );\n\n // Right offset\n Vector3.scale(right, localPositions.z - topLeftX, worldPosition1);\n // Top-Right\n Vector3.add(worldPosition0, worldPosition1, worldPosition1);\n // Up offset\n Vector3.scale(up, localPositions.w - topLeftY, worldPosition2);\n // Bottom-Left\n Vector3.add(worldPosition0, worldPosition2, worldPosition3);\n // Bottom-Right\n Vector3.add(worldPosition1, worldPosition2, worldPosition2);\n\n const vertices = subChunk.chunk.vertices;\n for (let k = 0, o = subChunk.vertexArea.start + charRenderInfo.indexInChunk * 36; k < 4; ++k, o += 9) {\n worldPositions[k].copyToArray(vertices, o);\n }\n }\n }\n }\n\n private _updateColor(): void {\n const { r, g, b, a } = this._color;\n const finalAlpha = a * this._getGlobalAlpha();\n const textChunks = this._textChunks;\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const subChunk = textChunks[i].subChunk;\n const vertexArea = subChunk.vertexArea;\n const vertexCount = vertexArea.size / 9;\n const vertices = subChunk.chunk.vertices;\n for (let j = 0, o = vertexArea.start + 5; j < vertexCount; ++j, o += 9) {\n vertices[o] = r;\n vertices[o + 1] = g;\n vertices[o + 2] = b;\n vertices[o + 3] = finalAlpha;\n }\n }\n }\n\n private _updateLocalData(): void {\n // @ts-ignore\n const pixelsPerResolution = Engine._pixelsPerUnit / this._getRootCanvas().referenceResolutionPerUnit;\n const { min, max } = this._localBounds;\n const charRenderInfos = Text._charRenderInfos;\n const charFont = this._getSubFont();\n const { size, pivot } = <UITransform>this._transformEntity.transform;\n let rendererWidth = size.x;\n let rendererHeight = size.y;\n const offsetWidth = rendererWidth * (0.5 - pivot.x);\n const offsetHeight = rendererHeight * (0.5 - pivot.y);\n const characterSpacing = this._characterSpacing * this._fontSize;\n const textMetrics = this.enableWrapping\n ? TextUtils.measureTextWithWrap(\n this,\n rendererWidth * pixelsPerResolution,\n rendererHeight * pixelsPerResolution,\n this._lineSpacing * this._fontSize,\n characterSpacing\n )\n : TextUtils.measureTextWithoutWrap(\n this,\n rendererHeight * pixelsPerResolution,\n this._lineSpacing * this._fontSize,\n characterSpacing\n );\n const { height, lines, lineWidths, lineHeight, lineMaxSizes } = textMetrics;\n // @ts-ignore\n const charRenderInfoPool = this.engine._charRenderInfoPool;\n const linesLen = lines.length;\n let renderElementCount = 0;\n\n if (linesLen > 0) {\n const { horizontalAlignment } = this;\n const pixelsPerUnitReciprocal = 1.0 / pixelsPerResolution;\n rendererWidth *= pixelsPerResolution;\n rendererHeight *= pixelsPerResolution;\n const halfRendererWidth = rendererWidth * 0.5;\n const halfLineHeight = lineHeight * 0.5;\n\n let startY = 0;\n const topDiff = lineHeight * 0.5 - lineMaxSizes[0].ascent;\n const bottomDiff = lineHeight * 0.5 - lineMaxSizes[linesLen - 1].descent - 1;\n switch (this.verticalAlignment) {\n case TextVerticalAlignment.Top:\n startY = rendererHeight * 0.5 - halfLineHeight + topDiff;\n break;\n case TextVerticalAlignment.Center:\n startY = height * 0.5 - halfLineHeight - (bottomDiff - topDiff) * 0.5;\n break;\n case TextVerticalAlignment.Bottom:\n startY = height - rendererHeight * 0.5 - halfLineHeight - bottomDiff;\n break;\n }\n\n let firstLine = -1;\n let minX = Number.MAX_SAFE_INTEGER;\n let minY = Number.MAX_SAFE_INTEGER;\n let maxX = Number.MIN_SAFE_INTEGER;\n let maxY = Number.MIN_SAFE_INTEGER;\n for (let i = 0; i < linesLen; ++i) {\n const lineWidth = lineWidths[i];\n if (lineWidth > 0) {\n const line = lines[i];\n let startX = 0;\n let firstRow = -1;\n if (firstLine < 0) {\n firstLine = i;\n }\n switch (horizontalAlignment) {\n case TextHorizontalAlignment.Left:\n startX = -halfRendererWidth;\n break;\n case TextHorizontalAlignment.Center:\n startX = -lineWidth * 0.5;\n break;\n case TextHorizontalAlignment.Right:\n startX = halfRendererWidth - lineWidth;\n break;\n }\n for (let j = 0, n = line.length; j < n; ++j) {\n const char = line[j];\n const charInfo = charFont._getCharInfo(char);\n if (charInfo.h > 0) {\n firstRow < 0 && (firstRow = j);\n const charRenderInfo = (charRenderInfos[renderElementCount++] = charRenderInfoPool.get());\n const { localPositions } = charRenderInfo;\n charRenderInfo.texture = charFont._getTextureByIndex(charInfo.index);\n charRenderInfo.uvs = charInfo.uvs;\n const { w, ascent, descent } = charInfo;\n const left = (startX + offsetWidth) * pixelsPerUnitReciprocal;\n const right = (startX + w + offsetWidth) * pixelsPerUnitReciprocal;\n const top = (startY + ascent + offsetHeight) * pixelsPerUnitReciprocal;\n const bottom = (startY - descent + offsetHeight) * pixelsPerUnitReciprocal;\n localPositions.set(left, top, right, bottom);\n i === firstLine && (maxY = Math.max(maxY, top));\n minY = Math.min(minY, bottom);\n j === firstRow && (minX = Math.min(minX, left));\n maxX = Math.max(maxX, right);\n }\n startX += charInfo.xAdvance + characterSpacing;\n }\n }\n startY -= lineHeight;\n }\n if (firstLine < 0) {\n min.set(0, 0, 0);\n max.set(0, 0, 0);\n } else {\n min.set(minX, minY, 0);\n max.set(maxX, maxY, 0);\n }\n } else {\n min.set(0, 0, 0);\n max.set(0, 0, 0);\n }\n\n charFont._getLastIndex() > 0 &&\n charRenderInfos.sort((a, b) => {\n return a.texture.instanceId - b.texture.instanceId;\n });\n\n this._freeTextChunks();\n\n if (renderElementCount === 0) {\n return;\n }\n\n const textChunks = this._textChunks;\n let curTextChunk = new TextChunk();\n textChunks.push(curTextChunk);\n\n const chunkMaxVertexCount = this._getChunkManager().maxVertexCount;\n const curCharRenderInfo = charRenderInfos[0];\n let curTexture = curCharRenderInfo.texture;\n curTextChunk.texture = curTexture;\n let curCharInfos = curTextChunk.charRenderInfos;\n curCharInfos.push(curCharRenderInfo);\n\n for (let i = 1; i < renderElementCount; ++i) {\n const charRenderInfo = charRenderInfos[i];\n const texture = charRenderInfo.texture;\n if (curTexture !== texture || curCharInfos.length * 4 + 4 > chunkMaxVertexCount) {\n this._buildChunk(curTextChunk, curCharInfos.length);\n\n curTextChunk = new TextChunk();\n textChunks.push(curTextChunk);\n curTexture = texture;\n curTextChunk.texture = texture;\n curCharInfos = curTextChunk.charRenderInfos;\n }\n curCharInfos.push(charRenderInfo);\n }\n const charLength = curCharInfos.length;\n if (charLength > 0) {\n this._buildChunk(curTextChunk, charLength);\n }\n charRenderInfos.length = 0;\n }\n\n @ignoreClone\n protected override _onTransformChanged(type: number): void {\n if (type & UITransformModifyFlags.Size || type & UITransformModifyFlags.Pivot) {\n this._dirtyUpdateFlag |= DirtyFlag.LocalPositionBounds;\n }\n super._onTransformChanged(type);\n this._setDirtyFlagTrue(DirtyFlag.WorldPosition);\n }\n\n private _isTextNoVisible(): boolean {\n const size = (<UITransform>this._transformEntity.transform).size;\n return (\n !this._font ||\n this._text === \"\" ||\n this._fontSize === 0 ||\n (this.enableWrapping && size.x <= 0) ||\n (this.overflowMode === OverflowMode.Truncate && size.y <= 0) ||\n !this._getRootCanvas()\n );\n }\n\n private _buildChunk(textChunk: TextChunk, count: number) {\n const { r, g, b, a } = this.color;\n const finalAlpha = a * this._getGlobalAlpha();\n const tempIndices = CharRenderInfo.triangles;\n const tempIndicesLength = tempIndices.length;\n const subChunk = (textChunk.subChunk = this._getChunkManager().allocateSubChunk(count * 4));\n const vertices = subChunk.chunk.vertices;\n const indices = (subChunk.indices = []);\n const charRenderInfos = textChunk.charRenderInfos;\n for (let i = 0, ii = 0, io = 0, vo = subChunk.vertexArea.start + 3; i < count; ++i, io += 4) {\n const charRenderInfo = charRenderInfos[i];\n charRenderInfo.indexInChunk = i;\n\n // Set indices\n for (let j = 0; j < tempIndicesLength; ++j) {\n indices[ii++] = tempIndices[j] + io;\n }\n\n // Set uv and color for vertices\n for (let j = 0; j < 4; ++j, vo += 9) {\n const uv = charRenderInfo.uvs[j];\n uv.copyToArray(vertices, vo);\n vertices[vo + 2] = r;\n vertices[vo + 3] = g;\n vertices[vo + 4] = b;\n vertices[vo + 5] = finalAlpha;\n }\n }\n\n return subChunk;\n }\n\n private _freeTextChunks(): void {\n const textChunks = this._textChunks;\n // @ts-ignore\n const charRenderInfoPool = this.engine._charRenderInfoPool;\n const manager = this._getChunkManager();\n for (let i = 0, n = textChunks.length; i < n; ++i) {\n const textChunk = textChunks[i];\n const { charRenderInfos } = textChunk;\n for (let j = 0, m = charRenderInfos.length; j < m; ++j) {\n charRenderInfoPool.return(charRenderInfos[j]);\n }\n charRenderInfos.length = 0;\n manager.freeSubChunk(textChunk.subChunk);\n textChunk.subChunk = null;\n textChunk.texture = null;\n }\n textChunks.length = 0;\n }\n}\n\nclass TextChunk {\n charRenderInfos = new Array<CharRenderInfo>();\n texture: Texture2D;\n subChunk;\n}\n\n/**\n * @remarks Extends `UIRendererUpdateFlags`.\n */\nenum DirtyFlag {\n SubFont = 0x4,\n LocalPositionBounds = 0x8,\n WorldPosition = 0x10,\n\n // LocalPositionBounds | WorldPosition | WorldVolume\n Position = 0x19,\n Font = SubFont | Position\n}\n","import { Color, ReferResource, Sprite } from \"@galacean/engine\";\nimport { UIRenderer } from \"../../UIRenderer\";\nimport { InteractiveState, UIInteractive } from \"../UIInteractive\";\n\n/**\n * The transition behavior of UIInteractive.\n */\nexport abstract class Transition<\n T extends TransitionValueType = TransitionValueType,\n K extends UIRenderer = UIRenderer\n> {\n /** @internal */\n _interactive: UIInteractive;\n\n protected _target: K;\n protected _normal: T;\n protected _pressed: T;\n protected _hover: T;\n protected _disabled: T;\n protected _duration: number = 0;\n protected _countDown: number = 0;\n protected _initialValue: T;\n protected _finalValue: T;\n protected _currentValue: T;\n protected _finalState: InteractiveState = InteractiveState.Normal;\n\n /**\n * The normal state of the transition.\n */\n get normal(): T {\n return this._normal;\n }\n\n set normal(value: T) {\n const preNormal = this._normal;\n if (preNormal !== value) {\n this._normal = value;\n this._onStateValueDirty(InteractiveState.Normal, preNormal, value);\n }\n }\n\n /**\n * The pressed state of the transition.\n */\n get pressed(): T {\n return this._pressed;\n }\n\n set pressed(value: T) {\n const prePressed = this._pressed;\n if (prePressed !== value) {\n this._pressed = value;\n this._onStateValueDirty(InteractiveState.Pressed, prePressed, value);\n }\n }\n\n /**\n * The hover state of the transition.\n */\n get hover(): T {\n return this._hover;\n }\n\n set hover(value: T) {\n const preHover = this._hover;\n if (preHover !== value) {\n this._hover = value;\n this._onStateValueDirty(InteractiveState.Hover, preHover, value);\n }\n }\n\n /**\n * The disabled state of the transition.\n */\n get disabled(): T {\n return this._disabled;\n }\n\n set disabled(value: T) {\n const preDisabled = this._disabled;\n if (preDisabled !== value) {\n this._disabled = value;\n this._onStateValueDirty(InteractiveState.Disable, preDisabled, value);\n }\n }\n\n /**\n * The target of the transition.\n */\n get target(): K {\n return this._target;\n }\n\n set target(value: K) {\n if (this._target !== value) {\n this._target = value;\n value?.enabled && this._applyValue(this._currentValue);\n }\n }\n\n /**\n * The duration of the transition.\n */\n get duration(): number {\n return this._duration;\n }\n\n set duration(value: number) {\n if (value < 0) value = 0;\n const preDuration = this._duration;\n if (preDuration !== value) {\n this._duration = value;\n if (this._countDown > 0) {\n this._countDown = value * (1 - this._countDown / preDuration);\n this._updateValue();\n }\n }\n }\n\n destroy(): void {\n this._interactive?.removeTransition(this);\n this._target = null;\n }\n\n /**\n * @internal\n */\n _setState(state: InteractiveState, instant: boolean) {\n this._finalState = state;\n const value = this._getValueByState(state);\n if (instant) {\n this._countDown = 0;\n this._initialValue = this._finalValue = value;\n } else {\n this._countDown = this._duration;\n this._initialValue = this._getTargetValueCopy();\n this._finalValue = value;\n }\n this._updateValue();\n }\n\n /**\n * @internal\n */\n _onUpdate(delta: number): void {\n if (this._countDown > 0) {\n this._countDown -= delta;\n this._updateValue();\n }\n }\n\n protected abstract _getTargetValueCopy(): T;\n protected abstract _updateCurrentValue(srcValue: T, destValue: T, weight: number): void;\n protected abstract _applyValue(value: T): void;\n\n protected _onStateValueDirty(state: InteractiveState, preValue: T, curValue: T): void {\n // @ts-ignore\n preValue instanceof ReferResource && preValue._addReferCount(-1);\n // @ts-ignore\n curValue instanceof ReferResource && curValue._addReferCount(1);\n if (this._finalState === state) {\n this._finalValue = curValue;\n this._updateValue();\n }\n }\n\n protected _updateValue() {\n const weight = this._duration ? 1 - this._countDown / this._duration : 1;\n this._updateCurrentValue(this._initialValue, this._finalValue, weight);\n this._target?.enabled && this._applyValue(this._currentValue);\n }\n\n private _getValueByState(state: InteractiveState): T {\n switch (state) {\n case InteractiveState.Normal:\n return this.normal;\n case InteractiveState.Pressed:\n return this.pressed;\n case InteractiveState.Hover:\n return this.hover;\n case InteractiveState.Disable:\n return this.disabled;\n }\n }\n}\n\nexport type TransitionValueType = number | Sprite | Color;\n","import { Color } from \"@galacean/engine\";\nimport { UIRenderer } from \"../../UIRenderer\";\nimport { InteractiveState } from \"../UIInteractive\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Color transition.\n */\nexport class ColorTransition extends Transition<Color, UIRenderer> {\n private _color: Color = new Color();\n constructor() {\n super();\n this._normal = new Color(1, 1, 1, 1);\n this._hover = new Color(0.9130986517934192, 0.9130986517934192, 0.9130986517934192, 1);\n this._pressed = new Color(0.5775804404296506, 0.5775804404296506, 0.5775804404296506, 1);\n this._disabled = new Color(0.5775804404296506, 0.5775804404296506, 0.5775804404296506, 1);\n this._duration = 0.1;\n this._currentValue = new Color();\n\n this._onNormalValueChanged = this._onNormalValueChanged.bind(this);\n this._onHoverValueChanged = this._onHoverValueChanged.bind(this);\n this._onPressedValueChanged = this._onPressedValueChanged.bind(this);\n this._onDisabledValueChanged = this._onDisabledValueChanged.bind(this);\n\n // @ts-ignore\n this._normal._onValueChanged = this._onNormalValueChanged;\n // @ts-ignore\n this._hover._onValueChanged = this._onHoverValueChanged;\n // @ts-ignore\n this._pressed._onValueChanged = this._onPressedValueChanged;\n // @ts-ignore\n this._disabled._onValueChanged = this._onDisabledValueChanged;\n }\n\n private _onNormalValueChanged(): void {\n if (this._finalState === InteractiveState.Normal) {\n this._finalValue = this._normal;\n this._updateValue();\n }\n }\n\n private _onHoverValueChanged(): void {\n if (this._finalState === InteractiveState.Hover) {\n this._finalValue = this._hover;\n this._updateValue();\n }\n }\n\n private _onPressedValueChanged(): void {\n if (this._finalState === InteractiveState.Pressed) {\n this._finalValue = this._pressed;\n this._updateValue();\n }\n }\n\n private _onDisabledValueChanged(): void {\n if (this._finalState === InteractiveState.Disable) {\n this._finalValue = this._disabled;\n this._updateValue();\n }\n }\n\n protected _getTargetValueCopy(): Color {\n const color = this._color;\n color.copyFrom(this._target?.color || this._normal);\n return color;\n }\n\n protected override _updateCurrentValue(srcValue: Color, destValue: Color, weight: number): void {\n if (weight >= 1) {\n this._currentValue.copyFrom(destValue);\n } else {\n Color.lerp(srcValue, destValue, weight, this._currentValue);\n }\n }\n\n protected override _applyValue(value: Color): void {\n this._target.color = value;\n }\n}\n","import { UIRenderer } from \"../../UIRenderer\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Scale transition.\n */\nexport class ScaleTransition extends Transition<number, UIRenderer> {\n constructor() {\n super();\n this._normal = 1;\n this._hover = 1;\n this._pressed = 1.2;\n this._disabled = 1;\n this._duration = 0.1;\n }\n\n protected _getTargetValueCopy(): number {\n return this._target?.entity.transform.scale.x || this._normal;\n }\n\n protected override _updateCurrentValue(srcValue: number, destValue: number, weight: number): void {\n this._currentValue = weight >= 1 ? destValue : (destValue - srcValue) * weight + srcValue;\n }\n\n protected override _applyValue(value: number): void {\n this._target.entity.transform.setScale(value, value, value);\n }\n}\n","import { Sprite } from \"@galacean/engine\";\nimport { Image } from \"../../advanced/Image\";\nimport { Transition } from \"./Transition\";\n\n/**\n * Sprite transition.\n */\nexport class SpriteTransition extends Transition<Sprite, Image> {\n /**\n * @internal\n */\n override destroy(): void {\n super.destroy();\n if (this._normal) {\n // @ts-ignore\n this._normal._addReferCount(-1);\n this._normal = null;\n }\n if (this._hover) {\n // @ts-ignore\n this._hover._addReferCount(-1);\n this._hover = null;\n }\n if (this._pressed) {\n // @ts-ignore\n this._pressed._addReferCount(-1);\n this._pressed = null;\n }\n if (this._disabled) {\n // @ts-ignore\n this._disabled._addReferCount(-1);\n this._disabled = null;\n }\n this._initialValue = this._currentValue = this._finalValue = null;\n this._target = null;\n }\n\n protected _getTargetValueCopy(): Sprite {\n return this._target?.sprite;\n }\n\n protected override _updateCurrentValue(srcValue: Sprite, destValue: Sprite, weight: number): void {\n this._currentValue = weight >= 1 ? destValue : srcValue;\n }\n\n protected override _applyValue(value: Sprite): void {\n this._target.sprite = value;\n }\n}\n","import { Entity, Vector3 } from \"@galacean/engine\";\nimport { UIRenderer } from \"../component/UIRenderer\";\n\n/**\n * @internal\n */\nexport class UIHitResult {\n entity: Entity = null;\n distance: number = 0;\n point: Vector3 = new Vector3();\n normal: Vector3 = new Vector3();\n component: UIRenderer = null;\n}\n","import {\n CameraClearFlags,\n DisorderedArray,\n Entity,\n Pointer,\n PointerEventData,\n PointerEventEmitter,\n Scene,\n registerPointerEventEmitter\n} from \"@galacean/engine\";\nimport { UICanvas } from \"..\";\nimport { UIRenderer } from \"../component/UIRenderer\";\nimport { UIHitResult } from \"./UIHitResult\";\n\n/**\n * @internal\n */\n@registerPointerEventEmitter()\nexport class UIPointerEventEmitter extends PointerEventEmitter {\n private static _MAX_PATH_DEPTH = 2048;\n private static _tempSet: Set<number> = new Set();\n private static _path: Entity[] = [];\n private static _tempArray0: Entity[] = [];\n private static _tempArray1: Entity[] = [];\n\n private _enteredPath: Entity[] = [];\n private _pressedPath: Entity[] = [];\n private _draggedPath: Entity[] = [];\n\n _init(): void {\n this._hitResult = new UIHitResult();\n }\n\n override processRaycast(scenes: readonly Scene[], pointer: Pointer): void {\n const { _tempRay: ray } = PointerEventEmitter;\n const hitResult = this._hitResult;\n const { position } = pointer;\n const { x, y } = position;\n for (let i = scenes.length - 1; i >= 0; i--) {\n const scene = scenes[i];\n if (!scene.isActive || scene.destroyed) continue;\n // @ts-ignore\n const componentsManager = scene._componentsManager;\n // Overlay Canvas\n let canvasElements: DisorderedArray<UICanvas> = componentsManager._overlayCanvases;\n // Screen to world ( Assume that world units have a one-to-one relationship with pixel units )\n ray.origin.set(position.x, scene.engine.canvas.height - position.y, 1);\n ray.direction.set(0, 0, -1);\n for (let j = canvasElements.length - 1; j >= 0; j--) {\n if (canvasElements.get(j)._raycast(ray, hitResult)) {\n this._updateRaycast((<UIHitResult>hitResult).component, pointer);\n return;\n }\n }\n\n const cameras = componentsManager._activeCameras;\n for (let j = cameras.length - 1; j >= 0; j--) {\n const camera = cameras.get(j);\n if (camera.renderTarget) continue;\n const { pixelViewport } = camera;\n if (\n x < pixelViewport.x ||\n y < pixelViewport.y ||\n x > pixelViewport.x + pixelViewport.width ||\n y > pixelViewport.y + pixelViewport.height\n ) {\n continue;\n }\n camera.screenPointToRay(pointer.position, ray);\n\n // Other canvases\n const isOrthographic = camera.isOrthographic;\n const { worldPosition: cameraPosition, worldForward: cameraForward } = camera.entity.transform;\n // Sort by rendering order\n canvasElements = componentsManager._canvases;\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n canvasElements.get(k)._updateSortDistance(isOrthographic, cameraPosition, cameraForward);\n }\n canvasElements.sort((a, b) => a.sortOrder - b.sortOrder || a._sortDistance - b._sortDistance);\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n canvasElements.get(k)._canvasIndex = k;\n }\n const farClipPlane = camera.farClipPlane;\n // Post-rendering first detection\n for (let k = 0, n = canvasElements.length; k < n; k++) {\n const canvas = canvasElements.get(k);\n if (!canvas._canDispatchEvent(camera)) continue;\n if (canvas._raycast(ray, hitResult, farClipPlane)) {\n this._updateRaycast((<UIHitResult>hitResult).component, pointer);\n return;\n }\n }\n if (camera.clearFlags & CameraClearFlags.Color) {\n this._updateRaycast(null);\n return;\n }\n }\n this._updateRaycast(null);\n }\n }\n\n override processDrag(pointer: Pointer): void {\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireDrag);\n }\n }\n\n override processDown(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n const pressedPath = this._pressedPath;\n const draggedPath = this._draggedPath;\n const length = (draggedPath.length = pressedPath.length = enteredPath.length);\n if (length > 0) {\n for (let i = 0; i < length; i++) {\n pressedPath[i] = draggedPath[i] = enteredPath[i];\n }\n this._bubble(pressedPath, pointer, this._fireDown);\n this._bubble(draggedPath, pointer, this._fireBeginDrag);\n }\n }\n\n override processUp(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n const pressedPath = this._pressedPath;\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireUp);\n if (pressedPath.length > 0) {\n const common = UIPointerEventEmitter._tempArray0;\n if (this._findCommonInPath(enteredPath, pressedPath, common)) {\n const eventData = this._createEventData(pointer);\n for (let i = 0, n = common.length; i < n; i++) {\n this._fireClick(common[i], eventData);\n }\n common.length = 0;\n }\n }\n }\n\n pressedPath.length = 0;\n\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireEndDrag);\n draggedPath.length = 0;\n }\n\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireDrop);\n }\n }\n\n override processLeave(pointer: Pointer): void {\n const enteredPath = this._enteredPath;\n if (enteredPath.length > 0) {\n this._bubble(enteredPath, pointer, this._fireExit);\n enteredPath.length = 0;\n }\n\n const draggedPath = this._draggedPath;\n if (draggedPath.length > 0) {\n this._bubble(draggedPath, pointer, this._fireEndDrag);\n draggedPath.length = 0;\n }\n\n this._pressedPath.length = 0;\n }\n\n override dispose(): void {\n this._enteredPath.length = this._pressedPath.length = this._draggedPath.length = 0;\n }\n\n private _updateRaycast(element: UIRenderer, pointer: Pointer = null): void {\n const enteredPath = this._enteredPath;\n const curPath = this._composedPath(element, UIPointerEventEmitter._path);\n const add = UIPointerEventEmitter._tempArray0;\n const del = UIPointerEventEmitter._tempArray1;\n if (this._findDiffInPath(enteredPath, curPath, add, del)) {\n const eventData = this._createEventData(pointer);\n for (let i = 0, n = add.length; i < n; i++) {\n this._fireEnter(add[i], eventData);\n }\n for (let i = 0, n = del.length; i < n; i++) {\n this._fireExit(del[i], eventData);\n }\n\n const length = (enteredPath.length = curPath.length);\n for (let i = 0; i < length; i++) {\n enteredPath[i] = curPath[i];\n }\n add.length = del.length = 0;\n }\n curPath.length = 0;\n }\n\n private _composedPath(element: UIRenderer, path: Entity[]): Entity[] {\n if (!element) {\n path.length = 0;\n return path;\n }\n let entity = (path[0] = element.entity);\n let i = 1;\n const rootEntity = element._getRootCanvas().entity;\n for (; i < UIPointerEventEmitter._MAX_PATH_DEPTH && !!entity && entity !== rootEntity; i++) {\n entity = path[i] = entity.parent;\n }\n path.length = i;\n return path;\n }\n\n private _findCommonInPath(prePath: Entity[], curPath: Entity[], common: Entity[]): boolean {\n const idSet = UIPointerEventEmitter._tempSet;\n idSet.clear();\n for (let i = 0, n = prePath.length; i < n; i++) {\n idSet.add(prePath[i].instanceId);\n }\n let hasCommon = false;\n for (let i = 0, n = curPath.length; i < n; i++) {\n const entity = curPath[i];\n if (idSet.has(entity.instanceId)) {\n common.push(entity);\n hasCommon = true;\n }\n }\n return hasCommon;\n }\n\n private _findDiffInPath(prePath: Entity[], curPath: Entity[], add: Entity[], del: Entity[]): boolean {\n const idSet = UIPointerEventEmitter._tempSet;\n idSet.clear();\n let changed = false;\n for (let i = 0, n = prePath.length; i < n; i++) {\n idSet.add(prePath[i].instanceId);\n }\n for (let i = 0, n = curPath.length; i < n; i++) {\n const entity = curPath[i];\n if (!idSet.has(entity.instanceId)) {\n add.push(entity);\n changed = true;\n }\n }\n idSet.clear();\n for (let i = 0, n = curPath.length; i < n; i++) {\n idSet.add(curPath[i].instanceId);\n }\n for (let i = 0, n = prePath.length; i < n; i++) {\n const entity = prePath[i];\n if (!idSet.has(entity.instanceId)) {\n del.push(entity);\n changed = true;\n }\n }\n return changed;\n }\n\n private _bubble(path: Entity[], pointer: Pointer, fireEvent: FireEvent): void {\n const length = path.length;\n if (length <= 0) return;\n const eventData = this._createEventData(pointer);\n for (let i = 0; i < length; i++) {\n fireEvent(path[i], eventData);\n }\n }\n}\n\ntype FireEvent = (entity: Entity, eventData: PointerEventData) => void;\n","import { Engine, Entity, Loader, Material, Shader } from \"@galacean/engine\";\nimport * as GUIComponent from \"./component\";\nexport * from \"./component\";\nexport { CanvasRenderMode } from \"./enums/CanvasRenderMode\";\nexport { HorizontalAlignmentMode } from \"./enums/HorizontalAlignmentMode\";\nexport { ResolutionAdaptationMode } from \"./enums/ResolutionAdaptationMode\";\nexport { VerticalAlignmentMode } from \"./enums/VerticalAlignmentMode\";\nexport { UIPointerEventEmitter } from \"./input/UIPointerEventEmitter\";\n\nexport class EngineExtension {\n _uiDefaultMaterial: Material;\n _getUIDefaultMaterial(): Material {\n if (!this._uiDefaultMaterial) {\n const shader = _getOrCreateUIShader();\n // @ts-ignore\n const material = new Material(this, shader);\n material.isGCIgnored = true;\n this._uiDefaultMaterial = material;\n }\n return this._uiDefaultMaterial;\n }\n}\n\nexport class EntityExtension {\n _uiHierarchyVersion = 0;\n _updateUIHierarchyVersion(version: number): void {\n if (this._uiHierarchyVersion !== version) {\n this._uiHierarchyVersion = version;\n // @ts-ignore\n this.parent?._updateUIHierarchyVersion(version);\n }\n }\n}\n\ndeclare module \"@galacean/engine\" {\n interface Engine {\n // @internal\n _uiDefaultMaterial: Material;\n // @internal\n _getUIDefaultMaterial(): Material;\n }\n interface Entity {\n // @internal\n _uiHierarchyVersion: number;\n // @internal\n _updateUIHierarchyVersion(version: number): void;\n }\n}\n\nfunction ApplyMixins(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}\n\nApplyMixins(Engine, [EngineExtension]);\nApplyMixins(Entity, [EntityExtension]);\n\n/**\n * Register GUI components for the editor.\n */\nexport function registerGUI() {\n for (let key in GUIComponent) {\n Loader.registerClass(key, GUIComponent[key]);\n }\n _getOrCreateUIShader();\n}\n\nfunction _getOrCreateUIShader(): Shader {\n return Shader.find(\"2D/UIDefault\");\n}\n"],"names":["UIGroup","entity","_indexInGroup","_indexInRootCanvas","_disorderedElements","DisorderedArray","_globalAlpha","_globalInteractive","_alpha","_interactive","_ignoreParentGroup","_rootCanvasListeningEntities","_groupListeningEntities","_isRootCanvasDirty","_isGroupDirty","_groupDirtyFlags","_rootCanvasListener","bind","_groupListener","_getGlobalAlpha","_isContainDirtyFlag","parentGroup","_getGroup","_setDirtyFlagFalse","_getGlobalInteractive","_onEnableInScene","Utils","setRootCanvasDirty","setGroupDirty","_dispatchModify","EntityUIModifyFlags","GroupEnableInScene","_onDisableInScene","cleanRootCanvas","cleanGroup","disorderedElements","forEach","element","length","garbageCollection","_getRootCanvas","setRootCanvas","searchRootCanvasInParents","_rootCanvas","setGroup","searchGroupInParents","_group","flag","EntityModifyFlags","Parent","CanvasEnableInScene","_onGroupModify","flags","isPass","_isContainDirtyFlags","_setDirtyFlagTrue","targetDirtyFlags","type","ignoreParentGroup","value","interactive","alpha","Math","max","min","Component","GroupModifyFlags","_registerRootCanvas","_onRootCanvasModify","RootCanvasModifyFlags","All","rootCanvas","fromEntity","UICanvas","parent","toEntity","_registerListener","_unRegisterListener","components","_components","i","n","component","enabled","_isRootCanvas","_registerGroup","group","rootCanvasParent","canvas","preCanvas","replaced","deleteByIndex","add","preGroup","root","listener","listeningEntities","count","preEntity","_unRegisterModifyListener","_registerModifyListener","UIBatchSorter","sort","elements","canvasWorldMatrix","gridDim","_gridDim","entries","_entries","grid","_grid","dirtyCells","_dirtyCells","localBoundsPool","_localBoundsPool","worldToLocal","_worldToLocal","Matrix","invert","push","SortEntry","row","k","unionMinX","Infinity","unionMinY","unionMaxX","unionMaxY","localBounds","BoundingBox","transform","bounds","x","y","cellSizeX","cellSizeY","maxCell","materialId","material","instanceId","textureId","texture","minCellX","floor","maxCellX","minCellY","maxCellY","maxDepth","maxDepthIncompatible","cellY","cellX","cell","j","m","other","_rectOverlap","otherDepth","depth","otherIncompatible","entry","hierarchyIndex","_quickSort","_compareEntries","a","b","Array","CanvasRenderMode","ResolutionAdaptationMode","HorizontalAlignmentMode","VerticalAlignmentMode","UITransform","_size","Vector2","_pivot","_rect","Rect","_alignLeft","_alignRight","_alignCenter","_alignTop","_alignBottom","_alignMiddle","_horizontalAlignment","None","_verticalAlignment","_onSizeChanged","_onPivotChanged","_onValueChanged","_parentChange","_isParentDirty","_updateWorldFlagWithParentRectChange","TransformModifyFlags","WmWpWeWqWsWus","_cloneTo","target","pivot","size","copyFrom","_onLocalMatrixChanging","_updatePositionByAlignment","LocalMatrix","_onWorldMatrixChanging","_onPositionChanged","_onWorldPositionChanged","WorldPosition","parentRect","_getParentTransform","position","rect","Left","LeftAndRight","Center","width","Right","Top","height","Middle","Bottom","TopAndBottom","_updateSizeByAlignment","_updateRectBySizeAndPivot","set","_updateWorldFlagWithSelfRectChange","_entity","_updateFlagManager","dispatch","worldFlags","WmWp","_worldAssociatedChange","children","parentChange","selfChange","horizontalAlignment","verticalAlignment","containDirtyFlags","alignLeft","Number","isFinite","MathUtil","equals","alignRight","alignCenter","alignTop","alignBottom","alignMiddle","Transform","UITransformModifyFlags","UIRenderer","raycastPadding","Vector4","_raycastEnabled","_color","Color","_dirtyUpdateFlag","RendererUpdateFlags","WorldVolume","_onColorChanged","_canBatch","preElement","curElement","VertexMergeBatcher","canBatchSprite","_batch","batch","_updateTransformShaderData","context","onlyMVP","_updateWorldSpaceTransformShaderData","_prepareRender","_renderFrameCount","engine","time","frameCount","_update","_render","ShaderMacroCollection","unionCollection","camera","_globalShaderMacro","shaderData","_macroCollection","_overrideUpdate","scene","_componentsManager","addOnUpdateRenderers","_updateUIHierarchyVersion","_hierarchyCounter","removeOnUpdateRenderers","Child","GlobalAlpha","_getChunkManager","_batcherManager","primitiveChunkManagerUI","_raycast","ray","out","distance","MAX_SAFE_INTEGER","plane","_tempPlane","_transformEntity","normal","worldForward","Vector3","dot","worldPosition","curDistance","intersectPlane","hitPointWorld","getPoint","_tempVec30","worldMatrixInv","_tempMat","worldMatrix","localPosition","_tempVec31","transformCoordinate","_hitTest","point","uiTransform","pivotX","pivotY","paddingLeft","z","paddingRight","w","paddingTop","paddingBottom","_onDestroy","_subChunk","freeSubChunk","color","raycastEnabled","Renderer","Plane","_textureProperty","ShaderProperty","getByName","AutoAdd","UIRendererUpdateFlags","UIInteractive","_globalInteractiveDirty","_transitions","_state","_isPointerInside","_isPointerDragging","addTransition","transition","removeTransition","_setState","transitions","lastOneIndex","clearTransitions","onUpdate","deltaTime","_onUpdate","onPointerBeginDrag","_updateState","onPointerEndDrag","onPointerEnter","onPointerExit","onDestroy","destroy","GlobalInteractive","globalInteractive","instant","state","_getInteractiveState","Script","InteractiveState","_canvasIndex","_renderElements","_batchedRenderElements","_sortDistance","_orderedRenderers","_realRenderMode","_renderMode","WorldSpace","_resolutionAdaptationMode","HeightAdaptation","_sortOrder","_distance","_referenceResolution","_referenceResolutionPerUnit","_hierarchyVersion","_center","_onCanvasSizeListener","_onCameraModifyListener","_onCameraTransformListener","_onReferenceResolutionChanged","_centerDirtyFlag","registerWorldChangeFlag","renderers","_getRenderers","_canRender","ScreenSpaceCamera","_camera","_canDispatchEvent","realMode","ScreenSpaceOverlay","assignedCamera","_phasedActiveInScene","mode","enableFrustumCulling","cullingMask","_frustum","frustum","renderElements","virtualCamera","_updateSortDistance","isOrthographic","forward","renderer","layer","intersectsBox","batchedRenderElements","subDistancePriority","cameraPosition","cameraForward","boundsCenter","_getCenter","_tempVec3","subtract","distanceSquared","_setIsRootCanvas","_onDisable","param","renderMode","uiHierarchyVersion","_uiHierarchyVersion","_walk","_tempGroupAbleList","_adapterPoseInScreenSpace","realRenderMode","cameraEntity","_isSameOrChildEntity","cameraTransform","cameraWorldForward","setWorldPosition","cameraWorldPosition","worldRotationQuaternion","_adapterSizeInScreenSpace","curWidth","curHeight","orthographicSize","tan","degreeToRadian","fieldOfView","aspectRatio","expectX","expectY","expectZ","WidthAdaptation","BothAdaptation","ExpandAdaptation","ShrinkAdaptation","affineTransformation","tempGroupAbleList","groupAbleCount","child","isActive","_updateCameraObserver","preCamera","_cameraObserver","removeListener","addListener","CameraModifyFlags","ProjectionType","AspectRatio","FieldOfView","OrthographicSize","DisableInScene","_setRealRenderMode","EnableInScene","_addCanvasListener","_sizeUpdateFlagManager","_removeCanvasListener","isRootCanvas","_getRealRenderMode","center","curRealMode","preRealMode","componentsManager","removeUICanvas","addUICanvas","canvasEntity","referenceResolutionPerUnit","referenceResolution","preMode","Logger","warn","preRenderMode","curRenderMode","renderCamera","resolutionAdaptationMode","sortOrder","_overlayCanvasesSortingFlag","Button","onClick","Signal","onPointerClick","event","invoke","removeAll","addClicked","on","removeClicked","off","Image","_sprite","_tileMode","SpriteTileMode","Continuous","_tiledAdaptiveThreshold","drawMode","SpriteDrawMode","Simple","setMaterial","_engine","_getUIDefaultMaterial","_onSpriteChange","ReferenceResolutionPerUnit","_drawMode","Tiled","Sliced","sprite","_updateBounds","worldBounds","_assembler","updatePositions","getMaterial","destroyed","dirtyUpdateFlag","updateUVs","updateColor","renderElement","_renderElementPool","get","subChunk","chunk","primitive","subMesh","subShader","shader","subShaders","priority","distanceForSort","_onTransformChanged","Size","_addResourceReferCount","SpriteModifyFlags","setTexture","border","region","atlasRegionOffset","atlasRegion","SimpleSpriteAssembler","SlicedSpriteAssembler","TiledSpriteAssembler","resetData","tileMode","tiledAdaptiveThreshold","clamp","lastSprite","Text","_textChunks","_subFont","_text","_localBounds","_font","_fontSize","_fontStyle","FontStyle","_lineSpacing","_characterSpacing","TextHorizontalAlignment","TextVerticalAlignment","_enableWrapping","_overflowMode","OverflowMode","Overflow","font","_textDefaultFont","_basicResources","textDefaultMaterial","_freeTextChunks","_getSubFont","_resetSubFont","_isTextNoVisible","_updateLocalData","_updatePosition","_updateColor","textRenderElementPool","_textRenderElementPool","textChunks","ShaderData","ShaderDataGroup","RenderElement","_textTextureProperty","fontSize","fontStyle","nativeFontString","TextUtils","getNativeFontString","name","e","e0","e1","e2","e4","e5","e6","e12","e13","e14","up","right","worldPositions","_worldPositions","worldPosition0","worldPosition1","worldPosition2","worldPosition3","charRenderInfos","charRenderInfo","localPositions","topLeftY","topLeftX","scale","vertices","o","vertexArea","start","indexInChunk","copyToArray","r","g","finalAlpha","vertexCount","pixelsPerResolution","Engine","_pixelsPerUnit","_charRenderInfos","charFont","rendererWidth","rendererHeight","offsetWidth","offsetHeight","characterSpacing","textMetrics","enableWrapping","measureTextWithWrap","measureTextWithoutWrap","lines","lineWidths","lineHeight","lineMaxSizes","charRenderInfoPool","_charRenderInfoPool","linesLen","renderElementCount","pixelsPerUnitReciprocal","halfRendererWidth","halfLineHeight","startY","topDiff","ascent","bottomDiff","descent","firstLine","minX","minY","maxX","MIN_SAFE_INTEGER","maxY","lineWidth","line","startX","firstRow","char","charInfo","_getCharInfo","h","_getTextureByIndex","index","uvs","left","top","bottom","xAdvance","_getLastIndex","curTextChunk","TextChunk","chunkMaxVertexCount","maxVertexCount","curCharRenderInfo","curTexture","curCharInfos","_buildChunk","charLength","Pivot","overflowMode","Truncate","textChunk","tempIndices","CharRenderInfo","triangles","tempIndicesLength","allocateSubChunk","indices","ii","io","vo","uv","manager","return","text","lastFont","lineSpacing","maskLayer","_maskLayer","_bounds","Transition","_duration","_countDown","_finalState","Normal","_target","_getValueByState","_initialValue","_finalValue","_getTargetValueCopy","_updateValue","delta","_onStateValueDirty","preValue","curValue","ReferResource","_addReferCount","weight","_updateCurrentValue","_applyValue","_currentValue","Pressed","pressed","Hover","hover","Disable","disabled","_normal","preNormal","_pressed","prePressed","_hover","preHover","_disabled","preDisabled","duration","preDuration","ColorTransition","_onNormalValueChanged","_onHoverValueChanged","_onPressedValueChanged","_onDisabledValueChanged","srcValue","destValue","lerp","ScaleTransition","setScale","SpriteTransition","UIHitResult","UIPointerEventEmitter","_enteredPath","_pressedPath","_draggedPath","_init","_hitResult","processRaycast","scenes","pointer","PointerEventEmitter","_tempRay","hitResult","canvasElements","_overlayCanvases","origin","direction","_updateRaycast","cameras","_activeCameras","renderTarget","pixelViewport","screenPointToRay","_canvases","farClipPlane","clearFlags","CameraClearFlags","processDrag","draggedPath","_bubble","_fireDrag","processDown","enteredPath","pressedPath","_fireDown","_fireBeginDrag","processUp","_fireUp","common","_tempArray0","_findCommonInPath","eventData","_createEventData","_fireClick","_fireEndDrag","_fireDrop","processLeave","_fireExit","dispose","curPath","_composedPath","_path","del","_tempArray1","_findDiffInPath","_fireEnter","path","rootEntity","_MAX_PATH_DEPTH","prePath","idSet","_tempSet","clear","hasCommon","has","changed","fireEvent","Set","EngineExtension","_uiDefaultMaterial","_getOrCreateUIShader","Material","isGCIgnored","EntityExtension","version","ApplyMixins","derivedCtor","baseCtors","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","Entity","registerGUI","key","GUIComponent","Loader","registerClass","Shader","find"],"mappings":";;AAAA,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,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;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;AA2QD;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;;ACrUO,IAAA,OAAA,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,OAAAA,CA0HCC,MAAc,EAAA;;gBACxB,SAAMA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,mBAxHRC,KAAAA,CAAAA,aAAAA,GAAwB,CAAC,CACzB,mBAEAC,KAAAA,CAAAA,kBAAAA,GAA6B,CAAC,CAAA,mBAO9BC,KAAAA,CAAAA,mBAAAA,GAAmD,IAAIC,eAEvD,EAAA,yBAEAC,YAAe,GAAA,CAAA,mBACD,KAAA,CAEdC,kBAAqB,GAAA,IAAA,EAAA,KAAA,CAGbC,SAAS,CAETC,EAAAA,KAAAA,CAAAA,YAAAA,GAAe,YAEfC,kBAAqB,GAAA,KAAA,mBAI7BC,KAAAA,CAAAA,4BAAAA,GAAyC,EAAE,mBAC7B,KAAA,CAEdC,0BAAoC,EAAE,mBACxB,KAAA,CAEdC,kBAA8B,GAAA,KAAA,mBAG9BC,KAAAA,CAAAA,aAAAA,GAAyB,KACzB,mBAEAC,KAAAA,CAAAA,gBAAAA,GAAAA,CAAAA,CAAAA;AAiFE,QAAA,KAAA,CAAKC,mBAAmB,GAAG,KAAKA,CAAAA,mBAAmB,CAACC,IAAI,CAAA,KAAA,CAAA,CAAA;AACxD,QAAA,KAAA,CAAKC,cAAc,GAAG,KAAKA,CAAAA,cAAc,CAACD,IAAI,CAAA,KAAA,CAAA,CAAA;;;AA7HrCjB,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AA0FX;;MAGAmB,MAAAA,CAAAA,eAWC,GAXDA,SAAAA,eAAAA,GAAAA;QACE,IAAI,IAAI,CAACC,mBAAmB,CAAgC,CAAA,CAAA,EAAA;YAC1D,IAAI,IAAI,CAACV,kBAAkB,EAAE;AAC3B,gBAAA,IAAI,CAACJ,YAAY,GAAG,IAAI,CAACE,MAAM,CAAA;aAC1B,MAAA;gBACL,IAAMa,WAAAA,GAAc,IAAI,CAACC,SAAS,EAAA,CAAA;AAClC,gBAAA,IAAI,CAAChB,YAAY,GAAG,IAAI,CAACE,MAAM,IAAIa,WAAcA,GAAAA,WAAAA,CAAYF,eAAe,EAAA,GAAK,CAAA,CAAA,CAAA;AACnF,aAAA;AACA,YAAA,IAAI,CAACI,kBAAkB,CAAA,CAAA,CAAA,CAAA;AACzB,SAAA;QACA,OAAO,IAAI,CAACjB,YAAY,CAAA;AAC1B,KAAA,CAAA;AAEA;;MAGAkB,MAAAA,CAAAA,qBAWC,GAXDA,SAAAA,qBAAAA,GAAAA;QACE,IAAI,IAAI,CAACJ,mBAAmB,CAAsC,CAAA,CAAA,EAAA;YAChE,IAAI,IAAI,CAACV,kBAAkB,EAAE;AAC3B,gBAAA,IAAI,CAACH,kBAAkB,GAAG,IAAI,CAACE,YAAY,CAAA;aACtC,MAAA;gBACL,IAAMY,WAAAA,GAAc,IAAI,CAACC,SAAS,EAAA,CAAA;AAClC,gBAAA,IAAI,CAACf,kBAAkB,GAAG,IAAI,CAACE,YAAY,KAAK,CAACY,WAAAA,IAAeA,WAAYG,CAAAA,qBAAqB,EAAC,CAAA,CAAA;AACpG,aAAA;AACA,YAAA,IAAI,CAACD,kBAAkB,CAAA,CAAA,CAAA,CAAA;AACzB,SAAA;QACA,OAAO,IAAI,CAAChB,kBAAkB,CAAA;AAChC,KAAA,CAAA;;IASA,MAASkB,CAAAA,gBAKR,GALD,SAASA,gBAAAA,GAAAA;QACPC,KAAMC,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;QAC7BD,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;;AAExB,QAAA,IAAI,CAAC3B,MAAM,CAAC4B,eAAe,CAACC,oBAAoBC,kBAAkB,CAAA,CAAA;AACpE,KAAA,CAAA;;IAGA,MAASC,CAAAA,iBAUR,GAVD,SAASA,iBAAAA,GAAAA;QACPN,KAAMO,CAAAA,eAAe,CAAC,IAAI,CAAA,CAAA;QAC1BP,KAAMQ,CAAAA,UAAU,CAAC,IAAI,CAAA,CAAA;QACrB,IAAMC,kBAAAA,GAAqB,IAAI,CAAC/B,mBAAmB,CAAA;QACnD+B,kBAAmBC,CAAAA,OAAO,CAAC,SAACC,OAAAA,EAAAA;AAC1BX,YAAAA,KAAAA,CAAME,aAAa,CAACS,OAAAA,CAAAA,CAAAA;AACtB,SAAA,CAAA,CAAA;AACAF,QAAAA,kBAAAA,CAAmBG,MAAM,GAAG,CAAA,CAAA;AAC5BH,QAAAA,kBAAAA,CAAmBI,iBAAiB,EAAA,CAAA;AACpC,QAAA,IAAI,CAAC1B,kBAAkB,GAAG,IAAI,CAACC,aAAa,GAAG,KAAA,CAAA;AACjD,KAAA,CAAA;AAEA;;MAGA0B,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,cAAAA,GAAAA;QACE,IAAI,CAAC3B,kBAAkB,IAAIa,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAEf,KAAAA,CAAMgB,yBAAyB,CAAC,IAAI,CAAA,CAAA,CAAA;QACzF,OAAO,IAAI,CAACC,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;MAGArB,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACR,aAAa,IAAIY,KAAMkB,CAAAA,QAAQ,CAAC,IAAI,EAAElB,KAAAA,CAAMmB,oBAAoB,CAAC,IAAI,CAAA,CAAA,CAAA;QAC1E,OAAO,IAAI,CAACC,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA;;AAEC,MACD,MACA5B,CAAAA,cAIC,GALD,SACAA,eAAe6B,IAAY,EAAA;AACzB,QAAA,IAAIA,SAASC,iBAAkBC,CAAAA,MAAM,IAAIF,IAASjB,KAAAA,mBAAAA,CAAoBC,kBAAkB,EAAE;YACxFL,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD,MACAZ,CAAAA,mBAKC,GAND,SACAA,oBAAoB+B,IAAY,EAAA;AAC9B,QAAA,IAAIA,SAASC,iBAAkBC,CAAAA,MAAM,IAAIF,IAASjB,KAAAA,mBAAAA,CAAoBoB,mBAAmB,EAAE;YACzFxB,KAAMC,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;YAC7BD,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACDuB,OAAAA,cAOC,GAPDA,SAAAA,cAAeC,CAAAA,KAAuB,EAAEC,MAAuB,EAAA;AAAvBA,QAAAA,IAAAA,mBAAAA,MAAkB,GAAA,KAAA,CAAA;AACxD,QAAA,IAAIA,MAAU,IAAA,IAAI,CAAC3C,kBAAkB,EAAE,OAAA;AACvC,QAAA,IAAI,IAAI,CAAC4C,oBAAoB,CAACF,KAAQ,CAAA,EAAA,OAAA;QACtC,IAAI,CAACG,iBAAiB,CAACH,KAAAA,CAAAA,CAAAA;AACvB,QAAA,IAAI,CAAChD,mBAAmB,CAACgC,OAAO,CAAC,SAACC,OAAAA,EAAAA;YAChCA,OAAQc,CAAAA,cAAc,CAACC,KAAO,EAAA,IAAA,CAAA,CAAA;AAChC,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQE,oBAEP,GAFD,SAAQA,oBAAAA,CAAqBE,gBAAwB,EAAA;AACnD,QAAA,OAAO,CAAC,IAAI,CAACzC,gBAAgB,GAAGyC,gBAAe,MAAOA,gBAAAA,CAAAA;AACxD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQpC,mBAEP,GAFD,SAAQA,mBAAAA,CAAoBqC,IAAY,EAAA;AACtC,QAAA,OAAO,CAAC,IAAI,CAAC1C,gBAAgB,GAAG0C,IAAG,KAAM,CAAA,CAAA;AAC3C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQF,iBAEP,GAFD,SAAQA,iBAAAA,CAAkBE,IAAY,EAAA;QACpC,IAAI,CAAC1C,gBAAgB,IAAI0C,IAAAA,CAAAA;AAC3B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQlC,kBAEP,GAFD,SAAQA,kBAAAA,CAAmBkC,IAAY,EAAA;QACrC,IAAI,CAAC1C,gBAAgB,IAAI,CAAC0C,IAAAA,CAAAA;AAC5B,KAAA,CAAA;AApNWzD,IAAAA,aAAAA,CAAAA,OAAAA,EAAAA;;YAkDP0D,GAAAA,EAAAA,mBAAAA;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChD,kBAAkB,CAAA;AAChC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAsBiD,KAAc,EAAA;AAClC,gBAAA,IAAI,IAAI,CAACjD,kBAAkB,KAAKiD,KAAO,EAAA;oBACrC,IAAI,CAACjD,kBAAkB,GAAGiD,KAAAA,CAAAA;AAC1B,oBAAA,IAAI,CAACR,cAAc,CAAA,CAAA,CAAA,CAAA;AACrB,iBAAA;AACF,aAAA;;;YAKIS,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACnD,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBkD,KAAc,EAAA;AAC5B,gBAAA,IAAI,IAAI,CAAClD,YAAY,KAAKkD,KAAO,EAAA;oBAC/B,IAAI,CAAClD,YAAY,GAAGkD,KAAAA,CAAAA;AACpB,oBAAA,IAAI,CAACR,cAAc,CAAA,CAAA,CAAA,CAAA;AACrB,iBAAA;AACF,aAAA;;;YAKIU,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrD,MAAM,CAAA;AACpB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAUmD,KAAa,EAAA;AACrBA,gBAAAA,KAAAA,GAAQG,KAAKC,GAAG,CAAC,GAAGD,IAAKE,CAAAA,GAAG,CAACL,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AACpC,gBAAA,IAAI,IAAI,CAACnD,MAAM,KAAKmD,KAAO,EAAA;oBACzB,IAAI,CAACnD,MAAM,GAAGmD,KAAAA,CAAAA;AACd,oBAAA,IAAI,CAACR,cAAc,CAAA,CAAA,CAAA,CAAA;AACrB,iBAAA;AACF,aAAA;;;AAxFWnD,IAAAA,OAAAA,OAAAA,CAAAA;EAAgBiE,SAqN5B,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,IAAA,gBAAKC,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,gBAAAA,CAAAA;AAKX,CAAA,CAAA,EAAA,CAAA;;AC3NM,IAAA,KAAA,iBAAA,WAAA;AAAMxC,IAAAA,SAAAA,KAAAA,GAAAA,EAAAA;AAAAA,IAAAA,KAAAA,CACJC,kBAKN,GALD,SAAOA,kBAAAA,CAAmBU,OAAiB,EAAA;QACzC,IAAIA,OAAAA,CAAQxB,kBAAkB,EAAE,OAAA;AAChCwB,QAAAA,OAAAA,CAAQxB,kBAAkB,GAAG,IAAA,CAAA;QAC7B,IAAI,CAACsD,mBAAmB,CAAC9B,OAAS,EAAA,IAAA,CAAA,CAAA;AAClCA,QAAAA,OAAAA,CAAQ+B,mBAAmB,IAA3B/B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAQ+B,mBAAmB,CAA3B/B,IAAAA,CAAAA,OAAAA,EAA8BgC,sBAAsBC,GAAG,CAAA,CAAA;AACzD,KAAA,CAAA;AANW5C,IAAAA,KAAAA,CAQJe,aAMN,GAND,SAAOA,aAAcJ,CAAAA,OAAiB,EAAEkC,UAAoB,EAAA;AAC1DlC,QAAAA,OAAAA,CAAQxB,kBAAkB,GAAG,KAAA,CAAA;QAC7B,IAAI,CAACsD,mBAAmB,CAAC9B,OAASkC,EAAAA,UAAAA,CAAAA,CAAAA;QAClC,IAAMC,UAAAA,GAAanC,WAAO,CAAPA,OAAmBoC,EAAAA,QAAAA,CAAAA,GAAWpC,OAAQpC,CAAAA,MAAM,CAACyE,MAAM,GAAGrC,OAAAA,CAAQpC,MAAM,CAAA;AACtEsE,QAAAA,IAAAA,yBAAAA,CAAAA;QAAjB,IAAMI,QAAAA,GAAWJ,CAAAA,yBAAAA,GAAAA,UAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAYtE,MAAM,CAACyE,MAAM,KAAA,IAAA,GAAzBH,yBAA6B,GAAA,IAAA,CAAA;QAC9C,IAAI,CAACK,iBAAiB,CAACJ,UAAAA,EAAYG,UAAUtC,OAAQrB,CAAAA,mBAAmB,EAAEqB,OAAAA,CAAQ1B,4BAA4B,CAAA,CAAA;AAChH,KAAA,CAAA;AAdWe,IAAAA,KAAAA,CAgBJO,eAGN,GAHD,SAAOA,eAAAA,CAAgBI,OAAiB,EAAA;QACtC,IAAI,CAAC8B,mBAAmB,CAAC9B,OAAS,EAAA,IAAA,CAAA,CAAA;AAClC,QAAA,IAAI,CAACwC,mBAAmB,CAACxC,QAAQrB,mBAAmB,EAAEqB,QAAQ1B,4BAA4B,CAAA,CAAA;AAC5F,KAAA,CAAA;AAnBWe,IAAAA,KAAAA,CAqBJgB,yBAcN,GAdD,SAAOA,yBAAAA,CAA0BL,OAAiB,EAAA;QAChD,IAAIpC,MAAAA,GAASoC,WAAO,CAAPA,OAAmBoC,EAAAA,QAAAA,CAAAA,GAAWpC,OAAQpC,CAAAA,MAAM,CAACyE,MAAM,GAAGrC,OAAAA,CAAQpC,MAAM,CAAA;AACjF,QAAA,MAAOA,MAAQ,CAAA;;YAEb,IAAM6E,UAAAA,GAAa7E,OAAO8E,WAAW,CAAA;YACrC,IAAK,IAAIC,IAAI,CAAGC,EAAAA,CAAAA,GAAIH,WAAWxC,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;gBACjD,IAAME,SAAAA,GAAYJ,UAAU,CAACE,CAAE,CAAA,CAAA;gBAC/B,IAAIE,SAAAA,CAAUC,OAAO,IAAa,YAATD,SAAqBT,EAAAA,QAAAA,CAAAA,IAAYS,SAAUE,CAAAA,aAAa,EAAE;oBACjF,OAAOF,SAAAA,CAAAA;AACT,iBAAA;AACF,aAAA;AACAjF,YAAAA,MAAAA,GAASA,OAAOyE,MAAM,CAAA;AACxB,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AAnCWhD,IAAAA,KAAAA,CAqCJE,aAKN,GALD,SAAOA,aAAAA,CAAcS,OAAmB,EAAA;QACtC,IAAIA,OAAAA,CAAQvB,aAAa,EAAE,OAAA;AAC3BuB,QAAAA,OAAAA,CAAQvB,aAAa,GAAG,IAAA,CAAA;QACxB,IAAI,CAACuE,cAAc,CAAChD,OAAS,EAAA,IAAA,CAAA,CAAA;QAC7BA,OAAQc,CAAAA,cAAc,CAACe,gBAAAA,CAAiBI,GAAG,CAAA,CAAA;AAC7C,KAAA,CAAA;AA1CW5C,IAAAA,KAAAA,CA4CJkB,QAWN,GAXD,SAAOA,QAASP,CAAAA,OAAmB,EAAEiD,KAAc,EAAA;AACjDjD,QAAAA,OAAAA,CAAQvB,aAAa,GAAG,KAAA,CAAA;QACxB,IAAI,CAACuE,cAAc,CAAChD,OAASiD,EAAAA,KAAAA,CAAAA,CAAAA;QAC7B,IAAMf,UAAAA,GAAalC,QAAQG,cAAc,EAAA,CAAA;AACzC,QAAA,IAAI+B,UAAY,EAAA;YACd,IAAMC,UAAAA,GAAanC,WAAO,CAAPA,OAAmBrC,EAAAA,OAAAA,CAAAA,GAAUqC,OAAQpC,CAAAA,MAAM,CAACyE,MAAM,GAAGrC,OAAAA,CAAQpC,MAAM,CAAA;AACrEqF,YAAAA,IAAAA,aAAAA,CAAAA;YAAjB,IAAMX,QAAAA,GAAWW,CAAAA,aAAAA,GAAAA,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAOrF,MAAM,KAAA,IAAA,GAAbqF,aAAiBf,GAAAA,UAAAA,CAAWtE,MAAM,CAACyE,MAAM,CAAA;YAC1D,IAAI,CAACE,iBAAiB,CAACJ,UAAAA,EAAYG,UAAUtC,OAAQnB,CAAAA,cAAc,EAAEmB,OAAAA,CAAQzB,uBAAuB,CAAA,CAAA;SAC/F,MAAA;AACL,YAAA,IAAI,CAACiE,mBAAmB,CAACxC,QAAQnB,cAAc,EAAEmB,QAAQzB,uBAAuB,CAAA,CAAA;AAClF,SAAA;AACF,KAAA,CAAA;AAvDWc,IAAAA,KAAAA,CAyDJQ,UAGN,GAHD,SAAOA,UAAAA,CAAWG,OAAmB,EAAA;QACnC,IAAI,CAACgD,cAAc,CAAChD,OAAS,EAAA,IAAA,CAAA,CAAA;AAC7B,QAAA,IAAI,CAACwC,mBAAmB,CAACxC,QAAQnB,cAAc,EAAEmB,QAAQzB,uBAAuB,CAAA,CAAA;AAClF,KAAA,CAAA;AA5DWc,IAAAA,KAAAA,CA8DJmB,oBAiBN,GAjBD,SAAOA,oBAAAA,CAAqBR,OAAmB,EAAA;QAC7C,IAAMkC,UAAAA,GAAalC,QAAQG,cAAc,EAAA,CAAA;QACzC,IAAI,CAAC+B,YAAY,OAAO,IAAA,CAAA;QACxB,IAAItE,MAAAA,GAASoC,WAAO,CAAPA,OAAmBrC,EAAAA,OAAAA,CAAAA,GAAUqC,OAAQpC,CAAAA,MAAM,CAACyE,MAAM,GAAGrC,OAAAA,CAAQpC,MAAM,CAAA;AAChF,QAAA,IAAMsF,gBAAmBhB,GAAAA,UAAAA,CAAWtE,MAAM,CAACyE,MAAM,CAAA;QACjD,MAAOzE,MAAAA,IAAUA,WAAWsF,gBAAkB,CAAA;;YAE5C,IAAMT,UAAAA,GAAa7E,OAAO8E,WAAW,CAAA;YACrC,IAAK,IAAIC,IAAI,CAAGC,EAAAA,CAAAA,GAAIH,WAAWxC,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;gBACjD,IAAME,SAAAA,GAAYJ,UAAU,CAACE,CAAE,CAAA,CAAA;AAC/B,gBAAA,IAAIE,UAAUC,OAAO,IAAID,WAAS,CAATA,WAAqBlF,OAAS,CAAA,EAAA;oBACrD,OAAOkF,SAAAA,CAAAA;AACT,iBAAA;AACF,aAAA;AACAjF,YAAAA,MAAAA,GAASA,OAAOyE,MAAM,CAAA;AACxB,SAAA;QACA,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;AA/EWhD,IAAAA,KAAAA,CAiFIyC,mBAed,GAfD,SAAeA,mBAAoB9B,CAAAA,OAAiB,EAAEmD,MAAgB,EAAA;QACpE,IAAMC,SAAAA,GAAYpD,QAAQM,WAAW,CAAA;AACrC,QAAA,IAAI8C,cAAcD,MAAQ,EAAA;AACxB,YAAA,IAAIC,SAAW,EAAA;AACb,gBAAA,IAAMC,WAAWD,SAAUrF,CAAAA,mBAAmB,CAACuF,aAAa,CAACtD,QAAQlC,kBAAkB,CAAA,CAAA;AACvFuF,gBAAAA,QAAAA,KAAaA,QAASvF,CAAAA,kBAAkB,GAAGkC,OAAAA,CAAQlC,kBAAkB,CAAD,CAAA;gBACpEkC,OAAQlC,CAAAA,kBAAkB,GAAG,CAAC,CAAA,CAAA;AAChC,aAAA;AACA,YAAA,IAAIqF,MAAQ,EAAA;gBACV,IAAMrD,kBAAAA,GAAqBqD,OAAOpF,mBAAmB,CAAA;gBACrDiC,OAAQlC,CAAAA,kBAAkB,GAAGgC,kBAAAA,CAAmBG,MAAM,CAAA;AACtDH,gBAAAA,kBAAAA,CAAmByD,GAAG,CAACvD,OAAAA,CAAAA,CAAAA;AACzB,aAAA;AACAA,YAAAA,OAAAA,CAAQM,WAAW,GAAG6C,MAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAhGW9D,IAAAA,KAAAA,CAkGI2D,cAgBd,GAhBD,SAAeA,cAAehD,CAAAA,OAAmB,EAAEiD,KAAc,EAAA;QAC/D,IAAMO,QAAAA,GAAWxD,QAAQS,MAAM,CAAA;AAC/B,QAAA,IAAI+C,aAAaP,KAAO,EAAA;AACtB,YAAA,IAAIO,QAAU,EAAA;AACZ,gBAAA,IAAMH,WAAWG,QAASzF,CAAAA,mBAAmB,CAACuF,aAAa,CAACtD,QAAQnC,aAAa,CAAA,CAAA;AACjFwF,gBAAAA,QAAAA,KAAaA,QAASxF,CAAAA,aAAa,GAAGmC,OAAAA,CAAQnC,aAAa,CAAD,CAAA;gBAC1DmC,OAAQnC,CAAAA,aAAa,GAAG,CAAC,CAAA,CAAA;AAC3B,aAAA;AACA,YAAA,IAAIoF,KAAO,EAAA;gBACT,IAAMnD,kBAAAA,GAAqBmD,MAAMlF,mBAAmB,CAAA;gBACpDiC,OAAQnC,CAAAA,aAAa,GAAGiC,kBAAAA,CAAmBG,MAAM,CAAA;AACjDH,gBAAAA,kBAAAA,CAAmByD,GAAG,CAACvD,OAAAA,CAAAA,CAAAA;AACzB,aAAA;AACAA,YAAAA,OAAAA,CAAQS,MAAM,GAAGwC,KAAAA,CAAAA;YACjBjD,OAAQc,CAAAA,cAAc,CAACe,gBAAAA,CAAiBI,GAAG,CAAA,CAAA;AAC7C,SAAA;AACF,KAAA,CAAA;IAlHW5C,KAoHIkD,CAAAA,iBAoBd,GApBD,SAAeA,iBACb3E,CAAAA,MAAc,EACd6F,IAAY,EACZC,QAA6C,EAC7CC,iBAA2B,EAAA;AAE3B,QAAA,IAAIC,KAAQ,GAAA,CAAA,CAAA;QACZ,MAAOhG,MAAAA,IAAUA,WAAW6F,IAAM,CAAA;YAChC,IAAMI,SAAAA,GAAYF,iBAAiB,CAACC,KAAM,CAAA,CAAA;AAC1C,YAAA,IAAIC,cAAcjG,MAAQ,EAAA;;gBAExBiG,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAWC,yBAAyB,CAACJ,QAAAA,CAAAA,CAAAA;gBACrCC,iBAAiB,CAACC,MAAM,GAAGhG,MAAAA,CAAAA;;AAE3BA,gBAAAA,MAAAA,CAAOmG,uBAAuB,CAACL,QAAAA,CAAAA,CAAAA;AACjC,aAAA;AACA9F,YAAAA,MAAAA,GAASA,OAAOyE,MAAM,CAAA;AACtBuB,YAAAA,KAAAA,EAAAA,CAAAA;AACF,SAAA;AACAD,QAAAA,iBAAAA,CAAkB1D,MAAM,GAAG2D,KAAAA,CAAAA;AAC7B,KAAA,CAAA;AAxIWvE,IAAAA,KAAAA,CA0IImD,mBAMd,GAND,SAAeA,mBAAoBkB,CAAAA,QAA6C,EAAEC,iBAA2B,EAAA;QAC3G,IAAK,IAAIhB,IAAI,CAAGC,EAAAA,CAAAA,GAAIe,kBAAkB1D,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;;AAExDgB,YAAAA,iBAAiB,CAAChB,CAAAA,CAAE,CAACmB,yBAAyB,CAACJ,QAAAA,CAAAA,CAAAA;AACjD,SAAA;AACAC,QAAAA,iBAAAA,CAAkB1D,MAAM,GAAG,CAAA,CAAA;AAC7B,KAAA,CAAA;AAhJWZ,IAAAA,OAAAA,KAAAA,CAAAA;AAiJZ,CAAA,EAAA;;ACrJD;;;;;;;;;;;;;;;;;;;IAoBO,IAAM2E,aAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,aAAAA,GAAAA,EAAAA;AAYX;;;;MAZWA,cAiBJC,IA0GN,GA1GD,SAAOA,IAAKC,CAAAA,QAAyB,EAAEC,iBAAyB,EAAA;QAC9D,IAAMP,KAAAA,GAAQM,SAASjE,MAAM,CAAA;AAC7B,QAAA,IAAI2D,SAAS,CAAG,EAAA,OAAA;QAEhB,IAAMQ,OAAAA,GAAU,IAAI,CAACC,QAAQ,CAAA;QAC7B,IAAMC,OAAAA,GAAU,IAAI,CAACC,QAAQ,CAAA;QAC7B,IAAMC,IAAAA,GAAO,IAAI,CAACC,KAAK,CAAA;QACvB,IAAMC,UAAAA,GAAa,IAAI,CAACC,WAAW,CAAA;QACnC,IAAMC,eAAAA,GAAkB,IAAI,CAACC,gBAAgB,CAAA;QAC7C,IAAMC,YAAAA,GAAe,IAAI,CAACC,aAAa,CAAA;QACvCC,MAAOC,CAAAA,MAAM,CAACd,iBAAmBW,EAAAA,YAAAA,CAAAA,CAAAA;AACjC,QAAA,MAAOR,QAAQrE,MAAM,GAAG2D,MAAOU,OAAQY,CAAAA,IAAI,CAAC,IAAIC,SAAAA,EAAAA,CAAAA,CAAAA;;QAGhD,IAAIX,IAAAA,CAAKvE,MAAM,GAAGmE,OAAS,EAAA;AACzB,YAAA,MAAOI,KAAKvE,MAAM,GAAGmE,QAASI,IAAKU,CAAAA,IAAI,CAAC,EAAE,CAAA,CAAA;AAC1C,YAAA,IAAK,IAAIvC,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIyB,SAASzB,CAAK,EAAA,CAAA;gBAChC,IAAMyC,GAAAA,GAAMZ,IAAI,CAAC7B,CAAE,CAAA,CAAA;AACnB,gBAAA,MAAOyC,IAAInF,MAAM,GAAGmE,QAASgB,GAAIF,CAAAA,IAAI,CAAC,EAAE,CAAA,CAAA;AAC1C,aAAA;AACF,SAAA;;QAGA,IAAK,IAAIG,CAAI,GAAA,CAAA,EAAGzC,CAAI8B,GAAAA,UAAAA,CAAWzE,MAAM,EAAEoF,CAAAA,GAAIzC,CAAGyC,EAAAA,CAAAA,IAAK,CAAG,CAAA;AACpDb,YAAAA,IAAI,CAACE,UAAU,CAACW,CAAAA,CAAE,CAAC,CAACX,UAAU,CAACW,CAAI,GAAA,CAAA,CAAE,CAAC,CAACpF,MAAM,GAAG,CAAA,CAAA;AAClD,SAAA;AACAyE,QAAAA,UAAAA,CAAWzE,MAAM,GAAG,CAAA,CAAA;;;;AAKpB,QAAA,IAAIqF,SAAYC,GAAAA,QAAAA,CAAAA;AAChB,QAAA,IAAIC,SAAYD,GAAAA,QAAAA,CAAAA;AAChB,QAAA,IAAIE,YAAY,CAACF,QAAAA,CAAAA;AACjB,QAAA,IAAIG,YAAY,CAACH,QAAAA,CAAAA;AACjB,QAAA,IAAK,IAAI5C,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIiB,OAAOjB,EAAK,EAAA,CAAA;gBACTiC,gBAAgBjC,EAAAA,EAAAA,CAAAA;AAArC,YAAA,IAAMgD,WAAef,GAAAA,CAAAA,gBAAAA,GAAAA,eAAAA,EAAgBjC,EAAAA,GAAAA,EAAE,CAAA,KAAlBiC,gBAAe,CAACjC,EAAE,CAAA,GAAK,IAAIiD,WAAAA,EAAAA,CAAAA,CAAAA;YAChDA,WAAYC,CAAAA,SAAS,CAAC3B,QAAQ,CAACvB,EAAAA,CAAE,CAACE,SAAS,CAACiD,MAAM,EAAEhB,YAAca,EAAAA,WAAAA,CAAAA,CAAAA;AAClE,YAAA,IAAQhE,GAAagE,GAAAA,WAAAA,CAAbhE,GAAKD,EAAAA,GAAAA,GAAQiE,WAARjE,CAAAA,GAAAA,CAAAA;AACb,YAAA,IAAIC,IAAIoE,CAAC,GAAGT,SAAWA,EAAAA,SAAAA,GAAY3D,IAAIoE,CAAC,CAAA;AACxC,YAAA,IAAIpE,IAAIqE,CAAC,GAAGR,SAAWA,EAAAA,SAAAA,GAAY7D,IAAIqE,CAAC,CAAA;AACxC,YAAA,IAAItE,IAAIqE,CAAC,GAAGN,SAAWA,EAAAA,SAAAA,GAAY/D,IAAIqE,CAAC,CAAA;AACxC,YAAA,IAAIrE,IAAIsE,CAAC,GAAGN,SAAWA,EAAAA,SAAAA,GAAYhE,IAAIsE,CAAC,CAAA;AAC1C,SAAA;;;AAGA,QAAA,IAAMC,YAAYxE,IAAKC,CAAAA,GAAG,CAAC,IAAA,EAAM+D,YAAYH,SAAalB,CAAAA,GAAAA,OAAAA,CAAAA;AAC1D,QAAA,IAAM8B,YAAYzE,IAAKC,CAAAA,GAAG,CAAC,IAAA,EAAMgE,YAAYF,SAAapB,CAAAA,GAAAA,OAAAA,CAAAA;AAC1D,QAAA,IAAM+B,UAAU/B,OAAU,GAAA,CAAA,CAAA;;AAG1B,QAAA,IAAK,IAAIzB,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIiB,OAAOjB,EAAK,EAAA,CAAA;YAC9B,IAAM3C,OAAAA,GAAUkE,QAAQ,CAACvB,EAAE,CAAA,CAAA;YAC3B,IAAMgD,YAAAA,GAAcf,eAAe,CAACjC,EAAE,CAAA,CAAA;AACtC,YAAA,IAAMyD,UAAapG,GAAAA,OAAAA,CAAQqG,QAAQ,CAACC,UAAU,CAAA;YAC9C,IAAMC,SAAAA,GAAYvG,QAAQwG,OAAO,GAAGxG,QAAQwG,OAAO,CAACF,UAAU,GAAG,CAAA,CAAA;;;YAIjE,IAAMG,QAAAA,GAAWhF,KAAKE,GAAG,CAACwE,SAAS1E,IAAKC,CAAAA,GAAG,CAAC,CAAGD,EAAAA,IAAAA,CAAKiF,KAAK,CAAEf,CAAAA,YAAYhE,CAAAA,GAAG,CAACoE,CAAC,GAAGT,SAAQ,IAAKW,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAC5F,IAAMU,QAAAA,GAAWlF,KAAKE,GAAG,CAACwE,SAAS1E,IAAKC,CAAAA,GAAG,CAAC,CAAGD,EAAAA,IAAAA,CAAKiF,KAAK,CAAEf,CAAAA,YAAYjE,CAAAA,GAAG,CAACqE,CAAC,GAAGT,SAAQ,IAAKW,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAC5F,IAAMW,QAAAA,GAAWnF,KAAKE,GAAG,CAACwE,SAAS1E,IAAKC,CAAAA,GAAG,CAAC,CAAGD,EAAAA,IAAAA,CAAKiF,KAAK,CAAEf,CAAAA,YAAYhE,CAAAA,GAAG,CAACqE,CAAC,GAAGR,SAAQ,IAAKU,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YAC5F,IAAMW,QAAAA,GAAWpF,KAAKE,GAAG,CAACwE,SAAS1E,IAAKC,CAAAA,GAAG,CAAC,CAAGD,EAAAA,IAAAA,CAAKiF,KAAK,CAAEf,CAAAA,YAAYjE,CAAAA,GAAG,CAACsE,CAAC,GAAGR,SAAQ,IAAKU,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;AAG5F,YAAA,IAAIY,WAAW,CAAC,CAAA,CAAA;AAChB,YAAA,IAAIC,oBAAuB,GAAA,KAAA,CAAA;AAC3B,YAAA,IAAK,IAAIC,KAAAA,GAAQJ,QAAUI,EAAAA,KAAAA,IAASH,UAAUG,KAAS,EAAA,CAAA;AACrD,gBAAA,IAAK,IAAIC,KAAAA,GAAQR,QAAUQ,EAAAA,KAAAA,IAASN,UAAUM,KAAS,EAAA,CAAA;AACrD,oBAAA,IAAMC,IAAO1C,GAAAA,IAAI,CAACyC,KAAAA,CAAM,CAACD,KAAM,CAAA,CAAA;oBAC/B,IAAK,IAAIG,IAAI,CAAGC,EAAAA,CAAAA,GAAIF,KAAKjH,MAAM,EAAEkH,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;wBAC3C,IAAME,KAAAA,GAAQH,IAAI,CAACC,CAAE,CAAA,CAAA;wBACrB,IAAI,CAACnD,aAAcsD,CAAAA,YAAY,CAAC3B,YAAa0B,EAAAA,KAAAA,CAAMvB,MAAM,CAAG,EAAA,SAAA;wBAC5D,IAAMyB,UAAAA,GAAaF,MAAMG,KAAK,CAAA;AAC9B,wBAAA,IAAMC,oBAAoBJ,KAAMjB,CAAAA,UAAU,KAAKA,UAAciB,IAAAA,KAAAA,CAAMd,SAAS,KAAKA,SAAAA,CAAAA;AACjF,wBAAA,IAAIgB,aAAaT,QAAU,EAAA;4BACzBA,QAAWS,GAAAA,UAAAA,CAAAA;4BACXR,oBAAuBU,GAAAA,iBAAAA,CAAAA;yBAClB,MAAA,IAAIF,UAAeT,KAAAA,QAAAA,IAAYW,iBAAmB,EAAA;4BACvDV,oBAAuB,GAAA,IAAA,CAAA;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YAEA,IAAMW,KAAAA,GAAQpD,OAAO,CAAC3B,EAAE,CAAA,CAAA;AACxB+E,YAAAA,KAAAA,CAAM1H,OAAO,GAAGA,OAAAA,CAAAA;AAChB0H,YAAAA,KAAAA,CAAMC,cAAc,GAAGhF,EAAAA,CAAAA;;YAEvB+E,KAAMF,CAAAA,KAAK,GAAGV,QAAW,GAAA,CAAA,GAAI,IAAIA,QAAYC,IAAAA,oBAAuB,GAAA,CAAA,GAAI,CAAA,CAAA,CAAA;AACxEW,YAAAA,KAAAA,CAAMtB,UAAU,GAAGA,UAAAA,CAAAA;AACnBsB,YAAAA,KAAAA,CAAMnB,SAAS,GAAGA,SAAAA,CAAAA;AAClBmB,YAAAA,KAAAA,CAAM5B,MAAM,GAAGH,YAAAA,CAAAA;AAEf,YAAA,IAAK,IAAIqB,MAAAA,GAAQJ,QAAUI,EAAAA,MAAAA,IAASH,UAAUG,MAAS,EAAA,CAAA;AACrD,gBAAA,IAAK,IAAIC,MAAAA,GAAQR,QAAUQ,EAAAA,MAAAA,IAASN,UAAUM,MAAS,EAAA,CAAA;AACrD,oBAAA,IAAMC,KAAO1C,GAAAA,IAAI,CAACyC,MAAAA,CAAM,CAACD,MAAM,CAAA,CAAA;AAC/B,oBAAA,IAAIE,MAAKjH,MAAM,KAAK,GAAGyE,UAAWQ,CAAAA,IAAI,CAAC+B,MAAOD,EAAAA,MAAAA,CAAAA,CAAAA;AAC9CE,oBAAAA,KAAAA,CAAKhC,IAAI,CAACwC,KAAAA,CAAAA,CAAAA;AACZ,iBAAA;AACF,aAAA;AACF,SAAA;;AAGArI,QAAAA,OAAAA,CAAMuI,UAAU,CAACtD,OAAAA,EAAS,GAAGV,KAAOI,EAzH3BA,cAyHyC6D,eAAe,CAAA,CAAA;AACjE,QAAA,IAAK,IAAIlF,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAIiB,OAAOjB,EAAKuB,EAAAA,CAAAA,QAAQ,CAACvB,EAAAA,CAAE,GAAG2B,OAAO,CAAC3B,EAAAA,CAAE,CAAC3C,OAAO,CAAA;AAClE,KAAA,CAAA;AA3HWgE,IAAAA,aAAAA,CA6HIsD,YAEd,GAFD,SAAeA,YAAaQ,CAAAA,CAAc,EAAEC,CAAc,EAAA;AACxD,QAAA,OAAOD,EAAEnG,GAAG,CAACoE,CAAC,GAAGgC,EAAErG,GAAG,CAACqE,CAAC,IAAI+B,EAAEpG,GAAG,CAACqE,CAAC,GAAGgC,CAAAA,CAAEpG,GAAG,CAACoE,CAAC,IAAI+B,CAAAA,CAAEnG,GAAG,CAACqE,CAAC,GAAG+B,CAAAA,CAAErG,GAAG,CAACsE,CAAC,IAAI8B,CAAAA,CAAEpG,GAAG,CAACsE,CAAC,GAAG+B,CAAEpG,CAAAA,GAAG,CAACqE,CAAC,CAAA;AACzF,KAAA,CAAA;AA/HWhC,IAAAA,aAAAA,CAiII6D,eAOd,GAPD,SAAeA,eAAgBC,CAAAA,CAAY,EAAEC,CAAY,EAAA;QACvD,OACED,CAAAA,CAAEN,KAAK,GAAGO,CAAAA,CAAEP,KAAK,IACjBM,CAAAA,CAAE1B,UAAU,GAAG2B,CAAE3B,CAAAA,UAAU,IAC3B0B,CAAEvB,CAAAA,SAAS,GAAGwB,CAAExB,CAAAA,SAAS,IACzBuB,CAAEH,CAAAA,cAAc,GAAGI,CAAAA,CAAEJ,cAAc,CAAA;AAEvC,KAAA,CAAA;AAxIW3D,IAAAA,OAAAA,aAAAA,CAAAA;AAyIZ,CAAA,EAAA,CAAA;AAxIC;AACA;AAFWA,aAAAA,CAGaK,QAAW,GAAA,EAAA,CAAA;AAHxBL,aAAAA,CAKaO,WAAW,IAAIyD,KAAAA,EAAAA,CAAAA;AAL5BhE,aAAAA,CAMaS,QAAsB,EAAE,CAAA;AAChD;AAPWT,aAAAA,CAQaW,cAAc,IAAIqD,KAAAA,EAAAA,CAAAA;AAR/BhE,aAAAA,CASaa,mBAAmB,IAAImD,KAAAA,EAAAA,CAAAA;AATpChE,aAAAA,CAUae,gBAAgB,IAAIC,MAAAA,EAAAA,CAAAA;AAmI9C;AACA;AACA,IAAMG,YAAN,SAAMA,SAAAA,GAAAA;SAEJwC,cAAiB,GAAA,CAAA,CAAA;SACjBH,KAAQ,GAAA,CAAA,CAAA;SACRpB,UAAa,GAAA,CAAA,CAAA;SACbG,SAAY,GAAA,CAAA,CAAA;;;AC1Kd;;IAGO,IAAK0B,gBAAAA,iBAAAA,SAAAA,gBAAAA,EAAAA;AACV;;;;AAIC,MAAA,gBAAA,CAAA,gBAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAA,CAAA;AAED;;;;;AAKC,MAAA,gBAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAA,CAAA;AAED;;AAEC,MAAA,gBAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAA,CAAA;AAhBSA,IAAAA,OAAAA,gBAAAA,CAAAA;AAkBX,CAAA,CAAA,EAAA;;ACrBD;;;IAIO,IAAKC,wBAAAA,iBAAAA,SAAAA,wBAAAA,EAAAA;0DACyC,wBAAA,CAAA,wBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAA,CAAA;2DAEC,wBAAA,CAAA,wBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA,CAAA;wEAEa,wBAAA,CAAA,wBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAA,CAAA;kDAEtB,wBAAA,CAAA,wBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA,CAAA;iDAED,wBAAA,CAAA,wBAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA,CAAA;AAThCA,IAAAA,OAAAA,wBAAAA,CAAAA;AAWX,CAAA,CAAA,EAAA;;ACfD,kCACO,IAAKC,uBAAAA,iBAAAA,SAAAA,uBAAAA,EAAAA;oCACmB,uBAAA,CAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;0DAEsB,uBAAA,CAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;4DAEE,uBAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;6FAEiC,uBAAA,CAAA,uBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;8DAE/B,uBAAA,CAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;AAT7CA,IAAAA,OAAAA,uBAAAA,CAAAA;AAWX,CAAA,CAAA,EAAA;;ACZD,gCACO,IAAKC,qBAAAA,iBAAAA,SAAAA,qBAAAA,EAAAA;kCACiB,qBAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;wDAEsB,qBAAA,CAAA,qBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAA,CAAA;8DAEM,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;2FAE6B,qBAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;8DAE7B,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAA,CAAA;AAT7CA,IAAAA,OAAAA,qBAAAA,CAAAA;AAWX,CAAA,CAAA,EAAA;;ACCD;;IAGO,IAAMC,WAAN,iBAAA,SAAA,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,CA8NCzK,MAAc,EAAA;;AACxB,QAAA,KAAA,GAAA,SAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,uBA7NA0K,KAAQ,GAAA,IAAIC,OAAQ,CAAA,GAAA,EAAK,YAEzBC,MAAS,GAAA,IAAID,OAAQ,CAAA,GAAA,EAAK,YAE1BE,KAAQ,GAAA,IAAIC,KAAK,CAAC,EAAA,EAAI,CAAC,EAAI,EAAA,GAAA,EAAK,GAEhCC,CAAAA,EAAAA,KAAAA,CAAAA,UAAAA,GAAa,SACbC,WAAc,GAAA,CAAA,EAAA,KAAA,CACdC,YAAe,GAAA,CAAA,EAAA,KAAA,CACfC,YAAY,CACZC,EAAAA,KAAAA,CAAAA,YAAAA,GAAe,CACfC,EAAAA,KAAAA,CAAAA,YAAAA,GAAe,SACfC,oBAAuBd,GAAAA,uBAAAA,CAAwBe,IAAI,EACnDC,KAAAA,CAAAA,kBAAAA,GAAqBf,sBAAsBc,IAAI,CAAA;AAiNrD,QAAA,KAAA,CAAKE,cAAc,GAAG,KAAKA,CAAAA,cAAc,CAACxK,IAAI,CAAA,KAAA,CAAA,CAAA;AAC9C,QAAA,KAAA,CAAKyK,eAAe,GAAG,KAAKA,CAAAA,eAAe,CAACzK,IAAI,CAAA,KAAA,CAAA,CAAA;;AAEhD,QAAA,KAAA,CAAK0J,KAAK,CAACgB,eAAe,GAAG,MAAKF,cAAc,CAAA;;AAEhD,QAAA,KAAA,CAAKZ,MAAM,CAACc,eAAe,GAAG,MAAKD,eAAe,CAAA;;;AArOzChB,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAwOX;;MAGAkB,MAAAA,CAAAA,aAGC,GAHDA,SAAAA,aAAAA,GAAAA;QACE,IAAI,CAACC,cAAc,GAAG,IAAA,CAAA;AACtB,QAAA,IAAI,CAACC,oCAAoC,CAACC,oBAAAA,CAAqBC,aAAa,CAAA,CAAA;AAC9E,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASC,QAYR,GAZD,SAASA,QAAAA,CAASC,MAAmB,EAAA;;AAEnC,QAAA,SAAA,CAAA,SAAA,CAAMD,QAAD,CAAUC,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AACf,QAAA,IAAQvB,IAA+BuB,GAAAA,MAAAA,CAA/BvB,KAAaE,EAAQsB,QAAUD,MAAlBrB,CAAAA,MAAAA,CAAAA;;AAErBuB,QAAAA,IAAAA,CAAKT,eAAe,GAAGQ,KAAMR,CAAAA,eAAe,GAAG,IAAA,CAAA;AAC/CS,QAAAA,IAAAA,CAAKC,QAAQ,CAAC,IAAI,CAAC1B,KAAK,CAAA,CAAA;AACxBwB,QAAAA,KAAAA,CAAME,QAAQ,CAAC,IAAI,CAACxB,MAAM,CAAA,CAAA;;QAE1BuB,IAAKT,CAAAA,eAAe,GAAGO,MAAAA,CAAOT,cAAc,CAAA;;QAE5CU,KAAMR,CAAAA,eAAe,GAAGO,MAAAA,CAAOR,eAAe,CAAA;AAChD,KAAA,CAAA;IAEA,MAAmBY,CAAAA,sBASlB,GATD,SAAmBA,sBAAAA,GAAAA;;;AAGjB,QAAA,IAAI,IAAI,CAAChB,oBAAoB,IAAI,IAAI,CAACE,kBAAkB,EAAE;AACxD,YAAA,IAAI,CAACe,0BAA0B,EAAA,CAAA;AAC/B,YAAA,IAAI,CAAChJ,iBAAiB,CAACwI,oBAAAA,CAAqBS,WAAW,CAAA,CAAA;SAClD,MAAA;AACL,YAAA,SAAA,CAAA,SAAA,CAAMF,sBAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,SAAA;AACF,KAAA,CAAA;IAEA,MAAmBG,CAAAA,sBAIlB,GAJD,SAAmBA,sBAAAA,GAAAA;;;QAGjB,CAAC,IAAI,CAACnB,oBAAoB,IAAI,CAAC,IAAI,CAACE,kBAAkB,IAAI,SAAA,CAAA,SAAA,CAAMiB,sBAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACjE,KAAA,CAAA;IAEA,MACmBC,CAAAA,kBAGlB,GAJD,SACmBA,kBAAAA,GAAAA;QAChB,CAAA,IAAI,CAACpB,oBAAoB,IAAI,IAAI,CAACE,kBAAkB,KAAK,IAAI,CAACe,0BAA0B,EAAA,CAAA;AACzF,QAAA,SAAA,CAAA,SAAA,CAAMG,kBAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;IAEA,MACmBC,CAAAA,uBAKlB,GAND,SACmBA,uBAAAA,GAAAA;AACjB,QAAA,SAAA,CAAA,SAAA,CAAMA,uBAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,QAAA,IAAI,IAAI,CAACrB,oBAAoB,IAAI,IAAI,CAACE,kBAAkB,EAAE;AACxD,YAAA,IAAI,CAACjI,iBAAiB,CAACwI,oBAAAA,CAAqBa,aAAa,CAAA,CAAA;AAC3D,SAAA;AACF,KAAA,CAAA;IAEA,MAAQL,CAAAA,0BAsCP,GAtCD,SAAQA,0BAAAA,GAAAA;AACc,QAAA,IAAA,yBAAA,CAAA;QAApB,IAAMM,UAAAA,GAAAA,CAAc,4BAAA,IAAI,CAACC,mBAAmB,EAAzB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAC,0BAA4ChC,KAAK,CAAA;AACrE,QAAA,IAAI+B,UAAY,EAAA;YACd,IAAME,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;;AAE9BA,YAAAA,QAAAA,CAASpB,eAAe,GAAG,IAAA,CAAA;YAC3B,IAAMqB,IAAAA,GAAO,IAAI,CAAClC,KAAK,CAAA;YACvB,OAAQ,IAAI,CAACQ,oBAAoB;AAC/B,gBAAA,KAAKd,wBAAwByC,IAAI,CAAA;AACjC,gBAAA,KAAKzC,wBAAwB0C,YAAY;oBACvCH,QAAS3E,CAAAA,CAAC,GAAGyE,UAAAA,CAAWzE,CAAC,GAAG4E,KAAK5E,CAAC,GAAG,IAAI,CAAC4C,UAAU,CAAA;AACpD,oBAAA,MAAA;AACF,gBAAA,KAAKR,wBAAwB2C,MAAM;AACjCJ,oBAAAA,QAAAA,CAAS3E,CAAC,GAAGyE,UAAAA,CAAWzE,CAAC,GAAGyE,UAAAA,CAAWO,KAAK,GAAG,GAAA,GAAMJ,IAAK5E,CAAAA,CAAC,GAAG4E,IAAKI,CAAAA,KAAK,GAAG,GAAM,GAAA,IAAI,CAAClC,YAAY,CAAA;AAClG,oBAAA,MAAA;AACF,gBAAA,KAAKV,wBAAwB6C,KAAK;AAChCN,oBAAAA,QAAAA,CAAS3E,CAAC,GAAGyE,UAAAA,CAAWzE,CAAC,GAAGyE,WAAWO,KAAK,GAAGJ,IAAK5E,CAAAA,CAAC,GAAG4E,IAAKI,CAAAA,KAAK,GAAG,IAAI,CAACnC,WAAW,CAAA;AACrF,oBAAA,MAAA;AAGJ,aAAA;YACA,OAAQ,IAAI,CAACO,kBAAkB;AAC7B,gBAAA,KAAKf,sBAAsB6C,GAAG;AAC5BP,oBAAAA,QAAAA,CAAS1E,CAAC,GAAGwE,UAAAA,CAAWxE,CAAC,GAAGwE,WAAWU,MAAM,GAAGP,IAAK3E,CAAAA,CAAC,GAAG2E,IAAKO,CAAAA,MAAM,GAAG,IAAI,CAACpC,SAAS,CAAA;AACrF,oBAAA,MAAA;AACF,gBAAA,KAAKV,sBAAsB+C,MAAM;AAC/BT,oBAAAA,QAAAA,CAAS1E,CAAC,GAAGwE,UAAAA,CAAWxE,CAAC,GAAGwE,UAAAA,CAAWU,MAAM,GAAG,GAAA,GAAMP,IAAK3E,CAAAA,CAAC,GAAG2E,IAAKO,CAAAA,MAAM,GAAG,GAAM,GAAA,IAAI,CAAClC,YAAY,CAAA;AACpG,oBAAA,MAAA;AACF,gBAAA,KAAKZ,sBAAsBgD,MAAM,CAAA;AACjC,gBAAA,KAAKhD,sBAAsBiD,YAAY;oBACrCX,QAAS1E,CAAAA,CAAC,GAAGwE,UAAAA,CAAWxE,CAAC,GAAG2E,KAAK3E,CAAC,GAAG,IAAI,CAAC+C,YAAY,CAAA;AACtD,oBAAA,MAAA;AAGJ,aAAA;;AAEA2B,YAAAA,QAAAA,CAASpB,eAAe,GAAG,IAAI,CAACe,kBAAkB,CAAA;AACpD,SAAA;AACF,KAAA,CAAA;IAEA,MAAQiB,CAAAA,sBAgBP,GAhBD,SAAQA,sBAAAA,GAAAA;AACc,QAAA,IAAA,yBAAA,CAAA;QAApB,IAAMd,UAAAA,GAAAA,CAAc,4BAAA,IAAI,CAACC,mBAAmB,EAAzB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAC,0BAA4ChC,KAAK,CAAA;AACrE,QAAA,IAAI+B,UAAY,EAAA;YACd,IAAMT,IAAAA,GAAO,IAAI,CAACzB,KAAK,CAAA;;AAEvByB,YAAAA,IAAAA,CAAKT,eAAe,GAAG,IAAA,CAAA;;AAEvB,YAAA,IAAI,IAAI,CAACL,oBAAoB,KAAKd,uBAAAA,CAAwB0C,YAAY,EAAE;AACtEd,gBAAAA,IAAAA,CAAKhE,CAAC,GAAGtE,IAAKC,CAAAA,GAAG,CAAC8I,UAAWO,CAAAA,KAAK,GAAG,IAAI,CAACpC,UAAU,GAAG,IAAI,CAACC,WAAW,EAAE,CAAA,CAAA,CAAA;AAC3E,aAAA;AACA,YAAA,IAAI,IAAI,CAACO,kBAAkB,KAAKf,qBAAAA,CAAsBiD,YAAY,EAAE;AAClEtB,gBAAAA,IAAAA,CAAK/D,CAAC,GAAGvE,IAAKC,CAAAA,GAAG,CAAC8I,UAAWU,CAAAA,MAAM,GAAG,IAAI,CAACpC,SAAS,GAAG,IAAI,CAACC,YAAY,EAAE,CAAA,CAAA,CAAA;AAC5E,aAAA;;AAEAgB,YAAAA,IAAAA,CAAKT,eAAe,GAAG,IAAI,CAACF,cAAc,CAAA;AAC5C,SAAA;AACF,KAAA,CAAA;IAEA,MAAQmC,CAAAA,yBAKP,GALD,SAAQA,yBAAAA,GAAAA;QACN,IAAgC,KAAA,GAAA,IAAI,EAA5BxB,IAAAA,GAAwB,MAAxBA,IAAMvB,EAAQsB,QAAU,KAAlBtB,CAAAA,MAAAA,CAAAA;AACd,QAAA,IAAMzC,IAAI,CAAC+D,KAAAA,CAAM/D,CAAC,GAAGgE,KAAKhE,CAAC,CAAA;AAC3B,QAAA,IAAMC,IAAI,CAAC8D,KAAAA,CAAM9D,CAAC,GAAG+D,KAAK/D,CAAC,CAAA;QAC3B,IAAI,CAACyC,KAAK,CAAC+C,GAAG,CAACzF,CAAGC,EAAAA,CAAAA,EAAG+D,IAAKhE,CAAAA,CAAC,EAAEgE,IAAAA,CAAK/D,CAAC,CAAA,CAAA;AACrC,KAAA,CAAA;IAEA,MACQoD,CAAAA,cAWP,GAZD,SACQA,cAAAA,GAAAA;AACN,QAAA,IACE,IAAI,CAACH,oBAAoB,KAAKd,uBAAwB0C,CAAAA,YAAY,IAClE,IAAI,CAAC1B,kBAAkB,KAAKf,qBAAAA,CAAsBiD,YAAY,EAC9D;AACA,YAAA,IAAI,CAACC,sBAAsB,EAAA,CAAA;AAC7B,SAAA;AACA,QAAA,IAAI,CAACC,yBAAyB,EAAA,CAAA;AAC9B,QAAA,IAAI,CAACE,kCAAkC,EAAA,CAAA;;AAEvC,QAAA,IAAI,CAACC,OAAO,CAACC,kBAAkB,CAACC,QAAQ,CAAA,GAAA,CAAA,CAAA;AAC1C,KAAA,CAAA;IAEA,MACQvC,CAAAA,eAKP,GAND,SACQA,eAAAA,GAAAA;AACN,QAAA,IAAI,CAACkC,yBAAyB,EAAA,CAAA;AAC9B,QAAA,IAAI,CAACE,kCAAkC,EAAA,CAAA;;AAEvC,QAAA,IAAI,CAACC,OAAO,CAACC,kBAAkB,CAACC,QAAQ,CAAA,IAAA,CAAA,CAAA;AAC1C,KAAA,CAAA;IAEA,MAAQH,CAAAA,kCAYP,GAZD,SAAQA,kCAAAA,GAAAA;AACN,QAAA,IAAII,UAAa,GAAA,CAAA,CAAA;AACjB,QAAA,IAAI,IAAI,CAAC5C,oBAAoB,IAAI,IAAI,CAACE,kBAAkB,EAAE;AACxD,YAAA,IAAI,CAACe,0BAA0B,EAAA,CAAA;AAC/B,YAAA,IAAI,CAAChJ,iBAAiB,CAACwI,oBAAAA,CAAqBS,WAAW,CAAA,CAAA;AACvD0B,YAAAA,UAAAA,GAAanC,qBAAqBoC,IAAI,CAAA;YACtC,CAAC,IAAI,CAAC7K,oBAAoB,CAAC4K,eAAe,IAAI,CAACE,sBAAsB,CAACF,UAAAA,CAAAA,CAAAA;AACxE,SAAA;AACA,QAAA,IAAMG,QAAW,GAAA,IAAI,CAACpO,MAAM,CAACoO,QAAQ,CAAA;QACrC,IAAK,IAAIrJ,IAAI,CAAGC,EAAAA,CAAAA,GAAIoJ,SAAS/L,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;gBAC/C,0DAACqJ,EAAAA,qBAAAA,CAAAA;AAAAA,YAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACrJ,CAAE,CAAA,CAACkD,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAtB,0DAAA,GAACmG,qBAAuCvC,CAAAA,oCAAoC,KAA5E,IAAA,GAAA,KAAA,CAAA,GAAA,0DAAA,CAAA,IAAA,CAACuC,qBAA8EH,EAAAA,UAAAA,CAAAA,CAAAA;AACjF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQpC,oCA4BP,GA5BD,SAAQA,oCAAqC1I,CAAAA,KAAa,EAAEkL,YAA4B,EAAA;AAA5BA,QAAAA,IAAAA,yBAAAA,YAAwB,GAAA,IAAA,CAAA;AAClF,QAAA,IAAIC,UAAa,GAAA,KAAA,CAAA;AACjB,QAAA,IAAID,YAAc,EAAA;YAChB,IAA6F,KAAA,GAAA,IAAI,EAAnEE,sBAA+D,KAArFlD,CAAAA,oBAAAA,EAA2CE,iBAAoBiD,GAAsB,KAA1CjD,CAAAA,kBAAAA,CAAAA;AACnD,YAAA,IAAIgD,uBAAuBC,iBAAmB,EAAA;AAC5C,gBAAA,IACED,wBAAwBhE,uBAAwB0C,CAAAA,YAAY,IAC5DuB,iBAAsBhE,KAAAA,qBAAAA,CAAsBiD,YAAY,EACxD;AACA,oBAAA,IAAI,CAACC,sBAAsB,EAAA,CAAA;AAC3B,oBAAA,IAAI,CAACC,yBAAyB,EAAA,CAAA;oBAC9BW,UAAa,GAAA,IAAA,CAAA;AACf,iBAAA;AACA,gBAAA,IAAI,CAAChC,0BAA0B,EAAA,CAAA;AAC/B,gBAAA,IAAI,CAAChJ,iBAAiB,CAACwI,oBAAAA,CAAqBS,WAAW,CAAA,CAAA;AACvDpJ,gBAAAA,KAAAA,IAAS2I,qBAAqBoC,IAAI,CAAA;AACpC,aAAA;AACF,SAAA;AACA,QAAA,IAAMO,iBAAoB,GAAA,IAAI,CAACpL,oBAAoB,CAACF,KAAAA,CAAAA,CAAAA;AACpD,QAAA,CAACsL,iBAAqB,IAAA,IAAI,CAACN,sBAAsB,CAAChL,KAAAA,CAAAA,CAAAA;QAClD,IAAImL,UAAAA,IAAc,CAACG,iBAAmB,EAAA;AACpC,YAAA,IAAML,QAAW,GAAA,IAAI,CAACpO,MAAM,CAACoO,QAAQ,CAAA;YACrC,IAAK,IAAIrJ,IAAI,CAAGC,EAAAA,CAAAA,GAAIoJ,SAAS/L,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;oBAC/C,0DAACqJ,EAAAA,qBAAAA,CAAAA;AAAAA,gBAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACrJ,CAAE,CAAA,CAACkD,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAtB,0DAAA,GAACmG,qBAAuCvC,CAAAA,oCAAoC,KAA5E,IAAA,GAAA,KAAA,CAAA,GAAA,0DAAA,CAAA,IAAA,CAACuC,uBAA8EjL,KAAOmL,EAAAA,UAAAA,CAAAA,CAAAA;AACxF,aAAA;AACF,SAAA;;AAEAA,QAAAA,UAAAA,IAAc,IAAI,CAACR,OAAO,CAACC,kBAAkB,CAACC,QAAQ,CAAA,GAAA,CAAA,CAAA;AACxD,KAAA,CAAA;AA/ZWvD,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YAoBP0B,GAAAA,EAAAA,MAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACzB,KAAK,CAAA;AACnB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAShH,KAAc,EAAA;AACrB,gBAAA,IAAwB,KAAA,GAAA,IAAI,EAAbyI,OAAS,KAAhBzB,CAAAA,KAAAA,CAAAA;AACR,gBAAA,IAAIyB,SAASzI,KAAO,EAAA,OAAA;AACnByI,gBAAAA,CAAAA,IAAKhE,CAAAA,CAAC,KAAKzE,KAAAA,CAAMyE,CAAC,IAAIgE,IAAAA,CAAK/D,CAAC,KAAK1E,MAAM0E,CAAAA,KAAM+D,IAAAA,CAAKC,QAAQ,CAAC1I,KAAAA,CAAAA,CAAAA;AAC9D,aAAA;;;YAKIwI,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACtB,MAAM,CAAA;AACpB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAUlH,KAAc,EAAA;AACtB,gBAAA,IAA0B,KAAA,GAAA,IAAI,EAAdwI,QAAU,KAAlBtB,CAAAA,MAAAA,CAAAA;AACR,gBAAA,IAAIsB,UAAUxI,KAAO,EAAA,OAAA;AACpBwI,gBAAAA,CAAAA,KAAM/D,CAAAA,CAAC,KAAKzE,KAAAA,CAAMyE,CAAC,IAAI+D,KAAAA,CAAM9D,CAAC,KAAK1E,MAAM0E,CAAAA,KAAM8D,KAAAA,CAAME,QAAQ,CAAC1I,KAAAA,CAAAA,CAAAA;AACjE,aAAA;;;YAYI6K,GAAAA,EAAAA,qBAAAA;;;;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAClD,oBAAoB,CAAA;AAClC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAwB3H,KAA8B,EAAA;AACpD,gBAAA,IAAI,IAAI,CAAC2H,oBAAoB,KAAK3H,KAAO,EAAA,OAAA;gBACzC,IAAI,CAAC2H,oBAAoB,GAAG3H,KAAAA,CAAAA;gBAC5B,OAAQA,KAAAA;AACN,oBAAA,KAAK6G,wBAAwByC,IAAI,CAAA;AACjC,oBAAA,KAAKzC,wBAAwB6C,KAAK,CAAA;AAClC,oBAAA,KAAK7C,wBAAwB2C,MAAM;AACjC,wBAAA,IAAI,CAACT,kBAAkB,EAAA,CAAA;AACvB,wBAAA,MAAA;AACF,oBAAA,KAAKlC,wBAAwB0C,YAAY;AACvC,wBAAA,IAAI,CAACR,kBAAkB,EAAA,CAAA;AACvB,wBAAA,IAAI,CAACjB,cAAc,EAAA,CAAA;AACnB,wBAAA,MAAA;AAGJ,iBAAA;AACF,aAAA;;;YASIkD,GAAAA,EAAAA,WAAAA;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC3D,UAAU,CAAA;AACxB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAcrH,KAAa,EAAA;AACzB,gBAAA,IAAI,CAACiL,MAAAA,CAAOC,QAAQ,CAAClL,KAAQ,CAAA,EAAA,OAAA;AAC7B,gBAAA,IAAImL,SAASC,MAAM,CAACpL,OAAO,IAAI,CAACqH,UAAU,CAAG,EAAA,OAAA;gBAC7C,IAAI,CAACA,UAAU,GAAGrH,KAAAA,CAAAA;AAClB,gBAAA,IAAI,IAAI,CAAC2H,oBAAoB,GAAGd,uBAAAA,CAAwByC,IAAI,EAAE;AAC5D,oBAAA,IAAI,CAACP,kBAAkB,EAAA,CAAA;oBACvB,IAAI,CAACpB,oBAAoB,GAAGd,uBAAAA,CAAwB6C,KAAK,IAAI,IAAI,CAAC5B,cAAc,EAAA,CAAA;AAClF,iBAAA;AACF,aAAA;;;YASIuD,GAAAA,EAAAA,YAAAA;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC/D,WAAW,CAAA;AACzB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAetH,KAAa,EAAA;AAC1B,gBAAA,IAAI,CAACiL,MAAAA,CAAOC,QAAQ,CAAClL,KAAQ,CAAA,EAAA,OAAA;AAC7B,gBAAA,IAAImL,SAASC,MAAM,CAACpL,OAAO,IAAI,CAACsH,WAAW,CAAG,EAAA,OAAA;gBAC9C,IAAI,CAACA,WAAW,GAAGtH,KAAAA,CAAAA;AACnB,gBAAA,IAAI,IAAI,CAAC2H,oBAAoB,GAAGd,uBAAAA,CAAwB6C,KAAK,EAAE;AAC7D,oBAAA,IAAI,CAACX,kBAAkB,EAAA,CAAA;oBACvB,IAAI,CAACpB,oBAAoB,GAAGd,uBAAAA,CAAwByC,IAAI,IAAI,IAAI,CAACxB,cAAc,EAAA,CAAA;AACjF,iBAAA;AACF,aAAA;;;YASIwD,GAAAA,EAAAA,aAAAA;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC/D,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBvH,KAAa,EAAA;AAC3B,gBAAA,IAAI,CAACiL,MAAAA,CAAOC,QAAQ,CAAClL,KAAQ,CAAA,EAAA,OAAA;AAC7B,gBAAA,IAAImL,SAASC,MAAM,CAACpL,OAAO,IAAI,CAACuH,YAAY,CAAG,EAAA,OAAA;gBAC/C,IAAI,CAACA,YAAY,GAAGvH,KAAAA,CAAAA;gBACpB,IAAI,CAAC2H,oBAAoB,GAAGd,uBAAAA,CAAwB2C,MAAM,IAAI,IAAI,CAACT,kBAAkB,EAAA,CAAA;AACvF,aAAA;;;YAYI+B,GAAAA,EAAAA,mBAAAA;;;;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACjD,kBAAkB,CAAA;AAChC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAsB7H,KAA4B,EAAA;AAChD,gBAAA,IAAI,IAAI,CAAC6H,kBAAkB,KAAK7H,KAAO,EAAA,OAAA;gBACvC,IAAI,CAAC6H,kBAAkB,GAAG7H,KAAAA,CAAAA;gBAC1B,OAAQA,KAAAA;AACN,oBAAA,KAAK8G,sBAAsB6C,GAAG,CAAA;AAC9B,oBAAA,KAAK7C,sBAAsBgD,MAAM,CAAA;AACjC,oBAAA,KAAKhD,sBAAsB+C,MAAM;AAC/B,wBAAA,IAAI,CAACd,kBAAkB,EAAA,CAAA;AACvB,wBAAA,MAAA;AACF,oBAAA,KAAKjC,sBAAsBiD,YAAY;AACrC,wBAAA,IAAI,CAAChB,kBAAkB,EAAA,CAAA;AACvB,wBAAA,IAAI,CAACjB,cAAc,EAAA,CAAA;AACnB,wBAAA,MAAA;AAGJ,iBAAA;AACF,aAAA;;;YASIyD,GAAAA,EAAAA,UAAAA;;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC/D,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAaxH,KAAa,EAAA;AACxB,gBAAA,IAAI,CAACiL,MAAAA,CAAOC,QAAQ,CAAClL,KAAQ,CAAA,EAAA,OAAA;AAC7B,gBAAA,IAAImL,SAASC,MAAM,CAACpL,OAAO,IAAI,CAACwH,SAAS,CAAG,EAAA,OAAA;gBAC5C,IAAI,CAACA,SAAS,GAAGxH,KAAAA,CAAAA;AACjB,gBAAA,IAAI,IAAI,CAAC6H,kBAAkB,GAAGf,qBAAAA,CAAsB6C,GAAG,EAAE;AACvD,oBAAA,IAAI,CAACZ,kBAAkB,EAAA,CAAA;oBACvB,IAAI,CAAClB,kBAAkB,GAAGf,qBAAAA,CAAsBgD,MAAM,IAAI,IAAI,CAAChC,cAAc,EAAA,CAAA;AAC/E,iBAAA;AACF,aAAA;;;YAKI0D,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC/D,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBzH,KAAa,EAAA;AAC3B,gBAAA,IAAI,CAACiL,MAAAA,CAAOC,QAAQ,CAAClL,KAAQ,CAAA,EAAA,OAAA;AAC7B,gBAAA,IAAImL,SAASC,MAAM,CAACpL,OAAO,IAAI,CAACyH,YAAY,CAAG,EAAA,OAAA;gBAC/C,IAAI,CAACA,YAAY,GAAGzH,KAAAA,CAAAA;AACpB,gBAAA,IAAI,IAAI,CAAC6H,kBAAkB,GAAGf,qBAAAA,CAAsBgD,MAAM,EAAE;AAC1D,oBAAA,IAAI,CAACf,kBAAkB,EAAA,CAAA;oBACvB,IAAI,CAAClB,kBAAkB,GAAGf,qBAAAA,CAAsB6C,GAAG,IAAI,IAAI,CAAC7B,cAAc,EAAA,CAAA;AAC5E,iBAAA;AACF,aAAA;;;YAKI2D,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC/D,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgB1H,KAAa,EAAA;AAC3B,gBAAA,IAAI,CAACiL,MAAAA,CAAOC,QAAQ,CAAClL,KAAQ,CAAA,EAAA,OAAA;AAC7B,gBAAA,IAAImL,SAASC,MAAM,CAACpL,OAAO,IAAI,CAAC0H,YAAY,CAAG,EAAA,OAAA;gBAC/C,IAAI,CAACA,YAAY,GAAG1H,KAAAA,CAAAA;gBACpB,IAAI,CAAC6H,kBAAkB,GAAGf,qBAAAA,CAAsB+C,MAAM,IAAI,IAAI,CAACd,kBAAkB,EAAA,CAAA;AACnF,aAAA;;;AAzNWhC,IAAAA,OAAAA,WAAAA,CAAAA;EAAoB2E,SAgahC,EAAA;;;;;;;;;;;;;;;;;;;;;;AAED;;;IAIO,IAAKC,sBAAAA,iBAAAA,SAAAA,sBAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,sBAAAA,CAAAA;AAGX,CAAA,CAAA,EAAA,CAAA;;AC7ZM,IAAA,UAAA,iBAAA,SAAA,QAAA,EAAA;AAAMC,IAAAA,SAAAA,CAAAA,UAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,UAAAA,CA4ECtP,MAAc,EAAA;;AACxB,QAAA,KAAA,GAAA,QAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,MAjER,CAAA,IAAA,IAAA;;;AAGC,MAAA,KAAA,CAEDuP,iBAA0B,IAAIC,OAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,EAAG,qBAGjC,KAAA,CAEdtP,qBAA6B,CAAC,CAAA,mBAG9BU,KAAAA,CAAAA,kBAAAA,GAA8B,wBAChB,KAAA,CAEdF,+BAAyC,EAAE,mBAG7B,KAAA,CAEdT,gBAAwB,CAAC,CAAA,mBAGzBY,KAAAA,CAAAA,aAAAA,GAAyB,wBACX,KAAA,CAEdF,0BAAoC,EAAE,EAAA,KAAA,CAM9B8O,kBAA2B,IAEzBC,EAAAA,KAAAA,CAAAA,MAAAA,GAAgB,IAAIC,KAAM,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;QA+B3C,KAAKC,CAAAA,gBAAgB,GAAGC,mBAAAA,CAAoBC,WAAW,GAAA,CAAA,CAAA;AACvD,QAAA,KAAA,CAAKC,eAAe,GAAG,KAAKA,CAAAA,eAAe,CAAC/O,IAAI,CAAA,KAAA,CAAA,CAAA;;AAEhD,QAAA,KAAA,CAAK0O,MAAM,CAAChE,eAAe,GAAG,MAAKqE,eAAe,CAAA;AAClD,QAAA,KAAA,CAAK9O,cAAc,GAAG,KAAKA,CAAAA,cAAc,CAACD,IAAI,CAAA,KAAA,CAAA,CAAA;AAC9C,QAAA,KAAA,CAAKD,mBAAmB,GAAG,KAAKA,CAAAA,mBAAmB,CAACC,IAAI,CAAA,KAAA,CAAA,CAAA;;;AAnF/CsO,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;;AAuFX,IAAA,MAAA,CAASU,SAER,GAFD,SAASA,SAAUC,CAAAA,UAAU,EAAEC,UAAU,EAAA;QACvC,OAAOC,kBAAAA,CAAmBC,cAAc,CAACH,UAAYC,EAAAA,UAAAA,CAAAA,CAAAA;AACvD,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASG,MAER,GAFD,SAASA,MAAOJ,CAAAA,UAAU,EAAEC,UAAU,EAAA;QACpCC,kBAAmBG,CAAAA,KAAK,CAACL,UAAYC,EAAAA,UAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASK,0BAGR,GAHD,SAASA,0BAA2BC,CAAAA,OAAO,EAAEC,OAAgB,EAAA;;QAE3D,IAAI,CAACC,oCAAoC,CAACF,OAASC,EAAAA,OAAAA,CAAAA,CAAAA;AACrD,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASE,cAgBR,GAhBD,SAASA,cAAAA,CAAeH,OAAO,EAAA;;QAE7B,IAAI,IAAI,CAACI,iBAAiB,KAAK,IAAI,CAACC,MAAM,CAACC,IAAI,CAACC,UAAU,EAAE;YAC1D,IAAI,CAACC,OAAO,CAACR,OAAAA,CAAAA,CAAAA;AACf,SAAA;QAEA,IAAI,CAACS,OAAO,CAACT,OAAAA,CAAAA,CAAAA;;AAGbU,QAAAA,qBAAAA,CAAsBC,eAAe,CACnCX,OAAAA,CAAQY,MAAM,CAACC,kBAAkB;AAEjC,QAAA,IAAI,CAACC,UAAU,CAACC,gBAAgB;AAEhC,QAAA,IAAI,CAACF,kBAAkB,CAAA,CAAA;AAE3B,KAAA,CAAA;;IAGA,MAAS7P,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;;QAEP,IAAI,CAACgQ,eAAe,IAAI,IAAI,CAACC,KAAK,CAACC,kBAAkB,CAACC,oBAAoB,CAAC,IAAI,CAAA,CAAA;AAC/E,QAAA,IAAI,CAAC3R,MAAM,CAAC4R,yBAAyB,CAACpN,SAASqN,iBAAiB,CAAA,CAAA;QAChEpQ,KAAMC,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;QAC7BD,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,KAAA,CAAA;;IAGA,MAASI,CAAAA,iBAMR,GAND,SAASA,iBAAAA,GAAAA;;QAEP,IAAI,CAACyP,eAAe,IAAI,IAAI,CAACC,KAAK,CAACC,kBAAkB,CAACI,uBAAuB,CAAC,IAAI,CAAA,CAAA;AAClF,QAAA,IAAI,CAAC9R,MAAM,CAAC4R,yBAAyB,CAACpN,SAASqN,iBAAiB,CAAA,CAAA;QAChEpQ,KAAMO,CAAAA,eAAe,CAAC,IAAI,CAAA,CAAA;QAC1BP,KAAMQ,CAAAA,UAAU,CAAC,IAAI,CAAA,CAAA;AACvB,KAAA,CAAA;AAEA;;MAGAf,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,GAAAA;AACS,QAAA,IAAA,eAAA,CAAA;AAAA,QAAA,IAAA,+BAAA,CAAA;QAAP,OAAO,CAAA,+BAAA,GAAA,CAAA,eAAA,GAAA,IAAI,CAACG,SAAS,EAAd,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAkBH,eAAe,EAAA,KAAA,IAAA,GAAjC,+BAAuC,GAAA,CAAA,CAAA;AAChD,KAAA,CAAA;AAEA;;MAGAqB,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,cAAAA,GAAAA;QACE,IAAI,CAAC3B,kBAAkB,IAAIa,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAEf,KAAAA,CAAMgB,yBAAyB,CAAC,IAAI,CAAA,CAAA,CAAA;QACzF,OAAO,IAAI,CAACC,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;MAGArB,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACR,aAAa,IAAIY,KAAMkB,CAAAA,QAAQ,CAAC,IAAI,EAAElB,KAAAA,CAAMmB,oBAAoB,CAAC,IAAI,CAAA,CAAA,CAAA;QAC1E,OAAO,IAAI,CAACC,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA;;AAEC,MACD,MACA5B,CAAAA,cAIC,GALD,SACAA,eAAe6B,IAAY,EAAA;AACzB,QAAA,IAAIA,SAASC,iBAAkBC,CAAAA,MAAM,IAAIF,IAASjB,KAAAA,mBAAAA,CAAoBC,kBAAkB,EAAE;YACxFL,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD,OACAZ,mBAWC,GAZD,SACAA,mBAAoB+B,CAAAA,IAAY,EAAE9C,MAAc,EAAA;QAC9C,OAAQ8C,IAAAA;AACN,YAAA,KAAKC,kBAAkBC,MAAM;gBAC3BvB,KAAMC,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;gBAC7BD,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,YAAA,KAAKoB,kBAAkBgP,KAAK;gBAC1B/R,MAAO4R,CAAAA,yBAAyB,CAACpN,QAAAA,CAASqN,iBAAiB,CAAA,CAAA;AAC3D,gBAAA,MAAA;AAGJ,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD3O,MAAAA,CAAAA,cAIC,GAJDA,SAAAA,eAAeC,KAAuB,EAAA;QACpC,IAAIA,KAAAA,GAAQc,gBAAiB+N,CAAAA,WAAW,EAAE;AACxC,YAAA,IAAI,CAACpC,gBAAgB,IAAA,CAAA,CAAA;AACvB,SAAA;AACF,KAAA,CAAA;IAEA,MACQG,CAAAA,eAEP,GAHD,SACQA,eAAAA,GAAAA;AACN,QAAA,IAAI,CAACH,gBAAgB,IAAA,CAAA,CAAA;AACvB,KAAA,CAAA;AAEA;;MAGAqC,MAAAA,CAAAA,gBAGC,GAHDA,SAAAA,gBAAAA,GAAAA;;AAEE,QAAA,OAAO,IAAI,CAACpB,MAAM,CAACqB,eAAe,CAACC,uBAAuB,CAAA;AAC5D,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,QAsBC,GAtBDA,SAAAA,SAASC,GAAQ,EAAEC,GAAgB,EAAEC,QAA0C,EAAA;QAA1CA,IAAAA,QAAAA,KAAAA,KAAAA,CAAAA,EAAAA,QAAmB5D,GAAAA,MAAAA,CAAO6D,gBAAgB,CAAA;QAC7E,IAAMC,KAAAA,GAAQnD,UAvNLA,CAuNgBoD,UAAU,CAAA;AACnC,QAAA,IAAMzK,SAAyB,GAAA,IAAI,CAAC0K,gBAAgB,CAAC1K,SAAS,CAAA;AAC9D,QAAA,IAAM2K,SAASH,KAAMG,CAAAA,MAAM,CAACxG,QAAQ,CAACnE,UAAU4K,YAAY,CAAA,CAAA;QAC3DJ,KAAMF,CAAAA,QAAQ,GAAG,CAACO,OAAAA,CAAQC,GAAG,CAACH,MAAAA,EAAQ3K,UAAU+K,aAAa,CAAA,CAAA;QAC7D,IAAMC,WAAAA,GAAcZ,GAAIa,CAAAA,cAAc,CAACT,KAAAA,CAAAA,CAAAA;QACvC,IAAIQ,WAAAA,IAAe,CAAKA,IAAAA,WAAAA,GAAcV,QAAU,EAAA;AAC9C,YAAA,IAAMY,gBAAgBd,GAAIe,CAAAA,QAAQ,CAACH,WAAa3D,EA7NzCA,WA6NoD+D,UAAU,CAAA,CAAA;YACrE,IAAMC,cAAAA,GAAiBhE,UA9NhBA,CA8N2BiE,QAAQ,CAAA;AAC1CnM,YAAAA,MAAAA,CAAOC,MAAM,CAACY,SAAUuL,CAAAA,WAAW,EAAEF,cAAAA,CAAAA,CAAAA;YACrC,IAAMG,aAAAA,GAAgBnE,UAhOfA,CAgO0BoE,UAAU,CAAA;YAC3CZ,OAAQa,CAAAA,mBAAmB,CAACR,aAAAA,EAAeG,cAAgBG,EAAAA,aAAAA,CAAAA,CAAAA;AAC3D,YAAA,IAAI,IAAI,CAACG,QAAQ,CAACH,aAAgB,CAAA,EAAA;gBAChCnB,GAAIrN,CAAAA,SAAS,GAAG,IAAI,CAAA;AACpBqN,gBAAAA,GAAAA,CAAIC,QAAQ,GAAGU,WAAAA,CAAAA;AACfX,gBAAAA,GAAAA,CAAItS,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;gBACxBsS,GAAIM,CAAAA,MAAM,CAACxG,QAAQ,CAACwG,MAAAA,CAAAA,CAAAA;gBACpBN,GAAIuB,CAAAA,KAAK,CAACzH,QAAQ,CAAC+G,aAAAA,CAAAA,CAAAA;gBACnB,OAAO,IAAA,CAAA;AACT,aAAA;AACF,SAAA;QACA,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAUS,QAYT,GAZD,SAAUA,QAAAA,CAASH,aAAsB,EAAA;AACvC,QAAA,IAAQtL,CAASsL,GAAAA,aAAAA,CAATtL,CAAGC,EAAAA,CAAAA,GAAMqL,aAANrL,CAAAA,CAAAA,CAAAA;AACX,QAAA,IAAM0L,WAA2B,GAAA,IAAI,CAACnB,gBAAgB,CAAC1K,SAAS,CAAA;QAChE,IAAgC6L,iBAAAA,GAAAA,WAAY3H,CAAAA,IAAI,EAArCgB,QAAqB2G,iBAAxB3L,CAAAA,CAAAA,EAAUC,MAAGkF,GAAWwG,iBAAd1L,CAAAA,CAAAA,CAAAA;QAClB,IAAiC0L,kBAAAA,GAAAA,WAAY5H,CAAAA,KAAK,EAAvC6H,SAAsBD,kBAAzB3L,CAAAA,CAAAA,EAAWC,MAAG4L,GAAWF,kBAAd1L,CAAAA,CAAAA,CAAAA;AACnB,QAAA,IAA6E,uBAAA,IAAI,CAACmH,cAAc,EAArF0E,cAAkE,oBAArE9L,CAAAA,CAAAA,EAAgBC,aAAqD,GAAA,oBAAA,CAArDA,GAAkB8L,YAAGC,GAAgC,qBAAnCD,CAAiBE,EAAGC,aAAe,oBAAlBD,CAAAA,CAAAA,CAAAA;QAC3D,OACEjM,CAAAA,IAAK,CAACgF,KAAQ4G,GAAAA,MAAAA,GAASE,eACvB9L,CAAKgF,IAAAA,KAAAA,IAAS,CAAA,GAAI4G,MAAK,CAAA,GAAKI,gBAC5B/L,CAAK,IAAA,CAACkF,SAAS0G,MAASK,GAAAA,UAAAA,IACxBjM,KAAKkF,MAAU,IAAA,CAAI0G,GAAAA,MAAK,CAAKM,GAAAA,aAAAA,CAAAA;AAEjC,KAAA,CAAA;IAEA,MAAmBC,CAAAA,UASlB,GATD,SAAmBA,UAAAA,GAAAA;QACjB,IAAI,IAAI,CAACC,SAAS,EAAE;AAClB,YAAA,IAAI,CAACvC,gBAAgB,EAAA,CAAGwC,YAAY,CAAC,IAAI,CAACD,SAAS,CAAA,CAAA;YACnD,IAAI,CAACA,SAAS,GAAG,IAAA,CAAA;AACnB,SAAA;AACA,QAAA,QAAA,CAAA,SAAA,CAAMD,UAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;AAEL,QAAA,IAAI,CAAC7E,MAAM,CAAChE,eAAe,GAAG,IAAA,CAAA;QAC9B,IAAI,CAACgE,MAAM,GAAG,IAAA,CAAA;AAChB,KAAA,CAAA;AArQWJ,IAAAA,aAAAA,CAAAA,UAAAA,EAAAA;;YAoDPoF,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChF,MAAM,CAAA;AACpB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAUhM,KAAY,EAAA;AACpB,gBAAA,IAAI,IAAI,CAACgM,MAAM,KAAKhM,KAAO,EAAA;AACzB,oBAAA,IAAI,CAACgM,MAAM,CAACtD,QAAQ,CAAC1I,KAAAA,CAAAA,CAAAA;AACvB,iBAAA;AACF,aAAA;;;YAKIiR,GAAAA,EAAAA,gBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAClF,eAAe,CAAA;AAC7B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAmB/L,KAAc,EAAA;gBAC/B,IAAI,CAAC+L,eAAe,GAAG/L,KAAAA,CAAAA;AACzB,aAAA;;;AAvEW4L,IAAAA,OAAAA,UAAAA,CAAAA;EAAmBsF,QAsQ/B,EAAA;AArQC,iBADWtF,UAEJ+D,CAAAA,UAAAA,GAAsB,IAAIP,OAAAA,EAAAA,CAAAA;AACjC,iBAHWxD,UAIJoE,CAAAA,UAAAA,GAAsB,IAAIZ,OAAAA,EAAAA,CAAAA;AACjC,iBALWxD,UAMJiE,CAAAA,QAAAA,GAAmB,IAAInM,MAAAA,EAAAA,CAAAA;AAC9B,iBAPWkI,UAQJoD,CAAAA,UAAAA,GAAoB,IAAImC,KAAAA,EAAAA,CAAAA;AAC/B,iBATWvF,UAAAA,CAUJwF,gBAAmCC,GAAAA,cAAAA,CAAeC,SAAS,CAAC,oBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAXrBC,IAAAA,mBAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA,OAAAA,CAAAA;;AAyQhD;;IAGO,IAAKC,qBAAAA,iBAAAA,SAAAA,qBAAAA,EAAAA;;AAAAA,IAAAA,OAAAA,qBAAAA,CAAAA;AAEX,CAAA,CAAA,EAAA,CAAA;;ACzRD;;IAGO,IAAMC,aAAN,iBAAA,SAAA,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,CAoECnV,MAAc,EAAA;;gBACxB,MAAMA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,mBAhERE,KAAAA,CAAAA,kBAAAA,GAA6B,CAAC,CAC9B,yBAEAU,kBAA8B,GAAA,KAAA,mBAG9BF,KAAAA,CAAAA,4BAAAA,GAAyC,EAAE,yBAK3CT,aAAwB,GAAA,CAAC,CACzB,mBAEAY,KAAAA,CAAAA,aAAAA,GAAyB,wBACX,KAAA,CAEdF,0BAAoC,EAAE,mBAItCL,KAAAA,CAAAA,kBAAAA,GAA8B,KAC9B,mBAEA8U,KAAAA,CAAAA,uBAAAA,GAAmC,aAGzBC,YAA6B,GAAA,EAAE,QAE/B7U,YAAwB,GAAA,IAAA,EAAA,KAAA,CAExB8U,oEAE2C,KAAA,CAE7CC,gBAA4B,GAAA,KAAA,EAAA,KAAA,CAE5BC,kBAA8B,GAAA,KAAA,CAAA;AA4BpC,QAAA,KAAA,CAAKvU,cAAc,GAAG,KAAKA,CAAAA,cAAc,CAACD,IAAI,CAAA,KAAA,CAAA,CAAA;AAC9C,QAAA,KAAA,CAAKD,mBAAmB,GAAG,KAAKA,CAAAA,mBAAmB,CAACC,IAAI,CAAA,KAAA,CAAA,CAAA;;;AAvE/CmU,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AA0EX;;;AAGC,MACDM,MAAAA,CAAAA,aAQC,GARDA,SAAAA,cAAcC,UAAsB,EAAA;QAClC,IAAM/R,WAAAA,GAAc+R,WAAWlV,YAAY,CAAA;QAC3C,IAAImD,WAAAA,KAAgB,IAAI,EAAE;YACxBA,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAagS,gBAAgB,CAACD,UAAAA,CAAAA,CAAAA;AAC9B,YAAA,IAAI,CAACL,YAAY,CAAC/N,IAAI,CAACoO,UAAAA,CAAAA,CAAAA;YACvBA,UAAWlV,CAAAA,YAAY,GAAG,IAAI,CAAA;AAC9BkV,YAAAA,UAAAA,CAAWE,SAAS,CAAC,IAAI,CAACN,MAAM,EAAE,IAAA,CAAA,CAAA;AACpC,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDK,MAAAA,CAAAA,gBAWC,GAXDA,SAAAA,iBAAiBD,UAAsB,EAAA;QACrC,IAAMG,WAAAA,GAAc,IAAI,CAACR,YAAY,CAAA;QACrC,IAAMS,YAAAA,GAAeD,WAAYxT,CAAAA,MAAM,GAAG,CAAA,CAAA;AAC1C,QAAA,IAAK,IAAI0C,CAAAA,GAAI+Q,YAAc/Q,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACtC,YAAA,IAAI8Q,WAAW,CAAC9Q,CAAE,CAAA,KAAK2Q,UAAY,EAAA;gBACjC3Q,CAAM+Q,KAAAA,YAAAA,KAAiBD,WAAW,CAAC9Q,EAAE,GAAG8Q,WAAW,CAACC,YAAAA,CAAa,CAAD,CAAA;AAChED,gBAAAA,WAAAA,CAAYxT,MAAM,GAAGyT,YAAAA,CAAAA;AACrBJ,gBAAAA,UAAAA,CAAWlV,YAAY,GAAG,IAAA,CAAA;AAC1B,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAuV,MAAAA,CAAAA,gBAMC,GANDA,SAAAA,gBAAAA,GAAAA;QACE,IAAMF,WAAAA,GAAc,IAAI,CAACR,YAAY,CAAA;QACrC,IAAK,IAAItQ,IAAI,CAAGC,EAAAA,CAAAA,GAAI6Q,YAAYxT,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAClD8Q,YAAAA,WAAW,CAAC9Q,CAAAA,CAAE,CAACvE,YAAY,GAAG,IAAA,CAAA;AAChC,SAAA;AACAqV,QAAAA,WAAAA,CAAYxT,MAAM,GAAG,CAAA,CAAA;AACvB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2T,QAOR,GAPD,SAASA,QAAAA,CAASC,SAAiB,EAAA;QACjC,IAAI,IAAI,CAAC1U,qBAAqB,EAAI,EAAA;YAChC,IAAMsU,WAAAA,GAAc,IAAI,CAACR,YAAY,CAAA;YACrC,IAAK,IAAItQ,IAAI,CAAGC,EAAAA,CAAAA,GAAI6Q,YAAYxT,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAClD8Q,gBAAAA,WAAW,CAAC9Q,CAAAA,CAAE,CAACmR,SAAS,CAACD,SAAAA,CAAAA,CAAAA;AAC3B,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAASE,CAAAA,kBAGR,GAHD,SAASA,kBAAAA,GAAAA;QACP,IAAI,CAACX,kBAAkB,GAAG,IAAA,CAAA;QAC1B,IAAI,CAACY,YAAY,CAAC,KAAA,CAAA,CAAA;AACpB,KAAA,CAAA;IAEA,MAASC,CAAAA,gBAGR,GAHD,SAASA,gBAAAA,GAAAA;QACP,IAAI,CAACb,kBAAkB,GAAG,KAAA,CAAA;QAC1B,IAAI,CAACY,YAAY,CAAC,KAAA,CAAA,CAAA;AACpB,KAAA,CAAA;IAEA,MAASE,CAAAA,cAGR,GAHD,SAASA,cAAAA,GAAAA;QACP,IAAI,CAACf,gBAAgB,GAAG,IAAA,CAAA;QACxB,IAAI,CAACa,YAAY,CAAC,KAAA,CAAA,CAAA;AACpB,KAAA,CAAA;IAEA,MAASG,CAAAA,aAGR,GAHD,SAASA,aAAAA,GAAAA;QACP,IAAI,CAAChB,gBAAgB,GAAG,KAAA,CAAA;QACxB,IAAI,CAACa,YAAY,CAAC,KAAA,CAAA,CAAA;AACpB,KAAA,CAAA;IAEA,MAASI,CAAAA,SAMR,GAND,SAASA,SAAAA,GAAAA;AACP,QAAA,MAAA,CAAA,SAAA,CAAMA,SAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACL,IAAMX,WAAAA,GAAc,IAAI,CAACR,YAAY,CAAA;QACrC,IAAK,IAAItQ,IAAI8Q,WAAYxT,CAAAA,MAAM,GAAG,CAAG0C,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;YAChD8Q,WAAW,CAAC9Q,CAAE,CAAA,CAAC0R,OAAO,EAAA,CAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAlU,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,cAAAA,GAAAA;QACE,IAAI,CAAC3B,kBAAkB,IAAIa,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAEf,KAAAA,CAAMgB,yBAAyB,CAAC,IAAI,CAAA,CAAA,CAAA;QACzF,OAAO,IAAI,CAACC,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;MAGArB,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACR,aAAa,IAAIY,KAAMkB,CAAAA,QAAQ,CAAC,IAAI,EAAElB,KAAAA,CAAMmB,oBAAoB,CAAC,IAAI,CAAA,CAAA,CAAA;QAC1E,OAAO,IAAI,CAACC,MAAM,CAAA;AACpB,KAAA,CAAA;;IAGA,MAASrB,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;;AAEP,QAAA,MAAA,CAAA,SAAA,CAAMA,gBAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACLC,KAAMC,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;QAC7BD,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;QACxB,IAAI,CAACyU,YAAY,CAAC,IAAA,CAAA,CAAA;AACpB,KAAA,CAAA;;IAGA,MAASrU,CAAAA,iBAMR,GAND,SAASA,iBAAAA,GAAAA;;AAEP,QAAA,MAAA,CAAA,SAAA,CAAMA,iBAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACLN,KAAMO,CAAAA,eAAe,CAAC,IAAI,CAAA,CAAA;QAC1BP,KAAMQ,CAAAA,UAAU,CAAC,IAAI,CAAA,CAAA;AACrB,QAAA,IAAI,CAACsT,gBAAgB,GAAG,IAAI,CAACC,kBAAkB,GAAG,KAAA,CAAA;AACpD,KAAA,CAAA;AAEA;;AAEC,MACD,MACAvU,CAAAA,cAIC,GALD,SACAA,eAAe6B,IAAY,EAAA;AACzB,QAAA,IAAIA,SAASC,iBAAkBC,CAAAA,MAAM,IAAIF,IAASjB,KAAAA,mBAAAA,CAAoBC,kBAAkB,EAAE;YACxFL,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD,MACAZ,CAAAA,mBAKC,GAND,SACAA,oBAAoB+B,IAAY,EAAA;AAC9B,QAAA,IAAIA,SAASC,iBAAkBC,CAAAA,MAAM,IAAIF,IAASjB,KAAAA,mBAAAA,CAAoBoB,mBAAmB,EAAE;YACzFxB,KAAMC,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;YAC7BD,KAAME,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD,MACAuB,CAAAA,cAIC,GALD,SACAA,eAAeC,KAAuB,EAAA;QACpC,IAAIA,KAAAA,GAAQc,gBAAiByS,CAAAA,iBAAiB,EAAE;YAC9C,IAAI,CAACtB,uBAAuB,GAAG,IAAA,CAAA;AACjC,SAAA;AACF,KAAA,CAAA;AAEA;;MAGA7T,MAAAA,CAAAA,qBAWC,GAXDA,SAAAA,qBAAAA,GAAAA;QACE,IAAI,IAAI,CAAC6T,uBAAuB,EAAE;YAChC,IAAM/P,KAAAA,GAAQ,IAAI,CAAChE,SAAS,EAAA,CAAA;YAC5B,IAAMsV,iBAAAA,GAAoB,IAAI,CAACnW,YAAY,KAAK,CAAC6E,KAAAA,IAASA,KAAM9D,CAAAA,qBAAqB,EAAC,CAAA,CAAA;AACtF,YAAA,IAAI,IAAI,CAACjB,kBAAkB,KAAKqW,iBAAmB,EAAA;gBACjD,IAAI,CAACrW,kBAAkB,GAAGqW,iBAAAA,CAAAA;gBAC1B,IAAI,CAACP,YAAY,CAAC,IAAA,CAAA,CAAA;AACpB,aAAA;YACA,IAAI,CAAChB,uBAAuB,GAAG,KAAA,CAAA;AACjC,SAAA;QACA,OAAO,IAAI,CAAC9U,kBAAkB,CAAA;AAChC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ8V,YASP,GATD,SAAQA,YAAAA,CAAaQ,OAAgB,EAAA;QACnC,IAAMC,KAAAA,GAAQ,IAAI,CAACC,oBAAoB,EAAA,CAAA;AACvC,QAAA,IAAI,IAAI,CAACxB,MAAM,KAAKuB,KAAO,EAAA;YACzB,IAAI,CAACvB,MAAM,GAAGuB,KAAAA,CAAAA;YACd,IAAMhB,WAAAA,GAAc,IAAI,CAACR,YAAY,CAAA;YACrC,IAAK,IAAItQ,IAAI,CAAGC,EAAAA,CAAAA,GAAI6Q,YAAYxT,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAClD8Q,gBAAAA,WAAW,CAAC9Q,CAAAA,CAAE,CAAC6Q,SAAS,CAACiB,KAAOD,EAAAA,OAAAA,CAAAA,CAAAA;AAClC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAQE,CAAAA,oBASP,GATD,SAAQA,oBAAAA,GAAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAACvV,qBAAqB,EAAI,EAAA;AACjC,YAAA,OAAA,CAAA,CAAA;AACF,SAAA;QACA,IAAI,IAAI,CAACiU,kBAAkB,EAAE;AAC3B,YAAA,OAAA,CAAA,CAAA;SACK,MAAA;YACL,OAAO,IAAI,CAACD,gBAAgB,GAAA,CAAA,GAAA,CAAA,CAAA;AAC9B,SAAA;AACF,KAAA,CAAA;AA9PWJ,IAAAA,aAAAA,CAAAA,aAAAA,EAAAA;;YA+CPU,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACR,YAAY,CAAA;AAC1B,aAAA;;;YAKI1R,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACnD,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBkD,KAAc,EAAA;AAC5B,gBAAA,IAAI,IAAI,CAAClD,YAAY,KAAKkD,KAAO,EAAA;oBAC/B,IAAI,CAAClD,YAAY,GAAGkD,KAAAA,CAAAA;oBACpB,IAAI,CAAC0R,uBAAuB,GAAG,IAAA,CAAA;AACjC,iBAAA;AACF,aAAA;;;AA/DWD,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB4B,MA+PlC,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,IAAA,gBAAKC,iBAAAA,SAAAA,gBAAAA,EAAAA;;;;;AAAAA,IAAAA,OAAAA,gBAAAA,CAAAA;AAKX,CAAA,CAAA,EAAA,CAAA;;ACnPM,IAAA,QAAA,iBAAA,SAAA,SAAA,EAAA;AAAMxS,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,CAkNCxE,MAAc,EAAA;;AACxB,QAAA,KAAA,GAAA,SAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,MA5MR,CAAA,IAAA,IAAA,mBAEAiX,KAAAA,CAAAA,YAAAA,GAAuB,CAAC,CAGxB,mBAEA/W,KAAAA,CAAAA,kBAAAA,GAA6B,CAAC,CAC9B,mBAEAU,KAAAA,CAAAA,kBAAAA,GAA8B,wBAChB,KAAA,CAEdF,4BAAyC,GAAA,EAAE,mBAE7B,KAAA,CAEdyE,aAAyB,GAAA,KAAA,mBAGzB+R,KAAAA,CAAAA,eAAAA,GAAmC,EAAE,mBAGrCC,KAAAA,CAAAA,sBAAAA,GAA0C,EAAE,mBAG5CC,KAAAA,CAAAA,aAAAA,GAAwB,CACxB,mBAEAC,KAAAA,CAAAA,iBAAAA,GAAkC,EAAE,mBAGpCC,KAAAA,CAAAA,eAAAA,GAAAA,CAAAA,mBACc,KAAA,CAEdnX,sBAAiD,IAAIC,eAAAA,EAAAA,EAAAA,KAAAA,CAG7CmX,WAAclN,GAAAA,gBAAAA,CAAiBmN,UAAU,EAIzCC,KAAAA,CAAAA,yBAAAA,GAA4BnN,wBAAyBoN,CAAAA,gBAAgB,QAErEC,UAAqB,GAAA,CAAA,EAAA,KAAA,CAErBC,SAAoB,GAAA,EAAA,EAAA,KAAA,CAEpBC,uBAAgC,IAAIlN,OAAAA,CAAQ,GAAK,EAAA,GAAA,CAAA,EAAA,KAAA,CAEjDmN,8BAAsC,GAEtCC,EAAAA,KAAAA,CAAAA,iBAAAA,GAA4B,CAAC,CAAA,EAAA,KAAA,CAE7BC,UAAmB,IAAIlF,OAAAA,EAAAA,CAAAA;AAuJ7B,QAAA,KAAA,CAAKmF,qBAAqB,GAAG,KAAKA,CAAAA,qBAAqB,CAACjX,IAAI,CAAA,KAAA,CAAA,CAAA;AAC5D,QAAA,KAAA,CAAKkX,uBAAuB,GAAG,KAAKA,CAAAA,uBAAuB,CAAClX,IAAI,CAAA,KAAA,CAAA,CAAA;AAChE,QAAA,KAAA,CAAKmX,0BAA0B,GAAG,KAAKA,CAAAA,0BAA0B,CAACnX,IAAI,CAAA,KAAA,CAAA,CAAA;AACtE,QAAA,KAAA,CAAKoX,6BAA6B,GAAG,KAAKA,CAAAA,6BAA6B,CAACpX,IAAI,CAAA,KAAA,CAAA,CAAA;;AAE5E,QAAA,KAAA,CAAK6W,oBAAoB,CAACnM,eAAe,GAAG,MAAK0M,6BAA6B,CAAA;AAC9E,QAAA,KAAA,CAAKrX,mBAAmB,GAAG,KAAKA,CAAAA,mBAAmB,CAACC,IAAI,CAAA,KAAA,CAAA,CAAA;QACxD,KAAKqX,CAAAA,gBAAgB,GAAGrY,MAAAA,CAAOsY,uBAAuB,EAAA,CAAA;;;AA3N7C9T,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AA8NX;;MAGA4N,MAAAA,CAAAA,QAcC,GAdDA,SAAAA,SAASC,GAAQ,EAAEC,GAAgB,EAAEC,QAA0C,EAAA;QAA1CA,IAAAA,QAAAA,KAAAA,KAAAA,CAAAA,EAAAA,QAAmB5D,GAAAA,MAAAA,CAAO6D,gBAAgB,CAAA;QAC7E,IAAM+F,SAAAA,GAAY,IAAI,CAACC,aAAa,EAAA,CAAA;QACpC,IAAK,IAAIzT,IAAIwT,SAAUlW,CAAAA,MAAM,GAAG,CAAG0C,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;YAC9C,IAAM3C,OAAAA,GAAUmW,SAAS,CAACxT,CAAE,CAAA,CAAA;YAC5B,IAAI3C,OAAAA,CAAQuS,cAAc,IAAIvS,OAAAA,CAAQgQ,QAAQ,CAACC,GAAAA,EAAKC,KAAKC,QAAW,CAAA,EAAA;gBAClE,OAAO,IAAA,CAAA;AACT,aAAA;AACF,SAAA;AACAD,QAAAA,GAAAA,CAAIrN,SAAS,GAAG,IAAA,CAAA;AAChBqN,QAAAA,GAAAA,CAAItS,MAAM,GAAG,IAAA,CAAA;AACbsS,QAAAA,GAAAA,CAAIC,QAAQ,GAAG,CAAA,CAAA;AACfD,QAAAA,GAAAA,CAAIuB,KAAK,CAACjG,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACpB0E,QAAAA,GAAAA,CAAIM,MAAM,CAAChF,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;QACrB,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AAEA;;MAGArL,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAACG,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;AAEC,MACD+V,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAWrH,MAAc,EAAA;QACvB,OAAO,IAAI,CAACkG,eAAe,KAAKjN,gBAAAA,CAAiBqO,iBAAiB,IAAI,IAAI,CAACC,OAAO,KAAKvH,MAAAA,CAAAA;AACzF,KAAA,CAAA;AAEA;;AAEC,MACDwH,MAAAA,CAAAA,iBAQC,GARDA,SAAAA,kBAAkBxH,MAAc,EAAA;QAC9B,IAAMyH,QAAAA,GAAW,IAAI,CAACvB,eAAe,CAAA;QACrC,IAAIuB,QAAAA,KAAaxO,gBAAiByO,CAAAA,kBAAkB,EAAE;YACpD,OAAO,IAAA,CAAA;AACT,SAAA;QACA,IAAMC,cAAAA,GAAiB,IAAI,CAACJ,OAAO,CAAA;;AAEnC,QAAA,OAAO,CAACI,cAAkB,IAAA,CAACA,cAAeC,CAAAA,oBAAoB,IAAID,cAAmB3H,KAAAA,MAAAA,CAAAA;AACvF,KAAA,CAAA;AAEA;;AAEC,MACDT,MAAAA,CAAAA,cA8CC,GA9CDA,SAAAA,eAAeH,OAAO,EAAA;QACpB,IAA0C,KAAA,GAAA,IAAI,EAAtCK,MAAAA,GAAkC,MAAlCA,MAAQyG,EAAiB2B,OAAS,KAA1B3B,CAAAA,eAAAA,CAAAA;AAChB,QAAA,IAAiE9G,eAAAA,GAAAA,OAAAA,CAAQY,MAAM,EAAvE8H,oBAAyD1I,GAAAA,eAAAA,CAAzD0I,oBAAsBC,EAAAA,WAAAA,GAAmC3I,eAAnC2I,CAAAA,WAAAA,EAAaC,OAAUC,GAAY7I,eAAtB4I,CAAAA,QAAAA,CAAAA;AAC3C,QAAA,IAAM,UAAErI,GAAeF,MAAOC,CAAAA,IAAI,CAA1BC,UAAAA,CAAAA;QACR,IAAMuI,cAAAA,GAAiB,IAAI,CAACpC,eAAe,CAAA;AAC3CoC,QAAAA,cAAAA,CAAejX,MAAM,GAAG,CAAA,CAAA;QACxB,IAAMkX,aAAAA,GAAgB/I,QAAQ+I,aAAa,CAAA;QAC3C,IAAI,CAACC,mBAAmB,CAACD,aAAcE,CAAAA,cAAc,EAAEF,aAAczM,CAAAA,QAAQ,EAAEyM,aAAAA,CAAcG,OAAO,CAAA,CAAA;QACpG,IAA0B7I,cAAAA,GAAAA,OAAOtL,MAAM,EAA/B4H,QAAkB0D,cAAlB1D,CAAAA,KAAAA,EAAOG,SAAWuD,cAAXvD,CAAAA,MAAAA,CAAAA;QACf,IAAMiL,SAAAA,GAAY,IAAI,CAACC,aAAa,EAAA,CAAA;QACpC,IAAK,IAAIzT,IAAI,CAAGC,EAAAA,CAAAA,GAAIuT,UAAUlW,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YAChD,IAAM4U,QAAAA,GAAWpB,SAAS,CAACxT,CAAE,CAAA,CAAA;;YAE7B,IAAI,EAAEoU,WAAcQ,GAAAA,QAAAA,CAAS3Z,MAAM,CAAC4Z,KAAK,CAAG,EAAA;AAC1C,gBAAA,SAAA;AACF,aAAA;;AAEA,YAAA,IAAIV,oBAAsB,EAAA;gBACxB,OAAQD,IAAAA;AACN,oBAAA,KAAK5O,iBAAiByO,kBAAkB;wBACtC,IAAqBa,gBAAAA,GAAAA,SAASzR,MAAM,EAA5BnE,MAAa4V,gBAAb5V,CAAAA,GAAAA,EAAKD,MAAQ6V,gBAAR7V,CAAAA,GAAAA,CAAAA;AACb,wBAAA,IAAIC,GAAIoE,CAAAA,CAAC,GAAGgF,KAAAA,IAASrJ,IAAIqE,CAAC,GAAG,CAAKpE,IAAAA,GAAAA,CAAIqE,CAAC,GAAGkF,MAAAA,IAAUxJ,GAAIsE,CAAAA,CAAC,GAAG,CAAG,EAAA;AAC7D,4BAAA,SAAA;AACF,yBAAA;AACA,wBAAA,MAAA;AACF,oBAAA,KAAKiC,iBAAiBqO,iBAAiB,CAAA;AACvC,oBAAA,KAAKrO,iBAAiBmN,UAAU;AAC9B,wBAAA,IAAI,CAAC6B,OAAQQ,CAAAA,aAAa,CAACF,QAAAA,CAASzR,MAAM,CAAG,EAAA;AAC3C,4BAAA,SAAA;AACF,yBAAA;AACA,wBAAA,MAAA;AAGJ,iBAAA;AACF,aAAA;AACAyR,YAAAA,QAAAA,CAAShJ,cAAc,CAACH,OAAAA,CAAAA,CAAAA;AACxBmJ,YAAAA,QAAAA,CAAS/I,iBAAiB,GAAGG,UAAAA,CAAAA;AAC/B,SAAA;QAEA,IAAM+I,qBAAAA,GAAwB,IAAI,CAAC3C,sBAAsB,CAAA;AACzD2C,QAAAA,qBAAAA,CAAsBzX,MAAM,GAAG,CAAA,CAAA;QAC/B+D,aAAcC,CAAAA,IAAI,CAACiT,cAAgB,EAAA,IAAI,CAACtZ,MAAM,CAACiI,SAAS,CAACuL,WAAW,CAAA,CAAA;AACnE3C,QAAAA,MAAAA,CAAeqB,eAAe,CAAC5B,KAAK,CAACgJ,cAAgBQ,EAAAA,qBAAAA,CAAAA,CAAAA;QACtD,IAAK,IAAI/U,KAAI,CAAGC,EAAAA,EAAAA,GAAI8U,sBAAsBzX,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;AAC5D+U,YAAAA,qBAAqB,CAAC/U,EAAAA,CAAE,CAACgV,mBAAmB,GAAGhV,EAAAA,CAAAA;AACjD,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAyU,MAAAA,CAAAA,mBAmBC,GAnBDA,SAAAA,oBAAoBC,cAAuB,EAAEO,cAAuB,EAAEC,aAAsB,EAAA;QAC1F,OAAQ,IAAI,CAAC3C,eAAe;AAC1B,YAAA,KAAKjN,iBAAiByO,kBAAkB;gBACtC,IAAI,CAAC1B,aAAa,GAAG,CAAA,CAAA;AACrB,gBAAA,MAAA;AACF,YAAA,KAAK/M,iBAAiBqO,iBAAiB;AACrC,gBAAA,IAAI,CAACtB,aAAa,GAAG,IAAI,CAACQ,SAAS,CAAA;AACnC,gBAAA,MAAA;AACF,YAAA,KAAKvN,iBAAiBmN,UAAU;gBAC9B,IAAM0C,YAAAA,GAAe,IAAI,CAACC,UAAU,EAAA,CAAA;AACpC,gBAAA,IAAIV,cAAgB,EAAA;oBAClB,IAAMlH,QAAAA,GAAW/N,QA7UdA,CA6UuB4V,SAAS,CAAA;oBACnCtH,OAAQuH,CAAAA,QAAQ,CAACH,YAAAA,EAAcF,cAAgBzH,EAAAA,QAAAA,CAAAA,CAAAA;AAC/C,oBAAA,IAAI,CAAC6E,aAAa,GAAGtE,OAAQC,CAAAA,GAAG,CAACR,QAAU0H,EAAAA,aAAAA,CAAAA,CAAAA;iBACtC,MAAA;AACL,oBAAA,IAAI,CAAC7C,aAAa,GAAGtE,OAAQwH,CAAAA,eAAe,CAACJ,YAAcF,EAAAA,cAAAA,CAAAA,CAAAA;AAC7D,iBAAA;AACA,gBAAA,MAAA;AACJ,SAAA;AACF,KAAA,CAAA;;IAGA,MAASxY,CAAAA,gBAOR,GAPD,SAASA,gBAAAA,GAAAA;QACP,IAAMxB,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;;QAE1BA,MAAO4B,CAAAA,eAAe,IAA0C,IAAI,CAAA,CAAA;AACpE,QAAA,IAAM0C,UAAa7C,GAAAA,KAAAA,CAAMgB,yBAAyB,CAAC,IAAI,CAAA,CAAA;QACvD,IAAI,CAAC8X,gBAAgB,CAAC,CAACjW,UAAAA,CAAAA,CAAAA;QACvB7C,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAE8B,UAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;;IAGA,MAASvC,CAAAA,iBAGR,GAHD,SAASA,iBAAAA,GAAAA;QACP,IAAI,CAACwY,gBAAgB,CAAC,KAAA,CAAA,CAAA;QACtB9Y,KAAMO,CAAAA,eAAe,CAAC,IAAI,CAAA,CAAA;AAC5B,KAAA,CAAA;;IAGA,MAASwY,CAAAA,UAGR,GAHD,SAASA,UAAAA,GAAAA;AACP,QAAA,IAAI,CAACtD,eAAe,CAAC7U,MAAM,GAAG,CAAA,CAAA;AAC9B,QAAA,IAAI,CAAC8U,sBAAsB,CAAC9U,MAAM,GAAG,CAAA,CAAA;AACvC,KAAA,CAAA;AAEA;;AAEC,MACD,OACAtB,mBAiBC,GAlBD,SACAA,mBAAoB+B,CAAAA,IAAY,EAAE2X,KAAU,EAAA;QAC1C,IAAI,IAAI,CAACtV,aAAa,EAAE;YACtB,IAAIrC,IAAAA,KAASC,iBAAkBC,CAAAA,MAAM,EAAE;AACrC,gBAAA,IAAMsB,UAAa7C,GAAAA,KAAAA,CAAMgB,yBAAyB,CAAC,IAAI,CAAA,CAAA;gBACvD,IAAI,CAAC8X,gBAAgB,CAAC,CAACjW,UAAAA,CAAAA,CAAAA;gBACvB7C,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAE8B,UAAAA,CAAAA,CAAAA;AAC5B,aAAA,MAAO,IAAIxB,IAAkD,KAAA,CAAA,EAAA;gBAC3D,IAAI,CAACyX,gBAAgB,CAAC,KAAA,CAAA,CAAA;gBACtB9Y,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAYiY,KAAAA,CAAAA,CAAAA;AACtC,aAAA;SACK,MAAA;YACL,IAAI3X,IAAAA,KAASC,iBAAkBC,CAAAA,MAAM,EAAE;AACrC,gBAAA,IAAMsB,WAAa7C,GAAAA,KAAAA,CAAMgB,yBAAyB,CAAC,IAAI,CAAA,CAAA;gBACvD,IAAI,CAAC8X,gBAAgB,CAAC,CAACjW,WAAAA,CAAAA,CAAAA;gBACvB7C,KAAMe,CAAAA,aAAa,CAAC,IAAI,EAAE8B,WAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD0H,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAASC,MAAgB,EAAA;AACvBA,QAAAA,MAAAA,CAAOyO,UAAU,GAAG,IAAI,CAACnD,WAAW,CAAA;AACtC,KAAA,CAAA;IAEA,MAAQiB,CAAAA,aAUP,GAVD,SAAQA,aAAAA,GAAAA;QACN,IAAiD,KAAA,GAAA,IAAI,EAA1BD,YAAsB,KAAzClB,CAAAA,iBAAAA,EAA8BrX,SAAW,KAAXA,CAAAA,MAAAA,CAAAA;QACtC,IAAM2a,kBAAAA,GAAqB3a,OAAO4a,mBAAmB,CAAA;AACrD,QAAA,IAAI,IAAI,CAAC7C,iBAAiB,KAAK4C,kBAAoB,EAAA;YACjDpC,SAAUlW,CAAAA,MAAM,GAAG,IAAI,CAACwY,KAAK,CAAC,IAAI,CAAC7a,MAAM,EAAEuY,SAAAA,CAAAA,CAAAA;YA/YpC/T,QAgZEsW,CAAAA,kBAAkB,CAACzY,MAAM,GAAG,CAAA,CAAA;YACrC,IAAI,CAAC0V,iBAAiB,GAAG4C,kBAAAA,CAAAA;YACzB,EAlZOnW,SAkZIqN,iBAAiB,CAAA;AAC9B,SAAA;QACA,OAAO0G,SAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQwC,CAAAA,yBAqBP,GArBD,SAAQA,yBAAAA,GAAAA;AACN,QAAA,IAAM9S,SAAY,GAAA,IAAI,CAACjI,MAAM,CAACiI,SAAS,CAAA;QACvC,IAAM+S,cAAAA,GAAiB,IAAI,CAAC1D,eAAe,CAAA;QAC3C,IAAI0D,cAAAA,KAAmB3Q,gBAAiBqO,CAAAA,iBAAiB,EAAE;AACzD,YAAA,IAAMuC,YAAe,GAAA,IAAI,CAACtC,OAAO,CAAC3Y,MAAM,CAAA;AACxC,YAAA,IAAI,CAAC,IAAI,CAACkb,oBAAoB,CAACD,YAAe,CAAA,EAAA;gBAC5C,IAAmBE,kBAAoBF,YAA/BhT,CAAAA,SAAAA,CAAAA;AACR,gBAAA,IAAQ+K,mBAAyEmI,GAAAA,eAAAA,CAAzEnI,aAAoCH,EAAcuI,qBAAuBD,eAArCtI,CAAAA,YAAAA,CAAAA;gBAC5C,IAAMN,QAAAA,GAAW,IAAI,CAACqF,SAAS,CAAA;gBAC/B3P,SAAUoT,CAAAA,gBAAgB,CACxBC,mBAAoBnT,CAAAA,CAAC,GAAGiT,kBAAmBjT,CAAAA,CAAC,GAAGoK,QAC/C+I,EAAAA,mBAAAA,CAAoBlT,CAAC,GAAGgT,kBAAAA,CAAmBhT,CAAC,GAAGmK,QAAAA,EAC/C+I,oBAAoBpH,CAAC,GAAGkH,kBAAmBlH,CAAAA,CAAC,GAAG3B,QAAAA,CAAAA,CAAAA;AAEjDtK,gBAAAA,SAAAA,CAAUsT,uBAAuB,CAACnP,QAAQ,CAAC+O,gBAAgBI,uBAAuB,CAAA,CAAA;AACpF,aAAA;SACK,MAAA;AACL,YAAA,IAAM,MAAEhW,GAAW,IAAI,CAACsL,MAAM,CAAtBtL,MAAAA,CAAAA;YACR0C,SAAUoT,CAAAA,gBAAgB,CAAC9V,MAAO4H,CAAAA,KAAK,GAAG,GAAK5H,EAAAA,MAAAA,CAAO+H,MAAM,GAAG,GAAK,EAAA,CAAA,CAAA,CAAA;AACpErF,YAAAA,SAAAA,CAAUsT,uBAAuB,CAAC3N,GAAG,CAAC,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjD,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ4N,CAAAA,yBAiDP,GAjDD,SAAQA,yBAAAA,GAAAA;AACN,QAAA,IAAMvT,SAAyB,GAAA,IAAI,CAACjI,MAAM,CAACiI,SAAS,CAAA;QACpD,IAAM+S,cAAAA,GAAiB,IAAI,CAAC1D,eAAe,CAAA;QAC3C,IAAgC,0BAAA,GAAA,IAAI,CAACO,oBAAoB,EAAjD1P,KAAGgF,GAAqB,0BAAxBhF,CAAAA,CAAAA,EAAUC,MAAGkF,GAAW,0BAAdlF,CAAAA,CAAAA,CAAAA;QAClB,IAAIqT,QAAAA,CAAAA;QACJ,IAAIC,SAAAA,CAAAA;QACJ,IAAIV,cAAAA,KAAmB3Q,gBAAiBqO,CAAAA,iBAAiB,EAAE;YACzD,IAAMtH,MAAAA,GAAS,IAAI,CAACuH,OAAO,CAAA;YAC3B+C,SAAYtK,GAAAA,MAAAA,CAAOqI,cAAc,GAC7BrI,MAAAA,CAAOuK,gBAAgB,GAAG,CAAA,GAC1B,CAAK9X,IAAAA,IAAK+X,CAAAA,GAAG,CAAC/M,QAASgN,CAAAA,cAAc,CAACzK,MAAO0K,CAAAA,WAAW,GAAG,GAAQ,CAAA,CAAA,GAAA,IAAI,CAAClE,SAAS,CAAD,CAAA;YACpF6D,QAAWrK,GAAAA,MAAAA,CAAO2K,WAAW,GAAGL,SAAAA,CAAAA;SAC3B,MAAA;AACL,YAAA,IAAMnW,MAAS,GAAA,IAAI,CAACsL,MAAM,CAACtL,MAAM,CAAA;AACjCmW,YAAAA,SAAAA,GAAYnW,OAAO+H,MAAM,CAAA;AACzBmO,YAAAA,QAAAA,GAAWlW,OAAO4H,KAAK,CAAA;AACzB,SAAA;AACA,QAAA,IAAI6O,SAAiBC,OAAiBC,EAAAA,OAAAA,CAAAA;QACtC,OAAQ,IAAI,CAACzE,yBAAyB;AACpC,YAAA,KAAKnN,yBAAyB6R,eAAe;gBAC3CH,OAAUC,GAAAA,OAAAA,GAAUC,UAAUT,QAAWtO,GAAAA,KAAAA,CAAAA;AACzC,gBAAA,MAAA;AACF,YAAA,KAAK7C,yBAAyBoN,gBAAgB;gBAC5CsE,OAAUC,GAAAA,OAAAA,GAAUC,UAAUR,SAAYpO,GAAAA,MAAAA,CAAAA;AAC1C,gBAAA,MAAA;AACF,YAAA,KAAKhD,yBAAyB8R,cAAc;AAC1CJ,gBAAAA,OAAAA,GAAUP,QAAWtO,GAAAA,KAAAA,CAAAA;AACrB8O,gBAAAA,OAAAA,GAAUP,SAAYpO,GAAAA,MAAAA,CAAAA;AACtB4O,gBAAAA,OAAAA,GAAU,CAACF,OAAUC,GAAAA,OAAM,IAAK,GAAA,CAAA;AAChC,gBAAA,MAAA;AACF,YAAA,KAAK3R,yBAAyB+R,gBAAgB;AAC5CL,gBAAAA,OAAAA,GAAUC,UAAUC,OAAUrY,GAAAA,IAAAA,CAAKE,GAAG,CAAC0X,QAAAA,GAAWtO,OAAOuO,SAAYpO,GAAAA,MAAAA,CAAAA,CAAAA;AACrE,gBAAA,MAAA;AACF,YAAA,KAAKhD,yBAAyBgS,gBAAgB;AAC5CN,gBAAAA,OAAAA,GAAUC,UAAUC,OAAUrY,GAAAA,IAAAA,CAAKC,GAAG,CAAC2X,QAAAA,GAAWtO,OAAOuO,SAAYpO,GAAAA,MAAAA,CAAAA,CAAAA;AACrE,gBAAA,MAAA;AAGJ,SAAA;QAEA,IAAMkG,WAAAA,GAAchP,QAtdXA,CAsdoB+O,QAAQ,CAAA;AACrCnM,QAAAA,MAAAA,CAAOmV,oBAAoB,CAvdlB/X,QAwdE4V,CAAAA,SAAS,CAACxM,GAAG,CAACoO,OAASC,EAAAA,OAAAA,EAASC,UACzCjU,SAAUsT,CAAAA,uBAAuB,EACjCtT,SAAAA,CAAU+K,aAAa,EACvBQ,WAAAA,CAAAA,CAAAA;AAEFvL,QAAAA,SAAAA,CAAUuL,WAAW,GAAGA,WAAAA,CAAAA;AACxBvL,QAAAA,SAAAA,CAAUkE,IAAI,CAACyB,GAAG,CAAC6N,QAAAA,GAAWO,SAASN,SAAYO,GAAAA,OAAAA,CAAAA,CAAAA;AACrD,KAAA,CAAA;IAEA,MAAQpB,CAAAA,KAmCP,GAnCD,SAAQA,KAAM7a,CAAAA,MAAc,EAAEuY,SAAuB,EAAE3O,KAAS,EAAEvE,KAAqB,EAAA;AAAhCuE,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AAAGvE,QAAAA,IAAAA,kBAAAA,KAAiB,GAAA,IAAA,CAAA;;QAEjF,IAAMR,UAAAA,GAA0B7E,OAAO8E,WAAW,CAAA;QAClD,IAAM0X,iBAAAA,GAAoBhY,QApejBA,CAoe0BsW,kBAAkB,CAAA;AACrD,QAAA,IAAI2B,cAAiB,GAAA,CAAA,CAAA;QACrB,IAAK,IAAI1X,IAAI,CAAGC,EAAAA,CAAAA,GAAIH,WAAWxC,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;YACjD,IAAME,SAAAA,GAAYJ,UAAU,CAACE,CAAE,CAAA,CAAA;YAC/B,IAAI,CAACE,SAAUC,CAAAA,OAAO,EAAE,SAAA;YACxB,IAAa,WAATD,CAAAA,SAAAA,EAAqBqK,UAAY,CAAA,EAAA;gBACnCiJ,SAAS,CAAC3O,MAAM,GAAG3E,SAAAA,CAAAA;gBACnB,EAAE2E,KAAAA,CAAAA;AACF3E,gBAAAA,SAAAA,CAAUrE,kBAAkB,IAAIa,KAAAA,CAAMe,aAAa,CAACyC,WAAW,IAAI,CAAA,CAAA;gBACnE,IAAIA,SAAAA,CAAUpE,aAAa,EAAE;oBAC3B2b,iBAAiB,CAACC,iBAAiB,GAAGxX,SAAAA,CAAAA;AACxC,iBAAA;AACF,aAAA,MAAO,IAAa,WAATA,CAAAA,SAAAA,EAAqBkQ,aAAe,CAAA,EAAA;AAC7ClQ,gBAAAA,SAAAA,CAAUrE,kBAAkB,IAAIa,KAAAA,CAAMe,aAAa,CAACyC,WAAW,IAAI,CAAA,CAAA;gBACnE,IAAIA,SAAAA,CAAUpE,aAAa,EAAE;oBAC3B2b,iBAAiB,CAACC,iBAAiB,GAAGxX,SAAAA,CAAAA;AACxC,iBAAA;AACF,aAAA,MAAO,IAAa,WAATA,CAAAA,SAAAA,EAAqBlF,OAAS,CAAA,EAAA;AACvCkF,gBAAAA,SAAAA,CAAUrE,kBAAkB,IAAIa,KAAAA,CAAMe,aAAa,CAACyC,WAAW,IAAI,CAAA,CAAA;AACnEA,gBAAAA,SAAAA,CAAUpE,aAAa,IAAIY,KAAMkB,CAAAA,QAAQ,CAACsC,SAAWI,EAAAA,KAAAA,CAAAA,CAAAA;gBACrDA,KAAQJ,GAAAA,SAAAA,CAAAA;AACV,aAAA;AACF,SAAA;AACA,QAAA,IAAK,IAAIF,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI0X,gBAAgB1X,EAAK,EAAA,CAAA;AACvCtD,YAAAA,KAAAA,CAAMkB,QAAQ,CAAC6Z,iBAAiB,CAACzX,GAAE,EAAEM,KAAAA,CAAAA,CAAAA;AACvC,SAAA;QACA,IAAM+I,QAAAA,GAAWpO,OAAOoO,QAAQ,CAAA;QAChC,IAAK,IAAIrJ,KAAI,CAAGC,EAAAA,EAAAA,GAAIoJ,SAAS/L,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;YAC/C,IAAM2X,KAAAA,GAAQtO,QAAQ,CAACrJ,EAAE,CAAA,CAAA;YACzB2X,KAAMC,CAAAA,QAAQ,KAAK/S,KAAQ,GAAA,IAAI,CAACiR,KAAK,CAAC6B,KAAAA,EAAOnE,SAAW3O,EAAAA,KAAAA,EAAOvE,KAAK,CAAA,CAAA,CAAA;AACtE,SAAA;QACA,OAAOuE,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQgT,CAAAA,qBAkBP,GAlBD,SAAQA,qBAAAA,GAAAA;AACN,QAAA,IAAMxL,MAAS,GAAA,IAAI,CAACjM,aAAa,IAAI,IAAI,CAACoS,WAAW,KAAKlN,iBAAiBqO,iBAAiB,GAAG,IAAI,CAACC,OAAO,GAAG,IAAA,CAAA;QAC9G,IAAMkE,SAAAA,GAAY,IAAI,CAACC,eAAe,CAAA;AACtC,QAAA,IAAID,cAAczL,MAAQ,EAAA;YACxB,IAAI,CAAC0L,eAAe,GAAG1L,MAAAA,CAAAA;AACvB,YAAA,IAAIyL,SAAW,EAAA;;gBAEbA,SAAU7c,CAAAA,MAAM,CAAC+N,kBAAkB,CAACgP,cAAc,CAAC,IAAI,CAAC5E,0BAA0B,CAAA,CAAA;;AAElF0E,gBAAAA,SAAAA,CAAU3W,yBAAyB,CAAC,IAAI,CAACgS,uBAAuB,CAAA,CAAA;AAClE,aAAA;AACA,YAAA,IAAI9G,MAAQ,EAAA;;gBAEVA,MAAOpR,CAAAA,MAAM,CAAC+N,kBAAkB,CAACiP,WAAW,CAAC,IAAI,CAAC7E,0BAA0B,CAAA,CAAA;;AAE5E/G,gBAAAA,MAAAA,CAAOjL,uBAAuB,CAAC,IAAI,CAAC+R,uBAAuB,CAAA,CAAA;AAC7D,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CACQA,uBAsBP,GAvBD,SACQA,uBAAAA,CAAwBpV,IAAuB,EAAA;AACrD,QAAA,IAAI,IAAI,CAACwU,eAAe,KAAKjN,gBAAAA,CAAiBqO,iBAAiB,EAAE;YAC/D,OAAQ5V,IAAAA;AACN,gBAAA,KAAKma,kBAAkBC,cAAc,CAAA;AACrC,gBAAA,KAAKD,kBAAkBE,WAAW;AAChC,oBAAA,IAAI,CAAC3B,yBAAyB,EAAA,CAAA;AAC9B,oBAAA,MAAA;AACF,gBAAA,KAAKyB,kBAAkBG,WAAW;oBAChC,CAAC,IAAI,CAACzE,OAAO,CAACc,cAAc,IAAI,IAAI,CAAC+B,yBAAyB,EAAA,CAAA;AAC9D,oBAAA,MAAA;AACF,gBAAA,KAAKyB,kBAAkBI,gBAAgB;AACrC,oBAAA,IAAI,CAAC1E,OAAO,CAACc,cAAc,IAAI,IAAI,CAAC+B,yBAAyB,EAAA,CAAA;AAC7D,oBAAA,MAAA;AACF,gBAAA,KAAKyB,kBAAkBK,cAAc;AACnC,oBAAA,IAAI,CAACC,kBAAkB,CAAClT,gBAAAA,CAAiByO,kBAAkB,CAAA,CAAA;AAC3D,oBAAA,MAAA;AAGJ,aAAA;SACK,MAAA;YACLhW,IAASma,KAAAA,iBAAAA,CAAkBO,aAAa,IAAI,IAAI,CAACD,kBAAkB,CAAClT,iBAAiBqO,iBAAiB,CAAA,CAAA;AACxG,SAAA;AACF,KAAA,CAAA;IAEA,MACQP,CAAAA,0BAEP,GAHD,SACQA,0BAAAA,GAAAA;QACN,IAAI,CAACb,eAAe,KAAKjN,gBAAAA,CAAiBqO,iBAAiB,IAAI,IAAI,CAACqC,yBAAyB,EAAA,CAAA;AAC/F,KAAA,CAAA;IAEA,MAAQ0C,CAAAA,kBAGP,GAHD,SAAQA,kBAAAA,GAAAA;;QAEN,IAAI,CAAC5M,MAAM,CAACtL,MAAM,CAACmY,sBAAsB,CAACV,WAAW,CAAC,IAAI,CAAC/E,qBAAqB,CAAA,CAAA;AAClF,KAAA,CAAA;IAEA,MAAQ0F,CAAAA,qBAGP,GAHD,SAAQA,qBAAAA,GAAAA;;QAEN,IAAI,CAAC9M,MAAM,CAACtL,MAAM,CAACmY,sBAAsB,CAACX,cAAc,CAAC,IAAI,CAAC9E,qBAAqB,CAAA,CAAA;AACrF,KAAA,CAAA;IAEA,MACQA,CAAAA,qBAIP,GALD,SACQA,qBAAAA,GAAAA;AACN,QAAA,IAAM,MAAE1S,GAAW,IAAI,CAACsL,MAAM,CAAtBtL,MAAAA,CAAAA;AACR,QAAA,IAAI,CAACvF,MAAM,CAACiI,SAAS,CAACoT,gBAAgB,CAAC9V,MAAO4H,CAAAA,KAAK,GAAG,GAAA,EAAK5H,MAAO+H,CAAAA,MAAM,GAAG,GAAK,EAAA,CAAA,CAAA,CAAA;AAChF,QAAA,IAAI,CAACkO,yBAAyB,EAAA,CAAA;AAChC,KAAA,CAAA;IAEA,MACQpD,CAAAA,6BAQP,GATD,SACQA,6BAAAA,GAAAA;QACN,IAAM4C,cAAAA,GAAiB,IAAI,CAAC1D,eAAe,CAAA;AAC3C,QAAA,IACE0D,mBAAmB3Q,gBAAiByO,CAAAA,kBAAkB,IACtDkC,cAAmB3Q,KAAAA,gBAAAA,CAAiBqO,iBAAiB,EACrD;AACA,YAAA,IAAI,CAAC8C,yBAAyB,EAAA,CAAA;AAChC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQjB,gBAwBP,GAxBD,SAAQA,gBAAAA,CAAiBqD,YAAqB,EAAA;;AAC5C,QAAA,IAAI,IAAI,CAACzY,aAAa,KAAKyY,YAAc,EAAA;YACvC,IAAI,CAACzY,aAAa,GAAGyY,YAAAA,CAAAA;AACrB,YAAA,IAAI,CAAChB,qBAAqB,EAAA,CAAA;AAC1B,YAAA,IAAI,CAACW,kBAAkB,CAAC,IAAI,CAACM,kBAAkB,EAAA,CAAA,CAAA;AAC/C,YAAA,IAAID,YAAc,EAAA;AAChB,gBAAA,IAAI,CAAC5d,MAAM,CAAC4R,yBAAyB,CA1lBhCpN,SA0lB0CqN,iBAAiB,CAAA,CAAA;aAC3D,MAAA;AACL,gBAAA,IAAoD,MAAA,GAAA,IAAI,EAA3B3P,qBAAuB,MAA5C/B,CAAAA,mBAAAA,CAAAA;gBACR+B,kBAAmBC,CAAAA,OAAO,CAAC,SAACC,OAAAA,EAAAA;oBAC1B,IAAW,WAAPA,CAAAA,OAAAA,EA9lBDoC,QA8lB8B,CAAA,EAAA;wBAC/B,IAAMF,UAAAA,GAAa7C,KAAMgB,CAAAA,yBAAyB,CAACL,OAAAA,CAAAA,CAAAA;wBACnDA,OAAQmY,CAAAA,gBAAgB,CAAC,CAACjW,UAAAA,CAAAA,CAAAA;wBAC1B7C,KAAMe,CAAAA,aAAa,CAACJ,OAASkC,EAAAA,UAAAA,CAAAA,CAAAA;qBACxB,MAAA;AACL7C,wBAAAA,KAAAA,CAAMC,kBAAkB,CAAA,KAAA,CAAA,CAAA;AACxBD,wBAAAA,KAAAA,CAAME,aAAa,CAAaS,OAAAA,CAAAA,CAAAA;AAClC,qBAAA;AACF,iBAAA,CAAA,CAAA;AACAF,gBAAAA,kBAAAA,CAAmBG,MAAM,GAAG,CAAA,CAAA;AAC5BH,gBAAAA,kBAAAA,CAAmBI,iBAAiB,EAAA,CAAA;AACpC,gBAAA,IAAI,CAAC+U,iBAAiB,CAAChV,MAAM,GAAG,CAAA,CAAA;AAClC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ8X,CAAAA,UAUP,GAVD,SAAQA,UAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAAC9B,gBAAgB,CAACvV,IAAI,EAAE;YAC9B,IAAMgb,MAAAA,GAAS,IAAI,CAAC9F,OAAO,CAAA;AAC3B,YAAA,IAAMlE,WAA2B,GAAA,IAAI,CAAC9T,MAAM,CAACiI,SAAS,CAAA;AACtD,YAAA,IAAQiE,KAAgB4H,GAAAA,WAAAA,CAAhB5H,KAAOC,EAAAA,IAAAA,GAAS2H,WAAT3H,CAAAA,IAAAA,CAAAA;YACf2R,MAAOlQ,CAAAA,GAAG,CAAC,CAAC,MAAM1B,KAAM/D,CAAAA,CAAC,IAAIgE,IAAAA,CAAKhE,CAAC,EAAG,CAAA,GAAM+D,GAAAA,KAAAA,CAAM9D,CAAC,IAAI+D,IAAK/D,CAAAA,CAAC,EAAE,CAAA,CAAA,CAAA;AAC/D0K,YAAAA,OAAAA,CAAQa,mBAAmB,CAACmK,MAAQhK,EAAAA,WAAAA,CAAYN,WAAW,EAAEsK,MAAAA,CAAAA,CAAAA;AAC7D,YAAA,IAAI,CAACzF,gBAAgB,CAACvV,IAAI,GAAG,KAAA,CAAA;AAC/B,SAAA;QACA,OAAO,IAAI,CAACkV,OAAO,CAAA;AACrB,KAAA,CAAA;IAEA,MAAQ6F,CAAAA,kBAYP,GAZD,SAAQA,kBAAAA,GAAAA;QACN,IAAI,IAAI,CAAC1Y,aAAa,EAAE;AAG8B,YAAA,IAAA,aAAA,CAAA;YAFpD,IAAM8T,IAAAA,GAAO,IAAI,CAAC1B,WAAW,CAAA;;AAE7B,YAAA,IAAI0B,IAAS5O,KAAAA,gBAAAA,CAAiBqO,iBAAiB,IAAI,EAAC,CAAA,aAAA,GAAA,IAAI,CAACC,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAZ,aAAcK,CAAAA,oBAAoB,CAAE,EAAA;AACtF,gBAAA,OAAO3O,iBAAiByO,kBAAkB,CAAA;aACrC,MAAA;gBACL,OAAOG,IAAAA,CAAAA;AACT,aAAA;SACK,MAAA;AACL,YAAA,OAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQsE,kBA6BP,GA7BD,SAAQA,kBAAAA,CAAmBQ,WAAmB,EAAA;QAC5C,IAAMC,WAAAA,GAAc,IAAI,CAAC1G,eAAe,CAAA;AACxC,QAAA,IAAI0G,gBAAgBD,WAAa,EAAA;YAC/B,IAAI,CAACzG,eAAe,GAAGyG,WAAAA,CAAAA;;AAEvB,YAAA,IAAME,iBAAoB,GAAA,IAAI,CAACxM,KAAK,CAACC,kBAAkB,CAAA;YACvD,OAAQsM,WAAAA;AACN,gBAAA,KAAK3T,iBAAiByO,kBAAkB;AACtC,oBAAA,IAAI,CAAC6E,qBAAqB,EAAA,CAAA;AAC5B,gBAAA,KAAKtT,iBAAiBqO,iBAAiB,CAAA;AACvC,gBAAA,KAAKrO,iBAAiBmN,UAAU;AAC9ByG,oBAAAA,iBAAAA,CAAkBC,cAAc,CAAC,IAAI,EAAEF,WAAAA,KAAgB3T,iBAAiByO,kBAAkB,CAAA,CAAA;AAC1F,oBAAA,MAAA;AAGJ,aAAA;YACA,OAAQiF,WAAAA;AACN,gBAAA,KAAK1T,iBAAiByO,kBAAkB;AACtC,oBAAA,IAAI,CAAC2E,kBAAkB,EAAA,CAAA;AACzB,gBAAA,KAAKpT,iBAAiBqO,iBAAiB;AACrC,oBAAA,IAAI,CAACqC,yBAAyB,EAAA,CAAA;AAC9B,oBAAA,IAAI,CAACS,yBAAyB,EAAA,CAAA;AAChC,gBAAA,KAAKnR,iBAAiBmN,UAAU;AAC9ByG,oBAAAA,iBAAAA,CAAkBE,WAAW,CAAC,IAAI,EAAEJ,WAAAA,KAAgB1T,iBAAiByO,kBAAkB,CAAA,CAAA;AACvF,oBAAA,MAAA;AAGJ,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQoC,oBAOP,GAPD,SAAQA,oBAAAA,CAAqBD,YAAoB,EAAA;QAC/C,IAAMmD,YAAAA,GAAe,IAAI,CAACpe,MAAM,CAAA;AAChC,QAAA,MAAOib,YAAc,CAAA;YACnB,IAAIA,YAAAA,KAAiBmD,cAAc,OAAO,IAAA,CAAA;AAC1CnD,YAAAA,YAAAA,GAAeA,aAAaxW,MAAM,CAAA;AACpC,SAAA;QACA,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AA9qBWD,IAAAA,aAAAA,CAAAA,QAAAA,EAAAA;;YAoEP6Z,GAAAA,EAAAA,4BAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACvG,2BAA2B,CAAA;AACzC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAA+BpU,KAAa,EAAA;AAC1C,gBAAA,IAAI,IAAI,CAACoU,2BAA2B,KAAKpU,KAAO,EAAA;oBAC9C,IAAI,CAACoU,2BAA2B,GAAGpU,KAAAA,CAAAA;AACnC,oBAAA,IAAI,CAACvD,mBAAmB,CAACgC,OAAO,CAAC,SAACC,OAAAA,EAAAA;AAChCA,wBAAAA,OAAAA,CAAQ+B,mBAAmB,IAAA,IAAA,GAAA,KAAA,CAAA,GAA3B/B,OAAQ+B,CAAAA,mBAAmB,CAA3B/B,IAAAA,CAAAA,OAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AACF,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA;;;YAKIkc,GAAAA,EAAAA,qBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACzG,oBAAoB,CAAA;AAClC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAwBnU,KAAc,EAAA;gBACpC,IAAM4a,mBAAAA,GAAsB,IAAI,CAACzG,oBAAoB,CAAA;AACrD,gBAAA,IAAIyG,wBAAwB5a,KAAO,EAAA,OAAA;AAClC4a,gBAAAA,CAAAA,mBAAoBnW,CAAAA,CAAC,KAAKzE,KAAAA,CAAMyE,CAAC,IAAImW,mBAAAA,CAAoBlW,CAAC,KAAK1E,MAAM0E,CAAAA,KAAMkW,mBAAAA,CAAoBlS,QAAQ,CAAC1I,KAAAA,CAAAA,CAAAA;AAC3G,aAAA;;;YAKIgX,GAAAA,EAAAA,YAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACnD,WAAW,CAAA;AACzB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAe0B,IAAsB,EAAA;gBACnC,IAAMsF,OAAAA,GAAU,IAAI,CAAChH,WAAW,CAAA;AAChC,gBAAA,IAAIgH,YAAYtF,IAAM,EAAA;oBACpB,IAAI,CAAC1B,WAAW,GAAG0B,IAAAA,CAAAA;AACnB,oBAAA,IAAI,CAAC2D,qBAAqB,EAAA,CAAA;AAC1B,oBAAA,IAAI,CAACW,kBAAkB,CAAC,IAAI,CAACM,kBAAkB,EAAA,CAAA,CAAA;AACjD,iBAAA;AACF,aAAA;;;YAQIzM,GAAAA,EAAAA,QAAAA;;;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACuH,OAAO,CAAA;AACrB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAWjV,KAAa,EAAA;gBACtB,IAAMmZ,SAAAA,GAAY,IAAI,CAAClE,OAAO,CAAA;AAC9B,gBAAA,IAAIkE,cAAcnZ,KAAO,EAAA;AACvB,oBAAA,IAAIA,SAAS,IAAI,CAACwX,oBAAoB,CAACxX,KAAAA,CAAM1D,MAAM,CAAG,EAAA;AACpDwe,wBAAAA,MAAAA,CAAOC,IAAI,CACT,sHAAA,CAAA,CAAA;AAEJ,qBAAA;oBACA,IAAI,CAAC9F,OAAO,GAAGjV,KAAAA,CAAAA;AACf,oBAAA,IAAI,CAACkZ,qBAAqB,EAAA,CAAA;oBAC1B,IAAM8B,aAAAA,GAAgB,IAAI,CAACpH,eAAe,CAAA;oBAC1C,IAAMqH,aAAAA,GAAgB,IAAI,CAACd,kBAAkB,EAAA,CAAA;AAC7C,oBAAA,IAAIa,kBAAkBC,aAAe,EAAA;wBACnC,IAAIA,aAAAA,KAAkBtU,gBAAiBqO,CAAAA,iBAAiB,EAAE;AACxD,4BAAA,IAAI,CAACqC,yBAAyB,EAAA,CAAA;AAC9B,4BAAA,IAAI,CAACS,yBAAyB,EAAA,CAAA;AAChC,yBAAA;qBACK,MAAA;wBACL,IAAI,CAAC+B,kBAAkB,CAACoB,aAAAA,CAAAA,CAAAA;AAC1B,qBAAA;AACF,iBAAA;AACF,aAAA;;;YAKIC,GAAAA,EAAAA,cAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACxN,MAAM,CAAA;AACpB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAiB1N,KAAa,EAAA;gBAC5B,IAAI,CAAC0N,MAAM,GAAG1N,KAAAA,CAAAA;AAChB,aAAA;;;YAKImb,GAAAA,EAAAA,0BAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACpH,yBAAyB,CAAA;AACvC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAA6B/T,KAA+B,EAAA;AAC1D,gBAAA,IAAI,IAAI,CAAC+T,yBAAyB,KAAK/T,KAAO,EAAA;oBAC5C,IAAI,CAAC+T,yBAAyB,GAAG/T,KAAAA,CAAAA;oBACjC,IAAMsX,cAAAA,GAAiB,IAAI,CAAC1D,eAAe,CAAA;AAC3C,oBAAA,IACE0D,mBAAmB3Q,gBAAiBqO,CAAAA,iBAAiB,IACrDsC,cAAmB3Q,KAAAA,gBAAAA,CAAiByO,kBAAkB,EACtD;AACA,wBAAA,IAAI,CAAC0C,yBAAyB,EAAA,CAAA;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;;;YAKIsD,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACnH,UAAU,CAAA;AACxB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAcjU,KAAa,EAAA;AACzB,gBAAA,IAAI,IAAI,CAACiU,UAAU,KAAKjU,KAAO,EAAA;oBAC7B,IAAI,CAACiU,UAAU,GAAGjU,KAAAA,CAAAA;AAClB,oBAAA,IAAI,CAAC4T,eAAe,KAAKjN,gBAAiByO,CAAAA,kBAAkB;qBAEzD,IAAI,CAACrH,KAAK,CAACC,kBAAkB,CAACqN,2BAA2B,GAAG,IAAG,CAAA,CAAA;AACpE,iBAAA;AACF,aAAA;;;YAKIxM,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACqF,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAalU,KAAa,EAAA;AACxB,gBAAA,IAAI,IAAI,CAACkU,SAAS,KAAKlU,KAAO,EAAA;oBAC5B,IAAI,CAACkU,SAAS,GAAGlU,KAAAA,CAAAA;AACjB,oBAAA,IAAI,IAAI,CAAC4T,eAAe,KAAKjN,gBAAAA,CAAiBqO,iBAAiB,EAAE;AAC/D,wBAAA,IAAI,CAACqC,yBAAyB,EAAA,CAAA;AAC9B,wBAAA,IAAI,CAACS,yBAAyB,EAAA,CAAA;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;;;AA7MWhX,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBR,SA+qB7B,EAAA;AA9qBC,iBADWQ,SAEJqN,iBAA4B,GAAA,CAAA,CAAA;AAFxBrN,QAAAA,CAGIsW,qBAAmC,EAAE,CAAA;AAHzCtW,QAAAA,CAII4V,YAAqB,IAAItH,OAAAA,EAAAA,CAAAA;AAJ7BtO,QAAAA,CAKI+O,WAAmB,IAAInM,MAAAA,EAAAA,CAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AANQ6N,IAAAA,mBAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA,OAAAA,CAAAA;;AAyrBhD;;IAGO,IAAKpT,mBAAAA,iBAAAA,SAAAA,mBAAAA,EAAAA;;;AAAAA,IAAAA,OAAAA,mBAAAA,CAAAA;AAGX,CAAA,CAAA,EAAA,CAAA,CAAA;AAEM,IAAA,qBAAKuC,iBAAAA,SAAAA,qBAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,qBAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA,CAAA;;ACvuBM,IAAA,MAAA,iBAAA,SAAA,aAAA,EAAA;AAAM4a,IAAAA,SAAAA,CAAAA,MAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,MAAAA,GAAAA;;gHACoC,KAAA,CAEtCC,UAAU,IAAIC,MAAAA,EAAAA,CAAAA;;;AAHZF,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASG,cAGR,GAHD,SAASA,cAAAA,CAAeC,KAAuB,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC7d,qBAAqB,EAAI,EAAA,OAAA;AACnC,QAAA,IAAI,CAAC0d,OAAO,CAACI,MAAM,CAACD,KAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;IAEA,MAAS5I,CAAAA,SAGR,GAHD,SAASA,SAAAA,GAAAA;AACP,QAAA,aAAA,CAAA,SAAA,CAAMA,SAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACL,IAAI,CAACyI,OAAO,CAACK,SAAS,EAAA,CAAA;AACxB,KAAA,CAAA;AAEA;;;AAGC,MACDC,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAWzZ,QAA2C,EAAA;AACpD,QAAA,IAAI,CAACmZ,OAAO,CAACO,EAAE,CAAC1Z,QAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEA;;;AAGC,MACD2Z,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,cAAc3Z,QAA2C,EAAA;AACvD,QAAA,IAAI,CAACmZ,OAAO,CAACS,GAAG,CAAC5Z,QAAAA,CAAAA,CAAAA;AACnB,KAAA,CAAA;AA7BWkZ,IAAAA,OAAAA,MAAAA,CAAAA;EAAe7J,aA8B3B,EAAA;;;;;ACXD;;IAGO,IAAMwK,KAAN,iBAAA,SAAA,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,KAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,KAAAA,CAwGC3f,MAAc,EAAA;;AACxB,QAAA,KAAA,GAAA,WAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,uBAvGA4f,OAAkB,GAAA,IAAA,EAAA,KAAA,CAMlBC,YAA4BC,cAAeC,CAAAA,UAAU,QAErDC,uBAAkC,GAAA,GAAA,CAAA;QAgGxC,KAAKC,CAAAA,QAAQ,GAAGC,cAAAA,CAAeC,MAAM,CAAA;;AAErC,QAAA,KAAA,CAAKC,WAAW,CAAC,KAAKC,CAAAA,OAAO,CAACC,qBAAqB,EAAA,CAAA,CAAA;AACnD,QAAA,KAAA,CAAKC,eAAe,GAAG,KAAKA,CAAAA,eAAe,CAACvf,IAAI,CAAA,KAAA,CAAA,CAAA;;;AA7GvC2e,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AAgHX;;AAEC,MACDxb,MAAAA,CAAAA,mBASC,GATDA,SAAAA,oBAAoBrB,IAA2B,EAAA;QAC7C,IAAIA,IAAAA,GAAOsB,qBAAsBoc,CAAAA,0BAA0B,EAAE;YAC3D,IAAMP,QAAAA,GAAW,IAAI,CAACQ,SAAS,CAAA;YAC/B,IAAIR,QAAAA,KAAaC,cAAeQ,CAAAA,KAAK,EAAE;AACrC,gBAAA,IAAI,CAAC9Q,gBAAgB,IAAA,EAAA,CAAA;AACvB,aAAA,MAAO,IAAIqQ,QAAAA,KAAaC,cAAeS,CAAAA,MAAM,EAAE;AAC7C,gBAAA,IAAI,CAAC/Q,gBAAgB,IAAIC,mBAAAA,CAAoBC,WAAW,CAAA;AAC1D,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD9D,MAAAA,CAAAA,QAKC,GALDA,SAAAA,SAASC,MAAa,EAAA;;AAEpB,QAAA,WAAA,CAAA,SAAA,CAAMD,QAAD,CAAUC,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AACfA,QAAAA,MAAAA,CAAO2U,MAAM,GAAG,IAAI,CAAChB,OAAO,CAAA;AAC5B3T,QAAAA,MAAAA,CAAOgU,QAAQ,GAAG,IAAI,CAACQ,SAAS,CAAA;AAClC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBI,aAqBlB,GArBD,SAAmBA,aAAAA,CAAcC,WAAwB,EAAA;QACvD,IAAMF,MAAAA,GAAS,IAAI,CAAChB,OAAO,CAAA;QAC3B,IAAMtb,UAAAA,GAAa,IAAI,CAAC/B,cAAc,EAAA,CAAA;AACtC,QAAA,IAAIqe,UAAUtc,UAAY,EAAA;AACxB,YAAA,IAAM2D,SAAyB,GAAA,IAAI,CAAC0K,gBAAgB,CAAC1K,SAAS,CAAA;YAC9D,IAAQkE,OAASlE,SAATkE,CAAAA,IAAAA,CAAAA;YACR,IAAI,CAAC4U,UAAU,CAACC,eAAe,CAC7B,IAAI,EACJ/Y,SAAUuL,CAAAA,WAAW,EACrBrH,IAAAA,CAAKhE,CAAC,EACNgE,IAAAA,CAAK/D,CAAC,EACNH,SAAAA,CAAUiE,KAAK,EACf,KAAA,EACA,KACA5H,EAAAA,UAAAA,CAAW+Z,0BAA0B,CAAA,CAAA;SAElC,MAAA;AACL,YAAA,IAAM,aAAoB,GAAA,IAAI,CAAC1L,gBAAgB,CAAC1K,SAAS,CAAjD+K,aAAAA,CAAAA;YACR8N,WAAY/c,CAAAA,GAAG,CAACqI,QAAQ,CAAC4G,aAAAA,CAAAA,CAAAA;YACzB8N,WAAYhd,CAAAA,GAAG,CAACsI,QAAQ,CAAC4G,aAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB/B,OA6DlB,GA7DD,SAAmBA,OAAAA,CAAQT,OAAO,EAAA;AAChC,QAAA,IAA4B,KAAA,GAAA,IAAI,EAAfoQ,SAAW,KAApBhB,CAAAA,OAAAA,CAAAA;AACR,QAAA,IAAM3X,SAAyB,GAAA,IAAI,CAAC0K,gBAAgB,CAAC1K,SAAS,CAAA;QAC9D,IAAgCA,eAAAA,GAAAA,SAAUkE,CAAAA,IAAI,EAAnCgB,QAAqBlF,eAAxBE,CAAAA,CAAAA,EAAUC,MAAGkF,GAAWrF,eAAdG,CAAAA,CAAAA,CAAAA;QAClB,IAAI,EAACwY,0BAAAA,MAAQhY,CAAAA,OAAO,KAAI,CAACuE,KAAAA,IAAS,CAACG,MAAQ,EAAA;AACzC,YAAA,OAAA;AACF,SAAA;QAEA,IAAI7E,QAAAA,GAAW,IAAI,CAACwY,WAAW,EAAA,CAAA;AAC/B,QAAA,IAAI,CAACxY,QAAU,EAAA;AACb,YAAA,OAAA;AACF,SAAA;;QAEA,IAAIA,QAAAA,CAASyY,SAAS,EAAE;;AAEtBzY,YAAAA,QAAAA,GAAW,IAAI,CAAC4X,OAAO,CAACC,qBAAqB,EAAA,CAAA;AAC/C,SAAA;QAEA,IAAM1c,KAAAA,GAAQ,IAAI,CAAC1C,eAAe,EAAA,CAAA;AAClC,QAAA,IAAI,IAAI,CAACwO,MAAM,CAACxF,CAAC,GAAGtG,SAAS,CAAG,EAAA;AAC9B,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAA4C,MAAA,GAAA,IAAI,EAAxBud,kBAAoB,MAAtCvR,CAAAA,gBAAAA,CAAAA;QACN,IAAMrK,MAAAA,GAAS,IAAI,CAAChD,cAAc,EAAA,CAAA;;QAElC,IAAI4e,eAAAA,GAAkBtR,mBAAoBC,CAAAA,WAAW,EAAE;AACrD,YAAA,IAAI,CAACiR,UAAU,CAACC,eAAe,CAC7B,IAAI,EACJ/Y,SAAUuL,CAAAA,WAAW,EACrBrG,KAAAA,EACAG,QACArF,SAAUiE,CAAAA,KAAK,EACf,KACA,EAAA,KAAA,EACA3G,OAAO8Y,0BAA0B,CAAA,CAAA;YAEnC8C,eAAmB,IAAA,CAACtR,oBAAoBC,WAAW,CAAA;AACrD,SAAA;;AAGA,QAAA,IAAIqR,eAAuC,GAAA,CAAA,EAAA;AACzC,YAAA,IAAI,CAACJ,UAAU,CAACK,SAAS,CAAC,IAAI,CAAA,CAAA;YAC9BD,eAAmB,IAAA,CAAA,CAAA,CAAA;AACrB,SAAA;;QAGA,IAAIA,eAAAA,GAAkBjM,qBAAsBvF,CAAAA,KAAK,EAAE;AACjD,YAAA,IAAI,CAACoR,UAAU,CAACM,WAAW,CAAC,IAAI,EAAEzd,KAAAA,CAAAA,CAAAA;YAClCud,eAAmB,IAAA,CAACjM,sBAAsBvF,KAAK,CAAA;AACjD,SAAA;QAEA,IAAI,CAACC,gBAAgB,GAAGuR,eAAAA,CAAAA;AACxB,QAAA,IAAM,MAAEtQ,GAAWL,OAAQY,CAAAA,MAAM,CAAzBP,MAAAA,CAAAA;AACR,QAAA,IAAMyQ,aAAgBzQ,GAAAA,MAAAA,CAAO0Q,kBAAkB,CAACC,GAAG,EAAA,CAAA;QACnD,IAAMC,QAAAA,GAAW,IAAI,CAACjN,SAAS,CAAA;AAC/B8M,QAAAA,aAAAA,CAAc1T,GAAG,CAAC,IAAI,EAAEnF,QAAUgZ,EAAAA,QAAAA,CAASC,KAAK,CAACC,SAAS,EAAEF,QAAAA,CAASG,OAAO,EAAE,IAAI,CAAChB,MAAM,CAAChY,OAAO,EAAE6Y,QAAAA,CAAAA,CAAAA;AACnGH,QAAAA,aAAAA,CAAcO,SAAS,GAAGpZ,QAAAA,CAASqZ,MAAM,CAACC,UAAU,CAAC,CAAE,CAAA,CAAA;QACvDT,aAAcU,CAAAA,QAAQ,GAAGzc,MAAAA,CAAOuZ,SAAS,CAAA;QACzCwC,aAAcW,CAAAA,eAAe,GAAG1c,MAAAA,CAAO6R,aAAa,CAAA;QACpD7R,MAAO2R,CAAAA,eAAe,CAAC5P,IAAI,CAACga,aAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;AAEA,IAAA,MAAA,CACmBY,mBAKlB,GAND,SACmBA,mBAAAA,CAAoB1e,IAAY,EAAA;QACjD,IAAIA,IAAAA,GAAO6L,sBAAuB8S,CAAAA,IAAI,IAAI,IAAI,CAAC1B,SAAS,KAAKP,cAAeQ,CAAAA,KAAK,EAAE;AACjF,YAAA,IAAI,CAAC9Q,gBAAgB,IAAA,EAAA,CAAA;AACvB,SAAA;AACA,QAAA,IAAI,CAACA,gBAAgB,IAAIC,mBAAAA,CAAoBC,WAAW,CAAA;AAC1D,KAAA,CAAA;IAEA,MAAmByE,CAAAA,UASlB,GATD,SAAmBA,UAAAA,GAAAA;QACjB,IAAMqM,MAAAA,GAAS,IAAI,CAAChB,OAAO,CAAA;AAC3B,QAAA,IAAIgB,MAAQ,EAAA;AACV,YAAA,IAAI,CAACwB,sBAAsB,CAACxB,MAAAA,EAAQ,CAAC,CAAA,CAAA,CAAA;;AAErCA,YAAAA,MAAAA,CAAO7S,kBAAkB,CAACgP,cAAc,CAAC,IAAI,CAACwD,eAAe,CAAA,CAAA;YAC7D,IAAI,CAACX,OAAO,GAAG,IAAA,CAAA;AACjB,SAAA;AACA,QAAA,WAAA,CAAA,SAAA,CAAMrL,UAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;AAEA,IAAA,MAAA,CACQgM,eAwCP,GAzCD,SACQA,eAAAA,CAAgB/c,IAAuB,EAAA;QAC7C,OAAQA,IAAAA;AACN,YAAA,KAAK6e,kBAAkBzZ,OAAO;AAC5B,gBAAA,IAAI,CAAC0I,UAAU,CAACgR,UAAU,CAAChT,UAAAA,CAAWwF,gBAAgB,EAAE,IAAI,CAAC8L,MAAM,CAAChY,OAAO,CAAA,CAAA;AAC3E,gBAAA,MAAA;AACF,YAAA,KAAKyZ,kBAAkBlW,IAAI;gBACzB,OAAQ,IAAI,CAACsU,SAAS;AACpB,oBAAA,KAAKP,eAAeS,MAAM;AACxB,wBAAA,IAAI,CAAC/Q,gBAAgB,IAAIC,mBAAAA,CAAoBC,WAAW,CAAA;AACxD,wBAAA,MAAA;AACF,oBAAA,KAAKoQ,eAAeQ,KAAK;AACvB,wBAAA,IAAI,CAAC9Q,gBAAgB,IAAA,CAAA,CAAA;AACrB,wBAAA,MAAA;AAGJ,iBAAA;AACA,gBAAA,MAAA;AACF,YAAA,KAAKyS,kBAAkBE,MAAM;gBAC3B,OAAQ,IAAI,CAAC9B,SAAS;AACpB,oBAAA,KAAKP,eAAeS,MAAM;AACxB,wBAAA,IAAI,CAAC/Q,gBAAgB,IAAA,CAAA,CAAA;AACrB,wBAAA,MAAA;AACF,oBAAA,KAAKsQ,eAAeQ,KAAK;AACvB,wBAAA,IAAI,CAAC9Q,gBAAgB,IAAA,CAAA,CAAA;AACrB,wBAAA,MAAA;AAGJ,iBAAA;AACA,gBAAA,MAAA;AACF,YAAA,KAAKyS,kBAAkBG,MAAM,CAAA;AAC7B,YAAA,KAAKH,kBAAkBI,iBAAiB;AACtC,gBAAA,IAAI,CAAC7S,gBAAgB,IAAA,CAAA,CAAA;AACrB,gBAAA,MAAA;AACF,YAAA,KAAKyS,kBAAkBK,WAAW;AAChC,gBAAA,IAAI,CAAC9S,gBAAgB,IAAA,CAAA,CAAA;AACrB,gBAAA,MAAA;AACF,YAAA,KAAKyS,kBAAkB5L,OAAO;gBAC5B,IAAI,CAACmK,MAAM,GAAG,IAAA,CAAA;AACd,gBAAA,MAAA;AACJ,SAAA;AACF,KAAA,CAAA;AA1RWjB,IAAAA,aAAAA,CAAAA,KAAAA,EAAAA;;YAePM,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACQ,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAa/c,KAAqB,EAAA;AAChC,gBAAA,IAAI,IAAI,CAAC+c,SAAS,KAAK/c,KAAO,EAAA;oBAC5B,IAAI,CAAC+c,SAAS,GAAG/c,KAAAA,CAAAA;oBACjB,OAAQA,KAAAA;AACN,wBAAA,KAAKwc,eAAeC,MAAM;4BACxB,IAAI,CAACY,UAAU,GAAG4B,qBAAAA,CAAAA;AAClB,4BAAA,MAAA;AACF,wBAAA,KAAKzC,eAAeS,MAAM;4BACxB,IAAI,CAACI,UAAU,GAAG6B,qBAAAA,CAAAA;AAClB,4BAAA,MAAA;AACF,wBAAA,KAAK1C,eAAeQ,KAAK;4BACvB,IAAI,CAACK,UAAU,GAAG8B,oBAAAA,CAAAA;AAClB,4BAAA,MAAA;AAGJ,qBAAA;AACA,oBAAA,IAAI,CAAC9B,UAAU,CAAC+B,SAAS,CAAC,IAAI,CAAA,CAAA;AAC9B,oBAAA,IAAI,CAAClT,gBAAgB,IAAA,CAAA,CAAA;AACvB,iBAAA;AACF,aAAA;;;YAKImT,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAClD,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAanc,KAAqB,EAAA;AAChC,gBAAA,IAAI,IAAI,CAACmc,SAAS,KAAKnc,KAAO,EAAA;oBAC5B,IAAI,CAACmc,SAAS,GAAGnc,KAAAA,CAAAA;AACjB,oBAAA,IAAI,IAAI,CAACuc,QAAQ,KAAKC,cAAAA,CAAeQ,KAAK,EAAE;AAC1C,wBAAA,IAAI,CAAC9Q,gBAAgB,IAAA,CAAA,CAAA;AACvB,qBAAA;AACF,iBAAA;AACF,aAAA;;;YAKIoT,GAAAA,EAAAA,wBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChD,uBAAuB,CAAA;AACrC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAA2Btc,KAAa,EAAA;AACtC,gBAAA,IAAIA,KAAU,KAAA,IAAI,CAACsc,uBAAuB,EAAE;AAC1Ctc,oBAAAA,KAAAA,GAAQmL,QAASoU,CAAAA,KAAK,CAACvf,KAAAA,EAAO,CAAG,EAAA,CAAA,CAAA,CAAA;oBACjC,IAAI,CAACsc,uBAAuB,GAAGtc,KAAAA,CAAAA;AAC/B,oBAAA,IAAI,IAAI,CAACuc,QAAQ,KAAKC,cAAAA,CAAeQ,KAAK,EAAE;AAC1C,wBAAA,IAAI,CAAC9Q,gBAAgB,IAAA,CAAA,CAAA;AACvB,qBAAA;AACF,iBAAA;AACF,aAAA;;;YAKIgR,GAAAA,EAAAA,QAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAChB,OAAO,CAAA;AACrB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAWlc,KAAoB,EAAA;gBAC7B,IAAMwf,UAAAA,GAAa,IAAI,CAACtD,OAAO,CAAA;AAC/B,gBAAA,IAAIsD,eAAexf,KAAO,EAAA;AACxB,oBAAA,IAAIwf,UAAY,EAAA;AACd,wBAAA,IAAI,CAACd,sBAAsB,CAACc,UAAAA,EAAY,CAAC,CAAA,CAAA,CAAA;;AAEzCA,wBAAAA,UAAAA,CAAWnV,kBAAkB,CAACgP,cAAc,CAAC,IAAI,CAACwD,eAAe,CAAA,CAAA;AACnE,qBAAA;AACA,oBAAA,IAAI,CAAC3Q,gBAAgB,IAAA,CAAA,CAAA;AACrB,oBAAA,IAAIlM,KAAO,EAAA;wBACT,IAAI,CAAC0e,sBAAsB,CAAC1e,KAAO,EAAA,CAAA,CAAA,CAAA;;AAEnCA,wBAAAA,KAAAA,CAAMqK,kBAAkB,CAACiP,WAAW,CAAC,IAAI,CAACuD,eAAe,CAAA,CAAA;wBACzD,IAAI,CAACjP,UAAU,CAACgR,UAAU,CAAChT,UAAWwF,CAAAA,gBAAgB,EAAEpR,KAAAA,CAAMkF,OAAO,CAAA,CAAA;qBAChE,MAAA;AACL,wBAAA,IAAI,CAAC0I,UAAU,CAACgR,UAAU,CAAChT,UAAAA,CAAWwF,gBAAgB,EAAE,IAAA,CAAA,CAAA;AAC1D,qBAAA;oBACA,IAAI,CAAC8K,OAAO,GAAGlc,KAAAA,CAAAA;AACjB,iBAAA;AACF,aAAA;;;AAnGWic,IAAAA,OAAAA,KAAAA,CAAAA;EAAcrQ,UA2R1B,EAAA;;;;;;;;;;;;;;;;;;;;;;;ACzRD;;IAGO,IAAM6T,IAAN,iBAAA,SAAA,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,IAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,IAAAA,CAkNCnjB,MAAc,EAAA;;AACxB,QAAA,KAAA,GAAA,WAAA,CAAA,IAAA,CAAA,IAAA,EAAMA,MA7MAojB,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,WAAAA,GAAchZ,KAEdiZ,EAAAA,EAAAA,KAAAA,CAAAA,QAAAA,GAAoB,YAEpBC,KAAgB,GAAA,EAAA,EAAA,KAAA,CAEhBC,YAA4B,GAAA,IAAIvb,qBAEhCwb,KAAc,GAAA,IAAA,EAAA,KAAA,CAEdC,SAAoB,GAAA,EAAA,EAAA,KAAA,CAEpBC,aAAwBC,SAAUrY,CAAAA,IAAI,EAEtCsY,KAAAA,CAAAA,YAAAA,GAAuB,CAEvBC,EAAAA,KAAAA,CAAAA,iBAAAA,GAA4B,CAE5BxY,EAAAA,KAAAA,CAAAA,oBAAAA,GAAgDyY,wBAAwB5W,MAAM,EAAA,KAAA,CAE9E3B,kBAA4CwY,GAAAA,qBAAAA,CAAsB7W,MAAM,EAExE8W,KAAAA,CAAAA,eAAAA,GAA2B,KAE3BC,EAAAA,KAAAA,CAAAA,aAAAA,GAA8BC,aAAaC,QAAQ,CAAA;AAsLzD,QAAA,IAAM,MAAEtT,GAAAA,KAAAA,CAAAA,MAAAA,CAAAA;;QAER,KAAKuT,CAAAA,IAAI,GAAGvT,MAAAA,CAAOwT,gBAAgB,CAAA;AACnC,QAAA,KAAA,CAAK1P,cAAc,GAAG,KAAA,CAAA;;AAEtB,QAAA,KAAA,CAAKyL,WAAW,CAACvP,MAAOyT,CAAAA,eAAe,CAACC,mBAAmB,CAAA,CAAA;;;AAzNlDpB,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AA4NX;;MAGA,MAAA,CAAmB5O,UAYlB,GAZD,SAAmBA,UAAAA,GAAAA;QACjB,IAAI,IAAI,CAACiP,KAAK,EAAE;AACd,YAAA,IAAI,CAACpB,sBAAsB,CAAC,IAAI,CAACoB,KAAK,EAAE,CAAC,CAAA,CAAA,CAAA;YACzC,IAAI,CAACA,KAAK,GAAG,IAAA,CAAA;AACf,SAAA;AAEA,QAAA,WAAA,CAAA,SAAA,CAAMjP,UAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AAEL,QAAA,IAAI,CAACiQ,eAAe,EAAA,CAAA;QACpB,IAAI,CAACpB,WAAW,GAAG,IAAA,CAAA;QAEnB,IAAI,CAACC,QAAQ,KAAK,IAAI,CAACA,QAAQ,GAAG,IAAG,CAAA,CAAA;AACvC,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASrX,QAKR,GALD,SAASA,QAAAA,CAASC,MAAY,EAAA;;AAE5B,QAAA,WAAA,CAAA,SAAA,CAAMD,QAAD,CAAUC,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AACfA,QAAAA,MAAAA,CAAOmY,IAAI,GAAG,IAAI,CAACZ,KAAK,CAAA;AACxBvX,QAAAA,MAAAA,CAAOoX,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAA;AACjC,KAAA,CAAA;AAEA;;AAEC,MACDliB,MAAAA,CAAAA,mBAEC,GAFDA,SAAAA,oBAAoBqC,IAAY,EAAA;AAC9B,QAAA,OAAO,CAAC,IAAI,CAACoM,gBAAgB,GAAGpM,IAAG,KAAM,CAAA,CAAA;AAC3C,KAAA,CAAA;AAEA;;AAEC,MACDF,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,kBAAkBE,IAAY,EAAA;QAC5B,IAAI,CAACoM,gBAAgB,IAAIpM,IAAAA,CAAAA;AAC3B,KAAA,CAAA;AAEA;;AAEC,MACDlC,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,mBAAmBkC,IAAY,EAAA;QAC7B,IAAI,CAACoM,gBAAgB,IAAI,CAACpM,IAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEA;;MAGAihB,MAAAA,CAAAA,WAKC,GALDA,SAAAA,WAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAACpB,QAAQ,EAAE;AAClB,YAAA,IAAI,CAACqB,aAAa,EAAA,CAAA;AACpB,SAAA;QACA,OAAO,IAAI,CAACrB,QAAQ,CAAA;AACtB,KAAA,CAAA;AAEA;;AAEC,MACDlf,MAAAA,CAAAA,mBAIC,GAJDA,SAAAA,oBAAoBrB,IAA2B,EAAA;QAC7C,IAAIA,IAAAA,KAASsB,qBAAsBoc,CAAAA,0BAA0B,EAAE;AAC7D,YAAA,IAAI,CAACld,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBud,aAOlB,GAPD,SAAmBA,aAAAA,CAAcC,WAAwB,EAAA;AACvD,QAAA,IAAM7Y,SAAyB,GAAA,IAAI,CAAC0K,gBAAgB,CAAC1K,SAAS,CAAA;QAC9D,IAAgCA,eAAAA,GAAAA,SAAUkE,CAAAA,IAAI,EAAnCgB,QAAqBlF,eAAxBE,CAAAA,CAAAA,EAAUC,MAAGkF,GAAWrF,eAAdG,CAAAA,CAAAA,CAAAA;QAClB,IAAiCH,gBAAAA,GAAAA,SAAUiE,CAAAA,KAAK,EAArC6H,SAAsB9L,gBAAzBE,CAAAA,CAAAA,EAAWC,MAAG4L,GAAW/L,gBAAdG,CAAAA,CAAAA,CAAAA;QACnB0Y,WAAY/c,CAAAA,GAAG,CAAC6J,GAAG,CAAC,CAACT,KAAQ4G,GAAAA,MAAAA,EAAQ,CAACzG,MAAAA,GAAS0G,MAAQ,EAAA,CAAA,CAAA,CAAA;AACvD8M,QAAAA,WAAAA,CAAYhd,GAAG,CAAC8J,GAAG,CAACT,KAAS,IAAA,CAAI4G,GAAAA,MAAK,CAAIzG,EAAAA,MAAAA,IAAU,CAAA,GAAI0G,MAAK,CAAI,EAAA,CAAA,CAAA,CAAA;QACjEhM,WAAYC,CAAAA,SAAS,CAAC6Y,WAAAA,EAAa,IAAI,CAACnO,gBAAgB,CAAC1K,SAAS,CAACuL,WAAW,EAAEsN,WAAAA,CAAAA,CAAAA;AAClF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB7P,OA8ClB,GA9CD,SAAmBA,OAAAA,CAAQT,OAAO,EAAA;QAChC,IAAI,IAAI,CAACmU,gBAAgB,EAAI,EAAA;AAC3B,YAAA,OAAA;AACF,SAAA;QAEA,IAAI,IAAI,CAACxjB,mBAAmB,CAAqB,CAAA,CAAA,EAAA;AAC/C,YAAA,IAAI,CAACujB,aAAa,EAAA,CAAA;AAClB,YAAA,IAAI,CAACpjB,kBAAkB,CAAA,CAAA,CAAA,CAAA;AACzB,SAAA;QAEA,IAAMiE,MAAAA,GAAS,IAAI,CAAChD,cAAc,EAAA,CAAA;QAClC,IAAI,IAAI,CAACpB,mBAAmB,CAAiC,CAAA,CAAA,EAAA;AAC3D,YAAA,IAAI,CAACyjB,gBAAgB,EAAA,CAAA;AACrB,YAAA,IAAI,CAACtjB,kBAAkB,CAAA,CAAA,CAAA,CAAA;AACzB,SAAA;QAEA,IAAI,IAAI,CAACH,mBAAmB,CAA2B,EAAA,CAAA,EAAA;AACrD,YAAA,IAAI,CAAC0jB,eAAe,EAAA,CAAA;AACpB,YAAA,IAAI,CAACvjB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AACzB,SAAA;AAEA,QAAA,IAAI,IAAI,CAACH,mBAAmB,CAAC+T,qBAAAA,CAAsBvF,KAAK,CAAG,EAAA;AACzD,YAAA,IAAI,CAACmV,YAAY,EAAA,CAAA;AACjB,YAAA,IAAI,CAACxjB,kBAAkB,CAAC4T,qBAAAA,CAAsBvF,KAAK,CAAA,CAAA;AACrD,SAAA;AAEA,QAAA,IAAMkB,MAASL,GAAAA,OAAAA,CAAQY,MAAM,CAACP,MAAM,CAAA;QACpC,IAAMkU,qBAAAA,GAAwBlU,OAAOmU,sBAAsB,CAAA;QAC3D,IAAMvc,QAAAA,GAAW,IAAI,CAACwY,WAAW,EAAA,CAAA;QACjC,IAAM3H,cAAAA,GAAiB/T,OAAO2R,eAAe,CAAA;QAC7C,IAAM8K,QAAAA,GAAWzc,OAAOuZ,SAAS,CAAA;QACjC,IAAMmD,eAAAA,GAAkB1c,OAAO6R,aAAa,CAAA;QAC5C,IAAM6N,UAAAA,GAAa,IAAI,CAAC7B,WAAW,CAAA;AACnC,QAAA,IAAMvB,YAAYpZ,QAASqZ,CAAAA,MAAM,CAACC,UAAU,CAAC,CAAE,CAAA,CAAA;QAC/C,IAAK,IAAIhd,CAAI,GAAA,CAAA,EAAGC,CAAIigB,GAAAA,UAAAA,CAAW5iB,MAAM,EAAE0C,CAAAA,GAAIC,CAAG,EAAA,EAAED,CAAG,CAAA;;AAKjDuc,YAAAA,cAAAA,CAAAA;YAJA,IAA8B2D,aAAAA,GAAAA,UAAU,CAAClgB,CAAAA,CAAE,EAAnC0c,QAAsBwD,GAAAA,aAAAA,CAAtBxD,QAAU7Y,EAAAA,OAAAA,GAAYqc,aAAZrc,CAAAA,OAAAA,CAAAA;YAClB,IAAM0Y,aAAAA,GAAgByD,sBAAsBvD,GAAG,EAAA,CAAA;AAC/CF,YAAAA,aAAAA,CAAc1T,GAAG,CAAC,IAAI,EAAEnF,QAAUgZ,EAAAA,QAAAA,CAASC,KAAK,CAACC,SAAS,EAAEF,QAASG,CAAAA,OAAO,EAAEhZ,OAAS6Y,EAAAA,QAAAA,CAAAA,CAAAA;YAEvFH,CAAAA,cAAAA,GAAAA,eAAchQ,UAAdgQ,KAAAA,cAAAA,CAAchQ,aAAe,IAAI4T,UAAAA,CAAWC,gBAAgBC,aAAa,CAAA,CAAA,CAAA;AACzE9D,YAAAA,aAAAA,CAAchQ,UAAU,CAACgR,UAAU,CAACa,IA9U7BA,CA8UkCkC,oBAAoB,EAAEzc,OAAAA,CAAAA,CAAAA;AAC/D0Y,YAAAA,aAAAA,CAAcO,SAAS,GAAGA,SAAAA,CAAAA;AAC1BP,YAAAA,aAAAA,CAAcU,QAAQ,GAAGA,QAAAA,CAAAA;AACzBV,YAAAA,aAAAA,CAAcW,eAAe,GAAGA,eAAAA,CAAAA;AAChC3I,YAAAA,cAAAA,CAAehS,IAAI,CAACga,aAAAA,CAAAA,CAAAA;AACtB,SAAA;AACF,KAAA,CAAA;IAEA,MAAQoD,CAAAA,aAKP,GALD,SAAQA,aAAAA,GAAAA;QACN,IAAMN,IAAAA,GAAO,IAAI,CAACZ,KAAK,CAAA;;AAEvB,QAAA,IAAI,CAACH,QAAQ,GAAGe,IAAAA,CAAKK,WAAW,CAAC,IAAI,CAACa,QAAQ,EAAE,IAAI,CAACC,SAAS,CAAA,CAAA;AAC9D,QAAA,IAAI,CAAClC,QAAQ,CAACmC,gBAAgB,GAAGC,UAAUC,mBAAmB,CAACtB,IAAKuB,CAAAA,IAAI,EAAE,IAAI,CAACL,QAAQ,EAAE,IAAI,CAACC,SAAS,CAAA,CAAA;AACzG,KAAA,CAAA;IAEA,MAAQV,CAAAA,eA6CP,GA7CD,SAAQA,eAAAA,GAAAA;QACN,IAAMe,CAAAA,GAAI,IAAI,CAACjT,gBAAgB,CAAC1K,SAAS,CAACuL,WAAW,CAAClN,QAAQ,CAAA;;AAG9D,QAAA,IAAMuf,KAAKD,CAAC,CAAC,EAAE,EAAEE,EAAAA,GAAKF,CAAC,CAAC,CAAA,CAAE,EAAEG,EAAKH,GAAAA,CAAC,CAAC,CAAE,CAAA,EACnCI,KAAKJ,CAAC,CAAC,EAAE,EAAEK,EAAAA,GAAKL,CAAC,CAAC,CAAA,CAAE,EAAEM,EAAKN,GAAAA,CAAC,CAAC,CAAE,CAAA,EAC/BO,MAAMP,CAAC,CAAC,GAAG,EAAEQ,GAAAA,GAAMR,CAAC,CAAC,EAAA,CAAG,EAAES,GAAMT,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AAEvC,QAAA,IAAMU,KAAKhX,UAAWoE,CAAAA,UAAU,CAAC9F,GAAG,CAACoY,IAAIC,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AAC7C,QAAA,IAAMK,QAAQjX,UAAW+D,CAAAA,UAAU,CAACzF,GAAG,CAACiY,IAAIC,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QAEhD,IAAMS,cAAAA,GAAiBrD,IAxWdA,CAwWmBsD,eAAe,CAAA;AAC3C,QAAA,IAAOC,iBAAkEF,cAAlDG,CAAAA,CAAAA,CAAAA,EAAAA,cAAAA,GAAkDH,cAAlCI,CAAAA,CAAAA,CAAAA,EAAAA,cAAAA,GAAkCJ,mBAAlBK,cAAkBL,GAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACzE,IAAMvB,UAAAA,GAAa,IAAI,CAAC7B,WAAW,CAAA;QACnC,IAAK,IAAIre,CAAI,GAAA,CAAA,EAAGC,CAAIigB,GAAAA,UAAAA,CAAW5iB,MAAM,EAAE0C,CAAAA,GAAIC,CAAG,EAAA,EAAED,CAAG,CAAA;YACjD,IAAsCkgB,aAAAA,GAAAA,UAAU,CAAClgB,CAAAA,CAAE,EAA3C0c,QAA8BwD,GAAAA,aAAAA,CAA9BxD,QAAUqF,EAAAA,eAAAA,GAAoB7B,aAApB6B,CAAAA,eAAAA,CAAAA;YAClB,IAAK,IAAIvd,CAAI,GAAA,CAAA,EAAGC,CAAIsd,GAAAA,eAAAA,CAAgBzkB,MAAM,EAAEkH,CAAAA,GAAIC,CAAG,EAAA,EAAED,CAAG,CAAA;gBACtD,IAAMwd,cAAAA,GAAiBD,eAAe,CAACvd,CAAE,CAAA,CAAA;gBACzC,IAAQyd,iBAAmBD,cAAnBC,CAAAA,cAAAA,CAAAA;AACR,gBAAA,IAAQ7e,QAA6B6e,GAAAA,cAAAA,CAA7B7e,CAAaC,EAAG6e,WAAaD,cAAhB5e,CAAAA,CAAAA,CAAAA;;AAGrBse,gBAAAA,cAAAA,CAAe9Y,GAAG,CAChBsZ,QAAWrB,GAAAA,EAAAA,GAAKoB,WAAWjB,EAAKG,GAAAA,GAAAA,EAChCe,QAAWpB,GAAAA,EAAAA,GAAKmB,WAAWhB,EAAKG,GAAAA,GAAAA,EAChCc,QAAWnB,GAAAA,EAAAA,GAAKkB,WAAWf,EAAKG,GAAAA,GAAAA,CAAAA,CAAAA;;AAIlCvT,gBAAAA,OAAAA,CAAQqU,KAAK,CAACZ,KAAAA,EAAOS,cAAe9S,CAAAA,CAAC,GAAGgT,QAAUP,EAAAA,cAAAA,CAAAA,CAAAA;;gBAElD7T,OAAQnN,CAAAA,GAAG,CAAC+gB,cAAAA,EAAgBC,cAAgBA,EAAAA,cAAAA,CAAAA,CAAAA;;AAE5C7T,gBAAAA,OAAAA,CAAQqU,KAAK,CAACb,EAAAA,EAAIU,cAAe5S,CAAAA,CAAC,GAAG6S,QAAUL,EAAAA,cAAAA,CAAAA,CAAAA;;gBAE/C9T,OAAQnN,CAAAA,GAAG,CAAC+gB,cAAAA,EAAgBE,cAAgBC,EAAAA,cAAAA,CAAAA,CAAAA;;gBAE5C/T,OAAQnN,CAAAA,GAAG,CAACghB,cAAAA,EAAgBC,cAAgBA,EAAAA,cAAAA,CAAAA,CAAAA;AAE5C,gBAAA,IAAMQ,QAAW3F,GAAAA,QAAAA,CAASC,KAAK,CAAC0F,QAAQ,CAAA;AACxC,gBAAA,IAAK,IAAI3f,CAAI,GAAA,CAAA,EAAG4f,IAAI5F,QAAS6F,CAAAA,UAAU,CAACC,KAAK,GAAGR,cAAeS,CAAAA,YAAY,GAAG,EAAI/f,EAAAA,CAAAA,GAAI,GAAG,EAAEA,CAAAA,EAAG4f,KAAK,CAAG,CAAA;AACpGb,oBAAAA,cAAc,CAAC/e,CAAAA,CAAE,CAACggB,WAAW,CAACL,QAAUC,EAAAA,CAAAA,CAAAA,CAAAA;AAC1C,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAQvC,CAAAA,YAgBP,GAhBD,SAAQA,YAAAA,GAAAA;AACN,QAAA,IAAuB,YAAA,GAAA,IAAI,CAACpV,MAAM,EAA1BgY,CAAe,GAAA,YAAA,CAAfA,CAAGC,EAAAA,CAAAA,GAAY,aAAZA,CAAGxd,EAAAA,CAAAA,GAAS,YAATA,CAAAA,CAAAA,EAAGD,IAAM,YAANA,CAAAA,CAAAA,CAAAA;AACjB,QAAA,IAAM0d,UAAa1d,GAAAA,CAAAA,GAAI,IAAI,CAAChJ,eAAe,EAAA,CAAA;QAC3C,IAAM+jB,UAAAA,GAAa,IAAI,CAAC7B,WAAW,CAAA;QACnC,IAAK,IAAIre,CAAI,GAAA,CAAA,EAAGC,CAAIigB,GAAAA,UAAAA,CAAW5iB,MAAM,EAAE0C,CAAAA,GAAIC,CAAG,EAAA,EAAED,CAAG,CAAA;AACjD,YAAA,IAAM0c,QAAWwD,GAAAA,UAAU,CAAClgB,CAAAA,CAAE,CAAC0c,QAAQ,CAAA;YACvC,IAAM6F,UAAAA,GAAa7F,SAAS6F,UAAU,CAAA;YACtC,IAAMO,WAAAA,GAAcP,UAAWnb,CAAAA,IAAI,GAAG,CAAA,CAAA;AACtC,YAAA,IAAMib,QAAW3F,GAAAA,QAAAA,CAASC,KAAK,CAAC0F,QAAQ,CAAA;AACxC,YAAA,IAAK,IAAI7d,CAAAA,GAAI,CAAG8d,EAAAA,CAAAA,GAAIC,UAAWC,CAAAA,KAAK,GAAG,CAAA,EAAGhe,CAAIse,GAAAA,WAAAA,EAAa,EAAEte,CAAAA,EAAG8d,KAAK,CAAG,CAAA;gBACtED,QAAQ,CAACC,EAAE,GAAGK,CAAAA,CAAAA;gBACdN,QAAQ,CAACC,CAAI,GAAA,CAAA,CAAE,GAAGM,CAAAA,CAAAA;gBAClBP,QAAQ,CAACC,CAAI,GAAA,CAAA,CAAE,GAAGld,CAAAA,CAAAA;gBAClBid,QAAQ,CAACC,CAAI,GAAA,CAAA,CAAE,GAAGO,UAAAA,CAAAA;AACpB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAQhD,CAAAA,gBA8JP,GA9JD,SAAQA,gBAAAA,GAAAA;;QAEN,IAAMkD,mBAAAA,GAAsBC,OAAOC,cAAc,GAAG,IAAI,CAACzlB,cAAc,GAAG8b,0BAA0B,CAAA;QACpG,IAAqB,kBAAA,GAAA,IAAI,CAACkF,YAAY,EAA9Bxf,GAAa,GAAA,kBAAA,CAAbA,GAAKD,EAAAA,GAAAA,GAAQ,kBAARA,CAAAA,GAAAA,CAAAA;QACb,IAAMgjB,eAAAA,GAAkB3D,IAlafA,CAkaoB8E,gBAAgB,CAAA;QAC7C,IAAMC,QAAAA,GAAW,IAAI,CAACzD,WAAW,EAAA,CAAA;QACjC,IAAqC,gCAAA,GAAA,IAAI,CAAC9R,gBAAgB,CAAC1K,SAAS,EAA5DkE,IAA6B,GAAA,gCAAA,CAA7BA,IAAMD,EAAAA,KAAAA,GAAuB,gCAAvBA,CAAAA,KAAAA,CAAAA;QACd,IAAIic,aAAAA,GAAgBhc,KAAKhE,CAAC,CAAA;QAC1B,IAAIigB,cAAAA,GAAiBjc,KAAK/D,CAAC,CAAA;AAC3B,QAAA,IAAMigB,cAAcF,aAAiB,IAAA,GAAMjc,GAAAA,KAAAA,CAAM/D,CAAC,CAADA,CAAAA;AACjD,QAAA,IAAMmgB,eAAeF,cAAkB,IAAA,GAAMlc,GAAAA,KAAAA,CAAM9D,CAAC,CAADA,CAAAA;AACnD,QAAA,IAAMmgB,mBAAmB,IAAI,CAAC1E,iBAAiB,GAAG,IAAI,CAACJ,SAAS,CAAA;AAChE,QAAA,IAAM+E,cAAc,IAAI,CAACC,cAAc,GACnChD,UAAUiD,mBAAmB,CAC3B,IAAI,EACJP,gBAAgBL,mBAChBM,EAAAA,cAAAA,GAAiBN,mBACjB,EAAA,IAAI,CAAClE,YAAY,GAAG,IAAI,CAACH,SAAS,EAClC8E,gBAAAA,CAAAA,GAEF9C,SAAUkD,CAAAA,sBAAsB,CAC9B,IAAI,EACJP,cAAiBN,GAAAA,mBAAAA,EACjB,IAAI,CAAClE,YAAY,GAAG,IAAI,CAACH,SAAS,EAClC8E,gBAAAA,CAAAA,CAAAA;AAEN,QAAA,IAAQjb,MAAwDkb,GAAAA,WAAAA,CAAxDlb,MAAQsb,EAAAA,KAAAA,GAAgDJ,WAAhDI,CAAAA,KAAAA,EAAOC,UAAyCL,GAAAA,WAAAA,CAAzCK,UAAYC,EAAAA,UAAAA,GAA6BN,WAA7BM,CAAAA,UAAAA,EAAYC,eAAiBP,WAAjBO,CAAAA,YAAAA,CAAAA;;AAE/C,QAAA,IAAMC,kBAAqB,GAAA,IAAI,CAACnY,MAAM,CAACoY,mBAAmB,CAAA;QAC1D,IAAMC,QAAAA,GAAWN,MAAMvmB,MAAM,CAAA;AAC7B,QAAA,IAAI8mB,kBAAqB,GAAA,CAAA,CAAA;AAEzB,QAAA,IAAID,WAAW,CAAG,EAAA;YAChB,IAAQ3a,mBAAwB,GAAA,IAAI,CAA5BA,mBAAAA,CAAAA;AACR,YAAA,IAAM6a,0BAA0B,GAAMtB,GAAAA,mBAAAA,CAAAA;YACtCK,aAAiBL,IAAAA,mBAAAA,CAAAA;YACjBM,cAAkBN,IAAAA,mBAAAA,CAAAA;AAClB,YAAA,IAAMuB,oBAAoBlB,aAAgB,GAAA,GAAA,CAAA;AAC1C,YAAA,IAAMmB,iBAAiBR,UAAa,GAAA,GAAA,CAAA;AAEpC,YAAA,IAAIS,MAAS,GAAA,CAAA,CAAA;AACb,YAAA,IAAMC,UAAUV,UAAa,GAAA,GAAA,GAAMC,YAAY,CAAC,CAAA,CAAE,CAACU,MAAM,CAAA;YACzD,IAAMC,UAAAA,GAAaZ,aAAa,GAAMC,GAAAA,YAAY,CAACG,QAAW,GAAA,CAAA,CAAE,CAACS,OAAO,GAAG,CAAA,CAAA;YAC3E,OAAQ,IAAI,CAACnb,iBAAiB;AAC5B,gBAAA,KAAKuV,sBAAsB1W,GAAG;oBAC5Bkc,MAASnB,GAAAA,cAAAA,GAAiB,MAAMkB,cAAiBE,GAAAA,OAAAA,CAAAA;AACjD,oBAAA,MAAA;AACF,gBAAA,KAAKzF,sBAAsB7W,MAAM;AAC/Bqc,oBAAAA,MAAAA,GAASjc,SAAS,GAAMgc,GAAAA,cAAAA,GAAiB,CAACI,UAAAA,GAAaF,OAAM,IAAK,GAAA,CAAA;AAClE,oBAAA,MAAA;AACF,gBAAA,KAAKzF,sBAAsBvW,MAAM;oBAC/B+b,MAASjc,GAAAA,MAAAA,GAAS8a,cAAiB,GAAA,GAAA,GAAMkB,cAAiBI,GAAAA,UAAAA,CAAAA;AAC1D,oBAAA,MAAA;AACJ,aAAA;AAEA,YAAA,IAAIE,YAAY,CAAC,CAAA,CAAA;YACjB,IAAIC,IAAAA,GAAOlb,OAAO6D,gBAAgB,CAAA;YAClC,IAAIsX,IAAAA,GAAOnb,OAAO6D,gBAAgB,CAAA;YAClC,IAAIuX,IAAAA,GAAOpb,OAAOqb,gBAAgB,CAAA;YAClC,IAAIC,IAAAA,GAAOtb,OAAOqb,gBAAgB,CAAA;AAClC,YAAA,IAAK,IAAIjlB,CAAI,GAAA,CAAA,EAAGA,CAAImkB,GAAAA,QAAAA,EAAU,EAAEnkB,CAAG,CAAA;gBACjC,IAAMmlB,SAAAA,GAAYrB,UAAU,CAAC9jB,CAAE,CAAA,CAAA;AAC/B,gBAAA,IAAImlB,YAAY,CAAG,EAAA;oBACjB,IAAMC,IAAAA,GAAOvB,KAAK,CAAC7jB,CAAE,CAAA,CAAA;AACrB,oBAAA,IAAIqlB,MAAS,GAAA,CAAA,CAAA;AACb,oBAAA,IAAIC,WAAW,CAAC,CAAA,CAAA;AAChB,oBAAA,IAAIT,YAAY,CAAG,EAAA;wBACjBA,SAAY7kB,GAAAA,CAAAA,CAAAA;AACd,qBAAA;oBACA,OAAQwJ,mBAAAA;AACN,wBAAA,KAAKuV,wBAAwB9W,IAAI;AAC/Bod,4BAAAA,MAAAA,GAAS,CAACf,iBAAAA,CAAAA;AACV,4BAAA,MAAA;AACF,wBAAA,KAAKvF,wBAAwB5W,MAAM;AACjCkd,4BAAAA,MAAAA,GAAS,CAACF,SAAY,GAAA,GAAA,CAAA;AACtB,4BAAA,MAAA;AACF,wBAAA,KAAKpG,wBAAwB1W,KAAK;AAChCgd,4BAAAA,MAAAA,GAASf,iBAAoBa,GAAAA,SAAAA,CAAAA;AAC7B,4BAAA,MAAA;AACJ,qBAAA;oBACA,IAAK,IAAI3gB,CAAI,GAAA,CAAA,EAAGvE,CAAImlB,GAAAA,IAAAA,CAAK9nB,MAAM,EAAEkH,CAAAA,GAAIvE,CAAG,EAAA,EAAEuE,CAAG,CAAA;wBAC3C,IAAM+gB,IAAAA,GAAOH,IAAI,CAAC5gB,CAAE,CAAA,CAAA;wBACpB,IAAMghB,QAAAA,GAAWrC,QAASsC,CAAAA,YAAY,CAACF,IAAAA,CAAAA,CAAAA;wBACvC,IAAIC,QAAAA,CAASE,CAAC,GAAG,CAAG,EAAA;4BAClBJ,QAAW,GAAA,CAAA,KAAMA,QAAAA,GAAW9gB,CAAAA,CAAAA,CAAAA;AAC5B,4BAAA,IAAMwd,iBAAkBD,eAAe,CAACqC,kBAAqB,EAAA,CAAA,GAAGH,mBAAmBxH,GAAG,EAAA,CAAA;4BACtF,IAAQwF,iBAAmBD,cAAnBC,CAAAA,cAAAA,CAAAA;AACRD,4BAAAA,cAAAA,CAAene,OAAO,GAAGsf,QAAAA,CAASwC,kBAAkB,CAACH,SAASI,KAAK,CAAA,CAAA;4BACnE5D,cAAe6D,CAAAA,GAAG,GAAGL,QAAAA,CAASK,GAAG,CAAA;AACjC,4BAAA,IAAQxW,IAAuBmW,QAAvBnW,CAAAA,CAAAA,EAAGqV,SAAoBc,QAApBd,CAAAA,MAAAA,EAAQE,UAAYY,QAAZZ,CAAAA,OAAAA,CAAAA;AACnB,4BAAA,IAAMkB,IAAO,GAACT,CAAAA,MAAAA,GAAS/B,WAAU,IAAKe,uBAAAA,CAAAA;AACtC,4BAAA,IAAM7C,QAAQ,CAAC6D,MAAShW,GAAAA,CAAAA,GAAIiU,WAAU,IAAKe,uBAAAA,CAAAA;AAC3C,4BAAA,IAAM0B,MAAM,CAACvB,MAASE,GAAAA,MAAAA,GAASnB,YAAW,IAAKc,uBAAAA,CAAAA;AAC/C,4BAAA,IAAM2B,SAAS,CAACxB,MAASI,GAAAA,OAAAA,GAAUrB,YAAW,IAAKc,uBAAAA,CAAAA;AACnDpC,4BAAAA,cAAAA,CAAepZ,GAAG,CAACid,IAAMC,EAAAA,GAAAA,EAAKvE,KAAOwE,EAAAA,MAAAA,CAAAA,CAAAA;AACrChmB,4BAAAA,CAAAA,KAAM6kB,cAAcK,IAAAA,GAAOpmB,KAAKC,GAAG,CAACmmB,MAAMa,GAAG,CAAA,CAAA,CAAA;4BAC7ChB,IAAOjmB,GAAAA,IAAAA,CAAKE,GAAG,CAAC+lB,IAAMiB,EAAAA,MAAAA,CAAAA,CAAAA;AACtBxhB,4BAAAA,CAAAA,KAAM8gB,aAAaR,IAAAA,GAAOhmB,KAAKE,GAAG,CAAC8lB,MAAMgB,IAAI,CAAA,CAAA,CAAA;4BAC7Cd,IAAOlmB,GAAAA,IAAAA,CAAKC,GAAG,CAACimB,IAAMxD,EAAAA,KAAAA,CAAAA,CAAAA;AACxB,yBAAA;wBACA6D,MAAUG,IAAAA,QAAAA,CAASS,QAAQ,GAAGzC,gBAAAA,CAAAA;AAChC,qBAAA;AACF,iBAAA;gBACAgB,MAAUT,IAAAA,UAAAA,CAAAA;AACZ,aAAA;AACA,YAAA,IAAIc,YAAY,CAAG,EAAA;gBACjB7lB,GAAI6J,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;gBACd9J,GAAI8J,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;aACT,MAAA;gBACL7J,GAAI6J,CAAAA,GAAG,CAACic,IAAAA,EAAMC,IAAM,EAAA,CAAA,CAAA,CAAA;gBACpBhmB,GAAI8J,CAAAA,GAAG,CAACmc,IAAAA,EAAME,IAAM,EAAA,CAAA,CAAA,CAAA;AACtB,aAAA;SACK,MAAA;YACLlmB,GAAI6J,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;YACd9J,GAAI8J,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAChB,SAAA;AAEAsa,QAAAA,QAAAA,CAAS+C,aAAa,EAAK,GAAA,CAAA,IACzBnE,gBAAgBzgB,IAAI,CAAC,SAAC6D,CAAGC,EAAAA,CAAAA,EAAAA;YACvB,OAAOD,CAAAA,CAAEtB,OAAO,CAACF,UAAU,GAAGyB,CAAEvB,CAAAA,OAAO,CAACF,UAAU,CAAA;AACpD,SAAA,CAAA,CAAA;AAEF,QAAA,IAAI,CAAC8b,eAAe,EAAA,CAAA;AAEpB,QAAA,IAAI2E,uBAAuB,CAAG,EAAA;AAC5B,YAAA,OAAA;AACF,SAAA;QAEA,IAAMlE,UAAAA,GAAa,IAAI,CAAC7B,WAAW,CAAA;AACnC,QAAA,IAAI8H,eAAe,IAAIC,SAAAA,EAAAA,CAAAA;AACvBlG,QAAAA,UAAAA,CAAW3d,IAAI,CAAC4jB,YAAAA,CAAAA,CAAAA;AAEhB,QAAA,IAAME,mBAAsB,GAAA,IAAI,CAACnZ,gBAAgB,GAAGoZ,cAAc,CAAA;QAClE,IAAMC,iBAAAA,GAAoBxE,eAAe,CAAC,CAAE,CAAA,CAAA;QAC5C,IAAIyE,UAAAA,GAAaD,kBAAkB1iB,OAAO,CAAA;AAC1CsiB,QAAAA,YAAAA,CAAatiB,OAAO,GAAG2iB,UAAAA,CAAAA;QACvB,IAAIC,YAAAA,GAAeN,aAAapE,eAAe,CAAA;AAC/C0E,QAAAA,YAAAA,CAAalkB,IAAI,CAACgkB,iBAAAA,CAAAA,CAAAA;AAElB,QAAA,IAAK,IAAIvmB,EAAI,GAAA,CAAA,EAAGA,EAAIokB,GAAAA,kBAAAA,EAAoB,EAAEpkB,EAAG,CAAA;YAC3C,IAAMgiB,eAAAA,GAAiBD,eAAe,CAAC/hB,EAAE,CAAA,CAAA;YACzC,IAAM6D,OAAAA,GAAUme,gBAAene,OAAO,CAAA;AACtC,YAAA,IAAI2iB,eAAe3iB,OAAW4iB,IAAAA,YAAAA,CAAanpB,MAAM,GAAG,CAAA,GAAI,IAAI+oB,mBAAqB,EAAA;AAC/E,gBAAA,IAAI,CAACK,WAAW,CAACP,YAAAA,EAAcM,aAAanpB,MAAM,CAAA,CAAA;AAElD6oB,gBAAAA,YAAAA,GAAe,IAAIC,SAAAA,EAAAA,CAAAA;AACnBlG,gBAAAA,UAAAA,CAAW3d,IAAI,CAAC4jB,YAAAA,CAAAA,CAAAA;gBAChBK,UAAa3iB,GAAAA,OAAAA,CAAAA;AACbsiB,gBAAAA,YAAAA,CAAatiB,OAAO,GAAGA,OAAAA,CAAAA;AACvB4iB,gBAAAA,YAAAA,GAAeN,aAAapE,eAAe,CAAA;AAC7C,aAAA;AACA0E,YAAAA,YAAAA,CAAalkB,IAAI,CAACyf,eAAAA,CAAAA,CAAAA;AACpB,SAAA;QACA,IAAM2E,UAAAA,GAAaF,aAAanpB,MAAM,CAAA;AACtC,QAAA,IAAIqpB,aAAa,CAAG,EAAA;YAClB,IAAI,CAACD,WAAW,CAACP,YAAcQ,EAAAA,UAAAA,CAAAA,CAAAA;AACjC,SAAA;AACA5E,QAAAA,eAAAA,CAAgBzkB,MAAM,GAAG,CAAA,CAAA;AAC3B,KAAA,CAAA;AAEA,IAAA,MAAA,CACmB6f,mBAMlB,GAPD,SACmBA,mBAAAA,CAAoB1e,IAAY,EAAA;AACjD,QAAA,IAAIA,OAAO6L,sBAAuB8S,CAAAA,IAAI,IAAI3e,IAAO6L,GAAAA,sBAAAA,CAAuBsc,KAAK,EAAE;AAC7E,YAAA,IAAI,CAAC/b,gBAAgB,IAAA,CAAA,CAAA;AACvB,SAAA;AACA,QAAA,WAAA,CAAA,SAAA,CAAMsS,mBAAD,CAAqB1e,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACF,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,KAAA,CAAA;IAEA,MAAQqhB,CAAAA,gBAUP,GAVD,SAAQA,gBAAAA,GAAAA;QACN,IAAMxY,IAAAA,GAAO,IAAkB,CAACwG,gBAAgB,CAAC1K,SAAS,CAAEkE,IAAI,CAAA;AAChE,QAAA,OACE,CAAC,IAAI,CAACqX,KAAK,IACX,IAAI,CAACF,KAAK,KAAK,EAAA,IACf,IAAI,CAACG,SAAS,KAAK,CAAA,IAClB,IAAI,CAACgF,cAAc,IAAItc,IAAAA,CAAKhE,CAAC,IAAI,CAAA,IACjC,IAAI,CAACyjB,YAAY,KAAK1H,YAAAA,CAAa2H,QAAQ,IAAI1f,KAAK/D,CAAC,IAAI,KAC1D,CAAC,IAAI,CAAC7F,cAAc,EAAA,CAAA;AAExB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQkpB,WA8BP,GA9BD,SAAQA,WAAYK,CAAAA,SAAoB,EAAE9lB,KAAa,EAAA;AACrD,QAAA,IAAuB,WAAA,GAAA,IAAI,CAAC0O,KAAK,EAAzBgT,CAAe,GAAA,WAAA,CAAfA,CAAGC,EAAAA,CAAAA,GAAY,YAAZA,CAAGxd,EAAAA,CAAAA,GAAS,WAATA,CAAAA,CAAAA,EAAGD,IAAM,WAANA,CAAAA,CAAAA,CAAAA;AACjB,QAAA,IAAM0d,UAAa1d,GAAAA,CAAAA,GAAI,IAAI,CAAChJ,eAAe,EAAA,CAAA;QAC3C,IAAM6qB,WAAAA,GAAcC,eAAeC,SAAS,CAAA;QAC5C,IAAMC,iBAAAA,GAAoBH,YAAY1pB,MAAM,CAAA;QAC5C,IAAMof,QAAAA,GAAYqK,SAAUrK,CAAAA,QAAQ,GAAG,IAAI,CAACxP,gBAAgB,EAAA,CAAGka,gBAAgB,CAACnmB,KAAQ,GAAA,CAAA,CAAA,CAAA;AACxF,QAAA,IAAMohB,QAAW3F,GAAAA,QAAAA,CAASC,KAAK,CAAC0F,QAAQ,CAAA;AACxC,QAAA,IAAMgF,OAAW3K,GAAAA,QAAAA,CAAS2K,OAAO,GAAG,EAAE,CAAA;QACtC,IAAMtF,eAAAA,GAAkBgF,UAAUhF,eAAe,CAAA;AACjD,QAAA,IAAK,IAAI/hB,CAAI,GAAA,CAAA,EAAGsnB,KAAK,CAAGC,EAAAA,EAAAA,GAAK,GAAGC,EAAK9K,GAAAA,QAAAA,CAAS6F,UAAU,CAACC,KAAK,GAAG,CAAGxiB,EAAAA,CAAAA,GAAIiB,OAAO,EAAEjB,CAAAA,EAAGunB,MAAM,CAAG,CAAA;YAC3F,IAAMvF,cAAAA,GAAiBD,eAAe,CAAC/hB,CAAE,CAAA,CAAA;AACzCgiB,YAAAA,cAAAA,CAAeS,YAAY,GAAGziB,CAAAA,CAAAA;;AAG9B,YAAA,IAAK,IAAIwE,CAAI,GAAA,CAAA,EAAGA,CAAI2iB,GAAAA,iBAAAA,EAAmB,EAAE3iB,CAAG,CAAA;AAC1C6iB,gBAAAA,OAAO,CAACC,EAAK,EAAA,CAAA,GAAGN,WAAW,CAACxiB,EAAE,GAAG+iB,EAAAA,CAAAA;AACnC,aAAA;;YAGA,IAAK,IAAI/iB,KAAI,CAAGA,EAAAA,EAAAA,GAAI,GAAG,EAAEA,EAAAA,EAAGgjB,MAAM,CAAG,CAAA;AACnC,gBAAA,IAAMC,EAAKzF,GAAAA,cAAAA,CAAe6D,GAAG,CAACrhB,EAAE,CAAA,CAAA;gBAChCijB,EAAG/E,CAAAA,WAAW,CAACL,QAAUmF,EAAAA,EAAAA,CAAAA,CAAAA;gBACzBnF,QAAQ,CAACmF,EAAK,GAAA,CAAA,CAAE,GAAG7E,CAAAA,CAAAA;gBACnBN,QAAQ,CAACmF,EAAK,GAAA,CAAA,CAAE,GAAG5E,CAAAA,CAAAA;gBACnBP,QAAQ,CAACmF,EAAK,GAAA,CAAA,CAAE,GAAGpiB,CAAAA,CAAAA;gBACnBid,QAAQ,CAACmF,EAAK,GAAA,CAAA,CAAE,GAAG3E,UAAAA,CAAAA;AACrB,aAAA;AACF,SAAA;QAEA,OAAOnG,QAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ+C,CAAAA,eAiBP,GAjBD,SAAQA,eAAAA,GAAAA;QACN,IAAMS,UAAAA,GAAa,IAAI,CAAC7B,WAAW,CAAA;;AAEnC,QAAA,IAAM4F,kBAAqB,GAAA,IAAI,CAACnY,MAAM,CAACoY,mBAAmB,CAAA;QAC1D,IAAMwD,OAAAA,GAAU,IAAI,CAACxa,gBAAgB,EAAA,CAAA;QACrC,IAAK,IAAIlN,CAAI,GAAA,CAAA,EAAGC,CAAIigB,GAAAA,UAAAA,CAAW5iB,MAAM,EAAE0C,CAAAA,GAAIC,CAAG,EAAA,EAAED,CAAG,CAAA;YACjD,IAAM+mB,SAAAA,GAAY7G,UAAU,CAAClgB,CAAE,CAAA,CAAA;YAC/B,IAAQ+hB,kBAAoBgF,SAApBhF,CAAAA,eAAAA,CAAAA;YACR,IAAK,IAAIvd,CAAI,GAAA,CAAA,EAAGC,CAAIsd,GAAAA,eAAAA,CAAgBzkB,MAAM,EAAEkH,CAAAA,GAAIC,CAAG,EAAA,EAAED,CAAG,CAAA;AACtDyf,gBAAAA,kBAAAA,CAAmB0D,MAAM,CAAC5F,eAAe,CAACvd,CAAE,CAAA,CAAA,CAAA;AAC9C,aAAA;AACAud,YAAAA,eAAAA,CAAgBzkB,MAAM,GAAG,CAAA,CAAA;YACzBoqB,OAAQhY,CAAAA,YAAY,CAACqX,SAAAA,CAAUrK,QAAQ,CAAA,CAAA;AACvCqK,YAAAA,SAAAA,CAAUrK,QAAQ,GAAG,IAAA,CAAA;AACrBqK,YAAAA,SAAAA,CAAUljB,OAAO,GAAG,IAAA,CAAA;AACtB,SAAA;AACAqc,QAAAA,UAAAA,CAAW5iB,MAAM,GAAG,CAAA,CAAA;AACtB,KAAA,CAAA;AApoBW8gB,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA;;YAmCPwJ,GAAAA,EAAAA,MAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrJ,KAAK,CAAA;AACnB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAS5f,KAAa,EAAA;AACpBA,gBAAAA,KAAAA,GAAQA,KAAS,IAAA,EAAA,CAAA;AACjB,gBAAA,IAAI,IAAI,CAAC4f,KAAK,KAAK5f,KAAO,EAAA;oBACxB,IAAI,CAAC4f,KAAK,GAAG5f,KAAAA,CAAAA;AACb,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKI8gB,GAAAA,EAAAA,MAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACZ,KAAK,CAAA;AACnB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAS9f,KAAW,EAAA;gBAClB,IAAMkpB,QAAAA,GAAW,IAAI,CAACpJ,KAAK,CAAA;AAC3B,gBAAA,IAAIoJ,aAAalpB,KAAO,EAAA;AACtBkpB,oBAAAA,QAAAA,IAAY,IAAI,CAACxK,sBAAsB,CAACwK,UAAU,CAAC,CAAA,CAAA,CAAA;AACnDlpB,oBAAAA,KAAAA,IAAS,IAAI,CAAC0e,sBAAsB,CAAC1e,KAAO,EAAA,CAAA,CAAA,CAAA;oBAC5C,IAAI,CAAC8f,KAAK,GAAG9f,KAAAA,CAAAA;AACb,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIgiB,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC7B,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAa/f,KAAa,EAAA;AACxB,gBAAA,IAAI,IAAI,CAAC+f,SAAS,KAAK/f,KAAO,EAAA;oBAC5B,IAAI,CAAC+f,SAAS,GAAG/f,KAAAA,CAAAA;AACjB,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIiiB,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC7B,UAAU,CAAA;AACxB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAchgB,KAAgB,EAAA;AAC5B,gBAAA,IAAI,IAAI,CAAC6hB,SAAS,KAAK7hB,KAAO,EAAA;oBAC5B,IAAI,CAACggB,UAAU,GAAGhgB,KAAAA,CAAAA;AAClB,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIupB,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACjJ,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBlgB,KAAa,EAAA;AAC3B,gBAAA,IAAI,IAAI,CAACkgB,YAAY,KAAKlgB,KAAO,EAAA;oBAC/B,IAAI,CAACkgB,YAAY,GAAGlgB,KAAAA,CAAAA;AACpB,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIilB,GAAAA,EAAAA,kBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC1E,iBAAiB,CAAA;AAC/B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAqBngB,KAAa,EAAA;AAChC,gBAAA,IAAI,IAAI,CAACmgB,iBAAiB,KAAKngB,KAAO,EAAA;oBACpC,IAAI,CAACmgB,iBAAiB,GAAGngB,KAAAA,CAAAA;AACzB,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIiL,GAAAA,EAAAA,qBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAClD,oBAAoB,CAAA;AAClC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAwB3H,KAA8B,EAAA;AACpD,gBAAA,IAAI,IAAI,CAAC2H,oBAAoB,KAAK3H,KAAO,EAAA;oBACvC,IAAI,CAAC2H,oBAAoB,GAAG3H,KAAAA,CAAAA;AAC5B,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIkL,GAAAA,EAAAA,mBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACjD,kBAAkB,CAAA;AAChC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAsB7H,KAA4B,EAAA;AAChD,gBAAA,IAAI,IAAI,CAAC6H,kBAAkB,KAAK7H,KAAO,EAAA;oBACrC,IAAI,CAAC6H,kBAAkB,GAAG7H,KAAAA,CAAAA;AAC1B,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKImlB,GAAAA,EAAAA,gBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACzE,eAAe,CAAA;AAC7B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAmBtgB,KAAc,EAAA;AAC/B,gBAAA,IAAI,IAAI,CAACsgB,eAAe,KAAKtgB,KAAO,EAAA;oBAClC,IAAI,CAACsgB,eAAe,GAAGtgB,KAAAA,CAAAA;AACvB,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIsoB,GAAAA,EAAAA,cAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC3H,aAAa,CAAA;AAC3B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAiBvgB,KAAmB,EAAA;AAClC,gBAAA,IAAI,IAAI,CAACugB,aAAa,KAAKvgB,KAAO,EAAA;oBAChC,IAAI,CAACugB,aAAa,GAAGvgB,KAAAA,CAAAA;AACrB,oBAAA,IAAI,CAACJ,iBAAiB,CAAA,EAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;;YAKIwpB,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACC,UAAU,CAAA;AACxB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAcrpB,KAAa,EAAA;gBACzB,IAAI,CAACqpB,UAAU,GAAGrpB,KAAAA,CAAAA;AACpB,aAAA;;;YAKawE,GAAAA,EAAAA,QAAAA;;;MAAb,SAAA,GAAA,GAAA;gBACE,IAAI,IAAI,CAACyc,gBAAgB,EAAI,EAAA;AAC3B,oBAAA,IAAI,IAAI,CAACxjB,mBAAmB,CAAC0O,mBAAAA,CAAoBC,WAAW,CAAG,EAAA;wBAC7D,IAAM/H,WAAAA,GAAc,IAAI,CAACwb,YAAY,CAAA;AACrCxb,wBAAAA,WAAAA,CAAYhE,GAAG,CAAC6J,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC1B7F,wBAAAA,WAAAA,CAAYjE,GAAG,CAAC8J,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC1B,wBAAA,IAAI,CAACiT,aAAa,CAAC,IAAI,CAACmM,OAAO,CAAA,CAAA;AAC/B,wBAAA,IAAI,CAAC1rB,kBAAkB,CAACuO,mBAAAA,CAAoBC,WAAW,CAAA,CAAA;AACzD,qBAAA;oBACA,OAAO,IAAI,CAACkd,OAAO,CAAA;AACrB,iBAAA;AACA,gBAAA,IAAI,CAAC7rB,mBAAmB,CAAuB,CAAA,CAAA,IAAA,IAAI,CAACujB,aAAa,EAAA,CAAA;AACjE,gBAAA,IAAI,CAACvjB,mBAAmB,CAAmC,CAAA,CAAA,IAAA,IAAI,CAACyjB,gBAAgB,EAAA,CAAA;AAChF,gBAAA,IAAI,CAACzjB,mBAAmB,CAA6B,EAAA,CAAA,IAAA,IAAI,CAAC0jB,eAAe,EAAA,CAAA;AACzE,gBAAA,IAAI,CAAC1jB,mBAAmB,CAAC0O,mBAAAA,CAAoBC,WAAW,CAAA,IAAK,IAAI,CAAC+Q,aAAa,CAAC,IAAI,CAACmM,OAAO,CAAA,CAAA;AAC5F,gBAAA,IAAI,CAAC1rB,kBAAkB,CAAA,EAAA,CAAA,CAAA;gBAEvB,OAAO,IAAI,CAAC0rB,OAAO,CAAA;AACrB,aAAA;;;AAhNW7J,IAAAA,OAAAA,IAAAA,CAAAA;EAAa7T,UAqoBzB,EAAA;AAroBY6T,IACIkC,CAAAA,oBAAAA,GAAuBtQ,cAAeC,CAAAA,SAAS,CAAC,2BAAA,CAAA,CAAA;AADpDmO,IAAAA,CAEIsD,eAAkB,GAAA;IAAC,IAAI3T,OAAAA,EAAAA;IAAW,IAAIA,OAAAA,EAAAA;IAAW,IAAIA,OAAAA,EAAAA;IAAW,IAAIA,OAAAA,EAAAA;AAAU,CAAA,CAAA;AAFlFqQ,IAAAA,CAGI8E,mBAAqC,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAooBxD,IAAMkD,YAAN,SAAMA,SAAAA,GAAAA;AACJrE,IAAAA,IAAAA,CAAAA,eAAAA,GAAkB,IAAI1c,KAAAA,EAAAA,CAAAA;;;AClqBxB;;IAGO,IAAe6iB,UAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,UAAAA,GAAAA;aAYVC,SAAoB,GAAA,CAAA,CAAA;aACpBC,UAAqB,GAAA,CAAA,CAAA;AAIrBC,QAAAA,IAAAA,CAAAA,WAAAA,GAAgCpW,iBAAiBqW,MAAM,CAAA;;AAjB7CJ,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;IAgHpBxW,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAA,kBAAA,CAAA;AAAA,QAAA,CAAA,kBAAA,GAAA,IAAI,CAACjW,YAAY,qBAAjB,kBAAmBmV,CAAAA,gBAAgB,CAAC,IAAI,CAAA,CAAA;QACxC,IAAI,CAAC2X,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;AAEC,MACD1X,OAAAA,SAYC,GAZDA,SAAAA,SAAUiB,CAAAA,KAAuB,EAAED,OAAgB,EAAA;QACjD,IAAI,CAACwW,WAAW,GAAGvW,KAAAA,CAAAA;AACnB,QAAA,IAAMnT,KAAQ,GAAA,IAAI,CAAC6pB,gBAAgB,CAAC1W,KAAAA,CAAAA,CAAAA;AACpC,QAAA,IAAID,OAAS,EAAA;YACX,IAAI,CAACuW,UAAU,GAAG,CAAA,CAAA;AAClB,YAAA,IAAI,CAACK,aAAa,GAAG,IAAI,CAACC,WAAW,GAAG/pB,KAAAA,CAAAA;SACnC,MAAA;AACL,YAAA,IAAI,CAACypB,UAAU,GAAG,IAAI,CAACD,SAAS,CAAA;AAChC,YAAA,IAAI,CAACM,aAAa,GAAG,IAAI,CAACE,mBAAmB,EAAA,CAAA;YAC7C,IAAI,CAACD,WAAW,GAAG/pB,KAAAA,CAAAA;AACrB,SAAA;AACA,QAAA,IAAI,CAACiqB,YAAY,EAAA,CAAA;AACnB,KAAA,CAAA;AAEA;;AAEC,MACDzX,MAAAA,CAAAA,SAKC,GALDA,SAAAA,UAAU0X,KAAa,EAAA;AACrB,QAAA,IAAI,IAAI,CAACT,UAAU,GAAG,CAAG,EAAA;YACvB,IAAI,CAACA,UAAU,IAAIS,KAAAA,CAAAA;AACnB,YAAA,IAAI,CAACD,YAAY,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IAMA,MAAUE,CAAAA,kBAST,GATD,SAAUA,kBAAAA,CAAmBhX,KAAuB,EAAEiX,QAAW,EAAEC,QAAW,EAAA;;AAEpE,QAAA,WAAA,CAARD,QAAoBE,EAAAA,aAAAA,CAAAA,IAAiBF,QAASG,CAAAA,cAAc,CAAC,CAAC,CAAA,CAAA,CAAA;;AAEtD,QAAA,WAAA,CAARF,QAAoBC,EAAAA,aAAAA,CAAAA,IAAiBD,QAASE,CAAAA,cAAc,CAAC,CAAA,CAAA,CAAA;AAC7D,QAAA,IAAI,IAAI,CAACb,WAAW,KAAKvW,KAAO,EAAA;YAC9B,IAAI,CAAC4W,WAAW,GAAGM,QAAAA,CAAAA;AACnB,YAAA,IAAI,CAACJ,YAAY,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IAEA,MAAUA,CAAAA,YAIT,GAJD,SAAUA,YAAAA,GAAAA;AAGR,QAAA,IAAA,aAAA,CAAA;AAFA,QAAA,IAAMO,MAAS,GAAA,IAAI,CAAChB,SAAS,GAAG,CAAA,GAAI,IAAI,CAACC,UAAU,GAAG,IAAI,CAACD,SAAS,GAAG,CAAA,CAAA;QACvE,IAAI,CAACiB,mBAAmB,CAAC,IAAI,CAACX,aAAa,EAAE,IAAI,CAACC,WAAW,EAAES,MAAAA,CAAAA,CAAAA;AAC/D,QAAA,CAAA,CAAA,aAAA,GAAA,IAAI,CAACZ,OAAO,qBAAZ,aAAcpoB,CAAAA,OAAO,KAAI,IAAI,CAACkpB,WAAW,CAAC,IAAI,CAACC,aAAa,CAAA,CAAA;AAC9D,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQd,gBAWP,GAXD,SAAQA,gBAAAA,CAAiB1W,KAAuB,EAAA;QAC9C,OAAQA,KAAAA;AACN,YAAA,KAAKG,iBAAiBqW,MAAM;gBAC1B,OAAO,IAAI,CAACza,MAAM,CAAA;AACpB,YAAA,KAAKoE,iBAAiBsX,OAAO;gBAC3B,OAAO,IAAI,CAACC,OAAO,CAAA;AACrB,YAAA,KAAKvX,iBAAiBwX,KAAK;gBACzB,OAAO,IAAI,CAACC,KAAK,CAAA;AACnB,YAAA,KAAKzX,iBAAiB0X,OAAO;gBAC3B,OAAO,IAAI,CAACC,QAAQ,CAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAhLoB1B,IAAAA,aAAAA,CAAAA,UAAAA,EAAAA;;YAsBhBra,GAAAA,EAAAA,QAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACgc,OAAO,CAAA;AACrB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAWlrB,KAAQ,EAAA;gBACjB,IAAMmrB,SAAAA,GAAY,IAAI,CAACD,OAAO,CAAA;AAC9B,gBAAA,IAAIC,cAAcnrB,KAAO,EAAA;oBACvB,IAAI,CAACkrB,OAAO,GAAGlrB,KAAAA,CAAAA;AACf,oBAAA,IAAI,CAACmqB,kBAAkB,CAAC7W,gBAAiBqW,CAAAA,MAAM,EAAEwB,SAAWnrB,EAAAA,KAAAA,CAAAA,CAAAA;AAC9D,iBAAA;AACF,aAAA;;;YAKI6qB,GAAAA,EAAAA,SAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACO,QAAQ,CAAA;AACtB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAYprB,KAAQ,EAAA;gBAClB,IAAMqrB,UAAAA,GAAa,IAAI,CAACD,QAAQ,CAAA;AAChC,gBAAA,IAAIC,eAAerrB,KAAO,EAAA;oBACxB,IAAI,CAACorB,QAAQ,GAAGprB,KAAAA,CAAAA;AAChB,oBAAA,IAAI,CAACmqB,kBAAkB,CAAC7W,gBAAiBsX,CAAAA,OAAO,EAAES,UAAYrrB,EAAAA,KAAAA,CAAAA,CAAAA;AAChE,iBAAA;AACF,aAAA;;;YAKI+qB,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACO,MAAM,CAAA;AACpB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAUtrB,KAAQ,EAAA;gBAChB,IAAMurB,QAAAA,GAAW,IAAI,CAACD,MAAM,CAAA;AAC5B,gBAAA,IAAIC,aAAavrB,KAAO,EAAA;oBACtB,IAAI,CAACsrB,MAAM,GAAGtrB,KAAAA,CAAAA;AACd,oBAAA,IAAI,CAACmqB,kBAAkB,CAAC7W,gBAAiBwX,CAAAA,KAAK,EAAES,QAAUvrB,EAAAA,KAAAA,CAAAA,CAAAA;AAC5D,iBAAA;AACF,aAAA;;;YAKIirB,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACO,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAaxrB,KAAQ,EAAA;gBACnB,IAAMyrB,WAAAA,GAAc,IAAI,CAACD,SAAS,CAAA;AAClC,gBAAA,IAAIC,gBAAgBzrB,KAAO,EAAA;oBACzB,IAAI,CAACwrB,SAAS,GAAGxrB,KAAAA,CAAAA;AACjB,oBAAA,IAAI,CAACmqB,kBAAkB,CAAC7W,gBAAiB0X,CAAAA,OAAO,EAAES,WAAazrB,EAAAA,KAAAA,CAAAA,CAAAA;AACjE,iBAAA;AACF,aAAA;;;YAKIuI,GAAAA,EAAAA,QAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACqhB,OAAO,CAAA;AACrB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAW5pB,KAAQ,EAAA;AACjB,gBAAA,IAAI,IAAI,CAAC4pB,OAAO,KAAK5pB,KAAO,EAAA;oBAC1B,IAAI,CAAC4pB,OAAO,GAAG5pB,KAAAA,CAAAA;oBACfA,CAAAA,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAOwB,CAAAA,OAAO,KAAI,IAAI,CAACkpB,WAAW,CAAC,IAAI,CAACC,aAAa,CAAA,CAAA;AACvD,iBAAA;AACF,aAAA;;;YAKIe,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAClC,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAaxpB,KAAa,EAAA;gBACxB,IAAIA,KAAAA,GAAQ,GAAGA,KAAQ,GAAA,CAAA,CAAA;gBACvB,IAAM2rB,WAAAA,GAAc,IAAI,CAACnC,SAAS,CAAA;AAClC,gBAAA,IAAImC,gBAAgB3rB,KAAO,EAAA;oBACzB,IAAI,CAACwpB,SAAS,GAAGxpB,KAAAA,CAAAA;AACjB,oBAAA,IAAI,IAAI,CAACypB,UAAU,GAAG,CAAG,EAAA;wBACvB,IAAI,CAACA,UAAU,GAAGzpB,KAAS,IAAA,IAAI,IAAI,CAACypB,UAAU,GAAGkC,WAAU,CAAA,CAAA;AAC3D,wBAAA,IAAI,CAAC1B,YAAY,EAAA,CAAA;AACnB,qBAAA;AACF,iBAAA;AACF,aAAA;;;AA9GoBV,IAAAA,OAAAA,UAAAA,CAAAA;AAiLrB,CAAA;;ACnLD;;IAGO,IAAMqC,eAAN,iBAAA,SAAA,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;AAGT,QAAA,KAAA,GAAA,UAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,EAAA,KAAA,CAFM5f,SAAgB,IAAIC,KAAAA,EAAAA,CAAAA;AAG1B,QAAA,KAAA,CAAKif,OAAO,GAAG,IAAIjf,KAAM,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAClC,QAAA,KAAA,CAAKqf,MAAM,GAAG,IAAIrf,KAAM,CAAA,kBAAA,EAAoB,oBAAoB,kBAAoB,EAAA,CAAA,CAAA,CAAA;AACpF,QAAA,KAAA,CAAKmf,QAAQ,GAAG,IAAInf,KAAM,CAAA,kBAAA,EAAoB,oBAAoB,kBAAoB,EAAA,CAAA,CAAA,CAAA;AACtF,QAAA,KAAA,CAAKuf,SAAS,GAAG,IAAIvf,KAAM,CAAA,kBAAA,EAAoB,oBAAoB,kBAAoB,EAAA,CAAA,CAAA,CAAA;AACvF,QAAA,KAAA,CAAKud,SAAS,GAAG,GAAA,CAAA;QACjB,KAAKmB,CAAAA,aAAa,GAAG,IAAI1e,KAAAA,EAAAA,CAAAA;AAEzB,QAAA,KAAA,CAAK4f,qBAAqB,GAAG,KAAKA,CAAAA,qBAAqB,CAACvuB,IAAI,CAAA,KAAA,CAAA,CAAA;AAC5D,QAAA,KAAA,CAAKwuB,oBAAoB,GAAG,KAAKA,CAAAA,oBAAoB,CAACxuB,IAAI,CAAA,KAAA,CAAA,CAAA;AAC1D,QAAA,KAAA,CAAKyuB,sBAAsB,GAAG,KAAKA,CAAAA,sBAAsB,CAACzuB,IAAI,CAAA,KAAA,CAAA,CAAA;AAC9D,QAAA,KAAA,CAAK0uB,uBAAuB,GAAG,KAAKA,CAAAA,uBAAuB,CAAC1uB,IAAI,CAAA,KAAA,CAAA,CAAA;;AAGhE,QAAA,KAAA,CAAK4tB,OAAO,CAACljB,eAAe,GAAG,MAAK6jB,qBAAqB,CAAA;;AAEzD,QAAA,KAAA,CAAKP,MAAM,CAACtjB,eAAe,GAAG,MAAK8jB,oBAAoB,CAAA;;AAEvD,QAAA,KAAA,CAAKV,QAAQ,CAACpjB,eAAe,GAAG,MAAK+jB,sBAAsB,CAAA;;AAE3D,QAAA,KAAA,CAAKP,SAAS,CAACxjB,eAAe,GAAG,MAAKgkB,uBAAuB,CAAA;;;AAvBpDJ,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IA0BX,MAAQC,CAAAA,qBAKP,GALD,SAAQA,qBAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAACnC,WAAW,KAAKpW,gBAAAA,CAAiBqW,MAAM,EAAE;AAChD,YAAA,IAAI,CAACI,WAAW,GAAG,IAAI,CAACmB,OAAO,CAAA;AAC/B,YAAA,IAAI,CAACjB,YAAY,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ6B,CAAAA,oBAKP,GALD,SAAQA,oBAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAACpC,WAAW,KAAKpW,gBAAAA,CAAiBwX,KAAK,EAAE;AAC/C,YAAA,IAAI,CAACf,WAAW,GAAG,IAAI,CAACuB,MAAM,CAAA;AAC9B,YAAA,IAAI,CAACrB,YAAY,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ8B,CAAAA,sBAKP,GALD,SAAQA,sBAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAACrC,WAAW,KAAKpW,gBAAAA,CAAiBsX,OAAO,EAAE;AACjD,YAAA,IAAI,CAACb,WAAW,GAAG,IAAI,CAACqB,QAAQ,CAAA;AAChC,YAAA,IAAI,CAACnB,YAAY,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ+B,CAAAA,uBAKP,GALD,SAAQA,uBAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAACtC,WAAW,KAAKpW,gBAAAA,CAAiB0X,OAAO,EAAE;AACjD,YAAA,IAAI,CAACjB,WAAW,GAAG,IAAI,CAACyB,SAAS,CAAA;AACjC,YAAA,IAAI,CAACvB,YAAY,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;IAEA,MAAUD,CAAAA,mBAIT,GAJD,SAAUA,mBAAAA,GAAAA;AAEO,QAAA,IAAA,aAAA,CAAA;QADf,IAAMhZ,KAAAA,GAAQ,IAAI,CAAChF,MAAM,CAAA;AACzBgF,QAAAA,KAAAA,CAAMtI,QAAQ,CAAC,CAAA,CAAA,aAAA,GAAA,IAAI,CAACkhB,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAZ,aAAc5Y,CAAAA,KAAK,KAAI,IAAI,CAACka,OAAO,CAAA,CAAA;QAClD,OAAOla,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAmByZ,CAAAA,mBAMlB,GAND,SAAmBA,mBAAAA,CAAoBwB,QAAe,EAAEC,SAAgB,EAAE1B,MAAc,EAAA;AACtF,QAAA,IAAIA,UAAU,CAAG,EAAA;AACf,YAAA,IAAI,CAACG,aAAa,CAACjiB,QAAQ,CAACwjB,SAAAA,CAAAA,CAAAA;SACvB,MAAA;AACLjgB,YAAAA,KAAAA,CAAMkgB,IAAI,CAACF,QAAAA,EAAUC,WAAW1B,MAAQ,EAAA,IAAI,CAACG,aAAa,CAAA,CAAA;AAC5D,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBD,WAElB,GAFD,SAAmBA,WAAAA,CAAY1qB,KAAY,EAAA;AACzC,QAAA,IAAI,CAAC4pB,OAAO,CAAC5Y,KAAK,GAAGhR,KAAAA,CAAAA;AACvB,KAAA,CAAA;AAtEW4rB,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBrC,UAuEpC;;AC5ED;;IAGO,IAAM6C,eAAN,iBAAA,SAAA,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;AAET,QAAA,KAAA,GAAA,UAAA,CAAA,IAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA;AACA,QAAA,KAAA,CAAKlB,OAAO,GAAG,CAAA,CAAA;AACf,QAAA,KAAA,CAAKI,MAAM,GAAG,CAAA,CAAA;AACd,QAAA,KAAA,CAAKF,QAAQ,GAAG,GAAA,CAAA;AAChB,QAAA,KAAA,CAAKI,SAAS,GAAG,CAAA,CAAA;AACjB,QAAA,KAAA,CAAKhC,SAAS,GAAG,GAAA,CAAA;;;AAPR4C,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IAUX,MAAUpC,CAAAA,mBAET,GAFD,SAAUA,mBAAAA,GAAAA;AACD,QAAA,IAAA,aAAA,CAAA;AAAP,QAAA,OAAO,EAAA,aAAA,GAAA,IAAI,CAACJ,OAAO,qBAAZ,aAActtB,CAAAA,MAAM,CAACiI,SAAS,CAACkf,KAAK,CAAChf,CAAC,KAAI,IAAI,CAACymB,OAAO,CAAA;AAC/D,KAAA,CAAA;IAEA,MAAmBT,CAAAA,mBAElB,GAFD,SAAmBA,mBAAAA,CAAoBwB,QAAgB,EAAEC,SAAiB,EAAE1B,MAAc,EAAA;QACxF,IAAI,CAACG,aAAa,GAAGH,MAAU,IAAA,CAAA,GAAI0B,SAAY,GAACA,CAAAA,SAAAA,GAAYD,QAAO,IAAKzB,MAASyB,GAAAA,QAAAA,CAAAA;AACnF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBvB,WAElB,GAFD,SAAmBA,WAAAA,CAAY1qB,KAAa,EAAA;QAC1C,IAAI,CAAC4pB,OAAO,CAACttB,MAAM,CAACiI,SAAS,CAAC8nB,QAAQ,CAACrsB,KAAAA,EAAOA,KAAOA,EAAAA,KAAAA,CAAAA,CAAAA;AACvD,KAAA,CAAA;AApBWosB,IAAAA,OAAAA,eAAAA,CAAAA;EAAwB7C,UAqBpC;;ACvBD;;IAGO,IAAM+C,gBAAN,iBAAA,SAAA,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,gBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AACX;;MAGA,MAAA,CAASvZ,OAwBR,GAxBD,SAASA,OAAAA,GAAAA;AACP,QAAA,UAAA,CAAA,SAAA,CAAMA,OAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACL,IAAI,IAAI,CAACmY,OAAO,EAAE;;AAEhB,YAAA,IAAI,CAACA,OAAO,CAACX,cAAc,CAAC,CAAC,CAAA,CAAA,CAAA;YAC7B,IAAI,CAACW,OAAO,GAAG,IAAA,CAAA;AACjB,SAAA;QACA,IAAI,IAAI,CAACI,MAAM,EAAE;;AAEf,YAAA,IAAI,CAACA,MAAM,CAACf,cAAc,CAAC,CAAC,CAAA,CAAA,CAAA;YAC5B,IAAI,CAACe,MAAM,GAAG,IAAA,CAAA;AAChB,SAAA;QACA,IAAI,IAAI,CAACF,QAAQ,EAAE;;AAEjB,YAAA,IAAI,CAACA,QAAQ,CAACb,cAAc,CAAC,CAAC,CAAA,CAAA,CAAA;YAC9B,IAAI,CAACa,QAAQ,GAAG,IAAA,CAAA;AAClB,SAAA;QACA,IAAI,IAAI,CAACI,SAAS,EAAE;;AAElB,YAAA,IAAI,CAACA,SAAS,CAACjB,cAAc,CAAC,CAAC,CAAA,CAAA,CAAA;YAC/B,IAAI,CAACiB,SAAS,GAAG,IAAA,CAAA;AACnB,SAAA;QACA,IAAI,CAAC1B,aAAa,GAAG,IAAI,CAACa,aAAa,GAAG,IAAI,CAACZ,WAAW,GAAG,IAAA,CAAA;QAC7D,IAAI,CAACH,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;IAEA,MAAUI,CAAAA,mBAET,GAFD,SAAUA,mBAAAA,GAAAA;AACD,QAAA,IAAA,aAAA,CAAA;AAAP,QAAA,OAAA,CAAO,gBAAA,IAAI,CAACJ,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAZ,cAAc1M,MAAM,CAAA;AAC7B,KAAA,CAAA;IAEA,MAAmBuN,CAAAA,mBAElB,GAFD,SAAmBA,mBAAAA,CAAoBwB,QAAgB,EAAEC,SAAiB,EAAE1B,MAAc,EAAA;AACxF,QAAA,IAAI,CAACG,aAAa,GAAGH,MAAAA,IAAU,IAAI0B,SAAYD,GAAAA,QAAAA,CAAAA;AACjD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBvB,WAElB,GAFD,SAAmBA,WAAAA,CAAY1qB,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC4pB,OAAO,CAAC1M,MAAM,GAAGld,KAAAA,CAAAA;AACxB,KAAA,CAAA;AAxCWssB,IAAAA,OAAAA,gBAAAA,CAAAA;EAAyB/C,UAyCrC;;;;;;;;;;;;;;;;;AC7CD;;AAEC,IACM,IAAA,WAAMgD,GAAN,SAAMA,WAAAA,GAAAA;SACXjwB,MAAiB,GAAA,IAAA,CAAA;SACjBuS,QAAmB,GAAA,CAAA,CAAA;AACnBsB,IAAAA,IAAAA,CAAAA,KAAAA,GAAiB,IAAIf,OAAAA,EAAAA,CAAAA;AACrBF,IAAAA,IAAAA,CAAAA,MAAAA,GAAkB,IAAIE,OAAAA,EAAAA,CAAAA;SACtB7N,SAAwB,GAAA,IAAA,CAAA;AACzB,CAAA;;ACMM,IAAA,qBAAA,iBAAA,SAAA,oBAAA,EAAA;AAAMirB,IAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,oBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,qBAAAA,GAAAA;;AAOHC,QAAAA,KAAAA,GAAAA,oBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,IAAAA,IAAAA,EAAAA,KAAAA,CAAAA,YAAAA,GAAyB,EAAE,EAC3BC,KAAAA,CAAAA,YAAAA,GAAyB,EAAE,EAAA,KAAA,CAC3BC,eAAyB,EAAE,CAAA;;;AATxBH,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;IAWXI,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACE,IAAI,CAACC,UAAU,GAAG,IAAIN,WAAAA,EAAAA,CAAAA;AACxB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASO,cAkER,GAlED,SAASA,cAAeC,CAAAA,MAAwB,EAAEC,OAAgB,EAAA;QAChE,IAAkBre,MAAQse,mBAAlBC,CAAAA,QAAAA,CAAAA;QACR,IAAMC,SAAAA,GAAY,IAAI,CAACN,UAAU,CAAA;QACjC,IAAQzjB,WAAa4jB,OAAb5jB,CAAAA,QAAAA,CAAAA;AACR,QAAA,IAAQ3E,CAAS2E,GAAAA,QAAAA,CAAT3E,CAAGC,EAAAA,CAAAA,GAAM0E,QAAN1E,CAAAA,CAAAA,CAAAA;QACX,IAAK,IAAIrD,IAAI0rB,MAAOpuB,CAAAA,MAAM,GAAG,CAAG0C,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;YAC3C,IAAM0M,KAAAA,GAAQgf,MAAM,CAAC1rB,CAAE,CAAA,CAAA;AACvB,YAAA,IAAI,CAAC0M,KAAMkL,CAAAA,QAAQ,IAAIlL,KAAAA,CAAMyP,SAAS,EAAE,SAAA;;YAExC,IAAMjD,iBAAAA,GAAoBxM,MAAMC,kBAAkB,CAAA;;YAElD,IAAIof,cAAAA,GAA4C7S,kBAAkB8S,gBAAgB,CAAA;;AAElF1e,YAAAA,GAAAA,CAAI2e,MAAM,CAACpjB,GAAG,CAACd,QAAAA,CAAS3E,CAAC,EAAEsJ,KAAAA,CAAMZ,MAAM,CAACtL,MAAM,CAAC+H,MAAM,GAAGR,QAAAA,CAAS1E,CAAC,EAAE,CAAA,CAAA,CAAA;AACpEiK,YAAAA,GAAAA,CAAI4e,SAAS,CAACrjB,GAAG,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,CAAA;YACzB,IAAK,IAAIrE,IAAIunB,cAAezuB,CAAAA,MAAM,GAAG,CAAGkH,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACnD,gBAAA,IAAIunB,eAAetP,GAAG,CAACjY,GAAG6I,QAAQ,CAACC,KAAKwe,SAAY,CAAA,EAAA;AAClD,oBAAA,IAAI,CAACK,cAAc,CAAC,SAAcL,CAAW5rB,SAAS,EAAEyrB,OAAAA,CAAAA,CAAAA;AACxD,oBAAA,OAAA;AACF,iBAAA;AACF,aAAA;YAEA,IAAMS,OAAAA,GAAUlT,kBAAkBmT,cAAc,CAAA;YAChD,IAAK,IAAI7nB,KAAI4nB,OAAQ9uB,CAAAA,MAAM,GAAG,CAAGkH,EAAAA,EAAAA,IAAK,GAAGA,EAAK,EAAA,CAAA;gBAC5C,IAAM6H,MAAAA,GAAS+f,OAAQ3P,CAAAA,GAAG,CAACjY,EAAAA,CAAAA,CAAAA;gBAC3B,IAAI6H,MAAAA,CAAOigB,YAAY,EAAE,SAAA;gBACzB,IAAQC,gBAAkBlgB,MAAlBkgB,CAAAA,aAAAA,CAAAA;gBACR,IACEnpB,CAAAA,GAAImpB,cAAcnpB,CAAC,IACnBC,IAAIkpB,aAAclpB,CAAAA,CAAC,IACnBD,CAAImpB,GAAAA,aAAAA,CAAcnpB,CAAC,GAAGmpB,aAAAA,CAAcnkB,KAAK,IACzC/E,CAAAA,GAAIkpB,cAAclpB,CAAC,GAAGkpB,aAAchkB,CAAAA,MAAM,EAC1C;AACA,oBAAA,SAAA;AACF,iBAAA;AACA8D,gBAAAA,MAAAA,CAAOmgB,gBAAgB,CAACb,OAAQ5jB,CAAAA,QAAQ,EAAEuF,GAAAA,CAAAA,CAAAA;;gBAG1C,IAAMoH,cAAAA,GAAiBrI,OAAOqI,cAAc,CAAA;AAC5C,gBAAA,IAAuErI,wBAAAA,GAAAA,MAAAA,CAAOpR,MAAM,CAACiI,SAAS,EAAtF+K,cAAegH,GAAgD5I,wBAA/D4B,CAAAA,aAAAA,EAA+BH,aAAcoH,GAAkB7I,wBAAhCyB,CAAAA,YAAAA,CAAAA;;AAEvCie,gBAAAA,cAAAA,GAAiB7S,kBAAkBuT,SAAS,CAAA;gBAC5C,IAAK,IAAI/pB,IAAI,CAAGzC,EAAAA,CAAAA,GAAI8rB,eAAezuB,MAAM,EAAEoF,CAAIzC,GAAAA,CAAAA,EAAGyC,CAAK,EAAA,CAAA;AACrDqpB,oBAAAA,cAAAA,CAAetP,GAAG,CAAC/Z,CAAAA,CAAAA,CAAG+R,mBAAmB,CAACC,gBAAgBO,cAAgBC,EAAAA,aAAAA,CAAAA,CAAAA;AAC5E,iBAAA;gBACA6W,cAAezqB,CAAAA,IAAI,CAAC,SAAC6D,CAAGC,EAAAA,CAAAA,EAAAA;2BAAMD,CAAE4U,CAAAA,SAAS,GAAG3U,CAAE2U,CAAAA,SAAS,IAAI5U,CAAEkN,CAAAA,aAAa,GAAGjN,CAAAA,CAAEiN,aAAa,CAAA;;gBAC5F,IAAK,IAAI3P,KAAI,CAAGzC,EAAAA,EAAAA,GAAI8rB,eAAezuB,MAAM,EAAEoF,EAAIzC,GAAAA,EAAAA,EAAGyC,EAAK,EAAA,CAAA;AACrDqpB,oBAAAA,cAAAA,CAAetP,GAAG,CAAC/Z,EAAGwP,CAAAA,CAAAA,YAAY,GAAGxP,EAAAA,CAAAA;AACvC,iBAAA;gBACA,IAAMgqB,YAAAA,GAAergB,OAAOqgB,YAAY,CAAA;;gBAExC,IAAK,IAAIhqB,KAAI,CAAGzC,EAAAA,EAAAA,GAAI8rB,eAAezuB,MAAM,EAAEoF,EAAIzC,GAAAA,EAAAA,EAAGyC,EAAK,EAAA,CAAA;oBACrD,IAAMlC,MAAAA,GAASurB,cAAetP,CAAAA,GAAG,CAAC/Z,EAAAA,CAAAA,CAAAA;AAClC,oBAAA,IAAI,CAAClC,MAAAA,CAAOqT,iBAAiB,CAACxH,MAAS,CAAA,EAAA,SAAA;AACvC,oBAAA,IAAI7L,MAAO6M,CAAAA,QAAQ,CAACC,GAAAA,EAAKwe,WAAWY,YAAe,CAAA,EAAA;AACjD,wBAAA,IAAI,CAACP,cAAc,CAAC,SAAcL,CAAW5rB,SAAS,EAAEyrB,OAAAA,CAAAA,CAAAA;AACxD,wBAAA,OAAA;AACF,qBAAA;AACF,iBAAA;AACA,gBAAA,IAAItf,MAAOsgB,CAAAA,UAAU,GAAGC,gBAAAA,CAAiBhiB,KAAK,EAAE;oBAC9C,IAAI,CAACuhB,cAAc,CAAC,IAAA,CAAA,CAAA;AACpB,oBAAA,OAAA;AACF,iBAAA;AACF,aAAA;YACA,IAAI,CAACA,cAAc,CAAC,IAAA,CAAA,CAAA;AACtB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASU,WAKR,GALD,SAASA,WAAAA,CAAYlB,OAAgB,EAAA;QACnC,IAAMmB,WAAAA,GAAc,IAAI,CAACxB,YAAY,CAAA;QACrC,IAAIwB,WAAAA,CAAYxvB,MAAM,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAI,CAACyvB,OAAO,CAACD,aAAanB,OAAS,EAAA,IAAI,CAACqB,SAAS,CAAA,CAAA;AACnD,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASC,WAYR,GAZD,SAASA,WAAAA,CAAYtB,OAAgB,EAAA;QACnC,IAAMuB,WAAAA,GAAc,IAAI,CAAC9B,YAAY,CAAA;QACrC,IAAM+B,WAAAA,GAAc,IAAI,CAAC9B,YAAY,CAAA;QACrC,IAAMyB,WAAAA,GAAc,IAAI,CAACxB,YAAY,CAAA;QACrC,IAAMhuB,MAAAA,GAAUwvB,YAAYxvB,MAAM,GAAG6vB,YAAY7vB,MAAM,GAAG4vB,YAAY5vB,MAAM,CAAA;AAC5E,QAAA,IAAIA,SAAS,CAAG,EAAA;AACd,YAAA,IAAK,IAAI0C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI1C,QAAQ0C,CAAK,EAAA,CAAA;gBAC/BmtB,WAAW,CAACntB,EAAE,GAAG8sB,WAAW,CAAC9sB,CAAE,CAAA,GAAGktB,WAAW,CAACltB,CAAE,CAAA,CAAA;AAClD,aAAA;AACA,YAAA,IAAI,CAAC+sB,OAAO,CAACI,aAAaxB,OAAS,EAAA,IAAI,CAACyB,SAAS,CAAA,CAAA;AACjD,YAAA,IAAI,CAACL,OAAO,CAACD,aAAanB,OAAS,EAAA,IAAI,CAAC0B,cAAc,CAAA,CAAA;AACxD,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASC,SA4BR,GA5BD,SAASA,SAAAA,CAAU3B,OAAgB,EAAA;QACjC,IAAMuB,WAAAA,GAAc,IAAI,CAAC9B,YAAY,CAAA;QACrC,IAAM+B,WAAAA,GAAc,IAAI,CAAC9B,YAAY,CAAA;QACrC,IAAI6B,WAAAA,CAAY5vB,MAAM,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAI,CAACyvB,OAAO,CAACG,aAAavB,OAAS,EAAA,IAAI,CAAC4B,OAAO,CAAA,CAAA;YAC/C,IAAIJ,WAAAA,CAAY7vB,MAAM,GAAG,CAAG,EAAA;gBAC1B,IAAMkwB,MAAAA,GAASrC,qBA9GVA,CA8GgCsC,WAAW,CAAA;AAChD,gBAAA,IAAI,IAAI,CAACC,iBAAiB,CAACR,WAAAA,EAAaC,aAAaK,MAAS,CAAA,EAAA;AAC5D,oBAAA,IAAMG,SAAY,GAAA,IAAI,CAACC,gBAAgB,CAACjC,OAAAA,CAAAA,CAAAA;oBACxC,IAAK,IAAI3rB,IAAI,CAAGC,EAAAA,CAAAA,GAAIutB,OAAOlwB,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC7C,wBAAA,IAAI,CAAC6tB,UAAU,CAACL,MAAM,CAACxtB,EAAE,EAAE2tB,SAAAA,CAAAA,CAAAA;AAC7B,qBAAA;AACAH,oBAAAA,MAAAA,CAAOlwB,MAAM,GAAG,CAAA,CAAA;AAClB,iBAAA;AACF,aAAA;AACF,SAAA;AAEA6vB,QAAAA,WAAAA,CAAY7vB,MAAM,GAAG,CAAA,CAAA;QAErB,IAAMwvB,WAAAA,GAAc,IAAI,CAACxB,YAAY,CAAA;QACrC,IAAIwB,WAAAA,CAAYxvB,MAAM,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAI,CAACyvB,OAAO,CAACD,aAAanB,OAAS,EAAA,IAAI,CAACmC,YAAY,CAAA,CAAA;AACpDhB,YAAAA,WAAAA,CAAYxvB,MAAM,GAAG,CAAA,CAAA;AACvB,SAAA;QAEA,IAAI4vB,WAAAA,CAAY5vB,MAAM,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAI,CAACyvB,OAAO,CAACG,aAAavB,OAAS,EAAA,IAAI,CAACoC,SAAS,CAAA,CAAA;AACnD,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASC,YAcR,GAdD,SAASA,YAAAA,CAAarC,OAAgB,EAAA;QACpC,IAAMuB,WAAAA,GAAc,IAAI,CAAC9B,YAAY,CAAA;QACrC,IAAI8B,WAAAA,CAAY5vB,MAAM,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAI,CAACyvB,OAAO,CAACG,aAAavB,OAAS,EAAA,IAAI,CAACsC,SAAS,CAAA,CAAA;AACjDf,YAAAA,WAAAA,CAAY5vB,MAAM,GAAG,CAAA,CAAA;AACvB,SAAA;QAEA,IAAMwvB,WAAAA,GAAc,IAAI,CAACxB,YAAY,CAAA;QACrC,IAAIwB,WAAAA,CAAYxvB,MAAM,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAI,CAACyvB,OAAO,CAACD,aAAanB,OAAS,EAAA,IAAI,CAACmC,YAAY,CAAA,CAAA;AACpDhB,YAAAA,WAAAA,CAAYxvB,MAAM,GAAG,CAAA,CAAA;AACvB,SAAA;AAEA,QAAA,IAAI,CAAC+tB,YAAY,CAAC/tB,MAAM,GAAG,CAAA,CAAA;AAC7B,KAAA,CAAA;IAEA,MAAS4wB,CAAAA,OAER,GAFD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAI,CAAC9C,YAAY,CAAC9tB,MAAM,GAAG,IAAI,CAAC+tB,YAAY,CAAC/tB,MAAM,GAAG,IAAI,CAACguB,YAAY,CAAChuB,MAAM,GAAG,CAAA,CAAA;AACnF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6uB,cAqBP,GArBD,SAAQA,cAAe9uB,CAAAA,OAAmB,EAAEsuB,OAAuB,EAAA;AAAvBA,QAAAA,IAAAA,oBAAAA,OAAmB,GAAA,IAAA,CAAA;QAC7D,IAAMuB,WAAAA,GAAc,IAAI,CAAC9B,YAAY,CAAA;QACrC,IAAM+C,OAAAA,GAAU,IAAI,CAACC,aAAa,CAAC/wB,OAAS8tB,EA5JnCA,sBA4JyDkD,KAAK,CAAA,CAAA;QACvE,IAAMztB,GAAAA,GAAMuqB,qBA7JHA,CA6JyBsC,WAAW,CAAA;QAC7C,IAAMa,GAAAA,GAAMnD,qBA9JHA,CA8JyBoD,WAAW,CAAA;AAC7C,QAAA,IAAI,IAAI,CAACC,eAAe,CAACtB,WAAaiB,EAAAA,OAAAA,EAASvtB,KAAK0tB,GAAM,CAAA,EAAA;AACxD,YAAA,IAAMX,SAAY,GAAA,IAAI,CAACC,gBAAgB,CAACjC,OAAAA,CAAAA,CAAAA;YACxC,IAAK,IAAI3rB,IAAI,CAAGC,EAAAA,CAAAA,GAAIW,IAAItD,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC1C,gBAAA,IAAI,CAACyuB,UAAU,CAAC7tB,GAAG,CAACZ,EAAE,EAAE2tB,SAAAA,CAAAA,CAAAA;AAC1B,aAAA;YACA,IAAK,IAAI3tB,KAAI,CAAGC,EAAAA,EAAAA,GAAIquB,IAAIhxB,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;AAC1C,gBAAA,IAAI,CAACiuB,SAAS,CAACK,GAAG,CAACtuB,GAAE,EAAE2tB,SAAAA,CAAAA,CAAAA;AACzB,aAAA;AAEA,YAAA,IAAMrwB,MAAU4vB,GAAAA,WAAAA,CAAY5vB,MAAM,GAAG6wB,QAAQ7wB,MAAM,CAAA;AACnD,YAAA,IAAK,IAAI0C,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI1C,QAAQ0C,EAAK,EAAA,CAAA;AAC/BktB,gBAAAA,WAAW,CAACltB,EAAAA,CAAE,GAAGmuB,OAAO,CAACnuB,EAAE,CAAA,CAAA;AAC7B,aAAA;AACAY,YAAAA,GAAAA,CAAItD,MAAM,GAAGgxB,GAAIhxB,CAAAA,MAAM,GAAG,CAAA,CAAA;AAC5B,SAAA;AACA6wB,QAAAA,OAAAA,CAAQ7wB,MAAM,GAAG,CAAA,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ8wB,aAaP,GAbD,SAAQA,aAAc/wB,CAAAA,OAAmB,EAAEqxB,IAAc,EAAA;AACvD,QAAA,IAAI,CAACrxB,OAAS,EAAA;AACZqxB,YAAAA,IAAAA,CAAKpxB,MAAM,GAAG,CAAA,CAAA;YACd,OAAOoxB,IAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAIzzB,SAAUyzB,IAAI,CAAC,CAAE,CAAA,GAAGrxB,QAAQpC,MAAM,CAAA;AACtC,QAAA,IAAI+E,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAM2uB,UAAatxB,GAAAA,OAAAA,CAAQG,cAAc,EAAA,CAAGvC,MAAM,CAAA;QAClD,MAAO+E,CAAAA,GAAImrB,qBAzLFA,CAyLwByD,eAAe,IAAI,CAAC,CAAC3zB,MAAAA,IAAUA,MAAW0zB,KAAAA,UAAAA,EAAY3uB,CAAK,EAAA,CAAA;AAC1F/E,YAAAA,MAAAA,GAASyzB,IAAI,CAAC1uB,CAAE,CAAA,GAAG/E,OAAOyE,MAAM,CAAA;AAClC,SAAA;AACAgvB,QAAAA,IAAAA,CAAKpxB,MAAM,GAAG0C,CAAAA,CAAAA;QACd,OAAO0uB,IAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQhB,CAAAA,iBAeP,GAfD,SAAQA,iBAAAA,CAAkBmB,OAAiB,EAAEV,OAAiB,EAAEX,MAAgB,EAAA;QAC9E,IAAMsB,KAAAA,GAAQ3D,qBAjMLA,CAiM2B4D,QAAQ,CAAA;AAC5CD,QAAAA,KAAAA,CAAME,KAAK,EAAA,CAAA;QACX,IAAK,IAAIhvB,IAAI,CAAGC,EAAAA,CAAAA,GAAI4uB,QAAQvxB,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC9C8uB,YAAAA,KAAAA,CAAMluB,GAAG,CAACiuB,OAAO,CAAC7uB,CAAAA,CAAE,CAAC2D,UAAU,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,IAAIsrB,SAAY,GAAA,KAAA,CAAA;QAChB,IAAK,IAAIjvB,KAAI,CAAGC,EAAAA,EAAAA,GAAIkuB,QAAQ7wB,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;YAC9C,IAAM/E,MAAAA,GAASkzB,OAAO,CAACnuB,EAAE,CAAA,CAAA;AACzB,YAAA,IAAI8uB,KAAMI,CAAAA,GAAG,CAACj0B,MAAAA,CAAO0I,UAAU,CAAG,EAAA;AAChC6pB,gBAAAA,MAAAA,CAAOjrB,IAAI,CAACtH,MAAAA,CAAAA,CAAAA;gBACZg0B,SAAY,GAAA,IAAA,CAAA;AACd,aAAA;AACF,SAAA;QACA,OAAOA,SAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQT,CAAAA,eA0BP,GA1BD,SAAQA,eAAgBK,CAAAA,OAAiB,EAAEV,OAAiB,EAAEvtB,GAAa,EAAE0tB,GAAa,EAAA;QACxF,IAAMQ,KAAAA,GAAQ3D,qBAlNLA,CAkN2B4D,QAAQ,CAAA;AAC5CD,QAAAA,KAAAA,CAAME,KAAK,EAAA,CAAA;AACX,QAAA,IAAIG,OAAU,GAAA,KAAA,CAAA;QACd,IAAK,IAAInvB,IAAI,CAAGC,EAAAA,CAAAA,GAAI4uB,QAAQvxB,MAAM,EAAE0C,CAAIC,GAAAA,CAAAA,EAAGD,CAAK,EAAA,CAAA;AAC9C8uB,YAAAA,KAAAA,CAAMluB,GAAG,CAACiuB,OAAO,CAAC7uB,CAAAA,CAAE,CAAC2D,UAAU,CAAA,CAAA;AACjC,SAAA;QACA,IAAK,IAAI3D,KAAI,CAAGC,EAAAA,EAAAA,GAAIkuB,QAAQ7wB,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;YAC9C,IAAM/E,MAAAA,GAASkzB,OAAO,CAACnuB,EAAE,CAAA,CAAA;AACzB,YAAA,IAAI,CAAC8uB,KAAMI,CAAAA,GAAG,CAACj0B,MAAAA,CAAO0I,UAAU,CAAG,EAAA;AACjC/C,gBAAAA,GAAAA,CAAI2B,IAAI,CAACtH,MAAAA,CAAAA,CAAAA;gBACTk0B,OAAU,GAAA,IAAA,CAAA;AACZ,aAAA;AACF,SAAA;AACAL,QAAAA,KAAAA,CAAME,KAAK,EAAA,CAAA;QACX,IAAK,IAAIhvB,KAAI,CAAGC,EAAAA,EAAAA,GAAIkuB,QAAQ7wB,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;AAC9C8uB,YAAAA,KAAAA,CAAMluB,GAAG,CAACutB,OAAO,CAACnuB,EAAAA,CAAE,CAAC2D,UAAU,CAAA,CAAA;AACjC,SAAA;QACA,IAAK,IAAI3D,KAAI,CAAGC,EAAAA,EAAAA,GAAI4uB,QAAQvxB,MAAM,EAAE0C,EAAIC,GAAAA,EAAAA,EAAGD,EAAK,EAAA,CAAA;YAC9C,IAAM/E,OAAAA,GAAS4zB,OAAO,CAAC7uB,EAAE,CAAA,CAAA;AACzB,YAAA,IAAI,CAAC8uB,KAAMI,CAAAA,GAAG,CAACj0B,OAAAA,CAAO0I,UAAU,CAAG,EAAA;AACjC2qB,gBAAAA,GAAAA,CAAI/rB,IAAI,CAACtH,OAAAA,CAAAA,CAAAA;gBACTk0B,OAAU,GAAA,IAAA,CAAA;AACZ,aAAA;AACF,SAAA;QACA,OAAOA,OAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQpC,CAAAA,OAOP,GAPD,SAAQA,OAAAA,CAAQ2B,IAAc,EAAE/C,OAAgB,EAAEyD,SAAoB,EAAA;QACpE,IAAM9xB,MAAAA,GAASoxB,KAAKpxB,MAAM,CAAA;AAC1B,QAAA,IAAIA,UAAU,CAAG,EAAA,OAAA;AACjB,QAAA,IAAMqwB,SAAY,GAAA,IAAI,CAACC,gBAAgB,CAACjC,OAAAA,CAAAA,CAAAA;AACxC,QAAA,IAAK,IAAI3rB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI1C,QAAQ0C,CAAK,EAAA,CAAA;YAC/BovB,SAAUV,CAAAA,IAAI,CAAC1uB,CAAAA,CAAE,EAAE2tB,SAAAA,CAAAA,CAAAA;AACrB,SAAA;AACF,KAAA,CAAA;AApPWxC,IAAAA,OAAAA,qBAAAA,CAAAA;EAA8BS,mBAqP1C,EAAA;AArPYT,qBAAAA,CACIyD,eAAkB,GAAA,IAAA,CAAA;AADtBzD,qBAAAA,CAEI4D,WAAwB,IAAIM,GAAAA,EAAAA,CAAAA;AAFhClE,qBAAAA,CAGIkD,QAAkB,EAAE,CAAA;AAHxBlD,qBAAAA,CAIIsC,cAAwB,EAAE,CAAA;AAJ9BtC,qBAAAA,CAKIoD,cAAwB,EAAE,CAAA;;;;;ACdpC,IAAA,eAAA,iBAAA,WAAA;AAAMe,IAAAA,SAAAA,eAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IAEX/T,MAAAA,CAAAA,qBASC,GATDA,SAAAA,qBAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAACgU,kBAAkB,EAAE;AAC5B,YAAA,IAAMxS,MAASyS,GAAAA,oBAAAA,EAAAA,CAAAA;;AAEf,YAAA,IAAM9rB,QAAW,GAAA,IAAI+rB,QAAS,CAAA,IAAI,EAAE1S,MAAAA,CAAAA,CAAAA;AACpCrZ,YAAAA,QAAAA,CAASgsB,WAAW,GAAG,IAAA,CAAA;YACvB,IAAI,CAACH,kBAAkB,GAAG7rB,QAAAA,CAAAA;AAC5B,SAAA;QACA,OAAO,IAAI,CAAC6rB,kBAAkB,CAAA;AAChC,KAAA,CAAA;AAXWD,IAAAA,OAAAA,eAAAA,CAAAA;AAYZ,CAAA,GAAA;AAEM,IAAA,eAAA,iBAAA,WAAA;AAAMK,IAAAA,SAAAA,eAAAA,GAAAA;aACX9Z,mBAAsB,GAAA,CAAA,CAAA;;AADX8Z,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAEX9iB,IAAAA,MAAAA,CAAAA,yBAMC,GANDA,SAAAA,yBAAAA,CAA0B+iB,OAAe,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC/Z,mBAAmB,KAAK+Z,OAAS,EAAA;;AAGxC,YAAA,YAAA,CAAA;YAFA,IAAI,CAAC/Z,mBAAmB,GAAG+Z,OAAAA,CAAAA;AAE3B,YAAA,CAAA,YAAA,GAAA,IAAI,CAAClwB,MAAM,KAAX,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAamN,yBAAyB,CAAC+iB,OAAAA,CAAAA,CAAAA;AACzC,SAAA;AACF,KAAA,CAAA;AARWD,IAAAA,OAAAA,eAAAA,CAAAA;AASZ,CAAA,GAAA;AAiBD,SAASE,WAAAA,CAAYC,WAAgB,EAAEC,SAAgB,EAAA;IACrDA,SAAU3yB,CAAAA,OAAO,CAAC,SAAC4yB,QAAAA,EAAAA;AACjBC,QAAAA,MAAAA,CAAOC,mBAAmB,CAACF,QAAAA,CAASG,SAAS,CAAE/yB,CAAAA,OAAO,CAAC,SAACwjB,IAAAA,EAAAA;AACtDqP,YAAAA,MAAAA,CAAOG,cAAc,CACnBN,WAAYK,CAAAA,SAAS,EACrBvP,IACAqP,EAAAA,MAAAA,CAAOI,wBAAwB,CAACL,SAASG,SAAS,EAAEvP,IAASqP,CAAAA,IAAAA,MAAAA,CAAOK,MAAM,CAAC,IAAA,CAAA,CAAA,CAAA;AAE/E,SAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;AACF,CAAA;AAEAT,WAAAA,CAAY7M,MAAQ,EAAA;AAACsM,IAAAA,eAAAA;AAAgB,CAAA,CAAA,CAAA;AACrCO,WAAAA,CAAYU,MAAQ,EAAA;AAACZ,IAAAA,eAAAA;AAAgB,CAAA,CAAA,CAAA;AAErC;;AAEC,IACM,SAASa,WAAAA,GAAAA;IACd,IAAK,IAAIC,OAAOC,YAAc,CAAA;AAC5BC,QAAAA,MAAAA,CAAOC,aAAa,CAACH,GAAKC,EAAAA,YAAY,CAACD,GAAI,CAAA,CAAA,CAAA;AAC7C,KAAA;AACAjB,IAAAA,oBAAAA,EAAAA,CAAAA;AACF,CAAA;AAEA,SAASA,oBAAAA,GAAAA;IACP,OAAOqB,MAAAA,CAAOC,IAAI,CAAC,cAAA,CAAA,CAAA;AACrB;;;;"}