@galacean/engine-xr-webxr 1.3.28 → 1.3.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js.map +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
package/dist/browser.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.min.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/tslib@2.6.0/node_modules/tslib/tslib.es6.mjs","../../xr/dist/module.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../../math/dist/module.js","../src/feature/WebXRImageTracking.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../src/Util.ts","../src/WebXRFrame.ts","../src/WebXRSession.ts","../src/WebXRDevice.ts","../src/feature/WebXRTrackableFeature.ts","../src/feature/WebXRFeature.ts","../src/feature/WebXRAnchorTracking.ts","../src/feature/WebXRPlaneTracking.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}\nexport function _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","export 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 { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _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","/******************************************************************************\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 */\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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\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\") throw new TypeError(\"Object expected.\");\n var dispose;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\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};\n","import { CameraType, Matrix, CameraClearFlags, Vector3, Quaternion, Rect, SafeLoopArray, XRManager, Ray, Plane, Vector2, decoder, AssetPromise, resourceLoader, decode, Loader } from '@galacean/engine';\n\nfunction _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _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}\n\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _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}\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}\n\nfunction _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}\n\n/**\n * Enumerates some input devices that can be tracked.(including status, posture and other information)\n */ var XRTrackedInputDevice;\n(function(XRTrackedInputDevice) {\n XRTrackedInputDevice[XRTrackedInputDevice[/** Controller */ \"Controller\"] = 0] = \"Controller\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Left controller */ \"LeftController\"] = 1] = \"LeftController\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Right controller */ \"RightController\"] = 2] = \"RightController\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Camera */ \"Camera\"] = 3] = \"Camera\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Left camera */ \"LeftCamera\"] = 4] = \"LeftCamera\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Right camera */ \"RightCamera\"] = 5] = \"RightCamera\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Head */ \"LeftHand\"] = 6] = \"LeftHand\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Right hand */ \"RightHand\"] = 7] = \"RightHand\";\n})(XRTrackedInputDevice || (XRTrackedInputDevice = {}));\n\n/**\n * The state of an XRSession.\n */ var XRSessionState;\n(function(XRSessionState) {\n XRSessionState[XRSessionState[/** Not initialized. */ \"None\"] = 0] = \"None\";\n XRSessionState[XRSessionState[/** Initializing session. */ \"Initializing\"] = 1] = \"Initializing\";\n XRSessionState[XRSessionState[/** Initialized but not started. */ \"Initialized\"] = 2] = \"Initialized\";\n XRSessionState[XRSessionState[/** Running. */ \"Running\"] = 3] = \"Running\";\n XRSessionState[XRSessionState[/** Paused. */ \"Paused\"] = 4] = \"Paused\";\n})(XRSessionState || (XRSessionState = {}));\n\n/**\n * The manager of XR camera.\n */ var XRCameraManager = /*#__PURE__*/ function() {\n function XRCameraManager(_xrManager) {\n this._xrManager = _xrManager;\n }\n var _proto = XRCameraManager.prototype;\n /**\n * Attach the camera to the specified input type(Camera, LeftCamera or RightCamera).\n * The camera entity need to be moved to the XROrigin entity.\n * @param type - The input type\n * @param camera - The camera to be attached\n */ _proto.attachCamera = function attachCamera(type, camera) {\n var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);\n var preCamera = xrCamera._camera;\n if (preCamera !== camera) {\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n switch(type){\n case XRTrackedInputDevice.Camera:\n // @ts-ignore\n camera._cameraType = CameraType.XRCenterCamera;\n break;\n case XRTrackedInputDevice.LeftCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRLeftCamera;\n break;\n case XRTrackedInputDevice.RightCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRRightCamera;\n break;\n }\n xrCamera._camera = camera;\n }\n };\n /**\n * Detach the camera from the specified input type.\n * @param type - The input type\n * @returns The camera that was detached\n */ _proto.detachCamera = function detachCamera(type) {\n var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);\n var preCamera = xrCamera._camera;\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n xrCamera._camera = null;\n return preCamera;\n };\n /**\n * @internal\n */ _proto._onSessionStart = function _onSessionStart() {};\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {\n var _this__xrManager_inputManager = this._xrManager.inputManager, cameras = _this__xrManager_inputManager._cameras;\n for(var i = 0, n = cameras.length; i < n; i++){\n var cameraDevice = cameras[i];\n var camera = cameraDevice._camera;\n if (!camera) continue;\n // sync position and rotation\n var transform = camera.entity.transform;\n var pose = cameraDevice.pose;\n transform.position = pose.position;\n transform.rotationQuaternion = pose.rotation;\n // sync viewport\n var viewport = camera.viewport;\n var _cameraDevice_viewport = cameraDevice.viewport, x = _cameraDevice_viewport.x, y = _cameraDevice_viewport.y, width = _cameraDevice_viewport.width, height = _cameraDevice_viewport.height;\n if (!(x === viewport.x && y === viewport.y && width === viewport.z && height === viewport.w)) {\n camera.viewport = viewport.set(x, y, width, height);\n }\n // sync project matrix\n if (!Matrix.equals(camera.projectionMatrix, cameraDevice.projectionMatrix)) {\n camera.projectionMatrix = cameraDevice.projectionMatrix;\n }\n }\n };\n /**\n * @internal\n */ _proto._onSessionExit = function _onSessionExit() {};\n /**\n * @internal\n */ _proto._getIgnoreClearFlags = function _getIgnoreClearFlags(cameraType) {\n if (cameraType === CameraType.XRCenterCamera) {\n if (this._xrManager.sessionManager.state === XRSessionState.Running) {\n return CameraClearFlags.Color;\n } else {\n return CameraClearFlags.None;\n }\n } else {\n return CameraClearFlags.None;\n }\n };\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {};\n _create_class(XRCameraManager, [\n {\n key: \"fixedFoveation\",\n get: /**\n * The fixed foveation of the camera.\n */ function get() {\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n if (platformSession) {\n return platformSession.getFixedFoveation();\n } else {\n throw new Error(\"XR session is not available.\");\n }\n },\n set: function set(value) {\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n if (platformSession) {\n platformSession.setFixedFoveation(value);\n } else {\n throw new Error(\"XR session is not available.\");\n }\n }\n }\n ]);\n return XRCameraManager;\n}();\n\n/**\n * Data for describing pose in the XR space.\n */ var XRPose = function XRPose() {\n /** The position of the pose in XR space. */ this.position = new Vector3();\n /** The rotation of the pose in XR space. */ this.rotation = new Quaternion();\n /** The matrix of the pose in XR space. */ this.matrix = new Matrix();\n /** The inverse matrix of the pose in XR space. */ this.inverseMatrix = new Matrix();\n};\n\n/**\n * Enum for XR tracking state.\n */ var XRTrackingState;\n(function(XRTrackingState) {\n XRTrackingState[XRTrackingState[/** Not tracking */ \"NotTracking\"] = 0] = \"NotTracking\";\n XRTrackingState[XRTrackingState[/** Tracking */ \"Tracking\"] = 1] = \"Tracking\";\n XRTrackingState[XRTrackingState[/** Lost track */ \"TrackingLost\"] = 2] = \"TrackingLost\";\n})(XRTrackingState || (XRTrackingState = {}));\n\nvar XRInput = function XRInput(type) {\n this.type = type;\n this./** The tracking state of xr input. */ trackingState = XRTrackingState.NotTracking;\n};\n\n/**\n * The XR camera.\n */ var XRCamera = /*#__PURE__*/ function(XRInput1) {\n _inherits(XRCamera, XRInput1);\n function XRCamera() {\n var _this;\n _this = XRInput1.apply(this, arguments) || this;\n /** The pose of the camera in XR space. */ _this.pose = new XRPose();\n /** The viewport of the camera. */ _this.viewport = new Rect();\n /** The projection matrix of the camera. */ _this.projectionMatrix = new Matrix();\n return _this;\n }\n return XRCamera;\n}(XRInput);\n\n/**\n * Enum for XR input button.\n */ var XRInputButton;\n(function(XRInputButton) {\n XRInputButton[XRInputButton[/** None */ \"None\"] = 0x0] = \"None\";\n XRInputButton[XRInputButton[/** Select */ \"Select\"] = 0x1] = \"Select\";\n XRInputButton[XRInputButton[/** Select */ \"Trigger\"] = 0x1] = \"Trigger\";\n XRInputButton[XRInputButton[/** Squeeze */ \"Squeeze\"] = 0x2] = \"Squeeze\";\n XRInputButton[XRInputButton[/** TouchPad */ \"TouchPad\"] = 0x4] = \"TouchPad\";\n XRInputButton[XRInputButton[/** A */ \"AButton\"] = 0x8] = \"AButton\";\n XRInputButton[XRInputButton[/** B */ \"BButton\"] = 0x10] = \"BButton\";\n})(XRInputButton || (XRInputButton = {}));\n\n/**\n * The XR controller.\n */ var XRController = /*#__PURE__*/ function(XRInput1) {\n _inherits(XRController, XRInput1);\n function XRController() {\n var _this;\n _this = XRInput1.apply(this, arguments) || this;\n /** The grip space pose of the controller in XR space. */ _this.gripPose = new XRPose();\n /** The target ray space pose of the controller in XR space. */ _this.targetRayPose = new XRPose();\n /** The currently pressed buttons of this controller. */ _this.pressedButtons = XRInputButton.None;\n /** Record button lifted. */ _this.down = XRInputButton.None;\n /** Record button pressed. */ _this.up = XRInputButton.None;\n return _this;\n }\n var _proto = XRController.prototype;\n /**\n *\n * Returns whether the button is pressed.\n * @param button - The button to check\n * @returns Whether the button is pressed\n */ _proto.isButtonDown = function isButtonDown(button) {\n return (this.down & button) !== 0;\n };\n /**\n * Returns whether the button is lifted.\n * @param button - The button to check\n * @returns Whether the button is lifted\n */ _proto.isButtonUp = function isButtonUp(button) {\n return (this.up & button) !== 0;\n };\n /**\n * Returns whether the button is held down.\n * @param button - The button to check\n * @returns Whether the button is held down\n */ _proto.isButtonHeldDown = function isButtonHeldDown(button) {\n return (this.pressedButtons & button) !== 0;\n };\n return XRController;\n}(XRInput);\n\nvar XRInputEventType;\n(function(XRInputEventType) {\n XRInputEventType[XRInputEventType[\"SelectStart\"] = 0] = \"SelectStart\";\n XRInputEventType[XRInputEventType[\"Select\"] = 1] = \"Select\";\n XRInputEventType[XRInputEventType[\"SelectEnd\"] = 2] = \"SelectEnd\";\n XRInputEventType[XRInputEventType[\"SqueezeStart\"] = 3] = \"SqueezeStart\";\n XRInputEventType[XRInputEventType[\"Squeeze\"] = 4] = \"Squeeze\";\n XRInputEventType[XRInputEventType[\"SqueezeEnd\"] = 5] = \"SqueezeEnd\";\n})(XRInputEventType || (XRInputEventType = {}));\n\nvar XRTargetRayMode;\n(function(XRTargetRayMode) {\n XRTargetRayMode[XRTargetRayMode[\"Gaze\"] = 0] = \"Gaze\";\n XRTargetRayMode[XRTargetRayMode[\"TrackedPointer\"] = 1] = \"TrackedPointer\";\n XRTargetRayMode[XRTargetRayMode[\"Screen\"] = 2] = \"Screen\";\n})(XRTargetRayMode || (XRTargetRayMode = {}));\n\n/**\n * The manager of XR input.\n */ var XRInputManager = /*#__PURE__*/ function() {\n function XRInputManager(_xrManager, _engine) {\n this._xrManager = _xrManager;\n this._engine = _engine;\n this./** @internal */ _cameras = [];\n this./** @internal */ _controllers = [];\n this._added = [];\n this._removed = [];\n this._trackedDevices = [];\n this._statusSnapshot = [];\n this._listeners = new SafeLoopArray();\n var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;\n for(var i = 0; i < 6; i++){\n switch(i){\n case XRTrackedInputDevice.Camera:\n case XRTrackedInputDevice.LeftCamera:\n case XRTrackedInputDevice.RightCamera:\n cameras.push(trackedDevices[i] = new XRCamera(i));\n break;\n case XRTrackedInputDevice.Controller:\n case XRTrackedInputDevice.LeftController:\n case XRTrackedInputDevice.RightController:\n controllers.push(trackedDevices[i] = new XRController(i));\n break;\n }\n }\n this._statusSnapshot.fill(XRTrackingState.NotTracking, 0, trackedDevices.length);\n }\n var _proto = XRInputManager.prototype;\n /**\n * Returns the tracked device instance.\n * @param type - The tracked input device type\n * @returns The input instance\n */ _proto.getTrackedDevice = function getTrackedDevice(type) {\n return this._trackedDevices[type];\n };\n /**\n * Add a listener for tracked device changes.\n * @param listener - The listener to add\n */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {\n this._listeners.push({\n fn: listener\n });\n };\n /**\n * Remove a listener of tracked device changes.\n * @param listener - The listener to remove\n */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {\n this._listeners.findAndRemove(function(value) {\n return value.fn === listener ? value.destroyed = true : false;\n });\n };\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {\n var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;\n var _this1 = this, trackedDevices = _this1._trackedDevices, controllers = _this1._controllers;\n // Reset data\n added.length = removed.length = 0;\n for(var i = 0, n = controllers.length; i < n; i++){\n var controller = controllers[i];\n controller.down = controller.up = 0;\n }\n // Handle events and update tracked devices\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n var platformEvents = platformSession.events;\n for(var i1 = 0, n1 = platformEvents.length; i1 < n1; i1++){\n this._handleEvent(platformEvents[i1]);\n }\n platformSession.resetEvents();\n platformSession.frame.updateInputs(trackedDevices);\n for(var i2 = 0, n2 = trackedDevices.length; i2 < n2; i2++){\n var input = trackedDevices[i2];\n if (!input) continue;\n var nowState = input.trackingState;\n if (statusSnapshot[i2] === XRTrackingState.Tracking) {\n if (nowState !== XRTrackingState.Tracking) {\n removed.push(input);\n }\n } else {\n if (nowState === XRTrackingState.Tracking) {\n added.push(input);\n }\n }\n statusSnapshot[i2] = nowState;\n }\n // Dispatch change event\n if (added.length > 0 || removed.length > 0) {\n var listeners = this._listeners.getLoopArray();\n for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){\n var listener = listeners[i3];\n !listener.destroyed && listener.fn(added, removed);\n }\n }\n };\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {\n this._listeners.findAndRemove(function(value) {\n return value.destroyed = true;\n });\n };\n _proto._handleEvent = function _handleEvent(event) {\n var input = this._trackedDevices[event.input];\n switch(event.targetRayMode){\n case XRTargetRayMode.TrackedPointer:\n switch(event.type){\n case XRInputEventType.SelectStart:\n input.down |= XRInputButton.Select;\n input.pressedButtons |= XRInputButton.Select;\n break;\n case XRInputEventType.SelectEnd:\n input.up |= XRInputButton.Select;\n input.pressedButtons &= ~XRInputButton.Select;\n break;\n case XRInputEventType.SqueezeStart:\n input.down |= XRInputButton.Squeeze;\n input.pressedButtons |= XRInputButton.Squeeze;\n break;\n case XRInputEventType.SqueezeEnd:\n input.up |= XRInputButton.Squeeze;\n input.pressedButtons &= ~XRInputButton.Squeeze;\n break;\n }\n break;\n case XRTargetRayMode.Screen:\n var _this = this, engine = _this._engine;\n // @ts-ignore\n var target = engine.inputManager._pointerManager._target;\n // @ts-ignore\n var canvas = engine.canvas._webCanvas;\n var clientWidth = canvas.clientWidth, clientHeight = canvas.clientHeight;\n var clientX = clientWidth * (event.x + 1) * 0.5;\n var clientY = clientHeight * (event.y + 1) * 0.5;\n // @ts-ignore\n switch(event.type){\n case XRInputEventType.SelectStart:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerdown\", event.id, clientX, clientY));\n break;\n case XRInputEventType.Select:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointermove\", event.id, clientX, clientY));\n break;\n case XRInputEventType.SelectEnd:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerup\", event.id, clientX, clientY));\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerleave\", event.id, clientX, clientY));\n break;\n }\n break;\n }\n };\n _proto._makeUpPointerEvent = function _makeUpPointerEvent(type, pointerId, clientX, clientY) {\n var eventInitDict = {\n pointerId: pointerId,\n clientX: clientX,\n clientY: clientY\n };\n switch(type){\n case \"pointerdown\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 1;\n break;\n case \"pointermove\":\n eventInitDict.button = -1;\n eventInitDict.buttons = 1;\n break;\n case \"pointerup\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n case \"pointerleave\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n }\n return new PointerEvent(type, eventInitDict);\n };\n return XRInputManager;\n}();\n\n/**\n * The type of XR session.\n */ var XRSessionMode;\n(function(XRSessionMode) {\n XRSessionMode[XRSessionMode[\"None\"] = 0] = \"None\";\n XRSessionMode[XRSessionMode[\"AR\"] = 1] = \"AR\";\n XRSessionMode[XRSessionMode[\"VR\"] = 2] = \"VR\";\n})(XRSessionMode || (XRSessionMode = {}));\n\n/**\n * XRSessionManager manages the life cycle of XR sessions.\n */ var XRSessionManager = /*#__PURE__*/ function() {\n function XRSessionManager(_xrManager, _engine) {\n this._xrManager = _xrManager;\n this._engine = _engine;\n this._mode = XRSessionMode.None;\n this._state = XRSessionState.None;\n this._listeners = new SafeLoopArray();\n // @ts-ignore\n this._rhi = _engine._hardwareRenderer;\n this._raf = requestAnimationFrame.bind(window);\n this._caf = cancelAnimationFrame.bind(window);\n this._onSessionExit = this._onSessionExit.bind(this);\n }\n var _proto = XRSessionManager.prototype;\n /**\n * Check if the specified mode is supported.\n * @param mode - The mode to check\n * @returns A promise that resolves if the mode is supported, otherwise rejects\n */ _proto.isSupportedMode = function isSupportedMode(mode) {\n return this._xrManager._platformDevice.isSupportedSessionMode(mode);\n };\n /**\n * Run the session.\n */ _proto.run = function run() {\n var _this = this, platformSession = _this._platformSession, engine = _this._engine;\n if (!platformSession) {\n throw new Error(\"Without session to run.\");\n }\n platformSession.start();\n this._setState(XRSessionState.Running);\n this._xrManager._onSessionStart();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n };\n /**\n * Stop the session.\n */ _proto.stop = function stop() {\n var _this = this, platformSession = _this._platformSession, engine = _this._engine, rhi = _this._rhi;\n if (!platformSession) {\n throw new Error(\"Without session to stop.\");\n }\n if (this._state !== XRSessionState.Running) {\n throw new Error(\"Session is not running.\");\n }\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.stop();\n this._setState(XRSessionState.Paused);\n this._xrManager._onSessionStop();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n };\n /**\n * Add a listening function for session state changes.\n * @param listener - The listening function\n */ _proto.addStateChangedListener = function addStateChangedListener(listener) {\n this._listeners.push({\n fn: listener\n });\n };\n /**\n * Remove a listening function of session state changes.\n * @param listener - The listening function\n */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {\n this._listeners.findAndRemove(function(value) {\n return value.fn === listener ? value.destroyed = true : false;\n });\n };\n /**\n * @internal\n */ _proto._setState = function _setState(value) {\n this._state = value;\n var listeners = this._listeners.getLoopArray();\n for(var i = 0, n = listeners.length; i < n; i++){\n var listener = listeners[i];\n !listener.destroyed && listener.fn(value);\n }\n };\n /**\n * @internal\n */ _proto._initialize = function _initialize(mode, features) {\n var _this = this;\n return new Promise(function(resolve, reject) {\n var xrManager = _this._xrManager;\n // Initialize all features\n var platformFeatures = [];\n for(var i = 0, n = features.length; i < n; i++){\n var _features_i = features[i], platformFeature = _features_i._platformFeature;\n platformFeature && platformFeatures.push(platformFeature);\n }\n xrManager._platformDevice.requestSession(_this._rhi, mode, platformFeatures).then(function(platformSession) {\n _this._mode = mode;\n _this._platformSession = platformSession;\n _this._setState(XRSessionState.Initialized);\n platformSession.setSessionExitCallBack(_this._onSessionExit);\n platformSession.addEventListener();\n xrManager._onSessionInit();\n resolve();\n }, reject);\n });\n };\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {\n var _this = this, rhi = _this._rhi, platformSession = _this._platformSession;\n rhi._mainFrameBuffer = platformSession.framebuffer;\n rhi._mainFrameWidth = platformSession.framebufferWidth;\n rhi._mainFrameHeight = platformSession.framebufferHeight;\n };\n /**\n * @internal\n */ _proto._getRequestAnimationFrame = function _getRequestAnimationFrame() {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.requestAnimationFrame;\n } else {\n return this._raf;\n }\n };\n /**\n * @internal\n */ _proto._getCancelAnimationFrame = function _getCancelAnimationFrame() {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.cancelAnimationFrame;\n } else {\n return this._caf;\n }\n };\n /**\n * @internal\n */ _proto._exit = function _exit() {\n var _this = this, platformSession = _this._platformSession;\n if (!platformSession) {\n return Promise.reject(\"Without session to stop.\");\n }\n return platformSession.end();\n };\n _proto._onSessionExit = function _onSessionExit() {\n var _this = this, rhi = _this._rhi, platformSession = _this._platformSession, engine = _this._engine;\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.removeEventListener();\n this._platformSession = null;\n this._setState(XRSessionState.None);\n this._xrManager._onSessionExit();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n };\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {\n this._listeners.findAndRemove(function(value) {\n return value.destroyed = true;\n });\n this._raf = this._caf = null;\n };\n _create_class(XRSessionManager, [\n {\n key: \"mode\",\n get: /**\n * The current session mode( AR or VR ).\n */ function get() {\n return this._mode;\n }\n },\n {\n key: \"state\",\n get: /**\n * Return the current session state.\n */ function get() {\n return this._state;\n }\n },\n {\n key: \"supportedFrameRate\",\n get: /**\n * Return a list of supported frame rates.(only available in-session)\n */ function get() {\n return this._platformSession.supportedFrameRates;\n }\n },\n {\n key: \"frameRate\",\n get: /**\n * Return the current frame rate as reported by the device.\n */ function get() {\n return this._platformSession.frameRate;\n }\n }\n ]);\n return XRSessionManager;\n}();\n\n/**\n * @internal\n */ var XRManagerExtended = /*#__PURE__*/ function(XRManager1) {\n _inherits(XRManagerExtended, XRManager1);\n function XRManagerExtended() {\n return XRManager1.apply(this, arguments);\n }\n var _proto = XRManagerExtended.prototype;\n _proto.isSupportedFeature = function isSupportedFeature(feature) {\n return this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(feature));\n };\n _proto.addFeature = function addFeature(type) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot add feature when the session is initialized.\");\n }\n if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {\n throw new Error(\"The feature is not supported\");\n }\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n if (_instanceof(features[i], type)) throw new Error(\"The feature has been added\");\n }\n var feature = _construct(type, [].concat(this, args));\n features.push(feature);\n return feature;\n };\n _proto.getFeature = function getFeature(type) {\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n if (_instanceof(feature, type)) {\n return feature;\n }\n }\n };\n _proto.enterXR = function enterXR(sessionMode, autoRun) {\n if (autoRun === void 0) autoRun = true;\n var _this = this;\n var sessionManager = this.sessionManager;\n if (sessionManager._platformSession) {\n throw new Error(\"Please exit XR immersive mode first.\");\n }\n if (!this._origin) {\n throw new Error(\"Please set origin before enter XR.\");\n }\n return new Promise(function(resolve, reject) {\n // 1. Check if this xr mode is supported\n sessionManager.isSupportedMode(sessionMode).then(function() {\n sessionManager._setState(XRSessionState.Initializing);\n // 2. Initialize session\n sessionManager._initialize(sessionMode, _this.features).then(function() {\n autoRun && sessionManager.run();\n resolve();\n }, reject);\n }, reject);\n });\n };\n _proto.exitXR = function exitXR() {\n var _this = this;\n return new Promise(function(resolve, reject) {\n _this.sessionManager._exit().then(function() {\n resolve();\n }, reject);\n });\n };\n _proto._initialize = function _initialize(engine, xrDevice) {\n this._features = [];\n this._platformDevice = xrDevice;\n this.sessionManager = new XRSessionManager(this, engine);\n this.inputManager = new XRInputManager(this, engine);\n this.cameraManager = new XRCameraManager(this);\n };\n _proto._update = function _update() {\n var sessionManager = this.sessionManager;\n if (sessionManager.state !== XRSessionState.Running) return;\n sessionManager._onUpdate();\n this.inputManager._onUpdate();\n this.cameraManager._onUpdate();\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onUpdate();\n }\n };\n _proto._destroy = function _destroy() {\n var _this = this;\n if (this.sessionManager._platformSession) {\n this.exitXR().then(function() {\n _this.sessionManager._onDestroy();\n _this.inputManager._onDestroy();\n _this.cameraManager._onDestroy();\n });\n } else {\n this.sessionManager._onDestroy();\n this.inputManager._onDestroy();\n this.cameraManager._onDestroy();\n }\n };\n _proto._getRequestAnimationFrame = function _getRequestAnimationFrame() {\n return this.sessionManager._getRequestAnimationFrame();\n };\n _proto._getCancelAnimationFrame = function _getCancelAnimationFrame() {\n return this.sessionManager._getCancelAnimationFrame();\n };\n _proto._getCameraIgnoreClearFlags = function _getCameraIgnoreClearFlags(type) {\n return this.cameraManager._getIgnoreClearFlags(type);\n };\n /**\n * @internal\n */ _proto._onSessionStop = function _onSessionStop() {\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionStop();\n }\n };\n /**\n * @internal\n */ _proto._onSessionInit = function _onSessionInit() {\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionInit();\n }\n };\n /**\n * @internal\n */ _proto._onSessionStart = function _onSessionStart() {\n this.cameraManager._onSessionStart();\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionStart();\n }\n };\n /**\n * @internal\n */ _proto._onSessionExit = function _onSessionExit() {\n this.cameraManager._onSessionExit();\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionExit();\n feature._onDestroy();\n }\n features.length = 0;\n };\n _create_class(XRManagerExtended, [\n {\n key: \"features\",\n get: function get() {\n return this._features;\n }\n },\n {\n key: \"origin\",\n get: function get() {\n return this._origin;\n },\n set: function set(value) {\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot set origin when the session is initialized.\");\n }\n this._origin = value;\n }\n }\n ]);\n return XRManagerExtended;\n}(XRManager);\n(function() {\n /** @internal */ XRManagerExtended._featureMap = new Map();\n})();\n/**\n * @internal\n */ function registerXRFeature(type) {\n return function(feature) {\n XRManagerExtended._featureMap.set(feature, type);\n };\n}\n// 实现混入的函数\nfunction ApplyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach(function(baseCtor) {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach(function(name) {\n Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null));\n });\n });\n}\nApplyMixins(XRManager, [\n XRManagerExtended\n]);\n\n/**\n * The base class of XR feature manager.\n */ var XRFeature = /*#__PURE__*/ function() {\n function XRFeature(_xrManager, _type) {\n for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){\n args[_key - 2] = arguments[_key];\n }\n var _xrManager__platformDevice;\n this._xrManager = _xrManager;\n this._type = _type;\n this._enabled = true;\n this._platformFeature = (_xrManager__platformDevice = _xrManager._platformDevice).createPlatformFeature.apply(_xrManager__platformDevice, [].concat(_type, args));\n this._onEnable();\n }\n var _proto = XRFeature.prototype;\n /**\n * @internal\n */ _proto._onEnable = function _onEnable() {};\n /**\n * @internal\n */ _proto._onDisable = function _onDisable() {};\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {};\n /**\n * @internal\n */ _proto._onSessionInit = function _onSessionInit() {};\n /**\n * @internal\n */ _proto._onSessionStart = function _onSessionStart() {};\n /**\n * @internal\n */ _proto._onSessionStop = function _onSessionStop() {};\n /**\n * @internal\n */ _proto._onSessionExit = function _onSessionExit() {};\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {};\n _create_class(XRFeature, [\n {\n key: \"enabled\",\n get: /**\n * Returns whether the feature is enabled.\n */ function get() {\n return this._enabled;\n },\n set: function set(value) {\n if (this.enabled !== value) {\n this._enabled = value;\n value ? this._onEnable() : this._onDisable();\n }\n }\n }\n ]);\n return XRFeature;\n}();\n\nvar XRFeatureType;\n(function(XRFeatureType) {\n XRFeatureType[XRFeatureType[\"AnchorTracking\"] = 0] = \"AnchorTracking\";\n XRFeatureType[XRFeatureType[\"ImageTracking\"] = 1] = \"ImageTracking\";\n XRFeatureType[XRFeatureType[\"PlaneTracking\"] = 2] = \"PlaneTracking\";\n XRFeatureType[XRFeatureType[\"HitTest\"] = 3] = \"HitTest\";\n})(XRFeatureType || (XRFeatureType = {}));\n\nvar XRRequestTrackingState;\n(function(XRRequestTrackingState) {\n XRRequestTrackingState[XRRequestTrackingState[\"None\"] = 0] = \"None\";\n XRRequestTrackingState[XRRequestTrackingState[\"Submitted\"] = 1] = \"Submitted\";\n XRRequestTrackingState[XRRequestTrackingState[\"Resolved\"] = 2] = \"Resolved\";\n XRRequestTrackingState[XRRequestTrackingState[\"Rejected\"] = 3] = \"Rejected\";\n XRRequestTrackingState[XRRequestTrackingState[\"Destroyed\"] = 4] = \"Destroyed\";\n XRRequestTrackingState[XRRequestTrackingState[\"WaitingDestroy\"] = 5] = \"WaitingDestroy\";\n})(XRRequestTrackingState || (XRRequestTrackingState = {}));\n\n/**\n * The base class of XR trackable manager.\n */ var XRTrackableFeature = /*#__PURE__*/ function(XRFeature1) {\n _inherits(XRTrackableFeature, XRFeature1);\n function XRTrackableFeature() {\n var _this;\n _this = XRFeature1.apply(this, arguments) || this;\n _this._requestTrackings = [];\n _this._tracked = [];\n _this._added = [];\n _this._updated = [];\n _this._removed = [];\n _this._statusSnapshot = {};\n _this._listeners = new SafeLoopArray();\n return _this;\n }\n var _proto = XRTrackableFeature.prototype;\n /**\n * Add a listening function for tracked object changes.\n * @param listener - The listening function\n */ _proto.addChangedListener = function addChangedListener(listener) {\n this._listeners.push({\n fn: listener\n });\n };\n /**\n * Remove a listening function of tracked object changes.\n * @param listener - The listening function\n */ _proto.removeChangedListener = function removeChangedListener(listener) {\n this._listeners.findAndRemove(function(value) {\n return value.fn === listener ? value.destroyed = true : false;\n });\n };\n _proto._onUpdate = function _onUpdate() {\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n var platformFrame = platformSession.frame;\n var _this = this, platformFeature = _this._platformFeature, requestTrackings = _this._requestTrackings, statusSnapshot = _this._statusSnapshot, allTracked = _this._tracked, added = _this._added, updated = _this._updated, removed = _this._removed;\n if (!platformFrame || !requestTrackings.length) {\n return;\n }\n if (!platformFeature.checkAvailable(platformSession, platformFrame, requestTrackings)) {\n return;\n }\n added.length = updated.length = removed.length = 0;\n platformFeature.getTrackedResult(platformSession, platformFrame, requestTrackings, this._generateTracked);\n for(var i = 0, n = requestTrackings.length; i < n; i++){\n var requestTracking = requestTrackings[i];\n switch(requestTracking.state){\n case XRRequestTrackingState.Destroyed:\n var destroyedTracked = requestTracking.tracked;\n for(var j = 0, n1 = destroyedTracked.length; j < n1; j++){\n var tracked = destroyedTracked[j];\n var trackId = tracked.id;\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n removed.push(tracked);\n allTracked.splice(allTracked.indexOf(tracked), 1);\n }\n statusSnapshot[trackId] = XRTrackingState.NotTracking;\n }\n break;\n case XRRequestTrackingState.Resolved:\n var tracked1 = requestTracking.tracked;\n for(var j1 = 0, n2 = tracked1.length; j1 < n2; j1++){\n var trackedObject = tracked1[j1];\n var trackId1 = trackedObject.id;\n if (trackedObject.state === XRTrackingState.Tracking) {\n if (statusSnapshot[trackId1] === XRTrackingState.Tracking) {\n updated.push(trackedObject);\n } else {\n added.push(trackedObject);\n statusSnapshot[trackId1] = XRTrackingState.Tracking;\n allTracked.push(trackedObject);\n }\n } else {\n if (statusSnapshot[trackId1] === XRTrackingState.Tracking) {\n removed.push(trackedObject);\n allTracked.splice(allTracked.indexOf(trackedObject), 1);\n }\n statusSnapshot[trackId1] = trackedObject.state;\n }\n }\n break;\n }\n }\n for(var i1 = requestTrackings.length - 1; i1 >= 0; i1--){\n requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n var listeners = this._listeners.getLoopArray();\n for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){\n var listener = listeners[i2];\n !listener.destroyed && listener.fn(added, updated, removed);\n }\n }\n };\n _proto._onSessionStop = function _onSessionStop() {\n this._added.length = this._updated.length = this._removed.length = 0;\n };\n _proto._onSessionExit = function _onSessionExit() {\n // prettier-ignore\n this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;\n this._listeners.findAndRemove(function(value) {\n return value.destroyed = true;\n });\n };\n _proto._addRequestTracking = function _addRequestTracking(requestTracking) {\n var _this = this, platformFeature = _this._platformFeature;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n this._requestTrackings.push(requestTracking);\n platformFeature.onAddRequestTracking(requestTracking);\n };\n _proto._removeRequestTracking = function _removeRequestTracking(requestTracking) {\n var _this = this, platformFeature = _this._platformFeature;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n platformFeature.onDelRequestTracking(requestTracking);\n };\n _proto._removeAllRequestTrackings = function _removeAllRequestTrackings() {\n var _this = this, platformFeature = _this._platformFeature;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n var _this1 = this, requestTrackings = _this1._requestTrackings;\n for(var i = 0, n = requestTrackings.length; i < n; i++){\n platformFeature.onDelRequestTracking(requestTrackings[i]);\n }\n };\n return XRTrackableFeature;\n}(XRFeature);\n(function() {\n XRTrackableFeature._uuid = 0;\n})();\n\n/**\n * The base class of XR tracked object.\n */ var XRTracked = function XRTracked() {\n /** The pose of the trackable in XR space. */ this.pose = new XRPose();\n /** The tracking state of the trackable. */ this.state = XRTrackingState.NotTracking;\n};\n\n/**\n * Enum for the types of hit test that can be performed.\n * Note: currently only supports plane.\n */ var TrackableType;\n(function(TrackableType) {\n TrackableType[TrackableType[/** Tracked plane. */ \"Plane\"] = 0x1] = \"Plane\";\n TrackableType[TrackableType[/** All tracked objects. */ \"All\"] = 0x1] = \"All\";\n})(TrackableType || (TrackableType = {}));\n\n/**\n * XR hit result.\n * It is the detection result returned by using XR HitTest feature.\n */ var XRHitResult = function XRHitResult() {\n /** The position of the hit point. */ this.point = new Vector3();\n /** The normal of the hit point. */ this.normal = new Vector3();\n};\n\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\nfunction __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\ntypeof 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\n/**\n * Enumerates modes of plane in XR.\n */ var XRPlaneMode;\n(function(XRPlaneMode) {\n XRPlaneMode[XRPlaneMode[/** None. */ \"None\"] = 0] = \"None\";\n XRPlaneMode[XRPlaneMode[/** Horizontal */ \"Horizontal\"] = 1] = \"Horizontal\";\n XRPlaneMode[XRPlaneMode[/** Vertical */ \"Vertical\"] = 2] = \"Vertical\";\n XRPlaneMode[XRPlaneMode[/** Includes horizontal and vertical. */ \"EveryThing\"] = 3] = \"EveryThing\";\n})(XRPlaneMode || (XRPlaneMode = {}));\n\n/**\n * @internal\n */ var XRRequestTracking = function XRRequestTracking() {\n /** The status of the current request tracking. */ this.state = XRRequestTrackingState.None;\n /** Tracked instances, make up from the tracking data returned by Session. */ this.tracked = [];\n};\n\n/**\n * The request plane in XR space.\n */ var XRRequestPlane = /*#__PURE__*/ function(XRRequestTracking1) {\n _inherits(XRRequestPlane, XRRequestTracking1);\n function XRRequestPlane(detectionMode) {\n var _this;\n _this = XRRequestTracking1.call(this) || this;\n _this.detectionMode = detectionMode;\n return _this;\n }\n return XRRequestPlane;\n}(XRRequestTracking);\n\n/**\n * The tracked plane in XR space.\n */ var XRTrackedPlane = /*#__PURE__*/ function(XRTracked1) {\n _inherits(XRTrackedPlane, XRTracked1);\n function XRTrackedPlane() {\n var _this;\n _this = XRTracked1.apply(this, arguments) || this;\n /** The points that make up this plane.\n * Note: These points are in the plane coordinate system,\n * and their Y coordinates are all zero.\n */ _this.polygon = [];\n /**\n * Whether this frame changes the attributes of the plane.\n * Note: Includes `polygon` but no `pose`.\n */ _this.attributesDirty = false;\n return _this;\n }\n return XRTrackedPlane;\n}(XRTracked);\n\nvar XRPlaneTracking = /*#__PURE__*/ function(XRTrackableFeature1) {\n _inherits(XRPlaneTracking, XRTrackableFeature1);\n function XRPlaneTracking(xrManager, detectionMode) {\n if (detectionMode === void 0) detectionMode = XRPlaneMode.EveryThing;\n var _this;\n _this = XRTrackableFeature1.call(this, xrManager, XRFeatureType.PlaneTracking, detectionMode) || this;\n _this._addRequestTracking(new XRRequestPlane(detectionMode));\n return _this;\n }\n var _proto = XRPlaneTracking.prototype;\n _proto._generateTracked = function _generateTracked() {\n var plane = new XRTrackedPlane();\n plane.id = XRTrackableFeature._uuid++;\n return plane;\n };\n _create_class(XRPlaneTracking, [\n {\n key: \"detectionMode\",\n get: /**\n * The plane detection mode.\n */ function get() {\n return this._requestTrackings[0].detectionMode;\n }\n },\n {\n key: \"trackedPlanes\",\n get: /**\n * The tracked planes.\n */ function get() {\n return this._tracked;\n }\n }\n ]);\n return XRPlaneTracking;\n}(XRTrackableFeature);\nXRPlaneTracking = __decorate([\n registerXRFeature(XRFeatureType.PlaneTracking)\n], XRPlaneTracking);\n\nvar XRHitTest = /*#__PURE__*/ function(XRFeature1) {\n _inherits(XRHitTest, XRFeature1);\n function XRHitTest(xrManager) {\n var _this;\n _this = XRFeature1.call(this, xrManager, XRFeatureType.HitTest) || this;\n _this._tempRay = new Ray();\n _this._tempPlane = new Plane();\n _this._tempVec2 = new Vector2();\n _this._tempVec30 = new Vector3();\n _this._tempVec31 = new Vector3();\n _this._tempVec32 = new Vector3();\n _this._tempVec33 = new Vector3();\n _this._tempVec34 = new Vector3();\n _this._tempVec35 = new Vector3();\n return _this;\n }\n var _proto = XRHitTest.prototype;\n /**\n * Hit test.\n * @param ray - The ray to test\n * @param type - The type of hit test\n * @returns The hit result\n */ _proto.hitTest = function hitTest(ray, type) {\n var result = [];\n if (type & TrackableType.Plane) {\n this._hitTestPlane(ray, result);\n }\n return result;\n };\n /**\n * Screen hit test.\n * @param x - The x coordinate of the screen point\n * @param y - The y coordinate of the screen point\n * @param type - The type of hit test\n * @returns The hit result\n */ _proto.screenHitTest = function screenHitTest(x, y, type) {\n var _this = this, xrManager = _this._xrManager;\n if (xrManager.sessionManager.mode !== XRSessionMode.AR) {\n throw new Error(\"Only AR mode supports using screen ray hit test.\");\n }\n var _xrManager_inputManager_getTrackedDevice = xrManager.inputManager.getTrackedDevice(XRTrackedInputDevice.Camera), camera = _xrManager_inputManager_getTrackedDevice._camera;\n if (!camera) {\n throw new Error(\"No camera available.\");\n }\n var ray = camera.screenPointToRay(this._tempVec2.set(x, y), this._tempRay);\n return this.hitTest(ray, type);\n };\n _proto._hitTestPlane = function _hitTestPlane(ray, result) {\n var planeManager = this._xrManager.getFeature(XRPlaneTracking);\n if (!planeManager || !planeManager.enabled) {\n throw new Error(\"The plane estimation function needs to be turned on for plane hit test.\");\n }\n var _this = this, plane = _this._tempPlane, normal = _this._tempVec30, hitPoint = _this._tempVec31, hitPointInPlane = _this._tempVec32;\n var trackedPlanes = planeManager.trackedPlanes;\n for(var i = 0, n = trackedPlanes.length; i < n; i++){\n var trackedPlane = trackedPlanes[i];\n normal.set(0, 1, 0).transformNormal(trackedPlane.pose.matrix);\n plane.normal.copyFrom(normal);\n plane.distance = -Vector3.dot(normal, trackedPlane.pose.position);\n var distance = ray.intersectPlane(plane);\n if (distance >= 0) {\n ray.getPoint(distance, hitPoint);\n Vector3.transformToVec3(hitPoint, trackedPlane.pose.inverseMatrix, hitPointInPlane);\n // Check if the hit position is within the plane boundary.\n if (this._checkPointerWithinPlane(hitPointInPlane, trackedPlane)) {\n var hitResult = new XRHitResult();\n hitResult.point.copyFrom(hitPoint);\n hitResult.normal.copyFrom(normal);\n hitResult.distance = distance;\n hitResult.trackedObject = trackedPlane;\n hitResult.trackableType = TrackableType.Plane;\n result.push(hitResult);\n }\n }\n }\n };\n _proto._checkPointerWithinPlane = function _checkPointerWithinPlane(pointer, plane) {\n var _this = this, preToCur = _this._tempVec33, preToPointer = _this._tempVec34, cross = _this._tempVec35;\n var polygon = plane.polygon;\n var length = polygon.length;\n var prePoint = polygon[length - 1];\n var side = 0;\n for(var i = 0; i < length; i++){\n var curPoint = polygon[i];\n Vector3.subtract(curPoint, prePoint, preToCur);\n Vector3.subtract(pointer, prePoint, preToPointer);\n Vector3.cross(preToCur, preToPointer, cross);\n var y = cross.y;\n if (side === 0) {\n if (y > 0) {\n side = 1;\n } else if (y < 0) {\n side = -1;\n }\n } else {\n if (y > 0 && side < 0 || y < 0 && side > 0) {\n return false;\n }\n }\n prePoint = curPoint;\n }\n return true;\n };\n return XRHitTest;\n}(XRFeature);\nXRHitTest = __decorate([\n registerXRFeature(XRFeatureType.HitTest)\n], XRHitTest);\n\n/**\n * The anchor in XR space.\n */ var XRAnchor = /*#__PURE__*/ function(XRTracked1) {\n _inherits(XRAnchor, XRTracked1);\n function XRAnchor() {\n return XRTracked1.apply(this, arguments);\n }\n return XRAnchor;\n}(XRTracked);\n\n/**\n * The request anchor in XR space.\n */ var XRRequestAnchor = /*#__PURE__*/ function(XRRequestTracking1) {\n _inherits(XRRequestAnchor, XRRequestTracking1);\n function XRRequestAnchor(position, rotation) {\n var _this;\n _this = XRRequestTracking1.call(this) || this;\n _this.position = position;\n _this.rotation = rotation;\n return _this;\n }\n return XRRequestAnchor;\n}(XRRequestTracking);\n\nvar XRAnchorTracking = /*#__PURE__*/ function(XRTrackableFeature1) {\n _inherits(XRAnchorTracking, XRTrackableFeature1);\n function XRAnchorTracking(xrManager) {\n var _this;\n _this = XRTrackableFeature1.call(this, xrManager, XRFeatureType.AnchorTracking) || this;\n _this._anchors = [];\n return _this;\n }\n var _proto = XRAnchorTracking.prototype;\n /**\n * Add a anchor in XR space.\n * @param anchor - The anchor to be added\n */ _proto.addAnchor = function addAnchor(position, rotation) {\n if (!this._enabled) {\n throw new Error(\"Cannot add an anchor from a disabled anchor manager.\");\n }\n var _this = this, anchors = _this._anchors;\n var requestAnchor = new XRRequestAnchor(position, rotation);\n var xrAnchor = this._generateTracked();\n requestAnchor.tracked[0] = xrAnchor;\n this._addRequestTracking(requestAnchor);\n anchors.push(xrAnchor);\n return xrAnchor;\n };\n /**\n * Remove a anchor in XR space.\n * @param anchor - The anchor to be removed\n */ _proto.removeAnchor = function removeAnchor(anchor) {\n if (!this._enabled) {\n throw new Error(\"Cannot remove an anchor from a disabled anchor manager.\");\n }\n var _this = this, requestTrackings = _this._requestTrackings, anchors = _this._anchors;\n for(var i = 0, n = requestTrackings.length; i < n; i++){\n var requestAnchor = requestTrackings[i];\n if (requestAnchor.tracked[0] === anchor) {\n this._removeRequestTracking(requestAnchor);\n break;\n }\n }\n anchors.splice(anchors.indexOf(anchor), 1);\n };\n /**\n * Remove all tracking anchors.\n */ _proto.clearAnchors = function clearAnchors() {\n if (!this._enabled) {\n throw new Error(\"Cannot remove anchors from a disabled anchor manager.\");\n }\n this._removeAllRequestTrackings();\n };\n _proto._generateTracked = function _generateTracked() {\n var anchor = new XRAnchor();\n anchor.id = XRTrackableFeature._uuid++;\n return anchor;\n };\n _create_class(XRAnchorTracking, [\n {\n key: \"trackingAnchors\",\n get: /**\n * The anchors to tracking.\n */ function get() {\n return this._anchors;\n }\n },\n {\n key: \"trackedAnchors\",\n get: /**\n * The tracked anchors.\n */ function get() {\n return this._tracked;\n }\n }\n ]);\n return XRAnchorTracking;\n}(XRTrackableFeature);\nXRAnchorTracking = __decorate([\n registerXRFeature(XRFeatureType.AnchorTracking)\n], XRAnchorTracking);\n\n/**\n * The request image in XR space.\n */ var XRRequestImage = /*#__PURE__*/ function(XRRequestTracking1) {\n _inherits(XRRequestImage, XRRequestTracking1);\n function XRRequestImage(image) {\n var _this;\n _this = XRRequestTracking1.call(this) || this;\n _this.image = image;\n return _this;\n }\n return XRRequestImage;\n}(XRRequestTracking);\n\n/**\n * A tracked image in XR space.\n */ var XRTrackedImage = /*#__PURE__*/ function(XRTracked1) {\n _inherits(XRTrackedImage, XRTracked1);\n function XRTrackedImage() {\n return XRTracked1.apply(this, arguments);\n }\n return XRTrackedImage;\n}(XRTracked);\n\nvar XRImageTracking = /*#__PURE__*/ function(XRTrackableFeature1) {\n _inherits(XRImageTracking, XRTrackableFeature1);\n function XRImageTracking(xrManager, trackingImages) {\n var _this;\n _this = XRTrackableFeature1.call(this, xrManager, XRFeatureType.ImageTracking, trackingImages) || this;\n _this._trackingImages = trackingImages;\n var imageLength = trackingImages ? trackingImages.length : 0;\n if (imageLength > 0) {\n for(var i = 0, n = trackingImages.length; i < n; i++){\n _this._addRequestTracking(new XRRequestImage(trackingImages[i]));\n }\n } else {\n console.warn(\"No image to be tracked.\");\n }\n return _this;\n }\n var _proto = XRImageTracking.prototype;\n _proto._generateTracked = function _generateTracked() {\n var image = new XRTrackedImage();\n image.id = XRTrackableFeature._uuid++;\n return image;\n };\n _create_class(XRImageTracking, [\n {\n key: \"trackingImages\",\n get: /**\n * The image to tracking.\n */ function get() {\n return this._trackingImages;\n }\n },\n {\n key: \"trackedImages\",\n get: /**\n * The tracked images.\n */ function get() {\n return this._tracked;\n }\n }\n ]);\n return XRImageTracking;\n}(XRTrackableFeature);\nXRImageTracking = __decorate([\n registerXRFeature(XRFeatureType.ImageTracking)\n], XRImageTracking);\n\n/**\n * A reference image is an image to look for in the physical environment.\n */ var XRReferenceImage = function XRReferenceImage(name, imageSource, physicalWidth) {\n this.name = name;\n this.imageSource = imageSource;\n this.physicalWidth = physicalWidth;\n};\n\nvar XRReferenceImageDecoder = /*#__PURE__*/ function() {\n function XRReferenceImageDecoder() {}\n XRReferenceImageDecoder.decode = function decode(engine, bufferReader) {\n return new AssetPromise(function(resolve, reject) {\n var physicalWidth = bufferReader.nextFloat32();\n bufferReader.nextUint8();\n var img = new Image();\n img.onload = function() {\n resolve(new XRReferenceImage(\"\", img, physicalWidth));\n };\n img.src = URL.createObjectURL(new window.Blob([\n bufferReader.nextImagesData(1)[0]\n ]));\n });\n };\n return XRReferenceImageDecoder;\n}();\nXRReferenceImageDecoder = __decorate([\n decoder(\"XRReferenceImage\")\n], XRReferenceImageDecoder);\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar XRReferenceImageLoader = /*#__PURE__*/ function(Loader1) {\n _inherits(XRReferenceImageLoader, Loader1);\n function XRReferenceImageLoader() {\n return Loader1.apply(this, arguments);\n }\n var _proto = XRReferenceImageLoader.prototype;\n _proto.load = function load(item, resourceManager) {\n return new AssetPromise(function(resolve, reject) {\n resourceManager// @ts-ignore\n ._request(item.url, _extends({}, item, {\n type: \"arraybuffer\"\n })).then(function(data) {\n decode(data, resourceManager.engine).then(function(referenceImage) {\n resolve(referenceImage);\n });\n }).catch(reject);\n });\n };\n return XRReferenceImageLoader;\n}(Loader);\nXRReferenceImageLoader = __decorate([\n resourceLoader(\"XRReferenceImage\", [])\n], XRReferenceImageLoader);\n\nexport { TrackableType, XRAnchor, XRAnchorTracking, XRCamera, XRCameraManager, XRController, XRFeature, XRFeatureType, XRHitResult, XRHitTest, XRImageTracking, XRInputButton, XRInputEventType, XRInputManager, XRPlaneMode, XRPlaneTracking, XRPose, XRReferenceImage, XRReferenceImageDecoder, XRReferenceImageLoader, XRRequestTrackingState, XRSessionManager, XRSessionMode, XRSessionState, XRTargetRayMode, XRTrackableFeature, XRTracked, XRTrackedImage, XRTrackedInputDevice, XRTrackedPlane, XRTrackingState };\n//# sourceMappingURL=module.js.map\n","export 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","/**\n * Defines how the bounding volumes intersects or contain one another.\n */ var ContainmentType;\n(function(ContainmentType) {\n ContainmentType[ContainmentType[/** Indicates that there is no overlap between two bounding volumes. */ \"Disjoint\"] = 0] = \"Disjoint\";\n ContainmentType[ContainmentType[/** Indicates that one bounding volume completely contains another volume. */ \"Contains\"] = 1] = \"Contains\";\n ContainmentType[ContainmentType[/** Indicates that bounding volumes partially overlap one another. */ \"Intersects\"] = 2] = \"Intersects\";\n})(ContainmentType || (ContainmentType = {}));\n\n/**\n * Defines the intersection between a plane and a bounding volume.\n */ var PlaneIntersectionType;\n(function(PlaneIntersectionType) {\n PlaneIntersectionType[PlaneIntersectionType[/** There is no intersection, the bounding volume is in the back of the plane. */ \"Back\"] = 0] = \"Back\";\n PlaneIntersectionType[PlaneIntersectionType[/** There is no intersection, the bounding volume is in the front of the plane. */ \"Front\"] = 1] = \"Front\";\n PlaneIntersectionType[PlaneIntersectionType[/** The plane is intersected. */ \"Intersecting\"] = 2] = \"Intersecting\";\n})(PlaneIntersectionType || (PlaneIntersectionType = {}));\n\n/**\n * Frustum face\n */ var FrustumFace;\n(function(FrustumFace) {\n FrustumFace[FrustumFace[/** Near face */ \"Near\"] = 0] = \"Near\";\n FrustumFace[FrustumFace[/** Far face */ \"Far\"] = 1] = \"Far\";\n FrustumFace[FrustumFace[/** Left face */ \"Left\"] = 2] = \"Left\";\n FrustumFace[FrustumFace[/** Right face */ \"Right\"] = 3] = \"Right\";\n FrustumFace[FrustumFace[/** Bottom face */ \"Bottom\"] = 4] = \"Bottom\";\n FrustumFace[FrustumFace[/** Top face */ \"Top\"] = 5] = \"Top\";\n})(FrustumFace || (FrustumFace = {}));\n\nfunction _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}\n\n/**\n * Common utility methods for math operations.\n */ var MathUtil = /*#__PURE__*/ function() {\n function MathUtil() {}\n /**\n * Clamps the specified value.\n * @param v - The specified value\n * @param min - The min value\n * @param max - The max value\n * @returns The result of clamping a value between min and max\n */ MathUtil.clamp = function clamp(v, min, max) {\n return Math.max(min, Math.min(max, v));\n };\n /**\n * Checks if a and b are almost equals.\n * The absolute value of the difference between a and b is close to zero.\n * @param a - The left value to compare\n * @param b - The right value to compare\n * @returns True if a almost equal to b, false otherwise\n */ MathUtil.equals = function equals(a, b) {\n return Math.abs(a - b) <= MathUtil.zeroTolerance;\n };\n /**\n * Determines whether the specified v is pow2.\n * @param v - The specified v\n * @returns True if the specified v is pow2, false otherwise\n */ MathUtil.isPowerOf2 = function isPowerOf2(v) {\n return (v & v - 1) === 0;\n };\n /**\n * Modify the specified r from radian to degree.\n * @param r - The specified r\n * @returns The degree value\n */ MathUtil.radianToDegree = function radianToDegree(r) {\n return r * MathUtil.radToDegreeFactor;\n };\n /**\n * Modify the specified d from degree to radian.\n * @param d - The specified d\n * @returns The radian value\n */ MathUtil.degreeToRadian = function degreeToRadian(d) {\n return d * MathUtil.degreeToRadFactor;\n };\n /**\n * Linearly interpolate between two values\n * @param start - Specify the start of the range in which to interpolate\n * @param end - Specify the end of the range in which to interpolate\n * @param t - The blend amount where 0 returns start and 1 end\n * @returns The result of linear blending between start and end\n */ MathUtil.lerp = function lerp(start, end, t) {\n return start + (end - start) * t;\n };\n return MathUtil;\n}();\n(function() {\n /** The value for which all absolute numbers smaller than are considered equal to zero. */ MathUtil.zeroTolerance = 1e-6;\n})();\n(function() {\n /** The conversion factor that radian to degree. */ MathUtil.radToDegreeFactor = 180 / Math.PI;\n})();\n(function() {\n /** The conversion factor that degree to radian. */ MathUtil.degreeToRadFactor = Math.PI / 180;\n})();\n\n/**\n * Describes a 3D-vector.\n */ var Vector3 = /*#__PURE__*/ function() {\n function Vector3(x, y, z) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (z === void 0) z = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._z = z;\n }\n var _proto = Vector3.prototype;\n /**\n * Set the value of this vector.\n * @param x - The x component of the vector\n * @param y - The y component of the vector\n * @param z - The z component of the vector\n * @returns This vector\n */ _proto.set = function set(x, y, z) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.add = function add(right) {\n this._x += right._x;\n this._y += right._y;\n this._z += right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the difference of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.subtract = function subtract(right) {\n this._x -= right._x;\n this._y -= right._y;\n this._z -= right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the product of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.multiply = function multiply(right) {\n this._x *= right._x;\n this._y *= right._y;\n this._z *= right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the divisor of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.divide = function divide(right) {\n this._x /= right._x;\n this._y /= right._y;\n this._z /= right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this vector.\n * @returns The length of this vector\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z;\n return Math.sqrt(_x * _x + _y * _y + _z * _z);\n };\n /**\n * Calculate the squared length of this vector.\n * @returns The squared length of this vector\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z;\n return _x * _x + _y * _y + _z * _z;\n };\n /**\n * Reverses the direction of this vector.\n * @returns This vector\n */ _proto.negate = function negate() {\n this._x = -this._x;\n this._y = -this._y;\n this._z = -this._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Converts this vector into a unit vector.\n * @returns This vector\n */ _proto.normalize = function normalize() {\n Vector3.normalize(this, this);\n return this;\n };\n /**\n * Scale this vector by the given value.\n * @param s - The amount by which to scale the vector\n * @returns This vector\n */ _proto.scale = function scale(s) {\n this._x *= s;\n this._y *= s;\n this._z *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * This vector performs a normal transformation using the given 4x4 matrix.\n * @remarks\n * A normal transform performs the transformation with the assumption that the w component\n * is zero. This causes the fourth row and fourth column of the matrix to be unused. The\n * end result is a vector that is not translated, but all other transformation properties\n * apply. This is often preferred for normal vectors as normals purely represent direction\n * rather than location because normal vectors should not be translated.\n * @param m - The transform matrix\n * @returns This vector\n */ _proto.transformNormal = function transformNormal(m) {\n Vector3.transformNormal(this, m, this);\n return this;\n };\n /**\n * This vector performs a transformation using the given 4x4 matrix.\n * @param m - The transform matrix\n * @returns This vector\n */ _proto.transformToVec3 = function transformToVec3(m) {\n Vector3.transformToVec3(this, m, this);\n return this;\n };\n /**\n * This vector performs a coordinate transformation using the given 4x4 matrix.\n * @remarks\n * A coordinate transform performs the transformation with the assumption that the w component\n * is one. The four dimensional vector obtained from the transformation operation has each\n * component in the vector divided by the w component. This forces the w-component to be one and\n * therefore makes the vector homogeneous. The homogeneous vector is often preferred when working\n * with coordinates as the w component can safely be ignored.\n * @param m - The transform matrix\n * @returns This vector\n */ _proto.transformCoordinate = function transformCoordinate(m) {\n Vector3.transformCoordinate(this, m, this);\n return this;\n };\n /**\n * This vector performs a transformation using the given quaternion.\n * @param quaternion - The transform quaternion\n * @returns This vector\n */ _proto.transformByQuat = function transformByQuat(quaternion) {\n Vector3.transformByQuat(this, quaternion, this);\n return this;\n };\n /**\n * Creates a clone of this vector.\n * @returns A clone of this vector\n */ _proto.clone = function clone() {\n return new Vector3(this._x, this._y, this._z);\n };\n /**\n * Copy from vector3 like object.\n * @param source - Vector3 like object.\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._z = source.z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to vector3 like object.\n * @param target - Vector3 like object\n * @returns This Vector3 like object\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n target.z = this._z;\n return target;\n };\n /**\n * Copy the value of this vector from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This vector\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this vector to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n out[outOffset + 2] = this._z;\n };\n /**\n * Serialize this vector to a JSON representation.\n * @returns A JSON representation of this vector\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y,\n z: this._z\n };\n };\n /**\n * Determines the sum of two vectors.\n * @param left - The first vector to add\n * @param right - The second vector to add\n * @param out - The sum of two vectors\n */ Vector3.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._z = left._z + right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the difference between two vectors.\n * @param left - The first vector to subtract\n * @param right - The second vector to subtract\n * @param out - The difference between two vectors\n */ Vector3.subtract = function subtract(left, right, out) {\n out._x = left._x - right._x;\n out._y = left._y - right._y;\n out._z = left._z - right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two vectors.\n * @param left - The first vector to multiply\n * @param right - The second vector to multiply\n * @param out - The product of two vectors\n */ Vector3.multiply = function multiply(left, right, out) {\n out._x = left._x * right._x;\n out._y = left._y * right._y;\n out._z = left._z * right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the divisor of two vectors.\n * @param left - The first vector to divide\n * @param right - The second vector to divide\n * @param out - The divisor of two vectors\n */ Vector3.divide = function divide(left, right, out) {\n out._x = left._x / right._x;\n out._y = left._y / right._y;\n out._z = left._z / right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two vectors.\n * @param left - The first vector to dot\n * @param right - The second vector to dot\n * @returns The dot product of two vectors\n */ Vector3.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y + left._z * right._z;\n };\n /**\n * Determines the cross product of two vectors.\n * @param left - The first vector to cross\n * @param right - The second vector to cross\n * @param out - The cross product of two vectors\n */ Vector3.cross = function cross(left, right, out) {\n var ax = left._x;\n var ay = left._y;\n var az = left._z;\n var bx = right._x;\n var by = right._y;\n var bz = right._z;\n out.set(ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx);\n };\n /**\n * Determines the distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The distance of two vectors\n */ Vector3.distance = function distance(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n return Math.sqrt(x * x + y * y + z * z);\n };\n /**\n * Determines the squared distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The squared distance of two vectors\n */ Vector3.distanceSquared = function distanceSquared(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n return x * x + y * y + z * z;\n };\n /**\n * Determines whether the specified vectors are equals.\n * @param left - The first vector to compare\n * @param right - The second vector to compare\n * @returns True if the specified vectors are equals, false otherwise\n */ Vector3.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y) && MathUtil.equals(left._z, right._z);\n };\n /**\n * Performs a linear interpolation between two vectors.\n * @param start - The first vector\n * @param end - The second vector\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two vectors\n */ Vector3.lerp = function lerp(start, end, t, out) {\n var _x = start._x, _y = start._y, _z = start._z;\n out._x = _x + (end._x - _x) * t;\n out._y = _y + (end._y - _y) * t;\n out._z = _z + (end._z - _z) * t;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the largest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the largest components of the specified vectors\n */ Vector3.max = function max(left, right, out) {\n out._x = Math.max(left._x, right._x);\n out._y = Math.max(left._y, right._y);\n out._z = Math.max(left._z, right._z);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the smallest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the smallest components of the specified vectors\n */ Vector3.min = function min(left, right, out) {\n out._x = Math.min(left._x, right._x);\n out._y = Math.min(left._y, right._y);\n out._z = Math.min(left._z, right._z);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Reverses the direction of a given vector.\n * @param a - The vector to negate\n * @param out - The vector facing in the opposite direction\n */ Vector3.negate = function negate(a, out) {\n out._x = -a._x;\n out._y = -a._y;\n out._z = -a._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Converts the vector into a unit vector.\n * @param a - The vector to normalize\n * @param out - The normalized vector\n */ Vector3.normalize = function normalize(a, out) {\n var _x = a._x, _y = a._y, _z = a._z;\n var len = Math.sqrt(_x * _x + _y * _y + _z * _z);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out.set(_x * len, _y * len, _z * len);\n }\n };\n /**\n * Scale a vector by the given value.\n * @param a - The vector to scale\n * @param s - The amount by which to scale the vector\n * @param out - The scaled vector\n */ Vector3.scale = function scale(a, s, out) {\n out._x = a._x * s;\n out._y = a._y * s;\n out._z = a._z * s;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a normal transformation using the given 4x4 matrix.\n * @remarks\n * A normal transform performs the transformation with the assumption that the w component\n * is zero. This causes the fourth row and fourth column of the matrix to be unused. The\n * end result is a vector that is not translated, but all other transformation properties\n * apply. This is often preferred for normal vectors as normals purely represent direction\n * rather than location because normal vectors should not be translated.\n * @param v - The normal vector to transform\n * @param m - The transform matrix\n * @param out - The transformed normal\n */ Vector3.transformNormal = function transformNormal(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8];\n out._y = _x * e[1] + _y * e[5] + _z * e[9];\n out._z = _x * e[2] + _y * e[6] + _z * e[10];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given 4x4 matrix.\n * @param v - The vector to transform\n * @param m - The transform matrix\n * @param out - The transformed vector3\n */ Vector3.transformToVec3 = function transformToVec3(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8] + e[12];\n out._y = _x * e[1] + _y * e[5] + _z * e[9] + e[13];\n out._z = _x * e[2] + _y * e[6] + _z * e[10] + e[14];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation from vector3 to vector4 using the given 4x4 matrix.\n * @param v - The vector to transform\n * @param m - The transform matrix\n * @param out - The transformed vector4\n */ Vector3.transformToVec4 = function transformToVec4(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8] + e[12];\n out._y = _x * e[1] + _y * e[5] + _z * e[9] + e[13];\n out._z = _x * e[2] + _y * e[6] + _z * e[10] + e[14];\n out._w = _x * e[3] + _y * e[7] + _z * e[11] + e[15];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a coordinate transformation using the given 4x4 matrix.\n *\n * @remarks\n * A coordinate transform performs the transformation with the assumption that the w component\n * is one. The four dimensional vector obtained from the transformation operation has each\n * component in the vector divided by the w component. This forces the w-component to be one and\n * therefore makes the vector homogeneous. The homogeneous vector is often preferred when working\n * with coordinates as the w component can safely be ignored.\n * @param v - The coordinate vector to transform\n * @param m - The transform matrix\n * @param out - The transformed coordinates\n */ Vector3.transformCoordinate = function transformCoordinate(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n var w = _x * e[3] + _y * e[7] + _z * e[11] + e[15];\n w = 1.0 / w;\n out._x = (_x * e[0] + _y * e[4] + _z * e[8] + e[12]) * w;\n out._y = (_x * e[1] + _y * e[5] + _z * e[9] + e[13]) * w;\n out._z = (_x * e[2] + _y * e[6] + _z * e[10] + e[14]) * w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given quaternion.\n * @param v - The vector to transform\n * @param quaternion - The transform quaternion\n * @param out - The transformed vector\n */ Vector3.transformByQuat = function transformByQuat(v, quaternion, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var qx = quaternion._x, qy = quaternion._y, qz = quaternion._z, qw = quaternion._w;\n // calculate quat * vec\n var ix = qw * _x + qy * _z - qz * _y;\n var iy = qw * _y + qz * _x - qx * _z;\n var iz = qw * _z + qx * _y - qy * _x;\n var iw = -qx * _x - qy * _y - qz * _z;\n // calculate result * inverse quat\n out._x = ix * qw - iw * qx - iy * qz + iz * qy;\n out._y = iy * qw - iw * qy - iz * qx + ix * qz;\n out._z = iz * qw - iw * qz - ix * qy + iy * qx;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Vector3, [\n {\n key: \"x\",\n get: /**\n * The x component of the vector.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the vector.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"z\",\n get: /**\n * The z component of the vector.\n */ function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Vector3;\n}();\n(function() {\n /** @internal */ Vector3._zero = new Vector3(0.0, 0.0, 0.0);\n})();\n(function() {\n /** @internal */ Vector3._one = new Vector3(1.0, 1.0, 1.0);\n})();\n\n/**\n * A bounding sphere.\n * */ var BoundingSphere = /*#__PURE__*/ function() {\n function BoundingSphere(center, radius) {\n if (center === void 0) center = null;\n if (radius === void 0) radius = 0;\n /** The center point of the sphere. */ this.center = new Vector3();\n /** The radius of the sphere. */ this.radius = 0;\n center && this.center.copyFrom(center);\n this.radius = radius;\n }\n var _proto = BoundingSphere.prototype;\n /**\n * Creates a clone of this sphere.\n * @returns A clone of this sphere\n */ _proto.clone = function clone() {\n return new BoundingSphere(this.center, this.radius);\n };\n /**\n * Copy this sphere from the specified sphere.\n * @param source - The specified sphere\n * @returns This sphere\n */ _proto.copyFrom = function copyFrom(source) {\n this.center.copyFrom(source.center);\n this.radius = source.radius;\n return this;\n };\n /**\n * Calculate a bounding sphere that fully contains the given points.\n * @param points - The given points\n * @param out - The calculated bounding sphere\n */ BoundingSphere.fromPoints = function fromPoints(points, out) {\n if (!points || points.length === 0) {\n throw new Error(\"points must be array and length must > 0\");\n }\n var len = points.length;\n var center = BoundingSphere._tempVec30;\n center.x = center.y = center.z = 0;\n // Calculate the center of the sphere.\n for(var i = 0; i < len; ++i){\n Vector3.add(points[i], center, center);\n }\n // The center of the sphere.\n Vector3.scale(center, 1 / len, out.center);\n // Calculate the radius of the sphere.\n var radius = 0.0;\n for(var i1 = 0; i1 < len; ++i1){\n var distance = Vector3.distanceSquared(center, points[i1]);\n distance > radius && (radius = distance);\n }\n // The radius of the sphere.\n out.radius = Math.sqrt(radius);\n };\n /**\n * Calculate a bounding sphere from a given box.\n * @param box - The given box\n * @param out - The calculated bounding sphere\n */ BoundingSphere.fromBox = function fromBox(box, out) {\n var center = out.center;\n var min = box.min, max = box.max;\n center.x = (min.x + max.x) * 0.5;\n center.y = (min.y + max.y) * 0.5;\n center.z = (min.z + max.z) * 0.5;\n out.radius = Vector3.distance(center, max);\n };\n return BoundingSphere;\n}();\n(function() {\n BoundingSphere._tempVec30 = new Vector3();\n})();\n\n/**\n * Axis Aligned Bound Box (AABB).\n */ var BoundingBox = /*#__PURE__*/ function() {\n function BoundingBox(min, max) {\n if (min === void 0) min = null;\n if (max === void 0) max = null;\n /** The minimum point of the box. */ this.min = new Vector3();\n /** The maximum point of the box. */ this.max = new Vector3();\n min && this.min.copyFrom(min);\n max && this.max.copyFrom(max);\n }\n var _proto = BoundingBox.prototype;\n /**\n * Get the center point of this bounding box.\n * @param out - The center point of this bounding box\n * @returns The center point of this bounding box\n */ _proto.getCenter = function getCenter(out) {\n var _this = this, min = _this.min, max = _this.max;\n var centerX = max._x + min._x;\n var centerY = max._y + min._y;\n var centerZ = max._z + min._z;\n out.set(isNaN(centerX) ? 0 : centerX * 0.5, isNaN(centerY) ? 0 : centerY * 0.5, isNaN(centerZ) ? 0 : centerZ * 0.5);\n return out;\n };\n /**\n * Get the extent of this bounding box.\n * @param out - The extent of this bounding box\n * @returns The extent of this bounding box\n */ _proto.getExtent = function getExtent(out) {\n var _this = this, min = _this.min, max = _this.max;\n var extentX = max._x - min._x;\n var extentY = max._y - min._y;\n var extentZ = max._z - min._z;\n out.set(isNaN(extentX) ? 0 : extentX * 0.5, isNaN(extentY) ? 0 : extentY * 0.5, isNaN(extentZ) ? 0 : extentZ * 0.5);\n return out;\n };\n /**\n * Get the eight corners of this bounding box.\n * @param out - An array of points representing the eight corners of this bounding box\n * @returns An array of points representing the eight corners of this bounding box\n */ _proto.getCorners = function getCorners(out) {\n if (out === void 0) out = [];\n var _this = this, min = _this.min, max = _this.max;\n var minX = min.x;\n var minY = min.y;\n var minZ = min.z;\n var maxX = max.x;\n var maxY = max.y;\n var maxZ = max.z;\n var len = out.length;\n // The array length is less than 8 to make up\n if (len < 8) {\n for(var i = 0, l = 8 - len; i < l; ++i){\n out[len + i] = new Vector3();\n }\n }\n out[0].set(minX, maxY, maxZ);\n out[1].set(maxX, maxY, maxZ);\n out[2].set(maxX, minY, maxZ);\n out[3].set(minX, minY, maxZ);\n out[4].set(minX, maxY, minZ);\n out[5].set(maxX, maxY, minZ);\n out[6].set(maxX, minY, minZ);\n out[7].set(minX, minY, minZ);\n return out;\n };\n /**\n * Transform a bounding box.\n * @param matrix - The transform to apply to the bounding box\n * @returns The transformed bounding box\n */ _proto.transform = function transform(matrix) {\n BoundingBox.transform(this, matrix, this);\n return this;\n };\n /**\n * Creates a clone of this box.\n * @returns A clone of this box\n */ _proto.clone = function clone() {\n return new BoundingBox(this.min, this.max);\n };\n /**\n * Copy this bounding box from the specified box.\n * @param source - The specified box\n * @returns This bounding box\n */ _proto.copyFrom = function copyFrom(source) {\n this.min.copyFrom(source.min);\n this.max.copyFrom(source.max);\n return this;\n };\n /**\n * Calculate a bounding box from the center point and the extent of the bounding box.\n * @param center - The center point\n * @param extent - The extent of the bounding box\n * @param out - The calculated bounding box\n */ BoundingBox.fromCenterAndExtent = function fromCenterAndExtent(center, extent, out) {\n Vector3.subtract(center, extent, out.min);\n Vector3.add(center, extent, out.max);\n };\n /**\n * Calculate a bounding box that fully contains the given points.\n * @param points - The given points\n * @param out - The calculated bounding box\n */ BoundingBox.fromPoints = function fromPoints(points, out) {\n if (!points || points.length === 0) {\n throw new Error(\"points must be array and length must > 0\");\n }\n var min = out.min, max = out.max;\n min.x = min.y = min.z = Number.MAX_VALUE;\n max.x = max.y = max.z = -Number.MAX_VALUE;\n for(var i = 0, l = points.length; i < l; ++i){\n var point = points[i];\n Vector3.min(min, point, min);\n Vector3.max(max, point, max);\n }\n };\n /**\n * Calculate a bounding box from a given sphere.\n * @param sphere - The given sphere\n * @param out - The calculated bounding box\n */ BoundingBox.fromSphere = function fromSphere(sphere, out) {\n var center = sphere.center, radius = sphere.radius;\n var min = out.min, max = out.max;\n min.x = center.x - radius;\n min.y = center.y - radius;\n min.z = center.z - radius;\n max.x = center.x + radius;\n max.y = center.y + radius;\n max.z = center.z + radius;\n };\n /**\n * Transform a bounding box.\n * @param source - The original bounding box\n * @param matrix - The transform to apply to the bounding box\n * @param out - The transformed bounding box\n */ BoundingBox.transform = function transform(source, matrix, out) {\n // https://zeux.io/2010/10/17/aabb-from-obb-with-component-wise-abs/\n var center = BoundingBox._tempVec30;\n var extent = BoundingBox._tempVec31;\n source.getCenter(center);\n source.getExtent(extent);\n Vector3.transformCoordinate(center, matrix, center);\n var x = extent.x, y = extent.y, z = extent.z;\n var e = matrix.elements;\n // prettier-ignore\n var e0 = e[0], e1 = e[1], e2 = e[2], e4 = e[4], e5 = e[5], e6 = e[6], e8 = e[8], e9 = e[9], e10 = e[10];\n extent.set((e0 === 0 ? 0 : Math.abs(x * e0)) + (e4 === 0 ? 0 : Math.abs(y * e4)) + (e8 === 0 ? 0 : Math.abs(z * e8)), (e1 === 0 ? 0 : Math.abs(x * e1)) + (e5 === 0 ? 0 : Math.abs(y * e5)) + (e9 === 0 ? 0 : Math.abs(z * e9)), (e2 === 0 ? 0 : Math.abs(x * e2)) + (e6 === 0 ? 0 : Math.abs(y * e6)) + (e10 === 0 ? 0 : Math.abs(z * e10)));\n // set min、max\n Vector3.subtract(center, extent, out.min);\n Vector3.add(center, extent, out.max);\n };\n /**\n * Calculate a bounding box that is as large as the total combined area of the two specified boxes.\n * @param box1 - The first box to merge\n * @param box2 - The second box to merge\n * @param out - The merged bounding box\n * @returns The merged bounding box\n */ BoundingBox.merge = function merge(box1, box2, out) {\n Vector3.min(box1.min, box2.min, out.min);\n Vector3.max(box1.max, box2.max, out.max);\n return out;\n };\n return BoundingBox;\n}();\n(function() {\n BoundingBox._tempVec30 = new Vector3();\n})();\n(function() {\n BoundingBox._tempVec31 = new Vector3();\n})();\n\n/**\n * Contains static methods to help in determining intersections, containment, etc.\n */ var CollisionUtil = /*#__PURE__*/ function() {\n function CollisionUtil() {}\n /**\n * Calculate the intersection point of three plane.\n * @param p1 - Plane 1\n * @param p2 - Plane 2\n * @param p3 - Plane 3\n * @param out - intersection point\n */ CollisionUtil.intersectionPointThreePlanes = function intersectionPointThreePlanes(p1, p2, p3, out) {\n var p1Nor = p1.normal;\n var p2Nor = p2.normal;\n var p3Nor = p3.normal;\n Vector3.cross(p2Nor, p3Nor, CollisionUtil._tempVec30);\n Vector3.cross(p3Nor, p1Nor, CollisionUtil._tempVec31);\n Vector3.cross(p1Nor, p2Nor, CollisionUtil._tempVec32);\n var a = -Vector3.dot(p1Nor, CollisionUtil._tempVec30);\n var b = -Vector3.dot(p2Nor, CollisionUtil._tempVec31);\n var c = -Vector3.dot(p3Nor, CollisionUtil._tempVec32);\n Vector3.scale(CollisionUtil._tempVec30, p1.distance / a, CollisionUtil._tempVec30);\n Vector3.scale(CollisionUtil._tempVec31, p2.distance / b, CollisionUtil._tempVec31);\n Vector3.scale(CollisionUtil._tempVec32, p3.distance / c, CollisionUtil._tempVec32);\n Vector3.add(CollisionUtil._tempVec30, CollisionUtil._tempVec31, out);\n Vector3.add(out, CollisionUtil._tempVec32, out);\n };\n /**\n * Calculate the distance from a point to a plane.\n * @param plane - The plane\n * @param point - The point\n * @returns The distance from a point to a plane\n */ CollisionUtil.distancePlaneAndPoint = function distancePlaneAndPoint(plane, point) {\n return Vector3.dot(plane.normal, point) + plane.distance;\n };\n /**\n * Get the intersection type between a plane and a point.\n * @param plane - The plane\n * @param point - The point\n * @returns The intersection type\n */ CollisionUtil.intersectsPlaneAndPoint = function intersectsPlaneAndPoint(plane, point) {\n var distance = CollisionUtil.distancePlaneAndPoint(plane, point);\n if (distance > 0) {\n return PlaneIntersectionType.Front;\n }\n if (distance < 0) {\n return PlaneIntersectionType.Back;\n }\n return PlaneIntersectionType.Intersecting;\n };\n /**\n * Get the intersection type between a plane and a box (AABB).\n * @param plane - The plane\n * @param box - The box\n * @returns The intersection type\n */ CollisionUtil.intersectsPlaneAndBox = function intersectsPlaneAndBox(plane, box) {\n var min = box.min, max = box.max;\n var normal = plane.normal;\n var front = CollisionUtil._tempVec30;\n var back = CollisionUtil._tempVec31;\n if (normal.x >= 0) {\n front.x = max.x;\n back.x = min.x;\n } else {\n front.x = min.x;\n back.x = max.x;\n }\n if (normal.y >= 0) {\n front.y = max.y;\n back.y = min.y;\n } else {\n front.y = min.y;\n back.y = max.y;\n }\n if (normal.z >= 0) {\n front.z = max.z;\n back.z = min.z;\n } else {\n front.z = min.z;\n back.z = max.z;\n }\n if (CollisionUtil.distancePlaneAndPoint(plane, front) < 0) {\n return PlaneIntersectionType.Back;\n }\n if (CollisionUtil.distancePlaneAndPoint(plane, back) > 0) {\n return PlaneIntersectionType.Front;\n }\n return PlaneIntersectionType.Intersecting;\n };\n /**\n * Get the intersection type between a plane and a sphere.\n * @param plane - The plane\n * @param sphere - The sphere\n * @returns The intersection type\n */ CollisionUtil.intersectsPlaneAndSphere = function intersectsPlaneAndSphere(plane, sphere) {\n var center = sphere.center, radius = sphere.radius;\n var distance = CollisionUtil.distancePlaneAndPoint(plane, center);\n if (distance > radius) {\n return PlaneIntersectionType.Front;\n }\n if (distance < -radius) {\n return PlaneIntersectionType.Back;\n }\n return PlaneIntersectionType.Intersecting;\n };\n /**\n * Get the intersection type between a ray and a plane.\n * @param ray - The ray\n * @param plane - The plane\n * @returns The distance from ray to plane if intersecting, -1 otherwise\n */ CollisionUtil.intersectsRayAndPlane = function intersectsRayAndPlane(ray, plane) {\n var normal = plane.normal;\n var zeroTolerance = MathUtil.zeroTolerance;\n var dir = Vector3.dot(normal, ray.direction);\n // Parallel\n if (Math.abs(dir) < zeroTolerance) {\n return -1;\n }\n var position = Vector3.dot(normal, ray.origin);\n var distance = (-plane.distance - position) / dir;\n if (distance < 0) {\n if (distance < -zeroTolerance) {\n return -1;\n }\n distance = 0;\n }\n return distance;\n };\n /**\n * Get the intersection type between a ray and a box (AABB).\n * @param ray - The ray\n * @param box - The box\n * @returns The distance from ray to box if intersecting, -1 otherwise\n */ CollisionUtil.intersectsRayAndBox = function intersectsRayAndBox(ray, box) {\n var zeroTolerance = MathUtil.zeroTolerance;\n var origin = ray.origin, direction = ray.direction;\n var min = box.min, max = box.max;\n var dirX = direction.x;\n var dirY = direction.y;\n var dirZ = direction.z;\n var oriX = origin.x;\n var oriY = origin.y;\n var oriZ = origin.z;\n var distance = 0;\n var tmax = Number.MAX_VALUE;\n if (Math.abs(dirX) < zeroTolerance) {\n if (oriX < min.x || oriX > max.x) {\n return -1;\n }\n } else {\n var inverse = 1.0 / dirX;\n var t1 = (min.x - oriX) * inverse;\n var t2 = (max.x - oriX) * inverse;\n if (t1 > t2) {\n var temp = t1;\n t1 = t2;\n t2 = temp;\n }\n distance = Math.max(t1, distance);\n tmax = Math.min(t2, tmax);\n if (distance > tmax) {\n return -1;\n }\n }\n if (Math.abs(dirY) < zeroTolerance) {\n if (oriY < min.y || oriY > max.y) {\n return -1;\n }\n } else {\n var inverse1 = 1.0 / dirY;\n var t11 = (min.y - oriY) * inverse1;\n var t21 = (max.y - oriY) * inverse1;\n if (t11 > t21) {\n var temp1 = t11;\n t11 = t21;\n t21 = temp1;\n }\n distance = Math.max(t11, distance);\n tmax = Math.min(t21, tmax);\n if (distance > tmax) {\n return -1;\n }\n }\n if (Math.abs(dirZ) < zeroTolerance) {\n if (oriZ < min.z || oriZ > max.z) {\n return -1;\n }\n } else {\n var inverse2 = 1.0 / dirZ;\n var t12 = (min.z - oriZ) * inverse2;\n var t22 = (max.z - oriZ) * inverse2;\n if (t12 > t22) {\n var temp2 = t12;\n t12 = t22;\n t22 = temp2;\n }\n distance = Math.max(t12, distance);\n tmax = Math.min(t22, tmax);\n if (distance > tmax) {\n return -1;\n }\n }\n return distance;\n };\n /**\n * Get the intersection type between a ray and a sphere.\n * @param ray - The ray\n * @param sphere - The sphere\n * @returns The distance from ray to sphere if intersecting, -1 otherwise\n */ CollisionUtil.intersectsRayAndSphere = function intersectsRayAndSphere(ray, sphere) {\n var origin = ray.origin, direction = ray.direction;\n var center = sphere.center, radius = sphere.radius;\n var m = CollisionUtil._tempVec30;\n Vector3.subtract(origin, center, m);\n var b = Vector3.dot(m, direction);\n var c = Vector3.dot(m, m) - radius * radius;\n if (b > 0 && c > 0) {\n return -1;\n }\n var discriminant = b * b - c;\n if (discriminant < 0) {\n return -1;\n }\n var distance = -b - Math.sqrt(discriminant);\n if (distance < 0) {\n distance = 0;\n }\n return distance;\n };\n /**\n * Check whether the boxes intersect.\n * @param boxA - The first box to check\n * @param boxB - The second box to check\n * @returns True if the boxes intersect, false otherwise\n */ CollisionUtil.intersectsBoxAndBox = function intersectsBoxAndBox(boxA, boxB) {\n if (boxA.min.x > boxB.max.x || boxB.min.x > boxA.max.x) {\n return false;\n }\n if (boxA.min.y > boxB.max.y || boxB.min.y > boxA.max.y) {\n return false;\n }\n return !(boxA.min.z > boxB.max.z || boxB.min.z > boxA.max.z);\n };\n /**\n * Check whether the spheres intersect.\n * @param sphereA - The first sphere to check\n * @param sphereB - The second sphere to check\n * @returns True if the spheres intersect, false otherwise\n */ CollisionUtil.intersectsSphereAndSphere = function intersectsSphereAndSphere(sphereA, sphereB) {\n var radiisum = sphereA.radius + sphereB.radius;\n return Vector3.distanceSquared(sphereA.center, sphereB.center) < radiisum * radiisum;\n };\n /**\n * Check whether the sphere and the box intersect.\n * @param sphere - The sphere to check\n * @param box - The box to check\n * @returns True if the sphere and the box intersect, false otherwise\n */ CollisionUtil.intersectsSphereAndBox = function intersectsSphereAndBox(sphere, box) {\n var center = sphere.center;\n var max = box.max;\n var min = box.min;\n var closestPoint = CollisionUtil._tempVec30;\n closestPoint.set(Math.max(min.x, Math.min(center.x, max.x)), Math.max(min.y, Math.min(center.y, max.y)), Math.max(min.z, Math.min(center.z, max.z)));\n var distance = Vector3.distanceSquared(center, closestPoint);\n return distance <= sphere.radius * sphere.radius;\n };\n /**\n * Get whether or not a specified bounding box intersects with this frustum (Contains or Intersects).\n * @param frustum - The frustum\n * @param box - The box\n * @returns True if bounding box intersects with this frustum, false otherwise\n */ CollisionUtil.intersectsFrustumAndBox = function intersectsFrustumAndBox(frustum, box) {\n var min = box.min, max = box.max;\n var p = CollisionUtil._tempVec30;\n for(var i = 0; i < 6; ++i){\n var plane = frustum.getPlane(i);\n var normal = plane.normal;\n p.set(normal.x >= 0 ? max.x : min.x, normal.y >= 0 ? max.y : min.y, normal.z >= 0 ? max.z : min.z);\n if (Vector3.dot(normal, p) < -plane.distance) {\n return false;\n }\n }\n return true;\n };\n /**\n * Get the containment type between a frustum and a point.\n * @param frustum - The frustum\n * @param point - The point\n * @returns The containment type\n */ CollisionUtil.frustumContainsPoint = function frustumContainsPoint(frustum, point) {\n var distance = CollisionUtil.distancePlaneAndPoint(frustum.near, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.far, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.left, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.right, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.top, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.bottom, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n return ContainmentType.Contains;\n };\n /**\n * Get the containment type between a frustum and a box (AABB).\n * @param frustum - The frustum\n * @param box - The box\n * @returns The containment type\n */ CollisionUtil.frustumContainsBox = function frustumContainsBox(frustum, box) {\n var min = box.min, max = box.max;\n var p = CollisionUtil._tempVec30;\n var n = CollisionUtil._tempVec31;\n var result = ContainmentType.Contains;\n for(var i = 0; i < 6; ++i){\n var plane = frustum.getPlane(i);\n var normal = plane.normal;\n if (normal.x >= 0) {\n p.x = max.x;\n n.x = min.x;\n } else {\n p.x = min.x;\n n.x = max.x;\n }\n if (normal.y >= 0) {\n p.y = max.y;\n n.y = min.y;\n } else {\n p.y = min.y;\n n.y = max.y;\n }\n if (normal.z >= 0) {\n p.z = max.z;\n n.z = min.z;\n } else {\n p.z = min.z;\n n.z = max.z;\n }\n if (CollisionUtil.intersectsPlaneAndPoint(plane, p) === PlaneIntersectionType.Back) {\n return ContainmentType.Disjoint;\n }\n if (CollisionUtil.intersectsPlaneAndPoint(plane, n) === PlaneIntersectionType.Back) {\n result = ContainmentType.Intersects;\n }\n }\n return result;\n };\n /**\n * Get the containment type between a frustum and a sphere.\n * @param frustum - The frustum\n * @param sphere - The sphere\n * @returns The containment type\n */ CollisionUtil.frustumContainsSphere = function frustumContainsSphere(frustum, sphere) {\n var result = ContainmentType.Contains;\n for(var i = 0; i < 6; ++i){\n var plane = frustum.getPlane(i);\n var intersectionType = CollisionUtil.intersectsPlaneAndSphere(plane, sphere);\n if (intersectionType === PlaneIntersectionType.Back) {\n return ContainmentType.Disjoint;\n } else if (intersectionType === PlaneIntersectionType.Intersecting) {\n result = ContainmentType.Intersects;\n break;\n }\n }\n return result;\n };\n return CollisionUtil;\n}();\n(function() {\n CollisionUtil._tempVec30 = new Vector3();\n})();\n(function() {\n CollisionUtil._tempVec31 = new Vector3();\n})();\n(function() {\n CollisionUtil._tempVec32 = new Vector3();\n})();\n\n/**\n * Represents a plane in three-dimensional space.\n */ var Plane = /*#__PURE__*/ function() {\n function Plane(normal, distance) {\n if (normal === void 0) normal = null;\n if (distance === void 0) distance = 0;\n /** The normal of the plane. */ this.normal = new Vector3();\n /** The distance of the plane along its normal to the origin. */ this.distance = 0;\n normal && this.normal.copyFrom(normal);\n this.distance = distance;\n }\n var _proto = Plane.prototype;\n /**\n * Normalize the normal vector of this plane.\n * @returns The plane after normalize\n */ _proto.normalize = function normalize() {\n Plane.normalize(this, this);\n return this;\n };\n /**\n * Creates a clone of this plane.\n * @returns A clone of this plane\n */ _proto.clone = function clone() {\n var out = new Plane();\n out.copyFrom(this);\n return out;\n };\n /**\n * Copy this plane from the specified plane.\n * @param source - The specified plane\n * @returns This plane\n */ _proto.copyFrom = function copyFrom(source) {\n this.normal.copyFrom(source.normal);\n this.distance = source.distance;\n return this;\n };\n /**\n * Normalize the normal vector of the specified plane.\n * @param p - The specified plane\n * @param out - A normalized version of the specified plane\n */ Plane.normalize = function normalize(p, out) {\n var normal = p.normal;\n var factor = 1.0 / normal.length();\n Vector3.scale(normal, factor, out.normal);\n out.distance = p.distance * factor;\n };\n /**\n * Calculate the plane that contains the three specified points.\n * @param point0 - The first point\n * @param point1 - The second point\n * @param point2 - The third point\n * @param out - The calculated plane\n */ Plane.fromPoints = function fromPoints(point0, point1, point2, out) {\n var x0 = point0.x;\n var y0 = point0.y;\n var z0 = point0.z;\n var x1 = point1.x - x0;\n var y1 = point1.y - y0;\n var z1 = point1.z - z0;\n var x2 = point2.x - x0;\n var y2 = point2.y - y0;\n var z2 = point2.z - z0;\n var yz = y1 * z2 - z1 * y2;\n var xz = z1 * x2 - x1 * z2;\n var xy = x1 * y2 - y1 * x2;\n var invPyth = 1.0 / Math.sqrt(yz * yz + xz * xz + xy * xy);\n var x = yz * invPyth;\n var y = xz * invPyth;\n var z = xy * invPyth;\n var normal = out.normal;\n normal.x = x;\n normal.y = y;\n normal.z = z;\n out.distance = -(x * x0 + y * y0 + z * z0);\n };\n return Plane;\n}();\n\n/**\n * A bounding frustum.\n */ var BoundingFrustum = /*#__PURE__*/ function() {\n function BoundingFrustum(matrix) {\n if (matrix === void 0) matrix = null;\n this.near = new Plane();\n this.far = new Plane();\n this.left = new Plane();\n this.right = new Plane();\n this.top = new Plane();\n this.bottom = new Plane();\n matrix && this.calculateFromMatrix(matrix);\n }\n var _proto = BoundingFrustum.prototype;\n /**\n * Get the plane by the given frustum face.\n * @param face - The frustum face\n * @returns The plane get\n */ _proto.getPlane = function getPlane(face) {\n switch(face){\n case FrustumFace.Near:\n return this.near;\n case FrustumFace.Far:\n return this.far;\n case FrustumFace.Left:\n return this.left;\n case FrustumFace.Right:\n return this.right;\n case FrustumFace.Bottom:\n return this.bottom;\n case FrustumFace.Top:\n return this.top;\n default:\n return null;\n }\n };\n /**\n * Update all planes from the given matrix.\n * @param matrix - The given view-projection matrix\n */ _proto.calculateFromMatrix = function calculateFromMatrix(matrix) {\n var me = matrix.elements;\n var m11 = me[0];\n var m12 = me[1];\n var m13 = me[2];\n var m14 = me[3];\n var m21 = me[4];\n var m22 = me[5];\n var m23 = me[6];\n var m24 = me[7];\n var m31 = me[8];\n var m32 = me[9];\n var m33 = me[10];\n var m34 = me[11];\n var m41 = me[12];\n var m42 = me[13];\n var m43 = me[14];\n var m44 = me[15];\n // near\n var nearNormal = this.near.normal;\n nearNormal.set(m14 + m13, m24 + m23, m34 + m33);\n this.near.distance = m44 + m43;\n this.near.normalize();\n // far\n var farNormal = this.far.normal;\n farNormal.set(m14 - m13, m24 - m23, m34 - m33);\n this.far.distance = m44 - m43;\n this.far.normalize();\n // left\n var leftNormal = this.left.normal;\n leftNormal.set(m14 + m11, m24 + m21, m34 + m31);\n this.left.distance = m44 + m41;\n this.left.normalize();\n // right\n var rightNormal = this.right.normal;\n rightNormal.set(m14 - m11, m24 - m21, m34 - m31);\n this.right.distance = m44 - m41;\n this.right.normalize();\n // bottom\n var bottomNormal = this.bottom.normal;\n bottomNormal.set(m14 + m12, m24 + m22, m34 + m32);\n this.bottom.distance = m44 + m42;\n this.bottom.normalize();\n // top\n var topNormal = this.top.normal;\n topNormal.set(m14 - m12, m24 - m22, m34 - m32);\n this.top.distance = m44 - m42;\n this.top.normalize();\n };\n /**\n * Get whether or not a specified bounding box intersects with this frustum (Contains or Intersects).\n * @param box - The box for testing\n * @returns True if bounding box intersects with this frustum, false otherwise\n */ _proto.intersectsBox = function intersectsBox(box) {\n return CollisionUtil.intersectsFrustumAndBox(this, box);\n };\n /**\n * Get whether or not a specified bounding sphere intersects with this frustum (Contains or Intersects).\n * @param sphere - The sphere for testing\n * @returns True if bounding sphere intersects with this frustum, false otherwise\n */ _proto.intersectsSphere = function intersectsSphere(sphere) {\n return CollisionUtil.frustumContainsSphere(this, sphere) !== ContainmentType.Disjoint;\n };\n /**\n * Creates a clone of this frustum.\n * @returns A clone of this frustum\n */ _proto.clone = function clone() {\n var out = new BoundingFrustum();\n out.copyFrom(this);\n return out;\n };\n /**\n * Copy this frustum from the specified frustum.\n * @param source - The specified frustum\n * @returns This frustum\n */ _proto.copyFrom = function copyFrom(source) {\n this.near.copyFrom(source.near);\n this.far.copyFrom(source.far);\n this.left.copyFrom(source.left);\n this.right.copyFrom(source.right);\n this.bottom.copyFrom(source.bottom);\n this.top.copyFrom(source.top);\n return this;\n };\n return BoundingFrustum;\n}();\n\n/**\n * Represents a 3x3 mathematical matrix.\n */ var Matrix3x3 = /*#__PURE__*/ function() {\n function Matrix3x3(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n if (m11 === void 0) m11 = 1;\n if (m12 === void 0) m12 = 0;\n if (m13 === void 0) m13 = 0;\n if (m21 === void 0) m21 = 0;\n if (m22 === void 0) m22 = 1;\n if (m23 === void 0) m23 = 0;\n if (m31 === void 0) m31 = 0;\n if (m32 === void 0) m32 = 0;\n if (m33 === void 0) m33 = 1;\n /**\n * An array containing the elements of the matrix (column matrix).\n * @remarks\n * elements[0] first column and first row value m11\n * elements[1] first column and second row value m12\n * elements[2] first column and third row value m13\n * elements[3] second column and first row value m21\n * and so on\n */ this.elements = new Float32Array(9);\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m21;\n e[4] = m22;\n e[5] = m23;\n e[6] = m31;\n e[7] = m32;\n e[8] = m33;\n }\n var _proto = Matrix3x3.prototype;\n /**\n * Set the value of this matrix, and return this matrix.\n * @param m11\n * @param m12\n * @param m13\n * @param m21\n * @param m22\n * @param m23\n * @param m31\n * @param m32\n * @param m33\n * @returns This matrix\n */ _proto.set = function set(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m21;\n e[4] = m22;\n e[5] = m23;\n e[6] = m31;\n e[7] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * Determines the sum of this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the sum of the two matrices\n */ _proto.add = function add(right) {\n Matrix3x3.add(this, right, this);\n return this;\n };\n /**\n * Determines the difference between this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the difference between the two matrices\n */ _proto.subtract = function subtract(right) {\n Matrix3x3.subtract(this, right, this);\n return this;\n };\n /**\n * Determines the product of this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the product of the two matrices\n */ _proto.multiply = function multiply(right) {\n Matrix3x3.multiply(this, right, this);\n return this;\n };\n /**\n * Calculate a determinant of this matrix.\n * @returns The determinant of this matrix\n */ _proto.determinant = function determinant() {\n var e = this.elements;\n var a11 = e[0], a12 = e[1], a13 = e[2];\n var a21 = e[3], a22 = e[4], a23 = e[5];\n var a31 = e[6], a32 = e[7], a33 = e[8];\n var b12 = a33 * a22 - a23 * a32;\n var b22 = -a33 * a21 + a23 * a31;\n var b32 = a32 * a21 - a22 * a31;\n return a11 * b12 + a12 * b22 + a13 * b32;\n };\n /**\n * Identity this matrix.\n * @returns This matrix after identity\n */ _proto.identity = function identity() {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 0;\n e[4] = 1;\n e[5] = 0;\n e[6] = 0;\n e[7] = 0;\n e[8] = 1;\n return this;\n };\n /**\n * Invert the matrix.\n * @returns The matrix after invert\n */ _proto.invert = function invert() {\n Matrix3x3.invert(this, this);\n return this;\n };\n /**\n * This matrix rotates around an angle.\n * @param r - The rotation angle in radians\n * @returns This matrix after rotate\n */ _proto.rotate = function rotate(r) {\n Matrix3x3.rotate(this, r, this);\n return this;\n };\n /**\n * Scale this matrix by a given vector.\n * @param s - The given vector\n * @returns This matrix after scale\n */ _proto.scale = function scale(s) {\n Matrix3x3.scale(this, s, this);\n return this;\n };\n /**\n * Translate this matrix by a given vector.\n * @param translation - The given vector\n * @returns This matrix after translate\n */ _proto.translate = function translate(translation) {\n Matrix3x3.translate(this, translation, this);\n return this;\n };\n /**\n * Calculate the transpose of this matrix.\n * @returns This matrix after transpose\n */ _proto.transpose = function transpose() {\n Matrix3x3.transpose(this, this);\n return this;\n };\n /**\n * Creates a clone of this matrix.\n * @returns A clone of this matrix\n */ _proto.clone = function clone() {\n var e = this.elements;\n var ret = new Matrix3x3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n return ret;\n };\n /**\n * Copy this matrix from the specified matrix.\n * @param source - The specified matrix\n * @returns This matrix\n */ _proto.copyFrom = function copyFrom(source) {\n var e = this.elements;\n var se = source.elements;\n e[0] = se[0];\n e[1] = se[1];\n e[2] = se[2];\n e[3] = se[3];\n e[4] = se[4];\n e[5] = se[5];\n e[6] = se[6];\n e[7] = se[7];\n e[8] = se[8];\n return this;\n };\n /**\n * Copy the value of this matrix from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This matrix\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n var srce = this.elements;\n for(var i = 0; i < 12; i++){\n srce[i] = array[i + offset];\n }\n return this;\n };\n /**\n * Copy the value of this matrix to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n var e = this.elements;\n out[outOffset] = e[0];\n out[outOffset + 1] = e[1];\n out[outOffset + 2] = e[2];\n out[outOffset + 3] = e[3];\n out[outOffset + 4] = e[4];\n out[outOffset + 5] = e[5];\n out[outOffset + 6] = e[6];\n out[outOffset + 7] = e[7];\n out[outOffset + 8] = e[8];\n };\n /**\n * Copy the value of this 3x3 matrix from the specified 4x4 matrix.\n * upper-left principle\n * @param source - The specified 4x4 matrix\n * @returns This 3x3 matrix\n */ _proto.copyFromMatrix = function copyFromMatrix(source) {\n var ae = source.elements;\n var e = this.elements;\n e[0] = ae[0];\n e[1] = ae[1];\n e[2] = ae[2];\n e[3] = ae[4];\n e[4] = ae[5];\n e[5] = ae[6];\n e[6] = ae[8];\n e[7] = ae[9];\n e[8] = ae[10];\n return this;\n };\n /**\n * Determines the sum of two matrices.\n * @param left - The first matrix to add\n * @param right - The second matrix to add\n * @param out - The sum of two matrices\n */ Matrix3x3.add = function add(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n oe[0] = le[0] + re[0];\n oe[1] = le[1] + re[1];\n oe[2] = le[2] + re[2];\n oe[3] = le[3] + re[3];\n oe[4] = le[4] + re[4];\n oe[5] = le[5] + re[5];\n oe[6] = le[6] + re[6];\n oe[7] = le[7] + re[7];\n oe[8] = le[8] + re[8];\n };\n /**\n * Determines the difference between two matrices.\n * @param left - The first matrix to subtract\n * @param right - The second matrix to subtract\n * @param out - The difference between two matrices\n */ Matrix3x3.subtract = function subtract(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n oe[0] = le[0] - re[0];\n oe[1] = le[1] - re[1];\n oe[2] = le[2] - re[2];\n oe[3] = le[3] - re[3];\n oe[4] = le[4] - re[4];\n oe[5] = le[5] - re[5];\n oe[6] = le[6] - re[6];\n oe[7] = le[7] - re[7];\n oe[8] = le[8] - re[8];\n };\n /**\n * Determines the product of two matrices.\n * @param left - The first matrix to multiply\n * @param right - The second matrix to multiply\n * @param out - The product of two matrices\n */ Matrix3x3.multiply = function multiply(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n var l11 = le[0], l12 = le[1], l13 = le[2];\n var l21 = le[3], l22 = le[4], l23 = le[5];\n var l31 = le[6], l32 = le[7], l33 = le[8];\n var r11 = re[0], r12 = re[1], r13 = re[2];\n var r21 = re[3], r22 = re[4], r23 = re[5];\n var r31 = re[6], r32 = re[7], r33 = re[8];\n oe[0] = l11 * r11 + l21 * r12 + l31 * r13;\n oe[1] = l12 * r11 + l22 * r12 + l32 * r13;\n oe[2] = l13 * r11 + l23 * r12 + l33 * r13;\n oe[3] = l11 * r21 + l21 * r22 + l31 * r23;\n oe[4] = l12 * r21 + l22 * r22 + l32 * r23;\n oe[5] = l13 * r21 + l23 * r22 + l33 * r23;\n oe[6] = l11 * r31 + l21 * r32 + l31 * r33;\n oe[7] = l12 * r31 + l22 * r32 + l32 * r33;\n oe[8] = l13 * r31 + l23 * r32 + l33 * r33;\n };\n /**\n * Determines whether the specified matrices are equals.\n * @param left - The first matrix to compare\n * @param right - The second matrix to compare\n * @returns True if the specified matrices are equals, false otherwise\n */ Matrix3x3.equals = function equals(left, right) {\n var le = left.elements;\n var re = right.elements;\n return MathUtil.equals(le[0], re[0]) && MathUtil.equals(le[1], re[1]) && MathUtil.equals(le[2], re[2]) && MathUtil.equals(le[3], re[3]) && MathUtil.equals(le[4], re[4]) && MathUtil.equals(le[5], re[5]) && MathUtil.equals(le[6], re[6]) && MathUtil.equals(le[7], re[7]) && MathUtil.equals(le[8], re[8]);\n };\n /**\n * Performs a linear interpolation between two matrices.\n * @param start - The first matrix\n * @param end - The second matrix\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two matrices\n */ Matrix3x3.lerp = function lerp(start, end, t, out) {\n var se = start.elements;\n var ee = end.elements;\n var oe = out.elements;\n var inv = 1.0 - t;\n oe[0] = se[0] * inv + ee[0] * t;\n oe[1] = se[1] * inv + ee[1] * t;\n oe[2] = se[2] * inv + ee[2] * t;\n oe[3] = se[3] * inv + ee[3] * t;\n oe[4] = se[4] * inv + ee[4] * t;\n oe[5] = se[5] * inv + ee[5] * t;\n oe[6] = se[6] * inv + ee[6] * t;\n oe[7] = se[7] * inv + ee[7] * t;\n oe[8] = se[8] * inv + ee[8] * t;\n };\n /**\n * Calculate a rotation matrix from a quaternion.\n * @param quaternion - The quaternion used to calculate the matrix\n * @param out - The calculated rotation matrix\n */ Matrix3x3.rotationQuaternion = function rotationQuaternion(quaternion, out) {\n var oe = out.elements;\n var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n oe[0] = 1 - yy - zz;\n oe[3] = yx - wz;\n oe[6] = zx + wy;\n oe[1] = yx + wz;\n oe[4] = 1 - xx - zz;\n oe[7] = zy - wx;\n oe[2] = zx - wy;\n oe[5] = zy + wx;\n oe[8] = 1 - xx - yy;\n };\n /**\n * Calculate a matrix from scale vector.\n * @param s - The scale vector\n * @param out - The calculated matrix\n */ Matrix3x3.scaling = function scaling(s, out) {\n var oe = out.elements;\n oe[0] = s._x;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = s._y;\n oe[5] = 0;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 1;\n };\n /**\n * Calculate a matrix from translation vector.\n * @param translation - The translation vector\n * @param out - The calculated matrix\n */ Matrix3x3.translation = function translation(translation, out) {\n var oe = out.elements;\n oe[0] = 1;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 1;\n oe[5] = 0;\n oe[6] = translation._x;\n oe[7] = translation._y;\n oe[8] = 1;\n };\n /**\n * Calculate the inverse of the specified matrix.\n * @param a - The matrix whose inverse is to be calculated\n * @param out - The inverse of the specified matrix\n */ Matrix3x3.invert = function invert(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2];\n var a21 = ae[3], a22 = ae[4], a23 = ae[5];\n var a31 = ae[6], a32 = ae[7], a33 = ae[8];\n var b12 = a33 * a22 - a23 * a32;\n var b22 = -a33 * a21 + a23 * a31;\n var b32 = a32 * a21 - a22 * a31;\n var det = a11 * b12 + a12 * b22 + a13 * b32;\n if (!det) {\n return;\n }\n det = 1.0 / det;\n oe[0] = b12 * det;\n oe[1] = (-a33 * a12 + a13 * a32) * det;\n oe[2] = (a23 * a12 - a13 * a22) * det;\n oe[3] = b22 * det;\n oe[4] = (a33 * a11 - a13 * a31) * det;\n oe[5] = (-a23 * a11 + a13 * a21) * det;\n oe[6] = b32 * det;\n oe[7] = (-a32 * a11 + a12 * a31) * det;\n oe[8] = (a22 * a11 - a12 * a21) * det;\n };\n /**\n * Calculate a 3x3 normal matrix from a 4x4 matrix.\n * @remarks The calculation process is the transpose matrix of the inverse matrix.\n * @param mat4 - The 4x4 matrix\n * @param out - THe 3x3 normal matrix\n */ Matrix3x3.normalMatrix = function normalMatrix(mat4, out) {\n var ae = mat4.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2], a14 = ae[3];\n var a21 = ae[4], a22 = ae[5], a23 = ae[6], a24 = ae[7];\n var a31 = ae[8], a32 = ae[9], a33 = ae[10], a34 = ae[11];\n var a41 = ae[12], a42 = ae[13], a43 = ae[14], a44 = ae[15];\n var b00 = a11 * a22 - a12 * a21;\n var b01 = a11 * a23 - a13 * a21;\n var b02 = a11 * a24 - a14 * a21;\n var b03 = a12 * a23 - a13 * a22;\n var b04 = a12 * a24 - a14 * a22;\n var b05 = a13 * a24 - a14 * a23;\n var b06 = a31 * a42 - a32 * a41;\n var b07 = a31 * a43 - a33 * a41;\n var b08 = a31 * a44 - a34 * a41;\n var b09 = a32 * a43 - a33 * a42;\n var b10 = a32 * a44 - a34 * a42;\n var b11 = a33 * a44 - a34 * a43;\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n oe[0] = (a22 * b11 - a23 * b10 + a24 * b09) * det;\n oe[1] = (a23 * b08 - a21 * b11 - a24 * b07) * det;\n oe[2] = (a21 * b10 - a22 * b08 + a24 * b06) * det;\n oe[3] = (a13 * b10 - a12 * b11 - a14 * b09) * det;\n oe[4] = (a11 * b11 - a13 * b08 + a14 * b07) * det;\n oe[5] = (a12 * b08 - a11 * b10 - a14 * b06) * det;\n oe[6] = (a42 * b05 - a43 * b04 + a44 * b03) * det;\n oe[7] = (a43 * b02 - a41 * b05 - a44 * b01) * det;\n oe[8] = (a41 * b04 - a42 * b02 + a44 * b00) * det;\n };\n /**\n * The specified matrix rotates around an angle.\n * @param a - The specified matrix\n * @param r - The rotation angle in radians\n * @param out - The rotated matrix\n */ Matrix3x3.rotate = function rotate(a, r, out) {\n var ae = a.elements;\n var oe = out.elements;\n var s = Math.sin(r);\n var c = Math.cos(r);\n var a11 = ae[0], a12 = ae[1], a13 = ae[2];\n var a21 = ae[3], a22 = ae[4], a23 = ae[5];\n var a31 = ae[6], a32 = ae[7], a33 = ae[8];\n oe[0] = c * a11 + s * a21;\n oe[1] = c * a12 + s * a22;\n oe[2] = c * a13 + s * a23;\n oe[3] = c * a21 - s * a11;\n oe[4] = c * a22 - s * a12;\n oe[5] = c * a23 - s * a13;\n oe[6] = a31;\n oe[7] = a32;\n oe[8] = a33;\n };\n /**\n * Scale a matrix by a given vector.\n * @param m - The matrix\n * @param s - The given vector\n * @param out - The scaled matrix\n */ Matrix3x3.scale = function scale(m, s, out) {\n var x = s._x, y = s._y;\n var ae = m.elements;\n var oe = out.elements;\n oe[0] = x * ae[0];\n oe[1] = x * ae[1];\n oe[2] = x * ae[2];\n oe[3] = y * ae[3];\n oe[4] = y * ae[4];\n oe[5] = y * ae[5];\n oe[6] = ae[6];\n oe[7] = ae[7];\n oe[8] = ae[8];\n };\n /**\n * Translate a matrix by a given vector.\n * @param m - The matrix\n * @param translation - The given vector\n * @param out - The translated matrix\n */ Matrix3x3.translate = function translate(m, translation, out) {\n var x = translation._x, y = translation._y;\n var ae = m.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2];\n var a21 = ae[3], a22 = ae[4], a23 = ae[5];\n var a31 = ae[6], a32 = ae[7], a33 = ae[8];\n oe[0] = a11;\n oe[1] = a12;\n oe[2] = a13;\n oe[3] = a21;\n oe[4] = a22;\n oe[5] = a23;\n oe[6] = x * a11 + y * a21 + a31;\n oe[7] = x * a12 + y * a22 + a32;\n oe[8] = x * a13 + y * a23 + a33;\n };\n /**\n * Calculate the transpose of the specified matrix.\n * @param a - The specified matrix\n * @param out - The transpose of the specified matrix\n */ Matrix3x3.transpose = function transpose(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n if (out === a) {\n var a12 = ae[1];\n var a13 = ae[2];\n var a23 = ae[5];\n oe[1] = ae[3];\n oe[2] = ae[6];\n oe[3] = a12;\n oe[5] = ae[7];\n oe[6] = a13;\n oe[7] = a23;\n } else {\n oe[0] = ae[0];\n oe[1] = ae[3];\n oe[2] = ae[6];\n oe[3] = ae[1];\n oe[4] = ae[4];\n oe[5] = ae[7];\n oe[6] = ae[2];\n oe[7] = ae[5];\n oe[8] = ae[8];\n }\n };\n return Matrix3x3;\n}();\n\n/**\n * Represents a four dimensional mathematical quaternion.\n */ var Quaternion = /*#__PURE__*/ function() {\n function Quaternion(x, y, z, w) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (z === void 0) z = 0;\n if (w === void 0) w = 1;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n var _proto = Quaternion.prototype;\n /**\n * Set the value of this quaternion, and return this quaternion.\n * @param x - The x component of the quaternion\n * @param y - The y component of the quaternion\n * @param z - The z component of the quaternion\n * @param w - The w component of the quaternion\n * @returns This quaternion\n */ _proto.set = function set(x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Transforms this quaternion into its conjugated version.\n * @returns This quaternion\n */ _proto.conjugate = function conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Get the rotation axis and rotation angle of the quaternion (unit: radians).\n * @param out - The axis as an output parameter\n * @returns The rotation angle (unit: radians)\n */ _proto.getAxisAngle = function getAxisAngle(out) {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z;\n var length = _x * _x + _y * _y + _z * _z;\n if (length < MathUtil.zeroTolerance) {\n out._x = 1;\n out._y = 0;\n out._z = 0;\n return 0;\n } else {\n var inv = 1.0 / length;\n out._x = this._x * inv;\n out._y = this._y * inv;\n out._z = this._z * inv;\n return Math.acos(this._w) * 2.0;\n }\n };\n /**\n * Identity this quaternion.\n * @returns This quaternion after identity\n */ _proto.identity = function identity() {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this quaternion.\n * @returns The length of this quaternion\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n };\n /**\n * Calculates the squared length of this quaternion.\n * @returns The squared length of this quaternion\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return _x * _x + _y * _y + _z * _z + _w * _w;\n };\n /**\n * Converts this quaternion into a unit quaternion.\n * @returns This quaternion\n */ _proto.normalize = function normalize() {\n Quaternion.normalize(this, this);\n return this;\n };\n /**\n * Get the euler of this quaternion.\n * @param out - The euler (in radians) as an output parameter\n * @returns Euler x->pitch y->yaw z->roll\n */ _proto.toEuler = function toEuler(out) {\n this._toYawPitchRoll(out);\n var t = out._x;\n out._x = out._y;\n out._y = t;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Get the euler of this quaternion.\n * @param out - The euler (in radians) as an output parameter\n * @returns Euler x->yaw y->pitch z->roll\n */ _proto.toYawPitchRoll = function toYawPitchRoll(out) {\n this._toYawPitchRoll(out);\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Calculate this quaternion rotate around X axis.\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateX = function rotateX(rad) {\n Quaternion.rotateX(this, rad, this);\n return this;\n };\n /**\n * Calculate this quaternion rotate around Y axis.\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateY = function rotateY(rad) {\n Quaternion.rotateY(this, rad, this);\n return this;\n };\n /**\n * Calculate this quaternion rotate around Z axis.\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateZ = function rotateZ(rad) {\n Quaternion.rotateZ(this, rad, this);\n return this;\n };\n /**\n * Calculate this quaternion rotates around an arbitrary axis.\n * @param axis - The axis\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotationAxisAngle = function rotationAxisAngle(axis, rad) {\n Quaternion.rotationAxisAngle(axis, rad, this);\n return this;\n };\n /**\n * Determines the product of this quaternion and the specified quaternion.\n * @param quat - The specified quaternion\n * @returns The product of the two quaternions\n */ _proto.multiply = function multiply(quat) {\n Quaternion.multiply(this, quat, this);\n return this;\n };\n /**\n * Invert this quaternion.\n * @returns This quaternion after invert\n */ _proto.invert = function invert() {\n Quaternion.invert(this, this);\n return this;\n };\n /**\n * Determines the dot product of this quaternion and the specified quaternion.\n * @param quat - The specified quaternion\n * @returns The dot product of two quaternions\n */ _proto.dot = function dot(quat) {\n return Quaternion.dot(this, quat);\n };\n /**\n * Performs a linear blend between this quaternion and the specified quaternion.\n * @param quat - The specified quaternion\n * @param t - The blend amount where 0 returns this and 1 quat\n * @returns - The result of linear blending between two quaternions\n */ _proto.lerp = function lerp(quat, t) {\n Quaternion.lerp(this, quat, t, this);\n return this;\n };\n /**\n * Calculate this quaternion rotation around an arbitrary axis.\n * @param axis - The axis\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateAxisAngle = function rotateAxisAngle(axis, rad) {\n Quaternion._tempQuat1.rotationAxisAngle(axis, rad);\n this.multiply(Quaternion._tempQuat1);\n return this;\n };\n /**\n * Creates a clone of this quaternion.\n * @returns A clone of this quaternion\n */ _proto.clone = function clone() {\n return new Quaternion(this._x, this._y, this._z, this._w);\n };\n /**\n * Copy this quaternion from the specified quaternion.\n * @param source - The specified quaternion\n * @returns This quaternion\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._z = source.z;\n this._w = source.w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy this quaternion to the specified quaternion.\n * @param target - The specified quaternion\n * @returns This specified quaternion\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n target.z = this._z;\n target.w = this._w;\n return target;\n };\n /**\n * Copy the value of this quaternion from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This quaternion\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this quaternion to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n out[outOffset + 2] = this._z;\n out[outOffset + 3] = this._w;\n };\n /**\n * Serialize this quaternion to a JSON representation.\n * @returns A JSON Object representation of this quaternion\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y,\n z: this._z,\n w: this._w\n };\n };\n _proto._toYawPitchRoll = function _toYawPitchRoll(out) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n var _this = this, x = _this._x, y = _this._y, z = _this._z, w = _this._w;\n var xx = x * x;\n var yy = y * y;\n var zz = z * z;\n var ww = w * w;\n var unit = xx + yy + zz + ww;\n var test = 2 * (x * w - y * z);\n if (test > (1 - MathUtil.zeroTolerance) * unit) {\n out._x = Math.atan2(2.0 * (w * y - x * z), xx + ww - yy - zz);\n out._y = Math.PI / 2;\n out._z = 0;\n } else if (test < -(1 - MathUtil.zeroTolerance) * unit) {\n out._x = Math.atan2(2.0 * (w * y - x * z), xx + ww - yy - zz);\n out._y = -Math.PI / 2;\n out._z = 0;\n } else {\n out._x = Math.atan2(2.0 * (z * x + y * w), zz + ww - yy - xx);\n out._y = Math.asin(test / unit);\n out._z = Math.atan2(2.0 * (x * y + z * w), yy + ww - zz - xx);\n }\n };\n /**\n * Determines the sum of two quaternions.\n * @param left - The first quaternion to add\n * @param right - The second quaternion to add\n * @param out - The sum of two quaternions\n */ Quaternion.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._z = left._z + right._z;\n out._w = left._w + right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two quaternions.\n * @param left - The first quaternion to multiply\n * @param right - The second quaternion to multiply\n * @param out - The product of two quaternions\n */ Quaternion.multiply = function multiply(left, right, out) {\n var ax = left._x, ay = left._y, az = left._z, aw = left._w;\n var bx = right._x, by = right._y, bz = right._z, bw = right._w;\n out._x = ax * bw + aw * bx + ay * bz - az * by;\n out._y = ay * bw + aw * by + az * bx - ax * bz;\n out._z = az * bw + aw * bz + ax * by - ay * bx;\n out._w = aw * bw - ax * bx - ay * by - az * bz;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate quaternion that contains conjugated version of the specified quaternion.\n * @param a - The specified quaternion\n * @param out - The conjugate version of the specified quaternion\n */ Quaternion.conjugate = function conjugate(a, out) {\n out._x = -a._x;\n out._y = -a._y;\n out._z = -a._z;\n out._w = a._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two quaternions.\n * @param left - The first quaternion to dot\n * @param right - The second quaternion to dot\n * @returns The dot product of two quaternions\n */ Quaternion.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y + left._z * right._z + left._w * right._w;\n };\n /**\n * Determines whether the specified quaternions are equals.\n * @param left - The first quaternion to compare\n * @param right - The second quaternion to compare\n * @returns True if the specified quaternions are equals, false otherwise\n */ Quaternion.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y) && MathUtil.equals(left._z, right._z) && MathUtil.equals(left._w, right._w);\n };\n /**\n * Calculate a quaternion rotates around an arbitrary axis.\n * @param axis - The axis\n * @param rad - The rotation angle in radians\n * @param out - The quaternion after rotate\n */ Quaternion.rotationAxisAngle = function rotationAxisAngle(axis, rad, out) {\n var normalAxis = Quaternion._tempVector3;\n Vector3.normalize(axis, normalAxis);\n rad *= 0.5;\n var s = Math.sin(rad);\n out._x = normalAxis._x * s;\n out._y = normalAxis._y * s;\n out._z = normalAxis._z * s;\n out._w = Math.cos(rad);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion rotates around x, y, z axis (pitch/yaw/roll).\n * @param x - The radian of rotation around X (pitch)\n * @param y - The radian of rotation around Y (yaw)\n * @param z - The radian of rotation around Z (roll)\n * @param out - The calculated quaternion\n */ Quaternion.rotationEuler = function rotationEuler(x, y, z, out) {\n Quaternion.rotationYawPitchRoll(y, x, z, out);\n };\n /**\n * Calculate a quaternion from the specified yaw, pitch and roll angles.\n * @param yaw - Yaw around the y axis in radians\n * @param pitch - Pitch around the x axis in radians\n * @param roll - Roll around the z axis in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationYawPitchRoll = function rotationYawPitchRoll(yaw, pitch, roll, out) {\n var halfRoll = roll * 0.5;\n var halfPitch = pitch * 0.5;\n var halfYaw = yaw * 0.5;\n var sinRoll = Math.sin(halfRoll);\n var cosRoll = Math.cos(halfRoll);\n var sinPitch = Math.sin(halfPitch);\n var cosPitch = Math.cos(halfPitch);\n var sinYaw = Math.sin(halfYaw);\n var cosYaw = Math.cos(halfYaw);\n var cosYawPitch = cosYaw * cosPitch;\n var sinYawPitch = sinYaw * sinPitch;\n out._x = cosYaw * sinPitch * cosRoll + sinYaw * cosPitch * sinRoll;\n out._y = sinYaw * cosPitch * cosRoll - cosYaw * sinPitch * sinRoll;\n out._z = cosYawPitch * sinRoll - sinYawPitch * cosRoll;\n out._w = cosYawPitch * cosRoll + sinYawPitch * sinRoll;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion from the specified 3x3 matrix.\n * @param m - The specified 3x3 matrix\n * @param out - The calculated quaternion\n */ Quaternion.rotationMatrix3x3 = function rotationMatrix3x3(m, out) {\n var me = m.elements;\n var m11 = me[0], m12 = me[1], m13 = me[2];\n var m21 = me[3], m22 = me[4], m23 = me[5];\n var m31 = me[6], m32 = me[7], m33 = me[8];\n var scale = m11 + m22 + m33;\n var sqrt, half;\n if (scale > 0) {\n sqrt = Math.sqrt(scale + 1.0);\n out._w = sqrt * 0.5;\n sqrt = 0.5 / sqrt;\n out._x = (m23 - m32) * sqrt;\n out._y = (m31 - m13) * sqrt;\n out._z = (m12 - m21) * sqrt;\n } else if (m11 >= m22 && m11 >= m33) {\n sqrt = Math.sqrt(1.0 + m11 - m22 - m33);\n half = 0.5 / sqrt;\n out._x = 0.5 * sqrt;\n out._y = (m12 + m21) * half;\n out._z = (m13 + m31) * half;\n out._w = (m23 - m32) * half;\n } else if (m22 > m33) {\n sqrt = Math.sqrt(1.0 + m22 - m11 - m33);\n half = 0.5 / sqrt;\n out._x = (m21 + m12) * half;\n out._y = 0.5 * sqrt;\n out._z = (m32 + m23) * half;\n out._w = (m31 - m13) * half;\n } else {\n sqrt = Math.sqrt(1.0 + m33 - m11 - m22);\n half = 0.5 / sqrt;\n out._x = (m13 + m31) * half;\n out._y = (m23 + m32) * half;\n out._z = 0.5 * sqrt;\n out._w = (m12 - m21) * half;\n }\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate the inverse of the specified quaternion.\n * @param a - The quaternion whose inverse is to be calculated\n * @param out - The inverse of the specified quaternion\n */ Quaternion.invert = function invert(a, out) {\n var x = a._x, y = a._y, z = a._z, w = a._w;\n var dot = x * x + y * y + z * z + w * w;\n if (dot > MathUtil.zeroTolerance) {\n var invDot = 1.0 / dot;\n out._x = -x * invDot;\n out._y = -y * invDot;\n out._z = -z * invDot;\n out._w = w * invDot;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Performs a linear blend between two quaternions.\n * @param start - The first quaternion\n * @param end - The second quaternion\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two quaternions\n */ Quaternion.lerp = function lerp(start, end, t, out) {\n var inv = 1.0 - t;\n if (Quaternion.dot(start, end) >= 0) {\n out._x = start._x * inv + end._x * t;\n out._y = start._y * inv + end._y * t;\n out._z = start._z * inv + end._z * t;\n out._w = start._w * inv + end._w * t;\n } else {\n out._x = start._x * inv - end._x * t;\n out._y = start._y * inv - end._y * t;\n out._z = start._z * inv - end._z * t;\n out._w = start._w * inv - end._w * t;\n }\n out.normalize();\n };\n /**\n * Performs a spherical linear blend between two quaternions.\n * @param start - The first quaternion\n * @param end - The second quaternion\n * @param amount - The blend amount where 0 returns start and 1 end\n * @param out - The result of spherical linear blending between two quaternions\n */ Quaternion.slerp = function slerp(start, end, amount, out) {\n var opposite;\n var inverse;\n var dot = Quaternion.dot(start, end);\n if (Math.abs(dot) > 1.0 - MathUtil.zeroTolerance) {\n inverse = 1.0 - amount;\n opposite = amount * Math.sign(dot);\n } else {\n var acos = Math.acos(Math.abs(dot));\n var invSin = 1.0 / Math.sin(acos);\n inverse = Math.sin((1.0 - amount) * acos) * invSin;\n opposite = Math.sin(amount * acos) * invSin * Math.sign(dot);\n }\n out.x = inverse * start.x + opposite * end.x;\n out.y = inverse * start.y + opposite * end.y;\n out.z = inverse * start.z + opposite * end.z;\n out.w = inverse * start.w + opposite * end.w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Scales the specified quaternion magnitude to unit length.\n * @param a - The specified quaternion\n * @param out - The normalized quaternion\n */ Quaternion.normalize = function normalize(a, out) {\n var _x = a._x, _y = a._y, _z = a._z, _w = a._w;\n var len = Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out._x = _x * len;\n out._y = _y * len;\n out._z = _z * len;\n out._w = _w * len;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Calculate a quaternion rotate around X axis.\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationX = function rotationX(rad, out) {\n rad *= 0.5;\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out._x = s;\n out._y = 0;\n out._z = 0;\n out._w = c;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion rotate around Y axis.\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationY = function rotationY(rad, out) {\n rad *= 0.5;\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out._x = 0;\n out._y = s;\n out._z = 0;\n out._w = c;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion rotate around Z axis.\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationZ = function rotationZ(rad, out) {\n rad *= 0.5;\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out._x = 0;\n out._y = 0;\n out._z = s;\n out._w = c;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion that the specified quaternion rotate around X axis.\n * @param quaternion - The specified quaternion\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotateX = function rotateX(quaternion, rad, out) {\n var _x = quaternion._x, _y = quaternion._y, _z = quaternion._z, _w = quaternion._w;\n rad *= 0.5;\n var bx = Math.sin(rad);\n var bw = Math.cos(rad);\n out._x = _x * bw + _w * bx;\n out._y = _y * bw + _z * bx;\n out._z = _z * bw - _y * bx;\n out._w = _w * bw - _x * bx;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion that the specified quaternion rotate around Y axis.\n * @param quaternion - The specified quaternion\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotateY = function rotateY(quaternion, rad, out) {\n var _x = quaternion._x, _y = quaternion._y, _z = quaternion._z, _w = quaternion._w;\n rad *= 0.5;\n var by = Math.sin(rad);\n var bw = Math.cos(rad);\n out._x = _x * bw - _z * by;\n out._y = _y * bw + _w * by;\n out._z = _z * bw + _x * by;\n out._w = _w * bw - _y * by;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion that the specified quaternion rotate around Z axis.\n * @param quaternion - The specified quaternion\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotateZ = function rotateZ(quaternion, rad, out) {\n var _x = quaternion._x, _y = quaternion._y, _z = quaternion._z, _w = quaternion._w;\n rad *= 0.5;\n var bz = Math.sin(rad);\n var bw = Math.cos(rad);\n out._x = _x * bw + _y * bz;\n out._y = _y * bw - _x * bz;\n out._z = _z * bw + _w * bz;\n out._w = _w * bw - _z * bz;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Scale a quaternion by a given number.\n * @param a - The quaternion\n * @param s - The given number\n * @param out - The scaled quaternion\n */ Quaternion.scale = function scale(a, s, out) {\n out._x = a._x * s;\n out._y = a._y * s;\n out._z = a._z * s;\n out._w = a._w * s;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Quaternion, [\n {\n key: \"x\",\n get: /**\n * The x component of the quaternion.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the quaternion.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"z\",\n get: /**\n * The z component of the quaternion.\n */ function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"normalized\",\n get: /**\n * Indicting whether this instance is normalized.\n */ function get() {\n return Math.abs(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w - 1) < MathUtil.zeroTolerance;\n }\n },\n {\n key: \"w\",\n get: /**\n * The w component of the quaternion.\n */ function get() {\n return this._w;\n },\n set: function set(value) {\n this._w = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Quaternion;\n}();\n(function() {\n /** @internal */ Quaternion._tempVector3 = new Vector3();\n})();\n(function() {\n /** @internal */ Quaternion._tempQuat1 = new Quaternion();\n})();\n\n/**\n * Represents a 4x4 mathematical matrix.\n */ var Matrix = /*#__PURE__*/ function() {\n function Matrix(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n if (m11 === void 0) m11 = 1;\n if (m12 === void 0) m12 = 0;\n if (m13 === void 0) m13 = 0;\n if (m14 === void 0) m14 = 0;\n if (m21 === void 0) m21 = 0;\n if (m22 === void 0) m22 = 1;\n if (m23 === void 0) m23 = 0;\n if (m24 === void 0) m24 = 0;\n if (m31 === void 0) m31 = 0;\n if (m32 === void 0) m32 = 0;\n if (m33 === void 0) m33 = 1;\n if (m34 === void 0) m34 = 0;\n if (m41 === void 0) m41 = 0;\n if (m42 === void 0) m42 = 0;\n if (m43 === void 0) m43 = 0;\n if (m44 === void 0) m44 = 1;\n /**\n * An array containing the elements of the matrix (column matrix).\n * @remarks\n * elements[0] first column and first row value m11\n * elements[1] first column and second row value m12\n * elements[2] first column and third row value m13\n * elements[3] first column and fourth row value m14\n * elements[4] second column and first row value m21\n * and so on\n */ this.elements = new Float32Array(16);\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m14;\n e[4] = m21;\n e[5] = m22;\n e[6] = m23;\n e[7] = m24;\n e[8] = m31;\n e[9] = m32;\n e[10] = m33;\n e[11] = m34;\n e[12] = m41;\n e[13] = m42;\n e[14] = m43;\n e[15] = m44;\n }\n var _proto = Matrix.prototype;\n /**\n * Set the value of this matrix, and return this matrix.\n * @param m11 - column 1, row 1\n * @param m12 - column 1, row 2\n * @param m13 - column 1, row 3\n * @param m14 - column 1, row 4\n * @param m21 - column 2, row 1\n * @param m22 - column 2, row 2\n * @param m23 - column 2, row 3\n * @param m24 - column 2, row 4\n * @param m31 - column 3, row 1\n * @param m32 - column 3, row 2\n * @param m33 - column 3, row 3\n * @param m34 - column 3, row 4\n * @param m41 - column 4, row 1\n * @param m42 - column 4, row 2\n * @param m43 - column 4, row 3\n * @param m44 - column 4, row 4\n * @returns This matrix\n */ _proto.set = function set(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m14;\n e[4] = m21;\n e[5] = m22;\n e[6] = m23;\n e[7] = m24;\n e[8] = m31;\n e[9] = m32;\n e[10] = m33;\n e[11] = m34;\n e[12] = m41;\n e[13] = m42;\n e[14] = m43;\n e[15] = m44;\n return this;\n };\n /**\n * Determines the product of this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the product of the two matrices\n */ _proto.multiply = function multiply(right) {\n Matrix.multiply(this, right, this);\n return this;\n };\n /**\n * Calculate a determinant of this matrix.\n * @returns The determinant of this matrix\n */ _proto.determinant = function determinant() {\n var e = this.elements;\n var a11 = e[0], a12 = e[1], a13 = e[2], a14 = e[3];\n var a21 = e[4], a22 = e[5], a23 = e[6], a24 = e[7];\n var a31 = e[8], a32 = e[9], a33 = e[10], a34 = e[11];\n var a41 = e[12], a42 = e[13], a43 = e[14], a44 = e[15];\n var b00 = a11 * a22 - a12 * a21;\n var b01 = a11 * a23 - a13 * a21;\n var b02 = a11 * a24 - a14 * a21;\n var b03 = a12 * a23 - a13 * a22;\n var b04 = a12 * a24 - a14 * a22;\n var b05 = a13 * a24 - a14 * a23;\n var b06 = a31 * a42 - a32 * a41;\n var b07 = a31 * a43 - a33 * a41;\n var b08 = a31 * a44 - a34 * a41;\n var b09 = a32 * a43 - a33 * a42;\n var b10 = a32 * a44 - a34 * a42;\n var b11 = a33 * a44 - a34 * a43;\n // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n };\n /**\n * Decompose this matrix to translation, rotation and scale elements.\n * @param translation - Translation vector as an output parameter\n * @param rotation - Rotation quaternion as an output parameter\n * @param scale - Scale vector as an output parameter\n * @returns True if this matrix can be decomposed, false otherwise\n */ _proto.decompose = function decompose(translation, rotation, scale) {\n var rm = Matrix._tempMat30;\n var e = this.elements;\n var rme = rm.elements;\n var m11 = e[0];\n var m12 = e[1];\n var m13 = e[2];\n var m21 = e[4];\n var m22 = e[5];\n var m23 = e[6];\n var m31 = e[8];\n var m32 = e[9];\n var m33 = e[10];\n translation.set(e[12], e[13], e[14]);\n var sx = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\n var sy = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\n var sz = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\n if (this.determinant() < 0) sx = -sx;\n scale.set(sx, sy, sz);\n if (Math.abs(sx) < MathUtil.zeroTolerance || Math.abs(sy) < MathUtil.zeroTolerance || Math.abs(sz) < MathUtil.zeroTolerance) {\n rotation.identity();\n return false;\n } else {\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n rme[0] = m11 * invSX;\n rme[1] = m12 * invSX;\n rme[2] = m13 * invSX;\n rme[3] = m21 * invSY;\n rme[4] = m22 * invSY;\n rme[5] = m23 * invSY;\n rme[6] = m31 * invSZ;\n rme[7] = m32 * invSZ;\n rme[8] = m33 * invSZ;\n Quaternion.rotationMatrix3x3(rm, rotation);\n return true;\n }\n };\n /**\n * Get rotation from this matrix.\n * @param out - Rotation quaternion as an output parameter\n * @returns The out\n */ _proto.getRotation = function getRotation(out) {\n var e = this.elements;\n var trace = e[0] + e[5] + e[10];\n if (trace > MathUtil.zeroTolerance) {\n var s = Math.sqrt(trace + 1.0) * 2;\n out._w = 0.25 * s;\n out._x = (e[6] - e[9]) / s;\n out._y = (e[8] - e[2]) / s;\n out._z = (e[1] - e[4]) / s;\n } else if (e[0] > e[5] && e[0] > e[10]) {\n var s1 = Math.sqrt(1.0 + e[0] - e[5] - e[10]) * 2;\n out._w = (e[6] - e[9]) / s1;\n out._x = 0.25 * s1;\n out._y = (e[1] + e[4]) / s1;\n out._z = (e[8] + e[2]) / s1;\n } else if (e[5] > e[10]) {\n var s2 = Math.sqrt(1.0 + e[5] - e[0] - e[10]) * 2;\n out._w = (e[8] - e[2]) / s2;\n out._x = (e[1] + e[4]) / s2;\n out._y = 0.25 * s2;\n out._z = (e[6] + e[9]) / s2;\n } else {\n var s3 = Math.sqrt(1.0 + e[10] - e[0] - e[5]) * 2;\n out._w = (e[1] - e[4]) / s3;\n out._x = (e[8] + e[2]) / s3;\n out._y = (e[6] + e[9]) / s3;\n out._z = 0.25 * s3;\n }\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Get scale from this matrix.\n * @param out - Scale vector as an output parameter\n * @returns The out\n */ _proto.getScaling = function getScaling(out) {\n //getScale()\n var e = this.elements;\n var m11 = e[0], m12 = e[1], m13 = e[2];\n var m21 = e[4], m22 = e[5], m23 = e[6];\n var m31 = e[8], m32 = e[9], m33 = e[10];\n out.set(Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13), Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23), Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33));\n return out;\n };\n /**\n * Get translation from this matrix.\n * @param out - Translation vector as an output parameter\n * @returns The out\n */ _proto.getTranslation = function getTranslation(out) {\n var e = this.elements;\n out.set(e[12], e[13], e[14]);\n return out;\n };\n /**\n * Identity this matrix.\n * @returns This matrix after identity\n */ _proto.identity = function identity() {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 0;\n e[4] = 0;\n e[5] = 1;\n e[6] = 0;\n e[7] = 0;\n e[8] = 0;\n e[9] = 0;\n e[10] = 1;\n e[11] = 0;\n e[12] = 0;\n e[13] = 0;\n e[14] = 0;\n e[15] = 1;\n return this;\n };\n /**\n * Invert the matrix.\n * @returns The matrix after invert\n */ _proto.invert = function invert() {\n Matrix.invert(this, this);\n return this;\n };\n /**\n * This matrix rotates around an arbitrary axis.\n * @param axis - The axis\n * @param r - The rotation angle in radians\n * @returns This matrix after rotate\n */ _proto.rotateAxisAngle = function rotateAxisAngle(axis, r) {\n Matrix.rotateAxisAngle(this, axis, r, this);\n return this;\n };\n /**\n * Scale this matrix by a given vector.\n * @param s - The given vector\n * @returns This matrix after scale\n */ _proto.scale = function scale(s) {\n Matrix.scale(this, s, this);\n return this;\n };\n /**\n * Translate this matrix by a given vector.\n * @param v - The given vector\n * @returns This matrix after translate\n */ _proto.translate = function translate(v) {\n Matrix.translate(this, v, this);\n return this;\n };\n /**\n * Calculate the transpose of this matrix.\n * @returns This matrix after transpose\n */ _proto.transpose = function transpose() {\n Matrix.transpose(this, this);\n return this;\n };\n /**\n * Creates a clone of this matrix.\n * @returns A clone of this matrix\n */ _proto.clone = function clone() {\n var e = this.elements;\n var ret = new Matrix(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n return ret;\n };\n /**\n * Copy this matrix from the specified matrix.\n * @param source - The specified matrix\n * @returns This matrix\n */ _proto.copyFrom = function copyFrom(source) {\n var e = this.elements;\n var se = source.elements;\n e[0] = se[0];\n e[1] = se[1];\n e[2] = se[2];\n e[3] = se[3];\n e[4] = se[4];\n e[5] = se[5];\n e[6] = se[6];\n e[7] = se[7];\n e[8] = se[8];\n e[9] = se[9];\n e[10] = se[10];\n e[11] = se[11];\n e[12] = se[12];\n e[13] = se[13];\n e[14] = se[14];\n e[15] = se[15];\n return this;\n };\n /**\n * Copy the value of this matrix from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This matrix\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n var srce = this.elements;\n for(var i = 0; i < 16; i++){\n srce[i] = array[i + offset];\n }\n return this;\n };\n /**\n * Copy the value of this matrix to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n var e = this.elements;\n out[outOffset] = e[0];\n out[outOffset + 1] = e[1];\n out[outOffset + 2] = e[2];\n out[outOffset + 3] = e[3];\n out[outOffset + 4] = e[4];\n out[outOffset + 5] = e[5];\n out[outOffset + 6] = e[6];\n out[outOffset + 7] = e[7];\n out[outOffset + 8] = e[8];\n out[outOffset + 9] = e[9];\n out[outOffset + 10] = e[10];\n out[outOffset + 11] = e[11];\n out[outOffset + 12] = e[12];\n out[outOffset + 13] = e[13];\n out[outOffset + 14] = e[14];\n out[outOffset + 15] = e[15];\n };\n /**\n * Determines the product of two matrices.\n * @param left - The first matrix to multiply\n * @param right - The second matrix to multiply\n * @param out - The product of the two matrices\n */ Matrix.multiply = function multiply(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n // prettier-ignore\n var l11 = le[0], l12 = le[1], l13 = le[2], l14 = le[3], l21 = le[4], l22 = le[5], l23 = le[6], l24 = le[7], l31 = le[8], l32 = le[9], l33 = le[10], l34 = le[11], l41 = le[12], l42 = le[13], l43 = le[14], l44 = le[15];\n // prettier-ignore\n var r11 = re[0], r12 = re[1], r13 = re[2], r14 = re[3], r21 = re[4], r22 = re[5], r23 = re[6], r24 = re[7], r31 = re[8], r32 = re[9], r33 = re[10], r34 = re[11], r41 = re[12], r42 = re[13], r43 = re[14], r44 = re[15];\n oe[0] = l11 * r11 + l21 * r12 + l31 * r13 + l41 * r14;\n oe[1] = l12 * r11 + l22 * r12 + l32 * r13 + l42 * r14;\n oe[2] = l13 * r11 + l23 * r12 + l33 * r13 + l43 * r14;\n oe[3] = l14 * r11 + l24 * r12 + l34 * r13 + l44 * r14;\n oe[4] = l11 * r21 + l21 * r22 + l31 * r23 + l41 * r24;\n oe[5] = l12 * r21 + l22 * r22 + l32 * r23 + l42 * r24;\n oe[6] = l13 * r21 + l23 * r22 + l33 * r23 + l43 * r24;\n oe[7] = l14 * r21 + l24 * r22 + l34 * r23 + l44 * r24;\n oe[8] = l11 * r31 + l21 * r32 + l31 * r33 + l41 * r34;\n oe[9] = l12 * r31 + l22 * r32 + l32 * r33 + l42 * r34;\n oe[10] = l13 * r31 + l23 * r32 + l33 * r33 + l43 * r34;\n oe[11] = l14 * r31 + l24 * r32 + l34 * r33 + l44 * r34;\n oe[12] = l11 * r41 + l21 * r42 + l31 * r43 + l41 * r44;\n oe[13] = l12 * r41 + l22 * r42 + l32 * r43 + l42 * r44;\n oe[14] = l13 * r41 + l23 * r42 + l33 * r43 + l43 * r44;\n oe[15] = l14 * r41 + l24 * r42 + l34 * r43 + l44 * r44;\n };\n /**\n * Determines whether the specified matrices are equals.\n * @param left - The first matrix to compare\n * @param right - The second matrix to compare\n * @returns True if the specified matrices are equals, false otherwise\n */ Matrix.equals = function equals(left, right) {\n var le = left.elements;\n var re = right.elements;\n return MathUtil.equals(le[0], re[0]) && MathUtil.equals(le[1], re[1]) && MathUtil.equals(le[2], re[2]) && MathUtil.equals(le[3], re[3]) && MathUtil.equals(le[4], re[4]) && MathUtil.equals(le[5], re[5]) && MathUtil.equals(le[6], re[6]) && MathUtil.equals(le[7], re[7]) && MathUtil.equals(le[8], re[8]) && MathUtil.equals(le[9], re[9]) && MathUtil.equals(le[10], re[10]) && MathUtil.equals(le[11], re[11]) && MathUtil.equals(le[12], re[12]) && MathUtil.equals(le[13], re[13]) && MathUtil.equals(le[14], re[14]) && MathUtil.equals(le[15], re[15]);\n };\n /**\n * Performs a linear interpolation between two matrices.\n * @param start - The first matrix\n * @param end - The second matrix\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two matrices\n */ Matrix.lerp = function lerp(start, end, t, out) {\n var se = start.elements;\n var ee = end.elements;\n var oe = out.elements;\n var inv = 1.0 - t;\n oe[0] = se[0] * inv + ee[0] * t;\n oe[1] = se[1] * inv + ee[1] * t;\n oe[2] = se[2] * inv + ee[2] * t;\n oe[3] = se[3] * inv + ee[3] * t;\n oe[4] = se[4] * inv + ee[4] * t;\n oe[5] = se[5] * inv + ee[5] * t;\n oe[6] = se[6] * inv + ee[6] * t;\n oe[7] = se[7] * inv + ee[7] * t;\n oe[8] = se[8] * inv + ee[8] * t;\n oe[9] = se[9] * inv + ee[9] * t;\n oe[10] = se[10] * inv + ee[10] * t;\n oe[11] = se[11] * inv + ee[11] * t;\n oe[12] = se[12] * inv + ee[12] * t;\n oe[13] = se[13] * inv + ee[13] * t;\n oe[14] = se[14] * inv + ee[14] * t;\n oe[15] = se[15] * inv + ee[15] * t;\n };\n /**\n * Determines the sum of two matrices.\n * @param left - The first matrix to add\n * @param right - The second matrix to add\n * @param out - The sum of two matrices\n */ Matrix.add = function add(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n oe[0] = le[0] + re[0];\n oe[1] = le[1] + re[1];\n oe[2] = le[2] + re[2];\n oe[3] = le[3] + re[3];\n oe[4] = le[4] + re[4];\n oe[5] = le[5] + re[5];\n oe[6] = le[6] + re[6];\n oe[7] = le[7] + re[7];\n oe[8] = le[8] + re[8];\n oe[9] = le[9] + re[9];\n oe[10] = le[10] + re[10];\n oe[11] = le[11] + re[11];\n oe[12] = le[12] + re[12];\n oe[13] = le[13] + re[13];\n oe[14] = le[14] + re[14];\n oe[15] = le[15] + re[15];\n };\n /**\n * Multiplies a matrix by a scalar.\n * @param source - The matrix to multiply\n * @param scalar - The scalar to multiply\n * @param out - The result of multiplying a matrix by a scalar\n */ Matrix.multiplyScalar = function multiplyScalar(source, scalar, out) {\n var se = source.elements;\n var oe = out.elements;\n oe[0] = se[0] * scalar;\n oe[1] = se[1] * scalar;\n oe[2] = se[2] * scalar;\n oe[3] = se[3] * scalar;\n oe[4] = se[4] * scalar;\n oe[5] = se[5] * scalar;\n oe[6] = se[6] * scalar;\n oe[7] = se[7] * scalar;\n oe[8] = se[8] * scalar;\n oe[9] = se[9] * scalar;\n oe[10] = se[10] * scalar;\n oe[11] = se[11] * scalar;\n oe[12] = se[12] * scalar;\n oe[13] = se[13] * scalar;\n oe[14] = se[14] * scalar;\n oe[15] = se[15] * scalar;\n };\n /**\n * Calculate a rotation matrix from a quaternion.\n * @param quaternion - The quaternion used to calculate the matrix\n * @param out - The calculated rotation matrix\n */ Matrix.rotationQuaternion = function rotationQuaternion(quaternion, out) {\n var oe = out.elements;\n var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n oe[0] = 1 - yy - zz;\n oe[1] = yx + wz;\n oe[2] = zx - wy;\n oe[3] = 0;\n oe[4] = yx - wz;\n oe[5] = 1 - xx - zz;\n oe[6] = zy + wx;\n oe[7] = 0;\n oe[8] = zx + wy;\n oe[9] = zy - wx;\n oe[10] = 1 - xx - yy;\n oe[11] = 0;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 0;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix rotates around an arbitrary axis.\n * @param axis - The axis\n * @param r - The rotation angle in radians\n * @param out - The matrix after rotate\n */ Matrix.rotationAxisAngle = function rotationAxisAngle(axis, r, out) {\n var oe = out.elements;\n var x = axis._x, y = axis._y, z = axis._z;\n var len = Math.sqrt(x * x + y * y + z * z);\n var s, c, t;\n if (Math.abs(len) < MathUtil.zeroTolerance) {\n return;\n }\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(r);\n c = Math.cos(r);\n t = 1 - c;\n // Perform rotation-specific matrix multiplication\n oe[0] = x * x * t + c;\n oe[1] = y * x * t + z * s;\n oe[2] = z * x * t - y * s;\n oe[3] = 0;\n oe[4] = x * y * t - z * s;\n oe[5] = y * y * t + c;\n oe[6] = z * y * t + x * s;\n oe[7] = 0;\n oe[8] = x * z * t + y * s;\n oe[9] = y * z * t - x * s;\n oe[10] = z * z * t + c;\n oe[11] = 0;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 0;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix from a quaternion and a translation.\n * @param quaternion - The quaternion used to calculate the matrix\n * @param translation - The translation used to calculate the matrix\n * @param out - The calculated matrix\n */ Matrix.rotationTranslation = function rotationTranslation(quaternion, translation, out) {\n Matrix.rotationQuaternion(quaternion, out);\n var oe = out.elements;\n oe[12] = translation._x;\n oe[13] = translation._y;\n oe[14] = translation._z;\n };\n /**\n * Calculate an affine matrix.\n * @param scale - The scale used to calculate matrix\n * @param rotation - The rotation used to calculate matrix\n * @param translation - The translation used to calculate matrix\n * @param out - The calculated matrix\n */ Matrix.affineTransformation = function affineTransformation(scale, rotation, translation, out) {\n var oe = out.elements;\n var x = rotation._x, y = rotation._y, z = rotation._z, w = rotation._w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = scale._x;\n var sy = scale._y;\n var sz = scale._z;\n oe[0] = (1 - (yy + zz)) * sx;\n oe[1] = (xy + wz) * sx;\n oe[2] = (xz - wy) * sx;\n oe[3] = 0;\n oe[4] = (xy - wz) * sy;\n oe[5] = (1 - (xx + zz)) * sy;\n oe[6] = (yz + wx) * sy;\n oe[7] = 0;\n oe[8] = (xz + wy) * sz;\n oe[9] = (yz - wx) * sz;\n oe[10] = (1 - (xx + yy)) * sz;\n oe[11] = 0;\n oe[12] = translation._x;\n oe[13] = translation._y;\n oe[14] = translation._z;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix from scale vector.\n * @param s - The scale vector\n * @param out - The calculated matrix\n */ Matrix.scaling = function scaling(s, out) {\n var oe = out.elements;\n oe[0] = s._x;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = s._y;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = s._z;\n oe[11] = 0;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 0;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix from translation vector.\n * @param translation - The translation vector\n * @param out - The calculated matrix\n */ Matrix.translation = function translation(translation, out) {\n var oe = out.elements;\n oe[0] = 1;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = 1;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = 1;\n oe[11] = 0;\n oe[12] = translation._x;\n oe[13] = translation._y;\n oe[14] = translation._z;\n oe[15] = 1;\n };\n /**\n * Calculate the inverse of the specified matrix.\n * @param a - The matrix whose inverse is to be calculated\n * @param out - The inverse of the specified matrix\n */ Matrix.invert = function invert(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2], a14 = ae[3];\n var a21 = ae[4], a22 = ae[5], a23 = ae[6], a24 = ae[7];\n var a31 = ae[8], a32 = ae[9], a33 = ae[10], a34 = ae[11];\n var a41 = ae[12], a42 = ae[13], a43 = ae[14], a44 = ae[15];\n var b00 = a11 * a22 - a12 * a21;\n var b01 = a11 * a23 - a13 * a21;\n var b02 = a11 * a24 - a14 * a21;\n var b03 = a12 * a23 - a13 * a22;\n var b04 = a12 * a24 - a14 * a22;\n var b05 = a13 * a24 - a14 * a23;\n var b06 = a31 * a42 - a32 * a41;\n var b07 = a31 * a43 - a33 * a41;\n var b08 = a31 * a44 - a34 * a41;\n var b09 = a32 * a43 - a33 * a42;\n var b10 = a32 * a44 - a34 * a42;\n var b11 = a33 * a44 - a34 * a43;\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n oe[0] = (a22 * b11 - a23 * b10 + a24 * b09) * det;\n oe[1] = (a13 * b10 - a12 * b11 - a14 * b09) * det;\n oe[2] = (a42 * b05 - a43 * b04 + a44 * b03) * det;\n oe[3] = (a33 * b04 - a32 * b05 - a34 * b03) * det;\n oe[4] = (a23 * b08 - a21 * b11 - a24 * b07) * det;\n oe[5] = (a11 * b11 - a13 * b08 + a14 * b07) * det;\n oe[6] = (a43 * b02 - a41 * b05 - a44 * b01) * det;\n oe[7] = (a31 * b05 - a33 * b02 + a34 * b01) * det;\n oe[8] = (a21 * b10 - a22 * b08 + a24 * b06) * det;\n oe[9] = (a12 * b08 - a11 * b10 - a14 * b06) * det;\n oe[10] = (a41 * b04 - a42 * b02 + a44 * b00) * det;\n oe[11] = (a32 * b02 - a31 * b04 - a34 * b00) * det;\n oe[12] = (a22 * b07 - a21 * b09 - a23 * b06) * det;\n oe[13] = (a11 * b09 - a12 * b07 + a13 * b06) * det;\n oe[14] = (a42 * b01 - a41 * b03 - a43 * b00) * det;\n oe[15] = (a31 * b03 - a32 * b01 + a33 * b00) * det;\n };\n /**\n * Calculate a right-handed look-at matrix.\n * @param eye - The position of the viewer's eye\n * @param target - The camera look-at target\n * @param up - The camera's up vector\n * @param out - The calculated look-at matrix\n */ Matrix.lookAt = function lookAt(eye, target, up, out) {\n var oe = out.elements;\n var xAxis = Matrix._tempVec30;\n var yAxis = Matrix._tempVec31;\n var zAxis = Matrix._tempVec32;\n Vector3.subtract(eye, target, zAxis);\n zAxis.normalize();\n Vector3.cross(up, zAxis, xAxis);\n xAxis.normalize();\n Vector3.cross(zAxis, xAxis, yAxis);\n oe[0] = xAxis._x;\n oe[1] = yAxis._x;\n oe[2] = zAxis._x;\n oe[3] = 0;\n oe[4] = xAxis._y;\n oe[5] = yAxis._y;\n oe[6] = zAxis._y;\n oe[7] = 0;\n oe[8] = xAxis._z;\n oe[9] = yAxis._z;\n oe[10] = zAxis._z;\n oe[11] = 0;\n oe[12] = -Vector3.dot(xAxis, eye);\n oe[13] = -Vector3.dot(yAxis, eye);\n oe[14] = -Vector3.dot(zAxis, eye);\n oe[15] = 1;\n };\n /**\n * Calculate an orthographic projection matrix.\n * @param left - The left edge of the viewing\n * @param right - The right edge of the viewing\n * @param bottom - The bottom edge of the viewing\n * @param top - The top edge of the viewing\n * @param near - The depth of the near plane\n * @param far - The depth of the far plane\n * @param out - The calculated orthographic projection matrix\n */ Matrix.ortho = function ortho(left, right, bottom, top, near, far, out) {\n var oe = out.elements;\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n oe[0] = -2 * lr;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = -2 * bt;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = 2 * nf;\n oe[11] = 0;\n oe[12] = (left + right) * lr;\n oe[13] = (top + bottom) * bt;\n oe[14] = (far + near) * nf;\n oe[15] = 1;\n };\n /**\n * Calculate a perspective projection matrix.\n * @param fovY - Field of view in the y direction, in radians\n * @param aspect - Aspect ratio, defined as view space width divided by height\n * @param near - The depth of the near plane\n * @param far - The depth of the far plane\n * @param out - The calculated perspective projection matrix\n */ Matrix.perspective = function perspective(fovY, aspect, near, far, out) {\n var oe = out.elements;\n var f = 1.0 / Math.tan(fovY / 2);\n var nf = 1 / (near - far);\n oe[0] = f / aspect;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = f;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = (far + near) * nf;\n oe[11] = -1;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 2 * far * near * nf;\n oe[15] = 0;\n };\n /**\n * The specified matrix rotates around an arbitrary axis.\n * @param m - The specified matrix\n * @param axis - The axis\n * @param r - The rotation angle in radians\n * @param out - The rotated matrix\n */ Matrix.rotateAxisAngle = function rotateAxisAngle(m, axis, r, out) {\n var x = axis._x, y = axis._y, z = axis._z;\n var len = Math.sqrt(x * x + y * y + z * z);\n if (Math.abs(len) < MathUtil.zeroTolerance) {\n return;\n }\n var me = m.elements;\n var oe = out.elements;\n var s, c, t;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(r);\n c = Math.cos(r);\n t = 1 - c;\n var a11 = me[0], a12 = me[1], a13 = me[2], a14 = me[3];\n var a21 = me[4], a22 = me[5], a23 = me[6], a24 = me[7];\n var a31 = me[8], a32 = me[9], a33 = me[10], a34 = me[11];\n // Construct the elements of the rotation matrix\n var b11 = x * x * t + c;\n var b12 = y * x * t + z * s;\n var b13 = z * x * t - y * s;\n var b21 = x * y * t - z * s;\n var b22 = y * y * t + c;\n var b23 = z * y * t + x * s;\n var b31 = x * z * t + y * s;\n var b32 = y * z * t - x * s;\n var b33 = z * z * t + c;\n // Perform rotation-specific matrix multiplication\n oe[0] = a11 * b11 + a21 * b12 + a31 * b13;\n oe[1] = a12 * b11 + a22 * b12 + a32 * b13;\n oe[2] = a13 * b11 + a23 * b12 + a33 * b13;\n oe[3] = a14 * b11 + a24 * b12 + a34 * b13;\n oe[4] = a11 * b21 + a21 * b22 + a31 * b23;\n oe[5] = a12 * b21 + a22 * b22 + a32 * b23;\n oe[6] = a13 * b21 + a23 * b22 + a33 * b23;\n oe[7] = a14 * b21 + a24 * b22 + a34 * b23;\n oe[8] = a11 * b31 + a21 * b32 + a31 * b33;\n oe[9] = a12 * b31 + a22 * b32 + a32 * b33;\n oe[10] = a13 * b31 + a23 * b32 + a33 * b33;\n oe[11] = a14 * b31 + a24 * b32 + a34 * b33;\n if (m !== out) {\n // If the source and destination differ, copy the unchanged last row\n oe[12] = me[12];\n oe[13] = me[13];\n oe[14] = me[14];\n oe[15] = me[15];\n }\n };\n /**\n * Scale a matrix by a given vector.\n * @param m - The matrix\n * @param s - The given vector\n * @param out - The scaled matrix\n */ Matrix.scale = function scale(m, s, out) {\n var me = m.elements;\n var oe = out.elements;\n var x = s._x, y = s._y, z = s._z;\n oe[0] = me[0] * x;\n oe[1] = me[1] * x;\n oe[2] = me[2] * x;\n oe[3] = me[3] * x;\n oe[4] = me[4] * y;\n oe[5] = me[5] * y;\n oe[6] = me[6] * y;\n oe[7] = me[7] * y;\n oe[8] = me[8] * z;\n oe[9] = me[9] * z;\n oe[10] = me[10] * z;\n oe[11] = me[11] * z;\n oe[12] = me[12];\n oe[13] = me[13];\n oe[14] = me[14];\n oe[15] = me[15];\n };\n /**\n * Translate a matrix by a given vector.\n * @param m - The matrix\n * @param v - The given vector\n * @param out - The translated matrix\n */ Matrix.translate = function translate(m, v, out) {\n var me = m.elements;\n var oe = out.elements;\n var x = v._x, y = v._y, z = v._z;\n if (m === out) {\n oe[12] = me[0] * x + me[4] * y + me[8] * z + me[12];\n oe[13] = me[1] * x + me[5] * y + me[9] * z + me[13];\n oe[14] = me[2] * x + me[6] * y + me[10] * z + me[14];\n oe[15] = me[3] * x + me[7] * y + me[11] * z + me[15];\n } else {\n var a11 = me[0], a12 = me[1], a13 = me[2], a14 = me[3];\n var a21 = me[4], a22 = me[5], a23 = me[6], a24 = me[7];\n var a31 = me[8], a32 = me[9], a33 = me[10], a34 = me[11];\n oe[0] = a11, oe[1] = a12, oe[2] = a13, oe[3] = a14;\n oe[4] = a21, oe[5] = a22, oe[6] = a23, oe[7] = a24;\n oe[8] = a31, oe[9] = a32, oe[10] = a33, oe[11] = a34;\n oe[12] = a11 * x + a21 * y + a31 * z + me[12];\n oe[13] = a12 * x + a22 * y + a32 * z + me[13];\n oe[14] = a13 * x + a23 * y + a33 * z + me[14];\n oe[15] = a14 * x + a24 * y + a34 * z + me[15];\n }\n };\n /**\n * Calculate the transpose of the specified matrix.\n * @param a - The specified matrix\n * @param out - The transpose of the specified matrix\n */ Matrix.transpose = function transpose(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n if (out === a) {\n var a12 = ae[1];\n var a13 = ae[2];\n var a14 = ae[3];\n var a23 = ae[6];\n var a24 = ae[7];\n var a34 = ae[11];\n oe[1] = ae[4];\n oe[2] = ae[8];\n oe[3] = ae[12];\n oe[4] = a12;\n oe[6] = ae[9];\n oe[7] = ae[13];\n oe[8] = a13;\n oe[9] = a23;\n oe[11] = ae[14];\n oe[12] = a14;\n oe[13] = a24;\n oe[14] = a34;\n } else {\n oe[0] = ae[0];\n oe[1] = ae[4];\n oe[2] = ae[8];\n oe[3] = ae[12];\n oe[4] = ae[1];\n oe[5] = ae[5];\n oe[6] = ae[9];\n oe[7] = ae[13];\n oe[8] = ae[2];\n oe[9] = ae[6];\n oe[10] = ae[10];\n oe[11] = ae[14];\n oe[12] = ae[3];\n oe[13] = ae[7];\n oe[14] = ae[11];\n oe[15] = ae[15];\n }\n };\n return Matrix;\n}();\n(function() {\n Matrix._tempVec30 = new Vector3();\n})();\n(function() {\n Matrix._tempVec31 = new Vector3();\n})();\n(function() {\n Matrix._tempVec32 = new Vector3();\n})();\n(function() {\n Matrix._tempMat30 = new Matrix3x3();\n})();\n(function() {\n /** @internal Identity matrix. */ Matrix._identity = new Matrix(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0);\n})();\n\n/**\n * Represents a ray with an origin and a direction in 3D space.\n */ var Ray = /*#__PURE__*/ function() {\n function Ray(origin, direction) {\n if (origin === void 0) origin = null;\n if (direction === void 0) direction = null;\n /** The origin of the ray. */ this.origin = new Vector3();\n /** The normalized direction of the ray. */ this.direction = new Vector3();\n origin && this.origin.copyFrom(origin);\n direction && this.direction.copyFrom(direction);\n }\n var _proto = Ray.prototype;\n /**\n * Check if this ray intersects the specified plane.\n * @param plane - The specified plane\n * @returns The distance from this ray to the specified plane if intersecting, -1 otherwise\n */ _proto.intersectPlane = function intersectPlane(plane) {\n return CollisionUtil.intersectsRayAndPlane(this, plane);\n };\n /**\n * Check if this ray intersects the specified sphere.\n * @param sphere - The specified sphere\n * @returns The distance from this ray to the specified sphere if intersecting, -1 otherwise\n */ _proto.intersectSphere = function intersectSphere(sphere) {\n return CollisionUtil.intersectsRayAndSphere(this, sphere);\n };\n /**\n * Check if this ray intersects the specified box (AABB).\n * @param box - The specified box\n * @returns The distance from this ray to the specified box if intersecting, -1 otherwise\n */ _proto.intersectBox = function intersectBox(box) {\n return CollisionUtil.intersectsRayAndBox(this, box);\n };\n /**\n * The coordinates of the specified distance from the origin in the ray direction.\n * @param distance - The specified distance\n * @param out - The coordinates as an output parameter\n * @returns The out\n */ _proto.getPoint = function getPoint(distance, out) {\n Vector3.scale(this.direction, distance, out);\n return out.add(this.origin);\n };\n return Ray;\n}();\n\n/**\n * Describes a 2D-vector.\n */ var Vector2 = /*#__PURE__*/ function() {\n function Vector2(x, y) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n }\n var _proto = Vector2.prototype;\n /**\n * Set the value of this vector.\n * @param x - The x component of the vector\n * @param y - The y component of the vector\n * @returns This vector\n */ _proto.set = function set(x, y) {\n this._x = x;\n this._y = y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.add = function add(right) {\n this._x += right._x;\n this._y += right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the difference of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.subtract = function subtract(right) {\n this._x -= right._x;\n this._y -= right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the product of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.multiply = function multiply(right) {\n this._x *= right._x;\n this._y *= right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the divisor of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.divide = function divide(right) {\n this._x /= right._x;\n this._y /= right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this vector.\n * @returns The length of this vector\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y;\n return Math.sqrt(_x * _x + _y * _y);\n };\n /**\n * Calculate the squared length of this vector.\n * @returns The squared length of this vector\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y;\n return _x * _x + _y * _y;\n };\n /**\n * Reverses the direction of this vector.\n * @returns This vector\n */ _proto.negate = function negate() {\n this._x = -this._x;\n this._y = -this._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Converts this vector into a unit vector.\n * @returns This vector\n */ _proto.normalize = function normalize() {\n Vector2.normalize(this, this);\n return this;\n };\n /**\n * Scale this vector by the given value.\n * @param s - The amount by which to scale the vector\n * @returns This vector\n */ _proto.scale = function scale(s) {\n this._x *= s;\n this._y *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this vector.\n * @returns A clone of this vector\n */ _proto.clone = function clone() {\n return new Vector2(this._x, this._y);\n };\n /**\n * Copy from vector2 like object.\n * @param source - Vector2 like object\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to vector2 like object.\n * @param target - Vector2 like object\n * @returns This Vector2 like object\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n return target;\n };\n /**\n * Copy the value of this vector from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This vector\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this vector to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n };\n /**\n * Serialize this vector to a JSON representation.\n * @returns A JSON representation of this vector\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y\n };\n };\n /**\n * Determines the sum of two vectors.\n * @param left - The first vector to add\n * @param right - The second vector to add\n * @param out - The sum of two vectors\n */ Vector2.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the difference between two vectors.\n * @param left - The first vector to subtract\n * @param right - The second vector to subtract\n * @param out - The difference between two vectors\n */ Vector2.subtract = function subtract(left, right, out) {\n out._x = left._x - right._x;\n out._y = left._y - right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two vectors.\n * @param left - The first vector to multiply\n * @param right - The second vector to multiply\n * @param out - The product of two vectors\n */ Vector2.multiply = function multiply(left, right, out) {\n out._x = left._x * right._x;\n out._y = left._y * right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the divisor of two vectors.\n * @param left - The first vector to divide\n * @param right - The second vector to divide\n * @param out - The divisor of two vectors\n */ Vector2.divide = function divide(left, right, out) {\n out._x = left._x / right._x;\n out._y = left._y / right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two vectors.\n * @param left - The first vector to dot\n * @param right - The second vector to dot\n * @returns The dot product of two vectors\n */ Vector2.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y;\n };\n /**\n * Determines the distance of two vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @returns The distance of two vectors\n */ Vector2.distance = function distance(left, right) {\n var x = right._x - left._x;\n var y = right._y - left._y;\n return Math.sqrt(x * x + y * y);\n };\n /**\n * Determines the squared distance of two vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @returns The squared distance of two vectors\n */ Vector2.distanceSquared = function distanceSquared(left, right) {\n var x = right._x - left._x;\n var y = right._y - left._y;\n return x * x + y * y;\n };\n /**\n * Determines whether the specified vectors are equals.\n * @param left - The first vector to compare\n * @param right - The second vector to compare\n * @returns True if the specified vectors are equals, false otherwise\n */ Vector2.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y);\n };\n /**\n * Performs a linear interpolation between two vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param t - The blend amount where 0 returns left and 1 right\n * @param out - The result of linear blending between two vectors\n */ Vector2.lerp = function lerp(left, right, t, out) {\n var _x = left._x, _y = left._y;\n out._x = _x + (right._x - _x) * t;\n out._y = _y + (right._y - _y) * t;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the largest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the largest components of the specified vectors\n */ Vector2.max = function max(left, right, out) {\n out._x = Math.max(left._x, right._x);\n out._y = Math.max(left._y, right._y);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the smallest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the smallest components of the specified vectors\n */ Vector2.min = function min(left, right, out) {\n out._x = Math.min(left._x, right._x);\n out._y = Math.min(left._y, right._y);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Reverses the direction of a given vector.\n * @param left - The vector to negate\n * @param out - The vector facing in the opposite direction\n */ Vector2.negate = function negate(left, out) {\n out._x = -left._x;\n out._y = -left._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Converts the vector into a unit vector.\n * @param left - The vector to normalize\n * @param out - The normalized vector\n */ Vector2.normalize = function normalize(left, out) {\n var _x = left._x, _y = left._y;\n var len = Math.sqrt(_x * _x + _y * _y);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out._x = _x * len;\n out._y = _y * len;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Scale a vector by the given value.\n * @param left - The vector to scale\n * @param s - The amount by which to scale the vector\n * @param out - The scaled vector\n */ Vector2.scale = function scale(left, s, out) {\n out._x = left._x * s;\n out._y = left._y * s;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Vector2, [\n {\n key: \"x\",\n get: /**\n * The x component of the vector.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the vector.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Vector2;\n}();\n(function() {\n /** @internal */ Vector2._zero = new Vector2(0.0, 0.0);\n})();\n(function() {\n /** @internal */ Vector2._one = new Vector2(1.0, 1.0);\n})();\n\n/**\n * Describes a 4D-vector.\n */ var Vector4 = /*#__PURE__*/ function() {\n function Vector4(x, y, z, w) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (z === void 0) z = 0;\n if (w === void 0) w = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n var _proto = Vector4.prototype;\n /**\n * Set the value of this vector.\n * @param x - The x component of the vector\n * @param y - The y component of the vector\n * @param z - The z component of the vector\n * @param w - The w component of the vector\n * @returns This vector\n */ _proto.set = function set(x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.add = function add(right) {\n this._x += right._x;\n this._y += right._y;\n this._z += right._z;\n this._w += right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the difference of this vector and the specified vector.\n * @param right - the specified vector\n * @returns This vector\n */ _proto.subtract = function subtract(right) {\n this._x -= right._x;\n this._y -= right._y;\n this._z -= right._z;\n this._w -= right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the product of this vector and the specified vector.\n * @param right - the specified vector\n * @returns This vector\n */ _proto.multiply = function multiply(right) {\n this._x *= right._x;\n this._y *= right._y;\n this._z *= right._z;\n this._w *= right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the divisor of this vector and the specified vector.\n * @param right - the specified vector\n * @returns This vector\n */ _proto.divide = function divide(right) {\n this._x /= right._x;\n this._y /= right._y;\n this._z /= right._z;\n this._w /= right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this vector.\n * @returns The length of this vector\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n };\n /**\n * Calculate the squared length of this vector.\n * @returns The squared length of this vector\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return _x * _x + _y * _y + _z * _z + _w * _w;\n };\n /**\n * Reverses the direction of this vector.\n * @returns This vector\n */ _proto.negate = function negate() {\n this._x = -this._x;\n this._y = -this._y;\n this._z = -this._z;\n this._w = -this._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Converts this vector into a unit vector.\n * @returns This vector\n */ _proto.normalize = function normalize() {\n Vector4.normalize(this, this);\n return this;\n };\n /**\n * Scale this vector by the given value.\n * @param s - The amount by which to scale the vector\n * @returns This vector\n */ _proto.scale = function scale(s) {\n this._x *= s;\n this._y *= s;\n this._z *= s;\n this._w *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this vector.\n * @returns A clone of this vector\n */ _proto.clone = function clone() {\n var ret = new Vector4(this._x, this._y, this._z, this._w);\n return ret;\n };\n /**\n * Copy from vector3 like object.\n * @param source - Vector3 like object.\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._z = source.z;\n this._w = source.w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to vector4 like object.\n * @param target - Vector4 like object\n * @returns This Vector4 like object\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n target.z = this._z;\n target.w = this._w;\n return target;\n };\n /**\n * Copy the value of this vector by an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This vector\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this vector to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n out[outOffset + 2] = this._z;\n out[outOffset + 3] = this._w;\n };\n /**\n * Serialize this vector to a JSON representation.\n * @returns A JSON representation of this vector\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y,\n z: this._z,\n w: this._w\n };\n };\n /**\n * Determines the sum of two vectors.\n * @param left - The first vector to add\n * @param right - The second vector to add\n * @param out - The sum of two vectors\n */ Vector4.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._z = left._z + right._z;\n out._w = left._w + right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the difference between two vectors.\n * @param left - The first vector to subtract\n * @param right - The second vector to subtract\n * @param out - The difference between two vectors\n */ Vector4.subtract = function subtract(left, right, out) {\n out._x = left._x - right._x;\n out._y = left._y - right._y;\n out._z = left._z - right._z;\n out._w = left._w - right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two vectors.\n * @param left - The first vector to multiply\n * @param right - The second vector to multiply\n * @param out - The product of two vectors\n */ Vector4.multiply = function multiply(left, right, out) {\n out._x = left._x * right._x;\n out._y = left._y * right._y;\n out._z = left._z * right._z;\n out._w = left._w * right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the divisor of two vectors.\n * @param left - The first vector to divide\n * @param right - The second vector to divide\n * @param out - The divisor of two vectors\n */ Vector4.divide = function divide(left, right, out) {\n out._x = left._x / right._x;\n out._y = left._y / right._y;\n out._z = left._z / right._z;\n out._w = left._w / right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two vectors.\n * @param left - The first vector to dot\n * @param right - The second vector to dot\n * @returns The dot product of two vectors\n */ Vector4.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y + left._z * right._z + left._w * right._w;\n };\n /**\n * Determines the distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The distance of two vectors\n */ Vector4.distance = function distance(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n var w = b._w - a._w;\n return Math.sqrt(x * x + y * y + z * z + w * w);\n };\n /**\n * Determines the squared distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The squared distance of two vectors\n */ Vector4.distanceSquared = function distanceSquared(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n var w = b._w - a._w;\n return x * x + y * y + z * z + w * w;\n };\n /**\n * Determines whether the specified vectors are equals.\n * @param left - The first vector to compare\n * @param right - The second vector to compare\n * @returns True if the specified vectors are equals, false otherwise\n */ Vector4.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y) && MathUtil.equals(left._z, right._z) && MathUtil.equals(left._w, right._w);\n };\n /**\n * Performs a linear interpolation between two vectors.\n * @param start - The first vector\n * @param end - The second vector\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two vectors\n */ Vector4.lerp = function lerp(start, end, t, out) {\n var _x = start._x, _y = start._y, _z = start._z, _w = start._w;\n out._x = _x + (end._x - _x) * t;\n out._y = _y + (end._y - _y) * t;\n out._z = _z + (end._z - _z) * t;\n out._w = _w + (end._w - _w) * t;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the largest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the largest components of the specified vectors\n */ Vector4.max = function max(left, right, out) {\n out._x = Math.max(left._x, right._x);\n out._y = Math.max(left._y, right._y);\n out._z = Math.max(left._z, right._z);\n out._w = Math.max(left._w, right._w);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the smallest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the smallest components of the specified vectors\n */ Vector4.min = function min(left, right, out) {\n out._x = Math.min(left._x, right._x);\n out._y = Math.min(left._y, right._y);\n out._z = Math.min(left._z, right._z);\n out._w = Math.min(left._w, right._w);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Reverses the direction of a given vector.\n * @param a - The vector to negate\n * @param out - The vector facing in the opposite direction\n */ Vector4.negate = function negate(a, out) {\n out._x = -a._x;\n out._y = -a._y;\n out._z = -a._z;\n out._w = -a._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Converts the vector into a unit vector.\n * @param a - The vector to normalize\n * @param out - The normalized vector\n */ Vector4.normalize = function normalize(a, out) {\n var _x = a._x, _y = a._y, _z = a._z, _w = a._w;\n var len = Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out._x = _x * len;\n out._y = _y * len;\n out._z = _z * len;\n out._w = _w * len;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Scale a vector by the given value.\n * @param a - The vector to scale\n * @param s - The amount by which to scale the vector\n * @param out - The scaled vector\n */ Vector4.scale = function scale(a, s, out) {\n out._x = a._x * s;\n out._y = a._y * s;\n out._z = a._z * s;\n out._w = a._w * s;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given 4x4 matrix.\n * @param v - The vector to transform\n * @param m - The transform matrix\n * @param out - The transformed vector3\n */ Vector4.transform = function transform(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z, _w = v._w;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8] + _w * e[12];\n out._y = _x * e[1] + _y * e[5] + _z * e[9] + _w * e[13];\n out._z = _x * e[2] + _y * e[6] + _z * e[10] + _w * e[14];\n out._w = _x * e[3] + _y * e[7] + _z * e[11] + _w * e[15];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given quaternion.\n * @param v - The vector to transform\n * @param q - The transform quaternion\n * @param out - The transformed vector\n */ Vector4.transformByQuat = function transformByQuat(v, q, out) {\n var x = v._x, y = v._y, z = v._z, w = v._w;\n var qx = q._x;\n var qy = q._y;\n var qz = q._z;\n var qw = q._w;\n // calculate quat * vec\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z;\n // calculate result * inverse quat\n out._x = ix * qw - iw * qx - iy * qz + iz * qy;\n out._y = iy * qw - iw * qy - iz * qx + ix * qz;\n out._z = iz * qw - iw * qz - ix * qy + iy * qx;\n out._w = w;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Vector4, [\n {\n key: \"x\",\n get: /**\n * The x component of the vector.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the vector.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"z\",\n get: /**\n * The z component of the vector.\n */ function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"w\",\n get: /**\n * The w component of the vector.\n */ function get() {\n return this._w;\n },\n set: function set(value) {\n this._w = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Vector4;\n}();\n(function() {\n /** @internal */ Vector4._zero = new Vector4(0.0, 0.0, 0.0, 0.0);\n})();\n(function() {\n /** @internal */ Vector4._one = new Vector4(1.0, 1.0, 1.0, 1.0);\n})();\n\n/**\n * Describes a color in the from of RGBA (in order: R, G, B, A).\n */ var Color = /*#__PURE__*/ function() {\n function Color(r, g, b, a) {\n if (r === void 0) r = 1;\n if (g === void 0) g = 1;\n if (b === void 0) b = 1;\n if (a === void 0) a = 1;\n /** @internal */ this._onValueChanged = null;\n this._r = r;\n this._g = g;\n this._b = b;\n this._a = a;\n }\n var _proto = Color.prototype;\n /**\n * Set the value of this color.\n * @param r - The red component of the color\n * @param g - The green component of the color\n * @param b - The blue component of the color\n * @param a - The alpha component of the color\n * @returns This color.\n */ _proto.set = function set(r, g, b, a) {\n this._r = r;\n this._g = g;\n this._b = b;\n this._a = a;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this color and the specified color.\n * @param color - The specified color\n * @returns The added color\n */ _proto.add = function add(color) {\n this._r += color._r;\n this._g += color._g;\n this._b += color._b;\n this._a += color._a;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Scale this color by the given value.\n * @param s - The amount by which to scale the color\n * @returns The scaled color\n */ _proto.scale = function scale(s) {\n this._r *= s;\n this._g *= s;\n this._b *= s;\n this._a *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this color.\n * @returns A clone of this color\n */ _proto.clone = function clone() {\n var ret = new Color(this._r, this._g, this._b, this._a);\n return ret;\n };\n /**\n * Copy from color like object.\n * @param source - Color like object.\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._r = source.r;\n this._g = source.g;\n this._b = source.b;\n this._a = source.a;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to color like object.\n * @param target - Color like object.\n * @returns This Color like object\n */ _proto.copyTo = function copyTo(target) {\n target.r = this._r;\n target.g = this._g;\n target.b = this._b;\n target.a = this._a;\n return target;\n };\n /**\n * Copy from array like object.\n * @param source - Array like object\n * @param offset - The start offset\n * @returns This color\n */ _proto.copyFromArray = function copyFromArray(source, offset) {\n if (offset === void 0) offset = 0;\n this._r = source[offset];\n this._g = source[offset + 1];\n this._b = source[offset + 2];\n this._a = source[offset + 3];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this color to an array.\n * @param out - The color\n * @param outOffset - The start offset\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._r;\n out[outOffset + 1] = this._g;\n out[outOffset + 2] = this._b;\n out[outOffset + 3] = this._a;\n };\n /**\n * Modify components (r, g, b) of this color from gamma space to linear space.\n * @param out - The color in linear space\n * @returns The color in linear space\n */ _proto.toLinear = function toLinear(out) {\n out._r = Color.gammaToLinearSpace(this._r);\n out._g = Color.gammaToLinearSpace(this._g);\n out._b = Color.gammaToLinearSpace(this._b);\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Modify components (r, g, b) of this color from linear space to gamma space.\n * @param out - The color in gamma space\n * @returns The color in gamma space\n */ _proto.toGamma = function toGamma(out) {\n out._r = Color.linearToGammaSpace(this._r);\n out._g = Color.linearToGammaSpace(this._g);\n out._b = Color.linearToGammaSpace(this._b);\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Gets the brightness.\n * @returns The Hue-Saturation-Brightness (HSB) saturation for this\n */ _proto.getBrightness = function getBrightness() {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var max = r;\n var min = r;\n if (g > max) max = g;\n if (b > max) max = b;\n if (g < min) min = g;\n if (b < min) min = b;\n return (max + min) / 2;\n };\n /**\n * Serialize this color to a JSON representation.\n * @return A JSON representation of this color\n */ _proto.toJSON = function toJSON() {\n return {\n r: this._r,\n g: this._g,\n b: this._b,\n a: this._a\n };\n };\n /**\n * Modify a value from the gamma space to the linear space.\n * @param value - The value in gamma space\n * @returns The value in linear space\n */ Color.gammaToLinearSpace = function gammaToLinearSpace(value) {\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_sRGB.txt\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt\n if (value <= 0.0) return 0.0;\n else if (value <= 0.04045) return value / 12.92;\n else if (value < 1.0) return Math.pow((value + 0.055) / 1.055, 2.4);\n else return Math.pow(value, 2.4);\n };\n /**\n * Modify a value from the linear space to the gamma space.\n * @param value - The value in linear space\n * @returns The value in gamma space\n */ Color.linearToGammaSpace = function linearToGammaSpace(value) {\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_sRGB.txt\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt\n if (value <= 0.0) return 0.0;\n else if (value < 0.0031308) return 12.92 * value;\n else if (value < 1.0) return 1.055 * Math.pow(value, 0.41666) - 0.055;\n else return Math.pow(value, 0.41666);\n };\n /**\n * Determines whether the specified colors are equals.\n * @param left - The first color to compare\n * @param right - The second color to compare\n * @returns True if the specified colors are equals, false otherwise\n */ Color.equals = function equals(left, right) {\n return MathUtil.equals(left._r, right._r) && MathUtil.equals(left._g, right._g) && MathUtil.equals(left._b, right._b) && MathUtil.equals(left._a, right._a);\n };\n /**\n * Determines the sum of two colors.\n * @param left - The first color to add\n * @param right - The second color to add\n * @param out - The sum of two colors\n * @returns The added color\n */ Color.add = function add(left, right, out) {\n out._r = left._r + right._r;\n out._g = left._g + right._g;\n out._b = left._b + right._b;\n out._a = left._a + right._a;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Determines the difference between two colors.\n * @param left - The first color to subtract\n * @param right - The second color to subtract\n * @param out - The difference between two colors\n */ Color.subtract = function subtract(left, right, out) {\n out._r = left._r - right._r;\n out._g = left._g - right._g;\n out._b = left._b - right._b;\n out._a = left._a - right._a;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Scale a color by the given value.\n * @param left - The color to scale\n * @param s - The amount by which to scale the color\n * @param out - The scaled color\n * @returns The scaled color\n */ Color.scale = function scale(left, s, out) {\n out._r = left._r * s;\n out._g = left._g * s;\n out._b = left._b * s;\n out._a = left._a * s;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Performs a linear interpolation between two color.\n * @param start - The first color\n * @param end - The second color\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two color\n */ Color.lerp = function lerp(start, end, t, out) {\n var _r = start._r, _g = start._g, _b = start._b, _a = start._a;\n out._r = _r + (end._r - _r) * t;\n out._g = _g + (end._g - _g) * t;\n out._b = _b + (end._b - _b) * t;\n out._a = _a + (end._a - _a) * t;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n _create_class(Color, [\n {\n key: \"r\",\n get: /**\n * The red component of the color, 0~1.\n */ function get() {\n return this._r;\n },\n set: function set(value) {\n this._r = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"g\",\n get: /**\n * The green component of the color, 0~1.\n */ function get() {\n return this._g;\n },\n set: function set(value) {\n this._g = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"b\",\n get: /**\n * The blue component of the color, 0~1.\n */ function get() {\n return this._b;\n },\n set: function set(value) {\n this._b = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"a\",\n get: /**\n * The alpha component of the color, 0~1.\n */ function get() {\n return this._a;\n },\n set: function set(value) {\n this._a = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Color;\n}();\n\n// A 2d rectangle defined by x and y position, width and height.\nvar Rect = /*#__PURE__*/ function() {\n function Rect(x, y, width, height) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (width === void 0) width = 0;\n if (height === void 0) height = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n var _proto = Rect.prototype;\n /**\n * Set the value of this rectangle.\n * @param x - The x coordinate of the rectangle\n * @param y - The y coordinate of the rectangle\n * @param width - The width of the rectangle, measured from the x position\n * @param height - The height of the rectangle, measured from the y position\n * @returns This rectangle\n */ _proto.set = function set(x, y, width, height) {\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this rect.\n * @returns A clone of this rect\n */ _proto.clone = function clone() {\n return new Rect(this.x, this.y, this.width, this.height);\n };\n /**\n * Copy this rect from the specified rect.\n * @param source - The specified rect\n * @returns This rect\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._width = source.width;\n this._height = source.height;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n _create_class(Rect, [\n {\n key: \"x\",\n get: /**\n * The x coordinate of the rectangle.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y coordinate of the rectangle.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"width\",\n get: /**\n * The width of the rectangle, measured from the x position.\n */ function get() {\n return this._width;\n },\n set: function set(value) {\n this._width = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"height\",\n get: /**\n * The height of the rectangle, measured from the y position.\n */ function get() {\n return this._height;\n },\n set: function set(value) {\n this._height = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Rect;\n}();\n\n/**\n * Use SH3 to represent irradiance environment maps efficiently, allowing for interactive rendering of diffuse objects under distant illumination.\n * @remarks\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n * http://www.ppsloan.org/publications/StupidSH36.pdf\n * https://google.github.io/filament/Filament.md.html#annex/sphericalharmonics\n */ var SphericalHarmonics3 = /*#__PURE__*/ function() {\n function SphericalHarmonics3() {\n /** The coefficients of SphericalHarmonics3. */ this.coefficients = new Float32Array(27);\n }\n var _proto = SphericalHarmonics3.prototype;\n /**\n * Add light to SphericalHarmonics3.\n * @param direction - Light direction\n * @param color - Light color\n * @param deltaSolidAngle - The delta solid angle of the light\n */ _proto.addLight = function addLight(direction, color, deltaSolidAngle) {\n /**\n * Implements `EvalSHBasis` from [Projection from Cube maps] in http://www.ppsloan.org/publications/StupidSH36.pdf.\n *\n * Basis constants\n * 0: Math.sqrt(1/(4 * Math.PI))\n *\n * 1: -Math.sqrt(3 / (4 * Math.PI))\n * 2: Math.sqrt(3 / (4 * Math.PI))\n * 3: -Math.sqrt(3 / (4 * Math.PI))\n *\n * 4: Math.sqrt(15 / (4 * Math.PI))\n * 5: -Math.sqrt(15 / (4 * Math.PI))\n * 6: Math.sqrt(5 / (16 * Math.PI))\n * 7: -Math.sqrt(15 / (4 * Math.PI))\n * 8: Math.sqrt(15 / (16 * Math.PI))\n */ color.scale(deltaSolidAngle);\n var coe = this.coefficients;\n var x = direction._x, y = direction._y, z = direction._z;\n var r = color.r, g = color.g, b = color.b;\n var bv0 = 0.282095; // basis0 = 0.886227\n var bv1 = -0.488603 * y; // basis1 = -0.488603\n var bv2 = 0.488603 * z; // basis2 = 0.488603\n var bv3 = -0.488603 * x; // basis3 = -0.488603\n var bv4 = 1.092548 * (x * y); // basis4 = 1.092548\n var bv5 = -1.092548 * (y * z); // basis5 = -1.092548\n var bv6 = 0.315392 * (3 * z * z - 1); // basis6 = 0.315392\n var bv7 = -1.092548 * (x * z); // basis7 = -1.092548\n var bv8 = 0.546274 * (x * x - y * y); // basis8 = 0.546274\n coe[0] += r * bv0, coe[1] += g * bv0, coe[2] += b * bv0;\n coe[3] += r * bv1, coe[4] += g * bv1, coe[5] += b * bv1;\n coe[6] += r * bv2, coe[7] += g * bv2, coe[8] += b * bv2;\n coe[9] += r * bv3, coe[10] += g * bv3, coe[11] += b * bv3;\n coe[12] += r * bv4, coe[13] += g * bv4, coe[14] += b * bv4;\n coe[15] += r * bv5, coe[16] += g * bv5, coe[17] += b * bv5;\n coe[18] += r * bv6, coe[19] += g * bv6, coe[20] += b * bv6;\n coe[21] += r * bv7, coe[22] += g * bv7, coe[23] += b * bv7;\n coe[24] += r * bv8, coe[25] += g * bv8, coe[26] += b * bv8;\n };\n /**\n * Evaluates the color for the specified direction.\n * @param direction - Specified direction\n * @param out - Out color\n */ _proto.evaluate = function evaluate(direction, out) {\n /**\n * Equations based on data from: http://ppsloan.org/publications/StupidSH36.pdf\n *\n *\n * Basis constants\n * 0: Math.sqrt(1/(4 * Math.PI))\n *\n * 1: -Math.sqrt(3 / (4 * Math.PI))\n * 2: Math.sqrt(3 / (4 * Math.PI))\n * 3: -Math.sqrt(3 / (4 * Math.PI))\n *\n * 4: Math.sqrt(15 / (4 * Math.PI))\n * 5: -Math.sqrt(15 / (4 * Math.PI))\n * 6: Math.sqrt(5 / (16 * Math.PI))\n * 7: -Math.sqrt(15 / (4 * Math.PI))\n * 8: Math.sqrt(15 / (16 * Math.PI))\n *\n *\n * Convolution kernel\n * 0: Math.PI\n * 1: (2 * Math.PI) / 3\n * 2: Math.PI / 4\n */ var coe = this.coefficients;\n var x = direction._x, y = direction._y, z = direction._z;\n var bv0 = 0.886227; // kernel0 * basis0 = 0.886227\n var bv1 = -1.023327 * y; // kernel1 * basis1 = -1.023327\n var bv2 = 1.023327 * z; // kernel1 * basis2 = 1.023327\n var bv3 = -1.023327 * x; // kernel1 * basis3 = -1.023327\n var bv4 = 0.858086 * y * x; // kernel2 * basis4 = 0.858086\n var bv5 = -0.858086 * y * z; // kernel2 * basis5 = -0.858086\n var bv6 = 0.247708 * (3 * z * z - 1); // kernel2 * basis6 = 0.247708\n var bv7 = -0.858086 * z * x; // kernel2 * basis7 = -0.858086\n var bv8 = 0.429042 * (x * x - y * y); // kernel2 * basis8 = 0.429042\n // l0\n var r = coe[0] * bv0;\n var g = coe[1] * bv0;\n var b = coe[2] * bv0;\n // l1\n r += coe[3] * bv1 + coe[6] * bv2 + coe[9] * bv3;\n g += coe[4] * bv1 + coe[7] * bv2 + coe[10] * bv3;\n b += coe[5] * bv1 + coe[8] * bv2 + coe[11] * bv3;\n // l2\n r += coe[12] * bv4 + coe[15] * bv5 + coe[18] * bv6 + coe[21] * bv7 + coe[24] * bv8;\n g += coe[13] * bv4 + coe[16] * bv5 + coe[19] * bv6 + coe[22] * bv7 + coe[25] * bv8;\n b += coe[14] * bv4 + coe[17] * bv5 + coe[20] * bv6 + coe[23] * bv7 + coe[26] * bv8;\n out.set(r, g, b, 1.0);\n return out;\n };\n /**\n * Scale the coefficients.\n * @param s - The amount by which to scale the SphericalHarmonics3\n */ _proto.scale = function scale(s) {\n var src = this.coefficients;\n src[0] *= s, src[1] *= s, src[2] *= s;\n src[3] *= s, src[4] *= s, src[5] *= s;\n src[6] *= s, src[7] *= s, src[8] *= s;\n src[9] *= s, src[10] *= s, src[11] *= s;\n src[12] *= s, src[13] *= s, src[14] *= s;\n src[15] *= s, src[16] *= s, src[17] *= s;\n src[18] *= s, src[19] *= s, src[20] *= s;\n src[21] *= s, src[22] *= s, src[23] *= s;\n src[24] *= s, src[25] *= s, src[26] *= s;\n };\n /**\n * Creates a clone of this SphericalHarmonics3.\n * @returns A clone of this SphericalHarmonics3\n */ _proto.clone = function clone() {\n var sh = new SphericalHarmonics3();\n sh.copyFrom(this);\n return sh;\n };\n /**\n * Copy this SphericalHarmonics3 from the specified SphericalHarmonics3.\n * @param source - The specified SphericalHarmonics3\n * @returns This SphericalHarmonics3\n */ _proto.copyFrom = function copyFrom(source) {\n source.copyToArray(this.coefficients);\n return this;\n };\n /**\n * Copy the value of this spherical harmonics from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n var s = this.coefficients;\n s[0] = array[offset], s[1] = array[1 + offset], s[2] = array[2 + offset];\n s[3] = array[3 + offset], s[4] = array[4 + offset], s[5] = array[5 + offset];\n s[6] = array[6 + offset], s[7] = array[7 + offset], s[8] = array[8 + offset];\n s[9] = array[9 + offset], s[10] = array[10 + offset], s[11] = array[11 + offset];\n s[12] = array[12 + offset], s[13] = array[13 + offset], s[14] = array[14 + offset];\n s[15] = array[15 + offset], s[16] = array[16 + offset], s[17] = array[17 + offset];\n s[18] = array[18 + offset], s[19] = array[19 + offset], s[20] = array[20 + offset];\n s[21] = array[21 + offset], s[22] = array[22 + offset], s[23] = array[23 + offset];\n s[24] = array[24 + offset], s[25] = array[25 + offset], s[26] = array[26 + offset];\n };\n /**\n * Copy the value of this spherical harmonics to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n var s = this.coefficients;\n out[0 + outOffset] = s[0], out[1 + outOffset] = s[1], out[2 + outOffset] = s[2];\n out[3 + outOffset] = s[3], out[4 + outOffset] = s[4], out[5 + outOffset] = s[5];\n out[6 + outOffset] = s[6], out[7 + outOffset] = s[7], out[8 + outOffset] = s[8];\n out[9 + outOffset] = s[9], out[10 + outOffset] = s[10], out[11 + outOffset] = s[11];\n out[12 + outOffset] = s[12], out[13 + outOffset] = s[13], out[14 + outOffset] = s[14];\n out[15 + outOffset] = s[15], out[16 + outOffset] = s[16], out[17 + outOffset] = s[17];\n out[18 + outOffset] = s[18], out[19 + outOffset] = s[19], out[20 + outOffset] = s[20];\n out[21 + outOffset] = s[21], out[22 + outOffset] = s[22], out[23 + outOffset] = s[23];\n out[24 + outOffset] = s[24], out[25 + outOffset] = s[25], out[26 + outOffset] = s[26];\n };\n return SphericalHarmonics3;\n}();\n\n/**\n * Random number generator based on the xorshift128+ algorithm.\n * https://vigna.di.unimi.it/ftp/papers/xorshiftplus.pdf\n */ var Rand = /*#__PURE__*/ function() {\n function Rand(seed0, seed1) {\n this.reset(seed0, seed1);\n }\n var _proto = Rand.prototype;\n /**\n * Generate a integer 32bit random number.\n * @returns - A random number\n */ _proto.randomInt32 = function randomInt32() {\n var x = this._state0;\n var y = this._state1;\n this._state0 = y;\n x ^= x << 23;\n x ^= x >>> 17;\n x ^= y ^ y >>> 26;\n this._state1 = x;\n return this._state0 + this._state1 >>> 0;\n };\n /**\n * Generate a number between 0 and 1.\n * @returns - A random number\n */ _proto.random = function random() {\n return this.randomInt32() / 0xffffffff; // 2^32 - 1\n };\n /**\n * Reset the generator by new seeds.\n * @param seed0 - Random seed0\n * @param seed1 - Random seed1\n */ _proto.reset = function reset(seed0, seed1) {\n this._state0 = seed0 >>> 0;\n this._state1 = seed1 >>> 0;\n };\n return Rand;\n}();\n\nexport { BoundingBox, BoundingFrustum, BoundingSphere, CollisionUtil, Color, ContainmentType, FrustumFace, MathUtil, Matrix, Matrix3x3, Plane, PlaneIntersectionType, Quaternion, Rand, Ray, Rect, SphericalHarmonics3, Vector2, Vector3, Vector4 };\n//# sourceMappingURL=module.js.map\n","import { IXRReferenceImage, IXRRequestImage, IXRTrackedImage } from \"@galacean/engine-design\";\nimport { XRFeatureType, XRRequestTrackingState, XRTrackingState } from \"@galacean/engine-xr\";\nimport { registerXRPlatformFeature } from \"../WebXRDevice\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRTrackableFeature } from \"./WebXRTrackableFeature\";\n\n/**\n * WebXR implementation of XRPlatformImageTracking.\n * Note: each tracked image can appear at most once in the tracking results.\n * If multiple copies of the same image exist in the user’s environment,\n * the device can choose an arbitrary instance to report a pose,\n * and this choice can change for future XRFrames.\n */\n@registerXRPlatformFeature(XRFeatureType.ImageTracking)\nexport class WebXRImageTracking extends WebXRTrackableFeature<IXRTrackedImage, IXRRequestImage> {\n private _images: IXRReferenceImage[];\n private _trackingScoreStatus: ImageTrackingScoreStatus = ImageTrackingScoreStatus.NotReceived;\n private _tempIdx: number = 0;\n private _tempArr: number[] = [];\n\n constructor(images: IXRReferenceImage[]) {\n super();\n this._images = images;\n }\n\n checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: IXRRequestImage[]): boolean {\n if (!frame._platformFrame) return false;\n switch (this._trackingScoreStatus) {\n case ImageTrackingScoreStatus.NotReceived:\n this._requestTrackingScore(session, requestTrackings);\n return false;\n case ImageTrackingScoreStatus.Waiting:\n return false;\n }\n return true;\n }\n\n getTrackedResult(\n session: WebXRSession,\n frame: WebXRFrame,\n requestTrackings: IXRRequestImage[],\n generateTracked: () => IXRTrackedImage\n ): void {\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n const { _platformFrame: platformFrame } = frame;\n const { _tempArr: tempArr } = this;\n const idx = ++this._tempIdx;\n // @ts-ignore\n const trackingResults = platformFrame.getImageTrackingResults();\n for (let i = 0, n = trackingResults.length; i < n; i++) {\n const trackingResult = trackingResults[i];\n const { index } = trackingResult;\n const requestTrackingImage = requestTrackings[index];\n if (requestTrackingImage) {\n let tracked = requestTrackingImage.tracked[0];\n if (!tracked) {\n tracked = requestTrackingImage.tracked[0] = generateTracked();\n tracked.referenceImage = requestTrackingImage.image;\n }\n if (trackingResult.trackingState === \"tracked\") {\n this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);\n tracked.state = XRTrackingState.Tracking;\n } else {\n tracked.state = XRTrackingState.TrackingLost;\n }\n tempArr[index] = idx;\n } else {\n console.warn(\"Images can not find \" + index);\n }\n }\n\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n if (tempArr[i] < idx) requestTrackings[i].tracked[0].state = XRTrackingState.NotTracking;\n }\n }\n\n override onAddRequestTracking(requestTracking: IXRRequestImage): void {\n requestTracking.state = XRRequestTrackingState.Submitted;\n }\n\n /**\n * @internal\n */\n _assembleOptions(options: XRSessionInit): Promise<void> | void {\n options.requiredFeatures.push(\"image-tracking\");\n const { _images: images } = this;\n const promiseArr: Promise<ImageBitmap>[] = [];\n if (images) {\n for (let i = 0, n = images.length; i < n; i++) {\n const referenceImage = images[i];\n const { imageSource } = images[i];\n if (!imageSource) {\n return Promise.reject(new Error(\"referenceImage[\" + referenceImage.name + \"].src is null\"));\n } else {\n promiseArr.push(createImageBitmap(imageSource));\n }\n }\n return new Promise((resolve, reject) => {\n // @ts-ignore\n const trackedImages = (options.trackedImages = []);\n Promise.all(promiseArr).then((bitmaps: ImageBitmap[]) => {\n for (let i = 0, n = bitmaps.length; i < n; i++) {\n trackedImages.push({\n image: bitmaps[i],\n widthInMeters: images[i].physicalWidth\n });\n }\n resolve();\n }, reject);\n });\n } else {\n return Promise.reject(new Error(\"Images.length is 0\"));\n }\n }\n\n private _requestTrackingScore(session: WebXRSession, requestTrackings: IXRRequestImage[]): void {\n this._trackingScoreStatus = ImageTrackingScoreStatus.Waiting;\n session._platformSession\n // @ts-ignore\n .getTrackedImageScores()\n .then((trackingScores: (\"untrackable\" | \"trackable\")[]) => {\n if (trackingScores) {\n for (let i = 0, n = trackingScores.length; i < n; i++) {\n const trackingScore = trackingScores[i];\n const requestTracking = requestTrackings[i];\n if (trackingScore === \"trackable\") {\n this._trackingScoreStatus = ImageTrackingScoreStatus.Received;\n requestTracking.state = XRRequestTrackingState.Resolved;\n } else {\n requestTracking.state = XRRequestTrackingState.Rejected;\n console.warn(requestTracking.image.name, \" unTrackable\");\n }\n }\n }\n });\n }\n\n private _updateTrackedImage(frame: XRFrame, space: XRSpace, trackedImage: IXRTrackedImage, trackingResult: any) {\n const { pose } = trackedImage;\n const { transform } = frame.getPose(trackingResult.imageSpace, space);\n pose.matrix.copyFromArray(transform.matrix);\n pose.rotation.copyFrom(transform.orientation);\n pose.position.copyFrom(transform.position);\n trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;\n }\n}\n\nenum ImageTrackingScoreStatus {\n NotReceived,\n Waiting,\n Received\n}\n","import { _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _set_prototype_of } from \"./_set_prototype_of.js\";\nexport function _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","export function _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n\n return true;\n } catch (e) {\n return false;\n }\n}\nexport { _is_native_reflect_construct as _ };\n","import { XRTrackedInputDevice } from \"@galacean/engine-xr\";\n\nexport function parseXRMode(mode: number): XRSessionMode | null {\n switch (mode) {\n case 1:\n return \"immersive-ar\";\n case 2:\n return \"immersive-vr\";\n default:\n return null;\n }\n}\n\nexport function getInputSource(inputSource: XRInputSource): XRTrackedInputDevice {\n let type: number;\n switch (inputSource.targetRayMode) {\n case \"gaze\":\n break;\n case \"screen\":\n return XRTrackedInputDevice.Controller;\n case \"tracked-pointer\":\n if (inputSource.hand) {\n switch (inputSource.handedness) {\n case \"left\":\n return XRTrackedInputDevice.LeftHand;\n case \"right\":\n return XRTrackedInputDevice.RightHand;\n }\n } else {\n switch (inputSource.handedness) {\n case \"left\":\n return XRTrackedInputDevice.LeftController;\n case \"right\":\n return XRTrackedInputDevice.RightController;\n }\n }\n break;\n default:\n break;\n }\n return type;\n}\n\nexport function viewToCamera(type: XREye): XRTrackedInputDevice {\n switch (type) {\n case \"left\":\n return XRTrackedInputDevice.LeftCamera;\n case \"right\":\n return XRTrackedInputDevice.RightCamera;\n default:\n return XRTrackedInputDevice.Camera;\n }\n}\n","import { IXRCamera, IXRController, IXRFrame, IXRInput } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine-math\";\nimport { XRTrackedInputDevice, XRTrackingState } from \"@galacean/engine-xr\";\nimport { getInputSource, viewToCamera } from \"./Util\";\nimport { WebXRSession } from \"./WebXRSession\";\n\nexport class WebXRFrame implements IXRFrame {\n /** @internal */\n _platformFrame: XRFrame;\n private _session: WebXRSession;\n\n updateInputs(inputs: IXRInput[]): void {\n if (!this._platformFrame) return;\n this._updateController(inputs);\n this._updateCamera(inputs);\n }\n\n private _updateController(inputs: IXRInput[]) {\n const { _platformFrame: frame } = this;\n const { _platformSession: session, _platformReferenceSpace: referenceSpace } = this._session;\n const { inputSources } = session;\n for (let i = 0, n = inputSources.length; i < n; i++) {\n const inputSource = inputSources[i];\n const type = getInputSource(inputSource);\n const input = <IXRController>inputs[type];\n switch (inputSource.targetRayMode) {\n case \"screen\":\n case \"tracked-pointer\":\n const { gripSpace, targetRaySpace } = inputSource;\n if (gripSpace) {\n const { transform, emulatedPosition } = frame.getPose(gripSpace, referenceSpace);\n if (transform) {\n const { gripPose } = input;\n gripPose.matrix.copyFromArray(transform.matrix);\n gripPose.position.copyFrom(transform.position);\n gripPose.rotation.copyFrom(transform.orientation);\n }\n input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n }\n if (targetRaySpace) {\n const { transform, emulatedPosition } = frame.getPose(targetRaySpace, referenceSpace);\n if (transform) {\n const { targetRayPose } = input;\n targetRayPose.matrix.copyFromArray(transform.matrix);\n targetRayPose.position.copyFrom(transform.position);\n targetRayPose.rotation.copyFrom(transform.orientation);\n input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n }\n }\n break;\n case \"gaze\":\n break;\n default:\n break;\n }\n }\n }\n\n private _updateCamera(inputs: IXRInput[]) {\n const { _platformFrame: frame } = this;\n const {\n _platformReferenceSpace: referenceSpace,\n _platformLayer: layer,\n framebufferWidth,\n framebufferHeight\n } = this._session;\n const viewerPose = frame.getViewerPose(referenceSpace);\n if (viewerPose) {\n let hadUpdateCenterViewer = false;\n const { views, emulatedPosition } = viewerPose;\n for (let i = 0, n = views.length; i < n; i++) {\n const view = views[i];\n const type = viewToCamera(view.eye);\n const { transform } = views[i];\n if (type === XRTrackedInputDevice.Camera) {\n hadUpdateCenterViewer ||= true;\n }\n const xrCamera = <IXRCamera>inputs[type];\n const { pose } = xrCamera;\n pose.matrix.copyFromArray(transform.matrix);\n pose.position.copyFrom(transform.position);\n pose.rotation.copyFrom(transform.orientation);\n xrCamera.projectionMatrix.copyFromArray(view.projectionMatrix);\n xrCamera.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n const xrViewport = layer.getViewport(view);\n const width = xrViewport.width / framebufferWidth;\n const height = xrViewport.height / framebufferHeight;\n const x = xrViewport.x / framebufferWidth;\n const y = 1 - xrViewport.y / framebufferHeight - height;\n xrCamera.viewport.set(x, y, width, height);\n }\n\n if (!hadUpdateCenterViewer) {\n const leftCameraDevice = <IXRCamera>inputs[XRTrackedInputDevice.LeftCamera];\n const rightCameraDevice = <IXRCamera>inputs[XRTrackedInputDevice.RightCamera];\n const cameraDevice = <IXRCamera>inputs[XRTrackedInputDevice.Camera];\n const { pose: leftCameraPose } = leftCameraDevice;\n const { pose: rightCameraPose } = rightCameraDevice;\n const { pose: cameraPose } = cameraDevice;\n cameraPose.rotation.copyFrom(leftCameraPose.rotation);\n const { position, matrix } = cameraPose;\n Vector3.add(leftCameraPose.position, rightCameraPose.position, position);\n position.scale(0.5);\n matrix.copyFrom(leftCameraPose.matrix);\n const { elements } = matrix;\n elements[12] = position.x;\n elements[13] = position.y;\n elements[14] = position.z;\n cameraDevice.projectionMatrix.copyFrom(leftCameraDevice.projectionMatrix);\n cameraDevice.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n cameraDevice.viewport =\n leftCameraDevice.viewport.width && leftCameraDevice.viewport.height\n ? leftCameraDevice.viewport\n : rightCameraDevice.viewport;\n }\n }\n }\n\n constructor(session: WebXRSession) {\n this._session = session;\n }\n}\n","import { IXRInputEvent, IXRSession } from \"@galacean/engine-design\";\nimport { XRInputEventType, XRTargetRayMode, XRTrackedInputDevice } from \"@galacean/engine-xr\";\nimport { getInputSource } from \"./Util\";\nimport { WebXRFrame } from \"./WebXRFrame\";\n\nexport class WebXRSession implements IXRSession {\n requestAnimationFrame: (callback: FrameRequestCallback) => number;\n cancelAnimationFrame: (id: number) => void;\n /** @internal */\n _onSessionExitCallBack: () => void;\n\n /** @internal */\n _platformSession: XRSession;\n /** @internal */\n _platformLayer: XRWebGLLayer;\n /** @internal */\n _platformReferenceSpace: XRReferenceSpace;\n\n private _frame: WebXRFrame;\n private _events: IXRInputEvent[] = [];\n private _screenPointers: XRInputSource[] = [];\n private _inputEventTypeMap: Record<string, number> = {\n selectstart: XRInputEventType.SelectStart,\n select: XRInputEventType.Select,\n selectend: XRInputEventType.SelectEnd,\n squeezestart: XRInputEventType.SqueezeStart,\n squeeze: XRInputEventType.Squeeze,\n squeezeend: XRInputEventType.SqueezeEnd\n };\n private _targetRayModeMap: Record<string, number> = {\n gaze: XRTargetRayMode.Gaze,\n \"tracked-pointer\": XRTargetRayMode.TrackedPointer,\n screen: XRTargetRayMode.Screen\n };\n\n get frame(): WebXRFrame {\n return this._frame;\n }\n\n get framebuffer(): WebGLFramebuffer {\n return this._platformLayer.framebuffer;\n }\n\n get framebufferWidth(): number {\n return this._platformLayer.framebufferWidth;\n }\n\n get framebufferHeight(): number {\n return this._platformLayer.framebufferHeight;\n }\n\n get frameRate(): number {\n return this._platformSession.frameRate;\n }\n\n get supportedFrameRates(): Float32Array {\n return this._platformSession.supportedFrameRates;\n }\n\n get events(): IXRInputEvent[] {\n const { _events: events } = this;\n // Select event does not dispatch the move event, so we need to simulate dispatching the move here.\n const { _screenPointers: screenPointers } = this;\n for (let i = 0; i < screenPointers.length; i++) {\n const inputSource = screenPointers[i];\n if (!inputSource) continue;\n const { axes } = inputSource.gamepad;\n const event = {\n type: XRInputEventType.Select,\n targetRayMode: XRTargetRayMode.Screen,\n input: XRTrackedInputDevice.Controller,\n id: i,\n x: axes[0],\n y: axes[1]\n };\n events.push(event);\n }\n return events;\n }\n\n constructor(session: XRSession, layer: XRWebGLLayer, referenceSpace: XRReferenceSpace) {\n this._frame = new WebXRFrame(this);\n this._platformSession = session;\n this._platformLayer = layer;\n this._platformReferenceSpace = referenceSpace;\n const xrRequestAnimationFrame = session.requestAnimationFrame.bind(session);\n const onFrame = function (time: number, frame: XRFrame, callback: FrameRequestCallback) {\n this._frame._platformFrame = frame;\n callback(time);\n }.bind(this);\n this.requestAnimationFrame = (callback: FrameRequestCallback) => {\n return xrRequestAnimationFrame((time: number, frame: XRFrame) => {\n onFrame(time, frame, callback);\n });\n };\n this.cancelAnimationFrame = session.cancelAnimationFrame.bind(session);\n this._onSessionEvent = this._onSessionEvent.bind(this);\n this._onSessionExit = this._onSessionExit.bind(this);\n }\n\n getFixedFoveation(): number {\n return this._platformLayer.fixedFoveation;\n }\n\n setFixedFoveation(value: number) {\n this._platformLayer.fixedFoveation = value;\n }\n\n start(): void {}\n\n stop(): void {\n this._frame._platformFrame = null;\n }\n\n end(): Promise<void> {\n this._frame._platformFrame = null;\n return this._platformSession.end();\n }\n\n setSessionExitCallBack(onSessionExitCallBack: () => void): void {\n this._onSessionExitCallBack = onSessionExitCallBack;\n }\n\n addEventListener(): void {\n const { _onSessionEvent: onSessionEvent, _platformSession: session } = this;\n session.addEventListener(\"select\", onSessionEvent);\n session.addEventListener(\"selectstart\", onSessionEvent);\n session.addEventListener(\"selectend\", onSessionEvent);\n session.addEventListener(\"squeeze\", onSessionEvent);\n session.addEventListener(\"squeezestart\", onSessionEvent);\n session.addEventListener(\"squeezeend\", onSessionEvent);\n session.addEventListener(\"end\", this._onSessionExit);\n }\n\n removeEventListener(): void {\n const { _onSessionEvent: onSessionEvent, _platformSession: session } = this;\n session.removeEventListener(\"select\", onSessionEvent);\n session.removeEventListener(\"selectstart\", onSessionEvent);\n session.removeEventListener(\"selectend\", onSessionEvent);\n session.removeEventListener(\"squeeze\", onSessionEvent);\n session.removeEventListener(\"squeezestart\", onSessionEvent);\n session.removeEventListener(\"squeezeend\", onSessionEvent);\n session.removeEventListener(\"end\", this._onSessionExit);\n this._events.length = 0;\n }\n\n resetEvents(): void {\n this._events.length = 0;\n }\n\n private _onSessionExit(): void {\n if (this._onSessionExitCallBack) {\n this._onSessionExitCallBack();\n this._onSessionExitCallBack = null;\n }\n }\n\n private _onSessionEvent(inputSourceEvent: XRInputSourceEvent): void {\n const { inputSource } = inputSourceEvent;\n const event: IXRInputEvent = {\n type: this._inputEventTypeMap[inputSourceEvent.type],\n input: getInputSource(inputSource),\n targetRayMode: this._targetRayModeMap[inputSource.targetRayMode]\n };\n if (event.targetRayMode === XRTargetRayMode.Screen) {\n const { _screenPointers: screenPointers } = this;\n const { axes } = inputSource.gamepad;\n event.x = axes[0];\n event.y = axes[1];\n switch (event.type) {\n case XRInputEventType.SelectStart:\n let idx = -1;\n let emptyIdx = -1;\n for (let i = screenPointers.length - 1; i >= 0; i--) {\n const pointer = screenPointers[i];\n if (pointer === inputSource) {\n idx = i;\n break;\n }\n if (!pointer) {\n emptyIdx = i;\n }\n }\n if (idx === -1) {\n if (emptyIdx === -1) {\n idx = screenPointers.push(inputSource) - 1;\n } else {\n idx = emptyIdx;\n screenPointers[emptyIdx] = inputSource;\n }\n }\n event.id = idx;\n break;\n case XRInputEventType.SelectEnd:\n for (let i = screenPointers.length - 1; i >= 0; i--) {\n if (screenPointers[i] === inputSource) {\n screenPointers[i] = null;\n event.id = i;\n }\n }\n break;\n default:\n break;\n }\n }\n this._events.push(event);\n }\n}\n","import { IHardwareRenderer, IXRDevice } from \"@galacean/engine-design\";\nimport { XRFeatureType, XRSessionMode } from \"@galacean/engine-xr\";\nimport { parseXRMode } from \"./Util\";\nimport { WebXRSession } from \"./WebXRSession\";\nimport { WebXRFeature } from \"./feature/WebXRFeature\";\n\nexport class WebXRDevice implements IXRDevice {\n /** @internal */\n static _platformFeatureMap: PlatformFeatureConstructor[] = [];\n\n isSupportedSessionMode(mode: XRSessionMode): Promise<void> {\n return new Promise((resolve, reject: (reason: Error) => void) => {\n if (!window.isSecureContext) {\n reject(new Error(\"WebXR is available only in secure contexts (HTTPS).\"));\n return;\n }\n if (!navigator.xr) {\n reject(new Error(\"WebXR isn't available\"));\n return;\n }\n navigator.xr.isSessionSupported(parseXRMode(mode)).then((isSupported: boolean) => {\n isSupported ? resolve() : reject(new Error(\"The current context doesn't support WebXR.\"));\n });\n });\n }\n\n isSupportedFeature(type: XRFeatureType): boolean {\n switch (type) {\n case XRFeatureType.HitTest:\n case XRFeatureType.PlaneTracking:\n return typeof XRPlane !== \"undefined\";\n case XRFeatureType.AnchorTracking:\n return typeof XRAnchor !== \"undefined\";\n case XRFeatureType.ImageTracking:\n // @ts-ignore\n return typeof XRImageTrackingResult !== \"undefined\";\n }\n }\n\n createPlatformFeature(type: XRFeatureType, ...args: any[]): WebXRFeature {\n const platformFeatureConstructor = WebXRDevice._platformFeatureMap[type];\n return platformFeatureConstructor ? new platformFeatureConstructor(...args) : null;\n }\n\n requestSession(rhi: IHardwareRenderer, mode: XRSessionMode, platformFeatures: WebXRFeature[]): Promise<WebXRSession> {\n return new Promise((resolve, reject) => {\n const sessionMode = parseXRMode(mode);\n const options: XRSessionInit = { requiredFeatures: [\"local\"] };\n const promiseArr = [];\n for (let i = 0, n = platformFeatures.length; i < n; i++) {\n const promise = platformFeatures[i]._assembleOptions(options);\n promise && promiseArr.push(promise);\n }\n Promise.all(promiseArr).then(() => {\n navigator.xr.requestSession(sessionMode, options).then((session) => {\n const { gl } = rhi;\n const attributes = gl.getContextAttributes();\n if (!attributes) {\n reject(Error(\"GetContextAttributes Error!\"));\n }\n gl.makeXRCompatible().then(() => {\n const scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);\n let layer: XRWebGLLayer;\n if (session.renderState.layers === undefined || !!!rhi.isWebGL2) {\n const layerInit = {\n antialias: session.renderState.layers === undefined ? attributes.antialias : true,\n alpha: true,\n depth: attributes.depth,\n stencil: attributes.stencil,\n framebufferScaleFactor: scaleFactor\n };\n layer = new XRWebGLLayer(session, gl, layerInit);\n session.updateRenderState({\n baseLayer: layer\n });\n } else {\n layer = new XRWebGLLayer(session, gl);\n session.updateRenderState({\n layers: [layer]\n });\n }\n session.requestReferenceSpace(\"local\").then((referenceSpace: XRReferenceSpace) => {\n resolve(new WebXRSession(session, layer, referenceSpace));\n }, reject);\n }, reject);\n }, reject);\n }, reject);\n });\n }\n}\n\ntype PlatformFeatureConstructor = new (...args: any[]) => WebXRFeature;\nexport function registerXRPlatformFeature(type: XRFeatureType) {\n return (platformFeatureConstructor: PlatformFeatureConstructor) => {\n WebXRDevice._platformFeatureMap[type] = platformFeatureConstructor;\n };\n}\n","import { IXRRequestTracking, IXRTrackablePlatformFeature, IXRTracked } from \"@galacean/engine-design\";\nimport { XRRequestTrackingState } from \"@galacean/engine-xr\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRFeature } from \"./WebXRFeature\";\n\n/**\n * @internal\n */\nexport abstract class WebXRTrackableFeature<T extends IXRTracked, K extends IXRRequestTracking<T>>\n extends WebXRFeature\n implements IXRTrackablePlatformFeature<T, K>\n{\n get canModifyRequestTrackingAfterInit(): boolean {\n return false;\n }\n\n abstract getTrackedResult(\n session: WebXRSession,\n frame: WebXRFrame,\n requestTrackings: K[],\n generateTracked: () => T\n ): void;\n\n abstract checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: K[]): boolean;\n\n onAddRequestTracking(requestTracking: K): void {}\n\n onDelRequestTracking(requestTracking: K): void {\n requestTracking.state = XRRequestTrackingState.Destroyed;\n }\n}\n","import { IXRPlatformFeature } from \"@galacean/engine-design\";\n\n/**\n * @internal\n */\nexport abstract class WebXRFeature implements IXRPlatformFeature {\n /** @internal */\n abstract _assembleOptions(options: XRSessionInit): Promise<void> | void;\n}\n","import { IXRRequestAnchor, IXRTracked } from \"@galacean/engine-design\";\nimport { XRFeatureType, XRRequestTrackingState, XRTrackingState } from \"@galacean/engine-xr\";\nimport { registerXRPlatformFeature } from \"../WebXRDevice\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRTrackableFeature } from \"./WebXRTrackableFeature\";\n/**\n * WebXR implementation of XRPlatformAnchorTracking.\n */\n@registerXRPlatformFeature(XRFeatureType.AnchorTracking)\nexport class WebXRAnchorTracking extends WebXRTrackableFeature<IXRTracked, IWebXRRequestTrackingAnchor> {\n checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: IWebXRRequestTrackingAnchor[]): boolean {\n if (!frame._platformFrame) return false;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestTracking = requestTrackings[i];\n if (requestTracking.state === XRRequestTrackingState.None) {\n this._addAnchor(session, frame, requestTracking);\n }\n }\n return true;\n }\n\n getTrackedResult(session: WebXRSession, frame: WebXRFrame, requestTrackings: IWebXRRequestTrackingAnchor[]): void {\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n const { _platformFrame: platformFrame } = frame;\n const { trackedAnchors } = platformFrame;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestTracking = requestTrackings[i];\n if (requestTracking.state !== XRRequestTrackingState.Resolved) continue;\n const tracked = requestTracking.tracked[0];\n if (trackedAnchors.has(requestTracking.xrAnchor)) {\n const emulated = this._updateTrackedAnchor(platformFrame, platformReferenceSpace, requestTracking);\n if (emulated) {\n if (tracked.state === XRTrackingState.Tracking) {\n tracked.state = XRTrackingState.TrackingLost;\n }\n } else {\n tracked.state = XRTrackingState.Tracking;\n }\n } else {\n tracked.state = XRTrackingState.NotTracking;\n }\n }\n }\n\n override get canModifyRequestTrackingAfterInit(): boolean {\n return true;\n }\n\n override onDelRequestTracking(requestTracking: IWebXRRequestTrackingAnchor): void {\n switch (requestTracking.state) {\n case XRRequestTrackingState.Submitted:\n requestTracking.state = XRRequestTrackingState.WaitingDestroy;\n break;\n case XRRequestTrackingState.Resolved:\n requestTracking.xrAnchor.delete();\n requestTracking.state = XRRequestTrackingState.Destroyed;\n break;\n default:\n requestTracking.state = XRRequestTrackingState.Destroyed;\n break;\n }\n }\n\n /**\n * @internal\n */\n _assembleOptions(options: XRSessionInit): void {\n options.requiredFeatures.push(\"anchors\");\n }\n\n private _addAnchor(session: WebXRSession, frame: WebXRFrame, requestTracking: IWebXRRequestTrackingAnchor): void {\n if (!session || !frame) {\n return;\n }\n requestTracking.state = XRRequestTrackingState.Submitted;\n const { position, rotation } = requestTracking;\n const { _platformFrame: platformFrame } = frame;\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n platformFrame\n .createAnchor(\n new XRRigidTransform(\n { x: position.x, y: position.y, z: position.z },\n { x: rotation.x, y: rotation.y, z: rotation.z, w: rotation.w }\n ),\n platformReferenceSpace\n )\n .then(\n (xrAnchor) => {\n if (requestTracking.state === XRRequestTrackingState.WaitingDestroy) {\n xrAnchor.delete();\n requestTracking.state = XRRequestTrackingState.Destroyed;\n } else {\n requestTracking.xrAnchor = xrAnchor;\n requestTracking.state = XRRequestTrackingState.Resolved;\n }\n },\n () => {\n if (requestTracking.state === XRRequestTrackingState.WaitingDestroy) {\n requestTracking.state = XRRequestTrackingState.Destroyed;\n } else {\n requestTracking.state = XRRequestTrackingState.Rejected;\n }\n }\n );\n }\n\n private _updateTrackedAnchor(frame: XRFrame, space: XRSpace, requestTracking: IWebXRRequestTrackingAnchor): boolean {\n const { xrAnchor } = requestTracking;\n const xrPose = frame.getPose(xrAnchor.anchorSpace, space);\n const { transform } = xrPose;\n const { pose } = requestTracking.tracked[0];\n pose.matrix.copyFromArray(transform.matrix);\n pose.rotation.copyFrom(transform.orientation);\n pose.position.copyFrom(transform.position);\n return xrPose.emulatedPosition;\n }\n}\n\ninterface IWebXRRequestTrackingAnchor extends IXRRequestAnchor {\n xrAnchor: XRAnchor;\n}\n","import { IXRRequestPlane, IXRTrackedPlane } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine-math\";\nimport { XRFeatureType, XRPlaneMode, XRRequestTrackingState, XRTrackingState } from \"@galacean/engine-xr\";\nimport { registerXRPlatformFeature } from \"../WebXRDevice\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRTrackableFeature } from \"./WebXRTrackableFeature\";\n\n/**\n * WebXR implementation of XRPlatformPlaneTracking.\n */\n@registerXRPlatformFeature(XRFeatureType.PlaneTracking)\nexport class WebXRPlaneTracking extends WebXRTrackableFeature<IWebXRTrackedPlane, IXRRequestPlane> {\n private _lastDetectedPlanes: XRPlaneSet;\n\n constructor(detectedMode: number) {\n super();\n if (detectedMode !== XRPlaneMode.EveryThing) {\n console.warn(\"WebXR only support XRPlaneMode.EveryThing\");\n }\n }\n\n checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: IXRRequestPlane[]): boolean {\n return !!frame._platformFrame;\n }\n\n getTrackedResult(\n session: WebXRSession,\n frame: WebXRFrame,\n requestTrackings: IXRRequestPlane[],\n generateTracked: () => IWebXRTrackedPlane\n ): void {\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n const { _platformFrame: platformFrame } = frame;\n // @ts-ignore\n const detectedPlanes: XRPlaneSet = platformFrame.detectedPlanes || platformFrame.worldInformation?.detectedPlanes;\n const tracked = <IWebXRTrackedPlane[]>requestTrackings[0].tracked;\n for (let i = 0, n = tracked.length; i < n; i++) {\n const trackedPlane = tracked[i];\n if (detectedPlanes.has(trackedPlane.xrPlane)) {\n trackedPlane.state = XRTrackingState.Tracking;\n this._updatePlane(platformFrame, platformReferenceSpace, trackedPlane);\n } else {\n trackedPlane.state = XRTrackingState.NotTracking;\n }\n }\n\n const { _lastDetectedPlanes: lastDetectedPlanes } = this;\n detectedPlanes.forEach((xrPlane) => {\n if (!lastDetectedPlanes?.has(xrPlane)) {\n const plane = generateTracked();\n plane.xrPlane = xrPlane;\n plane.lastChangedTime = -1;\n this._updatePlane(platformFrame, platformReferenceSpace, plane);\n tracked.push(plane);\n }\n });\n this._lastDetectedPlanes = detectedPlanes;\n }\n\n override onAddRequestTracking(requestTracking: IXRRequestPlane): void {\n requestTracking.state = XRRequestTrackingState.Resolved;\n }\n\n /**\n * @internal\n */\n _assembleOptions(options: XRSessionInit): void {\n options.requiredFeatures.push(\"plane-detection\");\n }\n\n private _updatePlane(frame: XRFrame, space: XRSpace, trackedPlane: IWebXRTrackedPlane): void {\n const { pose, polygon, xrPlane } = trackedPlane;\n const planePose = frame.getPose(xrPlane.planeSpace, space);\n if (!planePose) return;\n const { transform, emulatedPosition } = planePose;\n trackedPlane.state = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n trackedPlane.planeMode = xrPlane.orientation === \"horizontal\" ? XRPlaneMode.Horizontal : XRPlaneMode.Vertical;\n if (trackedPlane.lastChangedTime < xrPlane.lastChangedTime) {\n trackedPlane.lastChangedTime = xrPlane.lastChangedTime;\n trackedPlane.attributesDirty = true;\n const { polygon: oriPolygon } = xrPlane;\n for (let i = 0, n = (polygon.length = oriPolygon.length); i < n; i++) {\n (polygon[i] ||= new Vector3()).copyFrom(oriPolygon[i]);\n }\n } else {\n trackedPlane.attributesDirty = false;\n }\n pose.rotation.copyFrom(transform.orientation);\n pose.position.copyFrom(transform.position);\n pose.matrix.copyFromArray(transform.matrix);\n pose.inverseMatrix.copyFromArray(transform.inverse.matrix);\n }\n}\n\ninterface IWebXRTrackedPlane extends IXRTrackedPlane {\n xrPlane?: XRPlane;\n lastChangedTime?: number;\n}\n"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","Constructor","protoProps","staticProps","prototype","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","create","constructor","value","__decorate","decorators","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","_construct","Parent","args","Class","_is_native_reflect_construct","construct","sham","Proxy","Boolean","valueOf","call","e","a","push","apply","instance","Function","bind","_instanceof","left","right","Symbol","hasInstance","SuppressedError","XRTrackedInputDevice","XRSessionState","XRTrackingState","XRCamera","XRInputButton","XRController","_proto","XRInputEventType","XRTargetRayMode","XRInputManager","XRSessionMode","XRSessionManager","XRManager1","XRManagerExtended","XRFeature","XRFeatureType","XRRequestTrackingState","XRTrackableFeature","TrackableType","XRPlaneMode","XRRequestPlane","XRTrackedPlane","XRPlaneTracking","XRHitTest","XRAnchor","XRRequestAnchor","XRAnchorTracking","XRRequestImage","XRTrackedImage","XRImageTracking","XRReferenceImageDecoder","Loader1","XRReferenceImageLoader","ContainmentType","PlaneIntersectionType","FrustumFace","MathUtil","Vector3","BoundingSphere","BoundingBox","CollisionUtil","Matrix3x3","Quaternion","Matrix","Vector2","Vector4","ImageTrackingScoreStatus","XRCameraManager","_xrManager","attachCamera","type","camera","xrCamera","inputManager","getTrackedDevice","preCamera","_camera","_cameraType","CameraType","Normal","Camera","XRCenterCamera","LeftCamera","XRLeftCamera","RightCamera","XRRightCamera","detachCamera","_onSessionStart","_onUpdate","cameras","_this__xrManager_inputManager","_cameras","n","cameraDevice","transform","entity","pose","position","rotationQuaternion","rotation","viewport","_cameraDevice_viewport","x","y","width","height","z","w","set","equals","projectionMatrix","_onSessionExit","_getIgnoreClearFlags","cameraType","CameraClearFlags","None","sessionManager","state","Running","Color","_onDestroy","get","platformSession","_this__xrManager_sessionManager","_platformSession","getFixedFoveation","Error","setFixedFoveation","XRPose","matrix","inverseMatrix","XRInput","trackingState","NotTracking","_this","XRInput1","Rect","gripPose","targetRayPose","pressedButtons","down","up","isButtonDown","button","isButtonUp","isButtonHeldDown","_engine","_controllers","_added","_removed","_trackedDevices","_statusSnapshot","_listeners","SafeLoopArray","trackedDevices","controllers","Controller","LeftController","RightController","fill","addTrackedDeviceChangedListener","listener","fn","removeTrackedDeviceChangedListener","findAndRemove","destroyed","added","removed","statusSnapshot","_this1","controller","platformEvents","events","i1","n1","_handleEvent","resetEvents","frame","updateInputs","i2","n2","input","nowState","Tracking","listeners","getLoopArray","i3","n3","event","targetRayMode","TrackedPointer","SelectStart","Select","SelectEnd","SqueezeStart","Squeeze","SqueezeEnd","Screen","engine","_pointerManager","_target","canvas","_webCanvas","clientWidth","clientHeight","clientX","clientY","dispatchEvent","_makeUpPointerEvent","id","pointerId","eventInitDict","buttons","PointerEvent","_mode","_state","_rhi","_hardwareRenderer","_raf","requestAnimationFrame","window","_caf","cancelAnimationFrame","isSupportedMode","mode","_platformDevice","isSupportedSessionMode","run","start","_setState","isPaused","pause","resume","stop","rhi","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","Paused","_onSessionStop","addStateChangedListener","removeStateChangedListener","_initialize","features","Promise","resolve","reject","xrManager","platformFeatures","platformFeature","_features_i","_platformFeature","requestSession","then","Initialized","setSessionExitCallBack","addEventListener","_onSessionInit","framebuffer","framebufferWidth","framebufferHeight","_getRequestAnimationFrame","_getCancelAnimationFrame","_exit","end","removeEventListener","supportedFrameRates","frameRate","XRManager","isSupportedFeature","feature","_featureMap","addFeature","_len","Array","_key","concat","getFeature","enterXR","sessionMode","autoRun","_origin","Initializing","exitXR","xrDevice","_features","cameraManager","_update","enabled","_destroy","_getCameraIgnoreClearFlags","registerXRFeature","Map","ApplyMixins","derivedCtor","baseCtors","forEach","baseCtor","getOwnPropertyNames","name","_type","_xrManager__platformDevice","_enabled","createPlatformFeature","_onEnable","_onDisable","XRFeature1","_requestTrackings","_tracked","_updated","addChangedListener","removeChangedListener","platformFrame","requestTrackings","allTracked","updated","checkAvailable","getTrackedResult","_generateTracked","requestTracking","Destroyed","destroyedTracked","tracked","j","trackId","splice","indexOf","Resolved","tracked1","j1","trackedObject","trackId1","_addRequestTracking","canModifyRequestTrackingAfterInit","onAddRequestTracking","_removeRequestTracking","onDelRequestTracking","_removeAllRequestTrackings","_uuid","XRTracked","XRHitResult","point","normal","XRRequestTracking","detectionMode","XRRequestTracking1","XRTracked1","polygon","attributesDirty","EveryThing","XRTrackableFeature1","PlaneTracking","plane","HitTest","_tempRay","Ray","_tempPlane","Plane","_tempVec2","_tempVec30","_tempVec31","_tempVec32","_tempVec33","_tempVec34","_tempVec35","hitTest","ray","result","_hitTestPlane","screenHitTest","AR","_xrManager_inputManager_getTrackedDevice","screenPointToRay","planeManager","hitPoint","hitPointInPlane","trackedPlanes","trackedPlane","transformNormal","copyFrom","distance","dot","intersectPlane","getPoint","transformToVec3","_checkPointerWithinPlane","hitResult","trackableType","pointer","preToCur","preToPointer","cross","prePoint","side","curPoint","subtract","AnchorTracking","_anchors","addAnchor","anchors","requestAnchor","xrAnchor","removeAnchor","anchor","clearAnchors","image","trackingImages","ImageTracking","_trackingImages","imageLength","console","warn","XRReferenceImage","imageSource","physicalWidth","decode","bufferReader","AssetPromise","nextFloat32","nextUint8","img","Image","onload","src","URL","createObjectURL","Blob","nextImagesData","_extends","assign","source","hasOwnProperty","decoder","Loader","load","item","resourceManager","_request","url","data","referenceImage","catch","parseXRMode","getInputSource","inputSource","hand","handedness","LeftHand","RightHand","resourceLoader","clamp","v","min","max","Math","b","abs","zeroTolerance","isPowerOf2","radianToDegree","radToDegreeFactor","degreeToRadian","degreeToRadFactor","lerp","t","PI","_onValueChanged","_x","_y","_z","add","multiply","divide","sqrt","lengthSquared","negate","normalize","scale","s","m","transformCoordinate","transformByQuat","quaternion","clone","copyTo","copyFromArray","array","offset","copyToArray","out","outOffset","toJSON","ax","ay","az","bx","by","bz","distanceSquared","len","elements","transformToVec4","_w","qx","qy","qz","qw","ix","iy","iz","iw","_zero","_one","center","radius","fromPoints","points","fromBox","box","getCenter","centerX","centerY","centerZ","isNaN","getExtent","extentX","extentY","extentZ","getCorners","minX","minY","minZ","maxX","maxY","maxZ","l","fromCenterAndExtent","extent","Number","MAX_VALUE","fromSphere","sphere","e0","e1","e2","e4","e5","e6","e8","e9","e10","merge","box1","box2","intersectionPointThreePlanes","p1","p2","p3","p1Nor","p2Nor","p3Nor","distancePlaneAndPoint","intersectsPlaneAndPoint","Front","Back","Intersecting","intersectsPlaneAndBox","front","back","intersectsPlaneAndSphere","intersectsRayAndPlane","dir","direction","origin","intersectsRayAndBox","dirX","dirY","dirZ","oriX","oriY","oriZ","tmax","inverse","t1","t2","temp","inverse1","t11","t21","temp1","inverse2","t12","t22","temp2","intersectsRayAndSphere","discriminant","intersectsBoxAndBox","boxA","boxB","intersectsSphereAndSphere","sphereA","sphereB","radiisum","intersectsSphereAndBox","closestPoint","intersectsFrustumAndBox","frustum","getPlane","frustumContainsPoint","near","Intersects","Disjoint","far","top","bottom","Contains","frustumContainsBox","frustumContainsSphere","intersectionType","m11","m12","m13","m21","m22","m23","m31","m32","m33","Float32Array","determinant","a11","a12","a13","a21","a22","a23","a31","a32","a33","identity","invert","rotate","translate","translation","transpose","se","srce","copyFromMatrix","ae","le","re","oe","l11","l12","l13","l21","l22","l23","l31","l32","l33","r11","r12","r13","r21","r22","r23","r31","r32","r33","ee","inv","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","scaling","b12","b22","b32","det","normalMatrix","mat4","a14","a24","a34","a41","a42","a43","a44","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","sin","cos","conjugate","getAxisAngle","acos","toEuler","_toYawPitchRoll","toYawPitchRoll","rotateX","rad","rotateY","rotateZ","rotationAxisAngle","axis","quat","rotateAxisAngle","_tempQuat1","ww","unit","test","atan2","asin","aw","bw","normalAxis","_tempVector3","rotationEuler","rotationYawPitchRoll","yaw","pitch","roll","halfRoll","halfPitch","halfYaw","sinRoll","cosRoll","sinPitch","cosPitch","sinYaw","cosYaw","cosYawPitch","sinYawPitch","rotationMatrix3x3","half","me","invDot","slerp","amount","opposite","sign","invSin","rotationX","rotationY","rotationZ","m14","m24","m34","m41","m42","m43","m44","decompose","rm","_tempMat30","rme","sx","sy","sz","invSX","invSY","invSZ","getRotation","trace","s1","s2","s3","getScaling","getTranslation","l14","l24","l34","l41","l42","l43","l44","r14","r24","r34","r41","r42","r43","r44","multiplyScalar","scalar","rotationTranslation","affineTransformation","xy","xz","yz","lookAt","eye","xAxis","yAxis","zAxis","ortho","lr","bt","nf","perspective","fovY","aspect","f","tan","b13","b21","b23","b31","b33","_identity","q","WebXRFrame","session","_session","inputs","_platformFrame","_updateController","_updateCamera","_this__session","_platformReferenceSpace","inputSources","gripSpace","targetRaySpace","getPose","referenceSpace","emulatedPosition","orientation","TrackingLost","_platformLayer","layer","viewerPose","getViewerPose","hadUpdateCenterViewer","views","view","viewToCamera","xrViewport","getViewport","leftCameraDevice","rightCameraDevice","leftCameraPose","rightCameraPose","cameraPose","WebXRSession","_events","_screenPointers","_inputEventTypeMap","selectstart","select","selectend","squeezestart","squeeze","squeezeend","_targetRayModeMap","gaze","Gaze","screen","_frame","xrRequestAnimationFrame","onFrame","time","callback","_onSessionEvent","fixedFoveation","onSessionExitCallBack","_onSessionExitCallBack","onSessionEvent","inputSourceEvent","screenPointers","axes","gamepad","idx","emptyIdx","WebXRDevice","isSecureContext","navigator","xr","isSessionSupported","isSupported","XRPlane","XRImageTrackingResult","platformFeatureConstructor","_platformFeatureMap","options","requiredFeatures","promiseArr","promise","_assembleOptions","all","gl","attributes","getContextAttributes","makeXRCompatible","scaleFactor","XRWebGLLayer","getNativeFramebufferScaleFactor","undefined","renderState","layers","isWebGL2","updateRenderState","layerInit","antialias","alpha","depth","stencil","framebufferScaleFactor","baseLayer","requestReferenceSpace","registerXRPlatformFeature","WebXRTrackableFeature","WebXRFeature1","WebXRAnchorTracking","WebXRTrackableFeature1","_addAnchor","platformReferenceSpace","trackedAnchors","has","_updateTrackedAnchor","Submitted","WaitingDestroy","delete","createAnchor","XRRigidTransform","Rejected","space","xrPose","anchorSpace","WebXRImageTracking","images","_trackingScoreStatus","NotReceived","_tempIdx","_tempArr","_images","_requestTrackingScore","Waiting","generateTracked","tempArr","trackingResults","getImageTrackingResults","trackingResult","index","requestTrackingImage","_updateTrackedImage","createImageBitmap","trackedImages","bitmaps","widthInMeters","getTrackedImageScores","trackingScores","trackingScore","Received","trackedImage","imageSpace","measuredPhysicalWidth","measuredWidthInMeters","WebXRPlaneTracking","detectedMode","detectedPlanes","worldInformation","xrPlane","_updatePlane","lastDetectedPlanes","_lastDetectedPlanes","lastChangedTime","planePose","planeSpace","planeMode","Horizontal","Vertical","oriPolygon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.min.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/tslib@2.6.0/node_modules/tslib/tslib.es6.mjs","../../xr/dist/module.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../../math/dist/module.js","../src/feature/WebXRImageTracking.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../src/Util.ts","../src/WebXRFrame.ts","../src/WebXRSession.ts","../src/WebXRDevice.ts","../src/feature/WebXRTrackableFeature.ts","../src/feature/WebXRFeature.ts","../src/feature/WebXRAnchorTracking.ts","../src/feature/WebXRPlaneTracking.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}\nexport function _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","export 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 { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _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","/******************************************************************************\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 */\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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\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\") throw new TypeError(\"Object expected.\");\n var dispose;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\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};\n","import { CameraType, Matrix, CameraClearFlags, Vector3, Quaternion, Rect, SafeLoopArray, XRManager, Ray, Plane, Vector2, decoder, AssetPromise, resourceLoader, decode, Loader } from '@galacean/engine';\n\nfunction _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _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}\n\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _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}\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}\n\nfunction _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}\n\n/**\n * Enumerates some input devices that can be tracked.(including status, posture and other information)\n */ var XRTrackedInputDevice;\n(function(XRTrackedInputDevice) {\n XRTrackedInputDevice[XRTrackedInputDevice[/** Controller */ \"Controller\"] = 0] = \"Controller\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Left controller */ \"LeftController\"] = 1] = \"LeftController\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Right controller */ \"RightController\"] = 2] = \"RightController\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Camera */ \"Camera\"] = 3] = \"Camera\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Left camera */ \"LeftCamera\"] = 4] = \"LeftCamera\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Right camera */ \"RightCamera\"] = 5] = \"RightCamera\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Head */ \"LeftHand\"] = 6] = \"LeftHand\";\n XRTrackedInputDevice[XRTrackedInputDevice[/** Right hand */ \"RightHand\"] = 7] = \"RightHand\";\n})(XRTrackedInputDevice || (XRTrackedInputDevice = {}));\n\n/**\n * The state of an XRSession.\n */ var XRSessionState;\n(function(XRSessionState) {\n XRSessionState[XRSessionState[/** Not initialized. */ \"None\"] = 0] = \"None\";\n XRSessionState[XRSessionState[/** Initializing session. */ \"Initializing\"] = 1] = \"Initializing\";\n XRSessionState[XRSessionState[/** Initialized but not started. */ \"Initialized\"] = 2] = \"Initialized\";\n XRSessionState[XRSessionState[/** Running. */ \"Running\"] = 3] = \"Running\";\n XRSessionState[XRSessionState[/** Paused. */ \"Paused\"] = 4] = \"Paused\";\n})(XRSessionState || (XRSessionState = {}));\n\n/**\n * The manager of XR camera.\n */ var XRCameraManager = /*#__PURE__*/ function() {\n function XRCameraManager(_xrManager) {\n this._xrManager = _xrManager;\n }\n var _proto = XRCameraManager.prototype;\n /**\n * Attach the camera to the specified input type(Camera, LeftCamera or RightCamera).\n * The camera entity need to be moved to the XROrigin entity.\n * @param type - The input type\n * @param camera - The camera to be attached\n */ _proto.attachCamera = function attachCamera(type, camera) {\n var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);\n var preCamera = xrCamera._camera;\n if (preCamera !== camera) {\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n switch(type){\n case XRTrackedInputDevice.Camera:\n // @ts-ignore\n camera._cameraType = CameraType.XRCenterCamera;\n break;\n case XRTrackedInputDevice.LeftCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRLeftCamera;\n break;\n case XRTrackedInputDevice.RightCamera:\n // @ts-ignore\n camera._cameraType = CameraType.XRRightCamera;\n break;\n }\n xrCamera._camera = camera;\n }\n };\n /**\n * Detach the camera from the specified input type.\n * @param type - The input type\n * @returns The camera that was detached\n */ _proto.detachCamera = function detachCamera(type) {\n var xrCamera = this._xrManager.inputManager.getTrackedDevice(type);\n var preCamera = xrCamera._camera;\n // @ts-ignore\n preCamera && (preCamera._cameraType = CameraType.Normal);\n xrCamera._camera = null;\n return preCamera;\n };\n /**\n * @internal\n */ _proto._onSessionStart = function _onSessionStart() {};\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {\n var _this__xrManager_inputManager = this._xrManager.inputManager, cameras = _this__xrManager_inputManager._cameras;\n for(var i = 0, n = cameras.length; i < n; i++){\n var cameraDevice = cameras[i];\n var camera = cameraDevice._camera;\n if (!camera) continue;\n // sync position and rotation\n var transform = camera.entity.transform;\n var pose = cameraDevice.pose;\n transform.position = pose.position;\n transform.rotationQuaternion = pose.rotation;\n // sync viewport\n var viewport = camera.viewport;\n var _cameraDevice_viewport = cameraDevice.viewport, x = _cameraDevice_viewport.x, y = _cameraDevice_viewport.y, width = _cameraDevice_viewport.width, height = _cameraDevice_viewport.height;\n if (!(x === viewport.x && y === viewport.y && width === viewport.z && height === viewport.w)) {\n camera.viewport = viewport.set(x, y, width, height);\n }\n // sync project matrix\n if (!Matrix.equals(camera.projectionMatrix, cameraDevice.projectionMatrix)) {\n camera.projectionMatrix = cameraDevice.projectionMatrix;\n }\n }\n };\n /**\n * @internal\n */ _proto._onSessionExit = function _onSessionExit() {};\n /**\n * @internal\n */ _proto._getIgnoreClearFlags = function _getIgnoreClearFlags(cameraType) {\n if (cameraType === CameraType.XRCenterCamera) {\n if (this._xrManager.sessionManager.state === XRSessionState.Running) {\n return CameraClearFlags.Color;\n } else {\n return CameraClearFlags.None;\n }\n } else {\n return CameraClearFlags.None;\n }\n };\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {};\n _create_class(XRCameraManager, [\n {\n key: \"fixedFoveation\",\n get: /**\n * The fixed foveation of the camera.\n */ function get() {\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n if (platformSession) {\n return platformSession.getFixedFoveation();\n } else {\n throw new Error(\"XR session is not available.\");\n }\n },\n set: function set(value) {\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n if (platformSession) {\n platformSession.setFixedFoveation(value);\n } else {\n throw new Error(\"XR session is not available.\");\n }\n }\n }\n ]);\n return XRCameraManager;\n}();\n\n/**\n * Data for describing pose in the XR space.\n */ var XRPose = function XRPose() {\n /** The position of the pose in XR space. */ this.position = new Vector3();\n /** The rotation of the pose in XR space. */ this.rotation = new Quaternion();\n /** The matrix of the pose in XR space. */ this.matrix = new Matrix();\n /** The inverse matrix of the pose in XR space. */ this.inverseMatrix = new Matrix();\n};\n\n/**\n * Enum for XR tracking state.\n */ var XRTrackingState;\n(function(XRTrackingState) {\n XRTrackingState[XRTrackingState[/** Not tracking */ \"NotTracking\"] = 0] = \"NotTracking\";\n XRTrackingState[XRTrackingState[/** Tracking */ \"Tracking\"] = 1] = \"Tracking\";\n XRTrackingState[XRTrackingState[/** Lost track */ \"TrackingLost\"] = 2] = \"TrackingLost\";\n})(XRTrackingState || (XRTrackingState = {}));\n\nvar XRInput = function XRInput(type) {\n this.type = type;\n this./** The tracking state of xr input. */ trackingState = XRTrackingState.NotTracking;\n};\n\n/**\n * The XR camera.\n */ var XRCamera = /*#__PURE__*/ function(XRInput1) {\n _inherits(XRCamera, XRInput1);\n function XRCamera() {\n var _this;\n _this = XRInput1.apply(this, arguments) || this;\n /** The pose of the camera in XR space. */ _this.pose = new XRPose();\n /** The viewport of the camera. */ _this.viewport = new Rect();\n /** The projection matrix of the camera. */ _this.projectionMatrix = new Matrix();\n return _this;\n }\n return XRCamera;\n}(XRInput);\n\n/**\n * Enum for XR input button.\n */ var XRInputButton;\n(function(XRInputButton) {\n XRInputButton[XRInputButton[/** None */ \"None\"] = 0x0] = \"None\";\n XRInputButton[XRInputButton[/** Select */ \"Select\"] = 0x1] = \"Select\";\n XRInputButton[XRInputButton[/** Select */ \"Trigger\"] = 0x1] = \"Trigger\";\n XRInputButton[XRInputButton[/** Squeeze */ \"Squeeze\"] = 0x2] = \"Squeeze\";\n XRInputButton[XRInputButton[/** TouchPad */ \"TouchPad\"] = 0x4] = \"TouchPad\";\n XRInputButton[XRInputButton[/** A */ \"AButton\"] = 0x8] = \"AButton\";\n XRInputButton[XRInputButton[/** B */ \"BButton\"] = 0x10] = \"BButton\";\n})(XRInputButton || (XRInputButton = {}));\n\n/**\n * The XR controller.\n */ var XRController = /*#__PURE__*/ function(XRInput1) {\n _inherits(XRController, XRInput1);\n function XRController() {\n var _this;\n _this = XRInput1.apply(this, arguments) || this;\n /** The grip space pose of the controller in XR space. */ _this.gripPose = new XRPose();\n /** The target ray space pose of the controller in XR space. */ _this.targetRayPose = new XRPose();\n /** The currently pressed buttons of this controller. */ _this.pressedButtons = XRInputButton.None;\n /** Record button lifted. */ _this.down = XRInputButton.None;\n /** Record button pressed. */ _this.up = XRInputButton.None;\n return _this;\n }\n var _proto = XRController.prototype;\n /**\n *\n * Returns whether the button is pressed.\n * @param button - The button to check\n * @returns Whether the button is pressed\n */ _proto.isButtonDown = function isButtonDown(button) {\n return (this.down & button) !== 0;\n };\n /**\n * Returns whether the button is lifted.\n * @param button - The button to check\n * @returns Whether the button is lifted\n */ _proto.isButtonUp = function isButtonUp(button) {\n return (this.up & button) !== 0;\n };\n /**\n * Returns whether the button is held down.\n * @param button - The button to check\n * @returns Whether the button is held down\n */ _proto.isButtonHeldDown = function isButtonHeldDown(button) {\n return (this.pressedButtons & button) !== 0;\n };\n return XRController;\n}(XRInput);\n\nvar XRInputEventType;\n(function(XRInputEventType) {\n XRInputEventType[XRInputEventType[\"SelectStart\"] = 0] = \"SelectStart\";\n XRInputEventType[XRInputEventType[\"Select\"] = 1] = \"Select\";\n XRInputEventType[XRInputEventType[\"SelectEnd\"] = 2] = \"SelectEnd\";\n XRInputEventType[XRInputEventType[\"SqueezeStart\"] = 3] = \"SqueezeStart\";\n XRInputEventType[XRInputEventType[\"Squeeze\"] = 4] = \"Squeeze\";\n XRInputEventType[XRInputEventType[\"SqueezeEnd\"] = 5] = \"SqueezeEnd\";\n})(XRInputEventType || (XRInputEventType = {}));\n\nvar XRTargetRayMode;\n(function(XRTargetRayMode) {\n XRTargetRayMode[XRTargetRayMode[\"Gaze\"] = 0] = \"Gaze\";\n XRTargetRayMode[XRTargetRayMode[\"TrackedPointer\"] = 1] = \"TrackedPointer\";\n XRTargetRayMode[XRTargetRayMode[\"Screen\"] = 2] = \"Screen\";\n})(XRTargetRayMode || (XRTargetRayMode = {}));\n\n/**\n * The manager of XR input.\n */ var XRInputManager = /*#__PURE__*/ function() {\n function XRInputManager(_xrManager, _engine) {\n this._xrManager = _xrManager;\n this._engine = _engine;\n this./** @internal */ _cameras = [];\n this./** @internal */ _controllers = [];\n this._added = [];\n this._removed = [];\n this._trackedDevices = [];\n this._statusSnapshot = [];\n this._listeners = new SafeLoopArray();\n var _this = this, trackedDevices = _this._trackedDevices, controllers = _this._controllers, cameras = _this._cameras;\n for(var i = 0; i < 6; i++){\n switch(i){\n case XRTrackedInputDevice.Camera:\n case XRTrackedInputDevice.LeftCamera:\n case XRTrackedInputDevice.RightCamera:\n cameras.push(trackedDevices[i] = new XRCamera(i));\n break;\n case XRTrackedInputDevice.Controller:\n case XRTrackedInputDevice.LeftController:\n case XRTrackedInputDevice.RightController:\n controllers.push(trackedDevices[i] = new XRController(i));\n break;\n }\n }\n this._statusSnapshot.fill(XRTrackingState.NotTracking, 0, trackedDevices.length);\n }\n var _proto = XRInputManager.prototype;\n /**\n * Returns the tracked device instance.\n * @param type - The tracked input device type\n * @returns The input instance\n */ _proto.getTrackedDevice = function getTrackedDevice(type) {\n return this._trackedDevices[type];\n };\n /**\n * Add a listener for tracked device changes.\n * @param listener - The listener to add\n */ _proto.addTrackedDeviceChangedListener = function addTrackedDeviceChangedListener(listener) {\n this._listeners.push({\n fn: listener\n });\n };\n /**\n * Remove a listener of tracked device changes.\n * @param listener - The listener to remove\n */ _proto.removeTrackedDeviceChangedListener = function removeTrackedDeviceChangedListener(listener) {\n this._listeners.findAndRemove(function(value) {\n return value.fn === listener ? value.destroyed = true : false;\n });\n };\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {\n var _this = this, added = _this._added, removed = _this._removed, statusSnapshot = _this._statusSnapshot;\n var _this1 = this, trackedDevices = _this1._trackedDevices, controllers = _this1._controllers;\n // Reset data\n added.length = removed.length = 0;\n for(var i = 0, n = controllers.length; i < n; i++){\n var controller = controllers[i];\n controller.down = controller.up = 0;\n }\n // Handle events and update tracked devices\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n var platformEvents = platformSession.events;\n for(var i1 = 0, n1 = platformEvents.length; i1 < n1; i1++){\n this._handleEvent(platformEvents[i1]);\n }\n platformSession.resetEvents();\n platformSession.frame.updateInputs(trackedDevices);\n for(var i2 = 0, n2 = trackedDevices.length; i2 < n2; i2++){\n var input = trackedDevices[i2];\n if (!input) continue;\n var nowState = input.trackingState;\n if (statusSnapshot[i2] === XRTrackingState.Tracking) {\n if (nowState !== XRTrackingState.Tracking) {\n removed.push(input);\n }\n } else {\n if (nowState === XRTrackingState.Tracking) {\n added.push(input);\n }\n }\n statusSnapshot[i2] = nowState;\n }\n // Dispatch change event\n if (added.length > 0 || removed.length > 0) {\n var listeners = this._listeners.getLoopArray();\n for(var i3 = 0, n3 = listeners.length; i3 < n3; i3++){\n var listener = listeners[i3];\n !listener.destroyed && listener.fn(added, removed);\n }\n }\n };\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {\n this._listeners.findAndRemove(function(value) {\n return value.destroyed = true;\n });\n };\n _proto._handleEvent = function _handleEvent(event) {\n var input = this._trackedDevices[event.input];\n switch(event.targetRayMode){\n case XRTargetRayMode.TrackedPointer:\n switch(event.type){\n case XRInputEventType.SelectStart:\n input.down |= XRInputButton.Select;\n input.pressedButtons |= XRInputButton.Select;\n break;\n case XRInputEventType.SelectEnd:\n input.up |= XRInputButton.Select;\n input.pressedButtons &= ~XRInputButton.Select;\n break;\n case XRInputEventType.SqueezeStart:\n input.down |= XRInputButton.Squeeze;\n input.pressedButtons |= XRInputButton.Squeeze;\n break;\n case XRInputEventType.SqueezeEnd:\n input.up |= XRInputButton.Squeeze;\n input.pressedButtons &= ~XRInputButton.Squeeze;\n break;\n }\n break;\n case XRTargetRayMode.Screen:\n var _this = this, engine = _this._engine;\n // @ts-ignore\n var target = engine.inputManager._pointerManager._target;\n // @ts-ignore\n var canvas = engine.canvas._webCanvas;\n var clientWidth = canvas.clientWidth, clientHeight = canvas.clientHeight;\n var clientX = clientWidth * (event.x + 1) * 0.5;\n var clientY = clientHeight * (event.y + 1) * 0.5;\n // @ts-ignore\n switch(event.type){\n case XRInputEventType.SelectStart:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerdown\", event.id, clientX, clientY));\n break;\n case XRInputEventType.Select:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointermove\", event.id, clientX, clientY));\n break;\n case XRInputEventType.SelectEnd:\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerup\", event.id, clientX, clientY));\n target.dispatchEvent(this._makeUpPointerEvent(\"pointerleave\", event.id, clientX, clientY));\n break;\n }\n break;\n }\n };\n _proto._makeUpPointerEvent = function _makeUpPointerEvent(type, pointerId, clientX, clientY) {\n var eventInitDict = {\n pointerId: pointerId,\n clientX: clientX,\n clientY: clientY\n };\n switch(type){\n case \"pointerdown\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 1;\n break;\n case \"pointermove\":\n eventInitDict.button = -1;\n eventInitDict.buttons = 1;\n break;\n case \"pointerup\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n case \"pointerleave\":\n eventInitDict.button = 0;\n eventInitDict.buttons = 0;\n break;\n }\n return new PointerEvent(type, eventInitDict);\n };\n return XRInputManager;\n}();\n\n/**\n * The type of XR session.\n */ var XRSessionMode;\n(function(XRSessionMode) {\n XRSessionMode[XRSessionMode[\"None\"] = 0] = \"None\";\n XRSessionMode[XRSessionMode[\"AR\"] = 1] = \"AR\";\n XRSessionMode[XRSessionMode[\"VR\"] = 2] = \"VR\";\n})(XRSessionMode || (XRSessionMode = {}));\n\n/**\n * XRSessionManager manages the life cycle of XR sessions.\n */ var XRSessionManager = /*#__PURE__*/ function() {\n function XRSessionManager(_xrManager, _engine) {\n this._xrManager = _xrManager;\n this._engine = _engine;\n this._mode = XRSessionMode.None;\n this._state = XRSessionState.None;\n this._listeners = new SafeLoopArray();\n // @ts-ignore\n this._rhi = _engine._hardwareRenderer;\n this._raf = requestAnimationFrame.bind(window);\n this._caf = cancelAnimationFrame.bind(window);\n this._onSessionExit = this._onSessionExit.bind(this);\n }\n var _proto = XRSessionManager.prototype;\n /**\n * Check if the specified mode is supported.\n * @param mode - The mode to check\n * @returns A promise that resolves if the mode is supported, otherwise rejects\n */ _proto.isSupportedMode = function isSupportedMode(mode) {\n return this._xrManager._platformDevice.isSupportedSessionMode(mode);\n };\n /**\n * Run the session.\n */ _proto.run = function run() {\n var _this = this, platformSession = _this._platformSession, engine = _this._engine;\n if (!platformSession) {\n throw new Error(\"Without session to run.\");\n }\n platformSession.start();\n this._setState(XRSessionState.Running);\n this._xrManager._onSessionStart();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n };\n /**\n * Stop the session.\n */ _proto.stop = function stop() {\n var _this = this, platformSession = _this._platformSession, engine = _this._engine, rhi = _this._rhi;\n if (!platformSession) {\n throw new Error(\"Without session to stop.\");\n }\n if (this._state !== XRSessionState.Running) {\n throw new Error(\"Session is not running.\");\n }\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.stop();\n this._setState(XRSessionState.Paused);\n this._xrManager._onSessionStop();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n };\n /**\n * Add a listening function for session state changes.\n * @param listener - The listening function\n */ _proto.addStateChangedListener = function addStateChangedListener(listener) {\n this._listeners.push({\n fn: listener\n });\n };\n /**\n * Remove a listening function of session state changes.\n * @param listener - The listening function\n */ _proto.removeStateChangedListener = function removeStateChangedListener(listener) {\n this._listeners.findAndRemove(function(value) {\n return value.fn === listener ? value.destroyed = true : false;\n });\n };\n /**\n * @internal\n */ _proto._setState = function _setState(value) {\n this._state = value;\n var listeners = this._listeners.getLoopArray();\n for(var i = 0, n = listeners.length; i < n; i++){\n var listener = listeners[i];\n !listener.destroyed && listener.fn(value);\n }\n };\n /**\n * @internal\n */ _proto._initialize = function _initialize(mode, features) {\n var _this = this;\n return new Promise(function(resolve, reject) {\n var xrManager = _this._xrManager;\n // Initialize all features\n var platformFeatures = [];\n for(var i = 0, n = features.length; i < n; i++){\n var _features_i = features[i], platformFeature = _features_i._platformFeature;\n platformFeature && platformFeatures.push(platformFeature);\n }\n xrManager._platformDevice.requestSession(_this._rhi, mode, platformFeatures).then(function(platformSession) {\n _this._mode = mode;\n _this._platformSession = platformSession;\n _this._setState(XRSessionState.Initialized);\n platformSession.setSessionExitCallBack(_this._onSessionExit);\n platformSession.addEventListener();\n xrManager._onSessionInit();\n resolve();\n }, reject);\n });\n };\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {\n var _this = this, rhi = _this._rhi, platformSession = _this._platformSession;\n rhi._mainFrameBuffer = platformSession.framebuffer;\n rhi._mainFrameWidth = platformSession.framebufferWidth;\n rhi._mainFrameHeight = platformSession.framebufferHeight;\n };\n /**\n * @internal\n */ _proto._getRequestAnimationFrame = function _getRequestAnimationFrame() {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.requestAnimationFrame;\n } else {\n return this._raf;\n }\n };\n /**\n * @internal\n */ _proto._getCancelAnimationFrame = function _getCancelAnimationFrame() {\n if (this._state === XRSessionState.Running) {\n return this._platformSession.cancelAnimationFrame;\n } else {\n return this._caf;\n }\n };\n /**\n * @internal\n */ _proto._exit = function _exit() {\n var _this = this, platformSession = _this._platformSession;\n if (!platformSession) {\n return Promise.reject(\"Without session to stop.\");\n }\n return platformSession.end();\n };\n _proto._onSessionExit = function _onSessionExit() {\n var _this = this, rhi = _this._rhi, platformSession = _this._platformSession, engine = _this._engine;\n rhi._mainFrameBuffer = null;\n rhi._mainFrameWidth = rhi._mainFrameHeight = 0;\n platformSession.removeEventListener();\n this._platformSession = null;\n this._setState(XRSessionState.None);\n this._xrManager._onSessionExit();\n if (!engine.isPaused) {\n engine.pause();\n engine.resume();\n }\n };\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {\n this._listeners.findAndRemove(function(value) {\n return value.destroyed = true;\n });\n this._raf = this._caf = null;\n };\n _create_class(XRSessionManager, [\n {\n key: \"mode\",\n get: /**\n * The current session mode( AR or VR ).\n */ function get() {\n return this._mode;\n }\n },\n {\n key: \"state\",\n get: /**\n * Return the current session state.\n */ function get() {\n return this._state;\n }\n },\n {\n key: \"supportedFrameRate\",\n get: /**\n * Return a list of supported frame rates.(only available in-session)\n */ function get() {\n return this._platformSession.supportedFrameRates;\n }\n },\n {\n key: \"frameRate\",\n get: /**\n * Return the current frame rate as reported by the device.\n */ function get() {\n return this._platformSession.frameRate;\n }\n }\n ]);\n return XRSessionManager;\n}();\n\n/**\n * @internal\n */ var XRManagerExtended = /*#__PURE__*/ function(XRManager1) {\n _inherits(XRManagerExtended, XRManager1);\n function XRManagerExtended() {\n return XRManager1.apply(this, arguments);\n }\n var _proto = XRManagerExtended.prototype;\n _proto.isSupportedFeature = function isSupportedFeature(feature) {\n return this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(feature));\n };\n _proto.addFeature = function addFeature(type) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot add feature when the session is initialized.\");\n }\n if (!this._platformDevice.isSupportedFeature(XRManagerExtended._featureMap.get(type))) {\n throw new Error(\"The feature is not supported\");\n }\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n if (_instanceof(features[i], type)) throw new Error(\"The feature has been added\");\n }\n var feature = _construct(type, [].concat(this, args));\n features.push(feature);\n return feature;\n };\n _proto.getFeature = function getFeature(type) {\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n if (_instanceof(feature, type)) {\n return feature;\n }\n }\n };\n _proto.enterXR = function enterXR(sessionMode, autoRun) {\n if (autoRun === void 0) autoRun = true;\n var _this = this;\n var sessionManager = this.sessionManager;\n if (sessionManager._platformSession) {\n throw new Error(\"Please exit XR immersive mode first.\");\n }\n if (!this._origin) {\n throw new Error(\"Please set origin before enter XR.\");\n }\n return new Promise(function(resolve, reject) {\n // 1. Check if this xr mode is supported\n sessionManager.isSupportedMode(sessionMode).then(function() {\n sessionManager._setState(XRSessionState.Initializing);\n // 2. Initialize session\n sessionManager._initialize(sessionMode, _this.features).then(function() {\n autoRun && sessionManager.run();\n resolve();\n }, reject);\n }, reject);\n });\n };\n _proto.exitXR = function exitXR() {\n var _this = this;\n return new Promise(function(resolve, reject) {\n _this.sessionManager._exit().then(function() {\n resolve();\n }, reject);\n });\n };\n _proto._initialize = function _initialize(engine, xrDevice) {\n this._features = [];\n this._platformDevice = xrDevice;\n this.sessionManager = new XRSessionManager(this, engine);\n this.inputManager = new XRInputManager(this, engine);\n this.cameraManager = new XRCameraManager(this);\n };\n _proto._update = function _update() {\n var sessionManager = this.sessionManager;\n if (sessionManager.state !== XRSessionState.Running) return;\n sessionManager._onUpdate();\n this.inputManager._onUpdate();\n this.cameraManager._onUpdate();\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onUpdate();\n }\n };\n _proto._destroy = function _destroy() {\n var _this = this;\n if (this.sessionManager._platformSession) {\n this.exitXR().then(function() {\n _this.sessionManager._onDestroy();\n _this.inputManager._onDestroy();\n _this.cameraManager._onDestroy();\n });\n } else {\n this.sessionManager._onDestroy();\n this.inputManager._onDestroy();\n this.cameraManager._onDestroy();\n }\n };\n _proto._getRequestAnimationFrame = function _getRequestAnimationFrame() {\n return this.sessionManager._getRequestAnimationFrame();\n };\n _proto._getCancelAnimationFrame = function _getCancelAnimationFrame() {\n return this.sessionManager._getCancelAnimationFrame();\n };\n _proto._getCameraIgnoreClearFlags = function _getCameraIgnoreClearFlags(type) {\n return this.cameraManager._getIgnoreClearFlags(type);\n };\n /**\n * @internal\n */ _proto._onSessionStop = function _onSessionStop() {\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionStop();\n }\n };\n /**\n * @internal\n */ _proto._onSessionInit = function _onSessionInit() {\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionInit();\n }\n };\n /**\n * @internal\n */ _proto._onSessionStart = function _onSessionStart() {\n this.cameraManager._onSessionStart();\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionStart();\n }\n };\n /**\n * @internal\n */ _proto._onSessionExit = function _onSessionExit() {\n this.cameraManager._onSessionExit();\n var features = this.features;\n for(var i = 0, n = features.length; i < n; i++){\n var feature = features[i];\n feature.enabled && feature._onSessionExit();\n feature._onDestroy();\n }\n features.length = 0;\n };\n _create_class(XRManagerExtended, [\n {\n key: \"features\",\n get: function get() {\n return this._features;\n }\n },\n {\n key: \"origin\",\n get: function get() {\n return this._origin;\n },\n set: function set(value) {\n if (this.sessionManager._platformSession) {\n throw new Error(\"Cannot set origin when the session is initialized.\");\n }\n this._origin = value;\n }\n }\n ]);\n return XRManagerExtended;\n}(XRManager);\n(function() {\n /** @internal */ XRManagerExtended._featureMap = new Map();\n})();\n/**\n * @internal\n */ function registerXRFeature(type) {\n return function(feature) {\n XRManagerExtended._featureMap.set(feature, type);\n };\n}\n// 实现混入的函数\nfunction ApplyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach(function(baseCtor) {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach(function(name) {\n Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null));\n });\n });\n}\nApplyMixins(XRManager, [\n XRManagerExtended\n]);\n\n/**\n * The base class of XR feature manager.\n */ var XRFeature = /*#__PURE__*/ function() {\n function XRFeature(_xrManager, _type) {\n for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){\n args[_key - 2] = arguments[_key];\n }\n var _xrManager__platformDevice;\n this._xrManager = _xrManager;\n this._type = _type;\n this._enabled = true;\n this._platformFeature = (_xrManager__platformDevice = _xrManager._platformDevice).createPlatformFeature.apply(_xrManager__platformDevice, [].concat(_type, args));\n this._onEnable();\n }\n var _proto = XRFeature.prototype;\n /**\n * @internal\n */ _proto._onEnable = function _onEnable() {};\n /**\n * @internal\n */ _proto._onDisable = function _onDisable() {};\n /**\n * @internal\n */ _proto._onUpdate = function _onUpdate() {};\n /**\n * @internal\n */ _proto._onSessionInit = function _onSessionInit() {};\n /**\n * @internal\n */ _proto._onSessionStart = function _onSessionStart() {};\n /**\n * @internal\n */ _proto._onSessionStop = function _onSessionStop() {};\n /**\n * @internal\n */ _proto._onSessionExit = function _onSessionExit() {};\n /**\n * @internal\n */ _proto._onDestroy = function _onDestroy() {};\n _create_class(XRFeature, [\n {\n key: \"enabled\",\n get: /**\n * Returns whether the feature is enabled.\n */ function get() {\n return this._enabled;\n },\n set: function set(value) {\n if (this.enabled !== value) {\n this._enabled = value;\n value ? this._onEnable() : this._onDisable();\n }\n }\n }\n ]);\n return XRFeature;\n}();\n\nvar XRFeatureType;\n(function(XRFeatureType) {\n XRFeatureType[XRFeatureType[\"AnchorTracking\"] = 0] = \"AnchorTracking\";\n XRFeatureType[XRFeatureType[\"ImageTracking\"] = 1] = \"ImageTracking\";\n XRFeatureType[XRFeatureType[\"PlaneTracking\"] = 2] = \"PlaneTracking\";\n XRFeatureType[XRFeatureType[\"HitTest\"] = 3] = \"HitTest\";\n})(XRFeatureType || (XRFeatureType = {}));\n\nvar XRRequestTrackingState;\n(function(XRRequestTrackingState) {\n XRRequestTrackingState[XRRequestTrackingState[\"None\"] = 0] = \"None\";\n XRRequestTrackingState[XRRequestTrackingState[\"Submitted\"] = 1] = \"Submitted\";\n XRRequestTrackingState[XRRequestTrackingState[\"Resolved\"] = 2] = \"Resolved\";\n XRRequestTrackingState[XRRequestTrackingState[\"Rejected\"] = 3] = \"Rejected\";\n XRRequestTrackingState[XRRequestTrackingState[\"Destroyed\"] = 4] = \"Destroyed\";\n XRRequestTrackingState[XRRequestTrackingState[\"WaitingDestroy\"] = 5] = \"WaitingDestroy\";\n})(XRRequestTrackingState || (XRRequestTrackingState = {}));\n\n/**\n * The base class of XR trackable manager.\n */ var XRTrackableFeature = /*#__PURE__*/ function(XRFeature1) {\n _inherits(XRTrackableFeature, XRFeature1);\n function XRTrackableFeature() {\n var _this;\n _this = XRFeature1.apply(this, arguments) || this;\n _this._requestTrackings = [];\n _this._tracked = [];\n _this._added = [];\n _this._updated = [];\n _this._removed = [];\n _this._statusSnapshot = {};\n _this._listeners = new SafeLoopArray();\n return _this;\n }\n var _proto = XRTrackableFeature.prototype;\n /**\n * Add a listening function for tracked object changes.\n * @param listener - The listening function\n */ _proto.addChangedListener = function addChangedListener(listener) {\n this._listeners.push({\n fn: listener\n });\n };\n /**\n * Remove a listening function of tracked object changes.\n * @param listener - The listening function\n */ _proto.removeChangedListener = function removeChangedListener(listener) {\n this._listeners.findAndRemove(function(value) {\n return value.fn === listener ? value.destroyed = true : false;\n });\n };\n _proto._onUpdate = function _onUpdate() {\n var _this__xrManager_sessionManager = this._xrManager.sessionManager, platformSession = _this__xrManager_sessionManager._platformSession;\n var platformFrame = platformSession.frame;\n var _this = this, platformFeature = _this._platformFeature, requestTrackings = _this._requestTrackings, statusSnapshot = _this._statusSnapshot, allTracked = _this._tracked, added = _this._added, updated = _this._updated, removed = _this._removed;\n if (!platformFrame || !requestTrackings.length) {\n return;\n }\n if (!platformFeature.checkAvailable(platformSession, platformFrame, requestTrackings)) {\n return;\n }\n added.length = updated.length = removed.length = 0;\n platformFeature.getTrackedResult(platformSession, platformFrame, requestTrackings, this._generateTracked);\n for(var i = 0, n = requestTrackings.length; i < n; i++){\n var requestTracking = requestTrackings[i];\n switch(requestTracking.state){\n case XRRequestTrackingState.Destroyed:\n var destroyedTracked = requestTracking.tracked;\n for(var j = 0, n1 = destroyedTracked.length; j < n1; j++){\n var tracked = destroyedTracked[j];\n var trackId = tracked.id;\n if (statusSnapshot[trackId] === XRTrackingState.Tracking) {\n removed.push(tracked);\n allTracked.splice(allTracked.indexOf(tracked), 1);\n }\n statusSnapshot[trackId] = XRTrackingState.NotTracking;\n }\n break;\n case XRRequestTrackingState.Resolved:\n var tracked1 = requestTracking.tracked;\n for(var j1 = 0, n2 = tracked1.length; j1 < n2; j1++){\n var trackedObject = tracked1[j1];\n var trackId1 = trackedObject.id;\n if (trackedObject.state === XRTrackingState.Tracking) {\n if (statusSnapshot[trackId1] === XRTrackingState.Tracking) {\n updated.push(trackedObject);\n } else {\n added.push(trackedObject);\n statusSnapshot[trackId1] = XRTrackingState.Tracking;\n allTracked.push(trackedObject);\n }\n } else {\n if (statusSnapshot[trackId1] === XRTrackingState.Tracking) {\n removed.push(trackedObject);\n allTracked.splice(allTracked.indexOf(trackedObject), 1);\n }\n statusSnapshot[trackId1] = trackedObject.state;\n }\n }\n break;\n }\n }\n for(var i1 = requestTrackings.length - 1; i1 >= 0; i1--){\n requestTrackings[i1].state === XRRequestTrackingState.Destroyed && requestTrackings.splice(i1, 1);\n }\n if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n var listeners = this._listeners.getLoopArray();\n for(var i2 = 0, n3 = listeners.length; i2 < n3; i2++){\n var listener = listeners[i2];\n !listener.destroyed && listener.fn(added, updated, removed);\n }\n }\n };\n _proto._onSessionStop = function _onSessionStop() {\n this._added.length = this._updated.length = this._removed.length = 0;\n };\n _proto._onSessionExit = function _onSessionExit() {\n // prettier-ignore\n this._requestTrackings.length = this._tracked.length = this._added.length = this._updated.length = this._removed.length = 0;\n this._listeners.findAndRemove(function(value) {\n return value.destroyed = true;\n });\n };\n _proto._addRequestTracking = function _addRequestTracking(requestTracking) {\n var _this = this, platformFeature = _this._platformFeature;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n this._requestTrackings.push(requestTracking);\n platformFeature.onAddRequestTracking(requestTracking);\n };\n _proto._removeRequestTracking = function _removeRequestTracking(requestTracking) {\n var _this = this, platformFeature = _this._platformFeature;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n platformFeature.onDelRequestTracking(requestTracking);\n };\n _proto._removeAllRequestTrackings = function _removeAllRequestTrackings() {\n var _this = this, platformFeature = _this._platformFeature;\n if (this._xrManager.sessionManager._platformSession && !platformFeature.canModifyRequestTrackingAfterInit) {\n throw new Error(XRFeatureType[this._type] + \" request tracking cannot be modified after initialization.\");\n }\n var _this1 = this, requestTrackings = _this1._requestTrackings;\n for(var i = 0, n = requestTrackings.length; i < n; i++){\n platformFeature.onDelRequestTracking(requestTrackings[i]);\n }\n };\n return XRTrackableFeature;\n}(XRFeature);\n(function() {\n XRTrackableFeature._uuid = 0;\n})();\n\n/**\n * The base class of XR tracked object.\n */ var XRTracked = function XRTracked() {\n /** The pose of the trackable in XR space. */ this.pose = new XRPose();\n /** The tracking state of the trackable. */ this.state = XRTrackingState.NotTracking;\n};\n\n/**\n * Enum for the types of hit test that can be performed.\n * Note: currently only supports plane.\n */ var TrackableType;\n(function(TrackableType) {\n TrackableType[TrackableType[/** Tracked plane. */ \"Plane\"] = 0x1] = \"Plane\";\n TrackableType[TrackableType[/** All tracked objects. */ \"All\"] = 0x1] = \"All\";\n})(TrackableType || (TrackableType = {}));\n\n/**\n * XR hit result.\n * It is the detection result returned by using XR HitTest feature.\n */ var XRHitResult = function XRHitResult() {\n /** The position of the hit point. */ this.point = new Vector3();\n /** The normal of the hit point. */ this.normal = new Vector3();\n};\n\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\nfunction __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\ntypeof 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\n/**\n * Enumerates modes of plane in XR.\n */ var XRPlaneMode;\n(function(XRPlaneMode) {\n XRPlaneMode[XRPlaneMode[/** None. */ \"None\"] = 0] = \"None\";\n XRPlaneMode[XRPlaneMode[/** Horizontal */ \"Horizontal\"] = 1] = \"Horizontal\";\n XRPlaneMode[XRPlaneMode[/** Vertical */ \"Vertical\"] = 2] = \"Vertical\";\n XRPlaneMode[XRPlaneMode[/** Includes horizontal and vertical. */ \"EveryThing\"] = 3] = \"EveryThing\";\n})(XRPlaneMode || (XRPlaneMode = {}));\n\n/**\n * @internal\n */ var XRRequestTracking = function XRRequestTracking() {\n /** The status of the current request tracking. */ this.state = XRRequestTrackingState.None;\n /** Tracked instances, make up from the tracking data returned by Session. */ this.tracked = [];\n};\n\n/**\n * The request plane in XR space.\n */ var XRRequestPlane = /*#__PURE__*/ function(XRRequestTracking1) {\n _inherits(XRRequestPlane, XRRequestTracking1);\n function XRRequestPlane(detectionMode) {\n var _this;\n _this = XRRequestTracking1.call(this) || this;\n _this.detectionMode = detectionMode;\n return _this;\n }\n return XRRequestPlane;\n}(XRRequestTracking);\n\n/**\n * The tracked plane in XR space.\n */ var XRTrackedPlane = /*#__PURE__*/ function(XRTracked1) {\n _inherits(XRTrackedPlane, XRTracked1);\n function XRTrackedPlane() {\n var _this;\n _this = XRTracked1.apply(this, arguments) || this;\n /** The points that make up this plane.\n * Note: These points are in the plane coordinate system,\n * and their Y coordinates are all zero.\n */ _this.polygon = [];\n /**\n * Whether this frame changes the attributes of the plane.\n * Note: Includes `polygon` but no `pose`.\n */ _this.attributesDirty = false;\n return _this;\n }\n return XRTrackedPlane;\n}(XRTracked);\n\nvar XRPlaneTracking = /*#__PURE__*/ function(XRTrackableFeature1) {\n _inherits(XRPlaneTracking, XRTrackableFeature1);\n function XRPlaneTracking(xrManager, detectionMode) {\n if (detectionMode === void 0) detectionMode = XRPlaneMode.EveryThing;\n var _this;\n _this = XRTrackableFeature1.call(this, xrManager, XRFeatureType.PlaneTracking, detectionMode) || this;\n _this._addRequestTracking(new XRRequestPlane(detectionMode));\n return _this;\n }\n var _proto = XRPlaneTracking.prototype;\n _proto._generateTracked = function _generateTracked() {\n var plane = new XRTrackedPlane();\n plane.id = XRTrackableFeature._uuid++;\n return plane;\n };\n _create_class(XRPlaneTracking, [\n {\n key: \"detectionMode\",\n get: /**\n * The plane detection mode.\n */ function get() {\n return this._requestTrackings[0].detectionMode;\n }\n },\n {\n key: \"trackedPlanes\",\n get: /**\n * The tracked planes.\n */ function get() {\n return this._tracked;\n }\n }\n ]);\n return XRPlaneTracking;\n}(XRTrackableFeature);\nXRPlaneTracking = __decorate([\n registerXRFeature(XRFeatureType.PlaneTracking)\n], XRPlaneTracking);\n\nvar XRHitTest = /*#__PURE__*/ function(XRFeature1) {\n _inherits(XRHitTest, XRFeature1);\n function XRHitTest(xrManager) {\n var _this;\n _this = XRFeature1.call(this, xrManager, XRFeatureType.HitTest) || this;\n _this._tempRay = new Ray();\n _this._tempPlane = new Plane();\n _this._tempVec2 = new Vector2();\n _this._tempVec30 = new Vector3();\n _this._tempVec31 = new Vector3();\n _this._tempVec32 = new Vector3();\n _this._tempVec33 = new Vector3();\n _this._tempVec34 = new Vector3();\n _this._tempVec35 = new Vector3();\n return _this;\n }\n var _proto = XRHitTest.prototype;\n /**\n * Hit test.\n * @param ray - The ray to test\n * @param type - The type of hit test\n * @returns The hit result\n */ _proto.hitTest = function hitTest(ray, type) {\n var result = [];\n if (type & TrackableType.Plane) {\n this._hitTestPlane(ray, result);\n }\n return result;\n };\n /**\n * Screen hit test.\n * @param x - The x coordinate of the screen point\n * @param y - The y coordinate of the screen point\n * @param type - The type of hit test\n * @returns The hit result\n */ _proto.screenHitTest = function screenHitTest(x, y, type) {\n var _this = this, xrManager = _this._xrManager;\n if (xrManager.sessionManager.mode !== XRSessionMode.AR) {\n throw new Error(\"Only AR mode supports using screen ray hit test.\");\n }\n var _xrManager_inputManager_getTrackedDevice = xrManager.inputManager.getTrackedDevice(XRTrackedInputDevice.Camera), camera = _xrManager_inputManager_getTrackedDevice._camera;\n if (!camera) {\n throw new Error(\"No camera available.\");\n }\n var ray = camera.screenPointToRay(this._tempVec2.set(x, y), this._tempRay);\n return this.hitTest(ray, type);\n };\n _proto._hitTestPlane = function _hitTestPlane(ray, result) {\n var planeManager = this._xrManager.getFeature(XRPlaneTracking);\n if (!planeManager || !planeManager.enabled) {\n throw new Error(\"The plane estimation function needs to be turned on for plane hit test.\");\n }\n var _this = this, plane = _this._tempPlane, normal = _this._tempVec30, hitPoint = _this._tempVec31, hitPointInPlane = _this._tempVec32;\n var trackedPlanes = planeManager.trackedPlanes;\n for(var i = 0, n = trackedPlanes.length; i < n; i++){\n var trackedPlane = trackedPlanes[i];\n normal.set(0, 1, 0).transformNormal(trackedPlane.pose.matrix);\n plane.normal.copyFrom(normal);\n plane.distance = -Vector3.dot(normal, trackedPlane.pose.position);\n var distance = ray.intersectPlane(plane);\n if (distance >= 0) {\n ray.getPoint(distance, hitPoint);\n Vector3.transformToVec3(hitPoint, trackedPlane.pose.inverseMatrix, hitPointInPlane);\n // Check if the hit position is within the plane boundary.\n if (this._checkPointerWithinPlane(hitPointInPlane, trackedPlane)) {\n var hitResult = new XRHitResult();\n hitResult.point.copyFrom(hitPoint);\n hitResult.normal.copyFrom(normal);\n hitResult.distance = distance;\n hitResult.trackedObject = trackedPlane;\n hitResult.trackableType = TrackableType.Plane;\n result.push(hitResult);\n }\n }\n }\n };\n _proto._checkPointerWithinPlane = function _checkPointerWithinPlane(pointer, plane) {\n var _this = this, preToCur = _this._tempVec33, preToPointer = _this._tempVec34, cross = _this._tempVec35;\n var polygon = plane.polygon;\n var length = polygon.length;\n var prePoint = polygon[length - 1];\n var side = 0;\n for(var i = 0; i < length; i++){\n var curPoint = polygon[i];\n Vector3.subtract(curPoint, prePoint, preToCur);\n Vector3.subtract(pointer, prePoint, preToPointer);\n Vector3.cross(preToCur, preToPointer, cross);\n var y = cross.y;\n if (side === 0) {\n if (y > 0) {\n side = 1;\n } else if (y < 0) {\n side = -1;\n }\n } else {\n if (y > 0 && side < 0 || y < 0 && side > 0) {\n return false;\n }\n }\n prePoint = curPoint;\n }\n return true;\n };\n return XRHitTest;\n}(XRFeature);\nXRHitTest = __decorate([\n registerXRFeature(XRFeatureType.HitTest)\n], XRHitTest);\n\n/**\n * The anchor in XR space.\n */ var XRAnchor = /*#__PURE__*/ function(XRTracked1) {\n _inherits(XRAnchor, XRTracked1);\n function XRAnchor() {\n return XRTracked1.apply(this, arguments);\n }\n return XRAnchor;\n}(XRTracked);\n\n/**\n * The request anchor in XR space.\n */ var XRRequestAnchor = /*#__PURE__*/ function(XRRequestTracking1) {\n _inherits(XRRequestAnchor, XRRequestTracking1);\n function XRRequestAnchor(position, rotation) {\n var _this;\n _this = XRRequestTracking1.call(this) || this;\n _this.position = position;\n _this.rotation = rotation;\n return _this;\n }\n return XRRequestAnchor;\n}(XRRequestTracking);\n\nvar XRAnchorTracking = /*#__PURE__*/ function(XRTrackableFeature1) {\n _inherits(XRAnchorTracking, XRTrackableFeature1);\n function XRAnchorTracking(xrManager) {\n var _this;\n _this = XRTrackableFeature1.call(this, xrManager, XRFeatureType.AnchorTracking) || this;\n _this._anchors = [];\n return _this;\n }\n var _proto = XRAnchorTracking.prototype;\n /**\n * Add a anchor in XR space.\n * @param anchor - The anchor to be added\n */ _proto.addAnchor = function addAnchor(position, rotation) {\n if (!this._enabled) {\n throw new Error(\"Cannot add an anchor from a disabled anchor manager.\");\n }\n var _this = this, anchors = _this._anchors;\n var requestAnchor = new XRRequestAnchor(position, rotation);\n var xrAnchor = this._generateTracked();\n requestAnchor.tracked[0] = xrAnchor;\n this._addRequestTracking(requestAnchor);\n anchors.push(xrAnchor);\n return xrAnchor;\n };\n /**\n * Remove a anchor in XR space.\n * @param anchor - The anchor to be removed\n */ _proto.removeAnchor = function removeAnchor(anchor) {\n if (!this._enabled) {\n throw new Error(\"Cannot remove an anchor from a disabled anchor manager.\");\n }\n var _this = this, requestTrackings = _this._requestTrackings, anchors = _this._anchors;\n for(var i = 0, n = requestTrackings.length; i < n; i++){\n var requestAnchor = requestTrackings[i];\n if (requestAnchor.tracked[0] === anchor) {\n this._removeRequestTracking(requestAnchor);\n break;\n }\n }\n anchors.splice(anchors.indexOf(anchor), 1);\n };\n /**\n * Remove all tracking anchors.\n */ _proto.clearAnchors = function clearAnchors() {\n if (!this._enabled) {\n throw new Error(\"Cannot remove anchors from a disabled anchor manager.\");\n }\n this._removeAllRequestTrackings();\n };\n _proto._generateTracked = function _generateTracked() {\n var anchor = new XRAnchor();\n anchor.id = XRTrackableFeature._uuid++;\n return anchor;\n };\n _create_class(XRAnchorTracking, [\n {\n key: \"trackingAnchors\",\n get: /**\n * The anchors to tracking.\n */ function get() {\n return this._anchors;\n }\n },\n {\n key: \"trackedAnchors\",\n get: /**\n * The tracked anchors.\n */ function get() {\n return this._tracked;\n }\n }\n ]);\n return XRAnchorTracking;\n}(XRTrackableFeature);\nXRAnchorTracking = __decorate([\n registerXRFeature(XRFeatureType.AnchorTracking)\n], XRAnchorTracking);\n\n/**\n * The request image in XR space.\n */ var XRRequestImage = /*#__PURE__*/ function(XRRequestTracking1) {\n _inherits(XRRequestImage, XRRequestTracking1);\n function XRRequestImage(image) {\n var _this;\n _this = XRRequestTracking1.call(this) || this;\n _this.image = image;\n return _this;\n }\n return XRRequestImage;\n}(XRRequestTracking);\n\n/**\n * A tracked image in XR space.\n */ var XRTrackedImage = /*#__PURE__*/ function(XRTracked1) {\n _inherits(XRTrackedImage, XRTracked1);\n function XRTrackedImage() {\n return XRTracked1.apply(this, arguments);\n }\n return XRTrackedImage;\n}(XRTracked);\n\nvar XRImageTracking = /*#__PURE__*/ function(XRTrackableFeature1) {\n _inherits(XRImageTracking, XRTrackableFeature1);\n function XRImageTracking(xrManager, trackingImages) {\n var _this;\n _this = XRTrackableFeature1.call(this, xrManager, XRFeatureType.ImageTracking, trackingImages) || this;\n _this._trackingImages = trackingImages;\n var imageLength = trackingImages ? trackingImages.length : 0;\n if (imageLength > 0) {\n for(var i = 0, n = trackingImages.length; i < n; i++){\n _this._addRequestTracking(new XRRequestImage(trackingImages[i]));\n }\n } else {\n console.warn(\"No image to be tracked.\");\n }\n return _this;\n }\n var _proto = XRImageTracking.prototype;\n _proto._generateTracked = function _generateTracked() {\n var image = new XRTrackedImage();\n image.id = XRTrackableFeature._uuid++;\n return image;\n };\n _create_class(XRImageTracking, [\n {\n key: \"trackingImages\",\n get: /**\n * The image to tracking.\n */ function get() {\n return this._trackingImages;\n }\n },\n {\n key: \"trackedImages\",\n get: /**\n * The tracked images.\n */ function get() {\n return this._tracked;\n }\n }\n ]);\n return XRImageTracking;\n}(XRTrackableFeature);\nXRImageTracking = __decorate([\n registerXRFeature(XRFeatureType.ImageTracking)\n], XRImageTracking);\n\n/**\n * A reference image is an image to look for in the physical environment.\n */ var XRReferenceImage = function XRReferenceImage(name, imageSource, physicalWidth) {\n this.name = name;\n this.imageSource = imageSource;\n this.physicalWidth = physicalWidth;\n};\n\nvar XRReferenceImageDecoder = /*#__PURE__*/ function() {\n function XRReferenceImageDecoder() {}\n XRReferenceImageDecoder.decode = function decode(engine, bufferReader) {\n return new AssetPromise(function(resolve, reject) {\n var physicalWidth = bufferReader.nextFloat32();\n bufferReader.nextUint8();\n var img = new Image();\n img.onload = function() {\n resolve(new XRReferenceImage(\"\", img, physicalWidth));\n };\n img.src = URL.createObjectURL(new window.Blob([\n bufferReader.nextImagesData(1)[0]\n ]));\n });\n };\n return XRReferenceImageDecoder;\n}();\nXRReferenceImageDecoder = __decorate([\n decoder(\"XRReferenceImage\")\n], XRReferenceImageDecoder);\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar XRReferenceImageLoader = /*#__PURE__*/ function(Loader1) {\n _inherits(XRReferenceImageLoader, Loader1);\n function XRReferenceImageLoader() {\n return Loader1.apply(this, arguments);\n }\n var _proto = XRReferenceImageLoader.prototype;\n _proto.load = function load(item, resourceManager) {\n return new AssetPromise(function(resolve, reject) {\n resourceManager// @ts-ignore\n ._request(item.url, _extends({}, item, {\n type: \"arraybuffer\"\n })).then(function(data) {\n decode(data, resourceManager.engine).then(function(referenceImage) {\n resolve(referenceImage);\n });\n }).catch(reject);\n });\n };\n return XRReferenceImageLoader;\n}(Loader);\nXRReferenceImageLoader = __decorate([\n resourceLoader(\"XRReferenceImage\", [])\n], XRReferenceImageLoader);\n\nexport { TrackableType, XRAnchor, XRAnchorTracking, XRCamera, XRCameraManager, XRController, XRFeature, XRFeatureType, XRHitResult, XRHitTest, XRImageTracking, XRInputButton, XRInputEventType, XRInputManager, XRPlaneMode, XRPlaneTracking, XRPose, XRReferenceImage, XRReferenceImageDecoder, XRReferenceImageLoader, XRRequestTrackingState, XRSessionManager, XRSessionMode, XRSessionState, XRTargetRayMode, XRTrackableFeature, XRTracked, XRTrackedImage, XRTrackedInputDevice, XRTrackedPlane, XRTrackingState };\n//# sourceMappingURL=module.js.map\n","export 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","/**\n * Defines how the bounding volumes intersects or contain one another.\n */ var ContainmentType;\n(function(ContainmentType) {\n ContainmentType[ContainmentType[/** Indicates that there is no overlap between two bounding volumes. */ \"Disjoint\"] = 0] = \"Disjoint\";\n ContainmentType[ContainmentType[/** Indicates that one bounding volume completely contains another volume. */ \"Contains\"] = 1] = \"Contains\";\n ContainmentType[ContainmentType[/** Indicates that bounding volumes partially overlap one another. */ \"Intersects\"] = 2] = \"Intersects\";\n})(ContainmentType || (ContainmentType = {}));\n\n/**\n * Defines the intersection between a plane and a bounding volume.\n */ var PlaneIntersectionType;\n(function(PlaneIntersectionType) {\n PlaneIntersectionType[PlaneIntersectionType[/** There is no intersection, the bounding volume is in the back of the plane. */ \"Back\"] = 0] = \"Back\";\n PlaneIntersectionType[PlaneIntersectionType[/** There is no intersection, the bounding volume is in the front of the plane. */ \"Front\"] = 1] = \"Front\";\n PlaneIntersectionType[PlaneIntersectionType[/** The plane is intersected. */ \"Intersecting\"] = 2] = \"Intersecting\";\n})(PlaneIntersectionType || (PlaneIntersectionType = {}));\n\n/**\n * Frustum face\n */ var FrustumFace;\n(function(FrustumFace) {\n FrustumFace[FrustumFace[/** Near face */ \"Near\"] = 0] = \"Near\";\n FrustumFace[FrustumFace[/** Far face */ \"Far\"] = 1] = \"Far\";\n FrustumFace[FrustumFace[/** Left face */ \"Left\"] = 2] = \"Left\";\n FrustumFace[FrustumFace[/** Right face */ \"Right\"] = 3] = \"Right\";\n FrustumFace[FrustumFace[/** Bottom face */ \"Bottom\"] = 4] = \"Bottom\";\n FrustumFace[FrustumFace[/** Top face */ \"Top\"] = 5] = \"Top\";\n})(FrustumFace || (FrustumFace = {}));\n\nfunction _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}\n\n/**\n * Common utility methods for math operations.\n */ var MathUtil = /*#__PURE__*/ function() {\n function MathUtil() {}\n /**\n * Clamps the specified value.\n * @param v - The specified value\n * @param min - The min value\n * @param max - The max value\n * @returns The result of clamping a value between min and max\n */ MathUtil.clamp = function clamp(v, min, max) {\n return Math.max(min, Math.min(max, v));\n };\n /**\n * Checks if a and b are almost equals.\n * The absolute value of the difference between a and b is close to zero.\n * @param a - The left value to compare\n * @param b - The right value to compare\n * @returns True if a almost equal to b, false otherwise\n */ MathUtil.equals = function equals(a, b) {\n return Math.abs(a - b) <= MathUtil.zeroTolerance;\n };\n /**\n * Determines whether the specified v is pow2.\n * @param v - The specified v\n * @returns True if the specified v is pow2, false otherwise\n */ MathUtil.isPowerOf2 = function isPowerOf2(v) {\n return (v & v - 1) === 0;\n };\n /**\n * Modify the specified r from radian to degree.\n * @param r - The specified r\n * @returns The degree value\n */ MathUtil.radianToDegree = function radianToDegree(r) {\n return r * MathUtil.radToDegreeFactor;\n };\n /**\n * Modify the specified d from degree to radian.\n * @param d - The specified d\n * @returns The radian value\n */ MathUtil.degreeToRadian = function degreeToRadian(d) {\n return d * MathUtil.degreeToRadFactor;\n };\n /**\n * Linearly interpolate between two values\n * @param start - Specify the start of the range in which to interpolate\n * @param end - Specify the end of the range in which to interpolate\n * @param t - The blend amount where 0 returns start and 1 end\n * @returns The result of linear blending between start and end\n */ MathUtil.lerp = function lerp(start, end, t) {\n return start + (end - start) * t;\n };\n return MathUtil;\n}();\n(function() {\n /** The value for which all absolute numbers smaller than are considered equal to zero. */ MathUtil.zeroTolerance = 1e-6;\n})();\n(function() {\n /** The conversion factor that radian to degree. */ MathUtil.radToDegreeFactor = 180 / Math.PI;\n})();\n(function() {\n /** The conversion factor that degree to radian. */ MathUtil.degreeToRadFactor = Math.PI / 180;\n})();\n\n/**\n * Describes a 3D-vector.\n */ var Vector3 = /*#__PURE__*/ function() {\n function Vector3(x, y, z) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (z === void 0) z = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._z = z;\n }\n var _proto = Vector3.prototype;\n /**\n * Set the value of this vector.\n * @param x - The x component of the vector\n * @param y - The y component of the vector\n * @param z - The z component of the vector\n * @returns This vector\n */ _proto.set = function set(x, y, z) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.add = function add(right) {\n this._x += right._x;\n this._y += right._y;\n this._z += right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the difference of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.subtract = function subtract(right) {\n this._x -= right._x;\n this._y -= right._y;\n this._z -= right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the product of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.multiply = function multiply(right) {\n this._x *= right._x;\n this._y *= right._y;\n this._z *= right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the divisor of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.divide = function divide(right) {\n this._x /= right._x;\n this._y /= right._y;\n this._z /= right._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this vector.\n * @returns The length of this vector\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z;\n return Math.sqrt(_x * _x + _y * _y + _z * _z);\n };\n /**\n * Calculate the squared length of this vector.\n * @returns The squared length of this vector\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z;\n return _x * _x + _y * _y + _z * _z;\n };\n /**\n * Reverses the direction of this vector.\n * @returns This vector\n */ _proto.negate = function negate() {\n this._x = -this._x;\n this._y = -this._y;\n this._z = -this._z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Converts this vector into a unit vector.\n * @returns This vector\n */ _proto.normalize = function normalize() {\n Vector3.normalize(this, this);\n return this;\n };\n /**\n * Scale this vector by the given value.\n * @param s - The amount by which to scale the vector\n * @returns This vector\n */ _proto.scale = function scale(s) {\n this._x *= s;\n this._y *= s;\n this._z *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * This vector performs a normal transformation using the given 4x4 matrix.\n * @remarks\n * A normal transform performs the transformation with the assumption that the w component\n * is zero. This causes the fourth row and fourth column of the matrix to be unused. The\n * end result is a vector that is not translated, but all other transformation properties\n * apply. This is often preferred for normal vectors as normals purely represent direction\n * rather than location because normal vectors should not be translated.\n * @param m - The transform matrix\n * @returns This vector\n */ _proto.transformNormal = function transformNormal(m) {\n Vector3.transformNormal(this, m, this);\n return this;\n };\n /**\n * This vector performs a transformation using the given 4x4 matrix.\n * @param m - The transform matrix\n * @returns This vector\n */ _proto.transformToVec3 = function transformToVec3(m) {\n Vector3.transformToVec3(this, m, this);\n return this;\n };\n /**\n * This vector performs a coordinate transformation using the given 4x4 matrix.\n * @remarks\n * A coordinate transform performs the transformation with the assumption that the w component\n * is one. The four dimensional vector obtained from the transformation operation has each\n * component in the vector divided by the w component. This forces the w-component to be one and\n * therefore makes the vector homogeneous. The homogeneous vector is often preferred when working\n * with coordinates as the w component can safely be ignored.\n * @param m - The transform matrix\n * @returns This vector\n */ _proto.transformCoordinate = function transformCoordinate(m) {\n Vector3.transformCoordinate(this, m, this);\n return this;\n };\n /**\n * This vector performs a transformation using the given quaternion.\n * @param quaternion - The transform quaternion\n * @returns This vector\n */ _proto.transformByQuat = function transformByQuat(quaternion) {\n Vector3.transformByQuat(this, quaternion, this);\n return this;\n };\n /**\n * Creates a clone of this vector.\n * @returns A clone of this vector\n */ _proto.clone = function clone() {\n return new Vector3(this._x, this._y, this._z);\n };\n /**\n * Copy from vector3 like object.\n * @param source - Vector3 like object.\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._z = source.z;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to vector3 like object.\n * @param target - Vector3 like object\n * @returns This Vector3 like object\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n target.z = this._z;\n return target;\n };\n /**\n * Copy the value of this vector from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This vector\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this vector to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n out[outOffset + 2] = this._z;\n };\n /**\n * Serialize this vector to a JSON representation.\n * @returns A JSON representation of this vector\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y,\n z: this._z\n };\n };\n /**\n * Determines the sum of two vectors.\n * @param left - The first vector to add\n * @param right - The second vector to add\n * @param out - The sum of two vectors\n */ Vector3.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._z = left._z + right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the difference between two vectors.\n * @param left - The first vector to subtract\n * @param right - The second vector to subtract\n * @param out - The difference between two vectors\n */ Vector3.subtract = function subtract(left, right, out) {\n out._x = left._x - right._x;\n out._y = left._y - right._y;\n out._z = left._z - right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two vectors.\n * @param left - The first vector to multiply\n * @param right - The second vector to multiply\n * @param out - The product of two vectors\n */ Vector3.multiply = function multiply(left, right, out) {\n out._x = left._x * right._x;\n out._y = left._y * right._y;\n out._z = left._z * right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the divisor of two vectors.\n * @param left - The first vector to divide\n * @param right - The second vector to divide\n * @param out - The divisor of two vectors\n */ Vector3.divide = function divide(left, right, out) {\n out._x = left._x / right._x;\n out._y = left._y / right._y;\n out._z = left._z / right._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two vectors.\n * @param left - The first vector to dot\n * @param right - The second vector to dot\n * @returns The dot product of two vectors\n */ Vector3.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y + left._z * right._z;\n };\n /**\n * Determines the cross product of two vectors.\n * @param left - The first vector to cross\n * @param right - The second vector to cross\n * @param out - The cross product of two vectors\n */ Vector3.cross = function cross(left, right, out) {\n var ax = left._x;\n var ay = left._y;\n var az = left._z;\n var bx = right._x;\n var by = right._y;\n var bz = right._z;\n out.set(ay * bz - az * by, az * bx - ax * bz, ax * by - ay * bx);\n };\n /**\n * Determines the distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The distance of two vectors\n */ Vector3.distance = function distance(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n return Math.sqrt(x * x + y * y + z * z);\n };\n /**\n * Determines the squared distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The squared distance of two vectors\n */ Vector3.distanceSquared = function distanceSquared(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n return x * x + y * y + z * z;\n };\n /**\n * Determines whether the specified vectors are equals.\n * @param left - The first vector to compare\n * @param right - The second vector to compare\n * @returns True if the specified vectors are equals, false otherwise\n */ Vector3.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y) && MathUtil.equals(left._z, right._z);\n };\n /**\n * Performs a linear interpolation between two vectors.\n * @param start - The first vector\n * @param end - The second vector\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two vectors\n */ Vector3.lerp = function lerp(start, end, t, out) {\n var _x = start._x, _y = start._y, _z = start._z;\n out._x = _x + (end._x - _x) * t;\n out._y = _y + (end._y - _y) * t;\n out._z = _z + (end._z - _z) * t;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the largest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the largest components of the specified vectors\n */ Vector3.max = function max(left, right, out) {\n out._x = Math.max(left._x, right._x);\n out._y = Math.max(left._y, right._y);\n out._z = Math.max(left._z, right._z);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the smallest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the smallest components of the specified vectors\n */ Vector3.min = function min(left, right, out) {\n out._x = Math.min(left._x, right._x);\n out._y = Math.min(left._y, right._y);\n out._z = Math.min(left._z, right._z);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Reverses the direction of a given vector.\n * @param a - The vector to negate\n * @param out - The vector facing in the opposite direction\n */ Vector3.negate = function negate(a, out) {\n out._x = -a._x;\n out._y = -a._y;\n out._z = -a._z;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Converts the vector into a unit vector.\n * @param a - The vector to normalize\n * @param out - The normalized vector\n */ Vector3.normalize = function normalize(a, out) {\n var _x = a._x, _y = a._y, _z = a._z;\n var len = Math.sqrt(_x * _x + _y * _y + _z * _z);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out.set(_x * len, _y * len, _z * len);\n }\n };\n /**\n * Scale a vector by the given value.\n * @param a - The vector to scale\n * @param s - The amount by which to scale the vector\n * @param out - The scaled vector\n */ Vector3.scale = function scale(a, s, out) {\n out._x = a._x * s;\n out._y = a._y * s;\n out._z = a._z * s;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a normal transformation using the given 4x4 matrix.\n * @remarks\n * A normal transform performs the transformation with the assumption that the w component\n * is zero. This causes the fourth row and fourth column of the matrix to be unused. The\n * end result is a vector that is not translated, but all other transformation properties\n * apply. This is often preferred for normal vectors as normals purely represent direction\n * rather than location because normal vectors should not be translated.\n * @param v - The normal vector to transform\n * @param m - The transform matrix\n * @param out - The transformed normal\n */ Vector3.transformNormal = function transformNormal(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8];\n out._y = _x * e[1] + _y * e[5] + _z * e[9];\n out._z = _x * e[2] + _y * e[6] + _z * e[10];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given 4x4 matrix.\n * @param v - The vector to transform\n * @param m - The transform matrix\n * @param out - The transformed vector3\n */ Vector3.transformToVec3 = function transformToVec3(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8] + e[12];\n out._y = _x * e[1] + _y * e[5] + _z * e[9] + e[13];\n out._z = _x * e[2] + _y * e[6] + _z * e[10] + e[14];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation from vector3 to vector4 using the given 4x4 matrix.\n * @param v - The vector to transform\n * @param m - The transform matrix\n * @param out - The transformed vector4\n */ Vector3.transformToVec4 = function transformToVec4(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8] + e[12];\n out._y = _x * e[1] + _y * e[5] + _z * e[9] + e[13];\n out._z = _x * e[2] + _y * e[6] + _z * e[10] + e[14];\n out._w = _x * e[3] + _y * e[7] + _z * e[11] + e[15];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a coordinate transformation using the given 4x4 matrix.\n *\n * @remarks\n * A coordinate transform performs the transformation with the assumption that the w component\n * is one. The four dimensional vector obtained from the transformation operation has each\n * component in the vector divided by the w component. This forces the w-component to be one and\n * therefore makes the vector homogeneous. The homogeneous vector is often preferred when working\n * with coordinates as the w component can safely be ignored.\n * @param v - The coordinate vector to transform\n * @param m - The transform matrix\n * @param out - The transformed coordinates\n */ Vector3.transformCoordinate = function transformCoordinate(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var e = m.elements;\n var w = _x * e[3] + _y * e[7] + _z * e[11] + e[15];\n w = 1.0 / w;\n out._x = (_x * e[0] + _y * e[4] + _z * e[8] + e[12]) * w;\n out._y = (_x * e[1] + _y * e[5] + _z * e[9] + e[13]) * w;\n out._z = (_x * e[2] + _y * e[6] + _z * e[10] + e[14]) * w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given quaternion.\n * @param v - The vector to transform\n * @param quaternion - The transform quaternion\n * @param out - The transformed vector\n */ Vector3.transformByQuat = function transformByQuat(v, quaternion, out) {\n var _x = v._x, _y = v._y, _z = v._z;\n var qx = quaternion._x, qy = quaternion._y, qz = quaternion._z, qw = quaternion._w;\n // calculate quat * vec\n var ix = qw * _x + qy * _z - qz * _y;\n var iy = qw * _y + qz * _x - qx * _z;\n var iz = qw * _z + qx * _y - qy * _x;\n var iw = -qx * _x - qy * _y - qz * _z;\n // calculate result * inverse quat\n out._x = ix * qw - iw * qx - iy * qz + iz * qy;\n out._y = iy * qw - iw * qy - iz * qx + ix * qz;\n out._z = iz * qw - iw * qz - ix * qy + iy * qx;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Vector3, [\n {\n key: \"x\",\n get: /**\n * The x component of the vector.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the vector.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"z\",\n get: /**\n * The z component of the vector.\n */ function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Vector3;\n}();\n(function() {\n /** @internal */ Vector3._zero = new Vector3(0.0, 0.0, 0.0);\n})();\n(function() {\n /** @internal */ Vector3._one = new Vector3(1.0, 1.0, 1.0);\n})();\n\n/**\n * A bounding sphere.\n * */ var BoundingSphere = /*#__PURE__*/ function() {\n function BoundingSphere(center, radius) {\n if (center === void 0) center = null;\n if (radius === void 0) radius = 0;\n /** The center point of the sphere. */ this.center = new Vector3();\n /** The radius of the sphere. */ this.radius = 0;\n center && this.center.copyFrom(center);\n this.radius = radius;\n }\n var _proto = BoundingSphere.prototype;\n /**\n * Creates a clone of this sphere.\n * @returns A clone of this sphere\n */ _proto.clone = function clone() {\n return new BoundingSphere(this.center, this.radius);\n };\n /**\n * Copy this sphere from the specified sphere.\n * @param source - The specified sphere\n * @returns This sphere\n */ _proto.copyFrom = function copyFrom(source) {\n this.center.copyFrom(source.center);\n this.radius = source.radius;\n return this;\n };\n /**\n * Calculate a bounding sphere that fully contains the given points.\n * @param points - The given points\n * @param out - The calculated bounding sphere\n */ BoundingSphere.fromPoints = function fromPoints(points, out) {\n if (!points || points.length === 0) {\n throw new Error(\"points must be array and length must > 0\");\n }\n var len = points.length;\n var center = BoundingSphere._tempVec30;\n center.x = center.y = center.z = 0;\n // Calculate the center of the sphere.\n for(var i = 0; i < len; ++i){\n Vector3.add(points[i], center, center);\n }\n // The center of the sphere.\n Vector3.scale(center, 1 / len, out.center);\n // Calculate the radius of the sphere.\n var radius = 0.0;\n for(var i1 = 0; i1 < len; ++i1){\n var distance = Vector3.distanceSquared(center, points[i1]);\n distance > radius && (radius = distance);\n }\n // The radius of the sphere.\n out.radius = Math.sqrt(radius);\n };\n /**\n * Calculate a bounding sphere from a given box.\n * @param box - The given box\n * @param out - The calculated bounding sphere\n */ BoundingSphere.fromBox = function fromBox(box, out) {\n var center = out.center;\n var min = box.min, max = box.max;\n center.x = (min.x + max.x) * 0.5;\n center.y = (min.y + max.y) * 0.5;\n center.z = (min.z + max.z) * 0.5;\n out.radius = Vector3.distance(center, max);\n };\n return BoundingSphere;\n}();\n(function() {\n BoundingSphere._tempVec30 = new Vector3();\n})();\n\n/**\n * Axis Aligned Bound Box (AABB).\n */ var BoundingBox = /*#__PURE__*/ function() {\n function BoundingBox(min, max) {\n if (min === void 0) min = null;\n if (max === void 0) max = null;\n /** The minimum point of the box. */ this.min = new Vector3();\n /** The maximum point of the box. */ this.max = new Vector3();\n min && this.min.copyFrom(min);\n max && this.max.copyFrom(max);\n }\n var _proto = BoundingBox.prototype;\n /**\n * Get the center point of this bounding box.\n * @param out - The center point of this bounding box\n * @returns The center point of this bounding box\n */ _proto.getCenter = function getCenter(out) {\n var _this = this, min = _this.min, max = _this.max;\n var centerX = max._x + min._x;\n var centerY = max._y + min._y;\n var centerZ = max._z + min._z;\n out.set(isNaN(centerX) ? 0 : centerX * 0.5, isNaN(centerY) ? 0 : centerY * 0.5, isNaN(centerZ) ? 0 : centerZ * 0.5);\n return out;\n };\n /**\n * Get the extent of this bounding box.\n * @param out - The extent of this bounding box\n * @returns The extent of this bounding box\n */ _proto.getExtent = function getExtent(out) {\n var _this = this, min = _this.min, max = _this.max;\n var extentX = max._x - min._x;\n var extentY = max._y - min._y;\n var extentZ = max._z - min._z;\n out.set(isNaN(extentX) ? 0 : extentX * 0.5, isNaN(extentY) ? 0 : extentY * 0.5, isNaN(extentZ) ? 0 : extentZ * 0.5);\n return out;\n };\n /**\n * Get the eight corners of this bounding box.\n * @param out - An array of points representing the eight corners of this bounding box\n * @returns An array of points representing the eight corners of this bounding box\n */ _proto.getCorners = function getCorners(out) {\n if (out === void 0) out = [];\n var _this = this, min = _this.min, max = _this.max;\n var minX = min.x;\n var minY = min.y;\n var minZ = min.z;\n var maxX = max.x;\n var maxY = max.y;\n var maxZ = max.z;\n var len = out.length;\n // The array length is less than 8 to make up\n if (len < 8) {\n for(var i = 0, l = 8 - len; i < l; ++i){\n out[len + i] = new Vector3();\n }\n }\n out[0].set(minX, maxY, maxZ);\n out[1].set(maxX, maxY, maxZ);\n out[2].set(maxX, minY, maxZ);\n out[3].set(minX, minY, maxZ);\n out[4].set(minX, maxY, minZ);\n out[5].set(maxX, maxY, minZ);\n out[6].set(maxX, minY, minZ);\n out[7].set(minX, minY, minZ);\n return out;\n };\n /**\n * Transform a bounding box.\n * @param matrix - The transform to apply to the bounding box\n * @returns The transformed bounding box\n */ _proto.transform = function transform(matrix) {\n BoundingBox.transform(this, matrix, this);\n return this;\n };\n /**\n * Creates a clone of this box.\n * @returns A clone of this box\n */ _proto.clone = function clone() {\n return new BoundingBox(this.min, this.max);\n };\n /**\n * Copy this bounding box from the specified box.\n * @param source - The specified box\n * @returns This bounding box\n */ _proto.copyFrom = function copyFrom(source) {\n this.min.copyFrom(source.min);\n this.max.copyFrom(source.max);\n return this;\n };\n /**\n * Calculate a bounding box from the center point and the extent of the bounding box.\n * @param center - The center point\n * @param extent - The extent of the bounding box\n * @param out - The calculated bounding box\n */ BoundingBox.fromCenterAndExtent = function fromCenterAndExtent(center, extent, out) {\n Vector3.subtract(center, extent, out.min);\n Vector3.add(center, extent, out.max);\n };\n /**\n * Calculate a bounding box that fully contains the given points.\n * @param points - The given points\n * @param out - The calculated bounding box\n */ BoundingBox.fromPoints = function fromPoints(points, out) {\n if (!points || points.length === 0) {\n throw new Error(\"points must be array and length must > 0\");\n }\n var min = out.min, max = out.max;\n min.x = min.y = min.z = Number.MAX_VALUE;\n max.x = max.y = max.z = -Number.MAX_VALUE;\n for(var i = 0, l = points.length; i < l; ++i){\n var point = points[i];\n Vector3.min(min, point, min);\n Vector3.max(max, point, max);\n }\n };\n /**\n * Calculate a bounding box from a given sphere.\n * @param sphere - The given sphere\n * @param out - The calculated bounding box\n */ BoundingBox.fromSphere = function fromSphere(sphere, out) {\n var center = sphere.center, radius = sphere.radius;\n var min = out.min, max = out.max;\n min.x = center.x - radius;\n min.y = center.y - radius;\n min.z = center.z - radius;\n max.x = center.x + radius;\n max.y = center.y + radius;\n max.z = center.z + radius;\n };\n /**\n * Transform a bounding box.\n * @param source - The original bounding box\n * @param matrix - The transform to apply to the bounding box\n * @param out - The transformed bounding box\n */ BoundingBox.transform = function transform(source, matrix, out) {\n // https://zeux.io/2010/10/17/aabb-from-obb-with-component-wise-abs/\n var center = BoundingBox._tempVec30;\n var extent = BoundingBox._tempVec31;\n source.getCenter(center);\n source.getExtent(extent);\n Vector3.transformCoordinate(center, matrix, center);\n var x = extent.x, y = extent.y, z = extent.z;\n var e = matrix.elements;\n // prettier-ignore\n var e0 = e[0], e1 = e[1], e2 = e[2], e4 = e[4], e5 = e[5], e6 = e[6], e8 = e[8], e9 = e[9], e10 = e[10];\n extent.set((e0 === 0 ? 0 : Math.abs(x * e0)) + (e4 === 0 ? 0 : Math.abs(y * e4)) + (e8 === 0 ? 0 : Math.abs(z * e8)), (e1 === 0 ? 0 : Math.abs(x * e1)) + (e5 === 0 ? 0 : Math.abs(y * e5)) + (e9 === 0 ? 0 : Math.abs(z * e9)), (e2 === 0 ? 0 : Math.abs(x * e2)) + (e6 === 0 ? 0 : Math.abs(y * e6)) + (e10 === 0 ? 0 : Math.abs(z * e10)));\n // set min、max\n Vector3.subtract(center, extent, out.min);\n Vector3.add(center, extent, out.max);\n };\n /**\n * Calculate a bounding box that is as large as the total combined area of the two specified boxes.\n * @param box1 - The first box to merge\n * @param box2 - The second box to merge\n * @param out - The merged bounding box\n * @returns The merged bounding box\n */ BoundingBox.merge = function merge(box1, box2, out) {\n Vector3.min(box1.min, box2.min, out.min);\n Vector3.max(box1.max, box2.max, out.max);\n return out;\n };\n return BoundingBox;\n}();\n(function() {\n BoundingBox._tempVec30 = new Vector3();\n})();\n(function() {\n BoundingBox._tempVec31 = new Vector3();\n})();\n\n/**\n * Contains static methods to help in determining intersections, containment, etc.\n */ var CollisionUtil = /*#__PURE__*/ function() {\n function CollisionUtil() {}\n /**\n * Calculate the intersection point of three plane.\n * @param p1 - Plane 1\n * @param p2 - Plane 2\n * @param p3 - Plane 3\n * @param out - intersection point\n */ CollisionUtil.intersectionPointThreePlanes = function intersectionPointThreePlanes(p1, p2, p3, out) {\n var p1Nor = p1.normal;\n var p2Nor = p2.normal;\n var p3Nor = p3.normal;\n Vector3.cross(p2Nor, p3Nor, CollisionUtil._tempVec30);\n Vector3.cross(p3Nor, p1Nor, CollisionUtil._tempVec31);\n Vector3.cross(p1Nor, p2Nor, CollisionUtil._tempVec32);\n var a = -Vector3.dot(p1Nor, CollisionUtil._tempVec30);\n var b = -Vector3.dot(p2Nor, CollisionUtil._tempVec31);\n var c = -Vector3.dot(p3Nor, CollisionUtil._tempVec32);\n Vector3.scale(CollisionUtil._tempVec30, p1.distance / a, CollisionUtil._tempVec30);\n Vector3.scale(CollisionUtil._tempVec31, p2.distance / b, CollisionUtil._tempVec31);\n Vector3.scale(CollisionUtil._tempVec32, p3.distance / c, CollisionUtil._tempVec32);\n Vector3.add(CollisionUtil._tempVec30, CollisionUtil._tempVec31, out);\n Vector3.add(out, CollisionUtil._tempVec32, out);\n };\n /**\n * Calculate the distance from a point to a plane.\n * @param plane - The plane\n * @param point - The point\n * @returns The distance from a point to a plane\n */ CollisionUtil.distancePlaneAndPoint = function distancePlaneAndPoint(plane, point) {\n return Vector3.dot(plane.normal, point) + plane.distance;\n };\n /**\n * Get the intersection type between a plane and a point.\n * @param plane - The plane\n * @param point - The point\n * @returns The intersection type\n */ CollisionUtil.intersectsPlaneAndPoint = function intersectsPlaneAndPoint(plane, point) {\n var distance = CollisionUtil.distancePlaneAndPoint(plane, point);\n if (distance > 0) {\n return PlaneIntersectionType.Front;\n }\n if (distance < 0) {\n return PlaneIntersectionType.Back;\n }\n return PlaneIntersectionType.Intersecting;\n };\n /**\n * Get the intersection type between a plane and a box (AABB).\n * @param plane - The plane\n * @param box - The box\n * @returns The intersection type\n */ CollisionUtil.intersectsPlaneAndBox = function intersectsPlaneAndBox(plane, box) {\n var min = box.min, max = box.max;\n var normal = plane.normal;\n var front = CollisionUtil._tempVec30;\n var back = CollisionUtil._tempVec31;\n if (normal.x >= 0) {\n front.x = max.x;\n back.x = min.x;\n } else {\n front.x = min.x;\n back.x = max.x;\n }\n if (normal.y >= 0) {\n front.y = max.y;\n back.y = min.y;\n } else {\n front.y = min.y;\n back.y = max.y;\n }\n if (normal.z >= 0) {\n front.z = max.z;\n back.z = min.z;\n } else {\n front.z = min.z;\n back.z = max.z;\n }\n if (CollisionUtil.distancePlaneAndPoint(plane, front) < 0) {\n return PlaneIntersectionType.Back;\n }\n if (CollisionUtil.distancePlaneAndPoint(plane, back) > 0) {\n return PlaneIntersectionType.Front;\n }\n return PlaneIntersectionType.Intersecting;\n };\n /**\n * Get the intersection type between a plane and a sphere.\n * @param plane - The plane\n * @param sphere - The sphere\n * @returns The intersection type\n */ CollisionUtil.intersectsPlaneAndSphere = function intersectsPlaneAndSphere(plane, sphere) {\n var center = sphere.center, radius = sphere.radius;\n var distance = CollisionUtil.distancePlaneAndPoint(plane, center);\n if (distance > radius) {\n return PlaneIntersectionType.Front;\n }\n if (distance < -radius) {\n return PlaneIntersectionType.Back;\n }\n return PlaneIntersectionType.Intersecting;\n };\n /**\n * Get the intersection type between a ray and a plane.\n * @param ray - The ray\n * @param plane - The plane\n * @returns The distance from ray to plane if intersecting, -1 otherwise\n */ CollisionUtil.intersectsRayAndPlane = function intersectsRayAndPlane(ray, plane) {\n var normal = plane.normal;\n var zeroTolerance = MathUtil.zeroTolerance;\n var dir = Vector3.dot(normal, ray.direction);\n // Parallel\n if (Math.abs(dir) < zeroTolerance) {\n return -1;\n }\n var position = Vector3.dot(normal, ray.origin);\n var distance = (-plane.distance - position) / dir;\n if (distance < 0) {\n if (distance < -zeroTolerance) {\n return -1;\n }\n distance = 0;\n }\n return distance;\n };\n /**\n * Get the intersection type between a ray and a box (AABB).\n * @param ray - The ray\n * @param box - The box\n * @returns The distance from ray to box if intersecting, -1 otherwise\n */ CollisionUtil.intersectsRayAndBox = function intersectsRayAndBox(ray, box) {\n var zeroTolerance = MathUtil.zeroTolerance;\n var origin = ray.origin, direction = ray.direction;\n var min = box.min, max = box.max;\n var dirX = direction.x;\n var dirY = direction.y;\n var dirZ = direction.z;\n var oriX = origin.x;\n var oriY = origin.y;\n var oriZ = origin.z;\n var distance = 0;\n var tmax = Number.MAX_VALUE;\n if (Math.abs(dirX) < zeroTolerance) {\n if (oriX < min.x || oriX > max.x) {\n return -1;\n }\n } else {\n var inverse = 1.0 / dirX;\n var t1 = (min.x - oriX) * inverse;\n var t2 = (max.x - oriX) * inverse;\n if (t1 > t2) {\n var temp = t1;\n t1 = t2;\n t2 = temp;\n }\n distance = Math.max(t1, distance);\n tmax = Math.min(t2, tmax);\n if (distance > tmax) {\n return -1;\n }\n }\n if (Math.abs(dirY) < zeroTolerance) {\n if (oriY < min.y || oriY > max.y) {\n return -1;\n }\n } else {\n var inverse1 = 1.0 / dirY;\n var t11 = (min.y - oriY) * inverse1;\n var t21 = (max.y - oriY) * inverse1;\n if (t11 > t21) {\n var temp1 = t11;\n t11 = t21;\n t21 = temp1;\n }\n distance = Math.max(t11, distance);\n tmax = Math.min(t21, tmax);\n if (distance > tmax) {\n return -1;\n }\n }\n if (Math.abs(dirZ) < zeroTolerance) {\n if (oriZ < min.z || oriZ > max.z) {\n return -1;\n }\n } else {\n var inverse2 = 1.0 / dirZ;\n var t12 = (min.z - oriZ) * inverse2;\n var t22 = (max.z - oriZ) * inverse2;\n if (t12 > t22) {\n var temp2 = t12;\n t12 = t22;\n t22 = temp2;\n }\n distance = Math.max(t12, distance);\n tmax = Math.min(t22, tmax);\n if (distance > tmax) {\n return -1;\n }\n }\n return distance;\n };\n /**\n * Get the intersection type between a ray and a sphere.\n * @param ray - The ray\n * @param sphere - The sphere\n * @returns The distance from ray to sphere if intersecting, -1 otherwise\n */ CollisionUtil.intersectsRayAndSphere = function intersectsRayAndSphere(ray, sphere) {\n var origin = ray.origin, direction = ray.direction;\n var center = sphere.center, radius = sphere.radius;\n var m = CollisionUtil._tempVec30;\n Vector3.subtract(origin, center, m);\n var b = Vector3.dot(m, direction);\n var c = Vector3.dot(m, m) - radius * radius;\n if (b > 0 && c > 0) {\n return -1;\n }\n var discriminant = b * b - c;\n if (discriminant < 0) {\n return -1;\n }\n var distance = -b - Math.sqrt(discriminant);\n if (distance < 0) {\n distance = 0;\n }\n return distance;\n };\n /**\n * Check whether the boxes intersect.\n * @param boxA - The first box to check\n * @param boxB - The second box to check\n * @returns True if the boxes intersect, false otherwise\n */ CollisionUtil.intersectsBoxAndBox = function intersectsBoxAndBox(boxA, boxB) {\n if (boxA.min.x > boxB.max.x || boxB.min.x > boxA.max.x) {\n return false;\n }\n if (boxA.min.y > boxB.max.y || boxB.min.y > boxA.max.y) {\n return false;\n }\n return !(boxA.min.z > boxB.max.z || boxB.min.z > boxA.max.z);\n };\n /**\n * Check whether the spheres intersect.\n * @param sphereA - The first sphere to check\n * @param sphereB - The second sphere to check\n * @returns True if the spheres intersect, false otherwise\n */ CollisionUtil.intersectsSphereAndSphere = function intersectsSphereAndSphere(sphereA, sphereB) {\n var radiisum = sphereA.radius + sphereB.radius;\n return Vector3.distanceSquared(sphereA.center, sphereB.center) < radiisum * radiisum;\n };\n /**\n * Check whether the sphere and the box intersect.\n * @param sphere - The sphere to check\n * @param box - The box to check\n * @returns True if the sphere and the box intersect, false otherwise\n */ CollisionUtil.intersectsSphereAndBox = function intersectsSphereAndBox(sphere, box) {\n var center = sphere.center;\n var max = box.max;\n var min = box.min;\n var closestPoint = CollisionUtil._tempVec30;\n closestPoint.set(Math.max(min.x, Math.min(center.x, max.x)), Math.max(min.y, Math.min(center.y, max.y)), Math.max(min.z, Math.min(center.z, max.z)));\n var distance = Vector3.distanceSquared(center, closestPoint);\n return distance <= sphere.radius * sphere.radius;\n };\n /**\n * Get whether or not a specified bounding box intersects with this frustum (Contains or Intersects).\n * @param frustum - The frustum\n * @param box - The box\n * @returns True if bounding box intersects with this frustum, false otherwise\n */ CollisionUtil.intersectsFrustumAndBox = function intersectsFrustumAndBox(frustum, box) {\n var min = box.min, max = box.max;\n var p = CollisionUtil._tempVec30;\n for(var i = 0; i < 6; ++i){\n var plane = frustum.getPlane(i);\n var normal = plane.normal;\n p.set(normal.x >= 0 ? max.x : min.x, normal.y >= 0 ? max.y : min.y, normal.z >= 0 ? max.z : min.z);\n if (Vector3.dot(normal, p) < -plane.distance) {\n return false;\n }\n }\n return true;\n };\n /**\n * Get the containment type between a frustum and a point.\n * @param frustum - The frustum\n * @param point - The point\n * @returns The containment type\n */ CollisionUtil.frustumContainsPoint = function frustumContainsPoint(frustum, point) {\n var distance = CollisionUtil.distancePlaneAndPoint(frustum.near, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.far, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.left, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.right, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.top, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n distance = CollisionUtil.distancePlaneAndPoint(frustum.bottom, point);\n if (Math.abs(distance) < MathUtil.zeroTolerance) {\n return ContainmentType.Intersects;\n } else if (distance < 0) {\n return ContainmentType.Disjoint;\n }\n return ContainmentType.Contains;\n };\n /**\n * Get the containment type between a frustum and a box (AABB).\n * @param frustum - The frustum\n * @param box - The box\n * @returns The containment type\n */ CollisionUtil.frustumContainsBox = function frustumContainsBox(frustum, box) {\n var min = box.min, max = box.max;\n var p = CollisionUtil._tempVec30;\n var n = CollisionUtil._tempVec31;\n var result = ContainmentType.Contains;\n for(var i = 0; i < 6; ++i){\n var plane = frustum.getPlane(i);\n var normal = plane.normal;\n if (normal.x >= 0) {\n p.x = max.x;\n n.x = min.x;\n } else {\n p.x = min.x;\n n.x = max.x;\n }\n if (normal.y >= 0) {\n p.y = max.y;\n n.y = min.y;\n } else {\n p.y = min.y;\n n.y = max.y;\n }\n if (normal.z >= 0) {\n p.z = max.z;\n n.z = min.z;\n } else {\n p.z = min.z;\n n.z = max.z;\n }\n if (CollisionUtil.intersectsPlaneAndPoint(plane, p) === PlaneIntersectionType.Back) {\n return ContainmentType.Disjoint;\n }\n if (CollisionUtil.intersectsPlaneAndPoint(plane, n) === PlaneIntersectionType.Back) {\n result = ContainmentType.Intersects;\n }\n }\n return result;\n };\n /**\n * Get the containment type between a frustum and a sphere.\n * @param frustum - The frustum\n * @param sphere - The sphere\n * @returns The containment type\n */ CollisionUtil.frustumContainsSphere = function frustumContainsSphere(frustum, sphere) {\n var result = ContainmentType.Contains;\n for(var i = 0; i < 6; ++i){\n var plane = frustum.getPlane(i);\n var intersectionType = CollisionUtil.intersectsPlaneAndSphere(plane, sphere);\n if (intersectionType === PlaneIntersectionType.Back) {\n return ContainmentType.Disjoint;\n } else if (intersectionType === PlaneIntersectionType.Intersecting) {\n result = ContainmentType.Intersects;\n break;\n }\n }\n return result;\n };\n return CollisionUtil;\n}();\n(function() {\n CollisionUtil._tempVec30 = new Vector3();\n})();\n(function() {\n CollisionUtil._tempVec31 = new Vector3();\n})();\n(function() {\n CollisionUtil._tempVec32 = new Vector3();\n})();\n\n/**\n * Represents a plane in three-dimensional space.\n */ var Plane = /*#__PURE__*/ function() {\n function Plane(normal, distance) {\n if (normal === void 0) normal = null;\n if (distance === void 0) distance = 0;\n /** The normal of the plane. */ this.normal = new Vector3();\n /** The distance of the plane along its normal to the origin. */ this.distance = 0;\n normal && this.normal.copyFrom(normal);\n this.distance = distance;\n }\n var _proto = Plane.prototype;\n /**\n * Normalize the normal vector of this plane.\n * @returns The plane after normalize\n */ _proto.normalize = function normalize() {\n Plane.normalize(this, this);\n return this;\n };\n /**\n * Creates a clone of this plane.\n * @returns A clone of this plane\n */ _proto.clone = function clone() {\n var out = new Plane();\n out.copyFrom(this);\n return out;\n };\n /**\n * Copy this plane from the specified plane.\n * @param source - The specified plane\n * @returns This plane\n */ _proto.copyFrom = function copyFrom(source) {\n this.normal.copyFrom(source.normal);\n this.distance = source.distance;\n return this;\n };\n /**\n * Normalize the normal vector of the specified plane.\n * @param p - The specified plane\n * @param out - A normalized version of the specified plane\n */ Plane.normalize = function normalize(p, out) {\n var normal = p.normal;\n var factor = 1.0 / normal.length();\n Vector3.scale(normal, factor, out.normal);\n out.distance = p.distance * factor;\n };\n /**\n * Calculate the plane that contains the three specified points.\n * @param point0 - The first point\n * @param point1 - The second point\n * @param point2 - The third point\n * @param out - The calculated plane\n */ Plane.fromPoints = function fromPoints(point0, point1, point2, out) {\n var x0 = point0.x;\n var y0 = point0.y;\n var z0 = point0.z;\n var x1 = point1.x - x0;\n var y1 = point1.y - y0;\n var z1 = point1.z - z0;\n var x2 = point2.x - x0;\n var y2 = point2.y - y0;\n var z2 = point2.z - z0;\n var yz = y1 * z2 - z1 * y2;\n var xz = z1 * x2 - x1 * z2;\n var xy = x1 * y2 - y1 * x2;\n var invPyth = 1.0 / Math.sqrt(yz * yz + xz * xz + xy * xy);\n var x = yz * invPyth;\n var y = xz * invPyth;\n var z = xy * invPyth;\n var normal = out.normal;\n normal.x = x;\n normal.y = y;\n normal.z = z;\n out.distance = -(x * x0 + y * y0 + z * z0);\n };\n return Plane;\n}();\n\n/**\n * A bounding frustum.\n */ var BoundingFrustum = /*#__PURE__*/ function() {\n function BoundingFrustum(matrix) {\n if (matrix === void 0) matrix = null;\n this.near = new Plane();\n this.far = new Plane();\n this.left = new Plane();\n this.right = new Plane();\n this.top = new Plane();\n this.bottom = new Plane();\n matrix && this.calculateFromMatrix(matrix);\n }\n var _proto = BoundingFrustum.prototype;\n /**\n * Get the plane by the given frustum face.\n * @param face - The frustum face\n * @returns The plane get\n */ _proto.getPlane = function getPlane(face) {\n switch(face){\n case FrustumFace.Near:\n return this.near;\n case FrustumFace.Far:\n return this.far;\n case FrustumFace.Left:\n return this.left;\n case FrustumFace.Right:\n return this.right;\n case FrustumFace.Bottom:\n return this.bottom;\n case FrustumFace.Top:\n return this.top;\n default:\n return null;\n }\n };\n /**\n * Update all planes from the given matrix.\n * @param matrix - The given view-projection matrix\n */ _proto.calculateFromMatrix = function calculateFromMatrix(matrix) {\n var me = matrix.elements;\n var m11 = me[0];\n var m12 = me[1];\n var m13 = me[2];\n var m14 = me[3];\n var m21 = me[4];\n var m22 = me[5];\n var m23 = me[6];\n var m24 = me[7];\n var m31 = me[8];\n var m32 = me[9];\n var m33 = me[10];\n var m34 = me[11];\n var m41 = me[12];\n var m42 = me[13];\n var m43 = me[14];\n var m44 = me[15];\n // near\n var nearNormal = this.near.normal;\n nearNormal.set(m14 + m13, m24 + m23, m34 + m33);\n this.near.distance = m44 + m43;\n this.near.normalize();\n // far\n var farNormal = this.far.normal;\n farNormal.set(m14 - m13, m24 - m23, m34 - m33);\n this.far.distance = m44 - m43;\n this.far.normalize();\n // left\n var leftNormal = this.left.normal;\n leftNormal.set(m14 + m11, m24 + m21, m34 + m31);\n this.left.distance = m44 + m41;\n this.left.normalize();\n // right\n var rightNormal = this.right.normal;\n rightNormal.set(m14 - m11, m24 - m21, m34 - m31);\n this.right.distance = m44 - m41;\n this.right.normalize();\n // bottom\n var bottomNormal = this.bottom.normal;\n bottomNormal.set(m14 + m12, m24 + m22, m34 + m32);\n this.bottom.distance = m44 + m42;\n this.bottom.normalize();\n // top\n var topNormal = this.top.normal;\n topNormal.set(m14 - m12, m24 - m22, m34 - m32);\n this.top.distance = m44 - m42;\n this.top.normalize();\n };\n /**\n * Get whether or not a specified bounding box intersects with this frustum (Contains or Intersects).\n * @param box - The box for testing\n * @returns True if bounding box intersects with this frustum, false otherwise\n */ _proto.intersectsBox = function intersectsBox(box) {\n return CollisionUtil.intersectsFrustumAndBox(this, box);\n };\n /**\n * Get whether or not a specified bounding sphere intersects with this frustum (Contains or Intersects).\n * @param sphere - The sphere for testing\n * @returns True if bounding sphere intersects with this frustum, false otherwise\n */ _proto.intersectsSphere = function intersectsSphere(sphere) {\n return CollisionUtil.frustumContainsSphere(this, sphere) !== ContainmentType.Disjoint;\n };\n /**\n * Creates a clone of this frustum.\n * @returns A clone of this frustum\n */ _proto.clone = function clone() {\n var out = new BoundingFrustum();\n out.copyFrom(this);\n return out;\n };\n /**\n * Copy this frustum from the specified frustum.\n * @param source - The specified frustum\n * @returns This frustum\n */ _proto.copyFrom = function copyFrom(source) {\n this.near.copyFrom(source.near);\n this.far.copyFrom(source.far);\n this.left.copyFrom(source.left);\n this.right.copyFrom(source.right);\n this.bottom.copyFrom(source.bottom);\n this.top.copyFrom(source.top);\n return this;\n };\n return BoundingFrustum;\n}();\n\n/**\n * Represents a 3x3 mathematical matrix.\n */ var Matrix3x3 = /*#__PURE__*/ function() {\n function Matrix3x3(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n if (m11 === void 0) m11 = 1;\n if (m12 === void 0) m12 = 0;\n if (m13 === void 0) m13 = 0;\n if (m21 === void 0) m21 = 0;\n if (m22 === void 0) m22 = 1;\n if (m23 === void 0) m23 = 0;\n if (m31 === void 0) m31 = 0;\n if (m32 === void 0) m32 = 0;\n if (m33 === void 0) m33 = 1;\n /**\n * An array containing the elements of the matrix (column matrix).\n * @remarks\n * elements[0] first column and first row value m11\n * elements[1] first column and second row value m12\n * elements[2] first column and third row value m13\n * elements[3] second column and first row value m21\n * and so on\n */ this.elements = new Float32Array(9);\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m21;\n e[4] = m22;\n e[5] = m23;\n e[6] = m31;\n e[7] = m32;\n e[8] = m33;\n }\n var _proto = Matrix3x3.prototype;\n /**\n * Set the value of this matrix, and return this matrix.\n * @param m11\n * @param m12\n * @param m13\n * @param m21\n * @param m22\n * @param m23\n * @param m31\n * @param m32\n * @param m33\n * @returns This matrix\n */ _proto.set = function set(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m21;\n e[4] = m22;\n e[5] = m23;\n e[6] = m31;\n e[7] = m32;\n e[8] = m33;\n return this;\n };\n /**\n * Determines the sum of this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the sum of the two matrices\n */ _proto.add = function add(right) {\n Matrix3x3.add(this, right, this);\n return this;\n };\n /**\n * Determines the difference between this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the difference between the two matrices\n */ _proto.subtract = function subtract(right) {\n Matrix3x3.subtract(this, right, this);\n return this;\n };\n /**\n * Determines the product of this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the product of the two matrices\n */ _proto.multiply = function multiply(right) {\n Matrix3x3.multiply(this, right, this);\n return this;\n };\n /**\n * Calculate a determinant of this matrix.\n * @returns The determinant of this matrix\n */ _proto.determinant = function determinant() {\n var e = this.elements;\n var a11 = e[0], a12 = e[1], a13 = e[2];\n var a21 = e[3], a22 = e[4], a23 = e[5];\n var a31 = e[6], a32 = e[7], a33 = e[8];\n var b12 = a33 * a22 - a23 * a32;\n var b22 = -a33 * a21 + a23 * a31;\n var b32 = a32 * a21 - a22 * a31;\n return a11 * b12 + a12 * b22 + a13 * b32;\n };\n /**\n * Identity this matrix.\n * @returns This matrix after identity\n */ _proto.identity = function identity() {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 0;\n e[4] = 1;\n e[5] = 0;\n e[6] = 0;\n e[7] = 0;\n e[8] = 1;\n return this;\n };\n /**\n * Invert the matrix.\n * @returns The matrix after invert\n */ _proto.invert = function invert() {\n Matrix3x3.invert(this, this);\n return this;\n };\n /**\n * This matrix rotates around an angle.\n * @param r - The rotation angle in radians\n * @returns This matrix after rotate\n */ _proto.rotate = function rotate(r) {\n Matrix3x3.rotate(this, r, this);\n return this;\n };\n /**\n * Scale this matrix by a given vector.\n * @param s - The given vector\n * @returns This matrix after scale\n */ _proto.scale = function scale(s) {\n Matrix3x3.scale(this, s, this);\n return this;\n };\n /**\n * Translate this matrix by a given vector.\n * @param translation - The given vector\n * @returns This matrix after translate\n */ _proto.translate = function translate(translation) {\n Matrix3x3.translate(this, translation, this);\n return this;\n };\n /**\n * Calculate the transpose of this matrix.\n * @returns This matrix after transpose\n */ _proto.transpose = function transpose() {\n Matrix3x3.transpose(this, this);\n return this;\n };\n /**\n * Creates a clone of this matrix.\n * @returns A clone of this matrix\n */ _proto.clone = function clone() {\n var e = this.elements;\n var ret = new Matrix3x3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n return ret;\n };\n /**\n * Copy this matrix from the specified matrix.\n * @param source - The specified matrix\n * @returns This matrix\n */ _proto.copyFrom = function copyFrom(source) {\n var e = this.elements;\n var se = source.elements;\n e[0] = se[0];\n e[1] = se[1];\n e[2] = se[2];\n e[3] = se[3];\n e[4] = se[4];\n e[5] = se[5];\n e[6] = se[6];\n e[7] = se[7];\n e[8] = se[8];\n return this;\n };\n /**\n * Copy the value of this matrix from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This matrix\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n var srce = this.elements;\n for(var i = 0; i < 12; i++){\n srce[i] = array[i + offset];\n }\n return this;\n };\n /**\n * Copy the value of this matrix to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n var e = this.elements;\n out[outOffset] = e[0];\n out[outOffset + 1] = e[1];\n out[outOffset + 2] = e[2];\n out[outOffset + 3] = e[3];\n out[outOffset + 4] = e[4];\n out[outOffset + 5] = e[5];\n out[outOffset + 6] = e[6];\n out[outOffset + 7] = e[7];\n out[outOffset + 8] = e[8];\n };\n /**\n * Copy the value of this 3x3 matrix from the specified 4x4 matrix.\n * upper-left principle\n * @param source - The specified 4x4 matrix\n * @returns This 3x3 matrix\n */ _proto.copyFromMatrix = function copyFromMatrix(source) {\n var ae = source.elements;\n var e = this.elements;\n e[0] = ae[0];\n e[1] = ae[1];\n e[2] = ae[2];\n e[3] = ae[4];\n e[4] = ae[5];\n e[5] = ae[6];\n e[6] = ae[8];\n e[7] = ae[9];\n e[8] = ae[10];\n return this;\n };\n /**\n * Determines the sum of two matrices.\n * @param left - The first matrix to add\n * @param right - The second matrix to add\n * @param out - The sum of two matrices\n */ Matrix3x3.add = function add(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n oe[0] = le[0] + re[0];\n oe[1] = le[1] + re[1];\n oe[2] = le[2] + re[2];\n oe[3] = le[3] + re[3];\n oe[4] = le[4] + re[4];\n oe[5] = le[5] + re[5];\n oe[6] = le[6] + re[6];\n oe[7] = le[7] + re[7];\n oe[8] = le[8] + re[8];\n };\n /**\n * Determines the difference between two matrices.\n * @param left - The first matrix to subtract\n * @param right - The second matrix to subtract\n * @param out - The difference between two matrices\n */ Matrix3x3.subtract = function subtract(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n oe[0] = le[0] - re[0];\n oe[1] = le[1] - re[1];\n oe[2] = le[2] - re[2];\n oe[3] = le[3] - re[3];\n oe[4] = le[4] - re[4];\n oe[5] = le[5] - re[5];\n oe[6] = le[6] - re[6];\n oe[7] = le[7] - re[7];\n oe[8] = le[8] - re[8];\n };\n /**\n * Determines the product of two matrices.\n * @param left - The first matrix to multiply\n * @param right - The second matrix to multiply\n * @param out - The product of two matrices\n */ Matrix3x3.multiply = function multiply(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n var l11 = le[0], l12 = le[1], l13 = le[2];\n var l21 = le[3], l22 = le[4], l23 = le[5];\n var l31 = le[6], l32 = le[7], l33 = le[8];\n var r11 = re[0], r12 = re[1], r13 = re[2];\n var r21 = re[3], r22 = re[4], r23 = re[5];\n var r31 = re[6], r32 = re[7], r33 = re[8];\n oe[0] = l11 * r11 + l21 * r12 + l31 * r13;\n oe[1] = l12 * r11 + l22 * r12 + l32 * r13;\n oe[2] = l13 * r11 + l23 * r12 + l33 * r13;\n oe[3] = l11 * r21 + l21 * r22 + l31 * r23;\n oe[4] = l12 * r21 + l22 * r22 + l32 * r23;\n oe[5] = l13 * r21 + l23 * r22 + l33 * r23;\n oe[6] = l11 * r31 + l21 * r32 + l31 * r33;\n oe[7] = l12 * r31 + l22 * r32 + l32 * r33;\n oe[8] = l13 * r31 + l23 * r32 + l33 * r33;\n };\n /**\n * Determines whether the specified matrices are equals.\n * @param left - The first matrix to compare\n * @param right - The second matrix to compare\n * @returns True if the specified matrices are equals, false otherwise\n */ Matrix3x3.equals = function equals(left, right) {\n var le = left.elements;\n var re = right.elements;\n return MathUtil.equals(le[0], re[0]) && MathUtil.equals(le[1], re[1]) && MathUtil.equals(le[2], re[2]) && MathUtil.equals(le[3], re[3]) && MathUtil.equals(le[4], re[4]) && MathUtil.equals(le[5], re[5]) && MathUtil.equals(le[6], re[6]) && MathUtil.equals(le[7], re[7]) && MathUtil.equals(le[8], re[8]);\n };\n /**\n * Performs a linear interpolation between two matrices.\n * @param start - The first matrix\n * @param end - The second matrix\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two matrices\n */ Matrix3x3.lerp = function lerp(start, end, t, out) {\n var se = start.elements;\n var ee = end.elements;\n var oe = out.elements;\n var inv = 1.0 - t;\n oe[0] = se[0] * inv + ee[0] * t;\n oe[1] = se[1] * inv + ee[1] * t;\n oe[2] = se[2] * inv + ee[2] * t;\n oe[3] = se[3] * inv + ee[3] * t;\n oe[4] = se[4] * inv + ee[4] * t;\n oe[5] = se[5] * inv + ee[5] * t;\n oe[6] = se[6] * inv + ee[6] * t;\n oe[7] = se[7] * inv + ee[7] * t;\n oe[8] = se[8] * inv + ee[8] * t;\n };\n /**\n * Calculate a rotation matrix from a quaternion.\n * @param quaternion - The quaternion used to calculate the matrix\n * @param out - The calculated rotation matrix\n */ Matrix3x3.rotationQuaternion = function rotationQuaternion(quaternion, out) {\n var oe = out.elements;\n var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n oe[0] = 1 - yy - zz;\n oe[3] = yx - wz;\n oe[6] = zx + wy;\n oe[1] = yx + wz;\n oe[4] = 1 - xx - zz;\n oe[7] = zy - wx;\n oe[2] = zx - wy;\n oe[5] = zy + wx;\n oe[8] = 1 - xx - yy;\n };\n /**\n * Calculate a matrix from scale vector.\n * @param s - The scale vector\n * @param out - The calculated matrix\n */ Matrix3x3.scaling = function scaling(s, out) {\n var oe = out.elements;\n oe[0] = s._x;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = s._y;\n oe[5] = 0;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 1;\n };\n /**\n * Calculate a matrix from translation vector.\n * @param translation - The translation vector\n * @param out - The calculated matrix\n */ Matrix3x3.translation = function translation(translation, out) {\n var oe = out.elements;\n oe[0] = 1;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 1;\n oe[5] = 0;\n oe[6] = translation._x;\n oe[7] = translation._y;\n oe[8] = 1;\n };\n /**\n * Calculate the inverse of the specified matrix.\n * @param a - The matrix whose inverse is to be calculated\n * @param out - The inverse of the specified matrix\n */ Matrix3x3.invert = function invert(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2];\n var a21 = ae[3], a22 = ae[4], a23 = ae[5];\n var a31 = ae[6], a32 = ae[7], a33 = ae[8];\n var b12 = a33 * a22 - a23 * a32;\n var b22 = -a33 * a21 + a23 * a31;\n var b32 = a32 * a21 - a22 * a31;\n var det = a11 * b12 + a12 * b22 + a13 * b32;\n if (!det) {\n return;\n }\n det = 1.0 / det;\n oe[0] = b12 * det;\n oe[1] = (-a33 * a12 + a13 * a32) * det;\n oe[2] = (a23 * a12 - a13 * a22) * det;\n oe[3] = b22 * det;\n oe[4] = (a33 * a11 - a13 * a31) * det;\n oe[5] = (-a23 * a11 + a13 * a21) * det;\n oe[6] = b32 * det;\n oe[7] = (-a32 * a11 + a12 * a31) * det;\n oe[8] = (a22 * a11 - a12 * a21) * det;\n };\n /**\n * Calculate a 3x3 normal matrix from a 4x4 matrix.\n * @remarks The calculation process is the transpose matrix of the inverse matrix.\n * @param mat4 - The 4x4 matrix\n * @param out - THe 3x3 normal matrix\n */ Matrix3x3.normalMatrix = function normalMatrix(mat4, out) {\n var ae = mat4.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2], a14 = ae[3];\n var a21 = ae[4], a22 = ae[5], a23 = ae[6], a24 = ae[7];\n var a31 = ae[8], a32 = ae[9], a33 = ae[10], a34 = ae[11];\n var a41 = ae[12], a42 = ae[13], a43 = ae[14], a44 = ae[15];\n var b00 = a11 * a22 - a12 * a21;\n var b01 = a11 * a23 - a13 * a21;\n var b02 = a11 * a24 - a14 * a21;\n var b03 = a12 * a23 - a13 * a22;\n var b04 = a12 * a24 - a14 * a22;\n var b05 = a13 * a24 - a14 * a23;\n var b06 = a31 * a42 - a32 * a41;\n var b07 = a31 * a43 - a33 * a41;\n var b08 = a31 * a44 - a34 * a41;\n var b09 = a32 * a43 - a33 * a42;\n var b10 = a32 * a44 - a34 * a42;\n var b11 = a33 * a44 - a34 * a43;\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n oe[0] = (a22 * b11 - a23 * b10 + a24 * b09) * det;\n oe[1] = (a23 * b08 - a21 * b11 - a24 * b07) * det;\n oe[2] = (a21 * b10 - a22 * b08 + a24 * b06) * det;\n oe[3] = (a13 * b10 - a12 * b11 - a14 * b09) * det;\n oe[4] = (a11 * b11 - a13 * b08 + a14 * b07) * det;\n oe[5] = (a12 * b08 - a11 * b10 - a14 * b06) * det;\n oe[6] = (a42 * b05 - a43 * b04 + a44 * b03) * det;\n oe[7] = (a43 * b02 - a41 * b05 - a44 * b01) * det;\n oe[8] = (a41 * b04 - a42 * b02 + a44 * b00) * det;\n };\n /**\n * The specified matrix rotates around an angle.\n * @param a - The specified matrix\n * @param r - The rotation angle in radians\n * @param out - The rotated matrix\n */ Matrix3x3.rotate = function rotate(a, r, out) {\n var ae = a.elements;\n var oe = out.elements;\n var s = Math.sin(r);\n var c = Math.cos(r);\n var a11 = ae[0], a12 = ae[1], a13 = ae[2];\n var a21 = ae[3], a22 = ae[4], a23 = ae[5];\n var a31 = ae[6], a32 = ae[7], a33 = ae[8];\n oe[0] = c * a11 + s * a21;\n oe[1] = c * a12 + s * a22;\n oe[2] = c * a13 + s * a23;\n oe[3] = c * a21 - s * a11;\n oe[4] = c * a22 - s * a12;\n oe[5] = c * a23 - s * a13;\n oe[6] = a31;\n oe[7] = a32;\n oe[8] = a33;\n };\n /**\n * Scale a matrix by a given vector.\n * @param m - The matrix\n * @param s - The given vector\n * @param out - The scaled matrix\n */ Matrix3x3.scale = function scale(m, s, out) {\n var x = s._x, y = s._y;\n var ae = m.elements;\n var oe = out.elements;\n oe[0] = x * ae[0];\n oe[1] = x * ae[1];\n oe[2] = x * ae[2];\n oe[3] = y * ae[3];\n oe[4] = y * ae[4];\n oe[5] = y * ae[5];\n oe[6] = ae[6];\n oe[7] = ae[7];\n oe[8] = ae[8];\n };\n /**\n * Translate a matrix by a given vector.\n * @param m - The matrix\n * @param translation - The given vector\n * @param out - The translated matrix\n */ Matrix3x3.translate = function translate(m, translation, out) {\n var x = translation._x, y = translation._y;\n var ae = m.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2];\n var a21 = ae[3], a22 = ae[4], a23 = ae[5];\n var a31 = ae[6], a32 = ae[7], a33 = ae[8];\n oe[0] = a11;\n oe[1] = a12;\n oe[2] = a13;\n oe[3] = a21;\n oe[4] = a22;\n oe[5] = a23;\n oe[6] = x * a11 + y * a21 + a31;\n oe[7] = x * a12 + y * a22 + a32;\n oe[8] = x * a13 + y * a23 + a33;\n };\n /**\n * Calculate the transpose of the specified matrix.\n * @param a - The specified matrix\n * @param out - The transpose of the specified matrix\n */ Matrix3x3.transpose = function transpose(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n if (out === a) {\n var a12 = ae[1];\n var a13 = ae[2];\n var a23 = ae[5];\n oe[1] = ae[3];\n oe[2] = ae[6];\n oe[3] = a12;\n oe[5] = ae[7];\n oe[6] = a13;\n oe[7] = a23;\n } else {\n oe[0] = ae[0];\n oe[1] = ae[3];\n oe[2] = ae[6];\n oe[3] = ae[1];\n oe[4] = ae[4];\n oe[5] = ae[7];\n oe[6] = ae[2];\n oe[7] = ae[5];\n oe[8] = ae[8];\n }\n };\n return Matrix3x3;\n}();\n\n/**\n * Represents a four dimensional mathematical quaternion.\n */ var Quaternion = /*#__PURE__*/ function() {\n function Quaternion(x, y, z, w) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (z === void 0) z = 0;\n if (w === void 0) w = 1;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n var _proto = Quaternion.prototype;\n /**\n * Set the value of this quaternion, and return this quaternion.\n * @param x - The x component of the quaternion\n * @param y - The y component of the quaternion\n * @param z - The z component of the quaternion\n * @param w - The w component of the quaternion\n * @returns This quaternion\n */ _proto.set = function set(x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Transforms this quaternion into its conjugated version.\n * @returns This quaternion\n */ _proto.conjugate = function conjugate() {\n this._x *= -1;\n this._y *= -1;\n this._z *= -1;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Get the rotation axis and rotation angle of the quaternion (unit: radians).\n * @param out - The axis as an output parameter\n * @returns The rotation angle (unit: radians)\n */ _proto.getAxisAngle = function getAxisAngle(out) {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z;\n var length = _x * _x + _y * _y + _z * _z;\n if (length < MathUtil.zeroTolerance) {\n out._x = 1;\n out._y = 0;\n out._z = 0;\n return 0;\n } else {\n var inv = 1.0 / length;\n out._x = this._x * inv;\n out._y = this._y * inv;\n out._z = this._z * inv;\n return Math.acos(this._w) * 2.0;\n }\n };\n /**\n * Identity this quaternion.\n * @returns This quaternion after identity\n */ _proto.identity = function identity() {\n this._x = 0;\n this._y = 0;\n this._z = 0;\n this._w = 1;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this quaternion.\n * @returns The length of this quaternion\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n };\n /**\n * Calculates the squared length of this quaternion.\n * @returns The squared length of this quaternion\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return _x * _x + _y * _y + _z * _z + _w * _w;\n };\n /**\n * Converts this quaternion into a unit quaternion.\n * @returns This quaternion\n */ _proto.normalize = function normalize() {\n Quaternion.normalize(this, this);\n return this;\n };\n /**\n * Get the euler of this quaternion.\n * @param out - The euler (in radians) as an output parameter\n * @returns Euler x->pitch y->yaw z->roll\n */ _proto.toEuler = function toEuler(out) {\n this._toYawPitchRoll(out);\n var t = out._x;\n out._x = out._y;\n out._y = t;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Get the euler of this quaternion.\n * @param out - The euler (in radians) as an output parameter\n * @returns Euler x->yaw y->pitch z->roll\n */ _proto.toYawPitchRoll = function toYawPitchRoll(out) {\n this._toYawPitchRoll(out);\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Calculate this quaternion rotate around X axis.\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateX = function rotateX(rad) {\n Quaternion.rotateX(this, rad, this);\n return this;\n };\n /**\n * Calculate this quaternion rotate around Y axis.\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateY = function rotateY(rad) {\n Quaternion.rotateY(this, rad, this);\n return this;\n };\n /**\n * Calculate this quaternion rotate around Z axis.\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateZ = function rotateZ(rad) {\n Quaternion.rotateZ(this, rad, this);\n return this;\n };\n /**\n * Calculate this quaternion rotates around an arbitrary axis.\n * @param axis - The axis\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotationAxisAngle = function rotationAxisAngle(axis, rad) {\n Quaternion.rotationAxisAngle(axis, rad, this);\n return this;\n };\n /**\n * Determines the product of this quaternion and the specified quaternion.\n * @param quat - The specified quaternion\n * @returns The product of the two quaternions\n */ _proto.multiply = function multiply(quat) {\n Quaternion.multiply(this, quat, this);\n return this;\n };\n /**\n * Invert this quaternion.\n * @returns This quaternion after invert\n */ _proto.invert = function invert() {\n Quaternion.invert(this, this);\n return this;\n };\n /**\n * Determines the dot product of this quaternion and the specified quaternion.\n * @param quat - The specified quaternion\n * @returns The dot product of two quaternions\n */ _proto.dot = function dot(quat) {\n return Quaternion.dot(this, quat);\n };\n /**\n * Performs a linear blend between this quaternion and the specified quaternion.\n * @param quat - The specified quaternion\n * @param t - The blend amount where 0 returns this and 1 quat\n * @returns - The result of linear blending between two quaternions\n */ _proto.lerp = function lerp(quat, t) {\n Quaternion.lerp(this, quat, t, this);\n return this;\n };\n /**\n * Calculate this quaternion rotation around an arbitrary axis.\n * @param axis - The axis\n * @param rad - The rotation angle in radians\n * @returns This quaternion\n */ _proto.rotateAxisAngle = function rotateAxisAngle(axis, rad) {\n Quaternion._tempQuat1.rotationAxisAngle(axis, rad);\n this.multiply(Quaternion._tempQuat1);\n return this;\n };\n /**\n * Creates a clone of this quaternion.\n * @returns A clone of this quaternion\n */ _proto.clone = function clone() {\n return new Quaternion(this._x, this._y, this._z, this._w);\n };\n /**\n * Copy this quaternion from the specified quaternion.\n * @param source - The specified quaternion\n * @returns This quaternion\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._z = source.z;\n this._w = source.w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy this quaternion to the specified quaternion.\n * @param target - The specified quaternion\n * @returns This specified quaternion\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n target.z = this._z;\n target.w = this._w;\n return target;\n };\n /**\n * Copy the value of this quaternion from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This quaternion\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this quaternion to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n out[outOffset + 2] = this._z;\n out[outOffset + 3] = this._w;\n };\n /**\n * Serialize this quaternion to a JSON representation.\n * @returns A JSON Object representation of this quaternion\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y,\n z: this._z,\n w: this._w\n };\n };\n _proto._toYawPitchRoll = function _toYawPitchRoll(out) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n var _this = this, x = _this._x, y = _this._y, z = _this._z, w = _this._w;\n var xx = x * x;\n var yy = y * y;\n var zz = z * z;\n var ww = w * w;\n var unit = xx + yy + zz + ww;\n var test = 2 * (x * w - y * z);\n if (test > (1 - MathUtil.zeroTolerance) * unit) {\n out._x = Math.atan2(2.0 * (w * y - x * z), xx + ww - yy - zz);\n out._y = Math.PI / 2;\n out._z = 0;\n } else if (test < -(1 - MathUtil.zeroTolerance) * unit) {\n out._x = Math.atan2(2.0 * (w * y - x * z), xx + ww - yy - zz);\n out._y = -Math.PI / 2;\n out._z = 0;\n } else {\n out._x = Math.atan2(2.0 * (z * x + y * w), zz + ww - yy - xx);\n out._y = Math.asin(test / unit);\n out._z = Math.atan2(2.0 * (x * y + z * w), yy + ww - zz - xx);\n }\n };\n /**\n * Determines the sum of two quaternions.\n * @param left - The first quaternion to add\n * @param right - The second quaternion to add\n * @param out - The sum of two quaternions\n */ Quaternion.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._z = left._z + right._z;\n out._w = left._w + right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two quaternions.\n * @param left - The first quaternion to multiply\n * @param right - The second quaternion to multiply\n * @param out - The product of two quaternions\n */ Quaternion.multiply = function multiply(left, right, out) {\n var ax = left._x, ay = left._y, az = left._z, aw = left._w;\n var bx = right._x, by = right._y, bz = right._z, bw = right._w;\n out._x = ax * bw + aw * bx + ay * bz - az * by;\n out._y = ay * bw + aw * by + az * bx - ax * bz;\n out._z = az * bw + aw * bz + ax * by - ay * bx;\n out._w = aw * bw - ax * bx - ay * by - az * bz;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate quaternion that contains conjugated version of the specified quaternion.\n * @param a - The specified quaternion\n * @param out - The conjugate version of the specified quaternion\n */ Quaternion.conjugate = function conjugate(a, out) {\n out._x = -a._x;\n out._y = -a._y;\n out._z = -a._z;\n out._w = a._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two quaternions.\n * @param left - The first quaternion to dot\n * @param right - The second quaternion to dot\n * @returns The dot product of two quaternions\n */ Quaternion.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y + left._z * right._z + left._w * right._w;\n };\n /**\n * Determines whether the specified quaternions are equals.\n * @param left - The first quaternion to compare\n * @param right - The second quaternion to compare\n * @returns True if the specified quaternions are equals, false otherwise\n */ Quaternion.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y) && MathUtil.equals(left._z, right._z) && MathUtil.equals(left._w, right._w);\n };\n /**\n * Calculate a quaternion rotates around an arbitrary axis.\n * @param axis - The axis\n * @param rad - The rotation angle in radians\n * @param out - The quaternion after rotate\n */ Quaternion.rotationAxisAngle = function rotationAxisAngle(axis, rad, out) {\n var normalAxis = Quaternion._tempVector3;\n Vector3.normalize(axis, normalAxis);\n rad *= 0.5;\n var s = Math.sin(rad);\n out._x = normalAxis._x * s;\n out._y = normalAxis._y * s;\n out._z = normalAxis._z * s;\n out._w = Math.cos(rad);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion rotates around x, y, z axis (pitch/yaw/roll).\n * @param x - The radian of rotation around X (pitch)\n * @param y - The radian of rotation around Y (yaw)\n * @param z - The radian of rotation around Z (roll)\n * @param out - The calculated quaternion\n */ Quaternion.rotationEuler = function rotationEuler(x, y, z, out) {\n Quaternion.rotationYawPitchRoll(y, x, z, out);\n };\n /**\n * Calculate a quaternion from the specified yaw, pitch and roll angles.\n * @param yaw - Yaw around the y axis in radians\n * @param pitch - Pitch around the x axis in radians\n * @param roll - Roll around the z axis in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationYawPitchRoll = function rotationYawPitchRoll(yaw, pitch, roll, out) {\n var halfRoll = roll * 0.5;\n var halfPitch = pitch * 0.5;\n var halfYaw = yaw * 0.5;\n var sinRoll = Math.sin(halfRoll);\n var cosRoll = Math.cos(halfRoll);\n var sinPitch = Math.sin(halfPitch);\n var cosPitch = Math.cos(halfPitch);\n var sinYaw = Math.sin(halfYaw);\n var cosYaw = Math.cos(halfYaw);\n var cosYawPitch = cosYaw * cosPitch;\n var sinYawPitch = sinYaw * sinPitch;\n out._x = cosYaw * sinPitch * cosRoll + sinYaw * cosPitch * sinRoll;\n out._y = sinYaw * cosPitch * cosRoll - cosYaw * sinPitch * sinRoll;\n out._z = cosYawPitch * sinRoll - sinYawPitch * cosRoll;\n out._w = cosYawPitch * cosRoll + sinYawPitch * sinRoll;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion from the specified 3x3 matrix.\n * @param m - The specified 3x3 matrix\n * @param out - The calculated quaternion\n */ Quaternion.rotationMatrix3x3 = function rotationMatrix3x3(m, out) {\n var me = m.elements;\n var m11 = me[0], m12 = me[1], m13 = me[2];\n var m21 = me[3], m22 = me[4], m23 = me[5];\n var m31 = me[6], m32 = me[7], m33 = me[8];\n var scale = m11 + m22 + m33;\n var sqrt, half;\n if (scale > 0) {\n sqrt = Math.sqrt(scale + 1.0);\n out._w = sqrt * 0.5;\n sqrt = 0.5 / sqrt;\n out._x = (m23 - m32) * sqrt;\n out._y = (m31 - m13) * sqrt;\n out._z = (m12 - m21) * sqrt;\n } else if (m11 >= m22 && m11 >= m33) {\n sqrt = Math.sqrt(1.0 + m11 - m22 - m33);\n half = 0.5 / sqrt;\n out._x = 0.5 * sqrt;\n out._y = (m12 + m21) * half;\n out._z = (m13 + m31) * half;\n out._w = (m23 - m32) * half;\n } else if (m22 > m33) {\n sqrt = Math.sqrt(1.0 + m22 - m11 - m33);\n half = 0.5 / sqrt;\n out._x = (m21 + m12) * half;\n out._y = 0.5 * sqrt;\n out._z = (m32 + m23) * half;\n out._w = (m31 - m13) * half;\n } else {\n sqrt = Math.sqrt(1.0 + m33 - m11 - m22);\n half = 0.5 / sqrt;\n out._x = (m13 + m31) * half;\n out._y = (m23 + m32) * half;\n out._z = 0.5 * sqrt;\n out._w = (m12 - m21) * half;\n }\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate the inverse of the specified quaternion.\n * @param a - The quaternion whose inverse is to be calculated\n * @param out - The inverse of the specified quaternion\n */ Quaternion.invert = function invert(a, out) {\n var x = a._x, y = a._y, z = a._z, w = a._w;\n var dot = x * x + y * y + z * z + w * w;\n if (dot > MathUtil.zeroTolerance) {\n var invDot = 1.0 / dot;\n out._x = -x * invDot;\n out._y = -y * invDot;\n out._z = -z * invDot;\n out._w = w * invDot;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Performs a linear blend between two quaternions.\n * @param start - The first quaternion\n * @param end - The second quaternion\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two quaternions\n */ Quaternion.lerp = function lerp(start, end, t, out) {\n var inv = 1.0 - t;\n if (Quaternion.dot(start, end) >= 0) {\n out._x = start._x * inv + end._x * t;\n out._y = start._y * inv + end._y * t;\n out._z = start._z * inv + end._z * t;\n out._w = start._w * inv + end._w * t;\n } else {\n out._x = start._x * inv - end._x * t;\n out._y = start._y * inv - end._y * t;\n out._z = start._z * inv - end._z * t;\n out._w = start._w * inv - end._w * t;\n }\n out.normalize();\n };\n /**\n * Performs a spherical linear blend between two quaternions.\n * @param start - The first quaternion\n * @param end - The second quaternion\n * @param amount - The blend amount where 0 returns start and 1 end\n * @param out - The result of spherical linear blending between two quaternions\n */ Quaternion.slerp = function slerp(start, end, amount, out) {\n var opposite;\n var inverse;\n var dot = Quaternion.dot(start, end);\n if (Math.abs(dot) > 1.0 - MathUtil.zeroTolerance) {\n inverse = 1.0 - amount;\n opposite = amount * Math.sign(dot);\n } else {\n var acos = Math.acos(Math.abs(dot));\n var invSin = 1.0 / Math.sin(acos);\n inverse = Math.sin((1.0 - amount) * acos) * invSin;\n opposite = Math.sin(amount * acos) * invSin * Math.sign(dot);\n }\n out.x = inverse * start.x + opposite * end.x;\n out.y = inverse * start.y + opposite * end.y;\n out.z = inverse * start.z + opposite * end.z;\n out.w = inverse * start.w + opposite * end.w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Scales the specified quaternion magnitude to unit length.\n * @param a - The specified quaternion\n * @param out - The normalized quaternion\n */ Quaternion.normalize = function normalize(a, out) {\n var _x = a._x, _y = a._y, _z = a._z, _w = a._w;\n var len = Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out._x = _x * len;\n out._y = _y * len;\n out._z = _z * len;\n out._w = _w * len;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Calculate a quaternion rotate around X axis.\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationX = function rotationX(rad, out) {\n rad *= 0.5;\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out._x = s;\n out._y = 0;\n out._z = 0;\n out._w = c;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion rotate around Y axis.\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationY = function rotationY(rad, out) {\n rad *= 0.5;\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out._x = 0;\n out._y = s;\n out._z = 0;\n out._w = c;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion rotate around Z axis.\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotationZ = function rotationZ(rad, out) {\n rad *= 0.5;\n var s = Math.sin(rad);\n var c = Math.cos(rad);\n out._x = 0;\n out._y = 0;\n out._z = s;\n out._w = c;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion that the specified quaternion rotate around X axis.\n * @param quaternion - The specified quaternion\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotateX = function rotateX(quaternion, rad, out) {\n var _x = quaternion._x, _y = quaternion._y, _z = quaternion._z, _w = quaternion._w;\n rad *= 0.5;\n var bx = Math.sin(rad);\n var bw = Math.cos(rad);\n out._x = _x * bw + _w * bx;\n out._y = _y * bw + _z * bx;\n out._z = _z * bw - _y * bx;\n out._w = _w * bw - _x * bx;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion that the specified quaternion rotate around Y axis.\n * @param quaternion - The specified quaternion\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotateY = function rotateY(quaternion, rad, out) {\n var _x = quaternion._x, _y = quaternion._y, _z = quaternion._z, _w = quaternion._w;\n rad *= 0.5;\n var by = Math.sin(rad);\n var bw = Math.cos(rad);\n out._x = _x * bw - _z * by;\n out._y = _y * bw + _w * by;\n out._z = _z * bw + _x * by;\n out._w = _w * bw - _y * by;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a quaternion that the specified quaternion rotate around Z axis.\n * @param quaternion - The specified quaternion\n * @param rad - The rotation angle in radians\n * @param out - The calculated quaternion\n */ Quaternion.rotateZ = function rotateZ(quaternion, rad, out) {\n var _x = quaternion._x, _y = quaternion._y, _z = quaternion._z, _w = quaternion._w;\n rad *= 0.5;\n var bz = Math.sin(rad);\n var bw = Math.cos(rad);\n out._x = _x * bw + _y * bz;\n out._y = _y * bw - _x * bz;\n out._z = _z * bw + _w * bz;\n out._w = _w * bw - _z * bz;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Scale a quaternion by a given number.\n * @param a - The quaternion\n * @param s - The given number\n * @param out - The scaled quaternion\n */ Quaternion.scale = function scale(a, s, out) {\n out._x = a._x * s;\n out._y = a._y * s;\n out._z = a._z * s;\n out._w = a._w * s;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Quaternion, [\n {\n key: \"x\",\n get: /**\n * The x component of the quaternion.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the quaternion.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"z\",\n get: /**\n * The z component of the quaternion.\n */ function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"normalized\",\n get: /**\n * Indicting whether this instance is normalized.\n */ function get() {\n return Math.abs(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w - 1) < MathUtil.zeroTolerance;\n }\n },\n {\n key: \"w\",\n get: /**\n * The w component of the quaternion.\n */ function get() {\n return this._w;\n },\n set: function set(value) {\n this._w = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Quaternion;\n}();\n(function() {\n /** @internal */ Quaternion._tempVector3 = new Vector3();\n})();\n(function() {\n /** @internal */ Quaternion._tempQuat1 = new Quaternion();\n})();\n\n/**\n * Represents a 4x4 mathematical matrix.\n */ var Matrix = /*#__PURE__*/ function() {\n function Matrix(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n if (m11 === void 0) m11 = 1;\n if (m12 === void 0) m12 = 0;\n if (m13 === void 0) m13 = 0;\n if (m14 === void 0) m14 = 0;\n if (m21 === void 0) m21 = 0;\n if (m22 === void 0) m22 = 1;\n if (m23 === void 0) m23 = 0;\n if (m24 === void 0) m24 = 0;\n if (m31 === void 0) m31 = 0;\n if (m32 === void 0) m32 = 0;\n if (m33 === void 0) m33 = 1;\n if (m34 === void 0) m34 = 0;\n if (m41 === void 0) m41 = 0;\n if (m42 === void 0) m42 = 0;\n if (m43 === void 0) m43 = 0;\n if (m44 === void 0) m44 = 1;\n /**\n * An array containing the elements of the matrix (column matrix).\n * @remarks\n * elements[0] first column and first row value m11\n * elements[1] first column and second row value m12\n * elements[2] first column and third row value m13\n * elements[3] first column and fourth row value m14\n * elements[4] second column and first row value m21\n * and so on\n */ this.elements = new Float32Array(16);\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m14;\n e[4] = m21;\n e[5] = m22;\n e[6] = m23;\n e[7] = m24;\n e[8] = m31;\n e[9] = m32;\n e[10] = m33;\n e[11] = m34;\n e[12] = m41;\n e[13] = m42;\n e[14] = m43;\n e[15] = m44;\n }\n var _proto = Matrix.prototype;\n /**\n * Set the value of this matrix, and return this matrix.\n * @param m11 - column 1, row 1\n * @param m12 - column 1, row 2\n * @param m13 - column 1, row 3\n * @param m14 - column 1, row 4\n * @param m21 - column 2, row 1\n * @param m22 - column 2, row 2\n * @param m23 - column 2, row 3\n * @param m24 - column 2, row 4\n * @param m31 - column 3, row 1\n * @param m32 - column 3, row 2\n * @param m33 - column 3, row 3\n * @param m34 - column 3, row 4\n * @param m41 - column 4, row 1\n * @param m42 - column 4, row 2\n * @param m43 - column 4, row 3\n * @param m44 - column 4, row 4\n * @returns This matrix\n */ _proto.set = function set(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n var e = this.elements;\n e[0] = m11;\n e[1] = m12;\n e[2] = m13;\n e[3] = m14;\n e[4] = m21;\n e[5] = m22;\n e[6] = m23;\n e[7] = m24;\n e[8] = m31;\n e[9] = m32;\n e[10] = m33;\n e[11] = m34;\n e[12] = m41;\n e[13] = m42;\n e[14] = m43;\n e[15] = m44;\n return this;\n };\n /**\n * Determines the product of this matrix and the specified matrix.\n * @param right - The specified matrix\n * @returns This matrix that store the product of the two matrices\n */ _proto.multiply = function multiply(right) {\n Matrix.multiply(this, right, this);\n return this;\n };\n /**\n * Calculate a determinant of this matrix.\n * @returns The determinant of this matrix\n */ _proto.determinant = function determinant() {\n var e = this.elements;\n var a11 = e[0], a12 = e[1], a13 = e[2], a14 = e[3];\n var a21 = e[4], a22 = e[5], a23 = e[6], a24 = e[7];\n var a31 = e[8], a32 = e[9], a33 = e[10], a34 = e[11];\n var a41 = e[12], a42 = e[13], a43 = e[14], a44 = e[15];\n var b00 = a11 * a22 - a12 * a21;\n var b01 = a11 * a23 - a13 * a21;\n var b02 = a11 * a24 - a14 * a21;\n var b03 = a12 * a23 - a13 * a22;\n var b04 = a12 * a24 - a14 * a22;\n var b05 = a13 * a24 - a14 * a23;\n var b06 = a31 * a42 - a32 * a41;\n var b07 = a31 * a43 - a33 * a41;\n var b08 = a31 * a44 - a34 * a41;\n var b09 = a32 * a43 - a33 * a42;\n var b10 = a32 * a44 - a34 * a42;\n var b11 = a33 * a44 - a34 * a43;\n // Calculate the determinant\n return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n };\n /**\n * Decompose this matrix to translation, rotation and scale elements.\n * @param translation - Translation vector as an output parameter\n * @param rotation - Rotation quaternion as an output parameter\n * @param scale - Scale vector as an output parameter\n * @returns True if this matrix can be decomposed, false otherwise\n */ _proto.decompose = function decompose(translation, rotation, scale) {\n var rm = Matrix._tempMat30;\n var e = this.elements;\n var rme = rm.elements;\n var m11 = e[0];\n var m12 = e[1];\n var m13 = e[2];\n var m21 = e[4];\n var m22 = e[5];\n var m23 = e[6];\n var m31 = e[8];\n var m32 = e[9];\n var m33 = e[10];\n translation.set(e[12], e[13], e[14]);\n var sx = Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13);\n var sy = Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23);\n var sz = Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33);\n if (this.determinant() < 0) sx = -sx;\n scale.set(sx, sy, sz);\n if (Math.abs(sx) < MathUtil.zeroTolerance || Math.abs(sy) < MathUtil.zeroTolerance || Math.abs(sz) < MathUtil.zeroTolerance) {\n rotation.identity();\n return false;\n } else {\n var invSX = 1 / sx;\n var invSY = 1 / sy;\n var invSZ = 1 / sz;\n rme[0] = m11 * invSX;\n rme[1] = m12 * invSX;\n rme[2] = m13 * invSX;\n rme[3] = m21 * invSY;\n rme[4] = m22 * invSY;\n rme[5] = m23 * invSY;\n rme[6] = m31 * invSZ;\n rme[7] = m32 * invSZ;\n rme[8] = m33 * invSZ;\n Quaternion.rotationMatrix3x3(rm, rotation);\n return true;\n }\n };\n /**\n * Get rotation from this matrix.\n * @param out - Rotation quaternion as an output parameter\n * @returns The out\n */ _proto.getRotation = function getRotation(out) {\n var e = this.elements;\n var trace = e[0] + e[5] + e[10];\n if (trace > MathUtil.zeroTolerance) {\n var s = Math.sqrt(trace + 1.0) * 2;\n out._w = 0.25 * s;\n out._x = (e[6] - e[9]) / s;\n out._y = (e[8] - e[2]) / s;\n out._z = (e[1] - e[4]) / s;\n } else if (e[0] > e[5] && e[0] > e[10]) {\n var s1 = Math.sqrt(1.0 + e[0] - e[5] - e[10]) * 2;\n out._w = (e[6] - e[9]) / s1;\n out._x = 0.25 * s1;\n out._y = (e[1] + e[4]) / s1;\n out._z = (e[8] + e[2]) / s1;\n } else if (e[5] > e[10]) {\n var s2 = Math.sqrt(1.0 + e[5] - e[0] - e[10]) * 2;\n out._w = (e[8] - e[2]) / s2;\n out._x = (e[1] + e[4]) / s2;\n out._y = 0.25 * s2;\n out._z = (e[6] + e[9]) / s2;\n } else {\n var s3 = Math.sqrt(1.0 + e[10] - e[0] - e[5]) * 2;\n out._w = (e[1] - e[4]) / s3;\n out._x = (e[8] + e[2]) / s3;\n out._y = (e[6] + e[9]) / s3;\n out._z = 0.25 * s3;\n }\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Get scale from this matrix.\n * @param out - Scale vector as an output parameter\n * @returns The out\n */ _proto.getScaling = function getScaling(out) {\n //getScale()\n var e = this.elements;\n var m11 = e[0], m12 = e[1], m13 = e[2];\n var m21 = e[4], m22 = e[5], m23 = e[6];\n var m31 = e[8], m32 = e[9], m33 = e[10];\n out.set(Math.sqrt(m11 * m11 + m12 * m12 + m13 * m13), Math.sqrt(m21 * m21 + m22 * m22 + m23 * m23), Math.sqrt(m31 * m31 + m32 * m32 + m33 * m33));\n return out;\n };\n /**\n * Get translation from this matrix.\n * @param out - Translation vector as an output parameter\n * @returns The out\n */ _proto.getTranslation = function getTranslation(out) {\n var e = this.elements;\n out.set(e[12], e[13], e[14]);\n return out;\n };\n /**\n * Identity this matrix.\n * @returns This matrix after identity\n */ _proto.identity = function identity() {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 0;\n e[4] = 0;\n e[5] = 1;\n e[6] = 0;\n e[7] = 0;\n e[8] = 0;\n e[9] = 0;\n e[10] = 1;\n e[11] = 0;\n e[12] = 0;\n e[13] = 0;\n e[14] = 0;\n e[15] = 1;\n return this;\n };\n /**\n * Invert the matrix.\n * @returns The matrix after invert\n */ _proto.invert = function invert() {\n Matrix.invert(this, this);\n return this;\n };\n /**\n * This matrix rotates around an arbitrary axis.\n * @param axis - The axis\n * @param r - The rotation angle in radians\n * @returns This matrix after rotate\n */ _proto.rotateAxisAngle = function rotateAxisAngle(axis, r) {\n Matrix.rotateAxisAngle(this, axis, r, this);\n return this;\n };\n /**\n * Scale this matrix by a given vector.\n * @param s - The given vector\n * @returns This matrix after scale\n */ _proto.scale = function scale(s) {\n Matrix.scale(this, s, this);\n return this;\n };\n /**\n * Translate this matrix by a given vector.\n * @param v - The given vector\n * @returns This matrix after translate\n */ _proto.translate = function translate(v) {\n Matrix.translate(this, v, this);\n return this;\n };\n /**\n * Calculate the transpose of this matrix.\n * @returns This matrix after transpose\n */ _proto.transpose = function transpose() {\n Matrix.transpose(this, this);\n return this;\n };\n /**\n * Creates a clone of this matrix.\n * @returns A clone of this matrix\n */ _proto.clone = function clone() {\n var e = this.elements;\n var ret = new Matrix(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15]);\n return ret;\n };\n /**\n * Copy this matrix from the specified matrix.\n * @param source - The specified matrix\n * @returns This matrix\n */ _proto.copyFrom = function copyFrom(source) {\n var e = this.elements;\n var se = source.elements;\n e[0] = se[0];\n e[1] = se[1];\n e[2] = se[2];\n e[3] = se[3];\n e[4] = se[4];\n e[5] = se[5];\n e[6] = se[6];\n e[7] = se[7];\n e[8] = se[8];\n e[9] = se[9];\n e[10] = se[10];\n e[11] = se[11];\n e[12] = se[12];\n e[13] = se[13];\n e[14] = se[14];\n e[15] = se[15];\n return this;\n };\n /**\n * Copy the value of this matrix from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This matrix\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n var srce = this.elements;\n for(var i = 0; i < 16; i++){\n srce[i] = array[i + offset];\n }\n return this;\n };\n /**\n * Copy the value of this matrix to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n var e = this.elements;\n out[outOffset] = e[0];\n out[outOffset + 1] = e[1];\n out[outOffset + 2] = e[2];\n out[outOffset + 3] = e[3];\n out[outOffset + 4] = e[4];\n out[outOffset + 5] = e[5];\n out[outOffset + 6] = e[6];\n out[outOffset + 7] = e[7];\n out[outOffset + 8] = e[8];\n out[outOffset + 9] = e[9];\n out[outOffset + 10] = e[10];\n out[outOffset + 11] = e[11];\n out[outOffset + 12] = e[12];\n out[outOffset + 13] = e[13];\n out[outOffset + 14] = e[14];\n out[outOffset + 15] = e[15];\n };\n /**\n * Determines the product of two matrices.\n * @param left - The first matrix to multiply\n * @param right - The second matrix to multiply\n * @param out - The product of the two matrices\n */ Matrix.multiply = function multiply(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n // prettier-ignore\n var l11 = le[0], l12 = le[1], l13 = le[2], l14 = le[3], l21 = le[4], l22 = le[5], l23 = le[6], l24 = le[7], l31 = le[8], l32 = le[9], l33 = le[10], l34 = le[11], l41 = le[12], l42 = le[13], l43 = le[14], l44 = le[15];\n // prettier-ignore\n var r11 = re[0], r12 = re[1], r13 = re[2], r14 = re[3], r21 = re[4], r22 = re[5], r23 = re[6], r24 = re[7], r31 = re[8], r32 = re[9], r33 = re[10], r34 = re[11], r41 = re[12], r42 = re[13], r43 = re[14], r44 = re[15];\n oe[0] = l11 * r11 + l21 * r12 + l31 * r13 + l41 * r14;\n oe[1] = l12 * r11 + l22 * r12 + l32 * r13 + l42 * r14;\n oe[2] = l13 * r11 + l23 * r12 + l33 * r13 + l43 * r14;\n oe[3] = l14 * r11 + l24 * r12 + l34 * r13 + l44 * r14;\n oe[4] = l11 * r21 + l21 * r22 + l31 * r23 + l41 * r24;\n oe[5] = l12 * r21 + l22 * r22 + l32 * r23 + l42 * r24;\n oe[6] = l13 * r21 + l23 * r22 + l33 * r23 + l43 * r24;\n oe[7] = l14 * r21 + l24 * r22 + l34 * r23 + l44 * r24;\n oe[8] = l11 * r31 + l21 * r32 + l31 * r33 + l41 * r34;\n oe[9] = l12 * r31 + l22 * r32 + l32 * r33 + l42 * r34;\n oe[10] = l13 * r31 + l23 * r32 + l33 * r33 + l43 * r34;\n oe[11] = l14 * r31 + l24 * r32 + l34 * r33 + l44 * r34;\n oe[12] = l11 * r41 + l21 * r42 + l31 * r43 + l41 * r44;\n oe[13] = l12 * r41 + l22 * r42 + l32 * r43 + l42 * r44;\n oe[14] = l13 * r41 + l23 * r42 + l33 * r43 + l43 * r44;\n oe[15] = l14 * r41 + l24 * r42 + l34 * r43 + l44 * r44;\n };\n /**\n * Determines whether the specified matrices are equals.\n * @param left - The first matrix to compare\n * @param right - The second matrix to compare\n * @returns True if the specified matrices are equals, false otherwise\n */ Matrix.equals = function equals(left, right) {\n var le = left.elements;\n var re = right.elements;\n return MathUtil.equals(le[0], re[0]) && MathUtil.equals(le[1], re[1]) && MathUtil.equals(le[2], re[2]) && MathUtil.equals(le[3], re[3]) && MathUtil.equals(le[4], re[4]) && MathUtil.equals(le[5], re[5]) && MathUtil.equals(le[6], re[6]) && MathUtil.equals(le[7], re[7]) && MathUtil.equals(le[8], re[8]) && MathUtil.equals(le[9], re[9]) && MathUtil.equals(le[10], re[10]) && MathUtil.equals(le[11], re[11]) && MathUtil.equals(le[12], re[12]) && MathUtil.equals(le[13], re[13]) && MathUtil.equals(le[14], re[14]) && MathUtil.equals(le[15], re[15]);\n };\n /**\n * Performs a linear interpolation between two matrices.\n * @param start - The first matrix\n * @param end - The second matrix\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two matrices\n */ Matrix.lerp = function lerp(start, end, t, out) {\n var se = start.elements;\n var ee = end.elements;\n var oe = out.elements;\n var inv = 1.0 - t;\n oe[0] = se[0] * inv + ee[0] * t;\n oe[1] = se[1] * inv + ee[1] * t;\n oe[2] = se[2] * inv + ee[2] * t;\n oe[3] = se[3] * inv + ee[3] * t;\n oe[4] = se[4] * inv + ee[4] * t;\n oe[5] = se[5] * inv + ee[5] * t;\n oe[6] = se[6] * inv + ee[6] * t;\n oe[7] = se[7] * inv + ee[7] * t;\n oe[8] = se[8] * inv + ee[8] * t;\n oe[9] = se[9] * inv + ee[9] * t;\n oe[10] = se[10] * inv + ee[10] * t;\n oe[11] = se[11] * inv + ee[11] * t;\n oe[12] = se[12] * inv + ee[12] * t;\n oe[13] = se[13] * inv + ee[13] * t;\n oe[14] = se[14] * inv + ee[14] * t;\n oe[15] = se[15] * inv + ee[15] * t;\n };\n /**\n * Determines the sum of two matrices.\n * @param left - The first matrix to add\n * @param right - The second matrix to add\n * @param out - The sum of two matrices\n */ Matrix.add = function add(left, right, out) {\n var le = left.elements;\n var re = right.elements;\n var oe = out.elements;\n oe[0] = le[0] + re[0];\n oe[1] = le[1] + re[1];\n oe[2] = le[2] + re[2];\n oe[3] = le[3] + re[3];\n oe[4] = le[4] + re[4];\n oe[5] = le[5] + re[5];\n oe[6] = le[6] + re[6];\n oe[7] = le[7] + re[7];\n oe[8] = le[8] + re[8];\n oe[9] = le[9] + re[9];\n oe[10] = le[10] + re[10];\n oe[11] = le[11] + re[11];\n oe[12] = le[12] + re[12];\n oe[13] = le[13] + re[13];\n oe[14] = le[14] + re[14];\n oe[15] = le[15] + re[15];\n };\n /**\n * Multiplies a matrix by a scalar.\n * @param source - The matrix to multiply\n * @param scalar - The scalar to multiply\n * @param out - The result of multiplying a matrix by a scalar\n */ Matrix.multiplyScalar = function multiplyScalar(source, scalar, out) {\n var se = source.elements;\n var oe = out.elements;\n oe[0] = se[0] * scalar;\n oe[1] = se[1] * scalar;\n oe[2] = se[2] * scalar;\n oe[3] = se[3] * scalar;\n oe[4] = se[4] * scalar;\n oe[5] = se[5] * scalar;\n oe[6] = se[6] * scalar;\n oe[7] = se[7] * scalar;\n oe[8] = se[8] * scalar;\n oe[9] = se[9] * scalar;\n oe[10] = se[10] * scalar;\n oe[11] = se[11] * scalar;\n oe[12] = se[12] * scalar;\n oe[13] = se[13] * scalar;\n oe[14] = se[14] * scalar;\n oe[15] = se[15] * scalar;\n };\n /**\n * Calculate a rotation matrix from a quaternion.\n * @param quaternion - The quaternion used to calculate the matrix\n * @param out - The calculated rotation matrix\n */ Matrix.rotationQuaternion = function rotationQuaternion(quaternion, out) {\n var oe = out.elements;\n var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n oe[0] = 1 - yy - zz;\n oe[1] = yx + wz;\n oe[2] = zx - wy;\n oe[3] = 0;\n oe[4] = yx - wz;\n oe[5] = 1 - xx - zz;\n oe[6] = zy + wx;\n oe[7] = 0;\n oe[8] = zx + wy;\n oe[9] = zy - wx;\n oe[10] = 1 - xx - yy;\n oe[11] = 0;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 0;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix rotates around an arbitrary axis.\n * @param axis - The axis\n * @param r - The rotation angle in radians\n * @param out - The matrix after rotate\n */ Matrix.rotationAxisAngle = function rotationAxisAngle(axis, r, out) {\n var oe = out.elements;\n var x = axis._x, y = axis._y, z = axis._z;\n var len = Math.sqrt(x * x + y * y + z * z);\n var s, c, t;\n if (Math.abs(len) < MathUtil.zeroTolerance) {\n return;\n }\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(r);\n c = Math.cos(r);\n t = 1 - c;\n // Perform rotation-specific matrix multiplication\n oe[0] = x * x * t + c;\n oe[1] = y * x * t + z * s;\n oe[2] = z * x * t - y * s;\n oe[3] = 0;\n oe[4] = x * y * t - z * s;\n oe[5] = y * y * t + c;\n oe[6] = z * y * t + x * s;\n oe[7] = 0;\n oe[8] = x * z * t + y * s;\n oe[9] = y * z * t - x * s;\n oe[10] = z * z * t + c;\n oe[11] = 0;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 0;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix from a quaternion and a translation.\n * @param quaternion - The quaternion used to calculate the matrix\n * @param translation - The translation used to calculate the matrix\n * @param out - The calculated matrix\n */ Matrix.rotationTranslation = function rotationTranslation(quaternion, translation, out) {\n Matrix.rotationQuaternion(quaternion, out);\n var oe = out.elements;\n oe[12] = translation._x;\n oe[13] = translation._y;\n oe[14] = translation._z;\n };\n /**\n * Calculate an affine matrix.\n * @param scale - The scale used to calculate matrix\n * @param rotation - The rotation used to calculate matrix\n * @param translation - The translation used to calculate matrix\n * @param out - The calculated matrix\n */ Matrix.affineTransformation = function affineTransformation(scale, rotation, translation, out) {\n var oe = out.elements;\n var x = rotation._x, y = rotation._y, z = rotation._z, w = rotation._w;\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var xy = x * y2;\n var xz = x * z2;\n var yy = y * y2;\n var yz = y * z2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n var sx = scale._x;\n var sy = scale._y;\n var sz = scale._z;\n oe[0] = (1 - (yy + zz)) * sx;\n oe[1] = (xy + wz) * sx;\n oe[2] = (xz - wy) * sx;\n oe[3] = 0;\n oe[4] = (xy - wz) * sy;\n oe[5] = (1 - (xx + zz)) * sy;\n oe[6] = (yz + wx) * sy;\n oe[7] = 0;\n oe[8] = (xz + wy) * sz;\n oe[9] = (yz - wx) * sz;\n oe[10] = (1 - (xx + yy)) * sz;\n oe[11] = 0;\n oe[12] = translation._x;\n oe[13] = translation._y;\n oe[14] = translation._z;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix from scale vector.\n * @param s - The scale vector\n * @param out - The calculated matrix\n */ Matrix.scaling = function scaling(s, out) {\n var oe = out.elements;\n oe[0] = s._x;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = s._y;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = s._z;\n oe[11] = 0;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 0;\n oe[15] = 1;\n };\n /**\n * Calculate a matrix from translation vector.\n * @param translation - The translation vector\n * @param out - The calculated matrix\n */ Matrix.translation = function translation(translation, out) {\n var oe = out.elements;\n oe[0] = 1;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = 1;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = 1;\n oe[11] = 0;\n oe[12] = translation._x;\n oe[13] = translation._y;\n oe[14] = translation._z;\n oe[15] = 1;\n };\n /**\n * Calculate the inverse of the specified matrix.\n * @param a - The matrix whose inverse is to be calculated\n * @param out - The inverse of the specified matrix\n */ Matrix.invert = function invert(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n var a11 = ae[0], a12 = ae[1], a13 = ae[2], a14 = ae[3];\n var a21 = ae[4], a22 = ae[5], a23 = ae[6], a24 = ae[7];\n var a31 = ae[8], a32 = ae[9], a33 = ae[10], a34 = ae[11];\n var a41 = ae[12], a42 = ae[13], a43 = ae[14], a44 = ae[15];\n var b00 = a11 * a22 - a12 * a21;\n var b01 = a11 * a23 - a13 * a21;\n var b02 = a11 * a24 - a14 * a21;\n var b03 = a12 * a23 - a13 * a22;\n var b04 = a12 * a24 - a14 * a22;\n var b05 = a13 * a24 - a14 * a23;\n var b06 = a31 * a42 - a32 * a41;\n var b07 = a31 * a43 - a33 * a41;\n var b08 = a31 * a44 - a34 * a41;\n var b09 = a32 * a43 - a33 * a42;\n var b10 = a32 * a44 - a34 * a42;\n var b11 = a33 * a44 - a34 * a43;\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n oe[0] = (a22 * b11 - a23 * b10 + a24 * b09) * det;\n oe[1] = (a13 * b10 - a12 * b11 - a14 * b09) * det;\n oe[2] = (a42 * b05 - a43 * b04 + a44 * b03) * det;\n oe[3] = (a33 * b04 - a32 * b05 - a34 * b03) * det;\n oe[4] = (a23 * b08 - a21 * b11 - a24 * b07) * det;\n oe[5] = (a11 * b11 - a13 * b08 + a14 * b07) * det;\n oe[6] = (a43 * b02 - a41 * b05 - a44 * b01) * det;\n oe[7] = (a31 * b05 - a33 * b02 + a34 * b01) * det;\n oe[8] = (a21 * b10 - a22 * b08 + a24 * b06) * det;\n oe[9] = (a12 * b08 - a11 * b10 - a14 * b06) * det;\n oe[10] = (a41 * b04 - a42 * b02 + a44 * b00) * det;\n oe[11] = (a32 * b02 - a31 * b04 - a34 * b00) * det;\n oe[12] = (a22 * b07 - a21 * b09 - a23 * b06) * det;\n oe[13] = (a11 * b09 - a12 * b07 + a13 * b06) * det;\n oe[14] = (a42 * b01 - a41 * b03 - a43 * b00) * det;\n oe[15] = (a31 * b03 - a32 * b01 + a33 * b00) * det;\n };\n /**\n * Calculate a right-handed look-at matrix.\n * @param eye - The position of the viewer's eye\n * @param target - The camera look-at target\n * @param up - The camera's up vector\n * @param out - The calculated look-at matrix\n */ Matrix.lookAt = function lookAt(eye, target, up, out) {\n var oe = out.elements;\n var xAxis = Matrix._tempVec30;\n var yAxis = Matrix._tempVec31;\n var zAxis = Matrix._tempVec32;\n Vector3.subtract(eye, target, zAxis);\n zAxis.normalize();\n Vector3.cross(up, zAxis, xAxis);\n xAxis.normalize();\n Vector3.cross(zAxis, xAxis, yAxis);\n oe[0] = xAxis._x;\n oe[1] = yAxis._x;\n oe[2] = zAxis._x;\n oe[3] = 0;\n oe[4] = xAxis._y;\n oe[5] = yAxis._y;\n oe[6] = zAxis._y;\n oe[7] = 0;\n oe[8] = xAxis._z;\n oe[9] = yAxis._z;\n oe[10] = zAxis._z;\n oe[11] = 0;\n oe[12] = -Vector3.dot(xAxis, eye);\n oe[13] = -Vector3.dot(yAxis, eye);\n oe[14] = -Vector3.dot(zAxis, eye);\n oe[15] = 1;\n };\n /**\n * Calculate an orthographic projection matrix.\n * @param left - The left edge of the viewing\n * @param right - The right edge of the viewing\n * @param bottom - The bottom edge of the viewing\n * @param top - The top edge of the viewing\n * @param near - The depth of the near plane\n * @param far - The depth of the far plane\n * @param out - The calculated orthographic projection matrix\n */ Matrix.ortho = function ortho(left, right, bottom, top, near, far, out) {\n var oe = out.elements;\n var lr = 1 / (left - right);\n var bt = 1 / (bottom - top);\n var nf = 1 / (near - far);\n oe[0] = -2 * lr;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = -2 * bt;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = 2 * nf;\n oe[11] = 0;\n oe[12] = (left + right) * lr;\n oe[13] = (top + bottom) * bt;\n oe[14] = (far + near) * nf;\n oe[15] = 1;\n };\n /**\n * Calculate a perspective projection matrix.\n * @param fovY - Field of view in the y direction, in radians\n * @param aspect - Aspect ratio, defined as view space width divided by height\n * @param near - The depth of the near plane\n * @param far - The depth of the far plane\n * @param out - The calculated perspective projection matrix\n */ Matrix.perspective = function perspective(fovY, aspect, near, far, out) {\n var oe = out.elements;\n var f = 1.0 / Math.tan(fovY / 2);\n var nf = 1 / (near - far);\n oe[0] = f / aspect;\n oe[1] = 0;\n oe[2] = 0;\n oe[3] = 0;\n oe[4] = 0;\n oe[5] = f;\n oe[6] = 0;\n oe[7] = 0;\n oe[8] = 0;\n oe[9] = 0;\n oe[10] = (far + near) * nf;\n oe[11] = -1;\n oe[12] = 0;\n oe[13] = 0;\n oe[14] = 2 * far * near * nf;\n oe[15] = 0;\n };\n /**\n * The specified matrix rotates around an arbitrary axis.\n * @param m - The specified matrix\n * @param axis - The axis\n * @param r - The rotation angle in radians\n * @param out - The rotated matrix\n */ Matrix.rotateAxisAngle = function rotateAxisAngle(m, axis, r, out) {\n var x = axis._x, y = axis._y, z = axis._z;\n var len = Math.sqrt(x * x + y * y + z * z);\n if (Math.abs(len) < MathUtil.zeroTolerance) {\n return;\n }\n var me = m.elements;\n var oe = out.elements;\n var s, c, t;\n len = 1 / len;\n x *= len;\n y *= len;\n z *= len;\n s = Math.sin(r);\n c = Math.cos(r);\n t = 1 - c;\n var a11 = me[0], a12 = me[1], a13 = me[2], a14 = me[3];\n var a21 = me[4], a22 = me[5], a23 = me[6], a24 = me[7];\n var a31 = me[8], a32 = me[9], a33 = me[10], a34 = me[11];\n // Construct the elements of the rotation matrix\n var b11 = x * x * t + c;\n var b12 = y * x * t + z * s;\n var b13 = z * x * t - y * s;\n var b21 = x * y * t - z * s;\n var b22 = y * y * t + c;\n var b23 = z * y * t + x * s;\n var b31 = x * z * t + y * s;\n var b32 = y * z * t - x * s;\n var b33 = z * z * t + c;\n // Perform rotation-specific matrix multiplication\n oe[0] = a11 * b11 + a21 * b12 + a31 * b13;\n oe[1] = a12 * b11 + a22 * b12 + a32 * b13;\n oe[2] = a13 * b11 + a23 * b12 + a33 * b13;\n oe[3] = a14 * b11 + a24 * b12 + a34 * b13;\n oe[4] = a11 * b21 + a21 * b22 + a31 * b23;\n oe[5] = a12 * b21 + a22 * b22 + a32 * b23;\n oe[6] = a13 * b21 + a23 * b22 + a33 * b23;\n oe[7] = a14 * b21 + a24 * b22 + a34 * b23;\n oe[8] = a11 * b31 + a21 * b32 + a31 * b33;\n oe[9] = a12 * b31 + a22 * b32 + a32 * b33;\n oe[10] = a13 * b31 + a23 * b32 + a33 * b33;\n oe[11] = a14 * b31 + a24 * b32 + a34 * b33;\n if (m !== out) {\n // If the source and destination differ, copy the unchanged last row\n oe[12] = me[12];\n oe[13] = me[13];\n oe[14] = me[14];\n oe[15] = me[15];\n }\n };\n /**\n * Scale a matrix by a given vector.\n * @param m - The matrix\n * @param s - The given vector\n * @param out - The scaled matrix\n */ Matrix.scale = function scale(m, s, out) {\n var me = m.elements;\n var oe = out.elements;\n var x = s._x, y = s._y, z = s._z;\n oe[0] = me[0] * x;\n oe[1] = me[1] * x;\n oe[2] = me[2] * x;\n oe[3] = me[3] * x;\n oe[4] = me[4] * y;\n oe[5] = me[5] * y;\n oe[6] = me[6] * y;\n oe[7] = me[7] * y;\n oe[8] = me[8] * z;\n oe[9] = me[9] * z;\n oe[10] = me[10] * z;\n oe[11] = me[11] * z;\n oe[12] = me[12];\n oe[13] = me[13];\n oe[14] = me[14];\n oe[15] = me[15];\n };\n /**\n * Translate a matrix by a given vector.\n * @param m - The matrix\n * @param v - The given vector\n * @param out - The translated matrix\n */ Matrix.translate = function translate(m, v, out) {\n var me = m.elements;\n var oe = out.elements;\n var x = v._x, y = v._y, z = v._z;\n if (m === out) {\n oe[12] = me[0] * x + me[4] * y + me[8] * z + me[12];\n oe[13] = me[1] * x + me[5] * y + me[9] * z + me[13];\n oe[14] = me[2] * x + me[6] * y + me[10] * z + me[14];\n oe[15] = me[3] * x + me[7] * y + me[11] * z + me[15];\n } else {\n var a11 = me[0], a12 = me[1], a13 = me[2], a14 = me[3];\n var a21 = me[4], a22 = me[5], a23 = me[6], a24 = me[7];\n var a31 = me[8], a32 = me[9], a33 = me[10], a34 = me[11];\n oe[0] = a11, oe[1] = a12, oe[2] = a13, oe[3] = a14;\n oe[4] = a21, oe[5] = a22, oe[6] = a23, oe[7] = a24;\n oe[8] = a31, oe[9] = a32, oe[10] = a33, oe[11] = a34;\n oe[12] = a11 * x + a21 * y + a31 * z + me[12];\n oe[13] = a12 * x + a22 * y + a32 * z + me[13];\n oe[14] = a13 * x + a23 * y + a33 * z + me[14];\n oe[15] = a14 * x + a24 * y + a34 * z + me[15];\n }\n };\n /**\n * Calculate the transpose of the specified matrix.\n * @param a - The specified matrix\n * @param out - The transpose of the specified matrix\n */ Matrix.transpose = function transpose(a, out) {\n var ae = a.elements;\n var oe = out.elements;\n if (out === a) {\n var a12 = ae[1];\n var a13 = ae[2];\n var a14 = ae[3];\n var a23 = ae[6];\n var a24 = ae[7];\n var a34 = ae[11];\n oe[1] = ae[4];\n oe[2] = ae[8];\n oe[3] = ae[12];\n oe[4] = a12;\n oe[6] = ae[9];\n oe[7] = ae[13];\n oe[8] = a13;\n oe[9] = a23;\n oe[11] = ae[14];\n oe[12] = a14;\n oe[13] = a24;\n oe[14] = a34;\n } else {\n oe[0] = ae[0];\n oe[1] = ae[4];\n oe[2] = ae[8];\n oe[3] = ae[12];\n oe[4] = ae[1];\n oe[5] = ae[5];\n oe[6] = ae[9];\n oe[7] = ae[13];\n oe[8] = ae[2];\n oe[9] = ae[6];\n oe[10] = ae[10];\n oe[11] = ae[14];\n oe[12] = ae[3];\n oe[13] = ae[7];\n oe[14] = ae[11];\n oe[15] = ae[15];\n }\n };\n return Matrix;\n}();\n(function() {\n Matrix._tempVec30 = new Vector3();\n})();\n(function() {\n Matrix._tempVec31 = new Vector3();\n})();\n(function() {\n Matrix._tempVec32 = new Vector3();\n})();\n(function() {\n Matrix._tempMat30 = new Matrix3x3();\n})();\n(function() {\n /** @internal Identity matrix. */ Matrix._identity = new Matrix(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0);\n})();\n\n/**\n * Represents a ray with an origin and a direction in 3D space.\n */ var Ray = /*#__PURE__*/ function() {\n function Ray(origin, direction) {\n if (origin === void 0) origin = null;\n if (direction === void 0) direction = null;\n /** The origin of the ray. */ this.origin = new Vector3();\n /** The normalized direction of the ray. */ this.direction = new Vector3();\n origin && this.origin.copyFrom(origin);\n direction && this.direction.copyFrom(direction);\n }\n var _proto = Ray.prototype;\n /**\n * Check if this ray intersects the specified plane.\n * @param plane - The specified plane\n * @returns The distance from this ray to the specified plane if intersecting, -1 otherwise\n */ _proto.intersectPlane = function intersectPlane(plane) {\n return CollisionUtil.intersectsRayAndPlane(this, plane);\n };\n /**\n * Check if this ray intersects the specified sphere.\n * @param sphere - The specified sphere\n * @returns The distance from this ray to the specified sphere if intersecting, -1 otherwise\n */ _proto.intersectSphere = function intersectSphere(sphere) {\n return CollisionUtil.intersectsRayAndSphere(this, sphere);\n };\n /**\n * Check if this ray intersects the specified box (AABB).\n * @param box - The specified box\n * @returns The distance from this ray to the specified box if intersecting, -1 otherwise\n */ _proto.intersectBox = function intersectBox(box) {\n return CollisionUtil.intersectsRayAndBox(this, box);\n };\n /**\n * The coordinates of the specified distance from the origin in the ray direction.\n * @param distance - The specified distance\n * @param out - The coordinates as an output parameter\n * @returns The out\n */ _proto.getPoint = function getPoint(distance, out) {\n Vector3.scale(this.direction, distance, out);\n return out.add(this.origin);\n };\n return Ray;\n}();\n\n/**\n * Describes a 2D-vector.\n */ var Vector2 = /*#__PURE__*/ function() {\n function Vector2(x, y) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n }\n var _proto = Vector2.prototype;\n /**\n * Set the value of this vector.\n * @param x - The x component of the vector\n * @param y - The y component of the vector\n * @returns This vector\n */ _proto.set = function set(x, y) {\n this._x = x;\n this._y = y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.add = function add(right) {\n this._x += right._x;\n this._y += right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the difference of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.subtract = function subtract(right) {\n this._x -= right._x;\n this._y -= right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the product of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.multiply = function multiply(right) {\n this._x *= right._x;\n this._y *= right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the divisor of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.divide = function divide(right) {\n this._x /= right._x;\n this._y /= right._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this vector.\n * @returns The length of this vector\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y;\n return Math.sqrt(_x * _x + _y * _y);\n };\n /**\n * Calculate the squared length of this vector.\n * @returns The squared length of this vector\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y;\n return _x * _x + _y * _y;\n };\n /**\n * Reverses the direction of this vector.\n * @returns This vector\n */ _proto.negate = function negate() {\n this._x = -this._x;\n this._y = -this._y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Converts this vector into a unit vector.\n * @returns This vector\n */ _proto.normalize = function normalize() {\n Vector2.normalize(this, this);\n return this;\n };\n /**\n * Scale this vector by the given value.\n * @param s - The amount by which to scale the vector\n * @returns This vector\n */ _proto.scale = function scale(s) {\n this._x *= s;\n this._y *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this vector.\n * @returns A clone of this vector\n */ _proto.clone = function clone() {\n return new Vector2(this._x, this._y);\n };\n /**\n * Copy from vector2 like object.\n * @param source - Vector2 like object\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to vector2 like object.\n * @param target - Vector2 like object\n * @returns This Vector2 like object\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n return target;\n };\n /**\n * Copy the value of this vector from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This vector\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this vector to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n };\n /**\n * Serialize this vector to a JSON representation.\n * @returns A JSON representation of this vector\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y\n };\n };\n /**\n * Determines the sum of two vectors.\n * @param left - The first vector to add\n * @param right - The second vector to add\n * @param out - The sum of two vectors\n */ Vector2.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the difference between two vectors.\n * @param left - The first vector to subtract\n * @param right - The second vector to subtract\n * @param out - The difference between two vectors\n */ Vector2.subtract = function subtract(left, right, out) {\n out._x = left._x - right._x;\n out._y = left._y - right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two vectors.\n * @param left - The first vector to multiply\n * @param right - The second vector to multiply\n * @param out - The product of two vectors\n */ Vector2.multiply = function multiply(left, right, out) {\n out._x = left._x * right._x;\n out._y = left._y * right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the divisor of two vectors.\n * @param left - The first vector to divide\n * @param right - The second vector to divide\n * @param out - The divisor of two vectors\n */ Vector2.divide = function divide(left, right, out) {\n out._x = left._x / right._x;\n out._y = left._y / right._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two vectors.\n * @param left - The first vector to dot\n * @param right - The second vector to dot\n * @returns The dot product of two vectors\n */ Vector2.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y;\n };\n /**\n * Determines the distance of two vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @returns The distance of two vectors\n */ Vector2.distance = function distance(left, right) {\n var x = right._x - left._x;\n var y = right._y - left._y;\n return Math.sqrt(x * x + y * y);\n };\n /**\n * Determines the squared distance of two vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @returns The squared distance of two vectors\n */ Vector2.distanceSquared = function distanceSquared(left, right) {\n var x = right._x - left._x;\n var y = right._y - left._y;\n return x * x + y * y;\n };\n /**\n * Determines whether the specified vectors are equals.\n * @param left - The first vector to compare\n * @param right - The second vector to compare\n * @returns True if the specified vectors are equals, false otherwise\n */ Vector2.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y);\n };\n /**\n * Performs a linear interpolation between two vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param t - The blend amount where 0 returns left and 1 right\n * @param out - The result of linear blending between two vectors\n */ Vector2.lerp = function lerp(left, right, t, out) {\n var _x = left._x, _y = left._y;\n out._x = _x + (right._x - _x) * t;\n out._y = _y + (right._y - _y) * t;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the largest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the largest components of the specified vectors\n */ Vector2.max = function max(left, right, out) {\n out._x = Math.max(left._x, right._x);\n out._y = Math.max(left._y, right._y);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the smallest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the smallest components of the specified vectors\n */ Vector2.min = function min(left, right, out) {\n out._x = Math.min(left._x, right._x);\n out._y = Math.min(left._y, right._y);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Reverses the direction of a given vector.\n * @param left - The vector to negate\n * @param out - The vector facing in the opposite direction\n */ Vector2.negate = function negate(left, out) {\n out._x = -left._x;\n out._y = -left._y;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Converts the vector into a unit vector.\n * @param left - The vector to normalize\n * @param out - The normalized vector\n */ Vector2.normalize = function normalize(left, out) {\n var _x = left._x, _y = left._y;\n var len = Math.sqrt(_x * _x + _y * _y);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out._x = _x * len;\n out._y = _y * len;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Scale a vector by the given value.\n * @param left - The vector to scale\n * @param s - The amount by which to scale the vector\n * @param out - The scaled vector\n */ Vector2.scale = function scale(left, s, out) {\n out._x = left._x * s;\n out._y = left._y * s;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Vector2, [\n {\n key: \"x\",\n get: /**\n * The x component of the vector.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the vector.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Vector2;\n}();\n(function() {\n /** @internal */ Vector2._zero = new Vector2(0.0, 0.0);\n})();\n(function() {\n /** @internal */ Vector2._one = new Vector2(1.0, 1.0);\n})();\n\n/**\n * Describes a 4D-vector.\n */ var Vector4 = /*#__PURE__*/ function() {\n function Vector4(x, y, z, w) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (z === void 0) z = 0;\n if (w === void 0) w = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n }\n var _proto = Vector4.prototype;\n /**\n * Set the value of this vector.\n * @param x - The x component of the vector\n * @param y - The y component of the vector\n * @param z - The z component of the vector\n * @param w - The w component of the vector\n * @returns This vector\n */ _proto.set = function set(x, y, z, w) {\n this._x = x;\n this._y = y;\n this._z = z;\n this._w = w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this vector and the specified vector.\n * @param right - The specified vector\n * @returns This vector\n */ _proto.add = function add(right) {\n this._x += right._x;\n this._y += right._y;\n this._z += right._z;\n this._w += right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the difference of this vector and the specified vector.\n * @param right - the specified vector\n * @returns This vector\n */ _proto.subtract = function subtract(right) {\n this._x -= right._x;\n this._y -= right._y;\n this._z -= right._z;\n this._w -= right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the product of this vector and the specified vector.\n * @param right - the specified vector\n * @returns This vector\n */ _proto.multiply = function multiply(right) {\n this._x *= right._x;\n this._y *= right._y;\n this._z *= right._z;\n this._w *= right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the divisor of this vector and the specified vector.\n * @param right - the specified vector\n * @returns This vector\n */ _proto.divide = function divide(right) {\n this._x /= right._x;\n this._y /= right._y;\n this._z /= right._z;\n this._w /= right._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Calculate the length of this vector.\n * @returns The length of this vector\n */ _proto.length = function length() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n };\n /**\n * Calculate the squared length of this vector.\n * @returns The squared length of this vector\n */ _proto.lengthSquared = function lengthSquared() {\n var _this = this, _x = _this._x, _y = _this._y, _z = _this._z, _w = _this._w;\n return _x * _x + _y * _y + _z * _z + _w * _w;\n };\n /**\n * Reverses the direction of this vector.\n * @returns This vector\n */ _proto.negate = function negate() {\n this._x = -this._x;\n this._y = -this._y;\n this._z = -this._z;\n this._w = -this._w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Converts this vector into a unit vector.\n * @returns This vector\n */ _proto.normalize = function normalize() {\n Vector4.normalize(this, this);\n return this;\n };\n /**\n * Scale this vector by the given value.\n * @param s - The amount by which to scale the vector\n * @returns This vector\n */ _proto.scale = function scale(s) {\n this._x *= s;\n this._y *= s;\n this._z *= s;\n this._w *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this vector.\n * @returns A clone of this vector\n */ _proto.clone = function clone() {\n var ret = new Vector4(this._x, this._y, this._z, this._w);\n return ret;\n };\n /**\n * Copy from vector3 like object.\n * @param source - Vector3 like object.\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._z = source.z;\n this._w = source.w;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to vector4 like object.\n * @param target - Vector4 like object\n * @returns This Vector4 like object\n */ _proto.copyTo = function copyTo(target) {\n target.x = this._x;\n target.y = this._y;\n target.z = this._z;\n target.w = this._w;\n return target;\n };\n /**\n * Copy the value of this vector by an array.\n * @param array - The array\n * @param offset - The start offset of the array\n * @returns This vector\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n this._x = array[offset];\n this._y = array[offset + 1];\n this._z = array[offset + 2];\n this._w = array[offset + 3];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this vector to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._x;\n out[outOffset + 1] = this._y;\n out[outOffset + 2] = this._z;\n out[outOffset + 3] = this._w;\n };\n /**\n * Serialize this vector to a JSON representation.\n * @returns A JSON representation of this vector\n */ _proto.toJSON = function toJSON() {\n return {\n x: this._x,\n y: this._y,\n z: this._z,\n w: this._w\n };\n };\n /**\n * Determines the sum of two vectors.\n * @param left - The first vector to add\n * @param right - The second vector to add\n * @param out - The sum of two vectors\n */ Vector4.add = function add(left, right, out) {\n out._x = left._x + right._x;\n out._y = left._y + right._y;\n out._z = left._z + right._z;\n out._w = left._w + right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the difference between two vectors.\n * @param left - The first vector to subtract\n * @param right - The second vector to subtract\n * @param out - The difference between two vectors\n */ Vector4.subtract = function subtract(left, right, out) {\n out._x = left._x - right._x;\n out._y = left._y - right._y;\n out._z = left._z - right._z;\n out._w = left._w - right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the product of two vectors.\n * @param left - The first vector to multiply\n * @param right - The second vector to multiply\n * @param out - The product of two vectors\n */ Vector4.multiply = function multiply(left, right, out) {\n out._x = left._x * right._x;\n out._y = left._y * right._y;\n out._z = left._z * right._z;\n out._w = left._w * right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the divisor of two vectors.\n * @param left - The first vector to divide\n * @param right - The second vector to divide\n * @param out - The divisor of two vectors\n */ Vector4.divide = function divide(left, right, out) {\n out._x = left._x / right._x;\n out._y = left._y / right._y;\n out._z = left._z / right._z;\n out._w = left._w / right._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Determines the dot product of two vectors.\n * @param left - The first vector to dot\n * @param right - The second vector to dot\n * @returns The dot product of two vectors\n */ Vector4.dot = function dot(left, right) {\n return left._x * right._x + left._y * right._y + left._z * right._z + left._w * right._w;\n };\n /**\n * Determines the distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The distance of two vectors\n */ Vector4.distance = function distance(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n var w = b._w - a._w;\n return Math.sqrt(x * x + y * y + z * z + w * w);\n };\n /**\n * Determines the squared distance of two vectors.\n * @param a - The first vector\n * @param b - The second vector\n * @returns The squared distance of two vectors\n */ Vector4.distanceSquared = function distanceSquared(a, b) {\n var x = b._x - a._x;\n var y = b._y - a._y;\n var z = b._z - a._z;\n var w = b._w - a._w;\n return x * x + y * y + z * z + w * w;\n };\n /**\n * Determines whether the specified vectors are equals.\n * @param left - The first vector to compare\n * @param right - The second vector to compare\n * @returns True if the specified vectors are equals, false otherwise\n */ Vector4.equals = function equals(left, right) {\n return MathUtil.equals(left._x, right._x) && MathUtil.equals(left._y, right._y) && MathUtil.equals(left._z, right._z) && MathUtil.equals(left._w, right._w);\n };\n /**\n * Performs a linear interpolation between two vectors.\n * @param start - The first vector\n * @param end - The second vector\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two vectors\n */ Vector4.lerp = function lerp(start, end, t, out) {\n var _x = start._x, _y = start._y, _z = start._z, _w = start._w;\n out._x = _x + (end._x - _x) * t;\n out._y = _y + (end._y - _y) * t;\n out._z = _z + (end._z - _z) * t;\n out._w = _w + (end._w - _w) * t;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the largest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the largest components of the specified vectors\n */ Vector4.max = function max(left, right, out) {\n out._x = Math.max(left._x, right._x);\n out._y = Math.max(left._y, right._y);\n out._z = Math.max(left._z, right._z);\n out._w = Math.max(left._w, right._w);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Calculate a vector containing the smallest components of the specified vectors.\n * @param left - The first vector\n * @param right - The second vector\n * @param out - The vector containing the smallest components of the specified vectors\n */ Vector4.min = function min(left, right, out) {\n out._x = Math.min(left._x, right._x);\n out._y = Math.min(left._y, right._y);\n out._z = Math.min(left._z, right._z);\n out._w = Math.min(left._w, right._w);\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Reverses the direction of a given vector.\n * @param a - The vector to negate\n * @param out - The vector facing in the opposite direction\n */ Vector4.negate = function negate(a, out) {\n out._x = -a._x;\n out._y = -a._y;\n out._z = -a._z;\n out._w = -a._w;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Converts the vector into a unit vector.\n * @param a - The vector to normalize\n * @param out - The normalized vector\n */ Vector4.normalize = function normalize(a, out) {\n var _x = a._x, _y = a._y, _z = a._z, _w = a._w;\n var len = Math.sqrt(_x * _x + _y * _y + _z * _z + _w * _w);\n if (len > MathUtil.zeroTolerance) {\n len = 1 / len;\n out._x = _x * len;\n out._y = _y * len;\n out._z = _z * len;\n out._w = _w * len;\n out._onValueChanged && out._onValueChanged();\n }\n };\n /**\n * Scale a vector by the given value.\n * @param a - The vector to scale\n * @param s - The amount by which to scale the vector\n * @param out - The scaled vector\n */ Vector4.scale = function scale(a, s, out) {\n out._x = a._x * s;\n out._y = a._y * s;\n out._z = a._z * s;\n out._w = a._w * s;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given 4x4 matrix.\n * @param v - The vector to transform\n * @param m - The transform matrix\n * @param out - The transformed vector3\n */ Vector4.transform = function transform(v, m, out) {\n var _x = v._x, _y = v._y, _z = v._z, _w = v._w;\n var e = m.elements;\n out._x = _x * e[0] + _y * e[4] + _z * e[8] + _w * e[12];\n out._y = _x * e[1] + _y * e[5] + _z * e[9] + _w * e[13];\n out._z = _x * e[2] + _y * e[6] + _z * e[10] + _w * e[14];\n out._w = _x * e[3] + _y * e[7] + _z * e[11] + _w * e[15];\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Performs a transformation using the given quaternion.\n * @param v - The vector to transform\n * @param q - The transform quaternion\n * @param out - The transformed vector\n */ Vector4.transformByQuat = function transformByQuat(v, q, out) {\n var x = v._x, y = v._y, z = v._z, w = v._w;\n var qx = q._x;\n var qy = q._y;\n var qz = q._z;\n var qw = q._w;\n // calculate quat * vec\n var ix = qw * x + qy * z - qz * y;\n var iy = qw * y + qz * x - qx * z;\n var iz = qw * z + qx * y - qy * x;\n var iw = -qx * x - qy * y - qz * z;\n // calculate result * inverse quat\n out._x = ix * qw - iw * qx - iy * qz + iz * qy;\n out._y = iy * qw - iw * qy - iz * qx + ix * qz;\n out._z = iz * qw - iw * qz - ix * qy + iy * qx;\n out._w = w;\n out._onValueChanged && out._onValueChanged();\n };\n _create_class(Vector4, [\n {\n key: \"x\",\n get: /**\n * The x component of the vector.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y component of the vector.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"z\",\n get: /**\n * The z component of the vector.\n */ function get() {\n return this._z;\n },\n set: function set(value) {\n this._z = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"w\",\n get: /**\n * The w component of the vector.\n */ function get() {\n return this._w;\n },\n set: function set(value) {\n this._w = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Vector4;\n}();\n(function() {\n /** @internal */ Vector4._zero = new Vector4(0.0, 0.0, 0.0, 0.0);\n})();\n(function() {\n /** @internal */ Vector4._one = new Vector4(1.0, 1.0, 1.0, 1.0);\n})();\n\n/**\n * Describes a color in the from of RGBA (in order: R, G, B, A).\n */ var Color = /*#__PURE__*/ function() {\n function Color(r, g, b, a) {\n if (r === void 0) r = 1;\n if (g === void 0) g = 1;\n if (b === void 0) b = 1;\n if (a === void 0) a = 1;\n /** @internal */ this._onValueChanged = null;\n this._r = r;\n this._g = g;\n this._b = b;\n this._a = a;\n }\n var _proto = Color.prototype;\n /**\n * Set the value of this color.\n * @param r - The red component of the color\n * @param g - The green component of the color\n * @param b - The blue component of the color\n * @param a - The alpha component of the color\n * @returns This color.\n */ _proto.set = function set(r, g, b, a) {\n this._r = r;\n this._g = g;\n this._b = b;\n this._a = a;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Determines the sum of this color and the specified color.\n * @param color - The specified color\n * @returns The added color\n */ _proto.add = function add(color) {\n this._r += color._r;\n this._g += color._g;\n this._b += color._b;\n this._a += color._a;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Scale this color by the given value.\n * @param s - The amount by which to scale the color\n * @returns The scaled color\n */ _proto.scale = function scale(s) {\n this._r *= s;\n this._g *= s;\n this._b *= s;\n this._a *= s;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this color.\n * @returns A clone of this color\n */ _proto.clone = function clone() {\n var ret = new Color(this._r, this._g, this._b, this._a);\n return ret;\n };\n /**\n * Copy from color like object.\n * @param source - Color like object.\n * @returns This vector\n */ _proto.copyFrom = function copyFrom(source) {\n this._r = source.r;\n this._g = source.g;\n this._b = source.b;\n this._a = source.a;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy to color like object.\n * @param target - Color like object.\n * @returns This Color like object\n */ _proto.copyTo = function copyTo(target) {\n target.r = this._r;\n target.g = this._g;\n target.b = this._b;\n target.a = this._a;\n return target;\n };\n /**\n * Copy from array like object.\n * @param source - Array like object\n * @param offset - The start offset\n * @returns This color\n */ _proto.copyFromArray = function copyFromArray(source, offset) {\n if (offset === void 0) offset = 0;\n this._r = source[offset];\n this._g = source[offset + 1];\n this._b = source[offset + 2];\n this._a = source[offset + 3];\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Copy the value of this color to an array.\n * @param out - The color\n * @param outOffset - The start offset\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n out[outOffset] = this._r;\n out[outOffset + 1] = this._g;\n out[outOffset + 2] = this._b;\n out[outOffset + 3] = this._a;\n };\n /**\n * Modify components (r, g, b) of this color from gamma space to linear space.\n * @param out - The color in linear space\n * @returns The color in linear space\n */ _proto.toLinear = function toLinear(out) {\n out._r = Color.gammaToLinearSpace(this._r);\n out._g = Color.gammaToLinearSpace(this._g);\n out._b = Color.gammaToLinearSpace(this._b);\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Modify components (r, g, b) of this color from linear space to gamma space.\n * @param out - The color in gamma space\n * @returns The color in gamma space\n */ _proto.toGamma = function toGamma(out) {\n out._r = Color.linearToGammaSpace(this._r);\n out._g = Color.linearToGammaSpace(this._g);\n out._b = Color.linearToGammaSpace(this._b);\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Gets the brightness.\n * @returns The Hue-Saturation-Brightness (HSB) saturation for this\n */ _proto.getBrightness = function getBrightness() {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var max = r;\n var min = r;\n if (g > max) max = g;\n if (b > max) max = b;\n if (g < min) min = g;\n if (b < min) min = b;\n return (max + min) / 2;\n };\n /**\n * Serialize this color to a JSON representation.\n * @return A JSON representation of this color\n */ _proto.toJSON = function toJSON() {\n return {\n r: this._r,\n g: this._g,\n b: this._b,\n a: this._a\n };\n };\n /**\n * Modify a value from the gamma space to the linear space.\n * @param value - The value in gamma space\n * @returns The value in linear space\n */ Color.gammaToLinearSpace = function gammaToLinearSpace(value) {\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_sRGB.txt\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt\n if (value <= 0.0) return 0.0;\n else if (value <= 0.04045) return value / 12.92;\n else if (value < 1.0) return Math.pow((value + 0.055) / 1.055, 2.4);\n else return Math.pow(value, 2.4);\n };\n /**\n * Modify a value from the linear space to the gamma space.\n * @param value - The value in linear space\n * @returns The value in gamma space\n */ Color.linearToGammaSpace = function linearToGammaSpace(value) {\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_framebuffer_sRGB.txt\n // https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_texture_sRGB_decode.txt\n if (value <= 0.0) return 0.0;\n else if (value < 0.0031308) return 12.92 * value;\n else if (value < 1.0) return 1.055 * Math.pow(value, 0.41666) - 0.055;\n else return Math.pow(value, 0.41666);\n };\n /**\n * Determines whether the specified colors are equals.\n * @param left - The first color to compare\n * @param right - The second color to compare\n * @returns True if the specified colors are equals, false otherwise\n */ Color.equals = function equals(left, right) {\n return MathUtil.equals(left._r, right._r) && MathUtil.equals(left._g, right._g) && MathUtil.equals(left._b, right._b) && MathUtil.equals(left._a, right._a);\n };\n /**\n * Determines the sum of two colors.\n * @param left - The first color to add\n * @param right - The second color to add\n * @param out - The sum of two colors\n * @returns The added color\n */ Color.add = function add(left, right, out) {\n out._r = left._r + right._r;\n out._g = left._g + right._g;\n out._b = left._b + right._b;\n out._a = left._a + right._a;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Determines the difference between two colors.\n * @param left - The first color to subtract\n * @param right - The second color to subtract\n * @param out - The difference between two colors\n */ Color.subtract = function subtract(left, right, out) {\n out._r = left._r - right._r;\n out._g = left._g - right._g;\n out._b = left._b - right._b;\n out._a = left._a - right._a;\n out._onValueChanged && out._onValueChanged();\n };\n /**\n * Scale a color by the given value.\n * @param left - The color to scale\n * @param s - The amount by which to scale the color\n * @param out - The scaled color\n * @returns The scaled color\n */ Color.scale = function scale(left, s, out) {\n out._r = left._r * s;\n out._g = left._g * s;\n out._b = left._b * s;\n out._a = left._a * s;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n /**\n * Performs a linear interpolation between two color.\n * @param start - The first color\n * @param end - The second color\n * @param t - The blend amount where 0 returns start and 1 end\n * @param out - The result of linear blending between two color\n */ Color.lerp = function lerp(start, end, t, out) {\n var _r = start._r, _g = start._g, _b = start._b, _a = start._a;\n out._r = _r + (end._r - _r) * t;\n out._g = _g + (end._g - _g) * t;\n out._b = _b + (end._b - _b) * t;\n out._a = _a + (end._a - _a) * t;\n out._onValueChanged && out._onValueChanged();\n return out;\n };\n _create_class(Color, [\n {\n key: \"r\",\n get: /**\n * The red component of the color, 0~1.\n */ function get() {\n return this._r;\n },\n set: function set(value) {\n this._r = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"g\",\n get: /**\n * The green component of the color, 0~1.\n */ function get() {\n return this._g;\n },\n set: function set(value) {\n this._g = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"b\",\n get: /**\n * The blue component of the color, 0~1.\n */ function get() {\n return this._b;\n },\n set: function set(value) {\n this._b = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"a\",\n get: /**\n * The alpha component of the color, 0~1.\n */ function get() {\n return this._a;\n },\n set: function set(value) {\n this._a = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Color;\n}();\n\n// A 2d rectangle defined by x and y position, width and height.\nvar Rect = /*#__PURE__*/ function() {\n function Rect(x, y, width, height) {\n if (x === void 0) x = 0;\n if (y === void 0) y = 0;\n if (width === void 0) width = 0;\n if (height === void 0) height = 0;\n /** @internal */ this._onValueChanged = null;\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n }\n var _proto = Rect.prototype;\n /**\n * Set the value of this rectangle.\n * @param x - The x coordinate of the rectangle\n * @param y - The y coordinate of the rectangle\n * @param width - The width of the rectangle, measured from the x position\n * @param height - The height of the rectangle, measured from the y position\n * @returns This rectangle\n */ _proto.set = function set(x, y, width, height) {\n this._x = x;\n this._y = y;\n this._width = width;\n this._height = height;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n /**\n * Creates a clone of this rect.\n * @returns A clone of this rect\n */ _proto.clone = function clone() {\n return new Rect(this.x, this.y, this.width, this.height);\n };\n /**\n * Copy this rect from the specified rect.\n * @param source - The specified rect\n * @returns This rect\n */ _proto.copyFrom = function copyFrom(source) {\n this._x = source.x;\n this._y = source.y;\n this._width = source.width;\n this._height = source.height;\n this._onValueChanged && this._onValueChanged();\n return this;\n };\n _create_class(Rect, [\n {\n key: \"x\",\n get: /**\n * The x coordinate of the rectangle.\n */ function get() {\n return this._x;\n },\n set: function set(value) {\n this._x = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"y\",\n get: /**\n * The y coordinate of the rectangle.\n */ function get() {\n return this._y;\n },\n set: function set(value) {\n this._y = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"width\",\n get: /**\n * The width of the rectangle, measured from the x position.\n */ function get() {\n return this._width;\n },\n set: function set(value) {\n this._width = value;\n this._onValueChanged && this._onValueChanged();\n }\n },\n {\n key: \"height\",\n get: /**\n * The height of the rectangle, measured from the y position.\n */ function get() {\n return this._height;\n },\n set: function set(value) {\n this._height = value;\n this._onValueChanged && this._onValueChanged();\n }\n }\n ]);\n return Rect;\n}();\n\n/**\n * Use SH3 to represent irradiance environment maps efficiently, allowing for interactive rendering of diffuse objects under distant illumination.\n * @remarks\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\n * http://www.ppsloan.org/publications/StupidSH36.pdf\n * https://google.github.io/filament/Filament.md.html#annex/sphericalharmonics\n */ var SphericalHarmonics3 = /*#__PURE__*/ function() {\n function SphericalHarmonics3() {\n /** The coefficients of SphericalHarmonics3. */ this.coefficients = new Float32Array(27);\n }\n var _proto = SphericalHarmonics3.prototype;\n /**\n * Add light to SphericalHarmonics3.\n * @param direction - Light direction\n * @param color - Light color\n * @param deltaSolidAngle - The delta solid angle of the light\n */ _proto.addLight = function addLight(direction, color, deltaSolidAngle) {\n /**\n * Implements `EvalSHBasis` from [Projection from Cube maps] in http://www.ppsloan.org/publications/StupidSH36.pdf.\n *\n * Basis constants\n * 0: Math.sqrt(1/(4 * Math.PI))\n *\n * 1: -Math.sqrt(3 / (4 * Math.PI))\n * 2: Math.sqrt(3 / (4 * Math.PI))\n * 3: -Math.sqrt(3 / (4 * Math.PI))\n *\n * 4: Math.sqrt(15 / (4 * Math.PI))\n * 5: -Math.sqrt(15 / (4 * Math.PI))\n * 6: Math.sqrt(5 / (16 * Math.PI))\n * 7: -Math.sqrt(15 / (4 * Math.PI))\n * 8: Math.sqrt(15 / (16 * Math.PI))\n */ color.scale(deltaSolidAngle);\n var coe = this.coefficients;\n var x = direction._x, y = direction._y, z = direction._z;\n var r = color.r, g = color.g, b = color.b;\n var bv0 = 0.282095; // basis0 = 0.886227\n var bv1 = -0.488603 * y; // basis1 = -0.488603\n var bv2 = 0.488603 * z; // basis2 = 0.488603\n var bv3 = -0.488603 * x; // basis3 = -0.488603\n var bv4 = 1.092548 * (x * y); // basis4 = 1.092548\n var bv5 = -1.092548 * (y * z); // basis5 = -1.092548\n var bv6 = 0.315392 * (3 * z * z - 1); // basis6 = 0.315392\n var bv7 = -1.092548 * (x * z); // basis7 = -1.092548\n var bv8 = 0.546274 * (x * x - y * y); // basis8 = 0.546274\n coe[0] += r * bv0, coe[1] += g * bv0, coe[2] += b * bv0;\n coe[3] += r * bv1, coe[4] += g * bv1, coe[5] += b * bv1;\n coe[6] += r * bv2, coe[7] += g * bv2, coe[8] += b * bv2;\n coe[9] += r * bv3, coe[10] += g * bv3, coe[11] += b * bv3;\n coe[12] += r * bv4, coe[13] += g * bv4, coe[14] += b * bv4;\n coe[15] += r * bv5, coe[16] += g * bv5, coe[17] += b * bv5;\n coe[18] += r * bv6, coe[19] += g * bv6, coe[20] += b * bv6;\n coe[21] += r * bv7, coe[22] += g * bv7, coe[23] += b * bv7;\n coe[24] += r * bv8, coe[25] += g * bv8, coe[26] += b * bv8;\n };\n /**\n * Evaluates the color for the specified direction.\n * @param direction - Specified direction\n * @param out - Out color\n */ _proto.evaluate = function evaluate(direction, out) {\n /**\n * Equations based on data from: http://ppsloan.org/publications/StupidSH36.pdf\n *\n *\n * Basis constants\n * 0: Math.sqrt(1/(4 * Math.PI))\n *\n * 1: -Math.sqrt(3 / (4 * Math.PI))\n * 2: Math.sqrt(3 / (4 * Math.PI))\n * 3: -Math.sqrt(3 / (4 * Math.PI))\n *\n * 4: Math.sqrt(15 / (4 * Math.PI))\n * 5: -Math.sqrt(15 / (4 * Math.PI))\n * 6: Math.sqrt(5 / (16 * Math.PI))\n * 7: -Math.sqrt(15 / (4 * Math.PI))\n * 8: Math.sqrt(15 / (16 * Math.PI))\n *\n *\n * Convolution kernel\n * 0: Math.PI\n * 1: (2 * Math.PI) / 3\n * 2: Math.PI / 4\n */ var coe = this.coefficients;\n var x = direction._x, y = direction._y, z = direction._z;\n var bv0 = 0.886227; // kernel0 * basis0 = 0.886227\n var bv1 = -1.023327 * y; // kernel1 * basis1 = -1.023327\n var bv2 = 1.023327 * z; // kernel1 * basis2 = 1.023327\n var bv3 = -1.023327 * x; // kernel1 * basis3 = -1.023327\n var bv4 = 0.858086 * y * x; // kernel2 * basis4 = 0.858086\n var bv5 = -0.858086 * y * z; // kernel2 * basis5 = -0.858086\n var bv6 = 0.247708 * (3 * z * z - 1); // kernel2 * basis6 = 0.247708\n var bv7 = -0.858086 * z * x; // kernel2 * basis7 = -0.858086\n var bv8 = 0.429042 * (x * x - y * y); // kernel2 * basis8 = 0.429042\n // l0\n var r = coe[0] * bv0;\n var g = coe[1] * bv0;\n var b = coe[2] * bv0;\n // l1\n r += coe[3] * bv1 + coe[6] * bv2 + coe[9] * bv3;\n g += coe[4] * bv1 + coe[7] * bv2 + coe[10] * bv3;\n b += coe[5] * bv1 + coe[8] * bv2 + coe[11] * bv3;\n // l2\n r += coe[12] * bv4 + coe[15] * bv5 + coe[18] * bv6 + coe[21] * bv7 + coe[24] * bv8;\n g += coe[13] * bv4 + coe[16] * bv5 + coe[19] * bv6 + coe[22] * bv7 + coe[25] * bv8;\n b += coe[14] * bv4 + coe[17] * bv5 + coe[20] * bv6 + coe[23] * bv7 + coe[26] * bv8;\n out.set(r, g, b, 1.0);\n return out;\n };\n /**\n * Scale the coefficients.\n * @param s - The amount by which to scale the SphericalHarmonics3\n */ _proto.scale = function scale(s) {\n var src = this.coefficients;\n src[0] *= s, src[1] *= s, src[2] *= s;\n src[3] *= s, src[4] *= s, src[5] *= s;\n src[6] *= s, src[7] *= s, src[8] *= s;\n src[9] *= s, src[10] *= s, src[11] *= s;\n src[12] *= s, src[13] *= s, src[14] *= s;\n src[15] *= s, src[16] *= s, src[17] *= s;\n src[18] *= s, src[19] *= s, src[20] *= s;\n src[21] *= s, src[22] *= s, src[23] *= s;\n src[24] *= s, src[25] *= s, src[26] *= s;\n };\n /**\n * Creates a clone of this SphericalHarmonics3.\n * @returns A clone of this SphericalHarmonics3\n */ _proto.clone = function clone() {\n var sh = new SphericalHarmonics3();\n sh.copyFrom(this);\n return sh;\n };\n /**\n * Copy this SphericalHarmonics3 from the specified SphericalHarmonics3.\n * @param source - The specified SphericalHarmonics3\n * @returns This SphericalHarmonics3\n */ _proto.copyFrom = function copyFrom(source) {\n source.copyToArray(this.coefficients);\n return this;\n };\n /**\n * Copy the value of this spherical harmonics from an array.\n * @param array - The array\n * @param offset - The start offset of the array\n */ _proto.copyFromArray = function copyFromArray(array, offset) {\n if (offset === void 0) offset = 0;\n var s = this.coefficients;\n s[0] = array[offset], s[1] = array[1 + offset], s[2] = array[2 + offset];\n s[3] = array[3 + offset], s[4] = array[4 + offset], s[5] = array[5 + offset];\n s[6] = array[6 + offset], s[7] = array[7 + offset], s[8] = array[8 + offset];\n s[9] = array[9 + offset], s[10] = array[10 + offset], s[11] = array[11 + offset];\n s[12] = array[12 + offset], s[13] = array[13 + offset], s[14] = array[14 + offset];\n s[15] = array[15 + offset], s[16] = array[16 + offset], s[17] = array[17 + offset];\n s[18] = array[18 + offset], s[19] = array[19 + offset], s[20] = array[20 + offset];\n s[21] = array[21 + offset], s[22] = array[22 + offset], s[23] = array[23 + offset];\n s[24] = array[24 + offset], s[25] = array[25 + offset], s[26] = array[26 + offset];\n };\n /**\n * Copy the value of this spherical harmonics to an array.\n * @param out - The array\n * @param outOffset - The start offset of the array\n */ _proto.copyToArray = function copyToArray(out, outOffset) {\n if (outOffset === void 0) outOffset = 0;\n var s = this.coefficients;\n out[0 + outOffset] = s[0], out[1 + outOffset] = s[1], out[2 + outOffset] = s[2];\n out[3 + outOffset] = s[3], out[4 + outOffset] = s[4], out[5 + outOffset] = s[5];\n out[6 + outOffset] = s[6], out[7 + outOffset] = s[7], out[8 + outOffset] = s[8];\n out[9 + outOffset] = s[9], out[10 + outOffset] = s[10], out[11 + outOffset] = s[11];\n out[12 + outOffset] = s[12], out[13 + outOffset] = s[13], out[14 + outOffset] = s[14];\n out[15 + outOffset] = s[15], out[16 + outOffset] = s[16], out[17 + outOffset] = s[17];\n out[18 + outOffset] = s[18], out[19 + outOffset] = s[19], out[20 + outOffset] = s[20];\n out[21 + outOffset] = s[21], out[22 + outOffset] = s[22], out[23 + outOffset] = s[23];\n out[24 + outOffset] = s[24], out[25 + outOffset] = s[25], out[26 + outOffset] = s[26];\n };\n return SphericalHarmonics3;\n}();\n\n/**\n * Random number generator based on the xorshift128+ algorithm.\n * https://vigna.di.unimi.it/ftp/papers/xorshiftplus.pdf\n */ var Rand = /*#__PURE__*/ function() {\n function Rand(seed0, seed1) {\n this.reset(seed0, seed1);\n }\n var _proto = Rand.prototype;\n /**\n * Generate a integer 32bit random number.\n * @returns - A random number\n */ _proto.randomInt32 = function randomInt32() {\n var x = this._state0;\n var y = this._state1;\n this._state0 = y;\n x ^= x << 23;\n x ^= x >>> 17;\n x ^= y ^ y >>> 26;\n this._state1 = x;\n return this._state0 + this._state1 >>> 0;\n };\n /**\n * Generate a number between 0 and 1.\n * @returns - A random number\n */ _proto.random = function random() {\n return this.randomInt32() / 0xffffffff; // 2^32 - 1\n };\n /**\n * Reset the generator by new seeds.\n * @param seed0 - Random seed0\n * @param seed1 - Random seed1\n */ _proto.reset = function reset(seed0, seed1) {\n this._state0 = seed0 >>> 0;\n this._state1 = seed1 >>> 0;\n };\n return Rand;\n}();\n\nexport { BoundingBox, BoundingFrustum, BoundingSphere, CollisionUtil, Color, ContainmentType, FrustumFace, MathUtil, Matrix, Matrix3x3, Plane, PlaneIntersectionType, Quaternion, Rand, Ray, Rect, SphericalHarmonics3, Vector2, Vector3, Vector4 };\n//# sourceMappingURL=module.js.map\n","import { IXRReferenceImage, IXRRequestImage, IXRTrackedImage } from \"@galacean/engine-design\";\nimport { XRFeatureType, XRRequestTrackingState, XRTrackingState } from \"@galacean/engine-xr\";\nimport { registerXRPlatformFeature } from \"../WebXRDevice\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRTrackableFeature } from \"./WebXRTrackableFeature\";\n\n/**\n * WebXR implementation of XRPlatformImageTracking.\n * Note: each tracked image can appear at most once in the tracking results.\n * If multiple copies of the same image exist in the user’s environment,\n * the device can choose an arbitrary instance to report a pose,\n * and this choice can change for future XRFrames.\n */\n@registerXRPlatformFeature(XRFeatureType.ImageTracking)\nexport class WebXRImageTracking extends WebXRTrackableFeature<IXRTrackedImage, IXRRequestImage> {\n private _images: IXRReferenceImage[];\n private _trackingScoreStatus: ImageTrackingScoreStatus = ImageTrackingScoreStatus.NotReceived;\n private _tempIdx: number = 0;\n private _tempArr: number[] = [];\n\n constructor(images: IXRReferenceImage[]) {\n super();\n this._images = images;\n }\n\n checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: IXRRequestImage[]): boolean {\n if (!frame._platformFrame) return false;\n switch (this._trackingScoreStatus) {\n case ImageTrackingScoreStatus.NotReceived:\n this._requestTrackingScore(session, requestTrackings);\n return false;\n case ImageTrackingScoreStatus.Waiting:\n return false;\n }\n return true;\n }\n\n getTrackedResult(\n session: WebXRSession,\n frame: WebXRFrame,\n requestTrackings: IXRRequestImage[],\n generateTracked: () => IXRTrackedImage\n ): void {\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n const { _platformFrame: platformFrame } = frame;\n const { _tempArr: tempArr } = this;\n const idx = ++this._tempIdx;\n // @ts-ignore\n const trackingResults = platformFrame.getImageTrackingResults();\n for (let i = 0, n = trackingResults.length; i < n; i++) {\n const trackingResult = trackingResults[i];\n const { index } = trackingResult;\n const requestTrackingImage = requestTrackings[index];\n if (requestTrackingImage) {\n let tracked = requestTrackingImage.tracked[0];\n if (!tracked) {\n tracked = requestTrackingImage.tracked[0] = generateTracked();\n tracked.referenceImage = requestTrackingImage.image;\n }\n if (trackingResult.trackingState === \"tracked\") {\n this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);\n tracked.state = XRTrackingState.Tracking;\n } else {\n tracked.state = XRTrackingState.TrackingLost;\n }\n tempArr[index] = idx;\n } else {\n console.warn(\"Images can not find \" + index);\n }\n }\n\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n if (tempArr[i] < idx) requestTrackings[i].tracked[0].state = XRTrackingState.NotTracking;\n }\n }\n\n override onAddRequestTracking(requestTracking: IXRRequestImage): void {\n requestTracking.state = XRRequestTrackingState.Submitted;\n }\n\n /**\n * @internal\n */\n _assembleOptions(options: XRSessionInit): Promise<void> | void {\n options.requiredFeatures.push(\"image-tracking\");\n const { _images: images } = this;\n const promiseArr: Promise<ImageBitmap>[] = [];\n if (images) {\n for (let i = 0, n = images.length; i < n; i++) {\n const referenceImage = images[i];\n const { imageSource } = images[i];\n if (!imageSource) {\n return Promise.reject(new Error(\"referenceImage[\" + referenceImage.name + \"].src is null\"));\n } else {\n promiseArr.push(createImageBitmap(imageSource));\n }\n }\n return new Promise((resolve, reject) => {\n // @ts-ignore\n const trackedImages = (options.trackedImages = []);\n Promise.all(promiseArr).then((bitmaps: ImageBitmap[]) => {\n for (let i = 0, n = bitmaps.length; i < n; i++) {\n trackedImages.push({\n image: bitmaps[i],\n widthInMeters: images[i].physicalWidth\n });\n }\n resolve();\n }, reject);\n });\n } else {\n return Promise.reject(new Error(\"Images.length is 0\"));\n }\n }\n\n private _requestTrackingScore(session: WebXRSession, requestTrackings: IXRRequestImage[]): void {\n this._trackingScoreStatus = ImageTrackingScoreStatus.Waiting;\n session._platformSession\n // @ts-ignore\n .getTrackedImageScores()\n .then((trackingScores: (\"untrackable\" | \"trackable\")[]) => {\n if (trackingScores) {\n for (let i = 0, n = trackingScores.length; i < n; i++) {\n const trackingScore = trackingScores[i];\n const requestTracking = requestTrackings[i];\n if (trackingScore === \"trackable\") {\n this._trackingScoreStatus = ImageTrackingScoreStatus.Received;\n requestTracking.state = XRRequestTrackingState.Resolved;\n } else {\n requestTracking.state = XRRequestTrackingState.Rejected;\n console.warn(requestTracking.image.name, \" unTrackable\");\n }\n }\n }\n });\n }\n\n private _updateTrackedImage(frame: XRFrame, space: XRSpace, trackedImage: IXRTrackedImage, trackingResult: any) {\n const { pose } = trackedImage;\n const { transform } = frame.getPose(trackingResult.imageSpace, space);\n pose.matrix.copyFromArray(transform.matrix);\n pose.rotation.copyFrom(transform.orientation);\n pose.position.copyFrom(transform.position);\n trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;\n }\n}\n\nenum ImageTrackingScoreStatus {\n NotReceived,\n Waiting,\n Received\n}\n","import { _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _set_prototype_of } from \"./_set_prototype_of.js\";\nexport function _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","export function _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n\n return true;\n } catch (e) {\n return false;\n }\n}\nexport { _is_native_reflect_construct as _ };\n","import { XRTrackedInputDevice } from \"@galacean/engine-xr\";\n\nexport function parseXRMode(mode: number): XRSessionMode | null {\n switch (mode) {\n case 1:\n return \"immersive-ar\";\n case 2:\n return \"immersive-vr\";\n default:\n return null;\n }\n}\n\nexport function getInputSource(inputSource: XRInputSource): XRTrackedInputDevice {\n let type: number;\n switch (inputSource.targetRayMode) {\n case \"gaze\":\n break;\n case \"screen\":\n return XRTrackedInputDevice.Controller;\n case \"tracked-pointer\":\n if (inputSource.hand) {\n switch (inputSource.handedness) {\n case \"left\":\n return XRTrackedInputDevice.LeftHand;\n case \"right\":\n return XRTrackedInputDevice.RightHand;\n }\n } else {\n switch (inputSource.handedness) {\n case \"left\":\n return XRTrackedInputDevice.LeftController;\n case \"right\":\n return XRTrackedInputDevice.RightController;\n }\n }\n break;\n default:\n break;\n }\n return type;\n}\n\nexport function viewToCamera(type: XREye): XRTrackedInputDevice {\n switch (type) {\n case \"left\":\n return XRTrackedInputDevice.LeftCamera;\n case \"right\":\n return XRTrackedInputDevice.RightCamera;\n default:\n return XRTrackedInputDevice.Camera;\n }\n}\n","import { IXRCamera, IXRController, IXRFrame, IXRInput } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine-math\";\nimport { XRTrackedInputDevice, XRTrackingState } from \"@galacean/engine-xr\";\nimport { getInputSource, viewToCamera } from \"./Util\";\nimport { WebXRSession } from \"./WebXRSession\";\n\nexport class WebXRFrame implements IXRFrame {\n /** @internal */\n _platformFrame: XRFrame;\n private _session: WebXRSession;\n\n updateInputs(inputs: IXRInput[]): void {\n if (!this._platformFrame) return;\n this._updateController(inputs);\n this._updateCamera(inputs);\n }\n\n private _updateController(inputs: IXRInput[]) {\n const { _platformFrame: frame } = this;\n const { _platformSession: session, _platformReferenceSpace: referenceSpace } = this._session;\n const { inputSources } = session;\n for (let i = 0, n = inputSources.length; i < n; i++) {\n const inputSource = inputSources[i];\n const type = getInputSource(inputSource);\n const input = <IXRController>inputs[type];\n switch (inputSource.targetRayMode) {\n case \"screen\":\n case \"tracked-pointer\":\n const { gripSpace, targetRaySpace } = inputSource;\n if (gripSpace) {\n const { transform, emulatedPosition } = frame.getPose(gripSpace, referenceSpace);\n if (transform) {\n const { gripPose } = input;\n gripPose.matrix.copyFromArray(transform.matrix);\n gripPose.position.copyFrom(transform.position);\n gripPose.rotation.copyFrom(transform.orientation);\n }\n input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n }\n if (targetRaySpace) {\n const { transform, emulatedPosition } = frame.getPose(targetRaySpace, referenceSpace);\n if (transform) {\n const { targetRayPose } = input;\n targetRayPose.matrix.copyFromArray(transform.matrix);\n targetRayPose.position.copyFrom(transform.position);\n targetRayPose.rotation.copyFrom(transform.orientation);\n input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n }\n }\n break;\n case \"gaze\":\n break;\n default:\n break;\n }\n }\n }\n\n private _updateCamera(inputs: IXRInput[]) {\n const { _platformFrame: frame } = this;\n const {\n _platformReferenceSpace: referenceSpace,\n _platformLayer: layer,\n framebufferWidth,\n framebufferHeight\n } = this._session;\n const viewerPose = frame.getViewerPose(referenceSpace);\n if (viewerPose) {\n let hadUpdateCenterViewer = false;\n const { views, emulatedPosition } = viewerPose;\n for (let i = 0, n = views.length; i < n; i++) {\n const view = views[i];\n const type = viewToCamera(view.eye);\n const { transform } = views[i];\n if (type === XRTrackedInputDevice.Camera) {\n hadUpdateCenterViewer ||= true;\n }\n const xrCamera = <IXRCamera>inputs[type];\n const { pose } = xrCamera;\n pose.matrix.copyFromArray(transform.matrix);\n pose.position.copyFrom(transform.position);\n pose.rotation.copyFrom(transform.orientation);\n xrCamera.projectionMatrix.copyFromArray(view.projectionMatrix);\n xrCamera.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n const xrViewport = layer.getViewport(view);\n const width = xrViewport.width / framebufferWidth;\n const height = xrViewport.height / framebufferHeight;\n const x = xrViewport.x / framebufferWidth;\n const y = 1 - xrViewport.y / framebufferHeight - height;\n xrCamera.viewport.set(x, y, width, height);\n }\n\n if (!hadUpdateCenterViewer) {\n const leftCameraDevice = <IXRCamera>inputs[XRTrackedInputDevice.LeftCamera];\n const rightCameraDevice = <IXRCamera>inputs[XRTrackedInputDevice.RightCamera];\n const cameraDevice = <IXRCamera>inputs[XRTrackedInputDevice.Camera];\n const { pose: leftCameraPose } = leftCameraDevice;\n const { pose: rightCameraPose } = rightCameraDevice;\n const { pose: cameraPose } = cameraDevice;\n cameraPose.rotation.copyFrom(leftCameraPose.rotation);\n const { position, matrix } = cameraPose;\n Vector3.add(leftCameraPose.position, rightCameraPose.position, position);\n position.scale(0.5);\n matrix.copyFrom(leftCameraPose.matrix);\n const { elements } = matrix;\n elements[12] = position.x;\n elements[13] = position.y;\n elements[14] = position.z;\n cameraDevice.projectionMatrix.copyFrom(leftCameraDevice.projectionMatrix);\n cameraDevice.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n cameraDevice.viewport =\n leftCameraDevice.viewport.width && leftCameraDevice.viewport.height\n ? leftCameraDevice.viewport\n : rightCameraDevice.viewport;\n }\n }\n }\n\n constructor(session: WebXRSession) {\n this._session = session;\n }\n}\n","import { IXRInputEvent, IXRSession } from \"@galacean/engine-design\";\nimport { XRInputEventType, XRTargetRayMode, XRTrackedInputDevice } from \"@galacean/engine-xr\";\nimport { getInputSource } from \"./Util\";\nimport { WebXRFrame } from \"./WebXRFrame\";\n\nexport class WebXRSession implements IXRSession {\n requestAnimationFrame: (callback: FrameRequestCallback) => number;\n cancelAnimationFrame: (id: number) => void;\n /** @internal */\n _onSessionExitCallBack: () => void;\n\n /** @internal */\n _platformSession: XRSession;\n /** @internal */\n _platformLayer: XRWebGLLayer;\n /** @internal */\n _platformReferenceSpace: XRReferenceSpace;\n\n private _frame: WebXRFrame;\n private _events: IXRInputEvent[] = [];\n private _screenPointers: XRInputSource[] = [];\n private _inputEventTypeMap: Record<string, number> = {\n selectstart: XRInputEventType.SelectStart,\n select: XRInputEventType.Select,\n selectend: XRInputEventType.SelectEnd,\n squeezestart: XRInputEventType.SqueezeStart,\n squeeze: XRInputEventType.Squeeze,\n squeezeend: XRInputEventType.SqueezeEnd\n };\n private _targetRayModeMap: Record<string, number> = {\n gaze: XRTargetRayMode.Gaze,\n \"tracked-pointer\": XRTargetRayMode.TrackedPointer,\n screen: XRTargetRayMode.Screen\n };\n\n get frame(): WebXRFrame {\n return this._frame;\n }\n\n get framebuffer(): WebGLFramebuffer {\n return this._platformLayer.framebuffer;\n }\n\n get framebufferWidth(): number {\n return this._platformLayer.framebufferWidth;\n }\n\n get framebufferHeight(): number {\n return this._platformLayer.framebufferHeight;\n }\n\n get frameRate(): number {\n return this._platformSession.frameRate;\n }\n\n get supportedFrameRates(): Float32Array {\n return this._platformSession.supportedFrameRates;\n }\n\n get events(): IXRInputEvent[] {\n const { _events: events } = this;\n // Select event does not dispatch the move event, so we need to simulate dispatching the move here.\n const { _screenPointers: screenPointers } = this;\n for (let i = 0; i < screenPointers.length; i++) {\n const inputSource = screenPointers[i];\n if (!inputSource) continue;\n const { axes } = inputSource.gamepad;\n const event = {\n type: XRInputEventType.Select,\n targetRayMode: XRTargetRayMode.Screen,\n input: XRTrackedInputDevice.Controller,\n id: i,\n x: axes[0],\n y: axes[1]\n };\n events.push(event);\n }\n return events;\n }\n\n constructor(session: XRSession, layer: XRWebGLLayer, referenceSpace: XRReferenceSpace) {\n this._frame = new WebXRFrame(this);\n this._platformSession = session;\n this._platformLayer = layer;\n this._platformReferenceSpace = referenceSpace;\n const xrRequestAnimationFrame = session.requestAnimationFrame.bind(session);\n const onFrame = function (time: number, frame: XRFrame, callback: FrameRequestCallback) {\n this._frame._platformFrame = frame;\n callback(time);\n }.bind(this);\n this.requestAnimationFrame = (callback: FrameRequestCallback) => {\n return xrRequestAnimationFrame((time: number, frame: XRFrame) => {\n onFrame(time, frame, callback);\n });\n };\n this.cancelAnimationFrame = session.cancelAnimationFrame.bind(session);\n this._onSessionEvent = this._onSessionEvent.bind(this);\n this._onSessionExit = this._onSessionExit.bind(this);\n }\n\n getFixedFoveation(): number {\n return this._platformLayer.fixedFoveation;\n }\n\n setFixedFoveation(value: number) {\n this._platformLayer.fixedFoveation = value;\n }\n\n start(): void {}\n\n stop(): void {\n this._frame._platformFrame = null;\n }\n\n end(): Promise<void> {\n this._frame._platformFrame = null;\n return this._platformSession.end();\n }\n\n setSessionExitCallBack(onSessionExitCallBack: () => void): void {\n this._onSessionExitCallBack = onSessionExitCallBack;\n }\n\n addEventListener(): void {\n const { _onSessionEvent: onSessionEvent, _platformSession: session } = this;\n session.addEventListener(\"select\", onSessionEvent);\n session.addEventListener(\"selectstart\", onSessionEvent);\n session.addEventListener(\"selectend\", onSessionEvent);\n session.addEventListener(\"squeeze\", onSessionEvent);\n session.addEventListener(\"squeezestart\", onSessionEvent);\n session.addEventListener(\"squeezeend\", onSessionEvent);\n session.addEventListener(\"end\", this._onSessionExit);\n }\n\n removeEventListener(): void {\n const { _onSessionEvent: onSessionEvent, _platformSession: session } = this;\n session.removeEventListener(\"select\", onSessionEvent);\n session.removeEventListener(\"selectstart\", onSessionEvent);\n session.removeEventListener(\"selectend\", onSessionEvent);\n session.removeEventListener(\"squeeze\", onSessionEvent);\n session.removeEventListener(\"squeezestart\", onSessionEvent);\n session.removeEventListener(\"squeezeend\", onSessionEvent);\n session.removeEventListener(\"end\", this._onSessionExit);\n this._events.length = 0;\n }\n\n resetEvents(): void {\n this._events.length = 0;\n }\n\n private _onSessionExit(): void {\n if (this._onSessionExitCallBack) {\n this._onSessionExitCallBack();\n this._onSessionExitCallBack = null;\n }\n }\n\n private _onSessionEvent(inputSourceEvent: XRInputSourceEvent): void {\n const { inputSource } = inputSourceEvent;\n const event: IXRInputEvent = {\n type: this._inputEventTypeMap[inputSourceEvent.type],\n input: getInputSource(inputSource),\n targetRayMode: this._targetRayModeMap[inputSource.targetRayMode]\n };\n if (event.targetRayMode === XRTargetRayMode.Screen) {\n const { _screenPointers: screenPointers } = this;\n const { axes } = inputSource.gamepad;\n event.x = axes[0];\n event.y = axes[1];\n switch (event.type) {\n case XRInputEventType.SelectStart:\n let idx = -1;\n let emptyIdx = -1;\n for (let i = screenPointers.length - 1; i >= 0; i--) {\n const pointer = screenPointers[i];\n if (pointer === inputSource) {\n idx = i;\n break;\n }\n if (!pointer) {\n emptyIdx = i;\n }\n }\n if (idx === -1) {\n if (emptyIdx === -1) {\n idx = screenPointers.push(inputSource) - 1;\n } else {\n idx = emptyIdx;\n screenPointers[emptyIdx] = inputSource;\n }\n }\n event.id = idx;\n break;\n case XRInputEventType.SelectEnd:\n for (let i = screenPointers.length - 1; i >= 0; i--) {\n if (screenPointers[i] === inputSource) {\n screenPointers[i] = null;\n event.id = i;\n }\n }\n break;\n default:\n break;\n }\n }\n this._events.push(event);\n }\n}\n","import { IHardwareRenderer, IXRDevice } from \"@galacean/engine-design\";\nimport { XRFeatureType, XRSessionMode } from \"@galacean/engine-xr\";\nimport { parseXRMode } from \"./Util\";\nimport { WebXRSession } from \"./WebXRSession\";\nimport { WebXRFeature } from \"./feature/WebXRFeature\";\n\nexport class WebXRDevice implements IXRDevice {\n /** @internal */\n static _platformFeatureMap: PlatformFeatureConstructor[] = [];\n\n isSupportedSessionMode(mode: XRSessionMode): Promise<void> {\n return new Promise((resolve, reject: (reason: Error) => void) => {\n if (!window.isSecureContext) {\n reject(new Error(\"WebXR is available only in secure contexts (HTTPS).\"));\n return;\n }\n if (!navigator.xr) {\n reject(new Error(\"WebXR isn't available\"));\n return;\n }\n navigator.xr.isSessionSupported(parseXRMode(mode)).then((isSupported: boolean) => {\n isSupported ? resolve() : reject(new Error(\"The current context doesn't support WebXR.\"));\n });\n });\n }\n\n isSupportedFeature(type: XRFeatureType): boolean {\n switch (type) {\n case XRFeatureType.HitTest:\n case XRFeatureType.PlaneTracking:\n return typeof XRPlane !== \"undefined\";\n case XRFeatureType.AnchorTracking:\n return typeof XRAnchor !== \"undefined\";\n case XRFeatureType.ImageTracking:\n // @ts-ignore\n return typeof XRImageTrackingResult !== \"undefined\";\n }\n }\n\n createPlatformFeature(type: XRFeatureType, ...args: any[]): WebXRFeature {\n const platformFeatureConstructor = WebXRDevice._platformFeatureMap[type];\n return platformFeatureConstructor ? new platformFeatureConstructor(...args) : null;\n }\n\n requestSession(rhi: IHardwareRenderer, mode: XRSessionMode, platformFeatures: WebXRFeature[]): Promise<WebXRSession> {\n return new Promise((resolve, reject) => {\n const sessionMode = parseXRMode(mode);\n const options: XRSessionInit = { requiredFeatures: [\"local\"] };\n const promiseArr = [];\n for (let i = 0, n = platformFeatures.length; i < n; i++) {\n const promise = platformFeatures[i]._assembleOptions(options);\n promise && promiseArr.push(promise);\n }\n Promise.all(promiseArr).then(() => {\n navigator.xr.requestSession(sessionMode, options).then((session) => {\n const { gl } = rhi;\n const attributes = gl.getContextAttributes();\n if (!attributes) {\n reject(Error(\"GetContextAttributes Error!\"));\n }\n gl.makeXRCompatible().then(() => {\n const scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);\n let layer: XRWebGLLayer;\n if (session.renderState.layers === undefined || !!!rhi.isWebGL2) {\n const layerInit = {\n antialias: session.renderState.layers === undefined ? attributes.antialias : true,\n alpha: true,\n depth: attributes.depth,\n stencil: attributes.stencil,\n framebufferScaleFactor: scaleFactor\n };\n layer = new XRWebGLLayer(session, gl, layerInit);\n session.updateRenderState({\n baseLayer: layer\n });\n } else {\n layer = new XRWebGLLayer(session, gl);\n session.updateRenderState({\n layers: [layer]\n });\n }\n session.requestReferenceSpace(\"local\").then((referenceSpace: XRReferenceSpace) => {\n resolve(new WebXRSession(session, layer, referenceSpace));\n }, reject);\n }, reject);\n }, reject);\n }, reject);\n });\n }\n}\n\ntype PlatformFeatureConstructor = new (...args: any[]) => WebXRFeature;\nexport function registerXRPlatformFeature(type: XRFeatureType) {\n return (platformFeatureConstructor: PlatformFeatureConstructor) => {\n WebXRDevice._platformFeatureMap[type] = platformFeatureConstructor;\n };\n}\n","import { IXRRequestTracking, IXRTrackablePlatformFeature, IXRTracked } from \"@galacean/engine-design\";\nimport { XRRequestTrackingState } from \"@galacean/engine-xr\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRFeature } from \"./WebXRFeature\";\n\n/**\n * @internal\n */\nexport abstract class WebXRTrackableFeature<T extends IXRTracked, K extends IXRRequestTracking<T>>\n extends WebXRFeature\n implements IXRTrackablePlatformFeature<T, K>\n{\n get canModifyRequestTrackingAfterInit(): boolean {\n return false;\n }\n\n abstract getTrackedResult(\n session: WebXRSession,\n frame: WebXRFrame,\n requestTrackings: K[],\n generateTracked: () => T\n ): void;\n\n abstract checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: K[]): boolean;\n\n onAddRequestTracking(requestTracking: K): void {}\n\n onDelRequestTracking(requestTracking: K): void {\n requestTracking.state = XRRequestTrackingState.Destroyed;\n }\n}\n","import { IXRPlatformFeature } from \"@galacean/engine-design\";\n\n/**\n * @internal\n */\nexport abstract class WebXRFeature implements IXRPlatformFeature {\n /** @internal */\n abstract _assembleOptions(options: XRSessionInit): Promise<void> | void;\n}\n","import { IXRRequestAnchor, IXRTracked } from \"@galacean/engine-design\";\nimport { XRFeatureType, XRRequestTrackingState, XRTrackingState } from \"@galacean/engine-xr\";\nimport { registerXRPlatformFeature } from \"../WebXRDevice\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRTrackableFeature } from \"./WebXRTrackableFeature\";\n/**\n * WebXR implementation of XRPlatformAnchorTracking.\n */\n@registerXRPlatformFeature(XRFeatureType.AnchorTracking)\nexport class WebXRAnchorTracking extends WebXRTrackableFeature<IXRTracked, IWebXRRequestTrackingAnchor> {\n checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: IWebXRRequestTrackingAnchor[]): boolean {\n if (!frame._platformFrame) return false;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestTracking = requestTrackings[i];\n if (requestTracking.state === XRRequestTrackingState.None) {\n this._addAnchor(session, frame, requestTracking);\n }\n }\n return true;\n }\n\n getTrackedResult(session: WebXRSession, frame: WebXRFrame, requestTrackings: IWebXRRequestTrackingAnchor[]): void {\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n const { _platformFrame: platformFrame } = frame;\n const { trackedAnchors } = platformFrame;\n for (let i = 0, n = requestTrackings.length; i < n; i++) {\n const requestTracking = requestTrackings[i];\n if (requestTracking.state !== XRRequestTrackingState.Resolved) continue;\n const tracked = requestTracking.tracked[0];\n if (trackedAnchors.has(requestTracking.xrAnchor)) {\n const emulated = this._updateTrackedAnchor(platformFrame, platformReferenceSpace, requestTracking);\n if (emulated) {\n if (tracked.state === XRTrackingState.Tracking) {\n tracked.state = XRTrackingState.TrackingLost;\n }\n } else {\n tracked.state = XRTrackingState.Tracking;\n }\n } else {\n tracked.state = XRTrackingState.NotTracking;\n }\n }\n }\n\n override get canModifyRequestTrackingAfterInit(): boolean {\n return true;\n }\n\n override onDelRequestTracking(requestTracking: IWebXRRequestTrackingAnchor): void {\n switch (requestTracking.state) {\n case XRRequestTrackingState.Submitted:\n requestTracking.state = XRRequestTrackingState.WaitingDestroy;\n break;\n case XRRequestTrackingState.Resolved:\n requestTracking.xrAnchor.delete();\n requestTracking.state = XRRequestTrackingState.Destroyed;\n break;\n default:\n requestTracking.state = XRRequestTrackingState.Destroyed;\n break;\n }\n }\n\n /**\n * @internal\n */\n _assembleOptions(options: XRSessionInit): void {\n options.requiredFeatures.push(\"anchors\");\n }\n\n private _addAnchor(session: WebXRSession, frame: WebXRFrame, requestTracking: IWebXRRequestTrackingAnchor): void {\n if (!session || !frame) {\n return;\n }\n requestTracking.state = XRRequestTrackingState.Submitted;\n const { position, rotation } = requestTracking;\n const { _platformFrame: platformFrame } = frame;\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n platformFrame\n .createAnchor(\n new XRRigidTransform(\n { x: position.x, y: position.y, z: position.z },\n { x: rotation.x, y: rotation.y, z: rotation.z, w: rotation.w }\n ),\n platformReferenceSpace\n )\n .then(\n (xrAnchor) => {\n if (requestTracking.state === XRRequestTrackingState.WaitingDestroy) {\n xrAnchor.delete();\n requestTracking.state = XRRequestTrackingState.Destroyed;\n } else {\n requestTracking.xrAnchor = xrAnchor;\n requestTracking.state = XRRequestTrackingState.Resolved;\n }\n },\n () => {\n if (requestTracking.state === XRRequestTrackingState.WaitingDestroy) {\n requestTracking.state = XRRequestTrackingState.Destroyed;\n } else {\n requestTracking.state = XRRequestTrackingState.Rejected;\n }\n }\n );\n }\n\n private _updateTrackedAnchor(frame: XRFrame, space: XRSpace, requestTracking: IWebXRRequestTrackingAnchor): boolean {\n const { xrAnchor } = requestTracking;\n const xrPose = frame.getPose(xrAnchor.anchorSpace, space);\n const { transform } = xrPose;\n const { pose } = requestTracking.tracked[0];\n pose.matrix.copyFromArray(transform.matrix);\n pose.rotation.copyFrom(transform.orientation);\n pose.position.copyFrom(transform.position);\n return xrPose.emulatedPosition;\n }\n}\n\ninterface IWebXRRequestTrackingAnchor extends IXRRequestAnchor {\n xrAnchor: XRAnchor;\n}\n","import { IXRRequestPlane, IXRTrackedPlane } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine-math\";\nimport { XRFeatureType, XRPlaneMode, XRRequestTrackingState, XRTrackingState } from \"@galacean/engine-xr\";\nimport { registerXRPlatformFeature } from \"../WebXRDevice\";\nimport { WebXRFrame } from \"../WebXRFrame\";\nimport { WebXRSession } from \"../WebXRSession\";\nimport { WebXRTrackableFeature } from \"./WebXRTrackableFeature\";\n\n/**\n * WebXR implementation of XRPlatformPlaneTracking.\n */\n@registerXRPlatformFeature(XRFeatureType.PlaneTracking)\nexport class WebXRPlaneTracking extends WebXRTrackableFeature<IWebXRTrackedPlane, IXRRequestPlane> {\n private _lastDetectedPlanes: XRPlaneSet;\n\n constructor(detectedMode: number) {\n super();\n if (detectedMode !== XRPlaneMode.EveryThing) {\n console.warn(\"WebXR only support XRPlaneMode.EveryThing\");\n }\n }\n\n checkAvailable(session: WebXRSession, frame: WebXRFrame, requestTrackings: IXRRequestPlane[]): boolean {\n return !!frame._platformFrame;\n }\n\n getTrackedResult(\n session: WebXRSession,\n frame: WebXRFrame,\n requestTrackings: IXRRequestPlane[],\n generateTracked: () => IWebXRTrackedPlane\n ): void {\n const { _platformReferenceSpace: platformReferenceSpace } = session;\n const { _platformFrame: platformFrame } = frame;\n // @ts-ignore\n const detectedPlanes: XRPlaneSet = platformFrame.detectedPlanes || platformFrame.worldInformation?.detectedPlanes;\n const tracked = <IWebXRTrackedPlane[]>requestTrackings[0].tracked;\n for (let i = 0, n = tracked.length; i < n; i++) {\n const trackedPlane = tracked[i];\n if (detectedPlanes.has(trackedPlane.xrPlane)) {\n trackedPlane.state = XRTrackingState.Tracking;\n this._updatePlane(platformFrame, platformReferenceSpace, trackedPlane);\n } else {\n trackedPlane.state = XRTrackingState.NotTracking;\n }\n }\n\n const { _lastDetectedPlanes: lastDetectedPlanes } = this;\n detectedPlanes.forEach((xrPlane) => {\n if (!lastDetectedPlanes?.has(xrPlane)) {\n const plane = generateTracked();\n plane.xrPlane = xrPlane;\n plane.lastChangedTime = -1;\n this._updatePlane(platformFrame, platformReferenceSpace, plane);\n tracked.push(plane);\n }\n });\n this._lastDetectedPlanes = detectedPlanes;\n }\n\n override onAddRequestTracking(requestTracking: IXRRequestPlane): void {\n requestTracking.state = XRRequestTrackingState.Resolved;\n }\n\n /**\n * @internal\n */\n _assembleOptions(options: XRSessionInit): void {\n options.requiredFeatures.push(\"plane-detection\");\n }\n\n private _updatePlane(frame: XRFrame, space: XRSpace, trackedPlane: IWebXRTrackedPlane): void {\n const { pose, polygon, xrPlane } = trackedPlane;\n const planePose = frame.getPose(xrPlane.planeSpace, space);\n if (!planePose) return;\n const { transform, emulatedPosition } = planePose;\n trackedPlane.state = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;\n trackedPlane.planeMode = xrPlane.orientation === \"horizontal\" ? XRPlaneMode.Horizontal : XRPlaneMode.Vertical;\n if (trackedPlane.lastChangedTime < xrPlane.lastChangedTime) {\n trackedPlane.lastChangedTime = xrPlane.lastChangedTime;\n trackedPlane.attributesDirty = true;\n const { polygon: oriPolygon } = xrPlane;\n for (let i = 0, n = (polygon.length = oriPolygon.length); i < n; i++) {\n (polygon[i] ||= new Vector3()).copyFrom(oriPolygon[i]);\n }\n } else {\n trackedPlane.attributesDirty = false;\n }\n pose.rotation.copyFrom(transform.orientation);\n pose.position.copyFrom(transform.position);\n pose.matrix.copyFromArray(transform.matrix);\n pose.inverseMatrix.copyFromArray(transform.inverse.matrix);\n }\n}\n\ninterface IWebXRTrackedPlane extends IXRTrackedPlane {\n xrPlane?: XRPlane;\n lastChangedTime?: number;\n}\n"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","Constructor","protoProps","staticProps","prototype","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","create","constructor","value","__decorate","decorators","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","_construct","Parent","args","Class","_is_native_reflect_construct","construct","sham","Proxy","Boolean","valueOf","call","e","a","push","apply","instance","Function","bind","_instanceof","left","right","Symbol","hasInstance","SuppressedError","XRTrackedInputDevice","XRSessionState","XRTrackingState","XRCamera","XRInputButton","XRController","_proto","XRInputEventType","XRTargetRayMode","XRInputManager","XRSessionMode","XRSessionManager","XRManager1","XRManagerExtended","XRFeature","XRFeatureType","XRRequestTrackingState","XRTrackableFeature","TrackableType","XRPlaneMode","XRRequestPlane","XRTrackedPlane","XRPlaneTracking","XRHitTest","XRAnchor","XRRequestAnchor","XRAnchorTracking","XRRequestImage","XRTrackedImage","XRImageTracking","XRReferenceImageDecoder","Loader1","XRReferenceImageLoader","ContainmentType","PlaneIntersectionType","FrustumFace","MathUtil","Vector3","BoundingSphere","BoundingBox","CollisionUtil","Matrix3x3","Quaternion","Matrix","Vector2","Vector4","ImageTrackingScoreStatus","XRCameraManager","_xrManager","attachCamera","type","camera","xrCamera","inputManager","getTrackedDevice","preCamera","_camera","_cameraType","CameraType","Normal","Camera","XRCenterCamera","LeftCamera","XRLeftCamera","RightCamera","XRRightCamera","detachCamera","_onSessionStart","_onUpdate","cameras","_this__xrManager_inputManager","_cameras","n","cameraDevice","transform","entity","pose","position","rotationQuaternion","rotation","viewport","_cameraDevice_viewport","x","y","width","height","z","w","set","equals","projectionMatrix","_onSessionExit","_getIgnoreClearFlags","cameraType","CameraClearFlags","None","sessionManager","state","Running","Color","_onDestroy","get","platformSession","_this__xrManager_sessionManager","_platformSession","getFixedFoveation","Error","setFixedFoveation","XRPose","matrix","inverseMatrix","XRInput","trackingState","NotTracking","_this","XRInput1","Rect","gripPose","targetRayPose","pressedButtons","down","up","isButtonDown","button","isButtonUp","isButtonHeldDown","_engine","_controllers","_added","_removed","_trackedDevices","_statusSnapshot","_listeners","SafeLoopArray","trackedDevices","controllers","Controller","LeftController","RightController","fill","addTrackedDeviceChangedListener","listener","fn","removeTrackedDeviceChangedListener","findAndRemove","destroyed","added","removed","statusSnapshot","_this1","controller","platformEvents","events","i1","n1","_handleEvent","resetEvents","frame","updateInputs","i2","n2","input","nowState","Tracking","listeners","getLoopArray","i3","n3","event","targetRayMode","TrackedPointer","SelectStart","Select","SelectEnd","SqueezeStart","Squeeze","SqueezeEnd","Screen","engine","_pointerManager","_target","canvas","_webCanvas","clientWidth","clientHeight","clientX","clientY","dispatchEvent","_makeUpPointerEvent","id","pointerId","eventInitDict","buttons","PointerEvent","_mode","_state","_rhi","_hardwareRenderer","_raf","requestAnimationFrame","window","_caf","cancelAnimationFrame","isSupportedMode","mode","_platformDevice","isSupportedSessionMode","run","start","_setState","isPaused","pause","resume","stop","rhi","_mainFrameBuffer","_mainFrameWidth","_mainFrameHeight","Paused","_onSessionStop","addStateChangedListener","removeStateChangedListener","_initialize","features","Promise","resolve","reject","xrManager","platformFeatures","platformFeature","_features_i","_platformFeature","requestSession","then","Initialized","setSessionExitCallBack","addEventListener","_onSessionInit","framebuffer","framebufferWidth","framebufferHeight","_getRequestAnimationFrame","_getCancelAnimationFrame","_exit","end","removeEventListener","supportedFrameRates","frameRate","XRManager","isSupportedFeature","feature","_featureMap","addFeature","_len","Array","_key","concat","getFeature","enterXR","sessionMode","autoRun","_origin","Initializing","exitXR","xrDevice","_features","cameraManager","_update","enabled","_destroy","_getCameraIgnoreClearFlags","registerXRFeature","Map","ApplyMixins","derivedCtor","baseCtors","forEach","baseCtor","getOwnPropertyNames","name","_type","_xrManager__platformDevice","_enabled","createPlatformFeature","_onEnable","_onDisable","XRFeature1","_requestTrackings","_tracked","_updated","addChangedListener","removeChangedListener","platformFrame","requestTrackings","allTracked","updated","checkAvailable","getTrackedResult","_generateTracked","requestTracking","Destroyed","destroyedTracked","tracked","j","trackId","splice","indexOf","Resolved","tracked1","j1","trackedObject","trackId1","_addRequestTracking","canModifyRequestTrackingAfterInit","onAddRequestTracking","_removeRequestTracking","onDelRequestTracking","_removeAllRequestTrackings","_uuid","XRTracked","XRHitResult","point","normal","XRRequestTracking","detectionMode","XRRequestTracking1","XRTracked1","polygon","attributesDirty","EveryThing","XRTrackableFeature1","PlaneTracking","plane","HitTest","_tempRay","Ray","_tempPlane","Plane","_tempVec2","_tempVec30","_tempVec31","_tempVec32","_tempVec33","_tempVec34","_tempVec35","hitTest","ray","result","_hitTestPlane","screenHitTest","AR","_xrManager_inputManager_getTrackedDevice","screenPointToRay","planeManager","hitPoint","hitPointInPlane","trackedPlanes","trackedPlane","transformNormal","copyFrom","distance","dot","intersectPlane","getPoint","transformToVec3","_checkPointerWithinPlane","hitResult","trackableType","pointer","preToCur","preToPointer","cross","prePoint","side","curPoint","subtract","AnchorTracking","_anchors","addAnchor","anchors","requestAnchor","xrAnchor","removeAnchor","anchor","clearAnchors","image","trackingImages","ImageTracking","_trackingImages","imageLength","console","warn","XRReferenceImage","imageSource","physicalWidth","decode","bufferReader","AssetPromise","nextFloat32","nextUint8","img","Image","onload","src","URL","createObjectURL","Blob","nextImagesData","_extends","assign","source","hasOwnProperty","decoder","Loader","load","item","resourceManager","_request","url","data","referenceImage","catch","parseXRMode","getInputSource","inputSource","hand","handedness","LeftHand","RightHand","resourceLoader","clamp","v","min","max","Math","b","abs","zeroTolerance","isPowerOf2","radianToDegree","radToDegreeFactor","degreeToRadian","degreeToRadFactor","lerp","t","PI","_onValueChanged","_x","_y","_z","add","multiply","divide","sqrt","lengthSquared","negate","normalize","scale","s","m","transformCoordinate","transformByQuat","quaternion","clone","copyTo","copyFromArray","array","offset","copyToArray","out","outOffset","toJSON","ax","ay","az","bx","by","bz","distanceSquared","len","elements","transformToVec4","_w","qx","qy","qz","qw","ix","iy","iz","iw","_zero","_one","center","radius","fromPoints","points","fromBox","box","getCenter","centerX","centerY","centerZ","isNaN","getExtent","extentX","extentY","extentZ","getCorners","minX","minY","minZ","maxX","maxY","maxZ","l","fromCenterAndExtent","extent","Number","MAX_VALUE","fromSphere","sphere","e0","e1","e2","e4","e5","e6","e8","e9","e10","merge","box1","box2","intersectionPointThreePlanes","p1","p2","p3","p1Nor","p2Nor","p3Nor","distancePlaneAndPoint","intersectsPlaneAndPoint","Front","Back","Intersecting","intersectsPlaneAndBox","front","back","intersectsPlaneAndSphere","intersectsRayAndPlane","dir","direction","origin","intersectsRayAndBox","dirX","dirY","dirZ","oriX","oriY","oriZ","tmax","inverse","t1","t2","temp","inverse1","t11","t21","temp1","inverse2","t12","t22","temp2","intersectsRayAndSphere","discriminant","intersectsBoxAndBox","boxA","boxB","intersectsSphereAndSphere","sphereA","sphereB","radiisum","intersectsSphereAndBox","closestPoint","intersectsFrustumAndBox","frustum","getPlane","frustumContainsPoint","near","Intersects","Disjoint","far","top","bottom","Contains","frustumContainsBox","frustumContainsSphere","intersectionType","m11","m12","m13","m21","m22","m23","m31","m32","m33","Float32Array","determinant","a11","a12","a13","a21","a22","a23","a31","a32","a33","identity","invert","rotate","translate","translation","transpose","se","srce","copyFromMatrix","ae","le","re","oe","l11","l12","l13","l21","l22","l23","l31","l32","l33","r11","r12","r13","r21","r22","r23","r31","r32","r33","ee","inv","x2","y2","z2","xx","yx","yy","zx","zy","zz","wx","wy","wz","scaling","b12","b22","b32","det","normalMatrix","mat4","a14","a24","a34","a41","a42","a43","a44","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","b11","sin","cos","conjugate","getAxisAngle","acos","toEuler","_toYawPitchRoll","toYawPitchRoll","rotateX","rad","rotateY","rotateZ","rotationAxisAngle","axis","quat","rotateAxisAngle","_tempQuat1","ww","unit","test","atan2","asin","aw","bw","normalAxis","_tempVector3","rotationEuler","rotationYawPitchRoll","yaw","pitch","roll","halfRoll","halfPitch","halfYaw","sinRoll","cosRoll","sinPitch","cosPitch","sinYaw","cosYaw","cosYawPitch","sinYawPitch","rotationMatrix3x3","half","me","invDot","slerp","amount","opposite","sign","invSin","rotationX","rotationY","rotationZ","m14","m24","m34","m41","m42","m43","m44","decompose","rm","_tempMat30","rme","sx","sy","sz","invSX","invSY","invSZ","getRotation","trace","s1","s2","s3","getScaling","getTranslation","l14","l24","l34","l41","l42","l43","l44","r14","r24","r34","r41","r42","r43","r44","multiplyScalar","scalar","rotationTranslation","affineTransformation","xy","xz","yz","lookAt","eye","xAxis","yAxis","zAxis","ortho","lr","bt","nf","perspective","fovY","aspect","f","tan","b13","b21","b23","b31","b33","_identity","q","WebXRFrame","session","_session","inputs","_platformFrame","_updateController","_updateCamera","_this__session","_platformReferenceSpace","inputSources","gripSpace","targetRaySpace","getPose","referenceSpace","emulatedPosition","orientation","TrackingLost","_platformLayer","layer","viewerPose","getViewerPose","hadUpdateCenterViewer","views","view","viewToCamera","xrViewport","getViewport","leftCameraDevice","rightCameraDevice","leftCameraPose","rightCameraPose","cameraPose","WebXRSession","_events","_screenPointers","_inputEventTypeMap","selectstart","select","selectend","squeezestart","squeeze","squeezeend","_targetRayModeMap","gaze","Gaze","screen","_frame","xrRequestAnimationFrame","onFrame","time","callback","_onSessionEvent","fixedFoveation","onSessionExitCallBack","_onSessionExitCallBack","onSessionEvent","inputSourceEvent","screenPointers","axes","gamepad","idx","emptyIdx","WebXRDevice","isSecureContext","navigator","xr","isSessionSupported","isSupported","XRPlane","XRImageTrackingResult","platformFeatureConstructor","_platformFeatureMap","options","requiredFeatures","promiseArr","promise","_assembleOptions","all","gl","attributes","getContextAttributes","makeXRCompatible","scaleFactor","XRWebGLLayer","getNativeFramebufferScaleFactor","undefined","renderState","layers","isWebGL2","updateRenderState","layerInit","antialias","alpha","depth","stencil","framebufferScaleFactor","baseLayer","requestReferenceSpace","registerXRPlatformFeature","WebXRTrackableFeature","WebXRFeature1","WebXRAnchorTracking","WebXRTrackableFeature1","_addAnchor","platformReferenceSpace","trackedAnchors","has","_updateTrackedAnchor","Submitted","WaitingDestroy","delete","createAnchor","XRRigidTransform","Rejected","space","xrPose","anchorSpace","WebXRImageTracking","images","_trackingScoreStatus","NotReceived","_tempIdx","_tempArr","_images","_requestTrackingScore","Waiting","generateTracked","tempArr","trackingResults","getImageTrackingResults","trackingResult","index","requestTrackingImage","_updateTrackedImage","createImageBitmap","trackedImages","bitmaps","widthInMeters","getTrackedImageScores","trackingScores","trackingScore","Received","trackedImage","imageSpace","measuredPhysicalWidth","measuredWidthInMeters","WebXRPlaneTracking","detectedMode","detectedPlanes","worldInformation","xrPlane","_updatePlane","lastDetectedPlanes","_lastDetectedPlanes","lastChangedTime","planePose","planeSpace","planeMode","Horizontal","Vertical","oriPolygon"],"mappings":"6UAAA,SAASA,EAAkBC,CAAM,CAAEC,CAAK,EACpC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,MAAM,CAAED,IAAK,CACnC,IAAIE,EAAaH,CAAK,CAACC,EAAE,AACzBE,CAAAA,EAAWC,UAAU,CAAGD,EAAWC,UAAU,EAAI,CAAA,EACjDD,EAAWE,YAAY,CAAG,CAAA,EAEtB,UAAWF,GAAYA,CAAAA,EAAWG,QAAQ,CAAG,CAAA,CAAA,EAEjDC,OAAOC,cAAc,CAACT,EAAQI,EAAWM,GAAG,CAAEN,EACjD,CACL,CACO,SAASO,EAAcC,CAAW,CAAEC,CAAU,CAAEC,CAAW,EAI9D,OAHID,GAAYd,EAAkBa,EAAYG,SAAS,CAAEF,GACrDC,GAAaf,EAAkBa,EAAaE,GAEzCF,CACX,CChBO,SAASI,EAAkBC,CAAC,CAAEC,CAAC,EAOlC,MAAOF,AANPA,CAAAA,EAAoBR,OAAOW,cAAc,EAAI,SAAwBF,CAAC,CAAEC,CAAC,EAGrE,OAFAD,EAAEG,SAAS,CAAGF,EAEPD,CACf,CAAA,EAE6BA,EAAGC,EAChC,CCNO,SAASG,EAAUC,CAAQ,CAAEC,CAAU,EAC1C,GAAI,AAAsB,YAAtB,OAAOA,GAA6BA,AAAe,OAAfA,EACpC,MAAM,AAAIC,UAAU,qDAGxBF,CAAAA,EAASP,SAAS,CAAGP,OAAOiB,MAAM,CAACF,GAAcA,EAAWR,SAAS,CAAE,CAAEW,YAAa,CAAEC,MAAOL,EAAUf,SAAU,CAAA,EAAMD,aAAc,CAAA,CAAM,CAAA,GAEzIiB,GAAYP,EAAkBM,EAAUC,EAChD,CC4CO,SAASK,EAAWC,CAAU,CAAE7B,CAAM,CAAEU,CAAG,CAAEoB,CAAI,EACtD,IAA2HC,EAAvHC,EAAIC,UAAU9B,MAAM,CAAE+B,EAAIF,EAAI,EAAIhC,EAAS8B,AAAS,OAATA,EAAgBA,EAAOtB,OAAO2B,wBAAwB,CAACnC,EAAQU,GAAOoB,EACrH,GAAI,AAAmB,UAAnB,OAAOM,SAAwB,AAA4B,YAA5B,OAAOA,QAAQC,QAAQ,CAAiBH,EAAIE,QAAQC,QAAQ,CAACR,EAAY7B,EAAQU,EAAKoB,QACpH,IAAK,IAAI5B,EAAI2B,EAAW1B,MAAM,CAAG,EAAGD,GAAK,EAAGA,IAAS6B,CAAAA,EAAIF,CAAU,CAAC3B,EAAE,AAAD,GAAGgC,CAAAA,EAAI,AAACF,CAAAA,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAE/B,EAAQU,EAAKwB,GAAKH,EAAE/B,EAAQU,EAAG,GAAMwB,CAAAA,EAChJ,OAAOF,EAAI,GAAKE,GAAK1B,OAAOC,cAAc,CAACT,EAAQU,EAAKwB,GAAIA,CAC9D,CC3CA,SAASlB,EAAkBC,CAAC,CAAEC,CAAC,EAO3B,MAAOF,AANPA,CAAAA,EAAoBR,OAAOW,cAAc,EAAI,SAAwBF,CAAC,CAAEC,CAAC,EAGrE,OAFAD,EAAEG,SAAS,CAAGF,EAEPD,CACX,CAAA,EAEyBA,EAAGC,EAChC,CAEA,SAASoB,EAAWC,CAAM,CAAEC,CAAI,CAAEC,CAAK,EAenC,MAAOH,CAd6BA,GAAhCI,AAzBR,WACI,GAAuB,aAAnB,OAAON,SAA2B,CAACA,QAAQO,SAAS,EACpDP,QAAQO,SAAS,CAACC,IAAI,CADgC,MAAO,CAAA,EAEjE,GAAI,AAAiB,YAAjB,OAAOC,MAAsB,MAAO,CAAA,EAExC,GAAI,CAGA,OAFAC,QAAQ/B,SAAS,CAACgC,OAAO,CAACC,IAAI,CAACZ,QAAQO,SAAS,CAACG,QAAS,EAAE,CAAE,WAAY,IAEnE,CAAA,CACX,CAAE,MAAOG,EAAG,CACR,MAAO,CAAA,CACX,CACJ,IAeqB,SAAmBV,CAAM,CAAEC,CAAI,CAAEC,CAAK,EAC/C,IAAIS,EAAI,CAAC,KAAK,CACdA,EAAEC,IAAI,CAACC,KAAK,CAACF,EAAGV,GAEhB,IAAIa,EAAW,GADGC,CAAAA,SAASC,IAAI,CAACH,KAAK,CAACb,EAAQW,EAAAA,EAK9C,OAFIT,GAAOzB,EAAkBqC,EAAUZ,EAAM1B,SAAS,EAE/CsC,CACX,EAX6CjB,QAAQO,SAAS,EAchDS,KAAK,CAAC,KAAMnB,UAClC,CAEA,SAASlC,EAAkBC,CAAM,CAAEC,CAAK,EACpC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,MAAM,CAAED,IAAK,CACnC,IAAIE,EAAaH,CAAK,CAACC,EAAE,AACzBE,CAAAA,EAAWC,UAAU,CAAGD,EAAWC,UAAU,EAAI,CAAA,EACjDD,EAAWE,YAAY,CAAG,CAAA,EAEtB,UAAWF,GAAYA,CAAAA,EAAWG,QAAQ,CAAG,CAAA,CAAA,EAEjDC,OAAOC,cAAc,CAACT,EAAQI,EAAWM,GAAG,CAAEN,EAClD,CACJ,CACA,SAASO,EAAcC,CAAW,CAAEC,CAAU,CAAEC,CAAW,EAIvD,OAHID,GAAYd,EAAkBa,EAAYG,SAAS,CAAEF,GACrDC,GAAaf,EAAkBa,EAAaE,GAEzCF,CACX,CAEA,SAASS,EAAUC,CAAQ,CAAEC,CAAU,EACnC,GAAI,AAAsB,YAAtB,OAAOA,GAA6BA,AAAe,OAAfA,EACpC,MAAM,AAAIC,UAAU,qDAGxBF,CAAAA,EAASP,SAAS,CAAGP,OAAOiB,MAAM,CAACF,GAAcA,EAAWR,SAAS,CAAE,CAAEW,YAAa,CAAEC,MAAOL,EAAUf,SAAU,CAAA,EAAMD,aAAc,CAAA,CAAK,CAAE,GAE1IiB,GAAYP,EAAkBM,EAAUC,EAChD,CAEA,SAASiC,EAAYC,CAAI,CAAEC,CAAK,SAC5B,AAAIA,AAAS,MAATA,GAAiB,AAAkB,aAAlB,OAAOC,QAA0BD,CAAK,CAACC,OAAOC,WAAW,CAAC,CACpE,CAAC,CAACF,CAAK,CAACC,OAAOC,WAAW,CAAC,CAACH,GCzEvC,AAAIC,AAAS,MD0EiBA,GC1ET,AAAkB,aAAlB,OAAOC,QAA0BD,AD0ExBA,CC1E6B,CAACC,OAAOC,WAAW,CAAC,CACpE,CAAC,CAACF,ADyEiBA,CCzEZ,CAACC,OAAOC,WAAW,CAAC,CDyExBH,GCxEAA,ADwEAA,aAAgBC,CAClC,CD+OuB,AAA2B,YAA3B,OAAOG,iBAAiCA,gBCzO3DC,CADMA,GASPA,IAAyBA,CAAAA,GAAuB,CAAC,CAAA,EAR5B,CAACA,GAAuC,UAAa,CAAG,EAAE,CAAG,aACjFA,EAAoB,CAACA,GAA4C,cAAiB,CAAG,EAAE,CAAG,iBAC1FA,EAAoB,CAACA,GAA6C,eAAkB,CAAG,EAAE,CAAG,kBAC5FA,EAAoB,CAACA,GAAmC,MAAS,CAAG,EAAE,CAAG,SACzEA,EAAoB,CAACA,GAAwC,UAAa,CAAG,EAAE,CAAG,aAClFA,EAAoB,CAACA,GAAyC,WAAc,CAAG,EAAE,CAAG,cACpFA,EAAoB,CAACA,GAAiC,QAAW,CAAG,EAAE,CAAG,WACzEA,EAAoB,CAACA,GAAuC,SAAY,CAAG,EAAE,CAAG,YAOhFC,CADMA,GAMPA,IAAmBA,CAAAA,GAAiB,CAAC,CAAA,EALtB,CAACA,GAAuC,IAAO,CAAG,EAAE,CAAG,OACrEA,EAAc,CAACA,GAA4C,YAAe,CAAG,EAAE,CAAG,eAClFA,EAAc,CAACA,GAAmD,WAAc,CAAG,EAAE,CAAG,cACxFA,EAAc,CAACA,GAA+B,OAAU,CAAG,EAAE,CAAG,UAChEA,EAAc,CAACA,GAA8B,MAAS,CAAG,EAAE,CAAG,SAK9D,IAkIMC,EAeGC,EAcHC,EAcGC,EAULC,EA2BEC,EAUAC,EASGC,EA2BLH,EA0JEI,EASGC,EAYLL,EA2L2CM,EAEtCC,EAGLP,EA8LKQ,EAWLR,EA6CES,EAQAC,EAaGC,EAYLX,EAmIEY,EA2CAC,EAkBGC,EAaAC,EAkBAC,EAuCAC,EAcLjB,EAiGKkB,EAUAC,EAYAC,EAMLpB,EA0EKqB,EAaAC,EAQAC,EAqDAC,EAiCuCC,EAEvCC,EEpjDHC,EASAC,EASAC,EA8BGC,GAgEAC,GASL/B,GAyfKgC,GAQLhC,GA+DKiC,GAQLjC,GAkKKkC,GA6lBAC,GA8BLnC,GAigBKoC,GAWLpC,GA+oBKqC,GA6CLrC,GA27BKsC,GAOLtC,GAsUKuC,GAWLvC,GCxyHHwC,GHnEK9C,GAcAC,GAWG8C,GAGLzC,GA7BAN,GAcAC,GA4IAC,GA6BAE,GAmDJG,GAUAC,GA8LIE,GA2cJK,GAQAC,GA4JIE,GA2CAC,GE1pCAc,GASAC,GASAC,GCgIRW,GH3CQC,IAUFzC,CANEA,GAASyC,CAHJA,GAAT,SAAyBC,CAAU,EAC/B,IAAI,CAACA,UAAU,CAAGA,CACtB,GAC6B/F,SAAS,EAM7BgG,YAAY,CAAG,SAAsBC,CAAI,CAAEC,CAAM,EACtD,IAAIC,EAAW,IAAI,CAACJ,UAAU,CAACK,YAAY,CAACC,gBAAgB,CAACJ,GACzDK,EAAYH,EAASI,OAAO,CAChC,GAAID,IAAcJ,EAAQ,CAGtB,OADAI,GAAcA,CAAAA,EAAUE,WAAW,CAAGC,EAAAA,UAAAA,CAAWC,MAAM,AAAA,EAChDT,GACH,KAAKlD,GAAqB4D,MAAM,CAE5BT,EAAOM,WAAW,CAAGC,EAAAA,UAAAA,CAAWG,cAAc,CAC9C,KACJ,MAAK7D,GAAqB8D,UAAU,CAEhCX,EAAOM,WAAW,CAAGC,EAAAA,UAAAA,CAAWK,YAAY,CAC5C,KACJ,MAAK/D,GAAqBgE,WAAW,CAEjCb,EAAOM,WAAW,CAAGC,EAAAA,UAAAA,CAAWO,aAAa,AAErD,CACAb,EAASI,OAAO,CAAGL,CACvB,CACJ,EAKE7C,GAAO4D,YAAY,CAAG,SAAsBhB,CAAI,EAC9C,IAAIE,EAAW,IAAI,CAACJ,UAAU,CAACK,YAAY,CAACC,gBAAgB,CAACJ,GACzDK,EAAYH,EAASI,OAAO,CAIhC,OAFAD,GAAcA,CAAAA,EAAUE,WAAW,CAAGC,EAAAA,UAAAA,CAAWC,MAAM,AAAA,EACvDP,EAASI,OAAO,CAAG,KACZD,CACX,EAGEjD,GAAO6D,eAAe,CAAG,aAGzB7D,GAAO8D,SAAS,CAAG,WAEjB,IAAI,IAD8DC,EAAUC,AAAxC,IAAI,CAACtB,UAAU,CAACK,YAAY,CAA0CkB,QAAQ,CAC1GnI,EAAI,EAAGoI,EAAIH,EAAQhI,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC1C,IAAIqI,EAAeJ,CAAO,CAACjI,EAAE,CACzB+G,EAASsB,EAAajB,OAAO,CACjC,GAAKL,GAEL,IAAIuB,EAAYvB,EAAOwB,MAAM,CAACD,SAAS,CACnCE,EAAOH,EAAaG,IAAI,AAC5BF,CAAAA,EAAUG,QAAQ,CAAGD,EAAKC,QAAQ,CAClCH,EAAUI,kBAAkB,CAAGF,EAAKG,QAAQ,CAE5C,IAAIC,EAAW7B,EAAO6B,QAAQ,CAC1BC,EAAyBR,EAAaO,QAAQ,CAAEE,EAAID,EAAuBC,CAAC,CAAEC,EAAIF,EAAuBE,CAAC,CAAEC,EAAQH,EAAuBG,KAAK,CAAEC,EAASJ,EAAuBI,MAAM,CACtLH,IAAMF,EAASE,CAAC,EAAIC,IAAMH,EAASG,CAAC,EAAIC,IAAUJ,EAASM,CAAC,EAAID,IAAWL,EAASO,CAAC,EACvFpC,CAAAA,EAAO6B,QAAQ,CAAGA,EAASQ,GAAG,CAACN,EAAGC,EAAGC,EAAOC,EAAAA,EAG3C1C,SAAO8C,MAAM,CAACtC,EAAOuC,gBAAgB,CAAEjB,EAAaiB,gBAAgB,GACrEvC,CAAAA,EAAOuC,gBAAgB,CAAGjB,EAAaiB,gBAAgB,EAE/D,CACJ,EAGEpF,GAAOqF,cAAc,CAAG,aAGxBrF,GAAOsF,oBAAoB,CAAG,SAA8BC,CAAU,SACpE,AAAIA,IAAenC,EAAWG,UAAAA,CAAAA,cAAc,CAOjCiC,EAAAA,iBAAiBC,IAAI,CAN5B,AAAI,IAAI,CAAC/C,UAAU,CAACgD,cAAc,CAACC,KAAK,GAAKhG,GAAeiG,OAAO,CACxDJ,EAAAA,iBAAiBK,KAAK,CAEtBL,EAAAA,iBAAiBC,IAAI,AAKxC,EAGEzF,GAAO8F,UAAU,CAAG,aACtBvJ,EAAckG,GAAiB,CAC3B,CACInG,IAAK,iBACLyJ,IAEN,WACU,IAAsEC,EAAkBC,AAAlD,IAAI,CAACvD,UAAU,CAACgD,cAAc,CAAoDQ,gBAAgB,CACxI,GAAIF,EACA,OAAOA,EAAgBG,iBAAiB,EAExC,OAAM,AAAIC,MAAM,+BAExB,EACAlB,IAAK,SAAa3H,CAAK,EACnB,IAAsEyI,EAAkBC,AAAlD,IAAI,CAACvD,UAAU,CAACgD,cAAc,CAAoDQ,gBAAgB,CACxI,GAAIF,EACAA,EAAgBK,iBAAiB,CAAC9I,QAElC,MAAM,AAAI6I,MAAM,+BAExB,CACJ,EACH,EACM3D,IAKH6D,GAAS,WACgC,IAAI,CAAC/B,QAAQ,CAAG,IAAIxC,EAAAA,OAAAA,CACpB,IAAI,CAAC0C,QAAQ,CAAG,IAAIrC,EAAAA,UAAAA,CACtB,IAAI,CAACmE,MAAM,CAAG,IAAIlE,EAAAA,MAAAA,CACV,IAAI,CAACmE,aAAa,CAAG,IAAInE,EAAAA,MAAAA,AAChF,CAMIzC,EADMA,EAIPA,IAAoBA,CAAAA,GAAkB,CAAC,CAAA,EAHvB,CAACA,EAAoC,WAAc,CAAG,EAAE,CAAG,cAC1EA,CAAe,CAACA,EAAgC,QAAW,CAAG,EAAE,CAAG,WACnEA,CAAe,CAACA,EAAkC,YAAe,CAAG,EAAE,CAAG,eAG7E,IAAI6G,GAAU,SAAiB7D,CAAI,EAC/B,IAAI,CAACA,IAAI,CAAGA,EACZ,IAAI,CAAwC8D,aAAa,CAAG9G,GAAgB+G,WAAW,AAC3F,EAIQ9G,IACJ5C,EACS4C,EAAT,WACI,IAAI+G,EAKJ,OAJAA,EAAQC,AAOdJ,GAPuBzH,KAAK,CAAC,IAAI,CAAEnB,YAAc,IAAI,CACJ+I,EAAMtC,IAAI,CAAG,IAAIgC,GACzBM,EAAMlC,QAAQ,CAAG,IAAIoC,EAAAA,IAAAA,CACZF,EAAMxB,gBAAgB,CAAG,IAAI/C,EAAAA,MAAAA,CAClEuE,CACX,EAEFH,IADS5G,EAOPC,EADMA,EAQPA,IAAkBA,CAAAA,GAAgB,CAAC,CAAA,EAPrB,CAACA,EAA0B,IAAO,CAAG,EAAI,CAAG,OACzDA,CAAa,CAACA,EAA4B,MAAS,CAAG,EAAI,CAAG,SAC7DA,CAAa,CAACA,EAA4B,OAAU,CAAG,EAAI,CAAG,UAC9DA,CAAa,CAACA,EAA6B,OAAU,CAAG,EAAI,CAAG,UAC/DA,CAAa,CAACA,EAA8B,QAAW,CAAG,EAAI,CAAG,WACjEA,CAAa,CAACA,EAAuB,OAAU,CAAG,EAAI,CAAG,UACzDA,CAAa,CAACA,EAAuB,OAAU,CAAG,GAAK,CAAG,UAK1D,IAAIC,IACJ9C,EACS8C,EAAT,WACI,IAAI6G,EAOJ,OANAA,EAAQC,AAgCdJ,GAhCuBzH,KAAK,CAAC,IAAI,CAAEnB,YAAc,IAAI,CACW+I,EAAMG,QAAQ,CAAG,IAAIT,GACfM,EAAMI,aAAa,CAAG,IAAIV,GACjCM,EAAMK,cAAc,CAAGnH,GAAc2F,IAAI,CACrEmB,EAAMM,IAAI,CAAGpH,GAAc2F,IAAI,CAC9BmB,EAAMO,EAAE,CAAGrH,GAAc2F,IAAI,CACpDmB,CACX,EAyBFH,IAlBIzG,CANEA,EAASD,EAAapD,SAAS,EAM1ByK,YAAY,CAAG,SAAsBC,CAAM,EAChD,MAAO,AAAC,CAAA,IAAI,CAACH,IAAI,CAAGG,CAAAA,GAAY,CACpC,EAKErH,EAAOsH,UAAU,CAAG,SAAoBD,CAAM,EAC5C,MAAO,AAAC,CAAA,IAAI,CAACF,EAAE,CAAGE,CAAAA,GAAY,CAClC,EAKErH,EAAOuH,gBAAgB,CAAG,SAA0BF,CAAM,EACxD,MAAO,AAAC,CAAA,IAAI,CAACJ,cAAc,CAAGI,CAAAA,GAAY,CAC9C,EACOtH,EAKPE,EADMA,EAOPA,IAAqBA,CAAAA,GAAmB,CAAC,CAAA,EANxB,CAACA,EAAiB,WAAc,CAAG,EAAE,CAAG,cACxDA,CAAgB,CAACA,EAAiB,MAAS,CAAG,EAAE,CAAG,SACnDA,CAAgB,CAACA,EAAiB,SAAY,CAAG,EAAE,CAAG,YACtDA,CAAgB,CAACA,EAAiB,YAAe,CAAG,EAAE,CAAG,eACzDA,CAAgB,CAACA,EAAiB,OAAU,CAAG,EAAE,CAAG,UACpDA,CAAgB,CAACA,EAAiB,UAAa,CAAG,EAAE,CAAG,aAKvDC,CADMA,EAIPA,IAAoBA,CAAAA,GAAkB,CAAC,CAAA,EAHvB,CAACA,EAAgB,IAAO,CAAG,EAAE,CAAG,OAC/CA,CAAe,CAACA,EAAgB,cAAiB,CAAG,EAAE,CAAG,iBACzDA,CAAe,CAACA,EAAgB,MAAS,CAAG,EAAE,CAAG,SAKjD,IAAIC,IAiCFH,CALEA,EAASG,CA3BJA,EAAT,SAAwBuC,CAAU,CAAE8E,CAAO,EACvC,IAAI,CAAC9E,UAAU,CAAGA,EAClB,IAAI,CAAC8E,OAAO,CAAGA,EACf,IAAI,CAAkBvD,QAAQ,CAAG,EAAE,CACnC,IAAI,CAAkBwD,YAAY,CAAG,EAAE,CACvC,IAAI,CAACC,MAAM,CAAG,EAAE,CAChB,IAAI,CAACC,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACC,eAAe,CAAG,EAAE,CACzB,IAAI,CAACC,eAAe,CAAG,EAAE,CACzB,IAAI,CAACC,UAAU,CAAG,IAAIC,EAAAA,aAAAA,CAEtB,IAAI,IADcC,EAAiBpB,AAAvB,IAAI,CAAyBgB,eAAe,CAAEK,EAAcrB,AAA5D,IAAI,CAA8Da,YAAY,CAAE1D,EAAU6C,AAA1F,IAAI,CAA4F3C,QAAQ,CAC5GnI,EAAI,EAAGA,EAAI,EAAGA,IAClB,OAAOA,GACH,KAAK4D,GAAqB4D,MAAM,CAChC,KAAK5D,GAAqB8D,UAAU,CACpC,KAAK9D,GAAqBgE,WAAW,CACjCK,EAAQhF,IAAI,CAACiJ,CAAc,CAAClM,EAAE,CAAG,IAAI+D,GAAS/D,IAC9C,KACJ,MAAK4D,GAAqBwI,UAAU,CACpC,KAAKxI,GAAqByI,cAAc,CACxC,KAAKzI,GAAqB0I,eAAe,CACrCH,EAAYlJ,IAAI,CAACiJ,CAAc,CAAClM,EAAE,CAAG,IAAIiE,GAAajE,GAE9D,CAEJ,IAAI,CAAC+L,eAAe,CAACQ,IAAI,CAACzI,GAAgB+G,WAAW,CAAE,EAAGqB,EAAejM,MAAM,CACnF,GAC4BY,SAAS,EAK5BqG,gBAAgB,CAAG,SAA0BJ,CAAI,EACtD,OAAO,IAAI,CAACgF,eAAe,CAAChF,EAAK,AACrC,EAIE5C,EAAOsI,+BAA+B,CAAG,SAAyCC,CAAQ,EACxF,IAAI,CAACT,UAAU,CAAC/I,IAAI,CAAC,CACjByJ,GAAID,CACR,EACJ,EAIEvI,EAAOyI,kCAAkC,CAAG,SAA4CF,CAAQ,EAC9F,IAAI,CAACT,UAAU,CAACY,aAAa,CAAC,SAASnL,CAAK,EACxC,OAAOA,EAAMiL,EAAE,GAAKD,GAAWhL,CAAAA,EAAMoL,SAAS,CAAG,CAAA,CAAO,CAC5D,EACJ,EAGE3I,EAAO8D,SAAS,CAAG,WACjB,IAAkB8E,EAAQhC,AAAd,IAAI,CAAgBc,MAAM,CAAEmB,EAAUjC,AAAtC,IAAI,CAAwCe,QAAQ,CAAEmB,EAAiBlC,AAAvE,IAAI,CAAyEiB,eAAe,CACrFG,EAAiBe,AAAvB,IAAI,CAA0BnB,eAAe,CAAEK,EAAcc,AAA7D,IAAI,CAAgEtB,YAAY,AAE7FmB,CAAAA,EAAM7M,MAAM,CAAG8M,EAAQ9M,MAAM,CAAG,EAChC,IAAI,IAAID,EAAI,EAAGoI,EAAI+D,EAAYlM,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC9C,IAAIkN,EAAaf,CAAW,CAACnM,EAAE,AAC/BkN,CAAAA,EAAW9B,IAAI,CAAG8B,EAAW7B,EAAE,CAAG,CACtC,CAIA,IAAI,IAFkEnB,EAAkBC,AAAlD,IAAI,CAACvD,UAAU,CAACgD,cAAc,CAAoDQ,gBAAgB,CACpI+C,EAAiBjD,EAAgBkD,MAAM,CACnCC,EAAK,EAAGC,EAAKH,EAAelN,MAAM,CAAEoN,EAAKC,EAAID,IACjD,IAAI,CAACE,YAAY,CAACJ,CAAc,CAACE,EAAG,EAExCnD,EAAgBsD,WAAW,GAC3BtD,EAAgBuD,KAAK,CAACC,YAAY,CAACxB,GACnC,IAAI,IAAIyB,EAAK,EAAGC,EAAK1B,EAAejM,MAAM,CAAE0N,EAAKC,EAAID,IAAK,CACtD,IAAIE,EAAQ3B,CAAc,CAACyB,EAAG,CAC9B,GAAKE,GACL,IAAIC,EAAWD,EAAMjD,aAAa,AAC9BoC,CAAAA,CAAc,CAACW,EAAG,GAAK7J,GAAgBiK,QAAQ,CAC3CD,IAAahK,GAAgBiK,QAAQ,EACrChB,EAAQ9J,IAAI,CAAC4K,GAGbC,IAAahK,GAAgBiK,QAAQ,EACrCjB,EAAM7J,IAAI,CAAC4K,GAGnBb,CAAc,CAACW,EAAG,CAAGG,EACzB,CAEA,GAAIhB,EAAM7M,MAAM,CAAG,GAAK8M,EAAQ9M,MAAM,CAAG,EAErC,IAAI,IADA+N,EAAY,IAAI,CAAChC,UAAU,CAACiC,YAAY,GACpCC,EAAK,EAAGC,EAAKH,EAAU/N,MAAM,CAAEiO,EAAKC,EAAID,IAAK,CACjD,IAAIzB,EAAWuB,CAAS,CAACE,EAAG,AAC5B,AAACzB,CAAAA,EAASI,SAAS,EAAIJ,EAASC,EAAE,CAACI,EAAOC,EAC9C,CAER,EAGE7I,EAAO8F,UAAU,CAAG,WAClB,IAAI,CAACgC,UAAU,CAACY,aAAa,CAAC,SAASnL,CAAK,EACxC,OAAOA,EAAMoL,SAAS,CAAG,CAAA,CAC7B,EACJ,EACA3I,EAAOqJ,YAAY,CAAG,SAAsBa,CAAK,EAC7C,IAAIP,EAAQ,IAAI,CAAC/B,eAAe,CAACsC,EAAMP,KAAK,CAAC,CAC7C,OAAOO,EAAMC,aAAa,EACtB,KAAKjK,GAAgBkK,cAAc,CAC/B,OAAOF,EAAMtH,IAAI,EACb,KAAK3C,GAAiBoK,WAAW,CAC7BV,EAAMzC,IAAI,EAAIpH,GAAcwK,MAAM,CAClCX,EAAM1C,cAAc,EAAInH,GAAcwK,MAAM,CAC5C,KACJ,MAAKrK,GAAiBsK,SAAS,CAC3BZ,EAAMxC,EAAE,EAAIrH,GAAcwK,MAAM,CAChCX,EAAM1C,cAAc,EAAI,CAACnH,GAAcwK,MAAM,CAC7C,KACJ,MAAKrK,GAAiBuK,YAAY,CAC9Bb,EAAMzC,IAAI,EAAIpH,GAAc2K,OAAO,CACnCd,EAAM1C,cAAc,EAAInH,GAAc2K,OAAO,CAC7C,KACJ,MAAKxK,GAAiByK,UAAU,CAC5Bf,EAAMxC,EAAE,EAAIrH,GAAc2K,OAAO,CACjCd,EAAM1C,cAAc,EAAI,CAACnH,GAAc2K,OAAO,AAEtD,CACA,KACJ,MAAKvK,GAAgByK,MAAM,CACvB,IAAkBC,EAAShE,AAAf,IAAI,CAAiBY,OAAO,CAEpC5L,EAASgP,EAAO7H,YAAY,CAAC8H,eAAe,CAACC,OAAO,CAEpDC,EAASH,EAAOG,MAAM,CAACC,UAAU,CACjCC,EAAcF,EAAOE,WAAW,CAAEC,EAAeH,EAAOG,YAAY,CACpEC,EAAUF,EAAef,CAAAA,EAAMtF,CAAC,CAAG,CAAA,EAAK,GACxCwG,EAAUF,EAAgBhB,CAAAA,EAAMrF,CAAC,CAAG,CAAA,EAAK,GAE7C,OAAOqF,EAAMtH,IAAI,EACb,KAAK3C,GAAiBoK,WAAW,CAC7BzO,EAAOyP,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,cAAepB,EAAMqB,EAAE,CAAEJ,EAASC,IAChF,KACJ,MAAKnL,GAAiBqK,MAAM,CACxB1O,EAAOyP,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,cAAepB,EAAMqB,EAAE,CAAEJ,EAASC,IAChF,KACJ,MAAKnL,GAAiBsK,SAAS,CAC3B3O,EAAOyP,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,YAAapB,EAAMqB,EAAE,CAAEJ,EAASC,IAC9ExP,EAAOyP,aAAa,CAAC,IAAI,CAACC,mBAAmB,CAAC,eAAgBpB,EAAMqB,EAAE,CAAEJ,EAASC,GAEzF,CAER,CACJ,EACApL,EAAOsL,mBAAmB,CAAG,SAA6B1I,CAAI,CAAE4I,CAAS,CAAEL,CAAO,CAAEC,CAAO,EACvF,IAAIK,EAAgB,CAChBD,UAAWA,EACXL,QAASA,EACTC,QAASA,CACb,EACA,OAAOxI,GACH,IAAK,cACD6I,EAAcpE,MAAM,CAAG,EACvBoE,EAAcC,OAAO,CAAG,EACxB,KACJ,KAAK,cACDD,EAAcpE,MAAM,CAAG,GACvBoE,EAAcC,OAAO,CAAG,EACxB,KACJ,KAAK,YAIL,IAAK,eAHDD,EAAcpE,MAAM,CAAG,EACvBoE,EAAcC,OAAO,CAAG,CAMhC,CACA,OAAO,IAAIC,aAAa/I,EAAM6I,EAClC,EACOtL,EAOPC,EADMA,EAIPA,IAAkBA,CAAAA,GAAgB,CAAC,CAAA,EAHrB,CAACA,EAAc,IAAO,CAAG,EAAE,CAAG,OAC3CA,CAAa,CAACA,EAAc,EAAK,CAAG,EAAE,CAAG,KACzCA,CAAa,CAACA,EAAc,EAAK,CAAG,EAAE,CAAG,KAKzC,IAAIC,IAkBFL,CALEA,EAASK,CAZJA,EAAT,SAA0BqC,CAAU,CAAE8E,CAAO,EACzC,IAAI,CAAC9E,UAAU,CAAGA,EAClB,IAAI,CAAC8E,OAAO,CAAGA,EACf,IAAI,CAACoE,KAAK,CAAGxL,GAAcqF,IAAI,CAC/B,IAAI,CAACoG,MAAM,CAAGlM,GAAe8F,IAAI,CACjC,IAAI,CAACqC,UAAU,CAAG,IAAIC,EAAAA,aAAAA,CAEtB,IAAI,CAAC+D,IAAI,CAAGtE,EAAQuE,iBAAiB,CACrC,IAAI,CAACC,IAAI,CAAGC,sBAAsB9M,IAAI,CAAC+M,QACvC,IAAI,CAACC,IAAI,CAAGC,qBAAqBjN,IAAI,CAAC+M,QACtC,IAAI,CAAC7G,cAAc,CAAG,IAAI,CAACA,cAAc,CAAClG,IAAI,CAAC,IAAI,CACvD,GAC8BxC,SAAS,EAK9B0P,eAAe,CAAG,SAAyBC,CAAI,EACpD,OAAO,IAAI,CAAC5J,UAAU,CAAC6J,eAAe,CAACC,sBAAsB,CAACF,EAClE,EAGEtM,EAAOyM,GAAG,CAAG,WACX,IAAkBzG,EAAkBY,AAAxB,IAAI,CAA0BV,gBAAgB,CAAE0E,EAAShE,AAAzD,IAAI,CAA2DY,OAAO,CAClF,GAAI,CAACxB,EACD,MAAM,AAAII,MAAM,2BAEpBJ,EAAgB0G,KAAK,GACrB,IAAI,CAACC,SAAS,CAAChN,GAAeiG,OAAO,EACrC,IAAI,CAAClD,UAAU,CAACmB,eAAe,GAC1B+G,EAAOgC,QAAQ,GAChBhC,EAAOiC,KAAK,GACZjC,EAAOkC,MAAM,GAErB,EAGE9M,EAAO+M,IAAI,CAAG,WACZ,IAAkB/G,EAAkBY,AAAxB,IAAI,CAA0BV,gBAAgB,CAAE0E,EAAShE,AAAzD,IAAI,CAA2DY,OAAO,CAAEwF,EAAMpG,AAA9E,IAAI,CAAgFkF,IAAI,CACpG,GAAI,CAAC9F,EACD,MAAM,AAAII,MAAM,4BAEpB,GAAI,IAAI,CAACyF,MAAM,GAAKlM,GAAeiG,OAAO,CACtC,MAAM,AAAIQ,MAAM,0BAEpB4G,CAAAA,EAAIC,gBAAgB,CAAG,KACvBD,EAAIE,eAAe,CAAGF,EAAIG,gBAAgB,CAAG,EAC7CnH,EAAgB+G,IAAI,GACpB,IAAI,CAACJ,SAAS,CAAChN,GAAeyN,MAAM,EACpC,IAAI,CAAC1K,UAAU,CAAC2K,cAAc,GACzBzC,EAAOgC,QAAQ,GAChBhC,EAAOiC,KAAK,GACZjC,EAAOkC,MAAM,GAErB,EAIE9M,EAAOsN,uBAAuB,CAAG,SAAiC/E,CAAQ,EACxE,IAAI,CAACT,UAAU,CAAC/I,IAAI,CAAC,CACjByJ,GAAID,CACR,EACJ,EAIEvI,EAAOuN,0BAA0B,CAAG,SAAoChF,CAAQ,EAC9E,IAAI,CAACT,UAAU,CAACY,aAAa,CAAC,SAASnL,CAAK,EACxC,OAAOA,EAAMiL,EAAE,GAAKD,GAAWhL,CAAAA,EAAMoL,SAAS,CAAG,CAAA,CAAO,CAC5D,EACJ,EAGE3I,EAAO2M,SAAS,CAAG,SAAmBpP,CAAK,EACzC,IAAI,CAACsO,MAAM,CAAGtO,EAEd,IAAI,IADAuM,EAAY,IAAI,CAAChC,UAAU,CAACiC,YAAY,GACpCjO,EAAI,EAAGoI,EAAI4F,EAAU/N,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC5C,IAAIyM,EAAWuB,CAAS,CAAChO,EAAE,AAC3B,AAACyM,CAAAA,EAASI,SAAS,EAAIJ,EAASC,EAAE,CAACjL,EACvC,CACJ,EAGEyC,EAAOwN,WAAW,CAAG,SAAqBlB,CAAI,CAAEmB,CAAQ,EACtD,IAAI7G,EAAQ,IAAI,CAChB,OAAO,IAAI8G,QAAQ,SAASC,CAAO,CAAEC,CAAM,EAIvC,IAAI,IAHAC,EAAYjH,EAAMlE,UAAU,CAE5BoL,EAAmB,EAAE,CACjBhS,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAA+BiS,EAAkBC,AAA/BP,CAAQ,CAAC3R,EAAE,CAAgCmS,gBAAgB,AAC7EF,CAAAA,GAAmBD,EAAiB/O,IAAI,CAACgP,EAC7C,CACAF,EAAUtB,eAAe,CAAC2B,cAAc,CAACtH,EAAMkF,IAAI,CAAEQ,EAAMwB,GAAkBK,IAAI,CAAC,SAASnI,CAAe,EACtGY,EAAMgF,KAAK,CAAGU,EACd1F,EAAMV,gBAAgB,CAAGF,EACzBY,EAAM+F,SAAS,CAAChN,GAAeyO,WAAW,EAC1CpI,EAAgBqI,sBAAsB,CAACzH,EAAMvB,cAAc,EAC3DW,EAAgBsI,gBAAgB,GAChCT,EAAUU,cAAc,GACxBZ,GACDC,EAAAA,EACP,EACJ,EAGE5N,EAAO8D,SAAS,CAAG,WACjB,IAAkBkJ,EAAMpG,AAAZ,IAAI,CAAckF,IAAI,CAAE9F,EAAkBY,AAA1C,IAAI,CAA4CV,gBAAgB,AAC5E8G,CAAAA,EAAIC,gBAAgB,CAAGjH,EAAgBwI,WAAW,CAClDxB,EAAIE,eAAe,CAAGlH,EAAgByI,gBAAgB,CACtDzB,EAAIG,gBAAgB,CAAGnH,EAAgB0I,iBAAiB,AAC5D,EAGE1O,EAAO2O,yBAAyB,CAAG,kBACjC,AAAI,IAAI,CAAC9C,MAAM,GAAKlM,GAAeiG,OAAO,CAC/B,IAAI,CAACM,gBAAgB,CAAC+F,qBAAqB,CAE3C,IAAI,CAACD,IAAI,AAExB,EAGEhM,EAAO4O,wBAAwB,CAAG,kBAChC,AAAI,IAAI,CAAC/C,MAAM,GAAKlM,GAAeiG,OAAO,CAC/B,IAAI,CAACM,gBAAgB,CAACkG,oBAAoB,CAE1C,IAAI,CAACD,IAAI,AAExB,EAGEnM,EAAO6O,KAAK,CAAG,WACb,IAAkB7I,EAAkBY,AAAxB,IAAI,CAA0BV,gBAAgB,QAC1D,AAAKF,EAGEA,EAAgB8I,GAAG,GAFfpB,QAAQE,MAAM,CAAC,2BAG9B,EACA5N,EAAOqF,cAAc,CAAG,WACpB,IAAkB2H,EAAMpG,AAAZ,IAAI,CAAckF,IAAI,CAAE9F,EAAkBY,AAA1C,IAAI,CAA4CV,gBAAgB,CAAE0E,EAAShE,AAA3E,IAAI,CAA6EY,OAAO,AACpGwF,CAAAA,EAAIC,gBAAgB,CAAG,KACvBD,EAAIE,eAAe,CAAGF,EAAIG,gBAAgB,CAAG,EAC7CnH,EAAgB+I,mBAAmB,GACnC,IAAI,CAAC7I,gBAAgB,CAAG,KACxB,IAAI,CAACyG,SAAS,CAAChN,GAAe8F,IAAI,EAClC,IAAI,CAAC/C,UAAU,CAAC2C,cAAc,GACzBuF,EAAOgC,QAAQ,GAChBhC,EAAOiC,KAAK,GACZjC,EAAOkC,MAAM,GAErB,EAGE9M,EAAO8F,UAAU,CAAG,WAClB,IAAI,CAACgC,UAAU,CAACY,aAAa,CAAC,SAASnL,CAAK,EACxC,OAAOA,EAAMoL,SAAS,CAAG,CAAA,CAC7B,GACA,IAAI,CAACqD,IAAI,CAAG,IAAI,CAACG,IAAI,CAAG,IAC5B,EACA5P,EAAc8D,EAAkB,CAC5B,CACI/D,IAAK,OACLyJ,IAEN,WACU,OAAO,IAAI,CAAC6F,KAAK,AACrB,CACJ,EACA,CACItP,IAAK,QACLyJ,IAEN,WACU,OAAO,IAAI,CAAC8F,MAAM,AACtB,CACJ,EACA,CACIvP,IAAK,qBACLyJ,IAEN,WACU,OAAO,IAAI,CAACG,gBAAgB,CAAC8I,mBAAmB,AACpD,CACJ,EACA,CACI1S,IAAK,YACLyJ,IAEN,WACU,OAAO,IAAI,CAACG,gBAAgB,CAAC+I,SAAS,AAC1C,CACJ,EACH,EACM5O,GAKHE,IAA2CD,EAyKjD4O,EAAAA,SAAAA,CAxKEjS,EACSsD,EAAT,WACI,OAAOD,EAAWtB,KAAK,CAAC,IAAI,CAAEnB,UAClC,EAH6ByC,GAK7BN,CADIA,EAASO,EAAkB5D,SAAS,EACjCwS,kBAAkB,CAAG,SAA4BC,CAAO,EAC3D,OAAO,IAAI,CAAC7C,eAAe,CAAC4C,kBAAkB,CAAC5O,EAAkB8O,WAAW,CAACtJ,GAAG,CAACqJ,GACrF,EACApP,EAAOsP,UAAU,CAAG,SAAoB1M,CAAI,EACxC,IAAI,IAAI2M,EAAO1R,UAAU9B,MAAM,CAAEqC,EAAO,AAAIoR,MAAMD,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FrR,CAAI,CAACqR,EAAO,EAAE,CAAG5R,SAAS,CAAC4R,EAAK,CAEpC,GAAI,IAAI,CAAC/J,cAAc,CAACQ,gBAAgB,CACpC,MAAM,AAAIE,MAAM,uDAEpB,GAAI,CAAC,IAAI,CAACmG,eAAe,CAAC4C,kBAAkB,CAAC5O,EAAkB8O,WAAW,CAACtJ,GAAG,CAACnD,IAC3E,MAAM,AAAIwD,MAAM,gCAGpB,IAAI,IADAqH,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IACvC,GAAIsD,EAAYqO,CAAQ,CAAC3R,EAAE,CAAE8G,GAAO,MAAM,AAAIwD,MAAM,8BAFxD,IAIIgJ,EAAUlR,EAAW0E,EAAM,EAAE,CAAC8M,MAAM,CAAC,IAAI,CAAEtR,IAE/C,OADAqP,EAAS1O,IAAI,CAACqQ,GACPA,CACX,EACApP,EAAO2P,UAAU,CAAG,SAAoB/M,CAAI,EAExC,IAAI,IADA6K,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAAIsT,EAAU3B,CAAQ,CAAC3R,EAAE,CACzB,GAAIsD,EAAYgQ,EAASxM,GACrB,OAAOwM,CAEf,CACJ,EACApP,EAAO4P,OAAO,CAAG,SAAiBC,CAAW,CAAEC,CAAO,EAClC,KAAK,IAAjBA,GAAoBA,CAAAA,EAAU,CAAA,CAAA,EAClC,IAAIlJ,EAAQ,IAAI,CACZlB,EAAiB,IAAI,CAACA,cAAc,CACxC,GAAIA,EAAeQ,gBAAgB,CAC/B,MAAM,AAAIE,MAAM,wCAEpB,GAAI,CAAC,IAAI,CAAC2J,OAAO,CACb,MAAM,AAAI3J,MAAM,sCAEpB,OAAO,IAAIsH,QAAQ,SAASC,CAAO,CAAEC,CAAM,EAEvClI,EAAe2G,eAAe,CAACwD,GAAa1B,IAAI,CAAC,WAC7CzI,EAAeiH,SAAS,CAAChN,GAAeqQ,YAAY,EAEpDtK,EAAe8H,WAAW,CAACqC,EAAajJ,EAAM6G,QAAQ,EAAEU,IAAI,CAAC,WACzD2B,GAAWpK,EAAe+G,GAAG,GAC7BkB,GACDC,EAAAA,EACJA,EAAAA,EACP,EACJ,EACA5N,EAAOiQ,MAAM,CAAG,WACZ,IAAIrJ,EAAQ,IAAI,CAChB,OAAO,IAAI8G,QAAQ,SAASC,CAAO,CAAEC,CAAM,EACvChH,EAAMlB,cAAc,CAACmJ,KAAK,GAAGV,IAAI,CAAC,WAC9BR,GACDC,EAAAA,EACP,EACJ,EACA5N,EAAOwN,WAAW,CAAG,SAAqB5C,CAAM,CAAEsF,CAAQ,EACtD,IAAI,CAACC,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC5D,eAAe,CAAG2D,EACvB,IAAI,CAACxK,cAAc,CAAG,IAAIrF,GAAiB,IAAI,CAAEuK,GACjD,IAAI,CAAC7H,YAAY,CAAG,IAAI5C,GAAe,IAAI,CAAEyK,GAC7C,IAAI,CAACwF,aAAa,CAAG,IAAI3N,GAAgB,IAAI,CACjD,EACAzC,EAAOqQ,OAAO,CAAG,WACb,IAAI3K,EAAiB,IAAI,CAACA,cAAc,CACxC,GAAIA,EAAeC,KAAK,GAAKhG,GAAeiG,OAAO,EACnDF,EAAe5B,SAAS,GACxB,IAAI,CAACf,YAAY,CAACe,SAAS,GAC3B,IAAI,CAACsM,aAAa,CAACtM,SAAS,GAE5B,IAAI,IADA2J,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAAIsT,EAAU3B,CAAQ,CAAC3R,EAAE,AACzBsT,CAAAA,EAAQkB,OAAO,EAAIlB,EAAQtL,SAAS,EACxC,EACJ,EACA9D,EAAOuQ,QAAQ,CAAG,WACd,IAAI3J,EAAQ,IAAI,AACZ,CAAA,IAAI,CAAClB,cAAc,CAACQ,gBAAgB,CACpC,IAAI,CAAC+J,MAAM,GAAG9B,IAAI,CAAC,WACfvH,EAAMlB,cAAc,CAACI,UAAU,GAC/Bc,EAAM7D,YAAY,CAAC+C,UAAU,GAC7Bc,EAAMwJ,aAAa,CAACtK,UAAU,EAClC,IAEA,IAAI,CAACJ,cAAc,CAACI,UAAU,GAC9B,IAAI,CAAC/C,YAAY,CAAC+C,UAAU,GAC5B,IAAI,CAACsK,aAAa,CAACtK,UAAU,GAErC,EACA9F,EAAO2O,yBAAyB,CAAG,WAC/B,OAAO,IAAI,CAACjJ,cAAc,CAACiJ,yBAAyB,EACxD,EACA3O,EAAO4O,wBAAwB,CAAG,WAC9B,OAAO,IAAI,CAAClJ,cAAc,CAACkJ,wBAAwB,EACvD,EACA5O,EAAOwQ,0BAA0B,CAAG,SAAoC5N,CAAI,EACxE,OAAO,IAAI,CAACwN,aAAa,CAAC9K,oBAAoB,CAAC1C,EACnD,EAGE5C,EAAOqN,cAAc,CAAG,WAEtB,IAAI,IADAI,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAAIsT,EAAU3B,CAAQ,CAAC3R,EAAE,AACzBsT,CAAAA,EAAQkB,OAAO,EAAIlB,EAAQ/B,cAAc,EAC7C,CACJ,EAGErN,EAAOuO,cAAc,CAAG,WAEtB,IAAI,IADAd,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAAIsT,EAAU3B,CAAQ,CAAC3R,EAAE,AACzBsT,CAAAA,EAAQkB,OAAO,EAAIlB,EAAQb,cAAc,EAC7C,CACJ,EAGEvO,EAAO6D,eAAe,CAAG,WACvB,IAAI,CAACuM,aAAa,CAACvM,eAAe,GAElC,IAAI,IADA4J,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAAIsT,EAAU3B,CAAQ,CAAC3R,EAAE,AACzBsT,CAAAA,EAAQkB,OAAO,EAAIlB,EAAQvL,eAAe,EAC9C,CACJ,EAGE7D,EAAOqF,cAAc,CAAG,WACtB,IAAI,CAAC+K,aAAa,CAAC/K,cAAc,GAEjC,IAAI,IADAoI,EAAW,IAAI,CAACA,QAAQ,CACpB3R,EAAI,EAAGoI,EAAIuJ,EAAS1R,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAC3C,IAAIsT,EAAU3B,CAAQ,CAAC3R,EAAE,AACzBsT,CAAAA,EAAQkB,OAAO,EAAIlB,EAAQ/J,cAAc,GACzC+J,EAAQtJ,UAAU,EACtB,CACA2H,EAAS1R,MAAM,CAAG,CACtB,EACAQ,EAAcgE,EAAmB,CAC7B,CACIjE,IAAK,WACLyJ,IAAK,WACD,OAAO,IAAI,CAACoK,SAAS,AACzB,CACJ,EACA,CACI7T,IAAK,SACLyJ,IAAK,WACD,OAAO,IAAI,CAACgK,OAAO,AACvB,EACA7K,IAAK,SAAa3H,CAAK,EACnB,GAAI,IAAI,CAACmI,cAAc,CAACQ,gBAAgB,CACpC,MAAM,AAAIE,MAAM,qDAEpB,CAAA,IAAI,CAAC2J,OAAO,CAAGxS,CACnB,CACJ,EACH,EACMgD,GAOP,SAASkQ,GAAkB7N,CAAI,EAC/B,OAAO,SAASwM,CAAO,EACnB7O,GAAkB8O,WAAW,CAACnK,GAAG,CAACkK,EAASxM,EAC/C,CACJ,CARqBrC,GAAkB8O,WAAW,CAAG,IAAIqB,IAiBzDC,AAPA,SAAqBC,CAAW,CAAEC,CAAS,EACvCA,EAAUC,OAAO,CAAC,SAASC,CAAQ,EAC/B3U,OAAO4U,mBAAmB,CAACD,EAASpU,SAAS,EAAEmU,OAAO,CAAC,SAASG,CAAI,EAChE7U,OAAOC,cAAc,CAACuU,EAAYjU,SAAS,CAAEsU,EAAM7U,OAAO2B,wBAAwB,CAACgT,EAASpU,SAAS,CAAEsU,IAAS7U,OAAOiB,MAAM,CAAC,MAClI,EACJ,EACJ,EACY6R,WAAW,CAAA,CACnB3O,GACH,EAIG,IAAIC,IAeFR,CAHEA,EAASQ,CAXJA,EAAT,SAAmBkC,CAAU,CAAEwO,CAAK,EAChC,IAAI,IAGAC,EAHI5B,EAAO1R,UAAU9B,MAAM,CAAEqC,EAAO,AAAIoR,MAAMD,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAC/FrR,CAAI,CAACqR,EAAO,EAAE,CAAG5R,SAAS,CAAC4R,EAAK,AAGpC,CAAA,IAAI,CAAC/M,UAAU,CAAGA,EAClB,IAAI,CAACwO,KAAK,CAAGA,EACb,IAAI,CAACE,QAAQ,CAAG,CAAA,EAChB,IAAI,CAACnD,gBAAgB,CAAG,AAACkD,CAAAA,EAA6BzO,EAAW6J,eAAc,AAAA,EAAG8E,qBAAqB,CAACrS,KAAK,CAACmS,EAA4B,EAAE,CAACzB,MAAM,CAACwB,EAAO9S,IAC3J,IAAI,CAACkT,SAAS,EAClB,GACuB3U,SAAS,EAGvB2U,SAAS,CAAG,aAGnBtR,EAAOuR,UAAU,CAAG,aAGpBvR,EAAO8D,SAAS,CAAG,aAGnB9D,EAAOuO,cAAc,CAAG,aAGxBvO,EAAO6D,eAAe,CAAG,aAGzB7D,EAAOqN,cAAc,CAAG,aAGxBrN,EAAOqF,cAAc,CAAG,aAGxBrF,EAAO8F,UAAU,CAAG,aACtBvJ,EAAciE,EAAW,CACrB,CACIlE,IAAK,UACLyJ,IAEN,WACU,OAAO,IAAI,CAACqL,QAAQ,AACxB,EACAlM,IAAK,SAAa3H,CAAK,EACf,IAAI,CAAC+S,OAAO,GAAK/S,IACjB,IAAI,CAAC6T,QAAQ,CAAG7T,EAChBA,EAAQ,IAAI,CAAC+T,SAAS,GAAK,IAAI,CAACC,UAAU,GAElD,CACJ,EACH,EACM/Q,EAKPC,EADMA,EAKPA,IAAkBA,CAAAA,GAAgB,CAAC,CAAA,EAJrB,CAACA,EAAc,cAAiB,CAAG,EAAE,CAAG,iBACrDA,CAAa,CAACA,EAAc,aAAgB,CAAG,EAAE,CAAG,gBACpDA,CAAa,CAACA,EAAc,aAAgB,CAAG,EAAE,CAAG,gBACpDA,CAAa,CAACA,EAAc,OAAU,CAAG,EAAE,CAAG,UAK9CC,CADMA,EAOPA,IAA2BA,CAAAA,GAAyB,CAAC,CAAA,EAN9B,CAACA,EAAuB,IAAO,CAAG,EAAE,CAAG,OAC7DA,CAAsB,CAACA,EAAuB,SAAY,CAAG,EAAE,CAAG,YAClEA,CAAsB,CAACA,EAAuB,QAAW,CAAG,EAAE,CAAG,WACjEA,CAAsB,CAACA,EAAuB,QAAW,CAAG,EAAE,CAAG,WACjEA,CAAsB,CAACA,EAAuB,SAAY,CAAG,EAAE,CAAG,YAClEA,CAAsB,CAACA,EAAuB,cAAiB,CAAG,EAAE,CAAG,iBAKvE,IAAIC,IACJ1D,EACS0D,EAAT,WACI,IAAIiG,EASJ,OARAA,EAAQ4K,AA6HdhR,GA7HyBxB,KAAK,CAAC,IAAI,CAAEnB,YAAc,IAAI,CACjD+I,EAAM6K,iBAAiB,CAAG,EAAE,CAC5B7K,EAAM8K,QAAQ,CAAG,EAAE,CACnB9K,EAAMc,MAAM,CAAG,EAAE,CACjBd,EAAM+K,QAAQ,CAAG,EAAE,CACnB/K,EAAMe,QAAQ,CAAG,EAAE,CACnBf,EAAMiB,eAAe,CAAG,GACxBjB,EAAMkB,UAAU,CAAG,IAAIC,EAAAA,aAAAA,CAChBnB,CACX,EAoHFpG,IA/GIR,CAJEA,EAASW,EAAmBhE,SAAS,EAIhCiV,kBAAkB,CAAG,SAA4BrJ,CAAQ,EAC9D,IAAI,CAACT,UAAU,CAAC/I,IAAI,CAAC,CACjByJ,GAAID,CACR,EACJ,EAIEvI,EAAO6R,qBAAqB,CAAG,SAA+BtJ,CAAQ,EACpE,IAAI,CAACT,UAAU,CAACY,aAAa,CAAC,SAASnL,CAAK,EACxC,OAAOA,EAAMiL,EAAE,GAAKD,GAAWhL,CAAAA,EAAMoL,SAAS,CAAG,CAAA,CAAO,CAC5D,EACJ,EACA3I,EAAO8D,SAAS,CAAG,WACf,IAAsEkC,EAAkBC,AAAlD,IAAI,CAACvD,UAAU,CAACgD,cAAc,CAAoDQ,gBAAgB,CACpI4L,EAAgB9L,EAAgBuD,KAAK,CACvBwE,EAAkBnH,AAAxB,IAAI,CAA0BqH,gBAAgB,CAAE8D,EAAmBnL,AAAnE,IAAI,CAAqE6K,iBAAiB,CAAE3I,EAAiBlC,AAA7G,IAAI,CAA+GiB,eAAe,CAAEmK,EAAapL,AAAjJ,IAAI,CAAmJ8K,QAAQ,CAAE9I,EAAQhC,AAAzK,IAAI,CAA2Kc,MAAM,CAAEuK,EAAUrL,AAAjM,IAAI,CAAmM+K,QAAQ,CAAE9I,EAAUjC,AAA3N,IAAI,CAA6Ne,QAAQ,CACrP,GAAKmK,GAAkBC,EAAiBhW,MAAM,EAGzCgS,EAAgBmE,cAAc,CAAClM,EAAiB8L,EAAeC,IAGpEnJ,EAAM7M,MAAM,CAAGkW,EAAQlW,MAAM,CAAG8M,EAAQ9M,MAAM,CAAG,EACjDgS,EAAgBoE,gBAAgB,CAACnM,EAAiB8L,EAAeC,EAAkB,IAAI,CAACK,gBAAgB,EACxG,IAAI,IAAItW,EAAI,EAAGoI,EAAI6N,EAAiBhW,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CACnD,IAAIuW,EAAkBN,CAAgB,CAACjW,EAAE,CACzC,OAAOuW,EAAgB1M,KAAK,EACxB,KAAKjF,GAAuB4R,SAAS,CAEjC,IAAI,IADAC,EAAmBF,EAAgBG,OAAO,CACtCC,EAAI,EAAGrJ,EAAKmJ,EAAiBxW,MAAM,CAAE0W,EAAIrJ,EAAIqJ,IAAI,CACrD,IAAID,EAAUD,CAAgB,CAACE,EAAE,CAC7BC,EAAUF,EAAQjH,EAAE,AACpBzC,CAAAA,CAAc,CAAC4J,EAAQ,GAAK9S,GAAgBiK,QAAQ,GACpDhB,EAAQ9J,IAAI,CAACyT,GACbR,EAAWW,MAAM,CAACX,EAAWY,OAAO,CAACJ,GAAU,IAEnD1J,CAAc,CAAC4J,EAAQ,CAAG9S,GAAgB+G,WAAW,AACzD,CACA,KACJ,MAAKjG,GAAuBmS,QAAQ,CAEhC,IAAI,IADAC,EAAWT,EAAgBG,OAAO,CAC9BO,EAAK,EAAGrJ,EAAKoJ,EAAS/W,MAAM,CAAEgX,EAAKrJ,EAAIqJ,IAAK,CAChD,IAAIC,EAAgBF,CAAQ,CAACC,EAAG,CAC5BE,EAAWD,EAAczH,EAAE,AAC3ByH,CAAAA,EAAcrN,KAAK,GAAK/F,GAAgBiK,QAAQ,CAC5Cf,CAAc,CAACmK,EAAS,GAAKrT,GAAgBiK,QAAQ,CACrDoI,EAAQlT,IAAI,CAACiU,IAEbpK,EAAM7J,IAAI,CAACiU,GACXlK,CAAc,CAACmK,EAAS,CAAGrT,GAAgBiK,QAAQ,CACnDmI,EAAWjT,IAAI,CAACiU,KAGhBlK,CAAc,CAACmK,EAAS,GAAKrT,GAAgBiK,QAAQ,GACrDhB,EAAQ9J,IAAI,CAACiU,GACbhB,EAAWW,MAAM,CAACX,EAAWY,OAAO,CAACI,GAAgB,IAEzDlK,CAAc,CAACmK,EAAS,CAAGD,EAAcrN,KAAK,CAEtD,CAER,CACJ,CACA,IAAI,IAAIwD,EAAK4I,EAAiBhW,MAAM,CAAG,EAAGoN,GAAM,EAAGA,IAC/C4I,CAAgB,CAAC5I,EAAG,CAACxD,KAAK,GAAKjF,GAAuB4R,SAAS,EAAIP,EAAiBY,MAAM,CAACxJ,EAAI,GAEnG,GAAIP,EAAM7M,MAAM,CAAG,GAAKkW,EAAQlW,MAAM,CAAG,GAAK8M,EAAQ9M,MAAM,CAAG,EAE3D,IAAI,IADA+N,EAAY,IAAI,CAAChC,UAAU,CAACiC,YAAY,GACpCN,EAAK,EAAGQ,EAAKH,EAAU/N,MAAM,CAAE0N,EAAKQ,EAAIR,IAAK,CACjD,IAAIlB,EAAWuB,CAAS,CAACL,EAAG,AAC5B,AAAClB,CAAAA,EAASI,SAAS,EAAIJ,EAASC,EAAE,CAACI,EAAOqJ,EAASpJ,EACvD,EAER,EACA7I,EAAOqN,cAAc,CAAG,WACpB,IAAI,CAAC3F,MAAM,CAAC3L,MAAM,CAAG,IAAI,CAAC4V,QAAQ,CAAC5V,MAAM,CAAG,IAAI,CAAC4L,QAAQ,CAAC5L,MAAM,CAAG,CACvE,EACAiE,EAAOqF,cAAc,CAAG,WAEpB,IAAI,CAACoM,iBAAiB,CAAC1V,MAAM,CAAG,IAAI,CAAC2V,QAAQ,CAAC3V,MAAM,CAAG,IAAI,CAAC2L,MAAM,CAAC3L,MAAM,CAAG,IAAI,CAAC4V,QAAQ,CAAC5V,MAAM,CAAG,IAAI,CAAC4L,QAAQ,CAAC5L,MAAM,CAAG,EAC1H,IAAI,CAAC+L,UAAU,CAACY,aAAa,CAAC,SAASnL,CAAK,EACxC,OAAOA,EAAMoL,SAAS,CAAG,CAAA,CAC7B,EACJ,EACA3I,EAAOkT,mBAAmB,CAAG,SAA6Bb,CAAe,EACrE,IAAkBtE,EAAkBnH,AAAxB,IAAI,CAA0BqH,gBAAgB,CAC1D,GAAI,IAAI,CAACvL,UAAU,CAACgD,cAAc,CAACQ,gBAAgB,EAAI,CAAC6H,EAAgBoF,iCAAiC,CACrG,MAAM,AAAI/M,MAAM3F,EAAa,CAAC,IAAI,CAACyQ,KAAK,CAAC,CAAG,8DAEhD,IAAI,CAACO,iBAAiB,CAAC1S,IAAI,CAACsT,GAC5BtE,EAAgBqF,oBAAoB,CAACf,EACzC,EACArS,EAAOqT,sBAAsB,CAAG,SAAgChB,CAAe,EAC3E,IAAkBtE,EAAkBnH,AAAxB,IAAI,CAA0BqH,gBAAgB,CAC1D,GAAI,IAAI,CAACvL,UAAU,CAACgD,cAAc,CAACQ,gBAAgB,EAAI,CAAC6H,EAAgBoF,iCAAiC,CACrG,MAAM,AAAI/M,MAAM3F,EAAa,CAAC,IAAI,CAACyQ,KAAK,CAAC,CAAG,8DAEhDnD,EAAgBuF,oBAAoB,CAACjB,EACzC,EACArS,EAAOuT,0BAA0B,CAAG,WAChC,IAAkBxF,EAAkBnH,AAAxB,IAAI,CAA0BqH,gBAAgB,CAC1D,GAAI,IAAI,CAACvL,UAAU,CAACgD,cAAc,CAACQ,gBAAgB,EAAI,CAAC6H,EAAgBoF,iCAAiC,CACrG,MAAM,AAAI/M,MAAM3F,EAAa,CAAC,IAAI,CAACyQ,KAAK,CAAC,CAAG,8DAGhD,IAAI,IADea,EAAmBhJ,AAAzB,IAAI,CAA4B0I,iBAAiB,CACtD3V,EAAI,EAAGoI,EAAI6N,EAAiBhW,MAAM,CAAED,EAAIoI,EAAGpI,IAC/CiS,EAAgBuF,oBAAoB,CAACvB,CAAgB,CAACjW,EAAE,CAEhE,EACO6E,EAGPA,CAAAA,GAAmB6S,KAAK,CAAG,EAK3B,IAAIC,GAAY,WAC8B,IAAI,CAACnP,IAAI,CAAG,IAAIgC,GAClB,IAAI,CAACX,KAAK,CAAG/F,GAAgB+G,WAAW,AACxF,CAOI/F,EADMA,EAGPA,IAAkBA,CAAAA,GAAgB,CAAC,CAAA,EAFrB,CAACA,EAAoC,KAAQ,CAAG,EAAI,CAAG,QACpEA,CAAa,CAACA,EAA0C,GAAM,CAAG,EAAI,CAAG,MAMxE,IAAI8S,GAAc,WACoB,IAAI,CAACC,KAAK,CAAG,IAAI5R,EAAAA,OAAAA,CACnB,IAAI,CAAC6R,MAAM,CAAG,IAAI7R,EAAAA,OAAAA,AAC1D,EAiBA,SAASvE,GAAWC,CAAU,CAAE7B,CAAM,CAAEU,CAAG,CAAEoB,CAAI,EAC/C,IAA2HC,EAAvHC,EAAIC,UAAU9B,MAAM,CAAE+B,EAAIF,EAAI,EAAIhC,EAAS8B,AAAS,OAATA,EAAgBA,EAAOtB,OAAO2B,wBAAwB,CAACnC,EAAQU,GAAOoB,EACrH,GAAI,AAAmB,UAAnB,OAAOM,SAAwB,AAA4B,YAA5B,OAAOA,QAAQC,QAAQ,CAAiBH,EAAIE,QAAQC,QAAQ,CAACR,EAAY7B,EAAQU,EAAKoB,QACpH,IAAK,IAAI5B,EAAI2B,EAAW1B,MAAM,CAAG,EAAGD,GAAK,EAAGA,IAAS6B,CAAAA,EAAIF,CAAU,CAAC3B,EAAE,AAAA,GAAEgC,CAAAA,EAAKF,AAAAA,CAAAA,EAAI,EAAID,EAAEG,GAAKF,EAAI,EAAID,EAAE/B,EAAQU,EAAKwB,GAAKH,EAAE/B,EAAQU,KAASwB,CAAAA,EAChJ,OAAOF,EAAI,GAAKE,GAAK1B,OAAOC,cAAc,CAACT,EAAQU,EAAKwB,GAAIA,CAC9D,CAEA,AAA2B,YAA3B,OAAO2B,iBAAiCA,gBASpCoB,CADMA,EAKPA,IAAgBA,CAAAA,GAAc,CAAC,CAAA,EAJnB,CAACA,EAAyB,IAAO,CAAG,EAAE,CAAG,OACpDA,CAAW,CAACA,EAA8B,UAAa,CAAG,EAAE,CAAG,aAC/DA,CAAW,CAACA,EAA4B,QAAW,CAAG,EAAE,CAAG,WAC3DA,CAAW,CAACA,EAAqD,UAAa,CAAG,EAAE,CAAG,aAKtF,IAAIgT,GAAoB,WAC2B,IAAI,CAAClO,KAAK,CAAGjF,GAAuB+E,IAAI,CACb,IAAI,CAAC+M,OAAO,CAAG,EAAE,AACnG,EAIQ1R,IACJ7D,EACS6D,EAAT,SAAwBgT,CAAa,EACjC,IAAIlN,EAGJ,MADAA,AADAA,CAAAA,EAAQmN,AAKdF,GALiCjV,IAAI,CAAC,IAAI,GAAK,IAAI,AAAJ,EACnCkV,aAAa,CAAGA,EACflN,CACX,EAEFiN,IADS/S,GAKHC,IACJ9D,EACS8D,EAAT,WACI,IAAI6F,EAUJ,OATAA,EAAQoN,AAYdP,GAZyBzU,KAAK,CAAC,IAAI,CAAEnB,YAAc,IAAI,CAInD+I,EAAMqN,OAAO,CAAG,EAAE,CAIlBrN,EAAMsN,eAAe,CAAG,CAAA,EACftN,CACX,EAEF6M,IADS1S,GAGPC,IACA/D,EACS+D,EAAT,SAAyB6M,CAAS,CAAEiG,CAAa,MAEzClN,EAGJ,OAJsB,KAAK,IAAvBkN,GAA0BA,CAAAA,EAAgBjT,GAAYsT,UAAU,AAAVA,EAG1DvN,AADAA,CAAAA,EAAQwN,AA6BdzT,GA7BkC/B,IAAI,CAAC,IAAI,CAAEiP,EAAWpN,GAAc4T,aAAa,CAAEP,IAAkB,IAAI,EAC/FZ,mBAAmB,CAAC,IAAIpS,GAAegT,IACtClN,CACX,EA0BFjG,IAxBEX,AADagB,EAAgBrE,SAAS,CAC/ByV,gBAAgB,CAAG,WACtB,IAAIkC,EAAQ,IAAIvT,GAEhB,OADAuT,EAAM/I,EAAE,CAAG5K,GAAmB6S,KAAK,GAC5Bc,CACX,EACA/X,EAAcyE,EAAiB,CAC3B,CACI1E,IAAK,gBACLyJ,IAEN,WACU,OAAO,IAAI,CAAC0L,iBAAiB,CAAC,EAAE,CAACqC,aAAa,AAClD,CACJ,EACA,CACIxX,IAAK,gBACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2L,QAAQ,AACxB,CACJ,EACH,EACM1Q,GAEXA,GAAkBxD,GAAW,CACzBiT,GAAkBhQ,GAAc4T,aAAa,EAChD,CAAErT,IAEH,IAAIC,IACAhE,EACSgE,EAAT,SAAmB4M,CAAS,EACxB,IAAIjH,EAWJ,MATAA,AADAA,CAAAA,EAAQ4K,AAoGdhR,GApGyB5B,IAAI,CAAC,IAAI,CAAEiP,EAAWpN,GAAc8T,OAAO,GAAK,IAAI,EACjEC,QAAQ,CAAG,IAAIC,EAAAA,GAAAA,CACrB7N,EAAM8N,UAAU,CAAG,IAAIC,EAAAA,KAAAA,CACvB/N,EAAMgO,SAAS,CAAG,IAAItS,EAAAA,OAAAA,CACtBsE,EAAMiO,UAAU,CAAG,IAAI9S,EAAAA,OAAAA,CACvB6E,EAAMkO,UAAU,CAAG,IAAI/S,EAAAA,OAAAA,CACvB6E,EAAMmO,UAAU,CAAG,IAAIhT,EAAAA,OAAAA,CACvB6E,EAAMoO,UAAU,CAAG,IAAIjT,EAAAA,OAAAA,CACvB6E,EAAMqO,UAAU,CAAG,IAAIlT,EAAAA,OAAAA,CACvB6E,EAAMsO,UAAU,CAAG,IAAInT,EAAAA,OAAAA,CAChB6E,CACX,EAyFFpG,IAlFIR,CANEA,EAASiB,EAAUtE,SAAS,EAMvBwY,OAAO,CAAG,SAAiBC,CAAG,CAAExS,CAAI,EACzC,IAAIyS,EAAS,EAAE,CAIf,OAHIzS,EAAOhC,GAAc+T,KAAK,EAC1B,IAAI,CAACW,aAAa,CAACF,EAAKC,GAErBA,CACX,EAOErV,EAAOuV,aAAa,CAAG,SAAuB3Q,CAAC,CAAEC,CAAC,CAAEjC,CAAI,EACtD,IAAkBiL,EAAYjH,AAAlB,IAAI,CAAoBlE,UAAU,CAC9C,GAAImL,EAAUnI,cAAc,CAAC4G,IAAI,GAAKlM,GAAcoV,EAAE,CAClD,MAAM,AAAIpP,MAAM,oDAEpB,IAAqHvD,EAAS4S,AAA/E5H,EAAU9K,YAAY,CAACC,gBAAgB,CAACtD,GAAqB4D,MAAM,EAAqDJ,OAAO,CAC9K,GAAI,CAACL,EACD,MAAM,AAAIuD,MAAM,wBAEpB,IAAIgP,EAAMvS,EAAO6S,gBAAgB,CAAC,IAAI,CAACd,SAAS,CAAC1P,GAAG,CAACN,EAAGC,GAAI,IAAI,CAAC2P,QAAQ,EACzE,OAAO,IAAI,CAACW,OAAO,CAACC,EAAKxS,EAC7B,EACA5C,EAAOsV,aAAa,CAAG,SAAuBF,CAAG,CAAEC,CAAM,EACrD,IAAIM,EAAe,IAAI,CAACjT,UAAU,CAACiN,UAAU,CAAC3O,IAC9C,GAAI,CAAC2U,GAAgB,CAACA,EAAarF,OAAO,CACtC,MAAM,AAAIlK,MAAM,2EAIpB,IAAI,IAFckO,EAAQ1N,AAAd,IAAI,CAAgB8N,UAAU,CAAEd,EAAShN,AAAzC,IAAI,CAA2CiO,UAAU,CAAEe,EAAWhP,AAAtE,IAAI,CAAwEkO,UAAU,CAAEe,EAAkBjP,AAA1G,IAAI,CAA4GmO,UAAU,CAClIe,EAAgBH,EAAaG,aAAa,CACtCha,EAAI,EAAGoI,EAAI4R,EAAc/Z,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CAChD,IAAIia,EAAeD,CAAa,CAACha,EAAE,CACnC8X,EAAO1O,GAAG,CAAC,EAAG,EAAG,GAAG8Q,eAAe,CAACD,EAAazR,IAAI,CAACiC,MAAM,EAC5D+N,EAAMV,MAAM,CAACqC,QAAQ,CAACrC,GACtBU,EAAM4B,QAAQ,CAAG,CAACnU,SAAQoU,CAAAA,GAAG,CAACvC,EAAQmC,EAAazR,IAAI,CAACC,QAAQ,EAChE,IAAI2R,EAAWd,EAAIgB,cAAc,CAAC9B,GAClC,GAAI4B,GAAY,IACZd,EAAIiB,QAAQ,CAACH,EAAUN,GACvB7T,EAAAA,OAAAA,CAAQuU,eAAe,CAACV,EAAUG,EAAazR,IAAI,CAACkC,aAAa,CAAEqP,GAE/D,IAAI,CAACU,wBAAwB,CAACV,EAAiBE,IAAe,CAC9D,IAAIS,EAAY,IAAI9C,GACpB8C,EAAU7C,KAAK,CAACsC,QAAQ,CAACL,GACzBY,EAAU5C,MAAM,CAACqC,QAAQ,CAACrC,GAC1B4C,EAAUN,QAAQ,CAAGA,EACrBM,EAAUxD,aAAa,CAAG+C,EAC1BS,EAAUC,aAAa,CAAG7V,GAAc+T,KAAK,CAC7CU,EAAOtW,IAAI,CAACyX,EAChB,CAER,CACJ,EACAxW,EAAOuW,wBAAwB,CAAG,SAAkCG,CAAO,CAAEpC,CAAK,EAM9E,IAAI,IALcqC,EAAW/P,AAAjB,IAAI,CAAmBoO,UAAU,CAAE4B,EAAehQ,AAAlD,IAAI,CAAoDqO,UAAU,CAAE4B,EAAQjQ,AAA5E,IAAI,CAA8EsO,UAAU,CACpGjB,EAAUK,EAAML,OAAO,CACvBlY,EAASkY,EAAQlY,MAAM,CACvB+a,EAAW7C,CAAO,CAAClY,EAAS,EAAE,CAC9Bgb,EAAO,EACHjb,EAAI,EAAGA,EAAIC,EAAQD,IAAI,CAC3B,IAAIkb,EAAW/C,CAAO,CAACnY,EAAE,CACzBiG,EAAAA,OAAQkV,CAAAA,QAAQ,CAACD,EAAUF,EAAUH,GACrC5U,EAAAA,OAAQkV,CAAAA,QAAQ,CAACP,EAASI,EAAUF,GACpC7U,EAAAA,OAAQ8U,CAAAA,KAAK,CAACF,EAAUC,EAAcC,GACtC,IAAIhS,EAAIgS,EAAMhS,CAAC,CACf,GAAIkS,AAAS,IAATA,EACIlS,EAAI,EACJkS,EAAO,EACAlS,EAAI,GACXkS,CAAAA,EAAO,EAAC,OAGZ,GAAIlS,EAAI,GAAKkS,EAAO,GAAKlS,EAAI,GAAKkS,EAAO,EACrC,MAAO,CAAA,EAGfD,EAAWE,CACf,CACA,MAAO,CAAA,CACX,EACO/V,GAEXA,GAAYzD,GAAW,CACnBiT,GAAkBhQ,GAAc8T,OAAO,EAC1C,CAAEtT,IAIC,IAAIC,IACJjE,EACSiE,EAAT,WACI,OAAO8S,AAGbP,GAHwBzU,KAAK,CAAC,IAAI,CAAEnB,UAClC,EAEF4V,IADSvS,GAKHC,IACJlE,EACSkE,EAAT,SAAyBoD,CAAQ,CAAEE,CAAQ,EACvC,IAAImC,EAIJ,MAFAA,AADAA,CAAAA,EAAQmN,AAMdF,GANiCjV,IAAI,CAAC,IAAI,GAAK,IAAI,AAAJ,EACnC2F,QAAQ,CAAGA,EACjBqC,EAAMnC,QAAQ,CAAGA,EACVmC,CACX,EAEFiN,IADS1S,GAGPC,IACAnE,EACSmE,EAAT,SAA0ByM,CAAS,EAC/B,IAAIjH,EAGJ,MADAA,AADAA,CAAAA,EAAQwN,AAqEdzT,GArEkC/B,IAAI,CAAC,IAAI,CAAEiP,EAAWpN,GAAcyW,cAAc,GAAK,IAAI,EACjFC,QAAQ,CAAG,EAAE,CACZvQ,CACX,EAkEFjG,IA7DIX,CAJEA,EAASoB,EAAiBzE,SAAS,EAI9Bya,SAAS,CAAG,SAAmB7S,CAAQ,CAAEE,CAAQ,EACtD,GAAI,CAAC,IAAI,CAAC2M,QAAQ,CACd,MAAM,AAAIhL,MAAM,wDAEpB,IAAkBiR,EAAUzQ,AAAhB,IAAI,CAAkBuQ,QAAQ,CACtCG,EAAgB,IAAInW,GAAgBoD,EAAUE,GAC9C8S,EAAW,IAAI,CAACnF,gBAAgB,GAIpC,OAHAkF,EAAc9E,OAAO,CAAC,EAAE,CAAG+E,EAC3B,IAAI,CAACrE,mBAAmB,CAACoE,GACzBD,EAAQtY,IAAI,CAACwY,GACNA,CACX,EAIEvX,EAAOwX,YAAY,CAAG,SAAsBC,CAAM,EAChD,GAAI,CAAC,IAAI,CAACrG,QAAQ,CACd,MAAM,AAAIhL,MAAM,2DAGpB,IAAI,IADc2L,EAAmBnL,AAAzB,IAAI,CAA2B6K,iBAAiB,CAAE4F,EAAUzQ,AAA5D,IAAI,CAA8DuQ,QAAQ,CAC9Erb,EAAI,EAAGoI,EAAI6N,EAAiBhW,MAAM,CAAED,EAAIoI,EAAGpI,IAAI,CACnD,IAAIwb,EAAgBvF,CAAgB,CAACjW,EAAE,CACvC,GAAIwb,EAAc9E,OAAO,CAAC,EAAE,GAAKiF,EAAQ,CACrC,IAAI,CAACpE,sBAAsB,CAACiE,GAC5B,KACJ,CACJ,CACAD,EAAQ1E,MAAM,CAAC0E,EAAQzE,OAAO,CAAC6E,GAAS,EAC5C,EAGEzX,EAAO0X,YAAY,CAAG,WACpB,GAAI,CAAC,IAAI,CAACtG,QAAQ,CACd,MAAM,AAAIhL,MAAM,yDAEpB,IAAI,CAACmN,0BAA0B,EACnC,EACAvT,EAAOoS,gBAAgB,CAAG,WACtB,IAAIqF,EAAS,IAAIvW,GAEjB,OADAuW,EAAOlM,EAAE,CAAG5K,GAAmB6S,KAAK,GAC7BiE,CACX,EACAlb,EAAc6E,EAAkB,CAC5B,CACI9E,IAAK,kBACLyJ,IAEN,WACU,OAAO,IAAI,CAACoR,QAAQ,AACxB,CACJ,EACA,CACI7a,IAAK,iBACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2L,QAAQ,AACxB,CACJ,EACH,EACMtQ,GAEXA,GAAmB5D,GAAW,CAC1BiT,GAAkBhQ,GAAcyW,cAAc,EACjD,CAAE9V,IAIC,IAAIC,IACJpE,EACSoE,EAAT,SAAwBsW,CAAK,EACzB,IAAI/Q,EAGJ,MADAA,AADAA,CAAAA,EAAQmN,AAKdF,GALiCjV,IAAI,CAAC,IAAI,GAAK,IAAI,AAAJ,EACnC+Y,KAAK,CAAGA,EACP/Q,CACX,EAEFiN,IADSxS,GAKHC,IACJrE,EACSqE,EAAT,WACI,OAAO0S,AAGbP,GAHwBzU,KAAK,CAAC,IAAI,CAAEnB,UAClC,EAEF4V,IADSnS,GAGPC,IACAtE,EACSsE,EAAT,SAAyBsM,CAAS,CAAE+J,CAAc,EAI9C,IAHIhR,EAIJ,GAFAA,AADAA,CAAAA,EAAQwN,AAqCdzT,GArCkC/B,IAAI,CAAC,IAAI,CAAEiP,EAAWpN,GAAcoX,aAAa,CAAED,IAAmB,IAAI,EAChGE,eAAe,CAAGF,EAEpBG,AADcH,CAAAA,EAAiBA,EAAe7b,MAAM,CAAG,CAAA,EACzC,EACd,IAAI,IAAID,EAAI,EAAGoI,EAAI0T,EAAe7b,MAAM,CAAED,EAAIoI,EAAGpI,IAC7C8K,EAAMsM,mBAAmB,CAAC,IAAI7R,GAAeuW,CAAc,CAAC9b,EAAE,QAGlEkc,QAAQC,IAAI,CAAC,2BAEjB,OAAOrR,CACX,EA0BFjG,IAxBEX,AADauB,EAAgB5E,SAAS,CAC/ByV,gBAAgB,CAAG,WACtB,IAAIuF,EAAQ,IAAIrW,GAEhB,OADAqW,EAAMpM,EAAE,CAAG5K,GAAmB6S,KAAK,GAC5BmE,CACX,EACApb,EAAcgF,EAAiB,CAC3B,CACIjF,IAAK,iBACLyJ,IAEN,WACU,OAAO,IAAI,CAAC+R,eAAe,AAC/B,CACJ,EACA,CACIxb,IAAK,gBACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2L,QAAQ,AACxB,CACJ,EACH,EACMnQ,GAEXA,GAAkB/D,GAAW,CACzBiT,GAAkBhQ,GAAcoX,aAAa,EAChD,CAAEtW,IAIC,IAAI2W,GAAmB,SAA0BjH,CAAI,CAAEkH,CAAW,CAAEC,CAAa,EACjF,IAAI,CAACnH,IAAI,CAAGA,EACZ,IAAI,CAACkH,WAAW,CAAGA,EACnB,IAAI,CAACC,aAAa,CAAGA,CACzB,EAEI5W,IAEAA,CADSA,EAAT,cACwB6W,MAAM,CAAG,SAAgBzN,CAAM,CAAE0N,CAAY,EACjE,OAAO,IAAIC,EAAAA,YAAAA,CAAa,SAAS5K,CAAO,CAAEC,CAAM,EAC5C,IAAIwK,EAAgBE,EAAaE,WAAW,GAC5CF,EAAaG,SAAS,GACtB,IAAIC,EAAM,IAAIC,KACdD,CAAAA,EAAIE,MAAM,CAAG,WACTjL,EAAQ,IAAIuK,GAAiB,GAAIQ,EAAKN,GAC1C,EACAM,EAAIG,GAAG,CAAGC,IAAIC,eAAe,CAAC,IAAI7M,OAAO8M,IAAI,CAAC,CAC1CV,EAAaW,cAAc,CAAC,EAAE,CAAC,EAAE,CACpC,EACL,EACJ,EACOzX,GAMX,SAAS0X,KAUL,MAAOA,AATPA,CAAAA,GAAW9c,OAAO+c,MAAM,EAAI,SAAgBvd,CAAM,EAC9C,IAAK,IAAIE,EAAI,EAAGA,EAAI+B,UAAU9B,MAAM,CAAED,IAAK,CACvC,IAAIsd,EAASvb,SAAS,CAAC/B,EAAE,CACzB,IAAK,IAAIQ,KAAO8c,EAAYhd,OAAOO,SAAS,CAAC0c,cAAc,CAACza,IAAI,CAACwa,EAAQ9c,IAAMV,CAAAA,CAAM,CAACU,EAAI,CAAG8c,CAAM,CAAC9c,EAAI,AAAA,CAC5G,CAEA,OAAOV,CACX,CAAA,EAEgBoD,KAAK,CAAC,IAAI,CAAEnB,UAChC,CAfA2D,GAA0BhE,GAAW,CACjC8b,EAAAA,OAAQ,CAAA,oBACX,CAAE9X,IAeH,IAAIE,IAAgDD,EAmBlD8X,EAAAA,MAAAA,CAlBEtc,EACSyE,EAAT,WACI,OAAOD,EAAQzC,KAAK,CAAC,IAAI,CAAEnB,UAC/B,EAHkC4D,GAKlCzB,AADa0B,EAAuB/E,SAAS,CACtC6c,IAAI,CAAG,SAAcC,CAAI,CAAEC,CAAe,EAC7C,OAAO,IAAInB,EAAAA,YAAAA,CAAa,SAAS5K,CAAO,CAAEC,CAAM,EAC5C8L,EACCC,QAAQ,CAACF,EAAKG,GAAG,CAAEV,GAAS,CAAA,EAAIO,EAAM,CACnC7W,KAAM,iBACNuL,IAAI,CAAC,SAAS0L,CAAI,EAClBxB,EAAAA,MAAAA,CAAOwB,EAAMH,EAAgB9O,MAAM,EAAEuD,IAAI,CAAC,SAAS2L,CAAc,EAC7DnM,EAAQmM,EACZ,EACJ,GAAGC,KAAK,CAACnM,EACb,EACJ,EACOlM,GIrkDJ,SAASxD,GAAWC,CAAM,CAAEC,CAAI,CAAEC,CAAK,EAe1C,MAAOH,CAd6BA,IAAhCI,ACHD,WACH,GAAuB,aAAnB,OAAON,SAA2B,CAACA,QAAQO,SAAS,EACpDP,QAAQO,SAAS,CAACC,IAAI,CADgC,MAAO,CAAA,EAEjE,GAAI,AAAiB,YAAjB,OAAOC,MAAsB,MAAO,CAAA,EAExC,GAAI,CAGA,OAFAC,QAAQ/B,SAAS,CAACgC,OAAO,CAACC,IAAI,CAACZ,QAAQO,SAAS,CAACG,QAAS,EAAE,CAAE,WAAa,IAEpE,CAAA,CACV,CAAC,MAAOG,EAAG,CACR,MAAO,CAAA,CACV,CACL,IDPqB,SAAmBV,CAAM,CAAEC,CAAI,CAAEC,CAAK,EAC/C,IAAIS,EAAI,CAAC,KAAK,CACdA,EAAEC,IAAI,CAACC,KAAK,CAACF,EAAGV,GAEhB,IAAIa,EAAW,GADGC,CAAAA,SAASC,IAAI,CAACH,KAAK,CAACb,EAAQW,EAAC,EAK/C,OAFIT,GAAOzB,EAAkBqC,EAAUZ,EAAM1B,SAAS,EAE/CsC,CACnB,EAXqDjB,QAAQO,SAAS,EAchDS,KAAK,CAAC,KAAMnB,UAClC,CEhBO,SAASmc,GAAY1N,CAAY,EACtC,OAAQA,GACN,KAAK,EACH,MAAO,cACT,MAAK,EACH,MAAO,cACT,SACE,OAAO,IACX,CACF,CAEO,SAAS2N,GAAeC,CAA0B,EACvD,IAAItX,EACJ,OAAQsX,EAAY/P,aAAa,EAC/B,IAAK,OACH,KACF,KAAK,SACH,OAAOzK,GAAqBwI,UAAU,AACxC,KAAK,kBACH,GAAIgS,EAAYC,IAAI,CAClB,OAAQD,EAAYE,UAAU,EAC5B,IAAK,OACH,OAAO1a,GAAqB2a,QAAQ,AACtC,KAAK,QACH,OAAO3a,GAAqB4a,SAAS,AACzC,MAEA,OAAQJ,EAAYE,UAAU,EAC5B,IAAK,OACH,OAAO1a,GAAqByI,cAAc,AAC5C,KAAK,QACH,OAAOzI,GAAqB0I,eAAe,AAC/C,CAKN,CACA,OAAOxF,CACT,CJXA,SAASjH,GAAkBC,CAAM,CAAEC,CAAK,EACpC,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,MAAM,CAAED,IAAK,CACnC,IAAIE,EAAaH,CAAK,CAACC,EAAE,AACzBE,CAAAA,EAAWC,UAAU,CAAGD,EAAWC,UAAU,EAAI,CAAA,EACjDD,EAAWE,YAAY,CAAG,CAAA,EAEtB,UAAWF,GAAYA,CAAAA,EAAWG,QAAQ,CAAG,CAAA,CAAA,EAEjDC,OAAOC,cAAc,CAACT,EAAQI,EAAWM,GAAG,CAAEN,EAClD,CACJ,CACA,SAASO,GAAcC,CAAW,CAAEC,CAAU,CAAEC,CAAW,EAIvD,OAHID,GAAYd,GAAkBa,EAAYG,SAAS,CAAEF,GACrDC,GAAaf,GAAkBa,EAAaE,GAEzCF,CACX,CF2hDAkF,GAAyBlE,GAAW,CAChC+c,EAAAA,cAAAA,CAAe,mBAAoB,EAAE,EACxC,CAAE7Y,IEvkDCC,CADMA,EAIPA,IAAoBA,CAAAA,GAAkB,CAAC,CAAA,EAHvB,CAACA,EAAwF,QAAW,CAAG,EAAE,CAAG,WAC3HA,CAAe,CAACA,EAA8F,QAAW,CAAG,EAAE,CAAG,WACjIA,CAAe,CAACA,EAAsF,UAAa,CAAG,EAAE,CAAG,aAO3HC,CADMA,EAIPA,IAA0BA,CAAAA,GAAwB,CAAC,CAAA,EAH7B,CAACA,EAAwG,IAAO,CAAG,EAAE,CAAG,OAC7IA,CAAqB,CAACA,EAAyG,KAAQ,CAAG,EAAE,CAAG,QAC/IA,CAAqB,CAACA,EAAuD,YAAe,CAAG,EAAE,CAAG,eAOpGC,CADMA,EAOPA,IAAgBA,CAAAA,GAAc,CAAC,CAAA,EANnB,CAACA,EAA6B,IAAO,CAAG,EAAE,CAAG,OACxDA,CAAW,CAACA,EAA4B,GAAM,CAAG,EAAE,CAAG,MACtDA,CAAW,CAACA,EAA6B,IAAO,CAAG,EAAE,CAAG,OACxDA,CAAW,CAACA,EAA8B,KAAQ,CAAG,EAAE,CAAG,QAC1DA,CAAW,CAACA,EAA+B,MAAS,CAAG,EAAE,CAAG,SAC5DA,CAAW,CAACA,EAA4B,GAAM,CAAG,EAAE,CAAG,MAuBtD,IAAIC,IAQFA,CAPOA,GAAT,cAOW0Y,KAAK,CAAG,SAAeC,CAAC,CAAEC,CAAG,CAAEC,CAAG,EACzC,OAAOC,KAAKD,GAAG,CAACD,EAAKE,KAAKF,GAAG,CAACC,EAAKF,GACvC,EAOE3Y,GAASqD,MAAM,CAAG,SAAgBrG,CAAC,CAAE+b,CAAC,EACpC,OAAOD,KAAKE,GAAG,CAAChc,EAAI+b,IAAM/Y,GAASiZ,aAAa,AACpD,EAKEjZ,GAASkZ,UAAU,CAAG,SAAoBP,CAAC,EACzC,MAAO,AAACA,CAAAA,EAAIA,EAAI,CAAA,GAAO,CAC3B,EAKE3Y,GAASmZ,cAAc,CAAG,SAAwBnd,CAAC,EACjD,OAAOA,EAAIgE,GAASoZ,iBAAiB,AACzC,EAKEpZ,GAASqZ,cAAc,CAAG,SAAwBxd,CAAC,EACjD,OAAOA,EAAImE,GAASsZ,iBAAiB,AACzC,EAOEtZ,GAASuZ,IAAI,CAAG,SAAc3O,CAAK,CAAEoC,CAAG,CAAEwM,CAAC,EACzC,OAAO5O,EAASoC,AAAAA,CAAAA,EAAMpC,CAAAA,EAAS4O,CACnC,EACOxZ,GAGoFA,CAAAA,GAASiZ,aAAa,CAAG,KAGhEjZ,GAASoZ,iBAAiB,CAAG,IAAMN,KAAKW,EAAE,CAG1CzZ,GAASsZ,iBAAiB,CAAGR,KAAKW,EAAE,CAAG,IAK3F,IAAIxZ,IAiBF/B,CAPEA,GAAS+B,CATJA,GAAT,SAAiB6C,CAAC,CAAEC,CAAC,CAAEG,CAAC,EACV,KAAK,IAAXJ,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXC,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXG,GAAcA,CAAAA,EAAI,CAAA,EACL,IAAI,CAACwW,eAAe,CAAG,KACxC,IAAI,CAACC,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG3W,CACd,GACqBrI,SAAS,EAOrBuI,GAAG,CAAG,SAAaN,CAAC,CAAEC,CAAC,CAAEG,CAAC,EAK/B,OAJA,IAAI,CAACyW,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG3W,EACV,IAAI,CAACwW,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO4b,GAAG,CAAG,SAAatc,CAAK,EAK7B,OAJA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACH,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAOiX,QAAQ,CAAG,SAAkB3X,CAAK,EAKvC,OAJA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACH,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO6b,QAAQ,CAAG,SAAkBvc,CAAK,EAKvC,OAJA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACH,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8b,MAAM,CAAG,SAAgBxc,CAAK,EAKnC,OAJA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACH,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOjE,MAAM,CAAG,WACd,IAAkB0f,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CAC7D,OAAOf,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAC9C,EAIE3b,GAAOgc,aAAa,CAAG,WACrB,IAAkBP,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CAC7D,OAAOF,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,CACpC,EAIE3b,GAAOic,MAAM,CAAG,WAKd,OAJA,IAAI,CAACR,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACC,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACC,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACH,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOkc,SAAS,CAAG,WAEjB,OADAna,GAAQma,SAAS,CAAC,IAAI,CAAE,IAAI,EACrB,IAAI,AACf,EAKElc,GAAOmc,KAAK,CAAG,SAAeC,CAAC,EAK7B,OAJA,IAAI,CAACX,EAAE,EAAIW,EACX,IAAI,CAACV,EAAE,EAAIU,EACX,IAAI,CAACT,EAAE,EAAIS,EACX,IAAI,CAACZ,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAWExb,GAAOgW,eAAe,CAAG,SAAyBqG,CAAC,EAEjD,OADAta,GAAQiU,eAAe,CAAC,IAAI,CAAEqG,EAAG,IAAI,EAC9B,IAAI,AACf,EAKErc,GAAOsW,eAAe,CAAG,SAAyB+F,CAAC,EAEjD,OADAta,GAAQuU,eAAe,CAAC,IAAI,CAAE+F,EAAG,IAAI,EAC9B,IAAI,AACf,EAWErc,GAAOsc,mBAAmB,CAAG,SAA6BD,CAAC,EAEzD,OADAta,GAAQua,mBAAmB,CAAC,IAAI,CAAED,EAAG,IAAI,EAClC,IAAI,AACf,EAKErc,GAAOuc,eAAe,CAAG,SAAyBC,CAAU,EAE1D,OADAza,GAAQwa,eAAe,CAAC,IAAI,CAAEC,EAAY,IAAI,EACvC,IAAI,AACf,EAIExc,GAAOyc,KAAK,CAAG,WACb,OAAO,IAAI1a,GAAQ,IAAI,CAAC0Z,EAAE,CAAE,IAAI,CAACC,EAAE,CAAE,IAAI,CAACC,EAAE,CAChD,EAKE3b,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EAKxC,OAJA,IAAI,CAACqC,EAAE,CAAGrC,EAAOxU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGtC,EAAOvU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGvC,EAAOpU,CAAC,CAClB,IAAI,CAACwW,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO0c,MAAM,CAAG,SAAgB9gB,CAAM,EAIpC,OAHAA,EAAOgJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB7f,EAAOiJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB9f,EAAOoJ,CAAC,CAAG,IAAI,CAAC2W,EAAE,CACX/f,CACX,EAMEoE,GAAO2c,aAAa,CAAG,SAAuBC,CAAK,CAAEC,CAAM,EAMzD,OALe,KAAK,IAAhBA,GAAmBA,CAAAA,EAAS,CAAA,EAChC,IAAI,CAACpB,EAAE,CAAGmB,CAAK,CAACC,EAAO,CACvB,IAAI,CAACnB,EAAE,CAAGkB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAAClB,EAAE,CAAGiB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAACrB,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8c,WAAW,CAAG,SAAqBC,CAAG,CAAEC,CAAS,EACpC,KAAK,IAAnBA,GAAsBA,CAAAA,EAAY,CAAA,EACtCD,CAAG,CAACC,EAAU,CAAG,IAAI,CAACvB,EAAE,CACxBsB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACtB,EAAE,CAC5BqB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACrB,EAAE,AAChC,EAIE3b,GAAOid,MAAM,CAAG,WACd,MAAO,CACHrY,EAAG,IAAI,CAAC6W,EAAE,CACV5W,EAAG,IAAI,CAAC6W,EAAE,CACV1W,EAAG,IAAI,CAAC2W,EAAE,AACd,CACJ,EAME5Z,GAAQ6Z,GAAG,CAAG,SAAavc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQkV,QAAQ,CAAG,SAAkB5X,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACnDA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQ8Z,QAAQ,CAAG,SAAkBxc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACnDA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQ+Z,MAAM,CAAG,SAAgBzc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAC/CA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQoU,GAAG,CAAG,SAAa9W,CAAI,CAAEC,CAAK,EACpC,OAAOD,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAAGpc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAAGrc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,AACvE,EAME5Z,GAAQ8U,KAAK,CAAG,SAAexX,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAC7C,IAAIG,EAAK7d,EAAKoc,EAAE,CACZ0B,EAAK9d,EAAKqc,EAAE,CACZ0B,EAAK/d,EAAKsc,EAAE,CACZ0B,EAAK/d,EAAMmc,EAAE,CACb6B,EAAKhe,EAAMoc,EAAE,CACb6B,EAAKje,EAAMqc,EAAE,CACjBoB,EAAI7X,GAAG,CAACiY,EAAKI,EAAKH,EAAKE,EAAIF,EAAKC,EAAKH,EAAKK,EAAIL,EAAKI,EAAKH,EAAKE,EACjE,EAMEtb,GAAQmU,QAAQ,CAAG,SAAkBpX,CAAC,CAAE+b,CAAC,EACvC,IAAIjW,EAAIiW,EAAEY,EAAE,CAAG3c,EAAE2c,EAAE,CACf5W,EAAIgW,EAAEa,EAAE,CAAG5c,EAAE4c,EAAE,CACf1W,EAAI6V,EAAEc,EAAE,CAAG7c,EAAE6c,EAAE,CACnB,OAAOf,KAAKmB,IAAI,CAACnX,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,EACzC,EAMEjD,GAAQyb,eAAe,CAAG,SAAyB1e,CAAC,CAAE+b,CAAC,EACrD,IAAIjW,EAAIiW,EAAEY,EAAE,CAAG3c,EAAE2c,EAAE,CACf5W,EAAIgW,EAAEa,EAAE,CAAG5c,EAAE4c,EAAE,CACf1W,EAAI6V,EAAEc,EAAE,CAAG7c,EAAE6c,EAAE,CACnB,OAAO/W,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,CAC/B,EAMEjD,GAAQoD,MAAM,CAAG,SAAgB9F,CAAI,CAAEC,CAAK,EAC1C,OAAOwC,GAASqD,MAAM,CAAC9F,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,GAAK3Z,GAASqD,MAAM,CAAC9F,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,GAAK5Z,GAASqD,MAAM,CAAC9F,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,CACxH,EAOE5Z,GAAQsZ,IAAI,CAAG,SAAc3O,CAAK,CAAEoC,CAAG,CAAEwM,CAAC,CAAEyB,CAAG,EAC7C,IAAItB,EAAK/O,EAAM+O,EAAE,CAAEC,EAAKhP,EAAMgP,EAAE,CAAEC,EAAKjP,EAAMiP,EAAE,AAC/CoB,CAAAA,EAAItB,EAAE,CAAGA,EAAM3M,AAAAA,CAAAA,EAAI2M,EAAE,CAAGA,CAAC,EAAKH,EAC9ByB,EAAIrB,EAAE,CAAGA,EAAM5M,AAAAA,CAAAA,EAAI4M,EAAE,CAAGA,CAAC,EAAKJ,EAC9ByB,EAAIpB,EAAE,CAAGA,EAAM7M,AAAAA,CAAAA,EAAI6M,EAAE,CAAGA,CAAC,EAAKL,EAC9ByB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQ4Y,GAAG,CAAG,SAAatb,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGb,KAAKD,GAAG,CAACtb,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,EACnCsB,EAAIrB,EAAE,CAAGd,KAAKD,GAAG,CAACtb,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,EACnCqB,EAAIpB,EAAE,CAAGf,KAAKD,GAAG,CAACtb,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,EACnCoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQ2Y,GAAG,CAAG,SAAarb,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGb,KAAKF,GAAG,CAACrb,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,EACnCsB,EAAIrB,EAAE,CAAGd,KAAKF,GAAG,CAACrb,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,EACnCqB,EAAIpB,EAAE,CAAGf,KAAKF,GAAG,CAACrb,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,EACnCoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEzZ,GAAQka,MAAM,CAAG,SAAgBnd,CAAC,CAAEie,CAAG,EACrCA,EAAItB,EAAE,CAAG,CAAC3c,EAAE2c,EAAE,CACdsB,EAAIrB,EAAE,CAAG,CAAC5c,EAAE4c,EAAE,CACdqB,EAAIpB,EAAE,CAAG,CAAC7c,EAAE6c,EAAE,CACdoB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEzZ,GAAQma,SAAS,CAAG,SAAmBpd,CAAC,CAAEie,CAAG,EAC3C,IAAItB,EAAK3c,EAAE2c,EAAE,CAAEC,EAAK5c,EAAE4c,EAAE,CAAEC,EAAK7c,EAAE6c,EAAE,CAC/B8B,EAAM7C,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,GACzC8B,EAAM3b,GAASiZ,aAAa,GAC5B0C,EAAM,EAAIA,EACVV,EAAI7X,GAAG,CAACuW,EAAKgC,EAAK/B,EAAK+B,EAAK9B,EAAK8B,GAEzC,EAME1b,GAAQoa,KAAK,CAAG,SAAerd,CAAC,CAAEsd,CAAC,CAAEW,CAAG,EACtCA,EAAItB,EAAE,CAAG3c,EAAE2c,EAAE,CAAGW,EAChBW,EAAIrB,EAAE,CAAG5c,EAAE4c,EAAE,CAAGU,EAChBW,EAAIpB,EAAE,CAAG7c,EAAE6c,EAAE,CAAGS,EAChBW,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAYEzZ,GAAQiU,eAAe,CAAG,SAAyByE,CAAC,CAAE4B,CAAC,CAAEU,CAAG,EAC1D,IAAItB,EAAKhB,EAAEgB,EAAE,CAAEC,EAAKjB,EAAEiB,EAAE,CAAEC,EAAKlB,EAAEkB,EAAE,CAC/B9c,EAAIwd,EAAEqB,QAAQ,AAClBX,CAAAA,EAAItB,EAAE,CAAGA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAC1Cke,EAAIrB,EAAE,CAAGD,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAC1Cke,EAAIpB,EAAE,CAAGF,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAC3Cke,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQuU,eAAe,CAAG,SAAyBmE,CAAC,CAAE4B,CAAC,CAAEU,CAAG,EAC1D,IAAItB,EAAKhB,EAAEgB,EAAE,CAAEC,EAAKjB,EAAEiB,EAAE,CAAEC,EAAKlB,EAAEkB,EAAE,CAC/B9c,EAAIwd,EAAEqB,QAAQ,AAClBX,CAAAA,EAAItB,EAAE,CAAGA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAClDke,EAAIrB,EAAE,CAAGD,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAClDke,EAAIpB,EAAE,CAAGF,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAGA,CAAC,CAAC,GAAG,CACnDke,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQ4b,eAAe,CAAG,SAAyBlD,CAAC,CAAE4B,CAAC,CAAEU,CAAG,EAC1D,IAAItB,EAAKhB,EAAEgB,EAAE,CAAEC,EAAKjB,EAAEiB,EAAE,CAAEC,EAAKlB,EAAEkB,EAAE,CAC/B9c,EAAIwd,EAAEqB,QAAQ,AAClBX,CAAAA,EAAItB,EAAE,CAAGA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAClDke,EAAIrB,EAAE,CAAGD,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAClDke,EAAIpB,EAAE,CAAGF,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAGA,CAAC,CAAC,GAAG,CACnDke,EAAIa,EAAE,CAAGnC,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAGA,CAAC,CAAC,GAAG,CACnDke,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAaEzZ,GAAQua,mBAAmB,CAAG,SAA6B7B,CAAC,CAAE4B,CAAC,CAAEU,CAAG,EAClE,IAAItB,EAAKhB,EAAEgB,EAAE,CAAEC,EAAKjB,EAAEiB,EAAE,CAAEC,EAAKlB,EAAEkB,EAAE,CAC/B9c,EAAIwd,EAAEqB,QAAQ,CACdzY,EAAIwW,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAGA,CAAC,CAAC,GAAG,CAClDoG,EAAI,EAAMA,EACV8X,EAAItB,EAAE,CAAG,AAACA,CAAAA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAE,AAAC,EAAIoG,EACvD8X,EAAIrB,EAAE,CAAG,AAACD,CAAAA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAE,AAAC,EAAIoG,EACvD8X,EAAIpB,EAAE,CAAG,AAACF,CAAAA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAGA,CAAC,CAAC,GAAE,AAAC,EAAIoG,EACxD8X,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEzZ,GAAQwa,eAAe,CAAG,SAAyB9B,CAAC,CAAE+B,CAAU,CAAEO,CAAG,EACnE,IAAItB,EAAKhB,EAAEgB,EAAE,CAAEC,EAAKjB,EAAEiB,EAAE,CAAEC,EAAKlB,EAAEkB,EAAE,CAC/BkC,EAAKrB,EAAWf,EAAE,CAAEqC,EAAKtB,EAAWd,EAAE,CAAEqC,EAAKvB,EAAWb,EAAE,CAAEqC,EAAKxB,EAAWoB,EAAE,CAE9EK,EAAKD,EAAKvC,EAAKqC,EAAKnC,EAAKoC,EAAKrC,EAC9BwC,EAAKF,EAAKtC,EAAKqC,EAAKtC,EAAKoC,EAAKlC,EAC9BwC,EAAKH,EAAKrC,EAAKkC,EAAKnC,EAAKoC,EAAKrC,EAC9B2C,EAAK,CAACP,EAAKpC,EAAKqC,EAAKpC,EAAKqC,EAAKpC,CAEnCoB,CAAAA,EAAItB,EAAE,CAAGwC,EAAKD,EAAKI,EAAKP,EAAKK,EAAKH,EAAKI,EAAKL,EAC5Cf,EAAIrB,EAAE,CAAGwC,EAAKF,EAAKI,EAAKN,EAAKK,EAAKN,EAAKI,EAAKF,EAC5ChB,EAAIpB,EAAE,CAAGwC,EAAKH,EAAKI,EAAKL,EAAKE,EAAKH,EAAKI,EAAKL,EAC5Cd,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EACAjf,GAAcwF,GAAS,CACnB,CACIzF,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC0V,EAAE,AAClB,EACAvW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACke,EAAE,CAAGle,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2V,EAAE,AAClB,EACAxW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACme,EAAE,CAAGne,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC4V,EAAE,AAClB,EACAzW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACoe,EAAE,CAAGpe,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACH,EACMzZ,GAGUA,CAAAA,GAAQsc,KAAK,CAAG,IAAItc,GAAQ,EAAK,EAAK,GAGtCA,GAAQuc,IAAI,CAAG,IAAIvc,GAAQ,EAAK,EAAK,GAuEtDC,CArDEhC,CAJEA,GAASgC,CARJA,GAAT,SAAwBuc,CAAM,CAAEC,CAAM,EACnB,KAAK,IAAhBD,GAAmBA,CAAAA,EAAS,IAAA,EACjB,KAAK,IAAhBC,GAAmBA,CAAAA,EAAS,CAAA,EACO,IAAI,CAACD,MAAM,CAAG,IAAIxc,GACxB,IAAI,CAACyc,MAAM,CAAG,EAC/CD,GAAU,IAAI,CAACA,MAAM,CAACtI,QAAQ,CAACsI,GAC/B,IAAI,CAACC,MAAM,CAAGA,CAClB,GAC4B7hB,SAAS,EAI5B8f,KAAK,CAAG,WACb,OAAO,IAAIza,GAAe,IAAI,CAACuc,MAAM,CAAE,IAAI,CAACC,MAAM,CACtD,EAKExe,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EAGxC,OAFA,IAAI,CAACmF,MAAM,CAACtI,QAAQ,CAACmD,EAAOmF,MAAM,EAClC,IAAI,CAACC,MAAM,CAAGpF,EAAOoF,MAAM,CACpB,IAAI,AACf,EAKExc,GAAeyc,UAAU,CAAG,SAAoBC,CAAM,CAAE3B,CAAG,EACzD,GAAI,CAAC2B,GAAUA,AAAkB,IAAlBA,EAAO3iB,MAAM,CACxB,MAAM,AAAIqK,MAAM,4CAEpB,IAAIqX,EAAMiB,EAAO3iB,MAAM,CACnBwiB,EAASvc,GAAe6S,UAAU,AACtC0J,CAAAA,EAAO3Z,CAAC,CAAG2Z,EAAO1Z,CAAC,CAAG0Z,EAAOvZ,CAAC,CAAG,EAEjC,IAAI,IAAIlJ,EAAI,EAAGA,EAAI2hB,EAAK,EAAE3hB,EACtBiG,GAAQ6Z,GAAG,CAAC8C,CAAM,CAAC5iB,EAAE,CAAEyiB,EAAQA,GAGnCxc,GAAQoa,KAAK,CAACoC,EAAQ,EAAId,EAAKV,EAAIwB,MAAM,EAGzC,IAAI,IADAC,EAAS,EACLrV,EAAK,EAAGA,EAAKsU,EAAK,EAAEtU,EAAG,CAC3B,IAAI+M,EAAWnU,GAAQyb,eAAe,CAACe,EAAQG,CAAM,CAACvV,EAAG,CACzD+M,CAAAA,EAAWsI,GAAWA,CAAAA,EAAStI,CAAAA,CACnC,CAEA6G,EAAIyB,MAAM,CAAG5D,KAAKmB,IAAI,CAACyC,EAC3B,EAKExc,GAAe2c,OAAO,CAAG,SAAiBC,CAAG,CAAE7B,CAAG,EAChD,IAAIwB,EAASxB,EAAIwB,MAAM,CACnB7D,EAAMkE,EAAIlE,GAAG,CAAEC,EAAMiE,EAAIjE,GAAG,AAChC4D,CAAAA,EAAO3Z,CAAC,CAAI8V,AAAAA,CAAAA,EAAI9V,CAAC,CAAG+V,EAAI/V,CAAAA,AAAAA,EAAK,GAC7B2Z,EAAO1Z,CAAC,CAAI6V,AAAAA,CAAAA,EAAI7V,CAAC,CAAG8V,EAAI9V,CAAAA,AAAAA,EAAK,GAC7B0Z,EAAOvZ,CAAC,CAAI0V,AAAAA,CAAAA,EAAI1V,CAAC,CAAG2V,EAAI3V,CAAAA,AAAAA,EAAK,GAC7B+X,EAAIyB,MAAM,CAAGzc,GAAQmU,QAAQ,CAACqI,EAAQ5D,EAC1C,EACO3Y,IAGQ6S,UAAU,CAAG,IAAI9S,GAKhC,IAAIE,IAcFjC,CALEA,GAASiC,CARJA,GAAT,SAAqByY,CAAG,CAAEC,CAAG,EACb,KAAK,IAAbD,GAAgBA,CAAAA,EAAM,IAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,IAAA,EACW,IAAI,CAACD,GAAG,CAAG,IAAI3Y,GACf,IAAI,CAAC4Y,GAAG,CAAG,IAAI5Y,GACpD2Y,GAAO,IAAI,CAACA,GAAG,CAACzE,QAAQ,CAACyE,GACzBC,GAAO,IAAI,CAACA,GAAG,CAAC1E,QAAQ,CAAC0E,EAC7B,GACyBhe,SAAS,EAKzBkiB,SAAS,CAAG,SAAmB9B,CAAG,EACvC,IAAkBrC,EAAM9T,AAAZ,IAAI,CAAc8T,GAAG,CAAEC,EAAM/T,AAA7B,IAAI,CAA+B+T,GAAG,CAC9CmE,EAAUnE,EAAIc,EAAE,CAAGf,EAAIe,EAAE,CACzBsD,EAAUpE,EAAIe,EAAE,CAAGhB,EAAIgB,EAAE,CACzBsD,EAAUrE,EAAIgB,EAAE,CAAGjB,EAAIiB,EAAE,CAE7B,OADAoB,EAAI7X,GAAG,CAAC+Z,MAAMH,GAAW,EAAIA,AAAU,GAAVA,EAAeG,MAAMF,GAAW,EAAIA,AAAU,GAAVA,EAAeE,MAAMD,GAAW,EAAIA,AAAU,GAAVA,GAC9FjC,CACX,EAKE/c,GAAOkf,SAAS,CAAG,SAAmBnC,CAAG,EACvC,IAAkBrC,EAAM9T,AAAZ,IAAI,CAAc8T,GAAG,CAAEC,EAAM/T,AAA7B,IAAI,CAA+B+T,GAAG,CAC9CwE,EAAUxE,EAAIc,EAAE,CAAGf,EAAIe,EAAE,CACzB2D,EAAUzE,EAAIe,EAAE,CAAGhB,EAAIgB,EAAE,CACzB2D,EAAU1E,EAAIgB,EAAE,CAAGjB,EAAIiB,EAAE,CAE7B,OADAoB,EAAI7X,GAAG,CAAC+Z,MAAME,GAAW,EAAIA,AAAU,GAAVA,EAAeF,MAAMG,GAAW,EAAIA,AAAU,GAAVA,EAAeH,MAAMI,GAAW,EAAIA,AAAU,GAAVA,GAC9FtC,CACX,EAKE/c,GAAOsf,UAAU,CAAG,SAAoBvC,CAAG,EAC7B,KAAK,IAAbA,GAAgBA,CAAAA,EAAM,EAAE,AAAF,EAC1B,IAAkBrC,EAAM9T,AAAZ,IAAI,CAAc8T,GAAG,CAAEC,EAAM/T,AAA7B,IAAI,CAA+B+T,GAAG,CAC9C4E,EAAO7E,EAAI9V,CAAC,CACZ4a,EAAO9E,EAAI7V,CAAC,CACZ4a,EAAO/E,EAAI1V,CAAC,CACZ0a,EAAO/E,EAAI/V,CAAC,CACZ+a,EAAOhF,EAAI9V,CAAC,CACZ+a,EAAOjF,EAAI3V,CAAC,CACZyY,EAAMV,EAAIhhB,MAAM,CAEpB,GAAI0hB,EAAM,EACN,IAAI,IAAI3hB,EAAI,EAAG+jB,EAAI,EAAIpC,EAAK3hB,EAAI+jB,EAAG,EAAE/jB,EACjCihB,CAAG,CAACU,EAAM3hB,EAAE,CAAG,IAAIiG,GAW3B,OARAgb,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACqa,EAAMI,EAAMC,GACvB7C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACwa,EAAMC,EAAMC,GACvB7C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACwa,EAAMF,EAAMI,GACvB7C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACqa,EAAMC,EAAMI,GACvB7C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACqa,EAAMI,EAAMF,GACvB1C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACwa,EAAMC,EAAMF,GACvB1C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACwa,EAAMF,EAAMC,GACvB1C,CAAG,CAAC,EAAE,CAAC7X,GAAG,CAACqa,EAAMC,EAAMC,GAChB1C,CACX,EAKE/c,GAAOoE,SAAS,CAAG,SAAmBmC,CAAM,EAE1C,OADAtE,GAAYmC,SAAS,CAAC,IAAI,CAAEmC,EAAQ,IAAI,EACjC,IAAI,AACf,EAIEvG,GAAOyc,KAAK,CAAG,WACb,OAAO,IAAIxa,GAAY,IAAI,CAACyY,GAAG,CAAE,IAAI,CAACC,GAAG,CAC7C,EAKE3a,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EAGxC,OAFA,IAAI,CAACsB,GAAG,CAACzE,QAAQ,CAACmD,EAAOsB,GAAG,EAC5B,IAAI,CAACC,GAAG,CAAC1E,QAAQ,CAACmD,EAAOuB,GAAG,EACrB,IAAI,AACf,EAME1Y,GAAY6d,mBAAmB,CAAG,SAA6BvB,CAAM,CAAEwB,CAAM,CAAEhD,CAAG,EAChFhb,GAAQkV,QAAQ,CAACsH,EAAQwB,EAAQhD,EAAIrC,GAAG,EACxC3Y,GAAQ6Z,GAAG,CAAC2C,EAAQwB,EAAQhD,EAAIpC,GAAG,CACvC,EAKE1Y,GAAYwc,UAAU,CAAG,SAAoBC,CAAM,CAAE3B,CAAG,EACtD,GAAI,CAAC2B,GAAUA,AAAkB,IAAlBA,EAAO3iB,MAAM,CACxB,MAAM,AAAIqK,MAAM,4CAEpB,IAAIsU,EAAMqC,EAAIrC,GAAG,CAAEC,EAAMoC,EAAIpC,GAAG,AAChCD,CAAAA,EAAI9V,CAAC,CAAG8V,EAAI7V,CAAC,CAAG6V,EAAI1V,CAAC,CAAGgb,OAAOC,SAAS,CACxCtF,EAAI/V,CAAC,CAAG+V,EAAI9V,CAAC,CAAG8V,EAAI3V,CAAC,CAAG,CAACgb,OAAOC,SAAS,CACzC,IAAI,IAAInkB,EAAI,EAAG+jB,EAAInB,EAAO3iB,MAAM,CAAED,EAAI+jB,EAAG,EAAE/jB,EAAE,CACzC,IAAI6X,EAAQ+K,CAAM,CAAC5iB,EAAE,CACrBiG,GAAQ2Y,GAAG,CAACA,EAAK/G,EAAO+G,GACxB3Y,GAAQ4Y,GAAG,CAACA,EAAKhH,EAAOgH,EAC5B,CACJ,EAKE1Y,GAAYie,UAAU,CAAG,SAAoBC,CAAM,CAAEpD,CAAG,EACtD,IAAIwB,EAAS4B,EAAO5B,MAAM,CAAEC,EAAS2B,EAAO3B,MAAM,CAC9C9D,EAAMqC,EAAIrC,GAAG,CAAEC,EAAMoC,EAAIpC,GAAG,AAChCD,CAAAA,EAAI9V,CAAC,CAAG2Z,EAAO3Z,CAAC,CAAG4Z,EACnB9D,EAAI7V,CAAC,CAAG0Z,EAAO1Z,CAAC,CAAG2Z,EACnB9D,EAAI1V,CAAC,CAAGuZ,EAAOvZ,CAAC,CAAGwZ,EACnB7D,EAAI/V,CAAC,CAAG2Z,EAAO3Z,CAAC,CAAG4Z,EACnB7D,EAAI9V,CAAC,CAAG0Z,EAAO1Z,CAAC,CAAG2Z,EACnB7D,EAAI3V,CAAC,CAAGuZ,EAAOvZ,CAAC,CAAGwZ,CACvB,EAMEvc,GAAYmC,SAAS,CAAG,SAAmBgV,CAAM,CAAE7S,CAAM,CAAEwW,CAAG,EAE5D,IAAIwB,EAAStc,GAAY4S,UAAU,CAC/BkL,EAAS9d,GAAY6S,UAAU,CACnCsE,EAAOyF,SAAS,CAACN,GACjBnF,EAAO8F,SAAS,CAACa,GACjBhe,GAAQua,mBAAmB,CAACiC,EAAQhY,EAAQgY,GAC5C,IAAI3Z,EAAImb,EAAOnb,CAAC,CAAEC,EAAIkb,EAAOlb,CAAC,CAAEG,EAAI+a,EAAO/a,CAAC,CACxCnG,EAAI0H,EAAOmX,QAAQ,CAEnB0C,EAAKvhB,CAAC,CAAC,EAAE,CAAEwhB,EAAKxhB,CAAC,CAAC,EAAE,CAAEyhB,EAAKzhB,CAAC,CAAC,EAAE,CAAE0hB,EAAK1hB,CAAC,CAAC,EAAE,CAAE2hB,EAAK3hB,CAAC,CAAC,EAAE,CAAE4hB,EAAK5hB,CAAC,CAAC,EAAE,CAAE6hB,EAAK7hB,CAAC,CAAC,EAAE,CAAE8hB,EAAK9hB,CAAC,CAAC,EAAE,CAAE+hB,EAAM/hB,CAAC,CAAC,GAAG,CACvGkhB,EAAO7a,GAAG,CAAC,AAACkb,CAAAA,AAAO,IAAPA,EAAW,EAAIxF,KAAKE,GAAG,CAAClW,EAAIwb,EAAE,EAAMG,CAAAA,AAAO,IAAPA,EAAW,EAAI3F,KAAKE,GAAG,CAACjW,EAAI0b,EAAAA,EAAQG,CAAAA,AAAO,IAAPA,EAAW,EAAI9F,KAAKE,GAAG,CAAC9V,EAAI0b,IAAOL,AAAAA,CAAAA,AAAO,IAAPA,EAAW,EAAIzF,KAAKE,GAAG,CAAClW,EAAIyb,EAAAA,EAAQG,CAAAA,AAAO,IAAPA,EAAW,EAAI5F,KAAKE,GAAG,CAACjW,EAAI2b,IAAQG,CAAAA,AAAO,IAAPA,EAAW,EAAI/F,KAAKE,GAAG,CAAC9V,EAAI2b,EAAE,EAAI,AAACL,CAAAA,AAAO,IAAPA,EAAW,EAAI1F,KAAKE,GAAG,CAAClW,EAAI0b,IAAQG,CAAAA,AAAO,IAAPA,EAAW,EAAI7F,KAAKE,GAAG,CAACjW,EAAI4b,EAAE,EAAMG,CAAAA,AAAQ,IAARA,EAAY,EAAIhG,KAAKE,GAAG,CAAC9V,EAAI4b,EAAG,GAE1U7e,GAAQkV,QAAQ,CAACsH,EAAQwB,EAAQhD,EAAIrC,GAAG,EACxC3Y,GAAQ6Z,GAAG,CAAC2C,EAAQwB,EAAQhD,EAAIpC,GAAG,CACvC,EAOE1Y,GAAY4e,KAAK,CAAG,SAAeC,CAAI,CAAEC,CAAI,CAAEhE,CAAG,EAGhD,OAFAhb,GAAQ2Y,GAAG,CAACoG,EAAKpG,GAAG,CAAEqG,EAAKrG,GAAG,CAAEqC,EAAIrC,GAAG,EACvC3Y,GAAQ4Y,GAAG,CAACmG,EAAKnG,GAAG,CAAEoG,EAAKpG,GAAG,CAAEoC,EAAIpC,GAAG,EAChCoC,CACX,EACO9a,GAGPA,CAAAA,GAAY4S,UAAU,CAAG,IAAI9S,GAG7BE,GAAY6S,UAAU,CAAG,IAAI/S,GAK7B,IAAIG,IAQFA,CAPOA,GAAT,cAOgB8e,4BAA4B,CAAG,SAAsCC,CAAE,CAAEC,CAAE,CAAEC,CAAE,CAAEpE,CAAG,EAChG,IAAIqE,EAAQH,EAAGrN,MAAM,CACjByN,EAAQH,EAAGtN,MAAM,CACjB0N,EAAQH,EAAGvN,MAAM,CACrB7R,GAAQ8U,KAAK,CAACwK,EAAOC,EAAOpf,GAAc2S,UAAU,EACpD9S,GAAQ8U,KAAK,CAACyK,EAAOF,EAAOlf,GAAc4S,UAAU,EACpD/S,GAAQ8U,KAAK,CAACuK,EAAOC,EAAOnf,GAAc6S,UAAU,EACpD,IAAIjW,EAAI,CAACiD,GAAQoU,GAAG,CAACiL,EAAOlf,GAAc2S,UAAU,EAChDgG,EAAI,CAAC9Y,GAAQoU,GAAG,CAACkL,EAAOnf,GAAc4S,UAAU,EAChDlX,EAAI,CAACmE,GAAQoU,GAAG,CAACmL,EAAOpf,GAAc6S,UAAU,EACpDhT,GAAQoa,KAAK,CAACja,GAAc2S,UAAU,CAAEoM,EAAG/K,QAAQ,CAAGpX,EAAGoD,GAAc2S,UAAU,EACjF9S,GAAQoa,KAAK,CAACja,GAAc4S,UAAU,CAAEoM,EAAGhL,QAAQ,CAAG2E,EAAG3Y,GAAc4S,UAAU,EACjF/S,GAAQoa,KAAK,CAACja,GAAc6S,UAAU,CAAEoM,EAAGjL,QAAQ,CAAGtY,EAAGsE,GAAc6S,UAAU,EACjFhT,GAAQ6Z,GAAG,CAAC1Z,GAAc2S,UAAU,CAAE3S,GAAc4S,UAAU,CAAEiI,GAChEhb,GAAQ6Z,GAAG,CAACmB,EAAK7a,GAAc6S,UAAU,CAAEgI,EAC/C,EAME7a,GAAcqf,qBAAqB,CAAG,SAA+BjN,CAAK,CAAEX,CAAK,EAC/E,OAAO5R,GAAQoU,GAAG,CAAC7B,EAAMV,MAAM,CAAED,GAASW,EAAM4B,QAAQ,AAC5D,EAMEhU,GAAcsf,uBAAuB,CAAG,SAAiClN,CAAK,CAAEX,CAAK,EACnF,IAAIuC,EAAWhU,GAAcqf,qBAAqB,CAACjN,EAAOX,UAC1D,AAAIuC,EAAW,EACJtU,GAAsB6f,KAAK,CAElCvL,EAAW,EACJtU,GAAsB8f,IAAI,CAE9B9f,GAAsB+f,YAAY,AAC7C,EAMEzf,GAAc0f,qBAAqB,CAAG,SAA+BtN,CAAK,CAAEsK,CAAG,EAC7E,IAAIlE,EAAMkE,EAAIlE,GAAG,CAAEC,EAAMiE,EAAIjE,GAAG,CAC5B/G,EAASU,EAAMV,MAAM,CACrBiO,EAAQ3f,GAAc2S,UAAU,CAChCiN,EAAO5f,GAAc4S,UAAU,OAsBnC,CArBIlB,EAAOhP,CAAC,EAAI,GACZid,EAAMjd,CAAC,CAAG+V,EAAI/V,CAAC,CACfkd,EAAKld,CAAC,CAAG8V,EAAI9V,CAAC,GAEdid,EAAMjd,CAAC,CAAG8V,EAAI9V,CAAC,CACfkd,EAAKld,CAAC,CAAG+V,EAAI/V,CAAC,EAEdgP,EAAO/O,CAAC,EAAI,GACZgd,EAAMhd,CAAC,CAAG8V,EAAI9V,CAAC,CACfid,EAAKjd,CAAC,CAAG6V,EAAI7V,CAAC,GAEdgd,EAAMhd,CAAC,CAAG6V,EAAI7V,CAAC,CACfid,EAAKjd,CAAC,CAAG8V,EAAI9V,CAAC,EAEd+O,EAAO5O,CAAC,EAAI,GACZ6c,EAAM7c,CAAC,CAAG2V,EAAI3V,CAAC,CACf8c,EAAK9c,CAAC,CAAG0V,EAAI1V,CAAC,GAEd6c,EAAM7c,CAAC,CAAG0V,EAAI1V,CAAC,CACf8c,EAAK9c,CAAC,CAAG2V,EAAI3V,CAAC,EAEd9C,AAAoD,EAApDA,GAAcqf,qBAAqB,CAACjN,EAAOuN,IACpCjgB,GAAsB8f,IAAI,CAEjCxf,GAAcqf,qBAAqB,CAACjN,EAAOwN,GAAQ,EAC5ClgB,GAAsB6f,KAAK,CAE/B7f,GAAsB+f,YAAY,AAC7C,EAMEzf,GAAc6f,wBAAwB,CAAG,SAAkCzN,CAAK,CAAE6L,CAAM,EACtF,IAAI5B,EAAS4B,EAAO5B,MAAM,CAAEC,EAAS2B,EAAO3B,MAAM,CAC9CtI,EAAWhU,GAAcqf,qBAAqB,CAACjN,EAAOiK,UAC1D,AAAIrI,EAAWsI,EACJ5c,GAAsB6f,KAAK,CAElCvL,EAAW,CAACsI,EACL5c,GAAsB8f,IAAI,CAE9B9f,GAAsB+f,YAAY,AAC7C,EAMEzf,GAAc8f,qBAAqB,CAAG,SAA+B5M,CAAG,CAAEd,CAAK,EAC7E,IAAIV,EAASU,EAAMV,MAAM,CACrBmH,EAAgBjZ,GAASiZ,aAAa,CACtCkH,EAAMlgB,GAAQoU,GAAG,CAACvC,EAAQwB,EAAI8M,SAAS,EAE3C,GAAItH,KAAKE,GAAG,CAACmH,GAAOlH,EAChB,OAAO,GAEX,IAAIxW,EAAWxC,GAAQoU,GAAG,CAACvC,EAAQwB,EAAI+M,MAAM,EACzCjM,EAAW,AAAC,CAAA,CAAC5B,EAAM4B,QAAQ,CAAG3R,CAAAA,EAAY0d,EAC9C,GAAI/L,EAAW,EAAG,CACd,GAAIA,EAAW,CAAC6E,EACZ,OAAO,GAEX7E,EAAW,CACf,CACA,OAAOA,CACX,EAMEhU,GAAckgB,mBAAmB,CAAG,SAA6BhN,CAAG,CAAEwJ,CAAG,EACvE,IAAI7D,EAAgBjZ,GAASiZ,aAAa,CACtCoH,EAAS/M,EAAI+M,MAAM,CAAED,EAAY9M,EAAI8M,SAAS,CAC9CxH,EAAMkE,EAAIlE,GAAG,CAAEC,EAAMiE,EAAIjE,GAAG,CAC5B0H,EAAOH,EAAUtd,CAAC,CAClB0d,EAAOJ,EAAUrd,CAAC,CAClB0d,EAAOL,EAAUld,CAAC,CAClBwd,EAAOL,EAAOvd,CAAC,CACf6d,EAAON,EAAOtd,CAAC,CACf6d,EAAOP,EAAOnd,CAAC,CACfkR,EAAW,EACXyM,EAAO3C,OAAOC,SAAS,CAC3B,GAAIrF,KAAKE,GAAG,CAACuH,GAAQtH,EACjB,CAAA,GAAIyH,EAAO9H,EAAI9V,CAAC,EAAI4d,EAAO7H,EAAI/V,CAAC,CAC5B,OAAO,EACX,KACG,CACH,IAAIge,EAAU,EAAMP,EAChBQ,EAAK,AAACnI,CAAAA,EAAI9V,CAAC,CAAG4d,CAAAA,EAAQI,EACtBE,EAAK,AAACnI,CAAAA,EAAI/V,CAAC,CAAG4d,CAAAA,EAAQI,EAC1B,GAAIC,EAAKC,EAAI,CACT,IAAIC,EAAOF,EACXA,EAAKC,EACLA,EAAKC,CACT,CAGA,GAAI7M,AAFJA,CAAAA,EAAW0E,KAAKD,GAAG,CAACkI,EAAI3M,EAAAA,EACxByM,CAAAA,EAAO/H,KAAKF,GAAG,CAACoI,EAAIH,EAAAA,EAEhB,OAAO,EAEf,CACA,GAAI/H,KAAKE,GAAG,CAACwH,GAAQvH,EACjB,CAAA,GAAI0H,EAAO/H,EAAI7V,CAAC,EAAI4d,EAAO9H,EAAI9V,CAAC,CAC5B,OAAO,EACX,KACG,CACH,IAAIme,EAAW,EAAMV,EACjBW,EAAM,AAACvI,CAAAA,EAAI7V,CAAC,CAAG4d,CAAAA,EAAQO,EACvBE,EAAM,AAACvI,CAAAA,EAAI9V,CAAC,CAAG4d,CAAAA,EAAQO,EAC3B,GAAIC,EAAMC,EAAK,CACX,IAAIC,EAAQF,EACZA,EAAMC,EACNA,EAAMC,CACV,CAGA,GAAIjN,AAFJA,CAAAA,EAAW0E,KAAKD,GAAG,CAACsI,EAAK/M,EAAAA,EACzByM,CAAAA,EAAO/H,KAAKF,GAAG,CAACwI,EAAKP,EAAAA,EAEjB,OAAO,EAEf,CACA,GAAI/H,KAAKE,GAAG,CAACyH,GAAQxH,EACjB,CAAA,GAAI2H,EAAOhI,EAAI1V,CAAC,EAAI0d,EAAO/H,EAAI3V,CAAC,CAC5B,OAAO,EACX,KACG,CACH,IAAIoe,EAAW,EAAMb,EACjBc,EAAM,AAAC3I,CAAAA,EAAI1V,CAAC,CAAG0d,CAAAA,EAAQU,EACvBE,EAAM,AAAC3I,CAAAA,EAAI3V,CAAC,CAAG0d,CAAAA,EAAQU,EAC3B,GAAIC,EAAMC,EAAK,CACX,IAAIC,EAAQF,EACZA,EAAMC,EACNA,EAAMC,CACV,CAGA,GAAIrN,AAFJA,CAAAA,EAAW0E,KAAKD,GAAG,CAAC0I,EAAKnN,EAAAA,EACzByM,CAAAA,EAAO/H,KAAKF,GAAG,CAAC4I,EAAKX,EAAAA,EAEjB,OAAO,EAEf,CACA,OAAOzM,CACX,EAMEhU,GAAcshB,sBAAsB,CAAG,SAAgCpO,CAAG,CAAE+K,CAAM,EAChF,IAAIgC,EAAS/M,EAAI+M,MAAM,CAAED,EAAY9M,EAAI8M,SAAS,CAC9C3D,EAAS4B,EAAO5B,MAAM,CAAEC,EAAS2B,EAAO3B,MAAM,CAC9CnC,EAAIna,GAAc2S,UAAU,CAChC9S,GAAQkV,QAAQ,CAACkL,EAAQ5D,EAAQlC,GACjC,IAAIxB,EAAI9Y,GAAQoU,GAAG,CAACkG,EAAG6F,GACnBtkB,EAAImE,GAAQoU,GAAG,CAACkG,EAAGA,GAAKmC,EAASA,EACrC,GAAI3D,EAAI,GAAKjd,EAAI,EACb,OAAO,GAEX,IAAI6lB,EAAe5I,EAAIA,EAAIjd,EAC3B,GAAI6lB,EAAe,EACf,OAAO,GAEX,IAAIvN,EAAW,CAAC2E,EAAID,KAAKmB,IAAI,CAAC0H,GAI9B,OAHIvN,EAAW,GACXA,CAAAA,EAAW,CAAA,EAERA,CACX,EAMEhU,GAAcwhB,mBAAmB,CAAG,SAA6BC,CAAI,CAAEC,CAAI,QACzE,CAAID,CAAAA,EAAKjJ,GAAG,CAAC9V,CAAC,CAAGgf,EAAKjJ,GAAG,CAAC/V,CAAC,AAADA,IAAKgf,CAAAA,EAAKlJ,GAAG,CAAC9V,CAAC,CAAG+e,EAAKhJ,GAAG,CAAC/V,CAAC,AAADA,IAGjD+e,CAAAA,EAAKjJ,GAAG,CAAC7V,CAAC,CAAG+e,EAAKjJ,GAAG,CAAC9V,CAAC,AAADA,IAAK+e,CAAAA,EAAKlJ,GAAG,CAAC7V,CAAC,CAAG8e,EAAKhJ,GAAG,CAAC9V,CAAC,AAADA,GAG9C,CAAE8e,CAAAA,EAAKjJ,GAAG,CAAC1V,CAAC,CAAG4e,EAAKjJ,GAAG,CAAC3V,CAAC,EAAI4e,EAAKlJ,GAAG,CAAC1V,CAAC,CAAG2e,EAAKhJ,GAAG,CAAC3V,CAAC,AAADA,CAC9D,EAME9C,GAAc2hB,yBAAyB,CAAG,SAAmCC,CAAO,CAAEC,CAAO,EAC3F,IAAIC,EAAWF,EAAQtF,MAAM,CAAGuF,EAAQvF,MAAM,CAC9C,OAAOzc,GAAQyb,eAAe,CAACsG,EAAQvF,MAAM,CAAEwF,EAAQxF,MAAM,EAAIyF,EAAWA,CAChF,EAME9hB,GAAc+hB,sBAAsB,CAAG,SAAgC9D,CAAM,CAAEvB,CAAG,EAChF,IAAIL,EAAS4B,EAAO5B,MAAM,CACtB5D,EAAMiE,EAAIjE,GAAG,CACbD,EAAMkE,EAAIlE,GAAG,CACbwJ,EAAehiB,GAAc2S,UAAU,CAG3C,OAFAqP,EAAahf,GAAG,CAAC0V,KAAKD,GAAG,CAACD,EAAI9V,CAAC,CAAEgW,KAAKF,GAAG,CAAC6D,EAAO3Z,CAAC,CAAE+V,EAAI/V,CAAC,GAAIgW,KAAKD,GAAG,CAACD,EAAI7V,CAAC,CAAE+V,KAAKF,GAAG,CAAC6D,EAAO1Z,CAAC,CAAE8V,EAAI9V,CAAC,GAAI+V,KAAKD,GAAG,CAACD,EAAI1V,CAAC,CAAE4V,KAAKF,GAAG,CAAC6D,EAAOvZ,CAAC,CAAE2V,EAAI3V,CAAC,IAE1IkR,AADQnU,GAAQyb,eAAe,CAACe,EAAQ2F,IAC5B/D,EAAO3B,MAAM,CAAG2B,EAAO3B,MAAM,AACpD,EAMEtc,GAAciiB,uBAAuB,CAAG,SAAiCC,CAAO,CAAExF,CAAG,EAGnF,IAAI,IAFAlE,EAAMkE,EAAIlE,GAAG,CAAEC,EAAMiE,EAAIjE,GAAG,CAC5B7d,EAAIoF,GAAc2S,UAAU,CACxB/Y,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAE,CACtB,IAAIwY,EAAQ8P,EAAQC,QAAQ,CAACvoB,GACzB8X,EAASU,EAAMV,MAAM,CAEzB,GADA9W,EAAEoI,GAAG,CAAC0O,EAAOhP,CAAC,EAAI,EAAI+V,EAAI/V,CAAC,CAAG8V,EAAI9V,CAAC,CAAEgP,EAAO/O,CAAC,EAAI,EAAI8V,EAAI9V,CAAC,CAAG6V,EAAI7V,CAAC,CAAE+O,EAAO5O,CAAC,EAAI,EAAI2V,EAAI3V,CAAC,CAAG0V,EAAI1V,CAAC,EAC7FjD,GAAQoU,GAAG,CAACvC,EAAQ9W,GAAK,CAACwX,EAAM4B,QAAQ,CACxC,MAAO,CAAA,CAEf,CACA,MAAO,CAAA,CACX,EAMEhU,GAAcoiB,oBAAoB,CAAG,SAA8BF,CAAO,CAAEzQ,CAAK,EAC/E,IAAIuC,EAAWhU,GAAcqf,qBAAqB,CAAC6C,EAAQG,IAAI,CAAE5Q,UACjE,AAAIiH,KAAKE,GAAG,CAAC5E,GAAYpU,GAASiZ,aAAa,CACpCpZ,GAAgB6iB,UAAU,CAC1BtO,EAAW,EACXvU,GAAgB8iB,QAAQ,CAG/B7J,KAAKE,GAAG,CADZ5E,EAAWhU,GAAcqf,qBAAqB,CAAC6C,EAAQM,GAAG,CAAE/Q,IACnC7R,GAASiZ,aAAa,CACpCpZ,GAAgB6iB,UAAU,CAC1BtO,EAAW,EACXvU,GAAgB8iB,QAAQ,CAG/B7J,KAAKE,GAAG,CADZ5E,EAAWhU,GAAcqf,qBAAqB,CAAC6C,EAAQ/kB,IAAI,CAAEsU,IACpC7R,GAASiZ,aAAa,CACpCpZ,GAAgB6iB,UAAU,CAC1BtO,EAAW,EACXvU,GAAgB8iB,QAAQ,CAG/B7J,KAAKE,GAAG,CADZ5E,EAAWhU,GAAcqf,qBAAqB,CAAC6C,EAAQ9kB,KAAK,CAAEqU,IACrC7R,GAASiZ,aAAa,CACpCpZ,GAAgB6iB,UAAU,CAC1BtO,EAAW,EACXvU,GAAgB8iB,QAAQ,CAG/B7J,KAAKE,GAAG,CADZ5E,EAAWhU,GAAcqf,qBAAqB,CAAC6C,EAAQO,GAAG,CAAEhR,IACnC7R,GAASiZ,aAAa,CACpCpZ,GAAgB6iB,UAAU,CAC1BtO,EAAW,EACXvU,GAAgB8iB,QAAQ,CAG/B7J,KAAKE,GAAG,CADZ5E,EAAWhU,GAAcqf,qBAAqB,CAAC6C,EAAQQ,MAAM,CAAEjR,IACtC7R,GAASiZ,aAAa,CACpCpZ,GAAgB6iB,UAAU,CAC1BtO,EAAW,EACXvU,GAAgB8iB,QAAQ,CAE5B9iB,GAAgBkjB,QAAQ,AACnC,EAME3iB,GAAc4iB,kBAAkB,CAAG,SAA4BV,CAAO,CAAExF,CAAG,EAKzE,IAAI,IAJAlE,EAAMkE,EAAIlE,GAAG,CAAEC,EAAMiE,EAAIjE,GAAG,CAC5B7d,EAAIoF,GAAc2S,UAAU,CAC5B3Q,EAAIhC,GAAc4S,UAAU,CAC5BO,EAAS1T,GAAgBkjB,QAAQ,CAC7B/oB,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAE,CACtB,IAAIwY,EAAQ8P,EAAQC,QAAQ,CAACvoB,GACzB8X,EAASU,EAAMV,MAAM,CAsBzB,GArBIA,EAAOhP,CAAC,EAAI,GACZ9H,EAAE8H,CAAC,CAAG+V,EAAI/V,CAAC,CACXV,EAAEU,CAAC,CAAG8V,EAAI9V,CAAC,GAEX9H,EAAE8H,CAAC,CAAG8V,EAAI9V,CAAC,CACXV,EAAEU,CAAC,CAAG+V,EAAI/V,CAAC,EAEXgP,EAAO/O,CAAC,EAAI,GACZ/H,EAAE+H,CAAC,CAAG8V,EAAI9V,CAAC,CACXX,EAAEW,CAAC,CAAG6V,EAAI7V,CAAC,GAEX/H,EAAE+H,CAAC,CAAG6V,EAAI7V,CAAC,CACXX,EAAEW,CAAC,CAAG8V,EAAI9V,CAAC,EAEX+O,EAAO5O,CAAC,EAAI,GACZlI,EAAEkI,CAAC,CAAG2V,EAAI3V,CAAC,CACXd,EAAEc,CAAC,CAAG0V,EAAI1V,CAAC,GAEXlI,EAAEkI,CAAC,CAAG0V,EAAI1V,CAAC,CACXd,EAAEc,CAAC,CAAG2V,EAAI3V,CAAC,EAEX9C,GAAcsf,uBAAuB,CAAClN,EAAOxX,KAAO8E,GAAsB8f,IAAI,CAC9E,OAAO/f,GAAgB8iB,QAAQ,CAE/BviB,GAAcsf,uBAAuB,CAAClN,EAAOpQ,KAAOtC,GAAsB8f,IAAI,EAC9ErM,CAAAA,EAAS1T,GAAgB6iB,UAAU,CAE3C,CACA,OAAOnP,CACX,EAMEnT,GAAc6iB,qBAAqB,CAAG,SAA+BX,CAAO,CAAEjE,CAAM,EAElF,IAAI,IADA9K,EAAS1T,GAAgBkjB,QAAQ,CAC7B/oB,EAAI,EAAGA,EAAI,EAAG,EAAEA,EAAE,CACtB,IAAIwY,EAAQ8P,EAAQC,QAAQ,CAACvoB,GACzBkpB,EAAmB9iB,GAAc6f,wBAAwB,CAACzN,EAAO6L,GACrE,GAAI6E,IAAqBpjB,GAAsB8f,IAAI,CAC/C,OAAO/f,GAAgB8iB,QAAQ,CAC5B,GAAIO,IAAqBpjB,GAAsB+f,YAAY,CAAE,CAChEtM,EAAS1T,GAAgB6iB,UAAU,CACnC,KACJ,CACJ,CACA,OAAOnP,CACX,EACOnT,GAGPA,CAAAA,GAAc2S,UAAU,CAAG,IAAI9S,GAG/BG,GAAc4S,UAAU,CAAG,IAAI/S,GAG/BG,GAAc6S,UAAU,CAAG,IAAIhT,GAiN/B,IAAII,IA4CFnC,CAbEA,GAASmC,CA9BJA,GAAT,SAAmB8iB,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,EAC9C,KAAK,IAAbR,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EAS5B,IAAI,CAAC/H,QAAQ,CAAG,IAAIgI,aAAa,GAC/B,IAAI7mB,EAAI,IAAI,CAAC6e,QAAQ,AACrB7e,CAAAA,CAAC,CAAC,EAAE,CAAGomB,EACPpmB,CAAC,CAAC,EAAE,CAAGqmB,EACPrmB,CAAC,CAAC,EAAE,CAAGsmB,EACPtmB,CAAC,CAAC,EAAE,CAAGumB,EACPvmB,CAAC,CAAC,EAAE,CAAGwmB,EACPxmB,CAAC,CAAC,EAAE,CAAGymB,EACPzmB,CAAC,CAAC,EAAE,CAAG0mB,EACP1mB,CAAC,CAAC,EAAE,CAAG2mB,EACP3mB,CAAC,CAAC,EAAE,CAAG4mB,CACX,GACuB9oB,SAAS,EAavBuI,GAAG,CAAG,SAAa+f,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,EACnE,IAAI5mB,EAAI,IAAI,CAAC6e,QAAQ,CAUrB,OATA7e,CAAC,CAAC,EAAE,CAAGomB,EACPpmB,CAAC,CAAC,EAAE,CAAGqmB,EACPrmB,CAAC,CAAC,EAAE,CAAGsmB,EACPtmB,CAAC,CAAC,EAAE,CAAGumB,EACPvmB,CAAC,CAAC,EAAE,CAAGwmB,EACPxmB,CAAC,CAAC,EAAE,CAAGymB,EACPzmB,CAAC,CAAC,EAAE,CAAG0mB,EACP1mB,CAAC,CAAC,EAAE,CAAG2mB,EACP3mB,CAAC,CAAC,EAAE,CAAG4mB,EACA,IAAI,AACf,EAKEzlB,GAAO4b,GAAG,CAAG,SAAatc,CAAK,EAE7B,OADA6C,GAAUyZ,GAAG,CAAC,IAAI,CAAEtc,EAAO,IAAI,EACxB,IAAI,AACf,EAKEU,GAAOiX,QAAQ,CAAG,SAAkB3X,CAAK,EAEvC,OADA6C,GAAU8U,QAAQ,CAAC,IAAI,CAAE3X,EAAO,IAAI,EAC7B,IAAI,AACf,EAKEU,GAAO6b,QAAQ,CAAG,SAAkBvc,CAAK,EAEvC,OADA6C,GAAU0Z,QAAQ,CAAC,IAAI,CAAEvc,EAAO,IAAI,EAC7B,IAAI,AACf,EAIEU,GAAO2lB,WAAW,CAAG,WACnB,IAAI9mB,EAAI,IAAI,CAAC6e,QAAQ,CACjBkI,EAAM/mB,CAAC,CAAC,EAAE,CAAEgnB,EAAMhnB,CAAC,CAAC,EAAE,CAAEinB,EAAMjnB,CAAC,CAAC,EAAE,CAClCknB,EAAMlnB,CAAC,CAAC,EAAE,CAAEmnB,EAAMnnB,CAAC,CAAC,EAAE,CAAEonB,EAAMpnB,CAAC,CAAC,EAAE,CAClCqnB,EAAMrnB,CAAC,CAAC,EAAE,CAAEsnB,EAAMtnB,CAAC,CAAC,EAAE,CAAEunB,EAAMvnB,CAAC,CAAC,EAAE,CAItC,OAAO+mB,EAHGQ,CAAAA,EAAMJ,EAAMC,EAAME,CAAAA,EAGTN,EAFT,CAAA,CAACO,EAAML,EAAME,EAAMC,CAAAA,EAEEJ,EADrBK,CAAAA,EAAMJ,EAAMC,EAAME,CAAAA,CAEhC,EAIElmB,GAAOqmB,QAAQ,CAAG,WAChB,IAAIxnB,EAAI,IAAI,CAAC6e,QAAQ,CAUrB,OATA7e,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACA,IAAI,AACf,EAIEmB,GAAOsmB,MAAM,CAAG,WAEd,OADAnkB,GAAUmkB,MAAM,CAAC,IAAI,CAAE,IAAI,EACpB,IAAI,AACf,EAKEtmB,GAAOumB,MAAM,CAAG,SAAgBzoB,CAAC,EAE/B,OADAqE,GAAUokB,MAAM,CAAC,IAAI,CAAEzoB,EAAG,IAAI,EACvB,IAAI,AACf,EAKEkC,GAAOmc,KAAK,CAAG,SAAeC,CAAC,EAE7B,OADAja,GAAUga,KAAK,CAAC,IAAI,CAAEC,EAAG,IAAI,EACtB,IAAI,AACf,EAKEpc,GAAOwmB,SAAS,CAAG,SAAmBC,CAAW,EAE/C,OADAtkB,GAAUqkB,SAAS,CAAC,IAAI,CAAEC,EAAa,IAAI,EACpC,IAAI,AACf,EAIEzmB,GAAO0mB,SAAS,CAAG,WAEjB,OADAvkB,GAAUukB,SAAS,CAAC,IAAI,CAAE,IAAI,EACvB,IAAI,AACf,EAIE1mB,GAAOyc,KAAK,CAAG,WACb,IAAI5d,EAAI,IAAI,CAAC6e,QAAQ,CAErB,OADU,IAAIvb,GAAUtD,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAEhF,EAKEmB,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EACxC,IAAIva,EAAI,IAAI,CAAC6e,QAAQ,CACjBiJ,EAAKvN,EAAOsE,QAAQ,CAUxB,OATA7e,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACL,IAAI,AACf,EAME3mB,GAAO2c,aAAa,CAAG,SAAuBC,CAAK,CAAEC,CAAM,EAC1C,KAAK,IAAhBA,GAAmBA,CAAAA,EAAS,CAAA,EAEhC,IAAI,IADA+J,EAAO,IAAI,CAAClJ,QAAQ,CAChB5hB,EAAI,EAAGA,EAAI,GAAIA,IACnB8qB,CAAI,CAAC9qB,EAAE,CAAG8gB,CAAK,CAAC9gB,EAAI+gB,EAAO,CAE/B,OAAO,IAAI,AACf,EAKE7c,GAAO8c,WAAW,CAAG,SAAqBC,CAAG,CAAEC,CAAS,EACpC,KAAK,IAAnBA,GAAsBA,CAAAA,EAAY,CAAA,EACtC,IAAIne,EAAI,IAAI,CAAC6e,QAAQ,AACrBX,CAAAA,CAAG,CAACC,EAAU,CAAGne,CAAC,CAAC,EAAE,CACrBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,AAC7B,EAMEmB,GAAO6mB,cAAc,CAAG,SAAwBzN,CAAM,EACpD,IAAI0N,EAAK1N,EAAOsE,QAAQ,CACpB7e,EAAI,IAAI,CAAC6e,QAAQ,CAUrB,OATA7e,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,EAAE,CACZjoB,CAAC,CAAC,EAAE,CAAGioB,CAAE,CAAC,GAAG,CACN,IAAI,AACf,EAME3kB,GAAUyZ,GAAG,CAAG,SAAavc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAC3C,IAAIgK,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACnBuJ,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,AACzB,EAME7kB,GAAU8U,QAAQ,CAAG,SAAkB5X,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACrD,IAAIgK,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACnBuJ,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,AACzB,EAME7kB,GAAU0Z,QAAQ,CAAG,SAAkBxc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACrD,IAAIgK,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACnBuJ,EAAKlK,EAAIW,QAAQ,CACjBwJ,EAAMH,CAAE,CAAC,EAAE,CAAEI,EAAMJ,CAAE,CAAC,EAAE,CAAEK,EAAML,CAAE,CAAC,EAAE,CACrCM,EAAMN,CAAE,CAAC,EAAE,CAAEO,EAAMP,CAAE,CAAC,EAAE,CAAEQ,EAAMR,CAAE,CAAC,EAAE,CACrCS,EAAMT,CAAE,CAAC,EAAE,CAAEU,EAAMV,CAAE,CAAC,EAAE,CAAEW,EAAMX,CAAE,CAAC,EAAE,CACrCY,EAAMX,CAAE,CAAC,EAAE,CAAEY,EAAMZ,CAAE,CAAC,EAAE,CAAEa,EAAMb,CAAE,CAAC,EAAE,CACrCc,EAAMd,CAAE,CAAC,EAAE,CAAEe,EAAMf,CAAE,CAAC,EAAE,CAAEgB,EAAMhB,CAAE,CAAC,EAAE,CACrCiB,EAAMjB,CAAE,CAAC,EAAE,CAAEkB,EAAMlB,CAAE,CAAC,EAAE,CAAEmB,EAAMnB,CAAE,CAAC,EAAE,AACzCC,CAAAA,CAAE,CAAC,EAAE,CAAGC,EAAMS,EAAMN,EAAMO,EAAMJ,EAAMK,EACtCZ,CAAE,CAAC,EAAE,CAAGE,EAAMQ,EAAML,EAAMM,EAAMH,EAAMI,EACtCZ,CAAE,CAAC,EAAE,CAAGG,EAAMO,EAAMJ,EAAMK,EAAMF,EAAMG,EACtCZ,CAAE,CAAC,EAAE,CAAGC,EAAMY,EAAMT,EAAMU,EAAMP,EAAMQ,EACtCf,CAAE,CAAC,EAAE,CAAGE,EAAMW,EAAMR,EAAMS,EAAMN,EAAMO,EACtCf,CAAE,CAAC,EAAE,CAAGG,EAAMU,EAAMP,EAAMQ,EAAML,EAAMM,EACtCf,CAAE,CAAC,EAAE,CAAGC,EAAMe,EAAMZ,EAAMa,EAAMV,EAAMW,EACtClB,CAAE,CAAC,EAAE,CAAGE,EAAMc,EAAMX,EAAMY,EAAMT,EAAMU,EACtClB,CAAE,CAAC,EAAE,CAAGG,EAAMa,EAAMV,EAAMW,EAAMR,EAAMS,CAC1C,EAMEhmB,GAAUgD,MAAM,CAAG,SAAgB9F,CAAI,CAAEC,CAAK,EAC5C,IAAIynB,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACvB,OAAO5b,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,CAC/S,EAOE7kB,GAAUkZ,IAAI,CAAG,SAAc3O,CAAK,CAAEoC,CAAG,CAAEwM,CAAC,CAAEyB,CAAG,EAC/C,IAAI4J,EAAKja,EAAMgR,QAAQ,CACnB0K,EAAKtZ,EAAI4O,QAAQ,CACjBuJ,EAAKlK,EAAIW,QAAQ,CACjB2K,EAAM,EAAM/M,CAChB2L,CAAAA,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,CAClC,EAKEnZ,GAAUqC,kBAAkB,CAAG,SAA4BgY,CAAU,CAAEO,CAAG,EACxE,IAAIkK,EAAKlK,EAAIW,QAAQ,CACjB9Y,EAAI4X,EAAWf,EAAE,CAAE5W,EAAI2X,EAAWd,EAAE,CAAE1W,EAAIwX,EAAWb,EAAE,CAAE1W,EAAIuX,EAAWoB,EAAE,CAC1E0K,EAAK1jB,EAAIA,EACT2jB,EAAK1jB,EAAIA,EACT2jB,EAAKxjB,EAAIA,EACTyjB,EAAK7jB,EAAI0jB,EACTI,EAAK7jB,EAAIyjB,EACTK,EAAK9jB,EAAI0jB,EACTK,EAAK5jB,EAAIsjB,EACTO,EAAK7jB,EAAIujB,EACTO,EAAK9jB,EAAIwjB,EACTO,EAAK9jB,EAAIqjB,EACTU,EAAK/jB,EAAIsjB,EACTU,EAAKhkB,EAAIujB,CACbvB,CAAAA,CAAE,CAAC,EAAE,CAAG,EAAI0B,EAAKG,EACjB7B,CAAE,CAAC,EAAE,CAAGyB,EAAKO,EACbhC,CAAE,CAAC,EAAE,CAAG2B,EAAKI,EACb/B,CAAE,CAAC,EAAE,CAAGyB,EAAKO,EACbhC,CAAE,CAAC,EAAE,CAAG,EAAIwB,EAAKK,EACjB7B,CAAE,CAAC,EAAE,CAAG4B,EAAKE,EACb9B,CAAE,CAAC,EAAE,CAAG2B,EAAKI,EACb/B,CAAE,CAAC,EAAE,CAAG4B,EAAKE,EACb9B,CAAE,CAAC,EAAE,CAAG,EAAIwB,EAAKE,CACrB,EAKExmB,GAAU+mB,OAAO,CAAG,SAAiB9M,CAAC,CAAEW,CAAG,EACzC,IAAIkK,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAG7K,EAAEX,EAAE,CACZwL,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG7K,EAAEV,EAAE,CACZuL,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,CACZ,EAKE9kB,GAAUskB,WAAW,CAAG,SAAqBA,CAAW,CAAE1J,CAAG,EAC3D,IAAIkK,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAGR,EAAYhL,EAAE,CACtBwL,CAAE,CAAC,EAAE,CAAGR,EAAY/K,EAAE,CACtBuL,CAAE,CAAC,EAAE,CAAG,CACZ,EAKE9kB,GAAUmkB,MAAM,CAAG,SAAgBxnB,CAAC,CAAEie,CAAG,EACvC,IAAI+J,EAAKhoB,EAAE4e,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACjBkI,EAAMkB,CAAE,CAAC,EAAE,CAAEjB,EAAMiB,CAAE,CAAC,EAAE,CAAEhB,EAAMgB,CAAE,CAAC,EAAE,CACrCf,EAAMe,CAAE,CAAC,EAAE,CAAEd,EAAMc,CAAE,CAAC,EAAE,CAAEb,EAAMa,CAAE,CAAC,EAAE,CACrCZ,EAAMY,CAAE,CAAC,EAAE,CAAEX,EAAMW,CAAE,CAAC,EAAE,CAAEV,EAAMU,CAAE,CAAC,EAAE,CACrCqC,EAAM/C,EAAMJ,EAAMC,EAAME,EACxBiD,EAAM,CAAChD,EAAML,EAAME,EAAMC,EACzBmD,EAAMlD,EAAMJ,EAAMC,EAAME,EACxBoD,EAAM1D,EAAMuD,EAAMtD,EAAMuD,EAAMtD,EAAMuD,EACnCC,IAGLA,EAAM,EAAMA,EACZrC,CAAE,CAAC,EAAE,CAAGkC,EAAMG,EACdrC,CAAE,CAAC,EAAE,CAAG,AAAC,CAAA,CAACb,EAAMP,EAAMC,EAAMK,CAAE,EAAKmD,EACnCrC,CAAE,CAAC,EAAE,CAAIhB,AAAAA,CAAAA,EAAMJ,EAAMC,EAAME,CAAE,EAAKsD,EAClCrC,CAAE,CAAC,EAAE,CAAGmC,EAAME,EACdrC,CAAE,CAAC,EAAE,CAAIb,AAAAA,CAAAA,EAAMR,EAAME,EAAMI,CAAE,EAAKoD,EAClCrC,CAAE,CAAC,EAAE,CAAG,AAAC,CAAA,CAAChB,EAAML,EAAME,EAAMC,CAAE,EAAKuD,EACnCrC,CAAE,CAAC,EAAE,CAAGoC,EAAMC,EACdrC,CAAE,CAAC,EAAE,CAAG,AAAC,CAAA,CAACd,EAAMP,EAAMC,EAAMK,CAAE,EAAKoD,EACnCrC,CAAE,CAAC,EAAE,CAAIjB,AAAAA,CAAAA,EAAMJ,EAAMC,EAAME,CAAE,EAAKuD,EACtC,EAMEnnB,GAAUonB,YAAY,CAAG,SAAsBC,CAAI,CAAEzM,CAAG,EACtD,IAAI+J,EAAK0C,EAAK9L,QAAQ,CAClBuJ,EAAKlK,EAAIW,QAAQ,CACjBkI,EAAMkB,CAAE,CAAC,EAAE,CAAEjB,EAAMiB,CAAE,CAAC,EAAE,CAAEhB,EAAMgB,CAAE,CAAC,EAAE,CAAE2C,EAAM3C,CAAE,CAAC,EAAE,CAClDf,EAAMe,CAAE,CAAC,EAAE,CAAEd,EAAMc,CAAE,CAAC,EAAE,CAAEb,EAAMa,CAAE,CAAC,EAAE,CAAE4C,EAAM5C,CAAE,CAAC,EAAE,CAClDZ,EAAMY,CAAE,CAAC,EAAE,CAAEX,EAAMW,CAAE,CAAC,EAAE,CAAEV,EAAMU,CAAE,CAAC,GAAG,CAAE6C,EAAM7C,CAAE,CAAC,GAAG,CACpD8C,EAAM9C,CAAE,CAAC,GAAG,CAAE+C,EAAM/C,CAAE,CAAC,GAAG,CAAEgD,EAAMhD,CAAE,CAAC,GAAG,CAAEiD,EAAMjD,CAAE,CAAC,GAAG,CACtDkD,EAAMpE,EAAMI,EAAMH,EAAME,EACxBkE,EAAMrE,EAAMK,EAAMH,EAAMC,EACxBmE,EAAMtE,EAAM8D,EAAMD,EAAM1D,EACxBoE,EAAMtE,EAAMI,EAAMH,EAAME,EACxBoE,EAAMvE,EAAM6D,EAAMD,EAAMzD,EACxBqE,EAAMvE,EAAM4D,EAAMD,EAAMxD,EACxBqE,EAAMpE,EAAM2D,EAAM1D,EAAMyD,EACxBW,EAAMrE,EAAM4D,EAAM1D,EAAMwD,EACxBY,EAAMtE,EAAM6D,EAAMJ,EAAMC,EACxBa,EAAMtE,EAAM2D,EAAM1D,EAAMyD,EACxBa,EAAMvE,EAAM4D,EAAMJ,EAAME,EACxBc,EAAMvE,EAAM2D,EAAMJ,EAAMG,EACxBR,EAAMU,EAAMW,EAAMV,EAAMS,EAAMR,EAAMO,EAAMN,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAC5E,GAAI,CAAChB,EACD,OAAO,KAEXA,EAAM,EAAMA,EACZrC,CAAE,CAAC,EAAE,CAAG,AAACjB,CAAAA,EAAM2E,EAAM1E,EAAMyE,EAAMhB,EAAMe,CAAE,EAAKnB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAChB,CAAAA,EAAMuE,EAAMzE,EAAM4E,EAAMjB,EAAMa,CAAE,EAAKjB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAClB,CAAAA,EAAM2E,EAAM1E,EAAMwE,EAAMd,EAAMY,CAAE,EAAKhB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACnB,CAAAA,EAAM4E,EAAM7E,EAAM8E,EAAMlB,EAAMgB,CAAE,EAAKnB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACrB,CAAAA,EAAM+E,EAAM7E,EAAM0E,EAAMf,EAAMc,CAAE,EAAKjB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACpB,CAAAA,EAAM2E,EAAM5E,EAAM8E,EAAMjB,EAAMa,CAAE,EAAKhB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAC4C,CAAAA,EAAMQ,EAAMP,EAAMM,EAAML,EAAMI,CAAE,EAAKb,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAC6C,CAAAA,EAAMI,EAAMN,EAAMS,EAAMN,EAAME,CAAE,EAAKX,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAC2C,CAAAA,EAAMQ,EAAMP,EAAMK,EAAMH,EAAMC,CAAE,EAAKV,CAClD,EAMEnnB,GAAUokB,MAAM,CAAG,SAAgBznB,CAAC,CAAEhB,CAAC,CAAEif,CAAG,EAC1C,IAAI+J,EAAKhoB,EAAE4e,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACjBtB,EAAIxB,KAAKgQ,GAAG,CAAC9sB,GACbF,EAAIgd,KAAKiQ,GAAG,CAAC/sB,GACb8nB,EAAMkB,CAAE,CAAC,EAAE,CAAEjB,EAAMiB,CAAE,CAAC,EAAE,CAAEhB,EAAMgB,CAAE,CAAC,EAAE,CACrCf,EAAMe,CAAE,CAAC,EAAE,CAAEd,EAAMc,CAAE,CAAC,EAAE,CAAEb,EAAMa,CAAE,CAAC,EAAE,CACrCZ,EAAMY,CAAE,CAAC,EAAE,CAAEX,EAAMW,CAAE,CAAC,EAAE,CAAEV,EAAMU,CAAE,CAAC,EAAE,AACzCG,CAAAA,CAAE,CAAC,EAAE,CAAGrpB,EAAIgoB,EAAMxJ,EAAI2J,EACtBkB,CAAE,CAAC,EAAE,CAAGrpB,EAAIioB,EAAMzJ,EAAI4J,EACtBiB,CAAE,CAAC,EAAE,CAAGrpB,EAAIkoB,EAAM1J,EAAI6J,EACtBgB,CAAE,CAAC,EAAE,CAAGrpB,EAAImoB,EAAM3J,EAAIwJ,EACtBqB,CAAE,CAAC,EAAE,CAAGrpB,EAAIooB,EAAM5J,EAAIyJ,EACtBoB,CAAE,CAAC,EAAE,CAAGrpB,EAAIqoB,EAAM7J,EAAI0J,EACtBmB,CAAE,CAAC,EAAE,CAAGf,EACRe,CAAE,CAAC,EAAE,CAAGd,EACRc,CAAE,CAAC,EAAE,CAAGb,CACZ,EAMEjkB,GAAUga,KAAK,CAAG,SAAeE,CAAC,CAAED,CAAC,CAAEW,CAAG,EACxC,IAAInY,EAAIwX,EAAEX,EAAE,CAAE5W,EAAIuX,EAAEV,EAAE,CAClBoL,EAAKzK,EAAEqB,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAGriB,EAAIkiB,CAAE,CAAC,EAAE,CACjBG,CAAE,CAAC,EAAE,CAAGriB,EAAIkiB,CAAE,CAAC,EAAE,CACjBG,CAAE,CAAC,EAAE,CAAGriB,EAAIkiB,CAAE,CAAC,EAAE,CACjBG,CAAE,CAAC,EAAE,CAAGpiB,EAAIiiB,CAAE,CAAC,EAAE,CACjBG,CAAE,CAAC,EAAE,CAAGpiB,EAAIiiB,CAAE,CAAC,EAAE,CACjBG,CAAE,CAAC,EAAE,CAAGpiB,EAAIiiB,CAAE,CAAC,EAAE,CACjBG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,AACjB,EAME3kB,GAAUqkB,SAAS,CAAG,SAAmBnK,CAAC,CAAEoK,CAAW,CAAE1J,CAAG,EAC1D,IAAInY,EAAI6hB,EAAYhL,EAAE,CAAE5W,EAAI4hB,EAAY/K,EAAE,CACtCoL,EAAKzK,EAAEqB,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACjBkI,EAAMkB,CAAE,CAAC,EAAE,CAAEjB,EAAMiB,CAAE,CAAC,EAAE,CAAEhB,EAAMgB,CAAE,CAAC,EAAE,CACrCf,EAAMe,CAAE,CAAC,EAAE,CAAEd,EAAMc,CAAE,CAAC,EAAE,CAAEb,EAAMa,CAAE,CAAC,EAAE,CACrCZ,EAAMY,CAAE,CAAC,EAAE,CAAEX,EAAMW,CAAE,CAAC,EAAE,CAAEV,EAAMU,CAAE,CAAC,EAAE,AACzCG,CAAAA,CAAE,CAAC,EAAE,CAAGrB,EACRqB,CAAE,CAAC,EAAE,CAAGpB,EACRoB,CAAE,CAAC,EAAE,CAAGnB,EACRmB,CAAE,CAAC,EAAE,CAAGlB,EACRkB,CAAE,CAAC,EAAE,CAAGjB,EACRiB,CAAE,CAAC,EAAE,CAAGhB,EACRgB,CAAE,CAAC,EAAE,CAAGriB,EAAIghB,EAAM/gB,EAAIkhB,EAAMG,EAC5Be,CAAE,CAAC,EAAE,CAAGriB,EAAIihB,EAAMhhB,EAAImhB,EAAMG,EAC5Bc,CAAE,CAAC,EAAE,CAAGriB,EAAIkhB,EAAMjhB,EAAIohB,EAAMG,CAChC,EAKEjkB,GAAUukB,SAAS,CAAG,SAAmB5nB,CAAC,CAAEie,CAAG,EAC7C,IAAI+J,EAAKhoB,EAAE4e,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACrB,GAAIX,IAAQje,EAAG,CACX,IAAI+mB,EAAMiB,CAAE,CAAC,EAAE,CACXhB,EAAMgB,CAAE,CAAC,EAAE,CACXb,EAAMa,CAAE,CAAC,EAAE,AACfG,CAAAA,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGpB,EACRoB,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGnB,EACRmB,CAAE,CAAC,EAAE,CAAGhB,OAERgB,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,AAErB,EACO3kB,IAKHC,IAoBFpC,CAREA,GAASoC,CAXJA,GAAT,SAAoBwC,CAAC,CAAEC,CAAC,CAAEG,CAAC,CAAEC,CAAC,EAChB,KAAK,IAAXL,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXC,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXG,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXC,GAAcA,CAAAA,EAAI,CAAA,EACL,IAAI,CAACuW,eAAe,CAAG,KACxC,IAAI,CAACC,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG3W,EACV,IAAI,CAAC4Y,EAAE,CAAG3Y,CACd,GACwBtI,SAAS,EAQxBuI,GAAG,CAAG,SAAaN,CAAC,CAAEC,CAAC,CAAEG,CAAC,CAAEC,CAAC,EAMlC,OALA,IAAI,CAACwW,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG3W,EACV,IAAI,CAAC4Y,EAAE,CAAG3Y,EACV,IAAI,CAACuW,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAO8qB,SAAS,CAAG,WAKjB,OAJA,IAAI,CAACrP,EAAE,EAAI,GACX,IAAI,CAACC,EAAE,EAAI,GACX,IAAI,CAACC,EAAE,EAAI,GACX,IAAI,CAACH,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO+qB,YAAY,CAAG,SAAsBhO,CAAG,EAC7C,IAAkBtB,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CACzD5f,EAAS0f,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EACtC,GAAI5f,EAAS+F,GAASiZ,aAAa,CAI/B,OAHAgC,EAAItB,EAAE,CAAG,EACTsB,EAAIrB,EAAE,CAAG,EACTqB,EAAIpB,EAAE,CAAG,EACF,EAEP,IAAI0M,EAAM,EAAMtsB,EAIhB,OAHAghB,EAAItB,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG4M,EACnBtL,EAAIrB,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG2M,EACnBtL,EAAIpB,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG0M,EACZzN,AAAqB,EAArBA,KAAKoQ,IAAI,CAAC,IAAI,CAACpN,EAAE,CAEhC,EAIE5d,GAAOqmB,QAAQ,CAAG,WAMhB,OALA,IAAI,CAAC5K,EAAE,CAAG,EACV,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACC,EAAE,CAAG,EACV,IAAI,CAACiC,EAAE,CAAG,EACV,IAAI,CAACpC,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOjE,MAAM,CAAG,WACd,IAAkB0f,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CAAEiC,EAAKhX,AAAxD,IAAI,CAA0DgX,EAAE,CAC5E,OAAOhD,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKiC,EAAKA,EACxD,EAIE5d,GAAOgc,aAAa,CAAG,WACrB,IAAkBP,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CAAEiC,EAAKhX,AAAxD,IAAI,CAA0DgX,EAAE,CAC5E,OAAOnC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKiC,EAAKA,CAC9C,EAIE5d,GAAOkc,SAAS,CAAG,WAEjB,OADA9Z,GAAW8Z,SAAS,CAAC,IAAI,CAAE,IAAI,EACxB,IAAI,AACf,EAKElc,GAAOirB,OAAO,CAAG,SAAiBlO,CAAG,EACnC,IAAI,CAACmO,eAAe,CAACnO,GACrB,IAAIzB,EAAIyB,EAAItB,EAAE,CAId,OAHAsB,EAAItB,EAAE,CAAGsB,EAAIrB,EAAE,CACfqB,EAAIrB,EAAE,CAAGJ,EACTyB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,GACnCuB,CACX,EAKE/c,GAAOmrB,cAAc,CAAG,SAAwBpO,CAAG,EAGjD,OAFA,IAAI,CAACmO,eAAe,CAACnO,GACrBA,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,GACnCuB,CACX,EAKE/c,GAAOorB,OAAO,CAAG,SAAiBC,CAAG,EAEnC,OADAjpB,GAAWgpB,OAAO,CAAC,IAAI,CAAEC,EAAK,IAAI,EAC3B,IAAI,AACf,EAKErrB,GAAOsrB,OAAO,CAAG,SAAiBD,CAAG,EAEnC,OADAjpB,GAAWkpB,OAAO,CAAC,IAAI,CAAED,EAAK,IAAI,EAC3B,IAAI,AACf,EAKErrB,GAAOurB,OAAO,CAAG,SAAiBF,CAAG,EAEnC,OADAjpB,GAAWmpB,OAAO,CAAC,IAAI,CAAEF,EAAK,IAAI,EAC3B,IAAI,AACf,EAMErrB,GAAOwrB,iBAAiB,CAAG,SAA2BC,CAAI,CAAEJ,CAAG,EAE7D,OADAjpB,GAAWopB,iBAAiB,CAACC,EAAMJ,EAAK,IAAI,EACrC,IAAI,AACf,EAKErrB,GAAO6b,QAAQ,CAAG,SAAkB6P,CAAI,EAEtC,OADAtpB,GAAWyZ,QAAQ,CAAC,IAAI,CAAE6P,EAAM,IAAI,EAC7B,IAAI,AACf,EAIE1rB,GAAOsmB,MAAM,CAAG,WAEd,OADAlkB,GAAWkkB,MAAM,CAAC,IAAI,CAAE,IAAI,EACrB,IAAI,AACf,EAKEtmB,GAAOmW,GAAG,CAAG,SAAauV,CAAI,EAC5B,OAAOtpB,GAAW+T,GAAG,CAAC,IAAI,CAAEuV,EAChC,EAME1rB,GAAOqb,IAAI,CAAG,SAAcqQ,CAAI,CAAEpQ,CAAC,EAEjC,OADAlZ,GAAWiZ,IAAI,CAAC,IAAI,CAAEqQ,EAAMpQ,EAAG,IAAI,EAC5B,IAAI,AACf,EAMEtb,GAAO2rB,eAAe,CAAG,SAAyBF,CAAI,CAAEJ,CAAG,EAGzD,OAFAjpB,GAAWwpB,UAAU,CAACJ,iBAAiB,CAACC,EAAMJ,GAC9C,IAAI,CAACxP,QAAQ,CAACzZ,GAAWwpB,UAAU,EAC5B,IAAI,AACf,EAIE5rB,GAAOyc,KAAK,CAAG,WACb,OAAO,IAAIra,GAAW,IAAI,CAACqZ,EAAE,CAAE,IAAI,CAACC,EAAE,CAAE,IAAI,CAACC,EAAE,CAAE,IAAI,CAACiC,EAAE,CAC5D,EAKE5d,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EAMxC,OALA,IAAI,CAACqC,EAAE,CAAGrC,EAAOxU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGtC,EAAOvU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGvC,EAAOpU,CAAC,CAClB,IAAI,CAAC4Y,EAAE,CAAGxE,EAAOnU,CAAC,CAClB,IAAI,CAACuW,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO0c,MAAM,CAAG,SAAgB9gB,CAAM,EAKpC,OAJAA,EAAOgJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB7f,EAAOiJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB9f,EAAOoJ,CAAC,CAAG,IAAI,CAAC2W,EAAE,CAClB/f,EAAOqJ,CAAC,CAAG,IAAI,CAAC2Y,EAAE,CACXhiB,CACX,EAMEoE,GAAO2c,aAAa,CAAG,SAAuBC,CAAK,CAAEC,CAAM,EAOzD,OANe,KAAK,IAAhBA,GAAmBA,CAAAA,EAAS,CAAA,EAChC,IAAI,CAACpB,EAAE,CAAGmB,CAAK,CAACC,EAAO,CACvB,IAAI,CAACnB,EAAE,CAAGkB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAAClB,EAAE,CAAGiB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAACe,EAAE,CAAGhB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAACrB,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8c,WAAW,CAAG,SAAqBC,CAAG,CAAEC,CAAS,EACpC,KAAK,IAAnBA,GAAsBA,CAAAA,EAAY,CAAA,EACtCD,CAAG,CAACC,EAAU,CAAG,IAAI,CAACvB,EAAE,CACxBsB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACtB,EAAE,CAC5BqB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACrB,EAAE,CAC5BoB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACY,EAAE,AAChC,EAIE5d,GAAOid,MAAM,CAAG,WACd,MAAO,CACHrY,EAAG,IAAI,CAAC6W,EAAE,CACV5W,EAAG,IAAI,CAAC6W,EAAE,CACV1W,EAAG,IAAI,CAAC2W,EAAE,CACV1W,EAAG,IAAI,CAAC2Y,EAAE,AACd,CACJ,EACA5d,GAAOkrB,eAAe,CAAG,SAAyBnO,CAAG,EAEjD,IAAkBnY,EAAIgC,AAAV,IAAI,CAAY6U,EAAE,CAAE5W,EAAI+B,AAAxB,IAAI,CAA0B8U,EAAE,CAAE1W,EAAI4B,AAAtC,IAAI,CAAwC+U,EAAE,CAAE1W,EAAI2B,AAApD,IAAI,CAAsDgX,EAAE,CACpE6K,EAAK7jB,EAAIA,EACT+jB,EAAK9jB,EAAIA,EACTikB,EAAK9jB,EAAIA,EACT6mB,EAAK5mB,EAAIA,EACT6mB,EAAOrD,EAAKE,EAAKG,EAAK+C,EACtBE,EAAO,EAAKnnB,CAAAA,EAAIK,EAAIJ,EAAIG,CAAAA,CACxB+mB,CAAAA,EAAO,AAAC,CAAA,EAAIjqB,GAASiZ,aAAY,AAAZA,EAAiB+Q,GACtC/O,EAAItB,EAAE,CAAGb,KAAKoR,KAAK,CAAC,EAAO/mB,CAAAA,EAAIJ,EAAID,EAAII,CAAAA,EAAIyjB,EAAKoD,EAAKlD,EAAKG,GAC1D/L,EAAIrB,EAAE,CAAGd,KAAKW,EAAE,CAAG,EACnBwB,EAAIpB,EAAE,CAAG,GACFoQ,EAAO,CAAE,CAAA,EAAIjqB,GAASiZ,aAAa,AAAbA,EAAiB+Q,GAC9C/O,EAAItB,EAAE,CAAGb,KAAKoR,KAAK,CAAC,EAAO/mB,CAAAA,EAAIJ,EAAID,EAAII,CAAAA,EAAIyjB,EAAKoD,EAAKlD,EAAKG,GAC1D/L,EAAIrB,EAAE,CAAG,CAACd,KAAKW,EAAE,CAAG,EACpBwB,EAAIpB,EAAE,CAAG,IAEToB,EAAItB,EAAE,CAAGb,KAAKoR,KAAK,CAAC,EAAOhnB,CAAAA,EAAIJ,EAAIC,EAAII,CAAAA,EAAI6jB,EAAK+C,EAAKlD,EAAKF,GAC1D1L,EAAIrB,EAAE,CAAGd,KAAKqR,IAAI,CAACF,EAAOD,GAC1B/O,EAAIpB,EAAE,CAAGf,KAAKoR,KAAK,CAAC,EAAOpnB,CAAAA,EAAIC,EAAIG,EAAIC,CAAAA,EAAI0jB,EAAKkD,EAAK/C,EAAKL,GAElE,EAMErmB,GAAWwZ,GAAG,CAAG,SAAavc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAC5CA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIa,EAAE,CAAGve,EAAKue,EAAE,CAAGte,EAAMse,EAAE,CAC3Bb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEpZ,GAAWyZ,QAAQ,CAAG,SAAkBxc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACtD,IAAIG,EAAK7d,EAAKoc,EAAE,CAAE0B,EAAK9d,EAAKqc,EAAE,CAAE0B,EAAK/d,EAAKsc,EAAE,CAAEuQ,EAAK7sB,EAAKue,EAAE,CACtDP,EAAK/d,EAAMmc,EAAE,CAAE6B,EAAKhe,EAAMoc,EAAE,CAAE6B,EAAKje,EAAMqc,EAAE,CAAEwQ,EAAK7sB,EAAMse,EAAE,AAC9Db,CAAAA,EAAItB,EAAE,CAAGyB,EAAKiP,EAAKD,EAAK7O,EAAKF,EAAKI,EAAKH,EAAKE,EAC5CP,EAAIrB,EAAE,CAAGyB,EAAKgP,EAAKD,EAAK5O,EAAKF,EAAKC,EAAKH,EAAKK,EAC5CR,EAAIpB,EAAE,CAAGyB,EAAK+O,EAAKD,EAAK3O,EAAKL,EAAKI,EAAKH,EAAKE,EAC5CN,EAAIa,EAAE,CAAGsO,EAAKC,EAAKjP,EAAKG,EAAKF,EAAKG,EAAKF,EAAKG,EAC5CR,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEpZ,GAAW0oB,SAAS,CAAG,SAAmBhsB,CAAC,CAAEie,CAAG,EAC9CA,EAAItB,EAAE,CAAG,CAAC3c,EAAE2c,EAAE,CACdsB,EAAIrB,EAAE,CAAG,CAAC5c,EAAE4c,EAAE,CACdqB,EAAIpB,EAAE,CAAG,CAAC7c,EAAE6c,EAAE,CACdoB,EAAIa,EAAE,CAAG9e,EAAE8e,EAAE,CACbb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEpZ,GAAW+T,GAAG,CAAG,SAAa9W,CAAI,CAAEC,CAAK,EACvC,OAAOD,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAAGpc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAAGrc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAAGtc,EAAKue,EAAE,CAAGte,EAAMse,EAAE,AAC5F,EAMExb,GAAW+C,MAAM,CAAG,SAAgB9F,CAAI,CAAEC,CAAK,EAC7C,OAAOwC,GAASqD,MAAM,CAAC9F,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,GAAK3Z,GAASqD,MAAM,CAAC9F,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,GAAK5Z,GAASqD,MAAM,CAAC9F,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,GAAK7Z,GAASqD,MAAM,CAAC9F,EAAKue,EAAE,CAAEte,EAAMse,EAAE,CAC9J,EAMExb,GAAWopB,iBAAiB,CAAG,SAA2BC,CAAI,CAAEJ,CAAG,CAAEtO,CAAG,EACtE,IAAIqP,EAAahqB,GAAWiqB,YAAY,CACxCtqB,GAAQma,SAAS,CAACuP,EAAMW,GAExB,IAAIhQ,EAAIxB,KAAKgQ,GAAG,CADhBS,GAAO,GAEPtO,CAAAA,EAAItB,EAAE,CAAG2Q,EAAW3Q,EAAE,CAAGW,EACzBW,EAAIrB,EAAE,CAAG0Q,EAAW1Q,EAAE,CAAGU,EACzBW,EAAIpB,EAAE,CAAGyQ,EAAWzQ,EAAE,CAAGS,EACzBW,EAAIa,EAAE,CAAGhD,KAAKiQ,GAAG,CAACQ,GAClBtO,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAOEpZ,GAAWkqB,aAAa,CAAG,SAAuB1nB,CAAC,CAAEC,CAAC,CAAEG,CAAC,CAAE+X,CAAG,EAC5D3a,GAAWmqB,oBAAoB,CAAC1nB,EAAGD,EAAGI,EAAG+X,EAC7C,EAOE3a,GAAWmqB,oBAAoB,CAAG,SAA8BC,CAAG,CAAEC,CAAK,CAAEC,CAAI,CAAE3P,CAAG,EACnF,IAAI4P,EAAWD,AAAO,GAAPA,EACXE,EAAYH,AAAQ,GAARA,EACZI,EAAUL,AAAM,GAANA,EACVM,EAAUlS,KAAKgQ,GAAG,CAAC+B,GACnBI,EAAUnS,KAAKiQ,GAAG,CAAC8B,GACnBK,EAAWpS,KAAKgQ,GAAG,CAACgC,GACpBK,EAAWrS,KAAKiQ,GAAG,CAAC+B,GACpBM,EAAStS,KAAKgQ,GAAG,CAACiC,GAClBM,EAASvS,KAAKiQ,GAAG,CAACgC,GAClBO,EAAcD,EAASF,EACvBI,EAAcH,EAASF,CAC3BjQ,CAAAA,EAAItB,EAAE,CAAG0R,EAASH,EAAWD,EAAUG,EAASD,EAAWH,EAC3D/P,EAAIrB,EAAE,CAAGwR,EAASD,EAAWF,EAAUI,EAASH,EAAWF,EAC3D/P,EAAIpB,EAAE,CAAGyR,EAAcN,EAAUO,EAAcN,EAC/ChQ,EAAIa,EAAE,CAAGwP,EAAcL,EAAUM,EAAcP,EAC/C/P,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEpZ,GAAWkrB,iBAAiB,CAAG,SAA2BjR,CAAC,CAAEU,CAAG,EAC9D,IAKIhB,EAAMwR,EALNC,EAAKnR,EAAEqB,QAAQ,CACfuH,EAAMuI,CAAE,CAAC,EAAE,CAAEtI,EAAMsI,CAAE,CAAC,EAAE,CAAErI,EAAMqI,CAAE,CAAC,EAAE,CACrCpI,EAAMoI,CAAE,CAAC,EAAE,CAAEnI,EAAMmI,CAAE,CAAC,EAAE,CAAElI,EAAMkI,CAAE,CAAC,EAAE,CACrCjI,EAAMiI,CAAE,CAAC,EAAE,CAAEhI,EAAMgI,CAAE,CAAC,EAAE,CAAE/H,EAAM+H,CAAE,CAAC,EAAE,CACrCrR,EAAQ8I,EAAMI,EAAMI,CAEpBtJ,CAAAA,EAAQ,GACRJ,EAAOnB,KAAKmB,IAAI,CAACI,EAAQ,GACzBY,EAAIa,EAAE,CAAG7B,AAAO,GAAPA,EACTA,EAAO,GAAMA,EACbgB,EAAItB,EAAE,CAAI6J,AAAAA,CAAAA,EAAME,CAAAA,EAAOzJ,EACvBgB,EAAIrB,EAAE,CAAI6J,AAAAA,CAAAA,EAAMJ,CAAAA,EAAOpJ,EACvBgB,EAAIpB,EAAE,CAAIuJ,AAAAA,CAAAA,EAAME,CAAAA,EAAOrJ,GAChBkJ,GAAOI,GAAOJ,GAAOQ,GAE5B8H,EAAO,GADPxR,CAAAA,EAAOnB,KAAKmB,IAAI,CAAC,EAAMkJ,EAAMI,EAAMI,EAAAA,EAEnC1I,EAAItB,EAAE,CAAG,GAAMM,EACfgB,EAAIrB,EAAE,CAAIwJ,AAAAA,CAAAA,EAAME,CAAAA,EAAOmI,EACvBxQ,EAAIpB,EAAE,CAAIwJ,AAAAA,CAAAA,EAAMI,CAAAA,EAAOgI,EACvBxQ,EAAIa,EAAE,CAAI0H,AAAAA,CAAAA,EAAME,CAAAA,EAAO+H,GAChBlI,EAAMI,GAEb8H,EAAO,GADPxR,CAAAA,EAAOnB,KAAKmB,IAAI,CAAC,EAAMsJ,EAAMJ,EAAMQ,EAAAA,EAEnC1I,EAAItB,EAAE,CAAI2J,AAAAA,CAAAA,EAAMF,CAAAA,EAAOqI,EACvBxQ,EAAIrB,EAAE,CAAG,GAAMK,EACfgB,EAAIpB,EAAE,CAAI6J,AAAAA,CAAAA,EAAMF,CAAAA,EAAOiI,EACvBxQ,EAAIa,EAAE,CAAI2H,AAAAA,CAAAA,EAAMJ,CAAAA,EAAOoI,IAGvBA,EAAO,GADPxR,CAAAA,EAAOnB,KAAKmB,IAAI,CAAC,EAAM0J,EAAMR,EAAMI,EAAAA,EAEnCtI,EAAItB,EAAE,CAAI0J,AAAAA,CAAAA,EAAMI,CAAAA,EAAOgI,EACvBxQ,EAAIrB,EAAE,CAAI4J,AAAAA,CAAAA,EAAME,CAAAA,EAAO+H,EACvBxQ,EAAIpB,EAAE,CAAG,GAAMI,EACfgB,EAAIa,EAAE,CAAIsH,AAAAA,CAAAA,EAAME,CAAAA,EAAOmI,GAE3BxQ,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEpZ,GAAWkkB,MAAM,CAAG,SAAgBxnB,CAAC,CAAEie,CAAG,EACxC,IAAInY,EAAI9F,EAAE2c,EAAE,CAAE5W,EAAI/F,EAAE4c,EAAE,CAAE1W,EAAIlG,EAAE6c,EAAE,CAAE1W,EAAInG,EAAE8e,EAAE,CACtCzH,EAAMvR,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,EAAIC,EAAIA,EACtC,GAAIkR,EAAMrU,GAASiZ,aAAa,CAAE,CAC9B,IAAI0S,EAAS,EAAMtX,CACnB4G,CAAAA,EAAItB,EAAE,CAAG,CAAC7W,EAAI6oB,EACd1Q,EAAIrB,EAAE,CAAG,CAAC7W,EAAI4oB,EACd1Q,EAAIpB,EAAE,CAAG,CAAC3W,EAAIyoB,EACd1Q,EAAIa,EAAE,CAAG3Y,EAAIwoB,EACb1Q,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,CACJ,EAOEpZ,GAAWiZ,IAAI,CAAG,SAAc3O,CAAK,CAAEoC,CAAG,CAAEwM,CAAC,CAAEyB,CAAG,EAChD,IAAIsL,EAAM,EAAM/M,CACZlZ,CAAAA,GAAW+T,GAAG,CAACzJ,EAAOoC,IAAQ,GAC9BiO,EAAItB,EAAE,CAAG/O,EAAM+O,EAAE,CAAG4M,EAAMvZ,EAAI2M,EAAE,CAAGH,EACnCyB,EAAIrB,EAAE,CAAGhP,EAAMgP,EAAE,CAAG2M,EAAMvZ,EAAI4M,EAAE,CAAGJ,EACnCyB,EAAIpB,EAAE,CAAGjP,EAAMiP,EAAE,CAAG0M,EAAMvZ,EAAI6M,EAAE,CAAGL,EACnCyB,EAAIa,EAAE,CAAGlR,EAAMkR,EAAE,CAAGyK,EAAMvZ,EAAI8O,EAAE,CAAGtC,IAEnCyB,EAAItB,EAAE,CAAG/O,EAAM+O,EAAE,CAAG4M,EAAMvZ,EAAI2M,EAAE,CAAGH,EACnCyB,EAAIrB,EAAE,CAAGhP,EAAMgP,EAAE,CAAG2M,EAAMvZ,EAAI4M,EAAE,CAAGJ,EACnCyB,EAAIpB,EAAE,CAAGjP,EAAMiP,EAAE,CAAG0M,EAAMvZ,EAAI6M,EAAE,CAAGL,EACnCyB,EAAIa,EAAE,CAAGlR,EAAMkR,EAAE,CAAGyK,EAAMvZ,EAAI8O,EAAE,CAAGtC,GAEvCyB,EAAIb,SAAS,EACjB,EAOE9Z,GAAWsrB,KAAK,CAAG,SAAehhB,CAAK,CAAEoC,CAAG,CAAE6e,CAAM,CAAE5Q,CAAG,EAGvD,IAFI6Q,EACAhL,EACAzM,EAAM/T,GAAW+T,GAAG,CAACzJ,EAAOoC,GAChC,GAAI8L,KAAKE,GAAG,CAAC3E,GAAO,EAAMrU,GAASiZ,aAAa,CAC5C6H,EAAU,EAAM+K,EAChBC,EAAWD,EAAS/S,KAAKiT,IAAI,CAAC1X,OAC3B,CACH,IAAI6U,EAAOpQ,KAAKoQ,IAAI,CAACpQ,KAAKE,GAAG,CAAC3E,IAC1B2X,EAAS,EAAMlT,KAAKgQ,GAAG,CAACI,GAC5BpI,EAAUhI,KAAKgQ,GAAG,CAAE,AAAA,CAAA,EAAM+C,GAAU3C,GAAQ8C,EAC5CF,EAAWhT,KAAKgQ,GAAG,CAAC+C,EAAS3C,GAAQ8C,EAASlT,KAAKiT,IAAI,CAAC1X,EAC5D,CACA4G,EAAInY,CAAC,CAAGge,EAAUlW,EAAM9H,CAAC,CAAGgpB,EAAW9e,EAAIlK,CAAC,CAC5CmY,EAAIlY,CAAC,CAAG+d,EAAUlW,EAAM7H,CAAC,CAAG+oB,EAAW9e,EAAIjK,CAAC,CAC5CkY,EAAI/X,CAAC,CAAG4d,EAAUlW,EAAM1H,CAAC,CAAG4oB,EAAW9e,EAAI9J,CAAC,CAC5C+X,EAAI9X,CAAC,CAAG2d,EAAUlW,EAAMzH,CAAC,CAAG2oB,EAAW9e,EAAI7J,CAAC,CAC5C8X,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEpZ,GAAW8Z,SAAS,CAAG,SAAmBpd,CAAC,CAAEie,CAAG,EAC9C,IAAItB,EAAK3c,EAAE2c,EAAE,CAAEC,EAAK5c,EAAE4c,EAAE,CAAEC,EAAK7c,EAAE6c,EAAE,CAAEiC,EAAK9e,EAAE8e,EAAE,CAC1CH,EAAM7C,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKiC,EAAKA,GACnDH,EAAM3b,GAASiZ,aAAa,GAC5B0C,EAAM,EAAIA,EACVV,EAAItB,EAAE,CAAGA,EAAKgC,EACdV,EAAIrB,EAAE,CAAGA,EAAK+B,EACdV,EAAIpB,EAAE,CAAGA,EAAK8B,EACdV,EAAIa,EAAE,CAAGA,EAAKH,EACdV,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,GAElD,EAKEpZ,GAAW2rB,SAAS,CAAG,SAAmB1C,CAAG,CAAEtO,CAAG,EAEhD,IAAIX,EAAIxB,KAAKgQ,GAAG,CADhBS,GAAO,IAEHztB,EAAIgd,KAAKiQ,GAAG,CAACQ,EACjBtO,CAAAA,EAAItB,EAAE,CAAGW,EACTW,EAAIrB,EAAE,CAAG,EACTqB,EAAIpB,EAAE,CAAG,EACToB,EAAIa,EAAE,CAAGhgB,EACTmf,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEpZ,GAAW4rB,SAAS,CAAG,SAAmB3C,CAAG,CAAEtO,CAAG,EAEhD,IAAIX,EAAIxB,KAAKgQ,GAAG,CADhBS,GAAO,IAEHztB,EAAIgd,KAAKiQ,GAAG,CAACQ,EACjBtO,CAAAA,EAAItB,EAAE,CAAG,EACTsB,EAAIrB,EAAE,CAAGU,EACTW,EAAIpB,EAAE,CAAG,EACToB,EAAIa,EAAE,CAAGhgB,EACTmf,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEpZ,GAAW6rB,SAAS,CAAG,SAAmB5C,CAAG,CAAEtO,CAAG,EAEhD,IAAIX,EAAIxB,KAAKgQ,GAAG,CADhBS,GAAO,IAEHztB,EAAIgd,KAAKiQ,GAAG,CAACQ,EACjBtO,CAAAA,EAAItB,EAAE,CAAG,EACTsB,EAAIrB,EAAE,CAAG,EACTqB,EAAIpB,EAAE,CAAGS,EACTW,EAAIa,EAAE,CAAGhgB,EACTmf,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEpZ,GAAWgpB,OAAO,CAAG,SAAiB5O,CAAU,CAAE6O,CAAG,CAAEtO,CAAG,EACxD,IAAItB,EAAKe,EAAWf,EAAE,CAAEC,EAAKc,EAAWd,EAAE,CAAEC,EAAKa,EAAWb,EAAE,CAAEiC,EAAKpB,EAAWoB,EAAE,CAE9EP,EAAKzC,KAAKgQ,GAAG,CADjBS,GAAO,IAEHc,EAAKvR,KAAKiQ,GAAG,CAACQ,EAClBtO,CAAAA,EAAItB,EAAE,CAAGA,EAAK0Q,EAAKvO,EAAKP,EACxBN,EAAIrB,EAAE,CAAGA,EAAKyQ,EAAKxQ,EAAK0B,EACxBN,EAAIpB,EAAE,CAAGA,EAAKwQ,EAAKzQ,EAAK2B,EACxBN,EAAIa,EAAE,CAAGA,EAAKuO,EAAK1Q,EAAK4B,EACxBN,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEpZ,GAAWkpB,OAAO,CAAG,SAAiB9O,CAAU,CAAE6O,CAAG,CAAEtO,CAAG,EACxD,IAAItB,EAAKe,EAAWf,EAAE,CAAEC,EAAKc,EAAWd,EAAE,CAAEC,EAAKa,EAAWb,EAAE,CAAEiC,EAAKpB,EAAWoB,EAAE,CAE9EN,EAAK1C,KAAKgQ,GAAG,CADjBS,GAAO,IAEHc,EAAKvR,KAAKiQ,GAAG,CAACQ,EAClBtO,CAAAA,EAAItB,EAAE,CAAGA,EAAK0Q,EAAKxQ,EAAK2B,EACxBP,EAAIrB,EAAE,CAAGA,EAAKyQ,EAAKvO,EAAKN,EACxBP,EAAIpB,EAAE,CAAGA,EAAKwQ,EAAK1Q,EAAK6B,EACxBP,EAAIa,EAAE,CAAGA,EAAKuO,EAAKzQ,EAAK4B,EACxBP,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEpZ,GAAWmpB,OAAO,CAAG,SAAiB/O,CAAU,CAAE6O,CAAG,CAAEtO,CAAG,EACxD,IAAItB,EAAKe,EAAWf,EAAE,CAAEC,EAAKc,EAAWd,EAAE,CAAEC,EAAKa,EAAWb,EAAE,CAAEiC,EAAKpB,EAAWoB,EAAE,CAE9EL,EAAK3C,KAAKgQ,GAAG,CADjBS,GAAO,IAEHc,EAAKvR,KAAKiQ,GAAG,CAACQ,EAClBtO,CAAAA,EAAItB,EAAE,CAAGA,EAAK0Q,EAAKzQ,EAAK6B,EACxBR,EAAIrB,EAAE,CAAGA,EAAKyQ,EAAK1Q,EAAK8B,EACxBR,EAAIpB,EAAE,CAAGA,EAAKwQ,EAAKvO,EAAKL,EACxBR,EAAIa,EAAE,CAAGA,EAAKuO,EAAKxQ,EAAK4B,EACxBR,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEpZ,GAAW+Z,KAAK,CAAG,SAAerd,CAAC,CAAEsd,CAAC,CAAEW,CAAG,EACzCA,EAAItB,EAAE,CAAG3c,EAAE2c,EAAE,CAAGW,EAChBW,EAAIrB,EAAE,CAAG5c,EAAE4c,EAAE,CAAGU,EAChBW,EAAIpB,EAAE,CAAG7c,EAAE6c,EAAE,CAAGS,EAChBW,EAAIa,EAAE,CAAG9e,EAAE8e,EAAE,CAAGxB,EAChBW,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EACAjf,GAAc6F,GAAY,CACtB,CACI9F,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC0V,EAAE,AAClB,EACAvW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACke,EAAE,CAAGle,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2V,EAAE,AAClB,EACAxW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACme,EAAE,CAAGne,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC4V,EAAE,AAClB,EACAzW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACoe,EAAE,CAAGpe,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,aACLyJ,IAEN,WACU,OAAO6U,KAAKE,GAAG,CAAC,IAAI,CAACW,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG,IAAI,CAACiC,EAAE,CAAG,IAAI,CAACA,EAAE,CAAG,GAAK9b,GAASiZ,aAAa,AAC/H,CACJ,EACA,CACIze,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC6X,EAAE,AAClB,EACA1Y,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACqgB,EAAE,CAAGrgB,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACH,EACMpZ,GAGUA,CAAAA,GAAWiqB,YAAY,CAAG,IAAItqB,GAG9BK,GAAWwpB,UAAU,CAAG,IAAIxpB,GAK7C,IAAIC,IAkEFrC,CApBEA,GAASqC,CA7CJA,GAAT,SAAgB4iB,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE+I,CAAG,CAAE9I,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE6I,CAAG,CAAE5I,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE2I,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,EAC9E,KAAK,IAAbvJ,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAb+I,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAb9I,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAb6I,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAb5I,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAb2I,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EACd,KAAK,IAAbC,GAAgBA,CAAAA,EAAM,CAAA,EAU5B,IAAI,CAAC9Q,QAAQ,CAAG,IAAIgI,aAAa,IAC/B,IAAI7mB,EAAI,IAAI,CAAC6e,QAAQ,AACrB7e,CAAAA,CAAC,CAAC,EAAE,CAAGomB,EACPpmB,CAAC,CAAC,EAAE,CAAGqmB,EACPrmB,CAAC,CAAC,EAAE,CAAGsmB,EACPtmB,CAAC,CAAC,EAAE,CAAGqvB,EACPrvB,CAAC,CAAC,EAAE,CAAGumB,EACPvmB,CAAC,CAAC,EAAE,CAAGwmB,EACPxmB,CAAC,CAAC,EAAE,CAAGymB,EACPzmB,CAAC,CAAC,EAAE,CAAGsvB,EACPtvB,CAAC,CAAC,EAAE,CAAG0mB,EACP1mB,CAAC,CAAC,EAAE,CAAG2mB,EACP3mB,CAAC,CAAC,GAAG,CAAG4mB,EACR5mB,CAAC,CAAC,GAAG,CAAGuvB,EACRvvB,CAAC,CAAC,GAAG,CAAGwvB,EACRxvB,CAAC,CAAC,GAAG,CAAGyvB,EACRzvB,CAAC,CAAC,GAAG,CAAG0vB,EACR1vB,CAAC,CAAC,GAAG,CAAG2vB,CACZ,GACoB7xB,SAAS,EAoBpBuI,GAAG,CAAG,SAAa+f,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE+I,CAAG,CAAE9I,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE6I,CAAG,CAAE5I,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAE2I,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,CAAEC,CAAG,EACtG,IAAI3vB,EAAI,IAAI,CAAC6e,QAAQ,CAiBrB,OAhBA7e,CAAC,CAAC,EAAE,CAAGomB,EACPpmB,CAAC,CAAC,EAAE,CAAGqmB,EACPrmB,CAAC,CAAC,EAAE,CAAGsmB,EACPtmB,CAAC,CAAC,EAAE,CAAGqvB,EACPrvB,CAAC,CAAC,EAAE,CAAGumB,EACPvmB,CAAC,CAAC,EAAE,CAAGwmB,EACPxmB,CAAC,CAAC,EAAE,CAAGymB,EACPzmB,CAAC,CAAC,EAAE,CAAGsvB,EACPtvB,CAAC,CAAC,EAAE,CAAG0mB,EACP1mB,CAAC,CAAC,EAAE,CAAG2mB,EACP3mB,CAAC,CAAC,GAAG,CAAG4mB,EACR5mB,CAAC,CAAC,GAAG,CAAGuvB,EACRvvB,CAAC,CAAC,GAAG,CAAGwvB,EACRxvB,CAAC,CAAC,GAAG,CAAGyvB,EACRzvB,CAAC,CAAC,GAAG,CAAG0vB,EACR1vB,CAAC,CAAC,GAAG,CAAG2vB,EACD,IAAI,AACf,EAKExuB,GAAO6b,QAAQ,CAAG,SAAkBvc,CAAK,EAEvC,OADA+C,GAAOwZ,QAAQ,CAAC,IAAI,CAAEvc,EAAO,IAAI,EAC1B,IAAI,AACf,EAIEU,GAAO2lB,WAAW,CAAG,WACnB,IAAI9mB,EAAI,IAAI,CAAC6e,QAAQ,CACjBkI,EAAM/mB,CAAC,CAAC,EAAE,CAAEgnB,EAAMhnB,CAAC,CAAC,EAAE,CAAEinB,EAAMjnB,CAAC,CAAC,EAAE,CAAE4qB,EAAM5qB,CAAC,CAAC,EAAE,CAC9CknB,EAAMlnB,CAAC,CAAC,EAAE,CAAEmnB,EAAMnnB,CAAC,CAAC,EAAE,CAAEonB,EAAMpnB,CAAC,CAAC,EAAE,CAAE6qB,EAAM7qB,CAAC,CAAC,EAAE,CAC9CqnB,EAAMrnB,CAAC,CAAC,EAAE,CAAEsnB,EAAMtnB,CAAC,CAAC,EAAE,CAAEunB,EAAMvnB,CAAC,CAAC,GAAG,CAAE8qB,EAAM9qB,CAAC,CAAC,GAAG,CAChD+qB,EAAM/qB,CAAC,CAAC,GAAG,CAAEgrB,EAAMhrB,CAAC,CAAC,GAAG,CAAEirB,EAAMjrB,CAAC,CAAC,GAAG,CAAEkrB,EAAMlrB,CAAC,CAAC,GAAG,CActD,MAAOmrB,AAbGpE,CAAAA,EAAMI,EAAMH,EAAME,CAAAA,EAWlBK,CAAAA,EAAM2D,EAAMJ,EAAMG,CAAAA,EAETG,AAZTrE,CAAAA,EAAMK,EAAMH,EAAMC,CAAAA,EASlBI,CAAAA,EAAM4D,EAAMJ,EAAME,CAAAA,EAGGK,AAXrBtE,CAAAA,EAAM8D,EAAMD,EAAM1D,CAAAA,EAOlBI,CAAAA,EAAM2D,EAAM1D,EAAMyD,CAAAA,EAIeM,AAVjCtE,CAAAA,EAAMI,EAAMH,EAAME,CAAAA,EAKlBE,CAAAA,EAAM6D,EAAMJ,EAAMC,CAAAA,EAK2BQ,AAT7CvE,CAAAA,EAAM6D,EAAMD,EAAMzD,CAAAA,EAGlBE,CAAAA,EAAM4D,EAAM1D,EAAMwD,CAAAA,EAMuCS,AARzDvE,CAAAA,EAAM4D,EAAMD,EAAMxD,CAAAA,EAClBC,CAAAA,EAAM2D,EAAM1D,EAAMyD,CAAAA,CAQhC,EAOE5pB,GAAOyuB,SAAS,CAAG,SAAmBhI,CAAW,CAAEhiB,CAAQ,CAAE0X,CAAK,EAChE,IAAIuS,EAAKrsB,GAAOssB,UAAU,CACtB9vB,EAAI,IAAI,CAAC6e,QAAQ,CACjBkR,EAAMF,EAAGhR,QAAQ,CACjBuH,EAAMpmB,CAAC,CAAC,EAAE,CACVqmB,EAAMrmB,CAAC,CAAC,EAAE,CACVsmB,EAAMtmB,CAAC,CAAC,EAAE,CACVumB,EAAMvmB,CAAC,CAAC,EAAE,CACVwmB,EAAMxmB,CAAC,CAAC,EAAE,CACVymB,EAAMzmB,CAAC,CAAC,EAAE,CACV0mB,EAAM1mB,CAAC,CAAC,EAAE,CACV2mB,EAAM3mB,CAAC,CAAC,EAAE,CACV4mB,EAAM5mB,CAAC,CAAC,GAAG,CACf4nB,EAAYvhB,GAAG,CAACrG,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,EACnC,IAAIgwB,EAAKjU,KAAKmB,IAAI,CAACkJ,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,GAC7C2J,EAAKlU,KAAKmB,IAAI,CAACqJ,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,GAC7CyJ,EAAKnU,KAAKmB,IAAI,CAACwJ,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,GAGjD,GAFyB,EAArB,IAAI,CAACE,WAAW,IAAQkJ,CAAAA,EAAK,CAACA,CAAAA,EAClC1S,EAAMjX,GAAG,CAAC2pB,EAAIC,EAAIC,GACdnU,KAAKE,GAAG,CAAC+T,GAAM/sB,GAASiZ,aAAa,EAAIH,KAAKE,GAAG,CAACgU,GAAMhtB,GAASiZ,aAAa,EAAIH,KAAKE,GAAG,CAACiU,GAAMjtB,GAASiZ,aAAa,CAEvH,OADAtW,EAAS4hB,QAAQ,GACV,CAAA,EAEP,IAAI2I,EAAQ,EAAIH,EACZI,EAAQ,EAAIH,EACZI,EAAQ,EAAIH,EAWhB,OAVAH,CAAG,CAAC,EAAE,CAAG3J,EAAM+J,EACfJ,CAAG,CAAC,EAAE,CAAG1J,EAAM8J,EACfJ,CAAG,CAAC,EAAE,CAAGzJ,EAAM6J,EACfJ,CAAG,CAAC,EAAE,CAAGxJ,EAAM6J,EACfL,CAAG,CAAC,EAAE,CAAGvJ,EAAM4J,EACfL,CAAG,CAAC,EAAE,CAAGtJ,EAAM2J,EACfL,CAAG,CAAC,EAAE,CAAGrJ,EAAM2J,EACfN,CAAG,CAAC,EAAE,CAAGpJ,EAAM0J,EACfN,CAAG,CAAC,EAAE,CAAGnJ,EAAMyJ,EACf9sB,GAAWkrB,iBAAiB,CAACoB,EAAIjqB,GAC1B,CAAA,CAEf,EAKEzE,GAAOmvB,WAAW,CAAG,SAAqBpS,CAAG,EAC3C,IAAIle,EAAI,IAAI,CAAC6e,QAAQ,CACjB0R,EAAQvwB,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAC/B,GAAIuwB,EAAQttB,GAASiZ,aAAa,CAAE,CAChC,IAAIqB,EAAIxB,AAAyB,EAAzBA,KAAKmB,IAAI,CAACqT,EAAQ,EAC1BrS,CAAAA,EAAIa,EAAE,CAAG,IAAOxB,EAChBW,EAAItB,EAAE,CAAG,AAAC5c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIud,EACzBW,EAAIrB,EAAE,CAAG,AAAC7c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIud,EACzBW,EAAIpB,EAAE,CAAG,AAAC9c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIud,CAC7B,MAAO,GAAIvd,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAE,EAAIA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAAE,CACpC,IAAIwwB,EAAKzU,AAAuC,EAAvCA,KAAKmB,IAAI,CAAC,EAAMld,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAC5Cke,CAAAA,EAAIa,EAAE,CAAG,AAAC/e,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIwwB,EACzBtS,EAAItB,EAAE,CAAG,IAAO4T,EAChBtS,EAAIrB,EAAE,CAAG,AAAC7c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIwwB,EACzBtS,EAAIpB,EAAE,CAAG,AAAC9c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIwwB,CACtB,MAAA,GAAIxwB,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAAE,CACrB,IAAIywB,EAAK1U,AAAuC,EAAvCA,KAAKmB,IAAI,CAAC,EAAMld,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,GAAG,CAC5Cke,CAAAA,EAAIa,EAAE,CAAG,AAAC/e,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIywB,EACzBvS,EAAItB,EAAE,CAAG,AAAC5c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIywB,EACzBvS,EAAIrB,EAAE,CAAG,IAAO4T,EAChBvS,EAAIpB,EAAE,CAAG,AAAC9c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAIywB,MACtB,CACH,IAAIC,EAAK3U,AAAuC,EAAvCA,KAAKmB,IAAI,CAAC,EAAMld,CAAC,CAAC,GAAG,CAAGA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAE,CAC5Cke,CAAAA,EAAIa,EAAE,CAAG,AAAC/e,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAI0wB,EACzBxS,EAAItB,EAAE,CAAG,AAAC5c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAI0wB,EACzBxS,EAAIrB,EAAE,CAAG,AAAC7c,CAAAA,CAAC,CAAC,EAAE,CAAGA,CAAC,CAAC,EAAC,AAAC,EAAI0wB,EACzBxS,EAAIpB,EAAE,CAAG,IAAO4T,CACpB,CAEA,OADAxS,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,GACnCuB,CACX,EAKE/c,GAAOwvB,UAAU,CAAG,SAAoBzS,CAAG,EAEzC,IAAIle,EAAI,IAAI,CAAC6e,QAAQ,CACjBuH,EAAMpmB,CAAC,CAAC,EAAE,CAAEqmB,EAAMrmB,CAAC,CAAC,EAAE,CAAEsmB,EAAMtmB,CAAC,CAAC,EAAE,CAClCumB,EAAMvmB,CAAC,CAAC,EAAE,CAAEwmB,EAAMxmB,CAAC,CAAC,EAAE,CAAEymB,EAAMzmB,CAAC,CAAC,EAAE,CAClC0mB,EAAM1mB,CAAC,CAAC,EAAE,CAAE2mB,EAAM3mB,CAAC,CAAC,EAAE,CAAE4mB,EAAM5mB,CAAC,CAAC,GAAG,CAEvC,OADAke,EAAI7X,GAAG,CAAC0V,KAAKmB,IAAI,CAACkJ,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,GAAMvK,KAAKmB,IAAI,CAACqJ,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,GAAM1K,KAAKmB,IAAI,CAACwJ,EAAMA,EAAMC,EAAMA,EAAMC,EAAMA,IACrI1I,CACX,EAKE/c,GAAOyvB,cAAc,CAAG,SAAwB1S,CAAG,EACjD,IAAIle,EAAI,IAAI,CAAC6e,QAAQ,CAErB,OADAX,EAAI7X,GAAG,CAACrG,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,EACpBke,CACX,EAIE/c,GAAOqmB,QAAQ,CAAG,WAChB,IAAIxnB,EAAI,IAAI,CAAC6e,QAAQ,CAiBrB,OAhBA7e,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,EAAE,CAAG,EACPA,CAAC,CAAC,GAAG,CAAG,EACRA,CAAC,CAAC,GAAG,CAAG,EACRA,CAAC,CAAC,GAAG,CAAG,EACRA,CAAC,CAAC,GAAG,CAAG,EACRA,CAAC,CAAC,GAAG,CAAG,EACRA,CAAC,CAAC,GAAG,CAAG,EACD,IAAI,AACf,EAIEmB,GAAOsmB,MAAM,CAAG,WAEd,OADAjkB,GAAOikB,MAAM,CAAC,IAAI,CAAE,IAAI,EACjB,IAAI,AACf,EAMEtmB,GAAO2rB,eAAe,CAAG,SAAyBF,CAAI,CAAE3tB,CAAC,EAEvD,OADAuE,GAAOspB,eAAe,CAAC,IAAI,CAAEF,EAAM3tB,EAAG,IAAI,EACnC,IAAI,AACf,EAKEkC,GAAOmc,KAAK,CAAG,SAAeC,CAAC,EAE7B,OADA/Z,GAAO8Z,KAAK,CAAC,IAAI,CAAEC,EAAG,IAAI,EACnB,IAAI,AACf,EAKEpc,GAAOwmB,SAAS,CAAG,SAAmB/L,CAAC,EAErC,OADApY,GAAOmkB,SAAS,CAAC,IAAI,CAAE/L,EAAG,IAAI,EACvB,IAAI,AACf,EAIEza,GAAO0mB,SAAS,CAAG,WAEjB,OADArkB,GAAOqkB,SAAS,CAAC,IAAI,CAAE,IAAI,EACpB,IAAI,AACf,EAIE1mB,GAAOyc,KAAK,CAAG,WACb,IAAI5d,EAAI,IAAI,CAAC6e,QAAQ,CAErB,OADU,IAAIrb,GAAOxD,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAAEA,CAAC,CAAC,GAAG,CAE7H,EAKEmB,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EACxC,IAAIva,EAAI,IAAI,CAAC6e,QAAQ,CACjBiJ,EAAKvN,EAAOsE,QAAQ,CAiBxB,OAhBA7e,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,EAAE,CAAG8nB,CAAE,CAAC,EAAE,CACZ9nB,CAAC,CAAC,GAAG,CAAG8nB,CAAE,CAAC,GAAG,CACd9nB,CAAC,CAAC,GAAG,CAAG8nB,CAAE,CAAC,GAAG,CACd9nB,CAAC,CAAC,GAAG,CAAG8nB,CAAE,CAAC,GAAG,CACd9nB,CAAC,CAAC,GAAG,CAAG8nB,CAAE,CAAC,GAAG,CACd9nB,CAAC,CAAC,GAAG,CAAG8nB,CAAE,CAAC,GAAG,CACd9nB,CAAC,CAAC,GAAG,CAAG8nB,CAAE,CAAC,GAAG,CACP,IAAI,AACf,EAME3mB,GAAO2c,aAAa,CAAG,SAAuBC,CAAK,CAAEC,CAAM,EAC1C,KAAK,IAAhBA,GAAmBA,CAAAA,EAAS,CAAA,EAEhC,IAAI,IADA+J,EAAO,IAAI,CAAClJ,QAAQ,CAChB5hB,EAAI,EAAGA,EAAI,GAAIA,IACnB8qB,CAAI,CAAC9qB,EAAE,CAAG8gB,CAAK,CAAC9gB,EAAI+gB,EAAO,CAE/B,OAAO,IAAI,AACf,EAKE7c,GAAO8c,WAAW,CAAG,SAAqBC,CAAG,CAAEC,CAAS,EACpC,KAAK,IAAnBA,GAAsBA,CAAAA,EAAY,CAAA,EACtC,IAAIne,EAAI,IAAI,CAAC6e,QAAQ,AACrBX,CAAAA,CAAG,CAACC,EAAU,CAAGne,CAAC,CAAC,EAAE,CACrBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,EAAE,CAAGne,CAAC,CAAC,EAAE,CACzBke,CAAG,CAACC,EAAY,GAAG,CAAGne,CAAC,CAAC,GAAG,CAC3Bke,CAAG,CAACC,EAAY,GAAG,CAAGne,CAAC,CAAC,GAAG,CAC3Bke,CAAG,CAACC,EAAY,GAAG,CAAGne,CAAC,CAAC,GAAG,CAC3Bke,CAAG,CAACC,EAAY,GAAG,CAAGne,CAAC,CAAC,GAAG,CAC3Bke,CAAG,CAACC,EAAY,GAAG,CAAGne,CAAC,CAAC,GAAG,CAC3Bke,CAAG,CAACC,EAAY,GAAG,CAAGne,CAAC,CAAC,GAAG,AAC/B,EAMEwD,GAAOwZ,QAAQ,CAAG,SAAkBxc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAClD,IAAIgK,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACnBuJ,EAAKlK,EAAIW,QAAQ,CAEjBwJ,EAAMH,CAAE,CAAC,EAAE,CAAEI,EAAMJ,CAAE,CAAC,EAAE,CAAEK,EAAML,CAAE,CAAC,EAAE,CAAE2I,EAAM3I,CAAE,CAAC,EAAE,CAAEM,EAAMN,CAAE,CAAC,EAAE,CAAEO,EAAMP,CAAE,CAAC,EAAE,CAAEQ,EAAMR,CAAE,CAAC,EAAE,CAAE4I,EAAM5I,CAAE,CAAC,EAAE,CAAES,EAAMT,CAAE,CAAC,EAAE,CAAEU,EAAMV,CAAE,CAAC,EAAE,CAAEW,EAAMX,CAAE,CAAC,GAAG,CAAE6I,EAAM7I,CAAE,CAAC,GAAG,CAAE8I,EAAM9I,CAAE,CAAC,GAAG,CAAE+I,EAAM/I,CAAE,CAAC,GAAG,CAAEgJ,EAAMhJ,CAAE,CAAC,GAAG,CAAEiJ,EAAMjJ,CAAE,CAAC,GAAG,CAEpNY,EAAMX,CAAE,CAAC,EAAE,CAAEY,EAAMZ,CAAE,CAAC,EAAE,CAAEa,EAAMb,CAAE,CAAC,EAAE,CAAEiJ,EAAMjJ,CAAE,CAAC,EAAE,CAAEc,EAAMd,CAAE,CAAC,EAAE,CAAEe,EAAMf,CAAE,CAAC,EAAE,CAAEgB,EAAMhB,CAAE,CAAC,EAAE,CAAEkJ,EAAMlJ,CAAE,CAAC,EAAE,CAAEiB,EAAMjB,CAAE,CAAC,EAAE,CAAEkB,EAAMlB,CAAE,CAAC,EAAE,CAAEmB,EAAMnB,CAAE,CAAC,GAAG,CAAEmJ,EAAMnJ,CAAE,CAAC,GAAG,CAAEoJ,EAAMpJ,CAAE,CAAC,GAAG,CAAEqJ,EAAMrJ,CAAE,CAAC,GAAG,CAAEsJ,EAAMtJ,CAAE,CAAC,GAAG,CAAEuJ,EAAMvJ,CAAE,CAAC,GAAG,AACxNC,CAAAA,CAAE,CAAC,EAAE,CAAGC,EAAMS,EAAMN,EAAMO,EAAMJ,EAAMK,EAAMgI,EAAMI,EAClDhJ,CAAE,CAAC,EAAE,CAAGE,EAAMQ,EAAML,EAAMM,EAAMH,EAAMI,EAAMiI,EAAMG,EAClDhJ,CAAE,CAAC,EAAE,CAAGG,EAAMO,EAAMJ,EAAMK,EAAMF,EAAMG,EAAMkI,EAAME,EAClDhJ,CAAE,CAAC,EAAE,CAAGyI,EAAM/H,EAAMgI,EAAM/H,EAAMgI,EAAM/H,EAAMmI,EAAMC,EAClDhJ,CAAE,CAAC,EAAE,CAAGC,EAAMY,EAAMT,EAAMU,EAAMP,EAAMQ,EAAM6H,EAAMK,EAClDjJ,CAAE,CAAC,EAAE,CAAGE,EAAMW,EAAMR,EAAMS,EAAMN,EAAMO,EAAM8H,EAAMI,EAClDjJ,CAAE,CAAC,EAAE,CAAGG,EAAMU,EAAMP,EAAMQ,EAAML,EAAMM,EAAM+H,EAAMG,EAClDjJ,CAAE,CAAC,EAAE,CAAGyI,EAAM5H,EAAM6H,EAAM5H,EAAM6H,EAAM5H,EAAMgI,EAAME,EAClDjJ,CAAE,CAAC,EAAE,CAAGC,EAAMe,EAAMZ,EAAMa,EAAMV,EAAMW,EAAM0H,EAAMM,EAClDlJ,CAAE,CAAC,EAAE,CAAGE,EAAMc,EAAMX,EAAMY,EAAMT,EAAMU,EAAM2H,EAAMK,EAClDlJ,CAAE,CAAC,GAAG,CAAGG,EAAMa,EAAMV,EAAMW,EAAMR,EAAMS,EAAM4H,EAAMI,EACnDlJ,CAAE,CAAC,GAAG,CAAGyI,EAAMzH,EAAM0H,EAAMzH,EAAM0H,EAAMzH,EAAM6H,EAAMG,EACnDlJ,CAAE,CAAC,GAAG,CAAGC,EAAMkJ,EAAM/I,EAAMgJ,EAAM7I,EAAM8I,EAAMT,EAAMU,EACnDtJ,CAAE,CAAC,GAAG,CAAGE,EAAMiJ,EAAM9I,EAAM+I,EAAM5I,EAAM6I,EAAMR,EAAMS,EACnDtJ,CAAE,CAAC,GAAG,CAAGG,EAAMgJ,EAAM7I,EAAM8I,EAAM3I,EAAM4I,EAAMP,EAAMQ,EACnDtJ,CAAE,CAAC,GAAG,CAAGyI,EAAMU,EAAMT,EAAMU,EAAMT,EAAMU,EAAMN,EAAMO,CACvD,EAMEluB,GAAO8C,MAAM,CAAG,SAAgB9F,CAAI,CAAEC,CAAK,EACzC,IAAIynB,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACvB,OAAO5b,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,EAAE,CAAEC,CAAE,CAAC,EAAE,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,GAAG,CAAEC,CAAE,CAAC,GAAG,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,GAAG,CAAEC,CAAE,CAAC,GAAG,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,GAAG,CAAEC,CAAE,CAAC,GAAG,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,GAAG,CAAEC,CAAE,CAAC,GAAG,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,GAAG,CAAEC,CAAE,CAAC,GAAG,GAAKllB,GAASqD,MAAM,CAAC4hB,CAAE,CAAC,GAAG,CAAEC,CAAE,CAAC,GAAG,CACliB,EAOE3kB,GAAOgZ,IAAI,CAAG,SAAc3O,CAAK,CAAEoC,CAAG,CAAEwM,CAAC,CAAEyB,CAAG,EAC5C,IAAI4J,EAAKja,EAAMgR,QAAQ,CACnB0K,EAAKtZ,EAAI4O,QAAQ,CACjBuJ,EAAKlK,EAAIW,QAAQ,CACjB2K,EAAM,EAAM/M,CAChB2L,CAAAA,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG0B,EAAMD,CAAE,CAAC,EAAE,CAAG9M,EAC9B2L,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG0B,EAAMD,CAAE,CAAC,GAAG,CAAG9M,EACjC2L,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG0B,EAAMD,CAAE,CAAC,GAAG,CAAG9M,EACjC2L,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG0B,EAAMD,CAAE,CAAC,GAAG,CAAG9M,EACjC2L,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG0B,EAAMD,CAAE,CAAC,GAAG,CAAG9M,EACjC2L,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG0B,EAAMD,CAAE,CAAC,GAAG,CAAG9M,EACjC2L,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG0B,EAAMD,CAAE,CAAC,GAAG,CAAG9M,CACrC,EAMEjZ,GAAOuZ,GAAG,CAAG,SAAavc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACxC,IAAIgK,EAAK1nB,EAAKqe,QAAQ,CAClBsJ,EAAK1nB,EAAMoe,QAAQ,CACnBuJ,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,EAAE,CAAGF,CAAE,CAAC,EAAE,CAAGC,CAAE,CAAC,EAAE,CACrBC,CAAE,CAAC,GAAG,CAAGF,CAAE,CAAC,GAAG,CAAGC,CAAE,CAAC,GAAG,CACxBC,CAAE,CAAC,GAAG,CAAGF,CAAE,CAAC,GAAG,CAAGC,CAAE,CAAC,GAAG,CACxBC,CAAE,CAAC,GAAG,CAAGF,CAAE,CAAC,GAAG,CAAGC,CAAE,CAAC,GAAG,CACxBC,CAAE,CAAC,GAAG,CAAGF,CAAE,CAAC,GAAG,CAAGC,CAAE,CAAC,GAAG,CACxBC,CAAE,CAAC,GAAG,CAAGF,CAAE,CAAC,GAAG,CAAGC,CAAE,CAAC,GAAG,CACxBC,CAAE,CAAC,GAAG,CAAGF,CAAE,CAAC,GAAG,CAAGC,CAAE,CAAC,GAAG,AAC5B,EAME3kB,GAAOmuB,cAAc,CAAG,SAAwBpX,CAAM,CAAEqX,CAAM,CAAE1T,CAAG,EACjE,IAAI4J,EAAKvN,EAAOsE,QAAQ,CACpBuJ,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,EAAE,CAAGN,CAAE,CAAC,EAAE,CAAG8J,EAChBxJ,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG8J,EAClBxJ,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG8J,EAClBxJ,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG8J,EAClBxJ,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG8J,EAClBxJ,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG8J,EAClBxJ,CAAE,CAAC,GAAG,CAAGN,CAAE,CAAC,GAAG,CAAG8J,CACtB,EAKEpuB,GAAOmC,kBAAkB,CAAG,SAA4BgY,CAAU,CAAEO,CAAG,EACrE,IAAIkK,EAAKlK,EAAIW,QAAQ,CACjB9Y,EAAI4X,EAAWf,EAAE,CAAE5W,EAAI2X,EAAWd,EAAE,CAAE1W,EAAIwX,EAAWb,EAAE,CAAE1W,EAAIuX,EAAWoB,EAAE,CAC1E0K,EAAK1jB,EAAIA,EACT2jB,EAAK1jB,EAAIA,EACT2jB,EAAKxjB,EAAIA,EACTyjB,EAAK7jB,EAAI0jB,EACTI,EAAK7jB,EAAIyjB,EACTK,EAAK9jB,EAAI0jB,EACTK,EAAK5jB,EAAIsjB,EACTO,EAAK7jB,EAAIujB,EACTO,EAAK9jB,EAAIwjB,EACTO,EAAK9jB,EAAIqjB,EACTU,EAAK/jB,EAAIsjB,EACTU,EAAKhkB,EAAIujB,CACbvB,CAAAA,CAAE,CAAC,EAAE,CAAG,EAAI0B,EAAKG,EACjB7B,CAAE,CAAC,EAAE,CAAGyB,EAAKO,EACbhC,CAAE,CAAC,EAAE,CAAG2B,EAAKI,EACb/B,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAGyB,EAAKO,EACbhC,CAAE,CAAC,EAAE,CAAG,EAAIwB,EAAKK,EACjB7B,CAAE,CAAC,EAAE,CAAG4B,EAAKE,EACb9B,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG2B,EAAKI,EACb/B,CAAE,CAAC,EAAE,CAAG4B,EAAKE,EACb9B,CAAE,CAAC,GAAG,CAAG,EAAIwB,EAAKE,EAClB1B,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,CACb,EAME5kB,GAAOmpB,iBAAiB,CAAG,SAA2BC,CAAI,CAAE3tB,CAAC,CAAEif,CAAG,EAChE,IAGIX,EAAGxe,EAAG0d,EAHN2L,EAAKlK,EAAIW,QAAQ,CACjB9Y,EAAI6mB,EAAKhQ,EAAE,CAAE5W,EAAI4mB,EAAK/P,EAAE,CAAE1W,EAAIymB,EAAK9P,EAAE,CACrC8B,EAAM7C,KAAKmB,IAAI,CAACnX,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,GAEpC4V,KAAKE,GAAG,CAAC2C,GAAO3b,GAASiZ,aAAa,GAI1CnW,GADA6Y,EAAM,EAAIA,EAEV5Y,GAAK4Y,EACLzY,GAAKyY,EACLrB,EAAIxB,KAAKgQ,GAAG,CAAC9sB,GAEbwd,EAAI,EADJ1d,CAAAA,EAAIgd,KAAKiQ,GAAG,CAAC/sB,EAAAA,EAGbmpB,CAAE,CAAC,EAAE,CAAGriB,EAAIA,EAAI0W,EAAI1d,EACpBqpB,CAAE,CAAC,EAAE,CAAGpiB,EAAID,EAAI0W,EAAItW,EAAIoX,EACxB6K,CAAE,CAAC,EAAE,CAAGjiB,EAAIJ,EAAI0W,EAAIzW,EAAIuX,EACxB6K,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAGriB,EAAIC,EAAIyW,EAAItW,EAAIoX,EACxB6K,CAAE,CAAC,EAAE,CAAGpiB,EAAIA,EAAIyW,EAAI1d,EACpBqpB,CAAE,CAAC,EAAE,CAAGjiB,EAAIH,EAAIyW,EAAI1W,EAAIwX,EACxB6K,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAGriB,EAAII,EAAIsW,EAAIzW,EAAIuX,EACxB6K,CAAE,CAAC,EAAE,CAAGpiB,EAAIG,EAAIsW,EAAI1W,EAAIwX,EACxB6K,CAAE,CAAC,GAAG,CAAGjiB,EAAIA,EAAIsW,EAAI1d,EACrBqpB,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACb,EAME5kB,GAAOquB,mBAAmB,CAAG,SAA6BlU,CAAU,CAAEiK,CAAW,CAAE1J,CAAG,EACpF1a,GAAOmC,kBAAkB,CAACgY,EAAYO,GACtC,IAAIkK,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,GAAG,CAAGR,EAAYhL,EAAE,CACvBwL,CAAE,CAAC,GAAG,CAAGR,EAAY/K,EAAE,CACvBuL,CAAE,CAAC,GAAG,CAAGR,EAAY9K,EAAE,AAC3B,EAOEtZ,GAAOsuB,oBAAoB,CAAG,SAA8BxU,CAAK,CAAE1X,CAAQ,CAAEgiB,CAAW,CAAE1J,CAAG,EAC3F,IAAIkK,EAAKlK,EAAIW,QAAQ,CACjB9Y,EAAIH,EAASgX,EAAE,CAAE5W,EAAIJ,EAASiX,EAAE,CAAE1W,EAAIP,EAASkX,EAAE,CAAE1W,EAAIR,EAASmZ,EAAE,CAClE0K,EAAK1jB,EAAIA,EACT2jB,EAAK1jB,EAAIA,EACT2jB,EAAKxjB,EAAIA,EACTyjB,EAAK7jB,EAAI0jB,EACTsI,EAAKhsB,EAAI2jB,EACTsI,EAAKjsB,EAAI4jB,EACTG,EAAK9jB,EAAI0jB,EACTuI,EAAKjsB,EAAI2jB,EACTM,EAAK9jB,EAAIwjB,EACTO,EAAK9jB,EAAIqjB,EACTU,EAAK/jB,EAAIsjB,EACTU,EAAKhkB,EAAIujB,EACTqG,EAAK1S,EAAMV,EAAE,CACbqT,EAAK3S,EAAMT,EAAE,CACbqT,EAAK5S,EAAMR,EAAE,AACjBsL,CAAAA,CAAE,CAAC,EAAE,CAAG,AAAC,CAAA,EAAK0B,CAAAA,EAAKG,CAAAA,CAAC,EAAM+F,EAC1B5H,CAAE,CAAC,EAAE,CAAG,AAAC2J,CAAAA,EAAK3H,CAAAA,EAAM4F,EACpB5H,CAAE,CAAC,EAAE,CAAG,AAAC4J,CAAAA,EAAK7H,CAAAA,EAAM6F,EACpB5H,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,AAAC2J,CAAAA,EAAK3H,CAAAA,EAAM6F,EACpB7H,CAAE,CAAC,EAAE,CAAG,AAAC,CAAA,EAAKwB,CAAAA,EAAKK,CAAAA,CAAC,EAAMgG,EAC1B7H,CAAE,CAAC,EAAE,CAAG,AAAC6J,CAAAA,EAAK/H,CAAAA,EAAM+F,EACpB7H,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,AAAC4J,CAAAA,EAAK7H,CAAAA,EAAM+F,EACpB9H,CAAE,CAAC,EAAE,CAAG,AAAC6J,CAAAA,EAAK/H,CAAAA,EAAMgG,EACpB9H,CAAE,CAAC,GAAG,CAAG,AAAC,CAAA,EAAKwB,CAAAA,EAAKE,CAAAA,CAAC,EAAMoG,EAC3B9H,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAGR,EAAYhL,EAAE,CACvBwL,CAAE,CAAC,GAAG,CAAGR,EAAY/K,EAAE,CACvBuL,CAAE,CAAC,GAAG,CAAGR,EAAY9K,EAAE,CACvBsL,CAAE,CAAC,GAAG,CAAG,CACb,EAKE5kB,GAAO6mB,OAAO,CAAG,SAAiB9M,CAAC,CAAEW,CAAG,EACtC,IAAIkK,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAG7K,EAAEX,EAAE,CACZwL,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG7K,EAAEV,EAAE,CACZuL,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,GAAG,CAAG7K,EAAET,EAAE,CACbsL,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,CACb,EAKE5kB,GAAOokB,WAAW,CAAG,SAAqBA,CAAW,CAAE1J,CAAG,EACxD,IAAIkK,EAAKlK,EAAIW,QAAQ,AACrBuJ,CAAAA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAGR,EAAYhL,EAAE,CACvBwL,CAAE,CAAC,GAAG,CAAGR,EAAY/K,EAAE,CACvBuL,CAAE,CAAC,GAAG,CAAGR,EAAY9K,EAAE,CACvBsL,CAAE,CAAC,GAAG,CAAG,CACb,EAKE5kB,GAAOikB,MAAM,CAAG,SAAgBxnB,CAAC,CAAEie,CAAG,EACpC,IAAI+J,EAAKhoB,EAAE4e,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACjBkI,EAAMkB,CAAE,CAAC,EAAE,CAAEjB,EAAMiB,CAAE,CAAC,EAAE,CAAEhB,EAAMgB,CAAE,CAAC,EAAE,CAAE2C,EAAM3C,CAAE,CAAC,EAAE,CAClDf,EAAMe,CAAE,CAAC,EAAE,CAAEd,EAAMc,CAAE,CAAC,EAAE,CAAEb,EAAMa,CAAE,CAAC,EAAE,CAAE4C,EAAM5C,CAAE,CAAC,EAAE,CAClDZ,EAAMY,CAAE,CAAC,EAAE,CAAEX,EAAMW,CAAE,CAAC,EAAE,CAAEV,EAAMU,CAAE,CAAC,GAAG,CAAE6C,EAAM7C,CAAE,CAAC,GAAG,CACpD8C,EAAM9C,CAAE,CAAC,GAAG,CAAE+C,EAAM/C,CAAE,CAAC,GAAG,CAAEgD,EAAMhD,CAAE,CAAC,GAAG,CAAEiD,EAAMjD,CAAE,CAAC,GAAG,CACtDkD,EAAMpE,EAAMI,EAAMH,EAAME,EACxBkE,EAAMrE,EAAMK,EAAMH,EAAMC,EACxBmE,EAAMtE,EAAM8D,EAAMD,EAAM1D,EACxBoE,EAAMtE,EAAMI,EAAMH,EAAME,EACxBoE,EAAMvE,EAAM6D,EAAMD,EAAMzD,EACxBqE,EAAMvE,EAAM4D,EAAMD,EAAMxD,EACxBqE,EAAMpE,EAAM2D,EAAM1D,EAAMyD,EACxBW,EAAMrE,EAAM4D,EAAM1D,EAAMwD,EACxBY,EAAMtE,EAAM6D,EAAMJ,EAAMC,EACxBa,EAAMtE,EAAM2D,EAAM1D,EAAMyD,EACxBa,EAAMvE,EAAM4D,EAAMJ,EAAME,EACxBc,EAAMvE,EAAM2D,EAAMJ,EAAMG,EACxBR,EAAMU,EAAMW,EAAMV,EAAMS,EAAMR,EAAMO,EAAMN,EAAMK,EAAMJ,EAAMG,EAAMF,EAAMC,EAC5E,GAAI,CAAChB,EACD,OAAO,KAEXA,EAAM,EAAMA,EACZrC,CAAE,CAAC,EAAE,CAAG,AAACjB,CAAAA,EAAM2E,EAAM1E,EAAMyE,EAAMhB,EAAMe,CAAE,EAAKnB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACnB,CAAAA,EAAM4E,EAAM7E,EAAM8E,EAAMlB,EAAMgB,CAAE,EAAKnB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAC4C,CAAAA,EAAMQ,EAAMP,EAAMM,EAAML,EAAMI,CAAE,EAAKb,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACb,CAAAA,EAAMgE,EAAMjE,EAAMkE,EAAMV,EAAMQ,CAAE,EAAKb,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAChB,CAAAA,EAAMuE,EAAMzE,EAAM4E,EAAMjB,EAAMa,CAAE,EAAKjB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACrB,CAAAA,EAAM+E,EAAM7E,EAAM0E,EAAMf,EAAMc,CAAE,EAAKjB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAC6C,CAAAA,EAAMI,EAAMN,EAAMS,EAAMN,EAAME,CAAE,EAAKX,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACf,CAAAA,EAAMmE,EAAMjE,EAAM8D,EAAMP,EAAMM,CAAE,EAAKX,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAAClB,CAAAA,EAAM2E,EAAM1E,EAAMwE,EAAMd,EAAMY,CAAE,EAAKhB,EAC9CrC,CAAE,CAAC,EAAE,CAAG,AAACpB,CAAAA,EAAM2E,EAAM5E,EAAM8E,EAAMjB,EAAMa,CAAE,EAAKhB,EAC9CrC,CAAE,CAAC,GAAG,CAAG,AAAC2C,CAAAA,EAAMQ,EAAMP,EAAMK,EAAMH,EAAMC,CAAE,EAAKV,EAC/CrC,CAAE,CAAC,GAAG,CAAG,AAACd,CAAAA,EAAM+D,EAAMhE,EAAMkE,EAAMT,EAAMK,CAAE,EAAKV,EAC/CrC,CAAE,CAAC,GAAG,CAAG,AAACjB,CAAAA,EAAMuE,EAAMxE,EAAM0E,EAAMxE,EAAMqE,CAAE,EAAKhB,EAC/CrC,CAAE,CAAC,GAAG,CAAG,AAACrB,CAAAA,EAAM6E,EAAM5E,EAAM0E,EAAMzE,EAAMwE,CAAE,EAAKhB,EAC/CrC,CAAE,CAAC,GAAG,CAAG,AAAC4C,CAAAA,EAAMI,EAAML,EAAMO,EAAML,EAAME,CAAE,EAAKV,EAC/CrC,CAAE,CAAC,GAAG,CAAG,AAACf,CAAAA,EAAMiE,EAAMhE,EAAM8D,EAAM7D,EAAM4D,CAAE,EAAKV,CACnD,EAOEjnB,GAAO0uB,MAAM,CAAG,SAAgBC,CAAG,CAAEp1B,CAAM,CAAEuL,CAAE,CAAE4V,CAAG,EAClD,IAAIkK,EAAKlK,EAAIW,QAAQ,CACjBuT,EAAQ5uB,GAAOwS,UAAU,CACzBqc,EAAQ7uB,GAAOyS,UAAU,CACzBqc,EAAQ9uB,GAAO0S,UAAU,CAC7BhT,GAAQkV,QAAQ,CAAC+Z,EAAKp1B,EAAQu1B,GAC9BA,EAAMjV,SAAS,GACfna,GAAQ8U,KAAK,CAAC1P,EAAIgqB,EAAOF,GACzBA,EAAM/U,SAAS,GACfna,GAAQ8U,KAAK,CAACsa,EAAOF,EAAOC,GAC5BjK,CAAE,CAAC,EAAE,CAAGgK,EAAMxV,EAAE,CAChBwL,CAAE,CAAC,EAAE,CAAGiK,EAAMzV,EAAE,CAChBwL,CAAE,CAAC,EAAE,CAAGkK,EAAM1V,EAAE,CAChBwL,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAGgK,EAAMvV,EAAE,CAChBuL,CAAE,CAAC,EAAE,CAAGiK,EAAMxV,EAAE,CAChBuL,CAAE,CAAC,EAAE,CAAGkK,EAAMzV,EAAE,CAChBuL,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAGgK,EAAMtV,EAAE,CAChBsL,CAAE,CAAC,EAAE,CAAGiK,EAAMvV,EAAE,CAChBsL,CAAE,CAAC,GAAG,CAAGkK,EAAMxV,EAAE,CACjBsL,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,CAACllB,GAAQoU,GAAG,CAAC8a,EAAOD,GAC7B/J,CAAE,CAAC,GAAG,CAAG,CAACllB,GAAQoU,GAAG,CAAC+a,EAAOF,GAC7B/J,CAAE,CAAC,GAAG,CAAG,CAACllB,GAAQoU,GAAG,CAACgb,EAAOH,GAC7B/J,CAAE,CAAC,GAAG,CAAG,CACb,EAUE5kB,GAAO+uB,KAAK,CAAG,SAAe/xB,CAAI,CAAEC,CAAK,CAAEslB,CAAM,CAAED,CAAG,CAAEJ,CAAI,CAAEG,CAAG,CAAE3H,CAAG,EACpE,IAAIkK,EAAKlK,EAAIW,QAAQ,CACjB2T,EAAK,EAAKhyB,CAAAA,EAAOC,CAAI,EACrBgyB,EAAK,EAAK1M,CAAAA,EAASD,CAAE,EACrB4M,EAAK,EAAKhN,CAAAA,EAAOG,CAAE,CACvBuC,CAAAA,CAAE,CAAC,EAAE,CAAG,GAAKoK,EACbpK,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,GAAKqK,EACbrK,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,GAAG,CAAG,EAAIsK,EACbtK,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,AAAC5nB,CAAAA,EAAOC,CAAAA,EAAS+xB,EAC1BpK,CAAE,CAAC,GAAG,CAAG,AAACtC,CAAAA,EAAMC,CAAAA,EAAU0M,EAC1BrK,CAAE,CAAC,GAAG,CAAG,AAACvC,CAAAA,EAAMH,CAAAA,EAAQgN,EACxBtK,CAAE,CAAC,GAAG,CAAG,CACb,EAQE5kB,GAAOmvB,WAAW,CAAG,SAAqBC,CAAI,CAAEC,CAAM,CAAEnN,CAAI,CAAEG,CAAG,CAAE3H,CAAG,EACpE,IAAIkK,EAAKlK,EAAIW,QAAQ,CACjBiU,EAAI,EAAM/W,KAAKgX,GAAG,CAACH,EAAO,GAC1BF,EAAK,EAAKhN,CAAAA,EAAOG,CAAE,CACvBuC,CAAAA,CAAE,CAAC,EAAE,CAAG0K,EAAID,EACZzK,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG0K,EACR1K,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,EAAE,CAAG,EACRA,CAAE,CAAC,GAAG,CAAG,AAACvC,CAAAA,EAAMH,CAAAA,EAAQgN,EACxBtK,CAAE,CAAC,GAAG,CAAG,GACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EACTA,CAAE,CAAC,GAAG,CAAG,EAAIvC,EAAMH,EAAOgN,EAC1BtK,CAAE,CAAC,GAAG,CAAG,CACb,EAOE5kB,GAAOspB,eAAe,CAAG,SAAyBtP,CAAC,CAAEoP,CAAI,CAAE3tB,CAAC,CAAEif,CAAG,EAC/D,IAOIX,EAAGxe,EAAG0d,EAPN1W,EAAI6mB,EAAKhQ,EAAE,CAAE5W,EAAI4mB,EAAK/P,EAAE,CAAE1W,EAAIymB,EAAK9P,EAAE,CACrC8B,EAAM7C,KAAKmB,IAAI,CAACnX,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,GACxC,IAAI4V,CAAAA,KAAKE,GAAG,CAAC2C,GAAO3b,GAASiZ,aAAa,AAAbA,GAG7B,IAAIyS,EAAKnR,EAAEqB,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CAGrB9Y,GADA6Y,EAAM,EAAIA,EAEV5Y,GAAK4Y,EACLzY,GAAKyY,EACLrB,EAAIxB,KAAKgQ,GAAG,CAAC9sB,GAEbwd,EAAI,EADJ1d,CAAAA,EAAIgd,KAAKiQ,GAAG,CAAC/sB,EAAAA,EAEb,IAAI8nB,EAAM4H,CAAE,CAAC,EAAE,CAAE3H,EAAM2H,CAAE,CAAC,EAAE,CAAE1H,EAAM0H,CAAE,CAAC,EAAE,CAAE/D,EAAM+D,CAAE,CAAC,EAAE,CAClDzH,EAAMyH,CAAE,CAAC,EAAE,CAAExH,EAAMwH,CAAE,CAAC,EAAE,CAAEvH,EAAMuH,CAAE,CAAC,EAAE,CAAE9D,EAAM8D,CAAE,CAAC,EAAE,CAClDtH,EAAMsH,CAAE,CAAC,EAAE,CAAErH,EAAMqH,CAAE,CAAC,EAAE,CAAEpH,EAAMoH,CAAE,CAAC,GAAG,CAAE7D,EAAM6D,CAAE,CAAC,GAAG,CAEpD7C,EAAM/lB,EAAIA,EAAI0W,EAAI1d,EAClBurB,EAAMtkB,EAAID,EAAI0W,EAAItW,EAAIoX,EACtByV,EAAM7sB,EAAIJ,EAAI0W,EAAIzW,EAAIuX,EACtB0V,EAAMltB,EAAIC,EAAIyW,EAAItW,EAAIoX,EACtBgN,EAAMvkB,EAAIA,EAAIyW,EAAI1d,EAClBm0B,EAAM/sB,EAAIH,EAAIyW,EAAI1W,EAAIwX,EACtB4V,EAAMptB,EAAII,EAAIsW,EAAIzW,EAAIuX,EACtBiN,EAAMxkB,EAAIG,EAAIsW,EAAI1W,EAAIwX,EACtB6V,EAAMjtB,EAAIA,EAAIsW,EAAI1d,CAEtBqpB,CAAAA,CAAE,CAAC,EAAE,CAAGrB,EAAM+E,EAAM5E,EAAMoD,EAAMjD,EAAM2L,EACtC5K,CAAE,CAAC,EAAE,CAAGpB,EAAM8E,EAAM3E,EAAMmD,EAAMhD,EAAM0L,EACtC5K,CAAE,CAAC,EAAE,CAAGnB,EAAM6E,EAAM1E,EAAMkD,EAAM/C,EAAMyL,EACtC5K,CAAE,CAAC,EAAE,CAAGwC,EAAMkB,EAAMjB,EAAMP,EAAMQ,EAAMkI,EACtC5K,CAAE,CAAC,EAAE,CAAGrB,EAAMkM,EAAM/L,EAAMqD,EAAMlD,EAAM6L,EACtC9K,CAAE,CAAC,EAAE,CAAGpB,EAAMiM,EAAM9L,EAAMoD,EAAMjD,EAAM4L,EACtC9K,CAAE,CAAC,EAAE,CAAGnB,EAAMgM,EAAM7L,EAAMmD,EAAMhD,EAAM2L,EACtC9K,CAAE,CAAC,EAAE,CAAGwC,EAAMqI,EAAMpI,EAAMN,EAAMO,EAAMoI,EACtC9K,CAAE,CAAC,EAAE,CAAGrB,EAAMoM,EAAMjM,EAAMsD,EAAMnD,EAAM+L,EACtChL,CAAE,CAAC,EAAE,CAAGpB,EAAMmM,EAAMhM,EAAMqD,EAAMlD,EAAM8L,EACtChL,CAAE,CAAC,GAAG,CAAGnB,EAAMkM,EAAM/L,EAAMoD,EAAMjD,EAAM6L,EACvChL,CAAE,CAAC,GAAG,CAAGwC,EAAMuI,EAAMtI,EAAML,EAAMM,EAAMsI,EACnC5V,IAAMU,IAENkK,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CACfvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CACfvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CACfvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,EAEvB,EAMEnrB,GAAO8Z,KAAK,CAAG,SAAeE,CAAC,CAAED,CAAC,CAAEW,CAAG,EACrC,IAAIyQ,EAAKnR,EAAEqB,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACjB9Y,EAAIwX,EAAEX,EAAE,CAAE5W,EAAIuX,EAAEV,EAAE,CAAE1W,EAAIoX,EAAET,EAAE,AAChCsL,CAAAA,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAChBqiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAChBqiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAChBqiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAChBqiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG3oB,EAChBoiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG3oB,EAChBoiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG3oB,EAChBoiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAG3oB,EAChBoiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAGxoB,EAChBiiB,CAAE,CAAC,EAAE,CAAGuG,CAAE,CAAC,EAAE,CAAGxoB,EAChBiiB,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CAAGxoB,EAClBiiB,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CAAGxoB,EAClBiiB,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CACfvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CACfvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,CACfvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,GAAG,AACnB,EAMEnrB,GAAOmkB,SAAS,CAAG,SAAmBnK,CAAC,CAAE5B,CAAC,CAAEsC,CAAG,EAC7C,IAAIyQ,EAAKnR,EAAEqB,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACjB9Y,EAAI6V,EAAEgB,EAAE,CAAE5W,EAAI4V,EAAEiB,EAAE,CAAE1W,EAAIyV,EAAEkB,EAAE,CAChC,GAAIU,IAAMU,EACNkK,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAAI4oB,CAAE,CAAC,EAAE,CAAG3oB,EAAI2oB,CAAE,CAAC,EAAE,CAAGxoB,EAAIwoB,CAAE,CAAC,GAAG,CACnDvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAAI4oB,CAAE,CAAC,EAAE,CAAG3oB,EAAI2oB,CAAE,CAAC,EAAE,CAAGxoB,EAAIwoB,CAAE,CAAC,GAAG,CACnDvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAAI4oB,CAAE,CAAC,EAAE,CAAG3oB,EAAI2oB,CAAE,CAAC,GAAG,CAAGxoB,EAAIwoB,CAAE,CAAC,GAAG,CACpDvG,CAAE,CAAC,GAAG,CAAGuG,CAAE,CAAC,EAAE,CAAG5oB,EAAI4oB,CAAE,CAAC,EAAE,CAAG3oB,EAAI2oB,CAAE,CAAC,GAAG,CAAGxoB,EAAIwoB,CAAE,CAAC,GAAG,KACjD,CACH,IAAI5H,EAAM4H,CAAE,CAAC,EAAE,CAAE3H,EAAM2H,CAAE,CAAC,EAAE,CAAE1H,EAAM0H,CAAE,CAAC,EAAE,CAAE/D,EAAM+D,CAAE,CAAC,EAAE,CAClDzH,EAAMyH,CAAE,CAAC,EAAE,CAAExH,EAAMwH,CAAE,CAAC,EAAE,CAAEvH,EAAMuH,CAAE,CAAC,EAAE,CAAE9D,EAAM8D,CAAE,CAAC,EAAE,CAClDtH,EAAMsH,CAAE,CAAC,EAAE,CAAErH,EAAMqH,CAAE,CAAC,EAAE,CAAEpH,EAAMoH,CAAE,CAAC,GAAG,CAAE7D,EAAM6D,CAAE,CAAC,GAAG,AACxDvG,CAAAA,CAAE,CAAC,EAAE,CAAGrB,EAAKqB,CAAE,CAAC,EAAE,CAAGpB,EAAKoB,CAAE,CAAC,EAAE,CAAGnB,EAAKmB,CAAE,CAAC,EAAE,CAAGwC,EAC/CxC,CAAE,CAAC,EAAE,CAAGlB,EAAKkB,CAAE,CAAC,EAAE,CAAGjB,EAAKiB,CAAE,CAAC,EAAE,CAAGhB,EAAKgB,CAAE,CAAC,EAAE,CAAGyC,EAC/CzC,CAAE,CAAC,EAAE,CAAGf,EAAKe,CAAE,CAAC,EAAE,CAAGd,EAAKc,CAAE,CAAC,GAAG,CAAGb,EAAKa,CAAE,CAAC,GAAG,CAAG0C,EACjD1C,CAAE,CAAC,GAAG,CAAGrB,EAAMhhB,EAAImhB,EAAMlhB,EAAIqhB,EAAMlhB,EAAIwoB,CAAE,CAAC,GAAG,CAC7CvG,CAAE,CAAC,GAAG,CAAGpB,EAAMjhB,EAAIohB,EAAMnhB,EAAIshB,EAAMnhB,EAAIwoB,CAAE,CAAC,GAAG,CAC7CvG,CAAE,CAAC,GAAG,CAAGnB,EAAMlhB,EAAIqhB,EAAMphB,EAAIuhB,EAAMphB,EAAIwoB,CAAE,CAAC,GAAG,CAC7CvG,CAAE,CAAC,GAAG,CAAGwC,EAAM7kB,EAAI8kB,EAAM7kB,EAAI8kB,EAAM3kB,EAAIwoB,CAAE,CAAC,GAAG,AACjD,CACJ,EAKEnrB,GAAOqkB,SAAS,CAAG,SAAmB5nB,CAAC,CAAEie,CAAG,EAC1C,IAAI+J,EAAKhoB,EAAE4e,QAAQ,CACfuJ,EAAKlK,EAAIW,QAAQ,CACrB,GAAIX,IAAQje,EAAG,CACX,IAAI+mB,EAAMiB,CAAE,CAAC,EAAE,CACXhB,EAAMgB,CAAE,CAAC,EAAE,CACX2C,EAAM3C,CAAE,CAAC,EAAE,CACXb,EAAMa,CAAE,CAAC,EAAE,CACX4C,EAAM5C,CAAE,CAAC,EAAE,CACX6C,EAAM7C,CAAE,CAAC,GAAG,AAChBG,CAAAA,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,GAAG,CACdG,CAAE,CAAC,EAAE,CAAGpB,EACRoB,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,GAAG,CACdG,CAAE,CAAC,EAAE,CAAGnB,EACRmB,CAAE,CAAC,EAAE,CAAGhB,EACRgB,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,GAAG,CACfG,CAAE,CAAC,GAAG,CAAGwC,EACTxC,CAAE,CAAC,GAAG,CAAGyC,EACTzC,CAAE,CAAC,GAAG,CAAG0C,OAET1C,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,GAAG,CACdG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,GAAG,CACdG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,EAAE,CAAGH,CAAE,CAAC,EAAE,CACbG,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,GAAG,CACfG,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,GAAG,CACfG,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,EAAE,CACdG,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,EAAE,CACdG,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,GAAG,CACfG,CAAE,CAAC,GAAG,CAAGH,CAAE,CAAC,GAAG,AAEvB,EACOzkB,GAGPA,CAAAA,GAAOwS,UAAU,CAAG,IAAI9S,GAGxBM,GAAOyS,UAAU,CAAG,IAAI/S,GAGxBM,GAAO0S,UAAU,CAAG,IAAIhT,GAGxBM,GAAOssB,UAAU,CAAG,IAAIxsB,GAGUE,GAAO6vB,SAAS,CAAG,IAAI7vB,GAAO,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAkD3I,IAAIC,IAcFtC,CANEA,GAASsC,CAPJA,GAAT,SAAiBsC,CAAC,CAAEC,CAAC,EACP,KAAK,IAAXD,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXC,GAAcA,CAAAA,EAAI,CAAA,EACL,IAAI,CAAC2W,eAAe,CAAG,KACxC,IAAI,CAACC,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,CACd,GACqBlI,SAAS,EAMrBuI,GAAG,CAAG,SAAaN,CAAC,CAAEC,CAAC,EAI5B,OAHA,IAAI,CAAC4W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC2W,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO4b,GAAG,CAAG,SAAatc,CAAK,EAI7B,OAHA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACF,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAOiX,QAAQ,CAAG,SAAkB3X,CAAK,EAIvC,OAHA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACF,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO6b,QAAQ,CAAG,SAAkBvc,CAAK,EAIvC,OAHA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACF,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8b,MAAM,CAAG,SAAgBxc,CAAK,EAInC,OAHA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACF,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOjE,MAAM,CAAG,WACd,IAAkB0f,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAC9C,OAAOd,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EACpC,EAIE1b,GAAOgc,aAAa,CAAG,WACrB,IAAkBP,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAC9C,OAAOD,EAAKA,EAAKC,EAAKA,CAC1B,EAIE1b,GAAOic,MAAM,CAAG,WAId,OAHA,IAAI,CAACR,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACC,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACF,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOkc,SAAS,CAAG,WAEjB,OADA5Z,GAAQ4Z,SAAS,CAAC,IAAI,CAAE,IAAI,EACrB,IAAI,AACf,EAKElc,GAAOmc,KAAK,CAAG,SAAeC,CAAC,EAI7B,OAHA,IAAI,CAACX,EAAE,EAAIW,EACX,IAAI,CAACV,EAAE,EAAIU,EACX,IAAI,CAACZ,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOyc,KAAK,CAAG,WACb,OAAO,IAAIna,GAAQ,IAAI,CAACmZ,EAAE,CAAE,IAAI,CAACC,EAAE,CACvC,EAKE1b,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EAIxC,OAHA,IAAI,CAACqC,EAAE,CAAGrC,EAAOxU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGtC,EAAOvU,CAAC,CAClB,IAAI,CAAC2W,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO0c,MAAM,CAAG,SAAgB9gB,CAAM,EAGpC,OAFAA,EAAOgJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB7f,EAAOiJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CACX9f,CACX,EAMEoE,GAAO2c,aAAa,CAAG,SAAuBC,CAAK,CAAEC,CAAM,EAKzD,OAJe,KAAK,IAAhBA,GAAmBA,CAAAA,EAAS,CAAA,EAChC,IAAI,CAACpB,EAAE,CAAGmB,CAAK,CAACC,EAAO,CACvB,IAAI,CAACnB,EAAE,CAAGkB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAACrB,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8c,WAAW,CAAG,SAAqBC,CAAG,CAAEC,CAAS,EACpC,KAAK,IAAnBA,GAAsBA,CAAAA,EAAY,CAAA,EACtCD,CAAG,CAACC,EAAU,CAAG,IAAI,CAACvB,EAAE,CACxBsB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACtB,EAAE,AAChC,EAIE1b,GAAOid,MAAM,CAAG,WACd,MAAO,CACHrY,EAAG,IAAI,CAAC6W,EAAE,CACV5W,EAAG,IAAI,CAAC6W,EAAE,AACd,CACJ,EAMEpZ,GAAQsZ,GAAG,CAAG,SAAavc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMElZ,GAAQ2U,QAAQ,CAAG,SAAkB5X,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACnDA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMElZ,GAAQuZ,QAAQ,CAAG,SAAkBxc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACnDA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMElZ,GAAQwZ,MAAM,CAAG,SAAgBzc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAC/CA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMElZ,GAAQ6T,GAAG,CAAG,SAAa9W,CAAI,CAAEC,CAAK,EACpC,OAAOD,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAAGpc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,AAClD,EAMEpZ,GAAQ4T,QAAQ,CAAG,SAAkB7W,CAAI,CAAEC,CAAK,EAC9C,IAAIsF,EAAItF,EAAMmc,EAAE,CAAGpc,EAAKoc,EAAE,CACtB5W,EAAIvF,EAAMoc,EAAE,CAAGrc,EAAKqc,EAAE,CAC1B,OAAOd,KAAKmB,IAAI,CAACnX,EAAIA,EAAIC,EAAIA,EACjC,EAMEvC,GAAQkb,eAAe,CAAG,SAAyBne,CAAI,CAAEC,CAAK,EAC5D,IAAIsF,EAAItF,EAAMmc,EAAE,CAAGpc,EAAKoc,EAAE,CACtB5W,EAAIvF,EAAMoc,EAAE,CAAGrc,EAAKqc,EAAE,CAC1B,OAAO9W,EAAIA,EAAIC,EAAIA,CACvB,EAMEvC,GAAQ6C,MAAM,CAAG,SAAgB9F,CAAI,CAAEC,CAAK,EAC1C,OAAOwC,GAASqD,MAAM,CAAC9F,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,GAAK3Z,GAASqD,MAAM,CAAC9F,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,CAClF,EAOEpZ,GAAQ+Y,IAAI,CAAG,SAAchc,CAAI,CAAEC,CAAK,CAAEgc,CAAC,CAAEyB,CAAG,EAC9C,IAAItB,EAAKpc,EAAKoc,EAAE,CAAEC,EAAKrc,EAAKqc,EAAE,AAC9BqB,CAAAA,EAAItB,EAAE,CAAGA,EAAMnc,AAAAA,CAAAA,EAAMmc,EAAE,CAAGA,CAAC,EAAKH,EAChCyB,EAAIrB,EAAE,CAAGA,EAAMpc,AAAAA,CAAAA,EAAMoc,EAAE,CAAGA,CAAC,EAAKJ,EAChCyB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMElZ,GAAQqY,GAAG,CAAG,SAAatb,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGb,KAAKD,GAAG,CAACtb,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,EACnCsB,EAAIrB,EAAE,CAAGd,KAAKD,GAAG,CAACtb,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,EACnCqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMElZ,GAAQoY,GAAG,CAAG,SAAarb,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGb,KAAKF,GAAG,CAACrb,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,EACnCsB,EAAIrB,EAAE,CAAGd,KAAKF,GAAG,CAACrb,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,EACnCqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKElZ,GAAQ2Z,MAAM,CAAG,SAAgB5c,CAAI,CAAE0d,CAAG,EACxCA,EAAItB,EAAE,CAAG,CAACpc,EAAKoc,EAAE,CACjBsB,EAAIrB,EAAE,CAAG,CAACrc,EAAKqc,EAAE,CACjBqB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKElZ,GAAQ4Z,SAAS,CAAG,SAAmB7c,CAAI,CAAE0d,CAAG,EAC9C,IAAItB,EAAKpc,EAAKoc,EAAE,CAAEC,EAAKrc,EAAKqc,EAAE,CAC1B+B,EAAM7C,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,GAC/B+B,EAAM3b,GAASiZ,aAAa,GAC5B0C,EAAM,EAAIA,EACVV,EAAItB,EAAE,CAAGA,EAAKgC,EACdV,EAAIrB,EAAE,CAAGA,EAAK+B,EACdV,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,GAElD,EAMElZ,GAAQ6Z,KAAK,CAAG,SAAe9c,CAAI,CAAE+c,CAAC,CAAEW,CAAG,EACzCA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGW,EACnBW,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGU,EACnBW,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EACAjf,GAAc+F,GAAS,CACnB,CACIhG,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC0V,EAAE,AAClB,EACAvW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACke,EAAE,CAAGle,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2V,EAAE,AAClB,EACAxW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACme,EAAE,CAAGne,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACH,EACMlZ,GAGUA,CAAAA,GAAQ+b,KAAK,CAAG,IAAI/b,GAAQ,EAAK,GAGjCA,GAAQgc,IAAI,CAAG,IAAIhc,GAAQ,EAAK,GAKjD,IAAIC,IAoBFvC,CAREA,GAASuC,CAXJA,GAAT,SAAiBqC,CAAC,CAAEC,CAAC,CAAEG,CAAC,CAAEC,CAAC,EACb,KAAK,IAAXL,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXC,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXG,GAAcA,CAAAA,EAAI,CAAA,EACZ,KAAK,IAAXC,GAAcA,CAAAA,EAAI,CAAA,EACL,IAAI,CAACuW,eAAe,CAAG,KACxC,IAAI,CAACC,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG3W,EACV,IAAI,CAAC4Y,EAAE,CAAG3Y,CACd,GACqBtI,SAAS,EAQrBuI,GAAG,CAAG,SAAaN,CAAC,CAAEC,CAAC,CAAEG,CAAC,CAAEC,CAAC,EAMlC,OALA,IAAI,CAACwW,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG7W,EACV,IAAI,CAAC8W,EAAE,CAAG3W,EACV,IAAI,CAAC4Y,EAAE,CAAG3Y,EACV,IAAI,CAACuW,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO4b,GAAG,CAAG,SAAatc,CAAK,EAM7B,OALA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACiC,EAAE,EAAIte,EAAMse,EAAE,CACnB,IAAI,CAACpC,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAOiX,QAAQ,CAAG,SAAkB3X,CAAK,EAMvC,OALA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACiC,EAAE,EAAIte,EAAMse,EAAE,CACnB,IAAI,CAACpC,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO6b,QAAQ,CAAG,SAAkBvc,CAAK,EAMvC,OALA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACiC,EAAE,EAAIte,EAAMse,EAAE,CACnB,IAAI,CAACpC,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8b,MAAM,CAAG,SAAgBxc,CAAK,EAMnC,OALA,IAAI,CAACmc,EAAE,EAAInc,EAAMmc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIpc,EAAMoc,EAAE,CACnB,IAAI,CAACC,EAAE,EAAIrc,EAAMqc,EAAE,CACnB,IAAI,CAACiC,EAAE,EAAIte,EAAMse,EAAE,CACnB,IAAI,CAACpC,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOjE,MAAM,CAAG,WACd,IAAkB0f,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CAAEiC,EAAKhX,AAAxD,IAAI,CAA0DgX,EAAE,CAC5E,OAAOhD,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKiC,EAAKA,EACxD,EAIE5d,GAAOgc,aAAa,CAAG,WACrB,IAAkBP,EAAK7U,AAAX,IAAI,CAAa6U,EAAE,CAAEC,EAAK9U,AAA1B,IAAI,CAA4B8U,EAAE,CAAEC,EAAK/U,AAAzC,IAAI,CAA2C+U,EAAE,CAAEiC,EAAKhX,AAAxD,IAAI,CAA0DgX,EAAE,CAC5E,OAAOnC,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKiC,EAAKA,CAC9C,EAIE5d,GAAOic,MAAM,CAAG,WAMd,OALA,IAAI,CAACR,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACC,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACC,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACiC,EAAE,CAAG,CAAC,IAAI,CAACA,EAAE,CAClB,IAAI,CAACpC,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOkc,SAAS,CAAG,WAEjB,OADA3Z,GAAQ2Z,SAAS,CAAC,IAAI,CAAE,IAAI,EACrB,IAAI,AACf,EAKElc,GAAOmc,KAAK,CAAG,SAAeC,CAAC,EAM7B,OALA,IAAI,CAACX,EAAE,EAAIW,EACX,IAAI,CAACV,EAAE,EAAIU,EACX,IAAI,CAACT,EAAE,EAAIS,EACX,IAAI,CAACwB,EAAE,EAAIxB,EACX,IAAI,CAACZ,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAIExb,GAAOyc,KAAK,CAAG,WAEb,OADU,IAAIla,GAAQ,IAAI,CAACkZ,EAAE,CAAE,IAAI,CAACC,EAAE,CAAE,IAAI,CAACC,EAAE,CAAE,IAAI,CAACiC,EAAE,CAE5D,EAKE5d,GAAOiW,QAAQ,CAAG,SAAkBmD,CAAM,EAMxC,OALA,IAAI,CAACqC,EAAE,CAAGrC,EAAOxU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGtC,EAAOvU,CAAC,CAClB,IAAI,CAAC8W,EAAE,CAAGvC,EAAOpU,CAAC,CAClB,IAAI,CAAC4Y,EAAE,CAAGxE,EAAOnU,CAAC,CAClB,IAAI,CAACuW,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO0c,MAAM,CAAG,SAAgB9gB,CAAM,EAKpC,OAJAA,EAAOgJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB7f,EAAOiJ,CAAC,CAAG,IAAI,CAAC6W,EAAE,CAClB9f,EAAOoJ,CAAC,CAAG,IAAI,CAAC2W,EAAE,CAClB/f,EAAOqJ,CAAC,CAAG,IAAI,CAAC2Y,EAAE,CACXhiB,CACX,EAMEoE,GAAO2c,aAAa,CAAG,SAAuBC,CAAK,CAAEC,CAAM,EAOzD,OANe,KAAK,IAAhBA,GAAmBA,CAAAA,EAAS,CAAA,EAChC,IAAI,CAACpB,EAAE,CAAGmB,CAAK,CAACC,EAAO,CACvB,IAAI,CAACnB,EAAE,CAAGkB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAAClB,EAAE,CAAGiB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAACe,EAAE,CAAGhB,CAAK,CAACC,EAAS,EAAE,CAC3B,IAAI,CAACrB,eAAe,EAAI,IAAI,CAACA,eAAe,GACrC,IAAI,AACf,EAKExb,GAAO8c,WAAW,CAAG,SAAqBC,CAAG,CAAEC,CAAS,EACpC,KAAK,IAAnBA,GAAsBA,CAAAA,EAAY,CAAA,EACtCD,CAAG,CAACC,EAAU,CAAG,IAAI,CAACvB,EAAE,CACxBsB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACtB,EAAE,CAC5BqB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACrB,EAAE,CAC5BoB,CAAG,CAACC,EAAY,EAAE,CAAG,IAAI,CAACY,EAAE,AAChC,EAIE5d,GAAOid,MAAM,CAAG,WACd,MAAO,CACHrY,EAAG,IAAI,CAAC6W,EAAE,CACV5W,EAAG,IAAI,CAAC6W,EAAE,CACV1W,EAAG,IAAI,CAAC2W,EAAE,CACV1W,EAAG,IAAI,CAAC2Y,EAAE,AACd,CACJ,EAMErb,GAAQqZ,GAAG,CAAG,SAAavc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIa,EAAE,CAAGve,EAAKue,EAAE,CAAGte,EAAMse,EAAE,CAC3Bb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQ0U,QAAQ,CAAG,SAAkB5X,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACnDA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIa,EAAE,CAAGve,EAAKue,EAAE,CAAGte,EAAMse,EAAE,CAC3Bb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQsZ,QAAQ,CAAG,SAAkBxc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACnDA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIa,EAAE,CAAGve,EAAKue,EAAE,CAAGte,EAAMse,EAAE,CAC3Bb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQuZ,MAAM,CAAG,SAAgBzc,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EAC/CA,EAAItB,EAAE,CAAGpc,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAC3BsB,EAAIrB,EAAE,CAAGrc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAC3BqB,EAAIpB,EAAE,CAAGtc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAC3BoB,EAAIa,EAAE,CAAGve,EAAKue,EAAE,CAAGte,EAAMse,EAAE,CAC3Bb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQ4T,GAAG,CAAG,SAAa9W,CAAI,CAAEC,CAAK,EACpC,OAAOD,EAAKoc,EAAE,CAAGnc,EAAMmc,EAAE,CAAGpc,EAAKqc,EAAE,CAAGpc,EAAMoc,EAAE,CAAGrc,EAAKsc,EAAE,CAAGrc,EAAMqc,EAAE,CAAGtc,EAAKue,EAAE,CAAGte,EAAMse,EAAE,AAC5F,EAMErb,GAAQ2T,QAAQ,CAAG,SAAkBpX,CAAC,CAAE+b,CAAC,EACvC,IAAIjW,EAAIiW,EAAEY,EAAE,CAAG3c,EAAE2c,EAAE,CACf5W,EAAIgW,EAAEa,EAAE,CAAG5c,EAAE4c,EAAE,CACf1W,EAAI6V,EAAEc,EAAE,CAAG7c,EAAE6c,EAAE,CACf1W,EAAI4V,EAAE+C,EAAE,CAAG9e,EAAE8e,EAAE,CACnB,OAAOhD,KAAKmB,IAAI,CAACnX,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,EAAIC,EAAIA,EACjD,EAME1C,GAAQib,eAAe,CAAG,SAAyB1e,CAAC,CAAE+b,CAAC,EACrD,IAAIjW,EAAIiW,EAAEY,EAAE,CAAG3c,EAAE2c,EAAE,CACf5W,EAAIgW,EAAEa,EAAE,CAAG5c,EAAE4c,EAAE,CACf1W,EAAI6V,EAAEc,EAAE,CAAG7c,EAAE6c,EAAE,CACf1W,EAAI4V,EAAE+C,EAAE,CAAG9e,EAAE8e,EAAE,CACnB,OAAOhZ,EAAIA,EAAIC,EAAIA,EAAIG,EAAIA,EAAIC,EAAIA,CACvC,EAME1C,GAAQ4C,MAAM,CAAG,SAAgB9F,CAAI,CAAEC,CAAK,EAC1C,OAAOwC,GAASqD,MAAM,CAAC9F,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,GAAK3Z,GAASqD,MAAM,CAAC9F,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,GAAK5Z,GAASqD,MAAM,CAAC9F,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,GAAK7Z,GAASqD,MAAM,CAAC9F,EAAKue,EAAE,CAAEte,EAAMse,EAAE,CAC9J,EAOErb,GAAQ8Y,IAAI,CAAG,SAAc3O,CAAK,CAAEoC,CAAG,CAAEwM,CAAC,CAAEyB,CAAG,EAC7C,IAAItB,EAAK/O,EAAM+O,EAAE,CAAEC,EAAKhP,EAAMgP,EAAE,CAAEC,EAAKjP,EAAMiP,EAAE,CAAEiC,EAAKlR,EAAMkR,EAAE,AAC9Db,CAAAA,EAAItB,EAAE,CAAGA,EAAM3M,AAAAA,CAAAA,EAAI2M,EAAE,CAAGA,CAAC,EAAKH,EAC9ByB,EAAIrB,EAAE,CAAGA,EAAM5M,AAAAA,CAAAA,EAAI4M,EAAE,CAAGA,CAAC,EAAKJ,EAC9ByB,EAAIpB,EAAE,CAAGA,EAAM7M,AAAAA,CAAAA,EAAI6M,EAAE,CAAGA,CAAC,EAAKL,EAC9ByB,EAAIa,EAAE,CAAGA,EAAM9O,AAAAA,CAAAA,EAAI8O,EAAE,CAAGA,CAAC,EAAKtC,EAC9ByB,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQoY,GAAG,CAAG,SAAatb,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGb,KAAKD,GAAG,CAACtb,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,EACnCsB,EAAIrB,EAAE,CAAGd,KAAKD,GAAG,CAACtb,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,EACnCqB,EAAIpB,EAAE,CAAGf,KAAKD,GAAG,CAACtb,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,EACnCoB,EAAIa,EAAE,CAAGhD,KAAKD,GAAG,CAACtb,EAAKue,EAAE,CAAEte,EAAMse,EAAE,EACnCb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQmY,GAAG,CAAG,SAAarb,CAAI,CAAEC,CAAK,CAAEyd,CAAG,EACzCA,EAAItB,EAAE,CAAGb,KAAKF,GAAG,CAACrb,EAAKoc,EAAE,CAAEnc,EAAMmc,EAAE,EACnCsB,EAAIrB,EAAE,CAAGd,KAAKF,GAAG,CAACrb,EAAKqc,EAAE,CAAEpc,EAAMoc,EAAE,EACnCqB,EAAIpB,EAAE,CAAGf,KAAKF,GAAG,CAACrb,EAAKsc,EAAE,CAAErc,EAAMqc,EAAE,EACnCoB,EAAIa,EAAE,CAAGhD,KAAKF,GAAG,CAACrb,EAAKue,EAAE,CAAEte,EAAMse,EAAE,EACnCb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEjZ,GAAQ0Z,MAAM,CAAG,SAAgBnd,CAAC,CAAEie,CAAG,EACrCA,EAAItB,EAAE,CAAG,CAAC3c,EAAE2c,EAAE,CACdsB,EAAIrB,EAAE,CAAG,CAAC5c,EAAE4c,EAAE,CACdqB,EAAIpB,EAAE,CAAG,CAAC7c,EAAE6c,EAAE,CACdoB,EAAIa,EAAE,CAAG,CAAC9e,EAAE8e,EAAE,CACdb,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAKEjZ,GAAQ2Z,SAAS,CAAG,SAAmBpd,CAAC,CAAEie,CAAG,EAC3C,IAAItB,EAAK3c,EAAE2c,EAAE,CAAEC,EAAK5c,EAAE4c,EAAE,CAAEC,EAAK7c,EAAE6c,EAAE,CAAEiC,EAAK9e,EAAE8e,EAAE,CAC1CH,EAAM7C,KAAKmB,IAAI,CAACN,EAAKA,EAAKC,EAAKA,EAAKC,EAAKA,EAAKiC,EAAKA,GACnDH,EAAM3b,GAASiZ,aAAa,GAC5B0C,EAAM,EAAIA,EACVV,EAAItB,EAAE,CAAGA,EAAKgC,EACdV,EAAIrB,EAAE,CAAGA,EAAK+B,EACdV,EAAIpB,EAAE,CAAGA,EAAK8B,EACdV,EAAIa,EAAE,CAAGA,EAAKH,EACdV,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,GAElD,EAMEjZ,GAAQ4Z,KAAK,CAAG,SAAerd,CAAC,CAAEsd,CAAC,CAAEW,CAAG,EACtCA,EAAItB,EAAE,CAAG3c,EAAE2c,EAAE,CAAGW,EAChBW,EAAIrB,EAAE,CAAG5c,EAAE4c,EAAE,CAAGU,EAChBW,EAAIpB,EAAE,CAAG7c,EAAE6c,EAAE,CAAGS,EAChBW,EAAIa,EAAE,CAAG9e,EAAE8e,EAAE,CAAGxB,EAChBW,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQ6B,SAAS,CAAG,SAAmBqW,CAAC,CAAE4B,CAAC,CAAEU,CAAG,EAC9C,IAAItB,EAAKhB,EAAEgB,EAAE,CAAEC,EAAKjB,EAAEiB,EAAE,CAAEC,EAAKlB,EAAEkB,EAAE,CAAEiC,EAAKnD,EAAEmD,EAAE,CAC1C/e,EAAIwd,EAAEqB,QAAQ,AAClBX,CAAAA,EAAItB,EAAE,CAAGA,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAG+e,EAAK/e,CAAC,CAAC,GAAG,CACvDke,EAAIrB,EAAE,CAAGD,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,EAAE,CAAG+e,EAAK/e,CAAC,CAAC,GAAG,CACvDke,EAAIpB,EAAE,CAAGF,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAG+e,EAAK/e,CAAC,CAAC,GAAG,CACxDke,EAAIa,EAAE,CAAGnC,EAAK5c,CAAC,CAAC,EAAE,CAAG6c,EAAK7c,CAAC,CAAC,EAAE,CAAG8c,EAAK9c,CAAC,CAAC,GAAG,CAAG+e,EAAK/e,CAAC,CAAC,GAAG,CACxDke,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EAMEjZ,GAAQga,eAAe,CAAG,SAAyB9B,CAAC,CAAE0X,CAAC,CAAEpV,CAAG,EAC1D,IAAInY,EAAI6V,EAAEgB,EAAE,CAAE5W,EAAI4V,EAAEiB,EAAE,CAAE1W,EAAIyV,EAAEkB,EAAE,CAAE1W,EAAIwV,EAAEmD,EAAE,CACtCC,EAAKsU,EAAE1W,EAAE,CACTqC,EAAKqU,EAAEzW,EAAE,CACTqC,EAAKoU,EAAExW,EAAE,CACTqC,EAAKmU,EAAEvU,EAAE,CAETK,EAAKD,EAAKpZ,EAAIkZ,EAAK9Y,EAAI+Y,EAAKlZ,EAC5BqZ,EAAKF,EAAKnZ,EAAIkZ,EAAKnZ,EAAIiZ,EAAK7Y,EAC5BmZ,EAAKH,EAAKhZ,EAAI6Y,EAAKhZ,EAAIiZ,EAAKlZ,EAC5BwZ,EAAK,CAACP,EAAKjZ,EAAIkZ,EAAKjZ,EAAIkZ,EAAK/Y,CAEjC+X,CAAAA,EAAItB,EAAE,CAAGwC,EAAKD,EAAKI,EAAKP,EAAKK,EAAKH,EAAKI,EAAKL,EAC5Cf,EAAIrB,EAAE,CAAGwC,EAAKF,EAAKI,EAAKN,EAAKK,EAAKN,EAAKI,EAAKF,EAC5ChB,EAAIpB,EAAE,CAAGwC,EAAKH,EAAKI,EAAKL,EAAKE,EAAKH,EAAKI,EAAKL,EAC5Cd,EAAIa,EAAE,CAAG3Y,EACT8X,EAAIvB,eAAe,EAAIuB,EAAIvB,eAAe,EAC9C,EACAjf,GAAcgG,GAAS,CACnB,CACIjG,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC0V,EAAE,AAClB,EACAvW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACke,EAAE,CAAGle,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC2V,EAAE,AAClB,EACAxW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACme,EAAE,CAAGne,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC4V,EAAE,AAClB,EACAzW,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACoe,EAAE,CAAGpe,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACA,CACIlf,IAAK,IACLyJ,IAEN,WACU,OAAO,IAAI,CAAC6X,EAAE,AAClB,EACA1Y,IAAK,SAAa3H,CAAK,EACnB,IAAI,CAACqgB,EAAE,CAAGrgB,EACV,IAAI,CAACie,eAAe,EAAI,IAAI,CAACA,eAAe,EAChD,CACJ,EACH,EACMjZ,GAGUA,CAAAA,GAAQ8b,KAAK,CAAG,IAAI9b,GAAQ,EAAK,EAAK,EAAK,GAG3CA,GAAQ+b,IAAI,CAAG,IAAI/b,GAAQ,EAAK,EAAK,EAAK,GKt2IxD,IAAA6vB,GAAA,WAAMA,SAAAA,EAgHCC,CAAqB,EAC/B,IAAI,CAACC,QAAQ,CAAGD,EAjHPD,IAAAA,EAAAA,EAAAA,SAAAA,CAAAA,OAKX5oB,EAAAA,YAIC,CAJDA,SAAa+oB,CAAkB,EACxB,IAAI,CAACC,cAAc,GACxB,IAAI,CAACC,iBAAiB,CAACF,GACvB,IAAI,CAACG,aAAa,CAACH,GACrB,EAEAvyB,EAAQyyB,iBAuCP,CAvCD,SAA0BF,CAAkB,EAI1C,IAAK,IAHmBhpB,EAAU3C,AAAA,IAAI,CAA9B4rB,cAAAA,CACuEG,EAAA,IAAI,CAACL,QAAQ,CAApFpsB,EAAuEysB,EAAvEzsB,gBAAAA,CAA2B0sB,EAA4CD,EAA5CC,uBAAAA,CAC3BC,EAAiBR,EAAjBQ,YAAAA,CACC/2B,EAAI,EAAGoI,EAAI2uB,EAAa92B,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CACnD,IAAMoe,EAAc2Y,CAAY,CAAC/2B,EAAE,CAE7B6N,EAAuB4oB,CAAM,CADtBtY,GAAeC,GACa,CACzC,OAAQA,EAAY/P,aAAa,EAC/B,IAAK,SACL,IAAK,kBACH,IAAQ2oB,EAA8B5Y,EAA9B4Y,SAAWC,CAAAA,EAAmB7Y,EAAnB6Y,cAAAA,CACnB,GAAID,EAAW,CACb,IAAwCvpB,EAAAA,EAAMypB,OAAO,CAACF,EAAWG,GAAzD7uB,EAAgCmF,EAAhCnF,SAAW8uB,CAAAA,EAAqB3pB,EAArB2pB,gBAAAA,CACnB,GAAI9uB,EAAW,CACb,IAAQ2C,EAAa4C,EAAb5C,QAAAA,CACRA,EAASR,MAAM,CAACoW,aAAa,CAACvY,EAAUmC,MAAM,EAC9CQ,EAASxC,QAAQ,CAAC0R,QAAQ,CAAC7R,EAAUG,QAAQ,EAC7CwC,EAAStC,QAAQ,CAACwR,QAAQ,CAAC7R,EAAU+uB,WAAW,CAClD,CACAxpB,EAAMjD,aAAa,CAAGwsB,EAAmBtzB,GAAgBwzB,YAAY,CAAGxzB,GAAgBiK,QAAQ,AAClG,CACA,GAAIkpB,EAAgB,CAClB,IAAwCxpB,EAAAA,EAAMypB,OAAO,CAACD,EAAgBE,GAA9D7uB,EAAgCmF,EAAhCnF,SAAW8uB,CAAAA,EAAqB3pB,EAArB2pB,gBAAAA,CACnB,GAAI9uB,EAAW,CACb,IAAQ4C,EAAkB2C,EAAlB3C,aAAAA,CACRA,EAAcT,MAAM,CAACoW,aAAa,CAACvY,EAAUmC,MAAM,EACnDS,EAAczC,QAAQ,CAAC0R,QAAQ,CAAC7R,EAAUG,QAAQ,EAClDyC,EAAcvC,QAAQ,CAACwR,QAAQ,CAAC7R,EAAU+uB,WAAW,EACrDxpB,EAAMjD,aAAa,CAAGwsB,EAAmBtzB,GAAgBwzB,YAAY,CAAGxzB,GAAgBiK,QAAQ,AAClG,CACF,CAMJ,CACF,CACF,EAEA7J,EAAQ0yB,aA0DP,CA1DD,SAAsBH,CAAkB,EACtC,IAAwBhpB,EAAU3C,AAAA,IAAI,CAA9B4rB,cAAAA,CAMJG,EAAA,IAAI,CAACL,QAAQ,CAJfM,EAIED,EAJFC,uBACAS,CAAgBC,EAGdX,EAHFU,cAAAA,CACA5kB,EAEEkkB,EAFFlkB,gBAAAA,CACAC,EACEikB,EADFjkB,iBAAAA,CAEI6kB,EAAahqB,EAAMiqB,aAAa,CAACP,GACvC,GAAIM,EAAY,CAGd,IAAK,IAFDE,EAAwB,CAAA,EACpBC,EAA4BH,EAA5BG,KAAOR,CAAAA,EAAqBK,EAArBL,gBAAAA,CACNp3B,EAAI,EAAGoI,EAAIwvB,EAAM33B,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CAC5C,IAAM63B,EAAOD,CAAK,CAAC53B,EAAE,CACf8G,EAAOgxB,AD7Bd,SAAsBhxB,CAAW,EACtC,OAAQA,GACN,IAAK,OACH,OAAOlD,GAAqB8D,UAAU,AACxC,KAAK,QACH,OAAO9D,GAAqBgE,WAAW,AACzC,SACE,OAAOhE,GAAqB4D,MAAM,AACtC,CACF,ECoBkCqwB,EAAK3C,GAAG,EAC5B5sB,EAAgBsvB,CAAK,CAAC53B,EAAE,CAAtBsI,SAAAA,CACJxB,IAASlD,GAAqB4D,MAAM,EACtCmwB,CAAAA,GAAAA,CAAAA,EAA0B,CAAA,CAAA,CAAA,EAE5B,IAAM3wB,EAAsByvB,CAAM,CAAC3vB,EAAK,CAChC0B,EAASxB,EAATwB,IAAAA,CACRA,EAAKiC,MAAM,CAACoW,aAAa,CAACvY,EAAUmC,MAAM,EAC1CjC,EAAKC,QAAQ,CAAC0R,QAAQ,CAAC7R,EAAUG,QAAQ,EACzCD,EAAKG,QAAQ,CAACwR,QAAQ,CAAC7R,EAAU+uB,WAAW,EAC5CrwB,EAASsC,gBAAgB,CAACuX,aAAa,CAACgX,EAAKvuB,gBAAgB,EAC7DtC,EAAS4D,aAAa,CAAGwsB,EAAmBtzB,GAAgBwzB,YAAY,CAAGxzB,GAAgBiK,QAAQ,CACnG,IAAMgqB,EAAaP,EAAMQ,WAAW,CAACH,GAC/B7uB,EAAQ+uB,EAAW/uB,KAAK,CAAG2J,EAC3B1J,EAAS8uB,EAAW9uB,MAAM,CAAG2J,EAC7B9J,EAAIivB,EAAWjvB,CAAC,CAAG6J,EACnB5J,EAAI,EAAIgvB,EAAWhvB,CAAC,CAAG6J,EAAoB3J,EACjDjC,EAAS4B,QAAQ,CAACQ,GAAG,CAACN,EAAGC,EAAGC,EAAOC,EACrC,CAEA,GAAI,CAAC0uB,EAAuB,CAC1B,IAAMM,EAA8BxB,CAAM,CAAC7yB,GAAqB8D,UAAU,CAAC,CACrEwwB,EAA+BzB,CAAM,CAAC7yB,GAAqBgE,WAAW,CAAC,CACvES,EAA0BouB,CAAM,CAAC7yB,GAAqB4D,MAAM,CAAC,CACrD2wB,EAAmBF,EAAzBzvB,IAAAA,CACM4vB,EAAoBF,EAA1B1vB,IAAAA,CACM6vB,EAAehwB,EAArBG,IAAAA,CACR6vB,EAAW1vB,QAAQ,CAACwR,QAAQ,CAACge,EAAexvB,QAAQ,EACpD,IAAQF,EAAqB4vB,EAArB5vB,QAAUgC,CAAAA,EAAW4tB,EAAX5tB,MAAAA,CAClBxE,GAAQ6Z,GAAG,CAACqY,EAAe1vB,QAAQ,CAAE2vB,EAAgB3vB,QAAQ,CAAEA,GAC/DA,EAAS4X,KAAK,CAAC,IACf5V,EAAO0P,QAAQ,CAACge,EAAe1tB,MAAM,EACrC,IAAQmX,EAAanX,EAAbmX,QAAAA,AACRA,CAAAA,CAAQ,CAAC,GAAG,CAAGnZ,EAASK,CAAC,CACzB8Y,CAAQ,CAAC,GAAG,CAAGnZ,EAASM,CAAC,CACzB6Y,CAAQ,CAAC,GAAG,CAAGnZ,EAASS,CAAC,CACzBb,EAAaiB,gBAAgB,CAAC6Q,QAAQ,CAAC8d,EAAiB3uB,gBAAgB,EACxEjB,EAAauC,aAAa,CAAGwsB,EAAmBtzB,GAAgBwzB,YAAY,CAAGxzB,GAAgBiK,QAAQ,CACvG1F,EAAaO,QAAQ,CACnBqvB,EAAiBrvB,QAAQ,CAACI,KAAK,EAAIivB,EAAiBrvB,QAAQ,CAACK,MAAM,CAC/DgvB,EAAiBrvB,QAAQ,CACzBsvB,EAAkBtvB,QAAQ,AAClC,CACF,CACF,EA9GW0tB,CAmHZ,ICpHMgC,cAAMA,SAAAA,EA2EC/B,CAAkB,CAAEiB,CAAmB,CAAEL,CAAgC,EA7D7EoB,IAAAA,CAAAA,OAAAA,CAA2B,EAAE,CAC7BC,IAAAA,CAAAA,eAAAA,CAAmC,EAAE,MACrCC,kBAA6C,CAAA,CACnDC,YAAav0B,GAAiBoK,WAAW,CACzCoqB,OAAQx0B,GAAiBqK,MAAM,CAC/BoqB,UAAWz0B,GAAiBsK,SAAS,CACrCoqB,aAAc10B,GAAiBuK,YAAY,CAC3CoqB,QAAS30B,GAAiBwK,OAAO,CACjCoqB,WAAY50B,GAAiByK,UAAU,AACzC,OACQoqB,iBAA4C,CAAA,CAClDC,KAAM70B,GAAgB80B,IAAI,CAC1B,kBAAmB90B,GAAgBkK,cAAc,CACjD6qB,OAAQ/0B,GAAgByK,MAAM,AAChC,EAgDE,IAAI,CAACuqB,MAAM,CAAG,IAAI9C,GAAW,IAAI,EACjC,IAAI,CAAClsB,gBAAgB,CAAGmsB,EACxB,IAAI,CAACgB,cAAc,CAAGC,EACtB,IAAI,CAACV,uBAAuB,CAAGK,EAC/B,IAAMkC,EAA0B9C,EAAQpmB,qBAAqB,CAAC9M,IAAI,CAACkzB,GAC7D+C,EAAU,AAAA,CAAA,SAAUC,CAAY,CAAE9rB,CAAc,CAAE+rB,CAA8B,EACpF,IAAI,CAACJ,MAAM,CAAC1C,cAAc,CAAGjpB,EAC7B+rB,EAASD,KACTl2B,IAAI,CAAC,IAAI,CACX,CAAA,IAAI,CAAC8M,qBAAqB,CAAG,SAACqpB,CAAAA,EAC5B,OAAOH,EAAwB,SAACE,CAAc9rB,CAAAA,CAAAA,EAC5C6rB,EAAQC,EAAM9rB,EAAO+rB,EACvB,EACF,EACA,IAAI,CAAClpB,oBAAoB,CAAGimB,EAAQjmB,oBAAoB,CAACjN,IAAI,CAACkzB,GAC9D,IAAI,CAACkD,eAAe,CAAG,IAAI,CAACA,eAAe,CAACp2B,IAAI,CAAC,IAAI,EACrD,IAAI,CAACkG,cAAc,CAAG,IAAI,CAACA,cAAc,CAAClG,IAAI,CAAC,IAAI,EA5F1Ci1B,IAAAA,EAAAA,EAAAA,SAAAA,CAAAA,OA+FXjuB,EAAAA,iBAEC,CAFDA,WACE,OAAO,IAAI,CAACktB,cAAc,CAACmC,cAAc,AAC3C,EAEAnvB,EAAAA,iBAEC,CAFDA,SAAkB9I,CAAa,EAC7B,IAAI,CAAC81B,cAAc,CAACmC,cAAc,CAAGj4B,CACvC,EAEAmP,EAAAA,KAAgB,CAAhBA,aAEAK,EAAAA,IAEC,CAFDA,WACE,IAAI,CAACmoB,MAAM,CAAC1C,cAAc,CAAG,IAC/B,EAEA1jB,EAAAA,GAGC,CAHDA,WAEE,OADA,IAAI,CAAComB,MAAM,CAAC1C,cAAc,CAAG,KACtB,IAAI,CAACtsB,gBAAgB,CAAC4I,GAAG,EAClC,EAEAT,EAAAA,sBAEC,CAFDA,SAAuBonB,CAAiC,EACtD,IAAI,CAACC,sBAAsB,CAAGD,CAChC,EAEAnnB,EAAAA,gBASC,CATDA,WACE,IAAyBqnB,EAA8C/uB,AAAA,IAAI,CAAnE2uB,eAAAA,CAAiCrvB,EAA8BU,AAAA,IAAI,CAAlCV,gBAAAA,CACzCmsB,EAAQ/jB,gBAAgB,CAAC,SAAUqnB,GACnCtD,EAAQ/jB,gBAAgB,CAAC,cAAeqnB,GACxCtD,EAAQ/jB,gBAAgB,CAAC,YAAaqnB,GACtCtD,EAAQ/jB,gBAAgB,CAAC,UAAWqnB,GACpCtD,EAAQ/jB,gBAAgB,CAAC,eAAgBqnB,GACzCtD,EAAQ/jB,gBAAgB,CAAC,aAAcqnB,GACvCtD,EAAQ/jB,gBAAgB,CAAC,MAAO,IAAI,CAACjJ,cAAc,CACrD,EAEA0J,EAAAA,mBAUC,CAVDA,WACE,IAAyB4mB,EAA8C/uB,AAAA,IAAI,CAAnE2uB,eAAAA,CAAiCrvB,EAA8BU,AAAA,IAAI,CAAlCV,gBAAAA,CACzCmsB,EAAQtjB,mBAAmB,CAAC,SAAU4mB,GACtCtD,EAAQtjB,mBAAmB,CAAC,cAAe4mB,GAC3CtD,EAAQtjB,mBAAmB,CAAC,YAAa4mB,GACzCtD,EAAQtjB,mBAAmB,CAAC,UAAW4mB,GACvCtD,EAAQtjB,mBAAmB,CAAC,eAAgB4mB,GAC5CtD,EAAQtjB,mBAAmB,CAAC,aAAc4mB,GAC1CtD,EAAQtjB,mBAAmB,CAAC,MAAO,IAAI,CAAC1J,cAAc,EACtD,IAAI,CAACgvB,OAAO,CAACt4B,MAAM,CAAG,CACxB,EAEAuN,EAAAA,WAEC,CAFDA,WACE,IAAI,CAAC+qB,OAAO,CAACt4B,MAAM,CAAG,CACxB,EAEAiE,EAAQqF,cAKP,CALD,WACM,IAAI,CAACqwB,sBAAsB,GAC7B,IAAI,CAACA,sBAAsB,GAC3B,IAAI,CAACA,sBAAsB,CAAG,KAElC,EAEA11B,EAAQu1B,eAiDP,CAjDD,SAAwBK,CAAoC,EAC1D,IAAQ1b,EAAgB0b,EAAhB1b,WAAAA,CACFhQ,EAAuB,CAC3BtH,KAAM,IAAI,CAAC2xB,kBAAkB,CAACqB,EAAiBhzB,IAAI,CAAC,CACpD+G,MAAOsQ,GAAeC,GACtB/P,cAAe,IAAI,CAAC2qB,iBAAiB,CAAC5a,EAAY/P,aAAa,CAAC,AAClE,EACA,GAAID,EAAMC,aAAa,GAAKjK,GAAgByK,MAAM,CAAE,CAClD,IAAyBkrB,EAAmBjvB,AAAA,IAAI,CAAxC0tB,eAAAA,CACFwB,EAAW5b,EAAY6b,OAAO,CAA5BD,IAAAA,CAGR,OAFA5rB,EAAMtF,CAAC,CAAGkxB,CAAI,CAAC,EAAE,CACjB5rB,EAAMrF,CAAC,CAAGixB,CAAI,CAAC,EAAE,CACT5rB,EAAMtH,IAAI,EAChB,KAAK3C,GAAiBoK,WAAW,CAG/B,IAAK,IAFD2rB,EAAM,GACNC,EAAW,GACNn6B,EAAI+5B,EAAe95B,MAAM,CAAG,EAAGD,GAAK,EAAGA,IAAK,CACnD,IAAM4a,EAAUmf,CAAc,CAAC/5B,EAAE,CACjC,GAAI4a,IAAYwD,EAAa,CAC3B8b,EAAMl6B,EACN,KACF,CACK4a,GACHuf,CAAAA,EAAWn6B,CAAAA,CAEf,CACY,KAARk6B,IACEC,AAAa,KAAbA,EACFD,EAAMH,EAAe92B,IAAI,CAACmb,GAAe,GAEzC8b,EAAMC,EACNJ,CAAc,CAACI,EAAS,CAAG/b,IAG/BhQ,EAAMqB,EAAE,CAAGyqB,EACX,KACF,MAAK/1B,GAAiBsK,SAAS,CAC7B,IAAK,IAAIzO,EAAI+5B,EAAe95B,MAAM,CAAG,EAAGD,GAAK,EAAGA,IAC1C+5B,CAAc,CAAC/5B,EAAE,GAAKoe,IACxB2b,CAAc,CAAC/5B,EAAE,CAAG,KACpBoO,EAAMqB,EAAE,CAAGzP,EAMnB,CACF,CACA,IAAI,CAACu4B,OAAO,CAACt1B,IAAI,CAACmL,EACpB,EAzMWkqB,EAAAA,EAAAA,EA8BP7qB,IAAAA,QAAJxD,IAAA,WACE,OAAO,IAAI,CAACmvB,MAAM,AACpB,IAEI1mB,IAAAA,cAAJzI,IAAA,WACE,OAAO,IAAI,CAACstB,cAAc,CAAC7kB,WAAW,AACxC,IAEIC,IAAAA,mBAAJ1I,IAAA,WACE,OAAO,IAAI,CAACstB,cAAc,CAAC5kB,gBAAgB,AAC7C,IAEIC,IAAAA,oBAAJ3I,IAAA,WACE,OAAO,IAAI,CAACstB,cAAc,CAAC3kB,iBAAiB,AAC9C,IAEIO,IAAAA,YAAJlJ,IAAA,WACE,OAAO,IAAI,CAACG,gBAAgB,CAAC+I,SAAS,AACxC,IAEID,IAAAA,sBAAJjJ,IAAA,WACE,OAAO,IAAI,CAACG,gBAAgB,CAAC8I,mBAAmB,AAClD,IAEI9F,IAAAA,SAAJnD,IAAA,WAIE,IAAK,IAHYmD,EAAWtC,AAAA,IAAI,CAAxBytB,OAAAA,CAEiBwB,EAAmB9sB,AAAA,IAAI,CAAxCurB,eAAAA,CACCx4B,EAAI,EAAGA,EAAI+5B,EAAe95B,MAAM,CAAED,IAAK,CAC9C,IAAMoe,EAAc2b,CAAc,CAAC/5B,EAAE,CACrC,GAAKoe,GACL,IAAM4b,EAAW5b,EAAY6b,OAAO,CAA5BD,IAAAA,CACF5rB,EAAQ,CACZtH,KAAM3C,GAAiBqK,MAAM,CAC7BH,cAAejK,GAAgByK,MAAM,CACrChB,MAAOjK,GAAqBwI,UAAU,CACtCqD,GAAIzP,EACJ8I,EAAGkxB,CAAI,CAAC,EAAE,CACVjxB,EAAGixB,CAAI,CAAC,EAAE,AACZ,EACA5sB,EAAOnK,IAAI,CAACmL,GACd,CACA,OAAOhB,CACT,KAzEWkrB,CA0MZ,ICzMM8B,GAqFJ,WArFUA,SAAAA,IAAAA,CAAAA,IAAAA,EAAAA,EAAAA,SAAAA,CAAAA,OAIX1pB,EAAAA,sBAcC,CAdDA,SAAuBF,CAAmB,EACxC,OAAO,IAAIoB,QAAQ,SAACC,CAASC,CAAAA,CAAAA,EAC3B,GAAI,CAAC1B,OAAOiqB,eAAe,CAAE,CAC3BvoB,EAAO,AAAIxH,MAAM,wDACjB,MACF,CACA,GAAI,CAACgwB,UAAUC,EAAE,CAAE,CACjBzoB,EAAO,AAAIxH,MAAM,0BACjB,MACF,CACAgwB,UAAUC,EAAE,CAACC,kBAAkB,CAACtc,GAAY1N,IAAO6B,IAAI,CAAC,SAACooB,CAAAA,EACvDA,EAAc5oB,IAAYC,EAAO,AAAIxH,MAAM,8CAC7C,EACF,EACF,EAEA+I,EAAAA,kBAWC,CAXDA,SAAmBvM,CAAmB,EACpC,OAAQA,GACN,KAAKnC,GAAc8T,OAAO,CAC1B,KAAK9T,GAAc4T,aAAa,CAC9B,MAAO,AAAmB,aAAnB,OAAOmiB,OAChB,MAAK/1B,GAAcyW,cAAc,CAC/B,MAAO,AAAoB,aAApB,OAAOhW,QAChB,MAAKT,GAAcoX,aAAa,CAE9B,MAAO,AAAiC,aAAjC,OAAO4e,qBAClB,CACF,EAEAplB,EAAAA,qBAGC,CAHDA,SAAsBzO,CAAmB,EAAE,IAAA,IAAA2M,EAAA1R,UAAA9B,MAAA,CAAAqC,EAAA,AAAAoR,MAAAD,EAAA,EAAAA,EAAA,EAAA,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAGrR,CAAAA,CAAHqR,EAAA,EAAA,CAAA5R,SAAA,CAAA4R,EAAc,CACvD,IAAMinB,EAlCGR,EAkCsCS,mBAAmB,CAAC/zB,EAAK,CACxE,OAAO8zB,EAA6Bx4B,GAAIw4B,EAAAA,EAAAA,CAAAA,MAAAA,CAA8Bt4B,IAAQ,IAChF,EAEA8P,EAAAA,cA4CC,CA5CDA,SAAelB,CAAsB,CAAEV,CAAmB,CAAEwB,CAAgC,EAC1F,OAAO,IAAIJ,QAAQ,SAACC,CAASC,CAAAA,CAAAA,EAI3B,IAAK,IAHCiC,EAAcmK,GAAY1N,GAC1BsqB,EAAyB,CAAEC,iBAAkB,CAAC,QAAQ,AAAC,EACvDC,EAAa,EAAE,CACZh7B,EAAI,EAAGoI,EAAI4J,EAAiB/R,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CACvD,IAAMi7B,EAAUjpB,CAAgB,CAAChS,EAAE,CAACk7B,gBAAgB,CAACJ,EACrDG,CAAAA,GAAWD,EAAW/3B,IAAI,CAACg4B,EAC7B,CACArpB,QAAQupB,GAAG,CAACH,GAAY3oB,IAAI,CAAC,WAC3BioB,UAAUC,EAAE,CAACnoB,cAAc,CAAC2B,EAAa+mB,GAASzoB,IAAI,CAAC,SAACkkB,CAAAA,EACtD,IAAQ6E,EAAOlqB,EAAPkqB,EAAAA,CACFC,EAAaD,EAAGE,oBAAoB,GACrCD,GACHvpB,EAAOxH,MAAM,gCAEf8wB,EAAGG,gBAAgB,GAAGlpB,IAAI,CAAC,WACzB,IACImlB,EADEgE,EAAcC,aAAaC,+BAA+B,CAACnF,GAEjE,GAAIA,AAA+BoF,KAAAA,IAA/BpF,EAAQqF,WAAW,CAACC,MAAM,EAAqB3qB,EAAI4qB,QAAQ,CAa7DtE,EAAQ,IAAIiE,aAAalF,EAAS6E,GAClC7E,EAAQwF,iBAAiB,CAAC,CACxBF,OAAQ,CAACrE,EAAM,AACjB,OAhB+D,CAC/D,IAAMwE,EAAY,CAChBC,UAAW1F,AAA+BoF,KAAAA,IAA/BpF,EAAQqF,WAAW,CAACC,MAAM,EAAiBR,EAAWY,SAAS,CAC1EC,MAAO,CAAA,EACPC,MAAOd,EAAWc,KAAK,CACvBC,QAASf,EAAWe,OAAO,CAC3BC,uBAAwBb,CAC1B,EACAhE,EAAQ,IAAIiE,aAAalF,EAAS6E,EAAIY,GACtCzF,EAAQwF,iBAAiB,CAAC,CACxBO,UAAW9E,CACb,GAOFjB,EAAQgG,qBAAqB,CAAC,SAASlqB,IAAI,CAAC,SAAC8kB,CAAAA,EAC3CtlB,EAAQ,IAAIymB,GAAa/B,EAASiB,EAAOL,GACxCrlB,EAAAA,EACFA,EAAAA,EACFA,EAAAA,EACFA,EAAAA,EACL,EACF,EAlFWsoB,CAmFZ,IAGM,SAASoC,GAA0B11B,CAAmB,EAC3D,OAAO,SAAC8zB,CAAAA,EACNR,GAAYS,mBAAmB,CAAC/zB,EAAK,CAAG8zB,CAC1C,CACF,CA1FaR,GAEJS,mBAAAA,CAAoD,EAAE,CCCxD,IAAe4B,GAAf,SAAAC,CAAA,EAAeD,SAAAA,mCAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,SAAAA,CAAAA,OAiBpBnlB,EAAAA,oBAAiD,CAAjDA,SAAqBf,CAAkB,EAAS,EAEhDiB,EAAAA,oBAEC,CAFDA,SAAqBjB,CAAkB,EACrCA,EAAgB1M,KAAK,CAAGjF,GAAuB4R,SAAS,AAC1D,EArBoBimB,EAAAA,EAAAA,EAIhBplB,IAAAA,oCAAJpN,IAAA,WACE,MAAO,CAAA,CACT,KANoBwyB,GCJf,WAGN,GCEYE,GAAN,SAAAC,CAAA,8EACLxmB,EAAAA,cASC,CATDA,SAAemgB,CAAqB,CAAE9oB,CAAiB,CAAEwI,CAA+C,EACtG,GAAI,CAACxI,EAAMipB,cAAc,CAAE,MAAO,CAAA,EAClC,IAAK,IAAI12B,EAAI,EAAGoI,EAAI6N,EAAiBhW,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CACvD,IAAMuW,EAAkBN,CAAgB,CAACjW,EAAE,AACvCuW,CAAAA,EAAgB1M,KAAK,GAAKjF,GAAuB+E,IAAI,EACvD,IAAI,CAACkzB,UAAU,CAACtG,EAAS9oB,EAAO8I,EAEpC,CACA,MAAO,CAAA,CACT,EAEAF,EAAAA,gBAqBC,CArBDA,SAAiBkgB,CAAqB,CAAE9oB,CAAiB,CAAEwI,CAA+C,EAIxG,IAAK,IAH4B6mB,EAA2BvG,EAApDO,uBAAAA,CACgB9gB,EAAkBvI,EAAlCipB,cAAAA,CACAqG,EAAmB/mB,EAAnB+mB,cAAAA,CACC/8B,EAAI,EAAGoI,EAAI6N,EAAiBhW,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CACvD,IAAMuW,EAAkBN,CAAgB,CAACjW,EAAE,CAC3C,GAAIuW,EAAgB1M,KAAK,GAAKjF,GAAuBmS,QAAQ,EAC7D,IAAML,EAAUH,EAAgBG,OAAO,CAAC,EAAE,CACtCqmB,EAAeC,GAAG,CAACzmB,EAAgBkF,QAAQ,EAC5B,IAAI,CAACwhB,oBAAoB,CAACjnB,EAAe8mB,EAAwBvmB,GAE5EG,EAAQ7M,KAAK,GAAK/F,GAAgBiK,QAAQ,EAC5C2I,CAAAA,EAAQ7M,KAAK,CAAG/F,GAAgBwzB,YAAY,EAG9C5gB,EAAQ7M,KAAK,CAAG/F,GAAgBiK,QAAQ,CAG1C2I,EAAQ7M,KAAK,CAAG/F,GAAgB+G,WAAW,CAE/C,CACF,EAMA3G,EAASsT,oBAaR,CAbD,SAA8BjB,CAA4C,EACxE,OAAQA,EAAgB1M,KAAK,EAC3B,KAAKjF,GAAuBs4B,SAAS,CACnC3mB,EAAgB1M,KAAK,CAAGjF,GAAuBu4B,cAAc,CAC7D,KACF,MAAKv4B,GAAuBmS,QAAQ,CAClCR,EAAgBkF,QAAQ,CAAC2hB,MAAM,GAC/B7mB,EAAgB1M,KAAK,CAAGjF,GAAuB4R,SAAS,CACxD,KACF,SACED,EAAgB1M,KAAK,CAAGjF,GAAuB4R,SAAS,AAE5D,CACF,EAKA0kB,EAAAA,gBAEC,CAFDA,SAAiBJ,CAAsB,EACrCA,EAAQC,gBAAgB,CAAC93B,IAAI,CAAC,UAChC,EAEAiB,EAAQ24B,UAkCP,CAlCD,SAAmBtG,CAAqB,CAAE9oB,CAAiB,CAAE8I,CAA4C,EACvG,GAAI,AAACggB,GAAY9oB,GAGjB8I,EAAgB1M,KAAK,CAAGjF,GAAuBs4B,SAAS,CACxD,IAAQz0B,EAAuB8N,EAAvB9N,QAAUE,CAAAA,EAAa4N,EAAb5N,QAAAA,CACMqN,EAAkBvI,EAAlCipB,cAAAA,CACyBoG,EAA2BvG,EAApDO,uBAAAA,CACR9gB,EACGqnB,YAAY,CACX,IAAIC,iBACF,CAAEx0B,EAAGL,EAASK,CAAC,CAAEC,EAAGN,EAASM,CAAC,CAAEG,EAAGT,EAASS,CAAC,EAC7C,CAAEJ,EAAGH,EAASG,CAAC,CAAEC,EAAGJ,EAASI,CAAC,CAAEG,EAAGP,EAASO,CAAC,CAAEC,EAAGR,EAASQ,CAAC,AAE9D2zB,GAAAA,GAEDzqB,IAAI,CACH,SAACoJ,CAAAA,EACKlF,EAAgB1M,KAAK,GAAKjF,GAAuBu4B,cAAc,EACjE1hB,EAAS2hB,MAAM,GACf7mB,EAAgB1M,KAAK,CAAGjF,GAAuB4R,SAAS,GAExDD,EAAgBkF,QAAQ,CAAGA,EAC3BlF,EAAgB1M,KAAK,CAAGjF,GAAuBmS,QAAQ,GAG3D,WACMR,EAAgB1M,KAAK,GAAKjF,GAAuBu4B,cAAc,CACjE5mB,EAAgB1M,KAAK,CAAGjF,GAAuB4R,SAAS,CAExDD,EAAgB1M,KAAK,CAAGjF,GAAuB24B,QAAQ,AAE3D,GAEN,EAEAr5B,EAAQ+4B,oBASP,CATD,SAA6BxvB,CAAc,CAAE+vB,CAAc,CAAEjnB,CAA4C,EACvG,IAAQkF,EAAalF,EAAbkF,QAAAA,CACFgiB,EAAShwB,EAAMypB,OAAO,CAACzb,EAASiiB,WAAW,CAAEF,GAC3Cl1B,EAAcm1B,EAAdn1B,SAAAA,CACFE,EAAW+N,EAAgBG,OAAO,CAAC,EAAE,CAAnClO,IAAAA,CAIR,OAHAA,EAAKiC,MAAM,CAACoW,aAAa,CAACvY,EAAUmC,MAAM,EAC1CjC,EAAKG,QAAQ,CAACwR,QAAQ,CAAC7R,EAAU+uB,WAAW,EAC5C7uB,EAAKC,QAAQ,CAAC0R,QAAQ,CAAC7R,EAAUG,QAAQ,EAClCg1B,EAAOrG,gBAAgB,AAChC,QAvEa/f,IAAAA,oCAAbpN,IAAA,WACE,MAAO,CAAA,CACT,MArCuCwyB,EAAAA,IAA5BE,GAAAA,EAAAA,CADZH,GAA0B73B,GAAcyW,cAAc,EAC1CuhB,CAAAA,ITKb,IAAagB,GAAN,SAAAf,CAAA,aAMOgB,CAA2B,qCAJ/BC,oBAoIRC,CAAAA,IAnIQC,QAAmB,CAAA,EACnBC,EAAAA,QAAAA,CAAqB,EAAE,CAI7BlzB,EAAKmzB,OAAO,CAAGL,oCAGjBxnB,EAAAA,cAUC,CAVDA,SAAemgB,CAAqB,CAAE9oB,CAAiB,CAAEwI,CAAmC,EAC1F,GAAI,CAACxI,EAAMipB,cAAc,CAAE,MAAO,CAAA,EAClC,OAAQ,IAAI,CAACmH,oBAAoB,EAC/B,KAwHJC,EAtHM,OADA,IAAI,CAACI,qBAAqB,CAAC3H,EAAStgB,GAC7B,CAAA,CACT,MAsHJkoB,EArHM,MAAO,CAAA,CACX,CACA,MAAO,CAAA,CACT,EAEA9nB,EAAAA,gBAqCC,CArCDA,SACEkgB,CAAqB,CACrB9oB,CAAiB,CACjBwI,CAAmC,CACnCmoB,CAAsC,EAQtC,IAAK,IAN4BtB,EAA2BvG,EAApDO,uBAAAA,CACgB9gB,EAAkBvI,EAAlCipB,cAAAA,CACU2H,EAAYvzB,AAAA,IAAI,CAA1BkzB,QAAAA,CACF9D,EAAM,EAAE,IAAI,CAAC6D,QAAQ,CAErBO,EAAkBtoB,EAAcuoB,uBAAuB,GACpDv+B,EAAI,EAAGoI,EAAIk2B,EAAgBr+B,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CACtD,IAAMw+B,EAAiBF,CAAe,CAACt+B,EAAE,CACjCy+B,EAAUD,EAAVC,KAAAA,CACFC,EAAuBzoB,CAAgB,CAACwoB,EAAM,CACpD,GAAIC,EAAsB,CACxB,IAAIhoB,EAAUgoB,EAAqBhoB,OAAO,CAAC,EAAE,CACxCA,GAEHA,CAAAA,AADAA,CAAAA,EAAUgoB,EAAqBhoB,OAAO,CAAC,EAAE,CAAG0nB,GAAAA,EACpCpgB,cAAc,CAAG0gB,EAAqB7iB,KAAK,EAEjD2iB,AAAiC,YAAjCA,EAAe5zB,aAAa,EAC9B,IAAI,CAAC+zB,mBAAmB,CAAC3oB,EAAe8mB,EAAwBpmB,EAAS8nB,GACzE9nB,EAAQ7M,KAAK,CAAG/F,GAAgBiK,QAAQ,EAExC2I,EAAQ7M,KAAK,CAAG/F,GAAgBwzB,YAAY,CAE9C+G,CAAO,CAACI,EAAM,CAAGvE,OAEjBhe,QAAQC,IAAI,CAAC,uBAAyBsiB,EAE1C,CAEA,IAAK,IAAIz+B,EAAI,EAAGoI,EAAI6N,EAAiBhW,MAAM,CAAED,EAAIoI,EAAGpI,IAC9Cq+B,CAAO,CAACr+B,EAAE,CAAGk6B,GAAKjkB,CAAAA,CAAgB,CAACjW,EAAE,CAAC0W,OAAO,CAAC,EAAE,CAAC7M,KAAK,CAAG/F,GAAgB+G,WAAW,AAAXA,CAEjF,EAEA3G,EAASoT,oBAER,CAFD,SAA8Bf,CAAgC,EAC5DA,EAAgB1M,KAAK,CAAGjF,GAAuBs4B,SAAS,AAC1D,EAKAhC,EAAAA,gBA8BC,CA9BDA,SAAiBJ,CAAsB,EACrCA,EAAQC,gBAAgB,CAAC93B,IAAI,CAAC,kBAC9B,IAAiB26B,EAAW9yB,AAAA,IAAI,CAAxBmzB,OAAAA,CACFjD,EAAqC,EAAE,CAC7C,IAAI4C,EAwBF,OAAOhsB,QAAQE,MAAM,CAAC,AAAIxH,MAAM,uBAvBhC,IAAK,IAAItK,EAAI,EAAGoI,EAAIw1B,EAAO39B,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CAC7C,IAAMge,EAAiB4f,CAAM,CAAC59B,EAAE,CAC1Bqc,EAAkBuhB,CAAM,CAAC59B,EAAE,CAAzBqc,WAAAA,CACR,GAAI,CAACA,EACH,OAAOzK,QAAQE,MAAM,CAAC,AAAIxH,MAAM,kBAAoB0T,EAAe7I,IAAI,CAAG,kBAE1E6lB,EAAW/3B,IAAI,CAAC27B,kBAAkBviB,GAEtC,CACA,OAAO,IAAIzK,QAAQ,SAACC,CAASC,CAAAA,CAAAA,EAE3B,IAAM+sB,EAAiB/D,EAAQ+D,aAAa,CAAG,EAAE,CACjDjtB,QAAQupB,GAAG,CAACH,GAAY3oB,IAAI,CAAC,SAACysB,CAAAA,EAC5B,IAAK,IAAI9+B,EAAI,EAAGoI,EAAI02B,EAAQ7+B,MAAM,CAAED,EAAIoI,EAAGpI,IACzC6+B,EAAc57B,IAAI,CAAC,CACjB4Y,MAAOijB,CAAO,CAAC9+B,EAAE,CACjB++B,cAAenB,CAAM,CAAC59B,EAAE,CAACsc,aAAa,AACxC,GAEFzK,GACCC,EAAAA,EACL,EAIJ,EAEA5N,EAAQg6B,qBAoBP,CApBD,SAA8B3H,CAAqB,CAAEtgB,CAAmC,YACtF,CAAA,IAAI,CAAC4nB,oBAAoB,CAiC3BM,EAhCE5H,EAAQnsB,gBAAgB,CAErB40B,qBAAqB,GACrB3sB,IAAI,CAAC,SAAC4sB,CAAAA,EACL,GAAIA,EACF,IAAK,IAAIj/B,EAAI,EAAGoI,EAAI62B,EAAeh/B,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CACrD,IAAMk/B,EAAgBD,CAAc,CAACj/B,EAAE,CACjCuW,EAAkBN,CAAgB,CAACjW,EAAE,AACvCk/B,AAAkB,CAAA,cAAlBA,GACFp0B,EAAK+yB,oBAAoB,CAwBrCsB,EAvBY5oB,EAAgB1M,KAAK,CAAGjF,GAAuBmS,QAAQ,GAEvDR,EAAgB1M,KAAK,CAAGjF,GAAuB24B,QAAQ,CACvDrhB,QAAQC,IAAI,CAAC5F,EAAgBsF,KAAK,CAAC1G,IAAI,CAAE,gBAE7C,CAEJ,EACJ,EAEAjR,EAAQy6B,mBAOP,CAPD,SAA4BlxB,CAAc,CAAE+vB,CAAc,CAAE4B,CAA6B,CAAEZ,CAAmB,EAC5G,IAAQh2B,EAAS42B,EAAT52B,IAAAA,CACAF,EAAcmF,EAAMypB,OAAO,CAACsH,EAAea,UAAU,CAAE7B,GAAvDl1B,SAAAA,CACRE,EAAKiC,MAAM,CAACoW,aAAa,CAACvY,EAAUmC,MAAM,EAC1CjC,EAAKG,QAAQ,CAACwR,QAAQ,CAAC7R,EAAU+uB,WAAW,EAC5C7uB,EAAKC,QAAQ,CAAC0R,QAAQ,CAAC7R,EAAUG,QAAQ,EACzC22B,EAAaE,qBAAqB,CAAGd,EAAee,qBAAqB,AAC3E,GAlIsC9C,EAAAA,IAA3BkB,GAAAA,EAAAA,CADZnB,GAA0B73B,GAAcoX,aAAa,EACzC4hB,CAAAA,IAqIRj3B,CAAAA,GAAAA,IAAAA,CAAAA,GAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GACHo3B,YAAAA,EAAAA,CAAAA,cADGp3B,EAAAA,CAAAA,GAEHy3B,QAAAA,EAAAA,CAAAA,UAFGz3B,EAAAA,CAAAA,GAGHy4B,SAAAA,EAAAA,CAAAA,WU3IF,IAAaK,GAAN,SAAA5C,CAAA,aAGO6C,CAAoB,4BAE1BA,IAAiB16B,GAAYsT,UAAU,EACzC6D,QAAQC,IAAI,CAAC,+EAIjB/F,EAAAA,cAEC,CAFDA,SAAemgB,CAAqB,CAAE9oB,CAAiB,CAAEwI,CAAmC,EAC1F,MAAO,CAAC,CAACxI,EAAMipB,cAAc,AAC/B,EAEArgB,EAAAA,gBAgCC,CAhCDA,SACEkgB,CAAqB,CACrB9oB,CAAiB,CACjBwI,CAAmC,CACnCmoB,CAAyC,EAOzC,IAAK,IAF8DpoB,SAHlC8mB,EAA2BvG,EAApDO,uBAAAA,CACgB9gB,EAAkBvI,EAAlCipB,cAAAA,CAEFgJ,EAA6B1pB,EAAc0pB,cAAc,EAAA,CAAA,AAAI1pB,MAAAA,CAAAA,EAAAA,EAAc2pB,gBAAgB,AAAA,EAA9B3pB,KAAAA,EAAAA,EAAgC0pB,cAAc,AAAA,EAC3GhpB,EAAgCT,CAAgB,CAAC,EAAE,CAACS,OAAO,CACxD1W,EAAI,EAAGoI,EAAIsO,EAAQzW,MAAM,CAAED,EAAIoI,EAAGpI,IAAK,CAC9C,IAAMia,EAAevD,CAAO,CAAC1W,EAAE,CAC3B0/B,EAAe1C,GAAG,CAAC/iB,EAAa2lB,OAAO,GACzC3lB,EAAapQ,KAAK,CAAG/F,GAAgBiK,QAAQ,CAC7C,IAAI,CAAC8xB,YAAY,CAAC7pB,EAAe8mB,EAAwB7iB,IAEzDA,EAAapQ,KAAK,CAAG/F,GAAgB+G,WAAW,AAEpD,KAE6Bi1B,EAAuB7yB,AAAA,IAAI,CAAhD8yB,mBAAAA,CACRL,EAAe1qB,OAAO,CAAC,SAAC4qB,CAAAA,EACtB,GAAI,EAACE,MAAAA,EAAAA,KAAAA,EAAAA,AAAAA,EAAoB9C,GAAG,CAAC4C,EAAU,EAAA,CACrC,IAAMpnB,EAAQ4lB,GACd5lB,CAAAA,EAAMonB,OAAO,CAAGA,EAChBpnB,EAAMwnB,eAAe,CAAG,GACxBl1B,EAAK+0B,YAAY,CAAC7pB,EAAe8mB,EAAwBtkB,GACzD9B,EAAQzT,IAAI,CAACuV,EACf,CACF,GACA,IAAI,CAACunB,mBAAmB,CAAGL,CAC7B,EAEAx7B,EAASoT,oBAER,CAFD,SAA8Bf,CAAgC,EAC5DA,EAAgB1M,KAAK,CAAGjF,GAAuBmS,QAAQ,AACzD,EAKAmkB,EAAAA,gBAEC,CAFDA,SAAiBJ,CAAsB,EACrCA,EAAQC,gBAAgB,CAAC93B,IAAI,CAAC,kBAChC,EAEAiB,EAAQ27B,YAqBP,CArBD,SAAqBpyB,CAAc,CAAE+vB,CAAc,CAAEvjB,CAAgC,EACnF,IAAQzR,EAA2ByR,EAA3BzR,IAAAA,CAAM2P,EAAqB8B,EAArB9B,OAAAA,CAASynB,EAAY3lB,EAAZ2lB,OAAAA,CACjBK,EAAYxyB,EAAMypB,OAAO,CAAC0I,EAAQM,UAAU,CAAE1C,GACpD,GAAKyC,GACL,IAAQ33B,EAAgC23B,EAAhC33B,SAAW8uB,CAAAA,EAAqB6I,EAArB7I,gBAAAA,CAGnB,GAFAnd,EAAapQ,KAAK,CAAGutB,EAAmBtzB,GAAgBwzB,YAAY,CAAGxzB,GAAgBiK,QAAQ,CAC/FkM,EAAakmB,SAAS,CAAGP,AAAwB,eAAxBA,EAAQvI,WAAW,CAAoBtyB,GAAYq7B,UAAU,CAAGr7B,GAAYs7B,QAAQ,CACzGpmB,EAAa+lB,eAAe,CAAGJ,EAAQI,eAAe,CAAE,CAC1D/lB,EAAa+lB,eAAe,CAAGJ,EAAQI,eAAe,CACtD/lB,EAAa7B,eAAe,CAAG,CAAA,EAE/B,IAAK,IACMpY,EAFMsgC,EAAeV,EAAxBznB,OAAAA,CACCnY,EAAI,EAAGoI,EAAK+P,EAAQlY,MAAM,CAAGqgC,EAAWrgC,MAAM,CAAGD,EAAIoI,EAAGpI,IAC9DmY,AAAAA,CAAAA,AAAAA,CAAAA,CAAQnY,EAAAA,EAAE,EAAVmY,CAAAA,AAAAA,CAAO,CAACnY,EAAE,CAAK,IAAIiG,EAAQ,CAAA,EAAGkU,QAAQ,CAACmmB,CAAU,CAACtgC,EAAE,OAGvDia,EAAa7B,eAAe,CAAG,CAAA,EAEjC5P,EAAKG,QAAQ,CAACwR,QAAQ,CAAC7R,EAAU+uB,WAAW,EAC5C7uB,EAAKC,QAAQ,CAAC0R,QAAQ,CAAC7R,EAAUG,QAAQ,EACzCD,EAAKiC,MAAM,CAACoW,aAAa,CAACvY,EAAUmC,MAAM,EAC1CjC,EAAKkC,aAAa,CAACmW,aAAa,CAACvY,EAAUwe,OAAO,CAACrc,MAAM,EAC3D,GAhFsCgyB,EAAAA,IAA3B+C,GAAAA,EAAAA,CADZhD,GAA0B73B,GAAc4T,aAAa,EACzCinB,CAAAA"}
|