{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_async_to_generator.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../src/utils/array.ts","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/utils.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/vector2.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/vector3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/vector4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/color.js","../src/utils/color.ts","../src/utils/device.ts","../src/utils/image-data.ts","../src/utils/sortable.ts","../src/utils/asserts.ts","../src/utils/text.ts","../src/utils/promise-util.ts","../src/utils/logger.ts","../src/utils/index.ts","../src/plugin-system.ts","../src/plugins/plugin.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/scene.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/constants.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/composition.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/number-expression.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/base-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/particle-item.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/particle-shape.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/light.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/mesh.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/camera.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/material.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/item/model/render.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/text.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/buitin-object-guid.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-component-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-primitive-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/shape/shape-stroke-param.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/animation-graph/graph-node-datas.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/assets.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/data-type.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/geometry-data.js","../../../node_modules/.pnpm/@galacean+effects-specification@2.7.2/node_modules/@galacean/effects-specification/es/index.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/decorators.ts","../src/effects-object.ts","../src/plugins/animation-graph/graph-data-set.ts","../src/plugins/animation-graph/node-asset-type.ts","../src/plugins/animation-graph/graph-node.ts","../src/plugins/animation-graph/animation-graph-asset.ts","../src/plugins/animation-graph/graph-context.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_extends.js","../src/plugins/animation-graph/nodes/animation-clip-node.ts","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/quaternion.js","../src/plugins/animation-graph/blender.ts","../src/plugins/animation-graph/pose.ts","../src/plugins/animation-graph/pose-result.ts","../src/plugins/animation-graph/nodes/apply-additive-node.ts","../src/plugins/animation-graph/nodes/blend-node.ts","../src/plugins/animation-graph/nodes/bool-nodes.ts","../src/plugins/animation-graph/nodes/const-value-nodes.ts","../src/plugins/animation-graph/nodes/control-parameter-nodes.ts","../src/plugins/animation-graph/nodes/layer-blend-node.ts","../src/plugins/animation-graph/nodes/operator-nodes.ts","../src/plugins/animation-graph/nodes/state-machine-node.ts","../src/plugins/animation-graph/nodes/state-node.ts","../src/plugins/animation-graph/nodes/transition-node.ts","../src/plugins/animation-graph/skeleton.ts","../src/plugins/animation-graph/graph-instance.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/components/component.ts","../src/components/animator.ts","../src/components/renderer-component.ts","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/matrix4.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/euler.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_assert_this_initialized.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/matrix3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/ray.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/box3.js","../../../node_modules/.pnpm/@galacean+effects-math@1.1.0/node_modules/@galacean/effects-math/es/core/sphere.js","../src/transform.ts","../src/camera.ts","../src/constants.ts","../src/math/float16array-wrapper.ts","../src/math/translate.ts","../src/math/utils.ts","../src/math/keyframe-info.ts","../src/math/bezier.ts","../src/math/value-getters/value-getter.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_construct.js","../src/math/value-getters/vector-curves.ts","../src/math/value-getters/bezier-curve.ts","../src/math/value-getters/value-getter-map.ts","../src/math/value-getters/color-curve.ts","../src/render/create-copy-shader.ts","../src/texture/types.ts","../src/render/framebuffer.ts","../src/gl/create-gl-context.ts","../src/gl/gpu-time.ts","../src/gl/index.ts","../src/downloader.ts","../src/texture/utils.ts","../src/texture/texture.ts","../src/texture/texture-loader.ts","../src/texture/texture-factory.ts","../src/render/render-pass.ts","../src/render/draw-object-pass.ts","../src/render/shader.ts","../src/material/types.ts","../src/material/utils.ts","../src/material/material-data-block.ts","../src/material/material.ts","../src/material/mask-ref-manager.ts","../src/render/geometry.ts","../src/render/mesh.ts","../src/shader/shader-factory.ts","../src/render/post-process-pass.ts","../src/render/render-frame.ts","../src/render/renderbuffer.ts","../src/render/render-target-pool.ts","../src/render/gpu-capability.ts","../src/render/renderer.ts","../src/events/event-emitter.ts","../src/composition/scene-ticking.ts","../src/composition.ts","../src/vfx-item.ts","../src/components/composition-component.ts","../src/components/mesh-component.ts","../src/components/effect-component.ts","../src/components/position-constraint.ts","../src/components/post-process-volume.ts","../src/components/base-render-component.ts","../src/components/shape-component.ts","../src/components/fake-3d-component.ts","../src/plugins/camera/camera-controller-node.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_wrap_native_super.js","../src/plugins/camera/camera-vfx-item-loader.ts","../src/plugins/interact/click-handler.ts","../src/plugins/interact/event-system.ts","../src/plugins/interact/interact-loader.ts","../src/plugins/interact/interact-mesh.ts","../src/plugins/interact/interact-item.ts","../src/plugins/interact/mesh-collider.ts","../src/plugins/sprite/sprite-loader.ts","../src/plugins/timeline/playable.ts","../src/animation/color-playable.ts","../src/animation/animation-clip.ts","../src/shape/cone.ts","../src/shape/2d-shape.ts","../src/shape/donut.ts","../src/shape/sphere.ts","../src/shape/texture-shape.ts","../src/shape/shape.ts","../src/libs/earcut.js","../src/shape/earcut.ts","../src/shape/geometry.ts","../src/plugins/particle/burst.ts","../src/plugins/particle/link.ts","../src/config.ts","../src/plugins/particle/trail-mesh.ts","../src/plugins/particle/particle-vfx-item.ts","../src/plugins/particle/particle-mesh.ts","../src/plugins/particle/particle-system-renderer.ts","../src/plugins/particle/particle-system.ts","../src/plugins/timeline/playables/track-mixer-playable.ts","../src/plugins/timeline/playables/activation-mixer-playable.ts","../src/plugins/timeline/playables/activation-playable.ts","../src/plugins/timeline/playables/property-clip-playable.ts","../src/plugins/timeline/playables/property-mixer-playable.ts","../src/plugins/timeline/playables/color-property-mixer-playable.ts","../src/plugins/timeline/playables/float-property-mixer-playable.ts","../src/plugins/timeline/playables/particle-mixer-playable.ts","../src/plugins/timeline/playables/sprite-color-mixer-playable.ts","../src/plugins/timeline/playables/sub-composition-clip-playable.ts","../src/plugins/timeline/playables/sub-composition-mixer-playable.ts","../src/plugins/timeline/playables/transform-mixer-playable.ts","../src/plugins/timeline/playables/vector-property-mixer-playable.ts","../src/plugins/timeline/playables/transform-playable.ts","../src/plugins/timeline/track.ts","../src/plugins/timeline/tracks/activation-track.ts","../src/plugins/timeline/tracks/property-track.ts","../src/plugins/timeline/tracks/float-property-track.ts","../src/plugins/timeline/tracks/sprite-color-track.ts","../src/plugins/timeline/tracks/sub-composition-track.ts","../src/plugins/timeline/tracks/transform-track.ts","../src/plugins/timeline/tracks/material-track.ts","../src/plugins/timeline/tracks/particle-track.ts","../src/plugins/timeline/tracks/vector-property-track.ts","../src/plugins/timeline/tracks/color-property-track.ts","../src/plugins/timeline/tracks/object-binding-track.ts","../src/plugins/timeline/playable-assets/activation-playable-asset.ts","../src/plugins/timeline/playable-assets/color-property-playable-asset.ts","../src/plugins/timeline/playable-assets/float-property-playable-asset.ts","../src/plugins/timeline/playable-assets/sub-composition-playable-asset.ts","../src/plugins/timeline/playable-assets/vector-property-playable-assets.ts","../src/plugins/timeline/track-instance.ts","../src/plugins/timeline/timeline-asset.ts","../src/plugins/sprite/sprite-item.ts","../src/plugins/particle/particle-loader.ts","../src/plugins/shape/point.ts","../src/plugins/shape/build-line.ts","../src/plugins/shape/shape-primitive.ts","../../../node_modules/.pnpm/libtess@1.2.2/node_modules/libtess/libtess.min.js","../src/plugins/shape/triangulate.ts","../src/plugins/shape/polygon.ts","../src/plugins/shape/build-adaptive-bezier.ts","../src/plugins/shape/ellipse.ts","../src/plugins/shape/poly-star.ts","../src/plugins/shape/rectangle.ts","../src/plugins/shape/shape-path.ts","../src/plugins/shape/graphics-path.ts","../src/canvas-pool.ts","../src/plugins/text/text-layout.ts","../src/plugins/text/text-style.ts","../src/plugins/text/text-component-base.ts","../src/plugins/text/text-item.ts","../src/plugins/text/text-loader.ts","../src/asset.ts","../src/binary-asset.ts","../src/serialization-helper.ts","../src/asset-loader.ts","../src/fallback/utils.ts","../src/fallback/camera.ts","../src/fallback/interact.ts","../src/fallback/migration.ts","../src/fallback/particle.ts","../src/fallback/sprite.ts","../src/fallback/index.ts","../src/pass-render-level.ts","../src/scene.ts","../src/template-image.ts","../src/asset-manager.ts","../src/asset-service.ts","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/constants.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/utils.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/encoding.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/byte-buffer.js","../../../node_modules/.pnpm/flatbuffers@24.3.25/node_modules/flatbuffers/mjs/builder.js","../src/__definations__/fbeffects-object-data.ts","../src/__definations__/fbeffects-package-data.ts","../src/__definations__/fbsub-mesh.ts","../src/__definations__/fbvertex-channel.ts","../src/__definations__/fbvertex-data.ts","../src/__definations__/fbgeometry-data.ts","../src/effects-package.ts","../src/ticker.ts","../src/engine.ts","../src/paas-texture-cache.ts","../src/scene-loader.ts","../src/index.ts"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n        var info = gen[key](arg);\n        var value = info.value;\n    } catch (error) {\n        reject(error);\n        return;\n    }\n    if (info.done) resolve(value);\n    else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n    return function() {\n        var self = this, args = arguments;\n\n        return new Promise(function(resolve, reject) {\n            var gen = fn.apply(self, args);\n\n            function _next(value) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n            }\n\n            function _throw(err) {\n                asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n            }\n\n            _next(undefined);\n        });\n    };\n}\nexport { _async_to_generator as _ };\n","function _instanceof(left, right) {\n    if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n        return !!right[Symbol.hasInstance](left);\n    } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _type_of(obj) {\n    \"@swc/helpers - typeof\";\n\n    return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n  // lazy load so that environments that need to polyfill have a chance to do so\n  if (!getRandomValues) {\n    // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n    if (!getRandomValues) {\n      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n    }\n  }\n\n  return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","import type { TypedArray } from '@galacean/effects-specification';\n\nexport function addItem<T> (arr: T[], value: T): T[] {\n  if (!arr.includes(value)) {\n    arr.push(value);\n  }\n\n  return arr;\n}\n\n/**\n * 性能测试：https://blog.mutoe.com/2019/compare-filter-vs-splice-in-javascript/\n * @param arr\n * @param value\n * @returns\n */\nexport function removeItem<T> (arr: T[], value: T): T[] {\n  const index = arr.indexOf(value);\n\n  if (index > -1) {\n    arr.splice(index, 1);\n  }\n\n  return arr;\n}\n\n/**\n * 原 arrAddWithOrder 根据property的大小在arr中插入item\n * @param arr\n * @param item\n * @param property\n * @param descending\n * @returns\n */\nexport function addItemWithOrder<T extends Record<string, any>> (arr: T[], item: T, property: string, descending = false) {\n  if (arr.includes(item)) {\n    return;\n  }\n  arr.push(item);\n  if (arr.length === 1) {\n    return;\n  }\n  //单次插入排序\n  let index = arr.length - 1;\n\n  if (index) {\n    const currentItem = arr[index];\n\n    if (descending) {\n      while (arr[index - 1][property] < currentItem[property]) {\n        arr[index] = arr[index - 1];\n        index--;\n        if (index === 0) {\n          break;\n        }\n      }\n    } else {\n      while (arr[index - 1][property] > currentItem[property]) {\n        arr[index] = arr[index - 1];\n        index--;\n        if (index === 0) {\n          break;\n        }\n      }\n    }\n    arr[index] = currentItem;\n  }\n}\n\nexport function enlargeBuffer<T extends TypedArray> (\n  typeArray: T,\n  length: number,\n  maxSize: number,\n  increase = 1,\n): T {\n  const buffer = typeArray.buffer;\n\n  if (buffer.byteLength < typeArray.BYTES_PER_ELEMENT * length) {\n    let size = Math.ceil(length * increase);\n\n    if (!Number.isNaN(maxSize)) {\n      size = Math.min(size, maxSize);\n    }\n    const nbuffer = new ArrayBuffer(typeArray.BYTES_PER_ELEMENT * size);\n    const nArr = new (typeArray.constructor as { new(buffer: ArrayBuffer): T })(nbuffer);\n\n    nArr.set(typeArray);\n\n    return nArr;\n  }\n\n  return typeArray;\n}\n","export const PI2 = Math.PI * 2;\nexport const DEG2RAD = Math.PI / 180;\nexport const RAD2DEG = 180 / Math.PI;\nexport const NumberEpsilon = 1e-6;\nexport function isZero(v) {\n    return isNaN(v) || Math.abs(v) < NumberEpsilon;\n}\nexport function isEqual(a, b) {\n    return Math.abs(a - b) < NumberEpsilon || (a === Infinity && b === Infinity) || (a === -Infinity && b === -Infinity);\n}\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nexport const damp = (x, y, lambda, dt) => lerp(x, y, 1 - Math.exp(-lambda * dt));\n// https://en.wikipedia.org/wiki/Linear_interpolation\nexport const lerp = (x, y, t) => (1 - t) * x + t * y;\nexport const degToRad = (degrees) => degrees * DEG2RAD;\nexport const radToDeg = (radians) => radians * RAD2DEG;\nexport function clamp(value, min, max) {\n    const fixedMin = isNaN(min) ? -Infinity : min;\n    const fixedMax = isNaN(max) ? Infinity : max;\n    const lower = Math.min(fixedMin, fixedMax);\n    const upper = Math.max(fixedMin, fixedMax);\n    return Math.min(Math.max(value, lower), upper);\n}\n","import { NumberEpsilon } from './utils';\n/**\n * 二维向量\n */\nexport class Vector2 {\n    x;\n    y;\n    /**\n     * 二维向量的常量\n     */\n    static ONE = new Vector2(1.0, 1.0);\n    static ZERO = new Vector2(0.0, 0.0);\n    /**\n     * 构造函数，默认为零向量\n     * @param [x=0] - x 分量\n     * @param [y=0] - y 分量\n     */\n    constructor(x = 0, y = 0) {\n        this.x = x;\n        this.y = y;\n    }\n    /**\n     * 设置向量\n     * @param x - x 轴分量\n     * @param y - y 轴分量\n     * @returns\n     */\n    set(x, y) {\n        this.x = x;\n        this.y = y;\n        return this;\n    }\n    /**\n     * 设置零向量\n     * @returns 向量\n     */\n    setZero() {\n        this.x = 0;\n        this.y = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    setFromNumber(num) {\n        this.x = num;\n        this.y = num;\n        return this;\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        return this;\n    }\n    /**\n     * 拷贝向量\n     * @param src - 要拷贝的对象\n     * @returns 向量\n     */\n    copyFrom(src) {\n        this.x = src.x;\n        this.y = src.y;\n        return this;\n    }\n    /**\n     * 克隆向量\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Vector2(this.x, this.y);\n    }\n    /**\n     * 根据下标设置元素值\n     * @param index - 下标值\n     * @param value - 数字\n     * @returns 向量\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.x = value;\n                break;\n            case 1:\n                this.y = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取值\n     * @param index - 下标\n     * @returns 值\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.x;\n            case 1: return this.y;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 向量相加\n     * @param right - 向量 | 数字\n     * @returns 向量\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.x += right;\n            this.y += right;\n        }\n        else if (right instanceof Array) {\n            this.x += right[0];\n            this.y += right[1];\n        }\n        else {\n            this.x += right.x;\n            this.y += right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量相加\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相加结果\n     */\n    addVectors(left, right) {\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param right - 向量 |  数字\n     * @returns 相减结果\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.x -= right;\n            this.y -= right;\n        }\n        else if (right instanceof Array) {\n            this.x -= right[0];\n            this.y -= right[1];\n        }\n        else {\n            this.x -= right.x;\n            this.y -= right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相减结果\n     */\n    subtractVectors(left, right) {\n        this.x = left.x - right.x;\n        this.y = left.y - right.y;\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param right - 向量 | 数字\n     * @returns 相乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.x *= right;\n            this.y *= right;\n        }\n        else if (right instanceof Array) {\n            this.x *= right[0];\n            this.y *= right[1];\n        }\n        else {\n            this.x *= right.x;\n            this.y *= right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相乘结果\n     */\n    multiplyVectors(left, right) {\n        this.x = left.x * right.x;\n        this.y = left.y * right.y;\n        return this;\n    }\n    /**\n     * 向量相除\n     * @param right - 向量 | 数字\n     * @returns 相除结果\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.x /= right;\n            this.y /= right;\n        }\n        else if (right instanceof Array) {\n            this.x /= right[0];\n            this.y /= right[1];\n        }\n        else {\n            this.x /= right.x;\n            this.y /= right.y;\n        }\n        return this;\n    }\n    /**\n     * 向量缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.x *= v;\n        this.y *= v;\n        return this;\n    }\n    /**\n     * 分量求和\n     * @returns 求和结果\n     */\n    sum() {\n        return this.x + this.y;\n    }\n    /**\n     * 向量求最小值\n     * @param v - 向量\n     * @returns 最小值\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.x = Math.min(this.x, v);\n            this.y = Math.min(this.y, v);\n        }\n        else {\n            this.x = Math.min(this.x, v.x);\n            this.y = Math.min(this.y, v.y);\n        }\n        return this;\n    }\n    /**\n     * 向量求最大值\n     * @param v - 向量\n     * @returns 最大值\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.x = Math.max(this.x, v);\n            this.y = Math.max(this.y, v);\n        }\n        else {\n            this.x = Math.max(this.x, v.x);\n            this.y = Math.max(this.y, v.y);\n        }\n        return this;\n    }\n    /**\n     * 向量阈值约束\n     * @param min - 极小值\n     * @param max - 极大值\n     * @returns 向量\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 向量向下取整\n     * @returns 取整结果\n     */\n    floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        return this;\n    }\n    /**\n     * 向量向上取整\n     * @returns 取整结果\n     */\n    ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        return this;\n    }\n    /**\n     * 向量取四舍五入\n     * @returns 四舍五入结果\n     */\n    round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        return this;\n    }\n    /**\n     * 向量取绝对值\n     * @returns 向量\n     */\n    abs() {\n        this.x = Math.abs(this.x);\n        this.y = Math.abs(this.y);\n        return this;\n    }\n    /**\n     * 向量取反\n     * @returns 取反结果\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        return this;\n    }\n    /**\n     * 向量长度\n     * @returns 求值结果\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y);\n    }\n    /**\n     * 向量长度平方\n     * @returns 求值结果\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y;\n    }\n    /**\n     * 向量归一化\n     * @returns 归一化结果\n     */\n    normalize() {\n        return this.divide(this.length() || 1);\n    }\n    /**\n     * 设置向量长度\n     * @param length - 长度\n     * @returns 向量\n     */\n    setLength(length) {\n        return this.normalize().multiply(length);\n    }\n    /**\n     * 向量线性插值\n     * @param other - 向量\n     * @param alpha - 插值比\n     * @returns 计算结果\n     */\n    lerp(other, alpha) {\n        this.x += (other.x - this.x) * alpha;\n        this.y += (other.y - this.y) * alpha;\n        return this;\n    }\n    /**\n     * 向量线性插值\n     * @param v1 - 向量\n     * @param v2 - 向量\n     * @param alpha - 插值比\n     * @returns 计算结果\n     */\n    lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        return this;\n    }\n    /**\n     * 向量点乘\n     * @param v - 向量\n     * @returns 点乘结果\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y;\n    }\n    /**\n     * 向量叉乘\n     * @param v - 向量\n     * @returns 叉乘结果\n     */\n    cross(v) {\n        return this.x * v.y - this.y * v.x;\n    }\n    /**\n     * 点距离\n     * @param v - 点\n     * @returns 距离\n     */\n    distance(v) {\n        const dx = this.x - v.x;\n        const dy = this.y - v.y;\n        return Math.sqrt(dx * dx + dy * dy);\n    }\n    /**\n     * 点距离平方\n     * @param v - 点\n     * @returns 距离平方\n     */\n    distanceSquared(v) {\n        const dx = this.x - v.x;\n        const dy = this.y - v.y;\n        return dx * dx + dy * dy;\n    }\n    /**\n     * 向量判等\n     * @param v - 向量\n     * @returns 判等结果\n     */\n    equals(v) {\n        return this.x === v.x && this.y === v.y;\n    }\n    /**\n     * 是否零向量\n     * @returns 是否零向量\n     */\n    isZero() {\n        const eps = NumberEpsilon;\n        const { x, y } = this;\n        return Math.abs(x) <= eps && Math.abs(y) <= eps;\n    }\n    /**\n     * 向量转数组\n     * @returns 数组\n     */\n    toArray() {\n        return [this.x, this.y];\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n    }\n    /**\n     * 随机生成向量\n     * @returns 向量\n     */\n    random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        return this;\n    }\n    /**\n     * 通过标量创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    static fromNumber(num) {\n        return new Vector2().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    static fromArray(array, offset = 0) {\n        return new Vector2().setFromArray(array, offset);\n    }\n}\n","import { NumberEpsilon } from './utils';\nimport { Vector2 } from './vector2';\n/**\n * 三维向量\n */\nexport class Vector3 {\n    x;\n    y;\n    z;\n    /**\n     * 三维向量的常量\n     */\n    static X = new Vector3(1.0, 0.0, 0.0);\n    static Y = new Vector3(0.0, 1.0, 0.0);\n    static Z = new Vector3(0.0, 0.0, 1.0);\n    static ONE = new Vector3(1.0, 1.0, 1.0);\n    static ZERO = new Vector3(0.0, 0.0, 0.0);\n    /**\n     * 构造函数，默认值为零向量\n     * @param [x=0]\n     * @param [y=0]\n     * @param [z=0]\n     */\n    constructor(x = 0, y = 0, z = 0) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n    }\n    /**\n     * 设置向量\n     * @param x - x 轴分量\n     * @param y - y 轴分量\n     * @param z - z 轴分量\n     * @returns 向量\n     */\n    set(x, y, z) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        return this;\n    }\n    /**\n     * 设置零向量\n     * @returns 向量\n     */\n    setZero() {\n        this.x = 0;\n        this.y = 0;\n        this.z = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值设置向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    setFromNumber(num) {\n        this.x = num;\n        this.y = num;\n        this.z = num;\n        return this;\n    }\n    /**\n     * 通过数组设置向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        this.z = array[offset + 2] ?? 0;\n        return this;\n    }\n    /**\n     * 拷贝向量\n     * @param v - 要拷贝的对象\n     * @returns 向量\n     */\n    copyFrom(v) {\n        this.x = v.x;\n        this.y = v.y;\n        this.z = v.z;\n        return this;\n    }\n    /**\n     * 克隆向量\n     * @returns 向量\n     */\n    clone() {\n        return new Vector3(this.x, this.y, this.z);\n    }\n    /**\n     * 根据下标设置向量分量\n     * @param index - 下标值\n     * @param value - 数字\n     * @returns 向量\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.x = value;\n                break;\n            case 1:\n                this.y = value;\n                break;\n            case 2:\n                this.z = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取向量分量\n     * @param index - 下标\n     * @returns\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.x;\n            case 1: return this.y;\n            case 2: return this.z;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 向量相加\n     * @param right - 向量 | 数字\n     * @returns 相加结果\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.x += right;\n            this.y += right;\n            this.z += right;\n        }\n        else if (right instanceof Array) {\n            this.x += right[0];\n            this.y += right[1];\n            this.z += right[2];\n        }\n        else {\n            this.x += right.x;\n            this.y += right.y;\n            this.z += right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量相加\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相加结果\n     */\n    addVectors(left, right) {\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        this.z = left.z + right.z;\n        return this;\n    }\n    /**\n     * 向量乘比例后相加\n     * @param right - 向量\n     * @param s - 比例\n     * @returns 相加结果\n     */\n    addScaledVector(right, s) {\n        this.x += right.x * s;\n        this.y += right.y * s;\n        this.z += right.z * s;\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param right - 向量 | 数字\n     * @returns 相减\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.x -= right;\n            this.y -= right;\n            this.z -= right;\n        }\n        else if (right instanceof Array) {\n            this.x -= right[0];\n            this.y -= right[1];\n            this.z -= right[2];\n        }\n        else {\n            this.x -= right.x;\n            this.y -= right.y;\n            this.z -= right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相减结果\n     */\n    subtractVectors(left, right) {\n        this.x = left.x - right.x;\n        this.y = left.y - right.y;\n        this.z = left.z - right.z;\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param right - 向量 | 数字\n     * @returns 相乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.x *= right;\n            this.y *= right;\n            this.z *= right;\n        }\n        else if (right instanceof Array) {\n            this.x *= right[0];\n            this.y *= right[1];\n            this.z *= right[2];\n        }\n        else {\n            this.x *= right.x;\n            this.y *= right.y;\n            this.z *= right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 相乘结果\n     */\n    multiplyVectors(left, right) {\n        this.x = left.x * right.x;\n        this.y = left.y * right.y;\n        this.z = left.z * right.z;\n        return this;\n    }\n    /**\n     * 向量相除\n     * @param right - 向量 | 数字\n     * @returns 相除结果\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.x /= right;\n            this.y /= right;\n            this.z /= right;\n        }\n        else if (right instanceof Array) {\n            this.x /= right[0];\n            this.y /= right[1];\n            this.z /= right[2];\n        }\n        else {\n            this.x /= right.x;\n            this.y /= right.y;\n            this.z /= right.z;\n        }\n        return this;\n    }\n    /**\n     * 向量缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.x *= v;\n        this.y *= v;\n        this.z *= v;\n        return this;\n    }\n    /**\n     * 分量求和\n     * @returns 求和结果\n     */\n    sum() {\n        return this.x + this.y + this.z;\n    }\n    /**\n     * 向量求最小值\n     * @param v - 向量或数值\n     * @returns 求值结果\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.x = Math.min(this.x, v);\n            this.y = Math.min(this.y, v);\n            this.z = Math.min(this.z, v);\n        }\n        else {\n            this.x = Math.min(this.x, v.x);\n            this.y = Math.min(this.y, v.y);\n            this.z = Math.min(this.z, v.z);\n        }\n        return this;\n    }\n    /**\n     * 向量求最大值\n     * @param v - 向量或数值\n     * @returns 求值结果\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.x = Math.max(this.x, v);\n            this.y = Math.max(this.y, v);\n            this.z = Math.max(this.z, v);\n        }\n        else {\n            this.x = Math.max(this.x, v.x);\n            this.y = Math.max(this.y, v.y);\n            this.z = Math.max(this.z, v.z);\n        }\n        return this;\n    }\n    /**\n     * 向量阈值约束\n     * @param min - 向量\n     * @param max - 向量\n     * @returns 求值结果\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 向量向下取整\n     * @returns 取整结果\n     */\n    floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        this.z = Math.floor(this.z);\n        return this;\n    }\n    /**\n     * 向量向上取整\n     * @returns 取整结果\n     */\n    ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        this.z = Math.ceil(this.z);\n        return this;\n    }\n    /**\n     * 向量四舍五入\n     * @returns 计算结果\n     */\n    round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        this.z = Math.round(this.z);\n        return this;\n    }\n    /**\n     * 向量取绝对值\n     * @returns 向量\n     */\n    abs() {\n        this.x = Math.abs(this.x);\n        this.y = Math.abs(this.y);\n        this.z = Math.abs(this.z);\n        return this;\n    }\n    /**\n     * 向量取反\n     * @returns 向量\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n    }\n    /**\n     * 向量长度\n     * @returns 长度\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n    }\n    /**\n     * 向量长度平方\n     * @returns 长度平方\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y + this.z * this.z;\n    }\n    /**\n     * 向量归一化\n     * @returns 向量\n     */\n    normalize() {\n        return this.divide(this.length() || 1);\n    }\n    /**\n     * 设置向量长度\n     * @param length - 长度\n     * @returns 向量\n     */\n    setLength(length) {\n        return this.normalize().multiply(length);\n    }\n    /**\n     * 向量间求线性插值\n     * @param other - 向量\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerp(other, alpha) {\n        this.x += (other.x - this.x) * alpha;\n        this.y += (other.y - this.y) * alpha;\n        this.z += (other.z - this.z) * alpha;\n        return this;\n    }\n    /**\n     * 向量间求线性插值\n     * @param v1 - 第一个向量\n     * @param v2 - 第二个向量\n     * @param alpha - 插值比例\n     * @returns 求值结果\n     */\n    lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        this.z = v1.z + (v2.z - v1.z) * alpha;\n        return this;\n    }\n    /**\n     * 向量求点积，点积为零表示两向量垂直\n     * @param v - 向量\n     * @returns 点积结果\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z;\n    }\n    /**\n     * 向量求叉积\n     * @param right - 向量\n     * @returns 叉积结果\n     */\n    cross(right) {\n        return this.crossVectors(this, right);\n    }\n    /**\n     * 向量（a 与 b）求叉积\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 叉积结果\n     */\n    crossVectors(left, right) {\n        const { x: ax, y: ay, z: az } = left;\n        const { x: bx, y: by, z: bz } = right;\n        this.x = ay * bz - az * by;\n        this.y = az * bx - ax * bz;\n        this.z = ax * by - ay * bx;\n        return this;\n    }\n    /**\n     * 向量反射\n     * @param normal - 法线\n     * @returns 反射结果\n     */\n    reflect(normal) {\n        // reflect incident vector off plane orthogonal to normal\n        // normal is assumed to have unit length\n        return this.subtract(normal.clone().multiply(2 * this.dot(normal)));\n    }\n    /**\n     * 计算向量距离\n     * @param v - 向量\n     * @returns 距离\n     */\n    distance(v) {\n        return Math.sqrt(this.distanceSquared(v));\n    }\n    /**\n     * 计算向量距离平方\n     * @param v - 向量\n     * @returns 距离平方\n     */\n    distanceSquared(v) {\n        const dx = this.x - v.x;\n        const dy = this.y - v.y;\n        const dz = this.z - v.z;\n        return dx * dx + dy * dy + dz * dz;\n    }\n    /**\n     * 向量判等\n     * @param v - 向量\n     * @returns 判等结果\n     */\n    equals(v) {\n        return v.x === this.x && v.y === this.y && v.z === this.z;\n    }\n    /**\n     * 是否零向量\n     * @returns 是否零向量\n     */\n    isZero() {\n        const eps = NumberEpsilon;\n        const { x, y, z } = this;\n        return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps;\n    }\n    /**\n     * 向量转数组\n     * @param array - 目标保存对象\n     * @returns 数组\n     */\n    toArray() {\n        return [this.x, this.y, this.z];\n    }\n    toVector2() {\n        return new Vector2(this.x, this.y);\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        array[offset + 2] = this.z;\n    }\n    /**\n     * 获取随机向量\n     * @returns\n     */\n    random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        this.z = Math.random();\n        return this;\n    }\n    /**\n     * 用欧拉角旋转向量\n     * @param euler - 欧拉角\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 旋转结果\n     */\n    applyEuler(euler, out) {\n        return euler.rotateVector3(this, out);\n    }\n    /**\n     * 用四元数旋转向量\n     * @param q - 四元数\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 旋转结果\n     */\n    applyQuaternion(q, out) {\n        return q.rotateVector3(this, out);\n    }\n    /**\n     * 用矩阵变换点\n     * @param m - 变换矩阵\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 结果点\n     */\n    applyMatrix(m, out) {\n        return m.transformPoint(this, out);\n    }\n    /**\n     * 用法向量矩阵变换法向量\n     * @param m - 法向量矩阵\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 向量\n     */\n    applyNormalMatrix(m, out) {\n        return m.transformNormal(this, out);\n    }\n    /**\n     * 用投影矩阵变换点\n     * @param m - 投影矩阵\n     * @param [out] - 输出结果，如果没有就覆盖当前向量值\n     * @returns 结果点\n     */\n    applyProjectionMatrix(m, out) {\n        return m.projectPoint(this, out);\n    }\n    /**\n     * 通过标量数值创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    static fromNumber(num) {\n        return new Vector3().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    static fromArray(array, offset = 0) {\n        return new Vector3().setFromArray(array, offset);\n    }\n}\n","import { NumberEpsilon } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四维向量\n */\nexport class Vector4 {\n    x;\n    y;\n    z;\n    w;\n    /**\n     * 四维向量的常量\n     */\n    static ONE = new Vector4(1.0, 1.0, 1.0, 1.0);\n    static ZERO = new Vector4(0.0, 0.0, 0.0, 0.0);\n    /**\n     * 构造函数\n     * @param [x=0] - x 轴分量\n     * @param [y=0] - y 轴分量\n     * @param [z=0] - z 轴分量\n     * @param [w=1] - w 轴分量\n     */\n    constructor(x = 0, y = 0, z = 0, w = 0) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n    }\n    /**\n     * 设置向量\n     * @param x - x 轴分量\n     * @param y - y 轴分量\n     * @param z - z 轴分量\n     * @param w - w 轴分量\n     * @returns\n     */\n    set(x, y, z, w) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n        return this;\n    }\n    /**\n     * 设置零向量\n     * @returns 向量\n     */\n    setZero() {\n        this.x = 0;\n        this.y = 0;\n        this.z = 0;\n        this.w = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值设置向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    setFromNumber(num) {\n        this.x = num;\n        this.y = num;\n        this.z = num;\n        this.w = num;\n        return this;\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    setFromArray(array, offset = 0) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        this.z = array[offset + 2] ?? 0;\n        this.w = array[offset + 3] ?? 0;\n        return this;\n    }\n    /**\n     * 拷贝向量\n     * @param v - 复制对象\n     * @returns 拷贝结果\n     */\n    copyFrom(v) {\n        this.x = v.x;\n        this.y = v.y;\n        this.z = v.z;\n        this.w = v.w;\n        return this;\n    }\n    /**\n     * 克隆向量\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Vector4(this.x, this.y, this.z, this.w);\n    }\n    /**\n     * 根据下标设置向量分量\n     * @param index - 下标值\n     * @param value - 分量值\n     * @returns 向量\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.x = value;\n                break;\n            case 1:\n                this.y = value;\n                break;\n            case 2:\n                this.z = value;\n                break;\n            case 3:\n                this.w = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取向量分量\n     * @param index - 下标\n     * @returns 分量值\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.x;\n            case 1: return this.y;\n            case 2: return this.z;\n            case 3: return this.w;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 向量相加\n     * @param right - 相加对象，向量 | 数字\n     * @returns 相加结果\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.x += right;\n            this.y += right;\n            this.z += right;\n            this.w += right;\n        }\n        else if (right instanceof Array) {\n            this.x += right[0];\n            this.y += right[1];\n            this.z += right[2];\n            this.w += right[3];\n        }\n        else {\n            this.x += right.x;\n            this.y += right.y;\n            this.z += right.z;\n            this.w += right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量相加\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 求和结果\n     */\n    addVectors(left, right) {\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        this.z = left.z + right.z;\n        this.w = left.w + right.w;\n        return this;\n    }\n    /**\n     * 向量比例缩放后相加\n     * @param right - 向量\n     * @param s - 比例\n     * @returns 求和结果\n     */\n    addScaledVector(right, s) {\n        this.x += right.x * s;\n        this.y += right.y * s;\n        this.z += right.z * s;\n        this.w += right.w * s;\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param right - 相减对象，向量 | 数字\n     * @returns 相减结果\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.x -= right;\n            this.y -= right;\n            this.z -= right;\n            this.w -= right;\n        }\n        else if (right instanceof Array) {\n            this.x -= right[0];\n            this.y -= right[1];\n            this.z -= right[2];\n            this.w -= right[3];\n        }\n        else {\n            this.x -= right.x;\n            this.y -= right.y;\n            this.z -= right.z;\n            this.w -= right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量相减\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 向量\n     */\n    subtractVectors(left, right) {\n        this.x = left.x - right.x;\n        this.y = left.y - right.y;\n        this.z = left.z - right.z;\n        this.w = left.w - right.w;\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param right - 相乘对象，对象 | 数字\n     * @returns 向量\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.x *= right;\n            this.y *= right;\n            this.z *= right;\n            this.w *= right;\n        }\n        else if (right instanceof Array) {\n            this.x *= right[0];\n            this.y *= right[1];\n            this.z *= right[2];\n            this.w *= right[3];\n        }\n        else {\n            this.x *= right.x;\n            this.y *= right.y;\n            this.z *= right.z;\n            this.w *= right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量相乘\n     * @param left - 向量\n     * @param right - 向量\n     * @returns 向量\n     */\n    multiplyVectors(left, right) {\n        this.x = left.x * right.x;\n        this.y = left.y * right.y;\n        this.z = left.z * right.z;\n        this.w = left.w * right.w;\n        return this;\n    }\n    /**\n     * 向量相除\n     * @param right - 相除对象，对象 | 数字\n     * @returns 向量\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.x /= right;\n            this.y /= right;\n            this.z /= right;\n            this.w /= right;\n        }\n        else if (right instanceof Array) {\n            this.x /= right[0];\n            this.y /= right[1];\n            this.z /= right[2];\n            this.w /= right[3];\n        }\n        else {\n            this.x /= right.x;\n            this.y /= right.y;\n            this.z /= right.z;\n            this.w /= right.w;\n        }\n        return this;\n    }\n    /**\n     * 向量缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.x *= v;\n        this.y *= v;\n        this.z *= v;\n        this.w *= v;\n        return this;\n    }\n    /**\n     * 分量求和\n     * @returns 求和结果\n     */\n    sum() {\n        return this.x + this.y + this.z + this.w;\n    }\n    /**\n     * 向量求最小值\n     * @param v - 向量或数值\n     * @returns 最小值\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.x = Math.min(this.x, v);\n            this.y = Math.min(this.y, v);\n            this.z = Math.min(this.z, v);\n            this.w = Math.min(this.w, v);\n        }\n        else {\n            this.x = Math.min(this.x, v.x);\n            this.y = Math.min(this.y, v.y);\n            this.z = Math.min(this.z, v.z);\n            this.w = Math.min(this.w, v.w);\n        }\n        return this;\n    }\n    /**\n     * 向量求最大值\n     * @param v - 向量或数值\n     * @returns 最大值\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.x = Math.max(this.x, v);\n            this.y = Math.max(this.y, v);\n            this.z = Math.max(this.z, v);\n            this.w = Math.max(this.w, v);\n        }\n        else {\n            this.x = Math.max(this.x, v.x);\n            this.y = Math.max(this.y, v.y);\n            this.z = Math.max(this.z, v.z);\n            this.w = Math.max(this.w, v.w);\n        }\n        return this;\n    }\n    /**\n     * 向量阈值约束\n     * @param min - 最小值\n     * @param max - 最大值\n     * @returns 向量\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 向量向下取整\n     * @returns 取整结果\n     */\n    floor() {\n        this.x = Math.floor(this.x);\n        this.y = Math.floor(this.y);\n        this.z = Math.floor(this.z);\n        this.w = Math.floor(this.w);\n        return this;\n    }\n    /**\n     * 向量向上取整\n     * @returns 取整结果\n     */\n    ceil() {\n        this.x = Math.ceil(this.x);\n        this.y = Math.ceil(this.y);\n        this.z = Math.ceil(this.z);\n        this.w = Math.ceil(this.w);\n        return this;\n    }\n    /**\n     * 向量四舍五入\n     * @returns 求值结果\n     */\n    round() {\n        this.x = Math.round(this.x);\n        this.y = Math.round(this.y);\n        this.z = Math.round(this.z);\n        this.w = Math.round(this.w);\n        return this;\n    }\n    /**\n     * 向量取绝对值\n     * @returns 向量\n     */\n    abs() {\n        this.x = Math.abs(this.x);\n        this.y = Math.abs(this.y);\n        this.z = Math.abs(this.z);\n        this.w = Math.abs(this.w);\n        return this;\n    }\n    /**\n     * 向量取反\n     * @returns 取反结果\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        this.w = -this.w;\n        return this;\n    }\n    /**\n     * 向量长度平方\n     * @returns 长度平方\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n    }\n    /**\n     * 向量长度\n     * @returns 长度\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n    }\n    /**\n     * 向量归一化\n     * @returns 归一化结果\n     */\n    normalize() {\n        return this.divide(this.length() || 1);\n    }\n    /**\n     * 设置向量长度\n     * @param length - 长度\n     * @returns 向量\n     */\n    setLength(length) {\n        return this.normalize().multiply(length);\n    }\n    /**\n     * 向量求线性插值\n     * @param v - 向量\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerp(v, alpha) {\n        this.x += (v.x - this.x) * alpha;\n        this.y += (v.y - this.y) * alpha;\n        this.z += (v.z - this.z) * alpha;\n        this.w += (v.w - this.w) * alpha;\n        return this;\n    }\n    /**\n     * 两向量求线性插值\n     * @param v1 - 第一个向量\n     * @param v2 - 第二个向量\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerpVectors(v1, v2, alpha) {\n        this.x = v1.x + (v2.x - v1.x) * alpha;\n        this.y = v1.y + (v2.y - v1.y) * alpha;\n        this.z = v1.z + (v2.z - v1.z) * alpha;\n        this.w = v1.w + (v2.w - v1.w) * alpha;\n        return this;\n    }\n    /**\n     * 向量求点积\n     * @param v - 向量\n     * @returns 点积结果\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n    }\n    /**\n     * 向量判等\n     * @param v - 向量\n     * @returns 判等结果\n     */\n    equals(v) {\n        return v.x === this.x && v.y === this.y && v.z === this.z && v.w === this.w;\n    }\n    /**\n     * 是否零向量\n     * @returns 是否零向量\n     */\n    isZero() {\n        const eps = NumberEpsilon;\n        const { x, y, z, w } = this;\n        return Math.abs(x) <= eps && Math.abs(y) <= eps && Math.abs(z) <= eps && Math.abs(w) <= eps;\n    }\n    /**\n     * 向量转数组\n     * @returns 数组\n     */\n    toArray() {\n        return [this.x, this.y, this.z, this.w];\n    }\n    toVector3() {\n        return new Vector3(this.x, this.y, this.z);\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.x;\n        array[offset + 1] = this.y;\n        array[offset + 2] = this.z;\n        array[offset + 3] = this.w;\n    }\n    /**\n     * 生成随机向量\n     * @returns 向量\n     */\n    random() {\n        this.x = Math.random();\n        this.y = Math.random();\n        this.z = Math.random();\n        this.w = Math.random();\n        return this;\n    }\n    /**\n     * 变换矩阵作用于向量\n     * @param m - 变换矩阵\n     * @param [out] - 输出结果，如果没有设置就直接覆盖当前值\n     * @returns 向量\n     */\n    applyMatrix(m, out) {\n        return m.transformVector4(this, out);\n    }\n    /**\n     * 通过标量数值创建向量\n     * @param num - 数值\n     * @returns 向量\n     */\n    static fromNumber(num) {\n        return new Vector4().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建向量\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 向量\n     */\n    static fromArray(array, offset = 0) {\n        return new Vector4().setFromArray(array, offset);\n    }\n}\n","import { Vector4 } from './vector4';\nexport class Color {\n    r;\n    g;\n    b;\n    a;\n    /**\n     * 颜色的常量\n     */\n    static BLACK = new Color(0, 0, 0, 1); // 纯黑色\n    static BLUE = new Color(0, 0, 1, 1); // 纯蓝色\n    static CLEAR = new Color(0, 0, 0, 0); // 完全透明\n    static CYAN = new Color(0, 1, 1, 1); // 青色\n    static GRAY = new Color(0.5, 0.5, 0.5, 1); // 灰色\n    static GREEN = new Color(0, 1, 0, 1); // 纯绿色\n    static MAGENTA = new Color(1, 0, 1, 1); // 洋红色\n    static RED = new Color(1, 0, 0, 1); // 纯红色\n    static WHITE = new Color(1, 1, 1, 1); // 纯白色\n    static YELLOW = new Color(1, 0.92, 0.016, 1); // 黄色\n    /**\n     * 构造函数，默认值为黑色\n     * @param [r=0]\n     * @param [g=0]\n     * @param [b=0]\n     * @param [a=0]\n     */\n    constructor(r = 0, g = 0, b = 0, a = 0) {\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n    }\n    /**\n     * 设置颜色\n     * @param r - r 分量\n     * @param g - g 分量\n     * @param b - b 分量\n     * @param a - a 分量\n     * @returns\n     */\n    set(r, g, b, a) {\n        this.r = r;\n        this.g = g;\n        this.b = b;\n        this.a = a;\n        return this;\n    }\n    /**\n     * 设置零颜色\n     * @returns\n     */\n    setZero() {\n        this.r = 0;\n        this.g = 0;\n        this.b = 0;\n        this.a = 0;\n        return this;\n    }\n    /**\n     * 通过标量数值设置颜色\n     * @param num - 数值\n     * @returns\n     */\n    setFromNumber(num) {\n        this.r = num;\n        this.g = num;\n        this.b = num;\n        this.a = num;\n        return this;\n    }\n    /**\n     * 通过Vector4创建颜色\n     * @param v - Vector4\n     * @returns\n     */\n    setFromVector4(v) {\n        this.r = v.x;\n        this.g = v.y;\n        this.b = v.z;\n        this.a = v.w;\n        return this;\n    }\n    /**\n     * 通过数组创建颜色\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns\n     */\n    setFromArray(array, offset = 0) {\n        this.r = array[offset] ?? 0;\n        this.g = array[offset + 1] ?? 0;\n        this.b = array[offset + 2] ?? 0;\n        this.a = array[offset + 3] ?? 0;\n        return this;\n    }\n    setFromHSV(hue, saturation, value, alpha = 1) {\n        const chroma = value * saturation;\n        const h = hue / 60;\n        const x = chroma * (1 - Math.abs((h % 2) - 1));\n        let r = 0;\n        let g = 0;\n        let b = 0;\n        if (h >= 0 && h <= 1) {\n            r = chroma;\n            g = x;\n        }\n        else if (h >= 1 && h <= 2) {\n            r = x;\n            g = chroma;\n        }\n        else if (h >= 2 && h <= 3) {\n            g = chroma;\n            b = x;\n        }\n        else if (h >= 3 && h <= 4) {\n            g = x;\n            b = chroma;\n        }\n        else if (h >= 4 && h <= 5) {\n            r = x;\n            b = chroma;\n        }\n        else if (h >= 5 && h <= 6) {\n            r = chroma;\n            b = x;\n        }\n        const m = value - chroma;\n        return this.set(r + m, g + m, b + m, alpha);\n    }\n    setFromHexString(hex) {\n        if (hex.substring(0, 1) !== '#' || (hex.length !== 9 && hex.length !== 7)) {\n            return this;\n        }\n        const r = parseInt(hex.substring(1, 3), 16) / 255.0;\n        const g = parseInt(hex.substring(3, 5), 16) / 255.0;\n        const b = parseInt(hex.substring(5, 7), 16) / 255.0;\n        const a = hex.length === 9 ? parseInt(hex.substring(7, 9), 16) / 255.0 : 1.0;\n        return this.set(r, g, b, a);\n    }\n    /**\n     * 拷贝颜色\n     * @param v - 复制对象\n     * @returns 拷贝结果\n     */\n    copyFrom(v) {\n        this.r = v.r;\n        this.g = v.g;\n        this.b = v.b;\n        this.a = v.a;\n        return this;\n    }\n    /**\n     * 克隆颜色\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Color(this.r, this.g, this.b, this.a);\n    }\n    /**\n     * 根据下标设置颜色分量\n     * @param index - 下标值\n     * @param value - 分量值\n     * @returns\n     */\n    setElement(index, value) {\n        switch (index) {\n            case 0:\n                this.r = value;\n                break;\n            case 1:\n                this.g = value;\n                break;\n            case 2:\n                this.b = value;\n                break;\n            case 3:\n                this.a = value;\n                break;\n            default: console.error('index is out of range: ' + index);\n        }\n        return this;\n    }\n    /**\n     * 根据下标获取颜色分量\n     * @param index - 下标\n     * @returns 分量值\n     */\n    getElement(index) {\n        switch (index) {\n            case 0: return this.r;\n            case 1: return this.g;\n            case 2: return this.b;\n            case 3: return this.a;\n            default: console.error('index is out of range: ' + index);\n        }\n        return 0;\n    }\n    /**\n     * 颜色相加\n     * @param right - 相加对象，颜色 | 数字\n     * @returns 相加结果\n     */\n    add(right) {\n        if (typeof right === 'number') {\n            this.r += right;\n            this.g += right;\n            this.b += right;\n            this.a += right;\n        }\n        else if (right instanceof Array) {\n            this.r += right[0];\n            this.g += right[1];\n            this.b += right[2];\n            this.a += right[3];\n        }\n        else {\n            this.r += right.r;\n            this.g += right.g;\n            this.b += right.b;\n            this.a += right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色相减\n     * @param right - 相减对象，颜色 | 数字\n     * @returns 相减结果\n     */\n    subtract(right) {\n        if (typeof right === 'number') {\n            this.r -= right;\n            this.g -= right;\n            this.b -= right;\n            this.a -= right;\n        }\n        else if (right instanceof Array) {\n            this.r -= right[0];\n            this.g -= right[1];\n            this.b -= right[2];\n            this.a -= right[3];\n        }\n        else {\n            this.r -= right.r;\n            this.g -= right.g;\n            this.b -= right.b;\n            this.a -= right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色相乘\n     * @param right - 相乘对象，对象 | 数字\n     * @returns 颜色\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            this.r *= right;\n            this.g *= right;\n            this.b *= right;\n            this.a *= right;\n        }\n        else if (right instanceof Array) {\n            this.r *= right[0];\n            this.g *= right[1];\n            this.b *= right[2];\n            this.a *= right[3];\n        }\n        else {\n            this.r *= right.r;\n            this.g *= right.g;\n            this.b *= right.b;\n            this.a *= right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色相除\n     * @param right - 相除对象，对象 | 数字\n     * @returns 颜色\n     */\n    divide(right) {\n        if (typeof right === 'number') {\n            this.r /= right;\n            this.g /= right;\n            this.b /= right;\n            this.a /= right;\n        }\n        else if (right instanceof Array) {\n            this.r /= right[0];\n            this.g /= right[1];\n            this.b /= right[2];\n            this.a /= right[3];\n        }\n        else {\n            this.r /= right.r;\n            this.g /= right.g;\n            this.b /= right.b;\n            this.a /= right.a;\n        }\n        return this;\n    }\n    /**\n     * 颜色缩放\n     * @param v - 数字\n     * @returns 缩放结果\n     */\n    scale(v) {\n        this.r *= v;\n        this.g *= v;\n        this.b *= v;\n        this.a *= v;\n        return this;\n    }\n    /**\n     * 颜色求最小值\n     * @param v - 颜色或数值\n     * @returns 最小值\n     */\n    min(v) {\n        if (typeof v === 'number') {\n            this.r = Math.min(this.r, v);\n            this.g = Math.min(this.g, v);\n            this.b = Math.min(this.b, v);\n            this.a = Math.min(this.a, v);\n        }\n        else {\n            this.r = Math.min(this.r, v.r);\n            this.g = Math.min(this.g, v.g);\n            this.b = Math.min(this.b, v.b);\n            this.a = Math.min(this.a, v.a);\n        }\n        return this;\n    }\n    /**\n     * 颜色求最大值\n     * @param v - 颜色或数值\n     * @returns 最大值\n     */\n    max(v) {\n        if (typeof v === 'number') {\n            this.r = Math.max(this.r, v);\n            this.g = Math.max(this.g, v);\n            this.b = Math.max(this.b, v);\n            this.a = Math.max(this.a, v);\n        }\n        else {\n            this.r = Math.max(this.r, v.r);\n            this.g = Math.max(this.g, v.g);\n            this.b = Math.max(this.b, v.b);\n            this.a = Math.max(this.a, v.a);\n        }\n        return this;\n    }\n    /**\n     * 颜色阈值约束\n     * @param min - 最小值\n     * @param max - 最大值\n     * @returns 颜色\n     */\n    clamp(min, max) {\n        return this.max(min).min(max);\n    }\n    /**\n     * 颜色求线性插值\n     * @param v - 颜色\n     * @param alpha - 插值比例\n     * @returns 插值结果\n     */\n    lerp(v, alpha) {\n        this.r += (v.r - this.r) * alpha;\n        this.g += (v.g - this.g) * alpha;\n        this.b += (v.b - this.b) * alpha;\n        this.a += (v.a - this.a) * alpha;\n        return this;\n    }\n    /**\n     * 计算颜色亮度值\n     * @returns 亮度值\n     */\n    luminance() {\n        return this.r * 0.3 + this.g * 0.59 + this.b * 0.11;\n    }\n    /**\n     * 颜色判等\n     * @param v - 颜色\n     * @returns 判等结果\n     */\n    equals(v) {\n        return v.r === this.r && v.g === this.g && v.b === this.b && v.a === this.a;\n    }\n    toLinear() {\n        this.r = Color.gammaToLinear(this.r);\n        this.g = Color.gammaToLinear(this.g);\n        this.b = Color.gammaToLinear(this.b);\n        return this;\n    }\n    toGamma() {\n        this.r = Color.linearToGamma(this.r);\n        this.g = Color.linearToGamma(this.g);\n        this.b = Color.linearToGamma(this.b);\n        return this;\n    }\n    /**\n     * 颜色转数组\n     * @returns 数组\n     */\n    toArray() {\n        return [this.r, this.g, this.b, this.a];\n    }\n    toVector4() {\n        return new Vector4(this.r, this.g, this.b, this.a);\n    }\n    /**\n     * RGB 颜色空间转 HSV\n     * @param result HSV 值\n     */\n    toHSV() {\n        const { r, g, b, a } = this;\n        const max = Math.max(r, g, b);\n        const min = Math.min(r, g, b);\n        const v = max;\n        const dm = max - min;\n        let h = 0;\n        let s = 0;\n        if (max !== 0) {\n            s = dm / max;\n        }\n        if (max != min) {\n            if (max == r) {\n                h = (g - b) / dm;\n                if (g < b) {\n                    h += 6;\n                }\n            }\n            else if (max == g) {\n                h = (b - r) / dm + 2;\n            }\n            else if (max == b) {\n                h = (r - g) / dm + 4;\n            }\n            h *= 60;\n        }\n        return new Color(h, s, v, a);\n    }\n    toHexString(includeAlpha = true) {\n        const R = Color.ToHex(Math.round(this.r * 255));\n        const G = Color.ToHex(Math.round(this.g * 255));\n        const B = Color.ToHex(Math.round(this.b * 255));\n        const A = Color.ToHex(Math.round(this.a * 255));\n        if (includeAlpha) {\n            return '#' + R + G + B + A;\n        }\n        else {\n            return '#' + R + G + B;\n        }\n    }\n    fill(array, offset = 0) {\n        array[offset] = this.r;\n        array[offset + 1] = this.g;\n        array[offset + 2] = this.b;\n        array[offset + 3] = this.a;\n    }\n    /**\n     * 通过标量数值创建颜色\n     * @param num - 数值\n     * @returns\n     */\n    static fromNumber(num) {\n        return new Color().setFromNumber(num);\n    }\n    /**\n     * 通过数组创建颜色\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns\n     */\n    static fromArray(array, offset = 0) {\n        return new Color().setFromArray(array, offset);\n    }\n    /**\n     * 通过 hex 字符串创建颜色\n     * @param hex - hex 字符串\n     * @returns\n     */\n    static fromHexString(hex) {\n        return new Color().setFromHexString(hex);\n    }\n    static fromHSV(hue, saturation, value, alpha = 1) {\n        return new Color().setFromHSV(hue, saturation, value, alpha);\n    }\n    /**\n     * 颜色值从 Gamma 空间转到线性空间\n     * @param v - Gamma 空间颜色值\n     * @returns 线性空间颜色值\n     */\n    static gammaToLinear(v) {\n        if (v <= 0.0) {\n            return 0.0;\n        }\n        else if (v <= 0.04045) {\n            return v / 12.92;\n        }\n        else if (v < 1.0) {\n            return Math.pow((v + 0.055) / 1.055, 2.4);\n        }\n        else {\n            return Math.pow(v, 2.4);\n        }\n    }\n    /**\n     * 颜色值从线性空间转到 Gamma 空间\n     * @param value - 线性空间颜色值\n     * @returns Gamma 空间颜色值\n     */\n    static linearToGamma(value) {\n        if (value <= 0.0) {\n            return 0.0;\n        }\n        else if (value < 0.0031308) {\n            return 12.92 * value;\n        }\n        else if (value < 1.0) {\n            return 1.055 * Math.pow(value, 0.41666) - 0.055;\n        }\n        else {\n            return Math.pow(value, 0.41666);\n        }\n    }\n    static ToHex(i) {\n        const str = i.toString(16);\n        if (i <= 15) {\n            return ('0' + str).toUpperCase();\n        }\n        return str.toUpperCase();\n    }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport { isString } from './index';\n\nexport interface ColorStop {\n  time: number,\n  color: Color,\n}\n\nexport function colorToArr (hex: string | number[], normalized?: boolean): number[] {\n  let ret: number[] = [0, 0, 0, 0];\n\n  if (isString(hex)) {\n    hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n    let m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n\n    if (m) {\n      const a = +m[4];\n\n      ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : a * 255];\n    } else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n      ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n      // eslint-disable-next-line no-cond-assign\n    } else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n      ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255];\n    }\n  } else if (hex instanceof Array) {\n    ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : hex[3]];\n  }\n\n  if (normalized) {\n    for (let i = 0; i < 4; i++) {\n      ret[i] /= 255;\n    }\n  }\n\n  return ret;\n}\n\nexport function getColorFromGradientStops (stops: ColorStop[], key: number, normalize?: boolean): number[] {\n  if (stops.length === 0) {\n    return [0, 0, 0, 0];\n  }\n\n  let color: number[];\n\n  if (key <= stops[0].time) {\n    color = stops[0].color.toArray();\n  } else if (key >= stops[stops.length - 1].time) {\n    color = stops[stops.length - 1].color.toArray();\n  } else {\n    color = stops[stops.length - 1].color.toArray();\n    for (let j = 1; j <= stops.length - 1; j++) {\n      const s0 = stops[j - 1];\n      const s1 = stops[j];\n\n      if (s0.time <= key && key <= s1.time) {\n        color = interpolateColor(s0.color.toArray(), s1.color.toArray(), (key - s0.time) / (s1.time - s0.time));\n\n        break;\n      }\n    }\n  }\n\n  return normalize ? color.map(n => n / 255) : color;\n}\n\nexport function colorStopsFromGradient (gradient: number[][] | Record<string, string | number[]>): ColorStop[] {\n  let stops: ColorStop[] = [];\n\n  if (gradient instanceof Array) {\n    gradient.forEach(val => {\n      const [s, r, g, b, a] = val;\n\n      stops.push({\n        // TODO\n        // @ts-expect-error\n        time: parsePercent(s),\n        color: new Color(r, g, b, a),\n      });\n    });\n  } else {\n    Object.keys(gradient).forEach(stop => {\n      const colorRGB = gradient[stop];\n      const color = new Color().setFromArray(colorToArr(colorRGB));\n\n      stops.push({\n        time: parsePercent(stop),\n        color,\n      });\n    });\n  }\n  stops = stops.sort((a, b) => a.time - b.time);\n\n  return stops;\n}\n\nexport function interpolateColor (a: number[], b: number[], s: number, origin?: boolean): number[] {\n  const ret = [];\n  const ms = 1 - s;\n\n  if (origin) {\n    for (let i = 0; i < 4; i++) {\n      ret[i] = a[i] * ms + b[i] * s;\n    }\n  } else {\n    for (let i = 0; i < 3; i++) {\n      ret[i] = Math.round(Math.sqrt(a[i] * a[i] * ms + b[i] * b[i] * s));\n    }\n    ret[3] = Math.round(a[3] * ms + b[3] * s);\n  }\n\n  return ret;\n}\n\nexport function parsePercent (c: string): number {\n  const match = /^(-)?([\\d+.]+)%$/.exec(c);\n\n  if (match) {\n    return +match[2] / 100 * (match[1] ? -1 : 1);\n  }\n\n  return +c;\n}\n","export function getPixelRatio (): number {\n  if (typeof window === 'object') {\n    return Math.min(2, window.devicePixelRatio || 1);\n  }\n\n  return 1;\n}\n\n// window 对象不存在时需要判断\nexport const canUseBOM = typeof window !== 'undefined';\n\nexport function isIOS (): boolean {\n  // real ios device not in simulator\n  return !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n}\n\nexport function isIOSByUA () {\n  const str = navigator.userAgent.toLowerCase();\n  const ver = str.match(/cpu (iphone )?os (.*?) like mac os/);\n\n  return ver ? parseInt(ver[2], 10) : 0;\n}\n\nexport function isAndroid (): boolean {\n  return /\\b[Aa]ndroid\\b/.test(navigator.userAgent);\n}\n\nexport function isOpenHarmony (): boolean {\n  return /\\bOpenHarmony\\b/.test(navigator.userAgent);\n}\n\nexport function isSimulatorCellPhone (): boolean {\n  return isAndroid() || isOpenHarmony() || /\\b(iPad|iPhone|iPod)\\b/.test(navigator.userAgent);\n}\n\nexport function isMiniProgram () {\n  return isAlipayMiniApp() || isWechatMiniApp();\n}\n\nexport function isAlipayMiniApp (): boolean {\n  return typeof my !== 'undefined' && my?.renderTarget === 'web';\n}\n\nexport function isWechatMiniApp () {\n  return window.__wxjs_environment === 'miniprogram';\n}\n","import { isString } from './index';\nimport { colorStopsFromGradient, colorToArr, interpolateColor } from './color';\n\nexport function imageDataFromColor (value: string | number[]) {\n  if (isString(value)) {\n    value = colorToArr(value);\n  }\n\n  const color = value;\n  const image = {\n    width: 1,\n    height: 1,\n    data: new Uint8Array(1 * 1 * 4),\n  };\n  const data = image.data;\n\n  for (let i = 0; i < 4; i++) {\n    data[i] = color[i];\n  }\n\n  return image;\n}\n\nexport function imageDataFromGradient (gradient: number[][] | Record<string, string | number[]>) {\n  const width = 128;\n  const image = {\n    width,\n    height: 1,\n    data: new Uint8Array(width * 1 * 4),\n  };\n  const data = image.data;\n  const stops = colorStopsFromGradient(gradient);\n\n  if (stops.length) {\n    for (let i = 0; i < width; i++) {\n      const index = i / (width - 1);\n\n      if (index <= stops[0].time) {\n        data.set(stops[0].color.toArray(), i * 4);\n      } else if (index >= stops[stops.length - 1].time) {\n        data.set(stops[stops.length - 1].color.toArray(), i * 4);\n      } else {\n        for (let j = 0; j < stops.length - 1; j++) {\n          const s0 = stops[j];\n          const s1 = stops[j + 1];\n\n          if (s0.time <= index && s1.time > index) {\n            const color = interpolateColor(s0.color.toArray(), s1.color.toArray(), (index - s0.time) / (s1.time - s0.time));\n\n            data.set(color, i * 4);\n\n            break;\n          }\n        }\n      }\n    }\n  }\n\n  return image;\n}\n","export interface Sortable {\n  readonly priority: number,\n}\n\nexport enum OrderType {\n  none = 1,\n  ascending = 2,\n  descending = 3\n}\n\n/**\n * 按照指定排序方式对数组排序\n * @param arr - 要排序的数组\n * @param order - 排序方式\n * @returns\n */\nexport function sortByOrder<T extends Sortable> (arr: T[], order = OrderType.ascending): T[] {\n  const length = arr.length;\n\n  if (length <= 1 || order === OrderType.none) {\n    return arr;\n  }\n  if (length <= 30) {\n    for (let i = 1; i < length; i++) {\n      insertionSort(arr, i, order);\n    }\n\n    return arr;\n  } else {\n    return fastSort(arr, order);\n  }\n}\n\n/**\n * 按照指定排序方式往Sortable数组中添加成员\n * @param arr - 被添加的数组\n * @param item - 要添加的成员\n * @param order - 排序方式\n * @returns\n */\nexport function addByOrder<T extends Sortable> (arr: T[], item: T, order: OrderType = OrderType.ascending): T[] {\n  if (arr.includes(item)) {\n    return arr;\n  }\n  arr.push(item);\n  if (arr.length === 1) {\n    return arr;\n  }\n  if (order !== OrderType.none) {\n    insertionSort(arr, arr.length - 1, order);\n  }\n\n  return arr;\n}\n\nfunction insertionSort<T extends Sortable> (array: T[], index: number, order: OrderType) {\n  const currentItem = array[index];\n\n  if (order !== OrderType.ascending) {\n    while (index >= 1 && array[index - 1].priority < currentItem.priority) {\n      array[index] = array[index - 1];\n      index--;\n      if (index === 0) {\n        break;\n      }\n    }\n  } else {\n    while (index >= 1 && array[index - 1].priority > currentItem.priority) {\n      array[index] = array[index - 1];\n      index--;\n      if (index === 0) {\n        break;\n      }\n    }\n  }\n  array[index] = currentItem;\n}\n\nfunction fastSort<T extends Sortable> (\n  arr: T[],\n  order: OrderType,\n  start = 0,\n  end = arr.length - 1,\n): T[] {\n  // 终止条件\n  if (start >= end) {\n    return arr;\n  }\n\n  const base = arr[start];\n  let left = start;\n  let right = end;\n\n  while (left < right) {\n    if (order === OrderType.ascending) {\n      // 从右向左，寻找第一个小于base的值\n      while (arr[right].priority > base.priority && right >= left) { right--; }\n      // 从左向右，寻找第一个大于base的值\n      while (arr[left].priority <= base.priority && left < right) { left++; }\n    } else {\n      // 从右向左，寻找第一个大于base的值\n      while (arr[right].priority < base.priority && right >= left) { right--; }\n      // 从左向右，寻找第一个小于base的值\n      while (arr[left].priority >= base.priority && left < right) { left++; }\n    }\n    // 将两个值交换位置\n    [arr[left], arr[right]] = [arr[right], arr[left]];\n  }\n  // 将最后两个游标相遇的位置的值与base值交换\n  [arr[start], arr[left]] = [arr[left], arr[start]];\n  fastSort(arr, order, start, left - 1);\n  fastSort(arr, order, right + 1, end);\n\n  return arr;\n}\n","export function assertExist<T> (item?: T | void | null, msg = 'item doesn\\'t exist'): asserts item is T {\n  if (item === undefined || item === null) {\n    throw new Error(msg);\n  }\n}\n\nexport function asserts (condition: any, msg = 'asserts failed'): asserts condition {\n  if (!condition) {\n    throw new Error(msg);\n  }\n}\n","import { isSimulatorCellPhone } from './device';\n\n/**\n * 判断是否为可解析的字体\n * - 首字母不能为数字或 `.`\n * - 不能包含特殊字符，`_-` 是被允许的\n * @param fontFamily - 字体名称\n * @returns\n */\nexport function isValidFontFamily (fontFamily: string): boolean {\n  // iOS 11/12 不支持自定义字体开头为数字的名称，特殊字符也有风险\n  return isSafeFontFamily(fontFamily) || !isSimulatorCellPhone();\n}\n\n/**\n * @internal\n */\nexport function isSafeFontFamily (fontFamily: string): boolean {\n  return /^[^\\d.][\\w-]*$/.test(fontFamily);\n}","/**\n * Simple implementation of the deferred pattern.\n * An object that exposes a promise and functions to resolve and reject it.\n */\nexport class Deferred<T> {\n  resolve: (value: T | PromiseLike<T>) => void;\n  reject: (err?: any) => void;\n\n  promise = new Promise<T>((resolve, reject) => {\n    this.resolve = resolve;\n    this.reject = reject;\n  });\n}\n","import { isFunction } from './index';\n\ntype LogType = 'info' | 'error' | 'warn';\n\nconst prefix = '[Galacean Effects]';\nlet localLogger: ((type: LogType, message: string, ...args: any[]) => void) | undefined;\n\nfunction format (message: string) {\n  return [\n    `%c${prefix}`,\n    'color: #AA0100',\n    `${message}`,\n  ];\n}\n\nfunction error (message: string, ...args: any[]) {\n  console.error(...format(message), args);\n  localLogger?.('error', message, args);\n}\n\n/**\n * info 会转换成浏览器的 console.debug\n * @param message\n * @param args\n */\nfunction info (message: string, ...args: any[]) {\n  console.debug(...format(message));\n  localLogger?.('info', message, args);\n}\n\nfunction warn (message: string, ...args: any[]) {\n  console.warn(...format(message));\n  localLogger?.('warn', message, args);\n}\n\n/**\n * 注册自定义埋点函数\n *\n * @param fn\n */\nfunction register (fn: (type: LogType, message: string, ...args: any[]) => void) {\n  if (fn && isFunction(fn)) {\n    localLogger = fn;\n  }\n}\n\nexport const logger = {\n  error,\n  info,\n  warn,\n  register,\n};\n","import { v4 as uuidv4 } from 'uuid';\n\nexport * from './array';\nexport * from './color';\nexport * from './device';\nexport * from './image-data';\nexport * from './sortable';\nexport * from './asserts';\nexport * from './text';\nexport * from './promise-util';\nexport * from './logger';\n\nexport type Immutable<O> = O extends Record<any, any>\n  ? { readonly [key in keyof O]: Immutable<O[key]> }\n  : O extends Array<infer X> ? ReadonlyArray<X> : O;\n\nexport type PickEnum<T, K extends T> = {\n  [P in keyof K]: P extends K ? P : never;\n};\n\nexport interface Constructor<T = unknown> {\n  new(...args: any[]): T,\n}\n\nexport type Nullable<T> = T | null;\n\nexport enum DestroyOptions {\n  destroy = 0,\n  keep = 1,\n  force = destroy,\n}\n\n/**\n *\n */\nexport interface Disposable {\n  dispose (): void,\n}\n\nexport interface RestoreHandler {\n  restore (): void,\n}\n\nexport interface LostHandler {\n  lost (e: Event): void,\n}\n\nexport function noop () {\n}\n\n/**\n * 判断对象是否是`String`类型\n *\n * @static\n * @function isString\n * @param obj - 要判断的对象\n * @return\n */\nexport function isString (obj: unknown): obj is string {\n  return typeof obj === 'string';\n}\n\n/**\n * 判断对象是否是`Array`类型\n *\n * @static\n * @function isArray\n * @param obj - 要判断的对象\n * @return\n */\nexport const isArray = (Array.isArray || function (obj) {\n  return Object.prototype.toString.call(obj) === '[object Array]';\n});\n\n/**\n * 判断对象是否是函数类型\n *\n * @static\n * @function isFunction\n * @param obj - 要判断的对象\n * @return\n */\nexport function isFunction (obj: unknown): obj is Function {\n  return Object.prototype.toString.call(obj) === '[object Function]';\n}\n\n/**\n * 判断对象是否是`Object`类型\n *\n * @static\n * @function isObject\n * @param obj - 要判断的对象\n * @return\n */\nexport function isObject (obj: unknown): obj is Record<string | symbol, unknown> {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\n/**\n * 判断对象是否是`Plain Object`类型\n *\n * @param obj - 要判断的对象\n * @returns\n */\nexport function isPlainObject (obj: unknown): obj is Record<string | symbol, unknown> {\n  if (obj === null || typeof obj !== 'object') { return false; }\n  // 先排除 Array/Date/Map/Set/RegExp 等\n  if (Object.prototype.toString.call(obj) !== '[object Object]') { return false; }\n\n  const proto = Object.getPrototypeOf(obj);\n\n  if (proto === null) { return true; } // Object.create(null)\n\n  const hasOwn = Object.prototype.hasOwnProperty;\n  const Ctor = hasOwn.call(proto, 'constructor') && proto.constructor;\n\n  // 构造器需要是 Object（跨 realm 用函数源码比对）\n  return typeof Ctor === 'function' &&\n    Function.prototype.toString.call(Ctor) === Function.prototype.toString.call(Object);\n}\n\nexport function isCanvas (canvas: HTMLCanvasElement) {\n  // 小程序 Canvas 无法使用 instanceof HTMLCanvasElement 判断\n  return typeof canvas === 'object' && canvas !== null && canvas.tagName?.toUpperCase() === 'CANVAS';\n}\n\nexport function isPowerOfTwo (value: number) {\n  return (value & (value - 1)) === 0 && value !== 0;\n}\n\n/**\n * 生成一个位于 min 和 max 之间的随机数\n * @param min\n * @param max\n * @returns\n */\nexport function randomInRange (min: number, max: number) {\n  return min + Math.random() * (max - min);\n}\n\nexport function throwDestroyedError () {\n  throw new Error('Destroyed item cannot be used again.');\n}\n\nexport function generateGUID (): string {\n  return uuidv4().replace(/-/g, '');\n}\n\nexport function base64ToFile (\n  base64: string,\n  filename = 'base64File',\n  contentType = '',\n) {\n  // 去掉 Base64 字符串的 Data URL 部分（如果存在）\n  const base64WithoutPrefix = base64.split(',')[1] || base64;\n\n  // 将 base64 编码的字符串转换为二进制字符串\n  const byteCharacters = atob(base64WithoutPrefix);\n  // 创建一个 8 位无符号整数值的数组，即“字节数组”\n  const byteArrays = [];\n\n  // 切割二进制字符串为多个片段，并将每个片段转换成一个字节数组\n  for (let offset = 0; offset < byteCharacters.length; offset += 512) {\n    const slice = byteCharacters.slice(offset, offset + 512);\n    const byteNumbers = new Array(slice.length);\n\n    for (let i = 0; i < slice.length; i++) {\n      byteNumbers[i] = slice.charCodeAt(i);\n    }\n    const byteArray = new Uint8Array(byteNumbers);\n\n    byteArrays.push(byteArray);\n  }\n\n  // 使用字节数组创建 Blob 对象\n  const blob = new Blob(byteArrays, { type: contentType });\n\n  // 创建 File 对象\n  const file = new File([blob], filename, { type: contentType });\n\n  return file;\n}\n\nexport function applyMixins<T extends Constructor, K extends Constructor> (\n  derivedCtrl: T,\n  baseCtrls: K[],\n) {\n  baseCtrls.forEach(baseCtrl => {\n    Object.getOwnPropertyNames(baseCtrl.prototype).forEach(name => {\n      const propertyDescriptor = Object.getOwnPropertyDescriptor(baseCtrl.prototype, name);\n\n      if (!propertyDescriptor) {\n        throw new Error(`Cannot find property descriptor of class ${baseCtrl}`);\n      }\n      Object.defineProperty(\n        derivedCtrl.prototype,\n        name,\n        propertyDescriptor,\n      );\n    });\n  });\n}\n","import type { Composition } from './composition';\nimport type { Plugin, PluginConstructor } from './plugins';\nimport type { Scene, SceneLoadOptions } from './scene';\nimport { logger } from './utils';\nimport type { Engine } from './engine';\n\nexport const pluginLoaderMap: Record<string, PluginConstructor> = {};\n\nconst plugins: Plugin[] = [];\n\n/**\n * 注册 plugin\n * @param name\n * @param pluginClass class of plugin\n * @param itemClass class of item\n * @param isDefault load\n */\nexport function registerPlugin (name: string, pluginClass: PluginConstructor) {\n  if (pluginLoaderMap[name]) {\n    logger.error(`Duplicate registration for plugin ${name}.`);\n  }\n\n  pluginLoaderMap[name] = pluginClass;\n\n  const pluginInstance = new pluginClass();\n\n  pluginInstance.name = name;\n\n  plugins.push(pluginInstance);\n  plugins.sort((a, b) => a.order - b.order);\n}\n\n/**\n * 注销 plugin\n */\nexport function unregisterPlugin (name: string) {\n  delete pluginLoaderMap[name];\n  const pluginIndex = plugins.findIndex(plugin => plugin.name === name);\n\n  if (pluginIndex !== -1) {\n    plugins.splice(pluginIndex, 1);\n  }\n}\n\nexport class PluginSystem {\n  static getPlugins (): Plugin[] {\n    return plugins;\n  }\n\n  static initializeComposition (composition: Composition, scene: Scene) {\n    plugins.forEach(loader => loader.onCompositionCreated(composition, scene));\n  }\n\n  static destroyComposition (comp: Composition) {\n    plugins.forEach(loader => loader.onCompositionDestroy(comp));\n  }\n\n  static async onAssetsLoadStart (scene: Scene, options?: SceneLoadOptions) {\n    return Promise.all(\n      plugins.map(plugin => plugin.onAssetsLoadStart(scene, options)),\n    );\n  }\n\n  static onAssetsLoadFinish (scene: Scene, options: SceneLoadOptions, engine: Engine) {\n    plugins.forEach(loader => loader.onAssetsLoadFinish(scene, options, engine));\n  }\n}\n\nconst pluginInfoMap: Record<string, string> = {\n  'alipay-downgrade': '@galacean/effects-plugin-alipay-downgrade',\n  'downgrade': '@galacean/effects-plugin-downgrade',\n  'editor-gizmo': '@galacean/effects-plugin-editor-gizmo',\n  'ffd': '@galacean/effects-plugin-ffd',\n  'ktx2': '@galacean/effects-plugin-ktx2',\n  'model': '@galacean/effects-plugin-model',\n  'video': '@galacean/effects-plugin-multimedia',\n  'audio': '@galacean/effects-plugin-multimedia',\n  'orientation-transformer': '@galacean/effects-plugin-orientation-transformer',\n  'rich-text': '@galacean/effects-plugin-rich-text',\n  'spine': '@galacean/effects-plugin-spine',\n};\n\nexport function getPluginUsageInfo (name: string) {\n  const info = pluginInfoMap[name];\n\n  if (info) {\n    return `\n请按如下命令进行操作（Please follow the commands below to proceed）：\n1、使用 npm 安装插件（Install Plugin）：npm i ${info}@latest --save\n2、导入插件（Import Plugin）：import '${info}'`;\n  } else {\n    return '';\n  }\n}\n","import type { Scene, SceneLoadOptions } from '../scene';\nimport type { Composition } from '../composition';\nimport type { Engine } from '../engine';\n\nexport interface PluginConstructor {\n  new(): Plugin,\n\n  [key: string]: any,\n}\n\n/**\n * 抽象插件类\n * 注册合成不同生命周期的回调函数\n */\nexport abstract class Plugin {\n  order = 100;\n  name = 'Plugin';\n\n  /**\n   * 场景加载时触发，用于加载插件所需的自定义资源。\n   * 此阶段适合发起异步资源请求。\n   * @param scene - 场景对象\n   * @param options - 场景加载选项\n   */\n  async onAssetsLoadStart (scene: Scene, options?: SceneLoadOptions): Promise<void> { }\n\n  /**\n   * 场景资源加载完成后触发。\n   * 此时 JSON 中的图片和二进制已加载完成，可对资源做进一步处理。\n   * @param scene - 场景对象\n   * @param options - 场景加载选项\n   * @param engine - 引擎实例\n   */\n  onAssetsLoadFinish (scene: Scene, options: SceneLoadOptions, engine: Engine): void { }\n\n  /**\n   * 合成创建完成后触发。\n   * @param composition - 合成对象\n   * @param scene - 场景对象\n   */\n  onCompositionCreated (composition: Composition, scene: Scene): void { }\n\n  /**\n   * 合成销毁时触发。\n   * @param composition - 合成对象\n   */\n  onCompositionDestroy (composition: Composition): void { }\n}\n","function _set_prototype_of(o, p) {\n    _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n        o.__proto__ = p;\n\n        return o;\n    };\n\n    return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) {\n        throw new TypeError(\"Super expression must either be null or a function\");\n    }\n\n    subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n    if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","/**\n * JSON 版本\n */\nexport var JSONSceneVersion;\n(function (JSONSceneVersion) {\n    JSONSceneVersion[\"1_0\"] = \"1.0\";\n    JSONSceneVersion[\"1_1\"] = \"1.1\";\n    JSONSceneVersion[\"1_2\"] = \"1.2\";\n    JSONSceneVersion[\"1_3\"] = \"1.3\";\n    JSONSceneVersion[\"1_5\"] = \"1.5\";\n    JSONSceneVersion[\"1_8\"] = \"1.8\";\n    JSONSceneVersion[\"2_0\"] = \"2.0\";\n    JSONSceneVersion[\"2_1\"] = \"2.1\";\n    JSONSceneVersion[\"2_2\"] = \"2.2\";\n    JSONSceneVersion[\"2_3\"] = \"2.3\";\n    JSONSceneVersion[\"2_4\"] = \"2.4\";\n    JSONSceneVersion[\"3_0\"] = \"3.0\";\n    JSONSceneVersion[\"3_1\"] = \"3.1\";\n    JSONSceneVersion[\"3_2\"] = \"3.2\";\n    JSONSceneVersion[\"3_3\"] = \"3.3\";\n    JSONSceneVersion[\"3_4\"] = \"3.4\";\n    JSONSceneVersion[\"3_5\"] = \"3.5\";\n    JSONSceneVersion[\"3_6\"] = \"3.6\";\n    JSONSceneVersion[\"LATEST\"] = \"3.6\";\n})(JSONSceneVersion || (JSONSceneVersion = {}));\n","/*********************************************/\n/*               元素属性参数类型               */\n/*********************************************/\n/**\n * 渲染等级\n */\nexport var RenderLevel;\n(function (RenderLevel) {\n    RenderLevel[\"S\"] = \"S\";\n    RenderLevel[\"APlus\"] = \"A+\";\n    RenderLevel[\"A\"] = \"A\";\n    RenderLevel[\"BPlus\"] = \"B+\";\n    RenderLevel[\"B\"] = \"B\";\n})(RenderLevel || (RenderLevel = {}));\n/**\n * 混合模式\n */\nexport var BlendingMode;\n(function (BlendingMode) {\n    /**\n     * 普通混合模式\n     */\n    BlendingMode[BlendingMode[\"ALPHA\"] = 0] = \"ALPHA\";\n    /**\n     * 叠加混合模式\n     */\n    BlendingMode[BlendingMode[\"ADD\"] = 1] = \"ADD\";\n    /**\n     * 相乘混合模式\n     */\n    BlendingMode[BlendingMode[\"MULTIPLY\"] = 2] = \"MULTIPLY\";\n    /**\n     * 亮度混合模式\n     */\n    BlendingMode[BlendingMode[\"BRIGHTNESS\"] = 3] = \"BRIGHTNESS\";\n    /**\n     * 减色混合模式\n     */\n    BlendingMode[BlendingMode[\"SUBTRACTION\"] = 4] = \"SUBTRACTION\";\n    /**\n     * 强光混合模式\n     */\n    BlendingMode[BlendingMode[\"STRONG_LIGHT\"] = 5] = \"STRONG_LIGHT\";\n    /**\n     * 弱光混合模式\n     */\n    BlendingMode[BlendingMode[\"WEAK_LIGHT\"] = 6] = \"WEAK_LIGHT\";\n    /**\n     * 亮度叠加混合模式\n     */\n    BlendingMode[BlendingMode[\"SUPERPOSITION\"] = 7] = \"SUPERPOSITION\";\n})(BlendingMode || (BlendingMode = {}));\n/**\n * 单双面模式\n */\nexport var SideMode;\n(function (SideMode) {\n    /**\n     * 双面模式\n     */\n    SideMode[SideMode[\"DOUBLE\"] = 1032] = \"DOUBLE\";\n    /**\n     * 正面模式\n     */\n    SideMode[SideMode[\"FRONT\"] = 1028] = \"FRONT\";\n    /**\n     * 背面模式\n     */\n    SideMode[SideMode[\"BACK\"] = 1029] = \"BACK\";\n})(SideMode || (SideMode = {}));\n/**\n *  元素是否被蒙版遮挡/反向遮挡\n */\nexport var ObscuredMode;\n(function (ObscuredMode) {\n    /**\n     * 无\n     */\n    // NONE = 0,\n    // /**\n    //  * 蒙版\n    //  */\n    // MASK = 1,\n    /**\n     * 被遮挡\n     */\n    ObscuredMode[ObscuredMode[\"OBSCURED\"] = 2] = \"OBSCURED\";\n    /**\n     * 被反向遮挡\n     */\n    ObscuredMode[ObscuredMode[\"REVERSE_OBSCURED\"] = 3] = \"REVERSE_OBSCURED\";\n})(ObscuredMode || (ObscuredMode = {}));\n/**\n * 发射器形状\n */\nexport var ParticleEmitterShapeType;\n(function (ParticleEmitterShapeType) {\n    /**\n     * 没有类型\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"NONE\"] = 0] = \"NONE\";\n    /**\n     * 圆球\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"SPHERE\"] = 1] = \"SPHERE\";\n    /**\n     * 圆锥\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"CONE\"] = 2] = \"CONE\";\n    /**\n     * 半球\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"HEMISPHERE\"] = 3] = \"HEMISPHERE\";\n    /**\n     * 圆\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"CIRCLE\"] = 4] = \"CIRCLE\";\n    /**\n     * 圆环\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"DONUT\"] = 5] = \"DONUT\";\n    /**\n     * 矩形\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE\"] = 6] = \"RECTANGLE\";\n    /**\n     * 矩形框\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"RECTANGLE_EDGE\"] = 7] = \"RECTANGLE_EDGE\";\n    /**\n     * 直线\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"EDGE\"] = 8] = \"EDGE\";\n    /**\n     * 贴图\n     */\n    ParticleEmitterShapeType[ParticleEmitterShapeType[\"TEXTURE\"] = 9] = \"TEXTURE\";\n})(ParticleEmitterShapeType || (ParticleEmitterShapeType = {}));\n/**\n * 插件类型\n */\nexport var PluginType;\n(function (PluginType) {\n    /**\n     * 陀螺仪\n     */\n    PluginType[PluginType[\"GYROSCOPE\"] = 0] = \"GYROSCOPE\";\n    /**\n     * Spine\n     */\n    PluginType[PluginType[\"SPINE\"] = 1] = \"SPINE\";\n})(PluginType || (PluginType = {}));\n/**\n * 交互类型\n */\nexport var InteractType;\n(function (InteractType) {\n    /**\n     * 点击\n     */\n    InteractType[InteractType[\"CLICK\"] = 0] = \"CLICK\";\n    /**\n     * 消息\n     * 前端收到 onMessageItem 回调\n     */\n    InteractType[InteractType[\"MESSAGE\"] = 1] = \"MESSAGE\";\n    /**\n     * 拖拽\n     */\n    InteractType[InteractType[\"DRAG\"] = 2] = \"DRAG\";\n})(InteractType || (InteractType = {}));\n/**\n * 交互行为\n */\nexport var InteractBehavior;\n(function (InteractBehavior) {\n    /**\n     * 无\n     */\n    InteractBehavior[InteractBehavior[\"NONE\"] = 0] = \"NONE\";\n    /**\n     * 通知\n     */\n    InteractBehavior[InteractBehavior[\"NOTIFY\"] = 1] = \"NOTIFY\";\n    /**\n     * 重置播放器\n     */\n    InteractBehavior[InteractBehavior[\"RESUME_PLAYER\"] = 2] = \"RESUME_PLAYER\";\n    /**\n     * 清除元素\n     */\n    InteractBehavior[InteractBehavior[\"REMOVE\"] = 3] = \"REMOVE\";\n    /**\n     * 暂停播放器\n     */\n    InteractBehavior[InteractBehavior[\"PAUSE\"] = 4] = \"PAUSE\";\n})(InteractBehavior || (InteractBehavior = {}));\n/**\n * 元素类型\n */\nexport var ItemType;\n(function (ItemType) {\n    /**\n     * 错误元素\n     */\n    ItemType[\"base\"] = \"0\";\n    /**\n     * 图层元素\n     */\n    ItemType[\"sprite\"] = \"1\";\n    /**\n     * 粒子元素\n     */\n    ItemType[\"particle\"] = \"2\";\n    /**\n     * 空节点元素\n     */\n    ItemType[\"null\"] = \"3\";\n    /**\n     * 交互元素\n     */\n    ItemType[\"interact\"] = \"4\";\n    /**\n     * 插件元素\n     */\n    ItemType[\"plugin\"] = \"5\";\n    /**\n     * 相机元素\n     */\n    ItemType[\"camera\"] = \"6\";\n    /**\n     * 预合成元素\n     */\n    ItemType[\"composition\"] = \"7\";\n    /**\n     * Spine 元素\n     */\n    ItemType[\"spine\"] = \"spine\";\n    /**\n     * Mesh 元素\n     */\n    ItemType[\"mesh\"] = \"mesh\";\n    /**\n     * 节点树元素\n     */\n    ItemType[\"tree\"] = \"tree\";\n    /**\n     * 文本元素\n     */\n    ItemType[\"text\"] = \"text\";\n    /**\n     * 灯光元素\n     */\n    ItemType[\"light\"] = \"light\";\n    /**\n     * 天空盒元素\n     */\n    ItemType[\"skybox\"] = \"skybox\";\n    /**\n     * 特效元素\n     */\n    ItemType[\"effect\"] = \"effect\";\n    /**\n     * 形状元素\n     */\n    ItemType[\"shape\"] = \"shape\";\n    /**\n     * 后处理元素\n     */\n    ItemType[\"postProcessVolume\"] = \"postProcessVolume\";\n    /**\n     * 节点元素\n     */\n    ItemType[\"node\"] = \"node\";\n    /**\n     * 视频元素\n     */\n    ItemType[\"video\"] = \"video\";\n    /**\n     * 音频元素\n     */\n    ItemType[\"audio\"] = \"audio\";\n    /**\n     * 富文本元素\n     */\n    ItemType[\"richtext\"] = \"richtext\";\n})(ItemType || (ItemType = {}));\n/**\n * 渲染模式\n */\nexport var RenderMode;\n(function (RenderMode) {\n    /**\n     * 广告牌模式\n     */\n    RenderMode[RenderMode[\"BILLBOARD\"] = 0] = \"BILLBOARD\";\n    /**\n     * 网格模式\n     */\n    RenderMode[RenderMode[\"MESH\"] = 1] = \"MESH\";\n    /**\n     * 垂直广告牌模式\n     */\n    RenderMode[RenderMode[\"VERTICAL_BILLBOARD\"] = 2] = \"VERTICAL_BILLBOARD\";\n    /**\n     * 水平广告牌模式\n     */\n    RenderMode[RenderMode[\"HORIZONTAL_BILLBOARD\"] = 3] = \"HORIZONTAL_BILLBOARD\";\n})(RenderMode || (RenderMode = {}));\n/**\n * 变换中心\n */\nexport var ParticleOrigin;\n(function (ParticleOrigin) {\n    /**\n     * 水平和垂直中点\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER\"] = 0] = \"PARTICLE_ORIGIN_CENTER\";\n    /**\n     * 水平左侧 垂直顶部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_TOP\"] = 1] = \"PARTICLE_ORIGIN_LEFT_TOP\";\n    /**\n     * 水平左侧 垂直中间\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_CENTER\"] = 2] = \"PARTICLE_ORIGIN_LEFT_CENTER\";\n    /**\n     * 水平左侧 垂直底部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_LEFT_BOTTOM\"] = 3] = \"PARTICLE_ORIGIN_LEFT_BOTTOM\";\n    /**\n     * 水平中间 垂直顶部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_TOP\"] = 4] = \"PARTICLE_ORIGIN_CENTER_TOP\";\n    /**\n     * 水平中间 垂直底部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_CENTER_BOTTOM\"] = 5] = \"PARTICLE_ORIGIN_CENTER_BOTTOM\";\n    /**\n     * 水平右侧 垂直顶部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_TOP\"] = 6] = \"PARTICLE_ORIGIN_RIGHT_TOP\";\n    /**\n     * 水平右侧 垂直中间\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_CENTER\"] = 7] = \"PARTICLE_ORIGIN_RIGHT_CENTER\";\n    /**\n     * 水平右侧 垂直底部\n     */\n    ParticleOrigin[ParticleOrigin[\"PARTICLE_ORIGIN_RIGHT_BOTTOM\"] = 8] = \"PARTICLE_ORIGIN_RIGHT_BOTTOM\";\n})(ParticleOrigin || (ParticleOrigin = {}));\nexport var RenderType;\n(function (RenderType) {\n    RenderType[\"Opaque\"] = \"Opaque\";\n    RenderType[\"Transparent\"] = \"Transparent\";\n})(RenderType || (RenderType = {}));\nexport var RenderFace;\n(function (RenderFace) {\n    RenderFace[\"Both\"] = \"Both\";\n    RenderFace[\"Back\"] = \"Back\";\n    RenderFace[\"Front\"] = \"Front\";\n})(RenderFace || (RenderFace = {}));\n","/**\n * 销毁\n */\nexport const END_BEHAVIOR_DESTROY = 0;\n/**\n * 暂停\n * @deprecated since 2.0 - use `END_BEHAVIOR_FREEZE` instead\n */\nexport const END_BEHAVIOR_PAUSE = 1;\n/**\n * 无限播放\n */\nexport const END_BEHAVIOR_FORWARD = 2;\n/**\n * 销毁并保留最后一帧\n * @deprecated since 2.0\n */\nexport const END_BEHAVIOR_PAUSE_AND_DESTROY = 3;\n/**\n * 冻结\n */\nexport const END_BEHAVIOR_FREEZE = 4;\n/**\n * 重播\n */\nexport const END_BEHAVIOR_RESTART = 5;\n/**\n *\n */\nexport const END_BEHAVIOR_DESTROY_CHILDREN = 6;\nexport const CAMERA_CLIP_MODE_VERTICAL = 1;\nexport const CAMERA_CLIP_MODE_NORMAL = 0;\n/**\n * 消息开始\n */\nexport const MESSAGE_ITEM_PHRASE_BEGIN = 2;\n/**\n * 消息结束\n */\nexport const MESSAGE_ITEM_PHRASE_END = 1;\n","import { CAMERA_CLIP_MODE_NORMAL, CAMERA_CLIP_MODE_VERTICAL } from './constants';\nexport var CameraClipMode;\n(function (CameraClipMode) {\n    /**\n     * 剪裁上下\n     */\n    CameraClipMode[CameraClipMode[\"portrait\"] = 1] = \"portrait\";\n    /**\n     * 剪裁左右\n     */\n    CameraClipMode[CameraClipMode[\"landscape\"] = 0] = \"landscape\";\n})(CameraClipMode || (CameraClipMode = {}));\n","/*********************************************/\n/*               基本数值属性参数              */\n/*********************************************/\nexport var ValueType;\n(function (ValueType) {\n    /**\n     * 常数\n     */\n    ValueType[ValueType[\"CONSTANT\"] = 0] = \"CONSTANT\";\n    /**\n     * 二维常数向量\n     */\n    ValueType[ValueType[\"CONSTANT_VEC2\"] = 1] = \"CONSTANT_VEC2\";\n    /**\n     * 三维常数向量\n     */\n    ValueType[ValueType[\"CONSTANT_VEC3\"] = 2] = \"CONSTANT_VEC3\";\n    /**\n     * 四维常数向量\n     */\n    ValueType[ValueType[\"CONSTANT_VEC4\"] = 3] = \"CONSTANT_VEC4\";\n    /**\n     * 随机数\n     */\n    ValueType[ValueType[\"RANDOM\"] = 4] = \"RANDOM\";\n    /**\n     * 直线\n     */\n    ValueType[ValueType[\"LINE\"] = 5] = \"LINE\";\n    /**\n     * 曲线\n     */\n    ValueType[ValueType[\"CURVE\"] = 6] = \"CURVE\";\n    /**\n     * 贝塞尔路径\n     */\n    ValueType[ValueType[\"BEZIER_PATH\"] = 7] = \"BEZIER_PATH\";\n    /**\n     * 颜色\n     */\n    ValueType[ValueType[\"RGBA_COLOR\"] = 8] = \"RGBA_COLOR\";\n    /**\n     * 渐变色\n     */\n    ValueType[ValueType[\"GRADIENT_COLOR\"] = 9] = \"GRADIENT_COLOR\";\n    /**\n     * 蒙版形状点集\n     */\n    ValueType[ValueType[\"SHAPE_POINTS\"] = 10] = \"SHAPE_POINTS\";\n    /**\n     * 蒙版形状切分\n     */\n    ValueType[ValueType[\"SHAPE_SPLITS\"] = 11] = \"SHAPE_SPLITS\";\n    /**\n     * 直线路径\n     */\n    ValueType[ValueType[\"LINEAR_PATH\"] = 12] = \"LINEAR_PATH\";\n    /**\n     * 多色\n     */\n    ValueType[ValueType[\"COLORS\"] = 13] = \"COLORS\";\n    /**\n     * 二进制指针\n     */\n    ValueType[ValueType[\"BINARY\"] = 20] = \"BINARY\";\n    /**\n     * 贝塞尔曲线\n     */\n    ValueType[ValueType[\"BEZIER_CURVE\"] = 21] = \"BEZIER_CURVE\";\n    /**\n     * 贝塞尔曲线路径\n     */\n    ValueType[ValueType[\"BEZIER_CURVE_PATH\"] = 22] = \"BEZIER_CURVE_PATH\";\n    /**\n     * 贝塞尔曲线四元数\n     */\n    ValueType[ValueType[\"BEZIER_CURVE_QUAT\"] = 23] = \"BEZIER_CURVE_QUAT\";\n    /**\n     * 颜色曲线\n     */\n    ValueType[ValueType[\"COLOR_CURVE\"] = 24] = \"COLOR_CURVE\";\n    /**\n     * Vector4 曲线\n     */\n    ValueType[ValueType[\"VECTOR4_CURVE\"] = 25] = \"VECTOR4_CURVE\";\n    /**\n     * Vector2 曲线\n     */\n    ValueType[ValueType[\"VECTOR2_CURVE\"] = 26] = \"VECTOR2_CURVE\";\n    /**\n     * Vector3 曲线\n     */\n    ValueType[ValueType[\"VECTOR3_CURVE\"] = 27] = \"VECTOR3_CURVE\";\n})(ValueType || (ValueType = {}));\n/**\n * 关键帧类型\n */\nexport var BezierKeyframeType;\n(function (BezierKeyframeType) {\n    BezierKeyframeType[BezierKeyframeType[\"AUTO\"] = 0] = \"AUTO\";\n    BezierKeyframeType[BezierKeyframeType[\"EASE\"] = 1] = \"EASE\";\n    BezierKeyframeType[BezierKeyframeType[\"EASE_IN\"] = 2] = \"EASE_IN\";\n    BezierKeyframeType[BezierKeyframeType[\"EASE_OUT\"] = 3] = \"EASE_OUT\";\n    BezierKeyframeType[BezierKeyframeType[\"LINE\"] = 4] = \"LINE\";\n    BezierKeyframeType[BezierKeyframeType[\"HOLD\"] = 5] = \"HOLD\";\n    BezierKeyframeType[BezierKeyframeType[\"LINE_OUT\"] = 6] = \"LINE_OUT\";\n})(BezierKeyframeType || (BezierKeyframeType = {}));\n","import { END_BEHAVIOR_DESTROY, END_BEHAVIOR_FORWARD, END_BEHAVIOR_FREEZE, END_BEHAVIOR_RESTART, } from '../constants';\n/**\n * 结束行为\n */\nexport var EndBehavior;\n(function (EndBehavior) {\n    /**\n     * 销毁\n     */\n    EndBehavior[EndBehavior[\"destroy\"] = 0] = \"destroy\";\n    /**\n     * 重播\n     */\n    EndBehavior[EndBehavior[\"restart\"] = 5] = \"restart\";\n    /**\n     * 无限播放\n     */\n    EndBehavior[EndBehavior[\"forward\"] = 2] = \"forward\";\n    /**\n     * 冻结\n     */\n    EndBehavior[EndBehavior[\"freeze\"] = 4] = \"freeze\";\n})(EndBehavior || (EndBehavior = {}));\n","/**\n * 粒子交互行为\n */\nexport var ParticleInteractionBehavior;\n(function (ParticleInteractionBehavior) {\n    /**\n     * 无\n     */\n    ParticleInteractionBehavior[ParticleInteractionBehavior[\"none\"] = 0] = \"none\";\n    /**\n     * 移出粒子\n     */\n    ParticleInteractionBehavior[ParticleInteractionBehavior[\"removeParticle\"] = 1] = \"removeParticle\";\n})(ParticleInteractionBehavior || (ParticleInteractionBehavior = {}));\n","export var ShapeArcMode;\n(function (ShapeArcMode) {\n    /**\n     * 随机\n     */\n    ShapeArcMode[ShapeArcMode[\"RANDOM\"] = 0] = \"RANDOM\";\n    /**\n     * 单向循环\n     */\n    ShapeArcMode[ShapeArcMode[\"UNIDIRECTIONAL_CYCLE\"] = 1] = \"UNIDIRECTIONAL_CYCLE\";\n    /**\n     * 双向循环\n     */\n    ShapeArcMode[ShapeArcMode[\"BIDIRECTIONAL_CYCLE\"] = 2] = \"BIDIRECTIONAL_CYCLE\";\n    /**\n     * 均匀爆发\n     */\n    ShapeArcMode[ShapeArcMode[\"UNIFORM_BURST\"] = 3] = \"UNIFORM_BURST\";\n})(ShapeArcMode || (ShapeArcMode = {}));\n","export var LightType;\n(function (LightType) {\n    /**\n     * 点光源\n     */\n    LightType[\"point\"] = \"point\";\n    /**\n     * 聚光灯\n     */\n    LightType[\"spot\"] = \"spot\";\n    /**\n     * 方向光\n     */\n    LightType[\"directional\"] = \"directional\";\n    /**\n     * 环境光\n     */\n    LightType[\"ambient\"] = \"ambient\";\n})(LightType || (LightType = {}));\n","export var ModelBoundingType;\n(function (ModelBoundingType) {\n    ModelBoundingType[ModelBoundingType[\"box\"] = 2] = \"box\";\n    ModelBoundingType[ModelBoundingType[\"sphere\"] = 3] = \"sphere\";\n})(ModelBoundingType || (ModelBoundingType = {}));\n","export var CameraType;\n(function (CameraType) {\n    CameraType[\"orthographic\"] = \"orthographic\";\n    CameraType[\"perspective\"] = \"perspective\";\n})(CameraType || (CameraType = {}));\n","// 材质类型\nexport var MaterialType;\n(function (MaterialType) {\n    MaterialType[\"unlit\"] = \"unlit\";\n    MaterialType[\"pbr\"] = \"pbr\";\n    // 头发材质，在 pbr 材质基础上扩展\n    MaterialType[\"hair\"] = \"hair\";\n})(MaterialType || (MaterialType = {}));\n// 混合模式\nexport var MaterialBlending;\n(function (MaterialBlending) {\n    MaterialBlending[MaterialBlending[\"opaque\"] = 100] = \"opaque\";\n    MaterialBlending[MaterialBlending[\"masked\"] = 101] = \"masked\";\n    MaterialBlending[MaterialBlending[\"translucent\"] = 102] = \"translucent\";\n    MaterialBlending[MaterialBlending[\"additive\"] = 103] = \"additive\";\n})(MaterialBlending || (MaterialBlending = {}));\n","/**\n * 3D渲染模式：将渲染过程中的中间结果输出，主要用于排查渲染效果问题，支持 pbr 和 unlit 材质\n */\nexport var RenderMode3D;\n(function (RenderMode3D) {\n    /**\n     * 正常渲染\n     */\n    RenderMode3D[\"none\"] = \"none\";\n    /**\n     * 纹理坐标\n     */\n    RenderMode3D[\"uv\"] = \"uv\";\n    /**\n     * 世界坐标法线\n     */\n    RenderMode3D[\"normal\"] = \"normal\";\n    /**\n     * 基础颜色\n     */\n    RenderMode3D[\"basecolor\"] = \"basecolor\";\n    /**\n     * 基础颜色 Alpha\n     */\n    RenderMode3D[\"alpha\"] = \"alpha\";\n    /**\n     * 金属度\n     */\n    RenderMode3D[\"metallic\"] = \"metallic\";\n    /**\n     * 粗超度\n     */\n    RenderMode3D[\"roughness\"] = \"roughness\";\n    /**\n     * 环境遮蔽\n     */\n    RenderMode3D[\"ao\"] = \"ao\";\n    /**\n     * 自发光\n     */\n    RenderMode3D[\"emissive\"] = \"emissive\";\n    /**\n     * 漫反射\n     */\n    RenderMode3D[\"diffuse\"] = \"diffuse\";\n})(RenderMode3D || (RenderMode3D = {}));\n","export var TextOverflow;\n(function (TextOverflow) {\n    /**\n     * visible 模式下，文本内容超出边界框时，会继续显示内容，不进行裁剪或缩放。\n     */\n    TextOverflow[TextOverflow[\"visible\"] = 0] = \"visible\";\n    /**\n     * display 模式下，会显示所有文本，文本字号大小会根据边界框调整。\n     */\n    TextOverflow[TextOverflow[\"display\"] = 1] = \"display\";\n    /**\n     * clip 模式下，当文本内容超出边界框时，多余的会被截断。\n     */\n    TextOverflow[TextOverflow[\"clip\"] = 2] = \"clip\";\n    /**\n     * ellipsis 模式下，会使用（...）来代替超出边界框的内容。\n     */\n    TextOverflow[TextOverflow[\"ellipsis\"] = 3] = \"ellipsis\";\n})(TextOverflow || (TextOverflow = {}));\nexport var TextSizeMode;\n(function (TextSizeMode) {\n    /**\n     * 自适应宽度\n     */\n    TextSizeMode[TextSizeMode[\"autoWidth\"] = 0] = \"autoWidth\";\n    /**\n     * 自适应高度\n     */\n    TextSizeMode[TextSizeMode[\"autoHeight\"] = 1] = \"autoHeight\";\n    /**\n     * 固定宽高\n     */\n    TextSizeMode[TextSizeMode[\"fixed\"] = 2] = \"fixed\";\n})(TextSizeMode || (TextSizeMode = {}));\nexport var TextBaseline;\n(function (TextBaseline) {\n    /**\n     * 文本顶对齐。\n     */\n    TextBaseline[TextBaseline[\"top\"] = 0] = \"top\";\n    /**\n     * 文本垂直居中对齐。\n     */\n    TextBaseline[TextBaseline[\"middle\"] = 1] = \"middle\";\n    /**\n     * 文本底对齐。\n     */\n    TextBaseline[TextBaseline[\"bottom\"] = 2] = \"bottom\";\n})(TextBaseline || (TextBaseline = {}));\nexport var TextAlignment;\n(function (TextAlignment) {\n    /**\n     * text alignment starts from（x,y) to right direction\n     * 从 (x,y) 开始第一个字符，向右边延伸\n     */\n    TextAlignment[TextAlignment[\"left\"] = 0] = \"left\";\n    /**\n     * (x,y) is middle position of text, where (left + right)/2 =(x,y)\n     * (x,y) 为文字中间位置，（最左位置 + 最右位置)/2 = (x,y)\n     */\n    TextAlignment[TextAlignment[\"middle\"] = 1] = \"middle\";\n    /**\n     * text alignment ends with（x,y) from left direction\n     * 从 (x,y) 结束最后一个字符，向左边延伸\n     */\n    TextAlignment[TextAlignment[\"right\"] = 2] = \"right\";\n})(TextAlignment || (TextAlignment = {}));\nexport var TextVerticalAlign;\n(function (TextVerticalAlign) {\n    /**\n     * 文本顶对齐。\n     */\n    TextVerticalAlign[TextVerticalAlign[\"top\"] = 0] = \"top\";\n    /**\n     * 文本垂直居中对齐。\n     */\n    TextVerticalAlign[TextVerticalAlign[\"middle\"] = 1] = \"middle\";\n    /**\n     * 文本底对齐。\n     */\n    TextVerticalAlign[TextVerticalAlign[\"bottom\"] = 2] = \"bottom\";\n})(TextVerticalAlign || (TextVerticalAlign = {}));\n/**\n * 文本字重\n */\nexport var TextWeight;\n(function (TextWeight) {\n    /**\n     * 正常\n     */\n    TextWeight[\"normal\"] = \"normal\";\n    /**\n     * 粗体\n     */\n    TextWeight[\"bold\"] = \"bold\";\n    /**\n     * 瘦体\n     */\n    TextWeight[\"lighter\"] = \"lighter\";\n})(TextWeight || (TextWeight = {}));\n/**\n * 文本样式\n */\nexport var FontStyle;\n(function (FontStyle) {\n    /**\n     * 正常\n     */\n    FontStyle[\"normal\"] = \"normal\";\n    /**\n     * 斜体\n     */\n    FontStyle[\"italic\"] = \"italic\";\n    /**\n     * 倾斜体\n     */\n    FontStyle[\"oblique\"] = \"oblique\";\n})(FontStyle || (FontStyle = {}));\n","export const BuiltinObjectGUID = {\n    WhiteTexture: 'whitetexture00000000000000000000',\n    TransparentTexture: 'transparenttexture00000000000000000000',\n    PBRShader: 'pbr00000000000000000000000000000',\n    UnlitShader: 'unlit000000000000000000000000000',\n};\n","export var FillType;\n(function (FillType) {\n    FillType[FillType[\"Solid\"] = 0] = \"Solid\";\n    FillType[FillType[\"GradientLinear\"] = 1] = \"GradientLinear\";\n    FillType[FillType[\"GradientRadial\"] = 2] = \"GradientRadial\";\n    FillType[FillType[\"GradientAngular\"] = 3] = \"GradientAngular\";\n    FillType[FillType[\"Texture\"] = 4] = \"Texture\";\n})(FillType || (FillType = {}));\nexport var TexturePaintScaleMode;\n(function (TexturePaintScaleMode) {\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Fill\"] = 0] = \"Fill\";\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Fit\"] = 1] = \"Fit\";\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Crop\"] = 2] = \"Crop\";\n    TexturePaintScaleMode[TexturePaintScaleMode[\"Tile\"] = 3] = \"Tile\";\n})(TexturePaintScaleMode || (TexturePaintScaleMode = {}));\n","/**\n * 矢量图形类型\n */\nexport var ShapePrimitiveType;\n(function (ShapePrimitiveType) {\n    /**\n     * 自定义图形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Custom\"] = 0] = \"Custom\";\n    /**\n     * 矩形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Rectangle\"] = 1] = \"Rectangle\";\n    /**\n     * 椭圆\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Ellipse\"] = 2] = \"Ellipse\";\n    /**\n     * 多边形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Polygon\"] = 3] = \"Polygon\";\n    /**\n     * 星形\n     */\n    ShapePrimitiveType[ShapePrimitiveType[\"Star\"] = 4] = \"Star\";\n})(ShapePrimitiveType || (ShapePrimitiveType = {}));\n","export var LineCap;\n(function (LineCap) {\n    /** 默认值。向线条的每个末端添加平直的边缘 */\n    LineCap[LineCap[\"Butt\"] = 0] = \"Butt\";\n    /** 向线条的每个末端添加圆形线帽 */\n    LineCap[LineCap[\"Round\"] = 1] = \"Round\";\n    /** 向线条的每个末端添加正方形线帽 */\n    LineCap[LineCap[\"Square\"] = 2] = \"Square\";\n})(LineCap || (LineCap = {}));\nexport var LineJoin;\n(function (LineJoin) {\n    /** 创建圆角 */\n    LineJoin[LineJoin[\"Round\"] = 0] = \"Round\";\n    /** 创建斜角 */\n    LineJoin[LineJoin[\"Bevel\"] = 1] = \"Bevel\";\n    /** 创建尖角 */\n    LineJoin[LineJoin[\"Miter\"] = 2] = \"Miter\";\n})(LineJoin || (LineJoin = {}));\n","export var NodeDataType;\n(function (NodeDataType) {\n    NodeDataType[\"AnimationClipNodeData\"] = \"AnimationClipNodeData\";\n    NodeDataType[\"BlendNodeData\"] = \"BlendNodeData\";\n    NodeDataType[\"ApplyAdditiveNodeData\"] = \"ApplyAdditiveNodeData\";\n    NodeDataType[\"LayerBlendNodeData\"] = \"LayerBlendNodeData\";\n    NodeDataType[\"StateMachineNodeData\"] = \"StateMachineNodeData\";\n    NodeDataType[\"TransitionNodeData\"] = \"TransitionNodeData\";\n    NodeDataType[\"StateNodeData\"] = \"StateNodeData\";\n    NodeDataType[\"ConstFloatNodeData\"] = \"ConstFloatNodeData\";\n    NodeDataType[\"ConstBoolNodeData\"] = \"ConstBoolNodeData\";\n    NodeDataType[\"ControlParameterBoolNodeData\"] = \"ControlParameterBoolNodeData\";\n    NodeDataType[\"ControlParameterFloatNodeData\"] = \"ControlParameterFloatNodeData\";\n    NodeDataType[\"ControlParameterTriggerNodeData\"] = \"ControlParameterTriggerNodeData\";\n    NodeDataType[\"NotNodeData\"] = \"NotNodeData\";\n    NodeDataType[\"AndNodeData\"] = \"AndNodeData\";\n    NodeDataType[\"OrNodeData\"] = \"OrNodeData\";\n    NodeDataType[\"EqualNodeData\"] = \"EqualNodeData\";\n    NodeDataType[\"GreaterNodeData\"] = \"GreaterNodeData\";\n    NodeDataType[\"LessNodeData\"] = \"LessNodeData\";\n})(NodeDataType || (NodeDataType = {}));\n","/**\n * 动态换图类型\n * @since 1.1.0\n */\nexport var BackgroundType;\n(function (BackgroundType) {\n    BackgroundType[\"video\"] = \"video\";\n    BackgroundType[\"image\"] = \"image\";\n})(BackgroundType || (BackgroundType = {}));\n/**\n * 多媒体资源类型\n * @since 2.1.0\n */\nexport var MultimediaType;\n(function (MultimediaType) {\n    MultimediaType[\"video\"] = \"video\";\n    MultimediaType[\"audio\"] = \"audio\";\n})(MultimediaType || (MultimediaType = {}));\nexport var HevcVideoCodec;\n(function (HevcVideoCodec) {\n    HevcVideoCodec[\"L30\"] = \"hev1.1.0.L30.B0\";\n    HevcVideoCodec[\"L60\"] = \"hev1.1.0.L60.B0\";\n    HevcVideoCodec[\"L63\"] = \"hev1.1.0.L63.B0\";\n    HevcVideoCodec[\"L90\"] = \"hev1.1.0.L90.B0\";\n    HevcVideoCodec[\"L93\"] = \"hev1.1.0.L93.B0\";\n    HevcVideoCodec[\"L120\"] = \"hev1.1.0.L120.B0\";\n    HevcVideoCodec[\"L150\"] = \"hev1.1.0.L150.B0\";\n    HevcVideoCodec[\"L180\"] = \"hev1.1.0.L180.B0\";\n})(HevcVideoCodec || (HevcVideoCodec = {}));\n","export var DataType;\n(function (DataType) {\n    DataType[\"VFXItemData\"] = \"VFXItemData\";\n    // Assets\n    DataType[\"Material\"] = \"Material\";\n    DataType[\"Shader\"] = \"Shader\";\n    DataType[\"Geometry\"] = \"Geometry\";\n    DataType[\"Texture\"] = \"Texture\";\n    DataType[\"Image\"] = \"Image\";\n    DataType[\"AnimationClip\"] = \"AnimationClip\";\n    DataType[\"BinaryAsset\"] = \"BinaryAsset\";\n    // Timeline\n    DataType[\"TrackAsset\"] = \"TrackAsset\";\n    DataType[\"TimelineAsset\"] = \"TimelineAsset\";\n    DataType[\"ObjectBindingTrack\"] = \"ObjectBindingTrack\";\n    DataType[\"TransformTrack\"] = \"TransformTrack\";\n    DataType[\"SpriteColorTrack\"] = \"SpriteColorTrack\";\n    DataType[\"ActivationTrack\"] = \"ActivationTrack\";\n    DataType[\"SubCompositionTrack\"] = \"SubCompositionTrack\";\n    DataType[\"FloatPropertyTrack\"] = \"FloatPropertyTrack\";\n    DataType[\"ColorPropertyTrack\"] = \"ColorPropertyTrack\";\n    DataType[\"Vector2PropertyTrack\"] = \"Vector2PropertyTrack\";\n    DataType[\"Vector3PropertyTrack\"] = \"Vector3PropertyTrack\";\n    DataType[\"Vector4PropertyTrack\"] = \"Vector4PropertyTrack\";\n    DataType[\"TransformPlayableAsset\"] = \"TransformPlayableAsset\";\n    DataType[\"SpriteColorPlayableAsset\"] = \"SpriteColorPlayableAsset\";\n    DataType[\"ActivationPlayableAsset\"] = \"ActivationPlayableAsset\";\n    DataType[\"SubCompositionPlayableAsset\"] = \"SubCompositionPlayableAsset\";\n    DataType[\"FloatPropertyPlayableAsset\"] = \"FloatPropertyPlayableAsset\";\n    DataType[\"ColorPropertyPlayableAsset\"] = \"ColorPropertyPlayableAsset\";\n    DataType[\"Vector2PropertyPlayableAsset\"] = \"Vector2PropertyPlayableAsset\";\n    DataType[\"Vector3PropertyPlayableAsset\"] = \"Vector3PropertyPlayableAsset\";\n    DataType[\"Vector4PropertyPlayableAsset\"] = \"Vector4PropertyPlayableAsset\";\n    // Components\n    DataType[\"MeshComponent\"] = \"MeshComponent\";\n    DataType[\"SkyboxComponent\"] = \"SkyboxComponent\";\n    DataType[\"LightComponent\"] = \"LightComponent\";\n    DataType[\"CameraComponent\"] = \"CameraComponent\";\n    DataType[\"ModelPluginComponent\"] = \"ModelPluginComponent\";\n    DataType[\"TreeComponent\"] = \"TreeComponent\";\n    DataType[\"AnimationComponent\"] = \"AnimationComponent\";\n    DataType[\"SpineComponent\"] = \"SpineComponent\";\n    DataType[\"VideoComponent\"] = \"VideoComponent\";\n    DataType[\"AudioComponent\"] = \"AudioComponent\";\n    DataType[\"RichTextComponent\"] = \"RichTextComponent\";\n    DataType[\"OrientationComponent\"] = \"OrientationComponent\";\n    DataType[\"ShapeComponent\"] = \"ShapeComponent\";\n    DataType[\"SpriteComponent\"] = \"SpriteComponent\";\n    DataType[\"ParticleSystem\"] = \"ParticleSystem\";\n    DataType[\"InteractComponent\"] = \"InteractComponent\";\n    DataType[\"CameraController\"] = \"CameraController\";\n    DataType[\"PostProcessVolume\"] = \"PostProcessVolume\";\n    DataType[\"EffectComponent\"] = \"EffectComponent\";\n    DataType[\"TextComponent\"] = \"TextComponent\";\n    DataType[\"AnimationGraphAsset\"] = \"AnimationGraphAsset\";\n    DataType[\"CompositionComponent\"] = \"CompositionComponent\";\n    DataType[\"FFDComponent\"] = \"FFDComponent\";\n    DataType[\"Animator\"] = \"Animator\";\n    // Non-EffectObject\n    DataType[\"TimelineClip\"] = \"TimelineClip\";\n})(DataType || (DataType = {}));\n","export var GeometryType;\n(function (GeometryType) {\n    /**\n     * Draw single points.\n     */\n    GeometryType[GeometryType[\"POINTS\"] = 0] = \"POINTS\";\n    /**\n     * Draw lines. Each vertex connects to the one after it.\n     */\n    GeometryType[GeometryType[\"LINES\"] = 1] = \"LINES\";\n    /**\n     * Draw lines. Each set of two vertices is treated as a separate line segment.\n     */\n    GeometryType[GeometryType[\"LINE_LOOP\"] = 2] = \"LINE_LOOP\";\n    /**\n     * Draw a connected group of line segments from the first vertex to the last.\n     */\n    GeometryType[GeometryType[\"LINE_STRIP\"] = 3] = \"LINE_STRIP\";\n    /**\n     * Draw triangles. Each set of three vertices creates a separate triangle.\n     */\n    GeometryType[GeometryType[\"TRIANGLES\"] = 4] = \"TRIANGLES\";\n    /**\n     * Draw a connected strip of triangles.\n     */\n    GeometryType[GeometryType[\"TRIANGLE_STRIP\"] = 5] = \"TRIANGLE_STRIP\";\n    /**\n     * Draw a connected group of triangles. Each vertex connects to the previous and the first vertex in the fan.\n     */\n    GeometryType[GeometryType[\"TRIANGLE_FAN\"] = 6] = \"TRIANGLE_FAN\";\n})(GeometryType || (GeometryType = {}));\nexport var VertexFormatType;\n(function (VertexFormatType) {\n    VertexFormatType[VertexFormatType[\"Float16\"] = 0] = \"Float16\";\n    VertexFormatType[VertexFormatType[\"Float32\"] = 1] = \"Float32\";\n    VertexFormatType[VertexFormatType[\"Int8\"] = 2] = \"Int8\";\n    VertexFormatType[VertexFormatType[\"Int16\"] = 3] = \"Int16\";\n    VertexFormatType[VertexFormatType[\"Int32\"] = 4] = \"Int32\";\n    VertexFormatType[VertexFormatType[\"UInt8\"] = 5] = \"UInt8\";\n    VertexFormatType[VertexFormatType[\"UInt16\"] = 6] = \"UInt16\";\n    VertexFormatType[VertexFormatType[\"UInt32\"] = 7] = \"UInt32\";\n})(VertexFormatType || (VertexFormatType = {}));\nexport var IndexFormatType;\n(function (IndexFormatType) {\n    IndexFormatType[IndexFormatType[\"None\"] = -1] = \"None\";\n    IndexFormatType[IndexFormatType[\"UInt8\"] = 0] = \"UInt8\";\n    IndexFormatType[IndexFormatType[\"UInt16\"] = 1] = \"UInt16\";\n    IndexFormatType[IndexFormatType[\"UInt32\"] = 2] = \"UInt32\";\n})(IndexFormatType || (IndexFormatType = {}));\n// BINORMAL[n]\tBinormal\tfloat4\n// BLENDINDICES[n]\t混合索引\tuint\n// BLENDWEIGHT[n]\t混合权重\tFLOAT\n// COLOR[n]\t漫射和反射颜色\tfloat4\n// NORMAL[n]\t法向矢量\tfloat4\n// POSITION[n]\t对象空间中的顶点位置。\tfloat4\n// POSITIONT\t变换的顶点位置。\tfloat4\n// PSIZE[n]\t点大小\tFLOAT\n// TANGENT[n]\t正切\tfloat4\n// TEXCOORD[n]\t纹理坐标\tfloat4\n// POSITION_BS[n]\tBlend Shape 空间中的顶点位置\tfloat4\n// NORMAL_BS[n]\tBlend Shape 空间中的法向矢量\tfloat4\n// TANGENT_BS[n]\tBlend Shape 空间中的正切矢量\tfloat4\nexport var VertexBufferSemantic;\n(function (VertexBufferSemantic) {\n    VertexBufferSemantic[\"Position\"] = \"POSITION\";\n    VertexBufferSemantic[\"Uv\"] = \"TEXCOORD0\";\n    VertexBufferSemantic[\"Uv2\"] = \"TEXCOORD1\";\n    VertexBufferSemantic[\"Normal\"] = \"NORMAL\";\n    VertexBufferSemantic[\"Tangent\"] = \"TANGENT\";\n    VertexBufferSemantic[\"Color\"] = \"COLOR\";\n    VertexBufferSemantic[\"Joints\"] = \"JOINTS\";\n    VertexBufferSemantic[\"Weights\"] = \"WEIGHTS\";\n    //\n    VertexBufferSemantic[\"PositionBS0\"] = \"POSITION_BS0\";\n    VertexBufferSemantic[\"PositionBS1\"] = \"POSITION_BS1\";\n    VertexBufferSemantic[\"PositionBS2\"] = \"POSITION_BS2\";\n    VertexBufferSemantic[\"PositionBS3\"] = \"POSITION_BS3\";\n    VertexBufferSemantic[\"PositionBS4\"] = \"POSITION_BS4\";\n    VertexBufferSemantic[\"PositionBS5\"] = \"POSITION_BS5\";\n    VertexBufferSemantic[\"PositionBS6\"] = \"POSITION_BS6\";\n    VertexBufferSemantic[\"PositionBS7\"] = \"POSITION_BS7\";\n    VertexBufferSemantic[\"NormalBS0\"] = \"NORMAL_BS0\";\n    VertexBufferSemantic[\"NormalBS1\"] = \"NORMAL_BS1\";\n    VertexBufferSemantic[\"NormalBS2\"] = \"NORMAL_BS2\";\n    VertexBufferSemantic[\"NormalBS3\"] = \"NORMAL_BS3\";\n    VertexBufferSemantic[\"TangentBS0\"] = \"TANGENT_BS0\";\n    VertexBufferSemantic[\"TangentBS1\"] = \"TANGENT_BS1\";\n    VertexBufferSemantic[\"TangentBS2\"] = \"TANGENT_BS2\";\n    VertexBufferSemantic[\"TangentBS3\"] = \"TANGENT_BS3\";\n})(VertexBufferSemantic || (VertexBufferSemantic = {}));\n","import { JSONSceneVersion } from './scene';\nexport * from './type';\nexport * from './composition';\nexport * from './texture';\nexport * from './constants';\nexport * from './number-expression';\nexport * from './scene';\nexport * from './math';\nexport * from './item';\nexport * from './item/base-item';\nexport * from './item/camera-item';\nexport * from './item/composition-item';\nexport * from './item/interact-item';\nexport * from './item/null-item';\nexport * from './item/particle-item';\nexport * from './item/particle-shape';\nexport * from './item/plugin-item';\nexport * from './item/sprite-item';\nexport * from './item/spine-item';\nexport * from './item/effect-item';\nexport * from './item/text-item';\nexport * from './item/rich-text-item';\nexport * from './item/video-item';\nexport * from './item/audio-item';\nexport * from './item/model';\nexport * from './vfx-item-data';\nexport * from './animation-clip-data';\nexport * from './binary';\nexport * from './text';\nexport * from './components';\nexport * from './buitin-object-guid';\nexport * from './shape';\nexport * from './animation-graph';\nexport * from './timeline';\nexport * from './assets';\nexport * from './render-settings';\nexport * from './curve-data';\nexport * from './data-type';\nexport * from './effects-object-data';\nexport * from './material-data';\nexport * from './geometry-data';\nexport * from './shader-data';\nexport * from './effects-package-data';\nexport const LATEST_VERSION = JSONSceneVersion.LATEST;\n","function _array_like_to_array(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(n);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n    if (it) return (it = it.call(o)).next.bind(it);\n    // Fallback for engines without symbol support\n    if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n        if (it) o = it;\n\n        var i = 0;\n\n        return function() {\n            if (i >= o.length) return { done: true };\n\n            return { done: false, value: o[i++] };\n        };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _create_for_of_iterator_helper_loose as _ };\n","import type { Constructor } from './utils';\n\ntype PropertyDescriptor = { type?: Constructor, sourceName?: string };\ntype SerializableMemberStoreType = Map<Function, Record<string | symbol, PropertyDescriptor>>;\n\nconst decoratorInitialStore: SerializableMemberStoreType = new Map();\nconst mergedStore: SerializableMemberStoreType = new Map();\n\nexport const effectsClassStore: Record<string, any> = {};\n\nexport function getClass (className: string) {\n  return effectsClassStore[className];\n}\n\nexport function effectsClass (className: string) {\n  return (target: Object, context?: unknown) => {\n    if (effectsClassStore[className]) {\n      console.warn(`Class ${className} is already registered.`);\n    }\n    // TODO: three修改json dataType, 这边重复注册直接 return\n    effectsClassStore[className] = target;\n  };\n}\n\nexport function serialize (type?: Constructor, sourceName?: string) {\n  return generateSerializableMember(type, sourceName); // value member\n}\n\nexport function getMergedStore (target: Object): Record<string, any> | undefined {\n  const classKey = target.constructor;\n\n  if (mergedStore.get(classKey)) {\n    return mergedStore.get(classKey);\n  }\n\n  const store: Record<string | symbol, PropertyDescriptor> = {};\n\n  mergedStore.set(classKey, store);\n\n  let currentTarget = target;\n  let currentKey = classKey;\n\n  while (currentKey) {\n    const initialStore = decoratorInitialStore.get(currentKey);\n\n    for (const property in initialStore) {\n      store[property] = initialStore[property];\n    }\n\n    const parent = Object.getPrototypeOf(currentTarget);\n\n    currentKey = Object.getPrototypeOf(parent).constructor;\n    if (currentKey === Object) {\n      break;\n    }\n    currentTarget = parent;\n  }\n\n  return store;\n}\n\nfunction generateSerializableMember (type?: Constructor, sourceName?: string) {\n  return (target: Object, propertyKey: string | symbol) => {\n    const classStore = getDirectStore(target);\n\n    if (!classStore) {\n      return;\n    }\n    if (!classStore[propertyKey]) {\n      classStore[propertyKey] = { type, sourceName };\n    }\n  };\n}\n\nfunction getDirectStore (target: Object) {\n  const classKey = target.constructor;\n\n  if (!decoratorInitialStore.get(classKey)) {\n    decoratorInitialStore.set(classKey, {});\n  }\n\n  return decoratorInitialStore.get(classKey);\n}\n\n","import type * as spec from '@galacean/effects-specification';\nimport type { Engine } from './engine';\nimport { generateGUID } from './utils';\n\n/**\n * @since 2.0.0\n */\nexport abstract class EffectsObject {\n  /**\n   *\n   * @param obj\n   * @returns\n   */\n  static is (obj: unknown): obj is EffectsObject {\n    return obj instanceof EffectsObject && 'guid' in obj;\n  }\n\n  protected guid: string;\n  /**\n   * 存储需要序列化的数据\n   */\n  defination: Record<string, any>;\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (\n    public engine: Engine,\n  ) {\n    this.guid = generateGUID();\n    this.defination = {};\n    this.engine.addInstance(this);\n  }\n\n  /**\n   *\n   * @returns\n   */\n  getInstanceId () {\n    return this.guid;\n  }\n\n  /**\n   *\n   * @param guid\n   */\n  setInstanceId (guid: string) {\n    this.engine.removeInstance(this.guid);\n    this.guid = guid;\n    this.engine.addInstance(this);\n  }\n\n  /**\n   *\n   */\n  toData () { }\n\n  /**\n   * 反序列化函数\n   *\n   * @param data - 对象的序列化的数据\n   */\n  fromData (data: spec.EffectsObjectData) {\n    if (data.id !== undefined) {\n      this.setInstanceId(data.id);\n    }\n  }\n\n  /**\n   * 销毁当前对象\n   */\n  dispose () {\n    this.engine.removeInstance(this.guid);\n  }\n}\n","import type { AnimationClip } from '../../animation/animation-clip';\n\nexport class GraphDataSet {\n  resources: AnimationClip[] = [];\n\n  getResource (index: number): AnimationClip | null {\n    return this.resources[index];\n  }\n}","import type { Constructor } from '../../utils';\n\nconst nodeDataClassStore: Record<string, any> = {};\n\nexport function nodeDataClass (className: string) {\n  return (target: Object, context?: unknown) => {\n    if (nodeDataClassStore[className]) {\n      console.warn(`NodeData Class ${className} is already registered.`);\n    }\n    nodeDataClassStore[className] = target;\n  };\n}\n\nexport function getNodeDataClass<T> (className: string): Constructor<T> | null {\n  return nodeDataClassStore[className];\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from './graph-context';\nimport type { PoseResult } from './pose-result';\n\nexport const InvalidIndex = -1;\n\nexport class GraphNode {\n  /**\n   * @internal\n   */\n  asset: GraphNodeData;\n\n  private initializationCount = 0;\n  private lastUpdateID = -1;\n\n  constructor () {\n  }\n\n  getNodeData<T extends GraphNodeData> (): T {\n    return this.asset as T;\n  }\n\n  isValid () {\n    return true;\n  }\n\n  isInitialized (): boolean {\n    return this.initializationCount > 0;\n  }\n\n  initialize (context: GraphContext) {\n    if (this.isInitialized()) {\n      this.initializationCount++;\n    } else {\n      this.initializeInternal(context);\n    }\n  }\n\n  /**\n   * Shutdown this node\n   */\n  shutdown (context: GraphContext): void {\n    if (!this.isInitialized()) {\n      throw new Error('Node not initialized!');\n    }\n\n    if (--this.initializationCount === 0) {\n      this.shutdownInternal(context);\n    }\n  }\n\n  isNodeActive (updateID: number) {\n    return this.lastUpdateID === updateID;\n  }\n\n  isUpdated (context: GraphContext) {\n    return this.isNodeActive(context.updateID);\n  }\n\n  /**\n   * Mark this node as active for the current update\n   */\n  markNodeActive (context: GraphContext): void {\n    this.lastUpdateID = context.updateID;\n  }\n\n  /**\n   * Internal initialization logic\n   */\n  protected initializeInternal (context: GraphContext) {\n    this.initializationCount++;\n  }\n\n  /**\n   * Internal shutdown logic\n   */\n  protected shutdownInternal (context: GraphContext): void {\n    if (this.isInitialized()) {\n      throw new Error('Node still initialized!');\n    }\n    this.lastUpdateID = -1;\n  }\n}\n\nexport abstract class GraphNodeData {\n  index: number;\n\n  abstract instantiate (context: InstantiationContext): void;\n\n  load (data: spec.GraphNodeData) {\n    this.index = data.index;\n  }\n\n  protected createNode<T extends GraphNode> (nodeType: new () => T, context: InstantiationContext) {\n    const node = new nodeType();\n\n    context.nodes[this.index] = node;\n    node.asset = this;\n\n    return node;\n  }\n}\n\nexport interface PoseNodeDebugInfo {\n  duration: number,\n  currentTime: number,\n  previousTime: number,\n}\n\nexport abstract class PoseNode extends GraphNode {\n  protected duration: number = 0;\n  protected previousTime: number = 0;\n  protected currentTime: number = 0;\n\n  /**\n   * Get current clamped percentage over the duration\n   */\n  getCurrentTime (): number {\n    return this.currentTime;\n  }\n\n  /**\n   * Get previous clamped percentage over the duration\n   */\n  getPreviousTime (): number {\n    return this.previousTime;\n  }\n\n  /**\n   * Get node duration\n   */\n  getDuration (): number {\n    return this.duration;\n  }\n\n  getDebugInfo (): PoseNodeDebugInfo {\n    const info: PoseNodeDebugInfo = {\n      duration: this.duration,\n      currentTime:  this.currentTime,\n      previousTime: this.previousTime,\n    };\n\n    return info;\n  }\n\n  abstract evaluate (context: GraphContext, result: PoseResult): PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    // Reset node state\n    this.previousTime = 0;\n    this.currentTime = this.previousTime;\n\n    // Set the duration to 0 even though this is an invalid value as it is expected that nodes will set this correctly at initialization time\n    this.duration = 0;\n  }\n}\n\nexport abstract class ValueNode extends GraphNode {\n\n  setValue <T>(value: T) {\n    // OVERRIDE\n  }\n\n  abstract getValue<T>(context: GraphContext): T;\n}\n\nexport abstract class FloatValueNode extends ValueNode {\n\n}\n\nexport abstract class BoolValueNode extends ValueNode {\n\n}","import type * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../decorators';\nimport { EffectsObject } from '../../effects-object';\nimport { GraphDataSet } from './graph-data-set';\nimport { getNodeDataClass } from './node-asset-type';\nimport { InvalidIndex, type GraphNodeData } from './graph-node';\nimport type { AnimationClip } from '../../animation/animation-clip';\n\n@effectsClass('AnimationGraphAsset')\nexport class AnimationGraphAsset extends EffectsObject {\n  nodeDatas: GraphNodeData[] = [];\n  graphDataSet = new GraphDataSet();\n  controlParameterIDs: string[] = [];\n  parameterLookupMap = new Map<string, number>();\n  rootNodeIndex = InvalidIndex;\n\n  static createNodeData (type: spec.NodeDataType) {\n    const classConstructor = getNodeDataClass<GraphNodeData>(type);\n\n    if (classConstructor) {\n      return new classConstructor();\n    } else {\n      throw new Error(`Unknown node type: ${type}.`);\n    }\n  }\n\n  override fromData (data: spec.AnimationGraphAssetData) {\n    const graphAssetData = data;\n    const nodeDatas = graphAssetData.nodeDatas;\n\n    this.rootNodeIndex = graphAssetData.rootNodeIndex;\n    this.controlParameterIDs = graphAssetData.controlParameterIDs;\n\n    // Create parameter lookup map\n    //-------------------------------------------------------------------------\n    const numControlParameters = graphAssetData.controlParameterIDs.length;\n\n    for (let i = 0; i < numControlParameters; i++) {\n      this.parameterLookupMap.set(graphAssetData.controlParameterIDs[i], i);\n    }\n\n    // Deserialize node asset\n    //-------------------------------------------------------------------------\n    this.nodeDatas = [];\n\n    for (let i = 0; i < nodeDatas.length; i++) {\n      this.nodeDatas[i] = AnimationGraphAsset.createNodeData(nodeDatas[i].type as spec.NodeDataType);\n      this.nodeDatas[i].load(nodeDatas[i]);\n    }\n\n    // Deserialize graph data set\n    //-------------------------------------------------------------------------\n    this.graphDataSet = new GraphDataSet();\n    this.graphDataSet.resources = [];\n    for (const animationClipData of graphAssetData.graphDataSet.resources) {\n      const animationClip = this.engine.findObject<AnimationClip>(animationClipData);\n\n      this.graphDataSet.resources.push(animationClip);\n    }\n  }\n}\n","import type { GraphDataSet } from './graph-data-set';\nimport type { GraphNode, GraphNodeData } from './graph-node';\nimport type { Skeleton } from './skeleton';\n\n// Used to signify if a node or node output is coming from an active state (i.e. a state we are not transitioning away from)\nexport enum BranchState {\n  Active,\n  Inactive,\n}\n\nexport class GraphContext {\n  deltaTime = 0;\n  updateID = 0;\n  skeleton: Skeleton;\n  branchState = BranchState.Active;\n\n  update (deltaTime: number) {\n    this.deltaTime = deltaTime;\n    this.updateID++;\n    this.branchState = BranchState.Active;\n  }\n}\n\nexport class InstantiationContext {\n  nodeDatas: GraphNodeData[] = [];\n  nodes: GraphNode[] = [];\n  dataSet: GraphDataSet;\n\n  getNode<T extends GraphNode> (index: number): T {\n    if (this.nodes[index]) {\n      return this.nodes[index] as T;\n    }\n    if (!this.nodeDatas[index]) {\n      return null as unknown as T;\n    }\n    this.nodeDatas[index].instantiate(this);\n\n    return this.nodes[index] as T;\n  }\n}\n","function _extends() {\n    _extends = Object.assign || function assign(target) {\n        for (var i = 1; i < arguments.length; i++) {\n            var source = arguments[i];\n            for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n\n        return target;\n    };\n\n    return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","import { clamp } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { GraphNodeData, PoseNode } from '../graph-node';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { PoseResult } from '../pose-result';\nimport type { Skeleton } from '../skeleton';\nimport type { Pose } from '../pose';\nimport type { AnimationClip, AnimationCurve, FloatAnimationCurve, ColorAnimationCurve } from '../../../animation';\n\n@nodeDataClass(spec.NodeDataType.AnimationClipNodeData)\nexport class AnimationClipNodeData extends GraphNodeData {\n  playRate = 1.0;\n  loopAnimation = true;\n  dataSlotIndex = -1;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(AnimationClipNode, context);\n\n    node.animation = context.dataSet.getResource(this.dataSlotIndex);\n  }\n\n  override load (data: spec.AnimationClipNodeData): void {\n    super.load(data);\n\n    const fullData = {\n      playRate: 1.0,\n      loopAnimation: true,\n      ...data,\n    };\n\n    this.dataSlotIndex = data.dataSlotIndex;\n    this.playRate = fullData.playRate;\n    this.loopAnimation = fullData.loopAnimation;\n  }\n}\n\nexport class AnimationClipNode extends PoseNode {\n  animation: AnimationClip | null = null;\n\n  private animatable: Animatable | null = null;\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!this.animatable) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    const nodeData = this.getNodeData<AnimationClipNodeData>();\n\n    this.previousTime = this.currentTime;\n    this.currentTime = this.previousTime + context.deltaTime / this.duration * nodeData.playRate;\n\n    if (!nodeData.loopAnimation) {\n      this.currentTime = clamp(this.currentTime, 0, 1);\n    } else {\n      if (this.currentTime > 1) {\n        this.currentTime = this.currentTime % 1;\n      }\n    }\n\n    const time = this.currentTime * this.duration;\n\n    this.animatable.getPose(time, result.pose);\n\n    return result;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.duration = this.animation?.duration ?? 0;\n    this.previousTime = this.currentTime = 0;\n\n    if (this.animation) {\n      this.animatable = new Animatable(context.skeleton, this.animation);\n    }\n  }\n}\n\nenum TransformCurveType {\n  Position,\n  Scale,\n  Rotation,\n  Euler\n}\n\nexport interface TransformCurveInfo {\n  type: TransformCurveType,\n  curve: AnimationCurve,\n  boneIndex: number,\n}\n\nexport interface FloatCurveInfo {\n  curve: FloatAnimationCurve,\n  animatedObjectIndex: number,\n}\n\nexport interface ColorCurveInfo {\n  curve: ColorAnimationCurve,\n  animatedObjectIndex: number,\n}\n\nexport class Animatable {\n  private transformCurveInfos: TransformCurveInfo[] = [];\n\n  private floatCurveInfos: FloatCurveInfo[] = [];\n  private colorCurveInfos: ColorCurveInfo[] = [];\n\n  constructor (\n    private skeleton: Skeleton,\n    private animationClip: AnimationClip,\n  ) {\n    for (const curve of animationClip.positionCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Position);\n    }\n    for (const curve of animationClip.scaleCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Scale);\n    }\n    for (const curve of animationClip.rotationCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Rotation);\n    }\n    for (const curve of animationClip.eulerCurves) {\n      this.addTransformCurveInfo(curve, TransformCurveType.Euler);\n    }\n    for (const curve of animationClip.floatCurves) {\n      this.addFloatCurveInfo(curve);\n    }\n    for (const curve of animationClip.colorCurves) {\n      this.addColorCurveInfo(curve);\n    }\n  }\n\n  getPose (time: number, outPose: Pose) {\n    const life = clamp(time, 0, this.animationClip.duration);\n\n    for (const curveInfo of this.transformCurveInfos) {\n      const curveValue = curveInfo.curve.keyFrames.getValue(life);\n      const outTransform = outPose.parentSpaceTransforms[curveInfo.boneIndex];\n\n      switch (curveInfo.type) {\n        case TransformCurveType.Position:\n          outTransform.position.copyFrom(curveValue);\n\n          break;\n        case TransformCurveType.Scale:\n          outTransform.scale.copyFrom(curveValue);\n\n          break;\n        case TransformCurveType.Rotation:\n          outTransform.rotation.copyFrom(curveValue);\n\n          break;\n        case TransformCurveType.Euler:\n          outTransform.euler.copyFrom(curveValue);\n\n          break;\n      }\n    }\n\n    for (const curveInfo of this.floatCurveInfos) {\n      const floatValue = curveInfo.curve.keyFrames.getValue(life);\n\n      outPose.floatPropertyValues[curveInfo.animatedObjectIndex] = floatValue;\n    }\n\n    for (const curveInfo of this.colorCurveInfos) {\n      const colorValue = curveInfo.curve.keyFrames.getValue(life);\n\n      outPose.colorPropertyValues[curveInfo.animatedObjectIndex] = colorValue;\n    }\n  }\n\n  private addTransformCurveInfo (curve: AnimationCurve, type: TransformCurveType) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(curve.path);\n\n    if (boneIndex !== undefined) {\n      this.transformCurveInfos.push({\n        curve,\n        boneIndex,\n        type,\n      });\n    }\n  }\n\n  private addFloatCurveInfo (curve: FloatAnimationCurve) {\n    const animatedObjectIndex = this.skeleton.pathToObjectIndex.get(curve.path + curve.className + curve.property);\n\n    if (animatedObjectIndex !== undefined) {\n      this.floatCurveInfos.push({\n        curve,\n        animatedObjectIndex,\n      });\n    }\n  }\n\n  private addColorCurveInfo (curve: ColorAnimationCurve) {\n    const animatedObjectIndex = this.skeleton.pathToObjectIndex.get(curve.path + curve.className + curve.property);\n\n    if (animatedObjectIndex !== undefined) {\n      this.colorCurveInfos.push({\n        curve,\n        animatedObjectIndex,\n      });\n    }\n  }\n}\n","import { clamp } from './utils';\nimport { Vector3 } from './vector3';\n/**\n * 四元数\n */\nexport class Quaternion {\n    x;\n    y;\n    z;\n    w;\n    static tempVec0 = new Vector3();\n    /**\n     * 构造函数\n     * @param [x=0] - x 分量\n     * @param [y=0] - y 分量\n     * @param [z=0] - z 分量\n     * @param [w=1] - w 分量\n     */\n    constructor(x = 0, y = 0, z = 0, w = 1) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n    }\n    /**\n     * 四元数设置\n     * @param x - x 分量\n     * @param y - y 分量\n     * @param z - z 分量\n     * @param w - w 分量\n     * @returns 四元数\n     */\n    set(x, y, z, w) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.w = w;\n        return this;\n    }\n    /**\n     * 通过欧拉角设置四元数\n     * @param euler - 欧拉角\n     * @returns\n     */\n    setFromEuler(euler) {\n        euler.toQuaternion(this);\n        return this;\n    }\n    /**\n     * 通过旋转轴和旋转角度设置四元数\n     * @param axis - 旋转轴\n     * @param angle - 旋转角度（弧度）\n     * @returns\n     */\n    setFromAxisAngle(axis, angle) {\n        const halfAngle = angle / 2;\n        const s = Math.sin(halfAngle);\n        const v = Quaternion.tempVec0;\n        v.copyFrom(axis).normalize();\n        this.x = v.x * s;\n        this.y = v.y * s;\n        this.z = v.z * s;\n        this.w = Math.cos(halfAngle);\n        return this;\n    }\n    /**\n     * 通过 Vector4Like 创建四元数\n     * @param v - Vector4Like\n     * @returns\n     */\n    setFromVector4(v) {\n        this.x = v.x;\n        this.y = v.y;\n        this.z = v.z;\n        this.w = v.w;\n        return this;\n    }\n    /**\n     * 通过数组设置四元数\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns\n     */\n    setFromArray(array, 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        return this;\n    }\n    /**\n     * 通过矩阵设置四元数\n     * @param m - 矩阵\n     * @returns\n     */\n    setFromRotationMatrix(m) {\n        // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n        // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n        const te = m.elements;\n        const m11 = te[0];\n        const m12 = te[4];\n        const m13 = te[8];\n        const m21 = te[1];\n        const m22 = te[5];\n        const m23 = te[9];\n        const m31 = te[2];\n        const m32 = te[6];\n        const m33 = te[10];\n        const trace = m11 + m22 + m33;\n        if (trace > 0) {\n            const s = 0.5 / Math.sqrt(trace + 1.0);\n            this.w = 0.25 / s;\n            this.x = (m32 - m23) * s;\n            this.y = (m13 - m31) * s;\n            this.z = (m21 - m12) * s;\n        }\n        else if (m11 > m22 && m11 > m33) {\n            const s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n            this.w = (m32 - m23) / s;\n            this.x = 0.25 * s;\n            this.y = (m12 + m21) / s;\n            this.z = (m13 + m31) / s;\n            this.negate();\n        }\n        else if (m22 > m33) {\n            const s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n            this.w = (m13 - m31) / s;\n            this.x = (m12 + m21) / s;\n            this.y = 0.25 * s;\n            this.z = (m23 + m32) / s;\n            this.negate();\n        }\n        else {\n            const s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n            this.w = (m21 - m12) / s;\n            this.x = (m13 + m31) / s;\n            this.y = (m23 + m32) / s;\n            this.z = 0.25 * s;\n            this.negate();\n        }\n        // 兼容原先数学库\n        return this;\n    }\n    /**\n     * 通过开始和结束向量设置四元数\n     * @param from - 开始向量\n     * @param to - 结束向量\n     * @returns\n     */\n    setFromUnitVectors(from, to) {\n        // assumes direction vectors vFrom and vTo are normalized\n        let r = from.dot(to) + 1;\n        if (r < Number.EPSILON) {\n            r = 0;\n            if (Math.abs(from.x) > Math.abs(from.z)) {\n                this.x = -from.y;\n                this.y = from.x;\n                this.z = 0;\n                this.w = r;\n            }\n            else {\n                this.x = 0;\n                this.y = -from.z;\n                this.z = from.y;\n                this.w = r;\n            }\n        }\n        else {\n            this.x = from.y * to.z - from.z * to.y;\n            this.y = from.z * to.x - from.x * to.z;\n            this.z = from.x * to.y - from.y * to.x;\n            this.w = r;\n        }\n        return this.normalize();\n    }\n    /**\n     * 四元数拷贝\n     * @param quat - 拷贝目标四元数\n     * @returns 拷贝四元数\n     */\n    copyFrom(quat) {\n        this.x = quat.x;\n        this.y = quat.y;\n        this.z = quat.z;\n        this.w = quat.w;\n        return this;\n    }\n    /**\n     * 四元数克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Quaternion(this.x, this.y, this.z, this.w);\n    }\n    /**\n     * 四元数间的夹角计算\n     * @param other - 其他四元数\n     * @returns 夹角\n     */\n    angleTo(other) {\n        return 2 * Math.acos(Math.abs(clamp(this.dot(other), -1, 1)));\n    }\n    /**\n     * 四元数向目标旋转\n     * @param q - 四元数\n     * @param step - 旋转弧度\n     * @returns 目标四元数\n     */\n    rotateTowards(q, step) {\n        const angle = this.angleTo(q);\n        if (angle === 0) {\n            return this;\n        }\n        const t = Math.min(1, step / angle);\n        this.slerp(q, t);\n        return this;\n    }\n    /**\n     * 四元数单位化\n     * @returns 单位四元数\n     */\n    identity() {\n        return this.set(0, 0, 0, 1);\n    }\n    /**\n     * 四元数求逆\n     * @returns 四元数的逆\n     */\n    invert() {\n        return this.conjugate();\n    }\n    /**\n     * 四元数取负\n     * @returns 负四元数\n     */\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        this.w = -this.w;\n        return this;\n    }\n    /**\n     * 四元数求共轭值\n     * @returns 四元数的共轭值\n     */\n    conjugate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n    }\n    /**\n     * 四元数点乘结果\n     * @param v\n     * @return\n     */\n    dot(v) {\n        return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n    }\n    /**\n     * 四元数的模平方\n     * @return\n     */\n    lengthSquared() {\n        return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n    }\n    /**\n     * 四元数的欧式长度\n     * @returns 长度\n     */\n    length() {\n        return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n    }\n    /**\n     * 四元数归一化\n     * @returns 归一化值\n     */\n    normalize() {\n        let l = this.length();\n        if (l === 0) {\n            this.x = 0;\n            this.y = 0;\n            this.z = 0;\n            this.w = 1;\n        }\n        else {\n            l = 1 / l;\n            this.x = this.x * l;\n            this.y = this.y * l;\n            this.z = this.z * l;\n            this.w = this.w * l;\n        }\n        return this;\n    }\n    /**\n     * 四元数右乘\n     * @param right - 右乘的四元数\n     * @returns\n     */\n    multiply(right) {\n        return this.multiplyQuaternions(this, right);\n    }\n    /**\n     * 四元数左乘\n     * @param left - 左乘的四元数\n     * @returns\n     */\n    premultiply(left) {\n        return this.multiplyQuaternions(left, this);\n    }\n    /**\n     * 四元数乘法\n     * @param left - 四元数\n     * @param right - 四元数\n     * @returns 四元数\n     */\n    multiplyQuaternions(left, right) {\n        // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n        const qax = left.x;\n        const qay = left.y;\n        const qaz = left.z;\n        const qaw = left.w;\n        const qbx = right.x;\n        const qby = right.y;\n        const qbz = right.z;\n        const qbw = right.w;\n        this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n        this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n        this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n        this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n        return this;\n    }\n    /**\n     * 四元数线性插值\n     * @see http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n     * @param other - 四元数\n     * @param t - 插值比\n     * @returns 插值结果\n     */\n    slerp(other, t) {\n        if (t === 0) {\n            return this;\n        }\n        if (t === 1) {\n            return this.copyFrom(other);\n        }\n        const { x, y, z, w } = this;\n        let cosHalfTheta = w * other.w + x * other.x + y * other.y + z * other.z;\n        if (cosHalfTheta < 0) {\n            this.w = -other.w;\n            this.x = -other.x;\n            this.y = -other.y;\n            this.z = -other.z;\n            cosHalfTheta = -cosHalfTheta;\n        }\n        else {\n            this.copyFrom(other);\n        }\n        if (cosHalfTheta >= 1.0) {\n            this.w = w;\n            this.x = x;\n            this.y = y;\n            this.z = z;\n            return this;\n        }\n        const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n        if (sqrSinHalfTheta <= Number.EPSILON) {\n            const s = 1 - t;\n            this.w = s * w + t * this.w;\n            this.x = s * x + t * this.x;\n            this.y = s * y + t * this.y;\n            this.z = s * z + t * this.z;\n            this.normalize();\n            return this;\n        }\n        const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n        const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n        const ratioA = Math.sin((1 - t) * halfTheta) / sinHalfTheta;\n        const ratioB = Math.sin(t * halfTheta) / sinHalfTheta;\n        this.w = (w * ratioA + this.w * ratioB);\n        this.x = (x * ratioA + this.x * ratioB);\n        this.y = (y * ratioA + this.y * ratioB);\n        this.z = (z * ratioA + this.z * ratioB);\n        return this;\n    }\n    /**\n     * 两个四元数的线性插值\n     * @param qa - 四元数\n     * @param qb - 四元数\n     * @param t - 插值比\n     */\n    slerpQuaternions(qa, qb, t) {\n        this.copyFrom(qa).slerp(qb, t);\n    }\n    /**\n     * 通过四元数旋转向量\n     * @param v - 待旋转向量\n     * @param [out] - 旋转结果，如果没有传入直接覆盖输入值\n     * @returns\n     */\n    rotateVector3(v, out) {\n        const { x: qx, y: qy, z: qz, w: qw } = this;\n        const { x: vx, y: vy, z: vz } = v;\n        const ix = qw * vx + qy * vz - qz * vy;\n        const iy = qw * vy + qz * vx - qx * vz;\n        const iz = qw * vz + qx * vy - qy * vx;\n        const iw = -qx * vx - qy * vy - qz * vz;\n        const res = out ?? v;\n        res.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n        res.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n        res.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n        return res;\n    }\n    /**\n     * 四元数判等\n     * @param quaternion - 四元数\n     * @returns 判等结果\n     */\n    equals(quaternion) {\n        return quaternion.x === this.x\n            && quaternion.y === this.y\n            && quaternion.z === this.z\n            && quaternion.w === this.w;\n    }\n    /**\n     * 四元数保存为数组\n     * @returns\n     */\n    toArray() {\n        return [this.x, this.y, this.z, this.w];\n    }\n    /**\n     * 四元数转四维向量数组\n     * @param vec - 目标保存对象\n     * @returns 保存结果\n     */\n    toVector4(vec) {\n        return vec.set(this.x, this.y, this.z, this.w);\n    }\n    /**\n     * 四元数转欧拉角\n     * @param euler - 目标欧拉角\n     * @returns 欧拉角\n     */\n    toEuler(euler) {\n        return euler.setFromQuaternion(this);\n    }\n    /**\n     * 四元数转矩阵\n     * @param mat - 目标矩阵\n     * @returns\n     */\n    toMatrix4(mat) {\n        return mat.compose(Vector3.ZERO, this, Vector3.ONE);\n    }\n    /**\n     * 通过欧拉角创建四元数\n     * @param euler - 欧拉角\n     * @returns 四元数\n     */\n    static fromEuler(euler) {\n        return new Quaternion().setFromEuler(euler);\n    }\n    /**\n     * 通过旋转轴和旋转角度创建四元数\n     * @param axis - 旋转轴\n     * @param angle - 旋转角（弧度值）\n     * @returns 四元数\n     */\n    static fromAxisAngle(axis, angle) {\n        return new Quaternion().setFromAxisAngle(axis, angle);\n    }\n    /**\n     * 通过 Vector4Like 创建四元数\n     * @param v - Vector4Like\n     * @returns 四元数\n     */\n    static fromVector4(v) {\n        return new Quaternion().setFromVector4(v);\n    }\n    /**\n     * 通过数组创建四元数\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 四元数\n     */\n    static fromArray(array, offset = 0) {\n        return new Quaternion().setFromArray(array, offset);\n    }\n    /**\n     * 通过旋转矩阵创建四元数\n     * @param m - 旋转矩阵\n     * @returns 四元数\n     */\n    static fromRotationMatrix(m) {\n        return new Quaternion().setFromRotationMatrix(m);\n    }\n    /**\n     * 通过开始和结束向量创建四元数\n     * @param from - 开始向量\n     * @param to - 结束向量\n     * @returns\n     */\n    static fromUnitVectors(from, to) {\n        return new Quaternion().setFromUnitVectors(from, to);\n    }\n}\n","import type { Color, Vector3 } from '@galacean/effects-math/es/core';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport type { Pose } from './pose';\n\nconst tempQuaternion = new Quaternion();\n\nexport abstract class BlendFunction {\n  abstract blendVector3 (source: Vector3, target: Vector3, weight: number, result: Vector3): void;\n  abstract blendQuaternion (source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void;\n  abstract blendEuler (source: Vector3, target: Vector3, weight: number, result: Vector3): void;\n  abstract blendColor (source: Color, target: Color, weight: number, result: Color): void;\n  abstract blendFloat (source: number, target: number, weight: number): number;\n}\n\nexport class NormalBlend extends BlendFunction {\n  override blendVector3 (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    result.x = source.x + (target.x - source.x) * weight;\n    result.y = source.y + (target.y - source.y) * weight;\n    result.z = source.z + (target.z - source.z) * weight;\n  }\n\n  override blendQuaternion (source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void {\n    result.copyFrom(source).slerp(target, weight);\n  }\n\n  override blendEuler (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    this.lerpEuler(source, target, weight, result);\n  }\n\n  override blendFloat (source: number, target: number, weight: number): number {\n    return source + (target - source) * weight;\n  }\n\n  override blendColor (source: Color, target: Color, weight: number, result: Color): void {\n    result.r = source.r + (target.r - source.r) * weight;\n    result.g = source.g + (target.g - source.g) * weight;\n    result.b = source.b + (target.b - source.b) * weight;\n    result.a = source.a + (target.a - source.a) * weight;\n  }\n\n  private lerpEuler (from: Vector3, to: Vector3, t: number, res: Vector3): void {\n    res.x = this.lerpAngle(from.x, to.x, t);\n    res.y = this.lerpAngle(from.y, to.y, t);\n    res.z = this.lerpAngle(from.z, to.z, t);\n  }\n\n  private normalizeAngle (angle: number): number {\n    return ((angle % 360) + 360) % 360;\n  }\n\n  /**\n   * 计算两个角度之间的最短路径差\n   */\n  private shortestAngleDiff (from: number, to: number): number {\n    let diff = this.normalizeAngle(to) - this.normalizeAngle(from);\n\n    if (diff > 180) { diff -= 360; }\n    if (diff < -180) { diff += 360; }\n\n    return diff;\n  }\n\n  private lerpAngle (fromAngle: number, toAngle: number, t: number): number {\n    const diff = this.shortestAngleDiff(fromAngle, toAngle);\n\n    return this.normalizeAngle(fromAngle + diff * t);\n  }\n}\n\nexport class AdditiveBlend extends BlendFunction {\n  override blendVector3 (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    result.x = source.x + (target.x * weight);\n    result.y = source.y + (target.y * weight);\n    result.z = source.z + (target.z * weight);\n  }\n\n  override blendQuaternion (source: Quaternion, target: Quaternion, weight: number, result: Quaternion): void {\n    const targetQuaternion = tempQuaternion.copyFrom(source).multiply(target);\n\n    result.copyFrom(source).slerp(targetQuaternion, weight);\n  }\n\n  override blendEuler (source: Vector3, target: Vector3, weight: number, result: Vector3): void {\n    this.blendVector3(source, target, weight, result);\n  }\n\n  override blendFloat (source: number, target: number, weight: number): number {\n    return source + (target * weight);\n  }\n\n  override blendColor (source: Color, target: Color, weight: number, result: Color): void {\n    result.r = source.r + (target.r * weight);\n    result.g = source.g + (target.g * weight);\n    result.b = source.b + (target.b * weight);\n    result.a = source.a + (target.a * weight);\n  }\n}\n\nexport class Blender {\n  private static normalBlendFunction = new NormalBlend();\n  private static additiveBlendFunction = new AdditiveBlend();\n\n  static localBlend (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.localBlendInternal(sourcePose, targetPose, blendWeight, resultPose, Blender.normalBlendFunction);\n  }\n\n  static additiveBlend (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.localBlendInternal(sourcePose, targetPose, blendWeight, resultPose, Blender.additiveBlendFunction);\n  }\n\n  private static localBlendInternal (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose, blendFunction: BlendFunction): void {\n\n    // Blend transform\n    //-------------------------------------------------------------------------\n\n    for (let i = 0; i < sourcePose.parentSpaceTransforms.length; i++) {\n      const sourceTransform = sourcePose.parentSpaceTransforms[i];\n      const targetTransform = targetPose.parentSpaceTransforms[i];\n      const resultTransform = resultPose.parentSpaceTransforms[i];\n\n      const sourcePosition = sourceTransform.position;\n      const targetPosition = targetTransform.position;\n      const resultPosition = resultTransform.position;\n\n      blendFunction.blendVector3(sourcePosition, targetPosition, blendWeight, resultPosition);\n\n      const sourceRotation = sourceTransform.rotation;\n      const targetRotation = targetTransform.rotation;\n      const resultRotation = resultTransform.rotation;\n\n      blendFunction.blendQuaternion(sourceRotation, targetRotation, blendWeight, resultRotation);\n\n      const sourceScale = sourceTransform.scale;\n      const targetScale = targetTransform.scale;\n      const resultScale = resultTransform.scale;\n\n      blendFunction.blendVector3(sourceScale, targetScale, blendWeight, resultScale);\n\n      const sourceEuler = sourceTransform.euler;\n      const targetEuler = targetTransform.euler;\n      const resultEuler = resultTransform.euler;\n\n      blendFunction.blendEuler(sourceEuler, targetEuler, blendWeight, resultEuler);\n    }\n\n    // Blend float value\n    //-------------------------------------------------------------------------\n\n    for (let i = 0; i < sourcePose.floatPropertyValues.length; i++) {\n      const sourceFloat = sourcePose.floatPropertyValues[i];\n      const targetFloat = targetPose.floatPropertyValues[i];\n\n      resultPose.floatPropertyValues[i] = blendFunction.blendFloat(sourceFloat, targetFloat, blendWeight);\n    }\n\n    // Blend color value\n    //-------------------------------------------------------------------------\n\n    for (let i = 0; i < sourcePose.colorPropertyValues.length; i++) {\n      const sourceColor = sourcePose.colorPropertyValues[i];\n      const targetColor = targetPose.colorPropertyValues[i];\n      const resultColor = resultPose.colorPropertyValues[i];\n\n      blendFunction.blendColor(sourceColor, targetColor, blendWeight, resultColor);\n    }\n  }\n}","import { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Color } from '@galacean/effects-math/es/core/color';\nimport type { Skeleton } from './skeleton';\nimport type { Transform } from '../../transform';\n\nexport class NodeTransform {\n  position = new Vector3();\n  rotation = new Quaternion();\n  scale = new Vector3();\n  euler = new Vector3();\n\n  constructor (transform?: Transform) {\n    if (transform) {\n      this.position.copyFrom(transform.position);\n      this.rotation.copyFrom(transform.quat);\n      this.scale.copyFrom(transform.scale);\n      this.euler.copyFrom(transform.rotation);\n    }\n  }\n\n  copyFrom (transform: NodeTransform) {\n    this.position.copyFrom(transform.position);\n    this.rotation.copyFrom(transform.rotation);\n    this.scale.copyFrom(transform.scale);\n    this.euler.copyFrom(transform.euler);\n\n    return this;\n  }\n}\n\nexport class Pose {\n  parentSpaceTransforms: NodeTransform[] = [];\n  floatPropertyValues: number[] = [];\n  colorPropertyValues: Color[] = [];\n\n  constructor (\n    public skeleton: Skeleton,\n  ) {\n    for (const transform of skeleton.parentSpaceTransforms) {\n      this.parentSpaceTransforms.push(new NodeTransform().copyFrom(transform));\n    }\n\n    for (const defaultFloat of skeleton.defaultFloatPropertyValues) {\n      this.floatPropertyValues.push(defaultFloat);\n    }\n\n    for (const defaultColor of skeleton.defaultColorPropertyValues) {\n      this.colorPropertyValues.push(new Color().copyFrom(defaultColor));\n    }\n  }\n\n  setPosition (path: string, position: Vector3) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].position.copyFrom(position);\n    }\n  }\n\n  setRotation (path: string, rotation: Quaternion) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].rotation.copyFrom(rotation);\n    }\n  }\n\n  setEuler (path: string, euler: Vector3) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].euler.copyFrom(euler);\n    }\n  }\n\n  setScale (path: string, scale: Vector3) {\n    const boneIndex = this.skeleton.pathToBoneIndex.get(path);\n\n    if (boneIndex !== undefined) {\n      this.parentSpaceTransforms[boneIndex].scale.copyFrom(scale);\n    }\n  }\n\n  setFloat (path: string, value: number) {\n    const animatedObjectIndex = this.skeleton.pathToObjectIndex.get(path);\n\n    if (animatedObjectIndex !== undefined) {\n      this.floatPropertyValues[animatedObjectIndex] = value;\n    }\n  }\n\n  copyFrom (pose: Pose) {\n    for (let i = 0;i < this.parentSpaceTransforms.length;i++) {\n      this.parentSpaceTransforms[i].copyFrom(pose.parentSpaceTransforms[i]);\n    }\n\n    for (let i = 0;i < this.colorPropertyValues.length;i++) {\n      this.colorPropertyValues[i].copyFrom(pose.colorPropertyValues[i]);\n    }\n\n    for (let i = 0;i < this.floatPropertyValues.length;i++) {\n      this.floatPropertyValues[i] = pose.floatPropertyValues[i];\n    }\n  }\n}\n","import { Pose } from './pose';\nimport type { Skeleton } from './skeleton';\n\nexport class PoseResult {\n  pose: Pose;\n\n  constructor (skeleton: Skeleton) {\n    this.pose = new Pose(skeleton);\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { Blender } from '../blender';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { FloatValueNode } from '../graph-node';\nimport { GraphNodeData, PoseNode } from '../graph-node';\nimport type { Pose } from '../pose';\n\n@nodeDataClass(spec.NodeDataType.ApplyAdditiveNodeData)\nexport class ApplyAdditiveNodeData extends GraphNodeData {\n  baseNodeIndex: number;\n  additiveNodeIndex: number;\n  inputParameterValueNodeIndex: number;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ApplyAdditiveNode, context);\n\n    node.baseNode = context.getNode<PoseNode>(this.baseNodeIndex);\n    node.additiveNode = context.getNode<PoseNode>(this.additiveNodeIndex);\n    node.inputParameterValueNode = context.getNode<FloatValueNode>(this.inputParameterValueNodeIndex);\n  }\n\n  override load (data: spec.ApplyAdditiveNodeData): void {\n    super.load(data);\n    this.baseNodeIndex = data.baseNodeIndex;\n    this.additiveNodeIndex = data.additiveNodeIndex;\n    this.inputParameterValueNodeIndex = data.inputParameterValueNodeIndex;\n  }\n}\n\nexport class ApplyAdditiveNode extends PoseNode {\n  baseNode: PoseNode | null = null;\n  additiveNode: PoseNode | null = null;\n\n  inputParameterValueNode: FloatValueNode | null = null;\n\n  baseNodeResult: PoseResult;\n  additiveNodeResult: PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.baseNodeResult = new PoseResult(context.skeleton);\n    this.additiveNodeResult = new PoseResult(context.skeleton);\n\n    this.baseNode?.initialize(context);\n    this.additiveNode?.initialize(context);\n    this.inputParameterValueNode?.initialize(context);\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.baseNode?.shutdown(context);\n    this.additiveNode?.shutdown(context);\n    this.inputParameterValueNode?.shutdown(context);\n    super.shutdownInternal(context);\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!this.inputParameterValueNode) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    const blendWeight = this.inputParameterValueNode.getValue<number>(context);\n\n    if (this.baseNode && !this.additiveNode) {\n      this.baseNode.evaluate(context, this.baseNodeResult);\n      this.applyAdditive(this.baseNodeResult.pose, this.additiveNodeResult.pose, blendWeight, result.pose);\n    } else if (this.baseNode && this.additiveNode) {\n      this.baseNode.evaluate(context, this.baseNodeResult);\n      this.additiveNode.evaluate(context, this.additiveNodeResult);\n      this.applyAdditive(this.baseNodeResult.pose, this.additiveNodeResult.pose, blendWeight, result.pose);\n    }\n\n    return result;\n  }\n\n  private applyAdditive (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.additiveBlend(sourcePose, targetPose, blendWeight, resultPose);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport type { FloatValueNode } from '../graph-node';\nimport { GraphNodeData, PoseNode } from '../graph-node';\nimport type { Pose } from '../pose';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport { Blender } from '../blender';\n\n@nodeDataClass(spec.NodeDataType.BlendNodeData)\nexport class BlendNodeData extends GraphNodeData {\n  sourceNodeIndex0: number;\n  sourceNodeIndex1: number;\n  inputParameterValueNodeIndex: number;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(BlendNode, context);\n\n    node.source0 = context.getNode<PoseNode>(this.sourceNodeIndex0);\n    node.source1 = context.getNode<PoseNode>(this.sourceNodeIndex1);\n    node.inputParameterValueNode = context.getNode<FloatValueNode>(this.inputParameterValueNodeIndex);\n  }\n\n  override load (data: spec.BlendNodeData): void {\n    super.load(data);\n    this.sourceNodeIndex0 = data.sourceNodeIndex0;\n    this.sourceNodeIndex1 = data.sourceNodeIndex1;\n    this.inputParameterValueNodeIndex = data.inputParameterValueNodeIndex;\n  }\n}\n\nexport class BlendNode extends PoseNode {\n  source0: PoseNode | null = null;\n  source1: PoseNode | null = null;\n\n  inputParameterValueNode: FloatValueNode | null = null;\n\n  source0Result: PoseResult;\n  source1Result: PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.source0Result = new PoseResult(context.skeleton);\n    this.source1Result = new PoseResult(context.skeleton);\n\n    this.source0?.initialize(context);\n    this.source1?.initialize(context);\n    this.inputParameterValueNode?.initialize(context);\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.source0?.shutdown(context);\n    this.source1?.shutdown(context);\n    this.inputParameterValueNode?.shutdown(context);\n    super.shutdownInternal(context);\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!this.inputParameterValueNode) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    const blendWeight = this.inputParameterValueNode.getValue<number>(context);\n\n    if (this.source0 && !this.source1) {\n      this.source0.evaluate(context, this.source0Result);\n      this.localBlend(this.source0Result.pose, this.source1Result.pose, blendWeight, result.pose);\n    } else if (this.source0 && this.source1) {\n      this.source0.evaluate(context, this.source0Result);\n      this.source1.evaluate(context, this.source1Result);\n      this.localBlend(this.source0Result.pose, this.source1Result.pose, blendWeight, result.pose);\n    }\n\n    return result;\n  }\n\n  private localBlend (sourcePose: Pose, targetPose: Pose, blendWeight: number, resultPose: Pose) {\n    Blender.localBlend(sourcePose, targetPose, blendWeight, resultPose);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { InstantiationContext, GraphContext } from '../graph-context';\nimport { nodeDataClass } from '../node-asset-type';\nimport { BoolValueNode, GraphNodeData, InvalidIndex } from '../graph-node';\n\n@nodeDataClass(spec.NodeDataType.AndNodeData)\nexport class AndNodeData extends GraphNodeData {\n  private conditionNodeIndices: number[] = [];\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(AndNode, context);\n\n    for (const conditionNodeIndex of this.conditionNodeIndices) {\n      node.conditionNodes.push(context.getNode<BoolValueNode>(conditionNodeIndex));\n    }\n  }\n\n  override load (data: spec.AndNodeData): void {\n    super.load(data);\n    this.conditionNodeIndices = data.conditionNodeIndices;\n  }\n}\n\nexport class AndNode extends BoolValueNode {\n  conditionNodes: BoolValueNode[] = [];\n\n  private result = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      this.result = true;\n      for (const condition of this.conditionNodes) {\n        if (!condition.getValue<boolean>(context)) {\n          this.result = false;\n\n          break;\n        }\n      }\n    }\n\n    return this.result as T;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    for (const node of this.conditionNodes) {\n      node.initialize(context);\n    }\n\n    this.result = false;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    for (const node of this.conditionNodes) {\n      node.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.OrNodeData)\nexport class OrNodeData extends GraphNodeData {\n  private conditionNodeIndices: number[] = [];\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(OrNode, context);\n\n    for (const conditionNodeIndex of this.conditionNodeIndices) {\n      node.conditionNodes.push(context.getNode<BoolValueNode>(conditionNodeIndex));\n    }\n  }\n\n  override load (data: spec.OrNodeData): void {\n    super.load(data);\n    this.conditionNodeIndices = data.conditionNodeIndices;\n  }\n}\n\nexport class OrNode extends BoolValueNode {\n  conditionNodes: BoolValueNode[] = [];\n\n  private result = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      this.result = false;\n      for (const condition of this.conditionNodes) {\n        if (condition.getValue<boolean>(context)) {\n          this.result = true;\n\n          break;\n        }\n      }\n    }\n\n    return this.result as T;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    for (const node of this.conditionNodes) {\n      node.initialize(context);\n    }\n\n    this.result = false;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    for (const node of this.conditionNodes) {\n      node.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.NotNodeData)\nexport class NotNodeData extends GraphNodeData {\n  private inputValueNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(NotNode, context);\n\n    node.inputValueNode = context.getNode<BoolValueNode>(this.inputValueNodeIndex);\n  }\n\n  override load (data: spec.NotNodeData): void {\n    super.load(data);\n    this.inputValueNodeIndex = data.inputValueNodeIndex;\n  }\n}\n\nexport class NotNode extends BoolValueNode {\n  inputValueNode: BoolValueNode | null = null;\n\n  private result = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      if (this.inputValueNode) {\n        this.result = !this.inputValueNode.getValue<boolean>(context);\n      }\n    }\n\n    return this.result as T;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.inputValueNode?.initialize(context);\n    this.result = false;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.inputValueNode?.shutdown(context);\n    super.shutdownInternal(context);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { BoolValueNode, FloatValueNode, GraphNodeData } from '../graph-node';\nimport { nodeDataClass } from '../node-asset-type';\n\n@nodeDataClass(spec.NodeDataType.ConstFloatNodeData)\nexport class ConstFloatNodeData extends GraphNodeData {\n  value = 0;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ConstFloatNode, context);\n\n    node.value = this.value;\n  }\n\n  override load (data: spec.ConstFloatNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ConstFloatNode extends FloatValueNode {\n  value = 0;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n}\n\n@nodeDataClass(spec.NodeDataType.ConstBoolNodeData)\nexport class ConstBoolNodeData extends GraphNodeData {\n  value = true;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ConstBoolNode, context);\n\n    node.value = this.value;\n  }\n\n  override load (data: spec.ConstBoolNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ConstBoolNode extends BoolValueNode {\n  value = true;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { BoolValueNode, FloatValueNode, GraphNodeData } from '../graph-node';\n\n@nodeDataClass(spec.NodeDataType.ControlParameterFloatNodeData)\nexport class ControlParameterFloatNodeData extends GraphNodeData {\n  value = 0;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ControlParameterFloatNode, context);\n\n    node.setValue(this.value);\n  }\n\n  override load (data: spec.ControlParameterFloatNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ControlParameterFloatNode extends FloatValueNode {\n  private value = 0;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n\n  override setValue<T> (value: T): void {\n    this.value = value as number;\n  }\n}\n\n@nodeDataClass(spec.NodeDataType.ControlParameterBoolNodeData)\nexport class ControlParameterBoolNodeData extends GraphNodeData {\n  private value = false;\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(ControlParameterBoolNode, context);\n\n    node.setValue(this.value);\n  }\n\n  override load (data: spec.ControlParameterBoolNodeData): void {\n    super.load(data);\n    this.value = data.value;\n  }\n}\n\nexport class ControlParameterBoolNode extends BoolValueNode {\n  private value = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n\n  override setValue<T> (value: T): void {\n    this.value = value as boolean;\n  }\n}\n\n@nodeDataClass(spec.NodeDataType.ControlParameterTriggerNodeData)\nexport class ControlParameterTriggerNodeData extends GraphNodeData {\n  override instantiate (context: InstantiationContext) {\n    this.createNode(ControlParameterTriggerNode, context);\n  }\n\n  override load (data: spec.ControlParameterTriggerNodeData): void {\n    super.load(data);\n  }\n}\n\nexport class ControlParameterTriggerNode extends BoolValueNode {\n  private value = false;\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n    }\n\n    return this.value as T;\n  }\n\n  override setValue<T> (value: T): void {\n    this.value = value as boolean;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { FloatValueNode } from '../graph-node';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\nimport { Blender } from '../blender';\n\ntype LayerData = Required<spec.LayerData>;\n\ninterface Layer {\n  inputNode: PoseNode | null,\n  weightValueNode: FloatValueNode | null,\n  weight: number,\n}\n\n@nodeDataClass(spec.NodeDataType.LayerBlendNodeData)\nexport class LayerBlendNodeData extends GraphNodeData {\n  baseNodeIndex = InvalidIndex;\n  layerDatas: LayerData[] = [];\n\n  override instantiate (context: InstantiationContext) {\n    const node = this.createNode(LayerBlendNode, context);\n\n    node.baseLayerNode = context.getNode<PoseNode>(this.baseNodeIndex);\n    for (const layerData of this.layerDatas) {\n      node.layers.push({\n        inputNode: context.getNode<PoseNode>(layerData.inputNodeIndex),\n        weightValueNode: context.getNode<FloatValueNode>(layerData.weightValueNodeIndex),\n        weight: 0,\n      });\n    }\n  }\n\n  override load (data: spec.LayerBlendNodeData): void {\n    super.load(data);\n\n    this.baseNodeIndex = data.baseNodeIndex ?? InvalidIndex;\n\n    if (data.layerDatas) {\n      for (const layerData of data.layerDatas) {\n        this.layerDatas.push({\n          inputNodeIndex: InvalidIndex,\n          weightValueNodeIndex: InvalidIndex,\n          ...layerData,\n        });\n      }\n    }\n  }\n}\n\nexport class LayerBlendNode extends PoseNode {\n  baseLayerNode: PoseNode | null = null;\n  layers: Layer[] = [];\n\n  private layerNodeResult: PoseResult;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    //-------------------------------------------------------------------------\n\n    this.layerNodeResult = new PoseResult(context.skeleton);\n\n    //-------------------------------------------------------------------------\n\n    this.baseLayerNode?.initialize(context);\n\n    for (const layer of this.layers) {\n      layer.inputNode?.initialize(context);\n      layer.weightValueNode?.initialize(context);\n    }\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.baseLayerNode?.shutdown(context);\n\n    for (const layer of this.layers) {\n      layer.inputNode?.shutdown(context);\n      layer.weightValueNode?.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    if (!(this.baseLayerNode && this.baseLayerNode.isValid())) {\n      return result;\n    }\n\n    this.markNodeActive(context);\n\n    this.previousTime = this.baseLayerNode.getCurrentTime();\n    result = this.baseLayerNode.evaluate(context, result);\n    this.currentTime = this.baseLayerNode.getCurrentTime();\n    this.duration = this.baseLayerNode.getDuration();\n\n    this.updateLayers(context, result);\n\n    return result;\n  }\n\n  private updateLayers (context: GraphContext, result: PoseResult) {\n    for (const layer of this.layers) {\n      if (layer.inputNode && layer.weightValueNode) {\n        this.layerNodeResult.pose.copyFrom(result.pose);\n        layer.inputNode.evaluate(context, this.layerNodeResult);\n        const layerWeight = layer.weightValueNode.getValue<number>(context);\n\n        Blender.localBlend(result.pose, this.layerNodeResult.pose, layerWeight, result.pose);\n      }\n    }\n\n    return result;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { FloatValueNode, ValueNode } from '../graph-node';\nimport { BoolValueNode, GraphNodeData, InvalidIndex } from '../graph-node';\n\n@nodeDataClass(spec.NodeDataType.EqualNodeData)\nexport class EqualNodeData extends GraphNodeData {\n  private inputValueNodeIndex = InvalidIndex;\n  private comparandValueNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(EqualNode, context);\n\n    node.inputValueNode = context.getNode<ValueNode>(this.inputValueNodeIndex);\n    node.comparandValueNode = context.getNode<ValueNode>(this.comparandValueNodeIndex);\n  }\n\n  override load (data: spec.EqualNodeData): void {\n    super.load(data);\n    this.inputValueNodeIndex = data.inputValueNodeIndex;\n    this.comparandValueNodeIndex = data.comparandValueNodeIndex;\n  }\n}\n\nclass EqualNode extends BoolValueNode {\n  inputValueNode: ValueNode | null = null;\n  comparandValueNode: ValueNode | null = null;\n\n  private result = false;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    if (this.inputValueNode) {\n      this.inputValueNode.initialize(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.initialize(context);\n    }\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.inputValueNode) {\n      this.inputValueNode.shutdown(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n      if (this.inputValueNode && this.comparandValueNode) {\n        const a = this.inputValueNode.getValue(context);\n        const b = this.comparandValueNode.getValue(context);\n\n        this.result = (a === b);\n      }\n    }\n\n    return this.result as T;\n  }\n}\n\n//-------------------------------------------------------------------------\n\nexport abstract class FloatComparisonNodeData extends GraphNodeData {\n  protected inputValueNodeIndex = InvalidIndex;\n  protected comparandValueNodeIndex = InvalidIndex;\n\n  override load (data: spec.FloatComparisonNodeData): void {\n    super.load(data);\n    this.inputValueNodeIndex = data.inputValueNodeIndex;\n    this.comparandValueNodeIndex = data.comparandValueNodeIndex;\n  }\n}\n\nenum Comparison {\n  GreaterThan,\n  LessThan,\n}\n\nexport class FloatComparisonNode extends BoolValueNode {\n  inputValueNode: FloatValueNode | null = null;\n  comparandValueNode: FloatValueNode | null = null;\n  comparison = Comparison.GreaterThan;\n\n  private result = false;\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    if (this.inputValueNode) {\n      this.inputValueNode.initialize(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.initialize(context);\n    }\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.inputValueNode) {\n      this.inputValueNode.shutdown(context);\n    }\n\n    if (this.comparandValueNode) {\n      this.comparandValueNode.shutdown(context);\n    }\n\n    super.shutdownInternal(context);\n  }\n\n  override getValue<T> (context: GraphContext): T {\n    if (!this.isUpdated(context)) {\n      this.markNodeActive(context);\n\n      if (this.inputValueNode && this.comparandValueNode) {\n        const a = this.inputValueNode.getValue<number>(context);\n        const b = this.comparandValueNode.getValue<number>(context);\n\n        switch (this.comparison) {\n          case Comparison.GreaterThan:\n            this.result = a > b;\n\n            break;\n          case Comparison.LessThan:\n            this.result = a < b;\n\n            break;\n        }\n      }\n    }\n\n    return this.result as T;\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.GreaterNodeData)\nexport class GreaterNodeData extends FloatComparisonNodeData {\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(FloatComparisonNode, context);\n\n    node.comparison = Comparison.GreaterThan;\n    node.inputValueNode = context.getNode<ValueNode>(this.inputValueNodeIndex);\n    node.comparandValueNode = context.getNode<ValueNode>(this.comparandValueNodeIndex);\n  }\n}\n\n//-------------------------------------------------------------------------\n\n@nodeDataClass(spec.NodeDataType.LessNodeData)\nexport class LessNodeData extends FloatComparisonNodeData {\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(FloatComparisonNode, context);\n\n    node.comparison = Comparison.LessThan;\n    node.inputValueNode = context.getNode<ValueNode>(this.inputValueNodeIndex);\n    node.comparandValueNode = context.getNode<ValueNode>(this.comparandValueNodeIndex);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport { BranchState } from '../graph-context';\nimport type { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport type { BoolValueNode } from '../graph-node';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\nimport type { StateNode, StateNodeData } from './state-node';\nimport type { TransitionNode } from './transition-node';\n\n@nodeDataClass(spec.NodeDataType.StateMachineNodeData)\nexport class StateMachineNodeData extends GraphNodeData {\n  machineName: string;\n  stateDatas: spec.StateData[];\n  defaultStateIndex: number;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(StateMachineNode, context);\n\n    for (const stateData of this.stateDatas) {\n      const state: StateInfo = {\n        stateNode: context.getNode<StateNode>(stateData.stateNodeIndex),\n        transitions: [],\n      };\n\n      node.states.push(state);\n\n      for (const transitionData of stateData.transitionDatas) {\n        const transition: TransitionInfo = {\n          transitionNode: context.getNode<TransitionNode>(transitionData.transitionNodeIndex),\n          conditionNode: context.getNode<BoolValueNode>(transitionData.conditionNodeIndex),\n          targetStateIndex: transitionData.targetStateIndex,\n        };\n\n        state.transitions.push(transition);\n      }\n    }\n  }\n\n  override load (data: spec.StateMachineNodeData): void {\n    super.load(data);\n\n    this.stateDatas = data.stateDatas;\n    this.defaultStateIndex = data.defaultStateIndex;\n    this.machineName = data.machineName;\n  }\n}\n\nexport interface TransitionInfo {\n  transitionNode: TransitionNode,\n  conditionNode: BoolValueNode,\n  targetStateIndex: number,\n}\n\nexport interface StateInfo {\n  stateNode: StateNode,\n  transitions: TransitionInfo[],\n}\n\n/**\n * 状态机节点\n */\nexport class StateMachineNode extends PoseNode {\n  states: StateInfo[] = [];\n  private activeTransition: TransitionNode | null = null;\n  private activeStateIndex = InvalidIndex;\n\n  /**\n   * 获取当前激活状态的名称\n   * @since 2.7.0\n   * @returns 当前状态名\n   */\n  getCurrentStateName (): string {\n    return this.states[this.activeStateIndex].stateNode.getNodeData<StateNodeData>().stateName;\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    this.markNodeActive(context);\n\n    // Check active transition\n    if (this.activeTransition !== null) {\n      if (this.activeTransition.isComplete(context)) {\n        this.activeTransition.shutdown(context);\n        this.activeTransition = null;\n      }\n    }\n\n    if (this.activeTransition === null) {\n      // Update state directly\n      const activeState = this.states[this.activeStateIndex].stateNode;\n\n      result = activeState.evaluate(context, result);\n\n      // Update node time\n      this.duration = activeState.getDuration();\n      this.previousTime = activeState.getPreviousTime();\n      this.currentTime = activeState.getCurrentTime();\n    } else {\n      // Update transition\n      result = this.activeTransition.evaluate(context, result);\n\n      // Update node time\n      this.duration = this.activeTransition.getDuration();\n      this.previousTime = this.activeTransition.getPreviousTime();\n      this.currentTime = this.activeTransition.getCurrentTime();\n    }\n\n    // Check for transitions\n    if (context.branchState === BranchState.Active) {\n      this.evaluateTransitions(context, result);\n    }\n\n    return result;\n  }\n\n  private evaluateTransitions (\n    context: GraphContext,\n    sourceNodeResult: PoseResult\n  ): void {\n    const currentlyActiveStateInfo = this.states[this.activeStateIndex];\n\n    // Check for a valid transition\n    let transitionIdx = InvalidIndex;\n    const numTransitions = currentlyActiveStateInfo.transitions.length;\n\n    for (let i = 0; i < numTransitions; i++) {\n      const transition = currentlyActiveStateInfo.transitions[i];\n\n      if (transition.targetStateIndex === InvalidIndex) {\n        throw new Error('Invalid target state index.');\n      }\n\n      // Disallow transitions to already transitioning states unless forced\n      if (this.states[transition.targetStateIndex].stateNode.isTransitioning()) {\n        continue;\n      }\n\n      let canEnterTransition = false;\n\n      // HasExitTime override transition condition\n      if (transition.transitionNode.hasExitTime) {\n        const stateNode = currentlyActiveStateInfo.stateNode;\n\n        if (stateNode.getElapsedTimeInState() / stateNode.getDuration() > transition.transitionNode.exitTime) {\n          canEnterTransition = true;\n        }\n      } else if (transition.conditionNode !== null && transition.conditionNode.getValue<boolean>(context)) {  // Check transition conditions\n        canEnterTransition = true;\n      }\n\n      if (canEnterTransition) {\n        transitionIdx = i;\n\n        break;\n      }\n    }\n\n    // Start new transition if found\n    if (transitionIdx !== InvalidIndex) {\n      const transition = currentlyActiveStateInfo.transitions[transitionIdx];\n      // const targetStateInfo = this.states[transition.targetStateIndex];\n\n      // if (this.activeTransition) {\n      //   this.activeTransition.notifyNewTransitionStarting(context, targetStateInfo.stateNode);\n      // }\n\n      // Start the new transition\n      // Initialize target state based on transition settings\n      transition.transitionNode.initialize(context);\n\n      if (this.activeTransition !== null) {\n        sourceNodeResult = transition.transitionNode.startTransitionFromTransition(\n          context,\n          sourceNodeResult,\n          this.activeTransition,\n          sourceNodeResult\n        );\n      } else {\n        sourceNodeResult = transition.transitionNode.startTransitionFromState(\n          context,\n          sourceNodeResult,\n          this.states[this.activeStateIndex].stateNode,\n          sourceNodeResult\n        );\n      }\n\n      this.activeTransition = transition.transitionNode;\n\n      // Update state data\n      this.shutdownTransitionConditions(context);\n      this.activeStateIndex = transition.targetStateIndex;\n      this.initializeTransitionConditions(context);\n\n      // Update timing info\n      this.duration = this.states[this.activeStateIndex].stateNode.getDuration();\n      this.previousTime = this.states[this.activeStateIndex].stateNode.getPreviousTime();\n      this.currentTime = this.states[this.activeStateIndex].stateNode.getCurrentTime();\n    }\n  }\n\n  private selectDefaultState (context: GraphContext): number {\n    const selectedStateIndex = this.getNodeData<StateMachineNodeData>().defaultStateIndex;\n\n    return selectedStateIndex;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n\n    this.activeStateIndex = this.selectDefaultState(context);\n    const activeState = this.states[this.activeStateIndex].stateNode;\n\n    activeState.initialize(context);\n\n    this.duration = activeState.getDuration();\n    this.previousTime = activeState.getPreviousTime();\n    this.currentTime = activeState.getCurrentTime();\n\n    this.initializeTransitionConditions(context);\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.activeTransition !== null) {\n      this.activeTransition.shutdown(context);\n    }\n\n    this.shutdownTransitionConditions(context);\n\n    this.states[this.activeStateIndex].stateNode.shutdown(context);\n    this.activeStateIndex = InvalidIndex;\n    this.activeTransition = null;\n\n    super.shutdownInternal(context);\n  }\n\n  private initializeTransitionConditions (context: GraphContext): void {\n    for (const transition of this.states[this.activeStateIndex].transitions) {\n      if (transition.conditionNode !== null) {\n        transition.conditionNode.initialize(context);\n      }\n    }\n  }\n\n  private shutdownTransitionConditions (context: GraphContext): void {\n    for (const transition of this.states[this.activeStateIndex].transitions) {\n      if (transition.conditionNode !== null) {\n        transition.conditionNode.shutdown(context);\n      }\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { GraphContext, InstantiationContext } from '../graph-context';\nimport type { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\n\nexport enum TransitionState {\n  None,\n  TransitioningIn,\n  TransitioningOut,\n}\n\n@nodeDataClass(spec.NodeDataType.StateNodeData)\nexport class StateNodeData extends GraphNodeData {\n  stateName: string;\n  childNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(StateNode, context);\n\n    node.childNode = context.getNode<PoseNode>(this.childNodeIndex);\n  }\n\n  override load (data: spec.StateNodeData): void {\n    super.load(data);\n\n    this.childNodeIndex = data.childNodeIndex;\n    this.stateName = data.stateName;\n  }\n}\n\nexport class StateNode extends PoseNode {\n  childNode: PoseNode | null = null;\n\n  private transitionState = TransitionState.None;\n  private elapsedTimeInState = 0;\n  private isFirstStateUpdate = false;\n\n  isTransitioning () {\n    return this.transitionState !== TransitionState.None;\n  }\n\n  isTransitioningIn () {\n    return this.transitionState === TransitionState.TransitioningIn;\n  }\n\n  isTransitioningOut () {\n    return this.transitionState === TransitionState.TransitioningOut;\n  }\n\n  startTransitionIn (context: GraphContext) {\n    this.transitionState = TransitionState.TransitioningIn;\n  }\n\n  startTransitionOut (context: GraphContext) {\n    this.transitionState = TransitionState.TransitioningOut;\n  }\n\n  setTransitioningState (newState: TransitionState) {\n    this.transitionState = newState;\n  }\n\n  getElapsedTimeInState () {\n    return this.elapsedTimeInState;\n  }\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    this.markNodeActive(context);\n\n    // 更新子节点\n    if (this.childNode !== null && this.childNode.isValid()) {\n      result = this.childNode.evaluate(context, result);\n      this.duration = this.childNode.getDuration();\n      this.previousTime = this.childNode.getPreviousTime();\n      this.currentTime = this.childNode.getCurrentTime();\n    }\n\n    // 跟踪在状态中花费的时间\n    this.elapsedTimeInState += context.deltaTime;\n    this.isFirstStateUpdate = false;\n\n    return result;\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.transitionState = TransitionState.None;\n    this.elapsedTimeInState = 0;\n    this.previousTime = this.currentTime = 0;\n    this.duration = 0;\n    if (this.childNode !== null) {\n      this.childNode.initialize(context);\n      if (this.childNode.isValid()) {\n        this.duration = this.childNode.getDuration();\n        this.previousTime = this.childNode.getPreviousTime();\n        this.currentTime = this.childNode.getCurrentTime();\n      }\n    }\n\n    // Flag this as the first update for this state, this will cause state entry events to be sampled for at least one update\n    this.isFirstStateUpdate = true;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    if (this.childNode !== null) {\n      this.childNode.shutdown(context);\n    }\n    this.transitionState = TransitionState.None;\n    super.shutdownInternal(context);\n  }\n}\n","import { clamp, lerp } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { assertExist } from '../../../utils/asserts';\nimport { Blender } from '../blender';\nimport type { InstantiationContext, GraphContext } from '../graph-context';\nimport { BranchState } from '../graph-context';\nimport { PoseResult } from '../pose-result';\nimport { nodeDataClass } from '../node-asset-type';\nimport { GraphNodeData, InvalidIndex, PoseNode } from '../graph-node';\nimport { TransitionState, type StateNode } from './state-node';\n\nexport enum SourceType {\n  State,\n  Transition,\n  CachedPose\n}\n\n@nodeDataClass(spec.NodeDataType.TransitionNodeData)\nexport class TransitionNodeData extends GraphNodeData {\n  duration = 0;\n  hasExitTime = false;\n  exitTime = 0.75;\n  targetStateNodeIndex = InvalidIndex;\n\n  override instantiate (context: InstantiationContext): void {\n    const node = this.createNode(TransitionNode, context);\n\n    node.targetNode = context.getNode(this.targetStateNodeIndex);\n    node.hasExitTime = this.hasExitTime;\n    node.exitTime = this.exitTime;\n  }\n\n  override load (data: spec.TransitionNodeData): void {\n    super.load(data);\n\n    this.duration = data.duration;\n    this.hasExitTime = data.hasExitTime;\n    this.exitTime = data.exitTime;\n    this.targetStateNodeIndex = data.targetStateNodeIndex;\n  }\n}\n\nexport class TransitionNode extends PoseNode {\n  targetNode: StateNode;\n  hasExitTime = false;\n  exitTime = 0.75;\n\n  private transitionLength = 0;\n  private transitionProgress = 0;\n  private blendWeight = 0;\n\n  private sourceNode: PoseNode | null = null;\n  private sourceNodeResult: PoseResult;\n  private sourceType = SourceType.State;\n  private targetNodeResult: PoseResult;\n  private blendedDuration = 0;\n\n  override evaluate (context: GraphContext, result: PoseResult): PoseResult {\n    assertExist(this.sourceNode);\n\n    this.markNodeActive(context);\n\n    // Handle source transition completion\n    if (this.isSourceATransition() && this.getSourceTransitionNode().isComplete(context)) {\n      this.endSourceTransition(context);\n    }\n\n    this.transitionProgress = this.transitionProgress + context.deltaTime / this.transitionLength;\n    this.transitionProgress = clamp(this.transitionProgress, 0.0, 1.0);\n\n    // 计算混合权重\n    this.calculateBlendWeight();\n\n    // 更新源状态\n    let sourceNodeResult = this.sourceNodeResult;\n\n    // 设置分支状态\n    const previousBranchState = context.branchState;\n\n    context.branchState = BranchState.Inactive;\n    sourceNodeResult = this.sourceNode.evaluate(context, sourceNodeResult);\n\n    // 恢复分支状态\n    context.branchState = previousBranchState;\n\n    // 更新目标状态节点\n    const targetNodeResult = this.targetNode.evaluate(\n      context,\n      this.targetNodeResult\n    );\n\n    const finalResult = result;\n\n    this.registerPoseTasksAndUpdateRootMotion(\n      sourceNodeResult,\n      targetNodeResult,\n      finalResult\n    );\n\n    // 更新内部时间\n    this.blendedDuration = lerp(\n      this.sourceNode.getDuration(),\n      this.targetNode.getDuration(),\n      this.blendWeight\n    );\n    if (this.blendedDuration > 0.0) {\n      const deltaPercentage = context.deltaTime / this.blendedDuration;\n\n      this.previousTime = this.currentTime;\n      this.currentTime = (this.currentTime + deltaPercentage) % 1;\n    } else {\n      this.previousTime = this.currentTime = 1.0;\n    }\n\n    // 设置转换的暴露持续时间为目标，以确保任何\"状态完成\"节点正确触发\n    this.duration = this.targetNode.getDuration();\n\n    return finalResult;\n  }\n\n  // Transition Info\n  //-------------------------------------------------------------------------\n\n  isComplete (context: GraphContext): boolean {\n    if (this.transitionLength <= 0) {\n      return true;\n    }\n\n    return (this.transitionProgress + (context.deltaTime / this.transitionLength)) >= 1.0;\n  }\n\n  getProgressPercentage (): number {\n    return this.transitionProgress;\n  }\n\n  getSourceType (): SourceType {\n    return this.sourceType;\n  }\n\n  isSourceATransition (): boolean {\n    return this.sourceType === SourceType.Transition;\n  }\n\n  isSourceAState (): boolean {\n    return this.sourceType === SourceType.State;\n  }\n\n  // Secondary initialization\n  //-------------------------------------------------------------------------\n\n  startTransitionFromState (\n    context: GraphContext,\n    sourceNodeResult: PoseResult,\n    sourceState: StateNode,\n    outResult: PoseResult\n  ): PoseResult {\n    this.sourceNode = sourceState;\n    this.sourceType = SourceType.State;\n\n    return this.initializeTargetStateAndUpdateTransition(context, sourceNodeResult, outResult);\n  }\n\n  startTransitionFromTransition (\n    context: GraphContext,\n    sourceNodeResult: PoseResult,\n    sourceTransition: TransitionNode,\n    outResult: PoseResult) {\n    this.sourceNode = sourceTransition;\n    this.sourceType = SourceType.Transition;\n\n    return this.initializeTargetStateAndUpdateTransition(context, sourceNodeResult, outResult);\n  }\n\n  // Source Node\n  //-------------------------------------------------------------------------\n\n  getSourceStateNode () {\n    return this.sourceNode as StateNode;\n  }\n\n  getSourceTransitionNode () {\n    return this.sourceNode as TransitionNode;\n  }\n\n  // Forceable transitions\n  //-------------------------------------------------------------------------\n\n  notifyNewTransitionStarting (context: GraphContext, targetStateNode: StateNode) {\n    if (this.isSourceATransition()) {\n      const sourceTransitionNode = this.getSourceTransitionNode();\n      const sourceTransitionTargetState = sourceTransitionNode.targetNode;\n\n      if (sourceTransitionTargetState === targetStateNode) {\n        this.sourceType = SourceType.CachedPose;\n\n        sourceTransitionTargetState.shutdown(context);\n        this.sourceNode = null;\n      }\n    } else if (this.isSourceAState()) {\n      if (this.sourceNode === targetStateNode) {\n        this.sourceType = SourceType.CachedPose;\n        this.sourceNode.shutdown(context);\n        this.sourceNode = null;\n      }\n    }\n\n    if (this.isSourceATransition()) {\n      const sourceTransitionNode = this.getSourceTransitionNode();\n\n      sourceTransitionNode.notifyNewTransitionStarting(context, targetStateNode);\n    }\n  }\n\n  protected override initializeInternal (context: GraphContext): void {\n    super.initializeInternal(context);\n    this.sourceNodeResult = new PoseResult(context.skeleton);\n    this.targetNodeResult = new PoseResult(context.skeleton);\n\n    this.transitionLength = this.getNodeData<TransitionNodeData>().duration;\n\n    this.transitionProgress = 0;\n    this.blendWeight = 0;\n  }\n\n  protected override shutdownInternal (context: GraphContext): void {\n    this.targetNode.setTransitioningState(TransitionState.None);\n    this.currentTime = 1.0;\n\n    if (this.sourceNode) {\n      if (this.isSourceATransition()) {\n        this.endSourceTransition(context);\n      }\n      this.sourceNode.shutdown(context);\n      this.sourceNode = null;\n    }\n    super.shutdownInternal(context);\n  }\n\n  private endSourceTransition (context: GraphContext) {\n    const sourceTransitionNode = this.getSourceTransitionNode();\n    const sourceTransitionTargetState = sourceTransitionNode.targetNode;\n\n    this.sourceNode?.shutdown(context);\n    this.sourceNode = sourceTransitionTargetState;\n    this.sourceType = SourceType.State;\n\n    this.getSourceStateNode().setTransitioningState(TransitionState.TransitioningOut);\n  }\n\n  private initializeTargetStateAndUpdateTransition (\n    context: GraphContext,\n    sourceNodeResult: PoseResult,\n    outResult: PoseResult\n  ): PoseResult {\n    this.markNodeActive(context);\n\n    let targetNodeResult = this.targetNodeResult;\n\n    // 处理源状态的过渡开始\n    const startTransitionOutForSource = () => {\n      if (this.sourceType === SourceType.State) {\n        this.getSourceStateNode().startTransitionOut(context);\n      }\n    };\n\n    // 非同步转换的处理\n    startTransitionOutForSource();\n    this.targetNode.initialize(context);\n    this.targetNode.startTransitionIn(context);\n    targetNodeResult = this.targetNode.evaluate(context, targetNodeResult);\n\n    // 计算混合权重\n    this.calculateBlendWeight();\n\n    // 注册姿势任务并更新根运动\n    this.registerPoseTasksAndUpdateRootMotion(\n      sourceNodeResult,\n      targetNodeResult,\n      outResult\n    );\n\n    // Update internal time\n    this.previousTime = 0;\n    this.currentTime = 0;\n    this.blendedDuration = lerp(this.sourceNode!.getDuration(), this.targetNode.getDuration(), this.blendWeight);\n\n    // Set the exposed-duration of the transition to the target to ensure that any \"state completed\" nodes trigger correctly\n    this.duration = this.targetNode.getDuration();\n\n    return outResult;\n  }\n\n  private calculateBlendWeight () {\n    if (this.transitionLength === 0) {\n      this.blendWeight = 1;\n    } else {\n      // Linear\n      this.blendWeight = this.transitionProgress;\n      this.blendWeight = clamp(this.blendWeight, 0, 1);\n    }\n  }\n\n  private registerPoseTasksAndUpdateRootMotion (\n    sourceResult: PoseResult,\n    targetResult: PoseResult,\n    outResult: PoseResult\n  ): void {\n    const poseBlendWeight = this.blendWeight;\n\n    Blender.localBlend(sourceResult.pose, targetResult.pose, poseBlendWeight, outResult.pose);\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport type { VFXItem } from '../../vfx-item';\nimport type { Transform } from '../../transform';\nimport { NodeTransform } from './pose';\nimport type { Constructor } from '../../utils';\nimport type { Component } from '../../components';\nimport { getClass } from '../../decorators';\nimport type { ColorAnimationCurve, FloatAnimationCurve } from '../../animation/animation-clip';\n\nexport interface AnimationRecordData {\n  position: string[],\n  scale: string[],\n  rotation: string[],\n  euler: string[],\n  floats: FloatAnimationCurve[],\n  colors: ColorAnimationCurve[],\n}\n\nexport enum AnimatedPropertyType {\n  Float,\n  Color,\n}\n\nexport interface AnimatedObject {\n  propertyPath: string,\n  propertyName: string,\n  target: Record<string, any>,\n  directTarget: Record<string, any>,\n}\n\nexport const VFXItemType = 'VFXItem';\n\nexport class Skeleton {\n  useEuler = false;\n\n  pathToObjectIndex = new Map<string, number>();\n\n  floatAnimatedObjects: AnimatedObject[] = [];\n  defaultFloatPropertyValues: number[] = [];\n\n  colorAnimatedObjects: AnimatedObject[] = [];\n  defaultColorPropertyValues: Color[] = [];\n\n  animatedTransforms: Transform[] = [];\n  parentSpaceTransforms: NodeTransform[] = [];\n  pathToBoneIndex = new Map<string, number>();\n\n  constructor (\n    public rootBone: VFXItem,\n    recordedProperties: AnimationRecordData,\n  ) {\n    for (const path of recordedProperties.position) {\n      this.addReferenceTransform(path);\n    }\n    for (const path of recordedProperties.rotation) {\n      this.addReferenceTransform(path);\n    }\n    for (const path of recordedProperties.scale) {\n      this.addReferenceTransform(path);\n    }\n    for (const path of recordedProperties.euler) {\n      this.addReferenceTransform(path);\n      this.useEuler = true;\n    }\n\n    for (let i = 0; i < recordedProperties.floats.length; i++) {\n      const floatRecords = recordedProperties.floats[i];\n\n      this.addRecordedProperty(floatRecords.path, floatRecords.className, floatRecords.property, AnimatedPropertyType.Float);\n    }\n\n    for (let i = 0; i < recordedProperties.colors.length; i++) {\n      const colorRecords = recordedProperties.colors[i];\n\n      this.addRecordedProperty(colorRecords.path, colorRecords.className, colorRecords.property, AnimatedPropertyType.Color);\n    }\n  }\n\n  private addReferenceTransform (itemPath: string) {\n    if (this.pathToBoneIndex.get(itemPath)) {\n      return;\n    }\n    const targetBone = this.findTarget(itemPath);\n\n    if (!targetBone) {\n      return;\n    }\n\n    this.parentSpaceTransforms.push(new NodeTransform(targetBone.transform));\n    this.animatedTransforms.push(targetBone.transform);\n    this.pathToBoneIndex.set(itemPath, this.parentSpaceTransforms.length - 1);\n  }\n\n  private addRecordedProperty (itemPath: string, className: string, propertyPath: string, type: AnimatedPropertyType) {\n    const totalPath = itemPath + className + propertyPath;\n\n    if (this.pathToObjectIndex.get(totalPath) !== undefined) {\n      return;\n    }\n\n    const targetBone = this.findTarget(itemPath);\n\n    if (!targetBone) {\n      return;\n    }\n\n    let animatedComponentOrItem: VFXItem | Component;\n\n    // Find target component or VFXItem\n    if (className === VFXItemType) {\n      animatedComponentOrItem = targetBone;\n    } else {\n      animatedComponentOrItem = targetBone.getComponent(getClass(className) as Constructor<Component>);\n    }\n\n    if (!animatedComponentOrItem) {\n      console.error(`The ${className} Component was not found.`);\n    }\n\n    // Find last animated object by path\n    const propertyPathSegments = propertyPath.split('.');\n    const lastPropertyName = propertyPathSegments[propertyPathSegments.length - 1];\n    let directTarget: Record<string, any> = animatedComponentOrItem;\n\n    for (let i = 0; i < propertyPathSegments.length - 1; i++) {\n      const property = directTarget[propertyPathSegments[i]];\n\n      if (property === undefined) {\n        console.error(`The ${propertyPathSegments[i]} property of ${directTarget} was not found.`);\n      }\n      directTarget = property;\n    }\n\n    const animatedObject: AnimatedObject = {\n      target: animatedComponentOrItem,\n      propertyPath: propertyPath,\n      directTarget: directTarget,\n      propertyName: lastPropertyName,\n    };\n\n    switch (type) {\n      case AnimatedPropertyType.Float:\n        this.floatAnimatedObjects.push(animatedObject);\n        this.defaultFloatPropertyValues.push(directTarget[lastPropertyName]);\n        this.pathToObjectIndex.set(totalPath, this.floatAnimatedObjects.length - 1);\n\n        break;\n      case AnimatedPropertyType.Color:\n        this.colorAnimatedObjects.push(animatedObject);\n        this.defaultColorPropertyValues.push(new Color().copyFrom(directTarget[lastPropertyName]));\n        this.pathToObjectIndex.set(totalPath, this.colorAnimatedObjects.length - 1);\n    }\n  }\n\n  private findTarget (boneName: string) {\n    if (boneName === '') {\n      return this.rootBone;\n    }\n\n    const itemNames = boneName.split('/');\n    let currentItem = this.rootBone;\n\n    for (const itemName of itemNames) {\n      const target = currentItem.find(itemName);\n\n      if (!target) {\n        return null;\n      }\n\n      currentItem = target;\n    }\n\n    return currentItem;\n  }\n}\n","import type { VFXItem } from '../../vfx-item';\nimport type { AnimationGraphAsset } from './animation-graph-asset';\nimport { GraphContext, InstantiationContext } from './graph-context';\nimport type { GraphNode, PoseNode, PoseNodeDebugInfo, ValueNode } from './graph-node';\nimport { InvalidIndex } from './graph-node';\nimport type { StateMachineNodeData } from './nodes';\nimport { ControlParameterTriggerNode, StateMachineNode } from './nodes';\nimport { PoseResult } from './pose-result';\nimport type { AnimationRecordData } from './skeleton';\nimport { Skeleton } from './skeleton';\n\nexport class GraphInstance {\n  nodes: GraphNode[] = [];\n  skeleton: Skeleton;\n\n  private rootNode: PoseNode;\n  private context = new GraphContext();\n  private result: PoseResult;\n\n  constructor (\n    private graphAsset: AnimationGraphAsset,\n    rootBone: VFXItem,\n  ) {\n    // Initialize skeleton\n    const recordProperties: AnimationRecordData = {\n      position: [],\n      scale: [],\n      rotation: [],\n      euler: [],\n      floats: [],\n      colors: [],\n    };\n\n    for (const animationClip of graphAsset.graphDataSet.resources) {\n      if (!animationClip) {\n        continue;\n      }\n      for (const positionCurve of animationClip.positionCurves) {\n        recordProperties.position.push(positionCurve.path);\n      }\n      for (const rotationCurve of animationClip.rotationCurves) {\n        recordProperties.rotation.push(rotationCurve.path);\n      }\n      for (const scaleCurve of animationClip.scaleCurves) {\n        recordProperties.scale.push(scaleCurve.path);\n      }\n      for (const eulerCurve of animationClip.eulerCurves) {\n        recordProperties.euler.push(eulerCurve.path);\n      }\n      for (const floatCurve of animationClip.floatCurves) {\n        recordProperties.floats.push(floatCurve);\n      }\n      for (const colorCurve of animationClip.colorCurves) {\n        recordProperties.colors.push(colorCurve);\n      }\n    }\n    this.skeleton = new Skeleton(rootBone, recordProperties);\n\n    // Create PoseResult\n    this.result = new PoseResult(this.skeleton);\n    this.context.skeleton = this.skeleton;\n\n    // Instantiate graph nodes\n    const instantiationContext = new InstantiationContext();\n\n    instantiationContext.nodes = this.nodes;\n    instantiationContext.nodeDatas = graphAsset.nodeDatas;\n    instantiationContext.dataSet = graphAsset.graphDataSet;\n\n    for (let i = 0; i < graphAsset.nodeDatas.length; i++) {\n      if (!instantiationContext.nodes[i]) {\n        graphAsset.nodeDatas[i].instantiate(instantiationContext);\n      }\n    }\n    this.rootNode = this.nodes[graphAsset.rootNodeIndex] as PoseNode;\n  }\n\n  evaluateGraph (deltaTime: number) {\n    this.context.update(deltaTime);\n\n    if (!this.rootNode.isInitialized()) {\n      this.resetGraphState();\n    }\n\n    // Evaluate the entire animation graph starting from the rootNode\n    if (this.rootNode) {\n      this.result = this.rootNode.evaluate(this.context, this.result);\n    }\n\n    // Reset trigger nodes\n    for (let i = 0; i < this.getNumControlParameters(); i++) {\n      const controlParameterNode = this.nodes[i];\n\n      if (controlParameterNode instanceof ControlParameterTriggerNode) {\n        controlParameterNode.setValue(false);\n      }\n    }\n\n    return this.result;\n  }\n\n  isInitialized () {\n    return this.rootNode && this.rootNode.isInitialized();\n  }\n\n  // General Node Info\n  //-------------------------------------------------------------------------\n\n  isNodeActive (nodeIdx: number): boolean {\n    return this.isControlParameter(nodeIdx) || this.nodes[nodeIdx].isNodeActive(this.context.updateID);\n  }\n\n  getStateMachineNode (machineName: string): StateMachineNode | null {\n    let result: StateMachineNode | null = null;\n\n    for (const node of this.nodes) {\n      if (node instanceof StateMachineNode && node.getNodeData<StateMachineNodeData>().machineName === machineName) {\n        result = node;\n      }\n    }\n\n    return result;\n  }\n\n  // Graph State\n  //-------------------------------------------------------------------------\n\n  resetGraphState () {\n    if (this.rootNode.isInitialized()) {\n      this.rootNode.shutdown(this.context);\n    }\n\n    this.context.updateID++; // Bump the update ID to ensure that any initialization code that relies on it is dirtied.\n    this.rootNode.initialize(this.context);\n  }\n\n  // Control Parameters\n  //-------------------------------------------------------------------------\n\n  getNumControlParameters (): number {\n    return this.graphAsset.controlParameterIDs.length;\n  }\n\n  getControlParameterIndex (parameterID: string): number {\n    const parameterLookupMap = this.graphAsset.parameterLookupMap;\n    const res = parameterLookupMap.get(parameterID);\n\n    if (res !== undefined) {\n      return res;\n    }\n\n    console.warn(`Parameter '${parameterID}' does not exist.`);\n\n    return InvalidIndex;\n  }\n\n  getControlParameterID (parameterNodeIndex: number): string {\n    return this.graphAsset.controlParameterIDs[parameterNodeIndex];\n  }\n\n  setBool (name: string, value: boolean) {\n    this.setControlParameterValue<boolean>(name, value);\n  }\n\n  setFloat (name: string, value: number) {\n    this.setControlParameterValue<number>(name, value);\n  }\n\n  setTrigger (name: string) {\n    this.setControlParameterValue<boolean>(name, true);\n  }\n\n  resetTrigger (name: string) {\n    this.setControlParameterValue<boolean>(name, false);\n  }\n\n  // Debug Information\n  //-------------------------------------------------------------------------\n\n  getPoseNodeDebugInfo (nodeIdx: number): PoseNodeDebugInfo {\n    const node = this.nodes[nodeIdx] as PoseNode;\n\n    return node.getDebugInfo();\n  }\n\n  getRuntimeNodeDebugValue<T> (nodeIdx: number): T {\n    const valueNode = this.nodes[nodeIdx] as ValueNode;\n\n    return valueNode.getValue<T>(this.context);\n  }\n\n  getNodeDebugInstance (nodeIdx: number): GraphNode {\n    return this.nodes[nodeIdx];\n  }\n\n  private isControlParameter (nodeIdx: number) {\n    return nodeIdx < this.getNumControlParameters();\n  }\n\n  private setControlParameterValue<T> (name: string, value: T) {\n    const index = this.getControlParameterIndex(name);\n\n    if (index !== InvalidIndex) {\n      (this.nodes[index] as ValueNode).setValue(value);\n    }\n  }\n}\n","function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n\n        if (\"value\" in descriptor) descriptor.writable = true;\n\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n\n    return Constructor;\n}\nexport { _create_class as _ };\n","import { serialize } from '../decorators';\nimport { EffectsObject } from '../effects-object';\nimport { removeItem } from '../utils';\nimport type { VFXItem } from '../vfx-item';\n\n/**\n * @since 2.0.0\n */\nexport abstract class Component extends EffectsObject {\n  name: string;\n  /**\n   * 附加到的 VFXItem 对象\n   */\n  @serialize()\n  item: VFXItem;\n  isAwakeCalled = false;\n  isStartCalled = false;\n  isEnableCalled = false;\n\n  @serialize()\n  private _enabled = true;\n\n  /**\n   * 附加到的 VFXItem 对象 Transform 组件\n   */\n  get transform () {\n    return this.item.transform;\n  }\n\n  /**\n   * 组件是否可以更新，true 更新，false 不更新\n   */\n  get isActiveAndEnabled () {\n    return this.item.isActive && this.enabled;\n  }\n\n  get enabled () {\n    return this._enabled;\n  }\n\n  set enabled (value: boolean) {\n    if (this.enabled !== value) {\n      this._enabled = value;\n      if (value) {\n        if (this.isActiveAndEnabled) {\n          this.enable();\n          if (!this.isStartCalled) {\n            this.onStart();\n            this.isStartCalled = true;\n          }\n        }\n      } else {\n        if (this.isEnableCalled) {\n          this.disable();\n        }\n      }\n    }\n  }\n\n  /**\n   * 生命周期函数，初始化后调用，生命周期内只调用一次\n   */\n  onAwake () {\n    // OVERRIDE\n  }\n\n  /**\n   * 在 enabled 变为 true 时触发\n   */\n  onEnable () {\n    // OVERRIDE\n  }\n\n  /**\n   * 在 enabled 变为 false 时触发\n   */\n  onDisable () {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，在第一次 update 前调用，生命周期内只调用一次\n   */\n  onStart () {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，每帧调用一次\n   */\n  onUpdate (dt: number) {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，每帧调用一次，在 update 之后调用\n   */\n  onLateUpdate (dt: number) {\n    // OVERRIDE\n  }\n\n  /**\n   * 生命周期函数，在组件销毁时调用\n   */\n  onDestroy () {\n    // OVERRIDE\n  }\n\n  /**\n   * 当属性被动画修改时调用\n   */\n  onApplyAnimationProperties () {\n    // OVERRIDE\n  }\n\n  /**\n   * @internal\n   */\n  enable () {\n    if (this.item.composition) {\n      this.item.composition.sceneTicking.addComponent(this);\n      this.isEnableCalled = true;\n    }\n    this.onEnable();\n  }\n\n  /**\n   * @internal\n   */\n  disable () {\n    this.onDisable();\n    if (this.item.composition) {\n      this.isEnableCalled = false;\n      this.item.composition.sceneTicking.removeComponent(this);\n    }\n  }\n\n  setVFXItem (item: VFXItem) {\n    this.item = item;\n    if (item.isDuringPlay) {\n      if (!this.isAwakeCalled) {\n        this.onAwake();\n        this.isAwakeCalled = true;\n      }\n      if (item.isActive && this.enabled) {\n        this.start();\n        this.enable();\n      }\n    }\n  }\n\n  override fromData (data: any): void {\n    super.fromData(data);\n  }\n\n  override dispose (): void {\n    if (this.isEnableCalled) {\n      this.disable();\n    }\n    if (this.isAwakeCalled) {\n      this.isAwakeCalled = false;\n      this.onDestroy();\n    }\n    if (this.item) {\n      removeItem(this.item.components, this);\n    }\n\n    super.dispose();\n  }\n\n  private start () {\n    if (this.isStartCalled) {\n      return;\n    }\n    this.isStartCalled = true;\n    this.onStart();\n  }\n}\n\n/**\n * @since 2.0.0\n * @deprecated 2.4.0 Please use Component instead\n */\nexport abstract class Behaviour extends Component {\n\n  override setVFXItem (item: VFXItem): void {\n    super.setVFXItem(item);\n  }\n\n  override dispose (): void {\n    super.dispose();\n  }\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { AnimationGraphAsset, StateMachineNode } from '../plugins/animation-graph';\nimport { GraphInstance } from '../plugins/animation-graph';\nimport { Component } from './component.js';\nimport { effectsClass } from '../decorators';\n\n/**\n * @since 2.6.0\n */\n@effectsClass('Animator')\nexport class Animator extends Component {\n  /**\n   * @internal\n   */\n  graphInstance: GraphInstance | null = null;\n  private graphAsset: AnimationGraphAsset | null = null;\n\n  /**\n   * 设置布尔类型参数\n   * @param name - 参数名\n   * @param value - 参数值\n   * @since 2.7.0\n   */\n  setBool (name: string, value: boolean) {\n    if (this.graphInstance) {\n      this.graphInstance.setBool(name, value);\n    }\n  }\n\n  /**\n   * 设置浮点类型参数\n   * @param name - 参数名\n   * @param value - 参数值\n   * @since 2.7.0\n   */\n  setFloat (name: string, value: number) {\n    if (this.graphInstance) {\n      this.graphInstance.setFloat(name, value);\n    }\n  }\n\n  /**\n   * 设置触发器参数\n   * @since 2.7.0\n   * @param name - 参数名\n   */\n  setTrigger (name: string) {\n    if (this.graphInstance) {\n      this.graphInstance.setTrigger(name);\n    }\n  }\n\n  /**\n   * 重置触发器参数\n   * @since 2.7.0\n   * @param name - 参数名\n   */\n  resetTrigger (name: string) {\n    if (this.graphInstance) {\n      this.graphInstance.resetTrigger(name);\n    }\n  }\n\n  /**\n   * 获取状态机节点\n   * @param machineName - 状态机名称\n   * @since 2.7.0\n   * @returns 状态机节点\n   */\n  getStateMachineNode (machineName: string): StateMachineNode | null {\n    let result: StateMachineNode | null = null;\n\n    if (this.graphInstance) {\n      result = this.graphInstance.getStateMachineNode(machineName);\n    }\n\n    return result;\n  }\n\n  override onStart (): void {\n    if (this.graphAsset) {\n      this.graphInstance = new GraphInstance(this.graphAsset, this.item);\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    if (!this.graphInstance) {\n      return;\n    }\n\n    const result = this.graphInstance.evaluateGraph(dt / 1000);\n\n    // Apply transform animation\n    //-------------------------------------------------------------------------\n    const animatedTransforms = this.graphInstance.skeleton.animatedTransforms;\n\n    for (let i = 0; i < animatedTransforms.length; i++) {\n      const position = result.pose.parentSpaceTransforms[i].position;\n      const rotation = result.pose.parentSpaceTransforms[i].rotation;\n      const scale = result.pose.parentSpaceTransforms[i].scale;\n      const euler = result.pose.parentSpaceTransforms[i].euler;\n\n      animatedTransforms[i].setPosition(position.x, position.y, position.z);\n      animatedTransforms[i].setScale(scale.x, scale.y, scale.z);\n\n      if (this.graphInstance.skeleton.useEuler) {\n        animatedTransforms[i].setRotation(euler.x, euler.y, euler.z);\n      } else {\n        animatedTransforms[i].setQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n      }\n    }\n\n    // Apply property animation\n    //-------------------------------------------------------------------------\n    const floatAnimatedObjects = this.graphInstance.skeleton.floatAnimatedObjects;\n\n    for (let i = 0; i < floatAnimatedObjects.length; i++) {\n      const animatedObject = floatAnimatedObjects[i];\n      const property = animatedObject.propertyName;\n\n      animatedObject.directTarget[property] = result.pose.floatPropertyValues[i];\n\n      if (animatedObject.target instanceof Component) {\n        animatedObject.target.onApplyAnimationProperties();\n      }\n    }\n\n    const colorAnimatedObjects = this.graphInstance.skeleton.colorAnimatedObjects;\n\n    for (let i = 0; i < colorAnimatedObjects.length; i++) {\n      const animatedObject = colorAnimatedObjects[i];\n      const property = animatedObject.propertyName;\n\n      animatedObject.directTarget[property] = result.pose.colorPropertyValues[i];\n\n      if (animatedObject.target instanceof Component) {\n        animatedObject.target.onApplyAnimationProperties();\n      }\n    }\n  }\n\n  override fromData (data: spec.AnimatorData): void {\n    this.graphAsset = this.engine.findObject<AnimationGraphAsset>(data.graphAsset);\n  }\n}\n","import { serialize } from '../decorators';\nimport type { Material } from '../material';\nimport type { Renderer } from '../render';\nimport { Component } from './component';\n\n/**\n * 所有渲染组件的基类\n * @since 2.0.0\n */\nexport class RendererComponent extends Component {\n\n  @serialize()\n  materials: Material[] = [];\n\n  @serialize()\n  protected _priority = 0;\n\n  get priority (): number {\n    return this._priority;\n  }\n  set priority (value: number) {\n    this._priority = value;\n  }\n\n  get material (): Material {\n    return this.materials[0];\n  }\n  set material (material: Material) {\n    if (this.materials.length === 0) {\n      this.materials.push(material);\n    } else {\n      this.materials[0] = material;\n    }\n  }\n\n  render (renderer: Renderer): void { }\n\n  override onEnable (): void {\n    this.item.composition?.renderFrame.addMeshToDefaultRenderPass(this);\n  }\n\n  override onDisable (): void {\n    this.item.composition?.renderFrame.removeMeshFromDefaultRenderPass(this);\n  }\n}\n","import { Vector3 } from './vector3';\nimport { isEqual } from './utils';\nimport { Quaternion } from './quaternion';\n/**\n * 四阶矩阵（列优先矩阵）\n */\nexport class Matrix4 {\n    static IDENTITY = new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    static ZERO = new Matrix4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    static tempVec0 = new Vector3();\n    static tempVec1 = new Vector3();\n    static tempVec2 = new Vector3();\n    static tempMat0 = new Matrix4();\n    /**\n     * 矩阵值数组\n     */\n    elements;\n    /**\n     * 构造函数，初始值为单位矩阵\n     * @param [m11=1] - 第 1 行，第 1 列\n     * @param [m21=0] - 第 2 行，第 1 列\n     * @param [m31=0] - 第 3 行，第 1 列\n     * @param [m41=0] - 第 4 行，第 1 列\n     * @param [m12=0] - 第 1 行，第 2 列\n     * @param [m22=1] - 第 2 行，第 2 列\n     * @param [m32=0] - 第 3 行，第 2 列\n     * @param [m42=0] - 第 4 行，第 2 列\n     * @param [m13=0] - 第 1 行，第 3 列\n     * @param [m23=0] - 第 2 行，第 3 列\n     * @param [m33=1] - 第 3 行，第 3 列\n     * @param [m43=0] - 第 4 行，第 3 列\n     * @param [m14=0] - 第 1 行，第 4 列\n     * @param [m24=0] - 第 2 行，第 4 列\n     * @param [m34=0] - 第 3 行，第 4 列\n     * @param [m44=1] - 第 4 行，第 4 列\n     */\n    constructor(m11 = 1, m21 = 0, m31 = 0, m41 = 0, m12 = 0, m22 = 1, m32 = 0, m42 = 0, m13 = 0, m23 = 0, m33 = 1, m43 = 0, m14 = 0, m24 = 0, m34 = 0, m44 = 1) {\n        this.elements = [\n            m11, m21, m31, m41,\n            m12, m22, m32, m42,\n            m13, m23, m33, m43,\n            m14, m24, m34, m44,\n        ];\n    }\n    /**\n     * 设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m41 - 第 4 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m42 - 第 4 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m33 - 第 3 行，第 3 列\n     * @param m43 - 第 4 行，第 3 列\n     * @param m14 - 第 1 行，第 4 列\n     * @param m24 - 第 2 行，第 4 列\n     * @param m34 - 第 3 行，第 4 列\n     * @param m44 - 第 4 行，第 4 列\n     * @returns 矩阵\n     */\n    set(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44) {\n        const e = this.elements;\n        e[0] = m11;\n        e[1] = m21;\n        e[2] = m31;\n        e[3] = m41;\n        e[4] = m12;\n        e[5] = m22;\n        e[6] = m32;\n        e[7] = m42;\n        e[8] = m13;\n        e[9] = m23;\n        e[10] = m33;\n        e[11] = m43;\n        e[12] = m14;\n        e[13] = m24;\n        e[14] = m34;\n        e[15] = m44;\n        return this;\n    }\n    /**\n     * 通过行优先数据设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m14 - 第 1 行，第 4 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m24 - 第 2 行，第 4 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @param m34 - 第 3 行，第 4 列\n     * @param m41 - 第 4 行，第 1 列\n     * @param m42 - 第 4 行，第 2 列\n     * @param m43 - 第 4 行，第 3 列\n     * @param m44 - 第 4 行，第 4 列\n     * @returns 矩阵\n     */\n    setFromRowMajorData(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n        const e = this.elements;\n        e[0] = m11;\n        e[4] = m12;\n        e[8] = m13;\n        e[12] = m14;\n        e[1] = m21;\n        e[5] = m22;\n        e[9] = m23;\n        e[13] = m24;\n        e[2] = m31;\n        e[6] = m32;\n        e[10] = m33;\n        e[14] = m34;\n        e[3] = m41;\n        e[7] = m42;\n        e[11] = m43;\n        e[15] = m44;\n        return this;\n    }\n    /**\n     * 通过四个列向量设置矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @param c4 - 第四列\n     * @returns 矩阵\n     */\n    setFromColumnVectors(c1, c2, c3, c4) {\n        return this.set(c1.x, c1.y, c1.z, c1.w, c2.x, c2.y, c2.z, c2.w, c3.x, c3.y, c3.z, c3.w, c4.x, c4.y, c4.z, c4.w);\n    }\n    /**\n     * 通过三维矩阵设置矩阵\n     * @param m - 三维矩阵\n     * @returns 设置结果\n     */\n    setFromMatrix3(m) {\n        const me = m.elements;\n        this.set(me[0], me[1], me[2], 0, me[3], me[4], me[5], 0, me[6], me[7], me[8], 0, 0, 0, 0, 1);\n        return this;\n    }\n    /**\n     * 通过数组设置矩阵\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    setFromArray(array, offset = 0) {\n        for (let i = 0; i < 16; i++) {\n            this.elements[i] = array[offset + i];\n        }\n        return this;\n    }\n    /**\n     * 通过缩放设置矩阵\n     * @param x - x 方向缩放\n     * @param y - y 方向缩放\n     * @param z - z 方向缩放\n     * @returns 缩放矩阵\n     */\n    setFromScale(x, y, z) {\n        return this.set(x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过平移设置矩阵\n     * @param x - x 方向平移\n     * @param y - y 方向平移\n     * @param z - z 方向平移\n     * @returns 平移矩阵\n     */\n    setFromTranslation(x, y, z) {\n        return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1);\n    }\n    /**\n     * 通过 x 轴旋转角度设置矩阵\n     * @param theta - x 轴旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationX(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        return this.set(1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过 y 轴旋转角度设置矩阵\n     * @param theta - y 轴旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationY(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        return this.set(c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过 z 轴旋转角度设置矩阵\n     * @param theta - z 轴旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationZ(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        return this.set(c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 根据三维旋转轴与弧度设置矩阵\n     * @param axis - 三维旋转轴\n     * @param angle - 旋转弧度\n     * @returns 矩阵\n     */\n    setFromRotationAxis(axis, angle) {\n        // Based on http://www.gamedev.net/reference/articles/article1199.asp\n        const v = Matrix4.tempVec0;\n        v.copyFrom(axis).normalize();\n        const c = Math.cos(angle);\n        const s = Math.sin(angle);\n        const t = 1 - c;\n        const { x, y, z } = v;\n        const tx = t * x;\n        const ty = t * y;\n        return this.set(tx * x + c, tx * y + s * z, tx * z - s * y, 0, tx * y - s * z, ty * y + c, ty * z + s * x, 0, tx * z + s * y, ty * z - s * x, t * z * z + c, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过欧拉角设置矩阵\n     * @param euler - 欧拉角\n     * @returns 矩阵\n     */\n    setFromEuler(euler) {\n        euler.toMatrix4(this);\n        return this;\n    }\n    /**\n     * 通过四元数设置矩阵\n     * @param quat - 四元数\n     * @returns 矩阵\n     */\n    setFromQuaternion(quat) {\n        return this.compose(Vector3.ZERO, quat, Vector3.ONE);\n    }\n    /**\n     * 通过倾斜参数设置矩阵\n     * @param x - x 方向倾斜分量\n     * @param y - y 方向倾斜分量\n     * @param z - z 方向倾斜分量\n     * @returns 倾斜矩阵\n     */\n    setFromShear(x, y, z) {\n        return this.set(1, x, x, 0, y, 1, y, 0, z, z, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 通过基轴设置矩阵\n     * @param xAxis - x 轴\n     * @param yAxis - y 轴\n     * @param zAxis - z 轴\n     * @returns 倾斜矩阵\n     */\n    setFromBasis(xAxis, yAxis, zAxis) {\n        return this.set(xAxis.x, xAxis.y, xAxis.z, 0, yAxis.x, yAxis.y, yAxis.z, 0, zAxis.x, zAxis.y, zAxis.z, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 矩阵清零\n     * @returns 零矩阵\n     */\n    setZero() {\n        for (let i = 0; i < 16; i++) {\n            this.elements[i] = 0;\n        }\n        return this;\n    }\n    /**\n     * 矩阵单位化\n     * @returns 单位矩阵\n     */\n    identity() {\n        return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 单位阵判断\n     * @returns 判断结果\n     */\n    isIdentity() {\n        const e = this.elements;\n        return e[0] === 1 && e[4] === 0 && e[8] === 0 && e[12] === 0\n            && e[1] === 0 && e[5] === 1 && e[9] === 0 && e[13] === 0\n            && e[2] === 0 && e[6] === 0 && e[10] === 1 && e[14] === 0\n            && e[3] === 0 && e[7] === 0 && e[11] === 0 && e[15] === 1;\n    }\n    /**\n     * 矩阵克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        const e = this.elements;\n        return new Matrix4(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    }\n    /**\n     * 矩阵复制\n     * @param m - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(m) {\n        this.elements = [...m.elements];\n        return this;\n    }\n    /**\n     * 得到列向量\n     * @param i - 列向量索引，从 0 开始\n     * @param v\n     * @returns 矩阵\n     */\n    getColumnVector(i, v) {\n        return v.set(this.elements[i * 4], this.elements[i * 4 + 1], this.elements[i * 4 + 2], this.elements[i * 4 + 3]);\n    }\n    /**\n     * 设置相机矩阵\n     * @param eye - 相机位置\n     * @param target - 目标位置\n     * @param up - 相机方向\n     * @returns 矩阵\n     */\n    lookAt(eye, target, up) {\n        const vX = Matrix4.tempVec0;\n        const vY = Matrix4.tempVec1;\n        const vZ = Matrix4.tempVec2;\n        vZ.subtractVectors(eye, target);\n        vZ.normalize();\n        vX.crossVectors(up, vZ);\n        vX.normalize();\n        vY.crossVectors(vZ, vX);\n        const te = this.elements;\n        te[0] = vX.x;\n        te[1] = vY.x;\n        te[2] = vZ.x;\n        te[3] = 0;\n        te[4] = vX.y;\n        te[5] = vY.y;\n        te[6] = vZ.y;\n        te[7] = 0;\n        te[8] = vX.z;\n        te[9] = vY.z;\n        te[10] = vZ.z;\n        te[11] = 0;\n        te[12] = -vX.dot(eye);\n        te[13] = -vY.dot(eye);\n        te[14] = -vZ.dot(eye);\n        te[15] = 1;\n        return this;\n    }\n    /**\n     * 矩阵乘比例后相加\n     * @param right - 矩阵\n     * @param s - 比例\n     * @returns 相加结果\n     */\n    addScaledMatrix(right, s) {\n        const te = this.elements;\n        const re = right.elements;\n        for (let i = 0; i < 16; i++) {\n            te[i] += re[i] * s;\n        }\n        return this;\n    }\n    /**\n     * 矩阵右乘\n     * @param right - 右侧矩阵或数值\n     * @returns 右乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            for (let i = 0; i < 16; i++) {\n                this.elements[i] *= right;\n            }\n            return this;\n        }\n        else {\n            return this.multiplyMatrices(this, right);\n        }\n    }\n    /**\n     * 矩阵左乘\n     * @param left - 左侧矩阵\n     * @returns 左乘结果\n     */\n    premultiply(left) {\n        return this.multiplyMatrices(left, this);\n    }\n    /**\n     * 矩阵相乘\n     * @param left - 矩阵\n     * @param right - 矩阵\n     * @returns 相乘结果\n     */\n    multiplyMatrices(left, right) {\n        const ae = left.elements;\n        const be = right.elements;\n        const te = this.elements;\n        const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n        const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n        const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n        const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n        const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n        const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n        const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n        const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n        te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n        te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n        te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n        te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n        te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n        te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n        te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n        te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n        te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n        te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n        te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n        te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n        te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n        te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n        te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n        te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n        return this;\n    }\n    /**\n     * 矩阵缩放\n     * @param s - 缩放比例\n     * @returns 缩放结果\n     */\n    multiplyScalar(s) {\n        const e = this.elements;\n        e[0] *= s;\n        e[4] *= s;\n        e[8] *= s;\n        e[12] *= s;\n        e[1] *= s;\n        e[5] *= s;\n        e[9] *= s;\n        e[13] *= s;\n        e[2] *= s;\n        e[6] *= s;\n        e[10] *= s;\n        e[14] *= s;\n        e[3] *= s;\n        e[7] *= s;\n        e[11] *= s;\n        e[15] *= s;\n        return this;\n    }\n    /**\n     * 矩阵求行列式值\n     * @returns 行列式值\n     */\n    determinant() {\n        const e = this.elements;\n        const m11 = e[0], m12 = e[4], m13 = e[8], m14 = e[12];\n        const m21 = e[1], m22 = e[5], m23 = e[9], m24 = e[13];\n        const m31 = e[2], m32 = e[6], m33 = e[10], m34 = e[14];\n        const m41 = e[3], m42 = e[7], m43 = e[11], m44 = e[15];\n        return (m41 * (+m14 * m23 * m32\n            - m13 * m24 * m32\n            - m14 * m22 * m33\n            + m12 * m24 * m33\n            + m13 * m22 * m34\n            - m12 * m23 * m34) +\n            m42 * (+m11 * m23 * m34\n                - m11 * m24 * m33\n                + m14 * m21 * m33\n                - m13 * m21 * m34\n                + m13 * m24 * m31\n                - m14 * m23 * m31) +\n            m43 * (+m11 * m24 * m32\n                - m11 * m22 * m34\n                - m14 * m21 * m32\n                + m12 * m21 * m34\n                + m14 * m22 * m31\n                - m12 * m24 * m31) +\n            m44 * (-m13 * m22 * m31\n                - m11 * m23 * m32\n                + m11 * m22 * m33\n                + m13 * m21 * m32\n                - m12 * m21 * m33\n                + m12 * m23 * m31));\n    }\n    /**\n     * 矩阵转置\n     * @returns 转置结果\n     */\n    transpose() {\n        const e = this.elements;\n        let t;\n        t = e[1];\n        e[1] = e[4];\n        e[4] = t;\n        t = e[2];\n        e[2] = e[8];\n        e[8] = t;\n        t = e[3];\n        e[3] = e[12];\n        e[12] = t;\n        //\n        t = e[6];\n        e[6] = e[9];\n        e[9] = t;\n        t = e[7];\n        e[7] = e[13];\n        e[13] = t;\n        t = e[11];\n        e[11] = e[14];\n        e[14] = t;\n        return this;\n    }\n    /**\n     * 矩阵求逆\n     * @returns 逆矩阵\n     */\n    invert() {\n        // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n        const e = this.elements;\n        const m11 = e[0], m21 = e[1], m31 = e[2], m41 = e[3];\n        const m12 = e[4], m22 = e[5], m32 = e[6], m42 = e[7];\n        const m13 = e[8], m23 = e[9], m33 = e[10], m43 = e[11];\n        const m14 = e[12], m24 = e[13], m34 = e[14], m44 = e[15];\n        const t11 = m23 * m34 * m42 - m24 * m33 * m42 + m24 * m32 * m43 - m22 * m34 * m43 - m23 * m32 * m44 + m22 * m33 * m44;\n        const t12 = m14 * m33 * m42 - m13 * m34 * m42 - m14 * m32 * m43 + m12 * m34 * m43 + m13 * m32 * m44 - m12 * m33 * m44;\n        const t13 = m13 * m24 * m42 - m14 * m23 * m42 + m14 * m22 * m43 - m12 * m24 * m43 - m13 * m22 * m44 + m12 * m23 * m44;\n        const t14 = m14 * m23 * m32 - m13 * m24 * m32 - m14 * m22 * m33 + m12 * m24 * m33 + m13 * m22 * m34 - m12 * m23 * m34;\n        const det = m11 * t11 + m21 * t12 + m31 * t13 + m41 * t14;\n        if (det === 0) {\n            return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n        }\n        const detInv = 1 / det;\n        e[0] = t11 * detInv;\n        e[1] = (m24 * m33 * m41 - m23 * m34 * m41 - m24 * m31 * m43 + m21 * m34 * m43 + m23 * m31 * m44 - m21 * m33 * m44) * detInv;\n        e[2] = (m22 * m34 * m41 - m24 * m32 * m41 + m24 * m31 * m42 - m21 * m34 * m42 - m22 * m31 * m44 + m21 * m32 * m44) * detInv;\n        e[3] = (m23 * m32 * m41 - m22 * m33 * m41 - m23 * m31 * m42 + m21 * m33 * m42 + m22 * m31 * m43 - m21 * m32 * m43) * detInv;\n        e[4] = t12 * detInv;\n        e[5] = (m13 * m34 * m41 - m14 * m33 * m41 + m14 * m31 * m43 - m11 * m34 * m43 - m13 * m31 * m44 + m11 * m33 * m44) * detInv;\n        e[6] = (m14 * m32 * m41 - m12 * m34 * m41 - m14 * m31 * m42 + m11 * m34 * m42 + m12 * m31 * m44 - m11 * m32 * m44) * detInv;\n        e[7] = (m12 * m33 * m41 - m13 * m32 * m41 + m13 * m31 * m42 - m11 * m33 * m42 - m12 * m31 * m43 + m11 * m32 * m43) * detInv;\n        e[8] = t13 * detInv;\n        e[9] = (m14 * m23 * m41 - m13 * m24 * m41 - m14 * m21 * m43 + m11 * m24 * m43 + m13 * m21 * m44 - m11 * m23 * m44) * detInv;\n        e[10] = (m12 * m24 * m41 - m14 * m22 * m41 + m14 * m21 * m42 - m11 * m24 * m42 - m12 * m21 * m44 + m11 * m22 * m44) * detInv;\n        e[11] = (m13 * m22 * m41 - m12 * m23 * m41 - m13 * m21 * m42 + m11 * m23 * m42 + m12 * m21 * m43 - m11 * m22 * m43) * detInv;\n        e[12] = t14 * detInv;\n        e[13] = (m13 * m24 * m31 - m14 * m23 * m31 + m14 * m21 * m33 - m11 * m24 * m33 - m13 * m21 * m34 + m11 * m23 * m34) * detInv;\n        e[14] = (m14 * m22 * m31 - m12 * m24 * m31 - m14 * m21 * m32 + m11 * m24 * m32 + m12 * m21 * m34 - m11 * m22 * m34) * detInv;\n        e[15] = (m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) * detInv;\n        return this;\n    }\n    /**\n     * 提取基轴\n     * @param xAxis - 提取的 x 轴\n     * @param yAxis - 提取的 y 轴\n     * @param zAxis - 提取的 z 轴\n     * @returns\n     */\n    extractBasis(xAxis, yAxis, zAxis) {\n        const te = this.elements;\n        xAxis.set(te[0], te[1], te[2]);\n        yAxis.set(te[4], te[5], te[6]);\n        zAxis.set(te[8], te[9], te[10]);\n        return this;\n    }\n    /**\n     * 根据基础信息组装矩阵\n     * @param translation - 位置信息\n     * @param rotation - 旋转信息\n     * @param scale - 缩放信息\n     * @param [anchor] - 锚点信息\n     * @returns 矩阵\n     */\n    compose(translation, rotation, scale, anchor = Vector3.ZERO) {\n        const te = this.elements;\n        const { x, y, z, w } = rotation;\n        const l = -anchor.x;\n        const m = -anchor.y;\n        const n = -anchor.z;\n        const x2 = x + x;\n        const y2 = y + y;\n        const z2 = z + z;\n        const xx = x * x2;\n        const xy = x * y2;\n        const xz = x * z2;\n        const yy = y * y2;\n        const yz = y * z2;\n        const zz = z * z2;\n        const wx = w * x2;\n        const wy = w * y2;\n        const wz = w * z2;\n        const { x: sx, y: sy, z: sz } = scale;\n        te[0] = (1 - (yy + zz)) * sx;\n        te[1] = (xy + wz) * sx;\n        te[2] = (xz - wy) * sx;\n        te[3] = 0;\n        te[4] = (xy - wz) * sy;\n        te[5] = (1 - (xx + zz)) * sy;\n        te[6] = (yz + wx) * sy;\n        te[7] = 0;\n        te[8] = (xz + wy) * sz;\n        te[9] = (yz - wx) * sz;\n        te[10] = (1 - (xx + yy)) * sz;\n        te[11] = 0;\n        te[12] = l * te[0] + m * te[4] + n * te[8] - l + translation.x;\n        te[13] = l * te[1] + m * te[5] + n * te[9] - m + translation.y;\n        te[14] = l * te[2] + m * te[6] + n * te[10] - n + translation.z;\n        return this;\n    }\n    /**\n     * 矩阵拆分为基础信息\n     * @param translation - 位置信息\n     * @param rotation - 旋转信息\n     * @param scale - 缩放信息\n     * @returns 矩阵\n     */\n    decompose(translation, rotation, scale) {\n        const v = Matrix4.tempVec0;\n        const te = this.elements;\n        let sx = v.set(te[0], te[1], te[2]).length();\n        const sy = v.set(te[4], te[5], te[6]).length();\n        const sz = v.set(te[8], te[9], te[10]).length();\n        // if determine is negative, we need to invert one scale\n        const det = this.determinant();\n        if (det < 0) {\n            sx = -sx;\n        }\n        translation.x = te[12];\n        translation.y = te[13];\n        translation.z = te[14];\n        // scale the rotation part\n        const m = Matrix4.tempMat0;\n        m.copyFrom(this);\n        const invSX = 1 / sx;\n        const invSY = 1 / sy;\n        const invSZ = 1 / sz;\n        m.elements[0] *= invSX;\n        m.elements[1] *= invSX;\n        m.elements[2] *= invSX;\n        m.elements[4] *= invSY;\n        m.elements[5] *= invSY;\n        m.elements[6] *= invSY;\n        m.elements[8] *= invSZ;\n        m.elements[9] *= invSZ;\n        m.elements[10] *= invSZ;\n        rotation.setFromRotationMatrix(m);\n        scale.x = sx;\n        scale.y = sy;\n        scale.z = sz;\n        return this;\n    }\n    getTranslation(translation) {\n        const te = this.elements;\n        return translation.set(te[12], te[13], te[14]);\n    }\n    getScale(scale) {\n        const te = this.elements;\n        return scale.set(Math.hypot(te[0], te[1], te[2]), Math.hypot(te[4], te[5], te[6]), Math.hypot(te[8], te[9], te[10]));\n    }\n    /**\n     * 获得矩阵分解的结果\n     * @returns 分解的结果\n     */\n    getTransform() {\n        const translation = new Vector3();\n        const rotation = new Quaternion();\n        const scale = new Vector3();\n        this.decompose(translation, rotation, scale);\n        return { translation, rotation, scale };\n    }\n    /**\n     * 根据视窗信息设置正交相机投影矩阵\n     * @param left - 视窗左平面位置\n     * @param right - 视窗右平面位置\n     * @param top - 视窗上平面位置\n     * @param bottom - 视窗下平面位置\n     * @param near - 视窗近平面位置\n     * @param far - 视窗远平面位置\n     * @returns 矩阵\n     */\n    orthographic(left, right, top, bottom, near, far) {\n        let a = 1.0 / (right - left);\n        let b = 1.0 / (top - bottom);\n        let c = 1.0 / (far - near);\n        const tx = -(right + left) * a;\n        const ty = -(top + bottom) * b;\n        const tz = -(far + near) * c;\n        a *= 2.0;\n        b *= 2.0;\n        c *= -2.0;\n        const te = this.elements;\n        te[0] = a;\n        te[1] = 0.0;\n        te[2] = 0.0;\n        te[3] = 0.0;\n        //\n        te[4] = 0.0;\n        te[5] = b;\n        te[6] = 0.0;\n        te[7] = 0.0;\n        //\n        te[8] = 0.0;\n        te[9] = 0.0;\n        te[10] = c;\n        te[11] = 0.0;\n        //\n        te[12] = tx;\n        te[13] = ty;\n        te[14] = tz;\n        te[15] = 1.0;\n        return this;\n    }\n    /**\n     * 通过透视相机基础参数设置投影矩阵\n     * @param fov - 视角(弧度)\n     * @param aspect - 视窗比例\n     * @param near - 近平面\n     * @param far - 远平面\n     * @param [reverse] - 视锥体长宽反转(3D这里反了？)\n     * @returns 投影矩阵\n     */\n    perspective(fov, aspect, near, far, reverse) {\n        const f = 1.0 / Math.tan(fov * 0.5);\n        const nf = 1 / (near - far);\n        const te = this.elements;\n        te[0] = reverse ? f : f / aspect;\n        te[1] = 0;\n        te[2] = 0;\n        te[3] = 0;\n        //\n        te[4] = 0;\n        te[5] = reverse ? f * aspect : f;\n        te[6] = 0;\n        te[7] = 0;\n        //\n        te[8] = 0;\n        te[9] = 0;\n        te[10] = (far + near) * nf;\n        te[11] = -1;\n        //\n        te[12] = 0;\n        te[13] = 0;\n        te[14] = 2 * far * near * nf;\n        te[15] = 0;\n        if (far === null || far === Infinity) {\n            te[10] = -1;\n            te[14] = -2 * near;\n        }\n        return this;\n    }\n    /**\n     * 对点进行投影变换\n     * @param v - 输入点\n     * @param [out] - 输出点，如果没有就覆盖输入的数据\n     * @returns 投影后的点\n     */\n    projectPoint(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n        res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n        res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n        const w = e[3] * x + e[7] * y + e[11] * z + e[15];\n        return res.multiply(1 / w);\n    }\n    /**\n     * 对点进行矩阵变换\n     * @param v - 输入点\n     * @param [out] - 输出点，如果没有就覆盖输入的数据\n     * @returns 变换后的点\n     */\n    transformPoint(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n        res.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n        res.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n        return res;\n    }\n    /**\n     * 对法向量进行矩阵变换\n     * @param v - 输入法向量\n     * @param [out] - 输出法向量，如果没有就覆盖输入的数据\n     * @returns 变换后的法向量\n     */\n    transformNormal(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z;\n        res.y = e[1] * x + e[5] * y + e[9] * z;\n        res.z = e[2] * x + e[6] * y + e[10] * z;\n        return res.normalize();\n    }\n    /**\n     * 对四维向量进行矩阵变换\n     * @param v - 输入向量\n     * @param [out] - 输出向量，如果没有就覆盖输入的数据\n     * @returns 变换后向量\n     */\n    transformVector4(v, out) {\n        const { x, y, z, w } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[4] * y + e[8] * z + e[12] * w;\n        res.y = e[1] * x + e[5] * y + e[9] * z + e[13] * w;\n        res.z = e[2] * x + e[6] * y + e[10] * z + e[14] * w;\n        res.w = e[3] * x + e[7] * y + e[11] * z + e[15] * w;\n        return res;\n    }\n    /**\n     * 矩阵判等\n     * @param matrix - 矩阵\n     * @returns 判等结果\n     */\n    equals(matrix) {\n        const te = this.elements;\n        const me = matrix.elements;\n        for (let i = 0; i < 16; i++) {\n            if (!isEqual(te[i], me[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * 矩阵转数组\n     * @returns\n     */\n    toArray() {\n        return [...this.elements];\n    }\n    fill(array, offset = 0) {\n        const te = this.elements;\n        array[offset] = te[0];\n        array[offset + 1] = te[1];\n        array[offset + 2] = te[2];\n        array[offset + 3] = te[3];\n        array[offset + 4] = te[4];\n        array[offset + 5] = te[5];\n        array[offset + 6] = te[6];\n        array[offset + 7] = te[7];\n        array[offset + 8] = te[8];\n        array[offset + 9] = te[9];\n        array[offset + 10] = te[10];\n        array[offset + 11] = te[11];\n        array[offset + 12] = te[12];\n        array[offset + 13] = te[13];\n        array[offset + 14] = te[14];\n        array[offset + 15] = te[15];\n    }\n    /**\n     * 创建单位阵\n     * @returns 单位矩阵\n     */\n    static fromIdentity() {\n        return new Matrix4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    /**\n     * 创建相机矩阵\n     * @param eye - 相机位置\n     * @param target - 目标位置\n     * @param up - 相机方向\n     * @returns 矩阵\n     */\n    static fromLookAt(eye, target, up) {\n        return new Matrix4().lookAt(eye, target, up);\n    }\n    /**\n     * 创建投影矩阵\n     * @param fov - 视角\n     * @param aspect - 视窗比例\n     * @param near - 近平面\n     * @param far - 远平面\n     * @param [reverse] - 视锥体长宽反转\n     * @returns 投影矩阵\n     */\n    static fromPerspective(fov, aspect, near, far, reverse) {\n        return new Matrix4().perspective(fov, aspect, near, far, reverse);\n    }\n    /**\n     * 通过四个列向量创建矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @param c4 - 第四列\n     * @returns\n     */\n    static fromColumnVectors(c1, c2, c3, c4) {\n        return new Matrix4().setFromColumnVectors(c1, c2, c3, c4);\n    }\n    /**\n     * 通过三阶矩阵创建矩阵\n     * @param m - 三阶矩阵\n     * @returns 创建的矩阵\n     */\n    static fromMatrix3(m) {\n        return new Matrix4().setFromMatrix3(m);\n    }\n    /**\n     * 通过数组创建矩阵\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    static fromArray(array, offset = 0) {\n        return new Matrix4().setFromArray(array, offset);\n    }\n    /**\n     * 通过缩放创建矩阵\n     * @param x - x 缩放\n     * @param y - y 缩放\n     * @param z - z 缩放\n     * @returns 缩放结果\n     */\n    static fromScale(x, y, z) {\n        return new Matrix4().setFromScale(x, y, z);\n    }\n    /**\n     * 通过平移创建矩阵\n     * @param x - x 平移\n     * @param y - y 平移\n     * @param z - z 平移\n     * @returns 平移结果\n     */\n    static fromTranslation(x, y, z) {\n        return new Matrix4().setFromTranslation(x, y, z);\n    }\n    /**\n     * 通过 x 轴旋转创建矩阵\n     * @param theta - x 轴旋转弧度\n     * @returns 矩阵\n     */\n    static fromRotationX(theta) {\n        return new Matrix4().setFromRotationX(theta);\n    }\n    /**\n     * 通过 y 轴旋转创建矩阵\n     * @param theta - y 轴旋转弧度\n     * @returns 矩阵\n     */\n    static fromRotationY(theta) {\n        return new Matrix4().setFromRotationY(theta);\n    }\n    /**\n     * 通过 z 轴旋转创建矩阵\n     * @param theta - z 轴旋转弧度\n     * @returns\n     */\n    static fromRotationZ(theta) {\n        return new Matrix4().setFromRotationZ(theta);\n    }\n    /**\n     * 通过旋转轴与旋转弧度创建矩阵\n     * @param axis - 旋转轴\n     * @param angle - 旋转弧度\n     * @returns\n     */\n    static fromRotationAxis(axis, angle) {\n        return new Matrix4().setFromRotationAxis(axis, angle);\n    }\n    /**\n     * 通过欧拉角创建矩阵\n     * @param euler - 欧拉角\n     * @returns\n     */\n    static fromEuler(euler) {\n        return new Matrix4().setFromEuler(euler);\n    }\n    /**\n     * 通过四元数创建矩阵\n     * @param quat - 四元数\n     * @returns\n     */\n    static fromQuaternion(quat) {\n        return new Matrix4().setFromQuaternion(quat);\n    }\n    /**\n     * 通过倾斜创建矩阵\n     * @param x - x 方向倾斜分量\n     * @param y - y 方向倾斜分量\n     * @param z - z 方向倾斜分量\n     * @returns 倾斜矩阵\n     */\n    static fromShear(x, y, z) {\n        return new Matrix4().setFromShear(x, y, z);\n    }\n    /**\n     * 通过基轴创建矩阵\n     * @param xAxis - x 轴\n     * @param yAxis - y 轴\n     * @param zAxis - z 轴\n     * @returns\n     */\n    static fromBasis(xAxis, yAxis, zAxis) {\n        return new Matrix4().setFromBasis(xAxis, yAxis, zAxis);\n    }\n    /**\n     * 通过行优先数据设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m14 - 第 1 行，第 4 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m24 - 第 2 行，第 4 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @param m34 - 第 3 行，第 4 列\n     * @param m41 - 第 4 行，第 1 列\n     * @param m42 - 第 4 行，第 2 列\n     * @param m43 - 第 4 行，第 3 列\n     * @param m44 - 第 4 行，第 4 列\n     * @returns\n     */\n    static fromRowMajorData(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44) {\n        return new Matrix4(m11, m21, m31, m41, m12, m22, m32, m42, m13, m23, m33, m43, m14, m24, m34, m44);\n    }\n}\n","import { Quaternion } from './quaternion';\nimport { Matrix4 } from './matrix4';\nimport { RAD2DEG, clamp } from './utils';\nimport { DEG2RAD } from './utils';\n/**\n * 欧拉角顺序\n */\nexport var EulerOrder;\n(function (EulerOrder) {\n    EulerOrder[EulerOrder[\"XYZ\"] = 0] = \"XYZ\";\n    EulerOrder[EulerOrder[\"XZY\"] = 1] = \"XZY\";\n    EulerOrder[EulerOrder[\"YXZ\"] = 2] = \"YXZ\";\n    EulerOrder[EulerOrder[\"YZX\"] = 3] = \"YZX\";\n    EulerOrder[EulerOrder[\"ZXY\"] = 4] = \"ZXY\";\n    EulerOrder[EulerOrder[\"ZYX\"] = 5] = \"ZYX\";\n})(EulerOrder || (EulerOrder = {}));\n/**\n * 欧拉角\n */\nexport class Euler {\n    x;\n    y;\n    z;\n    order;\n    static DEFAULT_ORDER = EulerOrder.ZYX;\n    static tempQuat0 = new Quaternion();\n    static tempMat0 = new Matrix4();\n    /**\n     * 构造函数，传入值为 x, y, z 方向分量以及欧拉角顺序\n     * @param [x=0] - x 方向分量\n     * @param [y=0] - y 方向分量\n     * @param [z=0] - z 方向分量\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     */\n    constructor(x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.order = order;\n    }\n    /**\n     * 设置欧拉角\n     * @param x - x 方向分量\n     * @param y - y 方向分量\n     * @param z - z 方向分量\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    set(x, y, z, order = this.order) {\n        this.x = x;\n        this.y = y;\n        this.z = z;\n        this.order = order;\n        return this;\n    }\n    setZero(order = this.order) {\n        return this.set(0, 0, 0, order);\n    }\n    /**\n     * 通过矩阵设置欧拉角\n     * @param m - 矩阵\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromRotationMatrix4(m, order = this.order) {\n        const te = m.elements;\n        const m11 = te[0];\n        const m12 = te[4];\n        const m13 = te[8];\n        const m21 = te[1];\n        const m22 = te[5];\n        const m23 = te[9];\n        const m31 = te[2];\n        const m32 = te[6];\n        const m33 = te[10];\n        switch (order) {\n            case EulerOrder.XYZ:\n                this.y = Math.asin(clamp(m13, -1, 1));\n                if (Math.abs(m13) < 0.9999999) {\n                    this.x = Math.atan2(-m23, m33);\n                    this.z = Math.atan2(-m12, m11);\n                }\n                else {\n                    this.x = Math.atan2(m32, m22);\n                    this.z = 0;\n                }\n                break;\n            case EulerOrder.YXZ:\n                this.x = Math.asin(-clamp(m23, -1, 1));\n                if (Math.abs(m23) < 0.9999999) {\n                    this.y = Math.atan2(m13, m33);\n                    this.z = Math.atan2(m21, m22);\n                }\n                else {\n                    this.y = Math.atan2(-m31, m11);\n                    this.z = 0;\n                }\n                break;\n            case EulerOrder.ZXY:\n                this.x = Math.asin(clamp(m32, -1, 1));\n                if (Math.abs(m32) < 0.9999999) {\n                    this.y = Math.atan2(-m31, m33);\n                    this.z = Math.atan2(-m12, m22);\n                }\n                else {\n                    this.y = 0;\n                    this.z = Math.atan2(m21, m11);\n                }\n                break;\n            case EulerOrder.ZYX:\n                this.y = Math.asin(-clamp(m31, -1, 1));\n                if (Math.abs(m31) < 0.9999999) {\n                    this.x = Math.atan2(m32, m33);\n                    this.z = Math.atan2(m21, m11);\n                }\n                else {\n                    this.x = 0;\n                    this.z = Math.atan2(-m12, m22);\n                }\n                break;\n            case EulerOrder.YZX:\n                this.z = Math.asin(clamp(m21, -1, 1));\n                if (Math.abs(m21) < 0.9999999) {\n                    this.x = Math.atan2(-m23, m22);\n                    this.y = Math.atan2(-m31, m11);\n                }\n                else {\n                    this.x = 0;\n                    this.y = Math.atan2(m13, m33);\n                }\n                break;\n            case EulerOrder.XZY:\n                this.z = Math.asin(-clamp(m12, -1, 1));\n                if (Math.abs(m12) < 0.9999999) {\n                    this.x = Math.atan2(m32, m22);\n                    this.y = Math.atan2(m13, m11);\n                }\n                else {\n                    this.x = Math.atan2(-m23, m33);\n                    this.y = 0;\n                }\n                break;\n            default:\n                console.error('setFromRotationMatrix: unknown order: ' + order);\n        }\n        this.x *= RAD2DEG;\n        this.y *= RAD2DEG;\n        this.z *= RAD2DEG;\n        this.order = order;\n        return this;\n    }\n    /**\n     * 通过四元数设置欧拉角\n     * @param quat - 四元数\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromQuaternion(quat, order = this.order) {\n        const matrix = Euler.tempMat0;\n        matrix.setFromQuaternion(quat);\n        return this.setFromRotationMatrix4(matrix, order);\n    }\n    /**\n     * 通过三维向量设置欧拉角\n     * @param v - 三维向量\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromVector3(v, order = this.order) {\n        return this.set(v.x, v.y, v.z, order);\n    }\n    /**\n     * 通过数组设置欧拉角\n     * @param array - 数组\n     * @param [offset=0] - 偏移\n     * @param [order] - 欧拉角顺序\n     * @returns\n     */\n    setFromArray(array, offset = 0, order = this.order) {\n        this.x = array[offset] ?? 0;\n        this.y = array[offset + 1] ?? 0;\n        this.z = array[offset + 2] ?? 0;\n        this.order = array[offset + 3] ?? order;\n        return this;\n    }\n    /**\n     * 克隆欧拉角\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Euler(this.x, this.y, this.z, this.order);\n    }\n    /**\n     * 复制欧拉角\n     * @param euler - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(euler) {\n        this.x = euler.x;\n        this.y = euler.y;\n        this.z = euler.z;\n        this.order = euler.order;\n        return this;\n    }\n    add(euler) {\n        if (this.order != euler.order) {\n            console.error('add euler with different order');\n            return this;\n        }\n        this.x += euler.x;\n        this.y += euler.y;\n        this.z += euler.z;\n        return this;\n    }\n    addEulers(left, right) {\n        if (left.order != right.order) {\n            console.error('add euler with different order');\n            return this;\n        }\n        this.x = left.x + right.x;\n        this.y = left.y + right.y;\n        this.z = left.z + right.z;\n        this.order = left.order;\n        return this;\n    }\n    negate() {\n        this.x = -this.x;\n        this.y = -this.y;\n        this.z = -this.z;\n        return this;\n    }\n    /**\n     * 修改欧拉角顺序\n     * @param newOrder - 欧拉角顺序\n     * @returns 修改结果\n     */\n    reorder(newOrder) {\n        const quaternion = new Quaternion();\n        quaternion.setFromEuler(this);\n        return this.setFromQuaternion(quaternion, newOrder);\n    }\n    /**\n     * 通过四元数旋转向量\n     * @param v - 待旋转向量\n     * @param out - 旋转结果，如果没有传入直接覆盖输入值\n     * @returns\n     */\n    rotateVector3(v, out) {\n        const q = Euler.tempQuat0;\n        return q.setFromEuler(this).rotateVector3(v, out);\n    }\n    /**\n     * 欧拉角相等判断\n     * @param euler - 欧拉角\n     * @returns 判断结果\n     */\n    equals(euler) {\n        return euler.x === this.x\n            && euler.y === this.y\n            && euler.z === this.z\n            && euler.order === this.order;\n    }\n    /**\n     * 欧拉角保存于三维向量\n     * @param vec - 目标保存对象\n     * @returns 保存结果\n     */\n    toVector3(vec) {\n        return vec.set(this.x, this.y, this.z);\n    }\n    /**\n     * 欧拉角转数组\n     * @returns 保存结果\n     */\n    toArray() {\n        return [this.x, this.y, this.z];\n    }\n    /**\n     * 欧拉角转四元数\n     * @param quat - 目标四元数\n     * @returns 目标四元数\n     */\n    toQuaternion(quat) {\n        const { x, y, z, order } = this;\n        const c1 = Math.cos(x * DEG2RAD * 0.5);\n        const c2 = Math.cos(y * DEG2RAD * 0.5);\n        const c3 = Math.cos(z * DEG2RAD * 0.5);\n        const s1 = Math.sin(x * DEG2RAD * 0.5);\n        const s2 = Math.sin(y * DEG2RAD * 0.5);\n        const s3 = Math.sin(z * DEG2RAD * 0.5);\n        switch (order) {\n            case EulerOrder.XYZ:\n                quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n                break;\n            case EulerOrder.YXZ:\n                quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n                break;\n            case EulerOrder.ZXY:\n                quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n                break;\n            case EulerOrder.ZYX:\n                quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n                break;\n            case EulerOrder.YZX:\n                quat.set(s1 * c2 * c3 + c1 * s2 * s3, c1 * s2 * c3 + s1 * c2 * s3, c1 * c2 * s3 - s1 * s2 * c3, c1 * c2 * c3 - s1 * s2 * s3);\n                break;\n            case EulerOrder.XZY:\n                quat.set(s1 * c2 * c3 - c1 * s2 * s3, c1 * s2 * c3 - s1 * c2 * s3, c1 * c2 * s3 + s1 * s2 * c3, c1 * c2 * c3 + s1 * s2 * s3);\n                break;\n            default:\n                console.error('unknown euler order: ' + order);\n        }\n        return quat;\n    }\n    /**\n     * 欧拉角转矩阵\n     * @param mat - 目标矩阵\n     * @returns 返回目标矩阵\n     */\n    toMatrix4(mat) {\n        const me = mat.elements;\n        const { x, y, z, order } = this;\n        const cosX = Math.cos(x * DEG2RAD), sinX = Math.sin(x * DEG2RAD);\n        const cosY = Math.cos(y * DEG2RAD), sinY = Math.sin(y * DEG2RAD);\n        const cosZ = Math.cos(z * DEG2RAD), sinZ = Math.sin(z * DEG2RAD);\n        if (order === EulerOrder.XYZ) {\n            const cosXcosZ = cosX * cosZ;\n            const cosXsinZ = cosX * sinZ;\n            const sinXcosZ = sinX * cosZ;\n            const sinXsinZ = sinX * sinZ;\n            me[0] = cosY * cosZ;\n            me[4] = -cosY * sinZ;\n            me[8] = sinY;\n            me[1] = cosXsinZ + sinXcosZ * sinY;\n            me[5] = cosXcosZ - sinXsinZ * sinY;\n            me[9] = -sinX * cosY;\n            me[2] = sinXsinZ - cosXcosZ * sinY;\n            me[6] = sinXcosZ + cosXsinZ * sinY;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.YXZ) {\n            const cosYcosZ = cosY * cosZ;\n            const cosYsinZ = cosY * sinZ;\n            const sinYcosZ = sinY * cosZ;\n            const sinYsinZ = sinY * sinZ;\n            me[0] = cosYcosZ + sinYsinZ * sinX;\n            me[4] = sinYcosZ * sinX - cosYsinZ;\n            me[8] = cosX * sinY;\n            me[1] = cosX * sinZ;\n            me[5] = cosX * cosZ;\n            me[9] = -sinX;\n            me[2] = cosYsinZ * sinX - sinYcosZ;\n            me[6] = sinYsinZ + cosYcosZ * sinX;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.ZXY) {\n            const cosYcosZ = cosY * cosZ;\n            const cosYsinZ = cosY * sinZ;\n            const sinYcosZ = sinY * cosZ;\n            const sinYsinZ = sinY * sinZ;\n            me[0] = cosYcosZ - sinYsinZ * sinX;\n            me[4] = -cosX * sinZ;\n            me[8] = sinYcosZ + cosYsinZ * sinX;\n            me[1] = cosYsinZ + sinYcosZ * sinX;\n            me[5] = cosX * cosZ;\n            me[9] = sinYsinZ - cosYcosZ * sinX;\n            me[2] = -cosX * sinY;\n            me[6] = sinX;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.ZYX) {\n            const cosXcosZ = cosX * cosZ;\n            const cosXsinZ = cosX * sinZ;\n            const sinXcosZ = sinX * cosZ;\n            const sinXsinZ = sinX * sinZ;\n            me[0] = cosY * cosZ;\n            me[4] = sinXcosZ * sinY - cosXsinZ;\n            me[8] = cosXcosZ * sinY + sinXsinZ;\n            me[1] = cosY * sinZ;\n            me[5] = sinXsinZ * sinY + cosXcosZ;\n            me[9] = cosXsinZ * sinY - sinXcosZ;\n            me[2] = -sinY;\n            me[6] = sinX * cosY;\n            me[10] = cosX * cosY;\n        }\n        else if (order === EulerOrder.YZX) {\n            const cosXcosY = cosX * cosY;\n            const cosXsinY = cosX * sinY;\n            const sinXcosY = sinX * cosY;\n            const sinXsinY = sinX * sinY;\n            me[0] = cosY * cosZ;\n            me[4] = sinXsinY - cosXcosY * sinZ;\n            me[8] = sinXcosY * sinZ + cosXsinY;\n            me[1] = sinZ;\n            me[5] = cosX * cosZ;\n            me[9] = -sinX * cosZ;\n            me[2] = -sinY * cosZ;\n            me[6] = cosXsinY * sinZ + sinXcosY;\n            me[10] = cosXcosY - sinXsinY * sinZ;\n        }\n        else if (order === EulerOrder.XZY) {\n            const cosXcosY = cosX * cosY;\n            const cosXsinY = cosX * sinY;\n            const sinXcosY = sinX * cosY;\n            const sinXsinY = sinX * sinY;\n            me[0] = cosY * cosZ;\n            me[4] = -sinZ;\n            me[8] = sinY * cosZ;\n            me[1] = cosXcosY * sinZ + sinXsinY;\n            me[5] = cosX * cosZ;\n            me[9] = cosXsinY * sinZ - sinXcosY;\n            me[2] = sinXcosY * sinZ - cosXsinY;\n            me[6] = sinX * cosZ;\n            me[10] = sinXsinY * sinZ + cosXcosY;\n        }\n        else {\n            console.error('toMatrix4: Invalid order ' + order);\n        }\n        // bottom row\n        me[3] = 0;\n        me[7] = 0;\n        me[11] = 0;\n        // last column\n        me[12] = 0;\n        me[13] = 0;\n        me[14] = 0;\n        me[15] = 1;\n        return mat;\n    }\n    /**\n     * 通过矩阵创建欧拉角\n     * @param m - 矩阵\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromRotationMatrix4(m, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromRotationMatrix4(m, order);\n    }\n    /**\n     * 通过四元数创建欧拉角\n     * @param quat - 四元数\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromQuaternion(quat, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromQuaternion(quat, order);\n    }\n    /**\n     * 通过三维向量创建欧拉角\n     * @param v - 三维向量\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromVector3(v, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromVector3(v, order);\n    }\n    /**\n     * 通过数组创建欧拉角\n     * @param array - 数组\n     * @param [offset=0] - 偏移\n     * @param [order=Euler.DEFAULT_ORDER] - 欧拉角顺序\n     * @returns 创建结果\n     */\n    static fromArray(array, offset = 0, order = Euler.DEFAULT_ORDER) {\n        return new Euler().setFromArray(array, offset, order);\n    }\n}\n","function _assert_this_initialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n    return self;\n}\nexport { _assert_this_initialized as _ };\n","import { isEqual } from './utils';\n/**\n * 三维矩阵（列优先矩阵）\n */\nexport class Matrix3 {\n    /**\n     * 矩阵值数组\n     */\n    elements;\n    /**\n     * 构造函数，初始值为零矩阵\n     * @param [m11=1] - 第 1 行，第 1 列\n     * @param [m21=0] - 第 2 行，第 1 列\n     * @param [m31=0] - 第 3 行，第 1 列\n     * @param [m12=0] - 第 1 行，第 2 列\n     * @param [m22=1] - 第 2 行，第 2 列\n     * @param [m32=0] - 第 3 行，第 2 列\n     * @param [m13=0] - 第 1 行，第 3 列\n     * @param [m23=0] - 第 2 行，第 3 列\n     * @param [m33=1] - 第 3 行，第 3 列\n     */\n    constructor(m11 = 1, m21 = 0, m31 = 0, m12 = 0, m22 = 1, m32 = 0, m13 = 0, m23 = 0, m33 = 1) {\n        this.elements = [\n            m11, m21, m31,\n            m12, m22, m32,\n            m13, m23, m33,\n        ];\n    }\n    /**\n     * 设置矩阵\n     * @param m11 - 第 1 行，第 1 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m33 - 第 3 行，第 3 列\n     * @returns\n     */\n    set(m11, m21, m31, m12, m22, m32, m13, m23, m33) {\n        const e = this.elements;\n        e[0] = m11;\n        e[3] = m12;\n        e[6] = m13;\n        e[1] = m21;\n        e[4] = m22;\n        e[7] = m23;\n        e[2] = m31;\n        e[5] = m32;\n        e[8] = m33;\n        return this;\n    }\n    /**\n     * 设置矩阵通过行优先数据\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @returns 矩阵\n     */\n    setFromRowMajorData(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n        const e = this.elements;\n        e[0] = m11;\n        e[3] = m12;\n        e[6] = m13;\n        e[1] = m21;\n        e[4] = m22;\n        e[7] = m23;\n        e[2] = m31;\n        e[5] = m32;\n        e[8] = m33;\n        return this;\n    }\n    /**\n     * 通过列向量设置矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @returns 矩阵\n     */\n    setFromColumnVectors(c1, c2, c3) {\n        return this.set(c1.x, c1.y, c1.z, c2.x, c2.y, c2.z, c3.x, c3.y, c3.z);\n    }\n    /**\n     * 通过四阶矩阵设置三阶矩阵\n     * @param m - 四阶矩阵\n     * @returns 矩阵\n     */\n    setFromMatrix4(m) {\n        const me = m.elements;\n        return this.set(me[0], me[1], me[2], me[4], me[5], me[6], me[8], me[9], me[10]);\n    }\n    /**\n     * 通过数组设置矩阵\n     * @param array - 数组\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    setFromArray(array, offset = 0) {\n        for (let i = 0; i < 9; i++) {\n            this.elements[i] = array[offset + i];\n        }\n        return this;\n    }\n    /**\n     * 通过四元数设置矩阵\n     * @param quat - 四元数\n     * @returns 矩阵\n     */\n    setFromQuaternion(quat) {\n        const { x, y, z, w } = quat;\n        const x2 = x + x;\n        const y2 = y + y;\n        const z2 = z + z;\n        const xx = x * x2;\n        const xy = x * y2;\n        const xz = x * z2;\n        const yy = y * y2;\n        const yz = y * z2;\n        const zz = z * z2;\n        const wx = w * x2;\n        const wy = w * y2;\n        const wz = w * z2;\n        const te = this.elements;\n        te[0] = 1 - (yy + zz);\n        te[1] = xy + wz;\n        te[2] = xz - wy;\n        te[3] = xy - wz;\n        te[4] = 1 - (xx + zz);\n        te[5] = yz + wx;\n        te[6] = xz + wy;\n        te[7] = yz - wx;\n        te[8] = 1 - (xx + yy);\n        return this;\n    }\n    /**\n     * 矩阵清零\n     * @returns 零矩阵\n     */\n    setZero() {\n        for (let i = 0; i < 9; i++) {\n            this.elements[i] = 0;\n        }\n        return this;\n    }\n    /**\n     * 矩阵单位化\n     * @returns 单位矩阵\n     */\n    identity() {\n        return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1);\n    }\n    /**\n     * 矩阵克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        const e = this.elements;\n        return new Matrix3(e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7], e[8]);\n    }\n    /**\n     * 矩阵复制\n     * @param m - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(m) {\n        this.elements = [...m.elements];\n        return this;\n    }\n    /**\n     * 得到列向量\n     * @param i - 列向量索引，从 0 开始\n     * @returns 列向量\n     */\n    getColumnVector(i, v) {\n        return v.set(this.elements[i * 3], this.elements[i * 3 + 1], this.elements[i * 3 + 2]);\n    }\n    /**\n     * 矩阵缩放\n     * @param sx - x 轴缩放分量\n     * @param sy - y 轴缩放分量\n     * @returns 缩放结果\n     */\n    scale(sx, sy) {\n        const e = this.elements;\n        e[0] *= sx;\n        e[3] *= sx;\n        e[6] *= sx;\n        e[1] *= sy;\n        e[4] *= sy;\n        e[7] *= sy;\n        return this;\n    }\n    /**\n     * 矩阵旋转\n     * @param theta - 旋转角度（弧度）\n     * @returns 旋转结果\n     */\n    rotate(theta) {\n        const c = Math.cos(theta);\n        const s = Math.sin(theta);\n        const e = this.elements;\n        const m11 = e[0], m12 = e[3], m13 = e[6];\n        const m21 = e[1], m22 = e[4], m23 = e[7];\n        e[0] = c * m11 + s * m21;\n        e[3] = c * m12 + s * m22;\n        e[6] = c * m13 + s * m23;\n        e[1] = -s * m11 + c * m21;\n        e[4] = -s * m12 + c * m22;\n        e[7] = -s * m13 + c * m23;\n        return this;\n    }\n    /**\n     * 矩阵平移\n     * @param x - x 轴平移分量\n     * @param y - y 轴平移分量\n     * @returns 平移结果\n     */\n    translate(x, y) {\n        const e = this.elements;\n        e[0] += x * e[2];\n        e[3] += x * e[5];\n        e[6] += x * e[8];\n        e[1] += y * e[2];\n        e[4] += y * e[5];\n        e[7] += y * e[8];\n        return this;\n    }\n    /**\n     * 矩阵右乘\n     * @param right - 相乘矩阵\n     * @returns 右乘结果\n     */\n    multiply(right) {\n        if (typeof right === 'number') {\n            for (let i = 0; i < 9; i++) {\n                this.elements[i] *= right;\n            }\n            return this;\n        }\n        else {\n            return this.multiplyMatrices(this, right);\n        }\n    }\n    /**\n     * 矩阵左乘\n     * @param left - 相乘矩阵\n     * @returns 左乘结果\n     */\n    premultiply(left) {\n        return this.multiplyMatrices(left, this);\n    }\n    /**\n     * 矩阵乘法\n     * @param left - 矩阵\n     * @param right - 矩阵\n     * @returns 相乘结果\n     */\n    multiplyMatrices(left, right) {\n        const ae = left.elements;\n        const be = right.elements;\n        const te = this.elements;\n        const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n        const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n        const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n        const b11 = be[0], b12 = be[3], b13 = be[6];\n        const b21 = be[1], b22 = be[4], b23 = be[7];\n        const b31 = be[2], b32 = be[5], b33 = be[8];\n        te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n        te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n        te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n        te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n        te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n        te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n        te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n        te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n        te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n        return this;\n    }\n    /**\n     * 矩阵求行列式值\n     * @returns 行列式结果\n     */\n    determinant() {\n        const e = this.elements;\n        const m11 = e[0], m21 = e[3], m31 = e[6];\n        const m12 = e[1], m22 = e[4], m32 = e[7];\n        const m13 = e[2], m23 = e[5], m33 = e[8];\n        return (m11 * (m22 * m33 - m23 * m32) +\n            m12 * (m23 * m31 - m21 * m33) +\n            m13 * (m21 * m32 - m22 * m31));\n    }\n    /**\n     * 矩阵求逆\n     * @returns 逆矩阵\n     */\n    invert() {\n        const e = this.elements;\n        const m11 = e[0], m12 = e[3], m13 = e[6];\n        const m21 = e[1], m22 = e[4], m23 = e[7];\n        const m31 = e[2], m32 = e[5], m33 = e[8];\n        const t11 = m33 * m22 - m32 * m23;\n        const t12 = m32 * m13 - m33 * m12;\n        const t13 = m23 * m12 - m22 * m13;\n        const det = m11 * t11 + m21 * t12 + m31 * t13;\n        if (det === 0) {\n            return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n        }\n        const detInv = 1 / det;\n        e[0] = t11 * detInv;\n        e[1] = (m31 * m23 - m33 * m21) * detInv;\n        e[2] = (m32 * m21 - m31 * m22) * detInv;\n        e[3] = t12 * detInv;\n        e[4] = (m33 * m11 - m31 * m13) * detInv;\n        e[5] = (m31 * m12 - m32 * m11) * detInv;\n        e[6] = t13 * detInv;\n        e[7] = (m21 * m13 - m23 * m11) * detInv;\n        e[8] = (m22 * m11 - m21 * m12) * detInv;\n        return this;\n    }\n    /**\n     * 矩阵转置\n     * @returns 转置结果\n     */\n    transpose() {\n        let t;\n        const m = this.elements;\n        t = m[1];\n        m[1] = m[3];\n        m[3] = t;\n        t = m[2];\n        m[2] = m[6];\n        m[6] = t;\n        t = m[5];\n        m[5] = m[7];\n        m[7] = t;\n        return this;\n    }\n    /**\n     * 对点进行矩阵变换\n     * @param v - 输入点\n     * @param out - 输出点，如果没有会覆盖输入的数据\n     * @returns 变换后的结果\n     */\n    transformPoint(v, out) {\n        const { x, y, z } = v;\n        const e = this.elements;\n        const res = out ?? v;\n        res.x = e[0] * x + e[3] * y + e[6] * z;\n        res.y = e[1] * x + e[4] * y + e[7] * z;\n        res.z = e[2] * x + e[5] * y + e[8] * z;\n        return res;\n    }\n    /**\n     * 对法向量进行矩阵变换\n     * @param v - 输入向量\n     * @param out - 输出向量，如果没有会覆盖输入的数据\n     * @returns 变换后的结果\n     */\n    transformNormal(v, out) {\n        return this.transformPoint(v, out).normalize();\n    }\n    /**\n     * 矩阵判等\n     * @param matrix - 矩阵\n     * @returns 判等结果\n     */\n    equals(matrix) {\n        const te = this.elements;\n        const me = matrix.elements;\n        for (let i = 0; i < 9; i++) {\n            if (!isEqual(te[i], me[i])) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * 矩阵转为数组\n     * @returns\n     */\n    toArray() {\n        return [...this.elements];\n    }\n    fill(array, offset = 0) {\n        const e = this.elements;\n        array[offset] = e[0];\n        array[offset + 1] = e[1];\n        array[offset + 2] = e[2];\n        array[offset + 3] = e[3];\n        array[offset + 4] = e[4];\n        array[offset + 5] = e[5];\n        array[offset + 6] = e[6];\n        array[offset + 7] = e[7];\n        array[offset + 8] = e[8];\n    }\n    /**\n     * 创建单位阵\n     * @returns 单位矩阵\n     */\n    static fromIdentity() {\n        return new Matrix3(1, 0, 0, 0, 1, 0, 0, 0, 1);\n    }\n    /**\n     * 通过列向量创建矩阵\n     * @param c1 - 第一列\n     * @param c2 - 第二列\n     * @param c3 - 第三列\n     * @returns 矩阵\n     */\n    static fromColumnVectors(c1, c2, c3) {\n        return new Matrix3().setFromColumnVectors(c1, c2, c3);\n    }\n    /**\n     * 通过四阶矩阵创建矩阵（获取空间变换矩阵旋转缩放部分）\n     * @param m - 四阶矩阵\n     * @returns 矩阵\n     */\n    static fromMatrix4(m) {\n        return new Matrix3().setFromMatrix4(m);\n    }\n    /**\n     * 通过数组创建矩阵\n     * @param array - 数组（列优先）\n     * @param [offset=0] - 起始偏移值\n     * @returns 矩阵\n     */\n    static fromArray(array, offset = 0) {\n        return new Matrix3().setFromArray(array, offset);\n    }\n    /**\n     * 通过四元数创建矩阵\n     * @param quat - 四元数\n     * @returns 矩阵\n     */\n    static fromQuaternion(quat) {\n        return new Matrix3().setFromQuaternion(quat);\n    }\n    /**\n     * 设置矩阵通过行优先数据\n     * @param m11 - 第 1 行，第 1 列\n     * @param m12 - 第 1 行，第 2 列\n     * @param m13 - 第 1 行，第 3 列\n     * @param m21 - 第 2 行，第 1 列\n     * @param m22 - 第 2 行，第 2 列\n     * @param m23 - 第 2 行，第 3 列\n     * @param m31 - 第 3 行，第 1 列\n     * @param m32 - 第 3 行，第 2 列\n     * @param m33 - 第 3 行，第 3 列\n     * @returns 矩阵\n     */\n    static fromRowMajorData(m11, m12, m13, m21, m22, m23, m31, m32, m33) {\n        return new Matrix3(m11, m21, m31, m12, m22, m32, m13, m23, m33);\n    }\n}\n","import { Vector3 } from './vector3';\n/**\n * 光线类\n */\nexport class Ray {\n    static tempVec0 = new Vector3();\n    static tempVec1 = new Vector3();\n    static tempVec2 = new Vector3();\n    static tempVec3 = new Vector3();\n    /**\n     * 光线的原点\n     */\n    origin = new Vector3();\n    /**\n     * 光线的方向\n     */\n    direction = new Vector3();\n    /**\n     * 构造函数\n     * @param [origin] - 原点，默认是 (0, 0, 0)\n     * @param [direction] - 方向，默认是 (1, 0, 0)\n     */\n    constructor(origin = Vector3.ZERO, direction = Vector3.X) {\n        // 注意这里必须拷贝\n        this.origin.copyFrom(origin);\n        this.direction.copyFrom(direction).normalize();\n    }\n    /**\n     * 光线设置\n     * @param origin - 原点\n     * @param direction - 方向\n     * @returns\n     */\n    set(origin, direction) {\n        this.origin.copyFrom(origin);\n        this.direction.copyFrom(direction).normalize();\n        return this;\n    }\n    /**\n     * 光线克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Ray(this.origin, this.direction);\n    }\n    /**\n     * 光线拷贝\n     * @param ray - 要拷贝对象\n     * @returns 拷贝结果\n     */\n    copyFrom(ray) {\n        return this.set(ray.origin, ray.direction);\n    }\n    /**\n     * 根据t计算新的光线原点\n     * @param t - 光线的系数 t\n     * @returns\n     */\n    recast(t) {\n        this.origin.copyFrom(this.at(t, Ray.tempVec0));\n        return this;\n    }\n    /**\n     * 根据t值计算光线上的点\n     * @param t - 光线的系数 t\n     * @param [out] - 计算的点\n     * @returns\n     */\n    at(t, out) {\n        const ret = out ? out : new Vector3();\n        ret.copyFrom(this.origin);\n        return ret.addScaledVector(this.direction, t);\n    }\n    /**\n     * 光线相等判断\n     * @param other - 其他对象\n     * @returns\n     */\n    equals(other) {\n        return this.origin.equals(other.origin) && this.direction.equals(other.direction);\n    }\n    /**\n     * 根据矩阵对光线进行变换\n     * @param m - 变换矩阵\n     * @returns\n     */\n    applyMatrix(m) {\n        this.origin.applyProjectionMatrix(m);\n        this.direction.applyNormalMatrix(m);\n        return this;\n    }\n    /**\n     * 光线和包围盒求交\n     * @param box - 类包围盒对象\n     * @param [out] - 交点\n     * @returns\n     */\n    intersectBox(box, out) {\n        const { x: ox, y: oy, z: oz } = this.origin;\n        const { x: dx, y: dy, z: dz } = this.direction;\n        const { x: bxmin, y: bymin, z: bzmin } = box.min;\n        const { x: bxmax, y: bymax, z: bzmax } = box.max;\n        let tmin, tmax, tymin, tymax, tzmin, tzmax;\n        const invdirx = 1 / dx;\n        const invdiry = 1 / dy;\n        const invdirz = 1 / dz;\n        if (invdirx >= 0) {\n            tmin = (bxmin - ox) * invdirx;\n            tmax = (bxmax - ox) * invdirx;\n        }\n        else {\n            tmin = (bxmax - ox) * invdirx;\n            tmax = (bxmin - ox) * invdirx;\n        }\n        if (invdiry >= 0) {\n            tymin = (bymin - oy) * invdiry;\n            tymax = (bymax - oy) * invdiry;\n        }\n        else {\n            tymin = (bymax - oy) * invdiry;\n            tymax = (bymin - oy) * invdiry;\n        }\n        if ((tmin > tymax) || (tymin > tmax)) {\n            return;\n        }\n        if (tymin > tmin || tmin !== tmin) {\n            tmin = tymin;\n        }\n        if (tymax < tmax || tmax !== tmax) {\n            tmax = tymax;\n        }\n        if (tymin > tmin || tmin !== tmin) {\n            tmin = tymin;\n        }\n        if (tymax < tmax || tmax !== tmax) {\n            tmax = tymax;\n        }\n        if (invdirz >= 0) {\n            tzmin = (bzmin - oz) * invdirz;\n            tzmax = (bzmax - oz) * invdirz;\n        }\n        else {\n            tzmin = (bzmax - oz) * invdirz;\n            tzmax = (bzmin - oz) * invdirz;\n        }\n        if ((tmin > tzmax) || (tzmin > tmax)) {\n            return;\n        }\n        if (tzmin > tmin || tmin !== tmin) {\n            tmin = tzmin;\n        }\n        if (tzmax < tmax || tmax !== tmax) {\n            tmax = tzmax;\n        }\n        if (tmax < 0) {\n            return;\n        }\n        return tmin >= 0 ? this.at(tmin, out) : this.at(tmax, out);\n    }\n    /**\n     * 光线和平面求交\n     * @param plane - 类平面对象\n     * @param [out] - 交点\n     * @returns\n     */\n    intersectPlane(plane, out) {\n        const normal = plane.normal;\n        const distance = plane.distance;\n        const denominator = normal.dot(this.direction);\n        if (denominator === 0) {\n            // line is coplanar, return origin\n            const t = normal.dot(this.origin) + distance;\n            if (t === 0) {\n                const ret = out ? out : new Vector3();\n                return ret.copyFrom(this.origin);\n            }\n            // Null is preferable to undefined since undefined means.... it is undefined\n            return;\n        }\n        const t = -(this.origin.dot(normal) + distance) / denominator;\n        // Return if the ray never intersects the plane\n        return t >= 0 ? this.at(t, out) : undefined;\n    }\n    /**\n     * 光线和圆求交\n     * @param sphere - 类球对象\n     * @param [out] - 交点\n     * @returns\n     */\n    intersectSphere(sphere, out) {\n        const center = sphere.center;\n        const vector = Ray.tempVec0.subtractVectors(center, this.origin);\n        const tca = vector.dot(this.direction);\n        const d2 = vector.dot(vector) - tca * tca;\n        const radius2 = sphere.radius * sphere.radius;\n        if (d2 > radius2) {\n            return;\n        }\n        const thc = Math.sqrt(radius2 - d2);\n        // t0 = first intersect point - entrance on front of sphere\n        const t0 = tca - thc;\n        // t1 = second intersect point - exit point on back of sphere\n        const t1 = tca + thc;\n        // test to see if t1 is behind the ray - if so, return null\n        if (t1 < 0) {\n            return;\n        }\n        // test to see if t0 is behind the ray:\n        // if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n        // in order to always return an intersect point that is in front of the ray.\n        // else t0 is in front of the ray, so return the first collision point scaled by t0\n        return t0 >= 0 ? this.at(t0, out) : this.at(t1, out);\n    }\n    /**\n     * 光线和三角形求交\n     * @param triangle - 类三角形对象\n     * @param [out] - 交点\n     * @param [backfaceCulling] - 是否背面剔除\n     * @returns\n     */\n    intersectTriangle(triangle, out, backfaceCulling) {\n        // FIXME: 交换out和backfaceCulling\n        // Compute the offset origin, edges, and normal.\n        // from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n        const a = triangle.p0;\n        const b = triangle.p1;\n        const c = triangle.p2;\n        const edge1 = Ray.tempVec0.subtractVectors(b, a);\n        const edge2 = Ray.tempVec1.subtractVectors(c, a);\n        const diff = Ray.tempVec2.subtractVectors(this.origin, a);\n        const normal = Ray.tempVec3.crossVectors(edge1, edge2);\n        // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n        // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n        //   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n        //   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n        //   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n        let DdN = this.direction.dot(normal);\n        let sign;\n        if (DdN > 0) {\n            if (backfaceCulling) {\n                return;\n            }\n            sign = 1;\n        }\n        else if (DdN < 0) {\n            sign = -1;\n            DdN = -DdN;\n        }\n        else {\n            return;\n        }\n        edge2.crossVectors(diff, edge2);\n        const DdQxE2 = sign * this.direction.dot(edge2);\n        // b1 < 0, no intersection\n        if (DdQxE2 < 0) {\n            return;\n        }\n        edge1.cross(diff);\n        const DdE1xQ = sign * this.direction.dot(edge1);\n        // b2 < 0, no intersection\n        if (DdE1xQ < 0) {\n            return;\n        }\n        // b1+b2 > 1, no intersection\n        if (DdQxE2 + DdE1xQ > DdN) {\n            return;\n        }\n        // Line intersects triangle, check if ray does.\n        const QdN = -sign * diff.dot(normal);\n        // t < 0, no intersection\n        if (QdN < 0) {\n            return;\n        }\n        // Ray intersects triangle.\n        return this.at(QdN / DdN, out);\n    }\n}\n","import { Vector3 } from './vector3';\n/**\n * 三维包围盒\n */\nexport class Box3 {\n    min;\n    max;\n    /**\n     * 构造函数，传入值为空时表示空包围盒\n     * @param [min=new Vector3(Infinity)] - 最小角点\n     * @param [max=new Vector3(-Infinity)] - 最大角点\n     */\n    constructor(min = new Vector3(Infinity, Infinity, Infinity), max = new Vector3(-Infinity, -Infinity, -Infinity)) {\n        this.min = min.clone();\n        this.max = max.clone();\n    }\n    /**\n     * 设置三维包围盒的值\n     * @param min - 三维包围盒最小点\n     * @param max - 三维包围盒最大点\n     * @returns\n     */\n    set(min, max) {\n        this.min.copyFrom(min);\n        this.max.copyFrom(max);\n        return this;\n    }\n    /**\n     * 通过数组构建三维包围盒\n     * @param array - 数组集合（每三个数视为一个三维空间点）\n     * @returns 三维包围盒\n     */\n    setFromArray(array) {\n        let minX = Number(Infinity);\n        let minY = Number(Infinity);\n        let minZ = Number(Infinity);\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n        let maxZ = -Infinity;\n        for (let i = 0, l = array.length; i < l; i += 3) {\n            const x = array[i];\n            const y = array[i + 1];\n            const z = array[i + 2];\n            if (x < minX) {\n                minX = x;\n            }\n            if (y < minY) {\n                minY = y;\n            }\n            if (z < minZ) {\n                minZ = z;\n            }\n            if (x > maxX) {\n                maxX = x;\n            }\n            if (y > maxY) {\n                maxY = y;\n            }\n            if (z > maxZ) {\n                maxZ = z;\n            }\n        }\n        this.min.set(minX, minY, minZ);\n        this.max.set(maxX, maxY, maxZ);\n        return this;\n    }\n    /**\n     * 通过三维空间点构建三维包围盒\n     * @param points - 三维空间点集合\n     * @returns 三维包围盒\n     */\n    setFromPoints(points) {\n        this.makeEmpty();\n        for (let i = 0, il = points.length; i < il; i++) {\n            this.expandByPoint(points[i]);\n        }\n        return this;\n    }\n    /**\n     * 通过三维空间点（包围盒中心）和大小确定包围盒\n     * @param center - 三维包围盒中心点\n     * @param size - 三维包围盒大小值\n     * @returns 三维包围盒\n     */\n    setFromCenterAndSize(center, size) {\n        const halfSize = size.clone().multiply(0.5);\n        this.min.copyFrom(center).subtract(halfSize);\n        this.max.copyFrom(center).add(halfSize);\n        return this;\n    }\n    // TODO\n    /**\n     * 通过实体构建包围盒\n     * @param object - 构件实体\n     * @returns 三维包围盒\n     */\n    setFromObject(object) {\n        this.makeEmpty();\n        return this.expandByObject(object);\n    }\n    /**\n     * 克隆三维包围盒\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Box3().copyFrom(this);\n    }\n    /**\n     * 复制三维包围盒\n     * @param box - 复制对象\n     * @returns 复制结果\n     */\n    copyFrom(box) {\n        this.min.copyFrom(box.min);\n        this.max.copyFrom(box.max);\n        return this;\n    }\n    /**\n     * 三维包围盒置空\n     * @returns 置空结果\n     */\n    makeEmpty() {\n        this.min.x = this.min.y = this.min.z = Number(Infinity);\n        this.max.x = this.max.y = this.max.z = -Infinity;\n        return this;\n    }\n    /**\n     * 三维包围盒判空\n     * @returns 判空结果\n     */\n    isEmpty() {\n        // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n        return this.max.x < this.min.x\n            || this.max.y < this.min.y\n            || this.max.z < this.min.z;\n    }\n    /**\n     * 获取三维包围盒中心\n     * @param [target=new Vector3()]\n     * @returns\n     */\n    getCenter(target = new Vector3()) {\n        return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiply(0.5);\n    }\n    /**\n     * 获取三维包围盒大小\n     * @param [target=new Vector3()] - 结果保存对象\n     * @returns 三维包围盒大小\n     */\n    getSize(target = new Vector3()) {\n        return this.isEmpty() ? target.set(0, 0, 0) : target.subtractVectors(this.max, this.min);\n    }\n    /**\n     * 通过三维空间点扩展三维包围盒\n     * @param point - 三维空间点\n     * @returns 扩展结果\n     */\n    expandByPoint(point) {\n        this.min.min(point);\n        this.max.max(point);\n        return this;\n    }\n    /**\n     * 通过三维向量扩展三维包围盒\n     * @param vector - 三维向量\n     * @returns 扩展结果\n     */\n    expandByVector(vector) {\n        this.min.subtract(vector);\n        this.max.add(vector);\n        return this;\n    }\n    /**\n     * 通过实数扩展三维包围盒\n     * @param scalar - 扩展大小\n     * @returns 扩展结果\n     */\n    expandByScalar(scalar) {\n        this.min.add(-scalar);\n        this.max.add(scalar);\n        return this;\n    }\n    /**\n     * 通过包围盒扩展三维包围盒\n     * @param box\n     * @returns\n     */\n    expandByBox(box) {\n        this.min.min(box.min);\n        this.max.max(box.max);\n        return this;\n    }\n    // TODO\n    /**\n     * 通过实体扩展三维包围盒\n     * @param object - 构件实体\n     * @returns 扩展结果\n     */\n    expandByObject(object) {\n        // Computes the world-axis-aligned bounding box of an object (including its children),\n        // accounting for both the object's, and children's, world transforms\n        object.updateWorldMatrix(false, false);\n        const geometry = object.geometry;\n        if (geometry !== undefined) {\n            if (geometry.boundingBox === null) {\n                geometry.computeBoundingBox();\n            }\n            const box3 = new Box3();\n            box3.copyFrom(geometry.boundingBox);\n            box3.applyMatrix4(object.matrixWorld);\n            this.union(box3);\n        }\n        const children = object.children;\n        for (let i = 0, l = children.length; i < l; i++) {\n            this.expandByObject(children[i]);\n        }\n        return this;\n    }\n    /**\n     * 判断三维包围盒相交关系(if this intersect other)\n     * @param point - 三维空间点\n     * @returns 点包含判断结果\n     */\n    containsPoint(point) {\n        return !(point.x < this.min.x\n            || point.x > this.max.x\n            || point.y < this.min.y\n            || point.y > this.max.y\n            || point.z < this.min.z\n            || point.z > this.max.z);\n    }\n    /**\n     * 判断三维包围盒与三维包围盒的包含关系\n     * @param other - 三维包围盒\n     * @returns 包围盒包含结果（true 表示包含 other, false 表示不包含 other）\n     */\n    containsBox(other) {\n        return this.min.x <= other.min.x\n            && this.max.x >= other.max.x\n            && this.min.y <= other.min.y\n            && this.max.y >= other.max.y\n            && this.min.z <= other.min.z\n            && this.max.z >= other.max.z;\n    }\n    // TODO\n    /**\n     * 获取点在三维包围盒的比例位置\n     * @param point - 三维空间点\n     * @param [target=new Vector3()] - 结果保存对象\n     * @returns 点在包围盒比例位置\n     */\n    getParameter(point, target = new Vector3()) {\n        // This can potentially have a divide by zero if the box\n        // has a size dimension of 0.\n        return target.set((point.x - this.min.x) / (this.max.x - this.min.x), (point.y - this.min.y) / (this.max.y - this.min.y), (point.z - this.min.z) / (this.max.z - this.min.z));\n    }\n    /**\n     * 判断三维包围盒相交关系(if this intersect other)\n     * @param other - 三维包围盒\n     * @returns 相交判断结果\n     */\n    intersectsBox(other) {\n        // using 6 splitting planes to rule out intersections.\n        return !(other.max.x < this.min.x || other.min.x > this.max.x\n            || other.max.y < this.min.y || other.min.y > this.max.y\n            || other.max.z < this.min.z || other.min.z > this.max.z);\n    }\n    /**\n     * 判断三维包围盒和球是否相交\n     * @param sphere\n     * @returns\n     */\n    intersectsSphere(sphere) {\n        // Find the point on the AABB closest to the sphere center.\n        const vector = new Vector3();\n        this.clampPoint(sphere.center, vector);\n        // If that point is inside the sphere, the AABB and sphere intersect.\n        return vector.distanceSquared(sphere.center) <= (sphere.radius * sphere.radius);\n    }\n    /**\n     * 求点与三维包围盒的最近点\n     * @param point - 三维空间点\n     * @param [target=new Vector3()] - 结果存放对象\n     * @returns 计算结果\n     */\n    clampPoint(point, target = new Vector3()) {\n        return target.copyFrom(point).clamp(this.min, this.max);\n    }\n    /**\n     * 三维空间点到三维包围盒的距离\n     * @param point - 三维包围盒\n     * @returns 距离结果\n     */\n    distanceToPoint(point) {\n        const clampedPoint = point.clone().clamp(this.min, this.max);\n        return clampedPoint.subtract(point).length();\n    }\n    /**\n     * 三维包围盒求交集\n     * @param box - 三维包围盒\n     * @returns 求交结果\n     */\n    intersect(box) {\n        this.min.max(box.min);\n        this.max.min(box.max);\n        // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n        if (this.isEmpty()) {\n            this.makeEmpty();\n        }\n        return this;\n    }\n    /**\n     * 三维包围盒求并集\n     * @param box - 三维包围盒\n     * @returns 求并结果\n     */\n    union(box) {\n        this.min.min(box.min);\n        this.max.max(box.max);\n        return this;\n    }\n    /**\n     * 通过三维变换矩阵变化三维包围盒\n     * @param matrix - 三维变换矩阵\n     * @returns 变换结果\n     */\n    applyMatrix4(matrix, center = new Vector3()) {\n        // transform of empty box is an empty box.\n        if (this.isEmpty()) {\n            return this;\n        }\n        const points = this.getOBBPoints(matrix, center);\n        this.setFromPoints(points);\n        return this;\n    }\n    getOBBPoints(matrix, center = new Vector3()) {\n        // transform of empty box is an empty box.\n        if (this.isEmpty()) {\n            return [];\n        }\n        const points = [];\n        // NOTE: I am using a binary pattern to specify all 2^3 combinations below\n        points[0] = new Vector3(this.min.x, this.min.y, this.min.z); // 000\n        points[1] = new Vector3(this.min.x, this.min.y, this.max.z); // 001\n        points[2] = new Vector3(this.min.x, this.max.y, this.min.z); // 010\n        points[3] = new Vector3(this.min.x, this.max.y, this.max.z); // 011\n        points[4] = new Vector3(this.max.x, this.min.y, this.min.z); // 100\n        points[5] = new Vector3(this.max.x, this.min.y, this.max.z); // 101\n        points[6] = new Vector3(this.max.x, this.max.y, this.min.z); // 110\n        points[7] = new Vector3(this.max.x, this.max.y, this.max.z); // 111\n        points.forEach(p => {\n            p.subtract(center);\n            p.applyMatrix(matrix);\n            p.add(center);\n        });\n        return points;\n    }\n    /**\n     * 通过包围盒获取包围球\n     * @param target\n     * @returns\n     */\n    getBoundingSphere(target) {\n        this.getCenter(target.center);\n        const vector = new Vector3();\n        target.radius = this.getSize(vector).length() * 0.5;\n        return target;\n    }\n    /**\n     * 三维包围盒位移\n     * @param offset - 三维位移向量\n     * @returns 位移结果\n     */\n    translate(offset) {\n        this.min.add(offset);\n        this.max.add(offset);\n        return this;\n    }\n    /**\n     * 三维包围盒判等\n     * @param other - 三维包围盒\n     * @returns 判等结果\n     */\n    equals(other) {\n        return other.min.equals(this.min) && other.max.equals(this.max);\n    }\n}\n","import { Box3 } from './box3';\nimport { Vector3 } from './vector3';\n/**\n * 球\n */\nexport class Sphere {\n    center;\n    radius;\n    /**\n     * 构造函数\n     * @param [center=Vector3.ZERO] - 球心，默认值为(0, 0, 0)\n     * @param [radius=-1] - 半径\n     */\n    constructor(center = Vector3.ZERO, radius = -1) {\n        this.center = center.clone();\n        this.radius = radius;\n    }\n    /**\n     * 通过参数设置球\n     * @param center - 球心\n     * @param radius - 半径\n     * @returns\n     */\n    set(center, radius) {\n        this.center.copyFrom(center);\n        this.radius = radius;\n        return this;\n    }\n    /**\n     * 通过空间点与球心设置球\n     * @param points - 三维空间点\n     * @param [optionalCenter] - 指定球心\n     * @returns\n     */\n    setFromPoints(points, optionalCenter) {\n        const { center } = this;\n        if (optionalCenter !== undefined) {\n            center.copyFrom(optionalCenter);\n            let maxRadiusSq = 0;\n            for (let i = 0; i < points.length; i++) {\n                maxRadiusSq = Math.max(maxRadiusSq, center.distanceSquared(points[i]));\n            }\n            this.radius = Math.sqrt(maxRadiusSq);\n        }\n        else {\n            const box = new Box3().setFromPoints(points);\n            box.getCenter(center);\n            this.radius = box.getSize().length() / 2;\n        }\n        return this;\n    }\n    /**\n     * 复制球\n     * @param sphere - 球信息\n     * @returns 复制结果\n     */\n    copyFrom(sphere) {\n        this.center.copyFrom(sphere.center);\n        this.radius = sphere.radius;\n        return this;\n    }\n    /**\n     * 球判空\n     * @returns 判空结果\n     */\n    isEmpty() {\n        return this.radius < 0;\n    }\n    /**\n     * 球置空\n     * @returns 置空结果\n     */\n    makeEmpty() {\n        this.center.set(0, 0, 0);\n        this.radius = -1;\n        return this;\n    }\n    /**\n     * 三维空间点包围判断\n     * @param point - 三维空间点\n     * @returns 空间点包含判断\n     */\n    containsPoint(point) {\n        return point.distanceSquared(this.center) <= (this.radius * this.radius);\n    }\n    /**\n     * 空间点与球表面的最短距离\n     * @param point - 三维空间点\n     * @returns 距离结果\n     */\n    distanceToPoint(point) {\n        return (point.distance(this.center) - this.radius);\n    }\n    /**\n     * 与球相交判断\n     * @param sphere - 球\n     * @returns 相交判断结果\n     */\n    intersectsSphere(sphere) {\n        const radiusSum = this.radius + sphere.radius;\n        return sphere.center.distanceSquared(this.center) <= (radiusSum * radiusSum);\n    }\n    /**\n     * 与包围盒相交判断\n     * @param box - 三维包围盒\n     * @returns 相交判断结果\n     */\n    intersectsBox(box) {\n        return box.intersectsSphere(this);\n    }\n    /**\n     * 收敛空间点在球范围内\n     * 注：乘法的效率要比开方高很多\n     * @param point - 三维空间点\n     * @param [target] - 结果保存对象\n     * @returns 收敛结果\n     */\n    clampPoint(point, target) {\n        const deltaLengthSq = this.center.distanceSquared(point);\n        if (target === undefined) {\n            target = new Vector3();\n        }\n        target.copyFrom(point);\n        if (deltaLengthSq > (this.radius * this.radius)) {\n            target.subtract(this.center).normalize();\n            target.multiply(this.radius).add(this.center);\n        }\n        return target;\n    }\n    /**\n     * 根据包围盒获取球\n     * @param target - 包围盒\n     * @returns 球\n     */\n    getBoundingBox(target) {\n        if (target === undefined) {\n            target = new Box3();\n        }\n        if (this.isEmpty()) {\n            // Empty sphere produces empty bounding box\n            target.makeEmpty();\n            return target;\n        }\n        target.set(this.center, this.center);\n        target.expandByScalar(this.radius);\n        return target;\n    }\n    /**\n     * 球空间变换\n     * @param matrix - 空间变化矩阵\n     * @returns 变换结果\n     */\n    applyMatrix4(matrix) {\n        const mt = matrix.elements;\n        const scaleXSq = mt[0] * mt[0] + mt[1] * mt[1] + mt[2] * mt[2];\n        const scaleYSq = mt[4] * mt[4] + mt[5] * mt[5] + mt[6] * mt[6];\n        const scaleZSq = mt[8] * mt[8] + mt[9] * mt[9] + mt[10] * mt[10];\n        const maxScale = Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n        this.center.applyMatrix(matrix);\n        this.radius = this.radius * maxScale;\n        return this;\n    }\n    /**\n     * 球位移\n     * @param offset - 位移信息\n     * @returns 位移结果\n     */\n    translate(offset) {\n        this.center.add(offset);\n        return this;\n    }\n    /**\n     * 通过三维空间点对球进行扩展\n     * @param point - 扩展点\n     * @returns 扩展结果\n     */\n    expandByPoint(point) {\n        const vector = new Vector3().subtractVectors(point, this.center);\n        const lengthSquared = vector.lengthSquared();\n        if (lengthSquared > (this.radius * this.radius)) {\n            const length = Math.sqrt(lengthSquared);\n            const missingRadiusHalf = (length - this.radius) * 0.5;\n            // Nudge this sphere towards the target point. Add half the missing distance to radius,\n            // and the other half to position. This gives a tighter enclosure, instead of if\n            // the whole missing distance were just added to radius.\n            this.center.add(vector.multiply(missingRadiusHalf / length));\n            this.radius += missingRadiusHalf;\n        }\n        return this;\n    }\n    /**\n     * 包围球求并集\n     * @param sphere - 包围球\n     * @returns 求并结果\n     */\n    union(sphere) {\n        // To enclose another sphere into this sphere, we only need to enclose two points:\n        // 1) Enclose the farthest point on the other sphere into this sphere.\n        // 2) Enclose the opposite point of the farthest point into this sphere.\n        const v1 = new Vector3();\n        const toFarthestPoint = new Vector3();\n        toFarthestPoint.subtractVectors(sphere.center, this.center).normalize().multiply(sphere.radius);\n        this.expandByPoint(v1.copyFrom(sphere.center).add(toFarthestPoint));\n        this.expandByPoint(v1.copyFrom(sphere.center).subtract(toFarthestPoint));\n        return this;\n    }\n    /**\n     * 包围球求交集\n     * @param other - 其它包围球\n     * @returns 求交结果\n     */\n    intersect(other) {\n        const vector = new Vector3().subtractVectors(this.center, other.center);\n        const distance = vector.length();\n        const radiusSum = this.radius + other.radius;\n        if (distance > radiusSum) {\n            return this.makeEmpty();\n        }\n        this.center = this.center.add(vector.normalize().multiply(distance / 2));\n        this.radius = this.radius + other.radius - distance;\n        return this;\n    }\n    /**\n     * 包围球判等\n     * @param sphere - 包围球\n     * @returns 判等结果\n     */\n    equals(sphere) {\n        return sphere.center.equals(this.center) && (sphere.radius === this.radius);\n    }\n    /**\n     * 包围球克隆\n     * @returns 克隆结果\n     */\n    clone() {\n        return new Sphere().copyFrom(this);\n    }\n}\n","import { Euler, Matrix4, Quaternion, Vector2, Vector3 } from '@galacean/effects-math/es/core/index';\nimport type * as spec from '@galacean/effects-specification';\nimport type { Disposable } from './utils';\nimport { addItem, removeItem } from './utils';\nimport type { Engine } from './engine';\n\nexport interface TransformProps {\n  position?: spec.vec3 | Vector3,\n  rotation?: spec.vec3 | Euler,\n  quat?: spec.vec4 | Quaternion,\n  scale?: spec.vec3 | Vector3,\n  size?: Vector2,\n  name?: string,\n  anchor?: spec.vec2 | Vector2,\n  valid?: boolean,\n}\n\nconst tempQuat = new Quaternion();\nconst tempVector3 = new Vector3();\nconst tempVector3Second = new Vector3();\nlet seed = 1;\n\n/**\n * 变换组件，用于描述元素的位置、旋转、缩放等信息\n */\nexport class Transform implements Disposable {\n  /**\n   * 转换右手坐标系左手螺旋对应的四元数到对应的旋转角\n   * @param quat - 四元数\n   * @param out - 欧拉角\n   * @returns\n   */\n  static getRotation (quat: Quaternion, out: Euler): Euler {\n    const newQuat = tempQuat.copyFrom(quat);\n\n    newQuat.conjugate();\n\n    return out.setFromQuaternion(newQuat);\n  }\n\n  engine: Engine;\n  name: string;\n  taggedProperties = {} as spec.TransformData;\n  /**\n   * 自身位移\n   */\n  readonly position = new Vector3(0, 0, 0);\n  /**\n   * 自身旋转对应的四元数，右手坐标系，旋转正方向左手螺旋（轴向的顺时针），旋转欧拉角的顺序为 ZYX\n   */\n  readonly quat = new Quaternion(0, 0, 0, 1);\n  /**\n   * 自身旋转角度\n   */\n  readonly rotation = new Euler(0, 0, 0);\n  /**\n   * 自身缩放\n   */\n  readonly scale = new Vector3(1, 1, 1);\n  /**\n   * 自身锚点\n   */\n  readonly anchor = new Vector3(0, 0, 0);\n\n  /**\n   * 元素矩形宽高\n   */\n  readonly size = new Vector2(1, 1);\n  /**\n   * 子变换，可以有多个\n   */\n  private children: Transform[] = [];\n  /**\n   * 父变换，只能有一个\n   */\n  private parent: Transform | null;\n  /**\n   * 所有父变换对应的联合矩阵\n   */\n  private parentMatrix: Matrix4;\n  /**\n   * 包含父变换的最终模型矩阵\n   */\n  private worldMatrix = Matrix4.fromIdentity();\n  /**\n   * 仅包含自身变换的模型矩阵\n   */\n  private localMatrix = Matrix4.fromIdentity();\n  /**\n   * 变换是否需要生效，不生效返回的模型矩阵为单位矩阵，需要随元素生命周期改变\n   */\n  private valid = true;\n  /**\n   * 数据变化标志位\n   */\n  private dirtyFlags = {\n    /* 自身变换是否有修改，若修改，localMatrix 需要更新 */\n    localData: false,\n    /* localMatrix 是否有修改，若修改，WorldMatrix 需要更新 */\n    localMatrix: false,\n    /* worldMatrix 是否有修改，若修改，worldTRS 需要更新 */\n    worldMatrix: false,\n    /* parentMatrix 是否有修改，若修改，WorldMatrix需要更新 */\n    parentMatrix: false,\n  };\n  /**\n   * 最终模型矩阵对应变换的缓存，当自身矩阵或父矩阵有修改时需要更新\n   */\n  private readonly worldTRSCache = { position: new Vector3(0, 0, 0), quat: new Quaternion(0, 0, 0, 1), scale: new Vector3(1, 1, 1) };\n\n  /**\n   *\n   * @param props\n   * @param parent\n   */\n  constructor (props: TransformProps = {}, parent?: Transform) {\n    this.name = `transform_${seed++}`;\n    if (props) {\n      this.setTransform(props);\n    }\n    if (parent) {\n      this.parentTransform = parent;\n    }\n    if (props.valid !== undefined) {\n      this.setValid(props.valid);\n    }\n  }\n\n  set parentTransform (transform: Transform | null) {\n    if (!transform || this.parent === transform || this === transform) {\n      return;\n    }\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n    transform.addChild(this);\n    this.parent = transform;\n    this.parentMatrixDirty = true;\n  }\n\n  get parentTransform () {\n    return this.parent;\n  }\n\n  set parentMatrixDirty (val: boolean) {\n    if (this.dirtyFlags.parentMatrix !== val) {\n      this.dirtyFlags.parentMatrix = val;\n      this.dispatchValueChange();\n    }\n  }\n\n  get parentMatrixDirty () {\n    return this.dirtyFlags.parentMatrix;\n  }\n\n  // /**\n  //  * 自身数据修改 /  父变换修改 / 父变换的数据修改\n  //  * @returns\n  //  */\n  // get traceDirty (): boolean {\n  //   if (this.dirty || this.parentDirty) {\n  //     return true;\n  //   }\n  //\n  //   return !!(this.parent && this.parent.traceDirty);\n  // }\n\n  /**\n   * 设置位置\n   * @param x\n   * @param y\n   * @param z\n   */\n  setPosition (x: number, y: number, z: number) {\n    if (this.position.x !== x || this.position.y !== y || this.position.z !== z) {\n      this.position.x = x;\n      this.position.y = y;\n      this.position.z = z;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 在当前位置的基础上添加位置偏移\n   * @param x\n   * @param y\n   * @param z\n   */\n  translate (x: number, y: number, z: number) {\n    if (x !== 0 || y !== 0 || z !== 0) {\n      this.position.x += x;\n      this.position.y += y;\n      this.position.z += z;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n  /**\n   * 设置旋转\n   * @param x\n   * @param y\n   * @param z\n   */\n  setRotation (x: number, y: number, z: number) {\n    if (this.rotation.x !== x || this.rotation.y !== y || this.rotation.z !== z) {\n      this.rotation.x = x;\n      this.rotation.y = y;\n      this.rotation.z = z;\n      this.quat.setFromEuler(this.rotation);\n      // TODO 修正 GE 四元数旋转共轭问题\n      this.quat.conjugate();\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 设置四元数\n   * @param x\n   * @param y\n   * @param z\n   * @param w\n   * @private\n   */\n  setQuaternion (x: number, y: number, z: number, w: number) {\n    if (this.quat.x !== x || this.quat.y !== y || this.quat.z !== z || this.quat.w !== w) {\n      this.quat.x = x;\n      this.quat.y = y;\n      this.quat.z = z;\n      this.quat.w = w;\n      this.rotation.setFromQuaternion(this.quat);\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 设置缩放\n   * @param x\n   * @param y\n   * @param z\n   */\n  setScale (x: number, y: number, z: number) {\n    if (this.scale.x !== x || this.scale.y !== y || this.scale.z !== z) {\n      this.scale.x = x;\n      this.scale.y = y;\n      this.scale.z = z;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  setSize (x: number, y: number) {\n    if (this.size.x !== x || this.size.y !== y) {\n      this.size.x = x;\n      this.size.y = y;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 在当前旋转的基础上使用四元素添加旋转\n   * @param quat\n   */\n  rotateByQuat (quat: Quaternion) {\n    this.quat.multiply(quat);\n    this.rotation.setFromQuaternion(this.quat);\n    this.dirtyFlags.localData = true;\n    this.dispatchValueChange();\n  }\n\n  /**\n   * 在当前缩放基础上设置缩放系数\n   * @param x\n   * @param y\n   * @param z\n   */\n  scaleBy (x: number, y: number, z: number) {\n    this.scale.x *= x;\n    this.scale.y *= y;\n    this.scale.z *= z;\n    this.dirtyFlags.localData = true;\n    this.dispatchValueChange();\n  }\n\n  /**\n   * 设置锚点\n   * @param x\n   * @param y\n   */\n  setAnchor (x: number, y: number) {\n    if (this.anchor.x !== x || this.anchor.y !== y) {\n      this.anchor.x = x;\n      this.anchor.y = y;\n      this.dirtyFlags.localData = true;\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 批量设置 transform 属性\n   * @param props - 要设置的属性\n   * @param reverseEuler - 设置 rotation时，欧拉角是否需要取负值\n   */\n  setTransform (props: TransformProps, reverseEuler?: boolean) {\n    const { position, rotation, scale, size, quat, name, anchor } = props;\n\n    if (name) {\n      this.name = name;\n    }\n    if (position) {\n      if (position instanceof Vector3) {\n        this.setPosition(position.x, position.y, position.z);\n      } else {\n        this.setPosition(position[0], position[1], position[2]);\n      }\n    }\n    if (quat) {\n      if (quat instanceof Quaternion) {\n        this.setQuaternion(quat.x, quat.y, quat.z, quat.w);\n      } else {\n        this.setQuaternion(quat[0], quat[1], quat[2], quat[3]);\n      }\n    } else if (rotation) {\n      const mul = reverseEuler ? -1 : 1;\n\n      if (rotation instanceof Euler) {\n        this.setRotation(rotation.x * mul, rotation.y * mul, rotation.z * mul);\n      } else {\n        this.setRotation(rotation[0] * mul, rotation[1] * mul, rotation[2] * mul);\n      }\n    }\n    if (scale) {\n      if (scale instanceof Vector3) {\n        this.setScale(scale.x, scale.y, scale.z);\n      } else {\n        this.setScale(scale[0], scale[1], scale[2]);\n      }\n    }\n    if (size) {\n      this.setSize(size.x, size.y);\n    }\n    if (anchor) {\n      if (anchor instanceof Vector2) {\n        this.setAnchor(anchor.x, anchor.y);\n      } else {\n        this.setAnchor(anchor[0], anchor[1]);\n      }\n    }\n  }\n\n  /**\n   * 添加子变换\n   * @param child - 要添加的子变换\n   */\n  addChild (child: Transform) {\n    addItem(this.children, child);\n  }\n\n  /**\n   * 移除子变换\n   */\n  removeChild (child: Transform) {\n    removeItem(this.children, child);\n  }\n\n  /**\n   * 获取当前的旋转量\n   * @returns\n   */\n  getRotation (): Euler {\n    return Transform.getRotation(this.quat, new Euler());\n  }\n\n  /**\n   * 获取当前的四元数\n   * @returns\n   */\n  getQuaternion (): Quaternion {\n    return this.quat;\n  }\n\n  /**\n   * 更新元素自身变换矩阵\n   */\n  updateLocalMatrix () {\n    if (this.valid) {\n      if (this.dirtyFlags.localData) {\n        this.localMatrix.compose(this.position, this.quat, this.scale, this.anchor);\n        this.dirtyFlags.localMatrix = true;\n      }\n      this.dirtyFlags.localData = false;\n    } else {\n      if (!this.localMatrix.isIdentity()) {\n        this.localMatrix.identity();\n        this.dirtyFlags.localMatrix = true;\n      }\n    }\n  }\n\n  /**\n   * 获取自身变换对应的模型矩阵\n   * 数据修改且需要生效时更新自身矩阵\n   * 当变换不需要生效时返回单位矩阵\n   * @returns\n   */\n  getMatrix (): Matrix4 {\n    this.updateLocalMatrix();\n\n    return this.localMatrix;\n  }\n  /**\n   * 获取父矩阵，如果有多级父节点，返回整体变换\n   * @returns\n   */\n  getParentMatrix (): Matrix4 | undefined {\n    if (this.parent) {\n      this.parentMatrix = this.parent.getWorldMatrix();\n      this.dirtyFlags.parentMatrix = this.dirtyFlags.parentMatrix || this.parent.dirtyFlags.localMatrix || this.parent.dirtyFlags.worldMatrix;\n    }\n\n    return this.parentMatrix;\n  }\n\n  /**\n   * 获取包含自身变换和父变换的模型变换矩阵\n   * @returns\n   */\n  getWorldMatrix (): Matrix4 {\n    const localMatrix = this.getMatrix();\n    const parentMatrix = this.getParentMatrix();\n\n    if (this.dirtyFlags.localMatrix || this.dirtyFlags.parentMatrix) {\n      if (parentMatrix) {\n        this.worldMatrix.multiplyMatrices(parentMatrix, localMatrix);\n      } else {\n        this.worldMatrix.copyFrom(localMatrix);\n      }\n      this.dirtyFlags.worldMatrix = true;\n      this.dirtyFlags.localMatrix = false;\n      this.dirtyFlags.parentMatrix = false;\n    }\n\n    return this.worldMatrix;\n  }\n\n  /**\n   * 获取联合变换后的最终缩放因子\n   * @returns\n   */\n  getWorldScale (): Vector3 {\n    const cache = this.worldTRSCache;\n\n    if (this.dirtyFlags.worldMatrix) {\n      const mat = this.getWorldMatrix();\n\n      mat.decompose(cache.position, cache.quat, cache.scale);\n      this.dirtyFlags.worldMatrix = false;\n    }\n\n    return this.worldTRSCache.scale.clone();\n  }\n\n  /**\n   * 获取联合变换后的最终位置\n   * @returns\n   */\n  getWorldPosition (): Vector3 {\n    this.updateTRSCache();\n\n    return this.worldTRSCache.position.clone();\n  }\n\n  /**\n   * 设置世界坐标位置\n   * @param x - 世界坐标 x\n   * @param y - 世界坐标 y\n   * @param z - 世界坐标 z\n   */\n  setWorldPosition (x: number, y: number, z: number) {\n    const parentMatrix = this.getParentMatrix();\n\n    if (parentMatrix) {\n      // 有父节点：需要将世界坐标转换为局部坐标\n      // 提取父矩阵的变换信息\n      tempVector3.set(0, 0, 0);\n      tempQuat.set(0, 0, 0, 1);\n      tempVector3Second.set(1, 1, 1);\n\n      parentMatrix.decompose(tempVector3, tempQuat, tempVector3Second);\n\n      // 计算局部位置：先减去父位置，再应用逆旋转和逆缩放\n      // 复用 tempVector3 作为 localPos\n      tempVector3.set(x - tempVector3.x, y - tempVector3.y, z - tempVector3.z);\n\n      // 应用逆旋转\n      tempQuat.invert();\n      tempVector3.applyQuaternion(tempQuat);\n\n      // 应用逆缩放\n      tempVector3.x = tempVector3Second.x !== 0 ? tempVector3.x / tempVector3Second.x : 0;\n      tempVector3.y = tempVector3Second.y !== 0 ? tempVector3.y / tempVector3Second.y : 0;\n      tempVector3.z = tempVector3Second.z !== 0 ? tempVector3.z / tempVector3Second.z : 0;\n\n      this.setPosition(tempVector3.x, tempVector3.y, tempVector3.z);\n    } else {\n      // 没有父节点：世界坐标 = 局部坐标\n      this.setPosition(x, y, z);\n    }\n  }\n\n  /**\n   * 获取联合变换后的最终旋转量\n   * @returns\n   */\n  getWorldRotation (): Euler {\n    this.updateTRSCache();\n\n    return Transform.getRotation(this.worldTRSCache.quat, new Euler());\n  }\n\n  /**\n   * 根据世界变换矩阵计算位移、旋转、缩放向量\n   * @param position\n   * @param quat\n   * @param scale\n   */\n  assignWorldTRS (position?: Vector3, quat?: Quaternion, scale?: Vector3) {\n    this.updateTRSCache();\n    if (position) {\n      position.copyFrom(this.worldTRSCache.position);\n    }\n    if (quat) {\n      quat.copyFrom(this.worldTRSCache.quat);\n    }\n    if (scale) {\n      scale.copyFrom(this.worldTRSCache.scale);\n    }\n  }\n\n  /**\n   * 拆解并复制指定矩阵到自身变换\n   * @param m4\n   * @param scale\n   * @returns\n   */\n  cloneFromMatrix (m4: Matrix4, scale?: Vector3) {\n    m4.decompose(this.position, this.quat, this.scale);\n    this.rotation.setFromQuaternion(this.quat.clone().conjugate());\n    if (scale) {\n      scale.copyFrom(this.scale);\n    }\n    this.dirtyFlags.localData = true;\n    this.dispatchValueChange();\n  }\n\n  /**\n   * 设置 Transform 生效 / 失效， 默认元素生命周期开始后生效，结束后失效\n   */\n  setValid (val: boolean) {\n    if (this.valid !== val) {\n      this.valid = val;\n      if (!val) {\n        this.localMatrix.identity();\n        this.dirtyFlags.localMatrix = true;\n      } else {\n        this.dirtyFlags.localData = true;\n      }\n      this.dispatchValueChange();\n    }\n  }\n\n  /**\n   * 获取 Transform 是否生效\n   */\n  getValid (): boolean {\n    return this.valid;\n  }\n\n  toData () {\n    const transformData = this.taggedProperties;\n\n    transformData.position = this.position.clone();\n    transformData.eulerHint = { x: this.rotation.x, y: this.rotation.y, z: this.rotation.z };\n    transformData.scale = this.scale.clone();\n\n    return transformData;\n  }\n\n  fromData (data: spec.TransformData) {\n    const transformProps: TransformProps = {};\n\n    transformProps.position = new Vector3().copyFrom(data.position);\n    //@ts-expect-error\n    if (data.quat) {\n      //@ts-expect-error\n      transformProps.quat = new Quaternion(data.quat.x, data.quat.y, data.quat.z, data.quat.w);\n    } else {\n      transformProps.rotation = new Euler(data.eulerHint.x, data.eulerHint.y, data.eulerHint.z);\n    }\n    transformProps.scale = new Vector3().copyFrom(data.scale);\n    if (data.size) {\n      transformProps.size = new Vector2().copyFrom(data.size);\n    }\n    if (data.anchor) {\n      transformProps.anchor = new Vector2().copyFrom(data.anchor);\n    }\n    this.setTransform(transformProps);\n  }\n\n  dispose (): void { }\n\n  private updateTRSCache () {\n    const worldMatrix = this.getWorldMatrix();\n\n    if (this.dirtyFlags.worldMatrix) {\n      const cache = this.worldTRSCache;\n\n      worldMatrix.decompose(cache.position, cache.quat, cache.scale);\n      this.dirtyFlags.worldMatrix = false;\n    }\n  }\n\n  private dispatchValueChange () {\n    this.children.forEach(c => {\n      c.parentMatrixDirty = true;\n    });\n  }\n}\n","import { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Euler } from '@galacean/effects-math/es/core/euler';\nimport { DEG2RAD } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { Transform } from './transform';\n\ninterface CameraOptionsBase {\n  /**\n   * 相机近平面\n   */\n  near: number,\n  /**\n   * 相机远平面\n   */\n  far: number,\n  /**\n   * 视锥体垂直视野角度\n   */\n  fov: number,\n  /**\n   * 视锥体的长宽比\n   */\n  aspect: number,\n  /**\n   * 相机的裁剪模式\n   */\n  clipMode: spec.CameraClipMode,\n}\n\n/**\n *\n */\nexport interface CameraOptions extends CameraOptionsBase {\n  /**\n   * 相机的位置\n   */\n  position: spec.vec3,\n  /**\n   * 相机的旋转，欧拉角\n   */\n  rotation: spec.vec3,\n  /**\n   * 相机的旋转，四元数\n   */\n  quat?: spec.vec4,\n  /**\n   * 画布的像素宽度\n   */\n  pixelWidth: number,\n  /**\n   * 画布的像素高度\n   */\n  pixelHeight: number,\n}\n\nexport interface CameraOptionsEx extends CameraOptionsBase {\n  /**\n   * 相机的位置\n   */\n  position: Vector3,\n  /**\n   * 相机的旋转，欧拉角\n   */\n  rotation: Euler,\n  /**\n   * 相机的旋转，四元数\n   */\n  quat?: Quaternion,\n}\n\nconst tmpScale = new Vector3(1, 1, 1);\n\n/**\n * 合成的相机对象，采用透视投影\n */\nexport class Camera {\n\n  /**\n   * @internal\n   */\n  transform: Transform = new Transform();\n  /**\n   * 画布的像素宽度\n   */\n  pixelWidth = 0;\n  /**\n   * 画布的像素高度\n   */\n  pixelHeight = 0;\n  /**\n   * 编辑器用于缩放画布\n   */\n  private viewportMatrix = Matrix4.fromIdentity();\n  private options: CameraOptionsBase;\n  private viewMatrix = Matrix4.fromIdentity();\n  private projectionMatrix = Matrix4.fromIdentity();\n  private viewProjectionMatrix = Matrix4.fromIdentity();\n  private inverseViewMatrix = Matrix4.fromIdentity();\n  private inverseProjectionMatrix: Matrix4 | null;\n  private inverseViewProjectionMatrix: Matrix4 | null;\n  private dirty = true;\n\n  /**\n   *\n   * @param name - 相机名称\n   * @param options\n   */\n  constructor (\n    public name: string,\n    options: Partial<CameraOptions> = {},\n  ) {\n    const {\n      near = 0.1,\n      far = 20,\n      fov = 60,\n      aspect = 1,\n      clipMode = spec.CameraClipMode.portrait,\n      position = [0, 0, 8],\n      rotation = [0, 0, 0],\n      pixelWidth = 0,\n      pixelHeight = 0,\n    } = options;\n\n    const euler = new Euler(rotation[0], rotation[1], rotation[2]);\n    const quat = new Quaternion().setFromEuler(euler);\n\n    this.options = { near, far, fov, aspect, clipMode };\n    this.pixelWidth = pixelWidth;\n    this.pixelHeight = pixelHeight;\n\n    this.transform.setPosition(position[0], position[1], position[2]);\n    this.transform.setQuaternion(quat.x, quat.y, quat.z, quat.w);\n    this.dirty = true;\n    this.updateMatrix();\n  }\n\n  /**\n   * 设置相机近平面\n   * @param near\n   */\n  set near (near: number) {\n    if (this.options.near !== near) {\n      this.options.near = near;\n      this.dirty = true;\n    }\n  }\n  get near (): number {\n    return this.options.near;\n  }\n\n  /**\n   * 设置相机远平面\n   * @param far\n   */\n  set far (far: number) {\n    if (this.options.far !== far) {\n      this.options.far = far;\n      this.dirty = true;\n    }\n  }\n  get far (): number {\n    return this.options.far;\n  }\n\n  /**\n   * 设置相机视锥体垂直视野角度\n   * @param fov\n   */\n  set fov (fov: number) {\n    if (this.options.fov !== fov) {\n      this.options.fov = fov;\n      this.dirty = true;\n    }\n  }\n  get fov () {\n    return this.options.fov;\n  }\n\n  /**\n   * 设置相机视锥体的长宽比\n   * @param aspect\n   */\n  set aspect (aspect: number) {\n    if (this.options.aspect !== aspect) {\n      this.options.aspect = aspect;\n      this.dirty = true;\n    }\n  }\n  get aspect () {\n    return this.options.aspect;\n  }\n\n  /**\n   * 相机的裁剪模式\n   * @param clipMode\n   */\n  set clipMode (clipMode: spec.CameraClipMode | undefined) {\n    if (clipMode !== undefined && this.options.clipMode !== clipMode) {\n      this.options.clipMode = clipMode;\n      this.dirty = true;\n    }\n  }\n  get clipMode () {\n    return this.options.clipMode;\n  }\n\n  /**\n   * 设置相机的本地位置\n   * @param value\n   */\n  set position (value: Vector3) {\n    if (!this.transform.position.equals(value)) {\n      this.transform.setPosition(value.x, value.y, value.z);\n      this.dirty = true;\n    }\n  }\n  /**\n   * 获取相机的本地位置\n   */\n  get position () {\n    return this.transform.position.clone();\n  }\n\n  /**\n   * 获取相机的世界位置\n   * @since 2.3.0\n   */\n  get worldPosition () {\n    return this.transform.getWorldPosition();\n  }\n\n  /**\n   * 设置相机的旋转角度\n   * @param value\n   */\n  set rotation (value: Euler) {\n    if (!this.transform.rotation.equals(value)) {\n      this.transform.setRotation(value.x, value.y, value.z);\n      this.dirty = true;\n    }\n  }\n  get rotation () {\n    return this.transform.rotation.clone();\n  }\n\n  /**\n   * 设置相机变换\n   * @since 2.3.0\n   * @param transform\n   */\n  setTransform (transform: Transform) {\n    this.transform.parentTransform = transform.parentTransform;\n    this.transform.cloneFromMatrix(transform.getMatrix());\n    this.dirty = true;\n  }\n\n  setViewportMatrix (matrix: Matrix4) {\n    this.viewportMatrix = matrix.clone();\n    this.dirty = true;\n  }\n\n  getViewportMatrix () {\n    return this.viewportMatrix;\n  }\n\n  /**\n   * 获取相机的视图变换矩阵\n   * @return\n   */\n  getViewMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.viewMatrix.clone();\n  }\n\n  /**\n   * 获取视图变换的逆矩阵\n   */\n  getInverseViewMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.inverseViewMatrix.clone();\n  }\n\n  /**\n   * 获取相机的投影矩阵\n   * @return\n   */\n  getProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.projectionMatrix.clone();\n  }\n\n  /**\n   * 获取相机投影矩阵的逆矩阵\n   * @return\n   */\n  getInverseProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.inverseProjectionMatrix?.clone() as Matrix4;\n  }\n\n  /**\n   * 获取相机的 VP 矩阵\n   * @return\n   */\n  getViewProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n\n    return this.viewProjectionMatrix.clone();\n  }\n\n  /**\n   * 获取相机 VP 矩阵的逆矩阵\n   * @return\n   */\n  getInverseViewProjectionMatrix (): Matrix4 {\n    this.updateMatrix();\n    if (!this.inverseViewProjectionMatrix) {\n      this.inverseViewProjectionMatrix = this.viewProjectionMatrix.clone();\n      this.inverseViewProjectionMatrix.invert();\n    }\n\n    return this.inverseViewProjectionMatrix.clone();\n  }\n\n  /**\n   * 根据相机的视图投影矩阵对指定模型矩阵做变换\n   * @param out - 结果矩阵\n   * @param model - 模型变换矩阵\n   */\n  getModelViewProjection (out: Matrix4, model: Matrix4) {\n    return out.multiplyMatrices(this.viewProjectionMatrix, model);\n  }\n\n  /**\n   * 获取归一化坐标和 3D 世界坐标的换算比例，使用 ViewProjection 矩阵\n   * @param z - 当前的位置 z\n   */\n  getInverseVPRatio (z: number) {\n    const pos = new Vector3(this.position.x, this.position.y, z);\n    const mat = this.getViewProjectionMatrix();\n    const inverseMat = this.getInverseViewProjectionMatrix();\n\n    if (!this.viewportMatrix.isIdentity()) {\n      const viewportMatrix = this.viewportMatrix.clone();\n\n      inverseMat.premultiply(viewportMatrix);\n      mat.multiply(viewportMatrix.invert());\n    }\n\n    const { z: nz } = mat.projectPoint(pos);\n    const { x: xMax, y: yMax } = inverseMat.projectPoint(new Vector3(1, 1, nz));\n    const { x: xMin, y: yMin } = inverseMat.projectPoint(new Vector3(-1, -1, nz));\n\n    return new Vector3((xMax - xMin) / 2, (yMax - yMin) / 2, 0);\n  }\n\n  /**\n   * 设置相机的旋转四元数\n   * @param value - 旋转四元数\n   */\n  setQuat (value: Quaternion) {\n    if (!this.transform.getQuaternion().equals(value)) {\n      this.transform.setQuaternion(value.x, value.y, value.z, value.w);\n      this.dirty = true;\n    }\n  }\n\n  /**\n   * 获取相机旋转对应的四元数\n   * @returns\n   */\n  getQuat (): Quaternion {\n    return this.transform.quat.clone();\n  }\n\n  /**\n   * 获取相机内部的 options\n   * @returns 相机 options\n   */\n  getOptions (): CameraOptionsEx {\n    return {\n      ...this.options,\n      position: this.position.clone(),\n      rotation: this.rotation.clone(),\n    };\n  }\n\n  /**\n   * 复制指定相机元素的属性到当前相机\n   * @param camera\n   */\n  copy (camera: Camera) {\n    const {\n      near,\n      far,\n      fov,\n      clipMode,\n      aspect,\n      position,\n      rotation,\n    } = camera;\n\n    this.near = near;\n    this.far = far;\n    this.fov = fov;\n    this.clipMode = clipMode;\n    this.aspect = aspect;\n    this.position = position;\n    this.rotation = rotation;\n    this.updateMatrix();\n  }\n\n  /**\n   * 更新相机相关的矩阵，获取矩阵前会自动调用\n   */\n  updateMatrix () {\n    if (this.dirty) {\n      const { fov, aspect, near, far, clipMode } = this.options;\n\n      this.projectionMatrix.perspective(\n        fov * DEG2RAD, aspect, near, far,\n        clipMode === spec.CameraClipMode.portrait\n      );\n      this.projectionMatrix.premultiply(this.viewportMatrix);\n      this.inverseViewMatrix.compose(this.position, this.getQuat(), tmpScale);\n      this.inverseViewMatrix.premultiply(this.transform.getParentMatrix() ?? Matrix4.IDENTITY);\n      this.viewMatrix.copyFrom(this.inverseViewMatrix).invert();\n      this.viewProjectionMatrix.multiplyMatrices(this.projectionMatrix, this.viewMatrix);\n      this.inverseViewProjectionMatrix = null;\n      this.dirty = false;\n    }\n  }\n\n  /**\n   * 将世界坐标转换为屏幕像素坐标\n   * @param position - 世界坐标\n   * @param out - 输出的屏幕坐标，如果不传则创建新的 Vector3\n   * @returns 屏幕坐标 (x, y 为像素坐标，左下角为(0,0)，右上角为(width,height)，z 为深度比例 [0,1]，0=近平面，1=远平面)\n   */\n  worldToScreenPoint (position: Vector3, out?: Vector3): Vector3 {\n    this.updateMatrix();\n\n    const result = out ?? new Vector3();\n    const vpMatrix = this.getViewProjectionMatrix();\n\n    // 应用视图投影矩阵，得到 NDC 坐标 [-1, 1]\n    result.set(position.x, position.y, position.z);\n    vpMatrix.projectPoint(result, result);\n\n    // 将 NDC 坐标转换为像素坐标\n    // NDC: x,y in [-1, 1], 其中 (-1,-1) 是左下角，(1,1) 是右上角\n    // Screen: x,y in [0, width/height], 其中 (0,0) 是左下角\n    result.x = (result.x + 1) * 0.5 * this.pixelWidth;\n    result.y = (result.y + 1) * 0.5 * this.pixelHeight;\n    // 将 NDC z 值从 [-1, 1] 转换为深度比例 [0, 1]\n    // -1 (近平面) -> 0, 1 (远平面) -> 1\n    result.z = (result.z + 1) * 0.5;\n\n    return result;\n  }\n\n  /**\n   * 将屏幕像素坐标转换为世界坐标\n   * @param position - 屏幕坐标 (x, y 为像素坐标，左下角为(0,0)，z 为深度比例 [0,1]，0=近平面，1=远平面)\n   * @param out - 输出的世界坐标，如果不传则创建新的 Vector3\n   * @returns 世界坐标\n   */\n  screenToWorldPoint (position: Vector3, out?: Vector3): Vector3 {\n    this.updateMatrix();\n\n    const result = out ?? new Vector3();\n    const invVPMatrix = this.getInverseViewProjectionMatrix();\n\n    // 将像素坐标转换为 NDC 坐标 [-1, 1]\n    const ndcX = (position.x / this.pixelWidth) * 2 - 1;\n    const ndcY = (position.y / this.pixelHeight) * 2 - 1;\n    // 将深度比例 [0, 1] 转换为 NDC z 值 [-1, 1]\n    // 0 (近平面) -> -1, 1 (远平面) -> 1\n    const ndcZ = position.z * 2 - 1;\n\n    // 应用逆视图投影矩阵\n    result.set(ndcX, ndcY, ndcZ);\n    invVPMatrix.projectPoint(result, result);\n\n    return result;\n  }\n}\n","export const SPRITE_VERTEX_STRIDE = 6;\n\nexport const SEMANTIC_PRE_COLOR_ATTACHMENT_0 = 'PRE_COLOR_0';\nexport const SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0 = 'PRE_COLOR_SIZE_0';\nexport const SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0 = 'PRE_MAIN_COLOR_0';\nexport const SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0 = 'PRE_MAIN_COLOR_SIZE_0';\n\nexport const PLAYER_OPTIONS_ENV_EDITOR = 'editor';\n\nexport const HELP_LINK = {\n  'Item duration can\\'t be less than 0': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#AOnQS',\n  'ValueType: 21/22 is not supported': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#smO1b',\n  'Container size overflowed': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#MvjnY',\n  'Container is not an HTMLElement': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#WZaWg',\n  'Invalid container size': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#lLlSW',\n  'DPI overflowed': 'https://www.galacean.com/effects/user/gasrv4ka5sacrwpg#ulfNT',\n};\n","const toHalf = (function () {\n  const floatView = new Float32Array(1);\n  const int32View = new Int32Array(floatView.buffer);\n\n  /* This method is faster than the OpenEXR implementation (very often\n   * used, eg. in Ogre), with the additional benefit of rounding, inspired\n   * by James Tursa?s half-precision code. */\n  return function toHalf (val: number) {\n    floatView[0] = val;\n    const x = int32View[0];\n\n    let bits = (x >> 16) & 0x8000; /* Get the sign */\n    let m = (x >> 12) & 0x07ff; /* Keep one extra bit for rounding */\n    const e = (x >> 23) & 0xff; /* Using int is faster here */\n\n    /* If zero, or denormal, or exponent underflows too much for a denormal\n     * half, return signed zero. */\n    if (e < 103) {\n      return bits;\n    }\n\n    /* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\n    if (e > 142) {\n      bits |= 0x7c00;\n      /* If exponent was 0xff and one mantissa bit was set, it means NaN,\n       * not Inf, so make sure we set one mantissa bit too. */\n      bits |= ((e == 255) ? 0 : 1) && (x & 0x007fffff);\n\n      return bits;\n    }\n\n    /* If exponent underflows but not too much, return a denormal */\n    if (e < 113) {\n      m |= 0x0800;\n      /* Extra rounding may overflow and set mantissa to 0 and exponent\n       * to 1, which is OK. */\n      bits |= (m >> (114 - e)) + ((m >> (113 - e)) & 1);\n\n      return bits;\n    }\n\n    bits |= ((e - 112) << 10) | (m >> 1);\n    /* Extra rounding. An overflow will set mantissa to 0 and increment\n     * the exponent, which is OK. */\n    bits += m & 1;\n\n    return bits;\n  };\n\n}());\n\nexport class Float16ArrayWrapper {\n  data: Uint16Array;\n\n  constructor (num: number | ArrayLike<number>) {\n    if (Number.isInteger(num)) {\n      this.data = new Uint16Array(num as number);\n    } else if (num && typeof num === 'object' && Number.isInteger(num.length)) {\n      const data = this.data = new Uint16Array(num.length);\n\n      for (let i = 0; i < data.length; i++) {\n        data[i] = toHalf(num[i]);\n      }\n    }\n  }\n\n  set (number: ArrayLike<number>, startIndex: number) {\n    for (let i = 0; i < number.length; i++) {\n      this.data[i + startIndex] = toHalf(number[i]);\n    }\n  }\n}\n","import { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport type { ValueGetter } from './value-getters';\n\nexport function translatePoint (x: number, y: number): number[] {\n  const origin = [-.5, .5, -.5, -.5, .5, .5, .5, -.5];\n\n  for (let i = 0; i < 8; i += 2) {\n    origin[i] += x;\n    origin[i + 1] += y;\n  }\n\n  return origin;\n}\n\nconst tempEuler = new Euler();\nconst tempMat4 = new Matrix4();\n\nexport type ItemLinearVelOverLifetime = {\n  asMovement?: boolean,\n  x?: ValueGetter<number>,\n  y?: ValueGetter<number>,\n  z?: ValueGetter<number>,\n  enabled?: boolean,\n};\n\nexport interface TranslateTarget {\n  speedOverLifetime?: ValueGetter<number>,\n  gravityModifier?: ValueGetter<number>,\n  linearVelOverLifetime?: ItemLinearVelOverLifetime,\n  orbitalVelOverLifetime?: any,\n}\n\nexport function calculateTranslation (\n  out: Vector3,\n  target: TranslateTarget,\n  acc: Vector3,\n  time: number,\n  duration: number,\n  posData: Vector3,\n  velData: Vector3,\n): Vector3 {\n  const ret = out;\n  const lifetime = time / duration;\n  let speedIntegrate = time;\n  const speedOverLifetime = target.speedOverLifetime;\n\n  if (speedOverLifetime) {\n    speedIntegrate = speedOverLifetime.getIntegrateValue(0, time, duration);\n  }\n\n  const d = target.gravityModifier ? target.gravityModifier.getIntegrateByTime(0, time) : 0;\n\n  ret.copyFrom(posData);\n  ret.addScaledVector(velData, speedIntegrate);\n  ret.addScaledVector(acc, d);\n\n  const linearVelocityOverLifetime = target.linearVelOverLifetime || {};\n  const orbVelOverLifetime = target.orbitalVelOverLifetime || {};\n  const map = ['x', 'y', 'z'];\n\n  if (orbVelOverLifetime.enabled) {\n    const center = new Vector3();\n\n    if (orbVelOverLifetime.center) {\n      center.setFromArray(orbVelOverLifetime.center);\n    }\n    const pos = ret.clone().subtract(center);\n    const asRotation = orbVelOverLifetime.asRotation;\n    const orbVel = map.map(pro => {\n      const value = orbVelOverLifetime[pro];\n\n      if (value) {\n        return (asRotation ? value.getValue(lifetime) : value.getIntegrateValue(0, time, duration));\n      }\n\n      return 0;\n    });\n\n    tempEuler.setFromArray(orbVel).negate();\n    tempMat4.setFromEuler(tempEuler);\n    const rot = tempMat4.transformPoint(pos);\n\n    ret.addVectors(center, rot);\n  }\n\n  if (linearVelocityOverLifetime.enabled) {\n    const asMovement = linearVelocityOverLifetime.asMovement;\n\n    const velocityXCurve = linearVelocityOverLifetime.x;\n    const velocityYCurve = linearVelocityOverLifetime.y;\n    const velocityZCurve = linearVelocityOverLifetime.z;\n\n    if (velocityXCurve) {\n      const curveValue = asMovement ? velocityXCurve.getValue(lifetime) : velocityXCurve.getIntegrateValue(0, time, duration);\n\n      ret.x = ret.x + curveValue;\n    }\n\n    if (velocityYCurve) {\n      const curveValue = asMovement ? velocityYCurve.getValue(lifetime) : velocityYCurve.getIntegrateValue(0, time, duration);\n\n      ret.y = ret.y + curveValue;\n    }\n\n    if (velocityZCurve) {\n      const curveValue = asMovement ? velocityZCurve.getValue(lifetime) : velocityZCurve.getIntegrateValue(0, time, duration);\n\n      ret.z = ret.z + curveValue;\n    }\n  }\n\n  return ret;\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { vec2, vec3, vec4 } from '@galacean/effects-specification';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Ray } from '@galacean/effects-math/es/core/ray';\nimport type { TriangleLike } from '@galacean/effects-math/es/core/type';\nimport type { Camera } from '../camera';\n\nexport type vec = number[];\n\nexport function ensureVec3 (num?: any): vec3 {\n  return Array.isArray(num) ? [num[0], num[1], num[2]] : [0, 0, 0];\n}\n\nexport function vecFill<T extends vec | vec3 | vec4 | vec2> (out: T | number[], number: number): T {\n  for (let i = 0, len = out.length; i < len; i++) {\n    out[i] = number;\n  }\n\n  return out as T;\n}\n\nexport function vecMulCombine<T extends vec | vec3 | vec4 | vec2> (out: T | number[] | Float32Array, a?: T, b?: T): T {\n  if (a && b) {\n    for (let i = 0, len = a.length; i < len; i++) {\n      out[i] = a[i] * b[i];\n    }\n  } else if (a) {\n    if (out !== a) {\n      for (let i = 0; i < a.length; i++) {\n        out[i] = a[i];\n      }\n    }\n  } else if (b) {\n    if (out !== b) {\n      for (let i = 0; i < b.length; i++) {\n        out[i] = b[i];\n      }\n    }\n  }\n\n  return out as T;\n}\n\nexport const particleOriginTranslateMap: Record<number, vec2> = {\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_CENTER]: [0, 0],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM]: [0, -0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP]: [0, 0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP]: [-0.5, 0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER]: [-0.5, 0],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM]: [-0.5, -0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER]: [0.5, 0],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM]: [0.5, -0.5],\n  [spec.ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP]: [0.5, 0.5],\n};\n\nexport function nearestPowerOfTwo (value: number): number {\n  return 2 ** Math.round(Math.log(value) / Math.LN2);\n}\n\nexport function setRayFromCamera (x: number, y: number, camera: Camera) {\n  const origin = camera.position;\n  const direction = new Vector3(x, y, 0);\n  const dir = new Vector3();\n\n  const mat = camera.getInverseViewProjectionMatrix();\n\n  mat.projectPoint(direction, dir);\n  dir.subtract(origin);\n\n  return new Ray(origin, dir);\n}\n\nexport function trianglesFromRect (position: Vector3, halfWidth: number, halfHeight: number): TriangleLike[] {\n  const { x, y, z } = position;\n  const p0 = new Vector3(x - halfWidth, y + halfHeight, z);\n  const p1 = new Vector3(x - halfWidth, y - halfHeight, z);\n  const p2 = new Vector3(x + halfWidth, y - halfHeight, z);\n  const p3 = new Vector3(x + halfWidth, y + halfHeight, z);\n\n  return [\n    { p0, p1, p2 },\n    { p0: p0.clone(), p1: p2.clone(), p2: p3 },\n  ];\n}\n\nexport function decimalEqual (a: number, b: number, epsilon = 0.000001) {\n  return Math.abs(a - b) < epsilon;\n}\n\nexport function numberToFix (a: number, fixed = 2) {\n  const base = Math.pow(10, fixed);\n\n  return Math.floor(a * base) / base;\n}\n","import { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport * as spec from '@galacean/effects-specification';\n\nexport const keyframeInfo = {\n  pointIndexCache : {\n    xIndex: 0,\n    yIndex: 0,\n  },\n  /**\n   * 根据不同关键帧类型，获取位于曲线上的点\n   */\n  getPointInCurve (keyframe: spec.BezierKeyframeValue): Vector2 {\n    const [_, data] = keyframe;\n    const { xIndex, yIndex } = this.getPointIndexInCurve(keyframe, this.pointIndexCache);\n    const time = data[xIndex];\n    const value = data[yIndex];\n\n    return new Vector2(time, value);\n  },\n\n  /**\n   * 根据不同关键帧类型，获取位于曲线上的点的索引\n   */\n  getPointIndexInCurve (keyframe: spec.BezierKeyframeValue, res?: {\n    xIndex: number,\n    yIndex: number,\n  }): {\n      xIndex: number,\n      yIndex: number,\n    } {\n    const [type, , markType] = keyframe;\n    // 不同类型，存放的时间不同\n    const index = type === spec.BezierKeyframeType.LINE ? 0\n      : type === spec.BezierKeyframeType.EASE_OUT ? 0\n        : type === spec.BezierKeyframeType.EASE_IN ? 2\n          : type === spec.BezierKeyframeType.EASE ? 2\n            : type === spec.BezierKeyframeType.HOLD ? (markType === spec.BezierKeyframeType.EASE_IN ? 2 : 0)\n              : 0;\n\n    if (res) {\n      res.xIndex = index;\n      res.yIndex = index + 1;\n\n      return res;\n    } else {\n      return { xIndex: index, yIndex: index + 1 };\n    }\n  },\n\n  /**\n   * 关键帧左侧是否为缓动类型（否则为线段）\n   */\n  isLeftSideEase (keyframe: spec.BezierKeyframeValue): keyframe is spec.EaseInKeyframeValue | spec.EaseKeyframeValue | spec.EaseHoldOutKeyframeValue {\n    const [keyframeType, _, markType] = keyframe;\n\n    // 定格关键帧的左侧类型，需要借助markType判断\n    if (keyframeType === spec.BezierKeyframeType.HOLD && this.isKeyframeTypeLeftSideEase(markType)) {\n      return true;\n    }\n\n    return this.isKeyframeTypeLeftSideEase(keyframeType);\n  },\n\n  /**\n   * 关键帧右侧是否为缓动类型（否则为线段）\n   */\n  isRightSideEase (keyframe: spec.BezierKeyframeValue): keyframe is spec.EaseOutKeyframeValue | spec.EaseKeyframeValue | spec.EaseHoldInKeyframeValue {\n    const [keyframeType, _, markType] = keyframe;\n\n    // 定格关键帧的右侧类型，需要借助markType判断\n    if (keyframeType === spec.BezierKeyframeType.HOLD && this.isKeyframeTypeRightSideEase(markType)) {\n      return true;\n    }\n\n    return this.isKeyframeTypeRightSideEase(keyframeType);\n  },\n\n  /**\n   * 关键帧左侧是否为缓动类型（否则为线段）\n   */\n  isKeyframeTypeLeftSideEase (keyframeType: spec.BezierKeyframeType) {\n    return [spec.BezierKeyframeType.EASE, spec.BezierKeyframeType.EASE_IN, spec.BezierKeyframeType.AUTO].includes(keyframeType);\n  },\n\n  /**\n   * 关键帧右侧是否为缓动类型（否则为线段）\n   */\n  isKeyframeTypeRightSideEase (keyframeType: spec.BezierKeyframeType) {\n    return [spec.BezierKeyframeType.EASE, spec.BezierKeyframeType.EASE_OUT, spec.BezierKeyframeType.AUTO].includes(keyframeType);\n  },\n\n  /**\n   * 是否为定格进关键帧\n   */\n  isHoldInKeyframe (keyframe: spec.BezierKeyframeValue) {\n    const [keyframeType, _, leftSubType] = keyframe;\n\n    return keyframeType === spec.BezierKeyframeType.HOLD && [spec.BezierKeyframeType.HOLD, spec.BezierKeyframeType.LINE_OUT, spec.BezierKeyframeType.EASE_OUT].includes(leftSubType);\n  },\n\n  /**\n   * 是否为定格出关键帧\n   */\n  isHoldOutKeyframe (keyframe: spec.BezierKeyframeValue) {\n    const [keyframeType, _, leftSubType] = keyframe;\n\n    return keyframeType === spec.BezierKeyframeType.HOLD && [spec.BezierKeyframeType.HOLD, spec.BezierKeyframeType.LINE, spec.BezierKeyframeType.EASE_IN].includes(leftSubType);\n  },\n};\n","import type * as spec from '@galacean/effects-specification';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { keyframeInfo } from './keyframe-info';\nimport { decimalEqual, numberToFix } from './utils';\nimport { assertExist } from '../utils';\n\nexport class BezierLengthData {\n  constructor (\n    public points: Array<{ partialLength: number, point: Vector3 }>,\n    public totalLength: number,\n  ) {\n  }\n}\nexport const BezierMap: Record<string, BezierEasing> = {};\nexport const BezierDataMap: Record<string, BezierLengthData> = {};\nconst NEWTON_ITERATIONS = 4;\nconst NEWTON_MIN_SLOPE = 0.001;\nconst SUBDIVISION_PRECISION = 0.0000001;\nconst SUBDIVISION_MAX_ITERATIONS = 10;\nconst CURVE_SEGMENTS = 300;\n\nconst kSplineTableSize = 11;\nconst kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nfunction A (a1: number, a2: number) { return 1.0 - 3.0 * a2 + 3.0 * a1; }\nfunction B (a1: number, a2: number) { return 3.0 * a2 - 6.0 * a1; }\nfunction C (a1: number) { return 3.0 * a1; }\n\n// A * t ^ 3 + B * t ^ 2 + C * t\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (t: number, a1: number, a2: number) {\n  return ((A(a1, a2) * t + B(a1, a2)) * t + C(a1)) * t;\n}\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (t: number, a1: number, a2: number) {\n  return 3.0 * A(a1, a2) * t * t + 2.0 * B(a1, a2) * t + C(a1);\n}\n\nfunction binarySubdivide (aX: number, aA: number, aB: number, mX1: number, mX2: number) {\n  let currentX, currentT, i = 0;\n\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX: number, aGuessT: number, mX1: number, mX2: number) {\n  for (let i = 0; i < NEWTON_ITERATIONS; ++i) {\n    const currentSlope = getSlope(aGuessT, mX1, mX2);\n\n    if (currentSlope === 0.0) { return aGuessT; }\n    const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n\n    aGuessT -= currentX / currentSlope;\n  }\n\n  return aGuessT;\n}\n\n// de Casteljau算法构建曲线\n/**\n * @param p1 起始点\n * @param p2 终点\n * @param p3 起始控制点\n * @param p4 终止控制点\n * @returns\n */\nexport function buildBezierData (p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): {\n  data: BezierLengthData,\n  interval: Vector3,\n} {\n  // 使用平移后的终点、控制点作为key\n  const s1 = numberToFix(p2.x - p1.x, 3) + '_' + numberToFix(p2.y - p1.y, 3) + '_' + numberToFix(p2.z - p1.z, 3);\n  const s2 = numberToFix(p3.x - p1.x, 3) + '_' + numberToFix(p3.y - p1.y, 3) + '_' + numberToFix(p3.z - p1.z, 3);\n  const s3 = numberToFix(p4.x - p1.x, 3) + '_' + numberToFix(p4.y - p1.y, 3) + '_' + numberToFix(p4.z - p1.z, 3);\n\n  const str = s1 + '&' + s2 + '&' + s3;\n\n  if (BezierDataMap[str]) {\n    return {\n      data: BezierDataMap[str],\n      interval: p1,\n    };\n  } else {\n    const samples = [];\n    let lastPoint = null, addedLength = 0, ptDistance = 0;\n    const curveSegments = CURVE_SEGMENTS;\n\n    for (let k = 0; k < curveSegments; k += 1) {\n      const point = new Vector3();\n      const perc = k / (curveSegments - 1);\n\n      ptDistance = 0;\n\n      point.x = 3 * Math.pow(1 - perc, 2) * perc * (p3.x - p1.x) + 3 * (1 - perc) * Math.pow(perc, 2) * (p4.x - p1.x) + Math.pow(perc, 3) * (p2.x - p1.x);\n      point.y = 3 * Math.pow(1 - perc, 2) * perc * (p3.y - p1.y) + 3 * (1 - perc) * Math.pow(perc, 2) * (p4.y - p1.y) + Math.pow(perc, 3) * (p2.y - p1.y);\n      point.z = 3 * Math.pow(1 - perc, 2) * perc * (p3.z - p1.z) + 3 * (1 - perc) * Math.pow(perc, 2) * (p4.z - p1.z) + Math.pow(perc, 3) * (p2.z - p1.z);\n\n      if (lastPoint !== null) {\n        ptDistance += Math.pow(point.x - lastPoint.x, 2);\n        ptDistance += Math.pow(point.y - lastPoint.y, 2);\n        ptDistance += Math.pow(point.z - lastPoint.z, 2);\n      }\n      lastPoint = point;\n      ptDistance = Math.sqrt(ptDistance);\n      addedLength += ptDistance;\n      samples[k] = {\n        partialLength: ptDistance,\n        point,\n      };\n\n    }\n    const data = new BezierLengthData(samples, addedLength);\n\n    BezierDataMap[str] = data;\n\n    return {\n      data,\n      interval: new Vector3(p1.x, p1.y, p1.z),\n    };\n  }\n\n}\n\nexport class BezierPath {\n  public readonly lengthData: BezierLengthData;\n  public readonly interval: Vector3;\n  public readonly totalLength: number;\n  private catching: {\n    lastPoint: number,\n    lastAddedLength: number,\n  } = {\n      lastPoint: 0,\n      lastAddedLength: 0,\n    };\n\n  constructor (public p1: Vector3, public p2: Vector3, public p3: Vector3, public p4: Vector3) {\n    const { data, interval } = buildBezierData(p1, p2, p3, p4);\n\n    this.lengthData = data;\n    this.interval = interval;\n    this.totalLength = data.totalLength;\n  }\n\n  /**\n   * 获取路径在指定比例长度上点的坐标\n   * @param percent 路径长度的比例\n   */\n  getPointInPercent (percent: number) {\n    const bezierData = this.lengthData;\n\n    if (percent === 0) {\n      return bezierData.points[0].point.clone().add(this.interval);\n    }\n\n    if (decimalEqual(1 - percent, 0)) {\n      return bezierData.points[CURVE_SEGMENTS - 1].point.clone().add(this.interval);\n    }\n    if (decimalEqual(bezierData.totalLength, 0)) {\n      return this.p1.clone();\n    }\n\n    const point = new Vector3();\n    const segmentLength = numberToFix(bezierData.totalLength * percent, 4);\n\n    let addedLength = this.catching.lastAddedLength;\n    let j = this.catching.lastPoint;\n\n    if (decimalEqual(addedLength, segmentLength)) {\n      return bezierData.points[j].point.clone().add(this.interval);\n    }\n\n    let flag = true;\n    let dir = 1;\n\n    if (segmentLength < addedLength) {\n      dir = -1;\n    }\n\n    while (flag) {\n      if (segmentLength >= addedLength) {\n        if (j === CURVE_SEGMENTS - 1) {\n          point.x = bezierData.points[j].point.x;\n          point.y = bezierData.points[j].point.y;\n          point.z = bezierData.points[j].point.z;\n\n          break;\n        }\n        if (segmentLength < addedLength + bezierData.points[j + 1].partialLength) {\n          const segmentPerc = (segmentLength - addedLength) / bezierData.points[j + 1].partialLength;\n\n          point.x = bezierData.points[j].point.x + (bezierData.points[j + 1].point.x - bezierData.points[j].point.x) * segmentPerc;\n          point.y = bezierData.points[j].point.y + (bezierData.points[j + 1].point.y - bezierData.points[j].point.y) * segmentPerc;\n          point.z = bezierData.points[j].point.z + (bezierData.points[j + 1].point.z - bezierData.points[j].point.z) * segmentPerc;\n\n          break;\n        }\n      }\n      if (dir > 0 && j < (CURVE_SEGMENTS - 1)) {\n        j += dir;\n        addedLength += numberToFix(bezierData.points[j].partialLength, 5);\n      } else if (dir < 0 && j > 0) {\n        addedLength -= numberToFix(bezierData.points[j].partialLength, 5);\n        j += dir;\n      } else {\n        flag = false;\n      }\n    }\n    this.catching.lastPoint = j;\n    this.catching.lastAddedLength = addedLength;\n\n    point.add(this.interval);\n\n    return point;\n  }\n\n}\n\nexport class BezierQuat {\n  private temp = new Quaternion();\n  public readonly totalLength: number;\n\n  constructor (public p1: Quaternion, public p2: Quaternion, public p3: Quaternion, public p4: Quaternion) {\n    this.totalLength = 0;\n  }\n\n  /**\n   * 获取路径在指定比例长度上点的坐标\n   * @param percent 路径长度的比例\n   */\n  getPointInPercent (percent: number) {\n    if (percent === 0) {\n      return this.temp.copyFrom(this.p1);\n    }\n\n    if (decimalEqual(1 - percent, 0)) {\n      return this.temp.copyFrom(this.p2);\n    }\n\n    QuaternionInner.slerpFlat(this.temp, this.p1, this.p2, percent);\n\n    return this.temp;\n  }\n\n}\n\nexport class BezierEasing {\n  private precomputed = false;\n  private mSampleValues: number[];\n\n  private control1 = new Vector2();\n  private control2 = new Vector2();\n  private weighted = false;\n  private isConstant = false;\n\n  constructor ();\n  constructor (control1: number, control2: number);\n  constructor (control1X: number, control1Y: number, control2X: number, control2Y: number);\n  constructor (control1YOrControl1X?: number, control2YOrControl1Y?: number, control2X?: number, control2Y?: number) {\n    this.mSampleValues = new Array(kSplineTableSize);\n\n    if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined && control2X !== undefined && control2Y !== undefined) {\n      this.control1.x = control1YOrControl1X;\n      this.control1.y = control2YOrControl1Y;\n      this.control2.x = control2X;\n      this.control2.y = control2Y;\n      this.weighted = true;\n    } else if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined) {\n      this.control1.x = 1 / 3;\n      this.control1.y = control1YOrControl1X;\n      this.control2.x = 2 / 3;\n      this.control2.y = control2YOrControl1Y;\n    } else {\n      this.isConstant = true;\n    }\n  }\n\n  getValue (x: number) {\n    if (this.isConstant) {\n      return 0;\n    }\n    if (this.control1.x === this.control1.y && this.control2.x === this.control2.y) {\n      return x;\n    }\n    if (x === 0 || x === 1) {\n      return x;\n    }\n    if (!this.weighted) {\n      return this.bezierInterpolate(0, this.control1.y, this.control2.y, 1, x);\n    }\n    if (!this.precomputed) {\n      this.precompute();\n    }\n    const value = calcBezier(this.getTForX(x), this.control1.y, this.control2.y);\n\n    return value;\n  }\n\n  private bezierInterpolate (pStart: number, pControl1: number, pControl2: number, pEnd: number, t: number): number {\n    // Formula from Wikipedia article on Bezier curves\n    const omt = (1.0 - t);\n    const omt2 = omt * omt;\n    const omt3 = omt2 * omt;\n    const t2 = t * t;\n    const t3 = t2 * t;\n\n    return pStart * omt3 + pControl1 * omt2 * t * 3.0 + pControl2 * omt * t2 * 3.0 + pEnd * t3;\n  }\n\n  private calcSampleValues () {\n    for (let i = 0; i < kSplineTableSize; ++i) {\n      this.mSampleValues[i] = calcBezier(i * kSampleStepSize, this.control1.x, this.control2.x);\n    }\n  }\n\n  private getTForX (aX: number) {\n    const mSampleValues = this.mSampleValues, lastSample = kSplineTableSize - 1;\n    let intervalStart = 0, currentSample = 1;\n\n    for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    const dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n    const guessForT = intervalStart + dist * kSampleStepSize;\n\n    const initialSlope = getSlope(guessForT, this.control1.x, this.control2.x);\n\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, this.control1.x, this.control2.x);\n    } if (initialSlope === 0.0) {\n      return guessForT;\n    }\n\n    return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, this.control1.x, this.control2.x);\n  }\n\n  private precompute () {\n    this.precomputed = true;\n    if (this.control1.x !== this.control1.y || this.control2.x !== this.control2.y) {\n      this.calcSampleValues();\n    }\n  }\n\n}\n\nexport function buildEasingCurve (leftKeyframe: spec.BezierKeyframeValue, rightKeyframe: spec.BezierKeyframeValue): {\n  points: Vector2[],\n  timeInterval: number,\n  valueInterval: number,\n  curve: BezierEasing,\n} {\n  // 获取控制点和曲线类型\n  const { p0, p1, p2, p3 } = getControlPoints(leftKeyframe, rightKeyframe, true);\n\n  assertExist(p2);\n  assertExist(p3);\n  const timeInterval = p3.x - p0.x;\n  const valueInterval = p3.y - p0.y;\n  let y1, y2;\n  let x1 = numberToFix((p1.x - p0.x) / timeInterval, 5);\n  let x2 = numberToFix((p2.x - p0.x) / timeInterval, 5);\n\n  if (decimalEqual(valueInterval, 0)) {\n    y1 = y2 = NaN;\n  } else {\n    y1 = numberToFix((p1.y - p0.y) / valueInterval, 5);\n    y2 = numberToFix((p2.y - p0.y) / valueInterval, 5);\n  }\n\n  if (x1 < 0) {\n    console.error('Invalid bezier points, x1 < 0', p0, p1, p2, p3);\n    x1 = 0;\n  }\n  if (x2 < 0) {\n    console.error('Invalid bezier points, x2 < 0', p0, p1, p2, p3);\n    x2 = 0;\n  }\n  if (x1 > 1) {\n    console.error('Invalid bezier points, x1 >= 1', p0, p1, p2, p3);\n    x1 = 1;\n  }\n  if (x2 > 1) {\n    console.error('Invalid bezier points, x2 >= 1', p0, p1, p2, p3);\n    x2 = 1;\n  }\n\n  const str = ('bez_' + x1 + '_' + y1 + '_' + x2 + '_' + y2).replace(/\\./g, 'p');\n  let bezEasing;\n\n  if (BezierMap[str]) {\n    bezEasing = BezierMap[str];\n  } else {\n    if (decimalEqual(valueInterval, 0)) {\n      bezEasing = new BezierEasing();\n    } else {\n      bezEasing = new BezierEasing(x1, y1, x2, y2);\n    }\n    BezierMap[str] = bezEasing;\n  }\n\n  return {\n    points: [p0, p1, p2, p3],\n    timeInterval,\n    valueInterval,\n    curve: bezEasing,\n  };\n}\n\n/**\n * 根据关键帧类型获取贝塞尔曲线上的关键点\n */\nexport function getControlPoints (\n  leftKeyframe: spec.BezierKeyframeValue,\n  rightKeyframe: spec.BezierKeyframeValue,\n  lineToBezier: boolean,\n): ({ type: 'ease', p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2, isHold?: boolean, leftHoldLine?: boolean, rightHoldLine?: boolean } | { type: 'line', p0: Vector2, p1: Vector2, p2?: Vector2, p3?: Vector2, isHold?: boolean, leftHoldLine?: boolean, rightHoldLine?: boolean }) {\n  const [, leftValue] = leftKeyframe;\n  const leftHoldLine = keyframeInfo.isHoldOutKeyframe(leftKeyframe);\n  const rightHoldLine = keyframeInfo.isHoldInKeyframe(rightKeyframe);\n\n  const leftEase = !rightHoldLine && keyframeInfo.isRightSideEase(leftKeyframe);\n  const rightEase = !leftHoldLine && keyframeInfo.isLeftSideEase(rightKeyframe);\n\n  // 1. 左边为ease，右边为line（补充右边的控制点，该点在曲线上的点的偏左边位置）\n  if (leftEase && !rightEase && !rightHoldLine) {\n    const p0 = new Vector2(leftValue[leftValue.length - 4], leftValue[leftValue.length - 3]);\n    const p1 = new Vector2(leftValue[leftValue.length - 2], leftValue[leftValue.length - 1]);\n    const rightPoint = keyframeInfo.getPointInCurve(rightKeyframe);\n    const p3 = new Vector2(rightPoint.x, rightPoint.y);\n    const p2 = new Vector2(p3.x - (p3.x - p0.x) / 10, p3.y);\n\n    return { type: 'ease', p0, p1, p2, p3 };\n  }\n\n  // 2. 左边为line，右边为ease（补充左边的控制点，该点在曲线上的点的偏右边位置）\n  if (!leftEase && rightEase && !leftHoldLine) {\n    const [, rightValue] = rightKeyframe;\n    const leftPoint = keyframeInfo.getPointInCurve(leftKeyframe);\n    const p0 = new Vector2(leftPoint.x, leftPoint.y);\n    const p2 = new Vector2(rightValue[0], rightValue[1]);\n    const p3 = new Vector2(rightValue[2], rightValue[3]);\n    const p1 = new Vector2(p0.x + (p3.x - p0.x) / 10, p0.y);\n\n    return { type: 'ease', p0, p1, p2, p3 };\n  }\n\n  // 3. 左边为ease，右边为ease\n  if (leftEase && rightEase) {\n    const [, rightValue] = rightKeyframe;\n    const p0 = new Vector2(leftValue[leftValue.length - 4], leftValue[leftValue.length - 3]);\n    const p1 = new Vector2(leftValue[leftValue.length - 2], leftValue[leftValue.length - 1]);\n    const p2 = new Vector2(rightValue[0], rightValue[1]);\n    const p3 = new Vector2(rightValue[2], rightValue[3]);\n\n    return { type: 'ease', p0, p1, p2, p3 };\n  }\n\n  // 4. 左边为line，右边为line\n  const p0 = keyframeInfo.getPointInCurve(leftKeyframe);\n  const p1 = keyframeInfo.getPointInCurve(rightKeyframe);\n\n  if (leftHoldLine) {\n    p1.y = p0.y; // 定格关键帧使用相同的点\n  } else if (rightHoldLine) {\n    p0.y = p1.y;\n  }\n\n  if (lineToBezier) {\n    // 补上两个在直线上的控制点\n    const p2 = new Vector2((p1.x - p0.x) / 3 + p0.x, (p1.y - p0.y) / 3 + p0.y);\n    const p3 = new Vector2((p1.x - p0.x) / 3 * 2 + p0.x, (p1.y - p0.y) / 3 * 2 + p0.y);\n\n    return { type: 'line', p0, p1: p2, p2: p3, p3: p1, isHold: leftHoldLine || rightHoldLine, leftHoldLine, rightHoldLine };\n  } else {\n    return { type: 'line', p0, p1, isHold: leftHoldLine || rightHoldLine, leftHoldLine, rightHoldLine };\n  }\n}\n\nclass QuaternionInner {\n\n  static slerpFlat (dst: Quaternion, src0: Quaternion, src1: Quaternion, t: number) {\n    // fuzz-free, array-based Quaternion SLERP operation\n    let x0 = src0.x;\n    let y0 = src0.y;\n    let z0 = src0.z;\n    let w0 = src0.w;\n\n    const x1 = src1.x;\n    const y1 = src1.y;\n    const z1 = src1.z;\n    const w1 = src1.w;\n\n    if (t === 0) {\n      dst.x = x0;\n      dst.y = y0;\n      dst.z = z0;\n      dst.w = w0;\n\n      return;\n    }\n\n    if (t === 1) {\n      dst.x = x1;\n      dst.y = y1;\n      dst.z = z1;\n      dst.w = w1;\n\n      return;\n    }\n\n    if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n      let s = 1 - t;\n      const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1;\n      const dir = (cos >= 0 ? 1 : - 1);\n      const sqrSin = 1 - cos * cos;\n\n      // Skip the Slerp for tiny steps to avoid numeric problems:\n      if (sqrSin > Number.EPSILON) {\n        const sin = Math.sqrt(sqrSin);\n        const len = Math.atan2(sin, cos * dir);\n\n        s = Math.sin(s * len) / sin;\n        t = Math.sin(t * len) / sin;\n      }\n\n      const tDir = t * dir;\n\n      x0 = x0 * s + x1 * tDir;\n      y0 = y0 * s + y1 * tDir;\n      z0 = z0 * s + z1 * tDir;\n      w0 = w0 * s + w1 * tDir;\n\n      // Normalize in case we just did a lerp:\n      if (s === 1 - t) {\n        const f = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n\n        x0 *= f;\n        y0 *= f;\n        z0 *= f;\n        w0 *= f;\n      }\n    }\n\n    dst.x = x0;\n    dst.y = y0;\n    dst.z = z0;\n    dst.w = w0;\n  }\n}\n","import { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport type { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport type { ColorStop } from '../../utils';\nimport { colorStopsFromGradient, interpolateColor } from '../../utils';\nimport type { BezierEasing } from '../bezier';\nimport { BezierPath, BezierQuat, buildEasingCurve } from '../bezier';\nimport { Float16ArrayWrapper } from '../float16array-wrapper';\nimport { numberToFix } from '../utils';\nimport type { BezierCurve } from './bezier-curve';\n\nexport interface KeyFrameMeta {\n  curves: ValueGetter<any>[],\n  index: number,\n  max: number,\n  lineSegCount: number,\n  curveCount: number,\n}\n\nconst CURVE_PRO_TIME = 0;\nconst CURVE_PRO_VALUE = 1;\nconst CURVE_PRO_IN_TANGENT = 2;\nconst CURVE_PRO_OUT_TANGENT = 3;\nconst NOT_IMPLEMENT = 'not_implement';\n\nexport class ValueGetter<T> {\n  static getAllData (meta: KeyFrameMeta, halfFloat?: boolean): Uint16Array | Float32Array {\n    const ret = new (halfFloat ? Float16ArrayWrapper : Float32Array)(meta.index * 4);\n\n    for (let i = 0, cursor = 0, curves = meta.curves; i < curves.length; i++) {\n      const data = (curves[i] as BezierCurve).toData();\n\n      ret.set(data, cursor);\n      cursor += data.length;\n    }\n\n    return halfFloat ? (ret as Float16ArrayWrapper).data : (ret as Float32Array);\n  }\n\n  constructor (arg: any) {\n    this.onCreate(arg);\n  }\n\n  onCreate (props: any) {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getIntegrateValue (t0: number, t1: number, timeScale = 1): T {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getIntegrateByTime (t0: number, time: number): T {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getValue (time?: number): T {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  getMaxTime (): number {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  toUniform (meta: KeyFrameMeta): Float32Array {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  map (func: (n: T) => T) {\n    throw new Error(NOT_IMPLEMENT);\n  }\n\n  scaleXCoord (scale: number): ValueGetter<T> {\n    return this;\n  }\n\n  toData (): ArrayLike<number> {\n    throw new Error(NOT_IMPLEMENT);\n  }\n}\n\nexport class StaticValue extends ValueGetter<number> {\n  private value: number;\n\n  override onCreate (arg: number) {\n    this.value = arg;\n  }\n\n  override getIntegrateValue (t0: number, t1: number, ts: number) {\n    return this.value * (t1 - t0);\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return 0.5 * this.value * (t1 * t1 - t0 * t0);\n  }\n\n  override getValue (time?: number): number {\n    return this.value;\n  }\n\n  override toUniform () {\n    return new Float32Array([0, this.value, 0, 0]);\n  }\n\n  override map (func: (n: number) => number) {\n    const val = this.value;\n\n    this.value = func(val);\n\n    return this;\n  }\n\n  override getMaxTime (): number {\n    return 0;\n  }\n}\n\nexport class RandomSetValue<T> extends ValueGetter<T> {\n  private items: T[];\n\n  override onCreate (arg: T[]) {\n    this.items = arg;\n  }\n\n  override getValue (t: number): T {\n    const items = this.items;\n\n    return items[Math.floor(Math.random() * items.length)];\n  }\n\n  override map (func: (v: T) => T) {\n    this.items = this.items.map(func);\n\n    return this;\n  }\n}\n\nexport class RandomValue extends ValueGetter<number> {\n  private min: number;\n  private max: number;\n\n  override onCreate (props: [min: number, max: number]) {\n    this.min = props[0];\n    this.max = props[1];\n  }\n\n  override getValue (time?: number, seed?: number): number {\n    const randomSeed = seed ?? Math.random();\n\n    return this.min + randomSeed * (this.max - this.min);\n  }\n\n  override getIntegrateValue (t0: number, t1: number, timeScale?: number): number {\n    const seed = timeScale ?? 1.0;\n\n    return (this.min + seed * (this.max - this.min)) * (t1 - t0);\n  }\n\n  override toUniform () {\n    return new Float32Array([4, this.min, this.max, 0]);\n  }\n\n  override map (func: any) {\n    this.min = func(this.min);\n    this.max = func(this.max);\n\n    return this;\n  }\n}\n\nexport class RandomVectorValue extends ValueGetter<number[]> {\n  private min: number[];\n  private max: number[];\n\n  override onCreate (props: [min: number[], max: number[]]) {\n    this.min = props[0];\n    this.max = props[1];\n  }\n\n  override getValue (time: number): number[] {\n    const min = this.min;\n    const max = this.max;\n    const ret = [];\n\n    for (let i = 0; i < min.length; i++) {\n      const t = Math.random();\n\n      ret[i] = min[i] * (1 - t) + max[i] * t;\n    }\n\n    return ret;\n  }\n\n  // TODO:\n  override map (func: any) {\n    this.min = this.min.map(func);\n    this.max = this.max.map(func);\n\n    return this;\n  }\n}\n\nexport class LinearValue extends ValueGetter<number> {\n  private min: number;\n  private max: number;\n  private xCoord: number;\n\n  override onCreate (props: [min: number, max: number]) {\n    this.min = props[0];\n    this.max = props[1];\n    this.xCoord = 1;\n  }\n\n  override getValue (t: number) {\n    t /= this.xCoord;\n\n    return this.min * (1 - t) + this.max * t;\n  }\n\n  override toUniform () {\n    return new Float32Array([1, this.min, this.max, this.xCoord]);\n  }\n\n  override getIntegrateValue (t0: number, t1: number, timeScale = 1) {\n    const min = this.min;\n    const max = this.max;\n    const ts = this.xCoord * timeScale;\n    const v1 = min + (max - min) * (t1 / ts);\n    const v0 = min + (max - min) * (t0 / ts);\n\n    return ((v1 + min) * t1 - (v0 + min) * t0) / 2;\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return lineSegIntegrateByTime(t1, 0, this.xCoord, this.min, this.max) - lineSegIntegrateByTime(t0, 0, this.xCoord, this.min, this.max);\n  }\n\n  override map (func: (num: number) => number) {\n    this.min = func(this.min);\n    this.max = func(this.max);\n\n    return this;\n  }\n\n  override scaleXCoord (scale: number): LinearValue {\n    this.xCoord = scale;\n\n    return this;\n  }\n}\n\nexport class GradientValue extends ValueGetter<number[]> {\n  stops: ColorStop[];\n\n  override onCreate (props: spec.GradientStop[] | Record<string, string>) {\n    this.stops = colorStopsFromGradient(props);\n  }\n\n  getStops () {\n    return this.stops;\n  }\n\n  override getValue (time: number) {\n    const stops = this.stops;\n\n    if (stops.length === 0) {\n      return [0, 0, 0, 0];\n    }\n\n    if (time <= stops[0].time) {\n      return stops[0].color.toArray();\n    }\n\n    const last = stops.length - 1;\n\n    if (time >= stops[last].time) {\n      return stops[last].color.toArray();\n    }\n\n    for (let i = 0; i < last; i++) {\n      const a = stops[i];\n      const b = stops[i + 1];\n\n      if (a.time <= time && b.time > time) {\n        const t = (time - a.time) / (b.time - a.time);\n\n        return interpolateColor(a.color.toArray(), b.color.toArray(), t, true);\n      }\n    }\n\n    return stops[last].color.toArray();\n  }\n}\n\nexport class LineSegments extends ValueGetter<number> {\n  isLineSeg: boolean;\n\n  keys: number[][];\n\n  override onCreate (props: ({ time: number, value: number } & number[])[]) {\n    this.keys = props\n      .map(p => {\n        if (p.slice) {\n          return p.slice(0, 2);\n        }\n\n        return [p.time, p.value];\n      })\n      .sort((a, b) => a[0] - b[0]);\n\n    const last = this.keys[this.keys.length - 1];\n\n    if (last[0] < 1) {\n      this.keys.push([1, last[1]]);\n    }\n    const first = this.keys[0];\n\n    if (first[0] > 0) {\n      this.keys.unshift([0, first[1]]);\n    }\n    this.isLineSeg = true;\n  }\n\n  override getValue (time: number): number {\n    const keys = this.keys;\n\n    if (time < keys[0][0]) {\n      return keys[0][1];\n    }\n    const end = keys.length - 1;\n\n    for (let i = 0; i < end; i++) {\n      const key = keys[i];\n      const k2 = keys[i + 1];\n      const x0 = key[0];\n      const x1 = k2[0];\n\n      if (time >= x0 && time <= x1) {\n        const p = (time - x0) / (x1 - x0);\n        const y0 = key[1];\n\n        return y0 + p * (k2[1] - y0);\n      }\n    }\n\n    return keys[end][1];\n  }\n\n  override getIntegrateValue (t0: number, t1: number, ts = 1) {\n    return (this.integrate(t1, false) - this.integrate(t0, false)) * ts;\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return this.integrate(t1, true) - this.integrate(t0, true);\n  }\n\n  private integrate (time: number, byTime: boolean): number {\n    const keys = this.keys;\n\n    if (time <= keys[0][0]) {\n      return 0;\n    }\n\n    let ret = 0;\n    const end = keys.length - 1;\n    const func = byTime ? lineSegIntegrateByTime : lineSegIntegrate;\n\n    for (let i = 0; i < end; i++) {\n      const k1 = keys[i];\n      const k2 = keys[i + 1];\n      const t0 = k1[0];\n      const t1 = k2[0];\n\n      if (time > t0 && time <= t1) {\n        return ret + func(time, t0, t1, k1[1], k2[1]);\n      } else {\n        ret += func(t1, t0, t1, k1[1], k2[1]);\n      }\n    }\n\n    return ret;\n  }\n\n  override toData () {\n    const keys = this.keys;\n    const data = new Float32Array(Math.ceil(keys.length / 2) * 4);\n\n    for (let i = 0, cursor = 0; i < keys.length; i++, cursor += 2) {\n      data.set(keys[i], cursor);\n    }\n    data.set(keys[keys.length - 1], data.length - 2);\n\n    return data;\n  }\n\n  override toUniform (meta: any) {\n    const index = meta.index;\n    const keys = this.keys;\n    const uniformCount = Math.ceil(keys.length / 2);\n\n    meta.lineSegCount += uniformCount;\n    meta.curves.push(this);\n    meta.index += uniformCount;\n    meta.max = Math.max(meta.max, uniformCount);\n\n    return new Float32Array([3, index, uniformCount, 0]);\n  }\n\n  override map (func: (k: number) => number) {\n    this.keys.forEach(k => k[1] = func(k[1]));\n\n    return this;\n  }\n\n  override scaleXCoord (scale: number) {\n    this.keys.forEach(k => k[0] = scale * k[0]);\n\n    return this;\n  }\n}\n\nexport class PathSegments extends ValueGetter<number[]> {\n  keys: number[][];\n  values: number[][];\n\n  override onCreate (props: number[][][]) {\n    this.keys = props[0];\n    this.values = props[1];\n  }\n\n  override getValue (time: number) {\n    const keys = this.keys;\n    const values = this.values;\n\n    for (let i = 0; i < keys.length - 1; i++) {\n      const k0 = keys[i];\n      const k1 = keys[i + 1];\n\n      if (k0[0] <= time && k1[0] >= time) {\n        const dis = k1[1] - k0[1];\n        let dt;\n\n        if (dis === 0) {\n          dt = (time - k0[0]) / (k1[0] - k0[0]);\n        } else {\n          const val = curveValueEvaluate(time, k0, k1);\n\n          dt = (val - k0[1]) / dis;\n        }\n\n        return this.calculateVec(i, dt);\n      }\n    }\n    if (time <= keys[0][0]) {\n      return values[0].slice();\n    }\n\n    return values[values.length - 1].slice();\n  }\n\n  calculateVec (i: number, dt: number) {\n    const vec0 = this.values[i];\n    const vec1 = this.values[i + 1];\n    const ret = [0, 0, 0];\n\n    for (let j = 0; j < vec0.length; j++) {\n      ret[j] = vec0[j] * (1 - dt) + vec1[j] * dt;\n    }\n\n    return ret;\n  }\n}\n\nexport class BezierCurvePath extends ValueGetter<Vector3> {\n  curveSegments: Record<string, {\n    points: Vector2[],\n    // 缓动曲线\n    easingCurve: BezierEasing,\n    timeInterval: number,\n    valueInterval: number,\n    // 路径曲线\n    pathCurve: BezierPath,\n    timeStart: number,\n    timeEnd: number,\n  }>;\n\n  keys: number[][];\n  keyTimeData: string[];\n\n  override onCreate (props: spec.BezierCurvePathValue) {\n    const [keyframes, points, controlPoints] = props;\n\n    this.curveSegments = {};\n    if (!controlPoints.length) {\n      return;\n    }\n\n    for (let i = 0; i < keyframes.length - 1; i++) {\n      const leftKeyframe = keyframes[i];\n      const rightKeyframe = keyframes[i + 1];\n      const ps1 = new Vector3(points[i][0], points[i][1], points[i][2]), ps2 = new Vector3(points[i + 1][0], points[i + 1][1], points[i + 1][2]);\n\n      const cp1 = new Vector3(controlPoints[2 * i][0], controlPoints[2 * i][1], controlPoints[2 * i][2]), cp2 = new Vector3(controlPoints[2 * i + 1][0], controlPoints[2 * i + 1][1], controlPoints[2 * i + 1][2]);\n\n      const { points: ps, curve: easingCurve, timeInterval, valueInterval } = buildEasingCurve(leftKeyframe, rightKeyframe);\n      const s = ps[0];\n      const e = ps[ps.length - 1];\n\n      const pathCurve = new BezierPath(ps1, ps2, cp1, cp2);\n\n      this.curveSegments[`${s.x}&${e.x}`] = {\n        points: ps,\n        timeInterval,\n        valueInterval,\n        easingCurve,\n        pathCurve: pathCurve,\n        timeStart: Number(s.x),\n        timeEnd: Number(e.x),\n      };\n    }\n    this.keyTimeData = Object.keys(this.curveSegments);\n  }\n\n  override getValue (time: number): Vector3 {\n    const t = numberToFix(time, 5);\n    let perc = 0, point = new Vector3();\n    const keyTimeData = this.keyTimeData;\n\n    if (!keyTimeData.length) {\n      return point;\n    }\n    const keyTimeStart = this.curveSegments[keyTimeData[0]].timeStart;\n    const keyTimeEnd = this.curveSegments[keyTimeData[keyTimeData.length - 1]].timeEnd;\n\n    if (t <= keyTimeStart) {\n      const pathCurve = this.curveSegments[keyTimeData[0]].pathCurve;\n\n      point = pathCurve.getPointInPercent(0);\n\n      return point;\n\n    }\n    if (t >= keyTimeEnd) {\n      const pathCurve = this.curveSegments[keyTimeData[keyTimeData.length - 1]].pathCurve;\n\n      point = pathCurve.getPointInPercent(1);\n\n      return point;\n    }\n\n    for (let i = 0; i < keyTimeData.length; i++) {\n      const xMin = this.curveSegments[keyTimeData[i]].timeStart;\n      const xMax = this.curveSegments[keyTimeData[i]].timeEnd;\n\n      if (t >= Number(xMin) && t < Number(xMax)) {\n        const bezierPath = this.curveSegments[keyTimeData[i]].pathCurve;\n\n        perc = this.getPercValue(keyTimeData[i], t);\n\n        point = bezierPath.getPointInPercent(perc);\n      }\n    }\n\n    return point;\n  }\n\n  getPercValue (curveKey: string, time: number) {\n    const curveInfo = this.curveSegments[curveKey];\n    const [p0] = curveInfo.points;\n\n    const timeInterval = curveInfo.timeInterval;\n    const normalizeTime = numberToFix((time - p0.x) / timeInterval, 4);\n    const value = curveInfo.easingCurve.getValue(normalizeTime);\n\n    // TODO 测试用 编辑器限制值域后移除clamp\n    return clamp(value, 0, 1);\n  }\n\n  override getMaxTime (): number {\n    const keyTimeData = this.keyTimeData;\n\n    return this.curveSegments[keyTimeData[keyTimeData.length - 1]].timeEnd;\n  }\n}\n\nexport class BezierCurveQuat extends ValueGetter<Quaternion> {\n  curveSegments: Record<string, {\n    points: Vector2[],\n    // 缓动曲线\n    easingCurve: BezierEasing,\n    timeInterval: number,\n    valueInterval: number,\n    // 路径曲线\n    pathCurve: BezierQuat,\n  }>;\n\n  override onCreate (props: spec.BezierCurveQuatValue) {\n    const [keyframes, points, controlPoints] = props;\n\n    this.curveSegments = {};\n    if (!controlPoints.length) {\n      return;\n    }\n\n    for (let i = 0; i < keyframes.length - 1; i++) {\n      const leftKeyframe = keyframes[i];\n      const rightKeyframe = keyframes[i + 1];\n      const ps1 = Quaternion.fromArray(points[i]);\n      const ps2 = Quaternion.fromArray(points[i + 1]);\n\n      const cp1 = Quaternion.fromArray(controlPoints[2 * i]);\n      const cp2 = Quaternion.fromArray(controlPoints[2 * i + 1]);\n\n      const { points: ps, curve: easingCurve, timeInterval, valueInterval } = buildEasingCurve(leftKeyframe, rightKeyframe);\n      const s = ps[0];\n      const e = ps[ps.length - 1];\n\n      const pathCurve = new BezierQuat(ps1, ps2, cp1, cp2);\n\n      this.curveSegments[`${s.x}&${e.x}`] = {\n        points: ps,\n        timeInterval,\n        valueInterval,\n        easingCurve,\n        pathCurve: pathCurve,\n      };\n    }\n\n  }\n\n  override getValue (time: number): Quaternion {\n    let perc = 0;\n    const t = numberToFix(time, 5);\n    const keyTimeData = Object.keys(this.curveSegments);\n\n    const keyTimeStart = Number(keyTimeData[0].split('&')[0]);\n    const keyTimeEnd = Number(keyTimeData[keyTimeData.length - 1].split('&')[1]);\n\n    if (t <= keyTimeStart) {\n      const pathCurve = this.curveSegments[keyTimeData[0]].pathCurve;\n\n      return pathCurve.getPointInPercent(0);\n\n    }\n    if (t >= keyTimeEnd) {\n      const pathCurve = this.curveSegments[keyTimeData[keyTimeData.length - 1]].pathCurve;\n\n      return pathCurve.getPointInPercent(1);\n    }\n\n    for (let i = 0; i < keyTimeData.length; i++) {\n      const [xMin, xMax] = keyTimeData[i].split('&');\n\n      if (t >= Number(xMin) && t < Number(xMax)) {\n        const pathCurve = this.curveSegments[keyTimeData[i]].pathCurve;\n\n        perc = this.getPercValue(keyTimeData[i], t);\n\n        return pathCurve.getPointInPercent(perc);\n      }\n    }\n\n    const pathCurve = this.curveSegments[keyTimeData[0]].pathCurve;\n\n    return pathCurve.getPointInPercent(0);\n  }\n\n  getPercValue (curveKey: string, time: number) {\n    const curveInfo = this.curveSegments[curveKey];\n    const [p0] = curveInfo.points;\n\n    const timeInterval = curveInfo.timeInterval;\n    const normalizeTime = numberToFix((time - p0.x) / timeInterval, 4);\n    const value = curveInfo.easingCurve.getValue(normalizeTime);\n\n    // TODO 测试用 编辑器限制值域后移除clamp\n    return clamp(value, 0, 1);\n  }\n\n  override getMaxTime (): number {\n    const keyTimeData = Object.keys(this.curveSegments);\n\n    return Number(keyTimeData[keyTimeData.length - 1].split('&')[1]);\n  }\n}\n\nfunction lineSegIntegrate (t: number, t0: number, t1: number, y0: number, y1: number) {\n  const h = t - t0;\n\n  return (y0 + y0 + (y1 - y0) * h / (t1 - t0)) * h / 2;\n}\n\nfunction lineSegIntegrateByTime (t: number, t0: number, t1: number, y0: number, y1: number) {\n  const t2 = t * t;\n  const t3 = t2 * t;\n  const t02 = t0 * t0;\n  const t03 = t02 * t0;\n\n  return (2 * t3 * (y0 - y1) + 3 * t2 * (t0 * y1 - t1 * y0) - t03 * (2 * y0 + y1) + 3 * t02 * t1 * y0) / (6 * (t0 - t1));\n}\n\nfunction curveValueEvaluate (time: number, keyframe0: number[], keyframe1: number[]) {\n  const dt = keyframe1[CURVE_PRO_TIME] - keyframe0[CURVE_PRO_TIME];\n\n  const m0 = keyframe0[CURVE_PRO_OUT_TANGENT] * dt;\n  const m1 = keyframe1[CURVE_PRO_IN_TANGENT] * dt;\n\n  const t = (time - keyframe0[CURVE_PRO_TIME]) / dt;\n  const t2 = t * t;\n  const t3 = t2 * t;\n\n  const a = 2 * t3 - 3 * t2 + 1;\n  const b = t3 - 2 * t2 + t;\n  const c = t3 - t2;\n  const d = -2 * t3 + 3 * t2;\n\n  //(2*v0+m0+m1-2*v1)*(t-t0)^3/k^3+(3*v1-3*v0-2*m0-m1)*(t-t0)^2/k^2+m0 *(t-t0)/k+v0\n  return a * keyframe0[CURVE_PRO_VALUE] + b * m0 + c * m1 + d * keyframe1[CURVE_PRO_VALUE];\n}\n\nexport function getKeyFrameMetaByRawValue (meta: KeyFrameMeta, value?: [type: spec.ValueType, value: any]) {\n  if (value) {\n    const type = value[0];\n    const keys = value[1] as spec.vec4[];\n\n    if (type === spec.ValueType.CURVE) {\n      meta.curves.push(keys as any);\n      let keyLen = keys.length;\n\n      if (keys[0][0] > 0) {\n        keyLen++;\n      }\n      if (keys[keys.length - 1][0] < 1) {\n        keyLen++;\n      }\n      meta.index += keyLen;\n      meta.max = Math.max(meta.max, keyLen);\n      meta.curveCount += keyLen;\n    } else if (type === spec.ValueType.LINE) {\n      let keyLen = keys.length;\n\n      if (keyLen === 2 && keys[0][0] === 0 && keys[1][0] === 1) {\n        return;\n      }\n      if (keys[0][0] > 0) {\n        keyLen++;\n      }\n      if (keys[keys.length - 1][0] < 1) {\n        keyLen++;\n      }\n      const uniformCount = Math.ceil(keyLen / 2);\n\n      meta.lineSegCount += uniformCount;\n      meta.curves.push(keys as any);\n      meta.index += uniformCount;\n      meta.max = Math.max(meta.max, uniformCount);\n    } else if (type === spec.ValueType.BEZIER_CURVE) {\n      const keyLen = keys.length - 1;\n\n      meta.index += 2 * keyLen;\n      meta.curves.push(keys as any);\n      meta.max = Math.max(meta.max, 2 * keyLen);\n      meta.curveCount += 2 * keyLen;\n    }\n  }\n}\n\nexport function createKeyFrameMeta () {\n  return {\n    curves: [],\n    index: 0,\n    max: 0,\n    lineSegCount: 0,\n    curveCount: 0,\n  };\n}\n","function _is_native_reflect_construct() {\n    // Since Reflect.construct can't be properly polyfilled, some\n    // implementations (e.g. core-js@2) don't set the correct internal slots.\n    // Those polyfills don't allow us to subclass built-ins, so we need to\n    // use our fallback implementation.\n    try {\n        // If the internal slots aren't set, this throws an error similar to\n        //   TypeError: this is not a Boolean object.\n        var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n    } catch (_) {}\n    return (_is_native_reflect_construct = function() {\n        return !!result;\n    })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n    if (_is_native_reflect_construct()) _construct = Reflect.construct;\n    else {\n        _construct = function construct(Parent, args, Class) {\n            var a = [null];\n            a.push.apply(a, args);\n            var Constructor = Function.bind.apply(Parent, a);\n            var instance = new Constructor();\n\n            if (Class) _set_prototype_of(instance, Class.prototype);\n\n            return instance;\n        };\n    }\n\n    return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","import { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport type * as spec from '@galacean/effects-specification';\nimport { ValueGetter } from './value-getter';\nimport { createValueGetter } from './value-getter-map';\nimport type { BezierCurve } from './bezier-curve';\n\nexport class Vector4Curve extends ValueGetter<Vector4> {\n  private value = new Vector4();\n\n  private xCurve: BezierCurve;\n  private yCurve: BezierCurve;\n  private zCurve: BezierCurve;\n  private wCurve: BezierCurve;\n\n  override onCreate (arg: spec.Vector4CurveData) {\n    this.xCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.yCurve = createValueGetter(arg[1]) as BezierCurve;\n    this.zCurve = createValueGetter(arg[2]) as BezierCurve;\n    this.wCurve = createValueGetter(arg[3]) as BezierCurve;\n  }\n\n  override getValue (t: number): Vector4 {\n    const x = this.xCurve.getValue(t);\n    const y = this.yCurve.getValue(t);\n    const z = this.zCurve.getValue(t);\n    const w = this.wCurve.getValue(t);\n\n    this.value.set(x, y, z, w);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.xCurve.getMaxTime(),\n      this.yCurve.getMaxTime(),\n      this.zCurve.getMaxTime(),\n      this.wCurve.getMaxTime(),\n    );\n  }\n}\n\nexport class Vector3Curve extends ValueGetter<Vector3> {\n  private value = new Vector3();\n\n  private xCurve: BezierCurve;\n  private yCurve: BezierCurve;\n  private zCurve: BezierCurve;\n\n  override onCreate (arg: spec.Vector3CurveData) {\n    this.xCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.yCurve = createValueGetter(arg[1]) as BezierCurve;\n    this.zCurve = createValueGetter(arg[2]) as BezierCurve;\n  }\n\n  override getValue (t: number): Vector3 {\n    const x = this.xCurve.getValue(t);\n    const y = this.yCurve.getValue(t);\n    const z = this.zCurve.getValue(t);\n\n    this.value.set(x, y, z);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.xCurve.getMaxTime(),\n      this.yCurve.getMaxTime(),\n      this.zCurve.getMaxTime(),\n    );\n  }\n}\n\nexport class Vector2Curve extends ValueGetter<Vector2> {\n  private value = new Vector2();\n\n  private xCurve: BezierCurve;\n  private yCurve: BezierCurve;\n\n  override onCreate (arg: spec.Vector2CurveData) {\n    this.xCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.yCurve = createValueGetter(arg[1]) as BezierCurve;\n  }\n\n  override getValue (t: number): Vector2 {\n    const x = this.xCurve.getValue(t);\n    const y = this.yCurve.getValue(t);\n\n    this.value.set(x, y);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.xCurve.getMaxTime(),\n      this.yCurve.getMaxTime(),\n    );\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type { Vector2Like } from '@galacean/effects-math/es/core/type';\nimport { NumberEpsilon } from '@galacean/effects-math/es/core/utils';\nimport { BezierEasing, BezierMap, getControlPoints } from '../bezier';\nimport type { KeyFrameMeta } from './value-getter';\nimport { ValueGetter } from './value-getter';\nimport { assertExist } from '../../utils';\nimport { decimalEqual, numberToFix } from '../utils';\n\ninterface CurveInfo {\n  points: Vector2[],\n  timeInterval: number,\n  valueInterval: number,\n  curve: BezierEasing,\n  timeStart: number,\n  timeEnd: number,\n}\n\nexport interface Keyframe {\n  time: number,\n  value: number,\n  inSlope: number,\n  outSlope: number,\n  inWeight: number,\n  outWeight: number,\n  weightedMode: WeightedMode,\n  tangentMode: TangentMode,\n}\n\nexport enum TangentMode {\n  Cubic,\n  Linear,\n  Constant\n}\n\nexport enum WeightedMode {\n  None,\n  In,\n  Out,\n  Both\n}\n\nexport class BezierCurve extends ValueGetter<number> {\n  curveMap: Record<string, CurveInfo>;\n  keys: number[][];\n\n  private keyFrames: Keyframe[];\n  private curveInfos: CurveInfo[];\n\n  override onCreate (props: spec.BezierKeyframeValue[]) {\n    this.keyFrames = oldBezierKeyFramesToNew(props);\n    const keyframes = this.keyFrames;\n\n    this.curveMap = {};\n    this.keys = [];\n    this.curveInfos = [];\n\n    for (let i = 0; i < keyframes.length - 1; i++) {\n      const leftKeyframe = keyframes[i];\n      const rightKeyframe = keyframes[i + 1];\n\n      const { points, curve, timeInterval, valueInterval } = buildBezierEasing(leftKeyframe, rightKeyframe);\n      const s = points[0];\n      const e = points[points.length - 1];\n\n      this.keys.push([...s.toArray(), ...points[1].toArray()]);\n      this.keys.push([...e.toArray(), ...points[2].toArray()]);\n\n      const curveInfo = {\n        points,\n        timeInterval,\n        valueInterval,\n        curve,\n        timeStart: Number(s.x),\n        timeEnd: Number(e.x),\n      };\n\n      this.curveMap[`${s.x}&${e.x}`] = curveInfo;\n      this.curveInfos.push(curveInfo);\n    }\n  }\n\n  override getValue (time: number) {\n    let result = 0;\n    const keysNumber = this.keyFrames.length;\n\n    if (time <= this.keyFrames[0].time) {\n      result = this.keyFrames[0].value;\n    } else if (time < this.keyFrames[keysNumber - 1].time) {\n      for (let i = 0; i < this.keyFrames.length - 1; i++) {\n        const xMin = this.keyFrames[i].time;\n        const xMax = this.keyFrames[i + 1].time;\n\n        if (time >= xMin && time < xMax) {\n          const curveInfo = this.curveInfos[i];\n          const p0 = curveInfo.points[0];\n          const timeInterval = curveInfo.timeInterval;\n          const valueInterval = curveInfo.valueInterval;\n          const normalizeTime = (time - p0.x) / timeInterval;\n          let value = 0;\n\n          if (this.keyFrames[i].tangentMode === TangentMode.Linear) {\n            value = normalizeTime;\n          } else {\n            value = curveInfo.curve.getValue(normalizeTime);\n          }\n\n          result = p0.y + valueInterval * value;\n\n          break;\n        }\n      }\n    } else if (time >= this.keyFrames[keysNumber - 1].time) {\n      result = this.keyFrames[keysNumber - 1].value;\n    }\n\n    return result;\n  }\n\n  override getIntegrateValue (t0: number, t1: number, ts = 1) {\n    const time = (t1 - t0) / ts;\n\n    let result = 0;\n    const keyTimeData = Object.keys(this.curveMap);\n    const keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;\n\n    if (time <= keyTimeStart) {\n      return 0;\n    }\n    for (let i = 0; i < keyTimeData.length; i++) {\n      const xMin = this.curveMap[keyTimeData[i]].timeStart;\n      const xMax = this.curveMap[keyTimeData[i]].timeEnd;\n\n      if (time >= Number(xMax)) {\n        result += ts * this.getCurveIntegrateValue(keyTimeData[i], Number(xMax));\n      }\n\n      if (time >= Number(xMin) && time < Number(xMax)) {\n        result += ts * this.getCurveIntegrateValue(keyTimeData[i], time);\n\n        break;\n      }\n    }\n\n    return result;\n  }\n\n  override getIntegrateByTime (t0: number, t1: number) {\n    return this.getIntegrateValue(0, t1) - this.getIntegrateValue(0, t0);\n  }\n  // 速度变化曲线面板移除后下线\n  getCurveIntegrateValue (curveKey: string, time: number) {\n    const curveInfo = this.curveMap[curveKey];\n    const [p0] = curveInfo.points;\n    const timeInterval = curveInfo.timeInterval;\n    const valueInterval = curveInfo.valueInterval;\n    const segments = 20;\n    let total = 0;\n    const h = (time - p0.x) / segments;\n\n    for (let i = 0; i <= segments; i++) {\n      const t = i * h;\n      const normalizeTime = t / timeInterval;\n      const y = p0.y + valueInterval * curveInfo.curve.getValue(normalizeTime);\n\n      if (i === 0 || i === segments) {\n        total += y;\n      } else if (i % 2 === 1) {\n        total += 4 * y;\n      } else {\n        total += 2 * y;\n      }\n\n    }\n    total *= h / 3;\n\n    return total;\n  }\n\n  override toUniform (meta: KeyFrameMeta): Float32Array {\n    const index = meta.index;\n    const count = this.keys.length;\n\n    meta.curves.push(this);\n    meta.index = index + count;\n    // 兼容 WebGL1\n    meta.max = Math.max(meta.max, count);\n    meta.curveCount += count;\n\n    return new Float32Array([5, index + 1 / count, index, count]);\n  }\n\n  override toData (): Float32Array {\n    const keys = this.keys;\n    const data = new Float32Array(keys.length * 4);\n\n    for (let i = 0, cursor = 0; i < keys.length; i++, cursor += 4) {\n      data.set(keys[i], cursor);\n    }\n\n    return data;\n  }\n\n  override getMaxTime (): number {\n    return this.keyFrames[this.keyFrames.length - 1].time;\n  }\n}\n\nfunction buildBezierEasing (leftKeyframe: Keyframe, rightKeyframe: Keyframe): {\n  points: Vector2[],\n  timeInterval: number,\n  valueInterval: number,\n  curve: BezierEasing,\n} {\n  const p0 = new Vector2(leftKeyframe.time, leftKeyframe.value);\n  const p1 = new Vector2();\n  const p2 = new Vector2();\n  const p3 = new Vector2();\n\n  const isWeighted = leftKeyframe.weightedMode === WeightedMode.Out ||\n    leftKeyframe.weightedMode === WeightedMode.Both ||\n    rightKeyframe.weightedMode === WeightedMode.In ||\n    rightKeyframe.weightedMode === WeightedMode.Both;\n\n  const isConstant = leftKeyframe.tangentMode === TangentMode.Constant;\n\n  const rightDeltaX = (isWeighted ? leftKeyframe.outWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;\n\n  p1.x = leftKeyframe.time + rightDeltaX;\n  p1.y = leftKeyframe.value + rightDeltaX * (isConstant ? 0 : leftKeyframe.outSlope);\n\n  const leftDeltaX = (isWeighted ? rightKeyframe.inWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;\n\n  p2.x = rightKeyframe.time - leftDeltaX;\n  p2.y = rightKeyframe.value - leftDeltaX * (isConstant ? 0 : rightKeyframe.inSlope);\n\n  p3.x = rightKeyframe.time;\n  p3.y = isConstant ? leftKeyframe.value : rightKeyframe.value;\n\n  assertExist(p2);\n  assertExist(p3);\n  const timeInterval = p3.x - p0.x;\n  const valueInterval = p3.y - p0.y;\n  let y1, y2;\n  let x1 = numberToFix((p1.x - p0.x) / timeInterval, 5);\n  let x2 = numberToFix((p2.x - p0.x) / timeInterval, 5);\n\n  if (decimalEqual(valueInterval, 0)) {\n    y1 = y2 = NaN;\n  } else {\n    y1 = numberToFix((p1.y - p0.y) / valueInterval, 5);\n    y2 = numberToFix((p2.y - p0.y) / valueInterval, 5);\n  }\n\n  if (x1 < 0) {\n    console.error('Invalid bezier points, x1 < 0', p0, p1, p2, p3);\n    x1 = 0;\n  }\n  if (x2 < 0) {\n    console.error('Invalid bezier points, x2 < 0', p0, p1, p2, p3);\n    x2 = 0;\n  }\n  if (x1 > 1) {\n    console.error('Invalid bezier points, x1 >= 1', p0, p1, p2, p3);\n    x1 = 1;\n  }\n  if (x2 > 1) {\n    console.error('Invalid bezier points, x2 >= 1', p0, p1, p2, p3);\n    x2 = 1;\n  }\n\n  const str = ('bez_' + x1 + '_' + y1 + '_' + x2 + '_' + y2).replace(/\\./g, 'p');\n  let bezEasing;\n\n  if (BezierMap[str]) {\n    bezEasing = BezierMap[str];\n  } else {\n    if (decimalEqual(valueInterval, 0)) {\n      bezEasing = new BezierEasing();\n    } else if (isWeighted) {\n      bezEasing = new BezierEasing(x1, y1, x2, y2);\n    } else {\n      bezEasing = new BezierEasing(y1, y2);\n    }\n    BezierMap[str] = bezEasing;\n  }\n\n  return {\n    points: [p0, p1, p2, p3],\n    timeInterval,\n    valueInterval,\n    curve: bezEasing,\n  };\n}\n\ninterface KeyData {\n  leftControl: Vector2Like,\n  value: Vector2Like,\n  rightControl: Vector2Like,\n  tangentMode: TangentMode,\n}\n\nexport function oldBezierKeyFramesToNew (props: spec.BezierKeyframeValue[]): Keyframe[] {\n  const oldKeyframes = props;\n  const keyframes: Keyframe[] = [];\n  const keyDatas: KeyData[] = [];\n\n  let lastControl: Vector2Like = { x: 0, y: 0 };\n\n  for (let i = 0; i < oldKeyframes.length; i++) {\n    const leftKeyframe = oldKeyframes[i];\n    const rightKeyframe = i + 1 < oldKeyframes.length ? oldKeyframes[i + 1] : oldKeyframes[i];\n\n    const { p0, p1, p2, p3, type } = getControlPoints(leftKeyframe, rightKeyframe, true);\n\n    assertExist(p2);\n    assertExist(p3);\n    const keyData = {\n      leftControl: lastControl,\n      value: p0,\n      rightControl: p1,\n      tangentMode: type === 'line' ? TangentMode.Linear : TangentMode.Cubic,\n    };\n\n    if (leftKeyframe[0] === spec.BezierKeyframeType.HOLD) {\n      keyData.tangentMode = TangentMode.Constant;\n    }\n\n    keyDatas.push(keyData);\n    lastControl = p2;\n  }\n\n  const calculateSlope = (p0: Vector2Like, p1: Vector2Like) => {\n    return (p1.y - p0.y) / (p1.x - p0.x + NumberEpsilon);\n  };\n\n  for (let i = 0; i < keyDatas.length; i++) {\n    const leftControl = keyDatas[i].leftControl;\n    const value = keyDatas[i].value;\n    const rightControl = keyDatas[i].rightControl;\n\n    let inSlope = 0;\n    let outSlope = 0;\n\n    if (i > 0) {\n      inSlope = calculateSlope(leftControl, value);\n    }\n    if (i < keyDatas.length - 1) {\n      outSlope = calculateSlope(value, rightControl);\n    }\n\n    const keyframe: Keyframe = {\n      time: value.x,\n      value: value.y,\n      inSlope: inSlope,\n      outSlope: outSlope,\n      inWeight: 0,\n      outWeight: 0,\n      tangentMode: keyDatas[i].tangentMode,\n      weightedMode: WeightedMode.Both,\n    };\n\n    keyframes.push(keyframe);\n\n    if (i > 0) {\n      keyframe.inWeight = (value.x - leftControl.x) / ((value.x - keyDatas[i - 1].value.x) / 3);\n    }\n\n    if (i + 1 < keyDatas.length) {\n      keyframe.outWeight = (rightControl.x - value.x) / ((keyDatas[i + 1].value.x - value.x) / 3);\n    }\n  }\n\n  return keyframes;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { colorToArr, isFunction } from '../../utils';\nimport { BezierCurvePath, BezierCurveQuat, GradientValue, LinearValue, LineSegments, PathSegments, RandomSetValue, RandomValue, RandomVectorValue, StaticValue } from './value-getter';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { ColorCurve } from './color-curve';\nimport { Vector2Curve, Vector3Curve, Vector4Curve } from './vector-curves';\nimport { ValueGetter } from './value-getter';\nimport { HELP_LINK } from '../../constants';\nimport { BezierCurve } from './bezier-curve';\n\n/**\n * Vector2 曲线\n * TODO: add spec\n */\nconst VECTOR3_CURVE = 27;\n\nconst map: Record<any, any> = {\n  [spec.ValueType.RANDOM] (props: number[][]) {\n    if (props[0] instanceof Array) {\n      return new RandomVectorValue(props);\n    }\n\n    return new RandomValue(props);\n  },\n  [spec.ValueType.CONSTANT] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.CONSTANT_VEC2] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.CONSTANT_VEC3] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.CONSTANT_VEC4] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.RGBA_COLOR] (props: number) {\n    return new StaticValue(props);\n  },\n  [spec.ValueType.COLORS] (props: number[][]) {\n    return new RandomSetValue(props.map(c => colorToArr(c, false)));\n  },\n  [spec.ValueType.LINE] (props: number[][]) {\n    if (props.length === 2 && props[0][0] === 0 && props[1][0] === 1) {\n      return new LinearValue([props[0][1], props[1][1]]);\n    }\n\n    return new LineSegments(props);\n  },\n  [spec.ValueType.GRADIENT_COLOR] (props: number[][] | Record<string, string>) {\n    return new GradientValue(props);\n  },\n  [spec.ValueType.LINEAR_PATH] (pros: number[][][]) {\n    return new PathSegments(pros);\n  },\n  [spec.ValueType.BEZIER_CURVE] (props: number[][][]) {\n    if (props.length === 1) {\n      return new StaticValue(props[0][1][1]);\n    }\n\n    return new BezierCurve(props as spec.BezierKeyframeValue[]);\n  },\n  [spec.ValueType.BEZIER_CURVE_PATH] (props: number[][][]) {\n    if (props[0].length === 1) {\n      return new StaticValue(new Vector3(...props[1][0]));\n    }\n\n    return new BezierCurvePath(props);\n  },\n  [spec.ValueType.BEZIER_CURVE_QUAT] (props: number[][][]) {\n    if (props[0].length === 1) {\n      return new StaticValue(new Quaternion(...props[1][0]));\n    }\n\n    return new BezierCurveQuat(props);\n  },\n  [spec.ValueType.COLOR_CURVE] (props: spec.ColorCurveData) {\n    return new ColorCurve(props);\n  },\n  [spec.ValueType.VECTOR4_CURVE] (props: spec.Vector4CurveData) {\n    return new Vector4Curve(props);\n  },\n  [spec.ValueType.VECTOR2_CURVE] (props: spec.Vector2CurveData) {\n    return new Vector2Curve(props);\n  },\n  // TODO: add spec\n  [VECTOR3_CURVE] (props: spec.Vector3CurveData) {\n    return new Vector3Curve(props);\n  },\n};\n\nexport function createValueGetter (args: any): ValueGetter<any> {\n  if (!args || !isNaN(+args)) {\n    return new StaticValue(args || 0);\n  }\n\n  if (args instanceof ValueGetter) {\n    return args;\n  }\n\n  if (isFunction(map[args[0]])) {\n    return map[args[0]](args[1]);\n  } else {\n    throw new Error(`ValueType: ${args[0]} is not supported, see ${HELP_LINK['ValueType: 21/22 is not supported']}.`);\n  }\n}","import { Color } from '@galacean/effects-math/es/core/color';\nimport { ValueGetter } from './value-getter';\nimport type * as spec from '@galacean/effects-specification';\nimport { createValueGetter } from './value-getter-map';\nimport type { BezierCurve } from './bezier-curve';\n\nexport class ColorCurve extends ValueGetter<Color> {\n  private value = new Color();\n\n  private rCurve: BezierCurve;\n  private gCurve: BezierCurve;\n  private bCurve: BezierCurve;\n  private aCurve: BezierCurve;\n\n  override onCreate (arg: spec.ColorCurveData) {\n    this.rCurve = createValueGetter(arg[0]) as BezierCurve;\n    this.gCurve = createValueGetter(arg[1]) as BezierCurve;\n    this.bCurve = createValueGetter(arg[2]) as BezierCurve;\n    this.aCurve = createValueGetter(arg[3]) as BezierCurve;\n  }\n\n  override getValue (t: number): Color {\n    const r = this.rCurve.getValue(t);\n    const g = this.gCurve.getValue(t);\n    const b = this.bCurve.getValue(t);\n    const a = this.aCurve.getValue(t);\n\n    this.value.set(r, g, b, a);\n\n    return this.value;\n  }\n\n  override getMaxTime (): number {\n    return Math.max(\n      this.rCurve.getMaxTime(),\n      this.gCurve.getMaxTime(),\n      this.bCurve.getMaxTime(),\n      this.aCurve.getMaxTime(),\n    );\n  }\n}","export const EFFECTS_COPY_MESH_NAME = 'effects-internal-copy';\nexport const COPY_MESH_SHADER_ID = 'effects-internal-copy-mesh';\n\nexport const COPY_VERTEX_SHADER = `\nprecision highp float;\nattribute vec2 aPos;\nvarying vec2 vTex;\nvoid main(){\n    gl_Position = vec4(aPos,0.,1.0);\n    vTex = (aPos + vec2(1.0))/2.;\n}`;\n\nexport const COPY_FRAGMENT_SHADER = `precision mediump float;\nvarying vec2 vTex;\n\n#ifdef DEPTH_TEXTURE\nuniform sampler2D uDepth;\n#extension GL_EXT_frag_depth : enable\n#endif\nvoid main(){\n    #ifdef DEPTH_TEXTURE\n    gl_FragDepthEXT = texture2D(uDepth,vTex).r;\n    #endif\n}\n`;","import type * as spec from '@galacean/effects-specification';\n\ntype DataRange = [start: number, length: number];\ntype ImageSource = HTMLImageElement | HTMLCanvasElement;\n\nexport enum TextureLoadAction {\n  whatever = 0,\n  //preserve previous attachment\n  //load = 1,\n  //clear attachment\n  clear = 2,\n}\n\nexport enum TextureSourceType {\n  none = 0,\n  data = 1,\n  image = 2,\n  compressed = 3,\n  video = 4,\n  canvas = 5,\n  framebuffer = 6,\n  mipmaps = 7\n}\n\nexport type TextureSourceCubeData = [\n  TEXTURE_CUBE_MAP_POSITIVE_X: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_NEGATIVE_X: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_POSITIVE_Y: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_NEGATIVE_Y: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_POSITIVE_Z: ImageSource | { data: spec.TypedArray, width: number, height: number },\n  TEXTURE_CUBE_MAP_NEGATIVE_Z: ImageSource | { data: spec.TypedArray, width: number, height: number }\n];\n\nexport type TextureCubeSourceURLMap = [\n  TEXTURE_CUBE_MAP_POSITIVE_X: string,\n  TEXTURE_CUBE_MAP_NEGATIVE_X: string,\n  TEXTURE_CUBE_MAP_POSITIVE_Y: string,\n  TEXTURE_CUBE_MAP_NEGATIVE_Y: string,\n  TEXTURE_CUBE_MAP_POSITIVE_Z: string,\n  TEXTURE_CUBE_MAP_NEGATIVE_Z: string\n];\n\nexport type TextureFactorySource2DBinaryMipmapsFrom = {\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  type: TextureSourceType.mipmaps,\n  bin: string,\n  mipmaps: DataRange[],\n};\n\nexport type TextureFactorySourceCubeBinaryMipmapsFrom = {\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n  type: TextureSourceType.mipmaps,\n  bin: string,\n  mipmaps: [\n    TEXTURE_CUBE_MAP_POSITIVE_X: DataRange,\n    TEXTURE_CUBE_MAP_NEGATIVE_X: DataRange,\n    TEXTURE_CUBE_MAP_POSITIVE_Y: DataRange,\n    TEXTURE_CUBE_MAP_NEGATIVE_Y: DataRange,\n    TEXTURE_CUBE_MAP_POSITIVE_Z: DataRange,\n    TEXTURE_CUBE_MAP_NEGATIVE_Z: DataRange\n  ][],\n};\n\nexport interface TextureFactorySource2DFrom {\n  type: TextureSourceType.image | TextureSourceType.video,\n  url: string,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport type TextureFactorySourceCubeFrom = {\n  type: TextureSourceType.image,\n  map: TextureCubeSourceURLMap | string[],\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n};\n\nexport interface TextureFactorySourceCubeMipmapsFrom {\n  type: TextureSourceType.mipmaps,\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n  maps: TextureCubeSourceURLMap[] | string[][],\n}\n\nexport interface TextureFactorySource2DMipmapsFrom {\n  type: TextureSourceType.mipmaps,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  urls: string[],\n}\n\nexport interface TextureFactorySourceFromCompressed {\n  type: TextureSourceType.compressed,\n  url: string,\n  // TODO 临时添加，通过下层setTexture类型检查，考虑该类型是否需要target。\n  target?: number,\n}\n\nexport type TextureFactorySourceFrom =\n  | TextureFactorySource2DBinaryMipmapsFrom\n  | TextureFactorySourceCubeBinaryMipmapsFrom\n  | TextureFactorySource2DFrom\n  | TextureFactorySourceCubeFrom\n  | TextureFactorySourceCubeMipmapsFrom\n  | TextureFactorySource2DMipmapsFrom\n  | TextureFactorySourceFromCompressed;\n\nexport interface TextureConfigOptions extends spec.TextureConfigOptionsBase {\n  sourceFrom?: TextureFactorySourceFrom,\n}\n\nexport interface TextureOptionsBase extends TextureConfigOptions, spec.TextureFormatOptions {\n}\n\nexport interface TextureCubeSourceOptionsImage extends TextureOptionsBase {\n  sourceType: TextureSourceType.image | TextureSourceType.data,\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n  cube: TextureSourceCubeData,\n}\n\nexport interface TextureCubeSourceOptionsImageMipmaps extends TextureOptionsBase {\n  sourceType?: TextureSourceType.mipmaps,\n  mipmaps: TextureSourceCubeData[],\n  target: WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n}\n\nexport type TextureCubeSourceOptions = TextureCubeSourceOptionsImage | TextureCubeSourceOptionsImageMipmaps;\n\nexport type TextureDataType = {\n  data: spec.TypedArray,\n  width: number,\n  height: number,\n};\n\nexport interface Texture2DSourceOptionsImage extends TextureOptionsBase {\n  sourceType?: TextureSourceType.image,\n  image: ImageSource,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  generateMipmap?: boolean,\n}\n\nexport interface Texture2DSourceOptionsData extends TextureOptionsBase {\n  sourceType?: TextureSourceType.data,\n  data: TextureDataType,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport interface Texture2DSourceOptionsVideo extends TextureOptionsBase {\n  sourceType?: TextureSourceType.video,\n  video: HTMLVideoElement,\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n  generateMipmap?: boolean,\n}\n\nexport interface Texture2DSourceOptionsImageMipmaps extends TextureOptionsBase {\n  sourceType?: TextureSourceType.mipmaps,\n  mipmaps: (ImageSource | TextureDataType)[],\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport interface Texture2DSourceOptionsCompressed extends TextureOptionsBase {\n  sourceType?: TextureSourceType.compressed,\n  mipmaps: TextureDataType[],\n  target?: WebGLRenderingContext['TEXTURE_2D'] | WebGLRenderingContext['TEXTURE_CUBE_MAP'],\n}\n\nexport interface Texture2DSourceOptionsFramebuffer extends TextureOptionsBase {\n  sourceType: TextureSourceType.framebuffer,\n  data?: { width: number, height: number },\n  target?: WebGLRenderingContext['TEXTURE_2D'],\n}\n\nexport interface Texture2DSourceOptionsNone extends TextureOptionsBase {\n  sourceType?: TextureSourceType.none,\n  target?: GLenum,\n}\n\nexport type Texture2DSourceOptions =\n  | Texture2DSourceOptionsImage\n  | Texture2DSourceOptionsData\n  | Texture2DSourceOptionsVideo\n  | Texture2DSourceOptionsImageMipmaps\n  | Texture2DSourceOptionsCompressed\n  | Texture2DSourceOptionsFramebuffer\n  | Texture2DSourceOptionsNone;\n\n// TODO texture的options太复杂，需要精简，构造函数很多参数传进去后没有给对象赋值，导致获取不到真实值（比如width和height）\nexport type TextureSourceOptions = Texture2DSourceOptions | TextureCubeSourceOptions;\n","import type { Texture } from '../texture';\nimport type { Renderbuffer } from './renderbuffer';\nimport type { RenderPassAttachmentStorageType, RenderPassDepthStencilAttachmentOptions } from './render-pass';\nimport type { RenderPassDestroyAttachmentType, RenderPassStoreAction } from './render-pass';\nimport type { Renderer } from './renderer';\n\nexport interface FramebufferProps {\n  attachments: Texture[],\n  depthStencilAttachment?: RenderPassDepthStencilAttachmentOptions,\n  viewport: [x: number, y: number, width: number, height: number],\n  storeAction: RenderPassStoreAction,\n  name?: string,\n}\n\nexport enum FilterMode {\n  Nearest,\n  Linear,\n}\n\nexport enum RenderTextureFormat {\n  RGBA32,\n  RGBAHalf,\n}\n\n/**\n *\n */\nexport class Framebuffer {\n  depthStencilStorageType: RenderPassAttachmentStorageType;\n  name: string;\n  viewport: [x: number, y: number, width: number, height: number];\n  ready: boolean;\n  externalStorage: boolean;\n  storeAction: RenderPassStoreAction;\n\n  static create: (props: FramebufferProps, renderer: Renderer) => Framebuffer;\n\n  resize (x: number, y: number, width: number, height: number) {\n    // OVERRIDE\n  }\n\n  resetColorTextures (textures: Texture[]) {\n    // OVERRIDE\n  }\n\n  unbind () {\n    // OVERRIDE\n  }\n\n  bind () {\n    // OVERRIDE\n  }\n\n  get stencilStorage (): Renderbuffer | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  get depthStorage (): Renderbuffer | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  getDepthTexture (): Texture | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  getStencilTexture (): Texture | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  getColorTextures (): Texture[] {\n    // OVERRIDE\n    return [];\n  }\n\n  dispose (options?: { depthStencilAttachment?: RenderPassDestroyAttachmentType }) {\n    // OVERRIDE\n  }\n}\n","export type GLType = 'webgl' | 'webgl2';\n\n/**\n * Helper class to create a WebGL Context\n *\n * @param canvas\n * @param glType\n * @param options\n * @returns\n */\nexport function createGLContext (\n  canvas: HTMLCanvasElement | OffscreenCanvas,\n  glType: GLType = 'webgl',\n  options: WebGLContextAttributes,\n): WebGLRenderingContext | WebGL2RenderingContext {\n  let context: WebGLRenderingContext | WebGL2RenderingContext | undefined;\n\n  if (glType === 'webgl2') {\n    context = canvas.getContext('webgl2', options) as WebGL2RenderingContext;\n    if (!context) {\n      console.debug('WebGL2 context retrieval failed, falling back to WebGL context.');\n    }\n  }\n  if (!context || glType === 'webgl') {\n    context = canvas.getContext('webgl', options) as WebGLRenderingContext;\n  }\n  if (!context) {\n    throw new Error('This browser does not support WebGL or the WebGL version is incorrect. Please check your WebGL version.');\n  }\n\n  return context;\n}\n","export function gpuTimer (gl: WebGL2RenderingContext) {\n  const ext = gl.getExtension('EXT_disjoint_timer_query_webgl2');\n\n  if (ext) {\n    let query = gl.createQuery();\n    const getTime = async () => {\n      return new Promise<number | null>((resolve, reject) => {\n        if (query) {\n          const available = gl.getQueryParameter(query, gl.QUERY_RESULT_AVAILABLE);\n          const disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n\n          if (available && !disjoint) {\n            // See how much time the rendering of the object took in nanoseconds.\n            const timeElapsed = gl.getQueryParameter(query, gl.QUERY_RESULT); // Do something useful with the time.  Note that care should be\n\n            // taken to use all significant bits of the result, not just the\n            // least significant 32 bits.\n            resolve(timeElapsed / 1000 / 1000);\n          }\n          if (available || disjoint) {\n            // Clean up the query object.\n            gl.deleteQuery(query); // Don't re-enter this polling loop.\n\n            query = null;\n          }\n          available !== null && query && window.setTimeout(() => {\n            getTime().then(resolve).catch;\n          }, 1);\n        }\n      });\n    };\n\n    if (!query) {\n      return;\n    }\n\n    return {\n      begin: () => {\n        query && gl.beginQuery(ext.TIME_ELAPSED_EXT, query);\n      },\n      end: () => {\n        gl.endQuery(ext.TIME_ELAPSED_EXT);\n      },\n      getTime,\n    };\n  }\n}\n\n","import * as spec from '@galacean/effects-specification';\nimport { canUseBOM, isIOS } from '../utils';\n\nexport * from './create-gl-context';\nexport * from './gpu-time';\n\nexport const initErrors: string[] = [];\nexport const glContext: WebGL2RenderingContext = {} as WebGL2RenderingContext;\n\nconst IOS16_LOCKDOWN_MODE = 'iOS16 lockdown mode, WebGL Constants not in global';\nconst WEBGL_CONSTANTS_NOT_IN_GLOBAL = 'WebGL Constants not in global, please check your environment';\n\nif (!initErrors.length) {\n  initGLContext();\n}\n\nexport function initGLContext () {\n  // 重要：iOS 9/10 低版本需要拷贝 gl context 的 prototype，要不然会有属性值的缺失\n  if (typeof WebGL2RenderingContext === 'function') {\n    copy(WebGL2RenderingContext);\n  } else if (typeof WebGLRenderingContext !== 'undefined') {\n    copy(WebGLRenderingContext);\n    copy(WebGLRenderingContext.prototype);\n  } else {\n    if (canUseBOM) {\n      initErrors.push(\n        // iOS 16 lockdown mode\n        isIOS() ? IOS16_LOCKDOWN_MODE : WEBGL_CONSTANTS_NOT_IN_GLOBAL,\n      );\n    } else {\n      initErrors.push(WEBGL_CONSTANTS_NOT_IN_GLOBAL);\n    }\n  }\n  if (!initErrors.length && !('HALF_FLOAT' in glContext)) {\n    // @ts-expect-error set default value\n    glContext['HALF_FLOAT'] = 5131;\n  }\n}\n\nexport function isWebGL2 (gl: WebGLRenderingContext | WebGL2RenderingContext): gl is WebGL2RenderingContext {\n  return typeof WebGL2RenderingContext !== 'undefined' && gl.constructor.name === 'WebGL2RenderingContext';\n}\n\nfunction copy (target: any) {\n  for (const name in target) {\n    if (/^[A-Z_]/.test(name)) {\n      // @ts-expect-error safe to assign\n      glContext[name] = target[name];\n    }\n  }\n}\n\nexport function vertexFormatType2GLType (formatType: spec.VertexFormatType): spec.BufferType {\n  switch (formatType) {\n    case spec.VertexFormatType.Float32:\n      return WebGLRenderingContext['FLOAT'];\n    case spec.VertexFormatType.Int16:\n      return WebGLRenderingContext['SHORT'];\n    case spec.VertexFormatType.Int8:\n      return WebGLRenderingContext['BYTE'];\n    case spec.VertexFormatType.UInt16:\n      return WebGLRenderingContext['UNSIGNED_SHORT'];\n    case spec.VertexFormatType.UInt8:\n      return WebGLRenderingContext['UNSIGNED_BYTE'];\n    default:\n      return WebGLRenderingContext['FLOAT'];\n  }\n}\n\nexport function glType2VertexFormatType (webglType: spec.BufferType): spec.VertexFormatType {\n  switch (webglType) {\n    case WebGLRenderingContext['FLOAT']:\n      return spec.VertexFormatType.Float32;\n    case WebGLRenderingContext['SHORT']:\n      return spec.VertexFormatType.Int16;\n    case WebGLRenderingContext['BYTE']:\n      return spec.VertexFormatType.Int8;\n    case WebGLRenderingContext['UNSIGNED_SHORT']:\n      return spec.VertexFormatType.UInt16;\n    case WebGLRenderingContext['UNSIGNED_BYTE']:\n      return spec.VertexFormatType.UInt8;\n    default:\n      return spec.VertexFormatType.Float32;\n  }\n}\n","import { isAndroid } from './utils';\n\n/**\n * 成功处理程序\n * @template T\n */\ntype SuccessHandler<T> = (data: T) => void;\n/**\n * 错误处理程序\n * @param status - HTTP 状态码\n * @param responseText - 响应文本\n */\ntype ErrorHandler = (status: number, responseText: string) => void;\n\n/**\n * JSON 值，它可以是字符串、数字、布尔值、对象或者 JSON 值的数组。\n *\n * @typedef {string | number | boolean | {[key: string]: JSONValue} | JSONValue[]} JSONValue\n */\nexport type JSONValue =\n  | string\n  | number\n  | boolean\n  | { [key: string]: JSONValue }\n  | JSONValue[];\n\n/**\n * 负责下载各种资源，并提供了一些异步加载和缓存管理的功能\n */\nexport class Downloader {\n\n  /**\n   * 是否信任 XMLHttpRequest 的状态码为 0 的响应\n   * 某些浏览器在本地文件协议（file://）下会返回状态码 0，但实际上请求是成功的\n   * 设置为 true 可以让 Downloader 将状态码 0 视为成功\n   */\n  static trustXHRStatusZero = false;\n\n  /**\n   * 存储多个回调函数的对象\n   */\n  private callbacks: Record<string, Function[]> = {};\n\n  /**\n   * 下载一个 JSON 文件\n   * @param url - 要下载的 JSON 文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadJSON (url: string, onSuccess: SuccessHandler<JSONValue>, onError: ErrorHandler) {\n    this.download(url, 'json', onSuccess, onError);\n  }\n\n  /**\n   * 下载一个二进制文件\n   * @param url - 要下载的二进制文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadBinary (url: string, onSuccess: SuccessHandler<ArrayBuffer>, onError: ErrorHandler) {\n    this.download(url, 'arraybuffer', onSuccess, onError);\n  }\n\n  /**\n   * 下载一个 Blob 文件\n   * @param url - 要下载的 Blob 文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadBlob (url: string, onSuccess: SuccessHandler<Blob>, onError: ErrorHandler) {\n    this.download(url, 'blob', onSuccess, onError);\n  }\n\n  /**\n   * 下载一个文本文件\n   * @param url - 要下载的文本文件的 URL\n   * @param onSuccess - 下载成功后的回调函数\n   * @param onError - 下载失败后的回调函数\n   */\n  downloadText (url: string, onSuccess: SuccessHandler<string>, onError: ErrorHandler) {\n    this.download(url, 'text', onSuccess, onError);\n  }\n\n  private download (url: string, responseType: XMLHttpRequestResponseType = 'json', onSuccess: SuccessHandler<any>, onError: ErrorHandler) {\n    if (this.start(url, onSuccess, onError)) {\n      return;\n    }\n\n    const xhr = new XMLHttpRequest();\n    const handleError = () => {\n      this.finish(url, xhr.status, xhr.response);\n    };\n    const handleLoad = () => {\n      if (xhr.status == 200 || (xhr.status == 0 && Downloader.trustXHRStatusZero)) {\n        this.finish(url, 200, xhr.response);\n      } else {\n        handleError();\n      }\n    };\n\n    xhr.responseType = responseType;\n    xhr.addEventListener('load', handleLoad);\n    xhr.addEventListener('error', handleError);\n    xhr.open('GET', url, true);\n    xhr.send();\n  }\n\n  private start (url: string, onSuccess: SuccessHandler<any>, onError: ErrorHandler) {\n    let callbacks = this.callbacks[url];\n\n    try {\n      if (callbacks) { return true; }\n      this.callbacks[url] = callbacks = [];\n    } finally {\n      callbacks.push(onSuccess, onError);\n    }\n  }\n\n  private finish (url: string, status: number, data: any) {\n    const callbacks = this.callbacks[url];\n\n    delete this.callbacks[url];\n    const args = status == 200 || (status == 0 && Downloader.trustXHRStatusZero) ? [data] : [status, data];\n\n    for (let i = args.length - 1, n = callbacks.length; i < n; i += 2) {\n      callbacks[i].apply(null, args);\n    }\n  }\n}\n\nlet webPFailed = false;\nlet avifFailed = false;\n\n/**\n * 异步加载一个 WebP 图片文件，如果不支持 WebP，则加载 PNG 图片文件\n * @param png - PNG 图片文件的 URL\n * @param webp - WebP 图片文件的 URL\n */\nexport async function loadWebPOptional (png: string, webp?: string) {\n  if (webPFailed || !webp) {\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n\n  try {\n    const image = await loadImage(webp);\n\n    return { image, url: webp };\n  } catch (_) {\n    webPFailed = true;\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n}\n\n/**\n * 异步加载一个 AVIF 图片文件，如果不支持 AVIF，则加载 PNG 图片文件\n * @param png - PNG 图片文件的 URL\n * @param avif - AVIF 图片文件的 URL\n */\nexport async function loadAVIFOptional (png: string, avif?: string) {\n  if (avifFailed || !avif) {\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n\n  try {\n    const image = await loadImage(avif);\n\n    return { image, url: avif };\n  } catch (_) {\n    avifFailed = true;\n    const image = await loadImage(png);\n\n    return { image, url: png };\n  }\n}\n\n/**\n * 异步加载一个图片文件\n * @param source - 图片文件的 URL、Blob 或 HTMLImageElement 对象\n */\nexport async function loadImage (\n  source: string | Blob | HTMLImageElement,\n): Promise<HTMLImageElement> {\n  let url = '';\n  let revokeURL: boolean;\n\n  // 1. string | Blob | HTMLImageElement 处理逻辑\n  if (source instanceof HTMLImageElement) {\n    if (source.complete) {\n      return source;\n    }\n    url = source.src;\n  } else if (source instanceof Blob) {\n    url = URL.createObjectURL(source);\n    revokeURL = true;\n  } else if (typeof source === 'string') {\n    url = source;\n  }\n\n  // 2. 非法类型\n  if (!url) {\n    throw new Error(`Invalid url type: ${JSON.stringify(source)}.`);\n  }\n\n  return new Promise<HTMLImageElement>((resolve, reject) => {\n    const img = new Image();\n\n    if (!/^data:/.test(url)) {\n      img.crossOrigin = '*';\n    }\n    img.onload = () => {\n      img.onload = null;\n      if (revokeURL) {\n        URL.revokeObjectURL(url);\n      }\n\n      return resolve(img);\n    };\n    img.onerror = e => {\n      img.onerror = null;\n      if (revokeURL) {\n        URL.revokeObjectURL(url);\n      }\n\n      return reject(`Load image fail: ${url}, reason: ${JSON.stringify(e)}`);\n    };\n    img.src = url;\n  });\n\n}\n\n/**\n * 异步加载一个二进制文件\n * @param url - 二进制文件的 URL\n */\nexport async function loadBinary (url: string): Promise<ArrayBuffer> {\n  return new Promise<ArrayBuffer>((resolve, reject) => {\n    new Downloader().downloadBinary(\n      url,\n      resolve,\n      (status, responseText) => {\n        reject(`Couldn't load bins ${url}: status ${status}, ${responseText}`);\n      });\n  });\n}\n\n/**\n * 异步加载一个 Blob 文件\n * @param url - Blob 文件的 URL\n */\nexport async function loadBlob (url: string): Promise<Blob> {\n  return new Promise<Blob>((resolve, reject) => {\n    new Downloader().downloadBlob(\n      url,\n      resolve,\n      (status, responseText) => {\n        reject(`Couldn't load blob ${url}: status ${status}, ${responseText}`);\n      });\n  });\n}\n\n/**\n * 异步加载一个视频文件\n * @param url - 视频文件的 URL 或 MediaProvider 对象\n */\nexport async function loadVideo (url: string | MediaProvider): Promise<HTMLVideoElement> {\n  const video = document.createElement('video');\n\n  if (typeof url === 'string') {\n    video.src = url;\n  } else {\n    video.srcObject = url;\n  }\n  video.crossOrigin = 'anonymous';\n  video.muted = true;\n  video.autoplay = false;\n  if (isAndroid()) {\n    video.setAttribute('renderer', 'standard');\n  }\n  video.setAttribute('playsinline', 'playsinline');\n\n  return new Promise<HTMLVideoElement>((resolve, reject) => {\n    let settled = false;\n\n    const handleSuccess = () => {\n      if (settled) {return;}\n      settled = true;\n      cleanup();\n      resolve(video);\n    };\n\n    const handleError = () => {\n      if (settled) {return;}\n      settled = true;\n      cleanup();\n      reject('Load video fail.');\n    };\n\n    const cleanup = () => {\n      video.removeEventListener('loadeddata', handleSuccess);\n      video.removeEventListener('canplay', handleSuccess);\n      video.removeEventListener('error', handleError);\n    };\n\n    video.addEventListener('loadeddata', handleSuccess);\n    video.addEventListener('canplay', handleSuccess);\n    video.addEventListener('error', handleError);\n\n    video.play().catch(err => {\n      console.warn('Autoplay blocked:', err);\n    });\n  });\n}\n\n/**\n * 异步加载一个媒体文件\n * @param url\n * @param loadFn\n * @returns\n */\nexport async function loadMedia (url: string | string[], loadFn: (url: string) => Promise<HTMLImageElement | HTMLVideoElement>) {\n  if (Array.isArray(url)) {\n    try {\n      return await loadFn(url[0]);\n    } catch (_) {\n      return await loadFn(url[1]);\n    }\n  }\n\n  return loadFn(url);\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { Texture2DSourceOptions, TextureCubeSourceOptions } from './types';\nimport { TextureSourceType } from './types';\nimport { loadImage } from '../downloader';\n\ntype TextureJSONOptions = spec.SerializedTextureSource & spec.TextureConfigOptionsBase & spec.TextureFormatOptions;\n\nexport async function deserializeMipmapTexture (\n  textureOptions: TextureJSONOptions,\n  bins: ArrayBuffer[],\n  assets: Record<string, any>,\n  files: spec.BinaryFile[] = [],\n): Promise<Texture2DSourceOptions | TextureCubeSourceOptions> {\n  if (textureOptions.target === 34067) {\n    const { mipmaps, target } = textureOptions as spec.SerializedTextureCube;\n    const jobs = mipmaps.map(mipmap => Promise.all(mipmap.map(pointer => {\n      // @ts-expect-error\n      if (pointer.id) {\n        // @ts-expect-error\n        const loadedImage = assets[pointer.id];\n\n        return loadedImage;\n      } else {\n        return loadMipmapImage(pointer, bins);\n      }\n    })));\n\n    const loadedMipmaps = await Promise.all(jobs);\n\n    return {\n      keepImageSource: false,\n      ...textureOptions,\n      ...{\n        mipmaps: loadedMipmaps,\n        sourceFrom: {\n          target,\n          // bin,\n          type: TextureSourceType.mipmaps,\n          // mipmaps: mipmaps.map(mipmap => mipmap.map(pointer => [pointer[1][1], pointer[1][2]])),\n        },\n      } as TextureCubeSourceOptions,\n    };\n  } else {\n    // TODO: 补充测试用例\n    const { mipmaps, target } = textureOptions as spec.SerializedTexture2DMipmapSource;\n    const jobs = mipmaps.map(pointer => loadMipmapImage(pointer, bins));\n    const loadedMipmaps = await Promise.all(jobs);\n    const bin = files[mipmaps[0][1][0]].url;\n\n    return {\n      keepImageSource: false,\n      ...textureOptions,\n      ...{\n        mipmaps: loadedMipmaps,\n        sourceType: TextureSourceType.mipmaps,\n        sourceFrom: {\n          target,\n          bin,\n          type: TextureSourceType.mipmaps,\n          mipmaps: mipmaps.map(pointer => [pointer[1][1], pointer[1][2]]),\n        },\n      } as Texture2DSourceOptions,\n    };\n  }\n}\n\nasync function loadMipmapImage (pointer: spec.BinaryPointer, bins: ArrayBuffer[]) {\n  const [index, start, length] = pointer[1];\n  const bin = bins[index];\n\n  if (!bin) {\n    throw new Error(`Invalid bin pointer: ${JSON.stringify(pointer)}.`);\n  }\n\n  return loadImage(new Blob([new Uint8Array(bin, start, length)]));\n}\n","import * as spec from '@galacean/effects-specification';\nimport { TextureSourceType } from './types';\nimport type { TextureFactorySourceFrom, TextureSourceOptions, TextureDataType, TextureOptionsBase } from './types';\nimport { glContext } from '../gl';\nimport type { Engine } from '../engine';\nimport { EffectsObject } from '../effects-object';\nimport { loadImage, loadVideo } from '../downloader';\nimport { generateGUID } from '../utils';\n\nlet seed = 1;\n\n/**\n * Texture 抽象类\n */\nexport abstract class Texture extends EffectsObject {\n  /**\n   * Texture 名称\n   */\n  name: string;\n  sourceFrom?: TextureFactorySourceFrom;\n  sourceType?: TextureSourceType;\n  source: TextureSourceOptions;\n\n  /**\n   * Texture 高度\n   */\n  width: number;\n  /**\n   * Texture 宽度\n   */\n  height: number;\n  /**\n   * Texture 的全局唯一 id\n   */\n  readonly id: string;\n\n  protected destroyed = false;\n  protected offloaded: boolean;\n\n  /**\n   * 创建一个新的 Texture 对象。\n   */\n  static create: (engine: Engine, options?: TextureSourceOptions) => Texture;\n\n  /**\n   * 通过 URL 创建 Texture 对象。\n   * @param url - 要创建的 Texture URL\n   * @since 2.0.0\n   */\n  static async fromImage (\n    url: string,\n    engine: Engine,\n    options?: TextureOptionsBase,\n  ): Promise<Texture> {\n    const image = await loadImage(url);\n\n    const texture = Texture.create(engine, {\n      sourceType: TextureSourceType.image,\n      image,\n      target: glContext.TEXTURE_2D,\n      id: generateGUID(),\n      flipY: true,\n      ...options,\n    });\n\n    texture.initialize();\n\n    return texture;\n  }\n\n  /**\n   * 通过视频 URL 创建 Texture 对象。\n   * @param url - 要创建的 Texture URL\n   * @param engine - 引擎对象\n   * @param options - 可选的 Texture 选项\n   * @since 2.1.0\n   * @returns\n   */\n  static async fromVideo (\n    url: string,\n    engine: Engine,\n    options?: TextureOptionsBase,\n  ): Promise<Texture> {\n    const video = await loadVideo(url);\n    const texture = Texture.create(engine, {\n      sourceType: TextureSourceType.video,\n      video,\n      id: generateGUID(),\n      flipY: true,\n      ...options,\n    });\n\n    texture.initialize();\n\n    return texture;\n  }\n\n  /**\n   * 通过数据创建 Texture 对象。\n   * @param data - 要创建的 Texture 数据\n   * @param options - 可选的 Texture 选项\n   */\n  static createWithData: (\n    engine: Engine,\n    data?: TextureDataType,\n    options?: Record<string, any>,\n  ) => Texture;\n\n  constructor (engine: Engine) {\n    super(engine);\n    this.id = 'Tex' + seed++;\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  /**\n   * 获取 Texture 的宽度。\n   */\n  getWidth () {\n    return this.width || 0;\n  }\n\n  /**\n   * 获取 Texture 的高度。\n   */\n  getHeight () {\n    return this.height || 0;\n  }\n\n  uploadCurrentVideoFrame () {\n    // OVERRIDE\n  }\n\n  /**\n   * 释放 Texture GPU 资源。\n   * 注意：该方法只释放资源，并不销毁 GPU textureBuffer 对象。\n   * @override\n   */\n  offloadData () {\n    // OVERRIDE\n  }\n\n  /**\n   * 重新加载 Texture  GPU 资源。\n   * @override\n   */\n  reloadData () {\n    // OVERRIDE\n  }\n\n  /**\n   * 更新 Texture 源数据。\n   * @param options - 创建 Texture 选项\n   */\n  abstract updateSource (options: TextureSourceOptions): void;\n\n  /**\n   * 初始化 GPU 资源\n   * @override\n   */\n  initialize (): void {\n    // OVERRIDE\n  }\n\n  protected assembleOptions (options: TextureSourceOptions): TextureSourceOptions {\n    const { target = glContext.TEXTURE_2D, format: internalFormat = glContext.RGBA } = options;\n\n    if (!options.sourceType) {\n      if ('image' in options) {\n        options.sourceType = TextureSourceType.image;\n      } else if ('data' in options) {\n        options.sourceType = TextureSourceType.data;\n      } else if ('video' in options) {\n        options.sourceType = TextureSourceType.video;\n      } else {\n        options.sourceType = 0; // TextureSourceType.none\n      }\n    }\n\n    return {\n      minFilter: glContext.NEAREST,\n      magFilter: glContext.NEAREST,\n      wrapS: glContext.CLAMP_TO_EDGE,\n      wrapT: glContext.CLAMP_TO_EDGE,\n      target: target as WebGLRenderingContext['TEXTURE_2D'],\n      format: glContext.RGBA,\n      internalFormat,\n      type: glContext.UNSIGNED_BYTE,\n      ...options,\n    };\n  }\n}\n\nexport function generateHalfFloatTexture (engine: Engine, data: Uint16Array, width: number, height: number): Texture {\n  const channel = data.length / width / height;\n  let format;\n  let internalFormat;\n\n  if (channel === 4 || channel === 0) {\n    internalFormat = format = glContext.RGBA;\n  } else if (channel === 3) {\n    internalFormat = format = glContext.RGB;\n  } else if (channel === 2) {\n    internalFormat = format = glContext.LUMINANCE_ALPHA;\n  } else {\n    internalFormat = format = glContext.LUMINANCE;\n  }\n\n  return Texture.createWithData(\n    engine,\n    {\n      data, width, height,\n    },\n    {\n      type: glContext.HALF_FLOAT,\n      format,\n      internalFormat,\n      wrapS: glContext.CLAMP_TO_EDGE,\n      wrapT: glContext.CLAMP_TO_EDGE,\n    });\n}\n\nconst sourceOptions = {\n  type: glContext.UNSIGNED_BYTE,\n  format: glContext.RGBA,\n  internalFormat: glContext.RGBA,\n  wrapS: glContext.MIRRORED_REPEAT,\n  wrapT: glContext.MIRRORED_REPEAT,\n  minFilter: glContext.NEAREST,\n  magFilter: glContext.NEAREST,\n};\n\nexport function generateWhiteTexture (engine: Engine) {\n  return Texture.create(\n    engine,\n    {\n      id: spec.BuiltinObjectGUID.WhiteTexture,\n      data: {\n        width: 1,\n        height: 1,\n        data: new Uint8Array([255, 255, 255, 255]),\n      },\n      sourceType: TextureSourceType.data,\n      ...sourceOptions,\n    },\n  );\n}\n\nexport function generateTransparentTexture (engine: Engine) {\n  return Texture.create(\n    engine,\n    {\n      id: spec.BuiltinObjectGUID.TransparentTexture,\n      data: {\n        width: 1,\n        height: 1,\n        data: new Uint8Array([0, 0, 0, 0]),\n      },\n      sourceType: TextureSourceType.data,\n      ...sourceOptions,\n    },\n  );\n}","import type { Texture2DSourceOptions } from './types';\r\nimport type { GPUCapability } from '../render/gpu-capability';\r\n\r\nexport interface TextureLoader {\r\n  /**\r\n   * 从 ArrayBuffer 加载纹理\r\n   */\r\n  loadFromBuffer(\r\n    arrBuffer: ArrayBuffer,\r\n    gpuCapability?: GPUCapability\r\n  ): Promise<Texture2DSourceOptions>,\r\n\r\n  /**\r\n   * 从 URL 加载纹理\r\n   */\r\n  loadFromURL(\r\n    url: string,\r\n    gpuCapability?: GPUCapability\r\n  ): Promise<Texture2DSourceOptions>,\r\n\r\n  /**\r\n   * 释放资源\r\n   */\r\n  dispose(): void,\r\n\r\n}\r\n\r\n/**\r\n * 纹理加载器工厂类型\r\n */\r\nexport type TextureLoaderFactory = () => TextureLoader;\r\n\r\n/**\r\n * 纹理加载器注册表\r\n */\r\nclass TextureLoaderRegistry {\r\n  private loaders: Map<string, TextureLoaderFactory> = new Map();\r\n  private instances: Map<string, TextureLoader> = new Map();\r\n\r\n  /**\r\n   * 注册纹理加载器\r\n   * @param type - 加载器类型（如 'ktx2', 'hdr'）\r\n   * @param factory - 加载器工厂函数\r\n   */\r\n  register (type: string, factory: TextureLoaderFactory): void {\r\n    if (this.loaders.has(type)) {\r\n      console.warn(`TextureLoader for type \"${type}\" is already registered, skipping.`);\r\n\r\n      return; // 阻止重复注册\r\n    }\r\n    this.loaders.set(type, factory);\r\n  }\r\n\r\n  /**\r\n   * 注销纹理加载器\r\n   * @param type - 加载器类型\r\n   */\r\n  unregister (type: string): void {\r\n    const instance = this.instances.get(type);\r\n\r\n    if (instance) {\r\n      instance.dispose();\r\n      this.instances.delete(type);\r\n    }\r\n    this.loaders.delete(type);\r\n  }\r\n\r\n  /**\r\n   * 获取纹理加载器实例（单例）\r\n   * @param type - 加载器类型\r\n   */\r\n  getLoader (type: string): TextureLoader | null {\r\n    // 如果已有实例，直接返回\r\n    if (this.instances.has(type)) {\r\n      return this.instances.get(type)!;\r\n    }\r\n\r\n    // 创建新实例\r\n    const factory = this.loaders.get(type);\r\n\r\n    if (!factory) {\r\n      console.error(`TextureLoader for type \"${type}\" is not registered.`);\r\n\r\n      return null;\r\n    }\r\n\r\n    const instance = factory();\r\n\r\n    this.instances.set(type, instance);\r\n\r\n    return instance;\r\n  }\r\n\r\n  /**\r\n   * 检查是否已注册某类型加载器\r\n   */\r\n  has (type: string): boolean {\r\n    return this.loaders.has(type);\r\n  }\r\n\r\n  /**\r\n   * 获取所有已注册的加载器类型\r\n   */\r\n  getRegisteredTypes (): string[] {\r\n    return Array.from(this.loaders.keys());\r\n  }\r\n\r\n  /**\r\n   * 清理所有加载器\r\n   */\r\n  dispose (): void {\r\n    this.instances.forEach(instance => instance.dispose());\r\n    this.instances.clear();\r\n    this.loaders.clear();\r\n  }\r\n}\r\n\r\n/**\r\n * 全局纹理加载器注册表实例\r\n */\r\nexport const textureLoaderRegistry = new TextureLoaderRegistry();\r\n","import type { vec2 } from '@galacean/effects-specification';\nimport type { TextureConfigOptions, TextureCubeSourceURLMap, TextureFactorySource2DFrom, TextureFactorySource2DMipmapsFrom, TextureFactorySourceCubeBinaryMipmapsFrom, TextureFactorySourceCubeFrom, TextureFactorySourceCubeMipmapsFrom, TextureFactorySourceFrom, TextureSourceOptions, TextureSourceCubeData, Texture2DSourceOptionsImageMipmaps } from './types';\nimport { TextureSourceType } from './types';\nimport { glContext } from '../gl';\nimport { isString } from '../utils';\nimport { loadBinary, loadImage, loadVideo } from '../downloader';\nimport type { Texture } from './texture';\nimport { textureLoaderRegistry } from './texture-loader';\n\nexport class TextureFactory {\n  reloadPending: Record<string, boolean>;\n\n  constructor () {\n    this.reloadPending = {};\n  }\n\n  async reload (texture: Texture): Promise<void> {\n    const id = texture.id;\n\n    if (this.reloadPending[id]) {\n      return;\n    }\n    if (texture.sourceFrom) {\n      this.reloadPending[id] = true;\n      const sourceOpts = await this.loadSource(texture.sourceFrom);\n\n      texture.updateSource(sourceOpts);\n      this.reloadPending[id] = false;\n    } else {\n      throw new Error('No source from.');\n    }\n  }\n\n  canOffloadTexture (sourceFrom?: TextureFactorySourceFrom): boolean {\n    if (sourceFrom) {\n      const type = sourceFrom.type;\n\n      if (\n        type === TextureSourceType.compressed ||\n        type === TextureSourceType.image\n      ) {\n        const { target, map } = sourceFrom as TextureFactorySourceCubeFrom;\n        const { url } = sourceFrom as TextureFactorySource2DFrom;\n\n        if (target === glContext.TEXTURE_CUBE_MAP) {\n          return typeof map === 'object' && !!map;\n        }\n\n        return isString(url) && url.length > 0;\n      }\n      if (type === TextureSourceType.mipmaps) {\n        const { bin, mipmaps } = sourceFrom as TextureFactorySourceCubeBinaryMipmapsFrom;\n        const { target, maps } = sourceFrom as TextureFactorySourceCubeMipmapsFrom;\n        const { urls } = sourceFrom as TextureFactorySource2DMipmapsFrom;\n\n        if (bin) {\n          return mipmaps.length > 0;\n        }\n        if (target === glContext.TEXTURE_CUBE_MAP) {\n          return maps.every(map => typeof map === 'object' && map);\n        }\n\n        return urls.every(url => isString(url) && url.length > 0);\n      }\n    }\n\n    return false;\n  }\n\n  async loadSource (sourceFrom: TextureFactorySourceFrom, config?: TextureConfigOptions): Promise<TextureSourceOptions> {\n    const { type, target } = sourceFrom;\n    const { map } = sourceFrom as TextureFactorySourceCubeFrom;\n    const { url } = sourceFrom as TextureFactorySource2DFrom;\n    const { bin, mipmaps } = sourceFrom as TextureFactorySourceCubeBinaryMipmapsFrom;\n    const { urls } = sourceFrom as TextureFactorySource2DMipmapsFrom;\n    const { maps } = sourceFrom as TextureFactorySourceCubeMipmapsFrom;\n\n    // cube without mipmap\n    if (target === glContext.TEXTURE_CUBE_MAP && type !== TextureSourceType.mipmaps) {\n      const cube = await this.loadCubeMap(map);\n\n      return {\n        ...config,\n        cube,\n        target: glContext.TEXTURE_CUBE_MAP,\n        sourceType: TextureSourceType.image,\n        sourceFrom: { type: TextureSourceType.image, map: { ...map }, target: glContext.TEXTURE_CUBE_MAP },\n      };\n    } else if (type === TextureSourceType.image) {\n      // image without mipmap\n      const image = await loadImage(url);\n\n      return {\n        ...config,\n        image,\n        sourceType: TextureSourceType.image,\n        sourceFrom: { type, url, target: glContext.TEXTURE_2D },\n      };\n    } else if (type === TextureSourceType.video) {\n      const video = await loadVideo(url);\n\n      return {\n        ...config,\n        video,\n        sourceType: TextureSourceType.video,\n      };\n    } else if (type === TextureSourceType.compressed) {\n      const buffer = await loadBinary(url);\n\n      const loader = textureLoaderRegistry.getLoader('ktx2');\n\n      if (loader) {\n        try {\n          const textureData = await loader.loadFromBuffer(buffer);\n\n          if (textureData.sourceType === TextureSourceType.compressed) {\n            return {\n              sourceType: textureData.sourceType,\n              type: textureData.type,\n              target: textureData.target,\n              internalFormat: textureData.internalFormat,\n              format: textureData.format,\n              mipmaps: textureData.mipmaps,\n              minFilter: glContext.LINEAR,\n              magFilter: glContext.LINEAR,\n              sourceFrom,\n              ...config,\n            };\n          }\n        } catch (e) {\n          throw new Error(`Failed to parse KTX2 from ${sourceFrom?.url ?? 'buffer'}: ${(e as Error).message || e}`);\n        }\n      } else {\n        throw new Error('KTX2 loader not found. Please register it first.');\n      }\n    } else if (type === TextureSourceType.mipmaps) {\n      if (bin) {\n        const data = await loadBinary(bin);\n        const newTarget = target ?? glContext.TEXTURE_2D;\n        const newMipmaps = newTarget === glContext.TEXTURE_2D ? mipmaps.slice() : mipmaps.map(s => s.slice());\n        let loadedMipmaps;\n\n        if (target === glContext.TEXTURE_CUBE_MAP) {\n          loadedMipmaps = await Promise.all(mipmaps.map(mipmap => this.loadMipmapImages(mipmap, data)));\n        } else {\n          loadedMipmaps = this.loadMipmapImages(mipmaps as unknown as vec2[], data);\n        }\n\n        return {\n          ...config,\n          mipmaps: loadedMipmaps,\n          target: newTarget,\n          sourceType: TextureSourceType.mipmaps,\n          sourceFrom: { bin, mipmaps: newMipmaps, target: newTarget, type: TextureSourceType.mipmaps },\n        } as unknown as Texture2DSourceOptionsImageMipmaps;\n      }\n\n      if (target === glContext.TEXTURE_2D || !target) {\n        const loadedMipmaps = await Promise.all(urls.map(url => loadImage(url)));\n\n        return {\n          ...config,\n          mipmaps: loadedMipmaps,\n          target: glContext.TEXTURE_2D,\n          sourceType: TextureSourceType.mipmaps,\n          sourceFrom: { type, urls: urls.slice(), target: glContext.TEXTURE_2D },\n        };\n      } else if (target === glContext.TEXTURE_CUBE_MAP) {\n        const loadedMipmaps = await Promise.all(maps.map(map => this.loadCubeMap(map)));\n\n        return {\n          ...config,\n          mipmaps: loadedMipmaps,\n          target: glContext.TEXTURE_CUBE_MAP,\n          sourceType: TextureSourceType.mipmaps,\n          sourceFrom: { type, maps: maps.map(map => ({ ...map })), target: glContext.TEXTURE_CUBE_MAP },\n        };\n      }\n    }\n\n    throw new Error(`Invalid resource type: ${type}.`);\n  }\n\n  private async loadMipmapImages (pointers: vec2[], bin: ArrayBuffer) {\n    return Promise.all(pointers.map(pointer => {\n      const blob = new Blob([new Uint8Array(bin, pointer[0], pointer[1])]);\n\n      return loadImage(blob);\n    }));\n  }\n\n  private async loadCubeMap (cubemap: TextureCubeSourceURLMap | string[]): Promise<TextureSourceCubeData> {\n    return Promise.all(cubemap.map(key => loadImage(key))) as Promise<TextureSourceCubeData>;\n  }\n}\n\nlet g: TextureFactory;\n\nexport function getDefaultTextureFactory (): TextureFactory {\n  if (!g) {\n    g = new TextureFactory();\n  }\n\n  return g;\n}\n\nexport function setDefaultTextureFactory (factory: TextureFactory) {\n  g = factory;\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { vec4 } from '@galacean/effects-specification';\nimport type { RendererComponent } from '../components';\nimport type { Engine } from '../engine';\nimport { glContext } from '../gl';\nimport type { Mesh, MeshDestroyOptions, Renderer } from '../render';\nimport type { Framebuffer } from '../render';\nimport type { TextureConfigOptions, TextureLoadAction } from '../texture';\nimport { Texture, TextureSourceType } from '../texture';\nimport type { Disposable, Sortable } from '../utils';\nimport { addByOrder, DestroyOptions, removeItem } from '../utils';\nimport type { Renderbuffer } from './renderbuffer';\n\nexport const RenderPassPriorityPrepare = 0;\nexport const RenderPassPriorityNormal = 1000;\nexport const RenderPassPriorityPostprocess = 3000;\n\n/**\n * RenderPass Attachment 存储类型\n */\nexport enum RenderPassAttachmentStorageType {\n  none = 0,\n  color = 1,\n  //stencil 8 render buffer\n  stencil_8_opaque = 2,\n  //depth 16 render buffer\n  depth_16_opaque = 3,\n  //depth 16 & stencil 8 render buffer\n  depth_stencil_opaque = 4,\n  //depth 16 texture, need gpu.capability.readableDepthStencilTextures\n  depth_16_texture = 5,\n  //depth 24 texture, need gpu.capability.readableDepthStencilTextures\n  depth_24_stencil_8_texture = 6,\n}\n\n/**\n * Attachment 结束后清除行为\n */\nexport enum TextureStoreAction {\n  /**\n   * 不清除 Attachment\n   */\n  store = 0,\n  /**\n   * 清除 Attachment\n   */\n  clear = 2,\n}\n\n/**\n * RenderPass 开始前的清除行为\n */\nexport interface RenderPassClearAction {\n  clearColor?: vec4,\n  colorAction?: TextureLoadAction,\n  clearDepth?: number,\n  depthAction?: TextureLoadAction,\n  clearStencil?: number,\n  stencilAction?: TextureLoadAction,\n}\n\n/**\n * RenderPass 结束后的清除行为\n */\nexport interface RenderPassStoreAction {\n  colorAction?: TextureStoreAction,\n  depthAction?: TextureStoreAction,\n  stencilAction?: TextureStoreAction,\n}\n\nexport interface RenderPassColorAttachmentTextureOptions extends spec.TextureFormatOptions, TextureConfigOptions {\n  size?: [x: number, y: number],\n}\n\n/**\n * RenderPass ColorAttachment 选项\n */\nexport interface RenderPassColorAttachmentOptions {\n  size?: [x: number, y: number],\n  name?: string,\n  /**\n   * ColorAttachment 的纹理参数\n   */\n  texture?: Texture | RenderPassColorAttachmentTextureOptions,\n  /**\n   * ColorAttachment 的 Buffer 参数\n   */\n  buffer?: Renderbuffer,\n  /**\n   * WebGL2 下 Renderbuffer 超采数目。默认是0，即不启用超采。\n   * @default 0\n   */\n  multiSample?: number,\n  /**\n   * 是否持久的对象\n   */\n  persistent?: boolean,\n}\n\nexport class RenderTargetHandle implements Disposable {\n  texture: Texture;\n  readonly textureOptions?: RenderPassColorAttachmentTextureOptions;\n  readonly externalTexture: boolean;\n  protected destroyed = false;\n\n  constructor (engine: Engine, options?: RenderPassColorAttachmentOptions) {\n    if (!options) {\n      return;\n    }\n    const { texture, size } = options;\n\n    if (texture instanceof Texture) {\n      this.texture = texture;\n      this.externalTexture = true;\n    } else if (texture) {\n      const {\n        wrapT, wrapS, minFilter, magFilter, internalFormat,\n        format = glContext.RGBA,\n        type = glContext.UNSIGNED_BYTE,\n      } = texture;\n\n      this.externalTexture = false;\n      this.textureOptions = {\n        size,\n        format,\n        type,\n        internalFormat: internalFormat || format,\n        wrapT,\n        wrapS,\n        minFilter,\n        magFilter,\n        name: options.name,\n      };\n      this.texture = Texture.create(\n        engine,\n        {\n          ...this.textureOptions,\n          sourceType: TextureSourceType.framebuffer,\n          data: { width: size![0], height: size![1] },\n        }\n      );\n    } else {\n      //throw new Error('Color attachment must use texture.');\n    }\n  }\n\n  dispose (): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.texture.dispose();\n    this.destroyed = true;\n  }\n\n  get isDestroyed () {\n    return this.destroyed;\n  }\n\n  get storageType () {\n    return RenderPassAttachmentStorageType.color;\n  }\n\n  get size (): [x: number, y: number] {\n    const tex = this.texture;\n\n    return tex ? [tex.getWidth(), tex.getHeight()] : [0, 0];\n  }\n\n  get width (): number {\n    return this.texture.getWidth() || 0;\n  }\n\n  get height (): number {\n    return this.texture.getHeight() || 0;\n  }\n}\n\nexport interface RenderPassDepthStencilAttachmentOptions {\n  storageType: RenderPassAttachmentStorageType,\n  storage?: Renderbuffer,\n  texture?: Texture,\n}\n\n/**\n * RenderPass Attachment 销毁类型\n */\nexport enum RenderPassDestroyAttachmentType {\n  /**\n   * 强制销毁\n   */\n  force = 0,\n  /**\n   * 保留，不销毁\n   */\n  keep = 1,\n  /**\n   * 如果是外部传入的 Attachment，就不销毁\n   */\n  keepExternal = 2,\n  /**\n   * 强制销毁\n   */\n  destroy = force\n}\n\nexport type RenderPassDestroyOptions = {\n  meshes?: MeshDestroyOptions | DestroyOptions.keep,\n  colorAttachment?: RenderPassDestroyAttachmentType,\n  depthStencilAttachment?: RenderPassDestroyAttachmentType,\n};\n\nlet seed = 1;\n\n/**\n * RenderPass 抽象类\n */\nexport class RenderPass implements Disposable, Sortable {\n  /**\n   * 优先级\n   */\n  priority: number = 0;\n  /**\n   * 名称\n   */\n  name: string = 'RenderPass' + seed++;\n  /**\n   * 包含的 Mesh 列表\n   */\n  readonly meshes: RendererComponent[] = [];\n\n  protected disposed = false;\n  protected framebuffer: Framebuffer | null = null;\n  protected renderer: Renderer;\n\n  constructor (renderer: Renderer) {\n    this.renderer = renderer;\n  }\n\n  get isDisposed (): boolean {\n    return this.disposed;\n  }\n\n  get viewport () {\n    return this.getViewport();\n  }\n\n  addMesh (mesh: RendererComponent): void {\n    addByOrder(this.meshes, mesh);\n  }\n\n  removeMesh (mesh: RendererComponent): void {\n    removeItem(this.meshes, mesh);\n  }\n\n  /**\n   * 配置当前pass的RT，在每帧渲染前调用\n   */\n  configure (renderer: Renderer) {\n    // OVERRIDE\n  }\n\n  /**\n   * 执行当前pass，每帧调用一次\n   */\n  execute (renderer: Renderer) {\n    // OVERRIDE\n  }\n\n  /**\n   * 每帧所有的pass渲染完后调用，用于清空临时的RT资源\n   */\n  onCameraCleanup (renderer: Renderer) {\n    // OVERRIDE\n  }\n\n  /**\n   * 获取当前视口大小，格式：[x偏移，y偏移，宽度，高度]\n   */\n  getViewport (): vec4 {\n    const ret = this.framebuffer?.viewport;\n\n    if (ret) {\n      return ret;\n    }\n    const renderer = this.renderer;\n\n    return renderer ? [0, 0, renderer.getWidth(), renderer.getHeight()] : [0, 0, 0, 0];\n  }\n\n  /**\n   * 销毁 RenderPass\n   * @param options - 有选择销毁内部对象\n   */\n  dispose (options?: RenderPassDestroyOptions) {\n    if (this.disposed) {\n      return;\n    }\n    const destroyMeshOption = options?.meshes || undefined;\n\n    if (destroyMeshOption !== DestroyOptions.keep) {\n      this.meshes.forEach(mesh => {\n        (mesh as Mesh).dispose(destroyMeshOption);\n      });\n    }\n    this.meshes.length = 0;\n\n    this.disposed = true;\n  }\n}\n","import { TextureLoadAction } from '../texture/types';\nimport { FilterMode, RenderTextureFormat } from './framebuffer';\nimport { RenderPass, RenderPassPriorityNormal } from './render-pass';\nimport type { Renderer } from './renderer';\n\nexport class DrawObjectPass extends RenderPass {\n  private useRenderTarget = false;\n\n  constructor (renderer: Renderer) {\n    super(renderer);\n\n    this.priority = RenderPassPriorityNormal;\n    this.name = 'DrawObjectPass';\n  }\n\n  setup (useRenderTarget: boolean) {\n    this.useRenderTarget = useRenderTarget;\n  }\n\n  override configure (renderer: Renderer): void {\n    if (this.useRenderTarget) {\n      this.framebuffer = renderer.getTemporaryRT('DrawObjectPass', renderer.getWidth(), renderer.getHeight(), 16, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n      renderer.setFramebuffer(this.framebuffer);\n    }\n  }\n\n  override execute (renderer: Renderer) {\n    if (this.useRenderTarget) {\n      renderer.clear({\n        colorAction: TextureLoadAction.clear,\n        depthAction: TextureLoadAction.clear,\n        stencilAction: TextureLoadAction.clear,\n      });\n    }\n\n    this.meshes.sort((a, b) => a.priority - b.priority);\n\n    renderer.renderMeshes(this.meshes);\n  }\n\n  override onCameraCleanup (renderer: Renderer): void {\n    if (this.useRenderTarget && this.framebuffer) {\n      renderer.releaseTemporaryRT(this.framebuffer);\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport { EffectsObject } from '../effects-object';\nimport type { Engine } from '../engine';\n\nexport type ShaderMacros = [key: string, value: string | number | boolean][];\n\nexport enum ShaderCompileResultStatus {\n  noShader = 0,\n  success = 1,\n  fail = 2,\n  compiling = 3,\n}\n\nexport interface ShaderCompileResult {\n  status: ShaderCompileResultStatus,\n  cacheId?: string,\n  error?: string | null,\n  shared?: boolean,\n  compileTime?: number,\n}\n\nexport enum GLSLVersion {\n  'GLSL1' = '100',\n  'GLSL3' = '300 es',\n}\n\nexport interface SharedShaderWithSource {\n  /**\n   * fragment shader字符串\n   */\n  fragment: string,\n  /**\n   * vertex shader字符串\n   */\n  vertex: string,\n  /**\n   * shader 字符串的版本，用于添加版本头\n   */\n  glslVersion?: GLSLVersion,\n  /**\n   * shader的name\n   */\n  name?: string,\n  /**\n   * shader的宏定义\n   */\n  macros?: ShaderMacros,\n  /**\n   * 是否共用GLProgram\n   * shared为true时，\n   * 如果提供了cacheId，cacheId相同的shader会共用一个GLProgram\n   * 如果没有提供cacheId，会根据字符串hash计算出cacheId，字符串相同的shader将会使用同一个GLProgram\n   */\n  shared?: boolean,\n  /**\n   * 相同cacheId的shader会使用同一个GLProgram\n   */\n  cacheId?: string,\n}\n\nexport type ShaderWithSource = SharedShaderWithSource;\n\nexport abstract class ShaderVariant extends EffectsObject {\n  shader: Shader;\n  constructor (\n    engine: Engine,\n    public readonly source: ShaderWithSource,\n  ) {\n    super(engine);\n  }\n}\n\n@effectsClass(spec.DataType.Shader)\nexport class Shader extends EffectsObject {\n  shaderData: spec.ShaderData;\n\n  createVariant (macros?: Record<string, number | boolean>) {\n    const shaderMacros: ShaderMacros = [];\n\n    if (macros) {\n      for (const key of Object.keys(macros)) {\n        shaderMacros.push([key, macros[key]]);\n      }\n    }\n    const shaderVariant = this.engine.getShaderLibrary().createShader(this.shaderData, shaderMacros);\n\n    shaderVariant.shader = this;\n\n    return shaderVariant;\n  }\n\n  override fromData (data: spec.ShaderData): void {\n    super.fromData(data);\n    this.shaderData = data;\n  }\n}\n\n// TODO: 临时用，待移除\nexport interface ShaderLibrary {\n  readonly shaderResults: { [cacheId: string]: ShaderCompileResult },\n\n  addShader (shader: ShaderWithSource): void,\n\n  createShader (shaderSource: ShaderWithSource, macros?: ShaderMacros): ShaderVariant,\n\n  /**\n   * @param cacheId\n   */\n  deleteShader (cacheId: string): void,\n\n  /***\n   * 编译现有的所有shader\n   * @param asyncCallback 如果传入，则会启用异步编译，当所有编译完成后被回调\n   */\n  compileAllShaders (asyncCallback?: (results: ShaderCompileResult[]) => void): void,\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { Matrix3, Matrix4, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type { Texture } from '../texture';\nimport type { DestroyOptions } from '../utils';\nimport type { Renderer } from '../render';\n\nexport type UniformSemantic =\n  | 'VIEW'\n  | 'MODEL'\n  | 'MODELVIEW'\n  | 'PROJECTION'\n  | 'VIEWPROJECTION'\n  | 'VIEWINVERSE'\n  | 'EDITOR_TRANSFORM'\n  | 'MODELVIEWPROJECTION'\n  ;\n\nexport interface MaterialBlendingStates {\n  blending?: boolean,\n  blendFunction?: [blendSrc: GLenum, blendDst: GLenum, blendSrcAlpha: GLenum, blendDstAlpha: GLenum],\n  blendEquation?: [blendEquationRGB: GLenum, blendEquationAlpha: GLenum],\n  blendColor?: [r: number, g: number, b: number, a: number],\n}\n\nexport interface MaterialStencilStates {\n  stencilTest?: boolean,\n  stencilMask?: [front: GLenum, back: GLenum],\n  stencilRef?: [front: GLenum, back: GLenum],\n  stencilFunc?: [front: GLenum, back: GLenum],\n  stencilOpFail?: [front: GLenum, back: GLenum],\n  stencilOpZFail?: [front: GLenum, back: GLenum],\n  stencilOZPass?: [front: GLenum, back: GLenum],\n}\n\nexport interface MaterialSideStates {\n  culling?: boolean,\n  cullFace?: GLenum,\n  frontFace?: GLenum,\n}\n\nexport interface MaterialStates extends MaterialBlendingStates, MaterialStencilStates, MaterialSideStates {\n  sampleAlphaToCoverage?: boolean,\n  colorMask?: [r: boolean, g: boolean, b: boolean, a: boolean],\n  depthTest?: boolean,\n  depthMask?: boolean,\n  depthFunc?: number,\n  depthRange?: [zNear: number, zFar: number],\n  polygonOffset?: [factor: number, units: number],\n  polygonOffsetFill?: boolean,\n}\n\nexport interface MaterialDataBlockDestroyOptions {\n  textures?: DestroyOptions,\n}\n\n//使用提前编译的shader进行绘制，传递提前编译的shaderCacheId\n/**\n * @example\n * const mtl0 = new Material({\n *  shader:{\n *   fragment:'...',\n *   vertex:'...',\n *   cacheId:'mtl_01'\n * }});\n *\n * const mtl2 = new Material({\n *   shader:{\n *     cacheId:'mtl_01'\n *   }\n * });\n * mtl2 use the same program with mtl0\n */\nexport type UniformValueDataType = spec.TypedArray | number | number[] | Texture | Texture[] | number[][] | Vector2 | Vector3 | Vector4 | Matrix3 | Matrix4;\nexport type UniformStruct = Record<string, UniformValueDataType>;\n\n// 支持结构体Uniform数据\nexport type UniformValue =\n  | UniformValueDataType\n  | UniformStruct\n  | UniformStruct[];\n\nexport enum ShaderType {\n  vertex = 0,\n  fragment = 1\n}\n\n/**\n *\n */\nexport interface Maskable {\n  drawStencilMask (renderer: Renderer): void,\n}\n\nexport enum MaskMode {\n  /**\n   * 无\n   */\n  NONE = 0,\n  /**\n   * 蒙版\n   */\n  MASK = 1,\n  /**\n   * 被遮挡\n   */\n  OBSCURED = 2,\n  /**\n   * 被反向遮挡\n   */\n  REVERSE_OBSCURED = 3,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { glContext } from '../gl';\nimport { MaskMode } from './types';\nimport type { Material } from './material';\n\nexport function valIfUndefined<T> (val: any, def: T): T {\n  if (val === undefined || val === null) {\n    return def;\n  }\n\n  return val;\n}\n\nexport function getPreMultiAlpha (blending?: spec.BlendingMode): number {\n  switch (blending) {\n    case spec.BlendingMode.ALPHA:\n      return 1;\n    case spec.BlendingMode.ADD:\n      return 1;\n    case spec.BlendingMode.SUBTRACTION:\n      return 1;\n    case spec.BlendingMode.STRONG_LIGHT:\n      return 1;\n    case spec.BlendingMode.WEAK_LIGHT:\n      return 1;\n    case spec.BlendingMode.SUPERPOSITION:\n      return 2;\n    case spec.BlendingMode.BRIGHTNESS:\n      return 3;\n    case spec.BlendingMode.MULTIPLY:\n      return 0;\n    default:\n      // 处理undefined\n      return 1;\n  }\n}\n\nexport function setBlendMode (material: Material, blendMode?: number) {\n  switch (blendMode) {\n    case undefined:\n      material.blendFunction = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.ALPHA:\n      material.blendFunction = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.ADD:\n      material.blendFunction = [glContext.ONE, glContext.ONE, glContext.ONE, glContext.ONE];\n\n      break;\n    case spec.BlendingMode.SUBTRACTION:\n      material.blendFunction = [glContext.ONE, glContext.ONE, glContext.ZERO, glContext.ONE];\n      material.blendEquation = [glContext.FUNC_REVERSE_SUBTRACT, glContext.FUNC_REVERSE_SUBTRACT];\n\n      break;\n    case spec.BlendingMode.SUPERPOSITION:\n      material.blendFunction = [glContext.ONE, glContext.ONE, glContext.ONE, glContext.ONE];\n\n      break;\n    case spec.BlendingMode.MULTIPLY:\n      material.blendFunction = [glContext.DST_COLOR, glContext.ONE_MINUS_SRC_ALPHA, glContext.DST_COLOR, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.BRIGHTNESS:\n      material.blendFunction = [glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA, glContext.ONE, glContext.ONE_MINUS_SRC_ALPHA];\n\n      break;\n    case spec.BlendingMode.STRONG_LIGHT:\n      material.blendFunction = [glContext.DST_COLOR, glContext.DST_ALPHA, glContext.ZERO, glContext.ONE];\n\n      break;\n    case spec.BlendingMode.WEAK_LIGHT:\n      material.blendFunction = [glContext.DST_COLOR, glContext.ZERO, glContext.ZERO, glContext.ONE];\n\n      break;\n    default:\n      console.warn(`BlendMode ${blendMode} not in specification, please set blend params separately.`);\n  }\n}\n\nexport function setSideMode (material: Material, side: spec.SideMode) {\n  if (side === spec.SideMode.DOUBLE) {\n    material.culling = false;\n  } else {\n    material.culling = true;\n    material.frontFace = glContext.CW;\n    material.cullFace = side === spec.SideMode.BACK ? glContext.BACK : glContext.FRONT;\n  }\n}\n\nexport function setMaskMode (material: Material, maskMode: MaskMode) {\n  switch (maskMode) {\n    case undefined:\n      material.stencilTest = false;\n\n      break;\n    case MaskMode.MASK:\n      material.stencilTest = true;\n      material.stencilFunc = [glContext.ALWAYS, glContext.ALWAYS];\n      material.stencilOpZPass = [glContext.REPLACE, glContext.REPLACE];\n\n      break;\n    case MaskMode.OBSCURED:\n      material.stencilTest = true;\n      material.stencilFunc = [glContext.EQUAL, glContext.EQUAL];\n\n      break;\n    case MaskMode.REVERSE_OBSCURED:\n      material.stencilTest = true;\n      material.stencilFunc = [glContext.NOTEQUAL, glContext.NOTEQUAL];\n\n      break;\n    case MaskMode.NONE:\n      material.stencilTest = false;\n\n      break;\n    default:\n      console.warn(`MaskMode ${maskMode} not in specification, please set stencil params seperately.`);\n  }\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { MaterialDataBlockDestroyOptions, UniformValue } from './types';\nimport { Texture } from '../texture';\nimport type { Disposable } from '../utils';\n\nexport interface MaterialDataBlockProps {\n  uniformValues?: Record<string, UniformValue>,\n  name?: string,\n  keepUboData?: boolean,\n}\n\n/**\n * 引擎接入暂时不需要实现\n */\nexport abstract class MaterialDataBlock implements Disposable {\n  readonly name: string;\n  protected destroyed = false;\n\n  protected constructor (props: MaterialDataBlockProps) {\n    const { name = 'defaultDataBlock' } = props;\n\n    this.name = name;\n  }\n\n  setUniformValues (uniformValue: Record<string, UniformValue>): void {\n    Object.keys(uniformValue).forEach(key => {\n      this.setUniformValue(key, uniformValue[key]);\n    });\n  }\n\n  invalidAllFlags () {\n    // OVERRIDE\n  }\n\n  updateUniformSubData (name: string, start: number, count: number) {\n    // OVERRIDE\n  }\n\n  abstract hasUniformValue (name: string): boolean;\n\n  abstract getUniformValue (name: string): UniformValue | undefined;\n\n  abstract getUniformValues (): Record<string, UniformValue>;\n\n  abstract setUniformValue (name: string, value: UniformValue): void;\n\n  abstract removeUniformValue (name: string): void;\n\n  abstract dispose (options?: MaterialDataBlockDestroyOptions): void;\n\n  static create: (props: MaterialDataBlockProps) => MaterialDataBlock;\n}\n\nexport function isUniformStruct (value: UniformValue) {\n  return typeof value === 'object' && value && (value as (number[] | string | Texture[] | number[][] | spec.TypedArray)).length === undefined && value instanceof Texture;\n}\n\nexport function isUniformStructArray (value: UniformValue) {\n  return value && (value as Array<number>).length !== undefined && isUniformStruct((value as Array<number>)[0]);\n}\n","import type { Matrix3, Matrix4, Quaternion, Vector2, Vector3, Vector4, Color } from '@galacean/effects-math/es/core/index';\nimport type { GlobalUniforms, Renderer, Shader, ShaderVariant, ShaderWithSource } from '../render';\nimport type { Texture } from '../texture';\nimport type { DestroyOptions, Disposable } from '../utils';\nimport type { UniformValue } from './types';\nimport type { Engine } from '../engine';\nimport { EffectsObject } from '../effects-object';\n\n/**\n * 材质销毁设置\n */\nexport interface MaterialDestroyOptions {\n  /**\n   * 纹理的销毁设置\n   */\n  textures?: DestroyOptions,\n}\n\n/**\n * 材质渲染类型\n */\nexport enum MaterialRenderType {\n  normal = 0,\n  transformFeedback = 1,\n}\n\nexport type UndefinedAble<U> = U | undefined;\n\n/**\n * 材质属性\n */\nexport interface MaterialProps {\n  /**\n   * shader 文本和属性\n   */\n  shader: ShaderWithSource,\n  /**\n   * 材质的名称，未传入会自动设置为 `Material[seed]`\n   */\n  name?: string,\n  /**\n   * 渲染类型\n   */\n  renderType?: MaterialRenderType,\n  /**\n   * uniform 数据\n   */\n  uniformValues?: Record<string, UniformValue>,\n}\n\n/**\n * 用于设置材质默认名称的自增序号\n * @internal\n */\nlet seed = 1;\n\n/**\n * Material 抽象类\n */\nexport abstract class Material extends EffectsObject implements Disposable {\n  shaderVariant: ShaderVariant;\n\n  // TODO: 待移除\n  shaderSource: ShaderWithSource;\n  stringTags: Record<string, string> = {};\n  readonly enabledMacros: Record<string, number | boolean> = {};\n  readonly renderType: MaterialRenderType;\n  readonly name: string;\n  readonly props: MaterialProps;\n\n  protected destroyed = false;\n  protected initialized = false;\n  protected shaderDirty = true;\n\n  private _shader: Shader;\n\n  /**\n   *\n   * @param props - 材质属性\n   */\n  constructor (\n    engine: Engine,\n    props?: MaterialProps,\n  ) {\n    super(engine);\n\n    if (props) {\n      const {\n        name = 'Material' + seed++,\n        renderType = MaterialRenderType.normal,\n        shader,\n      } = props;\n\n      this.name = name;\n      this.renderType = renderType; // TODO 没有地方用到\n      this.shaderSource = shader;\n      this.props = props;\n    } else {\n      this.name = 'Material' + seed++;\n      this.renderType = MaterialRenderType.normal;\n    }\n  }\n\n  get shader () {\n    return this._shader;\n  }\n\n  set shader (value: Shader) {\n    if (this._shader === value) {\n      return;\n    }\n    this._shader = value;\n    this.shaderDirty = true;\n  }\n\n  /**\n   * 材质的主纹理\n   */\n  get mainTexture () {\n    return this.getTexture('_MainTex') as Texture;\n  }\n\n  set mainTexture (value: Texture) {\n    this.setTexture('_MainTex', value);\n  }\n\n  /**\n   * 材质的主颜色\n   */\n  get color () {\n    return this.getColor('_Color') as Color;\n  }\n\n  set color (value: Color) {\n    this.setColor('_Color', value);\n  }\n\n  /******** effects-core 中会调用 引擎必须实现 ***********************/\n  /**\n   * 设置 Material 的颜色融合开关\n   * @param blending - 是否开启混合效果\n   */\n  set blending (blending: UndefinedAble<boolean>) { }\n\n  /**\n   * 分别指定 Material 的颜色混合函数乘数\n   * @param func - 混合函数参数\n   */\n  set blendFunction (func: UndefinedAble<[blendSrc: number, blendDst: number, blendSrcAlpha: number, blendDstAlpha: number]>) { }\n\n  /**\n   * 分别指定 Material 的颜色混合方式\n   * @param equation - 混合方程参数\n   */\n  set blendEquation (equation: UndefinedAble<[rgb: number, alpha: number]>) { }\n\n  /**\n   * 设置 Material 的深度测试开关\n   * @param value - 是否开启深度测试\n   */\n  set depthTest (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 的写入深度缓冲开关\n   * @param value - 是否开启深度写入\n   */\n  set depthMask (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 的模板测试开关\n   * @param value - 是否开启模板测试\n   */\n  set stencilTest (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 分别指定 Material 的模板测试参考值\n   * @param value  - 模板测试参考值参数\n   */\n  set stencilRef (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 的模板测试函数\n   * @param value - 模板测试函数参数\n   */\n  set stencilFunc (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 的模板测试和深度测试都通过时使用的函数\n   * @param value - 模板测试深度测试通过时的操作参数\n   */\n  set stencilOpZPass (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 设置 Material 的正反面剔除开关\n   * @param value - 是否开启剔除\n   */\n  set culling (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 的正反面计算方向\n   * @param value\n   */\n  set frontFace (value: UndefinedAble<number>) { }\n\n  /**\n   * 设置 Material 要剔除的面\n   * @param value - 剔除面参数\n   */\n  set cullFace (value: UndefinedAble<number>) { }\n  /***************************************************/\n\n  /******** effects-core 中暂无调用 引擎可以先不实现 ***********************/\n  /**\n   * 设置 Material 的源和目标混合因子\n   * @param color\n   */\n  set blendColor (color: UndefinedAble<[r: number, g: number, b: number, a: number]>) { }\n\n  /**\n   * 设置 Material 的深度映射范围\n   * @param value\n   */\n  set depthRange (value: UndefinedAble<[zNear: number, zFar: number]>) { }\n\n  /**\n   * 设置 Material 的深度比较函数\n   * @param value - 深度测试函数参数\n   */\n  set depthFunc (value: UndefinedAble<number>) { }\n\n  /**\n   * 设置 Material 的多边形偏移（实现类似深度偏移的效果）\n   * @param value - 多边形偏移参数\n   */\n  set polygonOffsetFill (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 指定 Material 计算深度值的比例因子 factor 和单位 units\n   * @param value\n   */\n  set polygonOffset (value: UndefinedAble<[factor: number, units: number]>) { }\n\n  /**\n   * 设置 Material 的通过 alpha 值决定临时覆盖值计算的开关\n   * @param value - 是否开启 alpha 抖动\n   */\n  set sampleAlphaToCoverage (value: UndefinedAble<boolean>) { }\n\n  /**\n   * 设置 Material 颜色缓冲区的写入开关\n   * @param value\n   */\n  abstract set colorMask (value: boolean);\n\n  /**\n   * 获取 Material 颜色缓冲区的写入开关\n   * @param value\n   */\n  abstract get colorMask (): boolean;\n\n  /**\n   * 分别指定 Material 的模板测试掩码\n   * @param value - 模板测试写入掩码参数\n   */\n  set stencilMask (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 模板测试失败时要使用的函数\n   * @param value - 模板测试失败时的操作参数\n   */\n  set stencilOpFail (value: UndefinedAble<[front: number, back: number]>) { }\n\n  /**\n   * 分别指定 Material 模板测试通过但深度测试失败时要使用的函数\n   * @param value - 模板测试深度测试失败时的操作参数\n   */\n  set stencilOpZFail (value: UndefinedAble<[front: number, back: number]>) { }\n  /***************************************************/\n\n  /**\n   * 获取 Material 的 float 类型的 uniform 数据\n   * @param name\n   */\n  abstract getFloat (name: string): number | null;\n  /**\n   * 设置 float 类型的 uniform 数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setFloat (name: string, value: number): void;\n\n  /**\n   * 获取 Material 的 float 类型的 uniform 数据\n   * @param name\n   */\n  abstract getInt (name: string): number | null;\n  /**\n   * 设置 int 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setInt (name: string, value: number): void;\n\n  /**\n   * 获取 Material 的 float 数组类型的 uniform 数据\n   * @param name\n   */\n  abstract getFloats (name: string): number[] | null;\n  /**\n   * 设置 float 数组类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setFloats (name: string, value: number[]): void;\n\n  /**\n   * 获取 Material 的 vec2 类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector2 (name: string): Vector2 | null;\n  /**\n   * 设置 vec2 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector2 (name: string, value: Vector2): void;\n\n  /**\n   * 获取 Material 的 vec3 类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector3 (name: string): Vector3 | null;\n  /**\n   * 设置 vec3 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector3 (name: string, value: Vector3): void;\n\n  /**\n   * 获取 Material 的 vec4 类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector4 (name: string): Vector4 | null;\n  /**\n   * 设置 vec4 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector4 (name: string, value: Vector4): void;\n\n  /**\n   * 获取 Material 的 Color 类型的 uniform 数据\n   * @param name\n   */\n  abstract getColor (name: string): Color | null;\n  /**\n   * 设置 Color 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setColor (name: string, value: Color): void;\n\n  /**\n   * 获取 Material 的 Quaternion 类型的 uniform 数据\n   * @param name\n   */\n  abstract getQuaternion (name: string): Quaternion | null;\n  /**\n   * 设置 Quaternion 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setQuaternion (name: string, value: Quaternion): void;\n\n  /**\n   * 获取 Material 的 vec4 数组类型的 uniform 数据\n   * @param name\n   */\n  abstract getVector4Array (name: string): number[];\n  /**\n   * 设置 vec4 数组类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setVector4Array (name: string, value: Vector4[]): void;\n\n  /**\n   * 获取 Material 的 mat4 类型的 uniform 数据\n   * @param name\n   */\n  abstract getMatrix (name: string): Matrix4 | null;\n  /**\n   * 设置 mat4 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setMatrix (name: string, value: Matrix4): void;\n  /**\n   * 设置 mat3 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param value - 要设置的 uniform 数据\n   */\n  abstract setMatrix3 (name: string, value: Matrix3): void;\n\n  /**\n   * 获取 Material 的 mat4 数组类型的 uniform 数据\n   * @param name\n   */\n  abstract getMatrixArray (name: string): number[] | null;\n  /**\n   * 设置 mat 数组类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param array - 要设置的 uniform 数据\n   */\n  abstract setMatrixArray (name: string, array: Matrix4[]): void;\n  /**\n   * 设置 mat 数组类型的 uniform 的数据，传入 number 数组\n   * @param name - uniform 名称\n   * @param array - 要设置的 uniform 数据，number 类型数组\n   */\n  abstract setMatrixNumberArray (name: string, array: number[]): void;\n\n  /**\n   * 获取 Material 的 sampler2D 类型的 uniform 数据\n   * @param name\n   */\n  abstract getTexture (name: string): Texture | null;\n  /**\n   * 设置 sampler2D 类型的 uniform 的数据\n   * @param name - uniform 名称\n   * @param texture - 要设置的 uniform 数据\n   */\n  abstract setTexture (name: string, texture: Texture): void;\n\n  /**\n   * 获取 Material 的 float 类型的 uniform 数据\n   * @param name\n   */\n  abstract hasUniform (name: string): boolean;\n\n  /******** 预留接口，暂时不用实现 ***********************/\n  abstract enableMacro (keyword: string, value?: boolean | number): void;\n  abstract disableMacro (keyword: string): void;\n  abstract isMacroEnabled (keyword: string): boolean;\n  /***************************************************/\n\n  /**\n   * Material 的克隆方法（不接入滤镜，本方法可以不做实现）\n   * @param props 新的材质属性\n   */\n  abstract clone (props?: MaterialProps): Material;\n\n  abstract cloneUniforms (sourceMaterial: Material): void;\n\n  /**\n   * 创建 Material\n   */\n  static create: (engine: Engine, props?: MaterialProps) => Material;\n\n  /**\n   * 初始化 GPU 资源\n   * @override\n   */\n  initialize (): void {\n    // OVERRIDE\n  }\n\n  createShaderVariant () {\n    // OVERRIDE\n  }\n\n  use (render: Renderer, globalUniforms: GlobalUniforms) {\n    // OVERRIDE\n  }\n}\n","import type { Engine } from '../engine';\nimport type * as spec from '@galacean/effects-specification';\nimport type { Maskable } from './types';\nimport { MaskMode } from './types';\nimport type { Renderer } from '../render/renderer';\nimport { TextureLoadAction } from '../texture/types';\nimport type { RenderPassClearAction } from '../render/render-pass';\n\nexport class MaskProcessor {\n  alphaMaskEnabled = false;\n  maskMode: MaskMode = MaskMode.NONE;\n  maskable: Maskable | null = null;\n\n  private stencilClearAction: RenderPassClearAction;\n\n  constructor (public engine: Engine) {\n    this.stencilClearAction = { stencilAction:TextureLoadAction.clear };\n  }\n\n  getRefValue () {\n    return 1;\n  }\n\n  setMaskOptions (data: spec.MaskOptions) {\n    const { isMask = false, inverted = false, reference, alphaMaskEnabled = false } = data;\n\n    this.alphaMaskEnabled = alphaMaskEnabled;\n\n    if (isMask) {\n      this.maskMode = MaskMode.MASK;\n    } else {\n      this.maskMode = inverted ? MaskMode.REVERSE_OBSCURED : MaskMode.OBSCURED;\n      this.maskable = this.engine.findObject<Maskable>(reference);\n    }\n  }\n\n  drawStencilMask (renderer: Renderer) {\n    if (this.maskable) {\n      renderer.clear(this.stencilClearAction);\n      this.maskable.drawStencilMask(renderer);\n    }\n  }\n}\n","import type * as spec from '@galacean/effects-specification';\nimport { glContext } from '../gl';\nimport type { Engine } from '../engine';\nimport { EffectsObject } from '../effects-object';\n\nexport const BYTES_TYPE_MAP: Record<string, number> = {\n  [glContext.FLOAT]: Float32Array.BYTES_PER_ELEMENT,\n  [glContext.INT]: Int32Array.BYTES_PER_ELEMENT,\n  [glContext.SHORT]: Int16Array.BYTES_PER_ELEMENT,\n  [glContext.BYTE]: Int8Array.BYTES_PER_ELEMENT,\n};\n\n/**\n * Geometry 的绘制模式\n */\nexport type GeometryDrawMode =\n  | WebGLRenderingContext['POINTS']\n  | WebGLRenderingContext['TRIANGLES']\n  | WebGLRenderingContext['TRIANGLE_STRIP']\n  | WebGLRenderingContext['TRIANGLE_FAN']\n  | WebGLRenderingContext['LINES']\n  | WebGLRenderingContext['LINE_STRIP']\n  | WebGLRenderingContext['LINE_LOOP']\n  ;\n\nexport type Attribute =\n  | spec.AttributeWithData\n  | spec.AttributeWithDataPointer\n  | spec.AttributeWithType\n  | spec.AttributeWithDataSource\n  ;\n\nexport interface GeometryProps {\n  name?: string,\n  attributes: Record<string, Attribute>,\n  indices?: { data: spec.TypedArray, releasable?: boolean },\n  mode?: GeometryDrawMode,\n  drawCount?: number,\n  drawStart?: number,\n  instanceCount?: number,\n  bufferUsage?: WebGLRenderingContext['STATIC_DRAW'] | WebGLRenderingContext['DYNAMIC_DRAW'],\n  /**\n   * 粒子最大数量，适用于无法更新 GPU 缓存长度的引擎接入\n   */\n  maxVertex?: number,\n}\n\nexport interface SkinProps {\n  boneNames?: string[],\n  rootBoneName?: string,\n  inverseBindMatrices?: number[],\n}\n\n/**\n * Geometry 抽象类\n */\nexport abstract class Geometry extends EffectsObject {\n  /**\n   * Geometry 的名称\n   */\n  name: string = '';\n\n  /**\n   * 子网格数据\n   */\n  subMeshes: spec.SubMesh[] = [];\n  /**\n   * Geometry 创建函数\n   */\n  static create: (engine: Engine, opts?: GeometryProps) => Geometry;\n\n  /**\n   * 获取 Geometry 的 attribute 数据。\n   * @param name - attribute 名称\n   */\n  abstract getAttributeData (name: string): spec.TypedArray | undefined;\n\n  /**\n   * 设置 Geometry 的 attribute 数据。\n   * @param name - attribute 名称\n   * @param data - 要设置的 attribute 数据\n   */\n  abstract setAttributeData (name: string, data: spec.TypedArray): void;\n\n  /**\n   * 设置 attribute 的部分数据，当 attribute 数据只有部分更新时，可调用此函数。\n   * @param name - attribute 名称\n   * @param offset - 更新数据在 attribute 数组的起始位置 index\n   * @param data - 要设置的 attribute 数据\n   */\n  abstract setAttributeSubData (name: string, offset: number, data: spec.TypedArray): void;\n\n  /**\n   * 获取 attribute 的步长\n   * @param name - attribute 名称\n   */\n  abstract getAttributeStride (name: string): number;\n\n  /**\n   * 获取当前 Geometry 所有的 attribute 名称。\n   */\n  abstract getAttributeNames (): string[];\n\n  /**\n   * 获取当前 Geometry 的 indices 数据。\n   */\n  abstract getIndexData (): spec.TypedArray | undefined;\n\n  /**\n   * 设置 Geometry 的 indices 数据。\n   * @param data - 要设置的 indices 数据\n   */\n  abstract setIndexData (data: spec.TypedArray): void;\n\n  /**\n   * 设置 indices 的部分数据，当 indices 数据只有部分更新时，可调用此函数。\n   * @param offset - 更新数据在 indices 数组的起始位置 index\n   * @param data - 要设置的 indices 数据\n   */\n  abstract setIndexSubData (offset: number, data: spec.TypedArray): void;\n\n  /**\n   * 设置 Geometry 绘制的 drawStart\n   * @param value 要设置的 drawStart 值\n   */\n  abstract setDrawStart (count: number): void;\n\n  /**\n   * 获取当前 Geometry 的 drawStart\n   */\n  abstract getDrawStart (): number;\n\n  /**\n   * 设置 Geometry 绘制的 drawCount。\n   * @param count 要设置的 drawCount 值\n   */\n  abstract setDrawCount (count: number): void;\n\n  /**\n   * 获取当前 Geometry 的 drawcount\n   */\n  abstract getDrawCount (): number;\n\n  /**\n   * 获取当前 Geometry 关联的蒙皮数据\n   */\n  abstract getSkinProps (): SkinProps;\n\n  /**\n   * 初始化 GPU 资源\n   * @override\n   */\n  initialize (): void {\n    // OVERRIDE\n  }\n\n  /**\n   * 几何数据刷新\n   */\n  flush (): void {\n    // OVERRIDE\n  }\n}\n\nexport function generateEmptyTypedArray (type: number) {\n  if (type === glContext.INT) {\n    return new Int32Array(0);\n  }\n  if (type === glContext.SHORT) {\n    return new Int16Array(0);\n  }\n\n  return new Float32Array(0);\n}\n","import { Matrix4 } from '@galacean/effects-math/es/core/index';\nimport type { Engine } from '../engine';\nimport type { Material, MaterialDestroyOptions } from '../material';\nimport type { Geometry, Renderer } from '../render';\nimport type { Disposable } from '../utils';\nimport { DestroyOptions } from '../utils';\nimport { RendererComponent } from '../components';\n\nexport interface MeshOptionsBase {\n  material: Material,\n  name?: string,\n  worldMatrix?: Matrix4,\n  priority?: number,\n}\n\nexport interface GeometryMeshProps extends MeshOptionsBase {\n  geometry: Geometry,\n}\n\nexport interface MeshDestroyOptions {\n  geometries?: DestroyOptions,\n  material?: MaterialDestroyOptions | DestroyOptions,\n}\n\nlet seed = 1;\n\n/**\n * Mesh 抽象类\n */\nexport class Mesh extends RendererComponent implements Disposable {\n  /**\n   * Mesh 的全局唯一 id\n   */\n  readonly id: string;\n  /**\n   * Mesh 的世界矩阵\n   */\n  worldMatrix: Matrix4;\n  /**\n   * Mesh 的 Geometry\n   */\n  geometry: Geometry;\n\n  protected destroyed = false;\n  private visible = true;\n\n  /**\n   * 创建一个新的 Mesh 对象。\n   */\n  static create: (engine: Engine, props?: GeometryMeshProps) => Mesh;\n\n  constructor (\n    engine: Engine,\n    props?: GeometryMeshProps,\n  ) {\n    super(engine);\n    if (props) {\n      const {\n        material,\n        geometry,\n        name = '<unnamed>',\n        priority = 0,\n        worldMatrix = Matrix4.fromIdentity(),\n      } = props;\n\n      this.id = 'Mesh' + seed++;\n      this.name = name;\n      this.geometry = geometry;\n      this.material = material;\n      this.priority = priority;\n      this.worldMatrix = worldMatrix;\n    } else {\n      this.id = 'Mesh' + seed++;\n      this.name = '<unnamed>';\n      this.worldMatrix = Matrix4.fromIdentity();\n      this._priority = 0;\n    }\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  /**\n   * 设置当前 Mesh 的可见性。\n   * @param visible - true：可见，false：不可见\n   */\n  setVisible (visible: boolean) {\n    this.visible = visible;\n  }\n  /**\n   * 获取当前 Mesh 的可见性。\n   */\n  getVisible (): boolean {\n    return this.visible;\n  }\n\n  override render (renderer: Renderer) {\n    if (this.isDestroyed) {\n      // console.error(`mesh ${mesh.name} destroyed`, mesh);\n      return;\n    }\n    if (!this.getVisible()) {\n      return;\n    }\n    renderer.drawGeometry(this.geometry, this.worldMatrix, this.material);\n  }\n\n  /**\n   * 获取当前 Mesh 的第一个 geometry。\n   */\n  firstGeometry (): Geometry {\n    return this.geometry;\n  }\n\n  /**\n   * 设置当前 Mesh 的材质\n   * @param material - 要设置的材质\n   * @param destroy - 可选的材质销毁选项\n   */\n  setMaterial (material: Material, destroy?: MaterialDestroyOptions | DestroyOptions.keep) {\n    if (destroy !== DestroyOptions.keep) {\n      this.material.dispose();\n    }\n    this.material = material;\n  }\n\n  restore (): void {\n  }\n\n  /**\n   * 销毁当前资源\n   * @param options - 可选的销毁选项\n   */\n  override dispose (options?: MeshDestroyOptions) {\n    if (this.destroyed) {\n      //console.error('call mesh.destroy multiple times', this);\n      return;\n    }\n\n    if (options?.geometries !== DestroyOptions.keep) {\n      this.geometry.dispose();\n    }\n    const materialDestroyOption = options?.material;\n\n    if (materialDestroyOption !== DestroyOptions.keep) {\n      this.material.dispose();\n    }\n    this.destroyed = true;\n\n    if (this.engine !== undefined) {\n      this.engine.removeMesh(this);\n    }\n\n    super.dispose();\n  }\n}\n","import { logger } from '../utils';\nimport type { ShaderMacros } from '../render';\nimport { ShaderType } from '../material';\n\nexport interface ShaderCodeOptions {\n  level: number,\n  shaderType: ShaderType,\n  shader: string,\n  macros?: ShaderMacros,\n  removeVersion?: boolean,\n}\n\nconst shaderLib: Record<string, string> = {};\n\nexport class ShaderFactory {\n  static registerInclude (includeName: string, includeSource: string) {\n    if (shaderLib[includeName]) {\n      logger.warn(`The \"${includeName}\" shader include already exist.`);\n    }\n    shaderLib[includeName] = includeSource;\n  }\n\n  static unRegisterInclude (includeName: string) {\n    delete shaderLib[includeName];\n  }\n\n  static unRegisterAllIncludes () {\n    Object.keys(shaderLib).forEach(key => {\n      ShaderFactory.unRegisterInclude(key);\n    });\n  }\n\n  /**\n   * 生成 shader，检测到 WebGL1 上下文会降级\n   * @param macros - 宏定义数组\n   * @param shader - 原始 shader 文本\n   * @param shaderType - shader 类型\n   * @return 去除版本号的 shader 文本\n   */\n  static genFinalShaderCode (options: ShaderCodeOptions): string {\n    const { level, shaderType, shader, macros, removeVersion } = options;\n    const macroString = ShaderFactory.genMacroString(level, macros);\n    const versionString = ShaderFactory.genShaderVersion(level);\n    let source = ShaderFactory.parseIncludes(shader);\n    const isVersion300 = ShaderFactory.isVersion300(source);\n\n    source = ShaderFactory.removeWebGLVersion(source);\n\n    if (level === 2 && !isVersion300) {\n      source = ShaderFactory.convertTo300(source, shaderType === ShaderType.fragment);\n    }\n\n    if (removeVersion) {\n      return macroString + source;\n    }\n\n    return versionString + macroString + source;\n  }\n\n  /**\n   * Convert lower GLSL version to GLSL 300 es.\n   * @param source - code\n   * @param isFragment - Whether it is a fragment shader.\n   * */\n  private static convertTo300 (source: string, isFragment?: boolean) {\n    source = source.replace(/\\bvarying\\b/g, isFragment ? 'in' : 'out');\n    source = source.replace(/\\btexture(2D|Cube)\\b/g, 'texture');\n    // Remove extensions\n    const regex = /#extension.+(GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;\n\n    source = source.replace(regex, '');\n\n    if (isFragment) {\n      source = source.replace(/\\btexture(2D|Cube)LodEXT\\b/g, 'textureLod');\n      source = source.replace(/\\btexture(2D|Cube)GradEXT\\b/g, 'textureGrad');\n      source = source.replace(/\\bgl_FragDepthEXT\\b/g, 'gl_FragDepth');\n\n      if (!ShaderFactory.has300Output(source)) {\n        const isMRT = /\\bgl_FragData\\[.+?\\]/g.test(source);\n\n        if (isMRT) {\n          source = source.replace(/\\bgl_FragColor\\b/g, 'gl_FragData[0]');\n          const result = source.match(/\\bgl_FragData\\[.+?\\]/g);\n\n          if (result) {\n            source = ShaderFactory.replaceMRTShader(source, result);\n          }\n        } else {\n          source = source.replace(/void\\s+?main\\s*\\(/g, 'out vec4 glFragColor;\\nvoid main(');\n          source = source.replace(/\\bgl_FragColor\\b/g, 'glFragColor');\n        }\n      }\n    } else {\n      source = source.replace(/\\battribute\\b/g, 'in');\n    }\n\n    return source;\n  }\n\n  private static parseIncludes (source: string, regex = /#include <(.+)>/gm) {\n    let match: RegExpExecArray | null;\n\n    while ((match = regex.exec(source)) !== null) {\n      const shaderName = match[1];\n      const replace = shaderLib[shaderName];\n\n      if (replace === undefined) {\n        throw new Error(`Can't find include shader name ${shaderName}`);\n      }\n\n      source = source.replace(match[0], replace);\n    }\n\n    return source;\n  }\n\n  private static genMacroString (\n    level: number,\n    macros?: ShaderMacros,\n    addRuntimeMacro = true,\n  ) {\n    const macroList: string[] = [];\n    const webGLVersion = `WEBGL${level}`;\n\n    macroList.push(`#ifndef ${webGLVersion}`);\n    macroList.push(`#define ${webGLVersion}`);\n    macroList.push('#endif');\n\n    if (addRuntimeMacro) {\n      macroList.push('#define GE_RUNTIME');\n    }\n\n    if (macros && macros.length) {\n      macros.forEach(([key, value]) => {\n        if (value === true) {\n          macroList.push(`#define ${key}`);\n        } else if (Number.isFinite(value)) {\n          macroList.push(`#define ${key} ${value}`);\n        }\n      });\n    }\n\n    if (macroList.length) {\n      return macroList.join('\\n') + '\\n';\n    }\n\n    return '';\n  }\n\n  private static genShaderVersion (level: number) {\n    if (level === 1) {\n      return '#version 100\\n';\n    }\n\n    return '#version 300 es\\n';\n  }\n\n  private static isVersion300 (source: string) {\n    const versionTag = /#version\\s+\\b\\d{3}\\b\\s*(es)?/;\n    const match = source.match(versionTag);\n    const version = match ? match[0] : '';\n\n    return version.includes('300');\n  }\n\n  private static removeWebGLVersion (source: string) {\n    const versionTag = /#version\\s+\\b\\d{3}\\b\\s*(es)?/;\n    const match = source.match(versionTag);\n\n    if (match) {\n      return source.replace(match[0], '');\n    }\n\n    return source;\n  }\n\n  private static has300Output (fragmentShader: string): boolean {\n    // [layout(location = 0)] out [highp] vec4 [color];\n    const fragReg = /\\bout\\s+(?:\\w+\\s+)?(?:vec4)\\s+(?:\\w+)\\s*;/;\n\n    return fragReg.test(fragmentShader);\n  }\n\n  private static replaceMRTShader (source: string, result: string[]): string {\n    const mrtIndexSet = new Set<string>();\n    let declaration = '';\n\n    for (let i = 0; i < result.length; i++) {\n      const res = result[i].match(/\\bgl_FragData\\[(.+?)\\]/);\n\n      if (res) {\n        mrtIndexSet.add(res[1]);\n      }\n    }\n\n    mrtIndexSet.forEach(index => {\n      declaration += `layout(location=${index}) out vec4 fragOutColor${index};\\n`;\n    });\n    declaration += 'void main(';\n\n    source = source.replace(/\\bgl_FragData\\[(.+?)\\]/g, 'fragOutColor$1');\n    source = source.replace(/void\\s+?main\\s*\\(/g, declaration);\n\n    return source;\n  }\n}\n\n","import type * as spec from '@galacean/effects-specification';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { GLSLVersion } from './shader';\nimport { glContext } from '../gl';\nimport { Material } from '../material';\nimport { TextureLoadAction, type Texture } from '../texture';\nimport { Geometry } from './geometry';\nimport { Mesh } from './mesh';\nimport { getTextureSize } from './render-frame';\nimport type { RenderPassDestroyOptions } from './render-pass';\nimport { RenderTargetHandle, RenderPass } from './render-pass';\nimport type { Renderer } from './renderer';\nimport { colorGradingFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, screenMeshVert, thresholdFrag } from '../shader';\nimport { FilterMode, type Framebuffer, RenderTextureFormat } from './framebuffer';\n\n// Bloom Pass - 包含阈值提取、高斯模糊（Down Sample 和 Up Sample）\nexport class BloomPass extends RenderPass {\n  sceneTextureHandle: RenderTargetHandle;\n\n  private readonly iterationCount: number;\n  private thresholdMaterial: Material;\n  private downSampleHMaterial: Material;\n  private downSampleVMaterial: Material;\n  private upSampleMaterial: Material;\n  private tempRTs: Framebuffer[] = [];\n  private thresholdRT: Framebuffer;\n  private mainTexture: Texture;\n\n  constructor (renderer: Renderer, iterationCount = 4) {\n    super(renderer);\n    this.iterationCount = iterationCount;\n\n    const engine = this.renderer.engine;\n\n    // Threshold material\n    this.thresholdMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: thresholdFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.thresholdMaterial.blending = false;\n    this.thresholdMaterial.depthTest = false;\n    this.thresholdMaterial.culling = false;\n\n    // Down sample H material\n    this.downSampleHMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: gaussianDownHFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.downSampleHMaterial.blending = false;\n    this.downSampleHMaterial.depthTest = false;\n    this.downSampleHMaterial.culling = false;\n\n    // Down sample V material\n    this.downSampleVMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: gaussianDownVFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.downSampleVMaterial.blending = false;\n    this.downSampleVMaterial.depthTest = false;\n    this.downSampleVMaterial.culling = false;\n\n    // Up sample material\n    this.upSampleMaterial = Material.create(engine, {\n      shader: {\n        vertex: screenMeshVert,\n        fragment: gaussianUpFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n    this.upSampleMaterial.blending = false;\n    this.upSampleMaterial.depthTest = false;\n    this.upSampleMaterial.culling = false;\n\n    this.priority = 5000;\n    this.name = 'BloomPass';\n  }\n\n  override configure (renderer: Renderer): void {\n    // 获取场景纹理用于 ToneMappingPass\n    this.mainTexture = renderer.getFramebuffer().getColorTextures()[0];\n    this.sceneTextureHandle.texture = this.mainTexture;\n  }\n\n  override execute (renderer: Renderer): void {\n    const baseWidth = renderer.getWidth();\n    const baseHeight = renderer.getHeight();\n\n    // 1. Threshold pass - 提取高亮区域\n    const threshold = renderer.renderingData.currentFrame.globalVolume?.bloom?.threshold ?? 1.0;\n\n    this.thresholdRT = renderer.getTemporaryRT('_BloomThreshold', baseWidth, baseHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n    this.thresholdMaterial.setFloat('_Threshold', threshold);\n    renderer.blit(this.mainTexture, this.thresholdRT, this.thresholdMaterial);\n\n    let currentTexture = this.thresholdRT.getColorTextures()[0];\n\n    // 2. Down sample passes\n    for (let i = 0; i < this.iterationCount; i++) {\n      const downWidth = Math.floor(baseWidth / Math.pow(2, i + 1));\n      const downHeight = Math.floor(baseHeight / Math.pow(2, i + 1));\n\n      // Horizontal pass\n      const tempH = renderer.getTemporaryRT(`_BloomDownH${i}`, downWidth, downHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n\n      this.downSampleHMaterial.setVector2('_TextureSize', getTextureSize(currentTexture));\n      renderer.blit(currentTexture, tempH, this.downSampleHMaterial);\n\n      // Vertical pass\n      const tempV = renderer.getTemporaryRT(`_BloomDownV${i}`, downWidth, downHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n\n      this.downSampleVMaterial.setVector2('_TextureSize', getTextureSize(tempH.getColorTextures()[0]));\n      renderer.blit(tempH.getColorTextures()[0], tempV, this.downSampleVMaterial);\n\n      // 释放 H pass RT，保留 V pass RT 用于 up sample\n      renderer.releaseTemporaryRT(tempH);\n      this.tempRTs.push(tempV);\n      currentTexture = tempV.getColorTextures()[0];\n    }\n\n    // 释放 threshold RT\n    renderer.releaseTemporaryRT(this.thresholdRT);\n\n    // 3. Up sample passes\n    for (let i = this.iterationCount - 1; i > 0; i--) {\n      const upWidth = Math.floor(baseWidth / Math.pow(2, i - 1));\n      const upHeight = Math.floor(baseHeight / Math.pow(2, i - 1));\n\n      const tempUp = renderer.getTemporaryRT(`_BloomUp${i}`, upWidth, upHeight, 0, FilterMode.Linear, RenderTextureFormat.RGBAHalf);\n\n      // 获取下一层的 down sample 结果\n      const downSampleTexture = this.tempRTs[i - 1].getColorTextures()[0];\n\n      this.upSampleMaterial.setTexture('_GaussianDownTex', downSampleTexture);\n      this.upSampleMaterial.setVector2('_GaussianDownTextureSize', getTextureSize(downSampleTexture));\n      renderer.blit(currentTexture, tempUp, this.upSampleMaterial);\n\n      currentTexture = tempUp.getColorTextures()[0];\n      this.tempRTs.push(tempUp);\n    }\n\n    // 设置最终输出到当前 framebuffer\n    renderer.setFramebuffer(this.tempRTs[this.tempRTs.length - 1]);\n  }\n\n  override onCameraCleanup (renderer: Renderer): void {\n    // 释放所有临时 RT\n    for (let i = 0; i < this.tempRTs.length; i++) {\n      renderer.releaseTemporaryRT(this.tempRTs[i]);\n    }\n\n    this.tempRTs = [];\n  }\n\n  override dispose (options?: RenderPassDestroyOptions): void {\n    this.thresholdMaterial.dispose();\n    this.downSampleHMaterial.dispose();\n    this.downSampleVMaterial.dispose();\n    this.upSampleMaterial.dispose();\n    super.dispose(options);\n  }\n}\n\n// 合并Bloom的高斯模糊结果，并应用ACES Tonemapping\nexport class ToneMappingPass extends RenderPass {\n  private screenMesh: Mesh;\n  private sceneTextureHandle: RenderTargetHandle;\n  private mainTexture: Texture;\n\n  constructor (renderer: Renderer, sceneTextureHandle?: RenderTargetHandle) {\n    super(renderer);\n    const name = 'PostProcess';\n    const engine = this.renderer.engine;\n\n    this.sceneTextureHandle = sceneTextureHandle ? sceneTextureHandle : new RenderTargetHandle(engine);\n    const geometry = Geometry.create(engine, {\n      name,\n      mode: glContext.TRIANGLE_STRIP,\n      attributes: {\n        aPos: {\n          type: glContext.FLOAT,\n          size: 2,\n          data: new Float32Array([-1, 1, -1, -1, 1, 1, 1, -1]),\n        },\n      },\n      drawCount: 4,\n    });\n\n    const material = Material.create(engine, {\n      name,\n      shader: {\n        vertex: screenMeshVert,\n        fragment: colorGradingFrag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    });\n\n    material.blending = false;\n    material.depthTest = false;\n    material.culling = false;\n\n    this.screenMesh = Mesh.create(engine, {\n      name, geometry, material,\n      priority: 0,\n    });\n    this.priority = 5000;\n    this.name = 'ToneMappingPass';\n  }\n\n  override configure (renderer: Renderer): void {\n    this.mainTexture = renderer.getFramebuffer().getColorTextures()[0];\n    if (!this.sceneTextureHandle.texture) {\n      this.sceneTextureHandle.texture = this.mainTexture;\n    }\n    renderer.setFramebuffer(null);\n  }\n\n  override execute (renderer: Renderer): void {\n    renderer.clear({\n      colorAction: TextureLoadAction.clear,\n      depthAction: TextureLoadAction.clear,\n      stencilAction: TextureLoadAction.clear,\n    });\n    const globalVolume = renderer.renderingData.currentFrame.globalVolume;\n\n    const bloom: spec.Bloom = {\n      threshold: 0,\n      intensity: 0,\n      active: false,\n      ...globalVolume?.bloom,\n    };\n\n    const vignette: spec.Vignette = {\n      intensity: 0,\n      smoothness: 0,\n      roundness: 0,\n      active: false,\n      ...globalVolume?.vignette,\n    };\n\n    const colorAdjustments: spec.ColorAdjustments = {\n      brightness: 0,\n      saturation: 0,\n      contrast: 0,\n      active: false,\n      ...globalVolume?.colorAdjustments,\n    };\n\n    const tonemapping: spec.Tonemapping = {\n      active: false,\n      ...globalVolume?.tonemapping,\n    };\n\n    this.screenMesh.material.setTexture('_SceneTex', this.sceneTextureHandle.texture);\n\n    this.screenMesh.material.setFloat('_Brightness', Math.pow(2, colorAdjustments.brightness));\n    this.screenMesh.material.setFloat('_Saturation', (colorAdjustments.saturation * 0.01) + 1);\n    this.screenMesh.material.setFloat('_Contrast', (colorAdjustments.contrast * 0.01) + 1);\n\n    this.screenMesh.material.setInt('_UseBloom', Number(bloom.active));\n    if (bloom.active) {\n      this.screenMesh.material.setTexture('_GaussianTex', this.mainTexture);\n      this.screenMesh.material.setFloat('_BloomIntensity', bloom.intensity);\n    }\n    if (vignette.intensity > 0) {\n      this.screenMesh.material.setFloat('_VignetteIntensity', vignette.intensity);\n      this.screenMesh.material.setFloat('_VignetteSmoothness', vignette.smoothness);\n      this.screenMesh.material.setFloat('_VignetteRoundness', vignette.roundness);\n      this.screenMesh.material.setVector2('_VignetteCenter', new Vector2(0.5, 0.5));\n      this.screenMesh.material.setVector3('_VignetteColor', new Vector3(0.0, 0.0, 0.0));\n    }\n    this.screenMesh.material.setInt('_UseToneMapping', Number(tonemapping.active));\n    renderer.renderMeshes([this.screenMesh]);\n  }\n}\n","import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport type { vec4 } from '@galacean/effects-specification';\nimport type { Camera } from '../camera';\nimport type { PostProcessVolume, RendererComponent } from '../components';\nimport type { Texture } from '../texture';\nimport type { Disposable } from '../utils';\nimport { DestroyOptions, removeItem } from '../utils';\nimport { DrawObjectPass } from './draw-object-pass';\nimport { BloomPass, ToneMappingPass } from './post-process-pass';\nimport type { RenderPass, RenderPassDestroyOptions } from './render-pass';\nimport { RenderTargetHandle } from './render-pass';\nimport type { Renderer } from './renderer';\n\n/**\n * 渲染数据，保存了当前渲染使用到的数据。\n */\nexport interface RenderingData {\n  /**\n   * 当前渲染使用的 Camera\n   */\n  currentCamera: Camera,\n  /**\n   * 当前渲染的 RenderFrame\n   */\n  currentFrame: RenderFrame,\n  /**\n   * 当前渲染的 RenderPass\n   */\n  currentPass: RenderPass,\n}\n\n/**\n * 抽象 RenderFrame 选项\n */\nexport interface RenderFrameOptions {\n  camera: Camera,\n  /**\n   * 编辑器整体变换，Player 开发不需要关注\n   */\n  editorTransform?: vec4,\n  /**\n   * 后处理渲染配置\n   */\n  globalVolume?: PostProcessVolume,\n  /**\n   * 后处理是否开启\n   */\n  postProcessingEnabled?: boolean,\n  /**\n   * 名称\n   */\n  name?: string,\n  renderer: Renderer,\n}\n\nexport type RenderFrameDestroyOptions = {\n  passes?: RenderPassDestroyOptions | DestroyOptions.keep,\n  semantics?: DestroyOptions,\n};\n\nlet seed = 1;\n\n/**\n * RenderFrame 抽象类\n */\nexport class RenderFrame implements Disposable {\n  /**\n   * 当前使用的全部 RenderPass\n   */\n  _renderPasses: RenderPass[];\n  /**\n   * 渲染时的相机\n   */\n  camera: Camera;\n  /**\n   * 存放后处理的属性设置\n   */\n  globalVolume?: PostProcessVolume;\n  renderer: Renderer;\n  editorTransform: Vector4;\n  /**\n   * 名称\n   */\n  readonly name: string;\n  readonly globalUniforms: GlobalUniforms;\n\n  private disposed = false;\n  private drawObjectPass: DrawObjectPass;\n  private postProcessingEnabled: boolean = false;\n  private enableHDR: boolean = true;\n\n  constructor (options: RenderFrameOptions) {\n    const {\n      camera, renderer,\n      editorTransform = [1, 1, 0, 0],\n      globalVolume,\n      postProcessingEnabled = false,\n    } = options;\n    const engine = renderer.engine;\n\n    if (globalVolume) {\n      this.globalVolume = globalVolume;\n    }\n\n    this.postProcessingEnabled = postProcessingEnabled;\n    this.globalUniforms = new GlobalUniforms();\n    this.renderer = renderer;\n\n    if (postProcessingEnabled && this.enableHDR && !this.renderer.engine.gpuCapability.detail.halfFloatTexture) {\n      throw new Error('Half float texture is not supported.');\n    }\n\n    this.drawObjectPass = new DrawObjectPass(renderer);\n    const renderPasses = [this.drawObjectPass];\n\n    this.setRenderPasses(renderPasses);\n\n    if (postProcessingEnabled) {\n      const sceneTextureHandle = new RenderTargetHandle(engine);  //保存后处理前的屏幕图像\n\n      const gaussianStep = 7; // 高斯模糊的迭代次数，次数越高模糊范围越大\n\n      // Bloom Pass（包含阈值提取、高斯模糊）\n      const bloomPass = new BloomPass(renderer, gaussianStep);\n\n      bloomPass.sceneTextureHandle = sceneTextureHandle;\n      this.addRenderPass(bloomPass);\n\n      // Tone Mapping Pass\n      const postProcessPass = new ToneMappingPass(renderer, sceneTextureHandle);\n\n      this.addRenderPass(postProcessPass);\n    }\n\n    this.name = `RenderFrame${seed++}`;\n\n    this.camera = camera;\n    this.editorTransform = Vector4.fromArray(editorTransform);\n  }\n\n  get renderPasses () {\n    return this._renderPasses.slice();\n  }\n\n  get isDisposed () {\n    return this.disposed;\n  }\n\n  /**\n   * 设置 RenderPasses 参数，此函数每帧调用一次\n   */\n  setup () {\n    this.drawObjectPass.setup(this.postProcessingEnabled);\n  }\n\n  /**\n   * 根据 Mesh 优先级添加到 RenderPass\n   * @param mesh - 要添加的 Mesh 对象\n   */\n  addMeshToDefaultRenderPass (mesh: RendererComponent) {\n    this.drawObjectPass.addMesh(mesh);\n  }\n\n  /**\n   * 把 Mesh 从 RenderPass 中移除，\n   * 如果 renderPass 中没有 mesh，此 renderPass 会被删除\n   * @param mesh - 要删除的 Mesh 对象\n   */\n  removeMeshFromDefaultRenderPass (mesh: RendererComponent) {\n    this.drawObjectPass.removeMesh(mesh);\n  }\n\n  /**\n   * 销毁 RenderFrame\n   * @param options - 可以有选择销毁一些对象\n   */\n  dispose (options?: RenderFrameDestroyOptions) {\n    const pass = options?.passes ? options.passes : undefined;\n\n    if (pass !== DestroyOptions.keep) {\n      this._renderPasses.forEach(renderPass => {\n        renderPass.dispose(pass);\n      });\n    }\n    this._renderPasses.length = 0;\n    this.disposed = true;\n  }\n\n  /**\n   * 设置 RenderPass 数组，直接修改内部的 RenderPass 数组\n   * @param passes - RenderPass 数组\n   */\n  setRenderPasses (passes: RenderPass[]) {\n    this._renderPasses = passes.slice();\n  }\n\n  /**\n   * 添加 RenderPass\n   * @param pass - 需要添加的 RenderPass\n   */\n  addRenderPass (pass: RenderPass): void {\n    this._renderPasses.push(pass);\n  }\n\n  /**\n   * 移除 RenderPass\n   * @param pass - 需要移除的 RenderPass\n   */\n  removeRenderPass (pass: RenderPass): void {\n    removeItem(this._renderPasses, pass);\n  }\n}\n\nexport function getTextureSize (tex?: Texture): Vector2 {\n  return tex ? new Vector2(tex.getWidth(), tex.getHeight()) : new Vector2();\n}\n\nexport class GlobalUniforms {\n  floats: Record<string, number> = {};\n  ints: Record<string, number> = {};\n  vector3s: Record<string, Vector3> = {};\n  vector4s: Record<string, Vector4> = {};\n  matrices: Record<string, Matrix4> = {};\n  //...\n\n  samplers: string[] = [];  // 存放的sampler名称。\n  uniforms: string[] = [];  // 存放的uniform名称（不包括sampler）。\n}\n","import type { Disposable } from '../utils';\nimport type { RenderPassAttachmentStorageType } from './render-pass';\n\nexport interface RenderbufferProps {\n  storageType: RenderPassAttachmentStorageType,\n  format: GLenum,\n  attachment: GLenum,\n}\n\nexport abstract class Renderbuffer implements Disposable {\n  readonly size: [x: number, y: number] = [0, 0];\n  readonly multiSample = 1;\n  readonly storageType: RenderPassAttachmentStorageType;\n  readonly format: GLenum;\n  readonly attachment: GLenum;\n\n  protected destroyed = false;\n\n  static create: (props: RenderbufferProps) => Renderbuffer;\n\n  constructor (props: RenderbufferProps) {\n    const { storageType, format, attachment } = props;\n\n    this.storageType = storageType;\n    this.format = format;\n    this.attachment = attachment;\n  }\n\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  abstract setSize (width: number, height: number): void;\n\n  abstract dispose (): void;\n}\n\n","import type { Engine } from '../engine';\nimport { glContext } from '../gl';\nimport { Texture, TextureSourceType } from '../texture';\nimport { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';\nimport { RenderPassAttachmentStorageType } from './render-pass';\n\ninterface Entry {\n  RT: Framebuffer,\n  lastFrameReleased: number,\n  descriptionHash: string,\n  isOccupied: boolean,\n}\n\nexport class RenderTargetPool {\n  private temporaryRTs: Entry[] = [];\n  private currentFrame = 0;\n  private readonly maxUnusedFrames = 4;\n\n  constructor (\n    public engine: Engine,\n  ) { }\n\n  /**\n   * 清理 RenderTarget 池\n   * @param force - 是否强制清理所有未占用的 RT\n   * @param framesOffset - 自定义未使用帧数阈值，-1 表示使用默认值\n   */\n  flush (force = false, framesOffset = -1): void {\n    this.currentFrame++;\n\n    const threshold = framesOffset >= 0 ? framesOffset : this.maxUnusedFrames;\n\n    for (let i = 0; i < this.temporaryRTs.length; i++) {\n      const entry = this.temporaryRTs[i];\n\n      // 强制清理所有未占用的 RT，或清理超过阈值帧数未使用的 RT\n      if (!entry.isOccupied && (force || (this.currentFrame - entry.lastFrameReleased) > threshold)) {\n        entry.RT.dispose();\n        this.temporaryRTs.splice(i--, 1);\n      }\n    }\n  }\n\n  get (\n    name: string,\n    width: number,\n    height: number,\n    depthBuffer = 0,\n    filter = FilterMode.Linear,\n    format = RenderTextureFormat.RGBA32,\n  ): Framebuffer {\n    // 使用参数计算 hash 值作为缓存 key\n    const hash = `${width}_${height}_${depthBuffer}_${filter}_${format}`;\n\n    for (const entry of this.temporaryRTs) {\n      if (!entry.isOccupied && entry.descriptionHash === hash) {\n        entry.isOccupied = true;\n        entry.RT.name = name;\n\n        return entry.RT;\n      }\n    }\n\n    let textureFilter;\n    let textureType;\n    let depthType = RenderPassAttachmentStorageType.none;\n\n    // TODO 建立Map映射\n    if (filter === FilterMode.Linear) {\n      textureFilter = glContext.LINEAR;\n    } else if (filter === FilterMode.Nearest) {\n      textureFilter = glContext.NEAREST;\n    }\n    if (format === RenderTextureFormat.RGBA32) {\n      textureType = glContext.UNSIGNED_BYTE;\n    } else if (format === RenderTextureFormat.RGBAHalf) {\n      textureType = glContext.HALF_FLOAT;\n    }\n    if (depthBuffer === 0) {\n      depthType = RenderPassAttachmentStorageType.none;\n    } else if (depthBuffer === 16) {\n      depthType = RenderPassAttachmentStorageType.depth_stencil_opaque;\n    } else if (depthBuffer === 24) {\n      depthType = RenderPassAttachmentStorageType.depth_24_stencil_8_texture;\n    }\n\n    const colorAttachment = Texture.create(this.engine, {\n      sourceType: TextureSourceType.framebuffer,\n      minFilter: textureFilter,\n      magFilter: textureFilter,\n      internalFormat: glContext.RGBA,\n      format: glContext.RGBA,\n      type: textureType,\n    });\n\n    const newFramebuffer = Framebuffer.create({\n      name,\n      storeAction: {},\n      viewport: [0, 0, width, height],\n      attachments: [colorAttachment],\n      depthStencilAttachment: { storageType: depthType },\n    }, this.engine.renderer);\n\n    const entry: Entry = {\n      RT: newFramebuffer,\n      lastFrameReleased: 0,\n      descriptionHash: hash,\n      isOccupied: true,\n    };\n\n    this.temporaryRTs.push(entry);\n\n    return entry.RT;\n  }\n\n  /**\n   * 释放 RenderTarget，使其可以被复用\n   * @param rt - 要释放的 Framebuffer\n   */\n  release (rt: Framebuffer): void {\n    for (const entry of this.temporaryRTs) {\n      if (entry.RT === rt) {\n        entry.isOccupied = false;\n        entry.lastFrameReleased = this.currentFrame;\n\n        break;\n      }\n    }\n  }\n\n  dispose (): void {\n    for (const entry of this.temporaryRTs) {\n      entry.RT.dispose();\n    }\n  }\n}\n","import type { GLType } from '../gl';\nimport type { Immutable } from '../utils';\n\nexport interface GPUCapabilityDetail {\n  floatTexture: number,\n  halfFloatTexture: number,\n  //set currentPass color attachment type FLOAT\n  floatColorAttachment?: boolean,\n  //set currentPass color attachment type HALF_FLOAT\n  halfFloatColorAttachment?: boolean,\n  maxVertexUniforms: number,\n  maxVertexTextures: number,\n  maxFragmentUniforms: number,\n  maxFragmentTextures: number,\n  maxShaderTexCount: number,\n  maxTextureSize: number,\n  maxTextureAnisotropy: number,\n  shaderTextureLod: boolean,\n  instanceDraw?: boolean,\n  ktx2Support: boolean,\n  drawBuffers?: boolean,\n  asyncShaderCompile: boolean,\n  //draw elements use uint32 Array\n  intIndexElementBuffer?: boolean,\n  //render pass depth and stencil texture readable\n  //in webgl, if not readable,use Renderbuffer which cannot readable\n  readableDepthStencilTextures?: boolean,\n  writableFragDepth?: boolean,\n  standardDerivatives: boolean,\n  halfFloatLinear: boolean,\n  floatLinear: boolean,\n  maxSample: number,\n}\n\nconst isWebGL2Available = typeof WebGL2RenderingContext === 'function';\n\nexport class GPUCapability {\n  type: GLType;\n  level: number;\n  detail: Immutable<GPUCapabilityDetail>;\n  private compressTextureCapabilityList: Map<CompressTextureCapabilityType, boolean>;\n\n  UNSIGNED_INT_24_8: number;\n  internalFormatDepth16: number;\n  internalFormatDepth24_stencil8: number;\n\n  private drawBufferExtension: WEBGL_draw_buffers | null;\n  private textureMaxAnisotropyExt: number;\n  glAsyncCompileExt: KHR_parallel_shader_compile | null;\n  vaoExt: OES_vertex_array_object | null;\n\n  constructor (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n  ) {\n    this.setupCapability(gl);\n  }\n  get isWebGL2 (): boolean {\n    return this.level === 2;\n  }\n  isCompressedFormatSupported (cap: CompressTextureCapabilityType): boolean {\n    return !!this.compressTextureCapabilityList.get(cap);\n  }\n  private setupCapability (gl: WebGLRenderingContext | WebGL2RenderingContext) {\n    const level = isWebGL2Available && gl instanceof WebGL2RenderingContext ? 2 : 1;\n    const level2 = level === 2;\n    const textureAnisotropicExt = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') as EXT_texture_filter_anisotropic;\n    const depthTextureExtension = gl.getExtension('WEBGL_depth_texture');\n    let halfFloatLinear = !!gl.getExtension('OES_texture_half_float_linear');\n    let floatLinear = !!gl.getExtension('OES_texture_float_linear');\n\n    this.level = level;\n    this.type = level2 ? 'webgl2' : 'webgl';\n    this.vaoExt = gl.getExtension('OES_vertex_array_object');\n    this.glAsyncCompileExt = gl.getExtension('KHR_parallel_shader_compile');\n\n    this.UNSIGNED_INT_24_8 = (gl as WebGL2RenderingContext).UNSIGNED_INT_24_8;\n    this.drawBufferExtension = gl.getExtension('WEBGL_draw_buffers');\n    if (depthTextureExtension) {\n      this.UNSIGNED_INT_24_8 = depthTextureExtension.UNSIGNED_INT_24_8_WEBGL;\n    }\n    if (level2 && !halfFloatLinear) {\n      halfFloatLinear = checkLinearTextureFilter(gl as WebGL2RenderingContext, (gl as WebGL2RenderingContext).HALF_FLOAT);\n    }\n    if (level2 && !floatLinear) {\n      floatLinear = checkLinearTextureFilter(gl as WebGL2RenderingContext, (gl as WebGL2RenderingContext).FLOAT);\n    }\n    this.internalFormatDepth16 = level2 ? (gl as WebGL2RenderingContext).DEPTH_COMPONENT16 : gl.DEPTH_COMPONENT;\n    this.internalFormatDepth24_stencil8 = level2 ? (gl as WebGL2RenderingContext).DEPTH24_STENCIL8 : gl.DEPTH_STENCIL;\n    const floatTexture = (level2 || gl.getExtension('OES_texture_float')) ? gl.FLOAT : 0;\n    const halfFloatTexture = level2 ? WebGL2RenderingContext.HALF_FLOAT : (gl.getExtension('OES_texture_half_float')?.HALF_FLOAT_OES || 0);\n\n    this.compressTextureCapabilityList = new Map([\n      [CompressTextureCapabilityType.astc, !!gl.getExtension('WEBGL_compressed_texture_astc')],\n      [CompressTextureCapabilityType.astc_webkit, !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_astc')],\n      [CompressTextureCapabilityType.etc, !!gl.getExtension('WEBGL_compressed_texture_etc')],\n      [CompressTextureCapabilityType.etc_webkit, !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_etc')],\n      [CompressTextureCapabilityType.etc1, !!gl.getExtension('WEBGL_compressed_texture_etc1')],\n      [CompressTextureCapabilityType.pvrtc, !!gl.getExtension('WEBGL_compressed_texture_pvrtc') || !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc')],\n      [CompressTextureCapabilityType.pvrtc_webkit, !!gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc')],\n      [CompressTextureCapabilityType.sRGB, !!gl.getExtension('EXT_sRGB')],\n    ]);\n    const detail: GPUCapabilityDetail = {\n      floatTexture,\n      halfFloatTexture,\n      maxSample: level2 ? gl.getParameter((gl as WebGL2RenderingContext).MAX_SAMPLES) : 1,\n      maxVertexUniforms: gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS),\n      maxVertexTextures: gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),\n      maxFragmentUniforms: gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS),\n      maxFragmentTextures: gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS),\n      floatColorAttachment: level2 ? !!gl.getExtension('EXT_color_buffer_float') : (floatTexture > 0 && !!gl.getExtension('WEBGL_color_buffer_float')),\n      halfFloatColorAttachment: level2 ? !!gl.getExtension('EXT_color_buffer_float') : (halfFloatTexture > 0 && !!gl.getExtension('EXT_color_buffer_half_float')),\n      maxTextureSize: gl.getParameter(gl.MAX_TEXTURE_SIZE),\n      maxShaderTexCount: gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),\n      halfFloatLinear,\n      floatLinear,\n      maxTextureAnisotropy: textureAnisotropicExt ? gl.getParameter(textureAnisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0,\n      shaderTextureLod: level2 || !!gl.getExtension('EXT_shader_texture_lod'),\n      instanceDraw: level2 || !!gl.getExtension('ANGLE_instanced_arrays'),\n      ktx2Support: detectKTX2Support(this.compressTextureCapabilityList),\n      drawBuffers: level2 || !!this.drawBufferExtension,\n      asyncShaderCompile: !!this.glAsyncCompileExt,\n      intIndexElementBuffer: !!gl.getExtension('OES_element_index_uint'),\n      standardDerivatives: level2 || !!gl.getExtension('OES_standard_derivatives'),\n      readableDepthStencilTextures: level2 || !!depthTextureExtension,\n      writableFragDepth: level2 || !!gl.getExtension('EXT_frag_depth'),\n    };\n\n    this['detail'] = detail;\n    if (textureAnisotropicExt) {\n      this.textureMaxAnisotropyExt = textureAnisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT;\n    }\n  }\n\n  framebufferTexture2D (\n    gl: WebGLRenderingContext | WebGL2RenderingContext,\n    target: GLenum,\n    index: number,\n    textarget: number,\n    texture: WebGLTexture | null,\n  ) {\n    const ext = this.drawBufferExtension;\n\n    if (this.level === 1 && !ext && index > 0) {\n      throw new Error('Draw multiple color buffers not available.');\n    }\n    const attachment = ext ?\n      ext[`COLOR_ATTACHMENT${index}_WEBGL` as keyof WEBGL_draw_buffers] as number :\n      gl[`COLOR_ATTACHMENT${index}` as keyof WebGLRenderingContext] as number;\n\n    if (attachment) {\n      gl.framebufferTexture2D(target, attachment, textarget, texture, 0);\n    } else {\n      console.error(`Invalid color attachment index: ${index}.`);\n    }\n  }\n\n  drawBuffers (gl: WebGLRenderingContext | WebGL2RenderingContext, bufferStates: boolean[]) {\n    const ext = this.drawBufferExtension;\n\n    if (this.level === 1 && !ext) {\n      if (bufferStates.length > 1) {\n        throw new Error('Draw buffers not available.');\n      } else {\n        return;\n      }\n    }\n    const buffers = bufferStates.map((enabled, index) => {\n      if (enabled) {\n        return ext ?\n          ext[`COLOR_ATTACHMENT${index}_WEBGL` as keyof WEBGL_draw_buffers] as number :\n          gl[`COLOR_ATTACHMENT${index}` as keyof WebGLRenderingContext] as number;\n      }\n\n      return gl.NONE;\n    });\n\n    if (ext) {\n      ext.drawBuffersWEBGL(buffers);\n    } else {\n      (gl as WebGL2RenderingContext).drawBuffers(buffers);\n    }\n  }\n\n  setTextureAnisotropic (gl: WebGLRenderingContext | WebGL2RenderingContext, target: GLenum, level: number) {\n    const { maxTextureAnisotropy } = this.detail;\n\n    if (maxTextureAnisotropy) {\n      gl.texParameterf(target, this.textureMaxAnisotropyExt, Math.min(maxTextureAnisotropy, level || 4));\n    }\n  }\n}\n\nfunction checkLinearTextureFilter (gl: WebGL2RenderingContext, type: number): boolean {\n  const tex = gl.createTexture();\n  let ret = false;\n\n  gl.getError();\n  gl.bindTexture(gl.TEXTURE_2D, tex);\n  gl.texImage2D(gl.TEXTURE_2D, 0, gl.R16F, 1, 1, 0, gl.RED, type, null);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n  if (!gl.getError()) {\n    ret = true;\n  }\n  gl.deleteTexture(tex);\n\n  return ret;\n}\n\n/**\n * GL Capabilities\n * Some capabilities can be smoothed out by extension, and some capabilities must use WebGL 2.0.\n * */\nexport enum CompressTextureCapabilityType {\n  astc = 'WEBGL_compressed_texture_astc',\n  astc_webkit = 'WEBKIT_WEBGL_compressed_texture_astc',\n  etc = 'WEBGL_compressed_texture_etc',\n  etc_webkit = 'WEBKIT_WEBGL_compressed_texture_etc',\n  etc1 = 'WEBGL_compressed_texture_etc1',\n  pvrtc = 'WEBGL_compressed_texture_pvrtc',\n  pvrtc_webkit = 'WEBKIT_WEBGL_compressed_texture_pvrtc',\n  sRGB = 'EXT_sRGB'\n}\n\n/**\n * 检测 KTX2 支持\n * KTX2 可以包含多种压缩格式，需要检测是否支持至少一种\n */\nfunction detectKTX2Support (compressTextureCapabilityList: Map<CompressTextureCapabilityType, boolean>): boolean {\n  // KTX2 文件可以包含多种压缩格式，检测是否支持至少一种\n  const hasCompressedTextureSupport =\n    compressTextureCapabilityList.get(CompressTextureCapabilityType.astc) ||\n    compressTextureCapabilityList.get(CompressTextureCapabilityType.astc_webkit);\n\n  // KTX2 可以回退到未压缩的格式（如 RGBA8），所以即使不支持压缩格式也可以使用\n  // 但为了性能考虑，至少支持一种压缩格式\n  return !!hasCompressedTextureSupport;\n}\n","import type { Matrix4, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type { RendererComponent } from '../components';\nimport type { Engine } from '../engine';\nimport type { Material } from '../material';\nimport type { LostHandler, RestoreHandler } from '../utils';\nimport type { FilterMode, Framebuffer, RenderTextureFormat } from './framebuffer';\nimport type { Geometry } from './geometry';\nimport type { RenderFrame, RenderingData } from './render-frame';\nimport type { RenderPassClearAction } from './render-pass';\nimport type { ShaderLibrary } from './shader';\nimport { RenderTargetPool } from './render-target-pool';\nimport type { Texture } from '../texture';\n\nexport class Renderer implements LostHandler, RestoreHandler {\n  static create: (engine: Engine) => Renderer;\n\n  /**\n  * 存放渲染需要用到的数据\n  */\n  renderingData: RenderingData;\n  renderTargetPool: RenderTargetPool;\n  protected currentFramebuffer: Framebuffer | null = null;\n\n  constructor (\n    public engine: Engine,\n  ) {\n    this.renderTargetPool = new RenderTargetPool(engine);\n  }\n\n  setGlobalFloat (name: string, value: number) {\n    // OVERRIDE\n  }\n\n  setGlobalInt (name: string, value: number) {\n    // OVERRIDE\n  }\n\n  setGlobalVector4 (name: string, value: Vector4) {\n    // OVERRIDE\n  }\n\n  setGlobalVector3 (name: string, value: Vector3) {\n    // OVERRIDE\n  }\n\n  setGlobalMatrix (name: string, value: Matrix4) {\n    // OVERRIDE\n  }\n\n  getFramebuffer (): Framebuffer {\n    return this.currentFramebuffer as Framebuffer;\n  }\n\n  setFramebuffer (framebuffer: Framebuffer | null) {\n    // OVERRIDE\n  }\n\n  setViewport (x: number, y: number, width: number, height: number) {\n    // OVERRIDE\n  }\n\n  resize (canvasWidth: number, canvasHeight: number) {\n    // OVERRIDE\n  }\n\n  clear (action: RenderPassClearAction) {\n    // OVERRIDE\n  }\n\n  getWidth (): number {\n    // OVERRIDE\n    return 0;\n  }\n\n  getHeight (): number {\n    // OVERRIDE\n    return 0;\n  }\n\n  /**\n   * @override\n   * @param e\n   */\n  lost (e: Event): void {\n    // OVERRIDE\n  }\n\n  /**\n   * @override\n   */\n  restore (): void {\n    // OVERRIDE\n  }\n\n  /**\n   *\n   * @override\n   * @returns\n   */\n  getShaderLibrary (): ShaderLibrary | undefined {\n    // OVERRIDE\n    return undefined;\n  }\n\n  renderRenderFrame (renderFrame: RenderFrame) {\n    // OVERRIDE\n  }\n\n  renderMeshes (meshes: RendererComponent[]) {\n    // OVERRIDE\n  }\n\n  drawGeometry (geometry: Geometry, matrix: Matrix4, material: Material, subMeshIndex = 0) {\n    // OVERRIDE\n  }\n\n  getTemporaryRT (\n    name: string,\n    width: number,\n    height: number,\n    depthBuffer: number,\n    filter: FilterMode,\n    format: RenderTextureFormat,\n  ): Framebuffer {\n    return this.renderTargetPool.get(name, width, height, depthBuffer, filter, format);\n  }\n\n  releaseTemporaryRT (rt: Framebuffer): void {\n    this.renderTargetPool.release(rt);\n  }\n\n  /**\n   * 将源纹理复制到目标 Framebuffer，可使用自定义材质进行处理\n   * @param source - 源纹理\n   * @param destination - 目标 Framebuffer，如果为 null 则渲染到屏幕\n   * @param material - 可选的自定义材质，不传则使用默认复制材质\n   */\n  blit (source: Texture, destination: Framebuffer | null, material?: Material): void {\n    // OVERRIDE\n  }\n\n  dispose (): void {\n    // OVERRIDE\n  }\n}\n","/**\n *\n */\nexport type EventEmitterListener<P extends any[]> = (...callbackArgs: P) => void;\n\n/**\n * 事件监听器选项\n */\nexport type EventEmitterOptions = {\n  /**\n   * 是否只监听一次\n   */\n  once?: boolean,\n};\n\n/**\n * 事件监听器\n */\nexport class EventEmitter<T extends Record<string, any[]>> {\n  private listeners: Record<string, Array<{ listener: EventEmitterListener<any[]>, options?: EventEmitterOptions }>> = {};\n\n  /**\n   * 移除事件监听器\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @returns\n   */\n  off = <E extends keyof T & string> (\n    eventName: E,\n    listener: EventEmitterListener<T[E]>,\n  ): void => {\n    if (!this.listeners[eventName]) {\n      return;\n    }\n\n    this.listeners[eventName] = this.listeners[eventName].filter(({ listener: l }) => l !== listener);\n  };\n\n  /**\n   * 监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @param options - 事件监听器选项\n   * @returns\n   */\n  on = <E extends keyof T & string> (\n    eventName: E,\n    listener: EventEmitterListener<T[E]>,\n    options?: EventEmitterOptions,\n  ) => {\n    this.listeners[eventName] = this.listeners[eventName] || [];\n    this.listeners[eventName].push({ listener, options });\n\n    return () => this.off(eventName, listener);\n  };\n\n  /**\n   * 一次性监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   */\n  once = <E extends keyof T & string> (\n    eventName: E,\n    listener: EventEmitterListener<T[E]>,\n  ): void => {\n    this.on(eventName, listener, { once: true });\n  };\n\n  /**\n   * 触发事件\n   * @param eventName - 事件名称\n   * @param args - 事件参数\n   */\n  emit = <E extends keyof T & string> (eventName: E, ...args: T[E]): void => {\n    this.listeners[eventName]?.forEach(({ listener, options }) => {\n      listener(...args);\n      if (options?.once) {\n        this.off(eventName, listener);\n      }\n    });\n  };\n\n  /**\n   * 获取事件名称对应的所有监听器\n   * @param eventName - 事件名称\n   * @returns - 返回事件名称对应的所有监听器\n   */\n  getListeners = <E extends keyof T & string> (eventName: E): EventEmitterListener<T[E]>[] => {\n    return this.listeners[eventName]?.map(({ listener }) => listener) || [];\n  };\n}\n","import { Component } from '../components';\n\n/**\n *\n */\nexport class SceneTicking {\n  update: UpdateTickData = new UpdateTickData();\n  lateUpdate: LateUpdateTickData = new LateUpdateTickData();\n\n  /**\n   *\n   * @param obj\n   */\n  addComponent (obj: Component): void {\n    if (obj.onUpdate !== Component.prototype.onUpdate) {\n      this.update.addComponent(obj);\n    }\n    if (obj.onLateUpdate !== Component.prototype.onLateUpdate) {\n      this.lateUpdate.addComponent(obj);\n    }\n  }\n\n  /**\n   *\n   * @param obj\n   */\n  removeComponent (obj: Component): void {\n    if (obj.onUpdate !== Component.prototype.onUpdate) {\n      this.update.removeComponent(obj);\n    }\n    if (obj.onLateUpdate !== Component.prototype.onLateUpdate) {\n      this.lateUpdate.removeComponent(obj);\n    }\n  }\n\n  /**\n   *\n   */\n  clear (): void {\n    this.update.clear();\n    this.lateUpdate.clear();\n  }\n}\n\nclass TickData {\n  components: Component[] = [];\n  ticks: ((dt: number) => void)[] = [];\n\n  constructor () {\n  }\n\n  tick (dt: number) {\n    this.tickComponents(this.components, dt);\n\n    for (let i = 0;i < this.ticks.length;i++) {\n      this.ticks[i](dt);\n    }\n  }\n\n  tickComponents (components: Component[], dt: number): void {\n    // To be implemented in derived classes\n  }\n\n  addComponent (component: Component): void {\n    if (!this.components.includes(component)) {\n      this.components.push(component);\n    }\n  }\n\n  removeComponent (component: Component): void {\n    const index = this.components.indexOf(component);\n\n    if (index > -1) {\n      this.components.splice(index, 1);\n    }\n  }\n\n  addTick (method: (dt: number) => void, callee: object) {\n    const tick = method.bind(callee);\n\n    if (!this.ticks.includes(tick)) {\n      this.ticks.push(tick);\n    }\n  }\n\n  clear (): void {\n    this.components = [];\n  }\n}\n\nclass UpdateTickData extends TickData {\n  override tickComponents (components: Component[], dt: number): void {\n    for (const component of components) {\n      component.onUpdate(dt);\n    }\n  }\n}\n\nclass LateUpdateTickData extends TickData {\n  override tickComponents (components: Component[], dt: number): void {\n    for (const component of components) {\n      component.onLateUpdate(dt);\n    }\n  }\n}\n\n// function compareComponents (a: Component, b: Component): number {\n//   const itemA = a.item;\n//   const itemB = b.item;\n\n//   if (VFXItem.isAncestor(itemA, itemB)) {\n//     return -1;\n//   } else {\n//     return 1;\n//   }\n// }\n","import * as spec from '@galacean/effects-specification';\nimport type { Ray } from '@galacean/effects-math/es/core/ray';\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Camera } from './camera';\nimport type { Component, PostProcessVolume } from './components';\nimport { CompositionComponent } from './components';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from './constants';\nimport { setRayFromCamera } from './math';\nimport { PluginSystem } from './plugin-system';\nimport type { EventSystem, Region } from './plugins';\nimport { PlayState } from './plugins';\nimport type { Renderer } from './render';\nimport { RenderFrame } from './render';\nimport type { Scene } from './scene';\nimport type { Texture } from './texture';\nimport { TextureLoadAction } from './texture';\nimport type { Constructor, Disposable, LostHandler } from './utils';\nimport { assertExist, logger, noop } from './utils';\nimport { VFXItem } from './vfx-item';\nimport type { CompositionEvent } from './events';\nimport { EventEmitter } from './events';\nimport { SceneTicking } from './composition/scene-ticking';\n\n/**\n * 合成统计信息\n */\nexport interface CompositionStatistic {\n  loadStart: number,\n  /**\n   * 加载耗时\n   */\n  loadTime: number,\n  /**\n   * Shader 编译耗时\n   */\n  compileTime: number,\n  /**\n   * 从加载到渲染第一帧的时间（含 Shader 编译）\n   */\n  firstFrameTime: number,\n}\n\n/**\n * 合成消息对象\n */\nexport interface MessageItem {\n  /**\n   * 元素 ID\n   */\n  id: string,\n  /**\n   * 元素名称\n   */\n  name: string,\n  /**\n   * 消息阶段（2：开始，1：结束）\n   */\n  phrase: typeof spec.MESSAGE_ITEM_PHRASE_BEGIN | typeof spec.MESSAGE_ITEM_PHRASE_END,\n  /**\n   * 合成 ID\n   */\n  compositionId: string,\n}\n\n/**\n *\n */\nexport interface CompositionHitTestOptions {\n  /**\n   *\n   */\n  maxCount?: number,\n  /**\n   *\n   * @param region\n   * @returns\n   */\n  stop?: (region: Region) => boolean,\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  skip?: (item: VFXItem) => boolean,\n}\n\n/**\n *\n */\nexport interface CompositionProps {\n  /**\n   *\n   */\n  reusable?: boolean,\n  /**\n   *\n   */\n  baseRenderOrder?: number,\n  /**\n   *\n   */\n  renderer: Renderer,\n  /**\n   *\n   * @param message\n   * @returns\n   */\n  onItemMessage?: (message: MessageItem) => void,\n  /**\n   *\n   */\n  event?: EventSystem,\n  /**\n   *\n   */\n  width: number,\n  /**\n   *\n   */\n  height: number,\n  /**\n   *\n   */\n  speed?: number,\n}\n\n/**\n * 合成抽象类：核心对象，通常一个场景只包含一个合成，可能会有多个合成。\n * 合成中包含了相关的 Item 元素，支持对 Item 元素的创建、更新和销毁。\n * 也负责 Item 相关的动画播放控制，和持有渲染帧数据。\n */\nexport class Composition extends EventEmitter<CompositionEvent<Composition>> implements Disposable, LostHandler {\n  renderer: Renderer;\n  /**\n   *\n   */\n  sceneTicking = new SceneTicking();\n  /**\n   * 当前帧的渲染数据对象\n   */\n  renderFrame: RenderFrame;\n  /**\n   * 动画播放速度\n   */\n  speed = 1;\n  /**\n   * 是否卸载纹理贴图，就是将纹理贴图大小设置为1x1\n   */\n  textureOffloaded: boolean;\n  /*\n   * 场景中视频的播放进度\n   */\n  videoState: (number | undefined)[];\n  /**\n   * 合成渲染顺序，默认按升序渲染\n   */\n  renderOrder: number;\n  /**\n   * 播放完成后是否需要再使用，是的话生命周期结束后不会自动 dispose\n   */\n  reusable: boolean;\n  /**\n   * 合成内的元素否允许点击、拖拽交互\n   * @since 1.6.0\n   */\n  interactive: boolean;\n  /**\n   * 合成是否结束\n   */\n  isEnded = false;\n  /**\n   * 合成id\n   */\n  readonly id: string;\n  /**\n   * 画布宽度\n   */\n  readonly width: number;\n  /**\n   * 画布高度\n   */\n  readonly height: number;\n  /**\n   * 鼠标和触屏处理系统\n   */\n  readonly event?: EventSystem;\n  /**\n   * 当前合成名称\n   */\n  readonly name: string;\n  /**\n   * 用于保存与当前合成相关的插件数据\n   */\n  readonly loaderData: Record<string, any> = {};\n  /**\n   * 场景加载和首帧渲染时间\n   */\n  readonly statistic: CompositionStatistic;\n  /**\n   * 合成对应的 url 或者 JSON\n   */\n  readonly url: Scene.LoadType;\n  /**\n   * 合成根元素\n   */\n  readonly rootItem: VFXItem;\n  /**\n   * 预合成数组\n   */\n  readonly refContent: VFXItem[] = [];\n  /**\n   * 合成的相机对象\n   */\n  readonly camera: Camera;\n  /**\n   * 合成开始渲染的时间\n   */\n  readonly startTime: number = 0;\n  /**\n   * 后处理渲染配置\n   */\n  globalVolume?: PostProcessVolume;\n  /**\n   * 是否开启后处理\n   */\n  postProcessingEnabled = false;\n  /**\n   * 合成中消息元素创建/销毁时触发的回调\n   */\n  onItemMessage?: (message: MessageItem) => void;\n  /**\n   * 销毁状态位\n   */\n  protected destroyed = false;\n  protected rootComposition: CompositionComponent;\n\n  /**\n   * 合成暂停/播放 标识\n   */\n  private paused = true;\n  private isEndCalled = false;\n  private _textures: Texture[] = [];\n  private videos: HTMLVideoElement[] = [];\n\n  /**\n   * @internal\n   * 构建父子树，同时保存到 itemCacheMap 中便于查找\n   */\n  static buildItemTree (compVFXItem: VFXItem) {\n    const itemMap = new Map<string, VFXItem>();\n    const contentItems = compVFXItem.getComponent(CompositionComponent).items;\n\n    for (const item of contentItems) {\n      itemMap.set(item.id, item);\n    }\n\n    for (const item of contentItems) {\n      if (item.parentId === undefined) {\n        item.setParent(compVFXItem);\n      } else {\n        const parent = itemMap.get(item.parentId);\n\n        if (parent) {\n          item.setParent(parent);\n        } else {\n          throw new Error('The element references a non-existent element, please check the data.');\n        }\n      }\n    }\n  }\n\n  /**\n   * Composition 构造函数\n   * @param props - composition 的创建参数\n   * @param scene\n   */\n  constructor (\n    props: CompositionProps,\n    scene: Scene,\n  ) {\n    super();\n\n    const {\n      reusable = false,\n      speed = 1,\n      baseRenderOrder = 0,\n      renderer, event, width, height,\n      onItemMessage,\n    } = props;\n\n    this.renderer = renderer;\n    this.renderer.engine.addComposition(this);\n    this._textures = scene.textures;\n\n    for (const key of Object.keys(scene.assets)) {\n      const videoAsset = scene.assets[key];\n\n      if (videoAsset instanceof HTMLVideoElement) {\n        this.videos.push(videoAsset);\n      }\n    }\n\n    this.postProcessingEnabled = scene.jsonScene.renderSettings?.postProcessingEnabled ?? false;\n    this.getEngine().renderLevel = scene.renderLevel;\n\n    if (reusable) {\n      scene.consumed = true;\n    }\n\n    let sourceContent: spec.CompositionData = scene.jsonScene.compositions[0];\n\n    for (const composition of scene.jsonScene.compositions) {\n      if (composition.id === scene.jsonScene.compositionId) {\n        sourceContent = composition;\n      }\n    }\n\n    assertExist(sourceContent);\n\n    // Instantiate composition rootItem\n    this.rootItem = new VFXItem(this.getEngine());\n    this.rootItem.setInstanceId(sourceContent.id);\n    this.rootItem.name = 'rootItem';\n    this.rootItem.duration = sourceContent.duration;\n    this.rootItem.endBehavior = sourceContent.endBehavior;\n    this.rootItem.composition = this;\n\n    // Create rootItem components\n    const componentPaths = sourceContent.components;\n\n    for (const componentPath of componentPaths) {\n      const component = this.getEngine().findObject<Component>(componentPath);\n\n      this.rootItem.components.push(component);\n      component.item = this.rootItem;\n    }\n    this.rootComposition = this.rootItem.getComponent(CompositionComponent);\n\n    this.width = width;\n    this.height = height;\n    this.renderOrder = baseRenderOrder;\n    this.id = sourceContent.id;\n    this.startTime = sourceContent.startTime ?? 0;\n    this.renderer = renderer;\n    this.event = event;\n    this.statistic = {\n      loadStart: scene.startTime ?? 0,\n      loadTime: scene.totalTime ?? 0,\n      compileTime: 0,\n      firstFrameTime: 0,\n    };\n    this.reusable = reusable;\n    this.speed = speed;\n    this.name = sourceContent.name;\n    this.camera = new Camera(this.name, {\n      ...sourceContent?.camera,\n      aspect: width / height,\n      pixelWidth: width,\n      pixelHeight: height,\n    });\n    this.url = scene.url;\n    this.interactive = true;\n    if (onItemMessage) {\n      this.onItemMessage = onItemMessage;\n    }\n    this.createRenderFrame();\n\n    Composition.buildItemTree(this.rootItem);\n    this.rootComposition.setChildrenRenderOrder(0);\n\n    PluginSystem.initializeComposition(this, scene);\n  }\n\n  /**\n   * 所有合成 Item 的根变换\n   */\n  get transform () {\n    return this.rootItem.transform;\n  }\n\n  /**\n   * 获取场景中的纹理数组\n   */\n  get textures () {\n    return this._textures;\n  }\n\n  /**\n   * 获取合成中所有元素\n   */\n  get items (): VFXItem[] {\n    return this.rootItem.getDescendants();\n  }\n\n  /**\n   * 获取合成当前时间\n   */\n  get time () {\n    return this.rootComposition.time;\n  }\n\n  /**\n   * 获取销毁状态\n   */\n  get isDestroyed (): boolean {\n    return this.destroyed;\n  }\n\n  set viewportMatrix (matrix: Matrix4) {\n    this.camera.setViewportMatrix(matrix);\n  }\n  get viewportMatrix () {\n    return this.camera.getViewportMatrix();\n  }\n\n  /**\n   * 获取合成的时长\n   */\n  getDuration () {\n    return this.rootItem.duration;\n  }\n\n  /**\n   * 重新开始合成\n   */\n  restart () {\n    this.reset();\n    this.forwardTime(this.startTime);\n  }\n\n  /**\n   * 设置当前合成的渲染顺序\n   * @param index - 序号，大的后绘制\n   */\n  setIndex (index: number) {\n    this.renderOrder = index;\n  }\n\n  /**\n   * 获取当前合成的渲染顺序\n   * @returns\n   */\n  getIndex (): number {\n    return this.renderOrder;\n  }\n\n  /**\n   * 设置合成的动画速度\n   * @param speed - 速度\n   */\n  setSpeed (speed: number) {\n    this.speed = speed;\n  }\n\n  /**\n   * 设置合成的可见性\n   * @since 2.0.0\n   * @param visible - 是否可见\n   */\n  setVisible (visible: boolean) {\n    this.rootItem.setVisible(visible);\n  }\n\n  /**\n   * 获取合成的动画速度\n   * @returns\n   */\n  getSpeed () {\n    return this.speed;\n  }\n\n  /**\n   *\n   */\n  play () {\n    if (this.isEnded && this.reusable) {\n      this.restart();\n    }\n    if (this.rootComposition.isStartCalled) {\n      this.setTime(this.time - this.startTime);\n      this.resume();\n    } else {\n      this.setTime(0);\n      this.resume();\n    }\n  }\n\n  /**\n   * 暂停合成的播放\n   */\n  pause () {\n    this.paused = true;\n    this.emit('pause');\n  }\n\n  /**\n   *\n   * @returns\n   */\n  getPaused () {\n    return this.paused;\n  }\n\n  /**\n   * 恢复合成的播放\n   */\n  resume () {\n    this.paused = false;\n    if (this.isEnded && this.reusable) {\n      this.restart();\n    }\n    const time = this.time;\n\n    this.emit('play', { time });\n  }\n\n  /**\n   * 跳转合成到指定时间播放\n   * @param time - 相对 startTime 的时间\n   */\n  gotoAndPlay (time: number) {\n    this.setTime(time);\n    this.emit('goto', { time });\n    this.resume();\n  }\n\n  /**\n   * 跳转合成到指定时间并暂停\n   * @param time - 相对 startTime 的时间\n   */\n  gotoAndStop (time: number) {\n    this.setTime(time);\n    this.emit('goto', { time });\n    this.pause();\n  }\n\n  /**\n   *\n   */\n  createRenderFrame () {\n    this.renderFrame = new RenderFrame({\n      camera: this.camera,\n      renderer: this.renderer,\n      globalVolume: this.globalVolume,\n      postProcessingEnabled: this.postProcessingEnabled,\n    });\n  }\n\n  /**\n   * 跳到指定时间点（不做任何播放行为）\n   * @param time - 相对 startTime 的时间\n   */\n  setTime (time: number) {\n    const speed = this.speed;\n    const pause = this.getPaused();\n\n    if (pause) {\n      this.resume();\n    }\n    this.setSpeed(1);\n    this.forwardTime(time + this.startTime);\n    this.setSpeed(speed);\n    if (pause) {\n      this.paused = true;\n    }\n  }\n\n  addItem (item: VFXItem) {\n    item.setParent(this.rootItem);\n  }\n\n  /**\n   * 获取合成上某一类型的组件\n   * @since 2.6.0\n   * @param classConstructor - 要获取的组件类型\n   * @returns 查询结果中符合类型的第一个组件\n   */\n  getComponent<T extends Component> (classConstructor: Constructor<T>): T {\n    return this.rootItem.getComponent(classConstructor);\n  }\n\n  /**\n   * 前进合成到指定时间\n   * @param time - 相对0时刻的时间\n   */\n  private forwardTime (time: number) {\n    const deltaTime = time * 1000 - this.time * 1000;\n    const reverse = deltaTime < 0;\n    const step = 15;\n    let t = Math.abs(deltaTime);\n    const ss = reverse ? -step : step;\n\n    // FIXME Update 中可能会修改合成时间，这边需要优化更新逻辑\n    for (t; t > step; t -= step) {\n      this.update(ss);\n    }\n    this.update(reverse ? -t : t);\n  }\n\n  /**\n   * 重置状态函数\n   */\n  protected reset () {\n    this.isEnded = false;\n    this.isEndCalled = false;\n    this.rootComposition.time = 0;\n  }\n\n  prepareRender () { }\n\n  /**\n   * 合成更新，针对所有 item 的更新\n   * @param deltaTime - 更新的时间步长\n   */\n  update (deltaTime: number) {\n    if (this.getPaused()) {\n      return;\n    }\n\n    // Scene VFXItem components lifetime function\n    if (!this.rootItem.isDuringPlay) {\n      this.rootItem.awake();\n      this.rootItem.beginPlay();\n    }\n\n    const previousCompositionTime = this.time;\n\n    this.updateCompositionTime(deltaTime * this.speed / 1000);\n    const deltaTimeInMs = (this.time - previousCompositionTime) * 1000;\n\n    this.sceneTicking.update.tick(deltaTimeInMs);\n    this.sceneTicking.lateUpdate.tick(deltaTimeInMs);\n\n    this.updateCamera();\n    this.prepareRender();\n\n    if (this.isEnded && !this.isEndCalled) {\n      this.isEndCalled = true;\n      this.emit('end', { composition: this });\n    }\n    if (this.shouldDispose()) {\n      this.dispose();\n    }\n  }\n\n  private shouldDispose () {\n    return this.isEnded && this.rootItem.endBehavior === spec.EndBehavior.destroy && !this.reusable;\n  }\n\n  /**\n   * 更新相机\n   * @override\n   */\n  private updateCamera () {\n    this.camera.updateMatrix();\n  }\n\n  /**\n   * 更新主合成组件\n   */\n  private updateCompositionTime (deltaTime: number) {\n    if (this.rootComposition.state === PlayState.Paused || !this.rootComposition.isActiveAndEnabled) {\n      return;\n    }\n\n    // 相对于合成开始时间的时间\n    let localTime = this.time + deltaTime - this.startTime;\n\n    if (deltaTime < 0 && localTime < 0) {\n      localTime = 0;\n    }\n\n    const duration = this.rootItem.duration;\n    const endBehavior = this.rootItem.endBehavior;\n\n    let isEnded = false;\n\n    if (localTime >= duration) {\n\n      isEnded = true;\n\n      switch (endBehavior) {\n        case spec.EndBehavior.restart: {\n          localTime = localTime % duration;\n          this.restart();\n\n          break;\n        }\n        case spec.EndBehavior.freeze: {\n          localTime = Math.min(duration, localTime);\n\n          break;\n        }\n        case spec.EndBehavior.forward: {\n\n          break;\n        }\n        case spec.EndBehavior.destroy: {\n\n          break;\n        }\n      }\n    }\n\n    this.rootComposition.time = localTime + this.startTime;\n\n    // end state changed, handle onEnd flags\n    if (this.isEnded !== isEnded) {\n      if (isEnded) {\n        this.isEnded = true;\n      } else {\n        this.isEnded = false;\n        this.isEndCalled = false;\n      }\n    }\n  }\n\n  /**\n   * 通过名称获取元素\n   * @param name - 元素名称\n   * @returns 元素对象\n   */\n  getItemByName (name: string) {\n    return this.rootItem.find(name);\n  }\n\n  /**\n   * 获取指定位置和相机连成的射线\n   * @param x\n   * @param y\n   * @returns\n   */\n  getHitTestRay (x: number, y: number): Ray {\n    const { x: a, y: b, z: c, w: d } = this.renderFrame.editorTransform;\n\n    return setRayFromCamera((x - c) / a, (y - d) / b, this.camera);\n  }\n\n  /**\n   * 获取 engine 对象\n   * @returns\n   */\n  getEngine () {\n    return this.renderer?.engine;\n  }\n\n  /**\n   * Item 求交测试，返回求交结果列表，x 和 y 是归一化到[-1, 1]区间的值，x 向右，y 向上\n   * @param x - 鼠标或触点的 x，已经归一化到[-1, 1]\n   * @param y - 鼠标或触点的 y，已经归一化到[-1, 1]\n   * @param force - 是否强制求交，没有交互信息的 Item 也要进行求交测试\n   * @param options - 最大求交数和求交时的回调\n   */\n  hitTest (x: number, y: number, force?: boolean, options?: CompositionHitTestOptions): Region[] {\n    if (this.isDestroyed || !this.interactive) {\n      return [];\n    }\n    const regions: Region[] = [];\n    const ray = this.getHitTestRay(x, y);\n\n    this.rootComposition.hitTest(ray, x, y, regions, force, options);\n\n    return regions;\n  }\n\n  /**\n   * InteractItem 生命周期开始时的调用\n   * @param item - 交互元素\n   * @param type - 交互类型\n   */\n  addInteractiveItem (item: VFXItem, type: spec.InteractType) {\n    if (type === spec.InteractType.MESSAGE) {\n      this.onItemMessage?.({\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_BEGIN,\n        id: item.id,\n        compositionId: this.id,\n      });\n      item.emit('message', {\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_BEGIN,\n        id: item.id,\n      });\n\n      return item.id;\n    }\n  }\n\n  /**\n   * InteractItem 生命周期结束时的调用\n   * @param item - 交互元素\n   * @param type - 交互类型\n   */\n  removeInteractiveItem (item: VFXItem, type: spec.InteractType) {\n    // MESSAGE ITEM 的结束行为\n    if (type === spec.InteractType.MESSAGE) {\n      this.onItemMessage?.({\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_END,\n        id: item.id,\n        compositionId: this.id,\n      });\n      item.emit('message', {\n        name: item.name,\n        phrase: spec.MESSAGE_ITEM_PHRASE_END,\n        id: item.id,\n      });\n    }\n  }\n\n  /**\n   * 销毁 Item\n   * @internal\n   * @param item - 需要销毁的 item\n   */\n  destroyItem (item: VFXItem) {\n    // 预合成元素销毁时销毁其中的item\n    // if (item.type !== spec.ItemType.composition) {\n    // this.content.removeItem(item);\n    // 预合成中的元素移除\n    // this.refContent.forEach(content => content.removeItem(item));\n    // removeItem(this.items, item);\n    // }\n  }\n\n  lost (e: Event): void {\n    this.videoState = this.textures.map(tex => {\n      if ('video' in tex.source) {\n        tex.source.video.pause();\n\n        return tex.source.video.currentTime;\n      }\n    });\n\n    this.textures.map(tex => tex.dispose());\n    this.dispose();\n  }\n\n  /**\n   * 合成对象销毁\n   */\n  dispose (): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.destroyed = true;\n\n    for (const texture of this.textures) {\n      texture.dispose();\n    }\n    this._textures = [];\n\n    for (const video of this.videos) {\n      video.pause();\n      video.removeAttribute('src');\n      video.load();\n    }\n    this.videos = [];\n\n    this.rootItem.dispose();\n    // FIXME: 注意这里增加了renderFrame销毁\n    this.renderFrame.dispose();\n    PluginSystem.destroyComposition(this);\n\n    this.update = () => {\n      if (!__DEBUG__) {\n        logger.error(`Update disposed composition: ${this.name}.`);\n      }\n    };\n\n    this.dispose = noop;\n    this.renderer.engine.removeComposition(this);\n\n    if (this.getEngine().env === PLAYER_OPTIONS_ENV_EDITOR) {\n      return;\n    }\n\n    this.renderer.clear({\n      stencilAction: TextureLoadAction.clear,\n      clearStencil: 0,\n      depthAction: TextureLoadAction.clear,\n      clearDepth: 1,\n      colorAction: TextureLoadAction.clear,\n      clearColor: [0, 0, 0, 0],\n    });\n  }\n\n  /**\n   * 编辑器使用的 transform 修改方法\n   * @internal\n   * @param scale - 缩放比例\n   * @param dx - x偏移量\n   * @param dy - y偏移量\n   */\n  setEditorTransform (scale: number, dx: number, dy: number) {\n    this.renderFrame.editorTransform.set(scale, scale, dx, dy);\n  }\n\n  /**\n   * 合成整体在水平方向移动 x 像素，垂直方向移动 y 像素\n   */\n  translateByPixel (x: number, y: number) {\n    if (!this.renderer) {\n      console.warn('Renderer not assigned. Operation aborted.');\n\n      return;\n    }\n    this.rootItem.translateByPixel(x, y);\n  }\n\n  /**\n   * 设置合成在画布上的像素位置\n   * Tips:\n   *  - 坐标原点在 canvas 左上角，x 正方向水平向右， y 正方向垂直向下\n   *  - 设置后会覆盖原有的位置信息\n   * @param x - x 坐标\n   * @param y - y 坐标\n   */\n  setPositionByPixel (x: number, y: number) {\n    if (!this.renderer) {\n      console.warn('Renderer not assigned. Operation aborted.');\n\n      return;\n    }\n    this.rootItem.setPositionByPixel(x, y);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上相对当前的位移\n   */\n  translate (x: number, y: number, z: number) {\n    this.rootItem.translate(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上相对原点的位移\n   */\n  setPosition (x: number, y: number, z: number) {\n    this.rootItem.setPosition(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上相对当前的旋转（角度）\n   */\n  rotate (x: number, y: number, z: number) {\n    this.rootItem.rotate(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上的相对原点的旋转（角度）\n   */\n  setRotation (x: number, y: number, z: number) {\n    this.rootItem.setRotation(x, y, z);\n  }\n  /**\n   * 设置合成在 3D 坐标轴上相对当前的缩放\n   */\n  scale (x: number, y: number, z: number) {\n    this.rootItem.scale(x, y, z);\n  }\n\n  /**\n   * 设置合成在 3D 坐标轴上的缩放\n   */\n  setScale (x: number, y: number, z: number) {\n    this.rootItem.setScale(x, y, z);\n  }\n\n  /**\n   * 卸载贴图纹理方法，减少内存\n   */\n  offloadTexture () {\n    if (!this.textureOffloaded) {\n      this.textures.forEach(tex => tex && tex.offloadData());\n      this.textureOffloaded = true;\n    }\n  }\n\n  /**\n   * 重新加载纹理\n   */\n  async reloadTexture () {\n    if (this.textureOffloaded) {\n      await Promise.all(this.textures.map(tex => tex?.reloadData()));\n      this.textureOffloaded = false;\n    }\n  }\n}\n","import { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport type { Component } from './components';\nimport { EffectComponent, RendererComponent } from './components';\nimport { Composition } from './composition';\nimport { HELP_LINK } from './constants';\nimport { effectsClass } from './decorators';\nimport { EffectsObject } from './effects-object';\nimport type { Engine } from './engine';\nimport type { EventEmitterListener, EventEmitterOptions, ItemEvent } from './events';\nimport { EventEmitter } from './events';\nimport type {\n  BoundingBoxData, HitTestBoxParams, HitTestCustomParams, HitTestSphereParams,\n  HitTestTriangleParams,\n} from './plugins';\nimport { ParticleSystem } from './plugins';\nimport { Transform } from './transform';\nimport type { Constructor, Disposable } from './utils';\nimport { generateGUID, removeItem } from './utils';\n\n/**\n * VFX 元素，包含元素的变换、组件、子元素等信息。\n */\n@effectsClass(spec.DataType.VFXItemData)\nexport class VFXItem extends EffectsObject implements Disposable {\n  /**\n   * 元素绑定的父元素\n   */\n  parent?: VFXItem;\n  /**\n   * 元素的子元素列表\n   */\n  children: VFXItem[] = [];\n  /**\n   * 元素的变换包含位置、旋转、缩放。\n   */\n  transform: Transform = new Transform();\n  /**\n   * 元素动画的当前时间\n   */\n  time = -1;\n  /**\n   * 元素动画的持续时间\n   */\n  duration = 0;\n  /**\n   * 父元素的 id\n   */\n  parentId?: string;\n  /**\n   * 元素动画结束时行为（如何处理元素）\n   */\n  endBehavior: spec.EndBehavior = spec.EndBehavior.forward;\n  /**\n   * 元素名称\n   */\n  name: string;\n  /**\n   * 元素 id 唯一\n   * @deprecated 2.7.0 Please use `getInstanceId` instead\n   */\n  id: string;\n  type: spec.ItemType = spec.ItemType.base;\n  props: spec.VFXItemData;\n  components: Component[] = [];\n  isDuringPlay = false;\n\n  /**\n   * 元素是否激活\n   */\n  private active = true;\n  /**\n   * 元素组件是否显示，用于批量开关元素组件\n   */\n  private visible = true;\n  private listIndex = 0;\n  private isEnabled = false;\n  private eventProcessor: EventEmitter<ItemEvent> = new EventEmitter();\n  /**\n   * 合成属性\n   */\n  private _composition: Composition | null;\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isComposition (item: VFXItem) {\n    return item.type === spec.ItemType.composition;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isSprite (item: VFXItem) {\n    return item.type === spec.ItemType.sprite;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isParticle (item: VFXItem) {\n    return item.type === spec.ItemType.particle;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isNull (item: VFXItem) {\n    return item.type === spec.ItemType.null;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isTree (item: VFXItem) {\n    return item.type === spec.ItemType.tree;\n  }\n\n  /**\n   *\n   * @param item\n   * @returns\n   */\n  static isCamera (item: VFXItem) {\n    return item.type === spec.ItemType.camera;\n  }\n\n  /**\n   *\n   * @param ancestorCandidate\n   * @param descendantCandidate\n   * @returns\n   */\n  static isAncestor (\n    ancestorCandidate: VFXItem,\n    descendantCandidate: VFXItem,\n  ) {\n    let current = descendantCandidate.parent;\n\n    while (current) {\n      if (current === ancestorCandidate) {\n        return true;\n      }\n      current = current.parent;\n    }\n\n    return false;\n  }\n\n  /**\n   *\n   * @param engine\n   * @param props\n   */\n  constructor (\n    engine: Engine,\n    props?: spec.Item,\n  ) {\n    super(engine);\n    this.name = 'VFXItem';\n    this.transform.name = this.name;\n    this.transform.engine = engine;\n    if (props) {\n      this.fromData(props as spec.VFXItemData);\n    }\n  }\n\n  /**\n   * 获取元素的合成\n   */\n  get composition (): Composition | null {\n    return this._composition;\n  }\n\n  /**\n   * 设置元素的合成\n   */\n  set composition (value: Composition) {\n    this._composition = value;\n\n    for (const child of this.children) {\n      if (!child.composition) {\n        child.composition = value;\n      }\n    }\n  }\n\n  /**\n   * 播放完成后是否需要再使用，是的话生命周期结束后不会 dispose\n   */\n  get compositionReusable (): boolean {\n    return this.composition?.reusable ?? false;\n  }\n\n  /**\n   * 元素在合成中的索引\n   */\n  get renderOrder () {\n    return this.listIndex;\n  }\n  set renderOrder (value: number) {\n    if (this.listIndex !== value) {\n      this.listIndex = value;\n      for (const component of this.components) {\n        if (component instanceof RendererComponent) {\n          component.priority = value;\n        }\n      }\n    }\n  }\n\n  /**\n   * 元素监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @param options - 事件监听器选项\n   * @returns\n   */\n  on<E extends keyof ItemEvent> (\n    eventName: E,\n    listener: EventEmitterListener<ItemEvent[E]>,\n    options?: EventEmitterOptions,\n  ) {\n    this.eventProcessor.on(eventName, listener, options);\n  }\n\n  /**\n   * 移除事件监听器\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   * @returns\n   */\n  off<E extends keyof ItemEvent> (\n    eventName: E,\n    listener: EventEmitterListener<ItemEvent[E]>,\n  ) {\n    this.eventProcessor.off(eventName, listener);\n  }\n\n  /**\n   * 一次性监听事件\n   * @param eventName - 事件名称\n   * @param listener - 事件监听器\n   */\n  once<E extends keyof ItemEvent> (\n    eventName: E,\n    listener: EventEmitterListener<ItemEvent[E]>,\n  ) {\n    this.eventProcessor.once(eventName, listener);\n  }\n\n  /**\n   * 触发事件\n   * @param eventName - 事件名称\n   * @param args - 事件参数\n   */\n  emit<E extends keyof ItemEvent> (\n    eventName: E,\n    ...args: ItemEvent[E]\n  ) {\n    this.eventProcessor.emit(eventName, ...args);\n  }\n\n  /**\n   * 获取事件名称对应的所有监听器\n   * @param eventName - 事件名称\n   * @returns - 返回事件名称对应的所有监听器\n   */\n  getListeners<E extends keyof ItemEvent> (eventName: E) {\n    return this.eventProcessor.getListeners(eventName);\n  }\n\n  /**\n   * 添加组件\n   * @param classConstructor - 要添加的组件\n   */\n  addComponent<T extends Component> (classConstructor: Constructor<T>): T {\n    const newComponent = new classConstructor(this.engine);\n\n    this.components.push(newComponent);\n    newComponent.setVFXItem(this);\n\n    return newComponent;\n  }\n\n  /**\n   * 获取某一类型的组件。如果当前元素绑定了多个同类型的组件只返回第一个\n   * @param classConstructor - 要获取的组件类型\n   * @returns 查询结果中符合类型的第一个组件\n   */\n  getComponent<T extends Component> (classConstructor: Constructor<T>): T {\n    let res;\n\n    for (const com of this.components) {\n      if (com instanceof classConstructor) {\n        res = com;\n\n        break;\n      }\n    }\n\n    return res as T;\n  }\n\n  /**\n   * 获取某一类型的所有组件\n   * @param classConstructor - 要获取的组件\n   * @returns 一个组件列表，包含所有符合类型的组件\n   */\n  getComponents<T extends Component> (classConstructor: Constructor<T>) {\n    const res = [];\n\n    for (const com of this.components) {\n      if (com instanceof classConstructor) {\n        res.push(com);\n      }\n    }\n\n    return res;\n  }\n\n  getDescendants (directDescendantsOnly?: boolean, predicate?: (node: VFXItem) => boolean): VFXItem[] {\n    const results: VFXItem[] = [];\n\n    this.getDescendantsInternal(results, directDescendantsOnly, predicate);\n\n    return results;\n  }\n\n  setParent (vfxItem: VFXItem) {\n    if (vfxItem === this && !vfxItem) {\n      return;\n    }\n    if (this.parent) {\n      removeItem(this.parent.children, this);\n    }\n    this.parent = vfxItem;\n    this.transform.parentTransform = vfxItem.transform;\n    vfxItem.children.push(this);\n    if (!this.composition && vfxItem.composition) {\n      this.composition = vfxItem.composition;\n    }\n    if (!this.isDuringPlay && vfxItem.isDuringPlay) {\n      this.awake();\n      this.beginPlay();\n    }\n  }\n\n  /**\n   * 通过指定 r、g、b、a 值设置元素的颜色\n   * @param {number} r\n   * @param {number} g\n   * @param {number} b\n   * @param {number} a\n   * @internal\n   * @deprecated 2.6.0 Please use `Component.setColor` instead\n   */\n  setColor (r: number, g: number, b: number, a: number) {\n  }\n\n  /**\n   * 设置元素的透明度\n   * @param opacity - 透明度值，范围 [0,1]\n   * @internal\n   * @deprecated 2.6.0 Please use `Component.setColor` instead\n   */\n  setOpacity (opacity: number) {\n  }\n\n  /**\n   * 激活或停用 VFXItem\n   */\n  setActive (value: boolean) {\n    if (this.active !== !!value) {\n      this.active = !!value;\n      this.onActiveChanged();\n    }\n  }\n\n  /**\n   * 当前 VFXItem 是否激活\n   */\n  get isActive () {\n    return this.active;\n  }\n  /**\n   * @since 2.6.0\n   */\n  set isActive (value: boolean) {\n    this.setActive(value);\n  }\n\n  /**\n   * 设置元素的显隐，该设置会批量开关元素组件\n   */\n  setVisible (visible: boolean) {\n    for (const component of this.components) {\n      component.enabled = visible;\n    }\n    this.visible = visible;\n  }\n\n  /**\n   * 元素组件显隐状态\n   */\n  get isVisible () {\n    return this.visible;\n  }\n\n  /**\n   * 元素组件显隐状态\n   * @deprecated use isVisible instead\n   */\n  getVisible () {\n    return this.visible;\n  }\n\n  /**\n   * 获取元素变换包括位置、旋转、缩放\n   * @param transform 将元素变换拷贝到该对象，并将其作为返回值\n   * @returns 元素变换的拷贝\n   */\n  getWorldTransform (transform?: Transform): Transform {\n    const tf = transform ?? new Transform({\n      valid: true,\n    });\n\n    tf.cloneFromMatrix(this.transform.getWorldMatrix());\n\n    return tf;\n  }\n\n  /**\n   * 设置元素在 3D 坐标轴上相对移动\n   */\n  translate (x: number, y: number, z: number) {\n    this.transform.translate(x, y, z);\n  }\n  /**\n   * 设置元素在 3D 坐标轴上相对旋转（角度）\n   */\n  rotate (x: number, y: number, z: number) {\n    const euler = new Euler(x, y, z);\n    const q = Quaternion.fromEuler(euler);\n\n    q.conjugate();\n    this.transform.rotateByQuat(q);\n  }\n  /**\n   * 设置元素在 3D 坐标轴上相对缩放\n   */\n  scale (x: number, y: number, z: number) {\n    this.transform.scaleBy(x, y, z);\n  }\n\n  /**\n   * 设置本地坐标位置\n   */\n  setPosition (x: number, y: number, z: number) {\n    this.transform.setPosition(x, y, z);\n  }\n  /**\n   * 设置本地坐标欧拉旋转\n   */\n  setRotation (x: number, y: number, z: number) {\n    this.transform.setRotation(x, y, z);\n  }\n  /**\n   * 设置本地坐标缩放\n   */\n  setScale (x: number, y: number, z: number) {\n    this.transform.setScale(x, y, z);\n  }\n\n  /**\n   * 设置世界坐标位置\n   * @param x - 世界坐标 x\n   * @param y - 世界坐标 y\n   * @param z - 世界坐标 z\n   */\n  setWorldPosition (x: number, y: number, z: number) {\n    this.transform.setWorldPosition(x, y, z);\n  }\n\n  /**\n   * 设置元素在画布上的像素位置\n   * Tips:\n   *  - 坐标原点在 canvas 左上角，x 正方向水平向右， y 正方向垂直向下\n   *  - 设置后会覆盖原有的位置信息\n   * @param x - x 坐标\n   * @param y - y 坐标\n   */\n  setPositionByPixel (x: number, y: number) {\n    if (this.composition) {\n      const { z } = this.transform.getWorldPosition();\n      const { x: rx, y: ry } = this.composition.camera.getInverseVPRatio(z);\n      const { width, height } = this.composition.getEngine().canvas.getBoundingClientRect();\n\n      this.transform.setPosition((2 * x / width - 1) * rx, (1 - 2 * y / height) * ry, z);\n    }\n  }\n\n  translateByPixel (x: number, y: number) {\n    if (this.composition) {\n      const { width, height } = this.composition.getEngine().canvas.getBoundingClientRect();\n      const { z } = this.transform.getWorldPosition();\n      const { x: rx, y: ry } = this.composition.camera.getInverseVPRatio(z);\n\n      this.transform.translate(2 * x * rx / width, -2 * y * ry / height, 0);\n    }\n  }\n\n  /**\n   * 获取元素包围盒\n   * @override\n   */\n  getBoundingBox (): void | BoundingBoxData {\n    // OVERRIDE\n  }\n\n  /**\n   * 获取元素用于计算光线投射的面片类型和参数\n   * @override\n   * @param force - 元素没有开启交互也返回参数\n   */\n  getHitTestParams (force?: boolean): void | HitTestBoxParams | HitTestTriangleParams | HitTestSphereParams | HitTestCustomParams {\n    // OVERRIDE\n  }\n\n  /**\n   * 获取元素当前世界坐标\n   */\n  getCurrentPosition (): Vector3 {\n    const pos = new Vector3();\n\n    this.transform.assignWorldTRS(pos);\n\n    return pos;\n  }\n\n  find (name: string): VFXItem | undefined {\n    if (this.name === name) {\n      return this;\n    }\n\n    const queue: VFXItem[] = [];\n\n    queue.push(...this.children);\n    let index = 0;\n\n    while (index < queue.length) {\n      const item = queue[index];\n\n      index++;\n      if (item.name === name) {\n        return item;\n      }\n      queue.push(...item.children);\n    }\n\n    return undefined;\n  }\n\n  /**\n   * 复制 VFXItem，返回一个新的 VFXItem\n   * @since 2.4.0\n   * @returns 复制的新 VFXItem\n   */\n  duplicate () {\n    const previousObjectIDMap: Map<EffectsObject, string> = new Map();\n\n    this.gatherPreviousObjectID(previousObjectIDMap);\n    // 重新设置当前元素和组件的 ID 以及子元素和子元素组件的 ID，避免实例化新的对象时产生碰撞\n    this.resetGUID();\n    const newItem = this.engine.findObject<VFXItem>({ id: this.defination.id });\n\n    newItem.resetGUID();\n    this.resetGUID(previousObjectIDMap);\n\n    if (this.composition) {\n      newItem.setParent(this.composition.rootItem);\n    }\n\n    return newItem;\n  }\n\n  /**\n   * @internal\n   */\n  beginPlay () {\n    this.isDuringPlay = true;\n\n    if (this.composition && this.active && !this.isEnabled) {\n      this.onEnable();\n    }\n\n    for (const child of this.children) {\n      if (!child.isDuringPlay) {\n        child.beginPlay();\n      }\n    }\n  }\n\n  /**\n   * @internal\n   */\n  awake () {\n    for (const component of this.components) {\n      if (!component.isAwakeCalled) {\n        component.onAwake();\n        component.isAwakeCalled = true;\n      }\n    }\n    for (const child of this.children) {\n      child.awake();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  onActiveChanged () {\n    if (!this.isEnabled) {\n      this.onEnable();\n    } else {\n      this.onDisable();\n    }\n  }\n\n  /**\n   * @internal\n   */\n  onEnable () {\n    this.isEnabled = true;\n    for (const component of this.components) {\n      if (component.enabled && !component.isStartCalled) {\n        component.onStart();\n        component.isStartCalled = true;\n      }\n    }\n    for (const component of this.components) {\n      if (component.enabled && !component.isEnableCalled) {\n        component.enable();\n      }\n    }\n  }\n\n  /**\n   * @internal\n   */\n  onDisable () {\n    this.isEnabled = false;\n    for (const component of this.components) {\n      if (component.enabled && component.isEnableCalled) {\n        component.disable();\n      }\n    }\n  }\n\n  override fromData (data: spec.VFXItemData): void {\n    super.fromData(data);\n    const {\n      id, name, parentId, endBehavior, transform,\n      duration = 0, visible = true,\n    } = data;\n\n    this.props = data;\n    this.type = data.type;\n    this.id = id.toString(); // TODO 老数据 id 是 number，需要转换\n    this.name = name;\n\n    if (transform) {\n      this.transform.fromData(transform);\n    }\n\n    this.transform.name = this.name;\n    this.transform.engine = this.engine;\n    this.parentId = parentId;\n    this.duration = duration;\n    this.endBehavior = endBehavior;\n\n    if (!data.content) {\n      data.content = { options: {} };\n    }\n\n    if (duration < 0) {\n      throw new Error(`Item duration can't be less than 0, see ${HELP_LINK['Item duration can\\'t be less than 0']}.`);\n    }\n\n    if (data.components) {\n      this.components.length = 0;\n      for (const componentPath of data.components) {\n        const component = this.engine.findObject<Component>(componentPath);\n\n        this.components.push(component);\n        // TODO ParticleSystemRenderer 现在是动态生成的，后面需要在 json 中单独表示为一个组件\n        if (component instanceof ParticleSystem) {\n          if (!this.components.includes(component.renderer)) {\n            this.components.push(component.renderer);\n          }\n        }\n      }\n    }\n\n    if (VFXItem.isComposition(this)) {\n      this.instantiatePreComposition();\n    }\n\n    this.setVisible(visible);\n  }\n\n  override toData (): void {\n    this.defination.id = this.guid;\n    this.defination.transform = this.transform.toData();\n    this.defination.dataType = spec.DataType.VFXItemData;\n    if (this.parent?.name !== 'rootItem') {\n      this.defination.parentId = this.parent?.guid;\n    }\n\n    // TODO 统一 sprite 等其他组件的序列化逻辑\n    if (!this.defination.components) {\n      this.defination.components = [];\n      for (const component of this.components) {\n        if (component instanceof EffectComponent) {\n          this.defination.components.push(component);\n        }\n      }\n    }\n    this.defination.content = {};\n  }\n\n  /**\n   * 销毁元素\n   */\n  override dispose (): void {\n    this.resetChildrenParent();\n\n    if (this.composition) {\n      this.composition.destroyItem(this);\n      // component 调用 dispose() 会将自身从 this.components 数组删除，slice() 避免迭代错误\n      for (const component of this.components.slice()) {\n        component.dispose();\n      }\n      this.components = [];\n      this._composition = null;\n      this.transform.setValid(false);\n    }\n\n    super.dispose();\n  }\n\n  private resetChildrenParent () {\n    // GE 父元素销毁子元素继承逻辑\n    // 如果有父对象，销毁时子对象继承父对象。\n    for (const child of this.children) {\n      if (this.parent) {\n        child.setParent(this.parent);\n      }\n    }\n    if (this.parent) {\n      removeItem(this.parent?.children, this);\n    }\n    // const contentItems = compositonVFXItem.getComponent(CompositionComponent)!.items;\n\n    // contentItems.splice(contentItems.indexOf(this), 1);\n\n    // else {\n    //   // 普通元素正常销毁逻辑, 子元素不继承\n    // if (this.parent) {\n    //   removeItem(this.parent?.children, this);\n    // }\n    // }\n  }\n\n  private instantiatePreComposition () {\n    const compositionContent = this.props.content as unknown as spec.CompositionContent;\n    const refId = compositionContent.options.refId;\n    const props = this.engine.findEffectsObjectData(refId);\n\n    if (!props) {\n      throw new Error(`Referenced precomposition with Id: ${refId} does not exist.`);\n    }\n\n    //@ts-expect-error TODO update spec.\n    const componentPaths = props.components as spec.DataPath[];\n    const prevInstanceId = this.getInstanceId();\n\n    // Set the current preComposition item id to the referenced composition id to prevent the composition component from not finding the correct item\n    this.setInstanceId(props.id);\n    for (const componentPath of componentPaths) {\n      const component = this.engine.findObject<Component>(componentPath);\n\n      component.item = this;\n      this.components.push(component);\n      component.setInstanceId(generateGUID());\n    }\n\n    Composition.buildItemTree(this);\n\n    const resetGUIDRecursive = (item: VFXItem) => {\n      item.setInstanceId(generateGUID());\n\n      for (const component of item.components) {\n        component.setInstanceId(generateGUID());\n      }\n\n      if (!VFXItem.isComposition(item)) {\n        for (const child of item.children) {\n          resetGUIDRecursive(child);\n        }\n      }\n    };\n\n    for (const child of this.children) {\n      resetGUIDRecursive(child);\n    }\n\n    this.setInstanceId(prevInstanceId);\n  }\n\n  private resetGUID (previousObjectIDMap?: Map<EffectsObject, string>) {\n    const itemGUID = previousObjectIDMap?.get(this) ?? generateGUID();\n\n    this.setInstanceId(itemGUID);\n    for (const component of this.components) {\n      const componentGUID = previousObjectIDMap?.get(component) ?? generateGUID();\n\n      component.setInstanceId(componentGUID);\n    }\n\n    for (const child of this.children) {\n      child.resetGUID(previousObjectIDMap);\n    }\n  }\n\n  private gatherPreviousObjectID (previousObjectIDMap: Map<EffectsObject, string>) {\n    previousObjectIDMap.set(this, this.getInstanceId());\n    for (const component of this.components) {\n      previousObjectIDMap.set(component, component.getInstanceId());\n    }\n\n    for (const child of this.children) {\n      child.gatherPreviousObjectID(previousObjectIDMap);\n    }\n  }\n\n  private getDescendantsInternal (\n    results: VFXItem[],\n    directDescendantsOnly = false,\n    predicate?: (node: VFXItem) => boolean,\n  ): void {\n    if (!this.children) {\n      return;\n    }\n\n    for (let index = 0; index < this.children.length; index++) {\n      const item = this.children[index];\n\n      if (!predicate || predicate(item)) {\n        results.push(item);\n      }\n\n      if (!directDescendantsOnly) {\n        item.getDescendantsInternal(results, false, predicate);\n      }\n    }\n  }\n}\n\nexport namespace Item {\n  export function is<T extends spec.Item> (item: spec.Item, type: spec.ItemType): item is T {\n    return item.type === type;\n  }\n\n  export function isComposition (item: spec.Item): item is spec.CompositionItem {\n    return item.type === spec.ItemType.composition;\n  }\n\n  export function isParticle (item: spec.Item): item is spec.ParticleItem {\n    return item.type === spec.ItemType.particle;\n  }\n\n  export function isNull (item: spec.Item): item is spec.NullItem {\n    return item.type === spec.ItemType.null;\n  }\n}\n","import type { Ray } from '@galacean/effects-math/es/core/ray';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport type { Composition, CompositionHitTestOptions } from '../composition';\nimport type { Region, TrackAsset } from '../plugins';\nimport { TimelineInstance, HitTestType, PlayState, TimelineAsset } from '../plugins';\nimport { noop } from '../utils';\nimport { VFXItem } from '../vfx-item';\nimport { effectsClass, serialize } from '../decorators';\nimport { Component } from './component';\n\nexport interface SceneBinding {\n  key: TrackAsset,\n  value: VFXItem,\n}\n\nexport interface SceneBindingData {\n  key: spec.DataPath,\n  value: spec.DataPath,\n}\n\n/**\n * @since 2.0.0\n */\n@effectsClass('CompositionComponent')\nexport class CompositionComponent extends Component {\n  time = 0;\n  @serialize()\n  items: VFXItem[] = [];  // 场景的所有元素\n\n  /**\n   * @internal\n   */\n  state: PlayState = PlayState.Playing;\n\n  private reusable = false;\n  @serialize()\n  private sceneBindings: SceneBinding[] = [];\n  @serialize()\n  private timelineAsset: TimelineAsset;\n  private timelineInstance: TimelineInstance;\n\n  override onStart (): void {\n    if (!this.timelineAsset) {\n      this.timelineAsset = new TimelineAsset(this.engine);\n    }\n    // this.resolveBindings();\n    this.timelineInstance = new TimelineInstance(this.timelineAsset, this.sceneBindings);\n\n    this.item.composition?.refContent.push(this.item);\n  }\n\n  getReusable () {\n    return this.reusable;\n  }\n\n  pause () {\n    this.state = PlayState.Paused;\n  }\n\n  resume () {\n    this.state = PlayState.Playing;\n  }\n\n  override onUpdate (dt: number): void {\n    if (this.state === PlayState.Paused) {\n      return;\n    }\n    const time = this.time;\n\n    this.timelineInstance.setTime(time);\n\n    this.timelineInstance.evaluate(dt / 1000);\n  }\n\n  override onEnable () {\n    this.item.getDescendants(false, item => {\n      item.setActive(true);\n\n      return false;\n    });\n  }\n\n  override onDisable () {\n    this.item.getDescendants(false, item => {\n      item.setActive(false);\n\n      return false;\n    });\n  }\n\n  override onDestroy (): void {\n    const items = this.item.getDescendants();\n\n    items.forEach(item => item.dispose());\n  }\n\n  hitTest (\n    ray: Ray,\n    x: number,\n    y: number,\n    regions: Region[],\n    force?: boolean,\n    options?: CompositionHitTestOptions,\n  ): boolean {\n    const isHitTestSuccess = this.hitTestRecursive(this.item, ray, x, y, regions, force, options);\n\n    // 子元素碰撞测试成功加入当前预合成元素，判断是否是合成根元素，根元素不加入\n    if (isHitTestSuccess && this.item !== this.item.composition?.rootItem) {\n      const item = this.item;\n      const lastRegion = regions[regions.length - 1];\n      const hitPositions: Vector3[] = lastRegion.hitPositions;\n\n      const region = {\n        id: item.getInstanceId(),\n        name: item.name,\n        position: hitPositions[hitPositions.length - 1],\n        parentId: item.parentId,\n        hitPositions,\n        behavior: spec.InteractBehavior.NONE,\n        item: item,\n        composition: item.composition as Composition,\n      };\n\n      regions.push(region);\n    }\n\n    return isHitTestSuccess;\n  }\n\n  private hitTestRecursive (\n    item: VFXItem,\n    ray: Ray,\n    x: number,\n    y: number,\n    regions: Region[],\n    force?: boolean,\n    options?: CompositionHitTestOptions\n  ): boolean {\n    const hitPositions: Vector3[] = [];\n    const stop = options?.stop || noop;\n    const skip = options?.skip || noop;\n    const maxCount = options?.maxCount;\n\n    if (maxCount !== undefined && regions.length >= maxCount) {\n      return false;\n    }\n\n    let hitTestSuccess = false;\n\n    for (const hitTestItem of item.children) {\n      if (\n        hitTestItem.isActive\n        && hitTestItem.transform.getValid()\n        && !skip(hitTestItem)\n      ) {\n        const hitParams = hitTestItem.getHitTestParams(force);\n\n        if (hitParams) {\n          let success = false;\n          const intersectPoint = new Vector3();\n\n          if (hitParams.type === HitTestType.triangle) {\n\n            const { triangles, backfaceCulling } = hitParams;\n\n            for (let j = 0; j < triangles.length; j++) {\n              const triangle = triangles[j];\n\n              if (ray.intersectTriangle(triangle, intersectPoint, backfaceCulling)) {\n                success = true;\n                hitPositions.push(intersectPoint);\n\n                break;\n              }\n            }\n          } else if (hitParams.type === HitTestType.box) {\n            const { center, size } = hitParams;\n            const boxMin = center.clone().addScaledVector(size, 0.5);\n            const boxMax = center.clone().addScaledVector(size, -0.5);\n\n            if (ray.intersectBox({ min: boxMin, max: boxMax }, intersectPoint)) {\n              success = true;\n              hitPositions.push(intersectPoint);\n            }\n          } else if (hitParams.type === HitTestType.sphere) {\n            const { center, radius } = hitParams;\n\n            if (ray.intersectSphere({ center, radius }, intersectPoint)) {\n              success = true;\n              hitPositions.push(intersectPoint);\n            }\n          } else if (hitParams.type === HitTestType.custom) {\n            const tempPosition = hitParams.collect(ray, new Vector2(x, y));\n\n            if (tempPosition && tempPosition.length > 0) {\n              tempPosition.forEach(pos => {\n                hitPositions.push(pos);\n              });\n              success = true;\n            }\n          }\n          if (success) {\n            const region = {\n              id: hitTestItem.getInstanceId(),\n              name: hitTestItem.name,\n              position: hitPositions[hitPositions.length - 1],\n              parentId: hitTestItem.parentId,\n              hitPositions,\n              behavior: hitParams.behavior,\n              item: hitTestItem,\n              composition: this.item.composition as Composition,\n            };\n\n            regions.push(region);\n            hitTestSuccess = true;\n\n            if (stop(region)) {\n              return true;\n            }\n          }\n        }\n      }\n\n      if (VFXItem.isComposition(hitTestItem)) {\n        if (hitTestItem.getComponent(CompositionComponent).hitTest(ray, x, y, regions, force, options)) {\n          hitTestSuccess = true;\n        }\n      } else {\n        if (this.hitTestRecursive(hitTestItem, ray, x, y, regions, force, options)) {\n          hitTestSuccess = true;\n        }\n      }\n    }\n\n    return hitTestSuccess;\n  }\n\n  /**\n   * 设置当前合成子元素的渲染顺序\n   * @internal\n   */\n  setChildrenRenderOrder (startOrder: number): number {\n    for (const item of this.items) {\n      item.renderOrder = startOrder++;\n\n      const subCompositionComponent = item.getComponent(CompositionComponent);\n\n      if (subCompositionComponent) {\n        startOrder = subCompositionComponent.setChildrenRenderOrder(startOrder);\n      }\n    }\n\n    return startOrder;\n  }\n\n  override fromData (data: any): void {\n    super.fromData(data);\n  }\n}\n","import { serialize } from '../decorators';\nimport type { Engine } from '../engine';\nimport { MaskProcessor } from '../material/mask-ref-manager';\nimport type { Maskable } from '../material/types';\nimport { setMaskMode } from '../material/utils';\nimport type { BoundingBoxTriangle, HitTestTriangleParams } from '../plugins';\nimport { MeshCollider } from '../plugins';\nimport type { Geometry } from '../render/geometry';\nimport type { Renderer } from '../render/renderer';\nimport { RendererComponent } from './renderer-component';\n\n/**\n * Mesh 组件\n */\nexport class MeshComponent extends RendererComponent implements Maskable {\n  /**\n   * 渲染的 Geometry\n   */\n  @serialize()\n  protected geometry: Geometry;\n  /**\n   * 用于点击测试的碰撞器\n   */\n  protected meshCollider = new MeshCollider();\n  private readonly maskManager: MaskProcessor;\n\n  constructor (engine: Engine) {\n    super(engine);\n    this.maskManager = new MaskProcessor(engine);\n  }\n\n  override render (renderer: Renderer) {\n    for (let i = 0;i < this.materials.length;i++) {\n      const material = this.materials[i];\n\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), material, i);\n    }\n  }\n\n  drawStencilMask (renderer: Renderer): void {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n\n    for (let i = 0;i < this.materials.length;i++) {\n      const material = this.materials[i];\n      const previousColorMask = material.colorMask;\n\n      material.colorMask = false;\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), material, i);\n      material.colorMask = previousColorMask;\n    }\n  }\n\n  // TODO 点击测试后续抽象一个 Collider 组件\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | void => {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const area = this.meshCollider.getBoundingBoxData();\n\n    if (area) {\n      return {\n        type: area.type,\n        triangles: area.area,\n      };\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle | void {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const boundingBox = this.meshCollider.getBoundingBox();\n\n    return boundingBox;\n  }\n\n  // TODO: Update data spec\n  override fromData (data: any): void {\n    super.fromData(data);\n\n    const maskableRendererData = data;\n    const maskOptions = maskableRendererData.mask;\n\n    if (maskOptions) {\n      this.maskManager.setMaskOptions(maskOptions);\n    }\n\n    for (const material of this.materials) {\n      const stencilRef = this.maskManager.getRefValue();\n\n      material.stencilRef = [stencilRef, stencilRef];\n      setMaskMode(material, this.maskManager.maskMode);\n    }\n  }\n}\n","import { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport type { Engine } from '../engine';\nimport { MeshComponent } from './mesh-component';\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.EffectComponent)\nexport class EffectComponent extends MeshComponent {\n  time = 0;\n\n  constructor (engine: Engine) {\n    super(engine);\n    this.name = 'EffectComponent';\n  }\n\n  override onStart (): void {\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  override onUpdate (dt: number): void {\n    const time = this.time;\n    const _Time = this.material.getVector4('_Time') ?? new Vector4();\n\n    this.material.setVector4('_Time', _Time.set(time / 20, time, time * 2, time * 3));\n\n    this.time += dt / 1000;\n  }\n\n  override fromData (data: spec.EffectComponentData): void {\n    super.fromData(data);\n    this.material = this.materials[0];\n  }\n}","import { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport type { VFXItem } from '../vfx-item';\nimport { Component } from './component';\nimport { effectsClass } from '../decorators';\nimport type { ComponentData } from '@galacean/effects-specification';\nimport type * as spec from '@galacean/effects-specification';\n\nconst tempVector3 = new Vector3(0, 0, 0);\nconst tempVector3Second = new Vector3(0, 0, 0);\n\nexport class ConstraintTarget {\n  target: VFXItem | null = null;\n  weight = 1.0;\n}\n\nexport interface ConstraintTargetData {\n  target: spec.DataPath,\n  weight: number,\n}\n\nexport interface PositionConstraintData extends ComponentData {\n  positionAtRest: spec.Vector3Data,\n  positionOffset: spec.Vector3Data,\n  weight: number,\n  constrainX: boolean,\n  constrainY: boolean,\n  constrainZ: boolean,\n  targets: ConstraintTargetData[],\n}\n\n/**\n * 位置约束组件\n * 用于约束物体跟随目标对象的位置\n */\n@effectsClass('PositionConstraint')\nexport class PositionConstraint extends Component {\n  /**\n   * 初始位置（当前元素的初始世界位置）\n   */\n  private positionAtRest = new Vector3(0, 0, 0);\n  /**\n   * 位置偏移\n   */\n  private positionOffset = new Vector3(0, 0, 0);\n  /**\n   * 约束权重 (0-1)\n   */\n  private weight = 1.0;\n  /**\n   * 是否约束 X 轴\n   */\n  private constrainX = true;\n  /**\n   * 是否约束 Y 轴\n   */\n  private constrainY = true;\n  /**\n   * 是否约束 Z 轴\n   */\n  private constrainZ = true;\n  /**\n   * 约束目标\n   */\n  private targets: ConstraintTarget[] = [];\n\n  override onStart (): void {\n    // 保存当前元素的初始世界位置\n    const pos = this.item.transform.getWorldPosition();\n\n    this.positionAtRest.copyFrom(pos);\n  }\n\n  override onUpdate (dt: number): void {\n    if (this.targets.length === 0) {\n      return;\n    }\n\n    // 重置 tempVector3 用于计算融合位置\n    tempVector3.set(0, 0, 0);\n    let totalWeight = 0;\n\n    // 计算所有目标的加权平均位置\n    for (const constraintTarget of this.targets) {\n      if (constraintTarget.target) {\n        const targetPos = constraintTarget.target.transform.getWorldPosition();\n        const weight = constraintTarget.weight;\n\n        tempVector3.x += targetPos.x * weight;\n        tempVector3.y += targetPos.y * weight;\n        tempVector3.z += targetPos.z * weight;\n        totalWeight += weight;\n      }\n    }\n\n    // 归一化加权位置\n    if (totalWeight > 0) {\n      tempVector3.x /= totalWeight;\n      tempVector3.y /= totalWeight;\n      tempVector3.z /= totalWeight;\n    }\n\n    // 应用偏移\n    tempVector3.x += this.positionOffset.x;\n    tempVector3.y += this.positionOffset.y;\n    tempVector3.z += this.positionOffset.z;\n\n    // 根据全局权重在初始位置和融合位置之间插值，结果存入 tempVector3Second\n    tempVector3Second.set(\n      this.lerp(this.positionAtRest.x, tempVector3.x, this.weight),\n      this.lerp(this.positionAtRest.y, tempVector3.y, this.weight),\n      this.lerp(this.positionAtRest.z, tempVector3.z, this.weight),\n    );\n\n    // 应用轴约束，复用 tempVector3 存储当前位置\n    tempVector3.copyFrom(this.item.transform.getWorldPosition());\n    const finalX = this.constrainX ? tempVector3Second.x : tempVector3.x;\n    const finalY = this.constrainY ? tempVector3Second.y : tempVector3.y;\n    const finalZ = this.constrainZ ? tempVector3Second.z : tempVector3.z;\n\n    // 设置新的世界位置\n    this.item.transform.setWorldPosition(finalX, finalY, finalZ);\n  }\n\n  /**\n   * 添加约束目标\n   * @param target - 目标元素\n   * @param weight - 权重值 (0-1)\n   */\n  addTarget (target: VFXItem, weight = 1.0): void {\n    const constraintTarget = new ConstraintTarget();\n\n    constraintTarget.target = target;\n    constraintTarget.weight = Math.max(0, Math.min(1, weight));\n    this.targets.push(constraintTarget);\n  }\n\n  /**\n   * 移除约束目标\n   * @param target - 要移除的目标元素\n   */\n  removeTarget (target: VFXItem): void {\n    const index = this.targets.findIndex(ct => ct.target === target);\n\n    if (index !== -1) {\n      this.targets.splice(index, 1);\n    }\n  }\n\n  /**\n   * 清除所有约束目标\n   */\n  clearTargets (): void {\n    this.targets = [];\n  }\n\n  /**\n   * 设置位置偏移\n   * @param x - X 轴偏移\n   * @param y - Y 轴偏移\n   * @param z - Z 轴偏移\n   */\n  setPositionOffset (x: number, y: number, z: number): void {\n    this.positionOffset.set(x, y, z);\n  }\n\n  /**\n   * 设置全局约束权重\n   * @param weight - 权重值 (0-1)，0 表示保持初始位置，1 表示完全跟随目标\n   */\n  setWeight (weight: number): void {\n    this.weight = Math.max(0, Math.min(1, weight));\n  }\n\n  /**\n   * 线性插值\n   * @param start - 起始值\n   * @param end - 结束值\n   * @param t - 插值因子 (0-1)\n   */\n  private lerp (start: number, end: number, t: number): number {\n    return start + (end - start) * t;\n  }\n\n  override fromData (data: PositionConstraintData): void {\n    super.fromData(data);\n\n    // Deserialize all properties\n    this.positionAtRest.copyFrom(data.positionAtRest);\n    this.positionOffset.copyFrom(data.positionOffset);\n    this.weight = data.weight;\n    this.constrainX = data.constrainX;\n    this.constrainY = data.constrainY;\n    this.constrainZ = data.constrainZ;\n\n    this.targets = [];\n    for (const targetData of data.targets) {\n      const constraintTarget = new ConstraintTarget();\n\n      constraintTarget.target = this.engine.findObject(targetData.target);\n      constraintTarget.weight = targetData.weight;\n      this.targets.push(constraintTarget);\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../decorators';\nimport { Component } from './component';\nimport type { Engine } from '../engine';\n\n/**\n * @since 2.1.0\n */\n@effectsClass(spec.DataType.PostProcessVolume)\nexport class PostProcessVolume extends Component {\n\n  @serialize()\n  bloom: spec.Bloom;\n\n  @serialize()\n  vignette: spec.Vignette;\n\n  @serialize()\n  tonemapping: spec.Tonemapping;\n\n  @serialize()\n  colorAdjustments: spec.ColorAdjustments;\n\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.bloom = {\n      threshold: 0,\n      intensity: 0,\n      active: false,\n    };\n\n    this.vignette = {\n      intensity: 0,\n      smoothness: 0,\n      roundness: 0,\n      active: false,\n    };\n\n    this.tonemapping = {\n      active: false,\n    };\n\n    this.colorAdjustments = {\n      brightness: 0,\n      saturation: 0,\n      contrast: 0,\n      active: false,\n    };\n  }\n\n  override onStart (): void {\n    const composition = this.item.composition;\n\n    if (composition) {\n      composition.renderFrame.globalVolume = this;\n    }\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport * as spec from '@galacean/effects-specification';\nimport type { Engine } from '../engine';\nimport { glContext } from '../gl';\nimport type { Maskable } from '../material';\nimport {\n  MaskMode, MaskProcessor, Material, getPreMultiAlpha, setBlendMode, setMaskMode, setSideMode,\n} from '../material';\nimport type { BoundingBoxTriangle, HitTestTriangleParams } from '../plugins';\nimport { MeshCollider } from '../plugins';\nimport type { Renderer } from '../render';\nimport { Geometry } from '../render';\nimport { itemFrag, itemVert } from '../shader';\nimport { Texture } from '../texture';\nimport { RendererComponent } from './renderer-component';\n\n/**\n * 图层元素渲染属性, 经过处理后的 spec.SpriteContent.renderer\n */\nexport interface ItemRenderer extends Required<Omit<spec.RendererOptions, 'texture' | 'shape' | 'anchor' | 'particleOrigin' | 'mask'>> {\n  texture: Texture,\n  mask: number,\n}\n\n// TODO: Add to spec\ninterface MaskableGraphicData extends spec.ComponentData {\n  renderer: spec.RendererOptions,\n  mask?: spec.MaskOptions,\n}\n\n/**\n * @since 2.7.0\n */\nexport class MaskableGraphic extends RendererComponent implements Maskable {\n  interaction?: { behavior: spec.InteractBehavior };\n  renderer: ItemRenderer;\n  geometry: Geometry;\n\n  protected visible = true;\n  protected readonly maskManager: MaskProcessor;\n\n  /**\n   * 用于点击测试的碰撞器\n   */\n  protected meshCollider = new MeshCollider();\n  protected defaultGeometry: Geometry;\n\n  private _color = new Color(1, 1, 1, 1);\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.renderer = {\n      renderMode: spec.RenderMode.MESH,\n      blending: spec.BlendingMode.ALPHA,\n      texture: this.engine.whiteTexture,\n      occlusion: false,\n      transparentOcclusion: false,\n      side: spec.SideMode.DOUBLE,\n      mask: 0,\n    };\n\n    this.defaultGeometry = Geometry.create(this.engine, {\n      attributes: {\n        aPos: {\n          type: glContext.FLOAT,\n          size: 3,\n          data: new Float32Array([\n            -0.5, 0.5, 0, //左上\n            -0.5, -0.5, 0, //左下\n            0.5, 0.5, 0, //右上\n            0.5, -0.5, 0, //右下\n          ]),\n        },\n        aUV: {\n          size: 2,\n          offset: 0,\n          releasable: true,\n          type: glContext.FLOAT,\n          data: new Float32Array([0, 1, 0, 0, 1, 1, 1, 0]),\n        },\n      },\n      indices: { data: new Uint16Array([0, 1, 2, 2, 1, 3]), releasable: true },\n      mode: glContext.TRIANGLES,\n      drawCount: 6,\n    });\n    this.geometry = this.defaultGeometry;\n\n    const material = Material.create(this.engine, {\n      shader: {\n        fragment: itemFrag,\n        vertex: itemVert,\n        shared: true,\n      },\n    });\n\n    this.material = material;\n    this.material.setColor('_Color', new Color(1, 1, 1, 1));\n    this.maskManager = new MaskProcessor(engine);\n\n    this.configureMaterial(this.renderer);\n  }\n\n  /**\n   * 设置当前 Mesh 的可见性。\n   * @param visible - true：可见，false：不可见\n   * @deprecated 2.4.0 Please use enabled instead\n   */\n  setVisible (visible: boolean) {\n    this.visible = visible;\n  }\n\n  /**\n   * 获取当前 Mesh 的可见性。\n   * @deprecated 2.4.0 Please use enabled instead\n   */\n  getVisible (): boolean {\n    return this.visible;\n  }\n\n  /**\n   * 设置当前图层的颜色\n   * > Tips: 透明度也属于颜色的一部分，当有透明度/颜色 K 帧变化时，该 API 会失效\n   * @since 2.4.0\n   * @param color - 颜色值\n   */\n  setColor (color: Color): void;\n  /**\n   * 设置当前图层的颜色\n   * > Tips: 透明度也属于颜色的一部分，当有透明度/颜色 K 帧变化时，该 API 会失效\n   * @since 2.0.0\n   * @param color - 颜色值\n   */\n  setColor (color: spec.vec4): void;\n  setColor (color: spec.vec4 | Color) {\n    if (color instanceof Color) {\n      this._color.copyFrom(color);\n    } else {\n      this._color.setFromArray(color);\n    }\n    this.material.setColor('_Color', this._color);\n  }\n\n  /**\n   * 获取当前图层的颜色\n   * @since 2.5.0\n   */\n  get color () {\n    return this._color;\n  }\n  /**\n   * 设置当前图层的颜色\n   * @since 2.5.0\n   */\n  set color (value: Color) {\n    this.setColor(value);\n  }\n\n  /**\n   * 使用纹理对象设置当前 Mesh 的纹理\n   * @since 2.0.0\n   * @param input - 纹理对象\n   */\n  setTexture (input: Texture): void;\n  /**\n   * 使用资源链接异步设置当前 Mesh 的纹理\n   * @param input - 资料链接\n   * @since 2.3.0\n   */\n  async setTexture (input: string): Promise<void>;\n  async setTexture (input: Texture | string): Promise<void> {\n    let texture: Texture;\n\n    if (typeof input === 'string') {\n      texture = await Texture.fromImage(input, this.item.engine);\n    } else {\n      texture = input;\n    }\n\n    this.renderer.texture = texture;\n    this.material.setTexture('_MainTex', texture);\n  }\n\n  override onUpdate (dt: number): void {\n    for (let i = 0; i < this.materials.length; i++) {\n      const material = this.materials[i];\n\n      material.setVector2('_Size', this.transform.size);\n\n      if (this.renderer.renderMode === spec.RenderMode.BILLBOARD ||\n        this.renderer.renderMode === spec.RenderMode.VERTICAL_BILLBOARD ||\n        this.renderer.renderMode === spec.RenderMode.HORIZONTAL_BILLBOARD\n      ) {\n        material.setVector3('_Scale', this.transform.scale);\n      }\n    }\n  }\n\n  override render (renderer: Renderer) {\n    if (!this.getVisible()) {\n      return;\n    }\n\n    this.maskManager.drawStencilMask(renderer);\n\n    this.draw(renderer);\n  }\n\n  /**\n   * @internal\n   */\n  drawStencilMask (renderer: Renderer) {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n    const previousColorMask = this.material.colorMask;\n\n    this.material.colorMask = false;\n    this.draw(renderer);\n    this.material.colorMask = previousColorMask;\n  }\n\n  override onStart (): void {\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  // TODO 点击测试后续抽象一个 Collider 组件\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | undefined => {\n    const sizeMatrix = Matrix4.fromScale(this.transform.size.x, this.transform.size.y, 1);\n    const worldMatrix = sizeMatrix.premultiply(this.transform.getWorldMatrix());\n    const ui = this.interaction;\n\n    if (force || ui) {\n      this.meshCollider.setGeometry(this.geometry, worldMatrix);\n      const area = this.meshCollider.getBoundingBoxData();\n\n      if (area) {\n        return {\n          behavior: this.interaction?.behavior || 0,\n          type: area.type,\n          triangles: area.area,\n          backfaceCulling: this.renderer.side === spec.SideMode.FRONT,\n        };\n      }\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const boundingBox = this.meshCollider.getBoundingBox();\n\n    return boundingBox;\n  }\n\n  private configureMaterial (renderer: ItemRenderer): Material {\n    const { side, occlusion, blending: blendMode, mask, texture } = renderer;\n    const maskMode = this.maskManager.maskMode;\n    const material = this.material;\n\n    material.blending = true;\n    material.depthTest = true;\n    material.depthMask = occlusion;\n    material.stencilRef = mask !== undefined ? [mask, mask] : undefined;\n\n    setBlendMode(material, blendMode);\n    // 兼容旧数据中模板需要渲染的情况\n    setMaskMode(material, maskMode);\n    setSideMode(material, side);\n\n    material.shader.shaderData.properties = '_MainTex(\"_MainTex\",2D) = \"white\" {}';\n    material.setVector4('_TexOffset', new Vector4(0, 0, 1, 1));\n    material.setTexture('_MainTex', texture);\n\n    const preMultiAlpha = getPreMultiAlpha(blendMode);\n    const texParams = new Vector4();\n\n    texParams.x = renderer.occlusion ? +(renderer.transparentOcclusion) : 1;\n    texParams.y = preMultiAlpha;\n    texParams.z = renderer.renderMode;\n    texParams.w = maskMode;\n    material.setVector4('_TexParams', texParams);\n\n    if (texParams.x === 0 || (this.maskManager.alphaMaskEnabled)) {\n      material.enableMacro('ALPHA_CLIP');\n    } else {\n      material.disableMacro('ALPHA_CLIP');\n    }\n\n    return material;\n  }\n\n  private draw (renderer: Renderer) {\n    for (let i = 0; i < this.materials.length; i++) {\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.materials[i], i);\n    }\n  }\n\n  override fromData (data: unknown): void {\n    super.fromData(data);\n\n    const maskableGraphicData = (data as MaskableGraphicData);\n    const renderer = maskableGraphicData.renderer ?? {};\n\n    const maskOptions = maskableGraphicData.mask;\n\n    if (maskOptions) {\n      this.maskManager.setMaskOptions(maskOptions);\n    }\n\n    this.renderer = {\n      renderMode: renderer.renderMode ?? spec.RenderMode.MESH,\n      blending: renderer.blending ?? spec.BlendingMode.ALPHA,\n      texture: renderer.texture ? this.engine.findObject<Texture>(renderer.texture) : this.engine.whiteTexture,\n      occlusion: !!renderer.occlusion,\n      transparentOcclusion: !!renderer.transparentOcclusion || (this.maskManager.maskMode === MaskMode.MASK),\n      side: renderer.side ?? spec.SideMode.DOUBLE,\n      mask: this.maskManager.getRefValue(),\n    };\n\n    this.configureMaterial(this.renderer);\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport type { Engine } from '../engine';\nimport type { Maskable, MaterialProps } from '../material';\nimport { MaskMode, MaskProcessor, getPreMultiAlpha, setBlendMode, setSideMode } from '../material';\nimport { Material, setMaskMode } from '../material';\nimport type { BoundingBoxTriangle, HitTestTriangleParams, Polygon, ShapePath, StrokeAttributes } from '../plugins';\nimport { MeshCollider } from '../plugins';\nimport { GraphicsPath, StarType, buildLine } from '../plugins';\nimport type { Renderer } from '../render';\nimport { GLSLVersion, Geometry } from '../render';\nimport type { GradientValue } from '../math';\nimport { createValueGetter } from '../math';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport { RendererComponent } from './renderer-component';\nimport type { Texture } from '../texture/texture';\nimport { glContext } from '../gl';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport vert from '../plugins/shape/shaders/shape.vert.glsl';\nimport frag from '../plugins/shape/shaders/shape.frag.glsl';\nimport { Matrix3 } from '@galacean/effects-math/es/core/matrix3';\nimport type { ItemRenderer } from './base-render-component';\n\ntype Paint = SolidPaint | GradientPaint | TexturePaint;\n\nexport interface SolidPaint {\n  type: spec.FillType.Solid,\n  color: Color,\n}\n\nexport interface GradientPaint {\n  type: spec.FillType.GradientLinear | spec.FillType.GradientAngular | spec.FillType.GradientRadial,\n  gradientStops: GradientValue,\n  startPoint: Vector2,\n  endPoint: Vector2,\n}\n\nexport interface TextureTransform {\n  offset: Vector2,\n  rotation: number,\n  scale: Vector2,\n}\n\nexport interface TexturePaint {\n  type: spec.FillType.Texture,\n  texture: Texture,\n  scaleMode: TexturePaintScaleMode,\n  scalingFactor: number,\n  opacity: number,\n  textureTransform: TextureTransform,\n}\n\nexport enum TexturePaintScaleMode {\n  Fill,\n  Fit,\n  Crop,\n  Tile\n}\n\ninterface ShapeAttributes {\n  /**\n   * 矢量图形类型\n   */\n  type: spec.ShapePrimitiveType,\n}\n\n/**\n * 自定义图形参数\n */\ninterface CustomShapeAttribute extends ShapeAttributes {\n  type: spec.ShapePrimitiveType.Custom,\n  /**\n   * 路径点\n   */\n  points: Vector2[],\n  /**\n   * 入射控制点\n   */\n  easingIns: Vector2[],\n  /**\n   * 入射控制点\n   */\n  easingOuts: Vector2[],\n  /**\n   * 自定义形状\n   */\n  shapes: spec.CustomShape[],\n}\n\n/**\n * 椭圆组件参数\n */\nexport interface EllipseAttribute extends ShapeAttributes {\n  type: spec.ShapePrimitiveType.Ellipse,\n  /**\n   * x 轴半径\n   * -- TODO 后续完善类型\n   * -- TODO 可以看一下用xRadius/yRadius 还是 width/height\n   */\n  xRadius: number,\n  /**\n   * y 轴半径\n   */\n  yRadius: number,\n}\n\n/**\n * 矩形参数\n */\nexport interface RectangleAttribute extends ShapeAttributes {\n  /**\n   * 宽度\n   */\n  width: number,\n  /**\n   * 高度\n   */\n  height: number,\n  /**\n   * 角点元素\n   */\n  roundness: number,\n}\n\n/**\n * 星形参数\n */\nexport interface StarAttribute extends ShapeAttributes {\n  /**\n   * 顶点数 - 内外顶点同数\n   */\n  pointCount: number,\n  /**\n   * 内径\n   */\n  innerRadius: number,\n  /**\n   * 外径\n   */\n  outerRadius: number,\n  /**\n   * 内径点圆度\n   */\n  innerRoundness: number,\n  /**\n   * 外径点圆度\n   */\n  outerRoundness: number,\n}\n\n/**\n * 多边形参数\n */\nexport interface PolygonAttribute extends ShapeAttributes {\n  /**\n   * 顶点数\n   */\n  pointCount: number,\n  /**\n   * 外切圆半径\n   */\n  radius: number,\n  /**\n   * 角点圆度\n   */\n  roundness: number,\n}\n\n/**\n * 图形组件\n * @since 2.1.0\n */\n@effectsClass('ShapeComponent')\nexport class ShapeComponent extends RendererComponent implements Maskable {\n  private shapeDirty = true;\n  private materialDirty = true;\n  private graphicsPath = new GraphicsPath();\n\n  private fills: Paint[] = [];\n  private strokeAttributes: StrokeAttributes = {\n    width: 1,\n    alignment: 0.5,\n    cap: spec.LineCap.Butt,\n    join: spec.LineJoin.Miter,\n    miterLimit: 10,\n  };\n\n  private strokeWidth = 1;\n  private strokeCap = spec.LineCap.Butt;\n  private strokeJoin = spec.LineJoin.Miter;\n  private strokes: Paint[] = [];\n  private shapeAttributes: ShapeAttributes;\n\n  /**\n   * 用于点击测试的碰撞器\n   */\n  private meshCollider = new MeshCollider();\n  private rendererOptions: ItemRenderer;\n  private geometry: Geometry;\n  private fillMaterials: Material[] = [];\n  private strokeMaterials: Material[] = [];\n  private readonly maskManager: MaskProcessor;\n\n  get shape () {\n    return this.shapeAttributes;\n  }\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.rendererOptions = {\n      renderMode: spec.RenderMode.MESH,\n      blending: spec.BlendingMode.ALPHA,\n      texture: this.engine.whiteTexture,\n      occlusion: false,\n      transparentOcclusion: false,\n      side: spec.SideMode.DOUBLE,\n      mask: 0,\n    };\n\n    this.maskManager = new MaskProcessor(this.engine);\n\n    // Create Shape Attrributes\n    //-------------------------------------------------------------------------\n\n    const gradientStrokeFill: SolidPaint = {\n      type: spec.FillType.Solid,\n      color: new Color(1, 1, 1, 1),\n    };\n\n    this.strokes.push(gradientStrokeFill);\n\n    const gradientLayerFill: SolidPaint = {\n      type: spec.FillType.Solid,\n      color: new Color(1, 1, 1, 1),\n    };\n\n    this.fills.push(gradientLayerFill);\n\n    this.shapeAttributes = {\n      type: spec.ShapePrimitiveType.Custom,\n      points: [],\n      easingIns: [],\n      easingOuts: [],\n      shapes: [],\n    } as CustomShapeAttribute;\n\n    // Create Geometry\n    //-------------------------------------------------------------------------\n\n    this.geometry = Geometry.create(this.engine, {\n      attributes: {\n        aPos: {\n          type: glContext.FLOAT,\n          size: 3,\n          data: new Float32Array([\n            -0.5, 0.5, 0, //左上\n            -0.5, -0.5, 0, //左下\n            0.5, 0.5, 0, //右上\n            0.5, -0.5, 0, //右下\n          ]),\n        },\n        aUV: {\n          size: 2,\n          offset: 0,\n          releasable: true,\n          type: glContext.FLOAT,\n          data: new Float32Array([0, 1, 0, 0, 1, 1, 1, 0]),\n        },\n      },\n      indices: { data: new Uint16Array([0, 1, 2, 2, 1, 3]), releasable: true },\n      mode: glContext.TRIANGLES,\n      drawCount: 6,\n    });\n\n    this.geometry.subMeshes.push({\n      offset: 0,\n      indexCount: 0,\n      vertexCount: 0,\n    }, {\n      offset: 0,\n      indexCount: 0,\n      vertexCount: 0,\n    });\n  }\n\n  override onStart (): void {\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  override onUpdate (dt: number): void {\n    if (this.shapeDirty) {\n      this.buildPath(this.shapeAttributes);\n      this.buildGeometryFromPath(this.graphicsPath.shapePath);\n      this.shapeDirty = false;\n    }\n\n    if (this.materialDirty) {\n      this.updateMaterials();\n      this.materialDirty = false;\n    }\n  }\n\n  override render (renderer: Renderer) {\n    this.maskManager.drawStencilMask(renderer);\n\n    this.draw(renderer);\n  }\n\n  /**\n   * @internal\n   */\n  drawStencilMask (renderer: Renderer) {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n\n    let previousColorMask = false;\n\n    for (let i = 0; i < this.fillMaterials.length; i++) {\n      previousColorMask = this.fillMaterials[i].colorMask;\n      this.fillMaterials[i].colorMask = false;\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.fillMaterials[i], 0);\n      this.fillMaterials[i].colorMask = previousColorMask;\n    }\n\n    for (let i = 0; i < this.strokeMaterials.length; i++) {\n      previousColorMask = this.strokeMaterials[i].colorMask;\n      this.strokeMaterials[i].colorMask = false;\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.strokeMaterials[i], 1);\n      this.strokeMaterials[i].colorMask = previousColorMask;\n    }\n  }\n\n  private draw (renderer: Renderer) {\n    for (let i = 0; i < this.fillMaterials.length; i++) {\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.fillMaterials[i], 0);\n    }\n\n    for (let i = 0; i < this.strokeMaterials.length; i++) {\n      renderer.drawGeometry(this.geometry, this.transform.getWorldMatrix(), this.strokeMaterials[i], 1);\n    }\n  }\n\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | undefined => {\n    const sizeMatrix = Matrix4.fromScale(this.transform.size.x, this.transform.size.y, 1);\n    const worldMatrix = sizeMatrix.premultiply(this.transform.getWorldMatrix());\n\n    if (force) {\n      this.meshCollider.setGeometry(this.geometry, worldMatrix);\n      const area = this.meshCollider.getBoundingBoxData();\n\n      if (area) {\n        return {\n          behavior: 0,\n          type: area.type,\n          triangles: area.area,\n          backfaceCulling: this.rendererOptions.side === spec.SideMode.FRONT,\n        };\n      }\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle {\n    const worldMatrix = this.transform.getWorldMatrix();\n\n    this.meshCollider.setGeometry(this.geometry, worldMatrix);\n    const boundingBox = this.meshCollider.getBoundingBox();\n\n    return boundingBox;\n  }\n\n  private buildGeometryFromPath (shapePath: ShapePath) {\n    const shapePrimitives = shapePath.shapePrimitives;\n    const vertices: number[] = [];\n    const indices: number[] = [];\n\n    // Triangulate shapePrimitives, build fill and stroke shape geometry\n    if (this.fills.length > 0) {\n      for (const shapePrimitive of shapePrimitives) {\n        const shape = shapePrimitive.shape;\n        const points: number[] = [];\n        const indexOffset = indices.length;\n        const vertOffset = vertices.length / 2;\n\n        shape.build(points);\n        shape.triangulate(points, vertices, vertOffset, indices, indexOffset);\n      }\n    }\n\n    const fillIndexCount = indices.length;\n\n    if (this.strokes.length > 0) {\n      for (const shapePrimitive of shapePrimitives) {\n        const shape = shapePrimitive.shape;\n        const points: number[] = [];\n        const indexOffset = indices.length;\n        const vertOffset = vertices.length / 2;\n        const lineStyle = this.strokeAttributes;\n\n        lineStyle.cap = this.strokeCap;\n        lineStyle.join = this.strokeJoin;\n        lineStyle.width = this.strokeWidth;\n\n        let close = true;\n\n        if (this.shapeAttributes.type === spec.ShapePrimitiveType.Custom) {\n          close = (shape as Polygon).closePath;\n        }\n\n        shape.build(points);\n        buildLine(points, lineStyle, false, close, vertices, 2, vertOffset, indices, indexOffset);\n      }\n    }\n\n    const strokeIndexCount = indices.length - fillIndexCount;\n    const vertexCount = vertices.length / 2;\n\n    // Get the current attribute and index arrays from the geometry, avoiding re-creation\n    let positionArray = this.geometry.getAttributeData('aPos');\n    let uvArray = this.geometry.getAttributeData('aUV');\n    let indexArray = this.geometry.getIndexData();\n\n    if (!positionArray || positionArray.length < vertexCount * 3) {\n      positionArray = new Float32Array(vertexCount * 3);\n    }\n\n    if (!uvArray || uvArray.length < vertexCount * 2) {\n      uvArray = new Float32Array(vertexCount * 2);\n    }\n\n    if (!indexArray || indexArray.length < indices.length) {\n      indexArray = new Uint16Array(indices.length);\n    }\n\n    // Set position attribute array, calculate bounding box for uv scaling\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n\n    for (let i = 0; i < vertexCount; i++) {\n      const pointsOffset = i * 3;\n      const positionArrayOffset = i * 2;\n\n      const x = vertices[positionArrayOffset];\n      const y = vertices[positionArrayOffset + 1];\n\n      positionArray[pointsOffset] = x;\n      positionArray[pointsOffset + 1] = y;\n      positionArray[pointsOffset + 2] = 0;\n\n      minX = Math.min(minX, x);\n      minY = Math.min(minY, y);\n      maxX = Math.max(maxX, x);\n      maxY = Math.max(maxY, y);\n    }\n\n    // Set uv attribute array\n    const sizeX = maxX - minX;\n    const sizeY = maxY - minY;\n\n    for (let i = 0; i < vertexCount; i++) {\n      const pointsOffset = i * 3;\n      const uvOffset = i * 2;\n\n      uvArray[uvOffset] = (positionArray[pointsOffset] - minX) / sizeX;\n      uvArray[uvOffset + 1] = (positionArray[pointsOffset + 1] - minY) / sizeY;\n    }\n\n    // Set index array\n    indexArray.set(indices);\n\n    // Rewrite to geometry\n    this.geometry.setAttributeData('aPos', positionArray);\n    this.geometry.setAttributeData('aUV', uvArray);\n    this.geometry.setIndexData(indexArray);\n    this.geometry.setDrawCount(indices.length);\n\n    const u16Size = 2;\n    const fillSubMesh = this.geometry.subMeshes[0];\n    const strokeSubMesh = this.geometry.subMeshes[1];\n\n    fillSubMesh.indexCount = fillIndexCount;\n    strokeSubMesh.offset = fillIndexCount * u16Size;\n    strokeSubMesh.indexCount = strokeIndexCount;\n  }\n\n  private buildPath (shapeAttribute: ShapeAttributes) {\n    this.graphicsPath.clear();\n\n    switch (shapeAttribute.type) {\n      case spec.ShapePrimitiveType.Custom: {\n        const customShapeAtribute = this.shapeAttributes as CustomShapeAttribute;\n        const points = customShapeAtribute.points;\n        const easingIns = customShapeAtribute.easingIns;\n        const easingOuts = customShapeAtribute.easingOuts;\n\n        for (const shape of customShapeAtribute.shapes) {\n          const indices = shape.indexes;\n          const startPoint = points[indices[0].point];\n\n          this.graphicsPath.moveTo(startPoint.x, startPoint.y);\n\n          for (let i = 1; i < indices.length; i++) {\n            const pointIndex = indices[i];\n            const lastPointIndex = indices[i - 1];\n            const point = points[pointIndex.point];\n            const lastPoint = points[lastPointIndex.point];\n            const control1 = easingOuts[lastPointIndex.easingOut];\n            const control2 = easingIns[pointIndex.easingIn];\n\n            this.graphicsPath.bezierCurveTo(control1.x + lastPoint.x, control1.y + lastPoint.y, control2.x + point.x, control2.y + point.y, point.x, point.y, 1);\n          }\n\n          if (shape.close) {\n            const pointIndex = indices[0];\n            const lastPointIndex = indices[indices.length - 1];\n            const point = points[pointIndex.point];\n            const lastPoint = points[lastPointIndex.point];\n            const control1 = easingOuts[lastPointIndex.easingOut];\n            const control2 = easingIns[pointIndex.easingIn];\n\n            this.graphicsPath.bezierCurveTo(control1.x + lastPoint.x, control1.y + lastPoint.y, control2.x + point.x, control2.y + point.y, point.x, point.y, 1);\n            this.graphicsPath.closePath();\n          }\n        }\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Ellipse: {\n        const ellipseData = shapeAttribute as EllipseAttribute;\n\n        this.graphicsPath.ellipse(0, 0, ellipseData.xRadius, ellipseData.yRadius);\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Rectangle: {\n        const rectangleData = shapeAttribute as RectangleAttribute;\n\n        this.graphicsPath.rect(-rectangleData.width / 2, -rectangleData.height / 2, rectangleData.width, rectangleData.height, rectangleData.roundness);\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Star: {\n        const starData = shapeAttribute as StarAttribute;\n\n        this.graphicsPath.polyStar(starData.pointCount, starData.outerRadius, starData.innerRadius, starData.outerRoundness, starData.innerRoundness, StarType.Star);\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Polygon: {\n        const polygonData = shapeAttribute as PolygonAttribute;\n\n        this.graphicsPath.polyStar(polygonData.pointCount, polygonData.radius, polygonData.radius, polygonData.roundness, polygonData.roundness, StarType.Polygon);\n\n        break;\n      }\n    }\n  }\n\n  private updateMaterials () {\n    for (let i = 0; i < this.fills.length; i++) {\n      this.updatePaintMaterial(this.fillMaterials[i], this.fills[i]);\n    }\n\n    for (let i = 0; i < this.strokes.length; i++) {\n      this.updatePaintMaterial(this.strokeMaterials[i], this.strokes[i]);\n    }\n  }\n\n  private updatePaintMaterial (material: Material, paint: Paint) {\n    material.setFloat('_FillType', paint.type);\n\n    if (paint.type === spec.FillType.Solid) {\n      material.color = paint.color;\n    } else if (paint.type === spec.FillType.GradientLinear || paint.type === spec.FillType.GradientAngular || paint.type === spec.FillType.GradientRadial) {\n      this.updateGradientMaterial(material, paint.gradientStops, paint.startPoint, paint.endPoint);\n    } else if (paint.type === spec.FillType.Texture) {\n      material.setInt('_ImageScaleMode', paint.scaleMode);\n      material.setVector2('_ImageSize', new Vector2(paint.texture.getWidth(), paint.texture.getHeight()));\n\n      const boundingBox = this.getBoundingBox();\n      const topRight = boundingBox.area[0].p1;\n      const bottomLeft = boundingBox.area[1].p2;\n\n      material.setVector2('_DestSize', new Vector2(topRight.x - bottomLeft.x, topRight.y - bottomLeft.y));\n      material.setFloat('_ImageOpacity', paint.opacity);\n      material.setFloat('_ImageScalingFactor', paint.scalingFactor);\n      material.setTexture('_ImageTex', paint.texture);\n\n      const transform = paint.textureTransform;\n\n      material.setMatrix3('_TextureTransform', new Matrix3()\n        .scale(transform.scale.x, transform.scale.y)\n        .rotate(transform.rotation)\n        .translate(transform.offset.x, transform.offset.y)\n        .invert()\n      );\n    }\n  }\n\n  private updateGradientMaterial (material: Material, gradient: GradientValue, startPoint: Vector2, endPoint: Vector2) {\n    const gradientColors: Vector4[] = [];\n    const gradientStops: number[] = [];\n\n    for (const stop of gradient.stops) {\n      const stopColor = stop.color;\n\n      gradientColors.push(new Vector4(stopColor.r, stopColor.g, stopColor.b, stopColor.a));\n      gradientStops.push(stop.time);\n    }\n\n    material.setVector4Array('_Colors', gradientColors);\n    material.setFloats('_Stops', gradientStops);\n    material.setInt('_StopsCount', gradientStops.length);\n    material.setVector2('_StartPoint', startPoint);\n    material.setVector2('_EndPoint', endPoint);\n  }\n\n  private createMaterialFromRendererOptions (rendererOptions: ItemRenderer): Material {\n    const materialProps: MaterialProps = {\n      shader: {\n        vertex: vert,\n        fragment: frag,\n        glslVersion: GLSLVersion.GLSL1,\n      },\n    };\n    const material = Material.create(this.engine, materialProps);\n\n    const renderer = rendererOptions;\n    const { side, occlusion, blending: blendMode, mask, texture } = renderer;\n    const maskMode = this.maskManager.maskMode;\n\n    material.blending = true;\n    material.depthTest = true;\n    material.depthMask = occlusion;\n    material.stencilRef = mask !== undefined ? [mask, mask] : undefined;\n\n    setBlendMode(material, blendMode);\n    // 兼容旧数据中模板需要渲染的情况\n    setMaskMode(material, maskMode);\n    setSideMode(material, side);\n\n    material.shader.shaderData.properties = '_ImageTex(\"_ImageTex\",2D) = \"white\" {}';\n    material.setVector4('_TexOffset', new Vector4(0, 0, 1, 1));\n    material.setTexture('_ImageTex', texture);\n\n    const preMultiAlpha = getPreMultiAlpha(blendMode);\n    const texParams = new Vector4();\n\n    texParams.x = renderer.occlusion ? +(renderer.transparentOcclusion) : 1;\n    texParams.y = preMultiAlpha;\n    texParams.z = renderer.renderMode;\n    texParams.w = maskMode;\n    material.setVector4('_TexParams', texParams);\n\n    if (texParams.x === 0 || (this.maskManager.alphaMaskEnabled)) {\n      material.enableMacro('ALPHA_CLIP');\n    } else {\n      material.disableMacro('ALPHA_CLIP');\n    }\n\n    return material;\n  }\n\n  override fromData (data: spec.ShapeComponentData): void {\n    super.fromData(data);\n    this.shapeDirty = true;\n\n    if (data.mask) {\n      this.maskManager.setMaskOptions(data.mask);\n    }\n\n    const renderer = data.renderer ?? {};\n\n    this.rendererOptions = {\n      renderMode: spec.RenderMode.MESH,\n      blending: renderer.blending ?? spec.BlendingMode.ALPHA,\n      texture: renderer.texture ? this.engine.findObject<Texture>(renderer.texture) : this.engine.whiteTexture,\n      occlusion: !!renderer.occlusion,\n      transparentOcclusion: !!renderer.transparentOcclusion || (this.maskManager.maskMode === MaskMode.MASK),\n      side: renderer.side ?? spec.SideMode.DOUBLE,\n      mask: this.maskManager.getRefValue(),\n    };\n\n    this.strokeCap = data.strokeCap ?? spec.LineCap.Butt;\n    this.strokeWidth = data.strokeWidth ?? 1;\n    this.strokeJoin = data.strokeJoin ?? spec.LineJoin.Miter;\n\n    this.fills.length = 0;\n    this.fillMaterials.length = 0;\n    for (const fill of data.fills) {\n      this.fills.push(this.createPaint(fill));\n      this.fillMaterials.push(this.createMaterialFromRendererOptions(this.rendererOptions));\n    }\n\n    this.strokes.length = 0;\n    this.strokeMaterials.length = 0;\n    for (const stroke of data.strokes) {\n      this.strokes.push(this.createPaint(stroke));\n      this.strokeMaterials.push(this.createMaterialFromRendererOptions(this.rendererOptions));\n    }\n\n    this.materials = [...this.fillMaterials, ...this.strokeMaterials];\n\n    switch (data.type) {\n      case spec.ShapePrimitiveType.Custom: {\n        const customShapeData = data as spec.CustomShapeData;\n        const customShapeAttribute: CustomShapeAttribute = {\n          type: spec.ShapePrimitiveType.Custom,\n          points: [],\n          easingIns: [],\n          easingOuts: [],\n          shapes: [],\n        };\n\n        for (const point of customShapeData.points) {\n          customShapeAttribute.points.push(new Vector2(point.x, point.y));\n        }\n        for (const easingIn of customShapeData.easingIns) {\n          customShapeAttribute.easingIns.push(new Vector2(easingIn.x, easingIn.y));\n        }\n        for (const easingOut of customShapeData.easingOuts) {\n          customShapeAttribute.easingOuts.push(new Vector2(easingOut.x, easingOut.y));\n        }\n        customShapeAttribute.shapes = customShapeData.shapes;\n\n        this.shapeAttributes = customShapeAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Ellipse: {\n        const ellipseData = data as spec.EllipseData;\n        const ellipseAttribute: EllipseAttribute = {\n          type: spec.ShapePrimitiveType.Ellipse,\n          xRadius: ellipseData.xRadius,\n          yRadius: ellipseData.yRadius,\n        };\n\n        this.shapeAttributes = ellipseAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Rectangle: {\n        const rectangleData = data as spec.RectangleData;\n        const rectangleAttribute: RectangleAttribute = {\n          type: spec.ShapePrimitiveType.Rectangle,\n          width: rectangleData.width,\n          height: rectangleData.height,\n          roundness: rectangleData.roundness,\n        };\n\n        this.shapeAttributes = rectangleAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Star: {\n        const starData = data as spec.StarData;\n        const starAttribute: StarAttribute = {\n          type: spec.ShapePrimitiveType.Star,\n          pointCount: starData.pointCount,\n          innerRadius: starData.innerRadius,\n          outerRadius: starData.outerRadius,\n          innerRoundness: starData.innerRoundness,\n          outerRoundness: starData.outerRoundness,\n        };\n\n        this.shapeAttributes = starAttribute;\n\n        break;\n      }\n      case spec.ShapePrimitiveType.Polygon: {\n        const polygonData = data as spec.PolygonData;\n        const polygonAttribute: PolygonAttribute = {\n          type: spec.ShapePrimitiveType.Polygon,\n          pointCount: polygonData.pointCount,\n          radius: polygonData.radius,\n          roundness: polygonData.roundness,\n        };\n\n        this.shapeAttributes = polygonAttribute;\n\n        break;\n      }\n    }\n  }\n\n  private createPaint (paintData: spec.PaintData): Paint {\n    let paint: Paint;\n\n    switch (paintData.type) {\n      case spec.FillType.Solid: {\n        paint = {\n          type: paintData.type,\n          color: new Color().copyFrom(paintData.color),\n        };\n\n        break;\n      }\n      case spec.FillType.GradientLinear:\n      case spec.FillType.GradientAngular:\n      case spec.FillType.GradientRadial: {\n        paint = {\n          type: paintData.type,\n          gradientStops: createValueGetter(paintData.gradientStops) as GradientValue,\n          startPoint: new Vector2().copyFrom(paintData.startPoint),\n          endPoint: new Vector2().copyFrom(paintData.endPoint),\n        };\n\n        break;\n      }\n      case spec.FillType.Texture: {\n\n        const textureTransform = {\n          offset: { x: 0, y: 0 },\n          rotation: 0,\n          scale: { x: 1, y: 1 },\n          ...(paintData.textureTransform ?? {}),\n        };\n\n        paint = {\n          type: paintData.type,\n          texture: this.engine.findObject<Texture>(paintData.texture),\n          scaleMode: paintData.scaleMode,\n          scalingFactor: paintData.scalingFactor ?? 1,\n          opacity: paintData.opacity ?? 1,\n          textureTransform: {\n            offset: new Vector2().copyFrom(textureTransform.offset),\n            rotation: textureTransform.rotation,\n            scale: new Vector2().copyFrom(textureTransform.scale),\n          },\n        };\n\n        break;\n      }\n    }\n\n    return paint;\n  }\n\n  override onApplyAnimationProperties (): void {\n    this.shapeDirty = true;\n    this.materialDirty = true;\n  }\n}","import { effectsClass, serialize } from '../decorators';\nimport { Component } from './component';\nimport { EffectComponent } from './effect-component';\n\n@effectsClass('Fake3DComponent')\nexport class Fake3DComponent extends Component {\n  @serialize()\n  loop = false;\n\n  @serialize()\n  amountOfMotion = 1.0;\n\n  @serialize()\n  animationLength = 2.0;\n\n  @serialize()\n  mode = Fake3DAnimationMode.Linear;\n\n  @serialize()\n  startPositionX = 0;\n  @serialize()\n  startPositionY = 0;\n  @serialize()\n  startPositionZ = 0;\n\n  @serialize()\n  endPositionX = 0;\n  @serialize()\n  endPositionY = 0;\n  @serialize()\n  endPositionZ = 0;\n\n  @serialize()\n  amplitudeX = 0;\n  @serialize()\n  amplitudeY = 0;\n  @serialize()\n  amplitudeZ = 0;\n\n  @serialize()\n  phaseX = 0;\n  @serialize()\n  phaseY = 0;\n  @serialize()\n  phaseZ = 0;\n\n  effectComponent: EffectComponent;\n\n  override onStart (): void {\n    this.effectComponent = this.item.getComponent(EffectComponent);\n  }\n\n  override onUpdate (dt: number): void {\n    this.updateFake3D();\n  }\n\n  updateFake3D () {\n    if (!this.effectComponent) {\n      return;\n    }\n\n    const time = this.item.time % this.animationLength / this.animationLength;\n\n    let _PosX = 0;\n    let _PosY = 0;\n    let _PosZ = 0;\n\n    switch (this.mode) {\n      case Fake3DAnimationMode.Circular:{\n        const PI = Math.PI;\n\n        _PosX = Math.sin(2.0 * PI * (time + this.phaseX)) * this.amplitudeX;\n        _PosY = Math.sin(2.0 * PI * (time + this.phaseY)) * this.amplitudeY;\n        _PosZ = Math.sin(2.0 * PI * (time + this.phaseZ)) * this.amplitudeZ;\n\n        break;\n      }\n      case Fake3DAnimationMode.Linear:{\n        let localTime = time;\n\n        if (this.loop) {\n          if (localTime > 0.5) {\n            localTime = 1 - localTime;\n          }\n\n          localTime *= 2;\n        }\n\n        _PosX = this.startPositionX * (1 - localTime) + localTime * this.endPositionX;\n        _PosY = this.startPositionY * (1 - localTime) + localTime * this.endPositionY;\n        _PosZ = this.startPositionZ * (1 - localTime) + localTime * this.endPositionZ;\n\n        break;\n      }\n    }\n\n    const material = this.effectComponent.material;\n\n    material.setFloat('_PosX', _PosX * this.amountOfMotion);\n    material.setFloat('_PosY', _PosY * this.amountOfMotion);\n    material.setFloat('_PosZ', _PosZ * this.amountOfMotion);\n  }\n}\n\nexport enum Fake3DAnimationMode {\n  Circular,\n  Linear\n}","import * as spec from '@galacean/effects-specification';\nimport { Component } from '../../components';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\n\n@effectsClass(spec.DataType.CameraController)\nexport class CameraController extends Component {\n  private options: CameraControllerOptions;\n\n  constructor (\n    engine: Engine,\n    props?: spec.CameraContent,\n  ) {\n    super(engine);\n\n    if (props) {\n      this.fromData(props);\n    }\n  }\n\n  override onUpdate () {\n    if (this.item.composition && this.item.transform.getValid()) {\n      const camera = this.item.composition.camera;\n\n      camera.near = this.options.near;\n      camera.far = this.options.far;\n      camera.fov = this.options.fov;\n      camera.clipMode = this.options.clipMode;\n\n      camera.transform.parentTransform = this.transform.parentTransform;\n      camera.position = this.transform.position;\n      // TODO 修正 GE 四元数旋转共轭问题\n      camera.setQuat(this.transform.getQuaternion().clone().conjugate());\n    }\n  }\n\n  override fromData (data: spec.CameraContent): void {\n    super.fromData(data);\n\n    this.options = data.options;\n  }\n}\n\ninterface CameraControllerOptions {\n  fov: number,\n  far: number,\n  near: number,\n  clipMode?: spec.CameraClipMode,\n  aspect?: number,\n}\n","function _get_prototype_of(o) {\n    _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n\n    return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n    return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n    var _cache = typeof Map === \"function\" ? new Map() : undefined;\n    _wrap_native_super = function(Class) {\n        if (Class === null || !_is_native_function(Class)) return Class;\n        if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n        if (typeof _cache !== \"undefined\") {\n            if (_cache.has(Class)) return _cache.get(Class);\n            _cache.set(Class, Wrapper);\n        }\n\n        function Wrapper() {\n            return _construct(Class, arguments, _get_prototype_of(this).constructor);\n        }\n        Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n        return _set_prototype_of(Wrapper, Class);\n    };\n\n    return _wrap_native_super(Class);\n}\nexport { _wrap_native_super as _ };\n","import { Plugin } from '../plugin';\n\nexport class CameraVFXItemLoader extends Plugin {\n}\n","import type { Matrix4, Ray, TriangleLike, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type * as spec from '@galacean/effects-specification';\nimport type { VFXItem } from '../../vfx-item';\nimport type { Composition } from '../../composition';\n\nexport enum HitTestType {\n  triangle = 1,\n  box = 2,\n  sphere = 3,\n  custom = 4,\n}\n\nexport interface BoundingBoxData {\n  type: HitTestType,\n  area: (TriangleLike | Record<string, Vector3>)[],\n}\n\nexport interface BoundingBoxTriangle extends BoundingBoxData {\n  type: HitTestType.triangle,\n  area: TriangleLike[],\n}\n\nexport interface BoundingBoxSphere extends BoundingBoxData {\n  type: HitTestType.sphere,\n  area: {\n    center: Vector3,\n    size: Vector3,\n  }[],\n}\n\nexport interface HitTestTriangleParams {\n  type: HitTestType.triangle,\n  triangles: TriangleLike[],\n  backfaceCulling?: boolean,\n  behavior?: spec.InteractBehavior,\n}\n\nexport interface HitTestBoxParams {\n  type: HitTestType.box,\n  center: Vector3,\n  size: Vector3,\n  behavior?: spec.InteractBehavior,\n}\n\nexport interface HitTestSphereParams {\n  type: HitTestType.sphere,\n  center: Vector3,\n  radius: number,\n  behavior?: spec.InteractBehavior,\n}\n\nexport interface HitTestCustomParams {\n  type: HitTestType.custom,\n  collect (ray: Ray, pointInCanvas: Vector2): Vector3[] | void,\n  behavior?: spec.InteractBehavior,\n}\n\nexport type Region = {\n  name: string,\n  id: string,\n  position: Vector3,\n  behavior?: spec.InteractBehavior,\n  parentId?: string,\n  hitPositions: Vector3[],\n  item: VFXItem,\n  composition: Composition,\n};\n\nexport type HitTestParams = {\n  camera: {\n    position: Vector3,\n    direction: Vector3,\n    viewProjection: Matrix4,\n  },\n  x: number,\n  y: number,\n  inRect: (position: Vector3, width: number, height: number) => boolean,\n};\n\nexport class PointerEventData {\n  position = new Vector2();\n  delta = new Vector2();\n  pointerCurrentRaycast: RaycastResult = new RaycastResult();\n}\n\nexport class RaycastResult {\n  point: Vector3 | null = null;\n  item: VFXItem | null = null;\n}","import type { Composition } from '../../composition';\nimport type { Engine } from '../../engine';\nimport type { Disposable } from '../../utils';\nimport { addItem, isSimulatorCellPhone, logger, removeItem } from '../../utils';\nimport { PointerEventData, type Region } from './click-handler';\n\nexport const EVENT_TYPE_CLICK = 'click';\nexport const EVENT_TYPE_TOUCH_START = 'touchstart';\nexport const EVENT_TYPE_TOUCH_MOVE = 'touchmove';\nexport const EVENT_TYPE_TOUCH_END = 'touchend';\n\nexport type TouchEventType = {\n  x: number,\n  y: number,\n  vx: number,\n  vy: number,\n  ts: number,\n  dx: number,\n  dy: number,\n  width: number,\n  height: number,\n  origin: Event,\n};\n\nexport type TouchParams = {\n  clientX: number,\n  clientY: number,\n  target: EventTarget,\n};\n\nexport enum PointerEventType {\n  PointerDown,\n  PointerUp,\n  PointerMove\n}\n\nexport class EventSystem implements Disposable {\n  enabled = true;\n  skipPointerMovePicking = true;\n\n  private handlers: Record<string, ((event: TouchEventType) => void)[]> = {};\n  private nativeHandlers: Record<string, (event: Event) => void> = {};\n  private target: HTMLCanvasElement | null = null;\n\n  constructor (\n    public engine: Engine,\n    public allowPropagation = false,\n  ) { }\n\n  bindListeners (target: HTMLCanvasElement | null) {\n    this.target = target;\n    let x: number;\n    let y: number;\n    let currentTouch: Record<string, number> | 0;\n    let lastTouch: Record<string, number> | 0;\n    let getTouch: (event: Event) => TouchParams;\n\n    getTouch = event => {\n      return event as MouseEvent as TouchParams;\n    };\n    let touchstart = 'mousedown';\n    let touchmove = 'mousemove';\n    let touchend = 'mouseup';\n    let touchcancel = 'mouseleave';\n\n    const getTouchEventValue = (event: Event, x: number, y: number, dx = 0, dy = 0): TouchEventType => {\n      let vx = 0;\n      let vy = 0;\n      const ts = performance.now();\n\n      if (!this.target) {\n        logger.warn('Trigger TouchEvent after EventSystem is disposed.');\n\n        return {\n          x, y, vx: 0, vy, dx, dy, ts, width: 0, height: 0, origin: event,\n        };\n      }\n      const { width, height } = this.target;\n\n      if (lastTouch) {\n        const dt = ts - lastTouch.ts;\n\n        vx = ((dx - lastTouch.dx) / dt) || 0;\n        vy = ((dy - lastTouch.dy) / dt) || 0;\n        lastTouch = { dx, dy, ts };\n      }\n\n      return { x, y, vx, vy, dx, dy, ts, width, height, origin: event };\n    };\n\n    if (isSimulatorCellPhone()) {\n      getTouch = event => {\n        const { touches, changedTouches } = event as TouchEvent;\n\n        return touches[0] || changedTouches[0];\n      };\n      touchstart = 'touchstart';\n      touchmove = 'touchmove';\n      touchend = 'touchend';\n      touchcancel = 'touchcancel';\n    }\n    this.nativeHandlers = {\n      [touchstart]: event => {\n        if (this.enabled) {\n          const touch = getTouch(event);\n          const cood = getCoord(touch);\n\n          x = cood.x;\n          y = cood.y;\n          lastTouch = currentTouch = {\n            clientX: touch.clientX,\n            clientY: touch.clientY,\n            ts: performance.now(),\n            x,\n            y,\n          };\n          this.dispatchEvent(EVENT_TYPE_TOUCH_START, getTouchEventValue(event, x, y));\n        }\n      },\n      [touchmove]: event => {\n        if (currentTouch && this.enabled) {\n          const cood = getCoord(getTouch(event));\n\n          x = cood.x;\n          y = cood.y;\n          this.dispatchEvent(EVENT_TYPE_TOUCH_MOVE, getTouchEventValue(event, x, y, x - currentTouch.x, y - currentTouch.y));\n        }\n      },\n      [touchend]: event => {\n        if (currentTouch && this.enabled) {\n          if (!this.allowPropagation && event.cancelable) {\n            event.preventDefault();\n            event.stopPropagation();\n          }\n          const touch = getTouch(event);\n          const cood = getCoord(touch);\n          const dt = Math.abs(currentTouch.clientX - touch.clientX) + Math.abs(currentTouch.clientY - touch.clientY);\n\n          x = cood.x;\n          y = cood.y;\n          if (dt < 4) {\n            this.dispatchEvent(EVENT_TYPE_CLICK, getTouchEventValue(event, x, y));\n          }\n          this.dispatchEvent(EVENT_TYPE_TOUCH_END, getTouchEventValue(event, x, y, x - currentTouch.x, y - currentTouch.y));\n        }\n        currentTouch = 0;\n      },\n    };\n    this.nativeHandlers[touchcancel] = this.nativeHandlers[touchend];\n\n    Object.keys(this.nativeHandlers).forEach(name => {\n      this.target?.addEventListener(String(name), this.nativeHandlers[name]);\n    });\n\n    this.addEventListener(EVENT_TYPE_CLICK, this.onClick.bind(this));\n    this.addEventListener(EVENT_TYPE_TOUCH_START, this.onPointerDown.bind(this));\n    this.addEventListener(EVENT_TYPE_TOUCH_END, this.onPointerUp.bind(this));\n    this.addEventListener(EVENT_TYPE_TOUCH_MOVE, this.onPointerMove.bind(this));\n  }\n\n  dispatchEvent (type: string, event: TouchEventType) {\n    const handlers = this.handlers[type];\n\n    handlers?.forEach(fn => fn(event));\n  }\n\n  addEventListener (type: string, callback: (event: TouchEventType) => void): () => void {\n    let handlers = this.handlers[type];\n\n    if (!handlers) {\n      handlers = this.handlers[type] = [];\n    }\n    addItem(handlers, callback);\n\n    return () => {\n      removeItem(handlers, callback);\n    };\n  }\n\n  removeEventListener (type: string, callback: (event: TouchEventType) => void) {\n    const handlers = this.handlers[type];\n\n    if (handlers) {\n      removeItem(handlers, callback);\n    }\n  }\n\n  private onClick (e: TouchEventType) {\n    const { x, y } = e;\n    const hitResults: Region[] = [];\n\n    // 收集所有的点击测试结果，click 回调执行可能会对 composition 点击结果有影响，放在点击测试执行完后再统一触发。\n    for (const composition of this.engine.compositions) {\n      hitResults.push(...composition.hitTest(x, y));\n    }\n\n    for (const hitResult of hitResults) {\n      const hitComposition = hitResult.item.composition;\n\n      if (!hitComposition) {\n        continue;\n      }\n\n      const clickInfo = {\n        ...hitResult,\n        compositionId: hitComposition.id,\n        compositionName: hitComposition.name,\n      };\n\n      hitResult.item.emit('click', hitResult);\n      hitComposition.emit('click', clickInfo);\n      this.engine.emit('click', clickInfo);\n    }\n  }\n\n  private onPointerDown (e: TouchEventType) {\n    this.handlePointerEvent(e, PointerEventType.PointerDown);\n  }\n\n  private onPointerUp (e: TouchEventType) {\n    this.handlePointerEvent(e, PointerEventType.PointerUp);\n  }\n\n  private onPointerMove (e: TouchEventType) {\n    this.handlePointerEvent(e, PointerEventType.PointerMove);\n  }\n\n  private handlePointerEvent (e: TouchEventType, type: PointerEventType) {\n    let hitRegion: Region | null = null;\n    const { x, y, width, height } = e;\n\n    if (!(type === PointerEventType.PointerMove && this.skipPointerMovePicking)) {\n      for (const composition of this.engine.compositions) {\n        const regions = composition.hitTest(x, y);\n\n        if (regions.length > 0) {\n          hitRegion = regions[regions.length - 1];\n        }\n      }\n    }\n\n    const eventData = new PointerEventData();\n\n    eventData.position.x = (x + 1) / 2 * width;\n    eventData.position.y = (y + 1) / 2 * height;\n    eventData.delta.x = e.vx * width;\n    eventData.delta.y = e.vy * height;\n\n    const raycast = eventData.pointerCurrentRaycast;\n\n    if (hitRegion) {\n      raycast.point = hitRegion.position;\n      raycast.item = hitRegion.item;\n    }\n\n    let eventName: 'pointerdown' | 'pointerup' | 'pointermove' = 'pointerdown';\n\n    switch (type) {\n      case PointerEventType.PointerDown:\n        eventName = 'pointerdown';\n\n        break;\n      case PointerEventType.PointerUp:\n        eventName = 'pointerup';\n\n        break;\n      case PointerEventType.PointerMove:\n        eventName = 'pointermove';\n\n        break;\n    }\n\n    if (hitRegion) {\n      const hitItem = hitRegion.item;\n      const hitComposition = hitItem.composition as Composition;\n\n      hitItem.emit(eventName, eventData);\n      hitComposition.emit(eventName, eventData);\n      this.engine.emit(eventName, eventData);\n    }\n  }\n\n  dispose (): void {\n    if (this.target) {\n      this.handlers = {};\n\n      Object.keys(this.nativeHandlers).forEach(name => {\n        this.target?.removeEventListener(String(name), this.nativeHandlers[name]);\n      });\n      this.nativeHandlers = {};\n    }\n  }\n}\n\nfunction getCoord (event: TouchParams) {\n  const ele = event.target as HTMLElement;\n  const { clientX, clientY } = event;\n  const { left, top, width, height } = ele.getBoundingClientRect();\n  const x = ((clientX - left) / width) * 2 - 1;\n  const y = 1 - ((clientY - top) / height) * 2;\n\n  return { x, y };\n}\n","import { Plugin } from '../plugin';\n\nexport class InteractLoader extends Plugin {\n}\n","import { Matrix4, Quaternion, Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type * as spec from '@galacean/effects-specification';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport type { Engine } from '../../engine';\nimport { glContext } from '../../gl';\nimport type { MaterialProps } from '../../material';\nimport { Material } from '../../material';\nimport { createValueGetter } from '../../math';\nimport type { ShaderMacros } from '../../render';\nimport { GLSLVersion, Geometry, Mesh } from '../../render';\nimport type { Transform } from '../../transform';\n\nconst vertex = `\nprecision highp float;\n\nattribute vec2 aPoint;\nuniform vec4 uPos;\nuniform vec2 uSize;\nuniform vec4 uQuat;\nuniform vec4 uColor;\nuniform mat4 effects_ObjectToWorld;\nuniform mat4 effects_MatrixInvV;\nuniform mat4 effects_MatrixVP;\nvarying vec4 vColor;\n\nvec3 rotateByQuat(vec3 a, vec4 quat){\n  vec3 qvec = quat.xyz;\n  vec3 uv = cross(qvec, a);\n  vec3 uuv = cross(qvec, uv) * 2.;\n  return a +(uv * 2. * quat.w + uuv);\n}\n\nvoid main() {\n  vec4 _pos = uPos;\n  vec3 point = rotateByQuat(vec3(aPoint.xy * uSize, 0.),uQuat);\n  vec4 pos = vec4(_pos.xyz, 1.0);\n  pos = effects_ObjectToWorld * pos;\n  pos.xyz += effects_MatrixInvV[0].xyz * point.x+ effects_MatrixInvV[1].xyz * point.y;\n  gl_Position = effects_MatrixVP * pos;\n  vColor = uColor;\n}\n`;\nconst fragment = `\nprecision highp float;\n\n#define fragColor gl_FragColor\n\nvarying vec4 vColor;\nvoid main() {\n  gl_FragColor = vColor*vColor.a;\n}\n`;\n\nlet seed = 1;\n\nexport class InteractMesh {\n  mesh: Mesh;\n  private readonly color: spec.RGBAColor | spec.RGBAColorValue;\n\n  constructor (\n    props: spec.InteractContent,\n    private readonly transform: Transform,\n    private readonly engine: Engine,\n  ) {\n    this.color = (props.options as spec.ClickInteractOption).previewColor;\n    const material = this.createMaterial();\n    const geometry = this.createGeometry();\n\n    this.mesh = this.createMesh(geometry, material);\n    this.updateMesh();\n  }\n\n  updateMesh () {\n    const { material } = this.mesh;\n    const uSize = material.getVector2('uSize')!.clone();\n    const uPos = material.getVector4('uPos')!.clone();\n\n    const tempPos = new Vector3();\n    const tempQuat = new Quaternion();\n    const tempScale = this.transform.scale.clone();\n\n    this.transform.assignWorldTRS(tempPos, tempQuat, tempScale);\n\n    uSize.x = tempScale.x;\n    uSize.y = tempScale.y;\n    uPos.x = tempPos.x;\n    uPos.y = tempPos.y;\n    uPos.z = tempPos.z;\n\n    material.setVector2('uSize', uSize);\n    material.setVector4('uPos', uPos);\n    material.setQuaternion('uQuat', tempQuat);\n  }\n\n  private createMaterial (): Material {\n    const macros: ShaderMacros = [\n      ['ENV_EDITOR', this.engine.env === PLAYER_OPTIONS_ENV_EDITOR],\n    ];\n    const color = createValueGetter(this.color).getValue(0);\n    const materialProps: MaterialProps = {\n      shader: {\n        vertex,\n        fragment,\n        glslVersion: GLSLVersion.GLSL1,\n        macros,\n      },\n    };\n\n    const material = Material.create(this.engine, materialProps);\n\n    material.blending = true;\n    material.depthTest = false;\n    material.setVector4('uPos', new Vector4(0, 0, 0, 0));\n    material.setVector2('uSize', new Vector2(1, 1));\n    material.setVector4('uColor', new Vector4(color[0] / 255, color[1] / 255, color[2] / 255, color[3]));\n    material.setQuaternion('uQuat', new Quaternion(0, 0, 0, 0));\n\n    return material;\n  }\n\n  private createGeometry () {\n    const indexData = new Uint8Array([0, 1, 1, 2, 2, 3, 3, 0]);\n\n    return Geometry.create(\n      this.engine,\n      {\n        attributes: {\n          aPoint: {\n            size: 2,\n            offset: 0,\n            stride: 2 * Float32Array.BYTES_PER_ELEMENT,\n            data: new Float32Array([\n              -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, -0.5,\n            ]),\n          },\n        },\n        drawCount: indexData.length,\n        indices: { data: indexData },\n        mode: glContext.LINES,\n        maxVertex: 4,\n      });\n  }\n\n  private createMesh (geometry: Geometry, material: Material) {\n    return Mesh.create(\n      this.engine,\n      {\n        name: 'Interact_preview' + seed++,\n        priority: 0,\n        worldMatrix: Matrix4.fromIdentity(),\n        geometry,\n        material,\n      });\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport { trianglesFromRect } from '../../math';\nimport type { BoundingBoxTriangle, HitTestTriangleParams } from './click-handler';\nimport { HitTestType } from './click-handler';\nimport type { EventSystem, TouchEventType } from './event-system';\nimport { InteractMesh } from './interact-mesh';\nimport { RendererComponent } from '../../components';\nimport type { DragEventType } from './interact-vfx-item';\nimport type { Renderer } from '../../render';\nimport { effectsClass } from '../../decorators';\nimport { isArray } from '../../utils';\n\n/**\n * 交互组件\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.InteractComponent)\nexport class InteractComponent extends RendererComponent {\n  clickable: boolean;\n  dragEvent: DragEventType | null;\n  bouncingArg: TouchEventType | null;\n  previewContent: InteractMesh | null;\n  interactData: spec.InteractContent;\n  /**\n   * 拖拽后的惯性衰减系数，范围[0, 1], 越大惯性越强\n   * @default 0.95\n   */\n  downgrade = 0.95;\n  /**\n   * 拖拽后的惯性速度，范围[0, +∞), 越大惯性越强\n   * @default 25\n   * @since 2.6.0\n   */\n  speed = 25;\n  /**\n   * 拖拽时的距离映射系数，越大越容易拖动\n   * @default [1, 1]\n   */\n  dragRatio: number[] = [1, 1];\n  /**\n   * 拖拽范围（编辑器制作时已经设置好，特殊情况可运行时修改）\n   */\n  dragRange: {\n    dxRange: [min: number, max: number],\n    dyRange: [min: number, max: number],\n  } = {\n      dxRange: [0, 0],\n      dyRange: [0, 0],\n    };\n\n  /**\n   * 滑动失效区域，范围[0, 1]，单位 %，避免滑动触控冲突（如 iOS 右滑退出时不执行）\n   * > 若是数组形式，格式为：[top、right、bottom、left]\n   * @since 2.6.0\n   * @default 0\n   */\n  invalidBorderRange: number | number[] = 0;\n\n  private invalidByBorderRange = false;\n  private duringPlay = false;\n\n  /** 是否响应点击和拖拽交互事件 */\n  private _interactive = true;\n\n  private lastTime = -1;\n\n  /**\n   * 是否响应点击和拖拽交互事件\n   */\n  set interactive (enable: boolean) {\n    this._interactive = enable;\n    if (!enable) {\n      // 立刻停止惯性滑动\n      this.bouncingArg = null;\n    }\n  }\n  get interactive () {\n    return this._interactive;\n  }\n\n  /**\n   * 获取拖拽范围 X 轴\n   * @returns 拖拽范围 [min, max]\n   */\n  getDragRangeX (): [min: number, max: number] {\n    return this.dragRange.dxRange;\n  }\n\n  /**\n   * 设置拖拽范围 X 轴\n   * @param min 最小值\n   * @param max 最大值\n   */\n  setDragRangeX (min: number, max: number) {\n    this.dragRange.dxRange = [min, max];\n  }\n\n  /**\n   * 获取拖拽范围 Y 轴\n   * @returns 拖拽范围 [min, max]\n   */\n  getDragRangeY (): [min: number, max: number] {\n    return this.dragRange.dyRange;\n  }\n\n  /**\n   * 设置拖拽范围 Y 轴\n   * @param min 最小值\n   * @param max 最大值\n   */\n  setDragRangeY (min: number, max: number) {\n    this.dragRange.dyRange = [min, max];\n  }\n\n  override onStart (): void {\n    const { env } = this.item.engine;\n    const { type, showPreview } = this.interactData.options as spec.ClickInteractOption;\n\n    if (type === spec.InteractType.CLICK) {\n      this.clickable = true;\n      if (showPreview && env === PLAYER_OPTIONS_ENV_EDITOR) {\n        this.previewContent = new InteractMesh((this.item.props as spec.InteractItem).content, this.transform, this.engine);\n      }\n    }\n    if (this.previewContent) {\n      this.previewContent.mesh.item = this.item;\n      this.materials = this.previewContent.mesh.materials;\n    }\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n\n  override onDisable (): void {\n    super.onDisable();\n    if (this.item && this.item.composition) {\n      // Triggers the Message end event, do not trigger when reverse playback\n      if (this.duringPlay && !this.item.transform.getValid() && this.item.composition.getSpeed() > 0) {\n        this.item.composition.removeInteractiveItem(this.item, (this.item.props as spec.InteractItem).content.options.type);\n        this.duringPlay = false;\n      }\n      this.clickable = false;\n      this.endDragTarget();\n    }\n  }\n\n  override onEnable (): void {\n    super.onEnable();\n    const { type } = this.interactData.options as spec.ClickInteractOption;\n    const { env } = this.item.engine;\n\n    if (type === spec.InteractType.CLICK) {\n      this.clickable = true;\n    } else if (type === spec.InteractType.DRAG) {\n      const options = this.interactData.options as spec.DragInteractOption;\n      const enableInEditor = options.enableInEditor;\n\n      if (env !== PLAYER_OPTIONS_ENV_EDITOR || enableInEditor) {\n        const { event } = this.item.composition ?? {};\n\n        if (event) {\n          this.beginDragTarget(options, event);\n        }\n      }\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    this.duringPlay = true;\n\n    // Trigger messageBegin when item enter\n    if (this.lastTime <= this.item.time) {\n      if (this.item.time >= 0 && this.lastTime < 0) {\n        const options = this.item.props.content.options as spec.DragInteractOption;\n\n        this.item.composition?.addInteractiveItem(this.item, options.type);\n      }\n    } else {\n      // Loop trigger, do not trigger when reverse playback\n      if (this.item.time >= 0 && dt > 0) {\n        const options = this.item.props.content.options as spec.DragInteractOption;\n\n        this.item.composition?.addInteractiveItem(this.item, options.type);\n      }\n    }\n\n    this.lastTime = this.item.time;\n\n    this.previewContent?.updateMesh();\n\n    if (!this.dragEvent || !this.bouncingArg) {\n      return;\n    }\n\n    this.bouncingArg.vx *= this.downgrade;\n    this.bouncingArg.vy *= this.downgrade;\n    this.bouncingArg.dy += this.bouncingArg.vy;\n    this.bouncingArg.dx += this.bouncingArg.vx;\n\n    if (shouldIgnoreBouncing(this.bouncingArg)) {\n      this.dragEvent = null;\n      this.bouncingArg = null;\n    } else {\n      this.handleDragMove(this.dragEvent, this.bouncingArg);\n    }\n  }\n\n  override render (renderer: Renderer): void {\n    if (this.previewContent) {\n      this.previewContent.mesh.render(renderer);\n    }\n  }\n\n  override onDestroy (): void {\n    this.previewContent?.mesh.dispose();\n  }\n\n  endDragTarget () {\n    // OVERRIDE\n  }\n\n  handleDragMove (evt: Partial<DragEventType>, event: TouchEventType) {\n    if (!evt?.cameraParam || !this.canInteract() || !this.item.composition) {\n      return;\n    }\n\n    const { position, fov } = evt.cameraParam;\n    const dy = event.dy;\n    const dx = event.dx * event.width / event.height;\n    const depth = position[2];\n    const sp = Math.tan(fov * Math.PI / 180 / 2) * Math.abs(depth);\n    const height = dy * sp;\n    const width = dx * sp;\n    const { dxRange, dyRange } = this.dragRange;\n    let nx = position[0] - this.dragRatio[0] * width;\n    let ny = position[1] - this.dragRatio[1] * height;\n\n    const [xMin, xMax] = dxRange;\n    const [yMin, yMax] = dyRange;\n\n    nx = clamp(nx, xMin, xMax);\n    ny = clamp(ny, yMin, yMax);\n    if (nx !== xMin && nx !== xMax && xMin !== xMax) {\n      event.origin?.preventDefault();\n    }\n    if (ny !== yMin && ny !== yMax && yMin !== yMax) {\n      event.origin?.preventDefault();\n    }\n    this.item.composition.camera.position = new Vector3(nx, ny, depth);\n  }\n\n  beginDragTarget (options: spec.DragInteractOption, eventSystem: EventSystem) {\n    if (options.target !== 'camera') {\n      return;\n    }\n    let dragEvent: Partial<DragEventType> | null;\n    const handlerMap: Record<string, (event: TouchEventType) => void> = {\n      touchstart: (event: TouchEventType) => {\n        if (!this.canInteract()) {\n          return;\n        }\n        this.invalidByBorderRange = this.checkInvalidBorderRange({ x: event.x, y: event.y });\n\n        if (this.invalidByBorderRange) {\n          return;\n        }\n        this.dragEvent = null;\n        this.bouncingArg = null;\n        const camera = this.item.composition?.camera;\n\n        dragEvent = {\n          x: event.x,\n          y: event.y,\n          cameraParam: {\n            position: camera?.position.toArray() || [0, 0, 8],\n            fov: camera?.fov || 60,\n          },\n        };\n      },\n      touchmove: (event: TouchEventType) => {\n        if (this.invalidByBorderRange) {\n          return;\n        }\n\n        this.handleDragMove(dragEvent as Partial<DragEventType>, event);\n        this.bouncingArg = event;\n      },\n      touchend: (event: TouchEventType) => {\n        if (!this.canInteract()) {\n          return;\n        }\n        const bouncingArg = this.bouncingArg as TouchEventType;\n\n        if (!shouldIgnoreBouncing(bouncingArg, 3) && bouncingArg) {\n          bouncingArg.vx *= this.speed;\n          bouncingArg.vy *= this.speed;\n          this.dragEvent = { ...dragEvent as DragEventType };\n        }\n        dragEvent = null;\n      },\n    };\n\n    Object.keys(handlerMap).forEach(name => {\n      eventSystem.addEventListener(name, handlerMap[name]);\n    });\n\n    handlerMap.touchmove({ dx: 0, dy: 0, width: 1, height: 1 } as TouchEventType);\n    this.item.getComponent(InteractComponent).endDragTarget = () => {\n      Object.keys(handlerMap).forEach(name => {\n        eventSystem.removeEventListener(name, handlerMap[name]);\n      });\n    };\n  }\n\n  getHitTestParams = (force?: boolean): HitTestTriangleParams | void => {\n    if (!this.clickable) {\n      return;\n    }\n    const { behavior } = (this.item.props as spec.InteractItem).content.options as spec.ClickInteractOption;\n    const area = this.getBoundingBox();\n\n    if (area) {\n      return {\n        type: area.type,\n        triangles: area.area,\n        behavior,\n      };\n    }\n  };\n\n  getBoundingBox (): BoundingBoxTriangle | void {\n    const worldMatrix = this.transform.getWorldMatrix();\n    const triangles = trianglesFromRect(Vector3.ZERO, 0.5 * this.transform.size.x, 0.5 * this.transform.size.y);\n\n    triangles.forEach(triangle => {\n      worldMatrix.transformPoint(triangle.p0 as Vector3);\n      worldMatrix.transformPoint(triangle.p1 as Vector3);\n      worldMatrix.transformPoint(triangle.p2 as Vector3);\n    });\n\n    return {\n      type: HitTestType.triangle,\n      area: triangles,\n    };\n  }\n\n  override fromData (data: spec.InteractContent): void {\n    super.fromData(data);\n    this.interactData = data;\n    if (data.options.type === spec.InteractType.DRAG) {\n      const options = data.options as spec.DragInteractOption;\n\n      if (options.dxRange) {\n        this.dragRange.dxRange = options.dxRange;\n      }\n      if (options.dyRange) {\n        this.dragRange.dyRange = options.dyRange;\n      }\n    }\n  }\n\n  /**\n   * 是否可以交互\n   * @returns\n   */\n  canInteract (): boolean {\n    return Boolean(this.item.composition?.interactive) && this._interactive;\n  }\n\n  /**\n   * 检查滑动手势边界\n   * @param position\n   */\n  private checkInvalidBorderRange (\n    position: { x: number, y: number },\n  ) {\n    const invalidBorderRange = this.invalidBorderRange;\n\n    if (invalidBorderRange) {\n      let top = 0;\n      let right = 0;\n      let bottom = 0;\n      let left = 0;\n\n      if (typeof invalidBorderRange === 'number') {\n        top = invalidBorderRange;\n        right = invalidBorderRange;\n        bottom = invalidBorderRange;\n        left = invalidBorderRange;\n      } else if (isArray(invalidBorderRange)) {\n        [top = 0, right = 0, bottom = 0, left = 0] = invalidBorderRange;\n      }\n\n      if (\n        position.x < left - 1 ||\n        position.x > (1 - right) ||\n        position.y < top - 1 ||\n        position.y > (1 - bottom)\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n\nfunction shouldIgnoreBouncing (arg: TouchEventType, mul?: number) {\n  const threshold = 0.00001 * (mul || 1);\n\n  return arg && Math.abs(arg.vx || 0) < threshold && Math.abs(arg.vy || 0) < threshold;\n}\n","import type { TypedArray } from '@galacean/effects-specification';\nimport type { TriangleLike } from '@galacean/effects-math/es/core/type';\nimport { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport type { Geometry } from '../../render/geometry';\nimport type { BoundingBoxTriangle } from './click-handler';\nimport { HitTestType } from './click-handler';\n\n/**\n *\n */\nexport class MeshCollider {\n  private boundingBoxData: BoundingBoxTriangle;\n  private triangles: TriangleLike[] = [];\n  private worldMatrix = new Matrix4();\n\n  getBoundingBoxData (): BoundingBoxTriangle {\n    this.applyWorldMatrix(this.boundingBoxData.area);\n\n    return this.boundingBoxData;\n  }\n\n  getBoundingBox (): BoundingBoxTriangle {\n    let maxX = -Number.MAX_VALUE;\n    let maxY = -Number.MAX_VALUE;\n\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n\n    for (const triangle of this.boundingBoxData.area) {\n      maxX = Math.max(triangle.p0.x, triangle.p1.x, triangle.p2.x, maxX);\n      maxY = Math.max(triangle.p0.y, triangle.p1.y, triangle.p2.y, maxY);\n      minX = Math.min(triangle.p0.x, triangle.p1.x, triangle.p2.x, minX);\n      minY = Math.min(triangle.p0.y, triangle.p1.y, triangle.p2.y, minY);\n    }\n\n    const area = [];\n\n    const point0 = new Vector3(minX, maxY, 0);\n    const point1 = new Vector3(maxX, maxY, 0);\n    const point2 = new Vector3(maxX, minY, 0);\n    const point3 = new Vector3(minX, minY, 0);\n\n    area.push({ p0: point0, p1: point1, p2: point2 });\n    area.push({ p0: point0, p1: point2, p2: point3 });\n\n    this.applyWorldMatrix(area);\n\n    return {\n      type: HitTestType.triangle,\n      area,\n    };\n  }\n\n  setGeometry (geometry: Geometry, worldMatrix?: Matrix4) {\n    this.triangles = this.geometryToTriangles(geometry);\n    const area = [];\n\n    for (const triangle of this.triangles) {\n      area.push({ p0: triangle.p0, p1: triangle.p1, p2: triangle.p2 });\n    }\n    if (worldMatrix) {\n      this.worldMatrix.copyFrom(worldMatrix);\n    }\n\n    this.boundingBoxData = {\n      type: HitTestType.triangle,\n      area,\n    };\n  }\n\n  private geometryToTriangles (geometry: Geometry) {\n    const indices = geometry.getIndexData();\n    const vertices = geometry.getAttributeData('aPos');\n    const res: TriangleLike[] = [];\n\n    if (!indices || !vertices) {\n      return res;\n    }\n\n    if (geometry.subMeshes.length === 0) {\n      this.assemblyTriangles(vertices, indices, 0, indices.length, res);\n    } else {\n      for (const subMesh of geometry.subMeshes) {\n        if (subMesh.indexCount === undefined) {\n          continue;\n        }\n\n        const elementSize = indices.BYTES_PER_ELEMENT;\n        const start = subMesh.offset / elementSize;\n        const end = start + subMesh.indexCount;\n\n        this.assemblyTriangles(vertices, indices, start, end, res);\n      }\n    }\n\n    return res;\n  }\n\n  private assemblyTriangles = (vertices: TypedArray, indices: TypedArray, indexStart: number, indexEnd: number, res: TriangleLike[]) => {\n    for (let i = indexStart; i < indexEnd; i += 3) {\n      const index0 = indices[i] * 3;\n      const index1 = indices[i + 1] * 3;\n      const index2 = indices[i + 2] * 3;\n      const p0 = { x: vertices[index0], y: vertices[index0 + 1], z: vertices[index0 + 2] };\n      const p1 = { x: vertices[index1], y: vertices[index1 + 1], z: vertices[index1 + 2] };\n      const p2 = { x: vertices[index2], y: vertices[index2 + 1], z: vertices[index2 + 2] };\n\n      res.push({ p0, p1, p2 });\n    }\n  };\n\n  private applyWorldMatrix (area: TriangleLike[]) {\n    area.forEach(triangle => {\n      triangle.p0 = this.worldMatrix.transformPoint(triangle.p0 as Vector3, new Vector3());\n      triangle.p1 = this.worldMatrix.transformPoint(triangle.p1 as Vector3, new Vector3());\n      triangle.p2 = this.worldMatrix.transformPoint(triangle.p2 as Vector3, new Vector3());\n    });\n\n    return area;\n  }\n}\n","import { Plugin } from '../plugin';\n\nexport class SpriteLoader extends Plugin {\n  override name = 'sprite';\n}\n","import { EffectsObject } from '../../effects-object';\nimport type { Disposable } from '../../utils';\n\n/**\n * 动画图可播放节点对象\n * @since 2.0.0\n */\nexport class Playable implements Disposable {\n  onPlayablePlayFlag = true;\n  onPlayablePauseFlag = false;\n\n  private duration = 0;\n  private destroyed = false;\n  private playState: PlayState = PlayState.Playing;\n\n  /**\n   * 当前本地播放的时间\n   */\n  protected time: number = 0;\n\n  constructor () {}\n\n  play () {\n    switch (this.playState) {\n      case PlayState.Playing:\n        break;\n      case PlayState.Paused:\n        this.playState = PlayState.Playing;\n        this.onPlayablePlayFlag = true;\n        this.onPlayablePauseFlag = false;\n\n        break;\n    }\n  }\n\n  pause () {\n    switch (this.playState) {\n      case PlayState.Playing:\n        this.playState = PlayState.Paused;\n        this.onPlayablePauseFlag = true;\n        this.onPlayablePlayFlag = false;\n\n        break;\n      case PlayState.Paused:\n        break;\n    }\n  }\n\n  setTime (time: number) {\n    this.time = time;\n  }\n\n  getTime () {\n    return this.time;\n  }\n\n  setDuration (duration: number) {\n    this.duration = duration;\n  }\n\n  getDuration () {\n    return this.duration;\n  }\n\n  getPlayState () {\n    return this.playState;\n  }\n\n  // onPlayablePlay (context: FrameContext) {\n\n  // }\n\n  // onPlayablePause (context: FrameContext) {\n\n  // }\n\n  prepareFrame (context: FrameContext) {\n\n  }\n\n  processFrame (context: FrameContext) {\n\n  }\n\n  onPlayableDestroy () {\n\n  }\n\n  dispose (): void {\n    if (this.destroyed) {\n      return;\n    }\n    this.onPlayableDestroy();\n    // TODO 将节点从动画图中移除\n    this.destroyed = true;\n  }\n}\n\n/**\n * 动画图输出节点对象，将动画数据采样到绑定的元素属性上\n * @since 2.0.0\n */\nexport class PlayableOutput {\n  /**\n   * 绑定到的动画 item\n   */\n  userData: object;\n  context: FrameContext;\n  /**\n   * 当前本地播放的时间\n   */\n  protected time: number;\n\n  constructor () {\n    this.context = {\n      deltaTime: 0,\n      output: this,\n    };\n  }\n\n  setUserData (value: object) {\n    this.userData = value;\n  }\n\n  getUserData () {\n    return this.userData;\n  }\n\n  // onGraphStart () {\n\n  // }\n\n  prepareFrame () {\n\n  }\n\n  processFrame () {\n\n  }\n}\n\nexport abstract class PlayableAsset extends EffectsObject {\n  abstract createPlayable (): Playable;\n}\n\nexport interface FrameContext {\n  deltaTime: number,\n  output: PlayableOutput,\n}\n\nexport enum PlayState {\n  Playing,\n  Paused,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { createValueGetter, vecFill, vecMulCombine, type ValueGetter } from '../math';\nimport type { FrameContext } from '../plugins/timeline/playable';\nimport { Playable } from '../plugins/timeline/playable';\nimport { VFXItem } from '../vfx-item';\nimport type { Material } from '../material';\nimport type { ColorStop } from '../utils';\nimport { colorStopsFromGradient, getColorFromGradientStops } from '../utils';\nimport { MaskableGraphic } from '../components';\n\nexport interface ColorPlayableAssetData extends spec.EffectsObjectData {\n  colorOverLifetime?: spec.ColorOverLifetime,\n}\n\nconst tempColor: spec.RGBAColorValue = [1, 1, 1, 1];\n\nexport class ColorPlayable extends Playable {\n  clipData: { colorOverLifetime?: spec.ColorOverLifetime, startColor?: spec.RGBAColorValue };\n  colorOverLifetime: ColorStop[];\n  opacityOverLifetime: ValueGetter<number>;\n  startColor: spec.RGBAColorValue;\n  renderColor: spec.vec4 = [1, 1, 1, 1];\n  activeComponent?: MaskableGraphic;\n  activeMaterial?: Material;\n\n  override processFrame (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!(boundObject instanceof VFXItem)) {\n      return;\n    }\n    if (!this.activeComponent) {\n      this.activeComponent = this.getActiveComponent(boundObject);\n    }\n    if (!this.activeMaterial) {\n      this.activeMaterial = this.activeComponent?.material;\n      const startColor = this.activeMaterial?.getColor('_Color');\n\n      if (startColor) {\n        this.startColor = startColor.toArray();\n      }\n    }\n\n    let colorInc = vecFill(tempColor, 1);\n    let colorChanged;\n    const life = this.time / this.getDuration();\n\n    const opacityOverLifetime = this.opacityOverLifetime;\n    const colorOverLifetime = this.colorOverLifetime;\n\n    if (colorOverLifetime) {\n      colorInc = getColorFromGradientStops(colorOverLifetime, life, true) as spec.vec4;\n      colorChanged = true;\n    }\n    if (opacityOverLifetime) {\n      colorInc[3] *= opacityOverLifetime.getValue(life);\n      colorChanged = true;\n    }\n\n    if (colorChanged) {\n      vecMulCombine<spec.vec4>(this.renderColor, colorInc, this.startColor);\n      this.activeMaterial?.getColor('_Color')?.setFromArray(this.renderColor);\n    }\n  }\n\n  create (clipData: ColorPlayableAssetData) {\n    this.clipData = clipData;\n    const colorOverLifetime = clipData.colorOverLifetime;\n\n    if (colorOverLifetime) {\n      this.opacityOverLifetime = createValueGetter(colorOverLifetime.opacity ?? 1);\n      if (colorOverLifetime.color && colorOverLifetime.color[0] === spec.ValueType.GRADIENT_COLOR) {\n        this.colorOverLifetime = colorStopsFromGradient(colorOverLifetime.color[1]);\n      }\n    }\n\n    return this;\n  }\n\n  getActiveComponent (boundObject: VFXItem): MaskableGraphic {\n    return boundObject.getComponent(MaskableGraphic);\n  }\n\n}\n","import type { Euler } from '@galacean/effects-math/es/core/euler';\nimport type { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../decorators';\nimport { EffectsObject } from '../effects-object';\nimport type { ValueGetter, Vector3Curve, BezierCurve, ColorCurve } from '../math';\nimport { createValueGetter } from '../math';\nimport type { VFXItem } from '../vfx-item';\n\nexport interface AnimationCurve {\n  path: string,\n  keyFrames: ValueGetter<any>,\n}\n\nexport interface PositionAnimationCurve extends AnimationCurve {\n  keyFrames: Vector3Curve,\n}\n\nexport interface EulerAnimationCurve extends AnimationCurve {\n  keyFrames: ValueGetter<Euler>,\n}\n\nexport interface RotationAnimationCurve extends AnimationCurve {\n  keyFrames: ValueGetter<Quaternion>,\n}\n\nexport interface ScaleAnimationCurve extends AnimationCurve {\n  keyFrames: Vector3Curve,\n}\n\nexport interface FloatAnimationCurve extends AnimationCurve {\n  property: string,\n  className: string,\n  keyFrames: BezierCurve,\n}\n\nexport interface ColorAnimationCurve extends AnimationCurve {\n  property: string,\n  className: string,\n  keyFrames: ColorCurve,\n}\n\n@effectsClass(spec.DataType.AnimationClip)\nexport class AnimationClip extends EffectsObject {\n  duration = 0;\n  positionCurves: PositionAnimationCurve[] = [];\n  rotationCurves: RotationAnimationCurve[] = [];\n  eulerCurves: EulerAnimationCurve[] = [];\n  scaleCurves: ScaleAnimationCurve[] = [];\n  floatCurves: FloatAnimationCurve[] = [];\n  colorCurves: ColorAnimationCurve[] = [];\n\n  sampleAnimation (vfxItem: VFXItem, time: number) {\n    const life = clamp(time, 0, this.duration);\n\n    for (const curve of this.positionCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setPosition(value.x, value.y, value.z);\n    }\n\n    for (const curve of this.rotationCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setQuaternion(value.x, value.y, value.z, value.w);\n    }\n\n    for (const curve of this.eulerCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setRotation(value.x, value.y, value.z);\n    }\n\n    for (const curve of this.scaleCurves) {\n      const value = curve.keyFrames.getValue(life);\n      const target = this.findTarget(vfxItem, curve.path);\n\n      target?.transform.setScale(value.x, value.y, value.z);\n    }\n\n    // TODO float curves 采样\n  }\n\n  override fromData (data: spec.AnimationClipData): void {\n    this.positionCurves.length = 0;\n    this.scaleCurves.length = 0;\n    this.rotationCurves.length = 0;\n    this.eulerCurves.length = 0;\n    this.floatCurves.length = 0;\n    this.colorCurves.length = 0;\n\n    let keyFramesDuration = 0;\n\n    if (data.positionCurves) {\n      for (const positionCurveData of data.positionCurves) {\n        const curve: PositionAnimationCurve = {\n          path: positionCurveData.path,\n          keyFrames: createValueGetter(positionCurveData.keyFrames) as Vector3Curve,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.positionCurves.push(curve);\n      }\n    }\n\n    if (data.rotationCurves) {\n      for (const rotationCurveData of data.rotationCurves) {\n        const curve: RotationAnimationCurve = {\n          path: rotationCurveData.path,\n          keyFrames: createValueGetter(rotationCurveData.keyFrames),\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.rotationCurves.push(curve);\n      }\n    }\n\n    if (data.eulerCurves) {\n      for (const eulerCurvesData of data.eulerCurves) {\n        const curve: EulerAnimationCurve = {\n          path: eulerCurvesData.path,\n          keyFrames: createValueGetter(eulerCurvesData.keyFrames),\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.eulerCurves.push(curve);\n      }\n    }\n\n    if (data.scaleCurves) {\n      for (const scaleCurvesData of data.scaleCurves) {\n        const curve: ScaleAnimationCurve = {\n          path: scaleCurvesData.path,\n          keyFrames: createValueGetter(scaleCurvesData.keyFrames) as Vector3Curve,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.scaleCurves.push(curve);\n      }\n    }\n\n    if (data.floatCurves) {\n      for (const floatCurveData of data.floatCurves) {\n        const curve: FloatAnimationCurve = {\n          path: floatCurveData.path,\n          keyFrames: createValueGetter(floatCurveData.keyFrames) as BezierCurve,\n          property: floatCurveData.property,\n          className: floatCurveData.className,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.floatCurves.push(curve);\n      }\n    }\n\n    if (data.colorCurves) {\n      for (const colorCurveData of data.colorCurves) {\n        const curve: ColorAnimationCurve = {\n          path: colorCurveData.path,\n          keyFrames: createValueGetter(colorCurveData.keyFrames) as ColorCurve,\n          property: colorCurveData.property,\n          className: colorCurveData.className,\n        };\n\n        keyFramesDuration = Math.max(keyFramesDuration, curve.keyFrames.getMaxTime());\n\n        this.colorCurves.push(curve);\n      }\n    }\n\n    if (data.duration !== undefined) {\n      this.duration = data.duration;\n    } else {\n      this.duration = keyFramesDuration;\n    }\n  }\n\n  private findTarget (vfxItem: VFXItem, path: string) {\n    let target = vfxItem;\n    const paths = path.split('.');\n\n    for (const name of paths) {\n      let findTag = false;\n\n      for (const child of target.children) {\n        if (child.name === name) {\n          target = child;\n          findTag = true;\n\n          break;\n        }\n      }\n      if (!findTag) {\n        return;\n      }\n    }\n\n    return target;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { DEG2RAD, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from './index';\n\nexport class Cone implements Shape {\n  radius: number;\n  angle: number;\n  arc: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const arc = getArcAngle(this.arc, this.arcMode, opt);\n    const a = arc * DEG2RAD;\n    const x = Math.cos(a) * this.radius;\n    const y = Math.sin(a) * this.radius;\n\n    const position = new Vector3(x, y, 0);\n    const l = Math.tan(this.angle * DEG2RAD);\n    const dir = position.clone().multiply(l);\n\n    // dir + [0,0,1]\n    dir.z += 1;\n\n    return {\n      position: position.multiply(randomInRange(0, 1)),\n      direction: dir.normalize(),\n    };\n  }\n}\n\nexport function getArcAngle (arc: number, arcMode: spec.ShapeArcMode, opt: ShapeGeneratorOptions): number {\n  if (arcMode === spec.ShapeArcMode.RANDOM) {\n    arc = randomInRange(0, arc);\n  } else if (arcMode === spec.ShapeArcMode.UNIDIRECTIONAL_CYCLE) {\n    const d = opt.index % (opt.total + 1);\n\n    arc = arc / opt.total * d;\n  } else if (arcMode === spec.ShapeArcMode.BIDIRECTIONAL_CYCLE) {\n    const d = opt.index / (opt.total + 1);\n    const i = d - Math.floor(d);\n\n    arc = arc * ((Math.floor(d) % 2) ? (1 - i) : i);\n  } else if (arcMode === spec.ShapeArcMode.UNIFORM_BURST) {\n    arc = arc * opt.burstIndex / opt.burstCount;\n  }\n\n  return arc;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { DEG2RAD, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from './shape';\n\nexport class Circle implements Shape {\n  radius: number;\n  arc: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const arc = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const direction = new Vector3(Math.cos(arc), Math.sin(arc), 0);\n    const radius = this.radius;\n\n    return {\n      direction,\n      position: direction.clone().multiply(radius),\n    };\n  }\n}\n\nexport class Rectangle implements Shape {\n  _d: number;\n  _h: number;\n\n  constructor (arg: any) {\n    this._d = (arg.width || 1) / 2;\n    this._h = (arg.height || 1) / 2;\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const x = randomInRange(-this._d, this._d);\n    const y = randomInRange(-this._h, this._h);\n\n    return {\n      direction: new Vector3(0, 0, 1),\n      position: new Vector3(x, y, 0),\n    };\n  }\n\n}\n\nexport class RectangleEdge implements Shape {\n  width: number;\n  height: number;\n  arcMode: number;\n  arc: number;\n  _d: number;\n  _h: number;\n\n  constructor (arg: any) {\n    this._d = (arg.width || 1) / 2;\n    this._h = (arg.height || 1) / 2;\n    this.arcMode = arg.arcMode;\n    this.arc = arg.arc;\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const arc = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const direction = new Vector3(Math.cos(arc), Math.sin(arc), 0);\n    const w = this._d;\n    const h = this._h;\n    const r0 = Math.atan2(h, w);\n    const tan = Math.tan(arc);\n    const position = new Vector3();\n\n    if (arc < r0) {\n      position.set(w, w * tan, 0);\n    } else if (arc >= r0 && arc < Math.PI - r0) {\n      position.set(h / tan, h, 0);\n    } else if (arc < Math.PI + r0) {\n      position.set(-w, -w * tan, 0);\n    } else if (arc < Math.PI * 2 - r0) {\n      position.set(-h / tan, -h, 0);\n    } else {\n      position.set(w, w * tan, 0);\n    }\n\n    return {\n      direction,\n      position,\n    };\n  }\n}\n\nexport class Edge implements Shape {\n  width: number;\n\n  arcMode: spec.ShapeArcMode;\n  _d: number;\n\n  constructor (args: any) {\n    this._d = (args.width || 1);\n    this.arcMode = args.arcMode;\n  }\n\n  generate (options: ShapeGeneratorOptions): ShapeParticle {\n    const x = this.arcMode === spec.ShapeArcMode.UNIFORM_BURST ? ((options.burstIndex % options.burstCount) / (options.burstCount - 1)) : randomInRange(0, 1);\n\n    return {\n      direction: new Vector3(0, 1, 0),\n      position: new Vector3(this._d * (x - 0.5), 0, 0),\n    };\n  }\n}\n","import { DEG2RAD, Matrix4, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from './shape';\n\nconst tempMat4 = new Matrix4();\n\nexport class Donut implements Shape {\n  radius: number;\n  donutRadius: number;\n  arc: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const dradius = this.donutRadius;\n    const center = this.radius - dradius;\n    const angle = randomInRange(0, Math.PI * 2);\n    const arc = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const rot = tempMat4.setFromRotationZ(arc);\n    const direction = new Vector3(Math.cos(angle), Math.sin(angle), 0);\n    const position = new Vector3(center + Math.cos(angle) * dradius, 0, Math.sin(angle) * dradius);\n\n    return {\n      direction: rot.transformNormal(direction),\n      position: rot.transformPoint(position),\n    };\n  }\n\n}\n","import { DEG2RAD, Matrix4, Vector3 } from '@galacean/effects-math/es/core/index';\nimport { randomInRange } from '../utils';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from '.';\n\nconst tempMat4 = new Matrix4();\n\nexport class Sphere implements Shape {\n  arc: number;\n  radius: number;\n  arcMode: number;\n\n  constructor (props: Record<string, any>) {\n    Object.keys(props).forEach(key => {\n      this[key as keyof Shape] = props[key];\n    });\n  }\n\n  getHorizontalAngle () {\n    return randomInRange(-90, 90);\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const rz = getArcAngle(this.arc, this.arcMode, opt) * DEG2RAD;\n    const rh = this.getHorizontalAngle() * DEG2RAD;\n    const radius = this.radius;\n    const point = new Vector3(Math.cos(rh), 0, Math.sin(rh));\n    const mat4 = tempMat4.setFromRotationZ(rz);\n    const p = mat4.transformNormal(point);\n\n    return {\n      position: p.clone().multiply(radius),\n      direction: p,\n    };\n  }\n}\n\nexport class Hemisphere extends Sphere {\n  override getHorizontalAngle () {\n    return randomInRange(0, 90);\n  }\n}\n\n","import { Vector3, clamp } from '@galacean/effects-math/es/core/index';\nimport { getArcAngle } from './cone';\nimport type { Shape, ShapeGeneratorOptions, ShapeParticle } from '.';\n\nexport class TextureShape implements Shape {\n  width: number;\n  height: number;\n  block: number[];\n  anchors: Float32Array;\n  arcMode: number;\n  random: number;\n\n  constructor (arg: any) {\n    const detail = arg.detail || { anchors: [0.5, 0.5], block: [0, 0] };\n\n    this.anchors = new Float32Array(detail.anchors);\n    this.width = arg.width || 1;\n    this.height = arg.height || 1;\n    this.block = detail.block;\n    this.arcMode = arg.arcMode;\n    this.random = clamp(arg.random || 0, 0, 1);\n  }\n\n  generate (opt: ShapeGeneratorOptions): ShapeParticle {\n    const anchors = this.anchors;\n    const pointCount = (anchors.length / 2 - 1);\n    const index = Math.floor(getArcAngle(pointCount, this.arcMode, opt));\n\n    const pointX = (anchors[index * 2] + this.block[0] * this.random * Math.random()) % 1 - 0.5;\n    const pointY = (anchors[index * 2 + 1] + this.block[1] * this.random * Math.random()) % 1 - 0.5;\n    const dir = new Vector3(pointX, pointY, 0);\n\n    return {\n      position: new Vector3(pointX * this.width, pointY * this.height, 0),\n      direction: dir.normalize(),\n    };\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { Vector3 } from '@galacean/effects-math/es/core/index';\nimport { Circle, Edge, Rectangle, RectangleEdge } from './2d-shape';\nimport { Cone } from './cone';\nimport { Donut } from './donut';\nimport { Hemisphere, Sphere } from './sphere';\nimport { TextureShape } from './texture-shape';\n\nexport type ShapeGeneratorOptions = {\n  total: number,\n  index: number,\n  burstIndex: number,\n  burstCount: number,\n};\n\nexport type ShapeParticle = {\n  direction: Vector3,\n  position: Vector3,\n};\n\nexport interface Shape {\n  generate (options: ShapeGeneratorOptions): ShapeParticle,\n}\n\nexport type ShapeGenerator =\n  Shape\n  & { reverseDirection?: boolean, alignSpeedDirection?: boolean, upDirection?: Vector3 };\n\nclass ShapeNone implements Shape {\n  generate () {\n    return {\n      position: new Vector3(),\n      direction: new Vector3(),\n    };\n  }\n}\n\nconst map: Record<string, { new(options: Record<string, any>): ShapeGenerator }> = {\n  [spec.ParticleEmitterShapeType.NONE]: ShapeNone,\n  [spec.ParticleEmitterShapeType.CONE]: Cone,\n  [spec.ParticleEmitterShapeType.SPHERE]: Sphere,\n  [spec.ParticleEmitterShapeType.HEMISPHERE]: Hemisphere,\n  [spec.ParticleEmitterShapeType.CIRCLE]: Circle,\n  [spec.ParticleEmitterShapeType.DONUT]: Donut,\n  [spec.ParticleEmitterShapeType.RECTANGLE]: Rectangle,\n  [spec.ParticleEmitterShapeType.EDGE]: Edge,\n  [spec.ParticleEmitterShapeType.RECTANGLE_EDGE]: RectangleEdge,\n  [spec.ParticleEmitterShapeType.TEXTURE]: TextureShape,\n};\n\nexport function createShape (shapeOptions?: spec.ParticleShape): Shape {\n  if (!shapeOptions) {\n    return new ShapeNone();\n  }\n  const options = {\n    radius: 1,\n    arc: 360,\n    angle: 0,\n    arcMode: spec.ShapeArcMode.RANDOM,\n    ...shapeOptions,\n  };\n  const { type } = shapeOptions;\n  const Ctrl = map[type];\n\n  if (!Ctrl) {\n    throw new Error(`Invalid shape: ${type}.`);\n  }\n  const ctrl = new Ctrl(options);\n\n  if (type !== spec.ParticleEmitterShapeType.NONE) {\n    const { alignSpeedDirection, upDirection = [0, 0, 1] } = shapeOptions as spec.ParticleShapeBase;\n\n    ctrl.alignSpeedDirection = alignSpeedDirection;\n    ctrl.upDirection = Vector3.fromArray(upDirection).normalize();\n  }\n\n  return ctrl;\n}\n","/**\n * Earcut.js from: https://github.com/mapbox/earcut/tree/v2.2.2\n */\n\nexport function earcut(data, holeIndices, dim) {\n\n    dim = dim || 2;\n\n    var hasHoles = holeIndices && holeIndices.length,\n        outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n        outerNode = linkedList(data, 0, outerLen, dim, true),\n        triangles = [];\n\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n    var minX, minY, maxX, maxY, x, y, invSize;\n\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n    // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n    if (data.length > 80 * dim) {\n        minX = maxX = data[0];\n        minY = maxY = data[1];\n\n        for (var i = dim; i < outerLen; i += dim) {\n            x = data[i];\n            y = data[i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n        }\n\n        // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n        invSize = Math.max(maxX - minX, maxY - minY);\n        invSize = invSize !== 0 ? 1 / invSize : 0;\n    }\n\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n    return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nexport function linkedList(data, start, end, dim, clockwise) {\n    var i, last;\n\n    if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n        for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n    } else {\n        for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n    }\n\n    if (last && equals(last, last.next)) {\n        removeNode(last);\n        last = last.next;\n    }\n\n    return last;\n}\n\n// eliminate colinear or duplicate points\nexport function filterPoints(start, end) {\n    if (!start) return start;\n    if (!end) end = start;\n\n    var p = start,\n        again;\n    do {\n        again = false;\n\n        if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n            removeNode(p);\n            p = end = p.prev;\n            if (p === p.next) break;\n            again = true;\n\n        } else {\n            p = p.next;\n        }\n    } while (again || p !== end);\n\n    return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n    if (!ear) return;\n\n    // interlink polygon nodes in z-order\n    if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n    var stop = ear,\n        prev, next;\n\n    // iterate through ears, slicing them one by one\n    while (ear.prev !== ear.next) {\n        prev = ear.prev;\n        next = ear.next;\n\n        if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n            // cut off the triangle\n            triangles.push(prev.i / dim);\n            triangles.push(ear.i / dim);\n            triangles.push(next.i / dim);\n\n            removeNode(ear);\n\n            // skipping the next vertex leads to less sliver triangles\n            ear = next.next;\n            stop = next.next;\n\n            continue;\n        }\n\n        ear = next;\n\n        // if we looped through the whole remaining polygon and can't find any more ears\n        if (ear === stop) {\n            // try filtering points and slicing again\n            if (!pass) {\n                earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n            // if this didn't work, try curing all small self-intersections locally\n            } else if (pass === 1) {\n                ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n                earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n            // as a last resort, try splitting the remaining polygon into two\n            } else if (pass === 2) {\n                splitEarcut(ear, triangles, dim, minX, minY, invSize);\n            }\n\n            break;\n        }\n    }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nexport function isEar(ear) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // now make sure we don't have other points inside the potential ear\n    var p = ear.next.next;\n\n    while (p !== ear.prev) {\n        if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.next;\n    }\n\n    return true;\n}\n\nexport function isEarHashed(ear, minX, minY, invSize) {\n    var a = ear.prev,\n        b = ear,\n        c = ear.next;\n\n    if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n    // triangle bbox; min & max are calculated like this for speed\n    var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),\n        minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),\n        maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),\n        maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);\n\n    // z-order range for the current triangle bbox;\n    var minZ = zOrder(minTX, minTY, minX, minY, invSize),\n        maxZ = zOrder(maxTX, maxTY, minX, minY, invSize);\n\n    var p = ear.prevZ,\n        n = ear.nextZ;\n\n    // look for points inside the triangle in both directions\n    while (p && p.z >= minZ && n && n.z <= maxZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    // look for remaining points in decreasing z-order\n    while (p && p.z >= minZ) {\n        if (p !== ear.prev && p !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&\n            area(p.prev, p, p.next) >= 0) return false;\n        p = p.prevZ;\n    }\n\n    // look for remaining points in increasing z-order\n    while (n && n.z <= maxZ) {\n        if (n !== ear.prev && n !== ear.next &&\n            pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y) &&\n            area(n.prev, n, n.next) >= 0) return false;\n        n = n.nextZ;\n    }\n\n    return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n    var p = start;\n    do {\n        var a = p.prev,\n            b = p.next.next;\n\n        if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n            triangles.push(a.i / dim);\n            triangles.push(p.i / dim);\n            triangles.push(b.i / dim);\n\n            // remove two nodes involved\n            removeNode(p);\n            removeNode(p.next);\n\n            p = start = b;\n        }\n        p = p.next;\n    } while (p !== start);\n\n    return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n    // look for a valid diagonal that divides the polygon into two\n    var a = start;\n    do {\n        var b = a.next.next;\n        while (b !== a.prev) {\n            if (a.i !== b.i && isValidDiagonal(a, b)) {\n                // split the polygon in two by the diagonal\n                var c = splitPolygon(a, b);\n\n                // filter colinear points around the cuts\n                a = filterPoints(a, a.next);\n                c = filterPoints(c, c.next);\n\n                // run earcut on each half\n                earcutLinked(a, triangles, dim, minX, minY, invSize);\n                earcutLinked(c, triangles, dim, minX, minY, invSize);\n                return;\n            }\n            b = b.next;\n        }\n        a = a.next;\n    } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nexport function eliminateHoles(data, holeIndices, outerNode, dim) {\n    var queue = [],\n        i, len, start, end, list;\n\n    for (i = 0, len = holeIndices.length; i < len; i++) {\n        start = holeIndices[i] * dim;\n        end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n        list = linkedList(data, start, end, dim, false);\n        if (list === list.next) list.steiner = true;\n        queue.push(getLeftmost(list));\n    }\n\n    queue.sort(compareX);\n\n    // process holes from left to right\n    for (i = 0; i < queue.length; i++) {\n        eliminateHole(queue[i], outerNode);\n        outerNode = filterPoints(outerNode, outerNode.next);\n    }\n\n    return outerNode;\n}\n\nfunction compareX(a, b) {\n    return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n    outerNode = findHoleBridge(hole, outerNode);\n    if (outerNode) {\n        var b = splitPolygon(outerNode, hole);\n\n        // filter collinear points around the cuts\n        filterPoints(outerNode, outerNode.next);\n        filterPoints(b, b.next);\n    }\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n    var p = outerNode,\n        hx = hole.x,\n        hy = hole.y,\n        qx = -Infinity,\n        m;\n\n    // find a segment intersected by a ray from the hole's leftmost point to the left;\n    // segment's endpoint with lesser x will be potential connection point\n    do {\n        if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n            var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n            if (x <= hx && x > qx) {\n                qx = x;\n                if (x === hx) {\n                    if (hy === p.y) return p;\n                    if (hy === p.next.y) return p.next;\n                }\n                m = p.x < p.next.x ? p : p.next;\n            }\n        }\n        p = p.next;\n    } while (p !== outerNode);\n\n    if (!m) return null;\n\n    if (hx === qx) return m; // hole touches outer segment; pick leftmost endpoint\n\n    // look for points inside the triangle of hole point, segment intersection and endpoint;\n    // if there are no points found, we have a valid connection;\n    // otherwise choose the point of the minimum angle with the ray as connection point\n\n    var stop = m,\n        mx = m.x,\n        my = m.y,\n        tanMin = Infinity,\n        tan;\n\n    p = m;\n\n    do {\n        if (hx >= p.x && p.x >= mx && hx !== p.x &&\n                pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n            tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n            if (locallyInside(p, hole) &&\n                (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n                m = p;\n                tanMin = tan;\n            }\n        }\n\n        p = p.next;\n    } while (p !== stop);\n\n    return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n    return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nexport function indexCurve(start, minX, minY, invSize) {\n    var p = start;\n    do {\n        if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n        p.prevZ = p.prev;\n        p.nextZ = p.next;\n        p = p.next;\n    } while (p !== start);\n\n    p.prevZ.nextZ = null;\n    p.prevZ = null;\n\n    sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n    var i, p, q, e, tail, numMerges, pSize, qSize,\n        inSize = 1;\n\n    do {\n        p = list;\n        list = null;\n        tail = null;\n        numMerges = 0;\n\n        while (p) {\n            numMerges++;\n            q = p;\n            pSize = 0;\n            for (i = 0; i < inSize; i++) {\n                pSize++;\n                q = q.nextZ;\n                if (!q) break;\n            }\n            qSize = inSize;\n\n            while (pSize > 0 || (qSize > 0 && q)) {\n\n                if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n                    e = p;\n                    p = p.nextZ;\n                    pSize--;\n                } else {\n                    e = q;\n                    q = q.nextZ;\n                    qSize--;\n                }\n\n                if (tail) tail.nextZ = e;\n                else list = e;\n\n                e.prevZ = tail;\n                tail = e;\n            }\n\n            p = q;\n        }\n\n        tail.nextZ = null;\n        inSize *= 2;\n\n    } while (numMerges > 1);\n\n    return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n    // coords are transformed into non-negative 15-bit integer range\n    x = 32767 * (x - minX) * invSize;\n    y = 32767 * (y - minY) * invSize;\n\n    x = (x | (x << 8)) & 0x00FF00FF;\n    x = (x | (x << 4)) & 0x0F0F0F0F;\n    x = (x | (x << 2)) & 0x33333333;\n    x = (x | (x << 1)) & 0x55555555;\n\n    y = (y | (y << 8)) & 0x00FF00FF;\n    y = (y | (y << 4)) & 0x0F0F0F0F;\n    y = (y | (y << 2)) & 0x33333333;\n    y = (y | (y << 1)) & 0x55555555;\n\n    return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n    var p = start,\n        leftmost = start;\n    do {\n        if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n        p = p.next;\n    } while (p !== start);\n\n    return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n    return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&\n           (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&\n           (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nexport function isValidDiagonal(a, b) {\n    return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n           (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n            (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n            equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n    return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nexport function equals(p1, p2) {\n    return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nexport function intersects(p1, q1, p2, q2) {\n    var o1 = sign(area(p1, q1, p2));\n    var o2 = sign(area(p1, q1, q2));\n    var o3 = sign(area(p2, q2, p1));\n    var o4 = sign(area(p2, q2, q1));\n\n    if (o1 !== o2 && o3 !== o4) return true; // general case\n\n    if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n    if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n    if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n    if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n    return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n    return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n    return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n    var p = a;\n    do {\n        if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n                intersects(p, p.next, a, b)) return true;\n        p = p.next;\n    } while (p !== a);\n\n    return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nexport function locallyInside(a, b) {\n    return area(a.prev, a, a.next) < 0 ?\n        area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n        area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n    var p = a,\n        inside = false,\n        px = (a.x + b.x) / 2,\n        py = (a.y + b.y) / 2;\n    do {\n        if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n                (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n            inside = !inside;\n        p = p.next;\n    } while (p !== a);\n\n    return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nexport function splitPolygon(a, b) {\n    var a2 = new Node(a.i, a.x, a.y),\n        b2 = new Node(b.i, b.x, b.y),\n        an = a.next,\n        bp = b.prev;\n\n    a.next = b;\n    b.prev = a;\n\n    a2.next = an;\n    an.prev = a2;\n\n    b2.next = a2;\n    a2.prev = b2;\n\n    bp.next = b2;\n    b2.prev = bp;\n\n    return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n    var p = new Node(i, x, y);\n\n    if (!last) {\n        p.prev = p;\n        p.next = p;\n\n    } else {\n        p.next = last.next;\n        p.prev = last;\n        last.next.prev = p;\n        last.next = p;\n    }\n    return p;\n}\n\nexport function removeNode(p) {\n    p.next.prev = p.prev;\n    p.prev.next = p.next;\n\n    if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n    if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nexport function Node(i, x, y) {\n    // vertex index in coordinates array\n    this.i = i;\n\n    // vertex coordinates\n    this.x = x;\n    this.y = y;\n\n    // previous and next vertex nodes in a polygon ring\n    this.prev = null;\n    this.next = null;\n\n    // z-order curve value\n    this.z = null;\n\n    // previous and next nodes in z-order\n    this.prevZ = null;\n    this.nextZ = null;\n\n    // indicates whether this is a steiner point\n    this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n    var hasHoles = holeIndices && holeIndices.length;\n    var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n    var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n    if (hasHoles) {\n        for (var i = 0, len = holeIndices.length; i < len; i++) {\n            var start = holeIndices[i] * dim;\n            var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n            polygonArea -= Math.abs(signedArea(data, start, end, dim));\n        }\n    }\n\n    var trianglesArea = 0;\n    for (i = 0; i < triangles.length; i += 3) {\n        var a = triangles[i] * dim;\n        var b = triangles[i + 1] * dim;\n        var c = triangles[i + 2] * dim;\n        trianglesArea += Math.abs(\n            (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n            (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n    }\n\n    return polygonArea === 0 && trianglesArea === 0 ? 0 :\n        Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n    var sum = 0;\n    for (var i = start, j = end - dim; i < end; i += dim) {\n        sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n        j = i;\n    }\n    return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n    var dim = data[0][0].length,\n        result = {vertices: [], holes: [], dimensions: dim},\n        holeIndex = 0;\n\n    for (var i = 0; i < data.length; i++) {\n        for (var j = 0; j < data[i].length; j++) {\n            for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n        }\n        if (i > 0) {\n            holeIndex += data[i - 1].length;\n            result.holes.push(holeIndex);\n        }\n    }\n    return result;\n};\n","import type { Node } from '../libs/earcut';\nimport { indexCurve, isEarHashed, eliminateHoles, splitPolygon, isValidDiagonal, isEar, linkedList, equals, intersects, locallyInside, removeNode, filterPoints } from '../libs/earcut';\n\nlet indexBase = 0;\n\nexport function earcut (data: number[], holeIndices: number[] | null, dim: number, ib: number) {\n  dim = dim || 2;\n  indexBase = ib || 0;\n\n  const hasHoles = holeIndices && holeIndices.length;\n  const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n  let outerNode = linkedList(data, 0, outerLen, dim, true);\n  const triangles: number[] = [];\n\n  if (!outerNode || outerNode.next === outerNode.prev) {\n    return triangles;\n  }\n\n  let minX: number | undefined, minY: number | undefined, maxX, maxY, x, y, invSize: number | undefined;\n\n  if (hasHoles) {\n    outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n  }\n\n  // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n  if (data.length > 80 * dim) {\n    minX = maxX = data[0];\n    minY = maxY = data[1];\n\n    for (let i = dim; i < outerLen; i += dim) {\n      x = data[i];\n      y = data[i + 1];\n      if (x < minX) {\n        minX = x;\n      }\n      if (y < minY) {\n        minY = y;\n      }\n      if (x > maxX) {\n        maxX = x;\n      }\n      if (y > maxY) {\n        maxY = y;\n      }\n    }\n\n    // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n    invSize = Math.max(maxX - minX, maxY - minY);\n    invSize = invSize !== 0 ? 1 / invSize : 0;\n  }\n\n  hackEarcutLinked(outerNode, triangles, dim, minX, minY, invSize);\n\n  return triangles;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction hackEarcutLinked (ear: Node, triangles: number[], dim: number, minX?: number, minY?: number, invSize?: number, pass?: number) {\n  if (!ear) {\n    return;\n  }\n\n  // interlink polygon nodes in z-order\n  if (!pass && invSize) {\n    indexCurve(ear, minX!, minY!, invSize);\n  }\n\n  let stop = ear, prev, next;\n\n  // iterate through ears, slicing them one by one\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n\n    if (invSize ? isEarHashed(ear, minX!, minY!, invSize) : isEar(ear)) {\n      // cut off the triangle\n      triangles.push(prev.i / dim + indexBase);\n      triangles.push(ear.i / dim + indexBase);\n      triangles.push(next.i / dim + indexBase);\n\n      removeNode(ear);\n\n      // skipping the next vertex leads to less sliver triangles\n      ear = next.next;\n      stop = next.next;\n\n      continue;\n    }\n\n    ear = next;\n\n    // if we looped through the whole remaining polygon and can't find any more ears\n    if (ear === stop) {\n      // try filtering triangles and slicing again\n      if (!pass) {\n        hackEarcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n        // if this didn't work, try curing all small self-intersections locally\n      } else if (pass === 1) {\n        ear = hackCureLocalIntersections(filterPoints(ear), triangles, dim);\n        hackEarcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n        // as a last resort, try splitting the remaining polygon into two\n      } else if (pass === 2) {\n        hackSplitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n\n      break;\n    }\n  }\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction hackCureLocalIntersections (start: Node, triangles: number[], dim: number) {\n  let p = start;\n\n  do {\n    const a = p.prev, b = p.next.next;\n\n    if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n      triangles.push(a.i / dim + indexBase);\n      triangles.push(p.i / dim + indexBase);\n      triangles.push(b.i / dim + indexBase);\n\n      // remove two nodes involved\n      removeNode(p);\n      removeNode(p.next);\n\n      p = start = b;\n    }\n    p = p.next;\n  } while (p !== start);\n\n  return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction hackSplitEarcut (start: Node, triangles: number[], dim: number, minX?: number, minY?: number, invSize?: number) {\n  // look for a valid diagonal that divides the polygon into two\n  let a = start;\n\n  do {\n    let b = a.next.next;\n\n    while (b !== a.prev) {\n      if (a.i !== b.i && isValidDiagonal(a, b)) {\n        // split the polygon in two by the diagonal\n        let c = splitPolygon(a, b);\n\n        // filter colinear triangles around the cuts\n        a = filterPoints(a, a.next);\n        c = filterPoints(c, c.next);\n\n        // run earcut on each half\n        hackEarcutLinked(a, triangles, dim, minX, minY, invSize);\n        hackEarcutLinked(c, triangles, dim, minX, minY, invSize);\n\n        return;\n      }\n      b = b.next;\n    }\n    a = a.next;\n  } while (a !== start);\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { vec2 } from '@galacean/effects-specification';\nimport { SPRITE_VERTEX_STRIDE } from '../constants';\nimport { earcut } from './earcut';\n\ntype BezierPoint = [x: number, y: number, inx: number, iny: number, outx: number, outy: number];\n// type Geometry = {\n//   s: number[][],\n//   p: BezierPoint[],\n//   c?: vec2,\n//   t: number,\n// };\n\nexport type Shape2D = {\n  gs?: spec.ShapeGeometry[], // multiple geometries\n  t: number,\n  g: spec.ShapeGeometry, // single geometry\n};\n\nexport type GeometryFromShape = {\n  aPoint: number[] | Float32Array,\n  index: number[] | Uint16Array,\n};\n\ntype ShapeGeometryPre = { p: spec.ShapePoints[1], s: spec.ShapeSplits[1] };\n\n// FIXME: 考虑合并 Shape2D\nexport type ShapeGeometryData = { gs: ShapeGeometryPre[] } | { g: ShapeGeometryPre } | spec.ShapeGeometry;\n\nconst POINT_INDEX = 2;\n\nexport function getGeometryTriangles (geometry: spec.ShapeGeometry, options: { indexBase?: number, uvTransform?: number[] }) {\n  const { s, p } = geometry;\n  const segments = s[1];\n  const points = p[1];\n  let pointCount = 0;\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n\n    pointCount += segment.length - 1;\n  }\n\n  const pointData = new Float32Array(pointCount * SPRITE_VERTEX_STRIDE);\n  const { indexBase = 0, uvTransform } = options;\n  let index = 0;\n  let dx = 0, dy = 0, sw = 1, sh = 1, r;\n\n  if (uvTransform) {\n    dx = uvTransform[0];\n    dy = uvTransform[1];\n    r = uvTransform[4];\n    sw = r ? uvTransform[3] : uvTransform[2];\n    sh = r ? uvTransform[2] : uvTransform[3];\n  }\n\n  const temp: vec2 = [0, 0];\n  const angle = r === 0 ? 0 : -Math.PI / 2;\n\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    const p0 = points[i];\n    const p1 = points[i + 1] || points[0];\n    const keys = segment;\n    const point: vec2 = [0, 0];\n\n    for (let j = 0; j < keys.length - 1; j++) {\n      const key = keys[j];\n\n      getBezier2DValue(point, key, p0, p1, p0[4], p0[5], p1[2], p1[3]);\n      setPoint(point[0], point[1]);\n    }\n  }\n\n  const indices = earcut(Array.from(pointData), null, SPRITE_VERTEX_STRIDE, indexBase);\n\n  return { aPoint: pointData, index: new Uint16Array(indices) };\n\n  function setPoint (x: number, y: number) {\n    pointData[index++] = x / 2;\n    pointData[index++] = y / 2;\n    if (uvTransform) {\n      temp[0] = x;\n      temp[1] = y;\n      rotateVec2(temp, temp, angle);\n      pointData[index++] = dx + (temp[0] + 1) / 2 * sw;\n      pointData[index++] = dy + (temp[1] + 1) / 2 * sh;\n    } else {\n      pointData[index++] = (x + 1) / 2;\n      pointData[index++] = (y + 1) / 2;\n    }\n    index += POINT_INDEX;\n  }\n}\n\n/**\n * 根据新老版形状数据获取形状几何数据\n * @param shape 新老版形状数据\n */\nfunction getGeometriesByShapeData (shape: ShapeGeometryData) {\n  const geometries: spec.ShapeGeometry[] = [];\n\n  // 该版本的单个形状数据可以包含多个形状，可以加个埋点，五福之后没有就可以下掉\n  if ('gs' in shape) {\n    shape.gs.forEach(gs => {\n      geometries.push({\n        p: [spec.ValueType.SHAPE_POINTS, gs.p],\n        s: [spec.ValueType.SHAPE_SPLITS, gs.s],\n      });\n    });\n  } else if ('g' in shape) {\n    geometries.push({\n      p: [spec.ValueType.SHAPE_POINTS, shape.g.p],\n      s: [spec.ValueType.SHAPE_SPLITS, shape.g.s],\n    });\n  } else {\n    geometries.push(shape);\n  }\n\n  return geometries;\n}\n\nexport function getGeometryByShape (shape: ShapeGeometryData, uvTransform?: number[]): GeometryFromShape {\n  const datas = [];\n  // 老数据兼容处理\n  const geometries = getGeometriesByShapeData(shape);\n  let indexBase = 0;\n  let aPoint = 0;\n  let index = 0;\n\n  for (let i = 0; i < geometries.length; i++) {\n    const geometry = geometries[i];\n    const data = getGeometryTriangles(geometry, { indexBase, uvTransform });\n\n    indexBase += data.aPoint.length / 5;\n    datas.push(data);\n    aPoint += data.aPoint.length;\n    index += data.index.length;\n  }\n\n  if (datas.length === 1) {\n    return datas[0];\n  }\n\n  const aPointData = new Float32Array(aPoint);\n  const indexData = new Uint16Array(index);\n\n  // @ts-expect-error\n  for (let i = 0, pointIndex = 0, idx = 0; i < datas[i]; i++) {\n    const data = datas[i];\n\n    aPointData.set(data.aPoint, pointIndex);\n    pointIndex += data.aPoint.length;\n    indexData.set(data.index, idx);\n    idx += data.index.length;\n  }\n\n  return {\n    aPoint: aPointData,\n    index: indexData,\n  };\n}\n\nexport function rotateVec2 (out: vec2 | number[], vec2: vec2, angleInRad: number): vec2 {\n  const c = Math.cos(angleInRad);\n  const s = Math.sin(angleInRad);\n  const x = vec2[0];\n  const y = vec2[1];\n\n  out[0] = c * x + s * y;\n  out[1] = -s * x + c * y;\n\n  return out as vec2;\n}\n\nfunction getBezier2DValue (\n  out: vec2,\n  t: number,\n  p0: vec2 | BezierPoint | number[],\n  p1: vec2 | BezierPoint | number[],\n  cpx0: number,\n  cpy0: number,\n  cpx1: number,\n  cpy1: number,\n) {\n  const ddt = 1 - t;\n  const a = ddt * ddt * ddt;\n  const b = 3 * t * ddt * ddt;\n  const c = 3 * t * t * ddt;\n  const d = t * t * t;\n\n  out[0] = a * p0[0] + b * cpx0 + c * cpx1 + d * p1[0];\n  out[1] = a * p0[1] + b * cpy0 + c * cpy1 + d * p1[1];\n\n  return out;\n}\n","import { createValueGetter, ValueGetter } from '../../math';\n\ninterface BurstOptions {\n  time: number,\n  interval: number,\n  count: number | ValueGetter<number>,\n  cycles: number,\n  probability: number,\n}\n\nexport class Burst {\n  once: boolean;\n  disabled: boolean;\n\n  private now: number;\n  private index: number;\n  private internalCycles: number;\n\n  private readonly time: number;\n  private readonly interval: number;\n  private readonly count: ValueGetter<number>;\n  private readonly cycles: number;\n  private readonly probability: number;\n\n  constructor (options: BurstOptions) {\n    const { time, interval, count, cycles, probability } = options;\n\n    this.time = +time || 0;\n    this.interval = +interval || 1;\n    this.count = count instanceof ValueGetter ? count : createValueGetter(count);\n    this.cycles = +cycles || Infinity;\n    this.probability = isNaN(probability) ? 1 : +probability;\n    this.reset();\n  }\n\n  getGeneratorOptions (timePassed: number, lifetime: number) {\n    const dt = timePassed - this.time - this.now;\n\n    if (dt > this.interval * this.index && this.internalCycles > 0) {\n      this.internalCycles--;\n      this.index++;\n\n      return Math.random() <= this.probability ? {\n        index: this.index,\n        total: 1 / this.interval,\n        count: this.count.getValue(lifetime),\n        cycleIndex: this.cycles - this.internalCycles - 1,\n      } : null;\n    }\n  }\n\n  reset () {\n    this.internalCycles = this.cycles;\n    this.index = 0;\n    this.now = 0;\n  }\n\n  clone (): Burst {\n    const options = {\n      time: this.time,\n      interval: this.interval,\n      count: this.count,\n      cycles: this.cycles,\n      probability: this.probability,\n    };\n\n    return new Burst(options);\n  }\n}\n","export class LinkNode<T> {\n  next: LinkNode<T> | null;\n  pre: LinkNode<T> | null;\n\n  constructor (\n    public content: T,\n  ) { }\n}\n\nexport class Link<T> {\n  first: LinkNode<T>;\n  last: LinkNode<T>;\n  length = 0;\n\n  constructor (\n    private readonly sort: (a: T, b: T) => number,\n  ) { }\n\n  findNodeByContent (filter: (d: T) => boolean) {\n    let node = this.first;\n\n    if (node) {\n      do {\n        if (filter(node.content)) {\n          return node;\n        }\n        // @ts-expect-error\n        // eslint-disable-next-line no-cond-assign\n      } while (node = node.next);\n    }\n  }\n\n  private insertNode (a: LinkNode<T>, next: LinkNode<T>) {\n    const b = a.next;\n\n    a.next = next;\n    next.pre = a;\n    next.next = b;\n    if (b) {\n      b.pre = next;\n    }\n    // a -> next -> b\n  }\n\n  shiftNode (content: T): LinkNode<T> | undefined {\n    const node = new LinkNode(content);\n\n    this.length++;\n    if (this.length === 1) {\n      return this.first = this.last = node;\n    }\n    let current = this.first;\n\n    while (current) {\n      if (this.sort(current.content, node.content) <= 0) {\n        if (current.next) {\n          current = current.next;\n        } else {\n          this.insertNode(current, node);\n\n          return this.last = node;\n        }\n      } else {\n        if (current.pre) {\n          this.insertNode(current.pre, node);\n        } else {\n          this.first = node;\n          node.next = current;\n          current.pre = node;\n        }\n\n        return node;\n      }\n    }\n  }\n\n  pushNode (content: T): LinkNode<T> | undefined {\n    const node = new LinkNode(content);\n\n    this.length++;\n    if (this.length === 1) {\n      return this.last = this.first = node;\n    }\n    let current = this.last;\n\n    while (current) {\n      if (this.sort(node.content, current.content) <= 0) {\n        if (this.first === current) {\n          current.pre = node;\n          node.next = current;\n\n          return this.first = node;\n        } else {\n          // @ts-expect-error\n          current = current.pre;\n        }\n      } else {\n        this.insertNode(current, node);\n        if (current === this.last) {\n          this.last = node;\n        }\n\n        return node;\n      }\n    }\n  }\n\n  removeNode (node: LinkNode<T>) {\n    let current = this.first;\n\n    this.length--;\n    if (current === node) {\n      // @ts-expect-error\n      const a = this.first = current.next;\n\n      if (a) {\n        a.pre = null;\n      }\n    } else if ((current = this.last) === node) {\n      // @ts-expect-error\n      const a = this.last = current.pre;\n\n      if (a) {\n        a.next = null;\n      }\n    } else if (node) {\n      const pre = node.pre;\n      const next = node.next;\n\n      // @ts-expect-error\n      pre.next = next;\n      if (next) {\n        next.pre = pre;\n      }\n    }\n    node.pre = null;\n    node.next = null;\n  }\n\n  forEach (func: (content: T, index: number) => void, thisObj?: any) {\n    let node = this.first;\n    let i = 0;\n\n    if (node) {\n      do {\n        func.call(thisObj || this, node.content, i++);\n        // @ts-expect-error\n        // eslint-disable-next-line no-cond-assign\n      } while (node = node.next);\n    }\n  }\n\n  forEachReverse (func: (content: T, index: number) => void, thisObj?: any) {\n    let node = this.last;\n    let i = this.length - 1;\n\n    if (node) {\n      do {\n        func.call(thisObj || this, node.content, i--);\n        // @ts-expect-error\n        // eslint-disable-next-line no-cond-assign\n      } while (node = node.pre);\n    }\n  }\n\n  getNodeByIndex (index: number) {\n    let i = 0, res = this.first;\n\n    if (!res || index >= this.length || index < 0) {\n      return null;\n    }\n\n    while (i < index) {\n      res = res.next!;\n      i++;\n    }\n\n    return res;\n  }\n\n}\n","export const RUNTIME_ENV = 'runtime_env';\n\nexport const RENDER_PREFER_LOOKUP_TEXTURE = 'lookup_texture';\n// 文本元素使用 offscreen canvas 绘制\nexport const TEMPLATE_USE_OFFSCREEN_CANVAS = 'offscreen_canvas';\n// 后处理配置相关\nexport const POST_PROCESS_SETTINGS = 'post_process_settings';\n\nconst config: Record<string, number | boolean | string | Record<string, any>> = {};\n\n/**\n * 获取全局配置项\n * @param name\n * @returns\n */\nexport function getConfig<T extends number | boolean | string | Record<string, any>> (name: string) {\n  return config[name] as T;\n}\n\n/**\n * 设置全局配置项\n * @param name\n * @param value\n * @returns\n */\nexport function setConfig<T extends number | boolean | string | Record<string, any>> (name: string, value: T) {\n  return config[name] = value;\n}\n","import type { Matrix4 } from '@galacean/effects-math/es/core/index';\nimport { Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core/index';\nimport type * as spec from '@galacean/effects-specification';\nimport type { GradientStop, vec3, vec4 } from '@galacean/effects-specification';\nimport { RENDER_PREFER_LOOKUP_TEXTURE, getConfig } from '../../config';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport type { Engine } from '../../engine';\nimport { glContext } from '../../gl';\nimport type { MaterialProps } from '../../material';\nimport { Material, getPreMultiAlpha, setBlendMode, setMaskMode } from '../../material';\nimport { createKeyFrameMeta, createValueGetter, getKeyFrameMetaByRawValue, ValueGetter } from '../../math';\nimport type { GPUCapability, GeometryProps, ShaderMacros, ShaderWithSource } from '../../render';\nimport { GLSLVersion, Geometry, Mesh } from '../../render';\nimport { particleFrag, trailVert } from '../../shader';\nimport { Texture, generateHalfFloatTexture } from '../../texture';\nimport { assertExist, imageDataFromGradient } from '../../utils';\n\nexport type TrailMeshProps = {\n  maxTrailCount: number,\n  pointCountPerTrail: number,\n  colorOverLifetime?: Array<GradientStop>,\n  texture?: Texture,\n  minimumVertexDistance: number,\n  blending: number,\n  widthOverTrail: ValueGetter<number>,\n  colorOverTrail?: Array<GradientStop>,\n  // order: number,\n  matrix?: Matrix4,\n  opacityOverLifetime: ValueGetter<number>,\n  occlusion: boolean,\n  transparentOcclusion: boolean,\n  lifetime: ValueGetter<number>,\n  mask: number,\n  shaderCachePrefix: string,\n  maskMode: number,\n  textureMap: vec4,\n  name: string,\n};\n\nexport type TrailPointOptions = {\n  lifetime: number,\n  color: number[],\n  size: number,\n  time: number,\n};\n\nconst tmp0 = new Vector3();\nconst tmp1 = new Vector3();\n\nexport class TrailMesh {\n  mesh: Mesh;\n  maxTrailCount;\n  geometry: Geometry;\n  lifetime: ValueGetter<number>;\n  pointCountPerTrail: number;\n  minimumVertexDistance: number;\n  useAttributeTrailStart: boolean;\n  checkVertexDistance: boolean;\n\n  private pointStart: Vector3[] = [];\n  private trailCursors: Uint16Array;\n\n  constructor (\n    engine: Engine,\n    props: TrailMeshProps,\n  ) {\n    const {\n      colorOverLifetime,\n      colorOverTrail,\n      maxTrailCount,\n      opacityOverLifetime = createValueGetter(1),\n      widthOverTrail,\n      name,\n      occlusion,\n      blending,\n      maskMode,\n      mask,\n      // order,\n      textureMap = [0, 0, 1, 1],\n      texture,\n      transparentOcclusion,\n      minimumVertexDistance,\n      lifetime,\n      matrix,\n    } = props;\n\n    const { detail, level } = engine.gpuCapability;\n    const pointCountPerTrail = Math.max(props.pointCountPerTrail, 2);\n    const keyFrameMeta = createKeyFrameMeta();\n    const enableVertexTexture = detail.maxVertexTextures > 0;\n    const { env } = engine ?? {};\n    const uniformValues: any = {};\n    // const lookUpTexture = getConfig(RENDER_PREFER_LOOKUP_TEXTURE) ? 1 : 0;\n    const lookUpTexture = 0;\n    const macros: ShaderMacros = [\n      ['ENABLE_VERTEX_TEXTURE', enableVertexTexture],\n      ['LOOKUP_TEXTURE_CURVE', lookUpTexture],\n      ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n    ];\n    const useAttributeTrailStart = maxTrailCount > 64;\n    let shaderCacheId = 0;\n\n    if (colorOverLifetime) {\n      macros.push(['COLOR_OVER_LIFETIME', true]);\n      shaderCacheId |= 1;\n      uniformValues.uColorOverLifetime = Texture.createWithData(engine, imageDataFromGradient(colorOverLifetime));\n    }\n    if (colorOverTrail) {\n      macros.push(['COLOR_OVER_TRAIL', true]);\n      shaderCacheId |= 1 << 2;\n      uniformValues.uColorOverTrail = Texture.createWithData(engine, imageDataFromGradient(colorOverTrail));\n    }\n    if (useAttributeTrailStart) {\n      macros.push(['ATTR_TRAIL_START', 1]);\n      shaderCacheId |= 1 << 3;\n    } else {\n      uniformValues.uTrailStart = new Float32Array(maxTrailCount);\n    }\n\n    uniformValues.uOpacityOverLifetimeValue = opacityOverLifetime.toUniform(keyFrameMeta);\n    const uWidthOverTrail = widthOverTrail.toUniform(keyFrameMeta);\n\n    macros.push(\n      ['VERT_CURVE_VALUE_COUNT', keyFrameMeta.index],\n      ['VERT_MAX_KEY_FRAME_COUNT', keyFrameMeta.max]);\n\n    if (enableVertexTexture && lookUpTexture) {\n      const tex = generateHalfFloatTexture(engine, ValueGetter.getAllData(keyFrameMeta, true) as Uint16Array, keyFrameMeta.index, 1);\n\n      uniformValues.uVCurveValueTexture = tex;\n    } else {\n      uniformValues.uVCurveValues = ValueGetter.getAllData(keyFrameMeta);\n    }\n\n    const vertex = trailVert;\n    const fragment = particleFrag;\n    const mtl: MaterialProps = ({\n      shader: {\n        vertex,\n        fragment,\n        macros,\n        glslVersion: level === 1 ? GLSLVersion.GLSL1 : GLSLVersion.GLSL3,\n        shared: true,\n        name: `trail#${name}`,\n        cacheId: `-t:+${shaderCacheId}+${keyFrameMeta.index}+${keyFrameMeta.max}`,\n      },\n    });\n\n    const maxVertexCount = pointCountPerTrail * maxTrailCount * 2;\n    const maxTriangleCount = (pointCountPerTrail - 1) * maxTrailCount;\n    const bpe = Float32Array.BYTES_PER_ELEMENT;\n    const v12 = 12 * bpe;\n    const geometryOptions: GeometryProps = {\n      attributes: {\n        aColor: { size: 4, stride: v12, data: new Float32Array(maxVertexCount * 12) },\n        aSeed: { size: 1, stride: v12, offset: 4 * bpe, dataSource: 'aColor' },\n        aInfo: { size: 3, stride: v12, offset: 5 * bpe, dataSource: 'aColor' },\n        aPos: { size: 4, stride: v12, offset: 8 * bpe, dataSource: 'aColor' },\n        //\n        aTime: { size: 1, data: new Float32Array(maxVertexCount) },\n        //\n        aDir: { size: 3, data: new Float32Array(maxVertexCount * 3) },\n      },\n      indices: { data: new Uint16Array(maxVertexCount * 6) },\n      drawCount: maxTriangleCount * 6,\n      name: `trail#${name}`,\n      bufferUsage: glContext.DYNAMIC_DRAW,\n    };\n\n    if (useAttributeTrailStart) {\n      geometryOptions.attributes.aTrailStart = { size: 1, data: new Float32Array(maxVertexCount) };\n    } else {\n      const indexData = new Float32Array(maxVertexCount);\n\n      geometryOptions.attributes.aTrailStartIndex = { size: 1, data: indexData };\n      for (let i = 0; i < maxTrailCount; i++) {\n        const c = pointCountPerTrail * 2;\n        const s = i * c;\n\n        for (let j = 0; j < c; j++) {\n          indexData[s + j] = i;\n        }\n      }\n    }\n\n    const preMulAlpha = getPreMultiAlpha(blending);\n    const material = Material.create(engine, mtl);\n\n    material.blending = true;\n    material.depthMask = occlusion;\n    material.depthTest = true;\n    material.stencilRef = mask ? [mask, mask] : undefined;\n    setMaskMode(material, maskMode);\n    setBlendMode(material, blending);\n\n    const mesh = this.mesh = Mesh.create(\n      engine,\n      {\n        name: `MTrail_${name}`,\n        material,\n        geometry: Geometry.create(engine, geometryOptions),\n        // priority: order,\n      }\n    );\n    const uMaskTex = texture ?? Texture.createWithData(engine);\n\n    Object.keys(uniformValues).map(name => {\n      const value = uniformValues[name];\n\n      if (value instanceof Texture) {\n        material.setTexture(name, value);\n      } else if (name === 'uTrailStart') {\n        material.setFloats('uTrailStart', value);\n      } else if (name === 'uVCurveValues') {\n        const array: Vector4[] = [];\n\n        for (let i = 0; i < value.length; i = i + 4) {\n          const v = new Vector4(value[i], value[i + 1], value[i + 2], value[i + 3]);\n\n          array.push(v);\n        }\n        material.setVector4Array(name, array);\n      } else {\n        material.setVector4(name, Vector4.fromArray(value));\n      }\n    });\n\n    material.setFloat('uTime', 0);\n    // TODO: 修改下长度\n    material.setVector4('uWidthOverTrail', Vector4.fromArray(uWidthOverTrail));\n    material.setVector2('uTexOffset', new Vector2(0, 0));\n    material.setVector4('uTextureMap', Vector4.fromArray(textureMap));\n    material.setVector4('uParams', new Vector4(0, pointCountPerTrail - 1, 0, 0));\n    material.setTexture('uMaskTex', uMaskTex);\n    material.setVector4('uColorParams', new Vector4(texture ? 1 : 0, +preMulAlpha, 0, +(occlusion && !transparentOcclusion)));\n\n    this.maxTrailCount = maxTrailCount;\n    this.pointCountPerTrail = pointCountPerTrail;\n    this.checkVertexDistance = minimumVertexDistance > 0;\n    this.minimumVertexDistance = Math.pow(minimumVertexDistance || 0.001, 2);\n    this.useAttributeTrailStart = useAttributeTrailStart;\n    this.lifetime = lifetime;\n    if (matrix) {\n      this.mesh.worldMatrix = matrix;\n    }\n    this.geometry = mesh.firstGeometry();\n    this.trailCursors = new Uint16Array(maxTrailCount);\n  }\n\n  get time () {\n    return this.mesh.material.getFloat('uTime') || 0;\n  }\n  set time (t: number) {\n    this.mesh.material.setFloat('uTime', t ?? 0);\n  }\n\n  addPoint (trailIndex: number, position: Vector3, opt: TrailPointOptions) {\n    opt = opt || ({} as TrailPointOptions);\n    let cursor = this.trailCursors[trailIndex];\n    const pointCountPerTrail = this.pointCountPerTrail;\n    const geometry = this.geometry;\n    const segmentPerTrail = pointCountPerTrail - 1;\n    const pointIndex = cursor % pointCountPerTrail;\n    const previousIndex = (cursor - 1) % pointCountPerTrail;\n    const bpreviousIndex = (cursor - 2) % pointCountPerTrail;\n    const previousPoint = this.getTrailPosition(trailIndex, previousIndex, tmp0);\n    // point too close\n\n    if (previousPoint && this.checkVertexDistance && previousPoint?.distanceSquared(position) < this.minimumVertexDistance) {\n      return;\n    }\n\n    const pointStartIndex = trailIndex * pointCountPerTrail + pointIndex;\n    const dir = calculateDirection(previousPoint, position);\n    const time = opt.time || this.time;\n    const info = [Math.random(), opt.lifetime || this.lifetime, cursor] as vec3;\n    const size = opt.size || 1;\n\n    const dirStartIndex = pointStartIndex * 6;\n    const dirData = new Float32Array(6);\n\n    dirData.set(dir, 0);\n    dirData.set(dir, 3);\n\n    geometry.setAttributeSubData('aDir', dirStartIndex, dirData);\n    geometry.setAttributeSubData('aTime', pointStartIndex * 2, new Float32Array([time, time]));\n\n    const color = opt.color || [1, 1, 1, 1];\n    const colorData = new Float32Array(24);\n    const positionData = position.toArray();\n\n    colorData.set(color, 0);\n    colorData.set(info, 4);\n    colorData[7] = 0;\n    colorData.set(positionData, 8);\n    colorData[11] = 0.5 * size;\n\n    colorData.set(color, 12);\n    colorData.set(info, 16);\n    colorData[19] = 1;\n    colorData.set(positionData, 20);\n    colorData[23] = -0.5 * size;\n\n    geometry.setAttributeSubData('aColor', pointStartIndex * 24, colorData);\n\n    if (previousIndex >= 0) {\n      const bPreviousPoint = this.getTrailPosition(trailIndex, bpreviousIndex, tmp1) as Vector3;\n      const previousDir = new Float32Array(calculateDirection(bPreviousPoint, previousPoint as Vector3, position));\n      const previousDirStartIndex = (trailIndex * pointCountPerTrail + previousIndex) * 6;\n\n      geometry.setAttributeSubData('aDir', previousDirStartIndex, previousDir);\n      geometry.setAttributeSubData('aDir', previousDirStartIndex + 3, previousDir);\n      const indicesStart = trailIndex * pointCountPerTrail * 2;\n      const indicesData = new Uint16Array([\n        previousIndex * 2 + indicesStart,\n        previousIndex * 2 + 1 + indicesStart,\n        pointIndex * 2 + indicesStart,\n        pointIndex * 2 + indicesStart,\n        previousIndex * 2 + 1 + indicesStart,\n        pointIndex * 2 + 1 + indicesStart,\n      ]);\n      const start = (trailIndex * segmentPerTrail + (cursor - 1) % segmentPerTrail) * 6;\n\n      geometry.setIndexSubData(start, indicesData);\n    }\n\n    cursor = ++this.trailCursors[trailIndex];\n    const mtl = this.mesh.material;\n    const params = mtl.getVector4('uParams');\n    const trailStart = info[2];\n\n    if (this.useAttributeTrailStart) {\n      const len = pointCountPerTrail * 2;\n      const startData: Float32Array = new Float32Array(len);\n\n      for (let i = 0; i < len; i++) {\n        startData[i] = trailStart;\n      }\n      geometry.setAttributeSubData('aTrailStart', trailIndex * startData.length, startData);\n    } else {\n      const value = mtl.getFloats('uTrailStart');\n\n      if (value != undefined) {\n        value[trailIndex] = trailStart;\n        mtl.setFloats('uTrailStart', value);\n      }\n    }\n\n    if (params) {\n      params.y = Math.max(params.y, cursor - 1) - Math.max(0, cursor - pointCountPerTrail);\n      mtl.setVector4('uParams', params);\n    }\n  }\n\n  getTrailPosition (trail: number, index: number, out: Vector3): Vector3 | undefined {\n    const pointCountPerTrail = this.pointCountPerTrail;\n\n    if (index >= 0 && index < pointCountPerTrail) {\n      const startIndex = (trail * pointCountPerTrail + index) * 24 + 8;\n      const data = this.geometry.getAttributeData('aColor');\n\n      assertExist(data);\n\n      out.x = data[startIndex];\n      out.y = data[1 + startIndex];\n      out.z = data[2 + startIndex];\n\n      return out;\n    }\n  }\n\n  clearAllTrails () {\n    const indexData = this.geometry.getIndexData();\n\n    assertExist(indexData);\n\n    this.trailCursors = new Uint16Array(this.trailCursors.length);\n    this.geometry.setIndexData(new Uint16Array(indexData.length));\n  }\n\n  minusTime (time: number) {\n    const data = this.geometry.getAttributeData('aTime');\n\n    assertExist(data);\n\n    for (let i = 0; i < data.length; i++) {\n      data[i] -= time;\n    }\n    this.geometry.setAttributeData('aTime', data);\n    this.time -= time;\n  }\n\n  clearTrail (index: number) {\n    if (this.trailCursors[index] !== 0) {\n      const pointCountPerTrail = this.pointCountPerTrail;\n      const indicesPerTrail = (pointCountPerTrail - 1) * 6;\n      const indices = this.geometry.getIndexData();\n\n      assertExist(indices);\n\n      indices.set(new Uint16Array(indicesPerTrail), index * indicesPerTrail);\n      this.geometry.setIndexData(indices);\n\n      this.trailCursors[index] = 0;\n    }\n  }\n\n  getPointStartPos (index: number) {\n    return this.pointStart[index];\n  }\n\n  setPointStartPos (index: number, pos: Vector3) {\n    this.pointStart[index] = pos;\n  }\n\n  onUpdate (escapeTime: number): any {\n  }\n\n}\n\nconst tempDir = new Vector3();\nconst tempDa = new Vector3();\nconst tempDb = new Vector3();\n\n// TODO: prePoint 可选，point 必选，顺序有问题\nfunction calculateDirection (prePoint: Vector3 | undefined, point: Vector3, nextPoint?: Vector3): vec3 {\n  const dir = tempDir;\n\n  if (!prePoint && !nextPoint) {\n    return [0, 0, 0];\n  } else if (!prePoint) {\n    dir.subtractVectors(nextPoint!, point);\n  } else if (!nextPoint) {\n    dir.subtractVectors(point, prePoint);\n  } else {\n    tempDa.subtractVectors(point, prePoint).normalize();\n    // FIXME: 这里有bug。。。\n    tempDa.subtractVectors(nextPoint, point);\n    tempDb.copyFrom(tempDa).normalize();\n    dir.addVectors(tempDa, tempDb);\n  }\n\n  return dir.normalize().toArray();\n}\n\nexport function getTrailMeshShader (\n  trails: spec.ParticleTrail,\n  particleMaxCount: number,\n  name: string,\n  gpuCapability: GPUCapability,\n  env = '',\n): ShaderWithSource {\n  let shaderCacheId = 0;\n  const lookUpTexture = getConfig(RENDER_PREFER_LOOKUP_TEXTURE) ? 1 : 0;\n  const enableVertexTexture = gpuCapability.detail.maxVertexTextures > 0;\n  const macros: ShaderMacros = [\n    ['ENABLE_VERTEX_TEXTURE', enableVertexTexture],\n    ['LOOKUP_TEXTURE_CURVE', lookUpTexture],\n    ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n  ];\n  const keyFrameMeta = createKeyFrameMeta();\n\n  if (trails.colorOverLifetime) {\n    macros.push(['COLOR_OVER_LIFETIME', true]);\n    shaderCacheId |= 1;\n  }\n  if (trails.colorOverTrail) {\n    macros.push(['COLOR_OVER_TRAIL', true]);\n    shaderCacheId |= 1 << 2;\n  }\n\n  const useAttributeTrailStart = particleMaxCount > 64;\n\n  if (useAttributeTrailStart) {\n    macros.push(['ATTR_TRAIL_START', 1]);\n    shaderCacheId |= 1 << 3;\n  }\n  getKeyFrameMetaByRawValue(keyFrameMeta, trails.opacityOverLifetime);\n  getKeyFrameMetaByRawValue(keyFrameMeta, trails.widthOverTrail);\n  macros.push(\n    ['VERT_CURVE_VALUE_COUNT', keyFrameMeta.index],\n    ['VERT_MAX_KEY_FRAME_COUNT', keyFrameMeta.max]);\n\n  return {\n    vertex: trailVert,\n    fragment: particleFrag,\n    macros,\n    shared: true,\n    name: 'trail#' + name,\n    cacheId: `-t:+${shaderCacheId}+${keyFrameMeta.index}+${keyFrameMeta.max}`,\n  };\n}\n","import { VFXItem } from '../../vfx-item';\nimport type { FrameContext } from '../timeline/playable';\nimport { Playable, PlayableAsset } from '../timeline/playable';\nimport { ParticleSystem } from './particle-system';\n\n/**\n * @since 2.0.0\n */\nexport class ParticleBehaviourPlayable extends Playable {\n  lastTime = 0;\n  particleSystem: ParticleSystem;\n\n  start (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (this.particleSystem || !(boundObject instanceof VFXItem)) {\n      return;\n    }\n    this.particleSystem = boundObject.getComponent(ParticleSystem);\n\n    if (this.particleSystem) {\n      this.particleSystem.name = boundObject.name;\n    }\n  }\n\n  override processFrame (context: FrameContext): void {\n    if (this.time >= 0) {\n      this.start(context);\n    }\n    const particleSystem = this.particleSystem;\n\n    if (particleSystem) {\n      if (\n        this.time >= 0 &&\n        this.time < particleSystem.item.duration &&\n        particleSystem.isEnded()\n      ) {\n        particleSystem.reset();\n      }\n\n      // TODO: There is one less conversion from second to millisecond here,\n      // which is retained for frame test.\n      particleSystem.update(this.time - particleSystem.time);\n    }\n    this.lastTime = this.time;\n  }\n}\n\nexport class ParticleBehaviourPlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    return new ParticleBehaviourPlayable();\n  }\n}\n\nexport const particleUniformTypeMap: Record<string, string> = {\n  'uSprite': 'vec4',\n  'uParams': 'vec4',\n  'uAcceleration': 'vec4',\n  'uGravityModifierValue': 'vec4',\n  'uOpacityOverLifetimeValue': 'vec4',\n  'uRXByLifeTimeValue': 'vec4',\n  'uRYByLifeTimeValue': 'vec4',\n  'uRZByLifeTimeValue': 'vec4',\n  'uLinearXByLifetimeValue': 'vec4',\n  'uLinearYByLifetimeValue': 'vec4',\n  'uLinearZByLifetimeValue': 'vec4',\n  'uSpeedLifetimeValue': 'vec4',\n  'uOrbXByLifetimeValue': 'vec4',\n  'uOrbYByLifetimeValue': 'vec4',\n  'uOrbZByLifetimeValue': 'vec4',\n  'uSizeByLifetimeValue': 'vec4',\n  'uSizeYByLifetimeValue': 'vec4',\n  'uColorParams': 'vec4',\n  'uFSprite': 'vec4',\n  'uPreviewColor': 'vec4',\n  'uVCurveValues': 'vec4Array',\n  'uFCurveValues': 'vec4',\n  'uFinalTarget': 'vec3',\n  'uForceCurve': 'vec4',\n  'uOrbCenter': 'vec3',\n  'uTexOffset': 'vec2',\n  'uPeriodValue': 'vec4',\n  'uMovementValue': 'vec4',\n  'uStrengthValue': 'vec4',\n  'uWaveParams': 'vec4',\n};\n","import type * as spec from '@galacean/effects-specification';\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Quaternion } from '@galacean/effects-math/es/core/quaternion';\nimport { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport { Matrix3 } from '@galacean/effects-math/es/core/matrix3';\nimport { clamp } from '@galacean/effects-math/es/core/utils';\nimport type { Engine } from '../../engine';\nimport { getConfig, RENDER_PREFER_LOOKUP_TEXTURE } from '../../config';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from '../../constants';\nimport type { MaterialProps } from '../../material';\nimport {\n  getPreMultiAlpha, Material, setBlendMode, setMaskMode, setSideMode,\n} from '../../material';\nimport {\n  createKeyFrameMeta, createValueGetter, ValueGetter, getKeyFrameMetaByRawValue,\n  RandomValue,\n} from '../../math';\nimport type {\n  Attribute, GPUCapability, GeometryProps, ShaderMacros, SharedShaderWithSource,\n} from '../../render';\nimport { GLSLVersion, Geometry, Mesh } from '../../render';\nimport { particleFrag, particleVert } from '../../shader';\nimport { Texture, generateHalfFloatTexture } from '../../texture';\nimport { Transform } from '../../transform';\nimport { assertExist, enlargeBuffer, imageDataFromGradient } from '../../utils';\nimport { particleUniformTypeMap } from './particle-vfx-item';\n\nexport type Point = {\n  vel: Vector3,\n  lifetime: number,\n  color: spec.vec4,\n  uv: number[],\n  dirX: Vector3,\n  dirY: Vector3,\n  delay: number,\n  sprite?: [start: number, duration: number, cycles: number],\n  transform: Transform,\n  gravity: spec.vec3,\n  size: Vector2,\n};\n\nexport interface ParticleMeshData {\n  gravityModifier: ValueGetter<number>,\n  sizeOverLifetime?: {\n    x: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    separateAxes?: boolean,\n  },\n  meshSlots?: number[],\n  forceTarget?: {\n    curve: ValueGetter<number>,\n    target: spec.vec3,\n  },\n  colorOverLifetime?: {\n    color?: number[][] | Texture,\n    opacity?: ValueGetter<number>,\n    separateAxes?: boolean,\n  },\n  linearVelOverLifetime?: {\n    asMovement?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n    enabled?: boolean,\n  } & Record<string, any>,\n  orbitalVelOverLifetime?: {\n    asRotation?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n    enabled?: boolean,\n    center?: spec.vec3,\n  } & Record<string, any>,\n  rotationOverLifetime?: {\n    asRotation?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n  },\n  speedOverLifetime?: ValueGetter<number>,\n}\n\nexport interface ParticleMeshProps extends ParticleMeshData {\n  renderMode?: number,\n  blending?: number,\n  mask: number,\n  maskMode: number,\n  side: number,\n  transparentOcclusion?: boolean,\n  matrix?: Matrix4,\n  sprite?: {\n    animate?: boolean,\n    blend?: boolean,\n    col: number,\n    row: number,\n    total: number,\n  },\n  gravity?: spec.vec3,\n  useSprite?: boolean,\n  textureFlip?: boolean,\n  occlusion?: boolean,\n  diffuse?: Texture,\n  forceTarget?: {\n    curve: ValueGetter<number>,\n    target: spec.vec3,\n  },\n  // listIndex: number,\n  // duration: number,\n  maxCount: number,\n  shaderCachePrefix: string,\n  name: string,\n  anchor: Vector2,\n}\nexport class ParticleMesh implements ParticleMeshData {\n  duration: number;\n  geometry: Geometry;\n  mesh: Mesh;\n  particleCount = 0;\n  maxParticleBufferCount: number;\n  gravityModifier: ValueGetter<number>;\n  sizeOverLifetime?: { x: ValueGetter<number>, y?: ValueGetter<number>, separateAxes?: boolean };\n  forceTarget?: { curve: ValueGetter<number>, target: spec.vec3 };\n  colorOverLifetime?: { color?: number[][], opacity?: ValueGetter<number>, separateAxes?: boolean };\n  linearVelOverLifetime?: { asMovement?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean };\n  orbitalVelOverLifetime?: { asRotation?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean, center?: spec.vec3 };\n  rotationOverLifetime?: { asRotation?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number> };\n  speedOverLifetime?: ValueGetter<number>;\n  time: number;\n  maxCount: number;\n\n  readonly useSprite?: boolean;\n  readonly textureOffsets: number[];\n  readonly anchor: Vector2;\n\n  private cachedRotationVector3 = new Vector3();\n  private cachedRotationMatrix = new Matrix3();\n  private cachedLinearMove = new Vector3();\n  private tempMatrix3 = new Matrix3();\n\n  VERT_MAX_KEY_FRAME_COUNT = 0;\n\n  constructor (\n    engine: Engine,\n    props: ParticleMeshProps,\n  ) {\n    const { env } = engine ?? {};\n    const {\n      speedOverLifetime, colorOverLifetime, linearVelOverLifetime, orbitalVelOverLifetime, sizeOverLifetime, rotationOverLifetime,\n      sprite, gravityModifier, maxCount, textureFlip, useSprite, name,\n      gravity, forceTarget, side, occlusion, anchor, blending,\n      maskMode, mask, transparentOcclusion, meshSlots,\n      renderMode = 0,\n      diffuse = Texture.createWithData(engine),\n    } = props;\n    const { detail } = engine.gpuCapability;\n    const { halfFloatTexture, maxVertexUniforms } = detail;\n    const macros: ShaderMacros = [\n      // spec.RenderMode\n      ['RENDER_MODE', +renderMode],\n      ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n    ];\n    const { level } = engine.gpuCapability;\n    const vertexKeyFrameMeta = createKeyFrameMeta();\n    const fragmentKeyFrameMeta = createKeyFrameMeta();\n    const enableVertexTexture = maxVertexUniforms > 0;\n    const uniformValues: Record<string, any> = {};\n    let vertex_lookup_texture = 0;\n    let shaderCacheId = 0;\n    let useOrbitalVel;\n\n    this.useSprite = useSprite;\n    if (enableVertexTexture) {\n      macros.push(['ENABLE_VERTEX_TEXTURE', true]);\n    }\n    if (speedOverLifetime) {\n      macros.push(['SPEED_OVER_LIFETIME', true]);\n      shaderCacheId |= 1 << 1;\n      uniformValues.uSpeedLifetimeValue = speedOverLifetime.toUniform(vertexKeyFrameMeta);\n    }\n    if (sprite?.animate) {\n      macros.push(['USE_SPRITE', true]);\n      shaderCacheId |= 1 << 2;\n      uniformValues.uFSprite = uniformValues.uSprite = new Float32Array([sprite.col, sprite.row, sprite.total, sprite.blend ? 1 : 0]);\n      this.useSprite = true;\n    }\n    if (colorOverLifetime?.color) {\n      macros.push(['COLOR_OVER_LIFETIME', true]);\n      shaderCacheId |= 1 << 4;\n      uniformValues.uColorOverLifetime = colorOverLifetime.color instanceof Texture ? colorOverLifetime.color : Texture.createWithData(engine, imageDataFromGradient(colorOverLifetime.color));\n    }\n    if (colorOverLifetime?.opacity) {\n      uniformValues.uOpacityOverLifetimeValue = colorOverLifetime.opacity.toUniform(vertexKeyFrameMeta);\n    } else {\n      uniformValues.uOpacityOverLifetimeValue = createValueGetter(1).toUniform(vertexKeyFrameMeta);\n    }\n\n    ['x', 'y', 'z'].forEach((pro, i) => {\n      let defL = 0;\n      let defO = 0;\n\n      if (linearVelOverLifetime?.[pro]) {\n        uniformValues[`uLinear${pro.toUpperCase()}ByLifetimeValue`] = linearVelOverLifetime[pro].toUniform(vertexKeyFrameMeta);\n        defL = 1;\n        shaderCacheId |= 1 << (7 + i);\n        linearVelOverLifetime.enabled = true;\n      }\n      macros.push([`LINEAR_VEL_${pro.toUpperCase()}`, defL]);\n      if (orbitalVelOverLifetime?.[pro]) {\n        uniformValues[`uOrb${pro.toUpperCase()}ByLifetimeValue`] = orbitalVelOverLifetime[pro].toUniform(vertexKeyFrameMeta);\n        defO = 1;\n        shaderCacheId |= 1 << (10 + i);\n        useOrbitalVel = true;\n        orbitalVelOverLifetime.enabled = true;\n      }\n      macros.push([`ORB_VEL_${pro.toUpperCase()}`, defO]);\n    });\n    if (linearVelOverLifetime?.asMovement) {\n      macros.push(['AS_LINEAR_MOVEMENT', true]);\n      shaderCacheId |= 1 << 5;\n    }\n\n    if (useOrbitalVel) {\n      if (orbitalVelOverLifetime?.asRotation) {\n        macros.push(['AS_ORBITAL_MOVEMENT', true]);\n        shaderCacheId |= 1 << 6;\n      }\n      uniformValues.uOrbCenter = new Float32Array(orbitalVelOverLifetime?.center || [0, 0, 0]);\n    }\n\n    uniformValues.uSizeByLifetimeValue = sizeOverLifetime?.x.toUniform(vertexKeyFrameMeta);\n    if (sizeOverLifetime?.separateAxes) {\n      macros.push(['SIZE_Y_BY_LIFE', 1]);\n      shaderCacheId |= 1 << 14;\n      uniformValues.uSizeYByLifetimeValue = sizeOverLifetime?.y?.toUniform(vertexKeyFrameMeta);\n    }\n    if (rotationOverLifetime?.z) {\n      uniformValues.uRZByLifeTimeValue = rotationOverLifetime.z.toUniform(vertexKeyFrameMeta);\n      shaderCacheId |= 1 << 15;\n      macros.push(['ROT_Z_LIFETIME', 1]);\n    }\n    if (rotationOverLifetime?.x) {\n      uniformValues.uRXByLifeTimeValue = rotationOverLifetime.x.toUniform(vertexKeyFrameMeta);\n      shaderCacheId |= 1 << 16;\n      macros.push(['ROT_X_LIFETIME', 1]);\n    }\n    if (rotationOverLifetime?.y) {\n      uniformValues.uRYByLifeTimeValue = rotationOverLifetime.y.toUniform(vertexKeyFrameMeta);\n      shaderCacheId |= 1 << 17;\n      macros.push(['ROT_Y_LIFETIME', 1]);\n    }\n    if (rotationOverLifetime?.asRotation) {\n      macros.push(['ROT_LIFETIME_AS_MOVEMENT', 1]);\n      shaderCacheId |= 1 << 18;\n    }\n    uniformValues.uGravityModifierValue = gravityModifier.toUniform(vertexKeyFrameMeta);\n\n    if (forceTarget) {\n      macros.push(['FINAL_TARGET', true]);\n      shaderCacheId |= 1 << 19;\n      uniformValues.uFinalTarget = new Float32Array(forceTarget.target || [0, 0, 0]);\n      uniformValues.uForceCurve = forceTarget.curve.toUniform(vertexKeyFrameMeta);\n    }\n\n    if (halfFloatTexture && fragmentKeyFrameMeta.max) {\n      shaderCacheId |= 1 << 20;\n      uniformValues.uFCurveValueTexture = generateHalfFloatTexture(engine, ValueGetter.getAllData(fragmentKeyFrameMeta, true) as Uint16Array, fragmentKeyFrameMeta.index, 1);\n    } else {\n      uniformValues.uFCurveValues = ValueGetter.getAllData(fragmentKeyFrameMeta);\n    }\n    const vertexCurveTexture = vertexKeyFrameMeta.max + vertexKeyFrameMeta.curves.length - 32 > maxVertexUniforms;\n\n    // if (getConfig(RENDER_PREFER_LOOKUP_TEXTURE)) {\n    //   vertexCurveTexture = true;\n    // }\n    if (level === 2) {\n      vertexKeyFrameMeta.max = -1;\n      vertexKeyFrameMeta.index = meshSlots ? meshSlots[0] : getSlot(vertexKeyFrameMeta.index);\n      if (fragmentKeyFrameMeta.index > 0) {\n        fragmentKeyFrameMeta.max = -1;\n        fragmentKeyFrameMeta.index = meshSlots ? meshSlots[1] : getSlot(fragmentKeyFrameMeta.index);\n      }\n    }\n    if (vertexCurveTexture && halfFloatTexture && enableVertexTexture) {\n      const tex = generateHalfFloatTexture(engine, ValueGetter.getAllData(vertexKeyFrameMeta, true) as Uint16Array, vertexKeyFrameMeta.index, 1);\n\n      uniformValues.uVCurveValueTexture = tex;\n      vertex_lookup_texture = 1;\n    } else {\n      uniformValues.uVCurveValues = ValueGetter.getAllData(vertexKeyFrameMeta);\n    }\n    const shaderCache = ['-p:', renderMode, shaderCacheId, vertexKeyFrameMeta.index, vertexKeyFrameMeta.max, fragmentKeyFrameMeta.index, fragmentKeyFrameMeta.max].join('+');\n\n    macros.push(\n      ['VERT_CURVE_VALUE_COUNT', vertexKeyFrameMeta.index],\n      ['FRAG_CURVE_VALUE_COUNT', fragmentKeyFrameMeta.index],\n      ['VERT_MAX_KEY_FRAME_COUNT', vertexKeyFrameMeta.max],\n      ['FRAG_MAX_KEY_FRAME_COUNT', fragmentKeyFrameMeta.max],\n    );\n    this.VERT_MAX_KEY_FRAME_COUNT = vertexKeyFrameMeta.max;\n\n    const fragment = particleFrag;\n    const originalVertex = `#define LOOKUP_TEXTURE_CURVE ${vertex_lookup_texture}\\n${particleVert}`;\n    const vertex = originalVertex;\n\n    const shader = {\n      fragment,\n      vertex,\n      glslVersion: level === 1 ? GLSLVersion.GLSL1 : GLSLVersion.GLSL3,\n      shared: true,\n      cacheId: shaderCache,\n      macros,\n      name: `particle#${name}`,\n    };\n    const mtlOptions: MaterialProps = {\n      shader,\n    };\n    const preMulAlpha = getPreMultiAlpha(blending);\n\n    uniformValues.uTexOffset = new Float32Array(diffuse ? [1 / diffuse.getWidth(), 1 / diffuse.getHeight()] : [0, 0]);\n    uniformValues.uMaskTex = diffuse;\n    uniformValues.uColorParams = new Float32Array([diffuse ? 1 : 0, +preMulAlpha, 0, +(!!occlusion && !transparentOcclusion)]);\n    uniformValues.uParams = [0, 0, 0, 0];\n    uniformValues.uAcceleration = [gravity?.[0] || 0, gravity?.[1] || 0, gravity?.[2] || 0, 0];\n    // mtlOptions.uniformValues = uniformValues;\n\n    const material = Material.create(engine, mtlOptions);\n\n    material.blending = true;\n    material.depthTest = true;\n    material.depthMask = !!occlusion;\n    material.stencilRef = mask ? [mask, mask] : undefined;\n    setMaskMode(material, maskMode);\n    setBlendMode(material, blending);\n    setSideMode(material, side);\n\n    Object.keys(uniformValues).map(name => {\n      const value = uniformValues[name];\n\n      if (value instanceof Texture) {\n        material.setTexture(name, value);\n\n        return;\n      }\n      const res: Vector4[] = [];\n\n      switch (particleUniformTypeMap[name]) {\n        case 'vec4':\n          material.setVector4(name, Vector4.fromArray(value));\n\n          break;\n        case 'vec3':\n          material.setVector3(name, Vector3.fromArray(value));\n\n          break;\n        case 'vec2':\n          material.setVector2(name, Vector2.fromArray(value));\n\n          break;\n        case 'vec4Array':\n\n          for (let i = 0; i < value.length; i = i + 4) {\n            const v = new Vector4(value[i], value[i + 1], value[i + 2], value[i + 3]);\n\n            res.push(v);\n          }\n          material.setVector4Array(name, res);\n          res.length = 0;\n\n          break;\n        default:\n          console.warn(`Uniform ${name}'s type not in typeMap.`);\n      }\n    });\n\n    material.setVector3('emissionColor', new Vector3(0, 0, 0));\n    material.setFloat('emissionIntensity', 0.0);\n\n    const geometry = Geometry.create(engine, generateGeometryProps(maxCount * 4, this.useSprite, `particle#${name}`));\n    const mesh = Mesh.create(engine, {\n      name: `MParticle_${name}`,\n      // priority: listIndex,\n      material,\n      geometry,\n    });\n\n    this.anchor = anchor;\n    this.mesh = mesh;\n    this.geometry = mesh.firstGeometry();\n    this.forceTarget = forceTarget;\n    this.sizeOverLifetime = sizeOverLifetime;\n    this.speedOverLifetime = speedOverLifetime;\n    this.linearVelOverLifetime = linearVelOverLifetime;\n    this.orbitalVelOverLifetime = orbitalVelOverLifetime;\n    this.orbitalVelOverLifetime = orbitalVelOverLifetime;\n    this.gravityModifier = gravityModifier;\n    this.rotationOverLifetime = rotationOverLifetime;\n    this.maxCount = maxCount;\n    // this.duration = duration;\n    this.textureOffsets = textureFlip ? [0, 0, 1, 0, 0, 1, 1, 1] : [0, 1, 0, 0, 1, 1, 1, 0];\n    this.time = 0;\n  }\n  // get time () {\n  //   // const value = this.mesh.material.getVector4('uParams')!;\n\n  //   // return value.x;\n  //   return this._time;\n  // }\n  // set time (value: number) {\n  //   this._time = value;\n  //   // this.mesh.material.setVector4('uParams', new Vector4(+v, this.duration, 0, 0));\n  // }\n\n  getPointColor (index: number) {\n    const data = this.geometry.getAttributeData('aRot');\n    const i = index * 32 + 4;\n\n    assertExist(data);\n\n    return [data[i], data[i + 1], data[i + 2], data[i + 3]];\n  }\n\n  clearPoints () {\n    this.resetGeometryData(this.geometry);\n    this.particleCount = 0;\n    this.geometry.setDrawCount(0);\n    this.maxParticleBufferCount = 0;\n  }\n\n  resetGeometryData (geometry: Geometry) {\n    const names = geometry.getAttributeNames();\n    const index = geometry.getIndexData();\n\n    for (let i = 0; i < names.length; i++) {\n      const name = names[i];\n      const data = geometry.getAttributeData(name);\n\n      if (data) {\n        // @ts-expect-error\n        geometry.setAttributeData(name, new data.constructor(0));\n      }\n    }\n    // @ts-expect-error\n    geometry.setIndexData(new index.constructor(0));\n  }\n\n  onUpdate (dt: number) {\n    const aPosArray = this.geometry.getAttributeData('aPos') as Float32Array; // vector3\n    const vertexCount = Math.ceil(aPosArray.length / 12);\n\n    this.applyTranslation(vertexCount, dt);\n    this.applyRotation(vertexCount, dt);\n    this.applyLinearMove(vertexCount, dt);\n  }\n\n  minusTime (time: number) {\n    const aOffset = this.geometry.getAttributeData('aOffset') as Float32Array;\n\n    for (let i = 0; i < aOffset.length; i += 4) {\n      aOffset[i + 2] -= time;\n    }\n    this.geometry.setAttributeData('aOffset', aOffset);\n    this.time -= time;\n  }\n\n  removePoint (index: number) {\n    if (index < this.particleCount) {\n      this.geometry.setAttributeSubData('aOffset', index * 16, new Float32Array(16));\n    }\n  }\n\n  setPoint (index: number, point: Point) {\n    const maxCount = this.maxCount;\n\n    if (index < maxCount) {\n      const particleCount = index + 1;\n      const vertexCount = particleCount * 4;\n      const geometry = this.geometry;\n      const increaseBuffer = particleCount > this.maxParticleBufferCount;\n      let inc = 1;\n\n      if (this.particleCount > 300) {\n        inc = (this.particleCount + 100) / this.particleCount;\n      } else if (this.particleCount > 100) {\n        inc = 1.4;\n      } else if (this.particleCount > 0) {\n        inc = 2;\n      }\n      const pointData: Record<string, Float32Array> = {\n        aPos: new Float32Array(48),\n        aRot: new Float32Array(32),\n        aOffset: new Float32Array(16),\n        aTranslation: new Float32Array(12),\n        aLinearMove:new Float32Array(12),\n        aRotation0: new Float32Array(36),\n      };\n      const useSprite = this.useSprite;\n\n      if (useSprite) {\n        pointData.aSprite = new Float32Array(12);\n      }\n\n      const tempPos = new Vector3();\n      const tempQuat = new Quaternion();\n      const scale = new Vector3(1, 1, 1);\n\n      point.transform.assignWorldTRS(tempPos, tempQuat, scale);\n      const tempEuler = Transform.getRotation(tempQuat, new Euler());\n\n      const position = tempPos.toArray();\n      const rotation = tempEuler.toArray();\n\n      const offsets = this.textureOffsets;\n      const off = [0, 0, point.delay, point.lifetime];\n      const wholeUV = [0, 0, 1, 1];\n      const vel = point.vel;\n      const color: number[] = point.color;\n      const sizeOffsets = [-.5, .5, -.5, -.5, .5, .5, .5, -.5];\n      const seed = Math.random();\n      let sprite;\n\n      if (useSprite) {\n        sprite = point.sprite;\n      }\n\n      for (let j = 0; j < 4; j++) {\n        const offset = j * 2;\n        const j3 = j * 3;\n        const j4 = j * 4;\n        const j12 = j * 12;\n        const j8 = j * 8;\n\n        pointData.aPos.set(position, j12);\n        vel.fill(pointData.aPos, j12 + 3);\n        pointData.aRot.set(rotation, j8);\n        pointData.aRot[j8 + 3] = seed;\n        pointData.aRot.set(color, j8 + 4);\n\n        if (useSprite) {\n          // @ts-expect-error\n          pointData.aSprite.set(sprite, j3);\n        }\n        const uv = point.uv || wholeUV;\n\n        if (uv) {\n          const uvy = useSprite ? (1 - offsets[offset + 1]) : offsets[offset + 1];\n\n          off[0] = uv[0] + offsets[offset] * uv[2];\n          off[1] = uv[1] + uvy * uv[3];\n        }\n        pointData.aOffset.set(off, j4);\n        const ji = (j + j);\n        const sx = (sizeOffsets[ji] - this.anchor.x) * scale.x;\n        const sy = (sizeOffsets[ji + 1] - this.anchor.y) * scale.y;\n\n        for (let k = 0; k < 3; k++) {\n          pointData.aPos[j12 + 6 + k] = point.dirX.getElement(k) * sx;\n          pointData.aPos[j12 + 9 + k] = point.dirY.getElement(k) * sy;\n        }\n      }\n      const indexData = new Uint16Array([0, 1, 2, 2, 1, 3].map(x => x + index * 4));\n\n      if (increaseBuffer) {\n        const baseIndexData = geometry.getIndexData() as Uint16Array;\n        const idx = enlargeBuffer(baseIndexData, particleCount * 6, maxCount * 6, inc);\n\n        idx.set(indexData, index * 6);\n        geometry.setIndexData(idx);\n        this.maxParticleBufferCount = idx.length / 6;\n      } else {\n        geometry.setIndexSubData(index * 6, indexData);\n      }\n\n      Object.keys(pointData).forEach(name => {\n        const data = pointData[name];\n        const attrSize = geometry.getAttributeStride(name) / Float32Array.BYTES_PER_ELEMENT;\n\n        if (increaseBuffer) {\n          const baseData = geometry.getAttributeData(name);\n\n          assertExist(baseData);\n\n          const geoData = enlargeBuffer(baseData, vertexCount * attrSize, maxCount * 4 * attrSize, inc);\n\n          geoData.set(data, data.length * index);\n          geometry.setAttributeData(name, geoData);\n        } else {\n          geometry.setAttributeSubData(name, data.length * index, data);\n        }\n      });\n      this.particleCount = Math.max(particleCount, this.particleCount);\n      geometry.setDrawCount(this.particleCount * 6);\n    }\n  }\n\n  private applyTranslation (vertexCount: number, deltaTime: number) {\n    const localTime = this.time;\n    let aTranslationArray = this.geometry.getAttributeData('aTranslation') as Float32Array;\n    const aVelArray = this.geometry.getAttributeData('aVel') as Float32Array; // vector3\n    const aOffsetArray = this.geometry.getAttributeData('aOffset') as Float32Array;\n\n    if (aTranslationArray.length < vertexCount * 3) {\n      aTranslationArray = this.expandArray(aTranslationArray, vertexCount * 3);\n    }\n    // const velocity = this.cachedVelocity;\n    let velocityX = 0;\n    let velocityY = 0;\n    let velocityZ = 0;\n    const uAcceleration = this.mesh.material.getVector4('uAcceleration');\n    const uGravityModifierValue = this.mesh.material.getVector4('uGravityModifierValue');\n\n    for (let i = 0; i < vertexCount; i += 4) {\n      const velOffset = i * 12 + 3;\n\n      velocityX = aVelArray[velOffset];\n      velocityY = aVelArray[velOffset + 1];\n      velocityZ = aVelArray[velOffset + 2];\n      // velocity.set(aVelArray[velOffset], aVelArray[velOffset + 1], aVelArray[velOffset + 2]);\n      const dt = localTime - aOffsetArray[i * 4 + 2];// 相对delay的时间\n      const duration = aOffsetArray[i * 4 + 3];\n\n      if (uAcceleration && uGravityModifierValue) {\n        const d = this.gravityModifier.getIntegrateValue(0, dt, duration);\n        // const acc = this.tempVector3.set(uAcceleration.x * d, uAcceleration.y * d, uAcceleration.z * d);\n        const accX = uAcceleration.x * d;\n        const accY = uAcceleration.y * d;\n        const accZ = uAcceleration.z * d;\n\n        // speedIntegrate = speedOverLifetime.getIntegrateValue(0, time, duration);\n        if (this.speedOverLifetime) {\n        // dt / dur 归一化\n          const speed = this.speedOverLifetime.getValue(dt / duration);\n\n          velocityX = velocityX * speed + accX;\n          velocityY = velocityY * speed + accY;\n          velocityZ = velocityZ * speed + accZ;\n          // velocity.multiply(speed).add(acc);\n        } else {\n          velocityX = velocityX + accX;\n          velocityY = velocityY + accY;\n          velocityZ = velocityZ + accZ;\n          // velocity.add(acc);\n        }\n      }\n\n      const aTranslationOffset = i * 3;\n\n      if (aOffsetArray[i * 4 + 2] < localTime) {\n        // const translation = velocity.multiply(deltaTime / 1000);\n        const aTranslationX = velocityX * (deltaTime / 1000);\n        const aTranslationY = velocityY * (deltaTime / 1000);\n        const aTranslationZ = velocityZ * (deltaTime / 1000);\n\n        aTranslationArray[aTranslationOffset] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 1] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 2] += aTranslationZ;\n\n        aTranslationArray[aTranslationOffset + 3] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 4] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 5] += aTranslationZ;\n\n        aTranslationArray[aTranslationOffset + 6] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 7] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 8] += aTranslationZ;\n\n        aTranslationArray[aTranslationOffset + 9] += aTranslationX;\n        aTranslationArray[aTranslationOffset + 10] += aTranslationY;\n        aTranslationArray[aTranslationOffset + 11] += aTranslationZ;\n      }\n    }\n    this.geometry.setAttributeData('aTranslation', aTranslationArray);\n  }\n\n  private applyRotation (vertexCount: number, deltaTime: number) {\n    let aRotationArray = this.geometry.getAttributeData('aRotation0') as Float32Array;\n    const aOffsetArray = this.geometry.getAttributeData('aOffset') as Float32Array;\n    const aRotArray = this.geometry.getAttributeData('aRot') as Float32Array; // vector3\n    const aSeedArray = this.geometry.getAttributeData('aSeed') as Float32Array; // float\n    const localTime = this.time;\n    const aRotationMatrix = this.cachedRotationMatrix;\n\n    if (aRotationArray.length < vertexCount * 9) {\n      aRotationArray = this.expandArray(aRotationArray, vertexCount * 9);\n    }\n\n    for (let i = 0; i < vertexCount; i += 4) {\n      const time = localTime - aOffsetArray[i * 4 + 2];\n      const duration = aOffsetArray[i * 4 + 3];\n      const life = clamp(time / duration, 0.0, 1.0);\n      const aRotOffset = i * 8;\n      const aRot = this.cachedRotationVector3.set(aRotArray[aRotOffset], aRotArray[aRotOffset + 1], aRotArray[aRotOffset + 2]);\n      const aSeed = aSeedArray[i * 8 + 3];\n\n      const rotation = aRot;\n\n      if (!this.rotationOverLifetime) {\n        aRotationMatrix.setZero();\n      } else {\n      // Adjust rotation based on the specified lifetime components\n        if (this.rotationOverLifetime.x) {\n          if (this.rotationOverLifetime.x instanceof RandomValue) {\n            rotation.x += this.rotationOverLifetime.x.getValue(life, aSeed);\n          } else {\n            rotation.x += this.rotationOverLifetime.x.getValue(life);\n          }\n        }\n        if (this.rotationOverLifetime.y) {\n          if (this.rotationOverLifetime.y instanceof RandomValue) {\n            rotation.y += this.rotationOverLifetime.y.getValue(life, aSeed);\n          } else {\n            rotation.y += this.rotationOverLifetime.y.getValue(life);\n          }\n        }\n        if (this.rotationOverLifetime.z) {\n          if (this.rotationOverLifetime.z instanceof RandomValue) {\n            rotation.z += this.rotationOverLifetime.z.getValue(life, aSeed);\n          } else {\n            rotation.z += this.rotationOverLifetime.z.getValue(life);\n          }\n        }\n      }\n      // else {\n      // // Adjust rotation based on the specified lifetime components\n      //   if (this.rotationOverLifetime.x) {\n      //     if (this.rotationOverLifetime.x instanceof RandomValue) {\n      //       rotation.x += this.rotationOverLifetime.x.getIntegrateValue(0.0, life, aSeed) * duration;\n      //     } else {\n      //       rotation.x += this.rotationOverLifetime.x.getIntegrateValue(0.0, life, duration) * duration;\n      //     }\n      //   }\n      //   if (this.rotationOverLifetime.y) {\n      //     if (this.rotationOverLifetime.y instanceof RandomValue) {\n      //       rotation.y += this.rotationOverLifetime.y.getIntegrateValue(0.0, life, aSeed) * duration;\n      //     } else {\n      //       rotation.y += this.rotationOverLifetime.y.getIntegrateValue(0.0, life, duration) * duration;\n      //     }\n      //   }\n      //   if (this.rotationOverLifetime.z) {\n      //     if (this.rotationOverLifetime.z instanceof RandomValue) {\n      //       rotation.z += this.rotationOverLifetime.z.getIntegrateValue(0.0, life, aSeed) * duration;\n      //     } else {\n      //       rotation.z += this.rotationOverLifetime.z.getIntegrateValue(0.0, life, duration) * duration;\n      //     }\n      //   }\n      // }\n\n      // If the rotation vector is zero, return the identity matrix\n      if (rotation.dot(rotation) === 0.0) {\n        aRotationMatrix.identity();\n      }\n\n      const d2r = Math.PI / 180;\n      const rotationXD2r = rotation.x * d2r;\n      const rotationYD2r = rotation.y * d2r;\n      const rotationZD2r = rotation.z * d2r;\n\n      const sinRX = Math.sin(rotationXD2r);\n      const sinRY = Math.sin(rotationYD2r);\n      const sinRZ = Math.sin(rotationZD2r);\n\n      const cosRX = Math.cos(rotationXD2r);\n      const cosRY = Math.cos(rotationYD2r);\n      const cosRZ = Math.cos(rotationZD2r);\n\n      // rotZ * rotY * rotX\n      aRotationMatrix.set(cosRZ, -sinRZ, 0., sinRZ, cosRZ, 0., 0., 0., 1.); //rotZ\n      aRotationMatrix.multiply(this.tempMatrix3.set(cosRY, 0., sinRY, 0., 1., 0., -sinRY, 0, cosRY)); //rotY\n      aRotationMatrix.multiply(this.tempMatrix3.set(1., 0., 0., 0, cosRX, -sinRX, 0., sinRX, cosRX)); //rotX\n\n      const aRotationOffset = i * 9;\n      const matrixArray = aRotationMatrix.elements;\n\n      aRotationArray.set(matrixArray, aRotationOffset);\n      if (i + 4 <= vertexCount) {\n        aRotationArray.set(matrixArray, aRotationOffset + 9);\n        aRotationArray.set(matrixArray, aRotationOffset + 18);\n        aRotationArray.set(matrixArray, aRotationOffset + 27);\n      }\n    }\n\n    this.geometry.setAttributeData('aRotation0', aRotationArray);\n  }\n\n  private applyLinearMove (vertexCount: number, deltaTime: number) {\n    let aLinearMoveArray = this.geometry.getAttributeData('aLinearMove') as Float32Array;\n    const aOffsetArray = this.geometry.getAttributeData('aOffset') as Float32Array;\n    const aSeedArray = this.geometry.getAttributeData('aSeed') as Float32Array; // float\n    const localTime = this.time;\n\n    if (aLinearMoveArray.length < vertexCount * 3) {\n      aLinearMoveArray = this.expandArray(aLinearMoveArray, vertexCount * 3);\n    }\n\n    const linearMove = this.cachedLinearMove;\n\n    if (this.linearVelOverLifetime && this.linearVelOverLifetime.enabled) {\n      for (let i = 0; i < vertexCount; i += 4) {\n        const time = localTime - aOffsetArray[i * 4 + 2];\n        const duration = aOffsetArray[i * 4 + 3];\n        // const life = math.clamp(time / duration, 0.0, 1.0);\n        const lifetime = time / duration;\n        const aSeed = aSeedArray[i * 8 + 3];\n\n        linearMove.setZero();\n\n        if (this.linearVelOverLifetime.asMovement) {\n          if (this.linearVelOverLifetime.x) {\n            if (this.linearVelOverLifetime.x instanceof RandomValue) {\n              linearMove.x = this.linearVelOverLifetime.x.getValue(lifetime, aSeed);\n            } else {\n              linearMove.x = this.linearVelOverLifetime.x.getValue(lifetime);\n            }\n          }\n          if (this.linearVelOverLifetime.y) {\n            if (this.linearVelOverLifetime.y instanceof RandomValue) {\n              linearMove.y = this.linearVelOverLifetime.y.getValue(lifetime, aSeed);\n            } else {\n              linearMove.y = this.linearVelOverLifetime.y.getValue(lifetime);\n            }\n          }\n          if (this.linearVelOverLifetime.z) {\n            if (this.linearVelOverLifetime.z instanceof RandomValue) {\n              linearMove.z = this.linearVelOverLifetime.z.getValue(lifetime, aSeed);\n            } else {\n              linearMove.z = this.linearVelOverLifetime.z.getValue(lifetime);\n            }\n          }\n        } else {\n        // Adjust rotation based on the specified lifetime components\n          if (this.linearVelOverLifetime.x) {\n            if (this.linearVelOverLifetime.x instanceof RandomValue) {\n              linearMove.x = this.linearVelOverLifetime.x.getIntegrateValue(0.0, time, aSeed);\n            } else {\n              linearMove.x = this.linearVelOverLifetime.x.getIntegrateValue(0.0, time, duration);\n            }\n          }\n          if (this.linearVelOverLifetime.y) {\n            if (this.linearVelOverLifetime.y instanceof RandomValue) {\n              linearMove.y = this.linearVelOverLifetime.y.getIntegrateValue(0.0, time, aSeed);\n            } else {\n              linearMove.y = this.linearVelOverLifetime.y.getIntegrateValue(0.0, time, duration);\n            }\n          }\n          if (this.linearVelOverLifetime.z) {\n            if (this.linearVelOverLifetime.z instanceof RandomValue) {\n              linearMove.z = this.linearVelOverLifetime.z.getIntegrateValue(0.0, time, aSeed);\n            } else {\n              linearMove.z = this.linearVelOverLifetime.z.getIntegrateValue(0.0, time, duration);\n            }\n          }\n        }\n        const aLinearMoveOffset = i * 3;\n\n        aLinearMoveArray[aLinearMoveOffset] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 1] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 2] = linearMove.z;\n\n        aLinearMoveArray[aLinearMoveOffset + 3] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 4] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 5] = linearMove.z;\n\n        aLinearMoveArray[aLinearMoveOffset + 6] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 7] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 8] = linearMove.z;\n\n        aLinearMoveArray[aLinearMoveOffset + 9] = linearMove.x;\n        aLinearMoveArray[aLinearMoveOffset + 10] = linearMove.y;\n        aLinearMoveArray[aLinearMoveOffset + 11] = linearMove.z;\n      }\n    }\n    this.geometry.setAttributeData('aLinearMove', aLinearMoveArray);\n  }\n\n  private expandArray (array: Float32Array, newSize: number): Float32Array {\n    const newArr = new Float32Array(newSize);\n\n    newArr.set(array);\n\n    return newArr;\n  }\n}\n\nconst gl2UniformSlots = [10, 32, 64, 160];\n\nfunction getSlot (count: number): number {\n  for (let w = 0; w < gl2UniformSlots.length; w++) {\n    const slot = gl2UniformSlots[w];\n\n    if (slot > count) {\n      return slot;\n    }\n  }\n\n  return count || gl2UniformSlots[0];\n}\n\nfunction generateGeometryProps (\n  maxVertex: number,\n  useSprite?: boolean,\n  name?: string,\n): GeometryProps {\n  const bpe = Float32Array.BYTES_PER_ELEMENT;\n  const j12 = bpe * 12;\n  const attributes: Record<string, Attribute> = {\n    aPos: { size: 3, offset: 0, stride: j12, data: new Float32Array(0) },\n    aVel: { size: 3, offset: 3 * bpe, stride: j12, dataSource: 'aPos' },\n    aDirX: { size: 3, offset: 6 * bpe, stride: j12, dataSource: 'aPos' },\n    aDirY: { size: 3, offset: 9 * bpe, stride: j12, dataSource: 'aPos' },\n    //\n    aRot: { size: 3, offset: 0, stride: 8 * bpe, data: new Float32Array(0) },\n    aSeed: { size: 1, offset: 3 * bpe, stride: 8 * bpe, dataSource: 'aRot' },\n    aColor: { size: 4, offset: 4 * bpe, stride: 8 * bpe, dataSource: 'aRot' },\n    //\n    aOffset: { size: 4, stride: 4 * bpe, data: new Float32Array(0) },\n    aTranslation: { size: 3, data: new Float32Array(0) },\n    aLinearMove: { size: 3, data: new Float32Array(0) },\n    aRotation0: { size: 3, offset: 0, stride: 9 * bpe, data: new Float32Array(0) },\n    aRotation1: { size: 3, offset: 3 * bpe, stride: 9 * bpe, dataSource: 'aRotation0' },\n    aRotation2: { size: 3, offset: 6 * bpe, stride: 9 * bpe, dataSource: 'aRotation0' },\n  };\n\n  if (useSprite) {\n    attributes['aSprite'] = { size: 3, stride: 3 * bpe, data: new Float32Array(0) };\n  }\n\n  return { attributes, indices: { data: new Uint16Array(0) }, name, maxVertex };\n}\n\nexport function getParticleMeshShader (\n  item: spec.ParticleItem,\n  gpuCapability: GPUCapability,\n  env = '',\n) {\n  const props = item.content;\n  const renderMode = +(props.renderer?.renderMode || 0);\n  const macros: ShaderMacros = [\n    ['RENDER_MODE', renderMode],\n    ['ENV_EDITOR', env === PLAYER_OPTIONS_ENV_EDITOR],\n  ];\n  const { level, detail } = gpuCapability;\n  const vertexKeyFrameMeta = createKeyFrameMeta();\n  const fragmentKeyFrameMeta = createKeyFrameMeta();\n  const enableVertexTexture = detail.maxVertexUniforms > 0;\n  const { speedOverLifetime } = props.positionOverLifetime ?? {};\n  let vertex_lookup_texture = 0;\n  let shaderCacheId = 0;\n\n  if (enableVertexTexture) {\n    macros.push(['ENABLE_VERTEX_TEXTURE', true]);\n  }\n\n  if (speedOverLifetime) {\n    macros.push(['SPEED_OVER_LIFETIME', true]);\n    shaderCacheId |= 1 << 1;\n    getKeyFrameMetaByRawValue(vertexKeyFrameMeta, speedOverLifetime);\n  }\n  const sprite = props.textureSheetAnimation;\n\n  if (sprite && sprite.animate) {\n    macros.push(['USE_SPRITE', true]);\n    shaderCacheId |= 1 << 2;\n  }\n\n  const colorOverLifetime = props.colorOverLifetime;\n\n  if (colorOverLifetime && colorOverLifetime.color) {\n    macros.push(['COLOR_OVER_LIFETIME', true]);\n    shaderCacheId |= 1 << 4;\n  }\n\n  const opacity = colorOverLifetime && colorOverLifetime.opacity;\n\n  if (opacity) {\n    getKeyFrameMetaByRawValue(vertexKeyFrameMeta, opacity);\n  }\n  const positionOverLifetime = props.positionOverLifetime;\n  let useOrbitalVel;\n\n  ['x', 'y', 'z'].forEach((pro, i) => {\n    let defL = 0;\n    const linearPro = 'linear' + pro.toUpperCase();\n    const orbitalPro = 'orbital' + pro.toUpperCase();\n\n    if (positionOverLifetime?.[linearPro as keyof spec.ParticlePositionOverLifetime]) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime[linearPro as keyof spec.ParticlePositionOverLifetime] as spec.NumberExpression);\n      defL = 1;\n      shaderCacheId |= 1 << (7 + i);\n    }\n    macros.push([`LINEAR_VEL_${pro.toUpperCase()}`, defL]);\n    let defO = 0;\n\n    if (positionOverLifetime?.[orbitalPro as keyof spec.ParticlePositionOverLifetime]) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime[orbitalPro as keyof spec.ParticlePositionOverLifetime] as spec.NumberExpression);\n      defO = 1;\n      shaderCacheId |= 1 << (10 + i);\n      useOrbitalVel = true;\n    }\n    macros.push([`ORB_VEL_${pro.toUpperCase()}`, defO]);\n  });\n  if (positionOverLifetime?.asMovement) {\n    macros.push(['AS_LINEAR_MOVEMENT', true]);\n    shaderCacheId |= 1 << 5;\n  }\n  if (useOrbitalVel) {\n    if (positionOverLifetime?.asRotation) {\n      macros.push(['AS_ORBITAL_MOVEMENT', true]);\n      shaderCacheId |= 1 << 6;\n    }\n  }\n\n  if (props.sizeOverLifetime) {\n    const sizeOverLifetime = props.sizeOverLifetime;\n    const separateAxes = sizeOverLifetime.separateAxes;\n\n    if (separateAxes) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, sizeOverLifetime.x);\n      macros.push(['SIZE_Y_BY_LIFE', 1]);\n      shaderCacheId |= 1 << 14;\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, sizeOverLifetime.y);\n    } else {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, sizeOverLifetime.size);\n    }\n  }\n\n  if (props.rotationOverLifetime) {\n    const rot = props.rotationOverLifetime;\n\n    if (rot.z) {\n      getKeyFrameMetaByRawValue(vertexKeyFrameMeta, rot?.z);\n      shaderCacheId |= 1 << 15;\n      macros.push(['ROT_Z_LIFETIME', 1]);\n    }\n    if (rot.separateAxes) {\n      if (rot.x) {\n        getKeyFrameMetaByRawValue(vertexKeyFrameMeta, rot.x);\n        shaderCacheId |= 1 << 16;\n        macros.push(['ROT_X_LIFETIME', 1]);\n      }\n      if (rot.y) {\n        getKeyFrameMetaByRawValue(vertexKeyFrameMeta, rot.y);\n        shaderCacheId |= 1 << 17;\n        macros.push(['ROT_Y_LIFETIME', 1]);\n      }\n    }\n    if (rot?.asRotation) {\n      macros.push(['ROT_LIFETIME_AS_MOVEMENT', 1]);\n      shaderCacheId |= 1 << 18;\n    }\n  }\n\n  getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime?.gravityOverLifetime);\n  const forceOpt = positionOverLifetime?.forceTarget;\n\n  if (forceOpt) {\n    macros.push(['FINAL_TARGET', true]);\n    shaderCacheId |= 1 << 19;\n    getKeyFrameMetaByRawValue(vertexKeyFrameMeta, positionOverLifetime.forceCurve);\n  }\n  const HALF_FLOAT = detail.halfFloatTexture;\n\n  if (HALF_FLOAT && fragmentKeyFrameMeta.max) {\n    shaderCacheId |= 1 << 20;\n  }\n  const maxVertexUniforms = detail.maxVertexUniforms;\n  let vertexCurveTexture = vertexKeyFrameMeta.max + vertexKeyFrameMeta.curves.length - 32 > maxVertexUniforms;\n\n  if (getConfig(RENDER_PREFER_LOOKUP_TEXTURE)) {\n    vertexCurveTexture = true;\n  }\n  if (level === 2) {\n    vertexKeyFrameMeta.max = -1;\n    // vertexKeyFrameMeta.index = getSlot(vertexKeyFrameMeta.index);\n    if (fragmentKeyFrameMeta.index > 0) {\n      fragmentKeyFrameMeta.max = -1;\n      // fragmentKeyFrameMeta.index = getSlot(fragmentKeyFrameMeta.index);\n    }\n  }\n  if (vertexCurveTexture && HALF_FLOAT && enableVertexTexture) {\n    vertex_lookup_texture = 1;\n  }\n  const shaderCache = ['-p:', renderMode, shaderCacheId, vertexKeyFrameMeta.index, vertexKeyFrameMeta.max, fragmentKeyFrameMeta.index, fragmentKeyFrameMeta.max].join('+');\n  const shader: SharedShaderWithSource = {\n    fragment: particleFrag,\n    vertex: `#define LOOKUP_TEXTURE_CURVE ${vertex_lookup_texture}\\n${particleVert}`,\n    shared: true,\n    cacheId: shaderCache,\n    macros,\n    name: `particle#${item.name}`,\n  };\n\n  macros.push(\n    ['VERT_CURVE_VALUE_COUNT', vertexKeyFrameMeta.index],\n    ['FRAG_CURVE_VALUE_COUNT', fragmentKeyFrameMeta.index],\n    ['VERT_MAX_KEY_FRAME_COUNT', vertexKeyFrameMeta.max],\n    ['FRAG_MAX_KEY_FRAME_COUNT', fragmentKeyFrameMeta.max],\n  );\n\n  return { shader, vertex: vertexKeyFrameMeta.index, fragment: fragmentKeyFrameMeta.index };\n}\n\nexport function modifyMaxKeyframeShader (shader: SharedShaderWithSource, maxVertex: number, maxFrag: number) {\n  const shaderIds = shader.cacheId?.split('+') as Array<string | number>;\n\n  shaderIds[3] = maxVertex;\n  shaderIds[5] = maxFrag;\n  shader.cacheId = shaderIds.join('+');\n\n  if (!shader.macros) {\n    return;\n  }\n\n  for (let i = 0; i < shader.macros.length; i++) {\n    const marco = shader.macros[i];\n\n    if (marco[0] === 'VERT_CURVE_VALUE_COUNT') {\n      marco[1] = maxVertex;\n    } else if (marco[0] === 'FRAG_CURVE_VALUE_COUNT') {\n      marco[1] = maxFrag;\n\n      break;\n    }\n  }\n}\n","import type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport type { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport type { Texture } from '../../texture';\nimport type { TrailMeshProps, TrailPointOptions } from './trail-mesh';\nimport { TrailMesh } from './trail-mesh';\nimport type { ParticleMeshProps, Point } from './particle-mesh';\nimport { ParticleMesh } from './particle-mesh';\nimport type { Mesh, Renderer } from '../../render';\nimport type { Engine } from '../../engine';\nimport { RendererComponent } from '../../components';\nimport type { MaskProcessor } from '../../material/mask-ref-manager';\n\n/**\n * @since 2.0.0\n */\nexport class ParticleSystemRenderer extends RendererComponent {\n  meshes: Mesh[];\n  particleMesh: ParticleMesh;\n  maskManager: MaskProcessor;\n\n  private trailMesh?: TrailMesh;\n\n  constructor (\n    engine: Engine,\n    particleMeshProps?: ParticleMeshProps,\n    trailMeshProps?: TrailMeshProps,\n  ) {\n    super(engine);\n\n    this.name = 'ParticleSystemRenderer';\n    if (particleMeshProps) {\n      this.particleMesh = new ParticleMesh(engine, particleMeshProps);\n    }\n\n    if (trailMeshProps) {\n      this.trailMesh = new TrailMesh(engine, trailMeshProps);\n    }\n\n    const meshes = [this.particleMesh.mesh];\n\n    this.materials.push(this.particleMesh.mesh.material);\n\n    if (this.trailMesh) {\n      meshes.push(this.trailMesh.mesh);\n      this.materials.push(this.trailMesh.mesh.material);\n    }\n\n    this.meshes = meshes;\n  }\n\n  override onStart (): void {\n    this._priority = this.item.renderOrder;\n    for (const mesh of this.meshes) {\n      mesh.onStart();\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    const time = this.particleMesh.time;\n    const uParams = this.particleMesh.mesh.material.getVector4('uParams') ?? new Vector4();\n\n    this.particleMesh.mesh.material.setVector4('uParams', uParams.set(time, this.item.duration, 0, 0));\n  }\n\n  override render (renderer: Renderer): void {\n    this.maskManager.drawStencilMask(renderer);\n    for (const mesh of this.meshes) {\n      mesh.render(renderer);\n    }\n  }\n\n  reset () {\n    this.particleMesh.clearPoints();\n    this.trailMesh?.clearAllTrails();\n  }\n\n  updateTime (now: number, delta: number) {\n    this.particleMesh.time = now;\n    this.particleMesh.onUpdate(delta);\n    if (this.trailMesh) {\n      this.trailMesh.time = now;\n      this.trailMesh.onUpdate(delta);\n    }\n  }\n\n  minusTimeForLoop (duration: number) {\n    this.particleMesh.minusTime(duration);\n    this.trailMesh?.minusTime(duration);\n  }\n\n  updateWorldMatrix (worldMatrix: Matrix4) {\n    this.particleMesh.mesh.worldMatrix = worldMatrix;\n    if (this.trailMesh) {\n      this.trailMesh.mesh.worldMatrix = worldMatrix;\n    }\n  }\n\n  setVisible (visible: boolean) {\n    this.particleMesh.mesh.setVisible(visible);\n    this.trailMesh?.mesh.setVisible(visible);\n  }\n\n  getTextures (): Texture[] {\n    const textures: Texture[] = [];\n    // @ts-expect-error textures 是否可以考虑挂在 Material 上\n    const particleMeshTextures = this.particleMesh.mesh.material.textures;\n\n    Object.keys(particleMeshTextures).forEach(key => {\n      textures.push(particleMeshTextures[key]);\n    });\n    if (this.trailMesh) {\n      // @ts-expect-error 同上\n      const trailMeshTextures = this.trailMesh.mesh.material.textures;\n\n      Object.keys(trailMeshTextures).forEach(key => {\n        textures.push(trailMeshTextures[key]);\n      });\n    }\n\n    return textures;\n  }\n\n  setParticlePoint (index: number, point: Point) {\n    this.particleMesh.setPoint(index, point);\n  }\n\n  removeParticlePoint (index: number) {\n    this.particleMesh.removePoint(index);\n  }\n\n  getParticlePointColor (index: number) {\n    return this.particleMesh.getPointColor(index);\n  }\n\n  hasTrail () {\n    return this.trailMesh !== undefined;\n  }\n\n  clearTrail (pointIndex: number) {\n    this.trailMesh?.clearTrail(pointIndex);\n  }\n\n  addTrailPoint (index: number, position: Vector3, options: TrailPointOptions) {\n    this.trailMesh?.addPoint(index, position, options);\n  }\n\n  setTrailStartPosition (index: number, position: Vector3) {\n    this.trailMesh?.setPointStartPos(index, position);\n  }\n\n  getTrailStartPosition (index: number) {\n    return (this.trailMesh as TrailMesh).getPointStartPos(index);\n  }\n}\n","import type { Ray } from '@galacean/effects-math/es/core/index';\nimport { Euler, Matrix4, Vector2, Vector3 } from '@galacean/effects-math/es/core/index';\nimport type { vec2, vec3, vec4 } from '@galacean/effects-specification';\nimport * as spec from '@galacean/effects-specification';\nimport { Component } from '../../components';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\nimport type { ValueGetter } from '../../math';\nimport { calculateTranslation, createValueGetter, ensureVec3 } from '../../math';\nimport type { Mesh, Renderer } from '../../render';\nimport type { Maskable } from '../../material';\nimport { MaskProcessor } from '../../material';\nimport type { ShapeGenerator, ShapeGeneratorOptions, ShapeParticle } from '../../shape';\nimport { createShape } from '../../shape';\nimport { Texture } from '../../texture';\nimport { Transform } from '../../transform';\nimport type { BoundingBoxSphere, HitTestCustomParams } from '../interact/click-handler';\nimport { HitTestType } from '../interact/click-handler';\nimport { Burst } from './burst';\nimport type { LinkNode } from './link';\nimport { Link } from './link';\nimport type { ParticleMeshProps, Point } from './particle-mesh';\nimport { ParticleSystemRenderer } from './particle-system-renderer';\nimport type { TrailMeshProps } from './trail-mesh';\n\ntype ParticleSystemRayCastOptions = {\n  ray: Ray,\n  radius: number,\n  removeParticle?: boolean,\n  multiple: boolean,\n};\n\ntype ParticleOptions = {\n  startSpeed: ValueGetter<number>,\n  startLifetime: ValueGetter<number>,\n  startDelay: ValueGetter<number>,\n  startColor: ValueGetter<spec.RGBAColorValue>,\n  start3DRotation?: boolean,\n  startRotationX?: ValueGetter<number>,\n  startRotationY?: ValueGetter<number>,\n  startRotationZ?: ValueGetter<number>,\n  startRotation?: ValueGetter<number>,\n  start3DSize: boolean,\n  startSizeX?: ValueGetter<number>,\n  startSizeY?: ValueGetter<number>,\n  startSize?: ValueGetter<number>,\n  sizeAspect?: ValueGetter<number>,\n  startTurbulence: boolean,\n  turbulenceX?: ValueGetter<number>,\n  turbulenceY?: ValueGetter<number>,\n  turbulenceZ?: ValueGetter<number>,\n  turbulence?: [\n    turbulenceX: ValueGetter<number>,\n    turbulenceY: ValueGetter<number>,\n    turbulenceZ: ValueGetter<number>,\n  ],\n  // duration: number,\n  looping: boolean,\n  maxCount: number,\n  gravity: vec3,\n  gravityModifier: ValueGetter<number>,\n  renderLevel?: spec.RenderLevel,\n  particleFollowParent?: boolean,\n  forceTarget?: { curve: ValueGetter<number>, target: spec.vec3 },\n  speedOverLifetime?: ValueGetter<number>,\n  linearVelOverLifetime?: { asMovement?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean },\n  orbitalVelOverLifetime?: { asRotation?: boolean, x?: ValueGetter<number>, y?: ValueGetter<number>, z?: ValueGetter<number>, enabled?: boolean, center?: spec.vec3 },\n};\n\ntype ParticleEmissionOptions = {\n  rateOverTime: ValueGetter<number>,\n  bursts: Burst[],\n  burstOffsets: Record<string, vec3[] | null>,\n};\n\ninterface ParticleTransform {\n  position: Vector3,\n  rotation?: Euler,\n  path?: ValueGetter<vec3>,\n}\n\ntype TrailOptions = {\n  lifetime: ValueGetter<number>,\n  minimumVertexDistance: number,\n  dieWithParticles: boolean,\n  sizeAffectsWidth: boolean,\n  sizeAffectsLifetime: boolean,\n  parentAffectsPosition: boolean,\n  inheritParticleColor: boolean,\n  maxPointPerTrail: number,\n  colorOverLifetime: number[],\n  widthOverTrail: ValueGetter<number>,\n  colorOverTrail: number[],\n  opacityOverLifetime: ValueGetter<number>,\n  texture?: Texture,\n  orderOffset?: number,\n  blending: number,\n  occlusion: boolean,\n  transparentOcclusion: boolean,\n  textureMap?: vec4,\n};\n\ninterface ParticleTextureSheetAnimation {\n  col: number,\n  row: number,\n  total: number,\n  animate: boolean,\n  animationDelay: ValueGetter<number>,\n  animationDuration: ValueGetter<number>,\n  cycles: ValueGetter<number>,\n  endAtLifetime?: ValueGetter<number>,\n  blend?: boolean,\n}\n\ntype ParticleInteraction = {\n  behavior?: spec.ParticleInteractionBehavior,\n  multiple?: boolean,\n  radius: number,\n};\n\nexport interface ParticleSystemOptions extends spec.ParticleOptions {\n  meshSlots?: number[],\n}\n\nexport interface ParticleSystemProps extends Omit<spec.ParticleContent, 'options' | 'renderer' | 'trails' | 'mask'> {\n  options: ParticleSystemOptions,\n  renderer: ParticleSystemRendererOptions,\n  trails?: ParticleTrailProps,\n  mask?: spec.MaskOptions,\n}\n\n// spec.RenderOptions 经过处理\nexport interface ParticleSystemRendererOptions extends Required<Omit<spec.RendererOptions, 'texture' | 'anchor' | 'particleOrigin'>> {\n  // mask: number,\n  texture: Texture,\n  anchor?: vec2,\n  particleOrigin?: spec.ParticleOrigin,\n}\n\nexport interface ParticleTrailProps extends Omit<spec.ParticleTrail, 'texture' | 'mask'> {\n  texture: Texture,\n  textureMap: vec4,\n  mask?: spec.MaskOptions,\n}\n\n// 粒子节点包含的数据\nexport type ParticleContent = [number, number, number, Point]; // delay + lifetime, particleIndex, delay, pointData\n\n@effectsClass(spec.DataType.ParticleSystem)\nexport class ParticleSystem extends Component implements Maskable {\n  renderer: ParticleSystemRenderer;\n  options: ParticleOptions;\n  shape: ShapeGenerator;\n  emission: ParticleEmissionOptions;\n  trails: Pick<TrailOptions, 'lifetime' | 'dieWithParticles' | 'sizeAffectsLifetime' | 'sizeAffectsWidth' | 'inheritParticleColor' | 'parentAffectsPosition'>;\n  meshes: Mesh[];\n  textureSheetAnimation?: ParticleTextureSheetAnimation;\n  interaction?: ParticleInteraction;\n  emissionStopped: boolean;\n  destroyed = false;\n  props: ParticleSystemProps;\n  time: number;\n\n  readonly maskManager: MaskProcessor;\n\n  private generatedCount: number;\n  private loopStartTime: number;\n  private particleLink: Link<ParticleContent>;\n  private started: boolean;\n  private ended: boolean;\n  private lastEmitTime: number;\n  private frozen: boolean;\n  private upDirectionWorld: Vector3 | null;\n  private uvs: number[][];\n  private basicTransform: ParticleTransform;\n  private clickedPoint: LinkNode<ParticleContent>;\n\n  constructor (\n    engine: Engine,\n    props?: ParticleSystemProps,\n  ) {\n    super(engine);\n\n    this.maskManager = new MaskProcessor(engine);\n    if (props) {\n      this.fromData(props);\n    }\n  }\n\n  get timePassed () {\n    return this.time - this.loopStartTime;\n  }\n\n  get lifetime () {\n    return this.timePassed / this.item.duration;\n  }\n\n  get particleCount () {\n    return this.particleLink.length;\n  }\n\n  /**\n   * 获取当前粒子系统的最大粒子数。当系统的粒子数量达到最大值时，发射器会暂时停止发射粒子。\n   * @since 2.3.0\n   */\n  get maxParticles () {\n    return this.options.maxCount;\n  }\n\n  /**\n   * 设置当前粒子系统的最大粒子数。当系统的粒子数量达到最大值时，发射器会暂时停止发射粒子。\n   * 注意：暂时不支持增加拖尾数量\n   * @since 2.3.0\n   */\n  set maxParticles (count: number) {\n    this.options.maxCount = count;\n    if (this.renderer?.particleMesh) {\n      this.renderer.particleMesh.maxCount = count;\n    }\n  }\n\n  isFrozen () {\n    return this.frozen;\n  }\n\n  isEnded () {\n    return this.ended;\n  }\n\n  initEmitterTransform () {\n    const position = this.item.transform.position.clone();\n    const rotation = this.item.transform.rotation.clone();\n    const transformPath = this.props.emitterTransform && this.props.emitterTransform.path;\n    let path;\n\n    if (transformPath) {\n      if (transformPath[0] === spec.ValueType.CONSTANT_VEC3) {\n        position.add(transformPath[1]);\n      } else {\n        path = createValueGetter(transformPath);\n      }\n    }\n    this.basicTransform = {\n      position, rotation, path,\n    };\n\n    const selfPos = position.clone();\n\n    if (path) {\n      selfPos.add(path.getValue(0));\n    }\n    this.transform.setPosition(selfPos.x, selfPos.y, selfPos.z);\n\n    if (this.options.particleFollowParent) {\n      const worldMatrix = this.transform.getWorldMatrix();\n\n      this.renderer.updateWorldMatrix(worldMatrix);\n    }\n  }\n\n  private updateEmitterTransform (time: number) {\n    const { path, position } = this.basicTransform;\n    const selfPos = position.clone();\n\n    if (path) {\n      const duration = this.item.duration;\n\n      selfPos.add(path.getValue(time / duration));\n    }\n    this.transform.setPosition(selfPos.x, selfPos.y, selfPos.z);\n\n    if (this.options.particleFollowParent) {\n      const worldMatrix = this.transform.getWorldMatrix();\n\n      this.renderer.updateWorldMatrix(worldMatrix);\n    }\n  }\n\n  private addParticle (point: Point, maxCount: number) {\n    const link = this.particleLink;\n    const linkContent: ParticleContent = [point.delay + point.lifetime, 0, point.delay, point];\n    let pointIndex;\n\n    if (link.length < maxCount) {\n      pointIndex = linkContent[1] = link.length;\n    } else {\n      const first = link.first;\n\n      link.removeNode(first);\n      pointIndex = linkContent[1] = first.content[1];\n    }\n    link.pushNode(linkContent);\n    this.renderer.setParticlePoint(pointIndex, point);\n    this.clearPointTrail(pointIndex);\n    if (this.transform.parentTransform) {\n      this.renderer.setTrailStartPosition(pointIndex, this.transform.parentTransform.position.clone());\n    }\n  }\n\n  setVisible (visible: boolean) {\n    this.renderer.setVisible(visible);\n  }\n\n  getTextures (): Texture[] {\n    return this.renderer.getTextures();\n  }\n\n  startEmit () {\n    if (!this.started || this.ended) {\n      this.reset();\n      this.started = true;\n      this.ended = false;\n    }\n  }\n\n  stop () {\n    this.ended = true;\n    this.started = false;\n  }\n\n  reset () {\n    this.renderer.reset();\n    this.time = 0;\n    this.loopStartTime = 0;\n    this.lastEmitTime = -1 / this.emission.rateOverTime.getValue(0);\n    this.generatedCount = 0;\n    this.particleLink = new Link((a, b) => a[0] - b[0]);\n    this.emission.bursts.forEach(b => b.reset());\n    this.frozen = false;\n    this.ended = false;\n    this.destroyed = false;\n  }\n\n  override onStart (): void {\n    this.startEmit();\n    this.initEmitterTransform();\n\n    this.item.on('click', ()=>{\n      if (this.interaction?.behavior === spec.ParticleInteractionBehavior.removeParticle) {\n        const pointIndex = this.clickedPoint.content[1];\n\n        this.renderer.removeParticlePoint(pointIndex);\n        this.clearPointTrail(pointIndex);\n        this.clickedPoint.content = [0] as unknown as ParticleContent;\n      }\n    });\n  }\n\n  override onUpdate (dt: number): void {\n    this.update(dt);\n  }\n\n  update (delta: number) {\n    if (this.started && !this.frozen) {\n      const now = this.time + delta / 1000;\n      const options = this.options;\n      const loopStartTime = this.loopStartTime;\n      const emission = this.emission;\n\n      this.time = now;\n      this.upDirectionWorld = null;\n      this.renderer.updateTime(now, delta);\n\n      const link = this.particleLink;\n      const emitterLifetime = (now - loopStartTime) / this.item.duration;\n      const timePassed = this.timePassed;\n      let trailUpdated = false;\n      const updateTrail = () => {\n        if (this.trails && !trailUpdated) {\n          trailUpdated = true;\n          link.forEach(([time, pointIndex, delay, point]) => {\n            if (time < timePassed) {\n              this.clearPointTrail(pointIndex);\n            } else if (timePassed > delay) {\n              this.updatePointTrail(pointIndex, emitterLifetime, point, delay);\n            }\n          });\n        }\n      };\n\n      if (!this.ended) {\n        const duration = this.item.duration;\n        const lifetime = this.lifetime;\n\n        if (timePassed < duration) {\n          const interval = 1 / emission.rateOverTime.getValue(lifetime);\n          const pointCount = Math.floor((timePassed - this.lastEmitTime) / interval);\n          const maxEmissionCount = pointCount;\n          const timeDelta = interval / pointCount;\n          const meshTime = now;\n          const maxCount = options.maxCount;\n\n          this.updateEmitterTransform(timePassed);\n          const shouldSkipGenerate = () => {\n            const first = link.first;\n\n            return this.emissionStopped || (link.length === maxCount && first && (first.content[0] - loopStartTime) > timePassed);\n          };\n\n          for (let i = 0; i < maxEmissionCount && i < maxCount; i++) {\n            if (shouldSkipGenerate()) {\n              break;\n            }\n            const p = this.createPoint(lifetime);\n\n            p.delay += meshTime + i * timeDelta;\n            this.addParticle(p, maxCount);\n            this.lastEmitTime = timePassed;\n          }\n          const bursts = emission.bursts;\n\n          for (let j = bursts?.length - 1, cursor = 0; j >= 0 && cursor < maxCount; j--) {\n            if (shouldSkipGenerate()) {\n              break;\n            }\n            const burst = bursts[j];\n            const opts = !burst.disabled && burst.getGeneratorOptions(timePassed, lifetime);\n\n            if (opts) {\n              const originVec = [0, 0, 0] as vec3;\n              const offsets = emission.burstOffsets[j];\n              const burstOffset = (offsets && offsets[opts.cycleIndex]) || originVec;\n\n              if (burst.once) {\n                this.removeBurst(j);\n              }\n\n              for (let i = 0; i < opts.count && cursor < maxCount; i++) {\n                if (shouldSkipGenerate()) {\n                  break;\n                }\n                const p = this.initPoint(this.shape.generate({\n                  total: opts.total,\n                  index: opts.index,\n                  burstIndex: i,\n                  burstCount: opts.count,\n                }));\n\n                p.delay += meshTime;\n                cursor++;\n                p.transform.translate(...burstOffset);\n\n                this.addParticle(p, maxCount);\n              }\n            }\n          }\n        } else if (this.item.endBehavior === spec.EndBehavior.restart) {\n          updateTrail();\n          this.loopStartTime = now - duration;\n          this.lastEmitTime -= duration;\n          this.time -= duration;\n          emission.bursts.forEach(b => b.reset());\n          this.particleLink.forEach(content => {\n            content[0] -= duration;\n            content[2] -= duration;\n\n            // TODO 优化粒子销毁逻辑\n            if (content[3]) {\n              content[3].delay -= duration;\n            }\n          });\n\n          this.renderer.minusTimeForLoop(duration);\n        } else {\n          this.ended = true;\n          const endBehavior = this.item.endBehavior;\n\n          if (endBehavior === spec.EndBehavior.freeze) {\n            this.frozen = true;\n          }\n        }\n      } else if (this.item.endBehavior !== spec.EndBehavior.restart) {\n        if (spec.EndBehavior.destroy === this.item.endBehavior) {\n          const node = link.last;\n\n          if (node && (node.content[0]) < this.time) {\n            this.destroyed = true;\n          }\n        }\n      }\n      updateTrail();\n    }\n  }\n\n  drawStencilMask (renderer: Renderer): void {\n    if (!this.isActiveAndEnabled) {\n      return;\n    }\n    const previousColorMasks: boolean[] = [];\n\n    for (let i = 0; i < this.renderer.meshes.length; i++) {\n      const material = this.renderer.meshes[i].material;\n\n      previousColorMasks.push(material.colorMask);\n      material.colorMask = false;\n    }\n\n    for (const mesh of this.renderer.meshes) {\n      mesh.render(renderer);\n    }\n\n    for (let i = 0; i < this.renderer.meshes.length; i++) {\n      const material = this.renderer.meshes[i].material;\n\n      material.colorMask = previousColorMasks[i];\n    }\n  }\n\n  override onDestroy (): void {\n    if (this.item && this.item.composition) {\n      this.meshes.forEach(mesh => mesh.dispose());\n    }\n  }\n\n  getParticleBoxes (): { center: Vector3, size: Vector3 }[] {\n    const link = this.particleLink;\n    const renderer = this.renderer;\n    const res: { center: Vector3, size: Vector3 }[] = [];\n    const maxCount = this.particleCount;\n    let counter = 0;\n\n    if (!(link && renderer)) {\n      return res;\n    }\n    let node = link.last;\n    let finish = false;\n\n    while (!finish) {\n      const currentTime = node.content[0];\n      const point = node.content[3];\n\n      if (currentTime > this.timePassed) {\n        const pos = this.getPointPosition(point);\n\n        res.push({\n          center: pos,\n          size: point.transform.scale,\n        });\n        if (node.pre) {\n          node = node.pre;\n        } else {\n          finish = true;\n        }\n      }\n      counter++;\n      if (counter > maxCount) {\n        finish = true;\n      }\n    }\n\n    return res;\n  }\n\n  raycast (options: ParticleSystemRayCastOptions): Vector3[] | undefined {\n    const link = this.particleLink;\n    const renderer = this.renderer;\n\n    if (!(link && renderer)) {\n      return;\n    }\n    let node = link.last;\n    const hitPositions = [];\n    const temp = new Vector3();\n    let finish = false;\n\n    if (node && node.content) {\n      do {\n        const [currentTime,, _, point] = node.content;\n\n        if (currentTime > this.timePassed) {\n          const pos = this.getPointPosition(point);\n          const ray = options.ray;\n          let pass = false;\n\n          if (ray) {\n            pass = !!ray.intersectSphere({\n              center: pos,\n              radius: options.radius,\n            }, temp);\n          }\n          if (pass) {\n            this.clickedPoint = node;\n            hitPositions.push(pos);\n            if (!options.multiple) {\n              finish = true;\n            }\n          }\n        }\n        // @ts-expect-error\n      } while ((node = node.pre) && !finish);\n    }\n\n    return hitPositions;\n  }\n\n  clearPointTrail (pointIndex: number) {\n    if (this.trails && this.trails.dieWithParticles) {\n      this.renderer.clearTrail(pointIndex);\n    }\n  }\n\n  updatePointTrail (pointIndex: number, emitterLifetime: number, point: Point, startTime: number) {\n    const renderer = this.renderer;\n\n    if (!renderer.hasTrail()) {\n      return;\n    }\n    const trails = this.trails;\n    const position = this.getPointPosition(point);\n    const color = trails.inheritParticleColor ? renderer.getParticlePointColor(pointIndex) : [1, 1, 1, 1];\n    const size: vec3 = point.transform.getWorldScale().toArray();\n\n    let width = 1;\n    let lifetime = trails.lifetime.getValue(emitterLifetime);\n\n    if (trails.sizeAffectsWidth) {\n      width *= size[0];\n    }\n    if (trails.sizeAffectsLifetime) {\n      lifetime *= size[0];\n    }\n    if (trails.parentAffectsPosition && this.transform.parentTransform) {\n      position.add(this.transform.parentTransform.position);\n      const pos = renderer.getTrailStartPosition(pointIndex);\n\n      if (pos) {\n        position.subtract(pos);\n      }\n    }\n    renderer.addTrailPoint(pointIndex, position, {\n      color,\n      lifetime,\n      size: width,\n      time: startTime,\n    });\n  }\n\n  /**\n   * 通过索引获取指定index粒子当前时刻的位置\n   * @params index - 粒子索引\n   */\n  getPointPositionByIndex (index: number): Vector3 | null {\n    const point = this.particleLink.getNodeByIndex(index);\n\n    if (!point) {\n      console.error('Get point error.');\n\n      return null;\n    } else {\n      return this.getPointPosition(point.content[3]);\n    }\n  }\n\n  /**\n   * 通过粒子参数获取当前时刻粒子的位置\n   */\n  getPointPosition (point: Point): Vector3 {\n    const {\n      transform,\n      vel,\n      lifetime,\n      delay,\n      gravity = [],\n    } = point;\n\n    const forceTarget = this.options.forceTarget;\n    const time = this.time - delay;\n\n    const tempPos = new Vector3();\n    const acc = Vector3.fromArray(gravity);\n\n    transform.assignWorldTRS(tempPos);\n    const ret = calculateTranslation(new Vector3(), this.options, acc, time, lifetime, tempPos, vel);\n\n    if (forceTarget) {\n      const target = forceTarget.target || [0, 0, 0];\n      const life = forceTarget.curve.getValue(time / lifetime);\n      const dl = 1 - life;\n\n      ret.x = ret.x * dl + target[0] * life;\n      ret.y = ret.y * dl + target[1] * life;\n      ret.z = ret.z * dl + target[2] * life;\n    }\n\n    return ret;\n  }\n\n  initPoint (data: ShapeParticle): Point {\n    const options = this.options;\n    const lifetime = this.lifetime;\n    const shape = this.shape;\n    const speed = options.startSpeed.getValue(lifetime);\n    const matrix4 = options.particleFollowParent ? Matrix4.IDENTITY : this.transform.getWorldMatrix();\n    const pointPosition: Vector3 = data.position;\n\n    // 粒子的位置受发射器的位置影响，自身的旋转和缩放不受影响\n    const position = matrix4.transformPoint(pointPosition, new Vector3());\n    const transform = new Transform({\n      position,\n      valid: true,\n    });\n\n    let direction = data.direction;\n\n    direction = matrix4.transformNormal(direction, tempDir).normalize();\n    if (options.startTurbulence && options.turbulence) {\n      for (let i = 0; i < 3; i++) {\n        tempVec3.setElement(i, options.turbulence[i].getValue(lifetime));\n      }\n      tempEuler.setFromVector3(tempVec3.negate());\n      const mat4 = tempMat4.setFromEuler(tempEuler);\n\n      mat4.transformNormal(direction).normalize();\n    }\n    const dirX = tmpDirX;\n    const dirY = tmpDirY;\n\n    if (shape.alignSpeedDirection) {\n      dirY.copyFrom(direction);\n      if (!this.upDirectionWorld) {\n        if (shape.upDirection) {\n          this.upDirectionWorld = shape.upDirection.clone();\n        } else {\n          this.upDirectionWorld = Vector3.Z.clone();\n        }\n        matrix4.transformNormal(this.upDirectionWorld);\n      }\n      dirX.crossVectors(dirY, this.upDirectionWorld).normalize();\n      // FIXME: 原先因为有精度问题，这里dirX不是0向量\n      if (dirX.isZero()) {\n        dirX.set(1, 0, 0);\n      }\n    } else {\n      dirX.set(1, 0, 0);\n      dirY.set(0, 1, 0);\n    }\n    let sprite;\n    const tsa = this.textureSheetAnimation;\n\n    if (tsa && tsa.animate) {\n      sprite = tempSprite;\n      sprite[0] = tsa.animationDelay.getValue(lifetime);\n      sprite[1] = tsa.animationDuration.getValue(lifetime);\n      sprite[2] = tsa.cycles.getValue(lifetime);\n    }\n    const rot = tempRot;\n\n    if (options.start3DRotation) {\n      // @ts-expect-error\n      rot.set(options.startRotationX.getValue(lifetime), options.startRotationY.getValue(lifetime), options.startRotationZ.getValue(lifetime));\n    } else if (options.startRotation) {\n      rot.set(0, 0, options.startRotation.getValue(lifetime));\n    } else {\n      rot.set(0, 0, 0);\n    }\n    transform.setRotation(rot.x, rot.y, rot.z);\n    const color = options.startColor.getValue(lifetime) as number[];\n\n    if (color.length === 3) {\n      color[3] = 1;\n    }\n    const size = tempSize;\n\n    if (options.start3DSize) {\n      size.x = options.startSizeX!.getValue(lifetime);\n      size.y = options.startSizeY!.getValue(lifetime);\n    } else {\n      const n = options.startSize!.getValue(lifetime);\n      const aspect = options.sizeAspect!.getValue(lifetime);\n\n      size.x = n;\n      // 兼容aspect为0的情况\n      size.y = aspect === 0 ? 0 : n / aspect;\n      // size[1] = n / aspect;\n    }\n\n    const vel = direction.clone();\n\n    vel.multiply(speed);\n\n    // 粒子的大小受发射器父节点的影响\n    if (!options.particleFollowParent) {\n      const tempScale = new Vector3();\n\n      this.transform.assignWorldTRS(undefined, undefined, tempScale);\n      size.x *= tempScale.x;\n      size.y *= tempScale.y;\n    }\n    transform.setScale(size.x, size.y, 1);\n\n    return {\n      size,\n      vel,\n      color: color as vec4,\n      delay: options.startDelay.getValue(lifetime),\n      lifetime: options.startLifetime.getValue(lifetime),\n      uv: randomArrItem(this.uvs, true),\n      gravity: options.gravity,\n      sprite,\n      dirY,\n      dirX,\n      transform,\n    };\n  }\n\n  addBurst (burst: Burst, offsets: vec3[]) {\n    let willAdd = false;\n\n    if (!this.emission.bursts.includes(burst)) {\n      this.emission.bursts.push(burst);\n      willAdd = true;\n    }\n    if (willAdd && offsets instanceof Array) {\n      const index = this.emission.bursts.indexOf(burst);\n\n      this.emission.burstOffsets[index] = offsets;\n\n      return index;\n    }\n\n    return -1;\n  }\n\n  removeBurst (index: number) {\n    if (index < this.emission.bursts.length) {\n      this.emission.burstOffsets[index] = null;\n      this.emission.bursts.splice(index, 1);\n    }\n  }\n\n  createPoint (lifetime: number): Point {\n    const generator: ShapeGeneratorOptions = {\n      total: this.emission.rateOverTime.getValue(lifetime),\n      index: this.generatedCount,\n      burstIndex: 0,\n      burstCount: 0,\n    };\n\n    this.generatedCount++;\n\n    return this.initPoint(this.shape.generate(generator));\n  }\n\n  stopParticleEmission () {\n    this.emissionStopped = true;\n  }\n\n  resumeParticleEmission () {\n    this.emissionStopped = false;\n  }\n\n  getBoundingBox (): void | BoundingBoxSphere {\n    const area = this.getParticleBoxes();\n\n    return {\n      type: HitTestType.sphere,\n      area,\n    };\n  }\n\n  getHitTestParams = (force?: boolean): void | HitTestCustomParams => {\n    const interactParams = this.interaction;\n\n    if (force || interactParams) {\n      return {\n        type: HitTestType.custom,\n        collect: (ray: Ray): Vector3[] | void =>\n          this.raycast({\n            radius: interactParams?.radius || 0.4,\n            multiple: !!interactParams?.multiple,\n            removeParticle: interactParams?.behavior === spec.ParticleInteractionBehavior.removeParticle,\n            ray,\n          }),\n      };\n    }\n  };\n\n  override fromData (data: unknown): void {\n    super.fromData(data);\n    const props = data as ParticleSystemProps;\n\n    this.props = props;\n    this.destroyed = false;\n    const cachePrefix = '';\n    const { options, positionOverLifetime = {}, shape } = props;\n    const gravityModifier = positionOverLifetime?.gravityOverLifetime;\n    const gravity = ensureVec3(positionOverLifetime?.gravity);\n    const _textureSheetAnimation = props.textureSheetAnimation;\n    const textureSheetAnimation = _textureSheetAnimation ? {\n      animationDelay: createValueGetter(_textureSheetAnimation.animationDelay || 0),\n      animationDuration: createValueGetter(_textureSheetAnimation.animationDuration || 1),\n      cycles: createValueGetter(_textureSheetAnimation.cycles || 1),\n      animate: _textureSheetAnimation.animate,\n      col: _textureSheetAnimation.col,\n      row: _textureSheetAnimation.row,\n      total: _textureSheetAnimation.total || _textureSheetAnimation.col * _textureSheetAnimation.row,\n    } : undefined;\n    const startTurbulence = !!(shape && shape.turbulenceX || shape?.turbulenceY || shape?.turbulenceZ);\n    let turbulence: ParticleOptions['turbulence'];\n\n    if (startTurbulence) {\n      turbulence = [\n        createValueGetter(shape.turbulenceX ?? 0),\n        createValueGetter(shape.turbulenceY ?? 0),\n        createValueGetter(shape.turbulenceZ ?? 0),\n      ];\n    }\n\n    this.name = 'ParticleSystem';\n    this.shape = createShape(shape);\n    this.emission = {\n      rateOverTime: createValueGetter(props.emission.rateOverTime),\n      burstOffsets: getBurstOffsets(props.emission.burstOffsets ?? []),\n      bursts: (props.emission.bursts || []).map((c: any) => new Burst(c)),\n    };\n    this.textureSheetAnimation = textureSheetAnimation;\n    const renderer = props.renderer || {};\n    let rotationOverLifetime: ParticleMeshProps['rotationOverLifetime'];\n    const rotOverLt = props.rotationOverLifetime;\n\n    if (rotOverLt) {\n      rotationOverLifetime = {};\n      rotationOverLifetime.asRotation = !!rotOverLt.asRotation;\n      rotationOverLifetime.z = rotOverLt.z ? createValueGetter(rotOverLt.z) : createValueGetter(0);\n      if (rotOverLt.separateAxes) {\n        rotationOverLifetime.x = rotOverLt.x && createValueGetter(rotOverLt.x);\n        rotationOverLifetime.y = rotOverLt.y && createValueGetter(rotOverLt.y);\n      }\n    }\n\n    let forceTarget;\n\n    if (positionOverLifetime?.forceTarget) {\n      forceTarget = {\n        target: positionOverLifetime.target || [0, 0, 0],\n        curve: createValueGetter(positionOverLifetime.forceCurve || [spec.ValueType.LINE, [[0, 0], [1, 1]]]),\n      };\n    }\n    const linearVelOverLifetime = {\n      x: positionOverLifetime.linearX && createValueGetter(positionOverLifetime.linearX || 0),\n      y: positionOverLifetime.linearY && createValueGetter(positionOverLifetime.linearY || 0),\n      z: positionOverLifetime.linearZ && createValueGetter(positionOverLifetime.linearZ || 0),\n      asMovement: positionOverLifetime.asMovement,\n    };\n    const orbitalVelOverLifetime = {\n      x: positionOverLifetime.orbitalX && createValueGetter(positionOverLifetime.orbitalX),\n      y: positionOverLifetime.orbitalY && createValueGetter(positionOverLifetime.orbitalY),\n      z: positionOverLifetime.orbitalZ && createValueGetter(positionOverLifetime.orbitalZ),\n      center: positionOverLifetime.orbCenter,\n      asRotation: positionOverLifetime.asRotation,\n    };\n    const sizeOverLifetime = props.sizeOverLifetime || {};\n    const colorOverLifetime = props.colorOverLifetime;\n    const shaderCachePrefix = cachePrefix;\n    const sizeOverLifetimeGetter = sizeOverLifetime?.separateAxes ?\n      {\n        separateAxes: true,\n        x: createValueGetter(sizeOverLifetime.x),\n        y: createValueGetter(sizeOverLifetime.y),\n      } :\n      {\n        separateAxes: false,\n        x: createValueGetter(('size' in sizeOverLifetime ? sizeOverLifetime.size : sizeOverLifetime.x) || 1),\n      };\n\n    renderer.anchor = renderer.anchor || [0, 0];\n    const anchor = Vector2.fromArray(renderer.anchor);\n\n    this.options = {\n      particleFollowParent: !!options.particleFollowParent,\n      startLifetime: createValueGetter(options.startLifetime),\n      startDelay: createValueGetter(options.startDelay || 0),\n      startSpeed: createValueGetter(positionOverLifetime.startSpeed || 0),\n      startColor: createValueGetter(options.startColor),\n      // duration:vfxItem.duration || 1,\n      looping: false,\n      maxCount: options.maxCount ?? 0,\n      gravityModifier: createValueGetter(gravityModifier || 0),\n      gravity,\n      start3DSize: !!options.start3DSize,\n      startTurbulence,\n      turbulence,\n      speedOverLifetime: positionOverLifetime.speedOverLifetime && createValueGetter(positionOverLifetime.speedOverLifetime),\n      linearVelOverLifetime,\n      orbitalVelOverLifetime,\n      forceTarget,\n    };\n    if (options.startRotationZ) {\n      this.options.startRotation = createValueGetter(options.startRotationZ || 0);\n    }\n    if (options.startRotationX || options.startRotationY) {\n      this.options.start3DRotation = true;\n      this.options.startRotationX = createValueGetter(options.startRotationX || 0);\n      this.options.startRotationY = createValueGetter(options.startRotationY || 0);\n      this.options.startRotationZ = createValueGetter(options.startRotationZ || 0);\n    }\n\n    if (options.start3DSize) {\n      this.options.startSizeX = createValueGetter(options.startSizeX);\n      this.options.startSizeY = createValueGetter(options.startSizeY);\n    } else {\n      this.options.startSize = createValueGetter(options.startSize);\n      this.options.sizeAspect = createValueGetter(options.sizeAspect || 1);\n    }\n\n    if (props.mask) {\n      this.maskManager.setMaskOptions(props.mask);\n    }\n\n    const particleMeshProps: ParticleMeshProps = {\n      // listIndex: vfxItem.listIndex,\n      meshSlots: options.meshSlots,\n      name: this.name,\n      matrix: Matrix4.IDENTITY,\n      shaderCachePrefix,\n      renderMode: renderer.renderMode || spec.RenderMode.BILLBOARD,\n      side: renderer.side || spec.SideMode.DOUBLE,\n      gravity,\n      // duration: vfxItem.duration,\n      blending: renderer.blending || spec.BlendingMode.ALPHA,\n      rotationOverLifetime,\n      gravityModifier: this.options.gravityModifier,\n      linearVelOverLifetime: this.options.linearVelOverLifetime,\n      orbitalVelOverLifetime: this.options.orbitalVelOverLifetime,\n      speedOverLifetime: this.options.speedOverLifetime,\n      sprite: textureSheetAnimation,\n      occlusion: !!renderer.occlusion,\n      transparentOcclusion: !!renderer.transparentOcclusion,\n      maxCount: options.maxCount,\n      mask: this.maskManager.getRefValue(),\n      maskMode: this.maskManager.maskMode,\n      forceTarget,\n      diffuse: renderer.texture ? this.engine.findObject(renderer.texture) : undefined,\n      sizeOverLifetime: sizeOverLifetimeGetter,\n      anchor,\n    };\n\n    if (colorOverLifetime) {\n      const { color, opacity } = colorOverLifetime;\n\n      particleMeshProps.colorOverLifetime = {};\n      if (opacity) {\n        particleMeshProps.colorOverLifetime.opacity = createValueGetter(colorOverLifetime.opacity);\n      }\n      if (color) {\n        if (color[0] === spec.ValueType.GRADIENT_COLOR) {\n          particleMeshProps.colorOverLifetime.color = (colorOverLifetime.color as spec.GradientColor)[1];\n        } else if (color[0] === spec.ValueType.RGBA_COLOR) {\n          particleMeshProps.colorOverLifetime.color = Texture.createWithData(\n            this.engine,\n            {\n              data: new Uint8Array(color[1] as unknown as number[]),\n              width: 1,\n              height: 1,\n            });\n        } else if (color instanceof Texture) {\n          particleMeshProps.colorOverLifetime.color = color;\n        }\n      }\n    }\n\n    const uvs = [];\n    let textureMap = [0, 0, 1, 1];\n    let flip;\n\n    if (props.splits) {\n      const s = props.splits[0];\n\n      flip = s[4];\n      textureMap = flip ? [s[0], s[1], s[3], s[2]] : [s[0], s[1], s[2], s[3]];\n    }\n    if (textureSheetAnimation && !textureSheetAnimation.animate) {\n      const col = flip ? textureSheetAnimation.row : textureSheetAnimation.col;\n      const row = flip ? textureSheetAnimation.col : textureSheetAnimation.row;\n      const total = textureSheetAnimation.total || col * row;\n      let index = 0;\n\n      for (let x = 0; x < col; x++) {\n        for (let y = 0; y < row && index < total; y++, index++) {\n          uvs.push([\n            x * textureMap[2] / col + textureMap[0],\n            y * textureMap[3] / row + textureMap[1],\n            textureMap[2] / col,\n            textureMap[3] / row]);\n        }\n      }\n    } else {\n      uvs.push(textureMap);\n    }\n    this.uvs = uvs;\n    // @ts-expect-error\n    particleMeshProps.textureFlip = flip;\n\n    const trails = props.trails;\n    let trailMeshProps: TrailMeshProps | undefined;\n\n    if (trails) {\n      this.trails = {\n        lifetime: createValueGetter(trails.lifetime),\n        dieWithParticles: trails.dieWithParticles !== false,\n        sizeAffectsWidth: !!trails.sizeAffectsWidth,\n        sizeAffectsLifetime: !!trails.sizeAffectsLifetime,\n        inheritParticleColor: !!trails.inheritParticleColor,\n        parentAffectsPosition: !!trails.parentAffectsPosition,\n      };\n\n      if (trails.mask) {\n        this.maskManager.setMaskOptions(trails.mask);\n      }\n\n      trailMeshProps = {\n        name: 'Trail',\n        matrix: Matrix4.IDENTITY,\n        minimumVertexDistance: trails.minimumVertexDistance || 0.02,\n        maxTrailCount: options.maxCount,\n        pointCountPerTrail: Math.round(trails.maxPointPerTrail) || 32,\n        blending: trails.blending,\n        texture: trails.texture ? this.engine.findObject(trails.texture) : undefined,\n        opacityOverLifetime: createValueGetter(trails.opacityOverLifetime || 1),\n        widthOverTrail: createValueGetter(trails.widthOverTrail || 1),\n        // order: vfxItem.listIndex + (trails.orderOffset || 0),\n        shaderCachePrefix,\n        lifetime: this.trails.lifetime,\n        occlusion: !!trails.occlusion,\n        transparentOcclusion: !!trails.transparentOcclusion,\n        textureMap: trails.textureMap,\n        mask: this.maskManager.getRefValue(),\n        maskMode: this.maskManager.maskMode,\n      };\n\n      if (trails.colorOverLifetime && trails.colorOverLifetime[0] === spec.ValueType.GRADIENT_COLOR) {\n        trailMeshProps.colorOverLifetime = trails.colorOverLifetime[1];\n      }\n      if (trails.colorOverTrail && trails.colorOverTrail[0] === spec.ValueType.GRADIENT_COLOR) {\n        trailMeshProps.colorOverTrail = trails.colorOverTrail[1];\n      }\n    }\n\n    this.renderer = new ParticleSystemRenderer(this.engine, particleMeshProps, trailMeshProps);\n    this.renderer.item = this.item;\n    this.renderer.maskManager = this.maskManager;\n    this.meshes = this.renderer.meshes;\n\n    const interaction = props.interaction;\n\n    if (interaction) {\n      this.interaction = {\n        multiple: interaction.multiple,\n        radius: interaction.radius ?? 0.4,\n        behavior: interaction.behavior,\n      };\n    }\n    this.item.getHitTestParams = this.getHitTestParams;\n  }\n}\n\n// array performance better for small memory than Float32Array\nconst tempDir = new Vector3();\nconst tempSize = new Vector2();\nconst tempRot = new Euler();\nconst tmpDirX = new Vector3();\nconst tmpDirY = new Vector3();\nconst tempVec3 = new Vector3();\nconst tempEuler = new Euler();\nconst tempSprite: vec3 = [0, 0, 0];\nconst tempMat4 = new Matrix4();\n\nfunction getBurstOffsets (burstOffsets: Record<string, number>[]): Record<string, vec3[]> {\n  const ret: Record<string, vec3[]> = {};\n\n  if (Array.isArray(burstOffsets)) {\n    burstOffsets.forEach(arr => {\n      const isArr = arr instanceof Array;\n      const index = isArr ? arr[0] : arr.index;\n      let offsets = ret[index];\n\n      if (!offsets) {\n        offsets = ret[index] = [];\n      }\n      if (isArr) {\n        offsets.push(arr.slice(1, 4) as vec3);\n      } else {\n        offsets.push([+arr.x, +arr.y, +arr.z]);\n      }\n    });\n  }\n\n  return ret;\n}\n\nfunction randomArrItem<T> (arr: T[], keepArr?: boolean): T {\n  const index = Math.floor(Math.random() * arr.length);\n  const item = arr[index];\n\n  if (!keepArr) {\n    arr.splice(index, 1);\n  }\n\n  return item;\n}\n","import type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\nimport type { TrackInstance } from '../track-instance';\n\nexport class TrackMixerPlayable extends Playable {\n\n  trackInstance: TrackInstance;\n  clipPlayables: Playable[] = [];\n  clipWeights: number[] = [];\n\n  override processFrame (context: FrameContext): void {\n    for (const clipPlayable of this.clipPlayables) {\n      clipPlayable.processFrame(context);\n    }\n    this.evaluate(context);\n  }\n\n  setClipWeight (playable: Playable, weight: number): void;\n\n  setClipWeight (inputIndex: number, weight: number): void;\n\n  setClipWeight (playableOrIndex: Playable | number, weight: number): void {\n    if (playableOrIndex instanceof Playable) {\n      for (let i = 0; i < this.clipPlayables.length; i++) {\n        if (this.clipPlayables[i] === playableOrIndex) {\n          this.clipWeights[i] = weight;\n\n          return;\n        }\n      }\n    } else {\n      if (this.clipWeights.length < playableOrIndex + 1) {\n        this.clipWeights.length = playableOrIndex + 1;\n      }\n      this.clipWeights[playableOrIndex] = weight;\n    }\n  }\n\n  getClipWeight (inputIndex: number): number {\n    return this.clipWeights[inputIndex];\n  }\n\n  getClipPlayable (index: number) {\n    return this.clipPlayables[index];\n  }\n\n  evaluate (context: FrameContext) {\n    // Override\n  }\n\n}\n","import { VFXItem } from '../../../vfx-item';\nimport type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class ActivationMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!(boundObject instanceof VFXItem)) {\n      return;\n    }\n\n    const boundItem = boundObject;\n\n    let hasInput = false;\n\n    for (let i = 0; i < this.clipPlayables.length; i++) {\n      if (this.getClipWeight(i) > 0) {\n        hasInput = true;\n\n        break;\n      }\n    }\n\n    if (hasInput) {\n      boundItem.transform.setValid(true);\n      boundItem.setActive(true);\n    } else {\n      boundItem.transform.setValid(false);\n      boundItem.setActive(false);\n    }\n  }\n}\n","import { VFXItem } from '../../../vfx-item';\nimport type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\n\n/**\n * @since 2.0.0\n */\nexport class ActivationPlayable extends Playable {\n\n  override processFrame (context: FrameContext): void {\n    const vfxItem = context.output.getUserData();\n\n    if (!(vfxItem instanceof VFXItem)) {\n      return;\n    }\n\n    vfxItem.time = this.time;\n  }\n}","import type { ValueGetter } from '../../../math';\nimport type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\n\nexport class PropertyClipPlayable<T> extends Playable {\n  value: T;\n  curve: ValueGetter<T>;\n\n  override processFrame (context: FrameContext): void {\n    this.value = this.curve.getValue(this.time / this.getDuration());\n  }\n}","import { Component } from '../../../components/component';\nimport type { FrameContext } from '../playable';\nimport { PropertyClipPlayable } from './property-clip-playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport abstract class PropertyMixerPlayable<T> extends TrackMixerPlayable {\n  propertyPath = '';\n\n  protected propertyName = '';\n  protected propertyValue: T;\n\n  private directTarget: Record<string, any>;\n\n  abstract resetPropertyValue (): void;\n  abstract addWeightedValue (curveValue: T, weight: number): void;\n\n  override evaluate (context: FrameContext): void {\n    const boundObject = context.output.getUserData() as Record<string, any>;\n\n    if (!boundObject) {\n      return;\n    }\n\n    if (!this.directTarget) {\n      this.preparePath(boundObject);\n    }\n\n    let hasInput = false;\n\n    this.propertyValue = this.directTarget[this.propertyName] as T;\n\n    if (this.propertyValue === undefined || this.propertyValue === null) {\n      return;\n    }\n\n    this.resetPropertyValue();\n\n    // evaluate the curve\n    for (let i = 0; i < this.clipPlayables.length; i++) {\n      const weight = this.getClipWeight(i);\n\n      if (weight > 0) {\n        const propertyClipPlayable = this.getClipPlayable(i) as PropertyClipPlayable<T>;\n\n        if (!(propertyClipPlayable instanceof PropertyClipPlayable)) {\n          console.error('PropertyTrack added non-PropertyPlayableAsset');\n          continue;\n        }\n\n        const curveValue = propertyClipPlayable.value;\n\n        this.addWeightedValue(curveValue, weight);\n\n        hasInput = true;\n      }\n    }\n\n    // set value\n    if (hasInput) {\n      this.directTarget[this.propertyName] = this.propertyValue;\n\n      if (boundObject instanceof Component) {\n        boundObject.onApplyAnimationProperties();\n      }\n    }\n  }\n\n  private preparePath (target: object) {\n    const propertyPathSegments = this.propertyPath.split('.');\n\n    let directTarget = target as Record<string, any>;\n\n    for (let i = 0; i < propertyPathSegments.length - 1; i++) {\n      const property = directTarget[propertyPathSegments[i]];\n\n      if (property === undefined) {\n        console.error('The ' + propertyPathSegments[i] + ' property of ' + target + ' was not found');\n      }\n      directTarget = property;\n    }\n\n    if (propertyPathSegments.length > 0) {\n      this.propertyName = propertyPathSegments[propertyPathSegments.length - 1];\n    }\n\n    this.directTarget = directTarget;\n  }\n}","import type { Color } from '@galacean/effects-math/es/core/color';\nimport { PropertyMixerPlayable } from './property-mixer-playable';\n\nexport class ColorPropertyMixerPlayable extends PropertyMixerPlayable<Color> {\n  override resetPropertyValue (): void {\n    this.propertyValue.setZero();\n  }\n\n  override addWeightedValue (curveValue: Color, weight: number): void {\n    const result = this.propertyValue;\n\n    result.r += curveValue.r * weight;\n    result.g += curveValue.g * weight;\n    result.b += curveValue.b * weight;\n    result.a += curveValue.a * weight;\n  }\n}\n\n","import { PropertyMixerPlayable } from './property-mixer-playable';\n\nexport class FloatPropertyMixerPlayable extends PropertyMixerPlayable<number> {\n  override resetPropertyValue (): void {\n    this.propertyValue = 0;\n  }\n\n  override addWeightedValue (curveValue: number, weight: number): void {\n    this.propertyValue += curveValue * weight;\n  }\n}\n\n","import type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class ParticleMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n  }\n}\n","import type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class SpriteColorMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n  }\n}\n","import { CompositionComponent } from '../../../components';\nimport type { FrameContext } from '../playable';\nimport { Playable } from '../playable';\n\nexport class SubCompositionClipPlayable extends Playable {\n  override processFrame (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (boundObject instanceof CompositionComponent) {\n      boundObject.time = this.getTime();\n    }\n  }\n}\n","import { CompositionComponent } from '../../../components';\nimport type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class SubCompositionMixerPlayable extends TrackMixerPlayable {\n  override evaluate (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!(boundObject instanceof CompositionComponent)) {\n      return;\n    }\n\n    const compositionComponent = boundObject;\n\n    let hasInput = false;\n\n    for (let i = 0; i < this.clipPlayables.length; i++) {\n      if (this.getClipWeight(i) > 0) {\n        hasInput = true;\n\n        break;\n      }\n    }\n\n    if (hasInput) {\n      compositionComponent.item.setActive(true);\n    } else {\n      compositionComponent.item.setActive(false);\n    }\n  }\n}\n","import type { FrameContext } from '../playable';\nimport { TrackMixerPlayable } from './track-mixer-playable';\n\nexport class TransformMixerPlayable extends TrackMixerPlayable {\n\n  override evaluate (context: FrameContext): void {\n  }\n}\n","import type { Vector2 } from '@galacean/effects-math/es/core/vector2';\nimport type { Vector4 } from '@galacean/effects-math/es/core/vector4';\nimport { PropertyMixerPlayable } from './property-mixer-playable';\nimport type { Vector3 } from '@galacean/effects-math/es/core/vector3';\n\nexport class Vector4PropertyMixerPlayable extends PropertyMixerPlayable<Vector4> {\n  override resetPropertyValue (): void {\n    this.propertyValue.x = 0;\n    this.propertyValue.y = 0;\n    this.propertyValue.z = 0;\n    this.propertyValue.w = 0;\n  }\n\n  override addWeightedValue (curveValue: Vector4, weight: number): void {\n    const result = this.propertyValue;\n\n    result.x += curveValue.x * weight;\n    result.y += curveValue.y * weight;\n    result.z += curveValue.z * weight;\n    result.w += curveValue.w * weight;\n  }\n}\n\nexport class Vector3PropertyMixerPlayable extends PropertyMixerPlayable<Vector3> {\n  override resetPropertyValue (): void {\n    this.propertyValue.x = 0;\n    this.propertyValue.y = 0;\n    this.propertyValue.z = 0;\n  }\n\n  override addWeightedValue (curveValue: Vector3, weight: number): void {\n    const result = this.propertyValue;\n\n    result.x += curveValue.x * weight;\n    result.y += curveValue.y * weight;\n    result.z += curveValue.z * weight;\n  }\n}\n\nexport class Vector2PropertyMixerPlayable extends PropertyMixerPlayable<Vector2> {\n  override resetPropertyValue (): void {\n    this.propertyValue.x = 0;\n    this.propertyValue.y = 0;\n  }\n\n  override addWeightedValue (curveValue: Vector2, weight: number): void {\n    const result = this.propertyValue;\n\n    result.x += curveValue.x * weight;\n    result.y += curveValue.y * weight;\n  }\n}\n\n","import { Euler } from '@galacean/effects-math/es/core/euler';\nimport { Vector3 } from '@galacean/effects-math/es/core/vector3';\nimport * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { ItemLinearVelOverLifetime, ValueGetter } from '../../../math';\nimport { calculateTranslation, createValueGetter, ensureVec3 } from '../../../math';\nimport { VFXItem } from '../../../vfx-item';\nimport type { FrameContext } from '../playable';\nimport { Playable, PlayableAsset } from '../playable';\n\nconst tempRot = new Euler();\nconst tempSize = new Vector3(1, 1, 1);\nconst tempPos = new Vector3();\n\n/**\n * 基础位移属性数据\n */\nexport type ItemBasicTransform = {\n  position: Vector3,\n  rotation: Euler,\n  scale: Vector3,\n  path?: ValueGetter<Vector3>,\n};\n\n/**\n * @since 2.0.0\n */\nexport class TransformPlayable extends Playable {\n  originalTransform: ItemBasicTransform;\n  protected sizeSeparateAxes: boolean;\n  protected sizeXOverLifetime: ValueGetter<number>;\n  protected sizeYOverLifetime: ValueGetter<number>;\n  protected sizeZOverLifetime: ValueGetter<number>;\n  protected rotationOverLifetime: {\n    asRotation?: boolean,\n    separateAxes?: boolean,\n    enabled?: boolean,\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n  };\n  gravityModifier: ValueGetter<number>;\n  orbitalVelOverLifetime: {\n    x?: ValueGetter<number>,\n    y?: ValueGetter<number>,\n    z?: ValueGetter<number>,\n    center: [x: number, y: number, z: number],\n    asRotation?: boolean,\n    enabled?: boolean,\n  };\n  speedOverLifetime?: ValueGetter<number>;\n  linearVelOverLifetime: ItemLinearVelOverLifetime;\n  positionOverLifetime: spec.PositionOverLifetime;\n  gravity: Vector3;\n  direction: Vector3;\n  startSpeed: number;\n  data: TransformPlayableAssetData;\n  private velocity: Vector3;\n  private boundObject: VFXItem;\n\n  start (): void {\n    const boundItem = this.boundObject;\n    const scale = boundItem.transform.scale;\n\n    this.originalTransform = {\n      position: boundItem.transform.position.clone(),\n      rotation: boundItem.transform.getRotation().clone(),\n      // TODO 编辑器 scale 没有z轴控制\n      scale: new Vector3(scale.x, scale.y, scale.x),\n    };\n    const positionOverLifetime = this.data.positionOverLifetime;\n    const rotationOverLifetime = this.data.rotationOverLifetime;\n    const sizeOverLifetime = this.data.sizeOverLifetime;\n\n    // TODO: 没有 K 帧数据的不需要传 positionOverLifetime 空对象\n    if (positionOverLifetime && Object.keys(positionOverLifetime).length !== 0) {\n      this.positionOverLifetime = positionOverLifetime;\n      if (positionOverLifetime.path) {\n        this.originalTransform.path = createValueGetter(positionOverLifetime.path);\n      }\n      const linearVelEnable = positionOverLifetime.linearX || positionOverLifetime.linearY || positionOverLifetime.linearZ;\n\n      if (linearVelEnable) {\n        this.linearVelOverLifetime = {\n          x: positionOverLifetime.linearX && createValueGetter(positionOverLifetime.linearX),\n          y: positionOverLifetime.linearY && createValueGetter(positionOverLifetime.linearY),\n          z: positionOverLifetime.linearZ && createValueGetter(positionOverLifetime.linearZ),\n          asMovement: positionOverLifetime.asMovement,\n          enabled: !!linearVelEnable,\n        };\n      }\n\n      const orbitalVelEnable = positionOverLifetime.orbitalX || positionOverLifetime.orbitalY || positionOverLifetime.orbitalZ;\n\n      if (orbitalVelEnable) {\n        this.orbitalVelOverLifetime = {\n          x: positionOverLifetime.orbitalX && createValueGetter(positionOverLifetime.orbitalX),\n          y: positionOverLifetime.orbitalY && createValueGetter(positionOverLifetime.orbitalY),\n          z: positionOverLifetime.orbitalZ && createValueGetter(positionOverLifetime.orbitalZ),\n          center: ensureVec3(positionOverLifetime.orbCenter),\n          asRotation: positionOverLifetime.asRotation,\n          enabled: !!orbitalVelEnable,\n        };\n      }\n      this.speedOverLifetime = positionOverLifetime.speedOverLifetime && createValueGetter(positionOverLifetime.speedOverLifetime);\n    }\n\n    if (sizeOverLifetime) {\n      if (sizeOverLifetime.separateAxes) {\n        this.sizeSeparateAxes = true;\n        this.sizeXOverLifetime = createValueGetter(sizeOverLifetime.x || 1);\n        this.sizeYOverLifetime = createValueGetter(sizeOverLifetime.y || 1);\n        this.sizeZOverLifetime = createValueGetter(sizeOverLifetime.z || 1);\n      } else {\n        this.sizeXOverLifetime = createValueGetter(sizeOverLifetime.size || 1);\n      }\n    }\n\n    if (rotationOverLifetime) {\n      this.rotationOverLifetime = {\n        asRotation: rotationOverLifetime.asRotation,\n        separateAxes: rotationOverLifetime.separateAxes,\n        z: createValueGetter(rotationOverLifetime.z || 0),\n      };\n      if (rotationOverLifetime.separateAxes) {\n        const rotLt = this.rotationOverLifetime;\n\n        rotLt.x = createValueGetter(rotationOverLifetime.x || 0);\n        rotLt.y = createValueGetter(rotationOverLifetime.y || 0);\n      }\n    }\n    this.gravity = Vector3.fromArray(positionOverLifetime?.gravity || []);\n    this.gravityModifier = createValueGetter(positionOverLifetime?.gravityOverLifetime ?? 0);\n    this.direction = positionOverLifetime?.direction ? Vector3.fromArray(positionOverLifetime.direction).normalize() : new Vector3();\n    this.startSpeed = positionOverLifetime?.startSpeed || 0;\n\n    this.velocity = this.direction.clone();\n    this.velocity.multiply(this.startSpeed);\n  }\n\n  override processFrame (context: FrameContext): void {\n    if (!this.boundObject) {\n      const boundObject = context.output.getUserData();\n\n      if (boundObject instanceof VFXItem) {\n        this.boundObject = boundObject;\n        this.start();\n      }\n    }\n    if (this.boundObject && this.boundObject.composition) {\n      this.sampleAnimation();\n    }\n  }\n\n  /**\n   * 应用时间轴K帧数据到对象\n   */\n  private sampleAnimation () {\n    const boundItem = this.boundObject;\n    const duration = this.getDuration();\n    let life = this.time / duration;\n\n    life = life < 0 ? 0 : (life > 1 ? 1 : life);\n\n    if (this.sizeXOverLifetime) {\n      tempSize.x = this.sizeXOverLifetime.getValue(life);\n      if (this.sizeSeparateAxes) {\n        tempSize.y = this.sizeYOverLifetime.getValue(life);\n        tempSize.z = this.sizeZOverLifetime.getValue(life);\n      } else {\n        tempSize.z = tempSize.y = tempSize.x;\n      }\n      const startSize = this.originalTransform.scale;\n\n      boundItem.transform.setScale(tempSize.x * startSize.x, tempSize.y * startSize.y, tempSize.z * startSize.z);\n    }\n\n    if (this.rotationOverLifetime) {\n      const func = (v: ValueGetter<number>) => this.rotationOverLifetime.asRotation ? v.getValue(life) : v.getIntegrateValue(0, life, duration);\n      const incZ = func(this.rotationOverLifetime.z!);\n      const separateAxes = this.rotationOverLifetime.separateAxes;\n\n      tempRot.x = separateAxes ? func(this.rotationOverLifetime.x!) : 0;\n      tempRot.y = separateAxes ? func(this.rotationOverLifetime.y!) : 0;\n      tempRot.z = incZ;\n      const rot = tempRot.addEulers(this.originalTransform.rotation, tempRot);\n\n      boundItem.transform.setRotation(rot.x, rot.y, rot.z);\n    }\n\n    if (this.positionOverLifetime) {\n      const pos = tempPos;\n\n      calculateTranslation(pos, this, this.gravity, this.time, duration, this.originalTransform.position, this.velocity);\n      if (this.originalTransform.path) {\n        pos.add(this.originalTransform.path.getValue(life));\n      }\n      boundItem.transform.setPosition(pos.x, pos.y, pos.z);\n    }\n  }\n}\n\n@effectsClass(spec.DataType.TransformPlayableAsset)\nexport class TransformPlayableAsset extends PlayableAsset {\n  transformAnimationData: TransformPlayableAssetData;\n\n  override createPlayable (): Playable {\n    const transformPlayable = new TransformPlayable();\n\n    transformPlayable.data = this.transformAnimationData;\n\n    return transformPlayable;\n  }\n\n  override fromData (data: TransformPlayableAssetData): void {\n    this.transformAnimationData = data;\n  }\n}\n\nexport interface TransformPlayableAssetData extends spec.EffectsObjectData {\n  /**\n   * 元素大小变化属性\n   */\n  sizeOverLifetime?: spec.SizeOverLifetime,\n  /**\n   * 元素旋转变化属性\n   */\n  rotationOverLifetime?: spec.RotationOverLifetime,\n  /**\n   * 元素位置变化属性\n   */\n  positionOverLifetime?: spec.PositionOverLifetime,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../../decorators';\nimport { VFXItem } from '../../vfx-item';\nimport { PlayState, Playable, PlayableAsset, PlayableOutput } from './playable';\nimport { ParticleSystem } from '../particle/particle-system';\nimport type { Constructor } from '../../utils';\nimport { TrackMixerPlayable } from './playables';\n\n/**\n * @since 2.0.0\n */\nexport class TimelineClip {\n  id: string;\n  name: string;\n  start = 0;\n  duration = 0;\n  asset: PlayableAsset;\n  endBehavior: spec.EndBehavior;\n\n  constructor () {\n  }\n\n  toLocalTime (time: number) {\n    let localTime = time - this.start;\n    const duration = this.duration;\n\n    if (localTime - duration > 0) {\n      if (this.endBehavior === spec.EndBehavior.restart) {\n        localTime = localTime % duration;\n      } else if (this.endBehavior === spec.EndBehavior.freeze) {\n        localTime = Math.min(duration, localTime);\n      }\n    }\n\n    return localTime;\n  }\n}\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.TrackAsset)\nexport class TrackAsset extends PlayableAsset {\n  name: string;\n  parent: TrackAsset;\n  trackType = TrackType.MasterTrack;\n\n  private clipSeed = 0;\n\n  @serialize(TimelineClip)\n  private clips: TimelineClip[] = [];\n\n  @serialize()\n  protected children: TrackAsset[] = [];\n\n  /**\n   * 重写该方法以获取自定义对象绑定\n   */\n  updateAnimatedObject (boundObject: object): object {\n    return boundObject;\n  }\n\n  /**\n   * 重写该方法以创建自定义混合器\n   */\n  createTrackMixer (): TrackMixerPlayable {\n    return new TrackMixerPlayable();\n  }\n\n  createOutput (): PlayableOutput {\n    const output = new PlayableOutput();\n\n    return output;\n  }\n\n  createPlayableGraph (runtimeClips: RuntimeClip[]) {\n    const mixerPlayable = this.createMixerPlayableGraph(runtimeClips);\n\n    return mixerPlayable;\n  }\n\n  createMixerPlayableGraph (runtimeClips: RuntimeClip[]) {\n    const clips: TimelineClip[] = [];\n\n    for (const clip of this.clips) {\n      clips.push(clip);\n    }\n    const mixerPlayable = this.compileClips(clips, runtimeClips);\n\n    return mixerPlayable;\n  }\n\n  compileClips (timelineClips: TimelineClip[], runtimeClips: RuntimeClip[]) {\n    const mixer = this.createTrackMixer();\n\n    for (const timelineClip of timelineClips) {\n      const clipPlayable = this.createClipPlayable(timelineClip);\n\n      clipPlayable.setDuration(timelineClip.duration);\n\n      const clip = new RuntimeClip(timelineClip, clipPlayable, mixer);\n\n      runtimeClips.push(clip);\n\n      mixer.clipPlayables.push(clipPlayable);\n      mixer.setClipWeight(clipPlayable, 0.0);\n    }\n\n    return mixer;\n  }\n\n  override createPlayable (): Playable {\n    return new Playable();\n  }\n\n  getChildTracks () {\n    return this.children;\n  }\n\n  addChild (child: TrackAsset) {\n    this.children.push(child);\n    child.parent = this;\n  }\n\n  createClip<T extends PlayableAsset> (\n    classConstructor: Constructor<T>,\n    name?: string,\n  ): TimelineClip {\n    const newClip = new TimelineClip();\n\n    newClip.asset = new classConstructor(this.engine);\n    newClip.name = name ? name : 'TimelineClip' + newClip.id;\n    this.addClip(newClip);\n\n    return newClip;\n  }\n\n  getClips (): TimelineClip[] {\n    return this.clips;\n  }\n\n  findClip (name: string): TimelineClip | undefined {\n    for (const clip of this.clips) {\n      if (clip.name === name) {\n        return clip;\n      }\n    }\n  }\n\n  addClip (clip: TimelineClip): void {\n    clip.id = (this.clipSeed++).toString();\n    this.clips.push(clip);\n  }\n\n  private createClipPlayable (clip: TimelineClip) {\n    return clip.asset.createPlayable();\n  }\n\n  override fromData (data: spec.EffectsObjectData): void {\n    super.fromData(data);\n    for (const child of this.children) {\n      child.parent = this;\n    }\n  }\n}\n\nexport enum TrackType {\n  MasterTrack,\n  ObjectTrack,\n}\n\nexport class RuntimeClip {\n  clip: TimelineClip;\n  playable: Playable;\n  parentMixer: TrackMixerPlayable;\n\n  // TODO: 粒子结束行为有特殊逻辑，这里 cache 一下避免每帧查询组件导致 GC。粒子结束行为判断统一后可移除\n  private particleSystem: ParticleSystem;\n\n  constructor (clip: TimelineClip, clipPlayable: Playable, parentMixer: TrackMixerPlayable) {\n    this.clip = clip;\n    this.playable = clipPlayable;\n    this.parentMixer = parentMixer;\n  }\n\n  set enable (value: boolean) {\n    if (value) {\n      this.playable.play();\n    } else {\n      this.parentMixer.setClipWeight(this.playable, 0);\n      this.playable.pause();\n    }\n  }\n\n  getParticleSystem () {\n    if (!this.particleSystem) {\n      if (this.parentMixer.trackInstance.boundObject instanceof VFXItem) {\n        this.particleSystem = this.parentMixer.trackInstance.boundObject.getComponent(ParticleSystem);\n      }\n    }\n\n    return this.particleSystem;\n  }\n\n  evaluateAt (localTime: number) {\n    const clip = this.clip;\n\n    let weight = 1.0;\n    let ended = false;\n    let started = false;\n    const boundObject = this.parentMixer.trackInstance.boundObject;\n\n    if (localTime >= clip.start + clip.duration && clip.endBehavior === spec.EndBehavior.destroy) {\n      if (boundObject instanceof VFXItem && VFXItem.isParticle(boundObject) && this.getParticleSystem() && !this.getParticleSystem().destroyed) {\n        weight = 1.0;\n      } else {\n        weight = 0.0;\n        ended = true;\n      }\n    } else if (localTime - this.clip.start >= 0) {\n      weight = 1.0;\n      started = true;\n    } else if (localTime < clip.start) {\n      weight = 0.0;\n    }\n\n    if (started && this.playable.getPlayState() !== PlayState.Playing) {\n      this.playable.play();\n    }\n    this.parentMixer.setClipWeight(this.playable, weight);\n\n    const clipTime = clip.toLocalTime(localTime);\n\n    this.playable.setTime(clipTime);\n\n    // 判断动画是否结束\n    if (ended) {\n      if (this.playable.getPlayState() === PlayState.Playing) {\n        this.playable.pause();\n      }\n    }\n  }\n}\n\n/**\n * @since 2.0.0\n */\nexport interface TimelineClipData {\n  asset: PlayableAsset,\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport { ActivationMixerPlayable } from '../playables/activation-mixer-playable';\nimport { TrackAsset } from '../track';\nimport type { TrackMixerPlayable } from '../playables/track-mixer-playable';\n\n@effectsClass(spec.DataType.ActivationTrack)\nexport class ActivationTrack extends TrackAsset {\n  override createTrackMixer (): TrackMixerPlayable {\n    return new ActivationMixerPlayable();\n  }\n}\n","import type { EffectsObjectData } from '@galacean/effects-specification';\nimport { serialize } from '../../../decorators';\nimport { TrackAsset } from '../track';\n\nexport abstract class PropertyTrack extends TrackAsset {\n\n  protected propertyNames: string[] = [];\n\n  @serialize()\n  protected path = '';\n\n  override fromData (data: EffectsObjectData): void {\n    super.fromData(data);\n    const propertyNames = this.path.split('.');\n\n    this.propertyNames = propertyNames;\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { FloatPropertyMixerPlayable } from '../playables';\nimport { PropertyTrack } from './property-track';\n\n@effectsClass(spec.DataType.FloatPropertyTrack)\nexport class FloatPropertyTrack extends PropertyTrack {\n\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new FloatPropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { SpriteColorMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\n@effectsClass(spec.DataType.SpriteColorTrack)\nexport class SpriteColorTrack extends TrackAsset {\n  override createTrackMixer (): TrackMixerPlayable {\n    return new SpriteColorMixerPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { CompositionComponent } from '../../../components';\nimport { effectsClass } from '../../../decorators';\nimport { VFXItem } from '../../../vfx-item';\nimport type { TrackMixerPlayable } from '../playables';\nimport { SubCompositionMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\n@effectsClass(spec.DataType.SubCompositionTrack)\nexport class SubCompositionTrack extends TrackAsset {\n\n  override updateAnimatedObject (boundObject: object): object {\n    if (!(boundObject instanceof VFXItem)) {\n      throw new Error('SubCompositionTrack needs to be set under the VFXItem track.');\n    }\n\n    return boundObject.getComponent(CompositionComponent);\n  }\n\n  override createTrackMixer (): TrackMixerPlayable {\n    return new SubCompositionMixerPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { TransformMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\n@effectsClass(spec.DataType.TransformTrack)\nexport class TransformTrack extends TrackAsset {\n\n  override createTrackMixer (): TrackMixerPlayable {\n    return new TransformMixerPlayable();\n  }\n}\n","import { RendererComponent } from '../../../components';\nimport { effectsClass, serialize } from '../../../decorators';\nimport { TrackAsset } from '../track';\n\n@effectsClass('MaterialTrack')\nexport class MaterialTrack extends TrackAsset {\n\n  @serialize()\n  index: number;\n\n  override updateAnimatedObject (boundObject: object): object {\n    if (!(boundObject instanceof RendererComponent)) {\n      throw new Error('MaterialTrack: expected a RendererComponent bound object.');\n    }\n\n    const materials = boundObject.materials;\n\n    if (this.index >= materials.length) {\n      throw new Error(`MaterialTrack: material index ${this.index} out of bounds (length=${materials.length}).`);\n    }\n\n    return materials[this.index];\n  }\n}\n","import type { TrackMixerPlayable } from '../playables';\nimport { ParticleMixerPlayable } from '../playables';\nimport { TrackAsset } from '../track';\n\nexport class ParticleTrack extends TrackAsset {\n\n  override createTrackMixer (): TrackMixerPlayable {\n    return new ParticleMixerPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { Vector2PropertyMixerPlayable, Vector3PropertyMixerPlayable, Vector4PropertyMixerPlayable } from '../playables';\nimport { PropertyTrack } from './property-track';\n\n@effectsClass(spec.DataType.Vector4PropertyTrack)\nexport class Vector4PropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new Vector4PropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}\n\n@effectsClass(spec.DataType.Vector3PropertyTrack)\nexport class Vector3PropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new Vector3PropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}\n\n@effectsClass(spec.DataType.Vector2PropertyTrack)\nexport class Vector2PropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new Vector2PropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { TrackMixerPlayable } from '../playables';\nimport { ColorPropertyMixerPlayable } from '../playables';\nimport { PropertyTrack } from './property-track';\n\n@effectsClass(spec.DataType.ColorPropertyTrack)\nexport class ColorPropertyTrack extends PropertyTrack {\n  override createTrackMixer (): TrackMixerPlayable {\n    const mixer = new ColorPropertyMixerPlayable();\n\n    mixer.propertyPath = this.path;\n\n    return mixer;\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport { VFXItem } from '../../../vfx-item';\nimport { ParticleSystem } from '../../particle/particle-system';\nimport { ParticleBehaviourPlayableAsset } from '../../particle/particle-vfx-item';\nimport { SpriteComponent, ComponentTimePlayableAsset, EffectComponentTimeTrack, SpriteComponentTimeTrack } from '../../sprite/sprite-item';\nimport { EffectComponent } from '../../../components';\nimport { TrackAsset } from '../track';\nimport type { TimelineAsset } from '../timeline-asset';\nimport { ActivationTrack } from './activation-track';\nimport { ParticleTrack } from './particle-track';\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.ObjectBindingTrack)\nexport class ObjectBindingTrack extends TrackAsset {\n\n  create (timelineAsset: TimelineAsset, sceneBindingMap: Record<string, VFXItem>): void {\n    const boundItem = sceneBindingMap[this.getInstanceId()];\n\n    if (!(boundItem instanceof VFXItem)) {\n      return;\n    }\n\n    for (const childTrack of this.getChildTracks()) {\n      if (childTrack instanceof ActivationTrack) {\n\n        // 添加粒子动画 clip // TODO 待移除\n        if (boundItem.getComponent(ParticleSystem)) {\n          const particleTrack = timelineAsset.createTrack(ParticleTrack, this, 'ParticleTrack');\n\n          for (const activationClip of childTrack.getClips()) {\n            const particleClip = particleTrack.createClip(ParticleBehaviourPlayableAsset);\n\n            particleClip.start = activationClip.start;\n            particleClip.duration = activationClip.duration;\n            particleClip.endBehavior = activationClip.endBehavior;\n          }\n\n        }\n\n        // 添加图层帧动画动画时间 clip // TODO 待移除\n        if (boundItem.getComponent(SpriteComponent)) {\n          const componentTimeTrack = timelineAsset.createTrack(SpriteComponentTimeTrack, this, 'SpriteComponentTimeTrack');\n\n          for (const activationClip of childTrack.getClips()) {\n            const clip = componentTimeTrack.createClip(ComponentTimePlayableAsset);\n\n            clip.start = activationClip.start;\n            clip.duration = activationClip.duration;\n            clip.endBehavior = activationClip.endBehavior;\n          }\n        }\n\n        // 添加图层帧动画动画时间 clip // TODO 待移除\n        if (boundItem.getComponent(EffectComponent)) {\n          const componentTimeTrack = timelineAsset.createTrack(EffectComponentTimeTrack, this, 'EffectComponentTimeTrack');\n\n          for (const activationClip of childTrack.getClips()) {\n            const clip = componentTimeTrack.createClip(ComponentTimePlayableAsset);\n\n            clip.start = activationClip.start;\n            clip.duration = activationClip.duration;\n            clip.endBehavior = activationClip.endBehavior;\n          }\n        }\n\n        break;\n      }\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { ActivationPlayable } from '../playables';\n\n@effectsClass(spec.DataType.ActivationPlayableAsset)\nexport class ActivationPlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    return new ActivationPlayable();\n  }\n}","import { effectsClass, serialize } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { PropertyClipPlayable } from '../playables';\nimport { createValueGetter } from '../../../math';\nimport type { Color } from '@galacean/effects-math/es/core';\nimport * as spec from '@galacean/effects-specification';\n\n@effectsClass(spec.DataType.ColorPropertyPlayableAsset)\nexport class ColorPropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.ColorCurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Color>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n","import type { FixedNumberExpression } from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { PropertyClipPlayable } from '../playables';\nimport { createValueGetter } from '../../../math';\nimport * as spec from '@galacean/effects-specification';\n\n@effectsClass(spec.DataType.FloatPropertyPlayableAsset)\nexport class FloatPropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: FixedNumberExpression;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { effectsClass } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { SubCompositionClipPlayable } from '../playables';\n\n@effectsClass(spec.DataType.SubCompositionPlayableAsset)\nexport class SubCompositionPlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    return new SubCompositionClipPlayable();\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Vector2, Vector3, Vector4 } from '@galacean/effects-math/es/core';\nimport { effectsClass, serialize } from '../../../decorators';\nimport type { Playable } from '../playable';\nimport { PlayableAsset } from '../playable';\nimport { PropertyClipPlayable } from '../playables';\nimport { createValueGetter } from '../../../math';\n\n@effectsClass(spec.DataType.Vector4PropertyPlayableAsset)\nexport class Vector4PropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.Vector4CurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Vector4>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n\n@effectsClass(spec.DataType.Vector3PropertyPlayableAsset)\nexport class Vector3ropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.Vector3CurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Vector3>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n\n@effectsClass(spec.DataType.Vector2PropertyPlayableAsset)\nexport class Vector2PropertyPlayableAsset extends PlayableAsset {\n  @serialize()\n  curveData: spec.Vector2CurveValue;\n\n  override createPlayable (): Playable {\n    const clipPlayable = new PropertyClipPlayable<Vector2>();\n\n    clipPlayable.curve = createValueGetter(this.curveData);\n    clipPlayable.value = clipPlayable.curve.getValue(0);\n\n    return clipPlayable;\n  }\n}\n","import type { PlayableOutput } from './playable';\nimport type { TrackMixerPlayable } from './playables';\nimport type { TrackAsset } from './track';\n\n/**\n * A class that stores track assets and the generated mixer playables and playable outputs.\n * It is used to query the corresponding playable object based on the track asset.\n */\nexport class TrackInstance {\n  boundObject: object;\n\n  trackAsset: TrackAsset;\n  mixer: TrackMixerPlayable;\n  output: PlayableOutput;\n\n  children: TrackInstance[] = [];\n\n  constructor (trackAsset: TrackAsset, mixer: TrackMixerPlayable, output: PlayableOutput) {\n    this.trackAsset = trackAsset;\n    this.mixer = mixer;\n    this.output = output;\n\n    this.mixer.trackInstance = this;\n  }\n\n  addChild (trackInstance: TrackInstance) {\n    this.children.push(trackInstance);\n  }\n}","import * as spec from '@galacean/effects-specification';\nimport { effectsClass, serialize } from '../../decorators';\nimport type { VFXItem } from '../../vfx-item';\nimport type { RuntimeClip, TrackAsset } from './track';\nimport { ObjectBindingTrack } from './tracks';\nimport { PlayState } from './playable';\nimport type { Constructor } from '../../utils';\nimport { TrackInstance } from './track-instance';\nimport type { SceneBinding } from '../../components';\nimport { EffectsObject } from '../../effects-object';\n\n@effectsClass(spec.DataType.TimelineAsset)\nexport class TimelineAsset extends EffectsObject {\n  @serialize()\n  tracks: TrackAsset[] = [];\n\n  private cacheFlattenedTracks: TrackAsset[] | null = null;\n\n  get flattenedTracks () {\n    if (!this.cacheFlattenedTracks) {\n      this.cacheFlattenedTracks = [];\n      // flatten track tree\n      for (const masterTrack of this.tracks) {\n        this.cacheFlattenedTracks.push(masterTrack);\n        this.addSubTracksRecursive(masterTrack, this.cacheFlattenedTracks);\n      }\n    }\n\n    return this.cacheFlattenedTracks;\n  }\n\n  createTrack<T extends TrackAsset> (classConstructor: Constructor<T>, parent: TrackAsset, name?: string): T {\n    const newTrack = new classConstructor(this.engine);\n\n    newTrack.name = name ? name : classConstructor.name;\n    parent.addChild(newTrack);\n\n    this.invalidate();\n\n    return newTrack;\n  }\n\n  /**\n   * Invalidates the asset, called when tracks data changed\n   */\n  private invalidate () {\n    this.cacheFlattenedTracks = null;\n  }\n\n  private addSubTracksRecursive (track: TrackAsset, allTracks: TrackAsset[]) {\n    for (const subTrack of track.getChildTracks()) {\n      allTracks.push(subTrack);\n    }\n    for (const subTrack of track.getChildTracks()) {\n      this.addSubTracksRecursive(subTrack, allTracks);\n    }\n  }\n}\n\nexport class TimelineInstance {\n  private time = 0;\n  private clips: RuntimeClip[] = [];\n  private masterTrackInstances: TrackInstance[] = [];\n\n  constructor (timelineAsset: TimelineAsset, sceneBindings: SceneBinding[]) {\n    const sceneBindingMap: Record<string, VFXItem> = {};\n\n    for (const sceneBinding of sceneBindings) {\n      sceneBindingMap[sceneBinding.key.getInstanceId()] = sceneBinding.value;\n    }\n\n    // TODO: Hack 临时生成轨道, 待移除\n    for (const track of timelineAsset.tracks) {\n      if (track instanceof ObjectBindingTrack) {\n        track.create(timelineAsset, sceneBindingMap);\n      }\n    }\n\n    this.compileTracks(timelineAsset.flattenedTracks, sceneBindings);\n  }\n\n  setTime (time: number) {\n    this.time = time;\n  }\n\n  getTime () {\n    return this.time;\n  }\n\n  evaluate (deltaTime: number) {\n    const time = this.getTime();\n\n    // TODO search active clips\n\n    for (const clip of this.clips) {\n      clip.evaluateAt(time);\n    }\n\n    for (const track of this.masterTrackInstances) {\n      this.tickTrack(track, deltaTime);\n    }\n  }\n\n  compileTracks (tracks: TrackAsset[], sceneBindings: SceneBinding[]) {\n\n    const outputTrack: TrackAsset[] = tracks;\n\n    // Map for searching track instance with track asset guid\n    const trackInstanceMap: Record<string, TrackInstance> = {};\n\n    for (const track of outputTrack) {\n      // Create track mixer and track output\n      const trackMixPlayable = track.createPlayableGraph(this.clips);\n\n      const trackOutput = track.createOutput();\n\n      // Create track instance\n      const trackInstance = new TrackInstance(track, trackMixPlayable, trackOutput);\n\n      trackInstanceMap[track.getInstanceId()] = trackInstance;\n\n      if (!track.parent) {\n        this.masterTrackInstances.push(trackInstance);\n      }\n    }\n\n    // Build trackInstance tree\n    for (const track of outputTrack) {\n      const trackInstance = trackInstanceMap[track.getInstanceId()];\n\n      for (const child of track.getChildTracks()) {\n        const childTrackInstance = trackInstanceMap[child.getInstanceId()];\n\n        trackInstance.addChild(childTrackInstance);\n      }\n    }\n\n    for (const sceneBinding of sceneBindings) {\n      trackInstanceMap[sceneBinding.key.getInstanceId()].boundObject = sceneBinding.value;\n    }\n\n    for (const trackInstance of this.masterTrackInstances) {\n      this.updateTrackAnimatedObject(trackInstance);\n    }\n  }\n\n  private tickTrack (track: TrackInstance, deltaTime: number) {\n\n    const context = track.output.context;\n\n    context.deltaTime = deltaTime;\n\n    track.output.setUserData(track.boundObject);\n\n    for (const clip of track.mixer.clipPlayables) {\n      if (clip.getPlayState() === PlayState.Playing) {\n        clip.processFrame(context);\n      }\n    }\n\n    track.mixer.evaluate(context);\n\n    for (const child of track.children) {\n      this.tickTrack(child, deltaTime);\n    }\n  }\n\n  private updateTrackAnimatedObject (trackInstance: TrackInstance) {\n    for (const subTrack of trackInstance.children) {\n      if (!subTrack.boundObject) {\n        const boundObject = subTrack.trackAsset.updateAnimatedObject(trackInstance.boundObject);\n\n        subTrack.boundObject = boundObject;\n      }\n      this.updateTrackAnimatedObject(subTrack);\n    }\n  }\n}\n","import { Color } from '@galacean/effects-math/es/core/color';\nimport * as spec from '@galacean/effects-specification';\nimport type { ColorPlayableAssetData } from '../../animation';\nimport { ColorPlayable } from '../../animation';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\nimport { TextureSourceType, type Texture2DSourceOptionsVideo } from '../../texture';\nimport type { FrameContext } from '../timeline';\nimport { Playable, PlayableAsset, TrackMixerPlayable, TrackAsset } from '../timeline';\nimport type { VFXItem } from '../../vfx-item';\nimport type { Geometry } from '../../render';\nimport { rotateVec2 } from '../../shape';\nimport { MaskableGraphic, EffectComponent } from '../../components';\n\n/**\n * 图层元素基础属性, 经过处理后的 spec.SpriteContent.options\n */\nexport type SpriteItemOptions = {\n  startColor: spec.vec4,\n  renderLevel?: spec.RenderLevel,\n};\n\nexport type splitsDataType = [r: number, x: number, y: number, w: number, h: number | undefined][];\n\nconst singleSplits: splitsDataType = [[0, 0, 1, 1, 0]];\n\nlet seed = 0;\n\n@effectsClass(spec.DataType.SpriteColorPlayableAsset)\nexport class SpriteColorPlayableAsset extends PlayableAsset {\n  data: ColorPlayableAssetData;\n\n  override createPlayable (): Playable {\n    const spriteColorPlayable = new ColorPlayable();\n\n    spriteColorPlayable.create(this.data);\n\n    return spriteColorPlayable;\n  }\n\n  override fromData (data: ColorPlayableAssetData): void {\n    this.data = data;\n  }\n}\n\nexport class ComponentTimeTrack extends TrackAsset {\n  override createTrackMixer (): TrackMixerPlayable {\n    return new TrackMixerPlayable();\n  }\n}\n\nexport class SpriteComponentTimeTrack extends ComponentTimeTrack {\n  override updateAnimatedObject (boundObject: object): object {\n\n    return (boundObject as VFXItem).getComponent(SpriteComponent);\n  }\n}\n\nexport class EffectComponentTimeTrack extends ComponentTimeTrack {\n  override updateAnimatedObject (boundObject: object): object {\n    return (boundObject as VFXItem).getComponent(EffectComponent);\n  }\n}\n\nexport class ComponentTimePlayableAsset extends PlayableAsset {\n  override createPlayable (): Playable {\n    const componentTimePlayable = new ComponentTimePlayable();\n\n    return componentTimePlayable;\n  }\n}\n\nexport class ComponentTimePlayable extends Playable {\n  override processFrame (context: FrameContext): void {\n    const boundObject = context.output.getUserData();\n\n    if (!('time' in boundObject)) {\n      return;\n    }\n\n    boundObject.time = this.time;\n  }\n}\n\n/**\n * Sprite component class\n */\n@effectsClass(spec.DataType.SpriteComponent)\nexport class SpriteComponent extends MaskableGraphic {\n  time = 0;\n  duration = 1;\n  /**\n   * @internal\n  */\n  splits: splitsDataType = singleSplits;\n\n  protected textureSheetAnimation?: spec.TextureSheetAnimation;\n\n  constructor (engine: Engine, props?: spec.SpriteComponentData) {\n    super(engine);\n\n    this.name = 'MSprite' + seed++;\n    if (props) {\n      this.fromData(props);\n    }\n  }\n\n  override onUpdate (dt: number): void {\n    super.onUpdate(dt);\n    let time = this.time;\n    const duration = this.duration;\n    const textureAnimation = this.textureSheetAnimation;\n    const loop = textureAnimation?.loop ?? true;\n\n    if (time > duration && loop) {\n      time = time % duration;\n    }\n\n    const life = Math.min(Math.max(time / duration, 0.0), 1.0);\n    const { video } = this.renderer.texture.source as Texture2DSourceOptionsVideo;\n\n    if (video) {\n      if (time === 0) {\n        video.pause();\n      } else {\n        video.play().catch(e => { this.engine.renderErrors.add(e); });\n      }\n      this.renderer.texture.uploadCurrentVideoFrame();\n    }\n    if (textureAnimation) {\n      const total = textureAnimation.total || (textureAnimation.row * textureAnimation.col);\n      let texRectX = 0;\n      let texRectY = 0;\n      let texRectW = 1;\n      let texRectH = 1;\n      let flip;\n\n      if (this.splits) {\n        const sp = this.splits[0];\n\n        flip = sp[4];\n        texRectX = sp[0];\n        texRectY = sp[1];\n        if (flip) {\n          texRectW = sp[3];\n          texRectH = sp[2];\n        } else {\n          texRectW = sp[2];\n          texRectH = sp[3];\n        }\n      }\n      let dx, dy;\n\n      if (flip) {\n        dx = 1 / textureAnimation.row * texRectW;\n        dy = 1 / textureAnimation.col * texRectH;\n      } else {\n        dx = 1 / textureAnimation.col * texRectW;\n        dy = 1 / textureAnimation.row * texRectH;\n      }\n      let texOffset;\n\n      if (textureAnimation.animate) {\n        const frameIndex = Math.round(life * (total - 1));\n        const yIndex = Math.floor(frameIndex / textureAnimation.col);\n        const xIndex = frameIndex - yIndex * textureAnimation.col;\n\n        texOffset = flip ? [dx * yIndex, dy * (textureAnimation.col - xIndex)] : [dx * xIndex, dy * (1 + yIndex)];\n      } else {\n        texOffset = [0, dy];\n      }\n      this.material.getVector4('_TexOffset')?.setFromArray([\n        texRectX + texOffset[0],\n        texRectH + texRectY - texOffset[1],\n        dx, dy,\n      ]);\n    }\n\n    this.time = time + dt / 1000;\n  }\n\n  override onDisable (): void {\n    super.onDisable();\n    this.time = 0;\n  }\n\n  override onDestroy (): void {\n    const texture = this.renderer.texture;\n    const source = texture.source;\n\n    if (source.sourceType === TextureSourceType.video && source?.video) {\n      source.video.pause();\n      source.video.src = '';\n      source.video.load();\n    }\n  }\n\n  protected updateGeometry (geometry: Geometry) {\n    const split: number[] = this.textureSheetAnimation ? [0, 0, 1, 1, this.splits[0][4] as number] : this.splits[0] as number[];\n    const uvTransform = split;\n    const x = uvTransform[0];\n    const y = uvTransform[1];\n    const isRotate90 = Boolean(uvTransform[4]);\n    const width = isRotate90 ? uvTransform[3] : uvTransform[2];\n    const height = isRotate90 ? uvTransform[2] : uvTransform[3];\n    const angle = isRotate90 ? -Math.PI / 2 : 0;\n\n    const aUV = geometry.getAttributeData('aUV');\n    const aPos = geometry.getAttributeData('aPos');\n    const indices = geometry.getIndexData();\n\n    const tempPosition: spec.vec2 = [0, 0];\n\n    if (aUV && aPos && indices) {\n      const vertexCount = aUV.length / 2;\n\n      for (let i = 0; i < vertexCount; i++) {\n        const positionOffset = i * 3;\n        const uvOffset = i * 2;\n        const positionX = aPos[positionOffset];\n        const positionY = aPos[positionOffset + 1];\n\n        tempPosition[0] = positionX;\n        tempPosition[1] = positionY;\n        rotateVec2(tempPosition, tempPosition, angle);\n\n        aUV[uvOffset] = (tempPosition[0] + 0.5) * width + x;\n        aUV[uvOffset + 1] = (tempPosition[1] + 0.5) * height + y;\n      }\n\n      this.geometry.setAttributeData('aPos', aPos.slice());\n      this.geometry.setAttributeData('aUV', aUV.slice());\n      this.geometry.setIndexData(indices.slice());\n      this.geometry.setDrawCount(indices.length);\n    }\n\n    this.geometry.subMeshes.length = 0;\n    for (const subMesh of geometry.subMeshes) {\n      this.geometry.subMeshes.push({\n        offset: subMesh.offset,\n        indexCount: subMesh.indexCount,\n        vertexCount: subMesh.vertexCount,\n      });\n    }\n  }\n\n  /**\n   * @deprecated\n   * 原有打包纹理拆分逻辑，待移除\n   */\n  protected updateGeometryFromMultiSplit () {\n    const { splits, textureSheetAnimation } = this;\n    const sx = 1, sy = 1;\n    const geometry = this.defaultGeometry;\n\n    const originData = [-.5, .5, -.5, -.5, .5, .5, .5, -.5];\n    const aUV = [];\n    const index = [];\n    const position = [];\n    const col = 2;\n    const row = 2;\n\n    for (let x = 0; x < col; x++) {\n      for (let y = 0; y < row; y++) {\n        const base = (y * 2 + x) * 4;\n        // @ts-expect-error\n        const split: number[] = textureSheetAnimation ? [0, 0, 1, 1, splits[0][4]] : splits[y * 2 + x];\n        const texOffset = split[4] ? [0, 0, 1, 0, 0, 1, 1, 1] : [0, 1, 0, 0, 1, 1, 1, 0];\n        const dw = ((x + x + 1) / col - 1) / 2;\n        const dh = ((y + y + 1) / row - 1) / 2;\n        const tox = split[0];\n        const toy = split[1];\n        const tsx = split[4] ? split[3] : split[2];\n        const tsy = split[4] ? split[2] : split[3];\n        const origin = [\n          originData[0] / col + dw,\n          originData[1] / row + dh,\n          originData[2] / col + dw,\n          originData[3] / row + dh,\n          originData[4] / col + dw,\n          originData[5] / row + dh,\n          originData[6] / col + dw,\n          originData[7] / row + dh,\n        ];\n\n        aUV.push(\n          texOffset[0] * tsx + tox, texOffset[1] * tsy + toy,\n          texOffset[2] * tsx + tox, texOffset[3] * tsy + toy,\n          texOffset[4] * tsx + tox, texOffset[5] * tsy + toy,\n          texOffset[6] * tsx + tox, texOffset[7] * tsy + toy,\n        );\n        position.push((origin[0]) * sx, (origin[1]) * sy, 0.0,\n          (origin[2]) * sx, (origin[3]) * sy, 0.0,\n          (origin[4]) * sx, (origin[5]) * sy, 0.0,\n          (origin[6]) * sx, (origin[7]) * sy, 0.0);\n        index.push(base, 1 + base, 2 + base, 2 + base, 1 + base, 3 + base);\n      }\n    }\n    geometry.setAttributeData('aPos', new Float32Array(position));\n    geometry.setIndexData(new Uint16Array(index));\n    geometry.setAttributeData('aUV', new Float32Array(aUV));\n    geometry.setDrawCount(index.length);\n  }\n\n  override fromData (data: spec.SpriteComponentData): void {\n    super.fromData(data);\n\n    const splits = data.splits ?? singleSplits;\n    const textureSheetAnimation = data.textureSheetAnimation;\n\n    this.splits = splits;\n    this.textureSheetAnimation = textureSheetAnimation;\n\n    // @ts-expect-error\n    const geometry = data.geometry ? this.engine.findObject<Geometry>(data.geometry) : this.defaultGeometry;\n\n    if (splits.length === 1) {\n      this.updateGeometry(geometry);\n    } else {\n      // TODO: 原有打包纹理拆分逻辑，待移除\n      //-------------------------------------------------------------------------\n      this.updateGeometryFromMultiSplit();\n    }\n\n    this.interaction = data.interaction;\n\n    const startColor = data.options.startColor || [1, 1, 1, 1];\n\n    this.material.setColor('_Color', new Color().setFromArray(startColor));\n\n    //@ts-expect-error\n    this.duration = data.duration ?? this.item.duration;\n  }\n}\n","import type { Engine } from '../../engine';\nimport { Plugin } from '../plugin';\n\nexport class ParticleLoader extends Plugin {\n  engine: Engine;\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/point/Point.ts\n\nimport type { PointData } from './point-data';\nimport type { PointLike } from './point-like';\n\n/**\n * The Point object represents a location in a two-dimensional coordinate system, where `x` represents\n * the position on the horizontal axis and `y` represents the position on the vertical axis.\n */\nexport class Point implements PointLike {\n  /**\n   * Position of the point on the x axis\n   */\n  x = 0;\n  /**\n   * Position of the point on the y axis\n   */\n  y = 0;\n\n  /**\n   * Creates a new `Point`\n   * @param {number} [x=0] - position of the point on the x axis\n   * @param {number} [y=0] - position of the point on the y axis\n   */\n  constructor (x = 0, y = 0) {\n    this.x = x;\n    this.y = y;\n  }\n\n  /**\n   * Creates a clone of this point\n   * @returns A clone of this point\n   */\n  clone (): Point {\n    return new Point(this.x, this.y);\n  }\n\n  /**\n   * Copies `x` and `y` from the given point into this point\n   * @param p - The point to copy from\n   * @returns The point instance itself\n   */\n  copyFrom (p: PointData): this {\n    this.set(p.x, p.y);\n\n    return this;\n  }\n\n  /**\n   * Copies this point's x and y into the given point (`p`).\n   * @param p - The point to copy to. Can be any of type that is or extends `PointData`\n   * @returns The point (`p`) with values updated\n   */\n  copyTo<T extends PointLike> (p: T): T {\n    p.set(this.x, this.y);\n\n    return p;\n  }\n\n  /**\n   * Accepts another point (`p`) and returns `true` if the given point is equal to this point\n   * @param p - The point to check\n   * @returns Returns `true` if both `x` and `y` are equal\n   */\n  equals (p: PointData): boolean {\n    return (p.x === this.x) && (p.y === this.y);\n  }\n\n  /**\n   * Sets the point to a new `x` and `y` position.\n   * If `y` is omitted, both `x` and `y` will be set to `x`.\n   * @param {number} [x=0] - position of the point on the `x` axis\n   * @param {number} [y=x] - position of the point on the `y` axis\n   * @returns The point instance itself\n   */\n  set (x = 0, y: number = x): this {\n    this.x = x;\n    this.y = y;\n\n    return this;\n  }\n\n  /**\n   * A static Point object with `x` and `y` values of `0`. Can be used to avoid creating new objects multiple times.\n   * @readonly\n   */\n  static get shared (): Point {\n    tempPoint.x = 0;\n    tempPoint.y = 0;\n\n    return tempPoint;\n  }\n}\n\nconst tempPoint = new Point();\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/scene/graphics/shared/buildCommands/buildLine.ts\n\nimport { NumberEpsilon } from '@galacean/effects-math/es/core/utils';\nimport * as spec from '@galacean/effects-specification';\nimport { Point } from './point';\n\nexport const closePointEps = 1e-4;\nexport const curveEps = 0.0001;\n\n/**\n * Buffers vertices to draw a square cap.\n *\n * @internal\n * @private\n * @param x - X-coord of end point\n * @param y - Y-coord of end point\n * @param nx - X-coord of line normal pointing inside\n * @param ny - Y-coord of line normal pointing inside\n * @param innerWeight - Weight of inner points\n * @param outerWeight - Weight of outer points\n * @param clockwise - Whether the cap is drawn clockwise\n * @param verts - vertex buffer\n * @returns - no. of vertices pushed\n */\nfunction square (\n  x: number,\n  y: number,\n  nx: number,\n  ny: number,\n  innerWeight: number,\n  outerWeight: number,\n  clockwise: boolean, /* rotation for square (true at left end, false at right end) */\n  verts: Array<number>\n): number {\n  const ix = x - (nx * innerWeight);\n  const iy = y - (ny * innerWeight);\n  const ox = x + (nx * outerWeight);\n  const oy = y + (ny * outerWeight);\n\n  /* Rotate nx,ny for extension vector */\n  let exx;\n  let eyy;\n\n  if (clockwise) {\n    exx = ny;\n    eyy = -nx;\n  } else {\n    exx = -ny;\n    eyy = nx;\n  }\n\n  /* [i|0]x,y extended at cap */\n  const eix = ix + exx;\n  const eiy = iy + eyy;\n  const eox = ox + exx;\n  const eoy = oy + eyy;\n\n  /* Square itself must be inserted clockwise*/\n  verts.push(eix, eiy);\n  verts.push(eox, eoy);\n\n  return 2;\n}\n\n/**\n * Buffers vertices to draw an arc at the line joint or cap.\n *\n * @internal\n * @private\n * @param cx - X-coord of center\n * @param cy - Y-coord of center\n * @param sx - X-coord of arc start\n * @param sy - Y-coord of arc start\n * @param ex - X-coord of arc end\n * @param ey - Y-coord of arc end\n * @param verts - buffer of vertices\n * @param clockwise - orientation of vertices\n * @returns - no. of vertices pushed\n */\nfunction round (\n  cx: number,\n  cy: number,\n  sx: number,\n  sy: number,\n  ex: number,\n  ey: number,\n  verts: number[],\n  clockwise: boolean, /* if not cap, then clockwise is turn of joint, otherwise rotation from angle0 to angle1 */\n): number {\n  const cx2p0x = sx - cx;\n  const cy2p0y = sy - cy;\n\n  let angle0 = Math.atan2(cx2p0x, cy2p0y);\n  let angle1 = Math.atan2(ex - cx, ey - cy);\n\n  if (clockwise && angle0 < angle1) {\n    angle0 += Math.PI * 2;\n  } else if (!clockwise && angle0 > angle1) {\n    angle1 += Math.PI * 2;\n  }\n\n  let startAngle = angle0;\n  const angleDiff = angle1 - angle0;\n  const absAngleDiff = Math.abs(angleDiff);\n\n  const radius = Math.sqrt((cx2p0x * cx2p0x) + (cy2p0y * cy2p0y));\n  const segCount = ((15 * absAngleDiff * Math.sqrt(radius) / Math.PI) >> 0) + 1;\n  const angleInc = angleDiff / segCount;\n\n  startAngle += angleInc;\n\n  if (clockwise) {\n    verts.push(cx, cy);\n    verts.push(sx, sy);\n\n    for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n      verts.push(cx, cy);\n      verts.push(cx + ((Math.sin(angle) * radius)),\n        cy + ((Math.cos(angle) * radius)));\n    }\n\n    verts.push(cx, cy);\n    verts.push(ex, ey);\n  } else {\n    verts.push(sx, sy);\n    verts.push(cx, cy);\n\n    for (let i = 1, angle = startAngle; i < segCount; i++, angle += angleInc) {\n      verts.push(cx + ((Math.sin(angle) * radius)),\n        cy + ((Math.cos(angle) * radius)));\n      verts.push(cx, cy);\n    }\n\n    verts.push(ex, ey);\n    verts.push(cx, cy);\n  }\n\n  return segCount * 2;\n}\n\nfunction getOrientationOfPoints (points: number[]): number {\n  const m = points.length;\n\n  if (m < 6) {\n    return 1;\n  }\n\n  let area = 0;\n\n  for (let i = 0, x1 = points[m - 2], y1 = points[m - 1]; i < m; i += 2) {\n    const x2 = points[i];\n    const y2 = points[i + 1];\n\n    area += (x2 - x1) * (y2 + y1);\n\n    x1 = x2;\n    y1 = y2;\n  }\n\n  if (area < 0) {\n    return -1;\n  }\n\n  return 1;\n}\n\n/**\n * A stroke attribute object, used to define properties for a stroke.\n */\nexport interface StrokeAttributes {\n  /** The width of the stroke. */\n  width: number,\n  /** The alignment of the stroke. */\n  alignment: number,\n  /** The line cap style to use. */\n  cap: spec.LineCap,\n  /** The line join style to use. */\n  join: spec.LineJoin,\n  /** The miter limit to use. */\n  miterLimit: number,\n  /** Stroke color */\n}\n\n/**\n * Builds a line to draw using the polygon method.\n * @param points\n * @param lineStyle\n * @param flipAlignment\n * @param closed\n * @param vertices\n * @param _verticesStride\n * @param _verticesOffset\n * @param indices\n * @param _indicesOffset\n */\nexport function buildLine (\n  points: number[],\n  lineStyle: StrokeAttributes,\n  flipAlignment: boolean,\n  closed: boolean,\n  // alignment:number,\n\n  vertices: number[],\n  _verticesStride: number,\n  _verticesOffset: number,\n\n  indices: number[],\n  _indicesOffset: number,\n): void {\n  // const shape = graphicsData.shape as Polygon;\n  // let points = graphicsData.points || shape.points.slice();\n  const eps = closePointEps;\n\n  if (points.length === 0) {\n    return;\n  }\n\n  const style = lineStyle;\n\n  let alignment = style.alignment;\n\n  if (lineStyle.alignment !== 0.5) {\n    // rotate the points!\n    let orientation = getOrientationOfPoints(points);\n\n    if (flipAlignment) { orientation *= -1; }\n\n    alignment = ((alignment - 0.5) * orientation) + 0.5;\n  }\n\n  // get first and last point.. figure out the middle!\n  const firstPoint = new Point(points[0], points[1]);\n  const lastPoint = new Point(points[points.length - 2], points[points.length - 1]);\n  const closedShape = closed;\n  const closedPath = Math.abs(firstPoint.x - lastPoint.x) < eps\n    && Math.abs(firstPoint.y - lastPoint.y) < eps;\n\n  // if the first point is the last point - gonna have issues :)\n  if (closedShape) {\n    // need to clone as we are going to slightly modify the shape..\n    points = points.slice();\n\n    if (closedPath) {\n      points.pop();\n      points.pop();\n      lastPoint.set(points[points.length - 2], points[points.length - 1]);\n    }\n\n    const midPointX = (firstPoint.x + lastPoint.x) * 0.5;\n    const midPointY = (lastPoint.y + firstPoint.y) * 0.5;\n\n    points.unshift(midPointX, midPointY);\n    points.push(midPointX, midPointY);\n  }\n\n  const verts = vertices;\n\n  const length = points.length / 2;\n  let indexCount = points.length;\n  const indexStart = verts.length / 2;\n\n  // Max. inner and outer width\n  const width = style.width / 2;\n  const widthSquared = width * width;\n  const miterLimitSquared = style.miterLimit * style.miterLimit;\n\n  /* Line segments of interest where (x1,y1) forms the corner. */\n  let x0 = points[0];\n  let y0 = points[1];\n  let x1 = points[2];\n  let y1 = points[3];\n  let x2 = 0;\n  let y2 = 0;\n\n  /* perp[?](x|y) = the line normal with magnitude lineWidth. */\n  let perpX = -(y0 - y1);\n  let perpY = x0 - x1;\n  let perp1x = 0;\n  let perp1y = 0;\n\n  // 计算向量长度并添加极小值 NumberEpsilon 以避免除以零的情况。\n  let dist = Math.sqrt((perpX * perpX) + (perpY * perpY)) + NumberEpsilon;\n\n  perpX /= dist;\n  perpY /= dist;\n  perpX *= width;\n  perpY *= width;\n\n  const ratio = alignment;// 0.5;\n  const innerWeight = (1 - ratio) * 2;\n  const outerWeight = ratio * 2;\n\n  if (!closedShape) {\n    if (style.cap === spec.LineCap.Round) {\n      indexCount += round(\n        x0 - (perpX * (innerWeight - outerWeight) * 0.5),\n        y0 - (perpY * (innerWeight - outerWeight) * 0.5),\n        x0 - (perpX * innerWeight),\n        y0 - (perpY * innerWeight),\n        x0 + (perpX * outerWeight),\n        y0 + (perpY * outerWeight),\n        verts,\n        true,\n      ) + 2;\n    } else if (style.cap === spec.LineCap.Square) {\n      indexCount += square(x0, y0, perpX, perpY, innerWeight, outerWeight, true, verts);\n    }\n  }\n\n  // Push first point (below & above vertices)\n  verts.push(\n    x0 - (perpX * innerWeight),\n    y0 - (perpY * innerWeight));\n  verts.push(\n    x0 + (perpX * outerWeight),\n    y0 + (perpY * outerWeight));\n\n  for (let i = 1; i < length - 1; ++i) {\n    x0 = points[(i - 1) * 2];\n    y0 = points[((i - 1) * 2) + 1];\n\n    x1 = points[i * 2];\n    y1 = points[(i * 2) + 1];\n\n    x2 = points[(i + 1) * 2];\n    y2 = points[((i + 1) * 2) + 1];\n\n    perpX = -(y0 - y1);\n    perpY = x0 - x1;\n\n    dist = Math.sqrt((perpX * perpX) + (perpY * perpY)) + NumberEpsilon;\n    perpX /= dist;\n    perpY /= dist;\n    perpX *= width;\n    perpY *= width;\n\n    perp1x = -(y1 - y2);\n    perp1y = x1 - x2;\n\n    dist = Math.sqrt((perp1x * perp1x) + (perp1y * perp1y)) + NumberEpsilon;\n    perp1x /= dist;\n    perp1y /= dist;\n    perp1x *= width;\n    perp1y *= width;\n\n    /* d[x|y](0|1) = the component displacement between points p(0,1|1,2) */\n    const dx0 = x1 - x0;\n    const dy0 = y0 - y1;\n    const dx1 = x1 - x2;\n    const dy1 = y2 - y1;\n\n    /* +ve if internal angle < 90 degree, -ve if internal angle > 90 degree. */\n    const dot = (dx0 * dx1) + (dy0 * dy1);\n    /* +ve if internal angle counterclockwise, -ve if internal angle clockwise. */\n    const cross = (dy0 * dx1) - (dy1 * dx0);\n    const clockwise = (cross < 0);\n\n    /* Going nearly parallel? */\n    /* atan(0.001) ~= 0.001 rad ~= 0.057 degree */\n    if (Math.abs(cross) < 0.001 * Math.abs(dot)) {\n      verts.push(\n        x1 - (perpX * innerWeight),\n        y1 - (perpY * innerWeight));\n      verts.push(\n        x1 + (perpX * outerWeight),\n        y1 + (perpY * outerWeight));\n\n      /* 180 degree corner? */\n      if (dot >= 0) {\n        if (style.join === spec.LineJoin.Round) {\n          indexCount += round(\n            x1, y1,\n            x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n            x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n            verts, false) + 4;\n        } else {\n          indexCount += 2;\n        }\n\n        verts.push(\n          x1 - (perp1x * outerWeight),\n          y1 - (perp1y * outerWeight));\n        verts.push(\n          x1 + (perp1x * innerWeight),\n          y1 + (perp1y * innerWeight));\n      }\n\n      continue;\n    }\n\n    /* p[x|y] is the miter point. pDist is the distance between miter point and p1. */\n    const c1 = ((-perpX + x0) * (-perpY + y1)) - ((-perpX + x1) * (-perpY + y0));\n    const c2 = ((-perp1x + x2) * (-perp1y + y1)) - ((-perp1x + x1) * (-perp1y + y2));\n    const px = ((dx0 * c2) - (dx1 * c1)) / cross;\n    const py = ((dy1 * c1) - (dy0 * c2)) / cross;\n    const pDist = ((px - x1) * (px - x1)) + ((py - y1) * (py - y1));\n\n    /* Inner miter point */\n    const imx = x1 + ((px - x1) * innerWeight);\n    const imy = y1 + ((py - y1) * innerWeight);\n    /* Outer miter point */\n    const omx = x1 - ((px - x1) * outerWeight);\n    const omy = y1 - ((py - y1) * outerWeight);\n\n    /* Is the inside miter point too far away, creating a spike? */\n    const smallerInsideSegmentSq = Math.min((dx0 * dx0) + (dy0 * dy0), (dx1 * dx1) + (dy1 * dy1));\n    const insideWeight = clockwise ? innerWeight : outerWeight;\n    const smallerInsideDiagonalSq = smallerInsideSegmentSq + (insideWeight * insideWeight * widthSquared);\n    const insideMiterOk = pDist <= smallerInsideDiagonalSq;\n\n    if (insideMiterOk) {\n      if (style.join === spec.LineJoin.Bevel || pDist / widthSquared > miterLimitSquared) {\n        if (clockwise) /* rotating at inner angle */ {\n          verts.push(imx, imy); // inner miter point\n          verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight)); // first segment's outer vertex\n          verts.push(imx, imy); // inner miter point\n          verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); // second segment's outer vertex\n        } else /* rotating at outer angle */ {\n          verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight)); // first segment's inner vertex\n          verts.push(omx, omy); // outer miter point\n          verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); // second segment's outer vertex\n          verts.push(omx, omy); // outer miter point\n        }\n\n        indexCount += 2;\n      } else if (style.join === spec.LineJoin.Round) {\n        if (clockwise) /* arc is outside */ {\n          verts.push(imx, imy);\n          verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight));\n\n          indexCount += round(\n            x1, y1,\n            x1 + (perpX * outerWeight), y1 + (perpY * outerWeight),\n            x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight),\n            verts, true\n          ) + 4;\n\n          verts.push(imx, imy);\n          verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight));\n        } else /* arc is inside */ {\n          verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight));\n          verts.push(omx, omy);\n\n          indexCount += round(\n            x1, y1,\n            x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n            x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n            verts, false\n          ) + 4;\n\n          verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight));\n          verts.push(omx, omy);\n        }\n      } else {\n        verts.push(imx, imy);\n        verts.push(omx, omy);\n      }\n    } else {\n      verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight)); // first segment's inner vertex\n      verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight)); // first segment's outer vertex\n      if (style.join === spec.LineJoin.Round) {\n        if (clockwise) /* arc is outside */ {\n          indexCount += round(\n            x1, y1,\n            x1 + (perpX * outerWeight), y1 + (perpY * outerWeight),\n            x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight),\n            verts, true\n          ) + 2;\n        } else /* arc is inside */ {\n          indexCount += round(\n            x1, y1,\n            x1 - (perpX * innerWeight), y1 - (perpY * innerWeight),\n            x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight),\n            verts, false\n          ) + 2;\n        }\n      } else if (style.join === spec.LineJoin.Miter && pDist / widthSquared <= miterLimitSquared) {\n        if (clockwise) {\n          verts.push(omx, omy); // inner miter point\n          verts.push(omx, omy); // inner miter point\n        } else {\n          verts.push(imx, imy); // outer miter point\n          verts.push(imx, imy); // outer miter point\n        }\n        indexCount += 2;\n      }\n      verts.push(x1 - (perp1x * innerWeight), y1 - (perp1y * innerWeight)); // second segment's inner vertex\n      verts.push(x1 + (perp1x * outerWeight), y1 + (perp1y * outerWeight)); // second segment's outer vertex\n      indexCount += 2;\n    }\n  }\n\n  x0 = points[(length - 2) * 2];\n  y0 = points[((length - 2) * 2) + 1];\n\n  x1 = points[(length - 1) * 2];\n  y1 = points[((length - 1) * 2) + 1];\n\n  perpX = -(y0 - y1);\n  perpY = x0 - x1;\n\n  dist = Math.sqrt((perpX * perpX) + (perpY * perpY)) + NumberEpsilon;\n  perpX /= dist;\n  perpY /= dist;\n  perpX *= width;\n  perpY *= width;\n\n  verts.push(x1 - (perpX * innerWeight), y1 - (perpY * innerWeight));\n  verts.push(x1 + (perpX * outerWeight), y1 + (perpY * outerWeight));\n\n  if (!closedShape) {\n    if (style.cap === spec.LineCap.Round) {\n      indexCount += round(\n        x1 - (perpX * (innerWeight - outerWeight) * 0.5),\n        y1 - (perpY * (innerWeight - outerWeight) * 0.5),\n        x1 - (perpX * innerWeight),\n        y1 - (perpY * innerWeight),\n        x1 + (perpX * outerWeight),\n        y1 + (perpY * outerWeight),\n        verts,\n        false\n      ) + 2;\n    } else if (style.cap === spec.LineCap.Square) {\n      indexCount += square(x1, y1, perpX, perpY, innerWeight, outerWeight, false, verts);\n    }\n  }\n\n  // const indices = graphicsGeometry.indices;\n  const eps2 = curveEps * curveEps;\n\n  // indices.push(indexStart);\n  for (let i = indexStart; i < indexCount + indexStart - 2; ++i) {\n    x0 = verts[(i * 2)];\n    y0 = verts[(i * 2) + 1];\n\n    x1 = verts[(i + 1) * 2];\n    y1 = verts[((i + 1) * 2) + 1];\n\n    x2 = verts[(i + 2) * 2];\n    y2 = verts[((i + 2) * 2) + 1];\n\n    /* Skip zero area triangles */\n    if (Math.abs((x0 * (y1 - y2)) + (x1 * (y2 - y0)) + (x2 * (y0 - y1))) < eps2) {\n      continue;\n    }\n\n    indices.push(i, i + 1, i + 2);\n  }\n}\n\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/ShapePrimitive.ts\n\nexport abstract class ShapePrimitive {\n\n  /** Checks whether the x and y coordinates passed to this function are contained within this ShapePrimitive. */\n  // abstract contains (x: number, y: number): boolean;\n  /** Checks whether the x and y coordinates passed to this function are contained within the stroke of this shape */\n  //   abstract strokeContains (x: number, y: number, strokeWidth: number): boolean;\n  /** Creates a clone of this ShapePrimitive instance. */\n  abstract clone (): ShapePrimitive;\n  /** Copies the properties from another ShapePrimitive to this ShapePrimitive. */\n  abstract copyFrom (source: ShapePrimitive): void;\n  /** Copies the properties from this ShapePrimitive to another ShapePrimitive. */\n  abstract copyTo (destination: ShapePrimitive): void;\n  /** Returns the framing rectangle of the ShapePrimitive as a Rectangle object. */\n  //   getBounds(out?: Rectangle): Rectangle,\n\n  /** The X coordinate of the shape */\n  // abstract getX (): number;\n  /** The Y coordinate of the shape */\n  // abstract getY (): number;\n\n  abstract build (points: number[]): void;\n\n  abstract triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void;\n}\n","/*\n\n Copyright 2000, Silicon Graphics, Inc. All Rights Reserved.\n Copyright 2015, Google Inc. All Rights Reserved.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to\n deal in the Software without restriction, including without limitation the\n rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice including the dates of first publication and\n either this permission notice or a reference to http://oss.sgi.com/projects/FreeB/\n shall be included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n Original Code. The Original Code is: OpenGL Sample Implementation,\n Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n Copyright in any portions created by third parties is as indicated\n elsewhere herein. All Rights Reserved.\n*/\n'use strict';var n;function t(a,b){return a.b===b.b&&a.a===b.a}function u(a,b){return a.b<b.b||a.b===b.b&&a.a<=b.a}function v(a,b,c){var d=b.b-a.b,e=c.b-b.b;return 0<d+e?d<e?b.a-a.a+d/(d+e)*(a.a-c.a):b.a-c.a+e/(d+e)*(c.a-a.a):0}function x(a,b,c){var d=b.b-a.b,e=c.b-b.b;return 0<d+e?(b.a-c.a)*d+(b.a-a.a)*e:0}function z(a,b){return a.a<b.a||a.a===b.a&&a.b<=b.b}function aa(a,b,c){var d=b.a-a.a,e=c.a-b.a;return 0<d+e?d<e?b.b-a.b+d/(d+e)*(a.b-c.b):b.b-c.b+e/(d+e)*(c.b-a.b):0}\nfunction ba(a,b,c){var d=b.a-a.a,e=c.a-b.a;return 0<d+e?(b.b-c.b)*d+(b.b-a.b)*e:0}function ca(a){return u(a.b.a,a.a)}function da(a){return u(a.a,a.b.a)}function A(a,b,c,d){a=0>a?0:a;c=0>c?0:c;return a<=c?0===c?(b+d)/2:b+a/(a+c)*(d-b):d+c/(a+c)*(b-d)};function ea(a){var b=B(a.b);C(b,a.c);C(b.b,a.c);D(b,a.a);return b}function E(a,b){var c=!1,d=!1;a!==b&&(b.a!==a.a&&(d=!0,F(b.a,a.a)),b.d!==a.d&&(c=!0,G(b.d,a.d)),H(b,a),d||(C(b,a.a),a.a.c=a),c||(D(b,a.d),a.d.a=a))}function I(a){var b=a.b,c=!1;a.d!==a.b.d&&(c=!0,G(a.d,a.b.d));a.c===a?F(a.a,null):(a.b.d.a=J(a),a.a.c=a.c,H(a,J(a)),c||D(a,a.d));b.c===b?(F(b.a,null),G(b.d,null)):(a.d.a=J(b),b.a.c=b.c,H(b,J(b)));fa(a)}\nfunction K(a){var b=B(a),c=b.b;H(b,a.e);b.a=a.b.a;C(c,b.a);b.d=c.d=a.d;b=b.b;H(a.b,J(a.b));H(a.b,b);a.b.a=b.a;b.b.a.c=b.b;b.b.d=a.b.d;b.f=a.f;b.b.f=a.b.f;return b}function L(a,b){var c=!1,d=B(a),e=d.b;b.d!==a.d&&(c=!0,G(b.d,a.d));H(d,a.e);H(e,b);d.a=a.b.a;e.a=b.a;d.d=e.d=a.d;a.d.a=e;c||D(d,a.d);return d}function B(a){var b=new M,c=new M,d=a.b.h;c.h=d;d.b.h=b;b.h=a;a.b.h=c;b.b=c;b.c=b;b.e=c;c.b=b;c.c=c;return c.e=b}function H(a,b){var c=a.c,d=b.c;c.b.e=b;d.b.e=a;a.c=d;b.c=c}\nfunction C(a,b){var c=b.f,d=new N(b,c);c.e=d;b.f=d;c=d.c=a;do c.a=d,c=c.c;while(c!==a)}function D(a,b){var c=b.d,d=new ga(b,c);c.b=d;b.d=d;d.a=a;d.c=b.c;c=a;do c.d=d,c=c.e;while(c!==a)}function fa(a){var b=a.h;a=a.b.h;b.b.h=a;a.b.h=b}function F(a,b){var c=a.c,d=c;do d.a=b,d=d.c;while(d!==c);c=a.f;d=a.e;d.f=c;c.e=d}function G(a,b){var c=a.a,d=c;do d.d=b,d=d.e;while(d!==c);c=a.d;d=a.b;d.d=c;c.b=d};function ha(a){var b=0;Math.abs(a[1])>Math.abs(a[0])&&(b=1);Math.abs(a[2])>Math.abs(a[b])&&(b=2);return b};var O=4*1E150;function P(a,b){a.f+=b.f;a.b.f+=b.b.f}function ia(a,b,c){a=a.a;b=b.a;c=c.a;if(b.b.a===a)return c.b.a===a?u(b.a,c.a)?0>=x(c.b.a,b.a,c.a):0<=x(b.b.a,c.a,b.a):0>=x(c.b.a,a,c.a);if(c.b.a===a)return 0<=x(b.b.a,a,b.a);b=v(b.b.a,a,b.a);a=v(c.b.a,a,c.a);return b>=a}function Q(a){a.a.i=null;var b=a.e;b.a.c=b.c;b.c.a=b.a;a.e=null}function ja(a,b){I(a.a);a.c=!1;a.a=b;b.i=a}function ka(a){var b=a.a.a;do a=R(a);while(a.a.a===b);a.c&&(b=L(S(a).a.b,a.a.e),ja(a,b),a=R(a));return a}\nfunction la(a,b,c){var d=new ma;d.a=c;d.e=na(a.f,b.e,d);return c.i=d}function oa(a,b){switch(a.s){case 100130:return 0!==(b&1);case 100131:return 0!==b;case 100132:return 0<b;case 100133:return 0>b;case 100134:return 2<=b||-2>=b}return!1}function pa(a){var b=a.a,c=b.d;c.c=a.d;c.a=b;Q(a)}function T(a,b,c){a=b;for(b=b.a;a!==c;){a.c=!1;var d=S(a),e=d.a;if(e.a!==b.a){if(!d.c){pa(a);break}e=L(b.c.b,e.b);ja(d,e)}b.c!==e&&(E(J(e),e),E(b,e));pa(a);b=d.a;a=d}return b}\nfunction U(a,b,c,d,e,f){var g=!0;do la(a,b,c.b),c=c.c;while(c!==d);for(null===e&&(e=S(b).a.b.c);;){d=S(b);c=d.a.b;if(c.a!==e.a)break;c.c!==e&&(E(J(c),c),E(J(e),c));d.f=b.f-c.f;d.d=oa(a,d.f);b.b=!0;!g&&qa(a,b)&&(P(c,e),Q(b),I(e));g=!1;b=d;e=c}b.b=!0;f&&ra(a,b)}function sa(a,b,c,d,e){var f=[b.g[0],b.g[1],b.g[2]];b.d=null;b.d=a.o?a.o(f,c,d,a.c)||null:null;null===b.d&&(e?a.n||(V(a,100156),a.n=!0):b.d=c[0])}\nfunction ta(a,b,c){var d=[null,null,null,null];d[0]=b.a.d;d[1]=c.a.d;sa(a,b.a,d,[.5,.5,0,0],!1);E(b,c)}function ua(a,b,c,d,e){var f=Math.abs(b.b-a.b)+Math.abs(b.a-a.a),g=Math.abs(c.b-a.b)+Math.abs(c.a-a.a),h=e+1;d[e]=.5*g/(f+g);d[h]=.5*f/(f+g);a.g[0]+=d[e]*b.g[0]+d[h]*c.g[0];a.g[1]+=d[e]*b.g[1]+d[h]*c.g[1];a.g[2]+=d[e]*b.g[2]+d[h]*c.g[2]}\nfunction qa(a,b){var c=S(b),d=b.a,e=c.a;if(u(d.a,e.a)){if(0<x(e.b.a,d.a,e.a))return!1;if(!t(d.a,e.a))K(e.b),E(d,J(e)),b.b=c.b=!0;else if(d.a!==e.a){var c=a.e,f=d.a.h;if(0<=f){var c=c.b,g=c.d,h=c.e,k=c.c,l=k[f];g[l]=g[c.a];k[g[l]]=l;l<=--c.a&&(1>=l?W(c,l):u(h[g[l>>1]],h[g[l]])?W(c,l):va(c,l));h[f]=null;k[f]=c.b;c.b=f}else for(c.c[-(f+1)]=null;0<c.a&&null===c.c[c.d[c.a-1]];)--c.a;ta(a,J(e),d)}}else{if(0>x(d.b.a,e.a,d.a))return!1;R(b).b=b.b=!0;K(d.b);E(J(e),d)}return!0}\nfunction wa(a,b){var c=S(b),d=b.a,e=c.a,f=d.a,g=e.a,h=d.b.a,k=e.b.a,l=new N;x(h,a.a,f);x(k,a.a,g);if(f===g||Math.min(f.a,h.a)>Math.max(g.a,k.a))return!1;if(u(f,g)){if(0<x(k,f,g))return!1}else if(0>x(h,g,f))return!1;var r=h,p=f,q=k,y=g,m,w;u(r,p)||(m=r,r=p,p=m);u(q,y)||(m=q,q=y,y=m);u(r,q)||(m=r,r=q,q=m,m=p,p=y,y=m);u(q,p)?u(p,y)?(m=v(r,q,p),w=v(q,p,y),0>m+w&&(m=-m,w=-w),l.b=A(m,q.b,w,p.b)):(m=x(r,q,p),w=-x(r,y,p),0>m+w&&(m=-m,w=-w),l.b=A(m,q.b,w,y.b)):l.b=(q.b+p.b)/2;z(r,p)||(m=r,r=p,p=m);z(q,y)||\n(m=q,q=y,y=m);z(r,q)||(m=r,r=q,q=m,m=p,p=y,y=m);z(q,p)?z(p,y)?(m=aa(r,q,p),w=aa(q,p,y),0>m+w&&(m=-m,w=-w),l.a=A(m,q.a,w,p.a)):(m=ba(r,q,p),w=-ba(r,y,p),0>m+w&&(m=-m,w=-w),l.a=A(m,q.a,w,y.a)):l.a=(q.a+p.a)/2;u(l,a.a)&&(l.b=a.a.b,l.a=a.a.a);r=u(f,g)?f:g;u(r,l)&&(l.b=r.b,l.a=r.a);if(t(l,f)||t(l,g))return qa(a,b),!1;if(!t(h,a.a)&&0<=x(h,a.a,l)||!t(k,a.a)&&0>=x(k,a.a,l)){if(k===a.a)return K(d.b),E(e.b,d),b=ka(b),d=S(b).a,T(a,S(b),c),U(a,b,J(d),d,d,!0),!0;if(h===a.a){K(e.b);E(d.e,J(e));f=c=b;g=f.a.b.a;\ndo f=R(f);while(f.a.b.a===g);b=f;f=S(b).a.b.c;c.a=J(e);e=T(a,c,null);U(a,b,e.c,d.b.c,f,!0);return!0}0<=x(h,a.a,l)&&(R(b).b=b.b=!0,K(d.b),d.a.b=a.a.b,d.a.a=a.a.a);0>=x(k,a.a,l)&&(b.b=c.b=!0,K(e.b),e.a.b=a.a.b,e.a.a=a.a.a);return!1}K(d.b);K(e.b);E(J(e),d);d.a.b=l.b;d.a.a=l.a;d.a.h=xa(a.e,d.a);d=d.a;e=[0,0,0,0];l=[f.d,h.d,g.d,k.d];d.g[0]=d.g[1]=d.g[2]=0;ua(d,f,h,e,0);ua(d,g,k,e,2);sa(a,d,l,e,!0);R(b).b=b.b=c.b=!0;return!1}\nfunction ra(a,b){for(var c=S(b);;){for(;c.b;)b=c,c=S(c);if(!b.b&&(c=b,b=R(b),null===b||!b.b))break;b.b=!1;var d=b.a,e=c.a,f;if(f=d.b.a!==e.b.a)a:{f=b;var g=S(f),h=f.a,k=g.a,l=void 0;if(u(h.b.a,k.b.a)){if(0>x(h.b.a,k.b.a,h.a)){f=!1;break a}R(f).b=f.b=!0;l=K(h);E(k.b,l);l.d.c=f.d}else{if(0<x(k.b.a,h.b.a,k.a)){f=!1;break a}f.b=g.b=!0;l=K(k);E(h.e,k.b);l.b.d.c=f.d}f=!0}f&&(c.c?(Q(c),I(e),c=S(b),e=c.a):b.c&&(Q(b),I(d),b=R(c),d=b.a));if(d.a!==e.a)if(d.b.a===e.b.a||b.c||c.c||d.b.a!==a.a&&e.b.a!==a.a)qa(a,\nb);else if(wa(a,b))break;d.a===e.a&&d.b.a===e.b.a&&(P(e,d),Q(b),I(d),b=R(c))}}\nfunction ya(a,b){a.a=b;for(var c=b.c;null===c.i;)if(c=c.c,c===b.c){var c=a,d=b,e=new ma;e.a=d.c.b;var f=c.f,g=f.a;do g=g.a;while(null!==g.b&&!f.c(f.b,e,g.b));var f=g.b,h=S(f),e=f.a,g=h.a;if(0===x(e.b.a,d,e.a))e=f.a,t(e.a,d)||t(e.b.a,d)||(K(e.b),f.c&&(I(e.c),f.c=!1),E(d.c,e),ya(c,d));else{var k=u(g.b.a,e.b.a)?f:h,h=void 0;f.d||k.c?(k===f?h=L(d.c.b,e.e):h=L(g.b.c.b,d.c).b,k.c?ja(k,h):(e=c,f=la(c,f,h),f.f=R(f).f+f.a.f,f.d=oa(e,f.f)),ya(c,d)):U(c,f,d.c,d.c,null,!0)}return}c=ka(c.i);e=S(c);f=e.a;e=T(a,\ne,null);if(e.c===f){var f=e,e=f.c,g=S(c),h=c.a,k=g.a,l=!1;h.b.a!==k.b.a&&wa(a,c);t(h.a,a.a)&&(E(J(e),h),c=ka(c),e=S(c).a,T(a,S(c),g),l=!0);t(k.a,a.a)&&(E(f,J(k)),f=T(a,g,null),l=!0);l?U(a,c,f.c,e,e,!0):(u(k.a,h.a)?d=J(k):d=h,d=L(f.c.b,d),U(a,c,d,d.c,d.c,!1),d.b.i.c=!0,ra(a,c))}else U(a,c,e.c,f,f,!0)}function za(a,b){var c=new ma,d=ea(a.b);d.a.b=O;d.a.a=b;d.b.a.b=-O;d.b.a.a=b;a.a=d.b.a;c.a=d;c.f=0;c.d=!1;c.c=!1;c.h=!0;c.b=!1;d=a.f;d=na(d,d.a,c);c.e=d};function Aa(a){this.a=new Ba;this.b=a;this.c=ia}function na(a,b,c){do b=b.c;while(null!==b.b&&!a.c(a.b,b.b,c));a=new Ba(c,b.a,b);b.a.c=a;return b.a=a};function Ba(a,b,c){this.b=a||null;this.a=b||this;this.c=c||this};function X(){this.d=Y;this.p=this.b=this.q=null;this.j=[0,0,0];this.s=100130;this.n=!1;this.o=this.a=this.e=this.f=null;this.m=!1;this.c=this.r=this.i=this.k=this.l=this.h=null}var Y=0;n=X.prototype;n.x=function(){Z(this,Y)};n.B=function(a,b){switch(a){case 100142:return;case 100140:switch(b){case 100130:case 100131:case 100132:case 100133:case 100134:this.s=b;return}break;case 100141:this.m=!!b;return;default:V(this,100900);return}V(this,100901)};\nn.y=function(a){switch(a){case 100142:return 0;case 100140:return this.s;case 100141:return this.m;default:V(this,100900)}return!1};n.A=function(a,b,c){this.j[0]=a;this.j[1]=b;this.j[2]=c};\nn.z=function(a,b){var c=b?b:null;switch(a){case 100100:case 100106:this.h=c;break;case 100104:case 100110:this.l=c;break;case 100101:case 100107:this.k=c;break;case 100102:case 100108:this.i=c;break;case 100103:case 100109:this.p=c;break;case 100105:case 100111:this.o=c;break;case 100112:this.r=c;break;default:V(this,100900)}};\nn.C=function(a,b){var c=!1,d=[0,0,0];Z(this,2);for(var e=0;3>e;++e){var f=a[e];-1E150>f&&(f=-1E150,c=!0);1E150<f&&(f=1E150,c=!0);d[e]=f}c&&V(this,100155);c=this.q;null===c?(c=ea(this.b),E(c,c.b)):(K(c),c=c.e);c.a.d=b;c.a.g[0]=d[0];c.a.g[1]=d[1];c.a.g[2]=d[2];c.f=1;c.b.f=-1;this.q=c};n.u=function(a){Z(this,Y);this.d=1;this.b=new Ca;this.c=a};n.t=function(){Z(this,1);this.d=2;this.q=null};n.v=function(){Z(this,2);this.d=1};\nn.w=function(){Z(this,1);this.d=Y;var a=this.j[0],b=this.j[1],c=this.j[2],d=!1,e=[a,b,c];if(0===a&&0===b&&0===c){for(var b=[-2*1E150,-2*1E150,-2*1E150],f=[2*1E150,2*1E150,2*1E150],c=[],g=[],d=this.b.c,a=d.e;a!==d;a=a.e)for(var h=0;3>h;++h){var k=a.g[h];k<f[h]&&(f[h]=k,g[h]=a);k>b[h]&&(b[h]=k,c[h]=a)}a=0;b[1]-f[1]>b[0]-f[0]&&(a=1);b[2]-f[2]>b[a]-f[a]&&(a=2);if(f[a]>=b[a])e[0]=0,e[1]=0,e[2]=1;else{b=0;f=g[a];c=c[a];g=[0,0,0];f=[f.g[0]-c.g[0],f.g[1]-c.g[1],f.g[2]-c.g[2]];h=[0,0,0];for(a=d.e;a!==d;a=\na.e)h[0]=a.g[0]-c.g[0],h[1]=a.g[1]-c.g[1],h[2]=a.g[2]-c.g[2],g[0]=f[1]*h[2]-f[2]*h[1],g[1]=f[2]*h[0]-f[0]*h[2],g[2]=f[0]*h[1]-f[1]*h[0],k=g[0]*g[0]+g[1]*g[1]+g[2]*g[2],k>b&&(b=k,e[0]=g[0],e[1]=g[1],e[2]=g[2]);0>=b&&(e[0]=e[1]=e[2]=0,e[ha(f)]=1)}d=!0}g=ha(e);a=this.b.c;b=(g+1)%3;c=(g+2)%3;g=0<e[g]?1:-1;for(e=a.e;e!==a;e=e.e)e.b=e.g[b],e.a=g*e.g[c];if(d){e=0;d=this.b.a;for(a=d.b;a!==d;a=a.b)if(b=a.a,!(0>=b.f)){do e+=(b.a.b-b.b.a.b)*(b.a.a+b.b.a.a),b=b.e;while(b!==a.a)}if(0>e)for(e=this.b.c,d=e.e;d!==\ne;d=d.e)d.a=-d.a}this.n=!1;e=this.b.b;for(a=e.h;a!==e;a=d)if(d=a.h,b=a.e,t(a.a,a.b.a)&&a.e.e!==a&&(ta(this,b,a),I(a),a=b,b=a.e),b.e===a){if(b!==a){if(b===d||b===d.b)d=d.h;I(b)}if(a===d||a===d.b)d=d.h;I(a)}this.e=e=new Da;d=this.b.c;for(a=d.e;a!==d;a=a.e)a.h=xa(e,a);Ea(e);this.f=new Aa(this);za(this,-O);for(za(this,O);null!==(e=Fa(this.e));){for(;;){a:if(a=this.e,0===a.a)d=Ga(a.b);else if(d=a.c[a.d[a.a-1]],0!==a.b.a&&(a=Ga(a.b),u(a,d))){d=a;break a}if(null===d||!t(d,e))break;d=Fa(this.e);ta(this,e.c,\nd.c)}ya(this,e)}this.a=this.f.a.a.b.a.a;for(e=0;null!==(d=this.f.a.a.b);)d.h||++e,Q(d);this.f=null;e=this.e;e.b=null;e.d=null;this.e=e.c=null;e=this.b;for(a=e.a.b;a!==e.a;a=d)d=a.b,a=a.a,a.e.e===a&&(P(a.c,a),I(a));if(!this.n){e=this.b;if(this.m)for(a=e.b.h;a!==e.b;a=d)d=a.h,a.b.d.c!==a.d.c?a.f=a.d.c?1:-1:I(a);else for(a=e.a.b;a!==e.a;a=d)if(d=a.b,a.c){for(a=a.a;u(a.b.a,a.a);a=a.c.b);for(;u(a.a,a.b.a);a=a.e);b=a.c.b;for(c=void 0;a.e!==b;)if(u(a.b.a,b.a)){for(;b.e!==a&&(ca(b.e)||0>=x(b.a,b.b.a,b.e.b.a));)c=\nL(b.e,b),b=c.b;b=b.c.b}else{for(;b.e!==a&&(da(a.c.b)||0<=x(a.b.a,a.a,a.c.b.a));)c=L(a,a.c.b),a=c.b;a=a.e}for(;b.e.e!==a;)c=L(b.e,b),b=c.b}if(this.h||this.i||this.k||this.l)if(this.m)for(e=this.b,d=e.a.b;d!==e.a;d=d.b){if(d.c){this.h&&this.h(2,this.c);a=d.a;do this.k&&this.k(a.a.d,this.c),a=a.e;while(a!==d.a);this.i&&this.i(this.c)}}else{e=this.b;d=!!this.l;a=!1;b=-1;for(c=e.a.d;c!==e.a;c=c.d)if(c.c){a||(this.h&&this.h(4,this.c),a=!0);g=c.a;do d&&(f=g.b.d.c?0:1,b!==f&&(b=f,this.l&&this.l(!!b,this.c))),\nthis.k&&this.k(g.a.d,this.c),g=g.e;while(g!==c.a)}a&&this.i&&this.i(this.c)}if(this.r){e=this.b;for(a=e.a.b;a!==e.a;a=d)if(d=a.b,!a.c){b=a.a;c=b.e;g=void 0;do g=c,c=g.e,g.d=null,null===g.b.d&&(g.c===g?F(g.a,null):(g.a.c=g.c,H(g,J(g))),f=g.b,f.c===f?F(f.a,null):(f.a.c=f.c,H(f,J(f))),fa(g));while(g!==b);b=a.d;a=a.b;a.d=b;b.b=a}this.r(this.b);this.c=this.b=null;return}}this.b=this.c=null};\nfunction Z(a,b){if(a.d!==b)for(;a.d!==b;)if(a.d<b)switch(a.d){case Y:V(a,100151);a.u(null);break;case 1:V(a,100152),a.t()}else switch(a.d){case 2:V(a,100154);a.v();break;case 1:V(a,100153),a.w()}}function V(a,b){a.p&&a.p(b,a.c)};function ga(a,b){this.b=a||this;this.d=b||this;this.a=null;this.c=!1};function M(){this.h=this;this.i=this.d=this.a=this.e=this.c=this.b=null;this.f=0}function J(a){return a.b.e};function Ca(){this.c=new N;this.a=new ga;this.b=new M;this.d=new M;this.b.b=this.d;this.d.b=this.b};function N(a,b){this.e=a||this;this.f=b||this;this.d=this.c=null;this.g=[0,0,0];this.h=this.a=this.b=0};function Da(){this.c=[];this.d=null;this.a=0;this.e=!1;this.b=new Ha}function Ea(a){a.d=[];for(var b=0;b<a.a;b++)a.d[b]=b;a.d.sort(function(a){return function(b,e){return u(a[b],a[e])?1:-1}}(a.c));a.e=!0;Ia(a.b)}function xa(a,b){if(a.e){var c=a.b,d=++c.a;2*d>c.f&&(c.f*=2,c.c=Ja(c.c,c.f+1));var e;0===c.b?e=d:(e=c.b,c.b=c.c[c.b]);c.e[e]=b;c.c[e]=d;c.d[d]=e;c.h&&va(c,d);return e}c=a.a++;a.c[c]=b;return-(c+1)}\nfunction Fa(a){if(0===a.a)return Ka(a.b);var b=a.c[a.d[a.a-1]];if(0!==a.b.a&&u(Ga(a.b),b))return Ka(a.b);do--a.a;while(0<a.a&&null===a.c[a.d[a.a-1]]);return b};function Ha(){this.d=Ja([0],33);this.e=[null,null];this.c=[0,0];this.a=0;this.f=32;this.b=0;this.h=!1;this.d[1]=1}function Ja(a,b){for(var c=Array(b),d=0;d<a.length;d++)c[d]=a[d];for(;d<b;d++)c[d]=0;return c}function Ia(a){for(var b=a.a;1<=b;--b)W(a,b);a.h=!0}function Ga(a){return a.e[a.d[1]]}function Ka(a){var b=a.d,c=a.e,d=a.c,e=b[1],f=c[e];0<a.a&&(b[1]=b[a.a],d[b[1]]=1,c[e]=null,d[e]=a.b,a.b=e,0<--a.a&&W(a,1));return f}\nfunction W(a,b){for(var c=a.d,d=a.e,e=a.c,f=b,g=c[f];;){var h=f<<1;h<a.a&&u(d[c[h+1]],d[c[h]])&&(h+=1);var k=c[h];if(h>a.a||u(d[g],d[k])){c[f]=g;e[g]=f;break}c[f]=k;e[k]=f;f=h}}function va(a,b){for(var c=a.d,d=a.e,e=a.c,f=b,g=c[f];;){var h=f>>1,k=c[h];if(0===h||u(d[k],d[g])){c[f]=g;e[g]=f;break}c[f]=k;e[k]=f;f=h}};function ma(){this.e=this.a=null;this.f=0;this.c=this.b=this.h=this.d=!1}function S(a){return a.e.c.b}function R(a){return a.e.a.b};this.libtess={GluTesselator:X,windingRule:{GLU_TESS_WINDING_ODD:100130,GLU_TESS_WINDING_NONZERO:100131,GLU_TESS_WINDING_POSITIVE:100132,GLU_TESS_WINDING_NEGATIVE:100133,GLU_TESS_WINDING_ABS_GEQ_TWO:100134},primitiveType:{GL_LINE_LOOP:2,GL_TRIANGLES:4,GL_TRIANGLE_STRIP:5,GL_TRIANGLE_FAN:6},errorType:{GLU_TESS_MISSING_BEGIN_POLYGON:100151,GLU_TESS_MISSING_END_POLYGON:100153,GLU_TESS_MISSING_BEGIN_CONTOUR:100152,GLU_TESS_MISSING_END_CONTOUR:100154,GLU_TESS_COORD_TOO_LARGE:100155,GLU_TESS_NEED_COMBINE_CALLBACK:100156},\ngluEnum:{GLU_TESS_MESH:100112,GLU_TESS_TOLERANCE:100142,GLU_TESS_WINDING_RULE:100140,GLU_TESS_BOUNDARY_ONLY:100141,GLU_INVALID_ENUM:100900,GLU_INVALID_VALUE:100901,GLU_TESS_BEGIN:100100,GLU_TESS_VERTEX:100101,GLU_TESS_END:100102,GLU_TESS_ERROR:100103,GLU_TESS_EDGE_FLAG:100104,GLU_TESS_COMBINE:100105,GLU_TESS_BEGIN_DATA:100106,GLU_TESS_VERTEX_DATA:100107,GLU_TESS_END_DATA:100108,GLU_TESS_ERROR_DATA:100109,GLU_TESS_EDGE_FLAG_DATA:100110,GLU_TESS_COMBINE_DATA:100111}};X.prototype.gluDeleteTess=X.prototype.x;\nX.prototype.gluTessProperty=X.prototype.B;X.prototype.gluGetTessProperty=X.prototype.y;X.prototype.gluTessNormal=X.prototype.A;X.prototype.gluTessCallback=X.prototype.z;X.prototype.gluTessVertex=X.prototype.C;X.prototype.gluTessBeginPolygon=X.prototype.u;X.prototype.gluTessBeginContour=X.prototype.t;X.prototype.gluTessEndContour=X.prototype.v;X.prototype.gluTessEndPolygon=X.prototype.w; if (typeof module !== 'undefined') { module.exports = this.libtess; }\n","import * as libtess from 'libtess';\n\nconst tessy = (function initTesselator () {\n  // function called for each vertex of tesselator output\n  function vertexCallback (\n    data: [x: number, y: number, z: number],\n    polyVertArray: number[],\n  ) {\n    polyVertArray[polyVertArray.length] = data[0];\n    polyVertArray[polyVertArray.length] = data[1];\n  }\n  function begincallback (type: number) {\n    if (type !== libtess.primitiveType.GL_TRIANGLES) {\n      console.info('expected TRIANGLES but got type: ' + type);\n    }\n  }\n  function errorcallback (errno: number) {\n    console.error('error callback, error number: ' + errno);\n  }\n  // callback for when segments intersect and must be split\n  function combinecallback (\n    coords: [number, number, number],\n    data: number[][],\n    weight: number[],\n  ) {\n    // console.log('combine callback');\n    return [coords[0], coords[1], coords[2]];\n  }\n  function edgeCallback (flag: boolean) {\n    // don't really care about the flag, but need no-strip/no-fan behavior\n    // console.log('edge flag: ' + flag);\n  }\n\n  const tessy = new libtess.GluTesselator();\n\n  // tessy.gluTessProperty(libtess.gluEnum.GLU_TESS_WINDING_RULE, libtess.windingRule.GLU_TESS_WINDING_POSITIVE);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_VERTEX_DATA, vertexCallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_BEGIN, begincallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_ERROR, errorcallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_COMBINE, combinecallback);\n  tessy.gluTessCallback(libtess.gluEnum.GLU_TESS_EDGE_FLAG, edgeCallback);\n\n  return tessy;\n})();\n\nexport function triangulate (contours: number[][]) {\n  // libtess will take 3d verts and flatten to a plane for tesselation\n  // since only doing 2d tesselation here, provide z=1 normal to skip\n  // iterating over verts only to get the same answer.\n  // comment out to test normal-generation code\n  tessy.gluTessNormal(0, 0, 1);\n\n  const triangleVerts: number[] = [];\n\n  tessy.gluTessBeginPolygon(triangleVerts);\n\n  for (let i = 0; i < contours.length; i++) {\n    tessy.gluTessBeginContour();\n    const contour = contours[i];\n\n    for (let j = 0; j < contour.length; j += 2) {\n      const coords = [contour[j], contour[j + 1], 0];\n\n      tessy.gluTessVertex(coords, coords);\n    }\n    tessy.gluTessEndContour();\n  }\n\n  // finish polygon\n  tessy.gluTessEndPolygon();\n\n  return triangleVerts;\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/Polygon.ts\n\nimport { ShapePrimitive } from './shape-primitive';\nimport type { PointData } from './point-data';\nimport { triangulate } from './triangulate';\n\n/**\n * A class to define a shape via user defined coordinates.\n */\nexport class Polygon extends ShapePrimitive {\n  /**\n   * An array of the points of this polygon.\n   */\n  points: number[] = [];\n\n  /**\n   * `false` after moveTo, `true` after `closePath`. In all other cases it is `true`.\n   */\n  closePath: boolean = false;\n\n  constructor (points: PointData[] | number[]);\n  constructor (...points: PointData[] | number[]);\n  /**\n   * @param points - This can be an array of Points\n   *  that form the polygon, a flat array of numbers that will be interpreted as [x,y, x,y, ...], or\n   *  the arguments passed can be all the points of the polygon e.g.\n   *  `new Polygon(new Point(), new Point(), ...)`, or the arguments passed can be flat\n   *  x,y values e.g. `new Polygon(x,y, x,y, x,y, ...)` where `x` and `y` are Numbers.\n   */\n  constructor (...points: (PointData[] | number[])[] | PointData[] | number[]) {\n    super();\n    let flat = Array.isArray(points[0]) ? points[0] : points;\n\n    // if this is an array of points, convert it to a flat array of numbers\n    if (typeof flat[0] !== 'number') {\n      const p: number[] = [];\n\n      for (let i = 0, il = flat.length; i < il; i++) {\n        p.push((flat[i] as PointData).x, (flat[i] as PointData).y);\n      }\n\n      flat = p;\n    }\n\n    this.points = flat as number[];\n    this.closePath = true;\n  }\n\n  /**\n   * Creates a clone of this polygon.\n   * @returns - A copy of the polygon.\n   */\n  clone (): Polygon {\n    const points = this.points.slice();\n    const polygon = new Polygon(points);\n\n    polygon.closePath = this.closePath;\n\n    return polygon;\n  }\n\n  /**\n   * Checks whether the x and y coordinates passed to this function are contained within this polygon.\n   * @param x - The X coordinate of the point to test.\n   * @param y - The Y coordinate of the point to test.\n   * @returns - Whether the x/y coordinates are within this polygon.\n   */\n  contains (x: number, y: number): boolean {\n    let inside = false;\n\n    // use some raycasting to test hits\n    // https://github.com/substack/point-in-polygon/blob/master/index.js\n    const length = this.points.length / 2;\n\n    for (let i = 0, j = length - 1; i < length; j = i++) {\n      const xi = this.points[i * 2];\n      const yi = this.points[(i * 2) + 1];\n      const xj = this.points[j * 2];\n      const yj = this.points[(j * 2) + 1];\n      const intersect = ((yi > y) !== (yj > y)) && (x < ((xj - xi) * ((y - yi) / (yj - yi))) + xi);\n\n      if (intersect) {\n        inside = !inside;\n      }\n    }\n\n    return inside;\n  }\n\n  /**\n   * Copies another polygon to this one.\n   * @param polygon - The polygon to copy from.\n   * @returns Returns itself.\n   */\n  copyFrom (polygon: Polygon): this {\n    this.points = polygon.points.slice();\n    this.closePath = polygon.closePath;\n\n    return this;\n  }\n\n  /**\n   * Copies this polygon to another one.\n   * @param polygon - The polygon to copy to.\n   * @returns Returns given parameter.\n   */\n  copyTo (polygon: Polygon): Polygon {\n    polygon.copyFrom(this);\n\n    return polygon;\n  }\n\n  /**\n   * Get the last X coordinate of the polygon\n   * @readonly\n   */\n  get lastX (): number {\n    return this.points[this.points.length - 2];\n  }\n\n  /**\n   * Get the last Y coordinate of the polygon\n   * @readonly\n   */\n  get lastY (): number {\n    return this.points[this.points.length - 1];\n  }\n\n  /**\n   * Get the first X coordinate of the polygon\n   * @readonly\n   */\n  getX (): number {\n    return this.points[this.points.length - 2];\n  }\n  /**\n   * Get the first Y coordinate of the polygon\n   * @readonly\n   */\n  getY (): number {\n    return this.points[this.points.length - 1];\n  }\n\n  override build (points: number[]): void {\n    for (let i = 0; i < this.points.length; i++) {\n      points[i] = this.points[i];\n    }\n  }\n\n  override triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void {\n    const triangles = triangulate([points]);\n    const indexStart = vertices.length / 2;\n\n    // 当所有 points 在一条直线时, gluTess 三角化 triangles 会返回空数组，这边做一下额外处理返回线段左右端点组成的三角形，确保拿到的包围盒是正确的。\n    if (triangles.length === 0) {\n      this.getLineEndPointsTriangle(points, triangles);\n    }\n\n    for (let i = 0; i < triangles.length; i++) {\n      vertices[verticesOffset * 2 + i] = triangles[i];\n    }\n\n    const vertexCount = triangles.length / 2;\n\n    for (let i = 0; i < vertexCount; i++) {\n      indices[indicesOffset + i] = indexStart + i;\n    }\n  }\n\n  /**\n   * 获取直线上最远的两个端点坐标组成的三角形\n   */\n  private getLineEndPointsTriangle (points: number[], triangles: number[]): void {\n    // 参数检查\n    if (!points || points.length < 2 || points.length % 2 !== 0) {\n\n      throw new Error('Invalid points array');\n    }\n\n    if (points.length === 2) {\n      triangles.push(\n        points[0], points[1],\n        points[0], points[1],\n        points[0], points[1]\n      );\n\n      return;\n    }\n\n    // 取第一个线段计算斜率\n    const dx = points[2] - points[0];\n    const dy = points[3] - points[1];\n\n    // 存放结果坐标\n    let startX = points[0];\n    let startY = points[1];\n    let endX = points[0];\n    let endY = points[1];\n\n    // 根据斜率决定比较x还是y\n    if (Math.abs(dx) >= Math.abs(dy)) {\n      // 水平方向为主,比较x坐标\n      for (let i = 0; i < points.length; i += 2) {\n        const x = points[i];\n        const y = points[i + 1];\n\n        if (x < startX) {\n          startX = x;\n          startY = y;\n        }\n        if (x > endX) {\n          endX = x;\n          endY = y;\n        }\n      }\n    } else {\n      // 垂直方向为主,比较y坐标\n      for (let i = 0; i < points.length; i += 2) {\n        const x = points[i];\n        const y = points[i + 1];\n\n        if (y < startY) {\n          startX = x;\n          startY = y;\n        }\n        if (y > endY) {\n          endX = x;\n          endY = y;\n        }\n      }\n    }\n    triangles.push(startX, startY, endX, endY, endX, endY);\n  }\n}\n\n","// thanks to https://github.com/mattdesl/adaptive-bezier-curve\n// for the original code!\n\nconst RECURSION_LIMIT = 8;\nconst FLT_EPSILON = 1.19209290e-7;\nconst PATH_DISTANCE_EPSILON = 1.0;\n\nconst curveAngleToleranceEpsilon = 0.01;\nconst mAngleTolerance = 0;\nconst mCuspLimit = 0;\n\nconst defaultBezierSmoothness = 0.5;\n\nexport function buildAdaptiveBezier (\n  points: number[],\n  sX: number, sY: number,\n  cp1x: number, cp1y: number,\n  cp2x: number, cp2y: number,\n  eX: number, eY: number,\n  smoothness?: number,\n) {\n  // TODO expose as a parameter\n  const scale = 5;\n  const smoothing = Math.min(\n    0.99, // a value of 1.0 actually inverts smoothing, so we cap it at 0.99\n    Math.max(0, smoothness ?? defaultBezierSmoothness)\n  );\n  let distanceTolerance = (PATH_DISTANCE_EPSILON - smoothing) / scale;\n\n  distanceTolerance *= distanceTolerance;\n  begin(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance);\n\n  return points;\n}\n\n//// Based on:\n//// https://github.com/pelson/antigrain/blob/master/agg-2.4/src/agg_curves.cpp\n\nfunction begin (\n  sX: number, sY: number,\n  cp1x: number, cp1y: number,\n  cp2x: number, cp2y: number,\n  eX: number, eY: number,\n  points: number[],\n  distanceTolerance: number,\n) {\n  // dont need to actually ad this!\n  // points.push(sX, sY);\n  recursive(sX, sY, cp1x, cp1y, cp2x, cp2y, eX, eY, points, distanceTolerance, 0);\n  points.push(eX, eY);\n}\n\n// eslint-disable-next-line max-params\nfunction recursive (\n  x1: number, y1: number,\n  x2: number, y2: number,\n  x3: number, y3: number,\n  x4: number, y4: number,\n  points: number[],\n  distanceTolerance: number,\n  level: number,\n) {\n  if (level > RECURSION_LIMIT) { return; }\n\n  const pi = Math.PI;\n\n  // Calculate all the mid-points of the line segments\n  // ----------------------\n  const x12 = (x1 + x2) / 2;\n  const y12 = (y1 + y2) / 2;\n  const x23 = (x2 + x3) / 2;\n  const y23 = (y2 + y3) / 2;\n  const x34 = (x3 + x4) / 2;\n  const y34 = (y3 + y4) / 2;\n  const x123 = (x12 + x23) / 2;\n  const y123 = (y12 + y23) / 2;\n  const x234 = (x23 + x34) / 2;\n  const y234 = (y23 + y34) / 2;\n  const x1234 = (x123 + x234) / 2;\n  const y1234 = (y123 + y234) / 2;\n\n  if (level > 0) { // Enforce subdivision first time\n    // Try to approximate the full cubic curve by a single straight line\n    // ------------------\n    let dx = x4 - x1;\n    let dy = y4 - y1;\n\n    const d2 = Math.abs(((x2 - x4) * dy) - ((y2 - y4) * dx));\n    const d3 = Math.abs(((x3 - x4) * dy) - ((y3 - y4) * dx));\n\n    let da1; let da2;\n\n    if (d2 > FLT_EPSILON && d3 > FLT_EPSILON) {\n      // Regular care\n      // -----------------\n      if ((d2 + d3) * (d2 + d3) <= distanceTolerance * ((dx * dx) + (dy * dy))) {\n        // If the curvature doesn't exceed the distanceTolerance value\n        // we tend to finish subdivisions.\n        // ----------------------\n        if (mAngleTolerance < curveAngleToleranceEpsilon) {\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        // Angle & Cusp Condition\n        // ----------------------\n        const a23 = Math.atan2(y3 - y2, x3 - x2);\n\n        da1 = Math.abs(a23 - Math.atan2(y2 - y1, x2 - x1));\n        da2 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - a23);\n\n        if (da1 >= pi) { da1 = (2 * pi) - da1; }\n        if (da2 >= pi) { da2 = (2 * pi) - da2; }\n\n        if (da1 + da2 < mAngleTolerance) {\n          // Finally we can stop the recursion\n          // ----------------------\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        if (mCuspLimit !== 0.0) {\n          if (da1 > mCuspLimit) {\n            points.push(x2, y2);\n\n            return;\n          }\n\n          if (da2 > mCuspLimit) {\n            points.push(x3, y3);\n\n            return;\n          }\n        }\n      }\n    } else if (d2 > FLT_EPSILON) {\n      // p1,p3,p4 are collinear, p2 is considerable\n      // ----------------------\n      if (d2 * d2 <= distanceTolerance * ((dx * dx) + (dy * dy))) {\n        if (mAngleTolerance < curveAngleToleranceEpsilon) {\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        // Angle Condition\n        // ----------------------\n        da1 = Math.abs(Math.atan2(y3 - y2, x3 - x2) - Math.atan2(y2 - y1, x2 - x1));\n        if (da1 >= pi) { da1 = (2 * pi) - da1; }\n\n        if (da1 < mAngleTolerance) {\n          points.push(x2, y2);\n          points.push(x3, y3);\n\n          return;\n        }\n\n        if (mCuspLimit !== 0.0) {\n          if (da1 > mCuspLimit) {\n            points.push(x2, y2);\n\n            return;\n          }\n        }\n      }\n    } else if (d3 > FLT_EPSILON) {\n      // p1,p2,p4 are collinear, p3 is considerable\n      // ----------------------\n      if (d3 * d3 <= distanceTolerance * ((dx * dx) + (dy * dy))) {\n        if (mAngleTolerance < curveAngleToleranceEpsilon) {\n          points.push(x1234, y1234);\n\n          return;\n        }\n\n        // Angle Condition\n        // ----------------------\n        da1 = Math.abs(Math.atan2(y4 - y3, x4 - x3) - Math.atan2(y3 - y2, x3 - x2));\n        if (da1 >= pi) { da1 = (2 * pi) - da1; }\n\n        if (da1 < mAngleTolerance) {\n          points.push(x2, y2);\n          points.push(x3, y3);\n\n          return;\n        }\n\n        if (mCuspLimit !== 0.0) {\n          if (da1 > mCuspLimit) {\n            points.push(x3, y3);\n\n            return;\n          }\n        }\n      }\n    } else {\n      // Collinear case\n      // -----------------\n      dx = x1234 - ((x1 + x4) / 2);\n      dy = y1234 - ((y1 + y4) / 2);\n      if ((dx * dx) + (dy * dy) <= distanceTolerance) {\n        points.push(x1234, y1234);\n\n        return;\n      }\n    }\n  }\n\n  // Continue subdivision\n  // ----------------------\n  recursive(x1, y1, x12, y12, x123, y123, x1234, y1234, points, distanceTolerance, level + 1);\n  recursive(x1234, y1234, x234, y234, x34, y34, x4, y4, points, distanceTolerance, level + 1);\n}\n\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/Ellipse.ts\n\nimport { ShapePrimitive } from './shape-primitive';\n\n/**\n * The Ellipse object is used to help draw graphics and can also be used to specify a hit area for containers.\n */\nexport class Ellipse extends ShapePrimitive {\n  /**\n   * The X coordinate of the center of this ellipse\n   * @default 0\n   */\n  x: number;\n\n  /**\n   * The Y coordinate of the center of this ellipse\n   * @default 0\n   */\n  y: number;\n\n  /**\n   * The half width of this ellipse\n   * @default 0\n   */\n  halfWidth: number;\n\n  /**\n   * The half height of this ellipse\n   * @default 0\n   */\n  halfHeight: number;\n\n  /**\n   * The type of the object, mainly used to avoid `instanceof` checks\n   * @default 'ellipse'\n   */\n  readonly type = 'ellipse';\n\n  /**\n   * @param x - The X coordinate of the center of this ellipse\n   * @param y - The Y coordinate of the center of this ellipse\n   * @param halfWidth - The half width of this ellipse\n   * @param halfHeight - The half height of this ellipse\n   */\n  constructor (x = 0, y = 0, halfWidth = 0, halfHeight = 0) {\n    super();\n    this.x = x;\n    this.y = y;\n    this.halfWidth = halfWidth;\n    this.halfHeight = halfHeight;\n  }\n\n  /**\n   * Creates a clone of this Ellipse instance\n   * @returns {Ellipse} A copy of the ellipse\n   */\n  clone (): Ellipse {\n    return new Ellipse(this.x, this.y, this.halfWidth, this.halfHeight);\n  }\n\n  /**\n   * Checks whether the x and y coordinates given are contained within this ellipse\n   * @param x - The X coordinate of the point to test\n   * @param y - The Y coordinate of the point to test\n   * @returns Whether the x/y coords are within this ellipse\n   */\n  contains (x: number, y: number): boolean {\n    if (this.halfWidth <= 0 || this.halfHeight <= 0) {\n      return false;\n    }\n\n    // normalize the coords to an ellipse with center 0,0\n    let normx = ((x - this.x) / this.halfWidth);\n    let normy = ((y - this.y) / this.halfHeight);\n\n    normx *= normx;\n    normy *= normy;\n\n    return (normx + normy <= 1);\n  }\n\n  /**\n   * Checks whether the x and y coordinates given are contained within this ellipse including stroke\n   * @param x - The X coordinate of the point to test\n   * @param y - The Y coordinate of the point to test\n   * @param width\n   * @returns Whether the x/y coords are within this ellipse\n   */\n  strokeContains (x: number, y: number, width: number): boolean {\n    const { halfWidth, halfHeight } = this;\n\n    if (halfWidth <= 0 || halfHeight <= 0) {\n      return false;\n    }\n\n    const halfStrokeWidth = width / 2;\n    const innerA = halfWidth - halfStrokeWidth;\n    const innerB = halfHeight - halfStrokeWidth;\n    const outerA = halfWidth + halfStrokeWidth;\n    const outerB = halfHeight + halfStrokeWidth;\n\n    const normalizedX = x - this.x;\n    const normalizedY = y - this.y;\n\n    const innerEllipse = ((normalizedX * normalizedX) / (innerA * innerA))\n      + ((normalizedY * normalizedY) / (innerB * innerB));\n    const outerEllipse = ((normalizedX * normalizedX) / (outerA * outerA))\n      + ((normalizedY * normalizedY) / (outerB * outerB));\n\n    return innerEllipse > 1 && outerEllipse <= 1;\n  }\n\n  /**\n   * Returns the framing rectangle of the ellipse as a Rectangle object\n   * @param out\n   * @returns The framing rectangle\n   */\n  //   getBounds (out?: Rectangle): Rectangle {\n  //     out = out || new Rectangle();\n\n  //     out.x = this.x - this.halfWidth;\n  //     out.y = this.y - this.halfHeight;\n  //     out.width = this.halfWidth * 2;\n  //     out.height = this.halfHeight * 2;\n\n  //     return out;\n  //   }\n\n  /**\n   * Copies another ellipse to this one.\n   * @param ellipse - The ellipse to copy from.\n   * @returns Returns itself.\n   */\n  copyFrom (ellipse: Ellipse): this {\n    this.x = ellipse.x;\n    this.y = ellipse.y;\n    this.halfWidth = ellipse.halfWidth;\n    this.halfHeight = ellipse.halfHeight;\n\n    return this;\n  }\n\n  /**\n   * Copies this ellipse to another one.\n   * @param ellipse - The ellipse to copy to.\n   * @returns Returns given parameter.\n   */\n  copyTo (ellipse: Ellipse): Ellipse {\n    ellipse.copyFrom(this);\n\n    return ellipse;\n  }\n\n  getX (): number {\n    return this.x;\n  }\n\n  getY (): number {\n    return this.y;\n  }\n\n  build (points: number[]) {\n    const x = this.x;\n    const y = this.y;\n    const rx = this.halfWidth;\n    const ry = this.halfHeight;\n    const dx = 0;\n    const dy = 0;\n\n    if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n      return points;\n    }\n\n    // Choose a number of segments such that the maximum absolute deviation from the circle is approximately 0.029\n    const sampleDensity = 5;\n    const n = Math.ceil(sampleDensity * Math.sqrt(rx + ry));\n    const m = (n * 8) + (dx ? 4 : 0) + (dy ? 4 : 0);\n\n    if (m === 0) {\n      return points;\n    }\n\n    if (n === 0) {\n      points[0] = points[6] = x + dx;\n      points[1] = points[3] = y + dy;\n      points[2] = points[4] = x - dx;\n      points[5] = points[7] = y - dy;\n\n      return points;\n    }\n\n    let j1 = 0;\n    let j2 = (n * 4) + (dx ? 2 : 0) + 2;\n    let j3 = j2;\n    let j4 = m;\n\n    let x0 = dx + rx;\n    let y0 = dy;\n    let x1 = x + x0;\n    let x2 = x - x0;\n    let y1 = y + y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j2] = y1;\n    points[--j2] = x2;\n\n    if (dy) {\n      const y2 = y - y0;\n\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    for (let i = 1; i < n; i++) {\n      const a = Math.PI / 2 * (i / n);\n      const x0 = dx + (Math.cos(a) * rx);\n      const y0 = dy + (Math.sin(a) * ry);\n      const x1 = x + x0;\n      const x2 = x - x0;\n      const y1 = y + y0;\n      const y2 = y - y0;\n\n      points[j1++] = x1;\n      points[j1++] = y1;\n      points[--j2] = y1;\n      points[--j2] = x2;\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    x0 = dx;\n    y0 = dy + ry;\n    x1 = x + x0;\n    x2 = x - x0;\n    y1 = y + y0;\n    const y2 = y - y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j4] = y2;\n    points[--j4] = x1;\n\n    if (dx) {\n      points[j1++] = x2;\n      points[j1++] = y1;\n      points[--j4] = y2;\n      points[--j4] = x2;\n    }\n\n    return points;\n  }\n\n  triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number) {\n    if (points.length === 0) {\n      return;\n    }\n\n    // Compute center (average of all points)\n    let centerX = 0; let\n      centerY = 0;\n\n    for (let i = 0; i < points.length; i += 2) {\n      centerX += points[i];\n      centerY += points[i + 1];\n    }\n    centerX /= (points.length / 2);\n    centerY /= (points.length / 2);\n\n    // Set center vertex\n    let count = verticesOffset;\n\n    vertices[count * 2] = centerX;\n    vertices[(count * 2) + 1] = centerY;\n    const centerIndex = count++;\n\n    // Set edge vertices and indices\n    for (let i = 0; i < points.length; i += 2) {\n      vertices[count * 2] = points[i];\n      vertices[(count * 2) + 1] = points[i + 1];\n\n      if (i > 0) { // Skip first point for indices\n        indices[indicesOffset++] = count;\n        indices[indicesOffset++] = centerIndex;\n        indices[indicesOffset++] = count - 1;\n      }\n      count++;\n    }\n\n    // Connect last point to the first edge point\n    indices[indicesOffset++] = centerIndex + 1;\n    indices[indicesOffset++] = centerIndex;\n    indices[indicesOffset++] = count - 1;\n  }\n}\n","// Based on:\n// https://github.com/airbnb/lottie-web/blob/master/player/js/utils/shapes/ShapeProperty.js\n\nimport { buildAdaptiveBezier } from './build-adaptive-bezier';\nimport { ShapePrimitive } from './shape-primitive';\nimport { triangulate } from './triangulate';\n\nexport enum StarType {\n  Star,\n  Polygon,\n}\n\nexport class PolyStar extends ShapePrimitive {\n  /**\n   * bezier 顶点\n   */\n  private v: number[] = [];\n  /**\n   * bezier 缓入点\n   */\n  private in: number[] = [];\n  /**\n   * bezier 缓出点\n   */\n  private out: number[] = [];\n\n  /**\n   *\n   * @param pointCount - 多边形顶点数量\n   * @param outerRadius - 外半径大小\n   * @param innerRadius - 内半径大小\n   * @param outerRoundness - 外顶点圆滑度百分比\n   * @param innerRoundness - 内顶点圆滑度百分比\n   * @param starType - PolyStar 类型\n   */\n  constructor (\n    public pointCount = 0,\n    public outerRadius = 0,\n    public innerRadius = 0,\n    public outerRoundness = 0,\n    public innerRoundness = 0,\n    public starType = StarType.Star,\n  ) {\n    super();\n  }\n\n  override clone (): ShapePrimitive {\n    const polyStar = new PolyStar(\n      this.pointCount,\n      this.outerRadius,\n      this.innerRadius,\n      this.outerRoundness,\n      this.innerRoundness,\n      this.starType\n    );\n\n    return polyStar;\n  }\n\n  override copyFrom (source: PolyStar): void {\n    this.pointCount = source.pointCount;\n    this.outerRadius = source.outerRadius;\n    this.innerRadius = source.innerRadius;\n    this.outerRoundness = source.outerRoundness;\n    this.innerRoundness = source.innerRoundness;\n    this.starType = source.starType;\n  }\n\n  override copyTo (destination: PolyStar): void {\n    destination.copyFrom(this);\n  }\n\n  override build (points: number[]): void {\n    switch (this.starType) {\n      case StarType.Star: {\n        this.buildStarPath();\n\n        break;\n      }\n      case StarType.Polygon: {\n        this.buildPolygonPath();\n\n        break;\n      }\n    }\n\n    const smoothness = 1;\n\n    for (let i = 0; i < this.v.length - 2; i += 2) {\n      buildAdaptiveBezier(\n        points,\n        this.v[i], this.v[i + 1],\n        this.out[i], this.out[i + 1], this.in[i + 2], this.in[i + 3], this.v[i + 2], this.v[i + 3],\n        smoothness\n      );\n    }\n\n    // draw last curve\n    const lastIndex = this.v.length - 1;\n\n    buildAdaptiveBezier(\n      points,\n      this.v[lastIndex - 1], this.v[lastIndex],\n      this.out[lastIndex - 1], this.out[lastIndex], this.in[0], this.in[1], this.v[0], this.v[1],\n      smoothness\n    );\n\n  }\n\n  override triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void {\n    const triangles = triangulate([points]);\n    const indexStart = vertices.length / 2;\n\n    for (let i = 0; i < triangles.length; i++) {\n      vertices[verticesOffset * 2 + i] = triangles[i];\n    }\n\n    const vertexCount = triangles.length / 2;\n\n    for (let i = 0; i < vertexCount; i++) {\n      indices[indicesOffset + i] = indexStart + i;\n    }\n  }\n\n  private buildStarPath () {\n    this.v = [];\n    this.in = [];\n    this.out = [];\n\n    const numPts = Math.floor(this.pointCount) * 2;\n    const angle = (Math.PI * 2) / numPts;\n    let longFlag = true;\n    const longRad = this.outerRadius;\n    const shortRad = this.innerRadius;\n    const longRound = this.outerRoundness / 100;\n    const shortRound = this.innerRoundness / 100;\n    const longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\n    const shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\n    let i;\n    let rad;\n    let roundness;\n    let perimSegment;\n    let currentAng = -Math.PI / 2;\n\n    const dir = 1;\n\n    for (i = 0; i < numPts; i++) {\n      rad = longFlag ? longRad : shortRad;\n      roundness = longFlag ? longRound : shortRound;\n      perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n      const x = rad * Math.cos(currentAng);\n      const y = rad * Math.sin(currentAng);\n      const ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n      const oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n      const offset = i * 2;\n\n      this.v[offset] = x;\n      this.v[offset + 1] = y;\n      this.in[offset] = x + ox * perimSegment * roundness * dir;\n      this.in[offset + 1] = y + oy * perimSegment * roundness * dir;\n      this.out[offset] = x - ox * perimSegment * roundness * dir;\n      this.out[offset + 1] = y - oy * perimSegment * roundness * dir;\n      longFlag = !longFlag;\n      currentAng += angle * dir;\n    }\n  }\n\n  private buildPolygonPath () {\n    this.v = [];\n    this.in = [];\n    this.out = [];\n\n    const numPts = Math.floor(this.pointCount);\n    const angle = (Math.PI * 2) / numPts;\n    const rad = this.outerRadius;\n    const roundness = this.outerRoundness / 100;\n    const perimSegment = (2 * Math.PI * rad) / (numPts * 4);\n    let i;\n    let currentAng = -Math.PI * 0.5;\n    const dir = 1;\n\n    for (i = 0; i < numPts; i++) {\n      const x = rad * Math.cos(currentAng);\n      const y = rad * Math.sin(currentAng);\n      const ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n      const oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n\n      const offset = i * 2;\n\n      this.v[offset] = x;\n      this.v[offset + 1] = y;\n      this.in[offset] = x + ox * perimSegment * roundness * dir;\n      this.in[offset + 1] = y + oy * perimSegment * roundness * dir;\n      this.out[offset] = x - ox * perimSegment * roundness * dir;\n      this.out[offset + 1] = y - oy * perimSegment * roundness * dir;\n      currentAng += angle * dir;\n    }\n  }\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/maths/shapes/RoundedRectangle.ts\n\nimport { ShapePrimitive } from './shape-primitive';\n\n/**\n * The `Rectangle` object is an area defined by its position, as indicated by its top-left corner\n * point (`x`, `y`) and by its `width` and its `height`, including a `roundness` property that\n * defines the roundness of the rounded corners.\n * @memberof maths\n */\nexport class Rectangle extends ShapePrimitive {\n  /**\n   * The X coordinate of the upper-left corner of the rectangle\n   */\n  x: number;\n\n  /**\n   * The Y coordinate of the upper-left corner of the rectangle\n   */\n  y: number;\n\n  /**\n   * The overall width of this rectangle\n   */\n  width: number;\n\n  /**\n   * The overall height of this rectangle\n   */\n  height: number;\n\n  /**\n   * Controls the roundness of the rounded corners\n   */\n  roundness: number;\n\n  /**\n   * @param x - The X coordinate of the upper-left corner of the rectangle\n   * @param y - The Y coordinate of the upper-left corner of the rectangle\n   * @param width - The overall width of this rectangle\n   * @param height - The overall height of this rectangle\n   * @param roundness - Controls the roundness of the rounded corners\n   */\n  constructor (x = 0, y = 0, width = 0, height = 0, roundness = 20) {\n    super();\n    this.x = x;\n    this.y = y;\n    this.width = width;\n    this.height = height;\n    this.roundness = roundness;\n  }\n\n  /**\n   * Returns the framing rectangle of the rectangle as a Rectangle object\n   * @param out - optional rectangle to store the result\n   * @returns The framing rectangle\n   */\n  getBounds (out?: Rectangle): Rectangle {\n    out = out || new Rectangle();\n\n    out.x = this.x;\n    out.y = this.y;\n    out.width = this.width;\n    out.height = this.height;\n\n    return out;\n  }\n\n  /**\n   * Creates a clone of this rectangle.\n   * @returns - A copy of the rectangle.\n   */\n  clone (): Rectangle {\n    return new Rectangle(this.x, this.y, this.width, this.height, this.roundness);\n  }\n\n  /**\n   * Copies another rectangle to this one.\n   * @param rectangle - The rectangle to copy from.\n   * @returns Returns itself.\n   */\n  copyFrom (rectangle: Rectangle): this {\n    this.x = rectangle.x;\n    this.y = rectangle.y;\n    this.width = rectangle.width;\n    this.height = rectangle.height;\n    this.roundness = rectangle.roundness;\n\n    return this;\n  }\n\n  /**\n   * Copies this rectangle to another one.\n   * @param rectangle - The rectangle to copy to.\n   * @returns Returns given parameter.\n   */\n  copyTo (rectangle: Rectangle): Rectangle {\n    rectangle.copyFrom(this);\n\n    return rectangle;\n  }\n\n  override build (points: number[]): void {\n    let ry;\n\n    const halfWidth = this.width / 2;\n    const halfHeight = this.height / 2;\n\n    const x = this.x + halfWidth;\n    const y = this.y + halfHeight;\n    const rx = ry = Math.max(0, Math.min(this.roundness / 100, 1) * Math.min(halfWidth, halfHeight));\n    const dx = halfWidth - rx;\n    const dy = halfHeight - ry;\n\n    if (!(rx >= 0 && ry >= 0 && dx >= 0 && dy >= 0)) {\n      return;\n    }\n\n    // 控制边缘的平滑程度\n    const densityScale = 5;\n    // Choose a number of segments such that the maximum absolute deviation from the circle is approximately 0.029\n    const n = densityScale * Math.ceil(2.3 * Math.sqrt(rx + ry));\n    const m = (n * 8) + (dx ? 4 : 0) + (dy ? 4 : 0);\n\n    if (m === 0) {\n      return;\n    }\n\n    if (n === 0) {\n      points[0] = points[6] = x + dx;\n      points[1] = points[3] = y + dy;\n      points[2] = points[4] = x - dx;\n      points[5] = points[7] = y - dy;\n\n      return;\n    }\n\n    let j1 = 0;\n    let j2 = (n * 4) + (dx ? 2 : 0) + 2;\n    let j3 = j2;\n    let j4 = m;\n\n    let x0 = dx + rx;\n    let y0 = dy;\n    let x1 = x + x0;\n    let x2 = x - x0;\n    let y1 = y + y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j2] = y1;\n    points[--j2] = x2;\n\n    if (dy) {\n      const y2 = y - y0;\n\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    for (let i = 1; i < n; i++) {\n      const a = Math.PI / 2 * (i / n);\n      const x0 = dx + (Math.cos(a) * rx);\n      const y0 = dy + (Math.sin(a) * ry);\n      const x1 = x + x0;\n      const x2 = x - x0;\n      const y1 = y + y0;\n      const y2 = y - y0;\n\n      points[j1++] = x1;\n      points[j1++] = y1;\n      points[--j2] = y1;\n      points[--j2] = x2;\n      points[j3++] = x2;\n      points[j3++] = y2;\n      points[--j4] = y2;\n      points[--j4] = x1;\n    }\n\n    x0 = dx;\n    y0 = dy + ry;\n    x1 = x + x0;\n    x2 = x - x0;\n    y1 = y + y0;\n    const y2 = y - y0;\n\n    points[j1++] = x1;\n    points[j1++] = y1;\n    points[--j4] = y2;\n    points[--j4] = x1;\n\n    if (dx) {\n      points[j1++] = x2;\n      points[j1++] = y1;\n      points[--j4] = y2;\n      points[--j4] = x2;\n    }\n  }\n\n  override triangulate (points: number[], vertices: number[], verticesOffset: number, indices: number[], indicesOffset: number): void {\n    if (points.length === 0) {\n      return;\n    }\n\n    // Compute center (average of all points)\n    let centerX = 0; let\n      centerY = 0;\n\n    for (let i = 0; i < points.length; i += 2) {\n      centerX += points[i];\n      centerY += points[i + 1];\n    }\n    centerX /= (points.length / 2);\n    centerY /= (points.length / 2);\n\n    // Set center vertex\n    let count = verticesOffset;\n\n    vertices[count * 2] = centerX;\n    vertices[(count * 2) + 1] = centerY;\n    const centerIndex = count++;\n\n    // Set edge vertices and indices\n    for (let i = 0; i < points.length; i += 2) {\n      vertices[count * 2] = points[i];\n      vertices[(count * 2) + 1] = points[i + 1];\n\n      if (i > 0) { // Skip first point for indices\n        indices[indicesOffset++] = count;\n        indices[indicesOffset++] = centerIndex;\n        indices[indicesOffset++] = count - 1;\n      }\n      count++;\n    }\n\n    // Connect last point to the first edge point\n    indices[indicesOffset++] = centerIndex + 1;\n    indices[indicesOffset++] = centerIndex;\n    indices[indicesOffset++] = count - 1;\n  }\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/scene/graphics/shared/path/ShapePath.ts\n\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { Polygon } from './polygon';\nimport { buildAdaptiveBezier } from './build-adaptive-bezier';\nimport type { GraphicsPath } from './graphics-path';\nimport type { ShapePrimitive } from './shape-primitive';\nimport { Ellipse } from './ellipse';\nimport type { StarType } from './poly-star';\nimport { PolyStar } from './poly-star';\nimport { Rectangle } from './rectangle';\n\nexport class ShapePath {\n  currentPoly: Polygon | null = null;\n  shapePrimitives: { shape: ShapePrimitive, transform?: Matrix4 }[] = [];\n\n  constructor (\n    private graphicsPath: GraphicsPath,\n  ) { }\n\n  /** Builds the path. */\n  buildPath () {\n    this.currentPoly = null;\n    this.shapePrimitives.length = 0;\n    const path = this.graphicsPath;\n\n    for (const instruction of path.instructions) {\n      const action = instruction.action;\n      const data = instruction.data;\n\n      switch (action) {\n        case 'bezierCurveTo': {\n          this.bezierCurveTo(data[0], data[1], data[2], data[3], data[4], data[5], data[6]);\n\n          break;\n        }\n        case 'moveTo': {\n          this.moveTo(data[0], data[1]);\n\n          break;\n        }\n        case 'ellipse': {\n          this.ellipse(data[0], data[1], data[2], data[3], data[4]);\n\n          break;\n        }\n        case 'polyStar': {\n          this.polyStar(data[0], data[1], data[2], data[3], data[4], data[5], data[6]);\n\n          break;\n        }\n        case 'rect': {\n          this.rect(data[0], data[1], data[2], data[3], data[4]);\n\n          break;\n        }\n        case 'closePath':{\n          this.closePath();\n\n          break;\n        }\n      }\n    }\n    this.endPoly();\n  }\n\n  /**\n   * Adds a cubic Bezier curve to the path.\n   * It requires three points: the first two are control points and the third one is the end point.\n   * The starting point is the last point in the current path.\n   * @param cp1x - The x-coordinate of the first control point.\n   * @param cp1y - The y-coordinate of the first control point.\n   * @param cp2x - The x-coordinate of the second control point.\n   * @param cp2y - The y-coordinate of the second control point.\n   * @param x - The x-coordinate of the end point.\n   * @param y - The y-coordinate of the end point.\n   * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n   * @returns The instance of the current object for chaining.\n   */\n  bezierCurveTo (\n    cp1x: number, cp1y: number, cp2x: number, cp2y: number,\n    x: number, y: number,\n    smoothness?: number,\n  ): ShapePath {\n    this.ensurePoly();\n    const currentPoly = this.currentPoly as Polygon;\n\n    buildAdaptiveBezier(\n      currentPoly.points,\n      currentPoly.lastX, currentPoly.lastY,\n      cp1x, cp1y, cp2x, cp2y, x, y,\n      smoothness,\n    );\n\n    return this;\n  }\n\n  moveTo (x: number, y: number): ShapePath {\n    this.startPoly(x, y);\n\n    return this;\n  }\n\n  /**\n   * Closes the current path by drawing a straight line back to the start.\n   * If the shape is already closed or there are no points in the path, this method does nothing.\n   * @returns The instance of the current object for chaining.\n   */\n  closePath (): this {\n    this.endPoly(true);\n\n    return this;\n  }\n\n  /**\n   * Draws an ellipse at the specified location and with the given x and y radii.\n   * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n   * @param x - The x-coordinate of the center of the ellipse.\n   * @param y - The y-coordinate of the center of the ellipse.\n   * @param radiusX - The horizontal radius of the ellipse.\n   * @param radiusY - The vertical radius of the ellipse.\n   * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n   * @returns The instance of the current object for chaining.\n   */\n  ellipse (x: number, y: number, radiusX: number, radiusY: number, transform?: Matrix4): this {\n    // TODO apply rotation to transform...\n\n    this.drawShape(new Ellipse(x, y, radiusX, radiusY), transform);\n\n    return this;\n  }\n\n  polyStar (pointCount: number, outerRadius: number, innerRadius: number, outerRoundness: number, innerRoundness: number, starType: StarType, transform?: Matrix4) {\n    this.drawShape(new PolyStar(pointCount, outerRadius, innerRadius, outerRoundness, innerRoundness, starType), transform);\n\n    return this;\n  }\n\n  /**\n   * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n   * @param x - The x-coordinate of the upper-left corner of the rectangle.\n   * @param y - The y-coordinate of the upper-left corner of the rectangle.\n   * @param w - The width of the rectangle.\n   * @param h - The height of the rectangle.\n   * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n   * @returns The instance of the current object for chaining.\n   */\n  rect (x: number, y: number, w: number, h: number, roundness: number, transform?: Matrix4): this {\n    this.drawShape(new Rectangle(x, y, w, h, roundness), transform);\n\n    return this;\n  }\n\n  /**\n   * Draws a given shape on the canvas.\n   * This is a generic method that can draw any type of shape specified by the `ShapePrimitive` parameter.\n   * An optional transformation matrix can be applied to the shape, allowing for complex transformations.\n   * @param shape - The shape to draw, defined as a `ShapePrimitive` object.\n   * @param matrix - An optional `Matrix` for transforming the shape. This can include rotations,\n   * scaling, and translations.\n   * @returns The instance of the current object for chaining.\n   */\n  drawShape (shape: ShapePrimitive, matrix?: Matrix4): this {\n    this.endPoly();\n\n    this.shapePrimitives.push({ shape, transform: matrix });\n\n    return this;\n  }\n\n  /**\n   * Starts a new polygon path from the specified starting point.\n   * This method initializes a new polygon or ends the current one if it exists.\n   * @param x - The x-coordinate of the starting point of the new polygon.\n   * @param y - The y-coordinate of the starting point of the new polygon.\n   * @returns The instance of the current object for chaining.\n   */\n  private startPoly (x: number, y: number): this {\n    let currentPoly = this.currentPoly;\n\n    if (currentPoly) {\n      this.endPoly();\n    }\n\n    currentPoly = new Polygon();\n\n    currentPoly.points.push(x, y);\n\n    this.currentPoly = currentPoly;\n\n    return this;\n  }\n\n  /**\n   * Ends the current polygon path. If `closePath` is set to true,\n   * the path is closed by connecting the last point to the first one.\n   * This method finalizes the current polygon and prepares it for drawing or adding to the shape primitives.\n   * @param closePath - A boolean indicating whether to close the polygon by connecting the last point\n   *  back to the starting point. False by default.\n   * @returns The instance of the current object for chaining.\n   */\n  private endPoly (closePath = false): this {\n    const shape = this.currentPoly;\n\n    if (shape && shape.points.length > 2) {\n      shape.closePath = closePath;\n\n      this.shapePrimitives.push({ shape });\n    }\n\n    this.currentPoly = null;\n\n    return this;\n  }\n\n  private ensurePoly (start = true): void {\n    if (this.currentPoly) { return; }\n\n    this.currentPoly = new Polygon();\n    this.currentPoly.points.push(0, 0);\n  }\n}\n","// Based on:\n// https://github.com/pixijs/pixijs/blob/dev/src/scene/graphics/shared/path/GraphicsPath.ts\n\nimport type { Matrix4 } from '@galacean/effects-math/es/core/matrix4';\nimport { ShapePath } from './shape-path';\nimport type { StarType } from './poly-star';\n\nexport class GraphicsPath {\n  instructions: PathInstruction[] = [];\n\n  private dirty = false;\n  private _shapePath: ShapePath;\n\n  /**\n   * Provides access to the internal shape path, ensuring it is up-to-date with the current instructions.\n   * @returns The `ShapePath` instance associated with this `GraphicsPath`.\n   */\n  get shapePath (): ShapePath {\n    if (!this._shapePath) {\n      this._shapePath = new ShapePath(this);\n    }\n\n    if (this.dirty) {\n      this.dirty = false;\n      this._shapePath.buildPath();\n    }\n\n    return this._shapePath;\n  }\n\n  /**\n   * Adds a cubic Bezier curve to the path.\n   * It requires three points: the first two are control points and the third one is the end point.\n   * The starting point is the last point in the current path.\n   * @param cp1x - The x-coordinate of the first control point.\n   * @param cp1y - The y-coordinate of the first control point.\n   * @param cp2x - The x-coordinate of the second control point.\n   * @param cp2y - The y-coordinate of the second control point.\n   * @param x - The x-coordinate of the end point.\n   * @param y - The y-coordinate of the end point.\n   * @param smoothness - Optional parameter to adjust the smoothness of the curve.\n   * @returns The instance of the current object for chaining.\n   */\n  bezierCurveTo (\n    cp1x: number, cp1y: number, cp2x: number, cp2y: number,\n    x: number, y: number,\n    smoothness?: number,\n  ): GraphicsPath {\n    this.instructions.push({ action: 'bezierCurveTo', data: [cp1x, cp1y, cp2x, cp2y, x, y, smoothness] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Sets the starting point for a new sub-path. Any subsequent drawing commands are considered part of this path.\n   * @param x - The x-coordinate for the starting point.\n   * @param y - The y-coordinate for the starting point.\n   * @returns The instance of the current object for chaining.\n   */\n  moveTo (x: number, y: number): GraphicsPath {\n    this.instructions.push({ action: 'moveTo', data: [x, y] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Closes the current path by drawing a straight line back to the start.\n   * If the shape is already closed or there are no points in the path, this method does nothing.\n   * @returns The instance of the current object for chaining.\n   */\n  closePath (): this {\n    this.instructions.push({ action: 'closePath', data: [] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Draws an ellipse at the specified location and with the given x and y radii.\n   * An optional transformation can be applied, allowing for rotation, scaling, and translation.\n   * @param x - The x-coordinate of the center of the ellipse.\n   * @param y - The y-coordinate of the center of the ellipse.\n   * @param radiusX - The horizontal radius of the ellipse.\n   * @param radiusY - The vertical radius of the ellipse.\n   * @param transform - An optional `Matrix` object to apply a transformation to the ellipse. This can include rotations.\n   * @returns The instance of the current object for chaining.\n   */\n  ellipse (x: number, y: number, radiusX: number, radiusY: number, transform?: Matrix4) {\n    this.instructions.push({ action: 'ellipse', data: [x, y, radiusX, radiusY, transform] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  /**\n   * Draws a rectangle shape. This method adds a new rectangle path to the current drawing.\n   * @param x - The x-coordinate of the upper-left corner of the rectangle.\n   * @param y - The y-coordinate of the upper-left corner of the rectangle.\n   * @param w - The width of the rectangle.\n   * @param h - The height of the rectangle.\n   * @param transform - An optional `Matrix` object to apply a transformation to the rectangle.\n   * @returns The instance of the current object for chaining.\n   */\n  rect (x: number, y: number, w: number, h: number, roundness: number, transform?: Matrix4): this {\n    this.instructions.push({ action: 'rect', data: [x, y, w, h, roundness, transform] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  polyStar (pointCount: number, outerRadius: number, innerRadius: number, outerRoundness: number, innerRoundness: number, starType: StarType, transform?: Matrix4) {\n    this.instructions.push({ action: 'polyStar', data: [pointCount, outerRadius, innerRadius, outerRoundness, innerRoundness, starType, transform] });\n\n    this.dirty = true;\n\n    return this;\n  }\n\n  clear (): GraphicsPath {\n    this.instructions.length = 0;\n    this.dirty = true;\n\n    return this;\n  }\n}\n\nexport interface PathInstruction {\n  action:\n  | 'moveTo'\n  | 'lineTo'\n  | 'quadraticCurveTo'\n  | 'bezierCurveTo'\n  | 'arc'\n  | 'closePath'\n  | 'addPath'\n  | 'arcTo'\n  | 'ellipse'\n  | 'rect'\n  | 'roundRect'\n  | 'arcToSvg'\n  | 'poly'\n  | 'circle'\n  | 'regularPoly'\n  | 'roundPoly'\n  | 'roundShape'\n  | 'filletRect'\n  | 'chamferRect'\n  | 'polyStar'\n  ,\n  data: any[],\n}\n","import { addItem, assertExist } from './utils';\nimport { getConfig, TEMPLATE_USE_OFFSCREEN_CANVAS } from './config';\n\nclass CanvasPool {\n  readonly elements: HTMLCanvasElement[] = [];\n\n  constructor () {\n  }\n\n  dispose () {\n    this.elements.forEach(e => e.remove());\n    // clearing the array\n    this.elements.length = 0;\n  }\n\n  getCanvas (): HTMLCanvasElement {\n    if (this.elements.length !== 0) {\n      const canvas = this.elements.shift();\n\n      assertExist(canvas);\n\n      return canvas;\n    }\n    if (getConfig(TEMPLATE_USE_OFFSCREEN_CANVAS)) {\n      return window._createOffscreenCanvas(10, 10);\n    } else {\n      // in hongmeng system, create too many canvas will case render error\n      const defCanvas = document.createElement('canvas');\n\n      defCanvas.getContext('2d', { willReadFrequently: true });\n\n      return defCanvas;\n    }\n  }\n\n  saveCanvas (canvas: HTMLCanvasElement) {\n    canvas.width = 1;\n    canvas.height = 1;\n    if (this.elements.length < 3) {\n      addItem(this.elements, canvas);\n    } else {\n      canvas.remove();\n    }\n  }\n}\n\nexport const canvasPool = new CanvasPool();\n","import * as spec from '@galacean/effects-specification';\nimport type { TextStyle } from './text-style';\nimport type { BaseLayout } from './base-layout';\n\nexport class TextLayout implements BaseLayout {\n  textVerticalAlign: spec.TextVerticalAlign;\n  textAlign: spec.TextAlignment;\n  letterSpace: number;\n  overflow: spec.TextOverflow;\n  width = 0;\n  height = 0;\n\n  /**\n   * 自适应宽高开关\n   */\n  autoWidth: boolean;\n\n  maxTextWidth: number;\n  /**\n   * 行高\n   */\n  lineHeight: number;\n\n  constructor (options: spec.TextContentOptions) {\n    this.update(options);\n  }\n\n  update (options: spec.TextContentOptions): void {\n    const {\n      textHeight = 100,\n      textWidth = 100,\n      textOverflow = spec.TextOverflow.clip,\n      textVerticalAlign = spec.TextVerticalAlign.top,\n      textAlign = spec.TextAlignment.left,\n      letterSpace = 0,\n      autoWidth = false,\n      fontSize,\n      lineHeight = fontSize,\n    } = options;\n\n    this.letterSpace = letterSpace;\n    this.overflow = textOverflow;\n    this.textVerticalAlign = textVerticalAlign;\n    this.textAlign = textAlign;\n    this.width = textWidth;\n    this.height = textHeight;\n\n    this.lineHeight = lineHeight;\n    this.autoWidth = autoWidth;\n  }\n\n  /**\n   * 获取初始的行高偏移值\n   * @param style - 字体基础数据\n   * @param lineCount - 渲染行数\n   * @param lineHeight - 渲染时的字体行高\n   * @param fontSize - 渲染时的字体大小\n   * @param totalLineHeight - 可选的实际总行高，用于替代默认计算\n   * @returns - 行高偏移值\n   */\n  getOffsetY (style: TextStyle, lineCount: number, lineHeight: number, fontSize: number, totalLineHeight?: number) {\n    const { fontScale } = style;\n    // /3 计算Y轴偏移量，以匹配编辑器行为\n    const offsetY = (lineHeight - fontSize) / 3;\n    // 计算基础偏移量\n    const baseOffset = fontSize;\n    const commonCalculation = totalLineHeight !== undefined ? totalLineHeight : lineHeight * (lineCount - 1);\n    let offsetResult = 0;\n\n    switch (this.textVerticalAlign) {\n      case spec.TextVerticalAlign.top:\n        offsetResult = baseOffset + offsetY;\n\n        break;\n      case spec.TextVerticalAlign.middle:\n        offsetResult = (this.height * fontScale - commonCalculation + baseOffset) / 2;\n\n        break;\n      case spec.TextVerticalAlign.bottom:\n        offsetResult = (this.height * fontScale - commonCalculation) - offsetY;\n\n        break;\n      default:\n        break;\n    }\n\n    return offsetResult;\n  }\n\n  /**\n   * 获取初始的水平偏移值\n   * @param style - 字体基础数据\n   * @param maxWidth - 最大行宽\n   * @returns - 水平偏移值\n   */\n  getOffsetX (style: TextStyle, maxWidth: number) {\n    let offsetX = 0;\n\n    switch (this.textAlign) {\n      case spec.TextAlignment.left:\n        offsetX = 0;\n\n        break;\n      case spec.TextAlignment.middle:\n        offsetX = (this.width * style.fontScale - maxWidth) / 2;\n\n        break;\n      case spec.TextAlignment.right:\n        offsetX = (this.width * style.fontScale - maxWidth);\n\n        break;\n      default:\n        break;\n    }\n\n    return offsetX;\n  }\n\n  /**\n   * 设置文本框的宽度和高度\n   * @param width - 文本框宽度\n   * @param height - 文本框高度\n   */\n  setSize (width: number, height: number) {\n    this.width = width;\n    this.height = height;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\n\nexport class TextStyle {\n  /**\n   * 字重\n   */\n  textWeight: spec.TextWeight; // ttf\n  /**\n   * 字体样式\n   */\n  fontStyle: spec.FontStyle; // ttf\n  /**\n   * 是否有下划线（暂时无效）\n   */\n  isUnderline = false; // ttf\n  /**\n   * 下划线高度（暂时无效）\n   */\n  underlineHeight = 1; // ttf\n  /**\n   * 是否有外描边\n   */\n  isOutlined = false; // both // ttf & char\n  /**\n   * 外描边颜色\n   */\n  outlineColor: spec.vec4;// both // ttf & char\n  /**\n   * 外描边宽度\n   */\n  outlineWidth = 0; // both // ttf & char\n  /**\n   * 是否有阴影\n   */\n  hasShadow = false; // ttf\n  /**\n   * 阴影颜色\n   */\n  shadowColor: spec.vec4; // ttf\n  /**\n   * 阴影模糊\n   */\n  shadowBlur: number; // ttf\n  /**\n   * 阴影水平偏移距离\n   */\n  shadowOffsetX: number; // ttf\n  /**\n   * 阴影高度偏移距离\n   */\n  shadowOffsetY: number; // ttf\n\n  /**\n   * 文本颜色\n   */\n  textColor: spec.vec4; // both\n\n  /**\n   * 字体大小\n   */\n  fontSize: number; // input fonSize // both\n  // private maxFontSize = 100;\n\n  // isSystemFontUsed = false; // both // ttf & char\n\n  // font info // todo merge to font\n  fontFamily: string; // both\n  fontDesc = ''; // both\n\n  /**\n   * 字体倍数\n   */\n  fontScale = 2;\n\n  fontOffset = 0;\n\n  constructor (options: spec.TextContentOptions) {\n    this.update(options);\n  }\n\n  update (options: spec.TextContentOptions): void {\n    const { textColor = [1, 1, 1, 1], fontSize = 40, outline, shadow, fontWeight = 'normal', fontStyle = 'normal', fontFamily = 'sans-serif' } = options;\n\n    this.textColor = [...textColor];\n    //@ts-expect-error\n    this.textWeight = fontWeight;\n    //@ts-expect-error\n    this.fontStyle = fontStyle;\n    this.fontFamily = fontFamily;\n    this.fontSize = fontSize; // 暂时取消字号限制 Math.min(fontSize, this.maxFontSize);\n\n    // 重置描边状态\n    this.isOutlined = false;\n    this.outlineColor = [1, 1, 1, 1];\n    this.outlineWidth = 0;\n\n    if (outline && (outline.outlineWidth ?? 0) > 0) {\n      this.isOutlined = true;\n      this.outlineColor = [...(outline.outlineColor ?? [1, 1, 1, 1])];\n      this.outlineWidth = outline.outlineWidth ?? 0;\n    }\n\n    // 重置阴影状态\n    this.hasShadow = false;\n    this.shadowBlur = 2;\n    this.shadowColor = [0, 0, 0, 1];\n    this.shadowOffsetX = 0;\n    this.shadowOffsetY = 0;\n\n    if (shadow) {\n      this.hasShadow = true;\n      this.shadowBlur = shadow.shadowBlur ?? 2;\n      this.shadowColor = [...(shadow.shadowColor ?? [0, 0, 0, 1])];\n      this.shadowOffsetX = shadow.shadowOffsetX ?? 0;\n      this.shadowOffsetY = shadow.shadowOffsetY ?? 0;\n    }\n\n    // 重置字体偏移\n    this.fontOffset = 0;\n    if (this.fontStyle !== spec.FontStyle.normal) {\n      // 0.0174532925 = 3.141592653 / 180\n      this.fontOffset += this.fontSize * Math.tan(12 * 0.0174532925);\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Engine } from '../../engine';\nimport type { Material } from '../../material';\nimport { Texture } from '../../texture';\nimport type { ItemRenderer } from '../../components';\nimport type { VFXItem } from '../../vfx-item';\nimport type { BaseLayout } from './base-layout';\nimport type { TextStyle } from './text-style';\nimport { glContext } from '../../gl';\nimport { isValidFontFamily } from '../../utils';\nimport { canvasPool } from '../../canvas-pool';\n\n/**\n * 纯文本组件特有 API\n */\nexport interface ITextComponent {\n  setOutlineWidth (value: number): void,\n  setOutlineEnabled (value: boolean): void,\n  setShadowBlur (value: number): void,\n  setShadowColor (value: spec.RGBAColorValue): void,\n  setShadowOffsetX (value: number): void,\n  setShadowOffsetY (value: number): void,\n  setAutoWidth (value: boolean): void,\n  setFontSize (value: number): void,\n}\n\n/**\n * 富文本组件特有 API\n */\nexport interface IRichTextComponent extends ITextComponent { }\n\nexport class TextComponentBase {\n  // 状态与通用字段\n  textStyle: TextStyle;\n  textLayout: BaseLayout;\n  text: string;\n  canvas: HTMLCanvasElement;\n  context: CanvasRenderingContext2D | null;\n\n  // 通用状态字段\n  isDirty = true;\n  engine: Engine;\n  material: Material;\n  item: VFXItem;\n  renderer: ItemRenderer;\n  lineCount = 0;\n\n  protected maxLineWidth = 0;\n  // 常量\n  protected readonly ALPHA_FIX_VALUE = 1 / 255;\n\n  // 通用 setter 方法\n  setText (value: string): void {\n    if (this.text === value) {\n      return;\n    }\n    this.text = value.toString();\n    this.isDirty = true;\n  }\n\n  setTextAlign (value: spec.TextAlignment): void {\n    if (this.textLayout.textAlign === value) {\n      return;\n    }\n    this.textLayout.textAlign = value;\n    this.isDirty = true;\n  }\n\n  setTextVerticalAlign (value: spec.TextVerticalAlign): void {\n    if (this.textLayout.textVerticalAlign === (value as unknown as spec.TextVerticalAlign)) {\n      return;\n    }\n    this.textLayout.textVerticalAlign = value as unknown as spec.TextVerticalAlign;\n    this.isDirty = true;\n  }\n\n  /**\n   * @deprecated 2.8.0 本方法已废弃，请使用 setTextVerticalAlign 替代。\n   */\n  setTextBaseline (value: spec.TextBaseline): void {\n    console.warn(\n      'setTextBaseline 已废弃，请改用 setTextVerticalAlign。' +\n      '本次调用将转调用 setTextVerticalAlign。'\n    );\n\n    this.setTextVerticalAlign(value as unknown as spec.TextVerticalAlign);\n  }\n\n  setTextColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.textColor === value) {\n      return;\n    }\n    this.textStyle.textColor = value;\n    this.isDirty = true;\n  }\n\n  setFontFamily (value: string): void {\n    if (!isValidFontFamily(value)) {\n      console.warn('Risky font family, ignored:', value);\n\n      return;\n    }\n    if (this.textStyle.fontFamily === value) {\n      return;\n    }\n    this.textStyle.fontFamily = value;\n    this.isDirty = true;\n  }\n\n  setFontWeight (value: spec.TextWeight): void {\n    if (this.textStyle.textWeight === value) {\n      return;\n    }\n    this.textStyle.textWeight = value;\n    this.isDirty = true;\n  }\n\n  setFontStyle (value: spec.FontStyle): void {\n    if (this.textStyle.fontStyle === value) {\n      return;\n    }\n    this.textStyle.fontStyle = value;\n    this.isDirty = true;\n  }\n\n  setOutlineColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.outlineColor === value) {\n      return;\n    }\n    this.textStyle.outlineColor = value;\n    this.isDirty = true;\n  }\n\n  setOutlineEnabled (value: boolean): void {\n    if (this.textStyle.isOutlined === value) {\n      return;\n    }\n    this.textStyle.isOutlined = value;\n    this.isDirty = true;\n  }\n\n  setFontScale (value: number): void {\n    if (this.textStyle.fontScale === value) {\n      return;\n    }\n    this.textStyle.fontScale = value;\n    this.isDirty = true;\n  }\n\n  setOverflow (overflow: spec.TextOverflow): void {\n    this.textLayout.overflow = overflow;\n    this.isDirty = true;\n  }\n\n  // 通用工具方法\n  protected getFontDesc (size?: number): string {\n    const { fontSize, fontScale, fontFamily, textWeight, fontStyle } = this.textStyle;\n    let fontDesc = `${(size || fontSize * fontScale).toString()}px `;\n\n    if (!['serif', 'sans-serif', 'monospace', 'courier'].includes(fontFamily)) {\n      fontDesc += `\"${fontFamily}\"`;\n    } else {\n      fontDesc += fontFamily;\n    }\n    if (textWeight !== spec.TextWeight.normal) {\n      fontDesc = `${textWeight} ${fontDesc}`;\n    }\n\n    if (fontStyle !== spec.FontStyle.normal) {\n      fontDesc = `${fontStyle} ${fontDesc}`;\n    }\n\n    return fontDesc;\n  }\n\n  protected setupOutline (): void {\n    const context = this.context;\n    const { outlineColor, outlineWidth } = this.textStyle;\n    const [r, g, b, a] = outlineColor;\n\n    if (context) {\n      context.strokeStyle = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;\n      context.lineWidth = outlineWidth * 2;\n    }\n  }\n\n  protected setupShadow (): void {\n    const context = this.context;\n    const { shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY } = this.textStyle;\n    const [r, g, b, a] = shadowColor;\n\n    if (context) {\n      context.shadowColor = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;\n      context.shadowBlur = shadowBlur;\n      context.shadowOffsetX = shadowOffsetX;\n      context.shadowOffsetY = -shadowOffsetY;\n    }\n  }\n\n  // 通用纹理生命周期管理\n  protected disposeTextTexture (): void {\n    const texture = this.renderer.texture;\n\n    if (texture && texture !== this.engine.whiteTexture) {\n      texture.dispose();\n    }\n  }\n\n  /**\n   * 通用纹理渲染辅助方法\n   */\n  protected renderToTexture (\n    width: number,\n    height: number,\n    flipY: boolean,\n    drawCallback: (ctx: CanvasRenderingContext2D) => void,\n    options: { disposeOld?: boolean } = {}\n  ): void {\n    if (!this.context || !this.canvas) {\n      return;\n    }\n\n    const context = this.context;\n\n    // 先保存状态\n    context.save();\n\n    // 设置canvas尺寸\n    this.canvas.width = width;\n    this.canvas.height = height;\n\n    //重置变换\n    context.setTransform(1, 0, 0, 1, 0, 0);\n\n    // 处理翻转\n    if (!flipY) {\n      context.translate(0, height);\n      context.scale(1, -1);\n    }\n\n    // 在翻转后清空画布\n    context.clearRect(0, 0, width, height);\n\n    // 设置 alpha 修复用填充色（不实际输出像素）\n    context.fillStyle = `rgba(255, 255, 255, ${this.ALPHA_FIX_VALUE})`;\n\n    // 执行绘制回调\n    drawCallback(context);\n\n    // 创建纹理前恢复状态\n    context.restore();\n\n    // 创建新纹理\n    const imageData = context.getImageData(0, 0, width, height);\n    const texture = Texture.createWithData(\n      this.engine,\n      {\n        data: new Uint8Array(imageData.data),\n        width: imageData.width,\n        height: imageData.height,\n      },\n      {\n        flipY,\n        magFilter: glContext.LINEAR,\n        minFilter: glContext.LINEAR,\n        wrapS: glContext.CLAMP_TO_EDGE,\n        wrapT: glContext.CLAMP_TO_EDGE,\n      },\n    );\n\n    // 根据选项决定是否释放旧纹理\n    if (options.disposeOld !== false) {\n      this.disposeTextTexture();\n    }\n    this.renderer.texture = texture;\n    this.material.setTexture('_MainTex', texture);\n  }\n\n  // 初始化方法，由子类调用\n  protected initTextBase (engine: Engine): void {\n    this.engine = engine;\n    this.canvas = canvasPool.getCanvas();\n    canvasPool.saveCanvas(this.canvas);\n    this.context = this.canvas.getContext('2d', { willReadFrequently: true });\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\nimport { Color, Vector2 } from '@galacean/effects-math/es/core/index';\nimport * as spec from '@galacean/effects-specification';\nimport { canvasPool } from '../../canvas-pool';\nimport { MaskableGraphic } from '../../components';\nimport { effectsClass } from '../../decorators';\nimport type { Engine } from '../../engine';\nimport { applyMixins } from '../../utils';\nimport { TextLayout } from './text-layout';\nimport { TextStyle } from './text-style';\nimport type { ITextComponent } from './text-component-base';\nimport { TextComponentBase } from './text-component-base';\n\nexport const DEFAULT_FONTS = [\n  'serif',\n  'sans-serif',\n  'monospace',\n  'courier',\n];\n\ninterface CharInfo {\n  /**\n   * 段落 y 值\n   */\n  y: number,\n  /**\n   * 段落字符\n   */\n  chars: string[],\n  charOffsetX: number[],\n  /**\n   * 段落宽度\n   */\n  width: number,\n}\n\nexport interface TextComponent extends TextComponentBase { }\n\nlet seed = 0;\n\n/**\n * @since 2.0.0\n */\n@effectsClass(spec.DataType.TextComponent)\nexport class TextComponent extends MaskableGraphic implements ITextComponent {\n  isDirty = true;\n  /**\n   * 文本行数\n   */\n  lineCount = 0;\n  textStyle: TextStyle;\n  canvas: HTMLCanvasElement;\n  context: CanvasRenderingContext2D | null;\n  textLayout: TextLayout;\n  text: string;\n\n  /**\n   * 描边/阴影等特效导致的纹理扩容比例 X/Y\n   */\n  protected effectScaleX = 1;\n  protected effectScaleY = 1;\n\n  /**\n   * 每一行文本的最大宽度\n   */\n  protected maxLineWidth = 0;\n\n  /**\n   * 初始文本宽度，用于计算缩放比例\n   */\n  private baseTextWidth = 0;\n\n  /**\n   * 初始 `transform.size.x`，用于按比例更新显示宽度\n   */\n  private baseScaleX = 1;\n\n  private getDefaultProps (): spec.TextComponentData {\n    return {\n      id: `default-id-${Math.random().toString(36).substr(2, 9)}`,\n      item: { id: `default-item-${Math.random().toString(36).substr(2, 9)}` },\n      dataType: spec.DataType.TextComponent,\n      options: {\n        text: '默认文本',\n        fontFamily: 'AlibabaSans-BoldItalic',\n        fontSize: 40,\n        // 统一使用 0-1 颜色值\n        textColor: [1, 1, 1, 1],\n        fontWeight: spec.TextWeight.normal,\n        letterSpace: 0,\n        textAlign: 1,\n        fontStyle: spec.FontStyle.normal,\n        autoWidth: false,\n        textWidth: 200,\n        textHeight: 42,\n        lineHeight: 40.148,\n      },\n      renderer: {\n        renderMode: 1,\n        anchor: [0.5, 0.5],\n      },\n    };\n  }\n\n  constructor (engine: Engine) {\n    super(engine);\n\n    this.name = 'MText' + seed++;\n\n    // 初始化canvas资源\n    this.canvas = canvasPool.getCanvas();\n    canvasPool.saveCanvas(this.canvas);\n    this.context = this.canvas.getContext('2d', { willReadFrequently: true });\n\n    // 使用默认值初始化\n    const defaultData = this.getDefaultProps();\n\n    const { options } = defaultData;\n\n    this.updateWithOptions(options);\n  }\n\n  override onUpdate (dt: number): void {\n    super.onUpdate(dt);\n    this.updateTexture();\n\n    // 覆盖基类每帧更新 size 行为，应用扩容比例\n    for (const material of this.materials) {\n      let sizeX = this.transform.size.x;\n      let sizeY = this.transform.size.y;\n      const [scalex, scaley] = this.getTextureExpandScale();\n\n      sizeX *= scalex;\n      sizeY *= scaley;\n\n      material.setVector2('_Size', new Vector2(sizeX, sizeY));\n    }\n  }\n\n  override onDestroy (): void {\n    super.onDestroy();\n    this.disposeTextTexture();\n  }\n\n  override fromData (data: spec.TextComponentData): void {\n    super.fromData(data);\n    const { interaction, options } = data;\n\n    this.interaction = interaction;\n\n    this.resetState();\n\n    // TextComponentBase\n    this.updateWithOptions(options);\n    this.renderText(options);\n\n    // 记录初始的 textWidth 和 x 缩放，用于后续按比例更新显示宽度\n    // 添加兜底值 1 防止除 0\n    this.baseTextWidth = options.textWidth || this.textLayout.width || 1;\n    this.baseScaleX = this.item.transform.size.x;\n\n    // 恢复默认颜色\n    this.material.setColor('_Color', new Color(1, 1, 1, 1));\n  }\n\n  private resetState (): void {\n    // 清理纹理资源\n    this.disposeTextTexture();\n\n    // 重置状态变量\n    this.isDirty = true;\n    this.lineCount = 0;\n    this.maxLineWidth = 0;\n  }\n\n  // 在 TextComponent 类内新增覆盖 setText\n  setText (value: string): void {\n    if (this.text === value) {\n      return;\n    }\n    this.text = value.toString();\n    // 设置文本后立即重算行数\n    this.lineCount = this.getLineCount(this.text);\n    this.isDirty = true;\n  }\n\n  /**\n   * 根据配置更新文本样式和布局\n   */\n  updateWithOptions (options: spec.TextContentOptions): void {\n    // 初始化 textStyle 和 textLayout\n    if (!this.textStyle) {\n      this.textStyle = new TextStyle(options);\n    } else {\n      this.textStyle.update(options);\n    }\n\n    if (!this.textLayout) {\n      this.textLayout = new TextLayout(options);\n    } else {\n      this.textLayout.update(options);\n    }\n\n    this.text = options.text.toString();\n    this.lineCount = this.getLineCount(options.text);\n  }\n\n  getLineCount (text: string): number {\n    const context = this.context;\n    const { letterSpace, overflow } = this.textLayout;\n\n    this.maxLineWidth = 0;\n    const width = (this.textLayout.width + this.textStyle.fontOffset);\n    let lineCount = 1;\n    let x = 0;\n    let charCountInLine = 0; // 跟踪当前行的字符数\n\n    // 设置 context.font 的字号，确保 measureText 能正确计算字宽\n    if (context) {\n      context.font = this.getFontDesc(this.textStyle.fontSize);\n    }\n    for (let i = 0; i < text.length; i++) {\n      const str = text[i];\n      const textMetrics = context?.measureText(str)?.width ?? 0;\n\n      // 和浏览器行为保持一致\n      // 字符间距只应用在字符之间，每行第一个字符不加间距\n      if (charCountInLine > 0) {\n        x += letterSpace;\n      }\n      // 处理文本结束行为\n      if (overflow === spec.TextOverflow.display) {\n        if (str === '\\n') {\n          lineCount++;\n          x = 0;\n          charCountInLine = 0; // 重置行字符计数\n        } else {\n          x += textMetrics;\n          charCountInLine++;\n          this.maxLineWidth = Math.max(this.maxLineWidth, x);\n        }\n      } else {\n        if (((x + textMetrics) > width && i > 0) || str === '\\n') {\n          lineCount++;\n          this.maxLineWidth = Math.max(this.maxLineWidth, x);\n          x = 0;\n          charCountInLine = 0; // 重置行字符计数\n        }\n        if (str !== '\\n') {\n          x += textMetrics;\n          charCountInLine++;\n        }\n      }\n    }\n\n    return lineCount;\n  }\n\n  /**\n   * 设置行高\n   * 行高表示每行占用的总高度\n   * @param value - 行高像素值\n   */\n  setLineHeight (value: number): void {\n    const fontSize = this.textStyle.fontSize;\n    //设置行高不能小于字号大小\n    const safe = Math.max(fontSize, value);\n\n    if (this.textLayout.lineHeight === safe) {\n      return;\n    }\n\n    this.textLayout.lineHeight = safe;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置字重\n   * @param value - 字重类型\n   * @returns\n   */\n  setFontWeight (value: spec.TextWeight): void {\n    if (this.textStyle.textWeight === value) {\n      return;\n    }\n    this.textStyle.textWeight = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置字体样式\n   * @param value 设置字体样式\n   * @default \"normal\"\n   * @returns\n   */\n  setFontStyle (value: spec.FontStyle): void {\n    if (this.textStyle.fontStyle === value) {\n      return;\n    }\n    this.textStyle.fontStyle = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置文本水平布局\n   * @param value - 布局选项\n   * @returns\n   */\n  setTextAlign (value: spec.TextAlignment): void {\n    if (this.textLayout.textAlign === value) {\n      return;\n    }\n    this.textLayout.textAlign = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置文本颜色\n   * @param value - 颜色内容\n   * @returns\n   */\n  setTextColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.textColor === value) {\n      return;\n    }\n    this.textStyle.textColor = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置外描边文本颜色\n   * @param value - 颜色内容\n   * @returns\n   */\n  setOutlineColor (value: spec.RGBAColorValue): void {\n    if (this.textStyle.outlineColor === value) {\n      return;\n    }\n    this.textStyle.outlineColor = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置字体清晰度\n   * @param value - 字体清晰度\n   * @returns\n   */\n  setFontScale (value: number): void {\n    if (this.textStyle.fontScale === value) {\n      return;\n    }\n\n    this.textStyle.fontScale = value;\n    this.isDirty = true;\n  }\n\n  /**\n   * 更新文本\n   * @returns\n   */\n  protected updateTexture (flipY = true): void {\n    if (!this.isDirty || !this.context || !this.canvas) {\n      return;\n    }\n\n    const style = this.textStyle;\n    const layout = this.textLayout;\n    const fontScale = style.fontScale;\n\n    const baseWidth = (layout.width + style.fontOffset) * fontScale;\n    const finalHeight = layout.lineHeight * this.lineCount;\n\n    const fontSize = style.fontSize * fontScale;\n    const lineHeight = layout.lineHeight * fontScale;\n\n    style.fontDesc = this.getFontDesc(fontSize);\n    // 使用 Array.from 正确分割 Unicode 字符（包括 emoji）\n    const char = Array.from(this.text || '');\n\n    let baseHeight = 0;\n\n    if (layout.autoWidth) {\n      baseHeight = finalHeight * fontScale;\n      this.item.transform.size.set(1, finalHeight / layout.height);\n    } else {\n      baseHeight = layout.height * fontScale;\n    }\n\n    const { padL, padR, padT, padB } = this.getEffectPadding();\n    const hasEffect = (padL | padR | padT | padB) !== 0;\n\n    const texWidth = hasEffect ? Math.ceil(baseWidth + padL + padR) : baseWidth;\n    const texHeight = hasEffect ? Math.ceil(baseHeight + padT + padB) : baseHeight;\n\n    const shiftX = hasEffect ? padL : 0;\n    const shiftY = hasEffect ? (flipY ? padT : padB) : 0;\n\n    // 给渲染层用：扩容比例\n    this.effectScaleX = baseWidth > 0 ? (texWidth / baseWidth) : 1;\n    this.effectScaleY = baseHeight > 0 ? (texHeight / baseHeight) : 1;\n\n    this.renderToTexture(texWidth, texHeight, flipY, context => {\n      // canvas size 变化后重新刷新 context\n      if (this.maxLineWidth > baseWidth && layout.overflow === spec.TextOverflow.display) {\n        context.font = this.getFontDesc(fontSize * baseWidth / this.maxLineWidth);\n      } else {\n        context.font = style.fontDesc;\n      }\n\n      // textColor 统一是 0-1，写入 canvas 时乘 255\n      const [r, g, b, a] = style.textColor;\n\n      context.fillStyle = `rgba(${r * 255}, ${g * 255}, ${b * 255}, ${a})`;\n\n      const charsInfo: CharInfo[] = [];\n      let x = 0;\n      let y = layout.getOffsetY(style, this.lineCount, lineHeight, fontSize);\n      let charsArray = [];\n      let charOffsetX = [];\n\n      for (let i = 0; i < char.length; i++) {\n        const str = char[i];\n        const textMetrics = context.measureText(str);\n\n        // 和浏览器行为保持一致\n        // 字符间距只应用在字符之间，每行第一个字符不加间距\n        if (charsArray.length > 0) {\n          x += layout.letterSpace * fontScale;\n        }\n\n        if (((x + textMetrics.width) > baseWidth && i > 0) || str === '\\n') {\n          charsInfo.push({\n            y,\n            width: x,\n            chars: charsArray,\n            charOffsetX,\n          });\n          x = 0;\n          y += lineHeight;\n          charsArray = [];\n          charOffsetX = [];\n        }\n\n        if (str !== '\\n') {\n          charsArray.push(str);\n          charOffsetX.push(x);\n          x += textMetrics.width;\n        }\n      }\n\n      charsInfo.push({\n        y,\n        width: x,\n        chars: charsArray,\n        charOffsetX,\n      });\n\n      const hasOutline = style.isOutlined && style.outlineWidth > 0;\n\n      if (hasOutline) {\n        // 有描边：在描边时启用阴影\n        if (style.hasShadow) {\n          this.setupShadow();\n        }\n        this.setupOutline();\n\n        charsInfo.forEach(charInfo => {\n          const ox = layout.getOffsetX(style, charInfo.width);\n\n          for (let i = 0; i < charInfo.chars.length; i++) {\n            const str = charInfo.chars[i];\n            const drawX = shiftX + ox + charInfo.charOffsetX[i];\n            const drawY = shiftY + charInfo.y;\n\n            context.strokeText(str, drawX, drawY);\n          }\n        });\n\n        // 描边完成后立即禁用阴影，避免填充时重复绘制阴影\n        if (style.hasShadow) {\n          context.shadowColor = 'transparent';\n        }\n      }\n\n      // 填充阶段：无描边时才启用阴影\n      if (!hasOutline && style.hasShadow) {\n        this.setupShadow();\n      }\n\n      charsInfo.forEach(charInfo => {\n        const ox = layout.getOffsetX(style, charInfo.width);\n\n        for (let i = 0; i < charInfo.chars.length; i++) {\n          const str = charInfo.chars[i];\n          const drawX = shiftX + ox + charInfo.charOffsetX[i];\n          const drawY = shiftY + charInfo.y;\n\n          context.fillText(str, drawX, drawY);\n        }\n      });\n\n      // 清理阴影状态\n      if (style.hasShadow) {\n        context.shadowColor = 'transparent';\n      }\n    });\n\n    this.isDirty = false;\n  }\n\n  renderText (options: spec.TextContentOptions) {\n    this.updateTexture();\n  }\n\n  /**\n   * 给渲染层用：获取特效扩容比例（描边/阴影导致的纹理扩容）\n   * @returns\n   */\n  public getTextureExpandScale (): [number, number] {\n    return [this.effectScaleX, this.effectScaleY];\n  }\n\n  /**\n   * 获取描边和阴影的 padding 值（单位：px）\n   * @returns\n   */\n  protected getEffectPadding () {\n    const style = this.textStyle;\n\n    const hasDrawOutline = style.isOutlined && style.outlineWidth > 0;\n    const outlinePad = hasDrawOutline ? Math.ceil(style.outlineWidth * 2 * style.fontScale) : 0;\n\n    const hasShadow = style.hasShadow && (style.shadowBlur > 0 || style.shadowOffsetX !== 0 || style.shadowOffsetY !== 0);\n    const shadowPad = hasShadow\n      ? Math.ceil((Math.abs(style.shadowOffsetX) + Math.abs(style.shadowOffsetY) + style.shadowBlur) * style.fontScale)\n      : 0;\n\n    const pad = outlinePad + shadowPad;\n\n    return { padL: pad, padR: pad, padT: pad, padB: pad };\n  }\n\n  setAutoWidth (value: boolean): void {\n    const layout = this.textLayout;\n    const normalizedValue = !!value;\n\n    if (layout.autoWidth === normalizedValue) {\n      return;\n    }\n    layout.autoWidth = normalizedValue;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置文本框宽度\n   * 手动设置宽度时会自动关闭 `autoWidth`\n   * 同时会按比例更新 `transform.size.x`，让 UI 框宽度也跟着变化\n   * @param value - 文本框宽度\n   */\n  setTextWidth (value: number): void {\n    const width = Math.max(0, Number(value) || 0);\n    const layout = this.textLayout;\n\n    // 宽度没变且已是非 autoWidth 模式,直接返回\n    if (layout.width === width && layout.autoWidth === false) {\n      return;\n    }\n\n    // 手动设置宽度时关闭 autoWidth\n    layout.autoWidth = false;\n    layout.width = width;\n\n    // 按当前 overflow 模式重新计算行数和 maxLineWidth\n    this.lineCount = this.getLineCount(this.text || '');\n    this.isDirty = true;\n\n    // 同步更新外层显示宽度(按比例缩放 transform)\n    // 这样 UI 框的视觉宽度也会跟着文本宽度变化\n    if (this.baseTextWidth > 0) {\n      const scale = width / this.baseTextWidth;\n\n      this.item.transform.size.x = this.baseScaleX * scale;\n    }\n  }\n\n  /**\n   * 设置文本框高度\n   * @param value - 文本框高度\n   */\n  setTextHeight (value: number): void {\n    const height = Math.max(0, Number(value) || 0);\n\n    if (height === 0) {\n      return;\n    }\n\n    const layout = this.textLayout;\n\n    if (layout.height === height) {\n      return;\n    }\n\n    layout.height = height;\n    this.isDirty = true;\n  }\n\n  setFontSize (value: number): void {\n    const size = Math.max(1, Number(value) || 1);\n\n    if (this.textStyle.fontSize === size) {\n      return;\n    }\n\n    this.textStyle.fontSize = size;\n    this.isDirty = true;\n  }\n\n  setOutlineWidth (value: number): void {\n    const v = Math.max(0, Number(value) || 0);\n\n    if (this.textStyle.outlineWidth === v) {\n      return;\n    }\n    this.textStyle.outlineWidth = v;\n    this.isDirty = true;\n  }\n\n  /**\n   * 设置是否启用文本描边\n   * @param value - 是否启用描边\n   * @returns\n   */\n  setOutlineEnabled (value: boolean): void {\n    if (this.textStyle.isOutlined === value) {\n      return;\n    }\n    this.textStyle.isOutlined = value;\n    this.isDirty = true;\n  }\n\n  setShadowBlur (value: number): void {\n    const v = Math.max(0, Number(value) || 0);\n\n    if (this.textStyle.shadowBlur === v) {\n      return;\n    }\n    this.textStyle.shadowBlur = v;\n    this.isDirty = true;\n  }\n\n  // setupShadow 使用 outlineColor 作为阴影颜色，更新 shadowColor 不影响阴影颜色\n  setShadowColor (value: spec.RGBAColorValue): void {\n    const v = value ?? [0, 0, 0, 1];\n\n    if (this.textStyle.shadowColor === v) {\n      return;\n    }\n    this.textStyle.shadowColor = v;\n    this.isDirty = true;\n  }\n\n  setShadowOffsetX (value: number): void {\n    const v = Number(value) || 0;\n\n    if (this.textStyle.shadowOffsetX === v) {\n      return;\n    }\n    this.textStyle.shadowOffsetX = v;\n    this.isDirty = true;\n  }\n\n  setShadowOffsetY (value: number): void {\n    const v = Number(value) || 0;\n\n    if (this.textStyle.shadowOffsetY === v) {\n      return;\n    }\n    this.textStyle.shadowOffsetY = v;\n    this.isDirty = true;\n  }\n}\n\napplyMixins(TextComponent, [TextComponentBase]);\n","import { Plugin } from '../index';\n\n// TODO: 注册必须用\nexport class TextLoader extends Plugin {\n}\n","import { EffectsObject } from './effects-object';\n\nexport class Asset<T> extends EffectsObject {\n  data: T;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { EffectsObject } from './effects-object';\nimport { effectsClass, serialize } from './decorators';\n\n@effectsClass(spec.DataType.BinaryAsset)\nexport class BinaryAsset extends EffectsObject {\n  @serialize()\n  buffer: ArrayBuffer;\n}\n","import type * as spec from '@galacean/effects-specification';\nimport { getMergedStore } from './decorators';\nimport { EffectsObject } from './effects-object';\nimport type { Engine } from './engine';\nimport type { Constructor } from './utils';\nimport { isArray, isCanvas, isObject, isPlainObject, isString } from './utils';\n\nexport class SerializationHelper {\n  static serialize (\n    effectsObject: EffectsObject,\n    serializedData?: Record<string, any>,\n  ) {\n    effectsObject.toData();\n\n    if (!serializedData) {\n      serializedData = {};\n    }\n\n    const serializedProperties = getMergedStore(effectsObject);\n\n    if (serializedProperties) {\n      for (const key of Object.keys(serializedProperties)) {\n        const value = effectsObject[key as keyof EffectsObject];\n\n        if (\n          typeof value === 'number' ||\n          typeof value === 'string' ||\n          typeof value === 'boolean' ||\n          SerializationHelper.checkTypedArray(value)\n        ) {\n          // TODO json 数据避免传 typedArray\n          serializedData[key] = value;\n        } else if (isArray(value)) {\n          if (!serializedData[key]) {\n            serializedData[key] = [];\n          }\n          SerializationHelper.serializeArrayProperty(value, serializedData[key], 0);\n        } else if (EffectsObject.is(value)) {\n          // TODO 处理 EffectsObject 递归序列化\n          serializedData[key] = { id: value.getInstanceId() };\n        } else if (isObject(value)) {\n          if (!serializedData[key]) {\n            serializedData[key] = {};\n          }\n          SerializationHelper.serializeObjectProperty(value, serializedData[key], 0);\n        }\n      }\n    }\n\n    // TODO 待移除 tagggedProperties 为没有装饰器的临时方案\n    for (const key of Object.keys(effectsObject.defination)) {\n      const value = effectsObject.defination[key];\n\n      if (\n        typeof value === 'number' ||\n        typeof value === 'string' ||\n        typeof value === 'boolean' ||\n        SerializationHelper.checkTypedArray(value)\n      ) {\n        // TODO json 数据避免传 typedArray\n        serializedData[key] = value;\n      } else if (isArray(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = [];\n        }\n        SerializationHelper.serializeArrayProperty(value, serializedData[key], 0);\n      } else if (EffectsObject.is(value)) {\n        // TODO 处理 EffectsObject 递归序列化\n        serializedData[key] = { id: value.getInstanceId() };\n      } else if (isObject(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = {};\n        }\n        SerializationHelper.serializeObjectProperty(value, serializedData[key], 0);\n      }\n    }\n\n    return serializedData;\n  }\n\n  static deserialize (\n    serializedData: spec.EffectsObjectData,\n    effectsObject: EffectsObject,\n  ) {\n    effectsObject.defination = serializedData;\n\n    const serializedProperties = getMergedStore(effectsObject);\n    const engine = effectsObject.engine;\n\n    if (serializedProperties) {\n      for (const key of Object.keys(serializedProperties)) {\n        const value = serializedData[key as keyof spec.EffectsObjectData];\n\n        if (value === undefined) {\n          continue;\n        }\n\n        const propertyType = serializedProperties[key].type;\n\n        // FIXME: taggedProperties 为 readonly，这里存在强制赋值\n        effectsObject[key as keyof EffectsObject] = SerializationHelper.deserializeProperty(value, engine, 0, propertyType);\n      }\n    }\n    effectsObject.fromData(effectsObject.defination as spec.EffectsObjectData);\n  }\n\n  static checkTypedArray (obj: unknown): boolean {\n    return obj instanceof Int8Array\n      || obj instanceof Uint8Array\n      || obj instanceof Uint8ClampedArray\n      || obj instanceof Int16Array\n      || obj instanceof Uint16Array\n      || obj instanceof Int32Array\n      || obj instanceof Uint32Array\n      || obj instanceof Float32Array\n      || obj instanceof Float64Array\n      || obj instanceof ArrayBuffer;\n  }\n\n  // check value is { id: 7e69662e964e4892ae8933f24562395b }\n  static checkDataPath (value: unknown): value is spec.DataPath {\n    return !!(isObject(value)\n      && Object.keys(value).length === 1\n      && 'id' in value\n      && isString(value.id));\n  }\n\n  // TODO 测试函数，2.0 上线后移除\n  static checkGLTFNode (value: any): boolean {\n    return isObject(value)\n      && value.nodeIndex !== undefined\n      && value.isJoint !== undefined;\n  }\n\n  static checkImageSource (value: HTMLCanvasElement): boolean {\n    return isCanvas(value) || value instanceof HTMLImageElement;\n  }\n\n  private static deserializeProperty<T> (\n    property: T,\n    engine: Engine,\n    level: number,\n    type?: Constructor<{}>,\n    overrideDataPath = true\n  ): any {\n    if (level > 14) {\n      console.error('The nested object layers of the serialized data exceed the maximum limit.');\n\n      return;\n    }\n    // 加载并链接 DataPath 字段表示的 EffectsObject 引用。Class 对象 copy [key, value] 会丢失对象信息，因此只递归数组对象和普通 js Object 结构对象。\n    if (isArray(property)) {\n      const res = [];\n\n      for (const value of property) {\n        res.push(SerializationHelper.deserializeProperty(value, engine, level + 1, type, overrideDataPath));\n      }\n\n      return res;\n      // TODO json 数据避免传 typedArray\n    } else if (SerializationHelper.checkDataPath(property)) {\n      const referenceObject = engine.findObject(property);\n\n      return overrideDataPath ? referenceObject : property;\n    } else if (isPlainObject(property)) {\n      let res: Record<string, EffectsObject>;\n\n      if (type) {\n        res = new type();\n      } else {\n        res = {};\n      }\n      for (const key of Object.keys(property)) {\n        res[key] = SerializationHelper.deserializeProperty(property[key], engine, level + 1, undefined, overrideDataPath);\n      }\n\n      return res;\n    } else {\n      return property;\n    }\n  }\n\n  private static serializeObjectProperty (\n    objectProperty: Record<string, unknown>,\n    serializedData: Record<string, unknown>,\n    level: number,\n  ) {\n    if (level > 14) {\n      console.error('The nested object layers of the serialized data exceed the maximum limit.');\n\n      return;\n    }\n    if (!serializedData) {\n      serializedData = {};\n    }\n\n    for (const key of Object.keys(objectProperty)) {\n      const value = objectProperty[key];\n\n      if (\n        typeof value === 'number' ||\n        typeof value === 'string' ||\n        typeof value === 'boolean' ||\n        SerializationHelper.checkTypedArray(objectProperty)\n      ) {\n        // TODO json 数据避免传 typedArray\n        serializedData[key] = value;\n      } else if (isArray(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = [];\n        }\n        SerializationHelper.serializeArrayProperty(\n          value,\n          serializedData[key] as unknown[],\n          level + 1,\n        );\n      } else if (EffectsObject.is(value)) {\n        // TODO 处理 EffectsObject 递归序列化\n        serializedData[key] = { id: value.getInstanceId() };\n      } else if (isObject(value)) {\n        if (!serializedData[key]) {\n          serializedData[key] = {};\n        }\n        SerializationHelper.serializeObjectProperty(\n          value,\n          serializedData[key] as Record<string, unknown>,\n          level + 1,\n        );\n      }\n    }\n  }\n\n  private static serializeArrayProperty (\n    arrayProperty: unknown[],\n    serializedData: unknown[],\n    level: number,\n  ) {\n    if (level > 14) {\n      console.error('The nested object layers of the serialized data exceed the maximum limit.');\n\n      return;\n    }\n    if (!serializedData) {\n      serializedData = [];\n    }\n\n    for (let i = 0; i < arrayProperty.length; i++) {\n      const value = arrayProperty[i];\n\n      if (\n        typeof value === 'number' ||\n        typeof value === 'string' ||\n        typeof value === 'boolean' ||\n        SerializationHelper.checkTypedArray(arrayProperty)\n      ) {\n        // TODO json 数据避免传 typedArray\n        serializedData[i] = value;\n      } else if (isArray(value)) {\n        if (!serializedData[i]) {\n          serializedData[i] = [];\n        }\n        SerializationHelper.serializeArrayProperty(\n          value,\n          serializedData[i] as unknown[],\n          level + 1,\n        );\n      } else if (EffectsObject.is(value)) {\n        // TODO 处理 EffectsObject 递归序列化\n        serializedData[i] = { id: value.getInstanceId() };\n      } else if (isObject(value)) {\n        if (!serializedData[i]) {\n          serializedData[i] = {};\n        }\n        SerializationHelper.serializeObjectProperty(\n          value,\n          serializedData[i] as Record<string, unknown>,\n          level + 1,\n        );\n      }\n    }\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { getClass } from './decorators';\nimport type { EffectsObject } from './effects-object';\nimport type { Engine } from './engine';\nimport { Material } from './material';\nimport { Geometry } from './render';\nimport { SerializationHelper } from './serialization-helper';\nimport { Texture } from './texture';\n\n/**\n * @since 2.0.0\n */\nexport class AssetLoader {\n  constructor (\n    private engine: Engine,\n  ) { }\n\n  loadGUID<T> (dataPath: spec.DataPath): T {\n    if (!dataPath) {\n      return null as T;\n    }\n\n    const guid = dataPath.id;\n    const effectsObjectData = this.findData(guid);\n    let effectsObject: EffectsObject | undefined;\n\n    if (!effectsObjectData) {\n      console.error(`Object data with uuid: ${guid} not found.`);\n\n      return undefined as T;\n    }\n\n    switch (effectsObjectData.dataType) {\n      case spec.DataType.Material:\n        effectsObject = Material.create(this.engine);\n\n        break;\n      case spec.DataType.Geometry:\n        effectsObject = Geometry.create(this.engine);\n\n        break;\n      case spec.DataType.Texture:\n        effectsObject = Texture.create(this.engine);\n\n        break;\n      default: {\n        const classConstructor = getClass(effectsObjectData.dataType);\n\n        if (classConstructor) {\n          effectsObject = new classConstructor(this.engine);\n        }\n      }\n    }\n\n    if (!effectsObject) {\n      console.error(`Constructor for DataType: ${effectsObjectData.dataType} not found.`);\n\n      return undefined as T;\n    }\n\n    effectsObject.setInstanceId(effectsObjectData.id);\n    this.engine.addInstance(effectsObject);\n    SerializationHelper.deserialize(effectsObjectData, effectsObject);\n\n    return effectsObject as T;\n  }\n\n  private findData (uuid: string): spec.EffectsObjectData | undefined {\n    return this.engine.jsonSceneData[uuid];\n  }\n}\n\nexport class Database {\n  async loadGUID (guid: string): Promise<EffectsObject | undefined> {\n    return undefined;\n  }\n}\n\n// TODO: 待统一\nexport interface EffectComponentData extends spec.EffectsObjectData {\n  _priority: number,\n  item: spec.DataPath,\n  materials: spec.DataPath[],\n  geometry: spec.DataPath,\n}\n\nexport type VFXItemData = spec.Item & {\n  dataType: spec.DataType,\n  components: spec.DataPath[],\n};\n\nexport type SceneData = Record<string, spec.EffectsObjectData>;\n\n","import type {\n  FixedNumberExpression, RGBAColorValue, ColorExpression, NumberExpression, GradientColor,\n  GradientStop, FixedVec3Expression, vec2, vec3, vec4, BezierKeyframeValue,\n} from '@galacean/effects-specification';\nimport { BezierKeyframeType, ValueType, ParticleOrigin } from '@galacean/effects-specification';\n\nexport function arrAdd<T> (arr: T[], item: T): boolean | undefined {\n  if (!arr.includes(item)) {\n    arr.push(item);\n\n    return true;\n  }\n}\n\nexport function ensureFixedNumber (a: any): FixedNumberExpression | undefined {\n  if (Number.isFinite(a)) {\n    return [ValueType.CONSTANT, a];\n  }\n  if (a) {\n    const valueType = a[0];\n    const valueData = a[1];\n\n    if (Array.isArray(valueType)) {\n      // 没有数据类型的数据\n      return;\n    }\n\n    if (valueType === 'static' || valueType === ValueType.CONSTANT) {\n      return [ValueType.CONSTANT, a[1]];\n    }\n    if (valueType === 'lines') {\n      return [ValueType.LINE, a[1]];\n    }\n    if (valueType === ValueType.LINE) {\n      // @ts-expect-error\n      const keyframes: LineKeyframeValue[] = valueData.map(data => [BezierKeyframeType.LINE, data]);\n\n      return [ValueType.BEZIER_CURVE, keyframes];\n    }\n    if (valueType === 'curve' || valueType === ValueType.CURVE) {\n      return [ValueType.BEZIER_CURVE, getBezierCurveFromHermiteInGE(valueData)];\n    }\n\n    return a;\n  }\n}\n\nexport function ensureFixedNumberWithRandom (a: any, p: number): FixedNumberExpression | undefined {\n  if (Array.isArray(a) && a[0] === 'random') {\n    return [ValueType.CONSTANT, a[1][p]];\n  }\n\n  return ensureFixedNumber(a);\n}\n\nexport function ensureRGBAValue (a: any): RGBAColorValue {\n  if (a && a[0] === 'color') {\n    return colorToArr(a[1], true);\n  }\n\n  return [1, 1, 1, 1];\n}\n\nexport function ensureColorExpression (a: any, normalized?: boolean): ColorExpression | undefined {\n  if (a) {\n    if (a[0] === 'colors') {\n      return [ValueType.COLORS, a[1].map((color: any) => colorToArr(color, normalized))];\n    } else if (a[0] === 'gradient') {\n      return ensureGradient(a[1], normalized);\n    } else if (a[0] === 'color') {\n      return [ValueType.RGBA_COLOR, colorToArr(a[1], normalized)];\n    }\n\n    return a;\n  }\n}\n\nexport function ensureNumberExpression (a: any): NumberExpression | undefined {\n  if (a && a[0] === 'random') {\n    return [ValueType.RANDOM, a[1]];\n  }\n\n  return ensureFixedNumber(a);\n}\n\nexport function ensureValueGetter (a: any): any {\n  if (Array.isArray(a) && typeof a[0] === 'string') {\n    return ensureNumberExpression(a) || ensureFixedVec3(a) || ensureColorExpression(a) || a;\n  }\n\n  return a;\n}\n\nexport function ensureGradient (a: any, normalized?: boolean): GradientColor | undefined {\n  if (a) {\n    let stops: GradientStop[] = [];\n\n    Object.getOwnPropertyNames(a).forEach(p => {\n      const stop = parsePercent(p);\n      const color = colorToArr(a[p], normalized);\n\n      stops.push([stop, color[0], color[1], color[2], color[3]]);\n    });\n    stops = stops.sort((a, b) => a[0] - b[0]);\n\n    return [ValueType.GRADIENT_COLOR, stops];\n  }\n}\n\nexport function colorToArr (hex: string | number[], normalized?: boolean): vec4 {\n  let ret: vec4;\n\n  if (typeof hex === 'string') {\n    hex = hex.replace(/[\\s\\t\\r\\n]/g, '');\n    let m = /rgba?\\(([.\\d]+),([.\\d]+),([.\\d]+),?([.\\d]+)?\\)/.exec(hex);\n\n    if (m) {\n      const a = +m[4];\n\n      ret = [+m[1], +m[2], +m[3], isNaN(a) ? 255 : Math.round(a * 255)];\n    } else if (/^#[a-f\\d]{3}$/i.test(hex)) {\n      ret = [parseInt(hex[1] + hex[1], 16), parseInt(hex[2] + hex[2], 16), parseInt(hex[3] + hex[3], 16), 255];\n      // eslint-disable-next-line no-cond-assign\n    } else if (m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)) {\n      ret = [parseInt(m[1], 16), parseInt(m[2], 16), parseInt(m[3], 16), 255];\n    }\n  } else if (hex instanceof Array) {\n    ret = [hex[0], hex[1], hex[2], isNaN(hex[3]) ? 255 : Math.round(hex[3] * 255)];\n  }\n\n  if (normalized) {\n    // @ts-expect-error\n    ret = normalizeColor(ret) as unknown as vec4;\n  }\n\n  // @ts-expect-error\n  return ret;\n}\n\nexport function normalizeColor (a: number[]): number[] | undefined {\n  if (Array.isArray(a)) {\n    return a.map(i => Number.isFinite(i / 255) ? Number((i / 255).toFixed(6)) : 0);\n  }\n}\n\nexport function parsePercent (c: string): number {\n  const match = /^(-)?([\\d+.]+)%$/.exec(c);\n\n  if (match) {\n    return +match[2] / 100 * (match[1] ? -1 : 1);\n  }\n\n  return +c;\n}\n\nexport function getGradientColor (color: string | Array<string | number[]> | GradientColor, normalized?: boolean): GradientColor | undefined {\n  if (Array.isArray(color)) {\n    if (color[0] === ValueType.GRADIENT_COLOR) {\n      return color as GradientColor;\n    }\n\n    // @ts-expect-error\n    return (color[0] === 'gradient' || color[0] === 'color') && ensureGradient(color[1], normalized);\n  } else {\n    return ensureGradient(color, normalized);\n  }\n}\n\nexport function ensureFixedVec3 (a: any): FixedVec3Expression | undefined {\n  if (a) {\n    if (a.length === 3) {\n      return [ValueType.CONSTANT_VEC3, a];\n    }\n    const valueType = a[0];\n\n    if (\n      valueType === 'path' ||\n      valueType === 'bezier' ||\n      valueType === ValueType.BEZIER_PATH ||\n      valueType === ValueType.LINEAR_PATH\n    ) {\n      const valueData = a[1];\n      const easing = valueData[0];\n      const points = valueData[1];\n      let controlPoints = valueData[2];\n      const bezierEasing = getBezierCurveFromHermiteInGE(easing);\n\n      // linear path没有controlPoints\n      if (!controlPoints) {\n        controlPoints = [];\n        for (let keyframeIndex = 0; keyframeIndex < points.length; keyframeIndex++) {\n          const point = points[keyframeIndex].slice();\n\n          if (keyframeIndex === 0) {\n            controlPoints.push(point);\n          } else if (keyframeIndex < points.length - 1) {\n            controlPoints.push(point);\n            controlPoints.push(point);\n          } else {\n            controlPoints.push(point);\n          }\n        }\n      }\n\n      return [ValueType.BEZIER_CURVE_PATH, [bezierEasing, points, controlPoints]];\n    }\n\n    return a;\n  }\n}\n\nexport function objectValueToNumber (o: Record<string, any>): object {\n  for (const key of Object.keys(o)) {\n    o[key] = Number(o[key]);\n  }\n\n  return o;\n}\n\nexport function deleteEmptyValue (o: Record<string, any>): object {\n  for (const key of Object.keys(o)) {\n    if (o[key] === undefined) {\n      delete o[key];\n    }\n  }\n\n  return o;\n}\n\nconst cos = Math.cos;\nconst sin = Math.sin;\nconst d2r = Math.PI / 180;\nconst r2d = 180 / Math.PI;\n\nexport function quatFromXYZRotation (out: vec4 | number[], x: number, y: number, z: number): vec4 {\n  const c1 = cos((x * d2r) / 2);\n  const c2 = cos((y * d2r) / 2);\n  const c3 = cos((z * d2r) / 2);\n\n  const s1 = sin((x * d2r) / 2);\n  const s2 = sin((y * d2r) / 2);\n  const s3 = sin((z * d2r) / 2);\n\n  out[0] = s1 * c2 * c3 + c1 * s2 * s3;\n  out[1] = c1 * s2 * c3 - s1 * c2 * s3;\n  out[2] = c1 * c2 * s3 + s1 * s2 * c3;\n  out[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n  return out as vec4;\n}\n\nfunction clamp (v: number, min: number, max: number): number {\n  return v > max ? max : (v < min ? min : v);\n}\n\nexport function rotationZYXFromQuat (out: vec3 | number[], quat: vec4): vec3 {\n  const x = quat[0];\n  const y = quat[1];\n  const z = quat[2];\n  const w = quat[3];\n  const x2 = x + x;\n  const y2 = y + y;\n  const z2 = z + z;\n  const xx = x * x2;\n  const yx = y * x2;\n  const yy = y * y2;\n  const zx = z * x2;\n  const zy = z * y2;\n  const zz = z * z2;\n  const wx = w * x2;\n  const wy = w * y2;\n  const wz = w * z2;\n  const m11 = 1 - yy - zz, m12 = yx - wz, _m13 = zx + wy;\n  const m21 = yx + wz, m22 = 1 - xx - zz, _m23 = zy - wx;\n  const m31 = zx - wy, m32 = zy + wx, m33 = 1 - xx - yy;\n\n  out[1] = Math.asin(clamp(-m31, -1, 1)) * r2d;\n  if (Math.abs(m31) < 0.9999999) {\n    out[0] = Math.atan2(m32, m33) * r2d;\n    out[2] = Math.atan2(m21, m11) * r2d;\n  } else {\n    out[0] = 0;\n    out[2] = Math.atan2(-m12, m22) * r2d;\n  }\n\n  return out as vec3;\n}\n\n/**\n * 提取并转换 JSON 数据中的 anchor 值\n */\nexport function convertAnchor (\n  anchor?: vec2,\n  particleOrigin?: ParticleOrigin,\n): vec2 {\n  if (anchor) {\n    return [anchor[0] - 0.5, 0.5 - anchor[1]];\n  } else if (particleOrigin) {\n    return particleOriginTranslateMap[particleOrigin];\n  } else {\n    return [0, 0];\n  }\n}\n\nexport const particleOriginTranslateMap: Record<number, vec2> = {\n  [ParticleOrigin.PARTICLE_ORIGIN_CENTER]: [0, 0],\n  [ParticleOrigin.PARTICLE_ORIGIN_CENTER_BOTTOM]: [0, -0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_CENTER_TOP]: [0, 0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_LEFT_TOP]: [-0.5, 0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_LEFT_CENTER]: [-0.5, 0],\n  [ParticleOrigin.PARTICLE_ORIGIN_LEFT_BOTTOM]: [-0.5, -0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_RIGHT_CENTER]: [0.5, 0],\n  [ParticleOrigin.PARTICLE_ORIGIN_RIGHT_BOTTOM]: [0.5, -0.5],\n  [ParticleOrigin.PARTICLE_ORIGIN_RIGHT_TOP]: [0.5, 0.5],\n};\nfunction getBezierCurveFromHermite (m0: number, m1: number, p0: number[], p3: number[]) {\n  const xStart = p0[0];\n  const yStart = p0[1];\n  const xEnd = p3[0];\n  const yEnd = p3[1];\n  const dt = xEnd - xStart;\n\n  m0 = m0 * dt;\n  m1 = m1 * dt;\n  const bezierControlPoints = [[xStart + (xEnd - xStart) / 3, yStart + m0 / 3], [xEnd - (xEnd - xStart) / 3, yEnd - m1 / 3]];\n\n  return bezierControlPoints;\n}\n\nexport function getBezierCurveFromHermiteInGE (geHermiteCurves: number[][]): BezierKeyframeValue[] {\n  let ymax = -1000000;\n  let ymin = 1000000;\n\n  for (let i = 0; i < geHermiteCurves.length; i++) {\n    ymax = Math.max(ymax, geHermiteCurves[i][1]);\n    ymin = Math.min(ymin, geHermiteCurves[i][1]);\n  }\n  const geBezierCurves = [[geHermiteCurves[0][0], geHermiteCurves[0][1]]];\n\n  for (let i = 0; i < geHermiteCurves.length - 1; i++) {\n    const m0 = geHermiteCurves[i][3] * (ymax - ymin);\n    const m1 = geHermiteCurves[i + 1][2] * (ymax - ymin);\n    const p0 = [geHermiteCurves[i][0], geHermiteCurves[i][1]];\n    const p3 = [geHermiteCurves[i + 1][0], geHermiteCurves[i + 1][1]];\n\n    if (p0[0] != p3[0]) {\n      const bezierControlPoints = getBezierCurveFromHermite(m0, m1, p0, p3);\n      const p1 = bezierControlPoints[0];\n      const p2 = bezierControlPoints[1];\n\n      geBezierCurves[geBezierCurves.length - 1].push(p1[0]);\n      geBezierCurves[geBezierCurves.length - 1].push(p1[1]);\n      geBezierCurves.push([p2[0], p2[1], p3[0], p3[1]]);\n    } else {\n      geBezierCurves[geBezierCurves.length - 1].push(p3[0]);\n      geBezierCurves[geBezierCurves.length - 1].push(p3[1]);\n    }\n  }\n\n  // 添加关键帧类型\n  return geBezierCurves.map((curve, index) => {\n    return index === 0 ? [BezierKeyframeType.EASE_OUT, curve as [number, number, number, number]]\n      : index === geBezierCurves.length - 1 ? [BezierKeyframeType.EASE_IN, curve as [number, number, number, number]]\n        : [BezierKeyframeType.EASE, curve as [number, number, number, number, number, number]];\n  });\n}\n","import type { CameraContent, CameraPositionOverLifetime, RotationOverLifetime } from '@galacean/effects-specification';\nimport { deleteEmptyValue, ensureFixedNumber, ensureFixedVec3 } from './utils';\n\nexport function getStandardCameraContent (model: any): CameraContent {\n  const opt = model.options;\n  const ret: CameraContent = {\n    options: {\n      fov: opt.fov!,\n      far: opt.far!,\n      near: opt.near!,\n      clipMode: opt.clipMode,\n    },\n  };\n\n  const velocityOverLifetime = model.velocityOverLifetime;\n\n  if (velocityOverLifetime || model.transform?.path) {\n    const positionOverLifetime: CameraPositionOverLifetime = {\n      path: ensureFixedVec3(model.transform?.path),\n      linearX: ensureFixedNumber(velocityOverLifetime?.translateX),\n      linearY: ensureFixedNumber(velocityOverLifetime?.translateY),\n      linearZ: ensureFixedNumber(velocityOverLifetime?.translateZ),\n    };\n\n    deleteEmptyValue(positionOverLifetime);\n    ret.positionOverLifetime = positionOverLifetime;\n  }\n\n  const rol = model.rotationOverLifetime;\n\n  if (rol) {\n    const rotationOverLifetime: RotationOverLifetime = {\n      separateAxes: rol.separateAxes,\n      x: ensureFixedNumber(rol?.rotateX),\n      y: ensureFixedNumber(rol?.rotateY),\n      z: rol.separateAxes ? ensureFixedNumber(rol?.rotateZ) : ensureFixedNumber(rol.rotation),\n    };\n\n    deleteEmptyValue(rotationOverLifetime);\n    ret.rotationOverLifetime = rotationOverLifetime;\n  }\n\n  return ret;\n}\n","import type { InteractContent, InteractOption } from '@galacean/effects-specification';\nimport { InteractType, InteractBehavior } from '@galacean/effects-specification';\nimport { ensureRGBAValue } from './utils';\n\nexport function getStandardInteractContent (ui: any): InteractContent {\n  const options = ui.options;\n  let option: InteractOption;\n\n  switch (options.type) {\n    case 'click': {\n      option = {\n        type: InteractType.CLICK,\n        showPreview: options.showPreview,\n        previewColor: options.previewColor && ensureRGBAValue(options.previewColor),\n        behavior: options.behavior || InteractBehavior.NOTIFY,\n      };\n\n      break;\n    }\n    case 'drag': {\n      option = {\n        type: InteractType.DRAG,\n        enableInEditor: !!options.enableInEditor,\n        dxRange: options.dxRange,\n        dyRange: options.dyRange,\n        target: options.target,\n      };\n\n      break;\n    }\n    case 'message': {\n      option = {\n        type: InteractType.MESSAGE,\n      };\n\n      break;\n    }\n    default: {\n      break;\n    }\n  }\n\n  const ret: InteractContent = {\n    // @ts-expect-error\n    options: option,\n  };\n\n  return ret;\n}\n","import * as spec from '@galacean/effects-specification';\nimport type {\n  BaseContent, BinaryFile, CompositionData, Item, JSONScene, JSONSceneLegacy, SpineResource,\n  SpineContent, TimelineAssetData, CustomShapeData, ShapeComponentData, CompositionContent,\n} from '@galacean/effects-specification';\nimport {\n  DataType, END_BEHAVIOR_PAUSE, END_BEHAVIOR_PAUSE_AND_DESTROY, EndBehavior, ItemType,\n  JSONSceneVersion, ShapePrimitiveType,\n} from '@galacean/effects-specification';\nimport { MaskMode } from '../material';\nimport { generateGUID } from '../utils';\nimport { convertAnchor, ensureFixedNumber, ensureFixedVec3 } from './utils';\nimport { getGeometryByShape } from '../shape/geometry';\n/**\n * 2.1 以下版本数据适配（mars-player@2.4.0 及以上版本支持 2.1 以下数据的适配）\n */\nexport function version21Migration (json: JSONSceneLegacy): JSONSceneLegacy {\n  json.compositions.forEach(composition => {\n    composition.items.forEach(item => {\n      if (item.type === ItemType.null) {\n        if (item.endBehavior === EndBehavior.destroy) {\n          item.endBehavior = EndBehavior.freeze;\n        }\n      }\n    });\n  });\n\n  json.version = JSONSceneVersion['2_1'];\n\n  return json;\n}\n\n/**\n * 2.2 以下版本数据适配（mars-player@2.5.0 及以上版本支持 2.2 以下数据的适配）\n */\nexport function version22Migration (json: JSONSceneLegacy): JSONSceneLegacy {\n  const singleVersion = json.version?.split('.');\n\n  if (!singleVersion || Number(singleVersion[0]) > 2 || (Number(singleVersion[0]) === 2 && Number(singleVersion[1]) >= 2)) {\n    return json;\n  }\n\n  json.compositions.forEach(composition => {\n    composition.items.forEach(item => {\n      if (item.type === ItemType.mesh || item.type === ItemType.light) {\n        item.endBehavior = item.endBehavior as unknown === 1 ? EndBehavior.destroy : item.endBehavior;\n      }\n    });\n  });\n\n  return json;\n}\n\nlet currentMaskComponent: string;\nconst componentMap: Map<string, spec.ComponentData> = new Map();\nconst itemMap: Map<string, spec.VFXItemData> = new Map();\n\n/**\n * 3.1 版本数据适配\n * - 富文本插件名称的适配\n */\nexport function version31Migration (json: JSONScene): JSONScene {\n  // Custom shape fill 属性位置迁移\n  for (const component of json.components) {\n    if (component.dataType === DataType.ShapeComponent) {\n      const shapeComponent = component as ShapeComponentData;\n\n      if (shapeComponent.type === ShapePrimitiveType.Custom) {\n        const customShapeComponent = shapeComponent as CustomShapeData;\n\n        //@ts-expect-error\n        if (customShapeComponent.shapes?.length > 0 && customShapeComponent.shapes[0].fill) {\n          // @ts-expect-error\n          customShapeComponent.fill = customShapeComponent.shapes[0].fill;\n        }\n\n        // easingIn 和 easingOut 绝对坐标转相对坐标\n        const easingInFlag = new Array(customShapeComponent.easingIns.length);\n        const easingOutFlag = new Array(customShapeComponent.easingOuts.length).fill(false);\n\n        for (const shape of customShapeComponent.shapes) {\n          for (const index of shape.indexes) {\n            const point = customShapeComponent.points[index.point];\n            const easingIn = customShapeComponent.easingIns[index.easingIn];\n            const easingOut = customShapeComponent.easingOuts[index.easingOut];\n\n            if (!easingInFlag[index.easingIn]) {\n              easingIn.x -= point.x;\n              easingIn.y -= point.y;\n              easingInFlag[index.easingIn] = true;\n            }\n            if (!easingOutFlag[index.easingOut]) {\n              easingOut.x -= point.x;\n              easingOut.y -= point.y;\n              easingOutFlag[index.easingOut] = true;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  json.version = JSONSceneVersion['3_2'];\n\n  return json;\n}\n\nexport function version32Migration (json: JSONScene): JSONScene {\n  componentMap.clear();\n  itemMap.clear();\n\n  const { compositions, items, components } = json;\n  // 处理旧蒙版数据\n\n  for (const component of components) {\n    componentMap.set(component.id, component);\n  }\n  for (const item of items) {\n    itemMap.set(item.id, item);\n  }\n\n  for (const comp of compositions) {\n    processContent(comp);\n  }\n\n  json.version = JSONSceneVersion['3_3'];\n\n  return json;\n}\n\nexport function version33Migration (json: JSONScene): JSONScene {\n  // 修正老版本数据中，富文本插件名称的问题\n  json.plugins?.forEach((plugin, index) => {\n    if (plugin === 'richtext') {\n      json.plugins[index] = 'rich-text';\n    }\n  });\n\n  // 老 shape 数据兼容\n  for (const item of json.items) {\n    if (item.type === spec.ItemType.sprite) {\n      const spriteComponent = componentMap.get(item.components[0].id) as spec.SpriteComponentData;\n\n      if (spriteComponent) {\n        const shape = spriteComponent.renderer.shape;\n        let shapeData;\n\n        if (Number.isInteger(shape)) {\n          // @ts-expect-error\n          shapeData = json.shapes?.[shape as number];\n        } else {\n          shapeData = shape;\n        }\n\n        spriteComponent.renderer.shape = shapeData;\n      }\n    }\n  }\n\n  // Composition id 转 guid, Composition 分离 CompositionComponent\n  const compositionId = json.compositionId;\n  const compositionIdToGUIDMap: Record<string, string> = {};\n\n  for (const composition of json.compositions) {\n    const guid = generateGUID();\n\n    compositionIdToGUIDMap[composition.id] = guid;\n    if (composition.id === compositionId) {\n      json.compositionId = guid;\n    }\n    composition.id = guid;\n\n    const compositionComponent = {\n      id: generateGUID(),\n      dataType: 'CompositionComponent',\n      //@ts-expect-error\n      items: composition.items,\n      //@ts-expect-error\n      timelineAsset: composition.timelineAsset,\n      //@ts-expect-error\n      sceneBindings: composition.sceneBindings,\n      item: { id: composition.id },\n    } as unknown as spec.ComponentData;\n\n    //@ts-expect-error\n    composition.timelineAsset = undefined;\n    //@ts-expect-error\n    composition.sceneBindings = undefined;\n    composition.components = [{ id: compositionComponent.id }];\n    json.components.push(compositionComponent);\n  }\n  // 预合成元素 refId 同步改为生成的合成 guid\n  for (const item of json.items) {\n    if (item.content) {\n      const compositionOptions = (item.content as CompositionContent).options;\n\n      if (compositionOptions && compositionOptions.refId !== undefined) {\n        compositionOptions.refId = compositionIdToGUIDMap[compositionOptions.refId];\n      }\n    }\n  }\n\n  json.version = JSONSceneVersion['3_4'];\n\n  return json;\n}\n\nexport function version34Migration (json: JSONScene): JSONScene {\n  const idToComponentMap: Record<string, spec.ComponentData> = {};\n\n  for (const componentData of json.components) {\n    idToComponentMap[componentData.id] = componentData;\n  }\n\n  // 修复合成组件的 item id 问题\n  for (const composition of json.compositions) {\n    for (const component of composition.components) {\n      const componentID = (component).id;\n\n      idToComponentMap[componentID].item.id = composition.id;\n    }\n  }\n\n  // 兼容老 Shape 资源\n  for (const componentData of json.components) {\n    if (componentData.dataType === spec.DataType.SpriteComponent) {\n      const spriteComponentData = componentData as spec.SpriteComponentData;\n      const renderer = spriteComponentData.renderer;\n      const shapeData = renderer.shape as spec.ShapeGeometry;\n\n      if (shapeData !== undefined && shapeData !== null && !('aPoint' in shapeData && 'index' in shapeData)) {\n        const geometryData = createGeometryDataByShape(shapeData);\n\n        //@ts-expect-error\n        spriteComponentData.geometry = { id: geometryData.id };\n        json.geometries.push(geometryData);\n      }\n    }\n\n    if (componentData.dataType === spec.DataType.ShapeComponent) {\n      const shapeComponentData = componentData as ShapeComponentData;\n\n      shapeComponentData.fills = [];\n      //@ts-expect-error\n      if (shapeComponentData.fill) {\n        const solidPaintData: spec.SolidPaintData = {\n          type: spec.FillType.Solid,\n          //@ts-expect-error\n          color: shapeComponentData.fill.color,\n        };\n\n        shapeComponentData.fills.push(solidPaintData);\n      }\n      //@ts-expect-error\n      delete shapeComponentData.fill;\n\n      shapeComponentData.strokes = [];\n      //@ts-expect-error\n      if (shapeComponentData.stroke) {\n        const solidPaintData: spec.SolidPaintData = {\n          type: spec.FillType.Solid,\n          //@ts-expect-error\n          color: shapeComponentData.stroke.color,\n        };\n\n        shapeComponentData.strokes.push(solidPaintData);\n\n        //@ts-expect-error\n        shapeComponentData.strokeWidth = shapeComponentData.stroke.width;\n        //@ts-expect-error\n        shapeComponentData.strokeCap = shapeComponentData.stroke.cap;\n        //@ts-expect-error\n        shapeComponentData.strokeJoin = shapeComponentData.stroke.join;\n\n        //@ts-expect-error\n        delete shapeComponentData.stroke;\n      }\n    }\n  }\n\n  //@ts-expect-error\n  json.version = '3.5';\n\n  return json;\n}\n\nexport function version35Migration (json: JSONScene): JSONScene {\n  // 处理富文本 lineGap 兼容性\n  if (json.components) {\n    // 遍历所有组件，处理富文本组件\n    for (const component of json.components) {\n      // 识别富文本组件并处理 lineGap 兼容性\n      if (\n        component.dataType === spec.DataType.RichTextComponent\n      ) {\n        const richTextComponent = component as spec.RichTextComponentData;\n\n        if (richTextComponent.options) {\n          // 检查是否已经处理过\n          //@ts-expect-error\n          if (richTextComponent.options.useLegacyRichText === undefined) {\n            // 根据是否存在 lineGap 字段来判断版本\n            if (richTextComponent.options.lineGap === undefined) {\n              // 旧版本（没有 lineGap 字段）\n              //@ts-expect-error\n              richTextComponent.options.useLegacyRichText = true;\n            } else {\n              // 新版本（有 lineGap 字段）\n              //@ts-expect-error\n              richTextComponent.options.useLegacyRichText = false;\n            }\n          }\n        }\n      }\n      // 识别富文本组件并处理 textVerticalAlign 兼容性\n      if (\n        component.dataType === spec.DataType.TextComponent ||\n        (\n          component.dataType === spec.DataType.RichTextComponent &&\n          (component as spec.RichTextComponentData).options\n        )\n      ) {\n        ensureTextVerticalAlign((component as spec.RichTextComponentData).options);\n      }\n      // 处理文本颜色从 0-255 到 0-1 的转换\n      if (\n        component.dataType === spec.DataType.TextComponent\n      ) {\n        convertTextColorTo01((component as spec.TextComponentData).options);\n      }\n    }\n  }\n\n  //@ts-expect-error\n  json.version = '3.6';\n\n  return json;\n}\n\n/**\n * 确保文本组件有版本标识字段\n */\nfunction ensureTextVerticalAlign (options: any) {\n  // 检查是否已经处理过\n  if (!options || options.TextVerticalAlign !== undefined) {\n    return;\n  }\n\n  // 根据是否存在TextVerticalAlign字段来判断版本\n  if (options.TextVerticalAlign === undefined) {\n    //旧版本（没有 TextVerticalAlign 字段）\n    options.TextVerticalAlign = options.textBaseline;\n  }\n}\n\n/**\n * 将文本颜色从 0-255 转换到 0-1\n */\nfunction convertTextColorTo01 (options: spec.TextContentOptions) {\n  if (!options || !options.textColor) {\n    return;\n  }\n\n  const textColor = options.textColor;\n\n  // 将 RGB 从 0-255 转换到 0-1（alpha 通道已经是 0-1，不需要转换）\n  options.textColor = [\n    textColor[0] / 255.0,\n    textColor[1] / 255.0,\n    textColor[2] / 255.0,\n    textColor[3] ?? 1, // alpha 保持不变\n  ];\n}\n\n/**\n * 根据形状获取形状几何体数据\n * @param shape - 形状\n * @returns 形状几何体数据\n */\nfunction createGeometryDataByShape (shape: spec.ShapeGeometry, geometryDataName = '形状') {\n  const targetGeometry = getGeometryByShape(shape);\n  const { index = [], aPoint = [] } = targetGeometry;\n  const point = new Float32Array(aPoint);\n  const position = [];\n  const atlasOffset = [];\n\n  for (let i = 0; i < point.length; i += 6) {\n    atlasOffset.push(aPoint[i + 2], aPoint[i + 3]);\n    position.push(point[i], point[i + 1], 0.0);\n  }\n\n  // 用 position altasOffset index 创建GeometryData\n  const subMeshes: {\n    offset: number,\n    indexCount: number,\n    vertexCount: number,\n  }[] = [];\n  const vertexCount = position.length / 3;\n  const indexCount = index.length;\n  const positionByteLength = position.length * 4;\n  const uvByteLength = atlasOffset.length * 4;\n  const vertexByteLength = positionByteLength + uvByteLength;\n  const indexByteLength = index.length * 2;\n\n  const geometryData: spec.GeometryData = {\n    mode: spec.GeometryType.TRIANGLES,\n    vertexData: {\n      vertexCount,\n      channels: [],\n    },\n    name: geometryDataName,\n    indexFormat: spec.IndexFormatType.UInt16,\n    indexOffset: vertexByteLength,\n    buffer: '',\n    id: generateGUID(),\n    dataType: spec.DataType.Geometry,\n    subMeshes,\n  };\n\n  geometryData.vertexData.channels.push({\n    semantic: spec.VertexBufferSemantic.Position,\n    offset: 0,\n    format: spec.VertexFormatType.Float32,\n    dimension: 3,\n  });\n\n  geometryData.vertexData.channels.push({\n    semantic: spec.VertexBufferSemantic.Uv,\n    offset: positionByteLength,\n    format: spec.VertexFormatType.Float32,\n    dimension: 2,\n  });\n\n  geometryData.subMeshes.push({\n    offset: 0,\n    indexCount,\n    vertexCount,\n  });\n\n  const supByteLength = indexByteLength % 4 === 0 ? 0 : 2;\n  const infoBuffer = new ArrayBuffer(vertexByteLength + indexByteLength + supByteLength);\n  const vertexArray = new Float32Array(infoBuffer);\n\n  vertexArray.set(position, 0);\n  vertexArray.set(atlasOffset, position.length);\n\n  const indexArray = new Uint16Array(infoBuffer, vertexByteLength);\n\n  indexArray.set(index, 0);\n\n  const uint8View = new Uint8Array(infoBuffer).slice(0, vertexByteLength + indexByteLength);\n\n  geometryData.binaryData = uint8View;\n\n  return geometryData;\n}\n\nexport function processContent (composition: spec.CompositionData) {\n  //@ts-expect-error\n  for (const item of composition.items) {\n    const itemProps = itemMap.get(item.id);\n\n    if (!itemProps) {\n      return;\n    }\n\n    if (\n      itemProps.type === spec.ItemType.sprite ||\n      itemProps.type === spec.ItemType.particle ||\n      itemProps.type === spec.ItemType.spine ||\n      itemProps.type === spec.ItemType.text ||\n      itemProps.type === spec.ItemType.richtext ||\n      itemProps.type === spec.ItemType.video ||\n      itemProps.type === spec.ItemType.shape\n    ) {\n      const component = componentMap.get(itemProps.components[0].id);\n\n      if (component) {\n        processMask(component);\n      }\n    }\n  }\n}\n\nexport function processMask (renderContent: any) {\n  const renderer = renderContent.renderer;\n  const maskMode = renderer?.maskMode;\n\n  if (!maskMode || maskMode === MaskMode.NONE) {\n\n    return;\n  }\n\n  if (maskMode === MaskMode.MASK) {\n    renderContent.mask = {\n      isMask: true,\n    };\n    currentMaskComponent = renderContent.id;\n  } else if (\n    maskMode === spec.ObscuredMode.OBSCURED ||\n    maskMode === spec.ObscuredMode.REVERSE_OBSCURED\n  ) {\n    renderContent.mask = {\n      inverted: maskMode === spec.ObscuredMode.REVERSE_OBSCURED ? true : false,\n      reference: {\n        'id': currentMaskComponent,\n      },\n    };\n  }\n}\n\n/**\n * 3.0 以下版本数据适配（runtime 2.0及以上版本支持）\n */\nexport function version30Migration (json: JSONSceneLegacy): JSONScene {\n  const result: JSONScene = {\n    ...json,\n    items: [],\n    compositions: [],\n    components: [],\n    materials: [],\n    shaders: [],\n    geometries: [],\n    animations: [],\n    miscs: [],\n  };\n\n  // image数据添加 guid\n  for (const image of result.images) {\n    image.id = generateGUID();\n  }\n\n  // 兼容老版本数据中不存在textures的情况\n  result.textures ??= [];\n  result.textures.forEach(textureOptions => {\n    textureOptions.id = generateGUID();\n    textureOptions.dataType = DataType.Texture;\n    // @ts-expect-error\n    textureOptions.source = { id: result.images[textureOptions.source]?.id };\n  });\n\n  if (result.textures.length < result.images.length) {\n    for (let i = result.textures.length; i < result.images.length; i++) {\n      result.textures.push({\n        id: generateGUID(),\n        dataType: DataType.Texture,\n        source: { id: result.images[i].id },\n        flipY: true,\n      });\n    }\n  }\n\n  // 处理老版本数据中 bins 没有 id 的情况\n  if (json.bins) {\n    convertBinaryAsset(json.bins, result);\n  }\n\n  const itemOldIdToGuidMap: Record<string, string> = {};\n  const guidToItemMap: Record<string, Item> = {};\n\n  // 更正Composition.endBehavior\n  for (const composition of json.compositions) {\n    // composition 的 endBehavior 兼容\n    if (\n      // @ts-expect-error\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n      composition.endBehavior === END_BEHAVIOR_PAUSE_AND_DESTROY ||\n      // @ts-expect-error\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n      composition.endBehavior === END_BEHAVIOR_PAUSE\n    ) {\n      composition.endBehavior = EndBehavior.freeze;\n    }\n\n    // 过滤掉滤镜元素\n    composition.items = composition.items.filter(item => item.type !== '8' as ItemType);\n\n    // 过滤掉粒子滤镜（扭曲）\n    composition.items.forEach(item => {\n      if (item.type === ItemType.particle) {\n        // @ts-expect-error\n        const filterData = item.content['filter'];\n\n        if (filterData) {\n          // @ts-expect-error\n          delete item.content['filter'];\n        }\n      }\n    });\n\n    for (const item of composition.items) {\n      itemOldIdToGuidMap[item.id] = generateGUID();\n      // TODO: 编辑器测试用，上线后删除\n      //@ts-expect-error\n      item.oldId = item.id;\n      item.id = itemOldIdToGuidMap[item.id];\n      guidToItemMap[item.id] = item;\n    }\n\n    composition.items.forEach((item, index) => {\n      if (item.parentId) {\n        if (item.parentId.includes('^')) {\n          const parentId = (item.parentId).split('^')[0];\n          const nodeId = (item.parentId).split('^')[1];\n\n          item.parentId = itemOldIdToGuidMap[parentId] + '^' + nodeId;\n        } else {\n          item.parentId = itemOldIdToGuidMap[item.parentId];\n        }\n      }\n\n      // @ts-expect-error fix item type\n      result.items.push(item);\n\n      // @ts-expect-error fix item type\n      composition.items[index] = { id: item.id };\n    });\n\n    const compositionData: CompositionData = {\n      ...composition,\n      //@ts-expect-error\n      timelineAsset: { id: '' },\n      sceneBindings: [],\n    };\n\n    result.compositions.push(compositionData);\n    // 生成时间轴数据\n    convertTimelineAsset(compositionData, guidToItemMap, result);\n\n  }\n\n  for (const item of result.items) {\n    // 原 texture 索引转为统一 guid 索引\n    if (item.content) {\n      if (item.content.renderer) {\n        if (item.content.renderer.texture !== undefined) {\n          const oldTextureId = item.content.renderer.texture;\n\n          item.content.renderer.texture = { id: result.textures[oldTextureId].id };\n        }\n      }\n\n      if (item.content.trails) {\n        if (item.content.trails.texture !== undefined) {\n          const oldTextureId = item.content.trails.texture;\n\n          item.content.trails.texture = { id: result.textures[oldTextureId].id };\n        }\n      }\n    }\n\n    // item 的 transform 属性由数组转为 {x:n, y:n, z:n}\n    if (item.transform) {\n      //@ts-expect-error\n      const position = [...item.transform.position ?? [0, 0, 0]];\n      //@ts-expect-error\n      const rotation = [...item.transform.rotation ?? [0, 0, 0]] as number[];\n      //@ts-expect-error\n      const scale = [...item.transform.scale ?? [1, 1, 1]];\n\n      Object.assign(item, {\n        transform: {\n          position: { x: position[0], y: position[1], z: position[2] },\n          eulerHint: { x: rotation[0], y: rotation[1], z: rotation[2] },\n          scale: { x: scale[0], y: scale[1], z: scale[0] },\n        },\n      });\n\n      // sprite 的 scale 转为 size\n      if (item.type === ItemType.sprite) {\n        item.transform.size = { x: scale[0], y: scale[1] };\n        item.transform.scale = { x: 1, y: 1, z: 1 };\n      }\n\n      // sprite 的 anchor 修正\n      if (item.type === ItemType.sprite) {\n        const content = item.content;\n\n        if (!content.renderer) {\n          content.renderer = {};\n        }\n        const renderer = content.renderer;\n        const realAnchor = convertAnchor(renderer.anchor, renderer.particleOrigin);\n        const startSize = item.transform.size;\n\n        // 兼容旧JSON（anchor和particleOrigin可能同时存在）\n        if (!renderer.anchor && renderer.particleOrigin !== undefined) {\n          item.transform.position.x += -realAnchor[0] * (startSize?.x ?? 1);\n          item.transform.position.y += -realAnchor[1] * (startSize?.y ?? 1);\n        }\n        item.transform.anchor = { x: realAnchor[0] * (startSize?.x ?? 1), y: realAnchor[1] * (startSize?.y ?? 1) };\n      }\n    }\n\n    if (item.type === ItemType.particle) {\n      const content = item.content;\n\n      if (!content.renderer) {\n        content.renderer = {};\n      }\n      const renderer = content.renderer;\n\n      content.renderer.anchor = convertAnchor(renderer.anchor, renderer.particleOrigin);\n    }\n\n    // 修复相机K帧缺失 asMovement 参数\n    if (item.type === ItemType.camera && item.content.positionOverLifetime && Object.keys(item.content.positionOverLifetime).length !== 0) {\n      item.content.positionOverLifetime.asMovement = true;\n    }\n\n    // 修正老 json 的 item.pluginName\n    if (item.pn !== undefined) {\n      const pn = item.pn;\n      const { plugins = [] } = json;\n\n      if (pn !== undefined && Number.isInteger(pn)) {\n        item.pluginName = plugins[pn];\n      }\n    }\n\n    // 修正老 json 的 item.type\n    if (item.pluginName === 'editor-gizmo') {\n      //@ts-expect-error\n      item.type = 'editor-gizmo';\n    }\n    if (item.pluginName === 'orientation-transformer') {\n      //@ts-expect-error\n      item.type = 'orientation-transformer';\n    }\n\n    // gizmo 的 target id 转换为新的 item guid\n    if (item.content.options.target && item.pluginName === 'editor-gizmo') {\n      item.content.options.target = itemOldIdToGuidMap[item.content.options.target];\n    }\n\n    // Spine 元素转为 guid 索引\n    if (\n      item.type === ItemType.spine\n      && json.spines\n      && json.spines.length !== 0\n    ) {\n      convertSpineData(json.spines[item.content.options.spine], item.content, result);\n    }\n\n    // item 的 content 转为 component data 加入 JSONScene.components\n    if (\n      item.type === ItemType.sprite ||\n      item.type === ItemType.particle ||\n      item.type === ItemType.mesh ||\n      item.type === ItemType.skybox ||\n      item.type === ItemType.light ||\n      item.type === 'camera' as ItemType ||\n      item.type === ItemType.tree ||\n      item.type === ItemType.interact ||\n      item.type === ItemType.camera ||\n      item.type === ItemType.text ||\n      item.type === ItemType.spine ||\n      item.type === 'editor-gizmo' as ItemType ||\n      item.type === 'orientation-transformer' as ItemType\n    ) {\n      item.components = [];\n      result.components.push(item.content);\n      item.content.id = generateGUID();\n      item.content.item = { id: item.id };\n      item.dataType = DataType.VFXItemData;\n      item.components.push({ id: item.content.id });\n    }\n\n    if (item.type === ItemType.null || item.type === ItemType.composition) {\n      item.components = [];\n      item.dataType = DataType.VFXItemData;\n    }\n\n    switch (item.type) {\n      case ItemType.sprite:\n        item.content.dataType = DataType.SpriteComponent;\n\n        break;\n      case ItemType.particle:\n        item.content.dataType = DataType.ParticleSystem;\n\n        break;\n      case ItemType.mesh:\n        item.content.dataType = DataType.MeshComponent;\n\n        break;\n      case ItemType.skybox:\n        item.content.dataType = DataType.SkyboxComponent;\n\n        break;\n      case ItemType.light:\n        item.content.dataType = DataType.LightComponent;\n\n        break;\n      case 'camera' as ItemType:\n        item.content.dataType = DataType.CameraComponent;\n\n        break;\n      case 'editor-gizmo' as ItemType:\n        item.content.dataType = 'GizmoComponent';\n\n        break;\n      case 'orientation-transformer' as ItemType:\n        item.content.dataType = 'OrientationComponent';\n\n        break;\n      case ItemType.tree:\n        item.content.dataType = DataType.TreeComponent;\n\n        break;\n      case ItemType.interact:\n        item.content.dataType = DataType.InteractComponent;\n\n        break;\n      case ItemType.camera:\n        item.content.dataType = DataType.CameraController;\n\n        break;\n      case ItemType.text:\n        item.content.dataType = DataType.TextComponent;\n\n        break;\n      case ItemType.spine:\n        item.content.dataType = DataType.SpineComponent;\n\n        break;\n    }\n  }\n\n  result.version = JSONSceneVersion['3_0'];\n\n  return result;\n}\n\n/**\n * 2.5 以下版本 赫尔米特数据转换成贝塞尔数据\n */\nexport function version24Migration (json: JSONScene): JSONScene {\n  // 曲线转换成贝塞尔\n  json.compositions.map((comp: any) => {\n    for (const item of comp.items) {\n      convertParam(item.content);\n    }\n  });\n\n  return json;\n}\n\nexport function convertParam (content?: BaseContent) {\n  if (!content) {\n    return;\n  }\n  for (const key of Object.keys(content)) {\n    const value = content[key];\n    const isArray = Array.isArray(value);\n\n    if (isArray && value.length === 2 && Array.isArray(value[1])) {\n      if (key === 'path') {\n        content[key] = ensureFixedVec3(value);\n      } else {\n        content[key] = ensureFixedNumber(value);\n      }\n    } else if (!isArray && typeof value === 'object') {\n      convertParam(value);\n    }\n  }\n}\n\nfunction convertTimelineAsset (composition: CompositionData, guidToItemMap: Record<string, Item>, jsonScene: JSONScene) {\n  const sceneBindings = [];\n  const trackDatas = [];\n  const playableAssetDatas = [];\n  const timelineAssetData: TimelineAssetData = {\n    tracks: [],\n    id: generateGUID(),\n    //@ts-expect-error\n    dataType: 'TimelineAsset',\n  };\n\n  //@ts-expect-error\n  for (const itemDataPath of composition.items) {\n    const item = guidToItemMap[itemDataPath.id];\n    const subTrackDatas = [];\n\n    const newActivationPlayableAsset = {\n      id: generateGUID(),\n      dataType: 'ActivationPlayableAsset',\n    };\n\n    playableAssetDatas.push(newActivationPlayableAsset);\n    const newActivationTrackData = {\n      id: generateGUID(),\n      dataType: 'ActivationTrack',\n      children: [],\n      clips: [\n        {\n          start: item.delay,\n          duration: item.duration,\n          endBehavior: item.endBehavior,\n          asset: {\n            id: newActivationPlayableAsset.id,\n          },\n        },\n      ],\n    };\n\n    subTrackDatas.push({ id: newActivationTrackData.id });\n    trackDatas.push(newActivationTrackData);\n\n    if (item.type !== ItemType.particle) {\n      const newTransformPlayableAssetData = {\n        id: generateGUID(),\n        dataType: 'TransformPlayableAsset',\n        //@ts-expect-error\n        sizeOverLifetime: item.content.sizeOverLifetime,\n        //@ts-expect-error\n        rotationOverLifetime: item.content.rotationOverLifetime,\n        //@ts-expect-error\n        positionOverLifetime: item.content.positionOverLifetime,\n      };\n\n      playableAssetDatas.push(newTransformPlayableAssetData);\n      const newTrackData = {\n        id: generateGUID(),\n        dataType: 'TransformTrack',\n        children: [],\n        clips: [\n          {\n            start: item.delay,\n            duration: item.duration,\n            endBehavior: item.endBehavior,\n            asset: {\n              id: newTransformPlayableAssetData.id,\n            },\n          },\n        ],\n      };\n\n      subTrackDatas.push({ id: newTrackData.id });\n      trackDatas.push(newTrackData);\n    }\n\n    if (item.type === ItemType.sprite || item.type === ItemType.text) {\n      const newSpriteColorPlayableAssetData = {\n        id: generateGUID(),\n        dataType: 'SpriteColorPlayableAsset',\n        colorOverLifetime: item.content.colorOverLifetime,\n      };\n\n      playableAssetDatas.push(newSpriteColorPlayableAssetData);\n      const newTrackData = {\n        id: generateGUID(),\n        dataType: 'SpriteColorTrack',\n        children: [],\n        clips: [\n          {\n            start: item.delay,\n            duration: item.duration,\n            endBehavior: item.endBehavior,\n            asset: {\n              id: newSpriteColorPlayableAssetData.id,\n            },\n          },\n        ],\n      };\n\n      subTrackDatas.push({ id: newTrackData.id });\n      trackDatas.push(newTrackData);\n    }\n\n    if (item.type === ItemType.composition) {\n      const newSubCompositionPlayableAssetData = {\n        id: generateGUID(),\n        dataType: 'SubCompositionPlayableAsset',\n      };\n\n      playableAssetDatas.push(newSubCompositionPlayableAssetData);\n      const newTrackData = {\n        id: generateGUID(),\n        dataType: 'SubCompositionTrack',\n        children: [],\n        clips: [\n          {\n            start: item.delay,\n            duration: item.duration,\n            endBehavior: item.endBehavior,\n            asset: {\n              id: newSubCompositionPlayableAssetData.id,\n            },\n          },\n        ],\n      };\n\n      subTrackDatas.push({ id: newTrackData.id });\n      trackDatas.push(newTrackData);\n    }\n\n    const bindingTrackData = {\n      id: generateGUID(),\n      dataType: 'ObjectBindingTrack',\n      children: subTrackDatas,\n      clips: [],\n    };\n\n    trackDatas.push(bindingTrackData);\n    timelineAssetData.tracks.push({ id: bindingTrackData.id });\n    sceneBindings.push({\n      key: { id: bindingTrackData.id },\n      value: { id: item.id },\n    });\n  }\n\n  const trackIds = [];\n\n  for (const trackData of trackDatas) {\n    trackIds.push({ id: trackData.id });\n  }\n\n  //@ts-expect-error\n  composition.timelineAsset = { id: timelineAssetData.id };\n  //@ts-expect-error\n  composition.sceneBindings = sceneBindings;\n\n  jsonScene.miscs.push(timelineAssetData);\n\n  for (const trackData of trackDatas) {\n    //@ts-expect-error\n    jsonScene.miscs.push(trackData);\n  }\n  for (const playableAsset of playableAssetDatas) {\n    //@ts-expect-error\n    jsonScene.miscs.push(playableAsset);\n  }\n}\n\nexport function convertBinaryAsset (bins: BinaryFile[], jsonScene: JSONScene) {\n  //@ts-expect-error\n  jsonScene.bins = bins.map(bin => ({\n    url: bin.url,\n    'dataType': 'BinaryAsset',\n    id: generateGUID(),\n  }));\n}\n\nexport function convertSpineData (resource: SpineResource, content: SpineContent, jsonScene: JSONScene) {\n  //@ts-expect-error\n  content.resource = {\n    'atlas': {\n      'bins': {\n        //@ts-expect-error\n        'id': jsonScene.bins[resource.atlas[1][0]].id,\n      },\n      'source': resource.atlas[1].slice(1),\n    },\n    'skeleton': {\n      'bins': {\n        //@ts-expect-error\n        'id': jsonScene.bins[resource.skeleton[1][0]].id,\n      },\n      'source': resource.skeleton[1].slice(1),\n    },\n    'skeletonType': resource.skeletonType,\n    'images': resource.images.map(i => ({\n      //@ts-expect-error\n      id: jsonScene.textures[i].id,\n    })),\n  };\n\n}\n","import type { ParticleContent, ParticleShape, ParticleShapeSphere, ColorOverLifetime } from '@galacean/effects-specification';\nimport { ParticleEmitterShapeType } from '@galacean/effects-specification';\nimport {\n  deleteEmptyValue, ensureColorExpression, ensureFixedNumber, ensureFixedNumberWithRandom,\n  ensureFixedVec3, ensureNumberExpression, getGradientColor, objectValueToNumber,\n} from './utils';\n\nexport function getStandardParticleContent (particle: any): ParticleContent {\n  const options = particle.options;\n  const transform = particle.transform;\n  let shape: ParticleShape = {\n    type: ParticleEmitterShapeType.NONE,\n  };\n\n  if (particle.shape) {\n    const shapeType = particle.shape.shape?.replace(/([A-Z])/g, '_$1').toUpperCase().replace(/^_/, '');\n\n    shape = {\n      ...particle.shape,\n      type: ParticleEmitterShapeType[shapeType as keyof typeof ParticleEmitterShapeType],\n    };\n    if (particle.shape.upDirection) {\n      const [x, y, z] = particle.shape.upDirection;\n\n      if (x === 0 && y === 0 && z === 0) {\n        delete (shape as ParticleShapeSphere).upDirection;\n      }\n    }\n  }\n  if (options.startTurbulence) {\n    shape.turbulenceX = ensureNumberExpression(options.turbulenceX);\n    shape.turbulenceY = ensureNumberExpression(options.turbulenceY);\n    shape.turbulenceZ = ensureNumberExpression(options.turbulenceZ);\n  }\n  const emission = particle.emission;\n\n  if (emission.bursts && emission.bursts.length > 0) {\n    emission.bursts = emission.bursts.map((b: any) => objectValueToNumber(b));\n  }\n  if (emission.burstOffsets && emission.burstOffsets.length > 0) {\n    emission.burstOffsets = emission.burstOffsets.map((b: any) => objectValueToNumber(b));\n  }\n  if (emission.rateOverTime) {\n    emission.rateOverTime = ensureNumberExpression(emission.rateOverTime);\n  }\n\n  const ret: ParticleContent = {\n    renderer: particle.renderer,\n    shape,\n    splits: particle.splits,\n    emission: emission,\n    options: {\n      startLifetime: ensureNumberExpression(options.startLifetime)!,\n      start3DSize: !!options.start3DSize,\n      startSize: ensureNumberExpression(options.startSize),\n      startSizeX: ensureNumberExpression(options.startSizeX),\n      startSizeY: ensureNumberExpression(options.startSizeY),\n      sizeAspect: ensureNumberExpression(options.sizeAspect),\n      maxCount: options.maxCount,\n      startDelay: ensureNumberExpression(options.startDelay),\n      startColor: ensureColorExpression(options.startColor, true),\n      startRotationZ: ensureNumberExpression(options.startRotation || options.startRotationZ),\n      particleFollowParent: options.particleFollowParent,\n    },\n  };\n\n  if (options.start3DRotation) {\n    ret.options.startRotationX = ensureNumberExpression(options.startRotationX);\n    ret.options.startRotationY = ensureNumberExpression(options.startRotationY);\n  }\n\n  if (transform && transform.path) {\n    ret.emitterTransform = {\n      path: ensureFixedVec3(transform.path),\n    };\n  }\n  const sizeOverLifetime = particle.sizeOverLifetime;\n\n  if (sizeOverLifetime) {\n    if (sizeOverLifetime.separateAxes) {\n      ret.sizeOverLifetime = {\n        separateAxes: true,\n        x: ensureNumberExpression(sizeOverLifetime.x),\n        y: ensureNumberExpression(sizeOverLifetime.y),\n      };\n    } else {\n      ret.sizeOverLifetime = {\n        size: ensureNumberExpression(sizeOverLifetime.size),\n      };\n    }\n  }\n  const velocityOverLifetime = particle.velocityOverLifetime || {};\n  let sol = velocityOverLifetime.speedOverLifetime;\n\n  if (sol) {\n    sol = ensureFixedNumber(sol);\n  } else {\n    sol = undefined;\n  }\n  ret.positionOverLifetime = {\n    gravity: options.gravity,\n    gravityOverLifetime: ensureFixedNumber(options.gravityModifier),\n    startSpeed: ensureNumberExpression(options.startSpeed),\n    speedOverLifetime: sol,\n    asMovement: velocityOverLifetime.asMovement,\n    linearX: ensureNumberExpression(velocityOverLifetime.linearX),\n    linearY: ensureNumberExpression(velocityOverLifetime.linearY),\n    linearZ: ensureNumberExpression(velocityOverLifetime.linearZ),\n    asRotation: velocityOverLifetime.asRotation,\n    orbCenter: velocityOverLifetime.orbCenter,\n    orbitalX: ensureNumberExpression(velocityOverLifetime.orbitalX),\n    orbitalY: ensureNumberExpression(velocityOverLifetime.orbitalY),\n    orbitalZ: ensureNumberExpression(velocityOverLifetime.orbitalZ),\n    forceTarget: velocityOverLifetime.forceTarget,\n    target: velocityOverLifetime.target,\n    forceCurve: ensureFixedNumber(velocityOverLifetime.forceCurve) as any,\n  };\n  deleteEmptyValue(ret.positionOverLifetime);\n  const rotationOverLifetime = particle.rotationOverLifetime;\n\n  if (rotationOverLifetime) {\n    ret.rotationOverLifetime = {\n      separateAxes: rotationOverLifetime.separateAxes,\n      asRotation: rotationOverLifetime.asRotation,\n      z: ensureNumberExpression(rotationOverLifetime.separateAxes ? rotationOverLifetime.z : rotationOverLifetime.angularVelocity),\n    };\n    if (rotationOverLifetime.separateAxes) {\n      ret.rotationOverLifetime.y = ensureFixedNumber(rotationOverLifetime.y);\n      ret.rotationOverLifetime.x = ensureFixedNumber(rotationOverLifetime.x);\n    }\n  }\n  const colorOverLifetime = particle.colorOverLifetime;\n\n  if (colorOverLifetime) {\n    const col: ColorOverLifetime = ret.colorOverLifetime = {\n      opacity: ensureFixedNumber(colorOverLifetime.opacity),\n    };\n\n    if (colorOverLifetime.color) {\n      col.color = getGradientColor(colorOverLifetime.color);\n    }\n  }\n  const textureSheetAnimation = particle.textureSheetAnimation;\n\n  if (textureSheetAnimation) {\n    ret.textureSheetAnimation = {\n      row: textureSheetAnimation.row,\n      col: textureSheetAnimation.col,\n      total: textureSheetAnimation.total,\n      animate: textureSheetAnimation.animate,\n      cycles: ensureFixedNumber(textureSheetAnimation.cycles)!,\n      animationDelay: ensureFixedNumberWithRandom(textureSheetAnimation.animationDelay, 0),\n      animationDuration: ensureFixedNumberWithRandom(textureSheetAnimation.animationDuration, 0)!,\n    };\n  }\n  const trials = particle.trails;\n\n  if (trials) {\n    ret.trails = {\n      lifetime: ensureNumberExpression(trials.lifetime)!,\n      dieWithParticles: trials.dieWithParticles,\n      maxPointPerTrail: trials.maxPointPerTrail,\n      minimumVertexDistance: trials.minimumVertexDistance,\n      widthOverTrail: ensureFixedNumber(trials.widthOverTrail)!,\n      colorOverTrail: trials.colorOverTrail && getGradientColor(trials.colorOverTrail, false),\n      blending: trials.blending,\n      colorOverLifetime: trials.colorOverLifetime && getGradientColor(trials.colorOverLifetime, false),\n      inheritParticleColor: trials.inheritParticleColor,\n      occlusion: trials.occlusion,\n      transparentOcclusion: trials.transparentOcclusion,\n      orderOffset: trials.orderOffset,\n      sizeAffectsLifetime: trials.sizeAffectsLifetime,\n      sizeAffectsWidth: trials.sizeAffectsWidth,\n      texture: trials.texture,\n      parentAffectsPosition: trials.parentAffectsPosition,\n      opacityOverLifetime: ensureNumberExpression(trials.opacityOverLifetime),\n    };\n  }\n  ret.trails && deleteEmptyValue(ret.trails);\n  const interaction = particle.interaction;\n\n  if (interaction) {\n    ret.interaction = {\n      behavior: interaction.behavior,\n      radius: interaction.radius,\n      multiple: interaction.multiple,\n    };\n  }\n\n  return ret;\n}\n","import type {\n  BaseItemTransform, NullContent, PositionOverLifetime, RotationOverLifetime,\n  ColorOverLifetime, SpriteContent,\n} from '@galacean/effects-specification';\nimport {\n  deleteEmptyValue, ensureFixedNumber, ensureFixedVec3, ensureRGBAValue, getGradientColor,\n} from './utils';\n\nexport function getStandardNullContent (sprite: any, transform: BaseItemTransform): NullContent {\n  const opt = sprite.options;\n  const velocityOverLifetime = sprite.velocityOverLifetime || {};\n  const positionOverLifetime: PositionOverLifetime = {\n    path: ensureFixedVec3(sprite.transform?.path),\n    gravity: opt.gravity,\n    gravityOverLifetime: ensureFixedNumber(opt.gravityModifier),\n    direction: opt.direction,\n    startSpeed: opt.startSpeed,\n    asMovement: velocityOverLifetime.asMovement,\n    linearX: ensureFixedNumber(velocityOverLifetime.linearX),\n    linearY: ensureFixedNumber(velocityOverLifetime.linearY),\n    linearZ: ensureFixedNumber(velocityOverLifetime.linearZ),\n    asRotation: velocityOverLifetime.asRotation,\n    orbCenter: velocityOverLifetime.orbCenter,\n    orbitalX: ensureFixedNumber(velocityOverLifetime.orbitalX),\n    orbitalY: ensureFixedNumber(velocityOverLifetime.orbitalY),\n    orbitalZ: ensureFixedNumber(velocityOverLifetime.orbitalZ),\n    speedOverLifetime: ensureFixedNumber(velocityOverLifetime.speedOverLifetime),\n  };\n\n  deleteEmptyValue(positionOverLifetime);\n  const ret: NullContent = {\n    options: {\n      startColor: ensureRGBAValue(opt.startColor),\n    },\n    positionOverLifetime,\n  };\n\n  if (opt.startSize) {\n    transform.scale = [opt.startSize, opt.startSize / (opt.sizeAspect || 1), 1];\n  }\n  if (opt.startRotation) {\n    if (!transform.rotation) {\n      transform.rotation = [0, 0, opt.startRotation];\n    } else {\n      transform.rotation[2] += opt.startRotation;\n    }\n  }\n  const rotationOverLifetime = sprite.rotationOverLifetime;\n\n  if (rotationOverLifetime) {\n    const rot: RotationOverLifetime = ret.rotationOverLifetime = {\n      separateAxes: rotationOverLifetime.separateAxes,\n      asRotation: rotationOverLifetime.asRotation,\n    };\n\n    if (rot.separateAxes) {\n      rot.x = ensureFixedNumber(rotationOverLifetime.x);\n      rot.y = ensureFixedNumber(rotationOverLifetime.y);\n      rot.z = ensureFixedNumber(rotationOverLifetime.z);\n    } else {\n      rot.z = ensureFixedNumber(rotationOverLifetime.angularVelocity);\n    }\n  }\n\n  const colorOverLifetime = sprite.colorOverLifetime;\n\n  if (colorOverLifetime) {\n    const col: ColorOverLifetime = ret.colorOverLifetime = {\n      opacity: ensureFixedNumber(colorOverLifetime.opacity),\n    };\n\n    if (colorOverLifetime.color) {\n      col.color = getGradientColor(colorOverLifetime.color);\n    }\n  }\n  const sizeOverLifetime = sprite.sizeOverLifetime;\n\n  if (sizeOverLifetime) {\n    ret.sizeOverLifetime = {\n      separateAxes: sizeOverLifetime.separateAxes,\n      size: ensureFixedNumber(sizeOverLifetime.size),\n      x: ensureFixedNumber(sizeOverLifetime.x),\n      y: ensureFixedNumber(sizeOverLifetime.y),\n      z: ensureFixedNumber(sizeOverLifetime.z),\n    };\n  }\n\n  return ret;\n}\n\nexport function getStandardSpriteContent (sprite: any, transform: BaseItemTransform): SpriteContent {\n  const ret = getStandardNullContent(sprite, transform) as SpriteContent;\n  const texAni = sprite.textureSheetAnimation;\n\n  if (texAni) {\n    ret.textureSheetAnimation = {\n      row: texAni.row,\n      col: texAni.col,\n      total: texAni.total || undefined,\n      animate: texAni.animate,\n    };\n  }\n  ret.renderer = sprite.renderer;\n  if (sprite.splits) {\n    ret.splits = sprite.splits;\n  }\n  if (sprite.interaction) {\n    ret.interaction = sprite.interaction;\n  }\n\n  return ret;\n}\n","import type {\n  BaseItem, BaseItemTransform, Composition, CompressedImage, Image, JSONScene, JSONSceneLegacy,\n  ParticleItem, RenderLevel, SpriteItem, TemplateImage,\n} from '@galacean/effects-specification';\nimport { CAMERA_CLIP_MODE_NORMAL, EndBehavior, ItemType, JSONSceneVersion } from '@galacean/effects-specification';\nimport { generateGUID } from '../utils';\nimport { getStandardCameraContent } from './camera';\nimport { getStandardInteractContent } from './interact';\nimport {\n  version21Migration, version22Migration, version24Migration, version30Migration,\n  version31Migration, version32Migration,\n  version33Migration,\n  version34Migration,\n  version35Migration,\n} from './migration';\nimport { getStandardParticleContent } from './particle';\nimport { getStandardNullContent, getStandardSpriteContent } from './sprite';\nimport { arrAdd, quatFromXYZRotation, rotationZYXFromQuat } from './utils';\n\nexport * from './utils';\n\nconst version = __VERSION__;\nconst v0 = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(\\w+)\\.\\d+)?$/;\nconst standardVersion = /^(\\d+)\\.(\\d+)$/;\nlet reverseParticle = false;\n\nexport function getStandardJSON (json: any): JSONScene {\n  if (!json || typeof json !== 'object') {\n    throw new Error('Invalid input: Expected a JSON object.');\n  }\n\n  // 如果 JSON 中的 runtime 版本高于当前运行时版本，则发出警告\n  if (checkRuntimeVersion(json)) {\n    console.warn(`The JSON need higher than ${json.playerVersion?.web} runtime version(current: ${version}). Some features may not work as expected.`);\n  }\n\n  // 修正老版本数据中，meshItem 以及 lightItem 结束行为错误问题\n  version22Migration(json);\n\n  if (v0.test(json.version)) {\n    reverseParticle = (/^(\\d+)/).exec(json.version)?.[0] === '0';\n\n    return version35Migration(\n      version34Migration(\n        version33Migration(\n          version32Migration(\n            version31Migration(\n              version30Migration(\n                version21Migration(\n                  getStandardJSONFromV0(json))))))));\n  }\n\n  reverseParticle = false;\n\n  let vs = standardVersion.exec(json.version) || [];\n  let mainVersion = Number(vs[1]);\n  let minorVersion = Number(vs[2]);\n\n  if (mainVersion) {\n    if (mainVersion < 2 || (mainVersion === 2 && minorVersion < 4)) {\n      json = version24Migration(json);\n    }\n    if (mainVersion < 3) {\n      json = version30Migration(version21Migration(json));\n    }\n    // 版本号重新计算\n    vs = standardVersion.exec(json.version) || [];\n    mainVersion = Number(vs[1]);\n    minorVersion = Number(vs[2]);\n    // 3.x 版本格式转换\n    if (mainVersion < 4) {\n      if (minorVersion < 2) {\n        json = version31Migration(json);\n      }\n      if (minorVersion < 3) {\n        json = version32Migration(json);\n      }\n      if (minorVersion < 4) {\n        json = version33Migration(json);\n      }\n      if (minorVersion < 5) {\n        json = version34Migration(json);\n      }\n      if (minorVersion < 6) {\n        json = version35Migration(json);\n      }\n    }\n\n    return json;\n  }\n\n  throw new Error(`Invalid JSON version: ${json.version}.`);\n}\n\nlet currentVersion: JSONSceneVersion = JSONSceneVersion['1_0'];\n\nfunction getStandardJSONFromV0 (json: any): JSONSceneLegacy {\n  currentVersion = JSONSceneVersion['1_0'];\n  const plugins = json.plugins || [];\n\n  if (json.bins?.length) {\n    currentVersion = JSONSceneVersion['1_3'];\n  }\n  const requires: string[] = (json.requires || []).slice();\n  const images = json.images.map((img: any, index: number) => getStandardImage(img, index, json.imageTags || []));\n  const textures = json.textures || images.map((img: any, i: number) => ({ source: i, flipY: true }));\n  const ret: JSONSceneLegacy = {\n    plugins: plugins,\n    shapes: json.shapes || [],\n    type: 'ge',\n    version: currentVersion,\n    playerVersion: json.playerVersion ?? {\n      web: '',\n      native: '',\n    },\n    compositionId: json.compositionId + '',\n    compositions: json.compositions.map((comp: any) => getStandardComposition(comp, { plugins, requires })),\n    images,\n    imgUsage: json._imgs,\n    binUsage: json.binUsage,\n    spines: json.spines,\n    requires: json.requires,\n    textures,\n    bins: (json.bins || []).slice(),\n  };\n\n  if (json._textures) {\n    (ret as any)._textures = json._textures;\n  }\n\n  return ret;\n}\n\nexport function getStandardImage (image: any, index: number, imageTags: RenderLevel[]): TemplateImage | Image | CompressedImage {\n  const renderLevel = imageTags[index];\n\n  if (typeof image === 'string') {\n    return {\n      id: generateGUID(),\n      renderLevel,\n      url: image,\n    };\n  } else if (image.template) {\n    return {\n      id: generateGUID(),\n      url: image.url,\n      template: image.template,\n      webp: image.webp,\n      renderLevel,\n    };\n  } else if (image.compressed) {\n    return {\n      id: generateGUID(),\n      url: image.url,\n      // @ts-expect-error\n      compressed: {\n        astc: image.compressed.android,\n        pvrtc: image.compressed.iOS,\n      },\n      webp: image.webp,\n      renderLevel,\n    };\n  } else if (image.url) {\n    return {\n      id: generateGUID(),\n      url: image.url,\n      webp: image.webp,\n      renderLevel,\n    };\n  } else if (image && image.sourceType) {\n    return image;\n  }\n  throw new Error('Invalid image type.');\n}\n\nexport function getStandardComposition (composition: any, opt: { plugins?: string[], requires?: string[] } = {}): Composition {\n  const ret: Composition = {\n    id: composition.id + '',\n    camera: { clipMode: CAMERA_CLIP_MODE_NORMAL, ...composition.camera },\n    duration: composition.duration,\n    endBehavior: composition.endBehavior,\n    items: composition.items.map((item: any) => getStandardItem(item, opt)),\n    name: composition.name,\n  };\n  const startTime = composition.startTime || composition.st;\n\n  if (startTime) {\n    ret.startTime = startTime;\n  }\n  let previewSize = composition.meta?.previewSize;\n\n  if (previewSize && previewSize[0] === previewSize[1] && previewSize[0] === 0) {\n    previewSize = undefined;\n  }\n  if (previewSize) {\n    ret.previewSize = previewSize;\n  }\n\n  return ret;\n}\n\nconst tempQuat = [0, 0, 0, 1];\nconst stdAnchor = 0.5;\n\nexport function getStandardItem (item: any, opt: { plugins?: string[], requires?: string[] } = {}): SpriteItem | ParticleItem | BaseItem {\n  let type: ItemType | string = ItemType.base;\n  let transform: BaseItemTransform;\n  let originContent;\n  let content;\n  let endBehavior: EndBehavior = item.endBehavior;\n  let renderLevel: RenderLevel;\n  let pluginName: string;\n  let duration = NaN;\n  let pn: number;\n\n  if (item.content) {\n    type = item.type || ItemType.plugin;\n    pn = item.pn;\n    pluginName = item.pluginName;\n    content = item.content;\n    originContent = item.content;\n    if (isNaN(pn) && !pluginName) {\n      pluginName = content.options.type;\n    }\n    if (item.duration) {\n      duration = item.duration;\n    }\n    transform = item.transform || getTransform(originContent.transform);\n  } else if (item.particle) {\n    type = ItemType.particle;\n    originContent = item.particle;\n    transform = getTransform(originContent.transform, reverseParticle, true);\n    content = getStandardParticleContent(originContent);\n  } else if (item.sprite) {\n    type = ItemType.sprite;\n    originContent = item.sprite;\n    transform = getTransform(originContent.transform, false, true);\n    content = getStandardSpriteContent(originContent, transform);\n  } else if (item.cal) {\n    type = ItemType.null;\n    originContent = item.cal;\n    transform = getTransform(originContent.transform, false, true);\n    content = getStandardNullContent(originContent, transform);\n  } else if (item.ui) {\n    type = ItemType.interact;\n    originContent = item.ui;\n    transform = getTransform(originContent.transform);\n    content = getStandardInteractContent(originContent);\n    transform.scale = [originContent.options.width || 1, originContent.options.height || 1, 1];\n  } else if (item.model) {\n    originContent = item.model;\n    if (item.model.options.type === 1) {\n      type = ItemType.camera;\n      transform = getTransform(originContent.transform);\n      content = getStandardCameraContent(originContent);\n    }\n  }\n  if (content.renderer?.anchor) {\n    const anchor = new Float32Array(content.renderer.anchor);\n\n    if (anchor[0] == stdAnchor && anchor[1] == stdAnchor) {\n      delete content.renderer.anchor;\n    } else if (opt.requires) {\n      arrAdd(opt.requires, 'anchor');\n    }\n  }\n  if (originContent) {\n    const looping = originContent.options?.looping;\n\n    if (looping) {\n      if (Array.isArray(looping)) {\n        endBehavior = looping[1] ? EndBehavior.restart : EndBehavior.destroy;\n      } else {\n        endBehavior = EndBehavior.restart;\n      }\n    } else {\n      endBehavior = endBehavior || originContent?.options?.endBehavior || EndBehavior.destroy;\n    }\n    if (originContent.options.renderLevel) {\n      renderLevel = originContent.options.renderLevel;\n    }\n    if (isNaN(duration)) {\n      duration = originContent.options.duration;\n    }\n  }\n\n  const ret: BaseItem = {\n    type,\n    name: item.name,\n    delay: item.delay,\n    duration,\n    id: item.id + '',\n    // @ts-expect-error\n    transform,\n    endBehavior,\n    // @ts-expect-error\n    renderLevel,\n    content,\n  };\n\n  // @ts-expect-error\n  if (pluginName) {\n    if (opt.plugins) {\n      arrAdd(opt.plugins, pluginName);\n      ret.pn = opt.plugins.indexOf(pluginName);\n    } else {\n      ret.pluginName = pluginName;\n    }\n    // @ts-expect-error\n  } else if (Number.isInteger(pn)) {\n    // @ts-expect-error\n    ret.pn = pn;\n  }\n  if (item.parentId) {\n    ret.parentId = item.parentId + '';\n  }\n\n  return ret;\n\n  function getTransform (originTransform: BaseItemTransform, inverseRotation?: boolean, changeOrder?: boolean): BaseItemTransform {\n    if (originTransform) {\n      const transform: BaseItemTransform = {};\n      const rotation = originTransform.rotation;\n\n      if (rotation) {\n        if (inverseRotation) {\n          transform.rotation = [-rotation[0], -rotation[1], -rotation[2]];\n        } else {\n          transform.rotation = [rotation[0], rotation[1], rotation[2]];\n        }\n        if (changeOrder) {\n          const q = quatFromXYZRotation(tempQuat, transform.rotation[0], transform.rotation[1], transform.rotation[2]);\n\n          transform.rotation = rotationZYXFromQuat([], q);\n        }\n      }\n      const position = originTransform.position;\n\n      if (position) {\n        transform.position = originTransform.position;\n      }\n      if (Array.isArray(originTransform.scale)) {\n        transform.scale = [originTransform.scale[0] || 1, originTransform.scale[1] || 1, originTransform.scale[2] || 1];\n      }\n\n      return transform;\n    }\n\n    return {};\n  }\n}\n\n/**\n * 检查 json.playerVersion.web 的版本号是否低于当前 runtime 的版本\n */\nfunction checkRuntimeVersion (json: JSONScene) {\n  const { web = '' } = json.playerVersion || {};\n\n  if (web) {\n    const jsonVersionMatch = v0.exec(web) ?? [];\n    const runtimeVersionMatch = v0.exec(version) ?? [];\n    const [, major, minor] = jsonVersionMatch;\n    const [, currentMajor, currentMinor] = runtimeVersionMatch;\n\n    return (\n      Number(currentMajor) < Number(major) ||\n      (Number(currentMajor) === Number(major) && Number(currentMinor) < Number(minor))\n    );\n  }\n\n  return false;\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { SceneRenderLevel } from './scene';\n\n/**\n * 机型和渲染等级对应表\n *\n * 机型：B-低端机、A-中端机、S-高端机\n * 渲染等级：B-低、A-中、S-高、A+-中高、B+-全部\n *\n * - S（高端机）：高、全部、中高\n * - A（中端机）：中、全部、中高\n * - B（低端机）：低、全部\n * - undefined（全部机型）\n */\nconst renderLevelPassSet: Record<SceneRenderLevel, spec.RenderLevel[]> = {\n  [spec.RenderLevel.S]: [spec.RenderLevel.S, spec.RenderLevel.BPlus, spec.RenderLevel.APlus],\n  [spec.RenderLevel.A]: [spec.RenderLevel.A, spec.RenderLevel.BPlus, spec.RenderLevel.APlus],\n  [spec.RenderLevel.B]: [spec.RenderLevel.B, spec.RenderLevel.BPlus],\n};\n\nexport function passRenderLevel (l?: spec.RenderLevel, renderLevel?: SceneRenderLevel): boolean {\n  if (!l || !renderLevel) {\n    return true;\n  }\n\n  const arr = renderLevelPassSet[renderLevel];\n\n  if (arr) {\n    return arr.includes(l);\n  }\n\n  return false;\n}\n","import type * as spec from '@galacean/effects-specification';\nimport type { Texture } from './texture';\nimport type { PickEnum } from './utils';\nimport { isObject } from './utils';\n\nexport type ImageLike = spec.HTMLImageLike | ArrayBuffer | Texture;\nexport type SceneRenderLevel = PickEnum<spec.RenderLevel, spec.RenderLevel.A | spec.RenderLevel.B | spec.RenderLevel.S>;\n\n/**\n * 场景类型\n */\nexport interface Scene {\n  readonly jsonScene: spec.JSONScene,\n  readonly bins: ArrayBuffer[],\n  readonly storage: Record<string, any>,\n  renderLevel?: SceneRenderLevel,\n  textureOptions: Record<string, any>[],\n  textures: Texture[],\n  images: ImageLike[],\n  assets: Record<string, ImageLike>,\n  consumed?: boolean,\n  /**\n   * 加载总耗时\n   */\n  totalTime?: number,\n  /**\n   * 加载开始时间\n   */\n  startTime?: number,\n  /**\n   * 加载分段时长\n   */\n  timeInfos: Record<string, number>,\n  url: Scene.LoadType,\n}\n\nexport namespace Scene {\n  type URLType = { url: string, options?: SceneLoadOptions };\n\n  /**\n   * 接受用于加载的数据类型\n   */\n  export type LoadType = string | Scene | URLType | spec.JSONScene | Record<string, unknown>;\n\n  // JSON 对象\n  export function isJSONObject (scene: any): scene is Scene {\n    return isObject(scene) && 'jsonScene' in scene;\n  }\n\n  export function isURL (scene: any): scene is URLType {\n    return isObject(scene) && 'url' in scene;\n  }\n\n  export function isWithOptions (scene: any): scene is URLType {\n    return isObject(scene) && 'options' in scene;\n  }\n}\n\n/**\n * 场景加载参数\n */\nexport interface SceneLoadOptions {\n  /**\n   * 动态数据的参数\n   * key 是 JSON 中配置的字段名\n   * value 是要使用的值，图片使用 url 链接\n   * 图片链接可以使用数组传递，如果第一个加载失败，将尝试使用第二个地址\n   *\n   * @example\n   * ``` ts\n   * {\n   *   variables: {\n   *     bg: ['url','fallback_url'], // 如果两个图片都失败，将会触发加载失败\n   *     fg: 'url' // 如果图片加载失败，将会触发加载失败,\n   *     amount: 88.8,\n   *     name: 'abc'\n   *   }\n   * }\n   * ```\n   */\n  variables?: spec.TemplateVariables,\n\n  /**\n   * 是否使用压缩纹理\n   * @default undefined\n   */\n  useCompressedTexture?: boolean,\n\n  /**\n   * 是否使用 Hevc 视频\n   * @default undefined\n   */\n  useHevcVideo?: boolean,\n\n  /**\n   * 渲染分级。\n   * 分级之后，只会加载当前渲染等级的资源。\n   * 当渲染等级被设置为 B 后，player 的 fps 会降到 30 帧\n   * @default 'S'\n   */\n  renderLevel?: SceneRenderLevel,\n\n  /**\n   * 资源加载超时，时间单位秒\n   * @default 10s\n   */\n  timeout?: number,\n\n  /***\n   * 用于给 plugin 的加载数据\n   * key/value 的内容由 plugin 自己实现\n   */\n  pluginData?: Record<string, any>,\n\n  /**\n   * 场景加载时的环境（加载后把 env 结果写入 scene）\n   * @default '' - 编辑器中为 'editor'\n   */\n  env?: string,\n\n  /**\n   * 加载后是否自动播放\n   * @default true\n   */\n  autoplay?: boolean,\n  /**\n   * 合成播放完成后是否需要再使用，是的话生命周期结束后不会 `dispose`\n   * @default false\n   */\n  reusable?: boolean,\n  /**\n   * 播放速度，当速度为负数时，合成倒播\n   * @default 1\n   */\n  speed?: number,\n  /**\n   * 是否禁用 AVIF 图片\n   * @default undefined\n   */\n  disableAVIF?: boolean,\n  /**\n   * 是否禁用 WebP 图片\n   * @default undefined\n   */\n  disableWebP?: boolean,\n}\n","import type * as spec from '@galacean/effects-specification';\nimport { loadImage } from './downloader';\nimport { isString } from './utils';\n\nexport function getBackgroundImage (\n  template: spec.TemplateContent,\n  variables?: spec.TemplateVariables,\n) {\n  let templateBackground;\n  const { name, url } = template?.background ?? {};\n\n  if (name) {\n    if (variables && variables[name]) {\n      templateBackground = variables[name];\n    } else if (url) {\n      templateBackground = url;\n    }\n  }\n\n  return templateBackground;\n}\n\n/**\n * @param url\n * @param template\n * @param variables\n * @param options\n * @returns\n */\nexport async function combineImageTemplate (\n  url: string | HTMLImageElement,\n  template?: spec.TemplateContent,\n  variables?: spec.TemplateVariables,\n) {\n  let image;\n\n  if (typeof url === 'string') {\n    image = await loadImage(url);\n  } else {\n    image = url;\n  }\n\n  if (!image) {\n    throw new Error('Image not provided.');\n  }\n\n  if (!template) {\n    return image;\n  }\n\n  // 获取动态换图的图片对象或 url 地址\n  const templateBackground = getBackgroundImage(template, variables);\n\n  if (templateBackground) {\n    if (isString(templateBackground) && templateBackground !== image.src) {\n      return loadImage(templateBackground);\n    }\n    if (templateBackground instanceof HTMLImageElement) {\n      return templateBackground;\n    }\n  }\n\n  return image;\n}\n","import * as spec from '@galacean/effects-specification';\nimport { getStandardJSON } from './fallback';\nimport { glContext } from './gl';\nimport { passRenderLevel } from './pass-render-level';\nimport { PluginSystem, getPluginUsageInfo, pluginLoaderMap } from './plugin-system';\nimport type { JSONValue } from './downloader';\nimport { Downloader, loadWebPOptional, loadImage, loadVideo, loadMedia, loadAVIFOptional } from './downloader';\nimport type { ImageLike, SceneLoadOptions } from './scene';\nimport { Scene } from './scene';\nimport type { Disposable } from './utils';\nimport { isObject, isString, logger, isValidFontFamily, isCanvas, base64ToFile } from './utils';\nimport type { TextureSourceOptions, Texture2DSourceOptionsCompressed } from './texture';\nimport { deserializeMipmapTexture, TextureSourceType, Texture } from './texture';\nimport type { Renderer } from './render';\nimport { combineImageTemplate, getBackgroundImage } from './template-image';\nimport { textureLoaderRegistry } from './texture/texture-loader';\n\nlet seed = 1;\n\n/**\n * 资源管理器\n * 用于加载和动效中所有的资源文件，包括图片、插件、图层粒子数据等\n */\nexport class AssetManager implements Disposable {\n  /**\n   * 相对 url 的基本路径\n   */\n  private baseUrl: string;\n  /**\n   * 图像资源，用于创建和释放 GPU 纹理资源\n   */\n  private assets: Record<string, ImageLike> = {};\n  /**\n   * TextureSource 来源\n   */\n  private sourceFrom: Record<string, { url: string, type: TextureSourceType }> = {};\n  /**\n   * 自定义文本缓存，随页面销毁而销毁\n   */\n  private static fontCache: Set<string> = new Set();\n\n  private id = seed++;\n  /**\n   * 加载超时时间\n   * @default 10\n   */\n  private timeout: number;\n  /**\n   * 场景加载的超时定时器\n   */\n  private timers: number[] = [];\n\n  /**\n   * 字体加载方法\n   * @param fonts - 字体定义数组\n   * @param [baseUrl=location.href] - URL 的 base 字段\n   * @returns\n   */\n  static async loadFontFamily (\n    fonts: spec.FontDefine[],\n    baseUrl = location.href,\n  ) {\n    // 对老数据的兼容\n    if (!fonts) {\n      return;\n    }\n\n    const jobs = fonts.map(async font => {\n      // 数据模版兼容判断\n      if (font.fontURL && !AssetManager.fontCache.has(font.fontFamily)) {\n        if (!isValidFontFamily(font.fontFamily)) {\n          // 在所有设备上提醒开发者\n          console.warn(`Risky font family: ${font.fontFamily}.`);\n        }\n        try {\n          const url = new URL(font.fontURL, baseUrl).href;\n          const fontFace = new FontFace(font.fontFamily ?? '', 'url(' + url + ')');\n\n          await fontFace.load();\n          document.fonts.add(fontFace);\n          AssetManager.fontCache.add(font.fontFamily);\n        } catch (_) {\n          logger.warn(`Invalid font family or font source: ${JSON.stringify(font.fontURL)}.`);\n        }\n      }\n    });\n\n    return Promise.all(jobs);\n  }\n\n  /**\n   * 构造函数\n   * @param options - 场景加载参数\n   * @param downloader - 资源下载对象\n   */\n  constructor (\n    public options: SceneLoadOptions = {},\n    private readonly downloader = new Downloader(),\n  ) {\n    this.updateOptions(options);\n  }\n\n  updateOptions (options: SceneLoadOptions = {}) {\n    this.options = options;\n    if (!options.pluginData) {\n      options.pluginData = {};\n    }\n    const { timeout = 10 } = options;\n\n    this.timeout = timeout;\n  }\n\n  /**\n   * 场景创建，通过 json 创建出场景对象，并进行提前编译等工作\n   * @param url - json 的 URL 链接或者 json 对象\n   * @param renderer - renderer 对象，用于获取管理、编译 shader 及 GPU 上下文的参数\n   * @param options - 扩展参数\n   * @returns\n   */\n  async loadScene (url: Scene.LoadType, renderer?: Renderer): Promise<Scene> {\n    let rawJSON: Scene.LoadType;\n    const assetUrl = isString(url) ? url : this.id;\n    const startTime = performance.now();\n    const timeInfoMessages: string[] = [];\n    const gpuInstance = renderer?.engine.gpuCapability;\n    const isKTX2Supported = gpuInstance?.detail.ktx2Support ?? false;\n    const timeInfos: Record<string, number> = {};\n    let loadTimer: number;\n    let cancelLoading = false;\n\n    const waitPromise = new Promise<Scene>((resolve, reject) => {\n      loadTimer = window.setTimeout(() => {\n        cancelLoading = true;\n        this.removeTimer(loadTimer);\n        const totalTime = performance.now() - startTime;\n\n        reject(new Error(`Load time out: totalTime: ${totalTime.toFixed(4)}ms ${timeInfoMessages.join(' ')}, url: ${assetUrl}.`));\n      }, this.timeout * 1000);\n      this.timers.push(loadTimer);\n    });\n\n    const hookTimeInfo = async<T> (label: string, func: () => Promise<T>) => {\n      if (!cancelLoading) {\n        const st = performance.now();\n\n        try {\n          const result = await func();\n          const time = performance.now() - st;\n\n          timeInfoMessages.push(`[${label}: ${time.toFixed(2)}]`);\n          timeInfos[label] = time;\n\n          return result;\n        } catch (e) {\n          throw new Error(`Load error in ${label}, ${e}.`);\n        }\n      }\n      throw new Error('Load canceled.');\n    };\n    const loadResourcePromise = async () => {\n      let scene: Scene;\n\n      if (isString(url)) {\n        // 兼容相对路径\n        const link = new URL(url, location.href).href;\n\n        this.baseUrl = link;\n        rawJSON = await hookTimeInfo('loadJSON', () => this.loadJSON(link) as unknown as Promise<spec.JSONScene>);\n\n        // 小程序环境下，如果产物是相对路径，adapter 返回的是字符串，需要兼容\n        if (isString(rawJSON)) {\n          rawJSON = JSON.parse(rawJSON);\n        }\n      } else {\n        // url 为 spec.JSONScene 或 Scene 对象\n        rawJSON = url;\n        this.baseUrl = location.href;\n      }\n\n      if (Scene.isJSONObject(rawJSON)) {\n        scene = {\n          ...rawJSON,\n        };\n      } else {\n        // TODO: JSONScene 中 bins 的类型可能为 ArrayBuffer[]\n        const { jsonScene } = await hookTimeInfo('processJSON', () => this.processJSON(rawJSON as JSONValue));\n\n        scene = {\n          timeInfos,\n          url,\n          storage: {},\n          jsonScene,\n          bins: [],\n          textureOptions: [],\n          textures: [],\n          images: [],\n          assets: this.assets,\n        };\n\n        await hookTimeInfo('plugin:onAssetsLoadStart', () => this.onPluginSceneLoadStart(scene));\n\n        const { bins = [], images, fonts } = jsonScene;\n\n        const [loadedBins, loadedImages] = await Promise.all([\n          hookTimeInfo('processBins', () => this.processBins(bins)),\n          hookTimeInfo('processImages', () => this.processImages(images, isKTX2Supported)),\n          hookTimeInfo('processFontURL', () => this.processFontURL(fonts as spec.FontDefine[])),\n        ]);\n        const loadedTextures = await hookTimeInfo('processTextures', () => this.processTextures(loadedImages, loadedBins, jsonScene));\n\n        scene.bins.push(...loadedBins);\n        scene.textureOptions.push(...loadedTextures);\n        scene.images.push(...loadedImages);\n\n        // 降级插件会修改 this.options.renderLevel, 在 processPluginAssets 后赋值\n        scene.renderLevel = this.options.renderLevel;\n      }\n\n      const totalTime = performance.now() - startTime;\n\n      logger.info(`Load asset: totalTime: ${totalTime.toFixed(4)}ms ${timeInfoMessages.join(' ')}, url: ${assetUrl}.`);\n      window.clearTimeout(loadTimer);\n      this.removeTimer(loadTimer);\n      scene.totalTime = totalTime;\n      scene.startTime = startTime;\n      // 各部分分段时长\n      scene.timeInfos = timeInfos;\n\n      return scene;\n    };\n\n    return Promise.race([waitPromise, loadResourcePromise()]);\n  }\n\n  getAssets () {\n    return this.assets;\n  }\n\n  private async processJSON (json: JSONValue) {\n    const jsonScene = getStandardJSON(json);\n    const { plugins = [] } = jsonScene;\n\n    for (const customPluginName of plugins) {\n      if (!pluginLoaderMap[customPluginName]) {\n        throw new Error(`The plugin '${customPluginName}' not found.` + getPluginUsageInfo(customPluginName));\n      }\n    }\n\n    return {\n      jsonScene,\n    };\n  }\n\n  private async processBins (bins: (spec.BinaryFile | ArrayBuffer)[]) {\n    const { renderLevel } = this.options;\n    const baseUrl = this.baseUrl;\n    const jobs = bins.map(bin => {\n      if (bin instanceof ArrayBuffer) {\n        return bin;\n      }\n      if (passRenderLevel(bin.renderLevel, renderLevel)) {\n        return this.loadBins(new URL(bin.url, baseUrl).href);\n      }\n\n      throw new Error(`Invalid bins source: ${JSON.stringify(bins)}.`);\n    });\n\n    return Promise.all(jobs);\n  }\n\n  private async processFontURL (fonts: spec.FontDefine[]) {\n    return AssetManager.loadFontFamily(fonts, this.baseUrl);\n  }\n\n  private async processImages (\n    images: spec.ImageSource[],\n    canUseKTX2 = false,\n  ): Promise<ImageLike[]> {\n    const { useCompressedTexture, variables, disableWebP, disableAVIF } = this.options;\n    const baseUrl = this.baseUrl;\n    const jobs = images.map(async (img, idx: number) => {\n      const { url: png, webp, avif } = img;\n      const { ktx2 } = img as spec.CompressedImage;\n      // eslint-disable-next-line compat/compat\n      const imageURL = new URL(png, baseUrl).href;\n      // eslint-disable-next-line compat/compat\n      const webpURL = (!disableWebP && webp) ? new URL(webp, baseUrl).href : undefined;\n      // eslint-disable-next-line compat/compat\n      const avifURL = (!disableAVIF && avif) ? new URL(avif, baseUrl).href : undefined;\n      // eslint-disable-next-line compat/compat\n      const ktx2URL = (ktx2 && useCompressedTexture && canUseKTX2) ? new URL(ktx2, baseUrl).href : undefined;\n\n      const id = img.id;\n\n      if ('template' in img) {\n        // 1. 数据模板\n        const template = img.template;\n        // 获取数据模板 background 参数\n        const background = template.background;\n\n        if (background) {\n          const url = getBackgroundImage(template, variables);\n          const isVideo = background.type === spec.BackgroundType.video;\n          // 根据背景类型确定加载函数\n          const loadFn = background && isVideo ? loadVideo : loadImage;\n\n          // 处理加载资源\n          try {\n            const resultImage = await loadMedia(url as string | string[], loadFn);\n\n            if (resultImage instanceof HTMLVideoElement) {\n              this.sourceFrom[id] = { url: resultImage.src, type: TextureSourceType.video };\n\n              return resultImage;\n            } else {\n              // 如果是加载图片且是数组，设置变量，视频情况下不需要\n              if (background && Array.isArray(url) && variables) {\n                variables[background.name] = resultImage.src;\n              }\n\n              this.sourceFrom[id] = { url: resultImage.src, type: TextureSourceType.image };\n\n              return await combineImageTemplate(\n                resultImage,\n                template,\n                variables,\n              );\n            }\n          } catch (e) {\n            throw new Error(`Failed to load. Check the template or if the URL is ${isVideo ? 'video' : 'image'} type, URL: ${url}, Error: ${(e as Error).message || e}.`);\n          }\n        }\n      } else if ('ktx2' in img && ktx2URL) {\n        // ktx2 压缩纹理\n        this.sourceFrom[id] = { url: ktx2URL, type: TextureSourceType.compressed };\n\n        return this.loadBins(ktx2URL);\n      } else if (\n        img instanceof HTMLImageElement ||\n        img instanceof HTMLCanvasElement ||\n        img instanceof HTMLVideoElement ||\n        img instanceof Texture\n      ) {\n        return img;\n      }\n\n      const { url, image } = avifURL\n        ? await loadAVIFOptional(imageURL, avifURL)\n        : await loadWebPOptional(imageURL, webpURL);\n\n      this.sourceFrom[id] = { url, type: TextureSourceType.image };\n\n      return image;\n    });\n    const loadedImages = await Promise.all(jobs);\n\n    this.assignImagesToAssets(images, loadedImages);\n\n    return loadedImages;\n  }\n\n  private async onPluginSceneLoadStart (scene: Scene) {\n    await PluginSystem.onAssetsLoadStart(scene, this.options);\n  }\n\n  private async processTextures (\n    images: ImageLike[],\n    bins: ArrayBuffer[],\n    jsonScene: spec.JSONScene,\n  ) {\n    const textures = jsonScene.textures ?? images.map((img, source: number) => ({ source })) as spec.SerializedTextureSource[];\n    const jobs = textures.map(async (textureOptions, idx) => {\n      if (textureOptions instanceof Texture) {\n        return textureOptions;\n      }\n      if ('mipmaps' in textureOptions) {\n        try {\n          return await deserializeMipmapTexture(textureOptions, bins, this.assets, jsonScene.bins);\n        } catch (e) {\n          throw new Error(`Load texture ${idx} fails, error message: ${e}.`);\n        }\n      }\n\n      const { source, id } = textureOptions;\n      let image: ImageLike | undefined;\n      let imageId = '';\n\n      if (isObject(source)) { // source 为 images 数组 id\n        image = this.assets[source.id as string];\n        imageId = source.id as string;\n      } else if (typeof source === 'string') { // source 为 base64 数据\n        image = await loadImage(base64ToFile(source));\n      }\n\n      if (image) {\n        const texture = await createTextureOptionsBySource(image, this.sourceFrom[imageId], id);\n\n        return texture.sourceType === TextureSourceType.compressed ? texture : { ...texture, ...textureOptions };\n      }\n      throw new Error(`Invalid texture source: ${source}.`);\n    });\n\n    return Promise.all(jobs);\n  }\n\n  private async loadJSON (url: string) {\n    return new Promise<JSONValue>((resolve, reject) => {\n      this.downloader.downloadJSON(\n        url,\n        resolve,\n        (status, responseText) => {\n          reject(`Couldn't load JSON ${JSON.stringify(url)}: status ${status}, ${responseText}`);\n        });\n    });\n  }\n\n  private async loadBins (url: string) {\n    return new Promise<ArrayBuffer>((resolve, reject) => {\n      this.downloader.downloadBinary(\n        url,\n        resolve,\n        (status, responseText) => {\n          reject(`Couldn't load bins ${JSON.stringify(url)}: status ${status}, ${responseText}`);\n        });\n    });\n  }\n\n  private assignImagesToAssets (images: spec.ImageSource[], loadedImages: ImageLike[]) {\n    for (let i = 0; i < images.length; i++) {\n      this.assets[images[i].id] = loadedImages[i];\n    }\n  }\n\n  private removeTimer (id: number) {\n    const index = this.timers.indexOf(id);\n\n    if (index !== -1) {\n      this.timers.splice(index, 1);\n    }\n  }\n  /**\n   * 销毁方法\n   */\n  dispose (): void {\n    if (this.timers.length) {\n      this.timers.map(id => window.clearTimeout(id));\n    }\n    this.assets = {};\n    this.sourceFrom = {};\n    this.timers = [];\n  }\n}\n\nasync function createTextureOptionsBySource (\n  image: TextureSourceOptions | ImageLike,\n  sourceFrom: { url: string, type: TextureSourceType },\n  id?: string,\n) {\n  const options = {\n    id,\n    dataType: spec.DataType.Texture,\n  };\n\n  if (image instanceof Texture) {\n    return {\n      ...image.source,\n      ...options,\n    };\n  } else if (\n    image instanceof HTMLImageElement ||\n    isCanvas(image as HTMLCanvasElement)\n  ) {\n    return {\n      image,\n      sourceType: TextureSourceType.image,\n      sourceFrom,\n      keepImageSource: true,\n      minFilter: glContext.LINEAR,\n      magFilter: glContext.LINEAR,\n      ...options,\n    };\n  } else if (image instanceof HTMLVideoElement) {\n    // 视频\n    return {\n      sourceType: TextureSourceType.video,\n      video: image,\n      minFilter: glContext.LINEAR,\n      magFilter: glContext.LINEAR,\n      ...options,\n    };\n  } else if (image instanceof ArrayBuffer) {\n    // 压缩纹理\n    const loader = textureLoaderRegistry.getLoader('ktx2');\n\n    if (loader) {\n      try {\n        const textureData = await loader.loadFromBuffer(image) as Texture2DSourceOptionsCompressed;\n\n        return {\n          sourceType: textureData.sourceType,\n          type: textureData.type,\n          target: textureData.target,\n          internalFormat: textureData.internalFormat,\n          format: textureData.format,\n          mipmaps: textureData.mipmaps,\n          minFilter: glContext.LINEAR,\n          magFilter: glContext.LINEAR,\n          sourceFrom,\n          ...options,\n        };\n      } catch (e) {\n        throw new Error(`Failed to parse KTX2 from ${sourceFrom?.url ?? 'buffer'}: ${(e as Error).message || e}`);\n      }\n    } else {\n      throw new Error('KTX2 loader not found. Please register it first.');\n    }\n  } else if (\n    'width' in image &&\n    'height' in image &&\n    'data' in image\n  ) {\n    return {\n      sourceType: TextureSourceType.data,\n      data: image,\n      wrapS: glContext.CLAMP_TO_EDGE,\n      wrapT: glContext.CLAMP_TO_EDGE,\n      minFilter: glContext.NEAREST,\n      magFilter: glContext.NEAREST,\n      ...options,\n    };\n  }\n\n  throw new Error('Invalid texture options.');\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Disposable } from './utils';\nimport type { Engine } from './engine';\nimport type { ImageLike, SceneLoadOptions } from './scene';\nimport { Scene } from './scene';\nimport type { Texture } from './texture';\nimport type { EffectsObject } from './effects-object';\nimport { Asset } from './asset';\nimport { Material } from './material';\n\n/**\n *\n */\nexport class AssetService implements Disposable {\n  private readonly builtinObjects: EffectsObject[] = [];\n\n  /**\n   *\n   * @param engine\n   */\n  constructor (\n    private readonly engine: Engine,\n  ) {\n    this.builtinObjects.push(engine.whiteTexture);\n    this.builtinObjects.push(engine.transparentTexture);\n  }\n\n  /**\n   * @param url\n   * @param options\n   * @returns\n   */\n  assembleSceneLoadOptions (\n    url: Scene.LoadType,\n    options: SceneLoadOptions = {},\n  ) {\n    let source: Scene.LoadType = url;\n\n    // 加载多个合成链接并各自设置可选参数\n    if (Scene.isURL(url)) {\n      if (!Scene.isJSONObject(url)) {\n        source = url.url;\n      }\n      if (Scene.isWithOptions(url)) {\n        options = {\n          ...options,\n          ...url.options,\n        };\n      }\n    }\n\n    return {\n      source,\n      options,\n    };\n  }\n\n  /**\n   * 根据用户参数修改文本元素的原始数据\n   * @param scene\n   * @param options\n   */\n  updateTextVariables (\n    scene: Scene,\n    variables: spec.TemplateVariables = {},\n  ) {\n    scene.jsonScene.items.forEach(item => {\n      if (item.type === spec.ItemType.text || item.type === spec.ItemType.richtext) {\n        const textVariable = variables[item.name] as string;\n\n        if (textVariable === undefined || textVariable === null) {\n          return;\n        }\n\n        item.components.forEach(({ id }) => {\n          const componentData = this.engine.findEffectsObjectData(id) as spec.TextComponentData;\n\n          if (componentData?.dataType === spec.DataType.TextComponent || componentData?.dataType === spec.DataType.RichTextComponent) {\n            componentData.options.text = textVariable;\n          }\n        });\n      }\n    });\n  }\n\n  initializeTexture (scene: Scene) {\n    for (let i = 0; i < scene.textureOptions.length; i++) {\n      scene.textures[i] = this.engine.findObject<Texture>({ id: scene.textureOptions[i].id });\n      scene.textures[i].initialize();\n    }\n  }\n\n  prepareAssets (\n    scene: Scene,\n    assets: Record<string, ImageLike>,\n  ) {\n    for (const assetId of Object.keys(assets)) {\n      const asset = assets[assetId];\n      const engineAsset = new Asset(this.engine);\n\n      engineAsset.data = asset;\n      engineAsset.setInstanceId(assetId);\n    }\n\n    // 加入 json 资产数据\n    this.engine.addPackageDatas(scene);\n\n    // 加入内置引擎对象\n    for (const effectsObject of this.builtinObjects) {\n      this.engine.addInstance(effectsObject);\n    }\n  }\n\n  // TODO Material 单独存表, 加速查询\n  createShaderVariant () {\n    for (const guid of Object.keys(this.engine.objectInstance)) {\n      const effectsObject = this.engine.objectInstance[guid];\n\n      if (effectsObject instanceof Material) {\n        effectsObject.createShaderVariant();\n      }\n    }\n  }\n\n  private destroyBuiltinObjects () {\n    for (const effectsObject of this.builtinObjects) {\n      effectsObject.dispose();\n    }\n\n    this.builtinObjects.length = 0;\n  }\n\n  /**\n   *\n   */\n  dispose (): void {\n    this.destroyBuiltinObjects();\n    // Optionally remove references from engine if any\n  }\n}\n","export const SIZEOF_SHORT = 2;\nexport const SIZEOF_INT = 4;\nexport const FILE_IDENTIFIER_LENGTH = 4;\nexport const SIZE_PREFIX_LENGTH = 4;\n","export const int32 = new Int32Array(2);\nexport const float32 = new Float32Array(int32.buffer);\nexport const float64 = new Float64Array(int32.buffer);\nexport const isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n","export var Encoding;\n(function (Encoding) {\n    Encoding[Encoding[\"UTF8_BYTES\"] = 1] = \"UTF8_BYTES\";\n    Encoding[Encoding[\"UTF16_STRING\"] = 2] = \"UTF16_STRING\";\n})(Encoding || (Encoding = {}));\n","import { FILE_IDENTIFIER_LENGTH, SIZEOF_INT } from \"./constants.js\";\nimport { int32, isLittleEndian, float32, float64 } from \"./utils.js\";\nimport { Encoding } from \"./encoding.js\";\nexport class ByteBuffer {\n    /**\n     * Create a new ByteBuffer with a given array of bytes (`Uint8Array`)\n     */\n    constructor(bytes_) {\n        this.bytes_ = bytes_;\n        this.position_ = 0;\n        this.text_decoder_ = new TextDecoder();\n    }\n    /**\n     * Create and allocate a new ByteBuffer with a given size.\n     */\n    static allocate(byte_size) {\n        return new ByteBuffer(new Uint8Array(byte_size));\n    }\n    clear() {\n        this.position_ = 0;\n    }\n    /**\n     * Get the underlying `Uint8Array`.\n     */\n    bytes() {\n        return this.bytes_;\n    }\n    /**\n     * Get the buffer's position.\n     */\n    position() {\n        return this.position_;\n    }\n    /**\n     * Set the buffer's position.\n     */\n    setPosition(position) {\n        this.position_ = position;\n    }\n    /**\n     * Get the buffer's capacity.\n     */\n    capacity() {\n        return this.bytes_.length;\n    }\n    readInt8(offset) {\n        return this.readUint8(offset) << 24 >> 24;\n    }\n    readUint8(offset) {\n        return this.bytes_[offset];\n    }\n    readInt16(offset) {\n        return this.readUint16(offset) << 16 >> 16;\n    }\n    readUint16(offset) {\n        return this.bytes_[offset] | this.bytes_[offset + 1] << 8;\n    }\n    readInt32(offset) {\n        return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;\n    }\n    readUint32(offset) {\n        return this.readInt32(offset) >>> 0;\n    }\n    readInt64(offset) {\n        return BigInt.asIntN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n    }\n    readUint64(offset) {\n        return BigInt.asUintN(64, BigInt(this.readUint32(offset)) + (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n    }\n    readFloat32(offset) {\n        int32[0] = this.readInt32(offset);\n        return float32[0];\n    }\n    readFloat64(offset) {\n        int32[isLittleEndian ? 0 : 1] = this.readInt32(offset);\n        int32[isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n        return float64[0];\n    }\n    writeInt8(offset, value) {\n        this.bytes_[offset] = value;\n    }\n    writeUint8(offset, value) {\n        this.bytes_[offset] = value;\n    }\n    writeInt16(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n    }\n    writeUint16(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n    }\n    writeInt32(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n        this.bytes_[offset + 2] = value >> 16;\n        this.bytes_[offset + 3] = value >> 24;\n    }\n    writeUint32(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n        this.bytes_[offset + 2] = value >> 16;\n        this.bytes_[offset + 3] = value >> 24;\n    }\n    writeInt64(offset, value) {\n        this.writeInt32(offset, Number(BigInt.asIntN(32, value)));\n        this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32))));\n    }\n    writeUint64(offset, value) {\n        this.writeUint32(offset, Number(BigInt.asUintN(32, value)));\n        this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32))));\n    }\n    writeFloat32(offset, value) {\n        float32[0] = value;\n        this.writeInt32(offset, int32[0]);\n    }\n    writeFloat64(offset, value) {\n        float64[0] = value;\n        this.writeInt32(offset, int32[isLittleEndian ? 0 : 1]);\n        this.writeInt32(offset + 4, int32[isLittleEndian ? 1 : 0]);\n    }\n    /**\n     * Return the file identifier.   Behavior is undefined for FlatBuffers whose\n     * schema does not include a file_identifier (likely points at padding or the\n     * start of a the root vtable).\n     */\n    getBufferIdentifier() {\n        if (this.bytes_.length < this.position_ + SIZEOF_INT +\n            FILE_IDENTIFIER_LENGTH) {\n            throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.');\n        }\n        let result = \"\";\n        for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\n            result += String.fromCharCode(this.readInt8(this.position_ + SIZEOF_INT + i));\n        }\n        return result;\n    }\n    /**\n     * Look up a field in the vtable, return an offset into the object, or 0 if the\n     * field is not present.\n     */\n    __offset(bb_pos, vtable_offset) {\n        const vtable = bb_pos - this.readInt32(bb_pos);\n        return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;\n    }\n    /**\n     * Initialize any Table-derived type to point to the union at the given offset.\n     */\n    __union(t, offset) {\n        t.bb_pos = offset + this.readInt32(offset);\n        t.bb = this;\n        return t;\n    }\n    /**\n     * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n     * This allocates a new string and converts to wide chars upon each access.\n     *\n     * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the\n     * \"optionalEncoding\" argument. This is useful for avoiding conversion when\n     * the data will just be packaged back up in another FlatBuffer later on.\n     *\n     * @param offset\n     * @param opt_encoding Defaults to UTF16_STRING\n     */\n    __string(offset, opt_encoding) {\n        offset += this.readInt32(offset);\n        const length = this.readInt32(offset);\n        offset += SIZEOF_INT;\n        const utf8bytes = this.bytes_.subarray(offset, offset + length);\n        if (opt_encoding === Encoding.UTF8_BYTES)\n            return utf8bytes;\n        else\n            return this.text_decoder_.decode(utf8bytes);\n    }\n    /**\n     * Handle unions that can contain string as its member, if a Table-derived type then initialize it,\n     * if a string then return a new one\n     *\n     * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this\n     * makes the behaviour of __union_with_string different compared to __union\n     */\n    __union_with_string(o, offset) {\n        if (typeof o === 'string') {\n            return this.__string(offset);\n        }\n        return this.__union(o, offset);\n    }\n    /**\n     * Retrieve the relative offset stored at \"offset\"\n     */\n    __indirect(offset) {\n        return offset + this.readInt32(offset);\n    }\n    /**\n     * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n     */\n    __vector(offset) {\n        return offset + this.readInt32(offset) + SIZEOF_INT; // data starts after the length\n    }\n    /**\n     * Get the length of a vector whose offset is stored at \"offset\" in this object.\n     */\n    __vector_len(offset) {\n        return this.readInt32(offset + this.readInt32(offset));\n    }\n    __has_identifier(ident) {\n        if (ident.length != FILE_IDENTIFIER_LENGTH) {\n            throw new Error('FlatBuffers: file identifier must be length ' +\n                FILE_IDENTIFIER_LENGTH);\n        }\n        for (let i = 0; i < FILE_IDENTIFIER_LENGTH; i++) {\n            if (ident.charCodeAt(i) != this.readInt8(this.position() + SIZEOF_INT + i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * A helper function for generating list for obj api\n     */\n    createScalarList(listAccessor, listLength) {\n        const ret = [];\n        for (let i = 0; i < listLength; ++i) {\n            const val = listAccessor(i);\n            if (val !== null) {\n                ret.push(val);\n            }\n        }\n        return ret;\n    }\n    /**\n     * A helper function for generating list for obj api\n     * @param listAccessor function that accepts an index and return data at that index\n     * @param listLength listLength\n     * @param res result list\n     */\n    createObjList(listAccessor, listLength) {\n        const ret = [];\n        for (let i = 0; i < listLength; ++i) {\n            const val = listAccessor(i);\n            if (val !== null) {\n                ret.push(val.unpack());\n            }\n        }\n        return ret;\n    }\n}\n","import { ByteBuffer } from \"./byte-buffer.js\";\nimport { SIZEOF_SHORT, SIZE_PREFIX_LENGTH, SIZEOF_INT, FILE_IDENTIFIER_LENGTH } from \"./constants.js\";\nexport class Builder {\n    /**\n     * Create a FlatBufferBuilder.\n     */\n    constructor(opt_initial_size) {\n        /** Minimum alignment encountered so far. */\n        this.minalign = 1;\n        /** The vtable for the current table. */\n        this.vtable = null;\n        /** The amount of fields we're actually using. */\n        this.vtable_in_use = 0;\n        /** Whether we are currently serializing a table. */\n        this.isNested = false;\n        /** Starting offset of the current struct/table. */\n        this.object_start = 0;\n        /** List of offsets of all vtables. */\n        this.vtables = [];\n        /** For the current vector being built. */\n        this.vector_num_elems = 0;\n        /** False omits default values from the serialized data */\n        this.force_defaults = false;\n        this.string_maps = null;\n        this.text_encoder = new TextEncoder();\n        let initial_size;\n        if (!opt_initial_size) {\n            initial_size = 1024;\n        }\n        else {\n            initial_size = opt_initial_size;\n        }\n        /**\n         * @type {ByteBuffer}\n         * @private\n         */\n        this.bb = ByteBuffer.allocate(initial_size);\n        this.space = initial_size;\n    }\n    clear() {\n        this.bb.clear();\n        this.space = this.bb.capacity();\n        this.minalign = 1;\n        this.vtable = null;\n        this.vtable_in_use = 0;\n        this.isNested = false;\n        this.object_start = 0;\n        this.vtables = [];\n        this.vector_num_elems = 0;\n        this.force_defaults = false;\n        this.string_maps = null;\n    }\n    /**\n     * In order to save space, fields that are set to their default value\n     * don't get serialized into the buffer. Forcing defaults provides a\n     * way to manually disable this optimization.\n     *\n     * @param forceDefaults true always serializes default values\n     */\n    forceDefaults(forceDefaults) {\n        this.force_defaults = forceDefaults;\n    }\n    /**\n     * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n     * called finish(). The actual data starts at the ByteBuffer's current position,\n     * not necessarily at 0.\n     */\n    dataBuffer() {\n        return this.bb;\n    }\n    /**\n     * Get the bytes representing the FlatBuffer. Only call this after you've\n     * called finish().\n     */\n    asUint8Array() {\n        return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());\n    }\n    /**\n     * Prepare to write an element of `size` after `additional_bytes` have been\n     * written, e.g. if you write a string, you need to align such the int length\n     * field is aligned to 4 bytes, and the string data follows it directly. If all\n     * you need to do is alignment, `additional_bytes` will be 0.\n     *\n     * @param size This is the of the new element to write\n     * @param additional_bytes The padding size\n     */\n    prep(size, additional_bytes) {\n        // Track the biggest thing we've ever aligned to.\n        if (size > this.minalign) {\n            this.minalign = size;\n        }\n        // Find the amount of alignment needed such that `size` is properly\n        // aligned after `additional_bytes`\n        const align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);\n        // Reallocate the buffer if needed.\n        while (this.space < align_size + size + additional_bytes) {\n            const old_buf_size = this.bb.capacity();\n            this.bb = Builder.growByteBuffer(this.bb);\n            this.space += this.bb.capacity() - old_buf_size;\n        }\n        this.pad(align_size);\n    }\n    pad(byte_size) {\n        for (let i = 0; i < byte_size; i++) {\n            this.bb.writeInt8(--this.space, 0);\n        }\n    }\n    writeInt8(value) {\n        this.bb.writeInt8(this.space -= 1, value);\n    }\n    writeInt16(value) {\n        this.bb.writeInt16(this.space -= 2, value);\n    }\n    writeInt32(value) {\n        this.bb.writeInt32(this.space -= 4, value);\n    }\n    writeInt64(value) {\n        this.bb.writeInt64(this.space -= 8, value);\n    }\n    writeFloat32(value) {\n        this.bb.writeFloat32(this.space -= 4, value);\n    }\n    writeFloat64(value) {\n        this.bb.writeFloat64(this.space -= 8, value);\n    }\n    /**\n     * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int8` to add the buffer.\n     */\n    addInt8(value) {\n        this.prep(1, 0);\n        this.writeInt8(value);\n    }\n    /**\n     * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int16` to add the buffer.\n     */\n    addInt16(value) {\n        this.prep(2, 0);\n        this.writeInt16(value);\n    }\n    /**\n     * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int32` to add the buffer.\n     */\n    addInt32(value) {\n        this.prep(4, 0);\n        this.writeInt32(value);\n    }\n    /**\n     * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int64` to add the buffer.\n     */\n    addInt64(value) {\n        this.prep(8, 0);\n        this.writeInt64(value);\n    }\n    /**\n     * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `float32` to add the buffer.\n     */\n    addFloat32(value) {\n        this.prep(4, 0);\n        this.writeFloat32(value);\n    }\n    /**\n     * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `float64` to add the buffer.\n     */\n    addFloat64(value) {\n        this.prep(8, 0);\n        this.writeFloat64(value);\n    }\n    addFieldInt8(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt8(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt16(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt16(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt32(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt32(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt64(voffset, value, defaultValue) {\n        if (this.force_defaults || value !== defaultValue) {\n            this.addInt64(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldFloat32(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addFloat32(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldFloat64(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addFloat64(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldOffset(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addOffset(value);\n            this.slot(voffset);\n        }\n    }\n    /**\n     * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n     */\n    addFieldStruct(voffset, value, defaultValue) {\n        if (value != defaultValue) {\n            this.nested(value);\n            this.slot(voffset);\n        }\n    }\n    /**\n     * Structures are always stored inline, they need to be created right\n     * where they're used.  You'll get this assertion failure if you\n     * created it elsewhere.\n     */\n    nested(obj) {\n        if (obj != this.offset()) {\n            throw new TypeError('FlatBuffers: struct must be serialized inline.');\n        }\n    }\n    /**\n     * Should not be creating any other object, string or vector\n     * while an object is being constructed\n     */\n    notNested() {\n        if (this.isNested) {\n            throw new TypeError('FlatBuffers: object serialization must not be nested.');\n        }\n    }\n    /**\n     * Set the current vtable at `voffset` to the current location in the buffer.\n     */\n    slot(voffset) {\n        if (this.vtable !== null)\n            this.vtable[voffset] = this.offset();\n    }\n    /**\n     * @returns Offset relative to the end of the buffer.\n     */\n    offset() {\n        return this.bb.capacity() - this.space;\n    }\n    /**\n     * Doubles the size of the backing ByteBuffer and copies the old data towards\n     * the end of the new buffer (since we build the buffer backwards).\n     *\n     * @param bb The current buffer with the existing data\n     * @returns A new byte buffer with the old data copied\n     * to it. The data is located at the end of the buffer.\n     *\n     * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass\n     * it a uint8Array we need to suppress the type check:\n     * @suppress {checkTypes}\n     */\n    static growByteBuffer(bb) {\n        const old_buf_size = bb.capacity();\n        // Ensure we don't grow beyond what fits in an int.\n        if (old_buf_size & 0xC0000000) {\n            throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n        }\n        const new_buf_size = old_buf_size << 1;\n        const nbb = ByteBuffer.allocate(new_buf_size);\n        nbb.setPosition(new_buf_size - old_buf_size);\n        nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n        return nbb;\n    }\n    /**\n     * Adds on offset, relative to where it will be written.\n     *\n     * @param offset The offset to add.\n     */\n    addOffset(offset) {\n        this.prep(SIZEOF_INT, 0); // Ensure alignment is already done.\n        this.writeInt32(this.offset() - offset + SIZEOF_INT);\n    }\n    /**\n     * Start encoding a new object in the buffer.  Users will not usually need to\n     * call this directly. The FlatBuffers compiler will generate helper methods\n     * that call this method internally.\n     */\n    startObject(numfields) {\n        this.notNested();\n        if (this.vtable == null) {\n            this.vtable = [];\n        }\n        this.vtable_in_use = numfields;\n        for (let i = 0; i < numfields; i++) {\n            this.vtable[i] = 0; // This will push additional elements as needed\n        }\n        this.isNested = true;\n        this.object_start = this.offset();\n    }\n    /**\n     * Finish off writing the object that is under construction.\n     *\n     * @returns The offset to the object inside `dataBuffer`\n     */\n    endObject() {\n        if (this.vtable == null || !this.isNested) {\n            throw new Error('FlatBuffers: endObject called without startObject');\n        }\n        this.addInt32(0);\n        const vtableloc = this.offset();\n        // Trim trailing zeroes.\n        let i = this.vtable_in_use - 1;\n        // eslint-disable-next-line no-empty\n        for (; i >= 0 && this.vtable[i] == 0; i--) { }\n        const trimmed_size = i + 1;\n        // Write out the current vtable.\n        for (; i >= 0; i--) {\n            // Offset relative to the start of the table.\n            this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n        }\n        const standard_fields = 2; // The fields below:\n        this.addInt16(vtableloc - this.object_start);\n        const len = (trimmed_size + standard_fields) * SIZEOF_SHORT;\n        this.addInt16(len);\n        // Search for an existing vtable that matches the current one.\n        let existing_vtable = 0;\n        const vt1 = this.space;\n        outer_loop: for (i = 0; i < this.vtables.length; i++) {\n            const vt2 = this.bb.capacity() - this.vtables[i];\n            if (len == this.bb.readInt16(vt2)) {\n                for (let j = SIZEOF_SHORT; j < len; j += SIZEOF_SHORT) {\n                    if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n                        continue outer_loop;\n                    }\n                }\n                existing_vtable = this.vtables[i];\n                break;\n            }\n        }\n        if (existing_vtable) {\n            // Found a match:\n            // Remove the current vtable.\n            this.space = this.bb.capacity() - vtableloc;\n            // Point table to existing vtable.\n            this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n        }\n        else {\n            // No match:\n            // Add the location of the current vtable to the list of vtables.\n            this.vtables.push(this.offset());\n            // Point table to current vtable.\n            this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n        }\n        this.isNested = false;\n        return vtableloc;\n    }\n    /**\n     * Finalize a buffer, poiting to the given `root_table`.\n     */\n    finish(root_table, opt_file_identifier, opt_size_prefix) {\n        const size_prefix = opt_size_prefix ? SIZE_PREFIX_LENGTH : 0;\n        if (opt_file_identifier) {\n            const file_identifier = opt_file_identifier;\n            this.prep(this.minalign, SIZEOF_INT +\n                FILE_IDENTIFIER_LENGTH + size_prefix);\n            if (file_identifier.length != FILE_IDENTIFIER_LENGTH) {\n                throw new TypeError('FlatBuffers: file identifier must be length ' +\n                    FILE_IDENTIFIER_LENGTH);\n            }\n            for (let i = FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n                this.writeInt8(file_identifier.charCodeAt(i));\n            }\n        }\n        this.prep(this.minalign, SIZEOF_INT + size_prefix);\n        this.addOffset(root_table);\n        if (size_prefix) {\n            this.addInt32(this.bb.capacity() - this.space);\n        }\n        this.bb.setPosition(this.space);\n    }\n    /**\n     * Finalize a size prefixed buffer, pointing to the given `root_table`.\n     */\n    finishSizePrefixed(root_table, opt_file_identifier) {\n        this.finish(root_table, opt_file_identifier, true);\n    }\n    /**\n     * This checks a required field has been set in a given table that has\n     * just been constructed.\n     */\n    requiredField(table, field) {\n        const table_start = this.bb.capacity() - table;\n        const vtable_start = table_start - this.bb.readInt32(table_start);\n        const ok = field < this.bb.readInt16(vtable_start) &&\n            this.bb.readInt16(vtable_start + field) != 0;\n        // If this fails, the caller will show what field needs to be set.\n        if (!ok) {\n            throw new TypeError('FlatBuffers: field ' + field + ' must be set');\n        }\n    }\n    /**\n     * Start a new array/vector of objects.  Users usually will not call\n     * this directly. The FlatBuffers compiler will create a start/end\n     * method for vector types in generated code.\n     *\n     * @param elem_size The size of each element in the array\n     * @param num_elems The number of elements in the array\n     * @param alignment The alignment of the array\n     */\n    startVector(elem_size, num_elems, alignment) {\n        this.notNested();\n        this.vector_num_elems = num_elems;\n        this.prep(SIZEOF_INT, elem_size * num_elems);\n        this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n    }\n    /**\n     * Finish off the creation of an array and all its elements. The array must be\n     * created with `startVector`.\n     *\n     * @returns The offset at which the newly created array\n     * starts.\n     */\n    endVector() {\n        this.writeInt32(this.vector_num_elems);\n        return this.offset();\n    }\n    /**\n     * Encode the string `s` in the buffer using UTF-8. If the string passed has\n     * already been seen, we return the offset of the already written string\n     *\n     * @param s The string to encode\n     * @return The offset in the buffer where the encoded string starts\n     */\n    createSharedString(s) {\n        if (!s) {\n            return 0;\n        }\n        if (!this.string_maps) {\n            this.string_maps = new Map();\n        }\n        if (this.string_maps.has(s)) {\n            return this.string_maps.get(s);\n        }\n        const offset = this.createString(s);\n        this.string_maps.set(s, offset);\n        return offset;\n    }\n    /**\n     * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n     * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n     *\n     * @param s The string to encode\n     * @return The offset in the buffer where the encoded string starts\n     */\n    createString(s) {\n        if (s === null || s === undefined) {\n            return 0;\n        }\n        let utf8;\n        if (s instanceof Uint8Array) {\n            utf8 = s;\n        }\n        else {\n            utf8 = this.text_encoder.encode(s);\n        }\n        this.addInt8(0);\n        this.startVector(1, utf8.length, 1);\n        this.bb.setPosition(this.space -= utf8.length);\n        this.bb.bytes().set(utf8, this.space);\n        return this.endVector();\n    }\n    /**\n     * Create a byte vector.\n     *\n     * @param v The bytes to add\n     * @returns The offset in the buffer where the byte vector starts\n     */\n    createByteVector(v) {\n        if (v === null || v === undefined) {\n            return 0;\n        }\n        this.startVector(1, v.length, 1);\n        this.bb.setPosition(this.space -= v.length);\n        this.bb.bytes().set(v, this.space);\n        return this.endVector();\n    }\n    /**\n     * A helper function to pack an object\n     *\n     * @returns offset of obj\n     */\n    createObjectOffset(obj) {\n        if (obj === null) {\n            return 0;\n        }\n        if (typeof obj === 'string') {\n            return this.createString(obj);\n        }\n        else {\n            return obj.pack(this);\n        }\n    }\n    /**\n     * A helper function to pack a list of object\n     *\n     * @returns list of offsets of each non null object\n     */\n    createObjectOffsetList(list) {\n        const ret = [];\n        for (let i = 0; i < list.length; ++i) {\n            const val = list[i];\n            if (val !== null) {\n                ret.push(this.createObjectOffset(val));\n            }\n            else {\n                throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\n            }\n        }\n        return ret;\n    }\n    createStructOffsetList(list, startFunc) {\n        startFunc(this, list.length);\n        this.createObjectOffsetList(list.slice().reverse());\n        return this.endVector();\n    }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class FBEffectsObjectData implements flatbuffers.IUnpackableObject<FBEffectsObjectDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBEffectsObjectData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBEffectsObjectData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsObjectData):FBEffectsObjectData {\n  return (obj || new FBEffectsObjectData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBEffectsObjectData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsObjectData):FBEffectsObjectData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBEffectsObjectData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ndataType():string|null\ndataType(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\ndataType(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ndata(index: number):number|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n}\n\ndataLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\ndataArray():Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startFBEffectsObjectData(builder:flatbuffers.Builder) {\n  builder.startObject(2);\n}\n\nstatic addDataType(builder:flatbuffers.Builder, dataTypeOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, dataTypeOffset, 0);\n}\n\nstatic addData(builder:flatbuffers.Builder, dataOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(1, dataOffset, 0);\n}\n\nstatic createDataVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset {\n  builder.startVector(1, data.length, 1);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addInt8(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startDataVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(1, numElems, 1);\n}\n\nstatic endFBEffectsObjectData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBEffectsObjectData(builder:flatbuffers.Builder, dataTypeOffset:flatbuffers.Offset, dataOffset:flatbuffers.Offset):flatbuffers.Offset {\n  FBEffectsObjectData.startFBEffectsObjectData(builder);\n  FBEffectsObjectData.addDataType(builder, dataTypeOffset);\n  FBEffectsObjectData.addData(builder, dataOffset);\n  return FBEffectsObjectData.endFBEffectsObjectData(builder);\n}\n\nunpack(): FBEffectsObjectDataT {\n  return new FBEffectsObjectDataT(\n    this.dataType(),\n    this.bb!.createScalarList<number>(this.data.bind(this), this.dataLength())\n  );\n}\n\n\nunpackTo(_o: FBEffectsObjectDataT): void {\n  _o.dataType = this.dataType();\n  _o.data = this.bb!.createScalarList<number>(this.data.bind(this), this.dataLength());\n}\n}\n\nexport class FBEffectsObjectDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public dataType: string|Uint8Array|null = null,\n  public data: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const dataType = (this.dataType !== null ? builder.createString(this.dataType!) : 0);\n  const data = FBEffectsObjectData.createDataVector(builder, this.data);\n\n  return FBEffectsObjectData.createFBEffectsObjectData(builder,\n    dataType,\n    data\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { FBEffectsObjectData, FBEffectsObjectDataT } from './fbeffects-object-data.js';\n\n\nexport class FBEffectsPackageData implements flatbuffers.IUnpackableObject<FBEffectsPackageDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBEffectsPackageData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBEffectsPackageData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsPackageData):FBEffectsPackageData {\n  return (obj || new FBEffectsPackageData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBEffectsPackageData(bb:flatbuffers.ByteBuffer, obj?:FBEffectsPackageData):FBEffectsPackageData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBEffectsPackageData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nexportObjects(index: number, obj?:FBEffectsObjectData):FBEffectsObjectData|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? (obj || new FBEffectsObjectData()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nexportObjectsLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startFBEffectsPackageData(builder:flatbuffers.Builder) {\n  builder.startObject(1);\n}\n\nstatic addExportObjects(builder:flatbuffers.Builder, exportObjectsOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, exportObjectsOffset, 0);\n}\n\nstatic createExportObjectsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startExportObjectsVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic endFBEffectsPackageData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic finishFBEffectsPackageDataBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n  builder.finish(offset);\n}\n\nstatic finishSizePrefixedFBEffectsPackageDataBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {\n  builder.finish(offset, undefined, true);\n}\n\nstatic createFBEffectsPackageData(builder:flatbuffers.Builder, exportObjectsOffset:flatbuffers.Offset):flatbuffers.Offset {\n  FBEffectsPackageData.startFBEffectsPackageData(builder);\n  FBEffectsPackageData.addExportObjects(builder, exportObjectsOffset);\n  return FBEffectsPackageData.endFBEffectsPackageData(builder);\n}\n\nunpack(): FBEffectsPackageDataT {\n  return new FBEffectsPackageDataT(\n    this.bb!.createObjList<FBEffectsObjectData, FBEffectsObjectDataT>(this.exportObjects.bind(this), this.exportObjectsLength())\n  );\n}\n\n\nunpackTo(_o: FBEffectsPackageDataT): void {\n  _o.exportObjects = this.bb!.createObjList<FBEffectsObjectData, FBEffectsObjectDataT>(this.exportObjects.bind(this), this.exportObjectsLength());\n}\n}\n\nexport class FBEffectsPackageDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public exportObjects: (FBEffectsObjectDataT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const exportObjects = FBEffectsPackageData.createExportObjectsVector(builder, builder.createObjectOffsetList(this.exportObjects));\n\n  return FBEffectsPackageData.createFBEffectsPackageData(builder,\n    exportObjects\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class FBSubMesh implements flatbuffers.IUnpackableObject<FBSubMeshT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBSubMesh {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBSubMesh(bb:flatbuffers.ByteBuffer, obj?:FBSubMesh):FBSubMesh {\n  return (obj || new FBSubMesh()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBSubMesh(bb:flatbuffers.ByteBuffer, obj?:FBSubMesh):FBSubMesh {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBSubMesh()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\noffset():number {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nindexCount():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nvertexCount():number {\n  const offset = this.bb!.__offset(this.bb_pos, 8);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nstatic startFBSubMesh(builder:flatbuffers.Builder) {\n  builder.startObject(3);\n}\n\nstatic addOffset(builder:flatbuffers.Builder, offset:number) {\n  builder.addFieldInt32(0, offset, 0);\n}\n\nstatic addIndexCount(builder:flatbuffers.Builder, indexCount:number) {\n  builder.addFieldInt32(1, indexCount, 0);\n}\n\nstatic addVertexCount(builder:flatbuffers.Builder, vertexCount:number) {\n  builder.addFieldInt32(2, vertexCount, 0);\n}\n\nstatic endFBSubMesh(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBSubMesh(builder:flatbuffers.Builder, offset:number, indexCount:number, vertexCount:number):flatbuffers.Offset {\n  FBSubMesh.startFBSubMesh(builder);\n  FBSubMesh.addOffset(builder, offset);\n  FBSubMesh.addIndexCount(builder, indexCount);\n  FBSubMesh.addVertexCount(builder, vertexCount);\n  return FBSubMesh.endFBSubMesh(builder);\n}\n\nunpack(): FBSubMeshT {\n  return new FBSubMeshT(\n    this.offset(),\n    this.indexCount(),\n    this.vertexCount()\n  );\n}\n\n\nunpackTo(_o: FBSubMeshT): void {\n  _o.offset = this.offset();\n  _o.indexCount = this.indexCount();\n  _o.vertexCount = this.vertexCount();\n}\n}\n\nexport class FBSubMeshT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public offset: number = 0,\n  public indexCount: number = 0,\n  public vertexCount: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  return FBSubMesh.createFBSubMesh(builder,\n    this.offset,\n    this.indexCount,\n    this.vertexCount\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class FBVertexChannel implements flatbuffers.IUnpackableObject<FBVertexChannelT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBVertexChannel {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBVertexChannel(bb:flatbuffers.ByteBuffer, obj?:FBVertexChannel):FBVertexChannel {\n  return (obj || new FBVertexChannel()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBVertexChannel(bb:flatbuffers.ByteBuffer, obj?:FBVertexChannel):FBVertexChannel {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBVertexChannel()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsemantic():string|null\nsemantic(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsemantic(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\noffset():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nformat():number {\n  const offset = this.bb!.__offset(this.bb_pos, 8);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\ndimension():number {\n  const offset = this.bb!.__offset(this.bb_pos, 10);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nnormalize():boolean {\n  const offset = this.bb!.__offset(this.bb_pos, 12);\n  return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nstatic startFBVertexChannel(builder:flatbuffers.Builder) {\n  builder.startObject(5);\n}\n\nstatic addSemantic(builder:flatbuffers.Builder, semanticOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, semanticOffset, 0);\n}\n\nstatic addOffset(builder:flatbuffers.Builder, offset:number) {\n  builder.addFieldInt32(1, offset, 0);\n}\n\nstatic addFormat(builder:flatbuffers.Builder, format:number) {\n  builder.addFieldInt32(2, format, 0);\n}\n\nstatic addDimension(builder:flatbuffers.Builder, dimension:number) {\n  builder.addFieldInt32(3, dimension, 0);\n}\n\nstatic addNormalize(builder:flatbuffers.Builder, normalize:boolean) {\n  builder.addFieldInt8(4, +normalize, +false);\n}\n\nstatic endFBVertexChannel(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBVertexChannel(builder:flatbuffers.Builder, semanticOffset:flatbuffers.Offset, offset:number, format:number, dimension:number, normalize:boolean):flatbuffers.Offset {\n  FBVertexChannel.startFBVertexChannel(builder);\n  FBVertexChannel.addSemantic(builder, semanticOffset);\n  FBVertexChannel.addOffset(builder, offset);\n  FBVertexChannel.addFormat(builder, format);\n  FBVertexChannel.addDimension(builder, dimension);\n  FBVertexChannel.addNormalize(builder, normalize);\n  return FBVertexChannel.endFBVertexChannel(builder);\n}\n\nunpack(): FBVertexChannelT {\n  return new FBVertexChannelT(\n    this.semantic(),\n    this.offset(),\n    this.format(),\n    this.dimension(),\n    this.normalize()\n  );\n}\n\n\nunpackTo(_o: FBVertexChannelT): void {\n  _o.semantic = this.semantic();\n  _o.offset = this.offset();\n  _o.format = this.format();\n  _o.dimension = this.dimension();\n  _o.normalize = this.normalize();\n}\n}\n\nexport class FBVertexChannelT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public semantic: string|Uint8Array|null = null,\n  public offset: number = 0,\n  public format: number = 0,\n  public dimension: number = 0,\n  public normalize: boolean = false\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const semantic = (this.semantic !== null ? builder.createString(this.semantic!) : 0);\n\n  return FBVertexChannel.createFBVertexChannel(builder,\n    semantic,\n    this.offset,\n    this.format,\n    this.dimension,\n    this.normalize\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { FBVertexChannel, FBVertexChannelT } from './fbvertex-channel.js';\n\n\nexport class FBVertexData implements flatbuffers.IUnpackableObject<FBVertexDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBVertexData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBVertexData(bb:flatbuffers.ByteBuffer, obj?:FBVertexData):FBVertexData {\n  return (obj || new FBVertexData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBVertexData(bb:flatbuffers.ByteBuffer, obj?:FBVertexData):FBVertexData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBVertexData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nvertexCount():number {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nchannels(index: number, obj?:FBVertexChannel):FBVertexChannel|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? (obj || new FBVertexChannel()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nchannelsLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startFBVertexData(builder:flatbuffers.Builder) {\n  builder.startObject(2);\n}\n\nstatic addVertexCount(builder:flatbuffers.Builder, vertexCount:number) {\n  builder.addFieldInt32(0, vertexCount, 0);\n}\n\nstatic addChannels(builder:flatbuffers.Builder, channelsOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(1, channelsOffset, 0);\n}\n\nstatic createChannelsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startChannelsVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic endFBVertexData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\nstatic createFBVertexData(builder:flatbuffers.Builder, vertexCount:number, channelsOffset:flatbuffers.Offset):flatbuffers.Offset {\n  FBVertexData.startFBVertexData(builder);\n  FBVertexData.addVertexCount(builder, vertexCount);\n  FBVertexData.addChannels(builder, channelsOffset);\n  return FBVertexData.endFBVertexData(builder);\n}\n\nunpack(): FBVertexDataT {\n  return new FBVertexDataT(\n    this.vertexCount(),\n    this.bb!.createObjList<FBVertexChannel, FBVertexChannelT>(this.channels.bind(this), this.channelsLength())\n  );\n}\n\n\nunpackTo(_o: FBVertexDataT): void {\n  _o.vertexCount = this.vertexCount();\n  _o.channels = this.bb!.createObjList<FBVertexChannel, FBVertexChannelT>(this.channels.bind(this), this.channelsLength());\n}\n}\n\nexport class FBVertexDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public vertexCount: number = 0,\n  public channels: (FBVertexChannelT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const channels = FBVertexData.createChannelsVector(builder, builder.createObjectOffsetList(this.channels));\n\n  return FBVertexData.createFBVertexData(builder,\n    this.vertexCount,\n    channels\n  );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { FBSubMesh, FBSubMeshT } from './fbsub-mesh.js';\nimport { FBVertexData, FBVertexDataT } from './fbvertex-data.js';\n\n\nexport class FBGeometryData implements flatbuffers.IUnpackableObject<FBGeometryDataT> {\n  bb: flatbuffers.ByteBuffer|null = null;\n  bb_pos = 0;\n  __init(i:number, bb:flatbuffers.ByteBuffer):FBGeometryData {\n  this.bb_pos = i;\n  this.bb = bb;\n  return this;\n}\n\nstatic getRootAsFBGeometryData(bb:flatbuffers.ByteBuffer, obj?:FBGeometryData):FBGeometryData {\n  return (obj || new FBGeometryData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsFBGeometryData(bb:flatbuffers.ByteBuffer, obj?:FBGeometryData):FBGeometryData {\n  bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n  return (obj || new FBGeometryData()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nid():string|null\nid(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nid(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 4);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nname():string|null\nname(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nname(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 6);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nvertexData(obj?:FBVertexData):FBVertexData|null {\n  const offset = this.bb!.__offset(this.bb_pos, 8);\n  return offset ? (obj || new FBVertexData()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nindexFormat():number {\n  const offset = this.bb!.__offset(this.bb_pos, 10);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nindexOffset():number {\n  const offset = this.bb!.__offset(this.bb_pos, 12);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nsubMeshes(index: number, obj?:FBSubMesh):FBSubMesh|null {\n  const offset = this.bb!.__offset(this.bb_pos, 14);\n  return offset ? (obj || new FBSubMesh()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nsubMeshesLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 14);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nmode():number {\n  const offset = this.bb!.__offset(this.bb_pos, 16);\n  return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\nbuffer():string|null\nbuffer(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nbuffer(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 18);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nbinaryData(index: number):number|null {\n  const offset = this.bb!.__offset(this.bb_pos, 20);\n  return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n}\n\nbinaryDataLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 20);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nbinaryDataArray():Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 20);\n  return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nboneNames(index: number):string\nboneNames(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\nboneNames(index: number,optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 22);\n  return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\nboneNamesLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 22);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nrootBoneName():string|null\nrootBoneName(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nrootBoneName(optionalEncoding?:any):string|Uint8Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 24);\n  return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ninverseBindMatrices(index: number):number|null {\n  const offset = this.bb!.__offset(this.bb_pos, 26);\n  return offset ? this.bb!.readFloat32(this.bb!.__vector(this.bb_pos + offset) + index * 4) : 0;\n}\n\ninverseBindMatricesLength():number {\n  const offset = this.bb!.__offset(this.bb_pos, 26);\n  return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\ninverseBindMatricesArray():Float32Array|null {\n  const offset = this.bb!.__offset(this.bb_pos, 26);\n  return offset ? new Float32Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startFBGeometryData(builder:flatbuffers.Builder) {\n  builder.startObject(12);\n}\n\nstatic addId(builder:flatbuffers.Builder, idOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(0, idOffset, 0);\n}\n\nstatic addName(builder:flatbuffers.Builder, nameOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(1, nameOffset, 0);\n}\n\nstatic addVertexData(builder:flatbuffers.Builder, vertexDataOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(2, vertexDataOffset, 0);\n}\n\nstatic addIndexFormat(builder:flatbuffers.Builder, indexFormat:number) {\n  builder.addFieldInt32(3, indexFormat, 0);\n}\n\nstatic addIndexOffset(builder:flatbuffers.Builder, indexOffset:number) {\n  builder.addFieldInt32(4, indexOffset, 0);\n}\n\nstatic addSubMeshes(builder:flatbuffers.Builder, subMeshesOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(5, subMeshesOffset, 0);\n}\n\nstatic createSubMeshesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startSubMeshesVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic addMode(builder:flatbuffers.Builder, mode:number) {\n  builder.addFieldInt32(6, mode, 0);\n}\n\nstatic addBuffer(builder:flatbuffers.Builder, bufferOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(7, bufferOffset, 0);\n}\n\nstatic addBinaryData(builder:flatbuffers.Builder, binaryDataOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(8, binaryDataOffset, 0);\n}\n\nstatic createBinaryDataVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset {\n  builder.startVector(1, data.length, 1);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addInt8(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startBinaryDataVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(1, numElems, 1);\n}\n\nstatic addBoneNames(builder:flatbuffers.Builder, boneNamesOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(9, boneNamesOffset, 0);\n}\n\nstatic createBoneNamesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addOffset(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startBoneNamesVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic addRootBoneName(builder:flatbuffers.Builder, rootBoneNameOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(10, rootBoneNameOffset, 0);\n}\n\nstatic addInverseBindMatrices(builder:flatbuffers.Builder, inverseBindMatricesOffset:flatbuffers.Offset) {\n  builder.addFieldOffset(11, inverseBindMatricesOffset, 0);\n}\n\nstatic createInverseBindMatricesVector(builder:flatbuffers.Builder, data:number[]|Float32Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createInverseBindMatricesVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createInverseBindMatricesVector(builder:flatbuffers.Builder, data:number[]|Float32Array|Uint8Array):flatbuffers.Offset {\n  builder.startVector(4, data.length, 4);\n  for (let i = data.length - 1; i >= 0; i--) {\n    builder.addFloat32(data[i]!);\n  }\n  return builder.endVector();\n}\n\nstatic startInverseBindMatricesVector(builder:flatbuffers.Builder, numElems:number) {\n  builder.startVector(4, numElems, 4);\n}\n\nstatic endFBGeometryData(builder:flatbuffers.Builder):flatbuffers.Offset {\n  const offset = builder.endObject();\n  return offset;\n}\n\n\nunpack(): FBGeometryDataT {\n  return new FBGeometryDataT(\n    this.id(),\n    this.name(),\n    (this.vertexData() !== null ? this.vertexData()!.unpack() : null),\n    this.indexFormat(),\n    this.indexOffset(),\n    this.bb!.createObjList<FBSubMesh, FBSubMeshT>(this.subMeshes.bind(this), this.subMeshesLength()),\n    this.mode(),\n    this.buffer(),\n    this.bb!.createScalarList<number>(this.binaryData.bind(this), this.binaryDataLength()),\n    this.bb!.createScalarList<string>(this.boneNames.bind(this), this.boneNamesLength()),\n    this.rootBoneName(),\n    this.bb!.createScalarList<number>(this.inverseBindMatrices.bind(this), this.inverseBindMatricesLength())\n  );\n}\n\n\nunpackTo(_o: FBGeometryDataT): void {\n  _o.id = this.id();\n  _o.name = this.name();\n  _o.vertexData = (this.vertexData() !== null ? this.vertexData()!.unpack() : null);\n  _o.indexFormat = this.indexFormat();\n  _o.indexOffset = this.indexOffset();\n  _o.subMeshes = this.bb!.createObjList<FBSubMesh, FBSubMeshT>(this.subMeshes.bind(this), this.subMeshesLength());\n  _o.mode = this.mode();\n  _o.buffer = this.buffer();\n  _o.binaryData = this.bb!.createScalarList<number>(this.binaryData.bind(this), this.binaryDataLength());\n  _o.boneNames = this.bb!.createScalarList<string>(this.boneNames.bind(this), this.boneNamesLength());\n  _o.rootBoneName = this.rootBoneName();\n  _o.inverseBindMatrices = this.bb!.createScalarList<number>(this.inverseBindMatrices.bind(this), this.inverseBindMatricesLength());\n}\n}\n\nexport class FBGeometryDataT implements flatbuffers.IGeneratedObject {\nconstructor(\n  public id: string|Uint8Array|null = null,\n  public name: string|Uint8Array|null = null,\n  public vertexData: FBVertexDataT|null = null,\n  public indexFormat: number = 0,\n  public indexOffset: number = 0,\n  public subMeshes: (FBSubMeshT)[] = [],\n  public mode: number = 0,\n  public buffer: string|Uint8Array|null = null,\n  public binaryData: (number)[] = [],\n  public boneNames: (string)[] = [],\n  public rootBoneName: string|Uint8Array|null = null,\n  public inverseBindMatrices: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n  const id = (this.id !== null ? builder.createString(this.id!) : 0);\n  const name = (this.name !== null ? builder.createString(this.name!) : 0);\n  const vertexData = (this.vertexData !== null ? this.vertexData!.pack(builder) : 0);\n  const subMeshes = FBGeometryData.createSubMeshesVector(builder, builder.createObjectOffsetList(this.subMeshes));\n  const buffer = (this.buffer !== null ? builder.createString(this.buffer!) : 0);\n  const binaryData = FBGeometryData.createBinaryDataVector(builder, this.binaryData);\n  const boneNames = FBGeometryData.createBoneNamesVector(builder, builder.createObjectOffsetList(this.boneNames));\n  const rootBoneName = (this.rootBoneName !== null ? builder.createString(this.rootBoneName!) : 0);\n  const inverseBindMatrices = FBGeometryData.createInverseBindMatricesVector(builder, this.inverseBindMatrices);\n\n  FBGeometryData.startFBGeometryData(builder);\n  FBGeometryData.addId(builder, id);\n  FBGeometryData.addName(builder, name);\n  FBGeometryData.addVertexData(builder, vertexData);\n  FBGeometryData.addIndexFormat(builder, this.indexFormat);\n  FBGeometryData.addIndexOffset(builder, this.indexOffset);\n  FBGeometryData.addSubMeshes(builder, subMeshes);\n  FBGeometryData.addMode(builder, this.mode);\n  FBGeometryData.addBuffer(builder, buffer);\n  FBGeometryData.addBinaryData(builder, binaryData);\n  FBGeometryData.addBoneNames(builder, boneNames);\n  FBGeometryData.addRootBoneName(builder, rootBoneName);\n  FBGeometryData.addInverseBindMatrices(builder, inverseBindMatrices);\n\n  return FBGeometryData.endFBGeometryData(builder);\n}\n}\n","import * as flatbuffers from 'flatbuffers';\nimport * as spec from '@galacean/effects-specification';\nimport {\n  FBEffectsObjectDataT, FBEffectsPackageData, FBEffectsPackageDataT, FBGeometryData,\n  FBGeometryDataT, FBSubMeshT, FBVertexChannelT, FBVertexDataT,\n} from './__definations__';\n\ninterface FileSummary {\n  assetType: string,\n  guid: string,\n}\n\n/**\n * @since 2.0.0\n */\nexport class EffectsPackage {\n  fileSummary: FileSummary;\n  exportObjectDatas: spec.EffectsObjectData[] = [];\n\n  addData (effectsObjectData: spec.EffectsObjectData) {\n    this.exportObjectDatas.push(effectsObjectData);\n  }\n\n  serializeToBinary (): Uint8Array {\n    const fbb = new flatbuffers.Builder(1);\n    const effectsPackage = new FBEffectsPackageDataT();\n    const exportObjects = [];\n\n    for (const effectsObjectData of this.exportObjectDatas) {\n      let fbEffectsObjectData;\n\n      if (effectsObjectData.dataType === spec.DataType.Geometry) {\n        fbEffectsObjectData = new FBEffectsObjectDataT(\n          'Geometry',\n          this.geometryDataToBinary(effectsObjectData as spec.GeometryData) as unknown as number[],\n        );\n      }\n\n      if (!fbEffectsObjectData) {\n        continue;\n      }\n      exportObjects.push(fbEffectsObjectData);\n    }\n    effectsPackage.exportObjects = exportObjects;\n\n    FBEffectsPackageData.finishFBEffectsPackageDataBuffer(fbb, effectsPackage.pack(fbb));\n\n    return fbb.asUint8Array(); // Of type `Uint8Array`.\n  }\n\n  deserializeFromBinary (buffer: Uint8Array) {\n    const buf = new flatbuffers.ByteBuffer(buffer);\n    const fbEffectsPackage = FBEffectsPackageData.getRootAsFBEffectsPackageData(buf);\n\n    for (let i = 0; i < fbEffectsPackage.exportObjectsLength(); i++) {\n      const fbEffectsObjectData = fbEffectsPackage.exportObjects(i);\n\n      if (!fbEffectsObjectData) {\n        continue;\n      }\n\n      const dataBuffer = fbEffectsObjectData.dataArray();\n      const dataType = fbEffectsObjectData.dataType();\n\n      if (!dataBuffer) {\n        continue;\n      }\n      let effectsObjectData;\n\n      if (dataType === spec.DataType.Geometry) {\n        effectsObjectData = this.binaryToGeometryData(dataBuffer);\n      }\n\n      if (!effectsObjectData) {\n        continue;\n      }\n      this.exportObjectDatas.push(effectsObjectData);\n    }\n  }\n\n  private geometryDataToBinary (geometryData: spec.GeometryData): Uint8Array {\n    const fbb = new flatbuffers.Builder(1);\n    const fbGeometryData = new FBGeometryDataT();\n    const {\n      indexFormat, indexOffset, mode, id, vertexData,\n      boneNames = [],\n      rootBoneName = '',\n      inverseBindMatrices = [],\n      binaryData = [],\n    } = geometryData;\n\n    fbGeometryData.indexFormat = indexFormat;\n    fbGeometryData.indexOffset = indexOffset;\n    fbGeometryData.mode = mode;\n    fbGeometryData.id = id;\n    fbGeometryData.boneNames = boneNames;\n    fbGeometryData.rootBoneName = rootBoneName;\n    fbGeometryData.inverseBindMatrices = inverseBindMatrices;\n    fbGeometryData.binaryData = binaryData as unknown as number[];\n    const fbVertexdata = new FBVertexDataT();\n\n    fbVertexdata.vertexCount = vertexData.vertexCount;\n    fbVertexdata.channels = [];\n    for (const channel of vertexData.channels) {\n      const { semantic, offset, format, dimension, normalize } = channel;\n      const fbChannel = new FBVertexChannelT(\n        semantic,\n        offset,\n        format,\n        dimension,\n        normalize,\n      );\n\n      fbVertexdata.channels.push(fbChannel);\n    }\n    fbGeometryData.vertexData = fbVertexdata;\n    const fbSubMeshes = [];\n\n    for (const subMesh of geometryData.subMeshes) {\n      const { offset, indexCount, vertexCount } = subMesh;\n      const fbSubMesh = new FBSubMeshT(\n        offset,\n        indexCount,\n        vertexCount,\n      );\n\n      fbSubMeshes.push(fbSubMesh);\n    }\n    fbGeometryData.subMeshes = fbSubMeshes;\n\n    FBEffectsPackageData.finishFBEffectsPackageDataBuffer(fbb, fbGeometryData.pack(fbb));\n\n    return fbb.asUint8Array(); // Of type `Uint8Array`.\n  }\n\n  private binaryToGeometryData (buffer: Uint8Array): spec.GeometryData {\n    const buf = new flatbuffers.ByteBuffer(buffer);\n    const fbGeometryData = FBGeometryData.getRootAsFBGeometryData(buf);\n    const vertexData: spec.VertexData = {\n      vertexCount: 0,\n      channels: [],\n    };\n    const fbVertexData = fbGeometryData.vertexData();\n\n    if (fbVertexData) {\n      vertexData.vertexCount = fbVertexData.vertexCount();\n\n      for (let i = 0; i < fbVertexData.channelsLength(); i++) {\n        const channel = fbVertexData.channels(i);\n\n        if (!channel) {\n          continue;\n        }\n        const vertexChannel: spec.VertexChannel = {\n          semantic: channel.semantic() ?? '',\n          offset: channel.offset(),\n          format: channel.format(),\n          dimension: channel.dimension(),\n          normalize:channel.normalize(),\n        };\n\n        vertexData.channels.push(vertexChannel);\n      }\n    }\n\n    const subMeshes: spec.SubMesh[] = [];\n\n    for (let i = 0; i < fbGeometryData.subMeshesLength(); i++) {\n      const fbSubMesh = fbGeometryData.subMeshes(i);\n\n      if (!fbSubMesh) {\n        continue;\n      }\n      const subMesh: spec.SubMesh = {\n        offset: fbSubMesh.offset(),\n        vertexCount: fbSubMesh.vertexCount(),\n        indexCount: fbSubMesh.indexCount(),\n      };\n\n      subMeshes.push(subMesh);\n    }\n\n    const boneNames = [];\n\n    for (let i = 0; i < fbGeometryData.boneNamesLength(); i++) {\n      const boneName = fbGeometryData.boneNames(i);\n\n      boneNames.push(boneName);\n    }\n\n    const inverseBindMatricesArray = fbGeometryData.inverseBindMatricesArray();\n    const geometryData: spec.GeometryData = {\n      vertexData,\n      indexFormat: fbGeometryData.indexFormat(),\n      indexOffset: fbGeometryData.indexOffset(),\n      subMeshes,\n      mode: fbGeometryData.mode(),\n      buffer: fbGeometryData.buffer() ?? '',\n      boneNames,\n      rootBoneName: fbGeometryData.rootBoneName() ?? '',\n      inverseBindMatrices: inverseBindMatricesArray ? Array.from(inverseBindMatricesArray) : undefined,\n      binaryData: fbGeometryData.binaryDataArray() ?? undefined,\n      id: fbGeometryData.id() ?? '',\n      dataType: spec.DataType.Geometry,\n    };\n\n    return geometryData;\n  }\n}\n","import { clamp } from '@galacean/effects-math/es/core/utils';\n\nexport const DEFAULT_FPS = 60;\n\n/**\n * 定时器类\n */\nexport class Ticker {\n  tickers: ((dt: number) => void)[];\n\n  private paused = true;\n  private lastTime = 0;\n  private targetFPS: number;\n  private interval: number;\n  private intervalId: number;\n  private resetTickers: boolean;\n  // deltaTime\n  private dt = 0;\n\n  constructor (fps = DEFAULT_FPS) {\n    this.setFPS(fps);\n    this.tickers = [];\n  }\n\n  /**\n   * 获取定时器当前帧更新的时间\n   */\n  get deltaTime () {\n    return this.dt;\n  }\n\n  /**\n   * FPS 帧率设置\n   */\n  getFPS () {\n    return this.targetFPS;\n  }\n  setFPS (fps: number) {\n    this.targetFPS = clamp(fps, 1, 120);\n    // 注意：-2 的原因是保证帧率稳定\n    // interval 在 fps 为 60 的时候设成 15 累计误差会很大，设成 14 较稳定\n    // requestanimationFrame 在不同的刷新率下时间间隔不一样，120hz 的误差在 8 以内，60hz 的误差在 16 以内\n    this.interval = Math.floor(1000 / fps) - 2;\n  }\n\n  /**\n   * 获取定时器暂停标志位\n   * @returns\n   */\n  getPaused () {\n    return this.paused;\n  }\n\n  /**\n   * 定时器开始方法\n   */\n  start () {\n    this.paused = false;\n    this.dt = 0;\n\n    if (!this.intervalId) {\n      this.lastTime = performance.now();\n      const raf = requestAnimationFrame || function (func) {\n        return window.setTimeout(func, 16.7);\n      };\n      const runLoop = () => {\n        this.intervalId = raf(runLoop);\n        if (!this.paused) {\n          this.tick();\n        }\n      };\n\n      runLoop();\n    }\n  }\n\n  /**\n   * 定时器停止方法\n   */\n  stop () {\n    (cancelAnimationFrame || window.clearTimeout)(this.intervalId);\n    this.intervalId = 0;\n    this.lastTime = 0;\n    this.paused = true;\n    this.dt = 0;\n    this.tickers = [];\n  }\n\n  /**\n   * 定时器暂停方法\n   */\n  pause () {\n    this.paused = true;\n    this.dt = 0;\n  }\n\n  /**\n   * 定时器恢复方法\n   */\n  resume () {\n    this.paused = false;\n    this.dt = 0;\n  }\n\n  /**\n   * 定时器 tick 方法\n   */\n  tick () {\n    if (this.paused) {\n      return;\n    }\n    const startTime = performance.now();\n\n    this.dt = startTime - this.lastTime;\n    if (this.dt >= this.interval) {\n      this.lastTime = startTime;\n\n      if (this.resetTickers) {\n        this.tickers = this.tickers.filter(tick => tick);\n        this.resetTickers = false;\n      }\n\n      for (const tick of this.tickers) {\n        tick(this.dt);\n      }\n    }\n  }\n\n  /**\n   * 定时器添加计时方法\n   * @param ticker - 定时器类\n   */\n  add (ticker: (dt: number) => void) {\n    if (typeof ticker !== 'function') {\n      throw new Error('The tick object must implement the tick method.');\n    }\n    this.tickers.push(ticker);\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport type { Database, SceneData } from './asset-loader';\nimport { AssetLoader } from './asset-loader';\nimport type { EffectsObject } from './effects-object';\nimport type { Material } from './material';\nimport type { GPUCapability, Geometry, Mesh, RenderPass, Renderer, ShaderLibrary } from './render';\nimport type { Scene, SceneRenderLevel } from './scene';\nimport type { Texture } from './texture';\nimport { TextureLoadAction, generateTransparentTexture, generateWhiteTexture } from './texture';\nimport type { Disposable } from './utils';\nimport { addItem, getPixelRatio, isPlainObject, logger, removeItem } from './utils';\nimport { EffectsPackage } from './effects-package';\nimport { passRenderLevel } from './pass-render-level';\nimport type { Composition } from './composition';\nimport type { AssetManager } from './asset-manager';\nimport { AssetService } from './asset-service';\nimport { Ticker } from './ticker';\nimport { EventSystem } from './plugins/interact/event-system';\nimport type { GLType } from './gl/create-gl-context';\nimport { HELP_LINK } from './constants';\nimport type { PointerEventData, Region } from './plugins/interact/click-handler';\nimport { EventEmitter } from './events';\n\nexport interface EngineOptions extends WebGLContextAttributes {\n  name?: string,\n  glType?: GLType,\n  fps?: number,\n  env?: string,\n  manualRender?: boolean,\n  pixelRatio?: number,\n  notifyTouch?: boolean,\n  interactive?: boolean,\n}\n\ntype EngineEvent = {\n  contextlost: [eventData: { engine: Engine, e: Event }],\n  contextrestored: [engine: Engine],\n  rendererror: [e: Event | Error],\n  resize: [Engine],\n  click: [eventData: Region],\n  pointerdown: [eventData: PointerEventData],\n  pointerup: [eventData: PointerEventData],\n  pointermove: [eventData: PointerEventData],\n};\n\n/**\n * Engine 基类，负责维护所有 GPU 资源的管理及销毁\n */\nexport class Engine extends EventEmitter<EngineEvent> implements Disposable {\n  name = 'NewEngine';\n  speed = 1;\n  displayAspect: number;\n  displayScale = 1;\n  offscreenMode = false;\n  /**\n   * 渲染器\n   */\n  renderer: Renderer;\n  /**\n   * 渲染等级\n   */\n  renderLevel?: SceneRenderLevel;\n  whiteTexture: Texture;\n  transparentTexture: Texture;\n  /**\n   * GPU 能力\n   */\n  gpuCapability: GPUCapability;\n  jsonSceneData: SceneData;\n  objectInstance: Record<string, EffectsObject>;\n  database?: Database; // TODO: 磁盘数据库，打包后 runtime 运行不需要\n  /**\n   * 渲染过程中错误队列\n   */\n  renderErrors: Set<Error> = new Set();\n  compositions: Composition[] = [];\n  assetManagers: AssetManager[] = [];\n  assetService: AssetService;\n  eventSystem: EventSystem;\n  env = '';\n  /**\n   * 计时器\n   * 手动渲染 `manualRender=true` 时不创建计时器\n   */\n  ticker: Ticker | null = null;\n  canvas: HTMLCanvasElement;\n  /**\n   * 引擎的像素比\n   */\n  pixelRatio: number;\n\n  protected _disposed = false;\n  protected textures: Texture[] = [];\n  protected materials: Material[] = [];\n  protected geometries: Geometry[] = [];\n  protected meshes: Mesh[] = [];\n  protected renderPasses: RenderPass[] = [];\n\n  private assetLoader: AssetLoader;\n\n  get disposed (): boolean {\n    return this._disposed;\n  }\n\n  /**\n   *\n   */\n  constructor (canvas: HTMLCanvasElement, options?: EngineOptions) {\n    super();\n    this.canvas = canvas;\n    this.env = options?.env ?? '';\n    this.name = options?.name ?? this.name;\n    this.pixelRatio = options?.pixelRatio ?? getPixelRatio();\n    this.jsonSceneData = {};\n    this.objectInstance = {};\n    this.whiteTexture = generateWhiteTexture(this);\n    this.transparentTexture = generateTransparentTexture(this);\n\n    if (!options?.manualRender) {\n      this.ticker = new Ticker(options?.fps);\n      this.runRenderLoop(this.render.bind(this));\n    }\n\n    this.eventSystem = new EventSystem(this, options?.notifyTouch ?? false);\n    this.eventSystem.enabled = options?.interactive ?? false;\n    this.eventSystem.bindListeners(this.canvas);\n\n    this.assetLoader = new AssetLoader(this);\n    this.assetService = new AssetService(this);\n  }\n\n  /**\n   * 创建 Engine 对象。\n   */\n  static create: (canvas: HTMLCanvasElement, options?: EngineOptions) => Engine;\n\n  clearResources () {\n    this.jsonSceneData = {};\n    this.objectInstance = {};\n  }\n\n  addEffectsObjectData (data: spec.EffectsObjectData) {\n    this.jsonSceneData[data.id] = data;\n  }\n\n  findEffectsObjectData (uuid: string) {\n    return this.jsonSceneData[uuid];\n  }\n\n  addInstance (effectsObject: EffectsObject) {\n    this.objectInstance[effectsObject.getInstanceId()] = effectsObject;\n  }\n\n  /**\n   * @ignore\n   */\n  findObject<T>(guid: spec.DataPath): T {\n    // 编辑器可能传 Class 对象，这边判断处理一下直接返回原对象。\n    if (!(isPlainObject(guid))) {\n      return guid as T;\n    }\n\n    if (this.objectInstance[guid.id]) {\n      return this.objectInstance[guid.id] as T;\n    }\n\n    const result = this.assetLoader.loadGUID<T>(guid);\n\n    return result;\n  }\n\n  removeInstance (id: string) {\n    delete this.objectInstance[id];\n  }\n\n  addPackageDatas (scene: Scene) {\n    const { jsonScene, textureOptions = [] } = scene;\n    const {\n      items = [], materials = [], shaders = [], geometries = [], components = [],\n      animations = [], bins = [], miscs = [], compositions,\n    } = jsonScene;\n\n    for (const compositionData of compositions) {\n      this.addEffectsObjectData(compositionData as unknown as spec.EffectsObjectData);\n    }\n    for (const vfxItemData of items) {\n      if (!passRenderLevel(vfxItemData.renderLevel, scene.renderLevel)) {\n        vfxItemData.components = [];\n        vfxItemData.type = spec.ItemType.null;\n      }\n      this.addEffectsObjectData(vfxItemData);\n    }\n    for (const materialData of materials) {\n      this.addEffectsObjectData(materialData);\n    }\n    for (const shaderData of shaders) {\n      this.addEffectsObjectData(shaderData);\n    }\n    for (const geometryData of geometries) {\n      this.addEffectsObjectData(geometryData);\n    }\n    for (const componentData of components) {\n      this.addEffectsObjectData(componentData);\n    }\n    for (const animationData of animations) {\n      this.addEffectsObjectData(animationData);\n    }\n    for (const miscData of miscs) {\n      this.addEffectsObjectData(miscData);\n    }\n    for (let i = 0; i < bins.length; i++) {\n      const binaryData = bins[i];\n      const binaryBuffer = scene.bins[i];\n\n      if (binaryData.dataType === spec.DataType.BinaryAsset) {\n        //@ts-expect-error\n        binaryData.buffer = binaryBuffer;\n        if (binaryData.id) {\n          this.addEffectsObjectData(binaryData);\n        }\n      } else {\n        const effectsPackage = new EffectsPackage();\n\n        effectsPackage.deserializeFromBinary(new Uint8Array(binaryBuffer));\n        for (const effectsObjectData of effectsPackage.exportObjectDatas) {\n          this.addEffectsObjectData(effectsObjectData);\n        }\n      }\n    }\n    for (const textureData of textureOptions) {\n      this.addEffectsObjectData(textureData as spec.EffectsObjectData);\n    }\n  }\n\n  runRenderLoop (renderFunction: (dt: number) => void): void {\n    this.ticker?.add(renderFunction);\n  }\n\n  render (dt: number): void {\n    const { renderErrors } = this;\n\n    if (renderErrors.size > 0) {\n      this.emit('rendererror', renderErrors.values().next().value);\n      // 有渲染错误时暂停播放\n      this.ticker?.pause();\n    }\n    dt = Math.min(dt, 33) * this.speed;\n    const comps = this.compositions;\n    let skipRender = false;\n\n    comps.sort((a, b) => a.getIndex() - b.getIndex());\n\n    for (let i = 0; i < comps.length; i++) {\n      const composition = comps[i];\n\n      if (composition.textureOffloaded) {\n        skipRender = true;\n        logger.error(`Composition ${composition.name} texture offloaded, skip render.`);\n        continue;\n      }\n      composition.update(dt);\n    }\n\n    if (skipRender) {\n      this.emit('rendererror', new Error('Play when texture offloaded.'));\n\n      return this.ticker?.pause();\n    }\n    this.renderer.setFramebuffer(null);\n    this.renderer.clear({\n      stencilAction: TextureLoadAction.clear,\n      clearStencil: 0,\n      depthAction: TextureLoadAction.clear,\n      clearDepth: 1,\n      colorAction: TextureLoadAction.clear,\n      clearColor: [0, 0, 0, 0],\n    });\n    for (let i = 0; i < comps.length; i++) {\n      !comps[i].renderFrame.isDisposed && this.renderer.renderRenderFrame(comps[i].renderFrame);\n    }\n\n    this.renderer.renderTargetPool.flush();\n  }\n\n  /**\n   * 将渲染器重新和父容器大小对齐\n   */\n  resize () {\n    const { parentElement } = this.canvas;\n    let containerWidth;\n    let containerHeight;\n    let canvasWidth;\n    let canvasHeight;\n\n    if (parentElement) {\n      const size = this.getTargetSize(parentElement);\n\n      containerWidth = size[0];\n      containerHeight = size[1];\n      canvasWidth = size[2];\n      canvasHeight = size[3];\n    } else {\n      containerWidth = canvasWidth = this.canvas.width;\n      containerHeight = canvasHeight = this.canvas.height;\n    }\n    const aspect = containerWidth / containerHeight;\n\n    if (containerWidth && containerHeight) {\n      const documentWidth = document.documentElement.clientWidth;\n\n      if (canvasWidth > documentWidth * 2) {\n        logger.error(`DPI overflowed, width ${canvasWidth} is more than 2x document width ${documentWidth}, see ${HELP_LINK['DPI overflowed']}.`);\n      }\n      const maxSize = this.env ? this.gpuCapability.detail.maxTextureSize : 2048;\n\n      if ((canvasWidth > maxSize || canvasHeight > maxSize)) {\n        logger.error(`Container size overflowed ${canvasWidth}x${canvasHeight}, see ${HELP_LINK['Container size overflowed']}.`);\n        if (aspect > 1) {\n          canvasWidth = Math.round(maxSize);\n          canvasHeight = Math.round(maxSize / aspect);\n        } else {\n          canvasHeight = Math.round(maxSize);\n          canvasWidth = Math.round(maxSize * aspect);\n        }\n      }\n\n      this.canvas.style.width = containerWidth + 'px';\n      this.canvas.style.height = containerHeight + 'px';\n      logger.info(`Resize engine ${this.name} [${canvasWidth},${canvasHeight},${containerWidth},${containerHeight}].`);\n\n      this.setSize(canvasWidth, canvasHeight);\n    }\n  }\n\n  setSize (width: number, height: number) {\n    // ios 14.1 -ios 14.3 resize canvas will cause memory leak\n    this.renderer.resize(width, height);\n    this.compositions?.forEach(comp => {\n      comp.camera.aspect = width / height;\n      comp.camera.pixelHeight = this.renderer.getHeight();\n      comp.camera.pixelWidth = this.renderer.getWidth();\n    });\n    this.emit('resize', this);\n  }\n\n  private getTargetSize (parentEle: HTMLElement) {\n    if (parentEle === undefined || parentEle === null) {\n      throw new Error(`Container is not an HTMLElement, see ${HELP_LINK['Container is not an HTMLElement']}.`);\n    }\n    const displayAspect = this.displayAspect;\n    // 小程序环境没有 getComputedStyle\n    const computedStyle = window.getComputedStyle?.(parentEle);\n    let targetWidth;\n    let targetHeight;\n    let finalWidth = 0;\n    let finalHeight = 0;\n\n    if (computedStyle) {\n      finalWidth = parseInt(computedStyle.width, 10);\n      finalHeight = parseInt(computedStyle.height, 10);\n    } else {\n      finalWidth = parentEle.clientWidth;\n      finalHeight = parentEle.clientHeight;\n    }\n\n    if (displayAspect) {\n      const parentAspect = finalWidth / finalHeight;\n\n      if (parentAspect > displayAspect) {\n        targetHeight = finalHeight * this.displayScale;\n        targetWidth = targetHeight * displayAspect;\n      } else {\n        targetWidth = finalWidth * this.displayScale;\n        targetHeight = targetWidth / displayAspect;\n      }\n    } else {\n      targetWidth = finalWidth;\n      targetHeight = finalHeight;\n    }\n    const ratio = this.pixelRatio;\n    let containerWidth = targetWidth;\n    let containerHeight = targetHeight;\n\n    targetWidth = Math.round(targetWidth * ratio);\n    targetHeight = Math.round(targetHeight * ratio);\n    if (targetWidth < 1 || targetHeight < 1) {\n      if (this.offscreenMode) {\n        targetWidth = targetHeight = containerWidth = containerHeight = 1;\n      } else {\n        throw new Error(`Invalid container size ${targetWidth}x${targetHeight}, see ${HELP_LINK['Invalid container size']}.`);\n      }\n    }\n\n    return [containerWidth, containerHeight, targetWidth, targetHeight];\n  }\n\n  addTexture (tex: Texture) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.textures, tex);\n  }\n\n  removeTexture (tex: Texture) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.textures, tex);\n  }\n\n  addMaterial (mat: Material) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.materials, mat);\n  }\n\n  removeMaterial (mat: Material) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.materials, mat);\n  }\n\n  addGeometry (geo: Geometry) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.geometries, geo);\n  }\n\n  removeGeometry (geo: Geometry) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.geometries, geo);\n  }\n\n  addMesh (mesh: Mesh) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.meshes, mesh);\n  }\n\n  removeMesh (mesh: Mesh) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.meshes, mesh);\n  }\n\n  addRenderPass (pass: RenderPass) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.renderPasses, pass);\n  }\n\n  removeRenderPass (pass: RenderPass) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.renderPasses, pass);\n  }\n\n  addComposition (composition: Composition) {\n    if (this.disposed) {\n      return;\n    }\n    addItem(this.compositions, composition);\n  }\n\n  removeComposition (composition: Composition) {\n    if (this.disposed) {\n      return;\n    }\n    removeItem(this.compositions, composition);\n  }\n\n  getShaderLibrary (): ShaderLibrary {\n    return this.renderer.getShaderLibrary() as ShaderLibrary;\n  }\n\n  /**\n   * 销毁所有缓存的资源\n   */\n  dispose (): void {\n    if (this.disposed) {\n      return;\n    }\n    this._disposed = true;\n\n    const info: string[] = [];\n\n    if (this.renderPasses.length > 0) {\n      info.push(`Pass ${this.renderPasses.length}`);\n    }\n    if (this.meshes.length > 0) {\n      info.push(`Mesh ${this.meshes.length}`);\n    }\n    if (this.geometries.length > 0) {\n      info.push(`Geom ${this.geometries.length}`);\n    }\n    if (this.textures.length > 0) {\n      info.push(`Tex ${this.textures.length}`);\n    }\n\n    if (info.length > 0) {\n      logger.warn(`Release GPU memory: ${info.join(', ')}.`);\n    }\n\n    this.ticker?.stop();\n    this.eventSystem?.dispose();\n    this.assetService?.dispose();\n\n    this.renderPasses.forEach(pass => pass.dispose());\n    this.meshes.forEach(mesh => mesh.dispose());\n    this.geometries.forEach(geo => geo.dispose());\n    this.materials.forEach(mat => mat.dispose());\n    this.textures.forEach(tex => tex.dispose());\n    this.assetManagers.forEach(assetManager => assetManager.dispose());\n    this.compositions.forEach(comp => comp.dispose());\n\n    this.textures = [];\n    this.materials = [];\n    this.geometries = [];\n    this.meshes = [];\n    this.renderPasses = [];\n    this.compositions = [];\n  }\n}\n","import type { Engine } from './engine';\nimport { glContext } from './gl';\nimport type { TextureConfigOptions, TextureSourceOptions } from './texture';\nimport { Texture, TextureSourceType } from './texture';\nimport { assertExist, type Disposable } from './utils';\n\nexport interface TextureCacheRequest extends TextureConfigOptions {\n  width: number,\n  height: number,\n  name: string,\n  format?: typeof WebGLRenderingContext.RGBA | typeof WebGL2RenderingContext.RGB | typeof WebGLRenderingContext.LUMINANCE,\n  type?: typeof WebGLRenderingContext.UNSIGNED_BYTE | typeof WebGLRenderingContext.FLOAT | typeof WebGL2RenderingContext.HALF_FLOAT,\n  minFilter?: GLenum,\n  magFilter?: GLenum,\n  wrapS?: GLenum,\n  wrapT?: GLenum,\n}\n\nconst def: Record<string, number> = {\n  format: glContext.RGBA,\n  type: glContext.UNSIGNED_BYTE,\n  minFilter: glContext.LINEAR,\n  magFilter: glContext.LINEAR,\n  wrapS: glContext.CLAMP_TO_EDGE,\n  wrapT: glContext.CLAMP_TO_EDGE,\n};\nconst disposeSymbol = Symbol('dispose');\n\nexport class PassTextureCache implements Disposable {\n  private textureCache: Record<string, Texture> = {};\n  private textureRef: Record<string, number> = {};\n  private engine?: Engine;\n\n  constructor (engine: Engine) {\n    this.engine = engine;\n  }\n\n  requestColorAttachmentTexture (request: TextureCacheRequest): Texture {\n    const { width, height, name } = request;\n    const options: Record<string, any> = {\n      sourceType: TextureSourceType.framebuffer,\n      data: {\n        width,\n        height,\n      },\n      name,\n    };\n    const keys: (string | number)[] = [name];\n\n    Object.getOwnPropertyNames(def).forEach(name => {\n      const value = request[name as keyof TextureCacheRequest] as number | string ?? def[name];\n\n      options[name] = value;\n      keys.push(name, value);\n    });\n\n    const cacheId = keys.join(':');\n    let tex = this.textureCache[cacheId];\n\n    if (tex) {\n      this.textureRef[cacheId]++;\n      if (__DEBUG__) {\n        // consoleLog(`Texture cache hit: ${cacheId}.`);\n      }\n    } else {\n\n      const engine = this.engine;\n\n      assertExist(engine);\n      tex = Texture.create(engine, options as TextureSourceOptions);\n      this.textureCache[cacheId] = tex;\n      this.textureRef[cacheId] = 1;\n\n      // @ts-expect-error\n      tex[disposeSymbol] = tex.dispose;\n      tex.dispose = () => this.removeTexture(cacheId);\n    }\n\n    return tex;\n  }\n\n  removeTexture (id: string) {\n    const refCount = this.textureRef[id];\n\n    if (refCount <= 1) {\n      if (refCount < 0) {\n        console.error('Ref count < 0.');\n      }\n      const tex = this.textureCache[id];\n\n      if (tex) {\n        // @ts-expect-error\n        tex[disposeSymbol]();\n        // @ts-expect-error\n        tex.dispose = tex[disposeSymbol];\n      }\n      delete this.textureCache[id];\n      delete this.textureRef[id];\n    } else {\n      this.textureRef[id] = refCount - 1;\n    }\n  }\n\n  dispose () {\n    Object.keys(this.textureCache).forEach(key => {\n      const texture = this.textureCache[key];\n\n      // @ts-expect-error\n      texture[disposeSymbol]();\n      // @ts-expect-error\n      texture.dispose = texture[disposeSymbol];\n    });\n    this.textureCache = {};\n    this.textureRef = {};\n    this.engine = undefined;\n  }\n}\n","import * as spec from '@galacean/effects-specification';\nimport { AssetManager } from './asset-manager';\nimport { Composition } from './composition';\nimport { PLAYER_OPTIONS_ENV_EDITOR } from './constants';\nimport type { Engine } from './engine';\nimport type { Scene, SceneLoadOptions } from './scene';\nimport { logger } from './utils';\nimport { PluginSystem } from './plugin-system';\n\nexport class SceneLoader {\n  static async load (scene: Scene.LoadType, engine: Engine, options: SceneLoadOptions = {}): Promise<Composition> {\n    const last = performance.now();\n    const asyncShaderCompile = engine.gpuCapability?.detail?.asyncShaderCompile;\n    const compositionIndex = engine.compositions.length;\n\n    const assetManager = new AssetManager(options);\n\n    // TODO 多 json 之间目前不共用资源，如果后续需要多 json 共用，这边缓存机制需要额外处理\n    engine.assetManagers.push(assetManager);\n\n    const loadedScene = await assetManager.loadScene(scene, engine.renderer);\n\n    engine.clearResources();\n\n    // 触发插件系统 pluginSystem 的回调 onAssetsLoadFinish\n    PluginSystem.onAssetsLoadFinish(loadedScene, assetManager.options, engine);\n\n    engine.assetService.prepareAssets(loadedScene, loadedScene.assets);\n    engine.assetService.updateTextVariables(loadedScene, options.variables);\n    engine.assetService.initializeTexture(loadedScene);\n\n    const composition = this.createComposition(loadedScene, engine, options);\n\n    composition.setIndex(compositionIndex);\n    const compileStart = performance.now();\n\n    await new Promise(resolve => {\n      engine.renderer.getShaderLibrary()?.compileAllShaders(() => resolve(null));\n    });\n\n    const compileTime = performance.now() - compileStart;\n\n    engine.ticker?.start();\n\n    const compositionName = composition.name;\n    const firstFrameTime = performance.now() - last;\n\n    composition.statistic.compileTime = compileTime;\n    composition.statistic.firstFrameTime = firstFrameTime;\n    logger.info(`First frame [${compositionName}]: ${firstFrameTime.toFixed(4)}ms.`);\n    logger.info(`Shader ${asyncShaderCompile ? 'async' : 'sync'} compile [${compositionName}]: ${compileTime.toFixed(4)}ms.`);\n\n    return composition;\n  }\n\n  private static createComposition (scene: Scene, engine: Engine, options: SceneLoadOptions = {}): Composition {\n    const renderer = engine.renderer;\n    const composition = new Composition({\n      ...options,\n      renderer,\n      width: renderer.getWidth(),\n      height: renderer.getHeight(),\n      event: engine.eventSystem,\n    }, scene);\n\n    // 中低端设备降帧到 30fps·\n    if (engine.ticker && options.renderLevel === spec.RenderLevel.B) {\n      engine.ticker.setFPS(Math.min(engine.ticker.getFPS(), 30));\n    }\n\n    // TODO 目前编辑器会每帧调用 loadScene, 在这编译会导致闪帧，待编辑器渲染逻辑优化后移除。\n    if (engine.env !== PLAYER_OPTIONS_ENV_EDITOR) {\n      engine.assetService.createShaderVariant();\n    }\n\n    return composition;\n  }\n}\n","import { registerPlugin } from './plugin-system';\nimport {\n  CameraVFXItemLoader, InteractLoader, ParticleLoader, SpriteLoader, TextLoader,\n} from './plugins';\nimport { logger } from './utils';\n\nexport * as math from '@galacean/effects-math/es/core/index';\nexport * as spec from '@galacean/effects-specification';\nexport * from './asset';\nexport * from './binary-asset';\nexport * from './asset-loader';\nexport * from './asset-manager';\nexport * from './asset-service';\nexport * from './camera';\nexport * from './canvas-pool';\nexport * from './components';\nexport * from './animation';\nexport * from './composition';\nexport * from './config';\nexport * from './constants';\nexport * from './decorators';\nexport * from './downloader';\nexport * from './effects-object';\nexport * from './engine';\nexport {\n  ensureFixedNumber, getStandardComposition, getStandardImage, getStandardItem,\n  getStandardJSON, normalizeColor,\n} from './fallback';\nexport * from './gl';\nexport * from './material';\nexport * from './math';\nexport * from './paas-texture-cache';\nexport * from './plugin-system';\nexport * from './scene-loader';\nexport * from './plugins';\nexport * from './render';\nexport * from './scene';\nexport * from './serialization-helper';\nexport * from './shader';\nexport * from './shape';\nexport * from './template-image';\nexport * from './texture';\nexport * from './ticker';\nexport * from './transform';\nexport * from './utils';\nexport * from './vfx-item';\nexport * from './effects-object';\nexport * from './effects-package';\nexport * from './events';\nexport * from './pass-render-level';\n\nregisterPlugin('camera', CameraVFXItemLoader);\nregisterPlugin('text', TextLoader);\nregisterPlugin('sprite', SpriteLoader);\nregisterPlugin('particle', ParticleLoader);\nregisterPlugin('interact', InteractLoader);\n\nexport const version = __VERSION__;\n\nlogger.info(`Core version: ${version}.`);\n"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_async_to_generator","fn","self","args","arguments","apply","err","undefined","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","__decorate","decorators","target","desc","c","length","r","Object","getOwnPropertyDescriptor","d","Reflect","decorate","i","defineProperty","__generator","thisArg","body","_","label","sent","t","trys","ops","f","y","g","create","Iterator","prototype","next","verb","iterator","n","v","step","op","TypeError","call","pop","push","e","SuppressedError","suppressed","message","Error","name","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","byteToHex","toString","slice","unsafeStringify","arr","offset","randomUUID","v4","options","buf","native","rnds","random","addItem","includes","removeItem","index","indexOf","splice","addItemWithOrder","item","property","descending","currentItem","enlargeBuffer","typeArray","maxSize","increase","buffer","byteLength","BYTES_PER_ELEMENT","size","Math","ceil","Number","isNaN","min","nbuffer","ArrayBuffer","nArr","set","PI2","PI","DEG2RAD","RAD2DEG","NumberEpsilon","isZero","abs","isEqual","a","b","Infinity","damp","x","lambda","dt","lerp","exp","degToRad","degrees","radToDeg","radians","clamp","max","fixedMin","fixedMax","lower","upper","Vector2","setZero","setFromNumber","num","setFromArray","array","copyFrom","src","clone","setElement","console","getElement","add","Array","addVectors","subtract","subtractVectors","multiply","multiplyVectors","divide","scale","sum","floor","round","negate","sqrt","lengthSquared","normalize","setLength","other","alpha","lerpVectors","v1","v2","dot","cross","distance","dx","dy","distanceSquared","equals","eps","toArray","fill","fromNumber","fromArray","ONE","ZERO","Vector3","z","addScaledVector","s","crossVectors","ax","ay","az","bx","by","bz","reflect","normal","dz","toVector2","applyEuler","euler","out","rotateVector3","applyQuaternion","q","applyMatrix","m","transformPoint","applyNormalMatrix","transformNormal","applyProjectionMatrix","projectPoint","X","Y","Z","Vector4","w","toVector3","transformVector4","Color","setFromVector4","setFromHSV","hue","saturation","chroma","h","setFromHexString","hex","substring","parseInt","luminance","toLinear","gammaToLinear","toGamma","linearToGamma","toVector4","toHSV","dm","toHexString","includeAlpha","R","ToHex","G","B","A","fromHexString","fromHSV","pow","str","toUpperCase","BLACK","BLUE","CLEAR","CYAN","GRAY","GREEN","MAGENTA","RED","WHITE","YELLOW","colorToArr","normalized","ret","isString","replace","exec","test","getColorFromGradientStops","stops","color","time","j","s0","s1","interpolateColor","map","colorStopsFromGradient","gradient","forEach","val","parsePercent","keys","stop","colorRGB","sort","origin","ms","match","getPixelRatio","window","devicePixelRatio","canUseBOM","isIOS","navigator","platform","isIOSByUA","userAgent","toLowerCase","ver","isAndroid","isOpenHarmony","isSimulatorCellPhone","isMiniProgram","isAlipayMiniApp","isWechatMiniApp","my","renderTarget","__wxjs_environment","imageDataFromColor","image","width","height","data","imageDataFromGradient","OrderType","sortByOrder","order","insertionSort","fastSort","addByOrder","priority","start","end","base","assertExist","msg","asserts","condition","isValidFontFamily","fontFamily","isSafeFontFamily","Deferred","promise","prefix","localLogger","format","debug","warn","register","isFunction","logger","DestroyOptions","noop","isArray","isObject","isPlainObject","proto","getPrototypeOf","hasOwn","hasOwnProperty","Ctor","Function","isCanvas","canvas","tagName","isPowerOfTwo","randomInRange","throwDestroyedError","generateGUID","uuidv4","base64ToFile","base64","filename","contentType","base64WithoutPrefix","split","byteCharacters","atob","byteArrays","byteNumbers","charCodeAt","byteArray","blob","Blob","type","file","File","applyMixins","derivedCtrl","baseCtrls","baseCtrl","getOwnPropertyNames","propertyDescriptor","pluginLoaderMap","plugins","registerPlugin","pluginClass","pluginInstance","unregisterPlugin","pluginIndex","findIndex","plugin","PluginSystem","getPlugins","initializeComposition","composition","scene","loader","onCompositionCreated","destroyComposition","comp","onCompositionDestroy","onAssetsLoadStart","all","onAssetsLoadFinish","engine","pluginInfoMap","getPluginUsageInfo","Plugin","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","writable","configurable","JSONSceneVersion","RenderLevel","BlendingMode","SideMode","ObscuredMode","ParticleEmitterShapeType","PluginType","InteractType","InteractBehavior","ItemType","RenderMode","ParticleOrigin","RenderType","RenderFace","END_BEHAVIOR_DESTROY","END_BEHAVIOR_PAUSE","END_BEHAVIOR_FORWARD","END_BEHAVIOR_PAUSE_AND_DESTROY","END_BEHAVIOR_FREEZE","END_BEHAVIOR_RESTART","END_BEHAVIOR_DESTROY_CHILDREN","CAMERA_CLIP_MODE_VERTICAL","CAMERA_CLIP_MODE_NORMAL","MESSAGE_ITEM_PHRASE_BEGIN","MESSAGE_ITEM_PHRASE_END","CameraClipMode","ValueType","BezierKeyframeType","EndBehavior","ParticleInteractionBehavior","ShapeArcMode","LightType","ModelBoundingType","CameraType","MaterialType","MaterialBlending","RenderMode3D","TextOverflow","TextSizeMode","TextBaseline","TextAlignment","TextVerticalAlign","TextWeight","FontStyle","BuiltinObjectGUID","WhiteTexture","TransparentTexture","PBRShader","UnlitShader","FillType","TexturePaintScaleMode","ShapePrimitiveType","LineCap","LineJoin","NodeDataType","BackgroundType","MultimediaType","HevcVideoCodec","DataType","GeometryType","VertexFormatType","IndexFormatType","VertexBufferSemantic","LATEST_VERSION","LATEST","_array_like_to_array","len","arr2","_unsupported_iterable_to_array","minLen","from","_create_for_of_iterator_helper_loose","allowArrayLike","it","decoratorInitialStore","Map","mergedStore","effectsClassStore","getClass","className","effectsClass","context","serialize","sourceName","generateSerializableMember","getMergedStore","classKey","get","store","currentTarget","currentKey","initialStore","parent","propertyKey","classStore","getDirectStore","EffectsObject","guid","defination","addInstance","getInstanceId","setInstanceId","removeInstance","toData","fromData","id","dispose","is","GraphDataSet","resources","getResource","nodeDataClassStore","nodeDataClass","getNodeDataClass","InvalidIndex","GraphNode","initializationCount","lastUpdateID","getNodeData","asset","isValid","isInitialized","initialize","initializeInternal","shutdown","shutdownInternal","isNodeActive","updateID","isUpdated","markNodeActive","GraphNodeData","load","createNode","nodeType","node","nodes","PoseNode","duration","previousTime","currentTime","getCurrentTime","getPreviousTime","getDuration","getDebugInfo","ValueNode","setValue","FloatValueNode","BoolValueNode","AnimationGraphAsset","nodeDatas","graphDataSet","controlParameterIDs","parameterLookupMap","rootNodeIndex","graphAssetData","numControlParameters","createNodeData","animationClipData","animationClip","findObject","classConstructor","BranchState","GraphContext","deltaTime","branchState","update","InstantiationContext","getNode","instantiate","_extends","assign","source","AnimationClipNodeData","playRate","loopAnimation","dataSlotIndex","AnimationClipNode","animation","dataSet","fullData","spec","animatable","evaluate","result","nodeData","getPose","pose","Animatable","skeleton","TransformCurveType","transformCurveInfos","floatCurveInfos","colorCurveInfos","positionCurves","curve","addTransformCurveInfo","scaleCurves","rotationCurves","eulerCurves","floatCurves","addFloatCurveInfo","colorCurves","addColorCurveInfo","outPose","life","curveInfo","curveValue","keyFrames","getValue","outTransform","parentSpaceTransforms","boneIndex","position","rotation","floatValue","floatPropertyValues","animatedObjectIndex","colorValue","colorPropertyValues","pathToBoneIndex","path","pathToObjectIndex","Quaternion","setFromEuler","toQuaternion","setFromAxisAngle","axis","angle","halfAngle","sin","tempVec0","cos","setFromRotationMatrix","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","setFromUnitVectors","to","EPSILON","quat","angleTo","acos","rotateTowards","slerp","identity","invert","conjugate","l","multiplyQuaternions","premultiply","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","atan2","ratioA","ratioB","slerpQuaternions","qa","qb","qx","qy","qz","qw","vx","vy","vz","ix","iy","iz","iw","res","quaternion","vec","toEuler","setFromQuaternion","toMatrix4","mat","compose","fromEuler","fromAxisAngle","fromVector4","fromRotationMatrix","fromUnitVectors","tempQuaternion","BlendFunction","NormalBlend","blendVector3","weight","blendQuaternion","blendEuler","lerpEuler","blendFloat","blendColor","lerpAngle","normalizeAngle","shortestAngleDiff","diff","fromAngle","toAngle","AdditiveBlend","targetQuaternion","Blender","localBlend","sourcePose","targetPose","blendWeight","resultPose","localBlendInternal","normalBlendFunction","additiveBlend","additiveBlendFunction","blendFunction","sourceTransform","targetTransform","resultTransform","sourcePosition","targetPosition","resultPosition","sourceRotation","targetRotation","resultRotation","sourceScale","targetScale","resultScale","sourceEuler","targetEuler","resultEuler","sourceFloat","targetFloat","sourceColor","targetColor","resultColor","NodeTransform","transform","Pose","defaultFloatPropertyValues","defaultFloat","defaultColorPropertyValues","defaultColor","setPosition","setRotation","setEuler","setScale","setFloat","PoseResult","ApplyAdditiveNodeData","ApplyAdditiveNode","baseNode","baseNodeIndex","additiveNode","additiveNodeIndex","inputParameterValueNode","inputParameterValueNodeIndex","baseNodeResult","additiveNodeResult","applyAdditive","BlendNodeData","BlendNode","source0","sourceNodeIndex0","source1","sourceNodeIndex1","source0Result","source1Result","AndNodeData","conditionNodeIndices","AndNode","conditionNodeIndex","conditionNodes","OrNodeData","OrNode","NotNodeData","inputValueNodeIndex","NotNode","inputValueNode","ConstFloatNodeData","ConstFloatNode","ConstBoolNodeData","ConstBoolNode","ControlParameterFloatNodeData","ControlParameterFloatNode","ControlParameterBoolNodeData","ControlParameterBoolNode","ControlParameterTriggerNodeData","ControlParameterTriggerNode","LayerBlendNodeData","layerDatas","LayerBlendNode","baseLayerNode","layerData","layers","inputNode","inputNodeIndex","weightValueNode","weightValueNodeIndex","layerNodeResult","layer","updateLayers","layerWeight","EqualNodeData","comparandValueNodeIndex","EqualNode","comparandValueNode","FloatComparisonNodeData","Comparison","FloatComparisonNode","comparison","GreaterNodeData","LessNodeData","StateMachineNodeData","StateMachineNode","stateDatas","stateData","state","stateNode","stateNodeIndex","transitions","states","transitionDatas","transitionData","transition","transitionNode","transitionNodeIndex","conditionNode","targetStateIndex","defaultStateIndex","machineName","activeTransition","activeStateIndex","getCurrentStateName","stateName","isComplete","activeState","Active","evaluateTransitions","sourceNodeResult","currentlyActiveStateInfo","transitionIdx","numTransitions","isTransitioning","canEnterTransition","hasExitTime","getElapsedTimeInState","exitTime","startTransitionFromTransition","startTransitionFromState","shutdownTransitionConditions","initializeTransitionConditions","selectDefaultState","selectedStateIndex","TransitionState","StateNodeData","childNodeIndex","StateNode","childNode","transitionState","elapsedTimeInState","isFirstStateUpdate","isTransitioningIn","isTransitioningOut","startTransitionIn","startTransitionOut","setTransitioningState","newState","SourceType","TransitionNodeData","targetStateNodeIndex","TransitionNode","targetNode","transitionLength","transitionProgress","sourceNode","sourceType","blendedDuration","isSourceATransition","getSourceTransitionNode","endSourceTransition","calculateBlendWeight","previousBranchState","Inactive","targetNodeResult","finalResult","registerPoseTasksAndUpdateRootMotion","deltaPercentage","getProgressPercentage","getSourceType","isSourceAState","sourceState","outResult","initializeTargetStateAndUpdateTransition","sourceTransition","getSourceStateNode","notifyNewTransitionStarting","targetStateNode","sourceTransitionNode","sourceTransitionTargetState","None","TransitioningOut","startTransitionOutForSource","sourceResult","targetResult","poseBlendWeight","AnimatedPropertyType","VFXItemType","Skeleton","rootBone","recordedProperties","useEuler","floatAnimatedObjects","colorAnimatedObjects","animatedTransforms","addReferenceTransform","floats","floatRecords","addRecordedProperty","colors","colorRecords","itemPath","targetBone","findTarget","propertyPath","totalPath","animatedComponentOrItem","getComponent","propertyPathSegments","lastPropertyName","directTarget","animatedObject","propertyName","boneName","itemNames","itemName","find","GraphInstance","graphAsset","recordProperties","positionCurve","rotationCurve","scaleCurve","eulerCurve","floatCurve","colorCurve","instantiationContext","rootNode","evaluateGraph","resetGraphState","getNumControlParameters","controlParameterNode","nodeIdx","isControlParameter","getStateMachineNode","getControlParameterIndex","parameterID","getControlParameterID","parameterNodeIndex","setBool","setControlParameterValue","setTrigger","resetTrigger","getPoseNodeDebugInfo","getRuntimeNodeDebugValue","valueNode","getNodeDebugInstance","_defineProperties","props","descriptor","enumerable","_create_class","Constructor","protoProps","staticProps","Component","isAwakeCalled","isStartCalled","isEnableCalled","_enabled","onAwake","onEnable","onDisable","onStart","onUpdate","onLateUpdate","onDestroy","onApplyAnimationProperties","enable","sceneTicking","addComponent","disable","removeComponent","setVFXItem","isDuringPlay","isActive","enabled","components","isActiveAndEnabled","Behaviour","Animator","graphInstance","setQuaternion","RendererComponent","materials","_priority","render","renderer","renderFrame","addMeshToDefaultRenderPass","removeMeshFromDefaultRenderPass","material","Matrix4","m41","m42","m43","m14","m24","m34","m44","setFromRowMajorData","setFromColumnVectors","c1","c2","c3","c4","setFromMatrix3","me","setFromScale","setFromTranslation","setFromRotationX","theta","setFromRotationY","setFromRotationZ","setFromRotationAxis","tx","ty","setFromShear","setFromBasis","xAxis","yAxis","zAxis","isIdentity","getColumnVector","lookAt","eye","up","vX","vY","tempVec1","vZ","tempVec2","addScaledMatrix","re","multiplyMatrices","ae","be","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","multiplyScalar","determinant","transpose","t11","t12","t13","t14","det","detInv","extractBasis","translation","anchor","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","sx","sy","sz","decompose","tempMat0","invSX","invSY","invSZ","getTranslation","getScale","hypot","getTransform","orthographic","top","bottom","near","far","tz","perspective","fov","aspect","reverse","tan","nf","matrix","fromIdentity","fromLookAt","fromPerspective","fromColumnVectors","fromMatrix3","fromScale","fromTranslation","fromRotationX","fromRotationY","fromRotationZ","fromRotationAxis","fromQuaternion","fromShear","fromBasis","fromRowMajorData","IDENTITY","EulerOrder","Euler","DEFAULT_ORDER","setFromRotationMatrix4","XYZ","asin","YXZ","ZXY","ZYX","YZX","XZY","setFromVector3","addEulers","reorder","newOrder","tempQuat0","s2","s3","cosX","sinX","cosY","sinY","cosZ","sinZ","cosXcosZ","cosXsinZ","sinXcosZ","sinXsinZ","cosYcosZ","cosYsinZ","sinYcosZ","sinYsinZ","cosXcosY","cosXsinY","sinXcosY","sinXsinY","fromRotationMatrix4","fromVector3","_assert_this_initialized","ReferenceError","Matrix3","setFromMatrix4","rotate","translate","fromMatrix4","Ray","direction","ray","recast","at","intersectBox","box","ox","oz","bymin","bzmin","bymax","bzmax","tmin","tmax","tymin","tymax","tzmin","tzmax","invdirx","invdiry","invdirz","bxmin","bxmax","oy","intersectPlane","plane","denominator","intersectSphere","sphere","center","vector","tca","d2","radius2","radius","thc","t0","t1","intersectTriangle","triangle","backfaceCulling","p0","p1","p2","edge1","edge2","tempVec3","DdN","sign","DdQxE2","DdE1xQ","QdN","Box3","minX","minY","minZ","maxX","maxY","maxZ","setFromPoints","points","makeEmpty","il","expandByPoint","setFromCenterAndSize","halfSize","setFromObject","object","expandByObject","isEmpty","getCenter","getSize","point","expandByVector","expandByScalar","scalar","expandByBox","updateWorldMatrix","geometry","boundingBox","computeBoundingBox","box3","applyMatrix4","matrixWorld","union","children","containsPoint","containsBox","getParameter","intersectsBox","intersectsSphere","clampPoint","distanceToPoint","clampedPoint","intersect","getOBBPoints","getBoundingSphere","Sphere","optionalCenter","maxRadiusSq","radiusSum","deltaLengthSq","getBoundingBox","mt","scaleXSq","scaleYSq","scaleZSq","maxScale","missingRadiusHalf","toFarthestPoint","tempQuat","tempVector3","tempVector3Second","seed","Transform","taggedProperties","worldMatrix","localMatrix","valid","dirtyFlags","localData","parentMatrix","worldTRSCache","setTransform","parentTransform","setValid","dispatchValueChange","setSize","rotateByQuat","scaleBy","setAnchor","reverseEuler","mul","addChild","child","removeChild","getRotation","getQuaternion","updateLocalMatrix","getMatrix","getParentMatrix","getWorldMatrix","getWorldScale","cache","getWorldPosition","updateTRSCache","setWorldPosition","getWorldRotation","assignWorldTRS","cloneFromMatrix","m4","getValid","transformData","eulerHint","transformProps","parentMatrixDirty","newQuat","tmpScale","Camera","pixelWidth","pixelHeight","viewportMatrix","viewMatrix","projectionMatrix","viewProjectionMatrix","inverseViewMatrix","dirty","clipMode","portrait","updateMatrix","setViewportMatrix","getViewportMatrix","getViewMatrix","getInverseViewMatrix","getProjectionMatrix","getInverseProjectionMatrix","inverseProjectionMatrix","getViewProjectionMatrix","getInverseViewProjectionMatrix","inverseViewProjectionMatrix","getModelViewProjection","model","getInverseVPRatio","pos","inverseMat","nz","yMax","xMin","yMin","xMax","setQuat","getQuat","getOptions","copy","camera","worldToScreenPoint","vpMatrix","screenToWorldPoint","invVPMatrix","ndcX","ndcY","ndcZ","worldPosition","SPRITE_VERTEX_STRIDE","SEMANTIC_PRE_COLOR_ATTACHMENT_0","SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0","SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0","SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0","PLAYER_OPTIONS_ENV_EDITOR","HELP_LINK","toHalf","floatView","Float32Array","int32View","Int32Array","bits","Float16ArrayWrapper","isInteger","Uint16Array","number","startIndex","translatePoint","tempEuler","tempMat4","calculateTranslation","acc","posData","velData","lifetime","speedIntegrate","speedOverLifetime","getIntegrateValue","gravityModifier","getIntegrateByTime","linearVelocityOverLifetime","linearVelOverLifetime","orbVelOverLifetime","orbitalVelOverLifetime","asRotation","orbVel","pro","rot","asMovement","velocityXCurve","velocityYCurve","velocityZCurve","ensureVec3","vecFill","vecMulCombine","_obj","particleOriginTranslateMap","PARTICLE_ORIGIN_CENTER","PARTICLE_ORIGIN_CENTER_BOTTOM","PARTICLE_ORIGIN_CENTER_TOP","PARTICLE_ORIGIN_LEFT_TOP","PARTICLE_ORIGIN_LEFT_CENTER","PARTICLE_ORIGIN_LEFT_BOTTOM","PARTICLE_ORIGIN_RIGHT_CENTER","PARTICLE_ORIGIN_RIGHT_BOTTOM","PARTICLE_ORIGIN_RIGHT_TOP","nearestPowerOfTwo","log","LN2","setRayFromCamera","dir","trianglesFromRect","halfWidth","halfHeight","p3","decimalEqual","epsilon","numberToFix","fixed","keyframeInfo","pointIndexCache","xIndex","yIndex","getPointInCurve","keyframe","getPointIndexInCurve","markType","LINE","EASE_OUT","EASE_IN","EASE","HOLD","isLeftSideEase","keyframeType","isKeyframeTypeLeftSideEase","isRightSideEase","isKeyframeTypeRightSideEase","AUTO","isHoldInKeyframe","leftSubType","LINE_OUT","isHoldOutKeyframe","BezierLengthData","totalLength","BezierMap","BezierDataMap","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","CURVE_SEGMENTS","kSplineTableSize","kSampleStepSize","a1","a2","C","calcBezier","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","buildBezierData","p4","interval","samples","lastPoint","addedLength","ptDistance","curveSegments","k","perc","partialLength","BezierPath","catching","lastAddedLength","lengthData","getPointInPercent","percent","bezierData","segmentLength","flag","segmentPerc","BezierQuat","temp","QuaternionInner","slerpFlat","BezierEasing","control1YOrControl1X","control2YOrControl1Y","control2X","control2Y","precomputed","control1","control2","weighted","isConstant","mSampleValues","bezierInterpolate","precompute","getTForX","pStart","pControl1","pControl2","pEnd","omt","omt2","omt3","t2","t3","calcSampleValues","lastSample","intervalStart","currentSample","dist","guessForT","initialSlope","buildEasingCurve","leftKeyframe","rightKeyframe","getControlPoints","timeInterval","valueInterval","y1","x1","NaN","bezEasing","lineToBezier","leftValue","leftHoldLine","rightHoldLine","leftEase","rightEase","rightPoint","rightValue","leftPoint","isHold","dst","src0","src1","x0","y0","z0","w0","z1","w1","sqrSin","tDir","CURVE_PRO_TIME","CURVE_PRO_VALUE","CURVE_PRO_IN_TANGENT","CURVE_PRO_OUT_TANGENT","NOT_IMPLEMENT","ValueGetter","onCreate","timeScale","getMaxTime","toUniform","meta","func","scaleXCoord","getAllData","halfFloat","cursor","curves","StaticValue","ts","RandomSetValue","items","RandomValue","randomSeed","RandomVectorValue","LinearValue","xCoord","v0","lineSegIntegrateByTime","GradientValue","getStops","last","LineSegments","first","unshift","isLineSeg","k2","integrate","byTime","lineSegIntegrate","k1","uniformCount","lineSegCount","PathSegments","values","k0","dis","curveValueEvaluate","calculateVec","vec0","vec1","BezierCurvePath","keyframes","controlPoints","ps1","ps2","cp1","cp2","ps","easingCurve","pathCurve","timeStart","timeEnd","keyTimeData","keyTimeStart","keyTimeEnd","bezierPath","getPercValue","curveKey","normalizeTime","BezierCurveQuat","t02","t03","keyframe0","keyframe1","m0","m1","getKeyFrameMetaByRawValue","CURVE","keyLen","curveCount","BEZIER_CURVE","createKeyFrameMeta","_is_native_reflect_construct","Boolean","valueOf","construct","_construct","Parent","Class","instance","Vector4Curve","xCurve","createValueGetter","yCurve","zCurve","wCurve","Vector3Curve","Vector2Curve","TangentMode","WeightedMode","BezierCurve","oldBezierKeyFramesToNew","curveMap","curveInfos","buildBezierEasing","keysNumber","tangentMode","getCurveIntegrateValue","segments","total","count","isWeighted","weightedMode","rightDeltaX","outWeight","outSlope","leftDeltaX","inWeight","inSlope","oldKeyframes","keyDatas","lastControl","keyData","leftControl","rightControl","calculateSlope","VECTOR3_CURVE","RANDOM","CONSTANT","CONSTANT_VEC2","CONSTANT_VEC3","CONSTANT_VEC4","RGBA_COLOR","COLORS","GRADIENT_COLOR","LINEAR_PATH","pros","BEZIER_CURVE_PATH","BEZIER_CURVE_QUAT","COLOR_CURVE","ColorCurve","VECTOR4_CURVE","VECTOR2_CURVE","rCurve","gCurve","bCurve","aCurve","EFFECTS_COPY_MESH_NAME","COPY_MESH_SHADER_ID","COPY_VERTEX_SHADER","COPY_FRAGMENT_SHADER","TextureLoadAction","TextureSourceType","FilterMode","RenderTextureFormat","Framebuffer","resize","resetColorTextures","textures","unbind","getDepthTexture","getStencilTexture","getColorTextures","stencilStorage","depthStorage","createGLContext","glType","getContext","gpuTimer","gl","ext","getExtension","query","createQuery","getTime","available","getQueryParameter","QUERY_RESULT_AVAILABLE","disjoint","GPU_DISJOINT_EXT","timeElapsed","QUERY_RESULT","deleteQuery","setTimeout","catch","begin","beginQuery","TIME_ELAPSED_EXT","endQuery","initErrors","glContext","IOS16_LOCKDOWN_MODE","WEBGL_CONSTANTS_NOT_IN_GLOBAL","initGLContext","WebGL2RenderingContext","WebGLRenderingContext","isWebGL2","vertexFormatType2GLType","formatType","Float32","Int16","Int8","UInt16","UInt8","glType2VertexFormatType","webglType","Downloader","callbacks","downloadJSON","url","onSuccess","onError","download","downloadBinary","downloadBlob","downloadText","responseType","xhr","XMLHttpRequest","handleError","finish","status","response","handleLoad","trustXHRStatusZero","addEventListener","open","send","webPFailed","avifFailed","loadWebPOptional","png","webp","loadImage","loadAVIFOptional","avif","revokeURL","HTMLImageElement","complete","URL","createObjectURL","JSON","stringify","img","Image","crossOrigin","onload","revokeObjectURL","onerror","loadBinary","responseText","loadBlob","loadVideo","video","document","createElement","srcObject","muted","autoplay","setAttribute","settled","handleSuccess","cleanup","removeEventListener","play","loadMedia","loadFn","deserializeMipmapTexture","textureOptions","bins","assets","files","mipmaps","jobs","loadedMipmaps","bin","mipmap","pointer","loadedImage","loadMipmapImage","keepImageSource","sourceFrom","Texture","destroyed","getWidth","getHeight","uploadCurrentVideoFrame","offloadData","reloadData","assembleOptions","TEXTURE_2D","internalFormat","RGBA","minFilter","NEAREST","magFilter","wrapS","CLAMP_TO_EDGE","wrapT","UNSIGNED_BYTE","fromImage","texture","flipY","fromVideo","isDestroyed","generateHalfFloatTexture","channel","RGB","LUMINANCE_ALPHA","LUMINANCE","createWithData","HALF_FLOAT","sourceOptions","MIRRORED_REPEAT","generateWhiteTexture","generateTransparentTexture","TextureLoaderRegistry","loaders","instances","factory","has","unregister","delete","getLoader","getRegisteredTypes","clear","textureLoaderRegistry","TextureFactory","reloadPending","reload","sourceOpts","loadSource","updateSource","canOffloadTexture","compressed","TEXTURE_CUBE_MAP","maps","urls","every","config","cube","textureData","newTarget","newMipmaps","loadCubeMap","loadFromBuffer","LINEAR","loadMipmapImages","pointers","cubemap","getDefaultTextureFactory","setDefaultTextureFactory","RenderPassPriorityPrepare","RenderPassPriorityNormal","RenderPassPriorityPostprocess","RenderPassAttachmentStorageType","TextureStoreAction","RenderTargetHandle","externalTexture","framebuffer","storageType","tex","RenderPassDestroyAttachmentType","RenderPass","meshes","disposed","addMesh","mesh","removeMesh","configure","execute","onCameraCleanup","getViewport","viewport","destroyMeshOption","keep","isDisposed","DrawObjectPass","useRenderTarget","setup","getTemporaryRT","Linear","RGBAHalf","setFramebuffer","colorAction","depthAction","stencilAction","renderMeshes","releaseTemporaryRT","ShaderCompileResultStatus","GLSLVersion","ShaderVariant","Shader","createVariant","macros","shaderMacros","shaderVariant","getShaderLibrary","createShader","shaderData","shader","ShaderType","MaskMode","valIfUndefined","def","getPreMultiAlpha","blending","ALPHA","ADD","SUBTRACTION","STRONG_LIGHT","WEAK_LIGHT","SUPERPOSITION","BRIGHTNESS","MULTIPLY","setBlendMode","blendMode","ONE_MINUS_SRC_ALPHA","blendEquation","FUNC_REVERSE_SUBTRACT","DST_COLOR","DST_ALPHA","setSideMode","side","DOUBLE","culling","frontFace","CW","cullFace","BACK","FRONT","setMaskMode","maskMode","stencilTest","MASK","stencilFunc","ALWAYS","stencilOpZPass","REPLACE","OBSCURED","EQUAL","REVERSE_OBSCURED","NOTEQUAL","NONE","MaterialDataBlock","setUniformValues","uniformValue","setUniformValue","invalidAllFlags","updateUniformSubData","isUniformStruct","isUniformStructArray","MaterialRenderType","Material","stringTags","enabledMacros","initialized","shaderDirty","renderType","shaderSource","createShaderVariant","use","globalUniforms","_shader","mainTexture","getTexture","setTexture","getColor","setColor","equation","depthTest","depthMask","stencilRef","depthRange","depthFunc","polygonOffsetFill","polygonOffset","sampleAlphaToCoverage","stencilMask","stencilOpFail","stencilOpZFail","MaskProcessor","alphaMaskEnabled","maskable","stencilClearAction","getRefValue","setMaskOptions","isMask","inverted","reference","drawStencilMask","BYTES_TYPE_MAP","FLOAT","INT","SHORT","Int16Array","BYTE","Int8Array","Geometry","subMeshes","flush","generateEmptyTypedArray","Mesh","visible","setVisible","getVisible","drawGeometry","firstGeometry","setMaterial","destroy","restore","geometries","materialDestroyOption","shaderLib","ShaderFactory","registerInclude","includeName","includeSource","unRegisterInclude","unRegisterAllIncludes","genFinalShaderCode","level","shaderType","removeVersion","macroString","genMacroString","versionString","genShaderVersion","parseIncludes","isVersion300","removeWebGLVersion","convertTo300","fragment","isFragment","regex","has300Output","isMRT","replaceMRTShader","shaderName","addRuntimeMacro","macroList","webGLVersion","isFinite","join","versionTag","version","fragmentShader","fragReg","mrtIndexSet","Set","declaration","BloomPass","iterationCount","tempRTs","thresholdMaterial","vertex","screenMeshVert","thresholdFrag","glslVersion","GLSL1","downSampleHMaterial","gaussianDownHFrag","downSampleVMaterial","gaussianDownVFrag","upSampleMaterial","gaussianUpFrag","getFramebuffer","sceneTextureHandle","baseWidth","baseHeight","threshold","renderingData","currentFrame","globalVolume","bloom","thresholdRT","blit","currentTexture","downWidth","downHeight","tempH","setVector2","getTextureSize","tempV","upWidth","upHeight","tempUp","downSampleTexture","ToneMappingPass","mode","TRIANGLE_STRIP","attributes","aPos","drawCount","colorGradingFrag","screenMesh","intensity","active","vignette","smoothness","roundness","colorAdjustments","brightness","contrast","tonemapping","setInt","setVector3","RenderFrame","postProcessingEnabled","enableHDR","editorTransform","GlobalUniforms","gpuCapability","detail","halfFloatTexture","drawObjectPass","renderPasses","setRenderPasses","gaussianStep","bloomPass","addRenderPass","postProcessPass","pass","passes","_renderPasses","renderPass","removeRenderPass","ints","vector3s","vector4s","matrices","samplers","uniforms","Renderbuffer","multiSample","attachment","RenderTargetPool","temporaryRTs","maxUnusedFrames","force","framesOffset","entry","isOccupied","lastFrameReleased","RT","depthBuffer","filter","RGBA32","hash","descriptionHash","textureFilter","textureType","depthType","none","Nearest","depth_stencil_opaque","depth_24_stencil_8_texture","colorAttachment","newFramebuffer","storeAction","attachments","depthStencilAttachment","release","rt","isWebGL2Available","GPUCapability","setupCapability","isCompressedFormatSupported","cap","compressTextureCapabilityList","level2","textureAnisotropicExt","depthTextureExtension","halfFloatLinear","floatLinear","vaoExt","glAsyncCompileExt","UNSIGNED_INT_24_8","drawBufferExtension","UNSIGNED_INT_24_8_WEBGL","checkLinearTextureFilter","internalFormatDepth16","DEPTH_COMPONENT16","DEPTH_COMPONENT","internalFormatDepth24_stencil8","DEPTH24_STENCIL8","DEPTH_STENCIL","floatTexture","HALF_FLOAT_OES","maxSample","MAX_SAMPLES","maxVertexUniforms","MAX_VERTEX_UNIFORM_VECTORS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","maxFragmentUniforms","MAX_FRAGMENT_UNIFORM_VECTORS","maxFragmentTextures","MAX_TEXTURE_IMAGE_UNITS","floatColorAttachment","halfFloatColorAttachment","maxTextureSize","MAX_TEXTURE_SIZE","maxShaderTexCount","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxTextureAnisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","shaderTextureLod","instanceDraw","ktx2Support","detectKTX2Support","drawBuffers","asyncShaderCompile","intIndexElementBuffer","standardDerivatives","readableDepthStencilTextures","writableFragDepth","textureMaxAnisotropyExt","TEXTURE_MAX_ANISOTROPY_EXT","framebufferTexture2D","textarget","bufferStates","buffers","drawBuffersWEBGL","setTextureAnisotropic","texParameterf","createTexture","getError","bindTexture","texImage2D","R16F","texParameteri","TEXTURE_MIN_FILTER","TEXTURE_MAG_FILTER","deleteTexture","CompressTextureCapabilityType","hasCompressedTextureSupport","Renderer","currentFramebuffer","renderTargetPool","setGlobalFloat","setGlobalInt","setGlobalVector4","setGlobalVector3","setGlobalMatrix","setViewport","canvasWidth","canvasHeight","action","lost","renderRenderFrame","subMeshIndex","destination","EventEmitter","listeners","off","eventName","listener","on","once","emit","getListeners","SceneTicking","UpdateTickData","lateUpdate","LateUpdateTickData","TickData","ticks","tick","tickComponents","component","addTick","method","callee","Composition","speed","isEnded","loaderData","refContent","startTime","paused","isEndCalled","_textures","videos","reusable","baseRenderOrder","event","onItemMessage","addComposition","videoAsset","HTMLVideoElement","jsonScene","renderSettings","getEngine","renderLevel","consumed","sourceContent","compositions","compositionId","rootItem","VFXItem","endBehavior","componentPaths","componentPath","rootComposition","CompositionComponent","renderOrder","statistic","loadStart","loadTime","totalTime","compileTime","firstFrameTime","interactive","createRenderFrame","buildItemTree","setChildrenRenderOrder","restart","reset","forwardTime","setIndex","getIndex","setSpeed","getSpeed","setTime","resume","pause","getPaused","gotoAndPlay","gotoAndStop","setParent","ss","prepareRender","awake","beginPlay","previousCompositionTime","updateCompositionTime","deltaTimeInMs","updateCamera","shouldDispose","PlayState","Paused","localTime","freeze","forward","getItemByName","getHitTestRay","hitTest","regions","addInteractiveItem","MESSAGE","phrase","removeInteractiveItem","destroyItem","videoState","removeAttribute","removeComposition","env","clearStencil","clearDepth","clearColor","setEditorTransform","translateByPixel","setPositionByPixel","offloadTexture","textureOffloaded","reloadTexture","compVFXItem","itemMap","contentItems","parentId","getDescendants","listIndex","isEnabled","eventProcessor","newComponent","com","getComponents","directDescendantsOnly","predicate","results","getDescendantsInternal","vfxItem","setOpacity","opacity","setActive","onActiveChanged","getWorldTransform","tf","ry","getBoundingClientRect","rx","getHitTestParams","getCurrentPosition","queue","duplicate","previousObjectIDMap","gatherPreviousObjectID","resetGUID","newItem","content","ParticleSystem","isComposition","instantiatePreComposition","dataType","VFXItemData","EffectComponent","resetChildrenParent","_composition","compositionContent","refId","findEffectsObjectData","prevInstanceId","resetGUIDRecursive","itemGUID","componentGUID","isSprite","sprite","isParticle","particle","isNull","null","isTree","tree","isCamera","isAncestor","ancestorCandidate","descendantCandidate","current","compositionReusable","isVisible","Item","Playing","sceneBindings","timelineAsset","TimelineAsset","timelineInstance","TimelineInstance","getReusable","isHitTestSuccess","hitTestRecursive","lastRegion","hitPositions","region","behavior","hitTestItem","skip","hitParams","success","intersectPoint","HitTestType","triangles","boxMin","boxMax","custom","tempPosition","collect","hitTestSuccess","maxCount","startOrder","subCompositionComponent","MeshComponent","meshCollider","MeshCollider","setGeometry","area","getBoundingBoxData","maskManager","previousColorMask","colorMask","maskableRendererData","maskOptions","mask","_Time","getVector4","setVector4","ConstraintTarget","PositionConstraint","positionAtRest","positionOffset","constrainX","constrainY","constrainZ","targets","totalWeight","constraintTarget","targetPos","finalX","finalY","finalZ","addTarget","removeTarget","ct","clearTargets","setPositionOffset","setWeight","targetData","PostProcessVolume","MaskableGraphic","_color","sizeMatrix","ui","interaction","renderMode","MESH","whiteTexture","occlusion","transparentOcclusion","defaultGeometry","aUV","releasable","indices","TRIANGLES","itemFrag","itemVert","shared","configureMaterial","input","BILLBOARD","VERTICAL_BILLBOARD","HORIZONTAL_BILLBOARD","draw","properties","preMultiAlpha","texParams","enableMacro","disableMacro","maskableGraphicData","ShapeComponent","shapeDirty","materialDirty","graphicsPath","GraphicsPath","fills","strokeAttributes","alignment","Butt","Miter","miterLimit","strokeWidth","strokeCap","strokeJoin","strokes","fillMaterials","strokeMaterials","rendererOptions","gradientStrokeFill","Solid","gradientLayerFill","shapeAttributes","Custom","easingIns","easingOuts","shapes","indexCount","vertexCount","buildPath","buildGeometryFromPath","shapePath","updateMaterials","shapePrimitives","vertices","shapePrimitive","shape","indexOffset","vertOffset","build","triangulate","fillIndexCount","lineStyle","close","closePath","buildLine","strokeIndexCount","positionArray","getAttributeData","uvArray","indexArray","getIndexData","MAX_VALUE","MIN_VALUE","pointsOffset","positionArrayOffset","sizeX","sizeY","uvOffset","setAttributeData","setIndexData","setDrawCount","u16Size","fillSubMesh","strokeSubMesh","shapeAttribute","customShapeAtribute","indexes","startPoint","moveTo","pointIndex","lastPointIndex","easingOut","easingIn","bezierCurveTo","Ellipse","ellipseData","ellipse","xRadius","yRadius","Rectangle","rectangleData","rect","Star","starData","polyStar","pointCount","outerRadius","innerRadius","outerRoundness","innerRoundness","StarType","Polygon","polygonData","updatePaintMaterial","paint","GradientLinear","GradientAngular","GradientRadial","updateGradientMaterial","gradientStops","endPoint","scaleMode","topRight","bottomLeft","scalingFactor","textureTransform","setMatrix3","gradientColors","stopColor","setVector4Array","setFloats","createMaterialFromRendererOptions","materialProps","vert","frag","createPaint","stroke","customShapeData","customShapeAttribute","ellipseAttribute","rectangleAttribute","starAttribute","polygonAttribute","paintData","Fake3DComponent","loop","amountOfMotion","animationLength","startPositionX","startPositionY","startPositionZ","endPositionX","endPositionY","endPositionZ","amplitudeX","amplitudeY","amplitudeZ","phaseX","phaseY","phaseZ","effectComponent","updateFake3D","_PosX","_PosY","_PosZ","Fake3DAnimationMode","CameraController","_get_prototype_of","_is_native_function","_wrap_native_super","_cache","Wrapper","CameraVFXItemLoader","PointerEventData","delta","pointerCurrentRaycast","RaycastResult","EVENT_TYPE_CLICK","EVENT_TYPE_TOUCH_START","EVENT_TYPE_TOUCH_MOVE","EVENT_TYPE_TOUCH_END","PointerEventType","EventSystem","allowPropagation","skipPointerMovePicking","handlers","nativeHandlers","bindListeners","currentTouch","lastTouch","getTouch","touchstart","touchmove","touchend","touchcancel","getTouchEventValue","performance","now","touches","changedTouches","touch","cood","getCoord","clientX","clientY","dispatchEvent","cancelable","preventDefault","stopPropagation","String","onClick","onPointerDown","onPointerUp","onPointerMove","callback","hitResults","hitResult","hitComposition","clickInfo","compositionName","handlePointerEvent","hitRegion","eventData","raycast","hitItem","ele","InteractLoader","InteractMesh","previewColor","createMaterial","createGeometry","createMesh","updateMesh","uSize","getVector2","uPos","tempPos","tempScale","indexData","aPoint","stride","LINES","maxVertex","InteractComponent","downgrade","dragRatio","dragRange","dxRange","dyRange","invalidBorderRange","invalidByBorderRange","duringPlay","_interactive","lastTime","clickable","getDragRangeX","setDragRangeX","getDragRangeY","setDragRangeY","interactData","showPreview","CLICK","previewContent","endDragTarget","DRAG","enableInEditor","beginDragTarget","dragEvent","bouncingArg","shouldIgnoreBouncing","handleDragMove","evt","cameraParam","canInteract","depth","sp","nx","ny","eventSystem","handlerMap","checkInvalidBorderRange","assemblyTriangles","indexStart","indexEnd","index0","index1","index2","applyWorldMatrix","boundingBoxData","point0","point1","point2","point3","geometryToTriangles","subMesh","elementSize","SpriteLoader","Playable","onPlayablePlayFlag","onPlayablePauseFlag","playState","setDuration","getPlayState","prepareFrame","processFrame","onPlayableDestroy","PlayableOutput","output","setUserData","userData","getUserData","PlayableAsset","tempColor","ColorPlayable","renderColor","boundObject","activeComponent","getActiveComponent","activeMaterial","startColor","colorInc","colorChanged","opacityOverLifetime","colorOverLifetime","clipData","AnimationClip","sampleAnimation","keyFramesDuration","positionCurveData","rotationCurveData","eulerCurvesData","scaleCurvesData","floatCurveData","colorCurveData","paths","findTag","Cone","generate","opt","arc","getArcAngle","arcMode","UNIDIRECTIONAL_CYCLE","BIDIRECTIONAL_CYCLE","UNIFORM_BURST","burstIndex","burstCount","Circle","_d","_h","RectangleEdge","r0","Edge","Donut","dradius","donutRadius","getHorizontalAngle","rz","rh","mat4","Hemisphere","TextureShape","anchors","block","pointX","pointY","ShapeNone","CONE","SPHERE","HEMISPHERE","CIRCLE","DONUT","RECTANGLE","EDGE","RECTANGLE_EDGE","TEXTURE","createShape","shapeOptions","Ctrl","ctrl","alignSpeedDirection","upDirection","linkedList","dim","clockwise","signedArea","insertNode","removeNode","filterPoints","again","steiner","prev","isEar","ear","pointInTriangle","isEarHashed","invSize","minTX","minTY","maxTX","maxTY","zOrder","prevZ","nextZ","eliminateHoles","holeIndices","outerNode","list","getLeftmost","compareX","eliminateHole","hole","findHoleBridge","splitPolygon","hx","hy","mx","tanMin","locallyInside","sectorContainsSector","indexCurve","sortLinked","tail","numMerges","pSize","qSize","inSize","leftmost","cx","cy","px","py","isValidDiagonal","intersectsPolygon","middleInside","intersects","q1","q2","o1","o2","o3","o4","onSegment","inside","Node","b2","an","bp","indexBase","earcut","ib","hasHoles","outerLen","hackEarcutLinked","hackCureLocalIntersections","hackSplitEarcut","POINT_INDEX","getGeometryTriangles","segment","pointData","uvTransform","sw","sh","getBezier2DValue","setPoint","rotateVec2","getGeometriesByShapeData","gs","SHAPE_POINTS","SHAPE_SPLITS","getGeometryByShape","datas","aPointData","idx","vec2","angleInRad","cpx0","cpy0","cpx1","cpy1","ddt","Burst","cycles","probability","getGeneratorOptions","timePassed","internalCycles","cycleIndex","LinkNode","Link","findNodeByContent","pre","shiftNode","pushNode","thisObj","forEachReverse","getNodeByIndex","RUNTIME_ENV","RENDER_PREFER_LOOKUP_TEXTURE","TEMPLATE_USE_OFFSCREEN_CANVAS","POST_PROCESS_SETTINGS","getConfig","setConfig","tmp0","tmp1","TrailMesh","pointStart","colorOverTrail","maxTrailCount","widthOverTrail","textureMap","minimumVertexDistance","pointCountPerTrail","keyFrameMeta","enableVertexTexture","uniformValues","lookUpTexture","useAttributeTrailStart","shaderCacheId","uColorOverLifetime","uColorOverTrail","uTrailStart","uOpacityOverLifetimeValue","uWidthOverTrail","uVCurveValueTexture","uVCurveValues","trailVert","particleFrag","mtl","GLSL3","cacheId","maxVertexCount","maxTriangleCount","bpe","v12","geometryOptions","aColor","aSeed","dataSource","aInfo","aTime","aDir","bufferUsage","DYNAMIC_DRAW","aTrailStart","aTrailStartIndex","preMulAlpha","uMaskTex","checkVertexDistance","trailCursors","addPoint","trailIndex","segmentPerTrail","previousIndex","bpreviousIndex","previousPoint","getTrailPosition","pointStartIndex","calculateDirection","dirStartIndex","dirData","setAttributeSubData","colorData","positionData","bPreviousPoint","previousDir","previousDirStartIndex","indicesStart","indicesData","setIndexSubData","params","trailStart","startData","getFloats","trail","clearAllTrails","minusTime","clearTrail","indicesPerTrail","getPointStartPos","setPointStartPos","escapeTime","getFloat","tempDir","tempDa","tempDb","prePoint","nextPoint","ParticleBehaviourPlayable","particleSystem","ParticleBehaviourPlayableAsset","createPlayable","particleUniformTypeMap","ParticleMesh","particleCount","cachedRotationVector3","cachedRotationMatrix","cachedLinearMove","tempMatrix3","VERT_MAX_KEY_FRAME_COUNT","sizeOverLifetime","rotationOverLifetime","textureFlip","useSprite","gravity","forceTarget","meshSlots","diffuse","vertexKeyFrameMeta","fragmentKeyFrameMeta","vertex_lookup_texture","useOrbitalVel","uSpeedLifetimeValue","animate","uFSprite","uSprite","col","row","blend","defL","defO","uOrbCenter","uSizeByLifetimeValue","separateAxes","uSizeYByLifetimeValue","uRZByLifeTimeValue","uRXByLifeTimeValue","uRYByLifeTimeValue","uGravityModifierValue","uFinalTarget","uForceCurve","uFCurveValueTexture","uFCurveValues","vertexCurveTexture","getSlot","shaderCache","originalVertex","particleVert","mtlOptions","uTexOffset","uColorParams","uParams","uAcceleration","generateGeometryProps","textureOffsets","getPointColor","clearPoints","resetGeometryData","maxParticleBufferCount","names","getAttributeNames","aPosArray","applyTranslation","applyRotation","applyLinearMove","aOffset","removePoint","increaseBuffer","inc","aRot","aTranslation","aLinearMove","aRotation0","aSprite","offsets","delay","wholeUV","vel","sizeOffsets","j3","j4","j12","j8","uv","uvy","ji","dirX","dirY","baseIndexData","attrSize","getAttributeStride","baseData","geoData","aTranslationArray","aVelArray","aOffsetArray","expandArray","velocityX","velocityY","velocityZ","velOffset","accX","accY","accZ","aTranslationOffset","aTranslationX","aTranslationY","aTranslationZ","aRotationArray","aRotArray","aSeedArray","aRotationMatrix","aRotOffset","d2r","rotationXD2r","rotationYD2r","rotationZD2r","sinRX","sinRY","sinRZ","cosRX","cosRY","cosRZ","aRotationOffset","matrixArray","aLinearMoveArray","linearMove","aLinearMoveOffset","newSize","newArr","gl2UniformSlots","slot","aVel","aDirX","aDirY","aRotation1","aRotation2","getParticleMeshShader","positionOverLifetime","textureSheetAnimation","linearPro","orbitalPro","gravityOverLifetime","forceOpt","forceCurve","modifyMaxKeyframeShader","maxFrag","shaderIds","marco","ParticleSystemRenderer","particleMeshProps","trailMeshProps","particleMesh","trailMesh","updateTime","minusTimeForLoop","getTextures","particleMeshTextures","trailMeshTextures","setParticlePoint","removeParticlePoint","getParticlePointColor","hasTrail","addTrailPoint","setTrailStartPosition","getTrailStartPosition","interactParams","multiple","removeParticle","isFrozen","frozen","ended","initEmitterTransform","transformPath","emitterTransform","basicTransform","selfPos","particleFollowParent","updateEmitterTransform","addParticle","link","particleLink","linkContent","clearPointTrail","startEmit","started","loopStartTime","lastEmitTime","emission","rateOverTime","generatedCount","bursts","clickedPoint","upDirectionWorld","emitterLifetime","trailUpdated","updateTrail","trails","updatePointTrail","maxEmissionCount","timeDelta","meshTime","shouldSkipGenerate","emissionStopped","createPoint","burst","opts","disabled","originVec","burstOffsets","burstOffset","removeBurst","initPoint","previousColorMasks","getParticleBoxes","counter","getPointPosition","dieWithParticles","inheritParticleColor","sizeAffectsWidth","sizeAffectsLifetime","parentAffectsPosition","getPointPositionByIndex","dl","startSpeed","matrix4","pointPosition","startTurbulence","turbulence","tmpDirX","tmpDirY","tsa","tempSprite","animationDelay","animationDuration","tempRot","start3DRotation","startRotationX","startRotationY","startRotationZ","startRotation","tempSize","start3DSize","startSizeX","startSizeY","startSize","sizeAspect","startDelay","startLifetime","randomArrItem","uvs","addBurst","willAdd","generator","stopParticleEmission","resumeParticleEmission","cachePrefix","_textureSheetAnimation","turbulenceX","turbulenceY","turbulenceZ","getBurstOffsets","rotOverLt","linearX","linearY","linearZ","orbitalX","orbitalY","orbitalZ","orbCenter","shaderCachePrefix","sizeOverLifetimeGetter","looping","flip","splits","maxPointPerTrail","maxParticles","isArr","keepArr","TrackMixerPlayable","clipPlayables","clipWeights","clipPlayable","setClipWeight","playableOrIndex","getClipWeight","inputIndex","getClipPlayable","ActivationMixerPlayable","boundItem","hasInput","ActivationPlayable","PropertyClipPlayable","PropertyMixerPlayable","preparePath","propertyValue","resetPropertyValue","propertyClipPlayable","addWeightedValue","ColorPropertyMixerPlayable","FloatPropertyMixerPlayable","ParticleMixerPlayable","SpriteColorMixerPlayable","SubCompositionClipPlayable","SubCompositionMixerPlayable","compositionComponent","TransformMixerPlayable","Vector4PropertyMixerPlayable","Vector3PropertyMixerPlayable","Vector2PropertyMixerPlayable","TransformPlayable","originalTransform","linearVelEnable","orbitalVelEnable","sizeSeparateAxes","sizeXOverLifetime","sizeYOverLifetime","sizeZOverLifetime","rotLt","velocity","incZ","TransformPlayableAsset","transformPlayable","transformAnimationData","TimelineClip","toLocalTime","TrackAsset","trackType","clipSeed","clips","updateAnimatedObject","createTrackMixer","createOutput","createPlayableGraph","runtimeClips","mixerPlayable","createMixerPlayableGraph","clip","compileClips","timelineClips","mixer","timelineClip","createClipPlayable","RuntimeClip","getChildTracks","createClip","newClip","addClip","getClips","findClip","TrackType","parentMixer","playable","getParticleSystem","trackInstance","evaluateAt","clipTime","ActivationTrack","PropertyTrack","propertyNames","FloatPropertyTrack","SpriteColorTrack","SubCompositionTrack","TransformTrack","MaterialTrack","ParticleTrack","Vector4PropertyTrack","Vector3PropertyTrack","Vector2PropertyTrack","ColorPropertyTrack","ObjectBindingTrack","sceneBindingMap","childTrack","particleTrack","createTrack","activationClip","particleClip","SpriteComponent","componentTimeTrack","SpriteComponentTimeTrack","ComponentTimePlayableAsset","EffectComponentTimeTrack","ActivationPlayableAsset","ColorPropertyPlayableAsset","curveData","FloatPropertyPlayableAsset","SubCompositionPlayableAsset","Vector4PropertyPlayableAsset","Vector3ropertyPlayableAsset","Vector3PropertyPlayableAsset","Vector2PropertyPlayableAsset","TrackInstance","trackAsset","tracks","cacheFlattenedTracks","newTrack","invalidate","addSubTracksRecursive","track","allTracks","subTrack","flattenedTracks","masterTrack","masterTrackInstances","sceneBinding","compileTracks","tickTrack","outputTrack","trackInstanceMap","trackMixPlayable","trackOutput","childTrackInstance","updateTrackAnimatedObject","singleSplits","SpriteColorPlayableAsset","spriteColorPlayable","ComponentTimeTrack","componentTimePlayable","ComponentTimePlayable","textureAnimation","renderErrors","texRectX","texRectY","texRectW","texRectH","texOffset","frameIndex","updateGeometry","isRotate90","positionX","positionY","updateGeometryFromMultiSplit","originData","dw","dh","tox","toy","tsx","tsy","ParticleLoader","Point","copyTo","tempPoint","closePointEps","curveEps","square","innerWeight","outerWeight","verts","exx","eyy","eix","eiy","eox","eoy","ex","ey","cx2p0x","cy2p0y","angle0","angle1","startAngle","angleDiff","absAngleDiff","segCount","angleInc","getOrientationOfPoints","flipAlignment","closed","_verticesStride","_verticesOffset","_indicesOffset","style","orientation","firstPoint","closedShape","closedPath","midPointX","midPointY","widthSquared","miterLimitSquared","perpX","perpY","perp1x","perp1y","ratio","Round","Square","dx0","dy0","dx1","dy1","pDist","imx","imy","omx","omy","smallerInsideSegmentSq","insideWeight","smallerInsideDiagonalSq","insideMiterOk","Bevel","eps2","ShapePrimitive","u","aa","ba","ca","da","ea","D","E","F","H","I","J","fa","K","L","M","N","ga","ha","O","P","ia","Q","ja","ka","S","la","ma","na","oa","pa","T","U","ra","sa","V","ta","ua","W","va","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","this","libtess","GluTesselator","windingRule","GLU_TESS_WINDING_ODD","GLU_TESS_WINDING_NONZERO","GLU_TESS_WINDING_POSITIVE","GLU_TESS_WINDING_NEGATIVE","GLU_TESS_WINDING_ABS_GEQ_TWO","primitiveType","GL_LINE_LOOP","GL_TRIANGLES","GL_TRIANGLE_STRIP","GL_TRIANGLE_FAN","errorType","GLU_TESS_MISSING_BEGIN_POLYGON","GLU_TESS_MISSING_END_POLYGON","GLU_TESS_MISSING_BEGIN_CONTOUR","GLU_TESS_MISSING_END_CONTOUR","GLU_TESS_COORD_TOO_LARGE","GLU_TESS_NEED_COMBINE_CALLBACK","gluEnum","GLU_TESS_MESH","GLU_TESS_TOLERANCE","GLU_TESS_WINDING_RULE","GLU_TESS_BOUNDARY_ONLY","GLU_INVALID_ENUM","GLU_INVALID_VALUE","GLU_TESS_BEGIN","GLU_TESS_VERTEX","GLU_TESS_END","GLU_TESS_ERROR","GLU_TESS_EDGE_FLAG","GLU_TESS_COMBINE","GLU_TESS_BEGIN_DATA","GLU_TESS_VERTEX_DATA","GLU_TESS_END_DATA","GLU_TESS_ERROR_DATA","GLU_TESS_EDGE_FLAG_DATA","GLU_TESS_COMBINE_DATA","gluDeleteTess","gluTessProperty","gluGetTessProperty","gluTessNormal","gluTessCallback","gluTessVertex","gluTessBeginPolygon","gluTessBeginContour","gluTessEndContour","gluTessEndPolygon","module","tessy","initTesselator","vertexCallback","polyVertArray","begincallback","errorcallback","errno","combinecallback","coords","edgeCallback","contours","triangleVerts","contour","flat","polygon","contains","xi","yi","xj","yj","getX","getY","verticesOffset","indicesOffset","getLineEndPointsTriangle","startX","startY","endX","endY","lastX","lastY","RECURSION_LIMIT","FLT_EPSILON","PATH_DISTANCE_EPSILON","defaultBezierSmoothness","buildAdaptiveBezier","sX","sY","cp1x","cp1y","cp2x","cp2y","eX","eY","smoothing","distanceTolerance","recursive","x3","y3","x4","y4","x12","y12","x23","y23","x34","y34","x123","y123","x234","y234","x1234","y1234","d3","normx","normy","strokeContains","halfStrokeWidth","innerA","innerB","outerA","outerB","normalizedX","normalizedY","innerEllipse","outerEllipse","sampleDensity","j1","j2","centerX","centerY","centerIndex","PolyStar","starType","in","buildStarPath","buildPolygonPath","lastIndex","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","rad","perimSegment","currentAng","getBounds","rectangle","densityScale","ShapePath","currentPoly","instructions","instruction","endPoly","ensurePoly","startPoly","radiusX","radiusY","drawShape","_shapePath","CanvasPool","remove","getCanvas","shift","_createOffscreenCanvas","defCanvas","willReadFrequently","saveCanvas","canvasPool","TextLayout","textHeight","textWidth","textOverflow","textVerticalAlign","textAlign","letterSpace","autoWidth","fontSize","lineHeight","overflow","getOffsetY","lineCount","totalLineHeight","fontScale","offsetY","baseOffset","commonCalculation","offsetResult","middle","getOffsetX","maxWidth","offsetX","TextStyle","isUnderline","underlineHeight","isOutlined","outlineWidth","hasShadow","fontDesc","fontOffset","textColor","outline","shadow","fontWeight","fontStyle","textWeight","outlineColor","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","TextComponentBase","isDirty","maxLineWidth","ALPHA_FIX_VALUE","setText","text","setTextAlign","textLayout","setTextVerticalAlign","setTextBaseline","setTextColor","textStyle","setFontFamily","setFontWeight","setFontStyle","setOutlineColor","setOutlineEnabled","setFontScale","setOverflow","getFontDesc","setupOutline","strokeStyle","lineWidth","setupShadow","disposeTextTexture","renderToTexture","drawCallback","save","clearRect","fillStyle","imageData","getImageData","disposeOld","initTextBase","DEFAULT_FONTS","TextComponent","effectScaleX","effectScaleY","baseTextWidth","baseScaleX","defaultData","getDefaultProps","updateWithOptions","substr","updateTexture","getTextureExpandScale","scalex","scaley","resetState","renderText","getLineCount","charCountInLine","font","textMetrics","measureText","display","setLineHeight","safe","layout","finalHeight","char","getEffectPadding","padL","padR","padT","padB","hasEffect","texWidth","texHeight","shiftX","shiftY","charsInfo","charsArray","charOffsetX","chars","hasOutline","charInfo","drawX","drawY","strokeText","fillText","hasDrawOutline","outlinePad","shadowPad","pad","setAutoWidth","normalizedValue","setTextWidth","setTextHeight","setFontSize","setOutlineWidth","setShadowBlur","setShadowColor","setShadowOffsetX","setShadowOffsetY","TextLoader","Asset","BinaryAsset","SerializationHelper","effectsObject","serializedData","serializedProperties","checkTypedArray","serializeArrayProperty","serializeObjectProperty","deserialize","propertyType","deserializeProperty","Uint8ClampedArray","Uint32Array","Float64Array","checkDataPath","checkGLTFNode","nodeIndex","isJoint","checkImageSource","overrideDataPath","referenceObject","objectProperty","arrayProperty","AssetLoader","loadGUID","dataPath","effectsObjectData","findData","uuid","jsonSceneData","Database","arrAdd","ensureFixedNumber","valueType","valueData","getBezierCurveFromHermiteInGE","ensureFixedNumberWithRandom","ensureRGBAValue","ensureColorExpression","ensureGradient","ensureNumberExpression","normalizeColor","toFixed","getGradientColor","ensureFixedVec3","BEZIER_PATH","easing","bezierEasing","keyframeIndex","objectValueToNumber","deleteEmptyValue","r2d","quatFromXYZRotation","rotationZYXFromQuat","yx","zx","zy","convertAnchor","particleOrigin","getBezierCurveFromHermite","xStart","yStart","xEnd","yEnd","bezierControlPoints","geHermiteCurves","ymax","ymin","geBezierCurves","getStandardCameraContent","velocityOverLifetime","translateX","translateY","translateZ","rol","rotateX","rotateY","rotateZ","getStandardInteractContent","option","NOTIFY","version21Migration","json","version22Migration","singleVersion","light","currentMaskComponent","componentMap","version31Migration","shapeComponent","customShapeComponent","easingInFlag","easingOutFlag","version32Migration","processContent","version33Migration","spriteComponent","shapeData","compositionIdToGUIDMap","compositionOptions","version34Migration","idToComponentMap","componentData","componentID","spriteComponentData","geometryData","createGeometryDataByShape","shapeComponentData","solidPaintData","version35Migration","RichTextComponent","richTextComponent","useLegacyRichText","lineGap","ensureTextVerticalAlign","convertTextColorTo01","textBaseline","geometryDataName","targetGeometry","atlasOffset","positionByteLength","uvByteLength","vertexByteLength","indexByteLength","vertexData","channels","indexFormat","semantic","Position","dimension","Uv","supByteLength","infoBuffer","vertexArray","uint8View","binaryData","itemProps","spine","richtext","processMask","renderContent","version30Migration","filterData","itemOldIdToGuidMap","oldId","guidToItemMap","nodeId","compositionData","convertTimelineAsset","shaders","animations","miscs","images","convertBinaryAsset","oldTextureId","realAnchor","pn","pluginName","spines","convertSpineData","skybox","interact","SkyboxComponent","LightComponent","CameraComponent","TreeComponent","SpineComponent","version24Migration","convertParam","trackDatas","playableAssetDatas","timelineAssetData","itemDataPath","subTrackDatas","newActivationPlayableAsset","newActivationTrackData","newTransformPlayableAssetData","newTrackData","newSpriteColorPlayableAssetData","newSubCompositionPlayableAssetData","bindingTrackData","trackIds","trackData","playableAsset","resource","atlas","skeletonType","getStandardParticleContent","shapeType","sol","angularVelocity","trials","orderOffset","getStandardNullContent","getStandardSpriteContent","texAni","standardVersion","reverseParticle","getStandardJSON","checkRuntimeVersion","playerVersion","web","getStandardJSONFromV0","vs","mainVersion","minorVersion","currentVersion","requires","getStandardImage","imageTags","getStandardComposition","imgUsage","_imgs","binUsage","template","astc","android","pvrtc","iOS","getStandardItem","st","previewSize","stdAnchor","originContent","cal","originTransform","inverseRotation","changeOrder","jsonVersionMatch","runtimeVersionMatch","major","minor","currentMajor","currentMinor","renderLevelPassSet","BPlus","APlus","passRenderLevel","Scene","isJSONObject","isURL","isWithOptions","getBackgroundImage","variables","templateBackground","background","combineImageTemplate","AssetManager","downloader","timers","updateOptions","pluginData","timeout","loadScene","rawJSON","assetUrl","timeInfoMessages","gpuInstance","isKTX2Supported","timeInfos","loadTimer","cancelLoading","waitPromise","hookTimeInfo","loadResourcePromise","removeTimer","fonts","loadedBins","loadedImages","loadedTextures","location","href","baseUrl","loadJSON","parse","processJSON","storage","onPluginSceneLoadStart","processBins","processImages","processFontURL","processTextures","clearTimeout","race","getAssets","customPluginName","loadBins","loadFontFamily","canUseKTX2","useCompressedTexture","disableWebP","disableAVIF","ktx2","imageURL","webpURL","avifURL","ktx2URL","isVideo","resultImage","HTMLCanvasElement","assignImagesToAssets","imageId","createTextureOptionsBySource","fontFace","fontURL","fontCache","FontFace","AssetService","builtinObjects","transparentTexture","assembleSceneLoadOptions","updateTextVariables","textVariable","initializeTexture","prepareAssets","assetId","engineAsset","addPackageDatas","objectInstance","destroyBuiltinObjects","SIZEOF_SHORT","SIZEOF_INT","FILE_IDENTIFIER_LENGTH","SIZE_PREFIX_LENGTH","int32","float32","float64","isLittleEndian","Encoding","ByteBuffer","bytes_","position_","text_decoder_","TextDecoder","bytes","capacity","readInt8","readUint8","readInt16","readUint16","readInt32","readUint32","readInt64","BigInt","asIntN","readUint64","asUintN","readFloat32","readFloat64","writeInt8","writeUint8","writeInt16","writeUint16","writeInt32","writeUint32","writeInt64","writeUint64","writeFloat32","writeFloat64","getBufferIdentifier","fromCharCode","__offset","bb_pos","vtable_offset","vtable","__union","bb","__string","opt_encoding","utf8bytes","subarray","UTF8_BYTES","decode","__union_with_string","__indirect","__vector","__vector_len","__has_identifier","ident","createScalarList","listAccessor","listLength","createObjList","unpack","allocate","byte_size","Builder","opt_initial_size","minalign","vtable_in_use","isNested","object_start","vtables","vector_num_elems","force_defaults","string_maps","text_encoder","TextEncoder","initial_size","space","forceDefaults","dataBuffer","asUint8Array","prep","additional_bytes","align_size","old_buf_size","growByteBuffer","addInt8","addInt16","addInt32","addInt64","addFloat32","addFloat64","addFieldInt8","voffset","defaultValue","addFieldInt16","addFieldInt32","addFieldInt64","addFieldFloat32","addFieldFloat64","addFieldOffset","addOffset","addFieldStruct","nested","notNested","startObject","numfields","endObject","vtableloc","trimmed_size","standard_fields","existing_vtable","vt1","outer_loop","vt2","root_table","opt_file_identifier","opt_size_prefix","size_prefix","file_identifier","finishSizePrefixed","requiredField","table","field","table_start","vtable_start","ok","startVector","elem_size","num_elems","endVector","createSharedString","createString","utf8","encode","createByteVector","createObjectOffset","pack","createObjectOffsetList","createStructOffsetList","startFunc","new_buf_size","nbb","FBEffectsObjectData","__init","optionalEncoding","dataLength","dataArray","byteOffset","FBEffectsObjectDataT","unpackTo","_o","getRootAsFBEffectsObjectData","getSizePrefixedRootAsFBEffectsObjectData","flatbuffers","startFBEffectsObjectData","builder","addDataType","dataTypeOffset","addData","dataOffset","createDataVector","startDataVector","numElems","endFBEffectsObjectData","createFBEffectsObjectData","FBEffectsPackageData","exportObjects","exportObjectsLength","FBEffectsPackageDataT","getRootAsFBEffectsPackageData","getSizePrefixedRootAsFBEffectsPackageData","startFBEffectsPackageData","addExportObjects","exportObjectsOffset","createExportObjectsVector","startExportObjectsVector","endFBEffectsPackageData","finishFBEffectsPackageDataBuffer","finishSizePrefixedFBEffectsPackageDataBuffer","createFBEffectsPackageData","FBSubMesh","FBSubMeshT","getRootAsFBSubMesh","getSizePrefixedRootAsFBSubMesh","startFBSubMesh","addIndexCount","addVertexCount","endFBSubMesh","createFBSubMesh","FBVertexChannel","FBVertexChannelT","getRootAsFBVertexChannel","getSizePrefixedRootAsFBVertexChannel","startFBVertexChannel","addSemantic","semanticOffset","addFormat","addDimension","addNormalize","endFBVertexChannel","createFBVertexChannel","FBVertexData","channelsLength","FBVertexDataT","getRootAsFBVertexData","getSizePrefixedRootAsFBVertexData","startFBVertexData","addChannels","channelsOffset","createChannelsVector","startChannelsVector","endFBVertexData","createFBVertexData","FBGeometryData","subMeshesLength","binaryDataLength","binaryDataArray","boneNames","boneNamesLength","rootBoneName","inverseBindMatrices","inverseBindMatricesLength","inverseBindMatricesArray","FBGeometryDataT","getRootAsFBGeometryData","getSizePrefixedRootAsFBGeometryData","startFBGeometryData","addId","idOffset","addName","nameOffset","addVertexData","vertexDataOffset","addIndexFormat","addIndexOffset","addSubMeshes","subMeshesOffset","createSubMeshesVector","startSubMeshesVector","addMode","addBuffer","bufferOffset","addBinaryData","binaryDataOffset","createBinaryDataVector","startBinaryDataVector","addBoneNames","boneNamesOffset","createBoneNamesVector","startBoneNamesVector","addRootBoneName","rootBoneNameOffset","addInverseBindMatrices","inverseBindMatricesOffset","createInverseBindMatricesVector","startInverseBindMatricesVector","endFBGeometryData","EffectsPackage","exportObjectDatas","serializeToBinary","fbb","effectsPackage","fbEffectsObjectData","geometryDataToBinary","deserializeFromBinary","fbEffectsPackage","binaryToGeometryData","fbGeometryData","fbVertexdata","fbChannel","fbSubMeshes","fbSubMesh","fbVertexData","vertexChannel","DEFAULT_FPS","Ticker","fps","setFPS","tickers","getFPS","targetFPS","intervalId","raf","requestAnimationFrame","runLoop","cancelAnimationFrame","resetTickers","ticker","Engine","displayScale","offscreenMode","assetManagers","_disposed","pixelRatio","manualRender","runRenderLoop","notifyTouch","assetLoader","assetService","clearResources","addEffectsObjectData","vfxItemData","materialData","animationData","miscData","binaryBuffer","renderFunction","comps","skipRender","parentElement","containerWidth","containerHeight","getTargetSize","documentWidth","documentElement","clientWidth","parentEle","displayAspect","computedStyle","getComputedStyle","targetWidth","targetHeight","finalWidth","clientHeight","parentAspect","addTexture","removeTexture","addMaterial","removeMaterial","addGeometry","geo","removeGeometry","assetManager","disposeSymbol","PassTextureCache","textureCache","textureRef","requestColorAttachmentTexture","request","refCount","SceneLoader","compositionIndex","loadedScene","compileStart","createComposition","compileAllShaders"],"mappings":";;;;;;;;AAAA,SAASA,kBAAmBC,CAAAA,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,GAAG,EAAA;IACrE,IAAI;AACA,QAAA,IAAIC,IAAOP,GAAAA,GAAG,CAACK,GAAAA,CAAI,CAACC,GAAAA,CAAAA,CAAAA;QACpB,IAAIE,KAAAA,GAAQD,KAAKC,KAAK,CAAA;AAC1B,KAAA,CAAE,OAAOC,KAAO,EAAA;QACZP,MAAOO,CAAAA,KAAAA,CAAAA,CAAAA;AACP,QAAA,OAAA;AACJ,KAAA;IACA,IAAIF,IAAAA,CAAKG,IAAI,EAAET,OAAQO,CAAAA,KAAAA,CAAAA,CAAAA;AAClBG,SAAAA,OAAAA,CAAQV,OAAO,CAACO,KAAOI,CAAAA,CAAAA,IAAI,CAACT,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;AAC5C,CAAA;AACA,SAASS,oBAAoBC,EAAE,EAAA;IAC3B,OAAO,WAAA;QACH,IAAIC,IAAAA,GAAO,IAAI,EAAEC,IAAOC,GAAAA,SAAAA,CAAAA;AAExB,QAAA,OAAO,IAAIN,OAAAA,CAAQ,SAASV,OAAO,EAAEC,MAAM,EAAA;AACvC,YAAA,IAAIF,GAAMc,GAAAA,EAAAA,CAAGI,KAAK,CAACH,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;AAEzB,YAAA,SAASb,MAAMK,KAAK,EAAA;AAChBT,gBAAAA,kBAAAA,CAAmBC,GAAKC,EAAAA,OAAAA,EAASC,MAAQC,EAAAA,KAAAA,EAAOC,QAAQ,MAAQI,EAAAA,KAAAA,CAAAA,CAAAA;AACpE,aAAA;AAEA,YAAA,SAASJ,OAAOe,GAAG,EAAA;AACfpB,gBAAAA,kBAAAA,CAAmBC,GAAKC,EAAAA,OAAAA,EAASC,MAAQC,EAAAA,KAAAA,EAAOC,QAAQ,OAASe,EAAAA,GAAAA,CAAAA,CAAAA;AACrE,aAAA;YAEAhB,KAAMiB,CAAAA,SAAAA,CAAAA,CAAAA;AACV,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;AACJ;;AC7BA,SAASC,YAAAA,CAAYC,IAAI,EAAEC,KAAK,EAAA;IAC5B,IAAIA,KAAAA,IAAS,IAAQ,IAAA,OAAOC,MAAW,KAAA,WAAA,IAAeD,KAAK,CAACC,MAAAA,CAAOC,WAAW,CAAC,EAAE;AAC7E,QAAA,OAAO,CAAC,CAACF,KAAK,CAACC,MAAOC,CAAAA,WAAW,CAAC,CAACH,IAAAA,CAAAA,CAAAA;KAChC,MAAA,OAAOA,YAAI,CAAJA,IAAgBC,EAAAA,KAAAA,CAAAA,CAAAA;AAClC;;ACJA,SAASG,SAASC,GAAG,EAAA;AACjB,IAAA,uBAAA,CAAA;IAEA,OAAOA,GAAAA,IAAO,OAAOH,MAAW,KAAA,WAAA,IAAeG,IAAIC,WAAW,KAAKJ,MAAS,GAAA,QAAA,GAAW,OAAOG,GAAAA,CAAAA;AAClG;;ACkDO,SAASE,WAAWC,UAAU,EAAEC,MAAM,EAAE1B,GAAG,EAAE2B,IAAI,EAAA;AACtD,IAAA,IAAIC,IAAIhB,SAAUiB,CAAAA,MAAM,EAAEC,CAAAA,GAAIF,IAAI,CAAIF,GAAAA,MAAAA,GAASC,IAAS,KAAA,IAAA,GAAOA,OAAOI,MAAOC,CAAAA,wBAAwB,CAACN,MAAAA,EAAQ1B,OAAO2B,IAAMM,EAAAA,CAAAA,CAAAA;AAC3H,IAAA,IAAI,OAAOC,OAAAA,KAAY,QAAY,IAAA,OAAOA,QAAQC,QAAQ,KAAK,UAAYL,EAAAA,CAAAA,GAAII,OAAQC,CAAAA,QAAQ,CAACV,UAAAA,EAAYC,QAAQ1B,GAAK2B,EAAAA,IAAAA,CAAAA,CAAAA;AACpH,SAAA,IAAK,IAAIS,CAAAA,GAAIX,UAAWI,CAAAA,MAAM,GAAG,CAAA,EAAGO,CAAK,IAAA,CAAA,EAAGA,CAAK,EAAA,CAAA,IAAIH,CAAIR,GAAAA,UAAU,CAACW,CAAE,CAAA,EAAEN,CAAI,GAACF,CAAAA,CAAAA,GAAI,CAAIK,GAAAA,CAAAA,CAAEH,KAAKF,CAAI,GAAA,CAAA,GAAIK,CAAEP,CAAAA,MAAAA,EAAQ1B,GAAK8B,EAAAA,CAAAA,CAAAA,GAAKG,CAAEP,CAAAA,MAAAA,EAAQ1B,IAAG,KAAM8B,CAAAA,CAAAA;IAChJ,OAAOF,CAAAA,GAAI,KAAKE,CAAKC,IAAAA,MAAAA,CAAOM,cAAc,CAACX,MAAAA,EAAQ1B,KAAK8B,CAAIA,CAAAA,EAAAA,CAAAA,CAAAA;AAC9D,CAAA;AAiEO,SAASQ,WAAAA,CAAYC,OAAO,EAAEC,IAAI,EAAA;AACvC,IAAA,IAAIC,CAAI,GAAA;QAAEC,KAAO,EAAA,CAAA;AAAGC,QAAAA,IAAAA,EAAM,SAANA,IAAAA,GAAAA;YAAmB,IAAIC,CAAC,CAAC,CAAE,CAAA,GAAG,GAAG,MAAMA,CAAC,CAAC,CAAE,CAAA,CAAA;YAAE,OAAOA,CAAC,CAAC,CAAE,CAAA,CAAA;AAAE,SAAA;AAAGC,QAAAA,IAAAA,EAAM,EAAE;AAAEC,QAAAA,GAAAA,EAAK,EAAE;AAAC,KAAA,EAAGC,CAAGC,EAAAA,CAAAA,EAAGJ,CAAGK,EAAAA,CAAAA,GAAIlB,OAAOmB,MAAM,CAAC,CAAC,OAAOC,QAAa,KAAA,UAAA,GAAaA,QAAWpB,GAAAA,MAAK,EAAGqB,SAAS,CAAA,CAAA;IAC/L,OAAOH,CAAAA,CAAEI,IAAI,GAAGC,IAAK,CAAA,CAAA,CAAA,EAAIL,CAAC,CAAC,OAAQ,CAAA,GAAGK,IAAK,CAAA,CAAA,CAAA,EAAIL,CAAC,CAAC,SAAS,GAAGK,IAAAA,CAAK,CAAI,CAAA,EAAA,OAAOnC,MAAW,KAAA,UAAA,KAAe8B,CAAC,CAAC9B,MAAAA,CAAOoC,QAAQ,CAAC,GAAG,WAAA;AAAa,QAAA,OAAO,IAAI,CAAA;AAAE,KAAA,CAAIN,EAAAA,CAAAA,CAAAA;AAC1J,IAAA,SAASK,KAAKE,CAAC,EAAA;AAAI,QAAA,OAAO,SAAUC,CAAC,EAAA;AAAI,YAAA,OAAOC,IAAK,CAAA;AAACF,gBAAAA,CAAAA;AAAGC,gBAAAA,CAAAA;AAAE,aAAA,CAAA,CAAA;AAAG,SAAA,CAAA;AAAG,KAAA;AACjE,IAAA,SAASC,KAAKC,EAAE,EAAA;QACZ,IAAIZ,CAAAA,EAAG,MAAM,IAAIa,SAAU,CAAA,iCAAA,CAAA,CAAA;AAC3B,QAAA,MAAOX,CAAMA,KAAAA,CAAI,GAAA,CAAA,EAAGU,EAAE,CAAC,CAAA,CAAE,KAAKlB,CAAI,GAAA,CAAA,CAAC,CAAA,EAAIA,EAAG,IAAI;YAC1C,IAAIM,CAAAA,GAAI,CAAGC,EAAAA,CAAAA,KAAMJ,CAAAA,GAAIe,EAAE,CAAC,CAAE,CAAA,GAAG,CAAIX,GAAAA,CAAC,CAAC,QAAA,CAAS,GAAGW,EAAE,CAAC,CAAE,CAAA,GAAGX,CAAC,CAAC,OAAQ,CAAA,KAAMJ,CAAAA,CAAAA,GAAII,CAAC,CAAC,SAAS,KAAKJ,CAAEiB,CAAAA,IAAI,CAACb,CAAAA,CAAAA,EAAI,CAAA,CAAA,GAAKA,CAAEK,CAAAA,IAAI,CAAD,IAAM,CAAET,CAAAA,CAAIA,GAAAA,CAAAA,CAAEiB,IAAI,CAACb,CAAGW,EAAAA,EAAE,CAAC,CAAA,CAAE,CAAA,EAAGtD,IAAI,EAAE,OAAOuC,CAAAA,CAAAA;YAC3J,IAAII,CAAAA,GAAI,CAAGJ,EAAAA,CAAAA,EAAGe,EAAK,GAAA;gBAACA,EAAE,CAAC,EAAE,GAAG,CAAA;AAAGf,gBAAAA,CAAAA,CAAEzC,KAAK;AAAC,aAAA,CAAA;YACvC,OAAQwD,EAAE,CAAC,CAAE,CAAA;gBACT,KAAK,CAAA,CAAA;gBAAG,KAAK,CAAA;oBAAGf,CAAIe,GAAAA,EAAAA,CAAAA;AAAI,oBAAA,MAAA;gBACxB,KAAK,CAAA;AAAGlB,oBAAAA,CAAAA,CAAEC,KAAK,EAAA,CAAA;oBAAI,OAAO;wBAAEvC,KAAOwD,EAAAA,EAAE,CAAC,CAAE,CAAA;wBAAEtD,IAAM,EAAA,KAAA;AAAM,qBAAA,CAAA;gBACtD,KAAK,CAAA;AAAGoC,oBAAAA,CAAAA,CAAEC,KAAK,EAAA,CAAA;oBAAIM,CAAIW,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;oBAAEA,EAAK,GAAA;AAAC,wBAAA,CAAA;AAAE,qBAAA,CAAA;AAAE,oBAAA,SAAA;gBACxC,KAAK,CAAA;oBAAGA,EAAKlB,GAAAA,CAAAA,CAAEK,GAAG,CAACgB,GAAG,EAAA,CAAA;oBAAIrB,CAAEI,CAAAA,IAAI,CAACiB,GAAG,EAAA,CAAA;AAAI,oBAAA,SAAA;AACxC,gBAAA;AACI,oBAAA,IAAI,EAAElB,CAAIH,GAAAA,CAAAA,CAAEI,IAAI,EAAED,CAAIA,GAAAA,CAAAA,CAAEf,MAAM,GAAG,CAAKe,IAAAA,CAAC,CAACA,CAAEf,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAD,KAAO8B,EAAE,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,EAAE,CAAC,CAAE,CAAA,KAAK,CAAA,CAAI,EAAA;wBAAElB,CAAI,GAAA,CAAA,CAAA;AAAG,wBAAA,SAAA;AAAU,qBAAA;oBAC3G,IAAIkB,EAAE,CAAC,CAAE,CAAA,KAAK,MAAM,CAACf,CAAMe,IAAAA,EAAE,CAAC,CAAA,CAAE,GAAGf,CAAC,CAAC,CAAE,CAAA,IAAIe,EAAE,CAAC,EAAE,GAAGf,CAAC,CAAC,CAAA,CAAE,CAAI,EAAA;AAAEH,wBAAAA,CAAAA,CAAEC,KAAK,GAAGiB,EAAE,CAAC,CAAE,CAAA,CAAA;AAAE,wBAAA,MAAA;AAAO,qBAAA;oBACrF,IAAIA,EAAE,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKlB,CAAEC,CAAAA,KAAK,GAAGE,CAAC,CAAC,CAAA,CAAE,EAAE;AAAEH,wBAAAA,CAAAA,CAAEC,KAAK,GAAGE,CAAC,CAAC,CAAE,CAAA,CAAA;wBAAEA,CAAIe,GAAAA,EAAAA,CAAAA;AAAI,wBAAA,MAAA;AAAO,qBAAA;AACpE,oBAAA,IAAIf,KAAKH,CAAEC,CAAAA,KAAK,GAAGE,CAAC,CAAC,EAAE,EAAE;AAAEH,wBAAAA,CAAAA,CAAEC,KAAK,GAAGE,CAAC,CAAC,CAAE,CAAA,CAAA;wBAAEH,CAAEK,CAAAA,GAAG,CAACiB,IAAI,CAACJ,EAAAA,CAAAA,CAAAA;AAAK,wBAAA,MAAA;AAAO,qBAAA;AAClE,oBAAA,IAAIf,CAAC,CAAC,CAAA,CAAE,EAAEH,CAAEK,CAAAA,GAAG,CAACgB,GAAG,EAAA,CAAA;oBACnBrB,CAAEI,CAAAA,IAAI,CAACiB,GAAG,EAAA,CAAA;AAAI,oBAAA,SAAA;AACtB,aAAA;YACAH,EAAKnB,GAAAA,IAAAA,CAAKqB,IAAI,CAACtB,OAASE,EAAAA,CAAAA,CAAAA,CAAAA;AAC5B,SAAA,CAAE,OAAOuB,CAAG,EAAA;YAAEL,EAAK,GAAA;AAAC,gBAAA,CAAA;AAAGK,gBAAAA,CAAAA;AAAE,aAAA,CAAA;YAAEhB,CAAI,GAAA,CAAA,CAAA;SAAa,QAAA;AAAED,YAAAA,CAAAA,GAAIH,CAAI,GAAA,CAAA,CAAA;AAAG,SAAA;QACzD,IAAIe,EAAE,CAAC,CAAE,CAAA,GAAG,GAAG,MAAMA,EAAE,CAAC,CAAE,CAAA,CAAA;QAAE,OAAO;YAAExD,KAAOwD,EAAAA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,CAAA,CAAE,GAAG,KAAK,CAAA;YAAGtD,IAAM,EAAA,IAAA;AAAK,SAAA,CAAA;AACnF,KAAA;AACF,CAAA;AAiLuB,OAAO4D,eAAAA,KAAoB,UAAaA,GAAAA,eAAAA,GAAkB,0BAAU7D,KAAK,EAAE8D,UAAU,EAAEC,OAAO,EAAA;IACnH,IAAIH,CAAAA,GAAI,IAAII,KAAMD,CAAAA,OAAAA,CAAAA,CAAAA;IAClB,OAAOH,CAAAA,CAAEK,IAAI,GAAG,iBAAmBL,EAAAA,CAAAA,CAAE5D,KAAK,GAAGA,KAAO4D,EAAAA,CAAAA,CAAEE,UAAU,GAAGA,UAAYF,EAAAA,CAAAA,CAAAA;AACjF;;AC1UA;AACA;AACA;AACA,IAAIM,eAAAA,CAAAA;AACJ,IAAMC,KAAAA,GAAQ,IAAIC,UAAW,CAAA,EAAA,CAAA,CAAA;AACd,SAASC,GAAAA,GAAAA;;AAEtB,IAAA,IAAI,CAACH,eAAiB,EAAA;;QAEpBA,eAAkB,GAAA,OAAOI,MAAW,KAAA,WAAA,IAAeA,MAAOJ,CAAAA,eAAe,IAAII,MAAOJ,CAAAA,eAAe,CAACK,IAAI,CAACD,MAAAA,CAAAA,CAAAA;AAEzG,QAAA,IAAI,CAACJ,eAAiB,EAAA;AACpB,YAAA,MAAM,IAAIF,KAAM,CAAA,0GAAA,CAAA,CAAA;AAClB,SAAA;AACF,KAAA;AAEA,IAAA,OAAOE,eAAgBC,CAAAA,KAAAA,CAAAA,CAAAA;AACzB;;AChBA;;;IAKA,IAAMK,YAAY,EAAE,CAAA;AAEpB,IAAK,IAAIxC,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,GAAA,EAAK,EAAEA,CAAG,CAAA;IAC5BwC,SAAUb,CAAAA,IAAI,CAAE3B,CAAAA,CAAAA,GAAI,KAAI,EAAGyC,QAAQ,CAAC,EAAIC,CAAAA,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA;AAChD,CAAA;AAEO,SAASC,eAAAA,CAAgBC,GAAG,EAAEC,MAAU,EAAA;AAAVA,IAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;;;AAG5C,IAAA,OAAOL,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,SAAS,CAAE,CAAA,CAAC,GAAG,GAAA,GAAML,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,SAAS,CAAE,CAAA,CAAC,GAAG,GAAA,GAAML,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,SAAS,CAAE,CAAA,CAAC,GAAG,GAAA,GAAML,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,CAAA,CAAE,CAAC,GAAG,GAAML,GAAAA,SAAS,CAACI,GAAG,CAACC,MAAAA,GAAS,EAAG,CAAA,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,EAAA,CAAG,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAS,GAAA,EAAA,CAAG,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,SAAS,EAAG,CAAA,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAAA,GAAS,EAAG,CAAA,CAAC,GAAGL,SAAS,CAACI,GAAG,CAACC,MAAAA,GAAS,GAAG,CAAC,CAAA;AACpf;;AChBA,IAAMC,UAAAA,GAAa,OAAOR,MAAAA,KAAW,WAAeA,IAAAA,MAAAA,CAAOQ,UAAU,IAAIR,MAAOQ,CAAAA,UAAU,CAACP,IAAI,CAACD,MAAAA,CAAAA,CAAAA;AAChG,aAAe;IACbQ,UAAAA,EAAAA,UAAAA;AACF,CAAE;;ACCF,SAASC,EAAGC,CAAAA,OAAO,EAAEC,GAAG,EAAEJ,MAAM,EAAA;AAC9B,IAAA,IAAIK,OAAOJ,UAAU,IAAI,CAACG,GAAAA,IAAO,CAACD,OAAS,EAAA;AACzC,QAAA,OAAOE,OAAOJ,UAAU,EAAA,CAAA;AAC1B,KAAA;AAEAE,IAAAA,OAAAA,GAAUA,WAAW,EAAC,CAAA;IACtB,IAAMG,IAAAA,GAAOH,OAAQI,CAAAA,MAAM,IAAKJ,CAAAA,OAAAA,CAAQX,GAAG,IAAIA,GAAE,GAAA,CAAA;AAEjDc,IAAAA,IAAI,CAAC,CAAE,CAAA,GAAGA,IAAI,CAAC,CAAA,CAAE,GAAG,IAAO,GAAA,IAAA,CAAA;IAC3BA,IAAI,CAAC,EAAE,GAAGA,IAAI,CAAC,CAAE,CAAA,GAAG,IAAO,GAAA,IAAA,CAAA;AAE3B,IAAA,IAAIF,GAAK,EAAA;AACPJ,QAAAA,MAAAA,GAASA,MAAU,IAAA,CAAA,CAAA;AAEnB,QAAA,IAAK,IAAI7C,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,EAAA,EAAI,EAAEA,CAAG,CAAA;AAC3BiD,YAAAA,GAAG,CAACJ,MAAS7C,GAAAA,CAAAA,CAAE,GAAGmD,IAAI,CAACnD,CAAE,CAAA,CAAA;AAC3B,SAAA;QAEA,OAAOiD,GAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,OAAON,eAAgBQ,CAAAA,IAAAA,CAAAA,CAAAA;AACzB;;ACxBO,SAASE,OAAAA,CAAYT,GAAQ,EAAE7E,KAAQ,EAAA;AAC5C,IAAA,IAAI,CAAC6E,GAAAA,CAAIU,QAAQ,CAACvF,KAAQ,CAAA,EAAA;AACxB6E,QAAAA,GAAAA,CAAIjB,IAAI,CAAC5D,KAAAA,CAAAA,CAAAA;AACX,KAAA;IAEA,OAAO6E,GAAAA,CAAAA;AACT,CAAA;AAEA;;;;;AAKC,IACM,SAASW,UAAeX,CAAAA,GAAQ,EAAE7E,KAAQ,EAAA;IAC/C,IAAMyF,KAAAA,GAAQZ,GAAIa,CAAAA,OAAO,CAAC1F,KAAAA,CAAAA,CAAAA;IAE1B,IAAIyF,KAAAA,GAAQ,CAAC,CAAG,EAAA;QACdZ,GAAIc,CAAAA,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACpB,KAAA;IAEA,OAAOZ,GAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;;IAQO,SAASe,gBAAiDf,CAAAA,GAAQ,EAAEgB,IAAO,EAAEC,QAAgB,EAAEC,UAAkB,EAAA;AAAlBA,IAAAA,IAAAA,uBAAAA,UAAa,GAAA,KAAA,CAAA;IACjH,IAAIlB,GAAAA,CAAIU,QAAQ,CAACM,IAAO,CAAA,EAAA;AACtB,QAAA,OAAA;AACF,KAAA;AACAhB,IAAAA,GAAAA,CAAIjB,IAAI,CAACiC,IAAAA,CAAAA,CAAAA;IACT,IAAIhB,GAAAA,CAAInD,MAAM,KAAK,CAAG,EAAA;AACpB,QAAA,OAAA;AACF,KAAA;;IAEA,IAAI+D,KAAAA,GAAQZ,GAAInD,CAAAA,MAAM,GAAG,CAAA,CAAA;AAEzB,IAAA,IAAI+D,KAAO,EAAA;QACT,IAAMO,WAAAA,GAAcnB,GAAG,CAACY,KAAM,CAAA,CAAA;AAE9B,QAAA,IAAIM,UAAY,EAAA;YACd,MAAOlB,GAAG,CAACY,KAAAA,GAAQ,CAAE,CAAA,CAACK,SAAS,GAAGE,WAAW,CAACF,QAAAA,CAAS,CAAE;AACvDjB,gBAAAA,GAAG,CAACY,KAAM,CAAA,GAAGZ,GAAG,CAACY,QAAQ,CAAE,CAAA,CAAA;AAC3BA,gBAAAA,KAAAA,EAAAA,CAAAA;AACA,gBAAA,IAAIA,UAAU,CAAG,EAAA;AACf,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;SACK,MAAA;YACL,MAAOZ,GAAG,CAACY,KAAAA,GAAQ,CAAE,CAAA,CAACK,SAAS,GAAGE,WAAW,CAACF,QAAAA,CAAS,CAAE;AACvDjB,gBAAAA,GAAG,CAACY,KAAM,CAAA,GAAGZ,GAAG,CAACY,QAAQ,CAAE,CAAA,CAAA;AAC3BA,gBAAAA,KAAAA,EAAAA,CAAAA;AACA,gBAAA,IAAIA,UAAU,CAAG,EAAA;AACf,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QACAZ,GAAG,CAACY,MAAM,GAAGO,WAAAA,CAAAA;AACf,KAAA;AACF,CAAA;AAEO,SAASC,cACdC,SAAY,EACZxE,MAAc,EACdyE,OAAe,EACfC,QAAY,EAAA;AAAZA,IAAAA,IAAAA,qBAAAA,QAAW,GAAA,CAAA,CAAA;IAEX,IAAMC,MAAAA,GAASH,UAAUG,MAAM,CAAA;AAE/B,IAAA,IAAIA,OAAOC,UAAU,GAAGJ,SAAUK,CAAAA,iBAAiB,GAAG7E,MAAQ,EAAA;AAC5D,QAAA,IAAI8E,IAAOC,GAAAA,IAAAA,CAAKC,IAAI,CAAChF,MAAS0E,GAAAA,QAAAA,CAAAA,CAAAA;AAE9B,QAAA,IAAI,CAACO,MAAAA,CAAOC,KAAK,CAACT,OAAU,CAAA,EAAA;YAC1BK,IAAOC,GAAAA,IAAAA,CAAKI,GAAG,CAACL,IAAML,EAAAA,OAAAA,CAAAA,CAAAA;AACxB,SAAA;AACA,QAAA,IAAMW,OAAU,GAAA,IAAIC,WAAYb,CAAAA,SAAAA,CAAUK,iBAAiB,GAAGC,IAAAA,CAAAA,CAAAA;AAC9D,QAAA,IAAMQ,IAAO,GAAA,IAAKd,SAAU9E,CAAAA,WAAW,CAAqC0F,OAAAA,CAAAA,CAAAA;AAE5EE,QAAAA,IAAAA,CAAKC,GAAG,CAACf,SAAAA,CAAAA,CAAAA;QAET,OAAOc,IAAAA,CAAAA;AACT,KAAA;IAEA,OAAOd,SAAAA,CAAAA;AACT;;AC5FO,IAAMgB,GAAAA,GAAMT,IAAKU,CAAAA,EAAE,GAAG,CAAE,CAAA;AACxB,IAAMC,OAAAA,GAAUX,IAAKU,CAAAA,EAAE,GAAG,GAAI,CAAA;AAC9B,IAAME,OAAAA,GAAU,GAAMZ,GAAAA,IAAAA,CAAKU,EAAE,CAAC;AAC9B,IAAMG,gBAAgB,IAAK,CAAA;AAC3B,SAASC,OAAOjE,CAAC,EAAA;AACpB,IAAA,OAAOsD,KAAMtD,CAAAA,CAAAA,CAAAA,IAAMmD,IAAKe,CAAAA,GAAG,CAAClE,CAAKgE,CAAAA,GAAAA,aAAAA,CAAAA;AACrC,CAAA;AACO,SAASG,OAAAA,CAAQC,CAAC,EAAEC,CAAC,EAAA;AACxB,IAAA,OAAOlB,IAAKe,CAAAA,GAAG,CAACE,CAAAA,GAAIC,KAAKL,aAAkBI,IAAAA,CAAAA,KAAME,QAAYD,IAAAA,CAAAA,KAAMC,QAAcF,IAAAA,CAAAA,KAAM,CAACE,QAAAA,IAAYD,MAAM,CAACC,QAAAA,CAAAA;AAC/G,CAAA;AACA;AACO,IAAMC,IAAAA,GAAO,SAACC,CAAAA,EAAGjF,GAAGkF,MAAQC,EAAAA,EAAAA,EAAAA;AAAOC,IAAAA,OAAAA,IAAAA,CAAKH,GAAGjF,CAAG,EAAA,CAAA,GAAI4D,KAAKyB,GAAG,CAAC,CAACH,MAASC,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAAK,CAAA,CAAA;AACjF;AACO,IAAMC,IAAAA,GAAO,SAACH,CAAAA,EAAGjF,CAAGJ,EAAAA,CAAAA,EAAAA;AAAM,IAAA,OAAC,CAAA,CAAA,GAAIA,CAAAA,IAAKqF,IAAIrF,CAAII,GAAAA,CAAAA,CAAAA;AAAE,CAAA,CAAA;AAC9C,IAAMsF,WAAW,SAACC,OAAAA,EAAAA;WAAYA,OAAUhB,GAAAA,OAAAA,CAAAA;AAAQ,CAAA,CAAA;AAChD,IAAMiB,WAAW,SAACC,OAAAA,EAAAA;WAAYA,OAAUjB,GAAAA,OAAAA,CAAAA;AAAQ,CAAA,CAAA;AAChD,SAASkB,OAAMvI,CAAAA,KAAK,EAAE6G,GAAG,EAAE2B,GAAG,EAAA;AACjC,IAAA,IAAMC,QAAW7B,GAAAA,KAAAA,CAAMC,GAAO,CAAA,GAAA,CAACe,QAAWf,GAAAA,GAAAA,CAAAA;IAC1C,IAAM6B,QAAAA,GAAW9B,KAAM4B,CAAAA,GAAAA,CAAAA,GAAOZ,QAAWY,GAAAA,GAAAA,CAAAA;AACzC,IAAA,IAAMG,KAAQlC,GAAAA,IAAAA,CAAKI,GAAG,CAAC4B,QAAUC,EAAAA,QAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAME,KAAQnC,GAAAA,IAAAA,CAAK+B,GAAG,CAACC,QAAUC,EAAAA,QAAAA,CAAAA,CAAAA;AACjC,IAAA,OAAOjC,KAAKI,GAAG,CAACJ,KAAK+B,GAAG,CAACxI,OAAO2I,KAAQC,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAC5C;;ACrBA;;AAEC,IACM,IAAA,OAAMC,iBAAD,WAAL;aAAMA,OAaGf,CAAAA,CAAK,EAAEjF,CAAK,EAAA;AAAZiF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;QACnB,IAAI,CAACiF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;;AAfJgG,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAiBT;;;;;AAKC,QACD5B,OAAAA,GAIC,GAJDA,SAAAA,GAAIa,CAAAA,CAAC,EAAEjF,CAAC,EAAA;QACJ,IAAI,CAACiF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAiG,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,OAAAA,GAAAA;QACI,IAAI,CAAChB,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACjF,CAAC,GAAG,CAAA,CAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDkG,MAAAA,CAAAA,aAIC,GAJDA,SAAAA,cAAcC,GAAG,EAAA;QACb,IAAI,CAAClB,CAAC,GAAGkB,GAAAA,CAAAA;QACT,IAAI,CAACnG,CAAC,GAAGmG,GAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDC,OAAAA,YAIC,GAJDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAChBoE,QAAAA,IAAAA,aAAAA,CAAAA;QAAT,IAAI,CAACpB,CAAC,GAAGoB,CAAAA,gBAAAA,KAAK,CAACpE,MAAO,CAAA,KAAA,IAAA,GAAboE,aAAiB,GAAA,CAAA,CAAA;AACjBA,QAAAA,IAAAA,OAAAA,CAAAA;QAAT,IAAI,CAACrG,CAAC,GAAGqG,CAAAA,OAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,OAAqB,GAAA,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,SAASC,GAAG,EAAA;AACR,QAAA,IAAI,CAACtB,CAAC,GAAGsB,GAAAA,CAAItB,CAAC,CAAA;AACd,QAAA,IAAI,CAACjF,CAAC,GAAGuG,GAAAA,CAAIvG,CAAC,CAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAwG,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACI,OAAO,IAzEFR,QAyEc,IAAI,CAACf,CAAC,EAAE,IAAI,CAACjF,CAAC,CAAA,CAAA;AACrC,KAAA,CAAA;AACA;;;;;AAKC,QACDyG,OAAAA,UAWC,GAXDA,SAAAA,UAAW7D,CAAAA,KAAK,EAAEzF,KAAK,EAAA;QACnB,OAAQyF,KAAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAACqC,CAAC,GAAG9H,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC6C,CAAC,GAAG7C,KAAAA,CAAAA;AACT,gBAAA,MAAA;AACJ,YAAA;gBAASuJ,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD+D,MAAAA,CAAAA,UAOC,GAPDA,SAAAA,WAAW/D,KAAK,EAAA;QACZ,OAAQA,KAAAA;YACJ,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACqC,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACjF,CAAC,CAAA;AACrB,YAAA;gBAAS0G,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;QACA,OAAO,CAAA,CAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDgE,MAAAA,CAAAA,GAcC,GAdDA,SAAAA,IAAI1I,KAAK,EAAA;QACL,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD8G,OAAAA,UAIC,GAJDA,SAAAA,UAAW7I,CAAAA,IAAI,EAAEC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD+G,MAAAA,CAAAA,QAcC,GAdDA,SAAAA,SAAS7I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDgH,OAAAA,eAIC,GAJDA,SAAAA,eAAgB/I,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDiH,MAAAA,CAAAA,QAcC,GAdDA,SAAAA,SAAS/I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDkH,OAAAA,eAIC,GAJDA,SAAAA,eAAgBjJ,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDmH,MAAAA,CAAAA,MAcC,GAdDA,SAAAA,OAAOjJ,KAAK,EAAA;QACR,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDoH,MAAAA,CAAAA,KAIC,GAJDA,SAAAA,MAAM3G,CAAC,EAAA;QACH,IAAI,CAACwE,CAAC,IAAIxE,CAAAA,CAAAA;QACV,IAAI,CAACT,CAAC,IAAIS,CAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA4G,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,GAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACpC,CAAC,GAAG,IAAI,CAACjF,CAAC,CAAA;AAC1B,KAAA,CAAA;AACA;;;;AAIC,QACDgE,MAAAA,CAAAA,GAUC,GAVDA,SAAAA,IAAIvD,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAACwE,CAAC,GAAGrB,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACiB,CAAC,EAAExE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACT,CAAC,GAAG4D,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAAChE,CAAC,EAAES,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAACwE,CAAC,GAAGrB,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACiB,CAAC,EAAExE,CAAAA,CAAEwE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACjF,CAAC,GAAG4D,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAAChE,CAAC,EAAES,CAAAA,CAAET,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD2F,MAAAA,CAAAA,GAUC,GAVDA,SAAAA,IAAIlF,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAACwE,CAAC,GAAGrB,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACV,CAAC,EAAExE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACT,CAAC,GAAG4D,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC3F,CAAC,EAAES,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAACwE,CAAC,GAAGrB,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACV,CAAC,EAAExE,CAAAA,CAAEwE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACjF,CAAC,GAAG4D,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAAC3F,CAAC,EAAES,CAAAA,CAAET,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD0F,OAAAA,KAEC,GAFDA,SAAAA,KAAM1B,CAAAA,GAAG,EAAE2B,GAAG,EAAA;AACV,QAAA,OAAO,IAAI,CAACA,GAAG,CAAC3B,GAAAA,CAAAA,CAAKA,GAAG,CAAC2B,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AACA;;;QAIA2B,MAAAA,CAAAA,KAIC,GAJDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAACrC,CAAC,GAAGrB,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAACrC,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAACtH,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA6D,MAAAA,CAAAA,IAIC,GAJDA,SAAAA,IAAAA,GAAAA;QACI,IAAI,CAACoB,CAAC,GAAGrB,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACoB,CAAC,CAAA,CAAA;QACzB,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAAC7D,CAAC,CAAA,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAuH,MAAAA,CAAAA,KAIC,GAJDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAACtC,CAAC,GAAGrB,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACtC,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACvH,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA2E,MAAAA,CAAAA,GAIC,GAJDA,SAAAA,GAAAA,GAAAA;QACI,IAAI,CAACM,CAAC,GAAGrB,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAACM,CAAC,CAAA,CAAA;QACxB,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAAC3E,CAAC,CAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAwH,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACvC,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAnB,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,OAAO+E,KAAK6D,IAAI,CAAC,IAAI,CAACxC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA,CAAA;AACtD,KAAA,CAAA;AACA;;;QAIA0H,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACzC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;AAC5C,KAAA,CAAA;AACA;;;QAIA2H,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACR,MAAM,CAAC,IAAI,CAACtI,MAAM,EAAM,IAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AACA;;;;AAIC,QACD+I,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAU/I,MAAM,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC8I,SAAS,EAAA,CAAGV,QAAQ,CAACpI,MAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AACA;;;;;AAKC,QACDuG,OAAAA,IAIC,GAJDA,SAAAA,IAAKyC,CAAAA,KAAK,EAAEC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC7C,CAAC,IAAK4C,CAAAA,KAAAA,CAAM5C,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK6C,KAAAA,CAAAA;AAC/B,QAAA,IAAI,CAAC9H,CAAC,IAAK6H,CAAAA,KAAAA,CAAM7H,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK8H,KAAAA,CAAAA;AAC/B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAC,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,YAAYC,EAAE,EAAEC,EAAE,EAAEH,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC7C,CAAC,GAAG+C,EAAAA,CAAG/C,CAAC,GAAIgD,CAAAA,EAAAA,CAAGhD,CAAC,GAAG+C,EAAG/C,CAAAA,CAAC,IAAI6C,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAAC9H,CAAC,GAAGgI,EAAAA,CAAGhI,CAAC,GAAIiI,CAAAA,EAAAA,CAAGjI,CAAC,GAAGgI,EAAGhI,CAAAA,CAAC,IAAI8H,KAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDI,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,IAAIzH,CAAC,EAAA;AACD,QAAA,OAAO,IAAI,CAACwE,CAAC,GAAGxE,CAAEwE,CAAAA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAGS,CAAAA,CAAET,CAAC,CAAA;AACtC,KAAA,CAAA;AACA;;;;AAIC,QACDmI,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,MAAM1H,CAAC,EAAA;AACH,QAAA,OAAO,IAAI,CAACwE,CAAC,GAAGxE,CAAET,CAAAA,CAAC,GAAG,IAAI,CAACA,CAAC,GAAGS,CAAAA,CAAEwE,CAAC,CAAA;AACtC,KAAA,CAAA;AACA;;;;AAIC,QACDmD,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,SAAS3H,CAAC,EAAA;AACN,QAAA,IAAM4H,KAAK,IAAI,CAACpD,CAAC,GAAGxE,EAAEwE,CAAC,CAAA;AACvB,QAAA,IAAMqD,KAAK,IAAI,CAACtI,CAAC,GAAGS,EAAET,CAAC,CAAA;AACvB,QAAA,OAAO4D,IAAK6D,CAAAA,IAAI,CAACY,EAAAA,GAAKA,KAAKC,EAAKA,GAAAA,EAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,eAIC,GAJDA,SAAAA,gBAAgB9H,CAAC,EAAA;AACb,QAAA,IAAM4H,KAAK,IAAI,CAACpD,CAAC,GAAGxE,EAAEwE,CAAC,CAAA;AACvB,QAAA,IAAMqD,KAAK,IAAI,CAACtI,CAAC,GAAGS,EAAET,CAAC,CAAA;QACvB,OAAOqI,EAAAA,GAAKA,KAAKC,EAAKA,GAAAA,EAAAA,CAAAA;AAC1B,KAAA,CAAA;AACA;;;;AAIC,QACDE,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAO/H,CAAC,EAAA;AACJ,QAAA,OAAO,IAAI,CAACwE,CAAC,KAAKxE,CAAEwE,CAAAA,CAAC,IAAI,IAAI,CAACjF,CAAC,KAAKS,CAAAA,CAAET,CAAC,CAAA;AAC3C,KAAA,CAAA;AACA;;;QAIA0E,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAM+D,GAAMhE,GAAAA,aAAAA,CAAAA;AACZ,QAAA,IAAiB,QAAA,IAAI,EAAbQ,IAAS,KAATA,CAAAA,CAAAA,EAAGjF,IAAM,KAANA,CAAAA,CAAAA,CAAAA;QACX,OAAO4D,IAAAA,CAAKe,GAAG,CAACM,CAAAA,CAAAA,IAAMwD,OAAO7E,IAAKe,CAAAA,GAAG,CAAC3E,CAAMyI,CAAAA,IAAAA,GAAAA,CAAAA;AAChD,KAAA,CAAA;AACA;;;QAIAC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO;AAAC,YAAA,IAAI,CAACzD,CAAC;AAAE,YAAA,IAAI,CAACjF,CAAC;AAAC,SAAA,CAAA;AAC3B,KAAA,CAAA;AACA2I,IAAAA,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAKtC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACjBoE,QAAAA,KAAK,CAACpE,MAAAA,CAAO,GAAG,IAAI,CAACgD,CAAC,CAAA;AACtBoB,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAACjC,CAAC,CAAA;AAC9B,KAAA,CAAA;AACA;;;QAIAwC,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACyC,CAAC,GAAGrB,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,IAAI,CAACxC,CAAC,GAAG4D,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOoG,CAAAA,UAEN,GAFD,SAAOA,WAAWzC,GAAG,EAAA;QACjB,OAAO,IArcFH,OAqcgBE,EAAAA,CAAAA,aAAa,CAACC,GAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AACA;;;;;QAvcSH,QA6cF6C,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IA9cF+D,OAAAA,EAAAA,CA8cgBI,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AA/cS+D,IAAAA,OAAAA,OAAAA,CAAAA;AAgdZ,CAAA,EAAA,CAAA;AA7cG;;AAEC,QALQA,OAMF8C,CAAAA,GAAAA,GAAM,IAAI9C,OAAAA,CAAQ,GAAK,EAAA,GAAA,CAAA,CAAA;AANrBA,OAOF+C,CAAAA,IAAAA,GAAO,IAAI/C,OAAAA,CAAQ,GAAK,EAAA,GAAA,CAAA;;ACTnC;;AAEC,IACM,IAAA,OAAMgD,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,OAAAA,CAkBG/D,CAAK,EAAEjF,CAAK,EAAEiJ,CAAK,EAAA;AAAnBhE,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGiJ,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;QAC1B,IAAI,CAAChE,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;;AArBJD,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAuBT;;;;;;QAOA5E,MAAAA,CAAAA,GAKC,GALDA,SAAAA,IAAIa,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;QACP,IAAI,CAAChE,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAhD,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;QACI,IAAI,CAAChB,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACjF,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACiJ,CAAC,GAAG,CAAA,CAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD/C,MAAAA,CAAAA,aAKC,GALDA,SAAAA,cAAcC,GAAG,EAAA;QACb,IAAI,CAAClB,CAAC,GAAGkB,GAAAA,CAAAA;QACT,IAAI,CAACnG,CAAC,GAAGmG,GAAAA,CAAAA;QACT,IAAI,CAAC8C,CAAC,GAAG9C,GAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDC,OAAAA,YAKC,GALDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAChBoE,QAAAA,IAAAA,aAAAA,CAAAA;QAAT,IAAI,CAACpB,CAAC,GAAGoB,CAAAA,gBAAAA,KAAK,CAACpE,MAAO,CAAA,KAAA,IAAA,GAAboE,aAAiB,GAAA,CAAA,CAAA;AACjBA,QAAAA,IAAAA,OAAAA,CAAAA;QAAT,IAAI,CAACrG,CAAC,GAAGqG,CAAAA,OAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,OAAqB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAT,IAAI,CAAC4C,CAAC,GAAG5C,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB,GAAA,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,QAKC,GALDA,SAAAA,SAAS7F,CAAC,EAAA;AACN,QAAA,IAAI,CAACwE,CAAC,GAAGxE,CAAAA,CAAEwE,CAAC,CAAA;AACZ,QAAA,IAAI,CAACjF,CAAC,GAAGS,CAAAA,CAAET,CAAC,CAAA;AACZ,QAAA,IAAI,CAACiJ,CAAC,GAAGxI,CAAAA,CAAEwI,CAAC,CAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAzC,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IArFFwC,OAAAA,CAqFc,IAAI,CAAC/D,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,CAAA,CAAA;AAC7C,KAAA,CAAA;AACA;;;;;AAKC,QACDxC,OAAAA,UAcC,GAdDA,SAAAA,UAAW7D,CAAAA,KAAK,EAAEzF,KAAK,EAAA;QACnB,OAAQyF,KAAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAACqC,CAAC,GAAG9H,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC6C,CAAC,GAAG7C,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC8L,CAAC,GAAG9L,KAAAA,CAAAA;AACT,gBAAA,MAAA;AACJ,YAAA;gBAASuJ,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD+D,MAAAA,CAAAA,UAQC,GARDA,SAAAA,WAAW/D,KAAK,EAAA;QACZ,OAAQA,KAAAA;YACJ,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACqC,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACjF,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACiJ,CAAC,CAAA;AACrB,YAAA;gBAASvC,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;QACA,OAAO,CAAA,CAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDgE,MAAAA,CAAAA,GAiBC,GAjBDA,SAAAA,IAAI1I,KAAK,EAAA;QACL,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDnC,OAAAA,UAKC,GALDA,SAAAA,UAAW7I,CAAAA,IAAI,EAAEC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDC,OAAAA,eAKC,GALDA,SAAAA,eAAgBhL,CAAAA,KAAK,EAAEiL,CAAC,EAAA;AACpB,QAAA,IAAI,CAAClE,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,GAAGkE,CAAAA,CAAAA;AACpB,QAAA,IAAI,CAACnJ,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,GAAGmJ,CAAAA,CAAAA;AACpB,QAAA,IAAI,CAACF,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,GAAGE,CAAAA,CAAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDpC,MAAAA,CAAAA,QAiBC,GAjBDA,SAAAA,SAAS7I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDjC,OAAAA,eAKC,GALDA,SAAAA,eAAgB/I,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDhC,MAAAA,CAAAA,QAiBC,GAjBDA,SAAAA,SAAS/I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD/B,OAAAA,eAKC,GALDA,SAAAA,eAAgBjJ,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD9B,MAAAA,CAAAA,MAiBC,GAjBDA,SAAAA,OAAOjJ,KAAK,EAAA;QACR,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD7B,MAAAA,CAAAA,KAKC,GALDA,SAAAA,MAAM3G,CAAC,EAAA;QACH,IAAI,CAACwE,CAAC,IAAIxE,CAAAA,CAAAA;QACV,IAAI,CAACT,CAAC,IAAIS,CAAAA,CAAAA;QACV,IAAI,CAACwI,CAAC,IAAIxI,CAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA4G,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,GAAAA,GAAAA;QACI,OAAO,IAAI,CAACpC,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACiJ,CAAC,CAAA;AACnC,KAAA,CAAA;AACA;;;;AAIC,QACDjF,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,IAAIvD,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAACwE,CAAC,GAAGrB,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACiB,CAAC,EAAExE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACT,CAAC,GAAG4D,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAAChE,CAAC,EAAES,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACwI,CAAC,GAAGrF,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACiF,CAAC,EAAExI,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAACwE,CAAC,GAAGrB,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACiB,CAAC,EAAExE,CAAAA,CAAEwE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACjF,CAAC,GAAG4D,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAAChE,CAAC,EAAES,CAAAA,CAAET,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACiJ,CAAC,GAAGrF,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACiF,CAAC,EAAExI,CAAAA,CAAEwI,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDtD,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,IAAIlF,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAACwE,CAAC,GAAGrB,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACV,CAAC,EAAExE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACT,CAAC,GAAG4D,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC3F,CAAC,EAAES,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACwI,CAAC,GAAGrF,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACsD,CAAC,EAAExI,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAACwE,CAAC,GAAGrB,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACV,CAAC,EAAExE,CAAAA,CAAEwE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACjF,CAAC,GAAG4D,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAAC3F,CAAC,EAAES,CAAAA,CAAET,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACiJ,CAAC,GAAGrF,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACsD,CAAC,EAAExI,CAAAA,CAAEwI,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDvD,OAAAA,KAEC,GAFDA,SAAAA,KAAM1B,CAAAA,GAAG,EAAE2B,GAAG,EAAA;AACV,QAAA,OAAO,IAAI,CAACA,GAAG,CAAC3B,GAAAA,CAAAA,CAAKA,GAAG,CAAC2B,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AACA;;;QAIA2B,MAAAA,CAAAA,KAKC,GALDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAACrC,CAAC,GAAGrB,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAACrC,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAACtH,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAAC2B,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIApF,MAAAA,CAAAA,IAKC,GALDA,SAAAA,IAAAA,GAAAA;QACI,IAAI,CAACoB,CAAC,GAAGrB,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACoB,CAAC,CAAA,CAAA;QACzB,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAAC7D,CAAC,CAAA,CAAA;QACzB,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACoF,CAAC,CAAA,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA1B,MAAAA,CAAAA,KAKC,GALDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAACtC,CAAC,GAAGrB,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACtC,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACvH,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAAC0B,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAtE,MAAAA,CAAAA,GAKC,GALDA,SAAAA,GAAAA,GAAAA;QACI,IAAI,CAACM,CAAC,GAAGrB,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAACM,CAAC,CAAA,CAAA;QACxB,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAAC3E,CAAC,CAAA,CAAA;QACxB,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAACsE,CAAC,CAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAzB,MAAAA,CAAAA,MAKC,GALDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACvC,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACiJ,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIApK,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;QACI,OAAO+E,IAAAA,CAAK6D,IAAI,CAAC,IAAI,CAACxC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA,CAAA;AACxE,KAAA,CAAA;AACA;;;QAIAvB,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACI,OAAO,IAAI,CAACzC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;AAC9D,KAAA,CAAA;AACA;;;QAIAtB,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACR,MAAM,CAAC,IAAI,CAACtI,MAAM,EAAM,IAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AACA;;;;AAIC,QACD+I,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAU/I,MAAM,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC8I,SAAS,EAAA,CAAGV,QAAQ,CAACpI,MAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AACA;;;;;AAKC,QACDuG,OAAAA,IAKC,GALDA,SAAAA,IAAKyC,CAAAA,KAAK,EAAEC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC7C,CAAC,IAAK4C,CAAAA,KAAAA,CAAM5C,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK6C,KAAAA,CAAAA;AAC/B,QAAA,IAAI,CAAC9H,CAAC,IAAK6H,CAAAA,KAAAA,CAAM7H,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK8H,KAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACmB,CAAC,IAAKpB,CAAAA,KAAAA,CAAMoB,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAKnB,KAAAA,CAAAA;AAC/B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAC,MAAAA,CAAAA,WAKC,GALDA,SAAAA,YAAYC,EAAE,EAAEC,EAAE,EAAEH,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC7C,CAAC,GAAG+C,EAAAA,CAAG/C,CAAC,GAAIgD,CAAAA,EAAAA,CAAGhD,CAAC,GAAG+C,EAAG/C,CAAAA,CAAC,IAAI6C,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAAC9H,CAAC,GAAGgI,EAAAA,CAAGhI,CAAC,GAAIiI,CAAAA,EAAAA,CAAGjI,CAAC,GAAGgI,EAAGhI,CAAAA,CAAC,IAAI8H,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAACmB,CAAC,GAAGjB,EAAAA,CAAGiB,CAAC,GAAIhB,CAAAA,EAAAA,CAAGgB,CAAC,GAAGjB,EAAGiB,CAAAA,CAAC,IAAInB,KAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDI,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,IAAIzH,CAAC,EAAA;AACD,QAAA,OAAO,IAAI,CAACwE,CAAC,GAAGxE,CAAEwE,CAAAA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAGS,CAAAA,CAAET,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAGxI,EAAEwI,CAAC,CAAA;AACrD,KAAA,CAAA;AACA;;;;AAIC,QACDd,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,MAAMjK,KAAK,EAAA;AACP,QAAA,OAAO,IAAI,CAACkL,YAAY,CAAC,IAAI,EAAElL,KAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AACA;;;;;AAKC,QACDkL,OAAAA,YAOC,GAPDA,SAAAA,YAAanL,CAAAA,IAAI,EAAEC,KAAK,EAAA;QACpB,IAAWmL,EAAqBpL,GAAAA,IAAAA,CAAxBgH,CAAOjF,EAAGsJ,KAAcrL,IAAjB+B,CAAAA,CAAAA,EAAOiJ,EAAGM,GAAOtL,IAAVgL,CAAAA,CAAAA,CAAAA;QACtB,IAAWO,EAAqBtL,GAAAA,KAAAA,CAAxB+G,CAAOjF,EAAGyJ,KAAcvL,KAAjB8B,CAAAA,CAAAA,EAAOiJ,EAAGS,GAAOxL,KAAV+K,CAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAI,CAAChE,CAAC,GAAGqE,EAAAA,GAAKI,KAAKH,EAAKE,GAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAI,CAACzJ,CAAC,GAAGuJ,EAAAA,GAAKC,KAAKH,EAAKK,GAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAI,CAACT,CAAC,GAAGI,EAAAA,GAAKI,KAAKH,EAAKE,GAAAA,EAAAA,CAAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDG,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,QAAQC,MAAM,EAAA;;;AAGV,QAAA,OAAO,IAAI,CAAC7C,QAAQ,CAAC6C,MAAOpD,CAAAA,KAAK,EAAGS,CAAAA,QAAQ,CAAC,CAAA,GAAI,IAAI,CAACiB,GAAG,CAAC0B,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC9D,KAAA,CAAA;AACA;;;;AAIC,QACDxB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAS3H,CAAC,EAAA;AACN,QAAA,OAAOmD,KAAK6D,IAAI,CAAC,IAAI,CAACc,eAAe,CAAC9H,CAAAA,CAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA;;;;AAIC,QACD8H,MAAAA,CAAAA,eAKC,GALDA,SAAAA,gBAAgB9H,CAAC,EAAA;AACb,QAAA,IAAM4H,KAAK,IAAI,CAACpD,CAAC,GAAGxE,EAAEwE,CAAC,CAAA;AACvB,QAAA,IAAMqD,KAAK,IAAI,CAACtI,CAAC,GAAGS,EAAET,CAAC,CAAA;AACvB,QAAA,IAAM6J,KAAK,IAAI,CAACZ,CAAC,GAAGxI,EAAEwI,CAAC,CAAA;AACvB,QAAA,OAAOZ,EAAKA,GAAAA,EAAAA,GAAKC,EAAKA,GAAAA,EAAAA,GAAKuB,EAAKA,GAAAA,EAAAA,CAAAA;AACpC,KAAA,CAAA;AACA;;;;AAIC,QACDrB,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAO/H,CAAC,EAAA;AACJ,QAAA,OAAOA,EAAEwE,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIxE,CAAET,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIS,CAAAA,CAAEwI,CAAC,KAAK,IAAI,CAACA,CAAC,CAAA;AAC7D,KAAA,CAAA;AACA;;;QAIAvE,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAM+D,GAAMhE,GAAAA,aAAAA,CAAAA;QACZ,IAAoB,KAAA,GAAA,IAAI,EAAhBQ,CAAY,GAAA,KAAA,CAAZA,GAAGjF,CAAS,GAAA,KAAA,CAATA,CAAGiJ,EAAAA,CAAAA,GAAM,KAANA,CAAAA,CAAAA,CAAAA;AACd,QAAA,OAAOrF,IAAKe,CAAAA,GAAG,CAACM,CAAAA,CAAAA,IAAMwD,GAAO7E,IAAAA,IAAAA,CAAKe,GAAG,CAAC3E,CAAMyI,CAAAA,IAAAA,GAAAA,IAAO7E,IAAKe,CAAAA,GAAG,CAACsE,CAAMR,CAAAA,IAAAA,GAAAA,CAAAA;AACtE,KAAA,CAAA;AACA;;;;QAKAC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO;AAAC,YAAA,IAAI,CAACzD,CAAC;AAAE,YAAA,IAAI,CAACjF,CAAC;AAAE,YAAA,IAAI,CAACiJ,CAAC;AAAC,SAAA,CAAA;AACnC,KAAA,CAAA;IACAa,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;QACI,OAAO,IAAI9D,QAAQ,IAAI,CAACf,CAAC,EAAE,IAAI,CAACjF,CAAC,CAAA,CAAA;AACrC,KAAA,CAAA;AACA2I,IAAAA,MAAAA,CAAAA,IAIC,GAJDA,SAAAA,IAAKtC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACjBoE,QAAAA,KAAK,CAACpE,MAAAA,CAAO,GAAG,IAAI,CAACgD,CAAC,CAAA;AACtBoB,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAACjC,CAAC,CAAA;AAC1BqG,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAACgH,CAAC,CAAA;AAC9B,KAAA,CAAA;AACA;;;QAIAzG,MAAAA,CAAAA,MAKC,GALDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACyC,CAAC,GAAGrB,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,IAAI,CAACxC,CAAC,GAAG4D,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,IAAI,CAACyG,CAAC,GAAGrF,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDuH,OAAAA,UAEC,GAFDA,SAAAA,UAAWC,CAAAA,KAAK,EAAEC,GAAG,EAAA;AACjB,QAAA,OAAOD,KAAME,CAAAA,aAAa,CAAC,IAAI,EAAED,GAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AACA;;;;;AAKC,QACDE,OAAAA,eAEC,GAFDA,SAAAA,eAAgBC,CAAAA,CAAC,EAAEH,GAAG,EAAA;AAClB,QAAA,OAAOG,CAAEF,CAAAA,aAAa,CAAC,IAAI,EAAED,GAAAA,CAAAA,CAAAA;AACjC,KAAA,CAAA;AACA;;;;;AAKC,QACDI,OAAAA,WAEC,GAFDA,SAAAA,WAAYC,CAAAA,CAAC,EAAEL,GAAG,EAAA;AACd,QAAA,OAAOK,CAAEC,CAAAA,cAAc,CAAC,IAAI,EAAEN,GAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AACA;;;;;AAKC,QACDO,OAAAA,iBAEC,GAFDA,SAAAA,iBAAkBF,CAAAA,CAAC,EAAEL,GAAG,EAAA;AACpB,QAAA,OAAOK,CAAEG,CAAAA,eAAe,CAAC,IAAI,EAAER,GAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AACA;;;;;AAKC,QACDS,OAAAA,qBAEC,GAFDA,SAAAA,qBAAsBJ,CAAAA,CAAC,EAAEL,GAAG,EAAA;AACxB,QAAA,OAAOK,CAAEK,CAAAA,YAAY,CAAC,IAAI,EAAEV,GAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOrB,CAAAA,UAEN,GAFD,SAAOA,WAAWzC,GAAG,EAAA;QACjB,OAAO,IAtkBF6C,OAskBgB9C,EAAAA,CAAAA,aAAa,CAACC,GAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AACA;;;;;QAxkBS6C,QA8kBFH,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IA/kBF+G,OAAAA,EAAAA,CA+kBgB5C,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AAhlBS+G,IAAAA,OAAAA,OAAAA,CAAAA;AAilBZ,CAAA,EAAA,CAAA;AA7kBG;;AAEC,QANQA,OAOF4B,CAAAA,CAAAA,GAAI,IAAI5B,OAAAA,CAAQ,KAAK,GAAK,EAAA,GAAA,CAAA,CAAA;AAPxBA,OAAAA,CAQF6B,CAAI,GAAA,IAAI7B,OAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;AARxBA,OAAAA,CASF8B,CAAI,GAAA,IAAI9B,OAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;AATxBA,OAAAA,CAUFF,GAAM,GAAA,IAAIE,OAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA;AAV1BA,OAAAA,CAWFD,IAAO,GAAA,IAAIC,OAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA;;ACdxC;;AAEC,IACM,IAAA,OAAM+B,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,OAAAA,CAiBG9F,CAAK,EAAEjF,CAAK,EAAEiJ,CAAK,EAAE+B,CAAK,EAAA;AAA1B/F,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGiJ,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAG+B,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;QACjC,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAAC+B,CAAC,GAAGA,CAAAA,CAAAA;;AArBJD,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAuBT;;;;;;;QAQA3G,MAAAA,CAAAA,GAMC,GANDA,SAAAA,GAAAA,CAAIa,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAE+B,CAAC,EAAA;QACV,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAAC+B,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA/E,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,GAAAA;QACI,IAAI,CAAChB,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACjF,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACiJ,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAAC+B,CAAC,GAAG,CAAA,CAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD9E,MAAAA,CAAAA,aAMC,GANDA,SAAAA,cAAcC,GAAG,EAAA;QACb,IAAI,CAAClB,CAAC,GAAGkB,GAAAA,CAAAA;QACT,IAAI,CAACnG,CAAC,GAAGmG,GAAAA,CAAAA;QACT,IAAI,CAAC8C,CAAC,GAAG9C,GAAAA,CAAAA;QACT,IAAI,CAAC6E,CAAC,GAAG7E,GAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDC,OAAAA,YAMC,GANDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAChBoE,QAAAA,IAAAA,aAAAA,CAAAA;QAAT,IAAI,CAACpB,CAAC,GAAGoB,CAAAA,gBAAAA,KAAK,CAACpE,MAAO,CAAA,KAAA,IAAA,GAAboE,aAAiB,GAAA,CAAA,CAAA;AACjBA,QAAAA,IAAAA,OAAAA,CAAAA;QAAT,IAAI,CAACrG,CAAC,GAAGqG,CAAAA,OAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,OAAqB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAT,IAAI,CAAC4C,CAAC,GAAG5C,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAT,IAAI,CAAC2E,CAAC,GAAG3E,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB,GAAA,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,QAMC,GANDA,SAAAA,SAAS7F,CAAC,EAAA;AACN,QAAA,IAAI,CAACwE,CAAC,GAAGxE,CAAAA,CAAEwE,CAAC,CAAA;AACZ,QAAA,IAAI,CAACjF,CAAC,GAAGS,CAAAA,CAAET,CAAC,CAAA;AACZ,QAAA,IAAI,CAACiJ,CAAC,GAAGxI,CAAAA,CAAEwI,CAAC,CAAA;AACZ,QAAA,IAAI,CAAC+B,CAAC,GAAGvK,CAAAA,CAAEuK,CAAC,CAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAxE,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IA3FFuE,OA2Fc,CAAA,IAAI,CAAC9F,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,EAAE,IAAI,CAAC+B,CAAC,CAAA,CAAA;AACrD,KAAA,CAAA;AACA;;;;;AAKC,QACDvE,OAAAA,UAiBC,GAjBDA,SAAAA,UAAW7D,CAAAA,KAAK,EAAEzF,KAAK,EAAA;QACnB,OAAQyF,KAAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAACqC,CAAC,GAAG9H,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC6C,CAAC,GAAG7C,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC8L,CAAC,GAAG9L,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC6N,CAAC,GAAG7N,KAAAA,CAAAA;AACT,gBAAA,MAAA;AACJ,YAAA;gBAASuJ,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD+D,MAAAA,CAAAA,UASC,GATDA,SAAAA,WAAW/D,KAAK,EAAA;QACZ,OAAQA,KAAAA;YACJ,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACqC,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACjF,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACiJ,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAAC+B,CAAC,CAAA;AACrB,YAAA;gBAAStE,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;QACA,OAAO,CAAA,CAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDgE,MAAAA,CAAAA,GAoBC,GApBDA,SAAAA,IAAI1I,KAAK,EAAA;QACL,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;YACV,IAAI,CAAC8M,CAAC,IAAI9M,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8M,CAAC,IAAI9M,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC+B,CAAC,IAAI9M,KAAAA,CAAM8M,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDlE,OAAAA,UAMC,GANDA,SAAAA,UAAW7I,CAAAA,IAAI,EAAEC,KAAK,EAAA;AAClB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,IAAI,CAAC+B,CAAC,GAAG/M,KAAK+M,CAAC,GAAG9M,MAAM8M,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD9B,OAAAA,eAMC,GANDA,SAAAA,eAAgBhL,CAAAA,KAAK,EAAEiL,CAAC,EAAA;AACpB,QAAA,IAAI,CAAClE,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,GAAGkE,CAAAA,CAAAA;AACpB,QAAA,IAAI,CAACnJ,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,GAAGmJ,CAAAA,CAAAA;AACpB,QAAA,IAAI,CAACF,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,GAAGE,CAAAA,CAAAA;AACpB,QAAA,IAAI,CAAC6B,CAAC,IAAI9M,KAAAA,CAAM8M,CAAC,GAAG7B,CAAAA,CAAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDpC,MAAAA,CAAAA,QAoBC,GApBDA,SAAAA,SAAS7I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;YACV,IAAI,CAAC8M,CAAC,IAAI9M,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8M,CAAC,IAAI9M,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC+B,CAAC,IAAI9M,KAAAA,CAAM8M,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDhE,OAAAA,eAMC,GANDA,SAAAA,eAAgB/I,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,IAAI,CAAC+B,CAAC,GAAG/M,KAAK+M,CAAC,GAAG9M,MAAM8M,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD/D,MAAAA,CAAAA,QAoBC,GApBDA,SAAAA,SAAS/I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;YACV,IAAI,CAAC8M,CAAC,IAAI9M,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8M,CAAC,IAAI9M,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC+B,CAAC,IAAI9M,KAAAA,CAAM8M,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD9D,OAAAA,eAMC,GANDA,SAAAA,eAAgBjJ,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACvB,QAAA,IAAI,CAAC+G,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,IAAI,CAAC+B,CAAC,GAAG/M,KAAK+M,CAAC,GAAG9M,MAAM8M,CAAC,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD7D,MAAAA,CAAAA,MAoBC,GApBDA,SAAAA,OAAOjJ,KAAK,EAAA;QACR,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAAA;YACV,IAAI,CAAC8B,CAAC,IAAI9B,KAAAA,CAAAA;YACV,IAAI,CAAC+K,CAAC,IAAI/K,KAAAA,CAAAA;YACV,IAAI,CAAC8M,CAAC,IAAI9M,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC5B,CAAC,IAAI/G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8B,CAAC,IAAI9B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+K,CAAC,IAAI/K,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC8M,CAAC,IAAI9M,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAAC+G,CAAC,IAAI/G,KAAAA,CAAM+G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,IAAI9B,KAAAA,CAAM8B,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,IAAI/K,KAAAA,CAAM+K,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC+B,CAAC,IAAI9M,KAAAA,CAAM8M,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD5D,MAAAA,CAAAA,KAMC,GANDA,SAAAA,MAAM3G,CAAC,EAAA;QACH,IAAI,CAACwE,CAAC,IAAIxE,CAAAA,CAAAA;QACV,IAAI,CAACT,CAAC,IAAIS,CAAAA,CAAAA;QACV,IAAI,CAACwI,CAAC,IAAIxI,CAAAA,CAAAA;QACV,IAAI,CAACuK,CAAC,IAAIvK,CAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA4G,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,GAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACpC,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAAC+B,CAAC,CAAA;AAC5C,KAAA,CAAA;AACA;;;;AAIC,QACDhH,MAAAA,CAAAA,GAcC,GAdDA,SAAAA,IAAIvD,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAACwE,CAAC,GAAGrB,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACiB,CAAC,EAAExE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACT,CAAC,GAAG4D,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAAChE,CAAC,EAAES,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACwI,CAAC,GAAGrF,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACiF,CAAC,EAAExI,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACuK,CAAC,GAAGpH,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACgH,CAAC,EAAEvK,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAACwE,CAAC,GAAGrB,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACiB,CAAC,EAAExE,CAAAA,CAAEwE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACjF,CAAC,GAAG4D,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAAChE,CAAC,EAAES,CAAAA,CAAET,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACiJ,CAAC,GAAGrF,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACiF,CAAC,EAAExI,CAAAA,CAAEwI,CAAC,CAAA,CAAA;YAC7B,IAAI,CAAC+B,CAAC,GAAGpH,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACgH,CAAC,EAAEvK,CAAAA,CAAEuK,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDrF,MAAAA,CAAAA,GAcC,GAdDA,SAAAA,IAAIlF,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAACwE,CAAC,GAAGrB,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACV,CAAC,EAAExE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACT,CAAC,GAAG4D,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC3F,CAAC,EAAES,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACwI,CAAC,GAAGrF,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACsD,CAAC,EAAExI,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACuK,CAAC,GAAGpH,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACqF,CAAC,EAAEvK,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAACwE,CAAC,GAAGrB,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACV,CAAC,EAAExE,CAAAA,CAAEwE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACjF,CAAC,GAAG4D,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAAC3F,CAAC,EAAES,CAAAA,CAAET,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACiJ,CAAC,GAAGrF,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACsD,CAAC,EAAExI,CAAAA,CAAEwI,CAAC,CAAA,CAAA;YAC7B,IAAI,CAAC+B,CAAC,GAAGpH,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACqF,CAAC,EAAEvK,CAAAA,CAAEuK,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDtF,OAAAA,KAEC,GAFDA,SAAAA,KAAM1B,CAAAA,GAAG,EAAE2B,GAAG,EAAA;AACV,QAAA,OAAO,IAAI,CAACA,GAAG,CAAC3B,GAAAA,CAAAA,CAAKA,GAAG,CAAC2B,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AACA;;;QAIA2B,MAAAA,CAAAA,KAMC,GANDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAACrC,CAAC,GAAGrB,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAACrC,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAACtH,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAAC2B,CAAC,CAAA,CAAA;QAC1B,IAAI,CAAC+B,CAAC,GAAGpH,IAAAA,CAAK0D,KAAK,CAAC,IAAI,CAAC0D,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAnH,MAAAA,CAAAA,IAMC,GANDA,SAAAA,IAAAA,GAAAA;QACI,IAAI,CAACoB,CAAC,GAAGrB,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACoB,CAAC,CAAA,CAAA;QACzB,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAAC7D,CAAC,CAAA,CAAA;QACzB,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACoF,CAAC,CAAA,CAAA;QACzB,IAAI,CAAC+B,CAAC,GAAGpH,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACmH,CAAC,CAAA,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAzD,MAAAA,CAAAA,KAMC,GANDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAACtC,CAAC,GAAGrB,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACtC,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACvH,CAAC,CAAA,CAAA;QAC1B,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAAC0B,CAAC,CAAA,CAAA;QAC1B,IAAI,CAAC+B,CAAC,GAAGpH,IAAAA,CAAK2D,KAAK,CAAC,IAAI,CAACyD,CAAC,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIArG,MAAAA,CAAAA,GAMC,GANDA,SAAAA,GAAAA,GAAAA;QACI,IAAI,CAACM,CAAC,GAAGrB,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAACM,CAAC,CAAA,CAAA;QACxB,IAAI,CAACjF,CAAC,GAAG4D,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAAC3E,CAAC,CAAA,CAAA;QACxB,IAAI,CAACiJ,CAAC,GAAGrF,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAACsE,CAAC,CAAA,CAAA;QACxB,IAAI,CAAC+B,CAAC,GAAGpH,IAAAA,CAAKe,GAAG,CAAC,IAAI,CAACqG,CAAC,CAAA,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAxD,MAAAA,CAAAA,MAMC,GANDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACvC,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACiJ,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAAC+B,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAtD,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACzC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAAC+B,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;AAChF,KAAA,CAAA;AACA;;;QAIAnM,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,OAAO+E,IAAK6D,CAAAA,IAAI,CAAC,IAAI,CAACxC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAAC+B,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA,CAAA;AAC1F,KAAA,CAAA;AACA;;;QAIArD,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACR,MAAM,CAAC,IAAI,CAACtI,MAAM,EAAM,IAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AACA;;;;AAIC,QACD+I,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAU/I,MAAM,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC8I,SAAS,EAAA,CAAGV,QAAQ,CAACpI,MAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AACA;;;;;AAKC,QACDuG,OAAAA,IAMC,GANDA,SAAAA,IAAK3E,CAAAA,CAAC,EAAEqH,KAAK,EAAA;AACT,QAAA,IAAI,CAAC7C,CAAC,IAAKxE,CAAAA,CAAAA,CAAEwE,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK6C,KAAAA,CAAAA;AAC3B,QAAA,IAAI,CAAC9H,CAAC,IAAKS,CAAAA,CAAAA,CAAET,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK8H,KAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACmB,CAAC,IAAKxI,CAAAA,CAAAA,CAAEwI,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAKnB,KAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACkD,CAAC,IAAKvK,CAAAA,CAAAA,CAAEuK,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAKlD,KAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAC,MAAAA,CAAAA,WAMC,GANDA,SAAAA,YAAYC,EAAE,EAAEC,EAAE,EAAEH,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC7C,CAAC,GAAG+C,EAAAA,CAAG/C,CAAC,GAAIgD,CAAAA,EAAAA,CAAGhD,CAAC,GAAG+C,EAAG/C,CAAAA,CAAC,IAAI6C,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAAC9H,CAAC,GAAGgI,EAAAA,CAAGhI,CAAC,GAAIiI,CAAAA,EAAAA,CAAGjI,CAAC,GAAGgI,EAAGhI,CAAAA,CAAC,IAAI8H,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAACmB,CAAC,GAAGjB,EAAAA,CAAGiB,CAAC,GAAIhB,CAAAA,EAAAA,CAAGgB,CAAC,GAAGjB,EAAGiB,CAAAA,CAAC,IAAInB,KAAAA,CAAAA;AAChC,QAAA,IAAI,CAACkD,CAAC,GAAGhD,EAAAA,CAAGgD,CAAC,GAAI/C,CAAAA,EAAAA,CAAG+C,CAAC,GAAGhD,EAAGgD,CAAAA,CAAC,IAAIlD,KAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDI,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,IAAIzH,CAAC,EAAA;QACD,OAAO,IAAI,CAACwE,CAAC,GAAGxE,CAAAA,CAAEwE,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAGS,CAAET,CAAAA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAGxI,CAAEwI,CAAAA,CAAC,GAAG,IAAI,CAAC+B,CAAC,GAAGvK,CAAAA,CAAEuK,CAAC,CAAA;AACpE,KAAA,CAAA;AACA;;;;AAIC,QACDxC,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAO/H,CAAC,EAAA;QACJ,OAAOA,CAAAA,CAAEwE,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIxE,CAAET,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIS,CAAEwI,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIxI,CAAAA,CAAEuK,CAAC,KAAK,IAAI,CAACA,CAAC,CAAA;AAC/E,KAAA,CAAA;AACA;;;QAIAtG,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAM+D,GAAMhE,GAAAA,aAAAA,CAAAA;AACZ,QAAA,IAAuB,KAAA,GAAA,IAAI,EAAnBQ,CAAAA,GAAe,KAAfA,CAAAA,CAAAA,EAAGjF,CAAY,GAAA,KAAA,CAAZA,CAAGiJ,EAAAA,CAAAA,GAAS,KAATA,CAAAA,CAAAA,EAAG+B,IAAM,KAANA,CAAAA,CAAAA,CAAAA;AACjB,QAAA,OAAOpH,KAAKe,GAAG,CAACM,MAAMwD,GAAO7E,IAAAA,IAAAA,CAAKe,GAAG,CAAC3E,CAAAA,CAAAA,IAAMyI,GAAO7E,IAAAA,IAAAA,CAAKe,GAAG,CAACsE,CAAAA,CAAAA,IAAMR,OAAO7E,IAAKe,CAAAA,GAAG,CAACqG,CAAMvC,CAAAA,IAAAA,GAAAA,CAAAA;AAC5F,KAAA,CAAA;AACA;;;QAIAC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO;AAAC,YAAA,IAAI,CAACzD,CAAC;AAAE,YAAA,IAAI,CAACjF,CAAC;AAAE,YAAA,IAAI,CAACiJ,CAAC;AAAE,YAAA,IAAI,CAAC+B,CAAC;AAAC,SAAA,CAAA;AAC3C,KAAA,CAAA;IACAC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,OAAO,IAAIjC,OAAAA,CAAQ,IAAI,CAAC/D,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,CAAA,CAAA;AAC7C,KAAA,CAAA;AACAN,IAAAA,MAAAA,CAAAA,IAKC,GALDA,SAAAA,IAAKtC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACjBoE,QAAAA,KAAK,CAACpE,MAAAA,CAAO,GAAG,IAAI,CAACgD,CAAC,CAAA;AACtBoB,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAACjC,CAAC,CAAA;AAC1BqG,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAACgH,CAAC,CAAA;AAC1B5C,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAAC+I,CAAC,CAAA;AAC9B,KAAA,CAAA;AACA;;;QAIAxI,MAAAA,CAAAA,MAMC,GANDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACyC,CAAC,GAAGrB,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,IAAI,CAACxC,CAAC,GAAG4D,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,IAAI,CAACyG,CAAC,GAAGrF,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,IAAI,CAACwI,CAAC,GAAGpH,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD6H,OAAAA,WAEC,GAFDA,SAAAA,WAAYC,CAAAA,CAAC,EAAEL,GAAG,EAAA;AACd,QAAA,OAAOK,CAAEY,CAAAA,gBAAgB,CAAC,IAAI,EAAEjB,GAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOrB,CAAAA,UAEN,GAFD,SAAOA,WAAWzC,GAAG,EAAA;QACjB,OAAO,IAthBF4E,OAshBgB7E,EAAAA,CAAAA,aAAa,CAACC,GAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AACA;;;;;QAxhBS4E,QA8hBFlC,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IA/hBF8I,OAAAA,EAAAA,CA+hBgB3E,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AAhiBS8I,IAAAA,OAAAA,OAAAA,CAAAA;AAiiBZ,CAAA,EAAA,CAAA;AA5hBG;;AAEC,QAPQA,QAQFjC,GAAM,GAAA,IAAIiC,OAAQ,CAAA,GAAA,EAAK,KAAK,GAAK,EAAA,GAAA,CAAA,CAAA;AAR/BA,OAAAA,CASFhC,IAAO,GAAA,IAAIgC,OAAQ,CAAA,GAAA,EAAK,KAAK,GAAK,EAAA,GAAA,CAAA;;ACbtC,IAAA,KAAMI,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,KAAAA,CAyBGrM,CAAK,EAAEmB,CAAK,EAAE6E,CAAK,EAAED,CAAK,EAAA;AAA1B/F,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGmB,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAG6E,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGD,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;QACjC,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACmB,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAAC6E,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACD,CAAC,GAAGA,CAAAA,CAAAA;;AA7BJsG,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AA+BT;;;;;;;QAQA/G,MAAAA,CAAAA,GAMC,GANDA,SAAAA,GAAAA,CAAItF,CAAC,EAAEmB,CAAC,EAAE6E,CAAC,EAAED,CAAC,EAAA;QACV,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACmB,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAAC6E,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACD,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAoB,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,GAAAA;QACI,IAAI,CAACnH,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACmB,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAAC6E,CAAC,GAAG,CAAA,CAAA;QACT,IAAI,CAACD,CAAC,GAAG,CAAA,CAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDqB,MAAAA,CAAAA,aAMC,GANDA,SAAAA,cAAcC,GAAG,EAAA;QACb,IAAI,CAACrH,CAAC,GAAGqH,GAAAA,CAAAA;QACT,IAAI,CAAClG,CAAC,GAAGkG,GAAAA,CAAAA;QACT,IAAI,CAACrB,CAAC,GAAGqB,GAAAA,CAAAA;QACT,IAAI,CAACtB,CAAC,GAAGsB,GAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDiF,MAAAA,CAAAA,cAMC,GANDA,SAAAA,eAAe3K,CAAC,EAAA;AACZ,QAAA,IAAI,CAAC3B,CAAC,GAAG2B,CAAAA,CAAEwE,CAAC,CAAA;AACZ,QAAA,IAAI,CAAChF,CAAC,GAAGQ,CAAAA,CAAET,CAAC,CAAA;AACZ,QAAA,IAAI,CAAC8E,CAAC,GAAGrE,CAAAA,CAAEwI,CAAC,CAAA;AACZ,QAAA,IAAI,CAACpE,CAAC,GAAGpE,CAAAA,CAAEuK,CAAC,CAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD5E,OAAAA,YAMC,GANDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAChBoE,QAAAA,IAAAA,aAAAA,CAAAA;QAAT,IAAI,CAACvH,CAAC,GAAGuH,CAAAA,gBAAAA,KAAK,CAACpE,MAAO,CAAA,KAAA,IAAA,GAAboE,aAAiB,GAAA,CAAA,CAAA;AACjBA,QAAAA,IAAAA,OAAAA,CAAAA;QAAT,IAAI,CAACpG,CAAC,GAAGoG,CAAAA,OAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,OAAqB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAT,IAAI,CAACvB,CAAC,GAAGuB,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAT,IAAI,CAACxB,CAAC,GAAGwB,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB,GAAA,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAgF,MAAAA,CAAAA,UAiCC,GAjCDA,SAAAA,UAAWC,CAAAA,GAAG,EAAEC,UAAU,EAAEpO,KAAK,EAAE2K,KAAS,EAAA;AAATA,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AACvC,QAAA,IAAM0D,SAASrO,KAAQoO,GAAAA,UAAAA,CAAAA;AACvB,QAAA,IAAME,IAAIH,GAAM,GAAA,EAAA,CAAA;QAChB,IAAMrG,CAAAA,GAAIuG,MAAU,IAAA,CAAI5H,GAAAA,IAAAA,CAAKe,GAAG,CAAE8G,CAAI,GAAA,CAAA,GAAK,CAAC,CAAA,CAAA,CAAA;AAC5C,QAAA,IAAI3M,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAImB,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAI6E,CAAI,GAAA,CAAA,CAAA;QACR,IAAI2G,CAAAA,IAAK,CAAKA,IAAAA,CAAAA,IAAK,CAAG,EAAA;YAClB3M,CAAI0M,GAAAA,MAAAA,CAAAA;YACJvL,CAAIgF,GAAAA,CAAAA,CAAAA;AACR,SAAA,MACK,IAAIwG,CAAAA,IAAK,CAAKA,IAAAA,CAAAA,IAAK,CAAG,EAAA;YACvB3M,CAAImG,GAAAA,CAAAA,CAAAA;YACJhF,CAAIuL,GAAAA,MAAAA,CAAAA;AACR,SAAA,MACK,IAAIC,CAAAA,IAAK,CAAKA,IAAAA,CAAAA,IAAK,CAAG,EAAA;YACvBxL,CAAIuL,GAAAA,MAAAA,CAAAA;YACJ1G,CAAIG,GAAAA,CAAAA,CAAAA;AACR,SAAA,MACK,IAAIwG,CAAAA,IAAK,CAAKA,IAAAA,CAAAA,IAAK,CAAG,EAAA;YACvBxL,CAAIgF,GAAAA,CAAAA,CAAAA;YACJH,CAAI0G,GAAAA,MAAAA,CAAAA;AACR,SAAA,MACK,IAAIC,CAAAA,IAAK,CAAKA,IAAAA,CAAAA,IAAK,CAAG,EAAA;YACvB3M,CAAImG,GAAAA,CAAAA,CAAAA;YACJH,CAAI0G,GAAAA,MAAAA,CAAAA;AACR,SAAA,MACK,IAAIC,CAAAA,IAAK,CAAKA,IAAAA,CAAAA,IAAK,CAAG,EAAA;YACvB3M,CAAI0M,GAAAA,MAAAA,CAAAA;YACJ1G,CAAIG,GAAAA,CAAAA,CAAAA;AACR,SAAA;AACA,QAAA,IAAMqF,IAAInN,KAAQqO,GAAAA,MAAAA,CAAAA;QAClB,OAAO,IAAI,CAACpH,GAAG,CAACtF,IAAIwL,CAAGrK,EAAAA,CAAAA,GAAIqK,CAAGxF,EAAAA,CAAAA,GAAIwF,CAAGxC,EAAAA,KAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AACA4D,IAAAA,MAAAA,CAAAA,gBASC,GATDA,SAAAA,gBAAAA,CAAiBC,GAAG,EAAA;AAChB,QAAA,IAAIA,GAAIC,CAAAA,SAAS,CAAC,CAAA,EAAG,CAAO,CAAA,KAAA,GAAA,IAAQD,GAAI9M,CAAAA,MAAM,KAAK,CAAA,IAAK8M,GAAI9M,CAAAA,MAAM,KAAK,CAAI,EAAA;AACvE,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AACA,QAAA,IAAMC,IAAI+M,QAASF,CAAAA,GAAAA,CAAIC,SAAS,CAAC,CAAA,EAAG,IAAI,EAAM,CAAA,GAAA,KAAA,CAAA;AAC9C,QAAA,IAAM3L,IAAI4L,QAASF,CAAAA,GAAAA,CAAIC,SAAS,CAAC,CAAA,EAAG,IAAI,EAAM,CAAA,GAAA,KAAA,CAAA;AAC9C,QAAA,IAAM9G,IAAI+G,QAASF,CAAAA,GAAAA,CAAIC,SAAS,CAAC,CAAA,EAAG,IAAI,EAAM,CAAA,GAAA,KAAA,CAAA;AAC9C,QAAA,IAAM/G,CAAI8G,GAAAA,GAAAA,CAAI9M,MAAM,KAAK,CAAIgN,GAAAA,QAAAA,CAASF,GAAIC,CAAAA,SAAS,CAAC,CAAA,EAAG,CAAI,CAAA,EAAA,EAAA,CAAA,GAAM,KAAQ,GAAA,GAAA,CAAA;AACzE,QAAA,OAAO,IAAI,CAACxH,GAAG,CAACtF,CAAAA,EAAGmB,GAAG6E,CAAGD,EAAAA,CAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AACA;;;;AAIC,QACDyB,MAAAA,CAAAA,QAMC,GANDA,SAAAA,SAAS7F,CAAC,EAAA;AACN,QAAA,IAAI,CAAC3B,CAAC,GAAG2B,CAAAA,CAAE3B,CAAC,CAAA;AACZ,QAAA,IAAI,CAACmB,CAAC,GAAGQ,CAAAA,CAAER,CAAC,CAAA;AACZ,QAAA,IAAI,CAAC6E,CAAC,GAAGrE,CAAAA,CAAEqE,CAAC,CAAA;AACZ,QAAA,IAAI,CAACD,CAAC,GAAGpE,CAAAA,CAAEoE,CAAC,CAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA2B,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IA3JF2E,KA2JY,CAAA,IAAI,CAACrM,CAAC,EAAE,IAAI,CAACmB,CAAC,EAAE,IAAI,CAAC6E,CAAC,EAAE,IAAI,CAACD,CAAC,CAAA,CAAA;AACnD,KAAA,CAAA;AACA;;;;;AAKC,QACD4B,OAAAA,UAiBC,GAjBDA,SAAAA,UAAW7D,CAAAA,KAAK,EAAEzF,KAAK,EAAA;QACnB,OAAQyF,KAAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC9D,CAAC,GAAG3B,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC8C,CAAC,GAAG9C,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC2H,CAAC,GAAG3H,KAAAA,CAAAA;AACT,gBAAA,MAAA;YACJ,KAAK,CAAA;gBACD,IAAI,CAAC0H,CAAC,GAAG1H,KAAAA,CAAAA;AACT,gBAAA,MAAA;AACJ,YAAA;gBAASuJ,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD+D,MAAAA,CAAAA,UASC,GATDA,SAAAA,WAAW/D,KAAK,EAAA;QACZ,OAAQA,KAAAA;YACJ,KAAK,CAAA;gBAAG,OAAO,IAAI,CAAC9D,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACmB,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAAC6E,CAAC,CAAA;YACrB,KAAK,CAAA;gBAAG,OAAO,IAAI,CAACD,CAAC,CAAA;AACrB,YAAA;gBAAS6B,OAAQtJ,CAAAA,KAAK,CAAC,yBAA4BwF,GAAAA,KAAAA,CAAAA,CAAAA;AACvD,SAAA;QACA,OAAO,CAAA,CAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDgE,MAAAA,CAAAA,GAoBC,GApBDA,SAAAA,IAAI1I,KAAK,EAAA;QACL,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAAA;YACV,IAAI,CAAC+B,CAAC,IAAI/B,KAAAA,CAAAA;YACV,IAAI,CAAC4G,CAAC,IAAI5G,KAAAA,CAAAA;YACV,IAAI,CAAC2G,CAAC,IAAI3G,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC/H,CAAC,IAAIZ,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+B,CAAC,IAAI/B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC4G,CAAC,IAAI5G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC2G,CAAC,IAAI3G,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAMY,CAAC,CAAA;AACjB,YAAA,IAAI,CAACmB,CAAC,IAAI/B,KAAAA,CAAM+B,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC6E,CAAC,IAAI5G,KAAAA,CAAM4G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACD,CAAC,IAAI3G,KAAAA,CAAM2G,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDkC,MAAAA,CAAAA,QAoBC,GApBDA,SAAAA,SAAS7I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAAA;YACV,IAAI,CAAC+B,CAAC,IAAI/B,KAAAA,CAAAA;YACV,IAAI,CAAC4G,CAAC,IAAI5G,KAAAA,CAAAA;YACV,IAAI,CAAC2G,CAAC,IAAI3G,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC/H,CAAC,IAAIZ,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+B,CAAC,IAAI/B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC4G,CAAC,IAAI5G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC2G,CAAC,IAAI3G,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAMY,CAAC,CAAA;AACjB,YAAA,IAAI,CAACmB,CAAC,IAAI/B,KAAAA,CAAM+B,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC6E,CAAC,IAAI5G,KAAAA,CAAM4G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACD,CAAC,IAAI3G,KAAAA,CAAM2G,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDoC,MAAAA,CAAAA,QAoBC,GApBDA,SAAAA,SAAS/I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAAA;YACV,IAAI,CAAC+B,CAAC,IAAI/B,KAAAA,CAAAA;YACV,IAAI,CAAC4G,CAAC,IAAI5G,KAAAA,CAAAA;YACV,IAAI,CAAC2G,CAAC,IAAI3G,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC/H,CAAC,IAAIZ,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+B,CAAC,IAAI/B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC4G,CAAC,IAAI5G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC2G,CAAC,IAAI3G,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAMY,CAAC,CAAA;AACjB,YAAA,IAAI,CAACmB,CAAC,IAAI/B,KAAAA,CAAM+B,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC6E,CAAC,IAAI5G,KAAAA,CAAM4G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACD,CAAC,IAAI3G,KAAAA,CAAM2G,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDsC,MAAAA,CAAAA,MAoBC,GApBDA,SAAAA,OAAOjJ,KAAK,EAAA;QACR,IAAI,OAAOA,UAAU,QAAU,EAAA;YAC3B,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAAA;YACV,IAAI,CAAC+B,CAAC,IAAI/B,KAAAA,CAAAA;YACV,IAAI,CAAC4G,CAAC,IAAI5G,KAAAA,CAAAA;YACV,IAAI,CAAC2G,CAAC,IAAI3G,KAAAA,CAAAA;AACd,SAAA,MACK,IAASF,YAALE,CAAAA,KAAAA,EAAiB2I,KAAO,CAAA,EAAA;AAC7B,YAAA,IAAI,CAAC/H,CAAC,IAAIZ,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC+B,CAAC,IAAI/B,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC4G,CAAC,IAAI5G,KAAK,CAAC,CAAE,CAAA,CAAA;AAClB,YAAA,IAAI,CAAC2G,CAAC,IAAI3G,KAAK,CAAC,CAAE,CAAA,CAAA;SAEjB,MAAA;AACD,YAAA,IAAI,CAACY,CAAC,IAAIZ,KAAAA,CAAMY,CAAC,CAAA;AACjB,YAAA,IAAI,CAACmB,CAAC,IAAI/B,KAAAA,CAAM+B,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC6E,CAAC,IAAI5G,KAAAA,CAAM4G,CAAC,CAAA;AACjB,YAAA,IAAI,CAACD,CAAC,IAAI3G,KAAAA,CAAM2G,CAAC,CAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDuC,MAAAA,CAAAA,KAMC,GANDA,SAAAA,MAAM3G,CAAC,EAAA;QACH,IAAI,CAAC3B,CAAC,IAAI2B,CAAAA,CAAAA;QACV,IAAI,CAACR,CAAC,IAAIQ,CAAAA,CAAAA;QACV,IAAI,CAACqE,CAAC,IAAIrE,CAAAA,CAAAA;QACV,IAAI,CAACoE,CAAC,IAAIpE,CAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDuD,MAAAA,CAAAA,GAcC,GAdDA,SAAAA,IAAIvD,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAAC3B,CAAC,GAAG8E,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAAClF,CAAC,EAAE2B,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACR,CAAC,GAAG2D,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAAC/D,CAAC,EAAEQ,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACqE,CAAC,GAAGlB,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACc,CAAC,EAAErE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACoE,CAAC,GAAGjB,IAAAA,CAAKI,GAAG,CAAC,IAAI,CAACa,CAAC,EAAEpE,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAAC3B,CAAC,GAAG8E,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAAClF,CAAC,EAAE2B,CAAAA,CAAE3B,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACmB,CAAC,GAAG2D,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAAC/D,CAAC,EAAEQ,CAAAA,CAAER,CAAC,CAAA,CAAA;YAC7B,IAAI,CAAC6E,CAAC,GAAGlB,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACc,CAAC,EAAErE,CAAAA,CAAEqE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACD,CAAC,GAAGjB,IAAKI,CAAAA,GAAG,CAAC,IAAI,CAACa,CAAC,EAAEpE,CAAAA,CAAEoE,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDc,MAAAA,CAAAA,GAcC,GAdDA,SAAAA,IAAIlF,CAAC,EAAA;QACD,IAAI,OAAOA,MAAM,QAAU,EAAA;YACvB,IAAI,CAAC3B,CAAC,GAAG8E,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC7G,CAAC,EAAE2B,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACR,CAAC,GAAG2D,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC1F,CAAC,EAAEQ,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACqE,CAAC,GAAGlB,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACb,CAAC,EAAErE,CAAAA,CAAAA,CAAAA;YAC1B,IAAI,CAACoE,CAAC,GAAGjB,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAACd,CAAC,EAAEpE,CAAAA,CAAAA,CAAAA;SAEzB,MAAA;YACD,IAAI,CAAC3B,CAAC,GAAG8E,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAAC7G,CAAC,EAAE2B,CAAAA,CAAE3B,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACmB,CAAC,GAAG2D,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAAC1F,CAAC,EAAEQ,CAAAA,CAAER,CAAC,CAAA,CAAA;YAC7B,IAAI,CAAC6E,CAAC,GAAGlB,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACb,CAAC,EAAErE,CAAAA,CAAEqE,CAAC,CAAA,CAAA;YAC7B,IAAI,CAACD,CAAC,GAAGjB,IAAK+B,CAAAA,GAAG,CAAC,IAAI,CAACd,CAAC,EAAEpE,CAAAA,CAAEoE,CAAC,CAAA,CAAA;AACjC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDa,OAAAA,KAEC,GAFDA,SAAAA,KAAM1B,CAAAA,GAAG,EAAE2B,GAAG,EAAA;AACV,QAAA,OAAO,IAAI,CAACA,GAAG,CAAC3B,GAAAA,CAAAA,CAAKA,GAAG,CAAC2B,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AACA;;;;;AAKC,QACDP,OAAAA,IAMC,GANDA,SAAAA,IAAK3E,CAAAA,CAAC,EAAEqH,KAAK,EAAA;AACT,QAAA,IAAI,CAAChJ,CAAC,IAAK2B,CAAAA,CAAAA,CAAE3B,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAKgJ,KAAAA,CAAAA;AAC3B,QAAA,IAAI,CAAC7H,CAAC,IAAKQ,CAAAA,CAAAA,CAAER,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAK6H,KAAAA,CAAAA;AAC3B,QAAA,IAAI,CAAChD,CAAC,IAAKrE,CAAAA,CAAAA,CAAEqE,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAKgD,KAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACjD,CAAC,IAAKpE,CAAAA,CAAAA,CAAEoE,CAAC,GAAG,IAAI,CAACA,CAAAA,IAAKiD,KAAAA,CAAAA;AAC3B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAgE,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAAChN,CAAC,GAAG,GAAM,GAAA,IAAI,CAACmB,CAAC,GAAG,IAAA,GAAO,IAAI,CAAC6E,CAAC,GAAG,IAAA,CAAA;AACnD,KAAA,CAAA;AACA;;;;AAIC,QACD0D,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAO/H,CAAC,EAAA;QACJ,OAAOA,CAAAA,CAAE3B,CAAC,KAAK,IAAI,CAACA,CAAC,IAAI2B,CAAER,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIQ,CAAEqE,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAAIrE,CAAAA,CAAEoE,CAAC,KAAK,IAAI,CAACA,CAAC,CAAA;AAC/E,KAAA,CAAA;IACAkH,MAAAA,CAAAA,QAKC,GALDA,SAAAA,QAAAA,GAAAA;QACI,IAAI,CAACjN,CAAC,GAtYDqM,MAsYUa,aAAa,CAAC,IAAI,CAAClN,CAAC,CAAA,CAAA;QACnC,IAAI,CAACmB,CAAC,GAvYDkL,MAuYUa,aAAa,CAAC,IAAI,CAAC/L,CAAC,CAAA,CAAA;QACnC,IAAI,CAAC6E,CAAC,GAxYDqG,MAwYUa,aAAa,CAAC,IAAI,CAAClH,CAAC,CAAA,CAAA;AACnC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACAmH,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;QACI,IAAI,CAACnN,CAAC,GA5YDqM,MA4YUe,aAAa,CAAC,IAAI,CAACpN,CAAC,CAAA,CAAA;QACnC,IAAI,CAACmB,CAAC,GA7YDkL,MA6YUe,aAAa,CAAC,IAAI,CAACjM,CAAC,CAAA,CAAA;QACnC,IAAI,CAAC6E,CAAC,GA9YDqG,MA8YUe,aAAa,CAAC,IAAI,CAACpH,CAAC,CAAA,CAAA;AACnC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA4D,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO;AAAC,YAAA,IAAI,CAAC5J,CAAC;AAAE,YAAA,IAAI,CAACmB,CAAC;AAAE,YAAA,IAAI,CAAC6E,CAAC;AAAE,YAAA,IAAI,CAACD,CAAC;AAAC,SAAA,CAAA;AAC3C,KAAA,CAAA;IACAsH,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,OAAO,IAAIpB,OAAQ,CAAA,IAAI,CAACjM,CAAC,EAAE,IAAI,CAACmB,CAAC,EAAE,IAAI,CAAC6E,CAAC,EAAE,IAAI,CAACD,CAAC,CAAA,CAAA;AACrD,KAAA,CAAA;AACA;;;QAIAuH,MAAAA,CAAAA,KA2BC,GA3BDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,IAAuB,KAAA,GAAA,IAAI,EAAnBtN,CAAAA,GAAe,KAAfA,CAAAA,CAAAA,EAAGmB,CAAY,GAAA,KAAA,CAAZA,CAAG6E,EAAAA,CAAAA,GAAS,KAATA,CAAAA,CAAAA,EAAGD,IAAM,KAANA,CAAAA,CAAAA,CAAAA;AACjB,QAAA,IAAMc,GAAM/B,GAAAA,IAAAA,CAAK+B,GAAG,CAAC7G,GAAGmB,CAAG6E,EAAAA,CAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAMd,GAAMJ,GAAAA,IAAAA,CAAKI,GAAG,CAAClF,GAAGmB,CAAG6E,EAAAA,CAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAMrE,CAAIkF,GAAAA,GAAAA,CAAAA;AACV,QAAA,IAAM0G,KAAK1G,GAAM3B,GAAAA,GAAAA,CAAAA;AACjB,QAAA,IAAIyH,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAItC,CAAI,GAAA,CAAA,CAAA;AACR,QAAA,IAAIxD,QAAQ,CAAG,EAAA;AACXwD,YAAAA,CAAAA,GAAIkD,EAAK1G,GAAAA,GAAAA,CAAAA;AACb,SAAA;AACA,QAAA,IAAIA,OAAO3B,GAAK,EAAA;AACZ,YAAA,IAAI2B,OAAO7G,CAAG,EAAA;AACV2M,gBAAAA,CAAAA,GAAI,CAACxL,CAAI6E,GAAAA,CAAAA,IAAKuH,EAAAA,CAAAA;AACd,gBAAA,IAAIpM,IAAI6E,CAAG,EAAA;oBACP2G,CAAK,IAAA,CAAA,CAAA;AACT,iBAAA;aAEC,MAAA,IAAI9F,OAAO1F,CAAG,EAAA;AACfwL,gBAAAA,CAAAA,GAAI,CAAC3G,CAAIhG,GAAAA,CAAAA,IAAKuN,EAAK,GAAA,CAAA,CAAA;aAElB,MAAA,IAAI1G,OAAOb,CAAG,EAAA;AACf2G,gBAAAA,CAAAA,GAAI,CAAC3M,CAAImB,GAAAA,CAAAA,IAAKoM,EAAK,GAAA,CAAA,CAAA;AACvB,aAAA;YACAZ,CAAK,IAAA,EAAA,CAAA;AACT,SAAA;AACA,QAAA,OAAO,IAzbFN,KAAAA,CAybYM,CAAGtC,EAAAA,CAAAA,EAAG1I,CAAGoE,EAAAA,CAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;AACAyH,IAAAA,MAAAA,CAAAA,WAWC,GAXDA,SAAAA,WAAAA,CAAYC,YAAmB,EAAA;AAAnBA,QAAAA,IAAAA,yBAAAA,YAAe,GAAA,IAAA,CAAA;QACvB,IAAMC,CAAAA,GAAIrB,KA5bLA,CA4bWsB,KAAK,CAAC7I,IAAK2D,CAAAA,KAAK,CAAC,IAAI,CAACzI,CAAC,GAAG,GAAA,CAAA,CAAA,CAAA;QAC1C,IAAM4N,CAAAA,GAAIvB,KA7bLA,CA6bWsB,KAAK,CAAC7I,IAAK2D,CAAAA,KAAK,CAAC,IAAI,CAACtH,CAAC,GAAG,GAAA,CAAA,CAAA,CAAA;QAC1C,IAAM0M,CAAAA,GAAIxB,KA9bLA,CA8bWsB,KAAK,CAAC7I,IAAK2D,CAAAA,KAAK,CAAC,IAAI,CAACzC,CAAC,GAAG,GAAA,CAAA,CAAA,CAAA;QAC1C,IAAM8H,CAAAA,GAAIzB,KA/bLA,CA+bWsB,KAAK,CAAC7I,IAAK2D,CAAAA,KAAK,CAAC,IAAI,CAAC1C,CAAC,GAAG,GAAA,CAAA,CAAA,CAAA;AAC1C,QAAA,IAAI0H,YAAc,EAAA;YACd,OAAO,GAAA,GAAMC,CAAIE,GAAAA,CAAAA,GAAIC,CAAIC,GAAAA,CAAAA,CAAAA;SAExB,MAAA;YACD,OAAO,GAAA,GAAMJ,IAAIE,CAAIC,GAAAA,CAAAA,CAAAA;AACzB,SAAA;AACJ,KAAA,CAAA;AACAhE,IAAAA,MAAAA,CAAAA,IAKC,GALDA,SAAAA,IAAKtC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACjBoE,QAAAA,KAAK,CAACpE,MAAAA,CAAO,GAAG,IAAI,CAACnD,CAAC,CAAA;AACtBuH,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAAChC,CAAC,CAAA;AAC1BoG,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAAC6C,CAAC,CAAA;AAC1BuB,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAG,IAAI,CAAC4C,CAAC,CAAA;AAC9B,KAAA,CAAA;AACA;;;;AAIC,QACD,KAAO+D,CAAAA,UAEN,GAFD,SAAOA,WAAWzC,GAAG,EAAA;QACjB,OAAO,IAndFgF,KAmdcjF,EAAAA,CAAAA,aAAa,CAACC,GAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AACA;;;;;QArdSgF,MA2dFtC,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IA5dFkJ,KAAAA,EAAAA,CA4dc/E,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AACA;;;;AAIC,QACD,KAAO4K,CAAAA,aAEN,GAFD,SAAOA,cAAclB,GAAG,EAAA;QACpB,OAAO,IApeFR,KAoecO,EAAAA,CAAAA,gBAAgB,CAACC,GAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;IAreSR,KAseF2B,CAAAA,OAEN,GAFD,SAAOA,OAAQxB,CAAAA,GAAG,EAAEC,UAAU,EAAEpO,KAAK,EAAE2K,KAAS,EAAA;AAATA,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AAC3C,QAAA,OAAO,IAveFqD,KAuecE,EAAAA,CAAAA,UAAU,CAACC,GAAAA,EAAKC,YAAYpO,KAAO2K,EAAAA,KAAAA,CAAAA,CAAAA;AAC1D,KAAA,CAAA;AACA;;;;AAIC,QACD,KAAOkE,CAAAA,aAaN,GAbD,SAAOA,cAAcvL,CAAC,EAAA;AAClB,QAAA,IAAIA,KAAK,GAAK,EAAA;YACV,OAAO,GAAA,CAAA;SAEN,MAAA,IAAIA,KAAK,OAAS,EAAA;AACnB,YAAA,OAAOA,CAAI,GAAA,KAAA,CAAA;SAEV,MAAA,IAAIA,IAAI,GAAK,EAAA;YACd,OAAOmD,IAAAA,CAAKmJ,GAAG,CAAEtM,CAAAA,CAAI,GAAA,KAAI,IAAK,KAAO,EAAA,GAAA,CAAA,CAAA;SAEpC,MAAA;YACD,OAAOmD,IAAAA,CAAKmJ,GAAG,CAACtM,CAAG,EAAA,GAAA,CAAA,CAAA;AACvB,SAAA;AACJ,KAAA,CAAA;AACA;;;;AAIC,QACD,KAAOyL,CAAAA,aAaN,GAbD,SAAOA,cAAc/O,KAAK,EAAA;AACtB,QAAA,IAAIA,SAAS,GAAK,EAAA;YACd,OAAO,GAAA,CAAA;SAEN,MAAA,IAAIA,QAAQ,SAAW,EAAA;AACxB,YAAA,OAAO,KAAQA,GAAAA,KAAAA,CAAAA;SAEd,MAAA,IAAIA,QAAQ,GAAK,EAAA;AAClB,YAAA,OAAO,KAAQyG,GAAAA,IAAAA,CAAKmJ,GAAG,CAAC5P,OAAO,OAAW,CAAA,GAAA,KAAA,CAAA;SAEzC,MAAA;YACD,OAAOyG,IAAAA,CAAKmJ,GAAG,CAAC5P,KAAO,EAAA,OAAA,CAAA,CAAA;AAC3B,SAAA;AACJ,KAAA,CAAA;AA9gBSgO,IAAAA,KAAAA,CA+gBFsB,KAMN,GAND,SAAOA,KAAAA,CAAMrN,CAAC,EAAA;QACV,IAAM4N,GAAAA,GAAM5N,CAAEyC,CAAAA,QAAQ,CAAC,EAAA,CAAA,CAAA;AACvB,QAAA,IAAIzC,KAAK,EAAI,EAAA;AACT,YAAA,OAAO,CAAC,GAAM4N,GAAAA,GAAE,EAAGC,WAAW,EAAA,CAAA;AAClC,SAAA;AACA,QAAA,OAAOD,IAAIC,WAAW,EAAA,CAAA;AAC1B,KAAA,CAAA;AArhBS9B,IAAAA,OAAAA,KAAAA,CAAAA;AAshBZ,CAAA,EAAA,CAAA;AAjhBG;;QALSA,KAAAA,CAQF+B,QAAQ,IAAI/B,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AARzBA,KAAAA,CASFgC,OAAO,IAAIhC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AATxBA,KAAAA,CAUFiC,QAAQ,IAAIjC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AAVzBA,KAAAA,CAWFkC,OAAO,IAAIlC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AAXxBA,KAAAA,CAYFmC,OAAO,IAAInC,KAAAA,CAAM,KAAK,GAAK,EAAA,GAAA,EAAK;;AAZ9BA,KAAAA,CAaFoC,QAAQ,IAAIpC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AAbzBA,KAAAA,CAcFqC,UAAU,IAAIrC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AAd3BA,KAAAA,CAeFsC,MAAM,IAAItC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AAfvBA,KAAAA,CAgBFuC,QAAQ,IAAIvC,KAAAA,CAAM,GAAG,CAAG,EAAA,CAAA,EAAG;;AAhBzBA,KAAAA,CAiBFwC,SAAS,IAAIxC,KAAAA,CAAM,GAAG,IAAM,EAAA,KAAA,EAAO;;;ACVvC,SAASyC,YAAAA,CAAYjC,GAAsB,EAAEkC,UAAoB,EAAA;AACtE,IAAA,IAAIC,GAAgB,GAAA;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,CAAA;AAEhC,IAAA,IAAIC,SAASpC,GAAM,CAAA,EAAA;QACjBA,GAAMA,GAAAA,GAAAA,CAAIqC,OAAO,CAAC,aAAe,EAAA,EAAA,CAAA,CAAA;QACjC,IAAI1D,CAAAA,GAAI,gDAAiD2D,CAAAA,IAAI,CAACtC,GAAAA,CAAAA,CAAAA;AAE9D,QAAA,IAAIrB,CAAG,EAAA;AACL,YAAA,IAAMzF,CAAI,GAAA,CAACyF,CAAC,CAAC,CAAE,CAAA,CAAA;YAEfwD,GAAM,GAAA;gBAAC,CAACxD,CAAC,CAAC,CAAE,CAAA;gBAAE,CAACA,CAAC,CAAC,CAAE,CAAA;gBAAE,CAACA,CAAC,CAAC,CAAE,CAAA;gBAAEvG,KAAMc,CAAAA,CAAAA,CAAAA,GAAK,MAAMA,CAAI,GAAA,GAAA;AAAI,aAAA,CAAA;AACvD,SAAA,MAAO,IAAI,gBAAA,CAAiBqJ,IAAI,CAACvC,GAAM,CAAA,EAAA;YACrCmC,GAAM,GAAA;AAACjC,gBAAAA,QAAAA,CAASF,GAAG,CAAC,CAAA,CAAE,GAAGA,GAAG,CAAC,EAAE,EAAE,EAAA,CAAA;AAAKE,gBAAAA,QAAAA,CAASF,GAAG,CAAC,CAAA,CAAE,GAAGA,GAAG,CAAC,EAAE,EAAE,EAAA,CAAA;AAAKE,gBAAAA,QAAAA,CAASF,GAAG,CAAC,CAAA,CAAE,GAAGA,GAAG,CAAC,EAAE,EAAE,EAAA,CAAA;AAAK,gBAAA,GAAA;AAAI,aAAA,CAAA;;AAE1G,SAAA,MAAO,IAAIrB,CAAAA,GAAI,2CAA4C2D,CAAAA,IAAI,CAACtC,GAAM,CAAA,EAAA;YACpEmC,GAAM,GAAA;gBAACjC,QAASvB,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;gBAAKuB,QAASvB,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;gBAAKuB,QAASvB,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;AAAK,gBAAA,GAAA;AAAI,aAAA,CAAA;AACzE,SAAA;AACF,KAAA,MAAO,IAAOtM,YAAH2N,CAAAA,GAAAA,EAAe9E,KAAO,CAAA,EAAA;QAC/BiH,GAAM,GAAA;AAACnC,YAAAA,GAAG,CAAC,CAAE,CAAA;AAAEA,YAAAA,GAAG,CAAC,CAAE,CAAA;AAAEA,YAAAA,GAAG,CAAC,CAAE,CAAA;AAAE5H,YAAAA,KAAAA,CAAM4H,GAAG,CAAC,CAAA,CAAE,IAAI,GAAMA,GAAAA,GAAG,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA;AAC9D,KAAA;AAEA,IAAA,IAAIkC,UAAY,EAAA;AACd,QAAA,IAAK,IAAIzO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;YAC1B0O,GAAG,CAAC1O,EAAE,IAAI,GAAA,CAAA;AACZ,SAAA;AACF,KAAA;IAEA,OAAO0O,GAAAA,CAAAA;AACT,CAAA;AAEO,SAASK,yBAA2BC,CAAAA,KAAkB,EAAEpR,GAAW,EAAE2K,SAAmB,EAAA;IAC7F,IAAIyG,KAAAA,CAAMvP,MAAM,KAAK,CAAG,EAAA;QACtB,OAAO;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AACrB,KAAA;IAEA,IAAIwP,KAAAA,CAAAA;AAEJ,IAAA,IAAIrR,OAAOoR,KAAK,CAAC,CAAE,CAAA,CAACE,IAAI,EAAE;AACxBD,QAAAA,KAAAA,GAAQD,KAAK,CAAC,CAAA,CAAE,CAACC,KAAK,CAAC3F,OAAO,EAAA,CAAA;KACzB,MAAA,IAAI1L,GAAOoR,IAAAA,KAAK,CAACA,KAAAA,CAAMvP,MAAM,GAAG,CAAA,CAAE,CAACyP,IAAI,EAAE;QAC9CD,KAAQD,GAAAA,KAAK,CAACA,KAAMvP,CAAAA,MAAM,GAAG,CAAE,CAAA,CAACwP,KAAK,CAAC3F,OAAO,EAAA,CAAA;KACxC,MAAA;QACL2F,KAAQD,GAAAA,KAAK,CAACA,KAAMvP,CAAAA,MAAM,GAAG,CAAE,CAAA,CAACwP,KAAK,CAAC3F,OAAO,EAAA,CAAA;QAC7C,IAAK,IAAI6F,IAAI,CAAGA,EAAAA,CAAAA,IAAKH,MAAMvP,MAAM,GAAG,GAAG0P,CAAK,EAAA,CAAA;AAC1C,YAAA,IAAMC,EAAKJ,GAAAA,KAAK,CAACG,CAAAA,GAAI,CAAE,CAAA,CAAA;YACvB,IAAME,EAAAA,GAAKL,KAAK,CAACG,CAAE,CAAA,CAAA;AAEnB,YAAA,IAAIC,GAAGF,IAAI,IAAItR,OAAOA,GAAOyR,IAAAA,EAAAA,CAAGH,IAAI,EAAE;gBACpCD,KAAQK,GAAAA,gBAAAA,CAAiBF,EAAGH,CAAAA,KAAK,CAAC3F,OAAO,IAAI+F,EAAGJ,CAAAA,KAAK,CAAC3F,OAAO,EAAI,EAAC1L,CAAAA,GAAMwR,GAAAA,EAAAA,CAAGF,IAAG,KAAMG,GAAGH,IAAI,GAAGE,EAAGF,CAAAA,IAAI,CAAD,CAAA,CAAA;AAEpG,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AAEA,IAAA,OAAO3G,SAAY0G,GAAAA,KAAAA,CAAMM,GAAG,CAACnO,SAAAA,CAAAA,EAAAA;eAAKA,CAAI,GAAA,GAAA,CAAA;AAAO6N,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA;AAC/C,CAAA;AAEO,SAASO,uBAAwBC,QAAwD,EAAA;AAC9F,IAAA,IAAIT,QAAqB,EAAE,CAAA;IAE3B,IAAYpQ,YAAR6Q,CAAAA,QAAAA,EAAoBhI,KAAO,CAAA,EAAA;QAC7BgI,QAASC,CAAAA,OAAO,CAACC,SAAAA,GAAAA,EAAAA;YACf,IAAO5F,CAAAA,GAAiB4F,QAAdjQ,CAAciQ,GAAAA,GAAAA,CAAAA,CAAAA,CAAAA,EAAX9O,IAAW8O,GAARjK,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAQiK,QAALlK,CAAKkK,GAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAExBX,YAAAA,KAAAA,CAAMrN,IAAI,CAAC;;;AAGTuN,gBAAAA,IAAAA,EAAMU,cAAa7F,CAAAA,CAAAA,CAAAA;AACnBkF,gBAAAA,KAAAA,EAAO,IAAIlD,KAAAA,CAAMrM,CAAGmB,EAAAA,CAAAA,EAAG6E,CAAGD,EAAAA,CAAAA,CAAAA;AAC5B,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;KACK,MAAA;AACL9F,QAAAA,MAAAA,CAAOkQ,IAAI,CAACJ,QAAUC,CAAAA,CAAAA,OAAO,CAACI,SAAAA,IAAAA,EAAAA;YAC5B,IAAMC,QAAAA,GAAWN,QAAQ,CAACK,IAAK,CAAA,CAAA;AAC/B,YAAA,IAAMb,KAAQ,GAAA,IAAIlD,KAAQ/E,EAAAA,CAAAA,YAAY,CAACwH,YAAWuB,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AAElDf,YAAAA,KAAAA,CAAMrN,IAAI,CAAC;AACTuN,gBAAAA,IAAAA,EAAMU,cAAaE,CAAAA,IAAAA,CAAAA;gBACnBb,KAAAA,EAAAA,KAAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA;AACAD,IAAAA,KAAAA,GAAQA,KAAMgB,CAAAA,IAAI,CAAC,SAACvK,CAAGC,EAAAA,CAAAA,EAAAA;eAAMD,CAAEyJ,CAAAA,IAAI,GAAGxJ,CAAAA,CAAEwJ,IAAI,CAAA;;IAE5C,OAAOF,KAAAA,CAAAA;AACT,CAAA;AAEO,SAASM,iBAAkB7J,CAAW,EAAEC,CAAW,EAAEqE,CAAS,EAAEkG,MAAgB,EAAA;AACrF,IAAA,IAAMvB,MAAM,EAAE,CAAA;AACd,IAAA,IAAMwB,KAAK,CAAInG,GAAAA,CAAAA,CAAAA;AAEf,IAAA,IAAIkG,MAAQ,EAAA;AACV,QAAA,IAAK,IAAIjQ,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;YAC1B0O,GAAG,CAAC1O,CAAE,CAAA,GAAGyF,CAAC,CAACzF,CAAE,CAAA,GAAGkQ,EAAKxK,GAAAA,CAAC,CAAC1F,CAAAA,CAAE,GAAG+J,CAAAA,CAAAA;AAC9B,SAAA;KACK,MAAA;AACL,QAAA,IAAK,IAAI/J,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI,GAAGA,EAAK,EAAA,CAAA;YAC1B0O,GAAG,CAAC1O,EAAE,CAAA,GAAGwE,IAAK2D,CAAAA,KAAK,CAAC3D,IAAK6D,CAAAA,IAAI,CAAC5C,CAAC,CAACzF,EAAAA,CAAE,GAAGyF,CAAC,CAACzF,EAAE,CAAA,GAAGkQ,EAAKxK,GAAAA,CAAC,CAAC1F,EAAAA,CAAE,GAAG0F,CAAC,CAAC1F,EAAAA,CAAE,GAAG+J,CAAAA,CAAAA,CAAAA,CAAAA;AACjE,SAAA;AACA2E,QAAAA,GAAG,CAAC,CAAA,CAAE,GAAGlK,IAAAA,CAAK2D,KAAK,CAAC1C,CAAC,CAAC,CAAA,CAAE,GAAGyK,EAAAA,GAAKxK,CAAC,CAAC,EAAE,GAAGqE,CAAAA,CAAAA,CAAAA;AACzC,KAAA;IAEA,OAAO2E,GAAAA,CAAAA;AACT,CAAA;AAEO,SAASkB,eAAcpQ,CAAS,EAAA;IACrC,IAAM2Q,KAAAA,GAAQ,kBAAmBtB,CAAAA,IAAI,CAACrP,CAAAA,CAAAA,CAAAA;AAEtC,IAAA,IAAI2Q,KAAO,EAAA;AACT,QAAA,OAAO,CAACA,KAAK,CAAC,CAAA,CAAE,GAAG,GAAA,IAAOA,KAAK,CAAC,CAAA,CAAE,GAAG,CAAC,IAAI,CAAA,CAAA,CAAA;AAC5C,KAAA;AAEA,IAAA,OAAO,CAAC3Q,CAAAA,CAAAA;AACV;;AC1HO,SAAS4Q,aAAAA,GAAAA;IACd,IAAI,OAAOC,WAAW,QAAU,EAAA;AAC9B,QAAA,OAAO7L,KAAKI,GAAG,CAAC,CAAGyL,EAAAA,MAAAA,CAAOC,gBAAgB,IAAI,CAAA,CAAA,CAAA;AAChD,KAAA;IAEA,OAAO,CAAA,CAAA;AACT,CAAA;AAEA;AACaC,IAAAA,SAAAA,GAAY,OAAOF,MAAAA,KAAW,YAAY;AAEhD,SAASG,KAAAA,GAAAA;;IAEd,OAAO,CAAC,CAACC,SAAUC,CAAAA,QAAQ,IAAI,kBAAmB5B,CAAAA,IAAI,CAAC2B,SAAAA,CAAUC,QAAQ,CAAA,CAAA;AAC3E,CAAA;AAEO,SAASC,SAAAA,GAAAA;AACd,IAAA,IAAM/C,GAAM6C,GAAAA,SAAAA,CAAUG,SAAS,CAACC,WAAW,EAAA,CAAA;IAC3C,IAAMC,GAAAA,GAAMlD,GAAIuC,CAAAA,KAAK,CAAC,oCAAA,CAAA,CAAA;AAEtB,IAAA,OAAOW,MAAMrE,QAASqE,CAAAA,GAAG,CAAC,CAAA,CAAE,EAAE,EAAM,CAAA,GAAA,CAAA,CAAA;AACtC,CAAA;AAEO,SAASC,SAAAA,GAAAA;AACd,IAAA,OAAO,gBAAiBjC,CAAAA,IAAI,CAAC2B,SAAAA,CAAUG,SAAS,CAAA,CAAA;AAClD,CAAA;AAEO,SAASI,aAAAA,GAAAA;AACd,IAAA,OAAO,iBAAkBlC,CAAAA,IAAI,CAAC2B,SAAAA,CAAUG,SAAS,CAAA,CAAA;AACnD,CAAA;AAEO,SAASK,oBAAAA,GAAAA;AACd,IAAA,OAAOF,eAAeC,aAAmB,EAAA,IAAA,wBAAA,CAAyBlC,IAAI,CAAC2B,UAAUG,SAAS,CAAA,CAAA;AAC5F,CAAA;AAEO,SAASM,aAAAA,GAAAA;AACd,IAAA,OAAOC,eAAqBC,EAAAA,IAAAA,eAAAA,EAAAA,CAAAA;AAC9B,CAAA;AAEO,SAASD,eAAAA,GAAAA;AACsBE,IAAAA,IAAAA,GAAAA,CAAAA;IAApC,OAAO,OAAOA,OAAO,WAAeA,IAAAA,CAAAA,CAAAA,MAAAA,EAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAIC,YAAY,MAAK,KAAA,CAAA;AAC3D,CAAA;AAEO,SAASF,eAAAA,GAAAA;IACd,OAAOf,MAAAA,CAAOkB,kBAAkB,KAAK,aAAA,CAAA;AACvC;;AC1CO,SAASC,mBAAoBzT,KAAwB,EAAA;AAC1D,IAAA,IAAI4Q,SAAS5Q,KAAQ,CAAA,EAAA;AACnBA,QAAAA,KAAAA,GAAQyQ,YAAWzQ,CAAAA,KAAAA,CAAAA,CAAAA;AACrB,KAAA;AAEA,IAAA,IAAMkR,KAAQlR,GAAAA,KAAAA,CAAAA;AACd,IAAA,IAAM0T,KAAQ,GAAA;QACZC,KAAO,EAAA,CAAA;QACPC,MAAQ,EAAA,CAAA;QACRC,IAAM,EAAA,IAAIxP,UAAW,CAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AAC/B,KAAA,CAAA;IACA,IAAMwP,IAAAA,GAAOH,MAAMG,IAAI,CAAA;AAEvB,IAAA,IAAK,IAAI5R,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;AAC1B4R,QAAAA,IAAI,CAAC5R,CAAAA,CAAE,GAAGiP,KAAK,CAACjP,CAAE,CAAA,CAAA;AACpB,KAAA;IAEA,OAAOyR,KAAAA,CAAAA;AACT,CAAA;AAEO,SAASI,sBAAuBpC,QAAwD,EAAA;AAC7F,IAAA,IAAMiC,KAAQ,GAAA,GAAA,CAAA;AACd,IAAA,IAAMD,KAAQ,GAAA;QACZC,KAAAA,EAAAA,KAAAA;QACAC,MAAQ,EAAA,CAAA;QACRC,IAAM,EAAA,IAAIxP,UAAWsP,CAAAA,KAAAA,GAAQ,CAAI,GAAA,CAAA,CAAA;AACnC,KAAA,CAAA;IACA,IAAME,IAAAA,GAAOH,MAAMG,IAAI,CAAA;AACvB,IAAA,IAAM5C,QAAQQ,sBAAuBC,CAAAA,QAAAA,CAAAA,CAAAA;IAErC,IAAIT,KAAAA,CAAMvP,MAAM,EAAE;AAChB,QAAA,IAAK,IAAIO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI0R,OAAO1R,CAAK,EAAA,CAAA;AAC9B,YAAA,IAAMwD,KAAQxD,GAAAA,CAAAA,IAAK0R,KAAAA,GAAQ,CAAA,CAAA,CAAA;AAE3B,YAAA,IAAIlO,SAASwL,KAAK,CAAC,CAAE,CAAA,CAACE,IAAI,EAAE;gBAC1B0C,IAAK5M,CAAAA,GAAG,CAACgK,KAAK,CAAC,CAAA,CAAE,CAACC,KAAK,CAAC3F,OAAO,EAAA,EAAItJ,CAAI,GAAA,CAAA,CAAA,CAAA;aAClC,MAAA,IAAIwD,KAASwL,IAAAA,KAAK,CAACA,KAAAA,CAAMvP,MAAM,GAAG,CAAA,CAAE,CAACyP,IAAI,EAAE;AAChD0C,gBAAAA,IAAAA,CAAK5M,GAAG,CAACgK,KAAK,CAACA,KAAMvP,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACwP,KAAK,CAAC3F,OAAO,IAAItJ,CAAI,GAAA,CAAA,CAAA,CAAA;aACjD,MAAA;gBACL,IAAK,IAAImP,IAAI,CAAGA,EAAAA,CAAAA,GAAIH,MAAMvP,MAAM,GAAG,GAAG0P,CAAK,EAAA,CAAA;oBACzC,IAAMC,EAAAA,GAAKJ,KAAK,CAACG,CAAE,CAAA,CAAA;AACnB,oBAAA,IAAME,EAAKL,GAAAA,KAAK,CAACG,CAAAA,GAAI,CAAE,CAAA,CAAA;AAEvB,oBAAA,IAAIC,GAAGF,IAAI,IAAI1L,SAAS6L,EAAGH,CAAAA,IAAI,GAAG1L,KAAO,EAAA;wBACvC,IAAMyL,KAAAA,GAAQK,gBAAiBF,CAAAA,EAAAA,CAAGH,KAAK,CAAC3F,OAAO,EAAI+F,EAAAA,EAAAA,CAAGJ,KAAK,CAAC3F,OAAO,EAAA,EAAI,CAAC9F,KAAAA,GAAQ4L,EAAGF,CAAAA,IAAI,KAAKG,EAAAA,CAAGH,IAAI,GAAGE,EAAGF,CAAAA,IAAI,CAAD,CAAA,CAAA;wBAE5G0C,IAAK5M,CAAAA,GAAG,CAACiK,KAAAA,EAAOjP,CAAI,GAAA,CAAA,CAAA,CAAA;AAEpB,wBAAA,MAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;IAEA,OAAOyR,KAAAA,CAAAA;AACT;;;ACvDYK,CAAAA,SAAAA,SAAAA,EAAAA;;;;GAAAA,SAAAA,KAAAA,SAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAMZ;;;;;AAKC,IACM,SAASC,WAAiCnP,CAAAA,GAAQ,EAAEoP,KAA2B,EAAA;AAA3BA,IAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAAA,CAAAA,CAAAA;IACzD,IAAMvS,MAAAA,GAASmD,IAAInD,MAAM,CAAA;IAEzB,IAAIA,MAAAA,IAAU,KAAKuS,KAA0B,KAAA,CAAA,EAAA;QAC3C,OAAOpP,GAAAA,CAAAA;AACT,KAAA;AACA,IAAA,IAAInD,UAAU,EAAI,EAAA;AAChB,QAAA,IAAK,IAAIO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIP,QAAQO,CAAK,EAAA,CAAA;AAC/BiS,YAAAA,aAAAA,CAAcrP,KAAK5C,CAAGgS,EAAAA,KAAAA,CAAAA,CAAAA;AACxB,SAAA;QAEA,OAAOpP,GAAAA,CAAAA;KACF,MAAA;AACL,QAAA,OAAOsP,SAAStP,GAAKoP,EAAAA,KAAAA,CAAAA,CAAAA;AACvB,KAAA;AACF,CAAA;AAEA;;;;;;AAMC,IACM,SAASG,UAAAA,CAAgCvP,GAAQ,EAAEgB,IAAO,EAAEoO,KAAsC,EAAA;AAAtCA,IAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAAA,CAAAA,CAAAA;IACjE,IAAIpP,GAAAA,CAAIU,QAAQ,CAACM,IAAO,CAAA,EAAA;QACtB,OAAOhB,GAAAA,CAAAA;AACT,KAAA;AACAA,IAAAA,GAAAA,CAAIjB,IAAI,CAACiC,IAAAA,CAAAA,CAAAA;IACT,IAAIhB,GAAAA,CAAInD,MAAM,KAAK,CAAG,EAAA;QACpB,OAAOmD,GAAAA,CAAAA;AACT,KAAA;AACA,IAAA,IAAIoP,KAA0B,KAAA,CAAA,EAAA;AAC5BC,QAAAA,aAAAA,CAAcrP,GAAKA,EAAAA,GAAAA,CAAInD,MAAM,GAAG,CAAGuS,EAAAA,KAAAA,CAAAA,CAAAA;AACrC,KAAA;IAEA,OAAOpP,GAAAA,CAAAA;AACT,CAAA;AAEA,SAASqP,aAAmChL,CAAAA,KAAU,EAAEzD,KAAa,EAAEwO,KAAgB,EAAA;IACrF,IAAMjO,WAAAA,GAAckD,KAAK,CAACzD,KAAM,CAAA,CAAA;AAEhC,IAAA,IAAIwO,KAA+B,KAAA,CAAA,EAAA;QACjC,MAAOxO,KAAAA,IAAS,CAAKyD,IAAAA,KAAK,CAACzD,KAAAA,GAAQ,CAAE,CAAA,CAAC4O,QAAQ,GAAGrO,WAAYqO,CAAAA,QAAQ,CAAE;AACrEnL,YAAAA,KAAK,CAACzD,KAAM,CAAA,GAAGyD,KAAK,CAACzD,QAAQ,CAAE,CAAA,CAAA;AAC/BA,YAAAA,KAAAA,EAAAA,CAAAA;AACA,YAAA,IAAIA,UAAU,CAAG,EAAA;AACf,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;KACK,MAAA;QACL,MAAOA,KAAAA,IAAS,CAAKyD,IAAAA,KAAK,CAACzD,KAAAA,GAAQ,CAAE,CAAA,CAAC4O,QAAQ,GAAGrO,WAAYqO,CAAAA,QAAQ,CAAE;AACrEnL,YAAAA,KAAK,CAACzD,KAAM,CAAA,GAAGyD,KAAK,CAACzD,QAAQ,CAAE,CAAA,CAAA;AAC/BA,YAAAA,KAAAA,EAAAA,CAAAA;AACA,YAAA,IAAIA,UAAU,CAAG,EAAA;AACf,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;IACAyD,KAAK,CAACzD,MAAM,GAAGO,WAAAA,CAAAA;AACjB,CAAA;AAEA,SAASmO,SACPtP,GAAQ,EACRoP,KAAgB,EAChBK,KAAS,EACTC,GAAoB,EAAA;AADpBD,IAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AACRC,IAAAA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,GAAAA,GAAM1P,GAAInD,CAAAA,MAAM,GAAG,CAAA,CAAA;;AAGnB,IAAA,IAAI4S,SAASC,GAAK,EAAA;QAChB,OAAO1P,GAAAA,CAAAA;AACT,KAAA;IAEA,IAAM2P,IAAAA,GAAO3P,GAAG,CAACyP,KAAM,CAAA,CAAA;AACvB,IAAA,IAAIxT,IAAOwT,GAAAA,KAAAA,CAAAA;AACX,IAAA,IAAIvT,KAAQwT,GAAAA,GAAAA,CAAAA;AAEZ,IAAA,MAAOzT,OAAOC,KAAO,CAAA;AACnB,QAAA,IAAIkT,KAA+B,KAAA,CAAA,EAAA;;YAEjC,MAAOpP,GAAG,CAAC9D,KAAAA,CAAM,CAACsT,QAAQ,GAAGG,IAAKH,CAAAA,QAAQ,IAAItT,KAAAA,IAASD,IAAM,CAAA;AAAEC,gBAAAA,KAAAA,EAAAA,CAAAA;AAAS,aAAA;;YAExE,MAAO8D,GAAG,CAAC/D,IAAAA,CAAK,CAACuT,QAAQ,IAAIG,IAAKH,CAAAA,QAAQ,IAAIvT,IAAAA,GAAOC,KAAO,CAAA;AAAED,gBAAAA,IAAAA,EAAAA,CAAAA;AAAQ,aAAA;SACjE,MAAA;;YAEL,MAAO+D,GAAG,CAAC9D,KAAAA,CAAM,CAACsT,QAAQ,GAAGG,IAAKH,CAAAA,QAAQ,IAAItT,KAAAA,IAASD,IAAM,CAAA;AAAEC,gBAAAA,KAAAA,EAAAA,CAAAA;AAAS,aAAA;;YAExE,MAAO8D,GAAG,CAAC/D,IAAAA,CAAK,CAACuT,QAAQ,IAAIG,IAAKH,CAAAA,QAAQ,IAAIvT,IAAAA,GAAOC,KAAO,CAAA;AAAED,gBAAAA,IAAAA,EAAAA,CAAAA;AAAQ,aAAA;AACxE,SAAA;;;AAE0B,QAAA,GAAA,GAAA;AAAC+D,YAAAA,GAAG,CAAC9D,KAAM,CAAA;AAAE8D,YAAAA,GAAG,CAAC/D,IAAK,CAAA;AAAC,SAAA,EAAhD+D,GAAG,CAAC/D,IAAAA,CAAK,GAAE+D,GAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAG,CAAC9D,KAAM,CAAA,GAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AACxB,KAAA;;;AAE0B,IAAA,IAAA,GAAA;AAAC8D,QAAAA,GAAG,CAAC/D,IAAK,CAAA;AAAE+D,QAAAA,GAAG,CAACyP,KAAM,CAAA;AAAC,KAAA,EAAhDzP,GAAG,CAACyP,KAAAA,CAAM,GAAEzP,IAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAG,CAAC/D,IAAK,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;IACtBqT,QAAStP,CAAAA,GAAAA,EAAKoP,KAAOK,EAAAA,KAAAA,EAAOxT,IAAO,GAAA,CAAA,CAAA,CAAA;IACnCqT,QAAStP,CAAAA,GAAAA,EAAKoP,KAAOlT,EAAAA,KAAAA,GAAQ,CAAGwT,EAAAA,GAAAA,CAAAA,CAAAA;IAEhC,OAAO1P,GAAAA,CAAAA;AACT;;AClHO,SAAS4P,WAAAA,CAAgB5O,IAAsB,EAAE6O,GAA2B,EAAA;AAA3BA,IAAAA,IAAAA,gBAAAA,GAAM,GAAA,oBAAA,CAAA;IAC5D,IAAI7O,IAAAA,KAASjF,SAAaiF,IAAAA,IAAAA,KAAS,IAAM,EAAA;AACvC,QAAA,MAAM,IAAI5B,KAAMyQ,CAAAA,GAAAA,CAAAA,CAAAA;AAClB,KAAA;AACF,CAAA;AAEO,SAASC,OAAAA,CAASC,SAAc,EAAEF,GAAsB,EAAA;AAAtBA,IAAAA,IAAAA,gBAAAA,GAAM,GAAA,gBAAA,CAAA;AAC7C,IAAA,IAAI,CAACE,SAAW,EAAA;AACd,QAAA,MAAM,IAAI3Q,KAAMyQ,CAAAA,GAAAA,CAAAA,CAAAA;AAClB,KAAA;AACF;;ACRA;;;;;;IAOO,SAASG,iBAAAA,CAAmBC,UAAkB,EAAA;;IAEnD,OAAOC,gBAAAA,CAAiBD,eAAe,CAAC5B,oBAAAA,EAAAA,CAAAA;AAC1C,CAAA;AAEA;;IAGO,SAAS6B,gBAAAA,CAAkBD,UAAkB,EAAA;IAClD,OAAO,gBAAA,CAAiB/D,IAAI,CAAC+D,UAAAA,CAAAA,CAAAA;AAC/B;;ACnBA;;;AAGC,IACM,IAAA,QAAME,GAAN,SAAMA,QAAAA,GAAAA;;SAIXC,OAAU,GAAA,IAAI9U,OAAW,CAAA,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AACjC,QAAA,KAAA,CAAKD,OAAO,GAAGA,OAAAA,CAAAA;AACf,QAAA,KAAA,CAAKC,MAAM,GAAGA,MAAAA,CAAAA;AAChB,KAAA,CAAA,CAAA;AACD;;ACRD,IAAMwV,MAAS,GAAA,oBAAA,CAAA;AACf,IAAIC,WAAAA,CAAAA;AAEJ,SAASC,OAAQpR,OAAe,EAAA;IAC9B,OAAO;QACJ,IAAIkR,GAAAA,MAAAA;AACL,QAAA,gBAAA;QACC,EAAElR,GAAAA,OAAAA;AACJ,KAAA,CAAA;AACH,CAAA;AAEA,SAAS/D,MAAO+D,OAAe,EAAA;AAAE,IAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGxD,QAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAc,CAAA,CAAA;;AAC7C+I,IAAAA,IAAAA,QAAAA,CAAAA;AAAAA,IAAAA,CAAAA,WAAAA,OAAQtJ,EAAAA,KAAK,CAAbsJ,KAAAA,CAAAA,oBAAiB6L,MAAOpR,CAAAA,OAAAA,CAAAA,EAAAA;AAAUxD,QAAAA,IAAAA;;IAClC2U,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAc,SAASnR,OAASxD,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,CAAA;AAEA;;;;IAKA,SAAST,KAAMiE,OAAe,EAAA;AAAE,IAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGxD,QAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAc,CAAA,CAAA;;AAC5C+I,IAAAA,IAAAA,QAAAA,CAAAA;AAAAA,IAAAA,CAAAA,WAAAA,OAAQ8L,EAAAA,KAAK,CAAb9L,KAAAA,CAAAA,oBAAiB6L,MAAOpR,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IACxBmR,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAc,QAAQnR,OAASxD,EAAAA,IAAAA,CAAAA,CAAAA;AACjC,CAAA;AAEA,SAAS8U,KAAMtR,OAAe,EAAA;AAAE,IAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAGxD,QAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAc,CAAA,CAAA;;AAC5C+I,IAAAA,IAAAA,QAAAA,CAAAA;AAAAA,IAAAA,CAAAA,WAAAA,OAAQ+L,EAAAA,IAAI,CAAZ/L,KAAAA,CAAAA,oBAAgB6L,MAAOpR,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IACvBmR,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAc,QAAQnR,OAASxD,EAAAA,IAAAA,CAAAA,CAAAA;AACjC,CAAA;AAEA;;;;IAKA,SAAS+U,SAAUjV,EAA4D,EAAA;IAC7E,IAAIA,EAAAA,IAAMkV,WAAWlV,EAAK,CAAA,EAAA;QACxB6U,WAAc7U,GAAAA,EAAAA,CAAAA;AAChB,KAAA;AACF,CAAA;IAEamV,MAAS,GAAA;IACpBxV,KAAAA,EAAAA,KAAAA;IACAF,IAAAA,EAAAA,IAAAA;IACAuV,IAAAA,EAAAA,IAAAA;IACAC,QAAAA,EAAAA,QAAAA;AACF;;;ACzBYG,CAAAA,SAAAA,cAAAA,EAAAA;;;;GAAAA,cAAAA,KAAAA,cAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAqBL,SAASC,IAChB,GAAA,EAAA;AAEA;;;;;;;IAQO,SAAS/E,QAAAA,CAAUzP,GAAY,EAAA;AACpC,IAAA,OAAO,OAAOA,GAAQ,KAAA,QAAA,CAAA;AACxB,CAAA;AAEA;;;;;;;AAOC,IACYyU,IAAAA,OAAAA,GAAWlM,MAAMkM,OAAO,IAAI,SAAUzU,GAAG,EAAA;AACpD,IAAA,OAAOS,OAAOqB,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAACvC,GAAS,CAAA,KAAA,gBAAA,CAAA;AACjD,EAAG;AAEH;;;;;;;IAQO,SAASqU,UAAAA,CAAYrU,GAAY,EAAA;AACtC,IAAA,OAAOS,OAAOqB,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAACvC,GAAS,CAAA,KAAA,mBAAA,CAAA;AACjD,CAAA;AAEA;;;;;;;IAQO,SAAS0U,QAAAA,CAAU1U,GAAY,EAAA;AACpC,IAAA,OAAOS,OAAOqB,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAACvC,GAAS,CAAA,KAAA,iBAAA,CAAA;AACjD,CAAA;AAEA;;;;;IAMO,SAAS2U,aAAAA,CAAe3U,GAAY,EAAA;AACzC,IAAA,IAAIA,GAAQ,KAAA,IAAA,IAAQ,OAAOA,GAAAA,KAAQ,QAAU,EAAA;QAAE,OAAO,KAAA,CAAA;AAAO,KAAA;;IAE7D,IAAIS,MAAAA,CAAOqB,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAACvC,SAAS,iBAAmB,EAAA;QAAE,OAAO,KAAA,CAAA;AAAO,KAAA;IAE/E,IAAM4U,KAAAA,GAAQnU,MAAOoU,CAAAA,cAAc,CAAC7U,GAAAA,CAAAA,CAAAA;AAEpC,IAAA,IAAI4U,UAAU,IAAM,EAAA;QAAE,OAAO,IAAA,CAAA;AAAM,KAAA;AAEnC,IAAA,IAAME,MAASrU,GAAAA,MAAAA,CAAOqB,SAAS,CAACiT,cAAc,CAAA;AAC9C,IAAA,IAAMC,OAAOF,MAAOvS,CAAAA,IAAI,CAACqS,KAAO,EAAA,aAAA,CAAA,IAAkBA,MAAM3U,WAAW,CAAA;;AAGnE,IAAA,OAAO,OAAO+U,IAAS,KAAA,UAAA,IACrBC,QAASnT,CAAAA,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAACyS,UAAUC,QAASnT,CAAAA,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAAC9B,MAAAA,CAAAA,CAAAA;AAChF,CAAA;AAEO,SAASyU,SAAUC,MAAyB,EAAA;AAEOA,IAAAA,IAAAA,eAAAA,CAAAA;;AAAxD,IAAA,OAAO,OAAOA,MAAAA,KAAW,QAAYA,IAAAA,MAAAA,KAAW,IAAQA,IAAAA,CAAAA,CAAAA,eAAAA,GAAAA,MAAAA,CAAOC,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAdD,eAAgBxG,CAAAA,WAAW,EAAO,MAAA,QAAA,CAAA;AAC5F,CAAA;AAEO,SAAS0G,aAAcxW,KAAa,EAAA;AACzC,IAAA,OAAO,CAACA,KAAAA,GAASA,QAAQ,CAAC,MAAO,KAAKA,KAAU,KAAA,CAAA,CAAA;AAClD,CAAA;AAEA;;;;;AAKC,IACM,SAASyW,aAAe5P,CAAAA,GAAW,EAAE2B,GAAW,EAAA;AACrD,IAAA,OAAO3B,MAAMJ,IAAKpB,CAAAA,MAAM,EAAMmD,IAAAA,MAAM3B,GAAE,CAAA,CAAA;AACxC,CAAA;AAEO,SAAS6P,mBAAAA,GAAAA;AACd,IAAA,MAAM,IAAIzS,KAAM,CAAA,sCAAA,CAAA,CAAA;AAClB,CAAA;AAEO,SAAS0S,YAAAA,GAAAA;IACd,OAAOC,EAAAA,EAAAA,CAAS/F,OAAO,CAAC,IAAM,EAAA,EAAA,CAAA,CAAA;AAChC,CAAA;AAEO,SAASgG,YACdC,CAAAA,MAAc,EACdC,QAAuB,EACvBC,WAAgB,EAAA;AADhBD,IAAAA,IAAAA,qBAAAA,QAAW,GAAA,YAAA,CAAA;AACXC,IAAAA,IAAAA,wBAAAA,WAAc,GAAA,EAAA,CAAA;;AAGd,IAAA,IAAMC,sBAAsBH,MAAOI,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAC,EAAE,IAAIJ,MAAAA,CAAAA;;AAGpD,IAAA,IAAMK,iBAAiBC,IAAKH,CAAAA,mBAAAA,CAAAA,CAAAA;;AAE5B,IAAA,IAAMI,aAAa,EAAE,CAAA;;IAGrB,IAAK,IAAIvS,SAAS,CAAGA,EAAAA,MAAAA,GAASqS,eAAezV,MAAM,EAAEoD,UAAU,GAAK,CAAA;AAClE,QAAA,IAAMH,KAAQwS,GAAAA,cAAAA,CAAexS,KAAK,CAACG,QAAQA,MAAS,GAAA,GAAA,CAAA,CAAA;AACpD,QAAA,IAAMwS,WAAc,GAAA,IAAI5N,KAAM/E,CAAAA,KAAAA,CAAMjD,MAAM,CAAA,CAAA;AAE1C,QAAA,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAGA,IAAI0C,KAAMjD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACrCqV,YAAAA,WAAW,CAACrV,CAAAA,CAAE,GAAG0C,KAAAA,CAAM4S,UAAU,CAACtV,CAAAA,CAAAA,CAAAA;AACpC,SAAA;QACA,IAAMuV,SAAAA,GAAY,IAAInT,UAAWiT,CAAAA,WAAAA,CAAAA,CAAAA;AAEjCD,QAAAA,UAAAA,CAAWzT,IAAI,CAAC4T,SAAAA,CAAAA,CAAAA;AAClB,KAAA;;IAGA,IAAMC,IAAAA,GAAO,IAAIC,IAAAA,CAAKL,UAAY,EAAA;QAAEM,IAAMX,EAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;;IAGtD,IAAMY,IAAAA,GAAO,IAAIC,IAAK,CAAA;AAACJ,QAAAA,IAAAA;AAAK,KAAA,EAAEV,QAAU,EAAA;QAAEY,IAAMX,EAAAA,WAAAA;AAAY,KAAA,CAAA,CAAA;IAE5D,OAAOY,IAAAA,CAAAA;AACT,CAAA;AAEO,SAASE,WAAAA,CACdC,WAAc,EACdC,SAAc,EAAA;IAEdA,SAAUrG,CAAAA,OAAO,CAACsG,SAAAA,QAAAA,EAAAA;AAChBrW,QAAAA,MAAAA,CAAOsW,mBAAmB,CAACD,QAAAA,CAAShV,SAAS,CAAE0O,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;AACrD,YAAA,IAAMiU,qBAAqBvW,MAAOC,CAAAA,wBAAwB,CAACoW,QAAAA,CAAShV,SAAS,EAAEiB,IAAAA,CAAAA,CAAAA;AAE/E,YAAA,IAAI,CAACiU,kBAAoB,EAAA;gBACvB,MAAM,IAAIlU,KAAM,CAAC,2CAA2CgU,GAAAA,QAAAA,CAAAA,CAAAA;AAC9D,aAAA;AACArW,YAAAA,MAAAA,CAAOM,cAAc,CACnB6V,WAAY9U,CAAAA,SAAS,EACrBiB,IACAiU,EAAAA,kBAAAA,CAAAA,CAAAA;AAEJ,SAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;AACF;;ACnMO,IAAMC,eAAqD,GAAA,GAAG;AAErE,IAAMC,UAAoB,EAAE,CAAA;AAE5B;;;;;;AAMC,IACM,SAASC,cAAgBpU,CAAAA,IAAY,EAAEqU,WAA8B,EAAA;IAC1E,IAAIH,eAAe,CAAClU,IAAAA,CAAK,EAAE;AACzBuR,QAAAA,MAAAA,CAAOxV,KAAK,CAAC,oCAAC,GAAoCiE,IAAK,GAAA,GAAA,CAAA,CAAA;AACzD,KAAA;IAEAkU,eAAe,CAAClU,KAAK,GAAGqU,WAAAA,CAAAA;AAExB,IAAA,IAAMC,iBAAiB,IAAID,WAAAA,EAAAA,CAAAA;AAE3BC,IAAAA,cAAAA,CAAetU,IAAI,GAAGA,IAAAA,CAAAA;AAEtBmU,IAAAA,OAAAA,CAAQzU,IAAI,CAAC4U,cAAAA,CAAAA,CAAAA;IACbH,OAAQpG,CAAAA,IAAI,CAAC,SAACvK,CAAGC,EAAAA,CAAAA,EAAAA;eAAMD,CAAEuM,CAAAA,KAAK,GAAGtM,CAAAA,CAAEsM,KAAK,CAAA;;AAC1C,CAAA;AAEA;;IAGO,SAASwE,gBAAAA,CAAkBvU,IAAY,EAAA;IAC5C,OAAOkU,eAAe,CAAClU,IAAK,CAAA,CAAA;AAC5B,IAAA,IAAMwU,WAAcL,GAAAA,OAAAA,CAAQM,SAAS,CAACC,SAAAA,MAAAA,EAAAA;AAAUA,QAAAA,OAAAA,MAAAA,CAAO1U,IAAI,KAAKA,IAAAA,CAAAA;;IAEhE,IAAIwU,WAAAA,KAAgB,CAAC,CAAG,EAAA;QACtBL,OAAQ1S,CAAAA,MAAM,CAAC+S,WAAa,EAAA,CAAA,CAAA,CAAA;AAC9B,KAAA;AACF,CAAA;AAEO,IAAA,YAAMG,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA,EAAAA;IAAAA,YACJC,CAAAA,UAEN,GAFD,SAAOA,UAAAA,GAAAA;QACL,OAAOT,OAAAA,CAAAA;AACT,KAAA,CAAA;AAHWQ,IAAAA,YAAAA,CAKJE,qBAEN,GAFD,SAAOA,qBAAuBC,CAAAA,WAAwB,EAAEC,KAAY,EAAA;QAClEZ,OAAQ1G,CAAAA,OAAO,CAACuH,SAAAA,MAAAA,EAAAA;mBAAUA,MAAOC,CAAAA,oBAAoB,CAACH,WAAaC,EAAAA,KAAAA,CAAAA,CAAAA;;AACrE,KAAA,CAAA;AAPWJ,IAAAA,YAAAA,CASJO,kBAEN,GAFD,SAAOA,kBAAAA,CAAoBC,IAAiB,EAAA;QAC1ChB,OAAQ1G,CAAAA,OAAO,CAACuH,SAAAA,MAAAA,EAAAA;AAAUA,YAAAA,OAAAA,MAAAA,CAAOI,oBAAoB,CAACD,IAAAA,CAAAA,CAAAA;;AACxD,KAAA,CAAA;AAXWR,IAAAA,YAAAA,CAaEU,iBAIZ,GAJD,SAAaA,iBAAmBN,CAAAA,KAAY,EAAEhU,OAA0B,EAAA;eAAxE,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;AAAO9E,oBAAAA,OAAAA,CAAQqZ,GAAG,CAChBnB,OAAQ7G,CAAAA,GAAG,CAACoH,SAAAA,MAAAA,EAAAA;+BAAUA,MAAOW,CAAAA,iBAAiB,CAACN,KAAOhU,EAAAA,OAAAA,CAAAA,CAAAA;;;;AAE1D,SAAA,CAAA,EAAA,CAAA;;IAjBW4T,YAmBJY,CAAAA,kBAEN,GAFD,SAAOA,kBAAAA,CAAoBR,KAAY,EAAEhU,OAAyB,EAAEyU,MAAc,EAAA;QAChFrB,OAAQ1G,CAAAA,OAAO,CAACuH,SAAAA,MAAAA,EAAAA;mBAAUA,MAAOO,CAAAA,kBAAkB,CAACR,KAAAA,EAAOhU,OAASyU,EAAAA,MAAAA,CAAAA,CAAAA;;AACtE,KAAA,CAAA;AArBWb,IAAAA,OAAAA,YAAAA,CAAAA;AAsBZ,CAAA,GAAA;AAED,IAAMc,aAAwC,GAAA;IAC5C,kBAAoB,EAAA,2CAAA;IACpB,WAAa,EAAA,oCAAA;IACb,cAAgB,EAAA,uCAAA;IAChB,KAAO,EAAA,8BAAA;IACP,MAAQ,EAAA,+BAAA;IACR,OAAS,EAAA,gCAAA;IACT,OAAS,EAAA,qCAAA;IACT,OAAS,EAAA,qCAAA;IACT,yBAA2B,EAAA,kDAAA;IAC3B,WAAa,EAAA,oCAAA;IACb,OAAS,EAAA,gCAAA;AACX,CAAA,CAAA;AAEO,SAASC,mBAAoB1V,IAAY,EAAA;IAC9C,IAAMnE,IAAAA,GAAO4Z,aAAa,CAACzV,IAAK,CAAA,CAAA;AAEhC,IAAA,IAAInE,IAAM,EAAA;AACR,QAAA,OAAO,kGAAC,GAE0BA,IAAK,GAAA,gDAAA,GACXA,IAAK,GAAA,GAAA,CAAA;KAC5B,MAAA;QACL,OAAO,EAAA,CAAA;AACT,KAAA;AACF;;ACnFA;;;AAGC,IACM,IAAA,MAAe8Z,iBAAV,WAAL;AAAeA,IAAAA,SAAAA,MAAAA,GAAAA;aACpB5F,KAAQ,GAAA,GAAA,CAAA;aACR/P,IAAO,GAAA,QAAA,CAAA;;AAFa2V,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAIpB;;;;;AAKC,MACD,OAAMN,iBAA+E,GAArF,SAAMA,iBAAmBN,CAAAA,KAAY,EAAEhU,OAA0B,EAAA;eAAjE,mBAAA,CAAA,WAAA;;;;;;AAAoF,SAAA,CAAA,EAAA,CAAA;;AAEpF;;;;;;MAOAwU,MAAAA,CAAAA,kBAAsF,GAAtFA,SAAAA,kBAAAA,CAAoBR,KAAY,EAAEhU,OAAyB,EAAEyU,MAAc,EAAU,EAAA,CAAA;AAErF;;;;MAKAP,MAAAA,CAAAA,oBAAuE,GAAvEA,SAAAA,qBAAsBH,WAAwB,EAAEC,KAAY,EAAU,EAAA,CAAA;AAEtE;;;AAGC,MACDK,OAAAA,oBAAyD,GAAzDA,SAAAA,oBAAAA,CAAsBN,WAAwB,EAAU,EAAA,CAAA;AAhCpCa,IAAAA,OAAAA,MAAAA,CAAAA;AAiCrB,CAAA;;AC/CD,SAASC,iBAAAA,CAAkBC,CAAC,EAAEC,CAAC,EAAA;AAC3BF,IAAAA,iBAAAA,GAAoBlY,OAAOqY,cAAc,IAAI,SAASA,cAAeF,CAAAA,CAAC,EAAEC,CAAC,EAAA;AACrED,QAAAA,CAAAA,CAAEG,SAAS,GAAGF,CAAAA,CAAAA;QAEd,OAAOD,CAAAA,CAAAA;AACX,KAAA,CAAA;AAEA,IAAA,OAAOD,kBAAkBC,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;AAChC;;ACNA,SAASG,SAAAA,CAAUC,QAAQ,EAAEC,UAAU,EAAA;AACnC,IAAA,IAAI,OAAOA,UAAAA,KAAe,UAAcA,IAAAA,UAAAA,KAAe,IAAM,EAAA;AACzD,QAAA,MAAM,IAAI5W,SAAU,CAAA,oDAAA,CAAA,CAAA;AACxB,KAAA;IAEA2W,QAASnX,CAAAA,SAAS,GAAGrB,MAAOmB,CAAAA,MAAM,CAACsX,UAAcA,IAAAA,UAAAA,CAAWpX,SAAS,EAAE;QAAE7B,WAAa,EAAA;YAAEpB,KAAOoa,EAAAA,QAAAA;YAAUE,QAAU,EAAA,IAAA;YAAMC,YAAc,EAAA,IAAA;AAAK,SAAA;AAAE,KAAA,CAAA,CAAA;IAE9I,IAAIF,UAAAA,EAAYP,kBAAkBM,QAAUC,EAAAA,UAAAA,CAAAA,CAAAA;AAChD;;ACVA;;IAGO,IAAIG,gBAAiB,CAAA;AAC3B,CAAA,SAAUA,gBAAgB,EAAA;IACvBA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,MAAM,GAAG,KAAA,CAAA;IAC1BA,gBAAgB,CAAC,SAAS,GAAG,KAAA,CAAA;AACjC,CAAA,EAAGA,gBAAAA,KAAqBA,gBAAAA,GAAmB,EAAC,CAAA,CAAA;;ACxB5C;;IAMO,IAAIC,WAAY,CAAA;AACtB,CAAA,SAAUA,WAAW,EAAA;IAClBA,WAAW,CAAC,IAAI,GAAG,GAAA,CAAA;IACnBA,WAAW,CAAC,QAAQ,GAAG,IAAA,CAAA;IACvBA,WAAW,CAAC,IAAI,GAAG,GAAA,CAAA;IACnBA,WAAW,CAAC,QAAQ,GAAG,IAAA,CAAA;IACvBA,WAAW,CAAC,IAAI,GAAG,GAAA,CAAA;AACvB,CAAA,EAAGA,WAAAA,KAAgBA,WAAAA,GAAc,EAAC,CAAA,CAAA,CAAA;AAClC;;IAGO,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAC1C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACxC;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AAC7C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AAC/C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,aAAc,CAAA,GAAG,EAAE,GAAG,aAAA,CAAA;AAChD;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,cAAe,CAAA,GAAG,EAAE,GAAG,cAAA,CAAA;AACjD;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AAC/C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,eAAgB,CAAA,GAAG,EAAE,GAAG,eAAA,CAAA;AACtD,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AACpC;;IAGO,IAAIC,QAAS,CAAA;AACnB,CAAA,SAAUA,QAAQ,EAAA;AACf;;AAEC,QACDA,QAAQ,CAACA,QAAQ,CAAC,QAAS,CAAA,GAAG,KAAK,GAAG,QAAA,CAAA;AACtC;;AAEC,QACDA,QAAQ,CAACA,QAAQ,CAAC,OAAQ,CAAA,GAAG,KAAK,GAAG,OAAA,CAAA;AACrC;;AAEC,QACDA,QAAQ,CAACA,QAAQ,CAAC,MAAO,CAAA,GAAG,KAAK,GAAG,MAAA,CAAA;AACxC,CAAA,EAAGA,QAAAA,KAAaA,QAAAA,GAAW,EAAC,CAAA,CAAA,CAAA;AAC5B;;IAGO,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC;;;;;AAMD;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AAC7C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,kBAAmB,CAAA,GAAG,EAAE,GAAG,kBAAA,CAAA;AACzD,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AACpC;;IAGO,IAAIC,wBAAyB,CAAA;AACnC,CAAA,SAAUA,wBAAwB,EAAA;AAC/B;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACjE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACnE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACjE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AACvE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACnE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAClE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AACtE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,gBAAiB,CAAA,GAAG,EAAE,GAAG,gBAAA,CAAA;AAC3E;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACjE;;AAEC,QACDA,wBAAwB,CAACA,wBAAwB,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACxE,CAAA,EAAGA,wBAAAA,KAA6BA,wBAAAA,GAA2B,EAAC,CAAA,CAAA,CAAA;AAC5D;;IAGO,IAAIC,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;AACjB;;AAEC,QACDA,UAAU,CAACA,UAAU,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AAC1C;;AAEC,QACDA,UAAU,CAACA,UAAU,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAC1C,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA,CAAA;AAChC;;IAGO,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAC1C;;;AAGC,QACDA,YAAY,CAACA,YAAY,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AAC5C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AAC7C,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AACpC;;IAGO,IAAIC,gBAAiB,CAAA;AAC3B,CAAA,SAAUA,gBAAgB,EAAA;AACvB;;AAEC,QACDA,gBAAgB,CAACA,gBAAgB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACjD;;AAEC,QACDA,gBAAgB,CAACA,gBAAgB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACnD;;AAEC,QACDA,gBAAgB,CAACA,gBAAgB,CAAC,eAAgB,CAAA,GAAG,EAAE,GAAG,eAAA,CAAA;AAC1D;;AAEC,QACDA,gBAAgB,CAACA,gBAAgB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACnD;;AAEC,QACDA,gBAAgB,CAACA,gBAAgB,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AACtD,CAAA,EAAGA,gBAAAA,KAAqBA,gBAAAA,GAAmB,EAAC,CAAA,CAAA,CAAA;AAC5C;;IAGO,IAAIC,QAAS,CAAA;AACnB,CAAA,SAAUA,QAAQ,EAAA;AACf;;QAGAA,QAAQ,CAAC,MAAA,CAAO,GAAG,GAAA,CAAA;AACnB;;QAGAA,QAAQ,CAAC,QAAA,CAAS,GAAG,GAAA,CAAA;AACrB;;QAGAA,QAAQ,CAAC,UAAA,CAAW,GAAG,GAAA,CAAA;AACvB;;QAGAA,QAAQ,CAAC,MAAA,CAAO,GAAG,GAAA,CAAA;AACnB;;QAGAA,QAAQ,CAAC,UAAA,CAAW,GAAG,GAAA,CAAA;AACvB;;QAGAA,QAAQ,CAAC,QAAA,CAAS,GAAG,GAAA,CAAA;AACrB;;QAGAA,QAAQ,CAAC,QAAA,CAAS,GAAG,GAAA,CAAA;AACrB;;QAGAA,QAAQ,CAAC,aAAA,CAAc,GAAG,GAAA,CAAA;AAC1B;;QAGAA,QAAQ,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACpB;;QAGAA,QAAQ,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACnB;;QAGAA,QAAQ,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACnB;;QAGAA,QAAQ,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACnB;;QAGAA,QAAQ,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACpB;;QAGAA,QAAQ,CAAC,QAAA,CAAS,GAAG,QAAA,CAAA;AACrB;;QAGAA,QAAQ,CAAC,QAAA,CAAS,GAAG,QAAA,CAAA;AACrB;;QAGAA,QAAQ,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACpB;;QAGAA,QAAQ,CAAC,mBAAA,CAAoB,GAAG,mBAAA,CAAA;AAChC;;QAGAA,QAAQ,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACnB;;QAGAA,QAAQ,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACpB;;QAGAA,QAAQ,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACpB;;QAGAA,QAAQ,CAAC,UAAA,CAAW,GAAG,UAAA,CAAA;AAC3B,CAAA,EAAGA,QAAAA,KAAaA,QAAAA,GAAW,EAAC,CAAA,CAAA,CAAA;AAC5B;;IAGO,IAAIC,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;AACjB;;AAEC,QACDA,UAAU,CAACA,UAAU,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AAC1C;;AAEC,QACDA,UAAU,CAACA,UAAU,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACrC;;AAEC,QACDA,UAAU,CAACA,UAAU,CAAC,oBAAqB,CAAA,GAAG,EAAE,GAAG,oBAAA,CAAA;AACnD;;AAEC,QACDA,UAAU,CAACA,UAAU,CAAC,sBAAuB,CAAA,GAAG,EAAE,GAAG,sBAAA,CAAA;AACzD,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA,CAAA;AAChC;;IAGO,IAAIC,cAAe,CAAA;AACzB,CAAA,SAAUA,cAAc,EAAA;AACrB;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,wBAAyB,CAAA,GAAG,EAAE,GAAG,wBAAA,CAAA;AAC/D;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,0BAA2B,CAAA,GAAG,EAAE,GAAG,0BAAA,CAAA;AACjE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,6BAA8B,CAAA,GAAG,EAAE,GAAG,6BAAA,CAAA;AACpE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,6BAA8B,CAAA,GAAG,EAAE,GAAG,6BAAA,CAAA;AACpE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,4BAA6B,CAAA,GAAG,EAAE,GAAG,4BAAA,CAAA;AACnE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,+BAAgC,CAAA,GAAG,EAAE,GAAG,+BAAA,CAAA;AACtE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,2BAA4B,CAAA,GAAG,EAAE,GAAG,2BAAA,CAAA;AAClE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,8BAA+B,CAAA,GAAG,EAAE,GAAG,8BAAA,CAAA;AACrE;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,8BAA+B,CAAA,GAAG,EAAE,GAAG,8BAAA,CAAA;AACzE,CAAA,EAAGA,cAAAA,KAAmBA,cAAAA,GAAiB,EAAC,CAAA,CAAA,CAAA;AACjC,IAAIC,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;IACjBA,UAAU,CAAC,SAAS,GAAG,QAAA,CAAA;IACvBA,UAAU,CAAC,cAAc,GAAG,aAAA,CAAA;AAChC,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA,CAAA;AACzB,IAAIC,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;IACjBA,UAAU,CAAC,OAAO,GAAG,MAAA,CAAA;IACrBA,UAAU,CAAC,OAAO,GAAG,MAAA,CAAA;IACrBA,UAAU,CAAC,QAAQ,GAAG,OAAA,CAAA;AAC1B,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA;;ACzWhC;;IAGO,IAAMC,oBAAAA,GAAuB,CAAE,CAAA;AACtC;;;IAIO,IAAMC,kBAAAA,GAAqB,CAAE,CAAA;AACpC;;IAGO,IAAMC,oBAAAA,GAAuB,CAAE,CAAA;AACtC;;;IAIO,IAAMC,8BAAAA,GAAiC,CAAE,CAAA;AAChD;;IAGO,IAAMC,mBAAAA,GAAsB,CAAE,CAAA;AACrC;;IAGO,IAAMC,oBAAAA,GAAuB,CAAE,CAAA;AACtC;;IAGO,IAAMC,6BAAAA,GAAgC,CAAE,CAAA;AACxC,IAAMC,4BAA4B,CAAE,CAAA;AACpC,IAAMC,0BAA0B,CAAE,CAAA;AACzC;;IAGO,IAAMC,yBAAAA,GAA4B,CAAE,CAAA;AAC3C;;IAGO,IAAMC,uBAAAA,GAA0B,CAAE;;ACtClC,IAAIC,cAAe,CAAA;AACzB,CAAA,SAAUA,cAAc,EAAA;AACrB;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AACjD;;AAEC,QACDA,cAAc,CAACA,cAAc,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AACtD,CAAA,EAAGA,cAAAA,KAAmBA,cAAAA,GAAiB,EAAC,CAAA,CAAA;;ACXxC,0IAGO,IAAIC,SAAU,CAAA;AACpB,CAAA,SAAUA,SAAS,EAAA;AAChB;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AACvC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,eAAgB,CAAA,GAAG,EAAE,GAAG,eAAA,CAAA;AAC5C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,eAAgB,CAAA,GAAG,EAAE,GAAG,eAAA,CAAA;AAC5C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,eAAgB,CAAA,GAAG,EAAE,GAAG,eAAA,CAAA;AAC5C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACrC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACnC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AACpC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,aAAc,CAAA,GAAG,EAAE,GAAG,aAAA,CAAA;AAC1C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AACzC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,gBAAiB,CAAA,GAAG,EAAE,GAAG,gBAAA,CAAA;AAC7C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,cAAe,CAAA,GAAG,GAAG,GAAG,cAAA,CAAA;AAC5C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,cAAe,CAAA,GAAG,GAAG,GAAG,cAAA,CAAA;AAC5C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,aAAc,CAAA,GAAG,GAAG,GAAG,aAAA,CAAA;AAC3C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,QAAS,CAAA,GAAG,GAAG,GAAG,QAAA,CAAA;AACtC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,QAAS,CAAA,GAAG,GAAG,GAAG,QAAA,CAAA;AACtC;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,cAAe,CAAA,GAAG,GAAG,GAAG,cAAA,CAAA;AAC5C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,mBAAoB,CAAA,GAAG,GAAG,GAAG,mBAAA,CAAA;AACjD;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,mBAAoB,CAAA,GAAG,GAAG,GAAG,mBAAA,CAAA;AACjD;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,aAAc,CAAA,GAAG,GAAG,GAAG,aAAA,CAAA;AAC3C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,eAAgB,CAAA,GAAG,GAAG,GAAG,eAAA,CAAA;AAC7C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,eAAgB,CAAA,GAAG,GAAG,GAAG,eAAA,CAAA;AAC7C;;AAEC,QACDA,SAAS,CAACA,SAAS,CAAC,eAAgB,CAAA,GAAG,GAAG,GAAG,eAAA,CAAA;AACjD,CAAA,EAAGA,SAAAA,KAAcA,SAAAA,GAAY,EAAC,CAAA,CAAA,CAAA;AAC9B;;IAGO,IAAIC,kBAAmB,CAAA;AAC7B,CAAA,SAAUA,kBAAkB,EAAA;AACzBA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACrDA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACrDA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACxDA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AACzDA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACrDA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACrDA,IAAAA,kBAAkB,CAACA,kBAAkB,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AAC7D,CAAA,EAAGA,kBAAAA,KAAuBA,kBAAAA,GAAqB,EAAC,CAAA,CAAA;;ACzGhD;;IAGO,IAAIC,WAAY,CAAA;AACtB,CAAA,SAAUA,WAAW,EAAA;AAClB;;AAEC,QACDA,WAAW,CAACA,WAAW,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AAC1C;;AAEC,QACDA,WAAW,CAACA,WAAW,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AAC1C;;AAEC,QACDA,WAAW,CAACA,WAAW,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AAC1C;;AAEC,QACDA,WAAW,CAACA,WAAW,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AAC7C,CAAA,EAAGA,WAAAA,KAAgBA,WAAAA,GAAc,EAAC,CAAA,CAAA;;ACtBlC;;IAGO,IAAIC,2BAA4B,CAAA;AACtC,CAAA,SAAUA,2BAA2B,EAAA;AAClC;;AAEC,QACDA,2BAA2B,CAACA,2BAA2B,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACvE;;AAEC,QACDA,2BAA2B,CAACA,2BAA2B,CAAC,gBAAiB,CAAA,GAAG,EAAE,GAAG,gBAAA,CAAA;AACrF,CAAA,EAAGA,2BAAAA,KAAgCA,2BAAAA,GAA8B,EAAC,CAAA,CAAA;;ACb3D,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AAC3C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,sBAAuB,CAAA,GAAG,EAAE,GAAG,sBAAA,CAAA;AACzD;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,qBAAsB,CAAA,GAAG,EAAE,GAAG,qBAAA,CAAA;AACxD;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,eAAgB,CAAA,GAAG,EAAE,GAAG,eAAA,CAAA;AACtD,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA;;AClB7B,IAAIC,SAAU,CAAA;AACpB,CAAA,SAAUA,SAAS,EAAA;AAChB;;QAGAA,SAAS,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACrB;;QAGAA,SAAS,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACpB;;QAGAA,SAAS,CAAC,aAAA,CAAc,GAAG,aAAA,CAAA;AAC3B;;QAGAA,SAAS,CAAC,SAAA,CAAU,GAAG,SAAA,CAAA;AAC3B,CAAA,EAAGA,SAAAA,KAAcA,SAAAA,GAAY,EAAC,CAAA,CAAA;;AClBvB,IAAIC,iBAAkB,CAAA;AAC5B,CAAA,SAAUA,iBAAiB,EAAA;AACxBA,IAAAA,iBAAiB,CAACA,iBAAiB,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AAClDA,IAAAA,iBAAiB,CAACA,iBAAiB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACzD,CAAA,EAAGA,iBAAAA,KAAsBA,iBAAAA,GAAoB,EAAC,CAAA,CAAA;;ACJvC,IAAIC,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;IACjBA,UAAU,CAAC,eAAe,GAAG,cAAA,CAAA;IAC7BA,UAAU,CAAC,cAAc,GAAG,aAAA,CAAA;AAChC,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA;;ACJhC;AACO,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;IACnBA,YAAY,CAAC,QAAQ,GAAG,OAAA,CAAA;IACxBA,YAAY,CAAC,MAAM,GAAG,KAAA,CAAA;;IAEtBA,YAAY,CAAC,OAAO,GAAG,MAAA,CAAA;AAC3B,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AACpC;AACO,IAAIC,gBAAiB,CAAA;AAC3B,CAAA,SAAUA,gBAAgB,EAAA;AACvBA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,QAAS,CAAA,GAAG,IAAI,GAAG,QAAA,CAAA;AACrDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,QAAS,CAAA,GAAG,IAAI,GAAG,QAAA,CAAA;AACrDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,aAAc,CAAA,GAAG,IAAI,GAAG,aAAA,CAAA;AAC1DA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,UAAW,CAAA,GAAG,IAAI,GAAG,UAAA,CAAA;AAC3D,CAAA,EAAGA,gBAAAA,KAAqBA,gBAAAA,GAAmB,EAAC,CAAA,CAAA;;ACf5C;;IAGO,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;QAGAA,YAAY,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACvB;;QAGAA,YAAY,CAAC,IAAA,CAAK,GAAG,IAAA,CAAA;AACrB;;QAGAA,YAAY,CAAC,QAAA,CAAS,GAAG,QAAA,CAAA;AACzB;;QAGAA,YAAY,CAAC,WAAA,CAAY,GAAG,WAAA,CAAA;AAC5B;;QAGAA,YAAY,CAAC,OAAA,CAAQ,GAAG,OAAA,CAAA;AACxB;;QAGAA,YAAY,CAAC,UAAA,CAAW,GAAG,UAAA,CAAA;AAC3B;;QAGAA,YAAY,CAAC,WAAA,CAAY,GAAG,WAAA,CAAA;AAC5B;;QAGAA,YAAY,CAAC,IAAA,CAAK,GAAG,IAAA,CAAA;AACrB;;QAGAA,YAAY,CAAC,UAAA,CAAW,GAAG,UAAA,CAAA;AAC3B;;QAGAA,YAAY,CAAC,SAAA,CAAU,GAAG,SAAA,CAAA;AAC9B,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA;;AC7C7B,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AAC5C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AAC5C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACzC;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,UAAW,CAAA,GAAG,EAAE,GAAG,UAAA,CAAA;AACjD,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AAC7B,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AAC9C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AAC/C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAC9C,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AAC7B,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACxC;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AAC3C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AAC/C,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AAC7B,IAAIC,aAAc,CAAA;AACxB,CAAA,SAAUA,aAAa,EAAA;AACpB;;;AAGC,QACDA,aAAa,CAACA,aAAa,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AAC3C;;;AAGC,QACDA,aAAa,CAACA,aAAa,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AAC7C;;;AAGC,QACDA,aAAa,CAACA,aAAa,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAChD,CAAA,EAAGA,aAAAA,KAAkBA,aAAAA,GAAgB,EAAC,CAAA,CAAA,CAAA;AAC/B,IAAIC,iBAAkB,CAAA;AAC5B,CAAA,SAAUA,iBAAiB,EAAA;AACxB;;AAEC,QACDA,iBAAiB,CAACA,iBAAiB,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AAClD;;AAEC,QACDA,iBAAiB,CAACA,iBAAiB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACrD;;AAEC,QACDA,iBAAiB,CAACA,iBAAiB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACzD,CAAA,EAAGA,iBAAAA,KAAsBA,iBAAAA,GAAoB,EAAC,CAAA,CAAA,CAAA;AAC9C;;IAGO,IAAIC,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;AACjB;;QAGAA,UAAU,CAAC,QAAA,CAAS,GAAG,QAAA,CAAA;AACvB;;QAGAA,UAAU,CAAC,MAAA,CAAO,GAAG,MAAA,CAAA;AACrB;;QAGAA,UAAU,CAAC,SAAA,CAAU,GAAG,SAAA,CAAA;AAC5B,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA,CAAA;AAChC;;IAGO,IAAIC,SAAU,CAAA;AACpB,CAAA,SAAUA,SAAS,EAAA;AAChB;;QAGAA,SAAS,CAAC,QAAA,CAAS,GAAG,QAAA,CAAA;AACtB;;QAGAA,SAAS,CAAC,QAAA,CAAS,GAAG,QAAA,CAAA;AACtB;;QAGAA,SAAS,CAAC,SAAA,CAAU,GAAG,SAAA,CAAA;AAC3B,CAAA,EAAGA,SAAAA,KAAcA,SAAAA,GAAY,EAAC,CAAA,CAAA;;ACrHvB,IAAMC,iBAAoB,GAAA;IAC7BC,YAAc,EAAA,kCAAA;IACdC,kBAAoB,EAAA,wCAAA;IACpBC,SAAW,EAAA,kCAAA;IACXC,WAAa,EAAA,kCAAA;AACjB,CAAE;;ACLK,IAAIC,QAAS,CAAA;AACnB,CAAA,SAAUA,QAAQ,EAAA;AACfA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAClCA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,gBAAiB,CAAA,GAAG,EAAE,GAAG,gBAAA,CAAA;AAC3CA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,gBAAiB,CAAA,GAAG,EAAE,GAAG,gBAAA,CAAA;AAC3CA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,iBAAkB,CAAA,GAAG,EAAE,GAAG,iBAAA,CAAA;AAC5CA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACxC,CAAA,EAAGA,QAAAA,KAAaA,QAAAA,GAAW,EAAC,CAAA,CAAA,CAAA;AACrB,IAAIC,uBAAsB,CAAA;AAChC,CAAA,SAAUA,qBAAqB,EAAA;AAC5BA,IAAAA,qBAAqB,CAACA,qBAAqB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AAC3DA,IAAAA,qBAAqB,CAACA,qBAAqB,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AAC1DA,IAAAA,qBAAqB,CAACA,qBAAqB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AAC3DA,IAAAA,qBAAqB,CAACA,qBAAqB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AAC/D,CAAA,EAAGA,uBAAAA,KAA0BA,uBAAAA,GAAwB,EAAC,CAAA,CAAA;;ACdtD;;IAGO,IAAIC,kBAAmB,CAAA;AAC7B,CAAA,SAAUA,kBAAkB,EAAA;AACzB;;AAEC,QACDA,kBAAkB,CAACA,kBAAkB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACvD;;AAEC,QACDA,kBAAkB,CAACA,kBAAkB,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AAC1D;;AAEC,QACDA,kBAAkB,CAACA,kBAAkB,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACxD;;AAEC,QACDA,kBAAkB,CAACA,kBAAkB,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACxD;;AAEC,QACDA,kBAAkB,CAACA,kBAAkB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACzD,CAAA,EAAGA,kBAAAA,KAAuBA,kBAAAA,GAAqB,EAAC,CAAA,CAAA;;ACzBzC,IAAIC,OAAQ,CAAA;AAClB,CAAA,SAAUA,OAAO,EAAA;+BAEdA,OAAO,CAACA,OAAO,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;0BAE/BA,OAAO,CAACA,OAAO,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;2BAEhCA,OAAO,CAACA,OAAO,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACrC,CAAA,EAAGA,OAAAA,KAAYA,OAAAA,GAAU,EAAC,CAAA,CAAA,CAAA;AACnB,IAAIC,QAAS,CAAA;AACnB,CAAA,SAAUA,QAAQ,EAAA;gBAEfA,QAAQ,CAACA,QAAQ,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;gBAElCA,QAAQ,CAACA,QAAQ,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;gBAElCA,QAAQ,CAACA,QAAQ,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AACtC,CAAA,EAAGA,QAAAA,KAAaA,QAAAA,GAAW,EAAC,CAAA,CAAA;;ACjBrB,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;IACnBA,YAAY,CAAC,wBAAwB,GAAG,uBAAA,CAAA;IACxCA,YAAY,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAChCA,YAAY,CAAC,wBAAwB,GAAG,uBAAA,CAAA;IACxCA,YAAY,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACrCA,YAAY,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACvCA,YAAY,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACrCA,YAAY,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAChCA,YAAY,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACrCA,YAAY,CAAC,oBAAoB,GAAG,mBAAA,CAAA;IACpCA,YAAY,CAAC,+BAA+B,GAAG,8BAAA,CAAA;IAC/CA,YAAY,CAAC,gCAAgC,GAAG,+BAAA,CAAA;IAChDA,YAAY,CAAC,kCAAkC,GAAG,iCAAA,CAAA;IAClDA,YAAY,CAAC,cAAc,GAAG,aAAA,CAAA;IAC9BA,YAAY,CAAC,cAAc,GAAG,aAAA,CAAA;IAC9BA,YAAY,CAAC,aAAa,GAAG,YAAA,CAAA;IAC7BA,YAAY,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAChCA,YAAY,CAAC,kBAAkB,GAAG,iBAAA,CAAA;IAClCA,YAAY,CAAC,eAAe,GAAG,cAAA,CAAA;AACnC,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA;;ACpBpC;;;IAIO,IAAIC,cAAe,CAAA;AACzB,CAAA,SAAUA,cAAc,EAAA;IACrBA,cAAc,CAAC,QAAQ,GAAG,OAAA,CAAA;IAC1BA,cAAc,CAAC,QAAQ,GAAG,OAAA,CAAA;AAC9B,CAAA,EAAGA,cAAAA,KAAmBA,cAAAA,GAAiB,EAAC,CAAA,CAAA,CAAA;AACxC;;;IAIO,IAAIC,cAAe,CAAA;AACzB,CAAA,SAAUA,cAAc,EAAA;IACrBA,cAAc,CAAC,QAAQ,GAAG,OAAA,CAAA;IAC1BA,cAAc,CAAC,QAAQ,GAAG,OAAA,CAAA;AAC9B,CAAA,EAAGA,cAAAA,KAAmBA,cAAAA,GAAiB,EAAC,CAAA,CAAA,CAAA;AACjC,IAAIC,cAAe,CAAA;AACzB,CAAA,SAAUA,cAAc,EAAA;IACrBA,cAAc,CAAC,MAAM,GAAG,iBAAA,CAAA;IACxBA,cAAc,CAAC,MAAM,GAAG,iBAAA,CAAA;IACxBA,cAAc,CAAC,MAAM,GAAG,iBAAA,CAAA;IACxBA,cAAc,CAAC,MAAM,GAAG,iBAAA,CAAA;IACxBA,cAAc,CAAC,MAAM,GAAG,iBAAA,CAAA;IACxBA,cAAc,CAAC,OAAO,GAAG,kBAAA,CAAA;IACzBA,cAAc,CAAC,OAAO,GAAG,kBAAA,CAAA;IACzBA,cAAc,CAAC,OAAO,GAAG,kBAAA,CAAA;AAC7B,CAAA,EAAGA,cAAAA,KAAmBA,cAAAA,GAAiB,EAAC,CAAA,CAAA;;AC5BjC,IAAIC,QAAS,CAAA;AACnB,CAAA,SAAUA,QAAQ,EAAA;IACfA,QAAQ,CAAC,cAAc,GAAG,aAAA,CAAA;;IAE1BA,QAAQ,CAAC,WAAW,GAAG,UAAA,CAAA;IACvBA,QAAQ,CAAC,SAAS,GAAG,QAAA,CAAA;IACrBA,QAAQ,CAAC,WAAW,GAAG,UAAA,CAAA;IACvBA,QAAQ,CAAC,UAAU,GAAG,SAAA,CAAA;IACtBA,QAAQ,CAAC,QAAQ,GAAG,OAAA,CAAA;IACpBA,QAAQ,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAC5BA,QAAQ,CAAC,cAAc,GAAG,aAAA,CAAA;;IAE1BA,QAAQ,CAAC,aAAa,GAAG,YAAA,CAAA;IACzBA,QAAQ,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAC5BA,QAAQ,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACjCA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,mBAAmB,GAAG,kBAAA,CAAA;IAC/BA,QAAQ,CAAC,kBAAkB,GAAG,iBAAA,CAAA;IAC9BA,QAAQ,CAAC,sBAAsB,GAAG,qBAAA,CAAA;IAClCA,QAAQ,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACjCA,QAAQ,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACjCA,QAAQ,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACnCA,QAAQ,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACnCA,QAAQ,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACnCA,QAAQ,CAAC,yBAAyB,GAAG,wBAAA,CAAA;IACrCA,QAAQ,CAAC,2BAA2B,GAAG,0BAAA,CAAA;IACvCA,QAAQ,CAAC,0BAA0B,GAAG,yBAAA,CAAA;IACtCA,QAAQ,CAAC,8BAA8B,GAAG,6BAAA,CAAA;IAC1CA,QAAQ,CAAC,6BAA6B,GAAG,4BAAA,CAAA;IACzCA,QAAQ,CAAC,6BAA6B,GAAG,4BAAA,CAAA;IACzCA,QAAQ,CAAC,+BAA+B,GAAG,8BAAA,CAAA;IAC3CA,QAAQ,CAAC,+BAA+B,GAAG,8BAAA,CAAA;IAC3CA,QAAQ,CAAC,+BAA+B,GAAG,8BAAA,CAAA;;IAE3CA,QAAQ,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAC5BA,QAAQ,CAAC,kBAAkB,GAAG,iBAAA,CAAA;IAC9BA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,kBAAkB,GAAG,iBAAA,CAAA;IAC9BA,QAAQ,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACnCA,QAAQ,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAC5BA,QAAQ,CAAC,qBAAqB,GAAG,oBAAA,CAAA;IACjCA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,oBAAoB,GAAG,mBAAA,CAAA;IAChCA,QAAQ,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACnCA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,kBAAkB,GAAG,iBAAA,CAAA;IAC9BA,QAAQ,CAAC,iBAAiB,GAAG,gBAAA,CAAA;IAC7BA,QAAQ,CAAC,oBAAoB,GAAG,mBAAA,CAAA;IAChCA,QAAQ,CAAC,mBAAmB,GAAG,kBAAA,CAAA;IAC/BA,QAAQ,CAAC,oBAAoB,GAAG,mBAAA,CAAA;IAChCA,QAAQ,CAAC,kBAAkB,GAAG,iBAAA,CAAA;IAC9BA,QAAQ,CAAC,gBAAgB,GAAG,eAAA,CAAA;IAC5BA,QAAQ,CAAC,sBAAsB,GAAG,qBAAA,CAAA;IAClCA,QAAQ,CAAC,uBAAuB,GAAG,sBAAA,CAAA;IACnCA,QAAQ,CAAC,eAAe,GAAG,cAAA,CAAA;IAC3BA,QAAQ,CAAC,WAAW,GAAG,UAAA,CAAA;;IAEvBA,QAAQ,CAAC,eAAe,GAAG,cAAA,CAAA;AAC/B,CAAA,EAAGA,QAAAA,KAAaA,QAAAA,GAAW,EAAC,CAAA,CAAA;;AC5DrB,IAAIC,YAAa,CAAA;AACvB,CAAA,SAAUA,YAAY,EAAA;AACnB;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AAC3C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAC1C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AAC9C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AAC/C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,WAAY,CAAA,GAAG,EAAE,GAAG,WAAA,CAAA;AAC9C;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,gBAAiB,CAAA,GAAG,EAAE,GAAG,gBAAA,CAAA;AACnD;;AAEC,QACDA,YAAY,CAACA,YAAY,CAAC,cAAe,CAAA,GAAG,EAAE,GAAG,cAAA,CAAA;AACrD,CAAA,EAAGA,YAAAA,KAAiBA,YAAAA,GAAe,EAAC,CAAA,CAAA,CAAA;AAC7B,IAAIC,gBAAiB,CAAA;AAC3B,CAAA,SAAUA,gBAAgB,EAAA;AACvBA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACpDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,SAAU,CAAA,GAAG,EAAE,GAAG,SAAA,CAAA;AACpDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,MAAO,CAAA,GAAG,EAAE,GAAG,MAAA,CAAA;AACjDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAClDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAClDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAClDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACnDA,IAAAA,gBAAgB,CAACA,gBAAgB,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACvD,CAAA,EAAGA,gBAAAA,KAAqBA,gBAAAA,GAAmB,EAAC,CAAA,CAAA,CAAA;AACrC,IAAIC,eAAgB,CAAA;AAC1B,CAAA,SAAUA,eAAe,EAAA;AACtBA,IAAAA,eAAe,CAACA,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,MAAA,CAAA;AAChDA,IAAAA,eAAe,CAACA,eAAe,CAAC,OAAQ,CAAA,GAAG,EAAE,GAAG,OAAA,CAAA;AAChDA,IAAAA,eAAe,CAACA,eAAe,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACjDA,IAAAA,eAAe,CAACA,eAAe,CAAC,QAAS,CAAA,GAAG,EAAE,GAAG,QAAA,CAAA;AACrD,CAAA,EAAGA,eAAAA,KAAoBA,eAAAA,GAAkB,EAAC,CAAA,CAAA,CAAA;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAIC,oBAAqB,CAAA;AAC/B,CAAA,SAAUA,oBAAoB,EAAA;IAC3BA,oBAAoB,CAAC,WAAW,GAAG,UAAA,CAAA;IACnCA,oBAAoB,CAAC,KAAK,GAAG,WAAA,CAAA;IAC7BA,oBAAoB,CAAC,MAAM,GAAG,WAAA,CAAA;IAC9BA,oBAAoB,CAAC,SAAS,GAAG,QAAA,CAAA;IACjCA,oBAAoB,CAAC,UAAU,GAAG,SAAA,CAAA;IAClCA,oBAAoB,CAAC,QAAQ,GAAG,OAAA,CAAA;IAChCA,oBAAoB,CAAC,SAAS,GAAG,QAAA,CAAA;IACjCA,oBAAoB,CAAC,UAAU,GAAG,SAAA,CAAA;;IAElCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,cAAc,GAAG,cAAA,CAAA;IACtCA,oBAAoB,CAAC,YAAY,GAAG,YAAA,CAAA;IACpCA,oBAAoB,CAAC,YAAY,GAAG,YAAA,CAAA;IACpCA,oBAAoB,CAAC,YAAY,GAAG,YAAA,CAAA;IACpCA,oBAAoB,CAAC,YAAY,GAAG,YAAA,CAAA;IACpCA,oBAAoB,CAAC,aAAa,GAAG,aAAA,CAAA;IACrCA,oBAAoB,CAAC,aAAa,GAAG,aAAA,CAAA;IACrCA,oBAAoB,CAAC,aAAa,GAAG,aAAA,CAAA;IACrCA,oBAAoB,CAAC,aAAa,GAAG,aAAA,CAAA;AACzC,CAAA,EAAGA,oBAAAA,KAAyBA,oBAAAA,GAAuB,EAAC,CAAA,CAAA;;AC9C7C,IAAMC,cAAAA,GAAiB/D,gBAAiBgE,CAAAA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CrD,SAASC,oBAAAA,CAAqB5Z,GAAG,EAAE6Z,GAAG,EAAA;IAClC,IAAIA,GAAAA,IAAO,QAAQA,GAAM7Z,GAAAA,GAAAA,CAAInD,MAAM,EAAEgd,GAAAA,GAAM7Z,IAAInD,MAAM,CAAA;AAErD,IAAA,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAG0c,IAAO,GAAA,IAAIjV,MAAMgV,GAAMzc,CAAAA,EAAAA,CAAAA,GAAIyc,GAAKzc,EAAAA,CAAAA,EAAAA,CAAK0c,IAAI,CAAC1c,CAAAA,CAAE,GAAG4C,GAAG,CAAC5C,CAAE,CAAA,CAAA;IAErE,OAAO0c,IAAAA,CAAAA;AACX;;ACJA,SAASC,8BAAAA,CAA+B7E,CAAC,EAAE8E,MAAM,EAAA;AAC7C,IAAA,IAAI,CAAC9E,CAAG,EAAA,OAAA;AACR,IAAA,IAAI,OAAOA,CAAAA,KAAM,QAAU,EAAA,OAAO0E,qBAAqB1E,CAAG8E,EAAAA,MAAAA,CAAAA,CAAAA;AAE1D,IAAA,IAAIxb,CAAIzB,GAAAA,MAAAA,CAAOqB,SAAS,CAACyB,QAAQ,CAAChB,IAAI,CAACqW,CAAGpV,CAAAA,CAAAA,KAAK,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;IAEpD,IAAItB,CAAAA,KAAM,YAAY0W,CAAE3Y,CAAAA,WAAW,EAAEiC,CAAI0W,GAAAA,CAAAA,CAAE3Y,WAAW,CAAC8C,IAAI,CAAA;AAC3D,IAAA,IAAIb,MAAM,KAASA,IAAAA,CAAAA,KAAM,OAAO,OAAOqG,KAAAA,CAAMoV,IAAI,CAACzb,CAAAA,CAAAA,CAAAA;IAClD,IAAIA,CAAAA,KAAM,eAAe,0CAA2C0N,CAAAA,IAAI,CAAC1N,CAAI,CAAA,EAAA,OAAOob,qBAAqB1E,CAAG8E,EAAAA,MAAAA,CAAAA,CAAAA;AAChH;;ACTA,SAASE,oCAAAA,CAAqChF,CAAC,EAAEiF,cAAc,EAAA;AAC3D,IAAA,IAAIC,EAAK,GAAA,OAAOje,MAAW,KAAA,WAAA,IAAe+Y,CAAC,CAAC/Y,MAAOoC,CAAAA,QAAQ,CAAC,IAAI2W,CAAC,CAAC,YAAa,CAAA,CAAA;AAE/E,IAAA,IAAIkF,EAAI,EAAA,OAAO,CAACA,EAAKA,GAAAA,EAAAA,CAAGvb,IAAI,CAACqW,CAAC,CAAA,EAAG7W,IAAI,CAACsB,IAAI,CAACya,EAAAA,CAAAA,CAAAA;;AAE3C,IAAA,IAAIvV,KAAMkM,CAAAA,OAAO,CAACmE,CAAAA,CAAAA,KAAOkF,EAAKL,GAAAA,8BAAAA,CAA+B7E,CAAC,CAAA,CAAA,IAAMiF,kBAAkBjF,CAAK,IAAA,OAAOA,CAAErY,CAAAA,MAAM,KAAK,QAAU,EAAA;AACrH,QAAA,IAAIud,IAAIlF,CAAIkF,GAAAA,EAAAA,CAAAA;AAEZ,QAAA,IAAIhd,CAAI,GAAA,CAAA,CAAA;QAER,OAAO,WAAA;AACH,YAAA,IAAIA,CAAK8X,IAAAA,CAAAA,CAAErY,MAAM,EAAE,OAAO;gBAAExB,IAAM,EAAA,IAAA;AAAK,aAAA,CAAA;YAEvC,OAAO;gBAAEA,IAAM,EAAA,KAAA;gBAAOF,KAAO+Z,EAAAA,CAAC,CAAC9X,CAAI,EAAA,CAAA;AAAC,aAAA,CAAA;AACxC,SAAA,CAAA;AACJ,KAAA;AAEA,IAAA,MAAM,IAAIwB,SAAU,CAAA,uIAAA,CAAA,CAAA;AACxB;;ACfA,IAAMyb,wBAAqD,IAAIC,GAAAA,EAAAA,CAAAA;AAC/D,IAAMC,cAA2C,IAAID,GAAAA,EAAAA,CAAAA;AAE9C,IAAME,iBAAyC,GAAA,GAAG;AAElD,SAASC,SAAUC,SAAiB,EAAA;IACzC,OAAOF,iBAAiB,CAACE,SAAU,CAAA,CAAA;AACrC,CAAA;AAEO,SAASC,aAAcD,SAAiB,EAAA;AAC7C,IAAA,OAAO,SAAChe,MAAgBke,EAAAA,OAAAA,EAAAA;QACtB,IAAIJ,iBAAiB,CAACE,SAAAA,CAAU,EAAE;AAChChW,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,QAAC,GAAQiK,SAAU,GAAA,yBAAA,CAAA,CAAA;AAClC,SAAA;;QAEAF,iBAAiB,CAACE,UAAU,GAAGhe,MAAAA,CAAAA;AACjC,KAAA,CAAA;AACF,CAAA;AAEO,SAASme,SAAAA,CAAW/H,IAAkB,EAAEgI,UAAmB,EAAA;IAChE,OAAOC,0BAAAA,CAA2BjI,IAAMgI,EAAAA,UAAAA,CAAAA,CAAAA;AAC1C,CAAA;AAEO,SAASE,eAAgBte,MAAc,EAAA;IAC5C,IAAMue,QAAAA,GAAWve,OAAOH,WAAW,CAAA;IAEnC,IAAIge,WAAAA,CAAYW,GAAG,CAACD,QAAW,CAAA,EAAA;QAC7B,OAAOV,WAAAA,CAAYW,GAAG,CAACD,QAAAA,CAAAA,CAAAA;AACzB,KAAA;AAEA,IAAA,IAAME,QAAqD,EAAC,CAAA;IAE5DZ,WAAYnY,CAAAA,GAAG,CAAC6Y,QAAUE,EAAAA,KAAAA,CAAAA,CAAAA;AAE1B,IAAA,IAAIC,aAAgB1e,GAAAA,MAAAA,CAAAA;AACpB,IAAA,IAAI2e,UAAaJ,GAAAA,QAAAA,CAAAA;AAEjB,IAAA,MAAOI,UAAY,CAAA;QACjB,IAAMC,YAAAA,GAAejB,qBAAsBa,CAAAA,GAAG,CAACG,UAAAA,CAAAA,CAAAA;QAE/C,IAAK,IAAMpa,YAAYqa,YAAc,CAAA;AACnCH,YAAAA,KAAK,CAACla,QAAAA,CAAS,GAAGqa,YAAY,CAACra,QAAS,CAAA,CAAA;AAC1C,SAAA;QAEA,IAAMsa,MAAAA,GAASxe,MAAOoU,CAAAA,cAAc,CAACiK,aAAAA,CAAAA,CAAAA;AAErCC,QAAAA,UAAAA,GAAate,MAAOoU,CAAAA,cAAc,CAACoK,MAAAA,CAAAA,CAAQhf,WAAW,CAAA;AACtD,QAAA,IAAI8e,eAAete,MAAQ,EAAA;AACzB,YAAA,MAAA;AACF,SAAA;QACAqe,aAAgBG,GAAAA,MAAAA,CAAAA;AAClB,KAAA;IAEA,OAAOJ,KAAAA,CAAAA;AACT,CAAA;AAEA,SAASJ,0BAAAA,CAA4BjI,IAAkB,EAAEgI,UAAmB,EAAA;AAC1E,IAAA,OAAO,SAACpe,MAAgB8e,EAAAA,WAAAA,EAAAA;AACtB,QAAA,IAAMC,aAAaC,cAAehf,CAAAA,MAAAA,CAAAA,CAAAA;AAElC,QAAA,IAAI,CAAC+e,UAAY,EAAA;AACf,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACA,UAAU,CAACD,WAAAA,CAAY,EAAE;YAC5BC,UAAU,CAACD,YAAY,GAAG;gBAAE1I,IAAAA,EAAAA,IAAAA;gBAAMgI,UAAAA,EAAAA,UAAAA;AAAW,aAAA,CAAA;AAC/C,SAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,SAASY,eAAgBhf,MAAc,EAAA;IACrC,IAAMue,QAAAA,GAAWve,OAAOH,WAAW,CAAA;AAEnC,IAAA,IAAI,CAAC8d,qBAAAA,CAAsBa,GAAG,CAACD,QAAW,CAAA,EAAA;QACxCZ,qBAAsBjY,CAAAA,GAAG,CAAC6Y,QAAAA,EAAU,EAAC,CAAA,CAAA;AACvC,KAAA;IAEA,OAAOZ,qBAAAA,CAAsBa,GAAG,CAACD,QAAAA,CAAAA,CAAAA;AACnC;;AC9EA;;AAEC,IACM,IAAA,aAAeU,iBAAV,WAAL;AAAeA,IAAAA,SAAAA,aAAAA,CAqBlB,MAAqB,EAAA;aAAd9G,MAAAA,GAAAA,MAAAA,CAAAA;QAEP,IAAI,CAAC+G,IAAI,GAAG9J,YAAAA,EAAAA,CAAAA;QACZ,IAAI,CAAC+J,UAAU,GAAG,EAAC,CAAA;AACnB,QAAA,IAAI,CAAChH,MAAM,CAACiH,WAAW,CAAC,IAAI,CAAA,CAAA;;AAzBVH,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AA4BpB;;;MAIAI,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACE,OAAO,IAAI,CAACH,IAAI,CAAA;AAClB,KAAA,CAAA;AAEA;;;AAGC,MACDI,MAAAA,CAAAA,aAIC,GAJDA,SAAAA,cAAeJ,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC/G,MAAM,CAACoH,cAAc,CAAC,IAAI,CAACL,IAAI,CAAA,CAAA;QACpC,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AACZ,QAAA,IAAI,CAAC/G,MAAM,CAACiH,WAAW,CAAC,IAAI,CAAA,CAAA;AAC9B,KAAA,CAAA;AAEA;;AAEC,MACDI,MAAAA,CAAAA,MAAa,GAAbA,SAAAA,MAAY,GAAA,EAAA,CAAA;AAEZ;;;;AAIC,MACDC,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,SAAUnN,IAA4B,EAAA;QACpC,IAAIA,IAAAA,CAAKoN,EAAE,KAAKrgB,SAAW,EAAA;AACzB,YAAA,IAAI,CAACigB,aAAa,CAAChN,IAAAA,CAAKoN,EAAE,CAAA,CAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAACxH,MAAM,CAACoH,cAAc,CAAC,IAAI,CAACL,IAAI,CAAA,CAAA;AACtC,KAAA,CAAA;AAlEA;;;;AAIC,MACD,aAAOU,CAAAA,EAEN,GAFD,SAAOA,GAAIhgB,GAAY,EAAA;AACrB,QAAA,OAAOA,YAPWqf,CAOXrf,GAPWqf,EAAAA,aAAAA,CAAAA,IAOqB,MAAUrf,IAAAA,GAAAA,CAAAA;AACnD,KAAA,CAAA;AARoBqf,IAAAA,OAAAA,aAAAA,CAAAA;AAoErB,CAAA;;ACzEM,IAAA,YAAMY,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;AACXC,QAAAA,IAAAA,CAAAA,SAAAA,GAA6B,EAAE,CAAA;;AADpBD,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAGXE,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAa7b,KAAa,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC4b,SAAS,CAAC5b,KAAM,CAAA,CAAA;AAC9B,KAAA,CAAA;AALW2b,IAAAA,OAAAA,YAAAA,CAAAA;AAMZ,CAAA,EAAA;;ACND,IAAMG,qBAA0C,EAAC,CAAA;AAE1C,SAASC,cAAejC,SAAiB,EAAA;AAC9C,IAAA,OAAO,SAAChe,MAAgBke,EAAAA,OAAAA,EAAAA;QACtB,IAAI8B,kBAAkB,CAAChC,SAAAA,CAAU,EAAE;AACjChW,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,iBAAC,GAAiBiK,SAAU,GAAA,yBAAA,CAAA,CAAA;AAC3C,SAAA;QACAgC,kBAAkB,CAAChC,UAAU,GAAGhe,MAAAA,CAAAA;AAClC,KAAA,CAAA;AACF,CAAA;AAEO,SAASkgB,iBAAqBlC,SAAiB,EAAA;IACpD,OAAOgC,kBAAkB,CAAChC,SAAU,CAAA,CAAA;AACtC;;ACXO,IAAMmC,YAAe,GAAA,CAAC,EAAE;AAExB,IAAA,SAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,SAAAA,GAAAA;aAMHC,mBAAsB,GAAA,CAAA,CAAA;AACtBC,QAAAA,IAAAA,CAAAA,YAAAA,GAAe,CAAC,CAAA,CAAA;;AAPbF,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IAYXG,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OAAO,IAAI,CAACC,KAAK,CAAA;AACnB,KAAA,CAAA;IAEAC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACE,OAAO,IAAA,CAAA;AACT,KAAA,CAAA;IAEAC,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACE,OAAO,IAAI,CAACL,mBAAmB,GAAG,CAAA,CAAA;AACpC,KAAA,CAAA;AAEAM,IAAAA,MAAAA,CAAAA,UAMC,GANDA,SAAAA,UAAAA,CAAYzC,OAAqB,EAAA;QAC/B,IAAI,IAAI,CAACwC,aAAa,EAAI,EAAA;AACxB,YAAA,IAAI,CAACL,mBAAmB,EAAA,CAAA;SACnB,MAAA;YACL,IAAI,CAACO,kBAAkB,CAAC1C,OAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD2C,MAAAA,CAAAA,QAQC,GARDA,SAAAA,SAAU3C,OAAqB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAACwC,aAAa,EAAI,EAAA;AACzB,YAAA,MAAM,IAAIhe,KAAM,CAAA,uBAAA,CAAA,CAAA;AAClB,SAAA;AAEA,QAAA,IAAI,EAAE,IAAI,CAAC2d,mBAAmB,KAAK,CAAG,EAAA;YACpC,IAAI,CAACS,gBAAgB,CAAC5C,OAAAA,CAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAEA6C,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAcC,QAAgB,EAAA;QAC5B,OAAO,IAAI,CAACV,YAAY,KAAKU,QAAAA,CAAAA;AAC/B,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAW/C,OAAqB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC6C,YAAY,CAAC7C,QAAQ8C,QAAQ,CAAA,CAAA;AAC3C,KAAA,CAAA;AAEA;;AAEC,MACDE,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,eAAgBhD,OAAqB,EAAA;AACnC,QAAA,IAAI,CAACoC,YAAY,GAAGpC,OAAAA,CAAQ8C,QAAQ,CAAA;AACtC,KAAA,CAAA;AAEA;;AAEC,MACD,MAAUJ,CAAAA,kBAET,GAFD,SAAUA,mBAAoB1C,OAAqB,EAAA;AACjD,QAAA,IAAI,CAACmC,mBAAmB,EAAA,CAAA;AAC1B,KAAA,CAAA;AAEA;;AAEC,MACD,MAAUS,CAAAA,gBAKT,GALD,SAAUA,iBAAkB5C,OAAqB,EAAA;QAC/C,IAAI,IAAI,CAACwC,aAAa,EAAI,EAAA;AACxB,YAAA,MAAM,IAAIhe,KAAM,CAAA,yBAAA,CAAA,CAAA;AAClB,SAAA;QACA,IAAI,CAAC4d,YAAY,GAAG,CAAC,CAAA,CAAA;AACvB,KAAA,CAAA;AA3EWF,IAAAA,OAAAA,SAAAA,CAAAA;AA4EZ,CAAA,GAAA;AAEM,IAAA,aAAee,iBAAV,WAAL;AAAeA,IAAAA,SAAAA,aAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAKpBC,IAAAA,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,IAAAA,CAAM9O,IAAwB,EAAA;AAC5B,QAAA,IAAI,CAACpO,KAAK,GAAGoO,IAAAA,CAAKpO,KAAK,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAUmd,UAOT,GAPD,SAAUA,UAAiCC,CAAAA,QAAqB,EAAEpD,OAA6B,EAAA;AAC7F,QAAA,IAAMqD,OAAO,IAAID,QAAAA,EAAAA,CAAAA;AAEjBpD,QAAAA,OAAAA,CAAQsD,KAAK,CAAC,IAAI,CAACtd,KAAK,CAAC,GAAGqd,IAAAA,CAAAA;QAC5BA,IAAKf,CAAAA,KAAK,GAAG,IAAI,CAAA;QAEjB,OAAOe,IAAAA,CAAAA;AACT,KAAA,CAAA;AAhBoBJ,IAAAA,OAAAA,aAAAA,CAAAA;AAiBrB,CAAA,GAAA;AAQM,IAAA,QAAeM,iBAAV,SAAL,SAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,GAAAA;;;cACVC,QAAmB,GAAA,CAAA,CAAA;cACnBC,YAAuB,GAAA,CAAA,CAAA;cACvBC,WAAsB,GAAA,CAAA,CAAA;;;AAHZH,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AAKpB;;MAGAI,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAACD,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;MAGAE,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,GAAAA;QACE,OAAO,IAAI,CAACH,YAAY,CAAA;AAC1B,KAAA,CAAA;AAEA;;MAGAI,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OAAO,IAAI,CAACL,QAAQ,CAAA;AACtB,KAAA,CAAA;IAEAM,MAAAA,CAAAA,YAQC,GARDA,SAAAA,YAAAA,GAAAA;AACE,QAAA,IAAMxjB,IAA0B,GAAA;YAC9BkjB,QAAU,EAAA,IAAI,CAACA,QAAQ;YACvBE,WAAc,EAAA,IAAI,CAACA,WAAW;YAC9BD,YAAc,EAAA,IAAI,CAACA,YAAY;AACjC,SAAA,CAAA;QAEA,OAAOnjB,IAAAA,CAAAA;AACT,KAAA,CAAA;AAIA,IAAA,MAAA,CAAmBoiB,kBASlB,GATD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,SAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;;QAGzB,IAAI,CAACyD,YAAY,GAAG,CAAA,CAAA;AACpB,QAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAACD,YAAY,CAAA;;QAGpC,IAAI,CAACD,QAAQ,GAAG,CAAA,CAAA;AAClB,KAAA,CAAA;AA/CoBD,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBrB,SAgDtC,EAAA;AAEM,IAAA,SAAe6B,iBAAV,SAAL,SAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAEpBC,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAAazjB,KAAQ,EAAA;;AAErB,KAAA,CAAA;AAJoBwjB,IAAAA,OAAAA,SAAAA,CAAAA;EAAkB7B,SAOvC,EAAA;AAEM,IAAA,cAAe+B,iBAAV,SAAL,SAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBF,SAE5C,EAAA;AAEM,IAAA,aAAeG,iBAAV,SAAL,SAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBH,SAE3C;;ACrKM,IAAA,mBAAMI,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,GAAAA;;;AACXC,QAAAA,KAAAA,CAAAA,SAAAA,GAA6B,EAAE,CAAA;AAC/BC,QAAAA,KAAAA,CAAAA,YAAAA,GAAe,IAAI1C,YAAAA,EAAAA,CAAAA;AACnB2C,QAAAA,KAAAA,CAAAA,mBAAAA,GAAgC,EAAE,CAAA;AAClCC,QAAAA,KAAAA,CAAAA,kBAAAA,GAAqB,IAAI7E,GAAAA,EAAAA,CAAAA;cACzB8E,aAAgBvC,GAAAA,YAAAA,CAAAA;;;AALLkC,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAiBX,IAAA,MAAA,CAAS5C,QAiCR,GAjCD,SAASA,QAAAA,CAAUnN,IAAkC,EAAA;AACnD,QAAA,IAAMqQ,cAAiBrQ,GAAAA,IAAAA,CAAAA;QACvB,IAAMgQ,SAAAA,GAAYK,eAAeL,SAAS,CAAA;AAE1C,QAAA,IAAI,CAACI,aAAa,GAAGC,cAAAA,CAAeD,aAAa,CAAA;AACjD,QAAA,IAAI,CAACF,mBAAmB,GAAGG,cAAAA,CAAeH,mBAAmB,CAAA;;;AAI7D,QAAA,IAAMI,oBAAuBD,GAAAA,cAAAA,CAAeH,mBAAmB,CAACriB,MAAM,CAAA;AAEtE,QAAA,IAAK,IAAIO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIkiB,sBAAsBliB,CAAK,EAAA,CAAA;YAC7C,IAAI,CAAC+hB,kBAAkB,CAAC/c,GAAG,CAACid,cAAeH,CAAAA,mBAAmB,CAAC9hB,CAAAA,CAAE,EAAEA,CAAAA,CAAAA,CAAAA;AACrE,SAAA;;;QAIA,IAAI,CAAC4hB,SAAS,GAAG,EAAE,CAAA;AAEnB,QAAA,IAAK,IAAI5hB,EAAI,GAAA,CAAA,EAAGA,KAAI4hB,SAAUniB,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;AACzC,YAAA,IAAI,CAAC4hB,SAAS,CAAC5hB,EAAAA,CAAE,GArCV2hB,mBAqCiCQ,CAAAA,cAAc,CAACP,SAAS,CAAC5hB,EAAAA,CAAE,CAAC0V,IAAI,CAAA,CAAA;YACxE,IAAI,CAACkM,SAAS,CAAC5hB,EAAAA,CAAE,CAAC0gB,IAAI,CAACkB,SAAS,CAAC5hB,EAAE,CAAA,CAAA,CAAA;AACrC,SAAA;;;QAIA,IAAI,CAAC6hB,YAAY,GAAG,IAAI1C,YAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAI,CAAC0C,YAAY,CAACzC,SAAS,GAAG,EAAE,CAAA;AAChC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAgC6C,cAAeJ,CAAAA,YAAY,CAACzC,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5DgD,YAAAA,IAAAA,iBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMC,gBAAgB,IAAI,CAAC5K,MAAM,CAAC6K,UAAU,CAAgBF,iBAAAA,CAAAA,CAAAA;AAE5D,YAAA,IAAI,CAACP,YAAY,CAACzC,SAAS,CAACzd,IAAI,CAAC0gB,aAAAA,CAAAA,CAAAA;AACnC,SAAA;AACF,KAAA,CAAA;AAlDWV,IAAAA,mBAAAA,CAOJQ,cAQN,GARD,SAAOA,cAAAA,CAAgBzM,IAAuB,EAAA;AAC5C,QAAA,IAAM6M,mBAAmB/C,gBAAgC9J,CAAAA,IAAAA,CAAAA,CAAAA;AAEzD,QAAA,IAAI6M,gBAAkB,EAAA;AACpB,YAAA,OAAO,IAAIA,gBAAAA,EAAAA,CAAAA;SACN,MAAA;AACL,YAAA,MAAM,IAAIvgB,KAAAA,CAAM,qBAAC,GAAqB0T,IAAK,GAAA,GAAA,CAAA,CAAA;AAC7C,SAAA;AACF,KAAA,CAAA;AAfWiM,IAAAA,OAAAA,mBAAAA,CAAAA;EAA4BpD,aAmDxC,EAAA;AAnDYoD,mBAAAA,GAAAA,UAAAA,CAAAA;IADZpE,YAAa,CAAA,qBAAA,CAAA;AACDoE,CAAAA,EAAAA,mBAAAA,CAAAA;;;ACJDa,CAAAA,SAAAA,WAAAA,EAAAA;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKL,IAAA,YAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;aACXC,SAAY,GAAA,CAAA,CAAA;aACZpC,QAAW,GAAA,CAAA,CAAA;AAEXqC,QAAAA,IAAAA,CAAAA,WAAAA,GAAAA,CAAAA,CAAAA;;AAJWF,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAMXG,IAAAA,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,CAAQF,SAAiB,EAAA;QACvB,IAAI,CAACA,SAAS,GAAGA,SAAAA,CAAAA;AACjB,QAAA,IAAI,CAACpC,QAAQ,EAAA,CAAA;AACb,QAAA,IAAI,CAACqC,WAAW,GAAA,CAAA,CAAA;AAClB,KAAA,CAAA;AAVWF,IAAAA,OAAAA,YAAAA,CAAAA;AAWZ,CAAA,EAAA,CAAA;AAEM,IAAA,oBAAMI,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,oBAAAA,GAAAA;AACXjB,QAAAA,IAAAA,CAAAA,SAAAA,GAA6B,EAAE,CAAA;AAC/Bd,QAAAA,IAAAA,CAAAA,KAAAA,GAAqB,EAAE,CAAA;;AAFZ+B,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;AAKXC,IAAAA,MAAAA,CAAAA,OAUC,GAVDA,SAAAA,OAAAA,CAA8Btf,KAAa,EAAA;AACzC,QAAA,IAAI,IAAI,CAACsd,KAAK,CAACtd,MAAM,EAAE;AACrB,YAAA,OAAO,IAAI,CAACsd,KAAK,CAACtd,KAAM,CAAA,CAAA;AAC1B,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACoe,SAAS,CAACpe,MAAM,EAAE;YAC1B,OAAO,IAAA,CAAA;AACT,SAAA;AACA,QAAA,IAAI,CAACoe,SAAS,CAACpe,MAAM,CAACuf,WAAW,CAAC,IAAI,CAAA,CAAA;AAEtC,QAAA,OAAO,IAAI,CAACjC,KAAK,CAACtd,KAAM,CAAA,CAAA;AAC1B,KAAA,CAAA;AAfWqf,IAAAA,OAAAA,oBAAAA,CAAAA;AAgBZ,CAAA,EAAA;;ACvCD,SAASG,QAAAA,GAAAA;AACLA,IAAAA,QAAAA,GAAWrjB,MAAOsjB,CAAAA,MAAM,IAAI,SAASA,OAAO3jB,MAAM,EAAA;AAC9C,QAAA,IAAK,IAAIU,CAAI,GAAA,CAAA,EAAGA,IAAIxB,SAAUiB,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACvC,IAAIkjB,MAAAA,GAAS1kB,SAAS,CAACwB,CAAE,CAAA,CAAA;AACzB,YAAA,IAAK,IAAIpC,GAAOslB,IAAAA,MAAAA,CAAQ,IAAIvjB,MAAOqB,CAAAA,SAAS,CAACiT,cAAc,CAACxS,IAAI,CAACyhB,MAAAA,EAAQtlB,MAAM0B,MAAM,CAAC1B,IAAI,GAAGslB,MAAM,CAACtlB,GAAI,CAAA,CAAA;AAC5G,SAAA;QAEA,OAAO0B,MAAAA,CAAAA;AACX,KAAA,CAAA;AAEA,IAAA,OAAO0jB,QAASvkB,CAAAA,KAAK,CAAC,IAAI,EAAED,SAAAA,CAAAA,CAAAA;AAChC;;ACAO,IAAA,qBAAM2kB,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,qBAAAA,GAAAA;;;cACXC,QAAW,GAAA,GAAA,CAAA;cACXC,aAAgB,GAAA,IAAA,CAAA;AAChBC,QAAAA,KAAAA,CAAAA,aAAAA,GAAgB,CAAC,CAAA,CAAA;;;AAHNH,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASJ,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAAC4C,iBAAmB/F,EAAAA,OAAAA,CAAAA,CAAAA;QAEhDqD,IAAK2C,CAAAA,SAAS,GAAGhG,OAAQiG,CAAAA,OAAO,CAACpE,WAAW,CAAC,IAAI,CAACiE,aAAa,CAAA,CAAA;AACjE,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS5C,IAYR,GAZD,SAASA,IAAAA,CAAM9O,IAAgC,EAAA;AAC7C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEX,QAAA,IAAM8R,QAAW,GAAA,QAAA,CAAA;YACfN,QAAU,EAAA,GAAA;YACVC,aAAe,EAAA,IAAA;AACZzR,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAGL,QAAA,IAAI,CAAC0R,aAAa,GAAG1R,IAAAA,CAAK0R,aAAa,CAAA;AACvC,QAAA,IAAI,CAACF,QAAQ,GAAGM,QAAAA,CAASN,QAAQ,CAAA;AACjC,QAAA,IAAI,CAACC,aAAa,GAAGK,QAAAA,CAASL,aAAa,CAAA;AAC7C,KAAA,CAAA;AAvBWF,IAAAA,OAAAA,qBAAAA,CAAAA;EAA8B1C,aAwB1C,EAAA;AAxBY0C,qBAAAA,GAAAA,UAAAA,CAAAA;IADZ5D,aAAcoE,CAAAA,YAAiB,CAACR,qBAAqB,CAAA;AACzCA,CAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AA0BN,IAAA,iBAAMI,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;cACXC,SAAkC,GAAA,IAAA,CAAA;cAE1BI,UAAgC,GAAA,IAAA,CAAA;;;AAH7BL,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASM,QAyBR,GAzBD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,CAACF,UAAU,EAAE;YACpB,OAAOE,MAAAA,CAAAA;AACT,SAAA;QAEA,IAAI,CAACtD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;QAEpB,IAAMuG,QAAAA,GAAW,IAAI,CAAClE,WAAW,EAAA,CAAA;AAEjC,QAAA,IAAI,CAACoB,YAAY,GAAG,IAAI,CAACC,WAAW,CAAA;AACpC,QAAA,IAAI,CAACA,WAAW,GAAG,IAAI,CAACD,YAAY,GAAGzD,OAAQkF,CAAAA,SAAS,GAAG,IAAI,CAAC1B,QAAQ,GAAG+C,SAASX,QAAQ,CAAA;QAE5F,IAAI,CAACW,QAASV,CAAAA,aAAa,EAAE;YAC3B,IAAI,CAACnC,WAAW,GAAG5a,OAAAA,CAAM,IAAI,CAAC4a,WAAW,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;SACzC,MAAA;AACL,YAAA,IAAI,IAAI,CAACA,WAAW,GAAG,CAAG,EAAA;AACxB,gBAAA,IAAI,CAACA,WAAW,GAAG,IAAI,CAACA,WAAW,GAAG,CAAA,CAAA;AACxC,aAAA;AACF,SAAA;AAEA,QAAA,IAAMhS,OAAO,IAAI,CAACgS,WAAW,GAAG,IAAI,CAACF,QAAQ,CAAA;AAE7C,QAAA,IAAI,CAAC4C,UAAU,CAACI,OAAO,CAAC9U,IAAAA,EAAM4U,OAAOG,IAAI,CAAA,CAAA;QAEzC,OAAOH,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB5D,kBAQlB,GARD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAE1C,QAAA,IAAA,eAAA,CAAA;AADhB,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACT,QAAA,IAAA,wBAAA,CAAA;AAAhB,QAAA,IAAI,CAACwD,QAAQ,GAAG,CAAA,wBAAA,GAAA,CAAA,eAAA,GAAA,IAAI,CAACwC,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd,eAAgBxC,CAAAA,QAAQ,YAAxB,wBAA4B,GAAA,CAAA,CAAA;AAC5C,QAAA,IAAI,CAACC,YAAY,GAAG,IAAI,CAACC,WAAW,GAAG,CAAA,CAAA;QAEvC,IAAI,IAAI,CAACsC,SAAS,EAAE;YAClB,IAAI,CAACI,UAAU,GAAG,IAAIM,UAAAA,CAAW1G,QAAQ2G,QAAQ,EAAE,IAAI,CAACX,SAAS,CAAA,CAAA;AACnE,SAAA;AACF,KAAA,CAAA;AAxCWD,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BxC,QAyCtC,EAAA;;AAEIqD,CAAAA,SAAAA,kBAAAA,EAAAA;;;;;GAAAA,kBAAAA,KAAAA,kBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAuBE,IAAA,UAAMF,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,CAOT,QAA0B,EAClB7B,aAA4B,EAAA;aAD5B8B,QAAAA,GAAAA,QAAAA,CAAAA;aACA9B,aAAAA,GAAAA,aAAAA,CAAAA;AAPFgC,QAAAA,IAAAA,CAAAA,mBAAAA,GAA4C,EAAE,CAAA;AAE9CC,QAAAA,IAAAA,CAAAA,eAAAA,GAAoC,EAAE,CAAA;AACtCC,QAAAA,IAAAA,CAAAA,eAAAA,GAAoC,EAAE,CAAA;QAM5C,IAAoBlC,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcmC,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvCC,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACC,qBAAqB,CAACD,KAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAoBpC,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcsC,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApCF,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACC,qBAAqB,CAACD,MAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAoBpC,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcuC,cAAc,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAvCH,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACC,qBAAqB,CAACD,MAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAoBpC,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcwC,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApCJ,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACC,qBAAqB,CAACD,MAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAoBpC,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcyC,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApCL,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACM,iBAAiB,CAACN,MAAAA,CAAAA,CAAAA;AACzB,SAAA;QACA,IAAoBpC,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAc2C,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApCP,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACQ,iBAAiB,CAACR,MAAAA,CAAAA,CAAAA;AACzB,SAAA;;AA3BSP,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AA8BXF,IAAAA,MAAAA,CAAAA,OAsCC,GAtCDA,SAAAA,OAAS9U,CAAAA,IAAY,EAAEgW,OAAa,EAAA;QAClC,IAAMC,IAAAA,GAAO7e,QAAM4I,IAAM,EAAA,CAAA,EAAG,IAAI,CAACmT,aAAa,CAACrB,QAAQ,CAAA,CAAA;QAEvD,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACqD,mBAAmB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvCe,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMC,aAAaD,SAAUX,CAAAA,KAAK,CAACa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACtD,YAAA,IAAMK,eAAeN,OAAQO,CAAAA,qBAAqB,CAACL,SAAAA,CAAUM,SAAS,CAAC,CAAA;AAEvE,YAAA,OAAQN,UAAU1P,IAAI;AACpB,gBAAA,KAAA,CAAA;oBACE8P,YAAaG,CAAAA,QAAQ,CAACze,QAAQ,CAACme,UAAAA,CAAAA,CAAAA;AAE/B,oBAAA,MAAA;AACF,gBAAA,KAAA,CAAA;oBACEG,YAAaxd,CAAAA,KAAK,CAACd,QAAQ,CAACme,UAAAA,CAAAA,CAAAA;AAE5B,oBAAA,MAAA;AACF,gBAAA,KAAA,CAAA;oBACEG,YAAaI,CAAAA,QAAQ,CAAC1e,QAAQ,CAACme,UAAAA,CAAAA,CAAAA;AAE/B,oBAAA,MAAA;AACF,gBAAA,KAAA,CAAA;oBACEG,YAAa5a,CAAAA,KAAK,CAAC1D,QAAQ,CAACme,UAAAA,CAAAA,CAAAA;AAE5B,oBAAA,MAAA;AACJ,aAAA;AACF,SAAA;QAEA,IAAwB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACf,eAAe,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAnCc,YAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMS,aAAaT,UAAUX,CAAAA,KAAK,CAACa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AAEtDD,YAAAA,OAAAA,CAAQY,mBAAmB,CAACV,UAAUW,CAAAA,mBAAmB,CAAC,GAAGF,UAAAA,CAAAA;AAC/D,SAAA;QAEA,IAAwB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACtB,eAAe,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAnCa,YAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMY,aAAaZ,UAAUX,CAAAA,KAAK,CAACa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AAEtDD,YAAAA,OAAAA,CAAQe,mBAAmB,CAACb,UAAUW,CAAAA,mBAAmB,CAAC,GAAGC,UAAAA,CAAAA;AAC/D,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQtB,qBAUP,GAVD,SAAQA,qBAAuBD,CAAAA,KAAqB,EAAE/O,IAAwB,EAAA;QAC5E,IAAMgQ,SAAAA,GAAY,IAAI,CAACvB,QAAQ,CAAC+B,eAAe,CAACpI,GAAG,CAAC2G,KAAAA,CAAM0B,IAAI,CAAA,CAAA;AAE9D,QAAA,IAAIT,cAAc/mB,SAAW,EAAA;AAC3B,YAAA,IAAI,CAAC0lB,mBAAmB,CAAC1iB,IAAI,CAAC;gBAC5B8iB,KAAAA,EAAAA,KAAAA;gBACAiB,SAAAA,EAAAA,SAAAA;gBACAhQ,IAAAA,EAAAA,IAAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQqP,iBASP,GATD,SAAQA,iBAAAA,CAAmBN,KAA0B,EAAA;AACnD,QAAA,IAAMsB,sBAAsB,IAAI,CAAC5B,QAAQ,CAACiC,iBAAiB,CAACtI,GAAG,CAAC2G,KAAAA,CAAM0B,IAAI,GAAG1B,KAAAA,CAAMnH,SAAS,GAAGmH,MAAM5gB,QAAQ,CAAA,CAAA;AAE7G,QAAA,IAAIkiB,wBAAwBpnB,SAAW,EAAA;AACrC,YAAA,IAAI,CAAC2lB,eAAe,CAAC3iB,IAAI,CAAC;gBACxB8iB,KAAAA,EAAAA,KAAAA;gBACAsB,mBAAAA,EAAAA,mBAAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQd,iBASP,GATD,SAAQA,iBAAAA,CAAmBR,KAA0B,EAAA;AACnD,QAAA,IAAMsB,sBAAsB,IAAI,CAAC5B,QAAQ,CAACiC,iBAAiB,CAACtI,GAAG,CAAC2G,KAAAA,CAAM0B,IAAI,GAAG1B,KAAAA,CAAMnH,SAAS,GAAGmH,MAAM5gB,QAAQ,CAAA,CAAA;AAE7G,QAAA,IAAIkiB,wBAAwBpnB,SAAW,EAAA;AACrC,YAAA,IAAI,CAAC4lB,eAAe,CAAC5iB,IAAI,CAAC;gBACxB8iB,KAAAA,EAAAA,KAAAA;gBACAsB,mBAAAA,EAAAA,mBAAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAtGW7B,IAAAA,OAAAA,UAAAA,CAAAA;AAuGZ,CAAA;;AC5MD;;AAEC,IACM,IAAA,UAAMmC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,CAaGxgB,CAAK,EAAEjF,CAAK,EAAEiJ,CAAK,EAAE+B,CAAK,EAAA;AAA1B/F,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGiJ,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAG+B,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;QACjC,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAAC+B,CAAC,GAAGA,CAAAA,CAAAA;;AAjBJya,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAmBT;;;;;;;QAQArhB,MAAAA,CAAAA,GAMC,GANDA,SAAAA,GAAAA,CAAIa,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAE+B,CAAC,EAAA;QACV,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAAC+B,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD0a,MAAAA,CAAAA,YAGC,GAHDA,SAAAA,aAAa1b,KAAK,EAAA;QACdA,KAAM2b,CAAAA,YAAY,CAAC,IAAI,CAAA,CAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDC,OAAAA,gBAUC,GAVDA,SAAAA,gBAAiBC,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACxB,QAAA,IAAMC,YAAYD,KAAQ,GAAA,CAAA,CAAA;QAC1B,IAAM3c,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAACD,SAAAA,CAAAA,CAAAA;QACnB,IAAMtlB,CAAAA,GAAIglB,UApDLA,CAoDgBQ,QAAQ,CAAA;QAC7BxlB,CAAE6F,CAAAA,QAAQ,CAACuf,IAAAA,CAAAA,CAAMle,SAAS,EAAA,CAAA;AAC1B,QAAA,IAAI,CAAC1C,CAAC,GAAGxE,CAAAA,CAAEwE,CAAC,GAAGkE,CAAAA,CAAAA;AACf,QAAA,IAAI,CAACnJ,CAAC,GAAGS,CAAAA,CAAET,CAAC,GAAGmJ,CAAAA,CAAAA;AACf,QAAA,IAAI,CAACF,CAAC,GAAGxI,CAAAA,CAAEwI,CAAC,GAAGE,CAAAA,CAAAA;AACf,QAAA,IAAI,CAAC6B,CAAC,GAAGpH,IAAAA,CAAKsiB,GAAG,CAACH,SAAAA,CAAAA,CAAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD3a,MAAAA,CAAAA,cAMC,GANDA,SAAAA,eAAe3K,CAAC,EAAA;AACZ,QAAA,IAAI,CAACwE,CAAC,GAAGxE,CAAAA,CAAEwE,CAAC,CAAA;AACZ,QAAA,IAAI,CAACjF,CAAC,GAAGS,CAAAA,CAAET,CAAC,CAAA;AACZ,QAAA,IAAI,CAACiJ,CAAC,GAAGxI,CAAAA,CAAEwI,CAAC,CAAA;AACZ,QAAA,IAAI,CAAC+B,CAAC,GAAGvK,CAAAA,CAAEuK,CAAC,CAAA;AACZ,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD5E,OAAAA,YAMC,GANDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACzB,QAAA,IAAI,CAACgD,CAAC,GAAGoB,KAAK,CAACpE,MAAO,CAAA,CAAA;AACtB,QAAA,IAAI,CAACjC,CAAC,GAAGqG,KAAK,CAACpE,SAAS,CAAE,CAAA,CAAA;AAC1B,QAAA,IAAI,CAACgH,CAAC,GAAG5C,KAAK,CAACpE,SAAS,CAAE,CAAA,CAAA;AAC1B,QAAA,IAAI,CAAC+I,CAAC,GAAG3E,KAAK,CAACpE,SAAS,CAAE,CAAA,CAAA;AAC1B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDkkB,MAAAA,CAAAA,qBA+CC,GA/CDA,SAAAA,sBAAsB7b,CAAC,EAAA;;;QAGnB,IAAM8b,EAAAA,GAAK9b,EAAE+b,QAAQ,CAAA;QACrB,IAAMC,GAAAA,GAAMF,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMG,GAAAA,GAAMH,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMI,GAAAA,GAAMJ,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMK,GAAAA,GAAML,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMM,GAAAA,GAAMN,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMO,GAAAA,GAAMP,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMQ,GAAAA,GAAMR,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMS,GAAAA,GAAMT,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMU,GAAAA,GAAMV,EAAE,CAAC,EAAG,CAAA,CAAA;QAClB,IAAMW,KAAAA,GAAQT,MAAMI,GAAMI,GAAAA,GAAAA,CAAAA;AAC1B,QAAA,IAAIC,QAAQ,CAAG,EAAA;AACX,YAAA,IAAM5d,CAAI,GAAA,GAAA,GAAMvF,IAAK6D,CAAAA,IAAI,CAACsf,KAAQ,GAAA,GAAA,CAAA,CAAA;YAClC,IAAI,CAAC/b,CAAC,GAAG,IAAO7B,GAAAA,CAAAA,CAAAA;AAChB,YAAA,IAAI,CAAClE,CAAC,GAAG,CAAC4hB,GAAAA,GAAMF,GAAE,IAAKxd,CAAAA,CAAAA;AACvB,YAAA,IAAI,CAACnJ,CAAC,GAAG,CAACwmB,GAAAA,GAAMI,GAAE,IAAKzd,CAAAA,CAAAA;AACvB,YAAA,IAAI,CAACF,CAAC,GAAG,CAACwd,GAAAA,GAAMF,GAAE,IAAKpd,CAAAA,CAAAA;AAC3B,SAAA,MACK,IAAImd,GAAAA,GAAMI,GAAOJ,IAAAA,GAAAA,GAAMQ,GAAK,EAAA;AAC7B,YAAA,IAAM3d,KAAI,GAAMvF,GAAAA,IAAAA,CAAK6D,IAAI,CAAC,GAAA,GAAM6e,MAAMI,GAAMI,GAAAA,GAAAA,CAAAA,CAAAA;AAC5C,YAAA,IAAI,CAAC9b,CAAC,GAAG,CAAC6b,GAAAA,GAAMF,GAAE,IAAKxd,EAAAA,CAAAA;YACvB,IAAI,CAAClE,CAAC,GAAG,IAAOkE,GAAAA,EAAAA,CAAAA;AAChB,YAAA,IAAI,CAACnJ,CAAC,GAAG,CAACumB,GAAAA,GAAME,GAAE,IAAKtd,EAAAA,CAAAA;AACvB,YAAA,IAAI,CAACF,CAAC,GAAG,CAACud,GAAAA,GAAMI,GAAE,IAAKzd,EAAAA,CAAAA;AACvB,YAAA,IAAI,CAAC3B,MAAM,EAAA,CAAA;SAEV,MAAA,IAAIkf,MAAMI,GAAK,EAAA;AAChB,YAAA,IAAM3d,KAAI,GAAMvF,GAAAA,IAAAA,CAAK6D,IAAI,CAAC,GAAA,GAAMif,MAAMJ,GAAMQ,GAAAA,GAAAA,CAAAA,CAAAA;AAC5C,YAAA,IAAI,CAAC9b,CAAC,GAAG,CAACwb,GAAAA,GAAMI,GAAE,IAAKzd,EAAAA,CAAAA;AACvB,YAAA,IAAI,CAAClE,CAAC,GAAG,CAACshB,GAAAA,GAAME,GAAE,IAAKtd,EAAAA,CAAAA;YACvB,IAAI,CAACnJ,CAAC,GAAG,IAAOmJ,GAAAA,EAAAA,CAAAA;AAChB,YAAA,IAAI,CAACF,CAAC,GAAG,CAAC0d,GAAAA,GAAME,GAAE,IAAK1d,EAAAA,CAAAA;AACvB,YAAA,IAAI,CAAC3B,MAAM,EAAA,CAAA;SAEV,MAAA;AACD,YAAA,IAAM2B,KAAI,GAAMvF,GAAAA,IAAAA,CAAK6D,IAAI,CAAC,GAAA,GAAMqf,MAAMR,GAAMI,GAAAA,GAAAA,CAAAA,CAAAA;AAC5C,YAAA,IAAI,CAAC1b,CAAC,GAAG,CAACyb,GAAAA,GAAMF,GAAE,IAAKpd,EAAAA,CAAAA;AACvB,YAAA,IAAI,CAAClE,CAAC,GAAG,CAACuhB,GAAAA,GAAMI,GAAE,IAAKzd,EAAAA,CAAAA;AACvB,YAAA,IAAI,CAACnJ,CAAC,GAAG,CAAC2mB,GAAAA,GAAME,GAAE,IAAK1d,EAAAA,CAAAA;YACvB,IAAI,CAACF,CAAC,GAAG,IAAOE,GAAAA,EAAAA,CAAAA;AAChB,YAAA,IAAI,CAAC3B,MAAM,EAAA,CAAA;AACf,SAAA;;AAEA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDwf,OAAAA,kBAyBC,GAzBDA,SAAAA,kBAAmB/K,CAAAA,IAAI,EAAEgL,EAAE,EAAA;;AAEvB,QAAA,IAAInoB,CAAImd,GAAAA,IAAAA,CAAK/T,GAAG,CAAC+e,EAAM,CAAA,GAAA,CAAA,CAAA;QACvB,IAAInoB,CAAAA,GAAIgF,MAAOojB,CAAAA,OAAO,EAAE;YACpBpoB,CAAI,GAAA,CAAA,CAAA;YACJ,IAAI8E,IAAAA,CAAKe,GAAG,CAACsX,IAAKhX,CAAAA,CAAC,CAAIrB,GAAAA,IAAAA,CAAKe,GAAG,CAACsX,IAAKhT,CAAAA,CAAC,CAAG,EAAA;AACrC,gBAAA,IAAI,CAAChE,CAAC,GAAG,CAACgX,KAAKjc,CAAC,CAAA;AAChB,gBAAA,IAAI,CAACA,CAAC,GAAGic,IAAAA,CAAKhX,CAAC,CAAA;gBACf,IAAI,CAACgE,CAAC,GAAG,CAAA,CAAA;gBACT,IAAI,CAAC+B,CAAC,GAAGlM,CAAAA,CAAAA;aAER,MAAA;gBACD,IAAI,CAACmG,CAAC,GAAG,CAAA,CAAA;AACT,gBAAA,IAAI,CAACjF,CAAC,GAAG,CAACic,KAAKhT,CAAC,CAAA;AAChB,gBAAA,IAAI,CAACA,CAAC,GAAGgT,IAAAA,CAAKjc,CAAC,CAAA;gBACf,IAAI,CAACgL,CAAC,GAAGlM,CAAAA,CAAAA;AACb,aAAA;SAEC,MAAA;AACD,YAAA,IAAI,CAACmG,CAAC,GAAGgX,IAAAA,CAAKjc,CAAC,GAAGinB,EAAGhe,CAAAA,CAAC,GAAGgT,IAAAA,CAAKhT,CAAC,GAAGge,GAAGjnB,CAAC,CAAA;AACtC,YAAA,IAAI,CAACA,CAAC,GAAGic,IAAAA,CAAKhT,CAAC,GAAGge,EAAGhiB,CAAAA,CAAC,GAAGgX,IAAAA,CAAKhX,CAAC,GAAGgiB,GAAGhe,CAAC,CAAA;AACtC,YAAA,IAAI,CAACA,CAAC,GAAGgT,IAAAA,CAAKhX,CAAC,GAAGgiB,EAAGjnB,CAAAA,CAAC,GAAGic,IAAAA,CAAKjc,CAAC,GAAGinB,GAAGhiB,CAAC,CAAA;YACtC,IAAI,CAAC+F,CAAC,GAAGlM,CAAAA,CAAAA;AACb,SAAA;QACA,OAAO,IAAI,CAAC6I,SAAS,EAAA,CAAA;AACzB,KAAA,CAAA;AACA;;;;AAIC,QACDrB,MAAAA,CAAAA,QAMC,GANDA,SAAAA,SAAS6gB,IAAI,EAAA;AACT,QAAA,IAAI,CAACliB,CAAC,GAAGkiB,IAAAA,CAAKliB,CAAC,CAAA;AACf,QAAA,IAAI,CAACjF,CAAC,GAAGmnB,IAAAA,CAAKnnB,CAAC,CAAA;AACf,QAAA,IAAI,CAACiJ,CAAC,GAAGke,IAAAA,CAAKle,CAAC,CAAA;AACf,QAAA,IAAI,CAAC+B,CAAC,GAAGmc,IAAAA,CAAKnc,CAAC,CAAA;AACf,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAxE,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IA3LFif,UA2LiB,CAAA,IAAI,CAACxgB,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,EAAE,IAAI,CAAC+B,CAAC,CAAA,CAAA;AACxD,KAAA,CAAA;AACA;;;;AAIC,QACDoc,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,QAAQvf,KAAK,EAAA;AACT,QAAA,OAAO,CAAIjE,GAAAA,IAAAA,CAAKyjB,IAAI,CAACzjB,KAAKe,GAAG,CAACe,OAAM,CAAA,IAAI,CAACwC,GAAG,CAACL,KAAAA,CAAAA,EAAQ,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;AACA;;;;;AAKC,QACDyf,OAAAA,aAQC,GARDA,SAAAA,aAAcld,CAAAA,CAAC,EAAE1J,IAAI,EAAA;AACjB,QAAA,IAAMolB,KAAQ,GAAA,IAAI,CAACsB,OAAO,CAAChd,CAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAI0b,UAAU,CAAG,EAAA;AACb,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AACA,QAAA,IAAMlmB,CAAIgE,GAAAA,IAAAA,CAAKI,GAAG,CAAC,GAAGtD,IAAOolB,GAAAA,KAAAA,CAAAA,CAAAA;QAC7B,IAAI,CAACyB,KAAK,CAACnd,CAAGxK,EAAAA,CAAAA,CAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA4nB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACpjB,GAAG,CAAC,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC7B,KAAA,CAAA;AACA;;;QAIAqjB,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;QACI,OAAO,IAAI,CAACC,SAAS,EAAA,CAAA;AACzB,KAAA,CAAA;AACA;;;QAIAlgB,MAAAA,CAAAA,MAMC,GANDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACvC,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACiJ,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAAC+B,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA0c,MAAAA,CAAAA,SAKC,GALDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,IAAI,CAACziB,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACiJ,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDf,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,IAAIzH,CAAC,EAAA;QACD,OAAO,IAAI,CAACwE,CAAC,GAAGxE,CAAAA,CAAEwE,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAGS,CAAET,CAAAA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAGxI,CAAEwI,CAAAA,CAAC,GAAG,IAAI,CAAC+B,CAAC,GAAGvK,CAAAA,CAAEuK,CAAC,CAAA;AACpE,KAAA,CAAA;AACA;;;QAIAtD,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACzC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAAC+B,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;AAChF,KAAA,CAAA;AACA;;;QAIAnM,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,OAAO+E,IAAK6D,CAAAA,IAAI,CAAC,IAAI,CAACxC,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACjF,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAACiJ,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG,IAAI,CAAC+B,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA,CAAA;AAC1F,KAAA,CAAA;AACA;;;QAIArD,MAAAA,CAAAA,SAgBC,GAhBDA,SAAAA,SAAAA,GAAAA;QACI,IAAIggB,CAAAA,GAAI,IAAI,CAAC9oB,MAAM,EAAA,CAAA;AACnB,QAAA,IAAI8oB,MAAM,CAAG,EAAA;YACT,IAAI,CAAC1iB,CAAC,GAAG,CAAA,CAAA;YACT,IAAI,CAACjF,CAAC,GAAG,CAAA,CAAA;YACT,IAAI,CAACiJ,CAAC,GAAG,CAAA,CAAA;YACT,IAAI,CAAC+B,CAAC,GAAG,CAAA,CAAA;SAER,MAAA;AACD2c,YAAAA,CAAAA,GAAI,CAAIA,GAAAA,CAAAA,CAAAA;AACR,YAAA,IAAI,CAAC1iB,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG0iB,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC3nB,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG2nB,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC1e,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG0e,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC3c,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG2c,CAAAA,CAAAA;AACtB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD1gB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAS/I,KAAK,EAAA;AACV,QAAA,OAAO,IAAI,CAAC0pB,mBAAmB,CAAC,IAAI,EAAE1pB,KAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA;;;;AAIC,QACD2pB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAY5pB,IAAI,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC2pB,mBAAmB,CAAC3pB,MAAM,IAAI,CAAA,CAAA;AAC9C,KAAA,CAAA;AACA;;;;;AAKC,QACD2pB,OAAAA,mBAeC,GAfDA,SAAAA,mBAAoB3pB,CAAAA,IAAI,EAAEC,KAAK,EAAA;;QAE3B,IAAM4pB,GAAAA,GAAM7pB,KAAKgH,CAAC,CAAA;QAClB,IAAM8iB,GAAAA,GAAM9pB,KAAK+B,CAAC,CAAA;QAClB,IAAMgoB,GAAAA,GAAM/pB,KAAKgL,CAAC,CAAA;QAClB,IAAMgf,GAAAA,GAAMhqB,KAAK+M,CAAC,CAAA;QAClB,IAAMkd,GAAAA,GAAMhqB,MAAM+G,CAAC,CAAA;QACnB,IAAMkjB,GAAAA,GAAMjqB,MAAM8B,CAAC,CAAA;QACnB,IAAMooB,GAAAA,GAAMlqB,MAAM+K,CAAC,CAAA;QACnB,IAAMof,GAAAA,GAAMnqB,MAAM8M,CAAC,CAAA;QACnB,IAAI,CAAC/F,CAAC,GAAG6iB,GAAAA,GAAMO,MAAMJ,GAAMC,GAAAA,GAAAA,GAAMH,GAAMK,GAAAA,GAAAA,GAAMJ,GAAMG,GAAAA,GAAAA,CAAAA;QACnD,IAAI,CAACnoB,CAAC,GAAG+nB,GAAAA,GAAMM,MAAMJ,GAAME,GAAAA,GAAAA,GAAMH,GAAME,GAAAA,GAAAA,GAAMJ,GAAMM,GAAAA,GAAAA,CAAAA;QACnD,IAAI,CAACnf,CAAC,GAAG+e,GAAAA,GAAMK,MAAMJ,GAAMG,GAAAA,GAAAA,GAAMN,GAAMK,GAAAA,GAAAA,GAAMJ,GAAMG,GAAAA,GAAAA,CAAAA;QACnD,IAAI,CAACld,CAAC,GAAGid,GAAAA,GAAMI,MAAMP,GAAMI,GAAAA,GAAAA,GAAMH,GAAMI,GAAAA,GAAAA,GAAMH,GAAMI,GAAAA,GAAAA,CAAAA;AACnD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;AAMC,QACDb,OAAAA,KA6CC,GA7CDA,SAAAA,KAAM1f,CAAAA,KAAK,EAAEjI,CAAC,EAAA;AACV,QAAA,IAAIA,MAAM,CAAG,EAAA;AACT,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AACA,QAAA,IAAIA,MAAM,CAAG,EAAA;YACT,OAAO,IAAI,CAAC0G,QAAQ,CAACuB,KAAAA,CAAAA,CAAAA;AACzB,SAAA;AACA,QAAA,IAAuB,KAAA,GAAA,IAAI,EAAnB5C,CAAAA,GAAe,KAAfA,CAAAA,CAAAA,EAAGjF,CAAY,GAAA,KAAA,CAAZA,CAAGiJ,EAAAA,CAAAA,GAAS,KAATA,CAAAA,CAAAA,EAAG+B,IAAM,KAANA,CAAAA,CAAAA,CAAAA;AACjB,QAAA,IAAIsd,YAAetd,GAAAA,CAAAA,GAAInD,KAAMmD,CAAAA,CAAC,GAAG/F,CAAI4C,GAAAA,KAAAA,CAAM5C,CAAC,GAAGjF,IAAI6H,KAAM7H,CAAAA,CAAC,GAAGiJ,CAAAA,GAAIpB,MAAMoB,CAAC,CAAA;AACxE,QAAA,IAAIqf,eAAe,CAAG,EAAA;AAClB,YAAA,IAAI,CAACtd,CAAC,GAAG,CAACnD,MAAMmD,CAAC,CAAA;AACjB,YAAA,IAAI,CAAC/F,CAAC,GAAG,CAAC4C,MAAM5C,CAAC,CAAA;AACjB,YAAA,IAAI,CAACjF,CAAC,GAAG,CAAC6H,MAAM7H,CAAC,CAAA;AACjB,YAAA,IAAI,CAACiJ,CAAC,GAAG,CAACpB,MAAMoB,CAAC,CAAA;AACjBqf,YAAAA,YAAAA,GAAe,CAACA,YAAAA,CAAAA;SAEf,MAAA;YACD,IAAI,CAAChiB,QAAQ,CAACuB,KAAAA,CAAAA,CAAAA;AAClB,SAAA;AACA,QAAA,IAAIygB,gBAAgB,GAAK,EAAA;YACrB,IAAI,CAACtd,CAAC,GAAGA,CAAAA,CAAAA;YACT,IAAI,CAAC/F,CAAC,GAAGA,CAAAA,CAAAA;YACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;YACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;AACT,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QACA,IAAMsf,eAAAA,GAAkB,MAAMD,YAAeA,GAAAA,YAAAA,CAAAA;QAC7C,IAAIC,eAAAA,IAAmBzkB,MAAOojB,CAAAA,OAAO,EAAE;AACnC,YAAA,IAAM/d,IAAI,CAAIvJ,GAAAA,CAAAA,CAAAA;YACd,IAAI,CAACoL,CAAC,GAAG7B,CAAAA,GAAI6B,IAAIpL,CAAI,GAAA,IAAI,CAACoL,CAAC,CAAA;YAC3B,IAAI,CAAC/F,CAAC,GAAGkE,CAAAA,GAAIlE,IAAIrF,CAAI,GAAA,IAAI,CAACqF,CAAC,CAAA;YAC3B,IAAI,CAACjF,CAAC,GAAGmJ,CAAAA,GAAInJ,IAAIJ,CAAI,GAAA,IAAI,CAACI,CAAC,CAAA;YAC3B,IAAI,CAACiJ,CAAC,GAAGE,CAAAA,GAAIF,IAAIrJ,CAAI,GAAA,IAAI,CAACqJ,CAAC,CAAA;AAC3B,YAAA,IAAI,CAACtB,SAAS,EAAA,CAAA;AACd,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QACA,IAAM6gB,YAAAA,GAAe5kB,IAAK6D,CAAAA,IAAI,CAAC8gB,eAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAME,SAAY7kB,GAAAA,IAAAA,CAAK8kB,KAAK,CAACF,YAAcF,EAAAA,YAAAA,CAAAA,CAAAA;QAC3C,IAAMK,MAAAA,GAAS/kB,KAAKoiB,GAAG,CAAC,CAAC,CAAA,GAAIpmB,CAAAA,IAAK6oB,SAAaD,CAAAA,GAAAA,YAAAA,CAAAA;AAC/C,QAAA,IAAMI,MAAShlB,GAAAA,IAAAA,CAAKoiB,GAAG,CAACpmB,IAAI6oB,SAAaD,CAAAA,GAAAA,YAAAA,CAAAA;QACzC,IAAI,CAACxd,CAAC,GAAIA,CAAAA,GAAI2d,SAAS,IAAI,CAAC3d,CAAC,GAAG4d,MAAAA,CAAAA;QAChC,IAAI,CAAC3jB,CAAC,GAAIA,CAAAA,GAAI0jB,SAAS,IAAI,CAAC1jB,CAAC,GAAG2jB,MAAAA,CAAAA;QAChC,IAAI,CAAC5oB,CAAC,GAAIA,CAAAA,GAAI2oB,SAAS,IAAI,CAAC3oB,CAAC,GAAG4oB,MAAAA,CAAAA;QAChC,IAAI,CAAC3f,CAAC,GAAIA,CAAAA,GAAI0f,SAAS,IAAI,CAAC1f,CAAC,GAAG2f,MAAAA,CAAAA;AAChC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;QAMAC,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,iBAAiBC,EAAE,EAAEC,EAAE,EAAEnpB,CAAC,EAAA;AACtB,QAAA,IAAI,CAAC0G,QAAQ,CAACwiB,EAAIvB,CAAAA,CAAAA,KAAK,CAACwB,EAAInpB,EAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AACA;;;;;AAKC,QACDsK,OAAAA,aAYC,GAZDA,SAAAA,aAAczJ,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;AAChB,QAAA,IAAuC,QAAA,IAAI,EAAnChF,EAAG+jB,GAA4B,MAA/B/jB,CAAOjF,EAAGipB,EAAqB,GAAA,KAAA,CAAxBjpB,GAAOiJ,EAAGigB,GAAc,MAAjBjgB,CAAO+B,EAAGme,KAAO,KAAVne,CAAAA,CAAAA,CAAAA;QAC7B,IAAWoe,EAAqB3oB,GAAAA,CAAAA,CAAxBwE,CAAOjF,EAAGqpB,KAAc5oB,CAAjBT,CAAAA,CAAAA,EAAOiJ,EAAGqgB,GAAO7oB,CAAVwI,CAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAMsgB,EAAKJ,GAAAA,EAAAA,GAAKC,EAAKH,GAAAA,EAAAA,GAAKK,KAAKJ,EAAKG,GAAAA,EAAAA,CAAAA;AACpC,QAAA,IAAMG,EAAKL,GAAAA,EAAAA,GAAKE,EAAKH,GAAAA,EAAAA,GAAKE,KAAKJ,EAAKM,GAAAA,EAAAA,CAAAA;AACpC,QAAA,IAAMG,EAAKN,GAAAA,EAAAA,GAAKG,EAAKN,GAAAA,EAAAA,GAAKK,KAAKJ,EAAKG,GAAAA,EAAAA,CAAAA;AACpC,QAAA,IAAMM,KAAK,CAACV,EAAAA,GAAKI,EAAKH,GAAAA,EAAAA,GAAKI,KAAKH,EAAKI,GAAAA,EAAAA,CAAAA;QACrC,IAAMK,GAAAA,GAAM1f,cAAAA,GAAOxJ,GAAAA,CAAAA,CAAAA;QACnBkpB,GAAI1kB,CAAAA,CAAC,GAAGskB,EAAAA,GAAKJ,EAAKO,GAAAA,EAAAA,GAAK,CAACV,EAAAA,GAAKQ,EAAK,GAAA,CAACN,EAAKO,GAAAA,EAAAA,GAAK,CAACR,EAAAA,CAAAA;QAC9CU,GAAI3pB,CAAAA,CAAC,GAAGwpB,EAAAA,GAAKL,EAAKO,GAAAA,EAAAA,GAAK,CAACT,EAAAA,GAAKQ,EAAK,GAAA,CAACT,EAAKO,GAAAA,EAAAA,GAAK,CAACL,EAAAA,CAAAA;QAC9CS,GAAI1gB,CAAAA,CAAC,GAAGwgB,EAAAA,GAAKN,EAAKO,GAAAA,EAAAA,GAAK,CAACR,EAAAA,GAAKK,EAAK,GAAA,CAACN,EAAKO,GAAAA,EAAAA,GAAK,CAACR,EAAAA,CAAAA;QAC9C,OAAOW,GAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDnhB,MAAAA,CAAAA,MAKC,GALDA,SAAAA,OAAOohB,UAAU,EAAA;QACb,OAAOA,UAAAA,CAAW3kB,CAAC,KAAK,IAAI,CAACA,CAAC,IACvB2kB,UAAW5pB,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IACvB4pB,UAAW3gB,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IACvB2gB,UAAAA,CAAW5e,CAAC,KAAK,IAAI,CAACA,CAAC,CAAA;AAClC,KAAA,CAAA;AACA;;;QAIAtC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO;AAAC,YAAA,IAAI,CAACzD,CAAC;AAAE,YAAA,IAAI,CAACjF,CAAC;AAAE,YAAA,IAAI,CAACiJ,CAAC;AAAE,YAAA,IAAI,CAAC+B,CAAC;AAAC,SAAA,CAAA;AAC3C,KAAA,CAAA;AACA;;;;AAIC,QACDmB,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAU0d,GAAG,EAAA;AACT,QAAA,OAAOA,IAAIzlB,GAAG,CAAC,IAAI,CAACa,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,EAAE,IAAI,CAAC+B,CAAC,CAAA,CAAA;AACjD,KAAA,CAAA;AACA;;;;AAIC,QACD8e,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,QAAQ9f,KAAK,EAAA;QACT,OAAOA,KAAAA,CAAM+f,iBAAiB,CAAC,IAAI,CAAA,CAAA;AACvC,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAUC,GAAG,EAAA;QACT,OAAOA,GAAAA,CAAIC,OAAO,CAAClhB,OAAAA,CAAQD,IAAI,EAAE,IAAI,EAAEC,OAAAA,CAAQF,GAAG,CAAA,CAAA;AACtD,KAAA,CAAA;AACA;;;;AAIC,QACD,UAAOqhB,CAAAA,SAEN,GAFD,SAAOA,UAAUngB,KAAK,EAAA;QAClB,OAAO,IAzcFyb,UAycmBC,EAAAA,CAAAA,YAAY,CAAC1b,KAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AACA;;;;;QA3cSyb,WAidF2E,aAEN,GAFD,SAAOA,aAAcvE,CAAAA,IAAI,EAAEC,KAAK,EAAA;AAC5B,QAAA,OAAO,IAldFL,UAAAA,EAAAA,CAkdmBG,gBAAgB,CAACC,IAAMC,EAAAA,KAAAA,CAAAA,CAAAA;AACnD,KAAA,CAAA;AACA;;;;AAIC,QACD,UAAOuE,CAAAA,WAEN,GAFD,SAAOA,YAAY5pB,CAAC,EAAA;QAChB,OAAO,IA1dFglB,UA0dmBra,EAAAA,CAAAA,cAAc,CAAC3K,CAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AACA;;;;;QA5dSglB,WAkeF5c,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IAneFwjB,UAAAA,EAAAA,CAmemBrf,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAChD,KAAA,CAAA;AACA;;;;AAIC,QACD,UAAOqoB,CAAAA,kBAEN,GAFD,SAAOA,mBAAmBhgB,CAAC,EAAA;QACvB,OAAO,IA3eFmb,UA2emBU,EAAAA,CAAAA,qBAAqB,CAAC7b,CAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AACA;;;;;QA7eSmb,WAmfF8E,eAEN,GAFD,SAAOA,eAAgBtO,CAAAA,IAAI,EAAEgL,EAAE,EAAA;AAC3B,QAAA,OAAO,IApfFxB,UAAAA,EAAAA,CAofmBuB,kBAAkB,CAAC/K,IAAMgL,EAAAA,EAAAA,CAAAA,CAAAA;AACrD,KAAA,CAAA;AArfSxB,IAAAA,OAAAA,UAAAA,CAAAA;AAsfZ,CAAA,EAAA,CAAA;AAtfYA,UAAAA,CAKFQ,WAAW,IAAIjd,OAAAA,EAAAA;;ACN1B,IAAMwhB,iBAAiB,IAAI/E,UAAAA,EAAAA,CAAAA;AAEpB,IAAA,aAAegF,GAAf,SAAeA,aAAAA,GAAAA;AAMrB,CAAA,CAAA;AAEM,IAAA,WAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASC,CAAAA,YAIR,GAJD,SAASA,YAAcrI,CAAAA,MAAe,EAAE5jB,MAAe,EAAEksB,MAAc,EAAE1H,MAAe,EAAA;AACtFA,QAAAA,MAAAA,CAAOje,CAAC,GAAGqd,MAAOrd,CAAAA,CAAC,GAAIvG,CAAAA,MAAAA,CAAOuG,CAAC,GAAGqd,MAAOrd,CAAAA,CAAC,IAAI2lB,MAAAA,CAAAA;AAC9C1H,QAAAA,MAAAA,CAAOljB,CAAC,GAAGsiB,MAAOtiB,CAAAA,CAAC,GAAItB,CAAAA,MAAAA,CAAOsB,CAAC,GAAGsiB,MAAOtiB,CAAAA,CAAC,IAAI4qB,MAAAA,CAAAA;AAC9C1H,QAAAA,MAAAA,CAAOja,CAAC,GAAGqZ,MAAOrZ,CAAAA,CAAC,GAAIvK,CAAAA,MAAAA,CAAOuK,CAAC,GAAGqZ,MAAOrZ,CAAAA,CAAC,IAAI2hB,MAAAA,CAAAA;AAChD,KAAA,CAAA;IAEA,MAASC,CAAAA,eAER,GAFD,SAASA,eAAiBvI,CAAAA,MAAkB,EAAE5jB,MAAkB,EAAEksB,MAAc,EAAE1H,MAAkB,EAAA;AAClGA,QAAAA,MAAAA,CAAO5c,QAAQ,CAACgc,MAAQiF,CAAAA,CAAAA,KAAK,CAAC7oB,MAAQksB,EAAAA,MAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;IAEA,MAASE,CAAAA,UAER,GAFD,SAASA,UAAYxI,CAAAA,MAAe,EAAE5jB,MAAe,EAAEksB,MAAc,EAAE1H,MAAe,EAAA;AACpF,QAAA,IAAI,CAAC6H,SAAS,CAACzI,MAAAA,EAAQ5jB,QAAQksB,MAAQ1H,EAAAA,MAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;IAEA,MAAS8H,CAAAA,UAER,GAFD,SAASA,UAAAA,CAAY1I,MAAc,EAAE5jB,MAAc,EAAEksB,MAAc,EAAA;AACjE,QAAA,OAAOtI,MAAS,GAAC5jB,CAAAA,MAAAA,GAAS4jB,MAAK,IAAKsI,MAAAA,CAAAA;AACtC,KAAA,CAAA;IAEA,MAASK,CAAAA,UAKR,GALD,SAASA,UAAY3I,CAAAA,MAAa,EAAE5jB,MAAa,EAAEksB,MAAc,EAAE1H,MAAa,EAAA;AAC9EA,QAAAA,MAAAA,CAAOpkB,CAAC,GAAGwjB,MAAOxjB,CAAAA,CAAC,GAAIJ,CAAAA,MAAAA,CAAOI,CAAC,GAAGwjB,MAAOxjB,CAAAA,CAAC,IAAI8rB,MAAAA,CAAAA;AAC9C1H,QAAAA,MAAAA,CAAOjjB,CAAC,GAAGqiB,MAAOriB,CAAAA,CAAC,GAAIvB,CAAAA,MAAAA,CAAOuB,CAAC,GAAGqiB,MAAOriB,CAAAA,CAAC,IAAI2qB,MAAAA,CAAAA;AAC9C1H,QAAAA,MAAAA,CAAOpe,CAAC,GAAGwd,MAAOxd,CAAAA,CAAC,GAAIpG,CAAAA,MAAAA,CAAOoG,CAAC,GAAGwd,MAAOxd,CAAAA,CAAC,IAAI8lB,MAAAA,CAAAA;AAC9C1H,QAAAA,MAAAA,CAAOre,CAAC,GAAGyd,MAAOzd,CAAAA,CAAC,GAAInG,CAAAA,MAAAA,CAAOmG,CAAC,GAAGyd,MAAOzd,CAAAA,CAAC,IAAI+lB,MAAAA,CAAAA;AAChD,KAAA,CAAA;IAEA,MAAQG,CAAAA,SAIP,GAJD,SAAQA,SAAW9O,CAAAA,IAAa,EAAEgL,EAAW,EAAErnB,CAAS,EAAE+pB,GAAY,EAAA;QACpEA,GAAI1kB,CAAAA,CAAC,GAAG,IAAI,CAACimB,SAAS,CAACjP,IAAAA,CAAKhX,CAAC,EAAEgiB,EAAGhiB,CAAAA,CAAC,EAAErF,CAAAA,CAAAA,CAAAA;QACrC+pB,GAAI3pB,CAAAA,CAAC,GAAG,IAAI,CAACkrB,SAAS,CAACjP,IAAAA,CAAKjc,CAAC,EAAEinB,EAAGjnB,CAAAA,CAAC,EAAEJ,CAAAA,CAAAA,CAAAA;QACrC+pB,GAAI1gB,CAAAA,CAAC,GAAG,IAAI,CAACiiB,SAAS,CAACjP,IAAAA,CAAKhT,CAAC,EAAEge,EAAGhe,CAAAA,CAAC,EAAErJ,CAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQurB,cAEP,GAFD,SAAQA,cAAAA,CAAgBrF,KAAa,EAAA;AACnC,QAAA,OAAO,CAAEA,KAAQ,GAAA,GAAA,GAAO,GAAE,IAAK,GAAA,CAAA;AACjC,KAAA,CAAA;AAEA;;AAEC,MACD,OAAQsF,iBAOP,GAPD,SAAQA,iBAAmBnP,CAAAA,IAAY,EAAEgL,EAAU,EAAA;QACjD,IAAIoE,IAAAA,GAAO,IAAI,CAACF,cAAc,CAAClE,EAAM,CAAA,GAAA,IAAI,CAACkE,cAAc,CAAClP,IAAAA,CAAAA,CAAAA;AAEzD,QAAA,IAAIoP,OAAO,GAAK,EAAA;YAAEA,IAAQ,IAAA,GAAA,CAAA;AAAK,SAAA;QAC/B,IAAIA,IAAAA,GAAO,CAAC,GAAK,EAAA;YAAEA,IAAQ,IAAA,GAAA,CAAA;AAAK,SAAA;QAEhC,OAAOA,IAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQH,CAAAA,SAIP,GAJD,SAAQA,SAAAA,CAAWI,SAAiB,EAAEC,OAAe,EAAE3rB,CAAS,EAAA;AAC9D,QAAA,IAAMyrB,IAAO,GAAA,IAAI,CAACD,iBAAiB,CAACE,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;AAE/C,QAAA,OAAO,IAAI,CAACJ,cAAc,CAACG,YAAYD,IAAOzrB,GAAAA,CAAAA,CAAAA,CAAAA;AAChD,KAAA,CAAA;AApDW8qB,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBD,aAqDhC,CAAA,CAAA;AAEM,IAAA,aAAMe,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASb,CAAAA,YAIR,GAJD,SAASA,YAAcrI,CAAAA,MAAe,EAAE5jB,MAAe,EAAEksB,MAAc,EAAE1H,MAAe,EAAA;AACtFA,QAAAA,MAAAA,CAAOje,CAAC,GAAGqd,MAAAA,CAAOrd,CAAC,GAAIvG,MAAAA,CAAOuG,CAAC,GAAG2lB,MAAAA,CAAAA;AAClC1H,QAAAA,MAAAA,CAAOljB,CAAC,GAAGsiB,MAAAA,CAAOtiB,CAAC,GAAItB,MAAAA,CAAOsB,CAAC,GAAG4qB,MAAAA,CAAAA;AAClC1H,QAAAA,MAAAA,CAAOja,CAAC,GAAGqZ,MAAAA,CAAOrZ,CAAC,GAAIvK,MAAAA,CAAOuK,CAAC,GAAG2hB,MAAAA,CAAAA;AACpC,KAAA,CAAA;IAEA,MAASC,CAAAA,eAIR,GAJD,SAASA,eAAiBvI,CAAAA,MAAkB,EAAE5jB,MAAkB,EAAEksB,MAAc,EAAE1H,MAAkB,EAAA;AAClG,QAAA,IAAMuI,mBAAmBjB,cAAelkB,CAAAA,QAAQ,CAACgc,MAAAA,CAAAA,CAAQrb,QAAQ,CAACvI,MAAAA,CAAAA,CAAAA;AAElEwkB,QAAAA,MAAAA,CAAO5c,QAAQ,CAACgc,MAAQiF,CAAAA,CAAAA,KAAK,CAACkE,gBAAkBb,EAAAA,MAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;IAEA,MAASE,CAAAA,UAER,GAFD,SAASA,UAAYxI,CAAAA,MAAe,EAAE5jB,MAAe,EAAEksB,MAAc,EAAE1H,MAAe,EAAA;AACpF,QAAA,IAAI,CAACyH,YAAY,CAACrI,MAAAA,EAAQ5jB,QAAQksB,MAAQ1H,EAAAA,MAAAA,CAAAA,CAAAA;AAC5C,KAAA,CAAA;IAEA,MAAS8H,CAAAA,UAER,GAFD,SAASA,UAAAA,CAAY1I,MAAc,EAAE5jB,MAAc,EAAEksB,MAAc,EAAA;AACjE,QAAA,OAAOtI,SAAU5jB,MAASksB,GAAAA,MAAAA,CAAAA;AAC5B,KAAA,CAAA;IAEA,MAASK,CAAAA,UAKR,GALD,SAASA,UAAY3I,CAAAA,MAAa,EAAE5jB,MAAa,EAAEksB,MAAc,EAAE1H,MAAa,EAAA;AAC9EA,QAAAA,MAAAA,CAAOpkB,CAAC,GAAGwjB,MAAAA,CAAOxjB,CAAC,GAAIJ,MAAAA,CAAOI,CAAC,GAAG8rB,MAAAA,CAAAA;AAClC1H,QAAAA,MAAAA,CAAOjjB,CAAC,GAAGqiB,MAAAA,CAAOriB,CAAC,GAAIvB,MAAAA,CAAOuB,CAAC,GAAG2qB,MAAAA,CAAAA;AAClC1H,QAAAA,MAAAA,CAAOpe,CAAC,GAAGwd,MAAAA,CAAOxd,CAAC,GAAIpG,MAAAA,CAAOoG,CAAC,GAAG8lB,MAAAA,CAAAA;AAClC1H,QAAAA,MAAAA,CAAOre,CAAC,GAAGyd,MAAAA,CAAOzd,CAAC,GAAInG,MAAAA,CAAOmG,CAAC,GAAG+lB,MAAAA,CAAAA;AACpC,KAAA,CAAA;AA1BWY,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBf,aA2BlC,CAAA,CAAA;AAEM,IAAA,OAAMiB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,OAAAA,GAAAA,EAAAA;IAAAA,OAIJC,CAAAA,UAEN,GAFD,SAAOA,UAAYC,CAAAA,UAAgB,EAAEC,UAAgB,EAAEC,WAAmB,EAAEC,UAAgB,EAAA;QAJjFL,OAKDM,CAAAA,kBAAkB,CAACJ,UAAYC,EAAAA,UAAAA,EAAYC,aAAaC,UAAYL,EALnEA,QAK2EO,mBAAmB,CAAA,CAAA;AACzG,KAAA,CAAA;IANWP,OAQJQ,CAAAA,aAEN,GAFD,SAAOA,aAAeN,CAAAA,UAAgB,EAAEC,UAAgB,EAAEC,WAAmB,EAAEC,UAAgB,EAAA;QARpFL,OASDM,CAAAA,kBAAkB,CAACJ,UAAYC,EAAAA,UAAAA,EAAYC,aAAaC,UAAYL,EATnEA,QAS2ES,qBAAqB,CAAA,CAAA;AAC3G,KAAA,CAAA;AAVWT,IAAAA,OAAAA,CAYIM,kBAuDd,GAvDD,SAAeA,kBAAAA,CAAoBJ,UAAgB,EAAEC,UAAgB,EAAEC,WAAmB,EAAEC,UAAgB,EAAEK,aAA4B,EAAA;;;QAKxI,IAAK,IAAIhtB,IAAI,CAAGA,EAAAA,CAAAA,GAAIwsB,WAAW/G,qBAAqB,CAAChmB,MAAM,EAAEO,CAAK,EAAA,CAAA;AAChE,YAAA,IAAMitB,eAAkBT,GAAAA,UAAAA,CAAW/G,qBAAqB,CAACzlB,CAAE,CAAA,CAAA;AAC3D,YAAA,IAAMktB,eAAkBT,GAAAA,UAAAA,CAAWhH,qBAAqB,CAACzlB,CAAE,CAAA,CAAA;AAC3D,YAAA,IAAMmtB,eAAkBR,GAAAA,UAAAA,CAAWlH,qBAAqB,CAACzlB,CAAE,CAAA,CAAA;YAE3D,IAAMotB,cAAAA,GAAiBH,gBAAgBtH,QAAQ,CAAA;YAC/C,IAAM0H,cAAAA,GAAiBH,gBAAgBvH,QAAQ,CAAA;YAC/C,IAAM2H,cAAAA,GAAiBH,gBAAgBxH,QAAQ,CAAA;AAE/CqH,YAAAA,aAAAA,CAAczB,YAAY,CAAC6B,cAAgBC,EAAAA,cAAAA,EAAgBX,WAAaY,EAAAA,cAAAA,CAAAA,CAAAA;YAExE,IAAMC,cAAAA,GAAiBN,gBAAgBrH,QAAQ,CAAA;YAC/C,IAAM4H,cAAAA,GAAiBN,gBAAgBtH,QAAQ,CAAA;YAC/C,IAAM6H,cAAAA,GAAiBN,gBAAgBvH,QAAQ,CAAA;AAE/CoH,YAAAA,aAAAA,CAAcvB,eAAe,CAAC8B,cAAgBC,EAAAA,cAAAA,EAAgBd,WAAae,EAAAA,cAAAA,CAAAA,CAAAA;YAE3E,IAAMC,WAAAA,GAAcT,gBAAgBjlB,KAAK,CAAA;YACzC,IAAM2lB,WAAAA,GAAcT,gBAAgBllB,KAAK,CAAA;YACzC,IAAM4lB,WAAAA,GAAcT,gBAAgBnlB,KAAK,CAAA;AAEzCglB,YAAAA,aAAAA,CAAczB,YAAY,CAACmC,WAAaC,EAAAA,WAAAA,EAAajB,WAAakB,EAAAA,WAAAA,CAAAA,CAAAA;YAElE,IAAMC,WAAAA,GAAcZ,gBAAgBriB,KAAK,CAAA;YACzC,IAAMkjB,WAAAA,GAAcZ,gBAAgBtiB,KAAK,CAAA;YACzC,IAAMmjB,WAAAA,GAAcZ,gBAAgBviB,KAAK,CAAA;AAEzCoiB,YAAAA,aAAAA,CAActB,UAAU,CAACmC,WAAaC,EAAAA,WAAAA,EAAapB,WAAaqB,EAAAA,WAAAA,CAAAA,CAAAA;AAClE,SAAA;;;QAKA,IAAK,IAAI/tB,KAAI,CAAGA,EAAAA,EAAAA,GAAIwsB,WAAW1G,mBAAmB,CAACrmB,MAAM,EAAEO,EAAK,EAAA,CAAA;AAC9D,YAAA,IAAMguB,WAAcxB,GAAAA,UAAAA,CAAW1G,mBAAmB,CAAC9lB,EAAE,CAAA,CAAA;AACrD,YAAA,IAAMiuB,WAAcxB,GAAAA,UAAAA,CAAW3G,mBAAmB,CAAC9lB,EAAE,CAAA,CAAA;YAErD2sB,UAAW7G,CAAAA,mBAAmB,CAAC9lB,EAAE,CAAA,GAAGgtB,cAAcpB,UAAU,CAACoC,aAAaC,WAAavB,EAAAA,WAAAA,CAAAA,CAAAA;AACzF,SAAA;;;QAKA,IAAK,IAAI1sB,KAAI,CAAGA,EAAAA,EAAAA,GAAIwsB,WAAWvG,mBAAmB,CAACxmB,MAAM,EAAEO,EAAK,EAAA,CAAA;AAC9D,YAAA,IAAMkuB,WAAc1B,GAAAA,UAAAA,CAAWvG,mBAAmB,CAACjmB,EAAE,CAAA,CAAA;AACrD,YAAA,IAAMmuB,WAAc1B,GAAAA,UAAAA,CAAWxG,mBAAmB,CAACjmB,EAAE,CAAA,CAAA;AACrD,YAAA,IAAMouB,WAAczB,GAAAA,UAAAA,CAAW1G,mBAAmB,CAACjmB,EAAE,CAAA,CAAA;AAErDgtB,YAAAA,aAAAA,CAAcnB,UAAU,CAACqC,WAAaC,EAAAA,WAAAA,EAAazB,WAAa0B,EAAAA,WAAAA,CAAAA,CAAAA;AAClE,SAAA;AACF,KAAA,CAAA;AAnEW9B,IAAAA,OAAAA,OAAAA,CAAAA;AAoEZ,CAAA,EAAA,CAAA;AApEYA,OAAAA,CACIO,sBAAsB,IAAIvB,WAAAA,EAAAA,CAAAA;AAD9BgB,OAAAA,CAEIS,wBAAwB,IAAIX,aAAAA,EAAAA;;AC9FtC,IAAA,aAAMiC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,CAMEC,SAAqB,EAAA;AALlC3I,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,IAAI/b,OAAAA,EAAAA,CAAAA;AACfgc,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,IAAIS,UAAAA,EAAAA,CAAAA;AACfre,QAAAA,IAAAA,CAAAA,KAAAA,GAAQ,IAAI4B,OAAAA,EAAAA,CAAAA;AACZgB,QAAAA,IAAAA,CAAAA,KAAAA,GAAQ,IAAIhB,OAAAA,EAAAA,CAAAA;AAGV,QAAA,IAAI0kB,SAAW,EAAA;AACb,YAAA,IAAI,CAAC3I,QAAQ,CAACze,QAAQ,CAAConB,UAAU3I,QAAQ,CAAA,CAAA;AACzC,YAAA,IAAI,CAACC,QAAQ,CAAC1e,QAAQ,CAAConB,UAAUvG,IAAI,CAAA,CAAA;AACrC,YAAA,IAAI,CAAC/f,KAAK,CAACd,QAAQ,CAAConB,UAAUtmB,KAAK,CAAA,CAAA;AACnC,YAAA,IAAI,CAAC4C,KAAK,CAAC1D,QAAQ,CAAConB,UAAU1I,QAAQ,CAAA,CAAA;AACxC,SAAA;;AAZSyI,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAeXnnB,IAAAA,MAAAA,CAAAA,QAOC,GAPDA,SAAAA,QAAAA,CAAUonB,SAAwB,EAAA;AAChC,QAAA,IAAI,CAAC3I,QAAQ,CAACze,QAAQ,CAAConB,UAAU3I,QAAQ,CAAA,CAAA;AACzC,QAAA,IAAI,CAACC,QAAQ,CAAC1e,QAAQ,CAAConB,UAAU1I,QAAQ,CAAA,CAAA;AACzC,QAAA,IAAI,CAAC5d,KAAK,CAACd,QAAQ,CAAConB,UAAUtmB,KAAK,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC4C,KAAK,CAAC1D,QAAQ,CAAConB,UAAU1jB,KAAK,CAAA,CAAA;AAEnC,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAtBWyjB,IAAAA,OAAAA,aAAAA,CAAAA;AAuBZ,CAAA,GAAA;AAEM,IAAA,IAAME,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,IAAAA,CAMT,QAAyB,EAAA;aAAlBpK,QAAAA,GAAAA,QAAAA,CAAAA;AALTsB,QAAAA,IAAAA,CAAAA,qBAAAA,GAAyC,EAAE,CAAA;AAC3CK,QAAAA,IAAAA,CAAAA,mBAAAA,GAAgC,EAAE,CAAA;AAClCG,QAAAA,IAAAA,CAAAA,mBAAAA,GAA+B,EAAE,CAAA;QAK/B,IAAwB9B,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAASsB,qBAAqB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7C6I,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAAC7I,qBAAqB,CAAC9jB,IAAI,CAAC,IAAI0sB,aAAAA,EAAAA,CAAgBnnB,QAAQ,CAAConB,SAAAA,CAAAA,CAAAA,CAAAA;AAC/D,SAAA;QAEA,IAA2BnK,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAASqK,0BAA0B,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArDC,YAAAA,IAAAA,YAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAAC3I,mBAAmB,CAACnkB,IAAI,CAAC8sB,YAAAA,CAAAA,CAAAA;AAChC,SAAA;QAEA,IAA2BtK,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAASuK,0BAA0B,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArDC,YAAAA,IAAAA,YAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAAC1I,mBAAmB,CAACtkB,IAAI,CAAC,IAAIoK,KAAAA,EAAAA,CAAQ7E,QAAQ,CAACynB,YAAAA,CAAAA,CAAAA,CAAAA;AACrD,SAAA;;AAlBSJ,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AAqBXK,IAAAA,MAAAA,CAAAA,WAMC,GANDA,SAAAA,WAAazI,CAAAA,IAAY,EAAER,QAAiB,EAAA;QAC1C,IAAMD,SAAAA,GAAY,IAAI,CAACvB,QAAQ,CAAC+B,eAAe,CAACpI,GAAG,CAACqI,IAAAA,CAAAA,CAAAA;AAEpD,QAAA,IAAIT,cAAc/mB,SAAW,EAAA;YAC3B,IAAI,CAAC8mB,qBAAqB,CAACC,SAAAA,CAAU,CAACC,QAAQ,CAACze,QAAQ,CAACye,QAAAA,CAAAA,CAAAA;AAC1D,SAAA;AACF,KAAA,CAAA;AAEAkJ,IAAAA,MAAAA,CAAAA,WAMC,GANDA,SAAAA,WAAa1I,CAAAA,IAAY,EAAEP,QAAoB,EAAA;QAC7C,IAAMF,SAAAA,GAAY,IAAI,CAACvB,QAAQ,CAAC+B,eAAe,CAACpI,GAAG,CAACqI,IAAAA,CAAAA,CAAAA;AAEpD,QAAA,IAAIT,cAAc/mB,SAAW,EAAA;YAC3B,IAAI,CAAC8mB,qBAAqB,CAACC,SAAAA,CAAU,CAACE,QAAQ,CAAC1e,QAAQ,CAAC0e,QAAAA,CAAAA,CAAAA;AAC1D,SAAA;AACF,KAAA,CAAA;AAEAkJ,IAAAA,MAAAA,CAAAA,QAMC,GANDA,SAAAA,QAAU3I,CAAAA,IAAY,EAAEvb,KAAc,EAAA;QACpC,IAAM8a,SAAAA,GAAY,IAAI,CAACvB,QAAQ,CAAC+B,eAAe,CAACpI,GAAG,CAACqI,IAAAA,CAAAA,CAAAA;AAEpD,QAAA,IAAIT,cAAc/mB,SAAW,EAAA;YAC3B,IAAI,CAAC8mB,qBAAqB,CAACC,SAAAA,CAAU,CAAC9a,KAAK,CAAC1D,QAAQ,CAAC0D,KAAAA,CAAAA,CAAAA;AACvD,SAAA;AACF,KAAA,CAAA;AAEAmkB,IAAAA,MAAAA,CAAAA,QAMC,GANDA,SAAAA,QAAU5I,CAAAA,IAAY,EAAEne,KAAc,EAAA;QACpC,IAAM0d,SAAAA,GAAY,IAAI,CAACvB,QAAQ,CAAC+B,eAAe,CAACpI,GAAG,CAACqI,IAAAA,CAAAA,CAAAA;AAEpD,QAAA,IAAIT,cAAc/mB,SAAW,EAAA;YAC3B,IAAI,CAAC8mB,qBAAqB,CAACC,SAAAA,CAAU,CAAC1d,KAAK,CAACd,QAAQ,CAACc,KAAAA,CAAAA,CAAAA;AACvD,SAAA;AACF,KAAA,CAAA;AAEAgnB,IAAAA,MAAAA,CAAAA,QAMC,GANDA,SAAAA,QAAU7I,CAAAA,IAAY,EAAEpoB,KAAa,EAAA;QACnC,IAAMgoB,mBAAAA,GAAsB,IAAI,CAAC5B,QAAQ,CAACiC,iBAAiB,CAACtI,GAAG,CAACqI,IAAAA,CAAAA,CAAAA;AAEhE,QAAA,IAAIJ,wBAAwBpnB,SAAW,EAAA;AACrC,YAAA,IAAI,CAACmnB,mBAAmB,CAACC,mBAAAA,CAAoB,GAAGhoB,KAAAA,CAAAA;AAClD,SAAA;AACF,KAAA,CAAA;AAEAmJ,IAAAA,MAAAA,CAAAA,QAYC,GAZDA,SAAAA,QAAAA,CAAU+c,IAAU,EAAA;QAClB,IAAK,IAAIjkB,CAAI,GAAA,CAAA,EAAEA,CAAI,GAAA,IAAI,CAACylB,qBAAqB,CAAChmB,MAAM,EAACO,CAAK,EAAA,CAAA;YACxD,IAAI,CAACylB,qBAAqB,CAACzlB,CAAE,CAAA,CAACkH,QAAQ,CAAC+c,IAAAA,CAAKwB,qBAAqB,CAACzlB,CAAE,CAAA,CAAA,CAAA;AACtE,SAAA;QAEA,IAAK,IAAIA,EAAI,GAAA,CAAA,EAAEA,EAAI,GAAA,IAAI,CAACimB,mBAAmB,CAACxmB,MAAM,EAACO,EAAK,EAAA,CAAA;YACtD,IAAI,CAACimB,mBAAmB,CAACjmB,EAAE,CAAA,CAACkH,QAAQ,CAAC+c,IAAAA,CAAKgC,mBAAmB,CAACjmB,EAAE,CAAA,CAAA,CAAA;AAClE,SAAA;QAEA,IAAK,IAAIA,EAAI,GAAA,CAAA,EAAEA,EAAI,GAAA,IAAI,CAAC8lB,mBAAmB,CAACrmB,MAAM,EAACO,EAAK,EAAA,CAAA;YACtD,IAAI,CAAC8lB,mBAAmB,CAAC9lB,EAAAA,CAAE,GAAGikB,IAAK6B,CAAAA,mBAAmB,CAAC9lB,EAAE,CAAA,CAAA;AAC3D,SAAA;AACF,KAAA,CAAA;AAzEWuuB,IAAAA,OAAAA,IAAAA,CAAAA;AA0EZ,CAAA;;ACtGM,IAAMU,UAAN,GAAA,SAAMA,WAGE9K,QAAkB,EAAA;AAC7B,IAAA,IAAI,CAACF,IAAI,GAAG,IAAIsK,IAAKpK,CAAAA,QAAAA,CAAAA,CAAAA;AAExB,CAAA;;ACCM,IAAA,qBAAM+K,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,qBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASnM,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACwO,iBAAmB3R,EAAAA,OAAAA,CAAAA,CAAAA;AAEhDqD,QAAAA,IAAAA,CAAKuO,QAAQ,GAAG5R,OAAAA,CAAQsF,OAAO,CAAW,IAAI,CAACuM,aAAa,CAAA,CAAA;AAC5DxO,QAAAA,IAAAA,CAAKyO,YAAY,GAAG9R,OAAAA,CAAQsF,OAAO,CAAW,IAAI,CAACyM,iBAAiB,CAAA,CAAA;AACpE1O,QAAAA,IAAAA,CAAK2O,uBAAuB,GAAGhS,OAAAA,CAAQsF,OAAO,CAAiB,IAAI,CAAC2M,4BAA4B,CAAA,CAAA;AAClG,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS/O,IAKR,GALD,SAASA,IAAAA,CAAM9O,IAAgC,EAAA;AAC7C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACyd,aAAa,GAAGzd,IAAAA,CAAKyd,aAAa,CAAA;AACvC,QAAA,IAAI,CAACE,iBAAiB,GAAG3d,IAAAA,CAAK2d,iBAAiB,CAAA;AAC/C,QAAA,IAAI,CAACE,4BAA4B,GAAG7d,IAAAA,CAAK6d,4BAA4B,CAAA;AACvE,KAAA,CAAA;AAlBWP,IAAAA,OAAAA,qBAAAA,CAAAA;EAA8BzO,aAmB1C,EAAA;AAnBYyO,qBAAAA,GAAAA,UAAAA,CAAAA;IADZ3P,aAAcoE,CAAAA,YAAiB,CAACuL,qBAAqB,CAAA;AACzCA,CAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AAqBN,IAAA,iBAAMC,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;cACXC,QAA4B,GAAA,IAAA,CAAA;cAC5BE,YAAgC,GAAA,IAAA,CAAA;cAEhCE,uBAAiD,GAAA,IAAA,CAAA;;;AAJtCL,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AASX,IAAA,MAAA,CAAmBjP,kBAQlB,GARD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAK1D,QAAA,IAAA,cAAA,EACA,kBACA,EAAA,6BAAA,CAAA;AANA,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAI,CAACkS,cAAc,GAAG,IAAIT,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AACrD,QAAA,IAAI,CAACwL,kBAAkB,GAAG,IAAIV,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AAEzD,QAAA,CAAA,cAAA,GAAA,IAAI,CAACiL,QAAQ,KAAb,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAenP,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC1B,QAAA,CAAA,kBAAA,GAAA,IAAI,CAAC8R,YAAY,KAAjB,IAAA,GAAA,KAAA,CAAA,GAAA,kBAAA,CAAmBrP,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC9B,QAAA,CAAA,6BAAA,GAAA,IAAI,CAACgS,uBAAuB,KAA5B,IAAA,GAAA,KAAA,CAAA,GAAA,6BAAA,CAA8BvP,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB4C,gBAKlB,GALD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAA,cAAA,EACA,kBACA,EAAA,6BAAA,CAAA;AAFA,QAAA,CAAA,cAAA,GAAA,IAAI,CAAC4R,QAAQ,KAAb,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAejP,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACxB,QAAA,CAAA,kBAAA,GAAA,IAAI,CAAC8R,YAAY,KAAjB,IAAA,GAAA,KAAA,CAAA,GAAA,kBAAA,CAAmBnP,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAC5B,QAAA,CAAA,6BAAA,GAAA,IAAI,CAACgS,uBAAuB,KAA5B,IAAA,GAAA,KAAA,CAAA,GAAA,6BAAA,CAA8BrP,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACvC,QAAA,QAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASqG,QAmBR,GAnBD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC0L,uBAAuB,EAAE;YACjC,OAAO1L,MAAAA,CAAAA;AACT,SAAA;QAEA,IAAI,CAACtD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AAEpB,QAAA,IAAMkP,cAAc,IAAI,CAAC8C,uBAAuB,CAACjK,QAAQ,CAAS/H,OAAAA,CAAAA,CAAAA;QAElE,IAAI,IAAI,CAAC4R,QAAQ,IAAI,CAAC,IAAI,CAACE,YAAY,EAAE;YACvC,IAAI,CAACF,QAAQ,CAACvL,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAACkS,cAAc,CAAA,CAAA;AACnD,YAAA,IAAI,CAACE,aAAa,CAAC,IAAI,CAACF,cAAc,CAACzL,IAAI,EAAE,IAAI,CAAC0L,kBAAkB,CAAC1L,IAAI,EAAEyI,WAAAA,EAAa5I,OAAOG,IAAI,CAAA,CAAA;SAC9F,MAAA,IAAI,IAAI,CAACmL,QAAQ,IAAI,IAAI,CAACE,YAAY,EAAE;YAC7C,IAAI,CAACF,QAAQ,CAACvL,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAACkS,cAAc,CAAA,CAAA;YACnD,IAAI,CAACJ,YAAY,CAACzL,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAACmS,kBAAkB,CAAA,CAAA;AAC3D,YAAA,IAAI,CAACC,aAAa,CAAC,IAAI,CAACF,cAAc,CAACzL,IAAI,EAAE,IAAI,CAAC0L,kBAAkB,CAAC1L,IAAI,EAAEyI,WAAAA,EAAa5I,OAAOG,IAAI,CAAA,CAAA;AACrG,SAAA;QAEA,OAAOH,MAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ8L,CAAAA,aAEP,GAFD,SAAQA,aAAepD,CAAAA,UAAgB,EAAEC,UAAgB,EAAEC,WAAmB,EAAEC,UAAgB,EAAA;AAC9FL,QAAAA,OAAAA,CAAQQ,aAAa,CAACN,UAAYC,EAAAA,UAAAA,EAAYC,WAAaC,EAAAA,UAAAA,CAAAA,CAAAA;AAC7D,KAAA,CAAA;AAjDWwC,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BpO,QAkDtC;;ACvEM,IAAA,aAAM8O,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAAS9M,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACmP,SAAWtS,EAAAA,OAAAA,CAAAA,CAAAA;AAExCqD,QAAAA,IAAAA,CAAKkP,OAAO,GAAGvS,OAAAA,CAAQsF,OAAO,CAAW,IAAI,CAACkN,gBAAgB,CAAA,CAAA;AAC9DnP,QAAAA,IAAAA,CAAKoP,OAAO,GAAGzS,OAAAA,CAAQsF,OAAO,CAAW,IAAI,CAACoN,gBAAgB,CAAA,CAAA;AAC9DrP,QAAAA,IAAAA,CAAK2O,uBAAuB,GAAGhS,OAAAA,CAAQsF,OAAO,CAAiB,IAAI,CAAC2M,4BAA4B,CAAA,CAAA;AAClG,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS/O,IAKR,GALD,SAASA,IAAAA,CAAM9O,IAAwB,EAAA;AACrC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACoe,gBAAgB,GAAGpe,IAAAA,CAAKoe,gBAAgB,CAAA;AAC7C,QAAA,IAAI,CAACE,gBAAgB,GAAGte,IAAAA,CAAKse,gBAAgB,CAAA;AAC7C,QAAA,IAAI,CAACT,4BAA4B,GAAG7d,IAAAA,CAAK6d,4BAA4B,CAAA;AACvE,KAAA,CAAA;AAlBWI,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBpP,aAmBlC,EAAA;AAnBYoP,aAAAA,GAAAA,UAAAA,CAAAA;IADZtQ,aAAcoE,CAAAA,YAAiB,CAACkM,aAAa,CAAA;AACjCA,CAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAqBN,IAAA,SAAMC,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,GAAAA;;;cACXC,OAA2B,GAAA,IAAA,CAAA;cAC3BE,OAA2B,GAAA,IAAA,CAAA;cAE3BT,uBAAiD,GAAA,IAAA,CAAA;;;AAJtCM,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AASX,IAAA,MAAA,CAAmB5P,kBAQlB,GARD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAK1D,QAAA,IAAA,aAAA,EACA,aACA,EAAA,6BAAA,CAAA;AANA,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAI,CAAC2S,aAAa,GAAG,IAAIlB,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AACpD,QAAA,IAAI,CAACiM,aAAa,GAAG,IAAInB,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AAEpD,QAAA,CAAA,aAAA,GAAA,IAAI,CAAC4L,OAAO,KAAZ,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAc9P,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACzB,QAAA,CAAA,aAAA,GAAA,IAAI,CAACyS,OAAO,KAAZ,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAchQ,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACzB,QAAA,CAAA,6BAAA,GAAA,IAAI,CAACgS,uBAAuB,KAA5B,IAAA,GAAA,KAAA,CAAA,GAAA,6BAAA,CAA8BvP,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB4C,gBAKlB,GALD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAA,aAAA,EACA,aACA,EAAA,6BAAA,CAAA;AAFA,QAAA,CAAA,aAAA,GAAA,IAAI,CAACuS,OAAO,KAAZ,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAc5P,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACvB,QAAA,CAAA,aAAA,GAAA,IAAI,CAACyS,OAAO,KAAZ,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAc9P,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACvB,QAAA,CAAA,6BAAA,GAAA,IAAI,CAACgS,uBAAuB,KAA5B,IAAA,GAAA,KAAA,CAAA,GAAA,6BAAA,CAA8BrP,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACvC,QAAA,QAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASqG,QAmBR,GAnBD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC0L,uBAAuB,EAAE;YACjC,OAAO1L,MAAAA,CAAAA;AACT,SAAA;QAEA,IAAI,CAACtD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AAEpB,QAAA,IAAMkP,cAAc,IAAI,CAAC8C,uBAAuB,CAACjK,QAAQ,CAAS/H,OAAAA,CAAAA,CAAAA;QAElE,IAAI,IAAI,CAACuS,OAAO,IAAI,CAAC,IAAI,CAACE,OAAO,EAAE;YACjC,IAAI,CAACF,OAAO,CAAClM,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAAC2S,aAAa,CAAA,CAAA;AACjD,YAAA,IAAI,CAAC5D,UAAU,CAAC,IAAI,CAAC4D,aAAa,CAAClM,IAAI,EAAE,IAAI,CAACmM,aAAa,CAACnM,IAAI,EAAEyI,WAAAA,EAAa5I,OAAOG,IAAI,CAAA,CAAA;SACrF,MAAA,IAAI,IAAI,CAAC8L,OAAO,IAAI,IAAI,CAACE,OAAO,EAAE;YACvC,IAAI,CAACF,OAAO,CAAClM,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAAC2S,aAAa,CAAA,CAAA;YACjD,IAAI,CAACF,OAAO,CAACpM,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAAC4S,aAAa,CAAA,CAAA;AACjD,YAAA,IAAI,CAAC7D,UAAU,CAAC,IAAI,CAAC4D,aAAa,CAAClM,IAAI,EAAE,IAAI,CAACmM,aAAa,CAACnM,IAAI,EAAEyI,WAAAA,EAAa5I,OAAOG,IAAI,CAAA,CAAA;AAC5F,SAAA;QAEA,OAAOH,MAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQyI,CAAAA,UAEP,GAFD,SAAQA,UAAYC,CAAAA,UAAgB,EAAEC,UAAgB,EAAEC,WAAmB,EAAEC,UAAgB,EAAA;AAC3FL,QAAAA,OAAAA,CAAQC,UAAU,CAACC,UAAYC,EAAAA,UAAAA,EAAYC,WAAaC,EAAAA,UAAAA,CAAAA,CAAAA;AAC1D,KAAA,CAAA;AAjDWmD,IAAAA,OAAAA,SAAAA,CAAAA;EAAkB/O,QAkD9B;;AC3EM,IAAA,WAAMsP,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AACHC,QAAAA,KAAAA,CAAAA,oBAAAA,GAAiC,EAAE,CAAA;;;AADhCD,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAStN,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAAC4P,OAAS/S,EAAAA,OAAAA,CAAAA,CAAAA;QAEtC,IAAiC,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC8S,oBAAoB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjDE,YAAAA,IAAAA,kBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT3P,YAAAA,IAAAA,CAAK4P,cAAc,CAAC9uB,IAAI,CAAC6b,OAAAA,CAAQsF,OAAO,CAAgB0N,kBAAAA,CAAAA,CAAAA,CAAAA;AAC1D,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9P,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAAsB,EAAA;AACnC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAAC0e,oBAAoB,GAAG1e,IAAAA,CAAK0e,oBAAoB,CAAA;AACvD,KAAA,CAAA;AAdWD,IAAAA,OAAAA,WAAAA,CAAAA;EAAoB5P,aAehC,EAAA;AAfY4P,WAAAA,GAAAA,UAAAA,CAAAA;IADZ9Q,aAAcoE,CAAAA,YAAiB,CAAC0M,WAAW,CAAA;AAC/BA,CAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAiBN,IAAA,OAAME,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,OAAAA,GAAAA;;;AACXE,QAAAA,KAAAA,CAAAA,cAAAA,GAAkC,EAAE,CAAA;cAE5B3M,MAAS,GAAA,KAAA,CAAA;;;AAHNyM,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAAShL,QAcR,GAdD,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;YACpB,IAAI,CAACsG,MAAM,GAAG,IAAA,CAAA;YACd,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC2M,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlC9d,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAI,CAACA,SAAAA,CAAU4S,QAAQ,CAAU/H,OAAU,CAAA,EAAA;oBACzC,IAAI,CAACsG,MAAM,GAAG,KAAA,CAAA;AAEd,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACA,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB5D,kBAQlB,GARD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,aAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;QAEzB,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACiT,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7B5P,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKZ,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAClB,SAAA;QAEA,IAAI,CAACsG,MAAM,GAAG,KAAA,CAAA;AAChB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB1D,gBAMlB,GAND,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;QACxD,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACiT,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7B5P,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKV,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAChB,SAAA;AAEA,QAAA,aAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AArCW+S,IAAAA,OAAAA,OAAAA,CAAAA;EAAgB7O,aAsC5B,EAAA;AAKM,IAAA,UAAMgP,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,UAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,UAAAA,GAAAA;;;AACHJ,QAAAA,KAAAA,CAAAA,oBAAAA,GAAiC,EAAE,CAAA;;;AADhCI,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAS3N,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACgQ,MAAQnT,EAAAA,OAAAA,CAAAA,CAAAA;QAErC,IAAiC,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC8S,oBAAoB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjDE,YAAAA,IAAAA,kBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT3P,YAAAA,IAAAA,CAAK4P,cAAc,CAAC9uB,IAAI,CAAC6b,OAAAA,CAAQsF,OAAO,CAAgB0N,kBAAAA,CAAAA,CAAAA,CAAAA;AAC1D,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9P,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAAqB,EAAA;AAClC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAAC0e,oBAAoB,GAAG1e,IAAAA,CAAK0e,oBAAoB,CAAA;AACvD,KAAA,CAAA;AAdWI,IAAAA,OAAAA,UAAAA,CAAAA;EAAmBjQ,aAe/B,EAAA;AAfYiQ,UAAAA,GAAAA,UAAAA,CAAAA;IADZnR,aAAcoE,CAAAA,YAAiB,CAAC+M,UAAU,CAAA;AAC9BA,CAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAiBN,IAAA,MAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,MAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,MAAAA,GAAAA;;;AACXF,QAAAA,KAAAA,CAAAA,cAAAA,GAAkC,EAAE,CAAA;cAE5B3M,MAAS,GAAA,KAAA,CAAA;;;AAHN6M,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASpL,QAcR,GAdD,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;YACpB,IAAI,CAACsG,MAAM,GAAG,KAAA,CAAA;YACd,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC2M,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlC9d,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAIA,SAAAA,CAAU4S,QAAQ,CAAU/H,OAAU,CAAA,EAAA;oBACxC,IAAI,CAACsG,MAAM,GAAG,IAAA,CAAA;AAEd,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACA,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB5D,kBAQlB,GARD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,aAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;QAEzB,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACiT,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7B5P,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKZ,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAClB,SAAA;QAEA,IAAI,CAACsG,MAAM,GAAG,KAAA,CAAA;AAChB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB1D,gBAMlB,GAND,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;QACxD,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACiT,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7B5P,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKV,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAChB,SAAA;AAEA,QAAA,aAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AArCWmT,IAAAA,OAAAA,MAAAA,CAAAA;EAAejP,aAsC3B,EAAA;AAKM,IAAA,WAAMkP,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;cACHC,mBAAsBpR,GAAAA,YAAAA,CAAAA;;;AADnBmR,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAS7N,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACmQ,OAAStT,EAAAA,OAAAA,CAAAA,CAAAA;AAEtCqD,QAAAA,IAAAA,CAAKkQ,cAAc,GAAGvT,OAAAA,CAAQsF,OAAO,CAAgB,IAAI,CAAC+N,mBAAmB,CAAA,CAAA;AAC/E,KAAA,CAAA;AAEA,IAAA,MAAA,CAASnQ,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAAsB,EAAA;AACnC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACif,mBAAmB,GAAGjf,IAAAA,CAAKif,mBAAmB,CAAA;AACrD,KAAA,CAAA;AAZWD,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBnQ,aAahC,EAAA;AAbYmQ,WAAAA,GAAAA,UAAAA,CAAAA;IADZrR,aAAcoE,CAAAA,YAAiB,CAACiN,WAAW,CAAA;AAC/BA,CAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAeN,IAAA,OAAME,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,OAAAA,GAAAA;;;cACXC,cAAuC,GAAA,IAAA,CAAA;cAE/BjN,MAAS,GAAA,KAAA,CAAA;;;AAHNgN,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASvL,QASR,GATD,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;YACpB,IAAI,IAAI,CAACuT,cAAc,EAAE;gBACvB,IAAI,CAACjN,MAAM,GAAG,CAAC,IAAI,CAACiN,cAAc,CAACxL,QAAQ,CAAU/H,OAAAA,CAAAA,CAAAA;AACvD,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACsG,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB5D,kBAIlB,GAJD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAE1D,QAAA,IAAA,oBAAA,CAAA;AADA,QAAA,aAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,QAAA,CAAA,oBAAA,GAAA,IAAI,CAACuT,cAAc,KAAnB,IAAA,GAAA,KAAA,CAAA,GAAA,oBAAA,CAAqB9Q,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;QAChC,IAAI,CAACsG,MAAM,GAAG,KAAA,CAAA;AAChB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB1D,gBAGlB,GAHD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAA,oBAAA,CAAA;AAAA,QAAA,CAAA,oBAAA,GAAA,IAAI,CAACuT,cAAc,KAAnB,IAAA,GAAA,KAAA,CAAA,GAAA,oBAAA,CAAqB5Q,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAC9B,QAAA,aAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAzBWsT,IAAAA,OAAAA,OAAAA,CAAAA;EAAgBpP,aA0B5B;;ACjKM,IAAA,kBAAMsP,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;cACXjzB,KAAQ,GAAA,CAAA,CAAA;;;AADGizB,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASjO,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACsQ,cAAgBzT,EAAAA,OAAAA,CAAAA,CAAAA;AAE7CqD,QAAAA,IAAAA,CAAK9iB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2iB,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAA6B,EAAA;AAC1C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAAC7T,KAAK,GAAG6T,IAAAA,CAAK7T,KAAK,CAAA;AACzB,KAAA,CAAA;AAZWizB,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BvQ,aAavC,EAAA;AAbYuQ,kBAAAA,GAAAA,UAAAA,CAAAA;IADZzR,aAAcoE,CAAAA,YAAiB,CAACqN,kBAAkB,CAAA;AACtCA,CAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAeN,IAAA,cAAMC,iBAAD,SAAL,cAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;cACXlzB,KAAQ,GAAA,CAAA,CAAA;;;AADGkzB,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAS1L,QAMR,GAND,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,OAAO,IAAI,CAACzf,KAAK,CAAA;AACnB,KAAA,CAAA;AATWkzB,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBxP,cAUnC,EAAA;AAGM,IAAA,iBAAMyP,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;cACXnzB,KAAQ,GAAA,IAAA,CAAA;;;AADGmzB,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASnO,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACwQ,aAAe3T,EAAAA,OAAAA,CAAAA,CAAAA;AAE5CqD,QAAAA,IAAAA,CAAK9iB,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2iB,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAA4B,EAAA;AACzC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAAC7T,KAAK,GAAG6T,IAAAA,CAAK7T,KAAK,CAAA;AACzB,KAAA,CAAA;AAZWmzB,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BzQ,aAatC,EAAA;AAbYyQ,iBAAAA,GAAAA,UAAAA,CAAAA;IADZ3R,aAAcoE,CAAAA,YAAiB,CAACuN,iBAAiB,CAAA;AACrCA,CAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAeN,IAAA,aAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;cACXpzB,KAAQ,GAAA,IAAA,CAAA;;;AADGozB,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAS5L,QAMR,GAND,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,OAAO,IAAI,CAACzf,KAAK,CAAA;AACnB,KAAA,CAAA;AATWozB,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBzP,aAUlC;;ACrDM,IAAA,6BAAM0P,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,6BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,6BAAAA,GAAAA;;;cACXrzB,KAAQ,GAAA,CAAA,CAAA;;;AADGqzB,IAAAA,IAAAA,MAAAA,GAAAA,6BAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASrO,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAAC0Q,yBAA2B7T,EAAAA,OAAAA,CAAAA,CAAAA;AAExDqD,QAAAA,IAAAA,CAAKW,QAAQ,CAAC,IAAI,CAACzjB,KAAK,CAAA,CAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2iB,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAAwC,EAAA;AACrD,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAAC7T,KAAK,GAAG6T,IAAAA,CAAK7T,KAAK,CAAA;AACzB,KAAA,CAAA;AAZWqzB,IAAAA,OAAAA,6BAAAA,CAAAA;EAAsC3Q,aAalD,EAAA;AAbY2Q,6BAAAA,GAAAA,UAAAA,CAAAA;IADZ7R,aAAcoE,CAAAA,YAAiB,CAACyN,6BAA6B,CAAA;AACjDA,CAAAA,EAAAA,6BAAAA,CAAAA,CAAAA;AAeN,IAAA,yBAAMC,iBAAD,SAAL,cAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,yBAAAA,GAAAA;;;cACHtzB,KAAQ,GAAA,CAAA,CAAA;;;AADLszB,IAAAA,IAAAA,MAAAA,GAAAA,yBAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAS9L,QAMR,GAND,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,OAAO,IAAI,CAACzf,KAAK,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASyjB,QAER,GAFD,SAASA,QAAAA,CAAazjB,KAAQ,EAAA;QAC5B,IAAI,CAACA,KAAK,GAAGA,KAAAA,CAAAA;AACf,KAAA,CAAA;AAbWszB,IAAAA,OAAAA,yBAAAA,CAAAA;EAAkC5P,cAc9C,EAAA;AAGM,IAAA,4BAAM6P,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,4BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,4BAAAA,GAAAA;;;cACHvzB,KAAQ,GAAA,KAAA,CAAA;;;AADLuzB,IAAAA,IAAAA,MAAAA,GAAAA,4BAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASvO,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAAC4Q,wBAA0B/T,EAAAA,OAAAA,CAAAA,CAAAA;AAEvDqD,QAAAA,IAAAA,CAAKW,QAAQ,CAAC,IAAI,CAACzjB,KAAK,CAAA,CAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2iB,IAGR,GAHD,SAASA,IAAAA,CAAM9O,IAAuC,EAAA;AACpD,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAAC7T,KAAK,GAAG6T,IAAAA,CAAK7T,KAAK,CAAA;AACzB,KAAA,CAAA;AAZWuzB,IAAAA,OAAAA,4BAAAA,CAAAA;EAAqC7Q,aAajD,EAAA;AAbY6Q,4BAAAA,GAAAA,UAAAA,CAAAA;IADZ/R,aAAcoE,CAAAA,YAAiB,CAAC2N,4BAA4B,CAAA;AAChDA,CAAAA,EAAAA,4BAAAA,CAAAA,CAAAA;AAeN,IAAA,wBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,wBAAAA,GAAAA;;;cACHxzB,KAAQ,GAAA,KAAA,CAAA;;;AADLwzB,IAAAA,IAAAA,MAAAA,GAAAA,wBAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAShM,QAMR,GAND,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,OAAO,IAAI,CAACzf,KAAK,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASyjB,QAER,GAFD,SAASA,QAAAA,CAAazjB,KAAQ,EAAA;QAC5B,IAAI,CAACA,KAAK,GAAGA,KAAAA,CAAAA;AACf,KAAA,CAAA;AAbWwzB,IAAAA,OAAAA,wBAAAA,CAAAA;EAAiC7P,aAc7C,EAAA;AAGM,IAAA,+BAAM8P,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,+BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,+BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,+BAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAASzO,WAER,GAFD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;QACjD,IAAI,CAACmD,UAAU,CAAC8Q,2BAA6BjU,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AAEA,IAAA,MAAA,CAASkD,IAER,GAFD,SAASA,IAAAA,CAAM9O,IAA0C,EAAA;AACvD,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA;AAPW4f,IAAAA,OAAAA,+BAAAA,CAAAA;EAAwC/Q,aAQpD,EAAA;AARY+Q,+BAAAA,GAAAA,UAAAA,CAAAA;IADZjS,aAAcoE,CAAAA,YAAiB,CAAC6N,+BAA+B,CAAA;AACnDA,CAAAA,EAAAA,+BAAAA,CAAAA,CAAAA;AAUN,IAAA,2BAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,2BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,2BAAAA,GAAAA;;;cACH1zB,KAAQ,GAAA,KAAA,CAAA;;;AADL0zB,IAAAA,IAAAA,MAAAA,GAAAA,2BAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASlM,QAMR,GAND,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,OAAO,IAAI,CAACzf,KAAK,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASyjB,QAER,GAFD,SAASA,QAAAA,CAAazjB,KAAQ,EAAA;QAC5B,IAAI,CAACA,KAAK,GAAGA,KAAAA,CAAAA;AACf,KAAA,CAAA;AAbW0zB,IAAAA,OAAAA,2BAAAA,CAAAA;EAAoC/P,aAchD;;AC7EM,IAAA,kBAAMgQ,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;cACXrC,aAAgB5P,GAAAA,YAAAA,CAAAA;AAChBkS,QAAAA,KAAAA,CAAAA,UAAAA,GAA0B,EAAE,CAAA;;;AAFjBD,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAAS3O,WAWR,GAXD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACiR,cAAgBpU,EAAAA,OAAAA,CAAAA,CAAAA;AAE7CqD,QAAAA,IAAAA,CAAKgR,aAAa,GAAGrU,OAAAA,CAAQsF,OAAO,CAAW,IAAI,CAACuM,aAAa,CAAA,CAAA;QACjE,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACsC,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BG,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACTjR,IAAKkR,CAAAA,MAAM,CAACpwB,IAAI,CAAC;AACfqwB,gBAAAA,SAAAA,EAAWxU,OAAQsF,CAAAA,OAAO,CAAWgP,SAAAA,CAAUG,cAAc,CAAA;AAC7DC,gBAAAA,eAAAA,EAAiB1U,OAAQsF,CAAAA,OAAO,CAAiBgP,SAAAA,CAAUK,oBAAoB,CAAA;gBAC/E3G,MAAQ,EAAA,CAAA;AACV,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9K,IAcR,GAdD,SAASA,IAAAA,CAAM9O,IAA6B,EAAA;AAC1C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEUA,QAAAA,IAAAA,mBAAAA,CAAAA;QAArB,IAAI,CAACyd,aAAa,GAAGzd,CAAAA,sBAAAA,IAAKyd,CAAAA,aAAa,YAAlBzd,mBAAsB6N,GAAAA,YAAAA,CAAAA;QAE3C,IAAI7N,IAAAA,CAAK+f,UAAU,EAAE;YACnB,IAAwB/f,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK+f,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BG,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAI,CAACH,UAAU,CAAChwB,IAAI,CAAC,QAAA,CAAA;oBACnBswB,cAAgBxS,EAAAA,YAAAA;oBAChB0S,oBAAsB1S,EAAAA,YAAAA;AACnBqS,iBAAAA,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AAEP,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AA/BWJ,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BjR,aAgCvC,EAAA;AAhCYiR,kBAAAA,GAAAA,UAAAA,CAAAA;IADZnS,aAAcoE,CAAAA,YAAiB,CAAC+N,kBAAkB,CAAA;AACtCA,CAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAkCN,IAAA,cAAME,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;cACXC,aAAiC,GAAA,IAAA,CAAA;AACjCE,QAAAA,KAAAA,CAAAA,MAAAA,GAAkB,EAAE,CAAA;;;AAFTH,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAMX,IAAA,MAAA,CAAmB1R,kBAelB,GAfD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;;AAS1D,QAAA,mBAAA,CAAA;AARA,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;;AAIzB,QAAA,IAAI,CAAC4U,eAAe,GAAG,IAAInD,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AAItD,QAAA,CAAA,mBAAA,GAAA,IAAI,CAAC0N,aAAa,KAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAoB5R,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;QAE/B,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACuU,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtBM,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACTA,gBACAA,EAAAA,sBAAAA,CAAAA;AADAA,YAAAA,CAAAA,gBAAAA,GAAAA,KAAML,CAAAA,SAAS,KAAfK,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAiBpS,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC5B6U,YAAAA,CAAAA,sBAAAA,GAAAA,KAAMH,CAAAA,eAAe,KAArBG,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,CAAuBpS,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACpC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB4C,gBASlB,GATD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAA,mBAAA,CAAA;AAAA,QAAA,CAAA,mBAAA,GAAA,IAAI,CAACqU,aAAa,KAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAoB1R,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;QAE7B,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACuU,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtBM,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACTA,gBACAA,EAAAA,sBAAAA,CAAAA;AADAA,YAAAA,CAAAA,gBAAAA,GAAAA,KAAML,CAAAA,SAAS,KAAfK,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAiBlS,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAC1B6U,YAAAA,CAAAA,sBAAAA,GAAAA,KAAMH,CAAAA,eAAe,KAArBG,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,CAAuBlS,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAClC,SAAA;AAEA,QAAA,QAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASqG,QAeR,GAfD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;AAC1D,QAAA,IAAI,EAAE,IAAI,CAAC+N,aAAa,IAAI,IAAI,CAACA,aAAa,CAAC9R,OAAO,EAAC,CAAI,EAAA;YACzD,OAAO+D,MAAAA,CAAAA;AACT,SAAA;QAEA,IAAI,CAACtD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AAEpB,QAAA,IAAI,CAACyD,YAAY,GAAG,IAAI,CAAC4Q,aAAa,CAAC1Q,cAAc,EAAA,CAAA;AACrD2C,QAAAA,MAAAA,GAAS,IAAI,CAAC+N,aAAa,CAAChO,QAAQ,CAACrG,OAASsG,EAAAA,MAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI,CAAC5C,WAAW,GAAG,IAAI,CAAC2Q,aAAa,CAAC1Q,cAAc,EAAA,CAAA;AACpD,QAAA,IAAI,CAACH,QAAQ,GAAG,IAAI,CAAC6Q,aAAa,CAACxQ,WAAW,EAAA,CAAA;QAE9C,IAAI,CAACiR,YAAY,CAAC9U,OAASsG,EAAAA,MAAAA,CAAAA,CAAAA;QAE3B,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQwO,YAYP,GAZD,SAAQA,YAAc9U,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;QAC7D,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACiO,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtBM,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,KAAML,CAAAA,SAAS,IAAIK,KAAAA,CAAMH,eAAe,EAAE;gBAC5C,IAAI,CAACE,eAAe,CAACnO,IAAI,CAAC/c,QAAQ,CAAC4c,OAAOG,IAAI,CAAA,CAAA;AAC9CoO,gBAAAA,KAAAA,CAAML,SAAS,CAACnO,QAAQ,CAACrG,OAAS,EAAA,IAAI,CAAC4U,eAAe,CAAA,CAAA;AACtD,gBAAA,IAAMG,WAAcF,GAAAA,KAAAA,CAAMH,eAAe,CAAC3M,QAAQ,CAAS/H,OAAAA,CAAAA,CAAAA;AAE3D8O,gBAAAA,OAAAA,CAAQC,UAAU,CAACzI,MAAOG,CAAAA,IAAI,EAAE,IAAI,CAACmO,eAAe,CAACnO,IAAI,EAAEsO,WAAAA,EAAazO,OAAOG,IAAI,CAAA,CAAA;AACrF,aAAA;AACF,SAAA;QAEA,OAAOH,MAAAA,CAAAA;AACT,KAAA,CAAA;AA/DW8N,IAAAA,OAAAA,cAAAA,CAAAA;EAAuB7Q,QAgEnC;;AC5GM,IAAA,aAAMyR,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;cACH3B,mBAAsBpR,GAAAA,YAAAA,CAAAA;cACtBgT,uBAA0BhT,GAAAA,YAAAA,CAAAA;;;AAFvB+S,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAASzP,WAKR,GALD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAAC+R,SAAWlV,EAAAA,OAAAA,CAAAA,CAAAA;AAExCqD,QAAAA,IAAAA,CAAKkQ,cAAc,GAAGvT,OAAAA,CAAQsF,OAAO,CAAY,IAAI,CAAC+N,mBAAmB,CAAA,CAAA;AACzEhQ,QAAAA,IAAAA,CAAK8R,kBAAkB,GAAGnV,OAAAA,CAAQsF,OAAO,CAAY,IAAI,CAAC2P,uBAAuB,CAAA,CAAA;AACnF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS/R,IAIR,GAJD,SAASA,IAAAA,CAAM9O,IAAwB,EAAA;AACrC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACif,mBAAmB,GAAGjf,IAAAA,CAAKif,mBAAmB,CAAA;AACnD,QAAA,IAAI,CAAC4B,uBAAuB,GAAG7gB,IAAAA,CAAK6gB,uBAAuB,CAAA;AAC7D,KAAA,CAAA;AAfWD,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB/R,aAgBlC,EAAA;AAhBY+R,aAAAA,GAAAA,UAAAA,CAAAA;IADZjT,aAAcoE,CAAAA,YAAiB,CAAC6O,aAAa,CAAA;AACjCA,CAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAkBb,IAAME,0BAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,GAAAA;;;cACJ3B,cAAmC,GAAA,IAAA,CAAA;cACnC4B,kBAAuC,GAAA,IAAA,CAAA;cAE/B7O,MAAS,GAAA,KAAA,CAAA;;;AAJb4O,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAMJ,IAAA,MAAA,CAAmBxS,kBAUlB,GAVD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,aAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;QAEzB,IAAI,IAAI,CAACuT,cAAc,EAAE;AACvB,YAAA,IAAI,CAACA,cAAc,CAAC9Q,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACjC,SAAA;QAEA,IAAI,IAAI,CAACmV,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAACA,kBAAkB,CAAC1S,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACrC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB4C,gBAUlB,GAVD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;QACxD,IAAI,IAAI,CAACuT,cAAc,EAAE;AACvB,YAAA,IAAI,CAACA,cAAc,CAAC5Q,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAC/B,SAAA;QAEA,IAAI,IAAI,CAACmV,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAACA,kBAAkB,CAACxS,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACnC,SAAA;AAEA,QAAA,aAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS+H,QAYR,GAZD,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AACpB,YAAA,IAAI,IAAI,CAACuT,cAAc,IAAI,IAAI,CAAC4B,kBAAkB,EAAE;AAClD,gBAAA,IAAMltB,IAAI,IAAI,CAACsrB,cAAc,CAACxL,QAAQ,CAAC/H,OAAAA,CAAAA,CAAAA;AACvC,gBAAA,IAAM9X,IAAI,IAAI,CAACitB,kBAAkB,CAACpN,QAAQ,CAAC/H,OAAAA,CAAAA,CAAAA;gBAE3C,IAAI,CAACsG,MAAM,GAAIre,CAAMC,KAAAA,CAAAA,CAAAA;AACvB,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACoe,MAAM,CAAA;AACpB,KAAA,CAAA;AA1CI4O,IAAAA,OAAAA,SAAAA,CAAAA;AAAkBhR,CAAAA,CAAAA,aAAAA,CAAAA,CAAAA;AA6CxB;AAEO,IAAA,uBAAekR,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,uBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,uBAAAA,GAAAA;;;cACV/B,mBAAsBpR,GAAAA,YAAAA,CAAAA;cACtBgT,uBAA0BhT,GAAAA,YAAAA,CAAAA;;;AAFhBmT,IAAAA,IAAAA,MAAAA,GAAAA,uBAAAA,CAAAA,SAAAA,CAAAA;AAIpB,IAAA,MAAA,CAASlS,IAIR,GAJD,SAASA,IAAAA,CAAM9O,IAAkC,EAAA;AAC/C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACX,QAAA,IAAI,CAACif,mBAAmB,GAAGjf,IAAAA,CAAKif,mBAAmB,CAAA;AACnD,QAAA,IAAI,CAAC4B,uBAAuB,GAAG7gB,IAAAA,CAAK6gB,uBAAuB,CAAA;AAC7D,KAAA,CAAA;AARoBG,IAAAA,OAAAA,uBAAAA,CAAAA;EAAgCnS,aASrD,EAAA;;AAEIoS,CAAAA,SAAAA,UAAAA,EAAAA;;;GAAAA,UAAAA,KAAAA,UAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKE,IAAA,mBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,GAAAA;;;cACX/B,cAAwC,GAAA,IAAA,CAAA;cACxC4B,kBAA4C,GAAA,IAAA,CAAA;AAC5CI,QAAAA,KAAAA,CAAAA,UAAAA,GAAAA,CAAAA,CAAAA;cAEQjP,MAAS,GAAA,KAAA,CAAA;;;AALNgP,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAOX,IAAA,MAAA,CAAmB5S,kBAUlB,GAVD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,aAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;QAEzB,IAAI,IAAI,CAACuT,cAAc,EAAE;AACvB,YAAA,IAAI,CAACA,cAAc,CAAC9Q,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACjC,SAAA;QAEA,IAAI,IAAI,CAACmV,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAACA,kBAAkB,CAAC1S,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACrC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB4C,gBAUlB,GAVD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;QACxD,IAAI,IAAI,CAACuT,cAAc,EAAE;AACvB,YAAA,IAAI,CAACA,cAAc,CAAC5Q,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAC/B,SAAA;QAEA,IAAI,IAAI,CAACmV,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAACA,kBAAkB,CAACxS,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACnC,SAAA;AAEA,QAAA,aAAA,CAAA,SAAA,CAAM4C,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS+H,QAsBR,GAtBD,SAASA,QAAAA,CAAa/H,OAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC+C,SAAS,CAAC/C,OAAU,CAAA,EAAA;YAC5B,IAAI,CAACgD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;AAEpB,YAAA,IAAI,IAAI,CAACuT,cAAc,IAAI,IAAI,CAAC4B,kBAAkB,EAAE;AAClD,gBAAA,IAAMltB,IAAI,IAAI,CAACsrB,cAAc,CAACxL,QAAQ,CAAS/H,OAAAA,CAAAA,CAAAA;AAC/C,gBAAA,IAAM9X,IAAI,IAAI,CAACitB,kBAAkB,CAACpN,QAAQ,CAAS/H,OAAAA,CAAAA,CAAAA;gBAEnD,OAAQ,IAAI,CAACuV,UAAU;AACrB,oBAAA,KAAA,CAAA;wBACE,IAAI,CAACjP,MAAM,GAAGre,CAAIC,GAAAA,CAAAA,CAAAA;AAElB,wBAAA,MAAA;AACF,oBAAA,KAAA,CAAA;wBACE,IAAI,CAACoe,MAAM,GAAGre,CAAIC,GAAAA,CAAAA,CAAAA;AAElB,wBAAA,MAAA;AACJ,iBAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACoe,MAAM,CAAA;AACpB,KAAA,CAAA;AArDWgP,IAAAA,OAAAA,mBAAAA,CAAAA;EAA4BpR,aAsDxC,EAAA;AAKM,IAAA,eAAMsR,iBAAD,SAAL,uBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,uBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAASjQ,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACmS,mBAAqBtV,EAAAA,OAAAA,CAAAA,CAAAA;AAElDqD,QAAAA,IAAAA,CAAKkS,UAAU,GAAA,CAAA,CAAA;AACflS,QAAAA,IAAAA,CAAKkQ,cAAc,GAAGvT,OAAAA,CAAQsF,OAAO,CAAY,IAAI,CAAC+N,mBAAmB,CAAA,CAAA;AACzEhQ,QAAAA,IAAAA,CAAK8R,kBAAkB,GAAGnV,OAAAA,CAAQsF,OAAO,CAAY,IAAI,CAAC2P,uBAAuB,CAAA,CAAA;AACnF,KAAA,CAAA;AAPWO,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBJ,uBAQpC,EAAA;AARYI,eAAAA,GAAAA,UAAAA,CAAAA;IADZzT,aAAcoE,CAAAA,YAAiB,CAACqP,eAAe,CAAA;AACnCA,CAAAA,EAAAA,eAAAA,CAAAA,CAAAA;AAaN,IAAA,YAAMC,iBAAD,SAAL,uBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,uBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAASlQ,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACmS,mBAAqBtV,EAAAA,OAAAA,CAAAA,CAAAA;AAElDqD,QAAAA,IAAAA,CAAKkS,UAAU,GAAA,CAAA,CAAA;AACflS,QAAAA,IAAAA,CAAKkQ,cAAc,GAAGvT,OAAAA,CAAQsF,OAAO,CAAY,IAAI,CAAC+N,mBAAmB,CAAA,CAAA;AACzEhQ,QAAAA,IAAAA,CAAK8R,kBAAkB,GAAGnV,OAAAA,CAAQsF,OAAO,CAAY,IAAI,CAAC2P,uBAAuB,CAAA,CAAA;AACnF,KAAA,CAAA;AAPWQ,IAAAA,OAAAA,YAAAA,CAAAA;EAAqBL,uBAQjC,EAAA;AARYK,YAAAA,GAAAA,UAAAA,CAAAA;IADZ1T,aAAcoE,CAAAA,YAAiB,CAACsP,YAAY,CAAA;AAChCA,CAAAA,EAAAA,YAAAA,CAAAA;;ACrJN,IAAA,oBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASnQ,WAqBR,GArBD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACwS,gBAAkB3V,EAAAA,OAAAA,CAAAA,CAAAA;QAE/C,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC4V,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BC,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMC,KAAmB,GAAA;AACvBC,gBAAAA,SAAAA,EAAW/V,OAAQsF,CAAAA,OAAO,CAAYuQ,SAAAA,CAAUG,cAAc,CAAA;AAC9DC,gBAAAA,WAAAA,EAAa,EAAE;AACjB,aAAA,CAAA;YAEA5S,IAAK6S,CAAAA,MAAM,CAAC/xB,IAAI,CAAC2xB,KAAAA,CAAAA,CAAAA;YAEjB,IAA6BD,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,SAAAA,CAAUM,eAAe,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA7CC,gBAAAA,IAAAA,cAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMC,UAA6B,GAAA;AACjCC,oBAAAA,cAAAA,EAAgBtW,OAAQsF,CAAAA,OAAO,CAAiB8Q,cAAAA,CAAeG,mBAAmB,CAAA;AAClFC,oBAAAA,aAAAA,EAAexW,OAAQsF,CAAAA,OAAO,CAAgB8Q,cAAAA,CAAepD,kBAAkB,CAAA;AAC/EyD,oBAAAA,gBAAAA,EAAkBL,eAAeK,gBAAgB;AACnD,iBAAA,CAAA;gBAEAX,KAAMG,CAAAA,WAAW,CAAC9xB,IAAI,CAACkyB,UAAAA,CAAAA,CAAAA;AACzB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASnT,IAMR,GAND,SAASA,IAAAA,CAAM9O,IAA+B,EAAA;AAC5C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEX,QAAA,IAAI,CAACwhB,UAAU,GAAGxhB,IAAAA,CAAKwhB,UAAU,CAAA;AACjC,QAAA,IAAI,CAACc,iBAAiB,GAAGtiB,IAAAA,CAAKsiB,iBAAiB,CAAA;AAC/C,QAAA,IAAI,CAACC,WAAW,GAAGviB,IAAAA,CAAKuiB,WAAW,CAAA;AACrC,KAAA,CAAA;AAlCWjB,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6BzS,aAmCzC,EAAA;AAnCYyS,oBAAAA,GAAAA,UAAAA,CAAAA;IADZ3T,aAAcoE,CAAAA,YAAiB,CAACuP,oBAAoB,CAAA;AACxCA,CAAAA,EAAAA,oBAAAA,CAAAA,CAAAA;AAgDb;;AAEC,IACM,IAAA,gBAAMC,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,gBAAAA,GAAAA;;;AACXO,QAAAA,KAAAA,CAAAA,MAAAA,GAAsB,EAAE,CAAA;cAChBU,gBAA0C,GAAA,IAAA,CAAA;cAC1CC,gBAAmB5U,GAAAA,YAAAA,CAAAA;;;AAHhB0T,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAKX;;;;MAKAmB,MAAAA,CAAAA,mBAEC,GAFDA,SAAAA,mBAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACZ,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAAC1T,WAAW,GAAkB0U,SAAS,CAAA;AAC5F,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS1Q,QAqCR,GArCD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;QAC1D,IAAI,CAACtD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;;AAGpB,QAAA,IAAI,IAAI,CAAC4W,gBAAgB,KAAK,IAAM,EAAA;AAClC,YAAA,IAAI,IAAI,CAACA,gBAAgB,CAACI,UAAU,CAAChX,OAAU,CAAA,EAAA;AAC7C,gBAAA,IAAI,CAAC4W,gBAAgB,CAACjU,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;gBAC/B,IAAI,CAAC4W,gBAAgB,GAAG,IAAA,CAAA;AAC1B,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,IAAI,CAACA,gBAAgB,KAAK,IAAM,EAAA;;YAElC,IAAMK,WAAAA,GAAc,IAAI,CAACf,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAAA;YAEhEzP,MAAS2Q,GAAAA,WAAAA,CAAY5Q,QAAQ,CAACrG,OAASsG,EAAAA,MAAAA,CAAAA,CAAAA;;AAGvC,YAAA,IAAI,CAAC9C,QAAQ,GAAGyT,WAAAA,CAAYpT,WAAW,EAAA,CAAA;AACvC,YAAA,IAAI,CAACJ,YAAY,GAAGwT,WAAAA,CAAYrT,eAAe,EAAA,CAAA;AAC/C,YAAA,IAAI,CAACF,WAAW,GAAGuT,WAAAA,CAAYtT,cAAc,EAAA,CAAA;SACxC,MAAA;;AAEL2C,YAAAA,MAAAA,GAAS,IAAI,CAACsQ,gBAAgB,CAACvQ,QAAQ,CAACrG,OAASsG,EAAAA,MAAAA,CAAAA,CAAAA;;AAGjD,YAAA,IAAI,CAAC9C,QAAQ,GAAG,IAAI,CAACoT,gBAAgB,CAAC/S,WAAW,EAAA,CAAA;AACjD,YAAA,IAAI,CAACJ,YAAY,GAAG,IAAI,CAACmT,gBAAgB,CAAChT,eAAe,EAAA,CAAA;AACzD,YAAA,IAAI,CAACF,WAAW,GAAG,IAAI,CAACkT,gBAAgB,CAACjT,cAAc,EAAA,CAAA;AACzD,SAAA;;AAGA,QAAA,IAAI3D,OAAQmF,CAAAA,WAAW,KAAKH,WAAAA,CAAYkS,MAAM,EAAE;YAC9C,IAAI,CAACC,mBAAmB,CAACnX,OAASsG,EAAAA,MAAAA,CAAAA,CAAAA;AACpC,SAAA;QAEA,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6Q,mBAmFP,GAnFD,SAAQA,mBACNnX,CAAAA,OAAqB,EACrBoX,gBAA4B,EAAA;QAE5B,IAAMC,wBAAAA,GAA2B,IAAI,CAACnB,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAAA;;AAGnE,QAAA,IAAIS,aAAgBrV,GAAAA,YAAAA,CAAAA;AACpB,QAAA,IAAMsV,cAAiBF,GAAAA,wBAAAA,CAAyBpB,WAAW,CAACh0B,MAAM,CAAA;AAElE,QAAA,IAAK,IAAIO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI+0B,gBAAgB/0B,CAAK,EAAA,CAAA;AACvC,YAAA,IAAM6zB,UAAagB,GAAAA,wBAAAA,CAAyBpB,WAAW,CAACzzB,CAAE,CAAA,CAAA;YAE1D,IAAI6zB,UAAAA,CAAWI,gBAAgB,KAAKxU,YAAc,EAAA;AAChD,gBAAA,MAAM,IAAIzd,KAAM,CAAA,6BAAA,CAAA,CAAA;AAClB,aAAA;;YAGA,IAAI,IAAI,CAAC0xB,MAAM,CAACG,UAAAA,CAAWI,gBAAgB,CAAC,CAACV,SAAS,CAACyB,eAAe,EAAI,EAAA;AACxE,gBAAA,SAAA;AACF,aAAA;AAEA,YAAA,IAAIC,kBAAqB,GAAA,KAAA,CAAA;;AAGzB,YAAA,IAAIpB,UAAWC,CAAAA,cAAc,CAACoB,WAAW,EAAE;gBACzC,IAAM3B,SAAAA,GAAYsB,yBAAyBtB,SAAS,CAAA;gBAEpD,IAAIA,SAAAA,CAAU4B,qBAAqB,EAAA,GAAK5B,SAAUlS,CAAAA,WAAW,KAAKwS,UAAWC,CAAAA,cAAc,CAACsB,QAAQ,EAAE;oBACpGH,kBAAqB,GAAA,IAAA,CAAA;AACvB,iBAAA;aACK,MAAA,IAAIpB,UAAWG,CAAAA,aAAa,KAAK,IAAA,IAAQH,WAAWG,aAAa,CAACzO,QAAQ,CAAU/H,OAAU,CAAA,EAAA;gBACnGyX,kBAAqB,GAAA,IAAA,CAAA;AACvB,aAAA;AAEA,YAAA,IAAIA,kBAAoB,EAAA;gBACtBH,aAAgB90B,GAAAA,CAAAA,CAAAA;AAEhB,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;;AAGA,QAAA,IAAI80B,kBAAkBrV,YAAc,EAAA;AAClC,YAAA,IAAMoU,WAAagB,GAAAA,wBAAAA,CAAyBpB,WAAW,CAACqB,aAAc,CAAA,CAAA;;;;;;;YAStEjB,WAAWC,CAAAA,cAAc,CAAC7T,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAErC,YAAA,IAAI,IAAI,CAAC4W,gBAAgB,KAAK,IAAM,EAAA;gBAClCQ,gBAAmBf,GAAAA,WAAAA,CAAWC,cAAc,CAACuB,6BAA6B,CACxE7X,SACAoX,gBACA,EAAA,IAAI,CAACR,gBAAgB,EACrBQ,gBAAAA,CAAAA,CAAAA;aAEG,MAAA;AACLA,gBAAAA,gBAAAA,GAAmBf,YAAWC,cAAc,CAACwB,wBAAwB,CACnE9X,SACAoX,gBACA,EAAA,IAAI,CAAClB,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,EAC5CqB,gBAAAA,CAAAA,CAAAA;AAEJ,aAAA;AAEA,YAAA,IAAI,CAACR,gBAAgB,GAAGP,WAAAA,CAAWC,cAAc,CAAA;;YAGjD,IAAI,CAACyB,4BAA4B,CAAC/X,OAAAA,CAAAA,CAAAA;AAClC,YAAA,IAAI,CAAC6W,gBAAgB,GAAGR,WAAAA,CAAWI,gBAAgB,CAAA;YACnD,IAAI,CAACuB,8BAA8B,CAAChY,OAAAA,CAAAA,CAAAA;;AAGpC,YAAA,IAAI,CAACwD,QAAQ,GAAG,IAAI,CAAC0S,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAAClS,WAAW,EAAA,CAAA;AACxE,YAAA,IAAI,CAACJ,YAAY,GAAG,IAAI,CAACyS,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAACnS,eAAe,EAAA,CAAA;AAChF,YAAA,IAAI,CAACF,WAAW,GAAG,IAAI,CAACwS,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAACpS,cAAc,EAAA,CAAA;AAChF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQsU,kBAIP,GAJD,SAAQA,kBAAAA,CAAoBjY,OAAqB,EAAA;AAC/C,QAAA,IAAMkY,kBAAqB,GAAA,IAAI,CAAC7V,WAAW,GAAyBqU,iBAAiB,CAAA;QAErF,OAAOwB,kBAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBxV,kBAalB,GAbD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AAEzB,QAAA,IAAI,CAAC6W,gBAAgB,GAAG,IAAI,CAACoB,kBAAkB,CAACjY,OAAAA,CAAAA,CAAAA;QAChD,IAAMiX,WAAAA,GAAc,IAAI,CAACf,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAAA;AAEhEkB,QAAAA,WAAAA,CAAYxU,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAEvB,QAAA,IAAI,CAACwD,QAAQ,GAAGyT,WAAAA,CAAYpT,WAAW,EAAA,CAAA;AACvC,QAAA,IAAI,CAACJ,YAAY,GAAGwT,WAAAA,CAAYrT,eAAe,EAAA,CAAA;AAC/C,QAAA,IAAI,CAACF,WAAW,GAAGuT,WAAAA,CAAYtT,cAAc,EAAA,CAAA;QAE7C,IAAI,CAACqU,8BAA8B,CAAChY,OAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB4C,gBAYlB,GAZD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC4W,gBAAgB,KAAK,IAAM,EAAA;AAClC,YAAA,IAAI,CAACA,gBAAgB,CAACjU,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACjC,SAAA;QAEA,IAAI,CAAC+X,4BAA4B,CAAC/X,OAAAA,CAAAA,CAAAA;QAElC,IAAI,CAACkW,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACd,SAAS,CAACpT,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;QACtD,IAAI,CAAC6W,gBAAgB,GAAG5U,YAAAA,CAAAA;QACxB,IAAI,CAAC2U,gBAAgB,GAAG,IAAA,CAAA;AAExB,QAAA,QAAA,CAAA,SAAA,CAAMhU,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQgY,8BAMP,GAND,SAAQA,8BAAAA,CAAgChY,OAAqB,EAAA;QAC3D,IAAyB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACkW,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACZ,WAAW,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9DI,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,UAAAA,CAAWG,aAAa,KAAK,IAAM,EAAA;gBACrCH,UAAWG,CAAAA,aAAa,CAAC/T,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AACtC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ+X,4BAMP,GAND,SAAQA,4BAAAA,CAA8B/X,OAAqB,EAAA;QACzD,IAAyB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACkW,MAAM,CAAC,IAAI,CAACW,gBAAgB,CAAC,CAACZ,WAAW,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9DI,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,UAAAA,CAAWG,aAAa,KAAK,IAAM,EAAA;gBACrCH,UAAWG,CAAAA,aAAa,CAAC7T,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AACpC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AA3LW2V,IAAAA,OAAAA,gBAAAA,CAAAA;EAAyBpS,QA4LrC;;;ACpPW4U,CAAAA,SAAAA,eAAAA,EAAAA;;;;GAAAA,eAAAA,KAAAA,eAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAOL,IAAA,aAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;cAEXC,cAAiBpW,GAAAA,YAAAA,CAAAA;;;AAFNmW,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAAS7S,WAIR,GAJD,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACmV,SAAWtY,EAAAA,OAAAA,CAAAA,CAAAA;AAExCqD,QAAAA,IAAAA,CAAKkV,SAAS,GAAGvY,OAAAA,CAAQsF,OAAO,CAAW,IAAI,CAAC+S,cAAc,CAAA,CAAA;AAChE,KAAA,CAAA;AAEA,IAAA,MAAA,CAASnV,IAKR,GALD,SAASA,IAAAA,CAAM9O,IAAwB,EAAA;AACrC,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEX,QAAA,IAAI,CAACikB,cAAc,GAAGjkB,IAAAA,CAAKikB,cAAc,CAAA;AACzC,QAAA,IAAI,CAACtB,SAAS,GAAG3iB,IAAAA,CAAK2iB,SAAS,CAAA;AACjC,KAAA,CAAA;AAfWqB,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBnV,aAgBlC,EAAA;AAhBYmV,aAAAA,GAAAA,UAAAA,CAAAA;IADZrW,aAAcoE,CAAAA,YAAiB,CAACiS,aAAa,CAAA;AACjCA,CAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAkBN,IAAA,SAAME,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,GAAAA;;;cACXC,SAA6B,GAAA,IAAA,CAAA;AAErBC,QAAAA,KAAAA,CAAAA,eAAAA,GAAAA,CAAAA,CAAAA;cACAC,kBAAqB,GAAA,CAAA,CAAA;cACrBC,kBAAqB,GAAA,KAAA,CAAA;;;AALlBJ,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IAOXd,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,GAAAA;QACE,OAAO,IAAI,CAACgB,eAAe,KAAA,CAAA,CAAA;AAC7B,KAAA,CAAA;IAEAG,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,GAAAA;QACE,OAAO,IAAI,CAACH,eAAe,KAAA,CAAA,CAAA;AAC7B,KAAA,CAAA;IAEAI,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,GAAAA;QACE,OAAO,IAAI,CAACJ,eAAe,KAAA,CAAA,CAAA;AAC7B,KAAA,CAAA;AAEAK,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAmB7Y,OAAqB,EAAA;AACtC,QAAA,IAAI,CAACwY,eAAe,GAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AAEAM,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAoB9Y,OAAqB,EAAA;AACvC,QAAA,IAAI,CAACwY,eAAe,GAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AAEAO,IAAAA,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,CAAuBC,QAAyB,EAAA;QAC9C,IAAI,CAACR,eAAe,GAAGQ,QAAAA,CAAAA;AACzB,KAAA,CAAA;IAEArB,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,GAAAA;QACE,OAAO,IAAI,CAACc,kBAAkB,CAAA;AAChC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASpS,QAgBR,GAhBD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;QAC1D,IAAI,CAACtD,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;;QAGpB,IAAI,IAAI,CAACuY,SAAS,KAAK,IAAA,IAAQ,IAAI,CAACA,SAAS,CAAChW,OAAO,EAAI,EAAA;AACvD+D,YAAAA,MAAAA,GAAS,IAAI,CAACiS,SAAS,CAAClS,QAAQ,CAACrG,OAASsG,EAAAA,MAAAA,CAAAA,CAAAA;AAC1C,YAAA,IAAI,CAAC9C,QAAQ,GAAG,IAAI,CAAC+U,SAAS,CAAC1U,WAAW,EAAA,CAAA;AAC1C,YAAA,IAAI,CAACJ,YAAY,GAAG,IAAI,CAAC8U,SAAS,CAAC3U,eAAe,EAAA,CAAA;AAClD,YAAA,IAAI,CAACF,WAAW,GAAG,IAAI,CAAC6U,SAAS,CAAC5U,cAAc,EAAA,CAAA;AAClD,SAAA;;AAGA,QAAA,IAAI,CAAC8U,kBAAkB,IAAIzY,OAAAA,CAAQkF,SAAS,CAAA;QAC5C,IAAI,CAACwT,kBAAkB,GAAG,KAAA,CAAA;QAE1B,OAAOpS,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB5D,kBAiBlB,GAjBD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAI,CAACwY,eAAe,GAAA,CAAA,CAAA;QACpB,IAAI,CAACC,kBAAkB,GAAG,CAAA,CAAA;AAC1B,QAAA,IAAI,CAAChV,YAAY,GAAG,IAAI,CAACC,WAAW,GAAG,CAAA,CAAA;QACvC,IAAI,CAACF,QAAQ,GAAG,CAAA,CAAA;AAChB,QAAA,IAAI,IAAI,CAAC+U,SAAS,KAAK,IAAM,EAAA;AAC3B,YAAA,IAAI,CAACA,SAAS,CAAC9V,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC1B,YAAA,IAAI,IAAI,CAACuY,SAAS,CAAChW,OAAO,EAAI,EAAA;AAC5B,gBAAA,IAAI,CAACiB,QAAQ,GAAG,IAAI,CAAC+U,SAAS,CAAC1U,WAAW,EAAA,CAAA;AAC1C,gBAAA,IAAI,CAACJ,YAAY,GAAG,IAAI,CAAC8U,SAAS,CAAC3U,eAAe,EAAA,CAAA;AAClD,gBAAA,IAAI,CAACF,WAAW,GAAG,IAAI,CAAC6U,SAAS,CAAC5U,cAAc,EAAA,CAAA;AAClD,aAAA;AACF,SAAA;;QAGA,IAAI,CAAC+U,kBAAkB,GAAG,IAAA,CAAA;AAC5B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmB9V,gBAMlB,GAND,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAI,IAAI,CAACuY,SAAS,KAAK,IAAM,EAAA;AAC3B,YAAA,IAAI,CAACA,SAAS,CAAC5V,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,IAAI,CAACwY,eAAe,GAAA,CAAA,CAAA;AACpB,QAAA,QAAA,CAAA,SAAA,CAAM5V,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AA9EWsY,IAAAA,OAAAA,SAAAA,CAAAA;EAAkB/U,QA+E9B;;;ACnGW0V,CAAAA,SAAAA,UAAAA,EAAAA;;;;GAAAA,UAAAA,KAAAA,UAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAOL,IAAA,kBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;cACX1V,QAAW,GAAA,CAAA,CAAA;cACXkU,WAAc,GAAA,KAAA,CAAA;cACdE,QAAW,GAAA,IAAA,CAAA;cACXuB,oBAAuBlX,GAAAA,YAAAA,CAAAA;;;AAJZiX,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAMX,IAAA,MAAA,CAAS3T,WAMR,GAND,SAASA,WAAAA,CAAavF,OAA6B,EAAA;AACjD,QAAA,IAAMqD,IAAO,GAAA,IAAI,CAACF,UAAU,CAACiW,cAAgBpZ,EAAAA,OAAAA,CAAAA,CAAAA;AAE7CqD,QAAAA,IAAAA,CAAKgW,UAAU,GAAGrZ,OAAAA,CAAQsF,OAAO,CAAC,IAAI,CAAC6T,oBAAoB,CAAA,CAAA;AAC3D9V,QAAAA,IAAAA,CAAKqU,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AACnCrU,QAAAA,IAAAA,CAAKuU,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAA;AAC/B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS1U,IAOR,GAPD,SAASA,IAAAA,CAAM9O,IAA6B,EAAA;AAC1C,QAAA,aAAA,CAAA,SAAA,CAAM8O,IAAD,CAAM9O,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEX,QAAA,IAAI,CAACoP,QAAQ,GAAGpP,IAAAA,CAAKoP,QAAQ,CAAA;AAC7B,QAAA,IAAI,CAACkU,WAAW,GAAGtjB,IAAAA,CAAKsjB,WAAW,CAAA;AACnC,QAAA,IAAI,CAACE,QAAQ,GAAGxjB,IAAAA,CAAKwjB,QAAQ,CAAA;AAC7B,QAAA,IAAI,CAACuB,oBAAoB,GAAG/kB,IAAAA,CAAK+kB,oBAAoB,CAAA;AACvD,KAAA,CAAA;AArBWD,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BjW,aAsBvC,EAAA;AAtBYiW,kBAAAA,GAAAA,UAAAA,CAAAA;IADZnX,aAAcoE,CAAAA,YAAiB,CAAC+S,kBAAkB,CAAA;AACtCA,CAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAwBN,IAAA,cAAME,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;cAEX1B,WAAc,GAAA,KAAA,CAAA;cACdE,QAAW,GAAA,IAAA,CAAA;cAEH0B,gBAAmB,GAAA,CAAA,CAAA;cACnBC,kBAAqB,GAAA,CAAA,CAAA;cACrBrK,WAAc,GAAA,CAAA,CAAA;cAEdsK,UAA8B,GAAA,IAAA,CAAA;AAE9BC,QAAAA,KAAAA,CAAAA,UAAAA,GAAAA,CAAAA,CAAAA;cAEAC,eAAkB,GAAA,CAAA,CAAA;;;AAbfN,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAeX,IAAA,MAAA,CAAS/S,QA6DR,GA7DD,SAASA,QAAUrG,CAAAA,OAAqB,EAAEsG,MAAkB,EAAA;QAC1DtR,WAAY,CAAA,IAAI,CAACwkB,UAAU,CAAA,CAAA;QAE3B,IAAI,CAACxW,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;;QAGpB,IAAI,IAAI,CAAC2Z,mBAAmB,EAAM,IAAA,IAAI,CAACC,uBAAuB,EAAA,CAAG5C,UAAU,CAAChX,OAAU,CAAA,EAAA;YACpF,IAAI,CAAC6Z,mBAAmB,CAAC7Z,OAAAA,CAAAA,CAAAA;AAC3B,SAAA;AAEA,QAAA,IAAI,CAACuZ,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,GAAGvZ,OAAAA,CAAQkF,SAAS,GAAG,IAAI,CAACoU,gBAAgB,CAAA;QAC7F,IAAI,CAACC,kBAAkB,GAAGzwB,OAAAA,CAAM,IAAI,CAACywB,kBAAkB,EAAE,GAAK,EAAA,GAAA,CAAA,CAAA;;AAG9D,QAAA,IAAI,CAACO,oBAAoB,EAAA,CAAA;;QAGzB,IAAI1C,gBAAAA,GAAmB,IAAI,CAACA,gBAAgB,CAAA;;QAG5C,IAAM2C,mBAAAA,GAAsB/Z,QAAQmF,WAAW,CAAA;QAE/CnF,OAAQmF,CAAAA,WAAW,GAAGH,WAAAA,CAAYgV,QAAQ,CAAA;AAC1C5C,QAAAA,gBAAAA,GAAmB,IAAI,CAACoC,UAAU,CAACnT,QAAQ,CAACrG,OAASoX,EAAAA,gBAAAA,CAAAA,CAAAA;;AAGrDpX,QAAAA,OAAAA,CAAQmF,WAAW,GAAG4U,mBAAAA,CAAAA;;QAGtB,IAAME,gBAAAA,GAAmB,IAAI,CAACZ,UAAU,CAAChT,QAAQ,CAC/CrG,OAAAA,EACA,IAAI,CAACia,gBAAgB,CAAA,CAAA;AAGvB,QAAA,IAAMC,WAAc5T,GAAAA,MAAAA,CAAAA;AAEpB,QAAA,IAAI,CAAC6T,oCAAoC,CACvC/C,gBAAAA,EACA6C,gBACAC,EAAAA,WAAAA,CAAAA,CAAAA;;AAIF,QAAA,IAAI,CAACR,eAAe,GAAGlxB,KACrB,IAAI,CAACgxB,UAAU,CAAC3V,WAAW,EAC3B,EAAA,IAAI,CAACwV,UAAU,CAACxV,WAAW,EAC3B,EAAA,IAAI,CAACqL,WAAW,CAAA,CAAA;AAElB,QAAA,IAAI,IAAI,CAACwK,eAAe,GAAG,GAAK,EAAA;AAC9B,YAAA,IAAMU,kBAAkBpa,OAAQkF,CAAAA,SAAS,GAAG,IAAI,CAACwU,eAAe,CAAA;AAEhE,YAAA,IAAI,CAACjW,YAAY,GAAG,IAAI,CAACC,WAAW,CAAA;YACpC,IAAI,CAACA,WAAW,GAAG,CAAC,IAAI,CAACA,WAAW,GAAG0W,eAAc,IAAK,CAAA,CAAA;SACrD,MAAA;AACL,YAAA,IAAI,CAAC3W,YAAY,GAAG,IAAI,CAACC,WAAW,GAAG,GAAA,CAAA;AACzC,SAAA;;AAGA,QAAA,IAAI,CAACF,QAAQ,GAAG,IAAI,CAAC6V,UAAU,CAACxV,WAAW,EAAA,CAAA;QAE3C,OAAOqW,WAAAA,CAAAA;AACT,KAAA,CAAA;;;AAKAlD,IAAAA,MAAAA,CAAAA,UAMC,GANDA,SAAAA,UAAAA,CAAYhX,OAAqB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAACsZ,gBAAgB,IAAI,CAAG,EAAA;YAC9B,OAAO,IAAA,CAAA;AACT,SAAA;QAEA,OAAQ,IAAI,CAACC,kBAAkB,GAAIvZ,OAAQkF,CAAAA,SAAS,GAAG,IAAI,CAACoU,gBAAgB,IAAM,GAAA,CAAA;AACpF,KAAA,CAAA;IAEAe,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,GAAAA;QACE,OAAO,IAAI,CAACd,kBAAkB,CAAA;AAChC,KAAA,CAAA;IAEAe,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACE,OAAO,IAAI,CAACb,UAAU,CAAA;AACxB,KAAA,CAAA;IAEAE,MAAAA,CAAAA,mBAEC,GAFDA,SAAAA,mBAAAA,GAAAA;QACE,OAAO,IAAI,CAACF,UAAU,KAAA,CAAA,CAAA;AACxB,KAAA,CAAA;IAEAc,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAACd,UAAU,KAAA,CAAA,CAAA;AACxB,KAAA,CAAA;;;IAKA3B,MAAAA,CAAAA,wBAUC,GAVDA,SAAAA,wBACE9X,CAAAA,OAAqB,EACrBoX,gBAA4B,EAC5BoD,WAAsB,EACtBC,SAAqB,EAAA;QAErB,IAAI,CAACjB,UAAU,GAAGgB,WAAAA,CAAAA;AAClB,QAAA,IAAI,CAACf,UAAU,GAAA,CAAA,CAAA;AAEf,QAAA,OAAO,IAAI,CAACiB,wCAAwC,CAAC1a,SAASoX,gBAAkBqD,EAAAA,SAAAA,CAAAA,CAAAA;AAClF,KAAA,CAAA;IAEA5C,MAAAA,CAAAA,6BASC,GATDA,SAAAA,6BACE7X,CAAAA,OAAqB,EACrBoX,gBAA4B,EAC5BuD,gBAAgC,EAChCF,SAAqB,EAAA;QACrB,IAAI,CAACjB,UAAU,GAAGmB,gBAAAA,CAAAA;AAClB,QAAA,IAAI,CAAClB,UAAU,GAAA,CAAA,CAAA;AAEf,QAAA,OAAO,IAAI,CAACiB,wCAAwC,CAAC1a,SAASoX,gBAAkBqD,EAAAA,SAAAA,CAAAA,CAAAA;AAClF,KAAA,CAAA;;;IAKAG,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,GAAAA;QACE,OAAO,IAAI,CAACpB,UAAU,CAAA;AACxB,KAAA,CAAA;IAEAI,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,uBAAAA,GAAAA;QACE,OAAO,IAAI,CAACJ,UAAU,CAAA;AACxB,KAAA,CAAA;;;AAKAqB,IAAAA,MAAAA,CAAAA,2BAwBC,GAxBDA,SAAAA,2BAA6B7a,CAAAA,OAAqB,EAAE8a,eAA0B,EAAA;QAC5E,IAAI,IAAI,CAACnB,mBAAmB,EAAI,EAAA;YAC9B,IAAMoB,oBAAAA,GAAuB,IAAI,CAACnB,uBAAuB,EAAA,CAAA;YACzD,IAAMoB,2BAAAA,GAA8BD,qBAAqB1B,UAAU,CAAA;AAEnE,YAAA,IAAI2B,gCAAgCF,eAAiB,EAAA;AACnD,gBAAA,IAAI,CAACrB,UAAU,GAAA,CAAA,CAAA;AAEfuB,gBAAAA,2BAAAA,CAA4BrY,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;gBACrC,IAAI,CAACwZ,UAAU,GAAG,IAAA,CAAA;AACpB,aAAA;AACF,SAAA,MAAO,IAAI,IAAI,CAACe,cAAc,EAAI,EAAA;AAChC,YAAA,IAAI,IAAI,CAACf,UAAU,KAAKsB,eAAiB,EAAA;AACvC,gBAAA,IAAI,CAACrB,UAAU,GAAA,CAAA,CAAA;AACf,gBAAA,IAAI,CAACD,UAAU,CAAC7W,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;gBACzB,IAAI,CAACwZ,UAAU,GAAG,IAAA,CAAA;AACpB,aAAA;AACF,SAAA;QAEA,IAAI,IAAI,CAACG,mBAAmB,EAAI,EAAA;YAC9B,IAAMoB,qBAAAA,GAAuB,IAAI,CAACnB,uBAAuB,EAAA,CAAA;YAEzDmB,qBAAqBF,CAAAA,2BAA2B,CAAC7a,OAAS8a,EAAAA,eAAAA,CAAAA,CAAAA;AAC5D,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBpY,kBASlB,GATD,SAAmBA,kBAAAA,CAAoB1C,OAAqB,EAAA;AAC1D,QAAA,QAAA,CAAA,SAAA,CAAM0C,kBAAD,CAAoB1C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAI,CAACoX,gBAAgB,GAAG,IAAI3F,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AACvD,QAAA,IAAI,CAACsT,gBAAgB,GAAG,IAAIxI,UAAAA,CAAWzR,QAAQ2G,QAAQ,CAAA,CAAA;AAEvD,QAAA,IAAI,CAAC2S,gBAAgB,GAAG,IAAI,CAACjX,WAAW,GAAuBmB,QAAQ,CAAA;QAEvE,IAAI,CAAC+V,kBAAkB,GAAG,CAAA,CAAA;QAC1B,IAAI,CAACrK,WAAW,GAAG,CAAA,CAAA;AACrB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAmBtM,gBAYlB,GAZD,SAAmBA,gBAAAA,CAAkB5C,OAAqB,EAAA;AACxD,QAAA,IAAI,CAACqZ,UAAU,CAACN,qBAAqB,CAACZ,gBAAgB8C,IAAI,CAAA,CAAA;QAC1D,IAAI,CAACvX,WAAW,GAAG,GAAA,CAAA;QAEnB,IAAI,IAAI,CAAC8V,UAAU,EAAE;YACnB,IAAI,IAAI,CAACG,mBAAmB,EAAI,EAAA;gBAC9B,IAAI,CAACE,mBAAmB,CAAC7Z,OAAAA,CAAAA,CAAAA;AAC3B,aAAA;AACA,YAAA,IAAI,CAACwZ,UAAU,CAAC7W,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;YACzB,IAAI,CAACwZ,UAAU,GAAG,IAAA,CAAA;AACpB,SAAA;AACA,QAAA,QAAA,CAAA,SAAA,CAAM5W,gBAAD,CAAkB5C,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6Z,mBASP,GATD,SAAQA,mBAAAA,CAAqB7Z,OAAqB,EAAA;AAIhD,QAAA,IAAA,gBAAA,CAAA;QAHA,IAAM+a,oBAAAA,GAAuB,IAAI,CAACnB,uBAAuB,EAAA,CAAA;QACzD,IAAMoB,2BAAAA,GAA8BD,qBAAqB1B,UAAU,CAAA;AAEnE,QAAA,CAAA,gBAAA,GAAA,IAAI,CAACG,UAAU,KAAf,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAiB7W,QAAQ,CAAC3C,OAAAA,CAAAA,CAAAA;QAC1B,IAAI,CAACwZ,UAAU,GAAGwB,2BAAAA,CAAAA;AAClB,QAAA,IAAI,CAACvB,UAAU,GAAA,CAAA,CAAA;AAEf,QAAA,IAAI,CAACmB,kBAAkB,EAAA,CAAG7B,qBAAqB,CAACZ,gBAAgB+C,gBAAgB,CAAA,CAAA;AAClF,KAAA,CAAA;IAEA,MAAQR,CAAAA,wCAyCP,GAzCD,SAAQA,wCAAAA,CACN1a,OAAqB,EACrBoX,gBAA4B,EAC5BqD,SAAqB,EAAA;;QAErB,IAAI,CAACzX,cAAc,CAAChD,OAAAA,CAAAA,CAAAA;QAEpB,IAAIia,gBAAAA,GAAmB,IAAI,CAACA,gBAAgB,CAAA;;AAG5C,QAAA,IAAMkB,2BAA8B,GAAA,WAAA;YAClC,IAAI,KAAA,CAAK1B,UAAU,KAAuB,CAAA,EAAA;gBACxC,KAAKmB,CAAAA,kBAAkB,EAAG9B,CAAAA,kBAAkB,CAAC9Y,OAAAA,CAAAA,CAAAA;AAC/C,aAAA;AACF,SAAA,CAAA;;AAGAmb,QAAAA,2BAAAA,EAAAA,CAAAA;AACA,QAAA,IAAI,CAAC9B,UAAU,CAAC5W,UAAU,CAACzC,OAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACqZ,UAAU,CAACR,iBAAiB,CAAC7Y,OAAAA,CAAAA,CAAAA;AAClCia,QAAAA,gBAAAA,GAAmB,IAAI,CAACZ,UAAU,CAAChT,QAAQ,CAACrG,OAASia,EAAAA,gBAAAA,CAAAA,CAAAA;;AAGrD,QAAA,IAAI,CAACH,oBAAoB,EAAA,CAAA;;AAGzB,QAAA,IAAI,CAACK,oCAAoC,CACvC/C,gBAAAA,EACA6C,gBACAQ,EAAAA,SAAAA,CAAAA,CAAAA;;QAIF,IAAI,CAAChX,YAAY,GAAG,CAAA,CAAA;QACpB,IAAI,CAACC,WAAW,GAAG,CAAA,CAAA;AACnB,QAAA,IAAI,CAACgW,eAAe,GAAGlxB,KAAK,IAAI,CAACgxB,UAAU,CAAE3V,WAAW,EAAI,EAAA,IAAI,CAACwV,UAAU,CAACxV,WAAW,EAAI,EAAA,IAAI,CAACqL,WAAW,CAAA,CAAA;;AAG3G,QAAA,IAAI,CAAC1L,QAAQ,GAAG,IAAI,CAAC6V,UAAU,CAACxV,WAAW,EAAA,CAAA;QAE3C,OAAO4W,SAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQX,CAAAA,oBAQP,GARD,SAAQA,oBAAAA,GAAAA;AACN,QAAA,IAAI,IAAI,CAACR,gBAAgB,KAAK,CAAG,EAAA;YAC/B,IAAI,CAACpK,WAAW,GAAG,CAAA,CAAA;SACd,MAAA;;AAEL,YAAA,IAAI,CAACA,WAAW,GAAG,IAAI,CAACqK,kBAAkB,CAAA;YAC1C,IAAI,CAACrK,WAAW,GAAGpmB,OAAAA,CAAM,IAAI,CAAComB,WAAW,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA;AAChD,SAAA;AACF,KAAA,CAAA;IAEA,MAAQiL,CAAAA,oCAQP,GARD,SAAQA,oCAAAA,CACNiB,YAAwB,EACxBC,YAAwB,EACxBZ,SAAqB,EAAA;QAErB,IAAMa,eAAAA,GAAkB,IAAI,CAACpM,WAAW,CAAA;QAExCJ,OAAQC,CAAAA,UAAU,CAACqM,YAAAA,CAAa3U,IAAI,EAAE4U,aAAa5U,IAAI,EAAE6U,eAAiBb,EAAAA,SAAAA,CAAUhU,IAAI,CAAA,CAAA;AAC1F,KAAA,CAAA;AA5QW2S,IAAAA,OAAAA,cAAAA,CAAAA;EAAuB7V,QA6QnC;;;ACrSWgY,CAAAA,SAAAA,oBAAAA,EAAAA;;;GAAAA,oBAAAA,KAAAA,oBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAYL,IAAMC,cAAc,SAAU,CAAA;AAE9B,IAAA,QAAMC,iBAAD,WAAL;aAAMA,QAgBT,CAAOC,QAAiB,EACxBC,kBAAuC,EAAA;aADhCD,QAAAA,GAAAA,QAAAA,CAAAA;aAfTE,QAAW,GAAA,KAAA,CAAA;AAEXhT,QAAAA,IAAAA,CAAAA,iBAAAA,GAAoB,IAAIlJ,GAAAA,EAAAA,CAAAA;AAExBmc,QAAAA,IAAAA,CAAAA,oBAAAA,GAAyC,EAAE,CAAA;AAC3C7K,QAAAA,IAAAA,CAAAA,0BAAAA,GAAuC,EAAE,CAAA;AAEzC8K,QAAAA,IAAAA,CAAAA,oBAAAA,GAAyC,EAAE,CAAA;AAC3C5K,QAAAA,IAAAA,CAAAA,0BAAAA,GAAsC,EAAE,CAAA;AAExC6K,QAAAA,IAAAA,CAAAA,kBAAAA,GAAkC,EAAE,CAAA;AACpC9T,QAAAA,IAAAA,CAAAA,qBAAAA,GAAyC,EAAE,CAAA;AAC3CS,QAAAA,IAAAA,CAAAA,eAAAA,GAAkB,IAAIhJ,GAAAA,EAAAA,CAAAA;QAMpB,IAAmBic,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,kBAAAA,CAAmBxT,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArCQ,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACqT,qBAAqB,CAACrT,IAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAmBgT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,kBAAAA,CAAmBvT,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArCO,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACqT,qBAAqB,CAACrT,KAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAmBgT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,kBAAAA,CAAmBnxB,KAAK,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAlCme,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACqT,qBAAqB,CAACrT,KAAAA,CAAAA,CAAAA;AAC7B,SAAA;QACA,IAAmBgT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,kBAAAA,CAAmBvuB,KAAK,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAlCub,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACqT,qBAAqB,CAACrT,KAAAA,CAAAA,CAAAA;YAC3B,IAAI,CAACiT,QAAQ,GAAG,IAAA,CAAA;AAClB,SAAA;QAEA,IAAK,IAAIp5B,IAAI,CAAGA,EAAAA,CAAAA,GAAIm5B,mBAAmBM,MAAM,CAACh6B,MAAM,EAAEO,CAAK,EAAA,CAAA;AACzD,YAAA,IAAM05B,YAAeP,GAAAA,kBAAAA,CAAmBM,MAAM,CAACz5B,CAAE,CAAA,CAAA;YAEjD,IAAI,CAAC25B,mBAAmB,CAACD,YAAavT,CAAAA,IAAI,EAAEuT,YAAapc,CAAAA,SAAS,EAAEoc,YAAAA,CAAa71B,QAAQ,EAAA,CAAA,CAAA,CAAA;AAC3F,SAAA;QAEA,IAAK,IAAI7D,KAAI,CAAGA,EAAAA,EAAAA,GAAIm5B,mBAAmBS,MAAM,CAACn6B,MAAM,EAAEO,EAAK,EAAA,CAAA;AACzD,YAAA,IAAM65B,YAAeV,GAAAA,kBAAAA,CAAmBS,MAAM,CAAC55B,EAAE,CAAA,CAAA;YAEjD,IAAI,CAAC25B,mBAAmB,CAACE,YAAa1T,CAAAA,IAAI,EAAE0T,YAAavc,CAAAA,SAAS,EAAEuc,YAAAA,CAAah2B,QAAQ,EAAA,CAAA,CAAA,CAAA;AAC3F,SAAA;;AA3CSo1B,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AA8CX,IAAA,MAAA,CAAQO,qBAaP,GAbD,SAAQA,qBAAAA,CAAuBM,QAAgB,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC5T,eAAe,CAACpI,GAAG,CAACgc,QAAW,CAAA,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAMC,UAAa,GAAA,IAAI,CAACC,UAAU,CAACF,QAAAA,CAAAA,CAAAA;AAEnC,QAAA,IAAI,CAACC,UAAY,EAAA;AACf,YAAA,OAAA;AACF,SAAA;QAEA,IAAI,CAACtU,qBAAqB,CAAC9jB,IAAI,CAAC,IAAI0sB,aAAAA,CAAc0L,WAAWzL,SAAS,CAAA,CAAA,CAAA;AACtE,QAAA,IAAI,CAACiL,kBAAkB,CAAC53B,IAAI,CAACo4B,WAAWzL,SAAS,CAAA,CAAA;QACjD,IAAI,CAACpI,eAAe,CAAClhB,GAAG,CAAC80B,QAAU,EAAA,IAAI,CAACrU,qBAAqB,CAAChmB,MAAM,GAAG,CAAA,CAAA,CAAA;AACzE,KAAA,CAAA;IAEA,MAAQk6B,CAAAA,mBA2DP,GA3DD,SAAQA,mBAAqBG,CAAAA,QAAgB,EAAExc,SAAiB,EAAE2c,YAAoB,EAAEvkB,IAA0B,EAAA;QAChH,IAAMwkB,SAAAA,GAAYJ,WAAWxc,SAAY2c,GAAAA,YAAAA,CAAAA;AAEzC,QAAA,IAAI,IAAI,CAAC7T,iBAAiB,CAACtI,GAAG,CAACoc,eAAev7B,SAAW,EAAA;AACvD,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAMo7B,UAAa,GAAA,IAAI,CAACC,UAAU,CAACF,QAAAA,CAAAA,CAAAA;AAEnC,QAAA,IAAI,CAACC,UAAY,EAAA;AACf,YAAA,OAAA;AACF,SAAA;QAEA,IAAII,uBAAAA,CAAAA;;AAGJ,QAAA,IAAI7c,cAAc0b,WAAa,EAAA;YAC7BmB,uBAA0BJ,GAAAA,UAAAA,CAAAA;SACrB,MAAA;YACLI,uBAA0BJ,GAAAA,UAAAA,CAAWK,YAAY,CAAC/c,QAASC,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AAC7D,SAAA;AAEA,QAAA,IAAI,CAAC6c,uBAAyB,EAAA;AAC5B7yB,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,MAAC,GAAMsf,SAAU,GAAA,2BAAA,CAAA,CAAA;AACjC,SAAA;;QAGA,IAAM+c,oBAAAA,GAAuBJ,YAAahlB,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;AAChD,QAAA,IAAMqlB,mBAAmBD,oBAAoB,CAACA,oBAAqB56B,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAC9E,QAAA,IAAI86B,YAAoCJ,GAAAA,uBAAAA,CAAAA;QAExC,IAAK,IAAIn6B,IAAI,CAAGA,EAAAA,CAAAA,GAAIq6B,qBAAqB56B,MAAM,GAAG,GAAGO,CAAK,EAAA,CAAA;AACxD,YAAA,IAAM6D,WAAW02B,YAAY,CAACF,oBAAoB,CAACr6B,EAAE,CAAC,CAAA;AAEtD,YAAA,IAAI6D,aAAalF,SAAW,EAAA;gBAC1B2I,OAAQtJ,CAAAA,KAAK,CAAC,MAAC,GAAMq8B,oBAAoB,CAACr6B,CAAAA,CAAE,GAAC,eAAA,GAAeu6B,YAAa,GAAA,iBAAA,CAAA,CAAA;AAC3E,aAAA;YACAA,YAAe12B,GAAAA,QAAAA,CAAAA;AACjB,SAAA;AAEA,QAAA,IAAM22B,cAAiC,GAAA;YACrCl7B,MAAQ66B,EAAAA,uBAAAA;YACRF,YAAcA,EAAAA,YAAAA;YACdM,YAAcA,EAAAA,YAAAA;YACdE,YAAcH,EAAAA,gBAAAA;AAChB,SAAA,CAAA;QAEA,OAAQ5kB,IAAAA;AACN,YAAA,KAAA,CAAA;AACE,gBAAA,IAAI,CAAC2jB,oBAAoB,CAAC13B,IAAI,CAAC64B,cAAAA,CAAAA,CAAAA;AAC/B,gBAAA,IAAI,CAAChM,0BAA0B,CAAC7sB,IAAI,CAAC44B,YAAY,CAACD,gBAAiB,CAAA,CAAA,CAAA;gBACnE,IAAI,CAAClU,iBAAiB,CAACphB,GAAG,CAACk1B,SAAW,EAAA,IAAI,CAACb,oBAAoB,CAAC55B,MAAM,GAAG,CAAA,CAAA,CAAA;AAEzE,gBAAA,MAAA;AACF,YAAA,KAAA,CAAA;AACE,gBAAA,IAAI,CAAC65B,oBAAoB,CAAC33B,IAAI,CAAC64B,cAAAA,CAAAA,CAAAA;gBAC/B,IAAI,CAAC9L,0BAA0B,CAAC/sB,IAAI,CAAC,IAAIoK,KAAAA,EAAAA,CAAQ7E,QAAQ,CAACqzB,YAAY,CAACD,gBAAiB,CAAA,CAAA,CAAA,CAAA;gBACxF,IAAI,CAAClU,iBAAiB,CAACphB,GAAG,CAACk1B,SAAW,EAAA,IAAI,CAACZ,oBAAoB,CAAC75B,MAAM,GAAG,CAAA,CAAA,CAAA;AAC7E,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQu6B,UAmBP,GAnBD,SAAQA,UAAAA,CAAYU,QAAgB,EAAA;AAClC,QAAA,IAAIA,aAAa,EAAI,EAAA;YACnB,OAAO,IAAI,CAACxB,QAAQ,CAAA;AACtB,SAAA;QAEA,IAAMyB,SAAAA,GAAYD,QAASzlB,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;QACjC,IAAIlR,WAAAA,GAAc,IAAI,CAACm1B,QAAQ,CAAA;AAE/B,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAuByB,SAAW,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvBC,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMt7B,MAAAA,GAASyE,WAAY82B,CAAAA,IAAI,CAACD,QAAAA,CAAAA,CAAAA;AAEhC,YAAA,IAAI,CAACt7B,MAAQ,EAAA;gBACX,OAAO,IAAA,CAAA;AACT,aAAA;YAEAyE,WAAczE,GAAAA,MAAAA,CAAAA;AAChB,SAAA;QAEA,OAAOyE,WAAAA,CAAAA;AACT,KAAA,CAAA;AA7IWk1B,IAAAA,OAAAA,QAAAA,CAAAA;AA8IZ,CAAA,EAAA;;ACnKM,IAAA,aAAM6B,iBAAD,WAAL;aAAMA,aAST,CAAQC,UAA+B,EACvC7B,QAAiB,EAAA;aADT6B,UAAAA,GAAAA,UAAAA,CAAAA;AARVja,QAAAA,IAAAA,CAAAA,KAAAA,GAAqB,EAAE,CAAA;AAIftD,QAAAA,IAAAA,CAAAA,OAAAA,GAAU,IAAIiF,YAAAA,EAAAA,CAAAA;;AAQpB,QAAA,IAAMuY,gBAAwC,GAAA;AAC5CrV,YAAAA,QAAAA,EAAU,EAAE;AACZ3d,YAAAA,KAAAA,EAAO,EAAE;AACT4d,YAAAA,QAAAA,EAAU,EAAE;AACZhb,YAAAA,KAAAA,EAAO,EAAE;AACT6uB,YAAAA,MAAAA,EAAQ,EAAE;AACVG,YAAAA,MAAAA,EAAQ,EAAE;AACZ,SAAA,CAAA;AAEA,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA4BmB,UAAWlZ,CAAAA,YAAY,CAACzC,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApDiD,YAAAA,IAAAA,aAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACA,aAAe,EAAA;AAClB,gBAAA,SAAA;AACF,aAAA;YACA,IAA4BA,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcmC,cAAc,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA/CyW,gBAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTD,gBAAAA,gBAAAA,CAAiBrV,QAAQ,CAAChkB,IAAI,CAACs5B,cAAc9U,IAAI,CAAA,CAAA;AACnD,aAAA;YACA,IAA4B9D,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcuC,cAAc,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA/CsW,gBAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTF,gBAAAA,gBAAAA,CAAiBpV,QAAQ,CAACjkB,IAAI,CAACu5B,cAAc/U,IAAI,CAAA,CAAA;AACnD,aAAA;YACA,IAAyB9D,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcsC,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzCwW,gBAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTH,gBAAAA,gBAAAA,CAAiBhzB,KAAK,CAACrG,IAAI,CAACw5B,WAAWhV,IAAI,CAAA,CAAA;AAC7C,aAAA;YACA,IAAyB9D,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcwC,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzCuW,gBAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTJ,gBAAAA,gBAAAA,CAAiBpwB,KAAK,CAACjJ,IAAI,CAACy5B,WAAWjV,IAAI,CAAA,CAAA;AAC7C,aAAA;YACA,IAAyB9D,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcyC,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzCuW,gBAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;gBACTL,gBAAiBvB,CAAAA,MAAM,CAAC93B,IAAI,CAAC05B,UAAAA,CAAAA,CAAAA;AAC/B,aAAA;YACA,IAAyBhZ,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAc2C,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzCsW,gBAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;gBACTN,gBAAiBpB,CAAAA,MAAM,CAACj4B,IAAI,CAAC25B,UAAAA,CAAAA,CAAAA;AAC/B,aAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACnX,QAAQ,GAAG,IAAI8U,SAASC,QAAU8B,EAAAA,gBAAAA,CAAAA,CAAAA;;AAGvC,QAAA,IAAI,CAAClX,MAAM,GAAG,IAAImL,UAAW,CAAA,IAAI,CAAC9K,QAAQ,CAAA,CAAA;AAC1C,QAAA,IAAI,CAAC3G,OAAO,CAAC2G,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAA;;AAGrC,QAAA,IAAMoX,uBAAuB,IAAI1Y,oBAAAA,EAAAA,CAAAA;AAEjC0Y,QAAAA,oBAAAA,CAAqBza,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;QACvCya,oBAAqB3Z,CAAAA,SAAS,GAAGmZ,UAAAA,CAAWnZ,SAAS,CAAA;QACrD2Z,oBAAqB9X,CAAAA,OAAO,GAAGsX,UAAAA,CAAWlZ,YAAY,CAAA;QAEtD,IAAK,IAAI7hB,IAAI,CAAGA,EAAAA,CAAAA,GAAI+6B,WAAWnZ,SAAS,CAACniB,MAAM,EAAEO,CAAK,EAAA,CAAA;AACpD,YAAA,IAAI,CAACu7B,oBAAAA,CAAqBza,KAAK,CAAC9gB,EAAE,EAAE;AAClC+6B,gBAAAA,UAAAA,CAAWnZ,SAAS,CAAC5hB,CAAE,CAAA,CAAC+iB,WAAW,CAACwY,oBAAAA,CAAAA,CAAAA;AACtC,aAAA;AACF,SAAA;QACA,IAAI,CAACC,QAAQ,GAAG,IAAI,CAAC1a,KAAK,CAACia,UAAW/Y,CAAAA,aAAa,CAAC,CAAA;;AA/D3C8Y,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAkEXW,IAAAA,MAAAA,CAAAA,aAsBC,GAtBDA,SAAAA,aAAAA,CAAe/Y,SAAiB,EAAA;AAC9B,QAAA,IAAI,CAAClF,OAAO,CAACoF,MAAM,CAACF,SAAAA,CAAAA,CAAAA;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC8Y,QAAQ,CAACxb,aAAa,EAAI,EAAA;AAClC,YAAA,IAAI,CAAC0b,eAAe,EAAA,CAAA;AACtB,SAAA;;QAGA,IAAI,IAAI,CAACF,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC1X,MAAM,GAAG,IAAI,CAAC0X,QAAQ,CAAC3X,QAAQ,CAAC,IAAI,CAACrG,OAAO,EAAE,IAAI,CAACsG,MAAM,CAAA,CAAA;AAChE,SAAA;;QAGA,IAAK,IAAI9jB,IAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAI,CAAC27B,uBAAuB,IAAI37B,CAAK,EAAA,CAAA;AACvD,YAAA,IAAM47B,oBAAuB,GAAA,IAAI,CAAC9a,KAAK,CAAC9gB,CAAE,CAAA,CAAA;YAE1C,IAAwBpB,YAApBg9B,CAAAA,oBAAAA,EAAgCnK,2BAA6B,CAAA,EAAA;AAC/DmK,gBAAAA,oBAAAA,CAAqBpa,QAAQ,CAAC,KAAA,CAAA,CAAA;AAChC,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACsC,MAAM,CAAA;AACpB,KAAA,CAAA;IAEA9D,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACE,OAAO,IAAI,CAACwb,QAAQ,IAAI,IAAI,CAACA,QAAQ,CAACxb,aAAa,EAAA,CAAA;AACrD,KAAA,CAAA;;;AAKAK,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAcwb,OAAe,EAAA;AAC3B,QAAA,OAAO,IAAI,CAACC,kBAAkB,CAACD,OAAAA,CAAAA,IAAY,IAAI,CAAC/a,KAAK,CAAC+a,OAAAA,CAAQ,CAACxb,YAAY,CAAC,IAAI,CAAC7C,OAAO,CAAC8C,QAAQ,CAAA,CAAA;AACnG,KAAA,CAAA;AAEAyb,IAAAA,MAAAA,CAAAA,mBAUC,GAVDA,SAAAA,mBAAAA,CAAqB5H,WAAmB,EAAA;AACtC,QAAA,IAAIrQ,MAAkC,GAAA,IAAA,CAAA;QAEtC,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAChD,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAQjiB,aAAJiiB,IAAgBsS,EAAAA,gBAAAA,CAAAA,IAAoBtS,KAAKhB,WAAW,EAAA,CAAyBsU,WAAW,KAAKA,WAAa,EAAA;gBAC5GrQ,MAASjD,GAAAA,IAAAA,CAAAA;AACX,aAAA;AACF,SAAA;QAEA,OAAOiD,MAAAA,CAAAA;AACT,KAAA,CAAA;;;IAKA4X,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,eAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAACF,QAAQ,CAACxb,aAAa,EAAI,EAAA;AACjC,YAAA,IAAI,CAACwb,QAAQ,CAACrb,QAAQ,CAAC,IAAI,CAAC3C,OAAO,CAAA,CAAA;AACrC,SAAA;AAEA,QAAA,IAAI,CAACA,OAAO,CAAC8C,QAAQ;AACrB,QAAA,IAAI,CAACkb,QAAQ,CAACvb,UAAU,CAAC,IAAI,CAACzC,OAAO,CAAA,CAAA;AACvC,KAAA,CAAA;;;IAKAme,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,uBAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACZ,UAAU,CAACjZ,mBAAmB,CAACriB,MAAM,CAAA;AACnD,KAAA,CAAA;AAEAu8B,IAAAA,MAAAA,CAAAA,wBAWC,GAXDA,SAAAA,wBAAAA,CAA0BC,WAAmB,EAAA;AAC3C,QAAA,IAAMla,kBAAqB,GAAA,IAAI,CAACgZ,UAAU,CAAChZ,kBAAkB,CAAA;QAC7D,IAAMwI,GAAAA,GAAMxI,kBAAmBjE,CAAAA,GAAG,CAACme,WAAAA,CAAAA,CAAAA;AAEnC,QAAA,IAAI1R,QAAQ5rB,SAAW,EAAA;YACrB,OAAO4rB,GAAAA,CAAAA;AACT,SAAA;AAEAjjB,QAAAA,OAAAA,CAAQ+L,IAAI,CAAC,aAAC,GAAa4oB,WAAY,GAAA,mBAAA,CAAA,CAAA;QAEvC,OAAOxc,YAAAA,CAAAA;AACT,KAAA,CAAA;AAEAyc,IAAAA,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,CAAuBC,kBAA0B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAACpB,UAAU,CAACjZ,mBAAmB,CAACqa,kBAAmB,CAAA,CAAA;AAChE,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAASn6B,CAAAA,IAAY,EAAElE,KAAc,EAAA;QACnC,IAAI,CAACs+B,wBAAwB,CAAUp6B,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AAEAixB,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAU/sB,CAAAA,IAAY,EAAElE,KAAa,EAAA;QACnC,IAAI,CAACs+B,wBAAwB,CAASp6B,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;AAC9C,KAAA,CAAA;AAEAu+B,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAYr6B,IAAY,EAAA;QACtB,IAAI,CAACo6B,wBAAwB,CAAUp6B,IAAM,EAAA,IAAA,CAAA,CAAA;AAC/C,KAAA,CAAA;AAEAs6B,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAct6B,IAAY,EAAA;QACxB,IAAI,CAACo6B,wBAAwB,CAAUp6B,IAAM,EAAA,KAAA,CAAA,CAAA;AAC/C,KAAA,CAAA;;;AAKAu6B,IAAAA,MAAAA,CAAAA,oBAIC,GAJDA,SAAAA,oBAAAA,CAAsBX,OAAe,EAAA;AACnC,QAAA,IAAMhb,IAAO,GAAA,IAAI,CAACC,KAAK,CAAC+a,OAAQ,CAAA,CAAA;AAEhC,QAAA,OAAOhb,KAAKS,YAAY,EAAA,CAAA;AAC1B,KAAA,CAAA;AAEAmb,IAAAA,MAAAA,CAAAA,wBAIC,GAJDA,SAAAA,wBAAAA,CAA6BZ,OAAe,EAAA;AAC1C,QAAA,IAAMa,SAAY,GAAA,IAAI,CAAC5b,KAAK,CAAC+a,OAAQ,CAAA,CAAA;AAErC,QAAA,OAAOa,SAAUnX,CAAAA,QAAQ,CAAI,IAAI,CAAC/H,OAAO,CAAA,CAAA;AAC3C,KAAA,CAAA;AAEAmf,IAAAA,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,oBAAAA,CAAsBd,OAAe,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC/a,KAAK,CAAC+a,OAAQ,CAAA,CAAA;AAC5B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,kBAEP,GAFD,SAAQA,kBAAAA,CAAoBD,OAAe,EAAA;QACzC,OAAOA,OAAAA,GAAU,IAAI,CAACF,uBAAuB,EAAA,CAAA;AAC/C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQU,wBAMP,GAND,SAAQA,wBAA6Bp6B,CAAAA,IAAY,EAAElE,KAAQ,EAAA;AACzD,QAAA,IAAMyF,KAAQ,GAAA,IAAI,CAACw4B,wBAAwB,CAAC/5B,IAAAA,CAAAA,CAAAA;AAE5C,QAAA,IAAIuB,UAAUic,YAAc,EAAA;AACzB,YAAA,IAAI,CAACqB,KAAK,CAACtd,KAAM,CAAA,CAAege,QAAQ,CAACzjB,KAAAA,CAAAA,CAAAA;AAC5C,SAAA;AACF,KAAA,CAAA;AAlMW+8B,IAAAA,OAAAA,aAAAA,CAAAA;AAmMZ,CAAA;;AC9MD,SAAS8B,iBAAAA,CAAkBt9B,MAAM,EAAEu9B,KAAK,EAAA;AACpC,IAAA,IAAK,IAAI78B,CAAI,GAAA,CAAA,EAAGA,IAAI68B,KAAMp9B,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;QACnC,IAAI88B,UAAAA,GAAaD,KAAK,CAAC78B,CAAE,CAAA,CAAA;AACzB88B,QAAAA,UAAAA,CAAWC,UAAU,GAAGD,UAAWC,CAAAA,UAAU,IAAI,KAAA,CAAA;AACjDD,QAAAA,UAAAA,CAAWxkB,YAAY,GAAG,IAAA,CAAA;AAE1B,QAAA,IAAI,OAAWwkB,IAAAA,UAAAA,EAAYA,UAAWzkB,CAAAA,QAAQ,GAAG,IAAA,CAAA;AAEjD1Y,QAAAA,MAAAA,CAAOM,cAAc,CAACX,MAAQw9B,EAAAA,UAAAA,CAAWl/B,GAAG,EAAEk/B,UAAAA,CAAAA,CAAAA;AAClD,KAAA;AACJ,CAAA;AACA,SAASE,aAAcC,CAAAA,WAAW,EAAEC,UAAU,EAAEC,WAAW,EAAA;AACvD,IAAA,IAAID,UAAYN,EAAAA,iBAAAA,CAAkBK,WAAYj8B,CAAAA,SAAS,EAAEk8B,UAAAA,CAAAA,CAAAA;IACzD,IAAIC,WAAAA,EAAaP,kBAAkBK,WAAaE,EAAAA,WAAAA,CAAAA,CAAAA;IAEhD,OAAOF,WAAAA,CAAAA;AACX;;ACXA;;AAEC,IACM,IAAA,SAAeG,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,GAAAA;;;cAOpBC,aAAgB,GAAA,KAAA,CAAA;cAChBC,aAAgB,GAAA,KAAA,CAAA;cAChBC,cAAiB,GAAA,KAAA,CAAA;cAGTC,QAAW,GAAA,IAAA,CAAA;;;AAZCJ,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAmDpB;;MAGAK,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAU93B,EAAU,EAAA;;AAEpB,KAAA,CAAA;AAEA;;AAEC,MACD+3B,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAc/3B,EAAU,EAAA;;AAExB,KAAA,CAAA;AAEA;;MAGAg4B,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,0BAEC,GAFDA,SAAAA,0BAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,MAMC,GANDA,SAAAA,MAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAACr6B,IAAI,CAACmT,WAAW,EAAE;YACzB,IAAI,CAACnT,IAAI,CAACmT,WAAW,CAACmnB,YAAY,CAACC,YAAY,CAAC,IAAI,CAAA,CAAA;YACpD,IAAI,CAACZ,cAAc,GAAG,IAAA,CAAA;AACxB,SAAA;AACA,QAAA,IAAI,CAACG,QAAQ,EAAA,CAAA;AACf,KAAA,CAAA;AAEA;;MAGAU,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAACT,SAAS,EAAA,CAAA;AACd,QAAA,IAAI,IAAI,CAAC/5B,IAAI,CAACmT,WAAW,EAAE;YACzB,IAAI,CAACwmB,cAAc,GAAG,KAAA,CAAA;YACtB,IAAI,CAAC35B,IAAI,CAACmT,WAAW,CAACmnB,YAAY,CAACG,eAAe,CAAC,IAAI,CAAA,CAAA;AACzD,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,UAYC,GAZDA,SAAAA,UAAAA,CAAY16B,IAAa,EAAA;QACvB,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAIA,IAAAA,CAAK26B,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAClB,aAAa,EAAE;AACvB,gBAAA,IAAI,CAACI,OAAO,EAAA,CAAA;gBACZ,IAAI,CAACJ,aAAa,GAAG,IAAA,CAAA;AACvB,aAAA;AACA,YAAA,IAAIz5B,KAAK46B,QAAQ,IAAI,IAAI,CAACC,OAAO,EAAE;AACjC,gBAAA,IAAI,CAACpsB,KAAK,EAAA,CAAA;AACV,gBAAA,IAAI,CAAC4rB,MAAM,EAAA,CAAA;AACb,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASlf,QAER,GAFD,SAASA,QAAAA,CAAUnN,IAAS,EAAA;AAC1B,QAAA,aAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACjB,KAAA,CAAA;IAEA,MAASqN,CAAAA,OAaR,GAbD,SAASA,OAAAA,GAAAA;QACP,IAAI,IAAI,CAACse,cAAc,EAAE;AACvB,YAAA,IAAI,CAACa,OAAO,EAAA,CAAA;AACd,SAAA;QACA,IAAI,IAAI,CAACf,aAAa,EAAE;YACtB,IAAI,CAACA,aAAa,GAAG,KAAA,CAAA;AACrB,YAAA,IAAI,CAACU,SAAS,EAAA,CAAA;AAChB,SAAA;QACA,IAAI,IAAI,CAACn6B,IAAI,EAAE;AACbL,YAAAA,UAAAA,CAAW,IAAI,CAACK,IAAI,CAAC86B,UAAU,EAAE,IAAI,CAAA,CAAA;AACvC,SAAA;AAEA,QAAA,aAAA,CAAA,SAAA,CAAMzf,OAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;IAEA,MAAQ5M,CAAAA,KAMP,GAND,SAAQA,KAAAA,GAAAA;QACN,IAAI,IAAI,CAACirB,aAAa,EAAE;AACtB,YAAA,OAAA;AACF,SAAA;QACA,IAAI,CAACA,aAAa,GAAG,IAAA,CAAA;AACrB,QAAA,IAAI,CAACM,OAAO,EAAA,CAAA;AACd,KAAA,CAAA;AAxKoBR,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YAiBhB9O,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC1qB,IAAI,CAAC0qB,SAAS,CAAA;AAC5B,aAAA;;;YAKIqQ,GAAAA,EAAAA,oBAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC/6B,IAAI,CAAC46B,QAAQ,IAAI,IAAI,CAACC,OAAO,CAAA;AAC3C,aAAA;;;YAEIA,GAAAA,EAAAA,SAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACjB,QAAQ,CAAA;AACtB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAaz/B,KAAc,EAAA;AACzB,gBAAA,IAAI,IAAI,CAAC0gC,OAAO,KAAK1gC,KAAO,EAAA;oBAC1B,IAAI,CAACy/B,QAAQ,GAAGz/B,KAAAA,CAAAA;AAChB,oBAAA,IAAIA,KAAO,EAAA;wBACT,IAAI,IAAI,CAAC4gC,kBAAkB,EAAE;AAC3B,4BAAA,IAAI,CAACV,MAAM,EAAA,CAAA;AACX,4BAAA,IAAI,CAAC,IAAI,CAACX,aAAa,EAAE;AACvB,gCAAA,IAAI,CAACM,OAAO,EAAA,CAAA;gCACZ,IAAI,CAACN,aAAa,GAAG,IAAA,CAAA;AACvB,6BAAA;AACF,yBAAA;qBACK,MAAA;wBACL,IAAI,IAAI,CAACC,cAAc,EAAE;AACvB,4BAAA,IAAI,CAACa,OAAO,EAAA,CAAA;AACd,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;;;AAjDoBhB,IAAAA,OAAAA,SAAAA,CAAAA;EAAkB7e,aAyKvC,EAAA;;AApKEd,IAAAA,SAAAA,EAAAA;AALmB2f,CAAAA,EAAAA,SAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAWnB3f,IAAAA,SAAAA,EAAAA;AAXmB2f,CAAAA,EAAAA,SAAAA,CAAAA,SAAAA,EAAAA,UAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AA2KtB;;;AAGC,IACM,IAAA,SAAewB,iBAAV,SAAL,SAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,SAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAEpB,IAAA,MAAA,CAASN,UAER,GAFD,SAASA,UAAAA,CAAY16B,IAAa,EAAA;AAChC,QAAA,SAAA,CAAA,SAAA,CAAM06B,UAAD,CAAY16B,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACnB,KAAA,CAAA;IAEA,MAASqb,CAAAA,OAER,GAFD,SAASA,OAAAA,GAAAA;AACP,QAAA,SAAA,CAAA,SAAA,CAAMA,OAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;AARoB2f,IAAAA,OAAAA,SAAAA,CAAAA;EAAkBxB,SASvC;;ACtLM,IAAA,QAAMyB,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,GAAAA;;;AACX;;AAEC,MAAA,KAAA,CACDC,aAAsC,GAAA,IAAA,CAAA;cAC9B/D,UAAyC,GAAA,IAAA,CAAA;;;AALtC8D,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AAOX;;;;;AAKC,MACDzC,OAAAA,OAIC,GAJDA,SAAAA,OAASn6B,CAAAA,IAAY,EAAElE,KAAc,EAAA;QACnC,IAAI,IAAI,CAAC+gC,aAAa,EAAE;AACtB,YAAA,IAAI,CAACA,aAAa,CAAC1C,OAAO,CAACn6B,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;AACnC,SAAA;AACF,KAAA,CAAA;AAEA;;;;;AAKC,MACDixB,OAAAA,QAIC,GAJDA,SAAAA,QAAU/sB,CAAAA,IAAY,EAAElE,KAAa,EAAA;QACnC,IAAI,IAAI,CAAC+gC,aAAa,EAAE;AACtB,YAAA,IAAI,CAACA,aAAa,CAAC9P,QAAQ,CAAC/sB,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDu+B,MAAAA,CAAAA,UAIC,GAJDA,SAAAA,WAAYr6B,IAAY,EAAA;QACtB,IAAI,IAAI,CAAC68B,aAAa,EAAE;AACtB,YAAA,IAAI,CAACA,aAAa,CAACxC,UAAU,CAACr6B,IAAAA,CAAAA,CAAAA;AAChC,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDs6B,MAAAA,CAAAA,YAIC,GAJDA,SAAAA,aAAct6B,IAAY,EAAA;QACxB,IAAI,IAAI,CAAC68B,aAAa,EAAE;AACtB,YAAA,IAAI,CAACA,aAAa,CAACvC,YAAY,CAACt6B,IAAAA,CAAAA,CAAAA;AAClC,SAAA;AACF,KAAA,CAAA;AAEA;;;;;AAKC,MACD85B,MAAAA,CAAAA,mBAQC,GARDA,SAAAA,oBAAqB5H,WAAmB,EAAA;AACtC,QAAA,IAAIrQ,MAAkC,GAAA,IAAA,CAAA;QAEtC,IAAI,IAAI,CAACgb,aAAa,EAAE;AACtBhb,YAAAA,MAAAA,GAAS,IAAI,CAACgb,aAAa,CAAC/C,mBAAmB,CAAC5H,WAAAA,CAAAA,CAAAA;AAClD,SAAA;QAEA,OAAOrQ,MAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAS8Z,CAAAA,OAIR,GAJD,SAASA,OAAAA,GAAAA;QACP,IAAI,IAAI,CAAC7C,UAAU,EAAE;YACnB,IAAI,CAAC+D,aAAa,GAAG,IAAIhE,aAAAA,CAAc,IAAI,CAACC,UAAU,EAAE,IAAI,CAACn3B,IAAI,CAAA,CAAA;AACnE,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASi6B,QAsDR,GAtDD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC+4B,aAAa,EAAE;AACvB,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAMhb,SAAS,IAAI,CAACgb,aAAa,CAACrD,aAAa,CAAC11B,EAAK,GAAA,IAAA,CAAA,CAAA;;;AAIrD,QAAA,IAAMwzB,qBAAqB,IAAI,CAACuF,aAAa,CAAC3a,QAAQ,CAACoV,kBAAkB,CAAA;AAEzE,QAAA,IAAK,IAAIv5B,CAAI,GAAA,CAAA,EAAGA,IAAIu5B,kBAAmB95B,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YAClD,IAAM2lB,QAAAA,GAAW7B,OAAOG,IAAI,CAACwB,qBAAqB,CAACzlB,CAAAA,CAAE,CAAC2lB,QAAQ,CAAA;YAC9D,IAAMC,QAAAA,GAAW9B,OAAOG,IAAI,CAACwB,qBAAqB,CAACzlB,CAAAA,CAAE,CAAC4lB,QAAQ,CAAA;YAC9D,IAAM5d,KAAAA,GAAQ8b,OAAOG,IAAI,CAACwB,qBAAqB,CAACzlB,CAAAA,CAAE,CAACgI,KAAK,CAAA;YACxD,IAAM4C,KAAAA,GAAQkZ,OAAOG,IAAI,CAACwB,qBAAqB,CAACzlB,CAAAA,CAAE,CAAC4K,KAAK,CAAA;AAExD2uB,YAAAA,kBAAkB,CAACv5B,CAAAA,CAAE,CAAC4uB,WAAW,CAACjJ,QAAAA,CAAS9f,CAAC,EAAE8f,QAAS/kB,CAAAA,CAAC,EAAE+kB,QAAAA,CAAS9b,CAAC,CAAA,CAAA;AACpE0vB,YAAAA,kBAAkB,CAACv5B,CAAAA,CAAE,CAAC+uB,QAAQ,CAAC/mB,KAAAA,CAAMnC,CAAC,EAAEmC,KAAMpH,CAAAA,CAAC,EAAEoH,KAAAA,CAAM6B,CAAC,CAAA,CAAA;AAExD,YAAA,IAAI,IAAI,CAACi1B,aAAa,CAAC3a,QAAQ,CAACiV,QAAQ,EAAE;AACxCG,gBAAAA,kBAAkB,CAACv5B,CAAAA,CAAE,CAAC6uB,WAAW,CAACjkB,KAAAA,CAAM/E,CAAC,EAAE+E,KAAMhK,CAAAA,CAAC,EAAEgK,KAAAA,CAAMf,CAAC,CAAA,CAAA;aACtD,MAAA;AACL0vB,gBAAAA,kBAAkB,CAACv5B,CAAAA,CAAE,CAAC++B,aAAa,CAACnZ,QAAS/f,CAAAA,CAAC,EAAE+f,QAAAA,CAAShlB,CAAC,EAAEglB,QAAAA,CAAS/b,CAAC,EAAE+b,SAASha,CAAC,CAAA,CAAA;AACpF,aAAA;AACF,SAAA;;;AAIA,QAAA,IAAMytB,uBAAuB,IAAI,CAACyF,aAAa,CAAC3a,QAAQ,CAACkV,oBAAoB,CAAA;AAE7E,QAAA,IAAK,IAAIr5B,EAAI,GAAA,CAAA,EAAGA,KAAIq5B,oBAAqB55B,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;YACpD,IAAMw6B,cAAAA,GAAiBnB,oBAAoB,CAACr5B,EAAE,CAAA,CAAA;YAC9C,IAAM6D,QAAAA,GAAW22B,eAAeC,YAAY,CAAA;YAE5CD,cAAeD,CAAAA,YAAY,CAAC12B,QAAS,CAAA,GAAGigB,OAAOG,IAAI,CAAC6B,mBAAmB,CAAC9lB,EAAE,CAAA,CAAA;AAE1E,YAAA,IAAIw6B,YAAqB,CAArBA,cAAel7B,CAAAA,MAAM,EAAY89B,SAAW,CAAA,EAAA;gBAC9C5C,cAAel7B,CAAAA,MAAM,CAAC0+B,0BAA0B,EAAA,CAAA;AAClD,aAAA;AACF,SAAA;AAEA,QAAA,IAAM1E,uBAAuB,IAAI,CAACwF,aAAa,CAAC3a,QAAQ,CAACmV,oBAAoB,CAAA;AAE7E,QAAA,IAAK,IAAIt5B,EAAI,GAAA,CAAA,EAAGA,KAAIs5B,oBAAqB75B,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;YACpD,IAAMw6B,eAAAA,GAAiBlB,oBAAoB,CAACt5B,EAAE,CAAA,CAAA;YAC9C,IAAM6D,SAAAA,GAAW22B,gBAAeC,YAAY,CAAA;YAE5CD,eAAeD,CAAAA,YAAY,CAAC12B,SAAS,CAAA,GAAGigB,OAAOG,IAAI,CAACgC,mBAAmB,CAACjmB,EAAE,CAAA,CAAA;AAE1E,YAAA,IAAIw6B,YAAqB,CAArBA,eAAel7B,CAAAA,MAAM,EAAY89B,SAAW,CAAA,EAAA;gBAC9C5C,eAAel7B,CAAAA,MAAM,CAAC0+B,0BAA0B,EAAA,CAAA;AAClD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASjf,QAER,GAFD,SAASA,QAAAA,CAAUnN,IAAuB,EAAA;QACxC,IAAI,CAACmpB,UAAU,GAAG,IAAI,CAACtjB,MAAM,CAAC6K,UAAU,CAAsB1Q,IAAAA,CAAKmpB,UAAU,CAAA,CAAA;AAC/E,KAAA,CAAA;AArIW8D,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBzB,SAsI7B,EAAA;AAtIYyB,QAAAA,GAAAA,UAAAA,CAAAA;IADZthB,YAAa,CAAA,UAAA,CAAA;AACDshB,CAAAA,EAAAA,QAAAA,CAAAA;;ACLb;;;AAGC,IACM,IAAA,iBAAMG,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;AAGXC,QAAAA,KAAAA,CAAAA,SAAAA,GAAwB,EAAE,CAAA;cAGhBC,SAAY,GAAA,CAAA,CAAA;;;AANXF,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AA0BXG,IAAAA,MAAAA,CAAAA,MAAqC,GAArCA,SAAAA,MAAAA,CAAQC,QAAkB,EAAU,EAAA,CAAA;IAEpC,MAAS1B,CAAAA,QAER,GAFD,SAASA,QAAAA,GAAAA;AACP,QAAA,IAAA,sBAAA,CAAA;SAAA,sBAAA,GAAA,IAAI,CAAC95B,IAAI,CAACmT,WAAW,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAuBsoB,WAAW,CAACC,0BAA0B,CAAC,IAAI,CAAA,CAAA;AACpE,KAAA,CAAA;IAEA,MAAS3B,CAAAA,SAER,GAFD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAA,sBAAA,CAAA;SAAA,sBAAA,GAAA,IAAI,CAAC/5B,IAAI,CAACmT,WAAW,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAuBsoB,WAAW,CAACE,+BAA+B,CAAC,IAAI,CAAA,CAAA;AACzE,KAAA,CAAA;AAlCWP,IAAAA,aAAAA,CAAAA,iBAAAA,EAAAA;;YAQP5sB,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC8sB,SAAS,CAAA;AACvB,aAAA;AACA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAcnhC,KAAa,EAAA;gBACzB,IAAI,CAACmhC,SAAS,GAAGnhC,KAAAA,CAAAA;AACnB,aAAA;;;YAEIyhC,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACP,SAAS,CAAC,CAAE,CAAA,CAAA;AAC1B,aAAA;AACA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAcO,QAAkB,EAAA;AAC9B,gBAAA,IAAI,IAAI,CAACP,SAAS,CAACx/B,MAAM,KAAK,CAAG,EAAA;AAC/B,oBAAA,IAAI,CAACw/B,SAAS,CAACt9B,IAAI,CAAC69B,QAAAA,CAAAA,CAAAA;iBACf,MAAA;AACL,oBAAA,IAAI,CAACP,SAAS,CAAC,CAAA,CAAE,GAAGO,QAAAA,CAAAA;AACtB,iBAAA;AACF,aAAA;;;AAxBWR,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0B5B,SAmCtC,EAAA;;AAjCE3f,IAAAA,SAAAA,EAAAA;AAFUuhB,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAKVvhB,IAAAA,SAAAA,EAAAA;AALUuhB,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACNb;;AAEC,IACM,IAAA,OAAMS,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,OAAAA,CA8BGvY,GAAO,EAAEG,GAAO,EAAEG,GAAO,EAAEkY,GAAO,EAAEvY,GAAO,EAAEG,GAAO,EAAEG,GAAO,EAAEkY,GAAO,EAAEvY,GAAO,EAAEG,GAAO,EAAEG,GAAO,EAAEkY,GAAO,EAAEC,GAAO,EAAEC,GAAO,EAAEC,GAAO,EAAEC,GAAO,EAAA;AAA9I9Y,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGkY,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGvY,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGkY,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGvY,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGkY,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;QACrJ,IAAI,CAAC/Y,QAAQ,GAAG;AACZC,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKkY,YAAAA,GAAAA;AACfvY,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKkY,YAAAA,GAAAA;AACfvY,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKkY,YAAAA,GAAAA;AACfC,YAAAA,GAAAA;AAAKC,YAAAA,GAAAA;AAAKC,YAAAA,GAAAA;AAAKC,YAAAA,GAAAA;AAClB,SAAA,CAAA;;AApCIP,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAsCT;;;;;;;;;;;;;;;;;;;AAmBC,QACDz6B,MAAAA,CAAAA,GAmBC,GAnBDA,SAAAA,IAAIkiB,GAAG,EAAEG,GAAG,EAAEG,GAAG,EAAEkY,GAAG,EAAEvY,GAAG,EAAEG,GAAG,EAAEG,GAAG,EAAEkY,GAAG,EAAEvY,GAAG,EAAEG,GAAG,EAAEG,GAAG,EAAEkY,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAA;QAC9E,IAAMp+B,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvBrlB,CAAC,CAAC,EAAE,GAAGslB,GAAAA,CAAAA;QACPtlB,CAAC,CAAC,EAAE,GAAGylB,GAAAA,CAAAA;QACPzlB,CAAC,CAAC,EAAE,GAAG4lB,GAAAA,CAAAA;QACP5lB,CAAC,CAAC,EAAE,GAAG89B,GAAAA,CAAAA;QACP99B,CAAC,CAAC,EAAE,GAAGulB,GAAAA,CAAAA;QACPvlB,CAAC,CAAC,EAAE,GAAG0lB,GAAAA,CAAAA;QACP1lB,CAAC,CAAC,EAAE,GAAG6lB,GAAAA,CAAAA;QACP7lB,CAAC,CAAC,EAAE,GAAG+9B,GAAAA,CAAAA;QACP/9B,CAAC,CAAC,EAAE,GAAGwlB,GAAAA,CAAAA;QACPxlB,CAAC,CAAC,EAAE,GAAG2lB,GAAAA,CAAAA;QACP3lB,CAAC,CAAC,GAAG,GAAG8lB,GAAAA,CAAAA;QACR9lB,CAAC,CAAC,GAAG,GAAGg+B,GAAAA,CAAAA;QACRh+B,CAAC,CAAC,GAAG,GAAGi+B,GAAAA,CAAAA;QACRj+B,CAAC,CAAC,GAAG,GAAGk+B,GAAAA,CAAAA;QACRl+B,CAAC,CAAC,GAAG,GAAGm+B,GAAAA,CAAAA;QACRn+B,CAAC,CAAC,GAAG,GAAGo+B,GAAAA,CAAAA;AACR,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;;;;;;;;;;;;;;AAmBC,QACDC,MAAAA,CAAAA,mBAmBC,GAnBDA,SAAAA,oBAAoB/Y,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEyY,GAAG,EAAExY,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEuY,GAAG,EAAEtY,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEqY,GAAG,EAAEL,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEI,GAAG,EAAA;QAC9F,IAAMp+B,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvBrlB,CAAC,CAAC,EAAE,GAAGslB,GAAAA,CAAAA;QACPtlB,CAAC,CAAC,EAAE,GAAGulB,GAAAA,CAAAA;QACPvlB,CAAC,CAAC,EAAE,GAAGwlB,GAAAA,CAAAA;QACPxlB,CAAC,CAAC,GAAG,GAAGi+B,GAAAA,CAAAA;QACRj+B,CAAC,CAAC,EAAE,GAAGylB,GAAAA,CAAAA;QACPzlB,CAAC,CAAC,EAAE,GAAG0lB,GAAAA,CAAAA;QACP1lB,CAAC,CAAC,EAAE,GAAG2lB,GAAAA,CAAAA;QACP3lB,CAAC,CAAC,GAAG,GAAGk+B,GAAAA,CAAAA;QACRl+B,CAAC,CAAC,EAAE,GAAG4lB,GAAAA,CAAAA;QACP5lB,CAAC,CAAC,EAAE,GAAG6lB,GAAAA,CAAAA;QACP7lB,CAAC,CAAC,GAAG,GAAG8lB,GAAAA,CAAAA;QACR9lB,CAAC,CAAC,GAAG,GAAGm+B,GAAAA,CAAAA;QACRn+B,CAAC,CAAC,EAAE,GAAG89B,GAAAA,CAAAA;QACP99B,CAAC,CAAC,EAAE,GAAG+9B,GAAAA,CAAAA;QACP/9B,CAAC,CAAC,GAAG,GAAGg+B,GAAAA,CAAAA;QACRh+B,CAAC,CAAC,GAAG,GAAGo+B,GAAAA,CAAAA;AACR,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;;QAQAE,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,oBAAAA,CAAqBC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAA;QAC/B,OAAO,IAAI,CAACt7B,GAAG,CAACm7B,GAAGt6B,CAAC,EAAEs6B,EAAGv/B,CAAAA,CAAC,EAAEu/B,EAAAA,CAAGt2B,CAAC,EAAEs2B,EAAAA,CAAGv0B,CAAC,EAAEw0B,EAAGv6B,CAAAA,CAAC,EAAEu6B,EAAGx/B,CAAAA,CAAC,EAAEw/B,EAAAA,CAAGv2B,CAAC,EAAEu2B,GAAGx0B,CAAC,EAAEy0B,GAAGx6B,CAAC,EAAEw6B,GAAGz/B,CAAC,EAAEy/B,EAAGx2B,CAAAA,CAAC,EAAEw2B,EAAAA,CAAGz0B,CAAC,EAAE00B,EAAAA,CAAGz6B,CAAC,EAAEy6B,EAAG1/B,CAAAA,CAAC,EAAE0/B,EAAGz2B,CAAAA,CAAC,EAAEy2B,EAAAA,CAAG10B,CAAC,CAAA,CAAA;AAClH,KAAA,CAAA;AACA;;;;AAIC,QACD20B,MAAAA,CAAAA,cAIC,GAJDA,SAAAA,eAAer1B,CAAC,EAAA;QACZ,IAAMs1B,EAAAA,GAAKt1B,EAAE+b,QAAQ,CAAA;QACrB,IAAI,CAACjiB,GAAG,CAACw7B,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEA,EAAE,CAAC,EAAE,EAAE,CAAA,EAAGA,EAAE,CAAC,CAAA,CAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAE,GAAGA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAE,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC1F,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDx5B,OAAAA,YAKC,GALDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACzB,QAAA,IAAK,IAAI7C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAIA,CAAK,EAAA,CAAA;YACzB,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,CAAE,GAAGiH,KAAK,CAACpE,SAAS7C,CAAE,CAAA,CAAA;AACxC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAygC,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAa56B,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC7E,GAAG,CAACa,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAGjF,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAGiJ,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjE,KAAA,CAAA;AACA;;;;;;QAOA62B,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,mBAAmB76B,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC7E,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAGa,EAAAA,CAAAA,EAAGjF,GAAGiJ,CAAG,EAAA,CAAA,CAAA,CAAA;AACjE,KAAA,CAAA;AACA;;;;AAIC,QACD82B,MAAAA,CAAAA,gBAIC,GAJDA,SAAAA,iBAAiBC,KAAK,EAAA;QAClB,IAAMphC,CAAAA,GAAIgF,IAAKsiB,CAAAA,GAAG,CAAC8Z,KAAAA,CAAAA,CAAAA;QACnB,IAAM72B,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAACga,KAAAA,CAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI,CAAC57B,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAGxF,GAAGuK,CAAG,EAAA,CAAA,EAAG,GAAG,CAACA,CAAAA,EAAGvK,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAClE,KAAA,CAAA;AACA;;;;AAIC,QACDqhC,MAAAA,CAAAA,gBAIC,GAJDA,SAAAA,iBAAiBD,KAAK,EAAA;QAClB,IAAMphC,CAAAA,GAAIgF,IAAKsiB,CAAAA,GAAG,CAAC8Z,KAAAA,CAAAA,CAAAA;QACnB,IAAM72B,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAACga,KAAAA,CAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI,CAAC57B,GAAG,CAACxF,CAAG,EAAA,CAAA,EAAG,CAACuK,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAGA,CAAG,EAAA,CAAA,EAAGvK,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAClE,KAAA,CAAA;AACA;;;;AAIC,QACDshC,MAAAA,CAAAA,gBAIC,GAJDA,SAAAA,iBAAiBF,KAAK,EAAA;QAClB,IAAMphC,CAAAA,GAAIgF,IAAKsiB,CAAAA,GAAG,CAAC8Z,KAAAA,CAAAA,CAAAA;QACnB,IAAM72B,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAACga,KAAAA,CAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI,CAAC57B,GAAG,CAACxF,CAAGuK,EAAAA,CAAAA,EAAG,GAAG,CAAG,EAAA,CAACA,GAAGvK,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAClE,KAAA,CAAA;AACA;;;;;AAKC,QACDuhC,OAAAA,mBAWC,GAXDA,SAAAA,mBAAoBta,CAAAA,IAAI,EAAEC,KAAK,EAAA;;QAE3B,IAAMrlB,CAAAA,GAAIo+B,OAjNLA,CAiNa5Y,QAAQ,CAAA;QAC1BxlB,CAAE6F,CAAAA,QAAQ,CAACuf,IAAAA,CAAAA,CAAMle,SAAS,EAAA,CAAA;QAC1B,IAAM/I,CAAAA,GAAIgF,IAAKsiB,CAAAA,GAAG,CAACJ,KAAAA,CAAAA,CAAAA;QACnB,IAAM3c,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAACF,KAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAMlmB,IAAI,CAAIhB,GAAAA,CAAAA,CAAAA;AACd,QAAA,IAAQqG,IAAYxE,CAAZwE,CAAAA,CAAAA,EAAGjF,IAASS,CAATT,CAAAA,CAAAA,EAAGiJ,IAAMxI,CAANwI,CAAAA,CAAAA,CAAAA;AACd,QAAA,IAAMm3B,KAAKxgC,CAAIqF,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMo7B,KAAKzgC,CAAII,GAAAA,CAAAA,CAAAA;AACf,QAAA,OAAO,IAAI,CAACoE,GAAG,CAACg8B,EAAKn7B,GAAAA,CAAAA,GAAIrG,GAAGwhC,EAAKpgC,GAAAA,CAAAA,GAAImJ,IAAIF,CAAGm3B,EAAAA,EAAAA,GAAKn3B,IAAIE,CAAInJ,GAAAA,CAAAA,EAAG,GAAGogC,EAAKpgC,GAAAA,CAAAA,GAAImJ,IAAIF,CAAGo3B,EAAAA,EAAAA,GAAKrgC,IAAIpB,CAAGyhC,EAAAA,EAAAA,GAAKp3B,IAAIE,CAAIlE,GAAAA,CAAAA,EAAG,GAAGm7B,EAAKn3B,GAAAA,CAAAA,GAAIE,IAAInJ,CAAGqgC,EAAAA,EAAAA,GAAKp3B,IAAIE,CAAIlE,GAAAA,CAAAA,EAAGrF,IAAIqJ,CAAIA,GAAAA,CAAAA,GAAIrK,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC7K,KAAA,CAAA;AACA;;;;AAIC,QACD8mB,MAAAA,CAAAA,YAGC,GAHDA,SAAAA,aAAa1b,KAAK,EAAA;QACdA,KAAMggB,CAAAA,SAAS,CAAC,IAAI,CAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDD,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,kBAAkB5C,IAAI,EAAA;QAClB,OAAO,IAAI,CAAC+C,OAAO,CAAClhB,QAAQD,IAAI,EAAEoe,IAAMne,EAAAA,OAAAA,CAAQF,GAAG,CAAA,CAAA;AACvD,KAAA,CAAA;AACA;;;;;;QAOAw3B,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAar7B,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC7E,GAAG,CAAC,CAAGa,EAAAA,CAAAA,EAAGA,GAAG,CAAGjF,EAAAA,CAAAA,EAAG,CAAGA,EAAAA,CAAAA,EAAG,GAAGiJ,CAAGA,EAAAA,CAAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjE,KAAA,CAAA;AACA;;;;;;QAOAs3B,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAaC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAA;AAC5B,QAAA,OAAO,IAAI,CAACt8B,GAAG,CAACo8B,KAAAA,CAAMv7B,CAAC,EAAEu7B,KAAAA,CAAMxgC,CAAC,EAAEwgC,MAAMv3B,CAAC,EAAE,CAAGw3B,EAAAA,KAAAA,CAAMx7B,CAAC,EAAEw7B,KAAAA,CAAMzgC,CAAC,EAAEygC,MAAMx3B,CAAC,EAAE,CAAGy3B,EAAAA,KAAAA,CAAMz7B,CAAC,EAAEy7B,KAAAA,CAAM1gC,CAAC,EAAE0gC,MAAMz3B,CAAC,EAAE,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACvH,KAAA,CAAA;AACA;;;QAIAhD,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;AACI,QAAA,IAAK,IAAI7G,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAIA,CAAK,EAAA,CAAA;AACzB,YAAA,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,CAAE,GAAG,CAAA,CAAA;AACvB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAooB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACpjB,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjE,KAAA,CAAA;AACA;;;QAIAu8B,MAAAA,CAAAA,UAMC,GANDA,SAAAA,UAAAA,GAAAA;QACI,IAAM3/B,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,OAAOrlB,CAAC,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,CAAC,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,CAAC,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,CAAC,CAAC,EAAA,CAAG,KAAK,CAAA,IACpDA,CAAC,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,CAAC,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,CAAC,CAAC,CAAA,CAAE,KAAK,CAAKA,IAAAA,CAAC,CAAC,EAAG,CAAA,KAAK,CACpDA,IAAAA,CAAC,CAAC,CAAE,CAAA,KAAK,CAAKA,IAAAA,CAAC,CAAC,CAAE,CAAA,KAAK,CAAKA,IAAAA,CAAC,CAAC,EAAG,CAAA,KAAK,CAAKA,IAAAA,CAAC,CAAC,EAAG,CAAA,KAAK,CACrDA,IAAAA,CAAC,CAAC,CAAE,CAAA,KAAK,CAAKA,IAAAA,CAAC,CAAC,CAAE,CAAA,KAAK,CAAKA,IAAAA,CAAC,CAAC,EAAG,CAAA,KAAK,KAAKA,CAAC,CAAC,GAAG,KAAK,CAAA,CAAA;AAChE,KAAA,CAAA;AACA;;;QAIAwF,MAAAA,CAAAA,KAGC,GAHDA,SAAAA,KAAAA,GAAAA;QACI,IAAMxF,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,OAAO,IAlSFwY,OAAAA,CAkSc79B,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,EAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,EAAG,CAAA,EAAEA,CAAC,CAAC,EAAA,CAAG,EAAEA,CAAC,CAAC,EAAA,CAAG,EAAEA,CAAC,CAAC,EAAA,CAAG,EAAEA,CAAC,CAAC,EAAA,CAAG,EAAEA,CAAC,CAAC,EAAG,CAAA,CAAA,CAAA;AAC3H,KAAA,CAAA;AACA;;;;AAIC,QACDsF,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,SAASgE,CAAC,EAAA;AACN,QAAA,IAAI,CAAC+b,QAAQ,GAAO/b,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAE+b,QAAQ,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDua,OAAAA,eAEC,GAFDA,SAAAA,eAAgBxhC,CAAAA,CAAC,EAAEqB,CAAC,EAAA;AAChB,QAAA,OAAOA,CAAE2D,CAAAA,GAAG,CAAC,IAAI,CAACiiB,QAAQ,CAACjnB,CAAI,GAAA,CAAA,CAAE,EAAE,IAAI,CAACinB,QAAQ,CAACjnB,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,EAAE,IAAI,CAACinB,QAAQ,CAACjnB,IAAI,CAAI,GAAA,CAAA,CAAE,EAAE,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA,CAAA;AACnH,KAAA,CAAA;AACA;;;;;;QAOAyhC,MAAAA,CAAAA,MA2BC,GA3BDA,SAAAA,OAAOC,GAAG,EAAEpiC,MAAM,EAAEqiC,EAAE,EAAA;QAClB,IAAMC,EAAAA,GAAKnC,OA9TNA,CA8Tc5Y,QAAQ,CAAA;QAC3B,IAAMgb,EAAAA,GAAKpC,OA/TNA,CA+TcqC,QAAQ,CAAA;QAC3B,IAAMC,EAAAA,GAAKtC,OAhUNA,CAgUcuC,QAAQ,CAAA;QAC3BD,EAAGn6B,CAAAA,eAAe,CAAC85B,GAAKpiC,EAAAA,MAAAA,CAAAA,CAAAA;AACxByiC,QAAAA,EAAAA,CAAGx5B,SAAS,EAAA,CAAA;QACZq5B,EAAG53B,CAAAA,YAAY,CAAC23B,EAAII,EAAAA,EAAAA,CAAAA,CAAAA;AACpBH,QAAAA,EAAAA,CAAGr5B,SAAS,EAAA,CAAA;QACZs5B,EAAG73B,CAAAA,YAAY,CAAC+3B,EAAIH,EAAAA,EAAAA,CAAAA,CAAAA;QACpB,IAAM5a,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxBD,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG4a,EAAAA,CAAG/7B,CAAC,CAAA;AACZmhB,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG6a,EAAAA,CAAGh8B,CAAC,CAAA;AACZmhB,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG+a,EAAAA,CAAGl8B,CAAC,CAAA;QACZmhB,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;AACRA,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG4a,EAAAA,CAAGhhC,CAAC,CAAA;AACZomB,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG6a,EAAAA,CAAGjhC,CAAC,CAAA;AACZomB,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG+a,EAAAA,CAAGnhC,CAAC,CAAA;QACZomB,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;AACRA,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG4a,EAAAA,CAAG/3B,CAAC,CAAA;AACZmd,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAG6a,EAAAA,CAAGh4B,CAAC,CAAA;AACZmd,QAAAA,EAAE,CAAC,EAAA,CAAG,GAAG+a,EAAAA,CAAGl4B,CAAC,CAAA;QACbmd,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;AACTA,QAAAA,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC4a,EAAAA,CAAG94B,GAAG,CAAC44B,GAAAA,CAAAA,CAAAA;AACjB1a,QAAAA,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC6a,EAAAA,CAAG/4B,GAAG,CAAC44B,GAAAA,CAAAA,CAAAA;AACjB1a,QAAAA,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC+a,EAAAA,CAAGj5B,GAAG,CAAC44B,GAAAA,CAAAA,CAAAA;QACjB1a,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDib,OAAAA,eAOC,GAPDA,SAAAA,eAAgBnjC,CAAAA,KAAK,EAAEiL,CAAC,EAAA;QACpB,IAAMid,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;QACxB,IAAMib,EAAAA,GAAKpjC,MAAMmoB,QAAQ,CAAA;AACzB,QAAA,IAAK,IAAIjnB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAIA,CAAK,EAAA,CAAA;AACzBgnB,YAAAA,EAAE,CAAChnB,CAAE,CAAA,IAAIkiC,EAAE,CAACliC,EAAE,GAAG+J,CAAAA,CAAAA;AACrB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDlC,MAAAA,CAAAA,QAUC,GAVDA,SAAAA,SAAS/I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;AAC3B,YAAA,IAAK,IAAIkB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAIA,CAAK,EAAA,CAAA;AACzB,gBAAA,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,CAAE,IAAIlB,KAAAA,CAAAA;AACxB,aAAA;AACA,YAAA,OAAO,IAAI,CAAA;SAEV,MAAA;AACD,YAAA,OAAO,IAAI,CAACqjC,gBAAgB,CAAC,IAAI,EAAErjC,KAAAA,CAAAA,CAAAA;AACvC,SAAA;AACJ,KAAA,CAAA;AACA;;;;AAIC,QACD2pB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAY5pB,IAAI,EAAA;AACZ,QAAA,OAAO,IAAI,CAACsjC,gBAAgB,CAACtjC,MAAM,IAAI,CAAA,CAAA;AAC3C,KAAA,CAAA;AACA;;;;;AAKC,QACDsjC,OAAAA,gBA6BC,GA7BDA,SAAAA,gBAAiBtjC,CAAAA,IAAI,EAAEC,KAAK,EAAA;QACxB,IAAMsjC,EAAAA,GAAKvjC,KAAKooB,QAAQ,CAAA;QACxB,IAAMob,EAAAA,GAAKvjC,MAAMmoB,QAAQ,CAAA;QACzB,IAAMD,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxB,QAAA,IAAMqb,MAAMF,EAAE,CAAC,EAAE,EAAEG,GAAAA,GAAMH,EAAE,CAAC,CAAA,CAAE,EAAEI,GAAAA,GAAMJ,EAAE,CAAC,CAAA,CAAE,EAAEK,GAAML,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AACzD,QAAA,IAAMM,MAAMN,EAAE,CAAC,EAAE,EAAEO,GAAAA,GAAMP,EAAE,CAAC,CAAA,CAAE,EAAEQ,GAAAA,GAAMR,EAAE,CAAC,CAAA,CAAE,EAAES,GAAMT,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AACzD,QAAA,IAAMU,MAAMV,EAAE,CAAC,EAAE,EAAEW,GAAAA,GAAMX,EAAE,CAAC,CAAA,CAAE,EAAEY,GAAAA,GAAMZ,EAAE,CAAC,EAAA,CAAG,EAAEa,GAAMb,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AAC1D,QAAA,IAAMc,MAAMd,EAAE,CAAC,EAAE,EAAEe,GAAAA,GAAMf,EAAE,CAAC,CAAA,CAAE,EAAEgB,GAAAA,GAAMhB,EAAE,CAAC,EAAA,CAAG,EAAEiB,GAAMjB,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AAC1D,QAAA,IAAMkB,MAAMjB,EAAE,CAAC,EAAE,EAAEkB,GAAAA,GAAMlB,EAAE,CAAC,CAAA,CAAE,EAAEmB,GAAAA,GAAMnB,EAAE,CAAC,CAAA,CAAE,EAAEoB,GAAMpB,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AACzD,QAAA,IAAMqB,MAAMrB,EAAE,CAAC,EAAE,EAAEsB,GAAAA,GAAMtB,EAAE,CAAC,CAAA,CAAE,EAAEuB,GAAAA,GAAMvB,EAAE,CAAC,CAAA,CAAE,EAAEwB,GAAMxB,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AACzD,QAAA,IAAMyB,MAAMzB,EAAE,CAAC,EAAE,EAAE0B,GAAAA,GAAM1B,EAAE,CAAC,CAAA,CAAE,EAAE2B,GAAAA,GAAM3B,EAAE,CAAC,EAAA,CAAG,EAAE4B,GAAM5B,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;AAC1D,QAAA,IAAM6B,MAAM7B,EAAE,CAAC,EAAE,EAAE8B,GAAAA,GAAM9B,EAAE,CAAC,CAAA,CAAE,EAAE+B,GAAAA,GAAM/B,EAAE,CAAC,EAAA,CAAG,EAAEgC,GAAMhC,GAAAA,EAAE,CAAC,EAAG,CAAA,CAAA;QAC1Drb,EAAE,CAAC,EAAE,GAAGsb,GAAAA,GAAMgB,MAAMf,GAAMmB,GAAAA,GAAAA,GAAMlB,GAAMsB,GAAAA,GAAAA,GAAMrB,GAAMyB,GAAAA,GAAAA,CAAAA;QAClDld,EAAE,CAAC,EAAE,GAAGsb,GAAAA,GAAMiB,MAAMhB,GAAMoB,GAAAA,GAAAA,GAAMnB,GAAMuB,GAAAA,GAAAA,GAAMtB,GAAM0B,GAAAA,GAAAA,CAAAA;QAClDnd,EAAE,CAAC,EAAE,GAAGsb,GAAAA,GAAMkB,MAAMjB,GAAMqB,GAAAA,GAAAA,GAAMpB,GAAMwB,GAAAA,GAAAA,GAAMvB,GAAM2B,GAAAA,GAAAA,CAAAA;QAClDpd,EAAE,CAAC,GAAG,GAAGsb,GAAAA,GAAMmB,MAAMlB,GAAMsB,GAAAA,GAAAA,GAAMrB,GAAMyB,GAAAA,GAAAA,GAAMxB,GAAM4B,GAAAA,GAAAA,CAAAA;QACnDrd,EAAE,CAAC,EAAE,GAAG0b,GAAAA,GAAMY,MAAMX,GAAMe,GAAAA,GAAAA,GAAMd,GAAMkB,GAAAA,GAAAA,GAAMjB,GAAMqB,GAAAA,GAAAA,CAAAA;QAClDld,EAAE,CAAC,EAAE,GAAG0b,GAAAA,GAAMa,MAAMZ,GAAMgB,GAAAA,GAAAA,GAAMf,GAAMmB,GAAAA,GAAAA,GAAMlB,GAAMsB,GAAAA,GAAAA,CAAAA;QAClDnd,EAAE,CAAC,EAAE,GAAG0b,GAAAA,GAAMc,MAAMb,GAAMiB,GAAAA,GAAAA,GAAMhB,GAAMoB,GAAAA,GAAAA,GAAMnB,GAAMuB,GAAAA,GAAAA,CAAAA;QAClDpd,EAAE,CAAC,GAAG,GAAG0b,GAAAA,GAAMe,MAAMd,GAAMkB,GAAAA,GAAAA,GAAMjB,GAAMqB,GAAAA,GAAAA,GAAMpB,GAAMwB,GAAAA,GAAAA,CAAAA;QACnDrd,EAAE,CAAC,EAAE,GAAG8b,GAAAA,GAAMQ,MAAMP,GAAMW,GAAAA,GAAAA,GAAMV,GAAMc,GAAAA,GAAAA,GAAMb,GAAMiB,GAAAA,GAAAA,CAAAA;QAClDld,EAAE,CAAC,EAAE,GAAG8b,GAAAA,GAAMS,MAAMR,GAAMY,GAAAA,GAAAA,GAAMX,GAAMe,GAAAA,GAAAA,GAAMd,GAAMkB,GAAAA,GAAAA,CAAAA;QAClDnd,EAAE,CAAC,GAAG,GAAG8b,GAAAA,GAAMU,MAAMT,GAAMa,GAAAA,GAAAA,GAAMZ,GAAMgB,GAAAA,GAAAA,GAAMf,GAAMmB,GAAAA,GAAAA,CAAAA;QACnDpd,EAAE,CAAC,GAAG,GAAG8b,GAAAA,GAAMW,MAAMV,GAAMc,GAAAA,GAAAA,GAAMb,GAAMiB,GAAAA,GAAAA,GAAMhB,GAAMoB,GAAAA,GAAAA,CAAAA;QACnDrd,EAAE,CAAC,EAAE,GAAGkc,GAAAA,GAAMI,MAAMH,GAAMO,GAAAA,GAAAA,GAAMN,GAAMU,GAAAA,GAAAA,GAAMT,GAAMa,GAAAA,GAAAA,CAAAA;QAClDld,EAAE,CAAC,EAAE,GAAGkc,GAAAA,GAAMK,MAAMJ,GAAMQ,GAAAA,GAAAA,GAAMP,GAAMW,GAAAA,GAAAA,GAAMV,GAAMc,GAAAA,GAAAA,CAAAA;QAClDnd,EAAE,CAAC,GAAG,GAAGkc,GAAAA,GAAMM,MAAML,GAAMS,GAAAA,GAAAA,GAAMR,GAAMY,GAAAA,GAAAA,GAAMX,GAAMe,GAAAA,GAAAA,CAAAA;QACnDpd,EAAE,CAAC,GAAG,GAAGkc,GAAAA,GAAMO,MAAMN,GAAMU,GAAAA,GAAAA,GAAMT,GAAMa,GAAAA,GAAAA,GAAMZ,GAAMgB,GAAAA,GAAAA,CAAAA;AACnD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,cAmBC,GAnBDA,SAAAA,eAAev6B,CAAC,EAAA;QACZ,IAAMnI,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvBrlB,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,GAAG,IAAImI,CAAAA,CAAAA;QACTnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,GAAG,IAAImI,CAAAA,CAAAA;QACTnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,GAAG,IAAImI,CAAAA,CAAAA;QACTnI,CAAC,CAAC,GAAG,IAAImI,CAAAA,CAAAA;QACTnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,EAAE,IAAImI,CAAAA,CAAAA;QACRnI,CAAC,CAAC,GAAG,IAAImI,CAAAA,CAAAA;QACTnI,CAAC,CAAC,GAAG,IAAImI,CAAAA,CAAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAw6B,MAAAA,CAAAA,WA8BC,GA9BDA,SAAAA,WAAAA,GAAAA;QACI,IAAM3iC,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,IAAMC,MAAMtlB,CAAC,CAAC,EAAE,EAAEulB,GAAAA,GAAMvlB,CAAC,CAAC,CAAA,CAAE,EAAEwlB,GAAAA,GAAMxlB,CAAC,CAAC,CAAA,CAAE,EAAEi+B,GAAMj+B,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACrD,QAAA,IAAMylB,MAAMzlB,CAAC,CAAC,EAAE,EAAE0lB,GAAAA,GAAM1lB,CAAC,CAAC,CAAA,CAAE,EAAE2lB,GAAAA,GAAM3lB,CAAC,CAAC,CAAA,CAAE,EAAEk+B,GAAMl+B,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACrD,QAAA,IAAM4lB,MAAM5lB,CAAC,CAAC,EAAE,EAAE6lB,GAAAA,GAAM7lB,CAAC,CAAC,CAAA,CAAE,EAAE8lB,GAAAA,GAAM9lB,CAAC,CAAC,EAAA,CAAG,EAAEm+B,GAAMn+B,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACtD,QAAA,IAAM89B,MAAM99B,CAAC,CAAC,EAAE,EAAE+9B,GAAAA,GAAM/9B,CAAC,CAAC,CAAA,CAAE,EAAEg+B,GAAAA,GAAMh+B,CAAC,CAAC,EAAA,CAAG,EAAEo+B,GAAMp+B,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACtD,QAAA,OAAQ89B,OAAO,CAACG,MAAMtY,GAAME,GAAAA,GAAAA,GACtBL,MAAM0Y,GAAMrY,GAAAA,GAAAA,GACZoY,GAAMvY,GAAAA,GAAAA,GAAMI,MACZP,GAAM2Y,GAAAA,GAAAA,GAAMpY,MACZN,GAAME,GAAAA,GAAAA,GAAMyY,MACZ5Y,GAAMI,GAAAA,GAAAA,GAAMwY,GAAE,CAAA,GAChBJ,OAAO,CAACzY,MAAMK,GAAMwY,GAAAA,GAAAA,GACd7Y,MAAM4Y,GAAMpY,GAAAA,GAAAA,GACZmY,MAAMxY,GAAMK,GAAAA,GAAAA,GACZN,MAAMC,GAAM0Y,GAAAA,GAAAA,GACZ3Y,MAAM0Y,GAAMtY,GAAAA,GAAAA,GACZqY,MAAMtY,GAAMC,GAAAA,GAAE,CACpBoY,GAAAA,GAAAA,IAAO,CAAC1Y,GAAAA,GAAM4Y,MAAMrY,GACdP,GAAAA,GAAAA,GAAMI,MAAMyY,GACZF,GAAAA,GAAAA,GAAMxY,GAAMI,GAAAA,GAAAA,GACZN,MAAME,GAAM0Y,GAAAA,GAAAA,GACZF,MAAMvY,GAAME,GAAAA,GAAAA,GACZL,MAAM2Y,GAAMtY,GAAAA,GAAE,CACpBwY,GAAAA,GAAAA,IAAO,CAAC5Y,GAAAA,GAAME,MAAME,GACdN,GAAAA,GAAAA,GAAMK,MAAME,GACZP,GAAAA,GAAAA,GAAMI,MAAMI,GACZN,GAAAA,GAAAA,GAAMC,MAAMI,GACZN,GAAAA,GAAAA,GAAME,MAAMK,GACZP,GAAAA,GAAAA,GAAMI,MAAMC,GAAE,CAAA,CAAA;AAC5B,KAAA,CAAA;AACA;;;QAIAgd,MAAAA,CAAAA,SAuBC,GAvBDA,SAAAA,SAAAA,GAAAA;QACI,IAAM5iC,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvB,IAAIzmB,CAAAA,CAAAA;QACJA,CAAIoB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,CAAE,CAAA,CAAA;QACXA,CAAC,CAAC,EAAE,GAAGpB,CAAAA,CAAAA;QACPA,CAAIoB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,CAAE,CAAA,CAAA;QACXA,CAAC,CAAC,EAAE,GAAGpB,CAAAA,CAAAA;QACPA,CAAIoB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,EAAG,CAAA,CAAA;QACZA,CAAC,CAAC,GAAG,GAAGpB,CAAAA,CAAAA;;QAERA,CAAIoB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,CAAE,CAAA,CAAA;QACXA,CAAC,CAAC,EAAE,GAAGpB,CAAAA,CAAAA;QACPA,CAAIoB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,EAAG,CAAA,CAAA;QACZA,CAAC,CAAC,GAAG,GAAGpB,CAAAA,CAAAA;QACRA,CAAIoB,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACTA,QAAAA,CAAC,CAAC,EAAA,CAAG,GAAGA,CAAC,CAAC,EAAG,CAAA,CAAA;QACbA,CAAC,CAAC,GAAG,GAAGpB,CAAAA,CAAAA;AACR,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA6nB,MAAAA,CAAAA,MAiCC,GAjCDA,SAAAA,MAAAA,GAAAA;;QAEI,IAAMzmB,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,IAAMC,MAAMtlB,CAAC,CAAC,EAAE,EAAEylB,GAAAA,GAAMzlB,CAAC,CAAC,CAAA,CAAE,EAAE4lB,GAAAA,GAAM5lB,CAAC,CAAC,CAAA,CAAE,EAAE89B,GAAM99B,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACpD,QAAA,IAAMulB,MAAMvlB,CAAC,CAAC,EAAE,EAAE0lB,GAAAA,GAAM1lB,CAAC,CAAC,CAAA,CAAE,EAAE6lB,GAAAA,GAAM7lB,CAAC,CAAC,CAAA,CAAE,EAAE+9B,GAAM/9B,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACpD,QAAA,IAAMwlB,MAAMxlB,CAAC,CAAC,EAAE,EAAE2lB,GAAAA,GAAM3lB,CAAC,CAAC,CAAA,CAAE,EAAE8lB,GAAAA,GAAM9lB,CAAC,CAAC,EAAA,CAAG,EAAEg+B,GAAMh+B,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACtD,QAAA,IAAMi+B,MAAMj+B,CAAC,CAAC,GAAG,EAAEk+B,GAAAA,GAAMl+B,CAAC,CAAC,EAAA,CAAG,EAAEm+B,GAAAA,GAAMn+B,CAAC,CAAC,EAAA,CAAG,EAAEo+B,GAAMp+B,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AACxD,QAAA,IAAM6iC,MAAMld,GAAMwY,GAAAA,GAAAA,GAAMJ,GAAMG,GAAAA,GAAAA,GAAMpY,MAAMiY,GAAMG,GAAAA,GAAAA,GAAMrY,GAAMmY,GAAAA,GAAAA,GAAMtY,MAAMyY,GAAMH,GAAAA,GAAAA,GAAMrY,MAAME,GAAMuY,GAAAA,GAAAA,GAAM1Y,MAAMI,GAAMsY,GAAAA,GAAAA,CAAAA;AAClH,QAAA,IAAM0E,MAAM7E,GAAMnY,GAAAA,GAAAA,GAAMiY,GAAMvY,GAAAA,GAAAA,GAAM2Y,MAAMJ,GAAME,GAAAA,GAAAA,GAAMpY,GAAMmY,GAAAA,GAAAA,GAAMzY,MAAM4Y,GAAMH,GAAAA,GAAAA,GAAMxY,MAAMK,GAAMuY,GAAAA,GAAAA,GAAM7Y,MAAMO,GAAMsY,GAAAA,GAAAA,CAAAA;AAClH,QAAA,IAAM2E,MAAMvd,GAAM0Y,GAAAA,GAAAA,GAAMH,GAAME,GAAAA,GAAAA,GAAMtY,MAAMoY,GAAME,GAAAA,GAAAA,GAAMvY,GAAMsY,GAAAA,GAAAA,GAAMzY,MAAM2Y,GAAMF,GAAAA,GAAAA,GAAMxY,MAAME,GAAM0Y,GAAAA,GAAAA,GAAM7Y,MAAMI,GAAMyY,GAAAA,GAAAA,CAAAA;AAClH,QAAA,IAAM4E,MAAM/E,GAAMtY,GAAAA,GAAAA,GAAME,GAAML,GAAAA,GAAAA,GAAM0Y,MAAMrY,GAAMoY,GAAAA,GAAAA,GAAMvY,GAAMI,GAAAA,GAAAA,GAAMP,MAAM2Y,GAAMpY,GAAAA,GAAAA,GAAMN,MAAME,GAAMyY,GAAAA,GAAAA,GAAM5Y,MAAMI,GAAMwY,GAAAA,GAAAA,CAAAA;AAClH,QAAA,IAAM8E,MAAM3d,GAAMud,GAAAA,GAAAA,GAAMpd,MAAMqd,GAAMld,GAAAA,GAAAA,GAAMmd,MAAMjF,GAAMkF,GAAAA,GAAAA,CAAAA;AACtD,QAAA,IAAIC,QAAQ,CAAG,EAAA;AACX,YAAA,OAAO,IAAI,CAAC7/B,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjE,SAAA;AACA,QAAA,IAAM8/B,SAAS,CAAID,GAAAA,GAAAA,CAAAA;QACnBjjC,CAAC,CAAC,CAAE,CAAA,GAAG6iC,GAAMK,GAAAA,MAAAA,CAAAA;QACbljC,CAAC,CAAC,EAAE,GAAIk+B,CAAAA,GAAMpY,GAAAA,GAAAA,GAAMgY,GAAMnY,GAAAA,GAAAA,GAAMwY,GAAML,GAAAA,GAAAA,GAAMI,MAAMtY,GAAMoY,GAAAA,GAAAA,GAAMvY,GAAM0Y,GAAAA,GAAAA,GAAMH,GAAMrY,GAAAA,GAAAA,GAAMC,MAAMwY,GAAM3Y,GAAAA,GAAAA,GAAMK,GAAMsY,GAAAA,GAAE,IAAK8E,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,EAAE,GAAI0lB,CAAAA,GAAMyY,GAAAA,GAAAA,GAAML,GAAMI,GAAAA,GAAAA,GAAMrY,GAAMiY,GAAAA,GAAAA,GAAMI,MAAMtY,GAAMmY,GAAAA,GAAAA,GAAMtY,GAAM0Y,GAAAA,GAAAA,GAAMJ,GAAMrY,GAAAA,GAAAA,GAAME,MAAMwY,GAAM3Y,GAAAA,GAAAA,GAAMI,GAAMuY,GAAAA,GAAE,IAAK8E,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,EAAE,GAAI2lB,CAAAA,GAAME,GAAAA,GAAAA,GAAMiY,GAAMpY,GAAAA,GAAAA,GAAMI,GAAMgY,GAAAA,GAAAA,GAAMnY,MAAMC,GAAMmY,GAAAA,GAAAA,GAAMtY,GAAMK,GAAAA,GAAAA,GAAMiY,GAAMrY,GAAAA,GAAAA,GAAME,MAAMoY,GAAMvY,GAAAA,GAAAA,GAAMI,GAAMmY,GAAAA,GAAE,IAAKkF,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,CAAE,CAAA,GAAG8iC,GAAMI,GAAAA,MAAAA,CAAAA;QACbljC,CAAC,CAAC,EAAE,GAAIwlB,CAAAA,GAAM2Y,GAAAA,GAAAA,GAAML,GAAMG,GAAAA,GAAAA,GAAMnY,GAAMgY,GAAAA,GAAAA,GAAMG,MAAMrY,GAAMoY,GAAAA,GAAAA,GAAM1Y,GAAM6Y,GAAAA,GAAAA,GAAMH,GAAMxY,GAAAA,GAAAA,GAAMI,MAAMwY,GAAM9Y,GAAAA,GAAAA,GAAMQ,GAAMsY,GAAAA,GAAE,IAAK8E,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,EAAE,GAAIi+B,CAAAA,GAAMpY,GAAAA,GAAAA,GAAMiY,GAAMvY,GAAAA,GAAAA,GAAM4Y,GAAML,GAAAA,GAAAA,GAAMG,MAAMrY,GAAMmY,GAAAA,GAAAA,GAAMzY,GAAM6Y,GAAAA,GAAAA,GAAMJ,GAAMxY,GAAAA,GAAAA,GAAMK,MAAMwY,GAAM9Y,GAAAA,GAAAA,GAAMO,GAAMuY,GAAAA,GAAE,IAAK8E,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,EAAE,GAAIulB,CAAAA,GAAMO,GAAAA,GAAAA,GAAMgY,GAAMtY,GAAAA,GAAAA,GAAMK,GAAMiY,GAAAA,GAAAA,GAAMtY,MAAMI,GAAMmY,GAAAA,GAAAA,GAAMzY,GAAMQ,GAAAA,GAAAA,GAAMiY,GAAMxY,GAAAA,GAAAA,GAAMK,MAAMoY,GAAM1Y,GAAAA,GAAAA,GAAMO,GAAMmY,GAAAA,GAAE,IAAKkF,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,CAAE,CAAA,GAAG+iC,GAAMG,GAAAA,MAAAA,CAAAA;QACbljC,CAAC,CAAC,EAAE,GAAIi+B,CAAAA,GAAMtY,GAAAA,GAAAA,GAAMmY,GAAMtY,GAAAA,GAAAA,GAAM0Y,GAAMJ,GAAAA,GAAAA,GAAMG,MAAMxY,GAAMuY,GAAAA,GAAAA,GAAM1Y,GAAM4Y,GAAAA,GAAAA,GAAMF,GAAMxY,GAAAA,GAAAA,GAAMC,MAAM2Y,GAAM9Y,GAAAA,GAAAA,GAAMK,GAAMyY,GAAAA,GAAE,IAAK8E,MAAAA,CAAAA;QACrHljC,CAAC,CAAC,GAAG,GAAIulB,CAAAA,GAAM2Y,GAAAA,GAAAA,GAAMJ,GAAMG,GAAAA,GAAAA,GAAMvY,GAAMoY,GAAAA,GAAAA,GAAMG,MAAMxY,GAAMsY,GAAAA,GAAAA,GAAMzY,GAAM4Y,GAAAA,GAAAA,GAAMH,GAAMxY,GAAAA,GAAAA,GAAME,MAAM2Y,GAAM9Y,GAAAA,GAAAA,GAAMI,GAAM0Y,GAAAA,GAAE,IAAK8E,MAAAA,CAAAA;QACtHljC,CAAC,CAAC,GAAG,GAAIwlB,CAAAA,GAAME,GAAAA,GAAAA,GAAMoY,GAAMvY,GAAAA,GAAAA,GAAMI,GAAMmY,GAAAA,GAAAA,GAAMtY,MAAMC,GAAMsY,GAAAA,GAAAA,GAAMzY,GAAMK,GAAAA,GAAAA,GAAMoY,GAAMxY,GAAAA,GAAAA,GAAME,MAAMuY,GAAM1Y,GAAAA,GAAAA,GAAMI,GAAMsY,GAAAA,GAAE,IAAKkF,MAAAA,CAAAA;QACtHljC,CAAC,CAAC,EAAG,CAAA,GAAGgjC,GAAME,GAAAA,MAAAA,CAAAA;QACdljC,CAAC,CAAC,GAAG,GAAIwlB,CAAAA,GAAM0Y,GAAAA,GAAAA,GAAMtY,GAAMqY,GAAAA,GAAAA,GAAMtY,GAAMC,GAAAA,GAAAA,GAAMqY,MAAMxY,GAAMK,GAAAA,GAAAA,GAAMR,GAAM4Y,GAAAA,GAAAA,GAAMpY,GAAMN,GAAAA,GAAAA,GAAMC,MAAM0Y,GAAM7Y,GAAAA,GAAAA,GAAMK,GAAMwY,GAAAA,GAAE,IAAK+E,MAAAA,CAAAA;QACtHljC,CAAC,CAAC,GAAG,GAAIi+B,CAAAA,GAAMvY,GAAAA,GAAAA,GAAME,GAAML,GAAAA,GAAAA,GAAM2Y,GAAMtY,GAAAA,GAAAA,GAAMqY,MAAMxY,GAAMI,GAAAA,GAAAA,GAAMP,GAAM4Y,GAAAA,GAAAA,GAAMrY,GAAMN,GAAAA,GAAAA,GAAME,MAAM0Y,GAAM7Y,GAAAA,GAAAA,GAAMI,GAAMyY,GAAAA,GAAE,IAAK+E,MAAAA,CAAAA;QACtHljC,CAAC,CAAC,GAAG,GAAIulB,CAAAA,GAAMI,GAAAA,GAAAA,GAAMC,GAAMJ,GAAAA,GAAAA,GAAME,GAAME,GAAAA,GAAAA,GAAMJ,MAAMC,GAAMI,GAAAA,GAAAA,GAAMP,GAAMK,GAAAA,GAAAA,GAAME,GAAMN,GAAAA,GAAAA,GAAME,MAAMK,GAAMR,GAAAA,GAAAA,GAAMI,GAAMI,GAAAA,GAAE,IAAKod,MAAAA,CAAAA;AACtH,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAC,MAAAA,CAAAA,YAMC,GANDA,SAAAA,aAAa3D,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAA;QAC5B,IAAMta,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxBma,QAAAA,KAAAA,CAAMp8B,GAAG,CAACgiB,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAC7Bqa,QAAAA,KAAAA,CAAMr8B,GAAG,CAACgiB,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAC7Bsa,QAAAA,KAAAA,CAAMt8B,GAAG,CAACgiB,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAG,CAAA,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;;QAQA8D,MAAAA,CAAAA,OAmCC,GAnCDA,SAAAA,OAAAA,CAAQka,WAAW,EAAEpf,QAAQ,EAAE5d,KAAK,EAAEi9B,MAAqB,EAAA;QAArBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAASr7B,GAAAA,OAAAA,CAAQD,IAAI,CAAA;QACvD,IAAMqd,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;QACxB,IAAQphB,CAAAA,GAAe+f,QAAf/f,CAAAA,CAAAA,EAAGjF,CAAYglB,GAAAA,QAAAA,CAAZhlB,GAAGiJ,CAAS+b,GAAAA,QAAAA,CAAT/b,CAAG+B,EAAAA,CAAAA,GAAMga,QAANha,CAAAA,CAAAA,CAAAA;QACjB,IAAM2c,CAAAA,GAAI,CAAC0c,MAAAA,CAAOp/B,CAAC,CAAA;QACnB,IAAMqF,CAAAA,GAAI,CAAC+5B,MAAAA,CAAOrkC,CAAC,CAAA;QACnB,IAAMQ,CAAAA,GAAI,CAAC6jC,MAAAA,CAAOp7B,CAAC,CAAA;AACnB,QAAA,IAAMq7B,KAAKr/B,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMs/B,KAAKvkC,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMwkC,KAAKv7B,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMw7B,KAAKx/B,CAAIq/B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMI,KAAKz/B,CAAIs/B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMI,KAAK1/B,CAAIu/B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMI,KAAK5kC,CAAIukC,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMM,KAAK7kC,CAAIwkC,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMM,KAAK77B,CAAIu7B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMO,KAAK/5B,CAAIs5B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMU,KAAKh6B,CAAIu5B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMU,KAAKj6B,CAAIw5B,GAAAA,EAAAA,CAAAA;QACf,IAAWU,EAAqB99B,GAAAA,KAAAA,CAAxBnC,CAAOjF,EAAGmlC,KAAc/9B,KAAjBpH,CAAAA,CAAAA,EAAOiJ,EAAGm8B,GAAOh+B,KAAV6B,CAAAA,CAAAA,CAAAA;QACtBmd,EAAE,CAAC,CAAE,CAAA,GAAG,CAAC,KAAKwe,EAAAA,GAAKE,EAAC,CAAC,IAAKI,EAAAA,CAAAA;AAC1B9e,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAACse,EAAAA,GAAKO,EAAC,IAAKC,EAAAA,CAAAA;AACpB9e,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAACue,EAAAA,GAAKK,EAAC,IAAKE,EAAAA,CAAAA;QACpB9e,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;AACRA,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAACse,EAAAA,GAAKO,EAAC,IAAKE,EAAAA,CAAAA;QACpB/e,EAAE,CAAC,CAAE,CAAA,GAAG,CAAC,KAAKqe,EAAAA,GAAKK,EAAC,CAAC,IAAKK,EAAAA,CAAAA;AAC1B/e,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAACye,EAAAA,GAAKE,EAAC,IAAKI,EAAAA,CAAAA;QACpB/e,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;AACRA,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAACue,EAAAA,GAAKK,EAAC,IAAKI,EAAAA,CAAAA;AACpBhf,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAACye,EAAAA,GAAKE,EAAC,IAAKK,EAAAA,CAAAA;QACpBhf,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC,KAAKqe,EAAAA,GAAKG,EAAC,CAAC,IAAKQ,EAAAA,CAAAA;QAC3Bhf,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACTA,EAAE,CAAC,GAAG,GAAGuB,CAAAA,GAAIvB,EAAE,CAAC,CAAA,CAAE,GAAG9b,CAAI8b,GAAAA,EAAE,CAAC,CAAE,CAAA,GAAG5lB,IAAI4lB,EAAE,CAAC,EAAE,GAAGuB,CAAAA,GAAIyc,YAAYn/B,CAAC,CAAA;QAC9DmhB,EAAE,CAAC,GAAG,GAAGuB,CAAAA,GAAIvB,EAAE,CAAC,CAAA,CAAE,GAAG9b,CAAI8b,GAAAA,EAAE,CAAC,CAAE,CAAA,GAAG5lB,IAAI4lB,EAAE,CAAC,EAAE,GAAG9b,CAAAA,GAAI85B,YAAYpkC,CAAC,CAAA;QAC9DomB,EAAE,CAAC,GAAG,GAAGuB,CAAAA,GAAIvB,EAAE,CAAC,CAAA,CAAE,GAAG9b,CAAI8b,GAAAA,EAAE,CAAC,CAAE,CAAA,GAAG5lB,IAAI4lB,EAAE,CAAC,GAAG,GAAG5lB,CAAAA,GAAI4jC,YAAYn7B,CAAC,CAAA;AAC/D,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAo8B,MAAAA,CAAAA,SAkCC,GAlCDA,SAAAA,UAAUjB,WAAW,EAAEpf,QAAQ,EAAE5d,KAAK,EAAA;QAClC,IAAM3G,CAAAA,GAAIo+B,OAnmBLA,CAmmBa5Y,QAAQ,CAAA;QAC1B,IAAMG,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxB,QAAA,IAAI6e,KAAKzkC,CAAE2D,CAAAA,GAAG,CAACgiB,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEvnB,MAAM,EAAA,CAAA;AAC1C,QAAA,IAAMsmC,KAAK1kC,CAAE2D,CAAAA,GAAG,CAACgiB,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEvnB,MAAM,EAAA,CAAA;AAC5C,QAAA,IAAMumC,KAAK3kC,CAAE2D,CAAAA,GAAG,CAACgiB,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAA,CAAG,EAAEvnB,MAAM,EAAA,CAAA;;QAE7C,IAAMolC,GAAAA,GAAM,IAAI,CAACN,WAAW,EAAA,CAAA;AAC5B,QAAA,IAAIM,MAAM,CAAG,EAAA;AACTiB,YAAAA,EAAAA,GAAK,CAACA,EAAAA,CAAAA;AACV,SAAA;AACAd,QAAAA,WAAAA,CAAYn/B,CAAC,GAAGmhB,EAAE,CAAC,EAAG,CAAA,CAAA;AACtBge,QAAAA,WAAAA,CAAYpkC,CAAC,GAAGomB,EAAE,CAAC,EAAG,CAAA,CAAA;AACtBge,QAAAA,WAAAA,CAAYn7B,CAAC,GAAGmd,EAAE,CAAC,EAAG,CAAA,CAAA;;QAEtB,IAAM9b,CAAAA,GAAIu0B,OAjnBLA,CAinBayG,QAAQ,CAAA;QAC1Bh7B,CAAEhE,CAAAA,QAAQ,CAAC,IAAI,CAAA,CAAA;AACf,QAAA,IAAMi/B,QAAQ,CAAIL,GAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAMM,QAAQ,CAAIL,GAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAMM,QAAQ,CAAIL,GAAAA,EAAAA,CAAAA;QAClB96B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAIkf,KAAAA,CAAAA;QACjBj7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAIkf,KAAAA,CAAAA;QACjBj7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAIkf,KAAAA,CAAAA;QACjBj7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAImf,KAAAA,CAAAA;QACjBl7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAImf,KAAAA,CAAAA;QACjBl7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAImf,KAAAA,CAAAA;QACjBl7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAIof,KAAAA,CAAAA;QACjBn7B,CAAE+b,CAAAA,QAAQ,CAAC,CAAA,CAAE,IAAIof,KAAAA,CAAAA;QACjBn7B,CAAE+b,CAAAA,QAAQ,CAAC,EAAA,CAAG,IAAIof,KAAAA,CAAAA;AAClBzgB,QAAAA,QAAAA,CAASmB,qBAAqB,CAAC7b,CAAAA,CAAAA,CAAAA;AAC/BlD,QAAAA,KAAAA,CAAMnC,CAAC,GAAGigC,EAAAA,CAAAA;AACV99B,QAAAA,KAAAA,CAAMpH,CAAC,GAAGmlC,EAAAA,CAAAA;AACV/9B,QAAAA,KAAAA,CAAM6B,CAAC,GAAGm8B,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAM,IAAAA,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,cAAAA,CAAetB,WAAW,EAAA;QACtB,IAAMhe,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxB,QAAA,OAAO+d,WAAYhgC,CAAAA,GAAG,CAACgiB,EAAE,CAAC,EAAA,CAAG,EAAEA,EAAE,CAAC,EAAA,CAAG,EAAEA,EAAE,CAAC,EAAG,CAAA,CAAA,CAAA;AACjD,KAAA,CAAA;AACAuf,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAASv+B,KAAK,EAAA;QACV,IAAMgf,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;QACxB,OAAOjf,KAAAA,CAAMhD,GAAG,CAACR,IAAAA,CAAKgiC,KAAK,CAACxf,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEA,EAAE,CAAC,EAAE,CAAGxiB,EAAAA,IAAAA,CAAKgiC,KAAK,CAACxf,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAA,CAAE,GAAGxiB,IAAKgiC,CAAAA,KAAK,CAACxf,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAG,CAAA,CAAA,CAAA,CAAA;AACtH,KAAA,CAAA;AACA;;;QAIAyf,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,GAAAA;AACI,QAAA,IAAMzB,cAAc,IAAIp7B,OAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAMgc,WAAW,IAAIS,UAAAA,EAAAA,CAAAA;AACrB,QAAA,IAAMre,QAAQ,IAAI4B,OAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAI,CAACq8B,SAAS,CAACjB,WAAAA,EAAapf,QAAU5d,EAAAA,KAAAA,CAAAA,CAAAA;QACtC,OAAO;YAAEg9B,WAAAA,EAAAA,WAAAA;YAAapf,QAAAA,EAAAA,QAAAA;YAAU5d,KAAAA,EAAAA,KAAAA;AAAM,SAAA,CAAA;AAC1C,KAAA,CAAA;AACA;;;;;;;;;AASC,QACD0+B,MAAAA,CAAAA,YA+BC,GA/BDA,SAAAA,aAAa7nC,IAAI,EAAEC,KAAK,EAAE6nC,GAAG,EAAEC,MAAM,EAAEC,IAAI,EAAEC,GAAG,EAAA;AAC5C,QAAA,IAAIrhC,CAAI,GAAA,GAAA,IAAO3G,KAAAA,GAAQD,IAAG,CAAA,CAAA;AAC1B,QAAA,IAAI6G,CAAI,GAAA,GAAA,IAAOihC,GAAAA,GAAMC,MAAK,CAAA,CAAA;AAC1B,QAAA,IAAIpnC,CAAI,GAAA,GAAA,IAAOsnC,GAAAA,GAAMD,IAAG,CAAA,CAAA;AACxB,QAAA,IAAM7F,EAAK,GAAA,EAAEliC,KAAAA,GAAQD,IAAG,CAAK4G,GAAAA,CAAAA,CAAAA;AAC7B,QAAA,IAAMw7B,EAAK,GAAA,EAAE0F,GAAAA,GAAMC,MAAK,CAAKlhC,GAAAA,CAAAA,CAAAA;AAC7B,QAAA,IAAMqhC,EAAK,GAAA,EAAED,GAAAA,GAAMD,IAAG,CAAKrnC,GAAAA,CAAAA,CAAAA;QAC3BiG,CAAK,IAAA,GAAA,CAAA;QACLC,CAAK,IAAA,GAAA,CAAA;AACLlG,QAAAA,CAAAA,IAAK,CAAC,GAAA,CAAA;QACN,IAAMwnB,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;QACxBD,EAAE,CAAC,EAAE,GAAGvhB,CAAAA,CAAAA;QACRuhB,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;;QAERA,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAGthB,CAAAA,CAAAA;QACRshB,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;;QAERA,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,GAAA,CAAA;QACRA,EAAE,CAAC,GAAG,GAAGxnB,CAAAA,CAAAA;QACTwnB,EAAE,CAAC,GAAG,GAAG,GAAA,CAAA;;QAETA,EAAE,CAAC,GAAG,GAAGga,EAAAA,CAAAA;QACTha,EAAE,CAAC,GAAG,GAAGia,EAAAA,CAAAA;QACTja,EAAE,CAAC,GAAG,GAAG+f,EAAAA,CAAAA;QACT/f,EAAE,CAAC,GAAG,GAAG,GAAA,CAAA;AACT,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;;;AAQC,QACDggB,MAAAA,CAAAA,WA4BC,GA5BDA,SAAAA,WAAYC,CAAAA,GAAG,EAAEC,MAAM,EAAEL,IAAI,EAAEC,GAAG,EAAEK,OAAO,EAAA;AACvC,QAAA,IAAMxmC,CAAI,GAAA,GAAA,GAAM6D,IAAK4iC,CAAAA,GAAG,CAACH,GAAM,GAAA,GAAA,CAAA,CAAA;AAC/B,QAAA,IAAMI,EAAK,GAAA,CAAA,IAAKR,IAAAA,GAAOC,GAAE,CAAA,CAAA;QACzB,IAAM9f,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxBD,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAGmgB,OAAAA,GAAUxmC,IAAIA,CAAIumC,GAAAA,MAAAA,CAAAA;QAC1BlgB,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;;QAERA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;AACRA,QAAAA,EAAE,CAAC,CAAA,CAAE,GAAGmgB,OAAAA,GAAUxmC,IAAIumC,MAASvmC,GAAAA,CAAAA,CAAAA;QAC/BqmB,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;;QAERA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;AACRA,QAAAA,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC8f,GAAAA,GAAMD,IAAG,IAAKQ,EAAAA,CAAAA;QACxBrgB,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC,CAAA,CAAA;;QAEVA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACTA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;AACTA,QAAAA,EAAE,CAAC,EAAA,CAAG,GAAG,CAAA,GAAI8f,MAAMD,IAAOQ,GAAAA,EAAAA,CAAAA;QAC1BrgB,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACT,IAAI8f,GAAAA,KAAQ,IAAQA,IAAAA,GAAAA,KAAQnhC,QAAU,EAAA;YAClCqhB,EAAE,CAAC,EAAG,CAAA,GAAG,CAAC,CAAA,CAAA;AACVA,YAAAA,EAAE,CAAC,EAAA,CAAG,GAAG,CAAC,CAAI6f,GAAAA,IAAAA,CAAAA;AAClB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDt7B,OAAAA,YASC,GATDA,SAAAA,YAAalK,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;AACf,QAAA,IAAQhF,IAAYxE,CAAZwE,CAAAA,CAAAA,EAAGjF,IAASS,CAATT,CAAAA,CAAAA,EAAGiJ,IAAMxI,CAANwI,CAAAA,CAAAA,CAAAA;QACd,IAAMjI,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvB,IAAMsD,GAAAA,GAAM1f,cAAAA,GAAOxJ,GAAAA,CAAAA,CAAAA;AACnBkpB,QAAAA,GAAAA,CAAI1kB,CAAC,GAAGjE,CAAC,CAAC,CAAE,CAAA,GAAGiE,IAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,CAAA,CAAE,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AAC9C2oB,QAAAA,GAAAA,CAAI3pB,CAAC,GAAGgB,CAAC,CAAC,CAAE,CAAA,GAAGiE,IAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,CAAA,CAAE,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AAC9C2oB,QAAAA,GAAAA,CAAI1gB,CAAC,GAAGjI,CAAC,CAAC,CAAE,CAAA,GAAGiE,IAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAA,CAAG,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AAC/C,QAAA,IAAMgK,IAAIhK,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,CAAA,CAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAA,CAAG,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;QACjD,OAAO2oB,GAAAA,CAAI1iB,QAAQ,CAAC,CAAI+D,GAAAA,CAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AACA;;;;;AAKC,QACDT,OAAAA,cAQC,GARDA,SAAAA,cAAe9J,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;AACjB,QAAA,IAAQhF,IAAYxE,CAAZwE,CAAAA,CAAAA,EAAGjF,IAASS,CAATT,CAAAA,CAAAA,EAAGiJ,IAAMxI,CAANwI,CAAAA,CAAAA,CAAAA;QACd,IAAMjI,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvB,IAAMsD,GAAAA,GAAM1f,cAAAA,GAAOxJ,GAAAA,CAAAA,CAAAA;AACnBkpB,QAAAA,GAAAA,CAAI1kB,CAAC,GAAGjE,CAAC,CAAC,CAAE,CAAA,GAAGiE,IAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,CAAA,CAAE,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AAC9C2oB,QAAAA,GAAAA,CAAI3pB,CAAC,GAAGgB,CAAC,CAAC,CAAE,CAAA,GAAGiE,IAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,CAAA,CAAE,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;AAC9C2oB,QAAAA,GAAAA,CAAI1gB,CAAC,GAAGjI,CAAC,CAAC,CAAE,CAAA,GAAGiE,IAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAA,CAAG,GAAGiI,CAAIjI,GAAAA,CAAC,CAAC,EAAG,CAAA,CAAA;QAC/C,OAAO2oB,GAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;;AAKC,QACDlf,OAAAA,eAQC,GARDA,SAAAA,eAAgBhK,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;AAClB,QAAA,IAAQhF,IAAYxE,CAAZwE,CAAAA,CAAAA,EAAGjF,IAASS,CAATT,CAAAA,CAAAA,EAAGiJ,IAAMxI,CAANwI,CAAAA,CAAAA,CAAAA;QACd,IAAMjI,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvB,IAAMsD,GAAAA,GAAM1f,cAAAA,GAAOxJ,GAAAA,CAAAA,CAAAA;AACnBkpB,QAAAA,GAAAA,CAAI1kB,CAAC,GAAGjE,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAE,GAAGiI,CAAAA,CAAAA;AACrC0gB,QAAAA,GAAAA,CAAI3pB,CAAC,GAAGgB,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAE,GAAGiI,CAAAA,CAAAA;AACrC0gB,QAAAA,GAAAA,CAAI1gB,CAAC,GAAGjI,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,GAAG,GAAGiI,CAAAA,CAAAA;AACtC,QAAA,OAAO0gB,IAAIhiB,SAAS,EAAA,CAAA;AACxB,KAAA,CAAA;AACA;;;;;AAKC,QACDuD,OAAAA,gBASC,GATDA,SAAAA,gBAAiBzK,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;QACnB,IAAQhF,CAAAA,GAAexE,CAAfwE,CAAAA,CAAAA,EAAGjF,CAAYS,GAAAA,CAAAA,CAAZT,GAAGiJ,CAASxI,GAAAA,CAAAA,CAATwI,CAAG+B,EAAAA,CAAAA,GAAMvK,CAANuK,CAAAA,CAAAA,CAAAA;QACjB,IAAMhK,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvB,IAAMsD,GAAAA,GAAM1f,cAAAA,GAAOxJ,GAAAA,CAAAA,CAAAA;QACnBkpB,GAAI1kB,CAAAA,CAAC,GAAGjE,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,CAAA,CAAE,GAAGhB,CAAIgB,GAAAA,CAAC,CAAC,CAAE,CAAA,GAAGiI,IAAIjI,CAAC,CAAC,GAAG,GAAGgK,CAAAA,CAAAA;QACjD2e,GAAI3pB,CAAAA,CAAC,GAAGgB,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,CAAA,CAAE,GAAGhB,CAAIgB,GAAAA,CAAC,CAAC,CAAE,CAAA,GAAGiI,IAAIjI,CAAC,CAAC,GAAG,GAAGgK,CAAAA,CAAAA;QACjD2e,GAAI1gB,CAAAA,CAAC,GAAGjI,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,CAAA,CAAE,GAAGhB,CAAIgB,GAAAA,CAAC,CAAC,EAAG,CAAA,GAAGiI,IAAIjI,CAAC,CAAC,GAAG,GAAGgK,CAAAA,CAAAA;QAClD2e,GAAI3e,CAAAA,CAAC,GAAGhK,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,CAAA,CAAE,GAAGhB,CAAIgB,GAAAA,CAAC,CAAC,EAAG,CAAA,GAAGiI,IAAIjI,CAAC,CAAC,GAAG,GAAGgK,CAAAA,CAAAA;QAClD,OAAO2e,GAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDnhB,MAAAA,CAAAA,MASC,GATDA,SAAAA,OAAOk+B,MAAM,EAAA;QACT,IAAMtgB,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;QACxB,IAAMuZ,EAAAA,GAAK8G,OAAOrgB,QAAQ,CAAA;AAC1B,QAAA,IAAK,IAAIjnB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAIA,CAAK,EAAA,CAAA;YACzB,IAAI,CAACwF,QAAQwhB,EAAE,CAAChnB,EAAE,EAAEwgC,EAAE,CAACxgC,CAAAA,CAAE,CAAG,EAAA;gBACxB,OAAO,KAAA,CAAA;AACX,aAAA;AACJ,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;AACA;;;QAIAsJ,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAW,EAAA,CAAA,MAAA,CAAA,IAAI,CAAC2d,QAAQ,CAAA,CAAA;AAC5B,KAAA,CAAA;AACA1d,IAAAA,MAAAA,CAAAA,IAkBC,GAlBDA,SAAAA,IAAKtC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;QACjB,IAAMmkB,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxBhgB,QAAAA,KAAK,CAACpE,MAAAA,CAAO,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACrB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGmkB,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,EAAA,CAAG,GAAGmkB,EAAE,CAAC,EAAG,CAAA,CAAA;AAC3B/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,EAAA,CAAG,GAAGmkB,EAAE,CAAC,EAAG,CAAA,CAAA;AAC3B/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,EAAA,CAAG,GAAGmkB,EAAE,CAAC,EAAG,CAAA,CAAA;AAC3B/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,EAAA,CAAG,GAAGmkB,EAAE,CAAC,EAAG,CAAA,CAAA;AAC3B/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,EAAA,CAAG,GAAGmkB,EAAE,CAAC,EAAG,CAAA,CAAA;AAC3B/f,QAAAA,KAAK,CAACpE,MAAS,GAAA,EAAA,CAAG,GAAGmkB,EAAE,CAAC,EAAG,CAAA,CAAA;AAC/B,KAAA,CAAA;AACA;;;AAGC,QACD,OAn1BSyY,CAm1BF8H,YAEN,GAFD,SAAOA,YAAAA,GAAAA;AACH,QAAA,OAAO,IAp1BF9H,OAo1Bc,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACpE,KAAA,CAAA;AACA;;;;;;QAt1BSA,OA61BF+H,CAAAA,UAEN,GAFD,SAAOA,WAAW9F,GAAG,EAAEpiC,MAAM,EAAEqiC,EAAE,EAAA;AAC7B,QAAA,OAAO,IA91BFlC,OAAAA,EAAAA,CA81BgBgC,MAAM,CAACC,KAAKpiC,MAAQqiC,EAAAA,EAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AACA;;;;;;;;AAQC,QACD,OAz2BSlC,CAy2BFgI,eAEN,GAFD,SAAOA,eAAgBR,CAAAA,GAAG,EAAEC,MAAM,EAAEL,IAAI,EAAEC,GAAG,EAAEK,OAAO,EAAA;AAClD,QAAA,OAAO,IA12BF1H,OA02BgBuH,EAAAA,CAAAA,WAAW,CAACC,GAAKC,EAAAA,MAAAA,EAAQL,MAAMC,GAAKK,EAAAA,OAAAA,CAAAA,CAAAA;AAC7D,KAAA,CAAA;AACA;;;;;;;AAOC,QACD,OAp3BS1H,CAo3BFiI,iBAEN,GAFD,SAAOA,iBAAAA,CAAkBvH,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAA;AACnC,QAAA,OAAO,IAr3BFb,OAq3BgBS,EAAAA,CAAAA,oBAAoB,CAACC,EAAAA,EAAIC,IAAIC,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AAC1D,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOqH,CAAAA,WAEN,GAFD,SAAOA,YAAYz8B,CAAC,EAAA;QAChB,OAAO,IA73BFu0B,OA63BgBc,EAAAA,CAAAA,cAAc,CAACr1B,CAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AACA;;;;;QA/3BSu0B,QAq4BFh2B,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IAt4BF48B,OAAAA,EAAAA,CAs4BgBz4B,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AACA;;;;;;QAx4BS48B,OA+4BFmI,CAAAA,SAEN,GAFD,SAAOA,UAAU/hC,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;AACpB,QAAA,OAAO,IAh5BF41B,OAAAA,EAAAA,CAg5BgBgB,YAAY,CAAC56B,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAC5C,KAAA,CAAA;AACA;;;;;;QAl5BS41B,OAy5BFoI,CAAAA,eAEN,GAFD,SAAOA,gBAAgBhiC,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;AAC1B,QAAA,OAAO,IA15BF41B,OAAAA,EAAAA,CA05BgBiB,kBAAkB,CAAC76B,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOi+B,CAAAA,aAEN,GAFD,SAAOA,cAAclH,KAAK,EAAA;QACtB,OAAO,IAl6BFnB,OAk6BgBkB,EAAAA,CAAAA,gBAAgB,CAACC,KAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOmH,CAAAA,aAEN,GAFD,SAAOA,cAAcnH,KAAK,EAAA;QACtB,OAAO,IA16BFnB,OA06BgBoB,EAAAA,CAAAA,gBAAgB,CAACD,KAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOoH,CAAAA,aAEN,GAFD,SAAOA,cAAcpH,KAAK,EAAA;QACtB,OAAO,IAl7BFnB,OAk7BgBqB,EAAAA,CAAAA,gBAAgB,CAACF,KAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA;;;;;QAp7BSnB,QA07BFwI,gBAEN,GAFD,SAAOA,gBAAiBxhB,CAAAA,IAAI,EAAEC,KAAK,EAAA;AAC/B,QAAA,OAAO,IA37BF+Y,OAAAA,EAAAA,CA27BgBsB,mBAAmB,CAACta,IAAMC,EAAAA,KAAAA,CAAAA,CAAAA;AACnD,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOqE,CAAAA,SAEN,GAFD,SAAOA,UAAUngB,KAAK,EAAA;QAClB,OAAO,IAn8BF60B,OAm8BgBnZ,EAAAA,CAAAA,YAAY,CAAC1b,KAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOs9B,CAAAA,cAEN,GAFD,SAAOA,eAAengB,IAAI,EAAA;QACtB,OAAO,IA38BF0X,OA28BgB9U,EAAAA,CAAAA,iBAAiB,CAAC5C,IAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AACA;;;;;;QA78BS0X,OAo9BF0I,CAAAA,SAEN,GAFD,SAAOA,UAAUtiC,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAA;AACpB,QAAA,OAAO,IAr9BF41B,OAAAA,EAAAA,CAq9BgByB,YAAY,CAACr7B,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAC5C,KAAA,CAAA;AACA;;;;;;QAv9BS41B,OA89BF2I,CAAAA,SAEN,GAFD,SAAOA,UAAUhH,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAA;AAChC,QAAA,OAAO,IA/9BF7B,OAAAA,EAAAA,CA+9BgB0B,YAAY,CAACC,OAAOC,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AACpD,KAAA,CAAA;AACA;;;;;;;;;;;;;;;;;;;AAmBC,QACD,OAAO+G,CAAAA,gBAEN,GAFD,SAAOA,iBAAiBnhB,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEyY,GAAG,EAAExY,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEuY,GAAG,EAAEtY,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEqY,GAAG,EAAEL,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEI,GAAG,EAAA;AAClG,QAAA,OAAO,IAt/BFP,OAs/BcvY,CAAAA,GAAAA,EAAKG,GAAKG,EAAAA,GAAAA,EAAKkY,KAAKvY,GAAKG,EAAAA,GAAAA,EAAKG,GAAKkY,EAAAA,GAAAA,EAAKvY,KAAKG,GAAKG,EAAAA,GAAAA,EAAKkY,GAAKC,EAAAA,GAAAA,EAAKC,KAAKC,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAClG,KAAA,CAAA;AAv/BSP,IAAAA,OAAAA,OAAAA,CAAAA;AAw/BZ,CAAA,EAAA,CAAA;AAx/BYA,OAAAA,CACF6I,WAAW,IAAI7I,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AADlEA,OAAAA,CAEF91B,OAAO,IAAI81B,OAAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAF9DA,OAAAA,CAGF5Y,WAAW,IAAIjd,OAAAA,EAAAA,CAAAA;AAHb61B,OAAAA,CAIFqC,WAAW,IAAIl4B,OAAAA,EAAAA,CAAAA;AAJb61B,OAAAA,CAKFuC,WAAW,IAAIp4B,OAAAA,EAAAA,CAAAA;AALb61B,OAAAA,CAMFyG,WAAW,IAAIzG,OAAAA,EAAAA;;ACR1B;;IAGO,IAAI8I,UAAW,CAAA;AACrB,CAAA,SAAUA,UAAU,EAAA;AACjBA,IAAAA,UAAU,CAACA,UAAU,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACpCA,IAAAA,UAAU,CAACA,UAAU,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACpCA,IAAAA,UAAU,CAACA,UAAU,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACpCA,IAAAA,UAAU,CAACA,UAAU,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACpCA,IAAAA,UAAU,CAACA,UAAU,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACpCA,IAAAA,UAAU,CAACA,UAAU,CAAC,KAAM,CAAA,GAAG,EAAE,GAAG,KAAA,CAAA;AACxC,CAAA,EAAGA,UAAAA,KAAeA,UAAAA,GAAa,EAAC,CAAA,CAAA,CAAA;AAChC;;AAEC,IACM,IAAA,KAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,KAAAA,CAeG3iC,CAAK,EAAEjF,CAAK,EAAEiJ,CAAK,EAAEmI,KAA2B,EAAA;AAAhDnM,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGiJ,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGmI,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQw2B,KAfhCA,CAesCC,aAAa,CAAA;QACxD,IAAI,CAAC5iC,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACmI,KAAK,GAAGA,KAAAA,CAAAA;;AAnBRw2B,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AAqBT;;;;;;;QAQAxjC,MAAAA,CAAAA,GAMC,GANDA,SAAAA,GAAAA,CAAIa,CAAC,EAAEjF,CAAC,EAAEiJ,CAAC,EAAEmI,KAAkB,EAAA;AAAlBA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;QAC3B,IAAI,CAACnM,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACiJ,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACmI,KAAK,GAAGA,KAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAnL,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAAQmL,KAAkB,EAAA;AAAlBA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;AACtB,QAAA,OAAO,IAAI,CAAChN,GAAG,CAAC,CAAA,EAAG,GAAG,CAAGgN,EAAAA,KAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AACA;;;;;AAKC,QACD02B,OAAAA,sBAsFC,GAtFDA,SAAAA,sBAAuBx9B,CAAAA,CAAC,EAAE8G,KAAkB,EAAA;AAAlBA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;QACxC,IAAMgV,EAAAA,GAAK9b,EAAE+b,QAAQ,CAAA;QACrB,IAAMC,GAAAA,GAAMF,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMG,GAAAA,GAAMH,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMI,GAAAA,GAAMJ,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMK,GAAAA,GAAML,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMM,GAAAA,GAAMN,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMO,GAAAA,GAAMP,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMQ,GAAAA,GAAMR,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMS,GAAAA,GAAMT,EAAE,CAAC,CAAE,CAAA,CAAA;QACjB,IAAMU,GAAAA,GAAMV,EAAE,CAAC,EAAG,CAAA,CAAA;QAClB,OAAQhV,KAAAA;AACJ,YAAA,KAAKu2B,WAAWI,GAAG;gBACf,IAAI,CAAC/nC,CAAC,GAAG4D,IAAAA,CAAKokC,IAAI,CAACtiC,OAAAA,CAAM8gB,GAAK,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AAClC,gBAAA,IAAI5iB,IAAKe,CAAAA,GAAG,CAAC6hB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC3B,oBAAA,IAAI,CAACvhB,CAAC,GAAGrB,KAAK8kB,KAAK,CAAC,CAAC/B,GAAKG,EAAAA,GAAAA,CAAAA,CAAAA;AAC1B,oBAAA,IAAI,CAAC7d,CAAC,GAAGrF,KAAK8kB,KAAK,CAAC,CAACnC,GAAKD,EAAAA,GAAAA,CAAAA,CAAAA;iBAEzB,MAAA;AACD,oBAAA,IAAI,CAACrhB,CAAC,GAAGrB,IAAK8kB,CAAAA,KAAK,CAAC7B,GAAKH,EAAAA,GAAAA,CAAAA,CAAAA;oBACzB,IAAI,CAACzd,CAAC,GAAG,CAAA,CAAA;AACb,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAK0+B,WAAWM,GAAG;gBACf,IAAI,CAAChjC,CAAC,GAAGrB,IAAKokC,CAAAA,IAAI,CAAC,CAACtiC,OAAAA,CAAMihB,GAAK,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACnC,gBAAA,IAAI/iB,IAAKe,CAAAA,GAAG,CAACgiB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC3B,oBAAA,IAAI,CAAC3mB,CAAC,GAAG4D,IAAK8kB,CAAAA,KAAK,CAAClC,GAAKM,EAAAA,GAAAA,CAAAA,CAAAA;AACzB,oBAAA,IAAI,CAAC7d,CAAC,GAAGrF,IAAK8kB,CAAAA,KAAK,CAACjC,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;iBAExB,MAAA;AACD,oBAAA,IAAI,CAAC1mB,CAAC,GAAG4D,KAAK8kB,KAAK,CAAC,CAAC9B,GAAKN,EAAAA,GAAAA,CAAAA,CAAAA;oBAC1B,IAAI,CAACrd,CAAC,GAAG,CAAA,CAAA;AACb,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAK0+B,WAAWO,GAAG;gBACf,IAAI,CAACjjC,CAAC,GAAGrB,IAAAA,CAAKokC,IAAI,CAACtiC,OAAAA,CAAMmhB,GAAK,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AAClC,gBAAA,IAAIjjB,IAAKe,CAAAA,GAAG,CAACkiB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC3B,oBAAA,IAAI,CAAC7mB,CAAC,GAAG4D,KAAK8kB,KAAK,CAAC,CAAC9B,GAAKE,EAAAA,GAAAA,CAAAA,CAAAA;AAC1B,oBAAA,IAAI,CAAC7d,CAAC,GAAGrF,KAAK8kB,KAAK,CAAC,CAACnC,GAAKG,EAAAA,GAAAA,CAAAA,CAAAA;iBAEzB,MAAA;oBACD,IAAI,CAAC1mB,CAAC,GAAG,CAAA,CAAA;AACT,oBAAA,IAAI,CAACiJ,CAAC,GAAGrF,IAAK8kB,CAAAA,KAAK,CAACjC,GAAKH,EAAAA,GAAAA,CAAAA,CAAAA;AAC7B,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAKqhB,WAAWQ,GAAG;gBACf,IAAI,CAACnoC,CAAC,GAAG4D,IAAKokC,CAAAA,IAAI,CAAC,CAACtiC,OAAAA,CAAMkhB,GAAK,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACnC,gBAAA,IAAIhjB,IAAKe,CAAAA,GAAG,CAACiiB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC3B,oBAAA,IAAI,CAAC3hB,CAAC,GAAGrB,IAAK8kB,CAAAA,KAAK,CAAC7B,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AACzB,oBAAA,IAAI,CAAC7d,CAAC,GAAGrF,IAAK8kB,CAAAA,KAAK,CAACjC,GAAKH,EAAAA,GAAAA,CAAAA,CAAAA;iBAExB,MAAA;oBACD,IAAI,CAACrhB,CAAC,GAAG,CAAA,CAAA;AACT,oBAAA,IAAI,CAACgE,CAAC,GAAGrF,KAAK8kB,KAAK,CAAC,CAACnC,GAAKG,EAAAA,GAAAA,CAAAA,CAAAA;AAC9B,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAKihB,WAAWS,GAAG;gBACf,IAAI,CAACn/B,CAAC,GAAGrF,IAAAA,CAAKokC,IAAI,CAACtiC,OAAAA,CAAM+gB,GAAK,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AAClC,gBAAA,IAAI7iB,IAAKe,CAAAA,GAAG,CAAC8hB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC3B,oBAAA,IAAI,CAACxhB,CAAC,GAAGrB,KAAK8kB,KAAK,CAAC,CAAC/B,GAAKD,EAAAA,GAAAA,CAAAA,CAAAA;AAC1B,oBAAA,IAAI,CAAC1mB,CAAC,GAAG4D,KAAK8kB,KAAK,CAAC,CAAC9B,GAAKN,EAAAA,GAAAA,CAAAA,CAAAA;iBAEzB,MAAA;oBACD,IAAI,CAACrhB,CAAC,GAAG,CAAA,CAAA;AACT,oBAAA,IAAI,CAACjF,CAAC,GAAG4D,IAAK8kB,CAAAA,KAAK,CAAClC,GAAKM,EAAAA,GAAAA,CAAAA,CAAAA;AAC7B,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA,KAAK6gB,WAAWU,GAAG;gBACf,IAAI,CAACp/B,CAAC,GAAGrF,IAAKokC,CAAAA,IAAI,CAAC,CAACtiC,OAAAA,CAAM6gB,GAAK,EAAA,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACnC,gBAAA,IAAI3iB,IAAKe,CAAAA,GAAG,CAAC4hB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC3B,oBAAA,IAAI,CAACthB,CAAC,GAAGrB,IAAK8kB,CAAAA,KAAK,CAAC7B,GAAKH,EAAAA,GAAAA,CAAAA,CAAAA;AACzB,oBAAA,IAAI,CAAC1mB,CAAC,GAAG4D,IAAK8kB,CAAAA,KAAK,CAAClC,GAAKF,EAAAA,GAAAA,CAAAA,CAAAA;iBAExB,MAAA;AACD,oBAAA,IAAI,CAACrhB,CAAC,GAAGrB,KAAK8kB,KAAK,CAAC,CAAC/B,GAAKG,EAAAA,GAAAA,CAAAA,CAAAA;oBAC1B,IAAI,CAAC9mB,CAAC,GAAG,CAAA,CAAA;AACb,iBAAA;AACA,gBAAA,MAAA;AACJ,YAAA;gBACI0G,OAAQtJ,CAAAA,KAAK,CAAC,wCAA2CgU,GAAAA,KAAAA,CAAAA,CAAAA;AACjE,SAAA;QACA,IAAI,CAACnM,CAAC,IAAIT,OAAAA,CAAAA;QACV,IAAI,CAACxE,CAAC,IAAIwE,OAAAA,CAAAA;QACV,IAAI,CAACyE,CAAC,IAAIzE,OAAAA,CAAAA;QACV,IAAI,CAAC4M,KAAK,GAAGA,KAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD2Y,OAAAA,iBAIC,GAJDA,SAAAA,iBAAkB5C,CAAAA,IAAI,EAAE/V,KAAkB,EAAA;AAAlBA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;QACtC,IAAMs1B,MAAAA,GAASkB,KA3IVA,CA2IgBtC,QAAQ,CAAA;AAC7BoB,QAAAA,MAAAA,CAAO3c,iBAAiB,CAAC5C,IAAAA,CAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAC2gB,sBAAsB,CAACpB,MAAQt1B,EAAAA,KAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AACA;;;;;AAKC,QACDk3B,OAAAA,cAEC,GAFDA,SAAAA,cAAe7nC,CAAAA,CAAC,EAAE2Q,KAAkB,EAAA;AAAlBA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;AAChC,QAAA,OAAO,IAAI,CAAChN,GAAG,CAAC3D,CAAEwE,CAAAA,CAAC,EAAExE,CAAAA,CAAET,CAAC,EAAES,CAAEwI,CAAAA,CAAC,EAAEmI,KAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AACA;;;;;;QAOAhL,MAAAA,CAAAA,YAMC,GANDA,SAAAA,aAAaC,KAAK,EAAEpE,MAAU,EAAEmP,KAAkB,EAAA;AAA9BnP,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAAGmP,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;AACrC/K,QAAAA,IAAAA,aAAAA,CAAAA;QAAT,IAAI,CAACpB,CAAC,GAAGoB,CAAAA,gBAAAA,KAAK,CAACpE,MAAO,CAAA,KAAA,IAAA,GAAboE,aAAiB,GAAA,CAAA,CAAA;AACjBA,QAAAA,IAAAA,OAAAA,CAAAA;QAAT,IAAI,CAACrG,CAAC,GAAGqG,CAAAA,OAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,OAAqB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAT,IAAI,CAAC4C,CAAC,GAAG5C,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB,GAAA,CAAA,CAAA;AACjBA,QAAAA,IAAAA,QAAAA,CAAAA;QAAb,IAAI,CAAC+K,KAAK,GAAG/K,CAAAA,QAAAA,GAAAA,KAAK,CAACpE,MAAAA,GAAS,CAAE,CAAA,KAAA,IAAA,GAAjBoE,QAAqB+K,GAAAA,KAAAA,CAAAA;AAClC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA5K,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IA3KFohC,KA2KY,CAAA,IAAI,CAAC3iC,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,EAAE,IAAI,CAACmI,KAAK,CAAA,CAAA;AACvD,KAAA,CAAA;AACA;;;;AAIC,QACD9K,MAAAA,CAAAA,QAMC,GANDA,SAAAA,SAAS0D,KAAK,EAAA;AACV,QAAA,IAAI,CAAC/E,CAAC,GAAG+E,KAAAA,CAAM/E,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAGgK,KAAAA,CAAMhK,CAAC,CAAA;AAChB,QAAA,IAAI,CAACiJ,CAAC,GAAGe,KAAAA,CAAMf,CAAC,CAAA;AAChB,QAAA,IAAI,CAACmI,KAAK,GAAGpH,KAAAA,CAAMoH,KAAK,CAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAxK,IAAAA,MAAAA,CAAAA,GASC,GATDA,SAAAA,GAAAA,CAAIoD,KAAK,EAAA;AACL,QAAA,IAAI,IAAI,CAACoH,KAAK,IAAIpH,KAAAA,CAAMoH,KAAK,EAAE;AAC3B1K,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gCAAA,CAAA,CAAA;AACd,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AACA,QAAA,IAAI,CAAC6H,CAAC,IAAI+E,KAAAA,CAAM/E,CAAC,CAAA;AACjB,QAAA,IAAI,CAACjF,CAAC,IAAIgK,KAAAA,CAAMhK,CAAC,CAAA;AACjB,QAAA,IAAI,CAACiJ,CAAC,IAAIe,KAAAA,CAAMf,CAAC,CAAA;AACjB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAs/B,IAAAA,MAAAA,CAAAA,SAUC,GAVDA,SAAAA,SAAUtqC,CAAAA,IAAI,EAAEC,KAAK,EAAA;AACjB,QAAA,IAAID,IAAKmT,CAAAA,KAAK,IAAIlT,KAAAA,CAAMkT,KAAK,EAAE;AAC3B1K,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gCAAA,CAAA,CAAA;AACd,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AACA,QAAA,IAAI,CAAC6H,CAAC,GAAGhH,KAAKgH,CAAC,GAAG/G,MAAM+G,CAAC,CAAA;AACzB,QAAA,IAAI,CAACjF,CAAC,GAAG/B,KAAK+B,CAAC,GAAG9B,MAAM8B,CAAC,CAAA;AACzB,QAAA,IAAI,CAACiJ,CAAC,GAAGhL,KAAKgL,CAAC,GAAG/K,MAAM+K,CAAC,CAAA;AACzB,QAAA,IAAI,CAACmI,KAAK,GAAGnT,IAAAA,CAAKmT,KAAK,CAAA;AACvB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;IACA5J,MAAAA,CAAAA,MAKC,GALDA,SAAAA,MAAAA,GAAAA;AACI,QAAA,IAAI,CAACvC,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACjF,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,IAAI,CAACiJ,CAAC,GAAG,CAAC,IAAI,CAACA,CAAC,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDu/B,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,QAAQC,QAAQ,EAAA;AACZ,QAAA,IAAM7e,aAAa,IAAInE,UAAAA,EAAAA,CAAAA;QACvBmE,UAAWlE,CAAAA,YAAY,CAAC,IAAI,CAAA,CAAA;AAC5B,QAAA,OAAO,IAAI,CAACqE,iBAAiB,CAACH,UAAY6e,EAAAA,QAAAA,CAAAA,CAAAA;AAC9C,KAAA,CAAA;AACA;;;;;AAKC,QACDv+B,OAAAA,aAGC,GAHDA,SAAAA,aAAczJ,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;QAChB,IAAMG,CAAAA,GAAIw9B,KArOLA,CAqOWc,SAAS,CAAA;AACzB,QAAA,OAAOt+B,EAAEsb,YAAY,CAAC,IAAI,CAAExb,CAAAA,aAAa,CAACzJ,CAAGwJ,EAAAA,GAAAA,CAAAA,CAAAA;AACjD,KAAA,CAAA;AACA;;;;AAIC,QACDzB,MAAAA,CAAAA,MAKC,GALDA,SAAAA,OAAOwB,KAAK,EAAA;QACR,OAAOA,KAAAA,CAAM/E,CAAC,KAAK,IAAI,CAACA,CAAC,IAClB+E,KAAMhK,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAClBgK,KAAMf,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,IAClBe,KAAAA,CAAMoH,KAAK,KAAK,IAAI,CAACA,KAAK,CAAA;AACrC,KAAA,CAAA;AACA;;;;AAIC,QACDnG,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAU4e,GAAG,EAAA;AACT,QAAA,OAAOA,GAAIzlB,CAAAA,GAAG,CAAC,IAAI,CAACa,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACiJ,CAAC,CAAA,CAAA;AACzC,KAAA,CAAA;AACA;;;QAIAP,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO;AAAC,YAAA,IAAI,CAACzD,CAAC;AAAE,YAAA,IAAI,CAACjF,CAAC;AAAE,YAAA,IAAI,CAACiJ,CAAC;AAAC,SAAA,CAAA;AACnC,KAAA,CAAA;AACA;;;;AAIC,QACD0c,MAAAA,CAAAA,YA+BC,GA/BDA,SAAAA,aAAawB,IAAI,EAAA;AACb,QAAA,IAA2B,KAAA,GAAA,IAAI,EAAvBliB,CAAAA,GAAmB,KAAnBA,CAAAA,CAAAA,EAAGjF,CAAgB,GAAA,KAAA,CAAhBA,CAAGiJ,EAAAA,CAAAA,GAAa,KAAbA,CAAAA,CAAAA,EAAGmI,QAAU,KAAVA,CAAAA,KAAAA,CAAAA;AACjB,QAAA,IAAMmuB,EAAK37B,GAAAA,IAAAA,CAAKsiB,GAAG,CAACjhB,IAAIV,OAAU,GAAA,GAAA,CAAA,CAAA;AAClC,QAAA,IAAMi7B,EAAK57B,GAAAA,IAAAA,CAAKsiB,GAAG,CAAClmB,IAAIuE,OAAU,GAAA,GAAA,CAAA,CAAA;AAClC,QAAA,IAAMk7B,EAAK77B,GAAAA,IAAAA,CAAKsiB,GAAG,CAACjd,IAAI1E,OAAU,GAAA,GAAA,CAAA,CAAA;AAClC,QAAA,IAAMkK,EAAK7K,GAAAA,IAAAA,CAAKoiB,GAAG,CAAC/gB,IAAIV,OAAU,GAAA,GAAA,CAAA,CAAA;AAClC,QAAA,IAAMokC,EAAK/kC,GAAAA,IAAAA,CAAKoiB,GAAG,CAAChmB,IAAIuE,OAAU,GAAA,GAAA,CAAA,CAAA;AAClC,QAAA,IAAMqkC,EAAKhlC,GAAAA,IAAAA,CAAKoiB,GAAG,CAAC/c,IAAI1E,OAAU,GAAA,GAAA,CAAA,CAAA;QAClC,OAAQ6M,KAAAA;AACJ,YAAA,KAAKu2B,WAAWI,GAAG;gBACf5gB,IAAK/iB,CAAAA,GAAG,CAACqK,EAAAA,GAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,EAAIrJ,EAAKoJ,GAAAA,EAAAA,GAAKlJ,EAAKhxB,GAAAA,EAAAA,GAAK+wB,KAAKoJ,EAAIrJ,EAAAA,EAAAA,GAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,EAAKk6B,GAAAA,EAAAA,GAAKlJ,IAAIF,EAAKC,GAAAA,EAAAA,GAAKC,EAAKhxB,GAAAA,EAAAA,GAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA,CAAAA;AACzH,gBAAA,MAAA;AACJ,YAAA,KAAKjB,WAAWM,GAAG;gBACf9gB,IAAK/iB,CAAAA,GAAG,CAACqK,EAAAA,GAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,EAAIrJ,EAAKoJ,GAAAA,EAAAA,GAAKlJ,EAAKhxB,GAAAA,EAAAA,GAAK+wB,KAAKoJ,EAAIrJ,EAAAA,EAAAA,GAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,EAAKk6B,GAAAA,EAAAA,GAAKlJ,IAAIF,EAAKC,GAAAA,EAAAA,GAAKC,EAAKhxB,GAAAA,EAAAA,GAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA,CAAAA;AACzH,gBAAA,MAAA;AACJ,YAAA,KAAKjB,WAAWO,GAAG;gBACf/gB,IAAK/iB,CAAAA,GAAG,CAACqK,EAAAA,GAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,EAAIrJ,EAAKoJ,GAAAA,EAAAA,GAAKlJ,EAAKhxB,GAAAA,EAAAA,GAAK+wB,KAAKoJ,EAAIrJ,EAAAA,EAAAA,GAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,EAAKk6B,GAAAA,EAAAA,GAAKlJ,IAAIF,EAAKC,GAAAA,EAAAA,GAAKC,EAAKhxB,GAAAA,EAAAA,GAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA,CAAAA;AACzH,gBAAA,MAAA;AACJ,YAAA,KAAKjB,WAAWQ,GAAG;gBACfhhB,IAAK/iB,CAAAA,GAAG,CAACqK,EAAAA,GAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,EAAIrJ,EAAKoJ,GAAAA,EAAAA,GAAKlJ,EAAKhxB,GAAAA,EAAAA,GAAK+wB,KAAKoJ,EAAIrJ,EAAAA,EAAAA,GAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,EAAKk6B,GAAAA,EAAAA,GAAKlJ,IAAIF,EAAKC,GAAAA,EAAAA,GAAKC,EAAKhxB,GAAAA,EAAAA,GAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA,CAAAA;AACzH,gBAAA,MAAA;AACJ,YAAA,KAAKjB,WAAWS,GAAG;gBACfjhB,IAAK/iB,CAAAA,GAAG,CAACqK,EAAAA,GAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,EAAIrJ,EAAKoJ,GAAAA,EAAAA,GAAKlJ,EAAKhxB,GAAAA,EAAAA,GAAK+wB,KAAKoJ,EAAIrJ,EAAAA,EAAAA,GAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,EAAKk6B,GAAAA,EAAAA,GAAKlJ,IAAIF,EAAKC,GAAAA,EAAAA,GAAKC,EAAKhxB,GAAAA,EAAAA,GAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA,CAAAA;AACzH,gBAAA,MAAA;AACJ,YAAA,KAAKjB,WAAWU,GAAG;gBACflhB,IAAK/iB,CAAAA,GAAG,CAACqK,EAAAA,GAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,EAAIrJ,EAAKoJ,GAAAA,EAAAA,GAAKlJ,EAAKhxB,GAAAA,EAAAA,GAAK+wB,KAAKoJ,EAAIrJ,EAAAA,EAAAA,GAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,EAAKk6B,GAAAA,EAAAA,GAAKlJ,IAAIF,EAAKC,GAAAA,EAAAA,GAAKC,EAAKhxB,GAAAA,EAAAA,GAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA,CAAAA;AACzH,gBAAA,MAAA;AACJ,YAAA;gBACIliC,OAAQtJ,CAAAA,KAAK,CAAC,uBAA0BgU,GAAAA,KAAAA,CAAAA,CAAAA;AAChD,SAAA;QACA,OAAO+V,IAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACD6C,MAAAA,CAAAA,SA6GC,GA7GDA,SAAAA,UAAUC,GAAG,EAAA;QACT,IAAM2V,EAAAA,GAAK3V,IAAI5D,QAAQ,CAAA;AACvB,QAAA,IAA2B,KAAA,GAAA,IAAI,EAAvBphB,CAAAA,GAAmB,KAAnBA,CAAAA,CAAAA,EAAGjF,CAAgB,GAAA,KAAA,CAAhBA,CAAGiJ,EAAAA,CAAAA,GAAa,KAAbA,CAAAA,CAAAA,EAAGmI,QAAU,KAAVA,CAAAA,KAAAA,CAAAA;QACjB,IAAMy3B,IAAAA,GAAOjlC,IAAKsiB,CAAAA,GAAG,CAACjhB,CAAAA,GAAIV,UAAUukC,IAAOllC,GAAAA,IAAAA,CAAKoiB,GAAG,CAAC/gB,CAAIV,GAAAA,OAAAA,CAAAA,CAAAA;QACxD,IAAMwkC,IAAAA,GAAOnlC,IAAKsiB,CAAAA,GAAG,CAAClmB,CAAAA,GAAIuE,UAAUykC,IAAOplC,GAAAA,IAAAA,CAAKoiB,GAAG,CAAChmB,CAAIuE,GAAAA,OAAAA,CAAAA,CAAAA;QACxD,IAAM0kC,IAAAA,GAAOrlC,IAAKsiB,CAAAA,GAAG,CAACjd,CAAAA,GAAI1E,UAAU2kC,IAAOtlC,GAAAA,IAAAA,CAAKoiB,GAAG,CAAC/c,CAAI1E,GAAAA,OAAAA,CAAAA,CAAAA;QACxD,IAAI6M,KAAAA,KAAUu2B,UAAWI,CAAAA,GAAG,EAAE;AAC1B,YAAA,IAAMoB,WAAWN,IAAOI,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMG,WAAWP,IAAOK,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMG,WAAWP,IAAOG,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMK,WAAWR,IAAOI,GAAAA,IAAAA,CAAAA;YACxBtJ,EAAE,CAAC,CAAE,CAAA,GAAGmJ,IAAOE,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG,CAACmJ,IAAOG,GAAAA,IAAAA,CAAAA;YAChBtJ,EAAE,CAAC,EAAE,GAAGoJ,IAAAA,CAAAA;AACRpJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGwJ,QAAAA,GAAWC,QAAWL,GAAAA,IAAAA,CAAAA;AAC9BpJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGuJ,QAAAA,GAAWG,QAAWN,GAAAA,IAAAA,CAAAA;AAC9BpJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG,CAACkJ,IAAOC,GAAAA,IAAAA,CAAAA;AAChBnJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG0J,QAAAA,GAAWH,QAAWH,GAAAA,IAAAA,CAAAA;AAC9BpJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGyJ,QAAAA,GAAWD,QAAWJ,GAAAA,IAAAA,CAAAA;YAC9BpJ,EAAE,CAAC,EAAG,CAAA,GAAGiJ,IAAOE,GAAAA,IAAAA,CAAAA;AACpB,SAAA,MACK,IAAI33B,KAAAA,KAAUu2B,UAAWM,CAAAA,GAAG,EAAE;AAC/B,YAAA,IAAMsB,WAAWR,IAAOE,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMO,WAAWT,IAAOG,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMO,WAAWT,IAAOC,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMS,WAAWV,IAAOE,GAAAA,IAAAA,CAAAA;AACxBtJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG2J,QAAAA,GAAWG,QAAWZ,GAAAA,IAAAA,CAAAA;AAC9BlJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG6J,QAAAA,GAAWX,IAAOU,GAAAA,QAAAA,CAAAA;YAC1B5J,EAAE,CAAC,CAAE,CAAA,GAAGiJ,IAAOG,GAAAA,IAAAA,CAAAA;YACfpJ,EAAE,CAAC,CAAE,CAAA,GAAGiJ,IAAOK,GAAAA,IAAAA,CAAAA;YACftJ,EAAE,CAAC,CAAE,CAAA,GAAGiJ,IAAOI,GAAAA,IAAAA,CAAAA;YACfrJ,EAAE,CAAC,CAAE,CAAA,GAAG,CAACkJ,IAAAA,CAAAA;AACTlJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG4J,QAAAA,GAAWV,IAAOW,GAAAA,QAAAA,CAAAA;AAC1B7J,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG8J,QAAAA,GAAWH,QAAWT,GAAAA,IAAAA,CAAAA;YAC9BlJ,EAAE,CAAC,EAAG,CAAA,GAAGiJ,IAAOE,GAAAA,IAAAA,CAAAA;AACpB,SAAA,MACK,IAAI33B,KAAAA,KAAUu2B,UAAWO,CAAAA,GAAG,EAAE;AAC/B,YAAA,IAAMqB,YAAWR,IAAOE,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMO,YAAWT,IAAOG,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMO,YAAWT,IAAOC,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMS,YAAWV,IAAOE,GAAAA,IAAAA,CAAAA;AACxBtJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG2J,SAAAA,GAAWG,SAAWZ,GAAAA,IAAAA,CAAAA;AAC9BlJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG,CAACiJ,IAAOK,GAAAA,IAAAA,CAAAA;AAChBtJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG6J,SAAAA,GAAWD,SAAWV,GAAAA,IAAAA,CAAAA;AAC9BlJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG4J,SAAAA,GAAWC,SAAWX,GAAAA,IAAAA,CAAAA;YAC9BlJ,EAAE,CAAC,CAAE,CAAA,GAAGiJ,IAAOI,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG8J,SAAAA,GAAWH,SAAWT,GAAAA,IAAAA,CAAAA;AAC9BlJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG,CAACiJ,IAAOG,GAAAA,IAAAA,CAAAA;YAChBpJ,EAAE,CAAC,EAAE,GAAGkJ,IAAAA,CAAAA;YACRlJ,EAAE,CAAC,EAAG,CAAA,GAAGiJ,IAAOE,GAAAA,IAAAA,CAAAA;AACpB,SAAA,MACK,IAAI33B,KAAAA,KAAUu2B,UAAWQ,CAAAA,GAAG,EAAE;AAC/B,YAAA,IAAMgB,YAAWN,IAAOI,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMG,YAAWP,IAAOK,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMG,YAAWP,IAAOG,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMK,YAAWR,IAAOI,GAAAA,IAAAA,CAAAA;YACxBtJ,EAAE,CAAC,CAAE,CAAA,GAAGmJ,IAAOE,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGyJ,SAAAA,GAAWL,IAAOI,GAAAA,SAAAA,CAAAA;AAC1BxJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGuJ,SAAAA,GAAWH,IAAOM,GAAAA,SAAAA,CAAAA;YAC1B1J,EAAE,CAAC,CAAE,CAAA,GAAGmJ,IAAOG,GAAAA,IAAAA,CAAAA;AACftJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG0J,SAAAA,GAAWN,IAAOG,GAAAA,SAAAA,CAAAA;AAC1BvJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGwJ,SAAAA,GAAWJ,IAAOK,GAAAA,SAAAA,CAAAA;YAC1BzJ,EAAE,CAAC,CAAE,CAAA,GAAG,CAACoJ,IAAAA,CAAAA;YACTpJ,EAAE,CAAC,CAAE,CAAA,GAAGkJ,IAAOC,GAAAA,IAAAA,CAAAA;YACfnJ,EAAE,CAAC,EAAG,CAAA,GAAGiJ,IAAOE,GAAAA,IAAAA,CAAAA;AACpB,SAAA,MACK,IAAI33B,KAAAA,KAAUu2B,UAAWS,CAAAA,GAAG,EAAE;AAC/B,YAAA,IAAMuB,WAAWd,IAAOE,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMa,WAAWf,IAAOG,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMa,WAAWf,IAAOC,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMe,WAAWhB,IAAOE,GAAAA,IAAAA,CAAAA;YACxBpJ,EAAE,CAAC,CAAE,CAAA,GAAGmJ,IAAOE,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGkK,QAAAA,GAAWH,QAAWT,GAAAA,IAAAA,CAAAA;AAC9BtJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGiK,QAAAA,GAAWX,IAAOU,GAAAA,QAAAA,CAAAA;YAC1BhK,EAAE,CAAC,EAAE,GAAGsJ,IAAAA,CAAAA;YACRtJ,EAAE,CAAC,CAAE,CAAA,GAAGiJ,IAAOI,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG,CAACkJ,IAAOG,GAAAA,IAAAA,CAAAA;AAChBrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG,CAACoJ,IAAOC,GAAAA,IAAAA,CAAAA;AAChBrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGgK,QAAAA,GAAWV,IAAOW,GAAAA,QAAAA,CAAAA;AAC1BjK,YAAAA,EAAE,CAAC,EAAA,CAAG,GAAG+J,QAAAA,GAAWG,QAAWZ,GAAAA,IAAAA,CAAAA;AACnC,SAAA,MACK,IAAI93B,KAAAA,KAAUu2B,UAAWU,CAAAA,GAAG,EAAE;AAC/B,YAAA,IAAMsB,YAAWd,IAAOE,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMa,YAAWf,IAAOG,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMa,YAAWf,IAAOC,GAAAA,IAAAA,CAAAA;AACxB,YAAA,IAAMe,YAAWhB,IAAOE,GAAAA,IAAAA,CAAAA;YACxBpJ,EAAE,CAAC,CAAE,CAAA,GAAGmJ,IAAOE,GAAAA,IAAAA,CAAAA;YACfrJ,EAAE,CAAC,CAAE,CAAA,GAAG,CAACsJ,IAAAA,CAAAA;YACTtJ,EAAE,CAAC,CAAE,CAAA,GAAGoJ,IAAOC,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAG+J,SAAAA,GAAWT,IAAOY,GAAAA,SAAAA,CAAAA;YAC1BlK,EAAE,CAAC,CAAE,CAAA,GAAGiJ,IAAOI,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGgK,SAAAA,GAAWV,IAAOW,GAAAA,SAAAA,CAAAA;AAC1BjK,YAAAA,EAAE,CAAC,CAAA,CAAE,GAAGiK,SAAAA,GAAWX,IAAOU,GAAAA,SAAAA,CAAAA;YAC1BhK,EAAE,CAAC,CAAE,CAAA,GAAGkJ,IAAOG,GAAAA,IAAAA,CAAAA;AACfrJ,YAAAA,EAAE,CAAC,EAAA,CAAG,GAAGkK,SAAAA,GAAWZ,IAAOS,GAAAA,SAAAA,CAAAA;SAE1B,MAAA;YACDjjC,OAAQtJ,CAAAA,KAAK,CAAC,2BAA8BgU,GAAAA,KAAAA,CAAAA,CAAAA;AAChD,SAAA;;QAEAwuB,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;QACRA,EAAE,CAAC,EAAE,GAAG,CAAA,CAAA;QACRA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;;QAETA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACTA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACTA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACTA,EAAE,CAAC,GAAG,GAAG,CAAA,CAAA;QACT,OAAO3V,GAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;;QA1ZS2d,MAgaFmC,mBAEN,GAFD,SAAOA,mBAAoBz/B,CAAAA,CAAC,EAAE8G,KAA2B,EAAA;AAA3BA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQw2B,KAha7BA,CAgamCC,aAAa,CAAA;AACrD,QAAA,OAAO,IAjaFD,KAAAA,EAAAA,CAiacE,sBAAsB,CAACx9B,CAAG8G,EAAAA,KAAAA,CAAAA,CAAAA;AACjD,KAAA,CAAA;AACA;;;;;QAnaSw2B,MAyaFN,cAEN,GAFD,SAAOA,cAAengB,CAAAA,IAAI,EAAE/V,KAA2B,EAAA;AAA3BA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQw2B,KAza3BA,CAyaiCC,aAAa,CAAA;AACnD,QAAA,OAAO,IA1aFD,KAAAA,EAAAA,CA0ac7d,iBAAiB,CAAC5C,IAAM/V,EAAAA,KAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AACA;;;;;QA5aSw2B,MAkbFoC,WAEN,GAFD,SAAOA,WAAYvpC,CAAAA,CAAC,EAAE2Q,KAA2B,EAAA;AAA3BA,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQw2B,KAlbrBA,CAkb2BC,aAAa,CAAA;AAC7C,QAAA,OAAO,IAnbFD,KAAAA,EAAAA,CAmbcU,cAAc,CAAC7nC,CAAG2Q,EAAAA,KAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AACA;;;;;;QArbSw2B,KA4bF/+B,CAAAA,SAEN,GAFD,SAAOA,UAAUxC,KAAK,EAAEpE,MAAU,EAAEmP,KAA2B,EAAA;AAAvCnP,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAAGmP,QAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAQw2B,KA5bnCA,CA4byCC,aAAa,CAAA;AAC3D,QAAA,OAAO,IA7bFD,KAAAA,EAAAA,CA6bcxhC,YAAY,CAACC,OAAOpE,MAAQmP,EAAAA,KAAAA,CAAAA,CAAAA;AACnD,KAAA,CAAA;AA9bSw2B,IAAAA,OAAAA,KAAAA,CAAAA;AA+bZ,CAAA,EAAA,CAAA;AA/bYA,KAKFC,CAAAA,aAAAA,GAAgBF,WAAWQ,GAAG,CAAA;AAL5BP,KAAAA,CAMFc,YAAY,IAAIjjB,UAAAA,EAAAA,CAAAA;AANdmiB,KAAAA,CAOFtC,WAAW,IAAIzG,OAAAA,EAAAA;;AC1B1B,SAASoL,yBAAyBvsC,IAAI,EAAA;AAClC,IAAA,IAAIA,IAAS,KAAA,KAAK,CAAG,EAAA,MAAM,IAAIwsC,cAAe,CAAA,2DAAA,CAAA,CAAA;IAE9C,OAAOxsC,IAAAA,CAAAA;AACX;;ACHA;;AAEC,IACM,IAAA,OAAMysC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,OAAAA,CAiBG7jB,GAAO,EAAEG,GAAO,EAAEG,GAAO,EAAEL,GAAO,EAAEG,GAAO,EAAEG,GAAO,EAAEL,GAAO,EAAEG,GAAO,EAAEG,GAAO,EAAA;AAA/ER,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGL,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGL,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;AAAGG,QAAAA,IAAAA,gBAAAA,GAAM,GAAA,CAAA,CAAA;QACtF,IAAI,CAACT,QAAQ,GAAG;AACZC,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AACVL,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AACVL,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AAAKG,YAAAA,GAAAA;AACb,SAAA,CAAA;;AAtBIqjB,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAwBT;;;;;;;;;;;;QAaA/lC,MAAAA,CAAAA,GAYC,GAZDA,SAAAA,IAAIkiB,GAAG,EAAEG,GAAG,EAAEG,GAAG,EAAEL,GAAG,EAAEG,GAAG,EAAEG,GAAG,EAAEL,GAAG,EAAEG,GAAG,EAAEG,GAAG,EAAA;QAC3C,IAAM9lB,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvBrlB,CAAC,CAAC,EAAE,GAAGslB,GAAAA,CAAAA;QACPtlB,CAAC,CAAC,EAAE,GAAGulB,GAAAA,CAAAA;QACPvlB,CAAC,CAAC,EAAE,GAAGwlB,GAAAA,CAAAA;QACPxlB,CAAC,CAAC,EAAE,GAAGylB,GAAAA,CAAAA;QACPzlB,CAAC,CAAC,EAAE,GAAG0lB,GAAAA,CAAAA;QACP1lB,CAAC,CAAC,EAAE,GAAG2lB,GAAAA,CAAAA;QACP3lB,CAAC,CAAC,EAAE,GAAG4lB,GAAAA,CAAAA;QACP5lB,CAAC,CAAC,EAAE,GAAG6lB,GAAAA,CAAAA;QACP7lB,CAAC,CAAC,EAAE,GAAG8lB,GAAAA,CAAAA;AACP,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;;;;;;;QAaAuY,MAAAA,CAAAA,mBAYC,GAZDA,SAAAA,oBAAoB/Y,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAA;QAC3D,IAAM9lB,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvBrlB,CAAC,CAAC,EAAE,GAAGslB,GAAAA,CAAAA;QACPtlB,CAAC,CAAC,EAAE,GAAGulB,GAAAA,CAAAA;QACPvlB,CAAC,CAAC,EAAE,GAAGwlB,GAAAA,CAAAA;QACPxlB,CAAC,CAAC,EAAE,GAAGylB,GAAAA,CAAAA;QACPzlB,CAAC,CAAC,EAAE,GAAG0lB,GAAAA,CAAAA;QACP1lB,CAAC,CAAC,EAAE,GAAG2lB,GAAAA,CAAAA;QACP3lB,CAAC,CAAC,EAAE,GAAG4lB,GAAAA,CAAAA;QACP5lB,CAAC,CAAC,EAAE,GAAG6lB,GAAAA,CAAAA;QACP7lB,CAAC,CAAC,EAAE,GAAG8lB,GAAAA,CAAAA;AACP,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;;QAOAwY,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,qBAAqBC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAA;AAC3B,QAAA,OAAO,IAAI,CAACr7B,GAAG,CAACm7B,EAAGt6B,CAAAA,CAAC,EAAEs6B,EAAAA,CAAGv/B,CAAC,EAAEu/B,EAAGt2B,CAAAA,CAAC,EAAEu2B,EAAAA,CAAGv6B,CAAC,EAAEu6B,EAAGx/B,CAAAA,CAAC,EAAEw/B,EAAAA,CAAGv2B,CAAC,EAAEw2B,EAAGx6B,CAAAA,CAAC,EAAEw6B,EAAAA,CAAGz/B,CAAC,EAAEy/B,GAAGx2B,CAAC,CAAA,CAAA;AACxE,KAAA,CAAA;AACA;;;;AAIC,QACDmhC,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,eAAe9/B,CAAC,EAAA;QACZ,IAAMs1B,EAAAA,GAAKt1B,EAAE+b,QAAQ,CAAA;AACrB,QAAA,OAAO,IAAI,CAACjiB,GAAG,CAACw7B,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEA,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,EAAG,CAAA,CAAA,CAAA;AAClF,KAAA,CAAA;AACA;;;;;AAKC,QACDx5B,OAAAA,YAKC,GALDA,SAAAA,YAAaC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AACzB,QAAA,IAAK,IAAI7C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;YACxB,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,CAAE,GAAGiH,KAAK,CAACpE,SAAS7C,CAAE,CAAA,CAAA;AACxC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD2qB,MAAAA,CAAAA,iBAyBC,GAzBDA,SAAAA,kBAAkB5C,IAAI,EAAA;QAClB,IAAQliB,CAAAA,GAAekiB,IAAfliB,CAAAA,CAAAA,EAAGjF,CAAYmnB,GAAAA,IAAAA,CAAZnnB,GAAGiJ,CAASke,GAAAA,IAAAA,CAATle,CAAG+B,EAAAA,CAAAA,GAAMmc,IAANnc,CAAAA,CAAAA,CAAAA;AACjB,QAAA,IAAMs5B,KAAKr/B,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMs/B,KAAKvkC,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMwkC,KAAKv7B,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMw7B,KAAKx/B,CAAIq/B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMI,KAAKz/B,CAAIs/B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMI,KAAK1/B,CAAIu/B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMI,KAAK5kC,CAAIukC,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMM,KAAK7kC,CAAIwkC,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMM,KAAK77B,CAAIu7B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMO,KAAK/5B,CAAIs5B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMU,KAAKh6B,CAAIu5B,GAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMU,KAAKj6B,CAAIw5B,GAAAA,EAAAA,CAAAA;QACf,IAAMpe,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxBD,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAAKwe,IAAAA,KAAKE,EAAC,CAAA,CAAA;QACnB1e,EAAE,CAAC,CAAE,CAAA,GAAGse,EAAKO,GAAAA,EAAAA,CAAAA;QACb7e,EAAE,CAAC,CAAE,CAAA,GAAGue,EAAKK,GAAAA,EAAAA,CAAAA;QACb5e,EAAE,CAAC,CAAE,CAAA,GAAGse,EAAKO,GAAAA,EAAAA,CAAAA;AACb7e,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAAKqe,IAAAA,KAAKK,EAAC,CAAA,CAAA;QACnB1e,EAAE,CAAC,CAAE,CAAA,GAAGye,EAAKE,GAAAA,EAAAA,CAAAA;QACb3e,EAAE,CAAC,CAAE,CAAA,GAAGue,EAAKK,GAAAA,EAAAA,CAAAA;QACb5e,EAAE,CAAC,CAAE,CAAA,GAAGye,EAAKE,GAAAA,EAAAA,CAAAA;AACb3e,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG,CAAKqe,IAAAA,KAAKG,EAAC,CAAA,CAAA;AACnB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA3+B,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;AACI,QAAA,IAAK,IAAI7G,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;AACxB,YAAA,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,CAAE,GAAG,CAAA,CAAA;AACvB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAooB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACI,OAAO,IAAI,CAACpjB,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC5C,KAAA,CAAA;AACA;;;QAIAoC,MAAAA,CAAAA,KAGC,GAHDA,SAAAA,KAAAA,GAAAA;QACI,IAAMxF,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,OAAO,IAjKF8jB,OAiKcnpC,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,EAAE,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,EAAEA,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA;AAC3E,KAAA,CAAA;AACA;;;;AAIC,QACDsF,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,SAASgE,CAAC,EAAA;AACN,QAAA,IAAI,CAAC+b,QAAQ,GAAO/b,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAE+b,QAAQ,CAAA,CAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDua,OAAAA,eAEC,GAFDA,SAAAA,eAAgBxhC,CAAAA,CAAC,EAAEqB,CAAC,EAAA;QAChB,OAAOA,CAAAA,CAAE2D,GAAG,CAAC,IAAI,CAACiiB,QAAQ,CAACjnB,CAAAA,GAAI,CAAE,CAAA,EAAE,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,GAAI,CAAI,GAAA,CAAA,CAAE,EAAE,IAAI,CAACinB,QAAQ,CAACjnB,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,CAAA,CAAA;AACzF,KAAA,CAAA;AACA;;;;;AAKC,QACDgI,OAAAA,KASC,GATDA,SAAAA,KAAM89B,CAAAA,EAAE,EAAEC,EAAE,EAAA;QACR,IAAMnkC,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvBrlB,CAAC,CAAC,EAAE,IAAIkkC,EAAAA,CAAAA;QACRlkC,CAAC,CAAC,EAAE,IAAIkkC,EAAAA,CAAAA;QACRlkC,CAAC,CAAC,EAAE,IAAIkkC,EAAAA,CAAAA;QACRlkC,CAAC,CAAC,EAAE,IAAImkC,EAAAA,CAAAA;QACRnkC,CAAC,CAAC,EAAE,IAAImkC,EAAAA,CAAAA;QACRnkC,CAAC,CAAC,EAAE,IAAImkC,EAAAA,CAAAA;AACR,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDkF,MAAAA,CAAAA,MAaC,GAbDA,SAAAA,OAAOrK,KAAK,EAAA;QACR,IAAMphC,CAAAA,GAAIgF,IAAKsiB,CAAAA,GAAG,CAAC8Z,KAAAA,CAAAA,CAAAA;QACnB,IAAM72B,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAACga,KAAAA,CAAAA,CAAAA;QACnB,IAAMh/B,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,IAAMC,GAAMtlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAEulB,GAAAA,GAAMvlB,CAAC,CAAC,CAAE,CAAA,EAAEwlB,GAAMxlB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxC,QAAA,IAAMylB,GAAMzlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAE0lB,GAAAA,GAAM1lB,CAAC,CAAC,CAAE,CAAA,EAAE2lB,GAAM3lB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxCA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGpC,CAAAA,GAAI0nB,MAAMnd,CAAIsd,GAAAA,GAAAA,CAAAA;AACrBzlB,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGpC,CAAAA,GAAI2nB,MAAMpd,CAAIud,GAAAA,GAAAA,CAAAA;AACrB1lB,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGpC,CAAAA,GAAI4nB,MAAMrd,CAAIwd,GAAAA,GAAAA,CAAAA;AACrB3lB,QAAAA,CAAC,CAAC,CAAE,CAAA,GAAG,CAACmI,CAAAA,GAAImd,MAAM1nB,CAAI6nB,GAAAA,GAAAA,CAAAA;AACtBzlB,QAAAA,CAAC,CAAC,CAAE,CAAA,GAAG,CAACmI,CAAAA,GAAIod,MAAM3nB,CAAI8nB,GAAAA,GAAAA,CAAAA;AACtB1lB,QAAAA,CAAC,CAAC,CAAE,CAAA,GAAG,CAACmI,CAAAA,GAAIqd,MAAM5nB,CAAI+nB,GAAAA,GAAAA,CAAAA;AACtB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD2jB,OAAAA,SASC,GATDA,SAAAA,SAAUrlC,CAAAA,CAAC,EAAEjF,CAAC,EAAA;QACV,IAAMgB,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvBrlB,QAAAA,CAAC,CAAC,CAAE,CAAA,IAAIiE,CAAIjE,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAChBA,QAAAA,CAAC,CAAC,CAAE,CAAA,IAAIiE,CAAIjE,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAChBA,QAAAA,CAAC,CAAC,CAAE,CAAA,IAAIiE,CAAIjE,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAChBA,QAAAA,CAAC,CAAC,CAAE,CAAA,IAAIhB,CAAIgB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAChBA,QAAAA,CAAC,CAAC,CAAE,CAAA,IAAIhB,CAAIgB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAChBA,QAAAA,CAAC,CAAC,CAAE,CAAA,IAAIhB,CAAIgB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDiG,MAAAA,CAAAA,QAUC,GAVDA,SAAAA,SAAS/I,KAAK,EAAA;QACV,IAAI,OAAOA,UAAU,QAAU,EAAA;AAC3B,YAAA,IAAK,IAAIkB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;AACxB,gBAAA,IAAI,CAACinB,QAAQ,CAACjnB,CAAAA,CAAE,IAAIlB,KAAAA,CAAAA;AACxB,aAAA;AACA,YAAA,OAAO,IAAI,CAAA;SAEV,MAAA;AACD,YAAA,OAAO,IAAI,CAACqjC,gBAAgB,CAAC,IAAI,EAAErjC,KAAAA,CAAAA,CAAAA;AACvC,SAAA;AACJ,KAAA,CAAA;AACA;;;;AAIC,QACD2pB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAY5pB,IAAI,EAAA;AACZ,QAAA,OAAO,IAAI,CAACsjC,gBAAgB,CAACtjC,MAAM,IAAI,CAAA,CAAA;AAC3C,KAAA,CAAA;AACA;;;;;AAKC,QACDsjC,OAAAA,gBAoBC,GApBDA,SAAAA,gBAAiBtjC,CAAAA,IAAI,EAAEC,KAAK,EAAA;QACxB,IAAMsjC,EAAAA,GAAKvjC,KAAKooB,QAAQ,CAAA;QACxB,IAAMob,EAAAA,GAAKvjC,MAAMmoB,QAAQ,CAAA;QACzB,IAAMD,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;AACxB,QAAA,IAAMqb,GAAMF,GAAAA,EAAE,CAAC,CAAA,CAAE,EAAEG,GAAAA,GAAMH,EAAE,CAAC,CAAE,CAAA,EAAEI,GAAMJ,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAC3C,QAAA,IAAMM,GAAMN,GAAAA,EAAE,CAAC,CAAA,CAAE,EAAEO,GAAAA,GAAMP,EAAE,CAAC,CAAE,CAAA,EAAEQ,GAAMR,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAC3C,QAAA,IAAMU,GAAMV,GAAAA,EAAE,CAAC,CAAA,CAAE,EAAEW,GAAAA,GAAMX,EAAE,CAAC,CAAE,CAAA,EAAEY,GAAMZ,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAC3C,QAAA,IAAMkB,GAAMjB,GAAAA,EAAE,CAAC,CAAA,CAAE,EAAEkB,GAAAA,GAAMlB,EAAE,CAAC,CAAE,CAAA,EAAEmB,GAAMnB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAC3C,QAAA,IAAMqB,GAAMrB,GAAAA,EAAE,CAAC,CAAA,CAAE,EAAEsB,GAAAA,GAAMtB,EAAE,CAAC,CAAE,CAAA,EAAEuB,GAAMvB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAC3C,QAAA,IAAMyB,GAAMzB,GAAAA,EAAE,CAAC,CAAA,CAAE,EAAE0B,GAAAA,GAAM1B,EAAE,CAAC,CAAE,CAAA,EAAE2B,GAAM3B,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAC3Crb,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAGsb,MAAMgB,GAAMf,GAAAA,GAAAA,GAAMmB,MAAMlB,GAAMsB,GAAAA,GAAAA,CAAAA;AACtC9c,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAGsb,MAAMiB,GAAMhB,GAAAA,GAAAA,GAAMoB,MAAMnB,GAAMuB,GAAAA,GAAAA,CAAAA;AACtC/c,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAGsb,MAAMkB,GAAMjB,GAAAA,GAAAA,GAAMqB,MAAMpB,GAAMwB,GAAAA,GAAAA,CAAAA;AACtChd,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG0b,MAAMY,GAAMX,GAAAA,GAAAA,GAAMe,MAAMd,GAAMkB,GAAAA,GAAAA,CAAAA;AACtC9c,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG0b,MAAMa,GAAMZ,GAAAA,GAAAA,GAAMgB,MAAMf,GAAMmB,GAAAA,GAAAA,CAAAA;AACtC/c,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG0b,MAAMc,GAAMb,GAAAA,GAAAA,GAAMiB,MAAMhB,GAAMoB,GAAAA,GAAAA,CAAAA;AACtChd,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG8b,MAAMQ,GAAMP,GAAAA,GAAAA,GAAMW,MAAMV,GAAMc,GAAAA,GAAAA,CAAAA;AACtC9c,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG8b,MAAMS,GAAMR,GAAAA,GAAAA,GAAMY,MAAMX,GAAMe,GAAAA,GAAAA,CAAAA;AACtC/c,QAAAA,EAAE,CAAC,CAAE,CAAA,GAAG8b,MAAMU,GAAMT,GAAAA,GAAAA,GAAMa,MAAMZ,GAAMgB,GAAAA,GAAAA,CAAAA;AACtC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAO,MAAAA,CAAAA,WAQC,GARDA,SAAAA,WAAAA,GAAAA;QACI,IAAM3iC,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,IAAMC,GAAMtlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAEylB,GAAAA,GAAMzlB,CAAC,CAAC,CAAE,CAAA,EAAE4lB,GAAM5lB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxC,QAAA,IAAMulB,GAAMvlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAE0lB,GAAAA,GAAM1lB,CAAC,CAAC,CAAE,CAAA,EAAE6lB,GAAM7lB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxC,QAAA,IAAMwlB,GAAMxlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAE2lB,GAAAA,GAAM3lB,CAAC,CAAC,CAAE,CAAA,EAAE8lB,GAAM9lB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxC,QAAA,OAAQslB,OAAOI,GAAAA,GAAMI,MAAMH,GAAME,GAAAA,GAAE,IAC/BN,GAAOI,IAAAA,MAAMC,GAAMH,GAAAA,GAAAA,GAAMK,GAAE,CAC3BN,GAAAA,GAAAA,IAAOC,GAAMI,GAAAA,GAAAA,GAAMH,MAAME,GAAE,CAAA,CAAA;AACnC,KAAA,CAAA;AACA;;;QAIAa,MAAAA,CAAAA,MAuBC,GAvBDA,SAAAA,MAAAA,GAAAA;QACI,IAAMzmB,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvB,QAAA,IAAMC,GAAMtlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAEulB,GAAAA,GAAMvlB,CAAC,CAAC,CAAE,CAAA,EAAEwlB,GAAMxlB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxC,QAAA,IAAMylB,GAAMzlB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAE0lB,GAAAA,GAAM1lB,CAAC,CAAC,CAAE,CAAA,EAAE2lB,GAAM3lB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACxC,QAAA,IAAM4lB,GAAM5lB,GAAAA,CAAC,CAAC,CAAA,CAAE,EAAE6lB,GAAAA,GAAM7lB,CAAC,CAAC,CAAE,CAAA,EAAE8lB,GAAM9lB,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;QACxC,IAAM6iC,GAAAA,GAAM/c,GAAMJ,GAAAA,GAAAA,GAAMG,GAAMF,GAAAA,GAAAA,CAAAA;QAC9B,IAAMmd,GAAAA,GAAMjd,GAAML,GAAAA,GAAAA,GAAMM,GAAMP,GAAAA,GAAAA,CAAAA;QAC9B,IAAMwd,GAAAA,GAAMpd,GAAMJ,GAAAA,GAAAA,GAAMG,GAAMF,GAAAA,GAAAA,CAAAA;AAC9B,QAAA,IAAMyd,GAAM3d,GAAAA,GAAAA,GAAMud,GAAMpd,GAAAA,GAAAA,GAAMqd,MAAMld,GAAMmd,GAAAA,GAAAA,CAAAA;AAC1C,QAAA,IAAIE,QAAQ,CAAG,EAAA;YACX,OAAO,IAAI,CAAC7/B,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC5C,SAAA;AACA,QAAA,IAAM8/B,SAAS,CAAID,GAAAA,GAAAA,CAAAA;QACnBjjC,CAAC,CAAC,CAAE,CAAA,GAAG6iC,GAAMK,GAAAA,MAAAA,CAAAA;QACbljC,CAAC,CAAC,EAAE,GAAI4lB,CAAAA,GAAMD,GAAAA,GAAAA,GAAMG,GAAML,GAAAA,GAAE,IAAKyd,MAAAA,CAAAA;QACjCljC,CAAC,CAAC,EAAE,GAAI6lB,CAAAA,GAAMJ,GAAAA,GAAAA,GAAMG,GAAMF,GAAAA,GAAE,IAAKwd,MAAAA,CAAAA;QACjCljC,CAAC,CAAC,CAAE,CAAA,GAAG8iC,GAAMI,GAAAA,MAAAA,CAAAA;QACbljC,CAAC,CAAC,EAAE,GAAI8lB,CAAAA,GAAMR,GAAAA,GAAAA,GAAMM,GAAMJ,GAAAA,GAAE,IAAK0d,MAAAA,CAAAA;QACjCljC,CAAC,CAAC,EAAE,GAAI4lB,CAAAA,GAAML,GAAAA,GAAAA,GAAMM,GAAMP,GAAAA,GAAE,IAAK4d,MAAAA,CAAAA;QACjCljC,CAAC,CAAC,CAAE,CAAA,GAAG+iC,GAAMG,GAAAA,MAAAA,CAAAA;QACbljC,CAAC,CAAC,EAAE,GAAIylB,CAAAA,GAAMD,GAAAA,GAAAA,GAAMG,GAAML,GAAAA,GAAE,IAAK4d,MAAAA,CAAAA;QACjCljC,CAAC,CAAC,EAAE,GAAI0lB,CAAAA,GAAMJ,GAAAA,GAAAA,GAAMG,GAAMF,GAAAA,GAAE,IAAK2d,MAAAA,CAAAA;AACjC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAN,MAAAA,CAAAA,SAaC,GAbDA,SAAAA,SAAAA,GAAAA;QACI,IAAIhkC,CAAAA,CAAAA;QACJ,IAAM0K,CAAAA,GAAI,IAAI,CAAC+b,QAAQ,CAAA;QACvBzmB,CAAI0K,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,CAAE,CAAA,CAAA;QACXA,CAAC,CAAC,EAAE,GAAG1K,CAAAA,CAAAA;QACPA,CAAI0K,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,CAAE,CAAA,CAAA;QACXA,CAAC,CAAC,EAAE,GAAG1K,CAAAA,CAAAA;QACPA,CAAI0K,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACRA,QAAAA,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,CAAE,CAAA,CAAA;QACXA,CAAC,CAAC,EAAE,GAAG1K,CAAAA,CAAAA;AACP,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD2K,OAAAA,cAQC,GARDA,SAAAA,cAAe9J,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;AACjB,QAAA,IAAQhF,IAAYxE,CAAZwE,CAAAA,CAAAA,EAAGjF,IAASS,CAATT,CAAAA,CAAAA,EAAGiJ,IAAMxI,CAANwI,CAAAA,CAAAA,CAAAA;QACd,IAAMjI,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;QACvB,IAAMsD,GAAAA,GAAM1f,cAAAA,GAAOxJ,GAAAA,CAAAA,CAAAA;AACnBkpB,QAAAA,GAAAA,CAAI1kB,CAAC,GAAGjE,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAE,GAAGiI,CAAAA,CAAAA;AACrC0gB,QAAAA,GAAAA,CAAI3pB,CAAC,GAAGgB,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAE,GAAGiI,CAAAA,CAAAA;AACrC0gB,QAAAA,GAAAA,CAAI1gB,CAAC,GAAGjI,CAAC,CAAC,EAAE,GAAGiE,CAAAA,GAAIjE,CAAC,CAAC,EAAE,GAAGhB,CAAAA,GAAIgB,CAAC,CAAC,EAAE,GAAGiI,CAAAA,CAAAA;QACrC,OAAO0gB,GAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;;AAKC,QACDlf,OAAAA,eAEC,GAFDA,SAAAA,eAAgBhK,CAAAA,CAAC,EAAEwJ,GAAG,EAAA;AAClB,QAAA,OAAO,IAAI,CAACM,cAAc,CAAC9J,CAAAA,EAAGwJ,KAAKtC,SAAS,EAAA,CAAA;AAChD,KAAA,CAAA;AACA;;;;AAIC,QACDa,MAAAA,CAAAA,MASC,GATDA,SAAAA,OAAOk+B,MAAM,EAAA;QACT,IAAMtgB,EAAAA,GAAK,IAAI,CAACC,QAAQ,CAAA;QACxB,IAAMuZ,EAAAA,GAAK8G,OAAOrgB,QAAQ,CAAA;AAC1B,QAAA,IAAK,IAAIjnB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;YACxB,IAAI,CAACwF,QAAQwhB,EAAE,CAAChnB,EAAE,EAAEwgC,EAAE,CAACxgC,CAAAA,CAAE,CAAG,EAAA;gBACxB,OAAO,KAAA,CAAA;AACX,aAAA;AACJ,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;AACA;;;QAIAsJ,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAW,EAAA,CAAA,MAAA,CAAA,IAAI,CAAC2d,QAAQ,CAAA,CAAA;AAC5B,KAAA,CAAA;AACA1d,IAAAA,MAAAA,CAAAA,IAWC,GAXDA,SAAAA,IAAKtC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;QACjB,IAAMjB,CAAAA,GAAI,IAAI,CAACqlB,QAAQ,CAAA;AACvBhgB,QAAAA,KAAK,CAACpE,MAAAA,CAAO,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACpBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AACxBqF,QAAAA,KAAK,CAACpE,MAAS,GAAA,CAAA,CAAE,GAAGjB,CAAC,CAAC,CAAE,CAAA,CAAA;AAC5B,KAAA,CAAA;AACA;;;AAGC,QACD,OAnZSmpC,CAmZFxD,YAEN,GAFD,SAAOA,YAAAA,GAAAA;QACH,OAAO,IApZFwD,QAoZc,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC/C,KAAA,CAAA;AACA;;;;;;QAtZSA,OA6ZFrD,CAAAA,iBAEN,GAFD,SAAOA,kBAAkBvH,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAA;AAC/B,QAAA,OAAO,IA9ZF0K,OAAAA,EAAAA,CA8ZgB7K,oBAAoB,CAACC,IAAIC,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AACtD,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAO8K,CAAAA,WAEN,GAFD,SAAOA,YAAYjgC,CAAC,EAAA;QAChB,OAAO,IAtaF6/B,OAsagBC,EAAAA,CAAAA,cAAc,CAAC9/B,CAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AACA;;;;;QAxaS6/B,QA8aFthC,SAEN,GAFD,SAAOA,SAAUxC,CAAAA,KAAK,EAAEpE,MAAU,EAAA;AAAVA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,IA/aFkoC,OAAAA,EAAAA,CA+agB/jC,YAAY,CAACC,KAAOpE,EAAAA,MAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AACA;;;;AAIC,QACD,OAAOqlC,CAAAA,cAEN,GAFD,SAAOA,eAAengB,IAAI,EAAA;QACtB,OAAO,IAvbFgjB,OAubgBpgB,EAAAA,CAAAA,iBAAiB,CAAC5C,IAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AACA;;;;;;;;;;;;QAzbSgjB,QAscF1C,gBAEN,GAFD,SAAOA,gBAAiBnhB,CAAAA,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAA;QAC/D,OAAO,IAvcFqjB,QAucc7jB,GAAKG,EAAAA,GAAAA,EAAKG,KAAKL,GAAKG,EAAAA,GAAAA,EAAKG,GAAKL,EAAAA,GAAAA,EAAKG,GAAKG,EAAAA,GAAAA,CAAAA,CAAAA;AAC/D,KAAA,CAAA;AAxcSqjB,IAAAA,OAAAA,OAAAA,CAAAA;AAycZ,CAAA,EAAA;;AC5cD;;AAEC,IACM,IAAA,GAAMK,iBAAD,WAAL;aAAMA,GAkBGn7B,CAAAA,MAAqB,EAAEo7B,SAAqB,EAAA;QAA5Cp7B,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAASrG,GAAAA,OAAAA,CAAQD,IAAI,CAAA;QAAE0hC,IAAAA,SAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAYzhC,GAAAA,OAAAA,CAAQ4B,CAAC,CAAA;AAbxD;;AAEC,QAAA,IAAA,CACDyE,SAAS,IAAIrG,OAAAA,EAAAA,CAAAA;AACb;;AAEC,QAAA,IAAA,CACDyhC,YAAY,IAAIzhC,OAAAA,EAAAA,CAAAA;;AAQZ,QAAA,IAAI,CAACqG,MAAM,CAAC/I,QAAQ,CAAC+I,MAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACo7B,SAAS,CAACnkC,QAAQ,CAACmkC,WAAW9iC,SAAS,EAAA,CAAA;;AArBvC6iC,IAAAA,IAAAA,MAAAA,GAAAA,GAAAA,CAAAA,SAAAA,CAAAA;AAuBT;;;;;AAKC,QACDpmC,OAAAA,GAIC,GAJDA,SAAAA,GAAIiL,CAAAA,MAAM,EAAEo7B,SAAS,EAAA;AACjB,QAAA,IAAI,CAACp7B,MAAM,CAAC/I,QAAQ,CAAC+I,MAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,CAACo7B,SAAS,CAACnkC,QAAQ,CAACmkC,WAAW9iC,SAAS,EAAA,CAAA;AAC5C,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAnB,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACI,OAAO,IAvCFgkC,IAuCU,IAAI,CAACn7B,MAAM,EAAE,IAAI,CAACo7B,SAAS,CAAA,CAAA;AAC9C,KAAA,CAAA;AACA;;;;AAIC,QACDnkC,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAASokC,GAAG,EAAA;QACR,OAAO,IAAI,CAACtmC,GAAG,CAACsmC,IAAIr7B,MAAM,EAAEq7B,IAAID,SAAS,CAAA,CAAA;AAC7C,KAAA,CAAA;AACA;;;;AAIC,QACDE,MAAAA,CAAAA,MAGC,GAHDA,SAAAA,OAAO/qC,CAAC,EAAA;AACJ,QAAA,IAAI,CAACyP,MAAM,CAAC/I,QAAQ,CAAC,IAAI,CAACskC,EAAE,CAAChrC,CAAAA,EAAG4qC,GAvD3BA,CAuD+BvkB,QAAQ,CAAA,CAAA,CAAA;AAC5C,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACD2kB,OAAAA,EAIC,GAJDA,SAAAA,EAAGhrC,CAAAA,CAAC,EAAEqK,GAAG,EAAA;QACL,IAAM6D,GAAAA,GAAM7D,GAAMA,GAAAA,GAAAA,GAAM,IAAIjB,OAAAA,EAAAA,CAAAA;AAC5B8E,QAAAA,GAAAA,CAAIxH,QAAQ,CAAC,IAAI,CAAC+I,MAAM,CAAA,CAAA;AACxB,QAAA,OAAOvB,IAAI5E,eAAe,CAAC,IAAI,CAACuhC,SAAS,EAAE7qC,CAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AACA;;;;AAIC,QACD4I,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAOX,KAAK,EAAA;AACR,QAAA,OAAO,IAAI,CAACwH,MAAM,CAAC7G,MAAM,CAACX,KAAMwH,CAAAA,MAAM,CAAK,IAAA,IAAI,CAACo7B,SAAS,CAACjiC,MAAM,CAACX,MAAM4iC,SAAS,CAAA,CAAA;AACpF,KAAA,CAAA;AACA;;;;AAIC,QACDpgC,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,YAAYC,CAAC,EAAA;AACT,QAAA,IAAI,CAAC+E,MAAM,CAAC3E,qBAAqB,CAACJ,CAAAA,CAAAA,CAAAA;AAClC,QAAA,IAAI,CAACmgC,SAAS,CAACjgC,iBAAiB,CAACF,CAAAA,CAAAA,CAAAA;AACjC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDugC,OAAAA,YA6DC,GA7DDA,SAAAA,YAAaC,CAAAA,GAAG,EAAE7gC,GAAG,EAAA;AACjB,QAAA,IAAgC,YAAA,GAAA,IAAI,CAACoF,MAAM,EAAnCpK,EAAG8lC,GAAqB,YAAxB9lC,CAAAA,CAAAA,EAAOjF,EAAiB,GAAA,YAAA,CAAjBA,CAAOiJ,EAAG+hC,KAAO,YAAV/hC,CAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAgC,eAAA,GAAA,IAAI,CAACwhC,SAAS,EAAtCxlC,EAAGoD,GAAqB,eAAxBpD,CAAAA,CAAAA,EAAOjF,EAAiB,GAAA,eAAA,CAAjBA,CAAOiJ,EAAGY,KAAO,eAAVZ,CAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAyC6hC,QAAAA,GAAAA,GAAAA,CAAI9mC,GAAG,EAAxCiB,KAAiC6lC,GAAAA,QAAAA,CAAjC7lC,CAAUjF,EAAGirC,KAAoBH,GAAAA,QAAAA,CAAvB9qC,CAAUiJ,EAAGiiC,QAAUJ,QAAb7hC,CAAAA,CAAAA,CAAAA;AAC5B,QAAA,IAAyC6hC,QAAAA,GAAAA,GAAAA,CAAInlC,GAAG,EAAxCV,KAAiC6lC,GAAAA,QAAAA,CAAjC7lC,CAAUjF,EAAGmrC,KAAoBL,GAAAA,QAAAA,CAAvB9qC,CAAUiJ,EAAGmiC,QAAUN,QAAb7hC,CAAAA,CAAAA,CAAAA;AAC5B,QAAA,IAAIoiC,IAAMC,EAAAA,IAAAA,EAAMC,KAAOC,EAAAA,KAAAA,EAAOC,KAAOC,EAAAA,KAAAA,CAAAA;AACrC,QAAA,IAAMC,UAAU,CAAItjC,GAAAA,EAAAA,CAAAA;AACpB,QAAA,IAAMujC,UAAU,CAAItjC,GAAAA,EAAAA,CAAAA;AACpB,QAAA,IAAMujC,UAAU,CAAIhiC,GAAAA,EAAAA,CAAAA;AACpB,QAAA,IAAI8hC,WAAW,CAAG,EAAA;AACdN,YAAAA,IAAAA,GAAO,CAACS,KAAQf,GAAAA,EAAC,IAAKY,OAAAA,CAAAA;AACtBL,YAAAA,IAAAA,GAAO,CAACS,KAAQhB,GAAAA,EAAC,IAAKY,OAAAA,CAAAA;SAErB,MAAA;AACDN,YAAAA,IAAAA,GAAO,CAACU,KAAQhB,GAAAA,EAAC,IAAKY,OAAAA,CAAAA;AACtBL,YAAAA,IAAAA,GAAO,CAACQ,KAAQf,GAAAA,EAAC,IAAKY,OAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,IAAIC,WAAW,CAAG,EAAA;AACdL,YAAAA,KAAAA,GAAQ,CAACN,KAAQe,GAAAA,EAAC,IAAKJ,OAAAA,CAAAA;AACvBJ,YAAAA,KAAAA,GAAQ,CAACL,KAAQa,GAAAA,EAAC,IAAKJ,OAAAA,CAAAA;SAEtB,MAAA;AACDL,YAAAA,KAAAA,GAAQ,CAACJ,KAAQa,GAAAA,EAAC,IAAKJ,OAAAA,CAAAA;AACvBJ,YAAAA,KAAAA,GAAQ,CAACP,KAAQe,GAAAA,EAAC,IAAKJ,OAAAA,CAAAA;AAC3B,SAAA;AACA,QAAA,IAAI,IAACP,GAAOG,KAAWD,IAAAA,KAAAA,GAAQD,IAAO,EAAA;AAClC,YAAA,OAAA;AACJ,SAAA;QACA,IAAIC,KAAAA,GAAQF,IAAQA,IAAAA,IAAAA,KAASA,IAAM,EAAA;YAC/BA,IAAOE,GAAAA,KAAAA,CAAAA;AACX,SAAA;QACA,IAAIC,KAAAA,GAAQF,IAAQA,IAAAA,IAAAA,KAASA,IAAM,EAAA;YAC/BA,IAAOE,GAAAA,KAAAA,CAAAA;AACX,SAAA;QACA,IAAID,KAAAA,GAAQF,IAAQA,IAAAA,IAAAA,KAASA,IAAM,EAAA;YAC/BA,IAAOE,GAAAA,KAAAA,CAAAA;AACX,SAAA;QACA,IAAIC,KAAAA,GAAQF,IAAQA,IAAAA,IAAAA,KAASA,IAAM,EAAA;YAC/BA,IAAOE,GAAAA,KAAAA,CAAAA;AACX,SAAA;AACA,QAAA,IAAIK,WAAW,CAAG,EAAA;AACdJ,YAAAA,KAAAA,GAAQ,CAACP,KAAQF,GAAAA,EAAC,IAAKa,OAAAA,CAAAA;AACvBH,YAAAA,KAAAA,GAAQ,CAACN,KAAQJ,GAAAA,EAAC,IAAKa,OAAAA,CAAAA;SAEtB,MAAA;AACDJ,YAAAA,KAAAA,GAAQ,CAACL,KAAQJ,GAAAA,EAAC,IAAKa,OAAAA,CAAAA;AACvBH,YAAAA,KAAAA,GAAQ,CAACR,KAAQF,GAAAA,EAAC,IAAKa,OAAAA,CAAAA;AAC3B,SAAA;AACA,QAAA,IAAI,IAACR,GAAOK,KAAWD,IAAAA,KAAAA,GAAQH,IAAO,EAAA;AAClC,YAAA,OAAA;AACJ,SAAA;QACA,IAAIG,KAAAA,GAAQJ,IAAQA,IAAAA,IAAAA,KAASA,IAAM,EAAA;YAC/BA,IAAOI,GAAAA,KAAAA,CAAAA;AACX,SAAA;QACA,IAAIC,KAAAA,GAAQJ,IAAQA,IAAAA,IAAAA,KAASA,IAAM,EAAA;YAC/BA,IAAOI,GAAAA,KAAAA,CAAAA;AACX,SAAA;AACA,QAAA,IAAIJ,OAAO,CAAG,EAAA;AACV,YAAA,OAAA;AACJ,SAAA;AACA,QAAA,OAAOD,IAAQ,IAAA,CAAA,GAAI,IAAI,CAACT,EAAE,CAACS,IAAMphC,EAAAA,GAAAA,CAAAA,GAAO,IAAI,CAAC2gC,EAAE,CAACU,IAAMrhC,EAAAA,GAAAA,CAAAA,CAAAA;AAC1D,KAAA,CAAA;AACA;;;;;AAKC,QACDgiC,OAAAA,cAiBC,GAjBDA,SAAAA,cAAeC,CAAAA,KAAK,EAAEjiC,GAAG,EAAA;QACrB,IAAML,MAAAA,GAASsiC,MAAMtiC,MAAM,CAAA;QAC3B,IAAMxB,QAAAA,GAAW8jC,MAAM9jC,QAAQ,CAAA;AAC/B,QAAA,IAAM+jC,cAAcviC,MAAO1B,CAAAA,GAAG,CAAC,IAAI,CAACuiC,SAAS,CAAA,CAAA;AAC7C,QAAA,IAAI0B,gBAAgB,CAAG,EAAA;;AAEnB,YAAA,IAAMvsC,IAAIgK,MAAO1B,CAAAA,GAAG,CAAC,IAAI,CAACmH,MAAM,CAAIjH,GAAAA,QAAAA,CAAAA;AACpC,YAAA,IAAIxI,MAAM,CAAG,EAAA;gBACT,IAAMkO,GAAAA,GAAM7D,GAAMA,GAAAA,GAAAA,GAAM,IAAIjB,OAAAA,EAAAA,CAAAA;AAC5B,gBAAA,OAAO8E,GAAIxH,CAAAA,QAAQ,CAAC,IAAI,CAAC+I,MAAM,CAAA,CAAA;AACnC,aAAA;;AAEA,YAAA,OAAA;AACJ,SAAA;QACA,IAAMzP,EAAAA,GAAI,EAAE,IAAI,CAACyP,MAAM,CAACnH,GAAG,CAAC0B,MAAUxB,CAAAA,GAAAA,QAAO,CAAK+jC,GAAAA,WAAAA,CAAAA;;AAElD,QAAA,OAAOvsC,MAAK,CAAI,GAAA,IAAI,CAACgrC,EAAE,CAAChrC,IAAGqK,GAAOlM,CAAAA,GAAAA,SAAAA,CAAAA;AACtC,KAAA,CAAA;AACA;;;;;AAKC,QACDquC,OAAAA,eAuBC,GAvBDA,SAAAA,eAAgBC,CAAAA,MAAM,EAAEpiC,GAAG,EAAA;QACvB,IAAMqiC,MAAAA,GAASD,OAAOC,MAAM,CAAA;QAC5B,IAAMC,MAAAA,GAAS/B,GA3LVA,CA2LcvkB,QAAQ,CAACjf,eAAe,CAACslC,MAAAA,EAAQ,IAAI,CAACj9B,MAAM,CAAA,CAAA;AAC/D,QAAA,IAAMm9B,MAAMD,MAAOrkC,CAAAA,GAAG,CAAC,IAAI,CAACuiC,SAAS,CAAA,CAAA;AACrC,QAAA,IAAMgC,EAAKF,GAAAA,MAAAA,CAAOrkC,GAAG,CAACqkC,UAAUC,GAAMA,GAAAA,GAAAA,CAAAA;AACtC,QAAA,IAAME,OAAUL,GAAAA,MAAAA,CAAOM,MAAM,GAAGN,OAAOM,MAAM,CAAA;AAC7C,QAAA,IAAIF,KAAKC,OAAS,EAAA;AACd,YAAA,OAAA;AACJ,SAAA;AACA,QAAA,IAAME,GAAMhpC,GAAAA,IAAAA,CAAK6D,IAAI,CAACilC,OAAUD,GAAAA,EAAAA,CAAAA,CAAAA;;AAEhC,QAAA,IAAMI,KAAKL,GAAMI,GAAAA,GAAAA,CAAAA;;AAEjB,QAAA,IAAME,KAAKN,GAAMI,GAAAA,GAAAA,CAAAA;;AAEjB,QAAA,IAAIE,KAAK,CAAG,EAAA;AACR,YAAA,OAAA;AACJ,SAAA;;;;;AAKA,QAAA,OAAOD,EAAM,IAAA,CAAA,GAAI,IAAI,CAACjC,EAAE,CAACiC,EAAI5iC,EAAAA,GAAAA,CAAAA,GAAO,IAAI,CAAC2gC,EAAE,CAACkC,EAAI7iC,EAAAA,GAAAA,CAAAA,CAAAA;AACpD,KAAA,CAAA;AACA;;;;;;QAOA8iC,MAAAA,CAAAA,iBAuDC,GAvDDA,SAAAA,kBAAkBC,QAAQ,EAAE/iC,GAAG,EAAEgjC,eAAe,EAAA;;;;QAI5C,IAAMpoC,CAAAA,GAAImoC,SAASE,EAAE,CAAA;QACrB,IAAMpoC,CAAAA,GAAIkoC,SAASG,EAAE,CAAA;QACrB,IAAMvuC,CAAAA,GAAIouC,SAASI,EAAE,CAAA;AACrB,QAAA,IAAMC,QAAQ7C,GA/NTA,CA+NavkB,QAAQ,CAACjf,eAAe,CAAClC,CAAGD,EAAAA,CAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAMyoC,QAAQ9C,GAhOTA,CAgOatJ,QAAQ,CAACl6B,eAAe,CAACpI,CAAGiG,EAAAA,CAAAA,CAAAA,CAAAA;QAC9C,IAAMwmB,IAAAA,GAAOmf,GAjORA,CAiOYpJ,QAAQ,CAACp6B,eAAe,CAAC,IAAI,CAACqI,MAAM,EAAExK,CAAAA,CAAAA,CAAAA;AACvD,QAAA,IAAM+E,SAAS4gC,GAlOVA,CAkOc+C,QAAQ,CAACnkC,YAAY,CAACikC,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;;;;;;AAMhD,QAAA,IAAIE,MAAM,IAAI,CAAC/C,SAAS,CAACviC,GAAG,CAAC0B,MAAAA,CAAAA,CAAAA;QAC7B,IAAI6jC,IAAAA,CAAAA;AACJ,QAAA,IAAID,MAAM,CAAG,EAAA;AACT,YAAA,IAAIP,eAAiB,EAAA;AACjB,gBAAA,OAAA;AACJ,aAAA;YACAQ,IAAO,GAAA,CAAA,CAAA;SAEN,MAAA,IAAID,MAAM,CAAG,EAAA;AACdC,YAAAA,IAAAA,GAAO,CAAC,CAAA,CAAA;AACRD,YAAAA,GAAAA,GAAM,CAACA,GAAAA,CAAAA;SAEN,MAAA;AACD,YAAA,OAAA;AACJ,SAAA;QACAF,KAAMlkC,CAAAA,YAAY,CAACiiB,IAAMiiB,EAAAA,KAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAMI,SAASD,IAAO,GAAA,IAAI,CAAChD,SAAS,CAACviC,GAAG,CAAColC,KAAAA,CAAAA,CAAAA;;AAEzC,QAAA,IAAII,SAAS,CAAG,EAAA;AACZ,YAAA,OAAA;AACJ,SAAA;AACAL,QAAAA,KAAAA,CAAMllC,KAAK,CAACkjB,IAAAA,CAAAA,CAAAA;AACZ,QAAA,IAAMsiB,SAASF,IAAO,GAAA,IAAI,CAAChD,SAAS,CAACviC,GAAG,CAACmlC,KAAAA,CAAAA,CAAAA;;AAEzC,QAAA,IAAIM,SAAS,CAAG,EAAA;AACZ,YAAA,OAAA;AACJ,SAAA;;QAEA,IAAID,MAAAA,GAASC,SAASH,GAAK,EAAA;AACvB,YAAA,OAAA;AACJ,SAAA;;AAEA,QAAA,IAAMI,GAAM,GAAA,CAACH,IAAOpiB,GAAAA,IAAAA,CAAKnjB,GAAG,CAAC0B,MAAAA,CAAAA,CAAAA;;AAE7B,QAAA,IAAIgkC,MAAM,CAAG,EAAA;AACT,YAAA,OAAA;AACJ,SAAA;;AAEA,QAAA,OAAO,IAAI,CAAChD,EAAE,CAACgD,MAAMJ,GAAKvjC,EAAAA,GAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;AA/QSugC,IAAAA,OAAAA,GAAAA,CAAAA;AAgRZ,CAAA,EAAA,CAAA;AAhRYA,GAAAA,CACFvkB,WAAW,IAAIjd,OAAAA,EAAAA,CAAAA;AADbwhC,GAAAA,CAEFtJ,WAAW,IAAIl4B,OAAAA,EAAAA,CAAAA;AAFbwhC,GAAAA,CAGFpJ,WAAW,IAAIp4B,OAAAA,EAAAA,CAAAA;AAHbwhC,GAAAA,CAIF+C,WAAW,IAAIvkC,OAAAA,EAAAA;;ACP1B;;AAEC,IACM,IAAA,IAAM6kC,iBAAD,WAAL;aAAMA,IAQG7pC,CAAAA,GAA+C,EAAE2B,GAAkD,EAAA;AAAnG3B,QAAAA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,GAAAA,GAAM,IAAIgF,OAAAA,CAAQjE,UAAUA,QAAUA,EAAAA,QAAAA,CAAAA,CAAAA;QAAWY,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAAM,IAAIqD,OAAAA,CAAQ,CAACjE,QAAU,EAAA,CAACA,UAAU,CAACA,QAAAA,CAAAA,CAAAA;AAClG,QAAA,IAAI,CAACf,GAAG,GAAGA,GAAAA,CAAIwC,KAAK,EAAA,CAAA;AACpB,QAAA,IAAI,CAACb,GAAG,GAAGA,GAAAA,CAAIa,KAAK,EAAA,CAAA;;AAVfqnC,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AAYT;;;;;AAKC,QACDzpC,OAAAA,GAIC,GAJDA,SAAAA,GAAIJ,CAAAA,GAAG,EAAE2B,GAAG,EAAA;AACR,QAAA,IAAI,CAAC3B,GAAG,CAACsC,QAAQ,CAACtC,GAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAI,CAAC2B,GAAG,CAACW,QAAQ,CAACX,GAAAA,CAAAA,CAAAA;AAClB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDS,MAAAA,CAAAA,YAiCC,GAjCDA,SAAAA,aAAaC,KAAK,EAAA;AACd,QAAA,IAAIynC,OAAOhqC,MAAOiB,CAAAA,QAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAIgpC,OAAOjqC,MAAOiB,CAAAA,QAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAIipC,OAAOlqC,MAAOiB,CAAAA,QAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAIkpC,OAAO,CAAClpC,QAAAA,CAAAA;AACZ,QAAA,IAAImpC,OAAO,CAACnpC,QAAAA,CAAAA;AACZ,QAAA,IAAIopC,OAAO,CAACppC,QAAAA,CAAAA;QACZ,IAAK,IAAI3F,CAAI,GAAA,CAAA,EAAGuoB,CAAIthB,GAAAA,KAAAA,CAAMxH,MAAM,EAAEO,CAAAA,GAAIuoB,CAAGvoB,EAAAA,CAAAA,IAAK,CAAG,CAAA;YAC7C,IAAM6F,CAAAA,GAAIoB,KAAK,CAACjH,CAAE,CAAA,CAAA;AAClB,YAAA,IAAMY,CAAIqG,GAAAA,KAAK,CAACjH,CAAAA,GAAI,CAAE,CAAA,CAAA;AACtB,YAAA,IAAM6J,CAAI5C,GAAAA,KAAK,CAACjH,CAAAA,GAAI,CAAE,CAAA,CAAA;AACtB,YAAA,IAAI6F,IAAI6oC,IAAM,EAAA;gBACVA,IAAO7oC,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACA,YAAA,IAAIjF,IAAI+tC,IAAM,EAAA;gBACVA,IAAO/tC,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACA,YAAA,IAAIiJ,IAAI+kC,IAAM,EAAA;gBACVA,IAAO/kC,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACA,YAAA,IAAIhE,IAAIgpC,IAAM,EAAA;gBACVA,IAAOhpC,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACA,YAAA,IAAIjF,IAAIkuC,IAAM,EAAA;gBACVA,IAAOluC,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACA,YAAA,IAAIiJ,IAAIklC,IAAM,EAAA;gBACVA,IAAOllC,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACJ,SAAA;AACA,QAAA,IAAI,CAACjF,GAAG,CAACI,GAAG,CAAC0pC,MAAMC,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAI,CAACroC,GAAG,CAACvB,GAAG,CAAC6pC,MAAMC,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,aAMC,GANDA,SAAAA,cAAcC,MAAM,EAAA;AAChB,QAAA,IAAI,CAACC,SAAS,EAAA,CAAA;QACd,IAAK,IAAIlvC,IAAI,CAAGmvC,EAAAA,EAAAA,GAAKF,OAAOxvC,MAAM,EAAEO,CAAImvC,GAAAA,EAAAA,EAAInvC,CAAK,EAAA,CAAA;AAC7C,YAAA,IAAI,CAACovC,aAAa,CAACH,MAAM,CAACjvC,CAAE,CAAA,CAAA,CAAA;AAChC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDqvC,OAAAA,oBAKC,GALDA,SAAAA,oBAAqBnC,CAAAA,MAAM,EAAE3oC,IAAI,EAAA;AAC7B,QAAA,IAAM+qC,QAAW/qC,GAAAA,IAAAA,CAAK6C,KAAK,EAAA,CAAGS,QAAQ,CAAC,GAAA,CAAA,CAAA;AACvC,QAAA,IAAI,CAACjD,GAAG,CAACsC,QAAQ,CAACgmC,MAAAA,CAAAA,CAAQvlC,QAAQ,CAAC2nC,QAAAA,CAAAA,CAAAA;AACnC,QAAA,IAAI,CAAC/oC,GAAG,CAACW,QAAQ,CAACgmC,MAAAA,CAAAA,CAAQ1lC,GAAG,CAAC8nC,QAAAA,CAAAA,CAAAA;AAC9B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;;AAEA;;;;AAIC,QACDC,MAAAA,CAAAA,aAGC,GAHDA,SAAAA,cAAcC,MAAM,EAAA;AAChB,QAAA,IAAI,CAACN,SAAS,EAAA,CAAA;QACd,OAAO,IAAI,CAACO,cAAc,CAACD,MAAAA,CAAAA,CAAAA;AAC/B,KAAA,CAAA;AACA;;;QAIApoC,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IArGFqnC,IAAAA,EAAAA,CAqGavnC,QAAQ,CAAC,IAAI,CAAA,CAAA;AACnC,KAAA,CAAA;AACA;;;;AAIC,QACDA,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,SAASwkC,GAAG,EAAA;AACR,QAAA,IAAI,CAAC9mC,GAAG,CAACsC,QAAQ,CAACwkC,IAAI9mC,GAAG,CAAA,CAAA;AACzB,QAAA,IAAI,CAAC2B,GAAG,CAACW,QAAQ,CAACwkC,IAAInlC,GAAG,CAAA,CAAA;AACzB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA2oC,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,IAAI,CAACtqC,GAAG,CAACiB,CAAC,GAAG,IAAI,CAACjB,GAAG,CAAChE,CAAC,GAAG,IAAI,CAACgE,GAAG,CAACiF,CAAC,GAAGnF,MAAOiB,CAAAA,QAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAI,CAACY,GAAG,CAACV,CAAC,GAAG,IAAI,CAACU,GAAG,CAAC3F,CAAC,GAAG,IAAI,CAAC2F,GAAG,CAACsD,CAAC,GAAG,CAAClE,QAAAA,CAAAA;AACxC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIA+pC,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,GAAAA;;AAEI,QAAA,OAAO,IAAI,CAACnpC,GAAG,CAACV,CAAC,GAAG,IAAI,CAACjB,GAAG,CAACiB,CAAC,IACvB,IAAI,CAACU,GAAG,CAAC3F,CAAC,GAAG,IAAI,CAACgE,GAAG,CAAChE,CAAC,IACvB,IAAI,CAAC2F,GAAG,CAACsD,CAAC,GAAG,IAAI,CAACjF,GAAG,CAACiF,CAAC,CAAA;AAClC,KAAA,CAAA;AACA;;;;AAIC,QACD8lC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAUrwC,MAAsB,EAAA;QAAtBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,IAAIsK,OAAAA,EAAAA,CAAAA;QACnB,OAAO,IAAI,CAAC8lC,OAAO,EAAA,GAAKpwC,OAAO0F,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,CAAK1F,CAAAA,GAAAA,MAAAA,CAAOoI,UAAU,CAAC,IAAI,CAAC9C,GAAG,EAAE,IAAI,CAAC2B,GAAG,CAAEsB,CAAAA,QAAQ,CAAC,GAAA,CAAA,CAAA;AACjG,KAAA,CAAA;AACA;;;;AAIC,QACD+nC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,QAAQtwC,MAAsB,EAAA;QAAtBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,IAAIsK,OAAAA,EAAAA,CAAAA;AACjB,QAAA,OAAO,IAAI,CAAC8lC,OAAO,KAAKpwC,MAAO0F,CAAAA,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,KAAK1F,MAAOsI,CAAAA,eAAe,CAAC,IAAI,CAACrB,GAAG,EAAE,IAAI,CAAC3B,GAAG,CAAA,CAAA;AAC3F,KAAA,CAAA;AACA;;;;AAIC,QACDwqC,MAAAA,CAAAA,aAIC,GAJDA,SAAAA,cAAcS,KAAK,EAAA;AACf,QAAA,IAAI,CAACjrC,GAAG,CAACA,GAAG,CAACirC,KAAAA,CAAAA,CAAAA;AACb,QAAA,IAAI,CAACtpC,GAAG,CAACA,GAAG,CAACspC,KAAAA,CAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,cAIC,GAJDA,SAAAA,eAAe3C,MAAM,EAAA;AACjB,QAAA,IAAI,CAACvoC,GAAG,CAAC+C,QAAQ,CAACwlC,MAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAI,CAAC5mC,GAAG,CAACiB,GAAG,CAAC2lC,MAAAA,CAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD4C,MAAAA,CAAAA,cAIC,GAJDA,SAAAA,eAAeC,MAAM,EAAA;AACjB,QAAA,IAAI,CAACprC,GAAG,CAAC4C,GAAG,CAAC,CAACwoC,MAAAA,CAAAA,CAAAA;AACd,QAAA,IAAI,CAACzpC,GAAG,CAACiB,GAAG,CAACwoC,MAAAA,CAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,YAAYvE,GAAG,EAAA;AACX,QAAA,IAAI,CAAC9mC,GAAG,CAACA,GAAG,CAAC8mC,IAAI9mC,GAAG,CAAA,CAAA;AACpB,QAAA,IAAI,CAAC2B,GAAG,CAACA,GAAG,CAACmlC,IAAInlC,GAAG,CAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;;AAEA;;;;AAIC,QACDkpC,MAAAA,CAAAA,cAmBC,GAnBDA,SAAAA,eAAeD,MAAM,EAAA;;;QAGjBA,MAAOU,CAAAA,iBAAiB,CAAC,KAAO,EAAA,KAAA,CAAA,CAAA;QAChC,IAAMC,QAAAA,GAAWX,OAAOW,QAAQ,CAAA;AAChC,QAAA,IAAIA,aAAaxxC,SAAW,EAAA;YACxB,IAAIwxC,QAAAA,CAASC,WAAW,KAAK,IAAM,EAAA;AAC/BD,gBAAAA,QAAAA,CAASE,kBAAkB,EAAA,CAAA;AAC/B,aAAA;AACA,YAAA,IAAMC,OAAO,IA3MZ7B,IAAAA,EAAAA,CAAAA;YA4MD6B,IAAKppC,CAAAA,QAAQ,CAACipC,QAAAA,CAASC,WAAW,CAAA,CAAA;YAClCE,IAAKC,CAAAA,YAAY,CAACf,MAAAA,CAAOgB,WAAW,CAAA,CAAA;YACpC,IAAI,CAACC,KAAK,CAACH,IAAAA,CAAAA,CAAAA;AACf,SAAA;QACA,IAAMI,QAAAA,GAAWlB,OAAOkB,QAAQ,CAAA;QAChC,IAAK,IAAI1wC,IAAI,CAAGuoB,EAAAA,CAAAA,GAAImoB,SAASjxC,MAAM,EAAEO,CAAIuoB,GAAAA,CAAAA,EAAGvoB,CAAK,EAAA,CAAA;AAC7C,YAAA,IAAI,CAACyvC,cAAc,CAACiB,QAAQ,CAAC1wC,CAAE,CAAA,CAAA,CAAA;AACnC,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD2wC,MAAAA,CAAAA,aAOC,GAPDA,SAAAA,cAAcd,KAAK,EAAA;QACf,OAAO,EAAEA,KAAAA,CAAMhqC,CAAC,GAAG,IAAI,CAACjB,GAAG,CAACiB,CAAC,IACtBgqC,KAAAA,CAAMhqC,CAAC,GAAG,IAAI,CAACU,GAAG,CAACV,CAAC,IACpBgqC,KAAAA,CAAMjvC,CAAC,GAAG,IAAI,CAACgE,GAAG,CAAChE,CAAC,IACpBivC,KAAAA,CAAMjvC,CAAC,GAAG,IAAI,CAAC2F,GAAG,CAAC3F,CAAC,IACpBivC,KAAMhmC,CAAAA,CAAC,GAAG,IAAI,CAACjF,GAAG,CAACiF,CAAC,IACpBgmC,KAAMhmC,CAAAA,CAAC,GAAG,IAAI,CAACtD,GAAG,CAACsD,CAAC,CAADA,CAAAA;AAC9B,KAAA,CAAA;AACA;;;;AAIC,QACD+mC,MAAAA,CAAAA,WAOC,GAPDA,SAAAA,YAAYnoC,KAAK,EAAA;AACb,QAAA,OAAO,IAAI,CAAC7D,GAAG,CAACiB,CAAC,IAAI4C,KAAM7D,CAAAA,GAAG,CAACiB,CAAC,IACzB,IAAI,CAACU,GAAG,CAACV,CAAC,IAAI4C,KAAMlC,CAAAA,GAAG,CAACV,CAAC,IACzB,IAAI,CAACjB,GAAG,CAAChE,CAAC,IAAI6H,KAAAA,CAAM7D,GAAG,CAAChE,CAAC,IACzB,IAAI,CAAC2F,GAAG,CAAC3F,CAAC,IAAI6H,KAAAA,CAAMlC,GAAG,CAAC3F,CAAC,IACzB,IAAI,CAACgE,GAAG,CAACiF,CAAC,IAAIpB,KAAAA,CAAM7D,GAAG,CAACiF,CAAC,IACzB,IAAI,CAACtD,GAAG,CAACsD,CAAC,IAAIpB,KAAMlC,CAAAA,GAAG,CAACsD,CAAC,CAAA;AACpC,KAAA,CAAA;;AAEA;;;;;AAKC,QACDgnC,OAAAA,YAIC,GAJDA,SAAAA,YAAahB,CAAAA,KAAK,EAAEvwC,MAAsB,EAAA;QAAtBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,IAAIsK,OAAAA,EAAAA,CAAAA;;;AAG7B,QAAA,OAAOtK,OAAO0F,GAAG,CAAC,CAAC6qC,MAAMhqC,CAAC,GAAG,IAAI,CAACjB,GAAG,CAACiB,CAAC,KAAK,IAAI,CAACU,GAAG,CAACV,CAAC,GAAG,IAAI,CAACjB,GAAG,CAACiB,CAAAA,CAAI,EAACgqC,CAAAA,KAAMjvC,CAAAA,CAAC,GAAG,IAAI,CAACgE,GAAG,CAAChE,CAAC,KAAK,IAAI,CAAC2F,GAAG,CAAC3F,CAAC,GAAG,IAAI,CAACgE,GAAG,CAAChE,CAAAA,GAAI,CAACivC,MAAMhmC,CAAC,GAAG,IAAI,CAACjF,GAAG,CAACiF,CAAC,KAAK,IAAI,CAACtD,GAAG,CAACsD,CAAC,GAAG,IAAI,CAACjF,GAAG,CAACiF,CAAC,CAADA,CAAAA,CAAAA;AAC9K,KAAA,CAAA;AACA;;;;AAIC,QACDinC,MAAAA,CAAAA,aAKC,GALDA,SAAAA,cAAcroC,KAAK,EAAA;;AAEf,QAAA,OAAO,EAAEA,KAAMlC,CAAAA,GAAG,CAACV,CAAC,GAAG,IAAI,CAACjB,GAAG,CAACiB,CAAC,IAAI4C,KAAM7D,CAAAA,GAAG,CAACiB,CAAC,GAAG,IAAI,CAACU,GAAG,CAACV,CAAC,IACtD4C,KAAMlC,CAAAA,GAAG,CAAC3F,CAAC,GAAG,IAAI,CAACgE,GAAG,CAAChE,CAAC,IAAI6H,KAAM7D,CAAAA,GAAG,CAAChE,CAAC,GAAG,IAAI,CAAC2F,GAAG,CAAC3F,CAAC,IACpD6H,KAAMlC,CAAAA,GAAG,CAACsD,CAAC,GAAG,IAAI,CAACjF,GAAG,CAACiF,CAAC,IAAIpB,MAAM7D,GAAG,CAACiF,CAAC,GAAG,IAAI,CAACtD,GAAG,CAACsD,CAAC,CAADA,CAAAA;AAC9D,KAAA,CAAA;AACA;;;;AAIC,QACDknC,MAAAA,CAAAA,gBAMC,GANDA,SAAAA,iBAAiB9D,MAAM,EAAA;;AAEnB,QAAA,IAAME,SAAS,IAAIvjC,OAAAA,EAAAA,CAAAA;AACnB,QAAA,IAAI,CAAConC,UAAU,CAAC/D,MAAAA,CAAOC,MAAM,EAAEC,MAAAA,CAAAA,CAAAA;;QAE/B,OAAOA,MAAAA,CAAOhkC,eAAe,CAAC8jC,MAAOC,CAAAA,MAAM,KAAMD,MAAOM,CAAAA,MAAM,GAAGN,MAAAA,CAAOM,MAAM,CAAA;AAClF,KAAA,CAAA;AACA;;;;;AAKC,QACDyD,OAAAA,UAEC,GAFDA,SAAAA,UAAWnB,CAAAA,KAAK,EAAEvwC,MAAsB,EAAA;QAAtBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,IAAIsK,OAAAA,EAAAA,CAAAA;AAC3B,QAAA,OAAOtK,MAAO4H,CAAAA,QAAQ,CAAC2oC,KAAAA,CAAAA,CAAOvpC,KAAK,CAAC,IAAI,CAAC1B,GAAG,EAAE,IAAI,CAAC2B,GAAG,CAAA,CAAA;AAC1D,KAAA,CAAA;AACA;;;;AAIC,QACD0qC,MAAAA,CAAAA,eAGC,GAHDA,SAAAA,gBAAgBpB,KAAK,EAAA;AACjB,QAAA,IAAMqB,YAAerB,GAAAA,KAAAA,CAAMzoC,KAAK,EAAA,CAAGd,KAAK,CAAC,IAAI,CAAC1B,GAAG,EAAE,IAAI,CAAC2B,GAAG,CAAA,CAAA;AAC3D,QAAA,OAAO2qC,YAAavpC,CAAAA,QAAQ,CAACkoC,KAAAA,CAAAA,CAAOpwC,MAAM,EAAA,CAAA;AAC9C,KAAA,CAAA;AACA;;;;AAIC,QACD0xC,MAAAA,CAAAA,SAQC,GARDA,SAAAA,UAAUzF,GAAG,EAAA;AACT,QAAA,IAAI,CAAC9mC,GAAG,CAAC2B,GAAG,CAACmlC,IAAI9mC,GAAG,CAAA,CAAA;AACpB,QAAA,IAAI,CAAC2B,GAAG,CAAC3B,GAAG,CAAC8mC,IAAInlC,GAAG,CAAA,CAAA;;QAEpB,IAAI,IAAI,CAACmpC,OAAO,EAAI,EAAA;AAChB,YAAA,IAAI,CAACR,SAAS,EAAA,CAAA;AAClB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDuB,MAAAA,CAAAA,KAIC,GAJDA,SAAAA,MAAM/E,GAAG,EAAA;AACL,QAAA,IAAI,CAAC9mC,GAAG,CAACA,GAAG,CAAC8mC,IAAI9mC,GAAG,CAAA,CAAA;AACpB,QAAA,IAAI,CAAC2B,GAAG,CAACA,GAAG,CAACmlC,IAAInlC,GAAG,CAAA,CAAA;AACpB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDgqC,OAAAA,YAQC,GARDA,SAAAA,YAAajJ,CAAAA,MAAM,EAAE4F,MAAsB,EAAA;QAAtBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,IAAItjC,OAAAA,EAAAA,CAAAA;;QAE9B,IAAI,IAAI,CAAC8lC,OAAO,EAAI,EAAA;AAChB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AACA,QAAA,IAAMT,MAAS,GAAA,IAAI,CAACmC,YAAY,CAAC9J,MAAQ4F,EAAAA,MAAAA,CAAAA,CAAAA;QACzC,IAAI,CAAC8B,aAAa,CAACC,MAAAA,CAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACAmC,IAAAA,MAAAA,CAAAA,YAqBC,GArBDA,SAAAA,YAAa9J,CAAAA,MAAM,EAAE4F,MAAsB,EAAA;QAAtBA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,IAAItjC,OAAAA,EAAAA,CAAAA;;QAE9B,IAAI,IAAI,CAAC8lC,OAAO,EAAI,EAAA;AAChB,YAAA,OAAO,EAAE,CAAA;AACb,SAAA;AACA,QAAA,IAAMT,SAAS,EAAE,CAAA;;QAEjBA,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAAChF,GAAG,CAACiB,CAAC,EAAE,IAAI,CAACjB,GAAG,CAAChE,CAAC,EAAE,IAAI,CAACgE,GAAG,CAACiF,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAAChF,GAAG,CAACiB,CAAC,EAAE,IAAI,CAACjB,GAAG,CAAChE,CAAC,EAAE,IAAI,CAAC2F,GAAG,CAACsD,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAAChF,GAAG,CAACiB,CAAC,EAAE,IAAI,CAACU,GAAG,CAAC3F,CAAC,EAAE,IAAI,CAACgE,GAAG,CAACiF,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAAChF,GAAG,CAACiB,CAAC,EAAE,IAAI,CAACU,GAAG,CAAC3F,CAAC,EAAE,IAAI,CAAC2F,GAAG,CAACsD,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAACrD,GAAG,CAACV,CAAC,EAAE,IAAI,CAACjB,GAAG,CAAChE,CAAC,EAAE,IAAI,CAACgE,GAAG,CAACiF,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAACrD,GAAG,CAACV,CAAC,EAAE,IAAI,CAACjB,GAAG,CAAChE,CAAC,EAAE,IAAI,CAAC2F,GAAG,CAACsD,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAACrD,GAAG,CAACV,CAAC,EAAE,IAAI,CAACU,GAAG,CAAC3F,CAAC,EAAE,IAAI,CAACgE,GAAG,CAACiF,CAAC,CAAA,CAAA;QAC1DolC,MAAM,CAAC,EAAE,GAAG,IAAIrlC,QAAQ,IAAI,CAACrD,GAAG,CAACV,CAAC,EAAE,IAAI,CAACU,GAAG,CAAC3F,CAAC,EAAE,IAAI,CAAC2F,GAAG,CAACsD,CAAC,CAAA,CAAA;QAC1DolC,MAAOv/B,CAAAA,OAAO,CAACqI,SAAAA,CAAAA,EAAAA;AACXA,YAAAA,CAAAA,CAAEpQ,QAAQ,CAACulC,MAAAA,CAAAA,CAAAA;AACXn1B,YAAAA,CAAAA,CAAE9M,WAAW,CAACq8B,MAAAA,CAAAA,CAAAA;AACdvvB,YAAAA,CAAAA,CAAEvQ,GAAG,CAAC0lC,MAAAA,CAAAA,CAAAA;AACV,SAAA,CAAA,CAAA;QACA,OAAO+B,MAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDoC,MAAAA,CAAAA,iBAKC,GALDA,SAAAA,kBAAkB/xC,MAAM,EAAA;AACpB,QAAA,IAAI,CAACqwC,SAAS,CAACrwC,MAAAA,CAAO4tC,MAAM,CAAA,CAAA;AAC5B,QAAA,IAAMC,SAAS,IAAIvjC,OAAAA,EAAAA,CAAAA;QACnBtK,MAAOiuC,CAAAA,MAAM,GAAG,IAAI,CAACqC,OAAO,CAACzC,MAAAA,CAAAA,CAAQ1tC,MAAM,EAAK,GAAA,GAAA,CAAA;QAChD,OAAOH,MAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACD4rC,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,UAAUroC,MAAM,EAAA;AACZ,QAAA,IAAI,CAAC+B,GAAG,CAAC4C,GAAG,CAAC3E,MAAAA,CAAAA,CAAAA;AACb,QAAA,IAAI,CAAC0D,GAAG,CAACiB,GAAG,CAAC3E,MAAAA,CAAAA,CAAAA;AACb,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDuG,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAOX,KAAK,EAAA;AACR,QAAA,OAAOA,MAAM7D,GAAG,CAACwE,MAAM,CAAC,IAAI,CAACxE,GAAG,CAAK6D,IAAAA,KAAAA,CAAMlC,GAAG,CAAC6C,MAAM,CAAC,IAAI,CAAC7C,GAAG,CAAA,CAAA;AAClE,KAAA,CAAA;AA7XSkoC,IAAAA,OAAAA,IAAAA,CAAAA;AA8XZ,CAAA,EAAA;;AChYD;;AAEC,IACM,IAAA6C,QAAMA,iBAAD,WAAL;aAAMA,MAQGpE,CAAAA,MAAqB,EAAEK,MAAW,EAAA;QAAlCL,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAAStjC,GAAAA,OAAAA,CAAQD,IAAI,CAAA;QAAE4jC,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAAS,CAAC,CAAA,CAAA;AACzC,QAAA,IAAI,CAACL,MAAM,GAAGA,MAAAA,CAAO9lC,KAAK,EAAA,CAAA;QAC1B,IAAI,CAACmmC,MAAM,GAAGA,MAAAA,CAAAA;;AAVT+D,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAYT;;;;;AAKC,QACDtsC,OAAAA,GAIC,GAJDA,SAAAA,GAAIkoC,CAAAA,MAAM,EAAEK,MAAM,EAAA;AACd,QAAA,IAAI,CAACL,MAAM,CAAChmC,QAAQ,CAACgmC,MAAAA,CAAAA,CAAAA;QACrB,IAAI,CAACK,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;;AAKC,QACDyB,OAAAA,aAgBC,GAhBDA,SAAAA,aAAcC,CAAAA,MAAM,EAAEsC,cAAc,EAAA;QAChC,IAAQrE,MAAW,GAAA,IAAI,CAAfA,MAAAA,CAAAA;AACR,QAAA,IAAIqE,mBAAmB5yC,SAAW,EAAA;AAC9BuuC,YAAAA,MAAAA,CAAOhmC,QAAQ,CAACqqC,cAAAA,CAAAA,CAAAA;AAChB,YAAA,IAAIC,WAAc,GAAA,CAAA,CAAA;AAClB,YAAA,IAAK,IAAIxxC,CAAI,GAAA,CAAA,EAAGA,IAAIivC,MAAOxvC,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;gBACpCwxC,WAAchtC,GAAAA,IAAAA,CAAK+B,GAAG,CAACirC,WAAAA,EAAatE,OAAO/jC,eAAe,CAAC8lC,MAAM,CAACjvC,CAAE,CAAA,CAAA,CAAA,CAAA;AACxE,aAAA;AACA,YAAA,IAAI,CAACutC,MAAM,GAAG/oC,IAAAA,CAAK6D,IAAI,CAACmpC,WAAAA,CAAAA,CAAAA;SAEvB,MAAA;AACD,YAAA,IAAM9F,GAAM,GAAA,IAAI+C,IAAOO,EAAAA,CAAAA,aAAa,CAACC,MAAAA,CAAAA,CAAAA;AACrCvD,YAAAA,GAAAA,CAAIiE,SAAS,CAACzC,MAAAA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACK,MAAM,GAAG7B,IAAIkE,OAAO,EAAA,CAAGnwC,MAAM,EAAK,GAAA,CAAA,CAAA;AAC3C,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDyH,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,SAAS+lC,MAAM,EAAA;AACX,QAAA,IAAI,CAACC,MAAM,CAAChmC,QAAQ,CAAC+lC,OAAOC,MAAM,CAAA,CAAA;AAClC,QAAA,IAAI,CAACK,MAAM,GAAGN,MAAAA,CAAOM,MAAM,CAAA;AAC3B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;QAIAmC,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACI,OAAO,IAAI,CAACnC,MAAM,GAAG,CAAA,CAAA;AACzB,KAAA,CAAA;AACA;;;QAIA2B,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,IAAI,CAAChC,MAAM,CAACloC,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;QACtB,IAAI,CAACuoC,MAAM,GAAG,CAAC,CAAA,CAAA;AACf,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDoD,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,cAAcd,KAAK,EAAA;AACf,QAAA,OAAOA,KAAM1mC,CAAAA,eAAe,CAAC,IAAI,CAAC+jC,MAAM,CAAM,IAAA,IAAI,CAACK,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AAC3E,KAAA,CAAA;AACA;;;;AAIC,QACD0D,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,gBAAgBpB,KAAK,EAAA;QACjB,OAAQA,KAAAA,CAAM7mC,QAAQ,CAAC,IAAI,CAACkkC,MAAM,CAAA,GAAI,IAAI,CAACK,MAAM,CAAA;AACrD,KAAA,CAAA;AACA;;;;AAIC,QACDwD,MAAAA,CAAAA,gBAGC,GAHDA,SAAAA,iBAAiB9D,MAAM,EAAA;AACnB,QAAA,IAAMwE,YAAY,IAAI,CAAClE,MAAM,GAAGN,OAAOM,MAAM,CAAA;QAC7C,OAAON,MAAAA,CAAOC,MAAM,CAAC/jC,eAAe,CAAC,IAAI,CAAC+jC,MAAM,CAAA,IAAMuE,SAAYA,GAAAA,SAAAA,CAAAA;AACtE,KAAA,CAAA;AACA;;;;AAIC,QACDX,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,cAAcpF,GAAG,EAAA;QACb,OAAOA,GAAAA,CAAIqF,gBAAgB,CAAC,IAAI,CAAA,CAAA;AACpC,KAAA,CAAA;AACA;;;;;;AAMC,QACDC,OAAAA,UAWC,GAXDA,SAAAA,UAAWnB,CAAAA,KAAK,EAAEvwC,MAAM,EAAA;AACpB,QAAA,IAAMoyC,gBAAgB,IAAI,CAACxE,MAAM,CAAC/jC,eAAe,CAAC0mC,KAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAIvwC,WAAWX,SAAW,EAAA;AACtBW,YAAAA,MAAAA,GAAS,IAAIsK,OAAAA,EAAAA,CAAAA;AACjB,SAAA;AACAtK,QAAAA,MAAAA,CAAO4H,QAAQ,CAAC2oC,KAAAA,CAAAA,CAAAA;QAChB,IAAI6B,aAAAA,GAAiB,IAAI,CAACnE,MAAM,GAAG,IAAI,CAACA,MAAM,EAAG;AAC7CjuC,YAAAA,MAAAA,CAAOqI,QAAQ,CAAC,IAAI,CAACulC,MAAM,EAAE3kC,SAAS,EAAA,CAAA;YACtCjJ,MAAOuI,CAAAA,QAAQ,CAAC,IAAI,CAAC0lC,MAAM,EAAE/lC,GAAG,CAAC,IAAI,CAAC0lC,MAAM,CAAA,CAAA;AAChD,SAAA;QACA,OAAO5tC,MAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDqyC,MAAAA,CAAAA,cAYC,GAZDA,SAAAA,eAAeryC,MAAM,EAAA;AACjB,QAAA,IAAIA,WAAWX,SAAW,EAAA;AACtBW,YAAAA,MAAAA,GAAS,IAAImvC,IAAAA,EAAAA,CAAAA;AACjB,SAAA;QACA,IAAI,IAAI,CAACiB,OAAO,EAAI,EAAA;;AAEhBpwC,YAAAA,MAAAA,CAAO4vC,SAAS,EAAA,CAAA;YAChB,OAAO5vC,MAAAA,CAAAA;AACX,SAAA;QACAA,MAAO0F,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,EAAE,IAAI,CAACA,MAAM,CAAA,CAAA;AACnC5tC,QAAAA,MAAAA,CAAOywC,cAAc,CAAC,IAAI,CAACxC,MAAM,CAAA,CAAA;QACjC,OAAOjuC,MAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;AAIC,QACDixC,MAAAA,CAAAA,YASC,GATDA,SAAAA,aAAajJ,MAAM,EAAA;QACf,IAAMsK,EAAAA,GAAKtK,OAAOrgB,QAAQ,CAAA;QAC1B,IAAM4qB,QAAAA,GAAWD,EAAE,CAAC,CAAA,CAAE,GAAGA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,CAAA,CAAE,GAAGA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,CAAE,CAAA,CAAA;QAC9D,IAAME,QAAAA,GAAWF,EAAE,CAAC,CAAA,CAAE,GAAGA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,CAAA,CAAE,GAAGA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,CAAE,CAAA,CAAA;QAC9D,IAAMG,QAAAA,GAAWH,EAAE,CAAC,CAAA,CAAE,GAAGA,EAAE,CAAC,CAAE,CAAA,GAAGA,EAAE,CAAC,EAAE,GAAGA,EAAE,CAAC,CAAA,CAAE,GAAGA,EAAE,CAAC,EAAG,CAAA,GAAGA,EAAE,CAAC,EAAG,CAAA,CAAA;QAChE,IAAMI,QAAAA,GAAWxtC,KAAK6D,IAAI,CAAC7D,KAAK+B,GAAG,CAACsrC,UAAUC,QAAUC,EAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAI,CAAC7E,MAAM,CAACjiC,WAAW,CAACq8B,MAAAA,CAAAA,CAAAA;AACxB,QAAA,IAAI,CAACiG,MAAM,GAAG,IAAI,CAACA,MAAM,GAAGyE,QAAAA,CAAAA;AAC5B,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACD9G,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,UAAUroC,MAAM,EAAA;AACZ,QAAA,IAAI,CAACqqC,MAAM,CAAC1lC,GAAG,CAAC3E,MAAAA,CAAAA,CAAAA;AAChB,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDusC,MAAAA,CAAAA,aAaC,GAbDA,SAAAA,cAAcS,KAAK,EAAA;QACf,IAAM1C,MAAAA,GAAS,IAAIvjC,OAAUhC,EAAAA,CAAAA,eAAe,CAACioC,KAAO,EAAA,IAAI,CAAC3C,MAAM,CAAA,CAAA;QAC/D,IAAM5kC,aAAAA,GAAgB6kC,OAAO7kC,aAAa,EAAA,CAAA;QAC1C,IAAIA,aAAAA,GAAiB,IAAI,CAACilC,MAAM,GAAG,IAAI,CAACA,MAAM,EAAG;YAC7C,IAAM9tC,MAAAA,GAAS+E,IAAK6D,CAAAA,IAAI,CAACC,aAAAA,CAAAA,CAAAA;YACzB,IAAM2pC,iBAAAA,GAAoB,CAACxyC,MAAAA,GAAS,IAAI,CAAC8tC,MAAM,IAAI,GAAA,CAAA;;;;YAInD,IAAI,CAACL,MAAM,CAAC1lC,GAAG,CAAC2lC,MAAOtlC,CAAAA,QAAQ,CAACoqC,iBAAoBxyC,GAAAA,MAAAA,CAAAA,CAAAA,CAAAA;YACpD,IAAI,CAAC8tC,MAAM,IAAI0E,iBAAAA,CAAAA;AACnB,SAAA;AACA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDxB,MAAAA,CAAAA,KAUC,GAVDA,SAAAA,MAAMxD,MAAM,EAAA;;;;AAIR,QAAA,IAAMrkC,KAAK,IAAIgB,OAAAA,EAAAA,CAAAA;AACf,QAAA,IAAMsoC,kBAAkB,IAAItoC,OAAAA,EAAAA,CAAAA;AAC5BsoC,QAAAA,eAAAA,CAAgBtqC,eAAe,CAACqlC,MAAOC,CAAAA,MAAM,EAAE,IAAI,CAACA,MAAM,CAAA,CAAE3kC,SAAS,EAAA,CAAGV,QAAQ,CAAColC,OAAOM,MAAM,CAAA,CAAA;QAC9F,IAAI,CAAC6B,aAAa,CAACxmC,EAAG1B,CAAAA,QAAQ,CAAC+lC,MAAOC,CAAAA,MAAM,CAAE1lC,CAAAA,GAAG,CAAC0qC,eAAAA,CAAAA,CAAAA,CAAAA;QAClD,IAAI,CAAC9C,aAAa,CAACxmC,EAAG1B,CAAAA,QAAQ,CAAC+lC,MAAOC,CAAAA,MAAM,CAAEvlC,CAAAA,QAAQ,CAACuqC,eAAAA,CAAAA,CAAAA,CAAAA;AACvD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDf,MAAAA,CAAAA,SAUC,GAVDA,SAAAA,UAAU1oC,KAAK,EAAA;QACX,IAAM0kC,MAAAA,GAAS,IAAIvjC,OAAAA,EAAAA,CAAUhC,eAAe,CAAC,IAAI,CAACslC,MAAM,EAAEzkC,KAAAA,CAAMykC,MAAM,CAAA,CAAA;QACtE,IAAMlkC,QAAAA,GAAWmkC,OAAO1tC,MAAM,EAAA,CAAA;AAC9B,QAAA,IAAMgyC,YAAY,IAAI,CAAClE,MAAM,GAAG9kC,MAAM8kC,MAAM,CAAA;AAC5C,QAAA,IAAIvkC,WAAWyoC,SAAW,EAAA;YACtB,OAAO,IAAI,CAACvC,SAAS,EAAA,CAAA;AACzB,SAAA;AACA,QAAA,IAAI,CAAChC,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC1lC,GAAG,CAAC2lC,MAAO5kC,CAAAA,SAAS,EAAGV,CAAAA,QAAQ,CAACmB,QAAW,GAAA,CAAA,CAAA,CAAA,CAAA;QACrE,IAAI,CAACukC,MAAM,GAAG,IAAI,CAACA,MAAM,GAAG9kC,KAAM8kC,CAAAA,MAAM,GAAGvkC,QAAAA,CAAAA;AAC3C,QAAA,OAAO,IAAI,CAAA;AACf,KAAA,CAAA;AACA;;;;AAIC,QACDI,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAO6jC,MAAM,EAAA;AACT,QAAA,OAAOA,MAAOC,CAAAA,MAAM,CAAC9jC,MAAM,CAAC,IAAI,CAAC8jC,MAAM,CAAA,IAAMD,MAAOM,CAAAA,MAAM,KAAK,IAAI,CAACA,MAAM,CAAA;AAC9E,KAAA,CAAA;AACA;;;QAIAnmC,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACI,QAAA,OAAO,IAtOFkqC,MAAAA,EAAAA,CAsOepqC,QAAQ,CAAC,IAAI,CAAA,CAAA;AACrC,KAAA,CAAA;AAvOSoqC,IAAAA,OAAAA,MAAAA,CAAAA;AAwOZ,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5ND,IAAMa,aAAW,IAAI9rB,UAAAA,EAAAA,CAAAA;AACrB,IAAM+rB,gBAAc,IAAIxoC,OAAAA,EAAAA,CAAAA;AACxB,IAAMyoC,sBAAoB,IAAIzoC,OAAAA,EAAAA,CAAAA;AAC9B,IAAI0oC,MAAO,GAAA,CAAA,CAAA;AAEX;;AAEC,IACM,IAAA,SAAMC,iBAAD,WAAL;aAAMA,SA0FE1V,CAAAA,KAA0B,EAAE1e,MAAkB,EAAA;QAA9C0e,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,QAAwB,EAAC,CAAA;AAzEtC2V,QAAAA,IAAAA,CAAAA,gBAAAA,GAAmB,EAAC,CAAA;AACpB;;AAEC,MAAA,IAAA,CACQ7sB,QAAW,GAAA,IAAI/b,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACtC;;AAEC,MAAA,IAAA,CACQme,IAAO,GAAA,IAAI1B,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACxC;;AAEC,MAAA,IAAA,CACQT,QAAW,GAAA,IAAI4iB,KAAM,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACpC;;AAEC,MAAA,IAAA,CACQxgC,KAAQ,GAAA,IAAI4B,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACnC;;AAEC,MAAA,IAAA,CACQq7B,MAAS,GAAA,IAAIr7B,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAEpC;;MAGSrF,IAAAA,CAAAA,IAAAA,GAAO,IAAIqC,OAAAA,CAAQ,CAAG,EAAA,CAAA,CAAA,CAAA;AAC/B;;AAEC,MAAA,IAAA,CACO8pC,WAAwB,EAAE,CAAA;AASlC;;MAGQ+B,IAAAA,CAAAA,WAAAA,GAAchT,QAAQ8H,YAAY,EAAA,CAAA;AAC1C;;MAGQmL,IAAAA,CAAAA,WAAAA,GAAcjT,QAAQ8H,YAAY,EAAA,CAAA;AAC1C;;AAEC,MAAA,IAAA,CACOoL,KAAQ,GAAA,IAAA,CAAA;AAChB;;AAEC,MAAA,IAAA,CACOC,UAAa,GAAA;AACnB,iDACAC,SAAW,EAAA,KAAA;AACX,yDACAH,WAAa,EAAA,KAAA;AACb,sDACAD,WAAa,EAAA,KAAA;AACb,yDACAK,YAAc,EAAA,KAAA;AAChB,SAAA,CAAA;AACA;;AAEC,MAAA,IAAA,CACgBC,aAAgB,GAAA;YAAEptB,QAAU,EAAA,IAAI/b,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAAIme,YAAAA,IAAAA,EAAM,IAAI1B,UAAAA,CAAW,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;YAAIre,KAAO,EAAA,IAAI4B,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAAG,SAAA,CAAA;AAQ/H,QAAA,IAAI,CAAC3H,IAAI,GAAI,YAAYqwC,GAAAA,MAAAA,EAAAA,CAAAA;AACzB,QAAA,IAAIzV,KAAO,EAAA;YACT,IAAI,CAACmW,YAAY,CAACnW,KAAAA,CAAAA,CAAAA;AACpB,SAAA;AACA,QAAA,IAAI1e,MAAQ,EAAA;YACV,IAAI,CAAC80B,eAAe,GAAG90B,MAAAA,CAAAA;AACzB,SAAA;QACA,IAAI0e,KAAAA,CAAM8V,KAAK,KAAKh0C,SAAW,EAAA;AAC7B,YAAA,IAAI,CAACu0C,QAAQ,CAACrW,KAAAA,CAAM8V,KAAK,CAAA,CAAA;AAC3B,SAAA;;AApGSJ,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;;;;;;;;;;;;AA8IX;;;;;MAMA3jB,MAAAA,CAAAA,WAQC,GARDA,SAAAA,YAAa/oB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;QAC1C,IAAI,IAAI,CAAC8b,QAAQ,CAAC9f,CAAC,KAAKA,CAAAA,IAAK,IAAI,CAAC8f,QAAQ,CAAC/kB,CAAC,KAAKA,KAAK,IAAI,CAAC+kB,QAAQ,CAAC9b,CAAC,KAAKA,CAAG,EAAA;AAC3E,YAAA,IAAI,CAAC8b,QAAQ,CAAC9f,CAAC,GAAGA,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC8f,QAAQ,CAAC/kB,CAAC,GAAGA,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC+kB,QAAQ,CAAC9b,CAAC,GAAGA,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC+oC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;;;;MAMAjI,MAAAA,CAAAA,SAQC,GARDA,SAAAA,UAAWrlC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACxC,QAAA,IAAIhE,CAAM,KAAA,CAAA,IAAKjF,CAAM,KAAA,CAAA,IAAKiJ,MAAM,CAAG,EAAA;AACjC,YAAA,IAAI,CAAC8b,QAAQ,CAAC9f,CAAC,IAAIA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAAC8f,QAAQ,CAAC/kB,CAAC,IAAIA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAAC+kB,QAAQ,CAAC9b,CAAC,IAAIA,CAAAA,CAAAA;AACnB,YAAA,IAAI,CAAC+oC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AACA;;;;;MAMAtkB,MAAAA,CAAAA,WAWC,GAXDA,SAAAA,YAAahpB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;QAC1C,IAAI,IAAI,CAAC+b,QAAQ,CAAC/f,CAAC,KAAKA,CAAAA,IAAK,IAAI,CAAC+f,QAAQ,CAAChlB,CAAC,KAAKA,KAAK,IAAI,CAACglB,QAAQ,CAAC/b,CAAC,KAAKA,CAAG,EAAA;AAC3E,YAAA,IAAI,CAAC+b,QAAQ,CAAC/f,CAAC,GAAGA,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAAC+f,QAAQ,CAAChlB,CAAC,GAAGA,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAACglB,QAAQ,CAAC/b,CAAC,GAAGA,CAAAA,CAAAA;AAClB,YAAA,IAAI,CAACke,IAAI,CAACzB,YAAY,CAAC,IAAI,CAACV,QAAQ,CAAA,CAAA;;YAEpC,IAAI,CAACmC,IAAI,CAACO,SAAS,EAAA,CAAA;AACnB,YAAA,IAAI,CAACsqB,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;;;;;;MAQApU,MAAAA,CAAAA,aAUC,GAVDA,SAAAA,aAAAA,CAAel5B,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAE+B,CAAS,EAAA;QACvD,IAAI,IAAI,CAACmc,IAAI,CAACliB,CAAC,KAAKA,CAAAA,IAAK,IAAI,CAACkiB,IAAI,CAACnnB,CAAC,KAAKA,CAAK,IAAA,IAAI,CAACmnB,IAAI,CAACle,CAAC,KAAKA,CAAAA,IAAK,IAAI,CAACke,IAAI,CAACnc,CAAC,KAAKA,CAAG,EAAA;AACpF,YAAA,IAAI,CAACmc,IAAI,CAACliB,CAAC,GAAGA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACkiB,IAAI,CAACnnB,CAAC,GAAGA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACmnB,IAAI,CAACle,CAAC,GAAGA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACke,IAAI,CAACnc,CAAC,GAAGA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACga,QAAQ,CAAC+E,iBAAiB,CAAC,IAAI,CAAC5C,IAAI,CAAA,CAAA;AACzC,YAAA,IAAI,CAAC6qB,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;;;;MAMApkB,MAAAA,CAAAA,QAQC,GARDA,SAAAA,SAAUlpB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;QACvC,IAAI,IAAI,CAAC7B,KAAK,CAACnC,CAAC,KAAKA,CAAAA,IAAK,IAAI,CAACmC,KAAK,CAACpH,CAAC,KAAKA,KAAK,IAAI,CAACoH,KAAK,CAAC6B,CAAC,KAAKA,CAAG,EAAA;AAClE,YAAA,IAAI,CAAC7B,KAAK,CAACnC,CAAC,GAAGA,CAAAA,CAAAA;AACf,YAAA,IAAI,CAACmC,KAAK,CAACpH,CAAC,GAAGA,CAAAA,CAAAA;AACf,YAAA,IAAI,CAACoH,KAAK,CAAC6B,CAAC,GAAGA,CAAAA,CAAAA;AACf,YAAA,IAAI,CAAC+oC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,OAOC,GAPDA,SAAAA,OAASvtC,CAAAA,CAAS,EAAEjF,CAAS,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC2D,IAAI,CAACsB,CAAC,KAAKA,CAAK,IAAA,IAAI,CAACtB,IAAI,CAAC3D,CAAC,KAAKA,CAAG,EAAA;AAC1C,YAAA,IAAI,CAAC2D,IAAI,CAACsB,CAAC,GAAGA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACtB,IAAI,CAAC3D,CAAC,GAAGA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAACgyC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDE,MAAAA,CAAAA,YAKC,GALDA,SAAAA,aAActrB,IAAgB,EAAA;AAC5B,QAAA,IAAI,CAACA,IAAI,CAAClgB,QAAQ,CAACkgB,IAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAI,CAACnC,QAAQ,CAAC+E,iBAAiB,CAAC,IAAI,CAAC5C,IAAI,CAAA,CAAA;AACzC,QAAA,IAAI,CAAC6qB,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,QAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,KAAA,CAAA;AAEA;;;;;MAMAG,MAAAA,CAAAA,OAMC,GANDA,SAAAA,QAASztC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACtC,QAAA,IAAI,CAAC7B,KAAK,CAACnC,CAAC,IAAIA,CAAAA,CAAAA;AAChB,QAAA,IAAI,CAACmC,KAAK,CAACpH,CAAC,IAAIA,CAAAA,CAAAA;AAChB,QAAA,IAAI,CAACoH,KAAK,CAAC6B,CAAC,IAAIA,CAAAA,CAAAA;AAChB,QAAA,IAAI,CAAC+oC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,QAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,KAAA,CAAA;AAEA;;;;AAIC,MACDI,OAAAA,SAOC,GAPDA,SAAAA,SAAW1tC,CAAAA,CAAS,EAAEjF,CAAS,EAAA;AAC7B,QAAA,IAAI,IAAI,CAACqkC,MAAM,CAACp/B,CAAC,KAAKA,CAAK,IAAA,IAAI,CAACo/B,MAAM,CAACrkC,CAAC,KAAKA,CAAG,EAAA;AAC9C,YAAA,IAAI,CAACqkC,MAAM,CAACp/B,CAAC,GAAGA,CAAAA,CAAAA;AAChB,YAAA,IAAI,CAACo/B,MAAM,CAACrkC,CAAC,GAAGA,CAAAA,CAAAA;AAChB,YAAA,IAAI,CAACgyC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDH,OAAAA,YA6CC,GA7CDA,SAAAA,YAAcnW,CAAAA,KAAqB,EAAE2W,YAAsB,EAAA;AACzD,QAAA,IAAQ7tB,WAAwDkX,KAAxDlX,CAAAA,QAAAA,EAAUC,WAA8CiX,KAA9CjX,CAAAA,QAAAA,EAAU5d,QAAoC60B,KAApC70B,CAAAA,KAAAA,EAAOzD,OAA6Bs4B,KAA7Bt4B,CAAAA,IAAAA,EAAMwjB,OAAuB8U,KAAvB9U,CAAAA,IAAAA,EAAM9lB,OAAiB46B,KAAjB56B,CAAAA,IAAAA,EAAMgjC,SAAWpI,KAAXoI,CAAAA,MAAAA,CAAAA;AAErD,QAAA,IAAIhjC,IAAM,EAAA;YACR,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AACd,SAAA;AACA,QAAA,IAAI0jB,QAAU,EAAA;YACZ,IAAY/mB,YAAR+mB,CAAAA,QAAAA,EAAoB/b,OAAS,CAAA,EAAA;gBAC/B,IAAI,CAACglB,WAAW,CAACjJ,QAAS9f,CAAAA,CAAC,EAAE8f,QAAS/kB,CAAAA,CAAC,EAAE+kB,QAAAA,CAAS9b,CAAC,CAAA,CAAA;aAC9C,MAAA;AACL,gBAAA,IAAI,CAAC+kB,WAAW,CAACjJ,QAAQ,CAAC,CAAA,CAAE,EAAEA,QAAQ,CAAC,CAAA,CAAE,EAAEA,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AACxD,aAAA;AACF,SAAA;AACA,QAAA,IAAIoC,IAAM,EAAA;YACR,IAAQnpB,YAAJmpB,CAAAA,IAAAA,EAAgB1B,UAAY,CAAA,EAAA;AAC9B,gBAAA,IAAI,CAAC0Y,aAAa,CAAChX,IAAAA,CAAKliB,CAAC,EAAEkiB,IAAKnnB,CAAAA,CAAC,EAAEmnB,IAAAA,CAAKle,CAAC,EAAEke,KAAKnc,CAAC,CAAA,CAAA;aAC5C,MAAA;AACL,gBAAA,IAAI,CAACmzB,aAAa,CAAChX,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AACvD,aAAA;AACF,SAAA,MAAO,IAAInC,QAAU,EAAA;YACnB,IAAM6tB,GAAAA,GAAMD,YAAe,GAAA,CAAC,CAAI,GAAA,CAAA,CAAA;YAEhC,IAAY50C,YAARgnB,CAAAA,QAAAA,EAAoB4iB,KAAO,CAAA,EAAA;AAC7B,gBAAA,IAAI,CAAC3Z,WAAW,CAACjJ,QAAAA,CAAS/f,CAAC,GAAG4tC,GAAK7tB,EAAAA,QAAAA,CAAShlB,CAAC,GAAG6yC,GAAK7tB,EAAAA,QAAAA,CAAS/b,CAAC,GAAG4pC,GAAAA,CAAAA,CAAAA;aAC7D,MAAA;AACL,gBAAA,IAAI,CAAC5kB,WAAW,CAACjJ,QAAQ,CAAC,EAAE,GAAG6tB,GAAAA,EAAK7tB,QAAQ,CAAC,EAAE,GAAG6tB,GAAAA,EAAK7tB,QAAQ,CAAC,EAAE,GAAG6tB,GAAAA,CAAAA,CAAAA;AACvE,aAAA;AACF,SAAA;AACA,QAAA,IAAIzrC,KAAO,EAAA;YACT,IAASpJ,YAALoJ,CAAAA,KAAAA,EAAiB4B,OAAS,CAAA,EAAA;gBAC5B,IAAI,CAACmlB,QAAQ,CAAC/mB,KAAMnC,CAAAA,CAAC,EAAEmC,KAAMpH,CAAAA,CAAC,EAAEoH,KAAAA,CAAM6B,CAAC,CAAA,CAAA;aAClC,MAAA;AACL,gBAAA,IAAI,CAACklB,QAAQ,CAAC/mB,KAAK,CAAC,CAAA,CAAE,EAAEA,KAAK,CAAC,CAAA,CAAE,EAAEA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AAC5C,aAAA;AACF,SAAA;AACA,QAAA,IAAIzD,IAAM,EAAA;AACR,YAAA,IAAI,CAAC6uC,OAAO,CAAC7uC,KAAKsB,CAAC,EAAEtB,KAAK3D,CAAC,CAAA,CAAA;AAC7B,SAAA;AACA,QAAA,IAAIqkC,MAAQ,EAAA;YACV,IAAUrmC,YAANqmC,CAAAA,MAAAA,EAAkBr+B,OAAS,CAAA,EAAA;AAC7B,gBAAA,IAAI,CAAC2sC,SAAS,CAACtO,OAAOp/B,CAAC,EAAEo/B,OAAOrkC,CAAC,CAAA,CAAA;aAC5B,MAAA;gBACL,IAAI,CAAC2yC,SAAS,CAACtO,MAAM,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA;AACrC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDyO,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAUC,KAAgB,EAAA;QACxBtwC,OAAQ,CAAA,IAAI,CAACqtC,QAAQ,EAAEiD,KAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAaD,KAAgB,EAAA;QAC3BpwC,UAAW,CAAA,IAAI,CAACmtC,QAAQ,EAAEiD,KAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEA;;;MAIAE,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OA5VStB,UA4VQsB,WAAW,CAAC,IAAI,CAAC9rB,IAAI,EAAE,IAAIygB,KAAAA,EAAAA,CAAAA,CAAAA;AAC9C,KAAA,CAAA;AAEA;;;MAIAsL,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACE,OAAO,IAAI,CAAC/rB,IAAI,CAAA;AAClB,KAAA,CAAA;AAEA;;MAGAgsB,MAAAA,CAAAA,iBAaC,GAbDA,SAAAA,iBAAAA,GAAAA;QACE,IAAI,IAAI,CAACpB,KAAK,EAAE;AACd,YAAA,IAAI,IAAI,CAACC,UAAU,CAACC,SAAS,EAAE;AAC7B,gBAAA,IAAI,CAACH,WAAW,CAAC5nB,OAAO,CAAC,IAAI,CAACnF,QAAQ,EAAE,IAAI,CAACoC,IAAI,EAAE,IAAI,CAAC/f,KAAK,EAAE,IAAI,CAACi9B,MAAM,CAAA,CAAA;AAC1E,gBAAA,IAAI,CAAC2N,UAAU,CAACF,WAAW,GAAG,IAAA,CAAA;AAChC,aAAA;AACA,YAAA,IAAI,CAACE,UAAU,CAACC,SAAS,GAAG,KAAA,CAAA;SACvB,MAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAACH,WAAW,CAACnR,UAAU,EAAI,EAAA;gBAClC,IAAI,CAACmR,WAAW,CAACtqB,QAAQ,EAAA,CAAA;AACzB,gBAAA,IAAI,CAACwqB,UAAU,CAACF,WAAW,GAAG,IAAA,CAAA;AAChC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;;;MAMAsB,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAI,CAACD,iBAAiB,EAAA,CAAA;QAEtB,OAAO,IAAI,CAACrB,WAAW,CAAA;AACzB,KAAA,CAAA;AACA;;;MAIAuB,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,eAAAA,GAAAA;QACE,IAAI,IAAI,CAAC91B,MAAM,EAAE;AACf,YAAA,IAAI,CAAC20B,YAAY,GAAG,IAAI,CAAC30B,MAAM,CAAC+1B,cAAc,EAAA,CAAA;YAC9C,IAAI,CAACtB,UAAU,CAACE,YAAY,GAAG,IAAI,CAACF,UAAU,CAACE,YAAY,IAAI,IAAI,CAAC30B,MAAM,CAACy0B,UAAU,CAACF,WAAW,IAAI,IAAI,CAACv0B,MAAM,CAACy0B,UAAU,CAACH,WAAW,CAAA;AACzI,SAAA;QAEA,OAAO,IAAI,CAACK,YAAY,CAAA;AAC1B,KAAA,CAAA;AAEA;;;MAIAoB,MAAAA,CAAAA,cAgBC,GAhBDA,SAAAA,cAAAA,GAAAA;QACE,IAAMxB,WAAAA,GAAc,IAAI,CAACsB,SAAS,EAAA,CAAA;QAClC,IAAMlB,YAAAA,GAAe,IAAI,CAACmB,eAAe,EAAA,CAAA;QAEzC,IAAI,IAAI,CAACrB,UAAU,CAACF,WAAW,IAAI,IAAI,CAACE,UAAU,CAACE,YAAY,EAAE;AAC/D,YAAA,IAAIA,YAAc,EAAA;AAChB,gBAAA,IAAI,CAACL,WAAW,CAACtQ,gBAAgB,CAAC2Q,YAAcJ,EAAAA,WAAAA,CAAAA,CAAAA;aAC3C,MAAA;AACL,gBAAA,IAAI,CAACD,WAAW,CAACvrC,QAAQ,CAACwrC,WAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACA,YAAA,IAAI,CAACE,UAAU,CAACH,WAAW,GAAG,IAAA,CAAA;AAC9B,YAAA,IAAI,CAACG,UAAU,CAACF,WAAW,GAAG,KAAA,CAAA;AAC9B,YAAA,IAAI,CAACE,UAAU,CAACE,YAAY,GAAG,KAAA,CAAA;AACjC,SAAA;QAEA,OAAO,IAAI,CAACL,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;;MAIA0B,MAAAA,CAAAA,aAWC,GAXDA,SAAAA,aAAAA,GAAAA;QACE,IAAMC,KAAAA,GAAQ,IAAI,CAACrB,aAAa,CAAA;AAEhC,QAAA,IAAI,IAAI,CAACH,UAAU,CAACH,WAAW,EAAE;YAC/B,IAAM5nB,GAAAA,GAAM,IAAI,CAACqpB,cAAc,EAAA,CAAA;YAE/BrpB,GAAIob,CAAAA,SAAS,CAACmO,KAAMzuB,CAAAA,QAAQ,EAAEyuB,KAAMrsB,CAAAA,IAAI,EAAEqsB,KAAAA,CAAMpsC,KAAK,CAAA,CAAA;AACrD,YAAA,IAAI,CAAC4qC,UAAU,CAACH,WAAW,GAAG,KAAA,CAAA;AAChC,SAAA;AAEA,QAAA,OAAO,IAAI,CAACM,aAAa,CAAC/qC,KAAK,CAACZ,KAAK,EAAA,CAAA;AACvC,KAAA,CAAA;AAEA;;;MAIAitC,MAAAA,CAAAA,gBAIC,GAJDA,SAAAA,gBAAAA,GAAAA;AACE,QAAA,IAAI,CAACC,cAAc,EAAA,CAAA;AAEnB,QAAA,OAAO,IAAI,CAACvB,aAAa,CAACptB,QAAQ,CAACve,KAAK,EAAA,CAAA;AAC1C,KAAA,CAAA;AAEA;;;;;MAMAmtC,MAAAA,CAAAA,gBA8BC,GA9BDA,SAAAA,iBAAkB1uC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;QAC/C,IAAMipC,YAAAA,GAAe,IAAI,CAACmB,eAAe,EAAA,CAAA;AAEzC,QAAA,IAAInB,YAAc,EAAA;;;YAGhBV,aAAYptC,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACtBmtC,YAAAA,UAAAA,CAASntC,GAAG,CAAC,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;YACtBqtC,mBAAkBrtC,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;YAE5B8tC,YAAa7M,CAAAA,SAAS,CAACmM,aAAAA,EAAaD,UAAUE,EAAAA,mBAAAA,CAAAA,CAAAA;;;AAI9CD,YAAAA,aAAAA,CAAYptC,GAAG,CAACa,CAAIusC,GAAAA,aAAAA,CAAYvsC,CAAC,EAAEjF,CAAIwxC,GAAAA,aAAAA,CAAYxxC,CAAC,EAAEiJ,CAAIuoC,GAAAA,aAAAA,CAAYvoC,CAAC,CAAA,CAAA;;AAGvEsoC,YAAAA,UAAAA,CAAS9pB,MAAM,EAAA,CAAA;AACf+pB,YAAAA,aAAAA,CAAYrnC,eAAe,CAAConC,UAAAA,CAAAA,CAAAA;;YAG5BC,aAAYvsC,CAAAA,CAAC,GAAGwsC,mBAAAA,CAAkBxsC,CAAC,KAAK,CAAIusC,GAAAA,aAAAA,CAAYvsC,CAAC,GAAGwsC,mBAAkBxsC,CAAAA,CAAC,GAAG,CAAA,CAAA;YAClFusC,aAAYxxC,CAAAA,CAAC,GAAGyxC,mBAAAA,CAAkBzxC,CAAC,KAAK,CAAIwxC,GAAAA,aAAAA,CAAYxxC,CAAC,GAAGyxC,mBAAkBzxC,CAAAA,CAAC,GAAG,CAAA,CAAA;YAClFwxC,aAAYvoC,CAAAA,CAAC,GAAGwoC,mBAAAA,CAAkBxoC,CAAC,KAAK,CAAIuoC,GAAAA,aAAAA,CAAYvoC,CAAC,GAAGwoC,mBAAkBxoC,CAAAA,CAAC,GAAG,CAAA,CAAA;YAElF,IAAI,CAAC+kB,WAAW,CAACwjB,aAAYvsC,CAAAA,CAAC,EAAEusC,aAAYxxC,CAAAA,CAAC,EAAEwxC,aAAAA,CAAYvoC,CAAC,CAAA,CAAA;SACvD,MAAA;;AAEL,YAAA,IAAI,CAAC+kB,WAAW,CAAC/oB,CAAAA,EAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AACzB,SAAA;AACF,KAAA,CAAA;AAEA;;;MAIA2qC,MAAAA,CAAAA,gBAIC,GAJDA,SAAAA,gBAAAA,GAAAA;AACE,QAAA,IAAI,CAACF,cAAc,EAAA,CAAA;QAEnB,OA/eS/B,SA+eQsB,CAAAA,WAAW,CAAC,IAAI,CAACd,aAAa,CAAChrB,IAAI,EAAE,IAAIygB,KAAAA,EAAAA,CAAAA,CAAAA;AAC5D,KAAA,CAAA;AAEA;;;;;MAMAiM,MAAAA,CAAAA,cAWC,GAXDA,SAAAA,eAAgB9uB,QAAkB,EAAEoC,IAAiB,EAAE/f,KAAe,EAAA;AACpE,QAAA,IAAI,CAACssC,cAAc,EAAA,CAAA;AACnB,QAAA,IAAI3uB,QAAU,EAAA;AACZA,YAAAA,QAAAA,CAASze,QAAQ,CAAC,IAAI,CAAC6rC,aAAa,CAACptB,QAAQ,CAAA,CAAA;AAC/C,SAAA;AACA,QAAA,IAAIoC,IAAM,EAAA;AACRA,YAAAA,IAAAA,CAAK7gB,QAAQ,CAAC,IAAI,CAAC6rC,aAAa,CAAChrB,IAAI,CAAA,CAAA;AACvC,SAAA;AACA,QAAA,IAAI/f,KAAO,EAAA;AACTA,YAAAA,KAAAA,CAAMd,QAAQ,CAAC,IAAI,CAAC6rC,aAAa,CAAC/qC,KAAK,CAAA,CAAA;AACzC,SAAA;AACF,KAAA,CAAA;AAEA;;;;;AAKC,MACD0sC,OAAAA,eAQC,GARDA,SAAAA,eAAiBC,CAAAA,EAAW,EAAE3sC,KAAe,EAAA;AAC3C2sC,QAAAA,EAAAA,CAAG1O,SAAS,CAAC,IAAI,CAACtgB,QAAQ,EAAE,IAAI,CAACoC,IAAI,EAAE,IAAI,CAAC/f,KAAK,CAAA,CAAA;QACjD,IAAI,CAAC4d,QAAQ,CAAC+E,iBAAiB,CAAC,IAAI,CAAC5C,IAAI,CAAC3gB,KAAK,EAAA,CAAGkhB,SAAS,EAAA,CAAA,CAAA;AAC3D,QAAA,IAAItgB,KAAO,EAAA;AACTA,YAAAA,KAAAA,CAAMd,QAAQ,CAAC,IAAI,CAACc,KAAK,CAAA,CAAA;AAC3B,SAAA;AACA,QAAA,IAAI,CAAC4qC,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC5B,QAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,KAAA,CAAA;AAEA;;AAEC,MACDD,MAAAA,CAAAA,QAWC,GAXDA,SAAAA,SAAUvjC,GAAY,EAAA;AACpB,QAAA,IAAI,IAAI,CAACgjC,KAAK,KAAKhjC,GAAK,EAAA;YACtB,IAAI,CAACgjC,KAAK,GAAGhjC,GAAAA,CAAAA;AACb,YAAA,IAAI,CAACA,GAAK,EAAA;gBACR,IAAI,CAAC+iC,WAAW,CAACtqB,QAAQ,EAAA,CAAA;AACzB,gBAAA,IAAI,CAACwqB,UAAU,CAACF,WAAW,GAAG,IAAA,CAAA;aACzB,MAAA;AACL,gBAAA,IAAI,CAACE,UAAU,CAACC,SAAS,GAAG,IAAA,CAAA;AAC9B,aAAA;AACA,YAAA,IAAI,CAACM,mBAAmB,EAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAyB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAACjC,KAAK,CAAA;AACnB,KAAA,CAAA;IAEA7zB,MAAAA,CAAAA,MAQC,GARDA,SAAAA,MAAAA,GAAAA;QACE,IAAM+1B,aAAAA,GAAgB,IAAI,CAACrC,gBAAgB,CAAA;AAE3CqC,QAAAA,aAAAA,CAAclvB,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACve,KAAK,EAAA,CAAA;AAC5CytC,QAAAA,aAAAA,CAAcC,SAAS,GAAG;AAAEjvC,YAAAA,CAAAA,EAAG,IAAI,CAAC+f,QAAQ,CAAC/f,CAAC;AAAEjF,YAAAA,CAAAA,EAAG,IAAI,CAACglB,QAAQ,CAAChlB,CAAC;AAAEiJ,YAAAA,CAAAA,EAAG,IAAI,CAAC+b,QAAQ,CAAC/b,CAAC;AAAC,SAAA,CAAA;AACvFgrC,QAAAA,aAAAA,CAAc7sC,KAAK,GAAG,IAAI,CAACA,KAAK,CAACZ,KAAK,EAAA,CAAA;QAEtC,OAAOytC,aAAAA,CAAAA;AACT,KAAA,CAAA;AAEA91B,IAAAA,MAAAA,CAAAA,QAmBC,GAnBDA,SAAAA,QAAAA,CAAUnN,IAAwB,EAAA;AAChC,QAAA,IAAMmjC,iBAAiC,EAAC,CAAA;AAExCA,QAAAA,cAAAA,CAAepvB,QAAQ,GAAG,IAAI/b,UAAU1C,QAAQ,CAAC0K,KAAK+T,QAAQ,CAAA,CAAA;;QAE9D,IAAI/T,IAAAA,CAAKmW,IAAI,EAAE;;YAEbgtB,cAAehtB,CAAAA,IAAI,GAAG,IAAI1B,UAAAA,CAAWzU,KAAKmW,IAAI,CAACliB,CAAC,EAAE+L,IAAKmW,CAAAA,IAAI,CAACnnB,CAAC,EAAEgR,KAAKmW,IAAI,CAACle,CAAC,EAAE+H,IAAAA,CAAKmW,IAAI,CAACnc,CAAC,CAAA,CAAA;SAClF,MAAA;AACLmpC,YAAAA,cAAAA,CAAenvB,QAAQ,GAAG,IAAI4iB,KAAM52B,CAAAA,IAAAA,CAAKkjC,SAAS,CAACjvC,CAAC,EAAE+L,IAAAA,CAAKkjC,SAAS,CAACl0C,CAAC,EAAEgR,IAAKkjC,CAAAA,SAAS,CAACjrC,CAAC,CAAA,CAAA;AAC1F,SAAA;AACAkrC,QAAAA,cAAAA,CAAe/sC,KAAK,GAAG,IAAI4B,UAAU1C,QAAQ,CAAC0K,KAAK5J,KAAK,CAAA,CAAA;QACxD,IAAI4J,IAAAA,CAAKrN,IAAI,EAAE;AACbwwC,YAAAA,cAAAA,CAAexwC,IAAI,GAAG,IAAIqC,UAAUM,QAAQ,CAAC0K,KAAKrN,IAAI,CAAA,CAAA;AACxD,SAAA;QACA,IAAIqN,IAAAA,CAAKqzB,MAAM,EAAE;AACf8P,YAAAA,cAAAA,CAAe9P,MAAM,GAAG,IAAIr+B,UAAUM,QAAQ,CAAC0K,KAAKqzB,MAAM,CAAA,CAAA;AAC5D,SAAA;QACA,IAAI,CAAC+N,YAAY,CAAC+B,cAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;IAEA91B,MAAAA,CAAAA,OAAoB,GAApBA,SAAAA,OAAmB,GAAA,EAAA,CAAA;IAEnB,MAAQq1B,CAAAA,cASP,GATD,SAAQA,cAAAA,GAAAA;QACN,IAAM7B,WAAAA,GAAc,IAAI,CAACyB,cAAc,EAAA,CAAA;AAEvC,QAAA,IAAI,IAAI,CAACtB,UAAU,CAACH,WAAW,EAAE;YAC/B,IAAM2B,KAAAA,GAAQ,IAAI,CAACrB,aAAa,CAAA;YAEhCN,WAAYxM,CAAAA,SAAS,CAACmO,KAAMzuB,CAAAA,QAAQ,EAAEyuB,KAAMrsB,CAAAA,IAAI,EAAEqsB,KAAAA,CAAMpsC,KAAK,CAAA,CAAA;AAC7D,YAAA,IAAI,CAAC4qC,UAAU,CAACH,WAAW,GAAG,KAAA,CAAA;AAChC,SAAA;AACF,KAAA,CAAA;IAEA,MAAQU,CAAAA,mBAIP,GAJD,SAAQA,mBAAAA,GAAAA;AACN,QAAA,IAAI,CAACzC,QAAQ,CAAChhC,OAAO,CAAClQ,SAAAA,CAAAA,EAAAA;AACpBA,YAAAA,CAAAA,CAAEw1C,iBAAiB,GAAG,IAAA,CAAA;AACxB,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AA3lBA;;;;;MADWzC,UAOJsB,WAMN,GAND,SAAOA,WAAa9rB,CAAAA,IAAgB,EAAEld,GAAU,EAAA;QAC9C,IAAMoqC,OAAAA,GAAU9C,UAASjrC,CAAAA,QAAQ,CAAC6gB,IAAAA,CAAAA,CAAAA;AAElCktB,QAAAA,OAAAA,CAAQ3sB,SAAS,EAAA,CAAA;QAEjB,OAAOzd,GAAAA,CAAI8f,iBAAiB,CAACsqB,OAAAA,CAAAA,CAAAA;AAC/B,KAAA,CAAA;AAbW1C,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YAuGPU,GAAAA,EAAAA,iBAAAA;AAYJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC90B,MAAM,CAAA;AACpB,aAAA;AAdA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAqBmQ,SAA2B,EAAA;gBAC9C,IAAI,CAACA,aAAa,IAAI,CAACnQ,MAAM,KAAKmQ,SAAAA,IAAa,IAAI,KAAKA,SAAW,EAAA;AACjE,oBAAA,OAAA;AACF,iBAAA;gBACA,IAAI,IAAI,CAACnQ,MAAM,EAAE;AACf,oBAAA,IAAI,CAACA,MAAM,CAACy1B,WAAW,CAAC,IAAI,CAAA,CAAA;AAC9B,iBAAA;gBACAtlB,SAAUolB,CAAAA,QAAQ,CAAC,IAAI,CAAA,CAAA;gBACvB,IAAI,CAACv1B,MAAM,GAAGmQ,SAAAA,CAAAA;gBACd,IAAI,CAAC0mB,iBAAiB,GAAG,IAAA,CAAA;AAC3B,aAAA;;;YAMIA,GAAAA,EAAAA,mBAAAA;AAOJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACpC,UAAU,CAACE,YAAY,CAAA;AACrC,aAAA;AATA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAuBnjC,GAAY,EAAA;AACjC,gBAAA,IAAI,IAAI,CAACijC,UAAU,CAACE,YAAY,KAAKnjC,GAAK,EAAA;AACxC,oBAAA,IAAI,CAACijC,UAAU,CAACE,YAAY,GAAGnjC,GAAAA,CAAAA;AAC/B,oBAAA,IAAI,CAACwjC,mBAAmB,EAAA,CAAA;AAC1B,iBAAA;AACF,aAAA;;;AA5HWZ,IAAAA,OAAAA,SAAAA,CAAAA;AA6lBZ,CAAA;;AC9iBD,IAAM2C,QAAW,GAAA,IAAItrC,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAEnC;;AAEC,IACM,IAAA,MAAMurC,iBAAD,WAAL;aAAMA,MAiCT,CAAOlzC,IAAY,EACnBe,OAAoC,EAAA;QAApCA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAAkC,EAAC,CAAA;aAD5Bf,IAAAA,GAAAA,IAAAA,CAAAA;AA/BT,QAAA,IAAA;;AAEC,MACDqsB,YAAuB,IAAIikB,SAAAA,EAAAA,CAAAA;AAC3B,QAAA,IAAA;;AAEC,MACD6C,UAAa,GAAA,CAAA,CAAA;AACb,QAAA,IAAA;;AAEC,MACDC,WAAc,GAAA,CAAA,CAAA;AAINC,QAAAA,IAAAA,CAAAA,cAAAA,GAAiB7V,QAAQ8H,YAAY,EAAA,CAAA;AAErCgO,QAAAA,IAAAA,CAAAA,UAAAA,GAAa9V,QAAQ8H,YAAY,EAAA,CAAA;AACjCiO,QAAAA,IAAAA,CAAAA,gBAAAA,GAAmB/V,QAAQ8H,YAAY,EAAA,CAAA;AACvCkO,QAAAA,IAAAA,CAAAA,oBAAAA,GAAuBhW,QAAQ8H,YAAY,EAAA,CAAA;AAC3CmO,QAAAA,IAAAA,CAAAA,iBAAAA,GAAoBjW,QAAQ8H,YAAY,EAAA,CAAA;aAGxCoO,KAAQ,GAAA,IAAA,CAAA;QAWd,IAUI3yC,aAAAA,GAAAA,OAAAA,CATF6jC,IAAAA,EAAAA,IAAAA,GAAAA,aAAAA,KAAAA,KAAAA,CAAAA,GAAO,GASL7jC,GAAAA,aAAAA,EAAAA,YAAAA,GAAAA,OAAAA,CARF8jC,GAAAA,EAAAA,GAAAA,GAAAA,YAAAA,KAAAA,KAAAA,CAAAA,GAAM,EAQJ9jC,GAAAA,YAAAA,EAAAA,YAAAA,GAAAA,OAAAA,CAPFikC,GAAAA,EAAAA,GAAAA,GAAAA,YAAAA,KAAAA,KAAAA,CAAAA,GAAM,EAOJjkC,GAAAA,YAAAA,EAAAA,eAAAA,GAAAA,OAAAA,CANFkkC,QAAAA,MAAS,GAAA,eAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,eAAA,EAAA,iBAAA,GAMPlkC,OALF4yC,CAAAA,QAAAA,EAAAA,QAAWjyB,GAAAA,iBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,cAAmB,CAACkyB,QAAQ,GAAA,iBAAA,EAAA,iBAAA,GAKrC7yC,OAJF2iB,CAAAA,QAAAA,EAAAA,QAAW,GAAA,iBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;SAAE,GAIlB3iB,iBAAAA,EAAAA,iBAAAA,GAAAA,OAAAA,CAHF4iB,UAAAA,QAAW,GAAA,iBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,GAAA,iBAAA,EAAA,mBAAA,GAGlB5iB,QAFFoyC,UAAAA,EAAAA,UAAAA,GAAAA,mBAAAA,KAAAA,KAAAA,CAAAA,GAAa,CAEXpyC,GAAAA,mBAAAA,EAAAA,oBAAAA,GAAAA,OAAAA,CADFqyC,aAAAA,WAAc,GAAA,oBAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,oBAAA,CAAA;AAGhB,QAAA,IAAMzqC,KAAQ,GAAA,IAAI49B,KAAM5iB,CAAAA,QAAQ,CAAC,CAAA,CAAE,EAAEA,QAAQ,CAAC,CAAA,CAAE,EAAEA,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAC7D,QAAA,IAAMmC,IAAO,GAAA,IAAI1B,UAAaC,EAAAA,CAAAA,YAAY,CAAC1b,KAAAA,CAAAA,CAAAA;QAE3C,IAAI,CAAC5H,OAAO,GAAG;YAAE6jC,IAAAA,EAAAA,IAAAA;YAAMC,GAAAA,EAAAA,GAAAA;YAAKG,GAAAA,EAAAA,GAAAA;YAAKC,MAAAA,EAAAA,MAAAA;YAAQ0O,QAAAA,EAAAA,QAAAA;AAAS,SAAA,CAAA;QAClD,IAAI,CAACR,UAAU,GAAGA,UAAAA,CAAAA;QAClB,IAAI,CAACC,WAAW,GAAGA,WAAAA,CAAAA;AAEnB,QAAA,IAAI,CAAC/mB,SAAS,CAACM,WAAW,CAACjJ,QAAQ,CAAC,CAAE,CAAA,EAAEA,QAAQ,CAAC,CAAA,CAAE,EAAEA,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAChE,QAAA,IAAI,CAAC2I,SAAS,CAACyQ,aAAa,CAAChX,IAAKliB,CAAAA,CAAC,EAAEkiB,IAAAA,CAAKnnB,CAAC,EAAEmnB,IAAAA,CAAKle,CAAC,EAAEke,KAAKnc,CAAC,CAAA,CAAA;QAC3D,IAAI,CAAC+pC,KAAK,GAAG,IAAA,CAAA;AACb,QAAA,IAAI,CAACG,YAAY,EAAA,CAAA;;AA1DRX,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AA0KX;;;;AAIC,MACDnC,MAAAA,CAAAA,YAIC,GAJDA,SAAAA,aAAc1kB,SAAoB,EAAA;AAChC,QAAA,IAAI,CAACA,SAAS,CAAC2kB,eAAe,GAAG3kB,UAAU2kB,eAAe,CAAA;AAC1D,QAAA,IAAI,CAAC3kB,SAAS,CAAComB,eAAe,CAACpmB,UAAU0lB,SAAS,EAAA,CAAA,CAAA;QAClD,IAAI,CAAC2B,KAAK,GAAG,IAAA,CAAA;AACf,KAAA,CAAA;AAEAI,IAAAA,MAAAA,CAAAA,iBAGC,GAHDA,SAAAA,iBAAAA,CAAmBzO,MAAe,EAAA;AAChC,QAAA,IAAI,CAACgO,cAAc,GAAGhO,MAAAA,CAAOlgC,KAAK,EAAA,CAAA;QAClC,IAAI,CAACuuC,KAAK,GAAG,IAAA,CAAA;AACf,KAAA,CAAA;IAEAK,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,GAAAA;QACE,OAAO,IAAI,CAACV,cAAc,CAAA;AAC5B,KAAA,CAAA;AAEA;;;MAIAW,MAAAA,CAAAA,aAIC,GAJDA,SAAAA,aAAAA,GAAAA;AACE,QAAA,IAAI,CAACH,YAAY,EAAA,CAAA;AAEjB,QAAA,OAAO,IAAI,CAACP,UAAU,CAACnuC,KAAK,EAAA,CAAA;AAC9B,KAAA,CAAA;AAEA;;MAGA8uC,MAAAA,CAAAA,oBAIC,GAJDA,SAAAA,oBAAAA,GAAAA;AACE,QAAA,IAAI,CAACJ,YAAY,EAAA,CAAA;AAEjB,QAAA,OAAO,IAAI,CAACJ,iBAAiB,CAACtuC,KAAK,EAAA,CAAA;AACrC,KAAA,CAAA;AAEA;;;MAIA+uC,MAAAA,CAAAA,mBAIC,GAJDA,SAAAA,mBAAAA,GAAAA;AACE,QAAA,IAAI,CAACL,YAAY,EAAA,CAAA;AAEjB,QAAA,OAAO,IAAI,CAACN,gBAAgB,CAACpuC,KAAK,EAAA,CAAA;AACpC,KAAA,CAAA;AAEA;;;MAIAgvC,MAAAA,CAAAA,0BAIC,GAJDA,SAAAA,0BAAAA,GAAAA;AAGS,QAAA,IAAA,6BAAA,CAAA;AAFP,QAAA,IAAI,CAACN,YAAY,EAAA,CAAA;AAEjB,QAAA,OAAA,CAAO,gCAAA,IAAI,CAACO,uBAAuB,KAAA,IAAA,GAAA,KAAA,CAAA,GAA5B,8BAA8BjvC,KAAK,EAAA,CAAA;AAC5C,KAAA,CAAA;AAEA;;;MAIAkvC,MAAAA,CAAAA,uBAIC,GAJDA,SAAAA,uBAAAA,GAAAA;AACE,QAAA,IAAI,CAACR,YAAY,EAAA,CAAA;AAEjB,QAAA,OAAO,IAAI,CAACL,oBAAoB,CAACruC,KAAK,EAAA,CAAA;AACxC,KAAA,CAAA;AAEA;;;MAIAmvC,MAAAA,CAAAA,8BAQC,GARDA,SAAAA,8BAAAA,GAAAA;AACE,QAAA,IAAI,CAACT,YAAY,EAAA,CAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAACU,2BAA2B,EAAE;AACrC,YAAA,IAAI,CAACA,2BAA2B,GAAG,IAAI,CAACf,oBAAoB,CAACruC,KAAK,EAAA,CAAA;YAClE,IAAI,CAACovC,2BAA2B,CAACnuB,MAAM,EAAA,CAAA;AACzC,SAAA;AAEA,QAAA,OAAO,IAAI,CAACmuB,2BAA2B,CAACpvC,KAAK,EAAA,CAAA;AAC/C,KAAA,CAAA;AAEA;;;;AAIC,MACDqvC,OAAAA,sBAEC,GAFDA,SAAAA,sBAAwB5rC,CAAAA,GAAY,EAAE6rC,KAAc,EAAA;AAClD,QAAA,OAAO7rC,IAAIs3B,gBAAgB,CAAC,IAAI,CAACsT,oBAAoB,EAAEiB,KAAAA,CAAAA,CAAAA;AACzD,KAAA,CAAA;AAEA;;;AAGC,MACDC,MAAAA,CAAAA,iBAiBC,GAjBDA,SAAAA,kBAAmB9sC,CAAS,EAAA;AAC1B,QAAA,IAAM+sC,GAAM,GAAA,IAAIhtC,OAAQ,CAAA,IAAI,CAAC+b,QAAQ,CAAC9f,CAAC,EAAE,IAAI,CAAC8f,QAAQ,CAAC/kB,CAAC,EAAEiJ,CAAAA,CAAAA,CAAAA;QAC1D,IAAMghB,GAAAA,GAAM,IAAI,CAACyrB,uBAAuB,EAAA,CAAA;QACxC,IAAMO,UAAAA,GAAa,IAAI,CAACN,8BAA8B,EAAA,CAAA;AAEtD,QAAA,IAAI,CAAC,IAAI,CAACjB,cAAc,CAAC/T,UAAU,EAAI,EAAA;AACrC,YAAA,IAAM+T,cAAiB,GAAA,IAAI,CAACA,cAAc,CAACluC,KAAK,EAAA,CAAA;AAEhDyvC,YAAAA,UAAAA,CAAWpuB,WAAW,CAAC6sB,cAAAA,CAAAA,CAAAA;YACvBzqB,GAAIhjB,CAAAA,QAAQ,CAACytC,cAAAA,CAAejtB,MAAM,EAAA,CAAA,CAAA;AACpC,SAAA;AAEA,QAAA,IAAkBwC,oBAAAA,GAAItf,CAAAA,YAAY,CAACqrC,GAA3B/sC,CAAAA,EAAGitC,KAAOjsB,iBAAVhhB,CAAAA,CAAAA,CAAAA;AACR,QAAA,IAA6BgtC,wBAAAA,GAAAA,UAAAA,CAAWtrC,YAAY,CAAC,IAAI3B,OAAQ,CAAA,CAAA,EAAG,CAAGktC,EAAAA,EAAAA,CAAAA,CAAAA,EAA/DjxC,IAAqBgxC,GAAAA,wBAAAA,CAArBhxC,CAASjF,EAAGm2C,OAASF,wBAAZj2C,CAAAA,CAAAA,CAAAA;AACjB,QAAA,IAA6Bi2C,4BAAAA,UAAWtrC,CAAAA,YAAY,CAAC,IAAI3B,QAAQ,CAAC,CAAA,EAAG,CAAC,CAAA,EAAGktC,MAAjEjxC,IAAGmxC,GAAkBH,0BAArBhxC,CAASjF,EAAGq2C,OAASJ,yBAAZj2C,CAAAA,CAAAA,CAAAA;AAEjB,QAAA,OAAO,IAAIgJ,OAAAA,CAAQ,CAACstC,IAAOF,GAAAA,IAAG,IAAK,CAAA,EAAG,CAACD,IAAOE,GAAAA,IAAG,IAAK,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3D,KAAA,CAAA;AAEA;;;AAGC,MACDE,MAAAA,CAAAA,OAKC,GALDA,SAAAA,QAASp5C,KAAiB,EAAA;QACxB,IAAI,CAAC,IAAI,CAACuwB,SAAS,CAACwlB,aAAa,EAAA,CAAG1qC,MAAM,CAACrL,KAAQ,CAAA,EAAA;AACjD,YAAA,IAAI,CAACuwB,SAAS,CAACyQ,aAAa,CAAChhC,KAAM8H,CAAAA,CAAC,EAAE9H,KAAAA,CAAM6C,CAAC,EAAE7C,KAAAA,CAAM8L,CAAC,EAAE9L,MAAM6N,CAAC,CAAA,CAAA;YAC/D,IAAI,CAAC+pC,KAAK,GAAG,IAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA;;;MAIAyB,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAAC9oB,SAAS,CAACvG,IAAI,CAAC3gB,KAAK,EAAA,CAAA;AAClC,KAAA,CAAA;AAEA;;;MAIAiwC,MAAAA,CAAAA,UAMC,GANDA,SAAAA,UAAAA,GAAAA;QACE,OAAO,QAAA,CAAA,EAAA,EACF,IAAI,CAACr0C,OAAO,EAAA;AACf2iB,YAAAA,QAAAA,EAAU,IAAI,CAACA,QAAQ,CAACve,KAAK,EAAA;AAC7Bwe,YAAAA,QAAAA,EAAU,IAAI,CAACA,QAAQ,CAACxe,KAAK,EAAA;;AAEjC,KAAA,CAAA;AAEA;;;AAGC,MACDkwC,MAAAA,CAAAA,IAmBC,GAnBDA,SAAAA,KAAMC,MAAc,EAAA;AAClB,QAAA,IACE1Q,OAOE0Q,MAPF1Q,CAAAA,IAAAA,EACAC,MAMEyQ,MANFzQ,CAAAA,GAAAA,EACAG,MAKEsQ,MALFtQ,CAAAA,GAAAA,EACA2O,WAIE2B,MAJF3B,CAAAA,QAAAA,EACA1O,SAGEqQ,MAHFrQ,CAAAA,MAAAA,EACAvhB,WAEE4xB,MAFF5xB,CAAAA,QAAAA,EACAC,WACE2xB,MADF3xB,CAAAA,QAAAA,CAAAA;QAGF,IAAI,CAACihB,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACC,GAAG,GAAGA,GAAAA,CAAAA;QACX,IAAI,CAACG,GAAG,GAAGA,GAAAA,CAAAA;QACX,IAAI,CAAC2O,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAAC1O,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACvhB,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAACC,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,QAAA,IAAI,CAACkwB,YAAY,EAAA,CAAA;AACnB,KAAA,CAAA;AAEA;;MAGAA,MAAAA,CAAAA,YAgBC,GAhBDA,SAAAA,YAAAA,GAAAA;QACE,IAAI,IAAI,CAACH,KAAK,EAAE;AACd,YAAA,IAA6C,gBAAA,IAAI,CAAC3yC,OAAO,EAAjDikC,GAAAA,GAAqC,cAArCA,GAAKC,EAAAA,MAAAA,GAAgC,aAAhCA,CAAAA,MAAAA,EAAQL,OAAwB,aAAxBA,CAAAA,IAAAA,EAAMC,MAAkB,aAAlBA,CAAAA,GAAAA,EAAK8O,WAAa,aAAbA,CAAAA,QAAAA,CAAAA;AAEhC,YAAA,IAAI,CAACJ,gBAAgB,CAACxO,WAAW,CAC/BC,GAAM9hC,GAAAA,OAAAA,EAAS+hC,MAAQL,EAAAA,IAAAA,EAAMC,GAC7B8O,EAAAA,QAAAA,KAAajyB,cAAmB,CAACkyB,QAAQ,CAAA,CAAA;AAE3C,YAAA,IAAI,CAACL,gBAAgB,CAAC/sB,WAAW,CAAC,IAAI,CAAC6sB,cAAc,CAAA,CAAA;AACrD,YAAA,IAAI,CAACI,iBAAiB,CAAC5qB,OAAO,CAAC,IAAI,CAACnF,QAAQ,EAAE,IAAI,CAACyxB,OAAO,EAAIlC,EAAAA,QAAAA,CAAAA,CAAAA;AAC3B,YAAA,IAAA,+BAAA,CAAA;AAAnC,YAAA,IAAI,CAACQ,iBAAiB,CAACjtB,WAAW,CAAC,CAAA,+BAAA,GAAA,IAAI,CAAC6F,SAAS,CAAC2lB,eAAe,EAA9B,KAAA,IAAA,GAAA,+BAAA,GAAoCxU,QAAQ6I,QAAQ,CAAA,CAAA;YACvF,IAAI,CAACiN,UAAU,CAACruC,QAAQ,CAAC,IAAI,CAACwuC,iBAAiB,CAAA,CAAErtB,MAAM,EAAA,CAAA;YACvD,IAAI,CAACotB,oBAAoB,CAACtT,gBAAgB,CAAC,IAAI,CAACqT,gBAAgB,EAAE,IAAI,CAACD,UAAU,CAAA,CAAA;YACjF,IAAI,CAACiB,2BAA2B,GAAG,IAAA,CAAA;YACnC,IAAI,CAACb,KAAK,GAAG,KAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAEA;;;;;AAKC,MACD6B,OAAAA,kBAoBC,GApBDA,SAAAA,kBAAoB7xB,CAAAA,QAAiB,EAAE9a,GAAa,EAAA;AAClD,QAAA,IAAI,CAACirC,YAAY,EAAA,CAAA;QAEjB,IAAMhyB,MAAAA,GAASjZ,GAAAA,IAAAA,IAAAA,GAAAA,GAAAA,GAAO,IAAIjB,OAAAA,EAAAA,CAAAA;QAC1B,IAAM6tC,QAAAA,GAAW,IAAI,CAACnB,uBAAuB,EAAA,CAAA;;QAG7CxyB,MAAO9e,CAAAA,GAAG,CAAC2gB,QAAS9f,CAAAA,CAAC,EAAE8f,QAAS/kB,CAAAA,CAAC,EAAE+kB,QAAAA,CAAS9b,CAAC,CAAA,CAAA;QAC7C4tC,QAASlsC,CAAAA,YAAY,CAACuY,MAAQA,EAAAA,MAAAA,CAAAA,CAAAA;;;;AAK9BA,QAAAA,MAAAA,CAAOje,CAAC,GAAG,CAACie,MAAOje,CAAAA,CAAC,GAAG,CAAA,IAAK,GAAA,GAAM,IAAI,CAACuvC,UAAU,CAAA;AACjDtxB,QAAAA,MAAAA,CAAOljB,CAAC,GAAG,CAACkjB,MAAOljB,CAAAA,CAAC,GAAG,CAAA,IAAK,GAAA,GAAM,IAAI,CAACy0C,WAAW,CAAA;;;QAGlDvxB,MAAOja,CAAAA,CAAC,GAAG,CAACia,OAAOja,CAAC,GAAG,CAAA,IAAK,GAAA,CAAA;QAE5B,OAAOia,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;;AAKC,MACD4zB,OAAAA,kBAkBC,GAlBDA,SAAAA,kBAAoB/xB,CAAAA,QAAiB,EAAE9a,GAAa,EAAA;AAClD,QAAA,IAAI,CAACirC,YAAY,EAAA,CAAA;QAEjB,IAAMhyB,MAAAA,GAASjZ,GAAAA,IAAAA,IAAAA,GAAAA,GAAAA,GAAO,IAAIjB,OAAAA,EAAAA,CAAAA;QAC1B,IAAM+tC,WAAAA,GAAc,IAAI,CAACpB,8BAA8B,EAAA,CAAA;;QAGvD,IAAMqB,IAAAA,GAAO,QAAU/xC,CAAAA,CAAC,GAAG,IAAI,CAACuvC,UAAU,GAAI,CAAI,GAAA,CAAA,CAAA;QAClD,IAAMyC,IAAAA,GAAO,QAAUj3C,CAAAA,CAAC,GAAG,IAAI,CAACy0C,WAAW,GAAI,CAAI,GAAA,CAAA,CAAA;;;AAGnD,QAAA,IAAMyC,IAAOnyB,GAAAA,QAAAA,CAAS9b,CAAC,GAAG,CAAI,GAAA,CAAA,CAAA;;QAG9Bia,MAAO9e,CAAAA,GAAG,CAAC4yC,IAAAA,EAAMC,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;QACvBH,WAAYpsC,CAAAA,YAAY,CAACuY,MAAQA,EAAAA,MAAAA,CAAAA,CAAAA;QAEjC,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AA9ZWqxB,IAAAA,aAAAA,CAAAA,MAAAA,EAAAA;;YAiEPtO,GAAAA,EAAAA,MAAAA;AAMJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC7jC,OAAO,CAAC6jC,IAAI,CAAA;AAC1B,aAAA;;;;AATC,MACD,aAAUA,IAAY,EAAA;AACpB,gBAAA,IAAI,IAAI,CAAC7jC,OAAO,CAAC6jC,IAAI,KAAKA,IAAM,EAAA;AAC9B,oBAAA,IAAI,CAAC7jC,OAAO,CAAC6jC,IAAI,GAAGA,IAAAA,CAAAA;oBACpB,IAAI,CAAC8O,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;YASI7O,GAAAA,EAAAA,KAAAA;AAMJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC9jC,OAAO,CAAC8jC,GAAG,CAAA;AACzB,aAAA;;;;AATC,MACD,aAASA,GAAW,EAAA;AAClB,gBAAA,IAAI,IAAI,CAAC9jC,OAAO,CAAC8jC,GAAG,KAAKA,GAAK,EAAA;AAC5B,oBAAA,IAAI,CAAC9jC,OAAO,CAAC8jC,GAAG,GAAGA,GAAAA,CAAAA;oBACnB,IAAI,CAAC6O,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;YASI1O,GAAAA,EAAAA,KAAAA;AAMJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACjkC,OAAO,CAACikC,GAAG,CAAA;AACzB,aAAA;;;;AATC,MACD,aAASA,GAAW,EAAA;AAClB,gBAAA,IAAI,IAAI,CAACjkC,OAAO,CAACikC,GAAG,KAAKA,GAAK,EAAA;AAC5B,oBAAA,IAAI,CAACjkC,OAAO,CAACikC,GAAG,GAAGA,GAAAA,CAAAA;oBACnB,IAAI,CAAC0O,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;YASIzO,GAAAA,EAAAA,QAAAA;AAMJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAClkC,OAAO,CAACkkC,MAAM,CAAA;AAC5B,aAAA;;;;AATC,MACD,aAAYA,MAAc,EAAA;AACxB,gBAAA,IAAI,IAAI,CAAClkC,OAAO,CAACkkC,MAAM,KAAKA,MAAQ,EAAA;AAClC,oBAAA,IAAI,CAAClkC,OAAO,CAACkkC,MAAM,GAAGA,MAAAA,CAAAA;oBACtB,IAAI,CAACyO,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;YASIC,GAAAA,EAAAA,UAAAA;AAMJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC5yC,OAAO,CAAC4yC,QAAQ,CAAA;AAC9B,aAAA;;;;AATC,MACD,aAAcA,QAAyC,EAAA;gBACrD,IAAIA,QAAAA,KAAaj3C,aAAa,IAAI,CAACqE,OAAO,CAAC4yC,QAAQ,KAAKA,QAAU,EAAA;AAChE,oBAAA,IAAI,CAAC5yC,OAAO,CAAC4yC,QAAQ,GAAGA,QAAAA,CAAAA;oBACxB,IAAI,CAACD,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;YASIhwB,GAAAA,EAAAA,UAAAA;;;MASJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC2I,SAAS,CAAC3I,QAAQ,CAACve,KAAK,EAAA,CAAA;AACtC,aAAA;;;;AAZC,MACD,aAAcrJ,KAAc,EAAA;gBAC1B,IAAI,CAAC,IAAI,CAACuwB,SAAS,CAAC3I,QAAQ,CAACvc,MAAM,CAACrL,KAAQ,CAAA,EAAA;AAC1C,oBAAA,IAAI,CAACuwB,SAAS,CAACM,WAAW,CAAC7wB,KAAAA,CAAM8H,CAAC,EAAE9H,KAAM6C,CAAAA,CAAC,EAAE7C,KAAAA,CAAM8L,CAAC,CAAA,CAAA;oBACpD,IAAI,CAAC8rC,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;YAYIoC,GAAAA,EAAAA,eAAAA;;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACzpB,SAAS,CAAC+lB,gBAAgB,EAAA,CAAA;AACxC,aAAA;;;YAMIzuB,GAAAA,EAAAA,UAAAA;AAMJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC0I,SAAS,CAAC1I,QAAQ,CAACxe,KAAK,EAAA,CAAA;AACtC,aAAA;;;;AATC,MACD,aAAcrJ,KAAY,EAAA;gBACxB,IAAI,CAAC,IAAI,CAACuwB,SAAS,CAAC1I,QAAQ,CAACxc,MAAM,CAACrL,KAAQ,CAAA,EAAA;AAC1C,oBAAA,IAAI,CAACuwB,SAAS,CAACO,WAAW,CAAC9wB,KAAAA,CAAM8H,CAAC,EAAE9H,KAAM6C,CAAAA,CAAC,EAAE7C,KAAAA,CAAM8L,CAAC,CAAA,CAAA;oBACpD,IAAI,CAAC8rC,KAAK,GAAG,IAAA,CAAA;AACf,iBAAA;AACF,aAAA;;;AArKWR,IAAAA,OAAAA,MAAAA,CAAAA;AA+ZZ,CAAA;;AC5eM,IAAM6C,uBAAuB,EAAE;AAE/B,IAAMC,kCAAkC,cAAc;AACtD,IAAMC,uCAAuC,mBAAmB;AAChE,IAAMC,uCAAuC,mBAAmB;AAChE,IAAMC,4CAA4C,wBAAwB;AAE1E,IAAMC,4BAA4B,SAAS;IAErCC,SAAY,GAAA;IACvB,oCAAuC,EAAA,8DAAA;IACvC,mCAAqC,EAAA,8DAAA;IACrC,2BAA6B,EAAA,8DAAA;IAC7B,iCAAmC,EAAA,8DAAA;IACnC,wBAA0B,EAAA,8DAAA;IAC1B,gBAAkB,EAAA,8DAAA;AACpB;;AChBA,IAAMC,MAAU,GAAA,WAAA;IACd,IAAMC,SAAAA,GAAY,IAAIC,YAAa,CAAA,CAAA,CAAA,CAAA;AACnC,IAAA,IAAMC,SAAY,GAAA,IAAIC,UAAWH,CAAAA,SAAAA,CAAUp0C,MAAM,CAAA,CAAA;AAEjD;;8CAGA,OAAO,SAASm0C,MAAAA,CAAQ5oC,GAAW,EAAA;QACjC6oC,SAAS,CAAC,EAAE,GAAG7oC,GAAAA,CAAAA;QACf,IAAM9J,CAAAA,GAAI6yC,SAAS,CAAC,CAAE,CAAA,CAAA;AAEtB,QAAA,IAAIE,IAAO,GAAC/yC,CAAK,IAAA,EAAA,GAAM;AACvB,QAAA,IAAIqF,CAAI,GAACrF,CAAK,IAAA,EAAA,GAAM;AACpB,QAAA,IAAMjE,CAAI,GAACiE,CAAK,IAAA,EAAA,GAAM;AAEtB;oCAEA,IAAIjE,IAAI,GAAK,EAAA;YACX,OAAOg3C,IAAAA,CAAAA;AACT,SAAA;2EAGA,IAAIh3C,CAAAA,GAAI,GAAK,EAAA;YACXg3C,IAAQ,IAAA,MAAA,CAAA;AACR;+DAEAA,IAAAA,IAAQ,CAAEh3C,KAAK,GAAO,GAAA,CAAA,GAAI,CAAA,KAAOiE,CAAI,GAAA,UAAA,CAAA;YAErC,OAAO+yC,IAAAA,CAAAA;AACT,SAAA;yEAGA,IAAIh3C,CAAAA,GAAI,GAAK,EAAA;YACXsJ,CAAK,IAAA,MAAA,CAAA;AACL;AACsB,+BACtB0tC,IAAQ,IAAC1tC,CAAAA,CAAAA,IAAM,GAAMtJ,GAAAA,CAAC,KAAM,CAACsJ,IAAM,GAAMtJ,GAAAA,CAAAA,GAAM,CAAA,CAAA,CAAA;YAE/C,OAAOg3C,IAAAA,CAAAA;AACT,SAAA;AAEAA,QAAAA,IAAAA,IAAQ,CAAEh3C,GAAI,GAAQ,IAAA,EAAA,GAAOsJ,CAAK,IAAA,CAAA,CAAA;AAClC;AAC8B,qCAC9B0tC,QAAQ1tC,CAAI,GAAA,CAAA,CAAA;QAEZ,OAAO0tC,IAAAA,CAAAA;AACT,KAAA,CAAA;AAEF,CAAA,EAAA,CAAA;AAEO,IAAA,mBAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,mBAAAA,CAGE9xC,GAA+B,EAAA;QAC1C,IAAIrC,MAAAA,CAAOo0C,SAAS,CAAC/xC,GAAM,CAAA,EAAA;AACzB,YAAA,IAAI,CAAC6K,IAAI,GAAG,IAAImnC,WAAYhyC,CAAAA,GAAAA,CAAAA,CAAAA;SACvB,MAAA,IAAIA,GAAO,IAAA,OAAOA,GAAQ,KAAA,QAAA,IAAYrC,OAAOo0C,SAAS,CAAC/xC,GAAItH,CAAAA,MAAM,CAAG,EAAA;YACzE,IAAMmS,IAAAA,GAAO,IAAI,CAACA,IAAI,GAAG,IAAImnC,WAAAA,CAAYhyC,IAAItH,MAAM,CAAA,CAAA;AAEnD,YAAA,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAGA,IAAI4R,IAAKnS,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACpC4R,gBAAAA,IAAI,CAAC5R,CAAE,CAAA,GAAGu4C,MAAOxxC,CAAAA,GAAG,CAAC/G,CAAE,CAAA,CAAA,CAAA;AACzB,aAAA;AACF,SAAA;;AAZS64C,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAeX7zC,IAAAA,MAAAA,CAAAA,GAIC,GAJDA,SAAAA,GAAKg0C,CAAAA,MAAyB,EAAEC,UAAkB,EAAA;AAChD,QAAA,IAAK,IAAIj5C,CAAI,GAAA,CAAA,EAAGA,IAAIg5C,MAAOv5C,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACtC,IAAI,CAAC4R,IAAI,CAAC5R,CAAAA,GAAIi5C,WAAW,GAAGV,MAAAA,CAAOS,MAAM,CAACh5C,CAAE,CAAA,CAAA,CAAA;AAC9C,SAAA;AACF,KAAA,CAAA;AAnBW64C,IAAAA,OAAAA,mBAAAA,CAAAA;AAoBZ,CAAA;;AClEM,SAASK,cAAAA,CAAgBrzC,CAAS,EAAEjF,CAAS,EAAA;AAClD,IAAA,IAAMqP,MAAS,GAAA;QAAC,CAAC,EAAA;AAAI,QAAA,EAAA;QAAI,CAAC,EAAA;QAAI,CAAC,EAAA;AAAI,QAAA,EAAA;AAAI,QAAA,EAAA;AAAI,QAAA,EAAA;QAAI,CAAC,EAAA;AAAG,KAAA,CAAA;AAEnD,IAAA,IAAK,IAAIjQ,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,CAAA,EAAGA,KAAK,CAAG,CAAA;QAC7BiQ,MAAM,CAACjQ,EAAE,IAAI6F,CAAAA,CAAAA;QACboK,MAAM,CAACjQ,CAAI,GAAA,CAAA,CAAE,IAAIY,CAAAA,CAAAA;AACnB,KAAA;IAEA,OAAOqP,MAAAA,CAAAA;AACT,CAAA;AAEA,IAAMkpC,cAAY,IAAI3Q,KAAAA,EAAAA,CAAAA;AACtB,IAAM4Q,aAAW,IAAI3Z,OAAAA,EAAAA,CAAAA;AAiBd,SAAS4Z,oBAAAA,CACdxuC,GAAY,EACZvL,MAAuB,EACvBg6C,GAAY,EACZpqC,IAAY,EACZ8R,QAAgB,EAChBu4B,OAAgB,EAChBC,OAAgB,EAAA;AAEhB,IAAA,IAAM9qC,GAAM7D,GAAAA,GAAAA,CAAAA;AACZ,IAAA,IAAM4uC,WAAWvqC,IAAO8R,GAAAA,QAAAA,CAAAA;AACxB,IAAA,IAAI04B,cAAiBxqC,GAAAA,IAAAA,CAAAA;IACrB,IAAMyqC,iBAAAA,GAAoBr6C,OAAOq6C,iBAAiB,CAAA;AAElD,IAAA,IAAIA,iBAAmB,EAAA;AACrBD,QAAAA,cAAAA,GAAiBC,iBAAkBC,CAAAA,iBAAiB,CAAC,CAAA,EAAG1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAChE,KAAA;IAEA,IAAMnhB,CAAAA,GAAIP,MAAOu6C,CAAAA,eAAe,GAAGv6C,MAAAA,CAAOu6C,eAAe,CAACC,kBAAkB,CAAC,CAAA,EAAG5qC,IAAQ,CAAA,GAAA,CAAA,CAAA;AAExFR,IAAAA,GAAAA,CAAIxH,QAAQ,CAACqyC,OAAAA,CAAAA,CAAAA;IACb7qC,GAAI5E,CAAAA,eAAe,CAAC0vC,OAASE,EAAAA,cAAAA,CAAAA,CAAAA;IAC7BhrC,GAAI5E,CAAAA,eAAe,CAACwvC,GAAKz5C,EAAAA,CAAAA,CAAAA,CAAAA;AAEzB,IAAA,IAAMk6C,0BAA6Bz6C,GAAAA,MAAAA,CAAO06C,qBAAqB,IAAI,EAAC,CAAA;AACpE,IAAA,IAAMC,kBAAqB36C,GAAAA,MAAAA,CAAO46C,sBAAsB,IAAI,EAAC,CAAA;AAC7D,IAAA,IAAM3qC,GAAM,GAAA;AAAC,QAAA,GAAA;AAAK,QAAA,GAAA;AAAK,QAAA,GAAA;AAAI,KAAA,CAAA;IAE3B,IAAI0qC,kBAAAA,CAAmBxb,OAAO,EAAE;AAC9B,QAAA,IAAMyO,SAAS,IAAItjC,OAAAA,EAAAA,CAAAA;QAEnB,IAAIqwC,kBAAAA,CAAmB/M,MAAM,EAAE;YAC7BA,MAAOlmC,CAAAA,YAAY,CAACizC,kBAAAA,CAAmB/M,MAAM,CAAA,CAAA;AAC/C,SAAA;AACA,QAAA,IAAM0J,GAAMloC,GAAAA,GAAAA,CAAItH,KAAK,EAAA,CAAGO,QAAQ,CAACulC,MAAAA,CAAAA,CAAAA;QACjC,IAAMiN,UAAAA,GAAaF,mBAAmBE,UAAU,CAAA;AAChD,QAAA,IAAMC,MAAS7qC,GAAAA,GAAAA,CAAIA,GAAG,CAAC8qC,SAAAA,GAAAA,EAAAA;YACrB,IAAMt8C,KAAAA,GAAQk8C,kBAAkB,CAACI,GAAI,CAAA,CAAA;AAErC,YAAA,IAAIt8C,KAAO,EAAA;gBACT,OAAQo8C,UAAAA,GAAap8C,MAAMwnB,QAAQ,CAACk0B,YAAY17C,KAAM67C,CAAAA,iBAAiB,CAAC,CAAA,EAAG1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AACnF,aAAA;YAEA,OAAO,CAAA,CAAA;AACT,SAAA,CAAA,CAAA;QAEAm4B,WAAUnyC,CAAAA,YAAY,CAACozC,MAAAA,CAAAA,CAAQhyC,MAAM,EAAA,CAAA;AACrCgxC,QAAAA,UAAAA,CAAS9yB,YAAY,CAAC6yB,WAAAA,CAAAA,CAAAA;QACtB,IAAMmB,GAAAA,GAAMlB,UAASjuC,CAAAA,cAAc,CAACyrC,GAAAA,CAAAA,CAAAA;QAEpCloC,GAAIhH,CAAAA,UAAU,CAACwlC,MAAQoN,EAAAA,GAAAA,CAAAA,CAAAA;AACzB,KAAA;IAEA,IAAIP,0BAAAA,CAA2Btb,OAAO,EAAE;QACtC,IAAM8b,UAAAA,GAAaR,2BAA2BQ,UAAU,CAAA;QAExD,IAAMC,cAAAA,GAAiBT,2BAA2Bl0C,CAAC,CAAA;QACnD,IAAM40C,cAAAA,GAAiBV,2BAA2Bn5C,CAAC,CAAA;QACnD,IAAM85C,cAAAA,GAAiBX,2BAA2BlwC,CAAC,CAAA;AAEnD,QAAA,IAAI2wC,cAAgB,EAAA;YAClB,IAAMn1B,UAAAA,GAAak1B,UAAaC,GAAAA,cAAAA,CAAej1B,QAAQ,CAACk0B,YAAYe,cAAeZ,CAAAA,iBAAiB,CAAC,CAAA,EAAG1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAE9GtS,YAAAA,GAAAA,CAAI7I,CAAC,GAAG6I,GAAI7I,CAAAA,CAAC,GAAGwf,UAAAA,CAAAA;AAClB,SAAA;AAEA,QAAA,IAAIo1B,cAAgB,EAAA;YAClB,IAAMp1B,WAAAA,GAAak1B,UAAaE,GAAAA,cAAAA,CAAel1B,QAAQ,CAACk0B,YAAYgB,cAAeb,CAAAA,iBAAiB,CAAC,CAAA,EAAG1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAE9GtS,YAAAA,GAAAA,CAAI9N,CAAC,GAAG8N,GAAI9N,CAAAA,CAAC,GAAGykB,WAAAA,CAAAA;AAClB,SAAA;AAEA,QAAA,IAAIq1B,cAAgB,EAAA;YAClB,IAAMr1B,WAAAA,GAAak1B,UAAaG,GAAAA,cAAAA,CAAen1B,QAAQ,CAACk0B,YAAYiB,cAAed,CAAAA,iBAAiB,CAAC,CAAA,EAAG1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAE9GtS,YAAAA,GAAAA,CAAI7E,CAAC,GAAG6E,GAAI7E,CAAAA,CAAC,GAAGwb,WAAAA,CAAAA;AAClB,SAAA;AACF,KAAA;IAEA,OAAO3W,GAAAA,CAAAA;AACT;;ACzGO,SAASisC,WAAY5zC,GAAS,EAAA;IACnC,OAAOU,KAAAA,CAAMkM,OAAO,CAAC5M,GAAO,CAAA,GAAA;AAACA,QAAAA,GAAG,CAAC,CAAE,CAAA;AAAEA,QAAAA,GAAG,CAAC,CAAE,CAAA;AAAEA,QAAAA,GAAG,CAAC,CAAE,CAAA;KAAC,GAAG;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,CAAA;AAClE,CAAA;AAEO,SAAS6zC,OAAAA,CAA6C/vC,GAAiB,EAAEmuC,MAAc,EAAA;IAC5F,IAAK,IAAIh5C,IAAI,CAAGyc,EAAAA,GAAAA,GAAM5R,IAAIpL,MAAM,EAAEO,CAAIyc,GAAAA,GAAAA,EAAKzc,CAAK,EAAA,CAAA;QAC9C6K,GAAG,CAAC7K,EAAE,GAAGg5C,MAAAA,CAAAA;AACX,KAAA;IAEA,OAAOnuC,GAAAA,CAAAA;AACT,CAAA;AAEO,SAASgwC,aAAmDhwC,CAAAA,GAAgC,EAAEpF,CAAK,EAAEC,CAAK,EAAA;AAC/G,IAAA,IAAID,KAAKC,CAAG,EAAA;QACV,IAAK,IAAI1F,IAAI,CAAGyc,EAAAA,GAAAA,GAAMhX,EAAEhG,MAAM,EAAEO,CAAIyc,GAAAA,GAAAA,EAAKzc,CAAK,EAAA,CAAA;YAC5C6K,GAAG,CAAC7K,EAAE,GAAGyF,CAAC,CAACzF,CAAE,CAAA,GAAG0F,CAAC,CAAC1F,CAAE,CAAA,CAAA;AACtB,SAAA;AACF,KAAA,MAAO,IAAIyF,CAAG,EAAA;AACZ,QAAA,IAAIoF,QAAQpF,CAAG,EAAA;AACb,YAAA,IAAK,IAAIzF,EAAI,GAAA,CAAA,EAAGA,KAAIyF,CAAEhG,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;AACjC6K,gBAAAA,GAAG,CAAC7K,EAAAA,CAAE,GAAGyF,CAAC,CAACzF,EAAE,CAAA,CAAA;AACf,aAAA;AACF,SAAA;AACF,KAAA,MAAO,IAAI0F,CAAG,EAAA;AACZ,QAAA,IAAImF,QAAQnF,CAAG,EAAA;AACb,YAAA,IAAK,IAAI1F,EAAI,GAAA,CAAA,EAAGA,KAAI0F,CAAEjG,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;AACjC6K,gBAAAA,GAAG,CAAC7K,EAAAA,CAAE,GAAG0F,CAAC,CAAC1F,EAAE,CAAA,CAAA;AACf,aAAA;AACF,SAAA;AACF,KAAA;IAEA,OAAO6K,GAAAA,CAAAA;AACT,CAAA;AAEgE,IAAAiwC,MAAA,CAAA;AAAzD,IAAMC,gCAAmDD,MAAA,GAAA,EAAA,EAAAA,MAAA,CAC7Dn3B,cAAmB,CAACq3B,sBAAsB,CAAG,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,CAAA;AAAE,CAAA,EADUF,MAE7Dn3B,CAAAA,cAAmB,CAACs3B,6BAA6B,CAAG,GAAA;AAAC,IAAA,CAAA;IAAG,CAAC,GAAA;AAAI,CAAA,EAFAH,MAG7Dn3B,CAAAA,cAAmB,CAACu3B,0BAA0B,CAAG,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,GAAA;AAAI,CAAA,EAHIJ,MAI7Dn3B,CAAAA,cAAmB,CAACw3B,wBAAwB,CAAG,GAAA;IAAC,CAAC,GAAA;AAAK,IAAA,GAAA;AAAI,CAAA,EAJGL,MAK7Dn3B,CAAAA,cAAmB,CAACy3B,2BAA2B,CAAG,GAAA;IAAC,CAAC,GAAA;AAAK,IAAA,CAAA;AAAE,CAAA,EALEN,MAM7Dn3B,CAAAA,cAAmB,CAAC03B,2BAA2B,CAAG,GAAA;IAAC,CAAC,GAAA;IAAK,CAAC,GAAA;AAAI,CAAA,EANDP,MAO7Dn3B,CAAAA,cAAmB,CAAC23B,4BAA4B,CAAG,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,CAAA;AAAE,CAAA,EAPER,MAQ7Dn3B,CAAAA,cAAmB,CAAC43B,4BAA4B,CAAG,GAAA;AAAC,IAAA,GAAA;IAAK,CAAC,GAAA;AAAI,CAAA,EARDT,MAS7Dn3B,CAAAA,cAAmB,CAAC63B,yBAAyB,CAAG,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,GAAA;AAAI,CAAA,EATGV,MAU9D,EAAA;AAEK,SAASW,kBAAmB19C,KAAa,EAAA;IAC9C,OAAO,IAAA,CAAA,GAAA,CAAA,CAAA,EAAKyG,IAAK2D,CAAAA,KAAK,CAAC3D,IAAAA,CAAKk3C,GAAG,CAAC39C,KAASyG,CAAAA,GAAAA,IAAAA,CAAKm3C,GAAG,CAAA,CAAA,CAAA;AACnD,CAAA;AAEO,SAASC,gBAAkB/1C,CAAAA,CAAS,EAAEjF,CAAS,EAAE22C,MAAc,EAAA;IACpE,IAAMtnC,MAAAA,GAASsnC,OAAO5xB,QAAQ,CAAA;AAC9B,IAAA,IAAM0lB,SAAY,GAAA,IAAIzhC,OAAQ/D,CAAAA,CAAAA,EAAGjF,CAAG,EAAA,CAAA,CAAA,CAAA;AACpC,IAAA,IAAMi7C,MAAM,IAAIjyC,OAAAA,EAAAA,CAAAA;IAEhB,IAAMihB,GAAAA,GAAM0sB,OAAOhB,8BAA8B,EAAA,CAAA;IAEjD1rB,GAAItf,CAAAA,YAAY,CAAC8/B,SAAWwQ,EAAAA,GAAAA,CAAAA,CAAAA;AAC5BA,IAAAA,GAAAA,CAAIl0C,QAAQ,CAACsI,MAAAA,CAAAA,CAAAA;IAEb,OAAO,IAAIm7B,IAAIn7B,MAAQ4rC,EAAAA,GAAAA,CAAAA,CAAAA;AACzB,CAAA;AAEO,SAASC,iBAAmBn2B,CAAAA,QAAiB,EAAEo2B,SAAiB,EAAEC,UAAkB,EAAA;AACzF,IAAA,IAAQn2C,IAAY8f,QAAZ9f,CAAAA,CAAAA,EAAGjF,IAAS+kB,QAAT/kB,CAAAA,CAAAA,EAAGiJ,IAAM8b,QAAN9b,CAAAA,CAAAA,CAAAA;AACd,IAAA,IAAMikC,KAAK,IAAIlkC,OAAAA,CAAQ/D,CAAIk2C,GAAAA,SAAAA,EAAWn7C,IAAIo7C,UAAYnyC,EAAAA,CAAAA,CAAAA,CAAAA;AACtD,IAAA,IAAMkkC,KAAK,IAAInkC,OAAAA,CAAQ/D,CAAIk2C,GAAAA,SAAAA,EAAWn7C,IAAIo7C,UAAYnyC,EAAAA,CAAAA,CAAAA,CAAAA;AACtD,IAAA,IAAMmkC,KAAK,IAAIpkC,OAAAA,CAAQ/D,CAAIk2C,GAAAA,SAAAA,EAAWn7C,IAAIo7C,UAAYnyC,EAAAA,CAAAA,CAAAA,CAAAA;AACtD,IAAA,IAAMoyC,KAAK,IAAIryC,OAAAA,CAAQ/D,CAAIk2C,GAAAA,SAAAA,EAAWn7C,IAAIo7C,UAAYnyC,EAAAA,CAAAA,CAAAA,CAAAA;IAEtD,OAAO;AACL,QAAA;YAAEikC,EAAAA,EAAAA,EAAAA;YAAIC,EAAAA,EAAAA,EAAAA;YAAIC,EAAAA,EAAAA,EAAAA;AAAG,SAAA;AACb,QAAA;AAAEF,YAAAA,EAAAA,EAAIA,GAAG1mC,KAAK,EAAA;AAAI2mC,YAAAA,EAAAA,EAAIC,GAAG5mC,KAAK,EAAA;YAAI4mC,EAAIiO,EAAAA,EAAAA;AAAG,SAAA;AAC1C,KAAA,CAAA;AACH,CAAA;AAEO,SAASC,YAAcz2C,CAAAA,CAAS,EAAEC,CAAS,EAAEy2C,OAAkB,EAAA;AAAlBA,IAAAA,IAAAA,oBAAAA,OAAU,GAAA,QAAA,CAAA;AAC5D,IAAA,OAAO33C,IAAKe,CAAAA,GAAG,CAACE,CAAAA,GAAIC,CAAKy2C,CAAAA,GAAAA,OAAAA,CAAAA;AAC3B,CAAA;AAEO,SAASC,WAAAA,CAAa32C,CAAS,EAAE42C,KAAS,EAAA;AAATA,IAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AAC9C,IAAA,IAAM9pC,IAAO/N,GAAAA,IAAAA,CAAKmJ,GAAG,CAAC,EAAI0uC,EAAAA,KAAAA,CAAAA,CAAAA;AAE1B,IAAA,OAAO73C,IAAK0D,CAAAA,KAAK,CAACzC,CAAAA,GAAI8M,IAAQA,CAAAA,GAAAA,IAAAA,CAAAA;AAChC;;AC1FO,IAAM+pC,YAAe,GAAA;IAC1BC,eAAkB,EAAA;QAChBC,MAAQ,EAAA,CAAA;QACRC,MAAQ,EAAA,CAAA;AACV,KAAA;AACA;;MAGAC,eAAAA,EAAAA,SAAAA,eAAAA,CAAiBC,QAAkC,EAAA;QAC/BA,iBAAR/qC,IAAQ+qC,GAAAA,QAAAA,CAAAA,CAAAA,EAAAA;AAClB,QAAA,IAA2B,0BAAA,GAAA,IAAI,CAACC,oBAAoB,CAACD,QAAU,EAAA,IAAI,CAACJ,eAAe,CAA3EC,EAAAA,MAAAA,GAAmB,0BAAnBA,CAAAA,MAAAA,EAAQC,SAAW,0BAAXA,CAAAA,MAAAA,CAAAA;QAChB,IAAMvtC,IAAAA,GAAO0C,IAAI,CAAC4qC,MAAO,CAAA,CAAA;QACzB,IAAMz+C,KAAAA,GAAQ6T,IAAI,CAAC6qC,MAAO,CAAA,CAAA;QAE1B,OAAO,IAAI71C,QAAQsI,IAAMnR,EAAAA,KAAAA,CAAAA,CAAAA;AAC3B,KAAA;AAEA;;AAEC,MACD6+C,oBAAAA,EAAAA,SAAAA,oBAAsBD,CAAAA,QAAkC,EAAEpyB,GAGzD,EAAA;QAIC,IAAO7U,IAAAA,GAAoBinC,aAAZE,QAAYF,GAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;AAE3B,QAAA,IAAMn5C,QAAQkS,IAASiO,KAAAA,kBAAuB,CAACm5B,IAAI,GAAG,CAClDpnC,GAAAA,IAAAA,KAASiO,kBAAuB,CAACo5B,QAAQ,GAAG,CAAA,GAC1CrnC,SAASiO,kBAAuB,CAACq5B,OAAO,GAAG,CACzCtnC,GAAAA,IAAAA,KAASiO,kBAAuB,CAACs5B,IAAI,GAAG,CAAA,GACtCvnC,SAASiO,kBAAuB,CAACu5B,IAAI,GAAIL,aAAal5B,kBAAuB,CAACq5B,OAAO,GAAG,IAAI,CAC1F,GAAA,CAAA,CAAA;AAEZ,QAAA,IAAIzyB,GAAK,EAAA;AACPA,YAAAA,GAAAA,CAAIiyB,MAAM,GAAGh5C,KAAAA,CAAAA;YACb+mB,GAAIkyB,CAAAA,MAAM,GAAGj5C,KAAQ,GAAA,CAAA,CAAA;YAErB,OAAO+mB,GAAAA,CAAAA;SACF,MAAA;YACL,OAAO;gBAAEiyB,MAAQh5C,EAAAA,KAAAA;AAAOi5C,gBAAAA,MAAAA,EAAQj5C,KAAQ,GAAA,CAAA;AAAE,aAAA,CAAA;AAC5C,SAAA;AACF,KAAA;AAEA;;MAGA25C,cAAAA,EAAAA,SAAAA,cAAAA,CAAgBR,QAAkC,EAAA;AAChD,QAAA,IAAOS,YAA6BT,GAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAZE,QAAYF,GAAAA,QAAAA,CAAAA,CAAAA,EAAAA;;QAGpC,IAAIS,YAAAA,KAAiBz5B,kBAAuB,CAACu5B,IAAI,IAAI,IAAI,CAACG,0BAA0B,CAACR,QAAW,CAAA,EAAA;YAC9F,OAAO,IAAA,CAAA;AACT,SAAA;QAEA,OAAO,IAAI,CAACQ,0BAA0B,CAACD,YAAAA,CAAAA,CAAAA;AACzC,KAAA;AAEA;;MAGAE,eAAAA,EAAAA,SAAAA,eAAAA,CAAiBX,QAAkC,EAAA;AACjD,QAAA,IAAOS,YAA6BT,GAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAZE,QAAYF,GAAAA,QAAAA,CAAAA,CAAAA,EAAAA;;QAGpC,IAAIS,YAAAA,KAAiBz5B,kBAAuB,CAACu5B,IAAI,IAAI,IAAI,CAACK,2BAA2B,CAACV,QAAW,CAAA,EAAA;YAC/F,OAAO,IAAA,CAAA;AACT,SAAA;QAEA,OAAO,IAAI,CAACU,2BAA2B,CAACH,YAAAA,CAAAA,CAAAA;AAC1C,KAAA;AAEA;;MAGAC,0BAAAA,EAAAA,SAAAA,0BAAAA,CAA4BD,YAAqC,EAAA;QAC/D,OAAO;YAACz5B,kBAAuB,CAACs5B,IAAI;YAAEt5B,kBAAuB,CAACq5B,OAAO;YAAEr5B,kBAAuB,CAAC65B,IAAI;AAAC,SAAA,CAACl6C,QAAQ,CAAC85C,YAAAA,CAAAA,CAAAA;AAChH,KAAA;AAEA;;MAGAG,2BAAAA,EAAAA,SAAAA,2BAAAA,CAA6BH,YAAqC,EAAA;QAChE,OAAO;YAACz5B,kBAAuB,CAACs5B,IAAI;YAAEt5B,kBAAuB,CAACo5B,QAAQ;YAAEp5B,kBAAuB,CAAC65B,IAAI;AAAC,SAAA,CAACl6C,QAAQ,CAAC85C,YAAAA,CAAAA,CAAAA;AACjH,KAAA;AAEA;;MAGAK,gBAAAA,EAAAA,SAAAA,gBAAAA,CAAkBd,QAAkC,EAAA;AAClD,QAAA,IAAOS,YAAgCT,GAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAfe,WAAef,GAAAA,QAAAA,CAAAA,CAAAA,EAAAA;AAEvC,QAAA,OAAOS,YAAiBz5B,KAAAA,kBAAuB,CAACu5B,IAAI,IAAI;YAACv5B,kBAAuB,CAACu5B,IAAI;YAAEv5B,kBAAuB,CAACg6B,QAAQ;YAAEh6B,kBAAuB,CAACo5B,QAAQ;AAAC,SAAA,CAACz5C,QAAQ,CAACo6C,WAAAA,CAAAA,CAAAA;AACtK,KAAA;AAEA;;MAGAE,iBAAAA,EAAAA,SAAAA,iBAAAA,CAAmBjB,QAAkC,EAAA;AACnD,QAAA,IAAOS,YAAgCT,GAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAfe,WAAef,GAAAA,QAAAA,CAAAA,CAAAA,EAAAA;AAEvC,QAAA,OAAOS,YAAiBz5B,KAAAA,kBAAuB,CAACu5B,IAAI,IAAI;YAACv5B,kBAAuB,CAACu5B,IAAI;YAAEv5B,kBAAuB,CAACm5B,IAAI;YAAEn5B,kBAAuB,CAACq5B,OAAO;AAAC,SAAA,CAAC15C,QAAQ,CAACo6C,WAAAA,CAAAA,CAAAA;AACjK,KAAA;AACF,CAAE;;ACpGK,IAAA,gBAAA,GAAA,SAAMG,iBAET,MAA+D,EACxDC,WAAmB,EAAA;SADnB7O,MAAAA,GAAAA,MAAAA,CAAAA;SACA6O,WAAAA,GAAAA,WAAAA,CAAAA;AAGV,CAAA,CAAA;AACM,IAAMC,SAA0C,GAAA,EAAG,CAAA;AACnD,IAAMC,aAAkD,GAAA,EAAG,CAAA;AAClE,IAAMC,iBAAoB,GAAA,CAAA,CAAA;AAC1B,IAAMC,gBAAmB,GAAA,KAAA,CAAA;AACzB,IAAMC,qBAAwB,GAAA,SAAA,CAAA;AAC9B,IAAMC,0BAA6B,GAAA,EAAA,CAAA;AACnC,IAAMC,cAAiB,GAAA,GAAA,CAAA;AAEvB,IAAMC,gBAAmB,GAAA,EAAA,CAAA;AACzB,IAAMC,eAAkB,GAAA,GAAA,IAAOD,gBAAAA,GAAmB,GAAE,CAAA,CAAA;AAEpD,SAAS9wC,CAAAA,CAAGgxC,EAAU,EAAEC,EAAU,EAAA;IAAI,OAAO,GAAA,GAAM,GAAMA,GAAAA,EAAAA,GAAK,GAAMD,GAAAA,EAAAA,CAAAA;AAAI,CAAA;AACxE,SAASjxC,CAAAA,CAAGixC,EAAU,EAAEC,EAAU,EAAA;IAAI,OAAO,GAAA,GAAMA,KAAK,GAAMD,GAAAA,EAAAA,CAAAA;AAAI,CAAA;AAClE,SAASE,EAAGF,EAAU,EAAA;AAAI,IAAA,OAAO,GAAMA,GAAAA,EAAAA,CAAAA;AAAI,CAAA;AAE3C;AACA;AACA,SAASG,UAAYn+C,CAAAA,CAAS,EAAEg+C,EAAU,EAAEC,EAAU,EAAA;AACpD,IAAA,OAAO,CAAC,CAACjxC,EAAEgxC,EAAIC,EAAAA,EAAAA,CAAAA,GAAMj+C,CAAI+M,GAAAA,CAAAA,CAAEixC,IAAIC,EAAE,CAAA,IAAKj+C,CAAIk+C,GAAAA,CAAAA,CAAEF,GAAE,IAAKh+C,CAAAA,CAAAA;AACrD,CAAA;AAEA;AACA,SAASo+C,QAAUp+C,CAAAA,CAAS,EAAEg+C,EAAU,EAAEC,EAAU,EAAA;IAClD,OAAO,GAAA,GAAMjxC,CAAEgxC,CAAAA,EAAAA,EAAIC,EAAMj+C,CAAAA,GAAAA,CAAAA,GAAIA,CAAI,GAAA,GAAA,GAAM+M,CAAEixC,CAAAA,EAAAA,EAAIC,EAAMj+C,CAAAA,GAAAA,CAAAA,GAAIk+C,CAAEF,CAAAA,EAAAA,CAAAA,CAAAA;AAC3D,CAAA;AAEA,SAASK,eAAAA,CAAiBC,EAAU,EAAEC,EAAU,EAAEC,EAAU,EAAEC,GAAW,EAAEC,GAAW,EAAA;IACpF,IAAIC,QAAAA,EAAUC,UAAUp/C,CAAI,GAAA,CAAA,CAAA;IAE5B,GAAG;AACDo/C,QAAAA,QAAAA,GAAWL,EAAK,GAACC,CAAAA,EAAAA,GAAKD,EAAC,IAAK,GAAA,CAAA;QAC5BI,QAAWR,GAAAA,UAAAA,CAAWS,QAAUH,EAAAA,GAAAA,EAAKC,GAAOJ,CAAAA,GAAAA,EAAAA,CAAAA;AAC5C,QAAA,IAAIK,WAAW,GAAK,EAAA;YAClBH,EAAKI,GAAAA,QAAAA,CAAAA;SACA,MAAA;YACLL,EAAKK,GAAAA,QAAAA,CAAAA;AACP,SAAA;AACF,KAAA,OAAS56C,KAAKe,GAAG,CAAC45C,YAAYhB,qBAAyB,IAAA,EAAEn+C,IAAIo+C,0BAA4B,EAAA;IAEzF,OAAOgB,QAAAA,CAAAA;AACT,CAAA;AAEA,SAASC,qBAAsBP,EAAU,EAAEQ,OAAe,EAAEL,GAAW,EAAEC,GAAW,EAAA;AAClF,IAAA,IAAK,IAAIl/C,CAAI,GAAA,CAAA,EAAGA,CAAIi+C,GAAAA,iBAAAA,EAAmB,EAAEj+C,CAAG,CAAA;QAC1C,IAAMu/C,YAAAA,GAAeX,QAASU,CAAAA,OAAAA,EAASL,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAE5C,QAAA,IAAIK,iBAAiB,GAAK,EAAA;YAAE,OAAOD,OAAAA,CAAAA;AAAS,SAAA;AAC5C,QAAA,IAAMH,QAAWR,GAAAA,UAAAA,CAAWW,OAASL,EAAAA,GAAAA,EAAKC,GAAOJ,CAAAA,GAAAA,EAAAA,CAAAA;AAEjDQ,QAAAA,OAAAA,IAAWH,QAAWI,GAAAA,YAAAA,CAAAA;AACxB,KAAA;IAEA,OAAOD,OAAAA,CAAAA;AACT,CAAA;AAEA;AACA;;;;;;IAOO,SAASE,eAAiBzR,CAAAA,EAAW,EAAEC,EAAW,EAAEiO,EAAW,EAAEwD,EAAW,EAAA;;IAKjF,IAAMpwC,EAAAA,GAAK+sC,WAAYpO,CAAAA,EAAAA,CAAGnoC,CAAC,GAAGkoC,GAAGloC,CAAC,EAAE,CAAK,CAAA,GAAA,GAAA,GAAMu2C,WAAYpO,CAAAA,EAAAA,CAAGptC,CAAC,GAAGmtC,EAAAA,CAAGntC,CAAC,EAAE,CAAK,CAAA,GAAA,GAAA,GAAMw7C,WAAYpO,CAAAA,EAAAA,CAAGnkC,CAAC,GAAGkkC,EAAGlkC,CAAAA,CAAC,EAAE,CAAA,CAAA,CAAA;IAC5G,IAAM0/B,EAAAA,GAAK6S,WAAYH,CAAAA,EAAAA,CAAGp2C,CAAC,GAAGkoC,GAAGloC,CAAC,EAAE,CAAK,CAAA,GAAA,GAAA,GAAMu2C,WAAYH,CAAAA,EAAAA,CAAGr7C,CAAC,GAAGmtC,EAAAA,CAAGntC,CAAC,EAAE,CAAK,CAAA,GAAA,GAAA,GAAMw7C,WAAYH,CAAAA,EAAAA,CAAGpyC,CAAC,GAAGkkC,EAAGlkC,CAAAA,CAAC,EAAE,CAAA,CAAA,CAAA;IAC5G,IAAM2/B,EAAAA,GAAK4S,WAAYqD,CAAAA,EAAAA,CAAG55C,CAAC,GAAGkoC,GAAGloC,CAAC,EAAE,CAAK,CAAA,GAAA,GAAA,GAAMu2C,WAAYqD,CAAAA,EAAAA,CAAG7+C,CAAC,GAAGmtC,EAAAA,CAAGntC,CAAC,EAAE,CAAK,CAAA,GAAA,GAAA,GAAMw7C,WAAYqD,CAAAA,EAAAA,CAAG51C,CAAC,GAAGkkC,EAAGlkC,CAAAA,CAAC,EAAE,CAAA,CAAA,CAAA;AAE5G,IAAA,IAAM+D,GAAMyB,GAAAA,EAAAA,GAAK,GAAMk6B,GAAAA,EAAAA,GAAK,GAAMC,GAAAA,EAAAA,CAAAA;IAElC,IAAIwU,aAAa,CAACpwC,GAAAA,CAAI,EAAE;QACtB,OAAO;YACLgE,IAAMosC,EAAAA,aAAa,CAACpwC,GAAI,CAAA;YACxB8xC,QAAU3R,EAAAA,EAAAA;AACZ,SAAA,CAAA;KACK,MAAA;AACL,QAAA,IAAM4R,UAAU,EAAE,CAAA;AAClB,QAAA,IAAIC,SAAY,GAAA,IAAA,EAAMC,WAAc,GAAA,CAAA,EAAGC,UAAa,GAAA,CAAA,CAAA;AACpD,QAAA,IAAMC,aAAgB1B,GAAAA,cAAAA,CAAAA;AAEtB,QAAA,IAAK,IAAI2B,CAAI,GAAA,CAAA,EAAGA,CAAID,GAAAA,aAAAA,EAAeC,KAAK,CAAG,CAAA;AACzC,YAAA,IAAMnQ,QAAQ,IAAIjmC,OAAAA,EAAAA,CAAAA;AAClB,YAAA,IAAMq2C,IAAOD,GAAAA,CAAAA,IAAKD,aAAAA,GAAgB,CAAA,CAAA,CAAA;YAElCD,UAAa,GAAA,CAAA,CAAA;YAEbjQ,KAAMhqC,CAAAA,CAAC,GAAG,CAAIrB,GAAAA,IAAAA,CAAKmJ,GAAG,CAAC,CAAA,GAAIsyC,MAAM,CAAKA,CAAAA,GAAAA,IAAAA,IAAQhE,EAAGp2C,CAAAA,CAAC,GAAGkoC,EAAGloC,CAAAA,CAAC,CAAI,GAAA,CAAA,IAAK,CAAA,GAAIo6C,IAAG,CAAA,GAAKz7C,KAAKmJ,GAAG,CAACsyC,MAAM,CAAMR,CAAAA,IAAAA,GAAG55C,CAAC,GAAGkoC,EAAGloC,CAAAA,CAAC,CAADA,GAAKrB,KAAKmJ,GAAG,CAACsyC,MAAM,CAAMjS,CAAAA,IAAAA,GAAGnoC,CAAC,GAAGkoC,EAAGloC,CAAAA,CAAC,CAADA,CAAAA;YACjJgqC,KAAMjvC,CAAAA,CAAC,GAAG,CAAI4D,GAAAA,IAAAA,CAAKmJ,GAAG,CAAC,CAAA,GAAIsyC,MAAM,CAAKA,CAAAA,GAAAA,IAAAA,IAAQhE,EAAGr7C,CAAAA,CAAC,GAAGmtC,EAAGntC,CAAAA,CAAC,CAAI,GAAA,CAAA,IAAK,CAAA,GAAIq/C,IAAG,CAAA,GAAKz7C,KAAKmJ,GAAG,CAACsyC,MAAM,CAAMR,CAAAA,IAAAA,GAAG7+C,CAAC,GAAGmtC,EAAGntC,CAAAA,CAAC,CAADA,GAAK4D,KAAKmJ,GAAG,CAACsyC,MAAM,CAAMjS,CAAAA,IAAAA,GAAGptC,CAAC,GAAGmtC,EAAGntC,CAAAA,CAAC,CAADA,CAAAA;YACjJivC,KAAMhmC,CAAAA,CAAC,GAAG,CAAIrF,GAAAA,IAAAA,CAAKmJ,GAAG,CAAC,CAAA,GAAIsyC,MAAM,CAAKA,CAAAA,GAAAA,IAAAA,IAAQhE,EAAGpyC,CAAAA,CAAC,GAAGkkC,EAAGlkC,CAAAA,CAAC,CAAI,GAAA,CAAA,IAAK,CAAA,GAAIo2C,IAAG,CAAA,GAAKz7C,KAAKmJ,GAAG,CAACsyC,MAAM,CAAMR,CAAAA,IAAAA,GAAG51C,CAAC,GAAGkkC,EAAGlkC,CAAAA,CAAC,CAADA,GAAKrF,KAAKmJ,GAAG,CAACsyC,MAAM,CAAMjS,CAAAA,IAAAA,GAAGnkC,CAAC,GAAGkkC,EAAGlkC,CAAAA,CAAC,CAADA,CAAAA;AAEjJ,YAAA,IAAI+1C,cAAc,IAAM,EAAA;gBACtBE,UAAct7C,IAAAA,IAAAA,CAAKmJ,GAAG,CAACkiC,KAAAA,CAAMhqC,CAAC,GAAG+5C,SAAAA,CAAU/5C,CAAC,EAAE,CAAA,CAAA,CAAA;gBAC9Ci6C,UAAct7C,IAAAA,IAAAA,CAAKmJ,GAAG,CAACkiC,KAAAA,CAAMjvC,CAAC,GAAGg/C,SAAAA,CAAUh/C,CAAC,EAAE,CAAA,CAAA,CAAA;gBAC9Ck/C,UAAct7C,IAAAA,IAAAA,CAAKmJ,GAAG,CAACkiC,KAAAA,CAAMhmC,CAAC,GAAG+1C,SAAAA,CAAU/1C,CAAC,EAAE,CAAA,CAAA,CAAA;AAChD,aAAA;YACA+1C,SAAY/P,GAAAA,KAAAA,CAAAA;YACZiQ,UAAat7C,GAAAA,IAAAA,CAAK6D,IAAI,CAACy3C,UAAAA,CAAAA,CAAAA;YACvBD,WAAeC,IAAAA,UAAAA,CAAAA;YACfH,OAAO,CAACK,EAAE,GAAG;gBACXE,aAAeJ,EAAAA,UAAAA;gBACfjQ,KAAAA,EAAAA,KAAAA;AACF,aAAA,CAAA;AAEF,SAAA;QACA,IAAMj+B,IAAAA,GAAO,IAAIisC,gBAAAA,CAAiB8B,OAASE,EAAAA,WAAAA,CAAAA,CAAAA;QAE3C7B,aAAa,CAACpwC,IAAI,GAAGgE,IAAAA,CAAAA;QAErB,OAAO;YACLA,IAAAA,EAAAA,IAAAA;YACA8tC,QAAU,EAAA,IAAI91C,QAAQmkC,EAAGloC,CAAAA,CAAC,EAAEkoC,EAAGntC,CAAAA,CAAC,EAAEmtC,EAAAA,CAAGlkC,CAAC,CAAA;AACxC,SAAA,CAAA;AACF,KAAA;AAEF,CAAA;AAEO,IAAA,UAAMs2C,iBAAD,WAAL;aAAMA,UAYE,CAAOpS,EAAW,EAAE,EAAkB,EAAE,EAAkB,EAAS0R,EAAW,EAAA;aAAvE1R,EAAAA,GAAAA,EAAAA,CAAAA;aAAoBC,EAAAA,GAAAA,EAAAA,CAAAA;aAAoBiO,EAAAA,GAAAA,EAAAA,CAAAA;aAAoBwD,EAAAA,GAAAA,EAAAA,CAAAA;aARxEW,QAGJ,GAAA;YACAR,SAAW,EAAA,CAAA;YACXS,eAAiB,EAAA,CAAA;AACnB,SAAA,CAAA;QAGA,IAA2Bb,gBAAAA,GAAAA,eAAgBzR,CAAAA,EAAAA,EAAIC,EAAIiO,EAAAA,EAAAA,EAAIwD,KAA/C7tC,IAAmB4tC,GAAAA,gBAAAA,CAAnB5tC,IAAM8tC,EAAAA,QAAAA,GAAaF,gBAAbE,CAAAA,QAAAA,CAAAA;QAEd,IAAI,CAACY,UAAU,GAAG1uC,IAAAA,CAAAA;QAClB,IAAI,CAAC8tC,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,QAAA,IAAI,CAAC5B,WAAW,GAAGlsC,IAAAA,CAAKksC,WAAW,CAAA;;AAjB1BqC,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAoBX;;;AAGC,MACDI,MAAAA,CAAAA,iBAkEC,GAlEDA,SAAAA,kBAAmBC,OAAe,EAAA;QAChC,IAAMC,UAAAA,GAAa,IAAI,CAACH,UAAU,CAAA;AAElC,QAAA,IAAIE,YAAY,CAAG,EAAA;AACjB,YAAA,OAAOC,UAAWxR,CAAAA,MAAM,CAAC,CAAA,CAAE,CAACY,KAAK,CAACzoC,KAAK,EAAGI,CAAAA,GAAG,CAAC,IAAI,CAACk4C,QAAQ,CAAA,CAAA;AAC7D,SAAA;QAEA,IAAIxD,YAAAA,CAAa,CAAIsE,GAAAA,OAAAA,EAAS,CAAI,CAAA,EAAA;AAChC,YAAA,OAAOC,UAAWxR,CAAAA,MAAM,CAACoP,cAAAA,GAAiB,EAAE,CAACxO,KAAK,CAACzoC,KAAK,EAAGI,CAAAA,GAAG,CAAC,IAAI,CAACk4C,QAAQ,CAAA,CAAA;AAC9E,SAAA;AACA,QAAA,IAAIxD,YAAauE,CAAAA,UAAAA,CAAW3C,WAAW,EAAE,CAAI,CAAA,EAAA;AAC3C,YAAA,OAAO,IAAI,CAAC/P,EAAE,CAAC3mC,KAAK,EAAA,CAAA;AACtB,SAAA;AAEA,QAAA,IAAMyoC,QAAQ,IAAIjmC,OAAAA,EAAAA,CAAAA;AAClB,QAAA,IAAM82C,aAAgBtE,GAAAA,WAAAA,CAAYqE,UAAW3C,CAAAA,WAAW,GAAG0C,OAAS,EAAA,CAAA,CAAA,CAAA;AAEpE,QAAA,IAAIX,WAAc,GAAA,IAAI,CAACO,QAAQ,CAACC,eAAe,CAAA;AAC/C,QAAA,IAAIlxC,CAAI,GAAA,IAAI,CAACixC,QAAQ,CAACR,SAAS,CAAA;QAE/B,IAAI1D,YAAAA,CAAa2D,aAAaa,aAAgB,CAAA,EAAA;AAC5C,YAAA,OAAOD,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAAA,CAAE,CAAC0gC,KAAK,CAACzoC,KAAK,EAAGI,CAAAA,GAAG,CAAC,IAAI,CAACk4C,QAAQ,CAAA,CAAA;AAC7D,SAAA;AAEA,QAAA,IAAIiB,IAAO,GAAA,IAAA,CAAA;AACX,QAAA,IAAI9E,GAAM,GAAA,CAAA,CAAA;AAEV,QAAA,IAAI6E,gBAAgBb,WAAa,EAAA;AAC/BhE,YAAAA,GAAAA,GAAM,CAAC,CAAA,CAAA;AACT,SAAA;AAEA,QAAA,MAAO8E,IAAM,CAAA;AACX,YAAA,IAAID,iBAAiBb,WAAa,EAAA;gBAChC,IAAI1wC,CAAAA,KAAMkvC,iBAAiB,CAAG,EAAA;oBAC5BxO,KAAMhqC,CAAAA,CAAC,GAAG46C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC0gC,KAAK,CAAChqC,CAAC,CAAA;oBACtCgqC,KAAMjvC,CAAAA,CAAC,GAAG6/C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC0gC,KAAK,CAACjvC,CAAC,CAAA;oBACtCivC,KAAMhmC,CAAAA,CAAC,GAAG42C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC0gC,KAAK,CAAChmC,CAAC,CAAA;AAEtC,oBAAA,MAAA;AACF,iBAAA;gBACA,IAAI62C,aAAAA,GAAgBb,cAAcY,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAI,GAAA,CAAA,CAAE,CAAC+wC,aAAa,EAAE;AACxE,oBAAA,IAAMU,WAAc,GAACF,CAAAA,aAAAA,GAAgBb,WAAU,IAAKY,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAAA,GAAI,CAAE,CAAA,CAAC+wC,aAAa,CAAA;AAE1FrQ,oBAAAA,KAAAA,CAAMhqC,CAAC,GAAG46C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC0gC,KAAK,CAAChqC,CAAC,GAAG,CAAC46C,WAAWxR,MAAM,CAAC9/B,CAAI,GAAA,CAAA,CAAE,CAAC0gC,KAAK,CAAChqC,CAAC,GAAG46C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAAA,CAAE,CAAC0gC,KAAK,CAAChqC,CAAC,IAAI+6C,WAAAA,CAAAA;AAC7G/Q,oBAAAA,KAAAA,CAAMjvC,CAAC,GAAG6/C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC0gC,KAAK,CAACjvC,CAAC,GAAG,CAAC6/C,WAAWxR,MAAM,CAAC9/B,CAAI,GAAA,CAAA,CAAE,CAAC0gC,KAAK,CAACjvC,CAAC,GAAG6/C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAAA,CAAE,CAAC0gC,KAAK,CAACjvC,CAAC,IAAIggD,WAAAA,CAAAA;AAC7G/Q,oBAAAA,KAAAA,CAAMhmC,CAAC,GAAG42C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC0gC,KAAK,CAAChmC,CAAC,GAAG,CAAC42C,WAAWxR,MAAM,CAAC9/B,CAAI,GAAA,CAAA,CAAE,CAAC0gC,KAAK,CAAChmC,CAAC,GAAG42C,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAAA,CAAE,CAAC0gC,KAAK,CAAChmC,CAAC,IAAI+2C,WAAAA,CAAAA;AAE7G,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;AACA,YAAA,IAAI/E,GAAM,GAAA,CAAA,IAAK1sC,CAAKkvC,GAAAA,cAAAA,GAAiB,CAAI,EAAA;gBACvClvC,CAAK0sC,IAAAA,GAAAA,CAAAA;AACLgE,gBAAAA,WAAAA,IAAezD,YAAYqE,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC+wC,aAAa,EAAE,CAAA,CAAA,CAAA;AACjE,aAAA,MAAO,IAAIrE,GAAAA,GAAM,CAAK1sC,IAAAA,CAAAA,GAAI,CAAG,EAAA;AAC3B0wC,gBAAAA,WAAAA,IAAezD,YAAYqE,UAAWxR,CAAAA,MAAM,CAAC9/B,CAAE,CAAA,CAAC+wC,aAAa,EAAE,CAAA,CAAA,CAAA;gBAC/D/wC,CAAK0sC,IAAAA,GAAAA,CAAAA;aACA,MAAA;gBACL8E,IAAO,GAAA,KAAA,CAAA;AACT,aAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACP,QAAQ,CAACR,SAAS,GAAGzwC,CAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACixC,QAAQ,CAACC,eAAe,GAAGR,WAAAA,CAAAA;AAEhChQ,QAAAA,KAAAA,CAAMroC,GAAG,CAAC,IAAI,CAACk4C,QAAQ,CAAA,CAAA;QAEvB,OAAO7P,KAAAA,CAAAA;AACT,KAAA,CAAA;AA1FWsQ,IAAAA,OAAAA,UAAAA,CAAAA;AA4FZ,CAAA,EAAA,CAAA;AAEM,IAAA,UAAMU,iBAAD,WAAL;aAAMA,UAIE,CAAO9S,EAAc,EAAE,EAAqB,EAAE,EAAqB,EAAS0R,EAAc,EAAA;aAAnF1R,EAAAA,GAAAA,EAAAA,CAAAA;aAAuBC,EAAAA,GAAAA,EAAAA,CAAAA;aAAuBiO,EAAAA,GAAAA,EAAAA,CAAAA;aAAuBwD,EAAAA,GAAAA,EAAAA,CAAAA;AAHjFqB,QAAAA,IAAAA,CAAAA,IAAAA,GAAO,IAAIz6B,UAAAA,EAAAA,CAAAA;QAIjB,IAAI,CAACy3B,WAAW,GAAG,CAAA,CAAA;;AALV+C,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAQX;;;AAGC,MACDN,MAAAA,CAAAA,iBAYC,GAZDA,SAAAA,kBAAmBC,OAAe,EAAA;AAChC,QAAA,IAAIA,YAAY,CAAG,EAAA;YACjB,OAAO,IAAI,CAACM,IAAI,CAAC55C,QAAQ,CAAC,IAAI,CAAC6mC,EAAE,CAAA,CAAA;AACnC,SAAA;QAEA,IAAImO,YAAAA,CAAa,CAAIsE,GAAAA,OAAAA,EAAS,CAAI,CAAA,EAAA;YAChC,OAAO,IAAI,CAACM,IAAI,CAAC55C,QAAQ,CAAC,IAAI,CAAC8mC,EAAE,CAAA,CAAA;AACnC,SAAA;AAEA+S,QAAAA,eAAAA,CAAgBC,SAAS,CAAC,IAAI,CAACF,IAAI,EAAE,IAAI,CAAC/S,EAAE,EAAE,IAAI,CAACC,EAAE,EAAEwS,OAAAA,CAAAA,CAAAA;QAEvD,OAAO,IAAI,CAACM,IAAI,CAAA;AAClB,KAAA,CAAA;AAxBWD,IAAAA,OAAAA,UAAAA,CAAAA;AA0BZ,CAAA,EAAA,CAAA;AAEM,IAAA,YAAMI,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,CAYEC,oBAA6B,EAAEC,oBAA6B,EAAEC,SAAkB,EAAEC,SAAkB,EAAA;aAXzGC,WAAc,GAAA,KAAA,CAAA;AAGdC,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,IAAI36C,OAAAA,EAAAA,CAAAA;AACf46C,QAAAA,IAAAA,CAAAA,QAAAA,GAAW,IAAI56C,OAAAA,EAAAA,CAAAA;aACf66C,QAAW,GAAA,KAAA,CAAA;aACXC,UAAa,GAAA,KAAA,CAAA;AAMnB,QAAA,IAAI,CAACC,aAAa,GAAG,IAAIl6C,KAAM62C,CAAAA,gBAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAI4C,yBAAyBviD,SAAawiD,IAAAA,oBAAAA,KAAyBxiD,aAAayiD,SAAcziD,KAAAA,SAAAA,IAAa0iD,cAAc1iD,SAAW,EAAA;AAClI,YAAA,IAAI,CAAC4iD,QAAQ,CAAC17C,CAAC,GAAGq7C,oBAAAA,CAAAA;AAClB,YAAA,IAAI,CAACK,QAAQ,CAAC3gD,CAAC,GAAGugD,oBAAAA,CAAAA;AAClB,YAAA,IAAI,CAACK,QAAQ,CAAC37C,CAAC,GAAGu7C,SAAAA,CAAAA;AAClB,YAAA,IAAI,CAACI,QAAQ,CAAC5gD,CAAC,GAAGygD,SAAAA,CAAAA;YAClB,IAAI,CAACI,QAAQ,GAAG,IAAA,CAAA;AAClB,SAAA,MAAO,IAAIP,oBAAAA,KAAyBviD,SAAawiD,IAAAA,oBAAAA,KAAyBxiD,SAAW,EAAA;AACnF,YAAA,IAAI,CAAC4iD,QAAQ,CAAC17C,CAAC,GAAG,CAAI,GAAA,CAAA,CAAA;AACtB,YAAA,IAAI,CAAC07C,QAAQ,CAAC3gD,CAAC,GAAGsgD,oBAAAA,CAAAA;AAClB,YAAA,IAAI,CAACM,QAAQ,CAAC37C,CAAC,GAAG,CAAI,GAAA,CAAA,CAAA;AACtB,YAAA,IAAI,CAAC27C,QAAQ,CAAC5gD,CAAC,GAAGugD,oBAAAA,CAAAA;SACb,MAAA;YACL,IAAI,CAACO,UAAU,GAAG,IAAA,CAAA;AACpB,SAAA;;AA5BST,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AA+BX17B,IAAAA,MAAAA,CAAAA,QAmBC,GAnBDA,SAAAA,QAAAA,CAAU1f,CAAS,EAAA;QACjB,IAAI,IAAI,CAAC67C,UAAU,EAAE;YACnB,OAAO,CAAA,CAAA;AACT,SAAA;QACA,IAAI,IAAI,CAACH,QAAQ,CAAC17C,CAAC,KAAK,IAAI,CAAC07C,QAAQ,CAAC3gD,CAAC,IAAI,IAAI,CAAC4gD,QAAQ,CAAC37C,CAAC,KAAK,IAAI,CAAC27C,QAAQ,CAAC5gD,CAAC,EAAE;YAC9E,OAAOiF,CAAAA,CAAAA;AACT,SAAA;QACA,IAAIA,CAAAA,KAAM,CAAKA,IAAAA,CAAAA,KAAM,CAAG,EAAA;YACtB,OAAOA,CAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC47C,QAAQ,EAAE;AAClB,YAAA,OAAO,IAAI,CAACG,iBAAiB,CAAC,CAAA,EAAG,IAAI,CAACL,QAAQ,CAAC3gD,CAAC,EAAE,IAAI,CAAC4gD,QAAQ,CAAC5gD,CAAC,EAAE,CAAGiF,EAAAA,CAAAA,CAAAA,CAAAA;AACxE,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACy7C,WAAW,EAAE;AACrB,YAAA,IAAI,CAACO,UAAU,EAAA,CAAA;AACjB,SAAA;AACA,QAAA,IAAM9jD,QAAQ4gD,UAAW,CAAA,IAAI,CAACmD,QAAQ,CAACj8C,CAAI,CAAA,EAAA,IAAI,CAAC07C,QAAQ,CAAC3gD,CAAC,EAAE,IAAI,CAAC4gD,QAAQ,CAAC5gD,CAAC,CAAA,CAAA;QAE3E,OAAO7C,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ6jD,iBASP,GATD,SAAQA,iBAAAA,CAAmBG,MAAc,EAAEC,SAAiB,EAAEC,SAAiB,EAAEC,IAAY,EAAE1hD,CAAS,EAAA;;AAEtG,QAAA,IAAM2hD,MAAO,GAAM3hD,GAAAA,CAAAA,CAAAA;AACnB,QAAA,IAAM4hD,OAAOD,GAAMA,GAAAA,GAAAA,CAAAA;AACnB,QAAA,IAAME,OAAOD,IAAOD,GAAAA,GAAAA,CAAAA;AACpB,QAAA,IAAMG,KAAK9hD,CAAIA,GAAAA,CAAAA,CAAAA;AACf,QAAA,IAAM+hD,KAAKD,EAAK9hD,GAAAA,CAAAA,CAAAA;QAEhB,OAAOuhD,MAAAA,GAASM,IAAOL,GAAAA,SAAAA,GAAYI,IAAO5hD,GAAAA,CAAAA,GAAI,MAAMyhD,SAAYE,GAAAA,GAAAA,GAAMG,EAAK,GAAA,GAAA,GAAMJ,IAAOK,GAAAA,EAAAA,CAAAA;AAC1F,KAAA,CAAA;IAEA,MAAQC,CAAAA,gBAIP,GAJD,SAAQA,gBAAAA,GAAAA;AACN,QAAA,IAAK,IAAIxiD,CAAI,GAAA,CAAA,EAAGA,CAAIs+C,GAAAA,gBAAAA,EAAkB,EAAEt+C,CAAG,CAAA;AACzC,YAAA,IAAI,CAAC2hD,aAAa,CAAC3hD,EAAE,GAAG2+C,UAAAA,CAAW3+C,IAAIu+C,eAAiB,EAAA,IAAI,CAACgD,QAAQ,CAAC17C,CAAC,EAAE,IAAI,CAAC27C,QAAQ,CAAC37C,CAAC,CAAA,CAAA;AAC1F,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQi8C,QAsBP,GAtBD,SAAQA,QAAAA,CAAUhD,EAAU,EAAA;AAC1B,QAAA,IAAM6C,gBAAgB,IAAI,CAACA,aAAa,EAAEc,aAAanE,gBAAmB,GAAA,CAAA,CAAA;QAC1E,IAAIoE,aAAAA,GAAgB,GAAGC,aAAgB,GAAA,CAAA,CAAA;QAEvC,MAAOA,aAAAA,KAAkBF,cAAcd,aAAa,CAACgB,cAAc,IAAI7D,EAAAA,EAAI,EAAE6D,aAAe,CAAA;YAC1FD,aAAiBnE,IAAAA,eAAAA,CAAAA;AACnB,SAAA;QACA,EAAEoE,aAAAA,CAAAA;;AAGF,QAAA,IAAMC,OAAO,CAAC9D,KAAK6C,aAAa,CAACgB,cAAc,KAAKhB,aAAa,CAACgB,aAAgB,GAAA,CAAA,CAAE,GAAGhB,aAAa,CAACgB,cAAc,CAAD,CAAA;QAClH,IAAME,SAAAA,GAAYH,gBAAgBE,IAAOrE,GAAAA,eAAAA,CAAAA;AAEzC,QAAA,IAAMuE,YAAelE,GAAAA,QAAAA,CAASiE,SAAW,EAAA,IAAI,CAACtB,QAAQ,CAAC17C,CAAC,EAAE,IAAI,CAAC27C,QAAQ,CAAC37C,CAAC,CAAA,CAAA;AAEzE,QAAA,IAAIi9C,gBAAgB5E,gBAAkB,EAAA;AACpC,YAAA,OAAOmB,oBAAqBP,CAAAA,EAAAA,EAAI+D,SAAW,EAAA,IAAI,CAACtB,QAAQ,CAAC17C,CAAC,EAAE,IAAI,CAAC27C,QAAQ,CAAC37C,CAAC,CAAA,CAAA;AAC7E,SAAA;AAAE,QAAA,IAAIi9C,iBAAiB,GAAK,EAAA;YAC1B,OAAOD,SAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,OAAOhE,eAAgBC,CAAAA,EAAAA,EAAI4D,aAAeA,EAAAA,aAAAA,GAAgBnE,iBAAiB,IAAI,CAACgD,QAAQ,CAAC17C,CAAC,EAAE,IAAI,CAAC27C,QAAQ,CAAC37C,CAAC,CAAA,CAAA;AAC7G,KAAA,CAAA;IAEA,MAAQg8C,CAAAA,UAKP,GALD,SAAQA,UAAAA,GAAAA;QACN,IAAI,CAACP,WAAW,GAAG,IAAA,CAAA;QACnB,IAAI,IAAI,CAACC,QAAQ,CAAC17C,CAAC,KAAK,IAAI,CAAC07C,QAAQ,CAAC3gD,CAAC,IAAI,IAAI,CAAC4gD,QAAQ,CAAC37C,CAAC,KAAK,IAAI,CAAC27C,QAAQ,CAAC5gD,CAAC,EAAE;AAC9E,YAAA,IAAI,CAAC4hD,gBAAgB,EAAA,CAAA;AACvB,SAAA;AACF,KAAA,CAAA;AAlGWvB,IAAAA,OAAAA,YAAAA,CAAAA;AAoGZ,CAAA,EAAA,CAAA;AAEM,SAAS8B,gBAAAA,CAAkBC,YAAsC,EAAEC,aAAuC,EAAA;;AAO/G,IAAA,IAA2BC,iBAAAA,GAAAA,gBAAAA,CAAiBF,YAAcC,EAAAA,aAAAA,EAAe,OAAjEnV,EAAmBoV,GAAAA,iBAAAA,CAAnBpV,EAAIC,EAAAA,EAAAA,GAAemV,kBAAfnV,EAAIC,EAAAA,EAAAA,GAAWkV,iBAAXlV,CAAAA,EAAAA,EAAIiO,KAAOiH,iBAAPjH,CAAAA,EAAAA,CAAAA;IAEpBzpC,WAAYw7B,CAAAA,EAAAA,CAAAA,CAAAA;IACZx7B,WAAYypC,CAAAA,EAAAA,CAAAA,CAAAA;AACZ,IAAA,IAAMkH,YAAelH,GAAAA,EAAAA,CAAGp2C,CAAC,GAAGioC,GAAGjoC,CAAC,CAAA;AAChC,IAAA,IAAMu9C,aAAgBnH,GAAAA,EAAAA,CAAGr7C,CAAC,GAAGktC,GAAGltC,CAAC,CAAA;AACjC,IAAA,IAAIyiD,EAAIle,EAAAA,EAAAA,CAAAA;IACR,IAAIme,EAAAA,GAAKlH,WAAY,CAACrO,CAAAA,EAAAA,CAAGloC,CAAC,GAAGioC,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAc,EAAA,CAAA,CAAA,CAAA;IACnD,IAAIje,EAAAA,GAAKkX,WAAY,CAACpO,CAAAA,EAAAA,CAAGnoC,CAAC,GAAGioC,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAc,EAAA,CAAA,CAAA,CAAA;IAEnD,IAAIjH,YAAAA,CAAakH,eAAe,CAAI,CAAA,EAAA;AAClCC,QAAAA,EAAAA,GAAKle,EAAKoe,GAAAA,GAAAA,CAAAA;KACL,MAAA;QACLF,EAAKjH,GAAAA,WAAAA,CAAY,CAACrO,EAAGntC,CAAAA,CAAC,GAAGktC,EAAGltC,CAAAA,CAAC,IAAIwiD,aAAe,EAAA,CAAA,CAAA,CAAA;QAChDje,EAAKiX,GAAAA,WAAAA,CAAY,CAACpO,EAAGptC,CAAAA,CAAC,GAAGktC,EAAGltC,CAAAA,CAAC,IAAIwiD,aAAe,EAAA,CAAA,CAAA,CAAA;AAClD,KAAA;AAEA,IAAA,IAAIE,KAAK,CAAG,EAAA;AACVh8C,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,+BAAiC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC3DqH,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AACA,IAAA,IAAIpe,KAAK,CAAG,EAAA;AACV59B,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,+BAAiC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC3D/W,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AACA,IAAA,IAAIoe,KAAK,CAAG,EAAA;AACVh8C,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gCAAkC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC5DqH,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AACA,IAAA,IAAIpe,KAAK,CAAG,EAAA;AACV59B,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gCAAkC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC5D/W,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AAEA,IAAA,IAAMt3B,GAAM,GAAC,CAAA,MAAA,GAAS01C,KAAK,GAAMD,GAAAA,EAAAA,GAAK,GAAMne,GAAAA,EAAAA,GAAK,GAAMC,GAAAA,EAAC,EAAGv2B,OAAO,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;IAC1E,IAAI40C,SAAAA,CAAAA;IAEJ,IAAIzF,SAAS,CAACnwC,GAAAA,CAAI,EAAE;QAClB41C,SAAYzF,GAAAA,SAAS,CAACnwC,GAAI,CAAA,CAAA;KACrB,MAAA;QACL,IAAIsuC,YAAAA,CAAakH,eAAe,CAAI,CAAA,EAAA;AAClCI,YAAAA,SAAAA,GAAY,IAAIvC,YAAAA,EAAAA,CAAAA;SACX,MAAA;AACLuC,YAAAA,SAAAA,GAAY,IAAIvC,YAAAA,CAAaqC,EAAID,EAAAA,EAAAA,EAAIne,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AAC3C,SAAA;QACA4Y,SAAS,CAACnwC,IAAI,GAAG41C,SAAAA,CAAAA;AACnB,KAAA;IAEA,OAAO;QACLvU,MAAQ,EAAA;AAACnB,YAAAA,EAAAA;AAAIC,YAAAA,EAAAA;AAAIC,YAAAA,EAAAA;AAAIiO,YAAAA,EAAAA;AAAG,SAAA;QACxBkH,YAAAA,EAAAA,YAAAA;QACAC,aAAAA,EAAAA,aAAAA;QACA3+B,KAAO++B,EAAAA,SAAAA;AACT,KAAA,CAAA;AACF,CAAA;AAEA;;AAEC,IACM,SAASN,gBAAAA,CACdF,YAAsC,EACtCC,aAAuC,EACvCQ,YAAqB,EAAA;AAErB,IAAA,IAASC,SAAaV,GAAAA,YAAAA,CAAAA,CAAAA,CAAAA,CAAAA;IACtB,IAAMW,YAAAA,GAAerH,YAAasB,CAAAA,iBAAiB,CAACoF,YAAAA,CAAAA,CAAAA;IACpD,IAAMY,aAAAA,GAAgBtH,YAAamB,CAAAA,gBAAgB,CAACwF,aAAAA,CAAAA,CAAAA;AAEpD,IAAA,IAAMY,QAAW,GAAA,CAACD,aAAiBtH,IAAAA,YAAAA,CAAagB,eAAe,CAAC0F,YAAAA,CAAAA,CAAAA;AAChE,IAAA,IAAMc,SAAY,GAAA,CAACH,YAAgBrH,IAAAA,YAAAA,CAAaa,cAAc,CAAC8F,aAAAA,CAAAA,CAAAA;;AAG/D,IAAA,IAAIY,QAAY,IAAA,CAACC,SAAa,IAAA,CAACF,aAAe,EAAA;AAC5C,QAAA,IAAM9V,EAAK,GAAA,IAAIlnC,OAAQ88C,CAAAA,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAA,CAAE,EAAEikD,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AACvF,QAAA,IAAMsuC,EAAK,GAAA,IAAInnC,OAAQ88C,CAAAA,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAA,CAAE,EAAEikD,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;QACvF,IAAMskD,UAAAA,GAAazH,YAAaI,CAAAA,eAAe,CAACuG,aAAAA,CAAAA,CAAAA;AAChD,QAAA,IAAMhH,KAAK,IAAIr1C,OAAAA,CAAQm9C,WAAWl+C,CAAC,EAAEk+C,WAAWnjD,CAAC,CAAA,CAAA;AACjD,QAAA,IAAMotC,KAAK,IAAIpnC,OAAAA,CAAQq1C,EAAGp2C,CAAAA,CAAC,GAAG,CAACo2C,EAAGp2C,CAAAA,CAAC,GAAGioC,EAAGjoC,CAAAA,CAAC,IAAI,EAAA,EAAIo2C,GAAGr7C,CAAC,CAAA,CAAA;QAEtD,OAAO;YAAE8U,IAAM,EAAA,MAAA;YAAQo4B,EAAAA,EAAAA,EAAAA;YAAIC,EAAAA,EAAAA,EAAAA;YAAIC,EAAAA,EAAAA,EAAAA;YAAIiO,EAAAA,EAAAA,EAAAA;AAAG,SAAA,CAAA;AACxC,KAAA;;AAGA,IAAA,IAAI,CAAC4H,QAAAA,IAAYC,SAAa,IAAA,CAACH,YAAc,EAAA;AAC3C,QAAA,IAASK,UAAcf,GAAAA,aAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACvB,IAAMgB,SAAAA,GAAY3H,YAAaI,CAAAA,eAAe,CAACsG,YAAAA,CAAAA,CAAAA;AAC/C,QAAA,IAAMlV,MAAK,IAAIlnC,OAAAA,CAAQq9C,UAAUp+C,CAAC,EAAEo+C,UAAUrjD,CAAC,CAAA,CAAA;QAC/C,IAAMotC,GAAAA,GAAK,IAAIpnC,OAAQo9C,CAAAA,UAAU,CAAC,CAAE,CAAA,EAAEA,UAAU,CAAC,CAAE,CAAA,CAAA,CAAA;QACnD,IAAM/H,GAAAA,GAAK,IAAIr1C,OAAQo9C,CAAAA,UAAU,CAAC,CAAE,CAAA,EAAEA,UAAU,CAAC,CAAE,CAAA,CAAA,CAAA;AACnD,QAAA,IAAMjW,MAAK,IAAInnC,OAAAA,CAAQknC,GAAGjoC,CAAAA,CAAC,GAAG,CAACo2C,GAAGp2C,CAAAA,CAAC,GAAGioC,GAAGjoC,CAAAA,CAAC,IAAI,EAAA,EAAIioC,IAAGltC,CAAC,CAAA,CAAA;QAEtD,OAAO;YAAE8U,IAAM,EAAA,MAAA;YAAQo4B,EAAAA,EAAAA,GAAAA;YAAIC,EAAAA,EAAAA,GAAAA;YAAIC,EAAAA,EAAAA,GAAAA;YAAIiO,EAAAA,EAAAA,GAAAA;AAAG,SAAA,CAAA;AACxC,KAAA;;AAGA,IAAA,IAAI4H,YAAYC,SAAW,EAAA;AACzB,QAAA,IAASE,WAAcf,GAAAA,aAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACvB,QAAA,IAAMnV,GAAK,GAAA,IAAIlnC,OAAQ88C,CAAAA,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAA,CAAE,EAAEikD,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AACvF,QAAA,IAAMsuC,GAAK,GAAA,IAAInnC,OAAQ88C,CAAAA,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAA,CAAE,EAAEikD,SAAS,CAACA,SAAUjkD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;QACvF,IAAMuuC,GAAAA,GAAK,IAAIpnC,OAAQo9C,CAAAA,WAAU,CAAC,CAAE,CAAA,EAAEA,WAAU,CAAC,CAAE,CAAA,CAAA,CAAA;QACnD,IAAM/H,GAAAA,GAAK,IAAIr1C,OAAQo9C,CAAAA,WAAU,CAAC,CAAE,CAAA,EAAEA,WAAU,CAAC,CAAE,CAAA,CAAA,CAAA;QAEnD,OAAO;YAAEtuC,IAAM,EAAA,MAAA;YAAQo4B,EAAAA,EAAAA,GAAAA;YAAIC,EAAAA,EAAAA,GAAAA;YAAIC,EAAAA,EAAAA,GAAAA;YAAIiO,EAAAA,EAAAA,GAAAA;AAAG,SAAA,CAAA;AACxC,KAAA;;IAGA,IAAMnO,GAAAA,GAAKwO,YAAaI,CAAAA,eAAe,CAACsG,YAAAA,CAAAA,CAAAA;IACxC,IAAMjV,GAAAA,GAAKuO,YAAaI,CAAAA,eAAe,CAACuG,aAAAA,CAAAA,CAAAA;AAExC,IAAA,IAAIU,YAAc,EAAA;AAChB5V,QAAAA,GAAAA,CAAGntC,CAAC,GAAGktC,GAAGltC,CAAAA,CAAC;AACb,KAAA,MAAO,IAAIgjD,aAAe,EAAA;QACxB9V,GAAGltC,CAAAA,CAAC,GAAGmtC,GAAAA,CAAGntC,CAAC,CAAA;AACb,KAAA;AAEA,IAAA,IAAI6iD,YAAc,EAAA;;QAEhB,IAAMzV,GAAAA,GAAK,IAAIpnC,OAAAA,CAAQ,CAACmnC,GAAGloC,CAAAA,CAAC,GAAGioC,GAAAA,CAAGjoC,CAAAA,IAAK,CAAA,GAAIioC,GAAGjoC,CAAAA,CAAC,EAAGkoC,CAAAA,GAAAA,CAAGntC,CAAC,GAAGktC,GAAGltC,CAAAA,CAAC,IAAI,CAAIktC,GAAAA,GAAAA,CAAGltC,CAAC,CAAA,CAAA;AACzE,QAAA,IAAMq7C,GAAK,GAAA,IAAIr1C,OAAQ,CAACmnC,CAAAA,GAAAA,CAAGloC,CAAC,GAAGioC,GAAGjoC,CAAAA,CAAC,IAAI,CAAI,GAAA,CAAA,GAAIioC,GAAGjoC,CAAAA,CAAC,EAAGkoC,CAAAA,GAAAA,CAAGntC,CAAC,GAAGktC,GAAGltC,CAAAA,CAAC,IAAI,CAAI,GAAA,CAAA,GAAIktC,IAAGltC,CAAC,CAAA,CAAA;QAEjF,OAAO;YAAE8U,IAAM,EAAA,MAAA;YAAQo4B,EAAAA,EAAAA,GAAAA;YAAIC,EAAIC,EAAAA,GAAAA;YAAIA,EAAIiO,EAAAA,GAAAA;YAAIA,EAAIlO,EAAAA,GAAAA;AAAImW,YAAAA,MAAAA,EAAQP,YAAgBC,IAAAA,aAAAA;YAAeD,YAAAA,EAAAA,YAAAA;YAAcC,aAAAA,EAAAA,aAAAA;AAAc,SAAA,CAAA;KACjH,MAAA;QACL,OAAO;YAAEluC,IAAM,EAAA,MAAA;YAAQo4B,EAAAA,EAAAA,GAAAA;YAAIC,EAAAA,EAAAA,GAAAA;AAAImW,YAAAA,MAAAA,EAAQP,YAAgBC,IAAAA,aAAAA;YAAeD,YAAAA,EAAAA,YAAAA;YAAcC,aAAAA,EAAAA,aAAAA;AAAc,SAAA,CAAA;AACpG,KAAA;AACF,CAAA;AAEA,IAAM7C,gCAAD,WAAL;AAAMA,IAAAA,SAAAA,eAAAA,GAAAA,EAAAA;IAAAA,eAEGC,CAAAA,SAmEN,GAnED,SAAOA,SAAWmD,CAAAA,GAAe,EAAEC,IAAgB,EAAEC,IAAgB,EAAE7jD,CAAS,EAAA;;QAE9E,IAAI8jD,EAAAA,GAAKF,KAAKv+C,CAAC,CAAA;QACf,IAAI0+C,EAAAA,GAAKH,KAAKxjD,CAAC,CAAA;QACf,IAAI4jD,EAAAA,GAAKJ,KAAKv6C,CAAC,CAAA;QACf,IAAI46C,EAAAA,GAAKL,KAAKx4C,CAAC,CAAA;QAEf,IAAM03C,EAAAA,GAAKe,KAAKx+C,CAAC,CAAA;QACjB,IAAMw9C,EAAAA,GAAKgB,KAAKzjD,CAAC,CAAA;QACjB,IAAM8jD,EAAAA,GAAKL,KAAKx6C,CAAC,CAAA;QACjB,IAAM86C,EAAAA,GAAKN,KAAKz4C,CAAC,CAAA;AAEjB,QAAA,IAAIpL,MAAM,CAAG,EAAA;AACX2jD,YAAAA,GAAAA,CAAIt+C,CAAC,GAAGy+C,EAAAA,CAAAA;AACRH,YAAAA,GAAAA,CAAIvjD,CAAC,GAAG2jD,EAAAA,CAAAA;AACRJ,YAAAA,GAAAA,CAAIt6C,CAAC,GAAG26C,EAAAA,CAAAA;AACRL,YAAAA,GAAAA,CAAIv4C,CAAC,GAAG64C,EAAAA,CAAAA;AAER,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAIjkD,MAAM,CAAG,EAAA;AACX2jD,YAAAA,GAAAA,CAAIt+C,CAAC,GAAGy9C,EAAAA,CAAAA;AACRa,YAAAA,GAAAA,CAAIvjD,CAAC,GAAGyiD,EAAAA,CAAAA;AACRc,YAAAA,GAAAA,CAAIt6C,CAAC,GAAG66C,EAAAA,CAAAA;AACRP,YAAAA,GAAAA,CAAIv4C,CAAC,GAAG+4C,EAAAA,CAAAA;AAER,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAIF,OAAOE,EAAML,IAAAA,EAAAA,KAAOhB,MAAMiB,EAAOlB,KAAAA,EAAAA,IAAMmB,OAAOE,EAAI,EAAA;AACpD,YAAA,IAAI36C,IAAI,CAAIvJ,GAAAA,CAAAA,CAAAA;AACZ,YAAA,IAAMsmB,MAAMw9B,EAAKhB,GAAAA,EAAAA,GAAKiB,KAAKlB,EAAKmB,GAAAA,EAAAA,GAAKE,KAAKD,EAAKE,GAAAA,EAAAA,CAAAA;AAC/C,YAAA,IAAM9I,GAAO/0B,GAAAA,GAAAA,IAAO,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,CAAA;YAC9B,IAAM89B,MAAAA,GAAS,IAAI99B,GAAMA,GAAAA,GAAAA,CAAAA;;YAGzB,IAAI89B,MAAAA,GAASlgD,MAAOojB,CAAAA,OAAO,EAAE;gBAC3B,IAAMlB,GAAAA,GAAMpiB,IAAK6D,CAAAA,IAAI,CAACu8C,MAAAA,CAAAA,CAAAA;AACtB,gBAAA,IAAMnoC,GAAMjY,GAAAA,IAAAA,CAAK8kB,KAAK,CAAC1C,KAAKE,GAAM+0B,GAAAA,GAAAA,CAAAA,CAAAA;AAElC9xC,gBAAAA,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAAC7c,CAAAA,GAAI0S,GAAOmK,CAAAA,GAAAA,GAAAA,CAAAA;AACxBpmB,gBAAAA,CAAAA,GAAIgE,IAAKoiB,CAAAA,GAAG,CAACpmB,CAAAA,GAAIic,GAAOmK,CAAAA,GAAAA,GAAAA,CAAAA;AAC1B,aAAA;AAEA,YAAA,IAAMi+B,OAAOrkD,CAAIq7C,GAAAA,GAAAA,CAAAA;YAEjByI,EAAKA,GAAAA,EAAAA,GAAKv6C,IAAIu5C,EAAKuB,GAAAA,IAAAA,CAAAA;YACnBN,EAAKA,GAAAA,EAAAA,GAAKx6C,IAAIs5C,EAAKwB,GAAAA,IAAAA,CAAAA;YACnBL,EAAKA,GAAAA,EAAAA,GAAKz6C,IAAI26C,EAAKG,GAAAA,IAAAA,CAAAA;YACnBJ,EAAKA,GAAAA,EAAAA,GAAK16C,IAAI46C,EAAKE,GAAAA,IAAAA,CAAAA;;YAGnB,IAAI96C,CAAAA,KAAM,IAAIvJ,CAAG,EAAA;gBACf,IAAMG,CAAAA,GAAI,CAAI6D,GAAAA,IAAAA,CAAK6D,IAAI,CAACi8C,EAAKA,GAAAA,EAAAA,GAAKC,EAAKA,GAAAA,EAAAA,GAAKC,EAAKA,GAAAA,EAAAA,GAAKC,EAAKA,GAAAA,EAAAA,CAAAA,CAAAA;gBAE3DH,EAAM3jD,IAAAA,CAAAA,CAAAA;gBACN4jD,EAAM5jD,IAAAA,CAAAA,CAAAA;gBACN6jD,EAAM7jD,IAAAA,CAAAA,CAAAA;gBACN8jD,EAAM9jD,IAAAA,CAAAA,CAAAA;AACR,aAAA;AACF,SAAA;AAEAwjD,QAAAA,GAAAA,CAAIt+C,CAAC,GAAGy+C,EAAAA,CAAAA;AACRH,QAAAA,GAAAA,CAAIvjD,CAAC,GAAG2jD,EAAAA,CAAAA;AACRJ,QAAAA,GAAAA,CAAIt6C,CAAC,GAAG26C,EAAAA,CAAAA;AACRL,QAAAA,GAAAA,CAAIv4C,CAAC,GAAG64C,EAAAA,CAAAA;AACV,KAAA,CAAA;AArEI1D,IAAAA,OAAAA,eAAAA,CAAAA;;;ACvdN,IAAM+D,cAAiB,GAAA,CAAA,CAAA;AACvB,IAAMC,eAAkB,GAAA,CAAA,CAAA;AACxB,IAAMC,oBAAuB,GAAA,CAAA,CAAA;AAC7B,IAAMC,qBAAwB,GAAA,CAAA,CAAA;AAC9B,IAAMC,aAAgB,GAAA,eAAA,CAAA;AAEf,IAAA,WAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,CAcEtnD,GAAQ,EAAA;QACnB,IAAI,CAACunD,QAAQ,CAACvnD,GAAAA,CAAAA,CAAAA;;AAfLsnD,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAkBXC,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAAUvoB,KAAU,EAAA;AAClB,QAAA,MAAM,IAAI76B,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;IAEAtL,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAmBnM,EAAU,EAAEC,EAAU,EAAE2X,SAAa,EAAA;AACtD,QAAA,MAAM,IAAIrjD,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEApL,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAoBrM,CAAAA,EAAU,EAAEv+B,IAAY,EAAA;AAC1C,QAAA,MAAM,IAAIlN,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEA3/B,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAAUrW,IAAa,EAAA;AACrB,QAAA,MAAM,IAAIlN,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;IAEAI,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,MAAM,IAAItjD,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEAK,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAWC,IAAkB,EAAA;AAC3B,QAAA,MAAM,IAAIxjD,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEA31C,IAAAA,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,GAAAA,CAAKk2C,IAAiB,EAAA;AACpB,QAAA,MAAM,IAAIzjD,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEAQ,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAa19C,KAAa,EAAA;AACxB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;IAEA8W,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;AACE,QAAA,MAAM,IAAI9c,KAAMkjD,CAAAA,aAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AApDWC,IAAAA,WAAAA,CACJQ,UAWN,GAXD,SAAOA,UAAYH,CAAAA,IAAkB,EAAEI,SAAmB,EAAA;QACxD,IAAMl3C,GAAAA,GAAM,KAAKk3C,SAAAA,GAAY/M,sBAAsBJ,YAAW,EAAG+M,IAAKhiD,CAAAA,KAAK,GAAG,CAAA,CAAA,CAAA;AAE9E,QAAA,IAAK,IAAIxD,CAAAA,GAAI,CAAG6lD,EAAAA,MAAAA,GAAS,CAAGC,EAAAA,MAAAA,GAASN,IAAKM,CAAAA,MAAM,EAAE9lD,CAAAA,GAAI8lD,MAAOrmD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACxE,YAAA,IAAM4R,OAAO,MAAO,CAAC5R,CAAAA,CAAE,CAAiB8e,MAAM,EAAA,CAAA;YAE9CpQ,GAAI1J,CAAAA,GAAG,CAAC4M,IAAMi0C,EAAAA,MAAAA,CAAAA,CAAAA;AACdA,YAAAA,MAAAA,IAAUj0C,KAAKnS,MAAM,CAAA;AACvB,SAAA;AAEA,QAAA,OAAOmmD,SAAY,GAACl3C,GAA4BkD,CAAAA,IAAI,GAAIlD,GAAAA,CAAAA;AAC1D,KAAA,CAAA;AAZWy2C,IAAAA,OAAAA,WAAAA,CAAAA;AAqDZ,CAAA,GAAA;AAEM,IAAA,WAAMY,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASX,QAER,GAFD,SAASA,QAAAA,CAAUvnD,GAAW,EAAA;QAC5B,IAAI,CAACE,KAAK,GAAGF,GAAAA,CAAAA;AACf,KAAA,CAAA;IAEA,MAAS+7C,CAAAA,iBAER,GAFD,SAASA,iBAAAA,CAAmBnM,EAAU,EAAEC,EAAU,EAAEsY,EAAU,EAAA;AAC5D,QAAA,OAAO,IAAI,CAACjoD,KAAK,IAAI2vC,KAAKD,EAAC,CAAA,CAAA;AAC7B,KAAA,CAAA;AAEA,IAAA,MAAA,CAASqM,kBAER,GAFD,SAASA,kBAAoBrM,CAAAA,EAAU,EAAEC,EAAU,EAAA;QACjD,OAAO,GAAA,GAAM,IAAI,CAAC3vC,KAAK,IAAI2vC,EAAAA,GAAKA,EAAKD,GAAAA,EAAAA,GAAKA,EAAC,CAAA,CAAA;AAC7C,KAAA,CAAA;AAEA,IAAA,MAAA,CAASloB,QAER,GAFD,SAASA,QAAAA,CAAUrW,IAAa,EAAA;QAC9B,OAAO,IAAI,CAACnR,KAAK,CAAA;AACnB,KAAA,CAAA;IAEA,MAASwnD,CAAAA,SAER,GAFD,SAASA,SAAAA,GAAAA;AACP,QAAA,OAAO,IAAI9M,YAAa,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,IAAI,CAAC16C,KAAK;AAAE,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA,CAAA;AAC/C,KAAA,CAAA;AAEA,IAAA,MAAA,CAASwR,GAMR,GAND,SAASA,GAAAA,CAAKk2C,IAA2B,EAAA;QACvC,IAAM91C,GAAAA,GAAM,IAAI,CAAC5R,KAAK,CAAA;QAEtB,IAAI,CAACA,KAAK,GAAG0nD,IAAK91C,CAAAA,GAAAA,CAAAA,CAAAA;AAElB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;IAEA,MAAS21C,CAAAA,UAER,GAFD,SAASA,UAAAA,GAAAA;QACP,OAAO,CAAA,CAAA;AACT,KAAA,CAAA;AAjCWS,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBZ,WAkChC,EAAA;AAEM,IAAA,cAAMc,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAASb,QAER,GAFD,SAASA,QAAAA,CAAUvnD,GAAQ,EAAA;QACzB,IAAI,CAACqoD,KAAK,GAAGroD,GAAAA,CAAAA;AACf,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,QAIR,GAJD,SAASA,QAAAA,CAAU/kB,CAAS,EAAA;QAC1B,IAAM0lD,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;QAExB,OAAOA,KAAK,CAAC1hD,IAAAA,CAAK0D,KAAK,CAAC1D,KAAKpB,MAAM,EAAA,GAAK8iD,KAAMzmD,CAAAA,MAAM,CAAE,CAAA,CAAA;AACxD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS8P,GAIR,GAJD,SAASA,GAAAA,CAAKk2C,IAAiB,EAAA;QAC7B,IAAI,CAACS,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC32C,GAAG,CAACk2C,IAAAA,CAAAA,CAAAA;AAE5B,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAjBWQ,IAAAA,OAAAA,cAAAA,CAAAA;EAA0Bd,WAkBtC,EAAA;AAEM,IAAA,WAAMgB,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAASf,QAGR,GAHD,SAASA,QAAAA,CAAUvoB,KAAiC,EAAA;AAClD,QAAA,IAAI,CAACj4B,GAAG,GAAGi4B,KAAK,CAAC,CAAE,CAAA,CAAA;AACnB,QAAA,IAAI,CAACt2B,GAAG,GAAGs2B,KAAK,CAAC,CAAE,CAAA,CAAA;AACrB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAStX,QAIR,GAJD,SAASA,QAAUrW,CAAAA,IAAa,EAAEojC,IAAa,EAAA;AAC7C,QAAA,IAAM8T,UAAa9T,GAAAA,IAAAA,IAAAA,IAAAA,GAAAA,IAAQ9tC,GAAAA,IAAAA,CAAKpB,MAAM,EAAA,CAAA;AAEtC,QAAA,OAAO,IAAI,CAACwB,GAAG,GAAGwhD,UAAc,IAAA,IAAI,CAAC7/C,GAAG,GAAG,IAAI,CAAC3B,GAAG,CAAD,CAAA;AACpD,KAAA,CAAA;IAEA,MAASg1C,CAAAA,iBAIR,GAJD,SAASA,iBAAAA,CAAmBnM,EAAU,EAAEC,EAAU,EAAE2X,SAAkB,EAAA;QACpE,IAAM/S,IAAAA,GAAO+S,oBAAAA,SAAa,GAAA,GAAA,CAAA;QAE1B,OAAQ,CAAA,IAAI,CAACzgD,GAAG,GAAG0tC,IAAAA,IAAQ,IAAI,CAAC/rC,GAAG,GAAG,IAAI,CAAC3B,GAAE,CAAC,KAAM8oC,KAAKD,EAAC,CAAA,CAAA;AAC5D,KAAA,CAAA;IAEA,MAAS8X,CAAAA,SAER,GAFD,SAASA,SAAAA,GAAAA;AACP,QAAA,OAAO,IAAI9M,YAAa,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,IAAI,CAAC7zC,GAAG;AAAE,YAAA,IAAI,CAAC2B,GAAG;AAAE,YAAA,CAAA;AAAE,SAAA,CAAA,CAAA;AACpD,KAAA,CAAA;AAEA,IAAA,MAAA,CAASgJ,GAKR,GALD,SAASA,GAAAA,CAAKk2C,IAAS,EAAA;AACrB,QAAA,IAAI,CAAC7gD,GAAG,GAAG6gD,IAAK,CAAA,IAAI,CAAC7gD,GAAG,CAAA,CAAA;AACxB,QAAA,IAAI,CAAC2B,GAAG,GAAGk/C,IAAK,CAAA,IAAI,CAACl/C,GAAG,CAAA,CAAA;AAExB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AA9BW4/C,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBhB,WA+BhC,EAAA;AAEM,IAAA,iBAAMkB,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAASjB,QAGR,GAHD,SAASA,QAAAA,CAAUvoB,KAAqC,EAAA;AACtD,QAAA,IAAI,CAACj4B,GAAG,GAAGi4B,KAAK,CAAC,CAAE,CAAA,CAAA;AACnB,QAAA,IAAI,CAACt2B,GAAG,GAAGs2B,KAAK,CAAC,CAAE,CAAA,CAAA;AACrB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAStX,QAYR,GAZD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;QAC7B,IAAMtK,GAAAA,GAAM,IAAI,CAACA,GAAG,CAAA;QACpB,IAAM2B,GAAAA,GAAM,IAAI,CAACA,GAAG,CAAA;AACpB,QAAA,IAAMmI,MAAM,EAAE,CAAA;AAEd,QAAA,IAAK,IAAI1O,CAAI,GAAA,CAAA,EAAGA,IAAI4E,GAAInF,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACnC,IAAMQ,CAAAA,GAAIgE,KAAKpB,MAAM,EAAA,CAAA;AAErBsL,YAAAA,GAAG,CAAC1O,CAAAA,CAAE,GAAG4E,GAAG,CAAC5E,CAAE,CAAA,IAAI,CAAA,GAAIQ,CAAAA,CAAAA,GAAK+F,GAAG,CAACvG,EAAE,GAAGQ,CAAAA,CAAAA;AACvC,SAAA;QAEA,OAAOkO,GAAAA,CAAAA;AACT,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASa,GAKR,GALD,SAASA,GAAAA,CAAKk2C,IAAS,EAAA;QACrB,IAAI,CAAC7gD,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC2K,GAAG,CAACk2C,IAAAA,CAAAA,CAAAA;QACxB,IAAI,CAACl/C,GAAG,GAAG,IAAI,CAACA,GAAG,CAACgJ,GAAG,CAACk2C,IAAAA,CAAAA,CAAAA;AAExB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AA7BWY,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0BlB,WA8BtC,EAAA;AAEM,IAAA,WAAMmB,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASlB,QAIR,GAJD,SAASA,QAAAA,CAAUvoB,KAAiC,EAAA;AAClD,QAAA,IAAI,CAACj4B,GAAG,GAAGi4B,KAAK,CAAC,CAAE,CAAA,CAAA;AACnB,QAAA,IAAI,CAACt2B,GAAG,GAAGs2B,KAAK,CAAC,CAAE,CAAA,CAAA;QACnB,IAAI,CAAC0pB,MAAM,GAAG,CAAA,CAAA;AAChB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAShhC,QAIR,GAJD,SAASA,QAAAA,CAAU/kB,CAAS,EAAA;QAC1BA,CAAK,IAAA,IAAI,CAAC+lD,MAAM,CAAA;QAEhB,OAAO,IAAI,CAAC3hD,GAAG,IAAI,CAAIpE,GAAAA,CAAAA,CAAK,GAAA,IAAI,CAAC+F,GAAG,GAAG/F,CAAAA,CAAAA;AACzC,KAAA,CAAA;IAEA,MAAS+kD,CAAAA,SAER,GAFD,SAASA,SAAAA,GAAAA;AACP,QAAA,OAAO,IAAI9M,YAAa,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,IAAI,CAAC7zC,GAAG;AAAE,YAAA,IAAI,CAAC2B,GAAG;AAAE,YAAA,IAAI,CAACggD,MAAM;AAAC,SAAA,CAAA,CAAA;AAC9D,KAAA,CAAA;IAEA,MAAS3M,CAAAA,iBAQR,GARD,SAASA,iBAAAA,CAAmBnM,EAAU,EAAEC,EAAU,EAAE2X,SAAa,EAAA;AAAbA,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,CAAA,CAAA;QAC9D,IAAMzgD,GAAAA,GAAM,IAAI,CAACA,GAAG,CAAA;QACpB,IAAM2B,GAAAA,GAAM,IAAI,CAACA,GAAG,CAAA;AACpB,QAAA,IAAMy/C,EAAK,GAAA,IAAI,CAACO,MAAM,GAAGlB,SAAAA,CAAAA;QACzB,IAAMz8C,EAAAA,GAAKhE,MAAM,CAAC2B,MAAM3B,GAAE,KAAM8oC,EAAAA,GAAKsY,EAAC,CAAA,CAAA;QACtC,IAAMQ,EAAAA,GAAK5hD,MAAM,CAAC2B,MAAM3B,GAAE,KAAM6oC,EAAAA,GAAKuY,EAAC,CAAA,CAAA;AAEtC,QAAA,OAAO,CAAC,CAACp9C,KAAKhE,GAAE,IAAK8oC,EAAK,GAAC8Y,CAAAA,EAAAA,GAAK5hD,GAAE,IAAK6oC,EAAC,IAAK,CAAA,CAAA;AAC/C,KAAA,CAAA;AAEA,IAAA,MAAA,CAASqM,kBAER,GAFD,SAASA,kBAAoBrM,CAAAA,EAAU,EAAEC,EAAU,EAAA;AACjD,QAAA,OAAO+Y,sBAAuB/Y,CAAAA,EAAAA,EAAI,CAAG,EAAA,IAAI,CAAC6Y,MAAM,EAAE,IAAI,CAAC3hD,GAAG,EAAE,IAAI,CAAC2B,GAAG,CAAIkgD,GAAAA,sBAAAA,CAAuBhZ,EAAI,EAAA,CAAA,EAAG,IAAI,CAAC8Y,MAAM,EAAE,IAAI,CAAC3hD,GAAG,EAAE,IAAI,CAAC2B,GAAG,CAAA,CAAA;AACvI,KAAA,CAAA;AAEA,IAAA,MAAA,CAASgJ,GAKR,GALD,SAASA,GAAAA,CAAKk2C,IAA6B,EAAA;AACzC,QAAA,IAAI,CAAC7gD,GAAG,GAAG6gD,IAAK,CAAA,IAAI,CAAC7gD,GAAG,CAAA,CAAA;AACxB,QAAA,IAAI,CAAC2B,GAAG,GAAGk/C,IAAK,CAAA,IAAI,CAACl/C,GAAG,CAAA,CAAA;AAExB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA,IAAA,MAAA,CAASm/C,WAIR,GAJD,SAASA,WAAAA,CAAa19C,KAAa,EAAA;QACjC,IAAI,CAACu+C,MAAM,GAAGv+C,KAAAA,CAAAA;AAEd,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AA9CWs+C,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBnB,WA+ChC,EAAA;AAEM,IAAA,aAAMuB,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAGX,IAAA,MAAA,CAAStB,QAER,GAFD,SAASA,QAAAA,CAAUvoB,KAAmD,EAAA;QACpE,IAAI,CAAC7tB,KAAK,GAAGQ,sBAAuBqtB,CAAAA,KAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;IAEA8pB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAAC33C,KAAK,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASuW,QA6BR,GA7BD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;QAC7B,IAAMF,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;QAExB,IAAIA,KAAAA,CAAMvP,MAAM,KAAK,CAAG,EAAA;YACtB,OAAO;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AACrB,SAAA;AAEA,QAAA,IAAIyP,QAAQF,KAAK,CAAC,CAAE,CAAA,CAACE,IAAI,EAAE;AACzB,YAAA,OAAOF,KAAK,CAAC,CAAA,CAAE,CAACC,KAAK,CAAC3F,OAAO,EAAA,CAAA;AAC/B,SAAA;QAEA,IAAMs9C,IAAAA,GAAO53C,KAAMvP,CAAAA,MAAM,GAAG,CAAA,CAAA;AAE5B,QAAA,IAAIyP,QAAQF,KAAK,CAAC43C,IAAK,CAAA,CAAC13C,IAAI,EAAE;AAC5B,YAAA,OAAOF,KAAK,CAAC43C,IAAAA,CAAK,CAAC33C,KAAK,CAAC3F,OAAO,EAAA,CAAA;AAClC,SAAA;AAEA,QAAA,IAAK,IAAItJ,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI4mD,MAAM5mD,CAAK,EAAA,CAAA;YAC7B,IAAMyF,CAAAA,GAAIuJ,KAAK,CAAChP,CAAE,CAAA,CAAA;AAClB,YAAA,IAAM0F,CAAIsJ,GAAAA,KAAK,CAAChP,CAAAA,GAAI,CAAE,CAAA,CAAA;AAEtB,YAAA,IAAIyF,EAAEyJ,IAAI,IAAIA,QAAQxJ,CAAEwJ,CAAAA,IAAI,GAAGA,IAAM,EAAA;AACnC,gBAAA,IAAM1O,CAAI,GAAC0O,CAAAA,IAAAA,GAAOzJ,EAAEyJ,IAAG,KAAMxJ,CAAEwJ,CAAAA,IAAI,GAAGzJ,CAAAA,CAAEyJ,IAAI,CAAD,CAAA;gBAE3C,OAAOI,gBAAAA,CAAiB7J,CAAEwJ,CAAAA,KAAK,CAAC3F,OAAO,EAAI5D,EAAAA,CAAAA,CAAEuJ,KAAK,CAAC3F,OAAO,EAAA,EAAI9I,CAAG,EAAA,IAAA,CAAA,CAAA;AACnE,aAAA;AACF,SAAA;AAEA,QAAA,OAAOwO,KAAK,CAAC43C,IAAAA,CAAK,CAAC33C,KAAK,CAAC3F,OAAO,EAAA,CAAA;AAClC,KAAA,CAAA;AAxCWo9C,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBvB,WAyClC,EAAA;AAEM,IAAA,YAAM0B,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASzB,QAsBR,GAtBD,SAASA,QAAAA,CAAUvoB,KAAqD,EAAA;AACtE,QAAA,IAAI,CAAChtB,IAAI,GAAGgtB,KACTttB,CAAAA,GAAG,CAACwI,SAAAA,CAAAA,EAAAA;YACH,IAAIA,CAAAA,CAAErV,KAAK,EAAE;gBACX,OAAOqV,CAAAA,CAAErV,KAAK,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AACpB,aAAA;YAEA,OAAO;AAACqV,gBAAAA,CAAAA,CAAE7I,IAAI;AAAE6I,gBAAAA,CAAAA,CAAEha,KAAK;AAAC,aAAA,CAAA;SAEzBiS,CAAAA,CAAAA,IAAI,CAAC,SAACvK,CAAGC,EAAAA,CAAAA,EAAAA;AAAMD,YAAAA,OAAAA,CAAC,CAAC,CAAA,CAAE,GAAGC,CAAC,CAAC,CAAE,CAAA,CAAA;;QAE7B,IAAMkhD,IAAAA,GAAO,IAAI,CAAC/2C,IAAI,CAAC,IAAI,CAACA,IAAI,CAACpQ,MAAM,GAAG,CAAE,CAAA,CAAA;AAE5C,QAAA,IAAImnD,IAAI,CAAC,CAAE,CAAA,GAAG,CAAG,EAAA;AACf,YAAA,IAAI,CAAC/2C,IAAI,CAAClO,IAAI,CAAC;AAAC,gBAAA,CAAA;AAAGilD,gBAAAA,IAAI,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA,CAAA;AAC7B,SAAA;AACA,QAAA,IAAME,KAAQ,GAAA,IAAI,CAACj3C,IAAI,CAAC,CAAE,CAAA,CAAA;AAE1B,QAAA,IAAIi3C,KAAK,CAAC,CAAE,CAAA,GAAG,CAAG,EAAA;AAChB,YAAA,IAAI,CAACj3C,IAAI,CAACk3C,OAAO,CAAC;AAAC,gBAAA,CAAA;AAAGD,gBAAAA,KAAK,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA,CAAA;AACjC,SAAA;QACA,IAAI,CAACE,SAAS,GAAG,IAAA,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASzhC,QAuBR,GAvBD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;QAC7B,IAAMW,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AAEtB,QAAA,IAAIX,OAAOW,IAAI,CAAC,CAAE,CAAA,CAAC,EAAE,EAAE;AACrB,YAAA,OAAOA,IAAI,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA;AACnB,SAAA;QACA,IAAMyC,GAAAA,GAAMzC,IAAKpQ,CAAAA,MAAM,GAAG,CAAA,CAAA;AAE1B,QAAA,IAAK,IAAIO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIsS,KAAKtS,CAAK,EAAA,CAAA;YAC5B,IAAMpC,GAAAA,GAAMiS,IAAI,CAAC7P,CAAE,CAAA,CAAA;AACnB,YAAA,IAAMinD,EAAKp3C,GAAAA,IAAI,CAAC7P,CAAAA,GAAI,CAAE,CAAA,CAAA;YACtB,IAAMskD,EAAAA,GAAK1mD,GAAG,CAAC,CAAE,CAAA,CAAA;YACjB,IAAM0lD,EAAAA,GAAK2D,EAAE,CAAC,CAAE,CAAA,CAAA;YAEhB,IAAI/3C,IAAAA,IAAQo1C,EAAMp1C,IAAAA,IAAAA,IAAQo0C,EAAI,EAAA;gBAC5B,IAAMvrC,CAAAA,GAAI,CAAC7I,IAAAA,GAAOo1C,EAAC,KAAMhB,KAAKgB,EAAC,CAAA,CAAA;gBAC/B,IAAMC,EAAAA,GAAK3mD,GAAG,CAAC,CAAE,CAAA,CAAA;AAEjB,gBAAA,OAAO2mD,KAAKxsC,CAAKkvC,IAAAA,EAAE,CAAC,CAAA,CAAE,GAAG1C,EAAC,CAAA,CAAA;AAC5B,aAAA;AACF,SAAA;AAEA,QAAA,OAAO10C,IAAI,CAACyC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAA;AACrB,KAAA,CAAA;IAEA,MAASsnC,CAAAA,iBAER,GAFD,SAASA,iBAAAA,CAAmBnM,EAAU,EAAEC,EAAU,EAAEsY,EAAM,EAAA;AAANA,QAAAA,IAAAA,eAAAA,EAAK,GAAA,CAAA,CAAA;AACvD,QAAA,OAAO,CAAC,IAAI,CAACkB,SAAS,CAACxZ,EAAAA,EAAI,KAAS,CAAA,GAAA,IAAI,CAACwZ,SAAS,CAACzZ,EAAAA,EAAI,MAAK,IAAKuY,EAAAA,CAAAA;AACnE,KAAA,CAAA;AAEA,IAAA,MAAA,CAASlM,kBAER,GAFD,SAASA,kBAAoBrM,CAAAA,EAAU,EAAEC,EAAU,EAAA;QACjD,OAAO,IAAI,CAACwZ,SAAS,CAACxZ,EAAAA,EAAI,QAAQ,IAAI,CAACwZ,SAAS,CAACzZ,EAAI,EAAA,IAAA,CAAA,CAAA;AACvD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQyZ,SAyBP,GAzBD,SAAQA,SAAWh4C,CAAAA,IAAY,EAAEi4C,MAAe,EAAA;QAC9C,IAAMt3C,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AAEtB,QAAA,IAAIX,QAAQW,IAAI,CAAC,CAAE,CAAA,CAAC,EAAE,EAAE;YACtB,OAAO,CAAA,CAAA;AACT,SAAA;AAEA,QAAA,IAAInB,GAAM,GAAA,CAAA,CAAA;QACV,IAAM4D,GAAAA,GAAMzC,IAAKpQ,CAAAA,MAAM,GAAG,CAAA,CAAA;QAC1B,IAAMgmD,IAAAA,GAAO0B,SAASV,sBAAyBW,GAAAA,gBAAAA,CAAAA;AAE/C,QAAA,IAAK,IAAIpnD,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIsS,KAAKtS,CAAK,EAAA,CAAA;YAC5B,IAAMqnD,EAAAA,GAAKx3C,IAAI,CAAC7P,CAAE,CAAA,CAAA;AAClB,YAAA,IAAMinD,EAAKp3C,GAAAA,IAAI,CAAC7P,CAAAA,GAAI,CAAE,CAAA,CAAA;YACtB,IAAMytC,EAAAA,GAAK4Z,EAAE,CAAC,CAAE,CAAA,CAAA;YAChB,IAAM3Z,EAAAA,GAAKuZ,EAAE,CAAC,CAAE,CAAA,CAAA;YAEhB,IAAI/3C,IAAAA,GAAOu+B,EAAMv+B,IAAAA,IAAAA,IAAQw+B,EAAI,EAAA;gBAC3B,OAAOh/B,GAAAA,GAAM+2C,IAAKv2C,CAAAA,IAAAA,EAAMu+B,EAAIC,EAAAA,EAAAA,EAAI2Z,EAAE,CAAC,CAAE,CAAA,EAAEJ,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;aACvC,MAAA;gBACLv4C,GAAO+2C,IAAAA,IAAAA,CAAK/X,EAAID,EAAAA,EAAAA,EAAIC,EAAI2Z,EAAAA,EAAE,CAAC,CAAE,CAAA,EAAEJ,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,aAAA;AACF,SAAA;QAEA,OAAOv4C,GAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAASoQ,CAAAA,MAUR,GAVD,SAASA,MAAAA,GAAAA;QACP,IAAMjP,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;QACtB,IAAM+B,IAAAA,GAAO,IAAI6mC,YAAaj0C,CAAAA,IAAAA,CAAKC,IAAI,CAACoL,IAAAA,CAAKpQ,MAAM,GAAG,CAAK,CAAA,GAAA,CAAA,CAAA,CAAA;QAE3D,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAG6lD,MAAS,GAAA,CAAA,EAAG7lD,CAAI6P,GAAAA,IAAAA,CAAKpQ,MAAM,EAAEO,CAAK6lD,EAAAA,EAAAA,MAAAA,IAAU,CAAG,CAAA;AAC7Dj0C,YAAAA,IAAAA,CAAK5M,GAAG,CAAC6K,IAAI,CAAC7P,EAAE,EAAE6lD,MAAAA,CAAAA,CAAAA;AACpB,SAAA;QACAj0C,IAAK5M,CAAAA,GAAG,CAAC6K,IAAI,CAACA,IAAAA,CAAKpQ,MAAM,GAAG,CAAE,CAAA,EAAEmS,IAAKnS,CAAAA,MAAM,GAAG,CAAA,CAAA,CAAA;QAE9C,OAAOmS,IAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS2zC,SAWR,GAXD,SAASA,SAAAA,CAAWC,IAAS,EAAA;QAC3B,IAAMhiD,KAAAA,GAAQgiD,KAAKhiD,KAAK,CAAA;QACxB,IAAMqM,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AACtB,QAAA,IAAMy3C,eAAe9iD,IAAKC,CAAAA,IAAI,CAACoL,IAAAA,CAAKpQ,MAAM,GAAG,CAAA,CAAA,CAAA;AAE7C+lD,QAAAA,IAAAA,CAAK+B,YAAY,IAAID,YAAAA,CAAAA;AACrB9B,QAAAA,IAAAA,CAAKM,MAAM,CAACnkD,IAAI,CAAC,IAAI,CAAA,CAAA;AACrB6jD,QAAAA,IAAAA,CAAKhiD,KAAK,IAAI8jD,YAAAA,CAAAA;AACd9B,QAAAA,IAAAA,CAAKj/C,GAAG,GAAG/B,IAAAA,CAAK+B,GAAG,CAACi/C,IAAAA,CAAKj/C,GAAG,EAAE+gD,YAAAA,CAAAA,CAAAA;AAE9B,QAAA,OAAO,IAAI7O,YAAa,CAAA;AAAC,YAAA,CAAA;AAAGj1C,YAAAA,KAAAA;AAAO8jD,YAAAA,YAAAA;AAAc,YAAA,CAAA;AAAE,SAAA,CAAA,CAAA;AACrD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS/3C,GAIR,GAJD,SAASA,GAAAA,CAAKk2C,IAA2B,EAAA;AACvC,QAAA,IAAI,CAAC51C,IAAI,CAACH,OAAO,CAACswC,SAAAA,CAAAA,EAAAA;AAAKA,YAAAA,OAAAA,CAAC,CAAC,CAAE,CAAA,GAAGyF,IAAKzF,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA;;AAEvC,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0F,WAIR,GAJD,SAASA,WAAAA,CAAa19C,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC6H,IAAI,CAACH,OAAO,CAACswC,SAAAA,CAAAA,EAAAA;AAAKA,YAAAA,OAAAA,CAAC,CAAC,CAAE,CAAA,GAAGh4C,KAAQg4C,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;;AAE1C,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AA5HW6G,IAAAA,OAAAA,YAAAA,CAAAA;EAAqB1B,WA6HjC,EAAA;AAEM,IAAA,YAAMqC,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAASpC,QAGR,GAHD,SAASA,QAAAA,CAAUvoB,KAAmB,EAAA;AACpC,QAAA,IAAI,CAAChtB,IAAI,GAAGgtB,KAAK,CAAC,CAAE,CAAA,CAAA;AACpB,QAAA,IAAI,CAAC4qB,MAAM,GAAG5qB,KAAK,CAAC,CAAE,CAAA,CAAA;AACxB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAStX,QA4BR,GA5BD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;QAC7B,IAAMW,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;QACtB,IAAM43C,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;QAE1B,IAAK,IAAIznD,IAAI,CAAGA,EAAAA,CAAAA,GAAI6P,KAAKpQ,MAAM,GAAG,GAAGO,CAAK,EAAA,CAAA;YACxC,IAAM0nD,EAAAA,GAAK73C,IAAI,CAAC7P,CAAE,CAAA,CAAA;AAClB,YAAA,IAAMqnD,EAAKx3C,GAAAA,IAAI,CAAC7P,CAAAA,GAAI,CAAE,CAAA,CAAA;YAEtB,IAAI0nD,EAAE,CAAC,CAAE,CAAA,IAAIx4C,QAAQm4C,EAAE,CAAC,CAAE,CAAA,IAAIn4C,IAAM,EAAA;AAClC,gBAAA,IAAMy4C,MAAMN,EAAE,CAAC,EAAE,GAAGK,EAAE,CAAC,CAAE,CAAA,CAAA;AACzB,gBAAA,IAAI3hD,KAAAA,KAAAA,CAAAA,CAAAA;AAEJ,gBAAA,IAAI4hD,QAAQ,CAAG,EAAA;AACb5hD,oBAAAA,EAAAA,GAAK,CAACmJ,IAAAA,GAAOw4C,EAAE,CAAC,EAAE,KAAKL,EAAE,CAAC,CAAE,CAAA,GAAGK,EAAE,CAAC,EAAE,CAAD,CAAA;iBAC9B,MAAA;oBACL,IAAM/3C,GAAAA,GAAMi4C,kBAAmB14C,CAAAA,IAAAA,EAAMw4C,EAAIL,EAAAA,EAAAA,CAAAA,CAAAA;AAEzCthD,oBAAAA,EAAAA,GAAK,CAAC4J,GAAAA,GAAM+3C,EAAE,CAAC,CAAA,CAAE,IAAIC,GAAAA,CAAAA;AACvB,iBAAA;AAEA,gBAAA,OAAO,IAAI,CAACE,YAAY,CAAC7nD,CAAG+F,EAAAA,EAAAA,CAAAA,CAAAA;AAC9B,aAAA;AACF,SAAA;AACA,QAAA,IAAImJ,QAAQW,IAAI,CAAC,CAAE,CAAA,CAAC,EAAE,EAAE;AACtB,YAAA,OAAO43C,MAAM,CAAC,CAAE,CAAA,CAAC/kD,KAAK,EAAA,CAAA;AACxB,SAAA;AAEA,QAAA,OAAO+kD,MAAM,CAACA,MAAAA,CAAOhoD,MAAM,GAAG,CAAA,CAAE,CAACiD,KAAK,EAAA,CAAA;AACxC,KAAA,CAAA;AAEAmlD,IAAAA,MAAAA,CAAAA,YAUC,GAVDA,SAAAA,YAAc7nD,CAAAA,CAAS,EAAE+F,EAAU,EAAA;AACjC,QAAA,IAAM+hD,IAAO,GAAA,IAAI,CAACL,MAAM,CAACznD,CAAE,CAAA,CAAA;AAC3B,QAAA,IAAM+nD,OAAO,IAAI,CAACN,MAAM,CAACznD,IAAI,CAAE,CAAA,CAAA;AAC/B,QAAA,IAAM0O,GAAM,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AAErB,QAAA,IAAK,IAAIS,CAAI,GAAA,CAAA,EAAGA,IAAI24C,IAAKroD,CAAAA,MAAM,EAAE0P,CAAK,EAAA,CAAA;AACpCT,YAAAA,GAAG,CAACS,CAAAA,CAAE,GAAG24C,IAAI,CAAC34C,CAAE,CAAA,IAAI,CAAA,GAAIpJ,EAAC,CAAA,GAAKgiD,IAAI,CAAC54C,EAAE,GAAGpJ,EAAAA,CAAAA;AAC1C,SAAA;QAEA,OAAO2I,GAAAA,CAAAA;AACT,KAAA,CAAA;AAjDW84C,IAAAA,OAAAA,YAAAA,CAAAA;EAAqBrC,WAkDjC,EAAA;AAEM,IAAA,eAAM6C,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAgBX,IAAA,MAAA,CAAS5C,QAgCR,GAhCD,SAASA,QAAAA,CAAUvoB,KAAgC,EAAA;AACjD,QAAA,IAAOorB,SAAoCprB,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAzBoS,MAAyBpS,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAjBqrB,aAAiBrrB,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAE3C,IAAI,CAACkjB,aAAa,GAAG,EAAC,CAAA;QACtB,IAAI,CAACmI,aAAczoD,CAAAA,MAAM,EAAE;AACzB,YAAA,OAAA;AACF,SAAA;QAEA,IAAK,IAAIO,IAAI,CAAGA,EAAAA,CAAAA,GAAIioD,UAAUxoD,MAAM,GAAG,GAAGO,CAAK,EAAA,CAAA;YAC7C,IAAMgjD,YAAAA,GAAeiF,SAAS,CAACjoD,CAAE,CAAA,CAAA;AACjC,YAAA,IAAMijD,aAAgBgF,GAAAA,SAAS,CAACjoD,CAAAA,GAAI,CAAE,CAAA,CAAA;AACtC,YAAA,IAAMmoD,MAAM,IAAIv+C,OAAAA,CAAQqlC,MAAM,CAACjvC,CAAAA,CAAE,CAAC,CAAE,CAAA,EAAEivC,MAAM,CAACjvC,CAAAA,CAAE,CAAC,CAAE,CAAA,EAAEivC,MAAM,CAACjvC,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAA,EAAGooD,MAAM,IAAIx+C,OAAAA,CAAQqlC,MAAM,CAACjvC,CAAAA,GAAI,EAAE,CAAC,CAAA,CAAE,EAAEivC,MAAM,CAACjvC,IAAI,CAAE,CAAA,CAAC,EAAE,EAAEivC,MAAM,CAACjvC,CAAI,GAAA,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA;YAEzI,IAAMqoD,GAAAA,GAAM,IAAIz+C,OAAQs+C,CAAAA,aAAa,CAAC,CAAIloD,GAAAA,CAAAA,CAAE,CAAC,CAAA,CAAE,EAAEkoD,aAAa,CAAC,CAAIloD,GAAAA,CAAAA,CAAE,CAAC,CAAE,CAAA,EAAEkoD,aAAa,CAAC,CAAA,GAAIloD,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA,EAAGsoD,MAAM,IAAI1+C,OAAAA,CAAQs+C,aAAa,CAAC,CAAA,GAAIloD,IAAI,CAAE,CAAA,CAAC,CAAE,CAAA,EAAEkoD,aAAa,CAAC,IAAIloD,CAAI,GAAA,CAAA,CAAE,CAAC,CAAA,CAAE,EAAEkoD,aAAa,CAAC,CAAIloD,GAAAA,CAAAA,GAAI,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AAE3M,YAAA,IAAwE+iD,oBAAAA,gBAAiBC,CAAAA,YAAAA,EAAcC,aAA/FhU,CAAAA,EAAQsZ,KAAwDxF,iBAAhE9T,CAAAA,MAAAA,EAAYxqB,WAAO+jC,GAA6CzF,kBAApDt+B,KAAoB0+B,EAAAA,YAAAA,GAAgCJ,iBAAhCI,CAAAA,YAAAA,EAAcC,gBAAkBL,iBAAlBK,CAAAA,aAAAA,CAAAA;YACtD,IAAMr5C,CAAAA,GAAIw+C,EAAE,CAAC,CAAE,CAAA,CAAA;AACf,YAAA,IAAM3mD,IAAI2mD,EAAE,CAACA,EAAG9oD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAE3B,YAAA,IAAMgpD,SAAY,GAAA,IAAItI,UAAWgI,CAAAA,GAAAA,EAAKC,KAAKC,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;YAEhD,IAAI,CAACvI,aAAa,CAAC,CAAGh2C,CAAElE,CAAC,GAAC,GAAGjE,GAAAA,CAAAA,CAAEiE,CAAC,CAAG,GAAG;gBACpCopC,MAAQsZ,EAAAA,EAAAA;gBACRpF,YAAAA,EAAAA,YAAAA;gBACAC,aAAAA,EAAAA,aAAAA;gBACAoF,WAAAA,EAAAA,WAAAA;gBACAC,SAAWA,EAAAA,SAAAA;gBACXC,SAAWhkD,EAAAA,MAAAA,CAAOqF,EAAElE,CAAC,CAAA;gBACrB8iD,OAASjkD,EAAAA,MAAAA,CAAO9C,EAAEiE,CAAC,CAAA;AACrB,aAAA,CAAA;AACF,SAAA;QACA,IAAI,CAAC+iD,WAAW,GAAGjpD,MAAAA,CAAOkQ,IAAI,CAAC,IAAI,CAACkwC,aAAa,CAAA,CAAA;AACnD,KAAA,CAAA;AAEA,IAAA,MAAA,CAASx6B,QAyCR,GAzCD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;QAC7B,IAAM1O,CAAAA,GAAI47C,YAAYltC,IAAM,EAAA,CAAA,CAAA,CAAA;QAC5B,IAAI+wC,IAAAA,GAAO,CAAGpQ,EAAAA,KAAAA,GAAQ,IAAIjmC,OAAAA,EAAAA,CAAAA;QAC1B,IAAMg/C,WAAAA,GAAc,IAAI,CAACA,WAAW,CAAA;QAEpC,IAAI,CAACA,WAAYnpD,CAAAA,MAAM,EAAE;YACvB,OAAOowC,KAAAA,CAAAA;AACT,SAAA;QACA,IAAMgZ,YAAAA,GAAe,IAAI,CAAC9I,aAAa,CAAC6I,WAAW,CAAC,CAAA,CAAE,CAAC,CAACF,SAAS,CAAA;AACjE,QAAA,IAAMI,UAAa,GAAA,IAAI,CAAC/I,aAAa,CAAC6I,WAAW,CAACA,WAAAA,CAAYnpD,MAAM,GAAG,CAAE,CAAA,CAAC,CAACkpD,OAAO,CAAA;AAElF,QAAA,IAAInoD,KAAKqoD,YAAc,EAAA;YACrB,IAAMJ,SAAAA,GAAY,IAAI,CAAC1I,aAAa,CAAC6I,WAAW,CAAC,CAAA,CAAE,CAAC,CAACH,SAAS,CAAA;YAE9D5Y,KAAQ4Y,GAAAA,SAAAA,CAAUlI,iBAAiB,CAAC,CAAA,CAAA,CAAA;YAEpC,OAAO1Q,KAAAA,CAAAA;AAET,SAAA;AACA,QAAA,IAAIrvC,KAAKsoD,UAAY,EAAA;AACnB,YAAA,IAAML,UAAY,GAAA,IAAI,CAAC1I,aAAa,CAAC6I,WAAW,CAACA,WAAAA,CAAYnpD,MAAM,GAAG,CAAE,CAAA,CAAC,CAACgpD,SAAS,CAAA;YAEnF5Y,KAAQ4Y,GAAAA,UAAAA,CAAUlI,iBAAiB,CAAC,CAAA,CAAA,CAAA;YAEpC,OAAO1Q,KAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAK,IAAI7vC,CAAI,GAAA,CAAA,EAAGA,IAAI4oD,WAAYnpD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YAC3C,IAAMg3C,IAAAA,GAAO,IAAI,CAAC+I,aAAa,CAAC6I,WAAW,CAAC5oD,CAAAA,CAAE,CAAC,CAAC0oD,SAAS,CAAA;YACzD,IAAMxR,IAAAA,GAAO,IAAI,CAAC6I,aAAa,CAAC6I,WAAW,CAAC5oD,CAAAA,CAAE,CAAC,CAAC2oD,OAAO,CAAA;AAEvD,YAAA,IAAInoD,CAAKkE,IAAAA,MAAAA,CAAOsyC,IAASx2C,CAAAA,IAAAA,CAAAA,GAAIkE,OAAOwyC,IAAO,CAAA,EAAA;gBACzC,IAAM6R,UAAAA,GAAa,IAAI,CAAChJ,aAAa,CAAC6I,WAAW,CAAC5oD,CAAAA,CAAE,CAAC,CAACyoD,SAAS,CAAA;AAE/DxI,gBAAAA,IAAAA,GAAO,IAAI,CAAC+I,YAAY,CAACJ,WAAW,CAAC5oD,EAAE,EAAEQ,CAAAA,CAAAA,CAAAA;gBAEzCqvC,KAAQkZ,GAAAA,UAAAA,CAAWxI,iBAAiB,CAACN,IAAAA,CAAAA,CAAAA;AACvC,aAAA;AACF,SAAA;QAEA,OAAOpQ,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEAmZ,IAAAA,MAAAA,CAAAA,YAUC,GAVDA,SAAAA,YAAcC,CAAAA,QAAgB,EAAE/5C,IAAY,EAAA;AAC1C,QAAA,IAAMkW,SAAY,GAAA,IAAI,CAAC26B,aAAa,CAACkJ,QAAS,CAAA,CAAA;AAC9C,QAAA,IAAa7jC,iBAAAA,GAAAA,SAAAA,CAAU6pB,MAAM,EAAtBnB,EAAM1oB,GAAAA,iBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAEb,IAAM+9B,YAAAA,GAAe/9B,UAAU+9B,YAAY,CAAA;QAC3C,IAAM+F,aAAAA,GAAgB9M,YAAY,CAACltC,OAAO4+B,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAc,EAAA,CAAA,CAAA,CAAA;AAChE,QAAA,IAAMplD,KAAQqnB,GAAAA,SAAAA,CAAUojC,WAAW,CAACjjC,QAAQ,CAAC2jC,aAAAA,CAAAA,CAAAA;;QAG7C,OAAO5iD,OAAAA,CAAMvI,OAAO,CAAG,EAAA,CAAA,CAAA,CAAA;AACzB,KAAA,CAAA;IAEA,MAASunD,CAAAA,UAIR,GAJD,SAASA,UAAAA,GAAAA;QACP,IAAMsD,WAAAA,GAAc,IAAI,CAACA,WAAW,CAAA;AAEpC,QAAA,OAAO,IAAI,CAAC7I,aAAa,CAAC6I,WAAW,CAACA,WAAYnpD,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAC,CAACkpD,OAAO,CAAA;AACxE,KAAA,CAAA;AA7GWX,IAAAA,OAAAA,eAAAA,CAAAA;EAAwB7C,WA8GpC,EAAA;AAEM,IAAA,eAAMgE,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAWX,IAAA,MAAA,CAAS/D,QAgCR,GAhCD,SAASA,QAAAA,CAAUvoB,KAAgC,EAAA;AACjD,QAAA,IAAOorB,SAAoCprB,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAzBoS,MAAyBpS,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAjBqrB,aAAiBrrB,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAE3C,IAAI,CAACkjB,aAAa,GAAG,EAAC,CAAA;QACtB,IAAI,CAACmI,aAAczoD,CAAAA,MAAM,EAAE;AACzB,YAAA,OAAA;AACF,SAAA;QAEA,IAAK,IAAIO,IAAI,CAAGA,EAAAA,CAAAA,GAAIioD,UAAUxoD,MAAM,GAAG,GAAGO,CAAK,EAAA,CAAA;YAC7C,IAAMgjD,YAAAA,GAAeiF,SAAS,CAACjoD,CAAE,CAAA,CAAA;AACjC,YAAA,IAAMijD,aAAgBgF,GAAAA,SAAS,CAACjoD,CAAAA,GAAI,CAAE,CAAA,CAAA;AACtC,YAAA,IAAMmoD,MAAM9hC,UAAW5c,CAAAA,SAAS,CAACwlC,MAAM,CAACjvC,CAAE,CAAA,CAAA,CAAA;AAC1C,YAAA,IAAMooD,MAAM/hC,UAAW5c,CAAAA,SAAS,CAACwlC,MAAM,CAACjvC,IAAI,CAAE,CAAA,CAAA,CAAA;AAE9C,YAAA,IAAMqoD,MAAMhiC,UAAW5c,CAAAA,SAAS,CAACy+C,aAAa,CAAC,IAAIloD,CAAE,CAAA,CAAA,CAAA;YACrD,IAAMsoD,GAAAA,GAAMjiC,WAAW5c,SAAS,CAACy+C,aAAa,CAAC,CAAA,GAAIloD,IAAI,CAAE,CAAA,CAAA,CAAA;AAEzD,YAAA,IAAwE+iD,oBAAAA,gBAAiBC,CAAAA,YAAAA,EAAcC,aAA/FhU,CAAAA,EAAQsZ,KAAwDxF,iBAAhE9T,CAAAA,MAAAA,EAAYxqB,WAAO+jC,GAA6CzF,kBAApDt+B,KAAoB0+B,EAAAA,YAAAA,GAAgCJ,iBAAhCI,CAAAA,YAAAA,EAAcC,gBAAkBL,iBAAlBK,CAAAA,aAAAA,CAAAA;YACtD,IAAMr5C,CAAAA,GAAIw+C,EAAE,CAAC,CAAE,CAAA,CAAA;AACf,YAAA,IAAM3mD,IAAI2mD,EAAE,CAACA,EAAG9oD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAE3B,YAAA,IAAMgpD,SAAY,GAAA,IAAI5H,UAAWsH,CAAAA,GAAAA,EAAKC,KAAKC,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;YAEhD,IAAI,CAACvI,aAAa,CAAC,CAAGh2C,CAAElE,CAAC,GAAC,GAAGjE,GAAAA,CAAAA,CAAEiE,CAAC,CAAG,GAAG;gBACpCopC,MAAQsZ,EAAAA,EAAAA;gBACRpF,YAAAA,EAAAA,YAAAA;gBACAC,aAAAA,EAAAA,aAAAA;gBACAoF,WAAAA,EAAAA,WAAAA;gBACAC,SAAWA,EAAAA,SAAAA;AACb,aAAA,CAAA;AACF,SAAA;AAEF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASljC,QAmCR,GAnCD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;AAC7B,QAAA,IAAI+wC,IAAO,GAAA,CAAA,CAAA;QACX,IAAMz/C,CAAAA,GAAI47C,YAAYltC,IAAM,EAAA,CAAA,CAAA,CAAA;AAC5B,QAAA,IAAM05C,cAAcjpD,MAAOkQ,CAAAA,IAAI,CAAC,IAAI,CAACkwC,aAAa,CAAA,CAAA;QAElD,IAAM8I,YAAAA,GAAenkD,MAAOkkD,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAC3zC,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AACxD,QAAA,IAAM6zC,UAAapkD,GAAAA,MAAAA,CAAOkkD,WAAW,CAACA,WAAYnpD,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACwV,KAAK,CAAC,GAAA,CAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAE3E,QAAA,IAAIzU,KAAKqoD,YAAc,EAAA;YACrB,IAAMJ,SAAAA,GAAY,IAAI,CAAC1I,aAAa,CAAC6I,WAAW,CAAC,CAAA,CAAE,CAAC,CAACH,SAAS,CAAA;YAE9D,OAAOA,SAAAA,CAAUlI,iBAAiB,CAAC,CAAA,CAAA,CAAA;AAErC,SAAA;AACA,QAAA,IAAI//C,KAAKsoD,UAAY,EAAA;AACnB,YAAA,IAAML,UAAY,GAAA,IAAI,CAAC1I,aAAa,CAAC6I,WAAW,CAACA,WAAAA,CAAYnpD,MAAM,GAAG,CAAE,CAAA,CAAC,CAACgpD,SAAS,CAAA;YAEnF,OAAOA,UAAAA,CAAUlI,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACrC,SAAA;AAEA,QAAA,IAAK,IAAIvgD,CAAI,GAAA,CAAA,EAAGA,IAAI4oD,WAAYnpD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YAC3C,IAAqB4oD,oBAAAA,GAAAA,WAAW,CAAC5oD,CAAE,CAAA,CAACiV,KAAK,CAAC,GAAA,CAAA,EAAnC+hC,IAAc4R,GAAAA,oBAAAA,CAAAA,CAAAA,CAAAA,EAAR1R,IAAQ0R,GAAAA,oBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAErB,YAAA,IAAIpoD,CAAKkE,IAAAA,MAAAA,CAAOsyC,IAASx2C,CAAAA,IAAAA,CAAAA,GAAIkE,OAAOwyC,IAAO,CAAA,EAAA;gBACzC,IAAMuR,UAAAA,GAAY,IAAI,CAAC1I,aAAa,CAAC6I,WAAW,CAAC5oD,CAAAA,CAAE,CAAC,CAACyoD,SAAS,CAAA;AAE9DxI,gBAAAA,IAAAA,GAAO,IAAI,CAAC+I,YAAY,CAACJ,WAAW,CAAC5oD,EAAE,EAAEQ,CAAAA,CAAAA,CAAAA;gBAEzC,OAAOioD,UAAAA,CAAUlI,iBAAiB,CAACN,IAAAA,CAAAA,CAAAA;AACrC,aAAA;AACF,SAAA;QAEA,IAAMwI,UAAAA,GAAY,IAAI,CAAC1I,aAAa,CAAC6I,WAAW,CAAC,CAAA,CAAE,CAAC,CAACH,SAAS,CAAA;QAE9D,OAAOA,UAAAA,CAAUlI,iBAAiB,CAAC,CAAA,CAAA,CAAA;AACrC,KAAA,CAAA;AAEAyI,IAAAA,MAAAA,CAAAA,YAUC,GAVDA,SAAAA,YAAcC,CAAAA,QAAgB,EAAE/5C,IAAY,EAAA;AAC1C,QAAA,IAAMkW,SAAY,GAAA,IAAI,CAAC26B,aAAa,CAACkJ,QAAS,CAAA,CAAA;AAC9C,QAAA,IAAa7jC,iBAAAA,GAAAA,SAAAA,CAAU6pB,MAAM,EAAtBnB,EAAM1oB,GAAAA,iBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAEb,IAAM+9B,YAAAA,GAAe/9B,UAAU+9B,YAAY,CAAA;QAC3C,IAAM+F,aAAAA,GAAgB9M,YAAY,CAACltC,OAAO4+B,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAc,EAAA,CAAA,CAAA,CAAA;AAChE,QAAA,IAAMplD,KAAQqnB,GAAAA,SAAAA,CAAUojC,WAAW,CAACjjC,QAAQ,CAAC2jC,aAAAA,CAAAA,CAAAA;;QAG7C,OAAO5iD,OAAAA,CAAMvI,OAAO,CAAG,EAAA,CAAA,CAAA,CAAA;AACzB,KAAA,CAAA;IAEA,MAASunD,CAAAA,UAIR,GAJD,SAASA,UAAAA,GAAAA;AACP,QAAA,IAAMsD,cAAcjpD,MAAOkQ,CAAAA,IAAI,CAAC,IAAI,CAACkwC,aAAa,CAAA,CAAA;AAElD,QAAA,OAAOr7C,MAAOkkD,CAAAA,WAAW,CAACA,WAAAA,CAAYnpD,MAAM,GAAG,CAAE,CAAA,CAACwV,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAA,CAAA;AACjE,KAAA,CAAA;AAlGWk0C,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBhE,WAmGpC,EAAA;AAED,SAASiC,gBAAAA,CAAkB5mD,CAAS,EAAEitC,EAAU,EAAEC,EAAU,EAAE6W,EAAU,EAAElB,EAAU,EAAA;AAClF,IAAA,IAAMh3C,IAAI7L,CAAIitC,GAAAA,EAAAA,CAAAA;AAEd,IAAA,OAAO,CAAC8W,EAAKA,GAAAA,EAAAA,GAAK,CAAClB,EAAAA,GAAKkB,EAAC,IAAKl4C,KAAKqhC,EAAAA,GAAKD,EAAC,CAAC,IAAKphC,CAAI,GAAA,CAAA,CAAA;AACrD,CAAA;AAEA,SAASo6C,sBAAAA,CAAwBjmD,CAAS,EAAEitC,EAAU,EAAEC,EAAU,EAAE6W,EAAU,EAAElB,EAAU,EAAA;AACxF,IAAA,IAAMf,KAAK9hD,CAAIA,GAAAA,CAAAA,CAAAA;AACf,IAAA,IAAM+hD,KAAKD,EAAK9hD,GAAAA,CAAAA,CAAAA;AAChB,IAAA,IAAM4oD,MAAM3b,EAAKA,GAAAA,EAAAA,CAAAA;AACjB,IAAA,IAAM4b,MAAMD,GAAM3b,GAAAA,EAAAA,CAAAA;AAElB,IAAA,OAAO,CAAC,CAAI8U,GAAAA,EAAAA,IAAMgC,EAAKlB,GAAAA,EAAC,CAAK,GAAA,CAAA,GAAIf,EAAM7U,IAAAA,EAAK4V,GAAAA,EAAAA,GAAK3V,KAAK6W,EAAC,CAAA,GAAK8E,GAAO,IAAA,CAAI9E,GAAAA,EAAAA,GAAKlB,EAAC,CAAA,GAAK,IAAI+F,GAAM1b,GAAAA,EAAAA,GAAK6W,EAAC,KAAM,CAAA,IAAK9W,EAAAA,GAAKC,EAAC,CAAC,CAAA,CAAA;AACtH,CAAA;AAEA,SAASka,kBAAoB14C,CAAAA,IAAY,EAAEo6C,SAAmB,EAAEC,SAAmB,EAAA;AACjF,IAAA,IAAMxjD,KAAKwjD,SAAS,CAACzE,eAAe,GAAGwE,SAAS,CAACxE,cAAe,CAAA,CAAA;AAEhE,IAAA,IAAM0E,EAAKF,GAAAA,SAAS,CAACrE,qBAAAA,CAAsB,GAAGl/C,EAAAA,CAAAA;AAC9C,IAAA,IAAM0jD,EAAKF,GAAAA,SAAS,CAACvE,oBAAAA,CAAqB,GAAGj/C,EAAAA,CAAAA;IAE7C,IAAMvF,CAAAA,GAAI,CAAC0O,IAAAA,GAAOo6C,SAAS,CAACxE,cAAAA,CAAe,IAAI/+C,EAAAA,CAAAA;AAC/C,IAAA,IAAMu8C,KAAK9hD,CAAIA,GAAAA,CAAAA,CAAAA;AACf,IAAA,IAAM+hD,KAAKD,EAAK9hD,GAAAA,CAAAA,CAAAA;AAEhB,IAAA,IAAMiF,CAAI,GAAA,CAAA,GAAI88C,EAAK,GAAA,CAAA,GAAID,EAAK,GAAA,CAAA,CAAA;IAC5B,IAAM58C,CAAAA,GAAI68C,EAAK,GAAA,CAAA,GAAID,EAAK9hD,GAAAA,CAAAA,CAAAA;AACxB,IAAA,IAAMhB,IAAI+iD,EAAKD,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMziD,CAAI,GAAA,CAAC,CAAI0iD,GAAAA,EAAAA,GAAK,CAAID,GAAAA,EAAAA,CAAAA;;AAGxB,IAAA,OAAO78C,CAAI6jD,GAAAA,SAAS,CAACvE,eAAAA,CAAgB,GAAGr/C,CAAAA,GAAI8jD,EAAKhqD,GAAAA,CAAAA,GAAIiqD,EAAK5pD,GAAAA,CAAAA,GAAI0pD,SAAS,CAACxE,eAAgB,CAAA,CAAA;AAC1F,CAAA;AAEO,SAAS2E,yBAAAA,CAA2BlE,IAAkB,EAAEznD,KAA0C,EAAA;AACvG,IAAA,IAAIA,KAAO,EAAA;QACT,IAAM2X,IAAAA,GAAO3X,KAAK,CAAC,CAAE,CAAA,CAAA;QACrB,IAAM8R,IAAAA,GAAO9R,KAAK,CAAC,CAAE,CAAA,CAAA;AAErB,QAAA,IAAI2X,IAASiO,KAAAA,SAAc,CAACgmC,KAAK,EAAE;YACjCnE,IAAKM,CAAAA,MAAM,CAACnkD,IAAI,CAACkO,IAAAA,CAAAA,CAAAA;YACjB,IAAI+5C,MAAAA,GAAS/5C,KAAKpQ,MAAM,CAAA;AAExB,YAAA,IAAIoQ,IAAI,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,GAAG,CAAG,EAAA;AAClB+5C,gBAAAA,MAAAA,EAAAA,CAAAA;AACF,aAAA;YACA,IAAI/5C,IAAI,CAACA,IAAKpQ,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAC,CAAE,CAAA,GAAG,CAAG,EAAA;AAChCmqD,gBAAAA,MAAAA,EAAAA,CAAAA;AACF,aAAA;AACApE,YAAAA,IAAAA,CAAKhiD,KAAK,IAAIomD,MAAAA,CAAAA;AACdpE,YAAAA,IAAAA,CAAKj/C,GAAG,GAAG/B,IAAAA,CAAK+B,GAAG,CAACi/C,IAAAA,CAAKj/C,GAAG,EAAEqjD,MAAAA,CAAAA,CAAAA;AAC9BpE,YAAAA,IAAAA,CAAKqE,UAAU,IAAID,MAAAA,CAAAA;AACrB,SAAA,MAAO,IAAIl0C,IAASiO,KAAAA,SAAc,CAACm5B,IAAI,EAAE;YACvC,IAAI8M,OAAAA,GAAS/5C,KAAKpQ,MAAM,CAAA;AAExB,YAAA,IAAImqD,OAAW,KAAA,CAAA,IAAK/5C,IAAI,CAAC,EAAE,CAAC,CAAA,CAAE,KAAK,CAAA,IAAKA,IAAI,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,KAAK,CAAG,EAAA;AACxD,gBAAA,OAAA;AACF,aAAA;AACA,YAAA,IAAIA,IAAI,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,GAAG,CAAG,EAAA;AAClB+5C,gBAAAA,OAAAA,EAAAA,CAAAA;AACF,aAAA;YACA,IAAI/5C,IAAI,CAACA,IAAKpQ,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAC,CAAE,CAAA,GAAG,CAAG,EAAA;AAChCmqD,gBAAAA,OAAAA,EAAAA,CAAAA;AACF,aAAA;AACA,YAAA,IAAMtC,YAAe9iD,GAAAA,IAAAA,CAAKC,IAAI,CAACmlD,OAAS,GAAA,CAAA,CAAA,CAAA;AAExCpE,YAAAA,IAAAA,CAAK+B,YAAY,IAAID,YAAAA,CAAAA;YACrB9B,IAAKM,CAAAA,MAAM,CAACnkD,IAAI,CAACkO,IAAAA,CAAAA,CAAAA;AACjB21C,YAAAA,IAAAA,CAAKhiD,KAAK,IAAI8jD,YAAAA,CAAAA;AACd9B,YAAAA,IAAAA,CAAKj/C,GAAG,GAAG/B,IAAAA,CAAK+B,GAAG,CAACi/C,IAAAA,CAAKj/C,GAAG,EAAE+gD,YAAAA,CAAAA,CAAAA;AAChC,SAAA,MAAO,IAAI5xC,IAASiO,KAAAA,SAAc,CAACmmC,YAAY,EAAE;YAC/C,IAAMF,OAAAA,GAAS/5C,IAAKpQ,CAAAA,MAAM,GAAG,CAAA,CAAA;YAE7B+lD,IAAKhiD,CAAAA,KAAK,IAAI,CAAIomD,GAAAA,OAAAA,CAAAA;YAClBpE,IAAKM,CAAAA,MAAM,CAACnkD,IAAI,CAACkO,IAAAA,CAAAA,CAAAA;YACjB21C,IAAKj/C,CAAAA,GAAG,GAAG/B,IAAK+B,CAAAA,GAAG,CAACi/C,IAAKj/C,CAAAA,GAAG,EAAE,CAAIqjD,GAAAA,OAAAA,CAAAA,CAAAA;YAClCpE,IAAKqE,CAAAA,UAAU,IAAI,CAAID,GAAAA,OAAAA,CAAAA;AACzB,SAAA;AACF,KAAA;AACF,CAAA;AAEO,SAASG,kBAAAA,GAAAA;IACd,OAAO;AACLjE,QAAAA,MAAAA,EAAQ,EAAE;QACVtiD,KAAO,EAAA,CAAA;QACP+C,GAAK,EAAA,CAAA;QACLghD,YAAc,EAAA,CAAA;QACdsC,UAAY,EAAA,CAAA;AACd,KAAA,CAAA;AACF;;ACxwBA,SAASG,4BAAAA,GAAAA;;;;;IAKL,IAAI;;;AAGA,QAAA,IAAIlmC,MAAS,GAAA,CAACmmC,OAAQjpD,CAAAA,SAAS,CAACkpD,OAAO,CAACzoD,IAAI,CAAC3B,QAAQqqD,SAAS,CAACF,OAAS,EAAA,EAAE,EAAE,WAAY,EAAA,CAAA,CAAA,CAAA;KAC1F,CAAA,OAAO5pD,GAAG,EAAC;IACb,OAAQ2pD,CAAAA,4BAA+B,GAAA,SAAA,4BAAA,GAAA;AACnC,QAAA,OAAO,CAAC,CAAClmC,MAAAA,CAAAA;KACb,GAAA,CAAA;AACJ;;ACXA,SAASsmC,UAAWC,CAAAA,MAAM,EAAE9rD,IAAI,EAAE+rD,KAAK,EAAA;IACnC,IAAIN,4BAAAA,EAAAA,EAAgCI,UAAatqD,GAAAA,OAAAA,CAAQqqD,SAAS,CAAA;AAC7D,SAAA;AACDC,QAAAA,UAAAA,GAAa,SAASD,SAAUE,CAAAA,MAAM,EAAE9rD,IAAI,EAAE+rD,KAAK,EAAA;AAC/C,YAAA,IAAI7kD,CAAI,GAAA;AAAC,gBAAA,IAAA;AAAK,aAAA,CAAA;AACdA,YAAAA,CAAAA,CAAE9D,IAAI,CAAClD,KAAK,CAACgH,CAAGlH,EAAAA,IAAAA,CAAAA,CAAAA;AAChB,YAAA,IAAI0+B,cAAc9oB,QAAS5R,CAAAA,IAAI,CAAC9D,KAAK,CAAC4rD,MAAQ5kD,EAAAA,CAAAA,CAAAA,CAAAA;AAC9C,YAAA,IAAI8kD,WAAW,IAAIttB,WAAAA,EAAAA,CAAAA;AAEnB,YAAA,IAAIqtB,KAAOzyC,EAAAA,iBAAAA,CAAkB0yC,QAAUD,EAAAA,KAAAA,CAAMtpD,SAAS,CAAA,CAAA;YAEtD,OAAOupD,QAAAA,CAAAA;AACX,SAAA,CAAA;AACJ,KAAA;IAEA,OAAOH,UAAAA,CAAW3rD,KAAK,CAAC,IAAMD,EAAAA,SAAAA,CAAAA,CAAAA;AAClC;;ACVO,IAAA,YAAMgsD,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;AACHzsD,QAAAA,KAAAA,CAAAA,KAAAA,GAAQ,IAAI4N,OAAAA,EAAAA,CAAAA;;;AADT6+C,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAQX,IAAA,MAAA,CAASpF,QAKR,GALD,SAASA,QAAAA,CAAUvnD,GAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC4sD,MAAM,GAAGC,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAAC8sD,MAAM,GAAGD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAAC+sD,MAAM,GAAGF,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAACgtD,MAAM,GAAGH,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,QASR,GATD,SAASA,QAAAA,CAAU/kB,CAAS,EAAA;AAC1B,QAAA,IAAMqF,IAAI,IAAI,CAAC4kD,MAAM,CAACllC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMI,IAAI,IAAI,CAAC+pD,MAAM,CAACplC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMqJ,IAAI,IAAI,CAAC+gD,MAAM,CAACrlC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMoL,IAAI,IAAI,CAACi/C,MAAM,CAACtlC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAI,CAACzC,KAAK,CAACiH,GAAG,CAACa,CAAAA,EAAGjF,GAAGiJ,CAAG+B,EAAAA,CAAAA,CAAAA,CAAAA;QAExB,OAAO,IAAI,CAAC7N,KAAK,CAAA;AACnB,KAAA,CAAA;IAEA,MAASunD,CAAAA,UAOR,GAPD,SAASA,UAAAA,GAAAA;QACP,OAAO9gD,IAAAA,CAAK+B,GAAG,CACb,IAAI,CAACkkD,MAAM,CAACnF,UAAU,EACtB,EAAA,IAAI,CAACqF,MAAM,CAACrF,UAAU,EAAA,EACtB,IAAI,CAACsF,MAAM,CAACtF,UAAU,EAAA,EACtB,IAAI,CAACuF,MAAM,CAACvF,UAAU,EAAA,CAAA,CAAA;AAE1B,KAAA,CAAA;AAjCWkF,IAAAA,OAAAA,YAAAA,CAAAA;EAAqBrF,WAkCjC,EAAA;AAEM,IAAA,YAAM2F,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;AACH/sD,QAAAA,KAAAA,CAAAA,KAAAA,GAAQ,IAAI6L,OAAAA,EAAAA,CAAAA;;;AADTkhD,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAOX,IAAA,MAAA,CAAS1F,QAIR,GAJD,SAASA,QAAAA,CAAUvnD,GAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC4sD,MAAM,GAAGC,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAAC8sD,MAAM,GAAGD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAAC+sD,MAAM,GAAGF,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,QAQR,GARD,SAASA,QAAAA,CAAU/kB,CAAS,EAAA;AAC1B,QAAA,IAAMqF,IAAI,IAAI,CAAC4kD,MAAM,CAACllC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMI,IAAI,IAAI,CAAC+pD,MAAM,CAACplC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMqJ,IAAI,IAAI,CAAC+gD,MAAM,CAACrlC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAI,CAACzC,KAAK,CAACiH,GAAG,CAACa,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;QAErB,OAAO,IAAI,CAAC9L,KAAK,CAAA;AACnB,KAAA,CAAA;IAEA,MAASunD,CAAAA,UAMR,GAND,SAASA,UAAAA,GAAAA;AACP,QAAA,OAAO9gD,KAAK+B,GAAG,CACb,IAAI,CAACkkD,MAAM,CAACnF,UAAU,EAAA,EACtB,IAAI,CAACqF,MAAM,CAACrF,UAAU,EAAA,EACtB,IAAI,CAACsF,MAAM,CAACtF,UAAU,EAAA,CAAA,CAAA;AAE1B,KAAA,CAAA;AA7BWwF,IAAAA,OAAAA,YAAAA,CAAAA;EAAqB3F,WA8BjC,EAAA;AAEM,IAAA,YAAM4F,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;AACHhtD,QAAAA,KAAAA,CAAAA,KAAAA,GAAQ,IAAI6I,OAAAA,EAAAA,CAAAA;;;AADTmkD,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAMX,IAAA,MAAA,CAAS3F,QAGR,GAHD,SAASA,QAAAA,CAAUvnD,GAA0B,EAAA;AAC3C,QAAA,IAAI,CAAC4sD,MAAM,GAAGC,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAAC8sD,MAAM,GAAGD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,QAOR,GAPD,SAASA,QAAAA,CAAU/kB,CAAS,EAAA;AAC1B,QAAA,IAAMqF,IAAI,IAAI,CAAC4kD,MAAM,CAACllC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMI,IAAI,IAAI,CAAC+pD,MAAM,CAACplC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAI,CAACzC,KAAK,CAACiH,GAAG,CAACa,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;QAElB,OAAO,IAAI,CAAC7C,KAAK,CAAA;AACnB,KAAA,CAAA;IAEA,MAASunD,CAAAA,UAKR,GALD,SAASA,UAAAA,GAAAA;AACP,QAAA,OAAO9gD,IAAK+B,CAAAA,GAAG,CACb,IAAI,CAACkkD,MAAM,CAACnF,UAAU,EACtB,EAAA,IAAI,CAACqF,MAAM,CAACrF,UAAU,EAAA,CAAA,CAAA;AAE1B,KAAA,CAAA;AAzBWyF,IAAAA,OAAAA,YAAAA,CAAAA;EAAqB5F,WA0BjC;;;ACxEW6F,CAAAA,SAAAA,WAAAA,EAAAA;;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAMAC,CAAAA,SAAAA,YAAAA,EAAAA;;;;;GAAAA,YAAAA,KAAAA,YAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAOL,IAAA,WAAMC,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAOX,IAAA,MAAA,CAAS9F,QA+BR,GA/BD,SAASA,QAAAA,CAAUvoB,KAAiC,EAAA;QAClD,IAAI,CAACvX,SAAS,GAAG6lC,uBAAwBtuB,CAAAA,KAAAA,CAAAA,CAAAA;QACzC,IAAMorB,SAAAA,GAAY,IAAI,CAAC3iC,SAAS,CAAA;QAEhC,IAAI,CAAC8lC,QAAQ,GAAG,EAAC,CAAA;QACjB,IAAI,CAACv7C,IAAI,GAAG,EAAE,CAAA;QACd,IAAI,CAACw7C,UAAU,GAAG,EAAE,CAAA;QAEpB,IAAK,IAAIrrD,IAAI,CAAGA,EAAAA,CAAAA,GAAIioD,UAAUxoD,MAAM,GAAG,GAAGO,CAAK,EAAA,CAAA;YAC7C,IAAMgjD,YAAAA,GAAeiF,SAAS,CAACjoD,CAAE,CAAA,CAAA;AACjC,YAAA,IAAMijD,aAAgBgF,GAAAA,SAAS,CAACjoD,CAAAA,GAAI,CAAE,CAAA,CAAA;AAEtC,YAAA,IAAuDsrD,kBAAAA,GAAAA,iBAAAA,CAAkBtI,YAAcC,EAAAA,aAAAA,CAAAA,EAA/EhU,SAA+Cqc,kBAA/Crc,CAAAA,MAAAA,EAAQxqB,KAAuC6mC,GAAAA,kBAAAA,CAAvC7mC,KAAO0+B,EAAAA,YAAAA,GAAgCmI,kBAAhCnI,CAAAA,YAAAA,EAAcC,gBAAkBkI,kBAAlBlI,CAAAA,aAAAA,CAAAA;YACrC,IAAMr5C,CAAAA,GAAIklC,MAAM,CAAC,CAAE,CAAA,CAAA;AACnB,YAAA,IAAMrtC,IAAIqtC,MAAM,CAACA,MAAOxvC,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAEnC,YAAA,IAAI,CAACoQ,IAAI,CAAClO,IAAI,CAAKoI,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAET,OAAO,EAAA,EAAO2lC,MAAM,CAAC,CAAE,CAAA,CAAC3lC,OAAO,EAAA,CAAA,CAAA,CAAA;AACpD,YAAA,IAAI,CAACuG,IAAI,CAAClO,IAAI,CAAKC,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAE0H,OAAO,EAAA,EAAO2lC,MAAM,CAAC,CAAE,CAAA,CAAC3lC,OAAO,EAAA,CAAA,CAAA,CAAA;AAEpD,YAAA,IAAM8b,SAAY,GAAA;gBAChB6pB,MAAAA,EAAAA,MAAAA;gBACAkU,YAAAA,EAAAA,YAAAA;gBACAC,aAAAA,EAAAA,aAAAA;gBACA3+B,KAAAA,EAAAA,KAAAA;gBACAikC,SAAWhkD,EAAAA,MAAAA,CAAOqF,EAAElE,CAAC,CAAA;gBACrB8iD,OAASjkD,EAAAA,MAAAA,CAAO9C,EAAEiE,CAAC,CAAA;AACrB,aAAA,CAAA;YAEA,IAAI,CAACulD,QAAQ,CAAC,CAAGrhD,CAAElE,CAAC,GAAC,GAAGjE,GAAAA,CAAAA,CAAEiE,CAAC,CAAG,GAAGuf,SAAAA,CAAAA;AACjC,YAAA,IAAI,CAACimC,UAAU,CAAC1pD,IAAI,CAACyjB,SAAAA,CAAAA,CAAAA;AACvB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASG,QAmCR,GAnCD,SAASA,QAAAA,CAAUrW,IAAY,EAAA;AAC7B,QAAA,IAAI4U,MAAS,GAAA,CAAA,CAAA;AACb,QAAA,IAAMynC,UAAa,GAAA,IAAI,CAACjmC,SAAS,CAAC7lB,MAAM,CAAA;QAExC,IAAIyP,IAAAA,IAAQ,IAAI,CAACoW,SAAS,CAAC,CAAE,CAAA,CAACpW,IAAI,EAAE;AAClC4U,YAAAA,MAAAA,GAAS,IAAI,CAACwB,SAAS,CAAC,CAAA,CAAE,CAACvnB,KAAK,CAAA;SAC3B,MAAA,IAAImR,IAAO,GAAA,IAAI,CAACoW,SAAS,CAACimC,UAAa,GAAA,CAAA,CAAE,CAACr8C,IAAI,EAAE;YACrD,IAAK,IAAIlP,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACslB,SAAS,CAAC7lB,MAAM,GAAG,CAAA,EAAGO,CAAK,EAAA,CAAA;AAClD,gBAAA,IAAMg3C,OAAO,IAAI,CAAC1xB,SAAS,CAACtlB,CAAAA,CAAE,CAACkP,IAAI,CAAA;gBACnC,IAAMgoC,IAAAA,GAAO,IAAI,CAAC5xB,SAAS,CAACtlB,CAAI,GAAA,CAAA,CAAE,CAACkP,IAAI,CAAA;gBAEvC,IAAIA,IAAAA,IAAQ8nC,IAAQ9nC,IAAAA,IAAAA,GAAOgoC,IAAM,EAAA;AAC/B,oBAAA,IAAM9xB,SAAY,GAAA,IAAI,CAACimC,UAAU,CAACrrD,CAAE,CAAA,CAAA;AACpC,oBAAA,IAAM8tC,EAAK1oB,GAAAA,SAAAA,CAAU6pB,MAAM,CAAC,CAAE,CAAA,CAAA;oBAC9B,IAAMkU,YAAAA,GAAe/9B,UAAU+9B,YAAY,CAAA;oBAC3C,IAAMC,aAAAA,GAAgBh+B,UAAUg+B,aAAa,CAAA;AAC7C,oBAAA,IAAM8F,gBAAgB,CAACh6C,OAAO4+B,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAAA,CAAAA;AACtC,oBAAA,IAAIplD,KAAQ,GAAA,CAAA,CAAA;AAEZ,oBAAA,IAAI,IAAI,CAACunB,SAAS,CAACtlB,CAAE,CAAA,CAACwrD,WAAW,KAAyB,CAAA,EAAA;wBACxDztD,KAAQmrD,GAAAA,aAAAA,CAAAA;qBACH,MAAA;AACLnrD,wBAAAA,KAAAA,GAAQqnB,SAAUX,CAAAA,KAAK,CAACc,QAAQ,CAAC2jC,aAAAA,CAAAA,CAAAA;AACnC,qBAAA;oBAEAplC,MAASgqB,GAAAA,EAAAA,CAAGltC,CAAC,GAAGwiD,aAAgBrlD,GAAAA,KAAAA,CAAAA;AAEhC,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;SACK,MAAA,IAAImR,IAAQ,IAAA,IAAI,CAACoW,SAAS,CAACimC,UAAa,GAAA,CAAA,CAAE,CAACr8C,IAAI,EAAE;AACtD4U,YAAAA,MAAAA,GAAS,IAAI,CAACwB,SAAS,CAACimC,UAAa,GAAA,CAAA,CAAE,CAACxtD,KAAK,CAAA;AAC/C,SAAA;QAEA,OAAO+lB,MAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAS81B,CAAAA,iBA0BR,GA1BD,SAASA,iBAAAA,CAAmBnM,EAAU,EAAEC,EAAU,EAAEsY,EAAM,EAAA;AAANA,QAAAA,IAAAA,eAAAA,EAAK,GAAA,CAAA,CAAA;AACvD,QAAA,IAAM92C,IAAO,GAACw+B,CAAAA,EAAAA,GAAKD,EAAC,IAAKuY,EAAAA,CAAAA;AAEzB,QAAA,IAAIliC,MAAS,GAAA,CAAA,CAAA;AACb,QAAA,IAAM8kC,cAAcjpD,MAAOkQ,CAAAA,IAAI,CAAC,IAAI,CAACu7C,QAAQ,CAAA,CAAA;QAC7C,IAAMvC,YAAAA,GAAe,IAAI,CAACuC,QAAQ,CAACxC,WAAW,CAAC,CAAA,CAAE,CAAC,CAACF,SAAS,CAAA;AAE5D,QAAA,IAAIx5C,QAAQ25C,YAAc,EAAA;YACxB,OAAO,CAAA,CAAA;AACT,SAAA;AACA,QAAA,IAAK,IAAI7oD,CAAI,GAAA,CAAA,EAAGA,IAAI4oD,WAAYnpD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YAC3C,IAAMg3C,IAAAA,GAAO,IAAI,CAACoU,QAAQ,CAACxC,WAAW,CAAC5oD,CAAAA,CAAE,CAAC,CAAC0oD,SAAS,CAAA;YACpD,IAAMxR,IAAAA,GAAO,IAAI,CAACkU,QAAQ,CAACxC,WAAW,CAAC5oD,CAAAA,CAAE,CAAC,CAAC2oD,OAAO,CAAA;YAElD,IAAIz5C,IAAAA,IAAQxK,OAAOwyC,IAAO,CAAA,EAAA;gBACxBpzB,MAAUkiC,IAAAA,EAAAA,GAAK,IAAI,CAACyF,sBAAsB,CAAC7C,WAAW,CAAC5oD,CAAE,CAAA,EAAE0E,MAAOwyC,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACpE,aAAA;AAEA,YAAA,IAAIhoC,IAAQxK,IAAAA,MAAAA,CAAOsyC,IAAS9nC,CAAAA,IAAAA,IAAAA,GAAOxK,OAAOwyC,IAAO,CAAA,EAAA;gBAC/CpzB,MAAUkiC,IAAAA,EAAAA,GAAK,IAAI,CAACyF,sBAAsB,CAAC7C,WAAW,CAAC5oD,EAAE,EAAEkP,IAAAA,CAAAA,CAAAA;AAE3D,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAO4U,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAASg2B,kBAER,GAFD,SAASA,kBAAoBrM,CAAAA,EAAU,EAAEC,EAAU,EAAA;QACjD,OAAO,IAAI,CAACkM,iBAAiB,CAAC,CAAA,EAAGlM,MAAM,IAAI,CAACkM,iBAAiB,CAAC,CAAGnM,EAAAA,EAAAA,CAAAA,CAAAA;AACnE,KAAA,CAAA;;AAEAge,IAAAA,MAAAA,CAAAA,sBA0BC,GA1BDA,SAAAA,sBAAwBxC,CAAAA,QAAgB,EAAE/5C,IAAY,EAAA;AACpD,QAAA,IAAMkW,SAAY,GAAA,IAAI,CAACgmC,QAAQ,CAACnC,QAAS,CAAA,CAAA;AACzC,QAAA,IAAa7jC,iBAAAA,GAAAA,SAAAA,CAAU6pB,MAAM,EAAtBnB,EAAM1oB,GAAAA,iBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACb,IAAM+9B,YAAAA,GAAe/9B,UAAU+9B,YAAY,CAAA;QAC3C,IAAMC,aAAAA,GAAgBh+B,UAAUg+B,aAAa,CAAA;AAC7C,QAAA,IAAMsI,QAAW,GAAA,EAAA,CAAA;AACjB,QAAA,IAAIC,KAAQ,GAAA,CAAA,CAAA;AACZ,QAAA,IAAMt/C,IAAI,CAAC6C,OAAO4+B,EAAGjoC,CAAAA,CAAC,IAAI6lD,QAAAA,CAAAA;AAE1B,QAAA,IAAK,IAAI1rD,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,IAAK0rD,UAAU1rD,CAAK,EAAA,CAAA;AAClC,YAAA,IAAMQ,IAAIR,CAAIqM,GAAAA,CAAAA,CAAAA;AACd,YAAA,IAAM68C,gBAAgB1oD,CAAI2iD,GAAAA,YAAAA,CAAAA;YAC1B,IAAMviD,CAAAA,GAAIktC,GAAGltC,CAAC,GAAGwiD,gBAAgBh+B,SAAUX,CAAAA,KAAK,CAACc,QAAQ,CAAC2jC,aAAAA,CAAAA,CAAAA;YAE1D,IAAIlpD,CAAAA,KAAM,CAAKA,IAAAA,CAAAA,KAAM0rD,QAAU,EAAA;gBAC7BC,KAAS/qD,IAAAA,CAAAA,CAAAA;aACJ,MAAA,IAAIZ,CAAI,GAAA,CAAA,KAAM,CAAG,EAAA;AACtB2rD,gBAAAA,KAAAA,IAAS,CAAI/qD,GAAAA,CAAAA,CAAAA;aACR,MAAA;AACL+qD,gBAAAA,KAAAA,IAAS,CAAI/qD,GAAAA,CAAAA,CAAAA;AACf,aAAA;AAEF,SAAA;AACA+qD,QAAAA,KAAAA,IAASt/C,CAAI,GAAA,CAAA,CAAA;QAEb,OAAOs/C,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAASpG,SAWR,GAXD,SAASA,SAAAA,CAAWC,IAAkB,EAAA;QACpC,IAAMhiD,KAAAA,GAAQgiD,KAAKhiD,KAAK,CAAA;AACxB,QAAA,IAAMooD,KAAQ,GAAA,IAAI,CAAC/7C,IAAI,CAACpQ,MAAM,CAAA;AAE9B+lD,QAAAA,IAAAA,CAAKM,MAAM,CAACnkD,IAAI,CAAC,IAAI,CAAA,CAAA;QACrB6jD,IAAKhiD,CAAAA,KAAK,GAAGA,KAAQooD,GAAAA,KAAAA,CAAAA;;AAErBpG,QAAAA,IAAAA,CAAKj/C,GAAG,GAAG/B,IAAAA,CAAK+B,GAAG,CAACi/C,IAAAA,CAAKj/C,GAAG,EAAEqlD,KAAAA,CAAAA,CAAAA;AAC9BpG,QAAAA,IAAAA,CAAKqE,UAAU,IAAI+B,KAAAA,CAAAA;AAEnB,QAAA,OAAO,IAAInT,YAAa,CAAA;AAAC,YAAA,CAAA;AAAGj1C,YAAAA,KAAAA,GAAQ,CAAIooD,GAAAA,KAAAA;AAAOpoD,YAAAA,KAAAA;AAAOooD,YAAAA,KAAAA;AAAM,SAAA,CAAA,CAAA;AAC9D,KAAA,CAAA;IAEA,MAAS9sC,CAAAA,MASR,GATD,SAASA,MAAAA,GAAAA;QACP,IAAMjP,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AACtB,QAAA,IAAM+B,IAAO,GAAA,IAAI6mC,YAAa5oC,CAAAA,IAAAA,CAAKpQ,MAAM,GAAG,CAAA,CAAA,CAAA;QAE5C,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAG6lD,MAAS,GAAA,CAAA,EAAG7lD,CAAI6P,GAAAA,IAAAA,CAAKpQ,MAAM,EAAEO,CAAK6lD,EAAAA,EAAAA,MAAAA,IAAU,CAAG,CAAA;AAC7Dj0C,YAAAA,IAAAA,CAAK5M,GAAG,CAAC6K,IAAI,CAAC7P,EAAE,EAAE6lD,MAAAA,CAAAA,CAAAA;AACpB,SAAA;QAEA,OAAOj0C,IAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAS0zC,CAAAA,UAER,GAFD,SAASA,UAAAA,GAAAA;AACP,QAAA,OAAO,IAAI,CAAChgC,SAAS,CAAC,IAAI,CAACA,SAAS,CAAC7lB,MAAM,GAAG,CAAE,CAAA,CAACyP,IAAI,CAAA;AACvD,KAAA,CAAA;AAnKWg8C,IAAAA,OAAAA,WAAAA,CAAAA;EAAoB/F,WAoKhC,EAAA;AAED,SAASmG,iBAAAA,CAAmBtI,YAAsB,EAAEC,aAAuB,EAAA;AAMzE,IAAA,IAAMnV,KAAK,IAAIlnC,OAAAA,CAAQo8C,aAAa9zC,IAAI,EAAE8zC,aAAajlD,KAAK,CAAA,CAAA;AAC5D,IAAA,IAAMgwC,KAAK,IAAInnC,OAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMonC,KAAK,IAAIpnC,OAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMq1C,KAAK,IAAIr1C,OAAAA,EAAAA,CAAAA;IAEf,IAAMilD,UAAAA,GAAa7I,YAAa8I,CAAAA,YAAY,KAC1C9I,CAAAA,IAAAA,YAAAA,CAAa8I,YAAY,KAAA,CAAA,IACzB7I,aAAc6I,CAAAA,YAAY,KAC1B7I,CAAAA,IAAAA,aAAAA,CAAc6I,YAAY,KAAA,CAAA,CAAA;IAE5B,IAAMpK,UAAAA,GAAasB,aAAawI,WAAW,KAAA,CAAA,CAAA;AAE3C,IAAA,IAAMO,cAAc,CAACF,UAAa7I,GAAAA,YAAAA,CAAagJ,SAAS,GAAG,CAAA,KAAM/I,cAAc/zC,IAAI,GAAG8zC,YAAa9zC,CAAAA,IAAI,CAAI,GAAA,CAAA,CAAA;AAE3G6+B,IAAAA,EAAAA,CAAGloC,CAAC,GAAGm9C,YAAa9zC,CAAAA,IAAI,GAAG68C,WAAAA,CAAAA;IAC3Bhe,EAAGntC,CAAAA,CAAC,GAAGoiD,YAAAA,CAAajlD,KAAK,GAAGguD,WAAerK,IAAAA,UAAa,GAAA,CAAA,GAAIsB,YAAaiJ,CAAAA,QAAQ,CAAD,CAAA;AAEhF,IAAA,IAAMC,aAAa,CAACL,UAAa5I,GAAAA,aAAAA,CAAckJ,QAAQ,GAAG,CAAA,KAAMlJ,cAAc/zC,IAAI,GAAG8zC,YAAa9zC,CAAAA,IAAI,CAAI,GAAA,CAAA,CAAA;AAE1G8+B,IAAAA,EAAAA,CAAGnoC,CAAC,GAAGo9C,aAAc/zC,CAAAA,IAAI,GAAGg9C,UAAAA,CAAAA;IAC5Ble,EAAGptC,CAAAA,CAAC,GAAGqiD,aAAAA,CAAcllD,KAAK,GAAGmuD,UAAcxK,IAAAA,UAAa,GAAA,CAAA,GAAIuB,aAAcmJ,CAAAA,OAAO,CAAD,CAAA;IAEhFnQ,EAAGp2C,CAAAA,CAAC,GAAGo9C,aAAAA,CAAc/zC,IAAI,CAAA;AACzB+sC,IAAAA,EAAAA,CAAGr7C,CAAC,GAAG8gD,UAAAA,GAAasB,aAAajlD,KAAK,GAAGklD,cAAcllD,KAAK,CAAA;IAE5DyU,WAAYw7B,CAAAA,EAAAA,CAAAA,CAAAA;IACZx7B,WAAYypC,CAAAA,EAAAA,CAAAA,CAAAA;AACZ,IAAA,IAAMkH,YAAelH,GAAAA,EAAAA,CAAGp2C,CAAC,GAAGioC,GAAGjoC,CAAC,CAAA;AAChC,IAAA,IAAMu9C,aAAgBnH,GAAAA,EAAAA,CAAGr7C,CAAC,GAAGktC,GAAGltC,CAAC,CAAA;AACjC,IAAA,IAAIyiD,EAAIle,EAAAA,EAAAA,CAAAA;IACR,IAAIme,EAAAA,GAAKlH,WAAY,CAACrO,CAAAA,EAAAA,CAAGloC,CAAC,GAAGioC,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAc,EAAA,CAAA,CAAA,CAAA;IACnD,IAAIje,EAAAA,GAAKkX,WAAY,CAACpO,CAAAA,EAAAA,CAAGnoC,CAAC,GAAGioC,EAAGjoC,CAAAA,CAAC,IAAIs9C,YAAc,EAAA,CAAA,CAAA,CAAA;IAEnD,IAAIjH,YAAAA,CAAakH,eAAe,CAAI,CAAA,EAAA;AAClCC,QAAAA,EAAAA,GAAKle,EAAKoe,GAAAA,GAAAA,CAAAA;KACL,MAAA;QACLF,EAAKjH,GAAAA,WAAAA,CAAY,CAACrO,EAAGntC,CAAAA,CAAC,GAAGktC,EAAGltC,CAAAA,CAAC,IAAIwiD,aAAe,EAAA,CAAA,CAAA,CAAA;QAChDje,EAAKiX,GAAAA,WAAAA,CAAY,CAACpO,EAAGptC,CAAAA,CAAC,GAAGktC,EAAGltC,CAAAA,CAAC,IAAIwiD,aAAe,EAAA,CAAA,CAAA,CAAA;AAClD,KAAA;AAEA,IAAA,IAAIE,KAAK,CAAG,EAAA;AACVh8C,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,+BAAiC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC3DqH,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AACA,IAAA,IAAIpe,KAAK,CAAG,EAAA;AACV59B,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,+BAAiC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC3D/W,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AACA,IAAA,IAAIoe,KAAK,CAAG,EAAA;AACVh8C,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gCAAkC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC5DqH,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AACA,IAAA,IAAIpe,KAAK,CAAG,EAAA;AACV59B,QAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gCAAkC8vC,EAAAA,EAAAA,EAAIC,IAAIC,EAAIiO,EAAAA,EAAAA,CAAAA,CAAAA;QAC5D/W,EAAK,GAAA,CAAA,CAAA;AACP,KAAA;AAEA,IAAA,IAAMt3B,GAAM,GAAC,CAAA,MAAA,GAAS01C,KAAK,GAAMD,GAAAA,EAAAA,GAAK,GAAMne,GAAAA,EAAAA,GAAK,GAAMC,GAAAA,EAAC,EAAGv2B,OAAO,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;IAC1E,IAAI40C,SAAAA,CAAAA;IAEJ,IAAIzF,SAAS,CAACnwC,GAAAA,CAAI,EAAE;QAClB41C,SAAYzF,GAAAA,SAAS,CAACnwC,GAAI,CAAA,CAAA;KACrB,MAAA;QACL,IAAIsuC,YAAAA,CAAakH,eAAe,CAAI,CAAA,EAAA;AAClCI,YAAAA,SAAAA,GAAY,IAAIvC,YAAAA,EAAAA,CAAAA;AAClB,SAAA,MAAO,IAAI4K,UAAY,EAAA;AACrBrI,YAAAA,SAAAA,GAAY,IAAIvC,YAAAA,CAAaqC,EAAID,EAAAA,EAAAA,EAAIne,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;SACpC,MAAA;YACLqe,SAAY,GAAA,IAAIvC,aAAaoC,EAAIle,EAAAA,EAAAA,CAAAA,CAAAA;AACnC,SAAA;QACA4Y,SAAS,CAACnwC,IAAI,GAAG41C,SAAAA,CAAAA;AACnB,KAAA;IAEA,OAAO;QACLvU,MAAQ,EAAA;AAACnB,YAAAA,EAAAA;AAAIC,YAAAA,EAAAA;AAAIC,YAAAA,EAAAA;AAAIiO,YAAAA,EAAAA;AAAG,SAAA;QACxBkH,YAAAA,EAAAA,YAAAA;QACAC,aAAAA,EAAAA,aAAAA;QACA3+B,KAAO++B,EAAAA,SAAAA;AACT,KAAA,CAAA;AACF,CAAA;AASO,SAAS2H,wBAAyBtuB,KAAiC,EAAA;AACxE,IAAA,IAAMwvB,YAAexvB,GAAAA,KAAAA,CAAAA;AACrB,IAAA,IAAMorB,YAAwB,EAAE,CAAA;AAChC,IAAA,IAAMqE,WAAsB,EAAE,CAAA;AAE9B,IAAA,IAAIC,WAA2B,GAAA;QAAE1mD,CAAG,EAAA,CAAA;QAAGjF,CAAG,EAAA,CAAA;AAAE,KAAA,CAAA;AAE5C,IAAA,IAAK,IAAIZ,CAAI,GAAA,CAAA,EAAGA,IAAIqsD,YAAa5sD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;QAC5C,IAAMgjD,YAAAA,GAAeqJ,YAAY,CAACrsD,CAAE,CAAA,CAAA;AACpC,QAAA,IAAMijD,aAAgBjjD,GAAAA,CAAAA,GAAI,CAAIqsD,GAAAA,YAAAA,CAAa5sD,MAAM,GAAG4sD,YAAY,CAACrsD,CAAI,GAAA,CAAA,CAAE,GAAGqsD,YAAY,CAACrsD,CAAE,CAAA,CAAA;AAEzF,QAAA,IAAiCkjD,oBAAAA,gBAAiBF,CAAAA,YAAAA,EAAcC,eAAe,IAAvEnV,CAAAA,EAAAA,EAAAA,GAAyBoV,kBAAzBpV,EAAIC,EAAAA,EAAAA,GAAqBmV,iBAArBnV,CAAAA,EAAAA,EAAIC,KAAiBkV,iBAAjBlV,CAAAA,EAAAA,EAAIiO,KAAaiH,iBAAbjH,CAAAA,EAAAA,EAAIvmC,OAASwtC,iBAATxtC,CAAAA,IAAAA,CAAAA;QAExBlD,WAAYw7B,CAAAA,EAAAA,CAAAA,CAAAA;QACZx7B,WAAYypC,CAAAA,EAAAA,CAAAA,CAAAA;AACZ,QAAA,IAAMuQ,OAAU,GAAA;YACdC,WAAaF,EAAAA,WAAAA;YACbxuD,KAAO+vC,EAAAA,EAAAA;YACP4e,YAAc3e,EAAAA,EAAAA;AACdyd,YAAAA,WAAAA,EAAa91C,IAAS,KAAA,MAAA,GAAA,CAAA,GAAA,CAAA;AACxB,SAAA,CAAA;QAEA,IAAIstC,YAAY,CAAC,CAAE,CAAA,KAAKr/B,kBAAuB,CAACu5B,IAAI,EAAE;AACpDsP,YAAAA,OAAAA,CAAQhB,WAAW,GAAA,CAAA,CAAA;AACrB,SAAA;AAEAc,QAAAA,QAAAA,CAAS3qD,IAAI,CAAC6qD,OAAAA,CAAAA,CAAAA;QACdD,WAAcve,GAAAA,EAAAA,CAAAA;AAChB,KAAA;IAEA,IAAM2e,cAAAA,GAAiB,SAAC7e,EAAiBC,EAAAA,EAAAA,EAAAA;AACvC,QAAA,OAAO,CAACA,EAAAA,CAAGntC,CAAC,GAAGktC,GAAGltC,CAAAA,KAAMmtC,GAAGloC,CAAC,GAAGioC,EAAGjoC,CAAAA,CAAC,GAAGR,aAAY,CAAA,CAAA;AACpD,KAAA,CAAA;AAEA,IAAA,IAAK,IAAIrF,EAAI,GAAA,CAAA,EAAGA,KAAIssD,QAAS7sD,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;AACxC,QAAA,IAAMysD,WAAcH,GAAAA,QAAQ,CAACtsD,EAAAA,CAAE,CAACysD,WAAW,CAAA;AAC3C,QAAA,IAAM1uD,KAAQuuD,GAAAA,QAAQ,CAACtsD,EAAAA,CAAE,CAACjC,KAAK,CAAA;AAC/B,QAAA,IAAM2uD,YAAeJ,GAAAA,QAAQ,CAACtsD,EAAAA,CAAE,CAAC0sD,YAAY,CAAA;AAE7C,QAAA,IAAIN,OAAU,GAAA,CAAA,CAAA;AACd,QAAA,IAAIH,QAAW,GAAA,CAAA,CAAA;AAEf,QAAA,IAAIjsD,KAAI,CAAG,EAAA;AACTosD,YAAAA,OAAAA,GAAUO,eAAeF,WAAa1uD,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,SAAA;AACA,QAAA,IAAIiC,EAAIssD,GAAAA,QAAAA,CAAS7sD,MAAM,GAAG,CAAG,EAAA;AAC3BwsD,YAAAA,QAAAA,GAAWU,eAAe5uD,KAAO2uD,EAAAA,YAAAA,CAAAA,CAAAA;AACnC,SAAA;AAEA,QAAA,IAAM/P,QAAqB,GAAA;AACzBztC,YAAAA,IAAAA,EAAMnR,MAAM8H,CAAC;AACb9H,YAAAA,KAAAA,EAAOA,MAAM6C,CAAC;YACdwrD,OAASA,EAAAA,OAAAA;YACTH,QAAUA,EAAAA,QAAAA;YACVE,QAAU,EAAA,CAAA;YACVH,SAAW,EAAA,CAAA;AACXR,YAAAA,WAAAA,EAAac,QAAQ,CAACtsD,EAAE,CAAA,CAACwrD,WAAW;YACpCM,YAAY,EAAA,CAAA;AACd,SAAA,CAAA;AAEA7D,QAAAA,SAAAA,CAAUtmD,IAAI,CAACg7C,QAAAA,CAAAA,CAAAA;AAEf,QAAA,IAAI38C,KAAI,CAAG,EAAA;YACT28C,QAASwP,CAAAA,QAAQ,GAAIpuD,CAAAA,KAAAA,CAAM8H,CAAC,GAAG4mD,WAAY5mD,CAAAA,CAAC,KAAM9H,CAAAA,KAAAA,CAAM8H,CAAC,GAAGymD,QAAQ,CAACtsD,EAAI,GAAA,CAAA,CAAE,CAACjC,KAAK,CAAC8H,CAAC,IAAI,CAAA,CAAA,CAAA;AACzF,SAAA;AAEA,QAAA,IAAI7F,EAAI,GAAA,CAAA,GAAIssD,QAAS7sD,CAAAA,MAAM,EAAE;YAC3Bk9C,QAASqP,CAAAA,SAAS,GAAIU,CAAAA,YAAAA,CAAa7mD,CAAC,GAAG9H,KAAM8H,CAAAA,CAAC,KAAMymD,CAAAA,QAAQ,CAACtsD,EAAAA,GAAI,CAAE,CAAA,CAACjC,KAAK,CAAC8H,CAAC,GAAG9H,KAAM8H,CAAAA,CAAC,IAAI,CAAA,CAAA,CAAA;AAC3F,SAAA;AACF,KAAA;IAEA,OAAOoiD,SAAAA,CAAAA;AACT;;AC5WA;;;AAGC,IACD,IAAM2E,aAAgB,GAAA,EAAA,CAAA;AAEQ,IAAA9R,MAAA,CAAA;AAA9B,IAAMvrC,KAAAA,IAAwBurC,aAAAA,MAC3Bn3B,CAAAA,SAAc,CAACkpC,MAAM,CAAtB,GAAA,SAAyBhwB,KAAiB,EAAA;AACxC,IAAA,IAAIA,YAAAA,CAAAA,KAAK,CAAC,CAAA,CAAE,EAAYp1B,KAAO,CAAA,EAAA;AAC7B,QAAA,OAAO,IAAI4+C,iBAAkBxpB,CAAAA,KAAAA,CAAAA,CAAAA;AAC/B,KAAA;AAEA,IAAA,OAAO,IAAIspB,WAAYtpB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EAP4Bie,OAQ3Bn3B,SAAc,CAACmpC,QAAQ,CAAA,GAAxB,SAA2BjwB,KAAa,EAAA;AACtC,IAAA,OAAO,IAAIkpB,WAAYlpB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EAV4Bie,OAW3Bn3B,SAAc,CAACopC,aAAa,CAAA,GAA7B,SAAgClwB,KAAa,EAAA;AAC3C,IAAA,OAAO,IAAIkpB,WAAYlpB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EAb4Bie,OAc3Bn3B,SAAc,CAACqpC,aAAa,CAAA,GAA7B,SAAgCnwB,KAAa,EAAA;AAC3C,IAAA,OAAO,IAAIkpB,WAAYlpB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EAhB4Bie,OAiB3Bn3B,SAAc,CAACspC,aAAa,CAAA,GAA7B,SAAgCpwB,KAAa,EAAA;AAC3C,IAAA,OAAO,IAAIkpB,WAAYlpB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EAnB4Bie,OAoB3Bn3B,SAAc,CAACupC,UAAU,CAAA,GAA1B,SAA6BrwB,KAAa,EAAA;AACxC,IAAA,OAAO,IAAIkpB,WAAYlpB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EAtB4Bie,OAuB3Bn3B,SAAc,CAACwpC,MAAM,CAAA,GAAtB,SAAyBtwB,KAAiB,EAAA;AACxC,IAAA,OAAO,IAAIopB,cAAAA,CAAeppB,KAAMttB,CAAAA,GAAG,CAAC/P,SAAAA,CAAAA,EAAAA;AAAKgP,QAAAA,OAAAA,YAAAA,CAAWhP,CAAG,EAAA,KAAA,CAAA,CAAA;;AACzD,CAAA,EAzB4Bs7C,OA0B3Bn3B,SAAc,CAACm5B,IAAI,CAAA,GAApB,SAAuBjgB,KAAiB,EAAA;AACtC,IAAA,IAAIA,MAAMp9B,MAAM,KAAK,CAAKo9B,IAAAA,KAAK,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,KAAK,KAAKA,KAAK,CAAC,EAAE,CAAC,CAAA,CAAE,KAAK,CAAG,EAAA;AAChE,QAAA,OAAO,IAAIypB,WAAY,CAAA;YAACzpB,KAAK,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;YAAEA,KAAK,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA,CAAA;AACnD,KAAA;AAEA,IAAA,OAAO,IAAIgqB,YAAahqB,CAAAA,KAAAA,CAAAA,CAAAA;AAC1B,CAAA,EAhC4Bie,OAiC3Bn3B,SAAc,CAACypC,cAAc,CAAA,GAA9B,SAAiCvwB,KAA0C,EAAA;AACzE,IAAA,OAAO,IAAI6pB,aAAc7pB,CAAAA,KAAAA,CAAAA,CAAAA;AAC3B,CAAA,EAnC4Bie,OAoC3Bn3B,SAAc,CAAC0pC,WAAW,CAAA,GAA3B,SAA8BC,IAAkB,EAAA;AAC9C,IAAA,OAAO,IAAI9F,YAAa8F,CAAAA,IAAAA,CAAAA,CAAAA;AAC1B,CAAA,EAtC4BxS,OAuC3Bn3B,SAAc,CAACmmC,YAAY,CAAA,GAA5B,SAA+BjtB,KAAmB,EAAA;IAChD,IAAIA,KAAAA,CAAMp9B,MAAM,KAAK,CAAG,EAAA;QACtB,OAAO,IAAIsmD,YAAYlpB,KAAK,CAAC,EAAE,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AACvC,KAAA;AAEA,IAAA,OAAO,IAAIquB,WAAYruB,CAAAA,KAAAA,CAAAA,CAAAA;AACzB,CAAA,EA7C4Bie,OA8C3Bn3B,SAAc,CAAC4pC,iBAAiB,CAAA,GAAjC,SAAoC1wB,KAAmB,EAAA;AACrD,IAAA,IAAIA,KAAK,CAAC,CAAA,CAAE,CAACp9B,MAAM,KAAK,CAAG,EAAA;QACzB,OAAO,IAAIsmD,YAAY,UAAIn8C,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAWizB,KAAK,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AACnD,KAAA;AAEA,IAAA,OAAO,IAAImrB,eAAgBnrB,CAAAA,KAAAA,CAAAA,CAAAA;AAC7B,CAAA,EApD4Bie,OAqD3Bn3B,SAAc,CAAC6pC,iBAAiB,CAAA,GAAjC,SAAoC3wB,KAAmB,EAAA;AACrD,IAAA,IAAIA,KAAK,CAAC,CAAA,CAAE,CAACp9B,MAAM,KAAK,CAAG,EAAA;QACzB,OAAO,IAAIsmD,YAAY,UAAI1/B,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAcwW,KAAK,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;AACtD,KAAA;AAEA,IAAA,OAAO,IAAIssB,eAAgBtsB,CAAAA,KAAAA,CAAAA,CAAAA;AAC7B,CAAA,EA3D4Bie,OA4D3Bn3B,SAAc,CAAC8pC,WAAW,CAAA,GAA3B,SAA8B5wB,KAA0B,EAAA;AACtD,IAAA,OAAO,IAAI6wB,UAAW7wB,CAAAA,KAAAA,CAAAA,CAAAA;AACxB,CAAA,EA9D4Bie,OA+D3Bn3B,SAAc,CAACgqC,aAAa,CAAA,GAA7B,SAAgC9wB,KAA4B,EAAA;AAC1D,IAAA,OAAO,IAAI2tB,YAAa3tB,CAAAA,KAAAA,CAAAA,CAAAA;AAC1B,CAAA,EAjE4Bie,OAkE3Bn3B,SAAc,CAACiqC,aAAa,CAAA,GAA7B,SAAgC/wB,KAA4B,EAAA;AAC1D,IAAA,OAAO,IAAIkuB,YAAaluB,CAAAA,KAAAA,CAAAA,CAAAA;AAC1B,CAAA;AApE4Bie,MAsE3B8R,CAAAA,aAAAA,CAAAA,GAAD,SAAiB/vB,KAA4B,EAAA;AAC3C,IAAA,OAAO,IAAIiuB,YAAajuB,CAAAA,KAAAA,CAAAA,CAAAA;AAC1B,CAxE4B,EAAAie,MAAA,CAAA,CAAA;AA2EvB,SAAS4P,kBAAmBnsD,IAAS,EAAA;AAC1C,IAAA,IAAI,CAACA,IAAAA,IAAQ,CAACoG,KAAAA,CAAM,CAACpG,IAAO,CAAA,EAAA;QAC1B,OAAO,IAAIwnD,YAAYxnD,IAAQ,IAAA,CAAA,CAAA,CAAA;AACjC,KAAA;IAEA,IAAQK,YAAJL,CAAAA,IAAAA,EAAgB4mD,WAAa,CAAA,EAAA;QAC/B,OAAO5mD,IAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,IAAIgV,WAAWhE,KAAG,CAAChR,IAAI,CAAC,CAAA,CAAE,CAAC,CAAG,EAAA;QAC5B,OAAOgR,KAAG,CAAChR,IAAI,CAAC,EAAE,CAAC,CAACA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;KACtB,MAAA;AACL,QAAA,MAAM,IAAIyD,KAAAA,CAAM,aAAC,GAAazD,IAAI,CAAC,CAAE,CAAA,GAAC,yBAAyB+5C,GAAAA,SAAS,CAAC,mCAAA,CAAoC,GAAC,GAAA,CAAA,CAAA;AAChH,KAAA;AACF;;ACpGO,IAAA,UAAMoV,iBAAD,SAAL,WAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,UAAAA,EAAAA,WAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,UAAAA,GAAAA;;;AACH3vD,QAAAA,KAAAA,CAAAA,KAAAA,GAAQ,IAAIgO,KAAAA,EAAAA,CAAAA;;;AADT2hD,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAQX,IAAA,MAAA,CAAStI,QAKR,GALD,SAASA,QAAAA,CAAUvnD,GAAwB,EAAA;AACzC,QAAA,IAAI,CAACgwD,MAAM,GAAGnD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAACiwD,MAAM,GAAGpD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAACkwD,MAAM,GAAGrD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACtC,QAAA,IAAI,CAACmwD,MAAM,GAAGtD,iBAAkB7sD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0nB,QASR,GATD,SAASA,QAAAA,CAAU/kB,CAAS,EAAA;AAC1B,QAAA,IAAMd,IAAI,IAAI,CAACmuD,MAAM,CAACtoC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMK,IAAI,IAAI,CAACitD,MAAM,CAACvoC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMkF,IAAI,IAAI,CAACqoD,MAAM,CAACxoC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAC/B,QAAA,IAAMiF,IAAI,IAAI,CAACuoD,MAAM,CAACzoC,QAAQ,CAAC/kB,CAAAA,CAAAA,CAAAA;AAE/B,QAAA,IAAI,CAACzC,KAAK,CAACiH,GAAG,CAACtF,CAAAA,EAAGmB,GAAG6E,CAAGD,EAAAA,CAAAA,CAAAA,CAAAA;QAExB,OAAO,IAAI,CAAC1H,KAAK,CAAA;AACnB,KAAA,CAAA;IAEA,MAASunD,CAAAA,UAOR,GAPD,SAASA,UAAAA,GAAAA;QACP,OAAO9gD,IAAAA,CAAK+B,GAAG,CACb,IAAI,CAACsnD,MAAM,CAACvI,UAAU,EACtB,EAAA,IAAI,CAACwI,MAAM,CAACxI,UAAU,EAAA,EACtB,IAAI,CAACyI,MAAM,CAACzI,UAAU,EAAA,EACtB,IAAI,CAAC0I,MAAM,CAAC1I,UAAU,EAAA,CAAA,CAAA;AAE1B,KAAA,CAAA;AAjCWoI,IAAAA,OAAAA,UAAAA,CAAAA;EAAmBvI,WAkC/B;;ACxCM,IAAM8I,yBAAyB,wBAAwB;AACvD,IAAMC,sBAAsB,6BAA6B;AAEzD,IAAMC,qBAAsB,+JAOhC;AAEI,IAAMC,uBAAwB;;;ACPzBC,CAAAA,SAAAA,iBAAAA,EAAAA;;;;;;GAAAA,iBAAAA,KAAAA,iBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAQAC,CAAAA,SAAAA,iBAAAA,EAAAA;;;;;;;;;GAAAA,iBAAAA,KAAAA,iBAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;;ACCAC,CAAAA,SAAAA,UAAAA,EAAAA;;;GAAAA,UAAAA,KAAAA,UAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAKAC,CAAAA,SAAAA,mBAAAA,EAAAA;;;GAAAA,mBAAAA,KAAAA,mBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKZ;;AAEC,IACM,IAAA,WAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IAUXC,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAQ7oD,CAAAA,CAAS,EAAEjF,CAAS,EAAE8Q,KAAa,EAAEC,MAAc,EAAA;;AAE3D,KAAA,CAAA;AAEAg9C,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAoBC,QAAmB,EAAA;;AAEvC,KAAA,CAAA;IAEAC,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;;AAEA,KAAA,CAAA;IAEAtsD,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,IAAAA,GAAAA;;AAEA,KAAA,CAAA;IAYAusD,MAAAA,CAAAA,eAGC,GAHDA,SAAAA,eAAAA,GAAAA;;QAEE,OAAOnwD,SAAAA,CAAAA;AACT,KAAA,CAAA;IAEAowD,MAAAA,CAAAA,iBAGC,GAHDA,SAAAA,iBAAAA,GAAAA;;QAEE,OAAOpwD,SAAAA,CAAAA;AACT,KAAA,CAAA;IAEAqwD,MAAAA,CAAAA,gBAGC,GAHDA,SAAAA,gBAAAA,GAAAA;;AAEE,QAAA,OAAO,EAAE,CAAA;AACX,KAAA,CAAA;AAEA/vC,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAASjc,OAAsE,EAAA;;AAE/E,KAAA,CAAA;AArDWyrD,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YA0BPQ,GAAAA,EAAAA,gBAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;;gBAEE,OAAOtwD,SAAAA,CAAAA;AACT,aAAA;;;YAEIuwD,GAAAA,EAAAA,cAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;;gBAEE,OAAOvwD,SAAAA,CAAAA;AACT,aAAA;;;AAlCW8vD,IAAAA,OAAAA,WAAAA,CAAAA;AAsDZ,CAAA;;AC/ED;;;;;;;AAOC,IACM,SAASU,eAAAA,CACd96C,MAA2C,EAC3C+6C,MAAwB,EACxBpsD,OAA+B,EAAA;AAD/BosD,IAAAA,IAAAA,mBAAAA,MAAiB,GAAA,OAAA,CAAA;IAGjB,IAAI5xC,OAAAA,CAAAA;AAEJ,IAAA,IAAI4xC,WAAW,QAAU,EAAA;QACvB5xC,OAAUnJ,GAAAA,MAAAA,CAAOg7C,UAAU,CAAC,QAAUrsD,EAAAA,OAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAACwa,OAAS,EAAA;AACZlW,YAAAA,OAAAA,CAAQ8L,KAAK,CAAC,iEAAA,CAAA,CAAA;AAChB,SAAA;AACF,KAAA;IACA,IAAI,CAACoK,OAAW4xC,IAAAA,MAAAA,KAAW,OAAS,EAAA;QAClC5xC,OAAUnJ,GAAAA,MAAAA,CAAOg7C,UAAU,CAAC,OAASrsD,EAAAA,OAAAA,CAAAA,CAAAA;AACvC,KAAA;AACA,IAAA,IAAI,CAACwa,OAAS,EAAA;AACZ,QAAA,MAAM,IAAIxb,KAAM,CAAA,yGAAA,CAAA,CAAA;AAClB,KAAA;IAEA,OAAOwb,OAAAA,CAAAA;AACT;;AC/BO,SAAS8xC,SAAUC,EAA0B,EAAA;IAClD,IAAMC,GAAAA,GAAMD,EAAGE,CAAAA,YAAY,CAAC,iCAAA,CAAA,CAAA;AAE5B,IAAA,IAAID,GAAK,EAAA;QACP,IAAIE,KAAAA,GAAQH,GAAGI,WAAW,EAAA,CAAA;AAC1B,QAAA,IAAMC,wBAAU,mBAAA,CAAA,WAAA;;AACd,gBAAA,OAAA;;oBAAO,IAAI1xD,OAAAA,CAAuB,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AAC1C,wBAAA,IAAIiyD,KAAO,EAAA;AACT,4BAAA,IAAMG,YAAYN,EAAGO,CAAAA,iBAAiB,CAACJ,KAAAA,EAAOH,GAAGQ,sBAAsB,CAAA,CAAA;AACvE,4BAAA,IAAMC,QAAWT,GAAAA,EAAAA,CAAG1e,YAAY,CAAC2e,IAAIS,gBAAgB,CAAA,CAAA;4BAErD,IAAIJ,SAAAA,IAAa,CAACG,QAAU,EAAA;;gCAE1B,IAAME,WAAAA,GAAcX,GAAGO,iBAAiB,CAACJ,OAAOH,EAAGY,CAAAA,YAAY;;;AAI/D3yD,gCAAAA,OAAAA,CAAQ0yD,cAAc,IAAO,GAAA,IAAA,CAAA,CAAA;AAC/B,6BAAA;AACA,4BAAA,IAAIL,aAAaG,QAAU,EAAA;;gCAEzBT,EAAGa,CAAAA,WAAW,CAACV,KAAAA,CAAAA,CAAAA;gCAEfA,KAAQ,GAAA,IAAA,CAAA;AACV,6BAAA;AACAG,4BAAAA,SAAAA,KAAc,IAAQH,IAAAA,KAAAA,IAASr/C,MAAOggD,CAAAA,UAAU,CAAC,WAAA;gCAC/CT,OAAUzxD,EAAAA,CAAAA,IAAI,CAACX,OAAAA,CAAAA,CAAS8yD,KAAK,CAAA;6BAC5B,EAAA,CAAA,CAAA,CAAA;AACL,yBAAA;AACF,qBAAA,CAAA;;;AACF,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAACZ,KAAO,EAAA;AACV,YAAA,OAAA;AACF,SAAA;QAEA,OAAO;YACLa,KAAO,EAAA,WAAA;AACLb,gBAAAA,KAAAA,IAASH,EAAGiB,CAAAA,UAAU,CAAChB,GAAAA,CAAIiB,gBAAgB,EAAEf,KAAAA,CAAAA,CAAAA;AAC/C,aAAA;YACAp9C,GAAK,EAAA,WAAA;gBACHi9C,EAAGmB,CAAAA,QAAQ,CAAClB,GAAAA,CAAIiB,gBAAgB,CAAA,CAAA;AAClC,aAAA;YACAb,OAAAA,EAAAA,OAAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF;;ACxCO,IAAMe,UAAuB,GAAA,GAAG;AAChC,IAAMC,SAAoC,GAAA,GAA6B;AAE9E,IAAMC,mBAAsB,GAAA,oDAAA,CAAA;AAC5B,IAAMC,6BAAgC,GAAA,8DAAA,CAAA;AAEtC,IAAI,CAACH,UAAWlxD,CAAAA,MAAM,EAAE;AACtBsxD,IAAAA,aAAAA,EAAAA,CAAAA;AACF,CAAA;AAEO,SAASA,aAAAA,GAAAA;;IAEd,IAAI,OAAOC,2BAA2B,UAAY,EAAA;QAChD1Z,IAAK0Z,CAAAA,sBAAAA,CAAAA,CAAAA;KACA,MAAA,IAAI,OAAOC,qBAAAA,KAA0B,WAAa,EAAA;QACvD3Z,IAAK2Z,CAAAA,qBAAAA,CAAAA,CAAAA;AACL3Z,QAAAA,IAAAA,CAAK2Z,sBAAsBjwD,SAAS,CAAA,CAAA;KAC/B,MAAA;AACL,QAAA,IAAIuP,SAAW,EAAA;YACbogD,UAAWhvD,CAAAA,IAAI;AAEb6O,YAAAA,KAAAA,EAAAA,GAAUqgD,mBAAsBC,GAAAA,6BAAAA,CAAAA,CAAAA;SAE7B,MAAA;AACLH,YAAAA,UAAAA,CAAWhvD,IAAI,CAACmvD,6BAAAA,CAAAA,CAAAA;AAClB,SAAA;AACF,KAAA;IACA,IAAI,CAACH,WAAWlxD,MAAM,IAAI,EAAE,YAAA,IAAgBmxD,SAAQ,CAAI,EAAA;;QAEtDA,SAAS,CAAC,aAAa,GAAG,IAAA,CAAA;AAC5B,KAAA;AACF,CAAA;AAEO,SAASM,SAAU3B,EAAkD,EAAA;AAC1E,IAAA,OAAO,OAAOyB,sBAA2B,KAAA,WAAA,IAAezB,GAAGpwD,WAAW,CAAC8C,IAAI,KAAK,wBAAA,CAAA;AAClF,CAAA;AAEA,SAASq1C,KAAMh4C,MAAW,EAAA;IACxB,IAAK,IAAM2C,QAAQ3C,MAAQ,CAAA;QACzB,IAAI,SAAA,CAAUwP,IAAI,CAAC7M,IAAO,CAAA,EAAA;;AAExB2uD,YAAAA,SAAS,CAAC3uD,IAAAA,CAAK,GAAG3C,MAAM,CAAC2C,IAAK,CAAA,CAAA;AAChC,SAAA;AACF,KAAA;AACF,CAAA;AAEO,SAASkvD,wBAAyBC,UAAiC,EAAA;IACxE,OAAQA,UAAAA;QACN,KAAKztC,gBAAqB,CAAC0tC,OAAO;YAChC,OAAOJ,qBAAqB,CAAC,OAAQ,CAAA,CAAA;QACvC,KAAKttC,gBAAqB,CAAC2tC,KAAK;YAC9B,OAAOL,qBAAqB,CAAC,OAAQ,CAAA,CAAA;QACvC,KAAKttC,gBAAqB,CAAC4tC,IAAI;YAC7B,OAAON,qBAAqB,CAAC,MAAO,CAAA,CAAA;QACtC,KAAKttC,gBAAqB,CAAC6tC,MAAM;YAC/B,OAAOP,qBAAqB,CAAC,gBAAiB,CAAA,CAAA;QAChD,KAAKttC,gBAAqB,CAAC8tC,KAAK;YAC9B,OAAOR,qBAAqB,CAAC,eAAgB,CAAA,CAAA;AAC/C,QAAA;YACE,OAAOA,qBAAqB,CAAC,OAAQ,CAAA,CAAA;AACzC,KAAA;AACF,CAAA;AAEO,SAASS,wBAAyBC,SAA0B,EAAA;IACjE,OAAQA,SAAAA;QACN,KAAKV,qBAAqB,CAAC,OAAQ,CAAA;YACjC,OAAOttC,gBAAqB,CAAC0tC,OAAO,CAAA;QACtC,KAAKJ,qBAAqB,CAAC,OAAQ,CAAA;YACjC,OAAOttC,gBAAqB,CAAC2tC,KAAK,CAAA;QACpC,KAAKL,qBAAqB,CAAC,MAAO,CAAA;YAChC,OAAOttC,gBAAqB,CAAC4tC,IAAI,CAAA;QACnC,KAAKN,qBAAqB,CAAC,gBAAiB,CAAA;YAC1C,OAAOttC,gBAAqB,CAAC6tC,MAAM,CAAA;QACrC,KAAKP,qBAAqB,CAAC,eAAgB,CAAA;YACzC,OAAOttC,gBAAqB,CAAC8tC,KAAK,CAAA;AACpC,QAAA;YACE,OAAO9tC,gBAAqB,CAAC0tC,OAAO,CAAA;AACxC,KAAA;AACF;;AC1DA;;AAEC,IACM,IAAA,UAAMO,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,GAAAA;AASX;;AAEC,MAAA,IAAA,CACOC,YAAwC,EAAC,CAAA;;AAZtCD,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAcX;;;;;MAMAE,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAcC,GAAW,EAAEC,SAAoC,EAAEC,OAAqB,EAAA;AACpF,QAAA,IAAI,CAACC,QAAQ,CAACH,GAAAA,EAAK,QAAQC,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AAEA;;;;;MAMAE,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,eAAgBJ,GAAW,EAAEC,SAAsC,EAAEC,OAAqB,EAAA;AACxF,QAAA,IAAI,CAACC,QAAQ,CAACH,GAAAA,EAAK,eAAeC,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AAEA;;;;;MAMAG,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAcL,GAAW,EAAEC,SAA+B,EAAEC,OAAqB,EAAA;AAC/E,QAAA,IAAI,CAACC,QAAQ,CAACH,GAAAA,EAAK,QAAQC,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AAEA;;;;;MAMAI,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAcN,GAAW,EAAEC,SAAiC,EAAEC,OAAqB,EAAA;AACjF,QAAA,IAAI,CAACC,QAAQ,CAACH,GAAAA,EAAK,QAAQC,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;IAEA,MAAQC,CAAAA,QAsBP,GAtBD,SAAQA,QAAUH,CAAAA,GAAW,EAAEO,YAAiD,EAAEN,SAA8B,EAAEC,OAAqB,EAAA;;AAAxGK,QAAAA,IAAAA,yBAAAA,YAA2C,GAAA,MAAA,CAAA;AACxE,QAAA,IAAI,IAAI,CAACjgD,KAAK,CAAC0/C,GAAAA,EAAKC,WAAWC,OAAU,CAAA,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAMM,MAAM,IAAIC,cAAAA,EAAAA,CAAAA;AAChB,QAAA,IAAMC,WAAc,GAAA,WAAA;AAClB,YAAA,KAAA,CAAKC,MAAM,CAACX,GAAAA,EAAKQ,IAAII,MAAM,EAAEJ,IAAIK,QAAQ,CAAA,CAAA;AAC3C,SAAA,CAAA;AACA,QAAA,IAAMC,UAAa,GAAA,WAAA;YACjB,IAAIN,GAAAA,CAAII,MAAM,IAAI,GAAQJ,IAAAA,GAAAA,CAAII,MAAM,IAAI,CAAKf,IAhEtCA,UAgEiDkB,CAAAA,kBAAkB,EAAG;AAC3E,gBAAA,KAAA,CAAKJ,MAAM,CAACX,GAAK,EAAA,GAAA,EAAKQ,IAAIK,QAAQ,CAAA,CAAA;aAC7B,MAAA;AACLH,gBAAAA,WAAAA,EAAAA,CAAAA;AACF,aAAA;AACF,SAAA,CAAA;AAEAF,QAAAA,GAAAA,CAAID,YAAY,GAAGA,YAAAA,CAAAA;QACnBC,GAAIQ,CAAAA,gBAAgB,CAAC,MAAQF,EAAAA,UAAAA,CAAAA,CAAAA;QAC7BN,GAAIQ,CAAAA,gBAAgB,CAAC,OAASN,EAAAA,WAAAA,CAAAA,CAAAA;QAC9BF,GAAIS,CAAAA,IAAI,CAAC,KAAA,EAAOjB,GAAK,EAAA,IAAA,CAAA,CAAA;AACrBQ,QAAAA,GAAAA,CAAIU,IAAI,EAAA,CAAA;AACV,KAAA,CAAA;IAEA,MAAQ5gD,CAAAA,KASP,GATD,SAAQA,KAAAA,CAAO0/C,GAAW,EAAEC,SAA8B,EAAEC,OAAqB,EAAA;AAC/E,QAAA,IAAIJ,SAAY,GAAA,IAAI,CAACA,SAAS,CAACE,GAAI,CAAA,CAAA;QAEnC,IAAI;AACF,YAAA,IAAIF,SAAW,EAAA;gBAAE,OAAO,IAAA,CAAA;AAAM,aAAA;AAC9B,YAAA,IAAI,CAACA,SAAS,CAACE,GAAI,CAAA,GAAGF,YAAY,EAAE,CAAA;SAC5B,QAAA;YACRA,SAAUlwD,CAAAA,IAAI,CAACqwD,SAAWC,EAAAA,OAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACF,KAAA,CAAA;IAEA,MAAQS,CAAAA,MASP,GATD,SAAQA,MAAAA,CAAQX,GAAW,EAAEY,MAAc,EAAE/gD,IAAS,EAAA;AACpD,QAAA,IAAMigD,SAAY,GAAA,IAAI,CAACA,SAAS,CAACE,GAAI,CAAA,CAAA;AAErC,QAAA,OAAO,IAAI,CAACF,SAAS,CAACE,GAAI,CAAA,CAAA;QAC1B,IAAMxzD,IAAAA,GAAOo0D,UAAU,GAAQA,IAAAA,MAAAA,IAAU,KAAKf,UA7FrCA,CA6FgDkB,kBAAkB,GAAI;AAAClhD,YAAAA,IAAAA;SAAK,GAAG;AAAC+gD,YAAAA,MAAAA;AAAQ/gD,YAAAA,IAAAA;AAAK,SAAA,CAAA;AAEtG,QAAA,IAAK,IAAI5R,CAAAA,GAAIzB,IAAKkB,CAAAA,MAAM,GAAG,CAAA,EAAG2B,CAAIywD,GAAAA,SAAAA,CAAUpyD,MAAM,EAAEO,CAAIoB,GAAAA,CAAAA,EAAGpB,KAAK,CAAG,CAAA;AACjE6xD,YAAAA,SAAS,CAAC7xD,CAAAA,CAAE,CAACvB,KAAK,CAAC,IAAMF,EAAAA,IAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACF,KAAA,CAAA;AAlGWqzD,IAAAA,OAAAA,UAAAA,CAAAA;AAmGZ,CAAA,GAAA;AAjGC;;;;AAIC,MANUA,WAOJkB,kBAAqB,GAAA,KAAA,CAAA;AA8F9B,IAAII,UAAa,GAAA,KAAA,CAAA;AACjB,IAAIC,UAAa,GAAA,KAAA,CAAA;AAEjB;;;;AAIC,IACqBC,SAAAA,gBAAAA,CAAkBC,GAAW,EAAEC,IAAa,EAAA;AAA5CF,IAAAA,OAAAA,iBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,iBAAAA,GAAAA;AAAAA,IAAAA,iBAAAA,GAAf,mBAAA,CAAA,SAAiCC,GAAW,EAAEC,IAAa,EAAA;AAExD7hD,QAAAA,IAAAA,KAAAA,CAAAA,CAMAA,QAKAA,OAAAA;;;;0BAZJyhD,UAAAA,IAAc,CAACI,IAAG,CAAlBJ,EAAAA,OAAAA;;;;AACY,oBAAA,OAAA;;wBAAMK,SAAUF,CAAAA,GAAAA,CAAAA;;;oBAAxB5hD,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,oBAAA,OAAA;;AAAO,wBAAA;4BAAEA,KAAAA,EAAAA,KAAAA;4BAAOsgD,GAAKsB,EAAAA,GAAAA;AAAI,yBAAA;;;;;;;;;AAIX,oBAAA,OAAA;;wBAAME,SAAUD,CAAAA,IAAAA,CAAAA;;;oBAAxB7hD,MAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,oBAAA,OAAA;;AAAO,wBAAA;4BAAEA,KAAAA,EAAAA,MAAAA;4BAAOsgD,GAAKuB,EAAAA,IAAAA;AAAK,yBAAA;;;AACnBjzD,oBAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;oBACP6yD,UAAa,GAAA,IAAA,CAAA;AACC,oBAAA,OAAA;;wBAAMK,SAAUF,CAAAA,GAAAA,CAAAA;;;oBAAxB5hD,MAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,oBAAA,OAAA;;AAAO,wBAAA;4BAAEA,KAAAA,EAAAA,MAAAA;4BAAOsgD,GAAKsB,EAAAA,GAAAA;AAAI,yBAAA;;;;;;;;AAE7B,KAAA,CAAA,CAAA;AAjBsBD,IAAAA,OAAAA,iBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAmBtB;;;;AAIC,IACqBI,SAAAA,gBAAAA,CAAkBH,GAAW,EAAEI,IAAa,EAAA;AAA5CD,IAAAA,OAAAA,iBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,iBAAAA,GAAAA;AAAAA,IAAAA,iBAAAA,GAAf,mBAAA,CAAA,SAAiCH,GAAW,EAAEI,IAAa,EAAA;AAExDhiD,QAAAA,IAAAA,KAAAA,CAAAA,CAMAA,QAKAA,OAAAA;;;;0BAZJ0hD,UAAAA,IAAc,CAACM,IAAG,CAAlBN,EAAAA,OAAAA;;;;AACY,oBAAA,OAAA;;wBAAMI,SAAUF,CAAAA,GAAAA,CAAAA;;;oBAAxB5hD,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,oBAAA,OAAA;;AAAO,wBAAA;4BAAEA,KAAAA,EAAAA,KAAAA;4BAAOsgD,GAAKsB,EAAAA,GAAAA;AAAI,yBAAA;;;;;;;;;AAIX,oBAAA,OAAA;;wBAAME,SAAUE,CAAAA,IAAAA,CAAAA;;;oBAAxBhiD,MAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,oBAAA,OAAA;;AAAO,wBAAA;4BAAEA,KAAAA,EAAAA,MAAAA;4BAAOsgD,GAAK0B,EAAAA,IAAAA;AAAK,yBAAA;;;AACnBpzD,oBAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;oBACP8yD,UAAa,GAAA,IAAA,CAAA;AACC,oBAAA,OAAA;;wBAAMI,SAAUF,CAAAA,GAAAA,CAAAA;;;oBAAxB5hD,MAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,oBAAA,OAAA;;AAAO,wBAAA;4BAAEA,KAAAA,EAAAA,MAAAA;4BAAOsgD,GAAKsB,EAAAA,GAAAA;AAAI,yBAAA;;;;;;;;AAE7B,KAAA,CAAA,CAAA;AAjBsBG,IAAAA,OAAAA,iBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAmBtB;;;IAIA,SAAsBD,UACpBrwC,MAAwC,EAAA;AADpBqwC,IAAAA,OAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,UAAAA,GAAAA;IAAAA,UAAf,GAAA,mBAAA,CAAA,SACLrwC,MAAwC,EAAA;YAEpC6uC,GACA2B,EAAAA,SAAAA,CAAAA;;YADA3B,GAAM,GAAA,EAAA,CAAA;;YAIV,IAAUnzD,YAANskB,CAAAA,MAAAA,EAAkBywC,gBAAkB,CAAA,EAAA;gBACtC,IAAIzwC,MAAAA,CAAO0wC,QAAQ,EAAE;AACnB,oBAAA,OAAA;;AAAO1wC,wBAAAA,MAAAA;;AACT,iBAAA;AACA6uC,gBAAAA,GAAAA,GAAM7uC,OAAO/b,GAAG,CAAA;AAClB,aAAA,MAAO,IAAUvI,YAANskB,CAAAA,MAAAA,EAAkBzN,IAAM,CAAA,EAAA;gBACjCs8C,GAAM8B,GAAAA,GAAAA,CAAIC,eAAe,CAAC5wC,MAAAA,CAAAA,CAAAA;gBAC1BwwC,SAAY,GAAA,IAAA,CAAA;aACP,MAAA,IAAI,OAAOxwC,MAAAA,KAAW,QAAU,EAAA;gBACrC6uC,GAAM7uC,GAAAA,MAAAA,CAAAA;AACR,aAAA;;AAGA,YAAA,IAAI,CAAC6uC,GAAK,EAAA;AACR,gBAAA,MAAM,IAAI/vD,KAAM,CAAC,uBAAoB+xD,IAAKC,CAAAA,SAAS,CAAC9wC,MAAQ,CAAA,GAAA,GAAA,CAAA,CAAA;AAC9D,aAAA;AAEA,YAAA,OAAA;;gBAAO,IAAIhlB,OAAAA,CAA0B,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AAC7C,oBAAA,IAAMw2D,MAAM,IAAIC,KAAAA,EAAAA,CAAAA;AAEhB,oBAAA,IAAI,CAAC,QAAA,CAASplD,IAAI,CAACijD,GAAM,CAAA,EAAA;AACvBkC,wBAAAA,GAAAA,CAAIE,WAAW,GAAG,GAAA,CAAA;AACpB,qBAAA;AACAF,oBAAAA,GAAAA,CAAIG,MAAM,GAAG,WAAA;AACXH,wBAAAA,GAAAA,CAAIG,MAAM,GAAG,IAAA,CAAA;AACb,wBAAA,IAAIV,SAAW,EAAA;AACbG,4BAAAA,GAAAA,CAAIQ,eAAe,CAACtC,GAAAA,CAAAA,CAAAA;AACtB,yBAAA;AAEA,wBAAA,OAAOv0D,OAAQy2D,CAAAA,GAAAA,CAAAA,CAAAA;AACjB,qBAAA,CAAA;oBACAA,GAAIK,CAAAA,OAAO,GAAG1yD,SAAAA,CAAAA,EAAAA;AACZqyD,wBAAAA,GAAAA,CAAIK,OAAO,GAAG,IAAA,CAAA;AACd,wBAAA,IAAIZ,SAAW,EAAA;AACbG,4BAAAA,GAAAA,CAAIQ,eAAe,CAACtC,GAAAA,CAAAA,CAAAA;AACtB,yBAAA;AAEA,wBAAA,OAAOt0D,OAAO,mBAAC,GAAmBs0D,MAAI,YAAYgC,GAAAA,IAAAA,CAAKC,SAAS,CAACpyD,CAAAA,CAAAA,CAAAA,CAAAA;AACnE,qBAAA,CAAA;AACAqyD,oBAAAA,GAAAA,CAAI9sD,GAAG,GAAG4qD,GAAAA,CAAAA;AACZ,iBAAA,CAAA;;;AAEF,KAAA,CAAA,CAAA;AAjDsBwB,IAAAA,OAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAmDtB;;;IAIA,SAAsBgB,WAAYxC,GAAW,EAAA;AAAvBwC,IAAAA,OAAAA,WAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,WAAAA,GAAAA;IAAAA,WAAf,GAAA,mBAAA,CAAA,SAA2BxC,GAAW,EAAA;;AAC3C,YAAA,OAAA;;gBAAO,IAAI7zD,OAAAA,CAAqB,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AACxC,oBAAA,IAAIm0D,aAAaO,cAAc,CAC7BJ,GACAv0D,EAAAA,OAAAA,EACA,SAACm1D,MAAQ6B,EAAAA,YAAAA,EAAAA;AACP/2D,wBAAAA,MAAAA,CAAO,qBAAC,GAAqBs0D,GAAI,GAAA,WAAA,GAAWY,SAAO,IAAI6B,GAAAA,YAAAA,CAAAA,CAAAA;AACzD,qBAAA,CAAA,CAAA;AACJ,iBAAA,CAAA;;;AACF,KAAA,CAAA,CAAA;AATsBD,IAAAA,OAAAA,WAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAWtB;;;IAIA,SAAsBE,SAAU1C,GAAW,EAAA;AAArB0C,IAAAA,OAAAA,SAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,SAAAA,GAAAA;IAAAA,SAAf,GAAA,mBAAA,CAAA,SAAyB1C,GAAW,EAAA;;AACzC,YAAA,OAAA;;gBAAO,IAAI7zD,OAAAA,CAAc,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AACjC,oBAAA,IAAIm0D,aAAaQ,YAAY,CAC3BL,GACAv0D,EAAAA,OAAAA,EACA,SAACm1D,MAAQ6B,EAAAA,YAAAA,EAAAA;AACP/2D,wBAAAA,MAAAA,CAAO,qBAAC,GAAqBs0D,GAAI,GAAA,WAAA,GAAWY,SAAO,IAAI6B,GAAAA,YAAAA,CAAAA,CAAAA;AACzD,qBAAA,CAAA,CAAA;AACJ,iBAAA,CAAA;;;AACF,KAAA,CAAA,CAAA;AATsBC,IAAAA,OAAAA,SAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAWtB;;;IAIA,SAAsBC,UAAW3C,GAA2B,EAAA;AAAtC2C,IAAAA,OAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,UAAAA,GAAAA;IAAAA,UAAf,GAAA,mBAAA,CAAA,SAA0B3C,GAA2B,EAAA;AACpD4C,QAAAA,IAAAA,KAAAA,CAAAA;;YAAAA,KAAQC,GAAAA,QAAAA,CAASC,aAAa,CAAC,OAAA,CAAA,CAAA;YAErC,IAAI,OAAO9C,QAAQ,QAAU,EAAA;AAC3B4C,gBAAAA,KAAAA,CAAMxtD,GAAG,GAAG4qD,GAAAA,CAAAA;aACP,MAAA;AACL4C,gBAAAA,KAAAA,CAAMG,SAAS,GAAG/C,GAAAA,CAAAA;AACpB,aAAA;AACA4C,YAAAA,KAAAA,CAAMR,WAAW,GAAG,WAAA,CAAA;AACpBQ,YAAAA,KAAAA,CAAMI,KAAK,GAAG,IAAA,CAAA;AACdJ,YAAAA,KAAAA,CAAMK,QAAQ,GAAG,KAAA,CAAA;AACjB,YAAA,IAAIjkD,SAAa,EAAA,EAAA;gBACf4jD,KAAMM,CAAAA,YAAY,CAAC,UAAY,EAAA,UAAA,CAAA,CAAA;AACjC,aAAA;YACAN,KAAMM,CAAAA,YAAY,CAAC,aAAe,EAAA,aAAA,CAAA,CAAA;AAElC,YAAA,OAAA;;gBAAO,IAAI/2D,OAAAA,CAA0B,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AAC7C,oBAAA,IAAIy3D,OAAU,GAAA,KAAA,CAAA;AAEd,oBAAA,IAAMC,aAAgB,GAAA,WAAA;AACpB,wBAAA,IAAID,OAAS,EAAA;AAAC,4BAAA,OAAA;AAAO,yBAAA;wBACrBA,OAAU,GAAA,IAAA,CAAA;AACVE,wBAAAA,OAAAA,EAAAA,CAAAA;wBACA53D,OAAQm3D,CAAAA,KAAAA,CAAAA,CAAAA;AACV,qBAAA,CAAA;AAEA,oBAAA,IAAMlC,WAAc,GAAA,WAAA;AAClB,wBAAA,IAAIyC,OAAS,EAAA;AAAC,4BAAA,OAAA;AAAO,yBAAA;wBACrBA,OAAU,GAAA,IAAA,CAAA;AACVE,wBAAAA,OAAAA,EAAAA,CAAAA;wBACA33D,MAAO,CAAA,kBAAA,CAAA,CAAA;AACT,qBAAA,CAAA;AAEA,oBAAA,IAAM23D,OAAU,GAAA,WAAA;wBACdT,KAAMU,CAAAA,mBAAmB,CAAC,YAAcF,EAAAA,aAAAA,CAAAA,CAAAA;wBACxCR,KAAMU,CAAAA,mBAAmB,CAAC,SAAWF,EAAAA,aAAAA,CAAAA,CAAAA;wBACrCR,KAAMU,CAAAA,mBAAmB,CAAC,OAAS5C,EAAAA,WAAAA,CAAAA,CAAAA;AACrC,qBAAA,CAAA;oBAEAkC,KAAM5B,CAAAA,gBAAgB,CAAC,YAAcoC,EAAAA,aAAAA,CAAAA,CAAAA;oBACrCR,KAAM5B,CAAAA,gBAAgB,CAAC,SAAWoC,EAAAA,aAAAA,CAAAA,CAAAA;oBAClCR,KAAM5B,CAAAA,gBAAgB,CAAC,OAASN,EAAAA,WAAAA,CAAAA,CAAAA;AAEhCkC,oBAAAA,KAAAA,CAAMW,IAAI,EAAA,CAAGhF,KAAK,CAAC5xD,SAAAA,GAAAA,EAAAA;wBACjB4I,OAAQ+L,CAAAA,IAAI,CAAC,mBAAqB3U,EAAAA,GAAAA,CAAAA,CAAAA;AACpC,qBAAA,CAAA,CAAA;AACF,iBAAA,CAAA;;;AACF,KAAA,CAAA,CAAA;AA/CsBg2D,IAAAA,OAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAiDtB;;;;;AAKC,IACqBa,SAAAA,SAAAA,CAAWxD,GAAsB,EAAEyD,MAAqE,EAAA;AAAxGD,IAAAA,OAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,UAAAA,GAAAA;AAAAA,IAAAA,UAAAA,GAAf,mBAAA,CAAA,SAA0BxD,GAAsB,EAAEyD,MAAqE,EAAA;;;;yBACxH/tD,KAAMkM,CAAAA,OAAO,CAACo+C,GAAdtqD,CAAAA,EAAAA,OAAAA;;;;;;;;;;;;AAEO,oBAAA,OAAA;;wBAAM+tD,MAAOzD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;;;AAA1B,oBAAA,OAAA;;AAAO,wBAAA,MAAA,CAAA,IAAA,EAAA;;;AACA1xD,oBAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;AACA,oBAAA,OAAA;;wBAAMm1D,MAAOzD,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA;;;AAA1B,oBAAA,OAAA;;AAAO,wBAAA,MAAA,CAAA,IAAA,EAAA;;;AAIX,oBAAA,OAAA;;wBAAOyD,MAAOzD,CAAAA,GAAAA,CAAAA;;;;AAChB,KAAA,CAAA,CAAA;AAVsBwD,IAAAA,OAAAA,UAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;;AC9TtB,SAAsBE,wBACpBC,CAAAA,cAAkC,EAClCC,IAAmB,EACnBC,MAA2B,EAAA;AAHPH,IAAAA,OAAAA,yBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,yBAAAA,GAAAA;IAAAA,yBAAf,GAAA,mBAAA,CAAA,SACLC,cAAkC,EAClCC,IAAmB,EACnBC,MAA2B,EAC3BC,KAA6B,EAAA;AAGnBC,QAAAA,IAAAA,OAAAA,EAASx2D,QACXy2D,IAYAC,EAAAA,aAAAA,EAiBEF,QAASx2D,EAAAA,OAAAA,EACXy2D,OACAC,cACAC,EAAAA,GAAAA,CAAAA;;;;AApCRJ,oBAAAA,IAAAA,KAAAA,KAAAA,KAAAA,CAAAA,EAAAA,KAAAA,GAAAA,EAAAA,CAAAA;AAEIH,oBAAAA,IAAAA,EAAAA,cAAep2D,CAAAA,MAAM,KAAK,KAAI,CAA9Bo2D,EAAAA,OAAAA;;;;oBACMI,OAAoBJ,GAAAA,cAAAA,CAApBI,OAASx2D,EAAAA,MAAAA,GAAWo2D,cAAXp2D,CAAAA,MAAAA,CAAAA;oBACXy2D,IAAOD,GAAAA,OAAAA,CAAQvmD,GAAG,CAAC2mD,SAAAA,MAAAA,EAAAA;AAAUh4D,wBAAAA,OAAAA,OAAAA,CAAQqZ,GAAG,CAAC2+C,MAAO3mD,CAAAA,GAAG,CAAC4mD,SAAAA,OAAAA,EAAAA;;4BAExD,IAAIA,OAAAA,CAAQn3C,EAAE,EAAE;;AAEd,gCAAA,IAAMo3C,WAAcR,GAAAA,MAAM,CAACO,OAAAA,CAAQn3C,EAAE,CAAC,CAAA;gCAEtC,OAAOo3C,WAAAA,CAAAA;6BACF,MAAA;AACL,gCAAA,OAAOC,gBAAgBF,OAASR,EAAAA,IAAAA,CAAAA,CAAAA;AAClC,6BAAA;AACF,yBAAA,CAAA,CAAA,CAAA;;AAEsB,oBAAA,OAAA;;AAAMz3D,wBAAAA,OAAAA,CAAQqZ,GAAG,CAACw+C,IAAAA,CAAAA;;;oBAAlCC,aAAgB,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEtB,oBAAA,OAAA;;AAAO,wBAAA,QAAA,CAAA;4BACLM,eAAiB,EAAA,KAAA;2BACdZ,cACA,EAAA;4BACDI,OAASE,EAAAA,aAAAA;4BACTO,UAAY,EAAA;gCACVj3D,MAAAA,EAAAA,MAAAA;;AAEAoW,gCAAAA,IAAAA,EAAM44C,kBAAkBwH,OAAO;AAEjC,6BAAA;AACF,yBAAA,CAAA;;;;oBAIMA,QAAoBJ,GAAAA,cAAAA,CAApBI,OAASx2D,EAAAA,OAAAA,GAAWo2D,cAAXp2D,CAAAA,MAAAA,CAAAA;oBACXy2D,KAAOD,GAAAA,QAAAA,CAAQvmD,GAAG,CAAC4mD,SAAAA,OAAAA,EAAAA;AAAWE,wBAAAA,OAAAA,eAAAA,CAAgBF,OAASR,EAAAA,IAAAA,CAAAA,CAAAA;;AACvC,oBAAA,OAAA;;AAAMz3D,wBAAAA,OAAAA,CAAQqZ,GAAG,CAACw+C,KAAAA,CAAAA;;;oBAAlCC,cAAgB,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;oBAChBC,GAAMJ,GAAAA,KAAK,CAACC,QAAO,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAC/D,GAAG,CAAA;AAEvC,oBAAA,OAAA;;AAAO,wBAAA,QAAA,CAAA;4BACLuE,eAAiB,EAAA,KAAA;2BACdZ,cACA,EAAA;4BACDI,OAASE,EAAAA,cAAAA;AACT/+B,4BAAAA,UAAAA,EAAYq3B,kBAAkBwH,OAAO;4BACrCS,UAAY,EAAA;gCACVj3D,MAAAA,EAAAA,OAAAA;gCACA22D,GAAAA,EAAAA,GAAAA;AACAvgD,gCAAAA,IAAAA,EAAM44C,kBAAkBwH,OAAO;gCAC/BA,OAASA,EAAAA,QAAAA,CAAQvmD,GAAG,CAAC4mD,SAAAA,OAAAA,EAAAA;AAAW,oCAAA,OAAA;wCAACA,OAAO,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;wCAAEA,OAAO,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;AAAC,qCAAA,CAAA;;AAChE,6BAAA;AACF,yBAAA,CAAA;;;;;;;;AAGN,KAAA,CAAA,CAAA;AAzDsBV,IAAAA,OAAAA,yBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;SA2DPY,eAAiBF,CAAAA,OAA2B,EAAER,IAAmB,EAAA;AAAjEU,IAAAA,OAAAA,gBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,gBAAAA,GAAAA;AAAAA,IAAAA,gBAAAA,GAAf,mBAAA,CAAA,SAAgCF,OAA2B,EAAER,IAAmB,EAAA;YAC/CQ,SAAxB3yD,EAAAA,KAAAA,EAAO6O,OAAO5S,MACfw2D,EAAAA,GAAAA,CAAAA;;YADyBE,SAAAA,GAAAA,OAAO,CAAC,CAAE,CAAA,EAAlC3yD,QAAwB2yD,SAAjB9jD,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,GAAiB8jD,cAAV12D,MAAU02D,GAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA;YACzBF,GAAMN,GAAAA,IAAI,CAACnyD,KAAM,CAAA,CAAA;AAEvB,YAAA,IAAI,CAACyyD,GAAK,EAAA;AACR,gBAAA,MAAM,IAAIj0D,KAAM,CAAC,0BAAuB+xD,IAAKC,CAAAA,SAAS,CAACmC,OAAS,CAAA,GAAA,GAAA,CAAA,CAAA;AAClE,aAAA;AAEA,YAAA,OAAA;;AAAO5C,gBAAAA,SAAAA,CAAU,IAAI99C,IAAAA,CAAAA;oBAAM,IAAIrT,UAAAA,CAAW6zD,KAAK5jD,KAAO5S,EAAAA,MAAAA,CAAAA;;;;AACxD,KAAA,CAAA,CAAA;AATe42D,IAAAA,OAAAA,gBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;;ACzDf,IAAI/jB,MAAO,GAAA,CAAA,CAAA;AAEX;;AAEC,IACM,IAAA,OAAekkB,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,OAAAA,CA8FP/+C,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAzEEg/C,SAAY,GAAA,KAAA,CAAA;QA0EpB,KAAKz3C,CAAAA,EAAE,GAAG,KAAQszB,GAAAA,MAAAA,EAAAA,CAAAA;;;AAhGAkkB,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAuGpB;;MAGAE,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAAChlD,KAAK,IAAI,CAAA,CAAA;AACvB,KAAA,CAAA;AAEA;;MAGAilD,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;QACE,OAAO,IAAI,CAAChlD,MAAM,IAAI,CAAA,CAAA;AACxB,KAAA,CAAA;IAEAilD,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,uBAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;;;MAKAC,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;;MAIAC,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;;AAEA,KAAA,CAAA;AAQA;;;MAIA72C,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA,IAAA,MAAA,CAAU82C,eA0BT,GA1BD,SAAUA,eAAAA,CAAiB/zD,OAA6B,EAAA;AACtD,QAAA,IAAA,eAAA,GAAmFA,OAA3E1D,CAAAA,MAAAA,EAAAA,MAASsxD,GAAAA,eAAAA,KAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAUoG,UAAU,GAAA,eAAA,EAAUC,GAAoCj0D,GAAAA,OAAAA,CAA5CmQ,MAAQ8jD,EAAAA,cAAAA,GAAAA,GAAiBrG,KAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAUsG,IAAI,GAA/BD,GAAAA,CAAAA;QAE/C,IAAI,CAACj0D,OAAQi0B,CAAAA,UAAU,EAAE;AACvB,YAAA,IAAI,WAAWj0B,OAAS,EAAA;gBACtBA,OAAQi0B,CAAAA,UAAU,GAAGq3B,iBAAAA,CAAkB78C,KAAK,CAAA;aACvC,MAAA,IAAI,UAAUzO,OAAS,EAAA;gBAC5BA,OAAQi0B,CAAAA,UAAU,GAAGq3B,iBAAAA,CAAkB18C,IAAI,CAAA;aACtC,MAAA,IAAI,WAAW5O,OAAS,EAAA;gBAC7BA,OAAQi0B,CAAAA,UAAU,GAAGq3B,iBAAAA,CAAkBqG,KAAK,CAAA;aACvC,MAAA;gBACL3xD,OAAQi0B,CAAAA,UAAU,GAAG,CAAA,CAAA;AACvB,aAAA;AACF,SAAA;QAEA,OAAO,QAAA,CAAA;AACLkgC,YAAAA,SAAAA,EAAWvG,UAAUwG,OAAO;AAC5BC,YAAAA,SAAAA,EAAWzG,UAAUwG,OAAO;AAC5BE,YAAAA,KAAAA,EAAO1G,UAAU2G,aAAa;AAC9BC,YAAAA,KAAAA,EAAO5G,UAAU2G,aAAa;YAC9Bj4D,MAAQA,EAAAA,MAAAA;AACR6T,YAAAA,MAAAA,EAAQy9C,UAAUsG,IAAI;YACtBD,cAAAA,EAAAA,cAAAA;AACAvhD,YAAAA,IAAAA,EAAMk7C,UAAU6G,aAAa;AAC1Bz0D,SAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AAEP,KAAA,CAAA;AApJA;;;;MA9BoBwzD,OAmCPkB,CAAAA,SAmBZ,GAnBD,SAAaA,UACX3F,GAAW,EACXt6C,MAAc,EACdzU,OAA4B,EAAA;eAH9B,mBAAA,CAAA,WAAA;gBAKQyO,KAEAkmD,EAAAA,OAAAA,CAAAA;;;;AAFQ,wBAAA,OAAA;;4BAAMpE,SAAUxB,CAAAA,GAAAA,CAAAA;;;wBAAxBtgD,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAERkmD,wBAAAA,OAAAA,GAAUnB,OA1CEA,CA0CM11D,MAAM,CAAC2W,MAAQ,EAAA,QAAA,CAAA;AACrCwf,4BAAAA,UAAAA,EAAYq3B,kBAAkB78C,KAAK;4BACnCA,KAAAA,EAAAA,KAAAA;AACAnS,4BAAAA,MAAAA,EAAQsxD,UAAUoG,UAAU;4BAC5Bh4C,EAAItK,EAAAA,YAAAA,EAAAA;4BACJkjD,KAAO,EAAA,IAAA;AACJ50D,yBAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAGL20D,wBAAAA,OAAAA,CAAQ13C,UAAU,EAAA,CAAA;AAElB,wBAAA,OAAA;;AAAO03C,4BAAAA,OAAAA;;;;AACT,SAAA,CAAA,EAAA,CAAA;;AAEA;;;;;;;MAxDoBnB,OAgEPqB,CAAAA,SAiBZ,GAjBD,SAAaA,UACX9F,GAAW,EACXt6C,MAAc,EACdzU,OAA4B,EAAA;eAH9B,mBAAA,CAAA,WAAA;gBAKQ2xD,KACAgD,EAAAA,OAAAA,CAAAA;;;;AADQ,wBAAA,OAAA;;4BAAMjD,SAAU3C,CAAAA,GAAAA,CAAAA;;;wBAAxB4C,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AACRgD,wBAAAA,OAAAA,GAAUnB,OAtEEA,CAsEM11D,MAAM,CAAC2W,MAAQ,EAAA,QAAA,CAAA;AACrCwf,4BAAAA,UAAAA,EAAYq3B,kBAAkBqG,KAAK;4BACnCA,KAAAA,EAAAA,KAAAA;4BACA31C,EAAItK,EAAAA,YAAAA,EAAAA;4BACJkjD,KAAO,EAAA,IAAA;AACJ50D,yBAAAA,EAAAA,OAAAA,CAAAA,CAAAA,CAAAA;AAGL20D,wBAAAA,OAAAA,CAAQ13C,UAAU,EAAA,CAAA;AAElB,wBAAA,OAAA;;AAAO03C,4BAAAA,OAAAA;;;;AACT,SAAA,CAAA,EAAA,CAAA;;AAjFoBnB,IAAAA,aAAAA,CAAAA,OAAAA,EAAAA;;YAmGhBsB,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrB,SAAS,CAAA;AACvB,aAAA;;;AArGoBD,IAAAA,OAAAA,OAAAA,CAAAA;EAAgBj4C,aAmLrC,EAAA;AAEM,SAASw5C,yBAA0BtgD,MAAc,EAAE7F,IAAiB,EAAEF,KAAa,EAAEC,MAAc,EAAA;AACxG,IAAA,IAAMqmD,OAAUpmD,GAAAA,IAAAA,CAAKnS,MAAM,GAAGiS,KAAQC,GAAAA,MAAAA,CAAAA;IACtC,IAAIwB,MAAAA,CAAAA;IACJ,IAAI8jD,cAAAA,CAAAA;IAEJ,IAAIe,OAAAA,KAAY,CAAKA,IAAAA,OAAAA,KAAY,CAAG,EAAA;QAClCf,cAAiB9jD,GAAAA,MAAAA,GAASy9C,UAAUsG,IAAI,CAAA;KACnC,MAAA,IAAIc,YAAY,CAAG,EAAA;QACxBf,cAAiB9jD,GAAAA,MAAAA,GAASy9C,UAAUqH,GAAG,CAAA;KAClC,MAAA,IAAID,YAAY,CAAG,EAAA;QACxBf,cAAiB9jD,GAAAA,MAAAA,GAASy9C,UAAUsH,eAAe,CAAA;KAC9C,MAAA;QACLjB,cAAiB9jD,GAAAA,MAAAA,GAASy9C,UAAUuH,SAAS,CAAA;AAC/C,KAAA;IAEA,OAAO3B,OAAAA,CAAQ4B,cAAc,CAC3B3gD,MACA,EAAA;QACE7F,IAAAA,EAAAA,IAAAA;QAAMF,KAAAA,EAAAA,KAAAA;QAAOC,MAAAA,EAAAA,MAAAA;KAEf,EAAA;AACE+D,QAAAA,IAAAA,EAAMk7C,UAAUyH,UAAU;QAC1BllD,MAAAA,EAAAA,MAAAA;QACA8jD,cAAAA,EAAAA,cAAAA;AACAK,QAAAA,KAAAA,EAAO1G,UAAU2G,aAAa;AAC9BC,QAAAA,KAAAA,EAAO5G,UAAU2G,aAAa;AAChC,KAAA,CAAA,CAAA;AACJ,CAAA;AAEA,IAAMe,aAAgB,GAAA;AACpB5iD,IAAAA,IAAAA,EAAMk7C,UAAU6G,aAAa;AAC7BtkD,IAAAA,MAAAA,EAAQy9C,UAAUsG,IAAI;AACtBD,IAAAA,cAAAA,EAAgBrG,UAAUsG,IAAI;AAC9BI,IAAAA,KAAAA,EAAO1G,UAAU2H,eAAe;AAChCf,IAAAA,KAAAA,EAAO5G,UAAU2H,eAAe;AAChCpB,IAAAA,SAAAA,EAAWvG,UAAUwG,OAAO;AAC5BC,IAAAA,SAAAA,EAAWzG,UAAUwG,OAAO;AAC9B,CAAA,CAAA;AAEO,SAASoB,qBAAsB/gD,MAAc,EAAA;IAClD,OAAO++C,OAAAA,CAAQ11D,MAAM,CACnB2W,MACA,EAAA,QAAA,CAAA;QACEuH,EAAI2E,EAAAA,iBAAsB,CAACvI,YAAY;QACvCxJ,IAAM,EAAA;YACJF,KAAO,EAAA,CAAA;YACPC,MAAQ,EAAA,CAAA;AACRC,YAAAA,IAAAA,EAAM,IAAIxP,UAAW,CAAA;AAAC,gBAAA,GAAA;AAAK,gBAAA,GAAA;AAAK,gBAAA,GAAA;AAAK,gBAAA,GAAA;AAAI,aAAA,CAAA;AAC3C,SAAA;AACA60B,QAAAA,UAAAA,EAAYq3B,kBAAkB18C,IAAI;AAC/B0mD,KAAAA,EAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AAGT,CAAA;AAEO,SAASG,2BAA4BhhD,MAAc,EAAA;IACxD,OAAO++C,OAAAA,CAAQ11D,MAAM,CACnB2W,MACA,EAAA,QAAA,CAAA;QACEuH,EAAI2E,EAAAA,iBAAsB,CAACtI,kBAAkB;QAC7CzJ,IAAM,EAAA;YACJF,KAAO,EAAA,CAAA;YACPC,MAAQ,EAAA,CAAA;AACRC,YAAAA,IAAAA,EAAM,IAAIxP,UAAW,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AACnC,SAAA;AACA60B,QAAAA,UAAAA,EAAYq3B,kBAAkB18C,IAAI;AAC/B0mD,KAAAA,EAAAA,aAAAA,CAAAA,CAAAA,CAAAA;AAGT;;ACxOA;;IAGA,IAAA,qBAAMI,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,qBAAAA,GAAAA;AACIC,QAAAA,IAAAA,CAAAA,OAAAA,GAA6C,IAAIz7C,GAAAA,EAAAA,CAAAA;AACjD07C,QAAAA,IAAAA,CAAAA,SAAAA,GAAwC,IAAI17C,GAAAA,EAAAA,CAAAA;;AAFhDw7C,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AAIJ;;;;AAIC,MACDplD,OAAAA,QAOC,GAPDA,SAAAA,QAAUoC,CAAAA,IAAY,EAAEmjD,OAA6B,EAAA;AACnD,QAAA,IAAI,IAAI,CAACF,OAAO,CAACG,GAAG,CAACpjD,IAAO,CAAA,EAAA;AAC1BpO,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,0BAAC,GAA0BqC,IAAK,GAAA,oCAAA,CAAA,CAAA;AAE7C,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACijD,OAAO,CAAC3zD,GAAG,CAAC0Q,IAAMmjD,EAAAA,OAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA;;;AAGC,MACDE,MAAAA,CAAAA,UAQC,GARDA,SAAAA,WAAYrjD,IAAY,EAAA;AACtB,QAAA,IAAM60C,WAAW,IAAI,CAACqO,SAAS,CAAC96C,GAAG,CAACpI,IAAAA,CAAAA,CAAAA;AAEpC,QAAA,IAAI60C,QAAU,EAAA;AACZA,YAAAA,QAAAA,CAAStrC,OAAO,EAAA,CAAA;AAChB,YAAA,IAAI,CAAC25C,SAAS,CAACI,MAAM,CAACtjD,IAAAA,CAAAA,CAAAA;AACxB,SAAA;AACA,QAAA,IAAI,CAACijD,OAAO,CAACK,MAAM,CAACtjD,IAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;AAEA;;;AAGC,MACDujD,MAAAA,CAAAA,SAoBC,GApBDA,SAAAA,UAAWvjD,IAAY,EAAA;;AAErB,QAAA,IAAI,IAAI,CAACkjD,SAAS,CAACE,GAAG,CAACpjD,IAAO,CAAA,EAAA;AAC5B,YAAA,OAAO,IAAI,CAACkjD,SAAS,CAAC96C,GAAG,CAACpI,IAAAA,CAAAA,CAAAA;AAC5B,SAAA;;AAGA,QAAA,IAAMmjD,UAAU,IAAI,CAACF,OAAO,CAAC76C,GAAG,CAACpI,IAAAA,CAAAA,CAAAA;AAEjC,QAAA,IAAI,CAACmjD,OAAS,EAAA;AACZvxD,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,0BAAC,GAA0B0X,IAAK,GAAA,sBAAA,CAAA,CAAA;YAE9C,OAAO,IAAA,CAAA;AACT,SAAA;AAEA,QAAA,IAAM60C,QAAWsO,GAAAA,OAAAA,EAAAA,CAAAA;AAEjB,QAAA,IAAI,CAACD,SAAS,CAAC5zD,GAAG,CAAC0Q,IAAM60C,EAAAA,QAAAA,CAAAA,CAAAA;QAEzB,OAAOA,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;AAEC,MACDuO,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,IAAKpjD,IAAY,EAAA;AACf,QAAA,OAAO,IAAI,CAACijD,OAAO,CAACG,GAAG,CAACpjD,IAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA;;MAGAwjD,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,GAAAA;AACE,QAAA,OAAOzxD,MAAMoV,IAAI,CAAC,IAAI,CAAC87C,OAAO,CAAC9oD,IAAI,EAAA,CAAA,CAAA;AACrC,KAAA,CAAA;AAEA;;MAGAoP,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAAC25C,SAAS,CAAClpD,OAAO,CAAC66C,SAAAA,QAAAA,EAAAA;AAAYA,YAAAA,OAAAA,QAAAA,CAAStrC,OAAO,EAAA,CAAA;;QACnD,IAAI,CAAC25C,SAAS,CAACO,KAAK,EAAA,CAAA;QACpB,IAAI,CAACR,OAAO,CAACQ,KAAK,EAAA,CAAA;AACpB,KAAA,CAAA;AA/EIT,IAAAA,OAAAA,qBAAAA,CAAAA;;AAkFN;;AAEC,IACM,IAAMU,qBAAwB,GAAA,IAAIV,qBAAwB;;AC/G1D,IAAA,cAAMW,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,cAAAA,GAAAA;QAIT,IAAI,CAACC,aAAa,GAAG,EAAC,CAAA;;AAJbD,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAOX,IAAA,MAAA,CAAME,MAeL,GAfD,SAAMA,MAAAA,CAAQ5B,OAAgB,EAAA;;eAA9B,mBAAA,CAAA,WAAA;gBACQ34C,EAOEw6C,EAAAA,UAAAA,CAAAA;;;;AAPFx6C,wBAAAA,EAAAA,GAAK24C,QAAQ34C,EAAE,CAAA;AAErB,wBAAA,IAAI,KAAKs6C,CAAAA,aAAa,CAACt6C,EAAAA,CAAG,EAAE;AAC1B,4BAAA,OAAA;;;AACF,yBAAA;AACI24C,wBAAAA,IAAAA,CAAAA,OAAAA,CAAQpB,UAAU,EAAlBoB,OAAAA;;;;wBACF,KAAK2B,CAAAA,aAAa,CAACt6C,EAAAA,CAAG,GAAG,IAAA,CAAA;AACN,wBAAA,OAAA;;4BAAM,KAAKy6C,CAAAA,UAAU,CAAC9B,OAAAA,CAAQpB,UAAU,CAAA;;;wBAArDiD,UAAa,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEnB7B,wBAAAA,OAAAA,CAAQ+B,YAAY,CAACF,UAAAA,CAAAA,CAAAA;wBACrB,KAAKF,CAAAA,aAAa,CAACt6C,EAAAA,CAAG,GAAG,KAAA,CAAA;;;;;;AAEzB,wBAAA,MAAM,IAAIhd,KAAM,CAAA,iBAAA,CAAA,CAAA;;;;;;;AAEpB,SAAA,CAAA,EAAA,CAAA;;AAEA23D,IAAAA,MAAAA,CAAAA,iBAkCC,GAlCDA,SAAAA,iBAAAA,CAAmBpD,UAAqC,EAAA;AACtD,QAAA,IAAIA,UAAY,EAAA;YACd,IAAM7gD,IAAAA,GAAO6gD,WAAW7gD,IAAI,CAAA;AAE5B,YAAA,IACEA,SAAS44C,iBAAkBsL,CAAAA,UAAU,IACrClkD,IAAS44C,KAAAA,iBAAAA,CAAkB78C,KAAK,EAChC;AACA,gBAAA,IAAQnS,MAAgBi3D,GAAAA,UAAAA,CAAhBj3D,MAAQiQ,EAAAA,GAAAA,GAAQgnD,UAARhnD,CAAAA,GAAAA,CAAAA;gBAChB,IAAQwiD,MAAQwE,UAARxE,CAAAA,GAAAA,CAAAA;gBAER,IAAIzyD,MAAAA,KAAWsxD,SAAUiJ,CAAAA,gBAAgB,EAAE;AACzC,oBAAA,OAAO,OAAOtqD,GAAAA,KAAQ,QAAY,IAAA,CAAC,CAACA,GAAAA,CAAAA;AACtC,iBAAA;AAEA,gBAAA,OAAOZ,QAASojD,CAAAA,GAAAA,CAAAA,IAAQA,GAAItyD,CAAAA,MAAM,GAAG,CAAA,CAAA;AACvC,aAAA;YACA,IAAIiW,IAAAA,KAAS44C,iBAAkBwH,CAAAA,OAAO,EAAE;AACtC,gBAAA,IAAQG,GAAiBM,GAAAA,UAAAA,CAAjBN,GAAKH,EAAAA,OAAAA,GAAYS,UAAZT,CAAAA,OAAAA,CAAAA;AACb,gBAAA,IAAQx2D,OAAiBi3D,GAAAA,UAAAA,CAAjBj3D,MAAQw6D,EAAAA,IAAAA,GAASvD,UAATuD,CAAAA,IAAAA,CAAAA;gBAChB,IAAQC,OAASxD,UAATwD,CAAAA,IAAAA,CAAAA;AAER,gBAAA,IAAI9D,GAAK,EAAA;oBACP,OAAOH,OAAAA,CAAQr2D,MAAM,GAAG,CAAA,CAAA;AAC1B,iBAAA;gBACA,IAAIH,OAAAA,KAAWsxD,SAAUiJ,CAAAA,gBAAgB,EAAE;oBACzC,OAAOC,IAAAA,CAAKE,KAAK,CAACzqD,SAAAA,GAAAA,EAAAA;AAAO,wBAAA,OAAA,OAAOA,QAAQ,QAAYA,IAAAA,GAAAA,CAAAA;;AACtD,iBAAA;gBAEA,OAAOwqD,IAAAA,CAAKC,KAAK,CAACjI,SAAAA,GAAAA,EAAAA;2BAAOpjD,QAASojD,CAAAA,GAAAA,CAAAA,IAAQA,GAAItyD,CAAAA,MAAM,GAAG,CAAA,CAAA;;AACzD,aAAA;AACF,SAAA;QAEA,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAMg6D,UAgHL,GAhHD,SAAMA,UAAYlD,CAAAA,UAAoC,EAAE0D,MAA6B,EAAA;;eAArF,mBAAA,CAAA,WAAA;AACUvkD,YAAAA,IAAAA,IAAAA,EAAMpW,QACNiQ,GACAwiD,EAAAA,GAAAA,EACAkE,KAAKH,OACLiE,EAAAA,IAAAA,EACAD,MAIAI,IAWAzoD,EAAAA,KAAAA,EASAkjD,OAQAvwD,MAEA6S,EAAAA,MAAAA,EAIIkjD,aAgBCv4D,CACsC20D,EAAAA,eAAAA,EAOzC3kD,MACAwoD,SACAC,EAAAA,UAAAA,EACFrE,eAkBEA,cAUAA,EAAAA,cAAAA,CAAAA;;;;wBAlGFtgD,IAAiB6gD,GAAAA,UAAAA,CAAjB7gD,IAAMpW,EAAAA,MAAAA,GAAWi3D,UAAXj3D,CAAAA,MAAAA,CAAAA;AACNiQ,wBAAAA,GAAAA,GAAQgnD,UAARhnD,CAAAA,GAAAA,CAAAA;AACAwiD,wBAAAA,GAAAA,GAAQwE,UAARxE,CAAAA,GAAAA,CAAAA;wBACAkE,GAAiBM,GAAAA,UAAAA,CAAjBN,GAAKH,EAAAA,OAAAA,GAAYS,UAAZT,CAAAA,OAAAA,CAAAA;AACLiE,wBAAAA,IAAAA,GAASxD,UAATwD,CAAAA,IAAAA,CAAAA;AACAD,wBAAAA,IAAAA,GAASvD,UAATuD,CAAAA,IAAAA,CAAAA;8BAGJx6D,MAAAA,KAAWsxD,UAAUiJ,gBAAgB,IAAInkD,SAAS44C,iBAAkBwH,CAAAA,OAAO,CAA3Ex2D,EAAAA,OAAAA;;;;AACW,wBAAA,OAAA;;AAAM,4BAAA,KAAA,CAAKg7D,WAAW,CAAC/qD,GAAAA,CAAAA;;;wBAA9B2qD,IAAO,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEb,wBAAA,OAAA;;4BAAO,QACFD,CAAAA,EAAAA,EAAAA,MAAAA,EAAAA;gCACHC,IAAAA,EAAAA,IAAAA;AACA56D,gCAAAA,MAAAA,EAAQsxD,UAAUiJ,gBAAgB;AAClC5iC,gCAAAA,UAAAA,EAAYq3B,kBAAkB78C,KAAK;gCACnC8kD,UAAY,EAAA;AAAE7gD,oCAAAA,IAAAA,EAAM44C,kBAAkB78C,KAAK;AAAElC,oCAAAA,GAAAA,EAAK,QAAKA,CAAAA,EAAAA,EAAAA,GAAAA,CAAAA;AAAOjQ,oCAAAA,MAAAA,EAAQsxD,UAAUiJ,gBAAgB;AAAC,iCAAA;;;;AAE1FnkD,wBAAAA,IAAAA,EAAAA,IAAS44C,KAAAA,iBAAAA,CAAkB78C,KAAI,CAA/BiE,EAAAA,OAAAA;;;;AAEK,wBAAA,OAAA;;4BAAM69C,SAAUxB,CAAAA,GAAAA,CAAAA;;;wBAAxBtgD,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,wBAAA,OAAA;;4BAAO,QACFwoD,CAAAA,EAAAA,EAAAA,MAAAA,EAAAA;gCACHxoD,KAAAA,EAAAA,KAAAA;AACAwlB,gCAAAA,UAAAA,EAAYq3B,kBAAkB78C,KAAK;gCACnC8kD,UAAY,EAAA;oCAAE7gD,IAAAA,EAAAA,IAAAA;oCAAMq8C,GAAAA,EAAAA,GAAAA;AAAKzyD,oCAAAA,MAAAA,EAAQsxD,UAAUoG,UAAU;AAAC,iCAAA;;;;AAE/CthD,wBAAAA,IAAAA,EAAAA,IAAS44C,KAAAA,iBAAAA,CAAkBqG,KAAI,CAA/Bj/C,EAAAA,OAAAA;;;;AACK,wBAAA,OAAA;;4BAAMg/C,SAAU3C,CAAAA,GAAAA,CAAAA;;;wBAAxB4C,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEd,wBAAA,OAAA;;4BAAO,QACFsF,CAAAA,EAAAA,EAAAA,MAAAA,EAAAA;gCACHtF,KAAAA,EAAAA,KAAAA;AACA19B,gCAAAA,UAAAA,EAAYq3B,kBAAkBqG,KAAK;;;;AAE5Bj/C,wBAAAA,IAAAA,EAAAA,IAAS44C,KAAAA,iBAAAA,CAAkBsL,UAAS,CAApClkD,EAAAA,OAAAA;;;;AACM,wBAAA,OAAA;;4BAAM6+C,UAAWxC,CAAAA,GAAAA,CAAAA;;;wBAA1B3tD,MAAS,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;wBAET6S,MAASmiD,GAAAA,qBAAAA,CAAsBH,SAAS,CAAC,MAAA,CAAA,CAAA;6BAE3ChiD,MAAAA,EAAAA,OAAAA;;;;;;;;;;;;AAEoB,wBAAA,OAAA;;AAAMA,4BAAAA,MAAAA,CAAOsjD,cAAc,CAACn2D,MAAAA,CAAAA;;;wBAA1C+1D,WAAc,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEpB,wBAAA,IAAIA,WAAYljC,CAAAA,UAAU,KAAKq3B,iBAAAA,CAAkBsL,UAAU,EAAE;AAC3D,4BAAA,OAAA;;AAAO,gCAAA,QAAA,CAAA;AACL3iC,oCAAAA,UAAAA,EAAYkjC,YAAYljC,UAAU;AAClCvhB,oCAAAA,IAAAA,EAAMykD,YAAYzkD,IAAI;AACtBpW,oCAAAA,MAAAA,EAAQ66D,YAAY76D,MAAM;AAC1B23D,oCAAAA,cAAAA,EAAgBkD,YAAYlD,cAAc;AAC1C9jD,oCAAAA,MAAAA,EAAQgnD,YAAYhnD,MAAM;AAC1B2iD,oCAAAA,OAAAA,EAASqE,YAAYrE,OAAO;AAC5BqB,oCAAAA,SAAAA,EAAWvG,UAAU4J,MAAM;AAC3BnD,oCAAAA,SAAAA,EAAWzG,UAAU4J,MAAM;oCAC3BjE,UAAAA,EAAAA,UAAAA;AACG0D,iCAAAA,EAAAA,MAAAA,CAAAA;;AAEP,yBAAA;;;;;;AACOr4D,wBAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;wBACP,MAAM,IAAII,MAAM,4BAAC,IAA4Bu0D,CAAAA,eAAAA,GAAAA,8BAAAA,UAAYxE,CAAAA,GAAG,YAAfwE,eAAmB,GAAA,QAAO,IAAE,IAAI,IAAA,CAAax0D,CAAAA,OAAO,IAAIH,CAAAA,CAAAA,CAAAA,CAAAA;;;;;;;AAGvG,wBAAA,MAAM,IAAII,KAAM,CAAA,kDAAA,CAAA,CAAA;;;;;;;AAET0T,wBAAAA,IAAAA,EAAAA,IAAS44C,KAAAA,iBAAAA,CAAkBwH,OAAM,CAAjCpgD,EAAAA,OAAAA;;;;6BACLugD,GAAAA,EAAAA,OAAAA;;;;AACW,wBAAA,OAAA;;4BAAM1B,UAAW0B,CAAAA,GAAAA,CAAAA;;;wBAAxBrkD,IAAO,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;wBACPwoD,SAAY96D,GAAAA,MAAAA,IAAAA,IAAAA,GAAAA,MAAUsxD,GAAAA,SAAAA,CAAUoG,UAAU,CAAA;wBAC1CqD,UAAaD,GAAAA,SAAAA,KAAcxJ,SAAUoG,CAAAA,UAAU,GAAGlB,OAAAA,CAAQpzD,KAAK,EAAKozD,GAAAA,OAAAA,CAAQvmD,GAAG,CAACxF,SAAAA,CAAAA,EAAAA;AAAKA,4BAAAA,OAAAA,CAAAA,CAAErH,KAAK,EAAA,CAAA;;AAG9FpD,wBAAAA,IAAAA,EAAAA,MAAWsxD,KAAAA,SAAAA,CAAUiJ,gBAAe,CAApCv6D,EAAAA,OAAAA;;;;AACc,wBAAA,OAAA;;AAAMpB,4BAAAA,OAAAA,CAAQqZ,GAAG,CAACu+C,OAAQvmD,CAAAA,GAAG,CAAC2mD,SAAAA,MAAAA,EAAAA;uCAAU,KAAKuE,CAAAA,gBAAgB,CAACvE,MAAQtkD,EAAAA,IAAAA,CAAAA,CAAAA;;;;wBAAtFokD,aAAgB,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;wBAEhBA,aAAgB,GAAA,KAAA,CAAKyE,gBAAgB,CAAC3E,OAA8BlkD,EAAAA,IAAAA,CAAAA,CAAAA;;;AAGtE,wBAAA,OAAA;;4BAAO,QACFqoD,CAAAA,EAAAA,EAAAA,MAAAA,EAAAA;gCACHnE,OAASE,EAAAA,aAAAA;gCACT12D,MAAQ86D,EAAAA,SAAAA;AACRnjC,gCAAAA,UAAAA,EAAYq3B,kBAAkBwH,OAAO;gCACrCS,UAAY,EAAA;oCAAEN,GAAAA,EAAAA,GAAAA;oCAAKH,OAASuE,EAAAA,UAAAA;oCAAY/6D,MAAQ86D,EAAAA,SAAAA;AAAW1kD,oCAAAA,IAAAA,EAAM44C,kBAAkBwH,OAAO;AAAC,iCAAA;;;;AAI3Fx2D,wBAAAA,IAAAA,EAAAA,WAAWsxD,SAAUoG,CAAAA,UAAU,IAAI,CAAC13D,MAAK,CAAzCA,EAAAA,OAAAA;;;;AACoB,wBAAA,OAAA;;AAAMpB,4BAAAA,OAAAA,CAAQqZ,GAAG,CAACwiD,IAAKxqD,CAAAA,GAAG,CAACwiD,SAAAA,GAAAA,EAAAA;uCAAOwB,SAAUxB,CAAAA,GAAAA,CAAAA,CAAAA;;;;wBAA5DiE,cAAgB,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEtB,wBAAA,OAAA;;4BAAO,QACFiE,CAAAA,EAAAA,EAAAA,MAAAA,EAAAA;gCACHnE,OAASE,EAAAA,cAAAA;AACT12D,gCAAAA,MAAAA,EAAQsxD,UAAUoG,UAAU;AAC5B//B,gCAAAA,UAAAA,EAAYq3B,kBAAkBwH,OAAO;gCACrCS,UAAY,EAAA;oCAAE7gD,IAAAA,EAAAA,IAAAA;AAAMqkD,oCAAAA,IAAAA,EAAMA,KAAKr3D,KAAK,EAAA;AAAIpD,oCAAAA,MAAAA,EAAQsxD,UAAUoG,UAAU;AAAC,iCAAA;;;;AAE9D13D,wBAAAA,IAAAA,EAAAA,MAAWsxD,KAAAA,SAAAA,CAAUiJ,gBAAe,CAApCv6D,EAAAA,OAAAA;;;;AACa,wBAAA,OAAA;;AAAMpB,4BAAAA,OAAAA,CAAQqZ,GAAG,CAACuiD,IAAKvqD,CAAAA,GAAG,CAACA,SAAAA,GAAAA,EAAAA;AAAO,gCAAA,OAAA,KAAA,CAAK+qD,WAAW,CAAC/qD,GAAAA,CAAAA,CAAAA;;;;wBAAnEymD,cAAgB,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEtB,wBAAA,OAAA;;4BAAO,QACFiE,CAAAA,EAAAA,EAAAA,MAAAA,EAAAA;gCACHnE,OAASE,EAAAA,cAAAA;AACT12D,gCAAAA,MAAAA,EAAQsxD,UAAUiJ,gBAAgB;AAClC5iC,gCAAAA,UAAAA,EAAYq3B,kBAAkBwH,OAAO;gCACrCS,UAAY,EAAA;oCAAE7gD,IAAAA,EAAAA,IAAAA;oCAAMokD,IAAMA,EAAAA,IAAAA,CAAKvqD,GAAG,CAACA,SAAAA,GAAAA,EAAAA;+CAAQ,QAAKA,CAAAA,EAAAA,EAAAA,GAAAA,CAAAA,CAAAA;;AAASjQ,oCAAAA,MAAAA,EAAQsxD,UAAUiJ,gBAAgB;AAAC,iCAAA;;;;AAKlG,wBAAA,MAAM,IAAI73D,KAAAA,CAAM,yBAAC,GAAyB0T,IAAK,GAAA,GAAA,CAAA,CAAA;;;AACjD,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAc+kD,gBAMb,GAND,SAAcA,gBAAkBC,CAAAA,QAAgB,EAAEzE,GAAgB,EAAA;eAAlE,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;AAAO/3D,oBAAAA,OAAAA,CAAQqZ,GAAG,CAACmjD,QAASnrD,CAAAA,GAAG,CAAC4mD,SAAAA,OAAAA,EAAAA;wBAC9B,IAAM3gD,IAAAA,GAAO,IAAIC,IAAK,CAAA;4BAAC,IAAIrT,UAAAA,CAAW6zD,KAAKE,OAAO,CAAC,EAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,CAAA;AAAE,yBAAA,CAAA,CAAA;AAEnE,wBAAA,OAAO5C,SAAU/9C,CAAAA,IAAAA,CAAAA,CAAAA;AACnB,qBAAA,CAAA,CAAA;;;AACF,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAc8kD,WAEb,GAFD,SAAcA,WAAAA,CAAaK,OAA2C,EAAA;eAAtE,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;AAAOz8D,oBAAAA,OAAAA,CAAQqZ,GAAG,CAACojD,OAAQprD,CAAAA,GAAG,CAAC3R,SAAAA,GAAAA,EAAAA;+BAAO21D,SAAU31D,CAAAA,GAAAA,CAAAA,CAAAA;;;;AAClD,SAAA,CAAA,EAAA,CAAA;;AAxLWy7D,IAAAA,OAAAA,cAAAA,CAAAA;AAyLZ,CAAA,GAAA;AAED,IAAIx4D,CAAAA,CAAAA;AAEG,SAAS+5D,wBAAAA,GAAAA;AACd,IAAA,IAAI,CAAC/5D,CAAG,EAAA;AACNA,QAAAA,CAAAA,GAAI,IAAIw4D,cAAAA,EAAAA,CAAAA;AACV,KAAA;IAEA,OAAOx4D,CAAAA,CAAAA;AACT,CAAA;AAEO,SAASg6D,yBAA0BhC,OAAuB,EAAA;IAC/Dh4D,CAAIg4D,GAAAA,OAAAA,CAAAA;AACN;;ACnMO,IAAMiC,4BAA4B,EAAE;AACpC,IAAMC,2BAA2B,KAAK;AACtC,IAAMC,gCAAgC,KAAK;;AAKtCC,CAAAA,SAAAA,+BAAAA,EAAAA;;;;;;;;;;;;;GAAAA,+BAAAA,KAAAA,+BAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAkBAC,CAAAA,SAAAA,kBAAAA,EAAAA;AACV;;AAEC,MAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AAED;;AAEC,MAAA,kBAAA,CAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;GAPSA,kBAAAA,KAAAA,kBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AA6DL,IAAA,kBAAMC,iBAAD,WAAL;aAAMA,kBAME1jD,CAAAA,MAAc,EAAEzU,OAA0C,EAAA;aAF7DyzD,SAAY,GAAA,KAAA,CAAA;AAGpB,QAAA,IAAI,CAACzzD,OAAS,EAAA;AACZ,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAQ20D,OAAkB30D,GAAAA,OAAAA,CAAlB20D,OAASpzD,EAAAA,IAAAA,GAASvB,OAATuB,CAAAA,IAAAA,CAAAA;QAEjB,IAAW3F,YAAP+4D,CAAAA,OAAAA,EAAmBnB,OAAS,CAAA,EAAA;YAC9B,IAAI,CAACmB,OAAO,GAAGA,OAAAA,CAAAA;YACf,IAAI,CAACyD,eAAe,GAAG,IAAA,CAAA;AACzB,SAAA,MAAO,IAAIzD,OAAS,EAAA;YAClB,IACEH,KAAAA,GAGEG,OAHFH,CAAAA,KAAAA,EAAOF,KAGLK,GAAAA,OAAAA,CAHKL,OAAOH,SAGZQ,GAAAA,OAAAA,CAHYR,SAAWE,EAAAA,SAAAA,GAGvBM,OAHuBN,CAAAA,SAAAA,EAAWJ,iBAGlCU,OAHkCV,CAAAA,cAAAA,EAAAA,eAAAA,GAGlCU,OAFFxkD,CAAAA,MAAAA,EAAAA,MAASy9C,GAAAA,eAAAA,KAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAUsG,IAAI,GAAA,eAAA,EAAA,aAAA,GAErBS,OADFjiD,CAAAA,IAAAA,EAAAA,IAAOk7C,GAAAA,aAAAA,KAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAU6G,aAAa,GAAA,aAAA,CAAA;YAGhC,IAAI,CAAC2D,eAAe,GAAG,KAAA,CAAA;YACvB,IAAI,CAAC1F,cAAc,GAAG;gBACpBnxD,IAAAA,EAAAA,IAAAA;gBACA4O,MAAAA,EAAAA,MAAAA;gBACAuC,IAAAA,EAAAA,IAAAA;AACAuhD,gBAAAA,cAAAA,EAAgBA,cAAkB9jD,IAAAA,MAAAA;gBAClCqkD,KAAAA,EAAAA,KAAAA;gBACAF,KAAAA,EAAAA,KAAAA;gBACAH,SAAAA,EAAAA,SAAAA;gBACAE,SAAAA,EAAAA,SAAAA;AACAp1D,gBAAAA,IAAAA,EAAMe,QAAQf,IAAI;AACpB,aAAA,CAAA;YACA,IAAI,CAAC01D,OAAO,GAAGnB,OAAQ11D,CAAAA,MAAM,CAC3B2W,MACA,EAAA,QAAA,CAAA,EAAA,EACK,IAAI,CAACi+C,cAAc,EAAA;AACtBz+B,gBAAAA,UAAAA,EAAYq3B,kBAAkB+M,WAAW;gBACzCzpD,IAAM,EAAA;oBAAEF,KAAOnN,EAAAA,IAAK,CAAC,CAAE,CAAA;oBAAEoN,MAAQpN,EAAAA,IAAK,CAAC,CAAE,CAAA;AAAC,iBAAA;;SAGzC,MAAA,CAEP;;AA5CS42D,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;IA+CXl8C,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,GAAAA;QACE,IAAI,IAAI,CAACw3C,SAAS,EAAE;AAClB,YAAA,OAAA;AACF,SAAA;QACA,IAAI,CAACkB,OAAO,CAAC14C,OAAO,EAAA,CAAA;QACpB,IAAI,CAACw3C,SAAS,GAAG,IAAA,CAAA;AACnB,KAAA,CAAA;AArDW0E,IAAAA,aAAAA,CAAAA,kBAAAA,EAAAA;;YAuDPrD,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrB,SAAS,CAAA;AACvB,aAAA;;;YAEI6E,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAA,CAAA,CAAA;AACF,aAAA;;;YAEI/2D,GAAAA,EAAAA,MAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,IAAMg3D,GAAAA,GAAM,IAAI,CAAC5D,OAAO,CAAA;AAExB,gBAAA,OAAO4D,GAAM,GAAA;AAACA,oBAAAA,GAAAA,CAAI7E,QAAQ,EAAA;AAAI6E,oBAAAA,GAAAA,CAAI5E,SAAS,EAAA;iBAAG,GAAG;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA,CAAA;AACzD,aAAA;;;YAEIjlD,GAAAA,EAAAA,OAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACimD,OAAO,CAACjB,QAAQ,EAAM,IAAA,CAAA,CAAA;AACpC,aAAA;;;YAEI/kD,GAAAA,EAAAA,QAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACgmD,OAAO,CAAChB,SAAS,EAAM,IAAA,CAAA,CAAA;AACrC,aAAA;;;AA3EWwE,IAAAA,OAAAA,kBAAAA,CAAAA;AA4EZ,CAAA,GAAA;;AAWWK,CAAAA,SAAAA,+BAAAA,EAAAA;AACV;;AAEC,MAAA,+BAAA,CAAA,+BAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAA,CAAA;AAED;;AAEC,MAAA,+BAAA,CAAA,+BAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AAED;;AAEC,MAAA,+BAAA,CAAA,+BAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAA,CAAA;AAED;;AAEC,MAAA,+BAAA,CAAA,+BAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA;GAfSA,+BAAAA,KAAAA,+BAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAyBZ,IAAIlpB,MAAO,GAAA,CAAA,CAAA;AAEX;;AAEC,IACM,IAAA,UAAMmpB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,CAkBEr8B,QAAkB,EAAA;AAjB/B;;AAEC,MAAA,IAAA,CACDhtB,QAAmB,GAAA,CAAA,CAAA;AACnB;;AAEC,MAAA,IAAA,CACDnQ,OAAe,YAAeqwC,GAAAA,MAAAA,EAAAA,CAAAA;AAC9B;;AAEC,MAAA,IAAA,CACQopB,SAA8B,EAAE,CAAA;aAE/BC,QAAW,GAAA,KAAA,CAAA;aACXN,WAAkC,GAAA,IAAA,CAAA;QAI1C,IAAI,CAACj8B,QAAQ,GAAGA,QAAAA,CAAAA;;AAnBPq8B,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AA8BXG,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAASC,IAAuB,EAAA;QAC9B1pD,UAAW,CAAA,IAAI,CAACupD,MAAM,EAAEG,IAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAYD,IAAuB,EAAA;QACjCt4D,UAAW,CAAA,IAAI,CAACm4D,MAAM,EAAEG,IAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA;;AAEC,MACDE,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAW38B,QAAkB,EAAA;;AAE7B,KAAA,CAAA;AAEA;;AAEC,MACD48B,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,QAAS58B,QAAkB,EAAA;;AAE3B,KAAA,CAAA;AAEA;;AAEC,MACD68B,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,gBAAiB78B,QAAkB,EAAA;;AAEnC,KAAA,CAAA;AAEA;;MAGA88B,MAAAA,CAAAA,WASC,GATDA,SAAAA,WAAAA,GAAAA;AACc,QAAA,IAAA,iBAAA,CAAA;AAAZ,QAAA,IAAMxtD,OAAM,iBAAA,GAAA,IAAI,CAAC2sD,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAAhB,kBAAkBc,QAAQ,CAAA;AAEtC,QAAA,IAAIztD,GAAK,EAAA;YACP,OAAOA,GAAAA,CAAAA;AACT,SAAA;QACA,IAAM0wB,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAE9B,QAAA,OAAOA,QAAW,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAGA,YAAAA,QAAAA,CAASs3B,QAAQ,EAAA;AAAIt3B,YAAAA,QAAAA,CAASu3B,SAAS,EAAA;SAAG,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AACpF,KAAA,CAAA;AAEA;;;AAGC,MACD13C,MAAAA,CAAAA,OAcC,GAdDA,SAAAA,QAASjc,OAAkC,EAAA;QACzC,IAAI,IAAI,CAAC24D,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAMS,iBAAoBp5D,GAAAA,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS04D,MAAM,KAAI/8D,SAAAA,CAAAA;QAE7C,IAAIy9D,iBAAAA,KAAsB3oD,cAAe4oD,CAAAA,IAAI,EAAE;AAC7C,YAAA,IAAI,CAACX,MAAM,CAAChsD,OAAO,CAACmsD,SAAAA,IAAAA,EAAAA;AACjBA,gBAAAA,IAAAA,CAAc58C,OAAO,CAACm9C,iBAAAA,CAAAA,CAAAA;AACzB,aAAA,CAAA,CAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACV,MAAM,CAACj8D,MAAM,GAAG,CAAA,CAAA;QAErB,IAAI,CAACk8D,QAAQ,GAAG,IAAA,CAAA;AAClB,KAAA,CAAA;AA3FWF,IAAAA,aAAAA,CAAAA,UAAAA,EAAAA;;YAsBPa,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACX,QAAQ,CAAA;AACtB,aAAA;;;YAEIQ,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACD,WAAW,EAAA,CAAA;AACzB,aAAA;;;AA5BWT,IAAAA,OAAAA,UAAAA,CAAAA;AA4FZ,CAAA;;AC/SM,IAAA,cAAMc,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,CAGEn9B,QAAkB,EAAA;;AACvBA,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAHAo9B,eAAkB,GAAA,KAAA,CAAA;AAKxB,QAAA,KAAA,CAAKpqD,QAAQ,GAAG2oD,wBAAAA,CAAAA;AAChB,QAAA,KAAA,CAAK94D,IAAI,GAAG,gBAAA,CAAA;;;AAPHs6D,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAUXE,IAAAA,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,CAAOD,eAAwB,EAAA;QAC7B,IAAI,CAACA,eAAe,GAAGA,eAAAA,CAAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAST,SAKR,GALD,SAASA,SAAAA,CAAW38B,QAAkB,EAAA;QACpC,IAAI,IAAI,CAACo9B,eAAe,EAAE;AACxB,YAAA,IAAI,CAACnB,WAAW,GAAGj8B,SAASs9B,cAAc,CAAC,kBAAkBt9B,QAASs3B,CAAAA,QAAQ,EAAIt3B,EAAAA,QAAAA,CAASu3B,SAAS,EAAI,EAAA,EAAA,EAAIpI,WAAWoO,MAAM,EAAEnO,oBAAoBoO,QAAQ,CAAA,CAAA;AAC3Jx9B,YAAAA,QAAAA,CAASy9B,cAAc,CAAC,IAAI,CAACxB,WAAW,CAAA,CAAA;AAC1C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASW,OAYR,GAZD,SAASA,OAAAA,CAAS58B,QAAkB,EAAA;QAClC,IAAI,IAAI,CAACo9B,eAAe,EAAE;AACxBp9B,YAAAA,QAAAA,CAAS+5B,KAAK,CAAC;AACb2D,gBAAAA,WAAAA,EAAazO,kBAAkB8K,KAAK;AACpC4D,gBAAAA,WAAAA,EAAa1O,kBAAkB8K,KAAK;AACpC6D,gBAAAA,aAAAA,EAAe3O,kBAAkB8K,KAAK;AACxC,aAAA,CAAA,CAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACuC,MAAM,CAAC1rD,IAAI,CAAC,SAACvK,CAAGC,EAAAA,CAAAA,EAAAA;mBAAMD,CAAE2M,CAAAA,QAAQ,GAAG1M,CAAAA,CAAE0M,QAAQ,CAAA;;AAElDgtB,QAAAA,QAAAA,CAAS69B,YAAY,CAAC,IAAI,CAACvB,MAAM,CAAA,CAAA;AACnC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASO,eAIR,GAJD,SAASA,eAAAA,CAAiB78B,QAAkB,EAAA;AAC1C,QAAA,IAAI,IAAI,CAACo9B,eAAe,IAAI,IAAI,CAACnB,WAAW,EAAE;AAC5Cj8B,YAAAA,QAAAA,CAAS89B,kBAAkB,CAAC,IAAI,CAAC7B,WAAW,CAAA,CAAA;AAC9C,SAAA;AACF,KAAA,CAAA;AAvCWkB,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBd,UAwCnC;;;ACtCW0B,CAAAA,SAAAA,yBAAAA,EAAAA;;;;;GAAAA,yBAAAA,KAAAA,yBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAeAC,CAAAA,SAAAA,WAAAA,EAAAA;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAyCL,IAAA,aAAeC,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;aAAAA,aAGlB5lD,CAAAA,MAAc,EACEyL,MAAwB,EAAA;;AAElCzL,QAAAA,KAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAFUyL,MAAAA,GAAAA,MAAAA,CAAAA;;;AAJEm6C,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB9+C,aAQ3C,EAAA;AAGM,IAAA,MAAM++C,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,MAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,MAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAGXC,IAAAA,MAAAA,CAAAA,aAaC,GAbDA,SAAAA,aAAAA,CAAeC,MAAyC,EAAA;AACtD,QAAA,IAAMC,eAA6B,EAAE,CAAA;AAErC,QAAA,IAAID,MAAQ,EAAA;YACV,IAAkB79D,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAC2tD,MAAS,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5B5/D,gBAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT6/D,gBAAAA,YAAAA,CAAa97D,IAAI,CAAC;AAAC/D,oBAAAA,GAAAA;AAAK4/D,oBAAAA,MAAM,CAAC5/D,GAAI,CAAA;AAAC,iBAAA,CAAA,CAAA;AACtC,aAAA;AACF,SAAA;AACA,QAAA,IAAM8/D,aAAgB,GAAA,IAAI,CAACjmD,MAAM,CAACkmD,gBAAgB,EAAGC,CAAAA,YAAY,CAAC,IAAI,CAACC,UAAU,EAAEJ,YAAAA,CAAAA,CAAAA;QAEnFC,aAAcI,CAAAA,MAAM,GAAG,IAAI,CAAA;QAE3B,OAAOJ,aAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS3+C,QAGR,GAHD,SAASA,QAAAA,CAAUnN,IAAqB,EAAA;AACtC,QAAA,aAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;QACf,IAAI,CAACisD,UAAU,GAAGjsD,IAAAA,CAAAA;AACpB,KAAA,CAAA;AArBW0rD,IAAAA,OAAAA,MAAAA,CAAAA;EAAe/+C,aAsB3B,EAAA;AAtBY++C,MAAAA,GAAAA,UAAAA,CAAAA;IADZ//C,YAAaoG,CAAAA,QAAa,CAAC25C,MAAM,CAAA;AACrBA,CAAAA,EAAAA,MAAAA,CAAAA;;;ACODS,CAAAA,SAAAA,UAAAA,EAAAA;;;GAAAA,UAAAA,KAAAA,UAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;;AAYAC,CAAAA,SAAAA,QAAAA,EAAAA;AACV;;AAEC,MAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AAED;;AAEC,MAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAA,CAAA;AAED;;AAEC,MAAA,QAAA,CAAA,QAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAA,CAAA;AAED;;AAEC,MAAA,QAAA,CAAA,QAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAA,CAAA;GAfSA,QAAAA,KAAAA,QAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACxFL,SAASC,cAAAA,CAAmBtuD,GAAQ,EAAEuuD,GAAM,EAAA;IACjD,IAAIvuD,GAAAA,KAAQhR,SAAagR,IAAAA,GAAAA,KAAQ,IAAM,EAAA;QACrC,OAAOuuD,GAAAA,CAAAA;AACT,KAAA;IAEA,OAAOvuD,GAAAA,CAAAA;AACT,CAAA;AAEO,SAASwuD,iBAAkBC,QAA4B,EAAA;IAC5D,OAAQA,QAAAA;QACN,KAAKz6C,YAAiB,CAAC06C,KAAK;YAC1B,OAAO,CAAA,CAAA;QACT,KAAK16C,YAAiB,CAAC26C,GAAG;YACxB,OAAO,CAAA,CAAA;QACT,KAAK36C,YAAiB,CAAC46C,WAAW;YAChC,OAAO,CAAA,CAAA;QACT,KAAK56C,YAAiB,CAAC66C,YAAY;YACjC,OAAO,CAAA,CAAA;QACT,KAAK76C,YAAiB,CAAC86C,UAAU;YAC/B,OAAO,CAAA,CAAA;QACT,KAAK96C,YAAiB,CAAC+6C,aAAa;YAClC,OAAO,CAAA,CAAA;QACT,KAAK/6C,YAAiB,CAACg7C,UAAU;YAC/B,OAAO,CAAA,CAAA;QACT,KAAKh7C,YAAiB,CAACi7C,QAAQ;YAC7B,OAAO,CAAA,CAAA;AACT,QAAA;;YAEE,OAAO,CAAA,CAAA;AACX,KAAA;AACF,CAAA;AAEO,SAASC,YAAAA,CAAcr/B,QAAkB,EAAEs/B,SAAkB,EAAA;IAClE,OAAQA,SAAAA;QACN,KAAKngE,SAAAA;AACH6gC,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAEnO,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAC,aAAA,CAAA;AAErH,YAAA,MAAA;QACF,KAAKp7C,YAAiB,CAAC06C,KAAK;AAC1B7+B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAEnO,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAC,aAAA,CAAA;AAErH,YAAA,MAAA;QACF,KAAKp7C,YAAiB,CAAC26C,GAAG;AACxB9+B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAC,aAAA,CAAA;AAErF,YAAA,MAAA;QACF,KAAKia,YAAiB,CAAC46C,WAAW;AAChC/+B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUjnD,IAAI;AAAEinD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAC,aAAA,CAAA;AACtF81B,YAAAA,QAAAA,CAASw/B,aAAa,GAAG;AAACpO,gBAAAA,SAAAA,CAAUqO,qBAAqB;AAAErO,gBAAAA,SAAAA,CAAUqO,qBAAqB;AAAC,aAAA,CAAA;AAE3F,YAAA,MAAA;QACF,KAAKt7C,YAAiB,CAAC+6C,aAAa;AAClCl/B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAC,aAAA,CAAA;AAErF,YAAA,MAAA;QACF,KAAKia,YAAiB,CAACi7C,QAAQ;AAC7Bp/B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUsO,SAAS;AAAEtO,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAEnO,gBAAAA,SAAAA,CAAUsO,SAAS;AAAEtO,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAC,aAAA,CAAA;AAEjI,YAAA,MAAA;QACF,KAAKp7C,YAAiB,CAACg7C,UAAU;AAC/Bn/B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAEnO,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAEknD,gBAAAA,SAAAA,CAAUmO,mBAAmB;AAAC,aAAA,CAAA;AAErH,YAAA,MAAA;QACF,KAAKp7C,YAAiB,CAAC66C,YAAY;AACjCh/B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUsO,SAAS;AAAEtO,gBAAAA,SAAAA,CAAUuO,SAAS;AAAEvO,gBAAAA,SAAAA,CAAUjnD,IAAI;AAAEinD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAC,aAAA,CAAA;AAElG,YAAA,MAAA;QACF,KAAKia,YAAiB,CAAC86C,UAAU;AAC/Bj/B,YAAAA,QAAAA,CAASxS,aAAa,GAAG;AAAC4jC,gBAAAA,SAAAA,CAAUsO,SAAS;AAAEtO,gBAAAA,SAAAA,CAAUjnD,IAAI;AAAEinD,gBAAAA,SAAAA,CAAUjnD,IAAI;AAAEinD,gBAAAA,SAAAA,CAAUlnD,GAAG;AAAC,aAAA,CAAA;AAE7F,YAAA,MAAA;AACF,QAAA;AACEpC,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,YAAC,GAAYyrD,SAAU,GAAA,4DAAA,CAAA,CAAA;AACxC,KAAA;AACF,CAAA;AAEO,SAASM,WAAAA,CAAa5/B,QAAkB,EAAE6/B,IAAmB,EAAA;AAClE,IAAA,IAAIA,IAAS17C,KAAAA,QAAa,CAAC27C,MAAM,EAAE;AACjC9/B,QAAAA,QAAAA,CAAS+/B,OAAO,GAAG,KAAA,CAAA;KACd,MAAA;AACL//B,QAAAA,QAAAA,CAAS+/B,OAAO,GAAG,IAAA,CAAA;QACnB//B,QAASggC,CAAAA,SAAS,GAAG5O,SAAAA,CAAU6O,EAAE,CAAA;AACjCjgC,QAAAA,QAAAA,CAASkgC,QAAQ,GAAGL,IAAS17C,KAAAA,QAAa,CAACg8C,IAAI,GAAG/O,SAAU+O,CAAAA,IAAI,GAAG/O,SAAAA,CAAUgP,KAAK,CAAA;AACpF,KAAA;AACF,CAAA;AAEO,SAASC,WAAAA,CAAargC,QAAkB,EAAEsgC,QAAkB,EAAA;IACjE,OAAQA,QAAAA;QACN,KAAKnhE,SAAAA;AACH6gC,YAAAA,QAAAA,CAASugC,WAAW,GAAG,KAAA,CAAA;AAEvB,YAAA,MAAA;AACF,QAAA,KAAK/B,SAASgC,IAAI;AAChBxgC,YAAAA,QAAAA,CAASugC,WAAW,GAAG,IAAA,CAAA;AACvBvgC,YAAAA,QAAAA,CAASygC,WAAW,GAAG;AAACrP,gBAAAA,SAAAA,CAAUsP,MAAM;AAAEtP,gBAAAA,SAAAA,CAAUsP,MAAM;AAAC,aAAA,CAAA;AAC3D1gC,YAAAA,QAAAA,CAAS2gC,cAAc,GAAG;AAACvP,gBAAAA,SAAAA,CAAUwP,OAAO;AAAExP,gBAAAA,SAAAA,CAAUwP,OAAO;AAAC,aAAA,CAAA;AAEhE,YAAA,MAAA;AACF,QAAA,KAAKpC,SAASqC,QAAQ;AACpB7gC,YAAAA,QAAAA,CAASugC,WAAW,GAAG,IAAA,CAAA;AACvBvgC,YAAAA,QAAAA,CAASygC,WAAW,GAAG;AAACrP,gBAAAA,SAAAA,CAAU0P,KAAK;AAAE1P,gBAAAA,SAAAA,CAAU0P,KAAK;AAAC,aAAA,CAAA;AAEzD,YAAA,MAAA;AACF,QAAA,KAAKtC,SAASuC,gBAAgB;AAC5B/gC,YAAAA,QAAAA,CAASugC,WAAW,GAAG,IAAA,CAAA;AACvBvgC,YAAAA,QAAAA,CAASygC,WAAW,GAAG;AAACrP,gBAAAA,SAAAA,CAAU4P,QAAQ;AAAE5P,gBAAAA,SAAAA,CAAU4P,QAAQ;AAAC,aAAA,CAAA;AAE/D,YAAA,MAAA;AACF,QAAA,KAAKxC,SAASyC,IAAI;AAChBjhC,YAAAA,QAAAA,CAASugC,WAAW,GAAG,KAAA,CAAA;AAEvB,YAAA,MAAA;AACF,QAAA;AACEz4D,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,WAAC,GAAWysD,QAAS,GAAA,8DAAA,CAAA,CAAA;AACtC,KAAA;AACF;;AC7GA;;AAEC,IACM,IAAA,iBAAeY,iBAAV,WAAL;AAAeA,IAAAA,SAAAA,iBAAAA,CAIG7jC,KAA6B,EAAA;aAF1C45B,SAAY,GAAA,KAAA,CAAA;QAGpB,IAAsC55B,WAAAA,GAAAA,KAAAA,CAA9B56B,MAAAA,IAAO,GAAA,WAAA,KAAA,KAAA,CAAA,GAAA,kBAAA,GAAA,WAAA,CAAA;QAEf,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;;AAPMy+D,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAUpBC,IAAAA,MAAAA,CAAAA,gBAIC,GAJDA,SAAAA,gBAAAA,CAAkBC,YAA0C,EAAA;;AAC1DjhE,QAAAA,MAAAA,CAAOkQ,IAAI,CAAC+wD,YAAclxD,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AAChC,YAAA,KAAA,CAAKijE,eAAe,CAACjjE,GAAKgjE,EAAAA,YAAY,CAAChjE,GAAI,CAAA,CAAA,CAAA;AAC7C,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;IAEAkjE,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,GAAAA;;AAEA,KAAA,CAAA;IAEAC,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,oBAAAA,CAAsB9+D,IAAY,EAAEoQ,KAAa,EAAEu5C,KAAa,EAAA;;AAEhE,KAAA,CAAA;AAtBoB8U,IAAAA,OAAAA,iBAAAA,CAAAA;AAqCrB,CAAA,GAAA;AAEM,SAASM,gBAAiBjjE,KAAmB,EAAA;IAClD,OAAO,OAAOA,KAAU,KAAA,QAAA,IAAYA,KAAS,IAACA,KAAyE0B,CAAAA,MAAM,KAAKd,SAAAA,IAAaZ,YAAK,CAALA,KAAiBy4D,EAAAA,OAAAA,CAAAA,CAAAA;AAClK,CAAA;AAEO,SAASyK,qBAAsBljE,KAAmB,EAAA;IACvD,OAAOA,KAAAA,IAAS,KAACA,CAAwB0B,MAAM,KAAKd,aAAaqiE,eAAgB,CAACjjE,KAAuB,CAAC,CAAE,CAAA,CAAA,CAAA;AAC9G;;;ACtCYmjE,CAAAA,SAAAA,kBAAAA,EAAAA;;;GAAAA,kBAAAA,KAAAA,kBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AA6BZ;;;AAGC,IACD,IAAI5uB,MAAO,GAAA,CAAA,CAAA;AAEX;;AAEC,IACM,IAAA,QAAe6uB,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAAA,CAAAA;aAAAA,QAsBlB1pD,CAAAA,MAAc,EACdolB,KAAqB,EAAA;;AAEfplB,QAAAA,KAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AApBR2pD,QAAAA,KAAAA,CAAAA,UAAAA,GAAqC,EAAC,CAAA;AAC7BC,QAAAA,KAAAA,CAAAA,aAAAA,GAAkD,EAAC,CAAA;cAKlD5K,SAAY,GAAA,KAAA,CAAA;cACZ6K,WAAc,GAAA,KAAA,CAAA;cACdC,WAAc,GAAA,IAAA,CAAA;AActB,QAAA,IAAI1kC,KAAO,EAAA;YACT,IAIIA,WAAAA,GAAAA,KAAAA,CAHF56B,MAAAA,IAAO,GAAA,WAAA,KAAA,KAAA,CAAA,GAAA,UAAA,GAAaqwC,4CAGlBzV,KAFF2kC,CAAAA,UAAAA,EAAAA,UACA1D,GAAAA,iBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,CAAAA,GAAAA,iBAAAA,EAAAA,MAAAA,GACEjhC,KADFihC,CAAAA,MAAAA,CAAAA;AAGF,YAAA,KAAA,CAAK77D,IAAI,GAAGA,IAAAA,CAAAA;YACZ,KAAKu/D,CAAAA,UAAU,GAAGA,UAAAA,CAAAA;AAClB,YAAA,KAAA,CAAKC,YAAY,GAAG3D,MAAAA,CAAAA;AACpB,YAAA,KAAA,CAAKjhC,KAAK,GAAGA,KAAAA,CAAAA;SACR,MAAA;YACL,KAAK56B,CAAAA,IAAI,GAAG,UAAaqwC,GAAAA,MAAAA,EAAAA,CAAAA;AACzB,YAAA,KAAA,CAAKkvB,UAAU,GAAA,CAAA,CAAA;AACjB,SAAA;;;AAzCkBL,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AAiZpB;;;MAIAlhD,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;;AAEA,KAAA,CAAA;IAEAyhD,MAAAA,CAAAA,mBAEC,GAFDA,SAAAA,mBAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,GAEC,GAFDA,SAAAA,GAAKxiC,CAAAA,MAAgB,EAAEyiC,cAA8B,EAAA;;AAErD,KAAA,CAAA;AA/ZoBT,IAAAA,aAAAA,CAAAA,QAAAA,EAAAA;;YA4ChBrD,GAAAA,EAAAA,QAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC+D,OAAO,CAAA;AACrB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAY9jE,KAAa,EAAA;AACvB,gBAAA,IAAI,IAAI,CAAC8jE,OAAO,KAAK9jE,KAAO,EAAA;AAC1B,oBAAA,OAAA;AACF,iBAAA;gBACA,IAAI,CAAC8jE,OAAO,GAAG9jE,KAAAA,CAAAA;gBACf,IAAI,CAACwjE,WAAW,GAAG,IAAA,CAAA;AACrB,aAAA;;;YAKIO,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACC,UAAU,CAAC,UAAA,CAAA,CAAA;AACzB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAiBhkE,KAAc,EAAA;gBAC7B,IAAI,CAACikE,UAAU,CAAC,UAAYjkE,EAAAA,KAAAA,CAAAA,CAAAA;AAC9B,aAAA;;;YAKIkR,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACgzD,QAAQ,CAAC,QAAA,CAAA,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAWlkE,KAAY,EAAA;gBACrB,IAAI,CAACmkE,QAAQ,CAAC,QAAUnkE,EAAAA,KAAAA,CAAAA,CAAAA;AAC1B,aAAA;;;YAOIqgE,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA;;;MAAA,SAAA,GAAA,CAAcA,QAAgC,EAAI,EAAA;;;YAM9CpxC,GAAAA,EAAAA,eAAAA;;;;MAAJ,SAAA,GAAA,CAAmBy4B,IAAuG,EAAI,EAAA;;;YAM1HuZ,GAAAA,EAAAA,eAAAA;;;;MAAJ,SAAA,GAAA,CAAmBmD,QAAqD,EAAI,EAAA;;;YAMxEC,GAAAA,EAAAA,WAAAA;;;;MAAJ,SAAA,GAAA,CAAerkE,KAA6B,EAAI,EAAA;;;YAM5CskE,GAAAA,EAAAA,WAAAA;;;;MAAJ,SAAA,GAAA,CAAetkE,KAA6B,EAAI,EAAA;;;YAM5CgiE,GAAAA,EAAAA,aAAAA;;;;MAAJ,SAAA,GAAA,CAAiBhiE,KAA6B,EAAI,EAAA;;;YAM9CukE,GAAAA,EAAAA,YAAAA;;;;MAAJ,SAAA,GAAA,CAAgBvkE,KAAmD,EAAI,EAAA;;;YAMnEkiE,GAAAA,EAAAA,aAAAA;;;;MAAJ,SAAA,GAAA,CAAiBliE,KAAmD,EAAI,EAAA;;;YAMpEoiE,GAAAA,EAAAA,gBAAAA;;;;MAAJ,SAAA,GAAA,CAAoBpiE,KAAmD,EAAI,EAAA;;;YAMvEwhE,GAAAA,EAAAA,SAAAA;;;;MAAJ,SAAA,GAAA,CAAaxhE,KAA6B,EAAI,EAAA;;;YAM1CyhE,GAAAA,EAAAA,WAAAA;;;;MAAJ,SAAA,GAAA,CAAezhE,KAA4B,EAAI,EAAA;;;YAM3C2hE,GAAAA,EAAAA,UAAAA;;;;MAAJ,SAAA,GAAA,CAAc3hE,KAA4B,EAAI,EAAA;;;YAQ1C8tB,GAAAA,EAAAA,YAAAA;;;;MAAJ,SAAA,GAAA,CAAgB5c,KAAkE,EAAI,EAAA;;;YAMlFszD,GAAAA,EAAAA,YAAAA;;;;MAAJ,SAAA,GAAA,CAAgBxkE,KAAmD,EAAI,EAAA;;;YAMnEykE,GAAAA,EAAAA,WAAAA;;;;MAAJ,SAAA,GAAA,CAAezkE,KAA4B,EAAI,EAAA;;;YAM3C0kE,GAAAA,EAAAA,mBAAAA;;;;MAAJ,SAAA,GAAA,CAAuB1kE,KAA6B,EAAI,EAAA;;;YAMpD2kE,GAAAA,EAAAA,eAAAA;;;;MAAJ,SAAA,GAAA,CAAmB3kE,KAAqD,EAAI,EAAA;;;YAMxE4kE,GAAAA,EAAAA,uBAAAA;;;;MAAJ,SAAA,GAAA,CAA2B5kE,KAA6B,EAAI,EAAA;;;YAkBxD6kE,GAAAA,EAAAA,aAAAA;;;;MAAJ,SAAA,GAAA,CAAiB7kE,KAAmD,EAAI,EAAA;;;YAMpE8kE,GAAAA,EAAAA,eAAAA;;;;MAAJ,SAAA,GAAA,CAAmB9kE,KAAmD,EAAI,EAAA;;;YAMtE+kE,GAAAA,EAAAA,gBAAAA;;;;MAAJ,SAAA,GAAA,CAAoB/kE,KAAmD,EAAI,EAAA;;;AAzNvDojE,IAAAA,OAAAA,QAAAA,CAAAA;EAAiB5iD,aAgatC;;ACndM,IAAA,aAAMwkD,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,CAOE,MAAqB,EAAA;aAAdtrD,MAAAA,GAAAA,MAAAA,CAAAA;aANpBurD,gBAAmB,GAAA,KAAA,CAAA;AACnBlD,QAAAA,IAAAA,CAAAA,QAAAA,GAAqB9B,SAASyC,IAAI,CAAA;aAClCwC,QAA4B,GAAA,IAAA,CAAA;QAK1B,IAAI,CAACC,kBAAkB,GAAG;AAAElG,YAAAA,aAAAA,EAAc3O,kBAAkB8K,KAAK;AAAC,SAAA,CAAA;;AARzD4J,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;IAWXI,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OAAO,CAAA,CAAA;AACT,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,cAWC,GAXDA,SAAAA,cAAAA,CAAgBxxD,IAAsB,EAAA;AACpC,QAAA,IAAA,YAAA,GAAkFA,IAA1EyxD,CAAAA,MAAAA,EAAAA,MAAS,GAAA,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAA,YAAA,EAAA,cAAA,GAAiEzxD,IAA1D0xD,CAAAA,QAAAA,EAAAA,QAAW,GAAA,cAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAA,cAAA,EAAOC,SAAwC3xD,GAAAA,IAAAA,CAAxC2xD,SAAwC3xD,EAAAA,sBAAAA,GAAAA,IAAAA,CAA7BoxD,kBAAAA,gBAAmB,GAAA,sBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAA,sBAAA,CAAA;QAExE,IAAI,CAACA,gBAAgB,GAAGA,gBAAAA,CAAAA;AAExB,QAAA,IAAIK,MAAQ,EAAA;AACV,YAAA,IAAI,CAACvD,QAAQ,GAAG9B,QAAAA,CAASgC,IAAI,CAAA;SACxB,MAAA;YACL,IAAI,CAACF,QAAQ,GAAGwD,QAAAA,GAAWtF,SAASuC,gBAAgB,GAAGvC,SAASqC,QAAQ,CAAA;YACxE,IAAI,CAAC4C,QAAQ,GAAG,IAAI,CAACxrD,MAAM,CAAC6K,UAAU,CAAWihD,SAAAA,CAAAA,CAAAA;AACnD,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,eAKC,GALDA,SAAAA,eAAAA,CAAiBpkC,QAAkB,EAAA;QACjC,IAAI,IAAI,CAAC6jC,QAAQ,EAAE;AACjB7jC,YAAAA,QAAAA,CAAS+5B,KAAK,CAAC,IAAI,CAAC+J,kBAAkB,CAAA,CAAA;AACtC,YAAA,IAAI,CAACD,QAAQ,CAACO,eAAe,CAACpkC,QAAAA,CAAAA,CAAAA;AAChC,SAAA;AACF,KAAA,CAAA;AAjCW2jC,IAAAA,OAAAA,aAAAA,CAAAA;AAkCZ,CAAA;;ACrCqD,IAAAjoB,MAAA,CAAA;AAAzC2oB,IAAAA,cAAAA,IAAyC3oB,MAAA,GAAA,EAAA,EAAAA,MAAA,CACnD8V,SAAU8S,CAAAA,KAAK,CAAGjrB,GAAAA,YAAAA,CAAan0C,iBAAiB,EADGw2C,MAEnD8V,CAAAA,SAAAA,CAAU+S,GAAG,CAAGhrB,GAAAA,UAAAA,CAAWr0C,iBAAiB,EAFOw2C,MAGnD8V,CAAAA,SAAAA,CAAUgT,KAAK,CAAA,GAAGC,WAAWv/D,iBAAiB,EAHKw2C,MAInD8V,CAAAA,SAAAA,CAAUkT,IAAI,CAAA,GAAGC,SAAUz/D,CAAAA,iBAAiB,EAJOw2C,MAKpD,EAAA;AA2CF;;AAEC,IACM,IAAA,QAAekpB,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,GAAAA;;;AACpB;;AAEC,MAAA,KAAA,CACD/hE,IAAe,GAAA,EAAA,CAAA;AAEf;;AAEC,MAAA,KAAA,CACDgiE,YAA4B,EAAE,CAAA;;;AATVD,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AA4FpB;;;MAIA/jD,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;MAGAikD,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;;AAEA,KAAA,CAAA;AAzGoBF,IAAAA,OAAAA,QAAAA,CAAAA;EAAiBzlD,aA0GtC,EAAA;AAEM,SAAS4lD,wBAAyBzuD,IAAY,EAAA;IACnD,IAAIA,IAAAA,KAASk7C,SAAU+S,CAAAA,GAAG,EAAE;AAC1B,QAAA,OAAO,IAAIhrB,UAAW,CAAA,CAAA,CAAA,CAAA;AACxB,KAAA;IACA,IAAIjjC,IAAAA,KAASk7C,SAAUgT,CAAAA,KAAK,EAAE;AAC5B,QAAA,OAAO,IAAIC,UAAW,CAAA,CAAA,CAAA,CAAA;AACxB,KAAA;AAEA,IAAA,OAAO,IAAIprB,YAAa,CAAA,CAAA,CAAA,CAAA;AAC1B;;ACrJA,IAAInG,MAAO,GAAA,CAAA,CAAA;AAEX;;AAEC,IACM,IAAA,IAAM8xB,iBAAD,SAAL,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,IAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;aAAAA,IAuBT3sD,CAAAA,MAAc,EACdolB,KAAyB,EAAA;;AAEnBplB,QAAAA,KAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAZEg/C,SAAY,GAAA,KAAA,CAAA;cACd4N,OAAU,GAAA,IAAA,CAAA;AAYhB,QAAA,IAAIxnC,KAAO,EAAA;AACT,YAAA,IACE2C,WAKE3C,KALF2C,CAAAA,QAAAA,EACA2Q,WAIEtT,KAJFsT,CAAAA,QAAAA,EAAAA,WAAAA,GAIEtT,MAHF56B,IAAAA,EAAAA,IAAAA,GAAAA,WAAAA,KAAAA,KAAAA,CAAAA,GAAO,WAGL46B,GAAAA,WAAAA,EAAAA,eAAAA,GAAAA,KAAAA,CAFFzqB,UAAAA,QAAW,GAAA,eAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,eAAA,EAAA,kBAAA,GAETyqB,MADF4V,WAAAA,EAAAA,WAAAA,GAAAA,kBAAAA,KAAAA,KAAAA,CAAAA,GAAchT,QAAQ8H,YAAY,EAAA,GAAA,kBAAA,CAAA;YAGpC,KAAKvoB,CAAAA,EAAE,GAAG,MAASszB,GAAAA,MAAAA,EAAAA,CAAAA;AACnB,YAAA,KAAA,CAAKrwC,IAAI,GAAGA,IAAAA,CAAAA;AACZ,YAAA,KAAA,CAAKkuC,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,YAAA,KAAA,CAAK3Q,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,YAAA,KAAA,CAAKptB,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,YAAA,KAAA,CAAKqgC,WAAW,GAAGA,WAAAA,CAAAA;SACd,MAAA;YACL,KAAKzzB,CAAAA,EAAE,GAAG,MAASszB,GAAAA,MAAAA,EAAAA,CAAAA;AACnB,YAAA,KAAA,CAAKrwC,IAAI,GAAG,WAAA,CAAA;YACZ,KAAKwwC,CAAAA,WAAW,GAAGhT,OAAAA,CAAQ8H,YAAY,EAAA,CAAA;AACvC,YAAA,KAAA,CAAKrI,SAAS,GAAG,CAAA,CAAA;AACnB,SAAA;;;AA/CSklC,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AAsDX;;;AAGC,MACDE,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAYD,OAAgB,EAAA;QAC1B,IAAI,CAACA,OAAO,GAAGA,OAAAA,CAAAA;AACjB,KAAA,CAAA;AACA;;MAGAE,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;QACE,OAAO,IAAI,CAACF,OAAO,CAAA;AACrB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASllC,MASR,GATD,SAASA,MAAAA,CAAQC,QAAkB,EAAA;QACjC,IAAI,IAAI,CAAC04B,WAAW,EAAE;;AAEpB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACyM,UAAU,EAAI,EAAA;AACtB,YAAA,OAAA;AACF,SAAA;AACAnlC,QAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAACsC,WAAW,EAAE,IAAI,CAACjT,QAAQ,CAAA,CAAA;AACtE,KAAA,CAAA;AAEA;;MAGAilC,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;QACE,OAAO,IAAI,CAACt0B,QAAQ,CAAA;AACtB,KAAA,CAAA;AAEA;;;;AAIC,MACDu0B,OAAAA,WAKC,GALDA,SAAAA,WAAallC,CAAAA,QAAkB,EAAEmlC,OAAsD,EAAA;QACrF,IAAIA,OAAAA,KAAYlxD,cAAe4oD,CAAAA,IAAI,EAAE;YACnC,IAAI,CAAC78B,QAAQ,CAACvgB,OAAO,EAAA,CAAA;AACvB,SAAA;QACA,IAAI,CAACugB,QAAQ,GAAGA,QAAAA,CAAAA;AAClB,KAAA,CAAA;IAEAolC,MAAAA,CAAAA,OACC,GADDA,SAAAA,OACA,GAAA,EAAA,CAAA;AAEA;;;AAGC,MACD,MAAS3lD,CAAAA,OAqBR,GArBD,SAASA,QAASjc,OAA4B,EAAA;QAC5C,IAAI,IAAI,CAACyzD,SAAS,EAAE;;AAElB,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAIzzD,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS6hE,UAAU,MAAKpxD,cAAAA,CAAe4oD,IAAI,EAAE;YAC/C,IAAI,CAAClsB,QAAQ,CAAClxB,OAAO,EAAA,CAAA;AACvB,SAAA;QACA,IAAM6lD,qBAAAA,GAAwB9hE,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAASw8B,QAAQ,CAAA;QAE/C,IAAIslC,qBAAAA,KAA0BrxD,cAAe4oD,CAAAA,IAAI,EAAE;YACjD,IAAI,CAAC78B,QAAQ,CAACvgB,OAAO,EAAA,CAAA;AACvB,SAAA;QACA,IAAI,CAACw3C,SAAS,GAAG,IAAA,CAAA;AAEjB,QAAA,IAAI,IAAI,CAACh/C,MAAM,KAAK9Y,SAAW,EAAA;AAC7B,YAAA,IAAI,CAAC8Y,MAAM,CAACqkD,UAAU,CAAC,IAAI,CAAA,CAAA;AAC7B,SAAA;AAEA,QAAA,iBAAA,CAAA,SAAA,CAAM78C,OAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;AA9HWmlD,IAAAA,aAAAA,CAAAA,IAAAA,EAAAA;;YAkDPtM,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrB,SAAS,CAAA;AACvB,aAAA;;;AApDW2N,IAAAA,OAAAA,IAAAA,CAAAA;EAAaplC,iBA+HzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChJD,IAAM+lC,YAAoC,EAAC,CAAA;AAEpC,IAAA,aAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,GAAAA,EAAAA;AAAAA,IAAAA,aAAAA,CACJC,eAKN,GALD,SAAOA,eAAiBC,CAAAA,WAAmB,EAAEC,aAAqB,EAAA;QAChE,IAAIJ,SAAS,CAACG,WAAAA,CAAY,EAAE;AAC1B1xD,YAAAA,MAAAA,CAAOH,IAAI,CAAC,OAAC,GAAO6xD,WAAY,GAAA,iCAAA,CAAA,CAAA;AAClC,SAAA;QACAH,SAAS,CAACG,YAAY,GAAGC,aAAAA,CAAAA;AAC3B,KAAA,CAAA;AANWH,IAAAA,aAAAA,CAQJI,iBAEN,GAFD,SAAOA,iBAAAA,CAAmBF,WAAmB,EAAA;QAC3C,OAAOH,SAAS,CAACG,WAAY,CAAA,CAAA;AAC/B,KAAA,CAAA;IAVWF,aAYJK,CAAAA,qBAIN,GAJD,SAAOA,qBAAAA,GAAAA;AACL1lE,QAAAA,MAAAA,CAAOkQ,IAAI,CAACk1D,SAAWr1D,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AAbtBonE,YAAAA,aAAAA,CAcOI,iBAAiB,CAACxnE,GAAAA,CAAAA,CAAAA;AAClC,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA;;;;;;AAMC,MACD,aAAO0nE,CAAAA,kBAkBN,GAlBD,SAAOA,mBAAoBtiE,OAA0B,EAAA;AACnD,QAAA,IAAQuiE,KAAqDviE,GAAAA,OAAAA,CAArDuiE,KAAOC,EAAAA,UAAAA,GAA8CxiE,OAA9CwiE,CAAAA,UAAAA,EAAY1H,MAAkC96D,GAAAA,OAAAA,CAAlC86D,MAAQN,EAAAA,MAAAA,GAA0Bx6D,OAA1Bw6D,CAAAA,MAAAA,EAAQiI,gBAAkBziE,OAAlByiE,CAAAA,aAAAA,CAAAA;AAC3C,QAAA,IAAMC,WAAcV,GA3BXA,aA2ByBW,CAAAA,cAAc,CAACJ,KAAO/H,EAAAA,MAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAMoI,aAAgBZ,GA5BbA,aA4B2Ba,CAAAA,gBAAgB,CAACN,KAAAA,CAAAA,CAAAA;AACrD,QAAA,IAAIriD,MAAS8hD,GA7BJA,aA6BkBc,CAAAA,aAAa,CAAChI,MAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAMiI,YAAef,GA9BZA,aA8B0Be,CAAAA,YAAY,CAAC7iD,MAAAA,CAAAA,CAAAA;QAEhDA,MAAS8hD,GAhCAA,aAgCcgB,CAAAA,kBAAkB,CAAC9iD,MAAAA,CAAAA,CAAAA;QAE1C,IAAIqiD,KAAAA,KAAU,CAAK,IAAA,CAACQ,YAAc,EAAA;AAChC7iD,YAAAA,MAAAA,GAAS8hD,aAAciB,CAAAA,YAAY,CAAC/iD,MAAQsiD,EAAAA,UAAAA,KAAezH,WAAWmI,QAAQ,CAAA,CAAA;AAChF,SAAA;AAEA,QAAA,IAAIT,aAAe,EAAA;AACjB,YAAA,OAAOC,WAAcxiD,GAAAA,MAAAA,CAAAA;AACvB,SAAA;AAEA,QAAA,OAAO0iD,gBAAgBF,WAAcxiD,GAAAA,MAAAA,CAAAA;AACvC,KAAA,CAAA;AAEA;;;;QA7CW8hD,cAkDIiB,YAiCd,GAjCD,SAAeA,YAAc/iD,CAAAA,MAAc,EAAEijD,UAAoB,EAAA;AAC/DjjD,QAAAA,MAAAA,GAASA,MAAOtU,CAAAA,OAAO,CAAC,cAAA,EAAgBu3D,aAAa,IAAO,GAAA,KAAA,CAAA,CAAA;QAC5DjjD,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,uBAAyB,EAAA,SAAA,CAAA,CAAA;;AAEjD,QAAA,IAAMw3D,KAAQ,GAAA,8HAAA,CAAA;QAEdljD,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAACw3D,KAAO,EAAA,EAAA,CAAA,CAAA;AAE/B,QAAA,IAAID,UAAY,EAAA;YACdjjD,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,6BAA+B,EAAA,YAAA,CAAA,CAAA;YACvDsU,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,8BAAgC,EAAA,aAAA,CAAA,CAAA;YACxDsU,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,sBAAwB,EAAA,cAAA,CAAA,CAAA;AAEhD,YAAA,IAAI,CA/DGo2D,aA+DYqB,CAAAA,YAAY,CAACnjD,MAAS,CAAA,EAAA;gBACvC,IAAMojD,KAAAA,GAAQ,uBAAwBx3D,CAAAA,IAAI,CAACoU,MAAAA,CAAAA,CAAAA;AAE3C,gBAAA,IAAIojD,KAAO,EAAA;oBACTpjD,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,mBAAqB,EAAA,gBAAA,CAAA,CAAA;oBAC7C,IAAMkV,MAAAA,GAASZ,MAAO/S,CAAAA,KAAK,CAAC,uBAAA,CAAA,CAAA;AAE5B,oBAAA,IAAI2T,MAAQ,EAAA;AACVZ,wBAAAA,MAAAA,GAAS8hD,aAvERA,CAuEsBuB,gBAAgB,CAACrjD,MAAQY,EAAAA,MAAAA,CAAAA,CAAAA;AAClD,qBAAA;iBACK,MAAA;oBACLZ,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,oBAAsB,EAAA,mCAAA,CAAA,CAAA;oBAC9CsU,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,mBAAqB,EAAA,aAAA,CAAA,CAAA;AAC/C,iBAAA;AACF,aAAA;SACK,MAAA;YACLsU,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,gBAAkB,EAAA,IAAA,CAAA,CAAA;AAC5C,SAAA;QAEA,OAAOsU,MAAAA,CAAAA;AACT,KAAA,CAAA;AAnFW8hD,IAAAA,aAAAA,CAqFIc,aAed,GAfD,SAAeA,aAAe5iD,CAAAA,MAAc,EAAEkjD,KAA2B,EAAA;AAA3BA,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,mBAAA,CAAA;QACpD,IAAIj2D,KAAAA,CAAAA;QAEJ,MAAQA,CAAAA,KAAQi2D,GAAAA,KAAAA,CAAMv3D,IAAI,CAACqU,MAAAA,CAAM,MAAO,IAAM,CAAA;YAC5C,IAAMsjD,UAAAA,GAAar2D,KAAK,CAAC,CAAE,CAAA,CAAA;YAC3B,IAAMvB,OAAAA,GAAUm2D,SAAS,CAACyB,UAAW,CAAA,CAAA;AAErC,YAAA,IAAI53D,YAAYjQ,SAAW,EAAA;gBACzB,MAAM,IAAIqD,KAAM,CAAC,iCAAiCwkE,GAAAA,UAAAA,CAAAA,CAAAA;AACpD,aAAA;AAEAtjD,YAAAA,MAAAA,GAASA,OAAOtU,OAAO,CAACuB,KAAK,CAAC,EAAE,EAAEvB,OAAAA,CAAAA,CAAAA;AACpC,SAAA;QAEA,OAAOsU,MAAAA,CAAAA;AACT,KAAA,CAAA;IApGW8hD,aAsGIW,CAAAA,cA+Bd,GA/BD,SAAeA,cAAAA,CACbJ,KAAa,EACb/H,MAAqB,EACrBiJ,eAAsB,EAAA;AAAtBA,QAAAA,IAAAA,4BAAAA,eAAkB,GAAA,IAAA,CAAA;AAElB,QAAA,IAAMC,YAAsB,EAAE,CAAA;QAC9B,IAAMC,YAAAA,GAAe,OAAQpB,GAAAA,KAAAA,CAAAA;QAE7BmB,SAAU/kE,CAAAA,IAAI,CAAE,UAAUglE,GAAAA,YAAAA,CAAAA,CAAAA;QAC1BD,SAAU/kE,CAAAA,IAAI,CAAE,UAAUglE,GAAAA,YAAAA,CAAAA,CAAAA;AAC1BD,QAAAA,SAAAA,CAAU/kE,IAAI,CAAC,QAAA,CAAA,CAAA;AAEf,QAAA,IAAI8kE,eAAiB,EAAA;AACnBC,YAAAA,SAAAA,CAAU/kE,IAAI,CAAC,oBAAA,CAAA,CAAA;AACjB,SAAA;QAEA,IAAI67D,MAAAA,IAAUA,MAAO/9D,CAAAA,MAAM,EAAE;AAC3B+9D,YAAAA,MAAAA,CAAO9tD,OAAO,CAAC,SAAA,KAAA,EAAA;oBAAE9R,GAAKG,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACpB,gBAAA,IAAIA,UAAU,IAAM,EAAA;oBAClB2oE,SAAU/kE,CAAAA,IAAI,CAAE,UAAU/D,GAAAA,GAAAA,CAAAA,CAAAA;AAC5B,iBAAA,MAAO,IAAI8G,MAAAA,CAAOkiE,QAAQ,CAAC7oE,KAAQ,CAAA,EAAA;AACjC2oE,oBAAAA,SAAAA,CAAU/kE,IAAI,CAAC,UAAC,GAAU/D,MAAI,GAAGG,GAAAA,KAAAA,CAAAA,CAAAA;AACnC,iBAAA;AACF,aAAA,CAAA,CAAA;AACF,SAAA;QAEA,IAAI2oE,SAAAA,CAAUjnE,MAAM,EAAE;YACpB,OAAOinE,SAAAA,CAAUG,IAAI,CAAC,IAAQ,CAAA,GAAA,IAAA,CAAA;AAChC,SAAA;QAEA,OAAO,EAAA,CAAA;AACT,KAAA,CAAA;AArIW7B,IAAAA,aAAAA,CAuIIa,gBAMd,GAND,SAAeA,gBAAAA,CAAkBN,KAAa,EAAA;AAC5C,QAAA,IAAIA,UAAU,CAAG,EAAA;YACf,OAAO,gBAAA,CAAA;AACT,SAAA;QAEA,OAAO,mBAAA,CAAA;AACT,KAAA,CAAA;AA7IWP,IAAAA,aAAAA,CA+IIe,YAMd,GAND,SAAeA,YAAAA,CAAc7iD,MAAc,EAAA;AACzC,QAAA,IAAM4jD,UAAa,GAAA,8BAAA,CAAA;QACnB,IAAM32D,KAAAA,GAAQ+S,MAAO/S,CAAAA,KAAK,CAAC22D,UAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAMC,OAAU52D,GAAAA,KAAAA,GAAQA,KAAK,CAAC,EAAE,GAAG,EAAA,CAAA;QAEnC,OAAO42D,OAAAA,CAAQzjE,QAAQ,CAAC,KAAA,CAAA,CAAA;AAC1B,KAAA,CAAA;AArJW0hE,IAAAA,aAAAA,CAuJIgB,kBASd,GATD,SAAeA,kBAAAA,CAAoB9iD,MAAc,EAAA;AAC/C,QAAA,IAAM4jD,UAAa,GAAA,8BAAA,CAAA;QACnB,IAAM32D,KAAAA,GAAQ+S,MAAO/S,CAAAA,KAAK,CAAC22D,UAAAA,CAAAA,CAAAA;AAE3B,QAAA,IAAI32D,KAAO,EAAA;AACT,YAAA,OAAO+S,OAAOtU,OAAO,CAACuB,KAAK,CAAC,EAAE,EAAE,EAAA,CAAA,CAAA;AAClC,SAAA;QAEA,OAAO+S,MAAAA,CAAAA;AACT,KAAA,CAAA;AAhKW8hD,IAAAA,aAAAA,CAkKIqB,YAKd,GALD,SAAeA,YAAAA,CAAcW,cAAsB,EAAA;;AAEjD,QAAA,IAAMC,OAAU,GAAA,2CAAA,CAAA;QAEhB,OAAOA,OAAAA,CAAQn4D,IAAI,CAACk4D,cAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;AAvKWhC,IAAAA,aAAAA,CAyKIuB,gBAqBd,GArBD,SAAeA,gBAAkBrjD,CAAAA,MAAc,EAAEY,MAAgB,EAAA;AAC/D,QAAA,IAAMojD,cAAc,IAAIC,GAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAIC,WAAc,GAAA,EAAA,CAAA;AAElB,QAAA,IAAK,IAAIpnE,CAAI,GAAA,CAAA,EAAGA,IAAI8jB,MAAOrkB,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACtC,YAAA,IAAMuqB,MAAMzG,MAAM,CAAC9jB,CAAE,CAAA,CAACmQ,KAAK,CAAC,wBAAA,CAAA,CAAA;AAE5B,YAAA,IAAIoa,GAAK,EAAA;AACP28C,gBAAAA,WAAAA,CAAY1/D,GAAG,CAAC+iB,GAAG,CAAC,CAAE,CAAA,CAAA,CAAA;AACxB,aAAA;AACF,SAAA;QAEA28C,WAAYx3D,CAAAA,OAAO,CAAClM,SAAAA,KAAAA,EAAAA;AAClB4jE,YAAAA,WAAAA,IAAe,kBAAC,GAAkB5jE,KAAM,GAAA,yBAAA,GAAyBA,KAAM,GAAA,KAAA,CAAA;AACzE,SAAA,CAAA,CAAA;QACA4jE,WAAe,IAAA,YAAA,CAAA;QAEflkD,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,yBAA2B,EAAA,gBAAA,CAAA,CAAA;QACnDsU,MAASA,GAAAA,MAAAA,CAAOtU,OAAO,CAAC,oBAAsBw4D,EAAAA,WAAAA,CAAAA,CAAAA;QAE9C,OAAOlkD,MAAAA,CAAAA;AACT,KAAA,CAAA;AA9LW8hD,IAAAA,OAAAA,aAAAA,CAAAA;AA+LZ,CAAA;;AC7LD;AACO,IAAA,SAAMqC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,SAYEjoC,CAAAA,QAAkB,EAAEkoC,cAAkB,EAAA;AAAlBA,QAAAA,IAAAA,2BAAAA,cAAiB,GAAA,CAAA,CAAA;;AAC1CloC,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AALAmoC,QAAAA,KAAAA,CAAAA,OAAAA,GAAyB,EAAE,CAAA;AAMjC,QAAA,KAAA,CAAKD,cAAc,GAAGA,cAAAA,CAAAA;AAEtB,QAAA,IAAM7vD,MAAS,GAAA,KAAA,CAAK2nB,QAAQ,CAAC3nB,MAAM,CAAA;;AAGnC,QAAA,KAAA,CAAK+vD,iBAAiB,GAAGrG,QAASrgE,CAAAA,MAAM,CAAC2W,MAAQ,EAAA;YAC/CqmD,MAAQ,EAAA;gBACN2J,MAAQC,EAAAA,cAAAA;gBACRxB,QAAUyB,EAAAA,aAAAA;AACVC,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;AAChC,aAAA;AACF,SAAA,CAAA,CAAA;QACA,KAAKL,CAAAA,iBAAiB,CAACpJ,QAAQ,GAAG,KAAA,CAAA;QAClC,KAAKoJ,CAAAA,iBAAiB,CAACpF,SAAS,GAAG,KAAA,CAAA;QACnC,KAAKoF,CAAAA,iBAAiB,CAACjI,OAAO,GAAG,KAAA,CAAA;;AAGjC,QAAA,KAAA,CAAKuI,mBAAmB,GAAG3G,QAASrgE,CAAAA,MAAM,CAAC2W,MAAQ,EAAA;YACjDqmD,MAAQ,EAAA;gBACN2J,MAAQC,EAAAA,cAAAA;gBACRxB,QAAU6B,EAAAA,iBAAAA;AACVH,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;AAChC,aAAA;AACF,SAAA,CAAA,CAAA;QACA,KAAKC,CAAAA,mBAAmB,CAAC1J,QAAQ,GAAG,KAAA,CAAA;QACpC,KAAK0J,CAAAA,mBAAmB,CAAC1F,SAAS,GAAG,KAAA,CAAA;QACrC,KAAK0F,CAAAA,mBAAmB,CAACvI,OAAO,GAAG,KAAA,CAAA;;AAGnC,QAAA,KAAA,CAAKyI,mBAAmB,GAAG7G,QAASrgE,CAAAA,MAAM,CAAC2W,MAAQ,EAAA;YACjDqmD,MAAQ,EAAA;gBACN2J,MAAQC,EAAAA,cAAAA;gBACRxB,QAAU+B,EAAAA,iBAAAA;AACVL,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;AAChC,aAAA;AACF,SAAA,CAAA,CAAA;QACA,KAAKG,CAAAA,mBAAmB,CAAC5J,QAAQ,GAAG,KAAA,CAAA;QACpC,KAAK4J,CAAAA,mBAAmB,CAAC5F,SAAS,GAAG,KAAA,CAAA;QACrC,KAAK4F,CAAAA,mBAAmB,CAACzI,OAAO,GAAG,KAAA,CAAA;;AAGnC,QAAA,KAAA,CAAK2I,gBAAgB,GAAG/G,QAASrgE,CAAAA,MAAM,CAAC2W,MAAQ,EAAA;YAC9CqmD,MAAQ,EAAA;gBACN2J,MAAQC,EAAAA,cAAAA;gBACRxB,QAAUiC,EAAAA,cAAAA;AACVP,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;AAChC,aAAA;AACF,SAAA,CAAA,CAAA;QACA,KAAKK,CAAAA,gBAAgB,CAAC9J,QAAQ,GAAG,KAAA,CAAA;QACjC,KAAK8J,CAAAA,gBAAgB,CAAC9F,SAAS,GAAG,KAAA,CAAA;QAClC,KAAK8F,CAAAA,gBAAgB,CAAC3I,OAAO,GAAG,KAAA,CAAA;AAEhC,QAAA,KAAA,CAAKntD,QAAQ,GAAG,IAAA,CAAA;AAChB,QAAA,KAAA,CAAKnQ,IAAI,GAAG,WAAA,CAAA;;;AAnEHolE,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAsEX,IAAA,MAAA,CAAStL,SAIR,GAJD,SAASA,SAAAA,CAAW38B,QAAkB,EAAA;;QAEpC,IAAI,CAAC0iC,WAAW,GAAG1iC,QAAAA,CAASgpC,cAAc,EAAGpZ,CAAAA,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA;AAClE,QAAA,IAAI,CAACqZ,kBAAkB,CAAC1Q,OAAO,GAAG,IAAI,CAACmK,WAAW,CAAA;AACpD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9F,OA2DR,GA3DD,SAASA,OAAAA,CAAS58B,QAAkB,EAAA;YAKhBA,uDAAAA,EAAAA,iDAAAA,CAAAA;QAJlB,IAAMkpC,SAAAA,GAAYlpC,SAASs3B,QAAQ,EAAA,CAAA;QACnC,IAAM6R,UAAAA,GAAanpC,SAASu3B,SAAS,EAAA,CAAA;AAGnBv3B,QAAAA,IAAAA,iEAAAA,CAAAA;;AAAlB,QAAA,IAAMopC,YAAYppC,CAAAA,iEAAAA,GAAAA,CAAAA,oDAAAA,QAASqpC,CAAAA,aAAa,CAACC,YAAY,CAACC,YAAY,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAhDvpC,0DAAAA,iDAAkDwpC,CAAAA,KAAK,qBAAvDxpC,uDAAyDopC,CAAAA,SAAS,YAAlEppC,iEAAsE,GAAA,GAAA,CAAA;AAExF,QAAA,IAAI,CAACypC,WAAW,GAAGzpC,QAAAA,CAASs9B,cAAc,CAAC,iBAAA,EAAmB4L,SAAWC,EAAAA,UAAAA,EAAY,CAAGha,EAAAA,UAAAA,CAAWoO,MAAM,EAAEnO,oBAAoBoO,QAAQ,CAAA,CAAA;AACvI,QAAA,IAAI,CAAC4K,iBAAiB,CAACx4C,QAAQ,CAAC,YAAcw5C,EAAAA,SAAAA,CAAAA,CAAAA;AAC9CppC,QAAAA,QAAAA,CAAS0pC,IAAI,CAAC,IAAI,CAAChH,WAAW,EAAE,IAAI,CAAC+G,WAAW,EAAE,IAAI,CAACrB,iBAAiB,CAAA,CAAA;QAExE,IAAIuB,cAAAA,GAAiB,IAAI,CAACF,WAAW,CAAC7Z,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA;;QAG3D,IAAK,IAAIhvD,IAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAI,CAACsnE,cAAc,EAAEtnE,CAAK,EAAA,CAAA;YAC5C,IAAMgpE,SAAAA,GAAYxkE,KAAK0D,KAAK,CAACogE,YAAY9jE,IAAKmJ,CAAAA,GAAG,CAAC,CAAA,EAAG3N,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;YACzD,IAAMipE,UAAAA,GAAazkE,KAAK0D,KAAK,CAACqgE,aAAa/jE,IAAKmJ,CAAAA,GAAG,CAAC,CAAA,EAAG3N,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;;AAG3D,YAAA,IAAMkpE,KAAQ9pC,GAAAA,QAAAA,CAASs9B,cAAc,CAAC,aAAc18D,GAAAA,CAAAA,EAAKgpE,SAAWC,EAAAA,UAAAA,EAAY,CAAG1a,EAAAA,UAAAA,CAAWoO,MAAM,EAAEnO,oBAAoBoO,QAAQ,CAAA,CAAA;AAElI,YAAA,IAAI,CAACkL,mBAAmB,CAACqB,UAAU,CAAC,gBAAgBC,cAAeL,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA;AACnE3pC,YAAAA,QAAAA,CAAS0pC,IAAI,CAACC,cAAAA,EAAgBG,KAAO,EAAA,IAAI,CAACpB,mBAAmB,CAAA,CAAA;;AAG7D,YAAA,IAAMuB,KAAQjqC,GAAAA,QAAAA,CAASs9B,cAAc,CAAC,aAAc18D,GAAAA,CAAAA,EAAKgpE,SAAWC,EAAAA,UAAAA,EAAY,CAAG1a,EAAAA,UAAAA,CAAWoO,MAAM,EAAEnO,oBAAoBoO,QAAQ,CAAA,CAAA;YAElI,IAAI,CAACoL,mBAAmB,CAACmB,UAAU,CAAC,cAAgBC,EAAAA,cAAAA,CAAeF,KAAMla,CAAAA,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA;YAC9F5vB,QAAS0pC,CAAAA,IAAI,CAACI,KAAAA,CAAMla,gBAAgB,EAAE,CAAC,CAAA,CAAE,EAAEqa,KAAAA,EAAO,IAAI,CAACrB,mBAAmB,CAAA,CAAA;;AAG1E5oC,YAAAA,QAAAA,CAAS89B,kBAAkB,CAACgM,KAAAA,CAAAA,CAAAA;AAC5B,YAAA,IAAI,CAAC3B,OAAO,CAAC5lE,IAAI,CAAC0nE,KAAAA,CAAAA,CAAAA;AAClBN,YAAAA,cAAAA,GAAiBM,KAAMra,CAAAA,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA;AAC9C,SAAA;;AAGA5vB,QAAAA,QAAAA,CAAS89B,kBAAkB,CAAC,IAAI,CAAC2L,WAAW,CAAA,CAAA;;QAG5C,IAAK,IAAI7oE,KAAI,IAAI,CAACsnE,cAAc,GAAG,CAAA,EAAGtnE,EAAI,GAAA,CAAA,EAAGA,EAAK,EAAA,CAAA;YAChD,IAAMspE,OAAAA,GAAU9kE,KAAK0D,KAAK,CAACogE,YAAY9jE,IAAKmJ,CAAAA,GAAG,CAAC,CAAA,EAAG3N,EAAI,GAAA,CAAA,CAAA,CAAA,CAAA;YACvD,IAAMupE,QAAAA,GAAW/kE,KAAK0D,KAAK,CAACqgE,aAAa/jE,IAAKmJ,CAAAA,GAAG,CAAC,CAAA,EAAG3N,EAAI,GAAA,CAAA,CAAA,CAAA,CAAA;AAEzD,YAAA,IAAMwpE,MAASpqC,GAAAA,QAAAA,CAASs9B,cAAc,CAAC,UAAW18D,GAAAA,EAAAA,EAAKspE,OAASC,EAAAA,QAAAA,EAAU,CAAGhb,EAAAA,UAAAA,CAAWoO,MAAM,EAAEnO,oBAAoBoO,QAAQ,CAAA,CAAA;;YAG5H,IAAM6M,iBAAAA,GAAoB,IAAI,CAAClC,OAAO,CAACvnE,EAAI,GAAA,CAAA,CAAE,CAACgvD,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA;AAEnE,YAAA,IAAI,CAACkZ,gBAAgB,CAAClG,UAAU,CAAC,kBAAoByH,EAAAA,iBAAAA,CAAAA,CAAAA;AACrD,YAAA,IAAI,CAACvB,gBAAgB,CAACiB,UAAU,CAAC,4BAA4BC,cAAeK,CAAAA,iBAAAA,CAAAA,CAAAA,CAAAA;AAC5ErqC,YAAAA,QAAAA,CAAS0pC,IAAI,CAACC,cAAAA,EAAgBS,MAAQ,EAAA,IAAI,CAACtB,gBAAgB,CAAA,CAAA;AAE3Da,YAAAA,cAAAA,GAAiBS,MAAOxa,CAAAA,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA;AAC7C,YAAA,IAAI,CAACuY,OAAO,CAAC5lE,IAAI,CAAC6nE,MAAAA,CAAAA,CAAAA;AACpB,SAAA;;AAGApqC,QAAAA,QAAAA,CAASy9B,cAAc,CAAC,IAAI,CAAC0K,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC9nE,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AAC/D,KAAA,CAAA;AAEA,IAAA,MAAA,CAASw8D,eAOR,GAPD,SAASA,eAAAA,CAAiB78B,QAAkB,EAAA;;QAE1C,IAAK,IAAIp/B,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACunE,OAAO,CAAC9nE,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC5Co/B,YAAAA,QAAAA,CAAS89B,kBAAkB,CAAC,IAAI,CAACqK,OAAO,CAACvnE,CAAE,CAAA,CAAA,CAAA;AAC7C,SAAA;QAEA,IAAI,CAACunE,OAAO,GAAG,EAAE,CAAA;AACnB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAStoD,OAMR,GAND,SAASA,OAAAA,CAASjc,OAAkC,EAAA;QAClD,IAAI,CAACwkE,iBAAiB,CAACvoD,OAAO,EAAA,CAAA;QAC9B,IAAI,CAAC6oD,mBAAmB,CAAC7oD,OAAO,EAAA,CAAA;QAChC,IAAI,CAAC+oD,mBAAmB,CAAC/oD,OAAO,EAAA,CAAA;QAChC,IAAI,CAACipD,gBAAgB,CAACjpD,OAAO,EAAA,CAAA;AAC7B,QAAA,UAAA,CAAA,SAAA,CAAMA,OAAD,CAASjc,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAAA;AAChB,KAAA,CAAA;AAxJWqkE,IAAAA,OAAAA,SAAAA,CAAAA;EAAkB5L,UAyJ9B,CAAA,CAAA;AAED;AACO,IAAA,eAAMiO,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,UAAAA,CAAAA,CAAAA;aAAAA,eAKEtqC,CAAAA,QAAkB,EAAEipC,kBAAuC,EAAA;;AAChEjpC,QAAAA,KAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AACN,QAAA,IAAMn9B,IAAO,GAAA,aAAA,CAAA;AACb,QAAA,IAAMwV,MAAS,GAAA,KAAA,CAAK2nB,QAAQ,CAAC3nB,MAAM,CAAA;AAEnC,QAAA,KAAA,CAAK4wD,kBAAkB,GAAGA,kBAAqBA,GAAAA,kBAAAA,GAAqB,IAAIlN,kBAAmB1jD,CAAAA,MAAAA,CAAAA,CAAAA;AAC3F,QAAA,IAAM04B,QAAW6zB,GAAAA,QAAAA,CAASljE,MAAM,CAAC2W,MAAQ,EAAA;YACvCxV,IAAAA,EAAAA,IAAAA;AACA0nE,YAAAA,IAAAA,EAAM/Y,UAAUgZ,cAAc;YAC9BC,UAAY,EAAA;gBACVC,IAAM,EAAA;AACJp0D,oBAAAA,IAAAA,EAAMk7C,UAAU8S,KAAK;oBACrBn/D,IAAM,EAAA,CAAA;AACNqN,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA;wBAAC,CAAC,CAAA;AAAG,wBAAA,CAAA;wBAAG,CAAC,CAAA;wBAAG,CAAC,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;wBAAG,CAAC,CAAA;AAAE,qBAAA,CAAA;AACrD,iBAAA;AACF,aAAA;YACAsxB,SAAW,EAAA,CAAA;AACb,SAAA,CAAA,CAAA;AAEA,QAAA,IAAMvqC,QAAW2hC,GAAAA,QAAAA,CAASrgE,MAAM,CAAC2W,MAAQ,EAAA;YACvCxV,IAAAA,EAAAA,IAAAA;YACA67D,MAAQ,EAAA;gBACN2J,MAAQC,EAAAA,cAAAA;gBACRxB,QAAU8D,EAAAA,gBAAAA;AACVpC,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;AAChC,aAAA;AACF,SAAA,CAAA,CAAA;AAEAroC,QAAAA,QAAAA,CAAS4+B,QAAQ,GAAG,KAAA,CAAA;AACpB5+B,QAAAA,QAAAA,CAAS4iC,SAAS,GAAG,KAAA,CAAA;AACrB5iC,QAAAA,QAAAA,CAAS+/B,OAAO,GAAG,KAAA,CAAA;AAEnB,QAAA,KAAA,CAAK0K,UAAU,GAAG7F,IAAKtjE,CAAAA,MAAM,CAAC2W,MAAQ,EAAA;YACpCxV,IAAAA,EAAAA,IAAAA;YAAMkuC,QAAAA,EAAAA,QAAAA;YAAU3Q,QAAAA,EAAAA,QAAAA;YAChBptB,QAAU,EAAA,CAAA;AACZ,SAAA,CAAA,CAAA;AACA,QAAA,KAAA,CAAKA,QAAQ,GAAG,IAAA,CAAA;AAChB,QAAA,KAAA,CAAKnQ,IAAI,GAAG,iBAAA,CAAA;;;AA1CHynE,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AA6CX,IAAA,MAAA,CAAS3N,SAMR,GAND,SAASA,SAAAA,CAAW38B,QAAkB,EAAA;QACpC,IAAI,CAAC0iC,WAAW,GAAG1iC,QAAAA,CAASgpC,cAAc,EAAGpZ,CAAAA,gBAAgB,EAAE,CAAC,CAAE,CAAA,CAAA;AAClE,QAAA,IAAI,CAAC,IAAI,CAACqZ,kBAAkB,CAAC1Q,OAAO,EAAE;AACpC,YAAA,IAAI,CAAC0Q,kBAAkB,CAAC1Q,OAAO,GAAG,IAAI,CAACmK,WAAW,CAAA;AACpD,SAAA;AACA1iC,QAAAA,QAAAA,CAASy9B,cAAc,CAAC,IAAA,CAAA,CAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAASb,OAwDR,GAxDD,SAASA,OAAAA,CAAS58B,QAAkB,EAAA;AAClCA,QAAAA,QAAAA,CAAS+5B,KAAK,CAAC;AACb2D,YAAAA,WAAAA,EAAazO,kBAAkB8K,KAAK;AACpC4D,YAAAA,WAAAA,EAAa1O,kBAAkB8K,KAAK;AACpC6D,YAAAA,aAAAA,EAAe3O,kBAAkB8K,KAAK;AACxC,SAAA,CAAA,CAAA;AACA,QAAA,IAAMwP,eAAevpC,QAASqpC,CAAAA,aAAa,CAACC,YAAY,CAACC,YAAY,CAAA;AAErE,QAAA,IAAMC,KAAoB,GAAA,QAAA,CAAA;YACxBJ,SAAW,EAAA,CAAA;YACX0B,SAAW,EAAA,CAAA;YACXC,MAAQ,EAAA,KAAA;AACLxB,SAAAA,EAAAA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAcC,KAAK,CAAA,CAAA;AAGxB,QAAA,IAAMwB,QAA0B,GAAA,QAAA,CAAA;YAC9BF,SAAW,EAAA,CAAA;YACXG,UAAY,EAAA,CAAA;YACZC,SAAW,EAAA,CAAA;YACXH,MAAQ,EAAA,KAAA;AACLxB,SAAAA,EAAAA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAcyB,QAAQ,CAAA,CAAA;AAG3B,QAAA,IAAMG,gBAA0C,GAAA,QAAA,CAAA;YAC9CC,UAAY,EAAA,CAAA;YACZr+D,UAAY,EAAA,CAAA;YACZs+D,QAAU,EAAA,CAAA;YACVN,MAAQ,EAAA,KAAA;AACLxB,SAAAA,EAAAA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAc4B,gBAAgB,CAAA,CAAA;AAGnC,QAAA,IAAMG,WAAgC,GAAA,QAAA,CAAA;YACpCP,MAAQ,EAAA,KAAA;AACLxB,SAAAA,EAAAA,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAc+B,WAAW,CAAA,CAAA;AAG9B,QAAA,IAAI,CAACT,UAAU,CAACzqC,QAAQ,CAACwiC,UAAU,CAAC,WAAA,EAAa,IAAI,CAACqG,kBAAkB,CAAC1Q,OAAO,CAAA,CAAA;AAEhF,QAAA,IAAI,CAACsS,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,aAAA,EAAexqB,IAAKmJ,CAAAA,GAAG,CAAC,CAAA,EAAG48D,iBAAiBC,UAAU,CAAA,CAAA,CAAA;AACxF,QAAA,IAAI,CAACP,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,aAAA,EAAe,gBAACu7C,CAAiBp+D,UAAU,GAAG,IAAQ,GAAA,CAAA,CAAA,CAAA;AACxF,QAAA,IAAI,CAAC89D,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,WAAA,EAAa,gBAACu7C,CAAiBE,QAAQ,GAAG,IAAQ,GAAA,CAAA,CAAA,CAAA;QAEpF,IAAI,CAACR,UAAU,CAACzqC,QAAQ,CAACmrC,MAAM,CAAC,WAAA,EAAajmE,MAAOkkE,CAAAA,KAAAA,CAAMuB,MAAM,CAAA,CAAA,CAAA;QAChE,IAAIvB,KAAAA,CAAMuB,MAAM,EAAE;YAChB,IAAI,CAACF,UAAU,CAACzqC,QAAQ,CAACwiC,UAAU,CAAC,cAAA,EAAgB,IAAI,CAACF,WAAW,CAAA,CAAA;YACpE,IAAI,CAACmI,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,iBAAmB45C,EAAAA,KAAAA,CAAMsB,SAAS,CAAA,CAAA;AACtE,SAAA;QACA,IAAIE,QAAAA,CAASF,SAAS,GAAG,CAAG,EAAA;YAC1B,IAAI,CAACD,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,oBAAsBo7C,EAAAA,QAAAA,CAASF,SAAS,CAAA,CAAA;YAC1E,IAAI,CAACD,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,qBAAuBo7C,EAAAA,QAAAA,CAASC,UAAU,CAAA,CAAA;YAC5E,IAAI,CAACJ,UAAU,CAACzqC,QAAQ,CAACxQ,QAAQ,CAAC,oBAAsBo7C,EAAAA,QAAAA,CAASE,SAAS,CAAA,CAAA;YAC1E,IAAI,CAACL,UAAU,CAACzqC,QAAQ,CAAC2pC,UAAU,CAAC,iBAAA,EAAmB,IAAIviE,OAAAA,CAAQ,GAAK,EAAA,GAAA,CAAA,CAAA,CAAA;YACxE,IAAI,CAACqjE,UAAU,CAACzqC,QAAQ,CAACorC,UAAU,CAAC,gBAAkB,EAAA,IAAIhhE,OAAQ,CAAA,GAAA,EAAK,GAAK,EAAA,GAAA,CAAA,CAAA,CAAA;AAC9E,SAAA;QACA,IAAI,CAACqgE,UAAU,CAACzqC,QAAQ,CAACmrC,MAAM,CAAC,iBAAA,EAAmBjmE,MAAOgmE,CAAAA,WAAAA,CAAYP,MAAM,CAAA,CAAA,CAAA;AAC5E/qC,QAAAA,QAAAA,CAAS69B,YAAY,CAAC;AAAC,YAAA,IAAI,CAACgN,UAAU;AAAC,SAAA,CAAA,CAAA;AACzC,KAAA,CAAA;AA7GWP,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBjO,UA8GpC,CAAA;;AC5ND,IAAInpB,MAAO,GAAA,CAAA,CAAA;AAEX;;AAEC,IACM,IAAA,WAAMu4B,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,CA0BE7nE,OAA2B,EAAA;aALhC24D,QAAW,GAAA,KAAA,CAAA;aAEXmP,qBAAiC,GAAA,KAAA,CAAA;aACjCC,SAAqB,GAAA,IAAA,CAAA;QAG3B,IACExzB,MAAAA,GAIEv0C,QAJFu0C,MAAQnY,EAAAA,QAAAA,GAINp8B,QAJMo8B,QAINp8B,EAAAA,wBAAAA,GAAAA,OAAAA,CAHFgoE,iBAAAA,eAAkB,GAAA,wBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,GAAA,wBAAA,EAC9BrC,YAEE3lE,GAAAA,OAAAA,CAFF2lE,YAEE3lE,EAAAA,8BAAAA,GAAAA,OAAAA,CADF8nE,uBAAAA,qBAAwB,GAAA,8BAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAA,8BAAA,CAAA;QAE1B,IAAMrzD,MAAAA,GAAS2nB,SAAS3nB,MAAM,CAAA;AAE9B,QAAA,IAAIkxD,YAAc,EAAA;YAChB,IAAI,CAACA,YAAY,GAAGA,YAAAA,CAAAA;AACtB,SAAA;QAEA,IAAI,CAACmC,qBAAqB,GAAGA,qBAAAA,CAAAA;QAC7B,IAAI,CAAClJ,cAAc,GAAG,IAAIqJ,cAAAA,EAAAA,CAAAA;QAC1B,IAAI,CAAC7rC,QAAQ,GAAGA,QAAAA,CAAAA;AAEhB,QAAA,IAAI0rC,yBAAyB,IAAI,CAACC,SAAS,IAAI,CAAC,IAAI,CAAC3rC,QAAQ,CAAC3nB,MAAM,CAACyzD,aAAa,CAACC,MAAM,CAACC,gBAAgB,EAAE;AAC1G,YAAA,MAAM,IAAIppE,KAAM,CAAA,sCAAA,CAAA,CAAA;AAClB,SAAA;AAEA,QAAA,IAAI,CAACqpE,cAAc,GAAG,IAAI9O,cAAen9B,CAAAA,QAAAA,CAAAA,CAAAA;AACzC,QAAA,IAAMksC,YAAe,GAAA;AAAC,YAAA,IAAI,CAACD,cAAc;AAAC,SAAA,CAAA;QAE1C,IAAI,CAACE,eAAe,CAACD,YAAAA,CAAAA,CAAAA;AAErB,QAAA,IAAIR,qBAAuB,EAAA;AACzB,YAAA,IAAMzC,kBAAqB,GAAA,IAAIlN,kBAAmB1jD,CAAAA,MAAAA,CAAAA,CAAAA;YAElD,IAAM+zD,YAAAA,GAAe;;YAGrB,IAAMC,SAAAA,GAAY,IAAIpE,SAAAA,CAAUjoC,QAAUosC,EAAAA,YAAAA,CAAAA,CAAAA;AAE1CC,YAAAA,SAAAA,CAAUpD,kBAAkB,GAAGA,kBAAAA,CAAAA;YAC/B,IAAI,CAACqD,aAAa,CAACD,SAAAA,CAAAA,CAAAA;;YAGnB,IAAME,eAAAA,GAAkB,IAAIjC,eAAAA,CAAgBtqC,QAAUipC,EAAAA,kBAAAA,CAAAA,CAAAA;YAEtD,IAAI,CAACqD,aAAa,CAACC,eAAAA,CAAAA,CAAAA;AACrB,SAAA;AAEA,QAAA,IAAI,CAAC1pE,IAAI,GAAI,aAAaqwC,GAAAA,MAAAA,EAAAA,CAAAA;QAE1B,IAAI,CAACiF,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,IAAI,CAACyzB,eAAe,GAAGr/D,OAAAA,CAAQlC,SAAS,CAACuhE,eAAAA,CAAAA,CAAAA;;AAxEhCH,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAmFX;;MAGApO,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAAC4O,cAAc,CAAC5O,KAAK,CAAC,IAAI,CAACqO,qBAAqB,CAAA,CAAA;AACtD,KAAA,CAAA;AAEA;;;AAGC,MACDxrC,MAAAA,CAAAA,0BAEC,GAFDA,SAAAA,2BAA4Bu8B,IAAuB,EAAA;AACjD,QAAA,IAAI,CAACwP,cAAc,CAACzP,OAAO,CAACC,IAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;AAEA;;;;AAIC,MACDt8B,MAAAA,CAAAA,+BAEC,GAFDA,SAAAA,gCAAiCs8B,IAAuB,EAAA;AACtD,QAAA,IAAI,CAACwP,cAAc,CAACvP,UAAU,CAACD,IAAAA,CAAAA,CAAAA;AACjC,KAAA,CAAA;AAEA;;;AAGC,MACD58C,MAAAA,CAAAA,OAUC,GAVDA,SAAAA,QAASjc,OAAmC,EAAA;QAC1C,IAAM4oE,IAAAA,GAAO5oE,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS6oE,MAAM,IAAG7oE,OAAAA,CAAQ6oE,MAAM,GAAGltE,SAAAA,CAAAA;QAEhD,IAAIitE,IAAAA,KAASn4D,cAAe4oD,CAAAA,IAAI,EAAE;AAChC,YAAA,IAAI,CAACyP,aAAa,CAACp8D,OAAO,CAACq8D,SAAAA,UAAAA,EAAAA;AACzBA,gBAAAA,UAAAA,CAAW9sD,OAAO,CAAC2sD,IAAAA,CAAAA,CAAAA;AACrB,aAAA,CAAA,CAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACE,aAAa,CAACrsE,MAAM,GAAG,CAAA,CAAA;QAC5B,IAAI,CAACk8D,QAAQ,GAAG,IAAA,CAAA;AAClB,KAAA,CAAA;AAEA;;;AAGC,MACD4P,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,gBAAiBM,MAAoB,EAAA;AACnC,QAAA,IAAI,CAACC,aAAa,GAAGD,MAAAA,CAAOnpE,KAAK,EAAA,CAAA;AACnC,KAAA,CAAA;AAEA;;;AAGC,MACDgpE,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,cAAeE,IAAgB,EAAA;AAC7B,QAAA,IAAI,CAACE,aAAa,CAACnqE,IAAI,CAACiqE,IAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA;;;AAGC,MACDI,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,iBAAkBJ,IAAgB,EAAA;QAChCroE,UAAW,CAAA,IAAI,CAACuoE,aAAa,EAAEF,IAAAA,CAAAA,CAAAA;AACjC,KAAA,CAAA;AAjJWf,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YA2EPS,GAAAA,EAAAA,cAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACQ,aAAa,CAACppE,KAAK,EAAA,CAAA;AACjC,aAAA;;;YAEI45D,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACX,QAAQ,CAAA;AACtB,aAAA;;;AAjFWkP,IAAAA,OAAAA,WAAAA,CAAAA;AAkJZ,CAAA,GAAA;AAEM,SAASzB,eAAgB7N,GAAa,EAAA;IAC3C,OAAOA,GAAAA,GAAM,IAAI30D,OAAQ20D,CAAAA,GAAAA,CAAI7E,QAAQ,EAAI6E,EAAAA,GAAAA,CAAI5E,SAAS,EAAA,CAAA,GAAM,IAAI/vD,OAAAA,EAAAA,CAAAA;AAClE,CAAA;AAEO,IAAA,cAAMqkE,GAAN,SAAMA,cAAAA,GAAAA;AACXxxC,IAAAA,IAAAA,CAAAA,MAAAA,GAAiC,EAAC,CAAA;AAClCwyC,IAAAA,IAAAA,CAAAA,IAAAA,GAA+B,EAAC,CAAA;AAChCC,IAAAA,IAAAA,CAAAA,QAAAA,GAAoC,EAAC,CAAA;AACrCC,IAAAA,IAAAA,CAAAA,QAAAA,GAAoC,EAAC,CAAA;AACrCC,IAAAA,IAAAA,CAAAA,QAAAA,GAAoC,EAAC,CAAA;;SAGrCC,QAAqB,GAAA,EAAE;;SACvBC,QAAqB,GAAA,EAAE;;AACxB;;AC7NM,IAAA,YAAeC,iBAAV,WAAL;AAAeA,IAAAA,SAAAA,YAAAA,CAWP1vC,KAAwB,EAAA;aAV5Bt4B,IAA+B,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;aACrCioE,WAAc,GAAA,CAAA,CAAA;aAKb/V,SAAY,GAAA,KAAA,CAAA;AAKpB,QAAA,IAAQ6E,cAAoCz+B,KAApCy+B,CAAAA,WAAAA,EAAanoD,SAAuB0pB,KAAvB1pB,CAAAA,MAAAA,EAAQs5D,aAAe5vC,KAAf4vC,CAAAA,UAAAA,CAAAA;QAE7B,IAAI,CAACnR,WAAW,GAAGA,WAAAA,CAAAA;QACnB,IAAI,CAACnoD,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACs5D,UAAU,GAAGA,UAAAA,CAAAA;;AAhBAF,IAAAA,aAAAA,CAAAA,YAAAA,EAAAA;;YAmBhBzU,GAAAA,EAAAA,aAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrB,SAAS,CAAA;AACvB,aAAA;;;AArBoB8V,IAAAA,OAAAA,YAAAA,CAAAA;AA0BrB,CAAA;;ACtBM,IAAA,gBAAMG,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,gBAAAA,CAMT,MAAqB,EAAA;aAAdj1D,MAAAA,GAAAA,MAAAA,CAAAA;AALDk1D,QAAAA,IAAAA,CAAAA,YAAAA,GAAwB,EAAE,CAAA;aAC1BjE,YAAe,GAAA,CAAA,CAAA;aACNkE,eAAkB,GAAA,CAAA,CAAA;;AAHxBF,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AASX;;;;AAIC,MACDxI,OAAAA,KAcC,GAdDA,SAAAA,KAAO2I,CAAAA,KAAa,EAAEC,YAAiB,EAAA;AAAhCD,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,KAAA,CAAA;QAAOC,IAAAA,YAAAA,KAAAA,KAAAA,CAAAA,EAAAA,eAAe,CAAC,CAAA,CAAA;AACpC,QAAA,IAAI,CAACpE,YAAY,EAAA,CAAA;AAEjB,QAAA,IAAMF,YAAYsE,YAAgB,IAAA,CAAA,GAAIA,YAAe,GAAA,IAAI,CAACF,eAAe,CAAA;QAEzE,IAAK,IAAI5sE,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAAC2sE,YAAY,CAACltE,MAAM,EAAEO,CAAK,EAAA,CAAA;AACjD,YAAA,IAAM+sE,KAAQ,GAAA,IAAI,CAACJ,YAAY,CAAC3sE,CAAE,CAAA,CAAA;;AAGlC,YAAA,IAAI,CAAC+sE,KAAAA,CAAMC,UAAU,KAAKH,KAAS,IAAC,IAAI,CAACnE,YAAY,GAAGqE,KAAAA,CAAME,iBAAiB,GAAIzE,SAAQ,CAAI,EAAA;gBAC7FuE,KAAMG,CAAAA,EAAE,CAACjuD,OAAO,EAAA,CAAA;AAChB,gBAAA,IAAI,CAAC0tD,YAAY,CAACjpE,MAAM,CAAC1D,CAAK,EAAA,EAAA,CAAA,CAAA,CAAA;AAChC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA8d,IAAAA,MAAAA,CAAAA,GAsEC,GAtEDA,SAAAA,GAAAA,CACE7b,IAAY,EACZyP,KAAa,EACbC,MAAc,EACdw7D,WAAe,EACfC,MAA0B,EAC1Bj6D,MAAmC,EAAA;AAFnCg6D,QAAAA,IAAAA,wBAAAA,WAAc,GAAA,CAAA,CAAA;QACdC,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAAS7e,GAAAA,UAAAA,CAAWoO,MAAM,CAAA;QAC1BxpD,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAASq7C,GAAAA,mBAAAA,CAAoB6e,MAAM,CAAA;;QAGnC,IAAMC,IAAAA,GAAO,KAAS,GAAA,GAAA,GAAG37D,SAAO,GAAGw7D,GAAAA,WAAAA,GAAY,GAAGC,GAAAA,MAAAA,GAAO,GAAGj6D,GAAAA,MAAAA,CAAAA;QAE5D,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACw5D,YAAY,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BI,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACA,KAAMC,CAAAA,UAAU,IAAID,KAAMQ,CAAAA,eAAe,KAAKD,IAAM,EAAA;AACvDP,gBAAAA,KAAAA,CAAMC,UAAU,GAAG,IAAA,CAAA;gBACnBD,KAAMG,CAAAA,EAAE,CAACjrE,IAAI,GAAGA,IAAAA,CAAAA;AAEhB,gBAAA,OAAO8qE,MAAMG,EAAE,CAAA;AACjB,aAAA;AACF,SAAA;QAEA,IAAIM,aAAAA,CAAAA;QACJ,IAAIC,WAAAA,CAAAA;QACJ,IAAIC,SAAAA,GAAYzS,gCAAgC0S,IAAI,CAAA;;QAGpD,IAAIP,MAAAA,KAAW7e,UAAWoO,CAAAA,MAAM,EAAE;AAChC6Q,YAAAA,aAAAA,GAAgB5c,UAAU4J,MAAM,CAAA;AAClC,SAAA,MAAO,IAAI4S,MAAAA,KAAW7e,UAAWqf,CAAAA,OAAO,EAAE;AACxCJ,YAAAA,aAAAA,GAAgB5c,UAAUwG,OAAO,CAAA;AACnC,SAAA;QACA,IAAIjkD,MAAAA,KAAWq7C,mBAAoB6e,CAAAA,MAAM,EAAE;AACzCI,YAAAA,WAAAA,GAAc7c,UAAU6G,aAAa,CAAA;AACvC,SAAA,MAAO,IAAItkD,MAAAA,KAAWq7C,mBAAoBoO,CAAAA,QAAQ,EAAE;AAClD6Q,YAAAA,WAAAA,GAAc7c,UAAUyH,UAAU,CAAA;AACpC,SAAA;AACA,QAAA,IAAI8U,gBAAgB,CAAG,EAAA;AACrBO,YAAAA,SAAAA,GAAYzS,gCAAgC0S,IAAI,CAAA;SAC3C,MAAA,IAAIR,gBAAgB,EAAI,EAAA;AAC7BO,YAAAA,SAAAA,GAAYzS,gCAAgC4S,oBAAoB,CAAA;SAC3D,MAAA,IAAIV,gBAAgB,EAAI,EAAA;AAC7BO,YAAAA,SAAAA,GAAYzS,gCAAgC6S,0BAA0B,CAAA;AACxE,SAAA;AAEA,QAAA,IAAMC,kBAAkBvX,OAAQ11D,CAAAA,MAAM,CAAC,IAAI,CAAC2W,MAAM,EAAE;AAClDwf,YAAAA,UAAAA,EAAYq3B,kBAAkB+M,WAAW;YACzClE,SAAWqW,EAAAA,aAAAA;YACXnW,SAAWmW,EAAAA,aAAAA;AACXvW,YAAAA,cAAAA,EAAgBrG,UAAUsG,IAAI;AAC9B/jD,YAAAA,MAAAA,EAAQy9C,UAAUsG,IAAI;YACtBxhD,IAAM+3D,EAAAA,WAAAA;AACR,SAAA,CAAA,CAAA;QAEA,IAAMO,cAAAA,GAAiBvf,WAAY3tD,CAAAA,MAAM,CAAC;YACxCmB,IAAAA,EAAAA,IAAAA;AACAgsE,YAAAA,WAAAA,EAAa,EAAC;YACd9R,QAAU,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAGzqD,gBAAAA,KAAAA;AAAOC,gBAAAA,MAAAA;AAAO,aAAA;YAC/Bu8D,WAAa,EAAA;AAACH,gBAAAA,eAAAA;AAAgB,aAAA;YAC9BI,sBAAwB,EAAA;gBAAE7S,WAAaoS,EAAAA,SAAAA;AAAU,aAAA;AACnD,SAAA,EAAG,IAAI,CAACj2D,MAAM,CAAC2nB,QAAQ,CAAA,CAAA;AAEvB,QAAA,IAAM2tC,MAAe,GAAA;YACnBG,EAAIc,EAAAA,cAAAA;YACJf,iBAAmB,EAAA,CAAA;YACnBM,eAAiBD,EAAAA,IAAAA;YACjBN,UAAY,EAAA,IAAA;AACd,SAAA,CAAA;AAEA,QAAA,IAAI,CAACL,YAAY,CAAChrE,IAAI,CAACorE,MAAAA,CAAAA,CAAAA;AAEvB,QAAA,OAAOA,OAAMG,EAAE,CAAA;AACjB,KAAA,CAAA;AAEA;;;AAGC,MACDkB,MAAAA,CAAAA,OASC,GATDA,SAAAA,QAASC,EAAe,EAAA;QACtB,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC1B,YAAY,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BI,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,KAAAA,CAAMG,EAAE,KAAKmB,EAAI,EAAA;AACnBtB,gBAAAA,KAAAA,CAAMC,UAAU,GAAG,KAAA,CAAA;AACnBD,gBAAAA,KAAAA,CAAME,iBAAiB,GAAG,IAAI,CAACvE,YAAY,CAAA;AAE3C,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEAzpD,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,OAAAA,GAAAA;QACE,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC0tD,YAAY,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BI,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACTA,KAAMG,CAAAA,EAAE,CAACjuD,OAAO,EAAA,CAAA;AAClB,SAAA;AACF,KAAA,CAAA;AAzHWytD,IAAAA,OAAAA,gBAAAA,CAAAA;AA0HZ,CAAA;;ACrGD,IAAM4B,iBAAAA,GAAoB,OAAOtd,sBAA2B,KAAA,UAAA,CAAA;AAErD,IAAA,aAAMud,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,CAgBThf,EAAkD,EAAA;QAElD,IAAI,CAACif,eAAe,CAACjf,EAAAA,CAAAA,CAAAA;;AAlBZgf,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAuBXE,IAAAA,MAAAA,CAAAA,2BAEC,GAFDA,SAAAA,2BAAAA,CAA6BC,GAAkC,EAAA;AAC7D,QAAA,OAAO,CAAC,CAAC,IAAI,CAACC,6BAA6B,CAAC7wD,GAAG,CAAC4wD,GAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AACA,IAAA,MAAA,CAAQF,eAqEP,GArED,SAAQA,eAAAA,CAAiBjf,EAAkD,EAAA;AA2BFA,QAAAA,IAAAA,gBAAAA,CAAAA;AA1BvE,QAAA,IAAMgW,QAAQ+I,iBAAqB/e,IAAE3wD,YAAF2wD,CAAAA,EAAAA,EAAcyB,0BAAyB,CAAI,GAAA,CAAA,CAAA;AAC9E,QAAA,IAAM4d,SAASrJ,KAAU,KAAA,CAAA,CAAA;AACzB,QAAA,IAAMsJ,wBAAwBtf,EAAGE,CAAAA,YAAY,CAAC,gCAAqCF,CAAAA,IAAAA,EAAAA,CAAGE,YAAY,CAAC,uCAAA,CAAA,CAAA;QACnG,IAAMqf,qBAAAA,GAAwBvf,EAAGE,CAAAA,YAAY,CAAC,qBAAA,CAAA,CAAA;AAC9C,QAAA,IAAIsf,eAAkB,GAAA,CAAC,CAACxf,EAAAA,CAAGE,YAAY,CAAC,+BAAA,CAAA,CAAA;AACxC,QAAA,IAAIuf,WAAc,GAAA,CAAC,CAACzf,EAAAA,CAAGE,YAAY,CAAC,0BAAA,CAAA,CAAA;QAEpC,IAAI,CAAC8V,KAAK,GAAGA,KAAAA,CAAAA;AACb,QAAA,IAAI,CAAC7vD,IAAI,GAAGk5D,MAAAA,GAAS,QAAW,GAAA,OAAA,CAAA;AAChC,QAAA,IAAI,CAACK,MAAM,GAAG1f,EAAAA,CAAGE,YAAY,CAAC,yBAAA,CAAA,CAAA;AAC9B,QAAA,IAAI,CAACyf,iBAAiB,GAAG3f,EAAAA,CAAGE,YAAY,CAAC,6BAAA,CAAA,CAAA;AAEzC,QAAA,IAAI,CAAC0f,iBAAiB,GAAI5f,GAA8B4f,iBAAiB,CAAA;AACzE,QAAA,IAAI,CAACC,mBAAmB,GAAG7f,EAAAA,CAAGE,YAAY,CAAC,oBAAA,CAAA,CAAA;AAC3C,QAAA,IAAIqf,qBAAuB,EAAA;AACzB,YAAA,IAAI,CAACK,iBAAiB,GAAGL,qBAAAA,CAAsBO,uBAAuB,CAAA;AACxE,SAAA;QACA,IAAIT,MAAAA,IAAU,CAACG,eAAiB,EAAA;AAC9BA,YAAAA,eAAAA,GAAkBO,wBAAyB/f,CAAAA,EAAAA,EAA8B,EAACA,CAA8B8I,UAAU,CAAA,CAAA;AACpH,SAAA;QACA,IAAIuW,MAAAA,IAAU,CAACI,WAAa,EAAA;AAC1BA,YAAAA,WAAAA,GAAcM,wBAAyB/f,CAAAA,EAAAA,EAA8B,EAACA,CAA8BmU,KAAK,CAAA,CAAA;AAC3G,SAAA;QACA,IAAI,CAAC6L,qBAAqB,GAAGX,MAAAA,GAAS,EAA+BY,CAAAA,iBAAiB,GAAGjgB,EAAAA,CAAGkgB,eAAe,CAAA;QAC3G,IAAI,CAACC,8BAA8B,GAAGd,MAAAA,GAAS,EAA+Be,CAAAA,gBAAgB,GAAGpgB,EAAAA,CAAGqgB,aAAa,CAAA;QACjH,IAAMC,YAAAA,GAAe,MAAWtgB,IAAAA,EAAAA,CAAGE,YAAY,CAAC,mBAAA,CAAA,GAAwBF,EAAGmU,CAAAA,KAAK,GAAG,CAAA,CAAA;AACnF,QAAA,IAAM0H,gBAAmBwD,GAAAA,MAAAA,GAAS5d,sBAAuBqH,CAAAA,UAAU,GAAI9I,CAAAA,CAAAA,gBAAAA,GAAAA,EAAAA,CAAGE,YAAY,CAAC,wBAAhBF,CAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAA2CugB,cAAc,KAAI,CAAA,CAAA;AAEpI,QAAA,IAAI,CAACnB,6BAA6B,GAAG,IAAIzxD,GAAI,CAAA;AAC3C,YAAA;;gBAAqC,CAAC,CAACqyC,EAAGE,CAAAA,YAAY,CAAC,+BAAA,CAAA;AAAiC,aAAA;AACxF,YAAA;;gBAA4C,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,sCAAA,CAAA;AAAwC,aAAA;AACtG,YAAA;;gBAAoC,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,8BAAA,CAAA;AAAgC,aAAA;AACtF,YAAA;;gBAA2C,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,qCAAA,CAAA;AAAuC,aAAA;AACpG,YAAA;;gBAAqC,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,+BAAA,CAAA;AAAiC,aAAA;AACxF,YAAA;;gBAAsC,CAAC,CAACF,GAAGE,YAAY,CAAC,qCAAqC,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,uCAAA,CAAA;AAAyC,aAAA;AACxJ,YAAA;;gBAA6C,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,uCAAA,CAAA;AAAyC,aAAA;AACxG,YAAA;;gBAAqC,CAAC,CAACF,EAAGE,CAAAA,YAAY,CAAC,UAAA,CAAA;AAAY,aAAA;AACpE,SAAA,CAAA,CAAA;AACD,QAAA,IAAM0b,MAA8B,GAAA;YAClC0E,YAAAA,EAAAA,YAAAA;YACAzE,gBAAAA,EAAAA,gBAAAA;AACA2E,YAAAA,SAAAA,EAAWnB,SAASrf,EAAG1e,CAAAA,YAAY,CAAC,EAAC0e,CAA8BygB,WAAW,CAAI,GAAA,CAAA;AAClFC,YAAAA,iBAAAA,EAAmB1gB,EAAG1e,CAAAA,YAAY,CAAC0e,EAAAA,CAAG2gB,0BAA0B,CAAA;AAChEC,YAAAA,iBAAAA,EAAmB5gB,EAAG1e,CAAAA,YAAY,CAAC0e,EAAAA,CAAG6gB,8BAA8B,CAAA;AACpEC,YAAAA,mBAAAA,EAAqB9gB,EAAG1e,CAAAA,YAAY,CAAC0e,EAAAA,CAAG+gB,4BAA4B,CAAA;AACpEC,YAAAA,mBAAAA,EAAqBhhB,EAAG1e,CAAAA,YAAY,CAAC0e,EAAAA,CAAGihB,uBAAuB,CAAA;AAC/DC,YAAAA,oBAAAA,EAAsB7B,MAAS,GAAA,CAAC,CAACrf,EAAAA,CAAGE,YAAY,CAAC,wBAA6BogB,CAAAA,GAAAA,YAAAA,GAAe,CAAK,IAAA,CAAC,CAACtgB,EAAAA,CAAGE,YAAY,CAAC,0BAAA,CAAA;AACpHihB,YAAAA,wBAAAA,EAA0B9B,MAAS,GAAA,CAAC,CAACrf,EAAAA,CAAGE,YAAY,CAAC,wBAA6B2b,CAAAA,GAAAA,gBAAAA,GAAmB,CAAK,IAAA,CAAC,CAAC7b,EAAAA,CAAGE,YAAY,CAAC,6BAAA,CAAA;AAC5HkhB,YAAAA,cAAAA,EAAgBphB,EAAG1e,CAAAA,YAAY,CAAC0e,EAAAA,CAAGqhB,gBAAgB,CAAA;AACnDC,YAAAA,iBAAAA,EAAmBthB,EAAG1e,CAAAA,YAAY,CAAC0e,EAAAA,CAAGuhB,gCAAgC,CAAA;YACtE/B,eAAAA,EAAAA,eAAAA;YACAC,WAAAA,EAAAA,WAAAA;AACA+B,YAAAA,oBAAAA,EAAsBlC,wBAAwBtf,EAAG1e,CAAAA,YAAY,CAACg+B,qBAAAA,CAAsBmC,8BAA8B,CAAI,GAAA,CAAA;AACtHC,YAAAA,gBAAAA,EAAkBrC,MAAU,IAAA,CAAC,CAACrf,EAAAA,CAAGE,YAAY,CAAC,wBAAA,CAAA;AAC9CyhB,YAAAA,YAAAA,EAActC,MAAU,IAAA,CAAC,CAACrf,EAAAA,CAAGE,YAAY,CAAC,wBAAA,CAAA;YAC1C0hB,WAAaC,EAAAA,iBAAAA,CAAkB,IAAI,CAACzC,6BAA6B,CAAA;AACjE0C,YAAAA,WAAAA,EAAazC,MAAU,IAAA,CAAC,CAAC,IAAI,CAACQ,mBAAmB;AACjDkC,YAAAA,kBAAAA,EAAoB,CAAC,CAAC,IAAI,CAACpC,iBAAiB;AAC5CqC,YAAAA,qBAAAA,EAAuB,CAAC,CAAChiB,EAAGE,CAAAA,YAAY,CAAC,wBAAA,CAAA;AACzC+hB,YAAAA,mBAAAA,EAAqB5C,MAAU,IAAA,CAAC,CAACrf,EAAAA,CAAGE,YAAY,CAAC,0BAAA,CAAA;YACjDgiB,4BAA8B7C,EAAAA,MAAAA,IAAU,CAAC,CAACE,qBAAAA;AAC1C4C,YAAAA,iBAAAA,EAAmB9C,MAAU,IAAA,CAAC,CAACrf,EAAAA,CAAGE,YAAY,CAAC,gBAAA,CAAA;AACjD,SAAA,CAAA;QAEA,IAAI,CAAC,SAAS,GAAG0b,MAAAA,CAAAA;AACjB,QAAA,IAAI0D,qBAAuB,EAAA;AACzB,YAAA,IAAI,CAAC8C,uBAAuB,GAAG9C,qBAAAA,CAAsB+C,0BAA0B,CAAA;AACjF,SAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,oBAqBC,GArBDA,SAAAA,oBAAAA,CACEtiB,EAAkD,EAClDjwD,MAAc,EACdkE,KAAa,EACbsuE,SAAiB,EACjBna,OAA4B,EAAA;QAE5B,IAAMnI,GAAAA,GAAM,IAAI,CAAC4f,mBAAmB,CAAA;QAEpC,IAAI,IAAI,CAAC7J,KAAK,KAAK,KAAK,CAAC/V,GAAAA,IAAOhsD,QAAQ,CAAG,EAAA;AACzC,YAAA,MAAM,IAAIxB,KAAM,CAAA,4CAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAMyqE,UAAajd,GAAAA,GAAAA,GACjBA,GAAG,CAAC,kBAAC,GAAkBhsD,KAAM,GAAA,QAAA,CAAoC,GACjE+rD,EAAE,CAAE,qBAAkB/rD,KAAuC,CAAA,CAAA;AAE/D,QAAA,IAAIipE,UAAY,EAAA;AACdld,YAAAA,EAAAA,CAAGsiB,oBAAoB,CAACvyE,MAAQmtE,EAAAA,UAAAA,EAAYqF,WAAWna,OAAS,EAAA,CAAA,CAAA,CAAA;SAC3D,MAAA;AACLrwD,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,kCAAC,GAAkCwF,KAAM,GAAA,GAAA,CAAA,CAAA;AACzD,SAAA;AACF,KAAA,CAAA;AAEA6tE,IAAAA,MAAAA,CAAAA,WAyBC,GAzBDA,SAAAA,WAAa9hB,CAAAA,EAAkD,EAAEwiB,YAAuB,EAAA;QACtF,IAAMviB,GAAAA,GAAM,IAAI,CAAC4f,mBAAmB,CAAA;AAEpC,QAAA,IAAI,IAAI,CAAC7J,KAAK,KAAK,CAAA,IAAK,CAAC/V,GAAK,EAAA;YAC5B,IAAIuiB,YAAAA,CAAatyE,MAAM,GAAG,CAAG,EAAA;AAC3B,gBAAA,MAAM,IAAIuC,KAAM,CAAA,6BAAA,CAAA,CAAA;aACX,MAAA;AACL,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;AACA,QAAA,IAAMgwE,OAAUD,GAAAA,YAAAA,CAAaxiE,GAAG,CAAC,SAACkvB,OAASj7B,EAAAA,KAAAA,EAAAA;AACzC,YAAA,IAAIi7B,OAAS,EAAA;AACX,gBAAA,OAAO+wB,GACLA,GAAAA,GAAG,CAAE,kBAAkBhsD,GAAAA,KAAAA,GAAM,QAAoC,CAAA,GACjE+rD,EAAE,CAAC,kBAAC,GAAkB/rD,KAAuC,CAAA,CAAA;AACjE,aAAA;AAEA,YAAA,OAAO+rD,GAAGkR,IAAI,CAAA;AAChB,SAAA,CAAA,CAAA;AAEA,QAAA,IAAIjR,GAAK,EAAA;AACPA,YAAAA,GAAAA,CAAIyiB,gBAAgB,CAACD,OAAAA,CAAAA,CAAAA;SAChB,MAAA;AACJziB,YAAAA,EAAAA,CAA8B8hB,WAAW,CAACW,OAAAA,CAAAA,CAAAA;AAC7C,SAAA;AACF,KAAA,CAAA;IAEAE,MAAAA,CAAAA,qBAMC,GANDA,SAAAA,qBAAAA,CAAuB3iB,EAAkD,EAAEjwD,MAAc,EAAEimE,KAAa,EAAA;AACtG,QAAA,IAAM,oBAAEwL,GAAyB,IAAI,CAAC5F,MAAM,CAApC4F,oBAAAA,CAAAA;AAER,QAAA,IAAIA,oBAAsB,EAAA;YACxBxhB,EAAG4iB,CAAAA,aAAa,CAAC7yE,MAAAA,EAAQ,IAAI,CAACqyE,uBAAuB,EAAEntE,IAAKI,CAAAA,GAAG,CAACmsE,oBAAAA,EAAsBxL,KAAS,IAAA,CAAA,CAAA,CAAA,CAAA;AACjG,SAAA;AACF,KAAA,CAAA;AAzJWgJ,IAAAA,aAAAA,CAAAA,aAAAA,EAAAA;;YAoBPrd,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACqU,KAAK,KAAK,CAAA,CAAA;AACxB,aAAA;;;AAtBWgJ,IAAAA,OAAAA,aAAAA,CAAAA;AA0JZ,CAAA,GAAA;AAED,SAASe,wBAAAA,CAA0B/f,EAA0B,EAAE75C,IAAY,EAAA;IACzE,IAAM6lD,GAAAA,GAAMhM,GAAG6iB,aAAa,EAAA,CAAA;AAC5B,IAAA,IAAI1jE,GAAM,GAAA,KAAA,CAAA;AAEV6gD,IAAAA,EAAAA,CAAG8iB,QAAQ,EAAA,CAAA;AACX9iB,IAAAA,EAAAA,CAAG+iB,WAAW,CAAC/iB,EAAGyH,CAAAA,UAAU,EAAEuE,GAAAA,CAAAA,CAAAA;AAC9BhM,IAAAA,EAAAA,CAAGgjB,UAAU,CAAChjB,EAAGyH,CAAAA,UAAU,EAAE,CAAGzH,EAAAA,EAAAA,CAAGijB,IAAI,EAAE,GAAG,CAAG,EAAA,CAAA,EAAGjjB,EAAGlhD,CAAAA,GAAG,EAAEqH,IAAM,EAAA,IAAA,CAAA,CAAA;IAChE65C,EAAGkjB,CAAAA,aAAa,CAACljB,EAAGyH,CAAAA,UAAU,EAAEzH,EAAGmjB,CAAAA,kBAAkB,EAAEnjB,EAAAA,CAAGiL,MAAM,CAAA,CAAA;IAChEjL,EAAGkjB,CAAAA,aAAa,CAACljB,EAAGyH,CAAAA,UAAU,EAAEzH,EAAGojB,CAAAA,kBAAkB,EAAEpjB,EAAAA,CAAGiL,MAAM,CAAA,CAAA;IAChE,IAAI,CAACjL,EAAG8iB,CAAAA,QAAQ,EAAI,EAAA;QAClB3jE,GAAM,GAAA,IAAA,CAAA;AACR,KAAA;AACA6gD,IAAAA,EAAAA,CAAGqjB,aAAa,CAACrX,GAAAA,CAAAA,CAAAA;IAEjB,OAAO7sD,GAAAA,CAAAA;AACT,CAAA;;AAMYmkE,CAAAA,SAAAA,6BAAAA,EAAAA;;;;;;;;;GAAAA,6BAAAA,KAAAA,6BAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAWZ;;;IAIA,SAASzB,kBAAmBzC,6BAA0E,EAAA;;AAEpG,IAAA,IAAMmE,2BACJnE,GAAAA,6BAAAA,CAA8B7wD,GAAG,CAAA,+BAAA,CAAA,IACjC6wD,8BAA8B7wD,GAAG,CAAA,sCAAA,CAAA,CAAA;;;AAInC,IAAA,OAAO,CAAC,CAACg1D,2BAAAA,CAAAA;AACX;;AChOO,IAAA,QAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,QAAAA,CAWT,MAAqB,EAAA;aAAdt7D,MAAAA,GAAAA,MAAAA,CAAAA;aAHCu7D,kBAAyC,GAAA,IAAA,CAAA;AAKjD,QAAA,IAAI,CAACC,gBAAgB,GAAG,IAAIvG,gBAAiBj1D,CAAAA,MAAAA,CAAAA,CAAAA;;AAbpCs7D,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AAgBXG,IAAAA,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAgBjxE,CAAAA,IAAY,EAAElE,KAAa,EAAA;;AAE3C,KAAA,CAAA;AAEAo1E,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAclxE,CAAAA,IAAY,EAAElE,KAAa,EAAA;;AAEzC,KAAA,CAAA;AAEAq1E,IAAAA,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAkBnxE,CAAAA,IAAY,EAAElE,KAAc,EAAA;;AAE9C,KAAA,CAAA;AAEAs1E,IAAAA,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAkBpxE,CAAAA,IAAY,EAAElE,KAAc,EAAA;;AAE9C,KAAA,CAAA;AAEAu1E,IAAAA,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAiBrxE,CAAAA,IAAY,EAAElE,KAAc,EAAA;;AAE7C,KAAA,CAAA;IAEAqqE,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAAC4K,kBAAkB,CAAA;AAChC,KAAA,CAAA;AAEAnW,IAAAA,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,CAAgBxB,WAA+B,EAAA;;AAE/C,KAAA,CAAA;IAEAkY,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAa1tE,CAAAA,CAAS,EAAEjF,CAAS,EAAE8Q,KAAa,EAAEC,MAAc,EAAA;;AAEhE,KAAA,CAAA;AAEA+8C,IAAAA,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAQ8kB,CAAAA,WAAmB,EAAEC,YAAoB,EAAA;;AAEjD,KAAA,CAAA;AAEAta,IAAAA,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,CAAOua,MAA6B,EAAA;;AAEpC,KAAA,CAAA;IAEAhd,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,GAAAA;;QAEE,OAAO,CAAA,CAAA;AACT,KAAA,CAAA;IAEAC,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;;QAEE,OAAO,CAAA,CAAA;AACT,KAAA,CAAA;AAEA;;;AAGC,MACDgd,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,KAAM/xE,CAAQ,EAAA;;AAEd,KAAA,CAAA;AAEA;;MAGAgjE,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;;;MAKAjH,MAAAA,CAAAA,gBAGC,GAHDA,SAAAA,gBAAAA,GAAAA;;QAEE,OAAOh/D,SAAAA,CAAAA;AACT,KAAA,CAAA;AAEAi1E,IAAAA,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAmBv0C,WAAwB,EAAA;;AAE3C,KAAA,CAAA;AAEA49B,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAcvB,MAA2B,EAAA;;AAEzC,KAAA,CAAA;IAEA8I,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAcr0B,CAAAA,QAAkB,EAAE7I,MAAe,EAAE9H,QAAkB,EAAEq0C,YAAgB,EAAA;;AAEvF,KAAA,CAAA;AAEAnX,IAAAA,MAAAA,CAAAA,cASC,GATDA,SAAAA,cAAAA,CACEz6D,IAAY,EACZyP,KAAa,EACbC,MAAc,EACdw7D,WAAmB,EACnBC,MAAkB,EAClBj6D,MAA2B,EAAA;QAE3B,OAAO,IAAI,CAAC8/D,gBAAgB,CAACn1D,GAAG,CAAC7b,IAAMyP,EAAAA,KAAAA,EAAOC,MAAQw7D,EAAAA,WAAAA,EAAaC,MAAQj6D,EAAAA,MAAAA,CAAAA,CAAAA;AAC7E,KAAA,CAAA;AAEA+pD,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAoBmR,EAAe,EAAA;AACjC,QAAA,IAAI,CAAC4E,gBAAgB,CAAC7E,OAAO,CAACC,EAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEA;;;;;MAMAvF,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,KAAM5lD,MAAe,EAAE4wD,WAA+B,EAAEt0C,QAAmB,EAAA;;AAE3E,KAAA,CAAA;IAEAvgB,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;;AAEA,KAAA,CAAA;AAlIW8zD,IAAAA,OAAAA,QAAAA,CAAAA;AAmIZ,CAAA;;AChJD;;;;AAiBC,IACM,IAAA,YAAMgB,GAAN,SAAMA,YAAAA,GAAAA;;;AACHC,IAAAA,IAAAA,CAAAA,SAAAA,GAA6G,EAAC,CAAA;AAEtH;;;;;MAMAC,IAAAA,CAAAA,GAAAA,GAAM,SACJC,SACAC,EAAAA,QAAAA,EAAAA;AAEA,QAAA,IAAI,CAAC,KAAA,CAAKH,SAAS,CAACE,UAAU,EAAE;AAC9B,YAAA,OAAA;AACF,SAAA;QAEA,KAAKF,CAAAA,SAAS,CAACE,SAAAA,CAAU,GAAG,KAAA,CAAKF,SAAS,CAACE,SAAAA,CAAU,CAAC9G,MAAM,CAAC,SAAA,KAAA,EAAA;AAAG+G,YAAAA,IAAU5rD,CAAV4rD,GAAAA,KAAAA,CAAAA,QAAAA,CAAAA;mBAAkB5rD,CAAM4rD,KAAAA,QAAAA,CAAAA;;AAC1F,KAAA,CAAA;AAEA;;;;;;MAOAC,IAAAA,CAAAA,EAAAA,GAAK,SACHF,SAAAA,EACAC,QACAnxE,EAAAA,OAAAA,EAAAA;QAEA,KAAKgxE,CAAAA,SAAS,CAACE,SAAU,CAAA,GAAG,MAAKF,SAAS,CAACE,SAAU,CAAA,IAAI,EAAE,CAAA;AAC3D,QAAA,KAAA,CAAKF,SAAS,CAACE,SAAU,CAAA,CAACvyE,IAAI,CAAC;YAAEwyE,QAAAA,EAAAA,QAAAA;YAAUnxE,OAAAA,EAAAA,OAAAA;AAAQ,SAAA,CAAA,CAAA;QAEnD,OAAO,WAAA;mBAAM,KAAKixE,CAAAA,GAAG,CAACC,SAAWC,EAAAA,QAAAA,CAAAA,CAAAA;;AACnC,KAAA,CAAA;AAEA;;;;MAKAE,IAAAA,CAAAA,IAAAA,GAAO,SACLH,SACAC,EAAAA,QAAAA,EAAAA;QAEA,KAAKC,CAAAA,EAAE,CAACF,SAAAA,EAAWC,QAAU,EAAA;YAAEE,IAAM,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AAC5C,KAAA,CAAA;AAEA;;;;AAIC,MAAA,IAAA,CACDC,OAAO,SAA8BJ,SAAAA,EAAAA;AAAiB31E,QAAAA,IAAAA,IAAAA,IAAAA,GAAAA,SAAAA,CAAAA,MAAAA,EAAAA,IAAAA,GAAAA,IAAAA,KAAAA,CAAAA,IAAAA,GAAAA,CAAAA,GAAAA,IAAAA,GAAAA,CAAAA,GAAAA,CAAAA,CAAAA,EAAAA,IAAAA,GAAAA,CAAAA,EAAAA,IAAAA,GAAAA,IAAAA,EAAAA,IAAAA,EAAAA,CAAAA;AAAAA,YAAAA,IAAAA,CAAAA,IAAAA,GAAAA,CAAAA,CAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,CAAAA;;AACpD,QAAA,IAAA,yBAAA,CAAA;AAAA,QAAA,CAAA,yBAAA,GAAA,OAAKy1E,SAAS,CAACE,UAAU,KAAzB,IAAA,GAAA,KAAA,CAAA,GAAA,yBAAA,CAA2BxkE,OAAO,CAAC,SAAA,KAAA,EAAA;AAAGykE,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,UAAUnxE,OAAAA,GAAAA,KAAAA,CAAAA,OAAAA,CAAAA;YAC9CmxE,QAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CAAY51E,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;YACZ,IAAIyE,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAASqxE,CAAAA,IAAI,EAAE;gBACjB,MAAKJ,CAAAA,GAAG,CAACC,SAAWC,EAAAA,QAAAA,CAAAA,CAAAA;AACtB,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MAAA,IAAA,CACDI,eAAe,SAA8BL,SAAAA,EAAAA;AACpC,QAAA,IAAA,yBAAA,CAAA;QAAP,OAAO,CAAA,CAAA,4BAAA,KAAKF,CAAAA,SAAS,CAACE,SAAU,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzB,yBAA2B3kE,CAAAA,GAAG,CAAC,SAAA,KAAA,EAAA;gBAAG4kE,QAAAA,GAAAA,KAAAA,CAAAA,QAAAA,CAAAA;AAAeA,YAAAA,OAAAA,QAAAA,CAAAA;eAAa,EAAE,CAAA;AACzE,KAAA,CAAA;AACD;;ACxFD;;AAEC,IACM,IAAA,YAAMK,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;AACX5xD,QAAAA,IAAAA,CAAAA,MAAAA,GAAyB,IAAI6xD,cAAAA,EAAAA,CAAAA;AAC7BC,QAAAA,IAAAA,CAAAA,UAAAA,GAAiC,IAAIC,kBAAAA,EAAAA,CAAAA;;AAF1BH,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAIX;;;AAGC,MACDr2C,MAAAA,CAAAA,YAOC,GAPDA,SAAAA,aAAcj/B,GAAc,EAAA;AAC1B,QAAA,IAAIA,IAAI2+B,QAAQ,KAAKT,UAAUp8B,SAAS,CAAC68B,QAAQ,EAAE;AACjD,YAAA,IAAI,CAACjb,MAAM,CAACub,YAAY,CAACj/B,GAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACA,QAAA,IAAIA,IAAI4+B,YAAY,KAAKV,UAAUp8B,SAAS,CAAC88B,YAAY,EAAE;AACzD,YAAA,IAAI,CAAC42C,UAAU,CAACv2C,YAAY,CAACj/B,GAAAA,CAAAA,CAAAA;AAC/B,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDm/B,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,gBAAiBn/B,GAAc,EAAA;AAC7B,QAAA,IAAIA,IAAI2+B,QAAQ,KAAKT,UAAUp8B,SAAS,CAAC68B,QAAQ,EAAE;AACjD,YAAA,IAAI,CAACjb,MAAM,CAACyb,eAAe,CAACn/B,GAAAA,CAAAA,CAAAA;AAC9B,SAAA;AACA,QAAA,IAAIA,IAAI4+B,YAAY,KAAKV,UAAUp8B,SAAS,CAAC88B,YAAY,EAAE;AACzD,YAAA,IAAI,CAAC42C,UAAU,CAACr2C,eAAe,CAACn/B,GAAAA,CAAAA,CAAAA;AAClC,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAi6D,MAAAA,CAAAA,KAGC,GAHDA,SAAAA,KAAAA,GAAAA;QACE,IAAI,CAACv2C,MAAM,CAACu2C,KAAK,EAAA,CAAA;QACjB,IAAI,CAACub,UAAU,CAACvb,KAAK,EAAA,CAAA;AACvB,KAAA,CAAA;AApCWqb,IAAAA,OAAAA,YAAAA,CAAAA;AAqCZ,CAAA,EAAA,CAAA;AAED,IAAMI,yBAAD,WAAL;AAAMA,IAAAA,SAAAA,QAAAA,GAAAA;AACJl2C,QAAAA,IAAAA,CAAAA,UAAAA,GAA0B,EAAE,CAAA;AAC5Bm2C,QAAAA,IAAAA,CAAAA,KAAAA,GAAkC,EAAE,CAAA;;AAFhCD,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AAOJE,IAAAA,MAAAA,CAAAA,IAMC,GANDA,SAAAA,IAAAA,CAAM/uE,EAAU,EAAA;AACd,QAAA,IAAI,CAACgvE,cAAc,CAAC,IAAI,CAACr2C,UAAU,EAAE34B,EAAAA,CAAAA,CAAAA;QAErC,IAAK,IAAI/F,CAAI,GAAA,CAAA,EAAEA,CAAI,GAAA,IAAI,CAAC60E,KAAK,CAACp1E,MAAM,EAACO,CAAK,EAAA,CAAA;AACxC,YAAA,IAAI,CAAC60E,KAAK,CAAC70E,CAAAA,CAAE,CAAC+F,EAAAA,CAAAA,CAAAA;AAChB,SAAA;AACF,KAAA,CAAA;AAEAgvE,IAAAA,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAgBr2C,CAAAA,UAAuB,EAAE34B,EAAU,EAAA;;AAEnD,KAAA,CAAA;AAEAo4B,IAAAA,MAAAA,CAAAA,YAIC,GAJDA,SAAAA,YAAAA,CAAc62C,SAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAACt2C,UAAU,CAACp7B,QAAQ,CAAC0xE,SAAY,CAAA,EAAA;AACxC,YAAA,IAAI,CAACt2C,UAAU,CAAC/8B,IAAI,CAACqzE,SAAAA,CAAAA,CAAAA;AACvB,SAAA;AACF,KAAA,CAAA;AAEA32C,IAAAA,MAAAA,CAAAA,eAMC,GANDA,SAAAA,eAAAA,CAAiB22C,SAAoB,EAAA;AACnC,QAAA,IAAMxxE,QAAQ,IAAI,CAACk7B,UAAU,CAACj7B,OAAO,CAACuxE,SAAAA,CAAAA,CAAAA;QAEtC,IAAIxxE,KAAAA,GAAQ,CAAC,CAAG,EAAA;AACd,YAAA,IAAI,CAACk7B,UAAU,CAACh7B,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAChC,SAAA;AACF,KAAA,CAAA;AAEAyxE,IAAAA,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAASC,CAAAA,MAA4B,EAAEC,MAAc,EAAA;QACnD,IAAML,IAAAA,GAAOI,MAAO3yE,CAAAA,IAAI,CAAC4yE,MAAAA,CAAAA,CAAAA;AAEzB,QAAA,IAAI,CAAC,IAAI,CAACN,KAAK,CAACvxE,QAAQ,CAACwxE,IAAO,CAAA,EAAA;AAC9B,YAAA,IAAI,CAACD,KAAK,CAAClzE,IAAI,CAACmzE,IAAAA,CAAAA,CAAAA;AAClB,SAAA;AACF,KAAA,CAAA;IAEA3b,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACE,IAAI,CAACz6B,UAAU,GAAG,EAAE,CAAA;AACtB,KAAA,CAAA;AA3CIk2C,IAAAA,OAAAA,QAAAA,CAAAA;;AA8CN,IAAMH,+BAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AACJ,IAAA,MAAA,CAASM,cAIR,GAJD,SAASA,cAAgBr2C,CAAAA,UAAuB,EAAE34B,EAAU,EAAA;AAC1D,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAwB24B,UAAY,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAzBs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,SAAAA,CAAUn3C,QAAQ,CAAC93B,EAAAA,CAAAA,CAAAA;AACrB,SAAA;AACF,KAAA,CAAA;AALI0uE,IAAAA,OAAAA,cAAAA,CAAAA;AAAuBG,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA;AAQ7B,IAAMD,mCAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AACJ,IAAA,MAAA,CAASI,cAIR,GAJD,SAASA,cAAgBr2C,CAAAA,UAAuB,EAAE34B,EAAU,EAAA;AAC1D,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAwB24B,UAAY,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAzBs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,SAAAA,CAAUl3C,YAAY,CAAC/3B,EAAAA,CAAAA,CAAAA;AACzB,SAAA;AACF,KAAA,CAAA;AALI4uE,IAAAA,OAAAA,kBAAAA,CAAAA;;;;;;;;;;AAA2BC,CAAAA,QAAAA,CAAAA;;AC4BjC;;;;AAIC,IACM,IAAA,WAAMQ,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,WAkJTv4C,CAAAA,KAAuB,EACvB7lB,KAAY,EAAA;;AAwBiBA,QAAAA,IAAAA,+BAAAA,CAAAA;;AAzK/B;;AAEC,MAAA,KAAA,CACDknB,eAAe,IAAIs2C,YAAAA,EAAAA,CAAAA;AAKnB;;AAEC,MAAA,KAAA,CACDa,KAAQ,GAAA,CAAA,CAAA;AAsBR;;AAEC,MAAA,KAAA,CACDC,OAAU,GAAA,KAAA,CAAA;AAqBV;;AAEC,MAAA,KAAA,CACQC,aAAkC,EAAC,CAAA;AAa5C;;AAEC,MAAA,KAAA,CACQC,aAAwB,EAAE,CAAA;AAKnC;;AAEC,MAAA,KAAA,CACQC,SAAoB,GAAA,CAAA,CAAA;AAK7B;;AAEC,MAAA,KAAA,CACD3K,qBAAwB,GAAA,KAAA,CAAA;AAKxB;;AAEC,MAAA,KAAA,CACSrU,SAAY,GAAA,KAAA,CAAA;AAGtB;;AAEC,MAAA,KAAA,CACOif,MAAS,GAAA,IAAA,CAAA;cACTC,WAAc,GAAA,KAAA,CAAA;AACdC,QAAAA,KAAAA,CAAAA,SAAAA,GAAuB,EAAE,CAAA;AACzBC,QAAAA,KAAAA,CAAAA,MAAAA,GAA6B,EAAE,CAAA;QAwCrC,IAMIh5C,eAAAA,GAAAA,KAAAA,CALFi5C,QAAAA,EAAAA,QAAAA,GAAAA,eAAAA,KAAAA,KAAAA,CAAAA,GAAW,KAKTj5C,GAAAA,eAAAA,EAAAA,YAAAA,GAAAA,KAAAA,CAJFw4C,OAAAA,KAAQ,GAAA,YAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,YAAA,EAAA,sBAAA,GAINx4C,KAHFk5C,CAAAA,eAAAA,EAAAA,eAAkB,GAAA,sBAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,sBAAA,EAClB32C,WAEEvC,KAFFuC,CAAAA,QAAAA,EAAU42C,KAERn5C,GAAAA,KAAAA,CAFQm5C,KAAOtkE,EAAAA,KAAAA,GAEfmrB,KAFenrB,CAAAA,KAAAA,EAAOC,MAEtBkrB,GAAAA,KAAAA,CAFsBlrB,MACxBskE,EAAAA,aAAAA,GACEp5C,KADFo5C,CAAAA,aAAAA,CAAAA;AAGF,QAAA,KAAA,CAAK72C,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,QAAA,KAAA,CAAKA,QAAQ,CAAC3nB,MAAM,CAACy+D,cAAc,CAAA,wBAAA,CAAA,KAAA,CAAA,CAAA,CAAA;QACnC,KAAKN,CAAAA,SAAS,GAAG5+D,KAAAA,CAAM43C,QAAQ,CAAA;AAE/B,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAkBjvD,MAAOkQ,CAAAA,IAAI,CAACmH,KAAAA,CAAM4+C,MAAM,CAAG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlCh4D,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMu4E,UAAan/D,GAAAA,KAAAA,CAAM4+C,MAAM,CAACh4D,GAAI,CAAA,CAAA;YAEpC,IAAcgB,YAAVu3E,CAAAA,UAAAA,EAAsBC,gBAAkB,CAAA,EAAA;gBAC1C,KAAKP,CAAAA,MAAM,CAACl0E,IAAI,CAACw0E,UAAAA,CAAAA,CAAAA;AACnB,aAAA;AACF,SAAA;AAE6Bn/D,QAAAA,IAAAA,qDAAAA,CAAAA;AAA7B,QAAA,KAAA,CAAK8zD,qBAAqB,GAAG9zD,CAAAA,qDAAAA,GAAAA,CAAAA,+BAAAA,GAAAA,KAAAA,CAAMq/D,SAAS,CAACC,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAA9Bt/D,+BAAgC8zD,CAAAA,qBAAqB,YAArD9zD,qDAAyD,GAAA,KAAA,CAAA;AACtF,QAAA,KAAA,CAAKu/D,SAAS,EAAA,CAAGC,WAAW,GAAGx/D,MAAMw/D,WAAW,CAAA;AAEhD,QAAA,IAAIV,QAAU,EAAA;AACZ9+D,YAAAA,KAAAA,CAAMy/D,QAAQ,GAAG,IAAA,CAAA;AACnB,SAAA;AAEA,QAAA,IAAIC,gBAAsC1/D,KAAMq/D,CAAAA,SAAS,CAACM,YAAY,CAAC,CAAE,CAAA,CAAA;AAEzE,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA0B3/D,KAAMq/D,CAAAA,SAAS,CAACM,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA7C5/D,YAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,YAAYiI,EAAE,KAAKhI,MAAMq/D,SAAS,CAACO,aAAa,EAAE;gBACpDF,aAAgB3/D,GAAAA,WAAAA,CAAAA;AAClB,aAAA;AACF,SAAA;QAEAvE,WAAYkkE,CAAAA,aAAAA,CAAAA,CAAAA;;AAGZ,QAAA,KAAA,CAAKG,QAAQ,GAAG,IAAIC,OAAAA,CAAQ,MAAKP,SAAS,EAAA,CAAA,CAAA;AAC1C,QAAA,KAAA,CAAKM,QAAQ,CAACj4D,aAAa,CAAC83D,cAAc13D,EAAE,CAAA,CAAA;QAC5C,KAAK63D,CAAAA,QAAQ,CAAC50E,IAAI,GAAG,UAAA,CAAA;AACrB,QAAA,KAAA,CAAK40E,QAAQ,CAAC71D,QAAQ,GAAG01D,cAAc11D,QAAQ,CAAA;AAC/C,QAAA,KAAA,CAAK61D,QAAQ,CAACE,WAAW,GAAGL,cAAcK,WAAW,CAAA;QACrD,KAAKF,CAAAA,QAAQ,CAAC9/D,WAAW,GAAA,wBAAA,CAAA,KAAA,CAAA,CAAA;;QAGzB,IAAMigE,cAAAA,GAAiBN,cAAch4C,UAAU,CAAA;AAE/C,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA4Bs4C,cAAgB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAjCC,YAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMjC,SAAY,GAAA,KAAA,CAAKuB,SAAS,EAAA,CAAGj0D,UAAU,CAAY20D,aAAAA,CAAAA,CAAAA;AAEzD,YAAA,KAAA,CAAKJ,QAAQ,CAACn4C,UAAU,CAAC/8B,IAAI,CAACqzE,SAAAA,CAAAA,CAAAA;YAC9BA,SAAUpxE,CAAAA,IAAI,GAAG,KAAA,CAAKizE,QAAQ,CAAA;AAChC,SAAA;AACA,QAAA,KAAA,CAAKK,eAAe,GAAG,KAAA,CAAKL,QAAQ,CAACz8C,YAAY,CAAC+8C,oBAAAA,CAAAA,CAAAA;AAElD,QAAA,KAAA,CAAKzlE,KAAK,GAAGA,KAAAA,CAAAA;AACb,QAAA,KAAA,CAAKC,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,KAAA,CAAKylE,WAAW,GAAGrB,eAAAA,CAAAA;QACnB,KAAK/2D,CAAAA,EAAE,GAAG03D,aAAAA,CAAc13D,EAAE,CAAA;AACT03D,QAAAA,IAAAA,wBAAAA,CAAAA;AAAjB,QAAA,KAAA,CAAKjB,SAAS,GAAGiB,CAAAA,2BAAAA,aAAcjB,CAAAA,SAAS,YAAvBiB,wBAA2B,GAAA,CAAA,CAAA;AAC5C,QAAA,KAAA,CAAKt3C,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,QAAA,KAAA,CAAK42C,KAAK,GAAGA,KAAAA,CAAAA;YAEAh/D,gBACDA,EAAAA,gBAAAA,CAAAA;AAFZ,QAAA,KAAA,CAAKqgE,SAAS,GAAG;AACfC,YAAAA,SAAAA,EAAWtgE,CAAAA,gBAAAA,GAAAA,KAAMy+D,CAAAA,SAAS,YAAfz+D,gBAAmB,GAAA,CAAA;AAC9BugE,YAAAA,QAAAA,EAAUvgE,CAAAA,gBAAAA,GAAAA,KAAMwgE,CAAAA,SAAS,YAAfxgE,gBAAmB,GAAA,CAAA;YAC7BygE,WAAa,EAAA,CAAA;YACbC,cAAgB,EAAA,CAAA;AAClB,SAAA,CAAA;AACA,QAAA,KAAA,CAAK5B,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,QAAA,KAAA,CAAKT,KAAK,GAAGA,KAAAA,CAAAA;QACb,KAAKpzE,CAAAA,IAAI,GAAGy0E,aAAAA,CAAcz0E,IAAI,CAAA;QAC9B,KAAKs1C,CAAAA,MAAM,GAAG,IAAIpC,MAAO,CAAA,KAAA,CAAKlzC,IAAI,EAAE,QAAA,CAAA,EAAA,EAC/By0E,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAen/B,MAAM,EAAA;AACxBrQ,YAAAA,MAAAA,EAAQx1B,KAAQC,GAAAA,MAAAA;YAChByjC,UAAY1jC,EAAAA,KAAAA;YACZ2jC,WAAa1jC,EAAAA,MAAAA;;QAEf,KAAKogD,CAAAA,GAAG,GAAG/6C,KAAAA,CAAM+6C,GAAG,CAAA;AACpB,QAAA,KAAA,CAAK4lB,WAAW,GAAG,IAAA,CAAA;AACnB,QAAA,IAAI1B,aAAe,EAAA;AACjB,YAAA,KAAA,CAAKA,aAAa,GAAGA,aAAAA,CAAAA;AACvB,SAAA;AACA,QAAA,KAAA,CAAK2B,iBAAiB,EAAA,CAAA;QA1ObxC,WA4OGyC,CAAAA,aAAa,CAAC,KAAA,CAAKhB,QAAQ,CAAA,CAAA;QACvC,KAAKK,CAAAA,eAAe,CAACY,sBAAsB,CAAC,CAAA,CAAA,CAAA;AAE5ClhE,QAAAA,YAAAA,CAAaE,qBAAqB,CAAOE,wBAAAA,CAAAA,KAAAA,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;;AA/OhCo+D,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AA4RX;;MAGA/zD,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACw1D,QAAQ,CAAC71D,QAAQ,CAAA;AAC/B,KAAA,CAAA;AAEA;;MAGA+2D,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAACC,KAAK,EAAA,CAAA;AACV,QAAA,IAAI,CAACC,WAAW,CAAC,IAAI,CAACxC,SAAS,CAAA,CAAA;AACjC,KAAA,CAAA;AAEA;;;AAGC,MACDyC,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAU10E,KAAa,EAAA;QACrB,IAAI,CAAC4zE,WAAW,GAAG5zE,KAAAA,CAAAA;AACrB,KAAA,CAAA;AAEA;;;MAIA20E,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAACf,WAAW,CAAA;AACzB,KAAA,CAAA;AAEA;;;AAGC,MACDgB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAU/C,KAAa,EAAA;QACrB,IAAI,CAACA,KAAK,GAAGA,KAAAA,CAAAA;AACf,KAAA,CAAA;AAEA;;;;AAIC,MACD/Q,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAYD,OAAgB,EAAA;AAC1B,QAAA,IAAI,CAACwS,QAAQ,CAACvS,UAAU,CAACD,OAAAA,CAAAA,CAAAA;AAC3B,KAAA,CAAA;AAEA;;;MAIAgU,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAAChD,KAAK,CAAA;AACnB,KAAA,CAAA;AAEA;;MAGA/f,MAAAA,CAAAA,IAWC,GAXDA,SAAAA,IAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAACggB,OAAO,IAAI,IAAI,CAACQ,QAAQ,EAAE;AACjC,YAAA,IAAI,CAACiC,OAAO,EAAA,CAAA;AACd,SAAA;AACA,QAAA,IAAI,IAAI,CAACb,eAAe,CAAC55C,aAAa,EAAE;YACtC,IAAI,CAACg7C,OAAO,CAAC,IAAI,CAACppE,IAAI,GAAG,IAAI,CAACumE,SAAS,CAAA,CAAA;AACvC,YAAA,IAAI,CAAC8C,MAAM,EAAA,CAAA;SACN,MAAA;YACL,IAAI,CAACD,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,YAAA,IAAI,CAACC,MAAM,EAAA,CAAA;AACb,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,KAGC,GAHDA,SAAAA,KAAAA,GAAAA;QACE,IAAI,CAAC9C,MAAM,GAAG,IAAA,CAAA;QACd,IAAI,CAACpB,IAAI,CAAC,OAAA,CAAA,CAAA;AACZ,KAAA,CAAA;AAEA;;;MAIAmE,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;QACE,OAAO,IAAI,CAAC/C,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA;;MAGA6C,MAAAA,CAAAA,MAQC,GARDA,SAAAA,MAAAA,GAAAA;QACE,IAAI,CAAC7C,MAAM,GAAG,KAAA,CAAA;AACd,QAAA,IAAI,IAAI,CAACJ,OAAO,IAAI,IAAI,CAACQ,QAAQ,EAAE;AACjC,YAAA,IAAI,CAACiC,OAAO,EAAA,CAAA;AACd,SAAA;QACA,IAAM7oE,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;QAEtB,IAAI,CAAColE,IAAI,CAAC,MAAQ,EAAA;YAAEplE,IAAAA,EAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AAC3B,KAAA,CAAA;AAEA;;;AAGC,MACDwpE,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,YAAaxpE,IAAY,EAAA;QACvB,IAAI,CAACopE,OAAO,CAACppE,IAAAA,CAAAA,CAAAA;QACb,IAAI,CAAColE,IAAI,CAAC,MAAQ,EAAA;YAAEplE,IAAAA,EAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AACzB,QAAA,IAAI,CAACqpE,MAAM,EAAA,CAAA;AACb,KAAA,CAAA;AAEA;;;AAGC,MACDI,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,YAAazpE,IAAY,EAAA;QACvB,IAAI,CAACopE,OAAO,CAACppE,IAAAA,CAAAA,CAAAA;QACb,IAAI,CAAColE,IAAI,CAAC,MAAQ,EAAA;YAAEplE,IAAAA,EAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AACzB,QAAA,IAAI,CAACspE,KAAK,EAAA,CAAA;AACZ,KAAA,CAAA;AAEA;;MAGAZ,MAAAA,CAAAA,iBAOC,GAPDA,SAAAA,iBAAAA,GAAAA;AACE,QAAA,IAAI,CAACv4C,WAAW,GAAG,IAAIwrC,WAAY,CAAA;YACjCtzB,MAAQ,EAAA,IAAI,CAACA,MAAM;YACnBnY,QAAU,EAAA,IAAI,CAACA,QAAQ;YACvBupC,YAAc,EAAA,IAAI,CAACA,YAAY;YAC/BmC,qBAAuB,EAAA,IAAI,CAACA,qBAAqB;AACnD,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDwN,MAAAA,CAAAA,OAaC,GAbDA,SAAAA,QAASppE,IAAY,EAAA;QACnB,IAAMmmE,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;QACxB,IAAMmD,KAAAA,GAAQ,IAAI,CAACC,SAAS,EAAA,CAAA;AAE5B,QAAA,IAAID,KAAO,EAAA;AACT,YAAA,IAAI,CAACD,MAAM,EAAA,CAAA;AACb,SAAA;QACA,IAAI,CAACH,QAAQ,CAAC,CAAA,CAAA,CAAA;AACd,QAAA,IAAI,CAACH,WAAW,CAAC/oE,IAAO,GAAA,IAAI,CAACumE,SAAS,CAAA,CAAA;QACtC,IAAI,CAAC2C,QAAQ,CAAC/C,KAAAA,CAAAA,CAAAA;AACd,QAAA,IAAImD,KAAO,EAAA;YACT,IAAI,CAAC9C,MAAM,GAAG,IAAA,CAAA;AAChB,SAAA;AACF,KAAA,CAAA;AAEAryE,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAASO,IAAa,EAAA;AACpBA,QAAAA,IAAAA,CAAKg1E,SAAS,CAAC,IAAI,CAAC/B,QAAQ,CAAA,CAAA;AAC9B,KAAA,CAAA;AAEA;;;;;AAKC,MACDz8C,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAmC7X,gBAAgC,EAAA;AACjE,QAAA,OAAO,IAAI,CAACs0D,QAAQ,CAACz8C,YAAY,CAAC7X,gBAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AAEA;;;AAGC,MACD,MAAQ01D,CAAAA,WAYP,GAZD,SAAQA,YAAa/oE,IAAY,EAAA;AAC/B,QAAA,IAAMwT,YAAYxT,IAAO,GAAA,IAAA,GAAO,IAAI,CAACA,IAAI,GAAG,IAAA,CAAA;AAC5C,QAAA,IAAMi4B,UAAUzkB,SAAY,GAAA,CAAA,CAAA;AAC5B,QAAA,IAAMphB,IAAO,GAAA,EAAA,CAAA;QACb,IAAId,CAAAA,GAAIgE,IAAKe,CAAAA,GAAG,CAACmd,SAAAA,CAAAA,CAAAA;QACjB,IAAMm2D,EAAAA,GAAK1xC,OAAU,GAAA,CAAC7lC,IAAOA,GAAAA,IAAAA,CAAAA;;AAG7B,QAAA,IAAKd,CAAGA,EAAAA,CAAAA,GAAIc,IAAMd,EAAAA,CAAAA,IAAKc,IAAM,CAAA;YAC3B,IAAI,CAACshB,MAAM,CAACi2D,EAAAA,CAAAA,CAAAA;AACd,SAAA;AACA,QAAA,IAAI,CAACj2D,MAAM,CAACukB,OAAAA,GAAU,CAAC3mC,CAAIA,GAAAA,CAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEA;;MAGA,MAAA,CAAUw3E,KAIT,GAJD,SAAUA,KAAAA,GAAAA;QACR,IAAI,CAAC1C,OAAO,GAAG,KAAA,CAAA;QACf,IAAI,CAACK,WAAW,GAAG,KAAA,CAAA;AACnB,QAAA,IAAI,CAACuB,eAAe,CAAChoE,IAAI,GAAG,CAAA,CAAA;AAC9B,KAAA,CAAA;IAEA4pE,MAAAA,CAAAA,aAAoB,GAApBA,SAAAA,aAAmB,GAAA,EAAA,CAAA;AAEnB;;;AAGC,MACDl2D,MAAAA,CAAAA,MA6BC,GA7BDA,SAAAA,OAAQF,SAAiB,EAAA;QACvB,IAAI,IAAI,CAAC+1D,SAAS,EAAI,EAAA;AACpB,YAAA,OAAA;AACF,SAAA;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC5B,QAAQ,CAACt4C,YAAY,EAAE;YAC/B,IAAI,CAACs4C,QAAQ,CAACkC,KAAK,EAAA,CAAA;YACnB,IAAI,CAAClC,QAAQ,CAACmC,SAAS,EAAA,CAAA;AACzB,SAAA;QAEA,IAAMC,uBAAAA,GAA0B,IAAI,CAAC/pE,IAAI,CAAA;AAEzC,QAAA,IAAI,CAACgqE,qBAAqB,CAACx2D,YAAY,IAAI,CAAC2yD,KAAK,GAAG,IAAA,CAAA,CAAA;QACpD,IAAM8D,aAAAA,GAAgB,CAAC,IAAI,CAACjqE,IAAI,GAAG+pE,uBAAsB,IAAK,IAAA,CAAA;AAE9D,QAAA,IAAI,CAAC/6C,YAAY,CAACtb,MAAM,CAACkyD,IAAI,CAACqE,aAAAA,CAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACj7C,YAAY,CAACw2C,UAAU,CAACI,IAAI,CAACqE,aAAAA,CAAAA,CAAAA;AAElC,QAAA,IAAI,CAACC,YAAY,EAAA,CAAA;AACjB,QAAA,IAAI,CAACN,aAAa,EAAA,CAAA;QAElB,IAAI,IAAI,CAACxD,OAAO,IAAI,CAAC,IAAI,CAACK,WAAW,EAAE;YACrC,IAAI,CAACA,WAAW,GAAG,IAAA,CAAA;YACnB,IAAI,CAACrB,IAAI,CAAC,KAAO,EAAA;AAAEv9D,gBAAAA,WAAAA,EAAa,IAAI;AAAC,aAAA,CAAA,CAAA;AACvC,SAAA;QACA,IAAI,IAAI,CAACsiE,aAAa,EAAI,EAAA;AACxB,YAAA,IAAI,CAACp6D,OAAO,EAAA,CAAA;AACd,SAAA;AACF,KAAA,CAAA;IAEA,MAAQo6D,CAAAA,aAEP,GAFD,SAAQA,aAAAA,GAAAA;AACN,QAAA,OAAO,IAAI,CAAC/D,OAAO,IAAI,IAAI,CAACuB,QAAQ,CAACE,WAAW,KAAKpzD,WAAgB,CAACghD,OAAO,IAAI,CAAC,IAAI,CAACmR,QAAQ,CAAA;AACjG,KAAA,CAAA;AAEA;;;MAIA,MAAA,CAAQsD,YAEP,GAFD,SAAQA,YAAAA,GAAAA;QACN,IAAI,CAAC7hC,MAAM,CAACzB,YAAY,EAAA,CAAA;AAC1B,KAAA,CAAA;AAEA;;AAEC,MACD,MAAQojC,CAAAA,qBAuDP,GAvDD,SAAQA,sBAAuBx2D,SAAiB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAACw0D,eAAe,CAAC5jD,KAAK,KAAKgmD,SAAAA,CAAUC,MAAM,IAAI,CAAC,IAAI,CAACrC,eAAe,CAACv4C,kBAAkB,EAAE;AAC/F,YAAA,OAAA;AACF,SAAA;;QAGA,IAAI66C,SAAAA,GAAY,IAAI,CAACtqE,IAAI,GAAGwT,SAAY,GAAA,IAAI,CAAC+yD,SAAS,CAAA;QAEtD,IAAI/yD,SAAAA,GAAY,CAAK82D,IAAAA,SAAAA,GAAY,CAAG,EAAA;YAClCA,SAAY,GAAA,CAAA,CAAA;AACd,SAAA;AAEA,QAAA,IAAMx4D,QAAW,GAAA,IAAI,CAAC61D,QAAQ,CAAC71D,QAAQ,CAAA;AACvC,QAAA,IAAM+1D,WAAc,GAAA,IAAI,CAACF,QAAQ,CAACE,WAAW,CAAA;AAE7C,QAAA,IAAIzB,OAAU,GAAA,KAAA,CAAA;AAEd,QAAA,IAAIkE,aAAax4D,QAAU,EAAA;YAEzBs0D,OAAU,GAAA,IAAA,CAAA;YAEV,OAAQyB,WAAAA;gBACN,KAAKpzD,WAAgB,CAACo0D,OAAO;AAAE,oBAAA;AAC7ByB,wBAAAA,SAAAA,GAAYA,SAAYx4D,GAAAA,QAAAA,CAAAA;AACxB,wBAAA,IAAI,CAAC+2D,OAAO,EAAA,CAAA;AAEZ,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAKp0D,WAAgB,CAAC81D,MAAM;AAAE,oBAAA;wBAC5BD,SAAYh1E,GAAAA,IAAAA,CAAKI,GAAG,CAACoc,QAAUw4D,EAAAA,SAAAA,CAAAA,CAAAA;AAE/B,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK71D,WAAgB,CAAC+1D,OAAO;AAAE,oBAAA;AAE7B,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK/1D,WAAgB,CAACghD,OAAO;AAAE,oBAAA;AAE7B,wBAAA,MAAA;AACF,qBAAA;AACF,aAAA;AACF,SAAA;QAEA,IAAI,CAACuS,eAAe,CAAChoE,IAAI,GAAGsqE,SAAY,GAAA,IAAI,CAAC/D,SAAS,CAAA;;AAGtD,QAAA,IAAI,IAAI,CAACH,OAAO,KAAKA,OAAS,EAAA;AAC5B,YAAA,IAAIA,OAAS,EAAA;gBACX,IAAI,CAACA,OAAO,GAAG,IAAA,CAAA;aACV,MAAA;gBACL,IAAI,CAACA,OAAO,GAAG,KAAA,CAAA;gBACf,IAAI,CAACK,WAAW,GAAG,KAAA,CAAA;AACrB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDgE,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,cAAe13E,IAAY,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC40E,QAAQ,CAACh8C,IAAI,CAAC54B,IAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEA;;;;;AAKC,MACD23E,OAAAA,aAIC,GAJDA,SAAAA,aAAe/zE,CAAAA,CAAS,EAAEjF,CAAS,EAAA;QACjC,IAAmC,iCAAA,GAAA,IAAI,CAACy+B,WAAW,CAAC2rC,eAAe,EAA3DnlE,CAA2B,GAAA,iCAAA,CAA3BA,GAAMjF,CAAG8E,GAAkB,kCAArB9E,CAAMiJ,EAAGrK,IAAY,iCAAfqK,CAAAA,CAAAA,EAAM+B,CAAG/L,GAAM,iCAAT+L,CAAAA,CAAAA,CAAAA;AAE1B,QAAA,OAAOgwC,gBAAiB,CAAC/1C,CAAAA,CAAAA,GAAIrG,CAAAA,IAAKiG,CAAAA,EAAG,CAAC7E,IAAIf,CAAAA,IAAK6F,CAAG,EAAA,IAAI,CAAC6xC,MAAM,CAAA,CAAA;AAC/D,KAAA,CAAA;AAEA;;;MAIAg/B,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;AACS,QAAA,IAAA,cAAA,CAAA;AAAP,QAAA,OAAA,CAAO,iBAAA,IAAI,CAACn3C,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAb,eAAe3nB,MAAM,CAAA;AAC9B,KAAA,CAAA;AAEA;;;;;;MAOAoiE,MAAAA,CAAAA,OAUC,GAVDA,SAAAA,OAAAA,CAASh0E,CAAS,EAAEjF,CAAS,EAAEisE,KAAe,EAAE7pE,OAAmC,EAAA;QACjF,IAAI,IAAI,CAAC80D,WAAW,IAAI,CAAC,IAAI,CAAC6f,WAAW,EAAE;AACzC,YAAA,OAAO,EAAE,CAAA;AACX,SAAA;AACA,QAAA,IAAMmC,UAAoB,EAAE,CAAA;AAC5B,QAAA,IAAMxuC,GAAM,GAAA,IAAI,CAACsuC,aAAa,CAAC/zE,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;QAElC,IAAI,CAACs2E,eAAe,CAAC2C,OAAO,CAACvuC,GAAKzlC,EAAAA,CAAAA,EAAGjF,CAAGk5E,EAAAA,OAAAA,EAASjN,KAAO7pE,EAAAA,OAAAA,CAAAA,CAAAA;QAExD,OAAO82E,OAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACDC,OAAAA,kBAgBC,GAhBDA,SAAAA,kBAAoBn2E,CAAAA,IAAa,EAAE8R,IAAuB,EAAA;AACxD,QAAA,IAAIA,IAASiO,KAAAA,YAAiB,CAACq2D,OAAO,EAAE;YACtC,IAAI,CAAC/D,aAAa,IAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAACA,aAAa,CAAA,IAAA,CAAlB,IAAI,EAAiB;AACnBh0E,gBAAAA,IAAAA,EAAM2B,KAAK3B,IAAI;AACfg4E,gBAAAA,MAAAA,EAAQt2D,yBAA8B;AACtC3E,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;gBACX43D,aAAe,EAAA,IAAI,CAAC53D,EAAE;AACxB,aAAA,CAAA,CAAA;YACApb,IAAK0wE,CAAAA,IAAI,CAAC,SAAW,EAAA;AACnBryE,gBAAAA,IAAAA,EAAM2B,KAAK3B,IAAI;AACfg4E,gBAAAA,MAAAA,EAAQt2D,yBAA8B;AACtC3E,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;AACb,aAAA,CAAA,CAAA;AAEA,YAAA,OAAOpb,KAAKob,EAAE,CAAA;AAChB,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDk7D,OAAAA,qBAeC,GAfDA,SAAAA,qBAAuBt2E,CAAAA,IAAa,EAAE8R,IAAuB,EAAA;;AAE3D,QAAA,IAAIA,IAASiO,KAAAA,YAAiB,CAACq2D,OAAO,EAAE;YACtC,IAAI,CAAC/D,aAAa,IAAlB,IAAA,GAAA,KAAA,CAAA,GAAA,IAAI,CAACA,aAAa,CAAA,IAAA,CAAlB,IAAI,EAAiB;AACnBh0E,gBAAAA,IAAAA,EAAM2B,KAAK3B,IAAI;AACfg4E,gBAAAA,MAAAA,EAAQt2D,uBAA4B;AACpC3E,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;gBACX43D,aAAe,EAAA,IAAI,CAAC53D,EAAE;AACxB,aAAA,CAAA,CAAA;YACApb,IAAK0wE,CAAAA,IAAI,CAAC,SAAW,EAAA;AACnBryE,gBAAAA,IAAAA,EAAM2B,KAAK3B,IAAI;AACfg4E,gBAAAA,MAAAA,EAAQt2D,uBAA4B;AACpC3E,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;AACb,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACDm7D,MAAAA,CAAAA,WAQC,GARDA,SAAAA,YAAav2E,IAAa,EAAA;;;;;;;;AAQ1B,KAAA,CAAA;AAEA+vE,IAAAA,MAAAA,CAAAA,IAWC,GAXDA,SAAAA,IAAAA,CAAM/xE,CAAQ,EAAA;QACZ,IAAI,CAACw4E,UAAU,GAAG,IAAI,CAACxrB,QAAQ,CAACr/C,GAAG,CAACgsD,SAAAA,GAAAA,EAAAA;YAClC,IAAI,OAAA,IAAWA,GAAIr4C,CAAAA,MAAM,EAAE;AACzBq4C,gBAAAA,GAAAA,CAAIr4C,MAAM,CAACyxC,KAAK,CAAC6jB,KAAK,EAAA,CAAA;AAEtB,gBAAA,OAAOjd,GAAIr4C,CAAAA,MAAM,CAACyxC,KAAK,CAACzzC,WAAW,CAAA;AACrC,aAAA;AACF,SAAA,CAAA,CAAA;AAEA,QAAA,IAAI,CAAC0tC,QAAQ,CAACr/C,GAAG,CAACgsD,SAAAA,GAAAA,EAAAA;AAAOA,YAAAA,OAAAA,GAAAA,CAAIt8C,OAAO,EAAA,CAAA;;AACpC,QAAA,IAAI,CAACA,OAAO,EAAA,CAAA;AACd,KAAA,CAAA;AAEA;;MAGAA,MAAAA,CAAAA,OA4CC,GA5CDA,SAAAA,OAAAA,GAAAA;;QACE,IAAI,IAAI,CAACw3C,SAAS,EAAE;AAClB,YAAA,OAAA;AACF,SAAA;QACA,IAAI,CAACA,SAAS,GAAG,IAAA,CAAA;QAEjB,IAAsB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC7H,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1B+I,YAAAA,IAAAA,OAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,OAAAA,CAAQ14C,OAAO,EAAA,CAAA;AACjB,SAAA;QACA,IAAI,CAAC22D,SAAS,GAAG,EAAE,CAAA;QAEnB,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACC,MAAM,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtBlhB,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,KAAAA,CAAM6jB,KAAK,EAAA,CAAA;AACX7jB,YAAAA,KAAAA,CAAM0lB,eAAe,CAAC,KAAA,CAAA,CAAA;AACtB1lB,YAAAA,KAAAA,CAAMj0C,IAAI,EAAA,CAAA;AACZ,SAAA;QACA,IAAI,CAACm1D,MAAM,GAAG,EAAE,CAAA;QAEhB,IAAI,CAACgB,QAAQ,CAAC53D,OAAO,EAAA,CAAA;;QAErB,IAAI,CAACogB,WAAW,CAACpgB,OAAO,EAAA,CAAA;QACxBrI,YAAaO,CAAAA,kBAAkB,CAAC,IAAI,CAAA,CAAA;QAEpC,IAAI,CAACyL,MAAM,GAAG,WAAA;AACZ,YAAgB;AACdpP,gBAAAA,MAAAA,CAAOxV,KAAK,CAAE,+BAA+B,GAAA,KAAA,CAAKiE,IAAI,GAAC,GAAA,CAAA,CAAA;AACzD,aAAA;AACF,SAAA,CAAA;QAEA,IAAI,CAACgd,OAAO,GAAGvL,IAAAA,CAAAA;AACf,QAAA,IAAI,CAAC0rB,QAAQ,CAAC3nB,MAAM,CAAC6iE,iBAAiB,CAAC,IAAI,CAAA,CAAA;AAE3C,QAAA,IAAI,IAAI,CAAC/D,SAAS,EAAGgE,CAAAA,GAAG,KAAKliC,yBAA2B,EAAA;AACtD,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACjZ,QAAQ,CAAC+5B,KAAK,CAAC;AAClB6D,YAAAA,aAAAA,EAAe3O,kBAAkB8K,KAAK;YACtCqhB,YAAc,EAAA,CAAA;AACdzd,YAAAA,WAAAA,EAAa1O,kBAAkB8K,KAAK;YACpCshB,UAAY,EAAA,CAAA;AACZ3d,YAAAA,WAAAA,EAAazO,kBAAkB8K,KAAK;YACpCuhB,UAAY,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA;AAC1B,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA;;;;;;MAOAC,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,mBAAoB3yE,KAAa,EAAEiB,EAAU,EAAEC,EAAU,EAAA;QACvD,IAAI,CAACm2B,WAAW,CAAC2rC,eAAe,CAAChmE,GAAG,CAACgD,KAAOA,EAAAA,KAAAA,EAAOiB,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AACzD,KAAA,CAAA;AAEA;;AAEC,MACD0xE,OAAAA,gBAOC,GAPDA,SAAAA,gBAAkB/0E,CAAAA,CAAS,EAAEjF,CAAS,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAACw+B,QAAQ,EAAE;AAClB93B,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,2CAAA,CAAA,CAAA;AAEb,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACwjE,QAAQ,CAAC+D,gBAAgB,CAAC/0E,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AAEA;;;;;;;AAOC,MACDi6E,OAAAA,kBAOC,GAPDA,SAAAA,kBAAoBh1E,CAAAA,CAAS,EAAEjF,CAAS,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAACw+B,QAAQ,EAAE;AAClB93B,YAAAA,OAAAA,CAAQ+L,IAAI,CAAC,2CAAA,CAAA,CAAA;AAEb,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACwjE,QAAQ,CAACgE,kBAAkB,CAACh1E,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA;;MAGAsqC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAWrlC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACxC,QAAA,IAAI,CAACgtE,QAAQ,CAAC3rC,SAAS,CAACrlC,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEA;;MAGA+kB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAa/oB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AAC1C,QAAA,IAAI,CAACgtE,QAAQ,CAACjoD,WAAW,CAAC/oB,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AAEA;;MAGAohC,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAQplC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACrC,QAAA,IAAI,CAACgtE,QAAQ,CAAC5rC,MAAM,CAACplC,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEA;;MAGAglB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAahpB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AAC1C,QAAA,IAAI,CAACgtE,QAAQ,CAAChoD,WAAW,CAAChpB,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AACA;;MAGA7B,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,MAAOnC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACpC,QAAA,IAAI,CAACgtE,QAAQ,CAAC7uE,KAAK,CAACnC,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEA;;MAGAklB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAUlpB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACvC,QAAA,IAAI,CAACgtE,QAAQ,CAAC9nD,QAAQ,CAAClpB,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAC/B,KAAA,CAAA;AAEA;;MAGAixE,MAAAA,CAAAA,cAKC,GALDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAACC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAACnsB,QAAQ,CAACl/C,OAAO,CAAC6rD,SAAAA,GAAAA,EAAAA;AAAOA,gBAAAA,OAAAA,GAAAA,IAAOA,IAAI1E,WAAW,EAAA,CAAA;;YACnD,IAAI,CAACkkB,gBAAgB,GAAG,IAAA,CAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA;;MAGA,MAAA,CAAMC,aAKL,GALD,SAAMA,aAAAA,GAAAA;;eAAN,mBAAA,CAAA,WAAA;;;;AACM,wBAAA,IAAA,CAAA,KAAA,CAAKD,gBAAgB,EAArB,OAAA;;;;AACF,wBAAA,OAAA;;AAAM78E,4BAAAA,OAAAA,CAAQqZ,GAAG,CAAC,KAAA,CAAKq3C,QAAQ,CAACr/C,GAAG,CAACgsD,SAAAA,GAAAA,EAAAA;AAAOA,gCAAAA,OAAAA,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAKzE,UAAU,EAAA,CAAA;;;;AAA1D,wBAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AACA,wBAAA,KAAA,CAAKikB,gBAAgB,GAAG,KAAA,CAAA;;;;;;;;AAE5B,SAAA,CAAA,EAAA,CAAA;;AAtuBA;;;AAGC,MACD,WAAOlD,CAAAA,aAqBN,GArBD,SAAOA,cAAeoD,WAAoB,EAAA;AACxC,QAAA,IAAMC,UAAU,IAAIh+D,GAAAA,EAAAA,CAAAA;AACpB,QAAA,IAAMi+D,YAAeF,GAAAA,WAAAA,CAAY7gD,YAAY,CAAC+8C,sBAAsBjxB,KAAK,CAAA;AAEzE,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBi1B,YAAc,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtBv3E,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTs3E,YAAAA,OAAAA,CAAQl2E,GAAG,CAACpB,IAAKob,CAAAA,EAAE,EAAEpb,IAAAA,CAAAA,CAAAA;AACvB,SAAA;AAEA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAmBu3E,YAAc,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtBv3E,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,KAAAA,CAAKw3E,QAAQ,KAAKz8E,SAAW,EAAA;AAC/BiF,gBAAAA,KAAAA,CAAKg1E,SAAS,CAACqC,WAAAA,CAAAA,CAAAA;aACV,MAAA;AACL,gBAAA,IAAM98D,MAAS+8D,GAAAA,OAAAA,CAAQp9D,GAAG,CAACla,MAAKw3E,QAAQ,CAAA,CAAA;AAExC,gBAAA,IAAIj9D,MAAQ,EAAA;AACVva,oBAAAA,KAAAA,CAAKg1E,SAAS,CAACz6D,MAAAA,CAAAA,CAAAA;iBACV,MAAA;AACL,oBAAA,MAAM,IAAInc,KAAM,CAAA,uEAAA,CAAA,CAAA;AAClB,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AA1IWozE,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YAqPP9mD,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACuoD,QAAQ,CAACvoD,SAAS,CAAA;AAChC,aAAA;;;YAKIsgC,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACgnB,SAAS,CAAA;AACvB,aAAA;;;YAKI1vB,GAAAA,EAAAA,OAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAAC2wB,QAAQ,CAACwE,cAAc,EAAA,CAAA;AACrC,aAAA;;;YAKInsE,GAAAA,EAAAA,MAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACgoE,eAAe,CAAChoE,IAAI,CAAA;AAClC,aAAA;;;YAKI4oD,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACrB,SAAS,CAAA;AACvB,aAAA;;;YAEInhB,GAAAA,EAAAA,gBAAAA;AAGJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACiC,MAAM,CAACvB,iBAAiB,EAAA,CAAA;AACtC,aAAA;AALA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAoB1O,MAAe,EAAA;AACjC,gBAAA,IAAI,CAACiQ,MAAM,CAACxB,iBAAiB,CAACzO,MAAAA,CAAAA,CAAAA;AAChC,aAAA;;;AAvRW8tC,IAAAA,OAAAA,WAAAA,CAAAA;EAAoBrB,YAw1BhC;;ACj8BM,IAAA,OAAM+C,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,aAAAA,CAAAA,CAAAA;aAAAA,OA6ITr/D,CAAAA,MAAc,EACdolB,KAAiB,EAAA;;AAEXplB,QAAAA,KAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AA3IR;;AAEC,MAAA,KAAA,CACDi5B,WAAsB,EAAE,CAAA;AACxB;;AAEC,MAAA,KAAA,CACDpiB,YAAuB,IAAIikB,SAAAA,EAAAA,CAAAA;AAC3B;;AAEC,MAAA,KAAA,CACDrjC,OAAO,CAAC,CAAA,CAAA;AACR;;AAEC,MAAA,KAAA,CACD8R,QAAW,GAAA,CAAA,CAAA;AAKX;;AAEC,MAAA,KAAA,CACD+1D,WAAgCpzD,GAAAA,WAAgB,CAAC+1D,OAAO,CAAA;cAUxDhkE,IAAsBiO,GAAAA,QAAa,CAACpR,IAAI,CAAA;AAExCmsB,QAAAA,KAAAA,CAAAA,UAAAA,GAA0B,EAAE,CAAA;cAC5BH,YAAe,GAAA,KAAA,CAAA;AAEf;;AAEC,MAAA,KAAA,CACO4rC,MAAS,GAAA,IAAA,CAAA;AACjB;;AAEC,MAAA,KAAA,CACO9F,OAAU,GAAA,IAAA,CAAA;cACViX,SAAY,GAAA,CAAA,CAAA;cACZC,SAAY,GAAA,KAAA,CAAA;AACZC,QAAAA,KAAAA,CAAAA,cAAAA,GAA0C,IAAIzH,YAAAA,EAAAA,CAAAA;AA4FpD,QAAA,KAAA,CAAK9xE,IAAI,GAAG,SAAA,CAAA;AACZ,QAAA,KAAA,CAAKqsB,SAAS,CAACrsB,IAAI,GAAG,MAAKA,IAAI,CAAA;QAC/B,KAAKqsB,CAAAA,SAAS,CAAC7W,MAAM,GAAGA,MAAAA,CAAAA;AACxB,QAAA,IAAIolB,KAAO,EAAA;AACT,YAAA,KAAA,CAAK9d,QAAQ,CAAC8d,KAAAA,CAAAA,CAAAA;AAChB,SAAA;;;AAtJSi6C,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAqMX;;;;;;MAOA1C,MAAAA,CAAAA,EAMC,GANDA,SAAAA,GACEF,SAAY,EACZC,QAA4C,EAC5CnxE,OAA6B,EAAA;AAE7B,QAAA,IAAI,CAACw4E,cAAc,CAACpH,EAAE,CAACF,WAAWC,QAAUnxE,EAAAA,OAAAA,CAAAA,CAAAA;AAC9C,KAAA,CAAA;AAEA;;;;;AAKC,MACDixE,OAAAA,GAKC,GALDA,SAAAA,GACEC,CAAAA,SAAY,EACZC,QAA4C,EAAA;AAE5C,QAAA,IAAI,CAACqH,cAAc,CAACvH,GAAG,CAACC,SAAWC,EAAAA,QAAAA,CAAAA,CAAAA;AACrC,KAAA,CAAA;AAEA;;;;AAIC,MACDE,OAAAA,IAKC,GALDA,SAAAA,IACEH,CAAAA,SAAY,EACZC,QAA4C,EAAA;AAE5C,QAAA,IAAI,CAACqH,cAAc,CAACnH,IAAI,CAACH,SAAWC,EAAAA,QAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA;;;;AAIC,MACDG,MAAAA,CAAAA,IAKC,GALDA,SAAAA,KACEJ,SAAY,EAAA;AACZ,QAAA,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAA,IAAA,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,OAAA,IAAA,EAAA,IAAA,EAAA,CAAA;AAAG31E,YAAAA,IAAAA,CAAH,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAqB,CAAA,CAAA;;AAErB,QAAA,IAAA,oBAAA,CAAA;AAAA,QAAA,CAAA,uBAAA,IAAI,CAACi9E,cAAc,EAAClH,IAAI,CAAxB,KAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,MAAA,CAAA;AAAyBJ,YAAAA,SAAAA;AAAc31E,SAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AAEA;;;;AAIC,MACDg2E,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAyCL,SAAY,EAAA;AACnD,QAAA,OAAO,IAAI,CAACsH,cAAc,CAACjH,YAAY,CAACL,SAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AAEA;;;AAGC,MACD/1C,MAAAA,CAAAA,YAOC,GAPDA,SAAAA,aAAmC5b,gBAAgC,EAAA;AACjE,QAAA,IAAMk5D,YAAe,GAAA,IAAIl5D,gBAAiB,CAAA,IAAI,CAAC9K,MAAM,CAAA,CAAA;AAErD,QAAA,IAAI,CAACinB,UAAU,CAAC/8B,IAAI,CAAC85E,YAAAA,CAAAA,CAAAA;QACrBA,YAAan9C,CAAAA,UAAU,CAAC,IAAI,CAAA,CAAA;QAE5B,OAAOm9C,YAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACDrhD,MAAAA,CAAAA,YAYC,GAZDA,SAAAA,aAAmC7X,gBAAgC,EAAA;QACjE,IAAIgI,GAAAA,CAAAA;QAEJ,IAAkB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACmU,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBg9C,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAO98E,YAAH88E,CAAAA,GAAAA,EAAen5D,gBAAkB,CAAA,EAAA;gBACnCgI,GAAMmxD,GAAAA,GAAAA,CAAAA;AAEN,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAOnxD,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACDoxD,MAAAA,CAAAA,aAUC,GAVDA,SAAAA,cAAoCp5D,gBAAgC,EAAA;AAClE,QAAA,IAAMgI,MAAM,EAAE,CAAA;QAEd,IAAkB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACmU,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBg9C,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAO98E,YAAH88E,CAAAA,GAAAA,EAAen5D,gBAAkB,CAAA,EAAA;AACnCgI,gBAAAA,GAAAA,CAAI5oB,IAAI,CAAC+5E,GAAAA,CAAAA,CAAAA;AACX,aAAA;AACF,SAAA;QAEA,OAAOnxD,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEA8wD,IAAAA,MAAAA,CAAAA,cAMC,GANDA,SAAAA,cAAgBO,CAAAA,qBAA+B,EAAEC,SAAsC,EAAA;AACrF,QAAA,IAAMC,UAAqB,EAAE,CAAA;AAE7B,QAAA,IAAI,CAACC,sBAAsB,CAACD,OAAAA,EAASF,qBAAuBC,EAAAA,SAAAA,CAAAA,CAAAA;QAE5D,OAAOC,OAAAA,CAAAA;AACT,KAAA,CAAA;AAEAlD,IAAAA,MAAAA,CAAAA,SAiBC,GAjBDA,SAAAA,SAAAA,CAAWoD,OAAgB,EAAA;AACzB,QAAA,IAAIA,OAAY,KAAA,IAAI,IAAI,CAACA,OAAS,EAAA;AAChC,YAAA,OAAA;AACF,SAAA;QACA,IAAI,IAAI,CAAC79D,MAAM,EAAE;AACf5a,YAAAA,UAAAA,CAAW,IAAI,CAAC4a,MAAM,CAACuyB,QAAQ,EAAE,IAAI,CAAA,CAAA;AACvC,SAAA;QACA,IAAI,CAACvyB,MAAM,GAAG69D,OAAAA,CAAAA;AACd,QAAA,IAAI,CAAC1tD,SAAS,CAAC2kB,eAAe,GAAG+oC,QAAQ1tD,SAAS,CAAA;AAClD0tD,QAAAA,OAAAA,CAAQtrC,QAAQ,CAAC/uC,IAAI,CAAC,IAAI,CAAA,CAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAACoV,WAAW,IAAIilE,OAAAA,CAAQjlE,WAAW,EAAE;AAC5C,YAAA,IAAI,CAACA,WAAW,GAAGilE,OAAAA,CAAQjlE,WAAW,CAAA;AACxC,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACwnB,YAAY,IAAIy9C,OAAAA,CAAQz9C,YAAY,EAAE;AAC9C,YAAA,IAAI,CAACw6C,KAAK,EAAA,CAAA;AACV,YAAA,IAAI,CAACC,SAAS,EAAA,CAAA;AAChB,SAAA;AACF,KAAA,CAAA;AAEA;;;;;;;;AAQC,MACD9W,MAAAA,CAAAA,QACC,GADDA,SAAAA,QAAUxiE,CAAAA,CAAS,EAAEmB,CAAS,EAAE6E,CAAS,EAAED,CAAS,EACpD,EAAA,CAAA;AAEA;;;;;AAKC,MACDw2E,OAAAA,UACC,GADDA,SAAAA,UAAAA,CAAYC,OAAe,EAC3B,EAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,SAKC,GALDA,SAAAA,UAAWp+E,KAAc,EAAA;AACvB,QAAA,IAAI,IAAI,CAACosE,MAAM,KAAK,CAAC,CAACpsE,KAAO,EAAA;AAC3B,YAAA,IAAI,CAACosE,MAAM,GAAG,CAAC,CAACpsE,KAAAA,CAAAA;AAChB,YAAA,IAAI,CAACq+E,eAAe,EAAA,CAAA;AACtB,SAAA;AACF,KAAA,CAAA;AAeA;;AAEC,MACD9X,MAAAA,CAAAA,UAKC,GALDA,SAAAA,WAAYD,OAAgB,EAAA;QAC1B,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC3lC,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,SAAAA,CAAUv2C,OAAO,GAAG4lC,OAAAA,CAAAA;AACtB,SAAA;QACA,IAAI,CAACA,OAAO,GAAGA,OAAAA,CAAAA;AACjB,KAAA,CAAA;AASA;;;MAIAE,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;QACE,OAAO,IAAI,CAACF,OAAO,CAAA;AACrB,KAAA,CAAA;AAEA;;;;AAIC,MACDgY,MAAAA,CAAAA,iBAQC,GARDA,SAAAA,kBAAmB/tD,SAAqB,EAAA;AACtC,QAAA,IAAMguD,EAAKhuD,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,SAAa,GAAA,IAAIikB,SAAU,CAAA;YACpCI,KAAO,EAAA,IAAA;AACT,SAAA,CAAA,CAAA;AAEA2pC,QAAAA,EAAAA,CAAG5nC,eAAe,CAAC,IAAI,CAACpmB,SAAS,CAAC4lB,cAAc,EAAA,CAAA,CAAA;QAEhD,OAAOooC,EAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;MAGApxC,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAWrlC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACxC,QAAA,IAAI,CAACykB,SAAS,CAAC4c,SAAS,CAACrlC,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AACjC,KAAA,CAAA;AACA;;MAGAohC,MAAAA,CAAAA,MAMC,GANDA,SAAAA,OAAQplC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACrC,QAAA,IAAMe,KAAQ,GAAA,IAAI49B,KAAM3iC,CAAAA,CAAAA,EAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;QAC9B,IAAMmB,CAAAA,GAAIqb,UAAW0E,CAAAA,SAAS,CAACngB,KAAAA,CAAAA,CAAAA;AAE/BI,QAAAA,CAAAA,CAAEsd,SAAS,EAAA,CAAA;AACX,QAAA,IAAI,CAACgG,SAAS,CAAC+kB,YAAY,CAACroC,CAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;AACA;;MAGAhD,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,MAAOnC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACpC,QAAA,IAAI,CAACykB,SAAS,CAACglB,OAAO,CAACztC,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAC/B,KAAA,CAAA;AAEA;;MAGA+kB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAa/oB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AAC1C,QAAA,IAAI,CAACykB,SAAS,CAACM,WAAW,CAAC/oB,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AACA;;MAGAglB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAahpB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AAC1C,QAAA,IAAI,CAACykB,SAAS,CAACO,WAAW,CAAChpB,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AACA;;MAGAklB,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAUlpB,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACvC,QAAA,IAAI,CAACykB,SAAS,CAACS,QAAQ,CAAClpB,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEA;;;;;MAMA0qC,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,iBAAkB1uC,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AAC/C,QAAA,IAAI,CAACykB,SAAS,CAACimB,gBAAgB,CAAC1uC,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AAEA;;;;;;;AAOC,MACDgxE,OAAAA,kBAQC,GARDA,SAAAA,kBAAoBh1E,CAAAA,CAAS,EAAEjF,CAAS,EAAA;QACtC,IAAI,IAAI,CAACmW,WAAW,EAAE;AACpB,YAAA,IAAM,CAAQ,GAAA,IAAI,CAACuX,SAAS,CAAC+lB,gBAAgB,EAArCxqC,CAAAA,CAAAA,CAAAA;AACR,YAAA,IAAyB,6CAAA,IAAI,CAACkN,WAAW,CAACwgC,MAAM,CAACZ,iBAAiB,CAAC9sC,CAAAA,CAAAA,EAA3DhE,EAAiB,GAAA,0CAAA,CAAjBA,CAAOjF,EAAG27E,KAAO,0CAAV37E,CAAAA,CAAAA,CAAAA;AACf,YAAA,IAA0B,wDAAA,GAAA,IAAI,CAACmW,WAAW,CAACw/D,SAAS,EAAA,CAAGliE,MAAM,CAACmoE,qBAAqB,EAA3E9qE,EAAAA,KAAAA,GAAkB,wDAAlBA,CAAAA,KAAAA,EAAOC,SAAW,wDAAXA,CAAAA,MAAAA,CAAAA;YAEf,IAAI,CAAC2c,SAAS,CAACM,WAAW,CAAC,CAAC,IAAI/oB,CAAI6L,GAAAA,KAAAA,GAAQ,CAAA,IAAK+qE,EAAAA,EAAI,CAAC,CAAA,GAAI,IAAI77E,CAAI+Q,GAAAA,MAAK,IAAK4qE,EAAI1yE,EAAAA,CAAAA,CAAAA,CAAAA;AAClF,SAAA;AACF,KAAA,CAAA;AAEA+wE,IAAAA,MAAAA,CAAAA,gBAQC,GARDA,SAAAA,gBAAkB/0E,CAAAA,CAAS,EAAEjF,CAAS,EAAA;QACpC,IAAI,IAAI,CAACmW,WAAW,EAAE;AACpB,YAAA,IAA0B,wDAAA,GAAA,IAAI,CAACA,WAAW,CAACw/D,SAAS,EAAA,CAAGliE,MAAM,CAACmoE,qBAAqB,EAA3E9qE,EAAAA,KAAAA,GAAkB,wDAAlBA,CAAAA,KAAAA,EAAOC,SAAW,wDAAXA,CAAAA,MAAAA,CAAAA;AACf,YAAA,IAAM,CAAQ,GAAA,IAAI,CAAC2c,SAAS,CAAC+lB,gBAAgB,EAArCxqC,CAAAA,CAAAA,CAAAA;AACR,YAAA,IAAyB,6CAAA,IAAI,CAACkN,WAAW,CAACwgC,MAAM,CAACZ,iBAAiB,CAAC9sC,CAAAA,CAAAA,EAA3DhE,EAAiB,GAAA,0CAAA,CAAjBA,CAAOjF,EAAG27E,KAAO,0CAAV37E,CAAAA,CAAAA,CAAAA;AAEf,YAAA,IAAI,CAAC0tB,SAAS,CAAC4c,SAAS,CAAC,CAAA,GAAIrlC,CAAI42E,GAAAA,EAAAA,GAAK/qE,KAAO,EAAA,CAAC,CAAI9Q,GAAAA,CAAAA,GAAI27E,KAAK5qE,MAAQ,EAAA,CAAA,CAAA,CAAA;AACrE,SAAA;AACF,KAAA,CAAA;AAEA;;;MAIAggC,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEA;;;;AAIC,MACD+qC,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,iBAAkB7P,KAAe,EAAA;;AAEjC,KAAA,CAAA;AAEA;;MAGA8P,MAAAA,CAAAA,kBAMC,GANDA,SAAAA,kBAAAA,GAAAA;AACE,QAAA,IAAM/lC,MAAM,IAAIhtC,OAAAA,EAAAA,CAAAA;AAEhB,QAAA,IAAI,CAAC0kB,SAAS,CAACmmB,cAAc,CAACmC,GAAAA,CAAAA,CAAAA;QAE9B,OAAOA,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEA/b,IAAAA,MAAAA,CAAAA,IAqBC,GArBDA,SAAAA,IAAAA,CAAM54B,IAAY,EAAA;AAOhB26E,QAAAA,IAAAA,MAAAA,CAAAA;AANA,QAAA,IAAI,IAAI,CAAC36E,IAAI,KAAKA,IAAM,EAAA;AACtB,YAAA,OAAO,IAAI,CAAA;AACb,SAAA;AAEA,QAAA,IAAM26E,QAAmB,EAAE,CAAA;QAE3BA,CAAAA,MAAAA,GAAAA,OAAMj7E,IAAI,CAAVi7E,MAAAA,MAAc,EAAA,EAAA,CAAA,MAAA,CAAA,IAAI,CAAClsC,QAAQ,CAAA,CAAA,CAAA;AAC3B,QAAA,IAAIltC,KAAQ,GAAA,CAAA,CAAA;QAEZ,MAAOA,KAAAA,GAAQo5E,KAAMn9E,CAAAA,MAAM,CAAE;AAO3Bm9E,YAAAA,IAAAA,OAAAA,CAAAA;YANA,IAAMh5E,IAAAA,GAAOg5E,KAAK,CAACp5E,KAAM,CAAA,CAAA;AAEzBA,YAAAA,KAAAA,EAAAA,CAAAA;YACA,IAAII,IAAAA,CAAK3B,IAAI,KAAKA,IAAM,EAAA;gBACtB,OAAO2B,IAAAA,CAAAA;AACT,aAAA;AACAg5E,YAAAA,CAAAA,UAAAA,KAAMj7E,EAAAA,IAAI,CAAVi7E,KAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,MAAAA,CAAch5E,KAAK8sC,QAAQ,CAAA,CAAA,CAAA;AAC7B,SAAA;QAEA,OAAO/xC,SAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;MAKAk+E,MAAAA,CAAAA,SAgBC,GAhBDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAMC,sBAAkD,IAAI5/D,GAAAA,EAAAA,CAAAA;QAE5D,IAAI,CAAC6/D,sBAAsB,CAACD,mBAAAA,CAAAA,CAAAA;;AAE5B,QAAA,IAAI,CAACE,SAAS,EAAA,CAAA;AACd,QAAA,IAAMC,UAAU,IAAI,CAACxlE,MAAM,CAAC6K,UAAU,CAAU;AAAEtD,YAAAA,EAAAA,EAAI,IAAI,CAACP,UAAU,CAACO,EAAE;AAAC,SAAA,CAAA,CAAA;AAEzEi+D,QAAAA,OAAAA,CAAQD,SAAS,EAAA,CAAA;QACjB,IAAI,CAACA,SAAS,CAACF,mBAAAA,CAAAA,CAAAA;QAEf,IAAI,IAAI,CAAC/lE,WAAW,EAAE;AACpBkmE,YAAAA,OAAAA,CAAQrE,SAAS,CAAC,IAAI,CAAC7hE,WAAW,CAAC8/D,QAAQ,CAAA,CAAA;AAC7C,SAAA;QAEA,OAAOoG,OAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;MAGAjE,MAAAA,CAAAA,SAYC,GAZDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACz6C,YAAY,GAAG,IAAA,CAAA;AAEpB,QAAA,IAAI,IAAI,CAACxnB,WAAW,IAAI,IAAI,CAACozD,MAAM,IAAI,CAAC,IAAI,CAACoR,SAAS,EAAE;AACtD,YAAA,IAAI,CAAC79C,QAAQ,EAAA,CAAA;AACf,SAAA;QAEA,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACgT,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACA,KAAMpV,CAAAA,YAAY,EAAE;AACvBoV,gBAAAA,KAAAA,CAAMqlC,SAAS,EAAA,CAAA;AACjB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAD,MAAAA,CAAAA,KAUC,GAVDA,SAAAA,KAAAA,GAAAA;QACE,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACr6C,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACA,SAAU33C,CAAAA,aAAa,EAAE;AAC5B23C,gBAAAA,SAAAA,CAAUv3C,OAAO,EAAA,CAAA;AACjBu3C,gBAAAA,SAAAA,CAAU33C,aAAa,GAAG,IAAA,CAAA;AAC5B,aAAA;AACF,SAAA;QACA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACqT,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,KAAAA,CAAMolC,KAAK,EAAA,CAAA;AACb,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAqD,MAAAA,CAAAA,eAMC,GANDA,SAAAA,eAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAACb,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC79C,QAAQ,EAAA,CAAA;SACR,MAAA;AACL,YAAA,IAAI,CAACC,SAAS,EAAA,CAAA;AAChB,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAD,MAAAA,CAAAA,QAaC,GAbDA,SAAAA,QAAAA,GAAAA;QACE,IAAI,CAAC69C,SAAS,GAAG,IAAA,CAAA;QACjB,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC78C,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,UAAUv2C,OAAO,IAAI,CAACu2C,SAAAA,CAAU13C,aAAa,EAAE;AACjD03C,gBAAAA,SAAAA,CAAUp3C,OAAO,EAAA,CAAA;AACjBo3C,gBAAAA,SAAAA,CAAU13C,aAAa,GAAG,IAAA,CAAA;AAC5B,aAAA;AACF,SAAA;QACA,IAAwB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACoB,UAAU,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,WAAUv2C,OAAO,IAAI,CAACu2C,UAAAA,CAAUz3C,cAAc,EAAE;AAClDy3C,gBAAAA,UAAAA,CAAU/2C,MAAM,EAAA,CAAA;AAClB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAN,MAAAA,CAAAA,SAOC,GAPDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAAC49C,SAAS,GAAG,KAAA,CAAA;QACjB,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC78C,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,SAAUv2C,CAAAA,OAAO,IAAIu2C,SAAAA,CAAUz3C,cAAc,EAAE;AACjDy3C,gBAAAA,SAAAA,CAAU52C,OAAO,EAAA,CAAA;AACnB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASrf,QAkDR,GAlDD,SAASA,QAAAA,CAAUnN,IAAsB,EAAA;AACvC,QAAA,aAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;QACf,IACEoN,EAAAA,GAEEpN,KAFFoN,EAAI/c,EAAAA,IAAAA,GAEF2P,KAFE3P,IAAMm5E,EAAAA,QAAAA,GAERxpE,KAFQwpE,QAAUrE,EAAAA,WAAAA,GAElBnlE,KAFkBmlE,WAAazoD,EAAAA,SAAAA,GAE/B1c,KAF+B0c,SAE/B1c,EAAAA,cAAAA,GAAAA,IAAAA,CADFoP,UAAAA,QAAW,GAAA,cAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,cAAA,EAAA,aAAA,GACTpP,IADYyyD,CAAAA,OAAAA,EAAAA,OAAU,GAAA,aAAA,KAAA,KAAA,CAAA,GAAA,IAAA,GAAA,aAAA,CAAA;QAG1B,IAAI,CAACxnC,KAAK,GAAGjrB,IAAAA,CAAAA;AACb,QAAA,IAAI,CAAC8D,IAAI,GAAG9D,IAAAA,CAAK8D,IAAI,CAAA;AACrB,QAAA,IAAI,CAACsJ,EAAE,GAAGA,EAAGvc,CAAAA,QAAQ;QACrB,IAAI,CAACR,IAAI,GAAGA,IAAAA,CAAAA;AAEZ,QAAA,IAAIqsB,SAAW,EAAA;AACb,YAAA,IAAI,CAACA,SAAS,CAACvP,QAAQ,CAACuP,SAAAA,CAAAA,CAAAA;AAC1B,SAAA;AAEA,QAAA,IAAI,CAACA,SAAS,CAACrsB,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;AAC/B,QAAA,IAAI,CAACqsB,SAAS,CAAC7W,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;QACnC,IAAI,CAAC2jE,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAACp6D,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAI,CAAC+1D,WAAW,GAAGA,WAAAA,CAAAA;QAEnB,IAAI,CAACnlE,IAAKsrE,CAAAA,OAAO,EAAE;AACjBtrE,YAAAA,IAAAA,CAAKsrE,OAAO,GAAG;AAAEl6E,gBAAAA,OAAAA,EAAS,EAAC;AAAE,aAAA,CAAA;AAC/B,SAAA;AAEA,QAAA,IAAIge,WAAW,CAAG,EAAA;AAChB,YAAA,MAAM,IAAIhf,KAAM,CAAC,6CAA0Cs2C,SAAS,CAAC,qCAAsC,GAAC,GAAA,CAAA,CAAA;AAC9G,SAAA;QAEA,IAAI1mC,IAAAA,CAAK8sB,UAAU,EAAE;AACnB,YAAA,IAAI,CAACA,UAAU,CAACj/B,MAAM,GAAG,CAAA,CAAA;YACzB,IAA4BmS,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK8sB,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlCu4C,gBAAAA,IAAAA,aAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMjC,YAAY,IAAI,CAACv9D,MAAM,CAAC6K,UAAU,CAAY20D,aAAAA,CAAAA,CAAAA;AAEpD,gBAAA,IAAI,CAACv4C,UAAU,CAAC/8B,IAAI,CAACqzE,SAAAA,CAAAA,CAAAA;;gBAErB,IAAap2E,YAATo2E,CAAAA,SAAAA,EAAqBmI,cAAgB,CAAA,EAAA;oBACvC,IAAI,CAAC,IAAI,CAACz+C,UAAU,CAACp7B,QAAQ,CAAC0xE,SAAU51C,CAAAA,QAAQ,CAAG,EAAA;AACjD,wBAAA,IAAI,CAACV,UAAU,CAAC/8B,IAAI,CAACqzE,UAAU51C,QAAQ,CAAA,CAAA;AACzC,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAI03C,OAlrBKA,CAkrBGsG,aAAa,CAAC,IAAI,CAAG,EAAA;AAC/B,YAAA,IAAI,CAACC,yBAAyB,EAAA,CAAA;AAChC,SAAA;QAEA,IAAI,CAAC/Y,UAAU,CAACD,OAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;IAEA,MAASvlD,CAAAA,MAkBR,GAlBD,SAASA,MAAAA,GAAAA;AAIH,QAAA,IAAA,YAAA,CAAA;AAHJ,QAAA,IAAI,CAACL,UAAU,CAACO,EAAE,GAAG,IAAI,CAACR,IAAI,CAAA;QAC9B,IAAI,CAACC,UAAU,CAAC6P,SAAS,GAAG,IAAI,CAACA,SAAS,CAACxP,MAAM,EAAA,CAAA;QACjD,IAAI,CAACL,UAAU,CAAC6+D,QAAQ,GAAG35D,QAAa,CAAC45D,WAAW,CAAA;QACpD,IAAI,CAAA,CAAA,eAAA,IAAI,CAACp/D,MAAM,KAAX,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAalc,IAAI,MAAK,UAAY,EAAA;AACT,YAAA,IAAA,aAAA,CAAA;YAA3B,IAAI,CAACwc,UAAU,CAAC28D,QAAQ,GAAA,CAAG,aAAA,GAAA,IAAI,CAACj9D,MAAM,KAAX,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAaK,IAAI,CAAA;AAC9C,SAAA;;AAGA,QAAA,IAAI,CAAC,IAAI,CAACC,UAAU,CAACigB,UAAU,EAAE;AAC/B,YAAA,IAAI,CAACjgB,UAAU,CAACigB,UAAU,GAAG,EAAE,CAAA;YAC/B,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACA,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAap2E,YAATo2E,CAAAA,SAAAA,EAAqBwI,eAAiB,CAAA,EAAA;AACxC,oBAAA,IAAI,CAAC/+D,UAAU,CAACigB,UAAU,CAAC/8B,IAAI,CAACqzE,SAAAA,CAAAA,CAAAA;AAClC,iBAAA;AACF,aAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACv2D,UAAU,CAACy+D,OAAO,GAAG,EAAC,CAAA;AAC7B,KAAA,CAAA;AAEA;;MAGA,MAAA,CAASj+D,OAeR,GAfD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAI,CAACw+D,mBAAmB,EAAA,CAAA;QAExB,IAAI,IAAI,CAAC1mE,WAAW,EAAE;AACpB,YAAA,IAAI,CAACA,WAAW,CAACojE,WAAW,CAAC,IAAI,CAAA,CAAA;;AAEjC,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAwB,IAAI,CAACz7C,UAAU,CAACh8B,KAAK,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtCsyE,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,gBAAAA,SAAAA,CAAU/1D,OAAO,EAAA,CAAA;AACnB,aAAA;YACA,IAAI,CAACyf,UAAU,GAAG,EAAE,CAAA;YACpB,IAAI,CAACg/C,YAAY,GAAG,IAAA,CAAA;AACpB,YAAA,IAAI,CAACpvD,SAAS,CAAC4kB,QAAQ,CAAC,KAAA,CAAA,CAAA;AAC1B,SAAA;AAEA,QAAA,aAAA,CAAA,SAAA,CAAMj0B,OAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACP,KAAA,CAAA;IAEA,MAAQw+D,CAAAA,mBAqBP,GArBD,SAAQA,mBAAAA,GAAAA;;;QAGN,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC/sC,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,IAAI,CAACx1B,MAAM,EAAE;AACfw1B,gBAAAA,KAAAA,CAAMilC,SAAS,CAAC,IAAI,CAACz6D,MAAM,CAAA,CAAA;AAC7B,aAAA;AACF,SAAA;QACA,IAAI,IAAI,CAACA,MAAM,EAAE;AACJ,YAAA,IAAA,YAAA,CAAA;YAAX5a,UAAW,CAAA,CAAA,YAAA,GAAA,IAAI,CAAC4a,MAAM,qBAAX,YAAauyB,CAAAA,QAAQ,EAAE,IAAI,CAAA,CAAA;AACxC,SAAA;;;;;;;;;AAWF,KAAA,CAAA;IAEA,MAAQ2sC,CAAAA,yBA4CP,GA5CD,SAAQA,yBAAAA,GAAAA;AACN,QAAA,IAAMM,kBAAqB,GAAA,IAAI,CAAC9gD,KAAK,CAACqgD,OAAO,CAAA;AAC7C,QAAA,IAAMU,KAAQD,GAAAA,kBAAAA,CAAmB36E,OAAO,CAAC46E,KAAK,CAAA;AAC9C,QAAA,IAAM/gD,QAAQ,IAAI,CAACplB,MAAM,CAAComE,qBAAqB,CAACD,KAAAA,CAAAA,CAAAA;AAEhD,QAAA,IAAI,CAAC/gD,KAAO,EAAA;AACV,YAAA,MAAM,IAAI76B,KAAAA,CAAM,qCAAC,GAAqC47E,KAAM,GAAA,kBAAA,CAAA,CAAA;AAC9D,SAAA;;QAGA,IAAM5G,cAAAA,GAAiBn6C,MAAM6B,UAAU,CAAA;QACvC,IAAMo/C,cAAAA,GAAiB,IAAI,CAACn/D,aAAa,EAAA,CAAA;;AAGzC,QAAA,IAAI,CAACC,aAAa,CAACie,KAAAA,CAAM7d,EAAE,CAAA,CAAA;AAC3B,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA4Bg4D,cAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjCC,YAAAA,IAAAA,aAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMjC,YAAY,IAAI,CAACv9D,MAAM,CAAC6K,UAAU,CAAY20D,aAAAA,CAAAA,CAAAA;YAEpDjC,SAAUpxE,CAAAA,IAAI,GAAG,IAAI,CAAA;AACrB,YAAA,IAAI,CAAC86B,UAAU,CAAC/8B,IAAI,CAACqzE,SAAAA,CAAAA,CAAAA;AACrBA,YAAAA,SAAAA,CAAUp2D,aAAa,CAAClK,YAAAA,EAAAA,CAAAA,CAAAA;AAC1B,SAAA;QAEA0gE,WAAYyC,CAAAA,aAAa,CAAC,IAAI,CAAA,CAAA;AAE9B,QAAA,IAAMkG,qBAAqB,SAACn6E,IAAAA,EAAAA;AAC1BA,YAAAA,IAAAA,CAAKgb,aAAa,CAAClK,YAAAA,EAAAA,CAAAA,CAAAA;YAEnB,IAAwB9Q,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK86B,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,gBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,gBAAAA,SAAAA,CAAUp2D,aAAa,CAAClK,YAAAA,EAAAA,CAAAA,CAAAA;AAC1B,aAAA;AAEA,YAAA,IAAI,CAxxBGoiE,OAwxBMsG,CAAAA,aAAa,CAACx5E,IAAO,CAAA,EAAA;gBAChC,IAAoBA,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK8sC,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,oBAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;oBACToqC,kBAAmBpqC,CAAAA,KAAAA,CAAAA,CAAAA;AACrB,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACjD,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACToqC,kBAAmBpqC,CAAAA,KAAAA,CAAAA,CAAAA;AACrB,SAAA;QAEA,IAAI,CAAC/0B,aAAa,CAACk/D,cAAAA,CAAAA,CAAAA;AACrB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQd,SAaP,GAbD,SAAQA,SAAAA,CAAWF,mBAAgD,EAAA;AAChDA,QAAAA,IAAAA,wBAAAA,CAAAA;QAAjB,IAAMkB,QAAAA,GAAWlB,CAAAA,wBAAAA,GAAAA,mBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAqBh/D,GAAG,CAAC,IAAI,CAAA,KAAA,IAAA,GAA7Bg/D,wBAAkCpoE,GAAAA,YAAAA,EAAAA,CAAAA;QAEnD,IAAI,CAACkK,aAAa,CAACo/D,QAAAA,CAAAA,CAAAA;QACnB,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACt/C,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACa8H,YAAAA,IAAAA,yBAAAA,CAAAA;YAAtB,IAAMmB,aAAAA,GAAgBnB,CAAAA,yBAAAA,GAAAA,mBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAqBh/D,GAAG,CAACk3D,sBAAzB8H,yBAAuCpoE,GAAAA,YAAAA,EAAAA,CAAAA;AAE7DsgE,YAAAA,SAAAA,CAAUp2D,aAAa,CAACq/D,aAAAA,CAAAA,CAAAA;AAC1B,SAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACvtC,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,KAAAA,CAAMqpC,SAAS,CAACF,mBAAAA,CAAAA,CAAAA;AAClB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,sBASP,GATD,SAAQA,sBAAAA,CAAwBD,mBAA+C,EAAA;AAC7EA,QAAAA,mBAAAA,CAAoB93E,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC2Z,aAAa,EAAA,CAAA,CAAA;QAChD,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC+f,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT8H,YAAAA,mBAAAA,CAAoB93E,GAAG,CAACgwE,SAAWA,EAAAA,SAAAA,CAAUr2D,aAAa,EAAA,CAAA,CAAA;AAC5D,SAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAAC+xB,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,KAAAA,CAAMopC,sBAAsB,CAACD,mBAAAA,CAAAA,CAAAA;AAC/B,SAAA;AACF,KAAA,CAAA;IAEA,MAAQf,CAAAA,sBAoBP,GApBD,SAAQA,sBAAAA,CACND,OAAkB,EAClBF,qBAA6B,EAC7BC,SAAsC,EAAA;AADtCD,QAAAA,IAAAA,kCAAAA,qBAAwB,GAAA,KAAA,CAAA;AAGxB,QAAA,IAAI,CAAC,IAAI,CAAClrC,QAAQ,EAAE;AAClB,YAAA,OAAA;AACF,SAAA;QAEA,IAAK,IAAIltC,KAAQ,GAAA,CAAA,EAAGA,KAAQ,GAAA,IAAI,CAACktC,QAAQ,CAACjxC,MAAM,EAAE+D,KAAS,EAAA,CAAA;AACzD,YAAA,IAAMI,IAAO,GAAA,IAAI,CAAC8sC,QAAQ,CAACltC,KAAM,CAAA,CAAA;YAEjC,IAAI,CAACq4E,SAAaA,IAAAA,SAAAA,CAAUj4E,IAAO,CAAA,EAAA;AACjCk4E,gBAAAA,OAAAA,CAAQn6E,IAAI,CAACiC,IAAAA,CAAAA,CAAAA;AACf,aAAA;AAEA,YAAA,IAAI,CAACg4E,qBAAuB,EAAA;gBAC1Bh4E,IAAKm4E,CAAAA,sBAAsB,CAACD,OAAAA,EAAS,KAAOD,EAAAA,SAAAA,CAAAA,CAAAA;AAC9C,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAzxBA;;;;AAIC,MACD,OAAOuB,CAAAA,aAEN,GAFD,SAAOA,cAAex5E,IAAa,EAAA;AACjC,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC5M,WAAW,CAAA;AAChD,KAAA,CAAA;AAEA;;;;AAIC,MACD,OAAOmnE,CAAAA,QAEN,GAFD,SAAOA,SAAUt6E,IAAa,EAAA;AAC5B,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAACw6D,MAAM,CAAA;AAC3C,KAAA,CAAA;AAEA;;;;AAIC,MACD,OAAOC,CAAAA,UAEN,GAFD,SAAOA,WAAYx6E,IAAa,EAAA;AAC9B,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC06D,QAAQ,CAAA;AAC7C,KAAA,CAAA;AAEA;;;;AAIC,MACD,OAAOC,CAAAA,MAEN,GAFD,SAAOA,OAAQ16E,IAAa,EAAA;AAC1B,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC46D,IAAI,CAAA;AACzC,KAAA,CAAA;AAEA;;;;AAIC,MACD,OAAOC,CAAAA,MAEN,GAFD,SAAOA,OAAQ56E,IAAa,EAAA;AAC1B,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC86D,IAAI,CAAA;AACzC,KAAA,CAAA;AAEA;;;;AAIC,MACD,OAAOC,CAAAA,QAEN,GAFD,SAAOA,SAAU96E,IAAa,EAAA;AAC5B,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC4zB,MAAM,CAAA;AAC3C,KAAA,CAAA;AAEA;;;;;MAjHWu/B,QAuHJ6H,UAcN,GAdD,SAAOA,UACLC,CAAAA,iBAA0B,EAC1BC,mBAA4B,EAAA;QAE5B,IAAIC,OAAAA,GAAUD,oBAAoB1gE,MAAM,CAAA;AAExC,QAAA,MAAO2gE,OAAS,CAAA;AACd,YAAA,IAAIA,YAAYF,iBAAmB,EAAA;gBACjC,OAAO,IAAA,CAAA;AACT,aAAA;AACAE,YAAAA,OAAAA,GAAUA,QAAQ3gE,MAAM,CAAA;AAC1B,SAAA;QAEA,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AArIW24D,IAAAA,aAAAA,CAAAA,OAAAA,EAAAA;;YA4JP//D,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC2mE,YAAY,CAAA;AAC1B,aAAA;;;AAIC,MACD,aAAiB3/E,KAAkB,EAAA;gBACjC,IAAI,CAAC2/E,YAAY,GAAG3/E,KAAAA,CAAAA;gBAEpB,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC2yC,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,oBAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;oBACT,IAAI,CAACA,KAAM58B,CAAAA,WAAW,EAAE;AACtB48B,wBAAAA,KAAAA,CAAM58B,WAAW,GAAGhZ,KAAAA,CAAAA;AACtB,qBAAA;AACF,iBAAA;AACF,aAAA;;;YAKIghF,GAAAA,EAAAA,qBAAAA;;;MAAJ,SAAA,GAAA,GAAA;AACS,gBAAA,IAAA,iBAAA,CAAA;AAAA,gBAAA,IAAA,0BAAA,CAAA;gBAAP,OAAO,CAAA,0BAAA,GAAA,CAAA,iBAAA,GAAA,IAAI,CAAChoE,WAAW,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,CAAkB++D,QAAQ,KAAA,IAAA,GAA1B,0BAA8B,GAAA,KAAA,CAAA;AACvC,aAAA;;;YAKIsB,GAAAA,EAAAA,aAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACkE,SAAS,CAAA;AACvB,aAAA;AACA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAiBv9E,KAAa,EAAA;AAC5B,gBAAA,IAAI,IAAI,CAACu9E,SAAS,KAAKv9E,KAAO,EAAA;oBAC5B,IAAI,CAACu9E,SAAS,GAAGv9E,KAAAA,CAAAA;oBACjB,IAAwB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC2gC,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,wBAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;wBACT,IAAap2E,YAATo2E,CAAAA,SAAAA,EAAqBh2C,iBAAmB,CAAA,EAAA;AAC1Cg2C,4BAAAA,SAAAA,CAAU5iE,QAAQ,GAAGrU,KAAAA,CAAAA;AACvB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;;;YA6KIygC,GAAAA,EAAAA,UAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC2rC,MAAM,CAAA;AACpB,aAAA;;;AAGC,MACD,aAAcpsE,KAAc,EAAA;gBAC1B,IAAI,CAACo+E,SAAS,CAACp+E,KAAAA,CAAAA,CAAAA;AACjB,aAAA;;;YAeIihF,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC3a,OAAO,CAAA;AACrB,aAAA;;;AAzYWyS,IAAAA,OAAAA,OAAAA,CAAAA;EAAgBv4D,aAq1B5B,EAAA;AAr1BYu4D,OAAAA,GAAAA,UAAAA,CAAAA;IADZv5D,YAAaoG,CAAAA,QAAa,CAAC45D,WAAW,CAAA;AAC1BzG,CAAAA,EAAAA,OAAAA,CAAAA,CAAAA;;AAu1BImI,CAAAA,SAAAA,IAAAA,EAAAA;IACR,SAAS//D,EAAAA,CAAyBtb,IAAe,EAAE8R,IAAmB,EAAA;QAC3E,OAAO9R,IAAAA,CAAK8R,IAAI,KAAKA,IAAAA,CAAAA;AACvB,KAAA;SAFgBwJ,EAAAA,GAAAA,EAAAA,CAAAA;AAIT,IAAA,SAASk+D,cAAex5E,IAAe,EAAA;AAC5C,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC5M,WAAW,CAAA;AAChD,KAAA;SAFgBqmE,aAAAA,GAAAA,aAAAA,CAAAA;AAIT,IAAA,SAASgB,WAAYx6E,IAAe,EAAA;AACzC,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC06D,QAAQ,CAAA;AAC7C,KAAA;SAFgBD,UAAAA,GAAAA,UAAAA,CAAAA;AAIT,IAAA,SAASE,OAAQ16E,IAAe,EAAA;AACrC,QAAA,OAAOA,KAAK8R,IAAI,KAAKiO,QAAa,CAAC46D,IAAI,CAAA;AACzC,KAAA;SAFgBD,MAAAA,GAAAA,MAAAA,CAAAA;AAGlB,CAAA,EAhBiBW,IAAAA,KAAAA,IAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACv1BV,IAAA,oBAAM9H,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,GAAAA;;;cACXjoE,IAAO,GAAA,CAAA,CAAA;cAEPg3C,KAAmB,GAAA,EAAE;;AAErB;;MAGA5yB,KAAAA,CAAAA,KAAAA,GAAmBgmD,UAAU4F,OAAO,CAAA;cAE5BpJ,QAAW,GAAA,KAAA,CAAA;AAEXqJ,QAAAA,KAAAA,CAAAA,aAAAA,GAAgC,EAAE,CAAA;;;AAZ/BhI,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;IAiBX,MAASv5C,CAAAA,OAQR,GARD,SAASA,OAAAA,GAAAA;AAOP,QAAA,IAAA,sBAAA,CAAA;AANA,QAAA,IAAI,CAAC,IAAI,CAACwhD,aAAa,EAAE;AACvB,YAAA,IAAI,CAACA,aAAa,GAAG,IAAIC,aAAc,CAAA,IAAI,CAAC5nE,MAAM,CAAA,CAAA;AACpD,SAAA;;QAEA,IAAI,CAAC6nE,gBAAgB,GAAG,IAAIC,gBAAAA,CAAiB,IAAI,CAACH,aAAa,EAAE,IAAI,CAACD,aAAa,CAAA,CAAA;AAEnF,QAAA,CAAA,sBAAA,GAAA,IAAI,CAACv7E,IAAI,CAACmT,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAArB,sBAAuBy+D,CAAAA,UAAU,CAAC7zE,IAAI,CAAC,IAAI,CAACiC,IAAI,CAAA,CAAA;AAClD,KAAA,CAAA;IAEA47E,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OAAO,IAAI,CAAC1J,QAAQ,CAAA;AACtB,KAAA,CAAA;IAEA0C,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAACllD,KAAK,GAAGgmD,SAAAA,CAAUC,MAAM,CAAA;AAC/B,KAAA,CAAA;IAEAhB,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;AACE,QAAA,IAAI,CAACjlD,KAAK,GAAGgmD,SAAAA,CAAU4F,OAAO,CAAA;AAChC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASrhD,QASR,GATD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAC3B,QAAA,IAAI,IAAI,CAACutB,KAAK,KAAKgmD,SAAAA,CAAUC,MAAM,EAAE;AACnC,YAAA,OAAA;AACF,SAAA;QACA,IAAMrqE,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AAEtB,QAAA,IAAI,CAACowE,gBAAgB,CAAChH,OAAO,CAACppE,IAAAA,CAAAA,CAAAA;AAE9B,QAAA,IAAI,CAACowE,gBAAgB,CAACz7D,QAAQ,CAAC9d,EAAK,GAAA,IAAA,CAAA,CAAA;AACtC,KAAA,CAAA;IAEA,MAAS23B,CAAAA,QAMR,GAND,SAASA,QAAAA,GAAAA;AACP,QAAA,IAAI,CAAC95B,IAAI,CAACy3E,cAAc,CAAC,OAAOz3E,SAAAA,IAAAA,EAAAA;AAC9BA,YAAAA,IAAAA,CAAKu4E,SAAS,CAAC,IAAA,CAAA,CAAA;YAEf,OAAO,KAAA,CAAA;AACT,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;IAEA,MAASx+C,CAAAA,SAMR,GAND,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAI,CAAC/5B,IAAI,CAACy3E,cAAc,CAAC,OAAOz3E,SAAAA,IAAAA,EAAAA;AAC9BA,YAAAA,IAAAA,CAAKu4E,SAAS,CAAC,KAAA,CAAA,CAAA;YAEf,OAAO,KAAA,CAAA;AACT,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;IAEA,MAASp+C,CAAAA,SAIR,GAJD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAMmoB,KAAQ,GAAA,IAAI,CAACtiD,IAAI,CAACy3E,cAAc,EAAA,CAAA;QAEtCn1B,KAAMx2C,CAAAA,OAAO,CAAC9L,SAAAA,IAAAA,EAAAA;AAAQA,YAAAA,OAAAA,IAAAA,CAAKqb,OAAO,EAAA,CAAA;;AACpC,KAAA,CAAA;AAEA46D,IAAAA,MAAAA,CAAAA,OA+BC,GA/BDA,SAAAA,OAAAA,CACEvuC,GAAQ,EACRzlC,CAAS,EACTjF,CAAS,EACTk5E,OAAiB,EACjBjN,KAAe,EACf7pE,OAAmC,EAAA;AAKG,QAAA,IAAA,sBAAA,CAAA;AAHtC,QAAA,IAAMy8E,gBAAmB,GAAA,IAAI,CAACC,gBAAgB,CAAC,IAAI,CAAC97E,IAAI,EAAE0nC,GAAAA,EAAKzlC,CAAGjF,EAAAA,CAAAA,EAAGk5E,SAASjN,KAAO7pE,EAAAA,OAAAA,CAAAA,CAAAA;;AAGrF,QAAA,IAAIy8E,gBAAoB,IAAA,IAAI,CAAC77E,IAAI,OAAK,sBAAA,GAAA,IAAI,CAACA,IAAI,CAACmT,WAAW,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAuB8/D,QAAQ,CAAE,EAAA;YACrE,IAAMjzE,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AACtB,YAAA,IAAM+7E,aAAa7F,OAAO,CAACA,OAAQr6E,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;YAC9C,IAAMmgF,YAAAA,GAA0BD,WAAWC,YAAY,CAAA;AAEvD,YAAA,IAAMC,MAAS,GAAA;AACb7gE,gBAAAA,EAAAA,EAAIpb,KAAK+a,aAAa,EAAA;AACtB1c,gBAAAA,IAAAA,EAAM2B,KAAK3B,IAAI;AACf0jB,gBAAAA,QAAAA,EAAUi6D,YAAY,CAACA,YAAangF,CAAAA,MAAM,GAAG,CAAE,CAAA;AAC/C27E,gBAAAA,QAAAA,EAAUx3E,KAAKw3E,QAAQ;gBACvBwE,YAAAA,EAAAA,YAAAA;gBACAE,QAAUn8D,EAAAA,gBAAqB,CAAC88C,IAAI;gBACpC78D,IAAMA,EAAAA,IAAAA;AACNmT,gBAAAA,WAAAA,EAAanT,KAAKmT,WAAW;AAC/B,aAAA,CAAA;AAEA+iE,YAAAA,OAAAA,CAAQn4E,IAAI,CAACk+E,MAAAA,CAAAA,CAAAA;AACf,SAAA;QAEA,OAAOJ,gBAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,gBA0GP,GA1GD,SAAQA,gBACN97E,CAAAA,IAAa,EACb0nC,GAAQ,EACRzlC,CAAS,EACTjF,CAAS,EACTk5E,OAAiB,EACjBjN,KAAe,EACf7pE,OAAmC,EAAA;;AAaxB+8E,YAAAA,IAAAA,WAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IACEA,WAAAA,CAAYvhD,QAAQ,IACjBuhD,WAAYzxD,CAAAA,SAAS,CAACsmB,QAAQ,EAAA,IAC9B,CAACorC,IAAAA,CAAKD,WACT,CAAA,EAAA;gBACA,IAAME,SAAAA,GAAYF,WAAYrD,CAAAA,gBAAgB,CAAC7P,KAAAA,CAAAA,CAAAA;AAE/C,gBAAA,IAAIoT,SAAW,EAAA;AACb,oBAAA,IAAIC,OAAU,GAAA,KAAA,CAAA;AACd,oBAAA,IAAMC,iBAAiB,IAAIv2E,OAAAA,EAAAA,CAAAA;AAE3B,oBAAA,IAAIq2E,SAAUvqE,CAAAA,IAAI,KAAK0qE,WAAAA,CAAYxyC,QAAQ,EAAE;AAE3C,wBAAA,IAAQyyC,SAA+BJ,GAAAA,SAAAA,CAA/BI,SAAWxyC,EAAAA,eAAAA,GAAoBoyC,SAApBpyC,CAAAA,eAAAA,CAAAA;AAEnB,wBAAA,IAAK,IAAI1+B,CAAI,GAAA,CAAA,EAAGA,IAAIkxE,SAAU5gF,CAAAA,MAAM,EAAE0P,CAAK,EAAA,CAAA;4BACzC,IAAMy+B,QAAAA,GAAWyyC,SAAS,CAAClxE,CAAE,CAAA,CAAA;AAE7B,4BAAA,IAAIm8B,GAAIqC,CAAAA,iBAAiB,CAACC,QAAAA,EAAUuyC,gBAAgBtyC,eAAkB,CAAA,EAAA;gCACpEqyC,OAAU,GAAA,IAAA,CAAA;AACVN,gCAAAA,YAAAA,CAAaj+E,IAAI,CAACw+E,cAAAA,CAAAA,CAAAA;AAElB,gCAAA,MAAA;AACF,6BAAA;AACF,yBAAA;AACF,qBAAA,MAAO,IAAIF,SAAUvqE,CAAAA,IAAI,KAAK0qE,WAAAA,CAAY10C,GAAG,EAAE;AAC7C,wBAAA,IAAQwB,MAAiB+yC,GAAAA,SAAAA,CAAjB/yC,MAAQ3oC,EAAAA,IAAAA,GAAS07E,SAAT17E,CAAAA,IAAAA,CAAAA;AAChB,wBAAA,IAAM+7E,SAASpzC,MAAO9lC,CAAAA,KAAK,EAAG0C,CAAAA,eAAe,CAACvF,IAAM,EAAA,GAAA,CAAA,CAAA;AACpD,wBAAA,IAAMg8E,SAASrzC,MAAO9lC,CAAAA,KAAK,GAAG0C,eAAe,CAACvF,MAAM,CAAC,GAAA,CAAA,CAAA;wBAErD,IAAI+mC,GAAAA,CAAIG,YAAY,CAAC;4BAAE7mC,GAAK07E,EAAAA,MAAAA;4BAAQ/5E,GAAKg6E,EAAAA,MAAAA;AAAO,yBAAA,EAAGJ,cAAiB,CAAA,EAAA;4BAClED,OAAU,GAAA,IAAA,CAAA;AACVN,4BAAAA,YAAAA,CAAaj+E,IAAI,CAACw+E,cAAAA,CAAAA,CAAAA;AACpB,yBAAA;AACF,qBAAA,MAAO,IAAIF,SAAUvqE,CAAAA,IAAI,KAAK0qE,WAAAA,CAAYnzC,MAAM,EAAE;AAChD,wBAAA,IAAQC,OAAmB+yC,GAAAA,SAAAA,CAAnB/yC,MAAQK,EAAAA,MAAAA,GAAW0yC,SAAX1yC,CAAAA,MAAAA,CAAAA;wBAEhB,IAAIjC,GAAAA,CAAI0B,eAAe,CAAC;4BAAEE,MAAAA,EAAAA,OAAAA;4BAAQK,MAAAA,EAAAA,MAAAA;AAAO,yBAAA,EAAG4yC,cAAiB,CAAA,EAAA;4BAC3DD,OAAU,GAAA,IAAA,CAAA;AACVN,4BAAAA,YAAAA,CAAaj+E,IAAI,CAACw+E,cAAAA,CAAAA,CAAAA;AACpB,yBAAA;AACF,qBAAA,MAAO,IAAIF,SAAUvqE,CAAAA,IAAI,KAAK0qE,WAAAA,CAAYI,MAAM,EAAE;AAChD,wBAAA,IAAMC,eAAeR,SAAUS,CAAAA,OAAO,CAACp1C,GAAK,EAAA,IAAI1kC,QAAQf,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAE3D,wBAAA,IAAI6/E,YAAgBA,IAAAA,YAAAA,CAAahhF,MAAM,GAAG,CAAG,EAAA;4BAC3CghF,YAAa/wE,CAAAA,OAAO,CAACknC,SAAAA,GAAAA,EAAAA;AACnBgpC,gCAAAA,YAAAA,CAAaj+E,IAAI,CAACi1C,GAAAA,CAAAA,CAAAA;AACpB,6BAAA,CAAA,CAAA;4BACAspC,OAAU,GAAA,IAAA,CAAA;AACZ,yBAAA;AACF,qBAAA;AACA,oBAAA,IAAIA,OAAS,EAAA;AACX,wBAAA,IAAML,MAAS,GAAA;AACb7gE,4BAAAA,EAAAA,EAAI+gE,YAAYphE,aAAa,EAAA;AAC7B1c,4BAAAA,IAAAA,EAAM89E,YAAY99E,IAAI;AACtB0jB,4BAAAA,QAAAA,EAAUi6D,YAAY,CAACA,YAAangF,CAAAA,MAAM,GAAG,CAAE,CAAA;AAC/C27E,4BAAAA,QAAAA,EAAU2E,YAAY3E,QAAQ;4BAC9BwE,YAAAA,EAAAA,YAAAA;AACAE,4BAAAA,QAAAA,EAAUG,UAAUH,QAAQ;4BAC5Bl8E,IAAMm8E,EAAAA,WAAAA;4BACNhpE,WAAa,EAAA,KAAA,CAAKnT,IAAI,CAACmT,WAAW;AACpC,yBAAA,CAAA;AAEA+iE,wBAAAA,OAAAA,CAAQn4E,IAAI,CAACk+E,MAAAA,CAAAA,CAAAA;wBACbc,cAAiB,GAAA,IAAA,CAAA;AAEjB,wBAAA,IAAI7wE,KAAK+vE,MAAS,CAAA,EAAA;4BAChB,OAAA;AAAO,gCAAA,CAAA,EAAA,IAAA;AAAI,6BAAA,CAAA;AACb,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;YAEA,IAAI/I,OAAAA,CAAQsG,aAAa,CAAC2C,WAAc,CAAA,EAAA;gBACtC,IAAIA,WAAAA,CAAY3lD,YAAY,CAxMvB+8C,oBAwM8C0C,CAAAA,CAAAA,OAAO,CAACvuC,GAAAA,EAAKzlC,CAAGjF,EAAAA,CAAAA,EAAGk5E,OAASjN,EAAAA,KAAAA,EAAO7pE,OAAU,CAAA,EAAA;oBAC9F29E,cAAiB,GAAA,IAAA,CAAA;AACnB,iBAAA;aACK,MAAA;gBACL,IAAI,KAAA,CAAKjB,gBAAgB,CAACK,WAAAA,EAAaz0C,KAAKzlC,CAAGjF,EAAAA,CAAAA,EAAGk5E,OAASjN,EAAAA,KAAAA,EAAO7pE,OAAU,CAAA,EAAA;oBAC1E29E,cAAiB,GAAA,IAAA,CAAA;AACnB,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AA9FA,QAAA,IAAMf,eAA0B,EAAE,CAAA;AAClC,QAAA,IAAM9vE,IAAO9M,GAAAA,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS8M,IAAI,KAAI4D,IAAAA,CAAAA;AAC9B,QAAA,IAAMssE,IAAOh9E,GAAAA,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAASg9E,IAAI,KAAItsE,IAAAA,CAAAA;QAC9B,IAAMktE,QAAAA,GAAW59E,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS49E,QAAQ,CAAA;AAElC,QAAA,IAAIA,QAAajiF,KAAAA,SAAAA,IAAam7E,OAAQr6E,CAAAA,MAAM,IAAImhF,QAAU,EAAA;YACxD,OAAO,KAAA,CAAA;AACT,SAAA;AAEA,QAAA,IAAID,cAAiB,GAAA,KAAA,CAAA;AAErB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA0B/8E,KAAK8sC,QAAQ,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;;;;QAqFvC,OAAOiwC,cAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;AAGC,MACD7I,MAAAA,CAAAA,sBAYC,GAZDA,SAAAA,uBAAwB+I,UAAkB,EAAA;QACxC,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC36B,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBtiD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKwzE,WAAW,GAAGyJ,UAAAA,EAAAA,CAAAA;YAEnB,IAAMC,uBAAAA,GAA0Bl9E,IAAKw2B,CAAAA,YAAY,CA7N1C+8C,oBAAAA,CAAAA,CAAAA;AA+NP,YAAA,IAAI2J,uBAAyB,EAAA;gBAC3BD,UAAaC,GAAAA,uBAAAA,CAAwBhJ,sBAAsB,CAAC+I,UAAAA,CAAAA,CAAAA;AAC9D,aAAA;AACF,SAAA;QAEA,OAAOA,UAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9hE,QAER,GAFD,SAASA,QAAAA,CAAUnN,IAAS,EAAA;AAC1B,QAAA,SAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACjB,KAAA,CAAA;AAzOWulE,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6B/5C,SA0OzC,EAAA;;AAxOE3f,IAAAA,SAAAA,EAAAA;AAFU05D,CAAAA,EAAAA,oBAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAWV15D,IAAAA,SAAAA,EAAAA;AAXU05D,CAAAA,EAAAA,oBAAAA,CAAAA,SAAAA,EAAAA,eAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAaV15D,IAAAA,SAAAA,EAAAA;AAbU05D,CAAAA,EAAAA,oBAAAA,CAAAA,SAAAA,EAAAA,eAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,oBAAAA,GAAAA,UAAAA,CAAAA;IADZ55D,YAAa,CAAA,sBAAA,CAAA;AACD45D,CAAAA,EAAAA,oBAAAA,CAAAA;;ACfb;;AAEC,IACM,IAAA,aAAM4J,iBAAD,SAAL,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,CAYEtpE,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AAPR;;AAEC,MAAA,KAAA,CACSupE,eAAe,IAAIC,YAAAA,EAAAA,CAAAA;;AAgC7BvE,QAAAA,KAAAA,CAAAA,gBAAAA,GAAmB,SAAC7P,KAAAA,EAAAA;AAClB,YAAA,IAAMp6B,WAAc,GAAA,KAAA,CAAKnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;AAEjD,YAAA,KAAA,CAAK8sC,YAAY,CAACE,WAAW,CAAC,KAAA,CAAK/wC,QAAQ,EAAEsC,WAAAA,CAAAA,CAAAA;AAC7C,YAAA,IAAM0uC,IAAO,GAAA,KAAA,CAAKH,YAAY,CAACI,kBAAkB,EAAA,CAAA;AAEjD,YAAA,IAAID,IAAM,EAAA;gBACR,OAAO;AACLzrE,oBAAAA,IAAAA,EAAMyrE,KAAKzrE,IAAI;AACf2qE,oBAAAA,SAAAA,EAAWc,KAAKA,IAAI;AACtB,iBAAA,CAAA;AACF,aAAA;AACF,SAAA,CAAA;QAvCE,KAAKE,CAAAA,WAAW,GAAG,IAAIte,aAActrD,CAAAA,MAAAA,CAAAA,CAAAA;;;AAd5BspE,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAiBX,IAAA,MAAA,CAAS5hD,MAMR,GAND,SAASA,MAAAA,CAAQC,QAAkB,EAAA;QACjC,IAAK,IAAIp/B,CAAI,GAAA,CAAA,EAAEA,CAAI,GAAA,IAAI,CAACi/B,SAAS,CAACx/B,MAAM,EAACO,CAAK,EAAA,CAAA;AAC5C,YAAA,IAAMw/B,QAAW,GAAA,IAAI,CAACP,SAAS,CAACj/B,CAAE,CAAA,CAAA;AAElCo/B,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAA,EAAI1U,QAAUx/B,EAAAA,CAAAA,CAAAA,CAAAA;AAClF,SAAA;AACF,KAAA,CAAA;AAEAwjE,IAAAA,MAAAA,CAAAA,eAaC,GAbDA,SAAAA,eAAAA,CAAiBpkC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAACT,kBAAkB,EAAE;AAC5B,YAAA,OAAA;AACF,SAAA;QAEA,IAAK,IAAI3+B,CAAI,GAAA,CAAA,EAAEA,CAAI,GAAA,IAAI,CAACi/B,SAAS,CAACx/B,MAAM,EAACO,CAAK,EAAA,CAAA;AAC5C,YAAA,IAAMw/B,QAAW,GAAA,IAAI,CAACP,SAAS,CAACj/B,CAAE,CAAA,CAAA;YAClC,IAAMshF,iBAAAA,GAAoB9hD,SAAS+hD,SAAS,CAAA;AAE5C/hD,YAAAA,QAAAA,CAAS+hD,SAAS,GAAG,KAAA,CAAA;AACrBniD,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAA,EAAI1U,QAAUx/B,EAAAA,CAAAA,CAAAA,CAAAA;AAChFw/B,YAAAA,QAAAA,CAAS+hD,SAAS,GAAGD,iBAAAA,CAAAA;AACvB,SAAA;AACF,KAAA,CAAA;IAiBA3vC,MAAAA,CAAAA,cAOC,GAPDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAMc,WAAc,GAAA,IAAI,CAACnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;QAEjD,IAAI,CAAC8sC,YAAY,CAACE,WAAW,CAAC,IAAI,CAAC/wC,QAAQ,EAAEsC,WAAAA,CAAAA,CAAAA;AAC7C,QAAA,IAAMrC,WAAc,GAAA,IAAI,CAAC4wC,YAAY,CAACrvC,cAAc,EAAA,CAAA;QAEpD,OAAOvB,WAAAA,CAAAA;AACT,KAAA,CAAA;;AAGA,IAAA,MAAA,CAASrxB,QAgBR,GAhBD,SAASA,QAAAA,CAAUnN,IAAS,EAAA;AAC1B,QAAA,iBAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEf,QAAA,IAAM4vE,oBAAuB5vE,GAAAA,IAAAA,CAAAA;QAC7B,IAAM6vE,WAAAA,GAAcD,qBAAqBE,IAAI,CAAA;AAE7C,QAAA,IAAID,WAAa,EAAA;AACf,YAAA,IAAI,CAACJ,WAAW,CAACje,cAAc,CAACqe,WAAAA,CAAAA,CAAAA;AAClC,SAAA;QAEA,IAAuB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACxiD,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BO,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM8iC,UAAa,GAAA,IAAI,CAAC+e,WAAW,CAACle,WAAW,EAAA,CAAA;AAE/C3jC,YAAAA,QAAAA,CAAS8iC,UAAU,GAAG;AAACA,gBAAAA,UAAAA;AAAYA,gBAAAA,UAAAA;AAAW,aAAA,CAAA;AAC9CzC,YAAAA,WAAAA,CAAYrgC,QAAU,EAAA,IAAI,CAAC6hD,WAAW,CAACvhB,QAAQ,CAAA,CAAA;AACjD,SAAA;AACF,KAAA,CAAA;AAjFWihB,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB/hD,iBAkFlC,CAAA,CAAA;;AA9EEvhB,IAAAA,SAAAA,EAAAA;AAJUsjE,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,UAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACJN,IAAA,eAAMvD,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,CAGE/lE,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAHRvI,IAAO,GAAA,CAAA,CAAA;AAIL,QAAA,KAAA,CAAKjN,IAAI,GAAG,iBAAA,CAAA;;;AALHu7E,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IAQX,MAAS5/C,CAAAA,OAER,GAFD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAI,CAACh6B,IAAI,CAAC84E,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAA;AACpD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS7+C,QAOR,GAPD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;QAC3B,IAAMmJ,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AACR,QAAA,IAAA,yBAAA,CAAA;QAAd,IAAMyyE,KAAAA,GAAQ,CAAA,yBAAA,GAAA,IAAI,CAACniD,QAAQ,CAACoiD,UAAU,CAAC,OAAzB,CAAA,KAAA,IAAA,GAAA,yBAAA,GAAqC,IAAIj2E,OAAAA,EAAAA,CAAAA;AAEvD,QAAA,IAAI,CAAC6zB,QAAQ,CAACqiD,UAAU,CAAC,OAASF,EAAAA,KAAAA,CAAM38E,GAAG,CAACkK,IAAO,GAAA,EAAA,EAAIA,IAAMA,EAAAA,IAAAA,GAAO,GAAGA,IAAO,GAAA,CAAA,CAAA,CAAA,CAAA;QAE9E,IAAI,CAACA,IAAI,IAAInJ,EAAK,GAAA,IAAA,CAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASgZ,QAGR,GAHD,SAASA,QAAAA,CAAUnN,IAA8B,EAAA;AAC/C,QAAA,aAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACf,QAAA,IAAI,CAAC4tB,QAAQ,GAAG,IAAI,CAACP,SAAS,CAAC,CAAE,CAAA,CAAA;AACnC,KAAA,CAAA;AAxBWu+C,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBuD,aAyBpC,EAAA;AAzBYvD,eAAAA,GAAAA,UAAAA,CAAAA;IADZjgE,YAAaoG,CAAAA,QAAa,CAAC65D,eAAe,CAAA;AAC9BA,CAAAA,EAAAA,eAAAA,CAAAA;;ACHb,IAAMprC,WAAc,GAAA,IAAIxoC,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACtC,IAAMyoC,iBAAoB,GAAA,IAAIzoC,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAErC,IAAA,gBAAMk4E,GAAN,SAAMA,gBAAAA,GAAAA;SACXxiF,MAAyB,GAAA,IAAA,CAAA;SACzBksB,MAAS,GAAA,GAAA,CAAA;AACV,EAAA;AAsBM,IAAA,kBAAMu2D,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AACX;;AAEC,MAAA,KAAA,CACOC,cAAiB,GAAA,IAAIp4E,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3C;;AAEC,MAAA,KAAA,CACOq4E,cAAiB,GAAA,IAAIr4E,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3C;;AAEC,MAAA,KAAA,CACO4hB,MAAS,GAAA,GAAA,CAAA;AACjB;;AAEC,MAAA,KAAA,CACO02D,UAAa,GAAA,IAAA,CAAA;AACrB;;AAEC,MAAA,KAAA,CACOC,UAAa,GAAA,IAAA,CAAA;AACrB;;AAEC,MAAA,KAAA,CACOC,UAAa,GAAA,IAAA,CAAA;AACrB;;AAEC,MAAA,KAAA,CACOC,UAA8B,EAAE,CAAA;;;AA5B7BN,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;IA8BX,MAASnkD,CAAAA,OAKR,GALD,SAASA,OAAAA,GAAAA;;AAEP,QAAA,IAAMgZ,MAAM,IAAI,CAAChzC,IAAI,CAAC0qB,SAAS,CAAC+lB,gBAAgB,EAAA,CAAA;AAEhD,QAAA,IAAI,CAAC2tC,cAAc,CAAC96E,QAAQ,CAAC0vC,GAAAA,CAAAA,CAAAA;AAC/B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS/Y,QAiDR,GAjDD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAC3B,QAAA,IAAI,IAAI,CAACs8E,OAAO,CAAC5iF,MAAM,KAAK,CAAG,EAAA;AAC7B,YAAA,OAAA;AACF,SAAA;;QAGA2yC,WAAYptC,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACtB,QAAA,IAAIs9E,WAAc,GAAA,CAAA,CAAA;;QAGlB,IAA+B,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACD,OAAO,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlCE,YAAAA,IAAAA,gBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,gBAAAA,CAAiBjjF,MAAM,EAAE;AAC3B,gBAAA,IAAMkjF,YAAYD,gBAAiBjjF,CAAAA,MAAM,CAACgvB,SAAS,CAAC+lB,gBAAgB,EAAA,CAAA;gBACpE,IAAM7oB,MAAAA,GAAS+2D,iBAAiB/2D,MAAM,CAAA;AAEtC4mB,gBAAAA,WAAAA,CAAYvsC,CAAC,IAAI28E,SAAU38E,CAAAA,CAAC,GAAG2lB,MAAAA,CAAAA;AAC/B4mB,gBAAAA,WAAAA,CAAYxxC,CAAC,IAAI4hF,SAAU5hF,CAAAA,CAAC,GAAG4qB,MAAAA,CAAAA;AAC/B4mB,gBAAAA,WAAAA,CAAYvoC,CAAC,IAAI24E,SAAU34E,CAAAA,CAAC,GAAG2hB,MAAAA,CAAAA;gBAC/B82D,WAAe92D,IAAAA,MAAAA,CAAAA;AACjB,aAAA;AACF,SAAA;;AAGA,QAAA,IAAI82D,cAAc,CAAG,EAAA;AACnBlwC,YAAAA,WAAAA,CAAYvsC,CAAC,IAAIy8E,WAAAA,CAAAA;AACjBlwC,YAAAA,WAAAA,CAAYxxC,CAAC,IAAI0hF,WAAAA,CAAAA;AACjBlwC,YAAAA,WAAAA,CAAYvoC,CAAC,IAAIy4E,WAAAA,CAAAA;AACnB,SAAA;;AAGAlwC,QAAAA,WAAAA,CAAYvsC,CAAC,IAAI,IAAI,CAACo8E,cAAc,CAACp8E,CAAC,CAAA;AACtCusC,QAAAA,WAAAA,CAAYxxC,CAAC,IAAI,IAAI,CAACqhF,cAAc,CAACrhF,CAAC,CAAA;AACtCwxC,QAAAA,WAAAA,CAAYvoC,CAAC,IAAI,IAAI,CAACo4E,cAAc,CAACp4E,CAAC,CAAA;;QAGtCwoC,iBAAkBrtC,CAAAA,GAAG,CACnB,IAAI,CAACgB,IAAI,CAAC,IAAI,CAACg8E,cAAc,CAACn8E,CAAC,EAAEusC,WAAYvsC,CAAAA,CAAC,EAAE,IAAI,CAAC2lB,MAAM,GAC3D,IAAI,CAACxlB,IAAI,CAAC,IAAI,CAACg8E,cAAc,CAACphF,CAAC,EAAEwxC,WAAAA,CAAYxxC,CAAC,EAAE,IAAI,CAAC4qB,MAAM,CAC3D,EAAA,IAAI,CAACxlB,IAAI,CAAC,IAAI,CAACg8E,cAAc,CAACn4E,CAAC,EAAEuoC,YAAYvoC,CAAC,EAAE,IAAI,CAAC2hB,MAAM,CAAA,CAAA,CAAA;;QAI7D4mB,WAAYlrC,CAAAA,QAAQ,CAAC,IAAI,CAACtD,IAAI,CAAC0qB,SAAS,CAAC+lB,gBAAgB,EAAA,CAAA,CAAA;QACzD,IAAMouC,MAAAA,GAAS,IAAI,CAACP,UAAU,GAAG7vC,iBAAkBxsC,CAAAA,CAAC,GAAGusC,WAAAA,CAAYvsC,CAAC,CAAA;QACpE,IAAM68E,MAAAA,GAAS,IAAI,CAACP,UAAU,GAAG9vC,iBAAkBzxC,CAAAA,CAAC,GAAGwxC,WAAAA,CAAYxxC,CAAC,CAAA;QACpE,IAAM+hF,MAAAA,GAAS,IAAI,CAACP,UAAU,GAAG/vC,iBAAkBxoC,CAAAA,CAAC,GAAGuoC,WAAAA,CAAYvoC,CAAC,CAAA;;QAGpE,IAAI,CAACjG,IAAI,CAAC0qB,SAAS,CAACimB,gBAAgB,CAACkuC,QAAQC,MAAQC,EAAAA,MAAAA,CAAAA,CAAAA;AACvD,KAAA,CAAA;AAEA;;;;AAIC,MACDC,OAAAA,SAMC,GANDA,SAAAA,SAAWtjF,CAAAA,MAAe,EAAEksB,MAAY,EAAA;AAAZA,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,GAAA,CAAA;AACnC,QAAA,IAAM+2D,mBAAmB,IAAIT,gBAAAA,EAAAA,CAAAA;AAE7BS,QAAAA,gBAAAA,CAAiBjjF,MAAM,GAAGA,MAAAA,CAAAA;QAC1BijF,gBAAiB/2D,CAAAA,MAAM,GAAGhnB,IAAK+B,CAAAA,GAAG,CAAC,CAAG/B,EAAAA,IAAAA,CAAKI,GAAG,CAAC,CAAG4mB,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AAClD,QAAA,IAAI,CAAC62D,OAAO,CAAC1gF,IAAI,CAAC4gF,gBAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AAEA;;;AAGC,MACDM,MAAAA,CAAAA,YAMC,GANDA,SAAAA,aAAcvjF,MAAe,EAAA;AAC3B,QAAA,IAAMkE,QAAQ,IAAI,CAAC6+E,OAAO,CAAC3rE,SAAS,CAACosE,SAAAA,EAAAA,EAAAA;AAAMA,YAAAA,OAAAA,EAAAA,CAAGxjF,MAAM,KAAKA,MAAAA,CAAAA;;QAEzD,IAAIkE,KAAAA,KAAU,CAAC,CAAG,EAAA;AAChB,YAAA,IAAI,CAAC6+E,OAAO,CAAC3+E,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAC7B,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAu/E,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,GAAAA;QACE,IAAI,CAACV,OAAO,GAAG,EAAE,CAAA;AACnB,KAAA,CAAA;AAEA;;;;;MAMAW,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,kBAAmBn9E,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AAChD,QAAA,IAAI,CAACo4E,cAAc,CAACj9E,GAAG,CAACa,GAAGjF,CAAGiJ,EAAAA,CAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEA;;;AAGC,MACDo5E,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,UAAWz3D,MAAc,EAAA;QACvB,IAAI,CAACA,MAAM,GAAGhnB,IAAK+B,CAAAA,GAAG,CAAC,CAAG/B,EAAAA,IAAAA,CAAKI,GAAG,CAAC,CAAG4mB,EAAAA,MAAAA,CAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AAEA;;;;;MAMA,MAAA,CAAQxlB,IAEP,GAFD,SAAQA,KAAMqM,KAAa,EAAEC,GAAW,EAAE9R,CAAS,EAAA;AACjD,QAAA,OAAO6R,KAAQ,GAACC,CAAAA,GAAAA,GAAMD,KAAI,IAAK7R,CAAAA,CAAAA;AACjC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASue,QAmBR,GAnBD,SAASA,QAAAA,CAAUnN,IAA4B,EAAA;AAC7C,QAAA,SAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;;AAGf,QAAA,IAAI,CAACowE,cAAc,CAAC96E,QAAQ,CAAC0K,KAAKowE,cAAc,CAAA,CAAA;AAChD,QAAA,IAAI,CAACC,cAAc,CAAC/6E,QAAQ,CAAC0K,KAAKqwE,cAAc,CAAA,CAAA;AAChD,QAAA,IAAI,CAACz2D,MAAM,GAAG5Z,IAAAA,CAAK4Z,MAAM,CAAA;AACzB,QAAA,IAAI,CAAC02D,UAAU,GAAGtwE,IAAAA,CAAKswE,UAAU,CAAA;AACjC,QAAA,IAAI,CAACC,UAAU,GAAGvwE,IAAAA,CAAKuwE,UAAU,CAAA;AACjC,QAAA,IAAI,CAACC,UAAU,GAAGxwE,IAAAA,CAAKwwE,UAAU,CAAA;QAEjC,IAAI,CAACC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAyBzwE,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKywE,OAAO,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5Ba,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMX,mBAAmB,IAAIT,gBAAAA,EAAAA,CAAAA;YAE7BS,gBAAiBjjF,CAAAA,MAAM,GAAG,IAAI,CAACmY,MAAM,CAAC6K,UAAU,CAAC4gE,UAAAA,CAAW5jF,MAAM,CAAA,CAAA;YAClEijF,gBAAiB/2D,CAAAA,MAAM,GAAG03D,UAAAA,CAAW13D,MAAM,CAAA;AAC3C,YAAA,IAAI,CAAC62D,OAAO,CAAC1gF,IAAI,CAAC4gF,gBAAAA,CAAAA,CAAAA;AACpB,SAAA;AACF,KAAA,CAAA;AAvKWR,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2B3kD,SAwKvC,EAAA;AAxKY2kD,kBAAAA,GAAAA,UAAAA,CAAAA;IADZxkE,YAAa,CAAA,oBAAA,CAAA;AACDwkE,CAAAA,EAAAA,kBAAAA,CAAAA;;AC1BN,IAAA,iBAAMoB,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,CAcE1rE,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AAEN,QAAA,KAAA,CAAKmxD,KAAK,GAAG;YACXJ,SAAW,EAAA,CAAA;YACX0B,SAAW,EAAA,CAAA;YACXC,MAAQ,EAAA,KAAA;AACV,SAAA,CAAA;AAEA,QAAA,KAAA,CAAKC,QAAQ,GAAG;YACdF,SAAW,EAAA,CAAA;YACXG,UAAY,EAAA,CAAA;YACZC,SAAW,EAAA,CAAA;YACXH,MAAQ,EAAA,KAAA;AACV,SAAA,CAAA;AAEA,QAAA,KAAA,CAAKO,WAAW,GAAG;YACjBP,MAAQ,EAAA,KAAA;AACV,SAAA,CAAA;AAEA,QAAA,KAAA,CAAKI,gBAAgB,GAAG;YACtBC,UAAY,EAAA,CAAA;YACZr+D,UAAY,EAAA,CAAA;YACZs+D,QAAU,EAAA,CAAA;YACVN,MAAQ,EAAA,KAAA;AACV,SAAA,CAAA;;;AAvCSgZ,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;IA0CX,MAASvlD,CAAAA,OAMR,GAND,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAM7mB,WAAc,GAAA,IAAI,CAACnT,IAAI,CAACmT,WAAW,CAAA;AAEzC,QAAA,IAAIA,WAAa,EAAA;AACfA,YAAAA,WAAAA,CAAYsoB,WAAW,CAACspC,YAAY,GAAG,IAAI,CAAA;AAC7C,SAAA;AACF,KAAA,CAAA;AAhDWwa,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0B/lD,SAiDtC,EAAA;;AA/CE3f,IAAAA,SAAAA,EAAAA;AAFU0lE,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAKV1lE,IAAAA,SAAAA,EAAAA;AALU0lE,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,UAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAQV1lE,IAAAA,SAAAA,EAAAA;AARU0lE,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,aAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAWV1lE,IAAAA,SAAAA,EAAAA;AAXU0lE,CAAAA,EAAAA,iBAAAA,CAAAA,SAAAA,EAAAA,kBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,iBAAAA,GAAAA,UAAAA,CAAAA;IADZ5lE,YAAaoG,CAAAA,QAAa,CAACw/D,iBAAiB,CAAA;AAChCA,CAAAA,EAAAA,iBAAAA,CAAAA;;ACuBb;;AAEC,IACM,IAAA,eAAMC,iBAAD,SAAL,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,CAoBE3rE,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAhBE4sD,OAAU,GAAA,IAAA,CAAA;AAGpB;;AAEC,MAAA,KAAA,CACS2c,eAAe,IAAIC,YAAAA,EAAAA,CAAAA;AAGrBoC,QAAAA,KAAAA,CAAAA,MAAAA,GAAS,IAAIt3E,KAAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;;AAwLpC2wE,QAAAA,KAAAA,CAAAA,gBAAAA,GAAmB,SAAC7P,KAAAA,EAAAA;AAClB,YAAA,IAAMyW,aAAa7jD,OAAQmI,CAAAA,SAAS,CAAC,KAAA,CAAKtZ,SAAS,CAAC/pB,IAAI,CAACsB,CAAC,EAAE,KAAKyoB,CAAAA,SAAS,CAAC/pB,IAAI,CAAC3D,CAAC,EAAE,CAAA,CAAA,CAAA;AACnF,YAAA,IAAM6xC,cAAc6wC,UAAW76D,CAAAA,WAAW,CAAC,KAAK6F,CAAAA,SAAS,CAAC4lB,cAAc,EAAA,CAAA,CAAA;YACxE,IAAMqvC,EAAAA,GAAK,MAAKC,WAAW,CAAA;AAE3B,YAAA,IAAI3W,SAAS0W,EAAI,EAAA;AACf,gBAAA,KAAA,CAAKvC,YAAY,CAACE,WAAW,CAAC,KAAA,CAAK/wC,QAAQ,EAAEsC,WAAAA,CAAAA,CAAAA;AAC7C,gBAAA,IAAM0uC,IAAO,GAAA,KAAA,CAAKH,YAAY,CAACI,kBAAkB,EAAA,CAAA;AAEjD,gBAAA,IAAID,IAAM,EAAA;AAEI,oBAAA,IAAA,iBAAA,CAAA;oBADZ,OAAO;AACLrB,wBAAAA,QAAAA,EAAU,EAAA,iBAAA,GAAA,KAAA,CAAK0D,WAAW,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,CAAkB1D,QAAQ,KAAI,CAAA;AACxCpqE,wBAAAA,IAAAA,EAAMyrE,KAAKzrE,IAAI;AACf2qE,wBAAAA,SAAAA,EAAWc,KAAKA,IAAI;wBACpBtzC,eAAiB,EAAA,KAAA,CAAKzO,QAAQ,CAACigC,IAAI,KAAK17C,QAAa,CAACi8C,KAAK;AAC7D,qBAAA,CAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AAjME,QAAA,KAAA,CAAKxgC,QAAQ,GAAG;YACdqkD,UAAY9/D,EAAAA,UAAe,CAAC+/D,IAAI;YAChCtlB,QAAUz6C,EAAAA,YAAiB,CAAC06C,KAAK;YACjC1G,OAAS,EAAA,KAAA,CAAKlgD,MAAM,CAACksE,YAAY;YACjCC,SAAW,EAAA,KAAA;YACXC,oBAAsB,EAAA,KAAA;YACtBxkB,IAAM17C,EAAAA,QAAa,CAAC27C,MAAM;YAC1BoiB,IAAM,EAAA,CAAA;AACR,SAAA,CAAA;AAEA,QAAA,KAAA,CAAKoC,eAAe,GAAG9f,QAAAA,CAASljE,MAAM,CAAC,KAAA,CAAK2W,MAAM,EAAE;YAClDoyD,UAAY,EAAA;gBACVC,IAAM,EAAA;AACJp0D,oBAAAA,IAAAA,EAAMk7C,UAAU8S,KAAK;oBACrBn/D,IAAM,EAAA,CAAA;AACNqN,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA;wBACrB,CAAC,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,CAAA;wBACX,CAAC,GAAA;wBAAK,CAAC,GAAA;AAAK,wBAAA,CAAA;AACZ,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,CAAA;AACV,wBAAA,GAAA;wBAAK,CAAC,GAAA;AAAK,wBAAA,CAAA;AACZ,qBAAA,CAAA;AACH,iBAAA;gBACAsrC,GAAK,EAAA;oBACHx/E,IAAM,EAAA,CAAA;oBACN1B,MAAQ,EAAA,CAAA;oBACRmhF,UAAY,EAAA,IAAA;AACZtuE,oBAAAA,IAAAA,EAAMk7C,UAAU8S,KAAK;AACrB9xD,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAE,qBAAA,CAAA;AACjD,iBAAA;AACF,aAAA;YACAwrC,OAAS,EAAA;AAAEryE,gBAAAA,IAAAA,EAAM,IAAImnC,WAAY,CAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA,CAAA;gBAAGirC,UAAY,EAAA,IAAA;AAAK,aAAA;AACvEra,YAAAA,IAAAA,EAAM/Y,UAAUszB,SAAS;YACzBna,SAAW,EAAA,CAAA;AACb,SAAA,CAAA,CAAA;QACA,KAAK55B,CAAAA,QAAQ,GAAG,KAAA,CAAK2zC,eAAe,CAAA;AAEpC,QAAA,IAAMtkD,WAAW2hC,QAASrgE,CAAAA,MAAM,CAAC,KAAA,CAAK2W,MAAM,EAAE;YAC5CqmD,MAAQ,EAAA;gBACNoI,QAAUie,EAAAA,QAAAA;gBACV1c,MAAQ2c,EAAAA,QAAAA;gBACRC,MAAQ,EAAA,IAAA;AACV,aAAA;AACF,SAAA,CAAA,CAAA;AAEA,QAAA,KAAA,CAAK7kD,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,KAAKA,CAAAA,QAAQ,CAAC0iC,QAAQ,CAAC,UAAU,IAAIn2D,KAAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QACpD,KAAKs1E,CAAAA,WAAW,GAAG,IAAIte,aAActrD,CAAAA,MAAAA,CAAAA,CAAAA;QAErC,KAAK6sE,CAAAA,iBAAiB,CAAC,KAAA,CAAKllD,QAAQ,CAAA,CAAA;;;AAvE3BgkD,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AA0EX;;;;AAIC,MACD9e,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAYD,OAAgB,EAAA;QAC1B,IAAI,CAACA,OAAO,GAAGA,OAAAA,CAAAA;AACjB,KAAA,CAAA;AAEA;;;MAIAE,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;QACE,OAAO,IAAI,CAACF,OAAO,CAAA;AACrB,KAAA,CAAA;AAgBAnC,IAAAA,MAAAA,CAAAA,QAOC,GAPDA,SAAAA,QAAAA,CAAUjzD,KAAwB,EAAA;QAChC,IAASrQ,YAALqQ,CAAAA,KAAAA,EAAiBlD,KAAO,CAAA,EAAA;AAC1B,YAAA,IAAI,CAACs3E,MAAM,CAACn8E,QAAQ,CAAC+H,KAAAA,CAAAA,CAAAA;SAChB,MAAA;AACL,YAAA,IAAI,CAACo0E,MAAM,CAACr8E,YAAY,CAACiI,KAAAA,CAAAA,CAAAA;AAC3B,SAAA;QACA,IAAI,CAACuwB,QAAQ,CAAC0iC,QAAQ,CAAC,QAAU,EAAA,IAAI,CAACmhB,MAAM,CAAA,CAAA;AAC9C,KAAA,CAAA;AA6BA,IAAA,MAAA,CAAMrhB,UAWL,GAXD,SAAMA,UAAAA,CAAYuiB,KAAuB,EAAA;;eAAzC,mBAAA,CAAA,WAAA;AACM5sB,YAAAA,IAAAA,OAAAA,CAAAA;;;;8BAEA,OAAO4sB,KAAU,KAAA,QAAO,CAAxB,EAAA,OAAA;;;;AACQ,wBAAA,OAAA;;AAAM/tB,4BAAAA,OAAAA,CAAQkB,SAAS,CAAC6sB,KAAAA,EAAO,KAAK3gF,CAAAA,IAAI,CAAC6T,MAAM,CAAA;;;wBAAzDkgD,OAAU,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;wBAEVA,OAAU4sB,GAAAA,KAAAA,CAAAA;;;wBAGZ,KAAKnlD,CAAAA,QAAQ,CAACu4B,OAAO,GAAGA,OAAAA,CAAAA;AACxB,wBAAA,KAAA,CAAKn4B,QAAQ,CAACwiC,UAAU,CAAC,UAAYrK,EAAAA,OAAAA,CAAAA,CAAAA;;;;;;AACvC,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAS95B,QAaR,GAbD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;QAC3B,IAAK,IAAI/F,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACi/B,SAAS,CAACx/B,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC9C,YAAA,IAAMw/B,QAAW,GAAA,IAAI,CAACP,SAAS,CAACj/B,CAAE,CAAA,CAAA;AAElCw/B,YAAAA,QAAAA,CAAS2pC,UAAU,CAAC,OAAA,EAAS,IAAI,CAAC76C,SAAS,CAAC/pB,IAAI,CAAA,CAAA;AAEhD,YAAA,IAAI,IAAI,CAAC66B,QAAQ,CAACqkD,UAAU,KAAK9/D,UAAe,CAAC6gE,SAAS,IACxD,IAAI,CAACplD,QAAQ,CAACqkD,UAAU,KAAK9/D,UAAe,CAAC8gE,kBAAkB,IAC/D,IAAI,CAACrlD,QAAQ,CAACqkD,UAAU,KAAK9/D,UAAe,CAAC+gE,oBAAoB,EACjE;AACAllD,gBAAAA,QAAAA,CAASorC,UAAU,CAAC,QAAA,EAAU,IAAI,CAACt8C,SAAS,CAACtmB,KAAK,CAAA,CAAA;AACpD,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASm3B,MAQR,GARD,SAASA,MAAAA,CAAQC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAACmlC,UAAU,EAAI,EAAA;AACtB,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAAC8c,WAAW,CAAC7d,eAAe,CAACpkC,QAAAA,CAAAA,CAAAA;QAEjC,IAAI,CAACulD,IAAI,CAACvlD,QAAAA,CAAAA,CAAAA;AACZ,KAAA,CAAA;AAEA;;AAEC,MACDokC,MAAAA,CAAAA,eASC,GATDA,SAAAA,gBAAiBpkC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAACT,kBAAkB,EAAE;AAC5B,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAM2iD,iBAAoB,GAAA,IAAI,CAAC9hD,QAAQ,CAAC+hD,SAAS,CAAA;AAEjD,QAAA,IAAI,CAAC/hD,QAAQ,CAAC+hD,SAAS,GAAG,KAAA,CAAA;QAC1B,IAAI,CAACoD,IAAI,CAACvlD,QAAAA,CAAAA,CAAAA;AACV,QAAA,IAAI,CAACI,QAAQ,CAAC+hD,SAAS,GAAGD,iBAAAA,CAAAA;AAC5B,KAAA,CAAA;IAEA,MAAS1jD,CAAAA,OAER,GAFD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAI,CAACh6B,IAAI,CAAC84E,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAA;AACpD,KAAA,CAAA;IAuBA/qC,MAAAA,CAAAA,cAOC,GAPDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAMc,WAAc,GAAA,IAAI,CAACnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;QAEjD,IAAI,CAAC8sC,YAAY,CAACE,WAAW,CAAC,IAAI,CAAC/wC,QAAQ,EAAEsC,WAAAA,CAAAA,CAAAA;AAC7C,QAAA,IAAMrC,WAAc,GAAA,IAAI,CAAC4wC,YAAY,CAACrvC,cAAc,EAAA,CAAA;QAEpD,OAAOvB,WAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQk0C,iBAmCP,GAnCD,SAAQA,iBAAAA,CAAmBllD,QAAsB,EAAA;AAC/C,QAAA,IAAQigC,IAAwDjgC,GAAAA,QAAAA,CAAxDigC,IAAMukB,EAAAA,SAAAA,GAAkDxkD,SAAlDwkD,SAAWxlB,EAAUU,SAA6B1/B,GAAAA,QAAAA,CAAvCg/B,QAAqBsjB,EAAAA,IAAAA,GAAkBtiD,QAAlBsiD,CAAAA,IAAAA,EAAM/pB,UAAYv4B,QAAZu4B,CAAAA,OAAAA,CAAAA;AACpD,QAAA,IAAMmI,QAAW,GAAA,IAAI,CAACuhB,WAAW,CAACvhB,QAAQ,CAAA;QAC1C,IAAMtgC,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAE9BA,QAAAA,QAAAA,CAAS4+B,QAAQ,GAAG,IAAA,CAAA;AACpB5+B,QAAAA,QAAAA,CAAS4iC,SAAS,GAAG,IAAA,CAAA;AACrB5iC,QAAAA,QAAAA,CAAS6iC,SAAS,GAAGuhB,SAAAA,CAAAA;QACrBpkD,QAAS8iC,CAAAA,UAAU,GAAGof,IAAAA,KAAS/iF,SAAY,GAAA;AAAC+iF,YAAAA,IAAAA;AAAMA,YAAAA,IAAAA;SAAK,GAAG/iF,SAAAA,CAAAA;AAE1DkgE,QAAAA,YAAAA,CAAar/B,QAAUs/B,EAAAA,SAAAA,CAAAA,CAAAA;;AAEvBe,QAAAA,WAAAA,CAAYrgC,QAAUsgC,EAAAA,QAAAA,CAAAA,CAAAA;AACtBV,QAAAA,WAAAA,CAAY5/B,QAAU6/B,EAAAA,IAAAA,CAAAA,CAAAA;AAEtB7/B,QAAAA,QAAAA,CAASs+B,MAAM,CAACD,UAAU,CAAC+mB,UAAU,GAAG,sCAAA,CAAA;AACxCplD,QAAAA,QAAAA,CAASqiD,UAAU,CAAC,YAAA,EAAc,IAAIl2E,OAAQ,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QACvD6zB,QAASwiC,CAAAA,UAAU,CAAC,UAAYrK,EAAAA,OAAAA,CAAAA,CAAAA;AAEhC,QAAA,IAAMktB,gBAAgB1mB,gBAAiBW,CAAAA,SAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAMgmB,YAAY,IAAIn5E,OAAAA,EAAAA,CAAAA;QAEtBm5E,SAAUj/E,CAAAA,CAAC,GAAGu5B,QAASwkD,CAAAA,SAAS,GAAG,CAAExkD,QAAAA,CAASykD,oBAAoB,GAAI,CAAA,CAAA;AACtEiB,QAAAA,SAAAA,CAAUlkF,CAAC,GAAGikF,aAAAA,CAAAA;QACdC,SAAUj7E,CAAAA,CAAC,GAAGu1B,QAAAA,CAASqkD,UAAU,CAAA;AACjCqB,QAAAA,SAAAA,CAAUl5E,CAAC,GAAGk0D,QAAAA,CAAAA;QACdtgC,QAASqiD,CAAAA,UAAU,CAAC,YAAciD,EAAAA,SAAAA,CAAAA,CAAAA;QAElC,IAAIA,SAAAA,CAAUj/E,CAAC,KAAK,CAAA,IAAM,IAAI,CAACw7E,WAAW,CAACre,gBAAgB,EAAG;AAC5DxjC,YAAAA,QAAAA,CAASulD,WAAW,CAAC,YAAA,CAAA,CAAA;SAChB,MAAA;AACLvlD,YAAAA,QAAAA,CAASwlD,YAAY,CAAC,YAAA,CAAA,CAAA;AACxB,SAAA;QAEA,OAAOxlD,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQmlD,IAIP,GAJD,SAAQA,IAAAA,CAAMvlD,QAAkB,EAAA;QAC9B,IAAK,IAAIp/B,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACi/B,SAAS,CAACx/B,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC9Co/B,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAI,EAAA,IAAI,CAACjV,SAAS,CAACj/B,EAAE,EAAEA,CAAAA,CAAAA,CAAAA;AAC3F,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS+e,QAuBR,GAvBD,SAASA,QAAAA,CAAUnN,IAAa,EAAA;AAC9B,QAAA,iBAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEf,QAAA,IAAMqzE,mBAAuBrzE,GAAAA,IAAAA,CAAAA;AACZqzE,QAAAA,IAAAA,6BAAAA,CAAAA;AAAjB,QAAA,IAAM7lD,WAAW6lD,CAAAA,6BAAAA,GAAAA,oBAAoB7lD,QAAQ,KAAA,IAAA,GAA5B6lD,gCAAgC,EAAC,CAAA;QAElD,IAAMxD,WAAAA,GAAcwD,oBAAoBvD,IAAI,CAAA;AAE5C,QAAA,IAAID,WAAa,EAAA;AACf,YAAA,IAAI,CAACJ,WAAW,CAACje,cAAc,CAACqe,WAAAA,CAAAA,CAAAA;AAClC,SAAA;AAGcriD,QAAAA,IAAAA,oBAAAA,EACFA,kBAIJA,EAAAA,cAAAA,CAAAA;QANR,IAAI,CAACA,QAAQ,GAAG;YACdqkD,UAAYrkD,EAAAA,CAAAA,uBAAAA,QAASqkD,CAAAA,UAAU,YAAnBrkD,oBAAuBzb,GAAAA,UAAe,CAAC+/D,IAAI;YACvDtlB,QAAUh/B,EAAAA,CAAAA,qBAAAA,QAASg/B,CAAAA,QAAQ,YAAjBh/B,kBAAqBzb,GAAAA,YAAiB,CAAC06C,KAAK;AACtD1G,YAAAA,OAAAA,EAASv4B,SAASu4B,OAAO,GAAG,IAAI,CAAClgD,MAAM,CAAC6K,UAAU,CAAU8c,QAAAA,CAASu4B,OAAO,CAAI,GAAA,IAAI,CAAClgD,MAAM,CAACksE,YAAY;YACxGC,SAAW,EAAA,CAAC,CAACxkD,QAAAA,CAASwkD,SAAS;AAC/BC,YAAAA,oBAAAA,EAAsB,CAAC,CAACzkD,QAASykD,CAAAA,oBAAoB,IAAK,IAAI,CAACxC,WAAW,CAACvhB,QAAQ,KAAK9B,QAAAA,CAASgC,IAAI;YACrGX,IAAMjgC,EAAAA,CAAAA,iBAAAA,QAASigC,CAAAA,IAAI,YAAbjgC,cAAiBzb,GAAAA,QAAa,CAAC27C,MAAM;AAC3CoiB,YAAAA,IAAAA,EAAM,IAAI,CAACL,WAAW,CAACle,WAAW,EAAA;AACpC,SAAA,CAAA;AAEA,QAAA,IAAI,CAACmhB,iBAAiB,CAAC,IAAI,CAACllD,QAAQ,CAAA,CAAA;AACtC,KAAA,CAAA;AArSWgkD,IAAAA,aAAAA,CAAAA,eAAAA,EAAAA;;YAsHPn0E,GAAAA,EAAAA,OAAAA;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACo0E,MAAM,CAAA;AACpB,aAAA;;;;AAIC,MACD,aAAWtlF,KAAY,EAAA;gBACrB,IAAI,CAACmkE,QAAQ,CAACnkE,KAAAA,CAAAA,CAAAA;AAChB,aAAA;;;AA/HWqlF,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBpkD,iBAsSpC;;;;;;;ACnRWvjB,CAAAA,SAAAA,qBAAAA,EAAAA;;;;;GAAAA,qBAAAA,KAAAA,qBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAyHL,IAAA,cAAMypE,iBAAD,SAAL,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,CAsCEztE,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAtCA0tE,UAAa,GAAA,IAAA,CAAA;cACbC,aAAgB,GAAA,IAAA,CAAA;AAChBC,QAAAA,KAAAA,CAAAA,YAAAA,GAAe,IAAIC,YAAAA,EAAAA,CAAAA;AAEnBC,QAAAA,KAAAA,CAAAA,KAAAA,GAAiB,EAAE,CAAA;cACnBC,gBAAqC,GAAA;YAC3C9zE,KAAO,EAAA,CAAA;YACP+zE,SAAW,EAAA,GAAA;YACX/W,GAAK/qD,EAAAA,OAAY,CAAC+hE,IAAI;YACtB7e,IAAMljD,EAAAA,QAAa,CAACgiE,KAAK;YACzBC,UAAY,EAAA,EAAA;AACd,SAAA,CAAA;cAEQC,WAAc,GAAA,CAAA,CAAA;cACdC,SAAYniE,GAAAA,OAAY,CAAC+hE,IAAI,CAAA;cAC7BK,UAAapiE,GAAAA,QAAa,CAACgiE,KAAK,CAAA;AAChCK,QAAAA,KAAAA,CAAAA,OAAAA,GAAmB,EAAE,CAAA;AAG7B;;AAEC,MAAA,KAAA,CACOhF,eAAe,IAAIC,YAAAA,EAAAA,CAAAA;AAGnBgF,QAAAA,KAAAA,CAAAA,aAAAA,GAA4B,EAAE,CAAA;AAC9BC,QAAAA,KAAAA,CAAAA,eAAAA,GAA8B,EAAE,CAAA;AAoJxCxJ,QAAAA,KAAAA,CAAAA,gBAAAA,GAAmB,SAAC7P,KAAAA,EAAAA;AAClB,YAAA,IAAMyW,aAAa7jD,OAAQmI,CAAAA,SAAS,CAAC,KAAA,CAAKtZ,SAAS,CAAC/pB,IAAI,CAACsB,CAAC,EAAE,KAAKyoB,CAAAA,SAAS,CAAC/pB,IAAI,CAAC3D,CAAC,EAAE,CAAA,CAAA,CAAA;AACnF,YAAA,IAAM6xC,cAAc6wC,UAAW76D,CAAAA,WAAW,CAAC,KAAK6F,CAAAA,SAAS,CAAC4lB,cAAc,EAAA,CAAA,CAAA;AAExE,YAAA,IAAI24B,KAAO,EAAA;AACT,gBAAA,KAAA,CAAKmU,YAAY,CAACE,WAAW,CAAC,KAAA,CAAK/wC,QAAQ,EAAEsC,WAAAA,CAAAA,CAAAA;AAC7C,gBAAA,IAAM0uC,IAAO,GAAA,KAAA,CAAKH,YAAY,CAACI,kBAAkB,EAAA,CAAA;AAEjD,gBAAA,IAAID,IAAM,EAAA;oBACR,OAAO;wBACLrB,QAAU,EAAA,CAAA;AACVpqE,wBAAAA,IAAAA,EAAMyrE,KAAKzrE,IAAI;AACf2qE,wBAAAA,SAAAA,EAAWc,KAAKA,IAAI;wBACpBtzC,eAAiB,EAAA,KAAA,CAAKs4C,eAAe,CAAC9mB,IAAI,KAAK17C,QAAa,CAACi8C,KAAK;AACpE,qBAAA,CAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAA;AAvJE,QAAA,KAAA,CAAKumB,eAAe,GAAG;YACrB1C,UAAY9/D,EAAAA,UAAe,CAAC+/D,IAAI;YAChCtlB,QAAUz6C,EAAAA,YAAiB,CAAC06C,KAAK;YACjC1G,OAAS,EAAA,KAAA,CAAKlgD,MAAM,CAACksE,YAAY;YACjCC,SAAW,EAAA,KAAA;YACXC,oBAAsB,EAAA,KAAA;YACtBxkB,IAAM17C,EAAAA,QAAa,CAAC27C,MAAM;YAC1BoiB,IAAM,EAAA,CAAA;AACR,SAAA,CAAA;AAEA,QAAA,KAAA,CAAKL,WAAW,GAAG,IAAIte,aAAAA,CAAc,MAAKtrD,MAAM,CAAA,CAAA;;;AAKhD,QAAA,IAAM2uE,kBAAiC,GAAA;YACrC1wE,IAAMiO,EAAAA,QAAa,CAAC0iE,KAAK;AACzBp3E,YAAAA,KAAAA,EAAO,IAAIlD,KAAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAC5B,SAAA,CAAA;QAEA,KAAKi6E,CAAAA,OAAO,CAACrkF,IAAI,CAACykF,kBAAAA,CAAAA,CAAAA;AAElB,QAAA,IAAME,iBAAgC,GAAA;YACpC5wE,IAAMiO,EAAAA,QAAa,CAAC0iE,KAAK;AACzBp3E,YAAAA,KAAAA,EAAO,IAAIlD,KAAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;AAC5B,SAAA,CAAA;QAEA,KAAKw5E,CAAAA,KAAK,CAAC5jF,IAAI,CAAC2kF,iBAAAA,CAAAA,CAAAA;AAEhB,QAAA,KAAA,CAAKC,eAAe,GAAG;YACrB7wE,IAAMiO,EAAAA,kBAAuB,CAAC6iE,MAAM;AACpCv3C,YAAAA,MAAAA,EAAQ,EAAE;AACVw3C,YAAAA,SAAAA,EAAW,EAAE;AACbC,YAAAA,UAAAA,EAAY,EAAE;AACdC,YAAAA,MAAAA,EAAQ,EAAE;AACZ,SAAA,CAAA;;;AAKA,QAAA,KAAA,CAAKx2C,QAAQ,GAAG6zB,QAAAA,CAASljE,MAAM,CAAC,KAAA,CAAK2W,MAAM,EAAE;YAC3CoyD,UAAY,EAAA;gBACVC,IAAM,EAAA;AACJp0D,oBAAAA,IAAAA,EAAMk7C,UAAU8S,KAAK;oBACrBn/D,IAAM,EAAA,CAAA;AACNqN,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA;wBACrB,CAAC,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,CAAA;wBACX,CAAC,GAAA;wBAAK,CAAC,GAAA;AAAK,wBAAA,CAAA;AACZ,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,CAAA;AACV,wBAAA,GAAA;wBAAK,CAAC,GAAA;AAAK,wBAAA,CAAA;AACZ,qBAAA,CAAA;AACH,iBAAA;gBACAsrC,GAAK,EAAA;oBACHx/E,IAAM,EAAA,CAAA;oBACN1B,MAAQ,EAAA,CAAA;oBACRmhF,UAAY,EAAA,IAAA;AACZtuE,oBAAAA,IAAAA,EAAMk7C,UAAU8S,KAAK;AACrB9xD,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA;AAAC,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAG,wBAAA,CAAA;AAAE,qBAAA,CAAA;AACjD,iBAAA;AACF,aAAA;YACAwrC,OAAS,EAAA;AAAEryE,gBAAAA,IAAAA,EAAM,IAAImnC,WAAY,CAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA,CAAA;gBAAGirC,UAAY,EAAA,IAAA;AAAK,aAAA;AACvEra,YAAAA,IAAAA,EAAM/Y,UAAUszB,SAAS;YACzBna,SAAW,EAAA,CAAA;AACb,SAAA,CAAA,CAAA;AAEA,QAAA,KAAA,CAAK55B,QAAQ,CAAC8zB,SAAS,CAACtiE,IAAI,CAAC;YAC3BkB,MAAQ,EAAA,CAAA;YACR+jF,UAAY,EAAA,CAAA;YACZC,WAAa,EAAA,CAAA;SACZ,EAAA;YACDhkF,MAAQ,EAAA,CAAA;YACR+jF,UAAY,EAAA,CAAA;YACZC,WAAa,EAAA,CAAA;AACf,SAAA,CAAA,CAAA;;;AAlHS3B,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAqHX,MAAStnD,CAAAA,OAER,GAFD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAI,CAACh6B,IAAI,CAAC84E,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAA;AACpD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS7+C,QAWR,GAXD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;QAC3B,IAAI,IAAI,CAACo/E,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC2B,SAAS,CAAC,IAAI,CAACP,eAAe,CAAA,CAAA;AACnC,YAAA,IAAI,CAACQ,qBAAqB,CAAC,IAAI,CAAC1B,YAAY,CAAC2B,SAAS,CAAA,CAAA;YACtD,IAAI,CAAC7B,UAAU,GAAG,KAAA,CAAA;AACpB,SAAA;QAEA,IAAI,IAAI,CAACC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC6B,eAAe,EAAA,CAAA;YACpB,IAAI,CAAC7B,aAAa,GAAG,KAAA,CAAA;AACvB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASjmD,MAIR,GAJD,SAASA,MAAAA,CAAQC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAACiiD,WAAW,CAAC7d,eAAe,CAACpkC,QAAAA,CAAAA,CAAAA;QAEjC,IAAI,CAACulD,IAAI,CAACvlD,QAAAA,CAAAA,CAAAA;AACZ,KAAA,CAAA;AAEA;;AAEC,MACDokC,MAAAA,CAAAA,eAoBC,GApBDA,SAAAA,gBAAiBpkC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAACT,kBAAkB,EAAE;AAC5B,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI2iD,iBAAoB,GAAA,KAAA,CAAA;QAExB,IAAK,IAAIthF,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACimF,aAAa,CAACxmF,MAAM,EAAEO,CAAK,EAAA,CAAA;AAClDshF,YAAAA,iBAAAA,GAAoB,IAAI,CAAC2E,aAAa,CAACjmF,CAAAA,CAAE,CAACuhF,SAAS,CAAA;AACnD,YAAA,IAAI,CAAC0E,aAAa,CAACjmF,CAAE,CAAA,CAACuhF,SAAS,GAAG,KAAA,CAAA;AAClCniD,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAI,EAAA,IAAI,CAAC+xC,aAAa,CAACjmF,EAAE,EAAE,CAAA,CAAA,CAAA;AAC7F,YAAA,IAAI,CAACimF,aAAa,CAACjmF,CAAE,CAAA,CAACuhF,SAAS,GAAGD,iBAAAA,CAAAA;AACpC,SAAA;QAEA,IAAK,IAAIthF,EAAI,GAAA,CAAA,EAAGA,EAAI,GAAA,IAAI,CAACkmF,eAAe,CAACzmF,MAAM,EAAEO,EAAK,EAAA,CAAA;AACpDshF,YAAAA,iBAAAA,GAAoB,IAAI,CAAC4E,eAAe,CAAClmF,EAAAA,CAAE,CAACuhF,SAAS,CAAA;AACrD,YAAA,IAAI,CAAC2E,eAAe,CAAClmF,EAAE,CAAA,CAACuhF,SAAS,GAAG,KAAA,CAAA;AACpCniD,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAI,EAAA,IAAI,CAACgyC,eAAe,CAAClmF,GAAE,EAAE,CAAA,CAAA,CAAA;AAC/F,YAAA,IAAI,CAACkmF,eAAe,CAAClmF,EAAE,CAAA,CAACuhF,SAAS,GAAGD,iBAAAA,CAAAA;AACtC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQqD,IAQP,GARD,SAAQA,IAAAA,CAAMvlD,QAAkB,EAAA;QAC9B,IAAK,IAAIp/B,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACimF,aAAa,CAACxmF,MAAM,EAAEO,CAAK,EAAA,CAAA;AAClDo/B,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAI,EAAA,IAAI,CAAC+xC,aAAa,CAACjmF,EAAE,EAAE,CAAA,CAAA,CAAA;AAC/F,SAAA;QAEA,IAAK,IAAIA,EAAI,GAAA,CAAA,EAAGA,EAAI,GAAA,IAAI,CAACkmF,eAAe,CAACzmF,MAAM,EAAEO,EAAK,EAAA,CAAA;AACpDo/B,YAAAA,QAAAA,CAASolC,YAAY,CAAC,IAAI,CAACr0B,QAAQ,EAAE,IAAI,CAAC7hB,SAAS,CAAC4lB,cAAc,EAAI,EAAA,IAAI,CAACgyC,eAAe,CAAClmF,GAAE,EAAE,CAAA,CAAA,CAAA;AACjG,SAAA;AACF,KAAA,CAAA;IAqBA2xC,MAAAA,CAAAA,cAOC,GAPDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAMc,WAAc,GAAA,IAAI,CAACnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;QAEjD,IAAI,CAAC8sC,YAAY,CAACE,WAAW,CAAC,IAAI,CAAC/wC,QAAQ,EAAEsC,WAAAA,CAAAA,CAAAA;AAC7C,QAAA,IAAMrC,WAAc,GAAA,IAAI,CAAC4wC,YAAY,CAACrvC,cAAc,EAAA,CAAA;QAEpD,OAAOvB,WAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ22C,qBAkHP,GAlHD,SAAQA,qBAAAA,CAAuBC,SAAoB,EAAA;QACjD,IAAME,eAAAA,GAAkBF,UAAUE,eAAe,CAAA;AACjD,QAAA,IAAMC,WAAqB,EAAE,CAAA;AAC7B,QAAA,IAAMlD,UAAoB,EAAE,CAAA;;AAG5B,QAAA,IAAI,IAAI,CAACsB,KAAK,CAAC9lF,MAAM,GAAG,CAAG,EAAA;AACzB,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA6BynF,eAAiB,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnCE,gBAAAA,IAAAA,cAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAMC,KAAAA,GAAQD,eAAeC,KAAK,CAAA;AAClC,gBAAA,IAAMp4C,SAAmB,EAAE,CAAA;gBAC3B,IAAMq4C,WAAAA,GAAcrD,QAAQxkF,MAAM,CAAA;gBAClC,IAAM8nF,UAAAA,GAAaJ,QAAS1nF,CAAAA,MAAM,GAAG,CAAA,CAAA;AAErC4nF,gBAAAA,KAAAA,CAAMG,KAAK,CAACv4C,MAAAA,CAAAA,CAAAA;AACZo4C,gBAAAA,KAAAA,CAAMI,WAAW,CAACx4C,MAAQk4C,EAAAA,QAAAA,EAAUI,YAAYtD,OAASqD,EAAAA,WAAAA,CAAAA,CAAAA;AAC3D,aAAA;AACF,SAAA;QAEA,IAAMI,cAAAA,GAAiBzD,QAAQxkF,MAAM,CAAA;AAErC,QAAA,IAAI,IAAI,CAACumF,OAAO,CAACvmF,MAAM,GAAG,CAAG,EAAA;AAC3B,YAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA6BynF,eAAiB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAnCE,gBAAAA,IAAAA,eAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAMC,MAAAA,GAAQD,gBAAeC,KAAK,CAAA;AAClC,gBAAA,IAAMp4C,UAAmB,EAAE,CAAA;gBACPg1C,QAAQxkF,OAAM;gBAClC,IAAM8nF,WAAAA,GAAaJ,QAAS1nF,CAAAA,MAAM,GAAG,CAAA,CAAA;gBACrC,IAAMkoF,SAAAA,GAAY,IAAI,CAACnC,gBAAgB,CAAA;AAEvCmC,gBAAAA,SAAAA,CAAUjZ,GAAG,GAAG,IAAI,CAACoX,SAAS,CAAA;AAC9B6B,gBAAAA,SAAAA,CAAU9gB,IAAI,GAAG,IAAI,CAACkf,UAAU,CAAA;AAChC4B,gBAAAA,SAAAA,CAAUj2E,KAAK,GAAG,IAAI,CAACm0E,WAAW,CAAA;AAElC,gBAAA,IAAI+B,KAAQ,GAAA,IAAA,CAAA;gBAEZ,IAAI,IAAI,CAACrB,eAAe,CAAC7wE,IAAI,KAAKiO,kBAAuB,CAAC6iE,MAAM,EAAE;oBAChEoB,KAAQ,GAACP,OAAkBQ,SAAS,CAAA;AACtC,iBAAA;AAEAR,gBAAAA,MAAAA,CAAMG,KAAK,CAACv4C,OAAAA,CAAAA,CAAAA;AACZ64C,gBAAAA,SAAAA,CAAU74C,SAAQ04C,SAAW,EAAA,KAAA,EAAOC,OAAOT,QAAU,EAAA,CAAA,EAAGI,aAAYtD,OAASqD,CAAAA,CAAAA;AAC/E,aAAA;AACF,SAAA;QAEA,IAAMS,gBAAAA,GAAmB9D,OAAQxkF,CAAAA,MAAM,GAAGioF,cAAAA,CAAAA;QAC1C,IAAMb,WAAAA,GAAcM,QAAS1nF,CAAAA,MAAM,GAAG,CAAA,CAAA;;AAGtC,QAAA,IAAIuoF,gBAAgB,IAAI,CAAC73C,QAAQ,CAAC83C,gBAAgB,CAAC,MAAA,CAAA,CAAA;AACnD,QAAA,IAAIC,UAAU,IAAI,CAAC/3C,QAAQ,CAAC83C,gBAAgB,CAAC,KAAA,CAAA,CAAA;AAC7C,QAAA,IAAIE,UAAa,GAAA,IAAI,CAACh4C,QAAQ,CAACi4C,YAAY,EAAA,CAAA;AAE3C,QAAA,IAAI,CAACJ,aAAiBA,IAAAA,aAAAA,CAAcvoF,MAAM,GAAGonF,cAAc,CAAG,EAAA;YAC5DmB,aAAgB,GAAA,IAAIvvC,aAAaouC,WAAc,GAAA,CAAA,CAAA,CAAA;AACjD,SAAA;AAEA,QAAA,IAAI,CAACqB,OAAWA,IAAAA,OAAAA,CAAQzoF,MAAM,GAAGonF,cAAc,CAAG,EAAA;YAChDqB,OAAU,GAAA,IAAIzvC,aAAaouC,WAAc,GAAA,CAAA,CAAA,CAAA;AAC3C,SAAA;AAEA,QAAA,IAAI,CAACsB,UAAcA,IAAAA,UAAAA,CAAW1oF,MAAM,GAAGwkF,OAAAA,CAAQxkF,MAAM,EAAE;YACrD0oF,UAAa,GAAA,IAAIpvC,WAAYkrC,CAAAA,OAAAA,CAAQxkF,MAAM,CAAA,CAAA;AAC7C,SAAA;;QAGA,IAAIivC,IAAAA,GAAOhqC,OAAO2jF,SAAS,CAAA;QAC3B,IAAI15C,IAAAA,GAAOjqC,OAAO2jF,SAAS,CAAA;QAC3B,IAAIx5C,IAAAA,GAAOnqC,OAAO4jF,SAAS,CAAA;QAC3B,IAAIx5C,IAAAA,GAAOpqC,OAAO4jF,SAAS,CAAA;AAE3B,QAAA,IAAK,IAAItoF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI6mF,aAAa7mF,CAAK,EAAA,CAAA;AACpC,YAAA,IAAMuoF,eAAevoF,CAAI,GAAA,CAAA,CAAA;AACzB,YAAA,IAAMwoF,sBAAsBxoF,CAAI,GAAA,CAAA,CAAA;YAEhC,IAAM6F,CAAAA,GAAIshF,QAAQ,CAACqB,mBAAoB,CAAA,CAAA;AACvC,YAAA,IAAM5nF,CAAIumF,GAAAA,QAAQ,CAACqB,mBAAAA,GAAsB,CAAE,CAAA,CAAA;YAE3CR,aAAa,CAACO,aAAa,GAAG1iF,CAAAA,CAAAA;YAC9BmiF,aAAa,CAACO,YAAe,GAAA,CAAA,CAAE,GAAG3nF,CAAAA,CAAAA;YAClConF,aAAa,CAACO,YAAe,GAAA,CAAA,CAAE,GAAG,CAAA,CAAA;YAElC75C,IAAOlqC,GAAAA,IAAAA,CAAKI,GAAG,CAAC8pC,IAAM7oC,EAAAA,CAAAA,CAAAA,CAAAA;YACtB8oC,IAAOnqC,GAAAA,IAAAA,CAAKI,GAAG,CAAC+pC,IAAM/tC,EAAAA,CAAAA,CAAAA,CAAAA;YACtBiuC,IAAOrqC,GAAAA,IAAAA,CAAK+B,GAAG,CAACsoC,IAAMhpC,EAAAA,CAAAA,CAAAA,CAAAA;YACtBipC,IAAOtqC,GAAAA,IAAAA,CAAK+B,GAAG,CAACuoC,IAAMluC,EAAAA,CAAAA,CAAAA,CAAAA;AACxB,SAAA;;AAGA,QAAA,IAAM6nF,QAAQ55C,IAAOH,GAAAA,IAAAA,CAAAA;AACrB,QAAA,IAAMg6C,QAAQ55C,IAAOH,GAAAA,IAAAA,CAAAA;AAErB,QAAA,IAAK,IAAI3uC,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI6mF,aAAa7mF,EAAK,EAAA,CAAA;AACpC,YAAA,IAAMuoF,gBAAevoF,EAAI,GAAA,CAAA,CAAA;AACzB,YAAA,IAAM2oF,WAAW3oF,EAAI,GAAA,CAAA,CAAA;YAErBkoF,OAAO,CAACS,QAAS,CAAA,GAAG,CAACX,aAAa,CAACO,aAAAA,CAAa,GAAG75C,IAAG,IAAK+5C,KAAAA,CAAAA;AAC3DP,YAAAA,OAAO,CAACS,QAAAA,GAAW,CAAE,CAAA,GAAG,CAACX,aAAa,CAACO,aAAe,GAAA,CAAA,CAAE,GAAG55C,IAAG,IAAK+5C,KAAAA,CAAAA;AACrE,SAAA;;AAGAP,QAAAA,UAAAA,CAAWnjF,GAAG,CAACi/E,OAAAA,CAAAA,CAAAA;;AAGf,QAAA,IAAI,CAAC9zC,QAAQ,CAACy4C,gBAAgB,CAAC,MAAQZ,EAAAA,aAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAI,CAAC73C,QAAQ,CAACy4C,gBAAgB,CAAC,KAAOV,EAAAA,OAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAAC/3C,QAAQ,CAAC04C,YAAY,CAACV,UAAAA,CAAAA,CAAAA;AAC3B,QAAA,IAAI,CAACh4C,QAAQ,CAAC24C,YAAY,CAAC7E,QAAQxkF,MAAM,CAAA,CAAA;AAEzC,QAAA,IAAMspF,OAAU,GAAA,CAAA,CAAA;AAChB,QAAA,IAAMC,cAAc,IAAI,CAAC74C,QAAQ,CAAC8zB,SAAS,CAAC,CAAE,CAAA,CAAA;AAC9C,QAAA,IAAMglB,gBAAgB,IAAI,CAAC94C,QAAQ,CAAC8zB,SAAS,CAAC,CAAE,CAAA,CAAA;AAEhD+kB,QAAAA,WAAAA,CAAYpC,UAAU,GAAGc,cAAAA,CAAAA;QACzBuB,aAAcpmF,CAAAA,MAAM,GAAG6kF,cAAiBqB,GAAAA,OAAAA,CAAAA;AACxCE,QAAAA,aAAAA,CAAcrC,UAAU,GAAGmB,gBAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQjB,SAuEP,GAvED,SAAQA,SAAAA,CAAWoC,cAA+B,EAAA;QAChD,IAAI,CAAC7D,YAAY,CAAClsB,KAAK,EAAA,CAAA;AAEvB,QAAA,OAAQ+vB,eAAexzE,IAAI;YACzB,KAAKiO,kBAAuB,CAAC6iE,MAAM;AAAE,gBAAA;oBACnC,IAAM2C,mBAAAA,GAAsB,IAAI,CAAC5C,eAAe,CAAA;oBAChD,IAAMt3C,MAAAA,GAASk6C,oBAAoBl6C,MAAM,CAAA;oBACzC,IAAMw3C,SAAAA,GAAY0C,oBAAoB1C,SAAS,CAAA;oBAC/C,IAAMC,UAAAA,GAAayC,oBAAoBzC,UAAU,CAAA;oBAEjD,IAAoByC,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,mBAAAA,CAAoBxC,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArCU,wBAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;wBACT,IAAMpD,OAAAA,GAAUoD,MAAM+B,OAAO,CAAA;wBAC7B,IAAMC,UAAAA,GAAap6C,MAAM,CAACg1C,OAAO,CAAC,CAAE,CAAA,CAACp0C,KAAK,CAAC,CAAA;wBAE3C,IAAI,CAACw1C,YAAY,CAACiE,MAAM,CAACD,UAAWxjF,CAAAA,CAAC,EAAEwjF,UAAAA,CAAWzoF,CAAC,CAAA,CAAA;AAEnD,wBAAA,IAAK,IAAIZ,CAAI,GAAA,CAAA,EAAGA,IAAIikF,OAAQxkF,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;4BACvC,IAAMupF,UAAAA,GAAatF,OAAO,CAACjkF,CAAE,CAAA,CAAA;AAC7B,4BAAA,IAAMwpF,cAAiBvF,GAAAA,OAAO,CAACjkF,CAAAA,GAAI,CAAE,CAAA,CAAA;AACrC,4BAAA,IAAM6vC,KAAQZ,GAAAA,MAAM,CAACs6C,UAAAA,CAAW15C,KAAK,CAAC,CAAA;AACtC,4BAAA,IAAM+P,SAAY3Q,GAAAA,MAAM,CAACu6C,cAAAA,CAAe35C,KAAK,CAAC,CAAA;AAC9C,4BAAA,IAAM0R,QAAWmlC,GAAAA,UAAU,CAAC8C,cAAAA,CAAeC,SAAS,CAAC,CAAA;AACrD,4BAAA,IAAMjoC,QAAWilC,GAAAA,SAAS,CAAC8C,UAAAA,CAAWG,QAAQ,CAAC,CAAA;AAE/C,4BAAA,IAAI,CAACrE,YAAY,CAACsE,aAAa,CAACpoC,QAAS17C,CAAAA,CAAC,GAAG+5C,SAAAA,CAAU/5C,CAAC,EAAE07C,QAAAA,CAAS3gD,CAAC,GAAGg/C,UAAUh/C,CAAC,EAAE4gD,QAAS37C,CAAAA,CAAC,GAAGgqC,KAAAA,CAAMhqC,CAAC,EAAE27C,SAAS5gD,CAAC,GAAGivC,KAAMjvC,CAAAA,CAAC,EAAEivC,KAAMhqC,CAAAA,CAAC,EAAEgqC,KAAAA,CAAMjvC,CAAC,EAAE,CAAA,CAAA,CAAA;AACpJ,yBAAA;wBAEA,IAAIymF,KAAAA,CAAMO,KAAK,EAAE;4BACf,IAAM2B,WAAAA,GAAatF,OAAO,CAAC,CAAE,CAAA,CAAA;AAC7B,4BAAA,IAAMuF,kBAAiBvF,OAAO,CAACA,OAAQxkF,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAClD,4BAAA,IAAMowC,MAAQZ,GAAAA,MAAM,CAACs6C,WAAAA,CAAW15C,KAAK,CAAC,CAAA;AACtC,4BAAA,IAAM+P,UAAY3Q,GAAAA,MAAM,CAACu6C,eAAAA,CAAe35C,KAAK,CAAC,CAAA;AAC9C,4BAAA,IAAM0R,SAAWmlC,GAAAA,UAAU,CAAC8C,eAAAA,CAAeC,SAAS,CAAC,CAAA;AACrD,4BAAA,IAAMjoC,SAAWilC,GAAAA,SAAS,CAAC8C,WAAAA,CAAWG,QAAQ,CAAC,CAAA;AAE/C,4BAAA,IAAI,CAACrE,YAAY,CAACsE,aAAa,CAACpoC,SAAS17C,CAAAA,CAAC,GAAG+5C,UAAAA,CAAU/5C,CAAC,EAAE07C,SAAAA,CAAS3gD,CAAC,GAAGg/C,WAAUh/C,CAAC,EAAE4gD,SAAS37C,CAAAA,CAAC,GAAGgqC,MAAAA,CAAMhqC,CAAC,EAAE27C,UAAS5gD,CAAC,GAAGivC,MAAMjvC,CAAAA,CAAC,EAAEivC,MAAMhqC,CAAAA,CAAC,EAAEgqC,MAAAA,CAAMjvC,CAAC,EAAE,CAAA,CAAA,CAAA;4BAClJ,IAAI,CAACykF,YAAY,CAACwC,SAAS,EAAA,CAAA;AAC7B,yBAAA;AACF,qBAAA;AAEA,oBAAA,MAAA;AACF,iBAAA;YACA,KAAKlkE,kBAAuB,CAACimE,OAAO;AAAE,gBAAA;AACpC,oBAAA,IAAMC,WAAcX,GAAAA,cAAAA,CAAAA;oBAEpB,IAAI,CAAC7D,YAAY,CAACyE,OAAO,CAAC,CAAG,EAAA,CAAA,EAAGD,WAAYE,CAAAA,OAAO,EAAEF,WAAAA,CAAYG,OAAO,CAAA,CAAA;AAExE,oBAAA,MAAA;AACF,iBAAA;YACA,KAAKrmE,kBAAuB,CAACsmE,SAAS;AAAE,gBAAA;AACtC,oBAAA,IAAMC,aAAgBhB,GAAAA,cAAAA,CAAAA;oBAEtB,IAAI,CAAC7D,YAAY,CAAC8E,IAAI,CAAC,CAACD,aAAAA,CAAcx4E,KAAK,GAAG,CAAG,EAAA,CAACw4E,cAAcv4E,MAAM,GAAG,GAAGu4E,aAAcx4E,CAAAA,KAAK,EAAEw4E,aAAcv4E,CAAAA,MAAM,EAAEu4E,aAAAA,CAAc5f,SAAS,CAAA,CAAA;AAE9I,oBAAA,MAAA;AACF,iBAAA;YACA,KAAK3mD,kBAAuB,CAACymE,IAAI;AAAE,gBAAA;AACjC,oBAAA,IAAMC,QAAWnB,GAAAA,cAAAA,CAAAA;oBAEjB,IAAI,CAAC7D,YAAY,CAACiF,QAAQ,CAACD,QAASE,CAAAA,UAAU,EAAEF,QAASG,CAAAA,WAAW,EAAEH,QAASI,CAAAA,WAAW,EAAEJ,QAASK,CAAAA,cAAc,EAAEL,QAASM,CAAAA,cAAc,EAAEC,QAAAA,CAASR,IAAI,CAAA,CAAA;AAE3J,oBAAA,MAAA;AACF,iBAAA;YACA,KAAKzmE,kBAAuB,CAACknE,OAAO;AAAE,gBAAA;AACpC,oBAAA,IAAMC,WAAc5B,GAAAA,cAAAA,CAAAA;oBAEpB,IAAI,CAAC7D,YAAY,CAACiF,QAAQ,CAACQ,WAAYP,CAAAA,UAAU,EAAEO,WAAYv9C,CAAAA,MAAM,EAAEu9C,WAAYv9C,CAAAA,MAAM,EAAEu9C,WAAYxgB,CAAAA,SAAS,EAAEwgB,WAAYxgB,CAAAA,SAAS,EAAEsgB,QAAAA,CAASC,OAAO,CAAA,CAAA;AAEzJ,oBAAA,MAAA;AACF,iBAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ5D,CAAAA,eAQP,GARD,SAAQA,eAAAA,GAAAA;QACN,IAAK,IAAIjnF,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACulF,KAAK,CAAC9lF,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC1C,YAAA,IAAI,CAAC+qF,mBAAmB,CAAC,IAAI,CAAC9E,aAAa,CAACjmF,CAAAA,CAAE,EAAE,IAAI,CAACulF,KAAK,CAACvlF,CAAE,CAAA,CAAA,CAAA;AAC/D,SAAA;QAEA,IAAK,IAAIA,EAAI,GAAA,CAAA,EAAGA,EAAI,GAAA,IAAI,CAACgmF,OAAO,CAACvmF,MAAM,EAAEO,EAAK,EAAA,CAAA;AAC5C,YAAA,IAAI,CAAC+qF,mBAAmB,CAAC,IAAI,CAAC7E,eAAe,CAAClmF,EAAAA,CAAE,EAAE,IAAI,CAACgmF,OAAO,CAAChmF,EAAE,CAAA,CAAA,CAAA;AACnE,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ+qF,mBA6BP,GA7BD,SAAQA,mBAAqBvrD,CAAAA,QAAkB,EAAEwrD,KAAY,EAAA;AAC3DxrD,QAAAA,QAAAA,CAASxQ,QAAQ,CAAC,WAAag8D,EAAAA,KAAAA,CAAMt1E,IAAI,CAAA,CAAA;AAEzC,QAAA,IAAIs1E,MAAMt1E,IAAI,KAAKiO,QAAa,CAAC0iE,KAAK,EAAE;YACtC7mD,QAASvwB,CAAAA,KAAK,GAAG+7E,KAAAA,CAAM/7E,KAAK,CAAA;SACvB,MAAA,IAAI+7E,KAAMt1E,CAAAA,IAAI,KAAKiO,QAAa,CAACsnE,cAAc,IAAID,KAAAA,CAAMt1E,IAAI,KAAKiO,QAAa,CAACunE,eAAe,IAAIF,KAAMt1E,CAAAA,IAAI,KAAKiO,QAAa,CAACwnE,cAAc,EAAE;YACrJ,IAAI,CAACC,sBAAsB,CAAC5rD,QAAUwrD,EAAAA,KAAAA,CAAMK,aAAa,EAAEL,KAAM3B,CAAAA,UAAU,EAAE2B,KAAAA,CAAMM,QAAQ,CAAA,CAAA;SACtF,MAAA,IAAIN,MAAMt1E,IAAI,KAAKiO,QAAa,CAAC6yC,OAAO,EAAE;AAC/Ch3B,YAAAA,QAAAA,CAASmrC,MAAM,CAAC,iBAAmBqgB,EAAAA,KAAAA,CAAMO,SAAS,CAAA,CAAA;AAClD/rD,YAAAA,QAAAA,CAAS2pC,UAAU,CAAC,YAAc,EAAA,IAAIviE,OAAQokF,CAAAA,KAAAA,CAAMrzB,OAAO,CAACjB,QAAQ,EAAA,EAAIs0B,KAAMrzB,CAAAA,OAAO,CAAChB,SAAS,EAAA,CAAA,CAAA,CAAA;YAE/F,IAAMvmB,WAAAA,GAAc,IAAI,CAACuB,cAAc,EAAA,CAAA;AACvC,YAAA,IAAM65C,WAAWp7C,WAAY+wC,CAAAA,IAAI,CAAC,CAAA,CAAE,CAACpzC,EAAE,CAAA;AACvC,YAAA,IAAM09C,aAAar7C,WAAY+wC,CAAAA,IAAI,CAAC,CAAA,CAAE,CAACnzC,EAAE,CAAA;AAEzCxO,YAAAA,QAAAA,CAAS2pC,UAAU,CAAC,WAAa,EAAA,IAAIviE,QAAQ4kF,QAAS3lF,CAAAA,CAAC,GAAG4lF,UAAAA,CAAW5lF,CAAC,EAAE2lF,QAAAA,CAAS5qF,CAAC,GAAG6qF,WAAW7qF,CAAC,CAAA,CAAA,CAAA;AACjG4+B,YAAAA,QAAAA,CAASxQ,QAAQ,CAAC,eAAiBg8D,EAAAA,KAAAA,CAAM9O,OAAO,CAAA,CAAA;AAChD18C,YAAAA,QAAAA,CAASxQ,QAAQ,CAAC,qBAAuBg8D,EAAAA,KAAAA,CAAMU,aAAa,CAAA,CAAA;AAC5DlsD,YAAAA,QAAAA,CAASwiC,UAAU,CAAC,WAAagpB,EAAAA,KAAAA,CAAMrzB,OAAO,CAAA,CAAA;YAE9C,IAAMrpC,SAAAA,GAAY08D,MAAMW,gBAAgB,CAAA;AAExCnsD,YAAAA,QAAAA,CAASosD,UAAU,CAAC,mBAAqB,EAAA,IAAI7gD,UAC1C/iC,KAAK,CAACsmB,SAAUtmB,CAAAA,KAAK,CAACnC,CAAC,EAAEyoB,SAAUtmB,CAAAA,KAAK,CAACpH,CAAC,CAAA,CAC1CqqC,MAAM,CAAC3c,SAAU1I,CAAAA,QAAQ,CACzBslB,CAAAA,SAAS,CAAC5c,SAAUzrB,CAAAA,MAAM,CAACgD,CAAC,EAAEyoB,SAAUzrB,CAAAA,MAAM,CAACjC,CAAC,EAChDynB,MAAM,EAAA,CAAA,CAAA;AAEX,SAAA;AACF,KAAA,CAAA;IAEA,MAAQ+iE,CAAAA,sBAgBP,GAhBD,SAAQA,sBAAwB5rD,CAAAA,QAAkB,EAAE/vB,QAAuB,EAAE45E,UAAmB,EAAEiC,QAAiB,EAAA;AACjH,QAAA,IAAMO,iBAA4B,EAAE,CAAA;AACpC,QAAA,IAAMR,gBAA0B,EAAE,CAAA;QAElC,IAAmB57E,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAAST,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBc,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMg8E,SAAAA,GAAYh8E,KAAKb,KAAK,CAAA;AAE5B48E,YAAAA,cAAAA,CAAelqF,IAAI,CAAC,IAAIgK,OAAAA,CAAQmgF,UAAUpsF,CAAC,EAAEosF,SAAUjrF,CAAAA,CAAC,EAAEirF,SAAAA,CAAUpmF,CAAC,EAAEomF,UAAUrmF,CAAC,CAAA,CAAA,CAAA;YAClF4lF,aAAc1pF,CAAAA,IAAI,CAACmO,IAAAA,CAAKZ,IAAI,CAAA,CAAA;AAC9B,SAAA;QAEAswB,QAASusD,CAAAA,eAAe,CAAC,SAAWF,EAAAA,cAAAA,CAAAA,CAAAA;QACpCrsD,QAASwsD,CAAAA,SAAS,CAAC,QAAUX,EAAAA,aAAAA,CAAAA,CAAAA;AAC7B7rD,QAAAA,QAAAA,CAASmrC,MAAM,CAAC,aAAe0gB,EAAAA,aAAAA,CAAc5rF,MAAM,CAAA,CAAA;QACnD+/B,QAAS2pC,CAAAA,UAAU,CAAC,aAAekgB,EAAAA,UAAAA,CAAAA,CAAAA;QACnC7pD,QAAS2pC,CAAAA,UAAU,CAAC,WAAamiB,EAAAA,QAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQW,iCA4CP,GA5CD,SAAQA,iCAAAA,CAAmC9F,eAA6B,EAAA;AACtE,QAAA,IAAM+F,aAA+B,GAAA;YACnCpuB,MAAQ,EAAA;gBACN2J,MAAQ0kB,EAAAA,IAAAA;gBACRjmB,QAAUkmB,EAAAA,IAAAA;AACVxkB,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;AAChC,aAAA;AACF,SAAA,CAAA;AACA,QAAA,IAAMroC,WAAW2hC,QAASrgE,CAAAA,MAAM,CAAC,IAAI,CAAC2W,MAAM,EAAEy0E,aAAAA,CAAAA,CAAAA;AAE9C,QAAA,IAAM9sD,QAAW+mD,GAAAA,eAAAA,CAAAA;AACjB,QAAA,IAAQ9mB,IAAwDjgC,GAAAA,QAAAA,CAAxDigC,IAAMukB,EAAAA,SAAAA,GAAkDxkD,SAAlDwkD,SAAWxlB,EAAUU,SAA6B1/B,GAAAA,QAAAA,CAAvCg/B,QAAqBsjB,EAAAA,IAAAA,GAAkBtiD,QAAlBsiD,CAAAA,IAAAA,EAAM/pB,UAAYv4B,QAAZu4B,CAAAA,OAAAA,CAAAA;AACpD,QAAA,IAAMmI,QAAW,GAAA,IAAI,CAACuhB,WAAW,CAACvhB,QAAQ,CAAA;AAE1CtgC,QAAAA,QAAAA,CAAS4+B,QAAQ,GAAG,IAAA,CAAA;AACpB5+B,QAAAA,QAAAA,CAAS4iC,SAAS,GAAG,IAAA,CAAA;AACrB5iC,QAAAA,QAAAA,CAAS6iC,SAAS,GAAGuhB,SAAAA,CAAAA;QACrBpkD,QAAS8iC,CAAAA,UAAU,GAAGof,IAAAA,KAAS/iF,SAAY,GAAA;AAAC+iF,YAAAA,IAAAA;AAAMA,YAAAA,IAAAA;SAAK,GAAG/iF,SAAAA,CAAAA;AAE1DkgE,QAAAA,YAAAA,CAAar/B,QAAUs/B,EAAAA,SAAAA,CAAAA,CAAAA;;AAEvBe,QAAAA,WAAAA,CAAYrgC,QAAUsgC,EAAAA,QAAAA,CAAAA,CAAAA;AACtBV,QAAAA,WAAAA,CAAY5/B,QAAU6/B,EAAAA,IAAAA,CAAAA,CAAAA;AAEtB7/B,QAAAA,QAAAA,CAASs+B,MAAM,CAACD,UAAU,CAAC+mB,UAAU,GAAG,wCAAA,CAAA;AACxCplD,QAAAA,QAAAA,CAASqiD,UAAU,CAAC,YAAA,EAAc,IAAIl2E,OAAQ,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QACvD6zB,QAASwiC,CAAAA,UAAU,CAAC,WAAarK,EAAAA,OAAAA,CAAAA,CAAAA;AAEjC,QAAA,IAAMktB,gBAAgB1mB,gBAAiBW,CAAAA,SAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAMgmB,YAAY,IAAIn5E,OAAAA,EAAAA,CAAAA;QAEtBm5E,SAAUj/E,CAAAA,CAAC,GAAGu5B,QAASwkD,CAAAA,SAAS,GAAG,CAAExkD,QAAAA,CAASykD,oBAAoB,GAAI,CAAA,CAAA;AACtEiB,QAAAA,SAAAA,CAAUlkF,CAAC,GAAGikF,aAAAA,CAAAA;QACdC,SAAUj7E,CAAAA,CAAC,GAAGu1B,QAAAA,CAASqkD,UAAU,CAAA;AACjCqB,QAAAA,SAAAA,CAAUl5E,CAAC,GAAGk0D,QAAAA,CAAAA;QACdtgC,QAASqiD,CAAAA,UAAU,CAAC,YAAciD,EAAAA,SAAAA,CAAAA,CAAAA;QAElC,IAAIA,SAAAA,CAAUj/E,CAAC,KAAK,CAAA,IAAM,IAAI,CAACw7E,WAAW,CAACre,gBAAgB,EAAG;AAC5DxjC,YAAAA,QAAAA,CAASulD,WAAW,CAAC,YAAA,CAAA,CAAA;SAChB,MAAA;AACLvlD,YAAAA,QAAAA,CAASwlD,YAAY,CAAC,YAAA,CAAA,CAAA;AACxB,SAAA;QAEA,OAAOxlD,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAASzgB,QAwHR,GAxHD,SAASA,QAAAA,CAAUnN,IAA6B,EAAA;AAC9C,QAAA,iBAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;QACf,IAAI,CAACuzE,UAAU,GAAG,IAAA,CAAA;QAElB,IAAIvzE,IAAAA,CAAK8vE,IAAI,EAAE;AACb,YAAA,IAAI,CAACL,WAAW,CAACje,cAAc,CAACxxD,KAAK8vE,IAAI,CAAA,CAAA;AAC3C,SAAA;AAEiB9vE,QAAAA,IAAAA,cAAAA,CAAAA;AAAjB,QAAA,IAAMwtB,WAAWxtB,CAAAA,cAAAA,GAAAA,KAAKwtB,QAAQ,KAAA,IAAA,GAAbxtB,iBAAiB,EAAC,CAAA;YAIvBwtB,kBAIJA,EAAAA,cAAAA,CAAAA;QANR,IAAI,CAAC+mD,eAAe,GAAG;YACrB1C,UAAY9/D,EAAAA,UAAe,CAAC+/D,IAAI;YAChCtlB,QAAUh/B,EAAAA,CAAAA,qBAAAA,QAASg/B,CAAAA,QAAQ,YAAjBh/B,kBAAqBzb,GAAAA,YAAiB,CAAC06C,KAAK;AACtD1G,YAAAA,OAAAA,EAASv4B,SAASu4B,OAAO,GAAG,IAAI,CAAClgD,MAAM,CAAC6K,UAAU,CAAU8c,QAAAA,CAASu4B,OAAO,CAAI,GAAA,IAAI,CAAClgD,MAAM,CAACksE,YAAY;YACxGC,SAAW,EAAA,CAAC,CAACxkD,QAAAA,CAASwkD,SAAS;AAC/BC,YAAAA,oBAAAA,EAAsB,CAAC,CAACzkD,QAASykD,CAAAA,oBAAoB,IAAK,IAAI,CAACxC,WAAW,CAACvhB,QAAQ,KAAK9B,QAAAA,CAASgC,IAAI;YACrGX,IAAMjgC,EAAAA,CAAAA,iBAAAA,QAASigC,CAAAA,IAAI,YAAbjgC,cAAiBzb,GAAAA,QAAa,CAAC27C,MAAM;AAC3CoiB,YAAAA,IAAAA,EAAM,IAAI,CAACL,WAAW,CAACle,WAAW,EAAA;AACpC,SAAA,CAAA;AAEiBvxD,QAAAA,IAAAA,eAAAA,CAAAA;AAAjB,QAAA,IAAI,CAACk0E,SAAS,GAAGl0E,CAAAA,eAAAA,GAAAA,IAAAA,CAAKk0E,SAAS,KAAA,IAAA,GAAdl0E,eAAkB+R,GAAAA,OAAY,CAAC+hE,IAAI,CAAA;AACjC9zE,QAAAA,IAAAA,iBAAAA,CAAAA;QAAnB,IAAI,CAACi0E,WAAW,GAAGj0E,CAAAA,oBAAAA,IAAKi0E,CAAAA,WAAW,YAAhBj0E,iBAAoB,GAAA,CAAA,CAAA;AACrBA,QAAAA,IAAAA,gBAAAA,CAAAA;AAAlB,QAAA,IAAI,CAACm0E,UAAU,GAAGn0E,CAAAA,gBAAAA,GAAAA,IAAAA,CAAKm0E,UAAU,KAAA,IAAA,GAAfn0E,gBAAmB+R,GAAAA,QAAa,CAACgiE,KAAK,CAAA;AAExD,QAAA,IAAI,CAACJ,KAAK,CAAC9lF,MAAM,GAAG,CAAA,CAAA;AACpB,QAAA,IAAI,CAACwmF,aAAa,CAACxmF,MAAM,GAAG,CAAA,CAAA;QAC5B,IAAmBmS,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK2zE,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBh8E,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACg8E,KAAK,CAAC5jF,IAAI,CAAC,IAAI,CAAC0qF,WAAW,CAAC9iF,IAAAA,CAAAA,CAAAA,CAAAA;YACjC,IAAI,CAAC08E,aAAa,CAACtkF,IAAI,CAAC,IAAI,CAACsqF,iCAAiC,CAAC,IAAI,CAAC9F,eAAe,CAAA,CAAA,CAAA;AACrF,SAAA;AAEA,QAAA,IAAI,CAACH,OAAO,CAACvmF,MAAM,GAAG,CAAA,CAAA;AACtB,QAAA,IAAI,CAACymF,eAAe,CAACzmF,MAAM,GAAG,CAAA,CAAA;QAC9B,IAAqBmS,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKo0E,OAAO,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxBsG,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACtG,OAAO,CAACrkF,IAAI,CAAC,IAAI,CAAC0qF,WAAW,CAACC,MAAAA,CAAAA,CAAAA,CAAAA;YACnC,IAAI,CAACpG,eAAe,CAACvkF,IAAI,CAAC,IAAI,CAACsqF,iCAAiC,CAAC,IAAI,CAAC9F,eAAe,CAAA,CAAA,CAAA;AACvF,SAAA;QAEA,IAAI,CAAClnD,SAAS,GAAO,EAAA,CAAA,MAAA,CAAA,IAAI,CAACgnD,aAAa,EAAK,IAAI,CAACC,eAAe,CAAA,CAAA;AAEhE,QAAA,OAAQt0E,KAAK8D,IAAI;YACf,KAAKiO,kBAAuB,CAAC6iE,MAAM;AAAE,gBAAA;AACnC,oBAAA,IAAM+F,eAAkB36E,GAAAA,IAAAA,CAAAA;AACxB,oBAAA,IAAM46E,oBAA6C,GAAA;wBACjD92E,IAAMiO,EAAAA,kBAAuB,CAAC6iE,MAAM;AACpCv3C,wBAAAA,MAAAA,EAAQ,EAAE;AACVw3C,wBAAAA,SAAAA,EAAW,EAAE;AACbC,wBAAAA,UAAAA,EAAY,EAAE;AACdC,wBAAAA,MAAAA,EAAQ,EAAE;AACZ,qBAAA,CAAA;oBAEA,IAAoB4F,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,eAAAA,CAAgBt9C,MAAM,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAjCY,wBAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;wBACT28C,oBAAqBv9C,CAAAA,MAAM,CAACttC,IAAI,CAAC,IAAIiF,QAAQipC,KAAMhqC,CAAAA,CAAC,EAAEgqC,KAAAA,CAAMjvC,CAAC,CAAA,CAAA,CAAA;AAC/D,qBAAA;oBACA,IAAuB2rF,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,eAAAA,CAAgB9F,SAAS,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAvCiD,wBAAAA,IAAAA,QAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;wBACT8C,oBAAqB/F,CAAAA,SAAS,CAAC9kF,IAAI,CAAC,IAAIiF,QAAQ8iF,QAAS7jF,CAAAA,CAAC,EAAE6jF,QAAAA,CAAS9oF,CAAC,CAAA,CAAA,CAAA;AACxE,qBAAA;oBACA,IAAwB2rF,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,eAAAA,CAAgB7F,UAAU,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzC+C,wBAAAA,IAAAA,SAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;wBACT+C,oBAAqB9F,CAAAA,UAAU,CAAC/kF,IAAI,CAAC,IAAIiF,QAAQ6iF,SAAU5jF,CAAAA,CAAC,EAAE4jF,SAAAA,CAAU7oF,CAAC,CAAA,CAAA,CAAA;AAC3E,qBAAA;oBACA4rF,oBAAqB7F,CAAAA,MAAM,GAAG4F,eAAAA,CAAgB5F,MAAM,CAAA;oBAEpD,IAAI,CAACJ,eAAe,GAAGiG,oBAAAA,CAAAA;AAEvB,oBAAA,MAAA;AACF,iBAAA;YACA,KAAK7oE,kBAAuB,CAACimE,OAAO;AAAE,gBAAA;AACpC,oBAAA,IAAMC,WAAcj4E,GAAAA,IAAAA,CAAAA;AACpB,oBAAA,IAAM66E,gBAAqC,GAAA;wBACzC/2E,IAAMiO,EAAAA,kBAAuB,CAACimE,OAAO;AACrCG,wBAAAA,OAAAA,EAASF,YAAYE,OAAO;AAC5BC,wBAAAA,OAAAA,EAASH,YAAYG,OAAO;AAC9B,qBAAA,CAAA;oBAEA,IAAI,CAACzD,eAAe,GAAGkG,gBAAAA,CAAAA;AAEvB,oBAAA,MAAA;AACF,iBAAA;YACA,KAAK9oE,kBAAuB,CAACsmE,SAAS;AAAE,gBAAA;AACtC,oBAAA,IAAMC,aAAgBt4E,GAAAA,IAAAA,CAAAA;AACtB,oBAAA,IAAM86E,kBAAyC,GAAA;wBAC7Ch3E,IAAMiO,EAAAA,kBAAuB,CAACsmE,SAAS;AACvCv4E,wBAAAA,KAAAA,EAAOw4E,cAAcx4E,KAAK;AAC1BC,wBAAAA,MAAAA,EAAQu4E,cAAcv4E,MAAM;AAC5B24D,wBAAAA,SAAAA,EAAW4f,cAAc5f,SAAS;AACpC,qBAAA,CAAA;oBAEA,IAAI,CAACic,eAAe,GAAGmG,kBAAAA,CAAAA;AAEvB,oBAAA,MAAA;AACF,iBAAA;YACA,KAAK/oE,kBAAuB,CAACymE,IAAI;AAAE,gBAAA;AACjC,oBAAA,IAAMC,QAAWz4E,GAAAA,IAAAA,CAAAA;AACjB,oBAAA,IAAM+6E,aAA+B,GAAA;wBACnCj3E,IAAMiO,EAAAA,kBAAuB,CAACymE,IAAI;AAClCG,wBAAAA,UAAAA,EAAYF,SAASE,UAAU;AAC/BE,wBAAAA,WAAAA,EAAaJ,SAASI,WAAW;AACjCD,wBAAAA,WAAAA,EAAaH,SAASG,WAAW;AACjCG,wBAAAA,cAAAA,EAAgBN,SAASM,cAAc;AACvCD,wBAAAA,cAAAA,EAAgBL,SAASK,cAAc;AACzC,qBAAA,CAAA;oBAEA,IAAI,CAACnE,eAAe,GAAGoG,aAAAA,CAAAA;AAEvB,oBAAA,MAAA;AACF,iBAAA;YACA,KAAKhpE,kBAAuB,CAACknE,OAAO;AAAE,gBAAA;AACpC,oBAAA,IAAMC,WAAcl5E,GAAAA,IAAAA,CAAAA;AACpB,oBAAA,IAAMg7E,gBAAqC,GAAA;wBACzCl3E,IAAMiO,EAAAA,kBAAuB,CAACknE,OAAO;AACrCN,wBAAAA,UAAAA,EAAYO,YAAYP,UAAU;AAClCh9C,wBAAAA,MAAAA,EAAQu9C,YAAYv9C,MAAM;AAC1B+8B,wBAAAA,SAAAA,EAAWwgB,YAAYxgB,SAAS;AAClC,qBAAA,CAAA;oBAEA,IAAI,CAACic,eAAe,GAAGqG,gBAAAA,CAAAA;AAEvB,oBAAA,MAAA;AACF,iBAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQP,WAmDP,GAnDD,SAAQA,WAAAA,CAAaQ,SAAyB,EAAA;QAC5C,IAAI7B,KAAAA,CAAAA;AAEJ,QAAA,OAAQ6B,UAAUn3E,IAAI;YACpB,KAAKiO,QAAa,CAAC0iE,KAAK;AAAE,gBAAA;oBACxB2E,KAAQ,GAAA;AACNt1E,wBAAAA,IAAAA,EAAMm3E,UAAUn3E,IAAI;AACpBzG,wBAAAA,KAAAA,EAAO,IAAIlD,KAAAA,EAAAA,CAAQ7E,QAAQ,CAAC2lF,UAAU59E,KAAK,CAAA;AAC7C,qBAAA,CAAA;AAEA,oBAAA,MAAA;AACF,iBAAA;YACA,KAAK0U,QAAa,CAACsnE,cAAc,CAAA;YACjC,KAAKtnE,QAAa,CAACunE,eAAe,CAAA;YAClC,KAAKvnE,QAAa,CAACwnE,cAAc;AAAE,gBAAA;oBACjCH,KAAQ,GAAA;AACNt1E,wBAAAA,IAAAA,EAAMm3E,UAAUn3E,IAAI;wBACpB21E,aAAe3gC,EAAAA,iBAAAA,CAAkBmiC,UAAUxB,aAAa,CAAA;AACxDhC,wBAAAA,UAAAA,EAAY,IAAIziF,OAAAA,EAAAA,CAAUM,QAAQ,CAAC2lF,UAAUxD,UAAU,CAAA;AACvDiC,wBAAAA,QAAAA,EAAU,IAAI1kF,OAAAA,EAAAA,CAAUM,QAAQ,CAAC2lF,UAAUvB,QAAQ,CAAA;AACrD,qBAAA,CAAA;AAEA,oBAAA,MAAA;AACF,iBAAA;YACA,KAAK3nE,QAAa,CAAC6yC,OAAO;AAAE,gBAAA;AAMpBq2B,oBAAAA,IAAAA,2BAAAA,CAAAA;AAJN,oBAAA,IAAMlB,gBAAmB,GAAA,QAAA,CAAA;wBACvB9oF,MAAQ,EAAA;4BAAEgD,CAAG,EAAA,CAAA;4BAAGjF,CAAG,EAAA,CAAA;AAAE,yBAAA;wBACrBglB,QAAU,EAAA,CAAA;wBACV5d,KAAO,EAAA;4BAAEnC,CAAG,EAAA,CAAA;4BAAGjF,CAAG,EAAA,CAAA;AAAE,yBAAA;AAChBisF,qBAAAA,EAAAA,CAAAA,2BAAAA,GAAAA,SAAAA,CAAUlB,gBAAgB,KAAA,IAAA,GAA1BkB,8BAA8B,EAAC,CAAA,CAAA;wBAOpBA,wBACNA,EAAAA,kBAAAA,CAAAA;oBALX7B,KAAQ,GAAA;AACNt1E,wBAAAA,IAAAA,EAAMm3E,UAAUn3E,IAAI;AACpBiiD,wBAAAA,OAAAA,EAAS,IAAI,CAAClgD,MAAM,CAAC6K,UAAU,CAAUuqE,UAAUl1B,OAAO,CAAA;AAC1D4zB,wBAAAA,SAAAA,EAAWsB,UAAUtB,SAAS;AAC9BG,wBAAAA,aAAAA,EAAemB,CAAAA,wBAAAA,GAAAA,SAAUnB,CAAAA,aAAa,YAAvBmB,wBAA2B,GAAA,CAAA;AAC1C3Q,wBAAAA,OAAAA,EAAS2Q,CAAAA,kBAAAA,GAAAA,SAAU3Q,CAAAA,OAAO,YAAjB2Q,kBAAqB,GAAA,CAAA;wBAC9BlB,gBAAkB,EAAA;AAChB9oF,4BAAAA,MAAAA,EAAQ,IAAI+D,OAAAA,EAAAA,CAAUM,QAAQ,CAACykF,iBAAiB9oF,MAAM,CAAA;AACtD+iB,4BAAAA,QAAAA,EAAU+lE,iBAAiB/lE,QAAQ;AACnC5d,4BAAAA,KAAAA,EAAO,IAAIpB,OAAAA,EAAAA,CAAUM,QAAQ,CAACykF,iBAAiB3jF,KAAK,CAAA;AACtD,yBAAA;AACF,qBAAA,CAAA;AAEA,oBAAA,MAAA;AACF,iBAAA;AACF,SAAA;QAEA,OAAOgjF,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAShtD,CAAAA,0BAGR,GAHD,SAASA,0BAAAA,GAAAA;QACP,IAAI,CAACmnD,UAAU,GAAG,IAAA,CAAA;QAClB,IAAI,CAACC,aAAa,GAAG,IAAA,CAAA;AACvB,KAAA,CAAA;AAnqBWF,IAAAA,aAAAA,CAAAA,cAAAA,EAAAA;;YA8BPmC,GAAAA,EAAAA,OAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAACd,eAAe,CAAA;AAC7B,aAAA;;;AAhCWrB,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBlmD,iBAoqBnC,EAAA;AApqBYkmD,cAAAA,GAAAA,UAAAA,CAAAA;IADZ3nE,YAAa,CAAA,gBAAA,CAAA;AACD2nE,CAAAA,EAAAA,cAAAA,CAAAA;;AC1KN,IAAA,eAAM4H,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;;cAEXC,IAAO,GAAA,KAAA,CAAA;cAGPC,cAAiB,GAAA,GAAA,CAAA;cAGjBC,eAAkB,GAAA,GAAA,CAAA;AAGlBtjB,QAAAA,KAAAA,CAAAA,IAAAA,GAAAA,CAAAA,CAAAA;cAGAujB,cAAiB,GAAA,CAAA,CAAA;cAEjBC,cAAiB,GAAA,CAAA,CAAA;cAEjBC,cAAiB,GAAA,CAAA,CAAA;cAGjBC,YAAe,GAAA,CAAA,CAAA;cAEfC,YAAe,GAAA,CAAA,CAAA;cAEfC,YAAe,GAAA,CAAA,CAAA;cAGfC,UAAa,GAAA,CAAA,CAAA;cAEbC,UAAa,GAAA,CAAA,CAAA;cAEbC,UAAa,GAAA,CAAA,CAAA;cAGbC,MAAS,GAAA,CAAA,CAAA;cAETC,MAAS,GAAA,CAAA,CAAA;cAETC,MAAS,GAAA,CAAA,CAAA;;;AAvCEf,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IA2CX,MAASlvD,CAAAA,OAER,GAFD,SAASA,OAAAA,GAAAA;QACP,IAAI,CAACkwD,eAAe,GAAG,IAAI,CAAClqF,IAAI,CAACw2B,YAAY,CAACojD,eAAAA,CAAAA,CAAAA;AAChD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS3/C,QAER,GAFD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAC3B,QAAA,IAAI,CAACgoF,YAAY,EAAA,CAAA;AACnB,KAAA,CAAA;IAEAA,MAAAA,CAAAA,YA6CC,GA7CDA,SAAAA,YAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAACD,eAAe,EAAE;AACzB,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAM5+E,IAAO,GAAA,IAAI,CAACtL,IAAI,CAACsL,IAAI,GAAG,IAAI,CAAC+9E,eAAe,GAAG,IAAI,CAACA,eAAe,CAAA;AAEzE,QAAA,IAAIe,KAAQ,GAAA,CAAA,CAAA;AACZ,QAAA,IAAIC,KAAQ,GAAA,CAAA,CAAA;AACZ,QAAA,IAAIC,KAAQ,GAAA,CAAA,CAAA;QAEZ,OAAQ,IAAI,CAACvkB,IAAI;AACf,YAAA,KAAA,CAAA;AAAkC,gBAAA;oBAChC,IAAMzkE,EAAAA,GAAKV,KAAKU,EAAE,CAAA;AAElB8oF,oBAAAA,KAAAA,GAAQxpF,IAAKoiB,CAAAA,GAAG,CAAC,GAAA,GAAM1hB,MAAMgK,IAAAA,GAAO,IAAI,CAACy+E,MAAK,CAAM,CAAA,GAAA,IAAI,CAACH,UAAU,CAAA;AACnES,oBAAAA,KAAAA,GAAQzpF,IAAKoiB,CAAAA,GAAG,CAAC,GAAA,GAAM1hB,MAAMgK,IAAAA,GAAO,IAAI,CAAC0+E,MAAK,CAAM,CAAA,GAAA,IAAI,CAACH,UAAU,CAAA;AACnES,oBAAAA,KAAAA,GAAQ1pF,IAAKoiB,CAAAA,GAAG,CAAC,GAAA,GAAM1hB,MAAMgK,IAAAA,GAAO,IAAI,CAAC2+E,MAAK,CAAM,CAAA,GAAA,IAAI,CAACH,UAAU,CAAA;AAEnE,oBAAA,MAAA;AACF,iBAAA;AACA,YAAA,KAAA,CAAA;AAAgC,gBAAA;AAC9B,oBAAA,IAAIlU,SAAYtqE,GAAAA,IAAAA,CAAAA;oBAEhB,IAAI,IAAI,CAAC69E,IAAI,EAAE;AACb,wBAAA,IAAIvT,YAAY,GAAK,EAAA;AACnBA,4BAAAA,SAAAA,GAAY,CAAIA,GAAAA,SAAAA,CAAAA;AAClB,yBAAA;wBAEAA,SAAa,IAAA,CAAA,CAAA;AACf,qBAAA;oBAEAwU,KAAQ,GAAA,IAAI,CAACd,cAAc,IAAI,CAAI1T,GAAAA,SAAQ,CAAKA,GAAAA,SAAAA,GAAY,IAAI,CAAC6T,YAAY,CAAA;oBAC7EY,KAAQ,GAAA,IAAI,CAACd,cAAc,IAAI,CAAI3T,GAAAA,SAAQ,CAAKA,GAAAA,SAAAA,GAAY,IAAI,CAAC8T,YAAY,CAAA;oBAC7EY,KAAQ,GAAA,IAAI,CAACd,cAAc,IAAI,CAAI5T,GAAAA,SAAQ,CAAKA,GAAAA,SAAAA,GAAY,IAAI,CAAC+T,YAAY,CAAA;AAE7E,oBAAA,MAAA;AACF,iBAAA;AACF,SAAA;AAEA,QAAA,IAAM/tD,QAAW,GAAA,IAAI,CAACsuD,eAAe,CAACtuD,QAAQ,CAAA;AAE9CA,QAAAA,QAAAA,CAASxQ,QAAQ,CAAC,OAAA,EAASg/D,KAAQ,GAAA,IAAI,CAAChB,cAAc,CAAA,CAAA;AACtDxtD,QAAAA,QAAAA,CAASxQ,QAAQ,CAAC,OAAA,EAASi/D,KAAQ,GAAA,IAAI,CAACjB,cAAc,CAAA,CAAA;AACtDxtD,QAAAA,QAAAA,CAASxQ,QAAQ,CAAC,OAAA,EAASk/D,KAAQ,GAAA,IAAI,CAAClB,cAAc,CAAA,CAAA;AACxD,KAAA,CAAA;AAhGWF,IAAAA,OAAAA,eAAAA,CAAAA;EAAwB1vD,SAiGpC,EAAA;;AAhGE3f,IAAAA,SAAAA,EAAAA;AADUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAIVrvE,IAAAA,SAAAA,EAAAA;AAJUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,gBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAOVrvE,IAAAA,SAAAA,EAAAA;AAPUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAUVrvE,IAAAA,SAAAA,EAAAA;AAVUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAaVrvE,IAAAA,SAAAA,EAAAA;AAbUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,gBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAeVrvE,IAAAA,SAAAA,EAAAA;AAfUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,gBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAiBVrvE,IAAAA,SAAAA,EAAAA;AAjBUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,gBAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAoBVrvE,IAAAA,SAAAA,EAAAA;AApBUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,cAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAsBVrvE,IAAAA,SAAAA,EAAAA;AAtBUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,cAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAwBVrvE,IAAAA,SAAAA,EAAAA;AAxBUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,cAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AA2BVrvE,IAAAA,SAAAA,EAAAA;AA3BUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AA6BVrvE,IAAAA,SAAAA,EAAAA;AA7BUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AA+BVrvE,IAAAA,SAAAA,EAAAA;AA/BUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,YAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAkCVrvE,IAAAA,SAAAA,EAAAA;AAlCUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAoCVrvE,IAAAA,SAAAA,EAAAA;AApCUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAsCVrvE,IAAAA,SAAAA,EAAAA;AAtCUqvE,CAAAA,EAAAA,eAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,eAAAA,GAAAA,UAAAA,CAAAA;IADZvvE,YAAa,CAAA,iBAAA,CAAA;AACDuvE,CAAAA,EAAAA,eAAAA,CAAAA,CAAAA;;AAmGDqB,CAAAA,SAAAA,mBAAAA,EAAAA;;;GAAAA,mBAAAA,KAAAA,mBAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;AClGL,IAAA,gBAAMC,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;aAAAA,gBAIT32E,CAAAA,MAAc,EACdolB,KAA0B,EAAA;;AAEpBplB,QAAAA,KAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AAEN,QAAA,IAAIolB,KAAO,EAAA;AACT,YAAA,KAAA,CAAK9d,QAAQ,CAAC8d,KAAAA,CAAAA,CAAAA;AAChB,SAAA;;;AAXSuxD,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;IAcX,MAASvwD,CAAAA,QAcR,GAdD,SAASA,QAAAA,GAAAA;AACP,QAAA,IAAI,IAAI,CAACj6B,IAAI,CAACmT,WAAW,IAAI,IAAI,CAACnT,IAAI,CAAC0qB,SAAS,CAACsmB,QAAQ,EAAI,EAAA;AAC3D,YAAA,IAAM2C,SAAS,IAAI,CAAC3zC,IAAI,CAACmT,WAAW,CAACwgC,MAAM,CAAA;AAE3CA,YAAAA,MAAAA,CAAO1Q,IAAI,GAAG,IAAI,CAAC7jC,OAAO,CAAC6jC,IAAI,CAAA;AAC/B0Q,YAAAA,MAAAA,CAAOzQ,GAAG,GAAG,IAAI,CAAC9jC,OAAO,CAAC8jC,GAAG,CAAA;AAC7ByQ,YAAAA,MAAAA,CAAOtQ,GAAG,GAAG,IAAI,CAACjkC,OAAO,CAACikC,GAAG,CAAA;AAC7BsQ,YAAAA,MAAAA,CAAO3B,QAAQ,GAAG,IAAI,CAAC5yC,OAAO,CAAC4yC,QAAQ,CAAA;YAEvC2B,MAAOjpB,CAAAA,SAAS,CAAC2kB,eAAe,GAAG,IAAI,CAAC3kB,SAAS,CAAC2kB,eAAe,CAAA;AACjEsE,YAAAA,MAAAA,CAAO5xB,QAAQ,GAAG,IAAI,CAAC2I,SAAS,CAAC3I,QAAQ,CAAA;;YAEzC4xB,MAAOJ,CAAAA,OAAO,CAAC,IAAI,CAAC7oB,SAAS,CAACwlB,aAAa,EAAA,CAAG1sC,KAAK,EAAA,CAAGkhB,SAAS,EAAA,CAAA,CAAA;AACjE,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASvJ,QAIR,GAJD,SAASA,QAAAA,CAAUnN,IAAwB,EAAA;AACzC,QAAA,SAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEf,QAAA,IAAI,CAAC5O,OAAO,GAAG4O,IAAAA,CAAK5O,OAAO,CAAA;AAC7B,KAAA,CAAA;AAlCWorF,IAAAA,OAAAA,gBAAAA,CAAAA;EAAyBhxD,SAmCrC,EAAA;AAnCYgxD,gBAAAA,GAAAA,UAAAA,CAAAA;IADZ7wE,YAAaoG,CAAAA,QAAa,CAACyqE,gBAAgB,CAAA;AAC/BA,CAAAA,EAAAA,gBAAAA,CAAAA;;ACNb,SAASC,kBAAkBv2E,CAAC,EAAA;IACxBu2E,iBAAoB1uF,GAAAA,MAAAA,CAAOqY,cAAc,GAAGrY,MAAAA,CAAOoU,cAAc,GAAG,SAASA,eAAe+D,CAAC,EAAA;AACzF,QAAA,OAAOA,CAAEG,CAAAA,SAAS,IAAItY,MAAAA,CAAOoU,cAAc,CAAC+D,CAAAA,CAAAA,CAAAA;AAChD,KAAA,CAAA;AAEA,IAAA,OAAOu2E,iBAAkBv2E,CAAAA,CAAAA,CAAAA,CAAAA;AAC7B;;ACNA,SAASw2E,oBAAoBjwF,EAAE,EAAA;IAC3B,OAAO8V,QAAAA,CAAS1R,QAAQ,CAAChB,IAAI,CAACpD,EAAIoF,CAAAA,CAAAA,OAAO,CAAC,eAAA,CAAA,KAAqB,CAAC,CAAA,CAAA;AACpE;;ACGA,SAAS8qF,mBAAmBjkC,KAAK,EAAA;AAC7B,IAAA,IAAIkkC,MAAS,GAAA,OAAOtxE,GAAQ,KAAA,UAAA,GAAa,IAAIA,GAAQve,EAAAA,GAAAA,SAAAA,CAAAA;AACrD4vF,IAAAA,kBAAAA,GAAqB,4BAASjkC,KAAK,EAAA;AAC/B,QAAA,IAAIA,KAAU,KAAA,IAAA,IAAQ,CAACgkC,mBAAAA,CAAoBhkC,QAAQ,OAAOA,KAAAA,CAAAA;AAC1D,QAAA,IAAI,OAAOA,KAAAA,KAAU,UAAY,EAAA,MAAM,IAAI9oD,SAAU,CAAA,oDAAA,CAAA,CAAA;QACrD,IAAI,OAAOgtF,WAAW,WAAa,EAAA;AAC/B,YAAA,IAAIA,OAAO11B,GAAG,CAACxO,QAAQ,OAAOkkC,MAAAA,CAAO1wE,GAAG,CAACwsC,KAAAA,CAAAA,CAAAA;YACzCkkC,MAAOxpF,CAAAA,GAAG,CAACslD,KAAOmkC,EAAAA,OAAAA,CAAAA,CAAAA;AACtB,SAAA;QAEA,SAASA,OAAAA,GAAAA;AACL,YAAA,OAAOrkC,WAAWE,KAAO9rD,EAAAA,SAAAA,EAAW6vF,iBAAkB,CAAA,IAAI,EAAElvF,WAAW,CAAA,CAAA;AAC3E,SAAA;AACAsvF,QAAAA,OAAAA,CAAQztF,SAAS,GAAGrB,MAAAA,CAAOmB,MAAM,CAACwpD,KAAAA,CAAMtpD,SAAS,EAAE;YAAE7B,WAAa,EAAA;gBAAEpB,KAAO0wF,EAAAA,OAAAA;gBAAS1xD,UAAY,EAAA,KAAA;gBAAO1kB,QAAU,EAAA,IAAA;gBAAMC,YAAc,EAAA,IAAA;AAAK,aAAA;AAAE,SAAA,CAAA,CAAA;AAE5I,QAAA,OAAOT,kBAAkB42E,OAASnkC,EAAAA,KAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAEA,IAAA,OAAOikC,kBAAmBjkC,CAAAA,KAAAA,CAAAA,CAAAA;AAC9B;;ACtBO,IAAA,mBAAMokC,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,mBAAAA,CAAAA;qBAA4B92E,MACxC,CAAA;;;ACGWwoE,CAAAA,SAAAA,WAAAA,EAAAA;;;;;GAAAA,WAAAA,KAAAA,WAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AA0EL,IAAA,gBAAMuO,GAAN,SAAMA,gBAAAA,GAAAA;AACXhpE,IAAAA,IAAAA,CAAAA,QAAAA,GAAW,IAAI/e,OAAAA,EAAAA,CAAAA;AACfgoF,IAAAA,IAAAA,CAAAA,KAAAA,GAAQ,IAAIhoF,OAAAA,EAAAA,CAAAA;AACZioF,IAAAA,IAAAA,CAAAA,qBAAAA,GAAuC,IAAIC,aAAAA,EAAAA,CAAAA;AAC5C,EAAA;AAEM,IAAA,aAAMA,GAAN,SAAMA,aAAAA,GAAAA;SACXj/C,KAAwB,GAAA,IAAA,CAAA;SACxBjsC,IAAuB,GAAA,IAAA,CAAA;AACxB;;ACnFM,IAAMmrF,mBAAmB,QAAQ;AACjC,IAAMC,yBAAyB,aAAa;AAC5C,IAAMC,wBAAwB,YAAY;AAC1C,IAAMC,uBAAuB,WAAW;;AAqBnCC,CAAAA,SAAAA,gBAAAA,EAAAA;;;;GAAAA,gBAAAA,KAAAA,gBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAML,IAAA,WAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,CAST,MAAqB,EACdC,gBAAwB,EAAA;AAA/B,QAAA,IAAOA,6BAAAA,gBAAmB,GAAA,KAAA,CAAA;aADnB53E,MAAAA,GAAAA,MAAAA,CAAAA;aACA43E,gBAAAA,GAAAA,gBAAAA,CAAAA;aATT5wD,OAAU,GAAA,IAAA,CAAA;aACV6wD,sBAAyB,GAAA,IAAA,CAAA;AAEjBC,QAAAA,IAAAA,CAAAA,QAAAA,GAAgE,EAAC,CAAA;AACjEC,QAAAA,IAAAA,CAAAA,cAAAA,GAAyD,EAAC,CAAA;aAC1DlwF,MAAmC,GAAA,IAAA,CAAA;;AANhC8vF,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAaXK,IAAAA,MAAAA,CAAAA,aA6GC,GA7GDA,SAAAA,aAAAA,CAAenwF,MAAgC,EAAA;;QAC7C,IAAI,CAACA,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAIuG,CAAAA,CAAAA;QACJ,IAAIjF,CAAAA,CAAAA;QACJ,IAAI8uF,YAAAA,CAAAA;QACJ,IAAIC,SAAAA,CAAAA;QACJ,IAAIC,QAAAA,CAAAA;AAEJA,QAAAA,QAAAA,GAAW5Z,SAAAA,KAAAA,EAAAA;YACT,OAAOA,KAAAA,CAAAA;AACT,SAAA,CAAA;AACA,QAAA,IAAI6Z,UAAa,GAAA,WAAA,CAAA;AACjB,QAAA,IAAIC,SAAY,GAAA,WAAA,CAAA;AAChB,QAAA,IAAIC,QAAW,GAAA,SAAA,CAAA;AACf,QAAA,IAAIC,WAAc,GAAA,YAAA,CAAA;AAElB,QAAA,IAAMC,kBAAqB,GAAA,SAACja,KAAcnwE,EAAAA,CAAAA,EAAWjF,GAAWqI,EAAQC,EAAAA,EAAAA,EAAAA;AAARD,YAAAA,IAAAA,EAAAA,KAAAA,KAAAA,CAAAA,EAAAA,EAAK,GAAA,CAAA,CAAA;AAAGC,YAAAA,IAAAA,EAAAA,KAAAA,KAAAA,CAAAA,EAAAA,EAAK,GAAA,CAAA,CAAA;AAC3E,YAAA,IAAI8gB,EAAK,GAAA,CAAA,CAAA;AACT,YAAA,IAAIC,EAAK,GAAA,CAAA,CAAA;YACT,IAAM+7B,EAAAA,GAAKkqC,YAAYC,GAAG,EAAA,CAAA;YAE1B,IAAI,CAAC,KAAK7wF,CAAAA,MAAM,EAAE;AAChBkU,gBAAAA,MAAAA,CAAOH,IAAI,CAAC,mDAAA,CAAA,CAAA;gBAEZ,OAAO;oBACLxN,CAAAA,EAAAA,CAAAA;oBAAGjF,CAAAA,EAAAA,CAAAA;oBAAGopB,EAAI,EAAA,CAAA;oBAAGC,EAAAA,EAAAA,EAAAA;oBAAIhhB,EAAAA,EAAAA,EAAAA;oBAAIC,EAAAA,EAAAA,EAAAA;oBAAI88C,EAAAA,EAAAA,EAAAA;oBAAIt0C,KAAO,EAAA,CAAA;oBAAGC,MAAQ,EAAA,CAAA;oBAAG1B,MAAQ+lE,EAAAA,KAAAA;AAC5D,iBAAA,CAAA;AACF,aAAA;YACA,IAA0B,YAAA,GAAA,MAAK12E,MAAM,EAA7BoS,QAAkB,YAAlBA,CAAAA,KAAAA,EAAOC,SAAW,YAAXA,CAAAA,MAAAA,CAAAA;AAEf,YAAA,IAAIg+E,SAAW,EAAA;gBACb,IAAM5pF,EAAAA,GAAKigD,EAAK2pC,GAAAA,SAAAA,CAAU3pC,EAAE,CAAA;AAE5Bh8B,gBAAAA,EAAAA,GAAK,CAAE/gB,EAAAA,GAAK0mF,UAAU1mF,EAAC,IAAKlD,EAAO,IAAA,CAAA,CAAA;AACnCkkB,gBAAAA,EAAAA,GAAK,CAAE/gB,EAAAA,GAAKymF,UAAUzmF,EAAC,IAAKnD,EAAO,IAAA,CAAA,CAAA;gBACnC4pF,SAAY,GAAA;oBAAE1mF,EAAAA,EAAAA,EAAAA;oBAAIC,EAAAA,EAAAA,EAAAA;oBAAI88C,EAAAA,EAAAA,EAAAA;AAAG,iBAAA,CAAA;AAC3B,aAAA;YAEA,OAAO;gBAAEngD,CAAAA,EAAAA,CAAAA;gBAAGjF,CAAAA,EAAAA,CAAAA;gBAAGopB,EAAAA,EAAAA,EAAAA;gBAAIC,EAAAA,EAAAA,EAAAA;gBAAIhhB,EAAAA,EAAAA,EAAAA;gBAAIC,EAAAA,EAAAA,EAAAA;gBAAI88C,EAAAA,EAAAA,EAAAA;gBAAIt0C,KAAAA,EAAAA,KAAAA;gBAAOC,MAAAA,EAAAA,MAAAA;gBAAQ1B,MAAQ+lE,EAAAA,KAAAA;AAAM,aAAA,CAAA;AAClE,SAAA,CAAA;AAEA,QAAA,IAAI/kE,oBAAwB,EAAA,EAAA;AAC1B2+E,YAAAA,QAAAA,GAAW5Z,SAAAA,KAAAA,EAAAA;AACT,gBAAA,IAAQoa,OAA4Bpa,GAAAA,KAAAA,CAA5Boa,OAASC,EAAAA,cAAAA,GAAmBra,KAAnBqa,CAAAA,cAAAA,CAAAA;AAEjB,gBAAA,OAAOD,OAAO,CAAC,CAAA,CAAE,IAAIC,cAAc,CAAC,CAAE,CAAA,CAAA;AACxC,aAAA,CAAA;YACAR,UAAa,GAAA,YAAA,CAAA;YACbC,SAAY,GAAA,WAAA,CAAA;YACZC,QAAW,GAAA,UAAA,CAAA;YACXC,WAAc,GAAA,aAAA,CAAA;AAChB,SAAA;AACsB,QAAA,IAAA,IAAA,CAAA;AAAtB,QAAA,IAAI,CAACR,cAAc,IAAG,IAAA,GAAA,EAAA,EAAA,IAAA,CACnBK,cAAa7Z,SAAAA,KAAAA,EAAAA;YACZ,IAAI,KAAA,CAAKv3C,OAAO,EAAE;AAChB,gBAAA,IAAM6xD,QAAQV,QAAS5Z,CAAAA,KAAAA,CAAAA,CAAAA;AACvB,gBAAA,IAAMua,OAAOC,QAASF,CAAAA,KAAAA,CAAAA,CAAAA;AAEtBzqF,gBAAAA,CAAAA,GAAI0qF,KAAK1qF,CAAC,CAAA;AACVjF,gBAAAA,CAAAA,GAAI2vF,KAAK3vF,CAAC,CAAA;AACV+uF,gBAAAA,SAAAA,GAAYD,YAAe,GAAA;AACzBe,oBAAAA,OAAAA,EAASH,MAAMG,OAAO;AACtBC,oBAAAA,OAAAA,EAASJ,MAAMI,OAAO;AACtB1qC,oBAAAA,EAAAA,EAAIkqC,YAAYC,GAAG,EAAA;oBACnBtqF,CAAAA,EAAAA,CAAAA;oBACAjF,CAAAA,EAAAA,CAAAA;AACF,iBAAA,CAAA;AACA,gBAAA,KAAA,CAAK+vF,aAAa,CAAC3B,sBAAwBiB,EAAAA,kBAAAA,CAAmBja,OAAOnwE,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC1E,aAAA;SAhBkB,EAAA,IAAA,CAkBnBkvF,aAAY9Z,SAAAA,KAAAA,EAAAA;YACX,IAAI0Z,YAAAA,IAAgB,KAAKjxD,CAAAA,OAAO,EAAE;gBAChC,IAAM8xD,IAAAA,GAAOC,SAASZ,QAAS5Z,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAE/BnwE,gBAAAA,CAAAA,GAAI0qF,KAAK1qF,CAAC,CAAA;AACVjF,gBAAAA,CAAAA,GAAI2vF,KAAK3vF,CAAC,CAAA;AACV,gBAAA,KAAA,CAAK+vF,aAAa,CAAC1B,qBAAuBgB,EAAAA,kBAAAA,CAAmBja,KAAOnwE,EAAAA,CAAAA,EAAGjF,CAAGiF,EAAAA,CAAAA,GAAI6pF,YAAa7pF,CAAAA,CAAC,EAAEjF,CAAAA,GAAI8uF,aAAa9uF,CAAC,CAAA,CAAA,CAAA;AAClH,aAAA;SAzBkB,EAAA,IAAA,CA2BnBmvF,YAAW/Z,SAAAA,KAAAA,EAAAA;YACV,IAAI0Z,YAAAA,IAAgB,KAAKjxD,CAAAA,OAAO,EAAE;AAChC,gBAAA,IAAI,CAAC,KAAK4wD,CAAAA,gBAAgB,IAAIrZ,KAAAA,CAAM4a,UAAU,EAAE;AAC9C5a,oBAAAA,KAAAA,CAAM6a,cAAc,EAAA,CAAA;AACpB7a,oBAAAA,KAAAA,CAAM8a,eAAe,EAAA,CAAA;AACvB,iBAAA;AACA,gBAAA,IAAMR,QAAQV,QAAS5Z,CAAAA,KAAAA,CAAAA,CAAAA;AACvB,gBAAA,IAAMua,OAAOC,QAASF,CAAAA,KAAAA,CAAAA,CAAAA;AACtB,gBAAA,IAAMvqF,KAAKvB,IAAKe,CAAAA,GAAG,CAACmqF,YAAAA,CAAae,OAAO,GAAGH,KAAAA,CAAMG,OAAO,CAAA,GAAIjsF,KAAKe,GAAG,CAACmqF,aAAagB,OAAO,GAAGJ,MAAMI,OAAO,CAAA,CAAA;AAEzG7qF,gBAAAA,CAAAA,GAAI0qF,KAAK1qF,CAAC,CAAA;AACVjF,gBAAAA,CAAAA,GAAI2vF,KAAK3vF,CAAC,CAAA;AACV,gBAAA,IAAImF,KAAK,CAAG,EAAA;AACV,oBAAA,KAAA,CAAK4qF,aAAa,CAAC5B,gBAAkBkB,EAAAA,kBAAAA,CAAmBja,OAAOnwE,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACpE,iBAAA;AACA,gBAAA,KAAA,CAAK+vF,aAAa,CAACzB,oBAAsBe,EAAAA,kBAAAA,CAAmBja,KAAOnwE,EAAAA,CAAAA,EAAGjF,CAAGiF,EAAAA,CAAAA,GAAI6pF,YAAa7pF,CAAAA,CAAC,EAAEjF,CAAAA,GAAI8uF,aAAa9uF,CAAC,CAAA,CAAA,CAAA;AACjH,aAAA;YACA8uF,YAAe,GAAA,CAAA,CAAA;SA5CG,EAAA,IAAA,CAAA,CAAA;QA+CtB,IAAI,CAACF,cAAc,CAACQ,WAAAA,CAAY,GAAG,IAAI,CAACR,cAAc,CAACO,QAAS,CAAA,CAAA;QAEhEpwF,MAAOkQ,CAAAA,IAAI,CAAC,IAAI,CAAC2/E,cAAc,CAAE9/E,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;AACvC,YAAA,IAAA,YAAA,CAAA;aAAA,YAAA,GAAA,KAAA,CAAK3C,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX,YAAayzD,CAAAA,gBAAgB,CAACg+B,MAAAA,CAAO9uF,IAAO,CAAA,EAAA,KAAA,CAAKutF,cAAc,CAACvtF,IAAK,CAAA,CAAA,CAAA;AACvE,SAAA,CAAA,CAAA;QAEA,IAAI,CAAC8wD,gBAAgB,CAACg8B,gBAAkB,EAAA,IAAI,CAACiC,OAAO,CAACzuF,IAAI,CAAC,IAAI,CAAA,CAAA,CAAA;QAC9D,IAAI,CAACwwD,gBAAgB,CAACi8B,sBAAwB,EAAA,IAAI,CAACiC,aAAa,CAAC1uF,IAAI,CAAC,IAAI,CAAA,CAAA,CAAA;QAC1E,IAAI,CAACwwD,gBAAgB,CAACm8B,oBAAsB,EAAA,IAAI,CAACgC,WAAW,CAAC3uF,IAAI,CAAC,IAAI,CAAA,CAAA,CAAA;QACtE,IAAI,CAACwwD,gBAAgB,CAACk8B,qBAAuB,EAAA,IAAI,CAACkC,aAAa,CAAC5uF,IAAI,CAAC,IAAI,CAAA,CAAA,CAAA;AAC3E,KAAA,CAAA;AAEAouF,IAAAA,MAAAA,CAAAA,aAIC,GAJDA,SAAAA,aAAej7E,CAAAA,IAAY,EAAEsgE,KAAqB,EAAA;AAChD,QAAA,IAAMuZ,QAAW,GAAA,IAAI,CAACA,QAAQ,CAAC75E,IAAK,CAAA,CAAA;QAEpC65E,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAU7/E,OAAO,CAACrR,SAAAA,EAAAA,EAAAA;mBAAMA,EAAG23E,CAAAA,KAAAA,CAAAA,CAAAA;;AAC7B,KAAA,CAAA;AAEAjjB,IAAAA,MAAAA,CAAAA,gBAWC,GAXDA,SAAAA,gBAAkBr9C,CAAAA,IAAY,EAAE07E,QAAyC,EAAA;AACvE,QAAA,IAAI7B,QAAW,GAAA,IAAI,CAACA,QAAQ,CAAC75E,IAAK,CAAA,CAAA;AAElC,QAAA,IAAI,CAAC65E,QAAU,EAAA;AACbA,YAAAA,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAC75E,IAAAA,CAAK,GAAG,EAAE,CAAA;AACrC,SAAA;AACArS,QAAAA,OAAAA,CAAQksF,QAAU6B,EAAAA,QAAAA,CAAAA,CAAAA;QAElB,OAAO,WAAA;AACL7tF,YAAAA,UAAAA,CAAWgsF,QAAU6B,EAAAA,QAAAA,CAAAA,CAAAA;AACvB,SAAA,CAAA;AACF,KAAA,CAAA;AAEA/7B,IAAAA,MAAAA,CAAAA,mBAMC,GANDA,SAAAA,mBAAqB3/C,CAAAA,IAAY,EAAE07E,QAAyC,EAAA;AAC1E,QAAA,IAAM7B,QAAW,GAAA,IAAI,CAACA,QAAQ,CAAC75E,IAAK,CAAA,CAAA;AAEpC,QAAA,IAAI65E,QAAU,EAAA;AACZhsF,YAAAA,UAAAA,CAAWgsF,QAAU6B,EAAAA,QAAAA,CAAAA,CAAAA;AACvB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQJ,OA0BP,GA1BD,SAAQA,OAAAA,CAASpvF,CAAiB,EAAA;AAChC,QAAA,IAAQiE,CAASjE,GAAAA,CAAAA,CAATiE,CAAGjF,EAAAA,CAAAA,GAAMgB,CAANhB,CAAAA,CAAAA,CAAAA;AACX,QAAA,IAAMywF,aAAuB,EAAE,CAAA;;AAG/B,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA0B,IAAI,CAAC55E,MAAM,CAACk/D,YAAY,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAzC5/D,YAAAA,IAAAA,WAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTs6E,YAAAA,IAAAA,WAAAA,CAAAA;YAAAA,CAAAA,WAAAA,GAAAA,YAAW1vF,IAAI,CAAf0vF,MAAAA,WAAmBt6E,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,WAAAA,CAAY8iE,OAAO,CAACh0E,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC5C,SAAA;AAEA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAwBywF,UAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzBC,YAAAA,IAAAA,SAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMC,cAAiBD,GAAAA,SAAAA,CAAU1tF,IAAI,CAACmT,WAAW,CAAA;AAEjD,YAAA,IAAI,CAACw6E,cAAgB,EAAA;AACnB,gBAAA,SAAA;AACF,aAAA;AAEA,YAAA,IAAMC,YAAY,QACbF,CAAAA,EAAAA,EAAAA,SAAAA,EAAAA;AACH1a,gBAAAA,aAAAA,EAAe2a,eAAevyE,EAAE;AAChCyyE,gBAAAA,eAAAA,EAAiBF,eAAetvF,IAAI;;AAGtCqvF,YAAAA,SAAAA,CAAU1tF,IAAI,CAAC0wE,IAAI,CAAC,OAASgd,EAAAA,SAAAA,CAAAA,CAAAA;YAC7BC,cAAejd,CAAAA,IAAI,CAAC,OAASkd,EAAAA,SAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAI,CAAC/5E,MAAM,CAAC68D,IAAI,CAAC,OAASkd,EAAAA,SAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQP,aAEP,GAFD,SAAQA,aAAAA,CAAervF,CAAiB,EAAA;QACtC,IAAI,CAAC8vF,kBAAkB,CAAC9vF,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQsvF,WAEP,GAFD,SAAQA,WAAAA,CAAatvF,CAAiB,EAAA;QACpC,IAAI,CAAC8vF,kBAAkB,CAAC9vF,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQuvF,aAEP,GAFD,SAAQA,aAAAA,CAAevvF,CAAiB,EAAA;QACtC,IAAI,CAAC8vF,kBAAkB,CAAC9vF,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ8vF,kBAqDP,GArDD,SAAQA,kBAAoB9vF,CAAAA,CAAiB,EAAE8T,IAAsB,EAAA;AACnE,QAAA,IAAIi8E,SAA2B,GAAA,IAAA,CAAA;QAC/B,IAAQ9rF,CAAAA,GAAwBjE,CAAxBiE,CAAAA,CAAAA,EAAGjF,CAAqBgB,GAAAA,CAAAA,CAArBhB,GAAG8Q,KAAkB9P,GAAAA,CAAAA,CAAlB8P,KAAOC,EAAAA,MAAAA,GAAW/P,CAAX+P,CAAAA,MAAAA,CAAAA;AAErB,QAAA,IAAI,EAAE+D,IAAAA,KAAAA,CAAAA,IAAyC,IAAI,CAAC45E,sBAAsB,CAAG,EAAA;AAC3E,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA0B,IAAI,CAAC73E,MAAM,CAACk/D,YAAY,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAzC5/D,gBAAAA,IAAAA,WAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM+iE,OAAU/iE,GAAAA,WAAAA,CAAY8iE,OAAO,CAACh0E,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;gBAEvC,IAAIk5E,OAAAA,CAAQr6E,MAAM,GAAG,CAAG,EAAA;AACtBkyF,oBAAAA,SAAAA,GAAY7X,OAAO,CAACA,OAAQr6E,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AACzC,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAMmyF,YAAY,IAAIjD,gBAAAA,EAAAA,CAAAA;QAEtBiD,SAAUjsE,CAAAA,QAAQ,CAAC9f,CAAC,GAAG,CAACA,CAAAA,GAAI,CAAA,IAAK,CAAI6L,GAAAA,KAAAA,CAAAA;QACrCkgF,SAAUjsE,CAAAA,QAAQ,CAAC/kB,CAAC,GAAG,CAACA,CAAAA,GAAI,CAAA,IAAK,CAAI+Q,GAAAA,MAAAA,CAAAA;AACrCigF,QAAAA,SAAAA,CAAUhD,KAAK,CAAC/oF,CAAC,GAAGjE,CAAAA,CAAEooB,EAAE,GAAGtY,KAAAA,CAAAA;AAC3BkgF,QAAAA,SAAAA,CAAUhD,KAAK,CAAChuF,CAAC,GAAGgB,CAAAA,CAAEqoB,EAAE,GAAGtY,MAAAA,CAAAA;QAE3B,IAAMkgF,OAAAA,GAAUD,UAAU/C,qBAAqB,CAAA;AAE/C,QAAA,IAAI8C,SAAW,EAAA;YACbE,OAAQhiD,CAAAA,KAAK,GAAG8hD,SAAAA,CAAUhsE,QAAQ,CAAA;YAClCksE,OAAQjuF,CAAAA,IAAI,GAAG+tF,SAAAA,CAAU/tF,IAAI,CAAA;AAC/B,SAAA;AAEA,QAAA,IAAIswE,SAAyD,GAAA,aAAA,CAAA;QAE7D,OAAQx+D,IAAAA;AACN,YAAA,KAAA,CAAA;gBACEw+D,SAAY,GAAA,aAAA,CAAA;AAEZ,gBAAA,MAAA;AACF,YAAA,KAAA,CAAA;gBACEA,SAAY,GAAA,WAAA,CAAA;AAEZ,gBAAA,MAAA;AACF,YAAA,KAAA,CAAA;gBACEA,SAAY,GAAA,aAAA,CAAA;AAEZ,gBAAA,MAAA;AACJ,SAAA;AAEA,QAAA,IAAIyd,SAAW,EAAA;YACb,IAAMG,OAAAA,GAAUH,UAAU/tF,IAAI,CAAA;YAC9B,IAAM2tF,cAAAA,GAAiBO,QAAQ/6E,WAAW,CAAA;YAE1C+6E,OAAQxd,CAAAA,IAAI,CAACJ,SAAW0d,EAAAA,SAAAA,CAAAA,CAAAA;YACxBL,cAAejd,CAAAA,IAAI,CAACJ,SAAW0d,EAAAA,SAAAA,CAAAA,CAAAA;AAC/B,YAAA,IAAI,CAACn6E,MAAM,CAAC68D,IAAI,CAACJ,SAAW0d,EAAAA,SAAAA,CAAAA,CAAAA;AAC9B,SAAA;AACF,KAAA,CAAA;IAEA3yE,MAAAA,CAAAA,OASC,GATDA,SAAAA,OAAAA,GAAAA;;QACE,IAAI,IAAI,CAAC3f,MAAM,EAAE;YACf,IAAI,CAACiwF,QAAQ,GAAG,EAAC,CAAA;YAEjB5vF,MAAOkQ,CAAAA,IAAI,CAAC,IAAI,CAAC2/E,cAAc,CAAE9/E,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;AACvC,gBAAA,IAAA,YAAA,CAAA;iBAAA,YAAA,GAAA,KAAA,CAAK3C,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX,YAAa+1D,CAAAA,mBAAmB,CAAC07B,MAAAA,CAAO9uF,IAAO,CAAA,EAAA,KAAA,CAAKutF,cAAc,CAACvtF,IAAK,CAAA,CAAA,CAAA;AAC1E,aAAA,CAAA,CAAA;YACA,IAAI,CAACutF,cAAc,GAAG,EAAC,CAAA;AACzB,SAAA;AACF,KAAA,CAAA;AA/PWJ,IAAAA,OAAAA,WAAAA,CAAAA;AAgQZ,CAAA,GAAA;AAED,SAASoB,SAAUxa,KAAkB,EAAA;IACnC,IAAM+b,GAAAA,GAAM/b,MAAM12E,MAAM,CAAA;AACxB,IAAA,IAAQmxF,OAAqBza,GAAAA,KAAAA,CAArBya,OAASC,EAAAA,OAAAA,GAAY1a,KAAZ0a,CAAAA,OAAAA,CAAAA;AACjB,IAAA,IAAqCqB,0BAAAA,GAAAA,GAAAA,CAAIvV,qBAAqB,EAAA,EAAtD39E,OAA6BkzF,0BAA7BlzF,CAAAA,IAAAA,EAAM8nC,GAAuBorD,GAAAA,0BAAAA,CAAvBprD,GAAKj1B,EAAAA,KAAAA,GAAkBqgF,0BAAlBrgF,CAAAA,KAAAA,EAAOC,SAAWogF,0BAAXpgF,CAAAA,MAAAA,CAAAA;AAC1B,IAAA,IAAM9L,IAAI,CAAE4qF,UAAU5xF,IAAG,IAAK6S,QAAS,CAAI,GAAA,CAAA,CAAA;AAC3C,IAAA,IAAM9Q,IAAI,CAAI,GAAE8vF,CAAAA,OAAU/pD,GAAAA,GAAE,IAAKh1B,MAAU,GAAA,CAAA,CAAA;IAE3C,OAAO;QAAE9L,CAAAA,EAAAA,CAAAA;QAAGjF,CAAAA,EAAAA,CAAAA;AAAE,KAAA,CAAA;AAChB;;AC5SO,IAAA,cAAMoxF,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,cAAAA,CAAAA;qBAAuBp6E,MACnC,CAAA;;ACSD,IAAM6vD,MAAU,GAAA,4vBAAA,CAAA;AA8BhB,IAAMvB,QAAY,GAAA,2IAAA,CAAA;AAWlB,IAAI5zB,MAAO,GAAA,CAAA,CAAA;AAEJ,IAAA,YAAM2/C,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,CAKTp1D,KAA2B,EACVvO,SAAoB,EACrC,MAA+B,EAAA;aADdA,SAAAA,GAAAA,SAAAA,CAAAA;aACA7W,MAAAA,GAAAA,MAAAA,CAAAA;AAEjB,QAAA,IAAI,CAACxI,KAAK,GAAG,KAAOjM,CAAAA,OAAO,CAA8BkvF,YAAY,CAAA;QACrE,IAAM1yD,QAAAA,GAAW,IAAI,CAAC2yD,cAAc,EAAA,CAAA;QACpC,IAAMhiD,QAAAA,GAAW,IAAI,CAACiiD,cAAc,EAAA,CAAA;AAEpC,QAAA,IAAI,CAACv2B,IAAI,GAAG,IAAI,CAACw2B,UAAU,CAACliD,QAAU3Q,EAAAA,QAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAAC8yD,UAAU,EAAA,CAAA;;AAdNL,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;IAiBXK,MAAAA,CAAAA,UAoBC,GApBDA,SAAAA,UAAAA,GAAAA;AACE,QAAA,IAAM,QAAE9yD,GAAa,IAAI,CAACq8B,IAAI,CAAtBr8B,QAAAA,CAAAA;AACR,QAAA,IAAM+yD,KAAQ/yD,GAAAA,QAAAA,CAASgzD,UAAU,CAAC,SAAUprF,KAAK,EAAA,CAAA;AACjD,QAAA,IAAMqrF,IAAOjzD,GAAAA,QAAAA,CAASoiD,UAAU,CAAC,QAASx6E,KAAK,EAAA,CAAA;AAE/C,QAAA,IAAMsrF,UAAU,IAAI9oF,OAAAA,EAAAA,CAAAA;AACpB,QAAA,IAAMuoC,WAAW,IAAI9rB,UAAAA,EAAAA,CAAAA;AACrB,QAAA,IAAMssE,YAAY,IAAI,CAACrkE,SAAS,CAACtmB,KAAK,CAACZ,KAAK,EAAA,CAAA;AAE5C,QAAA,IAAI,CAACknB,SAAS,CAACmmB,cAAc,CAACi+C,SAASvgD,QAAUwgD,EAAAA,SAAAA,CAAAA,CAAAA;QAEjDJ,KAAM1sF,CAAAA,CAAC,GAAG8sF,SAAAA,CAAU9sF,CAAC,CAAA;QACrB0sF,KAAM3xF,CAAAA,CAAC,GAAG+xF,SAAAA,CAAU/xF,CAAC,CAAA;QACrB6xF,IAAK5sF,CAAAA,CAAC,GAAG6sF,OAAAA,CAAQ7sF,CAAC,CAAA;QAClB4sF,IAAK7xF,CAAAA,CAAC,GAAG8xF,OAAAA,CAAQ9xF,CAAC,CAAA;QAClB6xF,IAAK5oF,CAAAA,CAAC,GAAG6oF,OAAAA,CAAQ7oF,CAAC,CAAA;QAElB21B,QAAS2pC,CAAAA,UAAU,CAAC,OAASopB,EAAAA,KAAAA,CAAAA,CAAAA;QAC7B/yD,QAASqiD,CAAAA,UAAU,CAAC,MAAQ4Q,EAAAA,IAAAA,CAAAA,CAAAA;QAC5BjzD,QAAST,CAAAA,aAAa,CAAC,OAASoT,EAAAA,QAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IAEA,MAAQggD,CAAAA,cAwBP,GAxBD,SAAQA,cAAAA,GAAAA;AACN,QAAA,IAAM30B,MAAuB,GAAA;AAC3B,YAAA;AAAC,gBAAA,YAAA;AAAc,gBAAA,IAAI,CAAC/lD,MAAM,CAAC8iE,GAAG,KAAKliC,yBAAAA;AAA0B,aAAA;AAC9D,SAAA,CAAA;AACD,QAAA,IAAMppC,QAAQy7C,iBAAkB,CAAA,IAAI,CAACz7C,KAAK,CAAA,CAAEsW,QAAQ,CAAC,CAAA,CAAA,CAAA;AACrD,QAAA,IAAM2mE,aAA+B,GAAA;YACnCpuB,MAAQ,EAAA;gBACN2J,MAAAA,EAAAA,MAAAA;gBACAvB,QAAAA,EAAAA,QAAAA;AACA0B,gBAAAA,WAAAA,EAAaxK,YAAYyK,KAAK;gBAC9BrK,MAAAA,EAAAA,MAAAA;AACF,aAAA;AACF,SAAA,CAAA;AAEA,QAAA,IAAMh+B,WAAW2hC,QAASrgE,CAAAA,MAAM,CAAC,IAAI,CAAC2W,MAAM,EAAEy0E,aAAAA,CAAAA,CAAAA;AAE9C1sD,QAAAA,QAAAA,CAAS4+B,QAAQ,GAAG,IAAA,CAAA;AACpB5+B,QAAAA,QAAAA,CAAS4iC,SAAS,GAAG,KAAA,CAAA;AACrB5iC,QAAAA,QAAAA,CAASqiD,UAAU,CAAC,MAAA,EAAQ,IAAIl2E,OAAQ,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACjD6zB,QAAAA,QAAAA,CAAS2pC,UAAU,CAAC,OAAS,EAAA,IAAIviE,QAAQ,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QAC5C44B,QAASqiD,CAAAA,UAAU,CAAC,QAAU,EAAA,IAAIl2E,QAAQsD,KAAK,CAAC,CAAE,CAAA,GAAG,GAAKA,EAAAA,KAAK,CAAC,CAAE,CAAA,GAAG,KAAKA,KAAK,CAAC,EAAE,GAAG,GAAA,EAAKA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA;AAClGuwB,QAAAA,QAAAA,CAAST,aAAa,CAAC,OAAA,EAAS,IAAI1Y,UAAW,CAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QAExD,OAAOmZ,QAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQ4yD,CAAAA,cAqBP,GArBD,SAAQA,cAAAA,GAAAA;QACN,IAAMQ,SAAAA,GAAY,IAAIxwF,UAAW,CAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA,CAAA;AAEzD,QAAA,OAAO4hE,SAASljE,MAAM,CACpB,IAAI,CAAC2W,MAAM,EACX;YACEoyD,UAAY,EAAA;gBACVgpB,MAAQ,EAAA;oBACNtuF,IAAM,EAAA,CAAA;oBACN1B,MAAQ,EAAA,CAAA;oBACRiwF,MAAQ,EAAA,CAAA,GAAIr6C,aAAan0C,iBAAiB;AAC1CsN,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA;wBACrB,CAAC,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,GAAA;AAAK,wBAAA,GAAA;wBAAK,CAAC,GAAA;wBAAK,CAAC,GAAA;wBAAK,CAAC,GAAA;AACxC,qBAAA,CAAA;AACH,iBAAA;AACF,aAAA;AACAsxB,YAAAA,SAAAA,EAAW6oB,UAAUnzF,MAAM;YAC3BwkF,OAAS,EAAA;gBAAEryE,IAAMghF,EAAAA,SAAAA;AAAU,aAAA;AAC3BjpB,YAAAA,IAAAA,EAAM/Y,UAAUmiC,KAAK;YACrBC,SAAW,EAAA,CAAA;AACb,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQX,UAUP,GAVD,SAAQA,UAAYliD,CAAAA,QAAkB,EAAE3Q,QAAkB,EAAA;AACxD,QAAA,OAAO4kC,KAAKtjE,MAAM,CAChB,IAAI,CAAC2W,MAAM,EACX;AACExV,YAAAA,IAAAA,EAAM,kBAAqBqwC,GAAAA,MAAAA,EAAAA;YAC3BlgC,QAAU,EAAA,CAAA;AACVqgC,YAAAA,WAAAA,EAAahT,QAAQ8H,YAAY,EAAA;YACjC4I,QAAAA,EAAAA,QAAAA;YACA3Q,QAAAA,EAAAA,QAAAA;AACF,SAAA,CAAA,CAAA;AACJ,KAAA,CAAA;AAlGWyyD,IAAAA,OAAAA,YAAAA,CAAAA;AAmGZ,CAAA;;ACtIM,IAAA,iBAAMgB,iBAAD,SAAL,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;AAMX;;;AAGC,MAAA,KAAA,CACDC,SAAY,GAAA,IAAA,CAAA;AACZ;;;;AAIC,MAAA,KAAA,CACD7d,KAAQ,GAAA,EAAA,CAAA;AACR;;;AAGC,MAAA,KAAA,CACD8d,SAAsB,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AAC5B;;AAEC,MAAA,KAAA,CACDC,SAGI,GAAA;YACAC,OAAS,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA;YACfC,OAAS,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA;AACjB,SAAA,CAAA;AAEF;;;;;AAKC,MAAA,KAAA,CACDC,kBAAwC,GAAA,CAAA,CAAA;cAEhCC,oBAAuB,GAAA,KAAA,CAAA;cACvBC,UAAa,GAAA,KAAA,CAAA;AAErB,mCACQC,YAAe,GAAA,IAAA,CAAA;AAEfC,QAAAA,KAAAA,CAAAA,QAAAA,GAAW,CAAC,CAAA,CAAA;AAwPpBjX,QAAAA,KAAAA,CAAAA,gBAAAA,GAAmB,SAAC7P,KAAAA,EAAAA;YAClB,IAAI,CAAC,KAAK+mB,CAAAA,SAAS,EAAE;AACnB,gBAAA,OAAA;AACF,aAAA;YACA,IAAQ9T,QAAa,GAAC,KAAKl8E,CAAAA,IAAI,CAACi5B,KAAK,CAAuBqgD,OAAO,CAACl6E,OAAO,CAAnE88E,QAAAA,CAAAA;YACR,IAAMqB,IAAAA,GAAO,MAAKxvC,cAAc,EAAA,CAAA;AAEhC,YAAA,IAAIwvC,IAAM,EAAA;gBACR,OAAO;AACLzrE,oBAAAA,IAAAA,EAAMyrE,KAAKzrE,IAAI;AACf2qE,oBAAAA,SAAAA,EAAWc,KAAKA,IAAI;oBACpBrB,QAAAA,EAAAA,QAAAA;AACF,iBAAA,CAAA;AACF,aAAA;AACF,SAAA,CAAA;;;AArTWmT,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AA+DX;;;MAIAY,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACT,SAAS,CAACC,OAAO,CAAA;AAC/B,KAAA,CAAA;AAEA;;;;AAIC,MACDS,OAAAA,aAEC,GAFDA,SAAAA,aAAelvF,CAAAA,GAAW,EAAE2B,GAAW,EAAA;AACrC,QAAA,IAAI,CAAC6sF,SAAS,CAACC,OAAO,GAAG;AAACzuF,YAAAA,GAAAA;AAAK2B,YAAAA,GAAAA;AAAI,SAAA,CAAA;AACrC,KAAA,CAAA;AAEA;;;MAIAwtF,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACX,SAAS,CAACE,OAAO,CAAA;AAC/B,KAAA,CAAA;AAEA;;;;AAIC,MACDU,OAAAA,aAEC,GAFDA,SAAAA,aAAepvF,CAAAA,GAAW,EAAE2B,GAAW,EAAA;AACrC,QAAA,IAAI,CAAC6sF,SAAS,CAACE,OAAO,GAAG;AAAC1uF,YAAAA,GAAAA;AAAK2B,YAAAA,GAAAA;AAAI,SAAA,CAAA;AACrC,KAAA,CAAA;IAEA,MAASq3B,CAAAA,OAeR,GAfD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAM,GAAU,GAAA,IAAI,CAACh6B,IAAI,CAAC6T,MAAM,CAAxB8iE,GAAAA,CAAAA;QACR,IAA8B,0BAAA,GAAA,IAAI,CAAC0Z,YAAY,CAACjxF,OAAO,EAA/C0S,IAAsB,GAAA,0BAAA,CAAtBA,IAAMw+E,EAAAA,WAAAA,GAAgB,0BAAhBA,CAAAA,WAAAA,CAAAA;AAEd,QAAA,IAAIx+E,IAASiO,KAAAA,YAAiB,CAACwwE,KAAK,EAAE;YACpC,IAAI,CAACP,SAAS,GAAG,IAAA,CAAA;YACjB,IAAIM,WAAAA,IAAe3Z,QAAQliC,yBAA2B,EAAA;gBACpD,IAAI,CAAC+7C,cAAc,GAAG,IAAInC,aAAa,IAAK,CAACruF,IAAI,CAACi5B,KAAK,CAAuBqgD,OAAO,EAAE,IAAI,CAAC5uD,SAAS,EAAE,IAAI,CAAC7W,MAAM,CAAA,CAAA;AACpH,aAAA;AACF,SAAA;QACA,IAAI,IAAI,CAAC28E,cAAc,EAAE;YACvB,IAAI,CAACA,cAAc,CAACv4B,IAAI,CAACj4D,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;YACzC,IAAI,CAACq7B,SAAS,GAAG,IAAI,CAACm1D,cAAc,CAACv4B,IAAI,CAAC58B,SAAS,CAAA;AACrD,SAAA;AACA,QAAA,IAAI,CAACr7B,IAAI,CAAC84E,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAA;AACpD,KAAA,CAAA;IAEA,MAAS/+C,CAAAA,SAWR,GAXD,SAASA,SAAAA,GAAAA;AACP,QAAA,iBAAA,CAAA,SAAA,CAAMA,SAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACL,IAAI,IAAI,CAAC/5B,IAAI,IAAI,IAAI,CAACA,IAAI,CAACmT,WAAW,EAAE;;YAEtC,IAAI,IAAI,CAAC08E,UAAU,IAAI,CAAC,IAAI,CAAC7vF,IAAI,CAAC0qB,SAAS,CAACsmB,QAAQ,EAAA,IAAM,IAAI,CAAChxC,IAAI,CAACmT,WAAW,CAACshE,QAAQ,EAAA,GAAK,CAAG,EAAA;gBAC9F,IAAI,CAACz0E,IAAI,CAACmT,WAAW,CAACmjE,qBAAqB,CAAC,IAAI,CAACt2E,IAAI,EAAE,IAAK,CAACA,IAAI,CAACi5B,KAAK,CAAuBqgD,OAAO,CAACl6E,OAAO,CAAC0S,IAAI,CAAA,CAAA;gBAClH,IAAI,CAAC+9E,UAAU,GAAG,KAAA,CAAA;AACpB,aAAA;YACA,IAAI,CAACG,SAAS,GAAG,KAAA,CAAA;AACjB,YAAA,IAAI,CAACS,aAAa,EAAA,CAAA;AACpB,SAAA;AACF,KAAA,CAAA;IAEA,MAAS32D,CAAAA,QAmBR,GAnBD,SAASA,QAAAA,GAAAA;AACP,QAAA,iBAAA,CAAA,SAAA,CAAMA,QAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,QAAA,IAAM,IAAW,GAAA,IAAI,CAACu2D,YAAY,CAACjxF,OAAO,CAAlC0S,IAAAA,CAAAA;AACR,QAAA,IAAM,GAAU,GAAA,IAAI,CAAC9R,IAAI,CAAC6T,MAAM,CAAxB8iE,GAAAA,CAAAA;AAER,QAAA,IAAI7kE,IAASiO,KAAAA,YAAiB,CAACwwE,KAAK,EAAE;YACpC,IAAI,CAACP,SAAS,GAAG,IAAA,CAAA;AACnB,SAAA,MAAO,IAAIl+E,IAASiO,KAAAA,YAAiB,CAAC2wE,IAAI,EAAE;AAC1C,YAAA,IAAMtxF,OAAU,GAAA,IAAI,CAACixF,YAAY,CAACjxF,OAAO,CAAA;YACzC,IAAMuxF,cAAAA,GAAiBvxF,QAAQuxF,cAAc,CAAA;YAE7C,IAAIha,GAAAA,KAAQliC,6BAA6Bk8C,cAAgB,EAAA;AACrC,gBAAA,IAAA,sBAAA,CAAA;AAAlB,gBAAA,IAAM,KAAEve,GAAU,CAAA,CAAA,yBAAA,IAAI,CAACpyE,IAAI,CAACmT,WAAW,KAAA,IAAA,GAArB,sBAAyB,GAAA,EAAC,EAApCi/D,KAAAA,CAAAA;AAER,gBAAA,IAAIA,KAAO,EAAA;oBACT,IAAI,CAACwe,eAAe,CAACxxF,OAASgzE,EAAAA,KAAAA,CAAAA,CAAAA;AAChC,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASn4C,QAsCR,GAtCD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAqB3B,QAAA,IAAA,oBAAA,CAAA;QApBA,IAAI,CAAC0tF,UAAU,GAAG,IAAA,CAAA;;QAGlB,IAAI,IAAI,CAACE,QAAQ,IAAI,IAAI,CAAC/vF,IAAI,CAACsL,IAAI,EAAE;YACnC,IAAI,IAAI,CAACtL,IAAI,CAACsL,IAAI,IAAI,CAAA,IAAK,IAAI,CAACykF,QAAQ,GAAG,CAAG,EAAA;AAG5C,gBAAA,IAAA,sBAAA,CAAA;gBAFA,IAAM3wF,OAAAA,GAAU,IAAI,CAACY,IAAI,CAACi5B,KAAK,CAACqgD,OAAO,CAACl6E,OAAO,CAAA;AAE/C,gBAAA,CAAA,sBAAA,GAAA,IAAI,CAACY,IAAI,CAACmT,WAAW,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,sBAAA,CAAuBgjE,kBAAkB,CAAC,IAAI,CAACn2E,IAAI,EAAEZ,QAAQ0S,IAAI,CAAA,CAAA;AACnE,aAAA;SACK,MAAA;;YAEL,IAAI,IAAI,CAAC9R,IAAI,CAACsL,IAAI,IAAI,CAAA,IAAKnJ,KAAK,CAAG,EAAA;AAGjC,gBAAA,IAAA,uBAAA,CAAA;gBAFA,IAAM/C,QAAAA,GAAU,IAAI,CAACY,IAAI,CAACi5B,KAAK,CAACqgD,OAAO,CAACl6E,OAAO,CAAA;AAE/C,gBAAA,CAAA,uBAAA,GAAA,IAAI,CAACY,IAAI,CAACmT,WAAW,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,uBAAA,CAAuBgjE,kBAAkB,CAAC,IAAI,CAACn2E,IAAI,EAAEZ,SAAQ0S,IAAI,CAAA,CAAA;AACnE,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACi+E,QAAQ,GAAG,IAAI,CAAC/vF,IAAI,CAACsL,IAAI,CAAA;AAE9B,QAAA,CAAA,oBAAA,GAAA,IAAI,CAACklF,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAAnB,qBAAqB9B,UAAU,EAAA,CAAA;QAE/B,IAAI,CAAC,IAAI,CAACmC,SAAS,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;AACxC,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACA,WAAW,CAAC1qE,EAAE,IAAI,IAAI,CAACkpE,SAAS,CAAA;AACrC,QAAA,IAAI,CAACwB,WAAW,CAACzqE,EAAE,IAAI,IAAI,CAACipE,SAAS,CAAA;QACrC,IAAI,CAACwB,WAAW,CAACxrF,EAAE,IAAI,IAAI,CAACwrF,WAAW,CAACzqE,EAAE,CAAA;QAC1C,IAAI,CAACyqE,WAAW,CAACzrF,EAAE,IAAI,IAAI,CAACyrF,WAAW,CAAC1qE,EAAE,CAAA;AAE1C,QAAA,IAAI2qE,oBAAqB,CAAA,IAAI,CAACD,WAAW,CAAG,EAAA;YAC1C,IAAI,CAACD,SAAS,GAAG,IAAA,CAAA;YACjB,IAAI,CAACC,WAAW,GAAG,IAAA,CAAA;SACd,MAAA;YACL,IAAI,CAACE,cAAc,CAAC,IAAI,CAACH,SAAS,EAAE,IAAI,CAACC,WAAW,CAAA,CAAA;AACtD,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASv1D,MAIR,GAJD,SAASA,MAAAA,CAAQC,QAAkB,EAAA;QACjC,IAAI,IAAI,CAACg1D,cAAc,EAAE;AACvB,YAAA,IAAI,CAACA,cAAc,CAACv4B,IAAI,CAAC18B,MAAM,CAACC,QAAAA,CAAAA,CAAAA;AAClC,SAAA;AACF,KAAA,CAAA;IAEA,MAASrB,CAAAA,SAER,GAFD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAA,oBAAA,CAAA;AAAA,QAAA,CAAA,oBAAA,GAAA,IAAI,CAACq2D,cAAc,qBAAnB,oBAAqBv4B,CAAAA,IAAI,CAAC58C,OAAO,EAAA,CAAA;AACnC,KAAA,CAAA;IAEAo1E,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,GAAAA;;AAEA,KAAA,CAAA;AAEAO,IAAAA,MAAAA,CAAAA,cA4BC,GA5BDA,SAAAA,cAAgBC,CAAAA,GAA2B,EAAE7e,KAAqB,EAAA;AAChE,QAAA,IAAI,EAAC6e,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKC,WAAW,CAAA,IAAI,CAAC,IAAI,CAACC,WAAW,EAAA,IAAM,CAAC,IAAI,CAACnxF,IAAI,CAACmT,WAAW,EAAE;AACtE,YAAA,OAAA;AACF,SAAA;QAEA,IAA0B89E,gBAAAA,GAAAA,IAAIC,WAAW,EAAjCnvE,WAAkBkvE,gBAAlBlvE,CAAAA,QAAAA,EAAUshB,MAAQ4tD,gBAAR5tD,CAAAA,GAAAA,CAAAA;QAClB,IAAM/9B,EAAAA,GAAK8sE,MAAM9sE,EAAE,CAAA;QACnB,IAAMD,EAAAA,GAAK+sE,MAAM/sE,EAAE,GAAG+sE,MAAMtkE,KAAK,GAAGskE,MAAMrkE,MAAM,CAAA;QAChD,IAAMqjF,KAAAA,GAAQrvE,QAAQ,CAAC,CAAE,CAAA,CAAA;AACzB,QAAA,IAAMsvE,EAAKzwF,GAAAA,IAAAA,CAAK4iC,GAAG,CAACH,GAAMziC,GAAAA,IAAAA,CAAKU,EAAE,GAAG,GAAM,GAAA,CAAA,CAAA,GAAKV,IAAKe,CAAAA,GAAG,CAACyvF,KAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAMrjF,SAASzI,EAAK+rF,GAAAA,EAAAA,CAAAA;AACpB,QAAA,IAAMvjF,QAAQzI,EAAKgsF,GAAAA,EAAAA,CAAAA;QACnB,IAA6B,eAAA,GAAA,IAAI,CAAC7B,SAAS,EAAnCC,OAAqB,GAAA,eAAA,CAArBA,OAASC,EAAAA,OAAAA,GAAY,eAAZA,CAAAA,OAAAA,CAAAA;QACjB,IAAI4B,EAAAA,GAAKvvE,QAAQ,CAAC,CAAE,CAAA,GAAG,IAAI,CAACwtE,SAAS,CAAC,CAAA,CAAE,GAAGzhF,KAAAA,CAAAA;QAC3C,IAAIyjF,EAAAA,GAAKxvE,QAAQ,CAAC,CAAE,CAAA,GAAG,IAAI,CAACwtE,SAAS,CAAC,CAAA,CAAE,GAAGxhF,MAAAA,CAAAA;QAE3C,IAAOqlC,IAAAA,GAAcq8C,YAARn8C,IAAQm8C,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACrB,IAAOp8C,IAAAA,GAAcq8C,YAARv8C,IAAQu8C,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAErB4B,EAAK5uF,GAAAA,OAAAA,CAAM4uF,IAAIl+C,IAAME,EAAAA,IAAAA,CAAAA,CAAAA;QACrBi+C,EAAK7uF,GAAAA,OAAAA,CAAM6uF,IAAIl+C,IAAMF,EAAAA,IAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAIm+C,EAAOl+C,KAAAA,IAAAA,IAAQk+C,EAAOh+C,KAAAA,IAAAA,IAAQF,SAASE,IAAM,EAAA;AAC/C8+B,YAAAA,IAAAA,aAAAA,CAAAA;AAAAA,YAAAA,CAAAA,aAAAA,GAAAA,KAAM/lE,CAAAA,MAAM,KAAZ+lE,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAc6a,cAAc,EAAA,CAAA;AAC9B,SAAA;AACA,QAAA,IAAIsE,EAAOl+C,KAAAA,IAAAA,IAAQk+C,EAAOp+C,KAAAA,IAAAA,IAAQE,SAASF,IAAM,EAAA;AAC/Ci/B,YAAAA,IAAAA,cAAAA,CAAAA;AAAAA,YAAAA,CAAAA,cAAAA,GAAAA,KAAM/lE,CAAAA,MAAM,KAAZ+lE,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAAA,CAAc6a,cAAc,EAAA,CAAA;AAC9B,SAAA;AACA,QAAA,IAAI,CAACjtF,IAAI,CAACmT,WAAW,CAACwgC,MAAM,CAAC5xB,QAAQ,GAAG,IAAI/b,OAAQsrF,CAAAA,EAAAA,EAAIC,EAAIH,EAAAA,KAAAA,CAAAA,CAAAA;AAC9D,KAAA,CAAA;AAEAR,IAAAA,MAAAA,CAAAA,eA6DC,GA7DDA,SAAAA,eAAiBxxF,CAAAA,OAAgC,EAAEoyF,WAAwB,EAAA;;QACzE,IAAIpyF,OAAAA,CAAQ1D,MAAM,KAAK,QAAU,EAAA;AAC/B,YAAA,OAAA;AACF,SAAA;QACA,IAAIm1F,SAAAA,CAAAA;AACJ,QAAA,IAAMY,UAA8D,GAAA;AAClExF,YAAAA,UAAAA,EAAY,SAAC7Z,KAAAA,EAAAA;AAWI,gBAAA,IAAA,sBAAA,CAAA;gBAVf,IAAI,CAAC,KAAK+e,CAAAA,WAAW,EAAI,EAAA;AACvB,oBAAA,OAAA;AACF,iBAAA;AACA,gBAAA,KAAA,CAAKvB,oBAAoB,GAAG,KAAK8B,CAAAA,uBAAuB,CAAC;AAAEzvF,oBAAAA,CAAAA,EAAGmwE,MAAMnwE,CAAC;AAAEjF,oBAAAA,CAAAA,EAAGo1E,MAAMp1E,CAAC;AAAC,iBAAA,CAAA,CAAA;gBAElF,IAAI,KAAA,CAAK4yF,oBAAoB,EAAE;AAC7B,oBAAA,OAAA;AACF,iBAAA;AACA,gBAAA,KAAA,CAAKiB,SAAS,GAAG,IAAA,CAAA;AACjB,gBAAA,KAAA,CAAKC,WAAW,GAAG,IAAA,CAAA;gBACnB,IAAMn9C,MAAAA,GAAAA,CAAS,yBAAA,KAAK3zC,CAAAA,IAAI,CAACmT,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAArB,uBAAuBwgC,MAAM,CAAA;gBAE5Ck9C,SAAY,GAAA;AACV5uF,oBAAAA,CAAAA,EAAGmwE,MAAMnwE,CAAC;AACVjF,oBAAAA,CAAAA,EAAGo1E,MAAMp1E,CAAC;oBACVk0F,WAAa,EAAA;AACXnvE,wBAAAA,QAAAA,EAAU4xB,CAAAA,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAAA,CAAQ5xB,QAAQ,CAACrc,OAAO,EAAM,KAAA;AAAC,4BAAA,CAAA;AAAG,4BAAA,CAAA;AAAG,4BAAA,CAAA;AAAE,yBAAA;AACjD29B,wBAAAA,GAAAA,EAAKsQ,CAAAA,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAQtQ,CAAAA,GAAG,KAAI,EAAA;AACtB,qBAAA;AACF,iBAAA,CAAA;AACF,aAAA;AACA6oD,YAAAA,SAAAA,EAAW,SAAC9Z,KAAAA,EAAAA;gBACV,IAAI,KAAA,CAAKwd,oBAAoB,EAAE;AAC7B,oBAAA,OAAA;AACF,iBAAA;gBAEA,KAAKoB,CAAAA,cAAc,CAACH,SAAqCze,EAAAA,KAAAA,CAAAA,CAAAA;AACzD,gBAAA,KAAA,CAAK0e,WAAW,GAAG1e,KAAAA,CAAAA;AACrB,aAAA;AACA+Z,YAAAA,QAAAA,EAAU,SAAC/Z,KAAAA,EAAAA;gBACT,IAAI,CAAC,KAAK+e,CAAAA,WAAW,EAAI,EAAA;AACvB,oBAAA,OAAA;AACF,iBAAA;gBACA,IAAML,WAAAA,GAAc,MAAKA,WAAW,CAAA;AAEpC,gBAAA,IAAI,CAACC,oBAAAA,CAAqBD,WAAa,EAAA,CAAA,CAAA,IAAMA,WAAa,EAAA;oBACxDA,WAAY1qE,CAAAA,EAAE,IAAI,KAAA,CAAKqrD,KAAK,CAAA;oBAC5Bqf,WAAYzqE,CAAAA,EAAE,IAAI,KAAA,CAAKorD,KAAK,CAAA;oBAC5B,KAAKof,CAAAA,SAAS,GAAG,QAAKA,CAAAA,EAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AACxB,iBAAA;gBACAA,SAAY,GAAA,IAAA,CAAA;AACd,aAAA;AACF,SAAA,CAAA;AAEA90F,QAAAA,MAAAA,CAAOkQ,IAAI,CAACwlF,UAAY3lF,CAAAA,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;AAC9BmzF,YAAAA,WAAAA,CAAYriC,gBAAgB,CAAC9wD,IAAMozF,EAAAA,UAAU,CAACpzF,IAAK,CAAA,CAAA,CAAA;AACrD,SAAA,CAAA,CAAA;AAEAozF,QAAAA,UAAAA,CAAWvF,SAAS,CAAC;YAAE7mF,EAAI,EAAA,CAAA;YAAGC,EAAI,EAAA,CAAA;YAAGwI,KAAO,EAAA,CAAA;YAAGC,MAAQ,EAAA,CAAA;AAAE,SAAA,CAAA,CAAA;AACzD,QAAA,IAAI,CAAC/N,IAAI,CAACw2B,YAAY,CAhSb64D,iBAAAA,CAAAA,CAgSiCoB,aAAa,GAAG,WAAA;AACxD10F,YAAAA,MAAAA,CAAOkQ,IAAI,CAACwlF,UAAY3lF,CAAAA,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;AAC9BmzF,gBAAAA,WAAAA,CAAY//B,mBAAmB,CAACpzD,IAAMozF,EAAAA,UAAU,CAACpzF,IAAK,CAAA,CAAA,CAAA;AACxD,aAAA,CAAA,CAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;IAkBA0vC,MAAAA,CAAAA,cAcC,GAdDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAMc,WAAc,GAAA,IAAI,CAACnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;QACjD,IAAMmsC,SAAAA,GAAYvkC,kBAAkBlyC,OAAQD,CAAAA,IAAI,EAAE,GAAM,GAAA,IAAI,CAAC2kB,SAAS,CAAC/pB,IAAI,CAACsB,CAAC,EAAE,GAAM,GAAA,IAAI,CAACyoB,SAAS,CAAC/pB,IAAI,CAAC3D,CAAC,CAAA,CAAA;QAE1Gy/E,SAAU3wE,CAAAA,OAAO,CAACk+B,SAAAA,QAAAA,EAAAA;YAChB6E,WAAYtnC,CAAAA,cAAc,CAACyiC,QAAAA,CAASE,EAAE,CAAA,CAAA;YACtC2E,WAAYtnC,CAAAA,cAAc,CAACyiC,QAAAA,CAASG,EAAE,CAAA,CAAA;YACtC0E,WAAYtnC,CAAAA,cAAc,CAACyiC,QAAAA,CAASI,EAAE,CAAA,CAAA;AACxC,SAAA,CAAA,CAAA;QAEA,OAAO;AACLt4B,YAAAA,IAAAA,EAAM0qE,YAAYxyC,QAAQ;YAC1BuzC,IAAMd,EAAAA,SAAAA;AACR,SAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASthE,QAaR,GAbD,SAASA,QAAAA,CAAUnN,IAA0B,EAAA;AAC3C,QAAA,iBAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;QACf,IAAI,CAACqiF,YAAY,GAAGriF,IAAAA,CAAAA;QACpB,IAAIA,IAAAA,CAAK5O,OAAO,CAAC0S,IAAI,KAAKiO,YAAiB,CAAC2wE,IAAI,EAAE;YAChD,IAAMtxF,OAAAA,GAAU4O,KAAK5O,OAAO,CAAA;YAE5B,IAAIA,OAAAA,CAAQqwF,OAAO,EAAE;AACnB,gBAAA,IAAI,CAACD,SAAS,CAACC,OAAO,GAAGrwF,QAAQqwF,OAAO,CAAA;AAC1C,aAAA;YACA,IAAIrwF,OAAAA,CAAQswF,OAAO,EAAE;AACnB,gBAAA,IAAI,CAACF,SAAS,CAACE,OAAO,GAAGtwF,QAAQswF,OAAO,CAAA;AAC1C,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;MAIAyB,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;AACiB,QAAA,IAAA,sBAAA,CAAA;AAAf,QAAA,OAAO9qC,OAAQ,CAAA,CAAA,sBAAA,GAAA,IAAI,CAACrmD,IAAI,CAACmT,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAArB,sBAAuB4gE,CAAAA,WAAW,CAAK,IAAA,IAAI,CAAC+b,YAAY,CAAA;AACzE,KAAA,CAAA;AAEA;;;AAGC,MACD,MAAQ4B,CAAAA,uBA+BP,GA/BD,SAAQA,wBACN3vE,QAAkC,EAAA;QAElC,IAAM4tE,kBAAAA,GAAqB,IAAI,CAACA,kBAAkB,CAAA;AAElD,QAAA,IAAIA,kBAAoB,EAAA;AACtB,YAAA,IAAI5sD,GAAM,GAAA,CAAA,CAAA;AACV,YAAA,IAAI7nC,KAAQ,GAAA,CAAA,CAAA;AACZ,YAAA,IAAI8nC,MAAS,GAAA,CAAA,CAAA;AACb,YAAA,IAAI/nC,IAAO,GAAA,CAAA,CAAA;YAEX,IAAI,OAAO00F,uBAAuB,QAAU,EAAA;gBAC1C5sD,GAAM4sD,GAAAA,kBAAAA,CAAAA;gBACNz0F,KAAQy0F,GAAAA,kBAAAA,CAAAA;gBACR3sD,MAAS2sD,GAAAA,kBAAAA,CAAAA;gBACT10F,IAAO00F,GAAAA,kBAAAA,CAAAA;aACF,MAAA,IAAI5/E,QAAQ4/E,kBAAqB,CAAA,EAAA;;AACOA,gBAAAA,GAAAA,GAAAA,kBAAAA,EAAAA,IAAAA,GAAAA,GAAAA,CAAAA,CAAAA,CAAAA,EAA5C5sD,wBAAM,CAAG7nC,GAAAA,IAAAA,EAAAA,IAAAA,GAAAA,GAAAA,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,GAAAA,IAAAA,KAAAA,KAAAA,CAAAA,GAAQ,CAAG8nC,GAAAA,IAAAA,EAAAA,IAAAA,GAAAA,GAAAA,CAAAA,CAAAA,CAAAA,EAAAA,MAAAA,GAAAA,IAAAA,KAAAA,KAAAA,CAAAA,GAAS,yBAAG/nC,IAAO,GAAA,IAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,IAAA,CAAA;AAC1C,aAAA;AAEA,YAAA,IACE8mB,SAAS9f,CAAC,GAAGhH,OAAO,CACpB8mB,IAAAA,QAAAA,CAAS9f,CAAC,GAAI,CAAA,GAAI/G,SAClB6mB,QAAS/kB,CAAAA,CAAC,GAAG+lC,GAAM,GAAA,CAAA,IACnBhhB,SAAS/kB,CAAC,GAAI,IAAIgmC,MAClB,EAAA;gBACA,OAAO,IAAA,CAAA;AACT,aAAA;AACF,SAAA;QAEA,OAAO,KAAA,CAAA;AACT,KAAA,CAAA;AAjYWqsD,IAAAA,aAAAA,CAAAA,iBAAAA,EAAAA;;YAoDPtb,GAAAA,EAAAA,aAAAA;AAOJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC+b,YAAY,CAAA;AAC1B,aAAA;;;AAVC,MACD,aAAiBz1D,MAAe,EAAA;gBAC9B,IAAI,CAACy1D,YAAY,GAAGz1D,MAAAA,CAAAA;AACpB,gBAAA,IAAI,CAACA,MAAQ,EAAA;;oBAEX,IAAI,CAACy2D,WAAW,GAAG,IAAA,CAAA;AACrB,iBAAA;AACF,aAAA;;;AA1DWzB,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0Bj0D,iBAkYtC,EAAA;AAlYYi0D,iBAAAA,GAAAA,UAAAA,CAAAA;IADZ11E,YAAaoG,CAAAA,QAAa,CAACsvE,iBAAiB,CAAA;AAChCA,CAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAoYb,SAAS0B,oBAAAA,CAAsB92F,GAAmB,EAAE41C,GAAY,EAAA;AAC9D,IAAA,IAAM+0B,SAAY,GAAA,OAAA,IAAW/0B,GAAAA,IAAO,CAAA,CAAA,CAAA;AAEpC,IAAA,OAAO51C,GAAO2G,IAAAA,IAAAA,CAAKe,GAAG,CAAC1H,IAAImsB,EAAE,IAAI,CAAKw+C,CAAAA,GAAAA,SAAAA,IAAahkE,KAAKe,GAAG,CAAC1H,GAAIosB,CAAAA,EAAE,IAAI,CAAKu+C,CAAAA,GAAAA,SAAAA,CAAAA;AAC7E;;ACpZA;;AAEC,IACM,IAAA,YAAMyY,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;AAEHZ,QAAAA,IAAAA,CAAAA,SAAAA,GAA4B,EAAE,CAAA;AAC9B5tC,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIhT,OAAAA,EAAAA,CAAAA;AAqFlB81D,QAAAA,IAAAA,CAAAA,iBAAAA,GAAoB,SAACpO,QAAAA,EAAsBlD,OAAqBuR,EAAAA,UAAAA,EAAoBC,QAAkBlrE,EAAAA,GAAAA,EAAAA;AAC5G,YAAA,IAAK,IAAIvqB,CAAIw1F,GAAAA,UAAAA,EAAYx1F,CAAIy1F,GAAAA,QAAAA,EAAUz1F,KAAK,CAAG,CAAA;AAC7C,gBAAA,IAAM01F,MAASzR,GAAAA,OAAO,CAACjkF,CAAAA,CAAE,GAAG,CAAA,CAAA;AAC5B,gBAAA,IAAM21F,MAAS1R,GAAAA,OAAO,CAACjkF,CAAAA,GAAI,EAAE,GAAG,CAAA,CAAA;AAChC,gBAAA,IAAM41F,MAAS3R,GAAAA,OAAO,CAACjkF,CAAAA,GAAI,EAAE,GAAG,CAAA,CAAA;AAChC,gBAAA,IAAM8tC,EAAK,GAAA;oBAAEjoC,CAAGshF,EAAAA,QAAQ,CAACuO,MAAO,CAAA;oBAAE90F,CAAGumF,EAAAA,QAAQ,CAACuO,MAAAA,GAAS,CAAE,CAAA;oBAAE7rF,CAAGs9E,EAAAA,QAAQ,CAACuO,MAAAA,GAAS,CAAE,CAAA;AAAC,iBAAA,CAAA;AACnF,gBAAA,IAAM3nD,EAAK,GAAA;oBAAEloC,CAAGshF,EAAAA,QAAQ,CAACwO,MAAO,CAAA;oBAAE/0F,CAAGumF,EAAAA,QAAQ,CAACwO,MAAAA,GAAS,CAAE,CAAA;oBAAE9rF,CAAGs9E,EAAAA,QAAQ,CAACwO,MAAAA,GAAS,CAAE,CAAA;AAAC,iBAAA,CAAA;AACnF,gBAAA,IAAM3nD,EAAK,GAAA;oBAAEnoC,CAAGshF,EAAAA,QAAQ,CAACyO,MAAO,CAAA;oBAAEh1F,CAAGumF,EAAAA,QAAQ,CAACyO,MAAAA,GAAS,CAAE,CAAA;oBAAE/rF,CAAGs9E,EAAAA,QAAQ,CAACyO,MAAAA,GAAS,CAAE,CAAA;AAAC,iBAAA,CAAA;AAEnFrrE,gBAAAA,GAAAA,CAAI5oB,IAAI,CAAC;oBAAEmsC,EAAAA,EAAAA,EAAAA;oBAAIC,EAAAA,EAAAA,EAAAA;oBAAIC,EAAAA,EAAAA,EAAAA;AAAG,iBAAA,CAAA,CAAA;AACxB,aAAA;AACF,SAAA,CAAA;;AAnGWizC,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;IAKXG,MAAAA,CAAAA,kBAIC,GAJDA,SAAAA,kBAAAA,GAAAA;AACE,QAAA,IAAI,CAACyU,gBAAgB,CAAC,IAAI,CAACC,eAAe,CAAC3U,IAAI,CAAA,CAAA;QAE/C,OAAO,IAAI,CAAC2U,eAAe,CAAA;AAC7B,KAAA,CAAA;IAEAnkD,MAAAA,CAAAA,cA8BC,GA9BDA,SAAAA,cAAAA,GAAAA;QACE,IAAI9C,IAAAA,GAAO,CAACnqC,MAAAA,CAAO2jF,SAAS,CAAA;QAC5B,IAAIv5C,IAAAA,GAAO,CAACpqC,MAAAA,CAAO2jF,SAAS,CAAA;QAE5B,IAAI35C,IAAAA,GAAOhqC,OAAO2jF,SAAS,CAAA;QAC3B,IAAI15C,IAAAA,GAAOjqC,OAAO2jF,SAAS,CAAA;AAE3B,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAuB,IAAI,CAACyN,eAAe,CAAC3U,IAAI,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvCvzC,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTiB,YAAAA,IAAAA,GAAOrqC,KAAK+B,GAAG,CAACqnC,QAASE,CAAAA,EAAE,CAACjoC,CAAC,EAAE+nC,QAASG,CAAAA,EAAE,CAACloC,CAAC,EAAE+nC,SAASI,EAAE,CAACnoC,CAAC,EAAEgpC,IAAAA,CAAAA,CAAAA;AAC7DC,YAAAA,IAAAA,GAAOtqC,KAAK+B,GAAG,CAACqnC,QAASE,CAAAA,EAAE,CAACltC,CAAC,EAAEgtC,QAASG,CAAAA,EAAE,CAACntC,CAAC,EAAEgtC,SAASI,EAAE,CAACptC,CAAC,EAAEkuC,IAAAA,CAAAA,CAAAA;AAC7DJ,YAAAA,IAAAA,GAAOlqC,KAAKI,GAAG,CAACgpC,QAASE,CAAAA,EAAE,CAACjoC,CAAC,EAAE+nC,QAASG,CAAAA,EAAE,CAACloC,CAAC,EAAE+nC,SAASI,EAAE,CAACnoC,CAAC,EAAE6oC,IAAAA,CAAAA,CAAAA;AAC7DC,YAAAA,IAAAA,GAAOnqC,KAAKI,GAAG,CAACgpC,QAASE,CAAAA,EAAE,CAACltC,CAAC,EAAEgtC,QAASG,CAAAA,EAAE,CAACntC,CAAC,EAAEgtC,SAASI,EAAE,CAACptC,CAAC,EAAE+tC,IAAAA,CAAAA,CAAAA;AAC/D,SAAA;AAEA,QAAA,IAAMwyC,OAAO,EAAE,CAAA;AAEf,QAAA,IAAM4U,MAAS,GAAA,IAAInsF,OAAQ8kC,CAAAA,IAAAA,EAAMI,IAAM,EAAA,CAAA,CAAA,CAAA;AACvC,QAAA,IAAMknD,MAAS,GAAA,IAAIpsF,OAAQilC,CAAAA,IAAAA,EAAMC,IAAM,EAAA,CAAA,CAAA,CAAA;AACvC,QAAA,IAAMmnD,MAAS,GAAA,IAAIrsF,OAAQilC,CAAAA,IAAAA,EAAMF,IAAM,EAAA,CAAA,CAAA,CAAA;AACvC,QAAA,IAAMunD,MAAS,GAAA,IAAItsF,OAAQ8kC,CAAAA,IAAAA,EAAMC,IAAM,EAAA,CAAA,CAAA,CAAA;AAEvCwyC,QAAAA,IAAAA,CAAKx/E,IAAI,CAAC;YAAEmsC,EAAIioD,EAAAA,MAAAA;YAAQhoD,EAAIioD,EAAAA,MAAAA;YAAQhoD,EAAIioD,EAAAA,MAAAA;AAAO,SAAA,CAAA,CAAA;AAC/C9U,QAAAA,IAAAA,CAAKx/E,IAAI,CAAC;YAAEmsC,EAAIioD,EAAAA,MAAAA;YAAQhoD,EAAIkoD,EAAAA,MAAAA;YAAQjoD,EAAIkoD,EAAAA,MAAAA;AAAO,SAAA,CAAA,CAAA;QAE/C,IAAI,CAACL,gBAAgB,CAAC1U,IAAAA,CAAAA,CAAAA;QAEtB,OAAO;AACLzrE,YAAAA,IAAAA,EAAM0qE,YAAYxyC,QAAQ;YAC1BuzC,IAAAA,EAAAA,IAAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAEAD,IAAAA,MAAAA,CAAAA,WAeC,GAfDA,SAAAA,WAAa/wC,CAAAA,QAAkB,EAAEsC,WAAqB,EAAA;AACpD,QAAA,IAAI,CAAC4tC,SAAS,GAAG,IAAI,CAAC8V,mBAAmB,CAAChmD,QAAAA,CAAAA,CAAAA;AAC1C,QAAA,IAAMgxC,OAAO,EAAE,CAAA;QAEf,IAAuB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACd,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BzyC,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTuzC,YAAAA,IAAAA,CAAKx/E,IAAI,CAAC;AAAEmsC,gBAAAA,EAAAA,EAAIF,SAASE,EAAE;AAAEC,gBAAAA,EAAAA,EAAIH,SAASG,EAAE;AAAEC,gBAAAA,EAAAA,EAAIJ,SAASI,EAAE;AAAC,aAAA,CAAA,CAAA;AAChE,SAAA;AACA,QAAA,IAAIyE,WAAa,EAAA;AACf,YAAA,IAAI,CAACA,WAAW,CAACvrC,QAAQ,CAACurC,WAAAA,CAAAA,CAAAA;AAC5B,SAAA;QAEA,IAAI,CAACqjD,eAAe,GAAG;AACrBpgF,YAAAA,IAAAA,EAAM0qE,YAAYxyC,QAAQ;YAC1BuzC,IAAAA,EAAAA,IAAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQgV,mBA0BP,GA1BD,SAAQA,mBAAAA,CAAqBhmD,QAAkB,EAAA;QAC7C,IAAM8zC,OAAAA,GAAU9zC,SAASi4C,YAAY,EAAA,CAAA;QACrC,IAAMjB,QAAAA,GAAWh3C,QAAS83C,CAAAA,gBAAgB,CAAC,MAAA,CAAA,CAAA;AAC3C,QAAA,IAAM19D,MAAsB,EAAE,CAAA;QAE9B,IAAI,CAAC05D,OAAW,IAAA,CAACkD,QAAU,EAAA;YACzB,OAAO58D,GAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAI4lB,QAAS8zB,CAAAA,SAAS,CAACxkE,MAAM,KAAK,CAAG,EAAA;YACnC,IAAI,CAAC81F,iBAAiB,CAACpO,QAAAA,EAAUlD,SAAS,CAAGA,EAAAA,OAAAA,CAAQxkF,MAAM,EAAE8qB,GAAAA,CAAAA,CAAAA;SACxD,MAAA;YACL,IAAsB4lB,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAAS8zB,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA/BmyB,gBAAAA,IAAAA,OAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAIA,OAAAA,CAAQxP,UAAU,KAAKjoF,SAAW,EAAA;AACpC,oBAAA,SAAA;AACF,iBAAA;gBAEA,IAAM03F,WAAAA,GAAcpS,QAAQ3/E,iBAAiB,CAAA;gBAC7C,IAAM+N,KAAAA,GAAQ+jF,OAAQvzF,CAAAA,MAAM,GAAGwzF,WAAAA,CAAAA;gBAC/B,IAAM/jF,GAAAA,GAAMD,KAAQ+jF,GAAAA,OAAAA,CAAQxP,UAAU,CAAA;AAEtC,gBAAA,IAAI,CAAC2O,iBAAiB,CAACpO,QAAUlD,EAAAA,OAAAA,EAAS5xE,OAAOC,GAAKiY,EAAAA,GAAAA,CAAAA,CAAAA;AACxD,aAAA;AACF,SAAA;QAEA,OAAOA,GAAAA,CAAAA;AACT,KAAA,CAAA;AAeA,IAAA,MAAA,CAAQsrE,gBAQP,GARD,SAAQA,gBAAAA,CAAkB1U,IAAoB,EAAA;;QAC5CA,IAAKzxE,CAAAA,OAAO,CAACk+B,SAAAA,QAAAA,EAAAA;YACXA,QAASE,CAAAA,EAAE,GAAG,KAAA,CAAK2E,WAAW,CAACtnC,cAAc,CAACyiC,QAAAA,CAASE,EAAE,EAAa,IAAIlkC,OAAAA,EAAAA,CAAAA,CAAAA;YAC1EgkC,QAASG,CAAAA,EAAE,GAAG,KAAA,CAAK0E,WAAW,CAACtnC,cAAc,CAACyiC,QAAAA,CAASG,EAAE,EAAa,IAAInkC,OAAAA,EAAAA,CAAAA,CAAAA;YAC1EgkC,QAASI,CAAAA,EAAE,GAAG,KAAA,CAAKyE,WAAW,CAACtnC,cAAc,CAACyiC,QAAAA,CAASI,EAAE,EAAa,IAAIpkC,OAAAA,EAAAA,CAAAA,CAAAA;AAC5E,SAAA,CAAA,CAAA;QAEA,OAAOu3E,IAAAA,CAAAA;AACT,KAAA,CAAA;AA7GWF,IAAAA,OAAAA,YAAAA,CAAAA;AA8GZ,CAAA;;ACvHM,IAAA,YAAMqV,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,YAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,YAAAA,GAAAA;;;cACFr0F,IAAO,GAAA,QAAA,CAAA;;;AADLq0F,IAAAA,OAAAA,YAAAA,CAAAA;qBAAqB1+E,MAEjC,CAAA;;ACDD;;;AAGC,IACM,IAAA,QAAM2+E,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,QAAAA,GAAAA;aACXC,kBAAqB,GAAA,IAAA,CAAA;aACrBC,mBAAsB,GAAA,KAAA,CAAA;aAEdz1E,QAAW,GAAA,CAAA,CAAA;aACXy1C,SAAY,GAAA,KAAA,CAAA;AACZigC,QAAAA,IAAAA,CAAAA,SAAAA,GAAAA,CAAAA,CAAAA;AAER;;AAEC,MAAA,IAAA,CACSxnF,IAAe,GAAA,CAAA,CAAA;;AAXdqnF,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;IAeXjhC,MAAAA,CAAAA,IAWC,GAXDA,SAAAA,IAAAA,GAAAA;QACE,OAAQ,IAAI,CAACohC,SAAS;AACpB,YAAA,KAAA,CAAA;AACE,gBAAA,MAAA;AACF,YAAA,KAAA,CAAA;AACE,gBAAA,IAAI,CAACA,SAAS,GAAA,CAAA,CAAA;gBACd,IAAI,CAACF,kBAAkB,GAAG,IAAA,CAAA;gBAC1B,IAAI,CAACC,mBAAmB,GAAG,KAAA,CAAA;AAE3B,gBAAA,MAAA;AACJ,SAAA;AACF,KAAA,CAAA;IAEAje,MAAAA,CAAAA,KAWC,GAXDA,SAAAA,KAAAA,GAAAA;QACE,OAAQ,IAAI,CAACke,SAAS;AACpB,YAAA,KAAA,CAAA;AACE,gBAAA,IAAI,CAACA,SAAS,GAAA,CAAA,CAAA;gBACd,IAAI,CAACD,mBAAmB,GAAG,IAAA,CAAA;gBAC3B,IAAI,CAACD,kBAAkB,GAAG,KAAA,CAAA;AAE1B,gBAAA,MAAA;AAGJ,SAAA;AACF,KAAA,CAAA;AAEAle,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAASppE,IAAY,EAAA;QACnB,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AACd,KAAA,CAAA;IAEA0gD,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACE,OAAO,IAAI,CAAC1gD,IAAI,CAAA;AAClB,KAAA,CAAA;AAEAynF,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAa31E,QAAgB,EAAA;QAC3B,IAAI,CAACA,QAAQ,GAAGA,QAAAA,CAAAA;AAClB,KAAA,CAAA;IAEAK,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OAAO,IAAI,CAACL,QAAQ,CAAA;AACtB,KAAA,CAAA;IAEA41E,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,GAAAA;QACE,OAAO,IAAI,CAACF,SAAS,CAAA;AACvB,KAAA,CAAA;;;;;AAUAG,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAcr5E,OAAqB,EAEnC,EAAA,CAAA;AAEAs5E,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAct5E,OAAqB,EAEnC,EAAA,CAAA;IAEAu5E,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAEA,GAAA,EAAA,CAAA;IAEA93E,MAAAA,CAAAA,OAOC,GAPDA,SAAAA,OAAAA,GAAAA;QACE,IAAI,IAAI,CAACw3C,SAAS,EAAE;AAClB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACsgC,iBAAiB,EAAA,CAAA;;QAEtB,IAAI,CAACtgC,SAAS,GAAG,IAAA,CAAA;AACnB,KAAA,CAAA;AAxFW8/B,IAAAA,OAAAA,QAAAA,CAAAA;AAyFZ,CAAA,GAAA;AAED;;;AAGC,IACM,IAAA,cAAMS,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,cAAAA,GAAAA;QAYT,IAAI,CAACx5E,OAAO,GAAG;YACbkF,SAAW,EAAA,CAAA;AACXu0E,YAAAA,MAAAA,EAAQ,IAAI;AACd,SAAA,CAAA;;AAfSD,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAkBXE,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAan5F,KAAa,EAAA;QACxB,IAAI,CAACo5F,QAAQ,GAAGp5F,KAAAA,CAAAA;AAClB,KAAA,CAAA;IAEAq5F,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;QACE,OAAO,IAAI,CAACD,QAAQ,CAAA;AACtB,KAAA,CAAA;;;IAMAN,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAEA,GAAA,EAAA,CAAA;IAEAC,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAEA,GAAA,EAAA,CAAA;AApCWE,IAAAA,OAAAA,cAAAA,CAAAA;AAqCZ,CAAA,GAAA;AAEM,IAAA,aAAeK,iBAAV,SAAL,aAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB94E,aAE3C,EAAA;;AAOW+6D,CAAAA,SAAAA,SAAAA,EAAAA;;;GAAAA,SAAAA,KAAAA,SAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;ACxIZ,IAAMge,SAAiC,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,CAAA;AAAG,IAAA,CAAA;AAAG,IAAA,CAAA;AAAE,CAAA,CAAA;AAE5C,IAAA,aAAMC,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;cAKXC,WAAyB,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;;;AAL1BD,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AASX,IAAA,MAAA,CAAST,YAsCR,GAtCD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;AAE9C,QAAA,IAAI,CAAax4F,YAAX64F,CAAAA,WAAAA,EAAuB3gB,OAAU,CAAA,EAAA;AACrC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC4gB,eAAe,EAAE;AACzB,YAAA,IAAI,CAACA,eAAe,GAAG,IAAI,CAACC,kBAAkB,CAACF,WAAAA,CAAAA,CAAAA;AACjD,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAACG,cAAc,EAAE;gBACF,qBACH,EAAA,oBAAA,CAAA;YADnB,IAAI,CAACA,cAAc,GAAG,CAAA,qBAAA,GAAA,IAAI,CAACF,eAAe,KAApB,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAsBl4D,QAAQ,CAAA;YACpD,IAAMq4D,UAAAA,GAAAA,CAAa,uBAAA,IAAI,CAACD,cAAc,KAAnB,IAAA,GAAA,KAAA,CAAA,GAAA,oBAAA,CAAqB31B,QAAQ,CAAC,QAAA,CAAA,CAAA;AAEjD,YAAA,IAAI41B,UAAY,EAAA;AACd,gBAAA,IAAI,CAACA,UAAU,GAAGA,UAAAA,CAAWvuF,OAAO,EAAA,CAAA;AACtC,aAAA;AACF,SAAA;QAEA,IAAIwuF,QAAAA,GAAWl9C,QAAQ08C,SAAW,EAAA,CAAA,CAAA,CAAA;QAClC,IAAIS,YAAAA,CAAAA;AACJ,QAAA,IAAM5yE,OAAO,IAAI,CAACjW,IAAI,GAAG,IAAI,CAACmS,WAAW,EAAA,CAAA;QAEzC,IAAM22E,mBAAAA,GAAsB,IAAI,CAACA,mBAAmB,CAAA;QACpD,IAAMC,iBAAAA,GAAoB,IAAI,CAACA,iBAAiB,CAAA;AAEhD,QAAA,IAAIA,iBAAmB,EAAA;YACrBH,QAAW/oF,GAAAA,yBAAAA,CAA0BkpF,mBAAmB9yE,IAAM,EAAA,IAAA,CAAA,CAAA;YAC9D4yE,YAAe,GAAA,IAAA,CAAA;AACjB,SAAA;AACA,QAAA,IAAIC,mBAAqB,EAAA;AACvBF,YAAAA,QAAQ,CAAC,CAAA,CAAE,IAAIE,mBAAAA,CAAoBzyE,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;YAC5C4yE,YAAe,GAAA,IAAA,CAAA;AACjB,SAAA;AAEA,QAAA,IAAIA,YAAc,EAAA;gBAEhB,6BAAA,EAAA,qBAAA,CAAA;AADAl9C,YAAAA,aAAAA,CAAyB,IAAI,CAAC28C,WAAW,EAAEM,QAAU,EAAA,IAAI,CAACD,UAAU,CAAA,CAAA;AACpE,YAAA,CAAA,qBAAA,GAAA,IAAI,CAACD,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAnB,gCAAA,qBAAqB31B,CAAAA,QAAQ,CAAC,QAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAA9B,6BAAyCj7D,CAAAA,YAAY,CAAC,IAAI,CAACwwF,WAAW,CAAA,CAAA;AACxE,SAAA;AACF,KAAA,CAAA;AAEA12F,IAAAA,MAAAA,CAAAA,MAYC,GAZDA,SAAAA,MAAAA,CAAQo3F,QAAgC,EAAA;QACtC,IAAI,CAACA,QAAQ,GAAGA,QAAAA,CAAAA;QAChB,IAAMD,iBAAAA,GAAoBC,SAASD,iBAAiB,CAAA;AAEpD,QAAA,IAAIA,iBAAmB,EAAA;AACwBA,YAAAA,IAAAA,0BAAAA,CAAAA;YAA7C,IAAI,CAACD,mBAAmB,GAAGttC,iBAAAA,CAAkButC,CAAAA,0BAAAA,GAAAA,iBAAAA,CAAkB/b,OAAO,KAAA,IAAA,GAAzB+b,0BAA6B,GAAA,CAAA,CAAA,CAAA;AAC1E,YAAA,IAAIA,iBAAkBhpF,CAAAA,KAAK,IAAIgpF,iBAAAA,CAAkBhpF,KAAK,CAAC,CAAE,CAAA,KAAK0U,SAAc,CAACypC,cAAc,EAAE;AAC3F,gBAAA,IAAI,CAAC6qC,iBAAiB,GAAGzoF,uBAAuByoF,iBAAkBhpF,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AAC5E,aAAA;AACF,SAAA;AAEA,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA0oF,IAAAA,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAoBF,WAAoB,EAAA;QACtC,OAAOA,WAAAA,CAAYr9D,YAAY,CAACgpD,eAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AAjEWmU,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBhB,QAmElC;;ACvCM,IAAA,aAAM4B,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;cACXn3E,QAAW,GAAA,CAAA,CAAA;AACXwD,QAAAA,KAAAA,CAAAA,cAAAA,GAA2C,EAAE,CAAA;AAC7CI,QAAAA,KAAAA,CAAAA,cAAAA,GAA2C,EAAE,CAAA;AAC7CC,QAAAA,KAAAA,CAAAA,WAAAA,GAAqC,EAAE,CAAA;AACvCF,QAAAA,KAAAA,CAAAA,WAAAA,GAAqC,EAAE,CAAA;AACvCG,QAAAA,KAAAA,CAAAA,WAAAA,GAAqC,EAAE,CAAA;AACvCE,QAAAA,KAAAA,CAAAA,WAAAA,GAAqC,EAAE,CAAA;;;AAP5BmzE,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AASXC,IAAAA,MAAAA,CAAAA,eAgCC,GAhCDA,SAAAA,eAAiBpc,CAAAA,OAAgB,EAAE9sE,IAAY,EAAA;AAC7C,QAAA,IAAMiW,OAAO7e,OAAM4I,CAAAA,IAAAA,EAAM,CAAG,EAAA,IAAI,CAAC8R,QAAQ,CAAA,CAAA;QAEzC,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACwD,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BC,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM1mB,KAAQ0mB,GAAAA,KAAAA,CAAMa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACvC,YAAA,IAAM7lB,SAAS,IAAI,CAAC06B,UAAU,CAACgiD,OAAAA,EAASv3D,MAAM0B,IAAI,CAAA,CAAA;AAElD7mB,YAAAA,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAQgvB,CAAAA,SAAS,CAACM,WAAW,CAAC7wB,KAAAA,CAAM8H,CAAC,EAAE9H,KAAM6C,CAAAA,CAAC,EAAE7C,KAAAA,CAAM8L,CAAC,CAAA,CAAA;AACzD,SAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAAC+a,cAAc,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9BH,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM1mB,MAAQ0mB,GAAAA,MAAAA,CAAMa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACvC,YAAA,IAAM7lB,UAAS,IAAI,CAAC06B,UAAU,CAACgiD,OAAAA,EAASv3D,OAAM0B,IAAI,CAAA,CAAA;AAElD7mB,YAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAQgvB,CAAAA,SAAS,CAACyQ,aAAa,CAAChhC,MAAM8H,CAAAA,CAAC,EAAE9H,MAAAA,CAAM6C,CAAC,EAAE7C,MAAAA,CAAM8L,CAAC,EAAE9L,OAAM6N,CAAC,CAAA,CAAA;AACpE,SAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACiZ,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA3BJ,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM1mB,MAAQ0mB,GAAAA,MAAAA,CAAMa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACvC,YAAA,IAAM7lB,UAAS,IAAI,CAAC06B,UAAU,CAACgiD,OAAAA,EAASv3D,OAAM0B,IAAI,CAAA,CAAA;AAElD7mB,YAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAQgvB,CAAAA,SAAS,CAACO,WAAW,CAAC9wB,MAAAA,CAAM8H,CAAC,EAAE9H,MAAM6C,CAAAA,CAAC,EAAE7C,MAAAA,CAAM8L,CAAC,CAAA,CAAA;AACzD,SAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAAC8a,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA3BF,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM1mB,MAAQ0mB,GAAAA,MAAAA,CAAMa,SAAS,CAACC,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACvC,YAAA,IAAM7lB,UAAS,IAAI,CAAC06B,UAAU,CAACgiD,OAAAA,EAASv3D,OAAM0B,IAAI,CAAA,CAAA;AAElD7mB,YAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAQgvB,CAAAA,SAAS,CAACS,QAAQ,CAAChxB,MAAAA,CAAM8H,CAAC,EAAE9H,MAAM6C,CAAAA,CAAC,EAAE7C,MAAAA,CAAM8L,CAAC,CAAA,CAAA;AACtD,SAAA;;AAGF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASkV,QAiGR,GAjGD,SAASA,QAAAA,CAAUnN,IAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC4S,cAAc,CAAC/kB,MAAM,GAAG,CAAA,CAAA;AAC7B,QAAA,IAAI,CAACklB,WAAW,CAACllB,MAAM,GAAG,CAAA,CAAA;AAC1B,QAAA,IAAI,CAACmlB,cAAc,CAACnlB,MAAM,GAAG,CAAA,CAAA;AAC7B,QAAA,IAAI,CAAColB,WAAW,CAACplB,MAAM,GAAG,CAAA,CAAA;AAC1B,QAAA,IAAI,CAACqlB,WAAW,CAACrlB,MAAM,GAAG,CAAA,CAAA;AAC1B,QAAA,IAAI,CAACulB,WAAW,CAACvlB,MAAM,GAAG,CAAA,CAAA;AAE1B,QAAA,IAAI44F,iBAAoB,GAAA,CAAA,CAAA;QAExB,IAAIzmF,IAAAA,CAAK4S,cAAc,EAAE;YACvB,IAAgC5S,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK4S,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1C8zE,gBAAAA,IAAAA,iBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM7zE,KAAgC,GAAA;AACpC0B,oBAAAA,IAAAA,EAAMmyE,kBAAkBnyE,IAAI;oBAC5Bb,SAAWolC,EAAAA,iBAAAA,CAAkB4tC,kBAAkBhzE,SAAS,CAAA;AAC1D,iBAAA,CAAA;AAEA+yE,gBAAAA,iBAAAA,GAAoB7zF,KAAK+B,GAAG,CAAC8xF,mBAAmB5zE,KAAMa,CAAAA,SAAS,CAACggC,UAAU,EAAA,CAAA,CAAA;AAE1E,gBAAA,IAAI,CAAC9gC,cAAc,CAAC7iB,IAAI,CAAC8iB,KAAAA,CAAAA,CAAAA;AAC3B,aAAA;AACF,SAAA;QAEA,IAAI7S,IAAAA,CAAKgT,cAAc,EAAE;YACvB,IAAgChT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKgT,cAAc,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA1C2zE,gBAAAA,IAAAA,iBAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM9zE,MAAgC,GAAA;AACpC0B,oBAAAA,IAAAA,EAAMoyE,kBAAkBpyE,IAAI;oBAC5Bb,SAAWolC,EAAAA,iBAAAA,CAAkB6tC,kBAAkBjzE,SAAS,CAAA;AAC1D,iBAAA,CAAA;AAEA+yE,gBAAAA,iBAAAA,GAAoB7zF,KAAK+B,GAAG,CAAC8xF,mBAAmB5zE,MAAMa,CAAAA,SAAS,CAACggC,UAAU,EAAA,CAAA,CAAA;AAE1E,gBAAA,IAAI,CAAC1gC,cAAc,CAACjjB,IAAI,CAAC8iB,MAAAA,CAAAA,CAAAA;AAC3B,aAAA;AACF,SAAA;QAEA,IAAI7S,IAAAA,CAAKiT,WAAW,EAAE;YACpB,IAA8BjT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKiT,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArC2zE,gBAAAA,IAAAA,eAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM/zE,MAA6B,GAAA;AACjC0B,oBAAAA,IAAAA,EAAMqyE,gBAAgBryE,IAAI;oBAC1Bb,SAAWolC,EAAAA,iBAAAA,CAAkB8tC,gBAAgBlzE,SAAS,CAAA;AACxD,iBAAA,CAAA;AAEA+yE,gBAAAA,iBAAAA,GAAoB7zF,KAAK+B,GAAG,CAAC8xF,mBAAmB5zE,MAAMa,CAAAA,SAAS,CAACggC,UAAU,EAAA,CAAA,CAAA;AAE1E,gBAAA,IAAI,CAACzgC,WAAW,CAACljB,IAAI,CAAC8iB,MAAAA,CAAAA,CAAAA;AACxB,aAAA;AACF,SAAA;QAEA,IAAI7S,IAAAA,CAAK+S,WAAW,EAAE;YACpB,IAA8B/S,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK+S,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArC8zE,gBAAAA,IAAAA,eAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMh0E,MAA6B,GAAA;AACjC0B,oBAAAA,IAAAA,EAAMsyE,gBAAgBtyE,IAAI;oBAC1Bb,SAAWolC,EAAAA,iBAAAA,CAAkB+tC,gBAAgBnzE,SAAS,CAAA;AACxD,iBAAA,CAAA;AAEA+yE,gBAAAA,iBAAAA,GAAoB7zF,KAAK+B,GAAG,CAAC8xF,mBAAmB5zE,MAAMa,CAAAA,SAAS,CAACggC,UAAU,EAAA,CAAA,CAAA;AAE1E,gBAAA,IAAI,CAAC3gC,WAAW,CAAChjB,IAAI,CAAC8iB,MAAAA,CAAAA,CAAAA;AACxB,aAAA;AACF,SAAA;QAEA,IAAI7S,IAAAA,CAAKkT,WAAW,EAAE;YACpB,IAA6BlT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKkT,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApC4zE,gBAAAA,IAAAA,cAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMj0E,MAA6B,GAAA;AACjC0B,oBAAAA,IAAAA,EAAMuyE,eAAevyE,IAAI;oBACzBb,SAAWolC,EAAAA,iBAAAA,CAAkBguC,eAAepzE,SAAS,CAAA;AACrDzhB,oBAAAA,QAAAA,EAAU60F,eAAe70F,QAAQ;AACjCyZ,oBAAAA,SAAAA,EAAWo7E,eAAep7E,SAAS;AACrC,iBAAA,CAAA;AAEA+6E,gBAAAA,iBAAAA,GAAoB7zF,KAAK+B,GAAG,CAAC8xF,mBAAmB5zE,MAAMa,CAAAA,SAAS,CAACggC,UAAU,EAAA,CAAA,CAAA;AAE1E,gBAAA,IAAI,CAACxgC,WAAW,CAACnjB,IAAI,CAAC8iB,MAAAA,CAAAA,CAAAA;AACxB,aAAA;AACF,SAAA;QAEA,IAAI7S,IAAAA,CAAKoT,WAAW,EAAE;YACpB,IAA6BpT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKoT,WAAW,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApC2zE,gBAAAA,IAAAA,cAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAMl0E,MAA6B,GAAA;AACjC0B,oBAAAA,IAAAA,EAAMwyE,eAAexyE,IAAI;oBACzBb,SAAWolC,EAAAA,iBAAAA,CAAkBiuC,eAAerzE,SAAS,CAAA;AACrDzhB,oBAAAA,QAAAA,EAAU80F,eAAe90F,QAAQ;AACjCyZ,oBAAAA,SAAAA,EAAWq7E,eAAer7E,SAAS;AACrC,iBAAA,CAAA;AAEA+6E,gBAAAA,iBAAAA,GAAoB7zF,KAAK+B,GAAG,CAAC8xF,mBAAmB5zE,MAAMa,CAAAA,SAAS,CAACggC,UAAU,EAAA,CAAA,CAAA;AAE1E,gBAAA,IAAI,CAACtgC,WAAW,CAACrjB,IAAI,CAAC8iB,MAAAA,CAAAA,CAAAA;AACxB,aAAA;AACF,SAAA;QAEA,IAAI7S,IAAAA,CAAKoP,QAAQ,KAAKriB,SAAW,EAAA;AAC/B,YAAA,IAAI,CAACqiB,QAAQ,GAAGpP,IAAAA,CAAKoP,QAAQ,CAAA;SACxB,MAAA;YACL,IAAI,CAACA,QAAQ,GAAGq3E,iBAAAA,CAAAA;AAClB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQr+D,UAqBP,GArBD,SAAQA,UAAYgiD,CAAAA,OAAgB,EAAE71D,IAAY,EAAA;AAChD,QAAA,IAAI7mB,MAAS08E,GAAAA,OAAAA,CAAAA;QACb,IAAM4c,KAAAA,GAAQzyE,IAAKlR,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAA;AAEzB,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmB2jF,KAAO,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAf32F,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI42F,OAAU,GAAA,KAAA,CAAA;YAEd,IAAoBv5F,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOoxC,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA1BiD,gBAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAIA,KAAAA,CAAM1xC,IAAI,KAAKA,IAAM,EAAA;oBACvB3C,MAASq0C,GAAAA,KAAAA,CAAAA;oBACTklD,OAAU,GAAA,IAAA,CAAA;AAEV,oBAAA,MAAA;AACF,iBAAA;AACF,aAAA;AACA,YAAA,IAAI,CAACA,OAAS,EAAA;AACZ,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAOv5F,MAAAA,CAAAA;AACT,KAAA,CAAA;AAnKW64F,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB55E,aAoKlC,EAAA;AApKY45E,aAAAA,GAAAA,UAAAA,CAAAA;IADZ56E,YAAaoG,CAAAA,QAAa,CAACw0E,aAAa,CAAA;AAC5BA,CAAAA,EAAAA,aAAAA,CAAAA;;ACvCN,IAAA,IAAMW,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,IAAAA,CAMEj8D,KAA0B,EAAA;;AACrCl9B,QAAAA,MAAAA,CAAOkQ,IAAI,CAACgtB,KAAOntB,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACzB,YAAA,KAAI,CAACA,GAAAA,CAAmB,GAAGi/B,KAAK,CAACj/B,GAAI,CAAA,CAAA;AACvC,SAAA,CAAA,CAAA;;AATSk7F,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AAYXC,IAAAA,MAAAA,CAAAA,QAiBC,GAjBDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMC,GAAAA,GAAMC,YAAY,IAAI,CAACD,GAAG,EAAE,IAAI,CAACE,OAAO,EAAEH,GAAAA,CAAAA,CAAAA;AAChD,QAAA,IAAMvzF,IAAIwzF,GAAM9zF,GAAAA,OAAAA,CAAAA;AAChB,QAAA,IAAMU,IAAIrB,IAAKsiB,CAAAA,GAAG,CAACrhB,CAAK,CAAA,GAAA,IAAI,CAAC8nC,MAAM,CAAA;AACnC,QAAA,IAAM3sC,IAAI4D,IAAKoiB,CAAAA,GAAG,CAACnhB,CAAK,CAAA,GAAA,IAAI,CAAC8nC,MAAM,CAAA;AAEnC,QAAA,IAAM5nB,QAAW,GAAA,IAAI/b,OAAQ/D,CAAAA,CAAAA,EAAGjF,CAAG,EAAA,CAAA,CAAA,CAAA;AACnC,QAAA,IAAM2nB,IAAI/jB,IAAK4iC,CAAAA,GAAG,CAAC,IAAI,CAAC1gB,KAAK,GAAGvhB,OAAAA,CAAAA,CAAAA;AAChC,QAAA,IAAM02C,GAAMl2B,GAAAA,QAAAA,CAASve,KAAK,EAAA,CAAGS,QAAQ,CAAC0gB,CAAAA,CAAAA,CAAAA;;AAGtCszB,QAAAA,GAAAA,CAAIhyC,CAAC,IAAI,CAAA,CAAA;QAET,OAAO;AACL8b,YAAAA,QAAAA,EAAUA,QAAS9d,CAAAA,QAAQ,CAAC2M,aAAAA,CAAc,CAAG,EAAA,CAAA,CAAA,CAAA;AAC7C62B,YAAAA,SAAAA,EAAWwQ,IAAItzC,SAAS,EAAA;AAC1B,SAAA,CAAA;AACF,KAAA,CAAA;AA7BWuwF,IAAAA,OAAAA,IAAAA,CAAAA;AA8BZ,CAAA,EAAA,CAAA;AAEM,SAASI,WAAaD,CAAAA,GAAW,EAAEE,OAA0B,EAAEH,GAA0B,EAAA;AAC9F,IAAA,IAAIG,OAAYx1E,KAAAA,YAAiB,CAACkpC,MAAM,EAAE;AACxCosC,QAAAA,GAAAA,GAAMzkF,cAAc,CAAGykF,EAAAA,GAAAA,CAAAA,CAAAA;AACzB,KAAA,MAAO,IAAIE,OAAYx1E,KAAAA,YAAiB,CAACy1E,oBAAoB,EAAE;QAC7D,IAAMv5F,CAAAA,GAAIm5F,IAAIx1F,KAAK,IAAIw1F,GAAIrtC,CAAAA,KAAK,GAAG,CAAA,CAAA,CAAA;QAEnCstC,GAAMA,GAAAA,GAAAA,GAAMD,GAAIrtC,CAAAA,KAAK,GAAG9rD,CAAAA,CAAAA;AAC1B,KAAA,MAAO,IAAIs5F,OAAYx1E,KAAAA,YAAiB,CAAC01E,mBAAmB,EAAE;QAC5D,IAAMx5F,EAAAA,GAAIm5F,IAAIx1F,KAAK,IAAIw1F,GAAIrtC,CAAAA,KAAK,GAAG,CAAA,CAAA,CAAA;AACnC,QAAA,IAAM3rD,CAAIH,GAAAA,EAAAA,GAAI2E,IAAK0D,CAAAA,KAAK,CAACrI,EAAAA,CAAAA,CAAAA;QAEzBo5F,GAAMA,GAAAA,GAAAA,IAAQz0F,IAAK0D,CAAAA,KAAK,CAACrI,EAAK,CAAA,GAAA,CAAA,GAAM,CAAIG,GAAAA,CAAAA,GAAKA,CAAAA,CAAAA,CAAAA;AAC/C,KAAA,MAAO,IAAIm5F,OAAYx1E,KAAAA,YAAiB,CAAC21E,aAAa,EAAE;AACtDL,QAAAA,GAAAA,GAAMA,GAAMD,GAAAA,GAAAA,CAAIO,UAAU,GAAGP,IAAIQ,UAAU,CAAA;AAC7C,KAAA;IAEA,OAAOP,GAAAA,CAAAA;AACT;;AChDO,IAAA,MAAMQ,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,MAAAA,CAKE58D,KAA0B,EAAA;;AACrCl9B,QAAAA,MAAAA,CAAOkQ,IAAI,CAACgtB,KAAOntB,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACzB,YAAA,KAAI,CAACA,GAAAA,CAAmB,GAAGi/B,KAAK,CAACj/B,GAAI,CAAA,CAAA;AACvC,SAAA,CAAA,CAAA;;AARS67F,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAWXV,IAAAA,MAAAA,CAAAA,QASC,GATDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMC,GAAAA,GAAMC,WAAY,CAAA,IAAI,CAACD,GAAG,EAAE,IAAI,CAACE,OAAO,EAAEH,GAAO7zF,CAAAA,GAAAA,OAAAA,CAAAA;QACvD,IAAMkmC,SAAAA,GAAY,IAAIzhC,OAAAA,CAAQpF,IAAKsiB,CAAAA,GAAG,CAACmyE,GAAMz0F,CAAAA,EAAAA,IAAAA,CAAKoiB,GAAG,CAACqyE,GAAM,CAAA,EAAA,CAAA,CAAA,CAAA;QAC5D,IAAM1rD,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;QAE1B,OAAO;YACLlC,SAAAA,EAAAA,SAAAA;AACA1lB,YAAAA,QAAAA,EAAU0lB,SAAUjkC,CAAAA,KAAK,EAAGS,CAAAA,QAAQ,CAAC0lC,MAAAA,CAAAA;AACvC,SAAA,CAAA;AACF,KAAA,CAAA;AApBWksD,IAAAA,OAAAA,MAAAA,CAAAA;AAqBZ,CAAA,EAAA,CAAA;AAEM,IAAAxP,WAAMA,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,SAAAA,CAIEpsF,GAAQ,EAAA;QACnB,IAAI,CAAC67F,EAAE,GAAI77F,CAAAA,GAAI6T,CAAAA,KAAK,IAAI,CAAA,IAAK,CAAA,CAAA;QAC7B,IAAI,CAACioF,EAAE,GAAI97F,CAAAA,GAAI8T,CAAAA,MAAM,IAAI,CAAA,IAAK,CAAA,CAAA;;AANrBs4E,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AASX8O,IAAAA,MAAAA,CAAAA,QAQC,GARDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMnzF,CAAAA,GAAI2O,cAAc,CAAC,IAAI,CAACklF,EAAE,EAAE,IAAI,CAACA,EAAE,CAAA,CAAA;QACzC,IAAM94F,CAAAA,GAAI4T,cAAc,CAAC,IAAI,CAACmlF,EAAE,EAAE,IAAI,CAACA,EAAE,CAAA,CAAA;QAEzC,OAAO;YACLtuD,SAAW,EAAA,IAAIzhC,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;YAC7B+b,QAAU,EAAA,IAAI/b,OAAQ/D,CAAAA,CAAAA,EAAGjF,CAAG,EAAA,CAAA,CAAA;AAC9B,SAAA,CAAA;AACF,KAAA,CAAA;AAjBWqpF,IAAAA,OAAAA,SAAAA,CAAAA;AAmBZ,CAAA,EAAA,CAAA;AAEM,IAAA,aAAM2P,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,CAQE/7F,GAAQ,EAAA;QACnB,IAAI,CAAC67F,EAAE,GAAI77F,CAAAA,GAAI6T,CAAAA,KAAK,IAAI,CAAA,IAAK,CAAA,CAAA;QAC7B,IAAI,CAACioF,EAAE,GAAI97F,CAAAA,GAAI8T,CAAAA,MAAM,IAAI,CAAA,IAAK,CAAA,CAAA;AAC9B,QAAA,IAAI,CAACwnF,OAAO,GAAGt7F,GAAAA,CAAIs7F,OAAO,CAAA;AAC1B,QAAA,IAAI,CAACF,GAAG,GAAGp7F,GAAAA,CAAIo7F,GAAG,CAAA;;AAZTW,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAeXb,IAAAA,MAAAA,CAAAA,QAyBC,GAzBDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMC,GAAAA,GAAMC,WAAY,CAAA,IAAI,CAACD,GAAG,EAAE,IAAI,CAACE,OAAO,EAAEH,GAAO7zF,CAAAA,GAAAA,OAAAA,CAAAA;QACvD,IAAMkmC,SAAAA,GAAY,IAAIzhC,OAAAA,CAAQpF,IAAKsiB,CAAAA,GAAG,CAACmyE,GAAMz0F,CAAAA,EAAAA,IAAAA,CAAKoiB,GAAG,CAACqyE,GAAM,CAAA,EAAA,CAAA,CAAA,CAAA;QAC5D,IAAMrtF,CAAAA,GAAI,IAAI,CAAC8tF,EAAE,CAAA;QACjB,IAAMrtF,CAAAA,GAAI,IAAI,CAACstF,EAAE,CAAA;AACjB,QAAA,IAAME,EAAKr1F,GAAAA,IAAAA,CAAK8kB,KAAK,CAACjd,CAAGT,EAAAA,CAAAA,CAAAA,CAAAA;QACzB,IAAMw7B,GAAAA,GAAM5iC,IAAK4iC,CAAAA,GAAG,CAAC6xD,GAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAMtzE,WAAW,IAAI/b,OAAAA,EAAAA,CAAAA;AAErB,QAAA,IAAIqvF,MAAMY,EAAI,EAAA;AACZl0E,YAAAA,QAAAA,CAAS3gB,GAAG,CAAC4G,CAAGA,EAAAA,CAAAA,GAAIw7B,GAAK,EAAA,CAAA,CAAA,CAAA;AAC3B,SAAA,MAAO,IAAI6xD,GAAOY,IAAAA,EAAAA,IAAMZ,MAAMz0F,IAAKU,CAAAA,EAAE,GAAG20F,EAAI,EAAA;AAC1Cl0E,YAAAA,QAAAA,CAAS3gB,GAAG,CAACqH,CAAI+6B,GAAAA,GAAAA,EAAK/6B,CAAG,EAAA,CAAA,CAAA,CAAA;AAC3B,SAAA,MAAO,IAAI4sF,GAAAA,GAAMz0F,IAAKU,CAAAA,EAAE,GAAG20F,EAAI,EAAA;AAC7Bl0E,YAAAA,QAAAA,CAAS3gB,GAAG,CAAC,CAAC4G,CAAG,EAAA,CAACA,IAAIw7B,GAAK,EAAA,CAAA,CAAA,CAAA;AAC7B,SAAA,MAAO,IAAI6xD,GAAMz0F,GAAAA,IAAAA,CAAKU,EAAE,GAAG,IAAI20F,EAAI,EAAA;AACjCl0E,YAAAA,QAAAA,CAAS3gB,GAAG,CAAC,CAACqH,CAAI+6B,GAAAA,GAAAA,EAAK,CAAC/6B,CAAG,EAAA,CAAA,CAAA,CAAA;SACtB,MAAA;AACLsZ,YAAAA,QAAAA,CAAS3gB,GAAG,CAAC4G,CAAGA,EAAAA,CAAAA,GAAIw7B,GAAK,EAAA,CAAA,CAAA,CAAA;AAC3B,SAAA;QAEA,OAAO;YACLiE,SAAAA,EAAAA,SAAAA;YACA1lB,QAAAA,EAAAA,QAAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAxCWi0E,IAAAA,OAAAA,aAAAA,CAAAA;AAyCZ,CAAA,EAAA,CAAA;AAEM,IAAA,IAAME,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,IAAAA,CAMEv7F,IAAS,EAAA;AACpB,QAAA,IAAI,CAACm7F,EAAE,GAAIn7F,IAAAA,CAAKmT,KAAK,IAAI,CAAA,CAAA;AACzB,QAAA,IAAI,CAACynF,OAAO,GAAG56F,IAAAA,CAAK46F,OAAO,CAAA;;AARlBW,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AAWXf,IAAAA,MAAAA,CAAAA,QAOC,GAPDA,SAAAA,QAAAA,CAAU/1F,OAA8B,EAAA;QACtC,IAAM6C,CAAAA,GAAI,IAAI,CAACszF,OAAO,KAAKx1E,YAAiB,CAAC21E,aAAa,GAAI,OAACt2F,CAAQu2F,UAAU,GAAGv2F,OAAAA,CAAQw2F,UAAU,IAAKx2F,OAAAA,CAAQw2F,UAAU,GAAG,CAAA,CAAMhlF,GAAAA,aAAAA,CAAc,CAAG,EAAA,CAAA,CAAA,CAAA;QAEvJ,OAAO;YACL62B,SAAW,EAAA,IAAIzhC,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA;YAC7B+b,QAAU,EAAA,IAAI/b,OAAQ,CAAA,IAAI,CAAC8vF,EAAE,IAAI7zF,CAAAA,GAAI,GAAE,CAAA,EAAI,CAAG,EAAA,CAAA,CAAA;AAChD,SAAA,CAAA;AACF,KAAA,CAAA;AAlBWi0F,IAAAA,OAAAA,IAAAA,CAAAA;AAmBZ,CAAA,EAAA;;AC3GD,IAAM1gD,aAAW,IAAI3Z,OAAAA,EAAAA,CAAAA;AAEd,IAAA,KAAMs6D,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,KAAAA,CAMEl9D,KAA0B,EAAA;;AACrCl9B,QAAAA,MAAAA,CAAOkQ,IAAI,CAACgtB,KAAOntB,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACzB,YAAA,KAAI,CAACA,GAAAA,CAAmB,GAAGi/B,KAAK,CAACj/B,GAAI,CAAA,CAAA;AACvC,SAAA,CAAA,CAAA;;AATSm8F,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AAYXhB,IAAAA,MAAAA,CAAAA,QAaC,GAbDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMgB,OAAAA,GAAU,IAAI,CAACC,WAAW,CAAA;AAChC,QAAA,IAAM/sD,MAAS,GAAA,IAAI,CAACK,MAAM,GAAGysD,OAAAA,CAAAA;AAC7B,QAAA,IAAMtzE,KAAQlS,GAAAA,aAAAA,CAAc,CAAGhQ,EAAAA,IAAAA,CAAKU,EAAE,GAAG,CAAA,CAAA,CAAA;QACzC,IAAM+zF,GAAAA,GAAMC,WAAY,CAAA,IAAI,CAACD,GAAG,EAAE,IAAI,CAACE,OAAO,EAAEH,GAAO7zF,CAAAA,GAAAA,OAAAA,CAAAA;QACvD,IAAMm1C,GAAAA,GAAMlB,UAAStY,CAAAA,gBAAgB,CAACm4D,GAAAA,CAAAA,CAAAA;QACtC,IAAM5tD,SAAAA,GAAY,IAAIzhC,OAAAA,CAAQpF,IAAKsiB,CAAAA,GAAG,CAACJ,KAAQliB,CAAAA,EAAAA,IAAAA,CAAKoiB,GAAG,CAACF,KAAQ,CAAA,EAAA,CAAA,CAAA,CAAA;AAChE,QAAA,IAAMf,QAAW,GAAA,IAAI/b,OAAQsjC,CAAAA,MAAAA,GAAS1oC,IAAKsiB,CAAAA,GAAG,CAACJ,KAAAA,CAAAA,GAASszE,OAAS,EAAA,CAAA,EAAGx1F,IAAKoiB,CAAAA,GAAG,CAACF,KAASszE,CAAAA,GAAAA,OAAAA,CAAAA,CAAAA;QAEtF,OAAO;YACL3uD,SAAWiP,EAAAA,GAAAA,CAAIjvC,eAAe,CAACggC,SAAAA,CAAAA;YAC/B1lB,QAAU20B,EAAAA,GAAAA,CAAInvC,cAAc,CAACwa,QAAAA,CAAAA;AAC/B,SAAA,CAAA;AACF,KAAA,CAAA;AAzBWo0E,IAAAA,OAAAA,KAAAA,CAAAA;AA2BZ,CAAA,EAAA;;AC7BD,IAAM3gD,aAAW,IAAI3Z,OAAAA,EAAAA,CAAAA;AAEd,IAAA,MAAM6R,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,MAAAA,CAKEzU,KAA0B,EAAA;;AACrCl9B,QAAAA,MAAAA,CAAOkQ,IAAI,CAACgtB,KAAOntB,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACzB,YAAA,KAAI,CAACA,GAAAA,CAAmB,GAAGi/B,KAAK,CAACj/B,GAAI,CAAA,CAAA;AACvC,SAAA,CAAA,CAAA;;AARS0zC,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;IAWX4oD,MAAAA,CAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,GAAAA;QACE,OAAO1lF,aAAAA,CAAc,CAAC,EAAI,EAAA,EAAA,CAAA,CAAA;AAC5B,KAAA,CAAA;AAEAukF,IAAAA,MAAAA,CAAAA,QAYC,GAZDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMmB,EAAAA,GAAKjB,WAAY,CAAA,IAAI,CAACD,GAAG,EAAE,IAAI,CAACE,OAAO,EAAEH,GAAO7zF,CAAAA,GAAAA,OAAAA,CAAAA;AACtD,QAAA,IAAMi1F,EAAK,GAAA,IAAI,CAACF,kBAAkB,EAAK/0F,GAAAA,OAAAA,CAAAA;QACvC,IAAMooC,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;QAC1B,IAAMsC,KAAAA,GAAQ,IAAIjmC,OAAAA,CAAQpF,IAAKsiB,CAAAA,GAAG,CAACszE,EAAK,CAAA,EAAA,CAAA,EAAG51F,IAAKoiB,CAAAA,GAAG,CAACwzE,EAAAA,CAAAA,CAAAA,CAAAA;QACpD,IAAMC,IAAAA,GAAOjhD,UAAStY,CAAAA,gBAAgB,CAACq5D,EAAAA,CAAAA,CAAAA;QACvC,IAAMpiF,CAAAA,GAAIsiF,IAAKhvF,CAAAA,eAAe,CAACwkC,KAAAA,CAAAA,CAAAA;QAE/B,OAAO;AACLlqB,YAAAA,QAAAA,EAAU5N,CAAE3Q,CAAAA,KAAK,EAAGS,CAAAA,QAAQ,CAAC0lC,MAAAA,CAAAA;YAC7BlC,SAAWtzB,EAAAA,CAAAA;AACb,SAAA,CAAA;AACF,KAAA,CAAA;AA3BWu5B,IAAAA,OAAAA,MAAAA,CAAAA;AA4BZ,CAAA,EAAA,CAAA;AAEM,IAAA,UAAMgpD,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,UAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASJ,CAAAA,kBAER,GAFD,SAASA,kBAAAA,GAAAA;AACP,QAAA,OAAO1lF,cAAc,CAAG,EAAA,EAAA,CAAA,CAAA;AAC1B,KAAA,CAAA;AAHW8lF,IAAAA,OAAAA,UAAAA,CAAAA;EAAmBhpD,MAI/B,CAAA;;ACrCM,IAAA,YAAMipD,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,CAQE18F,GAAQ,EAAA;QACnB,IAAMstE,MAAAA,GAASttE,GAAIstE,CAAAA,MAAM,IAAI;YAAEqvB,OAAS,EAAA;AAAC,gBAAA,GAAA;AAAK,gBAAA,GAAA;AAAI,aAAA;YAAEC,KAAO,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA;AAAC,SAAA,CAAA;AAElE,QAAA,IAAI,CAACD,OAAO,GAAG,IAAI/hD,YAAAA,CAAa0yB,OAAOqvB,OAAO,CAAA,CAAA;AAC9C,QAAA,IAAI,CAAC9oF,KAAK,GAAG7T,GAAAA,CAAI6T,KAAK,IAAI,CAAA,CAAA;AAC1B,QAAA,IAAI,CAACC,MAAM,GAAG9T,GAAAA,CAAI8T,MAAM,IAAI,CAAA,CAAA;AAC5B,QAAA,IAAI,CAAC8oF,KAAK,GAAGtvB,MAAAA,CAAOsvB,KAAK,CAAA;AACzB,QAAA,IAAI,CAACtB,OAAO,GAAGt7F,GAAAA,CAAIs7F,OAAO,CAAA;QAC1B,IAAI,CAAC/1F,MAAM,GAAGkD,OAAAA,CAAMzI,IAAIuF,MAAM,IAAI,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;;AAhB/Bm3F,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAmBXxB,IAAAA,MAAAA,CAAAA,QAaC,GAbDA,SAAAA,QAAAA,CAAUC,GAA0B,EAAA;QAClC,IAAMwB,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;AAC5B,QAAA,IAAMjQ,UAAciQ,GAAAA,OAAAA,CAAQ/6F,MAAM,GAAG,CAAI,GAAA,CAAA,CAAA;QACzC,IAAM+D,KAAAA,GAAQgB,KAAK0D,KAAK,CAACgxF,YAAY3O,UAAY,EAAA,IAAI,CAAC4O,OAAO,EAAEH,GAAAA,CAAAA,CAAAA,CAAAA;QAE/D,IAAM0B,MAAAA,GAAS,CAACF,OAAO,CAACh3F,KAAQ,GAAA,CAAA,CAAE,GAAG,IAAI,CAACi3F,KAAK,CAAC,CAAE,CAAA,GAAG,IAAI,CAACr3F,MAAM,GAAGoB,IAAKpB,CAAAA,MAAM,EAAC,IAAK,CAAI,GAAA,GAAA,CAAA;QACxF,IAAMu3F,MAAAA,GAAS,CAACH,OAAO,CAACh3F,KAAQ,GAAA,CAAA,GAAI,CAAE,CAAA,GAAG,IAAI,CAACi3F,KAAK,CAAC,CAAA,CAAE,GAAG,IAAI,CAACr3F,MAAM,GAAGoB,IAAKpB,CAAAA,MAAM,EAAC,IAAK,CAAI,GAAA,GAAA,CAAA;AAC5F,QAAA,IAAMy4C,GAAM,GAAA,IAAIjyC,OAAQ8wF,CAAAA,MAAAA,EAAQC,MAAQ,EAAA,CAAA,CAAA,CAAA;QAExC,OAAO;YACLh1E,QAAU,EAAA,IAAI/b,OAAQ8wF,CAAAA,MAAAA,GAAS,IAAI,CAAChpF,KAAK,EAAEipF,MAAS,GAAA,IAAI,CAAChpF,MAAM,EAAE,CAAA,CAAA;AACjE05B,YAAAA,SAAAA,EAAWwQ,IAAItzC,SAAS,EAAA;AAC1B,SAAA,CAAA;AACF,KAAA,CAAA;AAhCWgyF,IAAAA,OAAAA,YAAAA,CAAAA;AAiCZ,CAAA,EAAA;;ACTD,IAAMK,0BAAD,WAAL;AAAMA,IAAAA,SAAAA,SAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IACJ7B,MAAAA,CAAAA,QAKC,GALDA,SAAAA,QAAAA,GAAAA;QACE,OAAO;AACLpzE,YAAAA,QAAAA,EAAU,IAAI/b,OAAAA,EAAAA;AACdyhC,YAAAA,SAAAA,EAAW,IAAIzhC,OAAAA,EAAAA;AACjB,SAAA,CAAA;AACF,KAAA,CAAA;AANIgxF,IAAAA,OAAAA,SAAAA,CAAAA;;AAS6E,IAAA9/C,MAAA,CAAA;AAAnF,IAAMvrC,GAA6E,IAAAurC,MAAA,GAAA,EAAA,EAAAA,MAChFn3B,CAAAA,wBAA6B,CAAC88C,IAAI,CAAGm6B,GAAAA,SAAAA,EAD2C9/C,MAEhFn3B,CAAAA,wBAA6B,CAACk3E,IAAI,CAAG/B,GAAAA,IAAAA,EAF2Ch+C,MAGhFn3B,CAAAA,wBAA6B,CAACm3E,MAAM,CAAA,GAAGxpD,QAHyCwJ,MAIhFn3B,CAAAA,wBAA6B,CAACo3E,UAAU,CAAGT,GAAAA,UAAAA,EAJqCx/C,MAKhFn3B,CAAAA,wBAA6B,CAACq3E,MAAM,CAAGvB,GAAAA,MAAAA,EALyC3+C,MAMhFn3B,CAAAA,wBAA6B,CAACs3E,KAAK,CAAGlB,GAAAA,KAAAA,EAN0Cj/C,MAOhFn3B,CAAAA,wBAA6B,CAACu3E,SAAS,CAAGjR,GAAAA,WAAAA,EAPsCnvC,OAQhFn3B,wBAA6B,CAACw3E,IAAI,CAAGrB,GAAAA,IAAAA,EAR2Ch/C,MAShFn3B,CAAAA,wBAA6B,CAACy3E,cAAc,CAAGxB,GAAAA,aAAAA,EATiC9+C,OAUhFn3B,wBAA6B,CAAC03E,OAAO,IAAGd,YAVwC,EAAAz/C,MAAA,CAAA,CAAA;AAa5E,SAASwgD,YAAaC,YAAiC,EAAA;AAC5D,IAAA,IAAI,CAACA,YAAc,EAAA;AACjB,QAAA,OAAO,IAAIX,SAAAA,EAAAA,CAAAA;AACb,KAAA;AACA,IAAA,IAAM53F,OAAU,GAAA,QAAA,CAAA;QACduqC,MAAQ,EAAA,CAAA;QACR0rD,GAAK,EAAA,GAAA;QACLvyE,KAAO,EAAA,CAAA;QACPyyE,OAASx1E,EAAAA,YAAiB,CAACkpC,MAAM;AAC9B0uC,KAAAA,EAAAA,YAAAA,CAAAA,CAAAA;IAEL,IAAQ7lF,OAAS6lF,YAAT7lF,CAAAA,IAAAA,CAAAA;IACR,IAAM8lF,IAAAA,GAAOjsF,GAAG,CAACmG,IAAK,CAAA,CAAA;AAEtB,IAAA,IAAI,CAAC8lF,IAAM,EAAA;AACT,QAAA,MAAM,IAAIx5F,KAAAA,CAAM,iBAAC,GAAiB0T,IAAK,GAAA,GAAA,CAAA,CAAA;AACzC,KAAA;IACA,IAAM+lF,IAAAA,GAAO,IAAID,IAAKx4F,CAAAA,OAAAA,CAAAA,CAAAA;AAEtB,IAAA,IAAI0S,IAASiO,KAAAA,wBAA6B,CAAC88C,IAAI,EAAE;AAC/C,QAAA,IAAQi7B,mBAAiDH,GAAAA,YAAAA,CAAjDG,mBAAiDH,EAAAA,yBAAAA,GAAAA,YAAAA,CAA5BI,aAAAA,WAAc,GAAA,yBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,GAAA,yBAAA,CAAA;AAEpDF,QAAAA,IAAAA,CAAKC,mBAAmB,GAAGA,mBAAAA,CAAAA;AAC3BD,QAAAA,IAAAA,CAAKE,WAAW,GAAG/xF,OAAAA,CAAQH,SAAS,CAACkyF,aAAapzF,SAAS,EAAA,CAAA;AAC7D,KAAA;IAEA,OAAOkzF,IAAAA,CAAAA;AACT;;AClCA;AACO,SAASG,UAAWhqF,CAAAA,IAAI,EAAES,KAAK,EAAEC,GAAG,EAAEupF,GAAG,EAAEC,SAAS,EAAA;AACvD,IAAA,IAAI97F,CAAG4mD,EAAAA,IAAAA,CAAAA;AAEP,IAAA,IAAIk1C,cAAeC,UAAWnqF,CAAAA,IAAAA,EAAMS,KAAOC,EAAAA,GAAAA,EAAKupF,OAAO,CAAI,EAAA;AACvD,QAAA,IAAK77F,IAAIqS,KAAOrS,EAAAA,CAAAA,GAAIsS,GAAKtS,EAAAA,CAAAA,IAAK67F,IAAKj1C,IAAOo1C,GAAAA,UAAAA,CAAWh8F,CAAG4R,EAAAA,IAAI,CAAC5R,CAAE,CAAA,EAAE4R,IAAI,CAAC5R,CAAAA,GAAI,EAAE,EAAE4mD,IAAAA,CAAAA,CAAAA;KAC3E,MAAA;AACH,QAAA,IAAK5mD,IAAIsS,GAAMupF,GAAAA,GAAAA,EAAK77F,KAAKqS,KAAOrS,EAAAA,CAAAA,IAAK67F,IAAKj1C,IAAOo1C,GAAAA,UAAAA,CAAWh8F,CAAG4R,EAAAA,IAAI,CAAC5R,CAAE,CAAA,EAAE4R,IAAI,CAAC5R,CAAAA,GAAI,EAAE,EAAE4mD,IAAAA,CAAAA,CAAAA;AACzF,KAAA;AAEA,IAAA,IAAIA,IAAQx9C,IAAAA,MAAAA,CAAOw9C,IAAMA,EAAAA,IAAAA,CAAK3lD,IAAI,CAAG,EAAA;QACjCg7F,UAAWr1C,CAAAA,IAAAA,CAAAA,CAAAA;AACXA,QAAAA,IAAAA,GAAOA,KAAK3lD,IAAI,CAAA;AACpB,KAAA;IAEA,OAAO2lD,IAAAA,CAAAA;AACX,CAAA;AAEA;AACO,SAASs1C,YAAAA,CAAa7pF,KAAK,EAAEC,GAAG,EAAA;IACnC,IAAI,CAACD,OAAO,OAAOA,KAAAA,CAAAA;IACnB,IAAI,CAACC,KAAKA,GAAMD,GAAAA,KAAAA,CAAAA;AAEhB,IAAA,IAAI0F,IAAI1F,KACJ8pF,EAAAA,KAAAA,CAAAA;IACJ,GAAG;QACCA,KAAQ,GAAA,KAAA,CAAA;AAER,QAAA,IAAI,CAACpkF,CAAEqkF,CAAAA,OAAO,KAAKhzF,MAAAA,CAAO2O,GAAGA,CAAE9W,CAAAA,IAAI,KAAKkgF,IAAKppE,CAAAA,CAAAA,CAAEskF,IAAI,EAAEtkF,CAAAA,EAAGA,EAAE9W,IAAI,CAAA,KAAM,CAAA,CAAI,EAAA;YACpEg7F,UAAWlkF,CAAAA,CAAAA,CAAAA,CAAAA;YACXA,CAAIzF,GAAAA,GAAAA,GAAMyF,EAAEskF,IAAI,CAAA;YAChB,IAAItkF,CAAAA,KAAMA,CAAE9W,CAAAA,IAAI,EAAE,MAAA;YAClBk7F,KAAQ,GAAA,IAAA,CAAA;SAEL,MAAA;AACHpkF,YAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,SAAA;KACKk7F,OAAAA,KAAAA,IAASpkF,MAAMzF,GAAK,EAAA;IAE7B,OAAOA,GAAAA,CAAAA;AACX,CAAA;AAuDA;AACO,SAASgqF,MAAMC,GAAG,EAAA;IACrB,IAAI92F,CAAAA,GAAI82F,IAAIF,IAAI,EACZ32F,IAAI62F,GACJ/8F,EAAAA,CAAAA,GAAI+8F,IAAIt7F,IAAI,CAAA;AAEhB,IAAA,IAAIkgF,KAAK17E,CAAGC,EAAAA,CAAAA,EAAGlG,MAAM,CAAG,EAAA,OAAO;;AAG/B,IAAA,IAAIuY,CAAIwkF,GAAAA,GAAAA,CAAIt7F,IAAI,CAACA,IAAI,CAAA;IAErB,MAAO8W,CAAAA,KAAMwkF,GAAIF,CAAAA,IAAI,CAAE;AACnB,QAAA,IAAIG,eAAgB/2F,CAAAA,CAAAA,CAAEI,CAAC,EAAEJ,EAAE7E,CAAC,EAAE8E,CAAEG,CAAAA,CAAC,EAAEH,CAAE9E,CAAAA,CAAC,EAAEpB,CAAAA,CAAEqG,CAAC,EAAErG,CAAAA,CAAEoB,CAAC,EAAEmX,CAAElS,CAAAA,CAAC,EAAEkS,CAAAA,CAAEnX,CAAC,CACtDugF,IAAAA,IAAAA,CAAKppE,CAAEskF,CAAAA,IAAI,EAAEtkF,CAAGA,EAAAA,CAAAA,CAAE9W,IAAI,CAAA,IAAK,GAAG,OAAO,KAAA,CAAA;AACzC8W,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA;IAEA,OAAO,IAAA,CAAA;AACX,CAAA;AAEO,SAASw7F,YAAYF,GAAG,EAAE7tD,IAAI,EAAEC,IAAI,EAAE+tD,OAAO,EAAA;IAChD,IAAIj3F,CAAAA,GAAI82F,IAAIF,IAAI,EACZ32F,IAAI62F,GACJ/8F,EAAAA,CAAAA,GAAI+8F,IAAIt7F,IAAI,CAAA;AAEhB,IAAA,IAAIkgF,KAAK17E,CAAGC,EAAAA,CAAAA,EAAGlG,MAAM,CAAG,EAAA,OAAO;;IAG/B,IAAIm9F,KAAAA,GAAQl3F,CAAEI,CAAAA,CAAC,GAAGH,CAAAA,CAAEG,CAAC,GAAIJ,CAAEI,CAAAA,CAAC,GAAGrG,CAAAA,CAAEqG,CAAC,GAAGJ,CAAEI,CAAAA,CAAC,GAAGrG,CAAAA,CAAEqG,CAAC,GAAKH,CAAEG,CAAAA,CAAC,GAAGrG,CAAAA,CAAEqG,CAAC,GAAGH,CAAEG,CAAAA,CAAC,GAAGrG,CAAAA,CAAEqG,CAAC,EACpE+2F,KAAQn3F,GAAAA,CAAAA,CAAE7E,CAAC,GAAG8E,CAAE9E,CAAAA,CAAC,GAAI6E,CAAAA,CAAE7E,CAAC,GAAGpB,CAAEoB,CAAAA,CAAC,GAAG6E,CAAAA,CAAE7E,CAAC,GAAGpB,CAAEoB,CAAAA,CAAC,GAAK8E,CAAAA,CAAE9E,CAAC,GAAGpB,CAAEoB,CAAAA,CAAC,GAAG8E,CAAAA,CAAE9E,CAAC,GAAGpB,CAAEoB,CAAAA,CAAC,EACpEi8F,KAAQp3F,GAAAA,CAAAA,CAAEI,CAAC,GAAGH,CAAEG,CAAAA,CAAC,GAAIJ,CAAAA,CAAEI,CAAC,GAAGrG,CAAEqG,CAAAA,CAAC,GAAGJ,CAAAA,CAAEI,CAAC,GAAGrG,CAAEqG,CAAAA,CAAC,GAAKH,CAAAA,CAAEG,CAAC,GAAGrG,CAAEqG,CAAAA,CAAC,GAAGH,CAAAA,CAAEG,CAAC,GAAGrG,CAAEqG,CAAAA,CAAC,EACpEi3F,KAAAA,GAAQr3F,CAAE7E,CAAAA,CAAC,GAAG8E,CAAAA,CAAE9E,CAAC,GAAI6E,CAAE7E,CAAAA,CAAC,GAAGpB,CAAAA,CAAEoB,CAAC,GAAG6E,CAAE7E,CAAAA,CAAC,GAAGpB,CAAAA,CAAEoB,CAAC,GAAK8E,CAAE9E,CAAAA,CAAC,GAAGpB,CAAAA,CAAEoB,CAAC,GAAG8E,CAAE9E,CAAAA,CAAC,GAAGpB,CAAAA,CAAEoB,CAAC,CAAA;;AAGxE,IAAA,IAAIguC,IAAOmuD,GAAAA,MAAAA,CAAOJ,KAAOC,EAAAA,KAAAA,EAAOluD,IAAMC,EAAAA,IAAAA,EAAM+tD,OACxC3tD,CAAAA,EAAAA,IAAAA,GAAOguD,MAAOF,CAAAA,KAAAA,EAAOC,KAAOpuD,EAAAA,IAAAA,EAAMC,IAAM+tD,EAAAA,OAAAA,CAAAA,CAAAA;AAE5C,IAAA,IAAI3kF,IAAIwkF,GAAIS,CAAAA,KAAK,EACb57F,CAAAA,GAAIm7F,IAAIU,KAAK,CAAA;;IAGjB,MAAOllF,CAAAA,IAAKA,EAAElO,CAAC,IAAI+kC,QAAQxtC,CAAKA,IAAAA,CAAAA,CAAEyI,CAAC,IAAIklC,IAAM,CAAA;AACzC,QAAA,IAAIh3B,MAAMwkF,GAAIF,CAAAA,IAAI,IAAItkF,CAAMwkF,KAAAA,GAAAA,CAAIt7F,IAAI,IAChCu7F,eAAAA,CAAgB/2F,EAAEI,CAAC,EAAEJ,EAAE7E,CAAC,EAAE8E,EAAEG,CAAC,EAAEH,EAAE9E,CAAC,EAAEpB,CAAEqG,CAAAA,CAAC,EAAErG,CAAEoB,CAAAA,CAAC,EAAEmX,CAAElS,CAAAA,CAAC,EAAEkS,CAAEnX,CAAAA,CAAC,KACtDugF,IAAKppE,CAAAA,CAAAA,CAAEskF,IAAI,EAAEtkF,CAAAA,EAAGA,EAAE9W,IAAI,CAAA,IAAK,GAAG,OAAO,KAAA,CAAA;AACzC8W,QAAAA,CAAAA,GAAIA,EAAEilF,KAAK,CAAA;AAEX,QAAA,IAAI57F,MAAMm7F,GAAIF,CAAAA,IAAI,IAAIj7F,CAAMm7F,KAAAA,GAAAA,CAAIt7F,IAAI,IAChCu7F,eAAAA,CAAgB/2F,EAAEI,CAAC,EAAEJ,EAAE7E,CAAC,EAAE8E,EAAEG,CAAC,EAAEH,EAAE9E,CAAC,EAAEpB,CAAEqG,CAAAA,CAAC,EAAErG,CAAEoB,CAAAA,CAAC,EAAEQ,CAAEyE,CAAAA,CAAC,EAAEzE,CAAER,CAAAA,CAAC,KACtDugF,IAAK//E,CAAAA,CAAAA,CAAEi7F,IAAI,EAAEj7F,CAAAA,EAAGA,EAAEH,IAAI,CAAA,IAAK,GAAG,OAAO,KAAA,CAAA;AACzCG,QAAAA,CAAAA,GAAIA,EAAE67F,KAAK,CAAA;AACf,KAAA;;AAGA,IAAA,MAAOllF,CAAKA,IAAAA,CAAAA,CAAElO,CAAC,IAAI+kC,IAAM,CAAA;AACrB,QAAA,IAAI72B,MAAMwkF,GAAIF,CAAAA,IAAI,IAAItkF,CAAMwkF,KAAAA,GAAAA,CAAIt7F,IAAI,IAChCu7F,eAAAA,CAAgB/2F,EAAEI,CAAC,EAAEJ,EAAE7E,CAAC,EAAE8E,EAAEG,CAAC,EAAEH,EAAE9E,CAAC,EAAEpB,CAAEqG,CAAAA,CAAC,EAAErG,CAAEoB,CAAAA,CAAC,EAAEmX,CAAElS,CAAAA,CAAC,EAAEkS,CAAEnX,CAAAA,CAAC,KACtDugF,IAAKppE,CAAAA,CAAAA,CAAEskF,IAAI,EAAEtkF,CAAAA,EAAGA,EAAE9W,IAAI,CAAA,IAAK,GAAG,OAAO,KAAA,CAAA;AACzC8W,QAAAA,CAAAA,GAAIA,EAAEilF,KAAK,CAAA;AACf,KAAA;;AAGA,IAAA,MAAO57F,CAAKA,IAAAA,CAAAA,CAAEyI,CAAC,IAAIklC,IAAM,CAAA;AACrB,QAAA,IAAI3tC,MAAMm7F,GAAIF,CAAAA,IAAI,IAAIj7F,CAAMm7F,KAAAA,GAAAA,CAAIt7F,IAAI,IAChCu7F,eAAAA,CAAgB/2F,EAAEI,CAAC,EAAEJ,EAAE7E,CAAC,EAAE8E,EAAEG,CAAC,EAAEH,EAAE9E,CAAC,EAAEpB,CAAEqG,CAAAA,CAAC,EAAErG,CAAEoB,CAAAA,CAAC,EAAEQ,CAAEyE,CAAAA,CAAC,EAAEzE,CAAER,CAAAA,CAAC,KACtDugF,IAAK//E,CAAAA,CAAAA,CAAEi7F,IAAI,EAAEj7F,CAAAA,EAAGA,EAAEH,IAAI,CAAA,IAAK,GAAG,OAAO,KAAA,CAAA;AACzCG,QAAAA,CAAAA,GAAIA,EAAE67F,KAAK,CAAA;AACf,KAAA;IAEA,OAAO,IAAA,CAAA;AACX,CAAA;AAqDA;AACO,SAASC,eAAetrF,IAAI,EAAEurF,WAAW,EAAEC,SAAS,EAAEvB,GAAG,EAAA;AAC5D,IAAA,IAAIjf,QAAQ,EAAE,EACV58E,CAAGyc,EAAAA,GAAAA,EAAKpK,OAAOC,GAAK+qF,EAAAA,IAAAA,CAAAA;IAExB,IAAKr9F,CAAAA,GAAI,GAAGyc,GAAM0gF,GAAAA,WAAAA,CAAY19F,MAAM,EAAEO,CAAAA,GAAIyc,KAAKzc,CAAK,EAAA,CAAA;QAChDqS,KAAQ8qF,GAAAA,WAAW,CAACn9F,CAAAA,CAAE,GAAG67F,GAAAA,CAAAA;QACzBvpF,GAAMtS,GAAAA,CAAAA,GAAIyc,GAAM,GAAA,CAAA,GAAI0gF,WAAW,CAACn9F,IAAI,CAAE,CAAA,GAAG67F,GAAMjqF,GAAAA,IAAAA,CAAKnS,MAAM,CAAA;AAC1D49F,QAAAA,IAAAA,GAAOzB,UAAWhqF,CAAAA,IAAAA,EAAMS,KAAOC,EAAAA,GAAAA,EAAKupF,GAAK,EAAA,KAAA,CAAA,CAAA;AACzC,QAAA,IAAIwB,SAASA,IAAKp8F,CAAAA,IAAI,EAAEo8F,IAAAA,CAAKjB,OAAO,GAAG,IAAA,CAAA;QACvCxf,KAAMj7E,CAAAA,IAAI,CAAC27F,WAAYD,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC3B,KAAA;AAEAzgB,IAAAA,KAAAA,CAAM5sE,IAAI,CAACutF,QAAAA,CAAAA,CAAAA;;AAGX,IAAA,IAAKv9F,IAAI,CAAGA,EAAAA,CAAAA,GAAI48E,KAAMn9E,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;QAC/Bw9F,aAAc5gB,CAAAA,KAAK,CAAC58E,CAAAA,CAAE,EAAEo9F,SAAAA,CAAAA,CAAAA;QACxBA,SAAYlB,GAAAA,YAAAA,CAAakB,SAAWA,EAAAA,SAAAA,CAAUn8F,IAAI,CAAA,CAAA;AACtD,KAAA;IAEA,OAAOm8F,SAAAA,CAAAA;AACX,CAAA;AAEA,SAASG,QAAAA,CAAS93F,CAAC,EAAEC,CAAC,EAAA;AAClB,IAAA,OAAOD,CAAEI,CAAAA,CAAC,GAAGH,CAAAA,CAAEG,CAAC,CAAA;AACpB,CAAA;AAEA;AACA,SAAS23F,aAAAA,CAAcC,IAAI,EAAEL,SAAS,EAAA;AAClCA,IAAAA,SAAAA,GAAYM,eAAeD,IAAML,EAAAA,SAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAIA,SAAW,EAAA;QACX,IAAI13F,CAAAA,GAAIi4F,aAAaP,SAAWK,EAAAA,IAAAA,CAAAA,CAAAA;;QAGhCvB,YAAakB,CAAAA,SAAAA,EAAWA,UAAUn8F,IAAI,CAAA,CAAA;QACtCi7F,YAAax2F,CAAAA,CAAAA,EAAGA,EAAEzE,IAAI,CAAA,CAAA;AAC1B,KAAA;AACJ,CAAA;AAEA;AACA,SAASy8F,cAAAA,CAAeD,IAAI,EAAEL,SAAS,EAAA;AACnC,IAAA,IAAIrlF,CAAIqlF,GAAAA,SAAAA,EACJQ,EAAKH,GAAAA,IAAAA,CAAK53F,CAAC,EACXg4F,EAAKJ,GAAAA,IAAAA,CAAK78F,CAAC,EACXgpB,EAAK,GAAA,CAACjkB,QACNuF,EAAAA,CAAAA,CAAAA;;;IAIJ,GAAG;AACC,QAAA,IAAI2yF,MAAM9lF,CAAEnX,CAAAA,CAAC,IAAIi9F,EAAAA,IAAM9lF,EAAE9W,IAAI,CAACL,CAAC,IAAImX,EAAE9W,IAAI,CAACL,CAAC,KAAKmX,CAAAA,CAAEnX,CAAC,EAAE;AACjD,YAAA,IAAIiF,CAAIkS,GAAAA,CAAAA,CAAElS,CAAC,GAAG,CAACg4F,EAAK9lF,GAAAA,CAAAA,CAAEnX,CAAAA,KAAMmX,CAAE9W,CAAAA,IAAI,CAAC4E,CAAC,GAAGkS,CAAAA,CAAElS,CAAAA,CAAMkS,IAAAA,CAAE9W,CAAAA,IAAI,CAACL,CAAC,GAAGmX,CAAAA,CAAEnX,CAAC,CAADA,CAAAA;YAC5D,IAAIiF,CAAAA,IAAK+3F,EAAM/3F,IAAAA,CAAAA,GAAI+jB,EAAI,EAAA;gBACnBA,EAAK/jB,GAAAA,CAAAA,CAAAA;AACL,gBAAA,IAAIA,MAAM+3F,EAAI,EAAA;AACV,oBAAA,IAAIC,EAAO9lF,KAAAA,CAAAA,CAAEnX,CAAC,EAAE,OAAOmX,CAAAA,CAAAA;oBACvB,IAAI8lF,EAAAA,KAAO9lF,EAAE9W,IAAI,CAACL,CAAC,EAAE,OAAOmX,EAAE9W,IAAI,CAAA;AACtC,iBAAA;gBACAiK,CAAI6M,GAAAA,CAAAA,CAAElS,CAAC,GAAGkS,CAAE9W,CAAAA,IAAI,CAAC4E,CAAC,GAAGkS,CAAIA,GAAAA,CAAAA,CAAE9W,IAAI,CAAA;AACnC,aAAA;AACJ,SAAA;AACA8W,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA,OAAS8W,MAAMqlF,SAAW,EAAA;IAE1B,IAAI,CAAClyF,GAAG,OAAO,IAAA,CAAA;AAEf,IAAA,IAAI0yF,EAAOh0E,KAAAA,EAAAA,EAAI,OAAO1e,CAAAA,CAAAA;;;;IAMtB,IAAI4E,IAAAA,GAAO5E,CACP4yF,EAAAA,EAAAA,GAAK5yF,CAAErF,CAAAA,CAAC,EACRwL,EAAAA,GAAKnG,CAAEtK,CAAAA,CAAC,EACRm9F,MAAAA,GAASp4F,QACTyhC,EAAAA,GAAAA,CAAAA;IAEJrvB,CAAI7M,GAAAA,CAAAA,CAAAA;IAEJ,GAAG;AACC,QAAA,IAAI0yF,EAAM7lF,IAAAA,CAAAA,CAAElS,CAAC,IAAIkS,CAAElS,CAAAA,CAAC,IAAIi4F,EAAAA,IAAMF,EAAO7lF,KAAAA,CAAAA,CAAElS,CAAC,IAChC22F,gBAAgBqB,EAAKxsF,GAAAA,EAAAA,GAAKusF,EAAKh0E,GAAAA,EAAAA,EAAIi0E,EAAIC,EAAAA,EAAAA,EAAIzsF,EAAIwsF,EAAAA,EAAAA,GAAKxsF,EAAKuY,GAAAA,EAAAA,GAAKg0E,EAAIC,EAAAA,EAAAA,EAAI9lF,CAAElS,CAAAA,CAAC,EAAEkS,CAAAA,CAAEnX,CAAC,CAAG,EAAA;AAErFwmC,YAAAA,GAAAA,GAAM5iC,IAAKe,CAAAA,GAAG,CAACs4F,EAAAA,GAAK9lF,CAAEnX,CAAAA,CAAC,CAAKg9F,IAAAA,EAAK7lF,GAAAA,CAAAA,CAAElS,CAAAA;YAEnC,IAAIm4F,aAAAA,CAAcjmF,CAAG0lF,EAAAA,IAAAA,CAAAA,KAChBr2D,GAAAA,GAAM22D,UAAW32D,GAAQ22D,KAAAA,MAAAA,KAAWhmF,CAAAA,CAAElS,CAAC,GAAGqF,EAAErF,CAAC,IAAKkS,CAAElS,CAAAA,CAAC,KAAKqF,CAAAA,CAAErF,CAAC,IAAIo4F,oBAAqB/yF,CAAAA,CAAAA,EAAG6M,CAAE,CAAA,CAAE,CAAI,EAAA;gBAClG7M,CAAI6M,GAAAA,CAAAA,CAAAA;gBACJgmF,MAAS32D,GAAAA,GAAAA,CAAAA;AACb,aAAA;AACJ,SAAA;AAEArvB,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA,OAAS8W,MAAMjI,IAAM,EAAA;IAErB,OAAO5E,CAAAA,CAAAA;AACX,CAAA;AAEA;AACA,SAAS+yF,oBAAAA,CAAqB/yF,CAAC,EAAE6M,CAAC,EAAA;AAC9B,IAAA,OAAOopE,KAAKj2E,CAAEmxF,CAAAA,IAAI,EAAEnxF,CAAAA,EAAG6M,EAAEskF,IAAI,CAAA,GAAI,CAAKlb,IAAAA,IAAAA,CAAKppE,EAAE9W,IAAI,EAAEiK,CAAGA,EAAAA,CAAAA,CAAEjK,IAAI,CAAI,GAAA,CAAA,CAAA;AACpE,CAAA;AAEA;AACO,SAASi9F,WAAW7rF,KAAK,EAAEq8B,IAAI,EAAEC,IAAI,EAAE+tD,OAAO,EAAA;AACjD,IAAA,IAAI3kF,CAAI1F,GAAAA,KAAAA,CAAAA;IACR,GAAG;AACC,QAAA,IAAI0F,CAAElO,CAAAA,CAAC,KAAK,IAAA,EAAMkO,EAAElO,CAAC,GAAGkzF,MAAOhlF,CAAAA,CAAAA,CAAElS,CAAC,EAAEkS,CAAAA,CAAEnX,CAAC,EAAE8tC,MAAMC,IAAM+tD,EAAAA,OAAAA,CAAAA,CAAAA;QACrD3kF,CAAEilF,CAAAA,KAAK,GAAGjlF,CAAAA,CAAEskF,IAAI,CAAA;QAChBtkF,CAAEklF,CAAAA,KAAK,GAAGllF,CAAAA,CAAE9W,IAAI,CAAA;AAChB8W,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA,OAAS8W,MAAM1F,KAAO,EAAA;IAEtB0F,CAAEilF,CAAAA,KAAK,CAACC,KAAK,GAAG,IAAA,CAAA;AAChBllF,IAAAA,CAAAA,CAAEilF,KAAK,GAAG,IAAA,CAAA;IAEVmB,UAAWpmF,CAAAA,CAAAA,CAAAA,CAAAA;AACf,CAAA;AAEA;AACA;AACA,SAASomF,WAAWd,IAAI,EAAA;IACpB,IAAIr9F,CAAAA,EAAG+X,GAAG/M,CAAGpJ,EAAAA,CAAAA,EAAGw8F,MAAMC,SAAWC,EAAAA,KAAAA,EAAOC,OACpCC,MAAS,GAAA,CAAA,CAAA;IAEb,GAAG;QACCzmF,CAAIslF,GAAAA,IAAAA,CAAAA;QACJA,IAAO,GAAA,IAAA,CAAA;QACPe,IAAO,GAAA,IAAA,CAAA;QACPC,SAAY,GAAA,CAAA,CAAA;AAEZ,QAAA,MAAOtmF,CAAG,CAAA;AACNsmF,YAAAA,SAAAA,EAAAA,CAAAA;YACArzF,CAAI+M,GAAAA,CAAAA,CAAAA;YACJumF,KAAQ,GAAA,CAAA,CAAA;AACR,YAAA,IAAKt+F,CAAI,GAAA,CAAA,EAAGA,CAAIw+F,GAAAA,MAAAA,EAAQx+F,CAAK,EAAA,CAAA;AACzBs+F,gBAAAA,KAAAA,EAAAA,CAAAA;AACAtzF,gBAAAA,CAAAA,GAAIA,EAAEiyF,KAAK,CAAA;AACX,gBAAA,IAAI,CAACjyF,CAAG,EAAA,MAAA;AACZ,aAAA;YACAuzF,KAAQC,GAAAA,MAAAA,CAAAA;AAER,YAAA,MAAOF,KAAQ,GAAA,CAAA,IAAMC,KAAQ,GAAA,CAAA,IAAKvzF,CAAI,CAAA;AAElC,gBAAA,IAAIszF,KAAU,KAAA,CAAA,KAAMC,KAAAA,KAAU,CAAK,IAAA,CAACvzF,CAAK+M,IAAAA,CAAAA,CAAElO,CAAC,IAAImB,CAAEnB,CAAAA,CAAC,CAAG,EAAA;oBAClDjI,CAAImW,GAAAA,CAAAA,CAAAA;AACJA,oBAAAA,CAAAA,GAAIA,EAAEklF,KAAK,CAAA;AACXqB,oBAAAA,KAAAA,EAAAA,CAAAA;iBACG,MAAA;oBACH18F,CAAIoJ,GAAAA,CAAAA,CAAAA;AACJA,oBAAAA,CAAAA,GAAIA,EAAEiyF,KAAK,CAAA;AACXsB,oBAAAA,KAAAA,EAAAA,CAAAA;AACJ,iBAAA;gBAEA,IAAIH,IAAAA,EAAMA,IAAKnB,CAAAA,KAAK,GAAGr7F,CAAAA,CAAAA;qBAClBy7F,IAAOz7F,GAAAA,CAAAA,CAAAA;AAEZA,gBAAAA,CAAAA,CAAEo7F,KAAK,GAAGoB,IAAAA,CAAAA;gBACVA,IAAOx8F,GAAAA,CAAAA,CAAAA;AACX,aAAA;YAEAmW,CAAI/M,GAAAA,CAAAA,CAAAA;AACR,SAAA;AAEAozF,QAAAA,IAAAA,CAAKnB,KAAK,GAAG,IAAA,CAAA;QACbuB,MAAU,IAAA,CAAA,CAAA;AAEd,KAAA,OAASH,YAAY,CAAG,EAAA;IAExB,OAAOhB,IAAAA,CAAAA;AACX,CAAA;AAEA;AACA,SAASN,MAAAA,CAAOl3F,CAAC,EAAEjF,CAAC,EAAE8tC,IAAI,EAAEC,IAAI,EAAE+tD,OAAO,EAAA;;AAErC72F,IAAAA,CAAAA,GAAI,KAASA,IAAAA,CAAI6oC,GAAAA,IAAG,CAAKguD,GAAAA,OAAAA,CAAAA;AACzB97F,IAAAA,CAAAA,GAAI,KAASA,IAAAA,CAAI+tC,GAAAA,IAAG,CAAK+tD,GAAAA,OAAAA,CAAAA;AAEzB72F,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AACrBA,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AACrBA,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AACrBA,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AAErBjF,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AACrBA,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AACrBA,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AACrBA,IAAAA,CAAAA,GAAI,CAACA,CAAKA,GAAAA,CAAAA,IAAK,CAAC,IAAK,UAAA,CAAA;AAErB,IAAA,OAAOiF,IAAKjF,CAAK,IAAA,CAAA,CAAA;AACrB,CAAA;AAEA;AACA,SAAS08F,YAAYjrF,KAAK,EAAA;IACtB,IAAI0F,CAAAA,GAAI1F,OACJosF,QAAWpsF,GAAAA,KAAAA,CAAAA;IACf,GAAG;AACC,QAAA,IAAI0F,EAAElS,CAAC,GAAG44F,SAAS54F,CAAC,IAAKkS,EAAElS,CAAC,KAAK44F,QAAS54F,CAAAA,CAAC,IAAIkS,CAAEnX,CAAAA,CAAC,GAAG69F,QAAS79F,CAAAA,CAAC,EAAG69F,QAAW1mF,GAAAA,CAAAA,CAAAA;AAC7EA,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA,OAAS8W,MAAM1F,KAAO,EAAA;IAEtB,OAAOosF,QAAAA,CAAAA;AACX,CAAA;AAEA;AACA,SAASjC,eAAgBvyF,CAAAA,EAAE,EAAEC,EAAE,EAAEE,EAAE,EAAEC,EAAE,EAAEq0F,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAA;IACnD,OAAQH,CAAAA,EAAAA,GAAKE,EAAC,KAAM10F,EAAK20F,GAAAA,EAAC,CAAK,GAAC50F,CAAAA,EAAAA,GAAK20F,EAAC,KAAMD,EAAKE,GAAAA,EAAC,CAAM,IAAA,CAAA,IACjD,CAAC50F,EAAK20F,GAAAA,EAAC,KAAMv0F,EAAKw0F,GAAAA,EAAC,IAAK,CAACz0F,EAAKw0F,GAAAA,EAAC,KAAM10F,EAAK20F,GAAAA,EAAC,CAAM,IAAA,CAAA,IACjD,CAACz0F,EAAKw0F,GAAAA,EAAC,KAAMD,EAAAA,GAAKE,EAAC,CAAA,GAAK,CAACH,EAAKE,GAAAA,EAAC,KAAMv0F,EAAKw0F,GAAAA,EAAC,CAAM,IAAA,CAAA,CAAA;AAC5D,CAAA;AAEA;AACO,SAASC,eAAAA,CAAgBr5F,CAAC,EAAEC,CAAC,EAAA;IAChC,OAAOD,CAAAA,CAAExE,IAAI,CAACjB,CAAC,KAAK0F,CAAE1F,CAAAA,CAAC,IAAIyF,CAAE42F,CAAAA,IAAI,CAACr8F,CAAC,KAAK0F,EAAE1F,CAAC,IAAI,CAAC++F,iBAAkBt5F,CAAAA,CAAAA,EAAGC;KAC7Ds4F,aAAAA,CAAcv4F,GAAGC,CAAMs4F,CAAAA,IAAAA,aAAAA,CAAct4F,GAAGD,CAAMu5F,CAAAA,IAAAA,YAAAA,CAAav5F,CAAGC,EAAAA,CAAAA,CAAAA;AAC7Dy7E,KAAAA,IAAK17E,CAAAA,CAAAA,CAAE42F,IAAI,EAAE52F,GAAGC,CAAE22F,CAAAA,IAAI,CAAKlb,IAAAA,IAAAA,CAAK17E,GAAGC,CAAE22F,CAAAA,IAAI,EAAE32F,CAAAA,CAAC;IAC7C0D,MAAO3D,CAAAA,CAAAA,EAAGC,MAAMy7E,IAAK17E,CAAAA,CAAAA,CAAE42F,IAAI,EAAE52F,CAAAA,EAAGA,EAAExE,IAAI,CAAA,GAAI,KAAKkgF,IAAKz7E,CAAAA,CAAAA,CAAE22F,IAAI,EAAE32F,CAAAA,EAAGA,EAAEzE,IAAI,CAAA,GAAI,CAAA,CAAA,CAAA;AACrF,CAAA;AAEA;AACA,SAASkgF,IAAKppE,CAAAA,CAAC,EAAE/M,CAAC,EAAEtL,CAAC,EAAA;AACjB,IAAA,OAAO,CAACsL,CAAEpK,CAAAA,CAAC,GAAGmX,CAAEnX,CAAAA,CAAC,KAAKlB,CAAAA,CAAEmG,CAAC,GAAGmF,EAAEnF,CAAAA,CAAK,GAACmF,CAAAA,CAAAA,CAAEnF,CAAC,GAAGkS,EAAElS,CAAAA,KAAMnG,CAAEkB,CAAAA,CAAC,GAAGoK,CAAAA,CAAEpK,CAAC,CAADA,CAAAA;AAC9D,CAAA;AAEA;AACO,SAASwI,MAAAA,CAAO2kC,EAAE,EAAEC,EAAE,EAAA;IACzB,OAAOD,EAAAA,CAAGloC,CAAC,KAAKmoC,EAAGnoC,CAAAA,CAAC,IAAIkoC,EAAGntC,CAAAA,CAAC,KAAKotC,EAAAA,CAAGptC,CAAC,CAAA;AACzC,CAAA;AAEA;AACO,SAASq+F,WAAWlxD,EAAE,EAAEmxD,EAAE,EAAElxD,EAAE,EAAEmxD,EAAE,EAAA;AACrC,IAAA,IAAIC,EAAK/wD,GAAAA,IAAAA,CAAK8yC,IAAKpzC,CAAAA,EAAAA,EAAImxD,EAAIlxD,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC3B,IAAA,IAAIqxD,EAAKhxD,GAAAA,IAAAA,CAAK8yC,IAAKpzC,CAAAA,EAAAA,EAAImxD,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC3B,IAAA,IAAIG,EAAKjxD,GAAAA,IAAAA,CAAK8yC,IAAKnzC,CAAAA,EAAAA,EAAImxD,EAAIpxD,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAC3B,IAAA,IAAIwxD,EAAKlxD,GAAAA,IAAAA,CAAK8yC,IAAKnzC,CAAAA,EAAAA,EAAImxD,EAAID,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAE3B,IAAA,IAAIE,OAAOC,EAAMC,IAAAA,EAAAA,KAAOC,EAAI,EAAA,OAAO;IAEnC,IAAIH,EAAAA,KAAO,KAAKI,SAAUzxD,CAAAA,EAAAA,EAAIC,IAAIkxD,EAAK,CAAA,EAAA,OAAO;IAC9C,IAAIG,EAAAA,KAAO,KAAKG,SAAUzxD,CAAAA,EAAAA,EAAIoxD,IAAID,EAAK,CAAA,EAAA,OAAO;IAC9C,IAAII,EAAAA,KAAO,KAAKE,SAAUxxD,CAAAA,EAAAA,EAAID,IAAIoxD,EAAK,CAAA,EAAA,OAAO;IAC9C,IAAII,EAAAA,KAAO,KAAKC,SAAUxxD,CAAAA,EAAAA,EAAIkxD,IAAIC,EAAK,CAAA,EAAA,OAAO;IAE9C,OAAO,KAAA,CAAA;AACX,CAAA;AAEA;AACA,SAASK,SAAUznF,CAAAA,CAAC,EAAE/M,CAAC,EAAEtL,CAAC,EAAA;IACtB,OAAOsL,CAAAA,CAAEnF,CAAC,IAAIrB,IAAAA,CAAK+B,GAAG,CAACwR,CAAAA,CAAElS,CAAC,EAAEnG,CAAAA,CAAEmG,CAAC,CAAKmF,IAAAA,CAAAA,CAAEnF,CAAC,IAAIrB,IAAAA,CAAKI,GAAG,CAACmT,CAAAA,CAAElS,CAAC,EAAEnG,CAAEmG,CAAAA,CAAC,KAAKmF,CAAEpK,CAAAA,CAAC,IAAI4D,IAAK+B,CAAAA,GAAG,CAACwR,CAAEnX,CAAAA,CAAC,EAAElB,CAAEkB,CAAAA,CAAC,KAAKoK,CAAEpK,CAAAA,CAAC,IAAI4D,IAAKI,CAAAA,GAAG,CAACmT,CAAEnX,CAAAA,CAAC,EAAElB,CAAAA,CAAEkB,CAAC,CAAA,CAAA;AAC1H,CAAA;AAEA,SAASytC,KAAKtnC,GAAG,EAAA;AACb,IAAA,OAAOA,MAAM,CAAI,GAAA,CAAA,GAAIA,GAAM,GAAA,CAAA,GAAI,CAAC,CAAI,GAAA,CAAA,CAAA;AACxC,CAAA;AAEA;AACA,SAASg4F,iBAAAA,CAAkBt5F,CAAC,EAAEC,CAAC,EAAA;AAC3B,IAAA,IAAIqS,CAAItS,GAAAA,CAAAA,CAAAA;IACR,GAAG;AACC,QAAA,IAAIsS,CAAE/X,CAAAA,CAAC,KAAKyF,CAAAA,CAAEzF,CAAC,IAAI+X,CAAAA,CAAE9W,IAAI,CAACjB,CAAC,KAAKyF,CAAAA,CAAEzF,CAAC,IAAI+X,EAAE/X,CAAC,KAAK0F,CAAE1F,CAAAA,CAAC,IAAI+X,CAAE9W,CAAAA,IAAI,CAACjB,CAAC,KAAK0F,CAAE1F,CAAAA,CAAC,IAC9Di/F,UAAAA,CAAWlnF,GAAGA,CAAE9W,CAAAA,IAAI,EAAEwE,CAAAA,EAAGC,IAAI,OAAO,IAAA,CAAA;AAC5CqS,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA,OAAS8W,MAAMtS,CAAG,EAAA;IAElB,OAAO,KAAA,CAAA;AACX,CAAA;AAEA;AACO,SAASu4F,aAAAA,CAAcv4F,CAAC,EAAEC,CAAC,EAAA;AAC9B,IAAA,OAAOy7E,IAAK17E,CAAAA,CAAAA,CAAE42F,IAAI,EAAE52F,GAAGA,CAAExE,CAAAA,IAAI,CAAI,GAAA,CAAA,GAC7BkgF,KAAK17E,CAAGC,EAAAA,CAAAA,EAAGD,CAAExE,CAAAA,IAAI,KAAK,CAAKkgF,IAAAA,IAAAA,CAAK17E,CAAGA,EAAAA,CAAAA,CAAE42F,IAAI,EAAE32F,CAAAA,CAAAA,IAAM,CACjDy7E,GAAAA,IAAAA,CAAK17E,GAAGC,CAAGD,EAAAA,CAAAA,CAAE42F,IAAI,CAAA,GAAI,KAAKlb,IAAK17E,CAAAA,CAAAA,EAAGA,CAAExE,CAAAA,IAAI,EAAEyE,CAAK,CAAA,GAAA,CAAA,CAAA;AACvD,CAAA;AAEA;AACA,SAASs5F,YAAAA,CAAav5F,CAAC,EAAEC,CAAC,EAAA;IACtB,IAAIqS,CAAAA,GAAItS,CACJg6F,EAAAA,MAAAA,GAAS,KACTb,EAAAA,EAAAA,GAAK,CAACn5F,CAAAA,CAAEI,CAAC,GAAGH,CAAEG,CAAAA,CAAC,IAAI,CAAA,EACnBg5F,EAAK,GAACp5F,CAAAA,CAAAA,CAAE7E,CAAC,GAAG8E,CAAAA,CAAE9E,CAAAA,IAAK,CAAA,CAAA;IACvB,GAAG;QACC,IAAMmX,EAAEnX,CAAC,GAAGi+F,OAAS9mF,CAAE9W,CAAAA,IAAI,CAACL,CAAC,GAAGi+F,EAAAA,IAAQ9mF,EAAE9W,IAAI,CAACL,CAAC,KAAKmX,CAAEnX,CAAAA,CAAC,IAC/Cg+F,EAAK,GAAC7mF,CAAAA,CAAAA,CAAE9W,IAAI,CAAC4E,CAAC,GAAGkS,CAAAA,CAAElS,CAAAA,KAAMg5F,KAAK9mF,CAAEnX,CAAAA,CAAC,CAADA,IAAMmX,CAAAA,CAAE9W,IAAI,CAACL,CAAC,GAAGmX,CAAAA,CAAEnX,CAAAA,IAAKmX,CAAElS,CAAAA,CAAC,EAChE45F,MAAAA,GAAS,CAACA,MAAAA,CAAAA;AACd1nF,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACd,KAAA,OAAS8W,MAAMtS,CAAG,EAAA;IAElB,OAAOg6F,MAAAA,CAAAA;AACX,CAAA;AAEA;AACA;AACO,SAAS9B,YAAAA,CAAal4F,CAAC,EAAEC,CAAC,EAAA;AAC7B,IAAA,IAAI+4C,EAAK,GAAA,IAAIihD,IAAKj6F,CAAAA,CAAAA,CAAEzF,CAAC,EAAEyF,CAAEI,CAAAA,CAAC,EAAEJ,CAAAA,CAAE7E,CAAC,CAAA,EAC3B++F,KAAK,IAAID,IAAAA,CAAKh6F,CAAE1F,CAAAA,CAAC,EAAE0F,CAAAA,CAAEG,CAAC,EAAEH,CAAE9E,CAAAA,CAAC,CAC3Bg/F,EAAAA,EAAAA,GAAKn6F,CAAExE,CAAAA,IAAI,EACX4+F,EAAAA,GAAKn6F,EAAE22F,IAAI,CAAA;AAEf52F,IAAAA,CAAAA,CAAExE,IAAI,GAAGyE,CAAAA,CAAAA;AACTA,IAAAA,CAAAA,CAAE22F,IAAI,GAAG52F,CAAAA,CAAAA;AAETg5C,IAAAA,EAAAA,CAAGx9C,IAAI,GAAG2+F,EAAAA,CAAAA;AACVA,IAAAA,EAAAA,CAAGvD,IAAI,GAAG59C,EAAAA,CAAAA;AAEVkhD,IAAAA,EAAAA,CAAG1+F,IAAI,GAAGw9C,EAAAA,CAAAA;AACVA,IAAAA,EAAAA,CAAG49C,IAAI,GAAGsD,EAAAA,CAAAA;AAEVE,IAAAA,EAAAA,CAAG5+F,IAAI,GAAG0+F,EAAAA,CAAAA;AACVA,IAAAA,EAAAA,CAAGtD,IAAI,GAAGwD,EAAAA,CAAAA;IAEV,OAAOF,EAAAA,CAAAA;AACX,CAAA;AAEA;AACA,SAAS3D,WAAWh8F,CAAC,EAAE6F,CAAC,EAAEjF,CAAC,EAAEgmD,IAAI,EAAA;AAC7B,IAAA,IAAI7uC,CAAI,GAAA,IAAI2nF,IAAK1/F,CAAAA,CAAAA,EAAG6F,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;AAEvB,IAAA,IAAI,CAACgmD,IAAM,EAAA;AACP7uC,QAAAA,CAAAA,CAAEskF,IAAI,GAAGtkF,CAAAA,CAAAA;AACTA,QAAAA,CAAAA,CAAE9W,IAAI,GAAG8W,CAAAA,CAAAA;KAEN,MAAA;QACHA,CAAE9W,CAAAA,IAAI,GAAG2lD,IAAAA,CAAK3lD,IAAI,CAAA;AAClB8W,QAAAA,CAAAA,CAAEskF,IAAI,GAAGz1C,IAAAA,CAAAA;QACTA,IAAK3lD,CAAAA,IAAI,CAACo7F,IAAI,GAAGtkF,CAAAA,CAAAA;AACjB6uC,QAAAA,IAAAA,CAAK3lD,IAAI,GAAG8W,CAAAA,CAAAA;AAChB,KAAA;IACA,OAAOA,CAAAA,CAAAA;AACX,CAAA;AAEO,SAASkkF,WAAWlkF,CAAC,EAAA;AACxBA,IAAAA,CAAAA,CAAE9W,IAAI,CAACo7F,IAAI,GAAGtkF,EAAEskF,IAAI,CAAA;AACpBtkF,IAAAA,CAAAA,CAAEskF,IAAI,CAACp7F,IAAI,GAAG8W,EAAE9W,IAAI,CAAA;IAEpB,IAAI8W,CAAAA,CAAEilF,KAAK,EAAEjlF,CAAAA,CAAEilF,KAAK,CAACC,KAAK,GAAGllF,CAAAA,CAAEklF,KAAK,CAAA;IACpC,IAAIllF,CAAAA,CAAEklF,KAAK,EAAEllF,CAAAA,CAAEklF,KAAK,CAACD,KAAK,GAAGjlF,CAAAA,CAAEilF,KAAK,CAAA;AACxC,CAAA;AAEO,SAAS0C,IAAK1/F,CAAAA,CAAC,EAAE6F,CAAC,EAAEjF,CAAC,EAAA;;IAExB,IAAI,CAACZ,CAAC,GAAGA,CAAAA,CAAAA;;IAGT,IAAI,CAAC6F,CAAC,GAAGA,CAAAA,CAAAA;IACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;;IAGT,IAAI,CAACy7F,IAAI,GAAG,IAAA,CAAA;IACZ,IAAI,CAACp7F,IAAI,GAAG,IAAA,CAAA;;IAGZ,IAAI,CAAC4I,CAAC,GAAG,IAAA,CAAA;;IAGT,IAAI,CAACmzF,KAAK,GAAG,IAAA,CAAA;IACb,IAAI,CAACC,KAAK,GAAG,IAAA,CAAA;;IAGb,IAAI,CAACb,OAAO,GAAG,KAAA,CAAA;AACnB,CAAA;AA+BA,SAASL,WAAWnqF,IAAI,EAAES,KAAK,EAAEC,GAAG,EAAEupF,GAAG,EAAA;AACrC,IAAA,IAAI5zF,GAAM,GAAA,CAAA,CAAA;IACV,IAAK,IAAIjI,IAAIqS,KAAOlD,EAAAA,CAAAA,GAAImD,MAAMupF,GAAK77F,EAAAA,CAAAA,GAAIsS,GAAKtS,EAAAA,CAAAA,IAAK67F,GAAK,CAAA;QAClD5zF,GAAO,IAAC2J,CAAAA,IAAI,CAACzC,EAAE,GAAGyC,IAAI,CAAC5R,CAAE,CAAD,KAAM4R,IAAI,CAAC5R,CAAI,GAAA,CAAA,CAAE,GAAG4R,IAAI,CAACzC,CAAI,GAAA,CAAA,CAAE,CAAD,CAAA;QACtDA,CAAInP,GAAAA,CAAAA,CAAAA;AACR,KAAA;IACA,OAAOiI,GAAAA,CAAAA;AACX;;AChpBA,IAAI63F,SAAY,GAAA,CAAA,CAAA;AAET,SAASC,OAAQnuF,IAAc,EAAEurF,WAA4B,EAAEtB,GAAW,EAAEmE,EAAU,EAAA;AAC3FnE,IAAAA,GAAAA,GAAMA,GAAO,IAAA,CAAA,CAAA;AACbiE,IAAAA,SAAAA,GAAYE,EAAM,IAAA,CAAA,CAAA;IAElB,IAAMC,QAAAA,GAAW9C,WAAeA,IAAAA,WAAAA,CAAY19F,MAAM,CAAA;IAClD,IAAMygG,QAAAA,GAAWD,WAAW9C,WAAW,CAAC,EAAE,GAAGtB,GAAAA,GAAMjqF,KAAKnS,MAAM,CAAA;AAC9D,IAAA,IAAI29F,SAAYxB,GAAAA,UAAAA,CAAWhqF,IAAM,EAAA,CAAA,EAAGsuF,UAAUrE,GAAK,EAAA,IAAA,CAAA,CAAA;AACnD,IAAA,IAAMxb,YAAsB,EAAE,CAAA;AAE9B,IAAA,IAAI,CAAC+c,SAAaA,IAAAA,SAAAA,CAAUn8F,IAAI,KAAKm8F,SAAAA,CAAUf,IAAI,EAAE;QACnD,OAAOhc,SAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,IAAI3xC,IAA0BC,EAAAA,IAAAA,EAA0BE,IAAMC,EAAAA,IAAAA,EAAMjpC,GAAGjF,CAAG87F,EAAAA,OAAAA,CAAAA;AAE1E,IAAA,IAAIuD,QAAU,EAAA;QACZ7C,SAAYF,GAAAA,cAAAA,CAAetrF,IAAMurF,EAAAA,WAAAA,EAAaC,SAAWvB,EAAAA,GAAAA,CAAAA,CAAAA;AAC3D,KAAA;;AAGA,IAAA,IAAIjqF,IAAKnS,CAAAA,MAAM,GAAG,EAAA,GAAKo8F,GAAK,EAAA;QAC1BntD,IAAOG,GAAAA,IAAAA,GAAOj9B,IAAI,CAAC,CAAE,CAAA,CAAA;QACrB+8B,IAAOG,GAAAA,IAAAA,GAAOl9B,IAAI,CAAC,CAAE,CAAA,CAAA;AAErB,QAAA,IAAK,IAAI5R,CAAI67F,GAAAA,GAAAA,EAAK77F,CAAIkgG,GAAAA,QAAAA,EAAUlgG,KAAK67F,GAAK,CAAA;YACxCh2F,CAAI+L,GAAAA,IAAI,CAAC5R,CAAE,CAAA,CAAA;YACXY,CAAIgR,GAAAA,IAAI,CAAC5R,CAAAA,GAAI,CAAE,CAAA,CAAA;AACf,YAAA,IAAI6F,IAAI6oC,IAAM,EAAA;gBACZA,IAAO7oC,GAAAA,CAAAA,CAAAA;AACT,aAAA;AACA,YAAA,IAAIjF,IAAI+tC,IAAM,EAAA;gBACZA,IAAO/tC,GAAAA,CAAAA,CAAAA;AACT,aAAA;AACA,YAAA,IAAIiF,IAAIgpC,IAAM,EAAA;gBACZA,IAAOhpC,GAAAA,CAAAA,CAAAA;AACT,aAAA;AACA,YAAA,IAAIjF,IAAIkuC,IAAM,EAAA;gBACZA,IAAOluC,GAAAA,CAAAA,CAAAA;AACT,aAAA;AACF,SAAA;;AAGA87F,QAAAA,OAAAA,GAAUl4F,IAAK+B,CAAAA,GAAG,CAACsoC,IAAAA,GAAOH,MAAMI,IAAOH,GAAAA,IAAAA,CAAAA,CAAAA;QACvC+tD,OAAUA,GAAAA,OAAAA,KAAY,CAAI,GAAA,CAAA,GAAIA,OAAU,GAAA,CAAA,CAAA;AAC1C,KAAA;AAEAyD,IAAAA,gBAAAA,CAAiB/C,SAAW/c,EAAAA,SAAAA,EAAWwb,GAAKntD,EAAAA,IAAAA,EAAMC,IAAM+tD,EAAAA,OAAAA,CAAAA,CAAAA;IAExD,OAAOrc,SAAAA,CAAAA;AACT,CAAA;AAEA;AACA,SAAS8f,gBAAkB5D,CAAAA,GAAS,EAAElc,SAAmB,EAAEwb,GAAW,EAAEntD,IAAa,EAAEC,IAAa,EAAE+tD,OAAgB,EAAE9wB,IAAa,EAAA;AACnI,IAAA,IAAI,CAAC2wB,GAAK,EAAA;AACR,QAAA,OAAA;AACF,KAAA;;IAGA,IAAI,CAAC3wB,QAAQ8wB,OAAS,EAAA;QACpBwB,UAAW3B,CAAAA,GAAAA,EAAK7tD,MAAOC,IAAO+tD,EAAAA,OAAAA,CAAAA,CAAAA;AAChC,KAAA;IAEA,IAAI5sF,IAAAA,GAAOysF,KAAKF,IAAMp7F,EAAAA,IAAAA,CAAAA;;AAGtB,IAAA,MAAOs7F,GAAIF,CAAAA,IAAI,KAAKE,GAAAA,CAAIt7F,IAAI,CAAE;AAC5Bo7F,QAAAA,IAAAA,GAAOE,IAAIF,IAAI,CAAA;AACfp7F,QAAAA,IAAAA,GAAOs7F,IAAIt7F,IAAI,CAAA;AAEf,QAAA,IAAIy7F,UAAUD,WAAYF,CAAAA,GAAAA,EAAK7tD,MAAOC,IAAO+tD,EAAAA,OAAAA,CAAAA,GAAWJ,MAAMC,GAAM,CAAA,EAAA;;AAElElc,YAAAA,SAAAA,CAAU1+E,IAAI,CAAC06F,IAAKr8F,CAAAA,CAAC,GAAG67F,GAAMiE,GAAAA,SAAAA,CAAAA,CAAAA;AAC9Bzf,YAAAA,SAAAA,CAAU1+E,IAAI,CAAC46F,GAAIv8F,CAAAA,CAAC,GAAG67F,GAAMiE,GAAAA,SAAAA,CAAAA,CAAAA;AAC7Bzf,YAAAA,SAAAA,CAAU1+E,IAAI,CAACV,IAAKjB,CAAAA,CAAC,GAAG67F,GAAMiE,GAAAA,SAAAA,CAAAA,CAAAA;YAE9B7D,UAAWM,CAAAA,GAAAA,CAAAA,CAAAA;;AAGXA,YAAAA,GAAAA,GAAMt7F,KAAKA,IAAI,CAAA;AACf6O,YAAAA,IAAAA,GAAO7O,KAAKA,IAAI,CAAA;AAEhB,YAAA,SAAA;AACF,SAAA;QAEAs7F,GAAMt7F,GAAAA,IAAAA,CAAAA;;AAGN,QAAA,IAAIs7F,QAAQzsF,IAAM,EAAA;;AAEhB,YAAA,IAAI,CAAC87D,IAAM,EAAA;AACTu0B,gBAAAA,gBAAAA,CAAiBjE,aAAaK,GAAMlc,CAAAA,EAAAA,SAAAA,EAAWwb,GAAKntD,EAAAA,IAAAA,EAAMC,MAAM+tD,OAAS,EAAA,CAAA,CAAA,CAAA;;aAGpE,MAAA,IAAI9wB,SAAS,CAAG,EAAA;gBACrB2wB,GAAM6D,GAAAA,0BAAAA,CAA2BlE,YAAaK,CAAAA,GAAAA,CAAAA,EAAMlc,SAAWwb,EAAAA,GAAAA,CAAAA,CAAAA;AAC/DsE,gBAAAA,gBAAAA,CAAiB5D,GAAKlc,EAAAA,SAAAA,EAAWwb,GAAKntD,EAAAA,IAAAA,EAAMC,MAAM+tD,OAAS,EAAA,CAAA,CAAA,CAAA;;aAGtD,MAAA,IAAI9wB,SAAS,CAAG,EAAA;AACrBy0B,gBAAAA,eAAAA,CAAgB9D,GAAKlc,EAAAA,SAAAA,EAAWwb,GAAKntD,EAAAA,IAAAA,EAAMC,IAAM+tD,EAAAA,OAAAA,CAAAA,CAAAA;AACnD,aAAA;AAEA,YAAA,MAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA;AAEA;AACA,SAAS0D,0BAA4B/tF,CAAAA,KAAW,EAAEguE,SAAmB,EAAEwb,GAAW,EAAA;AAChF,IAAA,IAAI9jF,CAAI1F,GAAAA,KAAAA,CAAAA;IAER,GAAG;QACD,IAAM5M,CAAAA,GAAIsS,EAAEskF,IAAI,EAAE32F,IAAIqS,CAAE9W,CAAAA,IAAI,CAACA,IAAI,CAAA;AAEjC,QAAA,IAAI,CAACmI,MAAO3D,CAAAA,CAAAA,EAAGC,CAAMu5F,CAAAA,IAAAA,UAAAA,CAAWx5F,GAAGsS,CAAGA,EAAAA,CAAAA,CAAE9W,IAAI,EAAEyE,MAAMs4F,aAAcv4F,CAAAA,CAAAA,EAAGC,CAAMs4F,CAAAA,IAAAA,aAAAA,CAAct4F,GAAGD,CAAI,CAAA,EAAA;AAC9F46E,YAAAA,SAAAA,CAAU1+E,IAAI,CAAC8D,CAAEzF,CAAAA,CAAC,GAAG67F,GAAMiE,GAAAA,SAAAA,CAAAA,CAAAA;AAC3Bzf,YAAAA,SAAAA,CAAU1+E,IAAI,CAACoW,CAAE/X,CAAAA,CAAC,GAAG67F,GAAMiE,GAAAA,SAAAA,CAAAA,CAAAA;AAC3Bzf,YAAAA,SAAAA,CAAU1+E,IAAI,CAAC+D,CAAE1F,CAAAA,CAAC,GAAG67F,GAAMiE,GAAAA,SAAAA,CAAAA,CAAAA;;YAG3B7D,UAAWlkF,CAAAA,CAAAA,CAAAA,CAAAA;AACXkkF,YAAAA,UAAAA,CAAWlkF,EAAE9W,IAAI,CAAA,CAAA;AAEjB8W,YAAAA,CAAAA,GAAI1F,KAAQ3M,GAAAA,CAAAA,CAAAA;AACd,SAAA;AACAqS,QAAAA,CAAAA,GAAIA,EAAE9W,IAAI,CAAA;AACZ,KAAA,OAAS8W,MAAM1F,KAAO,EAAA;AAEtB,IAAA,OAAO6pF,YAAankF,CAAAA,CAAAA,CAAAA,CAAAA;AACtB,CAAA;AAEA;AACA,SAASsoF,eAAAA,CAAiBhuF,KAAW,EAAEguE,SAAmB,EAAEwb,GAAW,EAAEntD,IAAa,EAAEC,IAAa,EAAE+tD,OAAgB,EAAA;;AAErH,IAAA,IAAIj3F,CAAI4M,GAAAA,KAAAA,CAAAA;IAER,GAAG;AACD,QAAA,IAAI3M,CAAID,GAAAA,CAAAA,CAAExE,IAAI,CAACA,IAAI,CAAA;QAEnB,MAAOyE,CAAAA,KAAMD,CAAE42F,CAAAA,IAAI,CAAE;YACnB,IAAI52F,CAAAA,CAAEzF,CAAC,KAAK0F,CAAAA,CAAE1F,CAAC,IAAI8+F,eAAAA,CAAgBr5F,GAAGC,CAAI,CAAA,EAAA;;gBAExC,IAAIlG,CAAAA,GAAIm+F,aAAal4F,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;;gBAGxBD,CAAIy2F,GAAAA,YAAAA,CAAaz2F,CAAGA,EAAAA,CAAAA,CAAExE,IAAI,CAAA,CAAA;gBAC1BzB,CAAI08F,GAAAA,YAAAA,CAAa18F,CAAGA,EAAAA,CAAAA,CAAEyB,IAAI,CAAA,CAAA;;AAG1Bk/F,gBAAAA,gBAAAA,CAAiB16F,CAAG46E,EAAAA,SAAAA,EAAWwb,GAAKntD,EAAAA,IAAAA,EAAMC,IAAM+tD,EAAAA,OAAAA,CAAAA,CAAAA;AAChDyD,gBAAAA,gBAAAA,CAAiB3gG,CAAG6gF,EAAAA,SAAAA,EAAWwb,GAAKntD,EAAAA,IAAAA,EAAMC,IAAM+tD,EAAAA,OAAAA,CAAAA,CAAAA;AAEhD,gBAAA,OAAA;AACF,aAAA;AACAh3F,YAAAA,CAAAA,GAAIA,EAAEzE,IAAI,CAAA;AACZ,SAAA;AACAwE,QAAAA,CAAAA,GAAIA,EAAExE,IAAI,CAAA;AACZ,KAAA,OAASwE,MAAM4M,KAAO,EAAA;AACxB;;ACtIA,IAAMiuF,WAAc,GAAA,CAAA,CAAA;AAEb,SAASC,oBAAAA,CAAsBpwD,QAA4B,EAAEntC,OAAuD,EAAA;AACzH,IAAA,IAAQ+G,CAASomC,GAAAA,QAAAA,CAATpmC,CAAGgO,EAAAA,CAAAA,GAAMo4B,QAANp4B,CAAAA,CAAAA,CAAAA;IACX,IAAM2zC,QAAAA,GAAW3hD,CAAC,CAAC,CAAE,CAAA,CAAA;IACrB,IAAMklC,MAAAA,GAASl3B,CAAC,CAAC,CAAE,CAAA,CAAA;AACnB,IAAA,IAAIwyE,UAAa,GAAA,CAAA,CAAA;AAEjB,IAAA,IAAK,IAAIvqF,CAAI,GAAA,CAAA,EAAGA,IAAI0rD,QAASjsD,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;QACxC,IAAMwgG,OAAAA,GAAU90C,QAAQ,CAAC1rD,CAAE,CAAA,CAAA;QAE3BuqF,UAAciW,IAAAA,OAAAA,CAAQ/gG,MAAM,GAAG,CAAA,CAAA;AACjC,KAAA;IAEA,IAAMghG,SAAAA,GAAY,IAAIhoD,YAAAA,CAAa8xC,UAAavyC,GAAAA,oBAAAA,CAAAA,CAAAA;AAChD,IAAA,IAAA,kBAAA,GAAuCh1C,OAA/B88F,CAAAA,SAAAA,EAAAA,SAAY,GAAA,kBAAA,KAAA,KAAA,CAAA,GAAA,CAAA,GAAA,kBAAA,EAAGY,cAAgB19F,OAAhB09F,CAAAA,WAAAA,CAAAA;AACvB,IAAA,IAAIl9F,KAAQ,GAAA,CAAA,CAAA;AACZ,IAAA,IAAIyF,KAAK,CAAGC,EAAAA,EAAAA,GAAK,GAAGy3F,EAAK,GAAA,CAAA,EAAGC,KAAK,CAAGlhG,EAAAA,CAAAA,CAAAA;AAEpC,IAAA,IAAIghG,WAAa,EAAA;QACfz3F,EAAKy3F,GAAAA,WAAW,CAAC,CAAE,CAAA,CAAA;QACnBx3F,EAAKw3F,GAAAA,WAAW,CAAC,CAAE,CAAA,CAAA;QACnBhhG,CAAIghG,GAAAA,WAAW,CAAC,CAAE,CAAA,CAAA;AAClBC,QAAAA,EAAAA,GAAKjhG,IAAIghG,WAAW,CAAC,EAAE,GAAGA,WAAW,CAAC,CAAE,CAAA,CAAA;AACxCE,QAAAA,EAAAA,GAAKlhG,IAAIghG,WAAW,CAAC,EAAE,GAAGA,WAAW,CAAC,CAAE,CAAA,CAAA;AAC1C,KAAA;AAEA,IAAA,IAAM5/C,IAAa,GAAA;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,CAAA;AACzB,IAAA,IAAMp6B,QAAQhnB,CAAM,KAAA,CAAA,GAAI,IAAI,CAAC8E,IAAAA,CAAKU,EAAE,GAAG,CAAA,CAAA;AAEvC,IAAA,IAAK,IAAIlF,EAAI,GAAA,CAAA,EAAGA,KAAI0rD,QAASjsD,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;QACxC,IAAMwgG,QAAAA,GAAU90C,QAAQ,CAAC1rD,EAAE,CAAA,CAAA;QAC3B,IAAM8tC,EAAAA,GAAKmB,MAAM,CAACjvC,EAAE,CAAA,CAAA;QACpB,IAAM+tC,EAAAA,GAAKkB,MAAM,CAACjvC,EAAAA,GAAI,EAAE,IAAIivC,MAAM,CAAC,CAAE,CAAA,CAAA;AACrC,QAAA,IAAMp/B,IAAO2wF,GAAAA,QAAAA,CAAAA;AACb,QAAA,IAAM3wD,KAAc,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QAE1B,IAAK,IAAI1gC,IAAI,CAAGA,EAAAA,CAAAA,GAAIU,KAAKpQ,MAAM,GAAG,GAAG0P,CAAK,EAAA,CAAA;YACxC,IAAMvR,GAAAA,GAAMiS,IAAI,CAACV,CAAE,CAAA,CAAA;AAEnB0xF,YAAAA,gBAAAA,CAAiBhxD,OAAOjyC,GAAKkwC,EAAAA,EAAAA,EAAIC,IAAID,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAA,CAAE,EAAEC,EAAE,CAAC,EAAE,EAAEA,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAC/D+yD,YAAAA,QAAAA,CAASjxD,KAAK,CAAC,CAAA,CAAE,EAAEA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AAC7B,SAAA;AACF,KAAA;AAEA,IAAA,IAAMo0C,UAAU8b,MAAOt4F,CAAAA,KAAAA,CAAMoV,IAAI,CAAC4jF,SAAAA,CAAAA,EAAY,MAAMzoD,oBAAsB8nD,EAAAA,SAAAA,CAAAA,CAAAA;IAE1E,OAAO;QAAEjN,MAAQ4N,EAAAA,SAAAA;AAAWj9F,QAAAA,KAAAA,EAAO,IAAIu1C,WAAYkrC,CAAAA,OAAAA,CAAAA;AAAS,KAAA,CAAA;IAE5D,SAAS6c,QAAAA,CAAUj7F,CAAS,EAAEjF,CAAS,EAAA;QACrC6/F,SAAS,CAACj9F,KAAQ,EAAA,CAAA,GAAGqC,CAAI,GAAA,CAAA,CAAA;QACzB46F,SAAS,CAACj9F,KAAQ,EAAA,CAAA,GAAG5C,CAAI,GAAA,CAAA,CAAA;AACzB,QAAA,IAAI8/F,WAAa,EAAA;YACf5/C,IAAI,CAAC,EAAE,GAAGj7C,CAAAA,CAAAA;YACVi7C,IAAI,CAAC,EAAE,GAAGlgD,CAAAA,CAAAA;AACVmgG,YAAAA,UAAAA,CAAWjgD,MAAMA,IAAMp6B,EAAAA,KAAAA,CAAAA,CAAAA;AACvB+5E,YAAAA,SAAS,CAACj9F,KAAAA,EAAAA,CAAQ,GAAGyF,EAAAA,GAAK,CAAC63C,IAAI,CAAC,CAAE,CAAA,GAAG,CAAA,IAAK,CAAI6/C,GAAAA,EAAAA,CAAAA;AAC9CF,YAAAA,SAAS,CAACj9F,KAAAA,EAAAA,CAAQ,GAAG0F,EAAAA,GAAK,CAAC43C,IAAI,CAAC,CAAE,CAAA,GAAG,CAAA,IAAK,CAAI8/C,GAAAA,EAAAA,CAAAA;SACzC,MAAA;AACLH,YAAAA,SAAS,CAACj9F,KAAQ,EAAA,CAAA,GAAG,CAACqC,CAAAA,GAAI,CAAA,IAAK,CAAA,CAAA;AAC/B46F,YAAAA,SAAS,CAACj9F,KAAQ,EAAA,CAAA,GAAG,CAAC5C,CAAAA,GAAI,CAAA,IAAK,CAAA,CAAA;AACjC,SAAA;QACA4C,KAAS88F,IAAAA,WAAAA,CAAAA;AACX,KAAA;AACF,CAAA;AAEA;;;IAIA,SAASU,yBAA0B3Z,KAAwB,EAAA;AACzD,IAAA,IAAMxiB,aAAmC,EAAE,CAAA;;AAG3C,IAAA,IAAI,QAAQwiB,KAAO,EAAA;AACjBA,QAAAA,KAAAA,CAAM4Z,EAAE,CAACvxF,OAAO,CAACuxF,SAAAA,EAAAA,EAAAA;AACfp8B,YAAAA,UAAAA,CAAWljE,IAAI,CAAC;gBACdoW,CAAG,EAAA;oBAAC4L,SAAc,CAACu9E,YAAY;AAAED,oBAAAA,EAAAA,CAAGlpF,CAAC;AAAC,iBAAA;gBACtChO,CAAG,EAAA;oBAAC4Z,SAAc,CAACw9E,YAAY;AAAEF,oBAAAA,EAAAA,CAAGl3F,CAAC;AAAC,iBAAA;AACxC,aAAA,CAAA,CAAA;AACF,SAAA,CAAA,CAAA;KACK,MAAA,IAAI,OAAOs9E,KAAO,EAAA;AACvBxiB,QAAAA,UAAAA,CAAWljE,IAAI,CAAC;YACdoW,CAAG,EAAA;gBAAC4L,SAAc,CAACu9E,YAAY;gBAAE7Z,KAAMxmF,CAAAA,CAAC,CAACkX,CAAC;AAAC,aAAA;YAC3ChO,CAAG,EAAA;gBAAC4Z,SAAc,CAACw9E,YAAY;gBAAE9Z,KAAMxmF,CAAAA,CAAC,CAACkJ,CAAC;AAAC,aAAA;AAC7C,SAAA,CAAA,CAAA;KACK,MAAA;AACL86D,QAAAA,UAAAA,CAAWljE,IAAI,CAAC0lF,KAAAA,CAAAA,CAAAA;AAClB,KAAA;IAEA,OAAOxiB,UAAAA,CAAAA;AACT,CAAA;AAEO,SAASu8B,kBAAAA,CAAoB/Z,KAAwB,EAAEqZ,WAAsB,EAAA;AAClF,IAAA,IAAMW,QAAQ,EAAE,CAAA;;AAEhB,IAAA,IAAMx8B,aAAam8B,wBAAyB3Z,CAAAA,KAAAA,CAAAA,CAAAA;AAC5C,IAAA,IAAIyY,SAAY,GAAA,CAAA,CAAA;AAChB,IAAA,IAAIjN,MAAS,GAAA,CAAA,CAAA;AACb,IAAA,IAAIrvF,KAAQ,GAAA,CAAA,CAAA;AAEZ,IAAA,IAAK,IAAIxD,CAAI,GAAA,CAAA,EAAGA,IAAI6kE,UAAWplE,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;QAC1C,IAAMmwC,QAAAA,GAAW00B,UAAU,CAAC7kE,CAAE,CAAA,CAAA;QAC9B,IAAM4R,IAAAA,GAAO2uF,qBAAqBpwD,QAAU,EAAA;YAAE2vD,SAAAA,EAAAA,SAAAA;YAAWY,WAAAA,EAAAA,WAAAA;AAAY,SAAA,CAAA,CAAA;AAErEZ,QAAAA,SAAAA,IAAaluF,IAAKihF,CAAAA,MAAM,CAACpzF,MAAM,GAAG,CAAA,CAAA;AAClC4hG,QAAAA,KAAAA,CAAM1/F,IAAI,CAACiQ,IAAAA,CAAAA,CAAAA;QACXihF,MAAUjhF,IAAAA,IAAAA,CAAKihF,MAAM,CAACpzF,MAAM,CAAA;QAC5B+D,KAASoO,IAAAA,IAAAA,CAAKpO,KAAK,CAAC/D,MAAM,CAAA;AAC5B,KAAA;IAEA,IAAI4hG,KAAAA,CAAM5hG,MAAM,KAAK,CAAG,EAAA;QACtB,OAAO4hG,KAAK,CAAC,CAAE,CAAA,CAAA;AACjB,KAAA;IAEA,IAAMC,UAAAA,GAAa,IAAI7oD,YAAao6C,CAAAA,MAAAA,CAAAA,CAAAA;IACpC,IAAMD,SAAAA,GAAY,IAAI75C,WAAYv1C,CAAAA,KAAAA,CAAAA,CAAAA;;AAGlC,IAAA,IAAK,IAAIxD,EAAAA,GAAI,CAAGupF,EAAAA,UAAAA,GAAa,CAAGgY,EAAAA,GAAAA,GAAM,CAAGvhG,EAAAA,EAAAA,GAAIqhG,KAAK,CAACrhG,EAAE,CAAA,EAAEA,EAAK,EAAA,CAAA;QAC1D,IAAM4R,KAAAA,GAAOyvF,KAAK,CAACrhG,EAAE,CAAA,CAAA;AAErBshG,QAAAA,UAAAA,CAAWt8F,GAAG,CAAC4M,KAAKihF,CAAAA,MAAM,EAAEtJ,UAAAA,CAAAA,CAAAA;QAC5BA,UAAc33E,IAAAA,KAAAA,CAAKihF,MAAM,CAACpzF,MAAM,CAAA;AAChCmzF,QAAAA,SAAAA,CAAU5tF,GAAG,CAAC4M,KAAKpO,CAAAA,KAAK,EAAE+9F,GAAAA,CAAAA,CAAAA;QAC1BA,GAAO3vF,IAAAA,KAAAA,CAAKpO,KAAK,CAAC/D,MAAM,CAAA;AAC1B,KAAA;IAEA,OAAO;QACLozF,MAAQyO,EAAAA,UAAAA;QACR99F,KAAOovF,EAAAA,SAAAA;AACT,KAAA,CAAA;AACF,CAAA;AAEO,SAASmO,UAAYl2F,CAAAA,GAAoB,EAAE22F,IAAU,EAAEC,UAAkB,EAAA;IAC9E,IAAMjiG,CAAAA,GAAIgF,IAAKsiB,CAAAA,GAAG,CAAC26E,UAAAA,CAAAA,CAAAA;IACnB,IAAM13F,CAAAA,GAAIvF,IAAKoiB,CAAAA,GAAG,CAAC66E,UAAAA,CAAAA,CAAAA;IACnB,IAAM57F,CAAAA,GAAI27F,IAAI,CAAC,CAAE,CAAA,CAAA;IACjB,IAAM5gG,CAAAA,GAAI4gG,IAAI,CAAC,CAAE,CAAA,CAAA;AAEjB32F,IAAAA,GAAG,CAAC,CAAA,CAAE,GAAGrL,CAAAA,GAAIqG,IAAIkE,CAAInJ,GAAAA,CAAAA,CAAAA;AACrBiK,IAAAA,GAAG,CAAC,CAAE,CAAA,GAAG,CAACd,CAAAA,GAAIlE,IAAIrG,CAAIoB,GAAAA,CAAAA,CAAAA;IAEtB,OAAOiK,GAAAA,CAAAA;AACT,CAAA;AAEA,SAASg2F,gBACPh2F,CAAAA,GAAS,EACTrK,CAAS,EACTstC,EAAiC,EACjCC,EAAiC,EACjC2zD,IAAY,EACZC,IAAY,EACZC,IAAY,EACZC,IAAY,EAAA;AAEZ,IAAA,IAAMC,MAAM,CAAIthG,GAAAA,CAAAA,CAAAA;IAChB,IAAMiF,CAAAA,GAAIq8F,MAAMA,GAAMA,GAAAA,GAAAA,CAAAA;IACtB,IAAMp8F,CAAAA,GAAI,CAAIlF,GAAAA,CAAAA,GAAIshG,GAAMA,GAAAA,GAAAA,CAAAA;IACxB,IAAMtiG,CAAAA,GAAI,CAAIgB,GAAAA,CAAAA,GAAIA,CAAIshG,GAAAA,GAAAA,CAAAA;IACtB,IAAMjiG,CAAAA,GAAIW,IAAIA,CAAIA,GAAAA,CAAAA,CAAAA;AAElBqK,IAAAA,GAAG,CAAC,CAAA,CAAE,GAAGpF,CAAAA,GAAIqoC,EAAE,CAAC,CAAA,CAAE,GAAGpoC,CAAAA,GAAIg8F,OAAOliG,CAAIoiG,GAAAA,IAAAA,GAAO/hG,CAAIkuC,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AACpDljC,IAAAA,GAAG,CAAC,CAAA,CAAE,GAAGpF,CAAAA,GAAIqoC,EAAE,CAAC,CAAA,CAAE,GAAGpoC,CAAAA,GAAIi8F,OAAOniG,CAAIqiG,GAAAA,IAAAA,GAAOhiG,CAAIkuC,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;IAEpD,OAAOljC,GAAAA,CAAAA;AACT;;ACzLO,IAAA,KAAMk3F,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,KAAAA,CAcE/+F,OAAqB,EAAA;AAChC,QAAA,IAAQkM,IAA+ClM,GAAAA,OAAAA,CAA/CkM,IAAMwwC,EAAAA,QAAAA,GAAyC18C,OAAzC08C,CAAAA,QAAAA,EAAUkM,KAA+B5oD,GAAAA,OAAAA,CAA/B4oD,KAAOo2C,EAAAA,MAAAA,GAAwBh/F,OAAxBg/F,CAAAA,MAAAA,EAAQC,cAAgBj/F,OAAhBi/F,CAAAA,WAAAA,CAAAA;AAEvC,QAAA,IAAI,CAAC/yF,IAAI,GAAG,CAACA,IAAQ,IAAA,CAAA,CAAA;AACrB,QAAA,IAAI,CAACwwC,QAAQ,GAAG,CAACA,QAAY,IAAA,CAAA,CAAA;QAC7B,IAAI,CAACkM,KAAK,GAAQhtD,aAALgtD,KAAiBzG,EAAAA,WAAAA,CAAAA,GAAcyG,QAAQlB,iBAAkBkB,CAAAA,KAAAA,CAAAA,CAAAA;AACtE,QAAA,IAAI,CAACo2C,MAAM,GAAG,CAACA,MAAUr8F,IAAAA,QAAAA,CAAAA;AACzB,QAAA,IAAI,CAACs8F,WAAW,GAAGt9F,KAAMs9F,CAAAA,WAAAA,CAAAA,GAAe,IAAI,CAACA,WAAAA,CAAAA;AAC7C,QAAA,IAAI,CAACjqB,KAAK,EAAA,CAAA;;AAtBD+pB,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AAyBXG,IAAAA,MAAAA,CAAAA,mBAcC,GAdDA,SAAAA,mBAAqBC,CAAAA,UAAkB,EAAE1oD,QAAgB,EAAA;QACvD,IAAM1zC,EAAAA,GAAKo8F,aAAa,IAAI,CAACjzF,IAAI,GAAG,IAAI,CAACihF,GAAG,CAAA;AAE5C,QAAA,IAAIpqF,EAAK,GAAA,IAAI,CAAC25C,QAAQ,GAAG,IAAI,CAACl8C,KAAK,IAAI,IAAI,CAAC4+F,cAAc,GAAG,CAAG,EAAA;AAC9D,YAAA,IAAI,CAACA,cAAc,EAAA,CAAA;AACnB,YAAA,IAAI,CAAC5+F,KAAK,EAAA,CAAA;AAEV,YAAA,OAAOgB,KAAKpB,MAAM,EAAA,IAAM,IAAI,CAAC6+F,WAAW,GAAG;gBACzCz+F,KAAO,EAAA,IAAI,CAACA,KAAK;gBACjBmoD,KAAO,EAAA,CAAA,GAAI,IAAI,CAACjM,QAAQ;AACxBkM,gBAAAA,KAAAA,EAAO,IAAI,CAACA,KAAK,CAACrmC,QAAQ,CAACk0B,QAAAA,CAAAA;AAC3B4oD,gBAAAA,UAAAA,EAAY,IAAI,CAACL,MAAM,GAAG,IAAI,CAACI,cAAc,GAAG,CAAA;aAC9C,GAAA,IAAA,CAAA;AACN,SAAA;AACF,KAAA,CAAA;IAEApqB,MAAAA,CAAAA,KAIC,GAJDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAACoqB,cAAc,GAAG,IAAI,CAACJ,MAAM,CAAA;QACjC,IAAI,CAACx+F,KAAK,GAAG,CAAA,CAAA;QACb,IAAI,CAAC2sF,GAAG,GAAG,CAAA,CAAA;AACb,KAAA,CAAA;IAEA/oF,MAAAA,CAAAA,KAUC,GAVDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAMpE,OAAU,GAAA;YACdkM,IAAM,EAAA,IAAI,CAACA,IAAI;YACfwwC,QAAU,EAAA,IAAI,CAACA,QAAQ;YACvBkM,KAAO,EAAA,IAAI,CAACA,KAAK;YACjBo2C,MAAQ,EAAA,IAAI,CAACA,MAAM;YACnBC,WAAa,EAAA,IAAI,CAACA,WAAW;AAC/B,SAAA,CAAA;AAEA,QAAA,OAAO,IAxDEF,KAwDQ/+F,CAAAA,OAAAA,CAAAA,CAAAA;AACnB,KAAA,CAAA;AAzDW++F,IAAAA,OAAAA,KAAAA,CAAAA;AA0DZ,CAAA,EAAA;;ACpEM,IAAA,QAAMO,GAAN,SAAMA,QAAAA,CAKT,OAAiB,EAAA;SAAVplB,OAAAA,GAAAA,OAAAA,CAAAA;AAEV,CAAA,CAAA;AAEM,IAAA,IAAMqlB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,IAAAA,CAMT,IAA6C,EAAA;aAA5BvyF,IAAAA,GAAAA,IAAAA,CAAAA;aAHnBvQ,MAAS,GAAA,CAAA,CAAA;;AAHE8iG,IAAAA,IAAAA,MAAAA,GAAAA,IAAAA,CAAAA,SAAAA,CAAAA;AASXC,IAAAA,MAAAA,CAAAA,iBAYC,GAZDA,SAAAA,iBAAAA,CAAmBp1B,MAAyB,EAAA;QAC1C,IAAIvsD,IAAAA,GAAO,IAAI,CAACimC,KAAK,CAAA;AAErB,QAAA,IAAIjmC,IAAM,EAAA;YACR,GAAG;gBACD,IAAIusD,MAAAA,CAAOvsD,IAAKq8D,CAAAA,OAAO,CAAG,EAAA;oBACxB,OAAOr8D,IAAAA,CAAAA;AACT,iBAAA;;;aAGOA,OAAAA,IAAAA,GAAOA,IAAK5f,CAAAA,IAAI,EAAE;AAC7B,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ+6F,UAUP,GAVD,SAAQA,UAAYv2F,CAAAA,CAAc,EAAExE,IAAiB,EAAA;QACnD,IAAMyE,CAAAA,GAAID,EAAExE,IAAI,CAAA;AAEhBwE,QAAAA,CAAAA,CAAExE,IAAI,GAAGA,IAAAA,CAAAA;AACTA,QAAAA,IAAAA,CAAKwhG,GAAG,GAAGh9F,CAAAA,CAAAA;AACXxE,QAAAA,IAAAA,CAAKA,IAAI,GAAGyE,CAAAA,CAAAA;AACZ,QAAA,IAAIA,CAAG,EAAA;AACLA,YAAAA,CAAAA,CAAE+8F,GAAG,GAAGxhG,IAAAA,CAAAA;AACV,SAAA;;AAEF,KAAA,CAAA;AAEAyhG,IAAAA,MAAAA,CAAAA,SA8BC,GA9BDA,SAAAA,SAAAA,CAAWxlB,OAAU,EAAA;QACnB,IAAMr8D,IAAAA,GAAO,IAAIyhF,QAASplB,CAAAA,OAAAA,CAAAA,CAAAA;AAE1B,QAAA,IAAI,CAACz9E,MAAM,EAAA,CAAA;AACX,QAAA,IAAI,IAAI,CAACA,MAAM,KAAK,CAAG,EAAA;AACrB,YAAA,OAAO,IAAI,CAACqnD,KAAK,GAAG,IAAI,CAACF,IAAI,GAAG/lC,IAAAA,CAAAA;AAClC,SAAA;QACA,IAAIi+D,OAAAA,GAAU,IAAI,CAACh4B,KAAK,CAAA;AAExB,QAAA,MAAOg4B,OAAS,CAAA;YACd,IAAI,IAAI,CAAC9uE,IAAI,CAAC8uE,OAAAA,CAAQ5B,OAAO,EAAEr8D,IAAAA,CAAKq8D,OAAO,CAAA,IAAK,CAAG,EAAA;gBACjD,IAAI4B,OAAAA,CAAQ79E,IAAI,EAAE;AAChB69E,oBAAAA,OAAAA,GAAUA,QAAQ79E,IAAI,CAAA;iBACjB,MAAA;oBACL,IAAI,CAAC+6F,UAAU,CAACld,OAASj+D,EAAAA,IAAAA,CAAAA,CAAAA;oBAEzB,OAAO,IAAI,CAAC+lC,IAAI,GAAG/lC,IAAAA,CAAAA;AACrB,iBAAA;aACK,MAAA;gBACL,IAAIi+D,OAAAA,CAAQ2jB,GAAG,EAAE;AACf,oBAAA,IAAI,CAACzG,UAAU,CAACld,OAAAA,CAAQ2jB,GAAG,EAAE5hF,IAAAA,CAAAA,CAAAA;iBACxB,MAAA;oBACL,IAAI,CAACimC,KAAK,GAAGjmC,IAAAA,CAAAA;AACbA,oBAAAA,IAAAA,CAAK5f,IAAI,GAAG69E,OAAAA,CAAAA;AACZA,oBAAAA,OAAAA,CAAQ2jB,GAAG,GAAG5hF,IAAAA,CAAAA;AAChB,iBAAA;gBAEA,OAAOA,IAAAA,CAAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA8hF,IAAAA,MAAAA,CAAAA,QA6BC,GA7BDA,SAAAA,QAAAA,CAAUzlB,OAAU,EAAA;QAClB,IAAMr8D,IAAAA,GAAO,IAAIyhF,QAASplB,CAAAA,OAAAA,CAAAA,CAAAA;AAE1B,QAAA,IAAI,CAACz9E,MAAM,EAAA,CAAA;AACX,QAAA,IAAI,IAAI,CAACA,MAAM,KAAK,CAAG,EAAA;AACrB,YAAA,OAAO,IAAI,CAACmnD,IAAI,GAAG,IAAI,CAACE,KAAK,GAAGjmC,IAAAA,CAAAA;AAClC,SAAA;QACA,IAAIi+D,OAAAA,GAAU,IAAI,CAACl4B,IAAI,CAAA;AAEvB,QAAA,MAAOk4B,OAAS,CAAA;YACd,IAAI,IAAI,CAAC9uE,IAAI,CAAC6Q,IAAAA,CAAKq8D,OAAO,EAAE4B,OAAAA,CAAQ5B,OAAO,CAAA,IAAK,CAAG,EAAA;AACjD,gBAAA,IAAI,IAAI,CAACp2B,KAAK,KAAKg4B,OAAS,EAAA;AAC1BA,oBAAAA,OAAAA,CAAQ2jB,GAAG,GAAG5hF,IAAAA,CAAAA;AACdA,oBAAAA,IAAAA,CAAK5f,IAAI,GAAG69E,OAAAA,CAAAA;oBAEZ,OAAO,IAAI,CAACh4B,KAAK,GAAGjmC,IAAAA,CAAAA;iBACf,MAAA;;AAELi+D,oBAAAA,OAAAA,GAAUA,QAAQ2jB,GAAG,CAAA;AACvB,iBAAA;aACK,MAAA;gBACL,IAAI,CAACzG,UAAU,CAACld,OAASj+D,EAAAA,IAAAA,CAAAA,CAAAA;AACzB,gBAAA,IAAIi+D,OAAY,KAAA,IAAI,CAACl4B,IAAI,EAAE;oBACzB,IAAI,CAACA,IAAI,GAAG/lC,IAAAA,CAAAA;AACd,iBAAA;gBAEA,OAAOA,IAAAA,CAAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEAo7E,IAAAA,MAAAA,CAAAA,UA8BC,GA9BDA,SAAAA,UAAAA,CAAYp7E,IAAiB,EAAA;QAC3B,IAAIi+D,OAAAA,GAAU,IAAI,CAACh4B,KAAK,CAAA;AAExB,QAAA,IAAI,CAACrnD,MAAM,EAAA,CAAA;AACX,QAAA,IAAIq/E,YAAYj+D,IAAM,EAAA;;AAEpB,YAAA,IAAMpb,IAAI,IAAI,CAACqhD,KAAK,GAAGg4B,QAAQ79E,IAAI,CAAA;AAEnC,YAAA,IAAIwE,CAAG,EAAA;AACLA,gBAAAA,CAAAA,CAAEg9F,GAAG,GAAG,IAAA,CAAA;AACV,aAAA;SACK,MAAA,IAAI,CAAC3jB,OAAAA,GAAU,IAAI,CAACl4B,IAAI,MAAM/lC,IAAM,EAAA;;AAEzC,YAAA,IAAMpb,KAAI,IAAI,CAACmhD,IAAI,GAAGk4B,QAAQ2jB,GAAG,CAAA;AAEjC,YAAA,IAAIh9F,EAAG,EAAA;AACLA,gBAAAA,EAAAA,CAAExE,IAAI,GAAG,IAAA,CAAA;AACX,aAAA;AACF,SAAA,MAAO,IAAI4f,IAAM,EAAA;YACf,IAAM4hF,GAAAA,GAAM5hF,KAAK4hF,GAAG,CAAA;YACpB,IAAMxhG,IAAAA,GAAO4f,KAAK5f,IAAI,CAAA;;AAGtBwhG,YAAAA,GAAAA,CAAIxhG,IAAI,GAAGA,IAAAA,CAAAA;AACX,YAAA,IAAIA,IAAM,EAAA;AACRA,gBAAAA,IAAAA,CAAKwhG,GAAG,GAAGA,GAAAA,CAAAA;AACb,aAAA;AACF,SAAA;AACA5hF,QAAAA,IAAAA,CAAK4hF,GAAG,GAAG,IAAA,CAAA;AACX5hF,QAAAA,IAAAA,CAAK5f,IAAI,GAAG,IAAA,CAAA;AACd,KAAA,CAAA;AAEAyO,IAAAA,MAAAA,CAAAA,OAWC,GAXDA,SAAAA,OAAS+1C,CAAAA,IAAyC,EAAEm9C,OAAa,EAAA;QAC/D,IAAI/hF,IAAAA,GAAO,IAAI,CAACimC,KAAK,CAAA;AACrB,QAAA,IAAI9mD,CAAI,GAAA,CAAA,CAAA;AAER,QAAA,IAAI6gB,IAAM,EAAA;YACR,GAAG;AACD4kC,gBAAAA,IAAAA,CAAKhkD,IAAI,CAACmhG,OAAAA,IAAW,IAAI,EAAE/hF,IAAAA,CAAKq8D,OAAO,EAAEl9E,CAAAA,EAAAA,CAAAA,CAAAA;;;aAGlC6gB,OAAAA,IAAAA,GAAOA,IAAK5f,CAAAA,IAAI,EAAE;AAC7B,SAAA;AACF,KAAA,CAAA;AAEA4hG,IAAAA,MAAAA,CAAAA,cAWC,GAXDA,SAAAA,cAAgBp9C,CAAAA,IAAyC,EAAEm9C,OAAa,EAAA;QACtE,IAAI/hF,IAAAA,GAAO,IAAI,CAAC+lC,IAAI,CAAA;AACpB,QAAA,IAAI5mD,CAAI,GAAA,IAAI,CAACP,MAAM,GAAG,CAAA,CAAA;AAEtB,QAAA,IAAIohB,IAAM,EAAA;YACR,GAAG;AACD4kC,gBAAAA,IAAAA,CAAKhkD,IAAI,CAACmhG,OAAAA,IAAW,IAAI,EAAE/hF,IAAAA,CAAKq8D,OAAO,EAAEl9E,CAAAA,EAAAA,CAAAA,CAAAA;;;aAGlC6gB,OAAAA,IAAAA,GAAOA,IAAK4hF,CAAAA,GAAG,EAAE;AAC5B,SAAA;AACF,KAAA,CAAA;AAEAK,IAAAA,MAAAA,CAAAA,cAaC,GAbDA,SAAAA,cAAAA,CAAgBt/F,KAAa,EAAA;AAC3B,QAAA,IAAIxD,CAAI,GAAA,CAAA,EAAGuqB,GAAM,GAAA,IAAI,CAACu8B,KAAK,CAAA;QAE3B,IAAI,CAACv8B,OAAO/mB,KAAS,IAAA,IAAI,CAAC/D,MAAM,IAAI+D,QAAQ,CAAG,EAAA;YAC7C,OAAO,IAAA,CAAA;AACT,SAAA;AAEA,QAAA,MAAOxD,IAAIwD,KAAO,CAAA;AAChB+mB,YAAAA,GAAAA,GAAMA,IAAItpB,IAAI,CAAA;AACdjB,YAAAA,CAAAA,EAAAA,CAAAA;AACF,SAAA;QAEA,OAAOuqB,GAAAA,CAAAA;AACT,KAAA,CAAA;AAzKWg4E,IAAAA,OAAAA,IAAAA,CAAAA;AA2KZ,CAAA,EAAA;;ACpLM,IAAMQ,cAAc,cAAc;AAElC,IAAMC,+BAA+B,iBAAiB;AAC7D;AACO,IAAMC,gCAAgC,mBAAmB;AAChE;AACO,IAAMC,wBAAwB,wBAAwB;AAE7D,IAAMjpC,SAA0E,EAAC,CAAA;AAEjF;;;;IAKO,SAASkpC,SAAAA,CAAsElhG,IAAY,EAAA;IAChG,OAAOg4D,MAAM,CAACh4D,IAAK,CAAA,CAAA;AACrB,CAAA;AAEA;;;;;AAKC,IACM,SAASmhG,SAAsEnhG,CAAAA,IAAY,EAAElE,KAAQ,EAAA;IAC1G,OAAOk8D,MAAM,CAACh4D,IAAAA,CAAK,GAAGlE,KAAAA,CAAAA;AACxB;;ACmBA,IAAMslG,OAAO,IAAIz5F,OAAAA,EAAAA,CAAAA;AACjB,IAAM05F,OAAO,IAAI15F,OAAAA,EAAAA,CAAAA;AAEV,IAAA,SAAM25F,iBAAD,WAAL;aAAMA,SAcT9rF,CAAAA,MAAc,EACdolB,KAAqB,EAAA;AALf2mE,QAAAA,IAAAA,CAAAA,UAAAA,GAAwB,EAAE,CAAA;AAOhC,QAAA,IACEvL,iBAiBEp7D,GAAAA,KAAAA,CAjBFo7D,iBACAwL,EAAAA,cAAAA,GAgBE5mE,MAhBF4mE,cACAC,EAAAA,aAAAA,GAeE7mE,KAfF6mE,CAAAA,aAAAA,EAAAA,0BAAAA,GAeE7mE,KAdFm7D,CAAAA,mBAAAA,EAAAA,mBAAsBttC,GAAAA,0BAAAA,KAAAA,KAAAA,CAAAA,GAAAA,iBAAAA,CAAkB,iCACxCi5C,cAaE9mE,GAAAA,KAAAA,CAbF8mE,cACA1hG,EAAAA,IAAAA,GAYE46B,KAZF56B,CAAAA,IAAAA,EACA2hF,SAWE/mD,GAAAA,KAAAA,CAXF+mD,WACAxlB,QAUEvhC,GAAAA,KAAAA,CAVFuhC,QACA0B,EAAAA,QAAAA,GASEjjC,MATFijC,QACA4hB,EAAAA,IAAAA,GAQE7kD,KARF6kD,CAAAA,IAAAA,EAAAA,iBAAAA,GAQE7kD;AANF+mE,QAAAA,UAAAA,EAAAA,UAAa,GAAA,iBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,GAAA,iBAAA,EACzBjsC,OAKE96B,GAAAA,KAAAA,CALF86B,OACAksB,EAAAA,oBAAAA,GAIEhnD,KAJFgnD,CAAAA,oBAAAA,EACAggB,qBAGEhnE,GAAAA,KAAAA,CAHFgnE,qBACApqD,EAAAA,QAAAA,GAEE5c,KAFF4c,CAAAA,QAAAA,EACAnS,SACEzK,KADFyK,CAAAA,MAAAA,CAAAA;QAGF,IAA0B7vB,qBAAAA,GAAAA,OAAOyzD,aAAa,EAAtCC,SAAkB1zD,qBAAlB0zD,CAAAA,MAAAA,EAAQ5F,QAAU9tD,qBAAV8tD,CAAAA,KAAAA,CAAAA;AAChB,QAAA,IAAMu+B,qBAAqBt/F,IAAK+B,CAAAA,GAAG,CAACs2B,KAAAA,CAAMinE,kBAAkB,EAAE,CAAA,CAAA,CAAA;AAC9D,QAAA,IAAMC,YAAeh6C,GAAAA,kBAAAA,EAAAA,CAAAA;QACrB,IAAMi6C,mBAAAA,GAAsB74B,MAAOgF,CAAAA,iBAAiB,GAAG,CAAA,CAAA;AACvD,QAAA,IAAM,GAAU14D,GAAAA,CAAAA,iBAAAA,MAAU,GAAA,EAAC,EAAnB8iE,GAAAA,CAAAA;AACR,QAAA,IAAM0pB,gBAAqB,EAAC,CAAA;;AAE5B,QAAA,IAAMC,aAAgB,GAAA,CAAA,CAAA;AACtB,QAAA,IAAM1mC,MAAuB,GAAA;AAC3B,YAAA;AAAC,gBAAA,uBAAA;AAAyBwmC,gBAAAA,mBAAAA;AAAoB,aAAA;AAC9C,YAAA;AAAC,gBAAA,sBAAA;AAAwBE,gBAAAA,aAAAA;AAAc,aAAA;AACvC,YAAA;AAAC,gBAAA,YAAA;gBAAc3pB,GAAQliC,KAAAA,yBAAAA;AAA0B,aAAA;AAClD,SAAA,CAAA;AACD,QAAA,IAAM8rD,yBAAyBT,aAAgB,GAAA,EAAA,CAAA;AAC/C,QAAA,IAAIU,aAAgB,GAAA,CAAA,CAAA;AAEpB,QAAA,IAAInM,iBAAmB,EAAA;AACrBz6B,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,qBAAA;AAAuB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;YACzCyiG,aAAiB,IAAA,CAAA,CAAA;AACjBH,YAAAA,aAAAA,CAAcI,kBAAkB,GAAG7tC,OAAAA,CAAQ4B,cAAc,CAAC3gD,QAAQ5F,qBAAsBomF,CAAAA,iBAAAA,CAAAA,CAAAA,CAAAA;AAC1F,SAAA;AACA,QAAA,IAAIwL,cAAgB,EAAA;AAClBjmC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,kBAAA;AAAoB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AACtCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACtBH,YAAAA,aAAAA,CAAcK,eAAe,GAAG9tC,OAAAA,CAAQ4B,cAAc,CAAC3gD,QAAQ5F,qBAAsB4xF,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA;AACvF,SAAA;AACA,QAAA,IAAIU,sBAAwB,EAAA;AAC1B3mC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,kBAAA;AAAoB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACnCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;SACjB,MAAA;YACLH,aAAcM,CAAAA,WAAW,GAAG,IAAI9rD,YAAairD,CAAAA,aAAAA,CAAAA,CAAAA;AAC/C,SAAA;AAEAO,QAAAA,aAAAA,CAAcO,yBAAyB,GAAGxM,mBAAoBzyC,CAAAA,SAAS,CAACw+C,YAAAA,CAAAA,CAAAA;QACxE,IAAMU,eAAAA,GAAkBd,cAAep+C,CAAAA,SAAS,CAACw+C,YAAAA,CAAAA,CAAAA;AAEjDvmC,QAAAA,MAAAA,CAAO77D,IAAI,CACT;AAAC,YAAA,wBAAA;AAA0BoiG,YAAAA,YAAAA,CAAavgG,KAAK;SAAC,EAC9C;AAAC,YAAA,0BAAA;AAA4BugG,YAAAA,YAAAA,CAAax9F,GAAG;AAAC,SAAA,CAAA,CAAA;AAEhD,QAAA,IAAIy9F,uBAAuBE,aAAe,EAAA;YACxC,IAAM3oC,GAAAA,GAAMxD,wBAAyBtgD,CAAAA,MAAAA,EAAQ0tC,WAAYQ,CAAAA,UAAU,CAACo+C,YAAc,EAAA,IAAA,CAAA,EAAsBA,YAAavgG,CAAAA,KAAK,EAAE,CAAA,CAAA,CAAA;AAE5HygG,YAAAA,aAAAA,CAAcS,mBAAmB,GAAGnpC,GAAAA,CAAAA;SAC/B,MAAA;AACL0oC,YAAAA,aAAAA,CAAcU,aAAa,GAAGx/C,WAAYQ,CAAAA,UAAU,CAACo+C,YAAAA,CAAAA,CAAAA;AACvD,SAAA;AAEA,QAAA,IAAMt8B,MAASm9B,GAAAA,SAAAA,CAAAA;AACf,QAAA,IAAM1+B,QAAW2+B,GAAAA,YAAAA,CAAAA;AACjB,QAAA,IAAMC,GAAsB,GAAA;YAC1BhnC,MAAQ,EAAA;gBACN2J,MAAAA,EAAAA,MAAAA;gBACAvB,QAAAA,EAAAA,QAAAA;gBACA1I,MAAAA,EAAAA,MAAAA;AACAoK,gBAAAA,WAAAA,EAAarC,UAAU,CAAInI,GAAAA,WAAAA,CAAYyK,KAAK,GAAGzK,YAAY2nC,KAAK;gBAChE1gB,MAAQ,EAAA,IAAA;AACRpiF,gBAAAA,IAAAA,EAAM,QAASA,GAAAA,IAAAA;gBACf+iG,OAAS,EAAC,SAAMZ,aAAc,GAAA,GAAA,GAAGL,aAAavgG,KAAK,GAAC,GAAGugG,GAAAA,YAAAA,CAAax9F,GAAG;AACzE,aAAA;AACF,SAAA,CAAA;QAEA,IAAM0+F,cAAAA,GAAiBnB,qBAAqBJ,aAAgB,GAAA,CAAA,CAAA;AAC5D,QAAA,IAAMwB,gBAAmB,GAACpB,CAAAA,kBAAAA,GAAqB,CAAA,IAAKJ,aAAAA,CAAAA;QACpD,IAAMyB,GAAAA,GAAM1sD,aAAan0C,iBAAiB,CAAA;AAC1C,QAAA,IAAM8gG,MAAM,EAAKD,GAAAA,GAAAA,CAAAA;AACjB,QAAA,IAAME,eAAiC,GAAA;YACrCx7B,UAAY,EAAA;gBACVy7B,MAAQ,EAAA;oBAAE/gG,IAAM,EAAA,CAAA;oBAAGuuF,MAAQsS,EAAAA,GAAAA;oBAAKxzF,IAAM,EAAA,IAAI6mC,aAAawsD,cAAiB,GAAA,EAAA,CAAA;AAAI,iBAAA;gBAC5EM,KAAO,EAAA;oBAAEhhG,IAAM,EAAA,CAAA;oBAAGuuF,MAAQsS,EAAAA,GAAAA;AAAKviG,oBAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;oBAAKK,UAAY,EAAA,QAAA;AAAS,iBAAA;gBACrEC,KAAO,EAAA;oBAAElhG,IAAM,EAAA,CAAA;oBAAGuuF,MAAQsS,EAAAA,GAAAA;AAAKviG,oBAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;oBAAKK,UAAY,EAAA,QAAA;AAAS,iBAAA;gBACrE17B,IAAM,EAAA;oBAAEvlE,IAAM,EAAA,CAAA;oBAAGuuF,MAAQsS,EAAAA,GAAAA;AAAKviG,oBAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;oBAAKK,UAAY,EAAA,QAAA;AAAS,iBAAA;;gBAEpEE,KAAO,EAAA;oBAAEnhG,IAAM,EAAA,CAAA;AAAGqN,oBAAAA,IAAAA,EAAM,IAAI6mC,YAAawsD,CAAAA,cAAAA,CAAAA;AAAgB,iBAAA;;gBAEzDU,IAAM,EAAA;oBAAEphG,IAAM,EAAA,CAAA;oBAAGqN,IAAM,EAAA,IAAI6mC,aAAawsD,cAAiB,GAAA,CAAA,CAAA;AAAG,iBAAA;AAC9D,aAAA;YACAhhB,OAAS,EAAA;gBAAEryE,IAAM,EAAA,IAAImnC,YAAYksD,cAAiB,GAAA,CAAA,CAAA;AAAG,aAAA;AACrDl7B,YAAAA,SAAAA,EAAWm7B,gBAAmB,GAAA,CAAA;AAC9BjjG,YAAAA,IAAAA,EAAM,QAASA,GAAAA,IAAAA;AACf2jG,YAAAA,WAAAA,EAAah1C,UAAUi1C,YAAY;AACrC,SAAA,CAAA;AAEA,QAAA,IAAI1B,sBAAwB,EAAA;YAC1BkB,eAAgBx7B,CAAAA,UAAU,CAACi8B,WAAW,GAAG;gBAAEvhG,IAAM,EAAA,CAAA;AAAGqN,gBAAAA,IAAAA,EAAM,IAAI6mC,YAAawsD,CAAAA,cAAAA,CAAAA;AAAgB,aAAA,CAAA;SACtF,MAAA;YACL,IAAMrS,SAAAA,GAAY,IAAIn6C,YAAawsD,CAAAA,cAAAA,CAAAA,CAAAA;YAEnCI,eAAgBx7B,CAAAA,UAAU,CAACk8B,gBAAgB,GAAG;gBAAExhG,IAAM,EAAA,CAAA;gBAAGqN,IAAMghF,EAAAA,SAAAA;AAAU,aAAA,CAAA;AACzE,YAAA,IAAK,IAAI5yF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI0jG,eAAe1jG,CAAK,EAAA,CAAA;AACtC,gBAAA,IAAMR,IAAIskG,kBAAqB,GAAA,CAAA,CAAA;AAC/B,gBAAA,IAAM/5F,IAAI/J,CAAIR,GAAAA,CAAAA,CAAAA;AAEd,gBAAA,IAAK,IAAI2P,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI3P,GAAG2P,CAAK,EAAA,CAAA;oBAC1ByjF,SAAS,CAAC7oF,CAAIoF,GAAAA,CAAAA,CAAE,GAAGnP,CAAAA,CAAAA;AACrB,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAMgmG,cAAc7nC,gBAAiBC,CAAAA,QAAAA,CAAAA,CAAAA;AACrC,QAAA,IAAM5+B,QAAW2hC,GAAAA,QAAAA,CAASrgE,MAAM,CAAC2W,MAAQqtF,EAAAA,GAAAA,CAAAA,CAAAA;AAEzCtlE,QAAAA,QAAAA,CAAS4+B,QAAQ,GAAG,IAAA,CAAA;AACpB5+B,QAAAA,QAAAA,CAAS6iC,SAAS,GAAGuhB,SAAAA,CAAAA;AACrBpkD,QAAAA,QAAAA,CAAS4iC,SAAS,GAAG,IAAA,CAAA;QACrB5iC,QAAS8iC,CAAAA,UAAU,GAAGof,IAAO,GAAA;AAACA,YAAAA,IAAAA;AAAMA,YAAAA,IAAAA;SAAK,GAAG/iF,SAAAA,CAAAA;AAC5CkhE,QAAAA,WAAAA,CAAYrgC,QAAUsgC,EAAAA,QAAAA,CAAAA,CAAAA;AACtBjB,QAAAA,YAAAA,CAAar/B,QAAU4+B,EAAAA,QAAAA,CAAAA,CAAAA;QAEvB,IAAMvC,IAAAA,GAAO,IAAI,CAACA,IAAI,GAAGuI,IAAKtjE,CAAAA,MAAM,CAClC2W,MACA,EAAA;AACExV,YAAAA,IAAAA,EAAM,SAAUA,GAAAA,IAAAA;YAChBu9B,QAAAA,EAAAA,QAAAA;YACA2Q,QAAU6zB,EAAAA,QAAAA,CAASljE,MAAM,CAAC2W,MAAQ4tF,EAAAA,eAAAA,CAAAA;AAEpC,SAAA,CAAA,CAAA;AAEF,QAAA,IAAMY,QAAWtuC,GAAAA,OAAAA,IAAAA,IAAAA,GAAAA,OAAWnB,GAAAA,OAAAA,CAAQ4B,cAAc,CAAC3gD,MAAAA,CAAAA,CAAAA;AAEnD9X,QAAAA,MAAAA,CAAOkQ,IAAI,CAACo0F,aAAe10F,CAAAA,CAAAA,GAAG,CAACtN,SAAAA,IAAAA,EAAAA;YAC7B,IAAMlE,KAAAA,GAAQkmG,aAAa,CAAChiG,IAAK,CAAA,CAAA;YAEjC,IAASrD,YAALb,CAAAA,KAAAA,EAAiBy4D,OAAS,CAAA,EAAA;gBAC5Bh3B,QAASwiC,CAAAA,UAAU,CAAC//D,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;aACrB,MAAA,IAAIkE,SAAS,aAAe,EAAA;gBACjCu9B,QAASwsD,CAAAA,SAAS,CAAC,aAAejuF,EAAAA,KAAAA,CAAAA,CAAAA;aAC7B,MAAA,IAAIkE,SAAS,eAAiB,EAAA;AACnC,gBAAA,IAAMgF,QAAmB,EAAE,CAAA;gBAE3B,IAAK,IAAIjH,IAAI,CAAGA,EAAAA,CAAAA,GAAIjC,MAAM0B,MAAM,EAAEO,CAAIA,GAAAA,CAAAA,GAAI,CAAG,CAAA;oBAC3C,IAAMqB,CAAAA,GAAI,IAAIsK,OAAQ5N,CAAAA,KAAK,CAACiC,CAAE,CAAA,EAAEjC,KAAK,CAACiC,CAAAA,GAAI,EAAE,EAAEjC,KAAK,CAACiC,CAAI,GAAA,CAAA,CAAE,EAAEjC,KAAK,CAACiC,IAAI,CAAE,CAAA,CAAA,CAAA;AAExEiH,oBAAAA,KAAAA,CAAMtF,IAAI,CAACN,CAAAA,CAAAA,CAAAA;AACb,iBAAA;gBACAm+B,QAASusD,CAAAA,eAAe,CAAC9pF,IAAMgF,EAAAA,KAAAA,CAAAA,CAAAA;aAC1B,MAAA;AACLu4B,gBAAAA,QAAAA,CAASqiD,UAAU,CAAC5/E,IAAM0J,EAAAA,OAAAA,CAAQlC,SAAS,CAAC1L,KAAAA,CAAAA,CAAAA,CAAAA;AAC9C,aAAA;AACF,SAAA,CAAA,CAAA;QAEAyhC,QAASxQ,CAAAA,QAAQ,CAAC,OAAS,EAAA,CAAA,CAAA,CAAA;;AAE3BwQ,QAAAA,QAAAA,CAASqiD,UAAU,CAAC,iBAAmBl2E,EAAAA,OAAAA,CAAQlC,SAAS,CAACg7F,eAAAA,CAAAA,CAAAA,CAAAA;AACzDjlE,QAAAA,QAAAA,CAAS2pC,UAAU,CAAC,YAAc,EAAA,IAAIviE,QAAQ,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACjD44B,QAAAA,QAAAA,CAASqiD,UAAU,CAAC,aAAel2E,EAAAA,OAAAA,CAAQlC,SAAS,CAACm6F,UAAAA,CAAAA,CAAAA,CAAAA;QACrDpkE,QAASqiD,CAAAA,UAAU,CAAC,SAAW,EAAA,IAAIl2E,QAAQ,CAAGm4F,EAAAA,kBAAAA,GAAqB,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QACzEtkE,QAASwiC,CAAAA,UAAU,CAAC,UAAYikC,EAAAA,QAAAA,CAAAA,CAAAA;AAChCzmE,QAAAA,QAAAA,CAASqiD,UAAU,CAAC,cAAgB,EAAA,IAAIl2E,QAAQgsD,OAAU,GAAA,CAAA,GAAI,CAAG,EAAA,CAACquC,aAAa,CAAG,EAAA,EAAEpiB,SAAAA,IAAa,CAACC,oBAAmB,CAAA,CAAA,CAAA,CAAA;QAErH,IAAI,CAAC6f,aAAa,GAAGA,aAAAA,CAAAA;QACrB,IAAI,CAACI,kBAAkB,GAAGA,kBAAAA,CAAAA;QAC1B,IAAI,CAACoC,mBAAmB,GAAGrC,qBAAwB,GAAA,CAAA,CAAA;AACnD,QAAA,IAAI,CAACA,qBAAqB,GAAGr/F,KAAKmJ,GAAG,CAACk2F,yBAAyB,KAAO,EAAA,CAAA,CAAA,CAAA;QACtE,IAAI,CAACM,sBAAsB,GAAGA,sBAAAA,CAAAA;QAC9B,IAAI,CAAC1qD,QAAQ,GAAGA,QAAAA,CAAAA;AAChB,QAAA,IAAInS,MAAQ,EAAA;AACV,YAAA,IAAI,CAACu0B,IAAI,CAACppB,WAAW,GAAGnL,MAAAA,CAAAA;AAC1B,SAAA;AACA,QAAA,IAAI,CAAC6I,QAAQ,GAAG0rB,IAAAA,CAAK4I,aAAa,EAAA,CAAA;AAClC,QAAA,IAAI,CAAC0hC,YAAY,GAAG,IAAIptD,WAAY2qD,CAAAA,aAAAA,CAAAA,CAAAA;;AArM3BH,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;IA+MX6C,MAAAA,CAAAA,QAgGC,GAhGDA,SAAAA,QAAAA,CAAUC,UAAkB,EAAE1gF,QAAiB,EAAEqzE,GAAsB,EAAA;AACrEA,QAAAA,GAAAA,GAAMA,OAAQ,EAAC,CAAA;AACf,QAAA,IAAInzC,MAAS,GAAA,IAAI,CAACsgD,YAAY,CAACE,UAAW,CAAA,CAAA;QAC1C,IAAMvC,kBAAAA,GAAqB,IAAI,CAACA,kBAAkB,CAAA;QAClD,IAAM3zD,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,QAAA,IAAMm2D,kBAAkBxC,kBAAqB,GAAA,CAAA,CAAA;AAC7C,QAAA,IAAMva,aAAa1jC,MAASi+C,GAAAA,kBAAAA,CAAAA;AAC5B,QAAA,IAAMyC,aAAgB,GAAC1gD,CAAAA,MAAAA,GAAS,CAAA,IAAKi+C,kBAAAA,CAAAA;AACrC,QAAA,IAAM0C,cAAiB,GAAC3gD,CAAAA,MAAAA,GAAS,CAAA,IAAKi+C,kBAAAA,CAAAA;AACtC,QAAA,IAAM2C,gBAAgB,IAAI,CAACC,gBAAgB,CAACL,YAAYE,aAAelD,EAAAA,IAAAA,CAAAA,CAAAA;;AAGvE,QAAA,IAAIoD,aAAiB,IAAA,IAAI,CAACP,mBAAmB,IAAIO,CAAAA,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAet9F,CAAAA,eAAe,CAACwc,QAAAA,CAAAA,IAAY,IAAI,CAACk+E,qBAAqB,EAAE;AACtH,YAAA,OAAA;AACF,SAAA;QAEA,IAAM8C,eAAAA,GAAkBN,aAAavC,kBAAqBva,GAAAA,UAAAA,CAAAA;QAC1D,IAAM1tC,GAAAA,GAAM+qD,mBAAmBH,aAAe9gF,EAAAA,QAAAA,CAAAA,CAAAA;AAC9C,QAAA,IAAMzW,OAAO8pF,GAAI9pF,CAAAA,IAAI,IAAI,IAAI,CAACA,IAAI,CAAA;AAClC,QAAA,IAAMpR,IAAO,GAAA;AAAC0G,YAAAA,IAAAA,CAAKpB,MAAM,EAAA;AAAI41F,YAAAA,GAAAA,CAAIv/C,QAAQ,IAAI,IAAI,CAACA,QAAQ;AAAEoM,YAAAA,MAAAA;AAAO,SAAA,CAAA;QACnE,IAAMthD,IAAAA,GAAOy0F,GAAIz0F,CAAAA,IAAI,IAAI,CAAA,CAAA;AAEzB,QAAA,IAAMsiG,gBAAgBF,eAAkB,GAAA,CAAA,CAAA;QACxC,IAAMG,OAAAA,GAAU,IAAIruD,YAAa,CAAA,CAAA,CAAA,CAAA;QAEjCquD,OAAQ9hG,CAAAA,GAAG,CAAC62C,GAAK,EAAA,CAAA,CAAA,CAAA;QACjBirD,OAAQ9hG,CAAAA,GAAG,CAAC62C,GAAK,EAAA,CAAA,CAAA,CAAA;QAEjB1L,QAAS42D,CAAAA,mBAAmB,CAAC,MAAA,EAAQF,aAAeC,EAAAA,OAAAA,CAAAA,CAAAA;AACpD32D,QAAAA,QAAAA,CAAS42D,mBAAmB,CAAC,OAAA,EAASJ,eAAkB,GAAA,CAAA,EAAG,IAAIluD,YAAa,CAAA;AAACvpC,YAAAA,IAAAA;AAAMA,YAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA,CAAA;QAExF,IAAMD,KAAAA,GAAQ+pF,GAAI/pF,CAAAA,KAAK,IAAI;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QACvC,IAAM+3F,SAAAA,GAAY,IAAIvuD,YAAa,CAAA,EAAA,CAAA,CAAA;QACnC,IAAMwuD,YAAAA,GAAethF,SAASrc,OAAO,EAAA,CAAA;QAErC09F,SAAUhiG,CAAAA,GAAG,CAACiK,KAAO,EAAA,CAAA,CAAA,CAAA;QACrB+3F,SAAUhiG,CAAAA,GAAG,CAAClH,IAAM,EAAA,CAAA,CAAA,CAAA;QACpBkpG,SAAS,CAAC,EAAE,GAAG,CAAA,CAAA;QACfA,SAAUhiG,CAAAA,GAAG,CAACiiG,YAAc,EAAA,CAAA,CAAA,CAAA;QAC5BD,SAAS,CAAC,EAAG,CAAA,GAAG,GAAMziG,GAAAA,IAAAA,CAAAA;QAEtByiG,SAAUhiG,CAAAA,GAAG,CAACiK,KAAO,EAAA,EAAA,CAAA,CAAA;QACrB+3F,SAAUhiG,CAAAA,GAAG,CAAClH,IAAM,EAAA,EAAA,CAAA,CAAA;QACpBkpG,SAAS,CAAC,GAAG,GAAG,CAAA,CAAA;QAChBA,SAAUhiG,CAAAA,GAAG,CAACiiG,YAAc,EAAA,EAAA,CAAA,CAAA;AAC5BD,QAAAA,SAAS,CAAC,EAAA,CAAG,GAAG,CAAC,GAAMziG,GAAAA,IAAAA,CAAAA;AAEvB4rC,QAAAA,QAAAA,CAAS42D,mBAAmB,CAAC,QAAUJ,EAAAA,eAAAA,GAAkB,EAAIK,EAAAA,SAAAA,CAAAA,CAAAA;AAE7D,QAAA,IAAIT,iBAAiB,CAAG,EAAA;AACtB,YAAA,IAAMW,iBAAiB,IAAI,CAACR,gBAAgB,CAACL,YAAYG,cAAgBlD,EAAAA,IAAAA,CAAAA,CAAAA;AACzE,YAAA,IAAM6D,WAAc,GAAA,IAAI1uD,YAAamuD,CAAAA,kBAAAA,CAAmBM,gBAAgBT,aAA0B9gF,EAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AAClG,YAAA,IAAMyhF,wBAAwB,CAACf,UAAavC,GAAAA,kBAAAA,GAAqByC,aAAY,IAAK,CAAA,CAAA;YAElFp2D,QAAS42D,CAAAA,mBAAmB,CAAC,MAAA,EAAQK,qBAAuBD,EAAAA,WAAAA,CAAAA,CAAAA;AAC5Dh3D,YAAAA,QAAAA,CAAS42D,mBAAmB,CAAC,MAAQK,EAAAA,qBAAAA,GAAwB,CAAGD,EAAAA,WAAAA,CAAAA,CAAAA;YAChE,IAAME,YAAAA,GAAehB,aAAavC,kBAAqB,GAAA,CAAA,CAAA;YACvD,IAAMwD,WAAAA,GAAc,IAAIvuD,WAAY,CAAA;AAClCwtD,gBAAAA,aAAAA,GAAgB,CAAIc,GAAAA,YAAAA;AACpBd,gBAAAA,aAAAA,GAAgB,IAAI,CAAIc,GAAAA,YAAAA;AACxB9d,gBAAAA,UAAAA,GAAa,CAAI8d,GAAAA,YAAAA;AACjB9d,gBAAAA,UAAAA,GAAa,CAAI8d,GAAAA,YAAAA;AACjBd,gBAAAA,aAAAA,GAAgB,IAAI,CAAIc,GAAAA,YAAAA;AACxB9d,gBAAAA,UAAAA,GAAa,IAAI,CAAI8d,GAAAA,YAAAA;AACtB,aAAA,CAAA,CAAA;YACD,IAAMh1F,KAAAA,GAAQ,CAACg0F,UAAaC,GAAAA,eAAAA,GAAkB,CAACzgD,MAAS,GAAA,CAAA,IAAKygD,eAAc,IAAK,CAAA,CAAA;YAEhFn2D,QAASo3D,CAAAA,eAAe,CAACl1F,KAAOi1F,EAAAA,WAAAA,CAAAA,CAAAA;AAClC,SAAA;AAEAzhD,QAAAA,MAAAA,GAAS,EAAE,IAAI,CAACsgD,YAAY,CAACE,UAAW,CAAA,CAAA;AACxC,QAAA,IAAMvB,GAAM,GAAA,IAAI,CAACjpC,IAAI,CAACr8B,QAAQ,CAAA;QAC9B,IAAMgoE,MAAAA,GAAS1C,GAAIljB,CAAAA,UAAU,CAAC,SAAA,CAAA,CAAA;QAC9B,IAAM6lB,UAAAA,GAAa3pG,IAAI,CAAC,CAAE,CAAA,CAAA;QAE1B,IAAI,IAAI,CAACqmG,sBAAsB,EAAE;AAC/B,YAAA,IAAM1nF,MAAMqnF,kBAAqB,GAAA,CAAA,CAAA;YACjC,IAAM4D,SAAAA,GAA0B,IAAIjvD,YAAah8B,CAAAA,GAAAA,CAAAA,CAAAA;AAEjD,YAAA,IAAK,IAAIzc,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIyc,KAAKzc,CAAK,EAAA,CAAA;gBAC5B0nG,SAAS,CAAC1nG,EAAE,GAAGynG,UAAAA,CAAAA;AACjB,aAAA;AACAt3D,YAAAA,QAAAA,CAAS42D,mBAAmB,CAAC,aAAA,EAAeV,UAAaqB,GAAAA,SAAAA,CAAUjoG,MAAM,EAAEioG,SAAAA,CAAAA,CAAAA;SACtE,MAAA;YACL,IAAM3pG,KAAAA,GAAQ+mG,GAAI6C,CAAAA,SAAS,CAAC,aAAA,CAAA,CAAA;AAE5B,YAAA,IAAI5pG,SAASY,SAAW,EAAA;gBACtBZ,KAAK,CAACsoG,WAAW,GAAGoB,UAAAA,CAAAA;gBACpB3C,GAAI9Y,CAAAA,SAAS,CAAC,aAAejuF,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,aAAA;AACF,SAAA;AAEA,QAAA,IAAIypG,MAAQ,EAAA;AACVA,YAAAA,MAAAA,CAAO5mG,CAAC,GAAG4D,IAAK+B,CAAAA,GAAG,CAACihG,MAAO5mG,CAAAA,CAAC,EAAEilD,MAAAA,GAAS,CAAKrhD,CAAAA,GAAAA,IAAAA,CAAK+B,GAAG,CAAC,GAAGs/C,MAASi+C,GAAAA,kBAAAA,CAAAA,CAAAA;YACjEgB,GAAIjjB,CAAAA,UAAU,CAAC,SAAW2lB,EAAAA,MAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACF,KAAA,CAAA;IAEAd,MAAAA,CAAAA,gBAeC,GAfDA,SAAAA,gBAAAA,CAAkBkB,KAAa,EAAEpkG,KAAa,EAAEqH,GAAY,EAAA;QAC1D,IAAMi5F,kBAAAA,GAAqB,IAAI,CAACA,kBAAkB,CAAA;QAElD,IAAItgG,KAAAA,IAAS,CAAKA,IAAAA,KAAAA,GAAQsgG,kBAAoB,EAAA;AAC5C,YAAA,IAAM7qD,aAAa,CAAC2uD,QAAQ9D,kBAAqBtgG,GAAAA,KAAI,IAAK,EAAK,GAAA,CAAA,CAAA;AAC/D,YAAA,IAAMoO,OAAO,IAAI,CAACu+B,QAAQ,CAAC83C,gBAAgB,CAAC,QAAA,CAAA,CAAA;YAE5Cz1E,WAAYZ,CAAAA,IAAAA,CAAAA,CAAAA;AAEZ/G,YAAAA,GAAAA,CAAIhF,CAAC,GAAG+L,IAAI,CAACqnC,UAAW,CAAA,CAAA;AACxBpuC,YAAAA,GAAAA,CAAIjK,CAAC,GAAGgR,IAAI,CAAC,IAAIqnC,UAAW,CAAA,CAAA;AAC5BpuC,YAAAA,GAAAA,CAAIhB,CAAC,GAAG+H,IAAI,CAAC,IAAIqnC,UAAW,CAAA,CAAA;YAE5B,OAAOpuC,GAAAA,CAAAA;AACT,SAAA;AACF,KAAA,CAAA;IAEAg9F,MAAAA,CAAAA,cAOC,GAPDA,SAAAA,cAAAA,GAAAA;AACE,QAAA,IAAMjV,SAAY,GAAA,IAAI,CAACziD,QAAQ,CAACi4C,YAAY,EAAA,CAAA;QAE5C51E,WAAYogF,CAAAA,SAAAA,CAAAA,CAAAA;QAEZ,IAAI,CAACuT,YAAY,GAAG,IAAIptD,YAAY,IAAI,CAACotD,YAAY,CAAC1mG,MAAM,CAAA,CAAA;QAC5D,IAAI,CAAC0wC,QAAQ,CAAC04C,YAAY,CAAC,IAAI9vC,WAAAA,CAAY65C,UAAUnzF,MAAM,CAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;AAEAqoG,IAAAA,MAAAA,CAAAA,SAUC,GAVDA,SAAAA,SAAAA,CAAW54F,IAAY,EAAA;AACrB,QAAA,IAAM0C,OAAO,IAAI,CAACu+B,QAAQ,CAAC83C,gBAAgB,CAAC,OAAA,CAAA,CAAA;QAE5Cz1E,WAAYZ,CAAAA,IAAAA,CAAAA,CAAAA;AAEZ,QAAA,IAAK,IAAI5R,CAAI,GAAA,CAAA,EAAGA,IAAI4R,IAAKnS,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACpC4R,IAAI,CAAC5R,EAAE,IAAIkP,IAAAA,CAAAA;AACb,SAAA;AACA,QAAA,IAAI,CAACihC,QAAQ,CAACy4C,gBAAgB,CAAC,OAASh3E,EAAAA,IAAAA,CAAAA,CAAAA;QACxC,IAAI,CAAC1C,IAAI,IAAIA,IAAAA,CAAAA;AACf,KAAA,CAAA;AAEA64F,IAAAA,MAAAA,CAAAA,UAaC,GAbDA,SAAAA,UAAAA,CAAYvkG,KAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC2iG,YAAY,CAAC3iG,KAAAA,CAAM,KAAK,CAAG,EAAA;YAClC,IAAMsgG,kBAAAA,GAAqB,IAAI,CAACA,kBAAkB,CAAA;AAClD,YAAA,IAAMkE,eAAkB,GAAClE,CAAAA,kBAAAA,GAAqB,CAAA,IAAK,CAAA,CAAA;AACnD,YAAA,IAAM7f,OAAU,GAAA,IAAI,CAAC9zC,QAAQ,CAACi4C,YAAY,EAAA,CAAA;YAE1C51E,WAAYyxE,CAAAA,OAAAA,CAAAA,CAAAA;AAEZA,YAAAA,OAAAA,CAAQj/E,GAAG,CAAC,IAAI+zC,WAAAA,CAAYivD,kBAAkBxkG,KAAQwkG,GAAAA,eAAAA,CAAAA,CAAAA;AACtD,YAAA,IAAI,CAAC73D,QAAQ,CAAC04C,YAAY,CAAC5E,OAAAA,CAAAA,CAAAA;AAE3B,YAAA,IAAI,CAACkiB,YAAY,CAAC3iG,KAAAA,CAAM,GAAG,CAAA,CAAA;AAC7B,SAAA;AACF,KAAA,CAAA;AAEAykG,IAAAA,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAkBzkG,KAAa,EAAA;AAC7B,QAAA,OAAO,IAAI,CAACggG,UAAU,CAAChgG,KAAM,CAAA,CAAA;AAC/B,KAAA,CAAA;AAEA0kG,IAAAA,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAkB1kG,CAAAA,KAAa,EAAEozC,GAAY,EAAA;AAC3C,QAAA,IAAI,CAAC4sD,UAAU,CAAChgG,KAAAA,CAAM,GAAGozC,GAAAA,CAAAA;AAC3B,KAAA,CAAA;AAEA/Y,IAAAA,MAAAA,CAAAA,QACC,GADDA,SAAAA,QAAAA,CAAUsqE,UAAkB,EAC5B,EAAA,CAAA;AA/WW5E,IAAAA,aAAAA,CAAAA,SAAAA,EAAAA;;YAwMPr0F,GAAAA,EAAAA,MAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC2sD,IAAI,CAACr8B,QAAQ,CAAC4oE,QAAQ,CAAC,OAAY,CAAA,IAAA,CAAA,CAAA;AACjD,aAAA;AACA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAU5nG,CAAS,EAAA;gBACjB,IAAI,CAACq7D,IAAI,CAACr8B,QAAQ,CAACxQ,QAAQ,CAAC,OAASxuB,EAAAA,CAAAA,IAAAA,IAAAA,GAAAA,CAAK,GAAA,CAAA,CAAA,CAAA;AAC5C,aAAA;;;AA7MW+iG,IAAAA,OAAAA,SAAAA,CAAAA;AAiXZ,CAAA,EAAA,CAAA;AAED,IAAM8E,YAAU,IAAIz+F,OAAAA,EAAAA,CAAAA;AACpB,IAAM0+F,SAAS,IAAI1+F,OAAAA,EAAAA,CAAAA;AACnB,IAAM2+F,SAAS,IAAI3+F,OAAAA,EAAAA,CAAAA;AAEnB;AACA,SAASg9F,kBAAoB4B,CAAAA,QAA6B,EAAE34D,KAAc,EAAE44D,SAAmB,EAAA;AAC7F,IAAA,IAAM5sD,GAAMwsD,GAAAA,SAAAA,CAAAA;IAEZ,IAAI,CAACG,QAAY,IAAA,CAACC,SAAW,EAAA;QAC3B,OAAO;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;KACX,MAAA,IAAI,CAACD,QAAU,EAAA;QACpB3sD,GAAIj0C,CAAAA,eAAe,CAAC6gG,SAAY54D,EAAAA,KAAAA,CAAAA,CAAAA;KAC3B,MAAA,IAAI,CAAC44D,SAAW,EAAA;QACrB5sD,GAAIj0C,CAAAA,eAAe,CAACioC,KAAO24D,EAAAA,QAAAA,CAAAA,CAAAA;KACtB,MAAA;AACLF,QAAAA,MAAAA,CAAO1gG,eAAe,CAACioC,KAAO24D,EAAAA,QAAAA,CAAAA,CAAUjgG,SAAS,EAAA,CAAA;;QAEjD+/F,MAAO1gG,CAAAA,eAAe,CAAC6gG,SAAW54D,EAAAA,KAAAA,CAAAA,CAAAA;QAClC04D,MAAOrhG,CAAAA,QAAQ,CAACohG,MAAAA,CAAAA,CAAQ//F,SAAS,EAAA,CAAA;QACjCszC,GAAIn0C,CAAAA,UAAU,CAAC4gG,MAAQC,EAAAA,MAAAA,CAAAA,CAAAA;AACzB,KAAA;IAEA,OAAO1sD,GAAAA,CAAItzC,SAAS,EAAA,CAAGe,OAAO,EAAA,CAAA;AAChC;;ACtbA;;AAEC,IACM,IAAA,yBAAMo/F,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,yBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,yBAAAA,GAAAA;;;cACX/U,QAAW,GAAA,CAAA,CAAA;;;AADA+U,IAAAA,IAAAA,MAAAA,GAAAA,yBAAAA,CAAAA,SAAAA,CAAAA;AAIXr2F,IAAAA,MAAAA,CAAAA,KAWC,GAXDA,SAAAA,KAAAA,CAAOmL,OAAqB,EAAA;AAC1B,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;QAE9C,IAAI,IAAI,CAACuR,cAAc,IAAI,CAAElR,YAAW,CAAXA,aAAuB3gB,OAAU,CAAA,EAAA;AAC5D,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC6xB,cAAc,GAAGlR,WAAAA,CAAYr9D,YAAY,CAAC+iD,cAAAA,CAAAA,CAAAA;QAE/C,IAAI,IAAI,CAACwrB,cAAc,EAAE;AACvB,YAAA,IAAI,CAACA,cAAc,CAAC1mG,IAAI,GAAGw1F,YAAYx1F,IAAI,CAAA;AAC7C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS60F,YAoBR,GApBD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAI,IAAI,CAACtO,IAAI,IAAI,CAAG,EAAA;YAClB,IAAI,CAACmD,KAAK,CAACmL,OAAAA,CAAAA,CAAAA;AACb,SAAA;QACA,IAAMmrF,cAAAA,GAAiB,IAAI,CAACA,cAAc,CAAA;AAE1C,QAAA,IAAIA,cAAgB,EAAA;AAClB,YAAA,IACE,IAAI,CAACz5F,IAAI,IAAI,CAAA,IACb,IAAI,CAACA,IAAI,GAAGy5F,cAAAA,CAAe/kG,IAAI,CAACod,QAAQ,IACxC2nF,cAAAA,CAAerzB,OAAO,EACtB,EAAA;AACAqzB,gBAAAA,cAAAA,CAAe3wB,KAAK,EAAA,CAAA;AACtB,aAAA;;;AAIA2wB,YAAAA,cAAAA,CAAe/lF,MAAM,CAAC,IAAI,CAAC1T,IAAI,GAAGy5F,eAAez5F,IAAI,CAAA,CAAA;AACvD,SAAA;AACA,QAAA,IAAI,CAACykF,QAAQ,GAAG,IAAI,CAACzkF,IAAI,CAAA;AAC3B,KAAA,CAAA;AArCWw5F,IAAAA,OAAAA,yBAAAA,CAAAA;EAAkCnS,QAsC9C,EAAA;AAEM,IAAA,8BAAMqS,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,8BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,8BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,8BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASC,CAAAA,cAER,GAFD,SAASA,cAAAA,GAAAA;AACP,QAAA,OAAO,IAAIH,yBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAHWE,IAAAA,OAAAA,8BAAAA,CAAAA;EAAuCvR,aAInD,EAAA;IAEYyR,sBAAiD,GAAA;IAC5D,SAAW,EAAA,MAAA;IACX,SAAW,EAAA,MAAA;IACX,eAAiB,EAAA,MAAA;IACjB,uBAAyB,EAAA,MAAA;IACzB,2BAA6B,EAAA,MAAA;IAC7B,oBAAsB,EAAA,MAAA;IACtB,oBAAsB,EAAA,MAAA;IACtB,oBAAsB,EAAA,MAAA;IACtB,yBAA2B,EAAA,MAAA;IAC3B,yBAA2B,EAAA,MAAA;IAC3B,yBAA2B,EAAA,MAAA;IAC3B,qBAAuB,EAAA,MAAA;IACvB,sBAAwB,EAAA,MAAA;IACxB,sBAAwB,EAAA,MAAA;IACxB,sBAAwB,EAAA,MAAA;IACxB,sBAAwB,EAAA,MAAA;IACxB,uBAAyB,EAAA,MAAA;IACzB,cAAgB,EAAA,MAAA;IAChB,UAAY,EAAA,MAAA;IACZ,eAAiB,EAAA,MAAA;IACjB,eAAiB,EAAA,WAAA;IACjB,eAAiB,EAAA,MAAA;IACjB,cAAgB,EAAA,MAAA;IAChB,aAAe,EAAA,MAAA;IACf,YAAc,EAAA,MAAA;IACd,YAAc,EAAA,MAAA;IACd,cAAgB,EAAA,MAAA;IAChB,gBAAkB,EAAA,MAAA;IAClB,gBAAkB,EAAA,MAAA;IAClB,aAAe,EAAA,MAAA;AACjB;;AC+BO,IAAA,YAAMC,iBAAD,WAAL;aAAMA,YA6BTtxF,CAAAA,MAAc,EACdolB,KAAwB,EAAA;aA1B1BmsE,aAAgB,GAAA,CAAA,CAAA;AAiBRC,QAAAA,IAAAA,CAAAA,qBAAAA,GAAwB,IAAIr/F,OAAAA,EAAAA,CAAAA;AAC5Bs/F,QAAAA,IAAAA,CAAAA,oBAAAA,GAAuB,IAAIn+D,OAAAA,EAAAA,CAAAA;AAC3Bo+D,QAAAA,IAAAA,CAAAA,gBAAAA,GAAmB,IAAIv/F,OAAAA,EAAAA,CAAAA;AACvBw/F,QAAAA,IAAAA,CAAAA,WAAAA,GAAc,IAAIr+D,OAAAA,EAAAA,CAAAA;aAE1Bs+D,wBAA2B,GAAA,CAAA,CAAA;AAMzB,QAAA,IAAM,GAAU5xF,GAAAA,CAAAA,iBAAAA,MAAU,GAAA,EAAC,EAAnB8iE,GAAAA,CAAAA;AACR,QAAA,IACE5gC,iBAME9c,GAAAA,KAAAA,CANF8c,iBAAmBs+C,EAAAA,iBAAAA,GAMjBp7D,MANiBo7D,iBAAmBj+C,EAAAA,qBAAAA,GAMpCnd,KANoCmd,CAAAA,qBAAAA,EAAuBE,yBAM3Drd,KAN2Dqd,CAAAA,sBAAAA,EAAwBovD,gBAMnFzsE,GAAAA,KAAAA,CANmFysE,kBAAkBC,oBAMrG1sE,GAAAA,KAAAA,CANqG0sE,oBACvGprB,EAAAA,MAAAA,GAKEthD,MALFshD,MAAQtkC,EAAAA,eAAAA,GAKNhd,KALMgd,CAAAA,eAAAA,EAAiB+mC,WAKvB/jD,KALuB+jD,CAAAA,QAAAA,EAAU4oB,WAKjC3sE,GAAAA,KAAAA,CALiC2sE,aAAaC,SAK9C5sE,GAAAA,KAAAA,CAL8C4sE,SAAWxnG,EAAAA,IAAAA,GAKzD46B,MALyD56B,IAC3DynG,EAAAA,OAAAA,GAIE7sE,KAJF6sE,CAAAA,OAAAA,EAASC,cAIP9sE,KAJO8sE,CAAAA,WAAAA,EAAatqC,IAIpBxiC,GAAAA,KAAAA,CAJoBwiC,MAAMukB,SAI1B/mD,GAAAA,KAAAA,CAJ0B+mD,SAAW3+C,EAAAA,MAAAA,GAIrCpI,MAJqCoI,MAAQm5B,EAAAA,QAAAA,GAI7CvhC,KAJ6CuhC,CAAAA,QAAAA,EAC/C0B,WAGEjjC,KAHFijC,CAAAA,QAAAA,EAAU4hB,IAGR7kD,GAAAA,KAAAA,CAHQ6kD,MAAMmC,oBAGdhnD,GAAAA,KAAAA,CAHcgnD,oBAAsB+lB,EAAAA,SAAAA,GAGpC/sE,MAHoC+sE,SAGpC/sE,EAAAA,iBAAAA,GAAAA,KAAAA,CAFF4mD,UAAAA,EAAAA,UAAAA,GAAAA,iBAAAA,KAAAA,KAAAA,CAAAA,GAAa,wCAEX5mD,KADFgtE,CAAAA,OAAAA,EAAAA,OAAUrzC,GAAAA,cAAAA,KAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAQ4B,cAAc,CAAC3gD,MAAAA,CAAAA,GAAAA,cAAAA,CAAAA;AAEnC,QAAA,IAAM,MAAE0zD,GAAW1zD,MAAOyzD,CAAAA,aAAa,CAA/BC,MAAAA,CAAAA;AACR,QAAA,IAAQC,gBAAwCD,GAAAA,MAAAA,CAAxCC,gBAAkB6E,EAAAA,iBAAAA,GAAsB9E,MAAtB8E,CAAAA,iBAAAA,CAAAA;AAC1B,QAAA,IAAMzS,MAAuB,GAAA;;AAE3B,YAAA;AAAC,gBAAA,aAAA;gBAAe,CAACimB,UAAAA;AAAW,aAAA;AAC5B,YAAA;AAAC,gBAAA,YAAA;gBAAclJ,GAAQliC,KAAAA,yBAAAA;AAA0B,aAAA;AAClD,SAAA,CAAA;AACD,QAAA,IAAM,KAAEktB,GAAU9tD,MAAOyzD,CAAAA,aAAa,CAA9B3F,KAAAA,CAAAA;AACR,QAAA,IAAMukC,kBAAqB//C,GAAAA,kBAAAA,EAAAA,CAAAA;AAC3B,QAAA,IAAMggD,oBAAuBhgD,GAAAA,kBAAAA,EAAAA,CAAAA;AAC7B,QAAA,IAAMi6C,sBAAsB/zB,iBAAoB,GAAA,CAAA,CAAA;AAChD,QAAA,IAAMg0B,gBAAqC,EAAC,CAAA;AAC5C,QAAA,IAAI+F,qBAAwB,GAAA,CAAA,CAAA;AAC5B,QAAA,IAAI5F,aAAgB,GAAA,CAAA,CAAA;QACpB,IAAI6F,aAAAA,CAAAA;QAEJ,IAAI,CAACR,SAAS,GAAGA,SAAAA,CAAAA;AACjB,QAAA,IAAIzF,mBAAqB,EAAA;AACvBxmC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,uBAAA;AAAyB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AAC7C,SAAA;AACA,QAAA,IAAIg4C,iBAAmB,EAAA;AACrB6jB,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,qBAAA;AAAuB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AACzCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACtBH,YAAAA,aAAAA,CAAciG,mBAAmB,GAAGvwD,iBAAkB4L,CAAAA,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AAClE,SAAA;QACA,IAAI3rB,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAQgsB,CAAAA,OAAO,EAAE;AACnB3sC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,YAAA;AAAc,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AAChCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACtBH,YAAAA,aAAAA,CAAcmG,QAAQ,GAAGnG,aAAAA,CAAcoG,OAAO,GAAG,IAAI5xD,YAAa,CAAA;AAAC0lC,gBAAAA,MAAAA,CAAOmsB,GAAG;AAAEnsB,gBAAAA,MAAAA,CAAOosB,GAAG;AAAEpsB,gBAAAA,MAAAA,CAAOxyB,KAAK;gBAAEwyB,MAAOqsB,CAAAA,KAAK,GAAG,CAAI,GAAA,CAAA;AAAE,aAAA,CAAA,CAAA;YAC9H,IAAI,CAACf,SAAS,GAAG,IAAA,CAAA;AACnB,SAAA;QACA,IAAIxR,iBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAmBhpF,CAAAA,KAAK,EAAE;AAC5BuuD,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,qBAAA;AAAuB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AACzCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACtBH,YAAAA,aAAAA,CAAcI,kBAAkB,GAA0BzlG,YAAvBq5F,CAAAA,iBAAAA,CAAkBhpF,KAAK,EAAYunD,OAAAA,CAAAA,GAAUyhC,iBAAkBhpF,CAAAA,KAAK,GAAGunD,OAAQ4B,CAAAA,cAAc,CAAC3gD,MAAQ5F,EAAAA,qBAAAA,CAAsBomF,kBAAkBhpF,KAAK,CAAA,CAAA,CAAA;AACxL,SAAA;QACA,IAAIgpF,iBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAmB/b,CAAAA,OAAO,EAAE;AAC9B+nB,YAAAA,aAAAA,CAAcO,yBAAyB,GAAGvM,iBAAAA,CAAkB/b,OAAO,CAAC32B,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;SACzE,MAAA;AACL7F,YAAAA,aAAAA,CAAcO,yBAAyB,GAAG95C,iBAAkB,CAAA,CAAA,CAAA,CAAGnF,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AAC3E,SAAA;AAEA,QAAA;AAAC,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA,GAAA;SAAI,CAACp6F,OAAO,CAAC,SAAC2qC,GAAKr6C,EAAAA,CAAAA,EAAAA;AAC5B,YAAA,IAAIyqG,IAAO,GAAA,CAAA,CAAA;AACX,YAAA,IAAIC,IAAO,GAAA,CAAA,CAAA;AAEX,YAAA,IAAI1wD,qBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAuB,CAACK,GAAAA,CAAI,EAAE;AAChC4pD,gBAAAA,aAAa,CAAE,SAAS5pD,GAAAA,GAAAA,CAAIxsC,WAAW,EAAA,GAAG,iBAAiB,CAAA,GAAGmsC,qBAAqB,CAACK,GAAI,CAAA,CAACkL,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;gBACnGW,IAAO,GAAA,CAAA,CAAA;AACPrG,gBAAAA,aAAAA,IAAiB,KAAM,CAAIpkG,GAAAA,CAAAA,CAAAA;AAC3Bg6C,gBAAAA,qBAAAA,CAAsBvb,OAAO,GAAG,IAAA,CAAA;AAClC,aAAA;AACA++B,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAE,gBAAA,aAAA,GAAa04C,IAAIxsC,WAAW,EAAA;AAAM48F,gBAAAA,IAAAA;AAAK,aAAA,CAAA,CAAA;AACrD,YAAA,IAAIvwD,sBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAwB,CAACG,GAAAA,CAAI,EAAE;AACjC4pD,gBAAAA,aAAa,CAAE,MAAM5pD,GAAAA,GAAAA,CAAIxsC,WAAW,EAAA,GAAG,iBAAiB,CAAA,GAAGqsC,sBAAsB,CAACG,GAAI,CAAA,CAACkL,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;gBACjGY,IAAO,GAAA,CAAA,CAAA;AACPtG,gBAAAA,aAAAA,IAAiB,KAAM,EAAKpkG,GAAAA,CAAAA,CAAAA;gBAC5BiqG,aAAgB,GAAA,IAAA,CAAA;AAChB/vD,gBAAAA,sBAAAA,CAAuBzb,OAAO,GAAG,IAAA,CAAA;AACnC,aAAA;AACA++B,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAE,gBAAA,UAAA,GAAU04C,IAAIxsC,WAAW,EAAA;AAAM68F,gBAAAA,IAAAA;AAAK,aAAA,CAAA,CAAA;AACpD,SAAA,CAAA,CAAA;QACA,IAAI1wD,qBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAuBO,CAAAA,UAAU,EAAE;AACrCijB,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,oBAAA;AAAsB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AACxCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACxB,SAAA;AAEA,QAAA,IAAI6F,aAAe,EAAA;YACjB,IAAI/vD,sBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAwBC,CAAAA,UAAU,EAAE;AACtCqjB,gBAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,oBAAA,qBAAA;AAAuB,oBAAA,IAAA;AAAK,iBAAA,CAAA,CAAA;AACzCyiG,gBAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACxB,aAAA;YACAH,aAAc0G,CAAAA,UAAU,GAAG,IAAIlyD,YAAAA,CAAayB,CAAAA,sBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,CAAwBhN,MAAM,KAAI;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACzF,SAAA;AAEA+2D,QAAAA,aAAAA,CAAc2G,oBAAoB,GAAGtB,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAkBzjG,CAAC,CAAC0/C,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;QACnE,IAAIR,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAkBuB,CAAAA,YAAY,EAAE;AAGIvB,YAAAA,IAAAA,mBAAAA,CAAAA;AAFtC9rC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACjCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;YACtBH,aAAc6G,CAAAA,qBAAqB,GAAGxB,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,mBAAAA,GAAAA,iBAAkB1oG,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAnB0oG,mBAAqB/jD,CAAAA,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AACvE,SAAA;QACA,IAAIP,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB1/F,CAAAA,CAAC,EAAE;AAC3Bo6F,YAAAA,aAAAA,CAAc8G,kBAAkB,GAAGxB,oBAAAA,CAAqB1/F,CAAC,CAAC07C,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AACpE1F,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtB5mC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACnC,SAAA;QACA,IAAI4nG,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB1jG,CAAAA,CAAC,EAAE;AAC3Bo+F,YAAAA,aAAAA,CAAc+G,kBAAkB,GAAGzB,oBAAAA,CAAqB1jG,CAAC,CAAC0/C,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AACpE1F,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtB5mC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACnC,SAAA;QACA,IAAI4nG,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB3oG,CAAAA,CAAC,EAAE;AAC3BqjG,YAAAA,aAAAA,CAAcgH,kBAAkB,GAAG1B,oBAAAA,CAAqB3oG,CAAC,CAAC2kD,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AACpE1F,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtB5mC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACnC,SAAA;QACA,IAAI4nG,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsBpvD,CAAAA,UAAU,EAAE;AACpCqjB,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,0BAAA;AAA4B,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AAC3CyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACxB,SAAA;AACAH,QAAAA,aAAAA,CAAciH,qBAAqB,GAAGrxD,eAAgB0L,CAAAA,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AAEhE,QAAA,IAAIH,WAAa,EAAA;AACfnsC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,cAAA;AAAgB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AAClCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtBH,YAAAA,aAAAA,CAAckH,YAAY,GAAG,IAAI1yD,YAAakxD,CAAAA,WAAAA,CAAYrqG,MAAM,IAAI;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AAC7E2kG,YAAAA,aAAAA,CAAcmH,WAAW,GAAGzB,WAAAA,CAAYllF,KAAK,CAAC8gC,SAAS,CAACukD,kBAAAA,CAAAA,CAAAA;AAC1D,SAAA;QAEA,IAAI1+B,gBAAAA,IAAoB2+B,oBAAqBxjG,CAAAA,GAAG,EAAE;AAChD69F,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;YACtBH,aAAcoH,CAAAA,mBAAmB,GAAGtzC,wBAAAA,CAAyBtgD,MAAQ0tC,EAAAA,WAAAA,CAAYQ,UAAU,CAACokD,oBAAsB,EAAA,IAAA,CAAA,EAAsBA,oBAAqBvmG,CAAAA,KAAK,EAAE,CAAA,CAAA,CAAA;SAC/J,MAAA;AACLygG,YAAAA,aAAAA,CAAcqH,aAAa,GAAGnmD,WAAYQ,CAAAA,UAAU,CAACokD,oBAAAA,CAAAA,CAAAA;AACvD,SAAA;QACA,IAAMwB,kBAAAA,GAAqBzB,mBAAmBvjG,GAAG,GAAGujG,mBAAmBhkD,MAAM,CAACrmD,MAAM,GAAG,EAAKwwE,GAAAA,iBAAAA,CAAAA;;;;AAK5F,QAAA,IAAI1K,UAAU,CAAG,EAAA;YACfukC,kBAAmBvjG,CAAAA,GAAG,GAAG,CAAC,CAAA,CAAA;YAC1BujG,kBAAmBtmG,CAAAA,KAAK,GAAGomG,SAAYA,GAAAA,SAAS,CAAC,CAAE,CAAA,GAAG4B,OAAQ1B,CAAAA,kBAAAA,CAAmBtmG,KAAK,CAAA,CAAA;YACtF,IAAIumG,oBAAAA,CAAqBvmG,KAAK,GAAG,CAAG,EAAA;gBAClCumG,oBAAqBxjG,CAAAA,GAAG,GAAG,CAAC,CAAA,CAAA;gBAC5BwjG,oBAAqBvmG,CAAAA,KAAK,GAAGomG,SAAYA,GAAAA,SAAS,CAAC,CAAE,CAAA,GAAG4B,OAAQzB,CAAAA,oBAAAA,CAAqBvmG,KAAK,CAAA,CAAA;AAC5F,aAAA;AACF,SAAA;QACA,IAAI+nG,kBAAAA,IAAsBngC,oBAAoB44B,mBAAqB,EAAA;YACjE,IAAMzoC,GAAAA,GAAMxD,wBAAyBtgD,CAAAA,MAAAA,EAAQ0tC,WAAYQ,CAAAA,UAAU,CAACmkD,kBAAoB,EAAA,IAAA,CAAA,EAAsBA,kBAAmBtmG,CAAAA,KAAK,EAAE,CAAA,CAAA,CAAA;AAExIygG,YAAAA,aAAAA,CAAcS,mBAAmB,GAAGnpC,GAAAA,CAAAA;YACpCyuC,qBAAwB,GAAA,CAAA,CAAA;SACnB,MAAA;AACL/F,YAAAA,aAAAA,CAAcU,aAAa,GAAGx/C,WAAYQ,CAAAA,UAAU,CAACmkD,kBAAAA,CAAAA,CAAAA;AACvD,SAAA;AACA,QAAA,IAAM2B,WAAc,GAAA;AAAC,YAAA,KAAA;AAAOhoB,YAAAA,UAAAA;AAAY2gB,YAAAA,aAAAA;AAAe0F,YAAAA,kBAAAA,CAAmBtmG,KAAK;AAAEsmG,YAAAA,kBAAAA,CAAmBvjG,GAAG;AAAEwjG,YAAAA,oBAAAA,CAAqBvmG,KAAK;AAAEumG,YAAAA,oBAAAA,CAAqBxjG,GAAG;AAAC,SAAA,CAACsgE,IAAI,CAAC,GAAA,CAAA,CAAA;AAEpKrJ,QAAAA,MAAAA,CAAO77D,IAAI,CACT;AAAC,YAAA,wBAAA;AAA0BmoG,YAAAA,kBAAAA,CAAmBtmG,KAAK;SAAC,EACpD;AAAC,YAAA,wBAAA;AAA0BumG,YAAAA,oBAAAA,CAAqBvmG,KAAK;SAAC,EACtD;AAAC,YAAA,0BAAA;AAA4BsmG,YAAAA,kBAAAA,CAAmBvjG,GAAG;SAAC,EACpD;AAAC,YAAA,0BAAA;AAA4BwjG,YAAAA,oBAAAA,CAAqBxjG,GAAG;AAAC,SAAA,CAAA,CAAA;AAExD,QAAA,IAAI,CAAC8iG,wBAAwB,GAAGS,kBAAAA,CAAmBvjG,GAAG,CAAA;AAEtD,QAAA,IAAM2/D,QAAW2+B,GAAAA,YAAAA,CAAAA;AACjB,QAAA,IAAM6G,cAAiB,GAAC,+BAA+B1B,GAAAA,qBAAAA,GAAsB,IAAI2B,GAAAA,YAAAA,CAAAA;AACjF,QAAA,IAAMlkC,MAASikC,GAAAA,cAAAA,CAAAA;AAEf,QAAA,IAAM5tC,MAAS,GAAA;YACboI,QAAAA,EAAAA,QAAAA;YACAuB,MAAAA,EAAAA,MAAAA;AACAG,YAAAA,WAAAA,EAAarC,UAAU,CAAInI,GAAAA,WAAAA,CAAYyK,KAAK,GAAGzK,YAAY2nC,KAAK;YAChE1gB,MAAQ,EAAA,IAAA;YACR2gB,OAASyG,EAAAA,WAAAA;YACTjuC,MAAAA,EAAAA,MAAAA;AACAv7D,YAAAA,IAAAA,EAAM,WAAYA,GAAAA,IAAAA;AACpB,SAAA,CAAA;AACA,QAAA,IAAM2pG,UAA4B,GAAA;YAChC9tC,MAAAA,EAAAA,MAAAA;AACF,SAAA,CAAA;AACA,QAAA,IAAMkoC,cAAc7nC,gBAAiBC,CAAAA,QAAAA,CAAAA,CAAAA;AAErC6lC,QAAAA,aAAAA,CAAc4H,UAAU,GAAG,IAAIpzD,YAAAA,CAAaoxD,OAAU,GAAA;AAAC,YAAA,CAAA,GAAIA,QAAQnzC,QAAQ,EAAA;AAAI,YAAA,CAAA,GAAImzC,QAAQlzC,SAAS,EAAA;SAAG,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA,CAAA;AAChHstC,QAAAA,aAAAA,CAAcgC,QAAQ,GAAG4D,OAAAA,CAAAA;QACzB5F,aAAc6H,CAAAA,YAAY,GAAG,IAAIrzD,YAAa,CAAA;AAACoxD,YAAAA,OAAAA,GAAU,CAAI,GAAA,CAAA;YAAG,CAAC7D,WAAAA;AAAa,YAAA,CAAA;AAAG,YAAA,EAAE,CAAC,CAACpiB,SAAAA,IAAa,CAACC,oBAAmB,CAAA;AAAG,SAAA,CAAA,CAAA;AACzHogB,QAAAA,aAAAA,CAAc8H,OAAO,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AACpC9H,QAAAA,aAAAA,CAAc+H,aAAa,GAAG;AAACtC,YAAAA,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS,CAAC,CAAA,CAAE,KAAI,CAAA;AAAGA,YAAAA,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS,CAAC,CAAA,CAAE,KAAI,CAAA;AAAGA,YAAAA,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS,CAAC,CAAA,CAAE,KAAI,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;;AAG1F,QAAA,IAAMlqE,QAAW2hC,GAAAA,QAAAA,CAASrgE,MAAM,CAAC2W,MAAQm0F,EAAAA,UAAAA,CAAAA,CAAAA;AAEzCpsE,QAAAA,QAAAA,CAAS4+B,QAAQ,GAAG,IAAA,CAAA;AACpB5+B,QAAAA,QAAAA,CAAS4iC,SAAS,GAAG,IAAA,CAAA;QACrB5iC,QAAS6iC,CAAAA,SAAS,GAAG,CAAC,CAACuhB,SAAAA,CAAAA;QACvBpkD,QAAS8iC,CAAAA,UAAU,GAAGof,IAAO,GAAA;AAACA,YAAAA,IAAAA;AAAMA,YAAAA,IAAAA;SAAK,GAAG/iF,SAAAA,CAAAA;AAC5CkhE,QAAAA,WAAAA,CAAYrgC,QAAUsgC,EAAAA,QAAAA,CAAAA,CAAAA;AACtBjB,QAAAA,YAAAA,CAAar/B,QAAU4+B,EAAAA,QAAAA,CAAAA,CAAAA;AACvBgB,QAAAA,WAAAA,CAAY5/B,QAAU6/B,EAAAA,IAAAA,CAAAA,CAAAA;AAEtB1/D,QAAAA,MAAAA,CAAOkQ,IAAI,CAACo0F,aAAe10F,CAAAA,CAAAA,GAAG,CAACtN,SAAAA,IAAAA,EAAAA;YAC7B,IAAMlE,KAAAA,GAAQkmG,aAAa,CAAChiG,IAAK,CAAA,CAAA;YAEjC,IAASrD,YAALb,CAAAA,KAAAA,EAAiBy4D,OAAS,CAAA,EAAA;gBAC5Bh3B,QAASwiC,CAAAA,UAAU,CAAC//D,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;AAE1B,gBAAA,OAAA;AACF,aAAA;AACA,YAAA,IAAMwsB,MAAiB,EAAE,CAAA;YAEzB,OAAQu+E,sBAAsB,CAAC7mG,IAAK,CAAA;gBAClC,KAAK,MAAA;AACHu9B,oBAAAA,QAAAA,CAASqiD,UAAU,CAAC5/E,IAAM0J,EAAAA,OAAAA,CAAQlC,SAAS,CAAC1L,KAAAA,CAAAA,CAAAA,CAAAA;AAE5C,oBAAA,MAAA;gBACF,KAAK,MAAA;AACHyhC,oBAAAA,QAAAA,CAASorC,UAAU,CAAC3oE,IAAM2H,EAAAA,OAAAA,CAAQH,SAAS,CAAC1L,KAAAA,CAAAA,CAAAA,CAAAA;AAE5C,oBAAA,MAAA;gBACF,KAAK,MAAA;AACHyhC,oBAAAA,QAAAA,CAAS2pC,UAAU,CAAClnE,IAAM2E,EAAAA,OAAAA,CAAQ6C,SAAS,CAAC1L,KAAAA,CAAAA,CAAAA,CAAAA;AAE5C,oBAAA,MAAA;gBACF,KAAK,WAAA;oBAEH,IAAK,IAAIiC,IAAI,CAAGA,EAAAA,CAAAA,GAAIjC,MAAM0B,MAAM,EAAEO,CAAIA,GAAAA,CAAAA,GAAI,CAAG,CAAA;wBAC3C,IAAMqB,CAAAA,GAAI,IAAIsK,OAAQ5N,CAAAA,KAAK,CAACiC,CAAE,CAAA,EAAEjC,KAAK,CAACiC,CAAAA,GAAI,EAAE,EAAEjC,KAAK,CAACiC,CAAI,GAAA,CAAA,CAAE,EAAEjC,KAAK,CAACiC,IAAI,CAAE,CAAA,CAAA,CAAA;AAExEuqB,wBAAAA,GAAAA,CAAI5oB,IAAI,CAACN,CAAAA,CAAAA,CAAAA;AACX,qBAAA;oBACAm+B,QAASusD,CAAAA,eAAe,CAAC9pF,IAAMsoB,EAAAA,GAAAA,CAAAA,CAAAA;AAC/BA,oBAAAA,GAAAA,CAAI9qB,MAAM,GAAG,CAAA,CAAA;AAEb,oBAAA,MAAA;AACF,gBAAA;AACE6H,oBAAAA,OAAAA,CAAQ+L,IAAI,CAAC,UAAC,GAAUpR,IAAK,GAAA,yBAAA,CAAA,CAAA;AACjC,aAAA;AACF,SAAA,CAAA,CAAA;AAEAu9B,QAAAA,QAAAA,CAASorC,UAAU,CAAC,eAAA,EAAiB,IAAIhhE,OAAAA,CAAQ,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;QACvD41B,QAASxQ,CAAAA,QAAQ,CAAC,mBAAqB,EAAA,GAAA,CAAA,CAAA;AAEvC,QAAA,IAAMmhB,QAAW6zB,GAAAA,QAAAA,CAASljE,MAAM,CAAC2W,MAAQw0F,EAAAA,qBAAAA,CAAsBrrB,QAAW,GAAA,CAAA,EAAG,IAAI,CAAC6oB,SAAS,EAAE,WAAYxnG,GAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AACzG,QAAA,IAAM45D,IAAOuI,GAAAA,IAAAA,CAAKtjE,MAAM,CAAC2W,MAAQ,EAAA;AAC/BxV,YAAAA,IAAAA,EAAM,YAAaA,GAAAA,IAAAA;;YAEnBu9B,QAAAA,EAAAA,QAAAA;YACA2Q,QAAAA,EAAAA,QAAAA;AACF,SAAA,CAAA,CAAA;QAEA,IAAI,CAAClL,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAAC42B,IAAI,GAAGA,IAAAA,CAAAA;AACZ,QAAA,IAAI,CAAC1rB,QAAQ,GAAG0rB,IAAAA,CAAK4I,aAAa,EAAA,CAAA;QAClC,IAAI,CAACklC,WAAW,GAAGA,WAAAA,CAAAA;QACnB,IAAI,CAACL,gBAAgB,GAAGA,gBAAAA,CAAAA;QACxB,IAAI,CAAC3vD,iBAAiB,GAAGA,iBAAAA,CAAAA;QACzB,IAAI,CAACK,qBAAqB,GAAGA,qBAAAA,CAAAA;QAC7B,IAAI,CAACE,sBAAsB,GAAGA,sBAAAA,CAAAA;QAC9B,IAAI,CAACA,sBAAsB,GAAGA,sBAAAA,CAAAA;QAC9B,IAAI,CAACL,eAAe,GAAGA,eAAAA,CAAAA;QACvB,IAAI,CAAC0vD,oBAAoB,GAAGA,oBAAAA,CAAAA;QAC5B,IAAI,CAAC3oB,QAAQ,GAAGA,QAAAA,CAAAA;;QAEhB,IAAI,CAACsrB,cAAc,GAAG1C,WAAc,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;SAAE,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QACvF,IAAI,CAACt6F,IAAI,GAAG,CAAA,CAAA;;AA9RH65F,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;;;;;;;;;;AA2SXoD,IAAAA,MAAAA,CAAAA,aAOC,GAPDA,SAAAA,aAAAA,CAAe3oG,KAAa,EAAA;AAC1B,QAAA,IAAMoO,OAAO,IAAI,CAACu+B,QAAQ,CAAC83C,gBAAgB,CAAC,MAAA,CAAA,CAAA;QAC5C,IAAMjoF,CAAAA,GAAIwD,QAAQ,EAAK,GAAA,CAAA,CAAA;QAEvBgP,WAAYZ,CAAAA,IAAAA,CAAAA,CAAAA;QAEZ,OAAO;AAACA,YAAAA,IAAI,CAAC5R,CAAE,CAAA;YAAE4R,IAAI,CAAC5R,IAAI,CAAE,CAAA;YAAE4R,IAAI,CAAC5R,IAAI,CAAE,CAAA;YAAE4R,IAAI,CAAC5R,IAAI,CAAE,CAAA;AAAC,SAAA,CAAA;AACzD,KAAA,CAAA;IAEAosG,MAAAA,CAAAA,WAKC,GALDA,SAAAA,WAAAA,GAAAA;AACE,QAAA,IAAI,CAACC,iBAAiB,CAAC,IAAI,CAACl8D,QAAQ,CAAA,CAAA;QACpC,IAAI,CAAC64D,aAAa,GAAG,CAAA,CAAA;AACrB,QAAA,IAAI,CAAC74D,QAAQ,CAAC24C,YAAY,CAAC,CAAA,CAAA,CAAA;QAC3B,IAAI,CAACwjB,sBAAsB,GAAG,CAAA,CAAA;AAChC,KAAA,CAAA;AAEAD,IAAAA,MAAAA,CAAAA,iBAeC,GAfDA,SAAAA,iBAAAA,CAAmBl8D,QAAkB,EAAA;QACnC,IAAMo8D,KAAAA,GAAQp8D,SAASq8D,iBAAiB,EAAA,CAAA;QACxC,IAAMhpG,KAAAA,GAAQ2sC,SAASi4C,YAAY,EAAA,CAAA;AAEnC,QAAA,IAAK,IAAIpoF,CAAI,GAAA,CAAA,EAAGA,IAAIusG,KAAM9sG,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACrC,IAAMiC,IAAAA,GAAOsqG,KAAK,CAACvsG,CAAE,CAAA,CAAA;YACrB,IAAM4R,IAAAA,GAAOu+B,QAAS83C,CAAAA,gBAAgB,CAAChmF,IAAAA,CAAAA,CAAAA;AAEvC,YAAA,IAAI2P,IAAM,EAAA;;AAERu+B,gBAAAA,QAAAA,CAASy4C,gBAAgB,CAAC3mF,IAAAA,EAAM,IAAI2P,IAAAA,CAAKzS,WAAW,CAAC,CAAA,CAAA,CAAA,CAAA;AACvD,aAAA;AACF,SAAA;;AAEAgxC,QAAAA,QAAAA,CAAS04C,YAAY,CAAC,IAAIrlF,KAAAA,CAAMrE,WAAW,CAAC,CAAA,CAAA,CAAA,CAAA;AAC9C,KAAA,CAAA;AAEA0+B,IAAAA,MAAAA,CAAAA,QAOC,GAPDA,SAAAA,QAAAA,CAAU93B,EAAU,EAAA;QAClB,IAAM0mG,SAAAA,GAAY,IAAI,CAACt8D,QAAQ,CAAC83C,gBAAgB,CAAC;AACjD,QAAA,IAAMpB,cAAcriF,IAAKC,CAAAA,IAAI,CAACgoG,SAAAA,CAAUhtG,MAAM,GAAG,EAAA,CAAA,CAAA;QAEjD,IAAI,CAACitG,gBAAgB,CAAC7lB,WAAa9gF,EAAAA,EAAAA,CAAAA,CAAAA;QACnC,IAAI,CAAC4mG,aAAa,CAAC9lB,WAAa9gF,EAAAA,EAAAA,CAAAA,CAAAA;QAChC,IAAI,CAAC6mG,eAAe,CAAC/lB,WAAa9gF,EAAAA,EAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AAEA+hG,IAAAA,MAAAA,CAAAA,SAQC,GARDA,SAAAA,SAAAA,CAAW54F,IAAY,EAAA;AACrB,QAAA,IAAM29F,UAAU,IAAI,CAAC18D,QAAQ,CAAC83C,gBAAgB,CAAC,SAAA,CAAA,CAAA;QAE/C,IAAK,IAAIjoF,IAAI,CAAGA,EAAAA,CAAAA,GAAI6sG,QAAQptG,MAAM,EAAEO,KAAK,CAAG,CAAA;YAC1C6sG,OAAO,CAAC7sG,CAAI,GAAA,CAAA,CAAE,IAAIkP,IAAAA,CAAAA;AACpB,SAAA;AACA,QAAA,IAAI,CAACihC,QAAQ,CAACy4C,gBAAgB,CAAC,SAAWikB,EAAAA,OAAAA,CAAAA,CAAAA;QAC1C,IAAI,CAAC39F,IAAI,IAAIA,IAAAA,CAAAA;AACf,KAAA,CAAA;AAEA49F,IAAAA,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,WAAAA,CAAatpG,KAAa,EAAA;AACxB,QAAA,IAAIA,KAAQ,GAAA,IAAI,CAACwlG,aAAa,EAAE;YAC9B,IAAI,CAAC74D,QAAQ,CAAC42D,mBAAmB,CAAC,SAAWvjG,EAAAA,KAAAA,GAAQ,EAAI,EAAA,IAAIi1C,YAAa,CAAA,EAAA,CAAA,CAAA,CAAA;AAC5E,SAAA;AACF,KAAA,CAAA;AAEAqoD,IAAAA,MAAAA,CAAAA,QA0HC,GA1HDA,SAAAA,QAAUt9F,CAAAA,KAAa,EAAEqsC,KAAY,EAAA;QACnC,IAAM+wC,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAE9B,QAAA,IAAIp9E,QAAQo9E,QAAU,EAAA;AACpB,YAAA,IAAMooB,gBAAgBxlG,KAAQ,GAAA,CAAA,CAAA;AAC9B,YAAA,IAAMqjF,cAAcmiB,aAAgB,GAAA,CAAA,CAAA;YACpC,IAAM74D,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,YAAA,IAAM48D,cAAiB/D,GAAAA,aAAAA,GAAgB,IAAI,CAACsD,sBAAsB,CAAA;AAClE,YAAA,IAAIU,GAAM,GAAA,CAAA,CAAA;AAEV,YAAA,IAAI,IAAI,CAAChE,aAAa,GAAG,GAAK,EAAA;gBAC5BgE,GAAM,GAAC,CAAA,IAAI,CAAChE,aAAa,GAAG,GAAE,IAAK,IAAI,CAACA,aAAa,CAAA;AACvD,aAAA,MAAO,IAAI,IAAI,CAACA,aAAa,GAAG,GAAK,EAAA;gBACnCgE,GAAM,GAAA,GAAA,CAAA;AACR,aAAA,MAAO,IAAI,IAAI,CAAChE,aAAa,GAAG,CAAG,EAAA;gBACjCgE,GAAM,GAAA,CAAA,CAAA;AACR,aAAA;AACA,YAAA,IAAMvM,SAA0C,GAAA;AAC9C32B,gBAAAA,IAAAA,EAAM,IAAIrxB,YAAa,CAAA,EAAA,CAAA;AACvBw0D,gBAAAA,IAAAA,EAAM,IAAIx0D,YAAa,CAAA,EAAA,CAAA;AACvBo0D,gBAAAA,OAAAA,EAAS,IAAIp0D,YAAa,CAAA,EAAA,CAAA;AAC1By0D,gBAAAA,YAAAA,EAAc,IAAIz0D,YAAa,CAAA,EAAA,CAAA;AAC/B00D,gBAAAA,WAAAA,EAAY,IAAI10D,YAAa,CAAA,EAAA,CAAA;AAC7B20D,gBAAAA,UAAAA,EAAY,IAAI30D,YAAa,CAAA,EAAA,CAAA;AAC/B,aAAA,CAAA;YACA,IAAMgxD,SAAAA,GAAY,IAAI,CAACA,SAAS,CAAA;AAEhC,YAAA,IAAIA,SAAW,EAAA;gBACbhJ,SAAU4M,CAAAA,OAAO,GAAG,IAAI50D,YAAa,CAAA,EAAA,CAAA,CAAA;AACvC,aAAA;AAEA,YAAA,IAAMi6C,UAAU,IAAI9oF,OAAAA,EAAAA,CAAAA;AACpB,YAAA,IAAMuoC,WAAW,IAAI9rB,UAAAA,EAAAA,CAAAA;AACrB,YAAA,IAAMre,KAAQ,GAAA,IAAI4B,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAEhCimC,YAAAA,KAAAA,CAAMvhB,SAAS,CAACmmB,cAAc,CAACi+C,SAASvgD,QAAUnqC,EAAAA,KAAAA,CAAAA,CAAAA;AAClD,YAAA,IAAMmxC,SAAY5G,GAAAA,SAAAA,CAAUsB,WAAW,CAAC1B,UAAU,IAAI3J,KAAAA,EAAAA,CAAAA,CAAAA;YAEtD,IAAM7iB,QAAAA,GAAW+sE,QAAQppF,OAAO,EAAA,CAAA;YAChC,IAAMsc,QAAAA,GAAWuzB,UAAU7vC,OAAO,EAAA,CAAA;YAElC,IAAMgkG,OAAAA,GAAU,IAAI,CAACpB,cAAc,CAAA;AACnC,YAAA,IAAMj4B,GAAM,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAGpkC,gBAAAA,KAAAA,CAAM09D,KAAK;AAAE19D,gBAAAA,KAAAA,CAAM4J,QAAQ;AAAC,aAAA,CAAA;AAC/C,YAAA,IAAM+zD,OAAU,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;YAC5B,IAAMC,GAAAA,GAAM59D,MAAM49D,GAAG,CAAA;YACrB,IAAMx+F,KAAAA,GAAkB4gC,MAAM5gC,KAAK,CAAA;AACnC,YAAA,IAAMy+F,WAAc,GAAA;gBAAC,CAAC,EAAA;AAAI,gBAAA,EAAA;gBAAI,CAAC,EAAA;gBAAI,CAAC,EAAA;AAAI,gBAAA,EAAA;AAAI,gBAAA,EAAA;AAAI,gBAAA,EAAA;gBAAI,CAAC,EAAA;AAAG,aAAA,CAAA;YACxD,IAAMp7D,IAAAA,GAAO9tC,KAAKpB,MAAM,EAAA,CAAA;YACxB,IAAI+6E,MAAAA,CAAAA;AAEJ,YAAA,IAAIsrB,SAAW,EAAA;AACbtrB,gBAAAA,MAAAA,GAAStuC,MAAMsuC,MAAM,CAAA;AACvB,aAAA;AAEA,YAAA,IAAK,IAAIhvE,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;AAC1B,gBAAA,IAAMtM,SAASsM,CAAI,GAAA,CAAA,CAAA;AACnB,gBAAA,IAAMw+F,KAAKx+F,CAAI,GAAA,CAAA,CAAA;AACf,gBAAA,IAAMy+F,KAAKz+F,CAAI,GAAA,CAAA,CAAA;AACf,gBAAA,IAAM0+F,MAAM1+F,CAAI,GAAA,EAAA,CAAA;AAChB,gBAAA,IAAM2+F,KAAK3+F,CAAI,GAAA,CAAA,CAAA;AAEfsxF,gBAAAA,SAAAA,CAAU32B,IAAI,CAAC9kE,GAAG,CAAC2gB,QAAUkoF,EAAAA,GAAAA,CAAAA,CAAAA;AAC7BJ,gBAAAA,GAAAA,CAAIlkG,IAAI,CAACk3F,SAAU32B,CAAAA,IAAI,EAAE+jC,GAAM,GAAA,CAAA,CAAA,CAAA;AAC/BpN,gBAAAA,SAAAA,CAAUwM,IAAI,CAACjoG,GAAG,CAAC4gB,QAAUkoF,EAAAA,EAAAA,CAAAA,CAAAA;AAC7BrN,gBAAAA,SAAAA,CAAUwM,IAAI,CAACa,EAAK,GAAA,CAAA,CAAE,GAAGx7D,IAAAA,CAAAA;AACzBmuD,gBAAAA,SAAAA,CAAUwM,IAAI,CAACjoG,GAAG,CAACiK,OAAO6+F,EAAK,GAAA,CAAA,CAAA,CAAA;AAE/B,gBAAA,IAAIrE,SAAW,EAAA;;AAEbhJ,oBAAAA,SAAAA,CAAU4M,OAAO,CAACroG,GAAG,CAACm5E,MAAQwvB,EAAAA,EAAAA,CAAAA,CAAAA;AAChC,iBAAA;gBACA,IAAMI,EAAAA,GAAKl+D,KAAMk+D,CAAAA,EAAE,IAAIP,OAAAA,CAAAA;AAEvB,gBAAA,IAAIO,EAAI,EAAA;oBACN,IAAMC,GAAAA,GAAMvE,SAAa,GAAA,CAAA,GAAI6D,OAAO,CAACzqG,MAAS,GAAA,CAAA,CAAE,GAAIyqG,OAAO,CAACzqG,MAAAA,GAAS,CAAE,CAAA,CAAA;AAEvEoxE,oBAAAA,GAAG,CAAC,CAAA,CAAE,GAAG85B,EAAE,CAAC,CAAA,CAAE,GAAGT,OAAO,CAACzqG,MAAAA,CAAO,GAAGkrG,EAAE,CAAC,CAAE,CAAA,CAAA;oBACxC95B,GAAG,CAAC,CAAE,CAAA,GAAG85B,EAAE,CAAC,EAAE,GAAGC,GAAAA,GAAMD,EAAE,CAAC,CAAE,CAAA,CAAA;AAC9B,iBAAA;AACAtN,gBAAAA,SAAAA,CAAUoM,OAAO,CAAC7nG,GAAG,CAACivE,GAAK25B,EAAAA,EAAAA,CAAAA,CAAAA;AAC3B,gBAAA,IAAMK,KAAM9+F,CAAIA,GAAAA,CAAAA,CAAAA;AAChB,gBAAA,IAAM22B,EAAK,GAAC4nE,CAAAA,WAAW,CAACO,EAAG,CAAA,GAAG,IAAI,CAAChpE,MAAM,CAACp/B,CAAC,IAAImC,MAAMnC,CAAC,CAAA;AACtD,gBAAA,IAAMkgC,KAAK,CAAC2nE,WAAW,CAACO,KAAK,CAAE,CAAA,GAAG,IAAI,CAAChpE,MAAM,CAACrkC,CAAC,IAAIoH,MAAMpH,CAAC,CAAA;AAE1D,gBAAA,IAAK,IAAIo/C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;oBAC1BygD,SAAU32B,CAAAA,IAAI,CAAC+jC,GAAAA,GAAM,CAAI7tD,GAAAA,CAAAA,CAAE,GAAGnQ,KAAAA,CAAMq+D,IAAI,CAAC3mG,UAAU,CAACy4C,CAAKla,CAAAA,GAAAA,EAAAA,CAAAA;oBACzD26D,SAAU32B,CAAAA,IAAI,CAAC+jC,GAAAA,GAAM,CAAI7tD,GAAAA,CAAAA,CAAE,GAAGnQ,KAAAA,CAAMs+D,IAAI,CAAC5mG,UAAU,CAACy4C,CAAKja,CAAAA,GAAAA,EAAAA,CAAAA;AAC3D,iBAAA;AACF,aAAA;YACA,IAAM6sD,SAAAA,GAAY,IAAI75C,WAAY,CAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;aAAE,CAACxpC,GAAG,CAAC1J,SAAAA,CAAAA,EAAAA;AAAKA,gBAAAA,OAAAA,CAAAA,GAAIrC,KAAQ,GAAA,CAAA,CAAA;;AAE1E,YAAA,IAAIupG,cAAgB,EAAA;gBAClB,IAAMqB,aAAAA,GAAgBj+D,SAASi4C,YAAY,EAAA,CAAA;AAC3C,gBAAA,IAAMmZ,MAAMv9F,aAAcoqG,CAAAA,aAAAA,EAAepF,aAAgB,GAAA,CAAA,EAAGpoB,WAAW,CAAGosB,EAAAA,GAAAA,CAAAA,CAAAA;gBAE1EzL,GAAIv8F,CAAAA,GAAG,CAAC4tF,SAAAA,EAAWpvF,KAAQ,GAAA,CAAA,CAAA,CAAA;AAC3B2sC,gBAAAA,QAAAA,CAAS04C,YAAY,CAAC0Y,GAAAA,CAAAA,CAAAA;AACtB,gBAAA,IAAI,CAAC+K,sBAAsB,GAAG/K,GAAAA,CAAI9hG,MAAM,GAAG,CAAA,CAAA;aACtC,MAAA;gBACL0wC,QAASo3D,CAAAA,eAAe,CAAC/jG,KAAAA,GAAQ,CAAGovF,EAAAA,SAAAA,CAAAA,CAAAA;AACtC,aAAA;AAEAjzF,YAAAA,MAAAA,CAAOkQ,IAAI,CAAC4wF,SAAW/wF,CAAAA,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;gBAC7B,IAAM2P,IAAAA,GAAO6uF,SAAS,CAACx+F,IAAK,CAAA,CAAA;AAC5B,gBAAA,IAAMosG,WAAWl+D,QAASm+D,CAAAA,kBAAkB,CAACrsG,IAAAA,CAAAA,GAAQw2C,aAAan0C,iBAAiB,CAAA;AAEnF,gBAAA,IAAIyoG,cAAgB,EAAA;oBAClB,IAAMwB,QAAAA,GAAWp+D,QAAS83C,CAAAA,gBAAgB,CAAChmF,IAAAA,CAAAA,CAAAA;oBAE3CuQ,WAAY+7F,CAAAA,QAAAA,CAAAA,CAAAA;AAEZ,oBAAA,IAAMC,UAAUxqG,aAAcuqG,CAAAA,QAAAA,EAAU1nB,cAAcwnB,QAAUztB,EAAAA,QAAAA,GAAW,IAAIytB,QAAUrB,EAAAA,GAAAA,CAAAA,CAAAA;AAEzFwB,oBAAAA,OAAAA,CAAQxpG,GAAG,CAAC4M,IAAMA,EAAAA,IAAAA,CAAKnS,MAAM,GAAG+D,KAAAA,CAAAA,CAAAA;oBAChC2sC,QAASy4C,CAAAA,gBAAgB,CAAC3mF,IAAMusG,EAAAA,OAAAA,CAAAA,CAAAA;iBAC3B,MAAA;AACLr+D,oBAAAA,QAAAA,CAAS42D,mBAAmB,CAAC9kG,IAAAA,EAAM2P,IAAKnS,CAAAA,MAAM,GAAG+D,KAAOoO,EAAAA,IAAAA,CAAAA,CAAAA;AAC1D,iBAAA;AACF,aAAA,CAAA,CAAA;YACA,IAAI,CAACo3F,aAAa,GAAGxkG,IAAAA,CAAK+B,GAAG,CAACyiG,aAAAA,EAAe,IAAI,CAACA,aAAa,CAAA,CAAA;AAC/D74D,YAAAA,QAAAA,CAAS24C,YAAY,CAAC,IAAI,CAACkgB,aAAa,GAAG,CAAA,CAAA,CAAA;AAC7C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ0D,gBA4EP,GA5ED,SAAQA,gBAAkB7lB,CAAAA,WAAmB,EAAEnkE,SAAiB,EAAA;QAC9D,IAAM82D,SAAAA,GAAY,IAAI,CAACtqE,IAAI,CAAA;AAC3B,QAAA,IAAIu/F,oBAAoB,IAAI,CAACt+D,QAAQ,CAAC83C,gBAAgB,CAAC,cAAA,CAAA,CAAA;QACvD,IAAMymB,SAAAA,GAAY,IAAI,CAACv+D,QAAQ,CAAC83C,gBAAgB,CAAC;AACjD,QAAA,IAAM0mB,eAAe,IAAI,CAACx+D,QAAQ,CAAC83C,gBAAgB,CAAC,SAAA,CAAA,CAAA;AAEpD,QAAA,IAAIwmB,iBAAkBhvG,CAAAA,MAAM,GAAGonF,WAAAA,GAAc,CAAG,EAAA;AAC9C4nB,YAAAA,iBAAAA,GAAoB,IAAI,CAACG,WAAW,CAACH,mBAAmB5nB,WAAc,GAAA,CAAA,CAAA,CAAA;AACxE,SAAA;;AAEA,QAAA,IAAIgoB,SAAY,GAAA,CAAA,CAAA;AAChB,QAAA,IAAIC,SAAY,GAAA,CAAA,CAAA;AAChB,QAAA,IAAIC,SAAY,GAAA,CAAA,CAAA;QAChB,IAAM/C,aAAAA,GAAgB,IAAI,CAACnwC,IAAI,CAACr8B,QAAQ,CAACoiD,UAAU,CAAC,eAAA,CAAA,CAAA;QACpD,IAAMspB,qBAAAA,GAAwB,IAAI,CAACrvC,IAAI,CAACr8B,QAAQ,CAACoiD,UAAU,CAAC,uBAAA,CAAA,CAAA;AAE5D,QAAA,IAAK,IAAI5hF,CAAI,GAAA,CAAA,EAAGA,CAAI6mF,GAAAA,WAAAA,EAAa7mF,KAAK,CAAG,CAAA;YACvC,IAAMgvG,SAAAA,GAAYhvG,IAAI,EAAK,GAAA,CAAA,CAAA;YAE3B6uG,SAAYH,GAAAA,SAAS,CAACM,SAAU,CAAA,CAAA;YAChCF,SAAYJ,GAAAA,SAAS,CAACM,SAAAA,GAAY,CAAE,CAAA,CAAA;YACpCD,SAAYL,GAAAA,SAAS,CAACM,SAAAA,GAAY,CAAE,CAAA,CAAA;;YAEpC,IAAMjpG,EAAAA,GAAKyzE,YAAYm1B,YAAY,CAAC3uG,IAAI,CAAI,GAAA,CAAA,CAAE;AAC9C,YAAA,IAAMghB,QAAW2tF,GAAAA,YAAY,CAAC3uG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AAExC,YAAA,IAAIgsG,iBAAiBd,qBAAuB,EAAA;gBAC1C,IAAMrrG,CAAAA,GAAI,IAAI,CAACg6C,eAAe,CAACD,iBAAiB,CAAC,GAAG7zC,EAAIib,EAAAA,QAAAA,CAAAA,CAAAA;;gBAExD,IAAMiuF,IAAAA,GAAOjD,aAAcnmG,CAAAA,CAAC,GAAGhG,CAAAA,CAAAA;gBAC/B,IAAMqvG,IAAAA,GAAOlD,aAAcprG,CAAAA,CAAC,GAAGf,CAAAA,CAAAA;gBAC/B,IAAMsvG,IAAAA,GAAOnD,aAAcniG,CAAAA,CAAC,GAAGhK,CAAAA,CAAAA;;gBAG/B,IAAI,IAAI,CAAC85C,iBAAiB,EAAE;;AAE1B,oBAAA,IAAM07B,QAAQ,IAAI,CAAC17B,iBAAiB,CAACp0B,QAAQ,CAACxf,EAAKib,GAAAA,QAAAA,CAAAA,CAAAA;AAEnD6tF,oBAAAA,SAAAA,GAAYA,YAAYx5B,KAAQ45B,GAAAA,IAAAA,CAAAA;AAChCH,oBAAAA,SAAAA,GAAYA,YAAYz5B,KAAQ65B,GAAAA,IAAAA,CAAAA;AAChCH,oBAAAA,SAAAA,GAAYA,YAAY15B,KAAQ85B,GAAAA,IAAAA,CAAAA;;iBAE3B,MAAA;AACLN,oBAAAA,SAAAA,GAAYA,SAAYI,GAAAA,IAAAA,CAAAA;AACxBH,oBAAAA,SAAAA,GAAYA,SAAYI,GAAAA,IAAAA,CAAAA;AACxBH,oBAAAA,SAAAA,GAAYA,SAAYI,GAAAA,IAAAA,CAAAA;;AAE1B,iBAAA;AACF,aAAA;AAEA,YAAA,IAAMC,qBAAqBpvG,CAAI,GAAA,CAAA,CAAA;AAE/B,YAAA,IAAI2uG,YAAY,CAAC3uG,CAAAA,GAAI,CAAI,GAAA,CAAA,CAAE,GAAGw5E,SAAW,EAAA;;AAEvC,gBAAA,IAAM61B,aAAgBR,GAAAA,SAAAA,IAAansF,SAAAA,GAAY,IAAG,CAAA,CAAA;AAClD,gBAAA,IAAM4sF,aAAgBR,GAAAA,SAAAA,IAAapsF,SAAAA,GAAY,IAAG,CAAA,CAAA;AAClD,gBAAA,IAAM6sF,aAAgBR,GAAAA,SAAAA,IAAarsF,SAAAA,GAAY,IAAG,CAAA,CAAA;gBAElD+rF,iBAAiB,CAACW,mBAAmB,IAAIC,aAAAA,CAAAA;gBACzCZ,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIE,aAAAA,CAAAA;gBAC7Cb,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIG,aAAAA,CAAAA;gBAE7Cd,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIC,aAAAA,CAAAA;gBAC7CZ,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIE,aAAAA,CAAAA;gBAC7Cb,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIG,aAAAA,CAAAA;gBAE7Cd,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIC,aAAAA,CAAAA;gBAC7CZ,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIE,aAAAA,CAAAA;gBAC7Cb,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIG,aAAAA,CAAAA;gBAE7Cd,iBAAiB,CAACW,kBAAqB,GAAA,CAAA,CAAE,IAAIC,aAAAA,CAAAA;gBAC7CZ,iBAAiB,CAACW,kBAAqB,GAAA,EAAA,CAAG,IAAIE,aAAAA,CAAAA;gBAC9Cb,iBAAiB,CAACW,kBAAqB,GAAA,EAAA,CAAG,IAAIG,aAAAA,CAAAA;AAChD,aAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACp/D,QAAQ,CAACy4C,gBAAgB,CAAC,cAAgB6lB,EAAAA,iBAAAA,CAAAA,CAAAA;AACjD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ9B,aA4GP,GA5GD,SAAQA,aAAe9lB,CAAAA,WAAmB,EAAEnkE,SAAiB,EAAA;AAC3D,QAAA,IAAI8sF,iBAAiB,IAAI,CAACr/D,QAAQ,CAAC83C,gBAAgB,CAAC,YAAA,CAAA,CAAA;AACpD,QAAA,IAAM0mB,eAAe,IAAI,CAACx+D,QAAQ,CAAC83C,gBAAgB,CAAC,SAAA,CAAA,CAAA;QACpD,IAAMwnB,SAAAA,GAAY,IAAI,CAACt/D,QAAQ,CAAC83C,gBAAgB,CAAC;QACjD,IAAMynB,UAAAA,GAAa,IAAI,CAACv/D,QAAQ,CAAC83C,gBAAgB,CAAC;QAClD,IAAMzO,SAAAA,GAAY,IAAI,CAACtqE,IAAI,CAAA;QAC3B,IAAMygG,eAAAA,GAAkB,IAAI,CAACzG,oBAAoB,CAAA;AAEjD,QAAA,IAAIsG,cAAe/vG,CAAAA,MAAM,GAAGonF,WAAAA,GAAc,CAAG,EAAA;AAC3C2oB,YAAAA,cAAAA,GAAiB,IAAI,CAACZ,WAAW,CAACY,gBAAgB3oB,WAAc,GAAA,CAAA,CAAA,CAAA;AAClE,SAAA;AAEA,QAAA,IAAK,IAAI7mF,CAAI,GAAA,CAAA,EAAGA,CAAI6mF,GAAAA,WAAAA,EAAa7mF,KAAK,CAAG,CAAA;AACvC,YAAA,IAAMkP,OAAOsqE,SAAYm1B,GAAAA,YAAY,CAAC3uG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AAChD,YAAA,IAAMghB,QAAW2tF,GAAAA,YAAY,CAAC3uG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AACxC,YAAA,IAAMmlB,IAAO7e,GAAAA,OAAAA,CAAM4I,IAAO8R,GAAAA,QAAAA,EAAU,GAAK,EAAA,GAAA,CAAA,CAAA;AACzC,YAAA,IAAM4uF,aAAa5vG,CAAI,GAAA,CAAA,CAAA;AACvB,YAAA,IAAMitG,OAAO,IAAI,CAAChE,qBAAqB,CAACjkG,GAAG,CAACyqG,SAAS,CAACG,WAAW,EAAEH,SAAS,CAACG,UAAa,GAAA,CAAA,CAAE,EAAEH,SAAS,CAACG,aAAa,CAAE,CAAA,CAAA,CAAA;AACvH,YAAA,IAAMrK,KAAQmK,GAAAA,UAAU,CAAC1vG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AAEnC,YAAA,IAAM4lB,QAAWqnF,GAAAA,IAAAA,CAAAA;AAEjB,YAAA,IAAI,CAAC,IAAI,CAAC1D,oBAAoB,EAAE;AAC9BoG,gBAAAA,eAAAA,CAAgB9oG,OAAO,EAAA,CAAA;aAClB,MAAA;;AAEL,gBAAA,IAAI,IAAI,CAAC0iG,oBAAoB,CAAC1jG,CAAC,EAAE;oBAC/B,IAA+BjH,aAA3B,IAAI,CAAC2qG,oBAAoB,CAAC1jG,CAAC,EAAYsgD,WAAa,CAAA,EAAA;wBACtDvgC,QAAS/f,CAAAA,CAAC,IAAI,IAAI,CAAC0jG,oBAAoB,CAAC1jG,CAAC,CAAC0f,QAAQ,CAACJ,IAAMogF,EAAAA,KAAAA,CAAAA,CAAAA;qBACpD,MAAA;wBACL3/E,QAAS/f,CAAAA,CAAC,IAAI,IAAI,CAAC0jG,oBAAoB,CAAC1jG,CAAC,CAAC0f,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACrD,qBAAA;AACF,iBAAA;AACA,gBAAA,IAAI,IAAI,CAACokF,oBAAoB,CAAC3oG,CAAC,EAAE;oBAC/B,IAA+BhC,aAA3B,IAAI,CAAC2qG,oBAAoB,CAAC3oG,CAAC,EAAYulD,WAAa,CAAA,EAAA;wBACtDvgC,QAAShlB,CAAAA,CAAC,IAAI,IAAI,CAAC2oG,oBAAoB,CAAC3oG,CAAC,CAAC2kB,QAAQ,CAACJ,IAAMogF,EAAAA,KAAAA,CAAAA,CAAAA;qBACpD,MAAA;wBACL3/E,QAAShlB,CAAAA,CAAC,IAAI,IAAI,CAAC2oG,oBAAoB,CAAC3oG,CAAC,CAAC2kB,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACrD,qBAAA;AACF,iBAAA;AACA,gBAAA,IAAI,IAAI,CAACokF,oBAAoB,CAAC1/F,CAAC,EAAE;oBAC/B,IAA+BjL,aAA3B,IAAI,CAAC2qG,oBAAoB,CAAC1/F,CAAC,EAAYs8C,WAAa,CAAA,EAAA;wBACtDvgC,QAAS/b,CAAAA,CAAC,IAAI,IAAI,CAAC0/F,oBAAoB,CAAC1/F,CAAC,CAAC0b,QAAQ,CAACJ,IAAMogF,EAAAA,KAAAA,CAAAA,CAAAA;qBACpD,MAAA;wBACL3/E,QAAS/b,CAAAA,CAAC,IAAI,IAAI,CAAC0/F,oBAAoB,CAAC1/F,CAAC,CAAC0b,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AACrD,qBAAA;AACF,iBAAA;AACF,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,YAAA,IAAIS,QAAS9c,CAAAA,GAAG,CAAC8c,QAAAA,CAAAA,KAAc,GAAK,EAAA;AAClC+pF,gBAAAA,eAAAA,CAAgBvnF,QAAQ,EAAA,CAAA;AAC1B,aAAA;YAEA,IAAMynF,GAAAA,GAAMrrG,IAAKU,CAAAA,EAAE,GAAG,GAAA,CAAA;YACtB,IAAM4qG,YAAAA,GAAelqF,QAAS/f,CAAAA,CAAC,GAAGgqG,GAAAA,CAAAA;YAClC,IAAME,YAAAA,GAAenqF,QAAShlB,CAAAA,CAAC,GAAGivG,GAAAA,CAAAA;YAClC,IAAMG,YAAAA,GAAepqF,QAAS/b,CAAAA,CAAC,GAAGgmG,GAAAA,CAAAA;YAElC,IAAMI,KAAAA,GAAQzrG,IAAKoiB,CAAAA,GAAG,CAACkpF,YAAAA,CAAAA,CAAAA;YACvB,IAAMI,KAAAA,GAAQ1rG,IAAKoiB,CAAAA,GAAG,CAACmpF,YAAAA,CAAAA,CAAAA;YACvB,IAAMI,KAAAA,GAAQ3rG,IAAKoiB,CAAAA,GAAG,CAACopF,YAAAA,CAAAA,CAAAA;YAEvB,IAAMI,KAAAA,GAAQ5rG,IAAKsiB,CAAAA,GAAG,CAACgpF,YAAAA,CAAAA,CAAAA;YACvB,IAAMO,KAAAA,GAAQ7rG,IAAKsiB,CAAAA,GAAG,CAACipF,YAAAA,CAAAA,CAAAA;YACvB,IAAMO,KAAAA,GAAQ9rG,IAAKsiB,CAAAA,GAAG,CAACkpF,YAAAA,CAAAA,CAAAA;;AAGvBL,YAAAA,eAAAA,CAAgB3qG,GAAG,CAACsrG,KAAO,EAAA,CAACH,KAAO,EAAA,EAAA,EAAIA,KAAOG,EAAAA,KAAAA,EAAO,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,CAAA,CAAA;AACjEX,YAAAA,eAAAA,CAAgB9nG,QAAQ,CAAC,IAAI,CAACuhG,WAAW,CAACpkG,GAAG,CAACqrG,KAAAA,EAAO,EAAIH,EAAAA,KAAAA,EAAO,IAAI,EAAI,EAAA,EAAA,EAAI,CAACA,KAAO,EAAA,CAAA,EAAGG;AACvFV,YAAAA,eAAAA,CAAgB9nG,QAAQ,CAAC,IAAI,CAACuhG,WAAW,CAACpkG,GAAG,CAAC,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,GAAGorG,KAAO,EAAA,CAACH,OAAO,EAAIA,EAAAA,KAAAA,EAAOG;AAEvF,YAAA,IAAMG,kBAAkBvwG,CAAI,GAAA,CAAA,CAAA;YAC5B,IAAMwwG,WAAAA,GAAcb,gBAAgB1oF,QAAQ,CAAA;YAE5CuoF,cAAexqG,CAAAA,GAAG,CAACwrG,WAAaD,EAAAA,eAAAA,CAAAA,CAAAA;YAChC,IAAIvwG,CAAAA,GAAI,KAAK6mF,WAAa,EAAA;gBACxB2oB,cAAexqG,CAAAA,GAAG,CAACwrG,WAAAA,EAAaD,eAAkB,GAAA,CAAA,CAAA,CAAA;gBAClDf,cAAexqG,CAAAA,GAAG,CAACwrG,WAAAA,EAAaD,eAAkB,GAAA,EAAA,CAAA,CAAA;gBAClDf,cAAexqG,CAAAA,GAAG,CAACwrG,WAAAA,EAAaD,eAAkB,GAAA,EAAA,CAAA,CAAA;AACpD,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACpgE,QAAQ,CAACy4C,gBAAgB,CAAC,YAAc4mB,EAAAA,cAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ5C,eAwFP,GAxFD,SAAQA,eAAiB/lB,CAAAA,WAAmB,EAAEnkE,SAAiB,EAAA;AAC7D,QAAA,IAAI+tF,mBAAmB,IAAI,CAACtgE,QAAQ,CAAC83C,gBAAgB,CAAC,aAAA,CAAA,CAAA;AACtD,QAAA,IAAM0mB,eAAe,IAAI,CAACx+D,QAAQ,CAAC83C,gBAAgB,CAAC,SAAA,CAAA,CAAA;QACpD,IAAMynB,UAAAA,GAAa,IAAI,CAACv/D,QAAQ,CAAC83C,gBAAgB,CAAC;QAClD,IAAMzO,SAAAA,GAAY,IAAI,CAACtqE,IAAI,CAAA;AAE3B,QAAA,IAAIuhG,gBAAiBhxG,CAAAA,MAAM,GAAGonF,WAAAA,GAAc,CAAG,EAAA;AAC7C4pB,YAAAA,gBAAAA,GAAmB,IAAI,CAAC7B,WAAW,CAAC6B,kBAAkB5pB,WAAc,GAAA,CAAA,CAAA,CAAA;AACtE,SAAA;QAEA,IAAM6pB,UAAAA,GAAa,IAAI,CAACvH,gBAAgB,CAAA;QAExC,IAAI,IAAI,CAACnvD,qBAAqB,IAAI,IAAI,CAACA,qBAAqB,CAACvb,OAAO,EAAE;AACpE,YAAA,IAAK,IAAIz+B,CAAI,GAAA,CAAA,EAAGA,CAAI6mF,GAAAA,WAAAA,EAAa7mF,KAAK,CAAG,CAAA;AACvC,gBAAA,IAAMkP,OAAOsqE,SAAYm1B,GAAAA,YAAY,CAAC3uG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AAChD,gBAAA,IAAMghB,QAAW2tF,GAAAA,YAAY,CAAC3uG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;;AAExC,gBAAA,IAAMy5C,WAAWvqC,IAAO8R,GAAAA,QAAAA,CAAAA;AACxB,gBAAA,IAAMukF,KAAQmK,GAAAA,UAAU,CAAC1vG,CAAAA,GAAI,IAAI,CAAE,CAAA,CAAA;AAEnC0wG,gBAAAA,UAAAA,CAAW7pG,OAAO,EAAA,CAAA;AAElB,gBAAA,IAAI,IAAI,CAACmzC,qBAAqB,CAACO,UAAU,EAAE;AACzC,oBAAA,IAAI,IAAI,CAACP,qBAAqB,CAACn0C,CAAC,EAAE;wBAChC,IAAgCjH,aAA5B,IAAI,CAACo7C,qBAAqB,CAACn0C,CAAC,EAAYsgD,WAAa,CAAA,EAAA;4BACvDuqD,UAAW7qG,CAAAA,CAAC,GAAG,IAAI,CAACm0C,qBAAqB,CAACn0C,CAAC,CAAC0f,QAAQ,CAACk0B,QAAU8rD,EAAAA,KAAAA,CAAAA,CAAAA;yBAC1D,MAAA;4BACLmL,UAAW7qG,CAAAA,CAAC,GAAG,IAAI,CAACm0C,qBAAqB,CAACn0C,CAAC,CAAC0f,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AACvD,yBAAA;AACF,qBAAA;AACA,oBAAA,IAAI,IAAI,CAACO,qBAAqB,CAACp5C,CAAC,EAAE;wBAChC,IAAgChC,aAA5B,IAAI,CAACo7C,qBAAqB,CAACp5C,CAAC,EAAYulD,WAAa,CAAA,EAAA;4BACvDuqD,UAAW9vG,CAAAA,CAAC,GAAG,IAAI,CAACo5C,qBAAqB,CAACp5C,CAAC,CAAC2kB,QAAQ,CAACk0B,QAAU8rD,EAAAA,KAAAA,CAAAA,CAAAA;yBAC1D,MAAA;4BACLmL,UAAW9vG,CAAAA,CAAC,GAAG,IAAI,CAACo5C,qBAAqB,CAACp5C,CAAC,CAAC2kB,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AACvD,yBAAA;AACF,qBAAA;AACA,oBAAA,IAAI,IAAI,CAACO,qBAAqB,CAACnwC,CAAC,EAAE;wBAChC,IAAgCjL,aAA5B,IAAI,CAACo7C,qBAAqB,CAACnwC,CAAC,EAAYs8C,WAAa,CAAA,EAAA;4BACvDuqD,UAAW7mG,CAAAA,CAAC,GAAG,IAAI,CAACmwC,qBAAqB,CAACnwC,CAAC,CAAC0b,QAAQ,CAACk0B,QAAU8rD,EAAAA,KAAAA,CAAAA,CAAAA;yBAC1D,MAAA;4BACLmL,UAAW7mG,CAAAA,CAAC,GAAG,IAAI,CAACmwC,qBAAqB,CAACnwC,CAAC,CAAC0b,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AACvD,yBAAA;AACF,qBAAA;iBACK,MAAA;;AAEL,oBAAA,IAAI,IAAI,CAACO,qBAAqB,CAACn0C,CAAC,EAAE;wBAChC,IAAgCjH,aAA5B,IAAI,CAACo7C,qBAAqB,CAACn0C,CAAC,EAAYsgD,WAAa,CAAA,EAAA;4BACvDuqD,UAAW7qG,CAAAA,CAAC,GAAG,IAAI,CAACm0C,qBAAqB,CAACn0C,CAAC,CAAC+zC,iBAAiB,CAAC,GAAA,EAAK1qC,IAAMq2F,EAAAA,KAAAA,CAAAA,CAAAA;yBACpE,MAAA;4BACLmL,UAAW7qG,CAAAA,CAAC,GAAG,IAAI,CAACm0C,qBAAqB,CAACn0C,CAAC,CAAC+zC,iBAAiB,CAAC,GAAA,EAAK1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAC3E,yBAAA;AACF,qBAAA;AACA,oBAAA,IAAI,IAAI,CAACg5B,qBAAqB,CAACp5C,CAAC,EAAE;wBAChC,IAAgChC,aAA5B,IAAI,CAACo7C,qBAAqB,CAACp5C,CAAC,EAAYulD,WAAa,CAAA,EAAA;4BACvDuqD,UAAW9vG,CAAAA,CAAC,GAAG,IAAI,CAACo5C,qBAAqB,CAACp5C,CAAC,CAACg5C,iBAAiB,CAAC,GAAA,EAAK1qC,IAAMq2F,EAAAA,KAAAA,CAAAA,CAAAA;yBACpE,MAAA;4BACLmL,UAAW9vG,CAAAA,CAAC,GAAG,IAAI,CAACo5C,qBAAqB,CAACp5C,CAAC,CAACg5C,iBAAiB,CAAC,GAAA,EAAK1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAC3E,yBAAA;AACF,qBAAA;AACA,oBAAA,IAAI,IAAI,CAACg5B,qBAAqB,CAACnwC,CAAC,EAAE;wBAChC,IAAgCjL,aAA5B,IAAI,CAACo7C,qBAAqB,CAACnwC,CAAC,EAAYs8C,WAAa,CAAA,EAAA;4BACvDuqD,UAAW7mG,CAAAA,CAAC,GAAG,IAAI,CAACmwC,qBAAqB,CAACnwC,CAAC,CAAC+vC,iBAAiB,CAAC,GAAA,EAAK1qC,IAAMq2F,EAAAA,KAAAA,CAAAA,CAAAA;yBACpE,MAAA;4BACLmL,UAAW7mG,CAAAA,CAAC,GAAG,IAAI,CAACmwC,qBAAqB,CAACnwC,CAAC,CAAC+vC,iBAAiB,CAAC,GAAA,EAAK1qC,IAAM8R,EAAAA,QAAAA,CAAAA,CAAAA;AAC3E,yBAAA;AACF,qBAAA;AACF,iBAAA;AACA,gBAAA,IAAM2vF,oBAAoB3wG,CAAI,GAAA,CAAA,CAAA;AAE9BywG,gBAAAA,gBAAgB,CAACE,iBAAAA,CAAkB,GAAGD,UAAAA,CAAW7qG,CAAC,CAAA;AAClD4qG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW9vG,CAAC,CAAA;AACtD6vG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW7mG,CAAC,CAAA;AAEtD4mG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW7qG,CAAC,CAAA;AACtD4qG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW9vG,CAAC,CAAA;AACtD6vG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW7mG,CAAC,CAAA;AAEtD4mG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW7qG,CAAC,CAAA;AACtD4qG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW9vG,CAAC,CAAA;AACtD6vG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW7mG,CAAC,CAAA;AAEtD4mG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,CAAE,CAAA,GAAGD,WAAW7qG,CAAC,CAAA;AACtD4qG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,EAAG,CAAA,GAAGD,WAAW9vG,CAAC,CAAA;AACvD6vG,gBAAAA,gBAAgB,CAACE,iBAAAA,GAAoB,EAAG,CAAA,GAAGD,WAAW7mG,CAAC,CAAA;AACzD,aAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACsmC,QAAQ,CAACy4C,gBAAgB,CAAC,aAAe6nB,EAAAA,gBAAAA,CAAAA,CAAAA;AAChD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ7B,WAMP,GAND,SAAQA,WAAa3nG,CAAAA,KAAmB,EAAE2pG,OAAe,EAAA;QACvD,IAAMC,MAAAA,GAAS,IAAIp4D,YAAam4D,CAAAA,OAAAA,CAAAA,CAAAA;AAEhCC,QAAAA,MAAAA,CAAO7rG,GAAG,CAACiC,KAAAA,CAAAA,CAAAA;QAEX,OAAO4pG,MAAAA,CAAAA;AACT,KAAA,CAAA;AA7vBW9H,IAAAA,OAAAA,YAAAA,CAAAA;AA8vBZ,CAAA,GAAA;AAED,IAAM+H,eAAkB,GAAA;AAAC,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,GAAA;AAAI,CAAA,CAAA;AAEzC,SAAStF,QAAS5/C,KAAa,EAAA;AAC7B,IAAA,IAAK,IAAIhgD,CAAI,GAAA,CAAA,EAAGA,IAAIklG,eAAgBrxG,CAAAA,MAAM,EAAEmM,CAAK,EAAA,CAAA;QAC/C,IAAMmlG,IAAAA,GAAOD,eAAe,CAACllG,CAAE,CAAA,CAAA;AAE/B,QAAA,IAAImlG,OAAOnlD,KAAO,EAAA;YAChB,OAAOmlD,IAAAA,CAAAA;AACT,SAAA;AACF,KAAA;IAEA,OAAOnlD,KAAAA,IAASklD,eAAe,CAAC,CAAE,CAAA,CAAA;AACpC,CAAA;AAEA,SAAS7E,qBACPjZ,CAAAA,SAAiB,EACjByW,SAAmB,EACnBxnG,IAAa,EAAA;IAEb,IAAMkjG,GAAAA,GAAM1sD,aAAan0C,iBAAiB,CAAA;AAC1C,IAAA,IAAMupG,MAAM1I,GAAM,GAAA,EAAA,CAAA;AAClB,IAAA,IAAMt7B,UAAwC,GAAA;QAC5CC,IAAM,EAAA;YAAEvlE,IAAM,EAAA,CAAA;YAAG1B,MAAQ,EAAA,CAAA;YAAGiwF,MAAQ+a,EAAAA,GAAAA;AAAKj8F,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA;QACnEu4D,IAAM,EAAA;YAAEzsG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;YAAKrS,MAAQ+a,EAAAA,GAAAA;YAAKrI,UAAY,EAAA,MAAA;AAAO,SAAA;QAClEyL,KAAO,EAAA;YAAE1sG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;YAAKrS,MAAQ+a,EAAAA,GAAAA;YAAKrI,UAAY,EAAA,MAAA;AAAO,SAAA;QACnE0L,KAAO,EAAA;YAAE3sG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;YAAKrS,MAAQ+a,EAAAA,GAAAA;YAAKrI,UAAY,EAAA,MAAA;AAAO,SAAA;;QAEnEyH,IAAM,EAAA;YAAE1oG,IAAM,EAAA,CAAA;YAAG1B,MAAQ,EAAA,CAAA;AAAGiwF,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;AAAKvzF,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA;QACvE8sD,KAAO,EAAA;YAAEhhG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;AAAKrS,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;YAAKK,UAAY,EAAA,MAAA;AAAO,SAAA;QACvEF,MAAQ,EAAA;YAAE/gG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;AAAKrS,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;YAAKK,UAAY,EAAA,MAAA;AAAO,SAAA;;QAExEqH,OAAS,EAAA;YAAEtoG,IAAM,EAAA,CAAA;AAAGuuF,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;AAAKvzF,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA;QAC/Dy0D,YAAc,EAAA;YAAE3oG,IAAM,EAAA,CAAA;AAAGqN,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA;QACnD00D,WAAa,EAAA;YAAE5oG,IAAM,EAAA,CAAA;AAAGqN,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA;QAClD20D,UAAY,EAAA;YAAE7oG,IAAM,EAAA,CAAA;YAAG1B,MAAQ,EAAA,CAAA;AAAGiwF,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;AAAKvzF,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA;QAC7E04D,UAAY,EAAA;YAAE5sG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;AAAKrS,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;YAAKK,UAAY,EAAA,YAAA;AAAa,SAAA;QAClF4L,UAAY,EAAA;YAAE7sG,IAAM,EAAA,CAAA;AAAG1B,YAAAA,MAAAA,EAAQ,CAAIsiG,GAAAA,GAAAA;AAAKrS,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;YAAKK,UAAY,EAAA,YAAA;AAAa,SAAA;AACpF,KAAA,CAAA;AAEA,IAAA,IAAIiE,SAAW,EAAA;QACb5/B,UAAU,CAAC,UAAU,GAAG;YAAEtlE,IAAM,EAAA,CAAA;AAAGuuF,YAAAA,MAAAA,EAAQ,CAAIqS,GAAAA,GAAAA;AAAKvzF,YAAAA,IAAAA,EAAM,IAAI6mC,YAAa,CAAA,CAAA,CAAA;AAAG,SAAA,CAAA;AAChF,KAAA;IAEA,OAAO;QAAEoxB,UAAAA,EAAAA,UAAAA;QAAYoa,OAAS,EAAA;AAAEryE,YAAAA,IAAAA,EAAM,IAAImnC,WAAY,CAAA,CAAA,CAAA;AAAG,SAAA;QAAG92C,IAAAA,EAAAA,IAAAA;QAAM+wF,SAAAA,EAAAA,SAAAA;AAAU,KAAA,CAAA;AAC9E,CAAA;AAEO,SAASqe,qBACdztG,CAAAA,IAAuB,EACvBsnE,aAA4B,EAC5BqP,GAAQ,EAAA;AAARA,IAAAA,IAAAA,gBAAAA,GAAM,GAAA,EAAA,CAAA;AAGe19C,IAAAA,IAAAA,eAAAA,CAAAA;IADrB,IAAMA,KAAAA,GAAQj5B,KAAKs5E,OAAO,CAAA;IAC1B,IAAMuG,UAAAA,GAAa,EAAE5mD,CAAAA,CAAAA,eAAAA,GAAAA,KAAMuC,CAAAA,QAAQ,KAAdvC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAAA,CAAgB4mD,UAAU,KAAI,CAAA,CAAA,CAAA;AACnD,IAAA,IAAMjmB,MAAuB,GAAA;AAC3B,QAAA;AAAC,YAAA,aAAA;AAAeimB,YAAAA,UAAAA;AAAW,SAAA;AAC3B,QAAA;AAAC,YAAA,YAAA;YAAclJ,GAAQliC,KAAAA,yBAAAA;AAA0B,SAAA;AAClD,KAAA,CAAA;AACD,IAAA,IAAQktB,KAAkB2F,GAAAA,aAAAA,CAAlB3F,KAAO4F,EAAAA,MAAAA,GAAWD,aAAXC,CAAAA,MAAAA,CAAAA;AACf,IAAA,IAAM2+B,kBAAqB//C,GAAAA,kBAAAA,EAAAA,CAAAA;AAC3B,IAAA,IAAMggD,oBAAuBhgD,GAAAA,kBAAAA,EAAAA,CAAAA;IAC7B,IAAMi6C,mBAAAA,GAAsB74B,MAAO8E,CAAAA,iBAAiB,GAAG,CAAA,CAAA;AACzBpzC,IAAAA,IAAAA,2BAAAA,CAAAA;IAA9B,IAAQ8c,iBAAsB9c,GAAAA,CAAAA,CAAAA,2BAAAA,GAAAA,KAAMy0E,CAAAA,oBAAoB,KAA1Bz0E,IAAAA,GAAAA,2BAAAA,GAA8B,EAAC,EAArD8c,iBAAAA,CAAAA;AACR,IAAA,IAAIqwD,qBAAwB,GAAA,CAAA,CAAA;AAC5B,IAAA,IAAI5F,aAAgB,GAAA,CAAA,CAAA;AAEpB,IAAA,IAAIJ,mBAAqB,EAAA;AACvBxmC,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,YAAA,uBAAA;AAAyB,YAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AAC7C,KAAA;AAEA,IAAA,IAAIg4C,iBAAmB,EAAA;AACrB6jB,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,YAAA,qBAAA;AAAuB,YAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AACzCyiG,QAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACtB16C,QAAAA,yBAAAA,CAA0BogD,kBAAoBnwD,EAAAA,iBAAAA,CAAAA,CAAAA;AAChD,KAAA;IACA,IAAMwkC,MAAAA,GAASthD,MAAM00E,qBAAqB,CAAA;IAE1C,IAAIpzB,MAAAA,IAAUA,MAAOgsB,CAAAA,OAAO,EAAE;AAC5B3sC,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,YAAA,YAAA;AAAc,YAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AAChCyiG,QAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACxB,KAAA;IAEA,IAAMnM,iBAAAA,GAAoBp7D,MAAMo7D,iBAAiB,CAAA;IAEjD,IAAIA,iBAAAA,IAAqBA,iBAAkBhpF,CAAAA,KAAK,EAAE;AAChDuuD,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,YAAA,qBAAA;AAAuB,YAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AACzCyiG,QAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACxB,KAAA;IAEA,IAAMloB,OAAAA,GAAU+b,iBAAqBA,IAAAA,iBAAAA,CAAkB/b,OAAO,CAAA;AAE9D,IAAA,IAAIA,OAAS,EAAA;AACXxyB,QAAAA,yBAAAA,CAA0BogD,kBAAoB5tB,EAAAA,OAAAA,CAAAA,CAAAA;AAChD,KAAA;IACA,IAAMo1B,oBAAAA,GAAuBz0E,MAAMy0E,oBAAoB,CAAA;IACvD,IAAIrH,aAAAA,CAAAA;AAEJ,IAAA;AAAC,QAAA,GAAA;AAAK,QAAA,GAAA;AAAK,QAAA,GAAA;KAAI,CAACv6F,OAAO,CAAC,SAAC2qC,GAAKr6C,EAAAA,CAAAA,EAAAA;AAC5B,QAAA,IAAIyqG,IAAO,GAAA,CAAA,CAAA;QACX,IAAM+G,SAAAA,GAAY,QAAWn3D,GAAAA,GAAAA,CAAIxsC,WAAW,EAAA,CAAA;QAC5C,IAAM4jG,UAAAA,GAAa,SAAYp3D,GAAAA,GAAAA,CAAIxsC,WAAW,EAAA,CAAA;AAE9C,QAAA,IAAIyjG,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB,CAACE,SAAAA,CAAqD,EAAE;YAChF9nD,yBAA0BogD,CAAAA,kBAAAA,EAAoBwH,oBAAoB,CAACE,SAAqD,CAAA,CAAA,CAAA;YACxH/G,IAAO,GAAA,CAAA,CAAA;AACPrG,YAAAA,aAAAA,IAAiB,KAAM,CAAIpkG,GAAAA,CAAAA,CAAAA;AAC7B,SAAA;AACAw9D,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAE,YAAA,aAAA,GAAa04C,IAAIxsC,WAAW,EAAA;AAAM48F,YAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AACrD,QAAA,IAAIC,IAAO,GAAA,CAAA,CAAA;AAEX,QAAA,IAAI4G,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB,CAACG,UAAAA,CAAsD,EAAE;YACjF/nD,yBAA0BogD,CAAAA,kBAAAA,EAAoBwH,oBAAoB,CAACG,UAAsD,CAAA,CAAA,CAAA;YACzH/G,IAAO,GAAA,CAAA,CAAA;AACPtG,YAAAA,aAAAA,IAAiB,KAAM,EAAKpkG,GAAAA,CAAAA,CAAAA;YAC5BiqG,aAAgB,GAAA,IAAA,CAAA;AAClB,SAAA;AACAzsC,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAE,YAAA,UAAA,GAAU04C,IAAIxsC,WAAW,EAAA;AAAM68F,YAAAA,IAAAA;AAAK,SAAA,CAAA,CAAA;AACpD,KAAA,CAAA,CAAA;IACA,IAAI4G,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB/2D,CAAAA,UAAU,EAAE;AACpCijB,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,YAAA,oBAAA;AAAsB,YAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AACxCyiG,QAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACxB,KAAA;AACA,IAAA,IAAI6F,aAAe,EAAA;QACjB,IAAIqH,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsBn3D,CAAAA,UAAU,EAAE;AACpCqjB,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,qBAAA;AAAuB,gBAAA,IAAA;AAAK,aAAA,CAAA,CAAA;AACzCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,CAAA,CAAA;AACxB,SAAA;AACF,KAAA;IAEA,IAAIvnE,KAAAA,CAAMysE,gBAAgB,EAAE;QAC1B,IAAMA,gBAAAA,GAAmBzsE,MAAMysE,gBAAgB,CAAA;QAC/C,IAAMuB,YAAAA,GAAevB,iBAAiBuB,YAAY,CAAA;AAElD,QAAA,IAAIA,YAAc,EAAA;YAChBnhD,yBAA0BogD,CAAAA,kBAAAA,EAAoBR,iBAAiBzjG,CAAC,CAAA,CAAA;AAChE23D,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACjCyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;YACtB16C,yBAA0BogD,CAAAA,kBAAAA,EAAoBR,iBAAiB1oG,CAAC,CAAA,CAAA;SAC3D,MAAA;YACL8oD,yBAA0BogD,CAAAA,kBAAAA,EAAoBR,iBAAiB/kG,IAAI,CAAA,CAAA;AACrE,SAAA;AACF,KAAA;IAEA,IAAIs4B,KAAAA,CAAM0sE,oBAAoB,EAAE;QAC9B,IAAMjvD,GAAAA,GAAMzd,MAAM0sE,oBAAoB,CAAA;QAEtC,IAAIjvD,GAAAA,CAAIzwC,CAAC,EAAE;YACT6/C,yBAA0BogD,CAAAA,kBAAAA,EAAoBxvD,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKzwC,CAAC,CAAA,CAAA;AACpDu6F,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtB5mC,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACnC,SAAA;QACA,IAAI24C,GAAAA,CAAIuwD,YAAY,EAAE;YACpB,IAAIvwD,GAAAA,CAAIz0C,CAAC,EAAE;gBACT6jD,yBAA0BogD,CAAAA,kBAAAA,EAAoBxvD,IAAIz0C,CAAC,CAAA,CAAA;AACnDu+F,gBAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtB5mC,gBAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,oBAAA,gBAAA;AAAkB,oBAAA,CAAA;AAAE,iBAAA,CAAA,CAAA;AACnC,aAAA;YACA,IAAI24C,GAAAA,CAAI15C,CAAC,EAAE;gBACT8oD,yBAA0BogD,CAAAA,kBAAAA,EAAoBxvD,IAAI15C,CAAC,CAAA,CAAA;AACnDwjG,gBAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACtB5mC,gBAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,oBAAA,gBAAA;AAAkB,oBAAA,CAAA;AAAE,iBAAA,CAAA,CAAA;AACnC,aAAA;AACF,SAAA;QACA,IAAI24C,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAKH,CAAAA,UAAU,EAAE;AACnBqjB,YAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,gBAAA,0BAAA;AAA4B,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AAC3CyiG,YAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACxB,SAAA;AACF,KAAA;IAEA16C,yBAA0BogD,CAAAA,kBAAAA,EAAoBwH,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBI,mBAAmB,CAAA,CAAA;IACvF,IAAMC,QAAAA,GAAWL,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsB3H,WAAW,CAAA;AAElD,IAAA,IAAIgI,QAAU,EAAA;AACZn0C,QAAAA,MAAAA,CAAO77D,IAAI,CAAC;AAAC,YAAA,cAAA;AAAgB,YAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AAClCyiG,QAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;QACtB16C,yBAA0BogD,CAAAA,kBAAAA,EAAoBwH,qBAAqBM,UAAU,CAAA,CAAA;AAC/E,KAAA;IACA,IAAMv5C,UAAAA,GAAa8S,OAAOC,gBAAgB,CAAA;IAE1C,IAAI/S,UAAAA,IAAc0xC,oBAAqBxjG,CAAAA,GAAG,EAAE;AAC1C69F,QAAAA,aAAAA,IAAiB,CAAK,IAAA,EAAA,CAAA;AACxB,KAAA;IACA,IAAMn0B,iBAAAA,GAAoB9E,OAAO8E,iBAAiB,CAAA;IAClD,IAAIs7B,kBAAAA,GAAqBzB,mBAAmBvjG,GAAG,GAAGujG,mBAAmBhkD,MAAM,CAACrmD,MAAM,GAAG,EAAKwwE,GAAAA,iBAAAA,CAAAA;AAE1F,IAAA,IAAIkzB,UAAUH,4BAA+B,CAAA,EAAA;QAC3CuI,kBAAqB,GAAA,IAAA,CAAA;AACvB,KAAA;AACA,IAAA,IAAIhmC,UAAU,CAAG,EAAA;QACfukC,kBAAmBvjG,CAAAA,GAAG,GAAG,CAAC,CAAA,CAAA;;QAE1B,IAAIwjG,oBAAAA,CAAqBvmG,KAAK,GAAG,CAAG,EAAA;YAClCumG,oBAAqBxjG,CAAAA,GAAG,GAAG,CAAC,CAAA,CAAA;;AAE9B,SAAA;AACF,KAAA;IACA,IAAIglG,kBAAAA,IAAsBlzC,cAAc2rC,mBAAqB,EAAA;QAC3DgG,qBAAwB,GAAA,CAAA,CAAA;AAC1B,KAAA;AACA,IAAA,IAAMyB,WAAc,GAAA;AAAC,QAAA,KAAA;AAAOhoB,QAAAA,UAAAA;AAAY2gB,QAAAA,aAAAA;AAAe0F,QAAAA,kBAAAA,CAAmBtmG,KAAK;AAAEsmG,QAAAA,kBAAAA,CAAmBvjG,GAAG;AAAEwjG,QAAAA,oBAAAA,CAAqBvmG,KAAK;AAAEumG,QAAAA,oBAAAA,CAAqBxjG,GAAG;AAAC,KAAA,CAACsgE,IAAI,CAAC,GAAA,CAAA,CAAA;AACpK,IAAA,IAAM/I,MAAiC,GAAA;QACrCoI,QAAU2+B,EAAAA,YAAAA;QACVp9B,MAAQ,EAAC,+BAA+BuiC,GAAAA,qBAAAA,GAAsB,IAAI2B,GAAAA,YAAAA;QAClEtnB,MAAQ,EAAA,IAAA;QACR2gB,OAASyG,EAAAA,WAAAA;QACTjuC,MAAAA,EAAAA,MAAAA;QACAv7D,IAAM,EAAC,WAAW2B,GAAAA,IAAAA,CAAK3B,IAAI;AAC7B,KAAA,CAAA;AAEAu7D,IAAAA,MAAAA,CAAO77D,IAAI,CACT;AAAC,QAAA,wBAAA;AAA0BmoG,QAAAA,kBAAAA,CAAmBtmG,KAAK;KAAC,EACpD;AAAC,QAAA,wBAAA;AAA0BumG,QAAAA,oBAAAA,CAAqBvmG,KAAK;KAAC,EACtD;AAAC,QAAA,0BAAA;AAA4BsmG,QAAAA,kBAAAA,CAAmBvjG,GAAG;KAAC,EACpD;AAAC,QAAA,0BAAA;AAA4BwjG,QAAAA,oBAAAA,CAAqBxjG,GAAG;AAAC,KAAA,CAAA,CAAA;IAGxD,OAAO;QAAEu3D,MAAAA,EAAAA,MAAAA;AAAQ2J,QAAAA,MAAAA,EAAQqiC,mBAAmBtmG,KAAK;AAAE0iE,QAAAA,QAAAA,EAAU6jC,qBAAqBvmG,KAAK;AAAC,KAAA,CAAA;AAC1F,CAAA;AAEO,SAASquG,uBAAyB/zC,CAAAA,MAA8B,EAAEk1B,SAAiB,EAAE8e,OAAe,EAAA;AACvFh0C,IAAAA,IAAAA,eAAAA,CAAAA;AAAlB,IAAA,IAAMi0C,aAAYj0C,eAAAA,GAAAA,MAAAA,CAAOknC,OAAO,KAAdlnC,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAAA,CAAgB7oD,KAAK,CAAC,GAAA,CAAA,CAAA;IAExC88F,SAAS,CAAC,EAAE,GAAG/e,SAAAA,CAAAA;IACf+e,SAAS,CAAC,EAAE,GAAGD,OAAAA,CAAAA;AACfh0C,IAAAA,MAAAA,CAAOknC,OAAO,GAAG+M,SAAUlrC,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;IAEhC,IAAI,CAAC/I,MAAON,CAAAA,MAAM,EAAE;AAClB,QAAA,OAAA;AACF,KAAA;IAEA,IAAK,IAAIx9D,IAAI,CAAGA,EAAAA,CAAAA,GAAI89D,OAAON,MAAM,CAAC/9D,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC7C,QAAA,IAAMgyG,KAAQl0C,GAAAA,MAAAA,CAAON,MAAM,CAACx9D,CAAE,CAAA,CAAA;AAE9B,QAAA,IAAIgyG,KAAK,CAAC,CAAE,CAAA,KAAK,wBAA0B,EAAA;YACzCA,KAAK,CAAC,EAAE,GAAGhf,SAAAA,CAAAA;AACb,SAAA,MAAO,IAAIgf,KAAK,CAAC,CAAA,CAAE,KAAK,wBAA0B,EAAA;YAChDA,KAAK,CAAC,EAAE,GAAGF,OAAAA,CAAAA;AAEX,YAAA,MAAA;AACF,SAAA;AACF,KAAA;AACF;;ACvlCA;;AAEC,IACM,IAAA,sBAAMG,iBAAD,SAAL,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,sBAAAA,CAQTx6F,MAAc,EACdy6F,iBAAqC,EACrCC,cAA+B,EAAA;;AAEzB16F,QAAAA,KAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;AAEN,QAAA,KAAA,CAAKxV,IAAI,GAAG,wBAAA,CAAA;AACZ,QAAA,IAAIiwG,iBAAmB,EAAA;AACrB,YAAA,KAAA,CAAKE,YAAY,GAAG,IAAIrJ,YAAAA,CAAatxF,MAAQy6F,EAAAA,iBAAAA,CAAAA,CAAAA;AAC/C,SAAA;AAEA,QAAA,IAAIC,cAAgB,EAAA;AAClB,YAAA,KAAA,CAAKE,SAAS,GAAG,IAAI9O,SAAAA,CAAU9rF,MAAQ06F,EAAAA,cAAAA,CAAAA,CAAAA;AACzC,SAAA;AAEA,QAAA,IAAMz2C,MAAS,GAAA;YAAC,KAAK02C,CAAAA,YAAY,CAACv2C,IAAI;AAAC,SAAA,CAAA;QAEvC,KAAK58B,CAAAA,SAAS,CAACt9B,IAAI,CAAC,MAAKywG,YAAY,CAACv2C,IAAI,CAACr8B,QAAQ,CAAA,CAAA;QAEnD,IAAI,KAAA,CAAK6yE,SAAS,EAAE;AAClB32C,YAAAA,MAAAA,CAAO/5D,IAAI,CAAC,KAAK0wG,CAAAA,SAAS,CAACx2C,IAAI,CAAA,CAAA;YAC/B,KAAK58B,CAAAA,SAAS,CAACt9B,IAAI,CAAC,MAAK0wG,SAAS,CAACx2C,IAAI,CAACr8B,QAAQ,CAAA,CAAA;AAClD,SAAA;AAEA,QAAA,KAAA,CAAKk8B,MAAM,GAAGA,MAAAA,CAAAA;;;AAhCLu2C,IAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;IAmCX,MAASr0E,CAAAA,OAKR,GALD,SAASA,OAAAA,GAAAA;AACP,QAAA,IAAI,CAACsB,SAAS,GAAG,IAAI,CAACt7B,IAAI,CAACwzE,WAAW,CAAA;QACtC,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC1b,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBG,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKj+B,OAAO,EAAA,CAAA;AACd,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASC,QAKR,GALD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAC3B,QAAA,IAAMmJ,IAAO,GAAA,IAAI,CAACkjG,YAAY,CAACljG,IAAI,CAAA;AACnB,QAAA,IAAA,2CAAA,CAAA;AAAhB,QAAA,IAAM68F,OAAU,GAAA,CAAA,2CAAA,GAAA,IAAI,CAACqG,YAAY,CAACv2C,IAAI,CAACr8B,QAAQ,CAACoiD,UAAU,CAAC,SAAA,CAAA,KAAA,IAAA,GAA3C,8CAAyD,IAAIj2E,OAAAA,EAAAA,CAAAA;QAE7E,IAAI,CAACymG,YAAY,CAACv2C,IAAI,CAACr8B,QAAQ,CAACqiD,UAAU,CAAC,SAAA,EAAWkqB,QAAQ/mG,GAAG,CAACkK,MAAM,IAAI,CAACtL,IAAI,CAACod,QAAQ,EAAE,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACjG,KAAA,CAAA;AAEA,IAAA,MAAA,CAASme,MAKR,GALD,SAASA,MAAAA,CAAQC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAACiiD,WAAW,CAAC7d,eAAe,CAACpkC,QAAAA,CAAAA,CAAAA;QACjC,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACs8B,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArBG,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAK18B,MAAM,CAACC,QAAAA,CAAAA,CAAAA;AACd,SAAA;AACF,KAAA,CAAA;IAEA44C,MAAAA,CAAAA,KAGC,GAHDA,SAAAA,KAAAA,GAAAA;AAEE,QAAA,IAAA,eAAA,CAAA;QADA,IAAI,CAACo6B,YAAY,CAAChG,WAAW,EAAA,CAAA;AAC7B,QAAA,CAAA,eAAA,GAAA,IAAI,CAACiG,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd,gBAAgBxK,cAAc,EAAA,CAAA;AAChC,KAAA,CAAA;AAEAyK,IAAAA,MAAAA,CAAAA,UAOC,GAPDA,SAAAA,UAAYniB,CAAAA,GAAW,EAAEvB,KAAa,EAAA;AACpC,QAAA,IAAI,CAACwjB,YAAY,CAACljG,IAAI,GAAGihF,GAAAA,CAAAA;AACzB,QAAA,IAAI,CAACiiB,YAAY,CAACv0E,QAAQ,CAAC+wD,KAAAA,CAAAA,CAAAA;QAC3B,IAAI,IAAI,CAACyjB,SAAS,EAAE;AAClB,YAAA,IAAI,CAACA,SAAS,CAACnjG,IAAI,GAAGihF,GAAAA,CAAAA;AACtB,YAAA,IAAI,CAACkiB,SAAS,CAACx0E,QAAQ,CAAC+wD,KAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACF,KAAA,CAAA;AAEA2jB,IAAAA,MAAAA,CAAAA,gBAGC,GAHDA,SAAAA,gBAAAA,CAAkBvxF,QAAgB,EAAA;AAEhC,QAAA,IAAA,eAAA,CAAA;AADA,QAAA,IAAI,CAACoxF,YAAY,CAACtK,SAAS,CAAC9mF,QAAAA,CAAAA,CAAAA;AAC5B,QAAA,CAAA,eAAA,GAAA,IAAI,CAACqxF,SAAS,KAAd,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAgBvK,SAAS,CAAC9mF,QAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEAkvB,IAAAA,MAAAA,CAAAA,iBAKC,GALDA,SAAAA,iBAAAA,CAAmBuC,WAAoB,EAAA;AACrC,QAAA,IAAI,CAAC2/D,YAAY,CAACv2C,IAAI,CAACppB,WAAW,GAAGA,WAAAA,CAAAA;QACrC,IAAI,IAAI,CAAC4/D,SAAS,EAAE;AAClB,YAAA,IAAI,CAACA,SAAS,CAACx2C,IAAI,CAACppB,WAAW,GAAGA,WAAAA,CAAAA;AACpC,SAAA;AACF,KAAA,CAAA;AAEA6xB,IAAAA,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAAA,CAAYD,OAAgB,EAAA;AAE1B,QAAA,IAAA,eAAA,CAAA;AADA,QAAA,IAAI,CAAC+tC,YAAY,CAACv2C,IAAI,CAACyI,UAAU,CAACD,OAAAA,CAAAA,CAAAA;SAClC,eAAA,GAAA,IAAI,CAACguC,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd,gBAAgBx2C,IAAI,CAACyI,UAAU,CAACD,OAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IAEAmuC,MAAAA,CAAAA,WAkBC,GAlBDA,SAAAA,WAAAA,GAAAA;AACE,QAAA,IAAM5jD,WAAsB,EAAE,CAAA;;QAE9B,IAAM6jD,oBAAAA,GAAuB,IAAI,CAACL,YAAY,CAACv2C,IAAI,CAACr8B,QAAQ,CAACovB,QAAQ,CAAA;AAErEjvD,QAAAA,MAAAA,CAAOkQ,IAAI,CAAC4iG,oBAAsB/iG,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACxCgxD,YAAAA,QAAAA,CAASjtD,IAAI,CAAC8wG,oBAAoB,CAAC70G,GAAI,CAAA,CAAA,CAAA;AACzC,SAAA,CAAA,CAAA;QACA,IAAI,IAAI,CAACy0G,SAAS,EAAE;;YAElB,IAAMK,iBAAAA,GAAoB,IAAI,CAACL,SAAS,CAACx2C,IAAI,CAACr8B,QAAQ,CAACovB,QAAQ,CAAA;AAE/DjvD,YAAAA,MAAAA,CAAOkQ,IAAI,CAAC6iG,iBAAmBhjG,CAAAA,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACrCgxD,gBAAAA,QAAAA,CAASjtD,IAAI,CAAC+wG,iBAAiB,CAAC90G,GAAI,CAAA,CAAA,CAAA;AACtC,aAAA,CAAA,CAAA;AACF,SAAA;QAEA,OAAOgxD,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA+jD,IAAAA,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAkBnvG,CAAAA,KAAa,EAAEqsC,KAAY,EAAA;AAC3C,QAAA,IAAI,CAACuiE,YAAY,CAACtR,QAAQ,CAACt9F,KAAOqsC,EAAAA,KAAAA,CAAAA,CAAAA;AACpC,KAAA,CAAA;AAEA+iE,IAAAA,MAAAA,CAAAA,mBAEC,GAFDA,SAAAA,mBAAAA,CAAqBpvG,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC4uG,YAAY,CAACtF,WAAW,CAACtpG,KAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEAqvG,IAAAA,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,CAAuBrvG,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC4uG,YAAY,CAACjG,aAAa,CAAC3oG,KAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;IAEAsvG,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAACT,SAAS,KAAK1zG,SAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEAopG,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAYxe,UAAkB,EAAA;AAC5B,QAAA,IAAA,eAAA,CAAA;AAAA,QAAA,CAAA,eAAA,GAAA,IAAI,CAAC8oB,SAAS,KAAd,IAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAgBtK,UAAU,CAACxe,UAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;IAEAwpB,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,CAAevvG,KAAa,EAAEmiB,QAAiB,EAAE3iB,OAA0B,EAAA;AACzE,QAAA,IAAA,eAAA,CAAA;SAAA,eAAA,GAAA,IAAI,CAACqvG,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd,gBAAgBjM,QAAQ,CAAC5iG,OAAOmiB,QAAU3iB,EAAAA,OAAAA,CAAAA,CAAAA;AAC5C,KAAA,CAAA;AAEAgwG,IAAAA,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAuBxvG,CAAAA,KAAa,EAAEmiB,QAAiB,EAAA;AACrD,QAAA,IAAA,eAAA,CAAA;AAAA,QAAA,CAAA,eAAA,GAAA,IAAI,CAAC0sF,SAAS,qBAAd,eAAgBnK,CAAAA,gBAAgB,CAAC1kG,KAAOmiB,EAAAA,QAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AAEAstF,IAAAA,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,CAAuBzvG,KAAa,EAAA;AAClC,QAAA,OAAO,IAAK,CAAC6uG,SAAS,CAAepK,gBAAgB,CAACzkG,KAAAA,CAAAA,CAAAA;AACxD,KAAA,CAAA;AAzIWyuG,IAAAA,OAAAA,sBAAAA,CAAAA;EAA+BjzE,iBA0I3C;;ACLM,IAAA,cAAMm+C,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,SAAAA,CAAAA,CAAAA;aAAAA,cA6BT1lE,CAAAA,MAAc,EACdolB,KAA2B,EAAA;;AAErBplB,QAAAA,KAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAtBRg/C,SAAY,GAAA,KAAA,CAAA;AA6rBZimB,QAAAA,KAAAA,CAAAA,gBAAAA,GAAmB,SAAC7P,KAAAA,EAAAA;YAClB,IAAMqmC,cAAAA,GAAiB,MAAK1vB,WAAW,CAAA;AAEvC,YAAA,IAAI3W,SAASqmC,cAAgB,EAAA;gBAC3B,OAAO;AACLx9F,oBAAAA,IAAAA,EAAM0qE,YAAYI,MAAM;AACxBE,oBAAAA,OAAAA,EAAS,SAACp1C,GAAAA,EAAAA;AACR,wBAAA,OAAA,KAAA,CAAKumD,OAAO,CAAC;AACXtkD,4BAAAA,MAAAA,EAAQ2lE,CAAAA,cAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAgB3lE,CAAAA,MAAM,KAAI,GAAA;AAClC4lE,4BAAAA,QAAAA,EAAU,CAAC,EAACD,cAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAAA,CAAgBC,QAAQ,CAAA;4BACpCC,cAAgBF,EAAAA,CAAAA,kCAAAA,cAAgBpzB,CAAAA,QAAQ,MAAKn8D,2BAAgC,CAACyvF,cAAc;4BAC5F9nE,GAAAA,EAAAA,GAAAA;AACF,yBAAA,CAAA,CAAA;;AACJ,iBAAA,CAAA;AACF,aAAA;AACF,SAAA,CAAA;QAprBE,KAAK+1C,CAAAA,WAAW,GAAG,IAAIte,aAActrD,CAAAA,MAAAA,CAAAA,CAAAA;AACrC,QAAA,IAAIolB,KAAO,EAAA;AACT,YAAA,KAAA,CAAK9d,QAAQ,CAAC8d,KAAAA,CAAAA,CAAAA;AAChB,SAAA;;;AArCSsgD,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAwEXk2B,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAACC,MAAM,CAAA;AACpB,KAAA,CAAA;IAEAh+B,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACE,OAAO,IAAI,CAACi+B,KAAK,CAAA;AACnB,KAAA,CAAA;IAEAC,MAAAA,CAAAA,oBA6BC,GA7BDA,SAAAA,oBAAAA,GAAAA;QACE,IAAM7tF,QAAAA,GAAW,IAAI,CAAC/hB,IAAI,CAAC0qB,SAAS,CAAC3I,QAAQ,CAACve,KAAK,EAAA,CAAA;QACnD,IAAMwe,QAAAA,GAAW,IAAI,CAAChiB,IAAI,CAAC0qB,SAAS,CAAC1I,QAAQ,CAACxe,KAAK,EAAA,CAAA;AACnD,QAAA,IAAMqsG,aAAgB,GAAA,IAAI,CAAC52E,KAAK,CAAC62E,gBAAgB,IAAI,IAAI,CAAC72E,KAAK,CAAC62E,gBAAgB,CAACvtF,IAAI,CAAA;QACrF,IAAIA,IAAAA,CAAAA;AAEJ,QAAA,IAAIstF,aAAe,EAAA;YACjB,IAAIA,aAAa,CAAC,CAAE,CAAA,KAAK9vF,SAAc,CAACqpC,aAAa,EAAE;AACrDrnC,gBAAAA,QAAAA,CAASne,GAAG,CAACisG,aAAa,CAAC,CAAE,CAAA,CAAA,CAAA;aACxB,MAAA;AACLttF,gBAAAA,IAAAA,GAAOukC,iBAAkB+oD,CAAAA,aAAAA,CAAAA,CAAAA;AAC3B,aAAA;AACF,SAAA;QACA,IAAI,CAACE,cAAc,GAAG;YACpBhuF,QAAAA,EAAAA,QAAAA;YAAUC,QAAAA,EAAAA,QAAAA;YAAUO,IAAAA,EAAAA,IAAAA;AACtB,SAAA,CAAA;QAEA,IAAMytF,OAAAA,GAAUjuF,SAASve,KAAK,EAAA,CAAA;AAE9B,QAAA,IAAI+e,IAAM,EAAA;AACRytF,YAAAA,OAAAA,CAAQpsG,GAAG,CAAC2e,IAAKZ,CAAAA,QAAQ,CAAC,CAAA,CAAA,CAAA,CAAA;AAC5B,SAAA;AACA,QAAA,IAAI,CAAC+I,SAAS,CAACM,WAAW,CAACglF,OAAAA,CAAQ/tG,CAAC,EAAE+tG,OAAQhzG,CAAAA,CAAC,EAAEgzG,OAAAA,CAAQ/pG,CAAC,CAAA,CAAA;AAE1D,QAAA,IAAI,IAAI,CAAC7G,OAAO,CAAC6wG,oBAAoB,EAAE;AACrC,YAAA,IAAMphE,WAAc,GAAA,IAAI,CAACnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;AAEjD,YAAA,IAAI,CAAC9U,QAAQ,CAAC8Q,iBAAiB,CAACuC,WAAAA,CAAAA,CAAAA;AAClC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQqhE,sBAgBP,GAhBD,SAAQA,sBAAAA,CAAwB5kG,IAAY,EAAA;QAC1C,IAA2B,oBAAA,GAAA,IAAI,CAACykG,cAAc,EAAtCxtF,IAAmB,GAAA,oBAAA,CAAnBA,IAAMR,EAAAA,QAAAA,GAAa,oBAAbA,CAAAA,QAAAA,CAAAA;QACd,IAAMiuF,OAAAA,GAAUjuF,SAASve,KAAK,EAAA,CAAA;AAE9B,QAAA,IAAI+e,IAAM,EAAA;AACR,YAAA,IAAMnF,QAAW,GAAA,IAAI,CAACpd,IAAI,CAACod,QAAQ,CAAA;AAEnC4yF,YAAAA,OAAAA,CAAQpsG,GAAG,CAAC2e,IAAKZ,CAAAA,QAAQ,CAACrW,IAAO8R,GAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AACnC,SAAA;AACA,QAAA,IAAI,CAACsN,SAAS,CAACM,WAAW,CAACglF,OAAAA,CAAQ/tG,CAAC,EAAE+tG,OAAQhzG,CAAAA,CAAC,EAAEgzG,OAAAA,CAAQ/pG,CAAC,CAAA,CAAA;AAE1D,QAAA,IAAI,IAAI,CAAC7G,OAAO,CAAC6wG,oBAAoB,EAAE;AACrC,YAAA,IAAMphE,WAAc,GAAA,IAAI,CAACnkB,SAAS,CAAC4lB,cAAc,EAAA,CAAA;AAEjD,YAAA,IAAI,CAAC9U,QAAQ,CAAC8Q,iBAAiB,CAACuC,WAAAA,CAAAA,CAAAA;AAClC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQshE,WAmBP,GAnBD,SAAQA,WAAalkE,CAAAA,KAAY,EAAE+wC,QAAgB,EAAA;QACjD,IAAMozB,IAAAA,GAAO,IAAI,CAACC,YAAY,CAAA;AAC9B,QAAA,IAAMC,WAA+B,GAAA;YAACrkE,KAAM09D,CAAAA,KAAK,GAAG19D,KAAAA,CAAM4J,QAAQ;AAAE,YAAA,CAAA;AAAG5J,YAAAA,KAAAA,CAAM09D,KAAK;AAAE19D,YAAAA,KAAAA;AAAM,SAAA,CAAA;QAC1F,IAAI05C,UAAAA,CAAAA;QAEJ,IAAIyqB,IAAAA,CAAKv0G,MAAM,GAAGmhF,QAAU,EAAA;AAC1B2I,YAAAA,UAAAA,GAAa2qB,WAAW,CAAC,CAAE,CAAA,GAAGF,KAAKv0G,MAAM,CAAA;SACpC,MAAA;YACL,IAAMqnD,KAAAA,GAAQktD,KAAKltD,KAAK,CAAA;AAExBktD,YAAAA,IAAAA,CAAK/X,UAAU,CAACn1C,KAAAA,CAAAA,CAAAA;AAChByiC,YAAAA,UAAAA,GAAa2qB,WAAW,CAAC,CAAA,CAAE,GAAGptD,KAAMo2B,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAA;AAChD,SAAA;AACA82B,QAAAA,IAAAA,CAAKrR,QAAQ,CAACuR,WAAAA,CAAAA,CAAAA;AACd,QAAA,IAAI,CAAC90E,QAAQ,CAACuzE,gBAAgB,CAACppB,UAAY15C,EAAAA,KAAAA,CAAAA,CAAAA;QAC3C,IAAI,CAACskE,eAAe,CAAC5qB,UAAAA,CAAAA,CAAAA;AACrB,QAAA,IAAI,IAAI,CAACj7D,SAAS,CAAC2kB,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC7T,QAAQ,CAAC4zE,qBAAqB,CAACzpB,UAAY,EAAA,IAAI,CAACj7D,SAAS,CAAC2kB,eAAe,CAACttB,QAAQ,CAACve,KAAK,EAAA,CAAA,CAAA;AAC/F,SAAA;AACF,KAAA,CAAA;AAEAk9D,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAYD,OAAgB,EAAA;AAC1B,QAAA,IAAI,CAACjlC,QAAQ,CAACklC,UAAU,CAACD,OAAAA,CAAAA,CAAAA;AAC3B,KAAA,CAAA;IAEAmuC,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACpzE,QAAQ,CAACozE,WAAW,EAAA,CAAA;AAClC,KAAA,CAAA;IAEA4B,MAAAA,CAAAA,SAMC,GANDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAAC,IAAI,CAACC,OAAO,IAAI,IAAI,CAACd,KAAK,EAAE;AAC/B,YAAA,IAAI,CAACv7B,KAAK,EAAA,CAAA;YACV,IAAI,CAACq8B,OAAO,GAAG,IAAA,CAAA;YACf,IAAI,CAACd,KAAK,GAAG,KAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;IAEAzjG,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAAA,GAAAA;QACE,IAAI,CAACyjG,KAAK,GAAG,IAAA,CAAA;QACb,IAAI,CAACc,OAAO,GAAG,KAAA,CAAA;AACjB,KAAA,CAAA;IAEAr8B,MAAAA,CAAAA,KAWC,GAXDA,SAAAA,KAAAA,GAAAA;QACE,IAAI,CAAC54C,QAAQ,CAAC44C,KAAK,EAAA,CAAA;QACnB,IAAI,CAAC9oE,IAAI,GAAG,CAAA,CAAA;QACZ,IAAI,CAAColG,aAAa,GAAG,CAAA,CAAA;AACrB,QAAA,IAAI,CAACC,YAAY,GAAG,CAAC,CAAI,GAAA,IAAI,CAACC,QAAQ,CAACC,YAAY,CAAClvF,QAAQ,CAAC,CAAA,CAAA,CAAA;QAC7D,IAAI,CAACmvF,cAAc,GAAG,CAAA,CAAA;AACtB,QAAA,IAAI,CAACT,YAAY,GAAG,IAAI1R,IAAAA,CAAK,SAAC98F,CAAGC,EAAAA,CAAAA,EAAAA;AAAMD,YAAAA,OAAAA,CAAC,CAAC,CAAA,CAAE,GAAGC,CAAC,CAAC,CAAE,CAAA,CAAA;;AAClD,QAAA,IAAI,CAAC8uG,QAAQ,CAACG,MAAM,CAACjlG,OAAO,CAAChK,SAAAA,CAAAA,EAAAA;AAAKA,YAAAA,OAAAA,CAAAA,CAAEsyE,KAAK,EAAA,CAAA;;QACzC,IAAI,CAACs7B,MAAM,GAAG,KAAA,CAAA;QACd,IAAI,CAACC,KAAK,GAAG,KAAA,CAAA;QACb,IAAI,CAAC98C,SAAS,GAAG,KAAA,CAAA;AACnB,KAAA,CAAA;IAEA,MAAS74B,CAAAA,OAaR,GAbD,SAASA,OAAAA,GAAAA;;AACP,QAAA,IAAI,CAACw2E,SAAS,EAAA,CAAA;AACd,QAAA,IAAI,CAACZ,oBAAoB,EAAA,CAAA;AAEzB,QAAA,IAAI,CAAC5vG,IAAI,CAACwwE,EAAE,CAAC,OAAS,EAAA,WAAA;AAChB,YAAA,IAAA,iBAAA,CAAA;AAAJ,YAAA,IAAI,CAAA,CAAA,iBAAA,GAAA,KAAKoP,CAAAA,WAAW,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,CAAkB1D,QAAQ,MAAKn8D,2BAAgC,CAACyvF,cAAc,EAAE;AAClF,gBAAA,IAAM7pB,aAAa,KAAKqrB,CAAAA,YAAY,CAAC13B,OAAO,CAAC,CAAE,CAAA,CAAA;gBAE/C,KAAK99C,CAAAA,QAAQ,CAACwzE,mBAAmB,CAACrpB,UAAAA,CAAAA,CAAAA;AAClC,gBAAA,KAAA,CAAK4qB,eAAe,CAAC5qB,UAAAA,CAAAA,CAAAA;gBACrB,KAAKqrB,CAAAA,YAAY,CAAC13B,OAAO,GAAG;AAAC,oBAAA,CAAA;AAAE,iBAAA,CAAA;AACjC,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASr/C,QAER,GAFD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;QAC3B,IAAI,CAAC6c,MAAM,CAAC7c,EAAAA,CAAAA,CAAAA;AACd,KAAA,CAAA;AAEA6c,IAAAA,MAAAA,CAAAA,MAkIC,GAlIDA,SAAAA,MAAAA,CAAQgsE,KAAa,EAAA;;QACnB,IAAI,IAAI,CAACylB,OAAO,IAAI,CAAC,IAAI,CAACf,MAAM,EAAE;AAChC,YAAA,IAAMnjB,GAAM,GAAA,IAAI,CAACjhF,IAAI,GAAG0/E,KAAQ,GAAA,IAAA,CAAA;YAChC,IAAM5rF,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;YAC5B,IAAMsxG,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;YACxC,IAAME,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;YAE9B,IAAI,CAACtlG,IAAI,GAAGihF,GAAAA,CAAAA;YACZ,IAAI,CAAC0kB,gBAAgB,GAAG,IAAA,CAAA;AACxB,YAAA,IAAI,CAACz1E,QAAQ,CAACkzE,UAAU,CAACniB,GAAKvB,EAAAA,KAAAA,CAAAA,CAAAA;YAE9B,IAAMolB,IAAAA,GAAO,IAAI,CAACC,YAAY,CAAA;YAC9B,IAAMa,eAAAA,GAAkB,CAAC3kB,GAAMmkB,GAAAA,aAAY,IAAK,IAAI,CAAC1wG,IAAI,CAACod,QAAQ,CAAA;YAClE,IAAMmhF,UAAAA,GAAa,IAAI,CAACA,UAAU,CAAA;AAClC,YAAA,IAAI4S,YAAe,GAAA,KAAA,CAAA;AACnB,YAAA,IAAMC,WAAc,GAAA,WAAA;AAClB,gBAAA,IAAI,KAAKC,CAAAA,MAAM,IAAI,CAACF,YAAc,EAAA;oBAChCA,YAAe,GAAA,IAAA,CAAA;AACff,oBAAAA,IAAAA,CAAKtkG,OAAO,CAAC,SAAA,KAAA,EAAA;AAAER,wBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAMq6E,uBAAYgkB,KAAO19D,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,EAAAA,KAAAA,GAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACtC,wBAAA,IAAI3gC,OAAOizF,UAAY,EAAA;AACrB,4BAAA,KAAA,CAAKgS,eAAe,CAAC5qB,UAAAA,CAAAA,CAAAA;yBAChB,MAAA,IAAI4Y,aAAaoL,KAAO,EAAA;AAC7B,4BAAA,KAAA,CAAK2H,gBAAgB,CAAC3rB,UAAYurB,EAAAA,eAAAA,EAAiBjlE,KAAO09D,EAAAA,KAAAA,CAAAA,CAAAA;AAC5D,yBAAA;AACF,qBAAA,CAAA,CAAA;AACF,iBAAA;AACF,aAAA,CAAA;AAEA,YAAA,IAAI,CAAC,IAAI,CAACgG,KAAK,EAAE;AACf,gBAAA,IAAMvyF,QAAW,GAAA,IAAI,CAACpd,IAAI,CAACod,QAAQ,CAAA;gBACnC,IAAMy4B,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAE9B,gBAAA,IAAI0oD,aAAanhF,QAAU,EAAA;AACzB,oBAAA,IAAM0+B,WAAW,CAAI80D,GAAAA,QAAAA,CAASC,YAAY,CAAClvF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;oBACpD,IAAM8wC,UAAAA,GAAa/lF,IAAK0D,CAAAA,KAAK,CAAEi6F,CAAAA,UAAAA,GAAa,IAAI,CAACoS,YAAW,IAAK70D,QAAAA,CAAAA,CAAAA;AACjE,oBAAA,IAAMy1D,gBAAmB5qB,GAAAA,UAAAA,CAAAA;AACzB,oBAAA,IAAM6qB,YAAY11D,QAAW6qC,GAAAA,UAAAA,CAAAA;AAC7B,oBAAA,IAAM8qB,QAAWllB,GAAAA,GAAAA,CAAAA;oBACjB,IAAMvP,QAAAA,GAAW59E,QAAQ49E,QAAQ,CAAA;oBAEjC,IAAI,CAACkzB,sBAAsB,CAAC3R,UAAAA,CAAAA,CAAAA;AAC5B,oBAAA,IAAMmT,kBAAqB,GAAA,WAAA;wBACzB,IAAMxuD,KAAAA,GAAQktD,KAAKltD,KAAK,CAAA;AAExB,wBAAA,OAAO,KAAKyuD,CAAAA,eAAe,IAAKvB,IAAAA,CAAKv0G,MAAM,KAAKmhF,QAAAA,IAAY95B,KAAS,IAACA,KAAMo2B,CAAAA,OAAO,CAAC,CAAA,CAAE,GAAGo3B,aAAiBnS,GAAAA,UAAAA,CAAAA;AAC5G,qBAAA,CAAA;AAEA,oBAAA,IAAK,IAAIniG,CAAI,GAAA,CAAA,EAAGA,IAAIm1G,gBAAoBn1G,IAAAA,CAAAA,GAAI4gF,UAAU5gF,CAAK,EAAA,CAAA;AACzD,wBAAA,IAAIs1G,kBAAsB,EAAA,EAAA;AACxB,4BAAA,MAAA;AACF,yBAAA;AACA,wBAAA,IAAMv9F,CAAI,GAAA,IAAI,CAACy9F,WAAW,CAAC/7D,QAAAA,CAAAA,CAAAA;wBAE3B1hC,CAAEw1F,CAAAA,KAAK,IAAI8H,QAAAA,GAAWr1G,CAAIo1G,GAAAA,SAAAA,CAAAA;wBAC1B,IAAI,CAACrB,WAAW,CAACh8F,CAAG6oE,EAAAA,QAAAA,CAAAA,CAAAA;wBACpB,IAAI,CAAC2zB,YAAY,GAAGpS,UAAAA,CAAAA;AACtB,qBAAA;oBACA,IAAMwS,MAAAA,GAASH,SAASG,MAAM,CAAA;AAE9B,oBAAA,IAAK,IAAIxlG,CAAAA,GAAIwlG,CAAAA,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAQl1G,MAAM,IAAG,CAAGomD,EAAAA,MAAAA,GAAS,CAAG12C,EAAAA,CAAAA,IAAK,CAAK02C,IAAAA,MAAAA,GAAS+6B,UAAUzxE,CAAK,EAAA,CAAA;AAC7E,wBAAA,IAAImmG,kBAAsB,EAAA,EAAA;AACxB,4BAAA,MAAA;AACF,yBAAA;wBACA,IAAMG,KAAAA,GAAQd,MAAM,CAACxlG,CAAE,CAAA,CAAA;wBACvB,IAAMumG,IAAAA,GAAO,CAACD,KAAME,CAAAA,QAAQ,IAAIF,KAAMvT,CAAAA,mBAAmB,CAACC,UAAY1oD,EAAAA,QAAAA,CAAAA,CAAAA;AAEtE,wBAAA,IAAIi8D,IAAM,EAAA;AACR,4BAAA,IAAME,SAAY,GAAA;AAAC,gCAAA,CAAA;AAAG,gCAAA,CAAA;AAAG,gCAAA,CAAA;AAAE,6BAAA,CAAA;AAC3B,4BAAA,IAAMtI,OAAUkH,GAAAA,QAAAA,CAASqB,YAAY,CAAC1mG,CAAE,CAAA,CAAA;4BACxC,IAAM2mG,WAAAA,GAAc,OAAYxI,IAAAA,OAAO,CAACoI,IAAKrT,CAAAA,UAAU,CAAC,IAAKuT,SAAAA,CAAAA;4BAE7D,IAAIH,KAAAA,CAAMphC,IAAI,EAAE;gCACd,IAAI,CAAC0hC,WAAW,CAAC5mG,CAAAA,CAAAA,CAAAA;AACnB,6BAAA;4BAEA,IAAK,IAAInP,KAAI,CAAGA,EAAAA,EAAAA,GAAI01G,KAAK9pD,KAAK,IAAI/F,MAAS+6B,GAAAA,QAAAA,EAAU5gF,EAAK,EAAA,CAAA;AAaxD+X,gCAAAA,IAAAA,YAAAA,CAAAA;AAZA,gCAAA,IAAIu9F,kBAAsB,EAAA,EAAA;AACxB,oCAAA,MAAA;AACF,iCAAA;gCACA,IAAMv9F,EAAAA,GAAI,IAAI,CAACi+F,SAAS,CAAC,IAAI,CAAC3uB,KAAK,CAAC0R,QAAQ,CAAC;AAC3CptC,oCAAAA,KAAAA,EAAO+pD,KAAK/pD,KAAK;AACjBnoD,oCAAAA,KAAAA,EAAOkyG,KAAKlyG,KAAK;oCACjB+1F,UAAYv5F,EAAAA,EAAAA;AACZw5F,oCAAAA,UAAAA,EAAYkc,KAAK9pD,KAAK;AACxB,iCAAA,CAAA,CAAA,CAAA;AAEA7zC,gCAAAA,EAAAA,CAAEw1F,KAAK,IAAI8H,QAAAA,CAAAA;AACXxvD,gCAAAA,MAAAA,EAAAA,CAAAA;AACA9tC,gCAAAA,CAAAA,eAAAA,EAAEuW,CAAAA,SAAS,EAAC4c,SAAS,CAArBnzB,MAAAA,YAAyB+9F,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,WAAAA,CAAAA,CAAAA,CAAAA;gCAEzB,IAAI,CAAC/B,WAAW,CAACh8F,EAAG6oE,EAAAA,QAAAA,CAAAA,CAAAA;AACtB,6BAAA;AACF,yBAAA;AACF,qBAAA;iBACK,MAAA,IAAI,IAAI,CAACh9E,IAAI,CAACmzE,WAAW,KAAKpzD,WAAgB,CAACo0D,OAAO,EAAE;AAC7Di9B,oBAAAA,WAAAA,EAAAA,CAAAA;oBACA,IAAI,CAACV,aAAa,GAAGnkB,GAAMnvE,GAAAA,QAAAA,CAAAA;oBAC3B,IAAI,CAACuzF,YAAY,IAAIvzF,QAAAA,CAAAA;oBACrB,IAAI,CAAC9R,IAAI,IAAI8R,QAAAA,CAAAA;AACbwzF,oBAAAA,QAAAA,CAASG,MAAM,CAACjlG,OAAO,CAAChK,SAAAA,CAAAA,EAAAA;AAAKA,wBAAAA,OAAAA,CAAAA,CAAEsyE,KAAK,EAAA,CAAA;;AACpC,oBAAA,IAAI,CAACi8B,YAAY,CAACvkG,OAAO,CAACwtE,SAAAA,OAAAA,EAAAA;wBACxBA,OAAO,CAAC,EAAE,IAAIl8D,QAAAA,CAAAA;wBACdk8D,OAAO,CAAC,EAAE,IAAIl8D,QAAAA,CAAAA;;wBAGd,IAAIk8D,OAAO,CAAC,CAAA,CAAE,EAAE;AACdA,4BAAAA,OAAO,CAAC,CAAA,CAAE,CAACqwB,KAAK,IAAIvsF,QAAAA,CAAAA;AACtB,yBAAA;AACF,qBAAA,CAAA,CAAA;AAEA,oBAAA,IAAI,CAACoe,QAAQ,CAACmzE,gBAAgB,CAACvxF,QAAAA,CAAAA,CAAAA;iBAC1B,MAAA;oBACL,IAAI,CAACuyF,KAAK,GAAG,IAAA,CAAA;AACb,oBAAA,IAAMx8B,WAAc,GAAA,IAAI,CAACnzE,IAAI,CAACmzE,WAAW,CAAA;AAEzC,oBAAA,IAAIA,WAAgBpzD,KAAAA,WAAgB,CAAC81D,MAAM,EAAE;wBAC3C,IAAI,CAAC65B,MAAM,GAAG,IAAA,CAAA;AAChB,qBAAA;AACF,iBAAA;aACK,MAAA,IAAI,IAAI,CAAC1vG,IAAI,CAACmzE,WAAW,KAAKpzD,WAAgB,CAACo0D,OAAO,EAAE;gBAC7D,IAAIp0D,WAAgB,CAACghD,OAAO,KAAK,IAAI,CAAC/gE,IAAI,CAACmzE,WAAW,EAAE;oBACtD,IAAMl2D,IAAAA,GAAOmzF,KAAKptD,IAAI,CAAA;oBAEtB,IAAI/lC,IAAAA,IAAQ,IAACA,CAAKq8D,OAAO,CAAC,EAAE,GAAI,IAAI,CAAChuE,IAAI,EAAE;wBACzC,IAAI,CAACunD,SAAS,GAAG,IAAA,CAAA;AACnB,qBAAA;AACF,iBAAA;AACF,aAAA;AACAu+C,YAAAA,WAAAA,EAAAA,CAAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEAxxC,IAAAA,MAAAA,CAAAA,eAsBC,GAtBDA,SAAAA,eAAAA,CAAiBpkC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAACT,kBAAkB,EAAE;AAC5B,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAMs3E,qBAAgC,EAAE,CAAA;AAExC,QAAA,IAAK,IAAIj2G,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAI,CAACo/B,QAAQ,CAACs8B,MAAM,CAACj8D,MAAM,EAAEO,CAAK,EAAA,CAAA;YACpD,IAAMw/B,QAAAA,GAAW,IAAI,CAACJ,QAAQ,CAACs8B,MAAM,CAAC17D,CAAE,CAAA,CAACw/B,QAAQ,CAAA;YAEjDy2E,kBAAmBt0G,CAAAA,IAAI,CAAC69B,QAAAA,CAAS+hD,SAAS,CAAA,CAAA;AAC1C/hD,YAAAA,QAAAA,CAAS+hD,SAAS,GAAG,KAAA,CAAA;AACvB,SAAA;AAEA,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmB,IAAI,CAACniD,QAAQ,CAACs8B,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9BG,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAK18B,MAAM,CAACC,QAAAA,CAAAA,CAAAA;AACd,SAAA;AAEA,QAAA,IAAK,IAAIp/B,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI,IAAI,CAACo/B,QAAQ,CAACs8B,MAAM,CAACj8D,MAAM,EAAEO,EAAK,EAAA,CAAA;YACpD,IAAMw/B,SAAAA,GAAW,IAAI,CAACJ,QAAQ,CAACs8B,MAAM,CAAC17D,EAAE,CAAA,CAACw/B,QAAQ,CAAA;AAEjDA,YAAAA,SAAAA,CAAS+hD,SAAS,GAAG00B,kBAAkB,CAACj2G,EAAE,CAAA,CAAA;AAC5C,SAAA;AACF,KAAA,CAAA;IAEA,MAAS+9B,CAAAA,SAIR,GAJD,SAASA,SAAAA,GAAAA;QACP,IAAI,IAAI,CAACn6B,IAAI,IAAI,IAAI,CAACA,IAAI,CAACmT,WAAW,EAAE;AACtC,YAAA,IAAI,CAAC2kD,MAAM,CAAChsD,OAAO,CAACmsD,SAAAA,IAAAA,EAAAA;AAAQA,gBAAAA,OAAAA,IAAAA,CAAK58C,OAAO,EAAA,CAAA;;AAC1C,SAAA;AACF,KAAA,CAAA;IAEAi3F,MAAAA,CAAAA,gBAqCC,GArCDA,SAAAA,gBAAAA,GAAAA;QACE,IAAMlC,IAAAA,GAAO,IAAI,CAACC,YAAY,CAAA;QAC9B,IAAM70E,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAC9B,QAAA,IAAM7U,MAA4C,EAAE,CAAA;QACpD,IAAMq2D,QAAAA,GAAW,IAAI,CAACooB,aAAa,CAAA;AACnC,QAAA,IAAImN,OAAU,GAAA,CAAA,CAAA;AAEd,QAAA,IAAI,EAAEnC,IAAQ50E,IAAAA,QAAO,CAAI,EAAA;YACvB,OAAO7U,GAAAA,CAAAA;AACT,SAAA;QACA,IAAI1J,IAAAA,GAAOmzF,KAAKptD,IAAI,CAAA;AACpB,QAAA,IAAI8L,MAAS,GAAA,KAAA,CAAA;AAEb,QAAA,MAAO,CAACA,MAAQ,CAAA;AACd,YAAA,IAAMxxC,WAAcL,GAAAA,IAAAA,CAAKq8D,OAAO,CAAC,CAAE,CAAA,CAAA;AACnC,YAAA,IAAMrtC,KAAQhvB,GAAAA,IAAAA,CAAKq8D,OAAO,CAAC,CAAE,CAAA,CAAA;AAE7B,YAAA,IAAIh8D,WAAc,GAAA,IAAI,CAACihF,UAAU,EAAE;AACjC,gBAAA,IAAMvrD,GAAM,GAAA,IAAI,CAACw/D,gBAAgB,CAACvmE,KAAAA,CAAAA,CAAAA;AAElCtlB,gBAAAA,GAAAA,CAAI5oB,IAAI,CAAC;oBACPurC,MAAQ0J,EAAAA,GAAAA;oBACRryC,IAAMsrC,EAAAA,KAAAA,CAAMvhB,SAAS,CAACtmB,KAAK;AAC7B,iBAAA,CAAA,CAAA;gBACA,IAAI6Y,IAAAA,CAAK4hF,GAAG,EAAE;AACZ5hF,oBAAAA,IAAAA,GAAOA,KAAK4hF,GAAG,CAAA;iBACV,MAAA;oBACL/vC,MAAS,GAAA,IAAA,CAAA;AACX,iBAAA;AACF,aAAA;AACAyjD,YAAAA,OAAAA,EAAAA,CAAAA;AACA,YAAA,IAAIA,UAAUv1B,QAAU,EAAA;gBACtBluB,MAAS,GAAA,IAAA,CAAA;AACX,aAAA;AACF,SAAA;QAEA,OAAOnoC,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEAsnE,IAAAA,MAAAA,CAAAA,OAwCC,GAxCDA,SAAAA,OAAAA,CAAS7uF,OAAqC,EAAA;QAC5C,IAAMgxG,IAAAA,GAAO,IAAI,CAACC,YAAY,CAAA;QAC9B,IAAM70E,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;AAE9B,QAAA,IAAI,EAAE40E,IAAQ50E,IAAAA,QAAO,CAAI,EAAA;AACvB,YAAA,OAAA;AACF,SAAA;QACA,IAAIve,IAAAA,GAAOmzF,KAAKptD,IAAI,CAAA;AACpB,QAAA,IAAMg5B,eAAe,EAAE,CAAA;AACvB,QAAA,IAAM9+B,OAAO,IAAIl3C,OAAAA,EAAAA,CAAAA;AACjB,QAAA,IAAI8oD,MAAS,GAAA,KAAA,CAAA;QAEb,IAAI7xC,IAAAA,IAAQA,IAAKq8D,CAAAA,OAAO,EAAE;YACxB,GAAG;gBACgCr8D,IAAAA,aAAAA,GAAAA,KAAKq8D,OAAO,CAAA,CAAtCh8D,cAA0BL,aAAZxgB,CAAAA,CAAAA,CAAAA,CAAAA,CAAYwgB,sBAATgvB,KAAShvB,GAAAA,aAAAA,CAAAA,CAAAA,EAAAA;AAEjC,gBAAA,IAAIK,WAAc,GAAA,IAAI,CAACihF,UAAU,EAAE;AACjC,oBAAA,IAAMvrD,GAAM,GAAA,IAAI,CAACw/D,gBAAgB,CAACvmE,KAAAA,CAAAA,CAAAA;oBAClC,IAAMvE,GAAAA,GAAMtoC,QAAQsoC,GAAG,CAAA;AACvB,oBAAA,IAAIsgC,IAAO,GAAA,KAAA,CAAA;AAEX,oBAAA,IAAItgC,GAAK,EAAA;AACPsgC,wBAAAA,IAAAA,GAAO,CAAC,CAACtgC,GAAI0B,CAAAA,eAAe,CAAC;4BAC3BE,MAAQ0J,EAAAA,GAAAA;AACRrJ,4BAAAA,MAAAA,EAAQvqC,QAAQuqC,MAAM;yBACrBuT,EAAAA,IAAAA,CAAAA,CAAAA;AACL,qBAAA;AACA,oBAAA,IAAI8qB,IAAM,EAAA;wBACR,IAAI,CAACgpC,YAAY,GAAG/zF,IAAAA,CAAAA;AACpB++D,wBAAAA,YAAAA,CAAaj+E,IAAI,CAACi1C,GAAAA,CAAAA,CAAAA;wBAClB,IAAI,CAAC5zC,OAAQmwG,CAAAA,QAAQ,EAAE;4BACrBzgD,MAAS,GAAA,IAAA,CAAA;AACX,yBAAA;AACF,qBAAA;AACF,iBAAA;;aAEO,OAAC7xC,CAAAA,IAAOA,GAAAA,IAAAA,CAAK4hF,GAAG,KAAK,CAAC/vC,MAAQ,EAAA;AACzC,SAAA;QAEA,OAAOktB,YAAAA,CAAAA;AACT,KAAA,CAAA;AAEAu0B,IAAAA,MAAAA,CAAAA,eAIC,GAJDA,SAAAA,eAAAA,CAAiB5qB,UAAkB,EAAA;QACjC,IAAI,IAAI,CAAC0rB,MAAM,IAAI,IAAI,CAACA,MAAM,CAACoB,gBAAgB,EAAE;AAC/C,YAAA,IAAI,CAACj3E,QAAQ,CAAC2oE,UAAU,CAACxe,UAAAA,CAAAA,CAAAA;AAC3B,SAAA;AACF,KAAA,CAAA;IAEA2rB,MAAAA,CAAAA,gBAkCC,GAlCDA,SAAAA,gBAAkB3rB,CAAAA,UAAkB,EAAEurB,eAAuB,EAAEjlE,KAAY,EAAE4lC,SAAiB,EAAA;QAC5F,IAAMr2C,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;QAE9B,IAAI,CAACA,QAAS0zE,CAAAA,QAAQ,EAAI,EAAA;AACxB,YAAA,OAAA;AACF,SAAA;QACA,IAAMmC,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;AAC1B,QAAA,IAAMtvF,QAAW,GAAA,IAAI,CAACywF,gBAAgB,CAACvmE,KAAAA,CAAAA,CAAAA;AACvC,QAAA,IAAM5gC,QAAQgmG,MAAOqB,CAAAA,oBAAoB,GAAGl3E,QAASyzE,CAAAA,qBAAqB,CAACtpB,UAAc,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AACrG,QAAA,IAAMhlF,OAAasrC,KAAMvhB,CAAAA,SAAS,CAAC6lB,aAAa,GAAG7qC,OAAO,EAAA,CAAA;AAE1D,QAAA,IAAIoI,KAAQ,GAAA,CAAA,CAAA;AACZ,QAAA,IAAI+nC,QAAWw7D,GAAAA,MAAAA,CAAOx7D,QAAQ,CAACl0B,QAAQ,CAACuvF,eAAAA,CAAAA,CAAAA;QAExC,IAAIG,MAAAA,CAAOsB,gBAAgB,EAAE;YAC3B7kG,KAASnN,IAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;AAClB,SAAA;QACA,IAAI0wG,MAAAA,CAAOuB,mBAAmB,EAAE;YAC9B/8D,QAAYl1C,IAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;AACrB,SAAA;QACA,IAAI0wG,MAAAA,CAAOwB,qBAAqB,IAAI,IAAI,CAACnoF,SAAS,CAAC2kB,eAAe,EAAE;YAClEttB,QAASne,CAAAA,GAAG,CAAC,IAAI,CAAC8mB,SAAS,CAAC2kB,eAAe,CAACttB,QAAQ,CAAA,CAAA;YACpD,IAAMixB,GAAAA,GAAMxX,QAAS6zE,CAAAA,qBAAqB,CAAC1pB,UAAAA,CAAAA,CAAAA;AAE3C,YAAA,IAAI3yC,GAAK,EAAA;AACPjxB,gBAAAA,QAAAA,CAAShe,QAAQ,CAACivC,GAAAA,CAAAA,CAAAA;AACpB,aAAA;AACF,SAAA;QACAxX,QAAS2zE,CAAAA,aAAa,CAACxpB,UAAAA,EAAY5jE,QAAU,EAAA;YAC3C1W,KAAAA,EAAAA,KAAAA;YACAwqC,QAAAA,EAAAA,QAAAA;YACAl1C,IAAMmN,EAAAA,KAAAA;YACNxC,IAAMumE,EAAAA,SAAAA;AACR,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDihC,MAAAA,CAAAA,uBAUC,GAVDA,SAAAA,wBAAyBlzG,KAAa,EAAA;AACpC,QAAA,IAAMqsC,QAAQ,IAAI,CAACokE,YAAY,CAACnR,cAAc,CAACt/F,KAAAA,CAAAA,CAAAA;AAE/C,QAAA,IAAI,CAACqsC,KAAO,EAAA;AACVvoC,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,kBAAA,CAAA,CAAA;YAEd,OAAO,IAAA,CAAA;SACF,MAAA;AACL,YAAA,OAAO,IAAI,CAACo4G,gBAAgB,CAACvmE,KAAMqtC,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAA,CAAA;AAC/C,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACDk5B,MAAAA,CAAAA,gBA6BC,GA7BDA,SAAAA,iBAAkBvmE,KAAY,EAAA;AAC5B,QAAA,IACEvhB,SAKEuhB,GAAAA,KAAAA,CALFvhB,SACAm/E,EAAAA,GAAAA,GAIE59D,MAJF49D,GACAh0D,EAAAA,QAAAA,GAGE5J,KAHF4J,CAAAA,QAAAA,EACA8zD,QAEE19D,KAFF09D,CAAAA,KAAAA,EAAAA,cAAAA,GAEE19D,KADF65D,CAAAA,OAAAA,EAAAA,sCAAU,EAAE,GAAA,cAAA,CAAA;AAGd,QAAA,IAAMC,WAAc,GAAA,IAAI,CAAC3mG,OAAO,CAAC2mG,WAAW,CAAA;AAC5C,QAAA,IAAMz6F,IAAO,GAAA,IAAI,CAACA,IAAI,GAAGq+F,KAAAA,CAAAA;AAEzB,QAAA,IAAM7a,UAAU,IAAI9oF,OAAAA,EAAAA,CAAAA;QACpB,IAAM0vC,GAAAA,GAAM1vC,OAAQH,CAAAA,SAAS,CAACigG,OAAAA,CAAAA,CAAAA;AAE9Bp7E,QAAAA,SAAAA,CAAUmmB,cAAc,CAACi+C,OAAAA,CAAAA,CAAAA;QACzB,IAAMhkF,GAAAA,GAAM2qC,oBAAqB,CAAA,IAAIzvC,OAAW,EAAA,EAAA,IAAI,CAAC5G,OAAO,EAAEs2C,GAAAA,EAAKpqC,IAAMuqC,EAAAA,QAAAA,EAAUi5C,OAAS+a,EAAAA,GAAAA,CAAAA,CAAAA;AAE5F,QAAA,IAAI9D,WAAa,EAAA;YACf,IAAMrqG,MAAAA,GAASqqG,WAAYrqG,CAAAA,MAAM,IAAI;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA;AAC9C,YAAA,IAAM6lB,OAAOwkF,WAAYllF,CAAAA,KAAK,CAACc,QAAQ,CAACrW,IAAOuqC,GAAAA,QAAAA,CAAAA,CAAAA;AAC/C,YAAA,IAAMk9D,KAAK,CAAIxxF,GAAAA,IAAAA,CAAAA;YAEfzW,GAAI7I,CAAAA,CAAC,GAAG6I,GAAI7I,CAAAA,CAAC,GAAG8wG,EAAKr3G,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAG6lB,IAAAA,CAAAA;YACjCzW,GAAI9N,CAAAA,CAAC,GAAG8N,GAAI9N,CAAAA,CAAC,GAAG+1G,EAAKr3G,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAG6lB,IAAAA,CAAAA;YACjCzW,GAAI7E,CAAAA,CAAC,GAAG6E,GAAI7E,CAAAA,CAAC,GAAG8sG,EAAKr3G,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAG6lB,IAAAA,CAAAA;AACnC,SAAA;QAEA,OAAOzW,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEAsnG,IAAAA,MAAAA,CAAAA,SAoHC,GApHDA,SAAAA,SAAAA,CAAWpkG,IAAmB,EAAA;QAC5B,IAAM5O,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;QAC5B,IAAMy2C,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;QAC9B,IAAM4tC,KAAAA,GAAQ,IAAI,CAACA,KAAK,CAAA;AACxB,QAAA,IAAMhS,KAAQryE,GAAAA,OAAAA,CAAQ4zG,UAAU,CAACrxF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;QAC1C,IAAMo9D,OAAAA,GAAU7zG,OAAQ6wG,CAAAA,oBAAoB,GAAGp0E,OAAAA,CAAQ6I,QAAQ,GAAG,IAAI,CAACha,SAAS,CAAC4lB,cAAc,EAAA,CAAA;QAC/F,IAAM4iE,aAAAA,GAAyBllG,KAAK+T,QAAQ,CAAA;;AAG5C,QAAA,IAAMA,QAAWkxF,GAAAA,OAAAA,CAAQ1rG,cAAc,CAAC2rG,eAAe,IAAIltG,OAAAA,EAAAA,CAAAA,CAAAA;QAC3D,IAAM0kB,SAAAA,GAAY,IAAIikB,SAAU,CAAA;YAC9B5sB,QAAAA,EAAAA,QAAAA;YACAgtB,KAAO,EAAA,IAAA;AACT,SAAA,CAAA,CAAA;QAEA,IAAItH,SAAAA,GAAYz5B,KAAKy5B,SAAS,CAAA;AAE9BA,QAAAA,SAAAA,GAAYwrE,OAAQxrG,CAAAA,eAAe,CAACggC,SAAAA,EAAWg9D,SAAS9/F,SAAS,EAAA,CAAA;AACjE,QAAA,IAAIvF,OAAQ+zG,CAAAA,eAAe,IAAI/zG,OAAAA,CAAQg0G,UAAU,EAAE;AACjD,YAAA,IAAK,IAAIh3G,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,CAAA;gBAC1BmuC,QAAS9mC,CAAAA,UAAU,CAACrH,CAAGgD,EAAAA,OAAAA,CAAQg0G,UAAU,CAACh3G,CAAAA,CAAE,CAACulB,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA,CAAAA;AACxD,aAAA;YACAN,SAAUjQ,CAAAA,cAAc,CAACiF,QAAAA,CAAS/lC,MAAM,EAAA,CAAA,CAAA;YACxC,IAAMiyF,IAAAA,GAAOjhD,QAAS9yB,CAAAA,YAAY,CAAC6yB,SAAAA,CAAAA,CAAAA;YAEnCkhD,IAAKhvF,CAAAA,eAAe,CAACggC,SAAAA,CAAAA,CAAW9iC,SAAS,EAAA,CAAA;AAC3C,SAAA;AACA,QAAA,IAAM2lG,IAAO+I,GAAAA,OAAAA,CAAAA;AACb,QAAA,IAAM9I,IAAO+I,GAAAA,OAAAA,CAAAA;QAEb,IAAI7vB,KAAAA,CAAMqU,mBAAmB,EAAE;AAC7ByS,YAAAA,IAAAA,CAAKjnG,QAAQ,CAACmkC,SAAAA,CAAAA,CAAAA;AACd,YAAA,IAAI,CAAC,IAAI,CAACwpE,gBAAgB,EAAE;gBAC1B,IAAIxtB,KAAAA,CAAMsU,WAAW,EAAE;AACrB,oBAAA,IAAI,CAACkZ,gBAAgB,GAAGxtB,KAAMsU,CAAAA,WAAW,CAACv0F,KAAK,EAAA,CAAA;iBAC1C,MAAA;AACL,oBAAA,IAAI,CAACytG,gBAAgB,GAAGjrG,OAAQ8B,CAAAA,CAAC,CAACtE,KAAK,EAAA,CAAA;AACzC,iBAAA;AACAyvG,gBAAAA,OAAAA,CAAQxrG,eAAe,CAAC,IAAI,CAACwpG,gBAAgB,CAAA,CAAA;AAC/C,aAAA;AACA3G,YAAAA,IAAAA,CAAKlkG,YAAY,CAACmkG,IAAAA,EAAM,IAAI,CAAC0G,gBAAgB,EAAEtsG,SAAS,EAAA,CAAA;;YAExD,IAAI2lG,IAAAA,CAAK5oG,MAAM,EAAI,EAAA;gBACjB4oG,IAAKlpG,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjB,aAAA;SACK,MAAA;YACLkpG,IAAKlpG,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;YACfmpG,IAAKnpG,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACjB,SAAA;QACA,IAAIm5E,MAAAA,CAAAA;QACJ,IAAMg5B,GAAAA,GAAM,IAAI,CAAC5F,qBAAqB,CAAA;QAEtC,IAAI4F,GAAAA,IAAOA,GAAIhN,CAAAA,OAAO,EAAE;YACtBhsB,MAASi5B,GAAAA,UAAAA,CAAAA;AACTj5B,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGg5B,IAAIE,cAAc,CAAC9xF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AACxC0kC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGg5B,IAAIG,iBAAiB,CAAC/xF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AAC3C0kC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGg5B,IAAInV,MAAM,CAACz8E,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AAClC,SAAA;AACA,QAAA,IAAMa,GAAMi9D,GAAAA,SAAAA,CAAAA;QAEZ,IAAIv0G,OAAAA,CAAQw0G,eAAe,EAAE;;AAE3Bl9D,YAAAA,GAAAA,CAAIt1C,GAAG,CAAChC,OAAAA,CAAQy0G,cAAc,CAAClyF,QAAQ,CAACk0B,QAAWz2C,CAAAA,EAAAA,OAAAA,CAAQ00G,cAAc,CAACnyF,QAAQ,CAACk0B,QAAAA,CAAAA,EAAWz2C,QAAQ20G,cAAc,CAACpyF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA,CAAAA;SACzH,MAAA,IAAIz2C,OAAQ40G,CAAAA,aAAa,EAAE;YAChCt9D,GAAIt1C,CAAAA,GAAG,CAAC,CAAG,EAAA,CAAA,EAAGhC,QAAQ40G,aAAa,CAACryF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA,CAAAA;SACxC,MAAA;YACLa,GAAIt1C,CAAAA,GAAG,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAChB,SAAA;QACAspB,SAAUO,CAAAA,WAAW,CAACyrB,GAAIz0C,CAAAA,CAAC,EAAEy0C,GAAI15C,CAAAA,CAAC,EAAE05C,GAAAA,CAAIzwC,CAAC,CAAA,CAAA;AACzC,QAAA,IAAMoF,KAAQjM,GAAAA,OAAAA,CAAQ60F,UAAU,CAACtyE,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;QAE1C,IAAIxqC,KAAAA,CAAMxP,MAAM,KAAK,CAAG,EAAA;YACtBwP,KAAK,CAAC,EAAE,GAAG,CAAA,CAAA;AACb,SAAA;AACA,QAAA,IAAM1K,IAAOszG,GAAAA,UAAAA,CAAAA;QAEb,IAAI70G,OAAAA,CAAQ80G,WAAW,EAAE;AACvBvzG,YAAAA,IAAAA,CAAKsB,CAAC,GAAG7C,OAAAA,CAAQ+0G,UAAU,CAAExyF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AACtCl1C,YAAAA,IAAAA,CAAK3D,CAAC,GAAGoC,OAAAA,CAAQg1G,UAAU,CAAEzyF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;SACjC,MAAA;AACL,YAAA,IAAMr4C,CAAI4B,GAAAA,OAAAA,CAAQi1G,SAAS,CAAE1yF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AACtC,YAAA,IAAMvS,MAASlkC,GAAAA,OAAAA,CAAQk1G,UAAU,CAAE3yF,QAAQ,CAACk0B,QAAAA,CAAAA,CAAAA;AAE5Cl1C,YAAAA,IAAAA,CAAKsB,CAAC,GAAGzE,CAAAA,CAAAA;;AAETmD,YAAAA,IAAAA,CAAK3D,CAAC,GAAGsmC,MAAW,KAAA,CAAA,GAAI,IAAI9lC,CAAI8lC,GAAAA,MAAAA,CAAAA;;AAElC,SAAA;QAEA,IAAMumE,GAAAA,GAAMpiE,UAAUjkC,KAAK,EAAA,CAAA;AAE3BqmG,QAAAA,GAAAA,CAAI5lG,QAAQ,CAACwtE,KAAAA,CAAAA,CAAAA;;QAGb,IAAI,CAACryE,OAAQ6wG,CAAAA,oBAAoB,EAAE;AACjC,YAAA,IAAMlhB,YAAY,IAAI/oF,OAAAA,EAAAA,CAAAA;AAEtB,YAAA,IAAI,CAAC0kB,SAAS,CAACmmB,cAAc,CAAC91C,WAAWA,SAAWg0F,EAAAA,SAAAA,CAAAA,CAAAA;YACpDpuF,IAAKsB,CAAAA,CAAC,IAAI8sF,SAAAA,CAAU9sF,CAAC,CAAA;YACrBtB,IAAK3D,CAAAA,CAAC,IAAI+xF,SAAAA,CAAU/xF,CAAC,CAAA;AACvB,SAAA;AACA0tB,QAAAA,SAAAA,CAAUS,QAAQ,CAACxqB,IAAAA,CAAKsB,CAAC,EAAEtB,IAAAA,CAAK3D,CAAC,EAAE,CAAA,CAAA,CAAA;QAEnC,OAAO;YACL2D,IAAAA,EAAAA,IAAAA;YACAkpG,GAAAA,EAAAA,GAAAA;YACAx+F,KAAOA,EAAAA,KAAAA;AACPs+F,YAAAA,KAAAA,EAAOvqG,OAAQm1G,CAAAA,UAAU,CAAC5yF,QAAQ,CAACk0B,QAAAA,CAAAA;AACnCA,YAAAA,QAAAA,EAAUz2C,OAAQo1G,CAAAA,aAAa,CAAC7yF,QAAQ,CAACk0B,QAAAA,CAAAA;AACzCs0D,YAAAA,EAAAA,EAAIsK,aAAc,CAAA,IAAI,CAACC,GAAG,EAAE,IAAA,CAAA;AAC5B5O,YAAAA,OAAAA,EAAS1mG,QAAQ0mG,OAAO;YACxBvrB,MAAAA,EAAAA,MAAAA;YACAgwB,IAAAA,EAAAA,IAAAA;YACAD,IAAAA,EAAAA,IAAAA;YACA5/E,SAAAA,EAAAA,SAAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAEAiqF,IAAAA,MAAAA,CAAAA,QAgBC,GAhBDA,SAAAA,QAAU9C,CAAAA,KAAY,EAAEnI,OAAe,EAAA;AACrC,QAAA,IAAIkL,OAAU,GAAA,KAAA,CAAA;QAEd,IAAI,CAAC,IAAI,CAAChE,QAAQ,CAACG,MAAM,CAACrxG,QAAQ,CAACmyG,KAAQ,CAAA,EAAA;AACzC,YAAA,IAAI,CAACjB,QAAQ,CAACG,MAAM,CAAChzG,IAAI,CAAC8zG,KAAAA,CAAAA,CAAAA;YAC1B+C,OAAU,GAAA,IAAA,CAAA;AACZ,SAAA;AACA,QAAA,IAAIA,OAAWlL,IAAO1uG,YAAP0uG,CAAAA,OAAAA,EAAmB7lG,KAAO,CAAA,EAAA;YACvC,IAAMjE,KAAAA,GAAQ,IAAI,CAACgxG,QAAQ,CAACG,MAAM,CAAClxG,OAAO,CAACgyG,KAAAA,CAAAA,CAAAA;AAE3C,YAAA,IAAI,CAACjB,QAAQ,CAACqB,YAAY,CAACryG,MAAM,GAAG8pG,OAAAA,CAAAA;YAEpC,OAAO9pG,KAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,OAAO,CAAC,CAAA,CAAA;AACV,KAAA,CAAA;AAEAuyG,IAAAA,MAAAA,CAAAA,WAKC,GALDA,SAAAA,WAAAA,CAAavyG,KAAa,EAAA;QACxB,IAAIA,KAAAA,GAAQ,IAAI,CAACgxG,QAAQ,CAACG,MAAM,CAACl1G,MAAM,EAAE;AACvC,YAAA,IAAI,CAAC+0G,QAAQ,CAACqB,YAAY,CAACryG,MAAM,GAAG,IAAA,CAAA;AACpC,YAAA,IAAI,CAACgxG,QAAQ,CAACG,MAAM,CAACjxG,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACrC,SAAA;AACF,KAAA,CAAA;AAEAgyG,IAAAA,MAAAA,CAAAA,WAWC,GAXDA,SAAAA,WAAAA,CAAa/7D,QAAgB,EAAA;AAC3B,QAAA,IAAMg/D,SAAmC,GAAA;AACvC9sD,YAAAA,KAAAA,EAAO,IAAI,CAAC6oD,QAAQ,CAACC,YAAY,CAAClvF,QAAQ,CAACk0B,QAAAA,CAAAA;YAC3Cj2C,KAAO,EAAA,IAAI,CAACkxG,cAAc;YAC1Bnb,UAAY,EAAA,CAAA;YACZC,UAAY,EAAA,CAAA;AACd,SAAA,CAAA;AAEA,QAAA,IAAI,CAACkb,cAAc,EAAA,CAAA;QAEnB,OAAO,IAAI,CAACsB,SAAS,CAAC,IAAI,CAAC3uB,KAAK,CAAC0R,QAAQ,CAAC0f,SAAAA,CAAAA,CAAAA,CAAAA;AAC5C,KAAA,CAAA;IAEAC,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,oBAAAA,GAAAA;QACE,IAAI,CAACnD,eAAe,GAAG,IAAA,CAAA;AACzB,KAAA,CAAA;IAEAoD,MAAAA,CAAAA,sBAEC,GAFDA,SAAAA,sBAAAA,GAAAA;QACE,IAAI,CAACpD,eAAe,GAAG,KAAA,CAAA;AACzB,KAAA,CAAA;IAEA5jE,MAAAA,CAAAA,cAOC,GAPDA,SAAAA,cAAAA,GAAAA;QACE,IAAMwvC,IAAAA,GAAO,IAAI,CAAC+0B,gBAAgB,EAAA,CAAA;QAElC,OAAO;AACLxgG,YAAAA,IAAAA,EAAM0qE,YAAYnzC,MAAM;YACxBk0C,IAAAA,EAAAA,IAAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAmBA,IAAA,MAAA,CAASpiE,QAoRR,GApRD,SAASA,QAAAA,CAAUnN,IAAa,EAAA;AAC9B,QAAA,SAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMirB,KAAQjrB,GAAAA,IAAAA,CAAAA;QAEd,IAAI,CAACirB,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAAC45B,SAAS,GAAG,KAAA,CAAA;AACjB,QAAA,IAAMmiD,WAAc,GAAA,EAAA,CAAA;QACpB,IAAQ51G,OAAAA,GAA8C65B,MAA9C75B,OAA8C65B,EAAAA,2BAAAA,GAAAA,KAAAA,CAArCy0E,sBAAAA,oBAAuB,GAAA,2BAAA,KAAA,KAAA,CAAA,GAAA,EAAIjqB,GAAAA,2BAAAA,EAAAA,KAAAA,GAAUxqD,KAAVwqD,CAAAA,KAAAA,CAAAA;QAC5C,IAAMxtC,eAAAA,GAAkBy3D,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBI,mBAAmB,CAAA;AACjE,QAAA,IAAMhI,OAAU/uD,GAAAA,UAAAA,CAAW22D,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsB5H,OAAO,CAAA,CAAA;QACxD,IAAMmP,sBAAAA,GAAyBh8E,MAAM00E,qBAAqB,CAAA;AAC1D,QAAA,IAAMA,wBAAwBsH,sBAAyB,GAAA;YACrDxB,cAAgB3sD,EAAAA,iBAAAA,CAAkBmuD,sBAAuBxB,CAAAA,cAAc,IAAI,CAAA,CAAA;YAC3EC,iBAAmB5sD,EAAAA,iBAAAA,CAAkBmuD,sBAAuBvB,CAAAA,iBAAiB,IAAI,CAAA,CAAA;YACjFtV,MAAQt3C,EAAAA,iBAAAA,CAAkBmuD,sBAAuB7W,CAAAA,MAAM,IAAI,CAAA,CAAA;AAC3DmI,YAAAA,OAAAA,EAAS0O,uBAAuB1O,OAAO;AACvCG,YAAAA,GAAAA,EAAKuO,uBAAuBvO,GAAG;AAC/BC,YAAAA,GAAAA,EAAKsO,uBAAuBtO,GAAG;AAC/B5+C,YAAAA,KAAAA,EAAOktD,uBAAuBltD,KAAK,IAAIktD,uBAAuBvO,GAAG,GAAGuO,uBAAuBtO,GAAG;SAC5F5rG,GAAAA,SAAAA,CAAAA;AACJ,QAAA,IAAMo4G,eAAkB,GAAA,CAAC,EAAE1vB,SAASA,KAAMyxB,CAAAA,WAAW,KAAIzxB,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAO0xB,WAAW,CAAA,KAAI1xB,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAO2xB,WAAW,CAAD,CAAA,CAAA;QAChG,IAAIhC,UAAAA,CAAAA;AAEJ,QAAA,IAAID,eAAiB,EAAA;AAEC1vB,YAAAA,IAAAA,kBAAAA,EACAA,kBACAA,EAAAA,kBAAAA,CAAAA;YAHpB2vB,UAAa,GAAA;AACXtsD,gBAAAA,iBAAAA,CAAkB28B,CAAAA,kBAAAA,GAAAA,KAAMyxB,CAAAA,WAAW,YAAjBzxB,kBAAqB,GAAA,CAAA,CAAA;AACvC38B,gBAAAA,iBAAAA,CAAkB28B,CAAAA,kBAAAA,GAAAA,KAAM0xB,CAAAA,WAAW,YAAjB1xB,kBAAqB,GAAA,CAAA,CAAA;AACvC38B,gBAAAA,iBAAAA,CAAkB28B,CAAAA,kBAAAA,GAAAA,KAAM2xB,CAAAA,WAAW,YAAjB3xB,kBAAqB,GAAA,CAAA,CAAA;AACxC,aAAA,CAAA;AACH,SAAA;QAEA,IAAI,CAACplF,IAAI,GAAG,gBAAA,CAAA;QACZ,IAAI,CAAColF,KAAK,GAAGiU,WAAYjU,CAAAA,KAAAA,CAAAA,CAAAA;AAGOxqD,QAAAA,IAAAA,4BAAAA,CAAAA;QAFhC,IAAI,CAAC23E,QAAQ,GAAG;AACdC,YAAAA,YAAAA,EAAc/pD,iBAAkB7tB,CAAAA,KAAAA,CAAM23E,QAAQ,CAACC,YAAY,CAAA;YAC3DoB,YAAcoD,EAAAA,eAAAA,CAAgBp8E,CAAAA,4BAAAA,GAAAA,KAAAA,CAAM23E,QAAQ,CAACqB,YAAY,KAA3Bh5E,IAAAA,GAAAA,4BAAAA,GAA+B,EAAE,CAAA;AAC/D83E,YAAAA,MAAAA,EAAQ,CAAC93E,KAAM23E,CAAAA,QAAQ,CAACG,MAAM,IAAI,EAAE,EAAEplG,GAAG,CAAC,SAAC/P,CAAAA,EAAAA;AAAW,gBAAA,OAAA,IAAIuiG,KAAMviG,CAAAA,CAAAA,CAAAA,CAAAA;;AAClE,SAAA,CAAA;QACA,IAAI,CAAC+xG,qBAAqB,GAAGA,qBAAAA,CAAAA;AAC7B,QAAA,IAAMnyE,QAAWvC,GAAAA,KAAAA,CAAMuC,QAAQ,IAAI,EAAC,CAAA;QACpC,IAAImqE,oBAAAA,CAAAA;QACJ,IAAM2P,SAAAA,GAAYr8E,MAAM0sE,oBAAoB,CAAA;AAE5C,QAAA,IAAI2P,SAAW,EAAA;AACb3P,YAAAA,oBAAAA,GAAuB,EAAC,CAAA;AACxBA,YAAAA,oBAAAA,CAAqBpvD,UAAU,GAAG,CAAC,CAAC++D,UAAU/+D,UAAU,CAAA;YACxDovD,oBAAqB1/F,CAAAA,CAAC,GAAGqvG,SAAUrvG,CAAAA,CAAC,GAAG6gD,iBAAkBwuD,CAAAA,SAAAA,CAAUrvG,CAAC,CAAA,GAAI6gD,iBAAkB,CAAA,CAAA,CAAA,CAAA;YAC1F,IAAIwuD,SAAAA,CAAUrO,YAAY,EAAE;AAC1BtB,gBAAAA,oBAAAA,CAAqB1jG,CAAC,GAAGqzG,SAAAA,CAAUrzG,CAAC,IAAI6kD,iBAAAA,CAAkBwuD,UAAUrzG,CAAC,CAAA,CAAA;AACrE0jG,gBAAAA,oBAAAA,CAAqB3oG,CAAC,GAAGs4G,SAAAA,CAAUt4G,CAAC,IAAI8pD,iBAAAA,CAAkBwuD,UAAUt4G,CAAC,CAAA,CAAA;AACvE,aAAA;AACF,SAAA;QAEA,IAAI+oG,WAAAA,CAAAA;QAEJ,IAAI2H,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAsB3H,CAAAA,WAAW,EAAE;YACrCA,WAAc,GAAA;gBACZrqG,MAAQgyG,EAAAA,oBAAAA,CAAqBhyG,MAAM,IAAI;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;gBAChDmlB,KAAOimC,EAAAA,iBAAAA,CAAkB4mD,oBAAqBM,CAAAA,UAAU,IAAI;oBAACjuF,SAAc,CAACm5B,IAAI;AAAE,oBAAA;AAAC,wBAAA;AAAC,4BAAA,CAAA;AAAG,4BAAA,CAAA;AAAE,yBAAA;AAAE,wBAAA;AAAC,4BAAA,CAAA;AAAG,4BAAA,CAAA;AAAE,yBAAA;AAAC,qBAAA;AAAC,iBAAA,CAAA;AACrG,aAAA,CAAA;AACF,SAAA;AACA,QAAA,IAAM9C,qBAAwB,GAAA;AAC5Bn0C,YAAAA,CAAAA,EAAGyrG,qBAAqB6H,OAAO,IAAIzuD,iBAAkB4mD,CAAAA,oBAAAA,CAAqB6H,OAAO,IAAI,CAAA,CAAA;AACrFv4G,YAAAA,CAAAA,EAAG0wG,qBAAqB8H,OAAO,IAAI1uD,iBAAkB4mD,CAAAA,oBAAAA,CAAqB8H,OAAO,IAAI,CAAA,CAAA;AACrFvvG,YAAAA,CAAAA,EAAGynG,qBAAqB+H,OAAO,IAAI3uD,iBAAkB4mD,CAAAA,oBAAAA,CAAqB+H,OAAO,IAAI,CAAA,CAAA;AACrF9+D,YAAAA,UAAAA,EAAY+2D,qBAAqB/2D,UAAU;AAC7C,SAAA,CAAA;AACA,QAAA,IAAML,sBAAyB,GAAA;AAC7Br0C,YAAAA,CAAAA,EAAGyrG,oBAAqBgI,CAAAA,QAAQ,IAAI5uD,iBAAAA,CAAkB4mD,qBAAqBgI,QAAQ,CAAA;AACnF14G,YAAAA,CAAAA,EAAG0wG,oBAAqBiI,CAAAA,QAAQ,IAAI7uD,iBAAAA,CAAkB4mD,qBAAqBiI,QAAQ,CAAA;AACnF1vG,YAAAA,CAAAA,EAAGynG,oBAAqBkI,CAAAA,QAAQ,IAAI9uD,iBAAAA,CAAkB4mD,qBAAqBkI,QAAQ,CAAA;AACnFtsE,YAAAA,MAAAA,EAAQokE,qBAAqBmI,SAAS;AACtCt/D,YAAAA,UAAAA,EAAYm3D,qBAAqBn3D,UAAU;AAC7C,SAAA,CAAA;AACA,QAAA,IAAMmvD,gBAAmBzsE,GAAAA,KAAAA,CAAMysE,gBAAgB,IAAI,EAAC,CAAA;QACpD,IAAMrR,iBAAAA,GAAoBp7D,MAAMo7D,iBAAiB,CAAA;AACjD,QAAA,IAAMyhB,iBAAoBd,GAAAA,WAAAA,CAAAA;AAC1B,QAAA,IAAMe,sBAAyBrQ,GAAAA,CAAAA,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAkBuB,YAAY,IAC3D;YACEA,YAAc,EAAA,IAAA;YACdhlG,CAAG6kD,EAAAA,iBAAAA,CAAkB4+C,iBAAiBzjG,CAAC,CAAA;YACvCjF,CAAG8pD,EAAAA,iBAAAA,CAAkB4+C,iBAAiB1oG,CAAC,CAAA;SAEzC,GAAA;YACEiqG,YAAc,EAAA,KAAA;YACdhlG,CAAG6kD,EAAAA,iBAAAA,CAAkB,CAAC,MAAU4+C,IAAAA,gBAAAA,GAAmBA,gBAAiB/kG,CAAAA,IAAI,GAAG+kG,gBAAAA,CAAiBzjG,CAAAA,KAAM,CAAA,CAAA;AACpG,SAAA,CAAA;AAEFu5B,QAAAA,QAAAA,CAAS6F,MAAM,GAAG7F,QAAS6F,CAAAA,MAAM,IAAI;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AAC3C,QAAA,IAAMA,MAASr+B,GAAAA,OAAAA,CAAQ6C,SAAS,CAAC21B,SAAS6F,MAAM,CAAA,CAAA;AAUpCjiC,QAAAA,IAAAA,iBAAAA,CAAAA;QARZ,IAAI,CAACA,OAAO,GAAG;YACb6wG,oBAAsB,EAAA,CAAC,CAAC7wG,OAAAA,CAAQ6wG,oBAAoB;YACpDuE,aAAe1tD,EAAAA,iBAAAA,CAAkB1nD,QAAQo1G,aAAa,CAAA;YACtDD,UAAYztD,EAAAA,iBAAAA,CAAkB1nD,OAAQm1G,CAAAA,UAAU,IAAI,CAAA,CAAA;YACpDvB,UAAYlsD,EAAAA,iBAAAA,CAAkB4mD,oBAAqBsF,CAAAA,UAAU,IAAI,CAAA,CAAA;YACjE/e,UAAYntC,EAAAA,iBAAAA,CAAkB1nD,QAAQ60F,UAAU,CAAA;;YAEhD+hB,OAAS,EAAA,KAAA;AACTh5B,YAAAA,QAAAA,EAAU59E,CAAAA,iBAAAA,GAAAA,OAAQ49E,CAAAA,QAAQ,YAAhB59E,iBAAoB,GAAA,CAAA;AAC9B62C,YAAAA,eAAAA,EAAiB6Q,kBAAkB7Q,eAAmB,IAAA,CAAA,CAAA;YACtD6vD,OAAAA,EAAAA,OAAAA;YACAoO,WAAa,EAAA,CAAC,CAAC90G,OAAAA,CAAQ80G,WAAW;YAClCf,eAAAA,EAAAA,eAAAA;YACAC,UAAAA,EAAAA,UAAAA;AACAr9D,YAAAA,iBAAAA,EAAmB23D,oBAAqB33D,CAAAA,iBAAiB,IAAI+Q,iBAAAA,CAAkB4mD,qBAAqB33D,iBAAiB,CAAA;YACrHK,qBAAAA,EAAAA,qBAAAA;YACAE,sBAAAA,EAAAA,sBAAAA;YACAyvD,WAAAA,EAAAA,WAAAA;AACF,SAAA,CAAA;QACA,IAAI3mG,OAAAA,CAAQ20G,cAAc,EAAE;YAC1B,IAAI,CAAC30G,OAAO,CAAC40G,aAAa,GAAGltD,iBAAkB1nD,CAAAA,OAAAA,CAAQ20G,cAAc,IAAI,CAAA,CAAA,CAAA;AAC3E,SAAA;AACA,QAAA,IAAI30G,OAAQy0G,CAAAA,cAAc,IAAIz0G,OAAAA,CAAQ00G,cAAc,EAAE;AACpD,YAAA,IAAI,CAAC10G,OAAO,CAACw0G,eAAe,GAAG,IAAA,CAAA;YAC/B,IAAI,CAACx0G,OAAO,CAACy0G,cAAc,GAAG/sD,iBAAkB1nD,CAAAA,OAAAA,CAAQy0G,cAAc,IAAI,CAAA,CAAA,CAAA;YAC1E,IAAI,CAACz0G,OAAO,CAAC00G,cAAc,GAAGhtD,iBAAkB1nD,CAAAA,OAAAA,CAAQ00G,cAAc,IAAI,CAAA,CAAA,CAAA;YAC1E,IAAI,CAAC10G,OAAO,CAAC20G,cAAc,GAAGjtD,iBAAkB1nD,CAAAA,OAAAA,CAAQ20G,cAAc,IAAI,CAAA,CAAA,CAAA;AAC5E,SAAA;QAEA,IAAI30G,OAAAA,CAAQ80G,WAAW,EAAE;AACvB,YAAA,IAAI,CAAC90G,OAAO,CAAC+0G,UAAU,GAAGrtD,iBAAAA,CAAkB1nD,QAAQ+0G,UAAU,CAAA,CAAA;AAC9D,YAAA,IAAI,CAAC/0G,OAAO,CAACg1G,UAAU,GAAGttD,iBAAAA,CAAkB1nD,QAAQg1G,UAAU,CAAA,CAAA;SACzD,MAAA;AACL,YAAA,IAAI,CAACh1G,OAAO,CAACi1G,SAAS,GAAGvtD,iBAAAA,CAAkB1nD,QAAQi1G,SAAS,CAAA,CAAA;YAC5D,IAAI,CAACj1G,OAAO,CAACk1G,UAAU,GAAGxtD,iBAAkB1nD,CAAAA,OAAAA,CAAQk1G,UAAU,IAAI,CAAA,CAAA,CAAA;AACpE,SAAA;QAEA,IAAIr7E,KAAAA,CAAM6kD,IAAI,EAAE;AACd,YAAA,IAAI,CAACL,WAAW,CAACje,cAAc,CAACvmC,MAAM6kD,IAAI,CAAA,CAAA;AAC5C,SAAA;AAEA,QAAA,IAAMwwB,iBAAuC,GAAA;;AAE3CtI,YAAAA,SAAAA,EAAW5mG,QAAQ4mG,SAAS;YAC5B3nG,IAAM,EAAA,IAAI,CAACA,IAAI;AACfqlC,YAAAA,MAAAA,EAAQ7H,QAAQ6I,QAAQ;YACxBoxE,iBAAAA,EAAAA,iBAAAA;AACAj2B,YAAAA,UAAAA,EAAYrkD,SAASqkD,UAAU,IAAI9/D,UAAe,CAAC6gE,SAAS;AAC5DnlB,YAAAA,IAAAA,EAAMjgC,SAASigC,IAAI,IAAI17C,QAAa,CAAC27C,MAAM;YAC3CoqC,OAAAA,EAAAA,OAAAA;;AAEAtrC,YAAAA,QAAAA,EAAUh/B,SAASg/B,QAAQ,IAAIz6C,YAAiB,CAAC06C,KAAK;YACtDkrC,oBAAAA,EAAAA,oBAAAA;AACA1vD,YAAAA,eAAAA,EAAiB,IAAI,CAAC72C,OAAO,CAAC62C,eAAe;AAC7CG,YAAAA,qBAAAA,EAAuB,IAAI,CAACh3C,OAAO,CAACg3C,qBAAqB;AACzDE,YAAAA,sBAAAA,EAAwB,IAAI,CAACl3C,OAAO,CAACk3C,sBAAsB;AAC3DP,YAAAA,iBAAAA,EAAmB,IAAI,CAAC32C,OAAO,CAAC22C,iBAAiB;YACjDwkC,MAAQozB,EAAAA,qBAAAA;YACR3tB,SAAW,EAAA,CAAC,CAACxkD,QAAAA,CAASwkD,SAAS;YAC/BC,oBAAsB,EAAA,CAAC,CAACzkD,QAAAA,CAASykD,oBAAoB;AACrDjD,YAAAA,QAAAA,EAAU59E,QAAQ49E,QAAQ;AAC1Bc,YAAAA,IAAAA,EAAM,IAAI,CAACL,WAAW,CAACle,WAAW,EAAA;AAClCrD,YAAAA,QAAAA,EAAU,IAAI,CAACuhB,WAAW,CAACvhB,QAAQ;YACnC6pC,WAAAA,EAAAA,WAAAA;YACAE,OAASzqE,EAAAA,QAAAA,CAASu4B,OAAO,GAAG,IAAI,CAAClgD,MAAM,CAAC6K,UAAU,CAAC8c,QAASu4B,CAAAA,OAAO,CAAIh5D,GAAAA,SAAAA;YACvE2qG,gBAAkBqQ,EAAAA,sBAAAA;YAClB10E,MAAAA,EAAAA,MAAAA;AACF,SAAA,CAAA;AAEA,QAAA,IAAIgzD,iBAAmB,EAAA;AACrB,YAAA,IAAQhpF,KAAmBgpF,GAAAA,iBAAAA,CAAnBhpF,KAAOitE,EAAAA,OAAAA,GAAY+b,iBAAZ/b,CAAAA,OAAAA,CAAAA;YAEfg2B,iBAAkBja,CAAAA,iBAAiB,GAAG,EAAC,CAAA;AACvC,YAAA,IAAI/b,OAAS,EAAA;AACXg2B,gBAAAA,iBAAAA,CAAkBja,iBAAiB,CAAC/b,OAAO,GAAGxxB,iBAAAA,CAAkButC,kBAAkB/b,OAAO,CAAA,CAAA;AAC3F,aAAA;AACA,YAAA,IAAIjtE,KAAO,EAAA;gBACT,IAAIA,KAAK,CAAC,CAAE,CAAA,KAAK0U,SAAc,CAACypC,cAAc,EAAE;oBAC9C8kD,iBAAkBja,CAAAA,iBAAiB,CAAChpF,KAAK,GAAG,iBAAmBA,CAAAA,KAAK,CAAwB,CAAE,CAAA,CAAA;iBACzF,MAAA,IAAIA,KAAK,CAAC,CAAA,CAAE,KAAK0U,SAAc,CAACupC,UAAU,EAAE;oBACjDglD,iBAAkBja,CAAAA,iBAAiB,CAAChpF,KAAK,GAAGunD,OAAAA,CAAQ4B,cAAc,CAChE,IAAI,CAAC3gD,MAAM,EACX;AACE7F,wBAAAA,IAAAA,EAAM,IAAIxP,UAAAA,CAAW6M,KAAK,CAAC,CAAE,CAAA,CAAA;wBAC7ByC,KAAO,EAAA,CAAA;wBACPC,MAAQ,EAAA,CAAA;AACV,qBAAA,CAAA,CAAA;AACJ,iBAAA,MAAO,IAAS/S,YAALqQ,CAAAA,KAAAA,EAAiBunD,OAAS,CAAA,EAAA;oBACnC07C,iBAAkBja,CAAAA,iBAAiB,CAAChpF,KAAK,GAAGA,KAAAA,CAAAA;AAC9C,iBAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAMqpG,MAAM,EAAE,CAAA;AACd,QAAA,IAAI1U,UAAa,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QAC7B,IAAIiW,IAAAA,CAAAA;QAEJ,IAAIh9E,KAAAA,CAAMi9E,MAAM,EAAE;AAChB,YAAA,IAAM/vG,CAAI8yB,GAAAA,KAAAA,CAAMi9E,MAAM,CAAC,CAAE,CAAA,CAAA;YAEzBD,IAAO9vG,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AACX65F,YAAAA,UAAAA,GAAaiW,IAAO,GAAA;AAAC9vG,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAEA,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAEA,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAEA,gBAAAA,CAAC,CAAC,CAAE,CAAA;aAAC,GAAG;AAACA,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAEA,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAEA,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAEA,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA;AACzE,SAAA;AACA,QAAA,IAAIwnG,qBAAyB,IAAA,CAACA,qBAAsBpH,CAAAA,OAAO,EAAE;AAC3D,YAAA,IAAMG,MAAMuP,IAAOtI,GAAAA,qBAAAA,CAAsBhH,GAAG,GAAGgH,sBAAsBjH,GAAG,CAAA;AACxE,YAAA,IAAMC,MAAMsP,IAAOtI,GAAAA,qBAAAA,CAAsBjH,GAAG,GAAGiH,sBAAsBhH,GAAG,CAAA;AACxE,YAAA,IAAM5+C,KAAQ4lD,GAAAA,qBAAAA,CAAsB5lD,KAAK,IAAI2+C,GAAMC,GAAAA,GAAAA,CAAAA;AACnD,YAAA,IAAI/mG,KAAQ,GAAA,CAAA,CAAA;AAEZ,YAAA,IAAK,IAAIqC,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIykG,KAAKzkG,CAAK,EAAA,CAAA;gBAC5B,IAAK,IAAIjF,IAAI,CAAGA,EAAAA,CAAAA,GAAI2pG,OAAO/mG,KAAQmoD,GAAAA,KAAAA,EAAO/qD,KAAK4C,KAAS,EAAA,CAAA;AACtD80G,oBAAAA,GAAAA,CAAI32G,IAAI,CAAC;AACPkE,wBAAAA,CAAAA,GAAI+9F,UAAU,CAAC,CAAA,CAAE,GAAG0G,GAAM1G,GAAAA,UAAU,CAAC,CAAE,CAAA;AACvChjG,wBAAAA,CAAAA,GAAIgjG,UAAU,CAAC,CAAA,CAAE,GAAG2G,GAAM3G,GAAAA,UAAU,CAAC,CAAE,CAAA;wBACvCA,UAAU,CAAC,EAAE,GAAG0G,GAAAA;wBAChB1G,UAAU,CAAC,EAAE,GAAG2G,GAAAA;AAAI,qBAAA,CAAA,CAAA;AACxB,iBAAA;AACF,aAAA;SACK,MAAA;AACL+N,YAAAA,GAAAA,CAAI32G,IAAI,CAACiiG,UAAAA,CAAAA,CAAAA;AACX,SAAA;QACA,IAAI,CAAC0U,GAAG,GAAGA,GAAAA,CAAAA;;AAEXpG,QAAAA,iBAAAA,CAAkB1I,WAAW,GAAGqQ,IAAAA,CAAAA;QAEhC,IAAM5E,MAAAA,GAASp4E,MAAMo4E,MAAM,CAAA;QAC3B,IAAI9C,cAAAA,CAAAA;AAEJ,QAAA,IAAI8C,MAAQ,EAAA;YACV,IAAI,CAACA,MAAM,GAAG;gBACZx7D,QAAUiR,EAAAA,iBAAAA,CAAkBuqD,OAAOx7D,QAAQ,CAAA;gBAC3C48D,gBAAkBpB,EAAAA,MAAAA,CAAOoB,gBAAgB,KAAK,KAAA;gBAC9CE,gBAAkB,EAAA,CAAC,CAACtB,MAAAA,CAAOsB,gBAAgB;gBAC3CC,mBAAqB,EAAA,CAAC,CAACvB,MAAAA,CAAOuB,mBAAmB;gBACjDF,oBAAsB,EAAA,CAAC,CAACrB,MAAAA,CAAOqB,oBAAoB;gBACnDG,qBAAuB,EAAA,CAAC,CAACxB,MAAAA,CAAOwB,qBAAqB;AACvD,aAAA,CAAA;YAEA,IAAIxB,MAAAA,CAAOvzB,IAAI,EAAE;AACf,gBAAA,IAAI,CAACL,WAAW,CAACje,cAAc,CAAC6xC,OAAOvzB,IAAI,CAAA,CAAA;AAC7C,aAAA;YAEAywB,cAAiB,GAAA;gBACflwG,IAAM,EAAA,OAAA;AACNqlC,gBAAAA,MAAAA,EAAQ7H,QAAQ6I,QAAQ;gBACxBu7D,qBAAuBoR,EAAAA,MAAAA,CAAOpR,qBAAqB,IAAI,IAAA;AACvDH,gBAAAA,aAAAA,EAAe1gG,QAAQ49E,QAAQ;AAC/BkjB,gBAAAA,kBAAAA,EAAoBt/F,IAAK2D,CAAAA,KAAK,CAAC8sG,MAAAA,CAAO8E,gBAAgB,CAAK,IAAA,EAAA;AAC3D37C,gBAAAA,QAAAA,EAAU62C,OAAO72C,QAAQ;gBACzBzG,OAASs9C,EAAAA,MAAAA,CAAOt9C,OAAO,GAAG,IAAI,CAAClgD,MAAM,CAAC6K,UAAU,CAAC2yF,MAAOt9C,CAAAA,OAAO,CAAIh5D,GAAAA,SAAAA;gBACnEq5F,mBAAqBttC,EAAAA,iBAAAA,CAAkBuqD,MAAOjd,CAAAA,mBAAmB,IAAI,CAAA,CAAA;gBACrE2L,cAAgBj5C,EAAAA,iBAAAA,CAAkBuqD,MAAOtR,CAAAA,cAAc,IAAI,CAAA,CAAA;;gBAE3D+V,iBAAAA,EAAAA,iBAAAA;AACAjgE,gBAAAA,QAAAA,EAAU,IAAI,CAACw7D,MAAM,CAACx7D,QAAQ;gBAC9BmqC,SAAW,EAAA,CAAC,CAACqxB,MAAAA,CAAOrxB,SAAS;gBAC7BC,oBAAsB,EAAA,CAAC,CAACoxB,MAAAA,CAAOpxB,oBAAoB;AACnD+f,gBAAAA,UAAAA,EAAYqR,OAAOrR,UAAU;AAC7BliB,gBAAAA,IAAAA,EAAM,IAAI,CAACL,WAAW,CAACle,WAAW,EAAA;AAClCrD,gBAAAA,QAAAA,EAAU,IAAI,CAACuhB,WAAW,CAACvhB,QAAQ;AACrC,aAAA,CAAA;AAEA,YAAA,IAAIm1C,MAAOhd,CAAAA,iBAAiB,IAAIgd,MAAAA,CAAOhd,iBAAiB,CAAC,CAAE,CAAA,KAAKt0E,SAAc,CAACypC,cAAc,EAAE;AAC7F+kD,gBAAAA,cAAAA,CAAela,iBAAiB,GAAGgd,MAAOhd,CAAAA,iBAAiB,CAAC,CAAE,CAAA,CAAA;AAChE,aAAA;AACA,YAAA,IAAIgd,MAAOxR,CAAAA,cAAc,IAAIwR,MAAAA,CAAOxR,cAAc,CAAC,CAAE,CAAA,KAAK9/E,SAAc,CAACypC,cAAc,EAAE;AACvF+kD,gBAAAA,cAAAA,CAAe1O,cAAc,GAAGwR,MAAOxR,CAAAA,cAAc,CAAC,CAAE,CAAA,CAAA;AAC1D,aAAA;AACF,SAAA;QAEA,IAAI,CAACrkE,QAAQ,GAAG,IAAI6yE,uBAAuB,IAAI,CAACx6F,MAAM,EAAEy6F,iBAAmBC,EAAAA,cAAAA,CAAAA,CAAAA;AAC3E,QAAA,IAAI,CAAC/yE,QAAQ,CAACx7B,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;AAC9B,QAAA,IAAI,CAACw7B,QAAQ,CAACiiD,WAAW,GAAG,IAAI,CAACA,WAAW,CAAA;AAC5C,QAAA,IAAI,CAAC3lB,MAAM,GAAG,IAAI,CAACt8B,QAAQ,CAACs8B,MAAM,CAAA;QAElC,IAAM8nB,WAAAA,GAAc3mD,MAAM2mD,WAAW,CAAA;AAErC,QAAA,IAAIA,WAAa,EAAA;AAGLA,YAAAA,IAAAA,mBAAAA,CAAAA;YAFV,IAAI,CAACA,WAAW,GAAG;AACjB2vB,gBAAAA,QAAAA,EAAU3vB,YAAY2vB,QAAQ;AAC9B5lE,gBAAAA,MAAAA,EAAQi2C,CAAAA,mBAAAA,GAAAA,WAAYj2C,CAAAA,MAAM,YAAlBi2C,mBAAsB,GAAA,GAAA;AAC9B1D,gBAAAA,QAAAA,EAAU0D,YAAY1D,QAAQ;AAChC,aAAA,CAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACl8E,IAAI,CAAC84E,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAAA;AACpD,KAAA,CAAA;AA5+BWS,IAAAA,aAAAA,CAAAA,cAAAA,EAAAA;;YAwCPglB,GAAAA,EAAAA,YAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACjzF,IAAI,GAAG,IAAI,CAAColG,aAAa,CAAA;AACvC,aAAA;;;YAEI76D,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC0oD,UAAU,GAAG,IAAI,CAACv+F,IAAI,CAACod,QAAQ,CAAA;AAC7C,aAAA;;;YAEIgoF,GAAAA,EAAAA,eAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACiL,YAAY,CAACx0G,MAAM,CAAA;AACjC,aAAA;;;YAMIu6G,GAAAA,EAAAA,cAAAA;;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,OAAO,IAAI,CAACh3G,OAAO,CAAC49E,QAAQ,CAAA;AAC9B,aAAA;;;;;AAMC,MACD,aAAkBh1B,KAAa,EAAA;AAEzB,gBAAA,IAAA,cAAA,CAAA;AADJ,gBAAA,IAAI,CAAC5oD,OAAO,CAAC49E,QAAQ,GAAGh1B,KAAAA,CAAAA;AACxB,gBAAA,IAAA,CAAI,iBAAA,IAAI,CAACxsB,QAAQ,KAAb,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAegzE,YAAY,EAAE;AAC/B,oBAAA,IAAI,CAAChzE,QAAQ,CAACgzE,YAAY,CAACxxB,QAAQ,GAAGh1B,KAAAA,CAAAA;AACxC,iBAAA;AACF,aAAA;;;AAtEWuxB,IAAAA,OAAAA,cAAAA,CAAAA;EAAuB//C,SA6+BnC,EAAA;AA7+BY+/C,cAAAA,GAAAA,UAAAA,CAAAA;IADZ5/D,YAAaoG,CAAAA,QAAa,CAACw5D,cAAc,CAAA;AAC7BA,CAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AA++Bb;AACA,IAAMkrB,UAAU,IAAIz+F,OAAAA,EAAAA,CAAAA;AACpB,IAAMiuG,aAAW,IAAIjxG,OAAAA,EAAAA,CAAAA;AACrB,IAAM2wG,YAAU,IAAI/uE,KAAAA,EAAAA,CAAAA;AACpB,IAAMyuE,UAAU,IAAIrtG,OAAAA,EAAAA,CAAAA;AACpB,IAAMstG,UAAU,IAAIttG,OAAAA,EAAAA,CAAAA;AACpB,IAAMukC,WAAW,IAAIvkC,OAAAA,EAAAA,CAAAA;AACrB,IAAMuvC,YAAY,IAAI3Q,KAAAA,EAAAA,CAAAA;AACtB,IAAM4uE,UAAmB,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,CAAA;AAAG,IAAA,CAAA;AAAE,CAAA,CAAA;AAClC,IAAMh+D,WAAW,IAAI3Z,OAAAA,EAAAA,CAAAA;AAErB,SAASw5E,gBAAiBpD,YAAsC,EAAA;AAC9D,IAAA,IAAMnnG,MAA8B,EAAC,CAAA;IAErC,IAAIjH,KAAAA,CAAMkM,OAAO,CAACkiG,YAAe,CAAA,EAAA;QAC/BA,YAAanmG,CAAAA,OAAO,CAAC9M,SAAAA,GAAAA,EAAAA;YACnB,IAAMq3G,KAAAA,GAAQr3G,YAAG,CAAHA,GAAe6E,EAAAA,KAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAMjE,QAAQy2G,KAAQr3G,GAAAA,GAAG,CAAC,CAAE,CAAA,GAAGA,IAAIY,KAAK,CAAA;YACxC,IAAI8pG,OAAAA,GAAU5+F,GAAG,CAAClL,KAAM,CAAA,CAAA;AAExB,YAAA,IAAI,CAAC8pG,OAAS,EAAA;AACZA,gBAAAA,OAAAA,GAAU5+F,GAAG,CAAClL,KAAM,CAAA,GAAG,EAAE,CAAA;AAC3B,aAAA;AACA,YAAA,IAAIy2G,KAAO,EAAA;AACT3M,gBAAAA,OAAAA,CAAQ3rG,IAAI,CAACiB,GAAIF,CAAAA,KAAK,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;aACrB,MAAA;AACL4qG,gBAAAA,OAAAA,CAAQ3rG,IAAI,CAAC;AAAC,oBAAA,CAACiB,IAAIiD,CAAC;AAAE,oBAAA,CAACjD,IAAIhC,CAAC;AAAE,oBAAA,CAACgC,IAAIiH,CAAC;AAAC,iBAAA,CAAA,CAAA;AACvC,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA;IAEA,OAAO6E,GAAAA,CAAAA;AACT,CAAA;AAEA,SAAS2pG,aAAAA,CAAkBz1G,GAAQ,EAAEs3G,OAAiB,EAAA;IACpD,IAAM12G,KAAAA,GAAQgB,KAAK0D,KAAK,CAAC1D,KAAKpB,MAAM,EAAA,GAAKR,IAAInD,MAAM,CAAA,CAAA;IACnD,IAAMmE,IAAAA,GAAOhB,GAAG,CAACY,KAAM,CAAA,CAAA;AAEvB,IAAA,IAAI,CAAC02G,OAAS,EAAA;QACZt3G,GAAIc,CAAAA,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AACpB,KAAA;IAEA,OAAOI,IAAAA,CAAAA;AACT;;AC3qCO,IAAA,kBAAMu2G,iBAAD,SAAL,SAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAGXC,QAAAA,KAAAA,CAAAA,aAAAA,GAA4B,EAAE,CAAA;AAC9BC,QAAAA,KAAAA,CAAAA,WAAAA,GAAwB,EAAE,CAAA;;;AAJfF,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAMX,IAAA,MAAA,CAASrjB,YAKR,GALD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;QAC1C,IAA2B,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC48F,aAAa,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApCE,YAAAA,IAAAA,YAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,YAAAA,CAAaxjB,YAAY,CAACt5E,OAAAA,CAAAA,CAAAA;AAC5B,SAAA;QACA,IAAI,CAACqG,QAAQ,CAACrG,OAAAA,CAAAA,CAAAA;AAChB,KAAA,CAAA;AAMA+8F,IAAAA,MAAAA,CAAAA,aAeC,GAfDA,SAAAA,aAAeC,CAAAA,eAAkC,EAAEhvF,MAAc,EAAA;QAC/D,IAAmB5sB,YAAf47G,CAAAA,eAAAA,EAA2BjkB,QAAU,CAAA,EAAA;YACvC,IAAK,IAAIv2F,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACo6G,aAAa,CAAC36G,MAAM,EAAEO,CAAK,EAAA,CAAA;AAClD,gBAAA,IAAI,IAAI,CAACo6G,aAAa,CAACp6G,CAAAA,CAAE,KAAKw6G,eAAiB,EAAA;AAC7C,oBAAA,IAAI,CAACH,WAAW,CAACr6G,CAAAA,CAAE,GAAGwrB,MAAAA,CAAAA;AAEtB,oBAAA,OAAA;AACF,iBAAA;AACF,aAAA;SACK,MAAA;AACL,YAAA,IAAI,IAAI,CAAC6uF,WAAW,CAAC56G,MAAM,GAAG+6G,kBAAkB,CAAG,EAAA;AACjD,gBAAA,IAAI,CAACH,WAAW,CAAC56G,MAAM,GAAG+6G,eAAkB,GAAA,CAAA,CAAA;AAC9C,aAAA;AACA,YAAA,IAAI,CAACH,WAAW,CAACG,eAAAA,CAAgB,GAAGhvF,MAAAA,CAAAA;AACtC,SAAA;AACF,KAAA,CAAA;AAEAivF,IAAAA,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,CAAeC,UAAkB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAACL,WAAW,CAACK,UAAW,CAAA,CAAA;AACrC,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,eAEC,GAFDA,SAAAA,eAAAA,CAAiBn3G,KAAa,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC42G,aAAa,CAAC52G,KAAM,CAAA,CAAA;AAClC,KAAA,CAAA;AAEAqgB,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAAUrG,OAAqB,EAAA;;AAE/B,KAAA,CAAA;AA5CW28F,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2B5jB,QA8CvC;;AC9CM,IAAA,uBAAMqkB,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,uBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,uBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,uBAAAA,CAAAA,SAAAA,CAAAA;AAEX,IAAA,MAAA,CAAS/2F,QA0BR,GA1BD,SAASA,QAAAA,CAAUrG,OAAqB,EAAA;AACtC,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;AAE9C,QAAA,IAAI,CAAax4F,YAAX64F,CAAAA,WAAAA,EAAuB3gB,OAAU,CAAA,EAAA;AACrC,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAM+jC,SAAYpjB,GAAAA,WAAAA,CAAAA;AAElB,QAAA,IAAIqjB,QAAW,GAAA,KAAA,CAAA;QAEf,IAAK,IAAI96G,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACo6G,aAAa,CAAC36G,MAAM,EAAEO,CAAK,EAAA,CAAA;AAClD,YAAA,IAAI,IAAI,CAACy6G,aAAa,CAACz6G,KAAK,CAAG,EAAA;gBAC7B86G,QAAW,GAAA,IAAA,CAAA;AAEX,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAIA,QAAU,EAAA;YACZD,SAAUvsF,CAAAA,SAAS,CAAC4kB,QAAQ,CAAC,IAAA,CAAA,CAAA;AAC7B2nE,YAAAA,SAAAA,CAAU1+B,SAAS,CAAC,IAAA,CAAA,CAAA;SACf,MAAA;YACL0+B,SAAUvsF,CAAAA,SAAS,CAAC4kB,QAAQ,CAAC,KAAA,CAAA,CAAA;AAC7B2nE,YAAAA,SAAAA,CAAU1+B,SAAS,CAAC,KAAA,CAAA,CAAA;AACtB,SAAA;AACF,KAAA,CAAA;AA5BWy+B,IAAAA,OAAAA,uBAAAA,CAAAA;EAAgCT,kBA6B5C;;AC7BD;;AAEC,IACM,IAAA,kBAAMY,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAEX,IAAA,MAAA,CAASjkB,YAQR,GARD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAMw+D,OAAUx+D,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;AAE1C,QAAA,IAAI,CAASx4F,YAAPo9E,CAAAA,OAAAA,EAAmBlF,OAAU,CAAA,EAAA;AACjC,YAAA,OAAA;AACF,SAAA;AAEAkF,QAAAA,OAAAA,CAAQ9sE,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;AAC1B,KAAA,CAAA;AAVW6rG,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BxkB,QAWvC;;ACdM,IAAA,oBAAMykB,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;AAIX,IAAA,MAAA,CAASlkB,YAER,GAFD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAI,CAACzf,KAAK,GAAG,IAAI,CAAC0mB,KAAK,CAACc,QAAQ,CAAC,IAAI,CAACrW,IAAI,GAAG,IAAI,CAACmS,WAAW,EAAA,CAAA,CAAA;AAC/D,KAAA,CAAA;AANW25F,IAAAA,OAAAA,oBAAAA,CAAAA;EAAgCzkB,QAO5C;;ACNM,IAAA,qBAAe0kB,iBAAV,SAAL,kBAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,qBAAAA,GAAAA;;;cACpBhhF,YAAe,GAAA,EAAA,CAAA;cAELQ,YAAe,GAAA,EAAA,CAAA;;;AAHLwgF,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AAWpB,IAAA,MAAA,CAASp3F,QAiDR,GAjDD,SAASA,QAAAA,CAAUrG,OAAqB,EAAA;AACtC,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;AAE9C,QAAA,IAAI,CAACK,WAAa,EAAA;AAChB,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAAC,IAAI,CAACl9D,YAAY,EAAE;YACtB,IAAI,CAAC2gF,WAAW,CAACzjB,WAAAA,CAAAA,CAAAA;AACnB,SAAA;AAEA,QAAA,IAAIqjB,QAAW,GAAA,KAAA,CAAA;QAEf,IAAI,CAACK,aAAa,GAAG,IAAI,CAAC5gF,YAAY,CAAC,IAAI,CAACE,YAAY,CAAC,CAAA;QAEzD,IAAI,IAAI,CAAC0gF,aAAa,KAAKx8G,aAAa,IAAI,CAACw8G,aAAa,KAAK,IAAM,EAAA;AACnE,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACC,kBAAkB,EAAA,CAAA;;QAGvB,IAAK,IAAIp7G,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACo6G,aAAa,CAAC36G,MAAM,EAAEO,CAAK,EAAA,CAAA;AAClD,YAAA,IAAMwrB,MAAS,GAAA,IAAI,CAACivF,aAAa,CAACz6G,CAAAA,CAAAA,CAAAA;AAElC,YAAA,IAAIwrB,SAAS,CAAG,EAAA;AACd,gBAAA,IAAM6vF,oBAAuB,GAAA,IAAI,CAACV,eAAe,CAAC36G,CAAAA,CAAAA,CAAAA;AAElD,gBAAA,IAAI,CAAsBpB,YAApBy8G,CAAAA,oBAAAA,EAAgCL,oBAAuB,CAAA,EAAA;AAC3D1zG,oBAAAA,OAAAA,CAAQtJ,KAAK,CAAC,+CAAA,CAAA,CAAA;AACd,oBAAA,SAAA;AACF,iBAAA;gBAEA,IAAMqnB,UAAAA,GAAag2F,qBAAqBt9G,KAAK,CAAA;gBAE7C,IAAI,CAACu9G,gBAAgB,CAACj2F,UAAYmG,EAAAA,MAAAA,CAAAA,CAAAA;gBAElCsvF,QAAW,GAAA,IAAA,CAAA;AACb,aAAA;AACF,SAAA;;AAGA,QAAA,IAAIA,QAAU,EAAA;YACZ,IAAI,CAACvgF,YAAY,CAAC,IAAI,CAACE,YAAY,CAAC,GAAG,IAAI,CAAC0gF,aAAa,CAAA;YAEzD,IAAev8G,YAAX64F,CAAAA,WAAAA,EAAuBr6D,SAAW,CAAA,EAAA;AACpCq6D,gBAAAA,WAAAA,CAAYz5D,0BAA0B,EAAA,CAAA;AACxC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQk9E,WAmBP,GAnBD,SAAQA,WAAAA,CAAa57G,MAAc,EAAA;AACjC,QAAA,IAAM+6B,uBAAuB,IAAI,CAACJ,YAAY,CAAChlB,KAAK,CAAC,GAAA,CAAA,CAAA;AAErD,QAAA,IAAIslB,YAAej7B,GAAAA,MAAAA,CAAAA;QAEnB,IAAK,IAAIU,IAAI,CAAGA,EAAAA,CAAAA,GAAIq6B,qBAAqB56B,MAAM,GAAG,GAAGO,CAAK,EAAA,CAAA;AACxD,YAAA,IAAM6D,WAAW02B,YAAY,CAACF,oBAAoB,CAACr6B,EAAE,CAAC,CAAA;AAEtD,YAAA,IAAI6D,aAAalF,SAAW,EAAA;gBAC1B2I,OAAQtJ,CAAAA,KAAK,CAAC,MAASq8B,GAAAA,oBAAoB,CAACr6B,CAAE,CAAA,GAAG,kBAAkBV,MAAS,GAAA,gBAAA,CAAA,CAAA;AAC9E,aAAA;YACAi7B,YAAe12B,GAAAA,QAAAA,CAAAA;AACjB,SAAA;QAEA,IAAIw2B,oBAAAA,CAAqB56B,MAAM,GAAG,CAAG,EAAA;YACnC,IAAI,CAACg7B,YAAY,GAAGJ,oBAAoB,CAACA,oBAAqB56B,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;AAC3E,SAAA;QAEA,IAAI,CAAC86B,YAAY,GAAGA,YAAAA,CAAAA;AACtB,KAAA,CAAA;AAjFoB0gF,IAAAA,OAAAA,qBAAAA,CAAAA;EAAiCd,kBAkFtD,CAAA;;ACpFM,IAAA,0BAAMoB,iBAAD,SAAL,qBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,0BAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,0BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,0BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASH,CAAAA,kBAER,GAFD,SAASA,kBAAAA,GAAAA;QACP,IAAI,CAACD,aAAa,CAACt0G,OAAO,EAAA,CAAA;AAC5B,KAAA,CAAA;AAEA,IAAA,MAAA,CAASy0G,gBAOR,GAPD,SAASA,gBAAkBj2F,CAAAA,UAAiB,EAAEmG,MAAc,EAAA;QAC1D,IAAM1H,MAAAA,GAAS,IAAI,CAACq3F,aAAa,CAAA;AAEjCr3F,QAAAA,MAAAA,CAAOpkB,CAAC,IAAI2lB,UAAW3lB,CAAAA,CAAC,GAAG8rB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOjjB,CAAC,IAAIwkB,UAAWxkB,CAAAA,CAAC,GAAG2qB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOpe,CAAC,IAAI2f,UAAW3f,CAAAA,CAAC,GAAG8lB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOre,CAAC,IAAI4f,UAAW5f,CAAAA,CAAC,GAAG+lB,MAAAA,CAAAA;AAC7B,KAAA,CAAA;AAZW+vF,IAAAA,OAAAA,0BAAAA,CAAAA;EAAmCN,qBAa/C;;ACdM,IAAA,0BAAMO,iBAAD,SAAL,qBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,0BAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,0BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,0BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASJ,CAAAA,kBAER,GAFD,SAASA,kBAAAA,GAAAA;QACP,IAAI,CAACD,aAAa,GAAG,CAAA,CAAA;AACvB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASG,gBAER,GAFD,SAASA,gBAAkBj2F,CAAAA,UAAkB,EAAEmG,MAAc,EAAA;QAC3D,IAAI,CAAC2vF,aAAa,IAAI91F,UAAamG,GAAAA,MAAAA,CAAAA;AACrC,KAAA,CAAA;AAPWgwF,IAAAA,OAAAA,0BAAAA,CAAAA;EAAmCP,qBAQ/C;;ACPM,IAAA,qBAAMQ,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,qBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AAEX,IAAA,MAAA,CAAS53F,QACR,GADD,SAASA,QAAAA,CAAUrG,OAAqB,EACxC,EAAA,CAAA;AAHWi+F,IAAAA,OAAAA,qBAAAA,CAAAA;EAA8BtB,kBAI1C;;ACJM,IAAA,wBAAMuB,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,wBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,wBAAAA,CAAAA,SAAAA,CAAAA;AAEX,IAAA,MAAA,CAAS73F,QACR,GADD,SAASA,QAAAA,CAAUrG,OAAqB,EACxC,EAAA,CAAA;AAHWk+F,IAAAA,OAAAA,wBAAAA,CAAAA;EAAiCvB,kBAI7C;;ACHM,IAAA,0BAAMwB,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,0BAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,0BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,0BAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAAS7kB,YAMR,GAND,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;QAE9C,IAAex4F,YAAX64F,CAAAA,WAAAA,EAAuBtgB,oBAAsB,CAAA,EAAA;AAC/CsgB,YAAAA,WAAAA,CAAYvoF,IAAI,GAAG,IAAI,CAAC0gD,OAAO,EAAA,CAAA;AACjC,SAAA;AACF,KAAA,CAAA;AAPW+rD,IAAAA,OAAAA,0BAAAA,CAAAA;EAAmCplB,QAQ/C;;ACRM,IAAA,2BAAMqlB,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,2BAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,2BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,2BAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAAS/3F,QAwBR,GAxBD,SAASA,QAAAA,CAAUrG,OAAqB,EAAA;AACtC,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;AAE9C,QAAA,IAAI,CAAax4F,YAAX64F,CAAAA,WAAAA,EAAuBtgB,oBAAuB,CAAA,EAAA;AAClD,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAM0kC,oBAAuBpkB,GAAAA,WAAAA,CAAAA;AAE7B,QAAA,IAAIqjB,QAAW,GAAA,KAAA,CAAA;QAEf,IAAK,IAAI96G,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACo6G,aAAa,CAAC36G,MAAM,EAAEO,CAAK,EAAA,CAAA;AAClD,YAAA,IAAI,IAAI,CAACy6G,aAAa,CAACz6G,KAAK,CAAG,EAAA;gBAC7B86G,QAAW,GAAA,IAAA,CAAA;AAEX,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AAEA,QAAA,IAAIA,QAAU,EAAA;YACZe,oBAAqBj4G,CAAAA,IAAI,CAACu4E,SAAS,CAAC,IAAA,CAAA,CAAA;SAC/B,MAAA;YACL0/B,oBAAqBj4G,CAAAA,IAAI,CAACu4E,SAAS,CAAC,KAAA,CAAA,CAAA;AACtC,SAAA;AACF,KAAA,CAAA;AAzBWy/B,IAAAA,OAAAA,2BAAAA,CAAAA;EAAoCzB,kBA0BhD;;AC3BM,IAAA,sBAAM2B,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,sBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;AAEX,IAAA,MAAA,CAASj4F,QACR,GADD,SAASA,QAAAA,CAAUrG,OAAqB,EACxC,EAAA,CAAA;AAHWs+F,IAAAA,OAAAA,sBAAAA,CAAAA;EAA+B3B,kBAI3C;;ACFM,IAAA,4BAAM4B,iBAAD,SAAL,qBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,4BAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,4BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,4BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASX,CAAAA,kBAKR,GALD,SAASA,kBAAAA,GAAAA;AACP,QAAA,IAAI,CAACD,aAAa,CAACt1G,CAAC,GAAG,CAAA,CAAA;AACvB,QAAA,IAAI,CAACs1G,aAAa,CAACv6G,CAAC,GAAG,CAAA,CAAA;AACvB,QAAA,IAAI,CAACu6G,aAAa,CAACtxG,CAAC,GAAG,CAAA,CAAA;AACvB,QAAA,IAAI,CAACsxG,aAAa,CAACvvG,CAAC,GAAG,CAAA,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS0vG,gBAOR,GAPD,SAASA,gBAAkBj2F,CAAAA,UAAmB,EAAEmG,MAAc,EAAA;QAC5D,IAAM1H,MAAAA,GAAS,IAAI,CAACq3F,aAAa,CAAA;AAEjCr3F,QAAAA,MAAAA,CAAOje,CAAC,IAAIwf,UAAWxf,CAAAA,CAAC,GAAG2lB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOljB,CAAC,IAAIykB,UAAWzkB,CAAAA,CAAC,GAAG4qB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOja,CAAC,IAAIwb,UAAWxb,CAAAA,CAAC,GAAG2hB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOlY,CAAC,IAAIyZ,UAAWzZ,CAAAA,CAAC,GAAG4f,MAAAA,CAAAA;AAC7B,KAAA,CAAA;AAfWuwF,IAAAA,OAAAA,4BAAAA,CAAAA;EAAqCd,qBAgBjD,EAAA;AAEM,IAAA,4BAAMe,iBAAD,SAAL,qBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,4BAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,4BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,4BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASZ,CAAAA,kBAIR,GAJD,SAASA,kBAAAA,GAAAA;AACP,QAAA,IAAI,CAACD,aAAa,CAACt1G,CAAC,GAAG,CAAA,CAAA;AACvB,QAAA,IAAI,CAACs1G,aAAa,CAACv6G,CAAC,GAAG,CAAA,CAAA;AACvB,QAAA,IAAI,CAACu6G,aAAa,CAACtxG,CAAC,GAAG,CAAA,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAASyxG,gBAMR,GAND,SAASA,gBAAkBj2F,CAAAA,UAAmB,EAAEmG,MAAc,EAAA;QAC5D,IAAM1H,MAAAA,GAAS,IAAI,CAACq3F,aAAa,CAAA;AAEjCr3F,QAAAA,MAAAA,CAAOje,CAAC,IAAIwf,UAAWxf,CAAAA,CAAC,GAAG2lB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOljB,CAAC,IAAIykB,UAAWzkB,CAAAA,CAAC,GAAG4qB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOja,CAAC,IAAIwb,UAAWxb,CAAAA,CAAC,GAAG2hB,MAAAA,CAAAA;AAC7B,KAAA,CAAA;AAbWwwF,IAAAA,OAAAA,4BAAAA,CAAAA;EAAqCf,qBAcjD,EAAA;AAEM,IAAA,4BAAMgB,iBAAD,SAAL,qBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,4BAAAA,EAAAA,qBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,4BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,4BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASb,CAAAA,kBAGR,GAHD,SAASA,kBAAAA,GAAAA;AACP,QAAA,IAAI,CAACD,aAAa,CAACt1G,CAAC,GAAG,CAAA,CAAA;AACvB,QAAA,IAAI,CAACs1G,aAAa,CAACv6G,CAAC,GAAG,CAAA,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS06G,gBAKR,GALD,SAASA,gBAAkBj2F,CAAAA,UAAmB,EAAEmG,MAAc,EAAA;QAC5D,IAAM1H,MAAAA,GAAS,IAAI,CAACq3F,aAAa,CAAA;AAEjCr3F,QAAAA,MAAAA,CAAOje,CAAC,IAAIwf,UAAWxf,CAAAA,CAAC,GAAG2lB,MAAAA,CAAAA;AAC3B1H,QAAAA,MAAAA,CAAOljB,CAAC,IAAIykB,UAAWzkB,CAAAA,CAAC,GAAG4qB,MAAAA,CAAAA;AAC7B,KAAA,CAAA;AAXWywF,IAAAA,OAAAA,4BAAAA,CAAAA;EAAqChB,qBAYjD;;ACzCD,IAAM1D,UAAU,IAAI/uE,KAAAA,EAAAA,CAAAA;AACpB,IAAMqvE,QAAW,GAAA,IAAIjuG,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACnC,IAAM8oF,UAAU,IAAI9oF,OAAAA,EAAAA,CAAAA;AAYpB;;AAEC,IACM,IAAA,iBAAMsyG,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,iBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,iBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;IAiCX7pG,MAAAA,CAAAA,KA8EC,GA9EDA,SAAAA,KAAAA,GAAAA;QACE,IAAMwoG,SAAAA,GAAY,IAAI,CAACpjB,WAAW,CAAA;AAClC,QAAA,IAAMzvF,KAAQ6yG,GAAAA,SAAAA,CAAUvsF,SAAS,CAACtmB,KAAK,CAAA;QAEvC,IAAI,CAACm0G,iBAAiB,GAAG;AACvBx2F,YAAAA,QAAAA,EAAUk1F,SAAUvsF,CAAAA,SAAS,CAAC3I,QAAQ,CAACve,KAAK,EAAA;AAC5Cwe,YAAAA,QAAAA,EAAUi1F,SAAUvsF,CAAAA,SAAS,CAACulB,WAAW,GAAGzsC,KAAK,EAAA;;YAEjDY,KAAO,EAAA,IAAI4B,QAAQ5B,KAAMnC,CAAAA,CAAC,EAAEmC,KAAMpH,CAAAA,CAAC,EAAEoH,KAAAA,CAAMnC,CAAC,CAAA;AAC9C,SAAA,CAAA;AACA,QAAA,IAAMyrG,oBAAuB,GAAA,IAAI,CAAC1/F,IAAI,CAAC0/F,oBAAoB,CAAA;AAC3D,QAAA,IAAM/H,oBAAuB,GAAA,IAAI,CAAC33F,IAAI,CAAC23F,oBAAoB,CAAA;AAC3D,QAAA,IAAMD,gBAAmB,GAAA,IAAI,CAAC13F,IAAI,CAAC03F,gBAAgB,CAAA;;AAGnD,QAAA,IAAIgI,wBAAwB3xG,MAAOkQ,CAAAA,IAAI,CAACyhG,oBAAsB7xG,CAAAA,CAAAA,MAAM,KAAK,CAAG,EAAA;YAC1E,IAAI,CAAC6xG,oBAAoB,GAAGA,oBAAAA,CAAAA;YAC5B,IAAIA,oBAAAA,CAAqBnrF,IAAI,EAAE;AAC7B,gBAAA,IAAI,CAACg2F,iBAAiB,CAACh2F,IAAI,GAAGukC,iBAAAA,CAAkB4mD,qBAAqBnrF,IAAI,CAAA,CAAA;AAC3E,aAAA;YACA,IAAMi2F,eAAAA,GAAkB9K,qBAAqB6H,OAAO,IAAI7H,qBAAqB8H,OAAO,IAAI9H,qBAAqB+H,OAAO,CAAA;AAEpH,YAAA,IAAI+C,eAAiB,EAAA;gBACnB,IAAI,CAACpiE,qBAAqB,GAAG;AAC3Bn0C,oBAAAA,CAAAA,EAAGyrG,oBAAqB6H,CAAAA,OAAO,IAAIzuD,iBAAAA,CAAkB4mD,qBAAqB6H,OAAO,CAAA;AACjFv4G,oBAAAA,CAAAA,EAAG0wG,oBAAqB8H,CAAAA,OAAO,IAAI1uD,iBAAAA,CAAkB4mD,qBAAqB8H,OAAO,CAAA;AACjFvvG,oBAAAA,CAAAA,EAAGynG,oBAAqB+H,CAAAA,OAAO,IAAI3uD,iBAAAA,CAAkB4mD,qBAAqB+H,OAAO,CAAA;AACjF9+D,oBAAAA,UAAAA,EAAY+2D,qBAAqB/2D,UAAU;AAC3C9b,oBAAAA,OAAAA,EAAS,CAAC,CAAC29E,eAAAA;AACb,iBAAA,CAAA;AACF,aAAA;YAEA,IAAMC,gBAAAA,GAAmB/K,qBAAqBgI,QAAQ,IAAIhI,qBAAqBiI,QAAQ,IAAIjI,qBAAqBkI,QAAQ,CAAA;AAExH,YAAA,IAAI6C,gBAAkB,EAAA;gBACpB,IAAI,CAACniE,sBAAsB,GAAG;AAC5Br0C,oBAAAA,CAAAA,EAAGyrG,oBAAqBgI,CAAAA,QAAQ,IAAI5uD,iBAAAA,CAAkB4mD,qBAAqBgI,QAAQ,CAAA;AACnF14G,oBAAAA,CAAAA,EAAG0wG,oBAAqBiI,CAAAA,QAAQ,IAAI7uD,iBAAAA,CAAkB4mD,qBAAqBiI,QAAQ,CAAA;AACnF1vG,oBAAAA,CAAAA,EAAGynG,oBAAqBkI,CAAAA,QAAQ,IAAI9uD,iBAAAA,CAAkB4mD,qBAAqBkI,QAAQ,CAAA;oBACnFtsE,MAAQyN,EAAAA,UAAAA,CAAW22D,qBAAqBmI,SAAS,CAAA;AACjDt/D,oBAAAA,UAAAA,EAAYm3D,qBAAqBn3D,UAAU;AAC3C1b,oBAAAA,OAAAA,EAAS,CAAC,CAAC49E,gBAAAA;AACb,iBAAA,CAAA;AACF,aAAA;YACA,IAAI,CAAC1iE,iBAAiB,GAAG23D,oBAAAA,CAAqB33D,iBAAiB,IAAI+Q,iBAAAA,CAAkB4mD,qBAAqB33D,iBAAiB,CAAA,CAAA;AAC7H,SAAA;AAEA,QAAA,IAAI2vD,gBAAkB,EAAA;YACpB,IAAIA,gBAAAA,CAAiBuB,YAAY,EAAE;gBACjC,IAAI,CAACyR,gBAAgB,GAAG,IAAA,CAAA;AACxB,gBAAA,IAAI,CAACC,iBAAiB,GAAG7xD,iBAAkB4+C,CAAAA,gBAAAA,CAAiBzjG,CAAC,IAAI,CAAA,CAAA,CAAA;AACjE,gBAAA,IAAI,CAAC22G,iBAAiB,GAAG9xD,iBAAkB4+C,CAAAA,gBAAAA,CAAiB1oG,CAAC,IAAI,CAAA,CAAA,CAAA;AACjE,gBAAA,IAAI,CAAC67G,iBAAiB,GAAG/xD,iBAAkB4+C,CAAAA,gBAAAA,CAAiBz/F,CAAC,IAAI,CAAA,CAAA,CAAA;aAC5D,MAAA;AACL,gBAAA,IAAI,CAAC0yG,iBAAiB,GAAG7xD,iBAAkB4+C,CAAAA,gBAAAA,CAAiB/kG,IAAI,IAAI,CAAA,CAAA,CAAA;AACtE,aAAA;AACF,SAAA;AAEA,QAAA,IAAIglG,oBAAsB,EAAA;YACxB,IAAI,CAACA,oBAAoB,GAAG;AAC1BpvD,gBAAAA,UAAAA,EAAYovD,qBAAqBpvD,UAAU;AAC3C0wD,gBAAAA,YAAAA,EAActB,qBAAqBsB,YAAY;gBAC/ChhG,CAAG6gD,EAAAA,iBAAAA,CAAkB6+C,oBAAqB1/F,CAAAA,CAAC,IAAI,CAAA,CAAA;AACjD,aAAA,CAAA;YACA,IAAI0/F,oBAAAA,CAAqBsB,YAAY,EAAE;gBACrC,IAAM6R,KAAAA,GAAQ,IAAI,CAACnT,oBAAoB,CAAA;AAEvCmT,gBAAAA,KAAAA,CAAM72G,CAAC,GAAG6kD,iBAAkB6+C,CAAAA,oBAAAA,CAAqB1jG,CAAC,IAAI,CAAA,CAAA,CAAA;AACtD62G,gBAAAA,KAAAA,CAAM97G,CAAC,GAAG8pD,iBAAkB6+C,CAAAA,oBAAAA,CAAqB3oG,CAAC,IAAI,CAAA,CAAA,CAAA;AACxD,aAAA;AACF,SAAA;QACA,IAAI,CAAC8oG,OAAO,GAAG9/F,OAAQH,CAAAA,SAAS,CAAC6nG,CAAAA,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsB5H,OAAO,KAAI,EAAE,CAAA,CAAA;AAC3B4H,QAAAA,IAAAA,yCAAAA,CAAAA;QAAzC,IAAI,CAACz3D,eAAe,GAAG6Q,iBAAkB4mD,CAAAA,CAAAA,4CAAAA,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBI,mBAAmB,KAAA,IAAA,GAAzCJ,yCAA6C,GAAA,CAAA,CAAA,CAAA;AACtF,QAAA,IAAI,CAACjmE,SAAS,GAAGimE,CAAAA,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAsBjmE,SAAS,IAAGzhC,OAAQH,CAAAA,SAAS,CAAC6nG,oBAAqBjmE,CAAAA,SAAS,CAAE9iC,CAAAA,SAAS,KAAK,IAAIqB,OAAAA,EAAAA,CAAAA;AACvH,QAAA,IAAI,CAACgtG,UAAU,GAAGtF,CAAAA,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBsF,UAAU,KAAI,CAAA,CAAA;AAEtD,QAAA,IAAI,CAAC+F,QAAQ,GAAG,IAAI,CAACtxE,SAAS,CAACjkC,KAAK,EAAA,CAAA;AACpC,QAAA,IAAI,CAACu1G,QAAQ,CAAC90G,QAAQ,CAAC,IAAI,CAAC+uG,UAAU,CAAA,CAAA;AACxC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9f,YAYR,GAZD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAACi6E,WAAW,EAAE;AACrB,YAAA,IAAMA,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;YAE9C,IAAex4F,YAAX64F,CAAAA,WAAAA,EAAuB3gB,OAAS,CAAA,EAAA;gBAClC,IAAI,CAAC2gB,WAAW,GAAGA,WAAAA,CAAAA;AACnB,gBAAA,IAAI,CAACplF,KAAK,EAAA,CAAA;AACZ,aAAA;AACF,SAAA;QACA,IAAI,IAAI,CAAColF,WAAW,IAAI,IAAI,CAACA,WAAW,CAAC1gF,WAAW,EAAE;AACpD,YAAA,IAAI,CAACqhF,eAAe,EAAA,CAAA;AACtB,SAAA;AACF,KAAA,CAAA;AAEA;;MAGA,MAAA,CAAQA,eA0CP,GA1CD,SAAQA,eAAAA,GAAAA;;QACN,IAAMyiB,SAAAA,GAAY,IAAI,CAACpjB,WAAW,CAAA;QAClC,IAAMz2E,QAAAA,GAAW,IAAI,CAACK,WAAW,EAAA,CAAA;AACjC,QAAA,IAAI8D,IAAO,GAAA,IAAI,CAACjW,IAAI,GAAG8R,QAAAA,CAAAA;AAEvBmE,QAAAA,IAAAA,GAAOA,IAAO,GAAA,CAAA,GAAI,CAAKA,GAAAA,IAAAA,GAAO,IAAI,CAAIA,GAAAA,IAAAA,CAAAA;QAEtC,IAAI,IAAI,CAACo3F,iBAAiB,EAAE;AAC1B1E,YAAAA,QAAAA,CAAShyG,CAAC,GAAG,IAAI,CAAC02G,iBAAiB,CAACh3F,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;YAC7C,IAAI,IAAI,CAACm3F,gBAAgB,EAAE;AACzBzE,gBAAAA,QAAAA,CAASj3G,CAAC,GAAG,IAAI,CAAC47G,iBAAiB,CAACj3F,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;AAC7C0yF,gBAAAA,QAAAA,CAAShuG,CAAC,GAAG,IAAI,CAAC4yG,iBAAiB,CAACl3F,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA;aACxC,MAAA;AACL0yF,gBAAAA,QAAAA,CAAShuG,CAAC,GAAGguG,QAAAA,CAASj3G,CAAC,GAAGi3G,SAAShyG,CAAC,CAAA;AACtC,aAAA;AACA,YAAA,IAAMoyG,SAAY,GAAA,IAAI,CAACkE,iBAAiB,CAACn0G,KAAK,CAAA;YAE9C6yG,SAAUvsF,CAAAA,SAAS,CAACS,QAAQ,CAAC8oF,SAAShyG,CAAC,GAAGoyG,UAAUpyG,CAAC,EAAEgyG,SAASj3G,CAAC,GAAGq3G,UAAUr3G,CAAC,EAAEi3G,SAAShuG,CAAC,GAAGouG,UAAUpuG,CAAC,CAAA,CAAA;AAC3G,SAAA;QAEA,IAAI,IAAI,CAAC0/F,oBAAoB,EAAE;AAC7B,YAAA,IAAM9jD,OAAO,SAACpkD,CAAAA,EAAAA;AAA2B,gBAAA,OAAA,KAAA,CAAKkoG,oBAAoB,CAACpvD,UAAU,GAAG94C,CAAEkkB,CAAAA,QAAQ,CAACJ,IAAAA,CAAAA,GAAQ9jB,CAAEu4C,CAAAA,iBAAiB,CAAC,CAAA,EAAGz0B,IAAMnE,EAAAA,QAAAA,CAAAA,CAAAA;;AAChI,YAAA,IAAM47F,OAAOn3D,IAAK,CAAA,IAAI,CAAC8jD,oBAAoB,CAAC1/F,CAAC,CAAA,CAAA;AAC7C,YAAA,IAAMghG,YAAe,GAAA,IAAI,CAACtB,oBAAoB,CAACsB,YAAY,CAAA;YAE3D0M,OAAQ1xG,CAAAA,CAAC,GAAGglG,YAAeplD,GAAAA,IAAAA,CAAK,IAAI,CAAC8jD,oBAAoB,CAAC1jG,CAAC,CAAK,GAAA,CAAA,CAAA;YAChE0xG,OAAQ32G,CAAAA,CAAC,GAAGiqG,YAAeplD,GAAAA,IAAAA,CAAK,IAAI,CAAC8jD,oBAAoB,CAAC3oG,CAAC,CAAK,GAAA,CAAA,CAAA;AAChE22G,YAAAA,OAAAA,CAAQ1tG,CAAC,GAAG+yG,IAAAA,CAAAA;YACZ,IAAMtiE,GAAAA,GAAMi9D,QAAQpuE,SAAS,CAAC,IAAI,CAACgzE,iBAAiB,CAACv2F,QAAQ,EAAE2xF,OAAAA,CAAAA,CAAAA;YAE/DsD,SAAUvsF,CAAAA,SAAS,CAACO,WAAW,CAACyrB,GAAAA,CAAIz0C,CAAC,EAAEy0C,GAAI15C,CAAAA,CAAC,EAAE05C,GAAAA,CAAIzwC,CAAC,CAAA,CAAA;AACrD,SAAA;QAEA,IAAI,IAAI,CAACynG,oBAAoB,EAAE;AAC7B,YAAA,IAAM16D,GAAM87C,GAAAA,OAAAA,CAAAA;YAEZr5C,oBAAqBzC,CAAAA,GAAAA,EAAK,IAAI,EAAE,IAAI,CAAC8yD,OAAO,EAAE,IAAI,CAACx6F,IAAI,EAAE8R,QAAU,EAAA,IAAI,CAACm7F,iBAAiB,CAACx2F,QAAQ,EAAE,IAAI,CAACg3F,QAAQ,CAAA,CAAA;AACjH,YAAA,IAAI,IAAI,CAACR,iBAAiB,CAACh2F,IAAI,EAAE;gBAC/BywB,GAAIpvC,CAAAA,GAAG,CAAC,IAAI,CAAC20G,iBAAiB,CAACh2F,IAAI,CAACZ,QAAQ,CAACJ,IAAAA,CAAAA,CAAAA,CAAAA;AAC/C,aAAA;YACA01F,SAAUvsF,CAAAA,SAAS,CAACM,WAAW,CAACgoB,GAAAA,CAAI/wC,CAAC,EAAE+wC,GAAIh2C,CAAAA,CAAC,EAAEg2C,GAAAA,CAAI/sC,CAAC,CAAA,CAAA;AACrD,SAAA;AACF,KAAA,CAAA;AA5KWqyG,IAAAA,OAAAA,iBAAAA,CAAAA;EAA0B3lB,QA6KtC,EAAA;AAGM,IAAA,sBAAMsmB,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,sBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,sBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,sBAAAA,CAAAA,SAAAA,CAAAA;IAGX,MAAShU,CAAAA,cAMR,GAND,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMiU,oBAAoB,IAAIZ,iBAAAA,EAAAA,CAAAA;AAE9BY,QAAAA,iBAAAA,CAAkBlrG,IAAI,GAAG,IAAI,CAACmrG,sBAAsB,CAAA;QAEpD,OAAOD,iBAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS/9F,QAER,GAFD,SAASA,QAAAA,CAAUnN,IAAgC,EAAA;QACjD,IAAI,CAACmrG,sBAAsB,GAAGnrG,IAAAA,CAAAA;AAChC,KAAA,CAAA;AAbWirG,IAAAA,OAAAA,sBAAAA,CAAAA;EAA+BxlB,aAc3C,EAAA;AAdYwlB,sBAAAA,GAAAA,UAAAA,CAAAA;IADZt/F,YAAaoG,CAAAA,QAAa,CAACk5F,sBAAsB,CAAA;AACrCA,CAAAA,EAAAA,sBAAAA,CAAAA;;ACnMb;;AAEC,IACM,IAAA,YAAMG,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;aAGX3qG,KAAQ,GAAA,CAAA,CAAA;aACR2O,QAAW,GAAA,CAAA,CAAA;;AAJAg8F,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAWXC,IAAAA,MAAAA,CAAAA,WAaC,GAbDA,SAAAA,WAAAA,CAAa/tG,IAAY,EAAA;AACvB,QAAA,IAAIsqE,SAAYtqE,GAAAA,IAAAA,GAAO,IAAI,CAACmD,KAAK,CAAA;QACjC,IAAM2O,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;QAE9B,IAAIw4D,SAAAA,GAAYx4D,WAAW,CAAG,EAAA;YAC5B,IAAI,IAAI,CAAC+1D,WAAW,KAAKpzD,WAAgB,CAACo0D,OAAO,EAAE;AACjDyB,gBAAAA,SAAAA,GAAYA,SAAYx4D,GAAAA,QAAAA,CAAAA;aACnB,MAAA,IAAI,IAAI,CAAC+1D,WAAW,KAAKpzD,WAAgB,CAAC81D,MAAM,EAAE;gBACvDD,SAAYh1E,GAAAA,IAAAA,CAAKI,GAAG,CAACoc,QAAUw4D,EAAAA,SAAAA,CAAAA,CAAAA;AACjC,aAAA;AACF,SAAA;QAEA,OAAOA,SAAAA,CAAAA;AACT,KAAA,CAAA;AAxBWwjC,IAAAA,OAAAA,YAAAA,CAAAA;AAyBZ,CAAA,GAAA;AAMM,IAAA,UAAME,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,UAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,UAAAA,GAAAA;;;AAGXC,QAAAA,KAAAA,CAAAA,SAAAA,GAAAA,CAAAA,CAAAA;cAEQC,QAAW,GAAA,CAAA,CAAA;AAGXC,QAAAA,KAAAA,CAAAA,KAAAA,GAAwB,EAAE,CAAA;AAGxB3sE,QAAAA,KAAAA,CAAAA,QAAAA,GAAyB,EAAE,CAAA;;;AAX1BwsE,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAaX;;AAEC,MACDI,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,qBAAsB7lB,WAAmB,EAAA;QACvC,OAAOA,WAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;MAGA8lB,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,GAAAA;AACE,QAAA,OAAO,IAAIpD,kBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;IAEAqD,MAAAA,CAAAA,YAIC,GAJDA,SAAAA,YAAAA,GAAAA;AACE,QAAA,IAAMvmB,SAAS,IAAID,cAAAA,EAAAA,CAAAA;QAEnB,OAAOC,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEAwmB,IAAAA,MAAAA,CAAAA,mBAIC,GAJDA,SAAAA,mBAAAA,CAAqBC,YAA2B,EAAA;AAC9C,QAAA,IAAMC,aAAgB,GAAA,IAAI,CAACC,wBAAwB,CAACF,YAAAA,CAAAA,CAAAA;QAEpD,OAAOC,aAAAA,CAAAA;AACT,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,wBASC,GATDA,SAAAA,wBAAAA,CAA0BF,YAA2B,EAAA;AACnD,QAAA,IAAML,QAAwB,EAAE,CAAA;QAEhC,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACA,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBQ,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTR,YAAAA,KAAAA,CAAM17G,IAAI,CAACk8G,IAAAA,CAAAA,CAAAA;AACb,SAAA;AACA,QAAA,IAAMF,aAAgB,GAAA,IAAI,CAACG,YAAY,CAACT,KAAOK,EAAAA,YAAAA,CAAAA,CAAAA;QAE/C,OAAOC,aAAAA,CAAAA;AACT,KAAA,CAAA;AAEAG,IAAAA,MAAAA,CAAAA,YAiBC,GAjBDA,SAAAA,YAAcC,CAAAA,aAA6B,EAAEL,YAA2B,EAAA;QACtE,IAAMM,KAAAA,GAAQ,IAAI,CAACT,gBAAgB,EAAA,CAAA;AAEnC,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA2BQ,aAAe,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA/BE,YAAAA,IAAAA,YAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM3D,YAAe,GAAA,IAAI,CAAC4D,kBAAkB,CAACD,YAAAA,CAAAA,CAAAA;YAE7C3D,YAAa3jB,CAAAA,WAAW,CAACsnB,YAAAA,CAAaj9F,QAAQ,CAAA,CAAA;AAE9C,YAAA,IAAM68F,IAAO,GAAA,IAAIM,WAAYF,CAAAA,YAAAA,EAAc3D,YAAc0D,EAAAA,KAAAA,CAAAA,CAAAA;AAEzDN,YAAAA,YAAAA,CAAa/7G,IAAI,CAACk8G,IAAAA,CAAAA,CAAAA;YAElBG,KAAM5D,CAAAA,aAAa,CAACz4G,IAAI,CAAC24G,YAAAA,CAAAA,CAAAA;YACzB0D,KAAMzD,CAAAA,aAAa,CAACD,YAAc,EAAA,GAAA,CAAA,CAAA;AACpC,SAAA;QAEA,OAAO0D,KAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAASnV,CAAAA,cAER,GAFD,SAASA,cAAAA,GAAAA;AACP,QAAA,OAAO,IAAItS,QAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;IAEA6nB,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,GAAAA;QACE,OAAO,IAAI,CAAC1tE,QAAQ,CAAA;AACtB,KAAA,CAAA;AAEAgD,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAAUC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAACjD,QAAQ,CAAC/uC,IAAI,CAACgyC,KAAAA,CAAAA,CAAAA;QACnBA,KAAMx1B,CAAAA,MAAM,GAAG,IAAI,CAAA;AACrB,KAAA,CAAA;AAEAkgG,IAAAA,MAAAA,CAAAA,UAWC,GAXDA,SAAAA,UACE97F,CAAAA,gBAAgC,EAChCtgB,IAAa,EAAA;AAEb,QAAA,IAAMq8G,UAAU,IAAItB,YAAAA,EAAAA,CAAAA;AAEpBsB,QAAAA,OAAAA,CAAQx+F,KAAK,GAAG,IAAIyC,gBAAiB,CAAA,IAAI,CAAC9K,MAAM,CAAA,CAAA;AAChD6mG,QAAAA,OAAAA,CAAQr8G,IAAI,GAAGA,IAAAA,GAAOA,IAAO,GAAA,cAAA,GAAiBq8G,QAAQt/F,EAAE,CAAA;QACxD,IAAI,CAACu/F,OAAO,CAACD,OAAAA,CAAAA,CAAAA;QAEb,OAAOA,OAAAA,CAAAA;AACT,KAAA,CAAA;IAEAE,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACE,OAAO,IAAI,CAACnB,KAAK,CAAA;AACnB,KAAA,CAAA;AAEAoB,IAAAA,MAAAA,CAAAA,QAMC,GANDA,SAAAA,QAAAA,CAAUx8G,IAAY,EAAA;QACpB,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACo7G,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBQ,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAIA,IAAAA,CAAK57G,IAAI,KAAKA,IAAM,EAAA;gBACtB,OAAO47G,IAAAA,CAAAA;AACT,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEAU,IAAAA,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAAA,CAASV,IAAkB,EAAA;QACzBA,IAAK7+F,CAAAA,EAAE,GAAG,CAAC,IAAI,CAACo+F,QAAQ,EAAC,EAAG36G,QAAQ,EAAA,CAAA;AACpC,QAAA,IAAI,CAAC46G,KAAK,CAAC17G,IAAI,CAACk8G,IAAAA,CAAAA,CAAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQK,kBAEP,GAFD,SAAQA,kBAAAA,CAAoBL,IAAkB,EAAA;QAC5C,OAAOA,IAAAA,CAAK/9F,KAAK,CAAC+oF,cAAc,EAAA,CAAA;AAClC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS9pF,QAKR,GALD,SAASA,QAAAA,CAAUnN,IAA4B,EAAA;AAC7C,QAAA,aAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;QACf,IAAoB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC8+B,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBiD,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACTA,KAAMx1B,CAAAA,MAAM,GAAG,IAAI,CAAA;AACrB,SAAA;AACF,KAAA,CAAA;AAzHW++F,IAAAA,OAAAA,UAAAA,CAAAA;EAAmB7lB,aA0H/B,EAAA;;IAnHE55E,SAAUu/F,CAAAA,YAAAA,CAAAA;AAPAE,CAAAA,EAAAA,UAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;AAUVz/F,IAAAA,SAAAA,EAAAA;AAVUy/F,CAAAA,EAAAA,UAAAA,CAAAA,SAAAA,EAAAA,UAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,UAAAA,GAAAA,UAAAA,CAAAA;IADZ3/F,YAAaoG,CAAAA,QAAa,CAACu5F,UAAU,CAAA;AACzBA,CAAAA,EAAAA,UAAAA,CAAAA,CAAAA;;AA4HDwB,CAAAA,SAAAA,SAAAA,EAAAA;;;GAAAA,SAAAA,KAAAA,SAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKL,IAAA,WAAMP,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,CAQEN,IAAkB,EAAEvD,YAAsB,EAAEqE,WAA+B,EAAA;QACtF,IAAI,CAACd,IAAI,GAAGA,IAAAA,CAAAA;QACZ,IAAI,CAACe,QAAQ,GAAGtE,YAAAA,CAAAA;QAChB,IAAI,CAACqE,WAAW,GAAGA,WAAAA,CAAAA;;AAXVR,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;IAuBXU,MAAAA,CAAAA,iBAQC,GARDA,SAAAA,iBAAAA,GAAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAAClW,cAAc,EAAE;YACxB,IAA8C/pG,YAA1C,CAAA,IAAI,CAAC+/G,WAAW,CAACG,aAAa,CAACrnB,WAAW,EAAY3gB,OAAS,CAAA,EAAA;AACjE,gBAAA,IAAI,CAAC6xB,cAAc,GAAG,IAAI,CAACgW,WAAW,CAACG,aAAa,CAACrnB,WAAW,CAACr9D,YAAY,CAAC+iD,cAAAA,CAAAA,CAAAA;AAChF,aAAA;AACF,SAAA;QAEA,OAAO,IAAI,CAACwrB,cAAc,CAAA;AAC5B,KAAA,CAAA;AAEAoW,IAAAA,MAAAA,CAAAA,UAqCC,GArCDA,SAAAA,UAAAA,CAAYvlC,SAAiB,EAAA;QAC3B,IAAMqkC,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;AAEtB,QAAA,IAAIryF,MAAS,GAAA,GAAA,CAAA;AACb,QAAA,IAAI+nF,KAAQ,GAAA,KAAA,CAAA;AACZ,QAAA,IAAIc,OAAU,GAAA,KAAA,CAAA;AACd,QAAA,IAAM5c,cAAc,IAAI,CAACknB,WAAW,CAACG,aAAa,CAACrnB,WAAW,CAAA;AAE9D,QAAA,IAAIje,SAAaqkC,IAAAA,IAAAA,CAAKxrG,KAAK,GAAGwrG,KAAK78F,QAAQ,IAAI68F,IAAK9mC,CAAAA,WAAW,KAAKpzD,WAAgB,CAACghD,OAAO,EAAE;AAC5F,YAAA,IAAI8yB,YAAAA,CAAAA,WAAAA,EAAuB3gB,YAAWA,OAAQsH,CAAAA,UAAU,CAACqZ,WAAgB,CAAA,IAAA,IAAI,CAAConB,iBAAiB,MAAM,CAAC,IAAI,CAACA,iBAAiB,EAAA,CAAGpoD,SAAS,EAAE;gBACxIjrC,MAAS,GAAA,GAAA,CAAA;aACJ,MAAA;gBACLA,MAAS,GAAA,GAAA,CAAA;gBACT+nF,KAAQ,GAAA,IAAA,CAAA;AACV,aAAA;SACK,MAAA,IAAI/5B,YAAY,IAAI,CAACqkC,IAAI,CAACxrG,KAAK,IAAI,CAAG,EAAA;YAC3CmZ,MAAS,GAAA,GAAA,CAAA;YACT6oF,OAAU,GAAA,IAAA,CAAA;AACZ,SAAA,MAAO,IAAI76B,SAAAA,GAAYqkC,IAAKxrG,CAAAA,KAAK,EAAE;YACjCmZ,MAAS,GAAA,GAAA,CAAA;AACX,SAAA;QAEA,IAAI6oF,OAAAA,IAAW,IAAI,CAACuK,QAAQ,CAAChoB,YAAY,EAAA,KAAOtd,SAAU4F,CAAAA,OAAO,EAAE;YACjE,IAAI,CAAC0/B,QAAQ,CAACtpD,IAAI,EAAA,CAAA;AACpB,SAAA;QACA,IAAI,CAACqpD,WAAW,CAACpE,aAAa,CAAC,IAAI,CAACqE,QAAQ,EAAEpzF,MAAAA,CAAAA,CAAAA;QAE9C,IAAMwzF,QAAAA,GAAWnB,IAAKZ,CAAAA,WAAW,CAACzjC,SAAAA,CAAAA,CAAAA;AAElC,QAAA,IAAI,CAAColC,QAAQ,CAACtmC,OAAO,CAAC0mC,QAAAA,CAAAA,CAAAA;;AAGtB,QAAA,IAAIzL,KAAO,EAAA;YACT,IAAI,IAAI,CAACqL,QAAQ,CAAChoB,YAAY,EAAOtd,KAAAA,SAAAA,CAAU4F,OAAO,EAAE;gBACtD,IAAI,CAAC0/B,QAAQ,CAACpmC,KAAK,EAAA,CAAA;AACrB,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAtEW2lC,IAAAA,aAAAA,CAAAA,WAAAA,EAAAA;;YAcPlgF,GAAAA,EAAAA,QAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,CAAYlgC,KAAc,EAAA;AACxB,gBAAA,IAAIA,KAAO,EAAA;oBACT,IAAI,CAAC6gH,QAAQ,CAACtpD,IAAI,EAAA,CAAA;iBACb,MAAA;oBACL,IAAI,CAACqpD,WAAW,CAACpE,aAAa,CAAC,IAAI,CAACqE,QAAQ,EAAE,CAAA,CAAA,CAAA;oBAC9C,IAAI,CAACA,QAAQ,CAACpmC,KAAK,EAAA,CAAA;AACrB,iBAAA;AACF,aAAA;;;AArBW2lC,IAAAA,OAAAA,WAAAA,CAAAA;AAuEZ,CAAA;;AC3OM,IAAA,eAAMc,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,eAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;IACX,MAAS1B,CAAAA,gBAER,GAFD,SAASA,gBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI3C,uBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAHWqE,IAAAA,OAAAA,eAAAA,CAAAA;EAAwB/B,UAIpC,EAAA;AAJY+B,eAAAA,GAAAA,UAAAA,CAAAA;IADZ1hG,YAAaoG,CAAAA,QAAa,CAACs7F,eAAe,CAAA;AAC9BA,CAAAA,EAAAA,eAAAA,CAAAA;;ACHN,IAAA,aAAeC,iBAAV,SAAL,UAAA,EAAA;AAAeA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAEVC,QAAAA,KAAAA,CAAAA,aAAAA,GAA0B,EAAE,CAAA;cAG5Bh5F,IAAO,GAAA,EAAA,CAAA;;;AALG+4F,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAOpB,IAAA,MAAA,CAASngG,QAKR,GALD,SAASA,QAAAA,CAAUnN,IAAuB,EAAA;AACxC,QAAA,UAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACf,QAAA,IAAMutG,gBAAgB,IAAI,CAACh5F,IAAI,CAAClR,KAAK,CAAC,GAAA,CAAA,CAAA;QAEtC,IAAI,CAACkqG,aAAa,GAAGA,aAAAA,CAAAA;AACvB,KAAA,CAAA;AAZoBD,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBhC,UAa3C,EAAA;;AATEz/F,IAAAA,SAAAA,EAAAA;AAJmByhG,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;ACGf,IAAA,kBAAME,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;IAEX,MAAS7B,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;AACP,QAAA,IAAMS,QAAQ,IAAIxC,0BAAAA,EAAAA,CAAAA;AAElBwC,QAAAA,KAAAA,CAAM/jF,YAAY,GAAG,IAAI,CAAC9T,IAAI,CAAA;QAE9B,OAAO63F,KAAAA,CAAAA;AACT,KAAA,CAAA;AARWoB,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BF,aASvC,EAAA;AATYE,kBAAAA,GAAAA,UAAAA,CAAAA;IADZ7hG,YAAaoG,CAAAA,QAAa,CAACy7F,kBAAkB,CAAA;AACjCA,CAAAA,EAAAA,kBAAAA,CAAAA;;ACAN,IAAA,gBAAMC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,gBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,gBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAAS9B,CAAAA,gBAER,GAFD,SAASA,gBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI7B,wBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAHW2D,IAAAA,OAAAA,gBAAAA,CAAAA;EAAyBnC,UAIrC,EAAA;AAJYmC,gBAAAA,GAAAA,UAAAA,CAAAA;IADZ9hG,YAAaoG,CAAAA,QAAa,CAAC07F,gBAAgB,CAAA;AAC/BA,CAAAA,EAAAA,gBAAAA,CAAAA;;ACEN,IAAA,mBAAMC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,mBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAEX,IAAA,MAAA,CAAShC,oBAMR,GAND,SAASA,oBAAAA,CAAsB7lB,WAAmB,EAAA;AAChD,QAAA,IAAI,CAAa74F,YAAX64F,CAAAA,WAAAA,EAAuB3gB,OAAU,CAAA,EAAA;AACrC,YAAA,MAAM,IAAI90E,KAAM,CAAA,8DAAA,CAAA,CAAA;AAClB,SAAA;QAEA,OAAOy1F,WAAAA,CAAYr9D,YAAY,CAAC+8C,oBAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;IAEA,MAASomC,CAAAA,gBAER,GAFD,SAASA,gBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI3B,2BAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAZW0D,IAAAA,OAAAA,mBAAAA,CAAAA;EAA4BpC,UAaxC,EAAA;AAbYoC,mBAAAA,GAAAA,UAAAA,CAAAA;IADZ/hG,YAAaoG,CAAAA,QAAa,CAAC27F,mBAAmB,CAAA;AAClCA,CAAAA,EAAAA,mBAAAA,CAAAA;;ACFN,IAAA,cAAMC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;IAEX,MAAShC,CAAAA,gBAER,GAFD,SAASA,gBAAAA,GAAAA;AACP,QAAA,OAAO,IAAIzB,sBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAJWyD,IAAAA,OAAAA,cAAAA,CAAAA;EAAuBrC,UAKnC,EAAA;AALYqC,cAAAA,GAAAA,UAAAA,CAAAA;IADZhiG,YAAaoG,CAAAA,QAAa,CAAC47F,cAAc,CAAA;AAC7BA,CAAAA,EAAAA,cAAAA,CAAAA;;ACFN,IAAA,aAAMC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAKX,IAAA,MAAA,CAASlC,oBAYR,GAZD,SAASA,oBAAAA,CAAsB7lB,WAAmB,EAAA;AAChD,QAAA,IAAI,CAAa74F,YAAX64F,CAAAA,WAAAA,EAAuBz4D,iBAAoB,CAAA,EAAA;AAC/C,YAAA,MAAM,IAAIh9B,KAAM,CAAA,2DAAA,CAAA,CAAA;AAClB,SAAA;QAEA,IAAMi9B,SAAAA,GAAYw4D,YAAYx4D,SAAS,CAAA;AAEvC,QAAA,IAAI,IAAI,CAACz7B,KAAK,IAAIy7B,SAAAA,CAAUx/B,MAAM,EAAE;YAClC,MAAM,IAAIuC,KAAM,CAAC,gCAAgC,GAAA,IAAI,CAACwB,KAAK,GAAC,yBAAA,GAAyBy7B,SAAUx/B,CAAAA,MAAM,GAAC,IAAA,CAAA,CAAA;AACxG,SAAA;AAEA,QAAA,OAAOw/B,SAAS,CAAC,IAAI,CAACz7B,KAAK,CAAC,CAAA;AAC9B,KAAA,CAAA;AAjBWg8G,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBtC,UAkBlC,EAAA;;AAhBEz/F,IAAAA,SAAAA,EAAAA;AAFU+hG,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,OAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,aAAAA,GAAAA,UAAAA,CAAAA;IADZjiG,YAAa,CAAA,eAAA,CAAA;AACDiiG,CAAAA,EAAAA,aAAAA,CAAAA;;ACDN,IAAA,aAAMC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;IAEX,MAASlC,CAAAA,gBAER,GAFD,SAASA,gBAAAA,GAAAA;AACP,QAAA,OAAO,IAAI9B,qBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAJWgE,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBvC,UAKlC;;ACFM,IAAA,oBAAMwC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASnC,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;AACP,QAAA,IAAMS,QAAQ,IAAIjC,4BAAAA,EAAAA,CAAAA;AAElBiC,QAAAA,KAAAA,CAAM/jF,YAAY,GAAG,IAAI,CAAC9T,IAAI,CAAA;QAE9B,OAAO63F,KAAAA,CAAAA;AACT,KAAA,CAAA;AAPW0B,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6BR,aAQzC,EAAA;AARYQ,oBAAAA,GAAAA,UAAAA,CAAAA;IADZniG,YAAaoG,CAAAA,QAAa,CAAC+7F,oBAAoB,CAAA;AACnCA,CAAAA,EAAAA,oBAAAA,CAAAA,CAAAA;AAWN,IAAA,oBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASpC,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;AACP,QAAA,IAAMS,QAAQ,IAAIhC,4BAAAA,EAAAA,CAAAA;AAElBgC,QAAAA,KAAAA,CAAM/jF,YAAY,GAAG,IAAI,CAAC9T,IAAI,CAAA;QAE9B,OAAO63F,KAAAA,CAAAA;AACT,KAAA,CAAA;AAPW2B,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6BT,aAQzC,EAAA;AARYS,oBAAAA,GAAAA,UAAAA,CAAAA;IADZpiG,YAAaoG,CAAAA,QAAa,CAACg8F,oBAAoB,CAAA;AACnCA,CAAAA,EAAAA,oBAAAA,CAAAA,CAAAA;AAWN,IAAA,oBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASrC,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;AACP,QAAA,IAAMS,QAAQ,IAAI/B,4BAAAA,EAAAA,CAAAA;AAElB+B,QAAAA,KAAAA,CAAM/jF,YAAY,GAAG,IAAI,CAAC9T,IAAI,CAAA;QAE9B,OAAO63F,KAAAA,CAAAA;AACT,KAAA,CAAA;AAPW4B,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6BV,aAQzC,EAAA;AARYU,oBAAAA,GAAAA,UAAAA,CAAAA;IADZriG,YAAaoG,CAAAA,QAAa,CAACi8F,oBAAoB,CAAA;AACnCA,CAAAA,EAAAA,oBAAAA,CAAAA;;ACtBN,IAAA,kBAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAAStC,CAAAA,gBAMR,GAND,SAASA,gBAAAA,GAAAA;AACP,QAAA,IAAMS,QAAQ,IAAIzC,0BAAAA,EAAAA,CAAAA;AAElByC,QAAAA,KAAAA,CAAM/jF,YAAY,GAAG,IAAI,CAAC9T,IAAI,CAAA;QAE9B,OAAO63F,KAAAA,CAAAA;AACT,KAAA,CAAA;AAPW6B,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BX,aAQvC,EAAA;AARYW,kBAAAA,GAAAA,UAAAA,CAAAA;IADZtiG,YAAaoG,CAAAA,QAAa,CAACk8F,kBAAkB,CAAA;AACjCA,CAAAA,EAAAA,kBAAAA,CAAAA;;ACSN,IAAA,kBAAMC,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAEXh/G,IAAAA,MAAAA,CAAAA,MAqDC,GArDDA,SAAAA,MAAQs+E,CAAAA,aAA4B,EAAE2gC,eAAwC,EAAA;AAC5E,QAAA,IAAMlF,YAAYkF,eAAe,CAAC,IAAI,CAACphG,aAAa,EAAG,CAAA,CAAA;AAEvD,QAAA,IAAI,CAAW/f,YAATi8G,CAAAA,SAAAA,EAAqB/jC,OAAU,CAAA,EAAA;AACnC,YAAA,OAAA;AACF,SAAA;QAEA,IAAyB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACsnC,cAAc,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAArC4B,YAAAA,IAAAA,UAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAcphH,YAAVohH,CAAAA,UAAAA,EAAsBf,eAAiB,CAAA,EAAA;;gBAGzC,IAAIpE,SAAAA,CAAUzgF,YAAY,CAAC+iD,cAAiB,CAAA,EAAA;AAC1C,oBAAA,IAAM8iC,gBAAgB7gC,aAAc8gC,CAAAA,WAAW,CAACT,aAAAA,EAAe,IAAI,EAAE,eAAA,CAAA,CAAA;oBAErE,IAA6BO,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,UAAAA,CAAWxB,QAAQ,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzC2B,wBAAAA,IAAAA,cAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;wBACT,IAAMC,YAAAA,GAAeH,aAAc5B,CAAAA,UAAU,CAACzV,8BAAAA,CAAAA,CAAAA;wBAE9CwX,YAAa/tG,CAAAA,KAAK,GAAG8tG,cAAAA,CAAe9tG,KAAK,CAAA;wBACzC+tG,YAAap/F,CAAAA,QAAQ,GAAGm/F,cAAAA,CAAen/F,QAAQ,CAAA;wBAC/Co/F,YAAarpC,CAAAA,WAAW,GAAGopC,cAAAA,CAAeppC,WAAW,CAAA;AACvD,qBAAA;AAEF,iBAAA;;gBAGA,IAAI8jC,SAAAA,CAAUzgF,YAAY,CAACimF,eAAkB,CAAA,EAAA;AAC3C,oBAAA,IAAMC,qBAAqBlhC,aAAc8gC,CAAAA,WAAW,CAACK,wBAAAA,EAA0B,IAAI,EAAE,0BAAA,CAAA,CAAA;oBAErF,IAA6BP,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,UAAAA,CAAWxB,QAAQ,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzC2B,wBAAAA,IAAAA,eAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;wBACT,IAAMtC,IAAAA,GAAOyC,kBAAmBjC,CAAAA,UAAU,CAACmC,0BAAAA,CAAAA,CAAAA;wBAE3C3C,IAAKxrG,CAAAA,KAAK,GAAG8tG,eAAAA,CAAe9tG,KAAK,CAAA;wBACjCwrG,IAAK78F,CAAAA,QAAQ,GAAGm/F,eAAAA,CAAen/F,QAAQ,CAAA;wBACvC68F,IAAK9mC,CAAAA,WAAW,GAAGopC,eAAAA,CAAeppC,WAAW,CAAA;AAC/C,qBAAA;AACF,iBAAA;;gBAGA,IAAI8jC,SAAAA,CAAUzgF,YAAY,CAACojD,eAAkB,CAAA,EAAA;AAC3C,oBAAA,IAAM8iC,sBAAqBlhC,aAAc8gC,CAAAA,WAAW,CAACO,wBAAAA,EAA0B,IAAI,EAAE,0BAAA,CAAA,CAAA;oBAErF,IAA6BT,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,UAAAA,CAAWxB,QAAQ,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzC2B,wBAAAA,IAAAA,eAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;wBACT,IAAMtC,KAAAA,GAAOyC,mBAAmBjC,CAAAA,UAAU,CAACmC,0BAAAA,CAAAA,CAAAA;wBAE3C3C,KAAKxrG,CAAAA,KAAK,GAAG8tG,eAAAA,CAAe9tG,KAAK,CAAA;wBACjCwrG,KAAK78F,CAAAA,QAAQ,GAAGm/F,eAAAA,CAAen/F,QAAQ,CAAA;wBACvC68F,KAAK9mC,CAAAA,WAAW,GAAGopC,eAAAA,CAAeppC,WAAW,CAAA;AAC/C,qBAAA;AACF,iBAAA;AAEA,gBAAA,MAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAvDW+oC,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2B5C,UAwDvC,EAAA;AAxDY4C,kBAAAA,GAAAA,UAAAA,CAAAA;IADZviG,YAAaoG,CAAAA,QAAa,CAACm8F,kBAAkB,CAAA;AACjCA,CAAAA,EAAAA,kBAAAA,CAAAA;;ACTN,IAAA,uBAAMY,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,uBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,uBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,uBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAAS7X,CAAAA,cAER,GAFD,SAASA,cAAAA,GAAAA;AACP,QAAA,OAAO,IAAIkS,kBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAHW2F,IAAAA,OAAAA,uBAAAA,CAAAA;EAAgCrpB,aAI5C,EAAA;AAJYqpB,uBAAAA,GAAAA,UAAAA,CAAAA;IADZnjG,YAAaoG,CAAAA,QAAa,CAAC+8F,uBAAuB,CAAA;AACtCA,CAAAA,EAAAA,uBAAAA,CAAAA;;ACEN,IAAA,0BAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,0BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,0BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,0BAAAA,CAAAA,SAAAA,CAAAA;IAIX,MAAS9X,CAAAA,cAOR,GAPD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMyR,eAAe,IAAIU,oBAAAA,EAAAA,CAAAA;AAEzBV,QAAAA,YAAAA,CAAa71F,KAAK,GAAGimC,iBAAkB,CAAA,IAAI,CAACk2D,SAAS,CAAA,CAAA;AACrDtG,QAAAA,YAAAA,CAAav8G,KAAK,GAAGu8G,YAAAA,CAAa71F,KAAK,CAACc,QAAQ,CAAC,CAAA,CAAA,CAAA;QAEjD,OAAO+0F,YAAAA,CAAAA;AACT,KAAA,CAAA;AAXWqG,IAAAA,OAAAA,0BAAAA,CAAAA;EAAmCtpB,aAY/C,EAAA;;AAXE55E,IAAAA,SAAAA,EAAAA;AADUkjG,CAAAA,EAAAA,0BAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,0BAAAA,GAAAA,UAAAA,CAAAA;IADZpjG,YAAaoG,CAAAA,QAAa,CAACg9F,0BAA0B,CAAA;AACzCA,CAAAA,EAAAA,0BAAAA,CAAAA;;ACAN,IAAA,0BAAME,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,0BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,0BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,0BAAAA,CAAAA,SAAAA,CAAAA;IAIX,MAAShY,CAAAA,cAOR,GAPD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMyR,eAAe,IAAIU,oBAAAA,EAAAA,CAAAA;AAEzBV,QAAAA,YAAAA,CAAa71F,KAAK,GAAGimC,iBAAkB,CAAA,IAAI,CAACk2D,SAAS,CAAA,CAAA;AACrDtG,QAAAA,YAAAA,CAAav8G,KAAK,GAAGu8G,YAAAA,CAAa71F,KAAK,CAACc,QAAQ,CAAC,CAAA,CAAA,CAAA;QAEjD,OAAO+0F,YAAAA,CAAAA;AACT,KAAA,CAAA;AAXWuG,IAAAA,OAAAA,0BAAAA,CAAAA;EAAmCxpB,aAY/C,EAAA;;AAXE55E,IAAAA,SAAAA,EAAAA;AADUojG,CAAAA,EAAAA,0BAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,0BAAAA,GAAAA,UAAAA,CAAAA;IADZtjG,YAAaoG,CAAAA,QAAa,CAACk9F,0BAA0B,CAAA;AACzCA,CAAAA,EAAAA,0BAAAA,CAAAA;;ACFN,IAAA,2BAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,2BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,2BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,2BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASjY,CAAAA,cAER,GAFD,SAASA,cAAAA,GAAAA;AACP,QAAA,OAAO,IAAI8S,0BAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAHWmF,IAAAA,OAAAA,2BAAAA,CAAAA;EAAoCzpB,aAIhD,EAAA;AAJYypB,2BAAAA,GAAAA,UAAAA,CAAAA;IADZvjG,YAAaoG,CAAAA,QAAa,CAACm9F,2BAA2B,CAAA;AAC1CA,CAAAA,EAAAA,2BAAAA,CAAAA;;ACEN,IAAA,4BAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,4BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,4BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,4BAAAA,CAAAA,SAAAA,CAAAA;IAIX,MAASlY,CAAAA,cAOR,GAPD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMyR,eAAe,IAAIU,oBAAAA,EAAAA,CAAAA;AAEzBV,QAAAA,YAAAA,CAAa71F,KAAK,GAAGimC,iBAAkB,CAAA,IAAI,CAACk2D,SAAS,CAAA,CAAA;AACrDtG,QAAAA,YAAAA,CAAav8G,KAAK,GAAGu8G,YAAAA,CAAa71F,KAAK,CAACc,QAAQ,CAAC,CAAA,CAAA,CAAA;QAEjD,OAAO+0F,YAAAA,CAAAA;AACT,KAAA,CAAA;AAXWyG,IAAAA,OAAAA,4BAAAA,CAAAA;EAAqC1pB,aAYjD,EAAA;;AAXE55E,IAAAA,SAAAA,EAAAA;AADUsjG,CAAAA,EAAAA,4BAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,4BAAAA,GAAAA,UAAAA,CAAAA;IADZxjG,YAAaoG,CAAAA,QAAa,CAACo9F,4BAA4B,CAAA;AAC3CA,CAAAA,EAAAA,4BAAAA,CAAAA,CAAAA;AAeN,IAAA,2BAAMC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,2BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,2BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,2BAAAA,CAAAA,SAAAA,CAAAA;IAIX,MAASnY,CAAAA,cAOR,GAPD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMyR,eAAe,IAAIU,oBAAAA,EAAAA,CAAAA;AAEzBV,QAAAA,YAAAA,CAAa71F,KAAK,GAAGimC,iBAAkB,CAAA,IAAI,CAACk2D,SAAS,CAAA,CAAA;AACrDtG,QAAAA,YAAAA,CAAav8G,KAAK,GAAGu8G,YAAAA,CAAa71F,KAAK,CAACc,QAAQ,CAAC,CAAA,CAAA,CAAA;QAEjD,OAAO+0F,YAAAA,CAAAA;AACT,KAAA,CAAA;AAXW0G,IAAAA,OAAAA,2BAAAA,CAAAA;EAAoC3pB,aAYhD,EAAA;;AAXE55E,IAAAA,SAAAA,EAAAA;AADUujG,CAAAA,EAAAA,2BAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,2BAAAA,GAAAA,UAAAA,CAAAA;IADZzjG,YAAaoG,CAAAA,QAAa,CAACs9F,4BAA4B,CAAA;AAC3CD,CAAAA,EAAAA,2BAAAA,CAAAA,CAAAA;AAeN,IAAA,4BAAME,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,4BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,4BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,4BAAAA,CAAAA,SAAAA,CAAAA;IAIX,MAASrY,CAAAA,cAOR,GAPD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMyR,eAAe,IAAIU,oBAAAA,EAAAA,CAAAA;AAEzBV,QAAAA,YAAAA,CAAa71F,KAAK,GAAGimC,iBAAkB,CAAA,IAAI,CAACk2D,SAAS,CAAA,CAAA;AACrDtG,QAAAA,YAAAA,CAAav8G,KAAK,GAAGu8G,YAAAA,CAAa71F,KAAK,CAACc,QAAQ,CAAC,CAAA,CAAA,CAAA;QAEjD,OAAO+0F,YAAAA,CAAAA;AACT,KAAA,CAAA;AAXW4G,IAAAA,OAAAA,4BAAAA,CAAAA;EAAqC7pB,aAYjD,EAAA;;AAXE55E,IAAAA,SAAAA,EAAAA;AADUyjG,CAAAA,EAAAA,4BAAAA,CAAAA,SAAAA,EAAAA,WAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,4BAAAA,GAAAA,UAAAA,CAAAA;IADZ3jG,YAAaoG,CAAAA,QAAa,CAACu9F,4BAA4B,CAAA;AAC3CA,CAAAA,EAAAA,4BAAAA,CAAAA;;ACnCb;;;AAGC,IACM,IAAA,aAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,CASEC,UAAsB,EAAEpD,KAAyB,EAAE/mB,MAAsB,EAAA;AAFtFvmD,QAAAA,IAAAA,CAAAA,QAAAA,GAA4B,EAAE,CAAA;QAG5B,IAAI,CAAC0wE,UAAU,GAAGA,UAAAA,CAAAA;QAClB,IAAI,CAACpD,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAAC/mB,MAAM,GAAGA,MAAAA,CAAAA;AAEd,QAAA,IAAI,CAAC+mB,KAAK,CAACc,aAAa,GAAG,IAAI,CAAA;;AAdtBqC,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAiBXztE,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAAUorE,aAA4B,EAAA;AACpC,QAAA,IAAI,CAACpuE,QAAQ,CAAC/uC,IAAI,CAACm9G,aAAAA,CAAAA,CAAAA;AACrB,KAAA,CAAA;AAnBWqC,IAAAA,OAAAA,aAAAA,CAAAA;AAoBZ,CAAA,EAAA;;AChBM,IAAA,aAAM9hC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,GAAAA;;;AAEXgiC,QAAAA,KAAAA,CAAAA,MAAAA,GAAuB,EAAE,CAAA;cAEjBC,oBAA4C,GAAA,IAAA,CAAA;;;AAJzCjiC,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;IAmBX6gC,MAAAA,CAAAA,WASC,GATDA,SAAAA,WAAAA,CAAmC39F,gBAAgC,EAAEpE,MAAkB,EAAElc,IAAa,EAAA;AACpG,QAAA,IAAMs/G,QAAW,GAAA,IAAIh/F,gBAAiB,CAAA,IAAI,CAAC9K,MAAM,CAAA,CAAA;AAEjD8pG,QAAAA,QAAAA,CAASt/G,IAAI,GAAGA,IAAOA,GAAAA,IAAAA,GAAOsgB,iBAAiBtgB,IAAI,CAAA;AACnDkc,QAAAA,MAAAA,CAAOu1B,QAAQ,CAAC6tE,QAAAA,CAAAA,CAAAA;AAEhB,QAAA,IAAI,CAACC,UAAU,EAAA,CAAA;QAEf,OAAOD,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;MAGA,MAAA,CAAQC,UAEP,GAFD,SAAQA,UAAAA,GAAAA;QACN,IAAI,CAACF,oBAAoB,GAAG,IAAA,CAAA;AAC9B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQG,qBAOP,GAPD,SAAQA,qBAAuBC,CAAAA,KAAiB,EAAEC,SAAuB,EAAA;QACvE,IAAuBD,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMtD,cAAc,EAAI,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApCwD,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTD,YAAAA,SAAAA,CAAUhgH,IAAI,CAACigH,QAAAA,CAAAA,CAAAA;AACjB,SAAA;QACA,IAAuBF,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMtD,cAAc,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApCwD,YAAAA,IAAAA,SAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACH,qBAAqB,CAACG,SAAUD,EAAAA,SAAAA,CAAAA,CAAAA;AACvC,SAAA;AACF,KAAA,CAAA;AA5CWtiC,IAAAA,aAAAA,CAAAA,aAAAA,EAAAA;;YAMPwiC,GAAAA,EAAAA,iBAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAACP,oBAAoB,EAAE;oBAC9B,IAAI,CAACA,oBAAoB,GAAG,EAAE,CAAA;;oBAE9B,IAA0B,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACD,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BS,wBAAAA,IAAAA,WAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,wBAAA,IAAI,CAACR,oBAAoB,CAAC3/G,IAAI,CAACmgH,WAAAA,CAAAA,CAAAA;AAC/B,wBAAA,IAAI,CAACL,qBAAqB,CAACK,WAAa,EAAA,IAAI,CAACR,oBAAoB,CAAA,CAAA;AACnE,qBAAA;AACF,iBAAA;gBAEA,OAAO,IAAI,CAACA,oBAAoB,CAAA;AAClC,aAAA;;;AAjBWjiC,IAAAA,OAAAA,aAAAA,CAAAA;EAAsB9gE,aA6ClC,EAAA;;AA5CEd,IAAAA,SAAAA,EAAAA;AADU4hE,CAAAA,EAAAA,aAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,aAAAA,GAAAA,UAAAA,CAAAA;IADZ9hE,YAAaoG,CAAAA,QAAa,CAAC07D,aAAa,CAAA;AAC5BA,CAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AA+CN,IAAA,gBAAME,iBAAD,WAAL;aAAMA,gBAKEH,CAAAA,aAA4B,EAAED,aAA6B,EAAA;aAJhEjwE,IAAO,GAAA,CAAA,CAAA;AACPmuG,QAAAA,IAAAA,CAAAA,KAAAA,GAAuB,EAAE,CAAA;AACzB0E,QAAAA,IAAAA,CAAAA,oBAAAA,GAAwC,EAAE,CAAA;AAGhD,QAAA,IAAMhC,kBAA2C,EAAC,CAAA;AAElD,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA2B5gC,aAAe,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA/B6iC,YAAAA,IAAAA,YAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACTjC,eAAe,CAACiC,aAAapkH,GAAG,CAAC+gB,aAAa,EAAG,CAAA,GAAGqjG,aAAajkH,KAAK,CAAA;AACxE,SAAA;;QAGA,IAAoBqhF,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAciiC,MAAM,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA/BK,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAS9iH,YAAL8iH,CAAAA,KAAAA,EAAiB5B,kBAAoB,CAAA,EAAA;gBACvC4B,KAAM5gH,CAAAA,MAAM,CAACs+E,aAAe2gC,EAAAA,eAAAA,CAAAA,CAAAA;AAC9B,aAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACkC,aAAa,CAAC7iC,aAAAA,CAAcyiC,eAAe,EAAE1iC,aAAAA,CAAAA,CAAAA;;AAnBzCI,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAsBXjH,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAASppE,IAAY,EAAA;QACnB,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AACd,KAAA,CAAA;IAEA0gD,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,GAAAA;QACE,OAAO,IAAI,CAAC1gD,IAAI,CAAA;AAClB,KAAA,CAAA;AAEA2U,IAAAA,MAAAA,CAAAA,QAYC,GAZDA,SAAAA,QAAAA,CAAUnB,SAAiB,EAAA;QACzB,IAAMxT,IAAAA,GAAO,IAAI,CAAC0gD,OAAO,EAAA,CAAA;;QAIzB,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACytD,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBQ,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,IAAAA,CAAKkB,UAAU,CAAC7vG,IAAAA,CAAAA,CAAAA;AAClB,SAAA;QAEA,IAAoB,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAAC6yG,oBAAoB,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApCL,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACQ,SAAS,CAACR,KAAOh/F,EAAAA,SAAAA,CAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAEAu/F,IAAAA,MAAAA,CAAAA,aAyCC,GAzCDA,SAAAA,aAAeZ,CAAAA,MAAoB,EAAEliC,aAA6B,EAAA;AAEhE,QAAA,IAAMgjC,WAA4Bd,GAAAA,MAAAA,CAAAA;;AAGlC,QAAA,IAAMe,mBAAkD,EAAC,CAAA;AAEzD,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoBD,WAAa,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtBT,YAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;;AAET,YAAA,IAAMW,mBAAmBX,KAAMjE,CAAAA,mBAAmB,CAAC,IAAI,CAACJ,KAAK,CAAA,CAAA;YAE7D,IAAMiF,WAAAA,GAAcZ,MAAMlE,YAAY,EAAA,CAAA;;AAGtC,YAAA,IAAMsB,aAAgB,GAAA,IAAIqC,aAAcO,CAAAA,KAAAA,EAAOW,gBAAkBC,EAAAA,WAAAA,CAAAA,CAAAA;AAEjEF,YAAAA,gBAAgB,CAACV,KAAAA,CAAM/iG,aAAa,EAAA,CAAG,GAAGmgG,aAAAA,CAAAA;YAE1C,IAAI,CAAC4C,KAAMvjG,CAAAA,MAAM,EAAE;AACjB,gBAAA,IAAI,CAAC4jG,oBAAoB,CAACpgH,IAAI,CAACm9G,aAAAA,CAAAA,CAAAA;AACjC,aAAA;AACF,SAAA;;AAGA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAoBqD,WAAa,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtBT,YAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM5C,cAAgBsD,GAAAA,gBAAgB,CAACV,MAAAA,CAAM/iG,aAAa,EAAG,CAAA,CAAA;YAE7D,IAAoB+iG,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAMtD,cAAc,EAAI,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAjCzqE,gBAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,gBAAA,IAAM4uE,kBAAqBH,GAAAA,gBAAgB,CAACzuE,KAAAA,CAAMh1B,aAAa,EAAG,CAAA,CAAA;AAElEmgG,gBAAAA,cAAAA,CAAcprE,QAAQ,CAAC6uE,kBAAAA,CAAAA,CAAAA;AACzB,aAAA;AACF,SAAA;AAEA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA2BpjC,aAAe,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA/B6iC,YAAAA,IAAAA,YAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACTI,gBAAgB,CAACJ,YAAapkH,CAAAA,GAAG,CAAC+gB,aAAa,GAAG,CAAC84E,WAAW,GAAGuqB,YAAAA,CAAajkH,KAAK,CAAA;AACrF,SAAA;QAEA,IAA4B,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACgkH,oBAAoB,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA5CjD,YAAAA,IAAAA,cAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAAC0D,yBAAyB,CAAC1D,cAAAA,CAAAA,CAAAA;AACjC,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQoD,SAmBP,GAnBD,SAAQA,SAAWR,CAAAA,KAAoB,EAAEh/F,SAAiB,EAAA;AAExD,QAAA,IAAMlF,OAAUkkG,GAAAA,KAAAA,CAAMzqB,MAAM,CAACz5E,OAAO,CAAA;AAEpCA,QAAAA,OAAAA,CAAQkF,SAAS,GAAGA,SAAAA,CAAAA;AAEpBg/F,QAAAA,KAAAA,CAAMzqB,MAAM,CAACC,WAAW,CAACwqB,MAAMjqB,WAAW,CAAA,CAAA;AAE1C,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAmBiqB,KAAM1D,CAAAA,KAAK,CAAC5D,aAAa,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnCyD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIA,IAAKjnB,CAAAA,YAAY,EAAOtd,KAAAA,SAAAA,CAAU4F,OAAO,EAAE;AAC7C2+B,gBAAAA,IAAAA,CAAK/mB,YAAY,CAACt5E,OAAAA,CAAAA,CAAAA;AACpB,aAAA;AACF,SAAA;QAEAkkG,KAAM1D,CAAAA,KAAK,CAACn6F,QAAQ,CAACrG,OAAAA,CAAAA,CAAAA;QAErB,IAAoBkkG,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAMhxE,QAAQ,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzBiD,YAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACuuE,SAAS,CAACvuE,KAAOjxB,EAAAA,SAAAA,CAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ8/F,yBASP,GATD,SAAQA,yBAAAA,CAA2B1D,aAA4B,EAAA;QAC7D,IAAuBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,aAAAA,CAAcpuE,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApCkxE,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACA,QAASnqB,CAAAA,WAAW,EAAE;AACzB,gBAAA,IAAMA,cAAcmqB,QAASR,CAAAA,UAAU,CAAC9D,oBAAoB,CAACwB,cAAcrnB,WAAW,CAAA,CAAA;AAEtFmqB,gBAAAA,QAAAA,CAASnqB,WAAW,GAAGA,WAAAA,CAAAA;AACzB,aAAA;YACA,IAAI,CAAC+qB,yBAAyB,CAACZ,QAAAA,CAAAA,CAAAA;AACjC,SAAA;AACF,KAAA,CAAA;AArHWriC,IAAAA,OAAAA,gBAAAA,CAAAA;AAsHZ,CAAA;;ACzJD,IAAMkjC,YAA+B,GAAA;AAAC,IAAA;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA;AAAC,CAAA,CAAA;AAEtD,IAAInwE,MAAO,GAAA,CAAA,CAAA;AAGJ,IAAA,wBAAMowE,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,wBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,wBAAAA,CAAAA,SAAAA,CAAAA;IAGX,MAAS7Z,CAAAA,cAMR,GAND,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAM8Z,sBAAsB,IAAIprB,aAAAA,EAAAA,CAAAA;AAEhCorB,QAAAA,mBAAAA,CAAoB7hH,MAAM,CAAC,IAAI,CAAC8Q,IAAI,CAAA,CAAA;QAEpC,OAAO+wG,mBAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS5jG,QAER,GAFD,SAASA,QAAAA,CAAUnN,IAA4B,EAAA;QAC7C,IAAI,CAACA,IAAI,GAAGA,IAAAA,CAAAA;AACd,KAAA,CAAA;AAbW8wG,IAAAA,OAAAA,wBAAAA,CAAAA;EAAiCrrB,aAc7C,EAAA;AAdYqrB,wBAAAA,GAAAA,UAAAA,CAAAA;IADZnlG,YAAaoG,CAAAA,QAAa,CAAC++F,wBAAwB,CAAA;AACvCA,CAAAA,EAAAA,wBAAAA,CAAAA,CAAAA;AAgBN,IAAA,kBAAME,iBAAD,SAAL,UAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,UAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,kBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;IACX,MAASrF,CAAAA,gBAER,GAFD,SAASA,gBAAAA,GAAAA;AACP,QAAA,OAAO,IAAIpD,kBAAAA,EAAAA,CAAAA;AACb,KAAA,CAAA;AAHWyI,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2B1F,UAIvC,EAAA;AAEM,IAAA,wBAAMqD,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,wBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,wBAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAASjD,oBAGR,GAHD,SAASA,oBAAAA,CAAsB7lB,WAAmB,EAAA;QAEhD,OAAQA,WAAwBr9D,CAAAA,YAAY,CAACimF,eAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AAJWE,IAAAA,OAAAA,wBAAAA,CAAAA;EAAiCqC,kBAK7C,EAAA;AAEM,IAAA,wBAAMnC,iBAAD,SAAL,kBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,wBAAAA,EAAAA,kBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,wBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,wBAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAASnD,oBAER,GAFD,SAASA,oBAAAA,CAAsB7lB,WAAmB,EAAA;QAChD,OAAQA,WAAwBr9D,CAAAA,YAAY,CAACojD,eAAAA,CAAAA,CAAAA;AAC/C,KAAA,CAAA;AAHWijC,IAAAA,OAAAA,wBAAAA,CAAAA;EAAiCmC,kBAI7C,EAAA;AAEM,IAAA,0BAAMpC,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,0BAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,0BAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,0BAAAA,CAAAA,SAAAA,CAAAA;IACX,MAAS3X,CAAAA,cAIR,GAJD,SAASA,cAAAA,GAAAA;AACP,QAAA,IAAMga,wBAAwB,IAAIC,qBAAAA,EAAAA,CAAAA;QAElC,OAAOD,qBAAAA,CAAAA;AACT,KAAA,CAAA;AALWrC,IAAAA,OAAAA,0BAAAA,CAAAA;EAAmCnpB,aAM/C,EAAA;AAEM,IAAA,qBAAMyrB,iBAAD,SAAL,QAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,qBAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,qBAAAA,GAAAA;;;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAAShsB,YAQR,GARD,SAASA,YAAAA,CAAct5E,OAAqB,EAAA;AAC1C,QAAA,IAAMi6E,WAAcj6E,GAAAA,OAAAA,CAAQy5E,MAAM,CAACG,WAAW,EAAA,CAAA;AAE9C,QAAA,IAAI,EAAE,MAAUK,IAAAA,WAAU,CAAI,EAAA;AAC5B,YAAA,OAAA;AACF,SAAA;AAEAA,QAAAA,WAAAA,CAAYvoF,IAAI,GAAG,IAAI,CAACA,IAAI,CAAA;AAC9B,KAAA,CAAA;AATW4zG,IAAAA,OAAAA,qBAAAA,CAAAA;EAA8BvsB,QAU1C,EAAA;AAMM,IAAA,eAAM8pB,iBAAD,SAAL,eAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,eAAAA,EAAAA,eAAAA,CAAAA,CAAAA;aAAAA,eAUE5oG,CAAAA,MAAc,EAAEolB,KAAgC,EAAA;;AACrDplB,QAAAA,KAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cAVRvI,IAAO,GAAA,CAAA,CAAA;cACP8R,QAAW,GAAA,CAAA,CAAA;AACX;;AAEA,KAAA,KAAA,CACA84F,MAAyB2I,GAAAA,YAAAA,CAAAA;QAOvB,KAAKxgH,CAAAA,IAAI,GAAG,SAAYqwC,GAAAA,MAAAA,EAAAA,CAAAA;AACxB,QAAA,IAAIzV,KAAO,EAAA;AACT,YAAA,KAAA,CAAK9d,QAAQ,CAAC8d,KAAAA,CAAAA,CAAAA;AAChB,SAAA;;;AAhBSwjF,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAmBX,IAAA,MAAA,CAASxiF,QAwER,GAxED,SAASA,QAAAA,CAAU93B,EAAU,EAAA;;AAC3B,QAAA,eAAA,CAAA,SAAA,CAAM83B,QAAD,CAAU93B,IAAAA,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA,CAAAA;QACf,IAAImJ,IAAAA,GAAO,IAAI,CAACA,IAAI,CAAA;QACpB,IAAM8R,QAAAA,GAAW,IAAI,CAACA,QAAQ,CAAA;QAC9B,IAAM+hG,gBAAAA,GAAmB,IAAI,CAACxR,qBAAqB,CAAA;AACtCwR,QAAAA,IAAAA,sBAAAA,CAAAA;AAAb,QAAA,IAAMh2B,OAAOg2B,CAAAA,sBAAAA,GAAAA,oCAAAA,gBAAkBh2B,CAAAA,IAAI,YAAtBg2B,sBAA0B,GAAA,IAAA,CAAA;QAEvC,IAAI7zG,IAAAA,GAAO8R,YAAY+rE,IAAM,EAAA;AAC3B79E,YAAAA,IAAAA,GAAOA,IAAO8R,GAAAA,QAAAA,CAAAA;AAChB,SAAA;QAEA,IAAMmE,IAAAA,GAAO3gB,KAAKI,GAAG,CAACJ,KAAK+B,GAAG,CAAC2I,IAAO8R,GAAAA,QAAAA,EAAU,GAAM,CAAA,EAAA,GAAA,CAAA,CAAA;QACtD,IAAQ2zC,QAAU,IAAI,CAACv1B,QAAQ,CAACu4B,OAAO,CAACz0C,MAAM,CAAtCyxC,KAAAA,CAAAA;AAER,QAAA,IAAIA,KAAO,EAAA;AACT,YAAA,IAAIzlD,SAAS,CAAG,EAAA;AACdylD,gBAAAA,KAAAA,CAAM6jB,KAAK,EAAA,CAAA;aACN,MAAA;AACL7jB,gBAAAA,KAAAA,CAAMW,IAAI,EAAA,CAAGhF,KAAK,CAAC1uD,SAAAA,CAAAA,EAAAA;AAAO,oBAAA,KAAA,CAAK6V,MAAM,CAACurG,YAAY,CAACx7G,GAAG,CAAC5F,CAAAA,CAAAA,CAAAA;AAAI,iBAAA,CAAA,CAAA;AAC7D,aAAA;AACA,YAAA,IAAI,CAACw9B,QAAQ,CAACu4B,OAAO,CAACf,uBAAuB,EAAA,CAAA;AAC/C,SAAA;AACA,QAAA,IAAImsD,gBAAkB,EAAA;AA0CpB,YAAA,IAAA,yBAAA,CAAA;YAzCA,IAAMp3D,KAAAA,GAAQo3D,iBAAiBp3D,KAAK,IAAKo3D,iBAAiBxY,GAAG,GAAGwY,iBAAiBzY,GAAG,CAAA;AACpF,YAAA,IAAI2Y,QAAW,GAAA,CAAA,CAAA;AACf,YAAA,IAAIC,QAAW,GAAA,CAAA,CAAA;AACf,YAAA,IAAIC,QAAW,GAAA,CAAA,CAAA;AACf,YAAA,IAAIC,QAAW,GAAA,CAAA,CAAA;YACf,IAAIvJ,IAAAA,CAAAA;YAEJ,IAAI,IAAI,CAACC,MAAM,EAAE;AACf,gBAAA,IAAM7kB,EAAK,GAAA,IAAI,CAAC6kB,MAAM,CAAC,CAAE,CAAA,CAAA;gBAEzBD,IAAO5kB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;gBACZguB,QAAWhuB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;gBAChBiuB,QAAWjuB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAChB,gBAAA,IAAI4kB,IAAM,EAAA;oBACRsJ,QAAWluB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;oBAChBmuB,QAAWnuB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;iBACX,MAAA;oBACLkuB,QAAWluB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;oBAChBmuB,QAAWnuB,GAAAA,EAAE,CAAC,CAAE,CAAA,CAAA;AAClB,iBAAA;AACF,aAAA;AACA,YAAA,IAAIhsF,EAAIC,EAAAA,EAAAA,CAAAA;AAER,YAAA,IAAI2wG,IAAM,EAAA;gBACR5wG,EAAK,GAAA,CAAA,GAAI85G,gBAAiBxY,CAAAA,GAAG,GAAG4Y,QAAAA,CAAAA;gBAChCj6G,EAAK,GAAA,CAAA,GAAI65G,gBAAiBzY,CAAAA,GAAG,GAAG8Y,QAAAA,CAAAA;aAC3B,MAAA;gBACLn6G,EAAK,GAAA,CAAA,GAAI85G,gBAAiBzY,CAAAA,GAAG,GAAG6Y,QAAAA,CAAAA;gBAChCj6G,EAAK,GAAA,CAAA,GAAI65G,gBAAiBxY,CAAAA,GAAG,GAAG6Y,QAAAA,CAAAA;AAClC,aAAA;YACA,IAAIC,SAAAA,CAAAA;YAEJ,IAAIN,gBAAAA,CAAiB5Y,OAAO,EAAE;AAC5B,gBAAA,IAAMmZ,aAAa9+G,IAAK2D,CAAAA,KAAK,CAACgd,IAAQwmC,IAAAA,QAAQ,CAAA,CAAA,CAAA,CAAA;AAC9C,gBAAA,IAAMlP,SAASj4C,IAAK0D,CAAAA,KAAK,CAACo7G,UAAAA,GAAaP,iBAAiBzY,GAAG,CAAA,CAAA;AAC3D,gBAAA,IAAM9tD,MAAS8mE,GAAAA,UAAAA,GAAa7mE,MAASsmE,GAAAA,gBAAAA,CAAiBzY,GAAG,CAAA;AAEzD+Y,gBAAAA,SAAAA,GAAYxJ,IAAO,GAAA;oBAAC5wG,EAAKwzC,GAAAA,MAAAA;AAAQvzC,oBAAAA,EAAAA,IAAM65G,gBAAAA,CAAiBzY,GAAG,GAAG9tD,MAAK,CAAA;iBAAG,GAAG;oBAACvzC,EAAKuzC,GAAAA,MAAAA;oBAAQtzC,EAAM,IAAA,IAAIuzC,MAAK,CAAA;AAAG,iBAAA,CAAA;aACpG,MAAA;gBACL4mE,SAAY,GAAA;AAAC,oBAAA,CAAA;AAAGn6G,oBAAAA,EAAAA;AAAG,iBAAA,CAAA;AACrB,aAAA;aACA,yBAAA,GAAA,IAAI,CAACs2B,QAAQ,CAACoiD,UAAU,CAAC,YAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAzB,yBAAwC56E,CAAAA,YAAY,CAAC;gBACnDi8G,QAAWI,GAAAA,SAAS,CAAC,CAAE,CAAA;gBACvBD,QAAWF,GAAAA,QAAAA,GAAWG,SAAS,CAAC,CAAE,CAAA;AAClCp6G,gBAAAA,EAAAA;AAAIC,gBAAAA,EAAAA;AACL,aAAA,CAAA,CAAA;AACH,SAAA;AAEA,QAAA,IAAI,CAACgG,IAAI,GAAGA,IAAAA,GAAOnJ,EAAK,GAAA,IAAA,CAAA;AAC1B,KAAA,CAAA;IAEA,MAAS43B,CAAAA,SAGR,GAHD,SAASA,SAAAA,GAAAA;AACP,QAAA,eAAA,CAAA,SAAA,CAAMA,SAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QACL,IAAI,CAACzuB,IAAI,GAAG,CAAA,CAAA;AACd,KAAA,CAAA;IAEA,MAAS6uB,CAAAA,SASR,GATD,SAASA,SAAAA,GAAAA;AACP,QAAA,IAAM45B,OAAU,GAAA,IAAI,CAACv4B,QAAQ,CAACu4B,OAAO,CAAA;QACrC,IAAMz0C,MAAAA,GAASy0C,QAAQz0C,MAAM,CAAA;QAE7B,IAAIA,MAAAA,CAAO+T,UAAU,KAAKq3B,iBAAAA,CAAkBqG,KAAK,KAAIzxC,MAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,MAAQyxC,CAAAA,KAAK,CAAE,EAAA;YAClEzxC,MAAOyxC,CAAAA,KAAK,CAAC6jB,KAAK,EAAA,CAAA;YAClBt1D,MAAOyxC,CAAAA,KAAK,CAACxtD,GAAG,GAAG,EAAA,CAAA;YACnB+b,MAAOyxC,CAAAA,KAAK,CAACj0C,IAAI,EAAA,CAAA;AACnB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAU6iG,cA+CT,GA/CD,SAAUA,cAAAA,CAAgBpzE,QAAkB,EAAA;AAC1C,QAAA,IAAMl7B,KAAkB,GAAA,IAAI,CAACs8F,qBAAqB,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,IAAI,CAACuI,MAAM,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA;AAAW,SAAA,GAAG,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,CAAA;AAC/G,QAAA,IAAMpZ,WAAczrF,GAAAA,KAAAA,CAAAA;QACpB,IAAMpP,CAAAA,GAAI66F,WAAW,CAAC,CAAE,CAAA,CAAA;QACxB,IAAM9/F,CAAAA,GAAI8/F,WAAW,CAAC,CAAE,CAAA,CAAA;AACxB,QAAA,IAAM8iB,UAAav5D,GAAAA,OAAAA,CAAQy2C,WAAW,CAAC,CAAE,CAAA,CAAA,CAAA;QACzC,IAAMhvF,KAAAA,GAAQ8xG,aAAa9iB,WAAW,CAAC,EAAE,GAAGA,WAAW,CAAC,CAAE,CAAA,CAAA;QAC1D,IAAM/uF,MAAAA,GAAS6xG,aAAa9iB,WAAW,CAAC,EAAE,GAAGA,WAAW,CAAC,CAAE,CAAA,CAAA;AAC3D,QAAA,IAAMh6E,QAAQ88F,UAAa,GAAA,CAACh/G,IAAKU,CAAAA,EAAE,GAAG,CAAI,GAAA,CAAA,CAAA;QAE1C,IAAM6+E,GAAAA,GAAM5zC,QAAS83C,CAAAA,gBAAgB,CAAC,KAAA,CAAA,CAAA;QACtC,IAAMne,IAAAA,GAAO35B,QAAS83C,CAAAA,gBAAgB,CAAC,MAAA,CAAA,CAAA;QACvC,IAAMhE,OAAAA,GAAU9zC,SAASi4C,YAAY,EAAA,CAAA;AAErC,QAAA,IAAM3H,YAA0B,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QAEtC,IAAIsD,GAAAA,IAAOja,QAAQma,OAAS,EAAA;YAC1B,IAAM4C,WAAAA,GAAc9C,GAAItkF,CAAAA,MAAM,GAAG,CAAA,CAAA;AAEjC,YAAA,IAAK,IAAIO,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI6mF,aAAa7mF,CAAK,EAAA,CAAA;AACpC,gBAAA,IAAMiiF,iBAAiBjiF,CAAI,GAAA,CAAA,CAAA;AAC3B,gBAAA,IAAM2oF,WAAW3oF,CAAI,GAAA,CAAA,CAAA;gBACrB,IAAMyjH,SAAAA,GAAY35C,IAAI,CAACmY,cAAe,CAAA,CAAA;AACtC,gBAAA,IAAMyhC,SAAY55C,GAAAA,IAAI,CAACmY,cAAAA,GAAiB,CAAE,CAAA,CAAA;gBAE1CxB,YAAY,CAAC,EAAE,GAAGgjC,SAAAA,CAAAA;gBAClBhjC,YAAY,CAAC,EAAE,GAAGijC,SAAAA,CAAAA;AAClB3iB,gBAAAA,UAAAA,CAAWtgB,cAAcA,YAAc/5D,EAAAA,KAAAA,CAAAA,CAAAA;gBAEvCq9D,GAAG,CAAC4E,QAAS,CAAA,GAAG,CAAClI,YAAY,CAAC,CAAE,CAAA,GAAG,GAAE,IAAK/uE,KAAQ7L,GAAAA,CAAAA,CAAAA;AAClDk+E,gBAAAA,GAAG,CAAC4E,QAAAA,GAAW,CAAE,CAAA,GAAG,CAAClI,YAAY,CAAC,CAAE,CAAA,GAAG,GAAE,IAAK9uE,MAAS/Q,GAAAA,CAAAA,CAAAA;AACzD,aAAA;AAEA,YAAA,IAAI,CAACuvC,QAAQ,CAACy4C,gBAAgB,CAAC,MAAA,EAAQ9e,KAAKpnE,KAAK,EAAA,CAAA,CAAA;AACjD,YAAA,IAAI,CAACytC,QAAQ,CAACy4C,gBAAgB,CAAC,KAAA,EAAO7E,IAAIrhF,KAAK,EAAA,CAAA,CAAA;AAC/C,YAAA,IAAI,CAACytC,QAAQ,CAAC04C,YAAY,CAAC5E,QAAQvhF,KAAK,EAAA,CAAA,CAAA;AACxC,YAAA,IAAI,CAACytC,QAAQ,CAAC24C,YAAY,CAAC7E,QAAQxkF,MAAM,CAAA,CAAA;AAC3C,SAAA;AAEA,QAAA,IAAI,CAAC0wC,QAAQ,CAAC8zB,SAAS,CAACxkE,MAAM,GAAG,CAAA,CAAA;QACjC,IAAsB0wC,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,QAAAA,CAAS8zB,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA/BmyB,YAAAA,IAAAA,OAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACjmD,QAAQ,CAAC8zB,SAAS,CAACtiE,IAAI,CAAC;AAC3BkB,gBAAAA,MAAAA,EAAQuzF,QAAQvzF,MAAM;AACtB+jF,gBAAAA,UAAAA,EAAYwP,QAAQxP,UAAU;AAC9BC,gBAAAA,WAAAA,EAAauP,QAAQvP,WAAW;AAClC,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;MAIA,MAAA,CAAU88B,4BAoDT,GApDD,SAAUA,4BAAAA,GAAAA;AACR,QAAA,IAA0C,QAAA,IAAI,EAAtC7J,SAAkC,KAAlCA,CAAAA,MAAAA,EAAQvI,wBAA0B,KAA1BA,CAAAA,qBAAAA,CAAAA;QAChB,IAAMzrE,EAAAA,GAAK,GAAGC,EAAK,GAAA,CAAA,CAAA;QACnB,IAAMoK,QAAAA,GAAW,IAAI,CAAC2zC,eAAe,CAAA;AAErC,QAAA,IAAM8/B,UAAa,GAAA;YAAC,CAAC,EAAA;AAAI,YAAA,EAAA;YAAI,CAAC,EAAA;YAAI,CAAC,EAAA;AAAI,YAAA,EAAA;AAAI,YAAA,EAAA;AAAI,YAAA,EAAA;YAAI,CAAC,EAAA;AAAG,SAAA,CAAA;AACvD,QAAA,IAAM7/B,MAAM,EAAE,CAAA;AACd,QAAA,IAAMvgF,QAAQ,EAAE,CAAA;AAChB,QAAA,IAAMmiB,WAAW,EAAE,CAAA;AACnB,QAAA,IAAM2kF,GAAM,GAAA,CAAA,CAAA;AACZ,QAAA,IAAMC,GAAM,GAAA,CAAA,CAAA;AAEZ,QAAA,IAAK,IAAI1kG,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIykG,KAAKzkG,CAAK,EAAA,CAAA;AAC5B,YAAA,IAAK,IAAIjF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI2pG,KAAK3pG,CAAK,EAAA,CAAA;AAC5B,gBAAA,IAAM2R,OAAO,CAAC3R,CAAI,GAAA,CAAA,GAAIiF,CAAAA,IAAK,CAAA,CAAA;;AAE3B,gBAAA,IAAMoP,QAAkBs8F,qBAAwB,GAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;oBAAGuI,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;AAAC,iBAAA,GAAGA,MAAM,CAACl5G,CAAI,GAAA,CAAA,GAAIiF,CAAE,CAAA,CAAA;AAC9F,gBAAA,IAAMw9G,SAAYpuG,GAAAA,KAAK,CAAC,CAAA,CAAE,GAAG;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;iBAAE,GAAG;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA,CAAA;gBAChF,IAAM4uG,EAAAA,GAAK,CAAC,CAACh+G,CAAIA,GAAAA,CAAAA,GAAI,CAAA,IAAKykG,GAAM,GAAA,CAAA,IAAK,CAAA,CAAA;gBACrC,IAAMwZ,EAAAA,GAAK,CAAC,CAACljH,CAAIA,GAAAA,CAAAA,GAAI,CAAA,IAAK2pG,GAAM,GAAA,CAAA,IAAK,CAAA,CAAA;gBACrC,IAAMwZ,GAAAA,GAAM9uG,KAAK,CAAC,CAAE,CAAA,CAAA;gBACpB,IAAM+uG,GAAAA,GAAM/uG,KAAK,CAAC,CAAE,CAAA,CAAA;gBACpB,IAAMgvG,GAAAA,GAAMhvG,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,CAAA;gBAC1C,IAAMivG,GAAAA,GAAMjvG,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,CAAA;AAC1C,gBAAA,IAAMhF,MAAS,GAAA;oBACb2zG,UAAU,CAAC,CAAE,CAAA,GAAGtZ,GAAMuZ,GAAAA,EAAAA;oBACtBD,UAAU,CAAC,CAAE,CAAA,GAAGrZ,GAAMuZ,GAAAA,EAAAA;oBACtBF,UAAU,CAAC,CAAE,CAAA,GAAGtZ,GAAMuZ,GAAAA,EAAAA;oBACtBD,UAAU,CAAC,CAAE,CAAA,GAAGrZ,GAAMuZ,GAAAA,EAAAA;oBACtBF,UAAU,CAAC,CAAE,CAAA,GAAGtZ,GAAMuZ,GAAAA,EAAAA;oBACtBD,UAAU,CAAC,CAAE,CAAA,GAAGrZ,GAAMuZ,GAAAA,EAAAA;oBACtBF,UAAU,CAAC,CAAE,CAAA,GAAGtZ,GAAMuZ,GAAAA,EAAAA;oBACtBD,UAAU,CAAC,CAAE,CAAA,GAAGrZ,GAAMuZ,GAAAA,EAAAA;AACvB,iBAAA,CAAA;gBAED//B,GAAIpiF,CAAAA,IAAI,CACN0hH,SAAS,CAAC,EAAE,GAAGY,GAAAA,GAAMF,GAAKV,EAAAA,SAAS,CAAC,CAAA,CAAE,GAAGa,GAAMF,GAAAA,GAAAA,EAC/CX,SAAS,CAAC,CAAA,CAAE,GAAGY,GAAMF,GAAAA,GAAAA,EAAKV,SAAS,CAAC,CAAE,CAAA,GAAGa,MAAMF,GAC/CX,EAAAA,SAAS,CAAC,CAAE,CAAA,GAAGY,MAAMF,GAAKV,EAAAA,SAAS,CAAC,CAAA,CAAE,GAAGa,GAAAA,GAAMF,KAC/CX,SAAS,CAAC,EAAE,GAAGY,GAAAA,GAAMF,KAAKV,SAAS,CAAC,CAAE,CAAA,GAAGa,GAAMF,GAAAA,GAAAA,CAAAA,CAAAA;gBAEjDr+F,QAAShkB,CAAAA,IAAI,CAAEsO,MAAM,CAAC,EAAE,GAAI61B,EAAAA,EAAI,MAAO,CAAC,CAAA,CAAE,GAAIC,EAAI,EAAA,GAAA,EAChD,MAAO,CAAC,CAAA,CAAE,GAAID,EAAI,EAAC71B,MAAM,CAAC,CAAE,CAAA,GAAI81B,IAAI,GACpC,EAAC91B,MAAM,CAAC,CAAE,CAAA,GAAI61B,IAAI,MAAO,CAAC,CAAA,CAAE,GAAIC,EAAAA,EAAI,KACpC,MAAO,CAAC,CAAA,CAAE,GAAID,EAAAA,EAAI,MAAO,CAAC,CAAE,CAAA,GAAIC,EAAI,EAAA,GAAA,CAAA,CAAA;gBACtCviC,KAAM7B,CAAAA,IAAI,CAAC4Q,IAAAA,EAAM,CAAIA,GAAAA,IAAAA,EAAM,CAAIA,GAAAA,IAAAA,EAAM,CAAIA,GAAAA,IAAAA,EAAM,CAAIA,GAAAA,IAAAA,EAAM,CAAIA,GAAAA,IAAAA,CAAAA,CAAAA;AAC/D,aAAA;AACF,SAAA;AACA49B,QAAAA,QAAAA,CAASy4C,gBAAgB,CAAC,MAAQ,EAAA,IAAInwC,YAAa9yB,CAAAA,QAAAA,CAAAA,CAAAA,CAAAA;QACnDwqB,QAAS04C,CAAAA,YAAY,CAAC,IAAI9vC,WAAYv1C,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACtC2sC,QAAAA,QAAAA,CAASy4C,gBAAgB,CAAC,KAAO,EAAA,IAAInwC,YAAasrC,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA;QAClD5zC,QAAS24C,CAAAA,YAAY,CAACtlF,KAAAA,CAAM/D,MAAM,CAAA,CAAA;AACpC,KAAA,CAAA;AAEA,IAAA,MAAA,CAASsf,QA4BR,GA5BD,SAASA,QAAAA,CAAUnN,IAA8B,EAAA;AAC/C,QAAA,eAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAEAA,QAAAA,IAAAA,YAAAA,CAAAA;AAAf,QAAA,IAAMkoG,SAASloG,CAAAA,YAAAA,GAAAA,IAAKkoG,CAAAA,MAAM,YAAXloG,YAAe6wG,GAAAA,YAAAA,CAAAA;QAC9B,IAAMlR,qBAAAA,GAAwB3/F,KAAK2/F,qBAAqB,CAAA;QAExD,IAAI,CAACuI,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACvI,qBAAqB,GAAGA,qBAAAA,CAAAA;;AAG7B,QAAA,IAAMphE,QAAWv+B,GAAAA,IAAAA,CAAKu+B,QAAQ,GAAG,IAAI,CAAC14B,MAAM,CAAC6K,UAAU,CAAW1Q,IAAKu+B,CAAAA,QAAQ,CAAI,GAAA,IAAI,CAAC2zC,eAAe,CAAA;QAEvG,IAAIg2B,MAAAA,CAAOr6G,MAAM,KAAK,CAAG,EAAA;YACvB,IAAI,CAAC8jH,cAAc,CAACpzE,QAAAA,CAAAA,CAAAA;SACf,MAAA;;;AAGL,YAAA,IAAI,CAACwzE,4BAA4B,EAAA,CAAA;AACnC,SAAA;AAEA,QAAA,IAAI,CAACngC,WAAW,GAAG5xE,IAAAA,CAAK4xE,WAAW,CAAA;AAEnC,QAAA,IAAMqU,UAAajmF,GAAAA,IAAAA,CAAK5O,OAAO,CAAC60F,UAAU,IAAI;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QAE1D,IAAI,CAACr4D,QAAQ,CAAC0iC,QAAQ,CAAC,QAAU,EAAA,IAAIn2D,KAAQ/E,EAAAA,CAAAA,YAAY,CAAC6wF,UAAAA,CAAAA,CAAAA,CAAAA;AAG1CjmF,QAAAA,IAAAA,cAAAA,CAAAA;;AAAhB,QAAA,IAAI,CAACoP,QAAQ,GAAGpP,CAAAA,cAAAA,GAAAA,IAAAA,CAAKoP,QAAQ,KAAA,IAAA,GAAbpP,cAAiB,GAAA,IAAI,CAAChO,IAAI,CAACod,QAAQ,CAAA;AACrD,KAAA,CAAA;AApPWq/F,IAAAA,OAAAA,eAAAA,CAAAA;EAAwBj9B,eAqPpC,EAAA;AArPYi9B,eAAAA,GAAAA,UAAAA,CAAAA;IADZ9iG,YAAaoG,CAAAA,QAAa,CAAC08F,eAAe,CAAA;AAC9BA,CAAAA,EAAAA,eAAAA,CAAAA;;ACrFN,IAAA,cAAM8D,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,cAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,cAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,cAAAA,CAAAA;qBAAuBvsG,MAEnC,CAAA;;ACLD;AAMA;;;AAGC,IACM,IAAA,KAAMwsG,iBAAD,WAAL;aAAMA,KAeEv+G,CAAAA,CAAK,EAAEjF,CAAK,EAAA;AAAZiF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAdxB;;AAEC,MAAA,IAAA,CACDiF,CAAI,GAAA,CAAA,CAAA;AACJ;;AAEC,MAAA,IAAA,CACDjF,CAAI,GAAA,CAAA,CAAA;QAQF,IAAI,CAACiF,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;;AAjBAwjH,IAAAA,IAAAA,MAAAA,GAAAA,KAAAA,CAAAA,SAAAA,CAAAA;AAoBX;;;MAIAh9G,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACE,OAAO,IAzBEg9G,MAyBQ,IAAI,CAACv+G,CAAC,EAAE,IAAI,CAACjF,CAAC,CAAA,CAAA;AACjC,KAAA,CAAA;AAEA;;;;AAIC,MACDsG,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,SAAU6Q,CAAY,EAAA;AACpB,QAAA,IAAI,CAAC/S,GAAG,CAAC+S,EAAElS,CAAC,EAAEkS,EAAEnX,CAAC,CAAA,CAAA;AAEjB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;AAIC,MACDyjH,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,OAA6BtsG,CAAI,EAAA;QAC/BA,CAAE/S,CAAAA,GAAG,CAAC,IAAI,CAACa,CAAC,EAAE,IAAI,CAACjF,CAAC,CAAA,CAAA;QAEpB,OAAOmX,CAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACD3O,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,OAAQ2O,CAAY,EAAA;AAClB,QAAA,OAAO,CAACA,CAAElS,CAAC,KAAK,IAAI,CAACA,CAAC,IAAMkS,CAAEnX,CAAAA,CAAC,KAAK,IAAI,CAACA,CAAC,CAAA;AAC5C,KAAA,CAAA;AAEA;;;;;;AAMC,MACDoE,OAAAA,GAKC,GALDA,SAAAA,GAAKa,CAAAA,CAAK,EAAEjF,CAAa,EAAA;AAApBiF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAYiF,GAAAA,CAAAA,CAAAA;QACtB,IAAI,CAACA,CAAC,GAAGA,CAAAA,CAAAA;QACT,IAAI,CAACjF,CAAC,GAAGA,CAAAA,CAAAA;AAET,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAvEWwjH,IAAAA,aAAAA,CAAAA,KAAAA,EAAAA,IAAAA,EAAAA;;YA6EA//B,GAAAA,EAAAA,QAAAA;;;;MAAX,SAAA,GAAA,GAAA;AACEigC,gBAAAA,SAAAA,CAAUz+G,CAAC,GAAG,CAAA,CAAA;AACdy+G,gBAAAA,SAAAA,CAAU1jH,CAAC,GAAG,CAAA,CAAA;gBAEd,OAAO0jH,SAAAA,CAAAA;AACT,aAAA;;;AAlFWF,IAAAA,OAAAA,KAAAA,CAAAA;AAmFZ,CAAA,EAAA,CAAA;AAED,IAAME,YAAY,IAAIF,KAAAA,EAAAA;;AC/FtB;AAOO,IAAMG,gBAAgB,KAAK;AAC3B,IAAMC,WAAW,OAAO;AAE/B;;;;;;;;;;;;;;AAcC,IACD,SAASC,MACP5+G,CAAAA,CAAS,EACTjF,CAAS,EACTs0F,EAAU,EACVC,EAAU,EACVuvB,WAAmB,EACnBC,WAAmB,EACnB7oB,SAAkB,mEAClB8oB,KAAoB,EAAA;IAEpB,IAAMz6F,EAAAA,GAAKtkB,IAAKqvF,EAAKwvB,GAAAA,WAAAA,CAAAA;IACrB,IAAMt6F,EAAAA,GAAKxpB,IAAKu0F,EAAKuvB,GAAAA,WAAAA,CAAAA;IACrB,IAAM/4E,EAAAA,GAAK9lC,IAAKqvF,EAAKyvB,GAAAA,WAAAA,CAAAA;IACrB,IAAM/3E,EAAAA,GAAKhsC,IAAKu0F,EAAKwvB,GAAAA,WAAAA,CAAAA;AAErB,4CACA,IAAIE,GAAAA,CAAAA;IACJ,IAAIC,GAAAA,CAAAA;AAEJ,IAAA,IAAIhpB,SAAW,EAAA;QACb+oB,GAAM1vB,GAAAA,EAAAA,CAAAA;AACN2vB,QAAAA,GAAAA,GAAM,CAAC5vB,EAAAA,CAAAA;KACF,MAAA;AACL2vB,QAAAA,GAAAA,GAAM,CAAC1vB,EAAAA,CAAAA;QACP2vB,GAAM5vB,GAAAA,EAAAA,CAAAA;AACR,KAAA;mCAGA,IAAM6vB,GAAAA,GAAM56F,EAAK06F,GAAAA,GAAAA,CAAAA;AACjB,IAAA,IAAMG,MAAM56F,EAAK06F,GAAAA,GAAAA,CAAAA;AACjB,IAAA,IAAMG,MAAMt5E,EAAKk5E,GAAAA,GAAAA,CAAAA;AACjB,IAAA,IAAMK,MAAMt4E,EAAKk4E,GAAAA,GAAAA,CAAAA;AAEjB,kDACAF,KAAAA,CAAMjjH,IAAI,CAACojH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;IAChBJ,KAAMjjH,CAAAA,IAAI,CAACsjH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;IAEhB,OAAO,CAAA,CAAA;AACT,CAAA;AAEA;;;;;;;;;;;;;;AAcC,IACD,SAAS/8G,KACPu2F,CAAAA,EAAU,EACVC,EAAU,EACV74D,EAAU,EACVC,EAAU,EACVo/E,EAAU,EACVC,EAAU,EACVR,KAAe,EACf9oB,SAAkB,EAAA;AAElB,IAAA,IAAMupB,SAASv/E,EAAK44D,GAAAA,EAAAA,CAAAA;AACpB,IAAA,IAAM4mB,SAASv/E,EAAK44D,GAAAA,EAAAA,CAAAA;AAEpB,IAAA,IAAI4mB,MAAS/gH,GAAAA,IAAAA,CAAK8kB,KAAK,CAAC+7F,MAAQC,EAAAA,MAAAA,CAAAA,CAAAA;AAChC,IAAA,IAAIE,SAAShhH,IAAK8kB,CAAAA,KAAK,CAAC67F,EAAAA,GAAKzmB,IAAI0mB,EAAKzmB,GAAAA,EAAAA,CAAAA,CAAAA;IAEtC,IAAI7C,SAAAA,IAAaypB,SAASC,MAAQ,EAAA;QAChCD,MAAU/gH,IAAAA,IAAAA,CAAKU,EAAE,GAAG,CAAA,CAAA;AACtB,KAAA,MAAO,IAAI,CAAC42F,SAAaypB,IAAAA,MAAAA,GAASC,MAAQ,EAAA;QACxCA,MAAUhhH,IAAAA,IAAAA,CAAKU,EAAE,GAAG,CAAA,CAAA;AACtB,KAAA;AAEA,IAAA,IAAIugH,UAAaF,GAAAA,MAAAA,CAAAA;AACjB,IAAA,IAAMG,YAAYF,MAASD,GAAAA,MAAAA,CAAAA;IAC3B,IAAMI,YAAAA,GAAenhH,IAAKe,CAAAA,GAAG,CAACmgH,SAAAA,CAAAA,CAAAA;AAE9B,IAAA,IAAMn4E,SAAS/oC,IAAK6D,CAAAA,IAAI,CAAC,MAACg9G,GAASA,SAAWC,MAASA,GAAAA,MAAAA,CAAAA,CAAAA;AACvD,IAAA,IAAMM,QAAW,GAAC,CAAC,KAAKD,YAAenhH,GAAAA,IAAAA,CAAK6D,IAAI,CAACklC,MAAU/oC,CAAAA,GAAAA,IAAAA,CAAKU,EAAE,IAAK,CAAA,IAAK,CAAA,CAAA;AAC5E,IAAA,IAAM2gH,WAAWH,SAAYE,GAAAA,QAAAA,CAAAA;IAE7BH,UAAcI,IAAAA,QAAAA,CAAAA;AAEd,IAAA,IAAI/pB,SAAW,EAAA;QACb8oB,KAAMjjH,CAAAA,IAAI,CAAC+8F,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QACfimB,KAAMjjH,CAAAA,IAAI,CAACmkC,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QAEf,IAAK,IAAI/lC,IAAI,CAAG0mB,EAAAA,KAAAA,GAAQ++F,YAAYzlH,CAAI4lH,GAAAA,QAAAA,EAAU5lH,CAAK0mB,EAAAA,EAAAA,KAAAA,IAASm/F,QAAU,CAAA;YACxEjB,KAAMjjH,CAAAA,IAAI,CAAC+8F,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AACfimB,YAAAA,KAAAA,CAAMjjH,IAAI,CAAC+8F,EAAOl6F,GAAAA,IAAAA,CAAKoiB,GAAG,CAACF,KAAS6mB,CAAAA,GAAAA,MAAAA,EAClCoxD,EAAOn6F,GAAAA,IAAAA,CAAKsiB,GAAG,CAACJ,KAAS6mB,CAAAA,GAAAA,MAAAA,CAAAA,CAAAA;AAC7B,SAAA;QAEAq3E,KAAMjjH,CAAAA,IAAI,CAAC+8F,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QACfimB,KAAMjjH,CAAAA,IAAI,CAACwjH,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;KACV,MAAA;QACLR,KAAMjjH,CAAAA,IAAI,CAACmkC,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QACf6+E,KAAMjjH,CAAAA,IAAI,CAAC+8F,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QAEf,IAAK,IAAI3+F,KAAI,CAAG0mB,EAAAA,MAAAA,GAAQ++F,YAAYzlH,EAAI4lH,GAAAA,QAAAA,EAAU5lH,EAAK0mB,EAAAA,EAAAA,MAAAA,IAASm/F,QAAU,CAAA;AACxEjB,YAAAA,KAAAA,CAAMjjH,IAAI,CAAC+8F,EAAOl6F,GAAAA,IAAAA,CAAKoiB,GAAG,CAACF,MAAS6mB,CAAAA,GAAAA,MAAAA,EAClCoxD,EAAOn6F,GAAAA,IAAAA,CAAKsiB,GAAG,CAACJ,MAAS6mB,CAAAA,GAAAA,MAAAA,CAAAA,CAAAA;YAC3Bq3E,KAAMjjH,CAAAA,IAAI,CAAC+8F,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AACjB,SAAA;QAEAimB,KAAMjjH,CAAAA,IAAI,CAACwjH,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;QACfR,KAAMjjH,CAAAA,IAAI,CAAC+8F,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,OAAOinB,QAAW,GAAA,CAAA,CAAA;AACpB,CAAA;AAEA,SAASE,uBAAwB72E,MAAgB,EAAA;IAC/C,IAAM/jC,CAAAA,GAAI+jC,OAAOxvC,MAAM,CAAA;AAEvB,IAAA,IAAIyL,IAAI,CAAG,EAAA;QACT,OAAO,CAAA,CAAA;AACT,KAAA;AAEA,IAAA,IAAIi2E,IAAO,GAAA,CAAA,CAAA;AAEX,IAAA,IAAK,IAAInhF,CAAI,GAAA,CAAA,EAAGsjD,KAAKrU,MAAM,CAAC/jC,IAAI,CAAE,CAAA,EAAEm4C,EAAKpU,GAAAA,MAAM,CAAC/jC,CAAI,GAAA,CAAA,CAAE,EAAElL,CAAIkL,GAAAA,CAAAA,EAAGlL,KAAK,CAAG,CAAA;QACrE,IAAMklC,EAAAA,GAAK+J,MAAM,CAACjvC,CAAE,CAAA,CAAA;AACpB,QAAA,IAAMmlC,EAAK8J,GAAAA,MAAM,CAACjvC,CAAAA,GAAI,CAAE,CAAA,CAAA;AAExBmhF,QAAAA,IAAAA,IAAQ,CAACj8C,EAAAA,GAAKoe,EAAC,KAAMne,KAAKke,EAAC,CAAA,CAAA;QAE3BC,EAAKpe,GAAAA,EAAAA,CAAAA;QACLme,EAAKle,GAAAA,EAAAA,CAAAA;AACP,KAAA;AAEA,IAAA,IAAIg8C,OAAO,CAAG,EAAA;AACZ,QAAA,OAAO,CAAC,CAAA,CAAA;AACV,KAAA;IAEA,OAAO,CAAA,CAAA;AACT,CAAA;AAmBA;;;;;;;;;;;IAYO,SAAS2G,SAAAA,CACd74C,MAAgB,EAChB04C,SAA2B,EAC3Bo+B,aAAsB,EACtBC,MAAe;AAGf7+B,QAAkB,EAClB8+B,eAAuB,EACvBC,eAAuB,EAEvBjiC,OAAiB,EACjBkiC,cAAsB,EAAA;;;AAItB,IAAA,IAAM98G,GAAMk7G,GAAAA,aAAAA,CAAAA;IAEZ,IAAIt1E,MAAAA,CAAOxvC,MAAM,KAAK,CAAG,EAAA;AACvB,QAAA,OAAA;AACF,KAAA;AAEA,IAAA,IAAM2mH,KAAQz+B,GAAAA,SAAAA,CAAAA;IAEd,IAAIlC,SAAAA,GAAY2gC,MAAM3gC,SAAS,CAAA;IAE/B,IAAIkC,SAAAA,CAAUlC,SAAS,KAAK,GAAK,EAAA;;AAE/B,QAAA,IAAI4gC,cAAcP,sBAAuB72E,CAAAA,MAAAA,CAAAA,CAAAA;AAEzC,QAAA,IAAI82E,aAAe,EAAA;AAAEM,YAAAA,WAAAA,IAAe,CAAC,CAAA,CAAA;AAAG,SAAA;AAExC5gC,QAAAA,SAAAA,GAAY,CAAEA,SAAY,GAAA,GAAE,IAAK4gC,WAAe,GAAA,GAAA,CAAA;AAClD,KAAA;;IAGA,IAAMC,UAAAA,GAAa,IAAIlC,KAAMn1E,CAAAA,MAAM,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA;AACjD,IAAA,IAAM2Q,SAAY,GAAA,IAAIwkE,KAAMn1E,CAAAA,MAAM,CAACA,MAAOxvC,CAAAA,MAAM,GAAG,CAAA,CAAE,EAAEwvC,MAAM,CAACA,MAAOxvC,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AAChF,IAAA,IAAM8mH,WAAcP,GAAAA,MAAAA,CAAAA;AACpB,IAAA,IAAMQ,aAAahiH,IAAKe,CAAAA,GAAG,CAAC+gH,UAAWzgH,CAAAA,CAAC,GAAG+5C,SAAU/5C,CAAAA,CAAC,IAAIwD,GACrD7E,IAAAA,IAAAA,CAAKe,GAAG,CAAC+gH,UAAAA,CAAW1lH,CAAC,GAAGg/C,SAAAA,CAAUh/C,CAAC,CAAIyI,GAAAA,GAAAA,CAAAA;;AAG5C,IAAA,IAAIk9G,WAAa,EAAA;;AAEft3E,QAAAA,MAAAA,GAASA,OAAOvsC,KAAK,EAAA,CAAA;AAErB,QAAA,IAAI8jH,UAAY,EAAA;AACdv3E,YAAAA,MAAAA,CAAOvtC,GAAG,EAAA,CAAA;AACVutC,YAAAA,MAAAA,CAAOvtC,GAAG,EAAA,CAAA;AACVk+C,YAAAA,SAAAA,CAAU56C,GAAG,CAACiqC,MAAM,CAACA,OAAOxvC,MAAM,GAAG,CAAE,CAAA,EAAEwvC,MAAM,CAACA,MAAOxvC,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA,CAAA;AACpE,SAAA;QAEA,IAAMgnH,SAAAA,GAAY,CAACH,UAAAA,CAAWzgH,CAAC,GAAG+5C,SAAAA,CAAU/5C,CAAAA,IAAK,GAAA,CAAA;QACjD,IAAM6gH,SAAAA,GAAY,CAAC9mE,SAAAA,CAAUh/C,CAAC,GAAG0lH,UAAAA,CAAW1lH,CAAAA,IAAK,GAAA,CAAA;QAEjDquC,MAAO8X,CAAAA,OAAO,CAAC0/D,SAAWC,EAAAA,SAAAA,CAAAA,CAAAA;QAC1Bz3E,MAAOttC,CAAAA,IAAI,CAAC8kH,SAAWC,EAAAA,SAAAA,CAAAA,CAAAA;AACzB,KAAA;AAEA,IAAA,IAAM9B,KAAQz9B,GAAAA,QAAAA,CAAAA;IAEd,IAAM1nF,MAAAA,GAASwvC,MAAOxvC,CAAAA,MAAM,GAAG,CAAA,CAAA;IAC/B,IAAImnF,UAAAA,GAAa33C,OAAOxvC,MAAM,CAAA;IAC9B,IAAM+1F,UAAAA,GAAaovB,KAAMnlH,CAAAA,MAAM,GAAG,CAAA,CAAA;;IAGlC,IAAMiS,KAAAA,GAAQ00G,KAAM10G,CAAAA,KAAK,GAAG,CAAA,CAAA;AAC5B,IAAA,IAAMi1G,eAAej1G,KAAQA,GAAAA,KAAAA,CAAAA;AAC7B,IAAA,IAAMk1G,iBAAoBR,GAAAA,KAAAA,CAAMxgC,UAAU,GAAGwgC,MAAMxgC,UAAU,CAAA;AAE7D,oEACA,IAAIthC,EAAKrV,GAAAA,MAAM,CAAC,CAAE,CAAA,CAAA;IAClB,IAAIsV,EAAAA,GAAKtV,MAAM,CAAC,CAAE,CAAA,CAAA;IAClB,IAAIqU,EAAAA,GAAKrU,MAAM,CAAC,CAAE,CAAA,CAAA;IAClB,IAAIoU,EAAAA,GAAKpU,MAAM,CAAC,CAAE,CAAA,CAAA;AAClB,IAAA,IAAI/J,EAAK,GAAA,CAAA,CAAA;AACT,IAAA,IAAIC,EAAK,GAAA,CAAA,CAAA;AAET,mEACA,IAAI0hF,KAAAA,GAAQ,EAAEtiE,KAAKlB,EAAC,CAAA,CAAA;AACpB,IAAA,IAAIyjE,QAAQxiE,EAAKhB,GAAAA,EAAAA,CAAAA;AACjB,IAAA,IAAIyjE,MAAS,GAAA,CAAA,CAAA;AACb,IAAA,IAAIC,MAAS,GAAA,CAAA,CAAA;;IAGb,IAAIpkE,IAAAA,GAAOp+C,KAAK6D,IAAI,CAAC,KAASw+G,GAAAA,KAAAA,GAAUC,QAAQA,KAAUzhH,CAAAA,GAAAA,aAAAA,CAAAA;IAE1DwhH,KAASjkE,IAAAA,IAAAA,CAAAA;IACTkkE,KAASlkE,IAAAA,IAAAA,CAAAA;IACTikE,KAASn1G,IAAAA,KAAAA,CAAAA;IACTo1G,KAASp1G,IAAAA,KAAAA,CAAAA;IAET,IAAMu1G,KAAAA,GAAQxhC;AACd,IAAA,IAAMi/B,WAAc,GAAC,CAAA,CAAA,GAAIuC,KAAI,IAAK,CAAA,CAAA;AAClC,IAAA,IAAMtC,cAAcsC,KAAQ,GAAA,CAAA,CAAA;AAE5B,IAAA,IAAI,CAACV,WAAa,EAAA;AAChB,QAAA,IAAIH,MAAM13C,GAAG,KAAK/qD,OAAY,CAACujG,KAAK,EAAE;AACpCtgC,YAAAA,UAAAA,IAAcz+E,KACZm8C,CAAAA,EAAAA,GAAMuiE,KAASnC,IAAAA,WAAcC,GAAAA,WAAU,CAAK,GAAA,GAAA,EAC5CpgE,EAAMuiE,GAAAA,KAAAA,IAASpC,WAAAA,GAAcC,WAAU,CAAA,GAAK,GAC5CrgE,EAAAA,EAAAA,GAAMuiE,KAAQnC,GAAAA,WAAAA,EACdngE,EAAMuiE,GAAAA,KAAAA,GAAQpC,WACdpgE,EAAAA,EAAAA,GAAMuiE,KAAQlC,GAAAA,WAAAA,EACdpgE,EAAMuiE,GAAAA,KAAAA,GAAQnC,WACdC,EAAAA,KAAAA,EACA,IACE,CAAA,GAAA,CAAA,CAAA;SACC,MAAA,IAAIwB,MAAM13C,GAAG,KAAK/qD,OAAY,CAACwjG,MAAM,EAAE;AAC5CvgC,YAAAA,UAAAA,IAAc69B,OAAOngE,EAAIC,EAAAA,EAAAA,EAAIsiE,OAAOC,KAAOpC,EAAAA,WAAAA,EAAaC,aAAa,IAAMC,EAAAA,KAAAA,CAAAA,CAAAA;AAC7E,SAAA;AACF,KAAA;;AAGAA,IAAAA,KAAAA,CAAMjjH,IAAI,CACR2iD,EAAAA,GAAMuiE,KAAQnC,GAAAA,WAAAA,EACdngE,KAAMuiE,KAAQpC,GAAAA,WAAAA,CAAAA,CAAAA;AAChBE,IAAAA,KAAAA,CAAMjjH,IAAI,CACR2iD,EAAAA,GAAMuiE,KAAQlC,GAAAA,WAAAA,EACdpgE,KAAMuiE,KAAQnC,GAAAA,WAAAA,CAAAA,CAAAA;AAEhB,IAAA,IAAK,IAAI3kH,CAAI,GAAA,CAAA,EAAGA,IAAIP,MAAS,GAAA,CAAA,EAAG,EAAEO,CAAG,CAAA;AACnCskD,QAAAA,EAAAA,GAAKrV,MAAM,CAAEjvC,CAAAA,CAAI,GAAA,CAAA,IAAK,CAAE,CAAA,CAAA;QACxBukD,EAAKtV,GAAAA,MAAM,CAAC,CAAEjvC,IAAI,CAAA,IAAK,IAAK,CAAE,CAAA,CAAA;QAE9BsjD,EAAKrU,GAAAA,MAAM,CAACjvC,CAAAA,GAAI,CAAE,CAAA,CAAA;AAClBqjD,QAAAA,EAAAA,GAAKpU,MAAM,CAAC,CAACjvC,GAAI,IAAK,CAAE,CAAA,CAAA;AAExBklC,QAAAA,EAAAA,GAAK+J,MAAM,CAAEjvC,CAAAA,CAAI,GAAA,CAAA,IAAK,CAAE,CAAA,CAAA;QACxBmlC,EAAK8J,GAAAA,MAAM,CAAC,CAAEjvC,IAAI,CAAA,IAAK,IAAK,CAAE,CAAA,CAAA;QAE9B6mH,KAAQ,GAAA,EAAEtiE,EAAAA,GAAKlB,EAAC,CAAA,CAAA;AAChByjE,QAAAA,KAAAA,GAAQxiE,EAAKhB,GAAAA,EAAAA,CAAAA;AAEbV,QAAAA,IAAAA,GAAOp+C,KAAK6D,IAAI,CAAC,KAASw+G,GAAAA,KAAAA,GAAUC,QAAQA,KAAUzhH,CAAAA,GAAAA,aAAAA,CAAAA;QACtDwhH,KAASjkE,IAAAA,IAAAA,CAAAA;QACTkkE,KAASlkE,IAAAA,IAAAA,CAAAA;QACTikE,KAASn1G,IAAAA,KAAAA,CAAAA;QACTo1G,KAASp1G,IAAAA,KAAAA,CAAAA;QAETq1G,MAAS,GAAA,EAAE1jE,EAAAA,GAAKle,EAAC,CAAA,CAAA;AACjB6hF,QAAAA,MAAAA,GAAS1jE,EAAKpe,GAAAA,EAAAA,CAAAA;AAEd0d,QAAAA,IAAAA,GAAOp+C,KAAK6D,IAAI,CAAC,MAAU0+G,GAAAA,MAAAA,GAAWC,SAASA,MAAW3hH,CAAAA,GAAAA,aAAAA,CAAAA;QAC1D0hH,MAAUnkE,IAAAA,IAAAA,CAAAA;QACVokE,MAAUpkE,IAAAA,IAAAA,CAAAA;QACVmkE,MAAUr1G,IAAAA,KAAAA,CAAAA;QACVs1G,MAAUt1G,IAAAA,KAAAA,CAAAA;iFAGV,IAAM01G,GAAAA,GAAM9jE,EAAKgB,GAAAA,EAAAA,CAAAA;AACjB,QAAA,IAAM+iE,MAAM9iE,EAAKlB,GAAAA,EAAAA,CAAAA;AACjB,QAAA,IAAMikE,MAAMhkE,EAAKpe,GAAAA,EAAAA,CAAAA;AACjB,QAAA,IAAMqiF,MAAMpiF,EAAKke,GAAAA,EAAAA,CAAAA;AAEjB,oFACA,IAAMv6C,GAAAA,GAAM,GAACs+G,GAAME,MAAQD,GAAME,GAAAA,GAAAA,CAAAA;AACjC,uFACA,IAAMx+G,KAAAA,GAAQ,GAACs+G,GAAMC,MAAQC,GAAMH,GAAAA,GAAAA,CAAAA;AACnC,QAAA,IAAMtrB,YAAa/yF,KAAQ,GAAA,CAAA,CAAA;AAE3B,oFAEA,IAAIvE,IAAKe,CAAAA,GAAG,CAACwD,KAAAA,CAAAA,GAAS,KAAQvE,GAAAA,IAAAA,CAAKe,GAAG,CAACuD,GAAM,CAAA,EAAA;AAC3C87G,YAAAA,KAAAA,CAAMjjH,IAAI,CACR2hD,EAAAA,GAAMujE,KAAQnC,GAAAA,WAAAA,EACdrhE,KAAMyjE,KAAQpC,GAAAA,WAAAA,CAAAA,CAAAA;AAChBE,YAAAA,KAAAA,CAAMjjH,IAAI,CACR2hD,EAAAA,GAAMujE,KAAQlC,GAAAA,WAAAA,EACdthE,KAAMyjE,KAAQnC,GAAAA,WAAAA,CAAAA,CAAAA;qCAGhB,IAAI77G,GAAAA,IAAO,CAAG,EAAA;AACZ,gBAAA,IAAIs9G,MAAMv/C,IAAI,KAAKljD,QAAa,CAACujG,KAAK,EAAE;AACtCtgC,oBAAAA,UAAAA,IAAcz+E,MACZm7C,EAAID,EAAAA,EAAAA,EACJC,EAAMujE,GAAAA,KAAAA,GAAQnC,aAAcrhE,EAAMyjE,GAAAA,KAAAA,GAAQpC,WAC1CphE,EAAAA,EAAAA,GAAMyjE,SAASrC,WAAcrhE,EAAAA,EAAAA,GAAM2jE,MAAStC,GAAAA,WAAAA,EAC5CE,OAAO,KAAS,CAAA,GAAA,CAAA,CAAA;iBACb,MAAA;oBACLh+B,UAAc,IAAA,CAAA,CAAA;AAChB,iBAAA;AAEAg+B,gBAAAA,KAAAA,CAAMjjH,IAAI,CACR2hD,EAAAA,GAAMyjE,MAASpC,GAAAA,WAAAA,EACfthE,KAAM2jE,MAASrC,GAAAA,WAAAA,CAAAA,CAAAA;AACjBC,gBAAAA,KAAAA,CAAMjjH,IAAI,CACR2hD,EAAAA,GAAMyjE,MAASrC,GAAAA,WAAAA,EACfrhE,KAAM2jE,MAAStC,GAAAA,WAAAA,CAAAA,CAAAA;AACnB,aAAA;AAEA,YAAA,SAAA;AACF,SAAA;2FAGA,IAAMvkF,EAAK,GAAE,CAAA,CAAC0mF,KAAAA,GAAQviE,EAAC,KAAM,CAACwiE,QAAQzjE,EAAC,CAAA,GAAO,CAAC,CAACwjE,KAAAA,GAAQvjE,EAAC,KAAM,CAACwjE,KAAAA,GAAQviE,EAAC,CAAA,CAAA;QACzE,IAAMnkB,EAAAA,GAAK,CAAE,CAAC2mF,SAAS7hF,EAAC,KAAM,CAAC8hF,MAAAA,GAAS3jE,EAAC,CAAO,GAAC,CAAA,CAAC0jE,MAAAA,GAASzjE,EAAC,KAAM,CAAC0jE,MAAAA,GAAS7hF,EAAC,CAAA,CAAA;QAC7E,IAAMy5D,EAAAA,GAAK,CAAEwoB,MAAMhnF,EAAOknF,GAAAA,GAAAA,GAAMnnF,EAAE,IAAKp3B,KAAAA,CAAAA;QACvC,IAAM81F,EAAAA,GAAK,CAAE0oB,MAAMpnF,EAAOknF,GAAAA,GAAAA,GAAMjnF,EAAE,IAAKr3B,KAAAA,CAAAA;AACvC,QAAA,IAAMy+G,QAAQ,CAAE5oB,EAAKt7C,GAAAA,EAAC,KAAMs7C,EAAAA,GAAKt7C,EAAC,CAAA,GAAO,CAACu7C,EAAAA,GAAKx7C,EAAC,KAAMw7C,KAAKx7C,EAAC,CAAA,CAAA;gCAG5D,IAAMokE,GAAMnkE,GAAAA,EAAAA,GAAM,CAACs7C,EAAAA,GAAKt7C,EAAC,IAAKohE,WAAAA,CAAAA;AAC9B,QAAA,IAAMgD,MAAMrkE,EAAM,GAACw7C,CAAAA,EAAAA,GAAKx7C,EAAC,IAAKqhE,WAAAA,CAAAA;gCAE9B,IAAMiD,GAAMrkE,GAAAA,EAAAA,GAAM,CAACs7C,EAAAA,GAAKt7C,EAAC,IAAKqhE,WAAAA,CAAAA;AAC9B,QAAA,IAAMiD,MAAMvkE,EAAM,GAACw7C,CAAAA,EAAAA,GAAKx7C,EAAC,IAAKshE,WAAAA,CAAAA;AAE9B,wEACA,IAAMkD,sBAAyBrjH,GAAAA,IAAAA,CAAKI,GAAG,CAAEwiH,GAAMA,GAAAA,GAAAA,GAAQC,GAAMA,GAAAA,GAAAA,EAAM,GAACC,GAAMA,MAAQC,GAAMA,GAAAA,GAAAA,CAAAA,CAAAA;QACxF,IAAMO,YAAAA,GAAehsB,YAAY4oB,WAAcC,GAAAA,WAAAA,CAAAA;QAC/C,IAAMoD,uBAAAA,GAA0BF,sBAA0BC,GAAAA,YAAAA,GAAeA,YAAenB,GAAAA,YAAAA,CAAAA;AACxF,QAAA,IAAMqB,gBAAgBR,KAASO,IAAAA,uBAAAA,CAAAA;AAE/B,QAAA,IAAIC,aAAe,EAAA;YACjB,IAAI5B,KAAAA,CAAMv/C,IAAI,KAAKljD,QAAa,CAACskG,KAAK,IAAIT,KAAQb,GAAAA,YAAAA,GAAeC,iBAAmB,EAAA;gBAClF,IAAI9qB,SAAAA,gCAAyC;AAC3C8oB,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;oBAChB9C,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMujE,GAAAA,KAAAA,GAAQlC,aAActhE,EAAMyjE,GAAAA,KAAAA,GAAQnC;AACrDC,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;oBAChB9C,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMyjE,GAAAA,MAAAA,GAASpC,aAActhE,EAAM2jE,GAAAA,MAAAA,GAASrC;AACzD,iBAAA,oCAAqC;oBACnCC,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMujE,GAAAA,KAAAA,GAAQnC,aAAcrhE,EAAMyjE,GAAAA,KAAAA,GAAQpC;AACrDE,oBAAAA,KAAAA,CAAMjjH,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;oBAChBhD,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMyjE,GAAAA,MAAAA,GAASrC,aAAcrhE,EAAM2jE,GAAAA,MAAAA,GAAStC;AACvDE,oBAAAA,KAAAA,CAAMjjH,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAClB,iBAAA;gBAEAhhC,UAAc,IAAA,CAAA,CAAA;aACT,MAAA,IAAIw/B,MAAMv/C,IAAI,KAAKljD,QAAa,CAACujG,KAAK,EAAE;gBAC7C,IAAIprB,SAAAA,uBAAgC;oBAClC8oB,KAAMjjH,CAAAA,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAChB9C,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC2hD,EAAAA,GAAMujE,KAAQlC,GAAAA,WAAAA,EAActhE,KAAMyjE,KAAQnC,GAAAA,WAAAA,CAAAA,CAAAA;AAErD/9B,oBAAAA,UAAAA,IAAcz+E,MACZm7C,EAAID,EAAAA,EAAAA,EACJC,EAAMujE,GAAAA,KAAAA,GAAQlC,aAActhE,EAAMyjE,GAAAA,KAAAA,GAAQnC,WAC1CrhE,EAAAA,EAAAA,GAAMyjE,SAASpC,WAActhE,EAAAA,EAAAA,GAAM2jE,MAASrC,GAAAA,WAAAA,EAC5CC,OAAO,IACL,CAAA,GAAA,CAAA,CAAA;oBAEJA,KAAMjjH,CAAAA,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAChB9C,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC2hD,EAAAA,GAAMyjE,MAASpC,GAAAA,WAAAA,EAActhE,KAAM2jE,MAASrC,GAAAA,WAAAA,CAAAA,CAAAA;AACzD,iBAAA,0BAA2B;AACzBC,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC2hD,EAAAA,GAAMujE,KAAQnC,GAAAA,WAAAA,EAAcrhE,KAAMyjE,KAAQpC,GAAAA,WAAAA,CAAAA,CAAAA;oBACrDE,KAAMjjH,CAAAA,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAEhBhhC,oBAAAA,UAAAA,IAAcz+E,MACZm7C,EAAID,EAAAA,EAAAA,EACJC,EAAMujE,GAAAA,KAAAA,GAAQnC,aAAcrhE,EAAMyjE,GAAAA,KAAAA,GAAQpC,WAC1CphE,EAAAA,EAAAA,GAAMyjE,SAASrC,WAAcrhE,EAAAA,EAAAA,GAAM2jE,MAAStC,GAAAA,WAAAA,EAC5CE,OAAO,KACL,CAAA,GAAA,CAAA,CAAA;AAEJA,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC2hD,EAAAA,GAAMyjE,MAASrC,GAAAA,WAAAA,EAAcrhE,KAAM2jE,MAAStC,GAAAA,WAAAA,CAAAA,CAAAA;oBACvDE,KAAMjjH,CAAAA,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAClB,iBAAA;aACK,MAAA;gBACLhD,KAAMjjH,CAAAA,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;gBAChB9C,KAAMjjH,CAAAA,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAClB,aAAA;SACK,MAAA;YACLhD,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMujE,GAAAA,KAAAA,GAAQnC,aAAcrhE,EAAMyjE,GAAAA,KAAAA,GAAQpC;YACrDE,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMujE,GAAAA,KAAAA,GAAQlC,aAActhE,EAAMyjE,GAAAA,KAAAA,GAAQnC;AACrD,YAAA,IAAIyB,MAAMv/C,IAAI,KAAKljD,QAAa,CAACujG,KAAK,EAAE;gBACtC,IAAIprB,SAAAA,uBAAgC;AAClClV,oBAAAA,UAAAA,IAAcz+E,MACZm7C,EAAID,EAAAA,EAAAA,EACJC,EAAMujE,GAAAA,KAAAA,GAAQlC,aAActhE,EAAMyjE,GAAAA,KAAAA,GAAQnC,WAC1CrhE,EAAAA,EAAAA,GAAMyjE,SAASpC,WAActhE,EAAAA,EAAAA,GAAM2jE,MAASrC,GAAAA,WAAAA,EAC5CC,OAAO,IACL,CAAA,GAAA,CAAA,CAAA;AACN,iBAAA,0BAA2B;AACzBh+B,oBAAAA,UAAAA,IAAcz+E,MACZm7C,EAAID,EAAAA,EAAAA,EACJC,EAAMujE,GAAAA,KAAAA,GAAQnC,aAAcrhE,EAAMyjE,GAAAA,KAAAA,GAAQpC,WAC1CphE,EAAAA,EAAAA,GAAMyjE,SAASrC,WAAcrhE,EAAAA,EAAAA,GAAM2jE,MAAStC,GAAAA,WAAAA,EAC5CE,OAAO,KACL,CAAA,GAAA,CAAA,CAAA;AACN,iBAAA;aACK,MAAA,IAAIwB,KAAMv/C,CAAAA,IAAI,KAAKljD,QAAa,CAACgiE,KAAK,IAAI6hC,KAAQb,GAAAA,YAAAA,IAAgBC,iBAAmB,EAAA;AAC1F,gBAAA,IAAI9qB,SAAW,EAAA;AACb8oB,oBAAAA,KAAAA,CAAMjjH,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAChBhD,oBAAAA,KAAAA,CAAMjjH,IAAI,CAACgmH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;iBACX,MAAA;AACLhD,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAChB9C,oBAAAA,KAAAA,CAAMjjH,IAAI,CAAC8lH,GAAKC,EAAAA,GAAAA,CAAAA,CAAAA;AAClB,iBAAA;gBACA9gC,UAAc,IAAA,CAAA,CAAA;AAChB,aAAA;YACAg+B,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMyjE,GAAAA,MAAAA,GAASrC,aAAcrhE,EAAM2jE,GAAAA,MAAAA,GAAStC;YACvDE,KAAMjjH,CAAAA,IAAI,CAAC2hD,EAAMyjE,GAAAA,MAAAA,GAASpC,aAActhE,EAAM2jE,GAAAA,MAAAA,GAASrC;YACvD/9B,UAAc,IAAA,CAAA,CAAA;AAChB,SAAA;AACF,KAAA;AAEAtiC,IAAAA,EAAAA,GAAKrV,MAAM,CAAExvC,CAAAA,MAAS,GAAA,CAAA,IAAK,CAAE,CAAA,CAAA;IAC7B8kD,EAAKtV,GAAAA,MAAM,CAAC,CAAExvC,SAAS,CAAA,IAAK,IAAK,CAAE,CAAA,CAAA;AAEnC6jD,IAAAA,EAAAA,GAAKrU,MAAM,CAAExvC,CAAAA,MAAS,GAAA,CAAA,IAAK,CAAE,CAAA,CAAA;IAC7B4jD,EAAKpU,GAAAA,MAAM,CAAC,CAAExvC,SAAS,CAAA,IAAK,IAAK,CAAE,CAAA,CAAA;IAEnConH,KAAQ,GAAA,EAAEtiE,EAAAA,GAAKlB,EAAC,CAAA,CAAA;AAChByjE,IAAAA,KAAAA,GAAQxiE,EAAKhB,GAAAA,EAAAA,CAAAA;AAEbV,IAAAA,IAAAA,GAAOp+C,KAAK6D,IAAI,CAAC,KAASw+G,GAAAA,KAAAA,GAAUC,QAAQA,KAAUzhH,CAAAA,GAAAA,aAAAA,CAAAA;IACtDwhH,KAASjkE,IAAAA,IAAAA,CAAAA;IACTkkE,KAASlkE,IAAAA,IAAAA,CAAAA;IACTikE,KAASn1G,IAAAA,KAAAA,CAAAA;IACTo1G,KAASp1G,IAAAA,KAAAA,CAAAA;AAETkzG,IAAAA,KAAAA,CAAMjjH,IAAI,CAAC2hD,EAAAA,GAAMujE,KAAQnC,GAAAA,WAAAA,EAAcrhE,KAAMyjE,KAAQpC,GAAAA,WAAAA,CAAAA,CAAAA;AACrDE,IAAAA,KAAAA,CAAMjjH,IAAI,CAAC2hD,EAAAA,GAAMujE,KAAQlC,GAAAA,WAAAA,EAActhE,KAAMyjE,KAAQnC,GAAAA,WAAAA,CAAAA,CAAAA;AAErD,IAAA,IAAI,CAAC4B,WAAa,EAAA;AAChB,QAAA,IAAIH,MAAM13C,GAAG,KAAK/qD,OAAY,CAACujG,KAAK,EAAE;AACpCtgC,YAAAA,UAAAA,IAAcz+E,KACZm7C,CAAAA,EAAAA,GAAMujE,KAASnC,IAAAA,WAAcC,GAAAA,WAAU,CAAK,GAAA,GAAA,EAC5CthE,EAAMyjE,GAAAA,KAAAA,IAASpC,WAAAA,GAAcC,WAAU,CAAA,GAAK,GAC5CrhE,EAAAA,EAAAA,GAAMujE,KAAQnC,GAAAA,WAAAA,EACdrhE,EAAMyjE,GAAAA,KAAAA,GAAQpC,WACdphE,EAAAA,EAAAA,GAAMujE,KAAQlC,GAAAA,WAAAA,EACdthE,EAAMyjE,GAAAA,KAAAA,GAAQnC,WACdC,EAAAA,KAAAA,EACA,KACE,CAAA,GAAA,CAAA,CAAA;SACC,MAAA,IAAIwB,MAAM13C,GAAG,KAAK/qD,OAAY,CAACwjG,MAAM,EAAE;AAC5CvgC,YAAAA,UAAAA,IAAc69B,OAAOnhE,EAAID,EAAAA,EAAAA,EAAIwjE,OAAOC,KAAOpC,EAAAA,WAAAA,EAAaC,aAAa,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AAC9E,SAAA;AACF,KAAA;;AAGA,IAAA,IAAMsD,OAAO1D,QAAWA,GAAAA,QAAAA,CAAAA;;IAGxB,IAAK,IAAIxkH,KAAIw1F,UAAYx1F,EAAAA,EAAAA,GAAI4mF,aAAa4O,UAAa,GAAA,CAAA,EAAG,EAAEx1F,EAAG,CAAA;QAC7DskD,EAAKsgE,GAAAA,KAAK,CAAE5kH,EAAAA,GAAI,CAAG,CAAA,CAAA;AACnBukD,QAAAA,EAAAA,GAAKqgE,KAAK,CAAC,EAAC5kH,GAAI,IAAK,CAAE,CAAA,CAAA;AAEvBsjD,QAAAA,EAAAA,GAAKshE,KAAK,CAAE5kH,CAAAA,EAAI,GAAA,CAAA,IAAK,CAAE,CAAA,CAAA;QACvBqjD,EAAKuhE,GAAAA,KAAK,CAAC,CAAE5kH,KAAI,CAAA,IAAK,IAAK,CAAE,CAAA,CAAA;AAE7BklC,QAAAA,EAAAA,GAAK0/E,KAAK,CAAE5kH,CAAAA,EAAI,GAAA,CAAA,IAAK,CAAE,CAAA,CAAA;QACvBmlC,EAAKy/E,GAAAA,KAAK,CAAC,CAAE5kH,KAAI,CAAA,IAAK,IAAK,CAAE,CAAA,CAAA;uCAG7B,IAAIwE,IAAKe,CAAAA,GAAG,CAAC,EAAC++C,IAAMjB,EAAKle,GAAAA,EAAC,IAAOme,EAAMne,IAAAA,KAAKof,EAAC,CAAA,GAAOrf,MAAMqf,EAAAA,GAAKlB,EAAC,CAAA,CAAA,GAAO6kE,IAAM,EAAA;AAC3E,YAAA,SAAA;AACF,SAAA;AAEAjkC,QAAAA,OAAAA,CAAQtiF,IAAI,CAAC3B,EAAGA,EAAAA,EAAAA,GAAI,GAAGA,EAAI,GAAA,CAAA,CAAA,CAAA;AAC7B,KAAA;AACF;;ACriBA;AACA;AAEO,IAAA,cAAemoH,GAAf,SAAeA,cAAAA,GAAAA;AAuBrB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACGY,IAAI/mH,CAAAA,CAAAA;AAAE,SAASZ,CAAAA,CAAEiF,CAAC,EAACC,CAAC,EAAA;IAAE,OAAOD,CAAAA,CAAEC,CAAC,KAAGA,CAAEA,CAAAA,CAAC,IAAED,CAAEA,CAAAA,CAAC,KAAGC,CAAAA,CAAED,CAAC,CAAA;AAAA,CAAA;AAAC,SAAS2iH,CAAAA,CAAE3iH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,OAAOD,EAAEC,CAAC,GAACA,CAAEA,CAAAA,CAAC,IAAED,CAAEC,CAAAA,CAAC,KAAGA,CAAAA,CAAEA,CAAC,IAAED,CAAAA,CAAEA,CAAC,IAAEC,EAAED,CAAC,CAAA;AAAA,CAAA;AAAC,SAASpE,CAAEoE,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAIK,CAAE6F,GAAAA,CAAAA,CAAEA,CAAC,GAACD,CAAEC,CAAAA,CAAC,EAAC9D,CAAAA,GAAEpC,CAAEkG,CAAAA,CAAC,GAACA,CAAAA,CAAEA,CAAC,CAAA;AAAC,IAAA,OAAO,IAAE7F,CAAE+B,GAAAA,CAAAA,GAAE/B,IAAE+B,CAAE8D,GAAAA,CAAAA,CAAED,CAAC,GAACA,CAAAA,CAAEA,CAAC,GAAC5F,CAAAA,IAAGA,CAAE+B,GAAAA,CAAAA,KAAI6D,CAAAA,CAAEA,CAAC,GAACjG,CAAAA,CAAEiG,CAAAA,IAAGC,CAAED,CAAAA,CAAC,GAACjG,CAAEiG,CAAAA,CAAC,GAAC7D,CAAG/B,IAAAA,IAAE+B,CAAAA,CAAAA,IAAIpC,CAAEiG,CAAAA,CAAC,GAACA,CAAEA,CAAAA,CAAC,CAAE,GAAA,CAAA,CAAA;AAAC,CAAA;AAAC,SAASI,CAAEJ,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAIK,CAAE6F,GAAAA,CAAAA,CAAEA,CAAC,GAACD,CAAEC,CAAAA,CAAC,EAAC9D,CAAAA,GAAEpC,CAAEkG,CAAAA,CAAC,GAACA,CAAAA,CAAEA,CAAC,CAAA;IAAC,OAAO,CAAA,GAAE7F,IAAE+B,CAAE,GAAC8D,CAAAA,CAAED,CAAAA,CAAC,GAACjG,CAAAA,CAAEiG,CAAAA,IAAG5F,CAAE,GAAC6F,CAAAA,CAAED,CAAAA,CAAC,GAACA,CAAEA,CAAAA,CAAC,IAAE7D,CAAE,GAAA,CAAA,CAAA;AAAC,CAAA;AAAC,SAASiI,CAAAA,CAAEpE,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,OAAOD,EAAEA,CAAC,GAACC,CAAED,CAAAA,CAAC,IAAEA,CAAEA,CAAAA,CAAC,KAAGC,CAAAA,CAAED,CAAC,IAAEA,CAAAA,CAAEC,CAAC,IAAEA,EAAEA,CAAC,CAAA;AAAA,CAAA;AAAC,SAAS2iH,EAAG5iH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAIK,CAAE6F,GAAAA,CAAAA,CAAED,CAAC,GAACA,CAAEA,CAAAA,CAAC,EAAC7D,CAAAA,GAAEpC,CAAEiG,CAAAA,CAAC,GAACC,CAAAA,CAAED,CAAC,CAAA;AAAC,IAAA,OAAO,IAAE5F,CAAE+B,GAAAA,CAAAA,GAAE/B,IAAE+B,CAAE8D,GAAAA,CAAAA,CAAEA,CAAC,GAACD,CAAAA,CAAEC,CAAC,GAAC7F,CAAAA,IAAGA,CAAE+B,GAAAA,CAAAA,KAAI6D,CAAAA,CAAEC,CAAC,GAAClG,CAAAA,CAAEkG,CAAAA,IAAGA,CAAEA,CAAAA,CAAC,GAAClG,CAAEkG,CAAAA,CAAC,GAAC9D,CAAG/B,IAAAA,IAAE+B,CAAAA,CAAAA,IAAIpC,CAAEkG,CAAAA,CAAC,GAACD,CAAEC,CAAAA,CAAC,CAAE,GAAA,CAAA,CAAA;AAAC,CAAA;AAC1d,SAAS4iH,EAAG7iH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAIK,CAAE6F,GAAAA,CAAAA,CAAED,CAAC,GAACA,CAAEA,CAAAA,CAAC,EAAC7D,CAAAA,GAAEpC,CAAEiG,CAAAA,CAAC,GAACC,CAAAA,CAAED,CAAC,CAAA;IAAC,OAAO,CAAA,GAAE5F,IAAE+B,CAAE,GAAC8D,CAAAA,CAAEA,CAAAA,CAAC,GAAClG,CAAAA,CAAEkG,CAAAA,IAAG7F,CAAE,GAAC6F,CAAAA,CAAEA,CAAAA,CAAC,GAACD,CAAEC,CAAAA,CAAC,IAAE9D,CAAE,GAAA,CAAA,CAAA;AAAC,CAAA;AAAC,SAAS2mH,GAAG9iH,CAAC,EAAA;AAAE,IAAA,OAAO2iH,EAAE3iH,CAAEC,CAAAA,CAAC,CAACD,CAAC,EAACA,EAAEA,CAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAAS+iH,GAAG/iH,CAAC,EAAA;AAAE,IAAA,OAAO2iH,EAAE3iH,CAAEA,CAAAA,CAAC,EAACA,CAAEC,CAAAA,CAAC,CAACD,CAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAAS+H,EAAE/H,CAAC,EAACC,CAAC,EAAClG,CAAC,EAACK,CAAC,EAAA;IAAE4F,CAAE,GAAA,CAAA,GAAEA,IAAE,CAAEA,GAAAA,CAAAA,CAAAA;IAAEjG,CAAE,GAAA,CAAA,GAAEA,IAAE,CAAEA,GAAAA,CAAAA,CAAAA;AAAE,IAAA,OAAOiG,CAAGjG,IAAAA,CAAAA,GAAE,CAAIA,KAAAA,CAAAA,GAAE,CAACkG,CAAE7F,GAAAA,CAAAA,IAAG,CAAA,GAAE6F,CAAED,GAAAA,CAAAA,IAAGA,CAAAA,GAAEjG,CAAAA,CAAAA,IAAIK,CAAAA,GAAE6F,CAAAA,CAAAA,GAAG7F,CAAEL,GAAAA,CAAAA,IAAGiG,CAAAA,GAAEjG,CAAAA,CAAAA,IAAIkG,CAAAA,GAAE7F,CAAAA,CAAAA,CAAAA;AAAE,CAAA;AAAE,SAAS4oH,GAAGhjH,CAAC,EAAA;IAAE,IAAIC,CAAAA,GAAE6H,CAAE9H,CAAAA,CAAAA,CAAEC,CAAC,CAAA,CAAA;IAAEg5C,CAAEh5C,CAAAA,CAAAA,EAAED,EAAEjG,CAAC,CAAA,CAAA;AAAEk/C,IAAAA,CAAAA,CAAEh5C,CAAEA,CAAAA,CAAC,EAACD,CAAAA,CAAEjG,CAAC,CAAA,CAAA;IAAEkpH,CAAEhjH,CAAAA,CAAAA,EAAED,EAAEA,CAAC,CAAA,CAAA;IAAE,OAAOC,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASijH,CAAAA,CAAEljH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,CAAE,GAAA,CAAC,CAAEK,EAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;AAAE4F,IAAAA,CAAAA,KAAIC,CAAIA,KAAAA,CAAED,CAAAA,CAAC,KAAGA,CAAEA,CAAAA,CAAC,KAAG5F,CAAE,GAAA,CAAC,CAAE+oH,EAAAA,CAAAA,CAAEljH,EAAED,CAAC,EAACA,CAAEA,CAAAA,CAAC,CAAA,CAAA,EAAGC,CAAE7F,CAAAA,CAAC,KAAG4F,CAAE5F,CAAAA,CAAC,KAAGL,CAAE,GAAA,CAAC,CAAE8N,EAAAA,CAAAA,CAAE5H,EAAE7F,CAAC,EAAC4F,CAAE5F,CAAAA,CAAC,CAAA,CAAA,EAAGgpH,CAAEnjH,CAAAA,CAAAA,EAAED,IAAG5F,CAAI6+C,KAAAA,CAAEh5C,CAAAA,CAAAA,EAAED,CAAEA,CAAAA,CAAC,CAAEA,EAAAA,CAAAA,CAAEA,CAAC,CAACjG,CAAC,GAACiG,CAAAA,CAAGjG,EAAAA,CAAAA,KAAIkpH,CAAAA,CAAEhjH,GAAED,CAAE5F,CAAAA,CAAC,CAAE4F,EAAAA,CAAAA,CAAE5F,CAAC,CAAC4F,CAAC,GAACA,CAAAA,CAAC,CAAA,CAAA;AAAE,CAAA;AAAC,SAASqjH,EAAErjH,CAAC,EAAA;AAAE,IAAA,IAAIC,CAAED,GAAAA,CAAAA,CAAEC,CAAC,EAAClG,IAAE,CAAC,CAAA,CAAA;AAAEiG,IAAAA,CAAAA,CAAE5F,CAAC,KAAG4F,CAAAA,CAAEC,CAAC,CAAC7F,CAAC,KAAGL,CAAAA,GAAE,CAAC,CAAE8N,EAAAA,CAAAA,CAAE7H,EAAE5F,CAAC,EAAC4F,EAAEC,CAAC,CAAC7F,CAAC,CAAA,CAAA,CAAA;AAAG4F,IAAAA,CAAAA,CAAEjG,CAAC,KAAGiG,CAAEmjH,GAAAA,CAAAA,CAAEnjH,EAAEA,CAAC,EAAC,IAAOA,CAAAA,IAAAA,EAAEC,CAAC,CAAC7F,CAAC,CAAC4F,CAAC,GAACsjH,CAAAA,CAAEtjH,CAAGA,CAAAA,EAAAA,CAAAA,CAAEA,CAAC,CAACjG,CAAC,GAACiG,CAAAA,CAAEjG,CAAC,EAACqpH,CAAAA,CAAEpjH,CAAEsjH,EAAAA,CAAAA,CAAEtjH,KAAIjG,CAAGkpH,IAAAA,CAAAA,CAAEjjH,CAAEA,EAAAA,CAAAA,CAAE5F,CAAC,CAAA,CAAA,CAAA;AAAG6F,IAAAA,CAAAA,CAAElG,CAAC,KAAGkG,CAAGkjH,IAAAA,EAAEljH,CAAED,CAAAA,CAAC,EAAC,IAAA,CAAA,EAAM6H,EAAE5H,CAAE7F,CAAAA,CAAC,EAAC,IAAA,CAAI,KAAI4F,CAAAA,CAAE5F,CAAC,CAAC4F,CAAC,GAACsjH,CAAErjH,CAAAA,CAAAA,CAAAA,EAAGA,EAAED,CAAC,CAACjG,CAAC,GAACkG,EAAElG,CAAC,EAACqpH,CAAEnjH,CAAAA,CAAAA,EAAEqjH,EAAErjH,CAAE,CAAA,CAAA,CAAA,CAAA;IAAGsjH,EAAGvjH,CAAAA,CAAAA,CAAAA,CAAAA;AAAE,CAAA;AAC1pB,SAASwjH,EAAExjH,CAAC,EAAA;AAAE,IAAA,IAAIC,CAAE6H,GAAAA,CAAAA,CAAE9H,CAAGjG,CAAAA,EAAAA,CAAAA,GAAEkG,EAAEA,CAAC,CAAA;IAACmjH,CAAEnjH,CAAAA,CAAAA,EAAED,EAAE7D,CAAC,CAAA,CAAA;AAAE8D,IAAAA,CAAAA,CAAED,CAAC,GAACA,CAAEC,CAAAA,CAAC,CAACD,CAAC,CAAA;IAACi5C,CAAEl/C,CAAAA,CAAAA,EAAEkG,EAAED,CAAC,CAAA,CAAA;AAAEC,IAAAA,CAAAA,CAAE7F,CAAC,GAACL,CAAAA,CAAEK,CAAC,GAAC4F,EAAE5F,CAAC,CAAA;AAAC6F,IAAAA,CAAAA,GAAEA,EAAEA,CAAC,CAAA;AAACmjH,IAAAA,CAAAA,CAAEpjH,CAAEC,CAAAA,CAAC,EAACqjH,CAAAA,CAAEtjH,EAAEC,CAAC,CAAA,CAAA,CAAA;IAAGmjH,CAAEpjH,CAAAA,CAAAA,CAAEC,CAAC,EAACA,CAAAA,CAAAA,CAAAA;AAAGD,IAAAA,CAAAA,CAAEC,CAAC,CAACD,CAAC,GAACC,EAAED,CAAC,CAAA;AAACC,IAAAA,CAAAA,CAAEA,CAAC,CAACD,CAAC,CAACjG,CAAC,GAACkG,EAAEA,CAAC,CAAA;AAACA,IAAAA,CAAAA,CAAEA,CAAC,CAAC7F,CAAC,GAAC4F,CAAEC,CAAAA,CAAC,CAAC7F,CAAC,CAAA;IAAC6F,CAAE/E,CAAAA,CAAC,GAAC8E,CAAAA,CAAE9E,CAAC,CAAA;AAAC+E,IAAAA,CAAAA,CAAEA,CAAC,CAAC/E,CAAC,GAAC8E,CAAEC,CAAAA,CAAC,CAAC/E,CAAC,CAAA;IAAC,OAAO+E,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASwjH,CAAAA,CAAEzjH,CAAC,EAACC,CAAC,EAAA;IAAE,IAAIlG,CAAAA,GAAE,CAAC,CAAEK,EAAAA,CAAAA,GAAE0N,EAAE9H,CAAG7D,CAAAA,EAAAA,CAAAA,GAAE/B,EAAE6F,CAAC,CAAA;AAACA,IAAAA,CAAAA,CAAE7F,CAAC,KAAG4F,CAAE5F,CAAAA,CAAC,KAAGL,CAAAA,GAAE,CAAC,CAAA,EAAE8N,EAAE5H,CAAE7F,CAAAA,CAAC,EAAC4F,CAAAA,CAAE5F,CAAC,CAAA,CAAA,CAAA;IAAGgpH,CAAEhpH,CAAAA,CAAAA,EAAE4F,EAAE7D,CAAC,CAAA,CAAA;AAAEinH,IAAAA,CAAAA,CAAEjnH,CAAE8D,EAAAA,CAAAA,CAAAA,CAAAA;AAAG7F,IAAAA,CAAAA,CAAE4F,CAAC,GAACA,CAAEC,CAAAA,CAAC,CAACD,CAAC,CAAA;IAAC7D,CAAE6D,CAAAA,CAAC,GAACC,CAAAA,CAAED,CAAC,CAAA;AAAC5F,IAAAA,CAAAA,CAAEA,CAAC,GAAC+B,CAAAA,CAAE/B,CAAC,GAAC4F,EAAE5F,CAAC,CAAA;IAAC4F,CAAE5F,CAAAA,CAAC,CAAC4F,CAAC,GAAC7D,CAAAA,CAAAA;IAAEpC,CAAGkpH,IAAAA,CAAAA,CAAE7oH,CAAE4F,EAAAA,CAAAA,CAAE5F,CAAC,CAAA,CAAA;IAAE,OAAOA,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAAS0N,EAAE9H,CAAC,EAAA;IAAE,IAAIC,CAAAA,GAAE,IAAIyjH,CAAAA,EAAE3pH,CAAE,GAAA,IAAI2pH,GAAEtpH,CAAE4F,GAAAA,CAAAA,CAAEC,CAAC,CAAC2G,CAAC,CAAA;AAAC7M,IAAAA,CAAAA,CAAE6M,CAAC,GAACxM,CAAAA,CAAAA;IAAEA,CAAE6F,CAAAA,CAAC,CAAC2G,CAAC,GAAC3G,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAE2G,CAAC,GAAC5G,CAAAA,CAAAA;IAAEA,CAAEC,CAAAA,CAAC,CAAC2G,CAAC,GAAC7M,CAAAA,CAAAA;AAAEkG,IAAAA,CAAAA,CAAEA,CAAC,GAAClG,CAAAA,CAAAA;AAAEkG,IAAAA,CAAAA,CAAElG,CAAC,GAACkG,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAE9D,CAAC,GAACpC,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAEkG,CAAC,GAACA,CAAAA,CAAAA;AAAElG,IAAAA,CAAAA,CAAEA,CAAC,GAACA,CAAAA,CAAAA;IAAE,OAAOA,CAAAA,CAAEoC,CAAC,GAAC8D,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASmjH,CAAAA,CAAEpjH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,IAAEiG,CAAEjG,CAAAA,CAAC,EAACK,CAAAA,GAAE6F,EAAElG,CAAC,CAAA;IAACA,CAAEkG,CAAAA,CAAC,CAAC9D,CAAC,GAAC8D,CAAAA,CAAAA;IAAE7F,CAAE6F,CAAAA,CAAC,CAAC9D,CAAC,GAAC6D,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAEjG,CAAC,GAACK,CAAAA,CAAAA;AAAE6F,IAAAA,CAAAA,CAAElG,CAAC,GAACA,CAAAA,CAAAA;AAAC,CAAA;AAC7d,SAASk/C,CAAAA,CAAEj5C,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,IAAEkG,CAAE/E,CAAAA,CAAC,EAACd,CAAE,GAAA,IAAIupH,EAAE1jH,CAAElG,EAAAA,CAAAA,CAAAA,CAAAA;AAAGA,IAAAA,CAAAA,CAAEoC,CAAC,GAAC/B,CAAAA,CAAAA;AAAE6F,IAAAA,CAAAA,CAAE/E,CAAC,GAACd,CAAAA,CAAAA;IAAEL,CAAEK,GAAAA,CAAAA,CAAEL,CAAC,GAACiG,CAAAA,CAAAA;AAAE,IAAA,GAAGjG,EAAEiG,CAAC,GAAC5F,CAAEL,EAAAA,CAAAA,GAAEA,EAAEA,CAAC,CAAA;AAAOA,WAAAA,CAAAA,KAAIiG,CAAE,EAAA;AAAA,CAAA;AAAC,SAASijH,CAAAA,CAAEjjH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,IAAEkG,CAAE7F,CAAAA,CAAC,EAACA,CAAE,GAAA,IAAIwpH,GAAG3jH,CAAElG,EAAAA,CAAAA,CAAAA,CAAAA;AAAGA,IAAAA,CAAAA,CAAEkG,CAAC,GAAC7F,CAAAA,CAAAA;AAAE6F,IAAAA,CAAAA,CAAE7F,CAAC,GAACA,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAE4F,CAAC,GAACA,CAAAA,CAAAA;IAAE5F,CAAEL,CAAAA,CAAC,GAACkG,CAAAA,CAAElG,CAAC,CAAA;IAACA,CAAEiG,GAAAA,CAAAA,CAAAA;AAAE,IAAA,GAAGjG,EAAEK,CAAC,GAACA,CAAEL,EAAAA,CAAAA,GAAEA,EAAEoC,CAAC,CAAA;AAAOpC,WAAAA,CAAAA,KAAIiG,CAAE,EAAA;AAAA,CAAA;AAAC,SAASujH,GAAGvjH,CAAC,EAAA;IAAE,IAAIC,CAAAA,GAAED,EAAE4G,CAAC,CAAA;IAAC5G,CAAEA,GAAAA,CAAAA,CAAEC,CAAC,CAAC2G,CAAC,CAAA;IAAC3G,CAAEA,CAAAA,CAAC,CAAC2G,CAAC,GAAC5G,CAAAA,CAAAA;IAAEA,CAAEC,CAAAA,CAAC,CAAC2G,CAAC,GAAC3G,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASkjH,CAAAA,CAAEnjH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,CAAEiG,GAAAA,CAAAA,CAAEjG,CAAC,EAACK,CAAEL,GAAAA,CAAAA,CAAAA;AAAE,IAAA,GAAGK,EAAE4F,CAAC,GAACC,CAAE7F,EAAAA,CAAAA,GAAEA,EAAEL,CAAC,CAAA;AAAOK,WAAAA,CAAAA,KAAIL,CAAGA,EAAAA;AAAAA,IAAAA,CAAAA,GAAEiG,EAAE9E,CAAC,CAAA;AAACd,IAAAA,CAAAA,GAAE4F,EAAE7D,CAAC,CAAA;AAAC/B,IAAAA,CAAAA,CAAEc,CAAC,GAACnB,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAEoC,CAAC,GAAC/B,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASyN,CAAAA,CAAE7H,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,CAAEiG,GAAAA,CAAAA,CAAEA,CAAC,EAAC5F,CAAEL,GAAAA,CAAAA,CAAAA;AAAE,IAAA,GAAGK,EAAEA,CAAC,GAAC6F,CAAE7F,EAAAA,CAAAA,GAAEA,EAAE+B,CAAC,CAAA;AAAO/B,WAAAA,CAAAA,KAAIL,CAAGA,EAAAA;AAAAA,IAAAA,CAAAA,GAAEiG,EAAE5F,CAAC,CAAA;AAACA,IAAAA,CAAAA,GAAE4F,EAAEC,CAAC,CAAA;AAAC7F,IAAAA,CAAAA,CAAEA,CAAC,GAACL,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAEkG,CAAC,GAAC7F,CAAAA,CAAAA;AAAC,CAAA;AAAE,SAASypH,GAAG7jH,CAAC,EAAA;AAAE,IAAA,IAAIC,CAAE,GAAA,CAAA,CAAA;AAAElB,IAAAA,IAAAA,CAAKe,GAAG,CAACE,CAAC,CAAC,EAAE,CAAEjB,GAAAA,IAAAA,CAAKe,GAAG,CAACE,CAAC,CAAC,CAAA,CAAE,CAAIC,KAAAA,IAAE,CAAA,CAAA,CAAA;AAAGlB,IAAAA,IAAAA,CAAKe,GAAG,CAACE,CAAC,CAAC,EAAE,CAAEjB,GAAAA,IAAAA,CAAKe,GAAG,CAACE,CAAC,CAACC,CAAAA,CAAE,CAAIA,KAAAA,IAAE,CAAA,CAAA,CAAA;IAAG,OAAOA,CAAAA,CAAAA;AAAC,CAAA;AAAE,IAAI6jH,IAAE,CAAE,GAAA,KAAA,CAAA;AAAM,SAASC,CAAAA,CAAE/jH,CAAC,EAACC,CAAC,EAAA;IAAED,CAAE9E,CAAAA,CAAC,IAAE+E,CAAAA,CAAE/E,CAAC,CAAA;AAAC8E,IAAAA,CAAAA,CAAEC,CAAC,CAAC/E,CAAC,IAAE+E,CAAEA,CAAAA,CAAC,CAAC/E,CAAC,CAAA;AAAA,CAAA;AAAC,SAAS8oH,EAAGhkH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAEiG,IAAAA,CAAAA,GAAEA,EAAEA,CAAC,CAAA;AAACC,IAAAA,CAAAA,GAAEA,EAAED,CAAC,CAAA;AAACjG,IAAAA,CAAAA,GAAEA,EAAEiG,CAAC,CAAA;IAAC,IAAGC,CAAAA,CAAEA,CAAC,CAACD,CAAC,KAAGA,GAAE,OAAOjG,CAAAA,CAAEkG,CAAC,CAACD,CAAC,KAAGA,IAAE2iH,CAAE1iH,CAAAA,CAAAA,CAAED,CAAC,EAACjG,CAAEiG,CAAAA,CAAC,CAAE,GAAA,CAAA,IAAGI,CAAErG,CAAAA,CAAAA,CAAEkG,CAAC,CAACD,CAAC,EAACC,EAAED,CAAC,EAACjG,CAAEiG,CAAAA,CAAC,CAAE,GAAA,CAAA,IAAGI,CAAEH,CAAAA,CAAAA,CAAEA,CAAC,CAACD,CAAC,EAACjG,CAAEiG,CAAAA,CAAC,EAACC,CAAED,CAAAA,CAAC,CAAE,GAAA,CAAA,IAAGI,CAAErG,CAAAA,CAAAA,CAAEkG,CAAC,CAACD,CAAC,EAACA,CAAEjG,EAAAA,CAAAA,CAAEiG,CAAC,CAAA,CAAA;AAAE,IAAA,IAAGjG,EAAEkG,CAAC,CAACD,CAAC,KAAGA,GAAE,OAAO,CAAA,IAAGI,CAAEH,CAAAA,CAAAA,CAAEA,CAAC,CAACD,CAAC,EAACA,CAAAA,EAAEC,EAAED,CAAC,CAAA,CAAA;IAAEC,CAAErE,GAAAA,CAAAA,CAAEqE,EAAEA,CAAC,CAACD,CAAC,EAACA,CAAAA,EAAEC,EAAED,CAAC,CAAA,CAAA;IAAEA,CAAEpE,GAAAA,CAAAA,CAAE7B,EAAEkG,CAAC,CAACD,CAAC,EAACA,CAAAA,EAAEjG,EAAEiG,CAAC,CAAA,CAAA;AAAE,IAAA,OAAOC,CAAGD,IAAAA,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASikH,EAAEjkH,CAAC,EAAA;IAAEA,CAAEA,CAAAA,CAAC,CAACzF,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI0F,CAAAA,GAAED,EAAE7D,CAAC,CAAA;AAAC8D,IAAAA,CAAAA,CAAED,CAAC,CAACjG,CAAC,GAACkG,EAAElG,CAAC,CAAA;AAACkG,IAAAA,CAAAA,CAAElG,CAAC,CAACiG,CAAC,GAACC,EAAED,CAAC,CAAA;AAACA,IAAAA,CAAAA,CAAE7D,CAAC,GAAC,IAAA,CAAA;AAAI,CAAA;AAAC,SAAS+nH,EAAAA,CAAGlkH,CAAC,EAACC,CAAC,EAAA;AAAEojH,IAAAA,CAAAA,CAAErjH,EAAEA,CAAC,CAAA,CAAA;IAAEA,CAAEjG,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAEiG,IAAAA,CAAAA,CAAEA,CAAC,GAACC,CAAAA,CAAAA;AAAEA,IAAAA,CAAAA,CAAE1F,CAAC,GAACyF,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASmkH,GAAGnkH,CAAC,EAAA;AAAE,IAAA,IAAIC,CAAED,GAAAA,CAAAA,CAAEA,CAAC,CAACA,CAAC,CAAA;AAAC,IAAA,GAAGA,IAAE2H,CAAE3H,CAAAA,CAAAA,CAAAA,CAAAA;AAASA,WAAAA,CAAAA,CAAEA,CAAC,CAACA,CAAC,KAAGC,CAAGD,EAAAA;IAAAA,CAAEjG,CAAAA,CAAC,KAAGkG,CAAAA,GAAEwjH,EAAEW,CAAEpkH,CAAAA,CAAAA,CAAAA,CAAGA,CAAC,CAACC,CAAC,EAACD,CAAEA,CAAAA,CAAC,CAAC7D,CAAC,CAAA,EAAE+nH,GAAGlkH,CAAEC,EAAAA,CAAAA,CAAAA,EAAGD,CAAE2H,GAAAA,CAAAA,CAAE3H,CAAC,CAAA,CAAA,CAAA;IAAG,OAAOA,CAAAA,CAAAA;AAAC,CAAA;AAC79B,SAASqkH,EAAGrkH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAIK,IAAE,IAAIkqH,EAAAA,CAAAA;AAAGlqH,IAAAA,CAAAA,CAAE4F,CAAC,GAACjG,CAAAA,CAAAA;IAAEK,CAAE+B,CAAAA,CAAC,GAACooH,EAAGvkH,CAAAA,CAAAA,CAAE9E,CAAC,EAAC+E,CAAAA,CAAE9D,CAAC,EAAC/B,CAAAA,CAAAA,CAAAA;IAAG,OAAOL,CAAAA,CAAEQ,CAAC,GAACH,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASoqH,EAAAA,CAAGxkH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,OAAOD,EAAEsE,CAAC;QAAE,KAAK,MAAA;YAAO,OAAO,CAAA,MAAKrE,CAAAA,GAAE,CAAA,CAAA,CAAA;QAAG,KAAK,MAAA;AAAO,YAAA,OAAO,CAAIA,KAAAA,CAAAA,CAAAA;QAAE,KAAK,MAAA;AAAO,YAAA,OAAO,CAAEA,GAAAA,CAAAA,CAAAA;QAAE,KAAK,MAAA;AAAO,YAAA,OAAO,CAAEA,GAAAA,CAAAA,CAAAA;QAAE,KAAK,MAAA;YAAO,OAAO,CAAA,IAAGA,CAAG,IAAA,CAAC,CAAGA,IAAAA,CAAAA,CAAAA;AAAC,KAAA;AAAC,IAAA,OAAM,CAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAASwkH,GAAGzkH,CAAC,EAAA;AAAE,IAAA,IAAIC,IAAED,CAAEA,CAAAA,CAAC,EAACjG,CAAAA,GAAEkG,EAAE7F,CAAC,CAAA;IAACL,CAAEA,CAAAA,CAAC,GAACiG,CAAAA,CAAE5F,CAAC,CAAA;AAACL,IAAAA,CAAAA,CAAEiG,CAAC,GAACC,CAAAA,CAAAA;IAAEgkH,CAAEjkH,CAAAA,CAAAA,CAAAA,CAAAA;AAAE,CAAA;AAAC,SAAS0kH,CAAE1kH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;IAAEiG,CAAEC,GAAAA,CAAAA,CAAAA;AAAE,IAAA,IAAIA,CAAEA,GAAAA,CAAAA,CAAED,CAAC,EAACA,MAAIjG,CAAG,EAAA;QAACiG,CAAEjG,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE,QAAA,IAAIK,CAAEgqH,GAAAA,CAAAA,CAAEpkH,CAAG7D,CAAAA,EAAAA,CAAAA,GAAE/B,EAAE4F,CAAC,CAAA;AAAC,QAAA,IAAG7D,CAAE6D,CAAAA,CAAC,KAAGC,CAAAA,CAAED,CAAC,EAAC;YAAC,IAAG,CAAC5F,CAAEL,CAAAA,CAAC,EAAC;gBAAC0qH,EAAGzkH,CAAAA,CAAAA,CAAAA,CAAAA;AAAG,gBAAA,MAAA;AAAK,aAAA;AAAC7D,YAAAA,CAAAA,GAAEsnH,EAAExjH,CAAElG,CAAAA,CAAC,CAACkG,CAAC,EAAC9D,EAAE8D,CAAC,CAAA,CAAA;AAAEikH,YAAAA,EAAAA,CAAG9pH,CAAE+B,EAAAA,CAAAA,CAAAA,CAAAA;AAAE,SAAA;QAAC8D,CAAElG,CAAAA,CAAC,KAAGoC,CAAAA,KAAI+mH,CAAAA,CAAEI,EAAEnnH,CAAGA,CAAAA,EAAAA,CAAAA,CAAAA,EAAG+mH,CAAEjjH,CAAAA,CAAAA,EAAE9D,CAAC,CAAA,CAAA,CAAA;QAAGsoH,EAAGzkH,CAAAA,CAAAA,CAAAA,CAAAA;AAAGC,QAAAA,CAAAA,GAAE7F,EAAE4F,CAAC,CAAA;QAACA,CAAE5F,GAAAA,CAAAA,CAAAA;AAAC,KAAA;IAAC,OAAO6F,CAAAA,CAAAA;AAAC,CAAA;AAC9c,SAAS0kH,CAAAA,CAAE3kH,CAAC,EAACC,CAAC,EAAClG,CAAC,EAACK,CAAC,EAAC+B,CAAC,EAACjB,CAAC,EAAA;AAAE,IAAA,IAAIE,IAAE,CAAC,CAAA,CAAA;IAAE,GAAGipH,EAAAA,CAAGrkH,GAAEC,CAAElG,EAAAA,CAAAA,CAAEkG,CAAC,CAAElG,EAAAA,CAAAA,GAAEA,EAAEA,CAAC,CAAA;AAAOA,WAAAA,CAAAA,KAAIK,CAAG,EAAA;AAAA,IAAA,IAAI,IAAO+B,KAAAA,CAAAA,KAAIA,CAAAA,GAAEioH,CAAEnkH,CAAAA,CAAAA,CAAAA,CAAGD,CAAC,CAACC,CAAC,CAAClG,CAAAA,CAAK,GAAA;AAACK,QAAAA,CAAAA,GAAEgqH,CAAEnkH,CAAAA,CAAAA,CAAAA,CAAAA;QAAGlG,CAAEK,GAAAA,CAAAA,CAAE4F,CAAC,CAACC,CAAC,CAAA;AAAC,QAAA,IAAGlG,CAAEiG,CAAAA,CAAC,KAAG7D,CAAAA,CAAE6D,CAAC,EAAC,MAAA;QAAMjG,CAAEA,CAAAA,CAAC,KAAGoC,CAAAA,KAAI+mH,CAAAA,CAAEI,CAAEvpH,CAAAA,CAAAA,CAAAA,EAAGA,CAAGmpH,CAAAA,EAAAA,CAAAA,CAAEI,CAAEnnH,CAAAA,CAAAA,CAAAA,EAAGpC,CAAC,CAAA,CAAA,CAAA;AAAGK,QAAAA,CAAAA,CAAEc,CAAC,GAAC+E,CAAAA,CAAE/E,CAAC,GAACnB,EAAEmB,CAAC,CAAA;AAACd,QAAAA,CAAAA,CAAEA,CAAC,GAACoqH,EAAGxkH,CAAAA,CAAAA,EAAE5F,EAAEc,CAAC,CAAA,CAAA;QAAE+E,CAAEA,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;QAAE,CAAC7E,CAAAA,IAAG6oB,EAAGjkB,CAAAA,CAAAA,EAAEC,CAAK8jH,CAAAA,KAAAA,CAAEhqH,CAAAA,CAAAA,EAAEoC,CAAG8nH,CAAAA,EAAAA,CAAAA,CAAEhkH,CAAGojH,CAAAA,EAAAA,CAAAA,CAAElnH,CAAC,CAAA,CAAA,CAAA;AAAGf,QAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;QAAE6E,CAAE7F,GAAAA,CAAAA,CAAAA;QAAE+B,CAAEpC,GAAAA,CAAAA,CAAAA;AAAC,KAAA;IAACkG,CAAEA,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE/E,IAAAA,CAAAA,IAAG0pH,GAAG5kH,CAAEC,EAAAA,CAAAA,CAAAA,CAAAA;AAAE,CAAA;AAAC,SAAS4kH,EAAAA,CAAG7kH,CAAC,EAACC,CAAC,EAAClG,CAAC,EAACK,CAAC,EAAC+B,CAAC,EAAA;AAAE,IAAA,IAAIjB,CAAE,GAAA;QAAC+E,CAAE7E,CAAAA,CAAC,CAAC,CAAE,CAAA;QAAC6E,CAAE7E,CAAAA,CAAC,CAAC,CAAE,CAAA;QAAC6E,CAAE7E,CAAAA,CAAC,CAAC,CAAE,CAAA;AAAC,KAAA,CAAA;AAAC6E,IAAAA,CAAAA,CAAE7F,CAAC,GAAC,IAAA,CAAA;AAAK6F,IAAAA,CAAAA,CAAE7F,CAAC,GAAC4F,CAAEqS,CAAAA,CAAC,GAACrS,CAAEqS,CAAAA,CAAC,CAACnX,CAAAA,EAAEnB,CAAEK,EAAAA,CAAAA,EAAE4F,CAAEjG,CAAAA,CAAC,KAAG,IAAK,GAAA,IAAA,CAAA;IAAK,IAAOkG,KAAAA,CAAAA,CAAE7F,CAAC,KAAG+B,CAAAA,GAAE6D,EAAErE,CAAC,KAAGmpH,CAAAA,CAAE9kH,CAAE,EAAA,MAAA,CAAA,EAAQA,EAAErE,CAAC,GAAC,CAAC,CAAA,CAAGsE,GAAAA,CAAAA,CAAE7F,CAAC,GAACL,CAAC,CAAC,CAAA,CAAE,CAAD,CAAA;AAAE,CAAA;AACrZ,SAASgrH,EAAG/kH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAIK,CAAE,GAAA;AAAC,QAAA,IAAA;AAAK,QAAA,IAAA;AAAK,QAAA,IAAA;AAAK,QAAA,IAAA;AAAK,KAAA,CAAA;AAACA,IAAAA,CAAC,CAAC,CAAE,CAAA,GAAC6F,CAAED,CAAAA,CAAC,CAAC5F,CAAC,CAAA;AAACA,IAAAA,CAAC,CAAC,CAAE,CAAA,GAACL,CAAEiG,CAAAA,CAAC,CAAC5F,CAAC,CAAA;AAACyqH,IAAAA,EAAAA,CAAG7kH,CAAEC,EAAAA,CAAAA,CAAED,CAAC,EAAC5F,CAAE,EAAA;AAAC,QAAA,EAAA;AAAG,QAAA,EAAA;AAAG,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,KAAA,EAAC,CAAC,CAAA,CAAA,CAAA;AAAG8oH,IAAAA,CAAAA,CAAEjjH,CAAElG,EAAAA,CAAAA,CAAAA,CAAAA;AAAE,CAAA;AAAC,SAASirH,EAAAA,CAAGhlH,CAAC,EAACC,CAAC,EAAClG,CAAC,EAACK,CAAC,EAAC+B,CAAC,EAAA;AAAE,IAAA,IAAIjB,IAAE6D,IAAKe,CAAAA,GAAG,CAACG,CAAAA,CAAEA,CAAC,GAACD,CAAAA,CAAEC,CAAC,CAAA,GAAElB,KAAKe,GAAG,CAACG,EAAED,CAAC,GAACA,EAAEA,CAAC,CAAA,EAAE5E,CAAE2D,GAAAA,IAAAA,CAAKe,GAAG,CAAC/F,CAAAA,CAAEkG,CAAC,GAACD,CAAAA,CAAEC,CAAC,CAAElB,GAAAA,IAAAA,CAAKe,GAAG,CAAC/F,EAAEiG,CAAC,GAACA,EAAEA,CAAC,CAAA,EAAE4G,IAAEzK,CAAE,GAAA,CAAA,CAAA;AAAE/B,IAAAA,CAAC,CAAC+B,CAAE,CAAA,GAAC,KAAGf,CAAGF,IAAAA,IAAEE,CAAAA,CAAAA,CAAAA;AAAGhB,IAAAA,CAAC,CAACwM,CAAE,CAAA,GAAC,KAAG1L,CAAGA,IAAAA,IAAEE,CAAAA,CAAAA,CAAAA;IAAG4E,CAAE5E,CAAAA,CAAC,CAAC,CAAE,CAAA,IAAEhB,CAAC,CAAC+B,CAAAA,CAAE,GAAC8D,CAAE7E,CAAAA,CAAC,CAAC,CAAE,CAAA,GAAChB,CAAC,CAACwM,CAAAA,CAAE,GAAC7M,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;IAAC4E,CAAE5E,CAAAA,CAAC,CAAC,CAAE,CAAA,IAAEhB,CAAC,CAAC+B,CAAAA,CAAE,GAAC8D,CAAE7E,CAAAA,CAAC,CAAC,CAAE,CAAA,GAAChB,CAAC,CAACwM,CAAAA,CAAE,GAAC7M,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;IAAC4E,CAAE5E,CAAAA,CAAC,CAAC,CAAE,CAAA,IAAEhB,CAAC,CAAC+B,CAAAA,CAAE,GAAC8D,CAAE7E,CAAAA,CAAC,CAAC,CAAE,CAAA,GAAChB,CAAC,CAACwM,CAAAA,CAAE,GAAC7M,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;AAAA,CAAA;AACnV,SAAS6oB,EAAAA,CAAGjkB,CAAC,EAACC,CAAC,EAAA;IAAE,IAAIlG,CAAAA,GAAEqqH,EAAEnkH,CAAG7F,CAAAA,EAAAA,CAAAA,GAAE6F,EAAED,CAAC,EAAC7D,CAAEpC,GAAAA,CAAAA,CAAEiG,CAAC,CAAA;AAAC,IAAA,IAAG2iH,EAAEvoH,CAAE4F,CAAAA,CAAC,EAAC7D,CAAAA,CAAE6D,CAAC,CAAE,EAAA;AAAC,QAAA,IAAG,CAAEI,GAAAA,CAAAA,CAAEjE,CAAE8D,CAAAA,CAAC,CAACD,CAAC,EAAC5F,CAAE4F,CAAAA,CAAC,EAAC7D,CAAAA,CAAE6D,CAAC,CAAA,EAAE,OAAM,CAAC,CAAA,CAAA;QAAE,IAAG,CAACjF,EAAEX,CAAE4F,CAAAA,CAAC,EAAC7D,CAAE6D,CAAAA,CAAC,CAAEwjH,EAAAA,CAAAA,CAAErnH,CAAE8D,CAAAA,CAAC,GAAEijH,CAAE9oH,CAAAA,CAAAA,EAAEkpH,EAAEnnH,CAAI8D,CAAAA,CAAAA,EAAAA,CAAAA,CAAEA,CAAC,GAAClG,CAAAA,CAAEkG,CAAC,GAAC,CAAC,CAAA,CAAA;AAAO,aAAA,IAAG7F,CAAE4F,CAAAA,CAAC,KAAG7D,CAAAA,CAAE6D,CAAC,EAAC;YAAC,IAAIjG,CAAAA,GAAEiG,EAAE7D,CAAC,EAACjB,IAAEd,CAAE4F,CAAAA,CAAC,CAAC4G,CAAC,CAAA;AAAC,YAAA,IAAG,KAAG1L,CAAE,EAAA;AAAC,gBAAA,IAAInB,IAAEA,CAAEkG,CAAAA,CAAC,EAAC7E,CAAErB,GAAAA,CAAAA,CAAEK,CAAC,EAACwM,CAAAA,GAAE7M,EAAEoC,CAAC,EAACo+C,IAAExgD,CAAEA,CAAAA,CAAC,EAAC+oB,CAAEy3B,GAAAA,CAAC,CAACr/C,CAAE,CAAA,CAAA;AAACE,gBAAAA,CAAC,CAAC0nB,CAAE,CAAA,GAAC1nB,CAAC,CAACrB,CAAAA,CAAEiG,CAAC,CAAC,CAAA;AAACu6C,gBAAAA,CAAC,CAACn/C,CAAC,CAAC0nB,CAAAA,CAAE,CAAC,GAACA,CAAAA,CAAAA;AAAEA,gBAAAA,CAAAA,IAAG,EAAE/oB,CAAAA,CAAEiG,CAAC,KAAG,CAAA,IAAG8iB,CAAEmiG,GAAAA,CAAAA,CAAElrH,CAAE+oB,EAAAA,CAAAA,CAAAA,GAAG6/F,CAAE/7G,CAAAA,CAAC,CAACxL,CAAC,CAAC0nB,CAAG,IAAA,CAAA,CAAE,CAAC,EAAClc,CAAC,CAACxL,CAAC,CAAC0nB,CAAAA,CAAE,CAAC,CAAA,GAAEmiG,CAAElrH,CAAAA,CAAAA,EAAE+oB,CAAGoiG,CAAAA,GAAAA,EAAAA,CAAGnrH,GAAE+oB,CAAC,CAAA,CAAA,CAAA;gBAAGlc,CAAC,CAAC1L,EAAE,GAAC,IAAA,CAAA;AAAKq/C,gBAAAA,CAAC,CAACr/C,CAAAA,CAAE,GAACnB,CAAAA,CAAEkG,CAAC,CAAA;AAAClG,gBAAAA,CAAAA,CAAEkG,CAAC,GAAC/E,CAAAA,CAAAA;AAAC,aAAA,MAAM,IAAInB,CAAAA,CAAEA,CAAC,CAAC,EAAEmB,CAAE,GAAA,CAAA,CAAG,CAAA,GAAC,IAAK,EAAA,CAAA,GAAEnB,EAAEiG,CAAC,IAAE,IAAOjG,KAAAA,CAAAA,CAAEA,CAAC,CAACA,CAAEK,CAAAA,CAAC,CAACL,CAAAA,CAAEiG,CAAC,GAAC,CAAE,CAAA,CAAC,EAAE,EAAEjG,EAAEiG,CAAC,CAAA;YAAC+kH,EAAG/kH,CAAAA,CAAAA,EAAEsjH,EAAEnnH,CAAG/B,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAAE,SAAA;KAAM,MAAA;AAAC,QAAA,IAAG,CAAEgG,GAAAA,CAAAA,CAAEhG,CAAE6F,CAAAA,CAAC,CAACD,CAAC,EAAC7D,CAAE6D,CAAAA,CAAC,EAAC5F,CAAAA,CAAE4F,CAAC,CAAA,EAAE,OAAM,CAAC,CAAA,CAAA;AAAE2H,QAAAA,CAAAA,CAAE1H,GAAGA,CAAC,GAACA,CAAEA,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAEujH,QAAAA,CAAAA,CAAEppH,EAAE6F,CAAC,CAAA,CAAA;AAAEijH,QAAAA,CAAAA,CAAEI,EAAEnnH,CAAG/B,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAAE,KAAA;AAAC,IAAA,OAAM,CAAC,CAAA,CAAA;AAAC,CAAA;AACtd,SAAS+qH,EAAAA,CAAGnlH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,CAAEqqH,GAAAA,CAAAA,CAAEnkH,CAAG7F,CAAAA,EAAAA,CAAAA,GAAE6F,EAAED,CAAC,EAAC7D,CAAEpC,GAAAA,CAAAA,CAAEiG,CAAC,EAAC9E,CAAEd,GAAAA,CAAAA,CAAE4F,CAAC,EAAC5E,CAAAA,GAAEe,CAAE6D,CAAAA,CAAC,EAAC4G,CAAAA,GAAExM,CAAE6F,CAAAA,CAAC,CAACD,CAAC,EAACu6C,CAAEp+C,GAAAA,CAAAA,CAAE8D,CAAC,CAACD,CAAC,EAAC8iB,IAAE,IAAI6gG,CAAAA,CAAAA;IAAEvjH,CAAEwG,CAAAA,CAAAA,EAAE5G,CAAEA,CAAAA,CAAC,EAAC9E,CAAAA,CAAAA,CAAAA;IAAGkF,CAAEm6C,CAAAA,CAAAA,EAAEv6C,CAAEA,CAAAA,CAAC,EAAC5E,CAAAA,CAAAA,CAAAA;IAAG,IAAGF,CAAAA,KAAIE,KAAG2D,IAAKI,CAAAA,GAAG,CAACjE,CAAE8E,CAAAA,CAAC,EAAC4G,CAAE5G,CAAAA,CAAC,IAAEjB,IAAK+B,CAAAA,GAAG,CAAC1F,CAAE4E,CAAAA,CAAC,EAACu6C,CAAEv6C,CAAAA,CAAC,CAAE,EAAA,OAAM,CAAC,CAAA,CAAA;IAAE,IAAG2iH,CAAAA,CAAEznH,GAAEE,CAAG,CAAA,EAAA;AAAC,QAAA,IAAG,IAAEgF,CAAEm6C,CAAAA,CAAAA,EAAEr/C,CAAEE,EAAAA,CAAAA,CAAAA,EAAG,OAAM,CAAC,CAAA,CAAA;AAAC,KAAA,MAAM,IAAG,CAAEgF,GAAAA,CAAAA,CAAEwG,GAAExL,CAAEF,EAAAA,CAAAA,CAAAA,EAAG,OAAM,CAAC,CAAA,CAAA;IAAE,IAAIjB,CAAAA,GAAE2M,GAAE0L,CAAEpX,GAAAA,CAAAA,EAAEqK,IAAEg1C,CAAEp/C,EAAAA,CAAAA,GAAEC,GAAEqK,CAAEU,EAAAA,CAAAA,CAAAA;IAAEw8G,CAAE1oH,CAAAA,CAAAA,EAAEqY,OAAK7M,CAAAA,GAAExL,GAAEA,CAAEqY,GAAAA,CAAAA,EAAEA,IAAE7M,CAAAA,CAAAA,CAAAA;IAAGk9G,CAAEp9G,CAAAA,CAAAA,EAAEpK,OAAKsK,CAAAA,GAAEF,GAAEA,CAAEpK,GAAAA,CAAAA,EAAEA,IAAEsK,CAAAA,CAAAA,CAAAA;AAAGk9G,IAAAA,CAAAA,CAAE1oH,CAAEsL,EAAAA,CAAAA,CAAAA,KAAKE,CAAAA,GAAExL,GAAEA,CAAEsL,GAAAA,CAAAA,EAAEA,CAAEE,GAAAA,CAAAA,EAAEA,CAAE6M,GAAAA,CAAAA,EAAEA,CAAEnX,GAAAA,CAAAA,EAAEA,IAAEsK,CAAAA,CAAAA,CAAAA;AAAGk9G,IAAAA,CAAAA,CAAEp9G,GAAE+M,CAAGqwG,CAAAA,GAAAA,CAAAA,CAAErwG,GAAEnX,CAAIsK,CAAAA,IAAAA,IAAE7J,CAAE3B,CAAAA,CAAAA,EAAEsL,CAAE+M,EAAAA,CAAAA,CAAAA,EAAGnM,IAAEvK,CAAE2J,CAAAA,CAAAA,EAAE+M,GAAEnX,CAAG,CAAA,EAAA,CAAA,GAAEsK,IAAEU,CAAIV,KAAAA,CAAE,GAAA,CAACA,GAAEU,CAAE,GAAA,CAACA,CAAAA,CAAG2c,EAAAA,CAAAA,CAAE7iB,CAAC,GAAC8H,CAAAA,CAAEtC,GAAEF,CAAEtF,CAAAA,CAAC,EAACkG,CAAEmM,EAAAA,CAAAA,CAAErS,CAAC,CAAA,KAAIwF,CAAErF,GAAAA,CAAAA,CAAEnG,CAAEsL,EAAAA,CAAAA,EAAE+M,IAAGnM,CAAE,GAAA,CAAC/F,EAAEnG,CAAEkB,EAAAA,CAAAA,EAAEmX,IAAG,CAAE7M,GAAAA,CAAAA,GAAEU,MAAIV,CAAAA,GAAE,CAACA,CAAEU,EAAAA,CAAAA,GAAE,CAACA,CAAAA,CAAAA,EAAG2c,EAAE7iB,CAAC,GAAC8H,CAAEtC,CAAAA,CAAAA,EAAEF,EAAEtF,CAAC,EAACkG,GAAEhL,CAAE8E,CAAAA,CAAC,CAAA,CAAG6iB,GAAAA,CAAAA,CAAE7iB,CAAC,GAAEsF,CAAAA,CAAEtF,CAAAA,CAAC,GAACqS,CAAErS,CAAAA,CAAC,IAAE,CAAA,CAAA;IAAEmE,CAAEnK,CAAAA,CAAAA,EAAEqY,OAAK7M,CAAAA,GAAExL,GAAEA,CAAEqY,GAAAA,CAAAA,EAAEA,IAAE7M,CAAAA,CAAAA,CAAAA;IAAGrB,CAAEmB,CAAAA,CAAAA,EAAEpK,OACjfsK,CAAAA,GAAEF,GAAEA,CAAEpK,GAAAA,CAAAA,EAAEA,IAAEsK,CAAAA,CAAAA,CAAAA;AAAGrB,IAAAA,CAAAA,CAAEnK,CAAEsL,EAAAA,CAAAA,CAAAA,KAAKE,CAAAA,GAAExL,GAAEA,CAAEsL,GAAAA,CAAAA,EAAEA,CAAEE,GAAAA,CAAAA,EAAEA,CAAE6M,GAAAA,CAAAA,EAAEA,CAAEnX,GAAAA,CAAAA,EAAEA,IAAEsK,CAAAA,CAAAA,CAAAA;AAAGrB,IAAAA,CAAAA,CAAEmB,GAAE+M,CAAGlO,CAAAA,GAAAA,CAAAA,CAAEkO,GAAEnX,CAAIsK,CAAAA,IAAAA,IAAEm9G,EAAG3oH,CAAAA,CAAAA,EAAEsL,CAAE+M,EAAAA,CAAAA,CAAAA,EAAGnM,IAAEy8G,EAAGr9G,CAAAA,CAAAA,EAAE+M,GAAEnX,CAAG,CAAA,EAAA,CAAA,GAAEsK,IAAEU,CAAIV,KAAAA,CAAE,GAAA,CAACA,GAAEU,CAAE,GAAA,CAACA,CAAAA,CAAG2c,EAAAA,CAAAA,CAAE9iB,CAAC,GAAC+H,CAAAA,CAAEtC,GAAEF,CAAEvF,CAAAA,CAAC,EAACmG,CAAEmM,EAAAA,CAAAA,CAAEtS,CAAC,CAAA,KAAIyF,CAAEo9G,GAAAA,EAAAA,CAAG5oH,CAAEsL,EAAAA,CAAAA,EAAE+M,IAAGnM,CAAE,GAAA,CAAC08G,GAAG5oH,CAAEkB,EAAAA,CAAAA,EAAEmX,IAAG,CAAE7M,GAAAA,CAAAA,GAAEU,MAAIV,CAAAA,GAAE,CAACA,CAAEU,EAAAA,CAAAA,GAAE,CAACA,CAAAA,CAAAA,EAAG2c,EAAE9iB,CAAC,GAAC+H,CAAEtC,CAAAA,CAAAA,EAAEF,EAAEvF,CAAC,EAACmG,GAAEhL,CAAE6E,CAAAA,CAAC,CAAA,CAAG8iB,GAAAA,CAAAA,CAAE9iB,CAAC,GAAEuF,CAAAA,CAAEvF,CAAAA,CAAC,GAACsS,CAAEtS,CAAAA,CAAC,IAAE,CAAA,CAAA;IAAE2iH,CAAE7/F,CAAAA,CAAAA,EAAE9iB,EAAEA,CAAC,CAAA,KAAI8iB,CAAE7iB,CAAAA,CAAC,GAACD,CAAEA,CAAAA,CAAC,CAACC,CAAC,EAAC6iB,EAAE9iB,CAAC,GAACA,EAAEA,CAAC,CAACA,CAAC,CAADA,CAAAA;IAAG/F,CAAE0oH,GAAAA,CAAAA,CAAEznH,CAAEE,EAAAA,CAAAA,CAAAA,GAAGF,CAAEE,GAAAA,CAAAA,CAAAA;AAAEunH,IAAAA,CAAAA,CAAE1oH,CAAE6oB,EAAAA,CAAAA,CAAAA,KAAKA,CAAAA,CAAE7iB,CAAC,GAAChG,CAAAA,CAAEgG,CAAC,EAAC6iB,CAAE9iB,CAAAA,CAAC,GAAC/F,CAAAA,CAAE+F,CAAC,CAADA,CAAAA;IAAG,IAAGjF,CAAAA,CAAE+nB,CAAE5nB,EAAAA,CAAAA,CAAAA,IAAIH,CAAE+nB,CAAAA,CAAAA,EAAE1nB,IAAG,OAAO6oB,EAAAA,CAAGjkB,CAAEC,EAAAA,CAAAA,CAAAA,EAAG,CAAC,CAAA,CAAA;IAAE,IAAG,CAAClF,CAAE6L,CAAAA,CAAAA,EAAE5G,CAAEA,CAAAA,CAAC,KAAG,CAAGI,IAAAA,CAAAA,CAAEwG,CAAE5G,EAAAA,CAAAA,CAAEA,CAAC,EAAC8iB,MAAI,CAAC/nB,CAAAA,CAAEw/C,CAAEv6C,EAAAA,CAAAA,CAAEA,CAAC,CAAA,IAAG,CAAGI,IAAAA,CAAAA,CAAEm6C,CAAEv6C,EAAAA,CAAAA,CAAEA,CAAC,EAAC8iB,CAAG,CAAA,EAAA;AAAC,QAAA,IAAGy3B,MAAIv6C,CAAEA,CAAAA,CAAC,EAAC,OAAOwjH,EAAEppH,CAAE6F,CAAAA,CAAC,CAAEijH,EAAAA,CAAAA,CAAE/mH,EAAE8D,CAAC,EAAC7F,CAAG6F,CAAAA,EAAAA,CAAAA,GAAEkkH,GAAGlkH,CAAG7F,CAAAA,EAAAA,CAAAA,GAAEgqH,CAAEnkH,CAAAA,CAAAA,CAAAA,CAAGD,CAAC,EAAC0kH,CAAAA,CAAE1kH,CAAEokH,EAAAA,CAAAA,CAAEnkH,IAAGlG,CAAG4qH,CAAAA,EAAAA,CAAAA,CAAE3kH,CAAEC,EAAAA,CAAAA,EAAEqjH,EAAElpH,CAAGA,CAAAA,EAAAA,CAAAA,EAAEA,CAAE,EAAA,CAAC,IAAG,CAAC,CAAA,CAAA;QAAE,IAAGwM,CAAAA,KAAI5G,CAAEA,CAAAA,CAAC,EAAC;AAACwjH,YAAAA,CAAAA,CAAErnH,EAAE8D,CAAC,CAAA,CAAA;YAAEijH,CAAE9oH,CAAAA,CAAAA,CAAE+B,CAAC,EAACmnH,CAAEnnH,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAAIjB,YAAAA,CAAAA,GAAEnB,CAAEkG,GAAAA,CAAAA,CAAAA;AAAE7E,YAAAA,CAAAA,GAAEF,CAAE8E,CAAAA,CAAC,CAACC,CAAC,CAACD,CAAC,CAAA;AACpf,YAAA,GAAG9E,IAAEyM,CAAEzM,CAAAA,CAAAA,CAAAA,CAAAA;AAASA,mBAAAA,CAAAA,CAAE8E,CAAC,CAACC,CAAC,CAACD,CAAC,KAAG5E,CAAG6E,EAAAA;YAAAA,CAAE/E,GAAAA,CAAAA,CAAAA;AAAEA,YAAAA,CAAAA,GAAEkpH,EAAEnkH,CAAGD,CAAAA,CAAAA,CAAC,CAACC,CAAC,CAAClG,CAAC,CAAA;YAACA,CAAEiG,CAAAA,CAAC,GAACsjH,CAAEnnH,CAAAA,CAAAA,CAAAA,CAAAA;YAAGA,CAAEuoH,GAAAA,CAAAA,CAAE1kH,GAAEjG,CAAE,EAAA,IAAA,CAAA,CAAA;YAAM4qH,CAAE3kH,CAAAA,CAAAA,EAAEC,CAAE9D,EAAAA,CAAAA,CAAEpC,CAAC,EAACK,CAAE6F,CAAAA,CAAC,CAAClG,CAAC,EAACmB,CAAAA,EAAE,CAAC,CAAA,CAAA,CAAA;AAAG,YAAA,OAAM,CAAC,CAAA,CAAA;AAAC,SAAA;AAAC,QAAA,CAAA,IAAGkF,EAAEwG,CAAE5G,EAAAA,CAAAA,CAAEA,CAAC,EAAC8iB,OAAKnb,CAAAA,CAAE1H,CAAGA,CAAAA,CAAAA,CAAC,GAACA,CAAEA,CAAAA,CAAC,GAAC,CAAC,CAAA,EAAEujH,EAAEppH,CAAE6F,CAAAA,CAAC,CAAE7F,EAAAA,CAAAA,CAAE4F,CAAC,CAACC,CAAC,GAACD,CAAEA,CAAAA,CAAC,CAACC,CAAC,EAAC7F,CAAE4F,CAAAA,CAAC,CAACA,CAAC,GAACA,EAAEA,CAAC,CAACA,CAAC,CAADA,CAAAA;AAAG,QAAA,CAAA,IAAGI,EAAEm6C,CAAEv6C,EAAAA,CAAAA,CAAEA,CAAC,EAAC8iB,OAAK7iB,CAAAA,CAAEA,CAAC,GAAClG,EAAEkG,CAAC,GAAC,CAAC,CAAEujH,EAAAA,CAAAA,CAAErnH,EAAE8D,CAAC,CAAA,EAAE9D,CAAE6D,CAAAA,CAAC,CAACC,CAAC,GAACD,CAAEA,CAAAA,CAAC,CAACC,CAAC,EAAC9D,CAAE6D,CAAAA,CAAC,CAACA,CAAC,GAACA,EAAEA,CAAC,CAACA,CAAC,CAADA,CAAAA;AAAG,QAAA,OAAM,CAAC,CAAA,CAAA;AAAC,KAAA;AAACwjH,IAAAA,CAAAA,CAAEppH,EAAE6F,CAAC,CAAA,CAAA;AAAEujH,IAAAA,CAAAA,CAAErnH,EAAE8D,CAAC,CAAA,CAAA;AAAEijH,IAAAA,CAAAA,CAAEI,EAAEnnH,CAAG/B,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAAGA,IAAAA,CAAAA,CAAE4F,CAAC,CAACC,CAAC,GAAC6iB,EAAE7iB,CAAC,CAAA;AAAC7F,IAAAA,CAAAA,CAAE4F,CAAC,CAACA,CAAC,GAAC8iB,EAAE9iB,CAAC,CAAA;IAAC5F,CAAE4F,CAAAA,CAAC,CAAC4G,CAAC,GAACw+G,GAAGplH,CAAE7D,CAAAA,CAAC,EAAC/B,CAAAA,CAAE4F,CAAC,CAAA,CAAA;AAAE5F,IAAAA,CAAAA,GAAEA,EAAE4F,CAAC,CAAA;IAAC7D,CAAE,GAAA;AAAC,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,KAAA,CAAA;IAAC2mB,CAAE,GAAA;AAAC5nB,QAAAA,CAAAA,CAAEd,CAAC;AAACwM,QAAAA,CAAAA,CAAExM,CAAC;AAACgB,QAAAA,CAAAA,CAAEhB,CAAC;AAACmgD,QAAAA,CAAAA,CAAEngD,CAAC;AAAC,KAAA,CAAA;AAACA,IAAAA,CAAAA,CAAEgB,CAAC,CAAC,CAAE,CAAA,GAAChB,CAAEgB,CAAAA,CAAC,CAAC,CAAA,CAAE,GAAChB,CAAAA,CAAEgB,CAAC,CAAC,EAAE,GAAC,CAAA,CAAA;IAAE4pH,EAAG5qH,CAAAA,CAAAA,EAAEc,CAAE0L,EAAAA,CAAAA,EAAEzK,CAAE,EAAA,CAAA,CAAA,CAAA;IAAG6oH,EAAG5qH,CAAAA,CAAAA,EAAEgB,CAAEm/C,EAAAA,CAAAA,EAAEp+C,CAAE,EAAA,CAAA,CAAA,CAAA;AAAG0oH,IAAAA,EAAAA,CAAG7kH,CAAE5F,EAAAA,CAAAA,EAAE0oB,CAAE3mB,EAAAA,CAAAA,EAAE,CAAC,CAAA,CAAA,CAAA;IAAGwL,CAAE1H,CAAAA,CAAAA,CAAAA,CAAGA,CAAC,GAACA,CAAAA,CAAEA,CAAC,GAAClG,CAAAA,CAAEkG,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE,IAAA,OAAM,CAAC,CAAA,CAAA;AAAC,CAAA;AACta,SAAS2kH,EAAAA,CAAG5kH,CAAC,EAACC,CAAC,EAAA;IAAE,IAAI,IAAIlG,CAAEqqH,GAAAA,CAAAA,CAAEnkH,CAAK,CAAA,GAAA;AAAC,QAAA,MAAKlG,EAAEkG,CAAC,EAAEA,CAAElG,GAAAA,CAAAA,EAAEA,IAAEqqH,CAAErqH,CAAAA,CAAAA,CAAAA,CAAAA;AAAG,QAAA,IAAG,CAACkG,CAAEA,CAAAA,CAAC,KAAGlG,IAAEkG,CAAEA,EAAAA,CAAAA,GAAE0H,CAAE1H,CAAAA,CAAAA,CAAAA,EAAG,SAAOA,CAAG,IAAA,CAACA,CAAEA,CAAAA,CAAC,CAAE,EAAA,MAAA;QAAMA,CAAEA,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE,QAAA,IAAI7F,IAAE6F,CAAED,CAAAA,CAAC,EAAC7D,CAAEpC,GAAAA,CAAAA,CAAEiG,CAAC,EAAC9E,CAAAA,CAAAA;QAAE,IAAGA,CAAAA,GAAEd,CAAE6F,CAAAA,CAAC,CAACD,CAAC,KAAG7D,CAAAA,CAAE8D,CAAC,CAACD,CAAC,EAACA,CAAE,EAAA;YAAC9E,CAAE+E,GAAAA,CAAAA,CAAAA;AAAE,YAAA,IAAI7E,CAAEgpH,GAAAA,CAAAA,CAAElpH,CAAG0L,CAAAA,EAAAA,CAAAA,GAAE1L,CAAE8E,CAAAA,CAAC,EAACu6C,CAAAA,GAAEn/C,CAAE4E,CAAAA,CAAC,EAAC8iB,CAAAA,GAAE,KAAK,CAAA,CAAA;YAAE,IAAG6/F,CAAAA,CAAE/7G,CAAE3G,CAAAA,CAAC,CAACD,CAAC,EAACu6C,CAAEt6C,CAAAA,CAAC,CAACD,CAAC,CAAE,EAAA;AAAC,gBAAA,IAAG,CAAEI,GAAAA,CAAAA,CAAEwG,CAAE3G,CAAAA,CAAC,CAACD,CAAC,EAACu6C,CAAEt6C,CAAAA,CAAC,CAACD,CAAC,EAAC4G,CAAAA,CAAE5G,CAAC,CAAE,EAAA;AAAC9E,oBAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;oBAAE,MAAM8E,CAAAA,CAAAA;AAAC,iBAAA;AAAC2H,gBAAAA,CAAAA,CAAEzM,GAAG+E,CAAC,GAAC/E,CAAE+E,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE6iB,gBAAAA,CAAAA,GAAE0gG,CAAE58G,CAAAA,CAAAA,CAAAA,CAAAA;gBAAGs8G,CAAE3oE,CAAAA,CAAAA,CAAEt6C,CAAC,EAAC6iB,CAAAA,CAAAA,CAAAA;AAAGA,gBAAAA,CAAAA,CAAE1oB,CAAC,CAACL,CAAC,GAACmB,EAAEd,CAAC,CAAA;aAAK,MAAA;AAAC,gBAAA,IAAG,CAAEgG,GAAAA,CAAAA,CAAEm6C,CAAEt6C,CAAAA,CAAC,CAACD,CAAC,EAAC4G,CAAE3G,CAAAA,CAAC,CAACD,CAAC,EAACu6C,CAAAA,CAAEv6C,CAAC,CAAE,EAAA;AAAC9E,oBAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;oBAAE,MAAM8E,CAAAA,CAAAA;AAAC,iBAAA;AAAC9E,gBAAAA,CAAAA,CAAE+E,CAAC,GAAC7E,CAAE6E,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE6iB,gBAAAA,CAAAA,GAAE0gG,CAAEjpE,CAAAA,CAAAA,CAAAA,CAAAA;AAAG2oE,gBAAAA,CAAAA,CAAEt8G,CAAEzK,CAAAA,CAAC,EAACo+C,CAAAA,CAAEt6C,CAAC,CAAA,CAAA;AAAE6iB,gBAAAA,CAAAA,CAAE7iB,CAAC,CAAC7F,CAAC,CAACL,CAAC,GAACmB,EAAEd,CAAC,CAAA;AAAA,aAAA;AAACc,YAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;AAAC,SAAA;AAACA,QAAAA,CAAAA,KAAInB,CAAAA,CAAEA,CAAC,IAAEkqH,CAAElqH,CAAAA,CAAAA,CAAAA,EAAGspH,CAAElnH,CAAAA,CAAAA,CAAAA,EAAGpC,CAAEqqH,GAAAA,CAAAA,CAAEnkH,CAAG9D,CAAAA,EAAAA,CAAAA,GAAEpC,EAAEiG,CAAAA,IAAGC,CAAAA,CAAElG,CAAC,KAAGkqH,CAAAA,CAAEhkH,IAAGojH,CAAEjpH,CAAAA,CAAAA,CAAAA,EAAG6F,CAAE0H,GAAAA,CAAAA,CAAE5N,CAAGK,CAAAA,EAAAA,CAAAA,GAAE6F,CAAED,CAAAA,CAAC,CAAA,CAAA,CAAA;AAAG,QAAA,IAAG5F,CAAE4F,CAAAA,CAAC,KAAG7D,CAAAA,CAAE6D,CAAC,EAAC;AAAA,YAAA,IAAG5F,CAAE6F,CAAAA,CAAC,CAACD,CAAC,KAAG7D,CAAE8D,CAAAA,CAAC,CAACD,CAAC,IAAEC,CAAAA,CAAElG,CAAC,IAAEA,EAAEA,CAAC,IAAEK,CAAE6F,CAAAA,CAAC,CAACD,CAAC,KAAGA,CAAAA,CAAEA,CAAC,IAAE7D,CAAAA,CAAE8D,CAAC,CAACD,CAAC,KAAGA,CAAAA,CAAEA,CAAC,EAACikB,GAAGjkB,CACrfC,EAAAA,CAAAA,CAAAA,CAAAA;iBAAQ,IAAGklH,EAAAA,CAAGnlH,GAAEC,CAAG,CAAA,EAAA,MAAA;AAAK,SAAA;QAAC7F,CAAE4F,CAAAA,CAAC,KAAG7D,CAAAA,CAAE6D,CAAC,IAAE5F,EAAE6F,CAAC,CAACD,CAAC,KAAG7D,CAAE8D,CAAAA,CAAC,CAACD,CAAC,KAAG+jH,CAAAA,CAAE5nH,CAAE/B,EAAAA,CAAAA,CAAAA,EAAG6pH,CAAEhkH,CAAAA,CAAAA,CAAAA,EAAGojH,CAAEjpH,CAAAA,CAAAA,CAAAA,EAAG6F,CAAE0H,GAAAA,CAAAA,CAAE5N,CAAC,CAAA,CAAA,CAAA;AAAE,KAAA;AAAC,CAAA;AAC7E,SAASsrH,EAAAA,CAAGrlH,CAAC,EAACC,CAAC,EAAA;AAAED,IAAAA,CAAAA,CAAEA,CAAC,GAACC,CAAAA,CAAAA;AAAE,IAAA,IAAI,IAAIlG,CAAEkG,GAAAA,CAAAA,CAAElG,CAAC,EAAC,SAAOA,CAAEQ,CAAAA,CAAC,EAAE,IAAGR,IAAEA,CAAEA,CAAAA,CAAC,EAACA,CAAIkG,KAAAA,CAAAA,CAAElG,CAAC,EAAC;AAAC,QAAA,IAAIA,CAAEiG,GAAAA,CAAAA,EAAE5F,CAAE6F,GAAAA,CAAAA,EAAE9D,IAAE,IAAImoH,EAAAA,CAAAA;AAAGnoH,QAAAA,CAAAA,CAAE6D,CAAC,GAAC5F,CAAEL,CAAAA,CAAC,CAACkG,CAAC,CAAA;AAAC,QAAA,IAAI/E,IAAEnB,CAAEmB,CAAAA,CAAC,EAACE,CAAAA,GAAEF,EAAE8E,CAAC,CAAA;QAAC,GAAG5E,CAAAA,GAAEA,EAAE4E,CAAC,CAAA;AAAO,eAAA,IAAA,KAAO5E,CAAE6E,CAAAA,CAAC,IAAE,CAAC/E,CAAEnB,CAAAA,CAAC,CAACmB,CAAAA,CAAE+E,CAAC,EAAC9D,CAAEf,EAAAA,CAAAA,CAAE6E,CAAC,CAAG,EAAA;AAAA,QAAA,IAAI/E,CAAEE,GAAAA,CAAAA,CAAE6E,CAAC,EAAC2G,CAAEw9G,GAAAA,CAAAA,CAAElpH,CAAGiB,CAAAA,EAAAA,CAAAA,GAAEjB,CAAE8E,CAAAA,CAAC,EAAC5E,CAAAA,GAAEwL,EAAE5G,CAAC,CAAA;QAAC,IAAG,CAAA,KAAII,CAAEjE,CAAAA,CAAAA,CAAE8D,CAAC,CAACD,CAAC,EAAC5F,CAAAA,EAAE+B,CAAE6D,CAAAA,CAAC,CAAE7D,EAAAA,CAAAA,GAAEjB,EAAE8E,CAAC,EAACjF,CAAEoB,CAAAA,CAAAA,CAAE6D,CAAC,EAAC5F,MAAIW,CAAEoB,CAAAA,CAAAA,CAAE8D,CAAC,CAACD,CAAC,EAAC5F,OAAKopH,CAAAA,CAAErnH,CAAE8D,CAAAA,CAAC,CAAE/E,EAAAA,CAAAA,CAAEnB,CAAC,KAAGspH,CAAElnH,CAAAA,CAAAA,CAAEpC,CAAC,CAAA,EAAEmB,EAAEnB,CAAC,GAAC,CAAC,CAAA,CAAGmpH,EAAAA,CAAAA,CAAE9oH,CAAEL,CAAAA,CAAC,EAACoC,CAAAA,CAAAA,EAAGkpH,EAAGtrH,CAAAA,CAAAA,EAAEK,CAAC,CAAA,CAAA,CAAA;AAAO,aAAA;AAAC,YAAA,IAAImgD,CAAEooE,GAAAA,CAAAA,CAAEvnH,CAAE6E,CAAAA,CAAC,CAACD,CAAC,EAAC7D,CAAE8D,CAAAA,CAAC,CAACD,CAAC,CAAA,GAAE9E,CAAE0L,GAAAA,CAAAA,EAAEA,IAAE,KAAK,CAAA,CAAA;AAAE1L,YAAAA,CAAAA,CAAEd,CAAC,IAAEmgD,CAAAA,CAAExgD,CAAC,IAAEwgD,CAAIr/C,KAAAA,CAAAA,GAAE0L,CAAE68G,GAAAA,CAAAA,CAAErpH,EAAEL,CAAC,CAACkG,CAAC,EAAC9D,CAAAA,CAAEA,CAAC,CAAEyK,GAAAA,CAAAA,GAAE68G,CAAEroH,CAAAA,CAAAA,CAAE6E,CAAC,CAAClG,CAAC,CAACkG,CAAC,EAAC7F,CAAEL,CAAAA,CAAC,CAAEkG,CAAAA,CAAC,EAACs6C,CAAExgD,CAAAA,CAAC,GAACmqH,EAAG3pE,CAAAA,CAAAA,EAAE3zC,MAAIzK,CAAAA,GAAEpC,CAAEmB,EAAAA,CAAAA,GAAEmpH,GAAGtqH,CAAEmB,EAAAA,CAAAA,EAAE0L,CAAG1L,CAAAA,EAAAA,CAAAA,CAAEA,CAAC,GAACyM,CAAAA,CAAEzM,CAAGA,CAAAA,CAAAA,CAAC,GAACA,CAAE8E,CAAAA,CAAC,CAAC9E,CAAC,EAACA,EAAEd,CAAC,GAACoqH,EAAGroH,CAAAA,CAAAA,EAAEjB,EAAEA,CAAC,CAAA,GAAGmqH,EAAGtrH,CAAAA,CAAAA,EAAEK,EAAC,IAAGuqH,CAAAA,CAAE5qH,CAAEmB,EAAAA,CAAAA,EAAEd,EAAEL,CAAC,EAACK,EAAEL,CAAC,EAAC,MAAK,CAAC,CAAA,CAAA,CAAA;AAAE,SAAA;AAAC,QAAA,OAAA;AAAM,KAAA;IAACA,CAAEoqH,GAAAA,EAAAA,CAAGpqH,EAAEQ,CAAC,CAAA,CAAA;AAAE4B,IAAAA,CAAAA,GAAEioH,CAAErqH,CAAAA,CAAAA,CAAAA,CAAAA;AAAGmB,IAAAA,CAAAA,GAAEiB,EAAE6D,CAAC,CAAA;IAAC7D,CAAEuoH,GAAAA,CAAAA,CAAE1kH,GACpf7D,CAAE,EAAA,IAAA,CAAA,CAAA;IAAM,IAAGA,CAAAA,CAAEpC,CAAC,KAAGmB,CAAE,EAAA;AAAC,QAAA,IAAIA,IAAEiB,CAAEA,EAAAA,CAAAA,GAAEjB,EAAEnB,CAAC,EAACqB,IAAEgpH,CAAErqH,CAAAA,CAAAA,CAAAA,EAAG6M,CAAE7M,GAAAA,CAAAA,CAAEiG,CAAC,EAACu6C,CAAAA,GAAEn/C,EAAE4E,CAAC,EAAC8iB,IAAE,CAAC,CAAA,CAAA;QAAElc,CAAE3G,CAAAA,CAAC,CAACD,CAAC,KAAGu6C,CAAAA,CAAEt6C,CAAC,CAACD,CAAC,IAAEmlH,EAAAA,CAAGnlH,CAAEjG,EAAAA,CAAAA,CAAAA,CAAAA;QAAGgB,CAAE6L,CAAAA,CAAAA,CAAE5G,CAAC,EAACA,CAAEA,CAAAA,CAAC,CAAIkjH,KAAAA,CAAEI,CAAAA,CAAAA,CAAEnnH,CAAGyK,CAAAA,EAAAA,CAAAA,CAAAA,EAAG7M,CAAEoqH,GAAAA,EAAAA,CAAGpqH,IAAGoC,CAAEioH,GAAAA,CAAAA,CAAErqH,CAAGiG,CAAAA,CAAAA,CAAC,EAAC0kH,CAAAA,CAAE1kH,CAAEokH,EAAAA,CAAAA,CAAErqH,CAAGqB,CAAAA,EAAAA,CAAAA,CAAAA,EAAG0nB,CAAE,GAAA,CAAC,CAAA,CAAA,CAAA;AAAG/nB,QAAAA,CAAAA,CAAEw/C,EAAEv6C,CAAC,EAACA,EAAEA,CAAC,CAAA,KAAIkjH,CAAEhoH,CAAAA,CAAAA,EAAEooH,CAAE/oE,CAAAA,CAAAA,CAAAA,CAAAA,EAAIr/C,IAAEwpH,CAAE1kH,CAAAA,CAAAA,EAAE5E,GAAE,IAAM0nB,CAAAA,EAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA,CAAA;QAAGA,CAAE6hG,GAAAA,CAAAA,CAAE3kH,CAAEjG,EAAAA,CAAAA,EAAEmB,CAAEnB,CAAAA,CAAC,EAACoC,CAAEA,EAAAA,CAAAA,EAAE,CAAC,CAAA,CAAA,IAAIwmH,CAAAA,CAAEpoE,EAAEv6C,CAAC,EAAC4G,CAAE5G,CAAAA,CAAC,CAAE5F,GAAAA,CAAAA,GAAEkpH,CAAE/oE,CAAAA,CAAAA,CAAAA,GAAGngD,CAAEwM,GAAAA,CAAAA,EAAExM,CAAEqpH,GAAAA,CAAAA,CAAEvoH,CAAEnB,CAAAA,CAAC,CAACkG,CAAC,EAAC7F,CAAGuqH,CAAAA,EAAAA,CAAAA,CAAE3kH,CAAEjG,EAAAA,CAAAA,EAAEK,GAAEA,CAAEL,CAAAA,CAAC,EAACK,CAAAA,CAAEL,CAAC,EAAC,CAAC,CAAGK,CAAAA,EAAAA,CAAAA,CAAE6F,CAAC,CAAC1F,CAAC,CAACR,CAAC,GAAC,CAAC,CAAA,EAAE6qH,EAAG5kH,CAAAA,CAAAA,EAAEjG,CAAC,CAAA,CAAA,CAAA;KAAQ4qH,MAAAA,CAAAA,CAAE3kH,GAAEjG,CAAEoC,EAAAA,CAAAA,CAAEpC,CAAC,EAACmB,CAAAA,EAAEA,GAAE,CAAC,CAAA,CAAA,CAAA;AAAE,CAAA;AAAC,SAASoqH,EAAAA,CAAGtlH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAIlG,IAAE,IAAIuqH,EAAAA,EAAGlqH,CAAE4oH,GAAAA,EAAAA,CAAGhjH,EAAEC,CAAC,CAAA,CAAA;IAAE7F,CAAE4F,CAAAA,CAAC,CAACC,CAAC,GAAC6jH,CAAAA,CAAAA;IAAE1pH,CAAE4F,CAAAA,CAAC,CAACA,CAAC,GAACC,CAAAA,CAAAA;AAAE7F,IAAAA,CAAAA,CAAE6F,CAAC,CAACD,CAAC,CAACC,CAAC,GAAC,CAAC6jH,CAAAA,CAAAA;AAAE1pH,IAAAA,CAAAA,CAAE6F,CAAC,CAACD,CAAC,CAACA,CAAC,GAACC,CAAAA,CAAAA;AAAED,IAAAA,CAAAA,CAAEA,CAAC,GAAC5F,CAAE6F,CAAAA,CAAC,CAACD,CAAC,CAAA;AAACjG,IAAAA,CAAAA,CAAEiG,CAAC,GAAC5F,CAAAA,CAAAA;AAAEL,IAAAA,CAAAA,CAAEmB,CAAC,GAAC,CAAA,CAAA;IAAEnB,CAAEK,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;IAAEL,CAAEA,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;IAAEA,CAAE6M,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;IAAE7M,CAAEkG,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE7F,IAAAA,CAAAA,GAAE4F,EAAE9E,CAAC,CAAA;AAACd,IAAAA,CAAAA,GAAEmqH,EAAGnqH,CAAAA,CAAAA,EAAEA,CAAE4F,CAAAA,CAAC,EAACjG,CAAAA,CAAAA,CAAAA;AAAGA,IAAAA,CAAAA,CAAEoC,CAAC,GAAC/B,CAAAA,CAAAA;AAAC,CAAA;AAAE,SAASmrH,GAAGvlH,CAAC,EAAA;IAAE,IAAI,CAACA,CAAC,GAAC,IAAIwlH,EAAAA,CAAAA;IAAG,IAAI,CAACvlH,CAAC,GAACD,CAAAA,CAAAA;IAAE,IAAI,CAACjG,CAAC,GAACiqH,EAAAA,CAAAA;AAAE,CAAA;AAAC,SAASO,EAAGvkH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;IAAE,GAAGkG,CAAAA,GAAEA,EAAElG,CAAC,CAAA;AAAO,WAAA,IAAA,KAAOkG,CAAEA,CAAAA,CAAC,IAAE,CAACD,CAAEjG,CAAAA,CAAC,CAACiG,CAAAA,CAAEC,CAAC,EAACA,CAAEA,CAAAA,CAAC,EAAClG,CAAIiG,CAAAA,EAAAA;AAAAA,IAAAA,CAAAA,GAAE,IAAIwlH,EAAAA,CAAGzrH,CAAEkG,EAAAA,CAAAA,CAAED,CAAC,EAACC,CAAAA,CAAAA,CAAAA;IAAGA,CAAED,CAAAA,CAAC,CAACjG,CAAC,GAACiG,CAAAA,CAAAA;IAAE,OAAOC,CAAAA,CAAED,CAAC,GAACA,CAAAA,CAAAA;AAAC,CAAA;AAAE,SAASwlH,EAAGxlH,CAAAA,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;IAAE,IAAI,CAACkG,CAAC,GAACD,CAAG,IAAA,IAAA,CAAA;AAAK,IAAA,IAAI,CAACA,CAAC,GAACC,CAAAA,IAAG,IAAI,CAAA;AAAC,IAAA,IAAI,CAAClG,CAAC,GAACA,CAAAA,IAAG,IAAI,CAAA;AAAA,CAAA;AAAE,SAASgM,CAAAA,GAAAA;IAAI,IAAI,CAAC3L,CAAC,GAAC4L,CAAAA,CAAAA;IAAE,IAAI,CAACsM,CAAC,GAAC,IAAI,CAACrS,CAAC,GAAC,IAAI,CAACsF,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAACmE,CAAC,GAAC;AAAC,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,KAAA,CAAA;IAAC,IAAI,CAACpF,CAAC,GAAC,MAAA,CAAA;IAAO,IAAI,CAAC3I,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE,IAAA,IAAI,CAAC0W,CAAC,GAAC,IAAI,CAACrS,CAAC,GAAC,IAAI,CAAC7D,CAAC,GAAC,IAAI,CAACjB,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAACuK,CAAC,GAAC,CAAC,CAAA,CAAA;IAAE,IAAI,CAAC1L,CAAC,GAAC,IAAI,CAACE,CAAC,GAAC,IAAI,CAACM,CAAC,GAAC,IAAI,CAACggD,CAAC,GAAC,IAAI,CAACz3B,CAAC,GAAC,IAAI,CAAClc,CAAC,GAAC,IAAA,CAAA;AAAI,CAAA;AAAC,IAAIZ,CAAE,GAAA,CAAA,CAAA;AAAErK,CAAAA,GAAEoK,EAAExK,SAAS,CAAA;AAACI,CAAAA,CAAEyE,CAAC,GAAC,WAAA;AAAW6F,IAAAA,CAAAA,CAAE,IAAI,EAACD,CAAAA,CAAAA,CAAAA;AAAE,CAAA,CAAA;AAAErK,CAAAA,CAAEmM,CAAC,GAAC,SAAS9H,CAAC,EAACC,CAAC,EAAA;IAAE,OAAOD,CAAAA;QAAG,KAAK,MAAA;AAAO,YAAA,OAAA;QAAO,KAAK,MAAA;YAAO,OAAOC,CAAAA;gBAAG,KAAK,MAAA,CAAA;gBAAO,KAAK,MAAA,CAAA;gBAAO,KAAK,MAAA,CAAA;gBAAO,KAAK,MAAA,CAAA;gBAAO,KAAK,MAAA;oBAAO,IAAI,CAACqE,CAAC,GAACrE,CAAAA,CAAAA;AAAE,oBAAA,OAAA;AAAM,aAAA;AAAC,YAAA,MAAA;QAAM,KAAK,MAAA;AAAO,YAAA,IAAI,CAACwF,CAAC,GAAC,CAAC,CAACxF,CAAAA,CAAAA;AAAE,YAAA,OAAA;AAAO,QAAA;AAAQ6kH,YAAAA,CAAAA,CAAE,IAAI,EAAC,MAAA,CAAA,CAAA;AAAQ,YAAA,OAAA;AAAM,KAAA;AAACA,IAAAA,CAAAA,CAAE,IAAI,EAAC,MAAA,CAAA,CAAA;AAAO,CAAA,CAAA;AACjmCnpH,CAAER,CAAAA,CAAC,GAAC,SAAS6E,CAAC,EAAA;IAAE,OAAOA,CAAAA;QAAG,KAAK,MAAA;YAAO,OAAO,CAAA,CAAA;QAAE,KAAK,MAAA;YAAO,OAAO,IAAI,CAACsE,CAAC,CAAA;QAAC,KAAK,MAAA;YAAO,OAAO,IAAI,CAACmB,CAAC,CAAA;AAAC,QAAA;AAAQq/G,YAAAA,CAAAA,CAAE,IAAI,EAAC,MAAA,CAAA,CAAA;AAAO,KAAA;AAAC,IAAA,OAAM,CAAC,CAAA,CAAA;AAAC,CAAA,CAAA;AAAEnpH,CAAAA,CAAEoM,CAAC,GAAC,SAAS/H,CAAC,EAACC,CAAC,EAAClG,CAAC,EAAA;AAAE,IAAA,IAAI,CAAC2P,CAAC,CAAC,CAAA,CAAE,GAAC1J,CAAAA,CAAAA;AAAE,IAAA,IAAI,CAAC0J,CAAC,CAAC,CAAA,CAAE,GAACzJ,CAAAA,CAAAA;AAAE,IAAA,IAAI,CAACyJ,CAAC,CAAC,CAAA,CAAE,GAAC3P,CAAAA,CAAAA;AAAC,CAAA,CAAA;AAC3L4B,CAAAA,CAAEyI,CAAC,GAAC,SAASpE,CAAC,EAACC,CAAC,EAAA;IAAE,IAAIlG,CAAAA,GAAEkG,IAAEA,CAAE,GAAA,IAAA,CAAA;IAAK,OAAOD,CAAAA;QAAG,KAAK,MAAA,CAAA;QAAO,KAAK,MAAA;YAAO,IAAI,CAAC4G,CAAC,GAAC7M,CAAAA,CAAAA;AAAE,YAAA,MAAA;QAAM,KAAK,MAAA,CAAA;QAAO,KAAK,MAAA;YAAO,IAAI,CAAC+oB,CAAC,GAAC/oB,CAAAA,CAAAA;AAAE,YAAA,MAAA;QAAM,KAAK,MAAA,CAAA;QAAO,KAAK,MAAA;YAAO,IAAI,CAACwgD,CAAC,GAACxgD,CAAAA,CAAAA;AAAE,YAAA,MAAA;QAAM,KAAK,MAAA,CAAA;QAAO,KAAK,MAAA;YAAO,IAAI,CAACQ,CAAC,GAACR,CAAAA,CAAAA;AAAE,YAAA,MAAA;QAAM,KAAK,MAAA,CAAA;QAAO,KAAK,MAAA;YAAO,IAAI,CAACuY,CAAC,GAACvY,CAAAA,CAAAA;AAAE,YAAA,MAAA;QAAM,KAAK,MAAA,CAAA;QAAO,KAAK,MAAA;YAAO,IAAI,CAACsY,CAAC,GAACtY,CAAAA,CAAAA;AAAE,YAAA,MAAA;QAAM,KAAK,MAAA;YAAO,IAAI,CAACE,CAAC,GAACF,CAAAA,CAAAA;AAAE,YAAA,MAAA;AAAM,QAAA;AAAQ+qH,YAAAA,CAAAA,CAAE,IAAI,EAAC,MAAA,CAAA,CAAA;AAAO,KAAA;AAAC,CAAA,CAAA;AACvUnpH,CAAAA,CAAEs9C,CAAC,GAAC,SAASj5C,CAAC,EAACC,CAAC,EAAA;IAAE,IAAIlG,CAAAA,GAAE,CAAC,CAAA,EAAEK,CAAE,GAAA;AAAC,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,KAAA,CAAA;AAAC6L,IAAAA,CAAAA,CAAE,IAAI,EAAC,CAAA,CAAA,CAAA;AAAG,IAAA,IAAI,IAAI9J,CAAE,GAAA,CAAA,EAAE,CAAEA,GAAAA,CAAAA,EAAE,EAAEA,CAAE,CAAA;QAAC,IAAIjB,CAAAA,GAAE8E,CAAC,CAAC7D,CAAE,CAAA,CAAA;QAAC,CAAC,KAAA,GAAMjB,MAAIA,CAAAA,GAAE,CAAC,KAAMnB,EAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA,CAAA;AAAG,QAAA,KAAA,GAAMmB,MAAIA,CAAAA,GAAE,KAAMnB,EAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA,CAAA;QAAGK,CAAC,CAAC+B,EAAE,GAACjB,CAAAA,CAAAA;AAAC,KAAA;IAACnB,CAAG+qH,IAAAA,CAAAA,CAAE,IAAI,EAAC,MAAA,CAAA,CAAA;IAAQ/qH,CAAE,GAAA,IAAI,CAACwL,CAAC,CAAA;IAAC,IAAOxL,KAAAA,CAAAA,IAAGA,CAAEipH,GAAAA,EAAAA,CAAG,IAAI,CAAC/iH,CAAC,GAAEijH,CAAEnpH,CAAAA,CAAAA,EAAEA,EAAEkG,CAAC,CAAA,KAAIujH,CAAAA,CAAEzpH,IAAGA,CAAEA,GAAAA,CAAAA,CAAEoC,CAAC,CAADA,CAAAA;IAAGpC,CAAEiG,CAAAA,CAAC,CAAC5F,CAAC,GAAC6F,CAAAA,CAAAA;IAAElG,CAAEiG,CAAAA,CAAC,CAAC5E,CAAC,CAAC,EAAE,GAAChB,CAAC,CAAC,CAAE,CAAA,CAAA;IAACL,CAAEiG,CAAAA,CAAC,CAAC5E,CAAC,CAAC,EAAE,GAAChB,CAAC,CAAC,CAAE,CAAA,CAAA;IAACL,CAAEiG,CAAAA,CAAC,CAAC5E,CAAC,CAAC,EAAE,GAAChB,CAAC,CAAC,CAAE,CAAA,CAAA;AAACL,IAAAA,CAAAA,CAAEmB,CAAC,GAAC,CAAA,CAAA;AAAEnB,IAAAA,CAAAA,CAAEkG,CAAC,CAAC/E,CAAC,GAAC,CAAC,CAAA,CAAA;IAAE,IAAI,CAACqK,CAAC,GAACxL,CAAAA,CAAAA;AAAC,CAAA,CAAA;AAAE4B,CAAEgnH,CAAAA,CAAC,GAAC,SAAS3iH,CAAC,EAAA;AAAEiG,IAAAA,CAAAA,CAAE,IAAI,EAACD,CAAAA,CAAAA,CAAAA;IAAG,IAAI,CAAC5L,CAAC,GAAC,CAAA,CAAA;IAAE,IAAI,CAAC6F,CAAC,GAAC,IAAIwlH,EAAAA,CAAAA;IAAG,IAAI,CAAC1rH,CAAC,GAACiG,CAAAA,CAAAA;AAAC,CAAA,CAAA;AAAErE,CAAAA,CAAEZ,CAAC,GAAC,WAAA;AAAWkL,IAAAA,CAAAA,CAAE,IAAI,EAAC,CAAA,CAAA,CAAA;IAAG,IAAI,CAAC7L,CAAC,GAAC,CAAA,CAAA;IAAE,IAAI,CAACmL,CAAC,GAAC,IAAA,CAAA;AAAI,CAAA,CAAA;AAAE5J,CAAAA,CAAEC,CAAC,GAAC,WAAA;AAAWqK,IAAAA,CAAAA,CAAE,IAAI,EAAC,CAAA,CAAA,CAAA;IAAG,IAAI,CAAC7L,CAAC,GAAC,CAAA,CAAA;AAAC,CAAA,CAAA;AACvauB,CAAAA,CAAEwK,CAAC,GAAC,WAAA;AAAWF,IAAAA,CAAAA,CAAE,IAAI,EAAC,CAAA,CAAA,CAAA;IAAG,IAAI,CAAC7L,CAAC,GAAC4L,CAAAA,CAAAA;IAAE,IAAIhG,CAAAA,GAAE,IAAI,CAAC0J,CAAC,CAAC,EAAE,EAACzJ,CAAAA,GAAE,IAAI,CAACyJ,CAAC,CAAC,EAAE,EAAC3P,CAAAA,GAAE,IAAI,CAAC2P,CAAC,CAAC,EAAE,EAACtP,CAAAA,GAAE,CAAC,CAAA,EAAE+B,CAAE,GAAA;AAAC6D,QAAAA,CAAAA;AAAEC,QAAAA,CAAAA;AAAElG,QAAAA,CAAAA;AAAE,KAAA,CAAA;AAAC,IAAA,IAAG,CAAIiG,KAAAA,CAAAA,IAAG,CAAIC,KAAAA,CAAAA,IAAG,MAAIlG,CAAE,EAAA;AAAC,QAAA,IAAI,IAAIkG,CAAE,GAAA;AAAC,YAAA,CAAC,CAAE,GAAA,KAAA;AAAM,YAAA,CAAC,CAAE,GAAA,KAAA;AAAM,YAAA,CAAC,CAAE,GAAA,KAAA;AAAM,SAAA,EAAC/E,CAAE,GAAA;YAAC,CAAE,GAAA,KAAA;YAAM,CAAE,GAAA,KAAA;YAAM,CAAE,GAAA,KAAA;AAAM,SAAA,EAACnB,CAAE,GAAA,EAAE,EAACqB,CAAAA,GAAE,EAAE,EAAChB,CAAE,GAAA,IAAI,CAAC6F,CAAC,CAAClG,CAAC,EAACiG,CAAE5F,GAAAA,CAAAA,CAAE+B,CAAC,EAAC6D,CAAI5F,KAAAA,CAAAA,EAAE4F,CAAEA,GAAAA,CAAAA,CAAE7D,CAAC,CAAC,IAAI,IAAIyK,CAAE,GAAA,CAAA,EAAE,CAAEA,GAAAA,CAAAA,EAAE,EAAEA,CAAE,CAAA;AAAC,YAAA,IAAI2zC,CAAEv6C,GAAAA,CAAAA,CAAE5E,CAAC,CAACwL,CAAE,CAAA,CAAA;AAAC2zC,YAAAA,CAAAA,GAAEr/C,CAAC,CAAC0L,CAAE,CAAA,KAAG1L,CAAC,CAAC0L,CAAE,CAAA,GAAC2zC,CAAEn/C,EAAAA,CAAC,CAACwL,CAAAA,CAAE,GAAC5G,CAAAA,CAAAA,CAAAA;AAAGu6C,YAAAA,CAAAA,GAAEt6C,CAAC,CAAC2G,CAAE,CAAA,KAAG3G,CAAC,CAAC2G,CAAE,CAAA,GAAC2zC,CAAExgD,EAAAA,CAAC,CAAC6M,CAAAA,CAAE,GAAC5G,CAAAA,CAAAA,CAAAA;AAAE,SAAA;QAACA,CAAE,GAAA,CAAA,CAAA;AAAEC,QAAAA,CAAC,CAAC,CAAE,CAAA,GAAC/E,CAAC,CAAC,EAAE,GAAC+E,CAAC,CAAC,CAAA,CAAE,GAAC/E,CAAC,CAAC,EAAE,KAAG8E,IAAE,CAAA,CAAA,CAAA;AAAGC,QAAAA,CAAC,CAAC,CAAE,CAAA,GAAC/E,CAAC,CAAC,EAAE,GAAC+E,CAAC,CAACD,CAAAA,CAAE,GAAC9E,CAAC,CAAC8E,EAAE,KAAGA,IAAE,CAAA,CAAA,CAAA;QAAG,IAAG9E,CAAC,CAAC8E,CAAE,CAAA,IAAEC,CAAC,CAACD,CAAAA,CAAE,EAAC7D,CAAC,CAAC,EAAE,GAAC,CAAA,EAAEA,CAAC,CAAC,CAAA,CAAE,GAAC,CAAEA,EAAAA,CAAC,CAAC,CAAA,CAAE,GAAC,CAAA,CAAA;AAAM,aAAA;YAAC8D,CAAE,GAAA,CAAA,CAAA;YAAE/E,CAAEE,GAAAA,CAAC,CAAC4E,CAAE,CAAA,CAAA;YAACjG,CAAEA,GAAAA,CAAC,CAACiG,CAAE,CAAA,CAAA;YAAC5E,CAAE,GAAA;AAAC,gBAAA,CAAA;AAAE,gBAAA,CAAA;AAAE,gBAAA,CAAA;AAAE,aAAA,CAAA;YAACF,CAAE,GAAA;AAACA,gBAAAA,CAAAA,CAAEE,CAAC,CAAC,CAAA,CAAE,GAACrB,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA;AAACF,gBAAAA,CAAAA,CAAEE,CAAC,CAAC,CAAA,CAAE,GAACrB,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA;AAACF,gBAAAA,CAAAA,CAAEE,CAAC,CAAC,CAAA,CAAE,GAACrB,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA;YAACwL,CAAE,GAAA;AAAC,gBAAA,CAAA;AAAE,gBAAA,CAAA;AAAE,gBAAA,CAAA;AAAE,aAAA,CAAA;AAAC,YAAA,IAAI5G,IAAE5F,CAAE+B,CAAAA,CAAC,EAAC6D,CAAAA,KAAI5F,GAAE4F,CACnfA,GAAAA,CAAAA,CAAE7D,CAAC,CAACyK,CAAC,CAAC,CAAA,CAAE,GAAC5G,CAAE5E,CAAAA,CAAC,CAAC,CAAE,CAAA,GAACrB,CAAEqB,CAAAA,CAAC,CAAC,CAAE,CAAA,EAACwL,CAAC,CAAC,EAAE,GAAC5G,CAAAA,CAAE5E,CAAC,CAAC,EAAE,GAACrB,CAAAA,CAAEqB,CAAC,CAAC,CAAA,CAAE,EAACwL,CAAC,CAAC,CAAE,CAAA,GAAC5G,EAAE5E,CAAC,CAAC,CAAE,CAAA,GAACrB,EAAEqB,CAAC,CAAC,CAAE,CAAA,EAACA,CAAC,CAAC,CAAA,CAAE,GAACF,CAAC,CAAC,EAAE,GAAC0L,CAAC,CAAC,CAAA,CAAE,GAAC1L,CAAC,CAAC,CAAE,CAAA,GAAC0L,CAAC,CAAC,CAAA,CAAE,EAACxL,CAAC,CAAC,CAAE,CAAA,GAACF,CAAC,CAAC,CAAA,CAAE,GAAC0L,CAAC,CAAC,CAAE,CAAA,GAAC1L,CAAC,CAAC,CAAA,CAAE,GAAC0L,CAAC,CAAC,CAAE,CAAA,EAACxL,CAAC,CAAC,EAAE,GAACF,CAAC,CAAC,CAAE,CAAA,GAAC0L,CAAC,CAAC,CAAA,CAAE,GAAC1L,CAAC,CAAC,CAAE,CAAA,GAAC0L,CAAC,CAAC,EAAE,EAAC2zC,CAAAA,GAAEn/C,CAAC,CAAC,EAAE,GAACA,CAAC,CAAC,CAAE,CAAA,GAACA,CAAC,CAAC,CAAA,CAAE,GAACA,CAAC,CAAC,CAAE,CAAA,GAACA,CAAC,CAAC,EAAE,GAACA,CAAC,CAAC,CAAA,CAAE,EAACm/C,CAAEt6C,GAAAA,CAAAA,KAAIA,CAAEs6C,GAAAA,CAAAA,EAAEp+C,CAAC,CAAC,CAAA,CAAE,GAACf,CAAC,CAAC,CAAE,CAAA,EAACe,CAAC,CAAC,CAAA,CAAE,GAACf,CAAC,CAAC,CAAE,CAAA,EAACe,CAAC,CAAC,CAAA,CAAE,GAACf,CAAC,CAAC,EAAE,CAAD,CAAA;YAAG,CAAG6E,IAAAA,CAAAA,KAAI9D,CAAC,CAAC,EAAE,GAACA,CAAC,CAAC,CAAE,CAAA,GAACA,CAAC,CAAC,CAAA,CAAE,GAAC,CAAEA,EAAAA,CAAC,CAAC0nH,EAAG3oH,CAAAA,CAAAA,CAAAA,CAAG,GAAC,CAAA,CAAA,CAAA;AAAE,SAAA;AAACd,QAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;AAAC,KAAA;AAACgB,IAAAA,CAAAA,GAAEyoH,EAAG1nH,CAAAA,CAAAA,CAAAA,CAAAA;AAAG6D,IAAAA,CAAAA,GAAE,IAAI,CAACC,CAAC,CAAClG,CAAC,CAAA;AAACkG,IAAAA,CAAAA,GAAE,CAAC7E,CAAE,GAAA,CAAA,IAAG,CAAA,CAAA;AAAErB,IAAAA,CAAAA,GAAE,CAACqB,CAAE,GAAA,CAAA,IAAG,CAAA,CAAA;AAAEA,IAAAA,CAAAA,GAAE,IAAEe,CAAC,CAACf,CAAE,CAAA,GAAC,IAAE,CAAC,CAAA,CAAA;IAAE,IAAIe,CAAAA,GAAE6D,CAAE7D,CAAAA,CAAC,EAACA,CAAAA,KAAI6D,GAAE7D,CAAEA,GAAAA,CAAAA,CAAEA,CAAC,CAACA,CAAE8D,CAAAA,CAAC,GAAC9D,CAAEf,CAAAA,CAAC,CAAC6E,CAAAA,CAAE,EAAC9D,CAAAA,CAAE6D,CAAC,GAAC5E,CAAEe,GAAAA,CAAAA,CAAEf,CAAC,CAACrB,CAAE,CAAA,CAAA;AAAC,IAAA,IAAGK,CAAE,EAAA;QAAC+B,CAAE,GAAA,CAAA,CAAA;AAAE/B,QAAAA,CAAAA,GAAE,IAAI,CAAC6F,CAAC,CAACD,CAAC,CAAA;QAAC,IAAIA,CAAAA,GAAE5F,EAAE6F,CAAC,EAACD,MAAI5F,CAAE4F,EAAAA,CAAAA,GAAEA,EAAEC,CAAC,CAAC,IAAGA,CAAED,GAAAA,CAAAA,CAAEA,CAAC,EAAC,EAAE,CAAGC,IAAAA,CAAAA,CAAE/E,CAAAA,CAAG,EAAA;AAAC,YAAA,GAAGiB,CAAG,IAAC8D,CAAAA,CAAAA,CAAED,CAAC,CAACC,CAAC,GAACA,CAAAA,CAAEA,CAAC,CAACD,CAAC,CAACC,CAAC,KAAGA,CAAAA,CAAED,CAAC,CAACA,CAAC,GAACC,EAAEA,CAAC,CAACD,CAAC,CAACA,CAAAA,CAAGC,EAAAA,CAAAA,GAAEA,EAAE9D,CAAC,CAAA;mBAAO8D,CAAID,KAAAA,CAAAA,CAAEA,CAAC,EAAC;AAAA,SAAA;QAAC,IAAG,CAAA,GAAE7D,CAAE,EAAA,IAAIA,CAAE,GAAA,IAAI,CAAC8D,CAAC,CAAClG,CAAC,EAACK,CAAE+B,GAAAA,CAAAA,CAAEA,CAAC,EAAC/B,CAAAA,KACnf+B,CAAE/B,EAAAA,CAAAA,GAAEA,CAAE+B,CAAAA,CAAC,CAAC/B,CAAAA,CAAE4F,CAAC,GAAC,CAAC5F,CAAAA,CAAE4F,CAAC,CAAA;AAAA,KAAA;IAAC,IAAI,CAACrE,CAAC,GAAC,CAAC,CAAA,CAAA;AAAEQ,IAAAA,CAAAA,GAAE,IAAI,CAAC8D,CAAC,CAACA,CAAC,CAAA;IAAC,IAAID,CAAAA,GAAE7D,EAAEyK,CAAC,EAAC5G,MAAI7D,CAAE6D,EAAAA,CAAAA,GAAE5F,CAAE,CAAA,IAAGA,CAAE4F,GAAAA,CAAAA,CAAE4G,CAAC,EAAC3G,CAAAA,GAAED,CAAE7D,CAAAA,CAAC,EAACpB,CAAAA,CAAEiF,EAAEA,CAAC,EAACA,CAAEC,CAAAA,CAAC,CAACD,CAAC,KAAGA,CAAE7D,CAAAA,CAAC,CAACA,CAAC,KAAG6D,MAAI+kH,EAAAA,CAAG,IAAI,EAAC9kH,CAAED,EAAAA,CAAAA,CAAAA,EAAGqjH,EAAErjH,CAAGA,CAAAA,EAAAA,CAAAA,GAAEC,CAAEA,EAAAA,CAAAA,GAAED,CAAE7D,CAAAA,CAAC,CAAE8D,EAAAA,CAAAA,CAAE9D,CAAC,KAAG6D,CAAE,EAAA;AAAC,QAAA,IAAGC,MAAID,CAAE,EAAA;YAAC,IAAGC,CAAAA,KAAI7F,KAAG6F,CAAI7F,KAAAA,CAAAA,CAAE6F,CAAC,EAAC7F,CAAAA,GAAEA,EAAEwM,CAAC,CAAA;YAACy8G,CAAEpjH,CAAAA,CAAAA,CAAAA,CAAAA;AAAE,SAAA;QAAC,IAAGD,CAAAA,KAAI5F,KAAG4F,CAAI5F,KAAAA,CAAAA,CAAE6F,CAAC,EAAC7F,CAAAA,GAAEA,EAAEwM,CAAC,CAAA;QAACy8G,CAAErjH,CAAAA,CAAAA,CAAAA,CAAAA;AAAE,KAAA;AAAC,IAAA,IAAI,CAAC7D,CAAC,GAACA,CAAAA,GAAE,IAAIupH,EAAAA,CAAAA;AAAGtrH,IAAAA,CAAAA,GAAE,IAAI,CAAC6F,CAAC,CAAClG,CAAC,CAAA;AAAC,IAAA,IAAIiG,CAAE5F,GAAAA,CAAAA,CAAE+B,CAAC,EAAC6D,MAAI5F,CAAE4F,EAAAA,CAAAA,GAAEA,CAAE7D,CAAAA,CAAC,CAAC6D,CAAAA,CAAE4G,CAAC,GAACw+G,GAAGjpH,CAAE6D,EAAAA,CAAAA,CAAAA,CAAAA;IAAG2lH,EAAGxpH,CAAAA,CAAAA,CAAAA,CAAAA;AAAG,IAAA,IAAI,CAACjB,CAAC,GAAC,IAAIqqH,GAAG,IAAI,CAAA,CAAA;IAAED,EAAG,CAAA,IAAI,EAAC,CAACxB,CAAAA,CAAAA,CAAAA;AAAG,IAAA,IAAIwB,EAAG,CAAA,IAAI,EAACxB,CAAAA,CAAAA,EAAG,IAAQ3nH,MAAAA,CAAEypH,GAAAA,EAAAA,CAAG,IAAI,CAACzpH,CAAC,CAAA,CAAI,EAAA;QAAC,OAAO;AAAC6D,YAAAA,CAAAA,EAAE,IAAGA,CAAAA,GAAE,IAAI,CAAC7D,CAAC,EAAC,CAAI6D,KAAAA,CAAAA,CAAEA,CAAC,EAAC5F,CAAEyrH,GAAAA,EAAAA,CAAG7lH,EAAEC,CAAC,CAAA,CAAA;AAAO,iBAAA,IAAG7F,CAAE4F,GAAAA,CAAAA,CAAEjG,CAAC,CAACiG,CAAE5F,CAAAA,CAAC,CAAC4F,CAAAA,CAAEA,CAAC,GAAC,CAAE,CAAA,CAAC,EAAC,CAAA,KAAIA,CAAEC,CAAAA,CAAC,CAACD,CAAC,KAAGA,CAAE6lH,GAAAA,EAAAA,CAAG7lH,CAAEC,CAAAA,CAAC,CAAE0iH,EAAAA,CAAAA,CAAE3iH,CAAE5F,EAAAA,CAAAA,CAAC,CAAG,EAAA;gBAACA,CAAE4F,GAAAA,CAAAA,CAAAA;gBAAE,MAAMA,CAAAA,CAAAA;AAAC,aAAA;AAAC,YAAA,IAAG,IAAO5F,KAAAA,CAAAA,IAAG,CAACW,CAAAA,CAAEX,GAAE+B,CAAG,CAAA,EAAA,MAAA;YAAM/B,CAAEwrH,GAAAA,EAAAA,CAAG,IAAI,CAACzpH,CAAC,CAAA,CAAA;AAAE4oH,YAAAA,EAAAA,CAAG,IAAI,EAAC5oH,CAAAA,CAAEpC,CAAC,EACvfK,EAAEL,CAAC,CAAA,CAAA;AAAC,SAAA;AAACsrH,QAAAA,EAAAA,CAAG,IAAI,EAAClpH,CAAAA,CAAAA,CAAAA;AAAE,KAAA;AAAC,IAAA,IAAI,CAAC6D,CAAC,GAAC,IAAI,CAAC9E,CAAC,CAAC8E,CAAC,CAACA,CAAC,CAACC,CAAC,CAACD,CAAC,CAACA,CAAC,CAAA;IAAC,IAAI7D,CAAAA,GAAE,GAAE,IAAQ/B,MAAAA,IAAE,IAAI,CAACc,CAAC,CAAC8E,CAAC,CAACA,CAAC,CAACC,CAAC,CAADA,EAAI7F,EAAEwM,CAAC,IAAE,EAAEzK,CAAAA,EAAE8nH,CAAE7pH,CAAAA,CAAAA,CAAAA,CAAAA;IAAG,IAAI,CAACc,CAAC,GAAC,IAAA,CAAA;IAAKiB,CAAE,GAAA,IAAI,CAACA,CAAC,CAAA;AAACA,IAAAA,CAAAA,CAAE8D,CAAC,GAAC,IAAA,CAAA;AAAK9D,IAAAA,CAAAA,CAAE/B,CAAC,GAAC,IAAA,CAAA;AAAK,IAAA,IAAI,CAAC+B,CAAC,GAACA,CAAAA,CAAEpC,CAAC,GAAC,IAAA,CAAA;IAAKoC,CAAE,GAAA,IAAI,CAAC8D,CAAC,CAAA;AAAC,IAAA,IAAID,CAAE7D,GAAAA,CAAAA,CAAE6D,CAAC,CAACC,CAAC,EAACD,CAAAA,KAAI7D,CAAE6D,CAAAA,CAAC,EAACA,CAAAA,GAAE5F,CAAEA,CAAAA,CAAAA,GAAE4F,EAAEC,CAAC,EAACD,CAAEA,GAAAA,CAAAA,CAAEA,CAAC,EAACA,CAAE7D,CAAAA,CAAC,CAACA,CAAC,KAAG6D,CAAI+jH,KAAAA,EAAE/jH,CAAEjG,CAAAA,CAAC,EAACiG,CAAAA,CAAAA,EAAGqjH,EAAErjH,CAAC,CAAA,CAAA,CAAA;AAAG,IAAA,IAAG,CAAC,IAAI,CAACrE,CAAC,EAAC;QAACQ,CAAE,GAAA,IAAI,CAAC8D,CAAC,CAAA;QAAC,IAAG,IAAI,CAACwF,CAAC,EAAC,IAAIzF,CAAE7D,GAAAA,CAAAA,CAAE8D,CAAC,CAAC2G,CAAC,EAAC5G,CAAI7D,KAAAA,CAAAA,CAAE8D,CAAC,EAACD,CAAAA,GAAE5F,EAAEA,CAAE4F,GAAAA,CAAAA,CAAE4G,CAAC,EAAC5G,CAAAA,CAAEC,CAAC,CAAC7F,CAAC,CAACL,CAAC,KAAGiG,EAAE5F,CAAC,CAACL,CAAC,GAACiG,CAAAA,CAAE9E,CAAC,GAAC8E,CAAAA,CAAE5F,CAAC,CAACL,CAAC,GAAC,CAAE,GAAA,CAAC,IAAEspH,CAAErjH,CAAAA,CAAAA,CAAAA,CAAAA;AAAQ,aAAA,IAAIA,IAAE7D,CAAE6D,CAAAA,CAAC,CAACC,CAAC,EAACD,MAAI7D,CAAE6D,CAAAA,CAAC,EAACA,CAAE5F,GAAAA,CAAAA,CAAE,IAAGA,CAAE4F,GAAAA,CAAAA,CAAEC,CAAC,EAACD,CAAAA,CAAEjG,CAAC,EAAC;AAAC,YAAA,IAAIiG,IAAEA,CAAEA,CAAAA,CAAC,EAAC2iH,CAAAA,CAAE3iH,EAAEC,CAAC,CAACD,CAAC,EAACA,EAAEA,CAAC,CAAA,EAAEA,IAAEA,CAAEjG,CAAAA,CAAC,CAACkG,CAAC,CAAA,CAAA;YAAE,MAAK0iH,CAAAA,CAAE3iH,CAAEA,CAAAA,CAAC,EAACA,CAAAA,CAAEC,CAAC,CAACD,CAAC,CAAA,EAAEA,CAAEA,GAAAA,CAAAA,CAAE7D,CAAC,CAAA,CAAA;YAAE8D,CAAED,GAAAA,CAAAA,CAAEjG,CAAC,CAACkG,CAAC,CAAA;AAAC,YAAA,IAAIlG,IAAE,KAAK,CAAA,EAAEiG,CAAE7D,CAAAA,CAAC,KAAG8D,CAAG,EAAA,IAAG0iH,CAAE3iH,CAAAA,CAAAA,CAAEC,CAAC,CAACD,CAAC,EAACC,CAAAA,CAAED,CAAC,CAAE,EAAA;AAAC,gBAAA,MAAKC,CAAE9D,CAAAA,CAAC,KAAG6D,CAAAA,KAAI8iH,EAAG7iH,CAAAA,CAAAA,CAAE9D,CAAC,CAAA,IAAG,KAAGiE,CAAEH,CAAAA,CAAAA,CAAED,CAAC,EAACC,EAAEA,CAAC,CAACD,CAAC,EAACC,EAAE9D,CAAC,CAAC8D,CAAC,CAACD,CAAC,CAAA,CAAA,EAAIjG,CAC5f0pH,GAAAA,CAAAA,CAAExjH,EAAE9D,CAAC,EAAC8D,CAAGA,CAAAA,EAAAA,CAAAA,GAAElG,EAAEkG,CAAC,CAAA;gBAACA,CAAEA,GAAAA,CAAAA,CAAElG,CAAC,CAACkG,CAAC,CAAA;aAAK,MAAA;AAAC,gBAAA,MAAKA,EAAE9D,CAAC,KAAG6D,CAAI+iH,KAAAA,GAAG/iH,CAAEjG,CAAAA,CAAC,CAACkG,CAAC,KAAG,CAAGG,IAAAA,CAAAA,CAAEJ,EAAEC,CAAC,CAACD,CAAC,EAACA,CAAAA,CAAEA,CAAC,EAACA,EAAEjG,CAAC,CAACkG,CAAC,CAACD,CAAC,CAAA,CAAIjG,EAAAA,CAAAA,GAAE0pH,CAAEzjH,CAAAA,CAAAA,EAAEA,EAAEjG,CAAC,CAACkG,CAAC,CAAED,EAAAA,CAAAA,GAAEjG,EAAEkG,CAAC,CAAA;AAACD,gBAAAA,CAAAA,GAAEA,EAAE7D,CAAC,CAAA;AAAA,aAAA;AAAC,YAAA,MAAK8D,CAAE9D,CAAAA,CAAC,CAACA,CAAC,KAAG6D,CAAGjG,EAAAA,CAAAA,GAAE0pH,CAAExjH,CAAAA,CAAAA,CAAE9D,CAAC,EAAC8D,CAAGA,CAAAA,EAAAA,CAAAA,GAAElG,EAAEkG,CAAC,CAAA;AAAA,SAAA;AAAC,QAAA,IAAG,IAAI,CAAC2G,CAAC,IAAE,IAAI,CAACrM,CAAC,IAAE,IAAI,CAACggD,CAAC,IAAE,IAAI,CAACz3B,CAAC,EAAC,IAAG,IAAI,CAACrd,CAAC,EAAC,IAAItJ,IAAE,IAAI,CAAC8D,CAAC,EAAC7F,CAAAA,GAAE+B,EAAE6D,CAAC,CAACC,CAAC,EAAC7F,MAAI+B,CAAE6D,CAAAA,CAAC,EAAC5F,CAAEA,GAAAA,CAAAA,CAAE6F,CAAC,CAAC;YAAC,IAAG7F,CAAAA,CAAEL,CAAC,EAAC;gBAAC,IAAI,CAAC6M,CAAC,IAAE,IAAI,CAACA,CAAC,CAAC,CAAA,EAAE,IAAI,CAAC7M,CAAC,CAAA,CAAA;AAAEiG,gBAAAA,CAAAA,GAAE5F,EAAE4F,CAAC,CAAA;AAAC,gBAAA,GAAG,IAAI,CAACu6C,CAAC,IAAE,IAAI,CAACA,CAAC,CAACv6C,CAAAA,CAAEA,CAAC,CAAC5F,CAAC,EAAC,IAAI,CAACL,CAAC,CAAEiG,EAAAA,CAAAA,GAAEA,EAAE7D,CAAC,CAAA;uBAAO6D,CAAI5F,KAAAA,CAAAA,CAAE4F,CAAC,EAAE;gBAAA,IAAI,CAACzF,CAAC,IAAE,IAAI,CAACA,CAAC,CAAC,IAAI,CAACR,CAAC,CAAA,CAAA;AAAC,aAAA;AAAC,SAAA;AAAK,aAAA;YAACoC,CAAE,GAAA,IAAI,CAAC8D,CAAC,CAAA;AAAC7F,YAAAA,CAAAA,GAAE,CAAC,CAAC,IAAI,CAAC0oB,CAAC,CAAA;AAAC9iB,YAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;AAAEC,YAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA;AAAE,YAAA,IAAIlG,IAAEoC,CAAE6D,CAAAA,CAAC,CAAC5F,CAAC,EAACL,CAAIoC,KAAAA,CAAAA,CAAE6D,CAAC,EAACjG,IAAEA,CAAEK,CAAAA,CAAC,CAAC,IAAGL,CAAAA,CAAEA,CAAC,EAAC;AAACiG,gBAAAA,CAAAA,KAAI,IAAI,CAAC4G,CAAC,IAAE,IAAI,CAACA,CAAC,CAAC,CAAA,EAAE,IAAI,CAAC7M,CAAC,CAAEiG,EAAAA,CAAAA,GAAE,CAAC,CAAA,CAAA,CAAA;AAAG5E,gBAAAA,CAAAA,GAAErB,EAAEiG,CAAC,CAAA;gBAAC,GAAG5F,CAAAA,KAAIc,CAAAA,GAAEE,CAAE6E,CAAAA,CAAC,CAAC7F,CAAC,CAACL,CAAC,GAAC,CAAE,GAAA,CAAA,EAAEkG,MAAI/E,CAAI+E,KAAAA,CAAE/E,GAAAA,CAAAA,EAAE,IAAI,CAAC4nB,CAAC,IAAE,IAAI,CAACA,CAAC,CAAC,CAAC,CAAC7iB,CAAE,EAAA,IAAI,CAAClG,CAAC,CAAA,CAAC,GACvf,IAAI,CAACwgD,CAAC,IAAE,IAAI,CAACA,CAAC,CAACn/C,CAAAA,CAAE4E,CAAC,CAAC5F,CAAC,EAAC,IAAI,CAACL,CAAC,CAAA,EAAEqB,CAAEA,GAAAA,CAAAA,CAAEe,CAAC,CAAA;uBAAOf,CAAIrB,KAAAA,CAAAA,CAAEiG,CAAC,EAAC;AAAA,aAAA;YAACA,CAAG,IAAA,IAAI,CAACzF,CAAC,IAAE,IAAI,CAACA,CAAC,CAAC,IAAI,CAACR,CAAC,CAAA,CAAA;AAAC,SAAA;QAAC,IAAG,IAAI,CAACE,CAAC,EAAC;YAACkC,CAAE,GAAA,IAAI,CAAC8D,CAAC,CAAA;YAAC,IAAID,CAAAA,GAAE7D,EAAE6D,CAAC,CAACC,CAAC,EAACD,CAAAA,KAAI7D,EAAE6D,CAAC,EAACA,IAAE5F,CAAE,CAAA,IAAGA,IAAE4F,CAAEC,CAAAA,CAAC,EAAC,CAACD,CAAAA,CAAEjG,CAAC,EAAC;AAACkG,gBAAAA,CAAAA,GAAED,EAAEA,CAAC,CAAA;AAACjG,gBAAAA,CAAAA,GAAEkG,EAAE9D,CAAC,CAAA;AAACf,gBAAAA,CAAAA,GAAE,KAAK,CAAA,CAAA;AAAE,gBAAA,GAAGA,CAAErB,GAAAA,CAAAA,EAAEA,CAAEqB,GAAAA,CAAAA,CAAEe,CAAC,EAACf,CAAAA,CAAEhB,CAAC,GAAC,IAAK,EAAA,IAAA,KAAOgB,CAAE6E,CAAAA,CAAC,CAAC7F,CAAC,KAAGgB,CAAAA,CAAErB,CAAC,KAAGqB,CAAE+nH,GAAAA,CAAAA,CAAE/nH,EAAE4E,CAAC,EAAC,IAAO5E,CAAAA,IAAAA,CAAE4E,CAAAA,CAAC,CAACjG,CAAC,GAACqB,CAAErB,CAAAA,CAAC,EAACqpH,CAAAA,CAAEhoH,CAAEkoH,EAAAA,CAAAA,CAAEloH,CAAE,CAAA,CAAA,CAAA,EAAGF,IAAEE,CAAE6E,CAAAA,CAAC,EAAC/E,CAAAA,CAAEnB,CAAC,KAAGmB,CAAEioH,GAAAA,CAAAA,CAAEjoH,EAAE8E,CAAC,EAAC,IAAO9E,CAAAA,IAAAA,CAAE8E,CAAAA,CAAC,CAACjG,CAAC,GAACmB,CAAEnB,CAAAA,CAAC,EAACqpH,CAAAA,CAAEloH,CAAEooH,EAAAA,CAAAA,CAAEpoH,CAAE,CAAA,CAAA,CAAA,EAAGqoH,GAAGnoH,CAAC,CAAA,CAAA,CAAA;AAASA,uBAAAA,CAAAA,KAAI6E,CAAGA,EAAAA;AAAAA,gBAAAA,CAAAA,GAAED,EAAE5F,CAAC,CAAA;AAAC4F,gBAAAA,CAAAA,GAAEA,EAAEC,CAAC,CAAA;AAACD,gBAAAA,CAAAA,CAAE5F,CAAC,GAAC6F,CAAAA,CAAAA;AAAEA,gBAAAA,CAAAA,CAAEA,CAAC,GAACD,CAAAA,CAAAA;AAAC,aAAA;AAAC,YAAA,IAAI,CAAC/F,CAAC,CAAC,IAAI,CAACgG,CAAC,CAAA,CAAA;AAAE,YAAA,IAAI,CAAClG,CAAC,GAAC,IAAI,CAACkG,CAAC,GAAC,IAAA,CAAA;AAAK,YAAA,OAAA;AAAM,SAAA;AAAC,KAAA;AAAC,IAAA,IAAI,CAACA,CAAC,GAAC,IAAI,CAAClG,CAAC,GAAC,IAAA,CAAA;AAAI,CAAA,CAAA;AACnY,SAASkM,CAAAA,CAAEjG,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAGD,EAAE5F,CAAC,KAAG6F,CAAE,EAAA,MAAKD,EAAE5F,CAAC,KAAG6F,CAAG,EAAA,IAAGD,EAAE5F,CAAC,GAAC6F,CAAE,EAAA,OAAOD,EAAE5F,CAAC;QAAE,KAAK4L,CAAAA;AAAE8+G,YAAAA,CAAAA,CAAE9kH,CAAE,EAAA,MAAA,CAAA,CAAA;AAAQA,YAAAA,CAAAA,CAAE2iH,CAAC,CAAC,IAAA,CAAA,CAAA;AAAM,YAAA,MAAA;QAAM,KAAK,CAAA;YAAEmC,CAAE9kH,CAAAA,CAAAA,EAAE,MAAQA,CAAAA,EAAAA,CAAAA,CAAEjF,CAAC,EAAA,CAAA;AAAE,KAAA;AAAM,SAAA,OAAOiF,EAAE5F,CAAC;QAAE,KAAK,CAAA;AAAE0qH,YAAAA,CAAAA,CAAE9kH,CAAE,EAAA,MAAA,CAAA,CAAA;AAAQA,YAAAA,CAAAA,CAAEpE,CAAC,EAAA,CAAA;AAAG,YAAA,MAAA;QAAM,KAAK,CAAA;YAAEkpH,CAAE9kH,CAAAA,CAAAA,EAAE,MAAQA,CAAAA,EAAAA,CAAAA,CAAEmG,CAAC,EAAA,CAAA;AAAE,KAAA;AAAC,CAAA;AAAC,SAAS2+G,CAAAA,CAAE9kH,CAAC,EAACC,CAAC,EAAA;AAAED,IAAAA,CAAAA,CAAEsS,CAAC,IAAEtS,CAAAA,CAAEsS,CAAC,CAACrS,CAAAA,EAAED,EAAEjG,CAAC,CAAA,CAAA;AAAC,CAAA;AAAE,SAAS6pH,EAAAA,CAAG5jH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAI,CAACA,CAAC,GAACD,CAAAA,IAAG,IAAI,CAAA;AAAC,IAAA,IAAI,CAAC5F,CAAC,GAAC6F,CAAAA,IAAG,IAAI,CAAA;IAAC,IAAI,CAACD,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAACjG,CAAC,GAAC,CAAC,CAAA,CAAA;AAAC,CAAA;AAAE,SAAS2pH,CAAAA,GAAAA;IAAI,IAAI,CAAC98G,CAAC,GAAC,IAAI,CAAA;IAAC,IAAI,CAACrM,CAAC,GAAC,IAAI,CAACH,CAAC,GAAC,IAAI,CAAC4F,CAAC,GAAC,IAAI,CAAC7D,CAAC,GAAC,IAAI,CAACpC,CAAC,GAAC,IAAI,CAACkG,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAAC/E,CAAC,GAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAASooH,EAAEtjH,CAAC,EAAA;IAAE,OAAOA,CAAAA,CAAEC,CAAC,CAAC9D,CAAC,CAAA;AAAA,CAAA;AAAE,SAASspH,EAAAA,GAAAA;IAAK,IAAI,CAAC1rH,CAAC,GAAC,IAAI4pH,CAAAA,CAAAA;IAAE,IAAI,CAAC3jH,CAAC,GAAC,IAAI4jH,EAAAA,CAAAA;IAAG,IAAI,CAAC3jH,CAAC,GAAC,IAAIyjH,CAAAA,CAAAA;IAAE,IAAI,CAACtpH,CAAC,GAAC,IAAIspH,CAAAA,CAAAA;AAAE,IAAA,IAAI,CAACzjH,CAAC,CAACA,CAAC,GAAC,IAAI,CAAC7F,CAAC,CAAA;AAAC,IAAA,IAAI,CAACA,CAAC,CAAC6F,CAAC,GAAC,IAAI,CAACA,CAAC,CAAA;AAAA,CAAA;AAAE,SAAS0jH,CAAAA,CAAE3jH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAI,CAAC9D,CAAC,GAAC6D,CAAAA,IAAG,IAAI,CAAA;AAAC,IAAA,IAAI,CAAC9E,CAAC,GAAC+E,CAAAA,IAAG,IAAI,CAAA;AAAC,IAAA,IAAI,CAAC7F,CAAC,GAAC,IAAI,CAACL,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAACqB,CAAC,GAAC;AAAC,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,KAAA,CAAA;IAAC,IAAI,CAACwL,CAAC,GAAC,IAAI,CAAC5G,CAAC,GAAC,IAAI,CAACC,CAAC,GAAC,CAAA,CAAA;AAAC,CAAA;AAAE,SAASylH,EAAAA,GAAAA;IAAK,IAAI,CAAC3rH,CAAC,GAAC,EAAE,CAAA;IAAC,IAAI,CAACK,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAAC4F,CAAC,GAAC,CAAA,CAAA;IAAE,IAAI,CAAC7D,CAAC,GAAC,CAAC,CAAA,CAAA;IAAE,IAAI,CAAC8D,CAAC,GAAC,IAAI6lH,EAAAA,CAAAA;AAAE,CAAA;AAAC,SAASH,GAAG3lH,CAAC,EAAA;IAAEA,CAAE5F,CAAAA,CAAC,GAAC,EAAE,CAAA;AAAC,IAAA,IAAI,IAAI6F,CAAAA,GAAE,CAAEA,EAAAA,CAAAA,GAAED,CAAEA,CAAAA,CAAC,EAACC,CAAAA,EAAAA,CAAID,CAAE5F,CAAAA,CAAC,CAAC6F,CAAAA,CAAE,GAACA,CAAAA,CAAAA;AAAED,IAAAA,CAAAA,CAAE5F,CAAC,CAACmQ,IAAI,CAAC,SAASvK,CAAC,EAAA;QAAE,OAAO,SAASC,CAAC,EAAC9D,CAAC,EAAA;YAAE,OAAOwmH,CAAAA,CAAE3iH,CAAC,CAACC,CAAE,CAAA,EAACD,CAAC,CAAC7D,CAAAA,CAAE,CAAE,GAAA,CAAA,GAAE,CAAC,CAAA,CAAA;AAAC,SAAA,CAAA;AAAC,KAAA,CAAE6D,EAAEjG,CAAC,CAAA,CAAA,CAAA;IAAGiG,CAAE7D,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE4pH,IAAAA,EAAAA,CAAG/lH,EAAEC,CAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAASmlH,EAAAA,CAAGplH,CAAC,EAACC,CAAC,EAAA;IAAE,IAAGD,CAAAA,CAAE7D,CAAC,EAAC;AAAC,QAAA,IAAIpC,IAAEiG,CAAEC,CAAAA,CAAC,EAAC7F,CAAE,GAAA,EAAEL,EAAEiG,CAAC,CAAA;AAAC,QAAA,CAAA,GAAE5F,IAAEL,CAAEmB,CAAAA,CAAC,KAAGnB,CAAAA,CAAEmB,CAAC,IAAE,CAAA,EAAEnB,EAAEA,CAAC,GAACisH,GAAGjsH,CAAEA,CAAAA,CAAC,EAACA,CAAEmB,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA,CAAA;QAAG,IAAIiB,CAAAA,CAAAA;AAAE,QAAA,CAAA,KAAIpC,EAAEkG,CAAC,GAAC9D,IAAE/B,CAAG+B,IAAAA,IAAEpC,CAAEkG,CAAAA,CAAC,EAAClG,CAAEkG,CAAAA,CAAC,GAAClG,CAAEA,CAAAA,CAAC,CAACA,CAAEkG,CAAAA,CAAC,CAAC,CAAD,CAAA;QAAGlG,CAAEoC,CAAAA,CAAC,CAACA,CAAAA,CAAE,GAAC8D,CAAAA,CAAAA;QAAElG,CAAEA,CAAAA,CAAC,CAACoC,CAAAA,CAAE,GAAC/B,CAAAA,CAAAA;QAAEL,CAAEK,CAAAA,CAAC,CAACA,CAAAA,CAAE,GAAC+B,CAAAA,CAAAA;QAAEpC,CAAE6M,CAAAA,CAAC,IAAEs+G,EAAAA,CAAGnrH,CAAEK,EAAAA,CAAAA,CAAAA,CAAAA;QAAG,OAAO+B,CAAAA,CAAAA;AAAC,KAAA;AAACpC,IAAAA,CAAAA,GAAEiG,EAAEA,CAAC,EAAA,CAAA;IAAGA,CAAEjG,CAAAA,CAAC,CAACA,CAAAA,CAAE,GAACkG,CAAAA,CAAAA;IAAE,OAAM,EAAElG,CAAAA,GAAE,CAAA,CAAA,CAAA;AAAE,CAAA;AAC5/B,SAAS6rH,GAAG5lH,CAAC,EAAA;AAAE,IAAA,IAAG,MAAIA,CAAEA,CAAAA,CAAC,EAAC,OAAOimH,EAAAA,CAAGjmH,EAAEC,CAAC,CAAA,CAAA;IAAE,IAAIA,CAAAA,GAAED,CAAEjG,CAAAA,CAAC,CAACiG,CAAAA,CAAE5F,CAAC,CAAC4F,CAAEA,CAAAA,CAAC,GAAC,CAAA,CAAE,CAAC,CAAA;AAAC,IAAA,IAAG,CAAIA,KAAAA,CAAAA,CAAEC,CAAC,CAACD,CAAC,IAAE2iH,CAAAA,CAAEkD,EAAG7lH,CAAAA,CAAAA,CAAEC,CAAC,CAAEA,EAAAA,CAAAA,CAAAA,EAAG,OAAOgmH,EAAAA,CAAGjmH,EAAEC,CAAC,CAAA,CAAA;IAAE,GAAE,EAAED,EAAEA,CAAC,CAAA;AAAO,WAAA,CAAA,GAAEA,CAAEA,CAAAA,CAAC,IAAE,IAAA,KAAOA,EAAEjG,CAAC,CAACiG,CAAE5F,CAAAA,CAAC,CAAC4F,CAAEA,CAAAA,CAAC,GAAC,CAAA,CAAE,CAAC,EAAE;IAAA,OAAOC,CAAAA,CAAAA;AAAC,CAAA;AAAE,SAAS6lH,EAAAA,GAAAA;IAAK,IAAI,CAAC1rH,CAAC,GAAC4rH,EAAG,CAAA;AAAC,QAAA,CAAA;KAAE,EAAC,EAAA,CAAA,CAAA;IAAI,IAAI,CAAC7pH,CAAC,GAAC;AAAC,QAAA,IAAA;AAAK,QAAA,IAAA;AAAK,KAAA,CAAA;IAAC,IAAI,CAACpC,CAAC,GAAC;AAAC,QAAA,CAAA;AAAE,QAAA,CAAA;AAAE,KAAA,CAAA;IAAC,IAAI,CAACiG,CAAC,GAAC,CAAA,CAAA;IAAE,IAAI,CAAC9E,CAAC,GAAC,EAAA,CAAA;IAAG,IAAI,CAAC+E,CAAC,GAAC,CAAA,CAAA;IAAE,IAAI,CAAC2G,CAAC,GAAC,CAAC,CAAA,CAAA;AAAE,IAAA,IAAI,CAACxM,CAAC,CAAC,CAAA,CAAE,GAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAAS4rH,EAAAA,CAAGhmH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAI,IAAIlG,CAAEiI,GAAAA,KAAAA,CAAM/B,CAAG7F,CAAAA,EAAAA,CAAAA,GAAE,GAAEA,CAAE4F,GAAAA,CAAAA,CAAEhG,MAAM,EAACI,IAAIL,CAAC,CAACK,EAAE,GAAC4F,CAAC,CAAC5F,CAAE,CAAA,CAAA;AAAC,IAAA,MAAKA,IAAE6F,CAAE7F,EAAAA,CAAAA,EAAAA,CAAIL,CAAC,CAACK,EAAE,GAAC,CAAA,CAAA;IAAE,OAAOL,CAAAA,CAAAA;AAAC,CAAA;AAAC,SAASgsH,GAAG/lH,CAAC,EAAA;IAAE,IAAI,IAAIC,CAAED,GAAAA,CAAAA,CAAEA,CAAC,EAAC,KAAGC,CAAE,EAAA,EAAEA,CAAEglH,CAAAA,CAAAA,CAAEjlH,CAAEC,EAAAA,CAAAA,CAAAA,CAAAA;IAAGD,CAAE4G,CAAAA,CAAC,GAAC,CAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAASi/G,GAAG7lH,CAAC,EAAA;AAAE,IAAA,OAAOA,EAAE7D,CAAC,CAAC6D,EAAE5F,CAAC,CAAC,EAAE,CAAC,CAAA;AAAA,CAAA;AAAC,SAAS6rH,GAAGjmH,CAAC,EAAA;IAAE,IAAIC,CAAAA,GAAED,EAAE5F,CAAC,EAACL,IAAEiG,CAAE7D,CAAAA,CAAC,EAAC/B,CAAE4F,GAAAA,CAAAA,CAAEjG,CAAC,EAACoC,CAAAA,GAAE8D,CAAC,CAAC,CAAA,CAAE,EAAC/E,CAAEnB,GAAAA,CAAC,CAACoC,CAAE,CAAA,CAAA;IAAC,CAAE6D,GAAAA,CAAAA,CAAEA,CAAC,KAAGC,CAAC,CAAC,CAAA,CAAE,GAACA,CAAC,CAACD,EAAEA,CAAC,CAAC,EAAC5F,CAAC,CAAC6F,CAAC,CAAC,CAAA,CAAE,CAAC,GAAC,CAAA,EAAElG,CAAC,CAACoC,CAAAA,CAAE,GAAC,IAAK/B,EAAAA,CAAC,CAAC+B,CAAE,CAAA,GAAC6D,EAAEC,CAAC,EAACD,EAAEC,CAAC,GAAC9D,GAAE,CAAE,GAAA,EAAE6D,EAAEA,CAAC,IAAEilH,CAAEjlH,CAAAA,CAAAA,EAAE,CAAC,CAAA,CAAA,CAAA;IAAG,OAAO9E,CAAAA,CAAAA;AAAC,CAAA;AACzkB,SAAS+pH,CAAAA,CAAEjlH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAI,IAAIlG,CAAEiG,GAAAA,CAAAA,CAAE5F,CAAC,EAACA,CAAAA,GAAE4F,EAAE7D,CAAC,EAACA,IAAE6D,CAAEjG,CAAAA,CAAC,EAACmB,CAAE+E,GAAAA,CAAAA,EAAE7E,IAAErB,CAAC,CAACmB,EAAE,GAAG;AAAC,QAAA,IAAI0L,IAAE1L,CAAG,IAAA,CAAA,CAAA;QAAE0L,CAAE5G,GAAAA,CAAAA,CAAEA,CAAC,IAAE2iH,CAAAA,CAAEvoH,CAAC,CAACL,CAAC,CAAC6M,CAAE,GAAA,CAAA,CAAE,CAAC,EAACxM,CAAC,CAACL,CAAC,CAAC6M,EAAE,CAAC,CAAA,KAAIA,CAAAA,IAAG,CAAA,CAAA,CAAA;QAAG,IAAI2zC,CAAAA,GAAExgD,CAAC,CAAC6M,CAAE,CAAA,CAAA;AAAC,QAAA,IAAGA,CAAE5G,GAAAA,CAAAA,CAAEA,CAAC,IAAE2iH,CAAEvoH,CAAAA,CAAC,CAACgB,CAAAA,CAAE,EAAChB,CAAC,CAACmgD,CAAAA,CAAE,CAAE,EAAA;YAACxgD,CAAC,CAACmB,EAAE,GAACE,CAAAA,CAAAA;YAAEe,CAAC,CAACf,EAAE,GAACF,CAAAA,CAAAA;AAAE,YAAA,MAAA;AAAK,SAAA;QAACnB,CAAC,CAACmB,EAAE,GAACq/C,CAAAA,CAAAA;QAAEp+C,CAAC,CAACo+C,EAAE,GAACr/C,CAAAA,CAAAA;QAAEA,CAAE0L,GAAAA,CAAAA,CAAAA;AAAC,KAAA;AAAC,CAAA;AAAC,SAASs+G,EAAAA,CAAGllH,CAAC,EAACC,CAAC,EAAA;AAAE,IAAA,IAAI,IAAIlG,CAAEiG,GAAAA,CAAAA,CAAE5F,CAAC,EAACA,CAAAA,GAAE4F,EAAE7D,CAAC,EAACA,IAAE6D,CAAEjG,CAAAA,CAAC,EAACmB,CAAE+E,GAAAA,CAAAA,EAAE7E,IAAErB,CAAC,CAACmB,EAAE,GAAG;AAAC,QAAA,IAAI0L,IAAE1L,CAAG,IAAA,CAAA,EAAEq/C,CAAExgD,GAAAA,CAAC,CAAC6M,CAAE,CAAA,CAAA;QAAC,IAAG,CAAA,KAAIA,CAAG+7G,IAAAA,CAAAA,CAAEvoH,CAAC,CAACmgD,EAAE,EAACngD,CAAC,CAACgB,CAAAA,CAAE,CAAE,EAAA;YAACrB,CAAC,CAACmB,EAAE,GAACE,CAAAA,CAAAA;YAAEe,CAAC,CAACf,EAAE,GAACF,CAAAA,CAAAA;AAAE,YAAA,MAAA;AAAK,SAAA;QAACnB,CAAC,CAACmB,EAAE,GAACq/C,CAAAA,CAAAA;QAAEp+C,CAAC,CAACo+C,EAAE,GAACr/C,CAAAA,CAAAA;QAAEA,CAAE0L,GAAAA,CAAAA,CAAAA;AAAC,KAAA;AAAC,CAAA;AAAE,SAAS09G,EAAAA,GAAAA;AAAK,IAAA,IAAI,CAACnoH,CAAC,GAAC,IAAI,CAAC6D,CAAC,GAAC,IAAA,CAAA;IAAK,IAAI,CAAC9E,CAAC,GAAC,CAAA,CAAA;AAAE,IAAA,IAAI,CAACnB,CAAC,GAAC,IAAI,CAACkG,CAAC,GAAC,IAAI,CAAC2G,CAAC,GAAC,IAAI,CAACxM,CAAC,GAAC,CAAC,CAAA,CAAA;AAAC,CAAA;AAAC,SAASgqH,EAAEpkH,CAAC,EAAA;AAAE,IAAA,OAAOA,CAAE7D,CAAAA,CAAC,CAACpC,CAAC,CAACkG,CAAC,CAAA;AAAA,CAAA;AAAC,SAAS0H,EAAE3H,CAAC,EAAA;AAAE,IAAA,OAAOA,CAAE7D,CAAAA,CAAC,CAAC6D,CAAC,CAACC,CAAC,CAAA;AAAA,CAAA;AAAEimH,cAAI,CAACC,OAAO,GAAC;IAACC,aAAcrgH,EAAAA,CAAAA;IAAEsgH,WAAY,EAAA;QAACC,oBAAqB,EAAA,MAAA;QAAOC,wBAAyB,EAAA,MAAA;QAAOC,yBAA0B,EAAA,MAAA;QAAOC,yBAA0B,EAAA,MAAA;QAAOC,4BAA6B,EAAA,MAAA;AAAM,KAAA;IAAEC,aAAc,EAAA;QAACC,YAAa,EAAA,CAAA;QAAEC,YAAa,EAAA,CAAA;QAAEC,iBAAkB,EAAA,CAAA;QAAEC,eAAgB,EAAA,CAAA;AAAC,KAAA;IAAEC,SAAU,EAAA;QAACC,8BAA+B,EAAA,MAAA;QAAOC,4BAA6B,EAAA,MAAA;QAAOC,8BAA+B,EAAA,MAAA;QAAOC,4BAA6B,EAAA,MAAA;QAAOC,wBAAyB,EAAA,MAAA;QAAOC,8BAA+B,EAAA,MAAA;AAAM,KAAA;IACt8BC,OAAQ,EAAA;QAACC,aAAc,EAAA,MAAA;QAAOC,kBAAmB,EAAA,MAAA;QAAOC,qBAAsB,EAAA,MAAA;QAAOC,sBAAuB,EAAA,MAAA;QAAOC,gBAAiB,EAAA,MAAA;QAAOC,iBAAkB,EAAA,MAAA;QAAOC,cAAe,EAAA,MAAA;QAAOC,eAAgB,EAAA,MAAA;QAAOC,YAAa,EAAA,MAAA;QAAOC,cAAe,EAAA,MAAA;QAAOC,kBAAmB,EAAA,MAAA;QAAOC,gBAAiB,EAAA,MAAA;QAAOC,mBAAoB,EAAA,MAAA;QAAOC,oBAAqB,EAAA,MAAA;QAAOC,iBAAkB,EAAA,MAAA;QAAOC,mBAAoB,EAAA,MAAA;QAAOC,uBAAwB,EAAA,MAAA;QAAOC,qBAAsB,EAAA,MAAA;AAAM,KAAA;AAAC,CAAA,CAAA;AAAE1iH,CAAAA,CAAExK,SAAS,CAACmtH,aAAa,GAAC3iH,CAAExK,CAAAA,SAAS,CAAC6E,CAAC,CAAA;AAC7f2F,CAAAA,CAAExK,SAAS,CAACotH,eAAe,GAAC5iH,CAAExK,CAAAA,SAAS,CAACuM,CAAC,CAAA;AAAC/B,CAAAA,CAAExK,SAAS,CAACqtH,kBAAkB,GAAC7iH,CAAExK,CAAAA,SAAS,CAACJ,CAAC,CAAA;AAAC4K,CAAAA,CAAExK,SAAS,CAACstH,aAAa,GAAC9iH,CAAExK,CAAAA,SAAS,CAACwM,CAAC,CAAA;AAAChC,CAAAA,CAAExK,SAAS,CAACutH,eAAe,GAAC/iH,CAAExK,CAAAA,SAAS,CAAC6I,CAAC,CAAA;AAAC2B,CAAAA,CAAExK,SAAS,CAACwtH,aAAa,GAAChjH,CAAExK,CAAAA,SAAS,CAAC09C,CAAC,CAAA;AAAClzC,CAAAA,CAAExK,SAAS,CAACytH,mBAAmB,GAACjjH,CAAExK,CAAAA,SAAS,CAAConH,CAAC,CAAA;AAAC58G,CAAAA,CAAExK,SAAS,CAAC0tH,mBAAmB,GAACljH,CAAExK,CAAAA,SAAS,CAACR,CAAC,CAAA;AAACgL,CAAAA,CAAExK,SAAS,CAAC2tH,iBAAiB,GAACnjH,CAAExK,CAAAA,SAAS,CAACK,CAAC,CAAA;AAACmK,CAAAA,CAAExK,SAAS,CAAC4tH,iBAAiB,GAACpjH,CAAExK,CAAAA,SAAS,CAAC4K,CAAC,CAAA;AAAqC;AAAEijH,IAAAA,MAAiBlD,CAAAA,OAAAA,GAAAA,cAAI,CAACC,OAAO,CAAA;AAAE,CAAA;;;ACvD1c,IAAMkD,KAAAA,GAAQ,SAAUC,cAAAA,GAAAA;;IAEtB,SAASC,cAAAA,CACPp9G,IAAuC,EACvCq9G,aAAuB,EAAA;AAEvBA,QAAAA,aAAa,CAACA,aAAcxvH,CAAAA,MAAM,CAAC,GAAGmS,IAAI,CAAC,CAAE,CAAA,CAAA;AAC7Cq9G,QAAAA,aAAa,CAACA,aAAcxvH,CAAAA,MAAM,CAAC,GAAGmS,IAAI,CAAC,CAAE,CAAA,CAAA;AAC/C,KAAA;AACA,IAAA,SAASs9G,cAAex5G,IAAY,EAAA;AAClC,QAAA,IAAIA,IAASk2G,KAAAA,iCAAqB,CAACU,YAAY,EAAE;YAC/ChlH,OAAQxJ,CAAAA,IAAI,CAAC,mCAAsC4X,GAAAA,IAAAA,CAAAA,CAAAA;AACrD,SAAA;AACF,KAAA;AACA,IAAA,SAASy5G,cAAeC,KAAa,EAAA;QACnC9nH,OAAQtJ,CAAAA,KAAK,CAAC,gCAAmCoxH,GAAAA,KAAAA,CAAAA,CAAAA;AACnD,KAAA;;AAEA,IAAA,SAASC,eACPC,CAAAA,MAAgC,EAChC19G,IAAgB,EAChB4Z,MAAgB,EAAA;;QAGhB,OAAO;AAAC8jG,YAAAA,MAAM,CAAC,CAAE,CAAA;AAAEA,YAAAA,MAAM,CAAC,CAAE,CAAA;AAAEA,YAAAA,MAAM,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA;AAC1C,KAAA;AACA,IAAA,SAASC,aAAc5uE,IAAa,EAAA;;;AAGpC,KAAA;IAEA,IAAMmuE,KAAAA,GAAQ,IAAIlD,iCAAqB,EAAA,CAAA;;AAGvCkD,IAAAA,KAAAA,CAAMP,eAAe,CAAC3C,2BAAe,CAACkC,oBAAoB,EAAEkB,cAAAA,CAAAA,CAAAA;AAC5DF,IAAAA,KAAAA,CAAMP,eAAe,CAAC3C,2BAAe,CAAC2B,cAAc,EAAE2B,aAAAA,CAAAA,CAAAA;AACtDJ,IAAAA,KAAAA,CAAMP,eAAe,CAAC3C,2BAAe,CAAC8B,cAAc,EAAEyB,aAAAA,CAAAA,CAAAA;AACtDL,IAAAA,KAAAA,CAAMP,eAAe,CAAC3C,2BAAe,CAACgC,gBAAgB,EAAEyB,eAAAA,CAAAA,CAAAA;AACxDP,IAAAA,KAAAA,CAAMP,eAAe,CAAC3C,2BAAe,CAAC+B,kBAAkB,EAAE4B,YAAAA,CAAAA,CAAAA;IAE1D,OAAOT,KAAAA,CAAAA;AACT,CAAA,EAAA,CAAA;AAEO,SAASrnC,YAAa+nC,QAAoB,EAAA;;;;;IAK/CV,KAAMR,CAAAA,aAAa,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAE1B,IAAA,IAAMmB,gBAA0B,EAAE,CAAA;AAElCX,IAAAA,KAAAA,CAAML,mBAAmB,CAACgB,aAAAA,CAAAA,CAAAA;AAE1B,IAAA,IAAK,IAAIzvH,CAAI,GAAA,CAAA,EAAGA,IAAIwvH,QAAS/vH,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACxC8uH,QAAAA,KAAAA,CAAMJ,mBAAmB,EAAA,CAAA;QACzB,IAAMgB,OAAAA,GAAUF,QAAQ,CAACxvH,CAAE,CAAA,CAAA;QAE3B,IAAK,IAAImP,IAAI,CAAGA,EAAAA,CAAAA,GAAIugH,QAAQjwH,MAAM,EAAE0P,KAAK,CAAG,CAAA;AAC1C,YAAA,IAAMmgH,MAAS,GAAA;AAACI,gBAAAA,OAAO,CAACvgH,CAAE,CAAA;gBAAEugH,OAAO,CAACvgH,IAAI,CAAE,CAAA;AAAE,gBAAA,CAAA;AAAE,aAAA,CAAA;YAE9C2/G,KAAMN,CAAAA,aAAa,CAACc,MAAQA,EAAAA,MAAAA,CAAAA,CAAAA;AAC9B,SAAA;AACAR,QAAAA,KAAAA,CAAMH,iBAAiB,EAAA,CAAA;AACzB,KAAA;;AAGAG,IAAAA,KAAAA,CAAMF,iBAAiB,EAAA,CAAA;IAEvB,OAAOa,aAAAA,CAAAA;AACT;;ACxEA;AAOA;;AAEC,IACM,IAAA,OAAM5kC,iBAAD,SAAL,cAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,OAAAA,GAAAA;QAoBE,IAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAAG57C,MAAH,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,CAAA;YAAGA,MAAH,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAA8D,CAAA,CAAA;;;;AAnB3E;;AAEC,MAAA,KAAA,CACDA,SAAmB,EAAE,CAAA;AAErB;;AAEC,MAAA,KAAA,CACD44C,SAAqB,GAAA,KAAA,CAAA;QAanB,IAAI8nC,IAAAA,GAAOloH,KAAMkM,CAAAA,OAAO,CAACs7B,MAAM,CAAC,CAAA,CAAE,CAAIA,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAGA,MAAAA,CAAAA;;AAGlD,QAAA,IAAI,OAAO0gF,IAAI,CAAC,CAAA,CAAE,KAAK,QAAU,EAAA;AAC/B,YAAA,IAAM53G,IAAc,EAAE,CAAA;YAEtB,IAAK,IAAI/X,IAAI,CAAGmvC,EAAAA,EAAAA,GAAKwgF,KAAKlwH,MAAM,EAAEO,CAAImvC,GAAAA,EAAAA,EAAInvC,CAAK,EAAA,CAAA;AAC7C+X,gBAAAA,CAAAA,CAAEpW,IAAI,CAAC,IAAK,CAAC3B,CAAE,CAAA,CAAe6F,CAAC,EAAE,IAAK,CAAC7F,CAAAA,CAAE,CAAeY,CAAC,CAAA,CAAA;AAC3D,aAAA;YAEA+uH,IAAO53G,GAAAA,CAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,KAAA,CAAKk3B,MAAM,GAAG0gF,IAAAA,CAAAA;AACd,QAAA,KAAA,CAAK9nC,SAAS,GAAG,IAAA,CAAA;;;AApCRgD,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AAuCX;;;MAIAzjF,MAAAA,CAAAA,KAOC,GAPDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAM6nC,MAAS,GAAA,IAAI,CAACA,MAAM,CAACvsC,KAAK,EAAA,CAAA;QAChC,IAAMktH,OAAAA,GAAU,IA7CP/kC,OA6CmB57C,CAAAA,MAAAA,CAAAA,CAAAA;AAE5B2gF,QAAAA,OAAAA,CAAQ/nC,SAAS,GAAG,IAAI,CAACA,SAAS,CAAA;QAElC,OAAO+nC,OAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;;AAKC,MACDC,OAAAA,QAoBC,GApBDA,SAAAA,QAAUhqH,CAAAA,CAAS,EAAEjF,CAAS,EAAA;AAC5B,QAAA,IAAI6+F,MAAS,GAAA,KAAA,CAAA;;;AAIb,QAAA,IAAMhgG,SAAS,IAAI,CAACwvC,MAAM,CAACxvC,MAAM,GAAG,CAAA,CAAA;QAEpC,IAAK,IAAIO,IAAI,CAAGmP,EAAAA,CAAAA,GAAI1P,SAAS,CAAGO,EAAAA,CAAAA,GAAIP,MAAQ0P,EAAAA,CAAAA,GAAInP,CAAK,EAAA,CAAA;AACnD,YAAA,IAAM8vH,KAAK,IAAI,CAAC7gF,MAAM,CAACjvC,IAAI,CAAE,CAAA,CAAA;YAC7B,IAAM+vH,EAAAA,GAAK,IAAI,CAAC9gF,MAAM,CAAC,CAACjvC,GAAI,IAAK,CAAE,CAAA,CAAA;AACnC,YAAA,IAAMgwH,KAAK,IAAI,CAAC/gF,MAAM,CAAC9/B,IAAI,CAAE,CAAA,CAAA;YAC7B,IAAM8gH,EAAAA,GAAK,IAAI,CAAChhF,MAAM,CAAC,CAAC9/B,GAAI,IAAK,CAAE,CAAA,CAAA;YACnC,IAAMgiC,SAAAA,GAAY,EAAOvwC,GAAAA,CAAAA,KAAQqvH,KAAKrvH,CAAQiF,IAAAA,CAAAA,GAAI,CAAEmqH,EAAKF,GAAAA,EAAC,KAAOlvH,CAAAA,CAAImvH,GAAAA,EAAC,KAAME,EAAAA,GAAKF,EAAC,CAAC,CAAMD,GAAAA,EAAAA,CAAAA;AAEzF,YAAA,IAAI3+E,SAAW,EAAA;AACbsuD,gBAAAA,MAAAA,GAAS,CAACA,MAAAA,CAAAA;AACZ,aAAA;AACF,SAAA;QAEA,OAAOA,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACDv4F,MAAAA,CAAAA,QAKC,GALDA,SAAAA,SAAU0oH,OAAgB,EAAA;AACxB,QAAA,IAAI,CAAC3gF,MAAM,GAAG2gF,OAAQ3gF,CAAAA,MAAM,CAACvsC,KAAK,EAAA,CAAA;AAClC,QAAA,IAAI,CAACmlF,SAAS,GAAG+nC,OAAAA,CAAQ/nC,SAAS,CAAA;AAElC,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;AAIC,MACDw8B,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,OAAQuL,OAAgB,EAAA;QACtBA,OAAQ1oH,CAAAA,QAAQ,CAAC,IAAI,CAAA,CAAA;QAErB,OAAO0oH,OAAAA,CAAAA;AACT,KAAA,CAAA;AAkBA;;;MAIAM,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,IAAAA,GAAAA;QACE,OAAO,IAAI,CAACjhF,MAAM,CAAC,IAAI,CAACA,MAAM,CAACxvC,MAAM,GAAG,CAAE,CAAA,CAAA;AAC5C,KAAA,CAAA;AACA;;;MAIA0wH,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,IAAAA,GAAAA;QACE,OAAO,IAAI,CAAClhF,MAAM,CAAC,IAAI,CAACA,MAAM,CAACxvC,MAAM,GAAG,CAAE,CAAA,CAAA;AAC5C,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS+nF,KAIR,GAJD,SAASA,KAAAA,CAAOv4C,MAAgB,EAAA;QAC9B,IAAK,IAAIjvC,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACivC,MAAM,CAACxvC,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC3CivC,YAAAA,MAAM,CAACjvC,CAAE,CAAA,GAAG,IAAI,CAACivC,MAAM,CAACjvC,CAAE,CAAA,CAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASynF,WAkBR,GAlBD,SAASA,YAAAA,CAAax4C,MAAgB,EAAEk4C,QAAkB,EAAEipC,cAAsB,EAAEnsC,OAAiB,EAAEosC,aAAqB,EAAA;AAC1H,QAAA,IAAMhwC,YAAYoH,WAAY,CAAA;AAACx4C,YAAAA,MAAAA;AAAO,SAAA,CAAA,CAAA;QACtC,IAAMumD,UAAAA,GAAarO,QAAS1nF,CAAAA,MAAM,GAAG,CAAA,CAAA;;QAGrC,IAAI4gF,SAAAA,CAAU5gF,MAAM,KAAK,CAAG,EAAA;YAC1B,IAAI,CAAC6wH,wBAAwB,CAACrhF,MAAQoxC,EAAAA,SAAAA,CAAAA,CAAAA;AACxC,SAAA;AAEA,QAAA,IAAK,IAAIrgF,CAAI,GAAA,CAAA,EAAGA,IAAIqgF,SAAU5gF,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACzCmnF,YAAAA,QAAQ,CAACipC,cAAiB,GAAA,CAAA,GAAIpwH,EAAE,GAAGqgF,SAAS,CAACrgF,CAAE,CAAA,CAAA;AACjD,SAAA;QAEA,IAAM6mF,WAAAA,GAAcxG,SAAU5gF,CAAAA,MAAM,GAAG,CAAA,CAAA;AAEvC,QAAA,IAAK,IAAIO,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI6mF,aAAa7mF,EAAK,EAAA,CAAA;AACpCikF,YAAAA,OAAO,CAACosC,aAAAA,GAAgBrwH,EAAE,CAAA,GAAGw1F,UAAax1F,GAAAA,EAAAA,CAAAA;AAC5C,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD,OAAQswH,wBA4DP,GA5DD,SAAQA,wBAA0BrhF,CAAAA,MAAgB,EAAEoxC,SAAmB,EAAA;;QAErE,IAAI,CAACpxC,MAAUA,IAAAA,MAAAA,CAAOxvC,MAAM,GAAG,KAAKwvC,MAAOxvC,CAAAA,MAAM,GAAG,CAAA,KAAM,CAAG,EAAA;AAE3D,YAAA,MAAM,IAAIuC,KAAM,CAAA,sBAAA,CAAA,CAAA;AAClB,SAAA;QAEA,IAAIitC,MAAAA,CAAOxvC,MAAM,KAAK,CAAG,EAAA;YACvB4gF,SAAU1+E,CAAAA,IAAI,CACZstC,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAM,CAAC,CAAE,CAAA,EACpBA,MAAM,CAAC,EAAE,EAAEA,MAAM,CAAC,CAAA,CAAE,EACpBA,MAAM,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA;AAGtB,YAAA,OAAA;AACF,SAAA;;AAGA,QAAA,IAAMhmC,KAAKgmC,MAAM,CAAC,EAAE,GAAGA,MAAM,CAAC,CAAE,CAAA,CAAA;AAChC,QAAA,IAAM/lC,KAAK+lC,MAAM,CAAC,EAAE,GAAGA,MAAM,CAAC,CAAE,CAAA,CAAA;;QAGhC,IAAIshF,MAAAA,GAASthF,MAAM,CAAC,CAAE,CAAA,CAAA;QACtB,IAAIuhF,MAAAA,GAASvhF,MAAM,CAAC,CAAE,CAAA,CAAA;QACtB,IAAIwhF,IAAAA,GAAOxhF,MAAM,CAAC,CAAE,CAAA,CAAA;QACpB,IAAIyhF,IAAAA,GAAOzhF,MAAM,CAAC,CAAE,CAAA,CAAA;;AAGpB,QAAA,IAAIzqC,KAAKe,GAAG,CAAC0D,OAAOzE,IAAKe,CAAAA,GAAG,CAAC2D,EAAK,CAAA,EAAA;;YAEhC,IAAK,IAAIlJ,IAAI,CAAGA,EAAAA,CAAAA,GAAIivC,OAAOxvC,MAAM,EAAEO,KAAK,CAAG,CAAA;gBACzC,IAAM6F,CAAAA,GAAIopC,MAAM,CAACjvC,CAAE,CAAA,CAAA;AACnB,gBAAA,IAAMY,CAAIquC,GAAAA,MAAM,CAACjvC,CAAAA,GAAI,CAAE,CAAA,CAAA;AAEvB,gBAAA,IAAI6F,IAAI0qH,MAAQ,EAAA;oBACdA,MAAS1qH,GAAAA,CAAAA,CAAAA;oBACT2qH,MAAS5vH,GAAAA,CAAAA,CAAAA;AACX,iBAAA;AACA,gBAAA,IAAIiF,IAAI4qH,IAAM,EAAA;oBACZA,IAAO5qH,GAAAA,CAAAA,CAAAA;oBACP6qH,IAAO9vH,GAAAA,CAAAA,CAAAA;AACT,iBAAA;AACF,aAAA;SACK,MAAA;;YAEL,IAAK,IAAIZ,KAAI,CAAGA,EAAAA,EAAAA,GAAIivC,OAAOxvC,MAAM,EAAEO,MAAK,CAAG,CAAA;gBACzC,IAAM6F,EAAAA,GAAIopC,MAAM,CAACjvC,EAAE,CAAA,CAAA;AACnB,gBAAA,IAAMY,EAAIquC,GAAAA,MAAM,CAACjvC,EAAAA,GAAI,CAAE,CAAA,CAAA;AAEvB,gBAAA,IAAIY,KAAI4vH,MAAQ,EAAA;oBACdD,MAAS1qH,GAAAA,EAAAA,CAAAA;oBACT2qH,MAAS5vH,GAAAA,EAAAA,CAAAA;AACX,iBAAA;AACA,gBAAA,IAAIA,KAAI8vH,IAAM,EAAA;oBACZD,IAAO5qH,GAAAA,EAAAA,CAAAA;oBACP6qH,IAAO9vH,GAAAA,EAAAA,CAAAA;AACT,iBAAA;AACF,aAAA;AACF,SAAA;AACAy/E,QAAAA,SAAAA,CAAU1+E,IAAI,CAAC4uH,MAAAA,EAAQC,MAAQC,EAAAA,IAAAA,EAAMC,MAAMD,IAAMC,EAAAA,IAAAA,CAAAA,CAAAA;AACnD,KAAA,CAAA;AA/NW7lC,IAAAA,aAAAA,CAAAA,OAAAA,EAAAA;;YA2GP8lC,GAAAA,EAAAA,OAAAA;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC1hF,MAAM,CAAC,IAAI,CAACA,MAAM,CAACxvC,MAAM,GAAG,CAAE,CAAA,CAAA;AAC5C,aAAA;;;YAMImxH,GAAAA,EAAAA,OAAAA;;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC3hF,MAAM,CAAC,IAAI,CAACA,MAAM,CAACxvC,MAAM,GAAG,CAAE,CAAA,CAAA;AAC5C,aAAA;;;AArHWorF,IAAAA,OAAAA,OAAAA,CAAAA;EAAgBs9B,cAgO5B;;AC1OD;AACA;AAEA,IAAM0I,eAAkB,GAAA,CAAA,CAAA;AACxB,IAAMC,WAAc,GAAA,aAAA,CAAA;AACpB,IAAMC,qBAAwB,GAAA,GAAA,CAAA;AAM9B,IAAMC,uBAA0B,GAAA,GAAA,CAAA;AAEzB,SAASC,oBACdhiF,MAAgB,EAChBiiF,EAAU,EAAEC,EAAU,EACtBC,IAAY,EAAEC,IAAY,EAC1BC,IAAY,EAAEC,IAAY,EAC1BC,EAAU,EAAEC,EAAU,EACtBpnD,UAAmB,EAAA;;AAGnB,IAAA,IAAMriE,KAAQ,GAAA,CAAA,CAAA;IACd,IAAM0pH,SAAAA,GAAYltH,IAAKI,CAAAA,GAAG,CACxB,IAAA,EACAJ,KAAK+B,GAAG,CAAC,CAAG8jE,EAAAA,UAAAA,IAAAA,IAAAA,GAAAA,UAAc2mD,GAAAA,uBAAAA,CAAAA,CAAAA,CAAAA;AAE5B,IAAA,IAAIW,iBAAoB,GAACZ,CAAAA,qBAAAA,GAAwBW,SAAQ,IAAK1pH,KAAAA,CAAAA;IAE9D2pH,iBAAqBA,IAAAA,iBAAAA,CAAAA;IACrBphE,KAAM2gE,CAAAA,EAAAA,EAAIC,IAAIC,IAAMC,EAAAA,IAAAA,EAAMC,MAAMC,IAAMC,EAAAA,EAAAA,EAAIC,IAAIxiF,MAAQ0iF,EAAAA,iBAAAA,CAAAA,CAAAA;IAEtD,OAAO1iF,MAAAA,CAAAA;AACT,CAAA;AAEA;AACA;AAEA,SAASshB,MACP2gE,EAAU,EAAEC,EAAU,EACtBC,IAAY,EAAEC,IAAY,EAC1BC,IAAY,EAAEC,IAAY,EAC1BC,EAAU,EAAEC,EAAU,EACtBxiF,MAAgB,EAChB0iF,iBAAyB,EAAA;;;IAIzBC,SAAUV,CAAAA,EAAAA,EAAIC,IAAIC,IAAMC,EAAAA,IAAAA,EAAMC,MAAMC,IAAMC,EAAAA,EAAAA,EAAIC,EAAIxiF,EAAAA,MAAAA,EAAQ0iF,iBAAmB,EAAA,CAAA,CAAA,CAAA;IAC7E1iF,MAAOttC,CAAAA,IAAI,CAAC6vH,EAAIC,EAAAA,EAAAA,CAAAA,CAAAA;AAClB,CAAA;AAEA;AACA,SAASG,SAAAA,CACPtuE,EAAU,EAAED,EAAU,EACtBne,EAAU,EAAEC,EAAU,EACtB0sF,EAAU,EAAEC,EAAU,EACtBC,EAAU,EAAEC,EAAU,EACtB/iF,MAAgB,EAChB0iF,iBAAyB,EACzBpsD,KAAa,EAAA;AAEb,IAAA,IAAIA,QAAQsrD,eAAiB,EAAA;AAAE,QAAA,OAAA;AAAQ,KAAA;;;AAMvC,IAAA,IAAMoB,GAAM,GAAC3uE,CAAAA,EAAAA,GAAKpe,EAAC,IAAK,CAAA,CAAA;AACxB,IAAA,IAAMgtF,GAAM,GAAC7uE,CAAAA,EAAAA,GAAKle,EAAC,IAAK,CAAA,CAAA;AACxB,IAAA,IAAMgtF,GAAM,GAACjtF,CAAAA,EAAAA,GAAK2sF,EAAC,IAAK,CAAA,CAAA;AACxB,IAAA,IAAMO,GAAM,GAACjtF,CAAAA,EAAAA,GAAK2sF,EAAC,IAAK,CAAA,CAAA;AACxB,IAAA,IAAMO,GAAM,GAACR,CAAAA,EAAAA,GAAKE,EAAC,IAAK,CAAA,CAAA;AACxB,IAAA,IAAMO,GAAM,GAACR,CAAAA,EAAAA,GAAKE,EAAC,IAAK,CAAA,CAAA;AACxB,IAAA,IAAMO,IAAO,GAACN,CAAAA,GAAAA,GAAME,GAAE,IAAK,CAAA,CAAA;AAC3B,IAAA,IAAMK,IAAO,GAACN,CAAAA,GAAAA,GAAME,GAAE,IAAK,CAAA,CAAA;AAC3B,IAAA,IAAMK,IAAO,GAACN,CAAAA,GAAAA,GAAME,GAAE,IAAK,CAAA,CAAA;AAC3B,IAAA,IAAMK,IAAO,GAACN,CAAAA,GAAAA,GAAME,GAAE,IAAK,CAAA,CAAA;AAC3B,IAAA,IAAMK,KAAQ,GAACJ,CAAAA,IAAAA,GAAOE,IAAG,IAAK,CAAA,CAAA;AAC9B,IAAA,IAAMG,KAAQ,GAACJ,CAAAA,IAAAA,GAAOE,IAAG,IAAK,CAAA,CAAA;AAE9B,IAAA,IAAIntD,QAAQ,CAAG,EAAA;;;AAGb,QAAA,IAAIt8D,KAAK8oH,EAAKzuE,GAAAA,EAAAA,CAAAA;AACd,QAAA,IAAIp6C,KAAK8oH,EAAK3uE,GAAAA,EAAAA,CAAAA;AAEd,QAAA,IAAMhW,EAAK7oC,GAAAA,IAAAA,CAAKe,GAAG,CAAC,CAAE2/B,EAAAA,GAAK6sF,EAAC,IAAK7oH,EAAO,GAACi8B,CAAAA,EAAAA,GAAK6sF,EAAC,IAAK/oH,EAAAA,CAAAA,CAAAA;AACpD,QAAA,IAAM4pH,EAAKruH,GAAAA,IAAAA,CAAKe,GAAG,CAAC,CAAEssH,EAAAA,GAAKE,EAAC,IAAK7oH,EAAO,GAAC4oH,CAAAA,EAAAA,GAAKE,EAAC,IAAK/oH,EAAAA,CAAAA,CAAAA;QAIpD,IAAIokC,EAAAA,GAAKyjF,WAAe+B,IAAAA,EAAAA,GAAK/B,WAAa,EAAA;;;AAGxC,YAAA,IAAI,CAACzjF,EAAAA,GAAKwlF,EAAC,KAAMxlF,EAAKwlF,GAAAA,EAAC,CAAMlB,IAAAA,iBAAAA,IAAqB,EAAC1oH,GAAKA,EAAOC,GAAAA,EAAAA,GAAKA,EAAE,CAAI,EAAA;;;;AAIxE,gBAAkD;oBAChD+lC,MAAOttC,CAAAA,IAAI,CAACgxH,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AAEnB,oBAAA,OAAA;AACF,iBAAA;AAiCF,aAAA;SACK,MAAA,IAAIvlF,KAAKyjF,WAAa,EAAA;;;YAG3B,IAAIzjF,EAAAA,GAAKA,MAAMskF,iBAAqB,IAAA,EAAM1oH,GAAAA,EAAAA,GAAOC,EAAKA,GAAAA,EAAE,CAAI,EAAA;AAC1D,gBAAkD;oBAChD+lC,MAAOttC,CAAAA,IAAI,CAACgxH,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AAEnB,oBAAA,OAAA;AACF,iBAAA;AAqBF,aAAA;SACK,MAAA,IAAIC,KAAK/B,WAAa,EAAA;;;YAG3B,IAAI+B,EAAAA,GAAKA,MAAMlB,iBAAqB,IAAA,EAAM1oH,GAAAA,EAAAA,GAAOC,EAAKA,GAAAA,EAAE,CAAI,EAAA;AAC1D,gBAAkD;oBAChD+lC,MAAOttC,CAAAA,IAAI,CAACgxH,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AAEnB,oBAAA,OAAA;AACF,iBAAA;AAqBF,aAAA;SACK,MAAA;;;AAGL3pH,YAAAA,EAAAA,GAAK0pH,KAAS,GAACrvE,CAAAA,EAAAA,GAAKyuE,EAAC,IAAK,CAAA,CAAA;AAC1B7oH,YAAAA,EAAAA,GAAK0pH,KAAS,GAACvvE,CAAAA,EAAAA,GAAK2uE,EAAC,IAAK,CAAA,CAAA;AAC1B,YAAA,IAAI,EAAC/oH,GAAKA,EAAOC,GAAAA,EAAAA,GAAKA,MAAOyoH,iBAAmB,EAAA;gBAC9C1iF,MAAOttC,CAAAA,IAAI,CAACgxH,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AAEnB,gBAAA,OAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;;IAIAhB,SAAUtuE,CAAAA,EAAAA,EAAID,EAAI4uE,EAAAA,GAAAA,EAAKC,GAAKK,EAAAA,IAAAA,EAAMC,MAAMG,KAAOC,EAAAA,KAAAA,EAAO3jF,MAAQ0iF,EAAAA,iBAAAA,EAAmBpsD,KAAQ,GAAA,CAAA,CAAA,CAAA;IACzFqsD,SAAUe,CAAAA,KAAAA,EAAOC,KAAOH,EAAAA,IAAAA,EAAMC,IAAML,EAAAA,GAAAA,EAAKC,KAAKP,EAAIC,EAAAA,EAAAA,EAAI/iF,MAAQ0iF,EAAAA,iBAAAA,EAAmBpsD,KAAQ,GAAA,CAAA,CAAA,CAAA;AAC3F;;ACtNA;AAKA;;AAEC,IACM,IAAA,OAAMqkB,iBAAD,SAAL,cAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,OAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,OAAAA,CAqCE/jF,CAAK,EAAEjF,CAAK,EAAEm7C,SAAa,EAAEC,UAAc,EAAA;AAA3Cn2C,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGm7C,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,CAAA,CAAA;;;AAZvD;;;AAGC,MAAA,KAAA,CACQtmC,IAAO,GAAA,SAAA,CAAA;AAUd,QAAA,KAAA,CAAK7P,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,KAAA,CAAKjF,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,KAAA,CAAKm7C,SAAS,GAAGA,SAAAA,CAAAA;AACjB,QAAA,KAAA,CAAKC,UAAU,GAAGA,UAAAA,CAAAA;;;AA1CT4tC,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;AA6CX;;;MAIAxiF,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,OAAO,IAlDEwiF,OAkDU,CAAA,IAAI,CAAC/jF,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAACm7C,SAAS,EAAE,IAAI,CAACC,UAAU,CAAA,CAAA;AACpE,KAAA,CAAA;AAEA;;;;;AAKC,MACD6zE,OAAAA,QAaC,GAbDA,SAAAA,QAAUhqH,CAAAA,CAAS,EAAEjF,CAAS,EAAA;QAC5B,IAAI,IAAI,CAACm7C,SAAS,IAAI,KAAK,IAAI,CAACC,UAAU,IAAI,CAAG,EAAA;YAC/C,OAAO,KAAA,CAAA;AACT,SAAA;;QAGA,IAAI82E,KAAAA,GAAS,CAACjtH,CAAI,GAAA,IAAI,CAACA,CAAC,IAAI,IAAI,CAACk2C,SAAS,CAAA;QAC1C,IAAIg3E,KAAAA,GAAS,CAACnyH,CAAI,GAAA,IAAI,CAACA,CAAC,IAAI,IAAI,CAACo7C,UAAU,CAAA;QAE3C82E,KAASA,IAAAA,KAAAA,CAAAA;QACTC,KAASA,IAAAA,KAAAA,CAAAA;AAET,QAAA,OAAQD,QAAQC,KAAS,IAAA,CAAA,CAAA;AAC3B,KAAA,CAAA;AAEA;;;;;;MAOAC,MAAAA,CAAAA,cAsBC,GAtBDA,SAAAA,eAAgBntH,CAAS,EAAEjF,CAAS,EAAE8Q,KAAa,EAAA;AACjD,QAAA,IAAkC,QAAA,IAAI,EAA9BqqC,YAA0B,KAA1BA,CAAAA,SAAAA,EAAWC,aAAe,KAAfA,CAAAA,UAAAA,CAAAA;QAEnB,IAAID,SAAAA,IAAa,CAAKC,IAAAA,UAAAA,IAAc,CAAG,EAAA;YACrC,OAAO,KAAA,CAAA;AACT,SAAA;AAEA,QAAA,IAAMi3E,kBAAkBvhH,KAAQ,GAAA,CAAA,CAAA;AAChC,QAAA,IAAMwhH,SAASn3E,SAAYk3E,GAAAA,eAAAA,CAAAA;AAC3B,QAAA,IAAME,SAASn3E,UAAai3E,GAAAA,eAAAA,CAAAA;AAC5B,QAAA,IAAMG,SAASr3E,SAAYk3E,GAAAA,eAAAA,CAAAA;AAC3B,QAAA,IAAMI,SAASr3E,UAAai3E,GAAAA,eAAAA,CAAAA;AAE5B,QAAA,IAAMK,WAAcztH,GAAAA,CAAAA,GAAI,IAAI,CAACA,CAAC,CAAA;AAC9B,QAAA,IAAM0tH,WAAc3yH,GAAAA,CAAAA,GAAI,IAAI,CAACA,CAAC,CAAA;AAE9B,QAAA,IAAM4yH,YAAe,GAAEF,WAAcA,GAAAA,WAAAA,IAAgBJ,MAAAA,GAASA,MAAK,CAAA,GAC9D,WAACK,GAAcA,WAAgBJ,IAAAA,SAASA,MAAK,CAAA,CAAA;AAClD,QAAA,IAAMM,YAAe,GAAEH,WAAcA,GAAAA,WAAAA,IAAgBF,MAAAA,GAASA,MAAK,CAAA,GAC9D,WAACG,GAAcA,WAAgBF,IAAAA,SAASA,MAAK,CAAA,CAAA;QAElD,OAAOG,YAAAA,GAAe,KAAKC,YAAgB,IAAA,CAAA,CAAA;AAC7C,KAAA,CAAA;AAEA;;;;AAIC;;;;;;;;AAYD;;;;AAIC,MACDvsH,MAAAA,CAAAA,QAOC,GAPDA,SAAAA,SAAU4iF,OAAgB,EAAA;AACxB,QAAA,IAAI,CAACjkF,CAAC,GAAGikF,OAAAA,CAAQjkF,CAAC,CAAA;AAClB,QAAA,IAAI,CAACjF,CAAC,GAAGkpF,OAAAA,CAAQlpF,CAAC,CAAA;AAClB,QAAA,IAAI,CAACm7C,SAAS,GAAG+tC,OAAAA,CAAQ/tC,SAAS,CAAA;AAClC,QAAA,IAAI,CAACC,UAAU,GAAG8tC,OAAAA,CAAQ9tC,UAAU,CAAA;AAEpC,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;AAIC,MACDqoE,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,OAAQv6B,OAAgB,EAAA;QACtBA,OAAQ5iF,CAAAA,QAAQ,CAAC,IAAI,CAAA,CAAA;QAErB,OAAO4iF,OAAAA,CAAAA;AACT,KAAA,CAAA;IAEAomC,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,IAAAA,GAAAA;QACE,OAAO,IAAI,CAACrqH,CAAC,CAAA;AACf,KAAA,CAAA;IAEAsqH,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,IAAAA,GAAAA;QACE,OAAO,IAAI,CAACvvH,CAAC,CAAA;AACf,KAAA,CAAA;AAEA4mF,IAAAA,MAAAA,CAAAA,KA8FC,GA9FDA,SAAAA,KAAAA,CAAOv4C,MAAgB,EAAA;QACrB,IAAMppC,CAAAA,GAAI,IAAI,CAACA,CAAC,CAAA;QAChB,IAAMjF,CAAAA,GAAI,IAAI,CAACA,CAAC,CAAA;QAChB,IAAM67E,EAAAA,GAAK,IAAI,CAAC1gC,SAAS,CAAA;QACzB,IAAMwgC,EAAAA,GAAK,IAAI,CAACvgC,UAAU,CAAA;AAC1B,QAAA,IAAM/yC,EAAK,GAAA,CAAA,CAAA;AACX,QAAA,IAAMC,EAAK,GAAA,CAAA,CAAA;QAEX,IAAI,EAAEuzE,EAAAA,IAAM,CAAKF,IAAAA,EAAAA,IAAM,KAAKtzE,EAAM,IAAA,CAAA,IAAKC,EAAM,IAAA,CAAA,CAAI,EAAA;YAC/C,OAAO+lC,MAAAA,CAAAA;AACT,SAAA;;AAGA,QAAA,IAAMykF,aAAgB,GAAA,CAAA,CAAA;QACtB,IAAMtyH,CAAAA,GAAIoD,KAAKC,IAAI,CAACivH,gBAAgBlvH,IAAK6D,CAAAA,IAAI,CAACo0E,EAAKF,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AACnD,QAAA,IAAMrxE,CAAI,GAAC9J,CAAI,GAAA,CAAA,IAAe,CAAA,CAAM8H,IAAS,CAAA,CAAA,CAAA;AAE7C,QAAA,IAAIgC,MAAM,CAAG,EAAA;YACX,OAAO+jC,MAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAI7tC,MAAM,CAAG,EAAA;AACX6tC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGppC,CAAIoD,GAAAA,EAAAA,CAAAA;AAC5BgmC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGruC,CAAIsI,GAAAA,EAAAA,CAAAA;AAC5B+lC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGppC,CAAIoD,GAAAA,EAAAA,CAAAA;AAC5BgmC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGruC,CAAIsI,GAAAA,EAAAA,CAAAA;YAE5B,OAAO+lC,MAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAI0kF,EAAK,GAAA,CAAA,CAAA;QACT,IAAIC,EAAAA,GAAK,CAAK,GAAA,CAAA,IAAe,CAAA,CAAK,GAAA,CAAA,CAAA;AAClC,QAAA,IAAIjmB,EAAKimB,GAAAA,EAAAA,CAAAA;AACT,QAAA,IAAIhmB,EAAK1iG,GAAAA,CAAAA,CAAAA;AAET,QAAA,IAAIo5C,KAAKr7C,EAAKwzE,GAAAA,EAAAA,CAAAA;AACd,QAAA,IAAIl4B,EAAKr7C,GAAAA,EAAAA,CAAAA;AACT,QAAA,IAAIo6C,KAAKz9C,CAAIy+C,GAAAA,EAAAA,CAAAA;AACb,QAAA,IAAIpf,KAAKr/B,CAAIy+C,GAAAA,EAAAA,CAAAA;AACb,QAAA,IAAIjB,KAAKziD,CAAI2jD,GAAAA,EAAAA,CAAAA;QAEbtV,MAAM,CAAC0kF,KAAK,GAAGrwE,EAAAA,CAAAA;QACfrU,MAAM,CAAC0kF,KAAK,GAAGtwE,EAAAA,CAAAA;QACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAGvwE,EAAAA,CAAAA;QACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAG1uF,EAAAA,CAAAA;AAWf,QAAA,IAAK,IAAIllC,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIoB,GAAGpB,CAAK,EAAA,CAAA;AAC1B,YAAA,IAAMyF,IAAIjB,IAAKU,CAAAA,EAAE,GAAG,CAAKlF,IAAAA,IAAIoB,CAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAMkjD,GAAKr7C,GAAAA,EAAAA,GAAMzE,IAAKsiB,CAAAA,GAAG,CAACrhB,CAAKg3E,CAAAA,GAAAA,EAAAA,CAAAA;AAC/B,YAAA,IAAMl4B,GAAKr7C,GAAAA,EAAAA,GAAM1E,IAAKoiB,CAAAA,GAAG,CAACnhB,CAAK82E,CAAAA,GAAAA,EAAAA,CAAAA;AAC/B,YAAA,IAAMj5B,MAAKz9C,CAAIy+C,GAAAA,GAAAA,CAAAA;AACf,YAAA,IAAMpf,MAAKr/B,CAAIy+C,GAAAA,GAAAA,CAAAA;AACf,YAAA,IAAMjB,MAAKziD,CAAI2jD,GAAAA,GAAAA,CAAAA;AACf,YAAA,IAAMpf,MAAKvkC,CAAI2jD,GAAAA,GAAAA,CAAAA;YAEftV,MAAM,CAAC0kF,KAAK,GAAGrwE,GAAAA,CAAAA;YACfrU,MAAM,CAAC0kF,KAAK,GAAGtwE,GAAAA,CAAAA;YACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAGvwE,GAAAA,CAAAA;YACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAG1uF,GAAAA,CAAAA;YACf+J,MAAM,CAAC0+D,KAAK,GAAGzoE,GAAAA,CAAAA;YACf+J,MAAM,CAAC0+D,KAAK,GAAGxoE,GAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGzoE,GAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGtqD,GAAAA,CAAAA;AACjB,SAAA;QAEAgB,EAAKr7C,GAAAA,EAAAA,CAAAA;AACLs7C,QAAAA,EAAAA,GAAKr7C,EAAKqzE,GAAAA,EAAAA,CAAAA;AACVj5B,QAAAA,EAAAA,GAAKz9C,CAAIy+C,GAAAA,EAAAA,CAAAA;AACTpf,QAAAA,EAAAA,GAAKr/B,CAAIy+C,GAAAA,EAAAA,CAAAA;AACTjB,QAAAA,EAAAA,GAAKziD,CAAI2jD,GAAAA,EAAAA,CAAAA;AACT,QAAA,IAAMpf,MAAKvkC,CAAI2jD,GAAAA,EAAAA,CAAAA;QAEftV,MAAM,CAAC0kF,KAAK,GAAGrwE,EAAAA,CAAAA;QACfrU,MAAM,CAAC0kF,KAAK,GAAGtwE,EAAAA,CAAAA;QACfpU,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGzoE,GAAAA,CAAAA;QACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGtqD,EAAAA,CAAAA;QASf,OAAOrU,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEAw4C,IAAAA,MAAAA,CAAAA,WAwCC,GAxCDA,SAAAA,WAAAA,CAAax4C,MAAgB,EAAEk4C,QAAkB,EAAEipC,cAAsB,EAAEnsC,OAAiB,EAAEosC,aAAqB,EAAA;QACjH,IAAIphF,MAAAA,CAAOxvC,MAAM,KAAK,CAAG,EAAA;AACvB,YAAA,OAAA;AACF,SAAA;;AAGA,QAAA,IAAIo0H,OAAU,GAAA,CAAA,CAAA;AAAG,QAAA,IACfC,OAAU,GAAA,CAAA,CAAA;QAEZ,IAAK,IAAI9zH,IAAI,CAAGA,EAAAA,CAAAA,GAAIivC,OAAOxvC,MAAM,EAAEO,KAAK,CAAG,CAAA;YACzC6zH,OAAW5kF,IAAAA,MAAM,CAACjvC,CAAE,CAAA,CAAA;YACpB8zH,OAAW7kF,IAAAA,MAAM,CAACjvC,CAAAA,GAAI,CAAE,CAAA,CAAA;AAC1B,SAAA;QACA6zH,OAAY5kF,IAAAA,MAAAA,CAAOxvC,MAAM,GAAG,CAAA,CAAA;QAC5Bq0H,OAAY7kF,IAAAA,MAAAA,CAAOxvC,MAAM,GAAG,CAAA,CAAA;;AAG5B,QAAA,IAAImsD,KAAQwkE,GAAAA,cAAAA,CAAAA;QAEZjpC,QAAQ,CAACv7B,KAAQ,GAAA,CAAA,CAAE,GAAGioE,OAAAA,CAAAA;AACtB1sC,QAAAA,QAAQ,CAAEv7B,KAAQ,GAAA,CAAA,GAAK,EAAE,GAAGkoE,OAAAA,CAAAA;AAC5B,QAAA,IAAMC,WAAcnoE,GAAAA,KAAAA,EAAAA,CAAAA;;QAGpB,IAAK,IAAI5rD,KAAI,CAAGA,EAAAA,EAAAA,GAAIivC,OAAOxvC,MAAM,EAAEO,MAAK,CAAG,CAAA;AACzCmnF,YAAAA,QAAQ,CAACv7B,KAAQ,GAAA,CAAA,CAAE,GAAG3c,MAAM,CAACjvC,EAAE,CAAA,CAAA;YAC/BmnF,QAAQ,CAAC,KAAS,GAAA,CAAA,GAAK,EAAE,GAAGl4C,MAAM,CAACjvC,EAAAA,GAAI,CAAE,CAAA,CAAA;AAEzC,YAAA,IAAIA,KAAI,CAAG,EAAA;gBACTikF,OAAO,CAACosC,gBAAgB,GAAGzkE,KAAAA,CAAAA;gBAC3Bq4B,OAAO,CAACosC,gBAAgB,GAAG0D,WAAAA,CAAAA;gBAC3B9vC,OAAO,CAACosC,aAAgB,EAAA,CAAA,GAAGzkE,KAAQ,GAAA,CAAA,CAAA;AACrC,aAAA;AACAA,YAAAA,KAAAA,EAAAA,CAAAA;AACF,SAAA;;QAGAq4B,OAAO,CAACosC,aAAgB,EAAA,CAAA,GAAG0D,WAAc,GAAA,CAAA,CAAA;QACzC9vC,OAAO,CAACosC,gBAAgB,GAAG0D,WAAAA,CAAAA;QAC3B9vC,OAAO,CAACosC,aAAgB,EAAA,CAAA,GAAGzkE,KAAQ,GAAA,CAAA,CAAA;AACrC,KAAA,CAAA;AAlSWg+B,IAAAA,OAAAA,OAAAA,CAAAA;EAAgBu+B,cAmS5B;;AC3SD;;AAOYv9B,CAAAA,SAAAA,QAAAA,EAAAA;;;GAAAA,QAAAA,KAAAA,QAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAKL,IAAA,QAAMopC,iBAAD,SAAL,cAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,QAAAA,EAAAA,cAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,QAAAA,CAwBT,UAAqB,EACrB,WAAsB,EACtB,WAAsB,EACftpC,cAAkB,EAClBC,cAAkB,EACzB,QAA+B,EAAA;AAL/B,QAAA,IAAOJ,uBAAAA,UAAa,GAAA,CAAA,CAAA;AACpB,QAAA,IAAOC,wBAAAA,WAAc,GAAA,CAAA,CAAA;AACrB,QAAA,IAAOC,wBAAAA,WAAc,GAAA,CAAA,CAAA;AACrB,QAAA,IAAOC,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACxB,QAAA,IAAOC,2BAAAA,cAAiB,GAAA,CAAA,CAAA;AACxB,QAAA,IAAOspC,QAAAA,KAAAA,KAAAA,CAAAA,EAAAA,QAAAA,GAAAA,CAAAA,CAAAA;;;cALA1pC,UAAAA,GAAAA,UAAAA,CAAAA;cACAC,WAAAA,GAAAA,WAAAA,CAAAA;cACAC,WAAAA,GAAAA,WAAAA,CAAAA;cACAC,cAAAA,GAAAA,cAAAA,CAAAA;cACAC,cAAAA,GAAAA,cAAAA,CAAAA;cACAspC,QAAAA,GAAAA,QAAAA,CAAAA;AAzBD5yH,QAAAA,KAAAA,CAAAA,CAAAA,GAAc,EAAE,CAAA;AAIhB6yH,QAAAA,KAAAA,CAAAA,EAAAA,GAAe,EAAE,CAAA;AAIjBrpH,QAAAA,KAAAA,CAAAA,GAAAA,GAAgB,EAAE,CAAA;;;AAZfmpH,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;IAkCX,MAAS5sH,CAAAA,KAWR,GAXD,SAASA,KAAAA,GAAAA;QACP,IAAMkjF,QAAAA,GAAW,IAnCR0pC,QAAAA,CAoCP,IAAI,CAACzpC,UAAU,EACf,IAAI,CAACC,WAAW,EAChB,IAAI,CAACC,WAAW,EAChB,IAAI,CAACC,cAAc,EACnB,IAAI,CAACC,cAAc,EACnB,IAAI,CAACspC,QAAQ,CAAA,CAAA;QAGf,OAAO3pC,QAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAASpjF,QAOR,GAPD,SAASA,QAAAA,CAAUgc,MAAgB,EAAA;AACjC,QAAA,IAAI,CAACqnE,UAAU,GAAGrnE,MAAAA,CAAOqnE,UAAU,CAAA;AACnC,QAAA,IAAI,CAACC,WAAW,GAAGtnE,MAAAA,CAAOsnE,WAAW,CAAA;AACrC,QAAA,IAAI,CAACC,WAAW,GAAGvnE,MAAAA,CAAOunE,WAAW,CAAA;AACrC,QAAA,IAAI,CAACC,cAAc,GAAGxnE,MAAAA,CAAOwnE,cAAc,CAAA;AAC3C,QAAA,IAAI,CAACC,cAAc,GAAGznE,MAAAA,CAAOynE,cAAc,CAAA;AAC3C,QAAA,IAAI,CAACspC,QAAQ,GAAG/wG,MAAAA,CAAO+wG,QAAQ,CAAA;AACjC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS5P,MAER,GAFD,SAASA,MAAAA,CAAQvwC,WAAqB,EAAA;QACpCA,WAAY5sE,CAAAA,QAAQ,CAAC,IAAI,CAAA,CAAA;AAC3B,KAAA,CAAA;AAEA,IAAA,MAAA,CAASsgF,KAmCR,GAnCD,SAASA,KAAAA,CAAOv4C,MAAgB,EAAA;QAC9B,OAAQ,IAAI,CAACglF,QAAQ;AACnB,YAAA,KAAA,CAAA;AAAoB,gBAAA;AAClB,oBAAA,IAAI,CAACE,aAAa,EAAA,CAAA;AAElB,oBAAA,MAAA;AACF,iBAAA;AACA,YAAA,KAAA,CAAA;AAAuB,gBAAA;AACrB,oBAAA,IAAI,CAACC,gBAAgB,EAAA,CAAA;AAErB,oBAAA,MAAA;AACF,iBAAA;AACF,SAAA;AAEA,QAAA,IAAM/pD,UAAa,GAAA,CAAA,CAAA;AAEnB,QAAA,IAAK,IAAIrqE,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI,IAAI,CAACqB,CAAC,CAAC5B,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,CAAG,CAAA;YAC7CixH,mBACEhiF,CAAAA,MAAAA,EACA,IAAI,CAAC5tC,CAAC,CAACrB,EAAE,EAAE,IAAI,CAACqB,CAAC,CAACrB,CAAAA,GAAI,EAAE,EACxB,IAAI,CAAC6K,GAAG,CAAC7K,CAAAA,CAAE,EAAE,IAAI,CAAC6K,GAAG,CAAC7K,CAAAA,GAAI,CAAE,CAAA,EAAE,IAAI,CAACk0H,EAAE,CAACl0H,CAAAA,GAAI,CAAE,CAAA,EAAE,IAAI,CAACk0H,EAAE,CAACl0H,CAAAA,GAAI,CAAE,CAAA,EAAE,IAAI,CAACqB,CAAC,CAACrB,CAAAA,GAAI,CAAE,CAAA,EAAE,IAAI,CAACqB,CAAC,CAACrB,CAAI,GAAA,CAAA,CAAE,EAC1FqqE,UAAAA,CAAAA,CAAAA;AAEJ,SAAA;;AAGA,QAAA,IAAMgqD,YAAY,IAAI,CAAChzH,CAAC,CAAC5B,MAAM,GAAG,CAAA,CAAA;QAElCwxH,mBACEhiF,CAAAA,MAAAA,EACA,IAAI,CAAC5tC,CAAC,CAACgzH,SAAY,GAAA,CAAA,CAAE,EAAE,IAAI,CAAChzH,CAAC,CAACgzH,SAAU,CAAA,EACxC,IAAI,CAACxpH,GAAG,CAACwpH,YAAY,CAAE,CAAA,EAAE,IAAI,CAACxpH,GAAG,CAACwpH,UAAU,EAAE,IAAI,CAACH,EAAE,CAAC,EAAE,EAAE,IAAI,CAACA,EAAE,CAAC,CAAA,CAAE,EAAE,IAAI,CAAC7yH,CAAC,CAAC,CAAE,CAAA,EAAE,IAAI,CAACA,CAAC,CAAC,CAAA,CAAE,EAC1FgpE,UAAAA,CAAAA,CAAAA;AAGJ,KAAA,CAAA;AAEA,IAAA,MAAA,CAASod,WAaR,GAbD,SAASA,YAAAA,CAAax4C,MAAgB,EAAEk4C,QAAkB,EAAEipC,cAAsB,EAAEnsC,OAAiB,EAAEosC,aAAqB,EAAA;AAC1H,QAAA,IAAMhwC,YAAYoH,WAAY,CAAA;AAACx4C,YAAAA,MAAAA;AAAO,SAAA,CAAA,CAAA;QACtC,IAAMumD,UAAAA,GAAarO,QAAS1nF,CAAAA,MAAM,GAAG,CAAA,CAAA;AAErC,QAAA,IAAK,IAAIO,CAAI,GAAA,CAAA,EAAGA,IAAIqgF,SAAU5gF,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACzCmnF,YAAAA,QAAQ,CAACipC,cAAiB,GAAA,CAAA,GAAIpwH,EAAE,GAAGqgF,SAAS,CAACrgF,CAAE,CAAA,CAAA;AACjD,SAAA;QAEA,IAAM6mF,WAAAA,GAAcxG,SAAU5gF,CAAAA,MAAM,GAAG,CAAA,CAAA;AAEvC,QAAA,IAAK,IAAIO,EAAAA,GAAI,CAAGA,EAAAA,EAAAA,GAAI6mF,aAAa7mF,EAAK,EAAA,CAAA;AACpCikF,YAAAA,OAAO,CAACosC,aAAAA,GAAgBrwH,EAAE,CAAA,GAAGw1F,UAAax1F,GAAAA,EAAAA,CAAAA;AAC5C,SAAA;AACF,KAAA,CAAA;IAEA,MAAQm0H,CAAAA,aAyCP,GAzCD,SAAQA,aAAAA,GAAAA;QACN,IAAI,CAAC9yH,CAAC,GAAG,EAAE,CAAA;QACX,IAAI,CAAC6yH,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAACrpH,GAAG,GAAG,EAAE,CAAA;AAEb,QAAA,IAAMypH,SAAS9vH,IAAK0D,CAAAA,KAAK,CAAC,IAAI,CAACqiF,UAAU,CAAI,GAAA,CAAA,CAAA;AAC7C,QAAA,IAAM7jE,KAAQ,GAACliB,IAAKU,CAAAA,EAAE,GAAG,CAAKovH,GAAAA,MAAAA,CAAAA;AAC9B,QAAA,IAAIC,QAAW,GAAA,IAAA,CAAA;QACf,IAAMC,OAAAA,GAAU,IAAI,CAAChqC,WAAW,CAAA;QAChC,IAAMiqC,QAAAA,GAAW,IAAI,CAAChqC,WAAW,CAAA;AACjC,QAAA,IAAMiqC,SAAY,GAAA,IAAI,CAAChqC,cAAc,GAAG,GAAA,CAAA;AACxC,QAAA,IAAMiqC,UAAa,GAAA,IAAI,CAAChqC,cAAc,GAAG,GAAA,CAAA;QACzC,IAAMiqC,gBAAAA,GAAmB,CAAKpwH,GAAAA,IAAAA,CAAKU,EAAE,GAAGsvH,OAAAA,IAAYF,MAAAA,GAAS,CAAA,CAAA,CAAA;QAC7D,IAAMO,iBAAAA,GAAoB,CAAKrwH,GAAAA,IAAAA,CAAKU,EAAE,GAAGuvH,QAAAA,IAAaH,MAAAA,GAAS,CAAA,CAAA,CAAA;QAC/D,IAAIt0H,CAAAA,CAAAA;QACJ,IAAI80H,GAAAA,CAAAA;QACJ,IAAIxqD,SAAAA,CAAAA;QACJ,IAAIyqD,YAAAA,CAAAA;AACJ,QAAA,IAAIC,UAAa,GAAA,CAACxwH,IAAKU,CAAAA,EAAE,GAAG,CAAA,CAAA;AAE5B,QAAA,IAAM22C,GAAM,GAAA,CAAA,CAAA;AAEZ,QAAA,IAAK77C,CAAI,GAAA,CAAA,EAAGA,CAAIs0H,GAAAA,MAAAA,EAAQt0H,CAAK,EAAA,CAAA;AAC3B80H,YAAAA,GAAAA,GAAMP,WAAWC,OAAUC,GAAAA,QAAAA,CAAAA;AAC3BnqD,YAAAA,SAAAA,GAAYiqD,WAAWG,SAAYC,GAAAA,UAAAA,CAAAA;AACnCI,YAAAA,YAAAA,GAAeR,WAAWK,gBAAmBC,GAAAA,iBAAAA,CAAAA;AAC7C,YAAA,IAAMhvH,CAAIivH,GAAAA,GAAAA,GAAMtwH,IAAKsiB,CAAAA,GAAG,CAACkuG,UAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAMp0H,CAAIk0H,GAAAA,GAAAA,GAAMtwH,IAAKoiB,CAAAA,GAAG,CAACouG,UAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAMrpF,EAAK9lC,GAAAA,CAAAA,KAAM,CAAKjF,IAAAA,CAAAA,KAAM,CAAI,GAAA,CAAA,GAAIA,CAAI4D,GAAAA,IAAAA,CAAK6D,IAAI,CAACxC,CAAIA,GAAAA,CAAAA,GAAIjF,CAAIA,GAAAA,CAAAA,CAAAA,CAAAA;AAC9D,YAAA,IAAMgsC,EAAK/mC,GAAAA,CAAAA,KAAM,CAAKjF,IAAAA,CAAAA,KAAM,CAAI,GAAA,CAAA,GAAI,CAACiF,CAAAA,GAAIrB,IAAK6D,CAAAA,IAAI,CAACxC,CAAAA,GAAIA,IAAIjF,CAAIA,GAAAA,CAAAA,CAAAA,CAAAA;AAC/D,YAAA,IAAMiC,SAAS7C,CAAI,GAAA,CAAA,CAAA;AAEnB,YAAA,IAAI,CAACqB,CAAC,CAACwB,MAAAA,CAAO,GAAGgD,CAAAA,CAAAA;AACjB,YAAA,IAAI,CAACxE,CAAC,CAACwB,MAAAA,GAAS,EAAE,GAAGjC,CAAAA,CAAAA;YACrB,IAAI,CAACszH,EAAE,CAACrxH,MAAAA,CAAO,GAAGgD,CAAI8lC,GAAAA,EAAAA,GAAKopF,eAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;YACtD,IAAI,CAACq4E,EAAE,CAACrxH,MAAAA,GAAS,EAAE,GAAGjC,CAAAA,GAAIgsC,EAAKmoF,GAAAA,YAAAA,GAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;YAC1D,IAAI,CAAChxC,GAAG,CAAChI,MAAAA,CAAO,GAAGgD,CAAI8lC,GAAAA,EAAAA,GAAKopF,eAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;YACvD,IAAI,CAAChxC,GAAG,CAAChI,MAAAA,GAAS,EAAE,GAAGjC,CAAAA,GAAIgsC,EAAKmoF,GAAAA,YAAAA,GAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;AAC3D04E,YAAAA,QAAAA,GAAW,CAACA,QAAAA,CAAAA;AACZS,YAAAA,UAAAA,IAActuG,KAAQm1B,GAAAA,GAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;IAEA,MAAQu4E,CAAAA,gBA8BP,GA9BD,SAAQA,gBAAAA,GAAAA;QACN,IAAI,CAAC/yH,CAAC,GAAG,EAAE,CAAA;QACX,IAAI,CAAC6yH,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAACrpH,GAAG,GAAG,EAAE,CAAA;AAEb,QAAA,IAAMypH,SAAS9vH,IAAK0D,CAAAA,KAAK,CAAC,IAAI,CAACqiF,UAAU,CAAA,CAAA;AACzC,QAAA,IAAM7jE,KAAQ,GAACliB,IAAKU,CAAAA,EAAE,GAAG,CAAKovH,GAAAA,MAAAA,CAAAA;QAC9B,IAAMQ,GAAAA,GAAM,IAAI,CAACtqC,WAAW,CAAA;AAC5B,QAAA,IAAMlgB,SAAY,GAAA,IAAI,CAACogB,cAAc,GAAG,GAAA,CAAA;QACxC,IAAMqqC,YAAAA,GAAe,CAAKvwH,GAAAA,IAAAA,CAAKU,EAAE,GAAG4vH,GAAAA,IAAQR,MAAAA,GAAS,CAAA,CAAA,CAAA;QACrD,IAAIt0H,CAAAA,CAAAA;AACJ,QAAA,IAAIg1H,UAAa,GAAA,CAACxwH,IAAKU,CAAAA,EAAE,GAAG,GAAA,CAAA;AAC5B,QAAA,IAAM22C,GAAM,GAAA,CAAA,CAAA;AAEZ,QAAA,IAAK77C,CAAI,GAAA,CAAA,EAAGA,CAAIs0H,GAAAA,MAAAA,EAAQt0H,CAAK,EAAA,CAAA;AAC3B,YAAA,IAAM6F,CAAIivH,GAAAA,GAAAA,GAAMtwH,IAAKsiB,CAAAA,GAAG,CAACkuG,UAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAMp0H,CAAIk0H,GAAAA,GAAAA,GAAMtwH,IAAKoiB,CAAAA,GAAG,CAACouG,UAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAMrpF,EAAK9lC,GAAAA,CAAAA,KAAM,CAAKjF,IAAAA,CAAAA,KAAM,CAAI,GAAA,CAAA,GAAIA,CAAI4D,GAAAA,IAAAA,CAAK6D,IAAI,CAACxC,CAAIA,GAAAA,CAAAA,GAAIjF,CAAIA,GAAAA,CAAAA,CAAAA,CAAAA;AAC9D,YAAA,IAAMgsC,EAAK/mC,GAAAA,CAAAA,KAAM,CAAKjF,IAAAA,CAAAA,KAAM,CAAI,GAAA,CAAA,GAAI,CAACiF,CAAAA,GAAIrB,IAAK6D,CAAAA,IAAI,CAACxC,CAAAA,GAAIA,IAAIjF,CAAIA,GAAAA,CAAAA,CAAAA,CAAAA;AAE/D,YAAA,IAAMiC,SAAS7C,CAAI,GAAA,CAAA,CAAA;AAEnB,YAAA,IAAI,CAACqB,CAAC,CAACwB,MAAAA,CAAO,GAAGgD,CAAAA,CAAAA;AACjB,YAAA,IAAI,CAACxE,CAAC,CAACwB,MAAAA,GAAS,EAAE,GAAGjC,CAAAA,CAAAA;YACrB,IAAI,CAACszH,EAAE,CAACrxH,MAAAA,CAAO,GAAGgD,CAAI8lC,GAAAA,EAAAA,GAAKopF,eAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;YACtD,IAAI,CAACq4E,EAAE,CAACrxH,MAAAA,GAAS,EAAE,GAAGjC,CAAAA,GAAIgsC,EAAKmoF,GAAAA,YAAAA,GAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;YAC1D,IAAI,CAAChxC,GAAG,CAAChI,MAAAA,CAAO,GAAGgD,CAAI8lC,GAAAA,EAAAA,GAAKopF,eAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;YACvD,IAAI,CAAChxC,GAAG,CAAChI,MAAAA,GAAS,EAAE,GAAGjC,CAAAA,GAAIgsC,EAAKmoF,GAAAA,YAAAA,GAAezqD,SAAYzuB,GAAAA,GAAAA,CAAAA;AAC3Dm5E,YAAAA,UAAAA,IAActuG,KAAQm1B,GAAAA,GAAAA,CAAAA;AACxB,SAAA;AACF,KAAA,CAAA;AAzLWm4E,IAAAA,OAAAA,QAAAA,CAAAA;EAAiB7L,cA0L7B;;ACtMD;AAKA;;;;;AAKC,IACM,IAAA,SAAMl+B,iBAAD,SAAL,cAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,SAAAA,EAAAA,cAAAA,CAAAA,CAAAA;aAAAA,SAiCEpkF,CAAAA,CAAK,EAAEjF,CAAK,EAAE8Q,KAAS,EAAEC,MAAU,EAAE24D,SAAc,EAAA;AAAnDzkE,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAGjF,QAAAA,IAAAA,cAAAA,CAAI,GAAA,CAAA,CAAA;AAAG8Q,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,CAAA,CAAA;AAAGC,QAAAA,IAAAA,mBAAAA,MAAS,GAAA,CAAA,CAAA;AAAG24D,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,EAAA,CAAA;;;AAE5D,QAAA,KAAA,CAAKzkE,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,KAAA,CAAKjF,CAAC,GAAGA,CAAAA,CAAAA;AACT,QAAA,KAAA,CAAK8Q,KAAK,GAAGA,KAAAA,CAAAA;AACb,QAAA,KAAA,CAAKC,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,KAAA,CAAK24D,SAAS,GAAGA,SAAAA,CAAAA;;;AAvCR2f,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AA0CX;;;;AAIC,MACDgrC,MAAAA,CAAAA,SASC,GATDA,SAAAA,UAAWpqH,GAAe,EAAA;AACxBA,QAAAA,GAAAA,GAAMA,OAAO,IAhDJo/E,SAAAA,EAAAA,CAAAA;AAkDTp/E,QAAAA,GAAAA,CAAIhF,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;AACdgF,QAAAA,GAAAA,CAAIjK,CAAC,GAAG,IAAI,CAACA,CAAC,CAAA;AACdiK,QAAAA,GAAAA,CAAI6G,KAAK,GAAG,IAAI,CAACA,KAAK,CAAA;AACtB7G,QAAAA,GAAAA,CAAI8G,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;QAExB,OAAO9G,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;MAIAzD,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACE,OAAO,IA/DE6iF,UA+DY,IAAI,CAACpkF,CAAC,EAAE,IAAI,CAACjF,CAAC,EAAE,IAAI,CAAC8Q,KAAK,EAAE,IAAI,CAACC,MAAM,EAAE,IAAI,CAAC24D,SAAS,CAAA,CAAA;AAC9E,KAAA,CAAA;AAEA;;;;AAIC,MACDpjE,MAAAA,CAAAA,QAQC,GARDA,SAAAA,SAAUguH,SAAoB,EAAA;AAC5B,QAAA,IAAI,CAACrvH,CAAC,GAAGqvH,SAAAA,CAAUrvH,CAAC,CAAA;AACpB,QAAA,IAAI,CAACjF,CAAC,GAAGs0H,SAAAA,CAAUt0H,CAAC,CAAA;AACpB,QAAA,IAAI,CAAC8Q,KAAK,GAAGwjH,SAAAA,CAAUxjH,KAAK,CAAA;AAC5B,QAAA,IAAI,CAACC,MAAM,GAAGujH,SAAAA,CAAUvjH,MAAM,CAAA;AAC9B,QAAA,IAAI,CAAC24D,SAAS,GAAG4qD,SAAAA,CAAU5qD,SAAS,CAAA;AAEpC,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;AAIC,MACD+5C,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,OAAQ6Q,SAAoB,EAAA;QAC1BA,SAAUhuH,CAAAA,QAAQ,CAAC,IAAI,CAAA,CAAA;QAEvB,OAAOguH,SAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS1tC,KAiGR,GAjGD,SAASA,KAAAA,CAAOv4C,MAAgB,EAAA;QAC9B,IAAIstC,EAAAA,CAAAA;AAEJ,QAAA,IAAMxgC,SAAY,GAAA,IAAI,CAACrqC,KAAK,GAAG,CAAA,CAAA;AAC/B,QAAA,IAAMsqC,UAAa,GAAA,IAAI,CAACrqC,MAAM,GAAG,CAAA,CAAA;AAEjC,QAAA,IAAM9L,CAAI,GAAA,IAAI,CAACA,CAAC,GAAGk2C,SAAAA,CAAAA;AACnB,QAAA,IAAMn7C,CAAI,GAAA,IAAI,CAACA,CAAC,GAAGo7C,UAAAA,CAAAA;AACnB,QAAA,IAAMygC,KAAKF,EAAK/3E,GAAAA,IAAAA,CAAK+B,GAAG,CAAC,CAAA,EAAG/B,KAAKI,GAAG,CAAC,IAAI,CAAC0lE,SAAS,GAAG,GAAA,EAAK,KAAK9lE,IAAKI,CAAAA,GAAG,CAACm3C,SAAWC,EAAAA,UAAAA,CAAAA,CAAAA,CAAAA;AACpF,QAAA,IAAM/yC,KAAK8yC,SAAY0gC,GAAAA,EAAAA,CAAAA;AACvB,QAAA,IAAMvzE,KAAK8yC,UAAaugC,GAAAA,EAAAA,CAAAA;QAExB,IAAI,EAAEE,EAAAA,IAAM,CAAKF,IAAAA,EAAAA,IAAM,KAAKtzE,EAAM,IAAA,CAAA,IAAKC,EAAM,IAAA,CAAA,CAAI,EAAA;AAC/C,YAAA,OAAA;AACF,SAAA;;AAGA,QAAA,IAAMisH,YAAe,GAAA,CAAA,CAAA;;QAErB,IAAM/zH,CAAAA,GAAI+zH,eAAe3wH,IAAKC,CAAAA,IAAI,CAAC,GAAMD,GAAAA,IAAAA,CAAK6D,IAAI,CAACo0E,EAAKF,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAMrxE,CAAI,GAAC9J,CAAI,GAAA,CAAA,IAAM6H,EAAAA,GAAK,CAAI,GAAA,CAAA,CAAMC,IAAAA,EAAK,GAAA,CAAA,GAAI,CAAA,CAAA,CAAA;AAE7C,QAAA,IAAIgC,MAAM,CAAG,EAAA;AACX,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI9J,MAAM,CAAG,EAAA;AACX6tC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGppC,CAAIoD,GAAAA,EAAAA,CAAAA;AAC5BgmC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGruC,CAAIsI,GAAAA,EAAAA,CAAAA;AAC5B+lC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGppC,CAAIoD,GAAAA,EAAAA,CAAAA;AAC5BgmC,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAGruC,CAAIsI,GAAAA,EAAAA,CAAAA;AAE5B,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAIyqH,EAAK,GAAA,CAAA,CAAA;QACT,IAAIC,EAAAA,GAAK,CAAK,GAAA,CAAA,IAAM3qH,EAAK,GAAA,CAAA,GAAI,CAAA,CAAK,GAAA,CAAA,CAAA;AAClC,QAAA,IAAI0kG,EAAKimB,GAAAA,EAAAA,CAAAA;AACT,QAAA,IAAIhmB,EAAK1iG,GAAAA,CAAAA,CAAAA;AAET,QAAA,IAAIo5C,KAAKr7C,EAAKwzE,GAAAA,EAAAA,CAAAA;AACd,QAAA,IAAIl4B,EAAKr7C,GAAAA,EAAAA,CAAAA;AACT,QAAA,IAAIo6C,KAAKz9C,CAAIy+C,GAAAA,EAAAA,CAAAA;AACb,QAAA,IAAIpf,KAAKr/B,CAAIy+C,GAAAA,EAAAA,CAAAA;AACb,QAAA,IAAIjB,KAAKziD,CAAI2jD,GAAAA,EAAAA,CAAAA;QAEbtV,MAAM,CAAC0kF,KAAK,GAAGrwE,EAAAA,CAAAA;QACfrU,MAAM,CAAC0kF,KAAK,GAAGtwE,EAAAA,CAAAA;QACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAGvwE,EAAAA,CAAAA;QACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAG1uF,EAAAA,CAAAA;AAEf,QAAA,IAAIh8B,EAAI,EAAA;AACN,YAAA,IAAMi8B,KAAKvkC,CAAI2jD,GAAAA,EAAAA,CAAAA;YAEftV,MAAM,CAAC0+D,KAAK,GAAGzoE,EAAAA,CAAAA;YACf+J,MAAM,CAAC0+D,KAAK,GAAGxoE,EAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGzoE,EAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGtqD,EAAAA,CAAAA;AACjB,SAAA;AAEA,QAAA,IAAK,IAAItjD,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIoB,GAAGpB,CAAK,EAAA,CAAA;AAC1B,YAAA,IAAMyF,IAAIjB,IAAKU,CAAAA,EAAE,GAAG,CAAKlF,IAAAA,IAAIoB,CAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAMkjD,GAAKr7C,GAAAA,EAAAA,GAAMzE,IAAKsiB,CAAAA,GAAG,CAACrhB,CAAKg3E,CAAAA,GAAAA,EAAAA,CAAAA;AAC/B,YAAA,IAAMl4B,GAAKr7C,GAAAA,EAAAA,GAAM1E,IAAKoiB,CAAAA,GAAG,CAACnhB,CAAK82E,CAAAA,GAAAA,EAAAA,CAAAA;AAC/B,YAAA,IAAMj5B,MAAKz9C,CAAIy+C,GAAAA,GAAAA,CAAAA;AACf,YAAA,IAAMpf,MAAKr/B,CAAIy+C,GAAAA,GAAAA,CAAAA;AACf,YAAA,IAAMjB,MAAKziD,CAAI2jD,GAAAA,GAAAA,CAAAA;AACf,YAAA,IAAMpf,MAAKvkC,CAAI2jD,GAAAA,GAAAA,CAAAA;YAEftV,MAAM,CAAC0kF,KAAK,GAAGrwE,GAAAA,CAAAA;YACfrU,MAAM,CAAC0kF,KAAK,GAAGtwE,GAAAA,CAAAA;YACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAGvwE,GAAAA,CAAAA;YACfpU,MAAM,CAAC,EAAE2kF,EAAAA,CAAG,GAAG1uF,GAAAA,CAAAA;YACf+J,MAAM,CAAC0+D,KAAK,GAAGzoE,GAAAA,CAAAA;YACf+J,MAAM,CAAC0+D,KAAK,GAAGxoE,GAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGzoE,GAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGtqD,GAAAA,CAAAA;AACjB,SAAA;QAEAgB,EAAKr7C,GAAAA,EAAAA,CAAAA;AACLs7C,QAAAA,EAAAA,GAAKr7C,EAAKqzE,GAAAA,EAAAA,CAAAA;AACVj5B,QAAAA,EAAAA,GAAKz9C,CAAIy+C,GAAAA,EAAAA,CAAAA;AACTpf,QAAAA,EAAAA,GAAKr/B,CAAIy+C,GAAAA,EAAAA,CAAAA;AACTjB,QAAAA,EAAAA,GAAKziD,CAAI2jD,GAAAA,EAAAA,CAAAA;AACT,QAAA,IAAMpf,MAAKvkC,CAAI2jD,GAAAA,EAAAA,CAAAA;QAEftV,MAAM,CAAC0kF,KAAK,GAAGrwE,EAAAA,CAAAA;QACfrU,MAAM,CAAC0kF,KAAK,GAAGtwE,EAAAA,CAAAA;QACfpU,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGzoE,GAAAA,CAAAA;QACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGtqD,EAAAA,CAAAA;AAEf,QAAA,IAAIr6C,EAAI,EAAA;YACNgmC,MAAM,CAAC0kF,KAAK,GAAGzuF,EAAAA,CAAAA;YACf+J,MAAM,CAAC0kF,KAAK,GAAGtwE,EAAAA,CAAAA;YACfpU,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAGzoE,GAAAA,CAAAA;YACf8J,MAAM,CAAC,EAAE2+D,EAAAA,CAAG,GAAG1oE,EAAAA,CAAAA;AACjB,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAASuiD,WAwCR,GAxCD,SAASA,WAAAA,CAAax4C,MAAgB,EAAEk4C,QAAkB,EAAEipC,cAAsB,EAAEnsC,OAAiB,EAAEosC,aAAqB,EAAA;QAC1H,IAAIphF,MAAAA,CAAOxvC,MAAM,KAAK,CAAG,EAAA;AACvB,YAAA,OAAA;AACF,SAAA;;AAGA,QAAA,IAAIo0H,OAAU,GAAA,CAAA,CAAA;AAAG,QAAA,IACfC,OAAU,GAAA,CAAA,CAAA;QAEZ,IAAK,IAAI9zH,IAAI,CAAGA,EAAAA,CAAAA,GAAIivC,OAAOxvC,MAAM,EAAEO,KAAK,CAAG,CAAA;YACzC6zH,OAAW5kF,IAAAA,MAAM,CAACjvC,CAAE,CAAA,CAAA;YACpB8zH,OAAW7kF,IAAAA,MAAM,CAACjvC,CAAAA,GAAI,CAAE,CAAA,CAAA;AAC1B,SAAA;QACA6zH,OAAY5kF,IAAAA,MAAAA,CAAOxvC,MAAM,GAAG,CAAA,CAAA;QAC5Bq0H,OAAY7kF,IAAAA,MAAAA,CAAOxvC,MAAM,GAAG,CAAA,CAAA;;AAG5B,QAAA,IAAImsD,KAAQwkE,GAAAA,cAAAA,CAAAA;QAEZjpC,QAAQ,CAACv7B,KAAQ,GAAA,CAAA,CAAE,GAAGioE,OAAAA,CAAAA;AACtB1sC,QAAAA,QAAQ,CAAEv7B,KAAQ,GAAA,CAAA,GAAK,EAAE,GAAGkoE,OAAAA,CAAAA;AAC5B,QAAA,IAAMC,WAAcnoE,GAAAA,KAAAA,EAAAA,CAAAA;;QAGpB,IAAK,IAAI5rD,KAAI,CAAGA,EAAAA,EAAAA,GAAIivC,OAAOxvC,MAAM,EAAEO,MAAK,CAAG,CAAA;AACzCmnF,YAAAA,QAAQ,CAACv7B,KAAQ,GAAA,CAAA,CAAE,GAAG3c,MAAM,CAACjvC,EAAE,CAAA,CAAA;YAC/BmnF,QAAQ,CAAC,KAAS,GAAA,CAAA,GAAK,EAAE,GAAGl4C,MAAM,CAACjvC,EAAAA,GAAI,CAAE,CAAA,CAAA;AAEzC,YAAA,IAAIA,KAAI,CAAG,EAAA;gBACTikF,OAAO,CAACosC,gBAAgB,GAAGzkE,KAAAA,CAAAA;gBAC3Bq4B,OAAO,CAACosC,gBAAgB,GAAG0D,WAAAA,CAAAA;gBAC3B9vC,OAAO,CAACosC,aAAgB,EAAA,CAAA,GAAGzkE,KAAQ,GAAA,CAAA,CAAA;AACrC,aAAA;AACAA,YAAAA,KAAAA,EAAAA,CAAAA;AACF,SAAA;;QAGAq4B,OAAO,CAACosC,aAAgB,EAAA,CAAA,GAAG0D,WAAc,GAAA,CAAA,CAAA;QACzC9vC,OAAO,CAACosC,gBAAgB,GAAG0D,WAAAA,CAAAA;QAC3B9vC,OAAO,CAACosC,aAAgB,EAAA,CAAA,GAAGzkE,KAAQ,GAAA,CAAA,CAAA;AACrC,KAAA,CAAA;AAvOWq+B,IAAAA,OAAAA,SAAAA,CAAAA;EAAkBk+B,cAwO9B,CAAA;;ACnPD;AAaO,IAAA,SAAMiN,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,SAAAA,CAKT,YAAkC,EAAA;aAA1B/vC,YAAAA,GAAAA,YAAAA,CAAAA;aAJVgwC,WAA8B,GAAA,IAAA,CAAA;AAC9BnuC,QAAAA,IAAAA,CAAAA,eAAAA,GAAoE,EAAE,CAAA;;AAF3DkuC,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAQX,4BACAtuC,MAAAA,CAAAA,SA2CC,GA3CDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAACuuC,WAAW,GAAG,IAAA,CAAA;AACnB,QAAA,IAAI,CAACnuC,eAAe,CAACznF,MAAM,GAAG,CAAA,CAAA;QAC9B,IAAM0mB,IAAAA,GAAO,IAAI,CAACk/D,YAAY,CAAA;QAE9B,IAA0Bl/D,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKmvG,YAAY,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlCC,YAAAA,IAAAA,WAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAM7hD,MAAAA,GAAS6hD,YAAY7hD,MAAM,CAAA;YACjC,IAAM9hE,IAAAA,GAAO2jH,YAAY3jH,IAAI,CAAA;YAE7B,OAAQ8hE,MAAAA;gBACN,KAAK,eAAA;AAAiB,oBAAA;AACpB,wBAAA,IAAI,CAACiW,aAAa,CAAC/3E,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAEhF,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK,QAAA;AAAU,oBAAA;wBACb,IAAI,CAAC03E,MAAM,CAAC13E,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAE5B,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK,SAAA;AAAW,oBAAA;wBACd,IAAI,CAACk4E,OAAO,CAACl4E,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAExD,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK,UAAA;AAAY,oBAAA;AACf,wBAAA,IAAI,CAAC04E,QAAQ,CAAC14E,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAE3E,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK,MAAA;AAAQ,oBAAA;wBACX,IAAI,CAACu4E,IAAI,CAACv4E,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAA,CAAE,EAAEA,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,CAAE,CAAA,EAAEA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAErD,wBAAA,MAAA;AACF,qBAAA;gBACA,KAAK,WAAA;AAAY,oBAAA;AACf,wBAAA,IAAI,CAACi2E,SAAS,EAAA,CAAA;AAEd,wBAAA,MAAA;AACF,qBAAA;AACF,aAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC2tC,OAAO,EAAA,CAAA;AACd,KAAA,CAAA;AAEA;;;;;;;;;;;;AAYC,MACD7rC,OAAAA,aAgBC,GAhBDA,SAAAA,aAAAA,CACEynC,IAAY,EAAEC,IAAY,EAAEC,IAAY,EAAEC,IAAY,EACtD1rH,CAAS,EAAEjF,CAAS,EACpBypE,UAAmB,EAAA;AAEnB,QAAA,IAAI,CAACorD,UAAU,EAAA,CAAA;QACf,IAAMJ,WAAAA,GAAc,IAAI,CAACA,WAAW,CAAA;AAEpCpE,QAAAA,mBAAAA,CACEoE,WAAYpmF,CAAAA,MAAM,EAClBomF,WAAAA,CAAY1E,KAAK,EAAE0E,WAAAA,CAAYzE,KAAK,EACpCQ,IAAMC,EAAAA,IAAAA,EAAMC,IAAMC,EAAAA,IAAAA,EAAM1rH,GAAGjF,CAC3BypE,EAAAA,UAAAA,CAAAA,CAAAA;AAGF,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEAif,IAAAA,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAQzjF,CAAAA,CAAS,EAAEjF,CAAS,EAAA;QAC1B,IAAI,CAAC80H,SAAS,CAAC7vH,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;AAElB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;MAKAinF,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,SAAAA,GAAAA;QACE,IAAI,CAAC2tC,OAAO,CAAC,IAAA,CAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;;;;AASC,MACD1rC,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAASjkF,CAAAA,CAAS,EAAEjF,CAAS,EAAE+0H,OAAe,EAAEC,OAAe,EAAEtnG,SAAmB,EAAA;;QAGlF,IAAI,CAACunG,SAAS,CAAC,IAAIjsC,QAAQ/jF,CAAGjF,EAAAA,CAAAA,EAAG+0H,SAASC,OAAUtnG,CAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAEpD,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEAg8D,IAAAA,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,QAAUC,CAAAA,UAAkB,EAAEC,WAAmB,EAAEC,WAAmB,EAAEC,cAAsB,EAAEC,cAAsB,EAAEspC,QAAkB,EAAE3lG,SAAmB,EAAA;QAC7J,IAAI,CAACunG,SAAS,CAAC,IAAI7B,QAAAA,CAASzpC,YAAYC,WAAaC,EAAAA,WAAAA,EAAaC,cAAgBC,EAAAA,cAAAA,EAAgBspC,QAAW3lG,CAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAE7G,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;;;AAQC,MACD67D,MAAAA,CAAAA,IAIC,GAJDA,SAAAA,KAAMtkF,CAAS,EAAEjF,CAAS,EAAEgL,CAAS,EAAES,CAAS,EAAEi+D,SAAiB,EAAEh8C,SAAmB,EAAA;QACtF,IAAI,CAACunG,SAAS,CAAC,IAAI5rC,UAAUpkF,CAAGjF,EAAAA,CAAAA,EAAGgL,CAAGS,EAAAA,CAAAA,EAAGi+D,SAAYh8C,CAAAA,EAAAA,SAAAA,CAAAA,CAAAA;AAErD,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;;;AAQC,MACDunG,OAAAA,SAMC,GANDA,SAAAA,SAAWxuC,CAAAA,KAAqB,EAAE//C,MAAgB,EAAA;AAChD,QAAA,IAAI,CAACkuF,OAAO,EAAA,CAAA;AAEZ,QAAA,IAAI,CAACtuC,eAAe,CAACvlF,IAAI,CAAC;YAAE0lF,KAAAA,EAAAA,KAAAA;YAAO/4D,SAAWgZ,EAAAA,MAAAA;AAAO,SAAA,CAAA,CAAA;AAErD,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;AAMC,MACD,OAAQouF,SAcP,GAdD,SAAQA,SAAW7vH,CAAAA,CAAS,EAAEjF,CAAS,EAAA;QACrC,IAAIy0H,WAAAA,GAAc,IAAI,CAACA,WAAW,CAAA;AAElC,QAAA,IAAIA,WAAa,EAAA;AACf,YAAA,IAAI,CAACG,OAAO,EAAA,CAAA;AACd,SAAA;AAEAH,QAAAA,WAAAA,GAAc,IAAIxqC,OAAAA,EAAAA,CAAAA;AAElBwqC,QAAAA,WAAAA,CAAYpmF,MAAM,CAACttC,IAAI,CAACkE,CAAGjF,EAAAA,CAAAA,CAAAA,CAAAA;QAE3B,IAAI,CAACy0H,WAAW,GAAGA,WAAAA,CAAAA;AAEnB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;;AAOC,MACD,MAAQG,CAAAA,OAYP,GAZD,SAAQA,QAAS3tC,SAAiB,EAAA;AAAjBA,QAAAA,IAAAA,sBAAAA,SAAY,GAAA,KAAA,CAAA;QAC3B,IAAMR,KAAAA,GAAQ,IAAI,CAACguC,WAAW,CAAA;AAE9B,QAAA,IAAIhuC,SAASA,KAAMp4C,CAAAA,MAAM,CAACxvC,MAAM,GAAG,CAAG,EAAA;AACpC4nF,YAAAA,KAAAA,CAAMQ,SAAS,GAAGA,SAAAA,CAAAA;AAElB,YAAA,IAAI,CAACX,eAAe,CAACvlF,IAAI,CAAC;gBAAE0lF,KAAAA,EAAAA,KAAAA;AAAM,aAAA,CAAA,CAAA;AACpC,SAAA;QAEA,IAAI,CAACguC,WAAW,GAAG,IAAA,CAAA;AAEnB,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQI,UAKP,GALD,SAAQA,UAAAA,CAAYpjH,KAAY,EAAA;QAC9B,IAAI,IAAI,CAACgjH,WAAW,EAAE;AAAE,YAAA,OAAA;AAAQ,SAAA;QAEhC,IAAI,CAACA,WAAW,GAAG,IAAIxqC,OAAAA,EAAAA,CAAAA;AACvB,QAAA,IAAI,CAACwqC,WAAW,CAACpmF,MAAM,CAACttC,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AAClC,KAAA,CAAA;AAhNWyzH,IAAAA,OAAAA,SAAAA,CAAAA;AAiNZ,CAAA;;AC9ND;AAOO,IAAA,YAAM9vC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;AACXgwC,QAAAA,IAAAA,CAAAA,YAAAA,GAAkC,EAAE,CAAA;aAE5B3/E,KAAQ,GAAA,KAAA,CAAA;;AAHL2vC,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAuBX;;;;;;;;;;;;AAYC,MACDqE,OAAAA,aAUC,GAVDA,SAAAA,aAAAA,CACEynC,IAAY,EAAEC,IAAY,EAAEC,IAAY,EAAEC,IAAY,EACtD1rH,CAAS,EAAEjF,CAAS,EACpBypE,UAAmB,EAAA;AAEnB,QAAA,IAAI,CAACirD,YAAY,CAAC3zH,IAAI,CAAC;YAAE+xE,MAAQ,EAAA,eAAA;YAAiB9hE,IAAM,EAAA;AAACw/G,gBAAAA,IAAAA;AAAMC,gBAAAA,IAAAA;AAAMC,gBAAAA,IAAAA;AAAMC,gBAAAA,IAAAA;AAAM1rH,gBAAAA,CAAAA;AAAGjF,gBAAAA,CAAAA;AAAGypE,gBAAAA,UAAAA;AAAW,aAAA;AAAC,SAAA,CAAA,CAAA;QAEnG,IAAI,CAAC10B,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;AAKC,MACD2zC,OAAAA,MAMC,GANDA,SAAAA,MAAQzjF,CAAAA,CAAS,EAAEjF,CAAS,EAAA;AAC1B,QAAA,IAAI,CAAC00H,YAAY,CAAC3zH,IAAI,CAAC;YAAE+xE,MAAQ,EAAA,QAAA;YAAU9hE,IAAM,EAAA;AAAC/L,gBAAAA,CAAAA;AAAGjF,gBAAAA,CAAAA;AAAE,aAAA;AAAC,SAAA,CAAA,CAAA;QAExD,IAAI,CAAC+0C,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;MAKAkyC,MAAAA,CAAAA,SAMC,GANDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAI,CAACytC,YAAY,CAAC3zH,IAAI,CAAC;YAAE+xE,MAAQ,EAAA,WAAA;AAAa9hE,YAAAA,IAAAA,EAAM,EAAE;AAAC,SAAA,CAAA,CAAA;QAEvD,IAAI,CAAC+jC,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;;;;AASC,MACDm0C,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAASjkF,CAAAA,CAAS,EAAEjF,CAAS,EAAE+0H,OAAe,EAAEC,OAAe,EAAEtnG,SAAmB,EAAA;AAClF,QAAA,IAAI,CAACgnG,YAAY,CAAC3zH,IAAI,CAAC;YAAE+xE,MAAQ,EAAA,SAAA;YAAW9hE,IAAM,EAAA;AAAC/L,gBAAAA,CAAAA;AAAGjF,gBAAAA,CAAAA;AAAG+0H,gBAAAA,OAAAA;AAASC,gBAAAA,OAAAA;AAAStnG,gBAAAA,SAAAA;AAAU,aAAA;AAAC,SAAA,CAAA,CAAA;QAEtF,IAAI,CAACqnB,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA;;;;;;;;AAQC,MACDw0C,MAAAA,CAAAA,IAMC,GANDA,SAAAA,KAAMtkF,CAAS,EAAEjF,CAAS,EAAEgL,CAAS,EAAES,CAAS,EAAEi+D,SAAiB,EAAEh8C,SAAmB,EAAA;AACtF,QAAA,IAAI,CAACgnG,YAAY,CAAC3zH,IAAI,CAAC;YAAE+xE,MAAQ,EAAA,MAAA;YAAQ9hE,IAAM,EAAA;AAAC/L,gBAAAA,CAAAA;AAAGjF,gBAAAA,CAAAA;AAAGgL,gBAAAA,CAAAA;AAAGS,gBAAAA,CAAAA;AAAGi+D,gBAAAA,SAAAA;AAAWh8C,gBAAAA,SAAAA;AAAU,aAAA;AAAC,SAAA,CAAA,CAAA;QAElF,IAAI,CAACqnB,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAEA20C,IAAAA,MAAAA,CAAAA,QAMC,GANDA,SAAAA,QAAUC,CAAAA,UAAkB,EAAEC,WAAmB,EAAEC,WAAmB,EAAEC,cAAsB,EAAEC,cAAsB,EAAEspC,QAAkB,EAAE3lG,SAAmB,EAAA;AAC7J,QAAA,IAAI,CAACgnG,YAAY,CAAC3zH,IAAI,CAAC;YAAE+xE,MAAQ,EAAA,UAAA;YAAY9hE,IAAM,EAAA;AAAC24E,gBAAAA,UAAAA;AAAYC,gBAAAA,WAAAA;AAAaC,gBAAAA,WAAAA;AAAaC,gBAAAA,cAAAA;AAAgBC,gBAAAA,cAAAA;AAAgBspC,gBAAAA,QAAAA;AAAU3lG,gBAAAA,SAAAA;AAAU,aAAA;AAAC,SAAA,CAAA,CAAA;QAE/I,IAAI,CAACqnB,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;IAEAwjB,MAAAA,CAAAA,KAKC,GALDA,SAAAA,KAAAA,GAAAA;AACE,QAAA,IAAI,CAACm8D,YAAY,CAAC71H,MAAM,GAAG,CAAA,CAAA;QAC3B,IAAI,CAACk2C,KAAK,GAAG,IAAA,CAAA;AAEb,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AA3HW2vC,IAAAA,aAAAA,CAAAA,YAAAA,EAAAA;;YAUP0B,GAAAA,EAAAA,WAAAA;;;;MAAJ,SAAA,GAAA,GAAA;AACE,gBAAA,IAAI,CAAC,IAAI,CAAC8uC,UAAU,EAAE;AACpB,oBAAA,IAAI,CAACA,UAAU,GAAG,IAAIV,UAAU,IAAI,CAAA,CAAA;AACtC,iBAAA;gBAEA,IAAI,IAAI,CAACz/E,KAAK,EAAE;oBACd,IAAI,CAACA,KAAK,GAAG,KAAA,CAAA;oBACb,IAAI,CAACmgF,UAAU,CAAChvC,SAAS,EAAA,CAAA;AAC3B,iBAAA;gBAEA,OAAO,IAAI,CAACgvC,UAAU,CAAA;AACxB,aAAA;;;AArBWxwC,IAAAA,OAAAA,YAAAA,CAAAA;AA4HZ,CAAA;;AChID,IAAMywC,2BAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,GAAAA;AACK9uG,QAAAA,IAAAA,CAAAA,QAAAA,GAAgC,EAAE,CAAA;;AADvC8uG,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;IAMJ92G,MAAAA,CAAAA,OAIC,GAJDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAACgI,QAAQ,CAACvX,OAAO,CAAC9N,SAAAA,CAAAA,EAAAA;AAAKA,YAAAA,OAAAA,CAAAA,CAAEo0H,MAAM,EAAA,CAAA;;;AAEnC,QAAA,IAAI,CAAC/uG,QAAQ,CAACxnB,MAAM,GAAG,CAAA,CAAA;AACzB,KAAA,CAAA;IAEAw2H,MAAAA,CAAAA,SAkBC,GAlBDA,SAAAA,SAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAAChvG,QAAQ,CAACxnB,MAAM,KAAK,CAAG,EAAA;AAC9B,YAAA,IAAM4U,MAAS,GAAA,IAAI,CAAC4S,QAAQ,CAACivG,KAAK,EAAA,CAAA;YAElC1jH,WAAY6B,CAAAA,MAAAA,CAAAA,CAAAA;YAEZ,OAAOA,MAAAA,CAAAA;AACT,SAAA;AACA,QAAA,IAAI8uF,UAAUF,6BAAgC,CAAA,EAAA;YAC5C,OAAO5yF,MAAAA,CAAO8lH,sBAAsB,CAAC,EAAI,EAAA,EAAA,CAAA,CAAA;SACpC,MAAA;;YAEL,IAAMC,SAAAA,GAAYxhE,QAASC,CAAAA,aAAa,CAAC,QAAA,CAAA,CAAA;YAEzCuhE,SAAU/mE,CAAAA,UAAU,CAAC,IAAM,EAAA;gBAAEgnE,kBAAoB,EAAA,IAAA;AAAK,aAAA,CAAA,CAAA;YAEtD,OAAOD,SAAAA,CAAAA;AACT,SAAA;AACF,KAAA,CAAA;AAEAE,IAAAA,MAAAA,CAAAA,UAQC,GARDA,SAAAA,UAAAA,CAAYjiH,MAAyB,EAAA;AACnCA,QAAAA,MAAAA,CAAO3C,KAAK,GAAG,CAAA,CAAA;AACf2C,QAAAA,MAAAA,CAAO1C,MAAM,GAAG,CAAA,CAAA;AAChB,QAAA,IAAI,IAAI,CAACsV,QAAQ,CAACxnB,MAAM,GAAG,CAAG,EAAA;YAC5B4D,OAAQ,CAAA,IAAI,CAAC4jB,QAAQ,EAAE5S,MAAAA,CAAAA,CAAAA;SAClB,MAAA;AACLA,YAAAA,MAAAA,CAAO2hH,MAAM,EAAA,CAAA;AACf,SAAA;AACF,KAAA,CAAA;AAxCID,IAAAA,OAAAA,UAAAA,CAAAA;;AA2CC,IAAMQ,UAAa,GAAA,IAAIR,UAAa;;AC1CpC,IAAA,UAAMS,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,CAmBExzH,OAAgC,EAAA;aAd7C0O,KAAQ,GAAA,CAAA,CAAA;aACRC,MAAS,GAAA,CAAA,CAAA;QAcP,IAAI,CAACiR,MAAM,CAAC5f,OAAAA,CAAAA,CAAAA;;AApBHwzH,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAuBX5zG,IAAAA,MAAAA,CAAAA,MAsBC,GAtBDA,SAAAA,MAAAA,CAAQ5f,OAAgC,EAAA;QACtC,IAUIA,mBAAAA,GAAAA,OAAAA,CATFyzH,YAAAA,UAAa,GAAA,mBAAA,KAAA,KAAA,CAAA,GAAA,GAAA,GAAA,mBAAA,EAAA,kBAAA,GASXzzH,QARF0zH,SAAAA,EAAAA,SAAAA,GAAAA,kBAAAA,KAAAA,KAAAA,CAAAA,GAAY,kDAQV1zH,OAPF2zH,CAAAA,YAAAA,EAAAA,kDAAehzG,YAAiB,CAACk6F,IAAI,GAAA,qBAAA,EAAA,0BAAA,GAOnC76G,QANF4zH,iBAAAA,EAAAA,iBAAAA,GAAAA,0BAAAA,KAAAA,KAAAA,CAAAA,GAAoBjzG,iBAAsB,CAACgjB,GAAG,GAM5C3jC,0BAAAA,EAAAA,kBAAAA,GAAAA,OAAAA,CALF6zH,WAAAA,SAAYlzG,GAAAA,kBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,aAAkB,CAAC9kB,IAAI,8CAKjCmE,OAJF8zH,CAAAA,WAAAA,EAAAA,gDAAc,CAIZ9zH,GAAAA,oBAAAA,EAAAA,kBAAAA,GAAAA,OAAAA,CAHF+zH,WAAAA,SAAY,GAAA,kBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,GAAA,kBAAA,EACZC,WAEEh0H,OAFFg0H,CAAAA,QAAAA,EAAAA,mBAAAA,GAEEh0H,OADFi0H,CAAAA,UAAAA,EAAAA,UAAaD,GAAAA,mBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,QAAAA,GAAAA,mBAAAA,CAAAA;QAGf,IAAI,CAACF,WAAW,GAAGA,WAAAA,CAAAA;QACnB,IAAI,CAACI,QAAQ,GAAGP,YAAAA,CAAAA;QAChB,IAAI,CAACC,iBAAiB,GAAGA,iBAAAA,CAAAA;QACzB,IAAI,CAACC,SAAS,GAAGA,SAAAA,CAAAA;QACjB,IAAI,CAACnlH,KAAK,GAAGglH,SAAAA,CAAAA;QACb,IAAI,CAAC/kH,MAAM,GAAG8kH,UAAAA,CAAAA;QAEd,IAAI,CAACQ,UAAU,GAAGA,UAAAA,CAAAA;QAClB,IAAI,CAACF,SAAS,GAAGA,SAAAA,CAAAA;AACnB,KAAA,CAAA;AAEA;;;;;;;;AAQC,MACDI,MAAAA,CAAAA,UA2BC,GA3BDA,SAAAA,UAAY/Q,CAAAA,KAAgB,EAAEgR,SAAiB,EAAEH,UAAkB,EAAED,QAAgB,EAAEK,eAAwB,EAAA;QAC7G,IAAQC,YAAclR,KAAdkR,CAAAA,SAAAA,CAAAA;;AAER,QAAA,IAAMC,OAAU,GAACN,CAAAA,UAAAA,GAAaD,QAAO,IAAK,CAAA,CAAA;;AAE1C,QAAA,IAAMQ,UAAaR,GAAAA,QAAAA,CAAAA;AACnB,QAAA,IAAMS,oBAAoBJ,eAAoB14H,KAAAA,SAAAA,GAAY04H,kBAAkBJ,UAAcG,IAAAA,YAAY,CAAA,CAAA,CAAA;AACtG,QAAA,IAAIM,YAAe,GAAA,CAAA,CAAA;QAEnB,OAAQ,IAAI,CAACd,iBAAiB;YAC5B,KAAKjzG,iBAAsB,CAACgjB,GAAG;AAC7B+wF,gBAAAA,YAAAA,GAAeF,UAAaD,GAAAA,OAAAA,CAAAA;AAE5B,gBAAA,MAAA;YACF,KAAK5zG,iBAAsB,CAACg0G,MAAM;gBAChCD,YAAe,GAAC,CAAA,IAAI,CAAC/lH,MAAM,GAAG2lH,SAAAA,GAAYG,iBAAoBD,GAAAA,UAAS,IAAK,CAAA,CAAA;AAE5E,gBAAA,MAAA;YACF,KAAK7zG,iBAAsB,CAACijB,MAAM;AAChC8wF,gBAAAA,YAAAA,GAAe,IAAK,CAAC/lH,MAAM,GAAG2lH,YAAYG,iBAAqBF,GAAAA,OAAAA,CAAAA;AAE/D,gBAAA,MAAA;AAGJ,SAAA;QAEA,OAAOG,YAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;;AAKC,MACDE,OAAAA,UAqBC,GArBDA,SAAAA,UAAYxR,CAAAA,KAAgB,EAAEyR,QAAgB,EAAA;AAC5C,QAAA,IAAIC,OAAU,GAAA,CAAA,CAAA;QAEd,OAAQ,IAAI,CAACjB,SAAS;YACpB,KAAKlzG,aAAkB,CAAC9kB,IAAI;gBAC1Bi5H,OAAU,GAAA,CAAA,CAAA;AAEV,gBAAA,MAAA;YACF,KAAKn0G,aAAkB,CAACg0G,MAAM;gBAC5BG,OAAU,GAAC,CAAA,IAAI,CAACpmH,KAAK,GAAG00G,KAAMkR,CAAAA,SAAS,GAAGO,QAAO,IAAK,CAAA,CAAA;AAEtD,gBAAA,MAAA;YACF,KAAKl0G,aAAkB,CAAC7kB,KAAK;AAC3Bg5H,gBAAAA,OAAAA,GAAW,IAAI,CAACpmH,KAAK,GAAG00G,KAAAA,CAAMkR,SAAS,GAAGO,QAAAA,CAAAA;AAE1C,gBAAA,MAAA;AAGJ,SAAA;QAEA,OAAOC,OAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACD1kF,OAAAA,OAGC,GAHDA,SAAAA,OAAS1hC,CAAAA,KAAa,EAAEC,MAAc,EAAA;QACpC,IAAI,CAACD,KAAK,GAAGA,KAAAA,CAAAA;QACb,IAAI,CAACC,MAAM,GAAGA,MAAAA,CAAAA;AAChB,KAAA,CAAA;AA1HW6kH,IAAAA,OAAAA,UAAAA,CAAAA;AA2HZ,CAAA;;AC7HM,IAAA,SAAMuB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,SAAAA,CA0EE/0H,OAAgC,EAAA;AAjE7C;;MAGAg1H,IAAAA,CAAAA,WAAAA,GAAc;;AACd;;MAGAC,IAAAA,CAAAA,eAAAA,GAAkB;;AAClB;;MAGAC,IAAAA,CAAAA,UAAAA,GAAa;;AAKb;;MAGAC,IAAAA,CAAAA,YAAAA,GAAe;;AACf;;MAGAC,IAAAA,CAAAA,SAAAA,GAAY;;AAiCZC,QAAAA,IAAAA,CAAAA,QAAAA,GAAW;;AAEX;;AAEC,MAAA,IAAA,CACDf,SAAY,GAAA,CAAA,CAAA;aAEZgB,UAAa,GAAA,CAAA,CAAA;QAGX,IAAI,CAAC11G,MAAM,CAAC5f,OAAAA,CAAAA,CAAAA;;AA3EH+0H,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AA8EXn1G,IAAAA,MAAAA,CAAAA,MA2CC,GA3CDA,SAAAA,MAAAA,CAAQ5f,OAAgC,EAAA;QACtC,IAA6IA,kBAAAA,GAAAA,OAAAA,CAArIu1H,WAAAA,SAAY,GAAA,kBAAA,KAAA,KAAA,CAAA,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;SAAE,GAA6Gv1H,kBAAAA,EAAAA,iBAAAA,GAAAA,OAAAA,CAA3Gg0H,UAAAA,QAAW,GAAA,iBAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iBAAA,EAAIwB,UAA4Fx1H,OAA5Fw1H,CAAAA,OAAAA,EAASC,SAAmFz1H,OAAnFy1H,CAAAA,MAAAA,EAAAA,mBAAAA,GAAmFz1H,QAA3E01H,UAAAA,EAAAA,UAAAA,GAAAA,mBAAAA,KAAAA,KAAAA,CAAAA,GAAa,qDAA8D11H,OAApD21H,CAAAA,SAAAA,EAAAA,4CAAY,QAAwC31H,GAAAA,kBAAAA,EAAAA,mBAAAA,GAAAA,OAAAA,CAA9B6P,YAAAA,UAAa,GAAA,mBAAA,KAAA,KAAA,CAAA,GAAA,YAAA,GAAA,mBAAA,CAAA;QAE5H,IAAI,CAAC0lH,SAAS,GAAOA,EAAAA,CAAAA,MAAAA,CAAAA,SAAAA,CAAAA,CAAAA;;QAErB,IAAI,CAACK,UAAU,GAAGF,UAAAA,CAAAA;;QAElB,IAAI,CAACC,SAAS,GAAGA,SAAAA,CAAAA;QACjB,IAAI,CAAC9lH,UAAU,GAAGA,UAAAA,CAAAA;AAClB,QAAA,IAAI,CAACmkH,QAAQ,GAAGA,QAAAA,CAAAA;;QAGhB,IAAI,CAACkB,UAAU,GAAG,KAAA,CAAA;QAClB,IAAI,CAACW,YAAY,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QAChC,IAAI,CAACV,YAAY,GAAG,CAAA,CAAA;AAEJK,QAAAA,IAAAA,qBAAAA,CAAAA;QAAhB,IAAIA,OAAAA,IAAW,CAACA,CAAAA,qBAAAA,GAAAA,OAAQL,CAAAA,YAAY,KAApBK,IAAAA,GAAAA,qBAAAA,GAAwB,CAAA,IAAK,CAAG,EAAA;YAC9C,IAAI,CAACN,UAAU,GAAG,IAAA,CAAA;AACOM,YAAAA,IAAAA,qBAAAA,CAAAA;YAAzB,IAAI,CAACK,YAAY,GAAQL,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,wBAAAA,OAAQK,CAAAA,YAAY,YAApBL,qBAAwB,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACzCA,YAAAA,IAAAA,sBAAAA,CAAAA;YAApB,IAAI,CAACL,YAAY,GAAGK,CAAAA,yBAAAA,OAAQL,CAAAA,YAAY,YAApBK,sBAAwB,GAAA,CAAA,CAAA;AAC9C,SAAA;;QAGA,IAAI,CAACJ,SAAS,GAAG,KAAA,CAAA;QACjB,IAAI,CAACU,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,CAACC,WAAW,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;QAC/B,IAAI,CAACC,aAAa,GAAG,CAAA,CAAA;QACrB,IAAI,CAACC,aAAa,GAAG,CAAA,CAAA;AAErB,QAAA,IAAIR,MAAQ,EAAA;YACV,IAAI,CAACL,SAAS,GAAG,IAAA,CAAA;AACCK,YAAAA,IAAAA,kBAAAA,CAAAA;YAAlB,IAAI,CAACK,UAAU,GAAGL,CAAAA,qBAAAA,MAAOK,CAAAA,UAAU,YAAjBL,kBAAqB,GAAA,CAAA,CAAA;AACfA,YAAAA,IAAAA,mBAAAA,CAAAA;YAAxB,IAAI,CAACM,WAAW,GAAQN,EAAAA,CAAAA,MAAAA,CAAAA,CAAAA,sBAAAA,MAAOM,CAAAA,WAAW,YAAlBN,mBAAsB,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AACrCA,YAAAA,IAAAA,qBAAAA,CAAAA;YAArB,IAAI,CAACO,aAAa,GAAGP,CAAAA,wBAAAA,MAAOO,CAAAA,aAAa,YAApBP,qBAAwB,GAAA,CAAA,CAAA;AACxBA,YAAAA,IAAAA,qBAAAA,CAAAA;YAArB,IAAI,CAACQ,aAAa,GAAGR,CAAAA,wBAAAA,MAAOQ,CAAAA,aAAa,YAApBR,qBAAwB,GAAA,CAAA,CAAA;AAC/C,SAAA;;QAGA,IAAI,CAACH,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,IAAI,CAACK,SAAS,KAAKh1G,SAAc,CAACnZ,MAAM,EAAE;;YAE5C,IAAI,CAAC8tH,UAAU,IAAI,IAAI,CAACtB,QAAQ,GAAGxyH,IAAAA,CAAK4iC,GAAG,CAAC,EAAK,GAAA,YAAA,CAAA,CAAA;AACnD,SAAA;AACF,KAAA,CAAA;AAzHW2wF,IAAAA,OAAAA,SAAAA,CAAAA;AA0HZ,CAAA;;AC7FM,IAAA,iBAAMmB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,iBAAAA,GAAAA;;aASXC,OAAU,GAAA,IAAA,CAAA;aAKV/B,SAAY,GAAA,CAAA,CAAA;aAEFgC,YAAe,GAAA,CAAA,CAAA;;AAENC,QAAAA,IAAAA,CAAAA,eAAAA,GAAkB,CAAI,GAAA,GAAA,CAAA;;AAlB9BH,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;;AAqBXI,IAAAA,MAAAA,CAAAA,OAMC,GANDA,SAAAA,OAAAA,CAASv7H,KAAa,EAAA;AACpB,QAAA,IAAI,IAAI,CAACw7H,IAAI,KAAKx7H,KAAO,EAAA;AACvB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw7H,IAAI,GAAGx7H,KAAAA,CAAM0E,QAAQ,EAAA,CAAA;QAC1B,IAAI,CAAC02H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAK,IAAAA,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,CAAcz7H,KAAyB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC07H,UAAU,CAAC5C,SAAS,KAAK94H,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC07H,UAAU,CAAC5C,SAAS,GAAG94H,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAO,IAAAA,MAAAA,CAAAA,oBAMC,GANDA,SAAAA,oBAAAA,CAAsB37H,KAA6B,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC07H,UAAU,CAAC7C,iBAAiB,KAAM74H,KAA6C,EAAA;AACtF,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC07H,UAAU,CAAC7C,iBAAiB,GAAG74H,KAAAA,CAAAA;QACpC,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;AAEC,MACDQ,MAAAA,CAAAA,eAOC,GAPDA,SAAAA,gBAAiB57H,KAAwB,EAAA;QACvCuJ,OAAQ+L,CAAAA,IAAI,CACV,+CACA,GAAA,gCAAA,CAAA,CAAA;QAGF,IAAI,CAACqmH,oBAAoB,CAAC37H,KAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEA67H,IAAAA,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,CAAc77H,KAA0B,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACtB,SAAS,KAAKx6H,KAAO,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAACtB,SAAS,GAAGx6H,KAAAA,CAAAA;QAC3B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAW,IAAAA,MAAAA,CAAAA,aAWC,GAXDA,SAAAA,aAAAA,CAAe/7H,KAAa,EAAA;QAC1B,IAAI,CAAC6U,kBAAkB7U,KAAQ,CAAA,EAAA;YAC7BuJ,OAAQ+L,CAAAA,IAAI,CAAC,6BAA+BtV,EAAAA,KAAAA,CAAAA,CAAAA;AAE5C,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAChnH,UAAU,KAAK9U,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAChnH,UAAU,GAAG9U,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAY,IAAAA,MAAAA,CAAAA,aAMC,GANDA,SAAAA,aAAAA,CAAeh8H,KAAsB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACjB,UAAU,KAAK76H,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAACjB,UAAU,GAAG76H,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAa,IAAAA,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,CAAcj8H,KAAqB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAClB,SAAS,KAAK56H,KAAO,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAClB,SAAS,GAAG56H,KAAAA,CAAAA;QAC3B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAc,IAAAA,MAAAA,CAAAA,eAMC,GANDA,SAAAA,eAAAA,CAAiBl8H,KAA0B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAChB,YAAY,KAAK96H,KAAO,EAAA;AACzC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAChB,YAAY,GAAG96H,KAAAA,CAAAA;QAC9B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAe,IAAAA,MAAAA,CAAAA,iBAMC,GANDA,SAAAA,iBAAAA,CAAmBn8H,KAAc,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAC3B,UAAU,KAAKn6H,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAC3B,UAAU,GAAGn6H,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAgB,IAAAA,MAAAA,CAAAA,YAMC,GANDA,SAAAA,YAAAA,CAAcp8H,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACvC,SAAS,KAAKv5H,KAAO,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAACvC,SAAS,GAAGv5H,KAAAA,CAAAA;QAC3B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAiB,IAAAA,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,CAAalD,QAA2B,EAAA;AACtC,QAAA,IAAI,CAACuC,UAAU,CAACvC,QAAQ,GAAGA,QAAAA,CAAAA;QAC3B,IAAI,CAACiC,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;;AAGA,IAAA,MAAA,CAAUkB,WAkBT,GAlBD,SAAUA,WAAAA,CAAa91H,IAAa,EAAA;AAClC,QAAA,IAAmE,kBAAA,IAAI,CAACs1H,SAAS,EAAzE7C,QAAAA,GAA2D,gBAA3DA,QAAUM,EAAAA,SAAAA,GAAiD,eAAjDA,CAAAA,SAAAA,EAAWzkH,aAAsC,eAAtCA,CAAAA,UAAAA,EAAY+lH,aAA0B,eAA1BA,CAAAA,UAAAA,EAAYD,YAAc,eAAdA,CAAAA,SAAAA,CAAAA;QACrD,IAAIN,QAAAA,GAAW,EAAC,GAAE,CAAC9zH,QAAQyyH,QAAWM,GAAAA,SAAQ,EAAG70H,QAAQ,EAAG,GAAA,KAAA,CAAA;AAE5D,QAAA,IAAI,CAAC;AAAC,YAAA,OAAA;AAAS,YAAA,YAAA;AAAc,YAAA,WAAA;AAAa,YAAA,SAAA;SAAU,CAACa,QAAQ,CAACuP,UAAa,CAAA,EAAA;YACzEwlH,QAAY,IAAC,MAAGxlH,UAAW,GAAA,GAAA,CAAA;SACtB,MAAA;YACLwlH,QAAYxlH,IAAAA,UAAAA,CAAAA;AACd,SAAA;AACA,QAAA,IAAI+lH,UAAej1G,KAAAA,UAAe,CAACnZ,MAAM,EAAE;YACzC6tH,QAAW,GAAGO,aAAW,GAAGP,GAAAA,QAAAA,CAAAA;AAC9B,SAAA;AAEA,QAAA,IAAIM,SAAch1G,KAAAA,SAAc,CAACnZ,MAAM,EAAE;YACvC6tH,QAAW,GAAGM,YAAU,GAAGN,GAAAA,QAAAA,CAAAA;AAC7B,SAAA;QAEA,OAAOA,QAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAUiC,CAAAA,YAST,GATD,SAAUA,YAAAA,GAAAA;QACR,IAAM98G,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;QAC5B,IAAuC,eAAA,GAAA,IAAI,CAACq8G,SAAS,EAA7ChB,YAA+B,GAAA,eAAA,CAA/BA,YAAcV,EAAAA,YAAAA,GAAiB,eAAjBA,CAAAA,YAAAA,CAAAA;AACtB,QAAA,IAAOz4H,IAAcm5H,YAAXh4H,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAWg4H,YAARnzH,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAQmzH,iBAALpzH,CAAKozH,GAAAA,YAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAErB,QAAA,IAAIr7G,OAAS,EAAA;AACXA,YAAAA,OAAAA,CAAQ+8G,WAAW,GAAG,OAAC,GAAO76H,CAAI,GAAA,GAAA,GAAI,IAAImB,GAAAA,CAAAA,GAAI,GAAI,GAAA,IAAA,GAAI6E,CAAI,GAAA,GAAA,GAAI,OAAID,CAAE,GAAA,GAAA,CAAA;YACpE+X,OAAQg9G,CAAAA,SAAS,GAAGrC,YAAe,GAAA,CAAA,CAAA;AACrC,SAAA;AACF,KAAA,CAAA;IAEA,MAAUsC,CAAAA,WAWT,GAXD,SAAUA,WAAAA,GAAAA;QACR,IAAMj9G,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;AAC5B,QAAA,IAAkE,eAAA,GAAA,IAAI,CAACq8G,SAAS,EAAxEd,WAA0D,GAAA,eAAA,CAA1DA,WAAaD,EAAAA,UAAAA,GAA6C,gBAA7CA,UAAYE,EAAAA,aAAAA,GAAiC,eAAjCA,CAAAA,aAAAA,EAAeC,gBAAkB,eAAlBA,CAAAA,aAAAA,CAAAA;AAChD,QAAA,IAAOv5H,IAAcq5H,WAAXl4H,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAWk4H,WAARrzH,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAQqzH,gBAALtzH,CAAKszH,GAAAA,WAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAErB,QAAA,IAAIv7G,OAAS,EAAA;AACXA,YAAAA,OAAAA,CAAQu7G,WAAW,GAAG,OAAC,GAAOr5H,CAAI,GAAA,GAAA,GAAI,IAAImB,GAAAA,CAAAA,GAAI,GAAI,GAAA,IAAA,GAAI6E,CAAI,GAAA,GAAA,GAAI,OAAID,CAAE,GAAA,GAAA,CAAA;AACpE+X,YAAAA,OAAAA,CAAQs7G,UAAU,GAAGA,UAAAA,CAAAA;AACrBt7G,YAAAA,OAAAA,CAAQw7G,aAAa,GAAGA,aAAAA,CAAAA;YACxBx7G,OAAQy7G,CAAAA,aAAa,GAAG,CAACA,aAAAA,CAAAA;AAC3B,SAAA;AACF,KAAA,CAAA;;IAGA,MAAUyB,CAAAA,kBAMT,GAND,SAAUA,kBAAAA,GAAAA;AACR,QAAA,IAAM/iE,OAAU,GAAA,IAAI,CAACv4B,QAAQ,CAACu4B,OAAO,CAAA;AAErC,QAAA,IAAIA,WAAWA,OAAY,KAAA,IAAI,CAAClgD,MAAM,CAACksE,YAAY,EAAE;AACnDhsB,YAAAA,OAAAA,CAAQ14C,OAAO,EAAA,CAAA;AACjB,SAAA;AACF,KAAA,CAAA;AAEA;;AAEC,MACD,MAAU07G,CAAAA,eAiET,GAjED,SAAUA,eACRjpH,CAAAA,KAAa,EACbC,MAAc,EACdimD,KAAc,EACdgjE,YAAqD,EACrD53H,OAAsC,EAAA;QAAtCA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAAoC,EAAC,CAAA;QAErC,IAAI,CAAC,IAAI,CAACwa,OAAO,IAAI,CAAC,IAAI,CAACnJ,MAAM,EAAE;AACjC,YAAA,OAAA;AACF,SAAA;QAEA,IAAMmJ,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;;AAG5BA,QAAAA,OAAAA,CAAQq9G,IAAI,EAAA,CAAA;;AAGZ,QAAA,IAAI,CAACxmH,MAAM,CAAC3C,KAAK,GAAGA,KAAAA,CAAAA;AACpB,QAAA,IAAI,CAAC2C,MAAM,CAAC1C,MAAM,GAAGA,MAAAA,CAAAA;;AAGrB6L,QAAAA,OAAAA,CAAQw1B,YAAY,CAAC,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;;AAGpC,QAAA,IAAI,CAAC4kB,KAAO,EAAA;YACVp6C,OAAQ0tB,CAAAA,SAAS,CAAC,CAAGv5B,EAAAA,MAAAA,CAAAA,CAAAA;YACrB6L,OAAQxV,CAAAA,KAAK,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,CAAA;AACpB,SAAA;;AAGAwV,QAAAA,OAAAA,CAAQs9G,SAAS,CAAC,CAAG,EAAA,CAAA,EAAGppH,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;;AAG/B6L,QAAAA,OAAAA,CAAQu9G,SAAS,GAAI,yBAAsB,IAAI,CAAC1B,eAAe,GAAC,GAAA,CAAA;;QAGhEuB,YAAap9G,CAAAA,OAAAA,CAAAA,CAAAA;;AAGbA,QAAAA,OAAAA,CAAQonD,OAAO,EAAA,CAAA;;AAGf,QAAA,IAAMo2D,YAAYx9G,OAAQy9G,CAAAA,YAAY,CAAC,CAAA,EAAG,GAAGvpH,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;AACpD,QAAA,IAAMgmD,UAAUnB,OAAQ4B,CAAAA,cAAc,CACpC,IAAI,CAAC3gD,MAAM,EACX;YACE7F,IAAM,EAAA,IAAIxP,UAAW44H,CAAAA,SAAAA,CAAUppH,IAAI,CAAA;AACnCF,YAAAA,KAAAA,EAAOspH,UAAUtpH,KAAK;AACtBC,YAAAA,MAAAA,EAAQqpH,UAAUrpH,MAAM;SAE1B,EAAA;YACEimD,KAAAA,EAAAA,KAAAA;AACAP,YAAAA,SAAAA,EAAWzG,UAAU4J,MAAM;AAC3BrD,YAAAA,SAAAA,EAAWvG,UAAU4J,MAAM;AAC3BlD,YAAAA,KAAAA,EAAO1G,UAAU2G,aAAa;AAC9BC,YAAAA,KAAAA,EAAO5G,UAAU2G,aAAa;AAChC,SAAA,CAAA,CAAA;;QAIF,IAAIv0D,OAAAA,CAAQk4H,UAAU,KAAK,KAAO,EAAA;AAChC,YAAA,IAAI,CAACR,kBAAkB,EAAA,CAAA;AACzB,SAAA;AACA,QAAA,IAAI,CAACt7F,QAAQ,CAACu4B,OAAO,GAAGA,OAAAA,CAAAA;AACxB,QAAA,IAAI,CAACn4B,QAAQ,CAACwiC,UAAU,CAAC,UAAYrK,EAAAA,OAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;;AAGA,IAAA,MAAA,CAAUwjE,YAKT,GALD,SAAUA,YAAAA,CAAc1jH,MAAc,EAAA;QACpC,IAAI,CAACA,MAAM,GAAGA,MAAAA,CAAAA;AACd,QAAA,IAAI,CAACpD,MAAM,GAAGkiH,UAAAA,CAAWN,SAAS,EAAA,CAAA;AAClCM,QAAAA,UAAAA,CAAWD,UAAU,CAAC,IAAI,CAACjiH,MAAM,CAAA,CAAA;QACjC,IAAI,CAACmJ,OAAO,GAAG,IAAI,CAACnJ,MAAM,CAACg7C,UAAU,CAAC,IAAM,EAAA;YAAEgnE,kBAAoB,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;AACzE,KAAA,CAAA;AA7PW6C,IAAAA,OAAAA,iBAAAA,CAAAA;AA8PZ,CAAA;;IChRYkC,aAAgB,GAAA;AAC3B,IAAA,OAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,SAAA;EACA;AAoBF,IAAI9oF,MAAO,GAAA,CAAA,CAAA;AAMJ,IAAA,aAAM+oF,iBAAD,SAAL,eAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,aAAAA,CA4DE5jH,MAAc,EAAA;;AACnBA,QAAAA,KAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA,IAAAA,EAAAA,MAAAA,CAAAA,IAAAA,IAAAA,CAAAA;cA5DR0hH,OAAU,GAAA,IAAA,CAAA;AACV;;AAEC,MAAA,KAAA,CACD/B,SAAY,GAAA,CAAA,CAAA;AAOZ;;AAEC,MAAA,KAAA,CACSkE,YAAe,GAAA,CAAA,CAAA;cACfC,YAAe,GAAA,CAAA,CAAA;AAEzB;;AAEC,MAAA,KAAA,CACSnC,YAAe,GAAA,CAAA,CAAA;AAEzB;;AAEC,MAAA,KAAA,CACOoC,aAAgB,GAAA,CAAA,CAAA;AAExB;;AAEC,MAAA,KAAA,CACOC,UAAa,GAAA,CAAA,CAAA;QAgCnB,KAAKx5H,CAAAA,IAAI,GAAG,OAAUqwC,GAAAA,MAAAA,EAAAA,CAAAA;;QAGtB,KAAKj+B,CAAAA,MAAM,GAAGkiH,UAAAA,CAAWN,SAAS,EAAA,CAAA;QAClCM,UAAWD,CAAAA,UAAU,CAAC,KAAA,CAAKjiH,MAAM,CAAA,CAAA;AACjC,QAAA,KAAA,CAAKmJ,OAAO,GAAG,KAAA,CAAKnJ,MAAM,CAACg7C,UAAU,CAAC,IAAM,EAAA;YAAEgnE,kBAAoB,EAAA,IAAA;AAAK,SAAA,CAAA,CAAA;;QAGvE,IAAMqF,WAAAA,GAAc,MAAKC,eAAe,EAAA,CAAA;QAExC,IAAQ34H,UAAY04H,WAAZ14H,CAAAA,OAAAA,CAAAA;AAER,QAAA,KAAA,CAAK44H,iBAAiB,CAAC54H,OAAAA,CAAAA,CAAAA;;;AA3Edq4H,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;IAiCX,MAAQM,CAAAA,eAyBP,GAzBD,SAAQA,eAAAA,GAAAA;QACN,OAAO;YACL38G,EAAI,EAAC,aAAaxa,GAAAA,IAAAA,CAAKpB,MAAM,EAAA,CAAGX,QAAQ,CAAC,EAAA,CAAA,CAAIo5H,MAAM,CAAC,CAAG,EAAA,CAAA,CAAA;YACvDj4H,IAAM,EAAA;gBAAEob,EAAI,EAAC,eAAexa,GAAAA,IAAAA,CAAKpB,MAAM,EAAA,CAAGX,QAAQ,CAAC,EAAA,CAAA,CAAIo5H,MAAM,CAAC,CAAG,EAAA,CAAA,CAAA;AAAK,aAAA;YACtEv+C,QAAU35D,EAAAA,QAAa,CAAC03G,aAAa;YACrCr4H,OAAS,EAAA;gBACPu2H,IAAM,EAAA,MAAA;gBACN1mH,UAAY,EAAA,wBAAA;gBACZmkH,QAAU,EAAA,EAAA;;gBAEVuB,SAAW,EAAA;AAAC,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAG,oBAAA,CAAA;AAAE,iBAAA;gBACvBG,UAAY/0G,EAAAA,UAAe,CAACnZ,MAAM;gBAClCssH,WAAa,EAAA,CAAA;gBACbD,SAAW,EAAA,CAAA;gBACX8B,SAAWh1G,EAAAA,SAAc,CAACnZ,MAAM;gBAChCusH,SAAW,EAAA,KAAA;gBACXL,SAAW,EAAA,GAAA;gBACXD,UAAY,EAAA,EAAA;gBACZQ,UAAY,EAAA,MAAA;AACd,aAAA;YACA73F,QAAU,EAAA;gBACRqkD,UAAY,EAAA,CAAA;gBACZx+C,MAAQ,EAAA;AAAC,oBAAA,GAAA;AAAK,oBAAA,GAAA;AAAI,iBAAA;AACpB,aAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAoBA,IAAA,MAAA,CAASpH,QAeR,GAfD,SAASA,QAAAA,CAAU93B,EAAU,EAAA;AAC3B,QAAA,eAAA,CAAA,SAAA,CAAM83B,QAAD,CAAU93B,IAAAA,CAAAA,IAAAA,EAAAA,EAAAA,CAAAA,CAAAA;AACf,QAAA,IAAI,CAAC+1H,aAAa,EAAA,CAAA;;QAGlB,IAAuB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC78F,SAAS,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA5BO,YAAAA,IAAAA,QAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAIipD,QAAQ,IAAI,CAACn6D,SAAS,CAAC/pB,IAAI,CAACsB,CAAC,CAAA;AACjC,YAAA,IAAI6iF,QAAQ,IAAI,CAACp6D,SAAS,CAAC/pB,IAAI,CAAC3D,CAAC,CAAA;AACjC,YAAA,IAAyB,8BAAA,IAAI,CAACm7H,qBAAqB,EAA5CC,EAAAA,MAAAA,GAAkB,gCAAVC,MAAU,GAAA,2BAAA,CAAA,CAAA,CAAA,CAAA;YAEzBxzC,KAASuzC,IAAAA,MAAAA,CAAAA;YACTtzC,KAASuzC,IAAAA,MAAAA,CAAAA;AAETz8F,YAAAA,QAAAA,CAAS2pC,UAAU,CAAC,OAAS,EAAA,IAAIviE,QAAQ6hF,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAClD,SAAA;AACF,KAAA,CAAA;IAEA,MAAS3qD,CAAAA,SAGR,GAHD,SAASA,SAAAA,GAAAA;AACP,QAAA,eAAA,CAAA,SAAA,CAAMA,SAAD,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;AACL,QAAA,IAAI,CAAC28F,kBAAkB,EAAA,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAS37G,QAmBR,GAnBD,SAASA,QAAAA,CAAUnN,IAA4B,EAAA;AAC7C,QAAA,eAAA,CAAA,SAAA,CAAMmN,QAAD,CAAUnN,IAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACf,QAAA,IAAQ4xE,WAAyB5xE,GAAAA,IAAAA,CAAzB4xE,WAAaxgF,EAAAA,OAAAA,GAAY4O,IAAZ5O,CAAAA,OAAAA,CAAAA;QAErB,IAAI,CAACwgF,WAAW,GAAGA,WAAAA,CAAAA;AAEnB,QAAA,IAAI,CAAC04C,UAAU,EAAA,CAAA;;QAGf,IAAI,CAACN,iBAAiB,CAAC54H,OAAAA,CAAAA,CAAAA;QACvB,IAAI,CAACm5H,UAAU,CAACn5H,OAAAA,CAAAA,CAAAA;;;QAIhB,IAAI,CAACw4H,aAAa,GAAGx4H,OAAQ0zH,CAAAA,SAAS,IAAI,IAAI,CAAC+C,UAAU,CAAC/nH,KAAK,IAAI,CAAA,CAAA;QACnE,IAAI,CAAC+pH,UAAU,GAAG,IAAI,CAAC73H,IAAI,CAAC0qB,SAAS,CAAC/pB,IAAI,CAACsB,CAAC,CAAA;;QAG5C,IAAI,CAAC25B,QAAQ,CAAC0iC,QAAQ,CAAC,UAAU,IAAIn2D,KAAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA,CAAA;AACtD,KAAA,CAAA;IAEA,MAAQmwH,CAAAA,UAQP,GARD,SAAQA,UAAAA,GAAAA;;AAEN,QAAA,IAAI,CAACxB,kBAAkB,EAAA,CAAA;;QAGvB,IAAI,CAACvB,OAAO,GAAG,IAAA,CAAA;QACf,IAAI,CAAC/B,SAAS,GAAG,CAAA,CAAA;QACjB,IAAI,CAACgC,YAAY,GAAG,CAAA,CAAA;AACtB,KAAA,CAAA;;AAGAE,IAAAA,MAAAA,CAAAA,OAQC,GARDA,SAAAA,OAAAA,CAASv7H,KAAa,EAAA;AACpB,QAAA,IAAI,IAAI,CAACw7H,IAAI,KAAKx7H,KAAO,EAAA;AACvB,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw7H,IAAI,GAAGx7H,KAAAA,CAAM0E,QAAQ,EAAA,CAAA;;QAE1B,IAAI,CAAC20H,SAAS,GAAG,IAAI,CAACgF,YAAY,CAAC,IAAI,CAAC7C,IAAI,CAAA,CAAA;QAC5C,IAAI,CAACJ,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;AAEC,MACDyC,MAAAA,CAAAA,iBAgBC,GAhBDA,SAAAA,kBAAmB54H,OAAgC,EAAA;;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC62H,SAAS,EAAE;AACnB,YAAA,IAAI,CAACA,SAAS,GAAG,IAAI9B,SAAU/0H,CAAAA,OAAAA,CAAAA,CAAAA;SAC1B,MAAA;AACL,YAAA,IAAI,CAAC62H,SAAS,CAACj3G,MAAM,CAAC5f,OAAAA,CAAAA,CAAAA;AACxB,SAAA;AAEA,QAAA,IAAI,CAAC,IAAI,CAACy2H,UAAU,EAAE;AACpB,YAAA,IAAI,CAACA,UAAU,GAAG,IAAIjD,UAAWxzH,CAAAA,OAAAA,CAAAA,CAAAA;SAC5B,MAAA;AACL,YAAA,IAAI,CAACy2H,UAAU,CAAC72G,MAAM,CAAC5f,OAAAA,CAAAA,CAAAA;AACzB,SAAA;AAEA,QAAA,IAAI,CAACu2H,IAAI,GAAGv2H,OAAQu2H,CAAAA,IAAI,CAAC92H,QAAQ,EAAA,CAAA;QACjC,IAAI,CAAC20H,SAAS,GAAG,IAAI,CAACgF,YAAY,CAACp5H,QAAQu2H,IAAI,CAAA,CAAA;AACjD,KAAA,CAAA;AAEA6C,IAAAA,MAAAA,CAAAA,YAiDC,GAjDDA,SAAAA,YAAAA,CAAc7C,IAAY,EAAA;QACxB,IAAM/7G,OAAAA,GAAU,IAAI,CAACA,OAAO,CAAA;QAC5B,IAAkC,gBAAA,GAAA,IAAI,CAACi8G,UAAU,EAAzC3C,WAA0B,GAAA,gBAAA,CAA1BA,WAAaI,EAAAA,QAAAA,GAAa,gBAAbA,CAAAA,QAAAA,CAAAA;QAErB,IAAI,CAACkC,YAAY,GAAG,CAAA,CAAA;QACpB,IAAM1nH,KAAAA,GAAS,IAAI,CAAC+nH,UAAU,CAAC/nH,KAAK,GAAG,IAAI,CAACmoH,SAAS,CAACvB,UAAU,CAAA;AAChE,QAAA,IAAIlB,SAAY,GAAA,CAAA,CAAA;AAChB,QAAA,IAAIvxH,CAAI,GAAA,CAAA,CAAA;QACR,IAAIw2H,eAAAA,GAAkB;;AAGtB,QAAA,IAAI7+G,OAAS,EAAA;YACXA,OAAQ8+G,CAAAA,IAAI,GAAG,IAAI,CAACjC,WAAW,CAAC,IAAI,CAACR,SAAS,CAAC7C,QAAQ,CAAA,CAAA;AACzD,SAAA;AACA,QAAA,IAAK,IAAIh3H,CAAI,GAAA,CAAA,EAAGA,IAAIu5H,IAAK95H,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AAEhBwd,YAAAA,IAAAA,oBAAAA,CAAAA;YADpB,IAAM5P,GAAAA,GAAM2rH,IAAI,CAACv5H,CAAE,CAAA,CAAA;AACCwd,YAAAA,IAAAA,0BAAAA,CAAAA;AAApB,YAAA,IAAM++G,WAAc/+G,GAAAA,CAAAA,0BAAAA,GAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,oBAAAA,GAAAA,OAAAA,CAASg/G,WAAW,CAAC5uH,GAArB4P,CAAAA,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAA2B9L,KAAK,KAAA,IAAA,GAAhC8L,0BAAoC,GAAA,CAAA,CAAA;;;AAIxD,YAAA,IAAI6+G,kBAAkB,CAAG,EAAA;gBACvBx2H,CAAKixH,IAAAA,WAAAA,CAAAA;AACP,aAAA;;AAEA,YAAA,IAAII,QAAavzG,KAAAA,YAAiB,CAAC84G,OAAO,EAAE;AAC1C,gBAAA,IAAI7uH,QAAQ,IAAM,EAAA;AAChBwpH,oBAAAA,SAAAA,EAAAA,CAAAA;oBACAvxH,CAAI,GAAA,CAAA,CAAA;AACJw2H,oBAAAA,eAAAA,GAAkB;iBACb,MAAA;oBACLx2H,CAAK02H,IAAAA,WAAAA,CAAAA;AACLF,oBAAAA,eAAAA,EAAAA,CAAAA;oBACA,IAAI,CAACjD,YAAY,GAAG50H,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC6yH,YAAY,EAAEvzH,CAAAA,CAAAA,CAAAA;AAClD,iBAAA;aACK,MAAA;AACL,gBAAA,IAAI,CAAM02H,GAAAA,WAAAA,GAAe7qH,SAAS1R,CAAI,GAAA,CAAA,IAAM4N,QAAQ,IAAM,EAAA;AACxDwpH,oBAAAA,SAAAA,EAAAA,CAAAA;oBACA,IAAI,CAACgC,YAAY,GAAG50H,IAAAA,CAAK+B,GAAG,CAAC,IAAI,CAAC6yH,YAAY,EAAEvzH,CAAAA,CAAAA,CAAAA;oBAChDA,CAAI,GAAA,CAAA,CAAA;AACJw2H,oBAAAA,eAAAA,GAAkB;AACpB,iBAAA;AACA,gBAAA,IAAIzuH,QAAQ,IAAM,EAAA;oBAChB/H,CAAK02H,IAAAA,WAAAA,CAAAA;AACLF,oBAAAA,eAAAA,EAAAA,CAAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;QAEA,OAAOjF,SAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;;;AAIC,MACDsF,MAAAA,CAAAA,aAWC,GAXDA,SAAAA,cAAe3+H,KAAa,EAAA;AAC1B,QAAA,IAAMi5H,QAAW,GAAA,IAAI,CAAC6C,SAAS,CAAC7C,QAAQ,CAAA;;AAExC,QAAA,IAAM2F,IAAOn4H,GAAAA,IAAAA,CAAK+B,GAAG,CAACywH,QAAUj5H,EAAAA,KAAAA,CAAAA,CAAAA;AAEhC,QAAA,IAAI,IAAI,CAAC07H,UAAU,CAACxC,UAAU,KAAK0F,IAAM,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAAClD,UAAU,CAACxC,UAAU,GAAG0F,IAAAA,CAAAA;QAC7B,IAAI,CAACxD,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;AAIC,MACDY,MAAAA,CAAAA,aAMC,GANDA,SAAAA,cAAeh8H,KAAsB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACjB,UAAU,KAAK76H,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAACjB,UAAU,GAAG76H,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;;AAKC,MACDa,MAAAA,CAAAA,YAMC,GANDA,SAAAA,aAAcj8H,KAAqB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAClB,SAAS,KAAK56H,KAAO,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAClB,SAAS,GAAG56H,KAAAA,CAAAA;QAC3B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;AAIC,MACDK,MAAAA,CAAAA,YAMC,GANDA,SAAAA,aAAcz7H,KAAyB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC07H,UAAU,CAAC5C,SAAS,KAAK94H,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC07H,UAAU,CAAC5C,SAAS,GAAG94H,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;AAIC,MACDS,MAAAA,CAAAA,YAMC,GANDA,SAAAA,aAAc77H,KAA0B,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACtB,SAAS,KAAKx6H,KAAO,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAACtB,SAAS,GAAGx6H,KAAAA,CAAAA;QAC3B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;AAIC,MACDc,MAAAA,CAAAA,eAMC,GANDA,SAAAA,gBAAiBl8H,KAA0B,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAChB,YAAY,KAAK96H,KAAO,EAAA;AACzC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAChB,YAAY,GAAG96H,KAAAA,CAAAA;QAC9B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;AAIC,MACDgB,MAAAA,CAAAA,YAOC,GAPDA,SAAAA,aAAcp8H,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACvC,SAAS,KAAKv5H,KAAO,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAAC87H,SAAS,CAACvC,SAAS,GAAGv5H,KAAAA,CAAAA;QAC3B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;AAGC,MACD,MAAU2C,CAAAA,aAoJT,GApJD,SAAUA,cAAelkE,KAAY,EAAA;;AAAZA,QAAAA,IAAAA,kBAAAA,KAAQ,GAAA,IAAA,CAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAACuhE,OAAO,IAAI,CAAC,IAAI,CAAC37G,OAAO,IAAI,CAAC,IAAI,CAACnJ,MAAM,EAAE;AAClD,YAAA,OAAA;AACF,SAAA;QAEA,IAAM+xG,KAAAA,GAAQ,IAAI,CAACyT,SAAS,CAAA;QAC5B,IAAM+C,MAAAA,GAAS,IAAI,CAACnD,UAAU,CAAA;QAC9B,IAAMnC,SAAAA,GAAYlR,MAAMkR,SAAS,CAAA;QAEjC,IAAMhvD,SAAAA,GAAY,CAACs0D,MAAAA,CAAOlrH,KAAK,GAAG00G,KAAAA,CAAMkS,UAAS,IAAKhB,SAAAA,CAAAA;AACtD,QAAA,IAAMuF,cAAcD,MAAO3F,CAAAA,UAAU,GAAG,IAAI,CAACG,SAAS,CAAA;QAEtD,IAAMJ,QAAAA,GAAW5Q,KAAM4Q,CAAAA,QAAQ,GAAGM,SAAAA,CAAAA;QAClC,IAAML,UAAAA,GAAa2F,MAAO3F,CAAAA,UAAU,GAAGK,SAAAA,CAAAA;AAEvClR,QAAAA,KAAAA,CAAMiS,QAAQ,GAAG,IAAI,CAACgC,WAAW,CAACrD,QAAAA,CAAAA,CAAAA;;AAElC,QAAA,IAAM8F,OAAOr1H,KAAMoV,CAAAA,IAAI,CAAC,IAAI,CAAC08G,IAAI,IAAI,EAAA,CAAA,CAAA;AAErC,QAAA,IAAIhxD,UAAa,GAAA,CAAA,CAAA;QAEjB,IAAIq0D,MAAAA,CAAO7F,SAAS,EAAE;AACpBxuD,YAAAA,UAAAA,GAAas0D,WAAcvF,GAAAA,SAAAA,CAAAA;AAC3B,YAAA,IAAI,CAAC1zH,IAAI,CAAC0qB,SAAS,CAAC/pB,IAAI,CAACS,GAAG,CAAC,CAAA,EAAG63H,WAAcD,GAAAA,MAAAA,CAAOjrH,MAAM,CAAA,CAAA;SACtD,MAAA;YACL42D,UAAaq0D,GAAAA,MAAAA,CAAOjrH,MAAM,GAAG2lH,SAAAA,CAAAA;AAC/B,SAAA;AAEA,QAAA,IAAmC,sBAAA,GAAA,IAAI,CAACyF,gBAAgB,IAAhDC,IAA2B,GAAA,sBAAA,CAA3BA,IAAMC,EAAAA,IAAAA,GAAqB,uBAArBA,IAAMC,EAAAA,IAAAA,GAAe,sBAAfA,CAAAA,IAAAA,EAAMC,OAAS,sBAATA,CAAAA,IAAAA,CAAAA;AAC1B,QAAA,IAAMC,YAAY,CAACJ,OAAOC,IAAOC,GAAAA,IAAAA,GAAOC,IAAG,MAAO,CAAA,CAAA;AAElD,QAAA,IAAME,WAAWD,SAAY54H,GAAAA,IAAAA,CAAKC,IAAI,CAAC6jE,SAAAA,GAAY00D,OAAOC,IAAQ30D,CAAAA,GAAAA,SAAAA,CAAAA;AAClE,QAAA,IAAMg1D,YAAYF,SAAY54H,GAAAA,IAAAA,CAAKC,IAAI,CAAC8jE,UAAAA,GAAa20D,OAAOC,IAAQ50D,CAAAA,GAAAA,UAAAA,CAAAA;QAEpE,IAAMg1D,MAAAA,GAASH,YAAYJ,IAAO,GAAA,CAAA,CAAA;AAClC,QAAA,IAAMQ,MAASJ,GAAAA,SAAAA,GAAaxlE,KAAQslE,GAAAA,IAAAA,GAAOC,IAAQ,GAAA,CAAA,CAAA;;AAGnD,QAAA,IAAI,CAAC7B,YAAY,GAAGhzD,SAAY,GAAA,CAAA,GAAK+0D,WAAW/0D,SAAa,GAAA,CAAA,CAAA;AAC7D,QAAA,IAAI,CAACizD,YAAY,GAAGhzD,UAAa,GAAA,CAAA,GAAK+0D,YAAY/0D,UAAc,GAAA,CAAA,CAAA;AAEhE,QAAA,IAAI,CAACoyD,eAAe,CAAC0C,QAAUC,EAAAA,SAAAA,EAAW1lE,OAAOp6C,SAAAA,OAAAA,EAAAA;;YAE/C,IAAI,KAAA,CAAK47G,YAAY,GAAG9wD,SAAas0D,IAAAA,MAAAA,CAAO1F,QAAQ,KAAKvzG,YAAiB,CAAC84G,OAAO,EAAE;gBAClFj/G,OAAQ8+G,CAAAA,IAAI,GAAG,KAAKjC,CAAAA,WAAW,CAACrD,QAAW1uD,GAAAA,SAAAA,GAAY,MAAK8wD,YAAY,CAAA,CAAA;aACnE,MAAA;gBACL57G,OAAQ8+G,CAAAA,IAAI,GAAGlW,KAAAA,CAAMiS,QAAQ,CAAA;AAC/B,aAAA;;YAGA,IAAqBjS,gBAAAA,GAAAA,KAAMmS,CAAAA,SAAS,EAA7B74H,CAAAA,GAAc0mH,qBAAXvlH,CAAWulH,GAAAA,gBAAAA,CAAAA,CAAAA,CAAAA,EAAR1gH,CAAQ0gH,GAAAA,gBAAAA,CAAAA,CAAAA,CAAAA,EAAL3gH,CAAK2gH,GAAAA,gBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAErB5oG,YAAAA,OAAAA,CAAQu9G,SAAS,GAAG,OAAC,GAAOr7H,CAAI,GAAA,GAAA,GAAI,IAAImB,GAAAA,CAAAA,GAAI,GAAI,GAAA,IAAA,GAAI6E,CAAI,GAAA,GAAA,GAAI,OAAID,CAAE,GAAA,GAAA,CAAA;AAElE,YAAA,IAAMg4H,YAAwB,EAAE,CAAA;AAChC,YAAA,IAAI53H,CAAI,GAAA,CAAA,CAAA;YACR,IAAIjF,CAAAA,GAAIg8H,OAAOzF,UAAU,CAAC/Q,OAAO,KAAKgR,CAAAA,SAAS,EAAEH,UAAYD,EAAAA,QAAAA,CAAAA,CAAAA;AAC7D,YAAA,IAAI0G,aAAa,EAAE,CAAA;AACnB,YAAA,IAAIC,cAAc,EAAE,CAAA;AAEpB,YAAA,IAAK,IAAI39H,CAAI,GAAA,CAAA,EAAGA,IAAI88H,IAAKr9H,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;gBACpC,IAAM4N,GAAAA,GAAMkvH,IAAI,CAAC98H,CAAE,CAAA,CAAA;gBACnB,IAAMu8H,WAAAA,GAAc/+G,OAAQg/G,CAAAA,WAAW,CAAC5uH,GAAAA,CAAAA,CAAAA;;;gBAIxC,IAAI8vH,UAAAA,CAAWj+H,MAAM,GAAG,CAAG,EAAA;oBACzBoG,CAAK+2H,IAAAA,MAAAA,CAAO9F,WAAW,GAAGQ,SAAAA,CAAAA;AAC5B,iBAAA;gBAEA,IAAMzxH,IAAI02H,WAAY7qH,CAAAA,KAAK,GAAI42D,SAAatoE,IAAAA,CAAAA,GAAI,CAAM4N,IAAAA,GAAAA,KAAQ,IAAM,EAAA;AAClE6vH,oBAAAA,SAAAA,CAAU97H,IAAI,CAAC;wBACbf,CAAAA,EAAAA,CAAAA;wBACA8Q,KAAO7L,EAAAA,CAAAA;wBACP+3H,KAAOF,EAAAA,UAAAA;wBACPC,WAAAA,EAAAA,WAAAA;AACF,qBAAA,CAAA,CAAA;oBACA93H,CAAI,GAAA,CAAA,CAAA;oBACJjF,CAAKq2H,IAAAA,UAAAA,CAAAA;AACLyG,oBAAAA,UAAAA,GAAa,EAAE,CAAA;AACfC,oBAAAA,WAAAA,GAAc,EAAE,CAAA;AAClB,iBAAA;AAEA,gBAAA,IAAI/vH,QAAQ,IAAM,EAAA;AAChB8vH,oBAAAA,UAAAA,CAAW/7H,IAAI,CAACiM,GAAAA,CAAAA,CAAAA;AAChB+vH,oBAAAA,WAAAA,CAAYh8H,IAAI,CAACkE,CAAAA,CAAAA,CAAAA;AACjBA,oBAAAA,CAAAA,IAAK02H,YAAY7qH,KAAK,CAAA;AACxB,iBAAA;AACF,aAAA;AAEA+rH,YAAAA,SAAAA,CAAU97H,IAAI,CAAC;gBACbf,CAAAA,EAAAA,CAAAA;gBACA8Q,KAAO7L,EAAAA,CAAAA;gBACP+3H,KAAOF,EAAAA,UAAAA;gBACPC,WAAAA,EAAAA,WAAAA;AACF,aAAA,CAAA,CAAA;AAEA,YAAA,IAAME,aAAazX,KAAM8R,CAAAA,UAAU,IAAI9R,KAAAA,CAAM+R,YAAY,GAAG,CAAA,CAAA;AAE5D,YAAA,IAAI0F,UAAY,EAAA;;gBAEd,IAAIzX,KAAAA,CAAMgS,SAAS,EAAE;AACnB,oBAAA,KAAA,CAAKqC,WAAW,EAAA,CAAA;AAClB,iBAAA;AACA,gBAAA,KAAA,CAAKH,YAAY,EAAA,CAAA;gBAEjBmD,SAAU/tH,CAAAA,OAAO,CAACouH,SAAAA,QAAAA,EAAAA;AAChB,oBAAA,IAAMnyF,KAAKixF,MAAOhF,CAAAA,UAAU,CAACxR,KAAAA,EAAO0X,SAASpsH,KAAK,CAAA,CAAA;oBAElD,IAAK,IAAI1R,IAAI,CAAGA,EAAAA,CAAAA,GAAI89H,SAASF,KAAK,CAACn+H,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC9C,wBAAA,IAAM4N,GAAMkwH,GAAAA,QAAAA,CAASF,KAAK,CAAC59H,CAAE,CAAA,CAAA;AAC7B,wBAAA,IAAM+9H,QAAQR,MAAS5xF,GAAAA,EAAAA,GAAKmyF,QAASH,CAAAA,WAAW,CAAC39H,CAAE,CAAA,CAAA;wBACnD,IAAMg+H,KAAAA,GAAQR,MAASM,GAAAA,QAAAA,CAASl9H,CAAC,CAAA;wBAEjC4c,OAAQygH,CAAAA,UAAU,CAACrwH,GAAAA,EAAKmwH,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AACjC,qBAAA;AACF,iBAAA,CAAA,CAAA;;gBAGA,IAAI5X,KAAAA,CAAMgS,SAAS,EAAE;AACnB56G,oBAAAA,OAAAA,CAAQu7G,WAAW,GAAG,aAAA,CAAA;AACxB,iBAAA;AACF,aAAA;;AAGA,YAAA,IAAI,CAAC8E,UAAAA,IAAczX,KAAMgS,CAAAA,SAAS,EAAE;AAClC,gBAAA,KAAA,CAAKqC,WAAW,EAAA,CAAA;AAClB,aAAA;YAEAgD,SAAU/tH,CAAAA,OAAO,CAACouH,SAAAA,QAAAA,EAAAA;AAChB,gBAAA,IAAMnyF,KAAKixF,MAAOhF,CAAAA,UAAU,CAACxR,KAAAA,EAAO0X,SAASpsH,KAAK,CAAA,CAAA;gBAElD,IAAK,IAAI1R,IAAI,CAAGA,EAAAA,CAAAA,GAAI89H,SAASF,KAAK,CAACn+H,MAAM,EAAEO,CAAK,EAAA,CAAA;AAC9C,oBAAA,IAAM4N,GAAMkwH,GAAAA,QAAAA,CAASF,KAAK,CAAC59H,CAAE,CAAA,CAAA;AAC7B,oBAAA,IAAM+9H,QAAQR,MAAS5xF,GAAAA,EAAAA,GAAKmyF,QAASH,CAAAA,WAAW,CAAC39H,CAAE,CAAA,CAAA;oBACnD,IAAMg+H,KAAAA,GAAQR,MAASM,GAAAA,QAAAA,CAASl9H,CAAC,CAAA;oBAEjC4c,OAAQ0gH,CAAAA,QAAQ,CAACtwH,GAAAA,EAAKmwH,KAAOC,EAAAA,KAAAA,CAAAA,CAAAA;AAC/B,iBAAA;AACF,aAAA,CAAA,CAAA;;YAGA,IAAI5X,KAAAA,CAAMgS,SAAS,EAAE;AACnB56G,gBAAAA,OAAAA,CAAQu7G,WAAW,GAAG,aAAA,CAAA;AACxB,aAAA;AACF,SAAA,CAAA,CAAA;QAEA,IAAI,CAACI,OAAO,GAAG,KAAA,CAAA;AACjB,KAAA,CAAA;AAEAgD,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAYn5H,OAAgC,EAAA;AAC1C,QAAA,IAAI,CAAC84H,aAAa,EAAA,CAAA;AACpB,KAAA,CAAA;AAEA;;;MAIA,MAAA,CAAOC,qBAEN,GAFD,SAAOA,qBAAAA,GAAAA;QACL,OAAO;AAAC,YAAA,IAAI,CAACT,YAAY;AAAE,YAAA,IAAI,CAACC,YAAY;AAAC,SAAA,CAAA;AAC/C,KAAA,CAAA;AAEA;;;MAIA,MAAA,CAAUwB,gBAcT,GAdD,SAAUA,gBAAAA,GAAAA;QACR,IAAM3W,KAAAA,GAAQ,IAAI,CAACyT,SAAS,CAAA;AAE5B,QAAA,IAAMsE,iBAAiB/X,KAAM8R,CAAAA,UAAU,IAAI9R,KAAAA,CAAM+R,YAAY,GAAG,CAAA,CAAA;QAChE,IAAMiG,UAAAA,GAAaD,cAAiB35H,GAAAA,IAAAA,CAAKC,IAAI,CAAC2hH,KAAM+R,CAAAA,YAAY,GAAG,CAAA,GAAI/R,KAAMkR,CAAAA,SAAS,CAAI,GAAA,CAAA,CAAA;AAE1F,QAAA,IAAMc,YAAYhS,KAAMgS,CAAAA,SAAS,KAAKhS,MAAM0S,UAAU,GAAG,CAAK1S,IAAAA,KAAAA,CAAM4S,aAAa,KAAK,CAAA,IAAK5S,KAAM6S,CAAAA,aAAa,KAAK,CAAA,CAAA,CAAA;QACnH,IAAMoF,SAAAA,GAAYjG,SACd5zH,GAAAA,IAAAA,CAAKC,IAAI,CAAC,CAACD,IAAAA,CAAKe,GAAG,CAAC6gH,KAAM4S,CAAAA,aAAa,IAAIx0H,IAAKe,CAAAA,GAAG,CAAC6gH,KAAAA,CAAM6S,aAAa,CAAA,GAAI7S,KAAM0S,CAAAA,UAAU,IAAI1S,KAAMkR,CAAAA,SAAS,CAC9G,GAAA,CAAA,CAAA;AAEJ,QAAA,IAAMgH,MAAMF,UAAaC,GAAAA,SAAAA,CAAAA;QAEzB,OAAO;YAAErB,IAAMsB,EAAAA,GAAAA;YAAKrB,IAAMqB,EAAAA,GAAAA;YAAKpB,IAAMoB,EAAAA,GAAAA;YAAKnB,IAAMmB,EAAAA,GAAAA;AAAI,SAAA,CAAA;AACtD,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,YASC,GATDA,SAAAA,YAAAA,CAAcxgI,KAAc,EAAA;QAC1B,IAAM6+H,MAAAA,GAAS,IAAI,CAACnD,UAAU,CAAA;QAC9B,IAAM+E,eAAAA,GAAkB,CAAC,CAACzgI,KAAAA,CAAAA;QAE1B,IAAI6+H,MAAAA,CAAO7F,SAAS,KAAKyH,eAAiB,EAAA;AACxC,YAAA,OAAA;AACF,SAAA;AACA5B,QAAAA,MAAAA,CAAO7F,SAAS,GAAGyH,eAAAA,CAAAA;QACnB,IAAI,CAACrF,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;;AAKC,MACDsF,MAAAA,CAAAA,YAwBC,GAxBDA,SAAAA,aAAc1gI,KAAa,EAAA;AACzB,QAAA,IAAM2T,QAAQlN,IAAK+B,CAAAA,GAAG,CAAC,CAAA,EAAG7B,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA,CAAA;QAC3C,IAAM6+H,MAAAA,GAAS,IAAI,CAACnD,UAAU,CAAA;;AAG9B,QAAA,IAAImD,OAAOlrH,KAAK,KAAKA,SAASkrH,MAAO7F,CAAAA,SAAS,KAAK,KAAO,EAAA;AACxD,YAAA,OAAA;AACF,SAAA;;AAGA6F,QAAAA,MAAAA,CAAO7F,SAAS,GAAG,KAAA,CAAA;AACnB6F,QAAAA,MAAAA,CAAOlrH,KAAK,GAAGA,KAAAA,CAAAA;;QAGf,IAAI,CAAC0lH,SAAS,GAAG,IAAI,CAACgF,YAAY,CAAC,IAAI,CAAC7C,IAAI,IAAI,EAAA,CAAA,CAAA;QAChD,IAAI,CAACJ,OAAO,GAAG,IAAA,CAAA;;;AAIf,QAAA,IAAI,IAAI,CAACqC,aAAa,GAAG,CAAG,EAAA;AAC1B,YAAA,IAAMxzH,KAAQ0J,GAAAA,KAAAA,GAAQ,IAAI,CAAC8pH,aAAa,CAAA;AAExC,YAAA,IAAI,CAAC53H,IAAI,CAAC0qB,SAAS,CAAC/pB,IAAI,CAACsB,CAAC,GAAG,IAAI,CAAC41H,UAAU,GAAGzzH,KAAAA,CAAAA;AACjD,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACD02H,MAAAA,CAAAA,aAeC,GAfDA,SAAAA,cAAe3gI,KAAa,EAAA;AAC1B,QAAA,IAAM4T,SAASnN,IAAK+B,CAAAA,GAAG,CAAC,CAAA,EAAG7B,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA,CAAA;AAE5C,QAAA,IAAI4T,WAAW,CAAG,EAAA;AAChB,YAAA,OAAA;AACF,SAAA;QAEA,IAAMirH,MAAAA,GAAS,IAAI,CAACnD,UAAU,CAAA;QAE9B,IAAImD,MAAAA,CAAOjrH,MAAM,KAAKA,MAAQ,EAAA;AAC5B,YAAA,OAAA;AACF,SAAA;AAEAirH,QAAAA,MAAAA,CAAOjrH,MAAM,GAAGA,MAAAA,CAAAA;QAChB,IAAI,CAACwnH,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAwF,IAAAA,MAAAA,CAAAA,WASC,GATDA,SAAAA,WAAAA,CAAa5gI,KAAa,EAAA;AACxB,QAAA,IAAMwG,OAAOC,IAAK+B,CAAAA,GAAG,CAAC,CAAA,EAAG7B,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA,CAAA;AAE1C,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAC7C,QAAQ,KAAKzyH,IAAM,EAAA;AACpC,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAACs1H,SAAS,CAAC7C,QAAQ,GAAGzyH,IAAAA,CAAAA;QAC1B,IAAI,CAAC40H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEAyF,IAAAA,MAAAA,CAAAA,eAQC,GARDA,SAAAA,eAAAA,CAAiB7gI,KAAa,EAAA;AAC5B,QAAA,IAAMsD,IAAImD,IAAK+B,CAAAA,GAAG,CAAC,CAAA,EAAG7B,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA,CAAA;AAEvC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAC1B,YAAY,KAAK92H,CAAG,EAAA;AACrC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw4H,SAAS,CAAC1B,YAAY,GAAG92H,CAAAA,CAAAA;QAC9B,IAAI,CAAC83H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;;;AAIC,MACDe,MAAAA,CAAAA,iBAMC,GANDA,SAAAA,kBAAmBn8H,KAAc,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAAC3B,UAAU,KAAKn6H,KAAO,EAAA;AACvC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAAC87H,SAAS,CAAC3B,UAAU,GAAGn6H,KAAAA,CAAAA;QAC5B,IAAI,CAACo7H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA0F,IAAAA,MAAAA,CAAAA,aAQC,GARDA,SAAAA,aAAAA,CAAe9gI,KAAa,EAAA;AAC1B,QAAA,IAAMsD,IAAImD,IAAK+B,CAAAA,GAAG,CAAC,CAAA,EAAG7B,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA,CAAA;AAEvC,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACf,UAAU,KAAKz3H,CAAG,EAAA;AACnC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw4H,SAAS,CAACf,UAAU,GAAGz3H,CAAAA,CAAAA;QAC5B,IAAI,CAAC83H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;;AAGA2F,IAAAA,MAAAA,CAAAA,cAQC,GARDA,SAAAA,cAAAA,CAAgB/gI,KAA0B,EAAA;QACxC,IAAMsD,CAAAA,GAAItD,gBAAAA,KAAS,GAAA;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AAE/B,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACd,WAAW,KAAK13H,CAAG,EAAA;AACpC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw4H,SAAS,CAACd,WAAW,GAAG13H,CAAAA,CAAAA;QAC7B,IAAI,CAAC83H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA4F,IAAAA,MAAAA,CAAAA,gBAQC,GARDA,SAAAA,gBAAAA,CAAkBhhI,KAAa,EAAA;QAC7B,IAAMsD,CAAAA,GAAIqD,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA;AAE3B,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACb,aAAa,KAAK33H,CAAG,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw4H,SAAS,CAACb,aAAa,GAAG33H,CAAAA,CAAAA;QAC/B,IAAI,CAAC83H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AAEA6F,IAAAA,MAAAA,CAAAA,gBAQC,GARDA,SAAAA,gBAAAA,CAAkBjhI,KAAa,EAAA;QAC7B,IAAMsD,CAAAA,GAAIqD,OAAO3G,KAAU,CAAA,IAAA,CAAA,CAAA;AAE3B,QAAA,IAAI,IAAI,CAAC87H,SAAS,CAACZ,aAAa,KAAK53H,CAAG,EAAA;AACtC,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACw4H,SAAS,CAACZ,aAAa,GAAG53H,CAAAA,CAAAA;QAC/B,IAAI,CAAC83H,OAAO,GAAG,IAAA,CAAA;AACjB,KAAA,CAAA;AA3nBWkC,IAAAA,OAAAA,aAAAA,CAAAA;EAAsBj4C,eA4nBlC,EAAA;AA5nBYi4C,aAAAA,GAAAA,UAAAA,CAAAA;IADZ99G,YAAaoG,CAAAA,QAAa,CAAC03G,aAAa,CAAA;AAC5BA,CAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AA8nBbxlH,WAAAA,CAAYwlH,aAAe,EAAA;AAACnC,IAAAA,iBAAAA;AAAkB,CAAA,CAAA;;ACxqB9C;AACO,IAAA,UAAM+F,iBAAD,SAAL,MAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,UAAAA,EAAAA,MAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,UAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,UAAAA,CAAAA;qBAAmBrnH,MAC/B,CAAA;;ACFM,IAAA,KAAMsnH,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,KAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,KAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,KAAAA,CAAAA;EAAiB3gH,aAE7B;;ACCM,IAAA,WAAM4gH,iBAAD,SAAL,aAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,WAAAA,GAAAA;;;AAAAA,IAAAA,OAAAA,WAAAA,CAAAA;EAAoB5gH,aAGhC,EAAA;;AAFEd,IAAAA,SAAAA,EAAAA;AADU0hH,CAAAA,EAAAA,WAAAA,CAAAA,SAAAA,EAAAA,QAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAAAA,WAAAA,GAAAA,UAAAA,CAAAA;IADZ5hH,YAAaoG,CAAAA,QAAa,CAACw7G,WAAW,CAAA;AAC1BA,CAAAA,EAAAA,WAAAA,CAAAA;;ACEN,IAAA,mBAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,mBAAAA,GAAAA,EAAAA;AAAAA,IAAAA,mBAAAA,CACJ3hH,SAsEN,GAtED,SAAOA,SACL4hH,CAAAA,aAA4B,EAC5BC,cAAoC,EAAA;AAEpCD,QAAAA,aAAAA,CAAcvgH,MAAM,EAAA,CAAA;AAEpB,QAAA,IAAI,CAACwgH,cAAgB,EAAA;AACnBA,YAAAA,cAAAA,GAAiB,EAAC,CAAA;AACpB,SAAA;AAEA,QAAA,IAAMC,uBAAuB3hH,cAAeyhH,CAAAA,aAAAA,CAAAA,CAAAA;AAE5C,QAAA,IAAIE,oBAAsB,EAAA;YACxB,IAAkB5/H,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAC0vH,oBAAuB,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1C3hI,gBAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAMG,KAAAA,GAAQshI,aAAa,CAACzhI,GAA2B,CAAA,CAAA;AAEvD,gBAAA,IACE,OAAOG,KAAAA,KAAU,QACjB,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,OAAOA,KAAAA,KAAU,SACjBqhI,IArBGA,mBAqBiBI,CAAAA,eAAe,CAACzhI,KACpC,CAAA,EAAA;;oBAEAuhI,cAAc,CAAC1hI,IAAI,GAAGG,KAAAA,CAAAA;iBACjB,MAAA,IAAI4V,QAAQ5V,KAAQ,CAAA,EAAA;AACzB,oBAAA,IAAI,CAACuhI,cAAc,CAAC1hI,GAAAA,CAAI,EAAE;wBACxB0hI,cAAc,CAAC1hI,GAAI,CAAA,GAAG,EAAE,CAAA;AAC1B,qBAAA;AA5BGwhI,oBAAAA,mBAAAA,CA6BiBK,sBAAsB,CAAC1hI,KAAAA,EAAOuhI,cAAc,CAAC1hI,IAAI,EAAE,CAAA,CAAA,CAAA;AACzE,iBAAA,MAAO,IAAI2gB,aAAAA,CAAcW,EAAE,CAACnhB,KAAQ,CAAA,EAAA;;oBAElCuhI,cAAc,CAAC1hI,IAAI,GAAG;AAAEohB,wBAAAA,EAAAA,EAAIjhB,MAAM4gB,aAAa,EAAA;AAAG,qBAAA,CAAA;iBAC7C,MAAA,IAAI/K,SAAS7V,KAAQ,CAAA,EAAA;AAC1B,oBAAA,IAAI,CAACuhI,cAAc,CAAC1hI,GAAAA,CAAI,EAAE;wBACxB0hI,cAAc,CAAC1hI,GAAI,CAAA,GAAG,EAAC,CAAA;AACzB,qBAAA;AApCGwhI,oBAAAA,mBAAAA,CAqCiBM,uBAAuB,CAAC3hI,KAAAA,EAAOuhI,cAAc,CAAC1hI,IAAI,EAAE,CAAA,CAAA,CAAA;AAC1E,iBAAA;AACF,aAAA;AACF,SAAA;;AAGA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAkB+B,MAAOkQ,CAAAA,IAAI,CAACwvH,aAAAA,CAAc5gH,UAAU,CAAG,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9C7gB,YAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAMG,MAAQshI,GAAAA,aAAAA,CAAc5gH,UAAU,CAAC7gB,IAAI,CAAA,CAAA;AAE3C,YAAA,IACE,OAAOG,MAAAA,KAAU,QACjB,IAAA,OAAOA,MAAU,KAAA,QAAA,IACjB,OAAOA,MAAAA,KAAU,SACjBqhI,IAlDKA,mBAkDeI,CAAAA,eAAe,CAACzhI,MACpC,CAAA,EAAA;;gBAEAuhI,cAAc,CAAC1hI,KAAI,GAAGG,MAAAA,CAAAA;aACjB,MAAA,IAAI4V,QAAQ5V,MAAQ,CAAA,EAAA;AACzB,gBAAA,IAAI,CAACuhI,cAAc,CAAC1hI,IAAAA,CAAI,EAAE;oBACxB0hI,cAAc,CAAC1hI,IAAI,CAAA,GAAG,EAAE,CAAA;AAC1B,iBAAA;AAzDKwhI,gBAAAA,mBAAAA,CA0DeK,sBAAsB,CAAC1hI,MAAAA,EAAOuhI,cAAc,CAAC1hI,KAAI,EAAE,CAAA,CAAA,CAAA;AACzE,aAAA,MAAO,IAAI2gB,aAAAA,CAAcW,EAAE,CAACnhB,MAAQ,CAAA,EAAA;;gBAElCuhI,cAAc,CAAC1hI,KAAI,GAAG;AAAEohB,oBAAAA,EAAAA,EAAIjhB,OAAM4gB,aAAa,EAAA;AAAG,iBAAA,CAAA;aAC7C,MAAA,IAAI/K,SAAS7V,MAAQ,CAAA,EAAA;AAC1B,gBAAA,IAAI,CAACuhI,cAAc,CAAC1hI,IAAAA,CAAI,EAAE;oBACxB0hI,cAAc,CAAC1hI,IAAI,CAAA,GAAG,EAAC,CAAA;AACzB,iBAAA;AAjEKwhI,gBAAAA,mBAAAA,CAkEeM,uBAAuB,CAAC3hI,MAAAA,EAAOuhI,cAAc,CAAC1hI,KAAI,EAAE,CAAA,CAAA,CAAA;AAC1E,aAAA;AACF,SAAA;QAEA,OAAO0hI,cAAAA,CAAAA;AACT,KAAA,CAAA;AAvEWF,IAAAA,mBAAAA,CAyEJO,WAwBN,GAxBD,SAAOA,WACLL,CAAAA,cAAsC,EACtCD,aAA4B,EAAA;AAE5BA,QAAAA,aAAAA,CAAc5gH,UAAU,GAAG6gH,cAAAA,CAAAA;AAE3B,QAAA,IAAMC,uBAAuB3hH,cAAeyhH,CAAAA,aAAAA,CAAAA,CAAAA;QAC5C,IAAM5nH,MAAAA,GAAS4nH,cAAc5nH,MAAM,CAAA;AAEnC,QAAA,IAAI8nH,oBAAsB,EAAA;YACxB,IAAkB5/H,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAC0vH,oBAAuB,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA1C3hI,gBAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACT,IAAMG,KAAAA,GAAQuhI,cAAc,CAAC1hI,GAAoC,CAAA,CAAA;AAEjE,gBAAA,IAAIG,UAAUY,SAAW,EAAA;AACvB,oBAAA,SAAA;AACF,iBAAA;AAEA,gBAAA,IAAMihI,YAAeL,GAAAA,oBAAoB,CAAC3hI,GAAAA,CAAI,CAAC8X,IAAI,CAAA;;gBAGnD2pH,aAAa,CAACzhI,IAA2B,GA7FpCwhI,oBA6F2DS,mBAAmB,CAAC9hI,KAAO0Z,EAAAA,MAAAA,EAAQ,CAAGmoH,EAAAA,YAAAA,CAAAA,CAAAA;AACxG,aAAA;AACF,SAAA;QACAP,aAActgH,CAAAA,QAAQ,CAACsgH,aAAAA,CAAc5gH,UAAU,CAAA,CAAA;AACjD,KAAA,CAAA;AAjGW2gH,IAAAA,mBAAAA,CAmGJI,eAWN,GAXD,SAAOA,eAAAA,CAAiBtgI,GAAY,EAAA;AAClC,QAAA,OAAOA,YAAAA,CAAAA,GAAAA,EAAe6kE,SACjB7kE,CAAAA,IAAGN,aAAHM,GAAekD,EAAAA,UAAAA,CAAAA,IACflD,YAAG,CAAHA,KAAe4gI,iBACf5gI,CAAAA,IAAGN,aAAHM,GAAe2kE,EAAAA,UAAAA,CAAAA,IACf3kE,YAAAA,CAAAA,GAAAA,EAAe65C,WACf75C,CAAAA,IAAGN,aAAHM,GAAey5C,EAAAA,UAAAA,CAAAA,IACfz5C,YAAG,CAAHA,KAAe6gI,WACf7gI,CAAAA,IAAGN,YAAHM,CAAAA,GAAAA,EAAeu5C,iBACfv5C,YAAG,CAAHA,KAAe8gI,YACf9gI,CAAAA,IAAGN,aAAHM,GAAe4F,EAAAA,WAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;;AA9GWs6H,IAAAA,mBAAAA,CAiHJa,aAKN,GALD,SAAOA,aAAAA,CAAeliI,KAAc,EAAA;AAClC,QAAA,OAAO,CAAC,EAAE6V,QAAS7V,CAAAA,KAAAA,CAAAA,IACd4B,OAAOkQ,IAAI,CAAC9R,KAAO0B,CAAAA,CAAAA,MAAM,KAAK,CAC9B,IAAA,IAAA,IAAQ1B,SACR4Q,QAAS5Q,CAAAA,KAAAA,CAAMihB,EAAE,CAAA,CAAA,CAAA;AACxB,KAAA,CAAA;;AAtHWogH,IAAAA,mBAAAA,CAyHJc,aAIN,GAJD,SAAOA,aAAAA,CAAeniI,KAAU,EAAA;QAC9B,OAAO6V,QAAAA,CAAS7V,UACXA,KAAMoiI,CAAAA,SAAS,KAAKxhI,SACpBZ,IAAAA,KAAAA,CAAMqiI,OAAO,KAAKzhI,SAAAA,CAAAA;AACzB,KAAA,CAAA;AA7HWygI,IAAAA,mBAAAA,CA+HJiB,gBAEN,GAFD,SAAOA,gBAAAA,CAAkBtiI,KAAwB,EAAA;AAC/C,QAAA,OAAOqW,QAASrW,CAAAA,KAAAA,CAAAA,IAAUA,YAAK,CAALA,KAAiB41D,EAAAA,gBAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AAjIWyrE,IAAAA,mBAAAA,CAmIIS,mBA0Cd,GA1CD,SAAeA,mBAAAA,CACbh8H,QAAW,EACX4T,MAAc,EACd8tD,KAAa,EACb7vD,IAAsB,EACtB4qH,gBAAuB,EAAA;AAAvBA,QAAAA,IAAAA,6BAAAA,gBAAmB,GAAA,IAAA,CAAA;AAEnB,QAAA,IAAI/6D,QAAQ,EAAI,EAAA;AACdj+D,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,2EAAA,CAAA,CAAA;AAEd,YAAA,OAAA;AACF,SAAA;;AAEA,QAAA,IAAI2V,QAAQ9P,QAAW,CAAA,EAAA;AACrB,YAAA,IAAM0mB,MAAM,EAAE,CAAA;AAEd,YAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAoB1mB,QAAU,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnB9F,gBAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACTwsB,GAAI5oB,CAAAA,IAAI,CApJHy9H,mBAoJwBS,CAAAA,mBAAmB,CAAC9hI,KAAO0Z,EAAAA,MAAAA,EAAQ8tD,KAAQ,GAAA,CAAA,EAAG7vD,IAAM4qH,EAAAA,gBAAAA,CAAAA,CAAAA,CAAAA;AACnF,aAAA;YAEA,OAAO/1G,GAAAA,CAAAA;;AAET,SAAA,MAAO,IAzJE60G,mBAyJsBa,CAAAA,aAAa,CAACp8H,QAAW,CAAA,EAAA;YACtD,IAAM08H,eAAAA,GAAkB9oH,MAAO6K,CAAAA,UAAU,CAACze,QAAAA,CAAAA,CAAAA;AAE1C,YAAA,OAAOy8H,mBAAmBC,eAAkB18H,GAAAA,QAAAA,CAAAA;SACvC,MAAA,IAAIgQ,cAAchQ,QAAW,CAAA,EAAA;YAClC,IAAI0mB,IAAAA,CAAAA;AAEJ,YAAA,IAAI7U,IAAM,EAAA;AACR6U,gBAAAA,IAAAA,GAAM,IAAI7U,IAAAA,EAAAA,CAAAA;aACL,MAAA;AACL6U,gBAAAA,IAAAA,GAAM,EAAC,CAAA;AACT,aAAA;YACA,IAAkB5qB,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAChM,QAAW,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA9BjG,gBAAAA,IAAAA,GAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT2sB,gBAAAA,IAAG,CAAC3sB,GAAAA,CAAI,GAtKHwhI,oBAsK0BS,mBAAmB,CAACh8H,QAAQ,CAACjG,GAAI,CAAA,EAAE6Z,MAAQ8tD,EAAAA,KAAAA,GAAQ,GAAG5mE,SAAW2hI,EAAAA,gBAAAA,CAAAA,CAAAA;AAClG,aAAA;YAEA,OAAO/1G,IAAAA,CAAAA;SACF,MAAA;YACL,OAAO1mB,QAAAA,CAAAA;AACT,SAAA;AACF,KAAA,CAAA;IA7KWu7H,mBA+KIM,CAAAA,uBAgDd,GAhDD,SAAeA,uBAAAA,CACbc,cAAuC,EACvClB,cAAuC,EACvC/5D,KAAa,EAAA;AAEb,QAAA,IAAIA,QAAQ,EAAI,EAAA;AACdj+D,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,2EAAA,CAAA,CAAA;AAEd,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACshI,cAAgB,EAAA;AACnBA,YAAAA,cAAAA,GAAiB,EAAC,CAAA;AACpB,SAAA;QAEA,IAAkB3/H,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAC2wH,cAAiB,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApC5iI,YAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMG,KAAAA,GAAQyiI,cAAc,CAAC5iI,GAAI,CAAA,CAAA;AAEjC,YAAA,IACE,OAAOG,KAAAA,KAAU,QACjB,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,OAAOA,KAAAA,KAAU,SACjBqhI,IApMKA,mBAoMeI,CAAAA,eAAe,CAACgB,cACpC,CAAA,EAAA;;gBAEAlB,cAAc,CAAC1hI,IAAI,GAAGG,KAAAA,CAAAA;aACjB,MAAA,IAAI4V,QAAQ5V,KAAQ,CAAA,EAAA;AACzB,gBAAA,IAAI,CAACuhI,cAAc,CAAC1hI,GAAAA,CAAI,EAAE;oBACxB0hI,cAAc,CAAC1hI,GAAI,CAAA,GAAG,EAAE,CAAA;AAC1B,iBAAA;AA3MKwhI,gBAAAA,mBAAAA,CA4MeK,sBAAsB,CACxC1hI,KAAAA,EACAuhI,cAAc,CAAC1hI,GAAAA,CAAI,EACnB2nE,KAAQ,GAAA,CAAA,CAAA,CAAA;AAEZ,aAAA,MAAO,IAAIhnD,aAAAA,CAAcW,EAAE,CAACnhB,KAAQ,CAAA,EAAA;;gBAElCuhI,cAAc,CAAC1hI,IAAI,GAAG;AAAEohB,oBAAAA,EAAAA,EAAIjhB,MAAM4gB,aAAa,EAAA;AAAG,iBAAA,CAAA;aAC7C,MAAA,IAAI/K,SAAS7V,KAAQ,CAAA,EAAA;AAC1B,gBAAA,IAAI,CAACuhI,cAAc,CAAC1hI,GAAAA,CAAI,EAAE;oBACxB0hI,cAAc,CAAC1hI,GAAI,CAAA,GAAG,EAAC,CAAA;AACzB,iBAAA;AAvNKwhI,gBAAAA,mBAAAA,CAwNeM,uBAAuB,CACzC3hI,KAAAA,EACAuhI,cAAc,CAAC1hI,GAAAA,CAAI,EACnB2nE,KAAQ,GAAA,CAAA,CAAA,CAAA;AAEZ,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IA/NW65D,mBAiOIK,CAAAA,sBAgDd,GAhDD,SAAeA,sBAAAA,CACbgB,aAAwB,EACxBnB,cAAyB,EACzB/5D,KAAa,EAAA;AAEb,QAAA,IAAIA,QAAQ,EAAI,EAAA;AACdj+D,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,2EAAA,CAAA,CAAA;AAEd,YAAA,OAAA;AACF,SAAA;AACA,QAAA,IAAI,CAACshI,cAAgB,EAAA;AACnBA,YAAAA,cAAAA,GAAiB,EAAE,CAAA;AACrB,SAAA;AAEA,QAAA,IAAK,IAAIt/H,CAAI,GAAA,CAAA,EAAGA,IAAIygI,aAAchhI,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YAC7C,IAAMjC,KAAAA,GAAQ0iI,aAAa,CAACzgI,CAAE,CAAA,CAAA;AAE9B,YAAA,IACE,OAAOjC,KAAAA,KAAU,QACjB,IAAA,OAAOA,KAAU,KAAA,QAAA,IACjB,OAAOA,KAAAA,KAAU,SACjBqhI,IAtPKA,mBAsPeI,CAAAA,eAAe,CAACiB,aACpC,CAAA,EAAA;;gBAEAnB,cAAc,CAACt/H,EAAE,GAAGjC,KAAAA,CAAAA;aACf,MAAA,IAAI4V,QAAQ5V,KAAQ,CAAA,EAAA;AACzB,gBAAA,IAAI,CAACuhI,cAAc,CAACt/H,CAAAA,CAAE,EAAE;oBACtBs/H,cAAc,CAACt/H,CAAE,CAAA,GAAG,EAAE,CAAA;AACxB,iBAAA;AA7PKo/H,gBAAAA,mBAAAA,CA8PeK,sBAAsB,CACxC1hI,KAAAA,EACAuhI,cAAc,CAACt/H,CAAAA,CAAE,EACjBulE,KAAQ,GAAA,CAAA,CAAA,CAAA;AAEZ,aAAA,MAAO,IAAIhnD,aAAAA,CAAcW,EAAE,CAACnhB,KAAQ,CAAA,EAAA;;gBAElCuhI,cAAc,CAACt/H,EAAE,GAAG;AAAEgf,oBAAAA,EAAAA,EAAIjhB,MAAM4gB,aAAa,EAAA;AAAG,iBAAA,CAAA;aAC3C,MAAA,IAAI/K,SAAS7V,KAAQ,CAAA,EAAA;AAC1B,gBAAA,IAAI,CAACuhI,cAAc,CAACt/H,CAAAA,CAAE,EAAE;oBACtBs/H,cAAc,CAACt/H,CAAE,CAAA,GAAG,EAAC,CAAA;AACvB,iBAAA;AAzQKo/H,gBAAAA,mBAAAA,CA0QeM,uBAAuB,CACzC3hI,KAAAA,EACAuhI,cAAc,CAACt/H,CAAAA,CAAE,EACjBulE,KAAQ,GAAA,CAAA,CAAA,CAAA;AAEZ,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAjRW65D,IAAAA,OAAAA,mBAAAA,CAAAA;AAkRZ,CAAA;;AChRD;;AAEC,IACM,IAAA,WAAMsB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,CAET,MAAsB,EAAA;aAAdjpH,MAAAA,GAAAA,MAAAA,CAAAA;;AAFCipH,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AAKXC,IAAAA,MAAAA,CAAAA,QAgDC,GAhDDA,SAAAA,QAAAA,CAAaC,QAAuB,EAAA;AAClC,QAAA,IAAI,CAACA,QAAU,EAAA;YACb,OAAO,IAAA,CAAA;AACT,SAAA;QAEA,IAAMpiH,IAAAA,GAAOoiH,SAAS5hH,EAAE,CAAA;AACxB,QAAA,IAAM6hH,iBAAoB,GAAA,IAAI,CAACC,QAAQ,CAACtiH,IAAAA,CAAAA,CAAAA;QACxC,IAAI6gH,aAAAA,CAAAA;AAEJ,QAAA,IAAI,CAACwB,iBAAmB,EAAA;AACtBv5H,YAAAA,OAAAA,CAAQtJ,KAAK,CAAC,yBAAC,GAAyBwgB,IAAK,GAAA,aAAA,CAAA,CAAA;YAE7C,OAAO7f,SAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,OAAQkiI,kBAAkBvjD,QAAQ;YAChC,KAAK35D,QAAa,CAACw9C,QAAQ;AACzBk+D,gBAAAA,aAAAA,GAAgBl+D,QAASrgE,CAAAA,MAAM,CAAC,IAAI,CAAC2W,MAAM,CAAA,CAAA;AAE3C,gBAAA,MAAA;YACF,KAAKkM,QAAa,CAACqgD,QAAQ;AACzBq7D,gBAAAA,aAAAA,GAAgBr7D,QAASljE,CAAAA,MAAM,CAAC,IAAI,CAAC2W,MAAM,CAAA,CAAA;AAE3C,gBAAA,MAAA;YACF,KAAKkM,QAAa,CAAC6yC,OAAO;AACxB6oE,gBAAAA,aAAAA,GAAgB7oE,OAAQ11D,CAAAA,MAAM,CAAC,IAAI,CAAC2W,MAAM,CAAA,CAAA;AAE1C,gBAAA,MAAA;AACF,YAAA;AAAS,gBAAA;oBACP,IAAM8K,gBAAAA,GAAmBlF,QAASwjH,CAAAA,iBAAAA,CAAkBvjD,QAAQ,CAAA,CAAA;AAE5D,oBAAA,IAAI/6D,gBAAkB,EAAA;AACpB88G,wBAAAA,aAAAA,GAAgB,IAAI98G,gBAAAA,CAAiB,IAAI,CAAC9K,MAAM,CAAA,CAAA;AAClD,qBAAA;AACF,iBAAA;AACF,SAAA;AAEA,QAAA,IAAI,CAAC4nH,aAAe,EAAA;AAClB/3H,YAAAA,OAAAA,CAAQtJ,KAAK,CAAE,4BAA4B6iI,GAAAA,iBAAAA,CAAkBvjD,QAAQ,GAAC,aAAA,CAAA,CAAA;YAEtE,OAAO3+E,SAAAA,CAAAA;AACT,SAAA;QAEA0gI,aAAczgH,CAAAA,aAAa,CAACiiH,iBAAAA,CAAkB7hH,EAAE,CAAA,CAAA;AAChD,QAAA,IAAI,CAACvH,MAAM,CAACiH,WAAW,CAAC2gH,aAAAA,CAAAA,CAAAA;QACxBD,mBAAoBO,CAAAA,WAAW,CAACkB,iBAAmBxB,EAAAA,aAAAA,CAAAA,CAAAA;QAEnD,OAAOA,aAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQyB,QAEP,GAFD,SAAQA,QAAAA,CAAUC,IAAY,EAAA;AAC5B,QAAA,OAAO,IAAI,CAACtpH,MAAM,CAACupH,aAAa,CAACD,IAAK,CAAA,CAAA;AACxC,KAAA,CAAA;AAzDWL,IAAAA,OAAAA,WAAAA,CAAAA;AA0DZ,CAAA,GAAA;AAEM,IAAA,QAAMO,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,QAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,QAAAA,CAAAA,SAAAA,CAAAA;AACX,IAAA,MAAA,CAAMN,QAEL,GAFD,SAAMA,QAAAA,CAAUniH,IAAY,EAAA;eAA5B,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;AAAO7f,oBAAAA,SAAAA;;;AACT,SAAA,CAAA,EAAA,CAAA;;AAHWsiI,IAAAA,OAAAA,QAAAA,CAAAA;AAIZ,CAAA;;ACtEM,SAASC,MAAAA,CAAWt+H,GAAQ,EAAEgB,IAAO,EAAA;AAC1C,IAAA,IAAI,CAAChB,GAAAA,CAAIU,QAAQ,CAACM,IAAO,CAAA,EAAA;AACvBhB,QAAAA,GAAAA,CAAIjB,IAAI,CAACiC,IAAAA,CAAAA,CAAAA;QAET,OAAO,IAAA,CAAA;AACT,KAAA;AACF,CAAA;AAEO,SAASu9H,kBAAmB17H,CAAM,EAAA;IACvC,IAAIf,MAAAA,CAAOkiE,QAAQ,CAACnhE,CAAI,CAAA,EAAA;QACtB,OAAO;AAACwU,YAAAA,SAAAA,CAAU6yC,QAAQ;AAAErnD,YAAAA,CAAAA;AAAE,SAAA,CAAA;AAChC,KAAA;AACA,IAAA,IAAIA,CAAG,EAAA;QACL,IAAM27H,SAAAA,GAAY37H,CAAC,CAAC,CAAE,CAAA,CAAA;QACtB,IAAM47H,SAAAA,GAAY57H,CAAC,CAAC,CAAE,CAAA,CAAA;QAEtB,IAAIgC,KAAAA,CAAMkM,OAAO,CAACytH,SAAY,CAAA,EAAA;;AAE5B,YAAA,OAAA;AACF,SAAA;AAEA,QAAA,IAAIA,SAAc,KAAA,QAAA,IAAYA,SAAcnnH,KAAAA,SAAAA,CAAU6yC,QAAQ,EAAE;YAC9D,OAAO;AAAC7yC,gBAAAA,SAAAA,CAAU6yC,QAAQ;AAAErnD,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA;AACnC,SAAA;AACA,QAAA,IAAI27H,cAAc,OAAS,EAAA;YACzB,OAAO;AAACnnH,gBAAAA,SAAAA,CAAU6iC,IAAI;AAAEr3C,gBAAAA,CAAC,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA;AAC/B,SAAA;QACA,IAAI27H,SAAAA,KAAcnnH,SAAU6iC,CAAAA,IAAI,EAAE;;AAEhC,YAAA,IAAMmL,SAAiCo5E,GAAAA,SAAAA,CAAU9xH,GAAG,CAACqC,SAAAA,IAAAA,EAAAA;AAAQ,gBAAA,OAAA;AAACsI,oBAAAA,kBAAAA,CAAmB4iC,IAAI;AAAElrC,oBAAAA,IAAAA;AAAK,iBAAA,CAAA;;YAE5F,OAAO;AAACqI,gBAAAA,SAAAA,CAAU6vC,YAAY;AAAE7B,gBAAAA,SAAAA;AAAU,aAAA,CAAA;AAC5C,SAAA;AACA,QAAA,IAAIm5E,SAAc,KAAA,OAAA,IAAWA,SAAcnnH,KAAAA,SAAAA,CAAU0vC,KAAK,EAAE;YAC1D,OAAO;AAAC1vC,gBAAAA,SAAAA,CAAU6vC,YAAY;gBAAEw3E,6BAA8BD,CAAAA,SAAAA,CAAAA;AAAW,aAAA,CAAA;AAC3E,SAAA;QAEA,OAAO57H,CAAAA,CAAAA;AACT,KAAA;AACF,CAAA;AAEO,SAAS87H,2BAAAA,CAA6B97H,CAAM,EAAEsS,CAAS,EAAA;IAC5D,IAAItQ,KAAAA,CAAMkM,OAAO,CAAClO,CAAAA,CAAAA,IAAMA,CAAC,CAAC,CAAA,CAAE,KAAK,QAAU,EAAA;QACzC,OAAO;AAACwU,YAAAA,SAAAA,CAAU6yC,QAAQ;YAAErnD,CAAC,CAAC,CAAE,CAAA,CAACsS,CAAE,CAAA;AAAC,SAAA,CAAA;AACtC,KAAA;AAEA,IAAA,OAAOopH,iBAAkB17H,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B,CAAA;AAEO,SAAS+7H,gBAAiB/7H,CAAM,EAAA;AACrC,IAAA,IAAIA,CAAKA,IAAAA,CAAC,CAAC,CAAA,CAAE,KAAK,OAAS,EAAA;AACzB,QAAA,OAAO+I,UAAW/I,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,IAAA,CAAA,CAAA;AAC1B,KAAA;IAEA,OAAO;AAAC,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAG,QAAA,CAAA;AAAE,KAAA,CAAA;AACrB,CAAA;AAEO,SAASg8H,qBAAAA,CAAuBh8H,CAAM,EAAEgJ,UAAoB,EAAA;AACjE,IAAA,IAAIhJ,CAAG,EAAA;AACL,QAAA,IAAIA,CAAC,CAAC,CAAE,CAAA,KAAK,QAAU,EAAA;YACrB,OAAO;AAACwU,gBAAAA,SAAAA,CAAUkzC,MAAM;AAAE1nD,gBAAAA,CAAC,CAAC,CAAA,CAAE,CAAC8J,GAAG,CAAC,SAACN,KAAAA,EAAAA;AAAeT,oBAAAA,OAAAA,UAAAA,CAAWS,KAAOR,EAAAA,UAAAA,CAAAA,CAAAA;;AAAa,aAAA,CAAA;AACpF,SAAA,MAAO,IAAIhJ,CAAC,CAAC,CAAA,CAAE,KAAK,UAAY,EAAA;AAC9B,YAAA,OAAOi8H,cAAej8H,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEgJ,UAAAA,CAAAA,CAAAA;AAC9B,SAAA,MAAO,IAAIhJ,CAAC,CAAC,CAAA,CAAE,KAAK,OAAS,EAAA;YAC3B,OAAO;AAACwU,gBAAAA,SAAAA,CAAUizC,UAAU;gBAAE1+C,UAAW/I,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAEgJ,UAAAA,CAAAA;AAAY,aAAA,CAAA;AAC7D,SAAA;QAEA,OAAOhJ,CAAAA,CAAAA;AACT,KAAA;AACF,CAAA;AAEO,SAASk8H,uBAAwBl8H,CAAM,EAAA;AAC5C,IAAA,IAAIA,CAAKA,IAAAA,CAAC,CAAC,CAAA,CAAE,KAAK,QAAU,EAAA;QAC1B,OAAO;AAACwU,YAAAA,SAAAA,CAAU4yC,MAAM;AAAEpnD,YAAAA,CAAC,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA;AACjC,KAAA;AAEA,IAAA,OAAO07H,iBAAkB17H,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B,CAAA;AAUO,SAASi8H,cAAAA,CAAgBj8H,CAAM,EAAEgJ,UAAoB,EAAA;AAC1D,IAAA,IAAIhJ,CAAG,EAAA;AACL,QAAA,IAAIuJ,QAAwB,EAAE,CAAA;AAE9BrP,QAAAA,MAAAA,CAAOsW,mBAAmB,CAACxQ,CAAGiK,CAAAA,CAAAA,OAAO,CAACqI,SAAAA,CAAAA,EAAAA;AACpC,YAAA,IAAMjI,OAAOF,YAAamI,CAAAA,CAAAA,CAAAA,CAAAA;AAC1B,YAAA,IAAM9I,KAAQT,GAAAA,UAAAA,CAAW/I,CAAC,CAACsS,EAAE,EAAEtJ,UAAAA,CAAAA,CAAAA;AAE/BO,YAAAA,KAAAA,CAAMrN,IAAI,CAAC;AAACmO,gBAAAA,IAAAA;AAAMb,gBAAAA,KAAK,CAAC,CAAE,CAAA;AAAEA,gBAAAA,KAAK,CAAC,CAAE,CAAA;AAAEA,gBAAAA,KAAK,CAAC,CAAE,CAAA;AAAEA,gBAAAA,KAAK,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA,CAAA;AAC3D,SAAA,CAAA,CAAA;AACAD,QAAAA,KAAAA,GAAQA,KAAMgB,CAAAA,IAAI,CAAC,SAACvK,CAAGC,EAAAA,CAAAA,EAAAA;AAAMD,YAAAA,OAAAA,CAAC,CAAC,CAAA,CAAE,GAAGC,CAAC,CAAC,CAAE,CAAA,CAAA;;QAExC,OAAO;AAACuU,YAAAA,SAAAA,CAAUmzC,cAAc;AAAEp+C,YAAAA,KAAAA;AAAM,SAAA,CAAA;AAC1C,KAAA;AACF,CAAA;AAEO,SAASR,UAAAA,CAAYjC,GAAsB,EAAEkC,UAAoB,EAAA;IACtE,IAAIC,GAAAA,CAAAA;IAEJ,IAAI,OAAOnC,QAAQ,QAAU,EAAA;QAC3BA,GAAMA,GAAAA,GAAAA,CAAIqC,OAAO,CAAC,aAAe,EAAA,EAAA,CAAA,CAAA;QACjC,IAAI1D,CAAAA,GAAI,gDAAiD2D,CAAAA,IAAI,CAACtC,GAAAA,CAAAA,CAAAA;AAE9D,QAAA,IAAIrB,CAAG,EAAA;AACL,YAAA,IAAMzF,CAAI,GAAA,CAACyF,CAAC,CAAC,CAAE,CAAA,CAAA;YAEfwD,GAAM,GAAA;gBAAC,CAACxD,CAAC,CAAC,CAAE,CAAA;gBAAE,CAACA,CAAC,CAAC,CAAE,CAAA;gBAAE,CAACA,CAAC,CAAC,CAAE,CAAA;AAAEvG,gBAAAA,KAAAA,CAAMc,CAAK,CAAA,GAAA,GAAA,GAAMjB,IAAK2D,CAAAA,KAAK,CAAC1C,CAAI,GAAA,GAAA,CAAA;AAAK,aAAA,CAAA;AACnE,SAAA,MAAO,IAAI,gBAAA,CAAiBqJ,IAAI,CAACvC,GAAM,CAAA,EAAA;YACrCmC,GAAM,GAAA;AAACjC,gBAAAA,QAAAA,CAASF,GAAG,CAAC,CAAA,CAAE,GAAGA,GAAG,CAAC,EAAE,EAAE,EAAA,CAAA;AAAKE,gBAAAA,QAAAA,CAASF,GAAG,CAAC,CAAA,CAAE,GAAGA,GAAG,CAAC,EAAE,EAAE,EAAA,CAAA;AAAKE,gBAAAA,QAAAA,CAASF,GAAG,CAAC,CAAA,CAAE,GAAGA,GAAG,CAAC,EAAE,EAAE,EAAA,CAAA;AAAK,gBAAA,GAAA;AAAI,aAAA,CAAA;;AAE1G,SAAA,MAAO,IAAIrB,CAAAA,GAAI,2CAA4C2D,CAAAA,IAAI,CAACtC,GAAM,CAAA,EAAA;YACpEmC,GAAM,GAAA;gBAACjC,QAASvB,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;gBAAKuB,QAASvB,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;gBAAKuB,QAASvB,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;AAAK,gBAAA,GAAA;AAAI,aAAA,CAAA;AACzE,SAAA;AACF,KAAA,MAAO,IAAOtM,YAAH2N,CAAAA,GAAAA,EAAe9E,KAAO,CAAA,EAAA;QAC/BiH,GAAM,GAAA;AAACnC,YAAAA,GAAG,CAAC,CAAE,CAAA;AAAEA,YAAAA,GAAG,CAAC,CAAE,CAAA;AAAEA,YAAAA,GAAG,CAAC,CAAE,CAAA;YAAE5H,KAAM4H,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAI,GAAA,GAAA,GAAM/H,IAAK2D,CAAAA,KAAK,CAACoE,GAAG,CAAC,CAAA,CAAE,GAAG,GAAA,CAAA;AAAK,SAAA,CAAA;AAChF,KAAA;AAEA,IAAA,IAAIkC,UAAY,EAAA;;AAEdC,QAAAA,GAAAA,GAAMkzH,cAAelzH,CAAAA,GAAAA,CAAAA,CAAAA;AACvB,KAAA;;IAGA,OAAOA,GAAAA,CAAAA;AACT,CAAA;AAEO,SAASkzH,eAAgBn8H,CAAW,EAAA;IACzC,IAAIgC,KAAAA,CAAMkM,OAAO,CAAClO,CAAI,CAAA,EAAA;QACpB,OAAOA,CAAAA,CAAE8J,GAAG,CAACvP,SAAAA,CAAAA,EAAAA;AAAK0E,YAAAA,OAAAA,MAAAA,CAAOkiE,QAAQ,CAAC5mE,CAAI,GAAA,GAAA,CAAA,GAAO0E,MAAO,CAAC1E,CAAAA,CAAAA,GAAI,GAAE,EAAG6hI,OAAO,CAAC,CAAM,CAAA,CAAA,GAAA,CAAA,CAAA;;AAC9E,KAAA;AACF,CAAA;AAEO,SAASjyH,aAAcpQ,CAAS,EAAA;IACrC,IAAM2Q,KAAAA,GAAQ,kBAAmBtB,CAAAA,IAAI,CAACrP,CAAAA,CAAAA,CAAAA;AAEtC,IAAA,IAAI2Q,KAAO,EAAA;AACT,QAAA,OAAO,CAACA,KAAK,CAAC,CAAA,CAAE,GAAG,GAAA,IAAOA,KAAK,CAAC,CAAA,CAAE,GAAG,CAAC,IAAI,CAAA,CAAA,CAAA;AAC5C,KAAA;AAEA,IAAA,OAAO,CAAC3Q,CAAAA,CAAAA;AACV,CAAA;AAEO,SAASsiI,gBAAAA,CAAkB7yH,KAAwD,EAAER,UAAoB,EAAA;IAC9G,IAAIhH,KAAAA,CAAMkM,OAAO,CAAC1E,KAAQ,CAAA,EAAA;AACxB,QAAA,IAAIA,KAAK,CAAC,CAAA,CAAE,KAAKgL,SAAAA,CAAUmzC,cAAc,EAAE;YACzC,OAAOn+C,KAAAA,CAAAA;AACT,SAAA;;AAGA,QAAA,OAAO,CAACA,KAAK,CAAC,CAAA,CAAE,KAAK,UAAcA,IAAAA,KAAK,CAAC,CAAA,CAAE,KAAK,OAAM,KAAMyyH,eAAezyH,KAAK,CAAC,EAAE,EAAER,UAAAA,CAAAA,CAAAA;KAChF,MAAA;AACL,QAAA,OAAOizH,eAAezyH,KAAOR,EAAAA,UAAAA,CAAAA,CAAAA;AAC/B,KAAA;AACF,CAAA;AAEO,SAASszH,gBAAiBt8H,CAAM,EAAA;AACrC,IAAA,IAAIA,CAAG,EAAA;QACL,IAAIA,CAAAA,CAAEhG,MAAM,KAAK,CAAG,EAAA;YAClB,OAAO;AAACwa,gBAAAA,SAAAA,CAAU+yC,aAAa;AAAEvnD,gBAAAA,CAAAA;AAAE,aAAA,CAAA;AACrC,SAAA;QACA,IAAM27H,SAAAA,GAAY37H,CAAC,CAAC,CAAE,CAAA,CAAA;QAEtB,IACE27H,SAAAA,KAAc,MACdA,IAAAA,SAAAA,KAAc,QACdA,IAAAA,SAAAA,KAAcnnH,SAAU+nH,CAAAA,WAAW,IACnCZ,SAAAA,KAAcnnH,SAAUozC,CAAAA,WAAW,EACnC;YACA,IAAMg0E,SAAAA,GAAY57H,CAAC,CAAC,CAAE,CAAA,CAAA;YACtB,IAAMw8H,MAAAA,GAASZ,SAAS,CAAC,CAAE,CAAA,CAAA;YAC3B,IAAMpyF,MAAAA,GAASoyF,SAAS,CAAC,CAAE,CAAA,CAAA;YAC3B,IAAIn5E,aAAAA,GAAgBm5E,SAAS,CAAC,CAAE,CAAA,CAAA;AAChC,YAAA,IAAMa,eAAeZ,6BAA8BW,CAAAA,MAAAA,CAAAA,CAAAA;;AAGnD,YAAA,IAAI,CAAC/5E,aAAe,EAAA;AAClBA,gBAAAA,aAAAA,GAAgB,EAAE,CAAA;AAClB,gBAAA,IAAK,IAAIi6E,aAAgB,GAAA,CAAA,EAAGA,gBAAgBlzF,MAAOxvC,CAAAA,MAAM,EAAE0iI,aAAiB,EAAA,CAAA;AAC1E,oBAAA,IAAMtyF,KAAQZ,GAAAA,MAAM,CAACkzF,aAAAA,CAAc,CAACz/H,KAAK,EAAA,CAAA;AAEzC,oBAAA,IAAIy/H,kBAAkB,CAAG,EAAA;AACvBj6E,wBAAAA,aAAAA,CAAcvmD,IAAI,CAACkuC,KAAAA,CAAAA,CAAAA;AACrB,qBAAA,MAAO,IAAIsyF,aAAAA,GAAgBlzF,MAAOxvC,CAAAA,MAAM,GAAG,CAAG,EAAA;AAC5CyoD,wBAAAA,aAAAA,CAAcvmD,IAAI,CAACkuC,KAAAA,CAAAA,CAAAA;AACnBqY,wBAAAA,aAAAA,CAAcvmD,IAAI,CAACkuC,KAAAA,CAAAA,CAAAA;qBACd,MAAA;AACLqY,wBAAAA,aAAAA,CAAcvmD,IAAI,CAACkuC,KAAAA,CAAAA,CAAAA;AACrB,qBAAA;AACF,iBAAA;AACF,aAAA;YAEA,OAAO;AAAC51B,gBAAAA,SAAAA,CAAUszC,iBAAiB;AAAE,gBAAA;AAAC20E,oBAAAA,YAAAA;AAAcjzF,oBAAAA,MAAAA;AAAQiZ,oBAAAA,aAAAA;AAAc,iBAAA;AAAC,aAAA,CAAA;AAC7E,SAAA;QAEA,OAAOziD,CAAAA,CAAAA;AACT,KAAA;AACF,CAAA;AAEO,SAAS28H,oBAAqBtqH,CAAsB,EAAA;IACzD,IAAkBnY,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAACiI,CAAI,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvBla,QAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTka,QAAAA,CAAC,CAACla,GAAI,CAAA,GAAG8G,MAAOoT,CAAAA,CAAC,CAACla,GAAI,CAAA,CAAA,CAAA;AACxB,KAAA;IAEA,OAAOka,CAAAA,CAAAA;AACT,CAAA;AAEO,SAASuqH,iBAAkBvqH,CAAsB,EAAA;IACtD,IAAkBnY,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAACiI,CAAI,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAvBla,QAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAIka,CAAC,CAACla,GAAI,CAAA,KAAKe,SAAW,EAAA;YACxB,OAAOmZ,CAAC,CAACla,GAAI,CAAA,CAAA;AACf,SAAA;AACF,KAAA;IAEA,OAAOka,CAAAA,CAAAA;AACT,CAAA;AAEA,IAAMgP,GAAAA,GAAMtiB,KAAKsiB,GAAG,CAAA;AACpB,IAAMF,GAAAA,GAAMpiB,KAAKoiB,GAAG,CAAA;AACpB,IAAMipF,GAAAA,GAAMrrG,IAAKU,CAAAA,EAAE,GAAG,GAAA,CAAA;AACtB,IAAMo9H,GAAAA,GAAM,GAAM99H,GAAAA,IAAAA,CAAKU,EAAE,CAAA;AAElB,SAASq9H,oBAAqB13H,GAAoB,EAAEhF,CAAS,EAAEjF,CAAS,EAAEiJ,CAAS,EAAA;AACxF,IAAA,IAAMs2B,EAAKrZ,GAAAA,GAAAA,CAAI,CAACjhB,GAAIgqG,GAAO,GAAA,CAAA,CAAA,CAAA;AAC3B,IAAA,IAAMzvE,EAAKtZ,GAAAA,GAAAA,CAAI,CAAClmB,GAAIivG,GAAO,GAAA,CAAA,CAAA,CAAA;AAC3B,IAAA,IAAMxvE,EAAKvZ,GAAAA,GAAAA,CAAI,CAACjd,GAAIgmG,GAAO,GAAA,CAAA,CAAA,CAAA;AAE3B,IAAA,IAAMxgG,EAAKuX,GAAAA,GAAAA,CAAI,CAAC/gB,GAAIgqG,GAAO,GAAA,CAAA,CAAA,CAAA;AAC3B,IAAA,IAAMtmE,EAAK3iB,GAAAA,GAAAA,CAAI,CAAChmB,GAAIivG,GAAO,GAAA,CAAA,CAAA,CAAA;AAC3B,IAAA,IAAMrmE,EAAK5iB,GAAAA,GAAAA,CAAI,CAAC/c,GAAIgmG,GAAO,GAAA,CAAA,CAAA,CAAA;AAE3BhlG,IAAAA,GAAG,CAAC,CAAE,CAAA,GAAGwE,KAAK+wB,EAAKC,GAAAA,EAAAA,GAAKF,KAAKoJ,EAAKC,GAAAA,EAAAA,CAAAA;AAClC3+B,IAAAA,GAAG,CAAC,CAAE,CAAA,GAAGs1B,KAAKoJ,EAAKlJ,GAAAA,EAAAA,GAAKhxB,KAAK+wB,EAAKoJ,GAAAA,EAAAA,CAAAA;AAClC3+B,IAAAA,GAAG,CAAC,CAAE,CAAA,GAAGs1B,KAAKC,EAAKoJ,GAAAA,EAAAA,GAAKn6B,KAAKk6B,EAAKlJ,GAAAA,EAAAA,CAAAA;AAClCx1B,IAAAA,GAAG,CAAC,CAAE,CAAA,GAAGs1B,KAAKC,EAAKC,GAAAA,EAAAA,GAAKhxB,KAAKk6B,EAAKC,GAAAA,EAAAA,CAAAA;IAElC,OAAO3+B,GAAAA,CAAAA;AACT,CAAA;AAEA,SAASvE,KAAOjF,CAAAA,CAAS,EAAEuD,GAAW,EAAE2B,GAAW,EAAA;AACjD,IAAA,OAAOlF,CAAIkF,GAAAA,GAAAA,GAAMA,GAAOlF,GAAAA,CAAAA,GAAIuD,MAAMA,GAAMvD,GAAAA,CAAAA,CAAAA;AAC1C,CAAA;AAEO,SAASmhI,mBAAAA,CAAqB33H,GAAoB,EAAEkd,IAAU,EAAA;IACnE,IAAMliB,CAAAA,GAAIkiB,IAAI,CAAC,CAAE,CAAA,CAAA;IACjB,IAAMnnB,CAAAA,GAAImnB,IAAI,CAAC,CAAE,CAAA,CAAA;IACjB,IAAMle,CAAAA,GAAIke,IAAI,CAAC,CAAE,CAAA,CAAA;IACjB,IAAMnc,CAAAA,GAAImc,IAAI,CAAC,CAAE,CAAA,CAAA;AACjB,IAAA,IAAMmd,KAAKr/B,CAAIA,GAAAA,CAAAA,CAAAA;AACf,IAAA,IAAMs/B,KAAKvkC,CAAIA,GAAAA,CAAAA,CAAAA;AACf,IAAA,IAAMwkC,KAAKv7B,CAAIA,GAAAA,CAAAA,CAAAA;AACf,IAAA,IAAMw7B,KAAKx/B,CAAIq/B,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMu9F,KAAK7hI,CAAIskC,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMM,KAAK5kC,CAAIukC,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMu9F,KAAK74H,CAAIq7B,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMy9F,KAAK94H,CAAIs7B,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMO,KAAK77B,CAAIu7B,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMO,KAAK/5B,CAAIs5B,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMU,KAAKh6B,CAAIu5B,GAAAA,EAAAA,CAAAA;AACf,IAAA,IAAMU,KAAKj6B,CAAIw5B,GAAAA,EAAAA,CAAAA;IACTle,IAAAA,GAAAA,GAAM,IAAIse,EAAKE,GAAAA,EAAAA,CAAAA,CAAIve,MAAMs7G,EAAK58F,GAAAA,EAAAA,CAAgBD;IAC9Cve,IAAAA,GAAAA,GAAMo7G,KAAK58F,EAAIve,CAAAA,CAAAA,GAAAA,GAAM,IAAI+d,EAAKK,GAAAA,EAAAA,CAAgBC;IACpD,IAAMne,GAAAA,GAAMk7G,KAAK98F,EAAIne,EAAAA,GAAAA,GAAMk7G,KAAKh9F,EAAIje,EAAAA,GAAAA,GAAM,IAAI2d,EAAKG,GAAAA,EAAAA,CAAAA;IAEnD36B,GAAG,CAAC,CAAE,CAAA,GAAGrG,IAAKokC,CAAAA,IAAI,CAACtiC,KAAAA,CAAM,CAACkhB,GAAAA,EAAK,CAAC,CAAA,EAAG,CAAM86G,CAAAA,CAAAA,GAAAA,GAAAA,CAAAA;AACzC,IAAA,IAAI99H,IAAKe,CAAAA,GAAG,CAACiiB,GAAAA,CAAAA,GAAO,SAAW,EAAA;AAC7B3c,QAAAA,GAAG,CAAC,CAAE,CAAA,GAAGrG,KAAK8kB,KAAK,CAAC7B,KAAKC,GAAO46G,CAAAA,GAAAA,GAAAA,CAAAA;AAChCz3H,QAAAA,GAAG,CAAC,CAAE,CAAA,GAAGrG,KAAK8kB,KAAK,CAACjC,KAAKH,GAAOo7G,CAAAA,GAAAA,GAAAA,CAAAA;KAC3B,MAAA;QACLz3H,GAAG,CAAC,EAAE,GAAG,CAAA,CAAA;QACTA,GAAG,CAAC,EAAE,GAAGrG,IAAAA,CAAK8kB,KAAK,CAAC,CAACnC,KAAKG,GAAOg7G,CAAAA,GAAAA,GAAAA,CAAAA;AACnC,KAAA;IAEA,OAAOz3H,GAAAA,CAAAA;AACT,CAAA;AAEA;;AAEC,IACM,SAAS+3H,aACd39F,CAAAA,MAAa,EACb49F,cAA+B,EAAA;AAE/B,IAAA,IAAI59F,MAAQ,EAAA;QACV,OAAO;YAACA,MAAM,CAAC,EAAE,GAAG,GAAA;YAAK,GAAMA,GAAAA,MAAM,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA;AAC3C,KAAA,MAAO,IAAI49F,cAAgB,EAAA;QACzB,OAAO9nF,0BAA0B,CAAC8nF,cAAe,CAAA,CAAA;KAC5C,MAAA;QACL,OAAO;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;AACf,KAAA;AACF,CAAA;AAEgE,IAAA/nF,MAAA,CAAA;AAAzD,IAAMC,0BAAmD,IAAAD,MAAA,GAAA,EAAA,EAAAA,MAC7D5hC,CAAAA,cAAAA,CAAe8hC,sBAAsB,CAAG,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,CAAA;CAAE,EADeF,MAAA,CAE7D5hC,cAAe+hC,CAAAA,6BAA6B,CAAG,GAAA;AAAC,IAAA,CAAA;IAAG,CAAC,GAAA;CAAI,EAFKH,MAAA,CAG7D5hC,cAAegiC,CAAAA,0BAA0B,CAAG,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,GAAA;CAAI,EAHSJ,MAAA,CAI7D5hC,cAAeiiC,CAAAA,wBAAwB,CAAG,GAAA;IAAC,CAAC,GAAA;AAAK,IAAA,GAAA;CAAI,EAJQL,MAAA,CAK7D5hC,cAAekiC,CAAAA,2BAA2B,CAAG,GAAA;IAAC,CAAC,GAAA;AAAK,IAAA,CAAA;CAAE,EALON,MAAA,CAM7D5hC,cAAemiC,CAAAA,2BAA2B,CAAG,GAAA;IAAC,CAAC,GAAA;IAAK,CAAC,GAAA;CAAI,EANIP,MAAA,CAO7D5hC,cAAeoiC,CAAAA,4BAA4B,CAAG,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,CAAA;CAAE,EAPOR,MAAA,CAQ7D5hC,cAAeqiC,CAAAA,4BAA4B,CAAG,GAAA;AAAC,IAAA,GAAA;IAAK,CAAC,GAAA;CAAI,EARIT,MAAA,CAS7D5hC,cAAesiC,CAAAA,yBAAyB,CAAG,GAAA;AAAC,IAAA,GAAA;AAAK,IAAA,GAAA;AAAI,CAAA,EATQV,MAU9D,CAAA,CAAA;AACF,SAASgoF,0BAA2Bt5E,EAAU,EAAEC,EAAU,EAAE3b,EAAY,EAAEmO,EAAY,EAAA;IACpF,IAAM8mF,MAAAA,GAASj1F,EAAE,CAAC,CAAE,CAAA,CAAA;IACpB,IAAMk1F,MAAAA,GAASl1F,EAAE,CAAC,CAAE,CAAA,CAAA;IACpB,IAAMm1F,IAAAA,GAAOhnF,EAAE,CAAC,CAAE,CAAA,CAAA;IAClB,IAAMinF,IAAAA,GAAOjnF,EAAE,CAAC,CAAE,CAAA,CAAA;AAClB,IAAA,IAAMl2C,KAAKk9H,IAAOF,GAAAA,MAAAA,CAAAA;AAElBv5E,IAAAA,EAAAA,GAAKA,EAAKzjD,GAAAA,EAAAA,CAAAA;AACV0jD,IAAAA,EAAAA,GAAKA,EAAK1jD,GAAAA,EAAAA,CAAAA;AACV,IAAA,IAAMo9H,mBAAsB,GAAA;AAAC,QAAA;AAACJ,YAAAA,MAAAA,GAAS,CAACE,IAAOF,GAAAA,MAAK,IAAK,CAAA;AAAGC,YAAAA,MAAAA,GAASx5E,EAAK,GAAA,CAAA;AAAE,SAAA;AAAE,QAAA;AAACy5E,YAAAA,IAAAA,GAAO,CAACA,IAAOF,GAAAA,MAAK,IAAK,CAAA;AAAGG,YAAAA,IAAAA,GAAOz5E,EAAK,GAAA,CAAA;AAAE,SAAA;AAAC,KAAA,CAAA;IAE1H,OAAO05E,mBAAAA,CAAAA;AACT,CAAA;AAEO,SAAS7B,8BAA+B8B,eAA2B,EAAA;AACxE,IAAA,IAAIC,OAAO,CAAC,OAAA,CAAA;AACZ,IAAA,IAAIC,IAAO,GAAA,OAAA,CAAA;AAEX,IAAA,IAAK,IAAItjI,CAAI,GAAA,CAAA,EAAGA,IAAIojI,eAAgB3jI,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;QAC/CqjI,IAAO7+H,GAAAA,IAAAA,CAAK+B,GAAG,CAAC88H,IAAAA,EAAMD,eAAe,CAACpjI,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA;QAC3CsjI,IAAO9+H,GAAAA,IAAAA,CAAKI,GAAG,CAAC0+H,IAAAA,EAAMF,eAAe,CAACpjI,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAC7C,KAAA;AACA,IAAA,IAAMujI,cAAiB,GAAA;AAAC,QAAA;YAACH,eAAe,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;YAAEA,eAAe,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;AAAC,SAAA;AAAC,KAAA,CAAA;IAEvE,IAAK,IAAIpjI,KAAI,CAAGA,EAAAA,EAAAA,GAAIojI,gBAAgB3jI,MAAM,GAAG,GAAGO,EAAK,EAAA,CAAA;QACnD,IAAMwpD,EAAAA,GAAK45E,eAAe,CAACpjI,EAAAA,CAAE,CAAC,CAAE,CAAA,IAAIqjI,IAAAA,GAAOC,IAAG,CAAA,CAAA;QAC9C,IAAM75E,EAAAA,GAAK25E,eAAe,CAACpjI,EAAI,GAAA,CAAA,CAAE,CAAC,CAAE,CAAA,IAAIqjI,IAAAA,GAAOC,IAAG,CAAA,CAAA;AAClD,QAAA,IAAMx1F,EAAK,GAAA;YAACs1F,eAAe,CAACpjI,EAAE,CAAA,CAAC,CAAE,CAAA;YAAEojI,eAAe,CAACpjI,EAAE,CAAA,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA;AACzD,QAAA,IAAMi8C,EAAK,GAAA;AAACmnF,YAAAA,eAAe,CAACpjI,EAAAA,GAAI,CAAE,CAAA,CAAC,CAAE,CAAA;AAAEojI,YAAAA,eAAe,CAACpjI,EAAAA,GAAI,CAAE,CAAA,CAAC,CAAE,CAAA;AAAC,SAAA,CAAA;AAEjE,QAAA,IAAI8tC,EAAE,CAAC,CAAA,CAAE,IAAImO,EAAE,CAAC,EAAE,EAAE;AAClB,YAAA,IAAMknF,mBAAsBL,GAAAA,yBAAAA,CAA0Bt5E,EAAIC,EAAAA,EAAAA,EAAI3b,EAAImO,EAAAA,EAAAA,CAAAA,CAAAA;YAClE,IAAMlO,EAAAA,GAAKo1F,mBAAmB,CAAC,CAAE,CAAA,CAAA;YACjC,IAAMn1F,EAAAA,GAAKm1F,mBAAmB,CAAC,CAAE,CAAA,CAAA;YAEjCI,cAAc,CAACA,cAAe9jI,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACkC,IAAI,CAACosC,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;YACpDw1F,cAAc,CAACA,cAAe9jI,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACkC,IAAI,CAACosC,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AACpDw1F,YAAAA,cAAAA,CAAe5hI,IAAI,CAAC;AAACqsC,gBAAAA,EAAE,CAAC,CAAE,CAAA;AAAEA,gBAAAA,EAAE,CAAC,CAAE,CAAA;AAAEiO,gBAAAA,EAAE,CAAC,CAAE,CAAA;AAAEA,gBAAAA,EAAE,CAAC,CAAE,CAAA;AAAC,aAAA,CAAA,CAAA;SAC3C,MAAA;YACLsnF,cAAc,CAACA,cAAe9jI,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACkC,IAAI,CAACs6C,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;YACpDsnF,cAAc,CAACA,cAAe9jI,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACkC,IAAI,CAACs6C,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AACtD,SAAA;AACF,KAAA;;AAGA,IAAA,OAAOsnF,cAAeh0H,CAAAA,GAAG,CAAC,SAACkV,KAAOjhB,EAAAA,KAAAA,EAAAA;AAChC,QAAA,OAAOA,UAAU,CAAI,GAAA;AAAC0W,YAAAA,kBAAAA,CAAmB6iC,QAAQ;AAAEt4B,YAAAA,KAAAA;AAA0C,SAAA,GACzFjhB,KAAU+/H,KAAAA,cAAAA,CAAe9jI,MAAM,GAAG,CAAI,GAAA;AAACya,YAAAA,kBAAAA,CAAmB8iC,OAAO;AAAEv4B,YAAAA,KAAAA;SAA0C,GAC3G;AAACvK,YAAAA,kBAAAA,CAAmB+iC,IAAI;AAAEx4B,YAAAA,KAAAA;AAA0D,SAAA,CAAA;AAC5F,KAAA,CAAA,CAAA;AACF;;AC1WO,SAAS++G,yBAA0B9sF,KAAU,EAAA;AAatBA,IAAAA,IAAAA,gBAAAA,CAAAA;IAZ5B,IAAMsiD,GAAAA,GAAMtiD,MAAM1zC,OAAO,CAAA;AACzB,IAAA,IAAM0L,GAAqB,GAAA;QACzB1L,OAAS,EAAA;AACPikC,YAAAA,GAAAA,EAAK+xD,IAAI/xD,GAAG;AACZH,YAAAA,GAAAA,EAAKkyD,IAAIlyD,GAAG;AACZD,YAAAA,IAAAA,EAAMmyD,IAAInyD,IAAI;AACd+O,YAAAA,QAAAA,EAAUojD,IAAIpjD,QAAQ;AACxB,SAAA;AACF,KAAA,CAAA;IAEA,IAAM6tF,oBAAAA,GAAuB/sF,MAAM+sF,oBAAoB,CAAA;AAEvD,IAAA,IAAIA,0BAAwB/sF,gBAAAA,GAAAA,KAAAA,CAAMpoB,SAAS,KAAfooB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAiBvwB,IAAI,CAAE,EAAA;AAEzBuwB,QAAAA,IAAAA,iBAAAA,CAAAA;AADxB,QAAA,IAAM46D,oBAAmD,GAAA;AACvDnrF,YAAAA,IAAAA,EAAM47G,iBAAgBrrF,iBAAAA,GAAAA,KAAAA,CAAMpoB,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAfooB,kBAAiBvwB,IAAI,CAAA;YAC3CgzF,OAASgoB,EAAAA,iBAAAA,CAAkBsC,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBC,UAAU,CAAA;YAC3DtqB,OAAS+nB,EAAAA,iBAAAA,CAAkBsC,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBE,UAAU,CAAA;YAC3DtqB,OAAS8nB,EAAAA,iBAAAA,CAAkBsC,oBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAAA,CAAsBG,UAAU,CAAA;AAC7D,SAAA,CAAA;QAEAvB,gBAAiB/wB,CAAAA,oBAAAA,CAAAA,CAAAA;AACjB5iG,QAAAA,GAAAA,CAAI4iG,oBAAoB,GAAGA,oBAAAA,CAAAA;AAC7B,KAAA;IAEA,IAAMuyB,GAAAA,GAAMntF,MAAM6yD,oBAAoB,CAAA;AAEtC,IAAA,IAAIs6B,GAAK,EAAA;AACP,QAAA,IAAMt6B,oBAA6C,GAAA;AACjDsB,YAAAA,YAAAA,EAAcg5B,IAAIh5B,YAAY;YAC9BhlG,CAAGs7H,EAAAA,iBAAAA,CAAkB0C,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKC,OAAO,CAAA;YACjCljI,CAAGugI,EAAAA,iBAAAA,CAAkB0C,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAKE,OAAO,CAAA;YACjCl6H,CAAGg6H,EAAAA,GAAAA,CAAIh5B,YAAY,GAAGs2B,iBAAkB0C,CAAAA,GAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,IAAKG,OAAO,CAAA,GAAI7C,iBAAkB0C,CAAAA,GAAAA,CAAIj+G,QAAQ,CAAA;AACxF,SAAA,CAAA;QAEAy8G,gBAAiB94B,CAAAA,oBAAAA,CAAAA,CAAAA;AACjB76F,QAAAA,GAAAA,CAAI66F,oBAAoB,GAAGA,oBAAAA,CAAAA;AAC7B,KAAA;IAEA,OAAO76F,GAAAA,CAAAA;AACT;;ACvCO,SAASu1H,2BAA4B1gD,EAAO,EAAA;IACjD,IAAMvgF,OAAAA,GAAUugF,GAAGvgF,OAAO,CAAA;IAC1B,IAAIkhI,MAAAA,CAAAA;AAEJ,IAAA,OAAQlhI,QAAQ0S,IAAI;QAClB,KAAK,OAAA;AAAS,YAAA;gBACZwuH,MAAS,GAAA;AACPxuH,oBAAAA,IAAAA,EAAMoD,aAAaq7E,KAAK;AACxBD,oBAAAA,WAAAA,EAAalxF,QAAQkxF,WAAW;AAChChC,oBAAAA,YAAAA,EAAclvF,OAAQkvF,CAAAA,YAAY,IAAIsvC,eAAAA,CAAgBx+H,QAAQkvF,YAAY,CAAA;AAC1EpS,oBAAAA,QAAAA,EAAU98E,OAAQ88E,CAAAA,QAAQ,IAAI/mE,gBAAAA,CAAiBorH,MAAM;AACvD,iBAAA,CAAA;AAEA,gBAAA,MAAA;AACF,aAAA;QACA,KAAK,MAAA;AAAQ,YAAA;gBACXD,MAAS,GAAA;AACPxuH,oBAAAA,IAAAA,EAAMoD,aAAaw7E,IAAI;oBACvBC,cAAgB,EAAA,CAAC,CAACvxF,OAAAA,CAAQuxF,cAAc;AACxClB,oBAAAA,OAAAA,EAASrwF,QAAQqwF,OAAO;AACxBC,oBAAAA,OAAAA,EAAStwF,QAAQswF,OAAO;AACxBh0F,oBAAAA,MAAAA,EAAQ0D,QAAQ1D,MAAM;AACxB,iBAAA,CAAA;AAEA,gBAAA,MAAA;AACF,aAAA;QACA,KAAK,SAAA;AAAW,YAAA;gBACd4kI,MAAS,GAAA;AACPxuH,oBAAAA,IAAAA,EAAMoD,aAAakhE,OAAO;AAC5B,iBAAA,CAAA;AAEA,gBAAA,MAAA;AACF,aAAA;AAIF,KAAA;AAEA,IAAA,IAAMtrE,GAAuB,GAAA;;QAE3B1L,OAASkhI,EAAAA,MAAAA;AACX,KAAA,CAAA;IAEA,OAAOx1H,GAAAA,CAAAA;AACT;;ACnCA;;IAGO,SAAS01H,kBAAAA,CAAoBC,IAAqB,EAAA;AACvDA,IAAAA,IAAAA,CAAK1tD,YAAY,CAACjnE,OAAO,CAACqH,SAAAA,WAAAA,EAAAA;AACxBA,QAAAA,WAAAA,CAAYmvC,KAAK,CAACx2C,OAAO,CAAC9L,SAAAA,IAAAA,EAAAA;AACxB,YAAA,IAAIA,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASulE,IAAI,EAAE;AAC/B,gBAAA,IAAI36E,IAAKmzE,CAAAA,WAAW,KAAK58D,WAAAA,CAAYwqD,OAAO,EAAE;oBAC5C/gE,IAAKmzE,CAAAA,WAAW,GAAG58D,WAAAA,CAAYs/D,MAAM,CAAA;AACvC,iBAAA;AACF,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;AAEA4qD,IAAAA,IAAAA,CAAKt9D,OAAO,GAAGxuD,gBAAgB,CAAC,KAAM,CAAA,CAAA;IAEtC,OAAO8rH,IAAAA,CAAAA;AACT,CAAA;AAEA;;IAGO,SAASC,kBAAAA,CAAoBD,IAAqB,EAAA;AACjCA,IAAAA,IAAAA,aAAAA,CAAAA;AAAtB,IAAA,IAAME,iBAAgBF,aAAAA,GAAAA,IAAAA,CAAKt9D,OAAO,KAAZs9D,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAcpvH,KAAK,CAAC,GAAA,CAAA,CAAA;AAE1C,IAAA,IAAI,CAACsvH,aAAiB7/H,IAAAA,MAAAA,CAAO6/H,aAAa,CAAC,CAAA,CAAE,IAAI,CAAM7/H,IAAAA,MAAAA,CAAO6/H,aAAa,CAAC,CAAA,CAAE,MAAM,CAAK7/H,IAAAA,MAAAA,CAAO6/H,aAAa,CAAC,CAAA,CAAE,KAAK,CAAI,EAAA;QACvH,OAAOF,IAAAA,CAAAA;AACT,KAAA;AAEAA,IAAAA,IAAAA,CAAK1tD,YAAY,CAACjnE,OAAO,CAACqH,SAAAA,WAAAA,EAAAA;AACxBA,QAAAA,WAAAA,CAAYmvC,KAAK,CAACx2C,OAAO,CAAC9L,SAAAA,IAAAA,EAAAA;YACxB,IAAIA,IAAAA,CAAK8R,IAAI,KAAKsD,QAAS6iD,CAAAA,IAAI,IAAIj4D,IAAAA,CAAK8R,IAAI,KAAKsD,QAASwrH,CAAAA,KAAK,EAAE;gBAC/D5gI,IAAKmzE,CAAAA,WAAW,GAAGnzE,IAAAA,CAAKmzE,WAAW,KAAgB,IAAI58D,WAAYwqD,CAAAA,OAAO,GAAG/gE,IAAAA,CAAKmzE,WAAW,CAAA;AAC/F,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA,CAAA;IAEA,OAAOstD,IAAAA,CAAAA;AACT,CAAA;AAEA,IAAII,oBAAAA,CAAAA;AACJ,IAAMC,eAAgD,IAAIxnH,GAAAA,EAAAA,CAAAA;AAC1D,IAAMg+D,UAAyC,IAAIh+D,GAAAA,EAAAA,CAAAA;AAEnD;;;IAIO,SAASynH,kBAAAA,CAAoBN,IAAe,EAAA;;IAEjD,IAAwBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK3lG,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,QAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAIA,SAAUsI,CAAAA,QAAQ,KAAKrhE,QAAAA,CAASipE,cAAc,EAAE;AAClD,YAAA,IAAM0/C,cAAiB5vD,GAAAA,SAAAA,CAAAA;AAEvB,YAAA,IAAI4vD,cAAelvH,CAAAA,IAAI,KAAKgG,kBAAAA,CAAmB8qE,MAAM,EAAE;AAIjDq+C,gBAAAA,IAAAA,4BAAAA,CAAAA;AAHJ,gBAAA,IAAMA,oBAAuBD,GAAAA,cAAAA,CAAAA;;AAG7B,gBAAA,IAAIC,CAAAA,CAAAA,4BAAAA,GAAAA,oBAAqBl+C,CAAAA,MAAM,qBAA3Bk+C,4BAA6BplI,CAAAA,MAAM,IAAG,CAAA,IAAKolI,qBAAqBl+C,MAAM,CAAC,CAAE,CAAA,CAACp9E,IAAI,EAAE;;AAElFs7H,oBAAAA,oBAAAA,CAAqBt7H,IAAI,GAAGs7H,oBAAAA,CAAqBl+C,MAAM,CAAC,CAAA,CAAE,CAACp9E,IAAI,CAAA;AACjE,iBAAA;;AAGA,gBAAA,IAAMu7H,eAAe,IAAIr9H,KAAAA,CAAMo9H,oBAAqBp+C,CAAAA,SAAS,CAAChnF,MAAM,CAAA,CAAA;gBACpE,IAAMslI,aAAAA,GAAgB,IAAIt9H,KAAMo9H,CAAAA,oBAAAA,CAAqBn+C,UAAU,CAACjnF,MAAM,CAAE8J,CAAAA,IAAI,CAAC,KAAA,CAAA,CAAA;gBAE7E,IAAoBs7H,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,oBAAAA,CAAqBl+C,MAAM,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtCU,oBAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;oBACT,IAAoBA,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,KAAAA,CAAM+B,OAAO,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAxB5lF,wBAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,wBAAA,IAAMqsC,QAAQg1F,oBAAqB51F,CAAAA,MAAM,CAACzrC,KAAAA,CAAMqsC,KAAK,CAAC,CAAA;AACtD,wBAAA,IAAM65C,WAAWm7C,oBAAqBp+C,CAAAA,SAAS,CAACjjF,KAAAA,CAAMkmF,QAAQ,CAAC,CAAA;AAC/D,wBAAA,IAAMD,YAAYo7C,oBAAqBn+C,CAAAA,UAAU,CAACljF,KAAAA,CAAMimF,SAAS,CAAC,CAAA;AAElE,wBAAA,IAAI,CAACq7C,YAAY,CAACthI,KAAMkmF,CAAAA,QAAQ,CAAC,EAAE;4BACjCA,QAAS7jF,CAAAA,CAAC,IAAIgqC,KAAAA,CAAMhqC,CAAC,CAAA;4BACrB6jF,QAAS9oF,CAAAA,CAAC,IAAIivC,KAAAA,CAAMjvC,CAAC,CAAA;AACrBkkI,4BAAAA,YAAY,CAACthI,KAAAA,CAAMkmF,QAAQ,CAAC,GAAG,IAAA,CAAA;AACjC,yBAAA;AACA,wBAAA,IAAI,CAACq7C,aAAa,CAACvhI,KAAMimF,CAAAA,SAAS,CAAC,EAAE;4BACnCA,SAAU5jF,CAAAA,CAAC,IAAIgqC,KAAAA,CAAMhqC,CAAC,CAAA;4BACtB4jF,SAAU7oF,CAAAA,CAAC,IAAIivC,KAAAA,CAAMjvC,CAAC,CAAA;AACtBmkI,4BAAAA,aAAa,CAACvhI,KAAAA,CAAMimF,SAAS,CAAC,GAAG,IAAA,CAAA;AACnC,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AAEA46C,IAAAA,IAAAA,CAAKt9D,OAAO,GAAGxuD,gBAAgB,CAAC,KAAM,CAAA,CAAA;IAEtC,OAAO8rH,IAAAA,CAAAA;AACT,CAAA;AAEO,SAASW,mBAAoBX,IAAe,EAAA;AACjDK,IAAAA,YAAAA,CAAavrE,KAAK,EAAA,CAAA;AAClB+hB,IAAAA,OAAAA,CAAQ/hB,KAAK,EAAA,CAAA;AAEb,IAAA,IAAQwd,eAAoC0tD,IAApC1tD,CAAAA,YAAAA,EAAczwB,QAAsBm+E,IAAtBn+E,CAAAA,KAAAA,EAAOxnB,aAAe2lG,IAAf3lG,CAAAA,UAAAA,CAAAA;;AAG7B,IAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAAwBA,UAAY,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAzBs2C,QAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT0vD,QAAAA,YAAAA,CAAa1/H,GAAG,CAACgwE,SAAUh2D,CAAAA,EAAE,EAAEg2D,SAAAA,CAAAA,CAAAA;AACjC,KAAA;AACA,IAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAmB9uB,KAAO,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAftiD,QAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTs3E,QAAAA,OAAAA,CAAQl2E,GAAG,CAACpB,IAAKob,CAAAA,EAAE,EAAEpb,IAAAA,CAAAA,CAAAA;AACvB,KAAA;AAEA,IAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAmB+yE,YAAc,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtBv/D,QAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;QACT6tH,cAAe7tH,CAAAA,IAAAA,CAAAA,CAAAA;AACjB,KAAA;AAEAitH,IAAAA,IAAAA,CAAKt9D,OAAO,GAAGxuD,gBAAgB,CAAC,KAAM,CAAA,CAAA;IAEtC,OAAO8rH,IAAAA,CAAAA;AACT,CAAA;AAEO,SAASa,mBAAoBb,IAAe,EAAA;;AAEjDA,IAAAA,aAAAA,CAAAA;AAAAA,IAAAA,CAAAA,aAAAA,GAAAA,KAAKjuH,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAZiuH,cAAc30H,OAAO,CAAC,SAACiH,MAAQnT,EAAAA,KAAAA,EAAAA;AAC7B,QAAA,IAAImT,WAAW,UAAY,EAAA;YACzB0tH,IAAKjuH,CAAAA,OAAO,CAAC5S,KAAAA,CAAM,GAAG,WAAA,CAAA;AACxB,SAAA;AACF,KAAA,CAAA,CAAA;;IAGA,IAAmB6gI,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKn+E,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBtiD,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAIA,KAAK8R,IAAI,KAAKiO,QAAa,CAACw6D,MAAM,EAAE;YACtC,IAAMgnD,eAAAA,GAAkBT,aAAa5mH,GAAG,CAACla,KAAK86B,UAAU,CAAC,CAAE,CAAA,CAAC1f,EAAE,CAAA,CAAA;AAE9D,YAAA,IAAImmH,eAAiB,EAAA;AACnB,gBAAA,IAAM99C,KAAQ89C,GAAAA,eAAAA,CAAgB/lG,QAAQ,CAACioD,KAAK,CAAA;AAC5C,gBAAA,IAAI+9C,YAAAA,KAAAA,CAAAA,CAAAA;gBAEJ,IAAI1gI,MAAAA,CAAOo0C,SAAS,CAACuuC,KAAQ,CAAA,EAAA;AAEfg9C,oBAAAA,IAAAA,YAAAA,CAAAA;;AAAZe,oBAAAA,SAAAA,GAAAA,CAAYf,eAAAA,IAAK19C,CAAAA,MAAM,KAAX09C,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,YAAa,CAACh9C,KAAgB,CAAA,CAAA;iBACrC,MAAA;oBACL+9C,SAAY/9C,GAAAA,KAAAA,CAAAA;AACd,iBAAA;gBAEA89C,eAAgB/lG,CAAAA,QAAQ,CAACioD,KAAK,GAAG+9C,SAAAA,CAAAA;AACnC,aAAA;AACF,SAAA;AACF,KAAA;;IAGA,IAAMxuD,aAAAA,GAAgBytD,KAAKztD,aAAa,CAAA;AACxC,IAAA,IAAMyuD,yBAAiD,EAAC,CAAA;IAExD,IAA0BhB,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK1tD,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAlC5/D,QAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAMyH,IAAO9J,GAAAA,YAAAA,EAAAA,CAAAA;AAEb2wH,QAAAA,sBAAsB,CAACtuH,WAAAA,CAAYiI,EAAE,CAAC,GAAGR,IAAAA,CAAAA;QACzC,IAAIzH,WAAAA,CAAYiI,EAAE,KAAK43D,aAAe,EAAA;AACpCytD,YAAAA,IAAAA,CAAKztD,aAAa,GAAGp4D,IAAAA,CAAAA;AACvB,SAAA;AACAzH,QAAAA,WAAAA,CAAYiI,EAAE,GAAGR,IAAAA,CAAAA;AAEjB,QAAA,IAAMq9F,oBAAuB,GAAA;YAC3B78F,EAAItK,EAAAA,YAAAA,EAAAA;YACJ4oE,QAAU,EAAA,sBAAA;;AAEVp3B,YAAAA,KAAAA,EAAOnvC,YAAYmvC,KAAK;;AAExBk5B,YAAAA,aAAAA,EAAeroE,YAAYqoE,aAAa;;AAExCD,YAAAA,aAAAA,EAAepoE,YAAYooE,aAAa;YACxCv7E,IAAM,EAAA;AAAEob,gBAAAA,EAAAA,EAAIjI,YAAYiI,EAAE;AAAC,aAAA;AAC7B,SAAA,CAAA;;AAGAjI,QAAAA,WAAAA,CAAYqoE,aAAa,GAAGzgF,SAAAA,CAAAA;;AAE5BoY,QAAAA,WAAAA,CAAYooE,aAAa,GAAGxgF,SAAAA,CAAAA;AAC5BoY,QAAAA,WAAAA,CAAY2nB,UAAU,GAAG;AAAC,YAAA;AAAE1f,gBAAAA,EAAAA,EAAI68F,qBAAqB78F,EAAE;AAAC,aAAA;AAAE,SAAA,CAAA;QAC1DqlH,IAAK3lG,CAAAA,UAAU,CAAC/8B,IAAI,CAACk6G,oBAAAA,CAAAA,CAAAA;AACvB,KAAA;;IAEA,IAAmBwoB,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAKn+E,KAAK,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAApBtiD,QAAAA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;QACT,IAAIA,KAAAA,CAAKs5E,OAAO,EAAE;AAChB,YAAA,IAAMooD,kBAAqB,GAAC1hI,KAAKs5E,CAAAA,OAAO,CAAwBl6E,OAAO,CAAA;AAEvE,YAAA,IAAIsiI,kBAAsBA,IAAAA,kBAAAA,CAAmB1nD,KAAK,KAAKj/E,SAAW,EAAA;AAChE2mI,gBAAAA,kBAAAA,CAAmB1nD,KAAK,GAAGynD,sBAAsB,CAACC,kBAAAA,CAAmB1nD,KAAK,CAAC,CAAA;AAC7E,aAAA;AACF,SAAA;AACF,KAAA;AAEAymD,IAAAA,IAAAA,CAAKt9D,OAAO,GAAGxuD,gBAAgB,CAAC,KAAM,CAAA,CAAA;IAEtC,OAAO8rH,IAAAA,CAAAA;AACT,CAAA;AAEO,SAASkB,mBAAoBlB,IAAe,EAAA;AACjD,IAAA,IAAMmB,mBAAuD,EAAC,CAAA;IAE9D,IAA4BnB,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK3lG,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAlC+mG,QAAAA,IAAAA,aAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTD,QAAAA,gBAAgB,CAACC,aAAAA,CAAczmH,EAAE,CAAC,GAAGymH,aAAAA,CAAAA;AACvC,KAAA;;IAGA,IAA0BpB,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK1tD,YAAY,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAlC5/D,QAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;QACT,IAAwBA,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,WAAAA,CAAY2nB,UAAU,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArCs2C,YAAAA,IAAAA,SAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAM0wD,WAAAA,GAAc,SAAC1wD,CAAWh2D,EAAE,CAAA;YAElCwmH,gBAAgB,CAACE,YAAY,CAAC9hI,IAAI,CAACob,EAAE,GAAGjI,YAAYiI,EAAE,CAAA;AACxD,SAAA;AACF,KAAA;;IAGA,IAA4BqlH,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK3lG,UAAU,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAlC+mG,QAAAA,IAAAA,cAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAIA,eAAcnoD,QAAQ,KAAK35D,QAAa,CAAC08F,eAAe,EAAE;AAC5D,YAAA,IAAMslB,mBAAsBF,GAAAA,cAAAA,CAAAA;YAC5B,IAAMrmG,QAAAA,GAAWumG,oBAAoBvmG,QAAQ,CAAA;YAC7C,IAAMgmG,SAAAA,GAAYhmG,SAASioD,KAAK,CAAA;YAEhC,IAAI+9C,SAAAA,KAAczmI,SAAaymI,IAAAA,SAAAA,KAAc,IAAQ,IAAA,EAAE,QAAYA,IAAAA,SAAAA,IAAa,OAAWA,IAAAA,SAAQ,CAAI,EAAA;AACrG,gBAAA,IAAMQ,eAAeC,yBAA0BT,CAAAA,SAAAA,CAAAA,CAAAA;;AAG/CO,gBAAAA,mBAAAA,CAAoBx1F,QAAQ,GAAG;AAAEnxB,oBAAAA,EAAAA,EAAI4mH,aAAa5mH,EAAE;AAAC,iBAAA,CAAA;gBACrDqlH,IAAKx/D,CAAAA,UAAU,CAACljE,IAAI,CAACikI,YAAAA,CAAAA,CAAAA;AACvB,aAAA;AACF,SAAA;AAEA,QAAA,IAAIH,eAAcnoD,QAAQ,KAAK35D,QAAa,CAACuhE,cAAc,EAAE;AAC3D,YAAA,IAAM4gD,kBAAqBL,GAAAA,cAAAA,CAAAA;YAE3BK,kBAAmBvgD,CAAAA,KAAK,GAAG,EAAE,CAAA;;YAE7B,IAAIugD,kBAAAA,CAAmBv8H,IAAI,EAAE;AAC3B,gBAAA,IAAMw8H,cAAsC,GAAA;oBAC1CrwH,IAAMiO,EAAAA,QAAa,CAAC0iE,KAAK;;oBAEzBp3E,KAAO62H,EAAAA,kBAAAA,CAAmBv8H,IAAI,CAAC0F,KAAK;AACtC,iBAAA,CAAA;gBAEA62H,kBAAmBvgD,CAAAA,KAAK,CAAC5jF,IAAI,CAACokI,cAAAA,CAAAA,CAAAA;AAChC,aAAA;;AAEA,YAAA,OAAOD,mBAAmBv8H,IAAI,CAAA;YAE9Bu8H,kBAAmB9/C,CAAAA,OAAO,GAAG,EAAE,CAAA;;YAE/B,IAAI8/C,kBAAAA,CAAmBx5C,MAAM,EAAE;AAC7B,gBAAA,IAAMy5C,eAAsC,GAAA;oBAC1CrwH,IAAMiO,EAAAA,QAAa,CAAC0iE,KAAK;;oBAEzBp3E,KAAO62H,EAAAA,kBAAAA,CAAmBx5C,MAAM,CAACr9E,KAAK;AACxC,iBAAA,CAAA;gBAEA62H,kBAAmB9/C,CAAAA,OAAO,CAACrkF,IAAI,CAACokI,eAAAA,CAAAA,CAAAA;;AAGhCD,gBAAAA,kBAAAA,CAAmBjgD,WAAW,GAAGigD,kBAAmBx5C,CAAAA,MAAM,CAAC56E,KAAK,CAAA;;AAEhEo0H,gBAAAA,kBAAAA,CAAmBhgD,SAAS,GAAGggD,kBAAmBx5C,CAAAA,MAAM,CAAC5d,GAAG,CAAA;;AAE5Do3D,gBAAAA,kBAAAA,CAAmB//C,UAAU,GAAG+/C,kBAAmBx5C,CAAAA,MAAM,CAACzlB,IAAI,CAAA;;AAG9D,gBAAA,OAAOi/D,mBAAmBx5C,MAAM,CAAA;AAClC,aAAA;AACF,SAAA;AACF,KAAA;;AAGA+3C,IAAAA,IAAAA,CAAKt9D,OAAO,GAAG,KAAA,CAAA;IAEf,OAAOs9D,IAAAA,CAAAA;AACT,CAAA;AAEO,SAAS2B,mBAAoB3B,IAAe,EAAA;;IAEjD,IAAIA,IAAAA,CAAK3lG,UAAU,EAAE;;QAEnB,IAAwB2lG,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK3lG,UAAU,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA9Bs2C,YAAAA,IAAAA,SAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;;AAET,YAAA,IACEA,UAAUsI,QAAQ,KAAK35D,QAAa,CAACsiH,iBAAiB,EACtD;AACA,gBAAA,IAAMC,iBAAoBlxD,GAAAA,SAAAA,CAAAA;gBAE1B,IAAIkxD,iBAAAA,CAAkBljI,OAAO,EAAE;;;AAG7B,oBAAA,IAAIkjI,iBAAkBljI,CAAAA,OAAO,CAACmjI,iBAAiB,KAAKxnI,SAAW,EAAA;;AAE7D,wBAAA,IAAIunI,iBAAkBljI,CAAAA,OAAO,CAACojI,OAAO,KAAKznI,SAAW,EAAA;;;4BAGnDunI,iBAAkBljI,CAAAA,OAAO,CAACmjI,iBAAiB,GAAG,IAAA,CAAA;yBACzC,MAAA;;;4BAGLD,iBAAkBljI,CAAAA,OAAO,CAACmjI,iBAAiB,GAAG,KAAA,CAAA;AAChD,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;;AAEA,YAAA,IACEnxD,UAAUsI,QAAQ,KAAK35D,QAAa,CAAC03G,aAAa,IAEhDrmD,SAAAA,CAAUsI,QAAQ,KAAK35D,QAAa,CAACsiH,iBAAiB,IACtD,SAACjxD,CAAyChyE,OAAO,EAEnD;gBACAqjI,uBAAwB,CAACrxD,UAAyChyE,OAAO,CAAA,CAAA;AAC3E,aAAA;;AAEA,YAAA,IACEgyE,UAAUsI,QAAQ,KAAK35D,QAAa,CAAC03G,aAAa,EAClD;gBACAiL,oBAAqB,CAACtxD,UAAqChyE,OAAO,CAAA,CAAA;AACpE,aAAA;AACF,SAAA;AACF,KAAA;;AAGAqhI,IAAAA,IAAAA,CAAKt9D,OAAO,GAAG,KAAA,CAAA;IAEf,OAAOs9D,IAAAA,CAAAA;AACT,CAAA;AAEA;;IAGA,SAASgC,wBAAyBrjI,OAAY,EAAA;;AAE5C,IAAA,IAAI,CAACA,OAAAA,IAAWA,OAAQgY,CAAAA,iBAAiB,KAAKrc,SAAW,EAAA;AACvD,QAAA,OAAA;AACF,KAAA;;IAGA,IAAIqE,OAAAA,CAAQgY,iBAAiB,KAAKrc,SAAW,EAAA;;QAE3CqE,OAAQgY,CAAAA,iBAAiB,GAAGhY,OAAAA,CAAQujI,YAAY,CAAA;AAClD,KAAA;AACF,CAAA;AAEA;;IAGA,SAASD,qBAAsBtjI,OAAgC,EAAA;AAC7D,IAAA,IAAI,CAACA,OAAAA,IAAW,CAACA,OAAAA,CAAQu1H,SAAS,EAAE;AAClC,QAAA,OAAA;AACF,KAAA;IAEA,IAAMA,SAAAA,GAAYv1H,QAAQu1H,SAAS,CAAA;AAOjCA,IAAAA,IAAAA,WAAAA,CAAAA;;AAJFv1H,IAAAA,OAAAA,CAAQu1H,SAAS,GAAG;QAClBA,SAAS,CAAC,EAAE,GAAG,KAAA;QACfA,SAAS,CAAC,EAAE,GAAG,KAAA;QACfA,SAAS,CAAC,EAAE,GAAG,KAAA;AACfA,QAAAA,CAAAA,WAAAA,GAAAA,SAAS,CAAC,CAAA,CAAE,YAAZA,WAAgB,GAAA,CAAA;AACjB,KAAA,CAAA;AACH,CAAA;AAEA;;;;AAIC,IACD,SAASsN,yBAAAA,CAA2Bx+C,KAAyB,EAAEm/C,gBAAuB,EAAA;AAAvBA,IAAAA,IAAAA,6BAAAA,gBAAmB,GAAA,IAAA,CAAA;AAChF,IAAA,IAAMC,iBAAiBrlC,kBAAmB/Z,CAAAA,KAAAA,CAAAA,CAAAA;IAC1C,IAAoCo/C,qBAAAA,GAAAA,cAAAA,CAA5BjjI,OAAAA,KAAQ,GAAA,qBAAA,KAAA,KAAA,CAAA,GAAA,EAAE,mDAAkBijI,cAAhB5zC,CAAAA,MAAAA,EAAAA,6CAAS,EAAE,GAAA,sBAAA,CAAA;IAC/B,IAAMhjD,KAAAA,GAAQ,IAAI4I,YAAao6C,CAAAA,MAAAA,CAAAA,CAAAA;AAC/B,IAAA,IAAMltE,WAAW,EAAE,CAAA;AACnB,IAAA,IAAM+gH,cAAc,EAAE,CAAA;IAEtB,IAAK,IAAI1mI,IAAI,CAAGA,EAAAA,CAAAA,GAAI6vC,MAAMpwC,MAAM,EAAEO,KAAK,CAAG,CAAA;QACxC0mI,WAAY/kI,CAAAA,IAAI,CAACkxF,MAAM,CAAC7yF,CAAAA,GAAI,EAAE,EAAE6yF,MAAM,CAAC7yF,CAAAA,GAAI,CAAE,CAAA,CAAA,CAAA;QAC7C2lB,QAAShkB,CAAAA,IAAI,CAACkuC,KAAK,CAAC7vC,CAAAA,CAAE,EAAE6vC,KAAK,CAAC7vC,CAAI,GAAA,CAAA,CAAE,EAAE,GAAA,CAAA,CAAA;AACxC,KAAA;;AAGA,IAAA,IAAMikE,YAIA,EAAE,CAAA;IACR,IAAM4iB,WAAAA,GAAclhE,QAASlmB,CAAAA,MAAM,GAAG,CAAA,CAAA;IACtC,IAAMmnF,UAAAA,GAAapjF,MAAM/D,MAAM,CAAA;IAC/B,IAAMknI,kBAAAA,GAAqBhhH,QAASlmB,CAAAA,MAAM,GAAG,CAAA,CAAA;IAC7C,IAAMmnI,YAAAA,GAAeF,WAAYjnI,CAAAA,MAAM,GAAG,CAAA,CAAA;AAC1C,IAAA,IAAMonI,mBAAmBF,kBAAqBC,GAAAA,YAAAA,CAAAA;IAC9C,IAAME,eAAAA,GAAkBtjI,KAAM/D,CAAAA,MAAM,GAAG,CAAA,CAAA;AAEvC,IAAA,IAAMmmI,YAAkC,GAAA;QACtCj8D,IAAMhmD,EAAAA,YAAiB,CAACugE,SAAS;QACjC6iD,UAAY,EAAA;YACVlgD,WAAAA,EAAAA,WAAAA;AACAmgD,YAAAA,QAAAA,EAAU,EAAE;AACd,SAAA;QACA/kI,IAAMukI,EAAAA,gBAAAA;QACNS,WAAatjH,EAAAA,eAAoB,CAAC6tC,MAAM;QACxC81B,WAAau/C,EAAAA,gBAAAA;QACbziI,MAAQ,EAAA,EAAA;QACR4a,EAAItK,EAAAA,YAAAA,EAAAA;QACJ4oE,QAAU35D,EAAAA,QAAa,CAACqgD,QAAQ;QAChCC,SAAAA,EAAAA,SAAAA;AACF,KAAA,CAAA;AAEA2hE,IAAAA,YAAAA,CAAamB,UAAU,CAACC,QAAQ,CAACrlI,IAAI,CAAC;QACpCulI,QAAUvjH,EAAAA,oBAAyB,CAACwjH,QAAQ;QAC5CtkI,MAAQ,EAAA,CAAA;QACRsQ,MAAQwQ,EAAAA,gBAAqB,CAAC0tC,OAAO;QACrC+1E,SAAW,EAAA,CAAA;AACb,KAAA,CAAA,CAAA;AAEAxB,IAAAA,YAAAA,CAAamB,UAAU,CAACC,QAAQ,CAACrlI,IAAI,CAAC;QACpCulI,QAAUvjH,EAAAA,oBAAyB,CAAC0jH,EAAE;QACtCxkI,MAAQ8jI,EAAAA,kBAAAA;QACRxzH,MAAQwQ,EAAAA,gBAAqB,CAAC0tC,OAAO;QACrC+1E,SAAW,EAAA,CAAA;AACb,KAAA,CAAA,CAAA;IAEAxB,YAAa3hE,CAAAA,SAAS,CAACtiE,IAAI,CAAC;QAC1BkB,MAAQ,EAAA,CAAA;QACR+jF,UAAAA,EAAAA,UAAAA;QACAC,WAAAA,EAAAA,WAAAA;AACF,KAAA,CAAA,CAAA;AAEA,IAAA,IAAMygD,aAAgBR,GAAAA,eAAAA,GAAkB,CAAM,KAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AACtD,IAAA,IAAMS,UAAa,GAAA,IAAIziI,WAAY+hI,CAAAA,gBAAAA,GAAmBC,eAAkBQ,GAAAA,aAAAA,CAAAA,CAAAA;IACxE,IAAME,WAAAA,GAAc,IAAI/uF,YAAa8uF,CAAAA,UAAAA,CAAAA,CAAAA;IAErCC,WAAYxiI,CAAAA,GAAG,CAAC2gB,QAAU,EAAA,CAAA,CAAA,CAAA;AAC1B6hH,IAAAA,WAAAA,CAAYxiI,GAAG,CAAC0hI,WAAa/gH,EAAAA,QAAAA,CAASlmB,MAAM,CAAA,CAAA;IAE5C,IAAM0oF,UAAAA,GAAa,IAAIpvC,WAAAA,CAAYwuF,UAAYV,EAAAA,gBAAAA,CAAAA,CAAAA;IAE/C1+C,UAAWnjF,CAAAA,GAAG,CAACxB,KAAO,EAAA,CAAA,CAAA,CAAA;AAEtB,IAAA,IAAMikI,YAAY,IAAIrlI,UAAAA,CAAWmlI,YAAY7kI,KAAK,CAAC,GAAGmkI,gBAAmBC,GAAAA,eAAAA,CAAAA,CAAAA;AAEzElB,IAAAA,YAAAA,CAAa8B,UAAU,GAAGD,SAAAA,CAAAA;IAE1B,OAAO7B,YAAAA,CAAAA;AACT,CAAA;AAEO,SAASX,eAAgBluH,WAAiC,EAAA;;IAE/D,IAAmBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,WAAAA,CAAYmvC,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA3BtiD,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAM+jI,SAAYzsD,GAAAA,OAAAA,CAAQp9D,GAAG,CAACla,KAAKob,EAAE,CAAA,CAAA;AAErC,QAAA,IAAI,CAAC2oH,SAAW,EAAA;AACd,YAAA,OAAA;AACF,SAAA;QAEA,IACEA,SAAAA,CAAUjyH,IAAI,KAAKiO,QAAa,CAACw6D,MAAM,IACvCwpD,SAAUjyH,CAAAA,IAAI,KAAKiO,QAAa,CAAC06D,QAAQ,IACzCspD,SAAAA,CAAUjyH,IAAI,KAAKiO,QAAa,CAACikH,KAAK,IACtCD,SAAAA,CAAUjyH,IAAI,KAAKiO,QAAa,CAAC41G,IAAI,IACrCoO,SAAUjyH,CAAAA,IAAI,KAAKiO,QAAa,CAACkkH,QAAQ,IACzCF,SAAUjyH,CAAAA,IAAI,KAAKiO,QAAa,CAACgxC,KAAK,IACtCgzE,SAAAA,CAAUjyH,IAAI,KAAKiO,QAAa,CAAC0jE,KAAK,EACtC;YACA,IAAMrS,SAAAA,GAAY0vD,aAAa5mH,GAAG,CAAC6pH,UAAUjpG,UAAU,CAAC,CAAE,CAAA,CAAC1f,EAAE,CAAA,CAAA;AAE7D,YAAA,IAAIg2D,SAAW,EAAA;gBACb8yD,WAAY9yD,CAAAA,SAAAA,CAAAA,CAAAA;AACd,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA;AAEO,SAAS8yD,YAAaC,aAAkB,EAAA;IAC7C,IAAM3oG,QAAAA,GAAW2oG,cAAc3oG,QAAQ,CAAA;IACvC,IAAM0gC,QAAAA,GAAW1gC,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAU0gC,QAAQ,CAAA;AAEnC,IAAA,IAAI,CAACA,QAAAA,IAAYA,QAAa9B,KAAAA,QAAAA,CAASyC,IAAI,EAAE;AAE3C,QAAA,OAAA;AACF,KAAA;IAEA,IAAIX,QAAAA,KAAa9B,QAASgC,CAAAA,IAAI,EAAE;AAC9B+nE,QAAAA,aAAAA,CAAcrmD,IAAI,GAAG;YACnBre,MAAQ,EAAA,IAAA;AACV,SAAA,CAAA;AACAohE,QAAAA,oBAAAA,GAAuBsD,cAAc/oH,EAAE,CAAA;AACzC,KAAA,MAAO,IACL8gD,QAAAA,KAAan8C,YAAiB,CAAC08C,QAAQ,IACvCP,QAAAA,KAAan8C,YAAiB,CAAC48C,gBAAgB,EAC/C;AACAwnE,QAAAA,aAAAA,CAAcrmD,IAAI,GAAG;AACnBpe,YAAAA,QAAAA,EAAUxD,aAAan8C,YAAiB,CAAC48C,gBAAgB,GAAG,IAAO,GAAA,KAAA;YACnEgD,SAAW,EAAA;gBACT,IAAMkhE,EAAAA,oBAAAA;AACR,aAAA;AACF,SAAA,CAAA;AACF,KAAA;AACF,CAAA;AAEA;;IAGO,SAASuD,kBAAAA,CAAoB3D,IAAqB,EAAA;;AA+C5CttH,QAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;;AAET,QAAA;;QAGEA,WAAYggE,CAAAA,WAAW,KAAKv9D,8BAAAA;;QAG5BzC,WAAYggE,CAAAA,WAAW,KAAKz9D,kBAC5B,EAAA;YACAvC,WAAYggE,CAAAA,WAAW,GAAG58D,WAAAA,CAAYs/D,MAAM,CAAA;AAC9C,SAAA;;AAGA1iE,QAAAA,WAAAA,CAAYmvC,KAAK,GAAGnvC,WAAAA,CAAYmvC,KAAK,CAACknB,MAAM,CAACxpE,SAAAA,IAAAA,EAAAA;AAAQA,YAAAA,OAAAA,IAAAA,CAAK8R,IAAI,KAAK,GAAA,CAAA;;;AAGnEqB,QAAAA,WAAAA,CAAYmvC,KAAK,CAACx2C,OAAO,CAAC9L,SAAAA,IAAAA,EAAAA;AACxB,YAAA,IAAIA,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASqlE,QAAQ,EAAE;;AAEnC,gBAAA,IAAM4pD,UAAarkI,GAAAA,IAAAA,CAAKs5E,OAAO,CAAC,QAAS,CAAA,CAAA;AAEzC,gBAAA,IAAI+qD,UAAY,EAAA;;oBAEd,OAAOrkI,IAAAA,CAAKs5E,OAAO,CAAC,QAAS,CAAA,CAAA;AAC/B,iBAAA;AACF,aAAA;AACF,SAAA,CAAA,CAAA;QAEA,IAAmBnmE,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,WAAAA,CAAYmvC,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA3BtiD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTskI,YAAAA,kBAAkB,CAACtkI,IAAAA,CAAKob,EAAE,CAAC,GAAGtK,YAAAA,EAAAA,CAAAA;;;YAG9B9Q,IAAKukI,CAAAA,KAAK,GAAGvkI,IAAAA,CAAKob,EAAE,CAAA;AACpBpb,YAAAA,IAAAA,CAAKob,EAAE,GAAGkpH,kBAAkB,CAACtkI,IAAAA,CAAKob,EAAE,CAAC,CAAA;AACrCopH,YAAAA,aAAa,CAACxkI,IAAAA,CAAKob,EAAE,CAAC,GAAGpb,IAAAA,CAAAA;AAC3B,SAAA;AAEAmT,QAAAA,WAAAA,CAAYmvC,KAAK,CAACx2C,OAAO,CAAC,SAAC9L,IAAMJ,EAAAA,KAAAA,EAAAA;YAC/B,IAAII,IAAAA,CAAKw3E,QAAQ,EAAE;AACjB,gBAAA,IAAIx3E,IAAKw3E,CAAAA,QAAQ,CAAC93E,QAAQ,CAAC,GAAM,CAAA,EAAA;oBAC/B,IAAM83E,QAAAA,GAAW,IAAMA,CAAAA,QAAQ,CAAEnmE,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAA;oBAC9C,IAAMozH,MAAAA,GAAS,IAAMjtD,CAAAA,QAAQ,CAAEnmE,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAA;AAE5CrR,oBAAAA,IAAAA,CAAKw3E,QAAQ,GAAG8sD,kBAAkB,CAAC9sD,QAAAA,CAAS,GAAG,GAAMitD,GAAAA,MAAAA,CAAAA;iBAChD,MAAA;AACLzkI,oBAAAA,IAAAA,CAAKw3E,QAAQ,GAAG8sD,kBAAkB,CAACtkI,IAAAA,CAAKw3E,QAAQ,CAAC,CAAA;AACnD,iBAAA;AACF,aAAA;;YAGAt3D,MAAOoiC,CAAAA,KAAK,CAACvkD,IAAI,CAACiC,IAAAA,CAAAA,CAAAA;;YAGlBmT,WAAYmvC,CAAAA,KAAK,CAAC1iD,KAAAA,CAAM,GAAG;AAAEwb,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;AAAC,aAAA,CAAA;AAC3C,SAAA,CAAA,CAAA;AAEA,QAAA,IAAMspH,kBAAmC,QACpCvxH,CAAAA,EAAAA,EAAAA,WAAAA,EAAAA;;YAEHqoE,aAAe,EAAA;gBAAEpgE,EAAI,EAAA,EAAA;AAAG,aAAA;AACxBmgE,YAAAA,aAAAA,EAAe,EAAE;;QAGnBr7D,MAAO6yD,CAAAA,YAAY,CAACh1E,IAAI,CAAC2mI,eAAAA,CAAAA,CAAAA;;AAEzBC,QAAAA,oBAAAA,CAAqBD,iBAAiBF,aAAetkH,EAAAA,MAAAA,CAAAA,CAAAA;AAEvD,KAAA,CAAA;;AAhGAA,IAAAA,OAAAA,CAAAA;AAlBA,IAAA,IAAMA,SAAoB,QACrBugH,CAAAA,EAAAA,EAAAA,IAAAA,EAAAA;AACHn+E,QAAAA,KAAAA,EAAO,EAAE;AACTywB,QAAAA,YAAAA,EAAc,EAAE;AAChBj4C,QAAAA,UAAAA,EAAY,EAAE;AACdO,QAAAA,SAAAA,EAAW,EAAE;AACbupG,QAAAA,OAAAA,EAAS,EAAE;AACX3jE,QAAAA,UAAAA,EAAY,EAAE;AACd4jE,QAAAA,UAAAA,EAAY,EAAE;AACdC,QAAAA,KAAAA,EAAO,EAAE;;;IAIX,IAAoB5kH,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAO6kH,MAAM,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAxBl3H,QAAAA,IAAAA,KAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,QAAAA,KAAAA,CAAMuN,EAAE,GAAGtK,YAAAA,EAAAA,CAAAA;AACb,KAAA;;AAGAoP,IAAAA,CAAAA,SAAAA,GAAAA,CAAAA,OAAAA,GAAAA,MAAAA,EAAO8qC,QAAP9qC,KAAAA,IAAAA,GAAAA,SAAAA,GAAAA,OAAAA,CAAO8qC,WAAa,EAAE,CAAA;AACtB9qC,IAAAA,MAAAA,CAAO8qC,QAAQ,CAACl/C,OAAO,CAACgmD,SAAAA,cAAAA,EAAAA;AAIQ5xC,QAAAA,IAAAA,oCAAAA,CAAAA;AAH9B4xC,QAAAA,cAAAA,CAAe12C,EAAE,GAAGtK,YAAAA,EAAAA,CAAAA;QACpBghD,cAAe4nB,CAAAA,QAAQ,GAAGrhE,QAAAA,CAASu6C,OAAO,CAAA;;AAE1Cd,QAAAA,cAAAA,CAAexyC,MAAM,GAAG;YAAElE,EAAE,EAAA,CAAE8E,oCAAAA,GAAAA,MAAAA,CAAO6kH,MAAM,CAACjzE,eAAexyC,MAAM,CAAC,KAApCY,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oCAAAA,CAAsC9E,EAAE;AAAC,SAAA,CAAA;AACzE,KAAA,CAAA,CAAA;IAEA,IAAI8E,MAAAA,CAAO8qC,QAAQ,CAACnvD,MAAM,GAAGqkB,MAAO6kH,CAAAA,MAAM,CAAClpI,MAAM,EAAE;AACjD,QAAA,IAAK,IAAIO,CAAAA,GAAI8jB,MAAO8qC,CAAAA,QAAQ,CAACnvD,MAAM,EAAEO,CAAAA,GAAI8jB,MAAO6kH,CAAAA,MAAM,CAAClpI,MAAM,EAAEO,CAAK,EAAA,CAAA;YAClE8jB,MAAO8qC,CAAAA,QAAQ,CAACjtD,IAAI,CAAC;gBACnBqd,EAAItK,EAAAA,YAAAA,EAAAA;AACJ4oE,gBAAAA,QAAAA,EAAUrhE,SAASu6C,OAAO;gBAC1BtzC,MAAQ,EAAA;AAAElE,oBAAAA,EAAAA,EAAI8E,MAAO6kH,CAAAA,MAAM,CAAC3oI,CAAAA,CAAE,CAACgf,EAAE;AAAC,iBAAA;gBAClC44C,KAAO,EAAA,IAAA;AACT,aAAA,CAAA,CAAA;AACF,SAAA;AACF,KAAA;;IAGA,IAAIysE,IAAAA,CAAK1uE,IAAI,EAAE;QACbizE,kBAAmBvE,CAAAA,IAAAA,CAAK1uE,IAAI,EAAE7xC,MAAAA,CAAAA,CAAAA;AAChC,KAAA;AAEA,IAAA,IAAMokH,qBAA6C,EAAC,CAAA;AACpD,IAAA,IAAME,gBAAsC,EAAC,CAAA;;AAG7C,IAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA0B/D,KAAK1tD,YAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA;IAsE3C,IAAmB7yD,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOoiC,KAAK,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtBtiD,QAAAA,IAAAA,IAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;;QAET,IAAIA,IAAAA,CAAKs5E,OAAO,EAAE;AAChB,YAAA,IAAIt5E,IAAKs5E,CAAAA,OAAO,CAAC99C,QAAQ,EAAE;AACzB,gBAAA,IAAIx7B,KAAKs5E,OAAO,CAAC99C,QAAQ,CAACu4B,OAAO,KAAKh5D,SAAW,EAAA;AAC/C,oBAAA,IAAMkqI,eAAejlI,IAAKs5E,CAAAA,OAAO,CAAC99C,QAAQ,CAACu4B,OAAO,CAAA;AAElD/zD,oBAAAA,IAAAA,CAAKs5E,OAAO,CAAC99C,QAAQ,CAACu4B,OAAO,GAAG;AAAE34C,wBAAAA,EAAAA,EAAI8E,MAAO8qC,CAAAA,QAAQ,CAACi6E,YAAAA,CAAa,CAAC7pH,EAAE;AAAC,qBAAA,CAAA;AACzE,iBAAA;AACF,aAAA;AAEA,YAAA,IAAIpb,IAAKs5E,CAAAA,OAAO,CAAC+3B,MAAM,EAAE;AACvB,gBAAA,IAAIrxG,KAAKs5E,OAAO,CAAC+3B,MAAM,CAACt9C,OAAO,KAAKh5D,SAAW,EAAA;AAC7C,oBAAA,IAAMkqI,gBAAejlI,IAAKs5E,CAAAA,OAAO,CAAC+3B,MAAM,CAACt9C,OAAO,CAAA;AAEhD/zD,oBAAAA,IAAAA,CAAKs5E,OAAO,CAAC+3B,MAAM,CAACt9C,OAAO,GAAG;AAAE34C,wBAAAA,EAAAA,EAAI8E,MAAO8qC,CAAAA,QAAQ,CAACi6E,aAAAA,CAAa,CAAC7pH,EAAE;AAAC,qBAAA,CAAA;AACvE,iBAAA;AACF,aAAA;AACF,SAAA;;QAGA,IAAIpb,IAAAA,CAAK0qB,SAAS,EAAE;AAEG1qB,YAAAA,IAAAA,wBAAAA,CAAAA;;YAArB,IAAM+hB,QAAAA,GAAAA,EAAAA,CAAAA,MAAAA,CAAe/hB,CAAAA,wBAAAA,GAAAA,IAAAA,CAAK0qB,SAAS,CAAC3I,QAAQ,YAAvB/hB,wBAA2B,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AAEpCA,YAAAA,IAAAA,wBAAAA,CAAAA;;YAArB,IAAMgiB,QAAAA,GAAAA,EAAAA,CAAAA,MAAAA,CAAehiB,CAAAA,wBAAAA,GAAAA,IAAAA,CAAK0qB,SAAS,CAAC1I,QAAQ,YAAvBhiB,wBAA2B,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;AAEvCA,YAAAA,IAAAA,qBAAAA,CAAAA;;YAAlB,IAAMoE,KAAAA,GAAAA,EAAAA,CAAAA,MAAAA,CAAYpE,CAAAA,qBAAAA,GAAAA,IAAAA,CAAK0qB,SAAS,CAACtmB,KAAK,YAApBpE,qBAAwB,GAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA,CAAA,CAAA;YAEnDjE,MAAOsjB,CAAAA,MAAM,CAACrf,IAAM,EAAA;gBAClB0qB,SAAW,EAAA;oBACT3I,QAAU,EAAA;wBAAE9f,CAAG8f,EAAAA,QAAQ,CAAC,CAAE,CAAA;wBAAE/kB,CAAG+kB,EAAAA,QAAQ,CAAC,CAAE,CAAA;wBAAE9b,CAAG8b,EAAAA,QAAQ,CAAC,CAAE,CAAA;AAAC,qBAAA;oBAC3DmvB,SAAW,EAAA;wBAAEjvC,CAAG+f,EAAAA,QAAQ,CAAC,CAAE,CAAA;wBAAEhlB,CAAGglB,EAAAA,QAAQ,CAAC,CAAE,CAAA;wBAAE/b,CAAG+b,EAAAA,QAAQ,CAAC,CAAE,CAAA;AAAC,qBAAA;oBAC5D5d,KAAO,EAAA;wBAAEnC,CAAGmC,EAAAA,KAAK,CAAC,CAAE,CAAA;wBAAEpH,CAAGoH,EAAAA,KAAK,CAAC,CAAE,CAAA;wBAAE6B,CAAG7B,EAAAA,KAAK,CAAC,CAAE,CAAA;AAAC,qBAAA;AACjD,iBAAA;AACF,aAAA,CAAA,CAAA;;AAGA,YAAA,IAAIpE,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASmlE,MAAM,EAAE;gBACjCv6E,IAAK0qB,CAAAA,SAAS,CAAC/pB,IAAI,GAAG;oBAAEsB,CAAGmC,EAAAA,KAAK,CAAC,CAAE,CAAA;oBAAEpH,CAAGoH,EAAAA,KAAK,CAAC,CAAE,CAAA;AAAC,iBAAA,CAAA;gBACjDpE,IAAK0qB,CAAAA,SAAS,CAACtmB,KAAK,GAAG;oBAAEnC,CAAG,EAAA,CAAA;oBAAGjF,CAAG,EAAA,CAAA;oBAAGiJ,CAAG,EAAA,CAAA;AAAE,iBAAA,CAAA;AAC5C,aAAA;;AAGA,YAAA,IAAIjG,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASmlE,MAAM,EAAE;gBACjC,IAAMjB,OAAAA,GAAUt5E,KAAKs5E,OAAO,CAAA;gBAE5B,IAAI,CAACA,OAAQ99C,CAAAA,QAAQ,EAAE;oBACrB89C,OAAQ99C,CAAAA,QAAQ,GAAG,EAAC,CAAA;AACtB,iBAAA;gBACA,IAAMA,QAAAA,GAAW89C,QAAQ99C,QAAQ,CAAA;AACjC,gBAAA,IAAM0pG,aAAalG,aAAcxjG,CAAAA,QAAAA,CAAS6F,MAAM,EAAE7F,SAASyjG,cAAc,CAAA,CAAA;AACzE,gBAAA,IAAM5qB,SAAYr0G,GAAAA,IAAAA,CAAK0qB,SAAS,CAAC/pB,IAAI,CAAA;;AAGrC,gBAAA,IAAI,CAAC66B,QAAS6F,CAAAA,MAAM,IAAI7F,QAASyjG,CAAAA,cAAc,KAAKlkI,SAAW,EAAA;AACds5G,oBAAAA,IAAAA,YAAAA,CAAAA;AAA/Cr0G,oBAAAA,IAAAA,CAAK0qB,SAAS,CAAC3I,QAAQ,CAAC9f,CAAC,IAAI,CAACijI,UAAU,CAAC,EAAE,IAAI7wB,CAAAA,YAAAA,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAWpyG,CAAC,KAAA,IAAA,GAAZoyG,eAAgB,CAAA,CAAA,CAAA;AAChBA,oBAAAA,IAAAA,YAAAA,CAAAA;AAA/Cr0G,oBAAAA,IAAAA,CAAK0qB,SAAS,CAAC3I,QAAQ,CAAC/kB,CAAC,IAAI,CAACkoI,UAAU,CAAC,EAAE,IAAI7wB,CAAAA,YAAAA,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAWr3G,CAAC,KAAA,IAAA,GAAZq3G,eAAgB,CAAA,CAAA,CAAA;AACjE,iBAAA;oBAC8CA,aAAwCA,EAAAA,aAAAA,CAAAA;gBAAtFr0G,IAAK0qB,CAAAA,SAAS,CAAC2W,MAAM,GAAG;AAAEp/B,oBAAAA,CAAAA,EAAGijI,UAAU,CAAC,CAAE,CAAA,IAAI7wB,CAAAA,aAAAA,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAWpyG,CAAAA,CAAC,KAAZoyG,IAAAA,GAAAA,aAAAA,GAAgB,CAAA,CAAA;AAAIr3G,oBAAAA,CAAAA,EAAGkoI,UAAU,CAAC,CAAE,CAAA,IAAI7wB,CAAAA,aAAAA,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAWr3G,CAAAA,CAAC,KAAZq3G,IAAAA,GAAAA,aAAAA,GAAgB,CAAA,CAAA;AAAG,iBAAA,CAAA;AAC3G,aAAA;AACF,SAAA;AAEA,QAAA,IAAIr0G,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASqlE,QAAQ,EAAE;YACnC,IAAMnB,QAAAA,GAAUt5E,KAAKs5E,OAAO,CAAA;YAE5B,IAAI,CAACA,QAAQ99C,CAAAA,QAAQ,EAAE;gBACrB89C,QAAQ99C,CAAAA,QAAQ,GAAG,EAAC,CAAA;AACtB,aAAA;YACA,IAAMA,SAAAA,GAAW89C,SAAQ99C,QAAQ,CAAA;YAEjC89C,QAAQ99C,CAAAA,QAAQ,CAAC6F,MAAM,GAAG29F,cAAcxjG,SAAS6F,CAAAA,MAAM,EAAE7F,SAAAA,CAASyjG,cAAc,CAAA,CAAA;AAClF,SAAA;;QAGA,IAAIj/H,IAAAA,CAAK8R,IAAI,KAAKsD,QAAAA,CAASu+B,MAAM,IAAI3zC,IAAAA,CAAKs5E,OAAO,CAACo0B,oBAAoB,IAAI3xG,MAAOkQ,CAAAA,IAAI,CAACjM,IAAKs5E,CAAAA,OAAO,CAACo0B,oBAAoB,CAAA,CAAE7xG,MAAM,KAAK,CAAG,EAAA;AACrImE,YAAAA,IAAAA,CAAKs5E,OAAO,CAACo0B,oBAAoB,CAAC/2D,UAAU,GAAG,IAAA,CAAA;AACjD,SAAA;;QAGA,IAAI32C,IAAAA,CAAKmlI,EAAE,KAAKpqI,SAAW,EAAA;YACzB,IAAMoqI,EAAAA,GAAKnlI,KAAKmlI,EAAE,CAAA;YAClB,IAAyB1E,aAAAA,GAAAA,IAAAA,CAAjBjuH,OAAAA,EAAAA,OAAAA,GAAAA,aAAAA,KAAAA,KAAAA,CAAAA,GAAU,EAAE,GAAA,aAAA,CAAA;AAEpB,YAAA,IAAI2yH,EAAOpqI,KAAAA,SAAAA,IAAa+F,MAAOo0C,CAAAA,SAAS,CAACiwF,EAAK,CAAA,EAAA;AAC5CnlI,gBAAAA,IAAAA,CAAKolI,UAAU,GAAG5yH,OAAO,CAAC2yH,EAAG,CAAA,CAAA;AAC/B,aAAA;AACF,SAAA;;QAGA,IAAInlI,IAAAA,CAAKolI,UAAU,KAAK,cAAgB,EAAA;;AAEtCplI,YAAAA,IAAAA,CAAK8R,IAAI,GAAG,cAAA,CAAA;AACd,SAAA;QACA,IAAI9R,IAAAA,CAAKolI,UAAU,KAAK,yBAA2B,EAAA;;AAEjDplI,YAAAA,IAAAA,CAAK8R,IAAI,GAAG,yBAAA,CAAA;AACd,SAAA;;QAGA,IAAI9R,IAAAA,CAAKs5E,OAAO,CAACl6E,OAAO,CAAC1D,MAAM,IAAIsE,IAAAA,CAAKolI,UAAU,KAAK,cAAgB,EAAA;AACrEplI,YAAAA,IAAAA,CAAKs5E,OAAO,CAACl6E,OAAO,CAAC1D,MAAM,GAAG4oI,kBAAkB,CAACtkI,IAAAA,CAAKs5E,OAAO,CAACl6E,OAAO,CAAC1D,MAAM,CAAC,CAAA;AAC/E,SAAA;;AAGA,QAAA,IACEsE,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAAS4uH,KAAK,IACzBvD,IAAAA,CAAK4E,MAAM,IACX5E,IAAK4E,CAAAA,MAAM,CAACxpI,MAAM,KAAK,CAC1B,EAAA;AACAypI,YAAAA,gBAAAA,CAAiB7E,IAAK4E,CAAAA,MAAM,CAACrlI,IAAAA,CAAKs5E,OAAO,CAACl6E,OAAO,CAAC4kI,KAAK,CAAC,EAAEhkI,IAAAA,CAAKs5E,OAAO,EAAEp5D,MAAAA,CAAAA,CAAAA;AAC1E,SAAA;;AAGA,QAAA,IACElgB,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASmlE,MAAM,IAC7Bv6E,IAAAA,CAAK8R,IAAI,KAAKsD,QAASqlE,CAAAA,QAAQ,IAC/Bz6E,IAAAA,CAAK8R,IAAI,KAAKsD,QAAAA,CAAS6iD,IAAI,IAC3Bj4D,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASmwH,MAAM,IAC7BvlI,IAAAA,CAAK8R,IAAI,KAAKsD,SAASwrH,KAAK,IAC5B5gI,IAAK8R,CAAAA,IAAI,KAAK,QACd9R,IAAAA,IAAAA,CAAK8R,IAAI,KAAKsD,QAASylE,CAAAA,IAAI,IAC3B76E,IAAAA,CAAK8R,IAAI,KAAKsD,QAAAA,CAASowH,QAAQ,IAC/BxlI,KAAK8R,IAAI,KAAKsD,QAASu+B,CAAAA,MAAM,IAC7B3zC,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASugH,IAAI,IAC3B31H,IAAK8R,CAAAA,IAAI,KAAKsD,QAAS4uH,CAAAA,KAAK,IAC5BhkI,IAAAA,CAAK8R,IAAI,KAAK,cAAA,IACd9R,IAAK8R,CAAAA,IAAI,KAAK,yBACd,EAAA;YACA9R,IAAK86B,CAAAA,UAAU,GAAG,EAAE,CAAA;AACpB5a,YAAAA,MAAAA,CAAO4a,UAAU,CAAC/8B,IAAI,CAACiC,KAAKs5E,OAAO,CAAA,CAAA;YACnCt5E,IAAKs5E,CAAAA,OAAO,CAACl+D,EAAE,GAAGtK,YAAAA,EAAAA,CAAAA;YAClB9Q,IAAKs5E,CAAAA,OAAO,CAACt5E,IAAI,GAAG;AAAEob,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;AAAC,aAAA,CAAA;YAClCpb,IAAK05E,CAAAA,QAAQ,GAAGrhE,QAAAA,CAASshE,WAAW,CAAA;YACpC35E,IAAK86B,CAAAA,UAAU,CAAC/8B,IAAI,CAAC;gBAAEqd,EAAIpb,EAAAA,IAAAA,CAAKs5E,OAAO,CAACl+D,EAAE;AAAC,aAAA,CAAA,CAAA;AAC7C,SAAA;QAEA,IAAIpb,IAAAA,CAAK8R,IAAI,KAAKsD,QAASulE,CAAAA,IAAI,IAAI36E,IAAAA,CAAK8R,IAAI,KAAKsD,QAASjC,CAAAA,WAAW,EAAE;YACrEnT,IAAK86B,CAAAA,UAAU,GAAG,EAAE,CAAA;YACpB96B,IAAK05E,CAAAA,QAAQ,GAAGrhE,QAAAA,CAASshE,WAAW,CAAA;AACtC,SAAA;AAEA,QAAA,OAAQ35E,KAAK8R,IAAI;AACf,YAAA,KAAKsD,SAASmlE,MAAM;AAClBv6E,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASokG,eAAe,CAAA;AAEhD,gBAAA,MAAA;AACF,YAAA,KAAKrnG,SAASqlE,QAAQ;AACpBz6E,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASkhE,cAAc,CAAA;AAE/C,gBAAA,MAAA;AACF,YAAA,KAAKnkE,SAAS6iD,IAAI;AAChBj4D,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAAS8kE,aAAa,CAAA;AAE9C,gBAAA,MAAA;AACF,YAAA,KAAK/nE,SAASmwH,MAAM;AAClBvlI,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASotH,eAAe,CAAA;AAEhD,gBAAA,MAAA;AACF,YAAA,KAAKrwH,SAASwrH,KAAK;AACjB5gI,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASqtH,cAAc,CAAA;AAE/C,gBAAA,MAAA;YACF,KAAK,QAAA;AACH1lI,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASstH,eAAe,CAAA;AAEhD,gBAAA,MAAA;YACF,KAAK,cAAA;gBACH3lI,IAAKs5E,CAAAA,OAAO,CAACI,QAAQ,GAAG,gBAAA,CAAA;AAExB,gBAAA,MAAA;YACF,KAAK,yBAAA;gBACH15E,IAAKs5E,CAAAA,OAAO,CAACI,QAAQ,GAAG,sBAAA,CAAA;AAExB,gBAAA,MAAA;AACF,YAAA,KAAKtkE,SAASylE,IAAI;AAChB76E,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASutH,aAAa,CAAA;AAE9C,gBAAA,MAAA;AACF,YAAA,KAAKxwH,SAASowH,QAAQ;AACpBxlI,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASg3E,iBAAiB,CAAA;AAElD,gBAAA,MAAA;AACF,YAAA,KAAKj6E,SAASu+B,MAAM;AAClB3zC,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASmyE,gBAAgB,CAAA;AAEjD,gBAAA,MAAA;AACF,YAAA,KAAKp1E,SAASugH,IAAI;AAChB31H,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASo/G,aAAa,CAAA;AAE9C,gBAAA,MAAA;AACF,YAAA,KAAKriH,SAAS4uH,KAAK;AACjBhkI,gBAAAA,IAAAA,CAAKs5E,OAAO,CAACI,QAAQ,GAAGrhE,SAASwtH,cAAc,CAAA;AAE/C,gBAAA,MAAA;AACJ,SAAA;AACF,KAAA;AAEA3lH,IAAAA,MAAAA,CAAOijD,OAAO,GAAGxuD,gBAAgB,CAAC,KAAM,CAAA,CAAA;IAExC,OAAOuL,MAAAA,CAAAA;AACT,CAAA;AAEA;;IAGO,SAAS4lH,kBAAAA,CAAoBrF,IAAe,EAAA;;AAEjDA,IAAAA,IAAAA,CAAK1tD,YAAY,CAACpnE,GAAG,CAAC,SAAC6H,IAAAA,EAAAA;QACrB,IAAmBA,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,IAAAA,CAAK8uC,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAApBtiD,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT+lI,YAAAA,YAAAA,CAAa/lI,KAAKs5E,OAAO,CAAA,CAAA;AAC3B,SAAA;AACF,KAAA,CAAA,CAAA;IAEA,OAAOmnD,IAAAA,CAAAA;AACT,CAAA;AAEO,SAASsF,aAAczsD,OAAqB,EAAA;AACjD,IAAA,IAAI,CAACA,OAAS,EAAA;AACZ,QAAA,OAAA;AACF,KAAA;IACA,IAAkBv9E,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAACqtE,OAAU,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7Bt/E,QAAAA,IAAAA,GAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;QACT,IAAMG,KAAAA,GAAQm/E,OAAO,CAACt/E,GAAI,CAAA,CAAA;QAC1B,IAAM+V,OAAAA,GAAUlM,KAAMkM,CAAAA,OAAO,CAAC5V,KAAAA,CAAAA,CAAAA;QAE9B,IAAI4V,OAAAA,IAAW5V,KAAM0B,CAAAA,MAAM,KAAK,CAAA,IAAKgI,KAAMkM,CAAAA,OAAO,CAAC5V,KAAK,CAAC,CAAA,CAAE,CAAG,EAAA;AAC5D,YAAA,IAAIH,QAAQ,MAAQ,EAAA;gBAClBs/E,OAAO,CAACt/E,GAAI,CAAA,GAAGmkI,eAAgBhkI,CAAAA,KAAAA,CAAAA,CAAAA;aAC1B,MAAA;gBACLm/E,OAAO,CAACt/E,GAAI,CAAA,GAAGujI,iBAAkBpjI,CAAAA,KAAAA,CAAAA,CAAAA;AACnC,aAAA;AACF,SAAA,MAAO,IAAI,CAAC4V,OAAW,IAAA,OAAO5V,UAAU,QAAU,EAAA;YAChD4rI,YAAa5rI,CAAAA,KAAAA,CAAAA,CAAAA;AACf,SAAA;AACF,KAAA;AACF,CAAA;AAEA,SAASwqI,oBAAsBxxH,CAAAA,WAA4B,EAAEqxH,aAAmC,EAAE/xD,SAAoB,EAAA;AACpH,IAAA,IAAM8I,gBAAgB,EAAE,CAAA;AACxB,IAAA,IAAMyqD,aAAa,EAAE,CAAA;AACrB,IAAA,IAAMC,qBAAqB,EAAE,CAAA;AAC7B,IAAA,IAAMC,iBAAuC,GAAA;AAC3CzoB,QAAAA,MAAAA,EAAQ,EAAE;QACVriG,EAAItK,EAAAA,YAAAA,EAAAA;;QAEJ4oE,QAAU,EAAA,eAAA;AACZ,KAAA,CAAA;;IAGA,IAA2BvmE,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,WAAAA,CAAYmvC,KAAK,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAnC6jF,QAAAA,IAAAA,YAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,QAAA,IAAMnmI,IAAOwkI,GAAAA,aAAa,CAAC2B,YAAAA,CAAa/qH,EAAE,CAAC,CAAA;AAC3C,QAAA,IAAMgrH,gBAAgB,EAAE,CAAA;AAExB,QAAA,IAAMC,0BAA6B,GAAA;YACjCjrH,EAAItK,EAAAA,YAAAA,EAAAA;YACJ4oE,QAAU,EAAA,yBAAA;AACZ,SAAA,CAAA;AAEAusD,QAAAA,kBAAAA,CAAmBloI,IAAI,CAACsoI,0BAAAA,CAAAA,CAAAA;AACxB,QAAA,IAAMC,sBAAyB,GAAA;YAC7BlrH,EAAItK,EAAAA,YAAAA,EAAAA;YACJ4oE,QAAU,EAAA,iBAAA;AACV5sC,YAAAA,QAAAA,EAAU,EAAE;YACZ2sE,KAAO,EAAA;AACL,gBAAA;AACEhrG,oBAAAA,KAAAA,EAAOzO,KAAK2pG,KAAK;AACjBvsF,oBAAAA,QAAAA,EAAUpd,KAAKod,QAAQ;AACvB+1D,oBAAAA,WAAAA,EAAanzE,KAAKmzE,WAAW;oBAC7Bj3D,KAAO,EAAA;AACLd,wBAAAA,EAAAA,EAAIirH,2BAA2BjrH,EAAE;AACnC,qBAAA;AACF,iBAAA;AACD,aAAA;AACH,SAAA,CAAA;AAEAgrH,QAAAA,aAAAA,CAAcroI,IAAI,CAAC;AAAEqd,YAAAA,EAAAA,EAAIkrH,uBAAuBlrH,EAAE;AAAC,SAAA,CAAA,CAAA;AACnD4qH,QAAAA,UAAAA,CAAWjoI,IAAI,CAACuoI,sBAAAA,CAAAA,CAAAA;AAEhB,QAAA,IAAItmI,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASqlE,QAAQ,EAAE;AACnC,YAAA,IAAM8rD,6BAAgC,GAAA;gBACpCnrH,EAAItK,EAAAA,YAAAA,EAAAA;gBACJ4oE,QAAU,EAAA,wBAAA;;gBAEVgsB,gBAAkB1lG,EAAAA,IAAAA,CAAKs5E,OAAO,CAACosB,gBAAgB;;gBAE/CC,oBAAsB3lG,EAAAA,IAAAA,CAAKs5E,OAAO,CAACqsB,oBAAoB;;gBAEvD+H,oBAAsB1tG,EAAAA,IAAAA,CAAKs5E,OAAO,CAACo0B,oBAAoB;AACzD,aAAA,CAAA;AAEAu4B,YAAAA,kBAAAA,CAAmBloI,IAAI,CAACwoI,6BAAAA,CAAAA,CAAAA;AACxB,YAAA,IAAMC,YAAe,GAAA;gBACnBprH,EAAItK,EAAAA,YAAAA,EAAAA;gBACJ4oE,QAAU,EAAA,gBAAA;AACV5sC,gBAAAA,QAAAA,EAAU,EAAE;gBACZ2sE,KAAO,EAAA;AACL,oBAAA;AACEhrG,wBAAAA,KAAAA,EAAOzO,KAAK2pG,KAAK;AACjBvsF,wBAAAA,QAAAA,EAAUpd,KAAKod,QAAQ;AACvB+1D,wBAAAA,WAAAA,EAAanzE,KAAKmzE,WAAW;wBAC7Bj3D,KAAO,EAAA;AACLd,4BAAAA,EAAAA,EAAImrH,8BAA8BnrH,EAAE;AACtC,yBAAA;AACF,qBAAA;AACD,iBAAA;AACH,aAAA,CAAA;AAEAgrH,YAAAA,aAAAA,CAAcroI,IAAI,CAAC;AAAEqd,gBAAAA,EAAAA,EAAIorH,aAAaprH,EAAE;AAAC,aAAA,CAAA,CAAA;AACzC4qH,YAAAA,UAAAA,CAAWjoI,IAAI,CAACyoI,YAAAA,CAAAA,CAAAA;AAClB,SAAA;QAEA,IAAIxmI,IAAAA,CAAK8R,IAAI,KAAKsD,QAASmlE,CAAAA,MAAM,IAAIv6E,IAAAA,CAAK8R,IAAI,KAAKsD,QAASugH,CAAAA,IAAI,EAAE;AAChE,YAAA,IAAM8Q,+BAAkC,GAAA;gBACtCrrH,EAAItK,EAAAA,YAAAA,EAAAA;gBACJ4oE,QAAU,EAAA,0BAAA;gBACV2a,iBAAmBr0F,EAAAA,IAAAA,CAAKs5E,OAAO,CAAC+a,iBAAiB;AACnD,aAAA,CAAA;AAEA4xC,YAAAA,kBAAAA,CAAmBloI,IAAI,CAAC0oI,+BAAAA,CAAAA,CAAAA;AACxB,YAAA,IAAMD,aAAe,GAAA;gBACnBprH,EAAItK,EAAAA,YAAAA,EAAAA;gBACJ4oE,QAAU,EAAA,kBAAA;AACV5sC,gBAAAA,QAAAA,EAAU,EAAE;gBACZ2sE,KAAO,EAAA;AACL,oBAAA;AACEhrG,wBAAAA,KAAAA,EAAOzO,KAAK2pG,KAAK;AACjBvsF,wBAAAA,QAAAA,EAAUpd,KAAKod,QAAQ;AACvB+1D,wBAAAA,WAAAA,EAAanzE,KAAKmzE,WAAW;wBAC7Bj3D,KAAO,EAAA;AACLd,4BAAAA,EAAAA,EAAIqrH,gCAAgCrrH,EAAE;AACxC,yBAAA;AACF,qBAAA;AACD,iBAAA;AACH,aAAA,CAAA;AAEAgrH,YAAAA,aAAAA,CAAcroI,IAAI,CAAC;AAAEqd,gBAAAA,EAAAA,EAAIorH,cAAaprH,EAAE;AAAC,aAAA,CAAA,CAAA;AACzC4qH,YAAAA,UAAAA,CAAWjoI,IAAI,CAACyoI,aAAAA,CAAAA,CAAAA;AAClB,SAAA;AAEA,QAAA,IAAIxmI,IAAK8R,CAAAA,IAAI,KAAKsD,QAAAA,CAASjC,WAAW,EAAE;AACtC,YAAA,IAAMuzH,kCAAqC,GAAA;gBACzCtrH,EAAItK,EAAAA,YAAAA,EAAAA;gBACJ4oE,QAAU,EAAA,6BAAA;AACZ,aAAA,CAAA;AAEAusD,YAAAA,kBAAAA,CAAmBloI,IAAI,CAAC2oI,kCAAAA,CAAAA,CAAAA;AACxB,YAAA,IAAMF,aAAe,GAAA;gBACnBprH,EAAItK,EAAAA,YAAAA,EAAAA;gBACJ4oE,QAAU,EAAA,qBAAA;AACV5sC,gBAAAA,QAAAA,EAAU,EAAE;gBACZ2sE,KAAO,EAAA;AACL,oBAAA;AACEhrG,wBAAAA,KAAAA,EAAOzO,KAAK2pG,KAAK;AACjBvsF,wBAAAA,QAAAA,EAAUpd,KAAKod,QAAQ;AACvB+1D,wBAAAA,WAAAA,EAAanzE,KAAKmzE,WAAW;wBAC7Bj3D,KAAO,EAAA;AACLd,4BAAAA,EAAAA,EAAIsrH,mCAAmCtrH,EAAE;AAC3C,yBAAA;AACF,qBAAA;AACD,iBAAA;AACH,aAAA,CAAA;AAEAgrH,YAAAA,aAAAA,CAAcroI,IAAI,CAAC;AAAEqd,gBAAAA,EAAAA,EAAIorH,cAAaprH,EAAE;AAAC,aAAA,CAAA,CAAA;AACzC4qH,YAAAA,UAAAA,CAAWjoI,IAAI,CAACyoI,aAAAA,CAAAA,CAAAA;AAClB,SAAA;AAEA,QAAA,IAAMG,gBAAmB,GAAA;YACvBvrH,EAAItK,EAAAA,YAAAA,EAAAA;YACJ4oE,QAAU,EAAA,oBAAA;YACV5sC,QAAUs5F,EAAAA,aAAAA;AACV3sB,YAAAA,KAAAA,EAAO,EAAE;AACX,SAAA,CAAA;AAEAusB,QAAAA,UAAAA,CAAWjoI,IAAI,CAAC4oI,gBAAAA,CAAAA,CAAAA;QAChBT,iBAAkBzoB,CAAAA,MAAM,CAAC1/G,IAAI,CAAC;AAAEqd,YAAAA,EAAAA,EAAIurH,iBAAiBvrH,EAAE;AAAC,SAAA,CAAA,CAAA;AACxDmgE,QAAAA,aAAAA,CAAcx9E,IAAI,CAAC;YACjB/D,GAAK,EAAA;AAAEohB,gBAAAA,EAAAA,EAAIurH,iBAAiBvrH,EAAE;AAAC,aAAA;YAC/BjhB,KAAO,EAAA;AAAEihB,gBAAAA,EAAAA,EAAIpb,KAAKob,EAAE;AAAC,aAAA;AACvB,SAAA,CAAA,CAAA;AACF,KAAA;AAEA,IAAA,IAAMwrH,WAAW,EAAE,CAAA;AAEnB,IAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAwBZ,UAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzBa,QAAAA,IAAAA,SAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACTD,QAAAA,QAAAA,CAAS7oI,IAAI,CAAC;AAAEqd,YAAAA,EAAAA,EAAIyrH,UAAUzrH,EAAE;AAAC,SAAA,CAAA,CAAA;AACnC,KAAA;;AAGAjI,IAAAA,WAAAA,CAAYqoE,aAAa,GAAG;AAAEpgE,QAAAA,EAAAA,EAAI8qH,kBAAkB9qH,EAAE;AAAC,KAAA,CAAA;;AAEvDjI,IAAAA,WAAAA,CAAYooE,aAAa,GAAGA,aAAAA,CAAAA;IAE5B9I,SAAUqyD,CAAAA,KAAK,CAAC/mI,IAAI,CAACmoI,iBAAAA,CAAAA,CAAAA;AAErB,IAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAwBF,UAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAzBa,QAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;;QAETp0D,SAAUqyD,CAAAA,KAAK,CAAC/mI,IAAI,CAAC8oI,UAAAA,CAAAA,CAAAA;AACvB,KAAA;AACA,IAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA4BZ,kBAAoB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAArCa,QAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;;QAETr0D,SAAUqyD,CAAAA,KAAK,CAAC/mI,IAAI,CAAC+oI,aAAAA,CAAAA,CAAAA;AACvB,KAAA;AACF,CAAA;AAEO,SAAS9B,kBAAAA,CAAoBjzE,IAAkB,EAAE0gB,SAAoB,EAAA;;AAE1EA,IAAAA,SAAAA,CAAU1gB,IAAI,GAAGA,IAAKpmD,CAAAA,GAAG,CAAC0mD,SAAAA,GAAAA,EAAAA;AAAQ,QAAA,OAAA;AAChClE,YAAAA,GAAAA,EAAKkE,IAAIlE,GAAG;YACZ,UAAY,EAAA,aAAA;YACZ/yC,EAAItK,EAAAA,YAAAA,EAAAA;AACN,SAAA,CAAA;;AACF,CAAA;AAEO,SAASw0H,gBAAkByB,CAAAA,QAAuB,EAAEztD,OAAqB,EAAE7G,SAAoB,EAAA;;AAEpG6G,IAAAA,OAAAA,CAAQytD,QAAQ,GAAG;QACjB,OAAS,EAAA;YACP,MAAQ,EAAA;;gBAEN,IAAMt0D,EAAAA,SAAAA,CAAU1gB,IAAI,CAACg1E,QAASC,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAAC5rH,EAAE;AAC/C,aAAA;AACA,YAAA,QAAA,EAAU2rH,SAASC,KAAK,CAAC,CAAE,CAAA,CAACloI,KAAK,CAAC,CAAA,CAAA;AACpC,SAAA;QACA,UAAY,EAAA;YACV,MAAQ,EAAA;;gBAEN,IAAM2zE,EAAAA,SAAAA,CAAU1gB,IAAI,CAACg1E,QAASxmH,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,CAAC,CAACnF,EAAE;AAClD,aAAA;AACA,YAAA,QAAA,EAAU2rH,SAASxmH,QAAQ,CAAC,CAAE,CAAA,CAACzhB,KAAK,CAAC,CAAA,CAAA;AACvC,SAAA;AACA,QAAA,cAAA,EAAgBioI,SAASE,YAAY;AACrC,QAAA,QAAA,EAAUF,QAAShC,CAAAA,MAAM,CAACp5H,GAAG,CAACvP,SAAAA,CAAAA,EAAAA;AAAM,YAAA,OAAA;;AAElCgf,gBAAAA,EAAAA,EAAIq3D,SAAUznB,CAAAA,QAAQ,CAAC5uD,CAAAA,CAAE,CAACgf,EAAE;AAC9B,aAAA,CAAA;;AACF,KAAA,CAAA;AAEF;;ACriCO,SAAS8rH,2BAA4BzsD,QAAa,EAAA;IACvD,IAAMr7E,OAAAA,GAAUq7E,SAASr7E,OAAO,CAAA;IAChC,IAAMsrB,SAAAA,GAAY+vD,SAAS/vD,SAAS,CAAA;AACpC,IAAA,IAAI+4D,KAAuB,GAAA;AACzB3xE,QAAAA,IAAAA,EAAMkD,yBAAyB6nD,IAAI;AACrC,KAAA,CAAA;IAEA,IAAI4d,QAAAA,CAASgJ,KAAK,EAAE;AACAhJ,QAAAA,IAAAA,qBAAAA,CAAAA;AAAlB,QAAA,IAAM0sD,aAAY1sD,qBAAAA,GAAAA,QAAAA,CAASgJ,KAAK,CAACA,KAAK,KAApBhJ,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAAA,CAAsBzvE,OAAO,CAAC,YAAY,KAAOf,CAAAA,CAAAA,WAAW,EAAGe,CAAAA,OAAO,CAAC,IAAM,EAAA,EAAA,CAAA,CAAA;QAE/Fy4E,KAAQ,GAAA,QAAA,CAAA,EAAA,EACHhJ,SAASgJ,KAAK,EAAA;YACjB3xE,IAAMkD,EAAAA,wBAAwB,CAACmyH,SAAmD,CAAA;;AAEpF,QAAA,IAAI1sD,QAASgJ,CAAAA,KAAK,CAACsU,WAAW,EAAE;YAC9B,IAAkBtd,2BAAAA,GAAAA,QAASgJ,CAAAA,KAAK,CAACsU,WAAW,EAArC91F,CAAWw4E,GAAAA,2BAAAA,CAAAA,CAAAA,CAAAA,EAARz9E,CAAQy9E,GAAAA,2BAAAA,CAAAA,CAAAA,CAAAA,EAALx0E,CAAKw0E,GAAAA,2BAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAElB,YAAA,IAAIx4E,CAAM,KAAA,CAAA,IAAKjF,CAAM,KAAA,CAAA,IAAKiJ,MAAM,CAAG,EAAA;gBACjC,OAAQw9E,MAA8BsU,WAAW,CAAA;AACnD,aAAA;AACF,SAAA;AACF,KAAA;IACA,IAAI34F,OAAAA,CAAQ+zG,eAAe,EAAE;AAC3B1vB,QAAAA,KAAAA,CAAMyxB,WAAW,GAAG6oB,sBAAuB3+H,CAAAA,OAAAA,CAAQ81G,WAAW,CAAA,CAAA;AAC9DzxB,QAAAA,KAAAA,CAAM0xB,WAAW,GAAG4oB,sBAAuB3+H,CAAAA,OAAAA,CAAQ+1G,WAAW,CAAA,CAAA;AAC9D1xB,QAAAA,KAAAA,CAAM2xB,WAAW,GAAG2oB,sBAAuB3+H,CAAAA,OAAAA,CAAQg2G,WAAW,CAAA,CAAA;AAChE,KAAA;IACA,IAAMxE,QAAAA,GAAWn2B,SAASm2B,QAAQ,CAAA;IAElC,IAAIA,QAAAA,CAASG,MAAM,IAAIH,QAAAA,CAASG,MAAM,CAACl1G,MAAM,GAAG,CAAG,EAAA;AACjD+0G,QAAAA,QAAAA,CAASG,MAAM,GAAGH,QAAAA,CAASG,MAAM,CAACplG,GAAG,CAAC,SAAC7J,CAAAA,EAAAA;mBAAW08H,mBAAoB18H,CAAAA,CAAAA,CAAAA,CAAAA;;AACxE,KAAA;IACA,IAAI8uG,QAAAA,CAASqB,YAAY,IAAIrB,QAAAA,CAASqB,YAAY,CAACp2G,MAAM,GAAG,CAAG,EAAA;AAC7D+0G,QAAAA,QAAAA,CAASqB,YAAY,GAAGrB,QAAAA,CAASqB,YAAY,CAACtmG,GAAG,CAAC,SAAC7J,CAAAA,EAAAA;mBAAW08H,mBAAoB18H,CAAAA,CAAAA,CAAAA,CAAAA;;AACpF,KAAA;IACA,IAAI8uG,QAAAA,CAASC,YAAY,EAAE;AACzBD,QAAAA,QAAAA,CAASC,YAAY,GAAGktB,sBAAuBntB,CAAAA,QAAAA,CAASC,YAAY,CAAA,CAAA;AACtE,KAAA;AAEA,IAAA,IAAM/lG,GAAuB,GAAA;AAC3B0wB,QAAAA,QAAAA,EAAUi/C,SAASj/C,QAAQ;QAC3BioD,KAAAA,EAAAA,KAAAA;AACAyyB,QAAAA,MAAAA,EAAQz7B,SAASy7B,MAAM;QACvBtF,QAAUA,EAAAA,QAAAA;QACVxxG,OAAS,EAAA;YACPo1G,aAAeupB,EAAAA,sBAAAA,CAAuB3+H,QAAQo1G,aAAa,CAAA;YAC3DN,WAAa,EAAA,CAAC,CAAC90G,OAAAA,CAAQ80G,WAAW;YAClCG,SAAW0pB,EAAAA,sBAAAA,CAAuB3+H,QAAQi1G,SAAS,CAAA;YACnDF,UAAY4pB,EAAAA,sBAAAA,CAAuB3+H,QAAQ+0G,UAAU,CAAA;YACrDC,UAAY2pB,EAAAA,sBAAAA,CAAuB3+H,QAAQg1G,UAAU,CAAA;YACrDE,UAAYypB,EAAAA,sBAAAA,CAAuB3+H,QAAQk1G,UAAU,CAAA;AACrDt3B,YAAAA,QAAAA,EAAU59E,QAAQ49E,QAAQ;YAC1Bu3B,UAAYwpB,EAAAA,sBAAAA,CAAuB3+H,QAAQm1G,UAAU,CAAA;YACrDtgB,UAAY4pC,EAAAA,qBAAAA,CAAsBz+H,OAAQ60F,CAAAA,UAAU,EAAE,IAAA,CAAA;AACtD8f,YAAAA,cAAAA,EAAgBgqB,sBAAuB3+H,CAAAA,OAAAA,CAAQ40G,aAAa,IAAI50G,QAAQ20G,cAAc,CAAA;AACtF9D,YAAAA,oBAAAA,EAAsB7wG,QAAQ6wG,oBAAoB;AACpD,SAAA;AACF,KAAA,CAAA;IAEA,IAAI7wG,OAAAA,CAAQw0G,eAAe,EAAE;AAC3B9oG,QAAAA,GAAAA,CAAI1L,OAAO,CAACy0G,cAAc,GAAGkqB,sBAAAA,CAAuB3+H,QAAQy0G,cAAc,CAAA,CAAA;AAC1E/oG,QAAAA,GAAAA,CAAI1L,OAAO,CAAC00G,cAAc,GAAGiqB,sBAAAA,CAAuB3+H,QAAQ00G,cAAc,CAAA,CAAA;AAC5E,KAAA;IAEA,IAAIppF,SAAAA,IAAaA,SAAUnI,CAAAA,IAAI,EAAE;AAC/BzX,QAAAA,GAAAA,CAAIglG,gBAAgB,GAAG;YACrBvtF,IAAM47G,EAAAA,eAAAA,CAAgBzzG,UAAUnI,IAAI,CAAA;AACtC,SAAA,CAAA;AACF,KAAA;IACA,IAAMmjF,gBAAAA,GAAmBjrB,SAASirB,gBAAgB,CAAA;AAElD,IAAA,IAAIA,gBAAkB,EAAA;QACpB,IAAIA,gBAAAA,CAAiBuB,YAAY,EAAE;AACjCn8F,YAAAA,GAAAA,CAAI46F,gBAAgB,GAAG;gBACrBuB,YAAc,EAAA,IAAA;gBACdhlG,CAAG87H,EAAAA,sBAAAA,CAAuBr4B,iBAAiBzjG,CAAC,CAAA;gBAC5CjF,CAAG+gI,EAAAA,sBAAAA,CAAuBr4B,iBAAiB1oG,CAAC,CAAA;AAC9C,aAAA,CAAA;SACK,MAAA;AACL8N,YAAAA,GAAAA,CAAI46F,gBAAgB,GAAG;gBACrB/kG,IAAMo9H,EAAAA,sBAAAA,CAAuBr4B,iBAAiB/kG,IAAI,CAAA;AACpD,aAAA,CAAA;AACF,SAAA;AACF,KAAA;AACA,IAAA,IAAMk/H,oBAAuBplD,GAAAA,QAAAA,CAASolD,oBAAoB,IAAI,EAAC,CAAA;IAC/D,IAAIuH,GAAAA,GAAMvH,qBAAqB9pF,iBAAiB,CAAA;AAEhD,IAAA,IAAIqxF,GAAK,EAAA;AACPA,QAAAA,GAAAA,GAAM7J,iBAAkB6J,CAAAA,GAAAA,CAAAA,CAAAA;KACnB,MAAA;QACLA,GAAMrsI,GAAAA,SAAAA,CAAAA;AACR,KAAA;AACA+P,IAAAA,GAAAA,CAAI4iG,oBAAoB,GAAG;AACzB5H,QAAAA,OAAAA,EAAS1mG,QAAQ0mG,OAAO;QACxBgI,mBAAqByvB,EAAAA,iBAAAA,CAAkBn+H,QAAQ62C,eAAe,CAAA;QAC9D+8D,UAAY+qB,EAAAA,sBAAAA,CAAuB3+H,QAAQ4zG,UAAU,CAAA;QACrDj9D,iBAAmBqxF,EAAAA,GAAAA;AACnBzwF,QAAAA,UAAAA,EAAYkpF,qBAAqBlpF,UAAU;QAC3C4+D,OAASwoB,EAAAA,sBAAAA,CAAuB8B,qBAAqBtqB,OAAO,CAAA;QAC5DC,OAASuoB,EAAAA,sBAAAA,CAAuB8B,qBAAqBrqB,OAAO,CAAA;QAC5DC,OAASsoB,EAAAA,sBAAAA,CAAuB8B,qBAAqBpqB,OAAO,CAAA;AAC5Dl/D,QAAAA,UAAAA,EAAYspF,qBAAqBtpF,UAAU;AAC3Cs/D,QAAAA,SAAAA,EAAWgqB,qBAAqBhqB,SAAS;QACzCH,QAAUqoB,EAAAA,sBAAAA,CAAuB8B,qBAAqBnqB,QAAQ,CAAA;QAC9DC,QAAUooB,EAAAA,sBAAAA,CAAuB8B,qBAAqBlqB,QAAQ,CAAA;QAC9DC,QAAUmoB,EAAAA,sBAAAA,CAAuB8B,qBAAqBjqB,QAAQ,CAAA;AAC9D7P,QAAAA,WAAAA,EAAa85B,qBAAqB95B,WAAW;AAC7CrqG,QAAAA,MAAAA,EAAQmkI,qBAAqBnkI,MAAM;QACnCsyG,UAAYuvB,EAAAA,iBAAAA,CAAkBsC,qBAAqB7xB,UAAU,CAAA;AAC/D,KAAA,CAAA;AACAywB,IAAAA,gBAAAA,CAAiB3zH,IAAI4iG,oBAAoB,CAAA,CAAA;IACzC,IAAM/H,oBAAAA,GAAuBlrB,SAASkrB,oBAAoB,CAAA;AAE1D,IAAA,IAAIA,oBAAsB,EAAA;AACxB76F,QAAAA,GAAAA,CAAI66F,oBAAoB,GAAG;AACzBsB,YAAAA,YAAAA,EAActB,qBAAqBsB,YAAY;AAC/C1wD,YAAAA,UAAAA,EAAYovD,qBAAqBpvD,UAAU;YAC3CtwC,CAAG83H,EAAAA,sBAAAA,CAAuBp4B,qBAAqBsB,YAAY,GAAGtB,qBAAqB1/F,CAAC,GAAG0/F,qBAAqB0hC,eAAe,CAAA;AAC7H,SAAA,CAAA;QACA,IAAI1hC,oBAAAA,CAAqBsB,YAAY,EAAE;AACrCn8F,YAAAA,GAAAA,CAAI66F,oBAAoB,CAAC3oG,CAAC,GAAGugI,iBAAAA,CAAkB53B,qBAAqB3oG,CAAC,CAAA,CAAA;AACrE8N,YAAAA,GAAAA,CAAI66F,oBAAoB,CAAC1jG,CAAC,GAAGs7H,iBAAAA,CAAkB53B,qBAAqB1jG,CAAC,CAAA,CAAA;AACvE,SAAA;AACF,KAAA;IACA,IAAMoyF,iBAAAA,GAAoB5Z,SAAS4Z,iBAAiB,CAAA;AAEpD,IAAA,IAAIA,iBAAmB,EAAA;QACrB,IAAMqS,GAAAA,GAAyB57F,GAAIupF,CAAAA,iBAAiB,GAAG;YACrD/b,OAASilD,EAAAA,iBAAAA,CAAkBlpC,kBAAkB/b,OAAO,CAAA;AACtD,SAAA,CAAA;QAEA,IAAI+b,iBAAAA,CAAkBhpF,KAAK,EAAE;AAC3Bq7F,YAAAA,GAAAA,CAAIr7F,KAAK,GAAG6yH,gBAAiB7pC,CAAAA,iBAAAA,CAAkBhpF,KAAK,CAAA,CAAA;AACtD,SAAA;AACF,KAAA;IACA,IAAMsiG,qBAAAA,GAAwBlzB,SAASkzB,qBAAqB,CAAA;AAE5D,IAAA,IAAIA,qBAAuB,EAAA;AACzB7iG,QAAAA,GAAAA,CAAI6iG,qBAAqB,GAAG;AAC1BhH,YAAAA,GAAAA,EAAKgH,sBAAsBhH,GAAG;AAC9BD,YAAAA,GAAAA,EAAKiH,sBAAsBjH,GAAG;AAC9B3+C,YAAAA,KAAAA,EAAO4lD,sBAAsB5lD,KAAK;AAClCw+C,YAAAA,OAAAA,EAASoH,sBAAsBpH,OAAO;YACtCnI,MAAQm/B,EAAAA,iBAAAA,CAAkB5vB,sBAAsBvP,MAAM,CAAA;YACtDqV,cAAgBkqB,EAAAA,2BAAAA,CAA4BhwB,qBAAsB8F,CAAAA,cAAc,EAAE,CAAA,CAAA;YAClFC,iBAAmBiqB,EAAAA,2BAAAA,CAA4BhwB,qBAAsB+F,CAAAA,iBAAiB,EAAE,CAAA,CAAA;AAC1F,SAAA,CAAA;AACF,KAAA;IACA,IAAM4zB,MAAAA,GAAS7sD,SAAS42B,MAAM,CAAA;AAE9B,IAAA,IAAIi2B,MAAQ,EAAA;AACVx8H,QAAAA,GAAAA,CAAIumG,MAAM,GAAG;YACXx7D,QAAUkoF,EAAAA,sBAAAA,CAAuBuJ,OAAOzxF,QAAQ,CAAA;AAChD48D,YAAAA,gBAAAA,EAAkB60B,OAAO70B,gBAAgB;AACzC0D,YAAAA,gBAAAA,EAAkBmxB,OAAOnxB,gBAAgB;AACzClW,YAAAA,qBAAAA,EAAuBqnC,OAAOrnC,qBAAqB;YACnDF,cAAgBw9B,EAAAA,iBAAAA,CAAkB+J,OAAOvnC,cAAc,CAAA;AACvDF,YAAAA,cAAAA,EAAgBynC,OAAOznC,cAAc,IAAIq+B,gBAAiBoJ,CAAAA,MAAAA,CAAOznC,cAAc,EAAE,KAAA,CAAA;AACjFrlC,YAAAA,QAAAA,EAAU8sE,OAAO9sE,QAAQ;AACzB65B,YAAAA,iBAAAA,EAAmBizC,OAAOjzC,iBAAiB,IAAI6pC,gBAAiBoJ,CAAAA,MAAAA,CAAOjzC,iBAAiB,EAAE,KAAA,CAAA;AAC1Fqe,YAAAA,oBAAAA,EAAsB40B,OAAO50B,oBAAoB;AACjD1yB,YAAAA,SAAAA,EAAWsnD,OAAOtnD,SAAS;AAC3BC,YAAAA,oBAAAA,EAAsBqnD,OAAOrnD,oBAAoB;AACjDsnD,YAAAA,WAAAA,EAAaD,OAAOC,WAAW;AAC/B30B,YAAAA,mBAAAA,EAAqB00B,OAAO10B,mBAAmB;AAC/CD,YAAAA,gBAAAA,EAAkB20B,OAAO30B,gBAAgB;AACzC5+C,YAAAA,OAAAA,EAASuzE,OAAOvzE,OAAO;AACvB8+C,YAAAA,qBAAAA,EAAuBy0B,OAAOz0B,qBAAqB;YACnDze,mBAAqB2pC,EAAAA,sBAAAA,CAAuBuJ,OAAOlzC,mBAAmB,CAAA;AACxE,SAAA,CAAA;AACF,KAAA;AACAtpF,IAAAA,GAAAA,CAAIumG,MAAM,IAAIotB,gBAAiB3zH,CAAAA,GAAAA,CAAIumG,MAAM,CAAA,CAAA;IACzC,IAAMzxB,WAAAA,GAAcnF,SAASmF,WAAW,CAAA;AAExC,IAAA,IAAIA,WAAa,EAAA;AACf90E,QAAAA,GAAAA,CAAI80E,WAAW,GAAG;AAChB1D,YAAAA,QAAAA,EAAU0D,YAAY1D,QAAQ;AAC9BvyC,YAAAA,MAAAA,EAAQi2C,YAAYj2C,MAAM;AAC1B4lE,YAAAA,QAAAA,EAAU3vB,YAAY2vB,QAAQ;AAChC,SAAA,CAAA;AACF,KAAA;IAEA,OAAOzkG,GAAAA,CAAAA;AACT;;ACtLO,SAAS08H,sBAAAA,CAAwBjtD,MAAW,EAAE7vD,SAA4B,EAAA;AAIvD6vD,IAAAA,IAAAA,iBAAAA,CAAAA;IAHxB,IAAM6a,GAAAA,GAAM7a,OAAOn7E,OAAO,CAAA;AAC1B,IAAA,IAAMygI,oBAAuBtlD,GAAAA,MAAAA,CAAOslD,oBAAoB,IAAI,EAAC,CAAA;AAC7D,IAAA,IAAMnyB,oBAA6C,GAAA;AACjDnrF,QAAAA,IAAAA,EAAM47G,iBAAgB5jD,iBAAAA,GAAAA,MAAAA,CAAO7vD,SAAS,KAAA,IAAA,GAAA,KAAA,CAAA,GAAhB6vD,kBAAkBh4D,IAAI,CAAA;AAC5CujF,QAAAA,OAAAA,EAAS1Q,IAAI0Q,OAAO;QACpBgI,mBAAqByvB,EAAAA,iBAAAA,CAAkBnoC,IAAIn/C,eAAe,CAAA;AAC1DxO,QAAAA,SAAAA,EAAW2tD,IAAI3tD,SAAS;AACxBurE,QAAAA,UAAAA,EAAY5d,IAAI4d,UAAU;AAC1Br8D,QAAAA,UAAAA,EAAYkpF,qBAAqBlpF,UAAU;QAC3C4+D,OAASgoB,EAAAA,iBAAAA,CAAkBsC,qBAAqBtqB,OAAO,CAAA;QACvDC,OAAS+nB,EAAAA,iBAAAA,CAAkBsC,qBAAqBrqB,OAAO,CAAA;QACvDC,OAAS8nB,EAAAA,iBAAAA,CAAkBsC,qBAAqBpqB,OAAO,CAAA;AACvDl/D,QAAAA,UAAAA,EAAYspF,qBAAqBtpF,UAAU;AAC3Cs/D,QAAAA,SAAAA,EAAWgqB,qBAAqBhqB,SAAS;QACzCH,QAAU6nB,EAAAA,iBAAAA,CAAkBsC,qBAAqBnqB,QAAQ,CAAA;QACzDC,QAAU4nB,EAAAA,iBAAAA,CAAkBsC,qBAAqBlqB,QAAQ,CAAA;QACzDC,QAAU2nB,EAAAA,iBAAAA,CAAkBsC,qBAAqBjqB,QAAQ,CAAA;QACzD7/D,iBAAmBwnF,EAAAA,iBAAAA,CAAkBsC,qBAAqB9pF,iBAAiB,CAAA;AAC7E,KAAA,CAAA;IAEA0oF,gBAAiB/wB,CAAAA,oBAAAA,CAAAA,CAAAA;AACjB,IAAA,IAAM5iG,GAAmB,GAAA;QACvB1L,OAAS,EAAA;YACP60F,UAAY2pC,EAAAA,eAAAA,CAAgBxoC,IAAInB,UAAU,CAAA;AAC5C,SAAA;QACAyZ,oBAAAA,EAAAA,oBAAAA;AACF,KAAA,CAAA;IAEA,IAAItY,GAAAA,CAAIif,SAAS,EAAE;AACjB3pF,QAAAA,SAAAA,CAAUtmB,KAAK,GAAG;AAACgxF,YAAAA,GAAAA,CAAIif,SAAS;AAAEjf,YAAAA,GAAAA,CAAIif,SAAS,IAAIjf,GAAIkf,CAAAA,UAAU,IAAI,CAAA,CAAA;AAAI,YAAA,CAAA;AAAE,SAAA,CAAA;AAC7E,KAAA;IACA,IAAIlf,GAAAA,CAAI4e,aAAa,EAAE;QACrB,IAAI,CAACtpF,SAAU1I,CAAAA,QAAQ,EAAE;AACvB0I,YAAAA,SAAAA,CAAU1I,QAAQ,GAAG;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAGozE,gBAAAA,GAAAA,CAAI4e,aAAa;AAAC,aAAA,CAAA;SACzC,MAAA;AACLtpF,YAAAA,SAAAA,CAAU1I,QAAQ,CAAC,CAAE,CAAA,IAAIozE,IAAI4e,aAAa,CAAA;AAC5C,SAAA;AACF,KAAA;IACA,IAAMrO,oBAAAA,GAAuBprB,OAAOorB,oBAAoB,CAAA;AAExD,IAAA,IAAIA,oBAAsB,EAAA;QACxB,IAAMjvD,GAAAA,GAA4B5rC,GAAI66F,CAAAA,oBAAoB,GAAG;AAC3DsB,YAAAA,YAAAA,EAActB,qBAAqBsB,YAAY;AAC/C1wD,YAAAA,UAAAA,EAAYovD,qBAAqBpvD,UAAU;AAC7C,SAAA,CAAA;QAEA,IAAIG,GAAAA,CAAIuwD,YAAY,EAAE;AACpBvwD,YAAAA,GAAAA,CAAIz0C,CAAC,GAAGs7H,iBAAkB53B,CAAAA,oBAAAA,CAAqB1jG,CAAC,CAAA,CAAA;AAChDy0C,YAAAA,GAAAA,CAAI15C,CAAC,GAAGugI,iBAAkB53B,CAAAA,oBAAAA,CAAqB3oG,CAAC,CAAA,CAAA;AAChD05C,YAAAA,GAAAA,CAAIzwC,CAAC,GAAGs3H,iBAAkB53B,CAAAA,oBAAAA,CAAqB1/F,CAAC,CAAA,CAAA;SAC3C,MAAA;AACLywC,YAAAA,GAAAA,CAAIzwC,CAAC,GAAGs3H,iBAAkB53B,CAAAA,oBAAAA,CAAqB0hC,eAAe,CAAA,CAAA;AAChE,SAAA;AACF,KAAA;IAEA,IAAMhzC,iBAAAA,GAAoB9Z,OAAO8Z,iBAAiB,CAAA;AAElD,IAAA,IAAIA,iBAAmB,EAAA;QACrB,IAAMqS,GAAAA,GAAyB57F,GAAIupF,CAAAA,iBAAiB,GAAG;YACrD/b,OAASilD,EAAAA,iBAAAA,CAAkBlpC,kBAAkB/b,OAAO,CAAA;AACtD,SAAA,CAAA;QAEA,IAAI+b,iBAAAA,CAAkBhpF,KAAK,EAAE;AAC3Bq7F,YAAAA,GAAAA,CAAIr7F,KAAK,GAAG6yH,gBAAiB7pC,CAAAA,iBAAAA,CAAkBhpF,KAAK,CAAA,CAAA;AACtD,SAAA;AACF,KAAA;IACA,IAAMq6F,gBAAAA,GAAmBnrB,OAAOmrB,gBAAgB,CAAA;AAEhD,IAAA,IAAIA,gBAAkB,EAAA;AACpB56F,QAAAA,GAAAA,CAAI46F,gBAAgB,GAAG;AACrBuB,YAAAA,YAAAA,EAAcvB,iBAAiBuB,YAAY;YAC3CtmG,IAAM48H,EAAAA,iBAAAA,CAAkB73B,iBAAiB/kG,IAAI,CAAA;YAC7CsB,CAAGs7H,EAAAA,iBAAAA,CAAkB73B,iBAAiBzjG,CAAC,CAAA;YACvCjF,CAAGugI,EAAAA,iBAAAA,CAAkB73B,iBAAiB1oG,CAAC,CAAA;YACvCiJ,CAAGs3H,EAAAA,iBAAAA,CAAkB73B,iBAAiBz/F,CAAC,CAAA;AACzC,SAAA,CAAA;AACF,KAAA;IAEA,OAAO6E,GAAAA,CAAAA;AACT,CAAA;AAEO,SAAS28H,wBAAAA,CAA0BltD,MAAW,EAAE7vD,SAA4B,EAAA;IACjF,IAAM5f,GAAAA,GAAM08H,uBAAuBjtD,MAAQ7vD,EAAAA,SAAAA,CAAAA,CAAAA;IAC3C,IAAMg9G,MAAAA,GAASntD,OAAOozB,qBAAqB,CAAA;AAE3C,IAAA,IAAI+5B,MAAQ,EAAA;AACV58H,QAAAA,GAAAA,CAAI6iG,qBAAqB,GAAG;AAC1BhH,YAAAA,GAAAA,EAAK+gC,OAAO/gC,GAAG;AACfD,YAAAA,GAAAA,EAAKghC,OAAOhhC,GAAG;YACf3+C,KAAO2/E,EAAAA,MAAAA,CAAO3/E,KAAK,IAAIhtD,SAAAA;AACvBwrG,YAAAA,OAAAA,EAASmhC,OAAOnhC,OAAO;AACzB,SAAA,CAAA;AACF,KAAA;IACAz7F,GAAI0wB,CAAAA,QAAQ,GAAG++C,MAAAA,CAAO/+C,QAAQ,CAAA;IAC9B,IAAI++C,MAAAA,CAAO27B,MAAM,EAAE;QACjBprG,GAAIorG,CAAAA,MAAM,GAAG37B,MAAAA,CAAO27B,MAAM,CAAA;AAC5B,KAAA;IACA,IAAI37B,MAAAA,CAAOqF,WAAW,EAAE;QACtB90E,GAAI80E,CAAAA,WAAW,GAAGrF,MAAAA,CAAOqF,WAAW,CAAA;AACtC,KAAA;IAEA,OAAO90E,GAAAA,CAAAA;AACT;;AC1FA,IAAMq4D,SAAU,GAAA,QAAA,CAAA;AAChB,IAAMvgB,EAAK,GAAA,qCAAA,CAAA;AACX,IAAM+kF,eAAkB,GAAA,gBAAA,CAAA;AACxB,IAAIC,eAAkB,GAAA,KAAA,CAAA;AAEf,SAASC,gBAAiBpH,IAAS,EAAA;AACxC,IAAA,IAAI,CAACA,IAAAA,IAAQ,OAAOA,IAAAA,KAAS,QAAU,EAAA;AACrC,QAAA,MAAM,IAAIriI,KAAM,CAAA,wCAAA,CAAA,CAAA;AAClB,KAAA;;AAGA,IAAA,IAAI0pI,oBAAoBrH,IAAO,CAAA,EAAA;AACaA,QAAAA,IAAAA,mBAAAA,CAAAA;AAA1C/8H,QAAAA,OAAAA,CAAQ+L,IAAI,CAAC,4BAAC,IAAA,CAA4BgxH,mBAAAA,GAAAA,IAAAA,CAAKsH,aAAa,KAAA,IAAA,GAAA,KAAA,CAAA,GAAlBtH,mBAAoBuH,CAAAA,GAAG,CAAC,GAAA,4BAAA,GAA4B7kE,SAAQ,GAAA,4CAAA,CAAA,CAAA;AACxG,KAAA;;IAGAu9D,kBAAmBD,CAAAA,IAAAA,CAAAA,CAAAA;AAEnB,IAAA,IAAI79E,EAAG13C,CAAAA,IAAI,CAACu1H,IAAAA,CAAKt9D,OAAO,CAAG,EAAA;AACP,QAAA,IAAA,KAAA,CAAA;AAAlBykE,QAAAA,eAAAA,GAAkB,CAAA,CAAA,KAAA,GAAA,QAAC,CAAU38H,IAAI,CAACw1H,IAAKt9D,CAAAA,OAAO,CAA5B,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAA+B,CAAC,CAAA,CAAE,MAAK,GAAA,CAAA;AAEzD,QAAA,OAAOi/D,mBACLT,kBACEL,CAAAA,kBAAAA,CACEF,mBACEL,kBACEqD,CAAAA,kBAAAA,CACE5D,mBACEyH,qBAAsBxH,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACtC,KAAA;IAEAmH,eAAkB,GAAA,KAAA,CAAA;AAElB,IAAA,IAAIM,KAAKP,eAAgB18H,CAAAA,IAAI,CAACw1H,IAAKt9D,CAAAA,OAAO,KAAK,EAAE,CAAA;AACjD,IAAA,IAAIglE,WAAcrnI,GAAAA,MAAAA,CAAOonI,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAC9B,IAAA,IAAIE,YAAetnI,GAAAA,MAAAA,CAAOonI,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;AAE/B,IAAA,IAAIC,WAAa,EAAA;AACf,QAAA,IAAIA,WAAc,GAAA,CAAA,IAAMA,WAAgB,KAAA,CAAA,IAAKC,eAAe,CAAI,EAAA;AAC9D3H,YAAAA,IAAAA,GAAOqF,kBAAmBrF,CAAAA,IAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAI0H,cAAc,CAAG,EAAA;AACnB1H,YAAAA,IAAAA,GAAO2D,mBAAmB5D,kBAAmBC,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAC/C,SAAA;;AAEAyH,QAAAA,EAAAA,GAAKP,gBAAgB18H,IAAI,CAACw1H,IAAKt9D,CAAAA,OAAO,KAAK,EAAE,CAAA;QAC7CglE,WAAcrnI,GAAAA,MAAAA,CAAOonI,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;QAC1BE,YAAetnI,GAAAA,MAAAA,CAAOonI,EAAE,CAAC,CAAE,CAAA,CAAA,CAAA;;AAE3B,QAAA,IAAIC,cAAc,CAAG,EAAA;AACnB,YAAA,IAAIC,eAAe,CAAG,EAAA;AACpB3H,gBAAAA,IAAAA,GAAOM,kBAAmBN,CAAAA,IAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACA,YAAA,IAAI2H,eAAe,CAAG,EAAA;AACpB3H,gBAAAA,IAAAA,GAAOW,kBAAmBX,CAAAA,IAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACA,YAAA,IAAI2H,eAAe,CAAG,EAAA;AACpB3H,gBAAAA,IAAAA,GAAOa,kBAAmBb,CAAAA,IAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACA,YAAA,IAAI2H,eAAe,CAAG,EAAA;AACpB3H,gBAAAA,IAAAA,GAAOkB,kBAAmBlB,CAAAA,IAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACA,YAAA,IAAI2H,eAAe,CAAG,EAAA;AACpB3H,gBAAAA,IAAAA,GAAO2B,kBAAmB3B,CAAAA,IAAAA,CAAAA,CAAAA;AAC5B,aAAA;AACF,SAAA;QAEA,OAAOA,IAAAA,CAAAA;AACT,KAAA;AAEA,IAAA,MAAM,IAAIriI,KAAM,CAAC,wBAAwBqiI,GAAAA,IAAAA,CAAKt9D,OAAO,GAAC,GAAA,CAAA,CAAA;AACxD,CAAA;AAEA,IAAIklE,cAAAA,GAAmC1zH,gBAAgB,CAAC,KAAM,CAAA,CAAA;AAE9D,SAASszH,sBAAuBxH,IAAS,EAAA;AAInCA,IAAAA,IAAAA,UAAAA,CAAAA;IAHJ4H,cAAiB1zH,GAAAA,gBAAgB,CAAC,KAAM,CAAA,CAAA;AACxC,IAAA,IAAMnC,OAAUiuH,GAAAA,IAAAA,CAAKjuH,OAAO,IAAI,EAAE,CAAA;AAElC,IAAA,IAAA,CAAIiuH,aAAAA,IAAK1uE,CAAAA,IAAI,KAAT0uE,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,UAAAA,CAAW5kI,MAAM,EAAE;QACrBwsI,cAAiB1zH,GAAAA,gBAAgB,CAAC,KAAM,CAAA,CAAA;AAC1C,KAAA;IACA,IAAM2zH,QAAAA,GAAqB,CAAC7H,IAAAA,CAAK6H,QAAQ,IAAI,EAAE,EAAExpI,KAAK,EAAA,CAAA;AACtD,IAAA,IAAMimI,SAAStE,IAAKsE,CAAAA,MAAM,CAACp5H,GAAG,CAAC,SAAC0kD,GAAUzwD,EAAAA,KAAAA,EAAAA;AAAkB2oI,QAAAA,OAAAA,gBAAAA,CAAiBl4E,GAAKzwD,EAAAA,KAAAA,EAAO6gI,IAAK+H,CAAAA,SAAS,IAAI,EAAE,CAAA,CAAA;;IAC7G,IAAMx9E,QAAAA,GAAWy1E,KAAKz1E,QAAQ,IAAI+5E,OAAOp5H,GAAG,CAAC,SAAC0kD,GAAUj0D,EAAAA,CAAAA,EAAAA;AAAe,QAAA,OAAA;YAAEkjB,MAAQljB,EAAAA,CAAAA;YAAG43D,KAAO,EAAA,IAAA;AAAK,SAAA,CAAA;;AAM/EysE,IAAAA,IAAAA,mBAAAA,CAAAA;AALjB,IAAA,IAAM31H,GAAuB,GAAA;QAC3B0H,OAASA,EAAAA,OAAAA;QACTuwE,MAAQ09C,EAAAA,IAAAA,CAAK19C,MAAM,IAAI,EAAE;QACzBjxE,IAAM,EAAA,IAAA;QACNqxD,OAASklE,EAAAA,cAAAA;AACTN,QAAAA,aAAAA,EAAetH,CAAAA,mBAAAA,GAAAA,IAAKsH,CAAAA,aAAa,YAAlBtH,mBAAsB,GAAA;YACnCuH,GAAK,EAAA,EAAA;YACL1oI,MAAQ,EAAA,EAAA;AACV,SAAA;QACA0zE,aAAeytD,EAAAA,IAAAA,CAAKztD,aAAa,GAAG,EAAA;AACpCD,QAAAA,YAAAA,EAAc0tD,IAAK1tD,CAAAA,YAAY,CAACpnE,GAAG,CAAC,SAAC6H,IAAAA,EAAAA;AAAci1H,YAAAA,OAAAA,sBAAAA,CAAuBj1H,IAAM,EAAA;gBAAEhB,OAAAA,EAAAA,OAAAA;gBAAS81H,QAAAA,EAAAA,QAAAA;AAAS,aAAA,CAAA,CAAA;;QACpGvD,MAAAA,EAAAA,MAAAA;AACA2D,QAAAA,QAAAA,EAAUjI,KAAKkI,KAAK;AACpBC,QAAAA,QAAAA,EAAUnI,KAAKmI,QAAQ;AACvBvD,QAAAA,MAAAA,EAAQ5E,KAAK4E,MAAM;AACnBiD,QAAAA,QAAAA,EAAU7H,KAAK6H,QAAQ;QACvBt9E,QAAAA,EAAAA,QAAAA;QACA+G,IAAM,EAAC0uE,CAAAA,IAAK1uE,CAAAA,IAAI,IAAI,EAAC,EAAGjzD,KAAK,EAAA;AAC/B,KAAA,CAAA;IAEA,IAAI2hI,IAAAA,CAAKzuD,SAAS,EAAE;QACjBlnE,GAAYknE,CAAAA,SAAS,GAAGyuD,IAAAA,CAAKzuD,SAAS,CAAA;AACzC,KAAA;IAEA,OAAOlnE,GAAAA,CAAAA;AACT,CAAA;AAEO,SAASy9H,gBAAkB16H,CAAAA,KAAU,EAAEjO,KAAa,EAAE4oI,SAAwB,EAAA;IACnF,IAAM51D,WAAAA,GAAc41D,SAAS,CAAC5oI,KAAM,CAAA,CAAA;IAEpC,IAAI,OAAOiO,UAAU,QAAU,EAAA;QAC7B,OAAO;YACLuN,EAAItK,EAAAA,YAAAA,EAAAA;YACJ8hE,WAAAA,EAAAA,WAAAA;YACAzkB,GAAKtgD,EAAAA,KAAAA;AACP,SAAA,CAAA;KACK,MAAA,IAAIA,KAAMg7H,CAAAA,QAAQ,EAAE;QACzB,OAAO;YACLztH,EAAItK,EAAAA,YAAAA,EAAAA;AACJq9C,YAAAA,GAAAA,EAAKtgD,MAAMsgD,GAAG;AACd06E,YAAAA,QAAAA,EAAUh7H,MAAMg7H,QAAQ;AACxBn5E,YAAAA,IAAAA,EAAM7hD,MAAM6hD,IAAI;YAChBkjB,WAAAA,EAAAA,WAAAA;AACF,SAAA,CAAA;KACK,MAAA,IAAI/kE,KAAMmoD,CAAAA,UAAU,EAAE;QAC3B,OAAO;YACL56C,EAAItK,EAAAA,YAAAA,EAAAA;AACJq9C,YAAAA,GAAAA,EAAKtgD,MAAMsgD,GAAG;;YAEd6H,UAAY,EAAA;gBACV8yE,IAAMj7H,EAAAA,KAAAA,CAAMmoD,UAAU,CAAC+yE,OAAO;gBAC9BC,KAAOn7H,EAAAA,KAAAA,CAAMmoD,UAAU,CAACizE,GAAG;AAC7B,aAAA;AACAv5E,YAAAA,IAAAA,EAAM7hD,MAAM6hD,IAAI;YAChBkjB,WAAAA,EAAAA,WAAAA;AACF,SAAA,CAAA;KACK,MAAA,IAAI/kE,KAAMsgD,CAAAA,GAAG,EAAE;QACpB,OAAO;YACL/yC,EAAItK,EAAAA,YAAAA,EAAAA;AACJq9C,YAAAA,GAAAA,EAAKtgD,MAAMsgD,GAAG;AACduB,YAAAA,IAAAA,EAAM7hD,MAAM6hD,IAAI;YAChBkjB,WAAAA,EAAAA,WAAAA;AACF,SAAA,CAAA;AACF,KAAA,MAAO,IAAI/kE,KAAAA,IAASA,KAAMwlB,CAAAA,UAAU,EAAE;QACpC,OAAOxlB,KAAAA,CAAAA;AACT,KAAA;AACA,IAAA,MAAM,IAAIzP,KAAM,CAAA,qBAAA,CAAA,CAAA;AAClB,CAAA;AAEO,SAASqqI,sBAAAA,CAAwBt1H,WAAgB,EAAEiiF,GAAqD,EAAA;IAArDA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAAmD,EAAC,CAAA;AAc1FjiF,IAAAA,IAAAA,iBAAAA,CAAAA;AAblB,IAAA,IAAMrI,GAAmB,GAAA;QACvBsQ,EAAIjI,EAAAA,WAAAA,CAAYiI,EAAE,GAAG,EAAA;QACrBu4B,MAAQ,EAAA,QAAA,CAAA;YAAE3B,QAAU/7B,EAAAA,uBAAAA;AAA4B9C,SAAAA,EAAAA,WAAAA,CAAYwgC,MAAM,CAAA;AAClEv2B,QAAAA,QAAAA,EAAUjK,YAAYiK,QAAQ;AAC9B+1D,QAAAA,WAAAA,EAAahgE,YAAYggE,WAAW;AACpC7wB,QAAAA,KAAAA,EAAOnvC,WAAYmvC,CAAAA,KAAK,CAAC32C,GAAG,CAAC,SAAC3L,IAAAA,EAAAA;AAAckpI,YAAAA,OAAAA,eAAAA,CAAgBlpI,IAAMo1F,EAAAA,GAAAA,CAAAA,CAAAA;;AAClE/2F,QAAAA,IAAAA,EAAM8U,YAAY9U,IAAI;AACxB,KAAA,CAAA;AACA,IAAA,IAAMwzE,SAAY1+D,GAAAA,WAAAA,CAAY0+D,SAAS,IAAI1+D,YAAYg2H,EAAE,CAAA;AAEzD,IAAA,IAAIt3D,SAAW,EAAA;AACb/mE,QAAAA,GAAAA,CAAI+mE,SAAS,GAAGA,SAAAA,CAAAA;AAClB,KAAA;AACA,IAAA,IAAIu3D,eAAcj2H,iBAAAA,GAAAA,WAAAA,CAAYyuC,IAAI,KAAA,IAAA,GAAA,KAAA,CAAA,GAAhBzuC,kBAAkBi2H,WAAW,CAAA;AAE/C,IAAA,IAAIA,WAAeA,IAAAA,WAAW,CAAC,CAAA,CAAE,KAAKA,WAAW,CAAC,CAAA,CAAE,IAAIA,WAAW,CAAC,CAAA,CAAE,KAAK,CAAG,EAAA;QAC5EA,WAAcruI,GAAAA,SAAAA,CAAAA;AAChB,KAAA;AACA,IAAA,IAAIquI,WAAa,EAAA;AACft+H,QAAAA,GAAAA,CAAIs+H,WAAW,GAAGA,WAAAA,CAAAA;AACpB,KAAA;IAEA,OAAOt+H,GAAAA,CAAAA;AACT,CAAA;AAEA,IAAMyjC,QAAW,GAAA;AAAC,IAAA,CAAA;AAAG,IAAA,CAAA;AAAG,IAAA,CAAA;AAAG,IAAA,CAAA;AAAE,CAAA,CAAA;AAC7B,IAAM86F,SAAY,GAAA,GAAA,CAAA;AAEX,SAASH,eAAAA,CAAiBlpI,IAAS,EAAEo1F,GAAqD,EAAA;IAArDA,IAAAA,GAAAA,KAAAA,KAAAA,CAAAA,EAAAA,MAAmD,EAAC,CAAA;AAqD1F9b,IAAAA,IAAAA,iBAAAA,CAAAA;IApDJ,IAAIxnE,IAAAA,GAA0BsD,SAASzG,IAAI,CAAA;IAC3C,IAAI+b,SAAAA,CAAAA;IACJ,IAAI4+G,aAAAA,CAAAA;IACJ,IAAIhwD,OAAAA,CAAAA;IACJ,IAAInG,WAAAA,GAA2BnzE,KAAKmzE,WAAW,CAAA;IAC/C,IAAIP,WAAAA,CAAAA;IACJ,IAAIwyD,UAAAA,CAAAA;AACJ,IAAA,IAAIhoH,QAAWuiC,GAAAA,GAAAA,CAAAA;IACf,IAAIwlF,EAAAA,CAAAA;IAEJ,IAAInlI,IAAAA,CAAKs5E,OAAO,EAAE;AAChBxnE,QAAAA,IAAAA,GAAO9R,IAAK8R,CAAAA,IAAI,IAAIsD,QAAAA,CAASrC,MAAM,CAAA;AACnCoyH,QAAAA,EAAAA,GAAKnlI,KAAKmlI,EAAE,CAAA;AACZC,QAAAA,UAAAA,GAAaplI,KAAKolI,UAAU,CAAA;AAC5B9rD,QAAAA,OAAAA,GAAUt5E,KAAKs5E,OAAO,CAAA;AACtBgwD,QAAAA,aAAAA,GAAgBtpI,KAAKs5E,OAAO,CAAA;QAC5B,IAAIv4E,KAAAA,CAAMokI,EAAO,CAAA,IAAA,CAACC,UAAY,EAAA;YAC5BA,UAAa9rD,GAAAA,OAAAA,CAAQl6E,OAAO,CAAC0S,IAAI,CAAA;AACnC,SAAA;QACA,IAAI9R,IAAAA,CAAKod,QAAQ,EAAE;AACjBA,YAAAA,QAAAA,GAAWpd,KAAKod,QAAQ,CAAA;AAC1B,SAAA;AACAsN,QAAAA,SAAAA,GAAY1qB,IAAK0qB,CAAAA,SAAS,IAAImY,YAAAA,CAAaymG,cAAc5+G,SAAS,CAAA,CAAA;KAC7D,MAAA,IAAI1qB,IAAKy6E,CAAAA,QAAQ,EAAE;AACxB3oE,QAAAA,IAAAA,GAAOsD,SAASqlE,QAAQ,CAAA;AACxB6uD,QAAAA,aAAAA,GAAgBtpI,KAAKy6E,QAAQ,CAAA;AAC7B/vD,QAAAA,SAAAA,GAAYmY,YAAaymG,CAAAA,aAAAA,CAAc5+G,SAAS,EAAEk9G,eAAiB,EAAA,IAAA,CAAA,CAAA;AACnEtuD,QAAAA,OAAAA,GAAU4tD,0BAA2BoC,CAAAA,aAAAA,CAAAA,CAAAA;KAChC,MAAA,IAAItpI,IAAKu6E,CAAAA,MAAM,EAAE;AACtBzoE,QAAAA,IAAAA,GAAOsD,SAASmlE,MAAM,CAAA;AACtB+uD,QAAAA,aAAAA,GAAgBtpI,KAAKu6E,MAAM,CAAA;AAC3B7vD,QAAAA,SAAAA,GAAYmY,YAAaymG,CAAAA,aAAAA,CAAc5+G,SAAS,EAAE,KAAO,EAAA,IAAA,CAAA,CAAA;AACzD4uD,QAAAA,OAAAA,GAAUmuD,yBAAyB6B,aAAe5+G,EAAAA,SAAAA,CAAAA,CAAAA;KAC7C,MAAA,IAAI1qB,IAAKupI,CAAAA,GAAG,EAAE;AACnBz3H,QAAAA,IAAAA,GAAOsD,SAASulE,IAAI,CAAA;AACpB2uD,QAAAA,aAAAA,GAAgBtpI,KAAKupI,GAAG,CAAA;AACxB7+G,QAAAA,SAAAA,GAAYmY,YAAaymG,CAAAA,aAAAA,CAAc5+G,SAAS,EAAE,KAAO,EAAA,IAAA,CAAA,CAAA;AACzD4uD,QAAAA,OAAAA,GAAUkuD,uBAAuB8B,aAAe5+G,EAAAA,SAAAA,CAAAA,CAAAA;KAC3C,MAAA,IAAI1qB,IAAK2/E,CAAAA,EAAE,EAAE;AAClB7tE,QAAAA,IAAAA,GAAOsD,SAASowH,QAAQ,CAAA;AACxB8D,QAAAA,aAAAA,GAAgBtpI,KAAK2/E,EAAE,CAAA;QACvBj1D,SAAYmY,GAAAA,YAAAA,CAAaymG,cAAc5+G,SAAS,CAAA,CAAA;AAChD4uD,QAAAA,OAAAA,GAAU+mD,0BAA2BiJ,CAAAA,aAAAA,CAAAA,CAAAA;AACrC5+G,QAAAA,SAAAA,CAAUtmB,KAAK,GAAG;YAACklI,aAAclqI,CAAAA,OAAO,CAAC0O,KAAK,IAAI,CAAA;YAAGw7H,aAAclqI,CAAAA,OAAO,CAAC2O,MAAM,IAAI,CAAA;AAAG,YAAA,CAAA;AAAE,SAAA,CAAA;KACrF,MAAA,IAAI/N,IAAK8yC,CAAAA,KAAK,EAAE;AACrBw2F,QAAAA,aAAAA,GAAgBtpI,KAAK8yC,KAAK,CAAA;AAC1B,QAAA,IAAI9yC,KAAK8yC,KAAK,CAAC1zC,OAAO,CAAC0S,IAAI,KAAK,CAAG,EAAA;AACjCA,YAAAA,IAAAA,GAAOsD,SAASu+B,MAAM,CAAA;YACtBjpB,SAAYmY,GAAAA,YAAAA,CAAaymG,cAAc5+G,SAAS,CAAA,CAAA;AAChD4uD,YAAAA,OAAAA,GAAUsmD,wBAAyB0J,CAAAA,aAAAA,CAAAA,CAAAA;AACrC,SAAA;AACF,KAAA;AACA,IAAA,IAAA,CAAIhwD,oBAAAA,OAAQ99C,CAAAA,QAAQ,KAAhB89C,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAAA,CAAkBj4C,MAAM,EAAE;AAC5B,QAAA,IAAMA,SAAS,IAAIwT,YAAAA,CAAaykC,OAAQ99C,CAAAA,QAAQ,CAAC6F,MAAM,CAAA,CAAA;QAEvD,IAAIA,MAAM,CAAC,CAAE,CAAA,IAAIgoG,aAAahoG,MAAM,CAAC,CAAE,CAAA,IAAIgoG,SAAW,EAAA;YACpD,OAAO/vD,OAAAA,CAAQ99C,QAAQ,CAAC6F,MAAM,CAAA;SACzB,MAAA,IAAI+zD,GAAIkzC,CAAAA,QAAQ,EAAE;YACvBhL,MAAOloC,CAAAA,GAAAA,CAAIkzC,QAAQ,EAAE,QAAA,CAAA,CAAA;AACvB,SAAA;AACF,KAAA;AACA,IAAA,IAAIgB,aAAe,EAAA;AACDA,QAAAA,IAAAA,sBAAAA,CAAAA;AAAhB,QAAA,IAAMtzB,WAAUszB,sBAAAA,GAAAA,aAAAA,CAAclqI,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAArBkqI,uBAAuBtzB,OAAO,CAAA;AAE9C,QAAA,IAAIA,OAAS,EAAA;YACX,IAAInyG,KAAAA,CAAMkM,OAAO,CAACimG,OAAU,CAAA,EAAA;gBAC1B7iC,WAAc6iC,GAAAA,OAAO,CAAC,CAAE,CAAA,GAAGz/F,YAAY49D,OAAO,GAAG59D,YAAYwqD,OAAO,CAAA;aAC/D,MAAA;AACLoS,gBAAAA,WAAAA,GAAc58D,YAAY49D,OAAO,CAAA;AACnC,aAAA;SACK,MAAA;AACwBm1D,YAAAA,IAAAA,uBAAAA,CAAAA;YAA7Bn2D,WAAcA,GAAAA,WAAAA,KAAem2D,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,CAAAA,uBAAAA,GAAAA,aAAelqI,CAAAA,OAAO,qBAAtBkqI,uBAAwBn2D,CAAAA,WAAW,CAAI58D,IAAAA,WAAAA,CAAYwqD,OAAO,CAAA;AACzF,SAAA;AACA,QAAA,IAAIuoE,aAAclqI,CAAAA,OAAO,CAACwzE,WAAW,EAAE;YACrCA,WAAc02D,GAAAA,aAAAA,CAAclqI,OAAO,CAACwzE,WAAW,CAAA;AACjD,SAAA;AACA,QAAA,IAAI7xE,MAAMqc,QAAW,CAAA,EAAA;YACnBA,QAAWksH,GAAAA,aAAAA,CAAclqI,OAAO,CAACge,QAAQ,CAAA;AAC3C,SAAA;AACF,KAAA;AAEA,IAAA,IAAMtS,GAAgB,GAAA;QACpBgH,IAAAA,EAAAA,IAAAA;AACAzT,QAAAA,IAAAA,EAAM2B,KAAK3B,IAAI;AACfsrG,QAAAA,KAAAA,EAAO3pG,KAAK2pG,KAAK;QACjBvsF,QAAAA,EAAAA,QAAAA;QACAhC,EAAIpb,EAAAA,IAAAA,CAAKob,EAAE,GAAG,EAAA;;QAEdsP,SAAAA,EAAAA,SAAAA;QACAyoD,WAAAA,EAAAA,WAAAA;;QAEAP,WAAAA,EAAAA,WAAAA;QACA0G,OAAAA,EAAAA,OAAAA;AACF,KAAA,CAAA;;AAGA,IAAA,IAAI8rD,UAAY,EAAA;QACd,IAAIhwC,GAAAA,CAAI5iF,OAAO,EAAE;YACf8qH,MAAOloC,CAAAA,GAAAA,CAAI5iF,OAAO,EAAE4yH,UAAAA,CAAAA,CAAAA;AACpBt6H,YAAAA,GAAAA,CAAIq6H,EAAE,GAAG/vC,GAAAA,CAAI5iF,OAAO,CAAC3S,OAAO,CAACulI,UAAAA,CAAAA,CAAAA;SACxB,MAAA;AACLt6H,YAAAA,GAAAA,CAAIs6H,UAAU,GAAGA,UAAAA,CAAAA;AACnB,SAAA;;AAEF,KAAA,MAAO,IAAItkI,MAAAA,CAAOo0C,SAAS,CAACiwF,EAAK,CAAA,EAAA;;AAE/Br6H,QAAAA,GAAAA,CAAIq6H,EAAE,GAAGA,EAAAA,CAAAA;AACX,KAAA;IACA,IAAInlI,IAAAA,CAAKw3E,QAAQ,EAAE;AACjB1sE,QAAAA,GAAAA,CAAI0sE,QAAQ,GAAGx3E,IAAKw3E,CAAAA,QAAQ,GAAG,EAAA,CAAA;AACjC,KAAA;IAEA,OAAO1sE,GAAAA,CAAAA;AAEP,IAAA,SAAS+3B,YAAc2mG,CAAAA,eAAkC,EAAEC,eAAyB,EAAEC,WAAqB,EAAA;AACzG,QAAA,IAAIF,eAAiB,EAAA;AACnB,YAAA,IAAM9+G,YAA+B,EAAC,CAAA;YACtC,IAAM1I,QAAAA,GAAWwnH,gBAAgBxnH,QAAQ,CAAA;AAEzC,YAAA,IAAIA,QAAU,EAAA;AACZ,gBAAA,IAAIynH,eAAiB,EAAA;AACnB/+G,oBAAAA,SAAAA,CAAU1I,QAAQ,GAAG;wBAAC,CAACA,QAAQ,CAAC,CAAE,CAAA;wBAAE,CAACA,QAAQ,CAAC,CAAE,CAAA;wBAAE,CAACA,QAAQ,CAAC,CAAE,CAAA;AAAC,qBAAA,CAAA;iBAC1D,MAAA;AACL0I,oBAAAA,SAAAA,CAAU1I,QAAQ,GAAG;AAACA,wBAAAA,QAAQ,CAAC,CAAE,CAAA;AAAEA,wBAAAA,QAAQ,CAAC,CAAE,CAAA;AAAEA,wBAAAA,QAAQ,CAAC,CAAE,CAAA;AAAC,qBAAA,CAAA;AAC9D,iBAAA;AACA,gBAAA,IAAI0nH,WAAa,EAAA;AACf,oBAAA,IAAMtiI,IAAIu3H,mBAAoBpwF,CAAAA,QAAAA,EAAU7jB,SAAU1I,CAAAA,QAAQ,CAAC,CAAE,CAAA,EAAE0I,SAAU1I,CAAAA,QAAQ,CAAC,CAAE,CAAA,EAAE0I,SAAU1I,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAA,CAAA;AAE3G0I,oBAAAA,SAAAA,CAAU1I,QAAQ,GAAG48G,mBAAoB,CAAA,EAAE,EAAEx3H,CAAAA,CAAAA,CAAAA;AAC/C,iBAAA;AACF,aAAA;YACA,IAAM2a,QAAAA,GAAWynH,gBAAgBznH,QAAQ,CAAA;AAEzC,YAAA,IAAIA,QAAU,EAAA;gBACZ2I,SAAU3I,CAAAA,QAAQ,GAAGynH,eAAAA,CAAgBznH,QAAQ,CAAA;AAC/C,aAAA;AACA,YAAA,IAAIle,KAAMkM,CAAAA,OAAO,CAACy5H,eAAAA,CAAgBplI,KAAK,CAAG,EAAA;AACxCsmB,gBAAAA,SAAAA,CAAUtmB,KAAK,GAAG;oBAAColI,eAAgBplI,CAAAA,KAAK,CAAC,CAAA,CAAE,IAAI,CAAA;oBAAGolI,eAAgBplI,CAAAA,KAAK,CAAC,CAAA,CAAE,IAAI,CAAA;oBAAGolI,eAAgBplI,CAAAA,KAAK,CAAC,CAAA,CAAE,IAAI,CAAA;AAAE,iBAAA,CAAA;AACjH,aAAA;YAEA,OAAOsmB,SAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,OAAO,EAAC,CAAA;AACV,KAAA;AACF,CAAA;AAEA;;IAGA,SAASo9G,oBAAqBrH,IAAe,EAAA;IAC3C,IAAqBA,IAAAA,GAAAA,KAAKsH,aAAa,IAAI,EAAtBtH,EAAAA,QAAAA,GAAAA,IAAAA,CAAbuH,KAAAA,GAAM,GAAA,QAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAA,CAAA;AAEd,IAAA,IAAIA,GAAK,EAAA;AACkBplF,QAAAA,IAAAA,QAAAA,CAAAA;QAAzB,IAAM+mF,gBAAAA,GAAmB/mF,CAAAA,QAAAA,GAAAA,EAAAA,CAAG33C,IAAI,CAAC+8H,GAAAA,CAAAA,KAAAA,IAAAA,GAARplF,WAAgB,EAAE,CAAA;AACfA,QAAAA,IAAAA,SAAAA,CAAAA;QAA5B,IAAMgnF,mBAAAA,GAAsBhnF,CAAAA,SAAAA,GAAAA,EAAAA,CAAG33C,IAAI,CAACk4D,SAAAA,CAAAA,KAAAA,IAAAA,GAARvgB,YAAoB,EAAE,CAAA;QAClD,IAASinF,KAAAA,GAAgBF,qBAATG,KAASH,GAAAA,gBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACzB,IAASI,YAAAA,GAA8BH,wBAAhBI,YAAgBJ,GAAAA,mBAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QAEvC,OACE9oI,MAAAA,CAAOipI,YAAgBjpI,CAAAA,GAAAA,MAAAA,CAAO+oI,KAC7B/oI,CAAAA,IAAAA,MAAAA,CAAOipI,kBAAkBjpI,MAAO+oI,CAAAA,KAAAA,CAAAA,IAAU/oI,MAAOkpI,CAAAA,YAAAA,CAAAA,GAAgBlpI,MAAOgpI,CAAAA,KAAAA,CAAAA,CAAAA;AAE7E,KAAA;IAEA,OAAO,KAAA,CAAA;AACT;;ACrWyE,IAAA,IAAA,CAAA;AAXzE;;;;;;;;;;IAWA,IAAMG,sBAAmE,IAAA,GAAA,EAAA,EAAA,IAAA,CACtElqH,WAAgB,CAACkmG,CAAC,CAAG,GAAA;IAAClmG,WAAgB,CAACkmG,CAAC;IAAElmG,WAAgB,CAACmqH,KAAK;IAAEnqH,WAAgB,CAACoqH,KAAK;AAAC,CAAA,EADnB,IAEtEpqH,CAAAA,WAAgB,CAACnW,CAAC,CAAG,GAAA;IAACmW,WAAgB,CAACnW,CAAC;IAAEmW,WAAgB,CAACmqH,KAAK;IAAEnqH,WAAgB,CAACoqH,KAAK;AAAC,CAAA,EAFnB,IAGtEpqH,CAAAA,WAAgB,CAACpW,CAAC,CAAG,GAAA;IAACoW,WAAgB,CAACpW,CAAC;IAAEoW,WAAgB,CAACmqH,KAAK;CAAC,EAHK,IAAA,CAAA,CAAA;AAMlE,SAASE,eAAAA,CAAiBzlH,CAAoB,EAAEiuD,WAA8B,EAAA;IACnF,IAAI,CAACjuD,CAAK,IAAA,CAACiuD,WAAa,EAAA;QACtB,OAAO,IAAA,CAAA;AACT,KAAA;IAEA,IAAM5zE,GAAAA,GAAMirI,kBAAkB,CAACr3D,WAAY,CAAA,CAAA;AAE3C,IAAA,IAAI5zE,GAAK,EAAA;QACP,OAAOA,GAAAA,CAAIU,QAAQ,CAACilB,CAAAA,CAAAA,CAAAA;AACtB,KAAA;IAEA,OAAO,KAAA,CAAA;AACT;;;ACIiB0lH,CAAAA,SAAAA,KAAAA,EAAAA;AASR,IAAA,SAASC,aAAcl3H,KAAU,EAAA;QACtC,OAAOpD,QAAAA,CAASoD,UAAU,WAAeA,IAAAA,KAAAA,CAAAA;AAC3C,KAAA;;UAFgBk3H,YAAAA,GAAAA,YAAAA,CAAAA;AAIT,IAAA,SAASC,MAAOn3H,KAAU,EAAA;QAC/B,OAAOpD,QAAAA,CAASoD,UAAU,KAASA,IAAAA,KAAAA,CAAAA;AACrC,KAAA;UAFgBm3H,KAAAA,GAAAA,KAAAA,CAAAA;AAIT,IAAA,SAASC,cAAep3H,KAAU,EAAA;QACvC,OAAOpD,QAAAA,CAASoD,UAAU,SAAaA,IAAAA,KAAAA,CAAAA;AACzC,KAAA;UAFgBo3H,aAAAA,GAAAA,aAAAA,CAAAA;AAGlB,CAAA,EApBiBH,KAAAA,KAAAA,KAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;AChCV,SAASI,kBAAAA,CACd5B,QAA8B,EAC9B6B,SAAkC,EAAA;IAElC,IAAIC,kBAAAA,CAAAA;AACkB9B,IAAAA,IAAAA,oBAAAA,CAAAA;AAAtB,IAAA,IAAsBA,IAAAA,GAAAA,CAAAA,oBAAAA,GAAAA,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAU+B,UAAU,KAAA,IAAA,GAApB/B,oBAAwB,GAAA,EAAtCxqI,EAAAA,IAAAA,GAAcwqI,IAAdxqI,CAAAA,IAAAA,EAAM8vD,MAAQ06E,IAAR16E,CAAAA,GAAAA,CAAAA;AAEd,IAAA,IAAI9vD,IAAM,EAAA;AACR,QAAA,IAAIqsI,SAAaA,IAAAA,SAAS,CAACrsI,IAAAA,CAAK,EAAE;YAChCssI,kBAAqBD,GAAAA,SAAS,CAACrsI,IAAK,CAAA,CAAA;AACtC,SAAA,MAAO,IAAI8vD,GAAK,EAAA;YACdw8E,kBAAqBx8E,GAAAA,GAAAA,CAAAA;AACvB,SAAA;AACF,KAAA;IAEA,OAAOw8E,kBAAAA,CAAAA;AACT,CAAA;AAEA;;;;;;AAMC,aACqBE,oBACpB18E,CAAAA,GAA8B,EAC9B06E,QAA+B,EAC/B6B,SAAkC,EAAA;AAHdG,IAAAA,OAAAA,qBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,qBAAAA,GAAAA;AAAAA,IAAAA,qBAAAA,GAAf,oBAAA,SACL18E,GAA8B,EAC9B06E,QAA+B,EAC/B6B,SAAkC,EAAA;YAE9B78H,KAiBE88H,EAAAA,kBAAAA,CAAAA;;;;0BAfF,OAAOx8E,GAAQ,KAAA,QAAO,CAAtB,EAAA,OAAA;;;;AACM,oBAAA,OAAA;;wBAAMwB,SAAUxB,CAAAA,GAAAA,CAAAA;;;oBAAxBtgD,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;oBAERA,KAAQsgD,GAAAA,GAAAA,CAAAA;;;AAGV,oBAAA,IAAI,CAACtgD,KAAO,EAAA;AACV,wBAAA,MAAM,IAAIzP,KAAM,CAAA,qBAAA,CAAA,CAAA;AAClB,qBAAA;AAEA,oBAAA,IAAI,CAACyqI,QAAU,EAAA;AACb,wBAAA,OAAA;;AAAOh7H,4BAAAA,KAAAA;;AACT,qBAAA;;AAGM88H,oBAAAA,kBAAAA,GAAqBF,mBAAmB5B,QAAU6B,EAAAA,SAAAA,CAAAA,CAAAA;AAExD,oBAAA,IAAIC,kBAAoB,EAAA;AACtB,wBAAA,IAAI5/H,QAAS4/H,CAAAA,kBAAAA,CAAAA,IAAuBA,kBAAuB98H,KAAAA,KAAAA,CAAMtK,GAAG,EAAE;AACpE,4BAAA,OAAA;;gCAAOosD,SAAUg7E,CAAAA,kBAAAA,CAAAA;;AACnB,yBAAA;wBACA,IAAsB3vI,YAAlB2vI,CAAAA,kBAAAA,EAA8B56E,gBAAkB,CAAA,EAAA;AAClD,4BAAA,OAAA;;AAAO46E,gCAAAA,kBAAAA;;AACT,yBAAA;AACF,qBAAA;AAEA,oBAAA,OAAA;;AAAO98H,wBAAAA,KAAAA;;;;AACT,KAAA,CAAA,CAAA;AAlCsBg9H,IAAAA,OAAAA,qBAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;;ACZtB,IAAIn8F,IAAO,GAAA,CAAA,CAAA;AAEX;;;AAGC,IACM,IAAA,YAAMo8F,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,CAyET,OAAqC,EACpBC,UAA6B,EAAA;QAD9C,IAAO3rI,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAA4B,EAAC,CAAA;QACpC,IAAiB2rI,UAAAA,KAAAA,KAAAA,CAAAA,EAAAA,aAAa,IAAI/8E,UAAAA,EAAAA,CAAAA;aAD3B5uD,OAAAA,GAAAA,OAAAA,CAAAA;aACU2rI,UAAAA,GAAAA,UAAAA,CAAAA;AAlEX/4E,QAAAA,IAAAA,CAAAA,MAAAA,GAAoC,EAAC,CAAA;AAIrCW,QAAAA,IAAAA,CAAAA,UAAAA,GAAuE,EAAC,CAAA;aAMxEv3C,EAAKszB,GAAAA,IAAAA,EAAAA,CAAAA;AASLs8F,QAAAA,IAAAA,CAAAA,MAAAA,GAAmB,EAAE,CAAA;QAiD3B,IAAI,CAACC,aAAa,CAAC7rI,OAAAA,CAAAA,CAAAA;;AA5EV0rI,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AA+EXG,IAAAA,MAAAA,CAAAA,aAQC,GARDA,SAAAA,aAAAA,CAAe7rI,OAA8B,EAAA;QAA9BA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAA4B,EAAC,CAAA;QAC1C,IAAI,CAACA,OAAO,GAAGA,OAAAA,CAAAA;QACf,IAAI,CAACA,OAAQ8rI,CAAAA,UAAU,EAAE;YACvB9rI,OAAQ8rI,CAAAA,UAAU,GAAG,EAAC,CAAA;AACxB,SAAA;QACA,IAAyB9rI,gBAAAA,GAAAA,OAAAA,CAAjB+rI,SAAAA,OAAU,GAAA,gBAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAA,CAAA;QAElB,IAAI,CAACA,OAAO,GAAGA,OAAAA,CAAAA;AACjB,KAAA,CAAA;AAEA;;;;;;AAMC,MACD,OAAMC,SAiHL,GAjHD,SAAMA,SAAWj9E,CAAAA,GAAmB,EAAE3yB,QAAmB,EAAA;;eAAzD,mBAAA,CAAA,WAAA;gBACM6vG,OACEC,EAAAA,QAAAA,EACAz5D,SACA05D,EAAAA,gBAAAA,EACAC,WACkBA,EAAAA,+BAAAA,EAAlBC,iBACAC,SACFC,EAAAA,SAAAA,EACAC,aAEEC,EAAAA,WAAAA,EAWAC,YAkBAC,EAAAA,mBAAAA,CAAAA;;AAtCAT,gBAAAA,QAAAA,GAAWvgI,QAASojD,CAAAA,GAAAA,CAAAA,GAAOA,GAAM,GAAA,KAAA,CAAK/yC,EAAE,CAAA;AACxCy2D,gBAAAA,SAAAA,GAAYya,YAAYC,GAAG,EAAA,CAAA;AAC3Bg/C,gBAAAA,gBAAAA,GAAAA,EAAAA,CAAAA;AACAC,gBAAAA,WAAAA,GAAchwG,QAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAAA,CAAU3nB,MAAM,CAACyzD,aAAa,CAAA;gBAC5CmkE,eAAkBD,GAAAA,CAAAA,kCAAAA,WAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAAA,CAAajkE,MAAM,CAACgG,WAAW,YAA/Bi+D,+BAAmC,GAAA,KAAA,CAAA;AACrDE,gBAAAA,SAAAA,GAAoC,EAAC,CAAA;gBAEvCE,aAAgB,GAAA,KAAA,CAAA;gBAEdC,WAAc,GAAA,IAAIvxI,OAAe,CAAA,SAACV,OAASC,EAAAA,MAAAA,EAAAA;oBAC/C8xI,SAAYl/H,GAAAA,MAAAA,CAAOggD,UAAU,CAAC,WAAA;wBAC5Bm/E,aAAgB,GAAA,IAAA,CAAA;AAChB,wBAAA,KAAA,CAAKI,WAAW,CAACL,SAAAA,CAAAA,CAAAA;wBACjB,IAAM/3D,SAAAA,GAAY0Y,WAAYC,CAAAA,GAAG,EAAK1a,GAAAA,SAAAA,CAAAA;AAEtCh4E,wBAAAA,MAAAA,CAAO,IAAIuE,KAAAA,CAAM,4BAAC,GAA4Bw1E,UAAUqqD,OAAO,CAAC,CAAG,CAAA,GAAA,KAAA,GAAKsN,gBAAiBtoE,CAAAA,IAAI,CAAC,GAAA,CAAA,GAAK,YAASqoE,QAAS,GAAA,GAAA,CAAA,CAAA,CAAA;qBACpH,EAAA,KAAA,CAAKH,OAAO,GAAG,IAAA,CAAA,CAAA;oBAClB,KAAKH,CAAAA,MAAM,CAACjtI,IAAI,CAAC4tI,SAAAA,CAAAA,CAAAA;AACnB,iBAAA,CAAA,CAAA;gBAEMG,YAAe,iBAAA,mBAAA,CAAA,SAAUpvI,KAAemlD,EAAAA,IAAAA,EAAAA;AAEpCsnF,oBAAAA,IAAAA,EAAAA,EAGEjpH,QACA5U,IAMCtN,EAAAA,CAAAA,CAAAA;;;;AAXP,gCAAA,IAAA,CAAA,CAAC4tI,aAAD,EAAA,OAAA;;;;AACIzC,gCAAAA,EAAAA,GAAK78C,YAAYC,GAAG,EAAA,CAAA;;;;;;;;;AAGT,gCAAA,OAAA;;AAAM1qC,oCAAAA,IAAAA,EAAAA;;;gCAAf3hC,MAAS,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;gCACT5U,IAAOghF,GAAAA,WAAAA,CAAYC,GAAG,EAAK48C,GAAAA,EAAAA,CAAAA;gCAEjCoC,gBAAiBxtI,CAAAA,IAAI,CAAC,GAAC,GAAGrB,QAAM,IAAI4O,GAAAA,IAAAA,CAAK2yH,OAAO,CAAC,CAAG,CAAA,GAAA,GAAA,CAAA,CAAA;gCACpDyN,SAAS,CAAChvI,MAAM,GAAG4O,IAAAA,CAAAA;AAEnB,gCAAA,OAAA;;AAAO4U,oCAAAA,MAAAA;;;AACAliB,gCAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;AACP,gCAAA,MAAM,IAAII,KAAM,CAAC,gBAAgB1B,GAAAA,KAAAA,GAAM,OAAIsB,CAAE,GAAA,GAAA,CAAA,CAAA;;AAGjD,gCAAA,MAAM,IAAII,KAAM,CAAA,gBAAA,CAAA,CAAA;;;AAClB,iBAAA,CAAA,CAAA;AACM2tI,gBAAAA,mBAAAA,iBAAsB,mBAAA,CAAA,WAAA;wBACtB34H,KAIIg9F,EAAAA,IAAAA,EA8CNh9F,WACAA,EAAAA,qBAAAA,EACAA,aA3BQq/D,EAAAA,SAAAA,EAAAA,eAAAA,EAgBA1gB,IAAWgzE,EAAAA,MAAAA,EAAQkH,KAEQ,EAAA,IAAA,EAA5BC,UAAYC,EAAAA,YAAAA,EAKbC,cAUFx4D,EAAAA,SAAAA,CAAAA;;;;AAxDF7oE,gCAAAA,IAAAA,CAAAA,QAAAA,CAASojD,GAATpjD,CAAAA,EAAAA,OAAAA;;;;;AAEIqlG,gCAAAA,IAAAA,GAAO,IAAIngD,GAAI9B,CAAAA,GAAAA,EAAKk+E,QAASC,CAAAA,IAAI,EAAEA,IAAI,CAAA;AAE7C,gCAAA,KAAA,CAAKC,OAAO,GAAGn8B,IAAAA,CAAAA;AACL,gCAAA,OAAA;;AAAM07B,oCAAAA,YAAAA,CAAa,UAAY,EAAA,WAAA;AAAM,wCAAA,OAAA,KAAA,CAAKU,QAAQ,CAACp8B,IAAAA,CAAAA,CAAAA;;;;gCAA7Di7B,OAAU,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;AAGV,gCAAA,IAAItgI,SAASsgI,OAAU,CAAA,EAAA;oCACrBA,OAAUl7E,GAAAA,IAAAA,CAAKs8E,KAAK,CAACpB,OAAAA,CAAAA,CAAAA;AACvB,iCAAA;;;;;;;gCAGAA,OAAUl9E,GAAAA,GAAAA,CAAAA;gCACV,KAAKo+E,CAAAA,OAAO,GAAGF,QAAAA,CAASC,IAAI,CAAA;;;qCAG1BjC,KAAMC,CAAAA,YAAY,CAACe,OAAnBhB,CAAAA,EAAAA,OAAAA;;;;AACFj3H,gCAAAA,KAAAA,GAAQ,QACHi4H,CAAAA,EAAAA,EAAAA,OAAAA,CAAAA,CAAAA;;;;;;AAIiB,gCAAA,OAAA;;AAAMS,oCAAAA,YAAAA,CAAa,aAAe,EAAA,WAAA;AAAM,wCAAA,OAAA,KAAA,CAAKY,WAAW,CAACrB,OAAAA,CAAAA,CAAAA;;;;AAAvE54D,gCAAAA,SAAAA,GAAc,MAAdA,CAAAA,IAAAA,EAAAA,CAAAA,SAAAA,CAAAA;gCAERr/D,KAAQ,GAAA;oCACNs4H,SAAAA,EAAAA,SAAAA;oCACAv9E,GAAAA,EAAAA,GAAAA;AACAw+E,oCAAAA,OAAAA,EAAS,EAAC;oCACVl6D,SAAAA,EAAAA,SAAAA;oCACA1gB,IAAI,EAAA,EAAA;oCACJD,cAAc,EAAA,EAAA;oCACd9G,QAAQ,EAAA,EAAA;oCACR+5E,MAAM,EAAA,EAAA;AACN/yE,oCAAAA,MAAAA,EAAQ,MAAKA,MAAM;AACrB,iCAAA,CAAA;AAEA,gCAAA,OAAA;;AAAM85E,oCAAAA,YAAAA,CAAa,0BAA4B,EAAA,WAAA;AAAM,wCAAA,OAAA,KAAA,CAAKc,sBAAsB,CAACx5H,KAAAA,CAAAA,CAAAA;;;;AAAjF,gCAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEqCq/D,gCAAAA,eAAAA,GAAAA,SAAAA,CAA7B1gB,MAAAA,IAAWgzE,GAAAA,eAAAA,KAAAA,KAAAA,CAAAA,GAAAA,EAAAA,GAAAA,eAAAA,EAAAA,MAAAA,GAAkBtyD,SAAlBsyD,CAAAA,MAAAA,EAAQkH,QAAUx5D,SAAVw5D,CAAAA,KAAAA,CAAAA;AAEQ,gCAAA,OAAA;;AAAM3xI,oCAAAA,OAAAA,CAAQqZ,GAAG,CAAA;AAClDm4H,wCAAAA,YAAAA,CAAa,aAAe,EAAA,WAAA;AAAM,4CAAA,OAAA,KAAA,CAAKe,WAAW,CAAC96E,IAAAA,CAAAA,CAAAA;;AACnD+5E,wCAAAA,YAAAA,CAAa,eAAiB,EAAA,WAAA;mDAAM,KAAKgB,CAAAA,aAAa,CAAC/H,MAAQ0G,EAAAA,eAAAA,CAAAA,CAAAA;;AAC/DK,wCAAAA,YAAAA,CAAa,gBAAkB,EAAA,WAAA;AAAM,4CAAA,OAAA,KAAA,CAAKiB,cAAc,CAACd,KAAAA,CAAAA,CAAAA;;;;;gCAHxB,IAAA,GAAA,MAAA,CAAA,IAAA,EAAA,EAA5BC,UAA4B,GAAA,IAAA,CAAA,CAAA,CAAA,EAAhBC,YAAgB,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAKZ,gCAAA,OAAA;;AAAML,oCAAAA,YAAAA,CAAa,iBAAmB,EAAA,WAAA;+CAAM,KAAKkB,CAAAA,eAAe,CAACb,YAAAA,EAAcD,UAAYz5D,EAAAA,SAAAA,CAAAA,CAAAA;;;;gCAA5G25D,cAAiB,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEvBh5H,gCAAAA,CAAAA,cAAAA,KAAM2+C,CAAAA,IAAI,EAACh0D,IAAI,CAAfqV,MAAAA,WAAmB84H,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA;AACnB94H,gCAAAA,CAAAA,wBAAAA,KAAM0+C,CAAAA,cAAc,EAAC/zD,IAAI,CAAzBqV,MAAAA,qBAA6Bg5H,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA;AAC7Bh5H,gCAAAA,CAAAA,gBAAAA,KAAM2xH,CAAAA,MAAM,EAAChnI,IAAI,CAAjBqV,MAAAA,aAAqB+4H,EAAAA,EAAAA,CAAAA,MAAAA,CAAAA,YAAAA,CAAAA,CAAAA,CAAAA;;AAGrB/4H,gCAAAA,KAAAA,CAAMw/D,WAAW,GAAG,KAAKxzE,CAAAA,OAAO,CAACwzE,WAAW,CAAA;;;gCAGxCgB,SAAY0Y,GAAAA,WAAAA,CAAYC,GAAG,EAAK1a,GAAAA,SAAAA,CAAAA;AAEtCjiE,gCAAAA,MAAAA,CAAO1V,IAAI,CAAC,yBAAC,GAAyB05E,UAAUqqD,OAAO,CAAC,CAAG,CAAA,GAAA,KAAA,GAAKsN,gBAAiBtoE,CAAAA,IAAI,CAAC,GAAA,CAAA,GAAK,YAASqoE,QAAS,GAAA,GAAA,CAAA,CAAA;AAC7G7+H,gCAAAA,MAAAA,CAAOwgI,YAAY,CAACtB,SAAAA,CAAAA,CAAAA;AACpB,gCAAA,KAAA,CAAKK,WAAW,CAACL,SAAAA,CAAAA,CAAAA;AACjBv4H,gCAAAA,KAAAA,CAAMwgE,SAAS,GAAGA,SAAAA,CAAAA;AAClBxgE,gCAAAA,KAAAA,CAAMy+D,SAAS,GAAGA,SAAAA,CAAAA;;AAElBz+D,gCAAAA,KAAAA,CAAMs4H,SAAS,GAAGA,SAAAA,CAAAA;AAElB,gCAAA,OAAA;;AAAOt4H,oCAAAA,KAAAA;;;;AACT,iBAAA,CAAA,CAAA;AAEA,gBAAA,OAAA;;AAAO9Y,oBAAAA,OAAAA,CAAQ4yI,IAAI,CAAA;AAAErB,wBAAAA,WAAAA;AAAaE,wBAAAA,mBAAAA,EAAAA;;;;AACpC,SAAA,CAAA,EAAA,CAAA;;IAEAoB,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;QACE,OAAO,IAAI,CAACn7E,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAc06E,WAab,GAbD,SAAcA,WAAAA,CAAajM,IAAe,EAAA;eAA1C,mBAAA,CAAA,WAAA;AACQhuD,YAAAA,IAAAA,SAAAA,EAAAA,kBAAAA,EACEjgE,OAEG46H,EAAAA,SAAAA,EAAAA,KAAAA,EAAAA,gBAAAA,CAAAA;;AAHL36D,gBAAAA,SAAAA,GAAYo1D,eAAgBpH,CAAAA,IAAAA,CAAAA,CAAAA;AACThuD,gBAAAA,kBAAAA,GAAAA,SAAAA,CAAjBjgE,OAAAA,EAAAA,OAAAA,GAAAA,kBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,EAAAA,GAAAA,kBAAAA,CAAAA;AAER,gBAAA,IAAA,SAAA,GAAA,oCAAA,CAA+BA,OAAS,CAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7B46H,oBAAAA,gBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,oBAAA,IAAI,CAAC76H,eAAe,CAAC66H,gBAAAA,CAAiB,EAAE;AACtC,wBAAA,MAAM,IAAIhvI,KAAM,CAAC,cAAcgvI,GAAAA,gBAAAA,GAAiB,iBAAgBr5H,kBAAmBq5H,CAAAA,gBAAAA,CAAAA,CAAAA,CAAAA;AACrF,qBAAA;AACF,iBAAA;AAEA,gBAAA,OAAA;;AAAO,oBAAA;wBACL36D,SAAAA,EAAAA,SAAAA;AACF,qBAAA;;;AACF,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAco6D,WAeb,GAfD,SAAcA,WAAAA,CAAa96E,IAAuC,EAAA;;eAAlE,mBAAA,CAAA,WAAA;AACU6gB,YAAAA,IAAAA,WAAAA,EACF25D,OACAp6E,EAAAA,IAAAA,CAAAA;;gBAFEygB,WAAgB,GAAA,KAAA,CAAKxzE,OAAO,CAA5BwzE,WAAAA,CAAAA;AACF25D,gBAAAA,OAAAA,GAAU,MAAKA,OAAO,CAAA;gBACtBp6E,IAAOJ,GAAAA,IAAAA,CAAKpmD,GAAG,CAAC0mD,SAAAA,GAAAA,EAAAA;oBACpB,IAAOr3D,YAAHq3D,CAAAA,GAAAA,EAAenxD,WAAa,CAAA,EAAA;wBAC9B,OAAOmxD,GAAAA,CAAAA;AACT,qBAAA;AACA,oBAAA,IAAI+3E,eAAgB/3E,CAAAA,GAAAA,CAAIugB,WAAW,EAAEA,WAAc,CAAA,EAAA;wBACjD,OAAO,KAAA,CAAKy6D,QAAQ,CAAC,IAAIp9E,IAAIoC,GAAIlE,CAAAA,GAAG,EAAEo+E,OAAAA,CAAAA,CAASD,IAAI,CAAA,CAAA;AACrD,qBAAA;AAEA,oBAAA,MAAM,IAAIluI,KAAM,CAAC,0BAAuB+xD,IAAKC,CAAAA,SAAS,CAAC2B,IAAM,CAAA,GAAA,GAAA,CAAA,CAAA;AAC/D,iBAAA,CAAA,CAAA;AAEA,gBAAA,OAAA;;AAAOz3D,oBAAAA,OAAAA,CAAQqZ,GAAG,CAACw+C,IAAAA,CAAAA;;;AACrB,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAc46E,cAEb,GAFD,SAAcA,cAAAA,CAAgBd,KAAwB,EAAA;;eAAtD,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;AAxPSnB,oBAAAA,YAAAA,CAwPWwC,cAAc,CAACrB,KAAO,EAAA,KAAA,CAAKM,OAAO,CAAA;;;AACxD,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAcO,aAqFb,GArFD,SAAcA,aACZ/H,CAAAA,MAA0B,EAC1BwI,UAAkB,EAAA;AAAlBA,QAAAA,IAAAA,uBAAAA,UAAa,GAAA,KAAA,CAAA;;eAFf,mBAAA,CAAA,WAAA;AAIwE,YAAA,IAAA,aAAA,EAA9DC,oBAAsB9C,EAAAA,SAAAA,EAAW+C,WAAaC,EAAAA,WAAAA,EAChDnB,SACAp6E,IA0EAg6E,EAAAA,YAAAA,CAAAA;;;;AA5EgE,wBAAA,aAAA,GAAA,KAAK/sI,CAAAA,OAAO,EAA1EouI,oBAAAA,GAA8D,aAA9DA,CAAAA,oBAAAA,EAAsB9C,SAAwC,GAAA,aAAA,CAAxCA,SAAW+C,EAAAA,WAAAA,GAA6B,aAA7BA,CAAAA,WAAAA,EAAaC,cAAgB,aAAhBA,CAAAA,WAAAA,CAAAA;AAChDnB,wBAAAA,OAAAA,GAAU,MAAKA,OAAO,CAAA;AACtBp6E,wBAAAA,IAAAA,GAAO4yE,MAAOp5H,CAAAA,GAAG,eAAC,mBAAA,CAAA,SAAO0kD,GAAKstC,EAAAA,GAAAA,EAAAA;AACrBluC,4BAAAA,IAAAA,GAAAA,EAAKC,MAAMG,IAChB89E,EAAAA,IAAAA,EAEFC,QAEAC,EAAAA,OAAAA,EAEAC,SAEAC,OAEA3yH,EAAAA,EAAAA,EAIEytH,QAEA+B,EAAAA,UAAAA,EAGEz8E,KACA6/E,OAEAp8E,EAAAA,MAAAA,EAIEq8E,WAoBCjwI,EAAAA,CAAAA,EAkBU8vI,MAAf3/E,IAAKtgD,EAAAA,KAAAA,EAAAA,IAAAA,CAAAA;;;;AAjEA4hD,wCAAAA,GAAAA,GAAoBY,IAAzBlC,GAAUuB,EAAAA,IAAAA,GAAeW,GAAfX,CAAAA,IAAAA,EAAMG,OAASQ,GAATR,CAAAA,IAAAA,CAAAA;AAChB89E,wCAAAA,IAAAA,GAASt9E,GAATs9E,CAAAA,IAAAA,CAAAA;;AAEFC,wCAAAA,QAAAA,GAAW,IAAI39E,GAAAA,CAAIR,GAAK88E,EAAAA,OAAAA,CAAAA,CAASD,IAAI,CAAA;;wCAErCuB,OAAU,GAAC,CAACJ,WAAe/9E,IAAAA,IAAAA,GAAQ,IAAIO,GAAIP,CAAAA,IAAAA,EAAM68E,OAASD,CAAAA,CAAAA,IAAI,GAAGvxI,SAAAA,CAAAA;;wCAEjE+yI,OAAU,GAAC,CAACJ,WAAe79E,IAAAA,IAAAA,GAAQ,IAAII,GAAIJ,CAAAA,IAAAA,EAAM08E,OAASD,CAAAA,CAAAA,IAAI,GAAGvxI,SAAAA,CAAAA;;wCAEjEgzI,OAAU,GAACJ,QAAQH,oBAAwBD,IAAAA,UAAAA,GAAc,IAAIt9E,GAAI09E,CAAAA,IAAAA,EAAMpB,OAASD,CAAAA,CAAAA,IAAI,GAAGvxI,SAAAA,CAAAA;AAEvFqgB,wCAAAA,EAAAA,GAAKi1C,IAAIj1C,EAAE,CAAA;8CAEb,UAAA,IAAci1C,GAAE,CAAhB,EAAA,OAAA;;;;;AAEIw4E,wCAAAA,QAAAA,GAAWx4E,IAAIw4E,QAAQ,CAAA;;AAEvB+B,wCAAAA,UAAAA,GAAa/B,SAAS+B,UAAU,CAAA;6CAElCA,UAAAA,EAAAA,OAAAA;;;;AACIz8E,wCAAAA,GAAAA,GAAMs8E,mBAAmB5B,QAAU6B,EAAAA,SAAAA,CAAAA,CAAAA;AACnCsD,wCAAAA,OAAAA,GAAUpD,WAAW94H,IAAI,KAAKiO,cAAmB,CAACgxC,KAAK,CAAA;;wCAEvDa,MAASg5E,GAAAA,UAAAA,IAAcoD,UAAUl9E,SAAYnB,GAAAA,SAAAA,CAAAA;;;;;;;;;AAI7B,wCAAA,OAAA;;AAAMgC,4CAAAA,SAAAA,CAAUxD,GAA0ByD,EAAAA,MAAAA,CAAAA;;;wCAAxDq8E,WAAc,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;6CAEhBA,YAAW,CAAXA,aAAuBz7D,gBAAvBy7D,CAAAA,EAAAA,OAAAA;;;;wCACF,KAAKt7E,CAAAA,UAAU,CAACv3C,EAAAA,CAAG,GAAG;AAAE+yC,4CAAAA,GAAAA,EAAK8/E,YAAY1qI,GAAG;AAAEuO,4CAAAA,IAAAA,EAAM44C,kBAAkBqG,KAAK;AAAC,yCAAA,CAAA;AAE5E,wCAAA,OAAA;;AAAOk9E,4CAAAA,WAAAA;;;;AAGP,wCAAA,IAAIrD,UAAc/mI,IAAAA,KAAAA,CAAMkM,OAAO,CAACo+C,QAAQu8E,SAAW,EAAA;AACjDA,4CAAAA,SAAS,CAACE,UAAWvsI,CAAAA,IAAI,CAAC,GAAG4vI,YAAY1qI,GAAG,CAAA;AAC9C,yCAAA;wCAEA,KAAKovD,CAAAA,UAAU,CAACv3C,EAAAA,CAAG,GAAG;AAAE+yC,4CAAAA,GAAAA,EAAK8/E,YAAY1qI,GAAG;AAAEuO,4CAAAA,IAAAA,EAAM44C,kBAAkB78C,KAAK;AAAC,yCAAA,CAAA;AAErE,wCAAA,OAAA;;AAAMg9H,4CAAAA,oBAAAA,CACXoD,aACApF,QACA6B,EAAAA,SAAAA,CAAAA;;;AAHF,wCAAA,OAAA;;AAAO,4CAAA,MAAA,CAAA,IAAA,EAAA;;;;;;;;AAMF1sI,wCAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;AACP,wCAAA,MAAM,IAAII,KAAM,CAAC,0DAAsD4vI,OAAAA,GAAU,UAAU,OAAM,CAAA,GAAE,cAAc7/E,GAAAA,GAAAA,GAAI,eAAYnwD,EAAYG,OAAO,IAAIH,CAAAA,CAAE,GAAA,GAAA,CAAA,CAAA;;;;;;;wCAGzJ,IAAI,MAAA,IAAUqyD,OAAO09E,OAAS,EAAA;;4CAEnC,KAAKp7E,CAAAA,UAAU,CAACv3C,EAAAA,CAAG,GAAG;gDAAE+yC,GAAK4/E,EAAAA,OAAAA;AAASj8H,gDAAAA,IAAAA,EAAM44C,kBAAkBsL,UAAU;AAAC,6CAAA,CAAA;AAEzE,4CAAA,OAAA;;AAAO,gDAAA,KAAA,CAAKq3E,QAAQ,CAACU,OAAAA,CAAAA;;AACvB,yCAAA,MAAO,IACL19E,YAAG,CAAHA,GAAeN,EAAAA,gBAAAA,CAAAA,IACfM,YAAAA,CAAAA,GAAAA,EAAe69E,iBACf79E,CAAAA,IAAGr1D,aAAHq1D,GAAemiB,EAAAA,gBAAAA,CAAAA,IACfniB,YAAG,CAAHA,KAAeuC,OACf,CAAA,EAAA;AACA,4CAAA,OAAA;;AAAOvC,gDAAAA,GAAAA;;AACT,yCAAA;;;6CAEuBy9E,OAAAA,EAAAA,OAAAA;;;;AACnB,wCAAA,OAAA;;AAAMl+E,4CAAAA,gBAAAA,CAAiBg+E,QAAUE,EAAAA,OAAAA,CAAAA;;;AAAjC,wCAAA,IAAA,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;AACA,wCAAA,OAAA;;AAAMt+E,4CAAAA,gBAAAA,CAAiBo+E,QAAUC,EAAAA,OAAAA,CAAAA;;;AAAjC,wCAAA,IAAA,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;AAFmBC,wCAAAA,IAAAA,GAAAA,IAAAA,EAAf3/E,IAAe2/E,GAAAA,IAAAA,CAAf3/E,GAAKtgD,EAAAA,KAAAA,GAAUigI,IAAVjgI,CAAAA,KAAAA,CAAAA;wCAIb,KAAK8kD,CAAAA,UAAU,CAACv3C,EAAAA,CAAG,GAAG;4CAAE+yC,GAAAA,EAAAA,IAAAA;AAAKr8C,4CAAAA,IAAAA,EAAM44C,kBAAkB78C,KAAK;AAAC,yCAAA,CAAA;AAE3D,wCAAA,OAAA;;AAAOA,4CAAAA,KAAAA;;;;AACT,yBAAA,CAAA,CAAA,CAAA;AACqB,wBAAA,OAAA;;AAAMvT,4BAAAA,OAAAA,CAAQqZ,GAAG,CAACw+C,IAAAA,CAAAA;;;wBAAjCg6E,YAAe,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;wBAErB,KAAKgC,CAAAA,oBAAoB,CAACpJ,MAAQoH,EAAAA,YAAAA,CAAAA,CAAAA;AAElC,wBAAA,OAAA;;AAAOA,4BAAAA,YAAAA;;;;AACT,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAcS,sBAEb,GAFD,SAAcA,sBAAAA,CAAwBx5H,KAAY,EAAA;;eAAlD,mBAAA,CAAA,WAAA;;;;AACE,wBAAA,OAAA;;AAAMJ,4BAAAA,YAAAA,CAAaU,iBAAiB,CAACN,KAAO,EAAA,KAAA,CAAKhU,OAAO,CAAA;;;AAAxD,wBAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;;;;AACF,SAAA,CAAA,EAAA,CAAA;;IAEA,MAAc4tI,CAAAA,eAsCb,GAtCD,SAAcA,eAAAA,CACZjI,MAAmB,EACnBhzE,IAAmB,EACnB0gB,SAAyB,EAAA;;eAH3B,mBAAA,CAAA,WAAA;AAKmBA,YAAAA,IAAAA,mBAAAA,EAAXznB,QACAmH,EAAAA,IAAAA,CAAAA;;gBADAnH,QAAWynB,GAAAA,CAAAA,mBAAAA,GAAAA,SAAAA,CAAUznB,QAAQ,KAAA,IAAA,GAAlBynB,sBAAsBsyD,MAAOp5H,CAAAA,GAAG,CAAC,SAAC0kD,GAAK/wC,EAAAA,MAAAA,EAAAA;AAAoB,oBAAA,OAAA;wBAAEA,MAAAA,EAAAA,MAAAA;AAAO,qBAAA,CAAA;;AAC/E6yC,gBAAAA,IAAAA,GAAOnH,QAASr/C,CAAAA,GAAG,eAAC,mBAAA,CAAA,SAAOmmD,cAAgB6rC,EAAAA,GAAAA,EAAAA;wBAOpC3/F,CAKHshB,EAAAA,MAAAA,EAAQlE,EACZvN,EAAAA,KAAAA,EACAugI,OAUIr6E,EAAAA,OAAAA,CAAAA;;;;gCAvBR,IAAkB/4D,YAAd82D,CAAAA,cAAAA,EAA0Bc,OAAS,CAAA,EAAA;AACrC,oCAAA,OAAA;;AAAOd,wCAAAA,cAAAA;;AACT,iCAAA;sCACI,SAAA,IAAaA,cAAa,CAA1B,EAAA,OAAA;;;;;;;;;;;;AAEO,gCAAA,OAAA;;AAAMD,oCAAAA,wBAAAA,CAAyBC,gBAAgBC,IAAM,EAAA,KAAA,CAAKC,MAAM,EAAEygB,UAAU1gB,IAAI,CAAA;;;AAAvF,gCAAA,OAAA;;AAAO,oCAAA,MAAA,CAAA,IAAA,EAAA;;;AACA/zD,gCAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;AACP,gCAAA,MAAM,IAAII,KAAM,CAAC,eAAeu/F,GAAAA,GAAAA,GAAI,4BAAyB3/F,CAAE,GAAA,GAAA,CAAA,CAAA;;gCAI3DshB,MAAewyC,GAAAA,cAAAA,CAAfxyC,MAAQlE,EAAAA,EAAAA,GAAO02C,cAAP12C,CAAAA,EAAAA,CAAAA;gCAEZgzH,OAAU,GAAA,EAAA,CAAA;AAEVp+H,gCAAAA,IAAAA,CAAAA,QAAAA,CAASsP,MAATtP,CAAAA,EAAAA,OAAAA;;;;AACFnC,gCAAAA,KAAAA,GAAQ,KAAKmkD,CAAAA,MAAM,CAAC1yC,MAAAA,CAAOlE,EAAE,CAAW,CAAA;AACxCgzH,gCAAAA,OAAAA,GAAU9uH,OAAOlE,EAAE,CAAA;;;;;;sCACV,OAAOkE,MAAW,KAAA,QAAO,CAAzB,EAAA,OAAA;;;;AACD,gCAAA,OAAA;;AAAMqwC,oCAAAA,SAAAA,CAAU3+C,YAAasO,CAAAA,MAAAA,CAAAA,CAAAA;;;gCAArCzR,KAAQ,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;;;qCAGNA,KAAAA,EAAAA,OAAAA;;;;AACc,gCAAA,OAAA;;AAAMwgI,oCAAAA,4BAAAA,CAA6BxgI,KAAO,EAAA,KAAA,CAAK8kD,UAAU,CAACy7E,QAAQ,EAAEhzH,EAAAA,CAAAA;;;gCAA9E24C,OAAU,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEhB,gCAAA,OAAA;;AAAOA,oCAAAA,OAAAA,CAAQ1gC,UAAU,KAAKq3B,iBAAAA,CAAkBsL,UAAU,GAAGjC,OAAAA,GAAU,aAAKA,OAAYjC,EAAAA,cAAAA,CAAAA;;;AAE1F,gCAAA,MAAM,IAAI1zD,KAAAA,CAAM,0BAAC,GAA0BkhB,MAAO,GAAA,GAAA,CAAA,CAAA;;;AACpD,iBAAA,CAAA,CAAA,CAAA;AAEA,gBAAA,OAAA;;AAAOhlB,oBAAAA,OAAAA,CAAQqZ,GAAG,CAACw+C,IAAAA,CAAAA;;;AACrB,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAcq6E,QASb,GATD,SAAcA,QAAAA,CAAUr+E,GAAW,EAAA;;eAAnC,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;oBAAO,IAAI7zD,OAAAA,CAAmB,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AACtC,wBAAA,KAAA,CAAKkxI,UAAU,CAAC78E,YAAY,CAC1BC,GACAv0D,EAAAA,OAAAA,EACA,SAACm1D,MAAQ6B,EAAAA,YAAAA,EAAAA;4BACP/2D,MAAO,CAAC,wBAAqBs2D,IAAKC,CAAAA,SAAS,CAACjC,GAAK,CAAA,GAAA,WAAA,GAAWY,SAAO,IAAI6B,GAAAA,YAAAA,CAAAA,CAAAA;AACzE,yBAAA,CAAA,CAAA;AACJ,qBAAA,CAAA;;;AACF,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAcy8E,QASb,GATD,SAAcA,QAAAA,CAAUl/E,GAAW,EAAA;;eAAnC,mBAAA,CAAA,WAAA;;AACE,gBAAA,OAAA;;oBAAO,IAAI7zD,OAAAA,CAAqB,SAACV,OAASC,EAAAA,MAAAA,EAAAA;AACxC,wBAAA,KAAA,CAAKkxI,UAAU,CAACx8E,cAAc,CAC5BJ,GACAv0D,EAAAA,OAAAA,EACA,SAACm1D,MAAQ6B,EAAAA,YAAAA,EAAAA;4BACP/2D,MAAO,CAAC,wBAAqBs2D,IAAKC,CAAAA,SAAS,CAACjC,GAAK,CAAA,GAAA,WAAA,GAAWY,SAAO,IAAI6B,GAAAA,YAAAA,CAAAA,CAAAA;AACzE,yBAAA,CAAA,CAAA;AACJ,qBAAA,CAAA;;;AACF,SAAA,CAAA,EAAA,CAAA;;AAEA,IAAA,MAAA,CAAQu9E,oBAIP,GAJD,SAAQA,oBAAsBpJ,CAAAA,MAA0B,EAAEoH,YAAyB,EAAA;AACjF,QAAA,IAAK,IAAI/vI,CAAI,GAAA,CAAA,EAAGA,IAAI2oI,MAAOlpI,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;AACtC,YAAA,IAAI,CAAC41D,MAAM,CAAC+yE,MAAM,CAAC3oI,CAAAA,CAAE,CAACgf,EAAE,CAAC,GAAG+wH,YAAY,CAAC/vI,CAAE,CAAA,CAAA;AAC7C,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ4vI,WAMP,GAND,SAAQA,WAAAA,CAAa5wH,EAAU,EAAA;AAC7B,QAAA,IAAMxb,QAAQ,IAAI,CAACorI,MAAM,CAACnrI,OAAO,CAACub,EAAAA,CAAAA,CAAAA;QAElC,IAAIxb,KAAAA,KAAU,CAAC,CAAG,EAAA;AAChB,YAAA,IAAI,CAACorI,MAAM,CAAClrI,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AACA;;MAGAyb,MAAAA,CAAAA,OAOC,GAPDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,IAAI,CAAC2vH,MAAM,CAACnvI,MAAM,EAAE;AACtB,YAAA,IAAI,CAACmvI,MAAM,CAACr/H,GAAG,CAACyP,SAAAA,EAAAA,EAAAA;AAAM3O,gBAAAA,OAAAA,MAAAA,CAAOwgI,YAAY,CAAC7xH,EAAAA,CAAAA,CAAAA;;AAC5C,SAAA;QACA,IAAI,CAAC42C,MAAM,GAAG,EAAC,CAAA;QACf,IAAI,CAACW,UAAU,GAAG,EAAC,CAAA;QACnB,IAAI,CAACq4E,MAAM,GAAG,EAAE,CAAA;AAClB,KAAA,CAAA;AA9YA;;;;;MA7BWF,aAmCEwC,cA8BZ,GA9BD,SAAaA,cACXrB,CAAAA,KAAwB,EACxBM,OAAuB,EAAA;QAAvBA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,OAAUF,GAAAA,QAAAA,CAASC,IAAI,CAAA;eAFzB,mBAAA,CAAA,WAAA;AASQn6E,YAAAA,IAAAA,IAAAA,CAAAA;;;AAJN,gBAAA,IAAI,CAAC85E,KAAO,EAAA;AACV,oBAAA,OAAA;;;AACF,iBAAA;AAEM95E,gBAAAA,IAAAA,GAAO85E,KAAMtgI,CAAAA,GAAG,eAAC,mBAAA,CAAA,SAAM+sH,IAAAA,EAAAA;AAQjBvqE,oBAAAA,IAAAA,GAAAA,CAAAA,CACwBuqE,kBAAxB4V,QAKC7xI,CAAAA;;;;AAZPi8H,gCAAAA,IAAAA,EAAAA,IAAK6V,CAAAA,OAAO,IAAI,CAACzD,YA9CdA,CA8C2B0D,SAAS,CAACt5E,GAAG,CAACwjE,IAAKzpH,CAAAA,UAAU,CAAA,CAA3DypH,EAAAA,OAAAA;;;;AACF,gCAAA,IAAI,CAAC1pH,iBAAAA,CAAkB0pH,IAAKzpH,CAAAA,UAAU,CAAG,EAAA;;AAEvCvL,oCAAAA,OAAAA,CAAQ+L,IAAI,CAAE,qBAAqBipH,GAAAA,IAAAA,CAAKzpH,UAAU,GAAC,GAAA,CAAA,CAAA;AACrD,iCAAA;;;;;;;;;AAEQk/C,gCAAAA,GAAAA,GAAM,IAAI8B,GAAIyoE,CAAAA,IAAAA,CAAK6V,OAAO,EAAEhC,SAASD,IAAI,CAAA;gCACzCgC,QAAW,GAAA,IAAIG,QAAS/V,CAAAA,CAAAA,gBAAAA,GAAAA,IAAAA,CAAKzpH,UAAU,KAAfypH,IAAAA,GAAAA,gBAAAA,GAAmB,EAAI,EAAA,MAAA,GAASvqE,GAAM,GAAA,GAAA,CAAA,CAAA;AAEpE,gCAAA,OAAA;;AAAMmgF,oCAAAA,QAAAA,CAASxxH,IAAI,EAAA;;;AAAnB,gCAAA,MAAA,CAAA,IAAA,EAAA,CAAA;gCACAk0C,QAASi7E,CAAAA,KAAK,CAACroI,GAAG,CAAC0qI,QAAAA,CAAAA,CAAAA;AAxDhBxD,gCAAAA,YAAAA,CAyDU0D,SAAS,CAAC5qI,GAAG,CAAC80H,KAAKzpH,UAAU,CAAA,CAAA;;;;;;AACnCxS,gCAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;gCACPmT,MAAOH,CAAAA,IAAI,CAAC,sCAAC,GAAsC0gD,KAAKC,SAAS,CAACsoE,IAAK6V,CAAAA,OAAO,CAAE,GAAA,GAAA,CAAA,CAAA;;;;;;;;;;;AAGtF,iBAAA,CAAA,CAAA,CAAA;AAEA,gBAAA,OAAA;;AAAOj0I,oBAAAA,OAAAA,CAAQqZ,GAAG,CAACw+C,IAAAA,CAAAA;;;AACrB,SAAA,CAAA,EAAA,CAAA;;AAjEW24E,IAAAA,OAAAA,YAAAA,CAAAA;AA4aZ,CAAA,GAAA;AA/ZC;;MAbWA,YAAAA,CAgBI0D,YAAyB,IAAIjrE,GAAAA,EAAAA,CAAAA;AA8Z/B8qE,SAAAA,4BAAAA,CACbxgI,KAAuC,EACvC8kD,UAAoD,EACpDv3C,EAAW,EAAA;AAHEizH,IAAAA,OAAAA,6BAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;AAAAA,SAAAA,6BAAAA,GAAAA;AAAAA,IAAAA,6BAAAA,GAAf,oBAAA,SACExgI,KAAuC,EACvC8kD,UAAoD,EACpDv3C,EAAW,EAAA;YAELhc,OAkCEiU,EAAAA,MAAAA,EAIIkjD,aAcCv4D,CACsC20D,EAAAA,eAAAA,CAAAA;;;;oBArD7CvzD,OAAU,GAAA;wBACdgc,EAAAA,EAAAA,EAAAA;wBACAs+D,QAAU35D,EAAAA,QAAa,CAAC6yC,OAAO;AACjC,qBAAA,CAAA;yBAEI/kD,YAAK,CAALA,OAAiB+kD,OAAjB/kD,CAAAA,EAAAA,OAAAA;;;;AACF,oBAAA,OAAA;;wBAAO,QACFA,CAAAA,EAAAA,EAAAA,KAAAA,CAAMyR,MAAM,EACZlgB,OAAAA,CAAAA;;;AAGLyO,oBAAAA,IAAAA,EAAAA,YAAAA,CAAAA,KAAAA,EAAiBkiD,gBACjBv/C,CAAAA,IAAAA,QAAAA,CAAS3C,MAA0B,CADnCA,EAAAA,OAAAA;;;;AAGA,oBAAA,OAAA;;AAAO,wBAAA,QAAA,CAAA;4BACLA,KAAAA,EAAAA,KAAAA;AACAwlB,4BAAAA,UAAAA,EAAYq3B,kBAAkB78C,KAAK;4BACnC8kD,UAAAA,EAAAA,UAAAA;4BACAD,eAAiB,EAAA,IAAA;AACjBa,4BAAAA,SAAAA,EAAWvG,UAAU4J,MAAM;AAC3BnD,4BAAAA,SAAAA,EAAWzG,UAAU4J,MAAM;AACxBx3D,yBAAAA,EAAAA,OAAAA,CAAAA;;;yBAEIyO,YAAK,CAALA,OAAiB2kE,gBAAjB3kE,CAAAA,EAAAA,OAAAA;;;;;AAET,oBAAA,OAAA;;AAAO,wBAAA,QAAA,CAAA;AACLwlB,4BAAAA,UAAAA,EAAYq3B,kBAAkBqG,KAAK;4BACnCA,KAAOljD,EAAAA,KAAAA;AACP0lD,4BAAAA,SAAAA,EAAWvG,UAAU4J,MAAM;AAC3BnD,4BAAAA,SAAAA,EAAWzG,UAAU4J,MAAM;AACxBx3D,yBAAAA,EAAAA,OAAAA,CAAAA;;;yBAEIyO,YAAK,CAALA,OAAiB3M,WAAjB2M,CAAAA,EAAAA,OAAAA;;;;;oBAEHwF,MAASmiD,GAAAA,qBAAAA,CAAsBH,SAAS,CAAC,MAAA,CAAA,CAAA;yBAE3ChiD,MAAAA,EAAAA,OAAAA;;;;;;;;;;;;AAEoB,oBAAA,OAAA;;AAAMA,wBAAAA,MAAAA,CAAOsjD,cAAc,CAAC9oD,KAAAA,CAAAA;;;oBAA1C0oD,WAAc,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEpB,oBAAA,OAAA;;AAAO,wBAAA,QAAA,CAAA;AACLljC,4BAAAA,UAAAA,EAAYkjC,YAAYljC,UAAU;AAClCvhB,4BAAAA,IAAAA,EAAMykD,YAAYzkD,IAAI;AACtBpW,4BAAAA,MAAAA,EAAQ66D,YAAY76D,MAAM;AAC1B23D,4BAAAA,cAAAA,EAAgBkD,YAAYlD,cAAc;AAC1C9jD,4BAAAA,MAAAA,EAAQgnD,YAAYhnD,MAAM;AAC1B2iD,4BAAAA,OAAAA,EAASqE,YAAYrE,OAAO;AAC5BqB,4BAAAA,SAAAA,EAAWvG,UAAU4J,MAAM;AAC3BnD,4BAAAA,SAAAA,EAAWzG,UAAU4J,MAAM;4BAC3BjE,UAAAA,EAAAA,UAAAA;AACGvzD,yBAAAA,EAAAA,OAAAA,CAAAA;;;AAEEpB,oBAAAA,CAAAA,GAAAA,MAAAA,CAAAA,IAAAA,EAAAA,CAAAA;oBACP,MAAM,IAAII,MAAM,4BAAC,IAA4Bu0D,CAAAA,eAAAA,GAAAA,8BAAAA,UAAYxE,CAAAA,GAAG,YAAfwE,eAAmB,GAAA,QAAO,IAAE,IAAI,IAAA,CAAax0D,CAAAA,OAAO,IAAIH,CAAAA,CAAAA,CAAAA,CAAAA;;;;;;;AAGvG,oBAAA,MAAM,IAAII,KAAM,CAAA,kDAAA,CAAA,CAAA;;;;;;;AAEb,oBAAA,IACL,OAAWyP,IAAAA,KAAAA,IACX,QAAYA,IAAAA,KAAAA,IACZ,UAAUA,KACV,EAAA;AACA,wBAAA,OAAA;;AAAO,4BAAA,QAAA,CAAA;AACLwlB,gCAAAA,UAAAA,EAAYq3B,kBAAkB18C,IAAI;gCAClCA,IAAMH,EAAAA,KAAAA;AACN6lD,gCAAAA,KAAAA,EAAO1G,UAAU2G,aAAa;AAC9BC,gCAAAA,KAAAA,EAAO5G,UAAU2G,aAAa;AAC9BJ,gCAAAA,SAAAA,EAAWvG,UAAUwG,OAAO;AAC5BC,gCAAAA,SAAAA,EAAWzG,UAAUwG,OAAO;AACzBp0D,6BAAAA,EAAAA,OAAAA,CAAAA;;AAEP,qBAAA;;;AAEA,oBAAA,MAAM,IAAIhB,KAAM,CAAA,0BAAA,CAAA,CAAA;;;AAClB,KAAA,CAAA,CAAA;AAhFeiwI,IAAAA,OAAAA,6BAAAA,CAAAA,KAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA;;;AC3bf;;AAEC,IACM,IAAA,YAAMK,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,CAQT,MAA+B,EAAA;aAAd76H,MAAAA,GAAAA,MAAAA,CAAAA;AAPF86H,QAAAA,IAAAA,CAAAA,cAAAA,GAAkC,EAAE,CAAA;AASnD,QAAA,IAAI,CAACA,cAAc,CAAC5wI,IAAI,CAAC8V,OAAOksE,YAAY,CAAA,CAAA;AAC5C,QAAA,IAAI,CAAC4uD,cAAc,CAAC5wI,IAAI,CAAC8V,OAAO+6H,kBAAkB,CAAA,CAAA;;AAXzCF,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAcX;;;;AAIC,MACDG,OAAAA,wBAuBC,GAvBDA,SAAAA,wBACE1gF,CAAAA,GAAmB,EACnB/uD,OAA8B,EAAA;QAA9BA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAA4B,EAAC,CAAA;AAE7B,QAAA,IAAIkgB,MAAyB6uC,GAAAA,GAAAA,CAAAA;;QAG7B,IAAIk8E,KAAAA,CAAME,KAAK,CAACp8E,GAAM,CAAA,EAAA;AACpB,YAAA,IAAI,CAACk8E,KAAAA,CAAMC,YAAY,CAACn8E,GAAM,CAAA,EAAA;AAC5B7uC,gBAAAA,MAAAA,GAAS6uC,IAAIA,GAAG,CAAA;AAClB,aAAA;YACA,IAAIk8E,KAAAA,CAAMG,aAAa,CAACr8E,GAAM,CAAA,EAAA;gBAC5B/uD,OAAU,GAAA,QAAA,CAAA,EAAA,EACLA,OACA+uD,EAAAA,GAAAA,CAAI/uD,OAAO,CAAA,CAAA;AAElB,aAAA;AACF,SAAA;QAEA,OAAO;YACLkgB,MAAAA,EAAAA,MAAAA;YACAlgB,OAAAA,EAAAA,OAAAA;AACF,SAAA,CAAA;AACF,KAAA,CAAA;AAEA;;;;AAIC,MACD0vI,OAAAA,mBAqBC,GArBDA,SAAAA,mBACE17H,CAAAA,KAAY,EACZs3H,SAAsC,EAAA;;QAAtCA,IAAAA,SAAAA,KAAAA,KAAAA,CAAAA,EAAAA,YAAoC,EAAC,CAAA;AAErCt3H,QAAAA,KAAAA,CAAMq/D,SAAS,CAACnwB,KAAK,CAACx2C,OAAO,CAAC9L,SAAAA,IAAAA,EAAAA;AAC5B,YAAA,IAAIA,IAAK8R,CAAAA,IAAI,KAAKiO,QAAa,CAAC41G,IAAI,IAAI31H,IAAAA,CAAK8R,IAAI,KAAKiO,QAAa,CAACkkH,QAAQ,EAAE;AAC5E,gBAAA,IAAM8K,YAAerE,GAAAA,SAAS,CAAC1qI,IAAAA,CAAK3B,IAAI,CAAC,CAAA;gBAEzC,IAAI0wI,YAAAA,KAAiBh0I,SAAag0I,IAAAA,YAAAA,KAAiB,IAAM,EAAA;AACvD,oBAAA,OAAA;AACF,iBAAA;gBAEA/uI,IAAK86B,CAAAA,UAAU,CAAChvB,OAAO,CAAC,SAAA,KAAA,EAAA;wBAAGsP,EAAAA,GAAAA,KAAAA,CAAAA,EAAAA,CAAAA;AACzB,oBAAA,IAAMymH,aAAgB,GAAA,KAAA,CAAKhuH,MAAM,CAAComE,qBAAqB,CAAC7+D,EAAAA,CAAAA,CAAAA;AAExD,oBAAA,IAAIymH,CAAAA,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAAA,CAAenoD,QAAQ,MAAK35D,QAAa,CAAC03G,aAAa,IAAIoK,CAAAA,aAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAenoD,QAAQ,MAAK35D,QAAa,CAACsiH,iBAAiB,EAAE;wBAC1HR,aAAcziI,CAAAA,OAAO,CAACu2H,IAAI,GAAGoZ,YAAAA,CAAAA;AAC/B,qBAAA;AACF,iBAAA,CAAA,CAAA;AACF,aAAA;AACF,SAAA,CAAA,CAAA;AACF,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,iBAKC,GALDA,SAAAA,iBAAAA,CAAmB57H,KAAY,EAAA;QAC7B,IAAK,IAAIhX,IAAI,CAAGA,EAAAA,CAAAA,GAAIgX,MAAM0+C,cAAc,CAACj2D,MAAM,EAAEO,CAAK,EAAA,CAAA;YACpDgX,KAAM43C,CAAAA,QAAQ,CAAC5uD,CAAE,CAAA,GAAG,IAAI,CAACyX,MAAM,CAAC6K,UAAU,CAAU;AAAEtD,gBAAAA,EAAAA,EAAIhI,KAAM0+C,CAAAA,cAAc,CAAC11D,CAAAA,CAAE,CAACgf,EAAE;AAAC,aAAA,CAAA,CAAA;AACrFhI,YAAAA,KAAAA,CAAM43C,QAAQ,CAAC5uD,CAAE,CAAA,CAACigB,UAAU,EAAA,CAAA;AAC9B,SAAA;AACF,KAAA,CAAA;AAEA4yH,IAAAA,MAAAA,CAAAA,aAmBC,GAnBDA,SAAAA,aACE77H,CAAAA,KAAY,EACZ4+C,MAAiC,EAAA;QAEjC,IAAsBj2D,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAC+lD,MAAS,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAhCk9E,YAAAA,IAAAA,OAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAMhzH,KAAAA,GAAQ81C,MAAM,CAACk9E,OAAQ,CAAA,CAAA;AAC7B,YAAA,IAAMC,WAAc,GAAA,IAAI7T,KAAM,CAAA,IAAI,CAACznH,MAAM,CAAA,CAAA;AAEzCs7H,YAAAA,WAAAA,CAAYnhI,IAAI,GAAGkO,KAAAA,CAAAA;AACnBizH,YAAAA,WAAAA,CAAYn0H,aAAa,CAACk0H,OAAAA,CAAAA,CAAAA;AAC5B,SAAA;;AAGA,QAAA,IAAI,CAACr7H,MAAM,CAACu7H,eAAe,CAACh8H,KAAAA,CAAAA,CAAAA;;QAG5B,IAA4B,IAAA,UAAA,GAAA,oCAAA,CAAA,IAAI,CAACu7H,cAAc,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtClT,YAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAAC5nH,MAAM,CAACiH,WAAW,CAAC2gH,aAAAA,CAAAA,CAAAA;AAC1B,SAAA;AACF,KAAA,CAAA;;IAGA39D,MAAAA,CAAAA,mBAQC,GARDA,SAAAA,mBAAAA,GAAAA;QACE,IAAmB/hE,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,MAAAA,CAAOkQ,IAAI,CAAC,IAAI,CAAC4H,MAAM,CAACw7H,cAAc,CAAG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjDz0H,YAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAM6gH,gBAAgB,IAAI,CAAC5nH,MAAM,CAACw7H,cAAc,CAACz0H,IAAK,CAAA,CAAA;YAEtD,IAAiB5f,YAAbygI,CAAAA,aAAAA,EAAyBl+D,QAAU,CAAA,EAAA;AACrCk+D,gBAAAA,aAAAA,CAAc39D,mBAAmB,EAAA,CAAA;AACnC,aAAA;AACF,SAAA;AACF,KAAA,CAAA;IAEA,MAAQwxE,CAAAA,qBAMP,GAND,SAAQA,qBAAAA,GAAAA;QACN,IAA4B,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACX,cAAc,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtClT,YAAAA,IAAAA,aAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACTA,YAAAA,aAAAA,CAAcpgH,OAAO,EAAA,CAAA;AACvB,SAAA;AAEA,QAAA,IAAI,CAACszH,cAAc,CAAC9yI,MAAM,GAAG,CAAA,CAAA;AAC/B,KAAA,CAAA;AAEA;;MAGAwf,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAAA,GAAAA;AACE,QAAA,IAAI,CAACi0H,qBAAqB,EAAA,CAAA;;AAE5B,KAAA,CAAA;AA7HWZ,IAAAA,OAAAA,YAAAA,CAAAA;AA8HZ,CAAA;;AC3IM,IAAMa,eAAe,CAAE,CAAA;AACvB,IAAMC,aAAa,CAAE,CAAA;AACrB,IAAMC,yBAAyB,CAAE,CAAA;AACjC,IAAMC,qBAAqB,CAAE;;ACH7B,IAAMC,KAAAA,GAAQ,IAAI56F,UAAAA,CAAW,CAAG,CAAA,CAAA;AAChC,IAAM66F,OAAU,GAAA,IAAI/6F,YAAa86F,CAAAA,KAAAA,CAAMnvI,MAAM,CAAE,CAAA;AAC/C,IAAMqvI,OAAU,GAAA,IAAIzT,YAAauT,CAAAA,KAAAA,CAAMnvI,MAAM,CAAE,CAAA;AAC/C,IAAMsvI,cAAAA,GAAiB,IAAI36F,WAAAA,CAAY,IAAI32C,UAAW,CAAA;AAAC,IAAA,CAAA;AAAG,IAAA,CAAA;AAAE,CAAA,CAAA,CAAEgC,MAAM,CAAC,CAAC,CAAA,CAAE,KAAK,CAAE;;ACH/E,IAAIuvI,QAAS,CAAA;AACnB,CAAA,SAAUA,QAAQ,EAAA;AACfA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,YAAa,CAAA,GAAG,EAAE,GAAG,YAAA,CAAA;AACvCA,IAAAA,QAAQ,CAACA,QAAQ,CAAC,cAAe,CAAA,GAAG,EAAE,GAAG,cAAA,CAAA;AAC7C,CAAA,EAAGA,QAAAA,KAAaA,QAAAA,GAAW,EAAC,CAAA,CAAA;;ACDrB,IAAA,UAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,CAIGC,MAAM,EAAA;QACd,IAAI,CAACA,MAAM,GAAGA,MAAAA,CAAAA;QACd,IAAI,CAACC,SAAS,GAAG,CAAA,CAAA;QACjB,IAAI,CAACC,aAAa,GAAG,IAAIC,WAAAA,EAAAA,CAAAA;;AAPpBJ,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;IAeTz6E,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAAC26E,SAAS,GAAG,CAAA,CAAA;AACrB,KAAA,CAAA;AACA;;QAGAG,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAAA,GAAAA;QACI,OAAO,IAAI,CAACJ,MAAM,CAAA;AACtB,KAAA,CAAA;AACA;;QAGAluH,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;QACI,OAAO,IAAI,CAACmuH,SAAS,CAAA;AACzB,KAAA,CAAA;AACA;;AAEC,QACDllH,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,YAAYjJ,QAAQ,EAAA;QAChB,IAAI,CAACmuH,SAAS,GAAGnuH,QAAAA,CAAAA;AACrB,KAAA,CAAA;AACA;;QAGAuuH,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,GAAAA;AACI,QAAA,OAAO,IAAI,CAACL,MAAM,CAACp0I,MAAM,CAAA;AAC7B,KAAA,CAAA;AACA00I,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAAStxI,MAAM,EAAA;AACX,QAAA,OAAO,IAAI,CAACuxI,SAAS,CAACvxI,WAAW,EAAM,IAAA,EAAA,CAAA;AAC3C,KAAA,CAAA;AACAuxI,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAUvxI,MAAM,EAAA;AACZ,QAAA,OAAO,IAAI,CAACgxI,MAAM,CAAChxI,MAAO,CAAA,CAAA;AAC9B,KAAA,CAAA;AACAwxI,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAUxxI,MAAM,EAAA;AACZ,QAAA,OAAO,IAAI,CAACyxI,UAAU,CAACzxI,WAAW,EAAM,IAAA,EAAA,CAAA;AAC5C,KAAA,CAAA;AACAyxI,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAWzxI,MAAM,EAAA;AACb,QAAA,OAAO,IAAI,CAACgxI,MAAM,CAAChxI,MAAO,CAAA,GAAG,IAAI,CAACgxI,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,IAAI,CAAA,CAAA;AAC5D,KAAA,CAAA;AACA0xI,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAU1xI,MAAM,EAAA;AACZ,QAAA,OAAO,IAAI,CAACgxI,MAAM,CAAChxI,MAAO,CAAA,GAAG,IAAI,CAACgxI,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,IAAI,CAAA,GAAI,IAAI,CAACgxI,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,IAAI,EAAA,GAAK,IAAI,CAACgxI,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,IAAI,EAAA,CAAA;AAC3H,KAAA,CAAA;AACA2xI,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAW3xI,MAAM,EAAA;AACb,QAAA,OAAO,IAAI,CAAC0xI,SAAS,CAAC1xI,MAAY,CAAA,KAAA,CAAA,CAAA;AACtC,KAAA,CAAA;AACA4xI,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAU5xI,MAAM,EAAA;AACZ,QAAA,OAAO6xI,OAAOC,MAAM,CAAC,IAAID,MAAO,CAAA,IAAI,CAACF,UAAU,CAAC3xI,YAAY6xI,MAAAA,CAAO,IAAI,CAACF,UAAU,CAAC3xI,MAAS,GAAA,CAAA,CAAA,CAAA,IAAO6xI,OAAO,EAAE,CAAA,CAAA,CAAA,CAAA;AAChH,KAAA,CAAA;AACAE,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAW/xI,MAAM,EAAA;AACb,QAAA,OAAO6xI,OAAOG,OAAO,CAAC,IAAIH,MAAO,CAAA,IAAI,CAACF,UAAU,CAAC3xI,YAAY6xI,MAAAA,CAAO,IAAI,CAACF,UAAU,CAAC3xI,MAAS,GAAA,CAAA,CAAA,CAAA,IAAO6xI,OAAO,EAAE,CAAA,CAAA,CAAA,CAAA;AACjH,KAAA,CAAA;AACAI,IAAAA,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,CAAYjyI,MAAM,EAAA;AACd0wI,QAAAA,KAAK,CAAC,CAAE,CAAA,GAAG,IAAI,CAACgB,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA;QAC1B,OAAO2wI,OAAO,CAAC,CAAE,CAAA,CAAA;AACrB,KAAA,CAAA;AACAuB,IAAAA,MAAAA,CAAAA,WAIC,GAJDA,SAAAA,WAAAA,CAAYlyI,MAAM,EAAA;QACd0wI,KAAK,CAACG,iBAAiB,CAAI,GAAA,CAAA,CAAE,GAAG,IAAI,CAACa,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA;QAC/C0wI,KAAK,CAACG,iBAAiB,CAAI,GAAA,CAAA,CAAE,GAAG,IAAI,CAACa,SAAS,CAAC1xI,MAAS,GAAA,CAAA,CAAA,CAAA;QACxD,OAAO4wI,OAAO,CAAC,CAAE,CAAA,CAAA;AACrB,KAAA,CAAA;AACAuB,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAUnyI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;AACnB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAAA,CAAO,GAAG9E,KAAAA,CAAAA;AAC1B,KAAA,CAAA;AACAk3I,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAWpyI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAAA,CAAO,GAAG9E,KAAAA,CAAAA;AAC1B,KAAA,CAAA;AACAm3I,IAAAA,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAWryI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAAA,CAAO,GAAG9E,KAAAA,CAAAA;AACtB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,CAAA,CAAA;AACvC,KAAA,CAAA;AACAo3I,IAAAA,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAYtyI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAAA,CAAO,GAAG9E,KAAAA,CAAAA;AACtB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,CAAA,CAAA;AACvC,KAAA,CAAA;AACAq3I,IAAAA,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAWvyI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAAA,CAAO,GAAG9E,KAAAA,CAAAA;AACtB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,EAAA,CAAA;AACnC,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,EAAA,CAAA;AACvC,KAAA,CAAA;AACAs3I,IAAAA,MAAAA,CAAAA,WAKC,GALDA,SAAAA,WAAYxyI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAAA,CAAO,GAAG9E,KAAAA,CAAAA;AACtB,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,CAAA,CAAA;AACnC,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,EAAA,CAAA;AACnC,QAAA,IAAI,CAAC81I,MAAM,CAAChxI,MAAS,GAAA,CAAA,CAAE,GAAG9E,KAAS,IAAA,EAAA,CAAA;AACvC,KAAA,CAAA;AACAu3I,IAAAA,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAWzyI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;QACpB,IAAI,CAACq3I,UAAU,CAACvyI,MAAAA,EAAQ6B,OAAOgwI,MAAOC,CAAAA,MAAM,CAAC,EAAI52I,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACjD,IAAI,CAACq3I,UAAU,CAACvyI,MAAS,GAAA,CAAA,EAAG6B,MAAOgwI,CAAAA,MAAAA,CAAOC,MAAM,CAAC,EAAI52I,EAAAA,KAAAA,IAAS22I,MAAO,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACzE,KAAA,CAAA;AACAa,IAAAA,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAY1yI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;QACrB,IAAI,CAACs3I,WAAW,CAACxyI,MAAAA,EAAQ6B,OAAOgwI,MAAOG,CAAAA,OAAO,CAAC,EAAI92I,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA;QACnD,IAAI,CAACs3I,WAAW,CAACxyI,MAAS,GAAA,CAAA,EAAG6B,MAAOgwI,CAAAA,MAAAA,CAAOG,OAAO,CAAC,EAAI92I,EAAAA,KAAAA,IAAS22I,MAAO,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC3E,KAAA,CAAA;AACAc,IAAAA,MAAAA,CAAAA,YAGC,GAHDA,SAAAA,YAAa3yI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;QACtBy1I,OAAO,CAAC,EAAE,GAAGz1I,KAAAA,CAAAA;AACb,QAAA,IAAI,CAACq3I,UAAU,CAACvyI,MAAQ0wI,EAAAA,KAAK,CAAC,CAAE,CAAA,CAAA,CAAA;AACpC,KAAA,CAAA;AACAkC,IAAAA,MAAAA,CAAAA,YAIC,GAJDA,SAAAA,YAAa5yI,CAAAA,MAAM,EAAE9E,KAAK,EAAA;QACtB01I,OAAO,CAAC,EAAE,GAAG11I,KAAAA,CAAAA;QACb,IAAI,CAACq3I,UAAU,CAACvyI,MAAAA,EAAQ0wI,KAAK,CAACG,cAAAA,GAAiB,IAAI,CAAE,CAAA,CAAA,CAAA;QACrD,IAAI,CAAC0B,UAAU,CAACvyI,MAAAA,GAAS,GAAG0wI,KAAK,CAACG,cAAiB,GAAA,CAAA,GAAI,CAAE,CAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;AACA;;;;QAKAgC,MAAAA,CAAAA,mBAUC,GAVDA,SAAAA,mBAAAA,GAAAA;QACI,IAAI,IAAI,CAAC7B,MAAM,CAACp0I,MAAM,GAAG,IAAI,CAACq0I,SAAS,GAAGV,UAAAA,GACtCC,sBAAwB,EAAA;AACxB,YAAA,MAAM,IAAIrxI,KAAM,CAAA,gEAAA,CAAA,CAAA;AACpB,SAAA;AACA,QAAA,IAAI8hB,MAAS,GAAA,EAAA,CAAA;AACb,QAAA,IAAK,IAAI9jB,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIqzI,wBAAwBrzI,CAAK,EAAA,CAAA;YAC7C8jB,MAAUitE,IAAAA,MAAAA,CAAO4kD,YAAY,CAAC,IAAI,CAACxB,QAAQ,CAAC,IAAI,CAACL,SAAS,GAAGV,UAAapzI,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC9E,SAAA;QACA,OAAO8jB,MAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;AAGC,QACD8xH,OAAAA,QAGC,GAHDA,SAAAA,QAASC,CAAAA,MAAM,EAAEC,aAAa,EAAA;AAC1B,QAAA,IAAMC,MAASF,GAAAA,MAAAA,GAAS,IAAI,CAACtB,SAAS,CAACsB,MAAAA,CAAAA,CAAAA;QACvC,OAAOC,aAAAA,GAAgB,IAAI,CAACzB,SAAS,CAAC0B,MAAU,CAAA,GAAA,IAAI,CAAC1B,SAAS,CAAC0B,MAAAA,GAASD,aAAiB,CAAA,GAAA,CAAA,CAAA;AAC7F,KAAA,CAAA;AACA;;AAEC,QACDE,OAAAA,OAIC,GAJDA,SAAAA,OAAQx1I,CAAAA,CAAC,EAAEqC,MAAM,EAAA;AACbrC,QAAAA,CAAAA,CAAEq1I,MAAM,GAAGhzI,MAAAA,GAAS,IAAI,CAAC0xI,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA;QACnCrC,CAAEy1I,CAAAA,EAAE,GAAG,IAAI,CAAA;QACX,OAAOz1I,CAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;;;;;;;AAUC,QACD01I,OAAAA,QASC,GATDA,SAAAA,QAASrzI,CAAAA,MAAM,EAAEszI,YAAY,EAAA;QACzBtzI,MAAU,IAAA,IAAI,CAAC0xI,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAMpD,MAAS,GAAA,IAAI,CAAC80I,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA;QAC9BA,MAAUuwI,IAAAA,UAAAA,CAAAA;QACV,IAAMgD,SAAAA,GAAY,IAAI,CAACvC,MAAM,CAACwC,QAAQ,CAACxzI,QAAQA,MAASpD,GAAAA,MAAAA,CAAAA,CAAAA;AACxD,QAAA,IAAI02I,YAAiBxC,KAAAA,QAAAA,CAAS2C,UAAU,EACpC,OAAOF,SAAAA,CAAAA;AAEP,aAAA,OAAO,IAAI,CAACrC,aAAa,CAACwC,MAAM,CAACH,SAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AACA;;;;;;AAMC,QACDI,OAAAA,mBAKC,GALDA,SAAAA,mBAAoB1+H,CAAAA,CAAC,EAAEjV,MAAM,EAAA;QACzB,IAAI,OAAOiV,MAAM,QAAU,EAAA;YACvB,OAAO,IAAI,CAACo+H,QAAQ,CAACrzI,MAAAA,CAAAA,CAAAA;AACzB,SAAA;AACA,QAAA,OAAO,IAAI,CAACmzI,OAAO,CAACl+H,CAAGjV,EAAAA,MAAAA,CAAAA,CAAAA;AAC3B,KAAA,CAAA;AACA;;AAEC,QACD4zI,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,WAAW5zI,MAAM,EAAA;AACb,QAAA,OAAOA,MAAS,GAAA,IAAI,CAAC0xI,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA;AACnC,KAAA,CAAA;AACA;;AAEC,QACD6zI,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,SAAS7zI,MAAM,EAAA;AACX,QAAA,OAAOA,SAAS,IAAI,CAAC0xI,SAAS,CAAC1xI,MAAAA,CAAAA,GAAUuwI;AAC7C,KAAA,CAAA;AACA;;AAEC,QACDuD,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,aAAa9zI,MAAM,EAAA;QACf,OAAO,IAAI,CAAC0xI,SAAS,CAAC1xI,SAAS,IAAI,CAAC0xI,SAAS,CAAC1xI,MAAAA,CAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AACA+zI,IAAAA,MAAAA,CAAAA,gBAWC,GAXDA,SAAAA,gBAAAA,CAAiBC,KAAK,EAAA;QAClB,IAAIA,KAAAA,CAAMp3I,MAAM,IAAI4zI,sBAAwB,EAAA;YACxC,MAAM,IAAIrxI,MAAM,8CACZqxI,GAAAA,sBAAAA,CAAAA,CAAAA;AACR,SAAA;AACA,QAAA,IAAK,IAAIrzI,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIqzI,wBAAwBrzI,CAAK,EAAA,CAAA;AAC7C,YAAA,IAAI62I,KAAMvhI,CAAAA,UAAU,CAACtV,CAAAA,CAAAA,IAAM,IAAI,CAACm0I,QAAQ,CAAC,IAAI,CAACxuH,QAAQ,EAAA,GAAKytH,aAAapzI,CAAI,CAAA,EAAA;gBACxE,OAAO,KAAA,CAAA;AACX,aAAA;AACJ,SAAA;QACA,OAAO,IAAA,CAAA;AACX,KAAA,CAAA;AACA;;AAEC,QACD82I,OAAAA,gBASC,GATDA,SAAAA,gBAAiBC,CAAAA,YAAY,EAAEC,UAAU,EAAA;AACrC,QAAA,IAAMtoI,MAAM,EAAE,CAAA;AACd,QAAA,IAAK,IAAI1O,CAAI,GAAA,CAAA,EAAGA,CAAIg3I,GAAAA,UAAAA,EAAY,EAAEh3I,CAAG,CAAA;AACjC,YAAA,IAAM2P,MAAMonI,YAAa/2I,CAAAA,CAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAI2P,QAAQ,IAAM,EAAA;AACdjB,gBAAAA,GAAAA,CAAI/M,IAAI,CAACgO,GAAAA,CAAAA,CAAAA;AACb,aAAA;AACJ,SAAA;QACA,OAAOjB,GAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;;AAKC,QACDuoI,OAAAA,aASC,GATDA,SAAAA,aAAcF,CAAAA,YAAY,EAAEC,UAAU,EAAA;AAClC,QAAA,IAAMtoI,MAAM,EAAE,CAAA;AACd,QAAA,IAAK,IAAI1O,CAAI,GAAA,CAAA,EAAGA,CAAIg3I,GAAAA,UAAAA,EAAY,EAAEh3I,CAAG,CAAA;AACjC,YAAA,IAAM2P,MAAMonI,YAAa/2I,CAAAA,CAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAI2P,QAAQ,IAAM,EAAA;gBACdjB,GAAI/M,CAAAA,IAAI,CAACgO,GAAAA,CAAIunI,MAAM,EAAA,CAAA,CAAA;AACvB,aAAA;AACJ,SAAA;QACA,OAAOxoI,GAAAA,CAAAA;AACX,KAAA,CAAA;AAzOA;;AAEC,QACD,UAAOyoI,CAAAA,QAEN,GAFD,SAAOA,SAASC,SAAS,EAAA;QACrB,OAAO,IAbFxD,UAaiB,CAAA,IAAIxxI,UAAWg1I,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA;AACzC,KAAA,CAAA;AAdSxD,IAAAA,OAAAA,UAAAA,CAAAA;AAmPZ,CAAA,EAAA;;ACpPM,IAAA,OAAMyD,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,OAAAA,CAIGC,gBAAgB,EAAA;AACxB,qDACA,IAAI,CAACC,QAAQ,GAAG,CAAA,CAAA;AAChB,iDACA,IAAI,CAACxB,MAAM,GAAG,IAAA,CAAA;AACd,0DACA,IAAI,CAACyB,aAAa,GAAG,CAAA,CAAA;AACrB,6DACA,IAAI,CAACC,QAAQ,GAAG,KAAA,CAAA;AAChB,4DACA,IAAI,CAACC,YAAY,GAAG,CAAA,CAAA;AACpB,+CACA,IAAI,CAACC,OAAO,GAAG,EAAE,CAAA;AACjB,mDACA,IAAI,CAACC,gBAAgB,GAAG,CAAA,CAAA;AACxB,mEACA,IAAI,CAACC,cAAc,GAAG,KAAA,CAAA;QACtB,IAAI,CAACC,WAAW,GAAG,IAAA,CAAA;QACnB,IAAI,CAACC,YAAY,GAAG,IAAIC,WAAAA,EAAAA,CAAAA;QACxB,IAAIC,YAAAA,CAAAA;AACJ,QAAA,IAAI,CAACX,gBAAkB,EAAA;YACnBW,YAAe,GAAA,IAAA,CAAA;SAEd,MAAA;YACDA,YAAeX,GAAAA,gBAAAA,CAAAA;AACnB,SAAA;AACA;;;AAGC,YACD,IAAI,CAACrB,EAAE,GAAGrC,UAAAA,CAAWuD,QAAQ,CAACc,YAAAA,CAAAA,CAAAA;QAC9B,IAAI,CAACC,KAAK,GAAGD,YAAAA,CAAAA;;AAnCRZ,IAAAA,IAAAA,MAAAA,GAAAA,OAAAA,CAAAA,SAAAA,CAAAA;IAqCTl+E,MAAAA,CAAAA,KAYC,GAZDA,SAAAA,KAAAA,GAAAA;QACI,IAAI,CAAC88E,EAAE,CAAC98E,KAAK,EAAA,CAAA;AACb,QAAA,IAAI,CAAC++E,KAAK,GAAG,IAAI,CAACjC,EAAE,CAAC/B,QAAQ,EAAA,CAAA;QAC7B,IAAI,CAACqD,QAAQ,GAAG,CAAA,CAAA;QAChB,IAAI,CAACxB,MAAM,GAAG,IAAA,CAAA;QACd,IAAI,CAACyB,aAAa,GAAG,CAAA,CAAA;QACrB,IAAI,CAACC,QAAQ,GAAG,KAAA,CAAA;QAChB,IAAI,CAACC,YAAY,GAAG,CAAA,CAAA;QACpB,IAAI,CAACC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAACC,gBAAgB,GAAG,CAAA,CAAA;QACxB,IAAI,CAACC,cAAc,GAAG,KAAA,CAAA;QACtB,IAAI,CAACC,WAAW,GAAG,IAAA,CAAA;AACvB,KAAA,CAAA;AACA;;;;;;AAMC,QACDK,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,cAAcA,aAAa,EAAA;QACvB,IAAI,CAACN,cAAc,GAAGM,aAAAA,CAAAA;AAC1B,KAAA,CAAA;AACA;;;;QAKAC,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,GAAAA;QACI,OAAO,IAAI,CAACnC,EAAE,CAAA;AAClB,KAAA,CAAA;AACA;;;QAIAoC,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,GAAAA;QACI,OAAO,IAAI,CAACpC,EAAE,CAAChC,KAAK,EAAGoC,CAAAA,QAAQ,CAAC,IAAI,CAACJ,EAAE,CAACtwH,QAAQ,EAAA,EAAI,IAAI,CAACswH,EAAE,CAACtwH,QAAQ,EAAA,GAAK,IAAI,CAAC9iB,MAAM,EAAA,CAAA,CAAA;AACxF,KAAA,CAAA;AACA;;;;;;;;AAQC,QACDy1I,OAAAA,IAeC,GAfDA,SAAAA,IAAK/zI,CAAAA,IAAI,EAAEg0I,gBAAgB,EAAA;;AAEvB,QAAA,IAAIh0I,IAAO,GAAA,IAAI,CAACgzI,QAAQ,EAAE;YACtB,IAAI,CAACA,QAAQ,GAAGhzI,IAAAA,CAAAA;AACpB,SAAA;;;AAGA,QAAA,IAAMi0I,aAAa,EAAI,IAAI,CAACvC,EAAE,CAAC/B,QAAQ,EAAA,GAAK,IAAI,CAACgE,KAAK,GAAGK,gBAAe,CAAA,GAAM,IAAMh0I,IAAO,GAAA,CAAA,CAAA;;AAE3F,QAAA,MAAO,IAAI,CAAC2zI,KAAK,GAAGM,UAAAA,GAAaj0I,OAAOg0I,gBAAkB,CAAA;AACtD,YAAA,IAAME,YAAe,GAAA,IAAI,CAACxC,EAAE,CAAC/B,QAAQ,EAAA,CAAA;YACrC,IAAI,CAAC+B,EAAE,GA/FNoB,QA+FiBqB,cAAc,CAAC,IAAI,CAACzC,EAAE,CAAA,CAAA;YACxC,IAAI,CAACiC,KAAK,IAAI,IAAI,CAACjC,EAAE,CAAC/B,QAAQ,EAAKuE,GAAAA,YAAAA,CAAAA;AACvC,SAAA;QACA,IAAI,CAACna,GAAG,CAACka,UAAAA,CAAAA,CAAAA;AACb,KAAA,CAAA;AACAla,IAAAA,MAAAA,CAAAA,GAIC,GAJDA,SAAAA,GAAAA,CAAI8Y,SAAS,EAAA;AACT,QAAA,IAAK,IAAIp3I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIo3I,WAAWp3I,CAAK,EAAA,CAAA;YAChC,IAAI,CAACi2I,EAAE,CAACjB,SAAS,CAAC,EAAE,IAAI,CAACkD,KAAK,EAAE,CAAA,CAAA,CAAA;AACpC,SAAA;AACJ,KAAA,CAAA;AACAlD,IAAAA,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAUj3I,KAAK,EAAA;QACX,IAAI,CAACk4I,EAAE,CAACjB,SAAS,CAAC,IAAI,CAACkD,KAAK,IAAI,CAAGn6I,EAAAA,KAAAA,CAAAA,CAAAA;AACvC,KAAA,CAAA;AACAm3I,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAWn3I,KAAK,EAAA;QACZ,IAAI,CAACk4I,EAAE,CAACf,UAAU,CAAC,IAAI,CAACgD,KAAK,IAAI,CAAGn6I,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AACAq3I,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAWr3I,KAAK,EAAA;QACZ,IAAI,CAACk4I,EAAE,CAACb,UAAU,CAAC,IAAI,CAAC8C,KAAK,IAAI,CAAGn6I,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AACAu3I,IAAAA,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAWv3I,KAAK,EAAA;QACZ,IAAI,CAACk4I,EAAE,CAACX,UAAU,CAAC,IAAI,CAAC4C,KAAK,IAAI,CAAGn6I,EAAAA,KAAAA,CAAAA,CAAAA;AACxC,KAAA,CAAA;AACAy3I,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAaz3I,KAAK,EAAA;QACd,IAAI,CAACk4I,EAAE,CAACT,YAAY,CAAC,IAAI,CAAC0C,KAAK,IAAI,CAAGn6I,EAAAA,KAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA03I,IAAAA,MAAAA,CAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAa13I,KAAK,EAAA;QACd,IAAI,CAACk4I,EAAE,CAACR,YAAY,CAAC,IAAI,CAACyC,KAAK,IAAI,CAAGn6I,EAAAA,KAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AACA;;;AAGC,QACD46I,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,QAAQ56I,KAAK,EAAA;QACT,IAAI,CAACu6I,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACb,IAAI,CAACtD,SAAS,CAACj3I,KAAAA,CAAAA,CAAAA;AACnB,KAAA,CAAA;AACA;;;AAGC,QACD66I,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,SAAS76I,KAAK,EAAA;QACV,IAAI,CAACu6I,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACb,IAAI,CAACpD,UAAU,CAACn3I,KAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AACA;;;AAGC,QACD86I,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,SAAS96I,KAAK,EAAA;QACV,IAAI,CAACu6I,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACb,IAAI,CAAClD,UAAU,CAACr3I,KAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AACA;;;AAGC,QACD+6I,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,SAAS/6I,KAAK,EAAA;QACV,IAAI,CAACu6I,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACb,IAAI,CAAChD,UAAU,CAACv3I,KAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AACA;;;AAGC,QACDg7I,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,WAAWh7I,KAAK,EAAA;QACZ,IAAI,CAACu6I,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACb,IAAI,CAAC9C,YAAY,CAACz3I,KAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;AACA;;;AAGC,QACDi7I,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,WAAWj7I,KAAK,EAAA;QACZ,IAAI,CAACu6I,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;QACb,IAAI,CAAC7C,YAAY,CAAC13I,KAAAA,CAAAA,CAAAA;AACtB,KAAA,CAAA;IACAk7I,MAAAA,CAAAA,YAKC,GALDA,SAAAA,YAAAA,CAAaC,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACrC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,SAASo7I,YAAc,EAAA;YAC9C,IAAI,CAACR,OAAO,CAAC56I,KAAAA,CAAAA,CAAAA;YACb,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;IACAE,MAAAA,CAAAA,aAKC,GALDA,SAAAA,aAAAA,CAAcF,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACtC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,SAASo7I,YAAc,EAAA;YAC9C,IAAI,CAACP,QAAQ,CAAC76I,KAAAA,CAAAA,CAAAA;YACd,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;IACAG,MAAAA,CAAAA,aAKC,GALDA,SAAAA,aAAAA,CAAcH,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACtC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,SAASo7I,YAAc,EAAA;YAC9C,IAAI,CAACN,QAAQ,CAAC96I,KAAAA,CAAAA,CAAAA;YACd,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;IACAI,MAAAA,CAAAA,aAKC,GALDA,SAAAA,aAAAA,CAAcJ,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACtC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,UAAUo7I,YAAc,EAAA;YAC/C,IAAI,CAACL,QAAQ,CAAC/6I,KAAAA,CAAAA,CAAAA;YACd,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;IACAK,MAAAA,CAAAA,eAKC,GALDA,SAAAA,eAAAA,CAAgBL,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACxC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,SAASo7I,YAAc,EAAA;YAC9C,IAAI,CAACJ,UAAU,CAACh7I,KAAAA,CAAAA,CAAAA;YAChB,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;IACAM,MAAAA,CAAAA,eAKC,GALDA,SAAAA,eAAAA,CAAgBN,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACxC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,SAASo7I,YAAc,EAAA;YAC9C,IAAI,CAACH,UAAU,CAACj7I,KAAAA,CAAAA,CAAAA;YAChB,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;IACAO,MAAAA,CAAAA,cAKC,GALDA,SAAAA,cAAAA,CAAeP,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACvC,QAAA,IAAI,IAAI,CAACtB,cAAc,IAAI95I,SAASo7I,YAAc,EAAA;YAC9C,IAAI,CAACO,SAAS,CAAC37I,KAAAA,CAAAA,CAAAA;YACf,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;AACA;;QAGAS,MAAAA,CAAAA,cAKC,GALDA,SAAAA,eAAeT,OAAO,EAAEn7I,KAAK,EAAEo7I,YAAY,EAAA;AACvC,QAAA,IAAIp7I,SAASo7I,YAAc,EAAA;YACvB,IAAI,CAACS,MAAM,CAAC77I,KAAAA,CAAAA,CAAAA;YACZ,IAAI,CAACgzG,IAAI,CAACmoC,OAAAA,CAAAA,CAAAA;AACd,SAAA;AACJ,KAAA,CAAA;AACA;;;;AAIC,QACDU,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,OAAO16I,GAAG,EAAA;AACN,QAAA,IAAIA,GAAO,IAAA,IAAI,CAAC2D,MAAM,EAAI,EAAA;AACtB,YAAA,MAAM,IAAIrB,SAAU,CAAA,gDAAA,CAAA,CAAA;AACxB,SAAA;AACJ,KAAA,CAAA;AACA;;;QAIAq4I,MAAAA,CAAAA,SAIC,GAJDA,SAAAA,SAAAA,GAAAA;QACI,IAAI,IAAI,CAACpC,QAAQ,EAAE;AACf,YAAA,MAAM,IAAIj2I,SAAU,CAAA,uDAAA,CAAA,CAAA;AACxB,SAAA;AACJ,KAAA,CAAA;AACA;;AAEC,QACDuvG,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,KAAKmoC,OAAO,EAAA;AACR,QAAA,IAAI,IAAI,CAACnD,MAAM,KAAK,IAChB,EAAA,IAAI,CAACA,MAAM,CAACmD,OAAAA,CAAQ,GAAG,IAAI,CAACr2I,MAAM,EAAA,CAAA;AAC1C,KAAA,CAAA;AACA;;QAGAA,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;QACI,OAAO,IAAI,CAACozI,EAAE,CAAC/B,QAAQ,EAAK,GAAA,IAAI,CAACgE,KAAK,CAAA;AAC1C,KAAA,CAAA;AAyBA;;;;AAIC,QACDwB,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,UAAU72I,MAAM,EAAA;AACZ,QAAA,IAAI,CAACy1I,IAAI,CAAClF,UAAAA,EAAY;AACtB,QAAA,IAAI,CAACgC,UAAU,CAAC,IAAI,CAACvyI,MAAM,KAAKA,MAASuwI,GAAAA,UAAAA,CAAAA,CAAAA;AAC7C,KAAA,CAAA;AACA;;;;AAIC,QACD0G,MAAAA,CAAAA,WAWC,GAXDA,SAAAA,YAAYC,SAAS,EAAA;AACjB,QAAA,IAAI,CAACF,SAAS,EAAA,CAAA;AACd,QAAA,IAAI,IAAI,CAAC9D,MAAM,IAAI,IAAM,EAAA;YACrB,IAAI,CAACA,MAAM,GAAG,EAAE,CAAA;AACpB,SAAA;QACA,IAAI,CAACyB,aAAa,GAAGuC,SAAAA,CAAAA;AACrB,QAAA,IAAK,IAAI/5I,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAI+5I,WAAW/5I,CAAK,EAAA,CAAA;AAChC,YAAA,IAAI,CAAC+1I,MAAM,CAAC/1I,CAAE,CAAA,GAAG;AACrB,SAAA;QACA,IAAI,CAACy3I,QAAQ,GAAG,IAAA,CAAA;AAChB,QAAA,IAAI,CAACC,YAAY,GAAG,IAAI,CAAC70I,MAAM,EAAA,CAAA;AACnC,KAAA,CAAA;AACA;;;;QAKAm3I,MAAAA,CAAAA,SAmDC,GAnDDA,SAAAA,SAAAA,GAAAA;QACI,IAAI,IAAI,CAACjE,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC0B,QAAQ,EAAE;AACvC,YAAA,MAAM,IAAIz1I,KAAM,CAAA,mDAAA,CAAA,CAAA;AACpB,SAAA;QACA,IAAI,CAAC62I,QAAQ,CAAC,CAAA,CAAA,CAAA;QACd,IAAMoB,SAAAA,GAAY,IAAI,CAACp3I,MAAM,EAAA,CAAA;;AAE7B,QAAA,IAAI7C,CAAI,GAAA,IAAI,CAACw3I,aAAa,GAAG,CAAA,CAAA;;QAE7B,MAAOx3I,CAAAA,IAAK,CAAK,IAAA,IAAI,CAAC+1I,MAAM,CAAC/1I,CAAE,CAAA,IAAI,CAAGA,EAAAA,CAAAA,EAAAA,CAAK,EAAE;AAC7C,QAAA,IAAMk6I,eAAel6I,CAAI,GAAA,CAAA,CAAA;;QAEzB,MAAOA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;;AAEhB,YAAA,IAAI,CAAC44I,QAAQ,CAAC,IAAI,CAAC7C,MAAM,CAAC/1I,CAAAA,CAAE,IAAI,CAAA,GAAIi6I,YAAY,IAAI,CAAClE,MAAM,CAAC/1I,EAAE,GAAG,CAAA,CAAA,CAAA;AACrE,SAAA;QACA,IAAMm6I,eAAAA,GAAkB;AACxB,QAAA,IAAI,CAACvB,QAAQ,CAACqB,SAAY,GAAA,IAAI,CAACvC,YAAY,CAAA,CAAA;AAC3C,QAAA,IAAMj7H,GAAM,GAACy9H,CAAAA,YAAAA,GAAeC,eAAc,IAAKhH,YAAAA,CAAAA;QAC/C,IAAI,CAACyF,QAAQ,CAACn8H,GAAAA,CAAAA,CAAAA;;AAEd,QAAA,IAAI29H,eAAkB,GAAA,CAAA,CAAA;QACtB,IAAMC,GAAAA,GAAM,IAAI,CAACnC,KAAK,CAAA;QACtBoC,UAAY,EAAA,IAAKt6I,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAAC23I,OAAO,CAACl4I,MAAM,EAAEO,CAAK,EAAA,CAAA;YAClD,IAAMu6I,GAAAA,GAAM,IAAI,CAACtE,EAAE,CAAC/B,QAAQ,EAAA,GAAK,IAAI,CAACyD,OAAO,CAAC33I,CAAE,CAAA,CAAA;AAChD,YAAA,IAAIyc,OAAO,IAAI,CAACw5H,EAAE,CAAC5B,SAAS,CAACkG,GAAM,CAAA,EAAA;AAC/B,gBAAA,IAAK,IAAIprI,CAAIgkI,GAAAA,YAAAA,EAAchkI,CAAIsN,GAAAA,GAAAA,EAAKtN,KAAKgkI,YAAc,CAAA;AACnD,oBAAA,IAAI,IAAI,CAAC8C,EAAE,CAAC5B,SAAS,CAACgG,GAAAA,GAAMlrI,CAAM,CAAA,IAAA,IAAI,CAAC8mI,EAAE,CAAC5B,SAAS,CAACkG,MAAMprI,CAAI,CAAA,EAAA;wBAC1D,SAASmrI,UAAAA,CAAAA;AACb,qBAAA;AACJ,iBAAA;AACAF,gBAAAA,eAAAA,GAAkB,IAAI,CAACzC,OAAO,CAAC33I,CAAE,CAAA,CAAA;AACjC,gBAAA,MAAA;AACJ,aAAA;AACJ,SAAA;AACA,QAAA,IAAIo6I,eAAiB,EAAA;;;YAGjB,IAAI,CAAClC,KAAK,GAAG,IAAI,CAACjC,EAAE,CAAC/B,QAAQ,EAAK+F,GAAAA,SAAAA,CAAAA;;YAElC,IAAI,CAAChE,EAAE,CAACb,UAAU,CAAC,IAAI,CAAC8C,KAAK,EAAEkC,eAAkBH,GAAAA,SAAAA,CAAAA,CAAAA;SAEhD,MAAA;;;AAGD,YAAA,IAAI,CAACtC,OAAO,CAACh2I,IAAI,CAAC,IAAI,CAACkB,MAAM,EAAA,CAAA,CAAA;;AAE7B,YAAA,IAAI,CAACozI,EAAE,CAACb,UAAU,CAAC,IAAI,CAACa,EAAE,CAAC/B,QAAQ,EAAK+F,GAAAA,SAAAA,EAAW,IAAI,CAACp3I,MAAM,EAAKo3I,GAAAA,SAAAA,CAAAA,CAAAA;AACvE,SAAA;QACA,IAAI,CAACxC,QAAQ,GAAG,KAAA,CAAA;QAChB,OAAOwC,SAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;QAGAvnF,MAAAA,CAAAA,MAoBC,GApBDA,SAAAA,OAAO8nF,UAAU,EAAEC,mBAAmB,EAAEC,eAAe,EAAA;QACnD,IAAMC,WAAAA,GAAcD,kBAAkBpH,kBAAqB,GAAA,CAAA,CAAA;AAC3D,QAAA,IAAImH,mBAAqB,EAAA;AACrB,YAAA,IAAMG,eAAkBH,GAAAA,mBAAAA,CAAAA;YACxB,IAAI,CAACnC,IAAI,CAAC,IAAI,CAACf,QAAQ,EAAEnE,aACrBC,sBAAyBsH,GAAAA,WAAAA,CAAAA,CAAAA;YAC7B,IAAIC,eAAAA,CAAgBn7I,MAAM,IAAI4zI,sBAAwB,EAAA;gBAClD,MAAM,IAAI7xI,UAAU,8CAChB6xI,GAAAA,sBAAAA,CAAAA,CAAAA;AACR,aAAA;AACA,YAAA,IAAK,IAAIrzI,CAAIqzI,GAAAA,sBAAAA,GAAyB,CAAGrzI,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AAClD,gBAAA,IAAI,CAACg1I,SAAS,CAAC4F,eAAAA,CAAgBtlI,UAAU,CAACtV,CAAAA,CAAAA,CAAAA,CAAAA;AAC9C,aAAA;AACJ,SAAA;AACA,QAAA,IAAI,CAACs4I,IAAI,CAAC,IAAI,CAACf,QAAQ,EAAEnE,UAAauH,GAAAA,WAAAA,CAAAA,CAAAA;QACtC,IAAI,CAACjB,SAAS,CAACc,UAAAA,CAAAA,CAAAA;AACf,QAAA,IAAIG,WAAa,EAAA;YACb,IAAI,CAAC9B,QAAQ,CAAC,IAAI,CAAC5C,EAAE,CAAC/B,QAAQ,EAAA,GAAK,IAAI,CAACgE,KAAK,CAAA,CAAA;AACjD,SAAA;AACA,QAAA,IAAI,CAACjC,EAAE,CAACrnH,WAAW,CAAC,IAAI,CAACspH,KAAK,CAAA,CAAA;AAClC,KAAA,CAAA;AACA;;AAEC,QACD2C,OAAAA,kBAEC,GAFDA,SAAAA,kBAAmBL,CAAAA,UAAU,EAAEC,mBAAmB,EAAA;AAC9C,QAAA,IAAI,CAAC/nF,MAAM,CAAC8nF,UAAAA,EAAYC,mBAAqB,EAAA,IAAA,CAAA,CAAA;AACjD,KAAA,CAAA;AACA;;;AAGC,QACDK,OAAAA,aASC,GATDA,SAAAA,aAAcC,CAAAA,KAAK,EAAEC,KAAK,EAAA;AACtB,QAAA,IAAMC,cAAc,IAAI,CAAChF,EAAE,CAAC/B,QAAQ,EAAK6G,GAAAA,KAAAA,CAAAA;AACzC,QAAA,IAAMG,eAAeD,WAAc,GAAA,IAAI,CAAChF,EAAE,CAAC1B,SAAS,CAAC0G,WAAAA,CAAAA,CAAAA;AACrD,QAAA,IAAME,KAAKH,KAAQ,GAAA,IAAI,CAAC/E,EAAE,CAAC5B,SAAS,CAAC6G,YACjC,CAAA,IAAA,IAAI,CAACjF,EAAE,CAAC5B,SAAS,CAAC6G,eAAeF,KAAU,CAAA,IAAA,CAAA,CAAA;;AAE/C,QAAA,IAAI,CAACG,EAAI,EAAA;YACL,MAAM,IAAI35I,SAAU,CAAA,qBAAA,GAAwBw5I,KAAQ,GAAA,cAAA,CAAA,CAAA;AACxD,SAAA;AACJ,KAAA,CAAA;AACA;;;;;;;;QASAI,MAAAA,CAAAA,WAKC,GALDA,SAAAA,YAAYC,SAAS,EAAEC,SAAS,EAAE71D,SAAS,EAAA;AACvC,QAAA,IAAI,CAACo0D,SAAS,EAAA,CAAA;QACd,IAAI,CAACjC,gBAAgB,GAAG0D,SAAAA,CAAAA;AACxB,QAAA,IAAI,CAAChD,IAAI,CAAClF,UAAAA,EAAYiI,SAAYC,GAAAA,SAAAA,CAAAA,CAAAA;AAClC,QAAA,IAAI,CAAChD,IAAI,CAAC7yD,SAAW41D,EAAAA,SAAAA,GAAYC;AACrC,KAAA,CAAA;AACA;;;;;;QAOAC,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;AACI,QAAA,IAAI,CAACnG,UAAU,CAAC,IAAI,CAACwC,gBAAgB,CAAA,CAAA;QACrC,OAAO,IAAI,CAAC/0I,MAAM,EAAA,CAAA;AACtB,KAAA,CAAA;AACA;;;;;;AAMC,QACD24I,MAAAA,CAAAA,kBAaC,GAbDA,SAAAA,mBAAmBzxI,CAAC,EAAA;AAChB,QAAA,IAAI,CAACA,CAAG,EAAA;YACJ,OAAO,CAAA,CAAA;AACX,SAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC+tI,WAAW,EAAE;YACnB,IAAI,CAACA,WAAW,GAAG,IAAI56H,GAAAA,EAAAA,CAAAA;AAC3B,SAAA;AACA,QAAA,IAAI,IAAI,CAAC46H,WAAW,CAACh/E,GAAG,CAAC/uD,CAAI,CAAA,EAAA;AACzB,YAAA,OAAO,IAAI,CAAC+tI,WAAW,CAACh6H,GAAG,CAAC/T,CAAAA,CAAAA,CAAAA;AAChC,SAAA;AACA,QAAA,IAAMlH,MAAS,GAAA,IAAI,CAAC44I,YAAY,CAAC1xI,CAAAA,CAAAA,CAAAA;AACjC,QAAA,IAAI,CAAC+tI,WAAW,CAAC9yI,GAAG,CAAC+E,CAAGlH,EAAAA,MAAAA,CAAAA,CAAAA;QACxB,OAAOA,MAAAA,CAAAA;AACX,KAAA,CAAA;AACA;;;;;;AAMC,QACD44I,MAAAA,CAAAA,YAgBC,GAhBDA,SAAAA,aAAa1xI,CAAC,EAAA;QACV,IAAIA,CAAAA,KAAM,IAAQA,IAAAA,CAAAA,KAAMpL,SAAW,EAAA;YAC/B,OAAO,CAAA,CAAA;AACX,SAAA;QACA,IAAI+8I,IAAAA,CAAAA;QACJ,IAAK98I,YAADmL,CAAAA,CAAAA,EAAa3H,UAAY,CAAA,EAAA;YACzBs5I,IAAO3xI,GAAAA,CAAAA,CAAAA;SAEN,MAAA;AACD2xI,YAAAA,IAAAA,GAAO,IAAI,CAAC3D,YAAY,CAAC4D,MAAM,CAAC5xI,CAAAA,CAAAA,CAAAA;AACpC,SAAA;QACA,IAAI,CAAC4uI,OAAO,CAAC,CAAA,CAAA,CAAA;AACb,QAAA,IAAI,CAACyC,WAAW,CAAC,CAAGM,EAAAA,IAAAA,CAAKj8I,MAAM,EAAE,CAAA,CAAA,CAAA;QACjC,IAAI,CAACw2I,EAAE,CAACrnH,WAAW,CAAC,IAAI,CAACspH,KAAK,IAAIwD,IAAAA,CAAKj8I,MAAM,CAAA,CAAA;QAC7C,IAAI,CAACw2I,EAAE,CAAChC,KAAK,EAAA,CAAGjvI,GAAG,CAAC02I,IAAAA,EAAM,IAAI,CAACxD,KAAK,CAAA,CAAA;QACpC,OAAO,IAAI,CAACqD,SAAS,EAAA,CAAA;AACzB,KAAA,CAAA;AACA;;;;;AAKC,QACDK,MAAAA,CAAAA,gBAQC,GARDA,SAAAA,iBAAiBv6I,CAAC,EAAA;QACd,IAAIA,CAAAA,KAAM,IAAQA,IAAAA,CAAAA,KAAM1C,SAAW,EAAA;YAC/B,OAAO,CAAA,CAAA;AACX,SAAA;AACA,QAAA,IAAI,CAACy8I,WAAW,CAAC,CAAG/5I,EAAAA,CAAAA,CAAE5B,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9B,IAAI,CAACw2I,EAAE,CAACrnH,WAAW,CAAC,IAAI,CAACspH,KAAK,IAAI72I,CAAAA,CAAE5B,MAAM,CAAA,CAAA;QAC1C,IAAI,CAACw2I,EAAE,CAAChC,KAAK,EAAA,CAAGjvI,GAAG,CAAC3D,CAAAA,EAAG,IAAI,CAAC62I,KAAK,CAAA,CAAA;QACjC,OAAO,IAAI,CAACqD,SAAS,EAAA,CAAA;AACzB,KAAA,CAAA;AACA;;;;AAIC,QACDM,MAAAA,CAAAA,kBAUC,GAVDA,SAAAA,mBAAmB38I,GAAG,EAAA;AAClB,QAAA,IAAIA,QAAQ,IAAM,EAAA;YACd,OAAO,CAAA,CAAA;AACX,SAAA;QACA,IAAI,OAAOA,QAAQ,QAAU,EAAA;YACzB,OAAO,IAAI,CAACu8I,YAAY,CAACv8I,GAAAA,CAAAA,CAAAA;SAExB,MAAA;YACD,OAAOA,GAAAA,CAAI48I,IAAI,CAAC,IAAI,CAAA,CAAA;AACxB,SAAA;AACJ,KAAA,CAAA;AACA;;;;AAIC,QACDC,MAAAA,CAAAA,sBAYC,GAZDA,SAAAA,uBAAuB1+C,IAAI,EAAA;AACvB,QAAA,IAAM3uF,MAAM,EAAE,CAAA;QACd,IAAK,IAAI1O,IAAI,CAAGA,EAAAA,CAAAA,GAAIq9F,KAAK59F,MAAM,EAAE,EAAEO,CAAG,CAAA;YAClC,IAAM2P,GAAAA,GAAM0tF,IAAI,CAACr9F,CAAE,CAAA,CAAA;AACnB,YAAA,IAAI2P,QAAQ,IAAM,EAAA;AACdjB,gBAAAA,GAAAA,CAAI/M,IAAI,CAAC,IAAI,CAACk6I,kBAAkB,CAAClsI,GAAAA,CAAAA,CAAAA,CAAAA;aAEhC,MAAA;AACD,gBAAA,MAAM,IAAInO,SAAU,CAAA,uEAAA,CAAA,CAAA;AACxB,aAAA;AACJ,SAAA;QACA,OAAOkN,GAAAA,CAAAA;AACX,KAAA,CAAA;AACAstI,IAAAA,MAAAA,CAAAA,sBAIC,GAJDA,SAAAA,sBAAuB3+C,CAAAA,IAAI,EAAE4+C,SAAS,EAAA;QAClCA,SAAU,CAAA,IAAI,EAAE5+C,IAAAA,CAAK59F,MAAM,CAAA,CAAA;AAC3B,QAAA,IAAI,CAACs8I,sBAAsB,CAAC1+C,IAAK36F,CAAAA,KAAK,GAAGykC,OAAO,EAAA,CAAA,CAAA;QAChD,OAAO,IAAI,CAACo0G,SAAS,EAAA,CAAA;AACzB,KAAA,CAAA;AAnRA;;;;;;;;;;;AAWC,QACD,OAAO7C,CAAAA,cAWN,GAXD,SAAOA,eAAezC,EAAE,EAAA;QACpB,IAAMwC,YAAAA,GAAexC,GAAG/B,QAAQ,EAAA,CAAA;;AAEhC,QAAA,IAAIuE,eAAe,UAAY,EAAA;AAC3B,YAAA,MAAM,IAAIz2I,KAAM,CAAA,qDAAA,CAAA,CAAA;AACpB,SAAA;AACA,QAAA,IAAMk6I,eAAezD,YAAgB,IAAA,CAAA,CAAA;QACrC,IAAM0D,GAAAA,GAAMvI,UAAWuD,CAAAA,QAAQ,CAAC+E,YAAAA,CAAAA,CAAAA;QAChCC,GAAIvtH,CAAAA,WAAW,CAACstH,YAAezD,GAAAA,YAAAA,CAAAA,CAAAA;AAC/B0D,QAAAA,GAAAA,CAAIlI,KAAK,EAAGjvI,CAAAA,GAAG,CAACixI,EAAGhC,CAAAA,KAAK,IAAIiI,YAAezD,GAAAA,YAAAA,CAAAA,CAAAA;QAC3C,OAAO0D,GAAAA,CAAAA;AACX,KAAA,CAAA;AArRS9E,IAAAA,OAAAA,OAAAA,CAAAA;AAkhBZ,CAAA,EAAA;;ACphBD;AAQO,IAAA,mBAAM+E,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,mBAAAA,GAAAA;aACXnG,EAAkC,GAAA,IAAA,CAAA;aAClCJ,MAAS,GAAA,CAAA,CAAA;;AAFEuG,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAGXC,IAAAA,MAAAA,CAAAA,MAID,GAJCA,SAAAA,MAAOr8I,CAAAA,CAAQ,EAAEi2I,EAAyB,EAAA;QAC1C,IAAI,CAACJ,MAAM,GAAG71I,CAAAA,CAAAA;QACd,IAAI,CAACi2I,EAAE,GAAGA,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAaA34D,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAASg/D,gBAAqB,EAAA;QAC5B,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACL,MAAM,GAAGhzI,MAAAA,EAAQy5I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC9E,KAAA,CAAA;AAEA1qI,IAAAA,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAAA,CAAKpO,KAAa,EAAA;QAChB,IAAMX,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,SAAS,IAAI,CAACozI,EAAE,CAAE7B,SAAS,CAAC,IAAI,CAAC6B,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,UAAUW,KAAS,CAAA,GAAA,CAAA,CAAA;AACxF,KAAA,CAAA;IAEA+4I,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAAA,GAAAA;QACE,IAAM15I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;IAEA25I,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;QACE,IAAM35I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,SAAS,IAAIT,UAAAA,CAAW,IAAI,CAAC6zI,EAAE,CAAEhC,KAAK,EAAA,CAAG7vI,MAAM,EAAE,IAAI,CAAC6xI,EAAE,CAAEhC,KAAK,EAAA,CAAGwI,UAAU,GAAG,IAAI,CAACxG,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAS,CAAA,EAAA,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAW,CAAA,CAAA,GAAA,IAAA,CAAA;AAChL,KAAA,CAAA;IAsCAq0I,MAAAA,CAAAA,MAKC,GALDA,SAAAA,MAAAA,GAAAA;QACE,OAAO,IAAIwF,qBACT,IAAI,CAACp/D,QAAQ,EACb,EAAA,IAAI,CAAC24D,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACllI,IAAI,CAACrP,IAAI,CAAC,IAAI,CAAA,EAAG,IAAI,CAACg6I,UAAU,EAAA,CAAA,CAAA,CAAA;AAE3E,KAAA,CAAA;AAGAI,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAASC,EAAwB,EAAA;AAC/BA,QAAAA,EAAAA,CAAGt/D,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAA,CAAA;AAC3Bs/D,QAAAA,EAAAA,CAAGhrI,IAAI,GAAG,IAAI,CAACqkI,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACllI,IAAI,CAACrP,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACg6I,UAAU,EAAA,CAAA,CAAA;AACnF,KAAA,CAAA;AAvFaH,IAAAA,mBAAAA,CASNS,4BAEN,GAFD,SAAOA,4BAA6B5G,CAAAA,EAAyB,EAAE/2I,GAAwB,EAAA;AACrF,QAAA,OAAO,CAACA,GAAAA,IAAO,IAVJk9I,mBAAAA,EAU4B,EAAGC,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AAChG,KAAA,CAAA;AAXamG,IAAAA,mBAAAA,CAaNU,wCAGN,GAHD,SAAOA,wCAAyC7G,CAAAA,EAAyB,EAAE/2I,GAAwB,EAAA;AACjG+2I,QAAAA,EAAAA,CAAGrnH,WAAW,CAACqnH,EAAAA,CAAGtwH,QAAQ,EAAA,GAAKo3H,kBAA8B,CAAA,CAAA;AAC7D,QAAA,OAAO,CAAC79I,GAAAA,IAAO,IAfJk9I,mBAAAA,EAe4B,EAAGC,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AAChG,KAAA,CAAA;AAhBamG,IAAAA,mBAAAA,CAwCNY,wBAEN,GAFD,SAAOA,wBAAAA,CAAyBC,OAA2B,EAAA;AACzDA,QAAAA,OAAAA,CAAQnD,WAAW,CAAC,CAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AA1CasC,IAAAA,mBAAAA,CA4CNc,WAEN,GAFD,SAAOA,WAAYD,CAAAA,OAA2B,EAAEE,cAAiC,EAAA;QAC/EF,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAG0D,cAAgB,EAAA,CAAA,CAAA,CAAA;AAC5C,KAAA,CAAA;AA9Caf,IAAAA,mBAAAA,CAgDNgB,OAEN,GAFD,SAAOA,OAAQH,CAAAA,OAA2B,EAAEI,UAA6B,EAAA;QACvEJ,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAG4D,UAAY,EAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAlDajB,IAAAA,mBAAAA,CAoDNkB,gBAMN,GAND,SAAOA,gBAAiBL,CAAAA,OAA2B,EAAErrI,IAAwB,EAAA;AAC3EqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQtE,OAAO,CAAC/mI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AACzB,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AA1Daa,IAAAA,mBAAAA,CA4DNmB,eAEN,GAFD,SAAOA,eAAgBN,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QACjEP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AA9DapB,IAAAA,mBAAAA,CAgENqB,sBAGN,GAHD,SAAOA,sBAAAA,CAAuBR,OAA2B,EAAA;QACvD,IAAMp6I,MAAAA,GAASo6I,QAAQjD,SAAS,EAAA,CAAA;QAChC,OAAOn3I,MAAAA,CAAAA;AACT,KAAA,CAAA;IAnEau5I,mBAqENsB,CAAAA,yBAKN,GALD,SAAOA,yBAAAA,CAA0BT,OAA2B,EAAEE,cAAiC,EAAEE,UAA6B,EAAA;AArEjHjB,QAAAA,mBAAAA,CAsESY,wBAAwB,CAACC,OAAAA,CAAAA,CAAAA;QAtElCb,mBAuESc,CAAAA,WAAW,CAACD,OAASE,EAAAA,cAAAA,CAAAA,CAAAA;QAvE9Bf,mBAwESgB,CAAAA,OAAO,CAACH,OAASI,EAAAA,UAAAA,CAAAA,CAAAA;QACrC,OAzEWjB,mBAyEgBqB,CAAAA,sBAAsB,CAACR,OAAAA,CAAAA,CAAAA;AACpD,KAAA,CAAA;AA1Eab,IAAAA,OAAAA,mBAAAA,CAAAA;AAwFZ,CAAA,EAAA,CAAA;AAEM,IAAA,oBAAMM,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,oBAAAA,CAEX,QAA8C,EACvC9qI,IAAqB,EAAA;AAD5B,QAAA,IAAO0rE,qBAAAA,QAAmC,GAAA,IAAA,CAAA;QAC1C,IAAO1rE,IAAAA,KAAAA,KAAAA,CAAAA,EAAAA,OAAmB,EAAE,CAAA;aADrB0rE,QAAAA,GAAAA,QAAAA,CAAAA;aACA1rE,IAAAA,GAAAA,IAAAA,CAAAA;;AAHI8qI,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;AAObZ,IAAAA,MAAAA,CAAAA,IAQC,GARDA,SAAAA,IAAAA,CAAKmB,OAA2B,EAAA;AAC9B,QAAA,IAAM3/D,QAAY,GAAA,IAAI,CAACA,QAAQ,KAAK,IAAA,GAAO2/D,OAAQxB,CAAAA,YAAY,CAAC,IAAI,CAACn+D,QAAQ,CAAK,GAAA,CAAA,CAAA;AAClF,QAAA,IAAM1rE,OAAOwqI,mBAAoBkB,CAAAA,gBAAgB,CAACL,OAAS,EAAA,IAAI,CAACrrI,IAAI,CAAA,CAAA;AAEpE,QAAA,OAAOwqI,mBAAoBsB,CAAAA,yBAAyB,CAACT,OAAAA,EACnD3/D,QACA1rE,EAAAA,IAAAA,CAAAA,CAAAA;AAEJ,KAAA,CAAA;AAfa8qI,IAAAA,OAAAA,oBAAAA,CAAAA;AAgBZ,CAAA,EAAA;;AClHD;AASO,IAAA,oBAAMiB,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,oBAAAA,GAAAA;aACX1H,EAAkC,GAAA,IAAA,CAAA;aAClCJ,MAAS,GAAA,CAAA,CAAA;;AAFE8H,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;AAGXtB,IAAAA,MAAAA,CAAAA,MAID,GAJCA,SAAAA,MAAOr8I,CAAAA,CAAQ,EAAEi2I,EAAyB,EAAA;QAC1C,IAAI,CAACJ,MAAM,GAAG71I,CAAAA,CAAAA;QACd,IAAI,CAACi2I,EAAE,GAAGA,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAWA2H,IAAAA,MAAAA,CAAAA,aAGC,GAHDA,SAAAA,aAAcp6I,CAAAA,KAAa,EAAEtE,GAAwB,EAAA;QACnD,IAAM2D,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAC3D,CAAAA,GAAAA,IAAO,IAAIk9I,mBAAAA,EAAoB,EAAGC,MAAM,CAAC,IAAI,CAACpG,EAAE,CAAEQ,UAAU,CAAC,IAAI,CAACR,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAAA,CAAAA,GAAUW,KAAQ,GAAA,CAAA,CAAA,EAAI,IAAI,CAACyyI,EAAE,CAAK,GAAA,IAAA,CAAA;AAClJ,KAAA,CAAA;IAEA4H,MAAAA,CAAAA,mBAGC,GAHDA,SAAAA,mBAAAA,GAAAA;QACE,IAAMh7I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;IAyCAq0I,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,MAAAA,GAAAA;AACE,QAAA,OAAO,IAAI4G,qBACT,CAAA,IAAI,CAAC7H,EAAE,CAAEgB,aAAa,CAA4C,IAAI,CAAC2G,aAAa,CAACr7I,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACs7I,mBAAmB,EAAA,CAAA,CAAA,CAAA;AAE7H,KAAA,CAAA;AAGAlB,IAAAA,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAASC,EAAyB,EAAA;AAChCA,QAAAA,EAAAA,CAAGgB,aAAa,GAAG,IAAI,CAAC3H,EAAE,CAAEgB,aAAa,CAA4C,IAAI,CAAC2G,aAAa,CAACr7I,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACs7I,mBAAmB,EAAA,CAAA,CAAA;AAC9I,KAAA,CAAA;AA5EaF,IAAAA,oBAAAA,CASNI,6BAEN,GAFD,SAAOA,6BAA8B9H,CAAAA,EAAyB,EAAE/2I,GAAyB,EAAA;AACvF,QAAA,OAAO,CAACA,GAAAA,IAAO,IAVJy+I,oBAAAA,EAU6B,EAAGtB,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AACjG,KAAA,CAAA;AAXa0H,IAAAA,oBAAAA,CAaNK,yCAGN,GAHD,SAAOA,yCAA0C/H,CAAAA,EAAyB,EAAE/2I,GAAyB,EAAA;AACnG+2I,QAAAA,EAAAA,CAAGrnH,WAAW,CAACqnH,EAAAA,CAAGtwH,QAAQ,EAAA,GAAKo3H,kBAA8B,CAAA,CAAA;AAC7D,QAAA,OAAO,CAAC79I,GAAAA,IAAO,IAfJy+I,oBAAAA,EAe6B,EAAGtB,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AACjG,KAAA,CAAA;AAhBa0H,IAAAA,oBAAAA,CA4BNM,yBAEN,GAFD,SAAOA,yBAAAA,CAA0BhB,OAA2B,EAAA;AAC1DA,QAAAA,OAAAA,CAAQnD,WAAW,CAAC,CAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AA9Ba6D,IAAAA,oBAAAA,CAgCNO,gBAEN,GAFD,SAAOA,gBAAiBjB,CAAAA,OAA2B,EAAEkB,mBAAsC,EAAA;QACzFlB,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAG0E,mBAAqB,EAAA,CAAA,CAAA,CAAA;AACjD,KAAA,CAAA;AAlCaR,IAAAA,oBAAAA,CAoCNS,yBAMN,GAND,SAAOA,yBAA0BnB,CAAAA,OAA2B,EAAErrI,IAAyB,EAAA;AACrFqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQvD,SAAS,CAAC9nI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AAC3B,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AA1CaoC,IAAAA,oBAAAA,CA4CNU,wBAEN,GAFD,SAAOA,wBAAyBpB,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QAC1EP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AA9CaG,IAAAA,oBAAAA,CAgDNW,uBAGN,GAHD,SAAOA,uBAAAA,CAAwBrB,OAA2B,EAAA;QACxD,IAAMp6I,MAAAA,GAASo6I,QAAQjD,SAAS,EAAA,CAAA;QAChC,OAAOn3I,MAAAA,CAAAA;AACT,KAAA,CAAA;AAnDa86I,IAAAA,oBAAAA,CAqDNY,gCAEN,GAFD,SAAOA,gCAAiCtB,CAAAA,OAA2B,EAAEp6I,MAAyB,EAAA;AAC5Fo6I,QAAAA,OAAAA,CAAQvqF,MAAM,CAAC7vD,MAAAA,CAAAA,CAAAA;AACjB,KAAA,CAAA;AAvDa86I,IAAAA,oBAAAA,CAyDNa,4CAEN,GAFD,SAAOA,4CAA6CvB,CAAAA,OAA2B,EAAEp6I,MAAyB,EAAA;QACxGo6I,OAAQvqF,CAAAA,MAAM,CAAC7vD,MAAAA,EAAQlE,SAAW,EAAA,IAAA,CAAA,CAAA;AACpC,KAAA,CAAA;AA3Dag/I,IAAAA,oBAAAA,CA6DNc,0BAIN,GAJD,SAAOA,0BAA2BxB,CAAAA,OAA2B,EAAEkB,mBAAsC,EAAA;AA7DxFR,QAAAA,oBAAAA,CA8DUM,yBAAyB,CAAChB,OAAAA,CAAAA,CAAAA;QA9DpCU,oBA+DUO,CAAAA,gBAAgB,CAACjB,OAASkB,EAAAA,mBAAAA,CAAAA,CAAAA;QAC/C,OAhEWR,oBAgEiBW,CAAAA,uBAAuB,CAACrB,OAAAA,CAAAA,CAAAA;AACtD,KAAA,CAAA;AAjEaU,IAAAA,OAAAA,oBAAAA,CAAAA;AA6EZ,CAAA,EAAA,CAAA;AAEM,IAAA,qBAAMG,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,qBAAAA,CAEX,aAAmD,EAAA;QAAnD,IAAOF,aAAAA,KAAAA,KAAAA,CAAAA,EAAAA,gBAA0C,EAAE,CAAA;aAA5CA,aAAAA,GAAAA,aAAAA,CAAAA;;AAFIE,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;AAMbhC,IAAAA,MAAAA,CAAAA,IAMC,GANDA,SAAAA,IAAAA,CAAKmB,OAA2B,EAAA;QAC9B,IAAMW,aAAAA,GAAgBD,oBAAqBS,CAAAA,yBAAyB,CAACnB,OAAAA,EAASA,QAAQlB,sBAAsB,CAAC,IAAI,CAAC6B,aAAa,CAAA,CAAA,CAAA;QAE/H,OAAOD,oBAAAA,CAAqBc,0BAA0B,CAACxB,OACrDW,EAAAA,aAAAA,CAAAA,CAAAA;AAEJ,KAAA,CAAA;AAZaE,IAAAA,OAAAA,qBAAAA,CAAAA;AAaZ,CAAA,EAAA;;ACrGD;AAQO,IAAA,SAAMY,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,SAAAA,GAAAA;aACXzI,EAAkC,GAAA,IAAA,CAAA;aAClCJ,MAAS,GAAA,CAAA,CAAA;;AAFE6I,IAAAA,IAAAA,MAAAA,GAAAA,SAAAA,CAAAA,SAAAA,CAAAA;AAGXrC,IAAAA,MAAAA,CAAAA,MAID,GAJCA,SAAAA,MAAOr8I,CAAAA,CAAQ,EAAEi2I,EAAyB,EAAA;QAC1C,IAAI,CAACJ,MAAM,GAAG71I,CAAAA,CAAAA;QACd,IAAI,CAACi2I,EAAE,GAAGA,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;IAWApzI,MAAAA,CAAAA,MAGC,GAHDA,SAAAA,MAAAA,GAAAA;QACE,IAAMA,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IAEA+jF,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAAA,GAAAA;QACE,IAAM/jF,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IAEAgkF,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,GAAAA;QACE,IAAMhkF,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IA+BAq0I,MAAAA,CAAAA,MAMC,GANDA,SAAAA,MAAAA,GAAAA;AACE,QAAA,OAAO,IAAIyH,UAAAA,CACT,IAAI,CAAC97I,MAAM,EAAA,EACX,IAAI,CAAC+jF,UAAU,EAAA,EACf,IAAI,CAACC,WAAW,EAAA,CAAA,CAAA;AAEpB,KAAA,CAAA;AAGA81D,IAAAA,MAAAA,CAAAA,QAIC,GAJDA,SAAAA,QAAAA,CAASC,EAAc,EAAA;AACrBA,QAAAA,EAAAA,CAAG/5I,MAAM,GAAG,IAAI,CAACA,MAAM,EAAA,CAAA;AACvB+5I,QAAAA,EAAAA,CAAGh2D,UAAU,GAAG,IAAI,CAACA,UAAU,EAAA,CAAA;AAC/Bg2D,QAAAA,EAAAA,CAAG/1D,WAAW,GAAG,IAAI,CAACA,WAAW,EAAA,CAAA;AACnC,KAAA,CAAA;AA3Ea63D,IAAAA,SAAAA,CASNE,kBAEN,GAFD,SAAOA,kBAAmB3I,CAAAA,EAAyB,EAAE/2I,GAAc,EAAA;AACjE,QAAA,OAAO,CAACA,GAAAA,IAAO,IAVJw/I,SAAAA,EAUkB,EAAGrC,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AACtF,KAAA,CAAA;AAXayI,IAAAA,SAAAA,CAaNG,8BAGN,GAHD,SAAOA,8BAA+B5I,CAAAA,EAAyB,EAAE/2I,GAAc,EAAA;AAC7E+2I,QAAAA,EAAAA,CAAGrnH,WAAW,CAACqnH,EAAAA,CAAGtwH,QAAQ,EAAA,GAAKo3H,kBAA8B,CAAA,CAAA;AAC7D,QAAA,OAAO,CAAC79I,GAAAA,IAAO,IAfJw/I,SAAAA,EAekB,EAAGrC,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AACtF,KAAA,CAAA;AAhBayI,IAAAA,SAAAA,CAiCNI,cAEN,GAFD,SAAOA,cAAAA,CAAe7B,OAA2B,EAAA;AAC/CA,QAAAA,OAAAA,CAAQnD,WAAW,CAAC,CAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AAnCa4E,IAAAA,SAAAA,CAqCNhF,SAEN,GAFD,SAAOA,SAAUuD,CAAAA,OAA2B,EAAEp6I,MAAa,EAAA;QACzDo6I,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGx2I,MAAQ,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AAvCa67I,IAAAA,SAAAA,CAyCNK,aAEN,GAFD,SAAOA,aAAc9B,CAAAA,OAA2B,EAAEr2D,UAAiB,EAAA;QACjEq2D,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGzyD,UAAY,EAAA,CAAA,CAAA,CAAA;AACvC,KAAA,CAAA;AA3Ca83D,IAAAA,SAAAA,CA6CNM,cAEN,GAFD,SAAOA,cAAe/B,CAAAA,OAA2B,EAAEp2D,WAAkB,EAAA;QACnEo2D,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGxyD,WAAa,EAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AA/Ca63D,IAAAA,SAAAA,CAiDNO,YAGN,GAHD,SAAOA,YAAAA,CAAahC,OAA2B,EAAA;QAC7C,IAAMp6I,MAAAA,GAASo6I,QAAQjD,SAAS,EAAA,CAAA;QAChC,OAAOn3I,MAAAA,CAAAA;AACT,KAAA,CAAA;IApDa67I,SAsDNQ,CAAAA,eAMN,GAND,SAAOA,eAAgBjC,CAAAA,OAA2B,EAAEp6I,MAAa,EAAE+jF,UAAiB,EAAEC,WAAkB,EAAA;AAtD3F63D,QAAAA,SAAAA,CAuDDI,cAAc,CAAC7B,OAAAA,CAAAA,CAAAA;QAvDdyB,SAwDDhF,CAAAA,SAAS,CAACuD,OAASp6I,EAAAA,MAAAA,CAAAA,CAAAA;QAxDlB67I,SAyDDK,CAAAA,aAAa,CAAC9B,OAASr2D,EAAAA,UAAAA,CAAAA,CAAAA;QAzDtB83D,SA0DDM,CAAAA,cAAc,CAAC/B,OAASp2D,EAAAA,WAAAA,CAAAA,CAAAA;QAClC,OA3DW63D,SA2DMO,CAAAA,YAAY,CAAChC,OAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AA5DayB,IAAAA,OAAAA,SAAAA,CAAAA;AA4EZ,CAAA,EAAA,CAAA;AAEM,IAAA,UAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,UAAAA,CAEX,MAAyB,EACzB,UAA6B,EAC7B,WAA8B,EAAA;AAF9B,QAAA,IAAO97I,mBAAAA,MAAiB,GAAA,CAAA,CAAA;AACxB,QAAA,IAAO+jF,uBAAAA,UAAqB,GAAA,CAAA,CAAA;AAC5B,QAAA,IAAOC,wBAAAA,WAAsB,GAAA,CAAA,CAAA;aAFtBhkF,MAAAA,GAAAA,MAAAA,CAAAA;aACA+jF,UAAAA,GAAAA,UAAAA,CAAAA;aACAC,WAAAA,GAAAA,WAAAA,CAAAA;;AAJI83D,IAAAA,IAAAA,MAAAA,GAAAA,UAAAA,CAAAA,SAAAA,CAAAA;AAQb7C,IAAAA,MAAAA,CAAAA,IAMC,GANDA,SAAAA,IAAAA,CAAKmB,OAA2B,EAAA;AAC9B,QAAA,OAAOyB,SAAUQ,CAAAA,eAAe,CAACjC,OAAAA,EAC/B,IAAI,CAACp6I,MAAM,EACX,IAAI,CAAC+jF,UAAU,EACf,IAAI,CAACC,WAAW,CAAA,CAAA;AAEpB,KAAA,CAAA;AAda83D,IAAAA,OAAAA,UAAAA,CAAAA;AAeZ,CAAA,EAAA;;ACrGD;AAQO,IAAA,eAAMQ,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,eAAAA,GAAAA;aACXlJ,EAAkC,GAAA,IAAA,CAAA;aAClCJ,MAAS,GAAA,CAAA,CAAA;;AAFEsJ,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAGX9C,IAAAA,MAAAA,CAAAA,MAID,GAJCA,SAAAA,MAAOr8I,CAAAA,CAAQ,EAAEi2I,EAAyB,EAAA;QAC1C,IAAI,CAACJ,MAAM,GAAG71I,CAAAA,CAAAA;QACd,IAAI,CAACi2I,EAAE,GAAGA,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAaA/O,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAASoV,gBAAqB,EAAA;QAC5B,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACL,MAAM,GAAGhzI,MAAAA,EAAQy5I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC9E,KAAA,CAAA;IAEAz5I,MAAAA,CAAAA,MAGC,GAHDA,SAAAA,MAAAA,GAAAA;QACE,IAAMA,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IAEAsQ,MAAAA,CAAAA,MAGC,GAHDA,SAAAA,MAAAA,GAAAA;QACE,IAAMtQ,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IAEAukI,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;QACE,IAAMvkI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IAEA0F,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAAA,GAAAA;QACE,IAAM1F,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,CAAC,CAAC,IAAI,CAACozI,EAAE,CAAE9B,QAAQ,CAAC,IAAI,CAAC0B,MAAM,GAAGhzI,MAAU,CAAA,GAAA,KAAA,CAAA;AAC9D,KAAA,CAAA;IAyCAq0I,MAAAA,CAAAA,MAQC,GARDA,SAAAA,MAAAA,GAAAA;QACE,OAAO,IAAIkI,iBACT,IAAI,CAAClY,QAAQ,EACb,EAAA,IAAI,CAACrkI,MAAM,EAAA,EACX,IAAI,CAACsQ,MAAM,IACX,IAAI,CAACi0H,SAAS,EACd,EAAA,IAAI,CAAC7+H,SAAS,EAAA,CAAA,CAAA;AAElB,KAAA,CAAA;AAGAo0I,IAAAA,MAAAA,CAAAA,QAMC,GANDA,SAAAA,QAAAA,CAASC,EAAoB,EAAA;AAC3BA,QAAAA,EAAAA,CAAG1V,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAA,CAAA;AAC3B0V,QAAAA,EAAAA,CAAG/5I,MAAM,GAAG,IAAI,CAACA,MAAM,EAAA,CAAA;AACvB+5I,QAAAA,EAAAA,CAAGzpI,MAAM,GAAG,IAAI,CAACA,MAAM,EAAA,CAAA;AACvBypI,QAAAA,EAAAA,CAAGxV,SAAS,GAAG,IAAI,CAACA,SAAS,EAAA,CAAA;AAC7BwV,QAAAA,EAAAA,CAAGr0I,SAAS,GAAG,IAAI,CAACA,SAAS,EAAA,CAAA;AAC/B,KAAA,CAAA;AArGa42I,IAAAA,eAAAA,CASNE,wBAEN,GAFD,SAAOA,wBAAyBpJ,CAAAA,EAAyB,EAAE/2I,GAAoB,EAAA;AAC7E,QAAA,OAAO,CAACA,GAAAA,IAAO,IAVJigJ,eAAAA,EAUwB,EAAG9C,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AAC5F,KAAA,CAAA;AAXakJ,IAAAA,eAAAA,CAaNG,oCAGN,GAHD,SAAOA,oCAAqCrJ,CAAAA,EAAyB,EAAE/2I,GAAoB,EAAA;AACzF+2I,QAAAA,EAAAA,CAAGrnH,WAAW,CAACqnH,EAAAA,CAAGtwH,QAAQ,EAAA,GAAKo3H,kBAA8B,CAAA,CAAA;AAC7D,QAAA,OAAO,CAAC79I,GAAAA,IAAO,IAfJigJ,eAAAA,EAewB,EAAG9C,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AAC5F,KAAA,CAAA;AAhBakJ,IAAAA,eAAAA,CA6CNI,oBAEN,GAFD,SAAOA,oBAAAA,CAAqBtC,OAA2B,EAAA;AACrDA,QAAAA,OAAAA,CAAQnD,WAAW,CAAC,CAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AA/CaqF,IAAAA,eAAAA,CAiDNK,WAEN,GAFD,SAAOA,WAAYvC,CAAAA,OAA2B,EAAEwC,cAAiC,EAAA;QAC/ExC,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGgG,cAAgB,EAAA,CAAA,CAAA,CAAA;AAC5C,KAAA,CAAA;AAnDaN,IAAAA,eAAAA,CAqDNzF,SAEN,GAFD,SAAOA,SAAUuD,CAAAA,OAA2B,EAAEp6I,MAAa,EAAA;QACzDo6I,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGx2I,MAAQ,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AAvDas8I,IAAAA,eAAAA,CAyDNO,SAEN,GAFD,SAAOA,SAAUzC,CAAAA,OAA2B,EAAE9pI,MAAa,EAAA;QACzD8pI,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGlmI,MAAQ,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AA3DagsI,IAAAA,eAAAA,CA6DNQ,YAEN,GAFD,SAAOA,YAAa1C,CAAAA,OAA2B,EAAE7V,SAAgB,EAAA;QAC/D6V,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGjS,SAAW,EAAA,CAAA,CAAA,CAAA;AACtC,KAAA,CAAA;AA/Da+X,IAAAA,eAAAA,CAiENS,YAEN,GAFD,SAAOA,YAAa3C,CAAAA,OAA2B,EAAE10I,SAAiB,EAAA;AAChE00I,QAAAA,OAAAA,CAAQhE,YAAY,CAAC,CAAG,EAAA,CAAC1wI,WAAW,CAAC,KAAA,CAAA,CAAA;AACvC,KAAA,CAAA;AAnEa42I,IAAAA,eAAAA,CAqENU,kBAGN,GAHD,SAAOA,kBAAAA,CAAmB5C,OAA2B,EAAA;QACnD,IAAMp6I,MAAAA,GAASo6I,QAAQjD,SAAS,EAAA,CAAA;QAChC,OAAOn3I,MAAAA,CAAAA;AACT,KAAA,CAAA;AAxEas8I,IAAAA,eAAAA,CA0ENW,qBAQN,GARD,SAAOA,qBAAAA,CAAsB7C,OAA2B,EAAEwC,cAAiC,EAAE58I,MAAa,EAAEsQ,MAAa,EAAEi0H,SAAgB,EAAE7+H,SAAiB,EAAA;AA1EjJ42I,QAAAA,eAAAA,CA2EKI,oBAAoB,CAACtC,OAAAA,CAAAA,CAAAA;QA3E1BkC,eA4EKK,CAAAA,WAAW,CAACvC,OAASwC,EAAAA,cAAAA,CAAAA,CAAAA;QA5E1BN,eA6EKzF,CAAAA,SAAS,CAACuD,OAASp6I,EAAAA,MAAAA,CAAAA,CAAAA;QA7ExBs8I,eA8EKO,CAAAA,SAAS,CAACzC,OAAS9pI,EAAAA,MAAAA,CAAAA,CAAAA;QA9ExBgsI,eA+EKQ,CAAAA,YAAY,CAAC1C,OAAS7V,EAAAA,SAAAA,CAAAA,CAAAA;QA/E3B+X,eAgFKS,CAAAA,YAAY,CAAC3C,OAAS10I,EAAAA,SAAAA,CAAAA,CAAAA;QACtC,OAjFW42I,eAiFYU,CAAAA,kBAAkB,CAAC5C,OAAAA,CAAAA,CAAAA;AAC5C,KAAA,CAAA;AAlFakC,IAAAA,OAAAA,eAAAA,CAAAA;AAsGZ,CAAA,EAAA,CAAA;AAEM,IAAA,gBAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,gBAAAA,CAEX,QAA8C,EACvCv8I,MAAkB,EACzB,MAAyB,EAClBukI,SAAqB,EAC5B,SAAiC,EAAA;AAJjC,QAAA,IAAOF,qBAAAA,QAAmC,GAAA,IAAA,CAAA;AAC1C,QAAA,IAAOrkI,mBAAAA,MAAiB,GAAA,CAAA,CAAA;AACxB,QAAA,IAAOsQ,mBAAAA,MAAiB,GAAA,CAAA,CAAA;AACxB,QAAA,IAAOi0H,sBAAAA,SAAoB,GAAA,CAAA,CAAA;AAC3B,QAAA,IAAO7+H,sBAAAA,SAAqB,GAAA,KAAA,CAAA;aAJrB2+H,QAAAA,GAAAA,QAAAA,CAAAA;aACArkI,MAAAA,GAAAA,MAAAA,CAAAA;aACAsQ,MAAAA,GAAAA,MAAAA,CAAAA;aACAi0H,SAAAA,GAAAA,SAAAA,CAAAA;aACA7+H,SAAAA,GAAAA,SAAAA,CAAAA;;AANI62I,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AAUbtD,IAAAA,MAAAA,CAAAA,IAUC,GAVDA,SAAAA,IAAAA,CAAKmB,OAA2B,EAAA;AAC9B,QAAA,IAAM/V,QAAY,GAAA,IAAI,CAACA,QAAQ,KAAK,IAAA,GAAO+V,OAAQxB,CAAAA,YAAY,CAAC,IAAI,CAACvU,QAAQ,CAAK,GAAA,CAAA,CAAA;AAElF,QAAA,OAAOiY,gBAAgBW,qBAAqB,CAAC7C,SAC3C/V,QACA,EAAA,IAAI,CAACrkI,MAAM,EACX,IAAI,CAACsQ,MAAM,EACX,IAAI,CAACi0H,SAAS,EACd,IAAI,CAAC7+H,SAAS,CAAA,CAAA;AAElB,KAAA,CAAA;AApBa62I,IAAAA,OAAAA,gBAAAA,CAAAA;AAqBZ,CAAA,EAAA;;ACrID;AASO,IAAA,YAAMW,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,YAAAA,GAAAA;aACX9J,EAAkC,GAAA,IAAA,CAAA;aAClCJ,MAAS,GAAA,CAAA,CAAA;;AAFEkK,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAGX1D,IAAAA,MAAAA,CAAAA,MAID,GAJCA,SAAAA,MAAOr8I,CAAAA,CAAQ,EAAEi2I,EAAyB,EAAA;QAC1C,IAAI,CAACJ,MAAM,GAAG71I,CAAAA,CAAAA;QACd,IAAI,CAACi2I,EAAE,GAAGA,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;IAWApvD,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,GAAAA;QACE,IAAMhkF,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;AAEAmkI,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAASxjI,CAAAA,KAAa,EAAEtE,GAAoB,EAAA;QAC1C,IAAM2D,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAC3D,CAAAA,GAAAA,IAAO,IAAIigJ,eAAAA,EAAgB,EAAG9C,MAAM,CAAC,IAAI,CAACpG,EAAE,CAAEQ,UAAU,CAAC,IAAI,CAACR,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAAA,CAAAA,GAAUW,KAAQ,GAAA,CAAA,CAAA,EAAI,IAAI,CAACyyI,EAAE,CAAK,GAAA,IAAA,CAAA;AAC9I,KAAA,CAAA;IAEA+J,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,cAAAA,GAAAA;QACE,IAAMn9I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;IAsCAq0I,MAAAA,CAAAA,MAKC,GALDA,SAAAA,MAAAA,GAAAA;QACE,OAAO,IAAI+I,cACT,IAAI,CAACp5D,WAAW,EAChB,EAAA,IAAI,CAACovD,EAAE,CAAEgB,aAAa,CAAoC,IAAI,CAACjQ,QAAQ,CAACzkI,IAAI,CAAC,IAAI,CAAA,EAAG,IAAI,CAACy9I,cAAc,EAAA,CAAA,CAAA,CAAA;AAE3G,KAAA,CAAA;AAGArD,IAAAA,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAASC,EAAiB,EAAA;AACxBA,QAAAA,EAAAA,CAAG/1D,WAAW,GAAG,IAAI,CAACA,WAAW,EAAA,CAAA;AACjC+1D,QAAAA,EAAAA,CAAG5V,QAAQ,GAAG,IAAI,CAACiP,EAAE,CAAEgB,aAAa,CAAoC,IAAI,CAACjQ,QAAQ,CAACzkI,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACy9I,cAAc,EAAA,CAAA,CAAA;AACvH,KAAA,CAAA;AAhFaD,IAAAA,YAAAA,CASNG,qBAEN,GAFD,SAAOA,qBAAsBjK,CAAAA,EAAyB,EAAE/2I,GAAiB,EAAA;AACvE,QAAA,OAAO,CAACA,GAAAA,IAAO,IAVJ6gJ,YAAAA,EAUqB,EAAG1D,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AACzF,KAAA,CAAA;AAXa8J,IAAAA,YAAAA,CAaNI,iCAGN,GAHD,SAAOA,iCAAkClK,CAAAA,EAAyB,EAAE/2I,GAAiB,EAAA;AACnF+2I,QAAAA,EAAAA,CAAGrnH,WAAW,CAACqnH,EAAAA,CAAGtwH,QAAQ,EAAA,GAAKo3H,kBAA8B,CAAA,CAAA;AAC7D,QAAA,OAAO,CAAC79I,GAAAA,IAAO,IAfJ6gJ,YAAAA,EAeqB,EAAG1D,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AACzF,KAAA,CAAA;AAhBa8J,IAAAA,YAAAA,CAiCNK,iBAEN,GAFD,SAAOA,iBAAAA,CAAkBnD,OAA2B,EAAA;AAClDA,QAAAA,OAAAA,CAAQnD,WAAW,CAAC,CAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AAnCaiG,IAAAA,YAAAA,CAqCNf,cAEN,GAFD,SAAOA,cAAe/B,CAAAA,OAA2B,EAAEp2D,WAAkB,EAAA;QACnEo2D,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGxyD,WAAa,EAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAvCak5D,IAAAA,YAAAA,CAyCNM,WAEN,GAFD,SAAOA,WAAYpD,CAAAA,OAA2B,EAAEqD,cAAiC,EAAA;QAC/ErD,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAG6G,cAAgB,EAAA,CAAA,CAAA,CAAA;AAC5C,KAAA,CAAA;AA3CaP,IAAAA,YAAAA,CA6CNQ,oBAMN,GAND,SAAOA,oBAAqBtD,CAAAA,OAA2B,EAAErrI,IAAyB,EAAA;AAChFqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQvD,SAAS,CAAC9nI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AAC3B,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AAnDawE,IAAAA,YAAAA,CAqDNS,mBAEN,GAFD,SAAOA,mBAAoBvD,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QACrEP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AAvDauC,IAAAA,YAAAA,CAyDNU,eAGN,GAHD,SAAOA,eAAAA,CAAgBxD,OAA2B,EAAA;QAChD,IAAMp6I,MAAAA,GAASo6I,QAAQjD,SAAS,EAAA,CAAA;QAChC,OAAOn3I,MAAAA,CAAAA;AACT,KAAA,CAAA;IA5Dak9I,YA8DNW,CAAAA,kBAKN,GALD,SAAOA,kBAAAA,CAAmBzD,OAA2B,EAAEp2D,WAAkB,EAAEy5D,cAAiC,EAAA;AA9D/FP,QAAAA,YAAAA,CA+DEK,iBAAiB,CAACnD,OAAAA,CAAAA,CAAAA;QA/DpB8C,YAgEEf,CAAAA,cAAc,CAAC/B,OAASp2D,EAAAA,WAAAA,CAAAA,CAAAA;QAhE1Bk5D,YAiEEM,CAAAA,WAAW,CAACpD,OAASqD,EAAAA,cAAAA,CAAAA,CAAAA;QAClC,OAlEWP,YAkESU,CAAAA,eAAe,CAACxD,OAAAA,CAAAA,CAAAA;AACtC,KAAA,CAAA;AAnEa8C,IAAAA,OAAAA,YAAAA,CAAAA;AAiFZ,CAAA,EAAA,CAAA;AAEM,IAAA,aAAME,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,aAAAA,CAEX,WAA8B,EACvBjZ,QAAmC,EAAA;AAD1C,QAAA,IAAOngD,wBAAAA,WAAsB,GAAA,CAAA,CAAA;QAC7B,IAAOmgD,QAAAA,KAAAA,KAAAA,CAAAA,EAAAA,WAAiC,EAAE,CAAA;aADnCngD,WAAAA,GAAAA,WAAAA,CAAAA;aACAmgD,QAAAA,GAAAA,QAAAA,CAAAA;;AAHIiZ,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAObnE,IAAAA,MAAAA,CAAAA,IAOC,GAPDA,SAAAA,IAAAA,CAAKmB,OAA2B,EAAA;QAC9B,IAAMjW,QAAAA,GAAW+Y,YAAaQ,CAAAA,oBAAoB,CAACtD,OAAAA,EAASA,QAAQlB,sBAAsB,CAAC,IAAI,CAAC/U,QAAQ,CAAA,CAAA,CAAA;AAExG,QAAA,OAAO+Y,aAAaW,kBAAkB,CAACzD,SACrC,IAAI,CAACp2D,WAAW,EAChBmgD,QAAAA,CAAAA,CAAAA;AAEJ,KAAA,CAAA;AAdaiZ,IAAAA,OAAAA,aAAAA,CAAAA;AAeZ,CAAA,EAAA;;AC3GD;AAUO,IAAA,cAAMU,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,cAAAA,GAAAA;aACX1K,EAAkC,GAAA,IAAA,CAAA;aAClCJ,MAAS,GAAA,CAAA,CAAA;;AAFE8K,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAGXtE,IAAAA,MAAAA,CAAAA,MAID,GAJCA,SAAAA,MAAOr8I,CAAAA,CAAQ,EAAEi2I,EAAyB,EAAA;QAC1C,IAAI,CAACJ,MAAM,GAAG71I,CAAAA,CAAAA;QACd,IAAI,CAACi2I,EAAE,GAAGA,EAAAA,CAAAA;AACV,QAAA,OAAO,IAAI,CAAA;AACb,KAAA,CAAA;AAaAj3H,IAAAA,MAAAA,CAAAA,EAGC,GAHDA,SAAAA,EAAAA,CAAGs9H,gBAAqB,EAAA;QACtB,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACL,MAAM,GAAGhzI,MAAAA,EAAQy5I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC9E,KAAA,CAAA;AAIAr6I,IAAAA,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAAA,CAAKq6I,gBAAqB,EAAA;QACxB,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACL,MAAM,GAAGhzI,MAAAA,EAAQy5I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC9E,KAAA,CAAA;AAEAvV,IAAAA,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAAA,CAAW7nI,GAAiB,EAAA;QAC1B,IAAM2D,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,CAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,CAAC3D,GAAAA,IAAO,IAAI6gJ,YAAa,EAAA,EAAG1D,MAAM,CAAC,IAAI,CAACpG,EAAE,CAAEQ,UAAU,CAAC,IAAI,CAACZ,MAAM,GAAGhzI,MAAS,CAAA,EAAA,IAAI,CAACozI,EAAE,CAAK,GAAA,IAAA,CAAA;AAC5G,KAAA,CAAA;IAEAhP,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,GAAAA;QACE,IAAMpkI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;IAEAykF,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,GAAAA;QACE,IAAMzkF,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;AAEAohE,IAAAA,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAUzgE,CAAAA,KAAa,EAAEtE,GAAc,EAAA;QACrC,IAAM2D,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAC3D,CAAAA,GAAAA,IAAO,IAAIw/I,SAAAA,EAAU,EAAGrC,MAAM,CAAC,IAAI,CAACpG,EAAE,CAAEQ,UAAU,CAAC,IAAI,CAACR,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAAA,CAAAA,GAAUW,KAAQ,GAAA,CAAA,CAAA,EAAI,IAAI,CAACyyI,EAAE,CAAK,GAAA,IAAA,CAAA;AACxI,KAAA,CAAA;IAEA2K,MAAAA,CAAAA,eAGC,GAHDA,SAAAA,eAAAA,GAAAA;QACE,IAAM/9I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;IAEA8mE,MAAAA,CAAAA,IAGC,GAHDA,SAAAA,IAAAA,GAAAA;QACE,IAAM9mE,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAE1B,SAAS,CAAC,IAAI,CAACsB,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAC7D,KAAA,CAAA;AAIAuB,IAAAA,MAAAA,CAAAA,MAGC,GAHDA,SAAAA,MAAAA,CAAOk4I,gBAAqB,EAAA;QAC1B,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACL,MAAM,GAAGhzI,MAAAA,EAAQy5I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC9E,KAAA,CAAA;AAEA5U,IAAAA,MAAAA,CAAAA,UAGC,GAHDA,SAAAA,UAAAA,CAAWlkI,KAAa,EAAA;QACtB,IAAMX,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,SAAS,IAAI,CAACozI,EAAE,CAAE7B,SAAS,CAAC,IAAI,CAAC6B,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,UAAUW,KAAS,CAAA,GAAA,CAAA,CAAA;AACxF,KAAA,CAAA;IAEAq9I,MAAAA,CAAAA,gBAGC,GAHDA,SAAAA,gBAAAA,GAAAA;QACE,IAAMh+I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;IAEAi+I,MAAAA,CAAAA,eAGC,GAHDA,SAAAA,eAAAA,GAAAA;QACE,IAAMj+I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,SAAS,IAAIT,UAAAA,CAAW,IAAI,CAAC6zI,EAAE,CAAEhC,KAAK,EAAA,CAAG7vI,MAAM,EAAE,IAAI,CAAC6xI,EAAE,CAAEhC,KAAK,EAAA,CAAGwI,UAAU,GAAG,IAAI,CAACxG,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAS,CAAA,EAAA,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAW,CAAA,CAAA,GAAA,IAAA,CAAA;AAChL,KAAA,CAAA;AAIAk+I,IAAAA,MAAAA,CAAAA,SAGC,GAHDA,SAAAA,SAAUv9I,CAAAA,KAAa,EAAC84I,gBAAqB,EAAA;QAC3C,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACD,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAUW,CAAAA,GAAAA,KAAAA,GAAQ,GAAG84I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC7G,KAAA,CAAA;IAEA0E,MAAAA,CAAAA,eAGC,GAHDA,SAAAA,eAAAA,GAAAA;QACE,IAAMn+I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;AAIAo+I,IAAAA,MAAAA,CAAAA,YAGC,GAHDA,SAAAA,YAAAA,CAAa3E,gBAAqB,EAAA;QAChC,IAAMz5I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,MAAS,GAAA,IAAI,CAACozI,EAAE,CAAEC,QAAQ,CAAC,IAAI,CAACL,MAAM,GAAGhzI,MAAAA,EAAQy5I,gBAAoB,CAAA,GAAA,IAAA,CAAA;AAC9E,KAAA,CAAA;AAEA4E,IAAAA,MAAAA,CAAAA,mBAGC,GAHDA,SAAAA,mBAAAA,CAAoB19I,KAAa,EAAA;QAC/B,IAAMX,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,SAAS,IAAI,CAACozI,EAAE,CAAEnB,WAAW,CAAC,IAAI,CAACmB,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAAA,CAAAA,GAAUW,QAAQ,CAAK,CAAA,GAAA,CAAA,CAAA;AAC9F,KAAA,CAAA;IAEA29I,MAAAA,CAAAA,yBAGC,GAHDA,SAAAA,yBAAAA,GAAAA;QACE,IAAMt+I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;QAC9C,OAAOhzI,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAU,CAAA,GAAA,CAAA,CAAA;AAChE,KAAA,CAAA;IAEAu+I,MAAAA,CAAAA,wBAGC,GAHDA,SAAAA,wBAAAA,GAAAA;QACE,IAAMv+I,MAAAA,GAAS,IAAI,CAACozI,EAAE,CAAEL,QAAQ,CAAC,IAAI,CAACC,MAAM,EAAE,EAAA,CAAA,CAAA;AAC9C,QAAA,OAAOhzI,SAAS,IAAI41C,YAAAA,CAAa,IAAI,CAACw9F,EAAE,CAAEhC,KAAK,EAAA,CAAG7vI,MAAM,EAAE,IAAI,CAAC6xI,EAAE,CAAEhC,KAAK,EAAA,CAAGwI,UAAU,GAAG,IAAI,CAACxG,EAAE,CAAES,QAAQ,CAAC,IAAI,CAACb,MAAM,GAAGhzI,MAAS,CAAA,EAAA,IAAI,CAACozI,EAAE,CAAEU,YAAY,CAAC,IAAI,CAACd,MAAM,GAAGhzI,MAAW,CAAA,CAAA,GAAA,IAAA,CAAA;AAClL,KAAA,CAAA;IAiHAq0I,MAAAA,CAAAA,MAeC,GAfDA,SAAAA,MAAAA,GAAAA;QACE,OAAO,IAAImK,eACT,CAAA,IAAI,CAACriI,EAAE,IACP,IAAI,CAAC/c,IAAI,EAAA,EACR,IAAI,CAAC8kI,UAAU,EAAO,KAAA,IAAA,GAAO,IAAI,CAACA,UAAU,EAAA,CAAImQ,MAAM,EAAA,GAAK,IAC5D,EAAA,IAAI,CAACjQ,WAAW,EAChB,EAAA,IAAI,CAAC3/C,WAAW,EAAA,EAChB,IAAI,CAAC2uD,EAAE,CAAEgB,aAAa,CAAwB,IAAI,CAAChzE,SAAS,CAAC1hE,IAAI,CAAC,IAAI,CAAA,EAAG,IAAI,CAACq+I,eAAe,EAAA,CAAA,EAC7F,IAAI,CAACj3E,IAAI,EAAA,EACT,IAAI,CAACvlE,MAAM,EAAA,EACX,IAAI,CAAC6xI,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACpP,UAAU,CAACnlI,IAAI,CAAC,IAAI,CAAA,EAAG,IAAI,CAACs+I,gBAAgB,EACnF,CAAA,EAAA,IAAI,CAAC5K,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACiK,SAAS,CAACx+I,IAAI,CAAC,IAAI,CAAA,EAAG,IAAI,CAACy+I,eAAe,EAAA,CAAA,EACjF,IAAI,CAACC,YAAY,EACjB,EAAA,IAAI,CAAChL,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACoK,mBAAmB,CAAC3+I,IAAI,CAAC,IAAI,CAAA,EAAG,IAAI,CAAC4+I,yBAAyB,EAAA,CAAA,CAAA,CAAA;AAEzG,KAAA,CAAA;AAGAxE,IAAAA,MAAAA,CAAAA,QAaC,GAbDA,SAAAA,QAAAA,CAASC,EAAmB,EAAA;AAC1BA,QAAAA,EAAAA,CAAG59H,EAAE,GAAG,IAAI,CAACA,EAAE,EAAA,CAAA;AACf49H,QAAAA,EAAAA,CAAG36I,IAAI,GAAG,IAAI,CAACA,IAAI,EAAA,CAAA;AACnB26I,QAAAA,EAAAA,CAAG7V,UAAU,GAAI,IAAI,CAACA,UAAU,EAAA,KAAO,IAAO,GAAA,IAAI,CAACA,UAAU,EAAImQ,CAAAA,MAAM,EAAK,GAAA,IAAA,CAAA;AAC5E0F,QAAAA,EAAAA,CAAG3V,WAAW,GAAG,IAAI,CAACA,WAAW,EAAA,CAAA;AACjC2V,QAAAA,EAAAA,CAAGt1D,WAAW,GAAG,IAAI,CAACA,WAAW,EAAA,CAAA;AACjCs1D,QAAAA,EAAAA,CAAG34E,SAAS,GAAG,IAAI,CAACgyE,EAAE,CAAEgB,aAAa,CAAwB,IAAI,CAAChzE,SAAS,CAAC1hE,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACq+I,eAAe,EAAA,CAAA,CAAA;AAC5GhE,QAAAA,EAAAA,CAAGjzE,IAAI,GAAG,IAAI,CAACA,IAAI,EAAA,CAAA;AACnBizE,QAAAA,EAAAA,CAAGx4I,MAAM,GAAG,IAAI,CAACA,MAAM,EAAA,CAAA;AACvBw4I,QAAAA,EAAAA,CAAGlV,UAAU,GAAG,IAAI,CAACuO,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACpP,UAAU,CAACnlI,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACs+I,gBAAgB,EAAA,CAAA,CAAA;AACnGjE,QAAAA,EAAAA,CAAGmE,SAAS,GAAG,IAAI,CAAC9K,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACiK,SAAS,CAACx+I,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAACy+I,eAAe,EAAA,CAAA,CAAA;AAChGpE,QAAAA,EAAAA,CAAGqE,YAAY,GAAG,IAAI,CAACA,YAAY,EAAA,CAAA;AACnCrE,QAAAA,EAAAA,CAAGsE,mBAAmB,GAAG,IAAI,CAACjL,EAAE,CAAEa,gBAAgB,CAAS,IAAI,CAACoK,mBAAmB,CAAC3+I,IAAI,CAAC,IAAI,CAAG,EAAA,IAAI,CAAC4+I,yBAAyB,EAAA,CAAA,CAAA;AAChI,KAAA,CAAA;AApQaR,IAAAA,cAAAA,CASNW,uBAEN,GAFD,SAAOA,uBAAwBrL,CAAAA,EAAyB,EAAE/2I,GAAmB,EAAA;AAC3E,QAAA,OAAO,CAACA,GAAAA,IAAO,IAVJyhJ,cAAAA,EAUuB,EAAGtE,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AAC3F,KAAA,CAAA;AAXa0K,IAAAA,cAAAA,CAaNY,mCAGN,GAHD,SAAOA,mCAAoCtL,CAAAA,EAAyB,EAAE/2I,GAAmB,EAAA;AACvF+2I,QAAAA,EAAAA,CAAGrnH,WAAW,CAACqnH,EAAAA,CAAGtwH,QAAQ,EAAA,GAAKo3H,kBAA8B,CAAA,CAAA;AAC7D,QAAA,OAAO,CAAC79I,GAAAA,IAAO,IAfJyhJ,cAAAA,EAeuB,EAAGtE,MAAM,CAACpG,EAAG1B,CAAAA,SAAS,CAAC0B,EAAGtwH,CAAAA,QAAQ,EAAMswH,CAAAA,GAAAA,EAAAA,CAAGtwH,QAAQ,EAAIswH,EAAAA,EAAAA,CAAAA,CAAAA;AAC3F,KAAA,CAAA;AAhBa0K,IAAAA,cAAAA,CAsHNa,mBAEN,GAFD,SAAOA,mBAAAA,CAAoBvE,OAA2B,EAAA;AACpDA,QAAAA,OAAAA,CAAQnD,WAAW,CAAC,EAAA,CAAA,CAAA;AACtB,KAAA,CAAA;AAxHa6G,IAAAA,cAAAA,CA0HNc,KAEN,GAFD,SAAOA,KAAMxE,CAAAA,OAA2B,EAAEyE,QAA2B,EAAA;QACnEzE,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGiI,QAAU,EAAA,CAAA,CAAA,CAAA;AACtC,KAAA,CAAA;AA5Haf,IAAAA,cAAAA,CA8HNgB,OAEN,GAFD,SAAOA,OAAQ1E,CAAAA,OAA2B,EAAE2E,UAA6B,EAAA;QACvE3E,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGmI,UAAY,EAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAhIajB,IAAAA,cAAAA,CAkINkB,aAEN,GAFD,SAAOA,aAAc5E,CAAAA,OAA2B,EAAE6E,gBAAmC,EAAA;QACnF7E,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGqI,gBAAkB,EAAA,CAAA,CAAA,CAAA;AAC9C,KAAA,CAAA;AApIanB,IAAAA,cAAAA,CAsINoB,cAEN,GAFD,SAAOA,cAAe9E,CAAAA,OAA2B,EAAEhW,WAAkB,EAAA;QACnEgW,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAGpS,WAAa,EAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AAxIa0Z,IAAAA,cAAAA,CA0INqB,cAEN,GAFD,SAAOA,cAAe/E,CAAAA,OAA2B,EAAE31D,WAAkB,EAAA;QACnE21D,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAG/xD,WAAa,EAAA,CAAA,CAAA,CAAA;AACxC,KAAA,CAAA;AA5Iaq5D,IAAAA,cAAAA,CA8INsB,YAEN,GAFD,SAAOA,YAAahF,CAAAA,OAA2B,EAAEiF,eAAkC,EAAA;QACjFjF,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGyI,eAAiB,EAAA,CAAA,CAAA,CAAA;AAC7C,KAAA,CAAA;AAhJavB,IAAAA,cAAAA,CAkJNwB,qBAMN,GAND,SAAOA,qBAAsBlF,CAAAA,OAA2B,EAAErrI,IAAyB,EAAA;AACjFqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQvD,SAAS,CAAC9nI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AAC3B,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AAxJaoF,IAAAA,cAAAA,CA0JNyB,oBAEN,GAFD,SAAOA,oBAAqBnF,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QACtEP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AA5JamD,IAAAA,cAAAA,CA8JN0B,OAEN,GAFD,SAAOA,OAAQpF,CAAAA,OAA2B,EAAEtzE,IAAW,EAAA;QACrDszE,OAAQ5D,CAAAA,aAAa,CAAC,CAAA,EAAG1vE,IAAM,EAAA,CAAA,CAAA,CAAA;AACjC,KAAA,CAAA;AAhKag3E,IAAAA,cAAAA,CAkKN2B,SAEN,GAFD,SAAOA,SAAUrF,CAAAA,OAA2B,EAAEsF,YAA+B,EAAA;QAC3EtF,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAG8I,YAAc,EAAA,CAAA,CAAA,CAAA;AAC1C,KAAA,CAAA;AApKa5B,IAAAA,cAAAA,CAsKN6B,aAEN,GAFD,SAAOA,aAAcvF,CAAAA,OAA2B,EAAEwF,gBAAmC,EAAA;QACnFxF,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGgJ,gBAAkB,EAAA,CAAA,CAAA,CAAA;AAC9C,KAAA,CAAA;AAxKa9B,IAAAA,cAAAA,CA0KN+B,sBAMN,GAND,SAAOA,sBAAuBzF,CAAAA,OAA2B,EAAErrI,IAAwB,EAAA;AACjFqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQtE,OAAO,CAAC/mI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AACzB,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AAhLaoF,IAAAA,cAAAA,CAkLNgC,qBAEN,GAFD,SAAOA,qBAAsB1F,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QACvEP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AApLamD,IAAAA,cAAAA,CAsLNiC,YAEN,GAFD,SAAOA,YAAa3F,CAAAA,OAA2B,EAAE4F,eAAkC,EAAA;QACjF5F,OAAQxD,CAAAA,cAAc,CAAC,CAAA,EAAGoJ,eAAiB,EAAA,CAAA,CAAA,CAAA;AAC7C,KAAA,CAAA;AAxLalC,IAAAA,cAAAA,CA0LNmC,qBAMN,GAND,SAAOA,qBAAsB7F,CAAAA,OAA2B,EAAErrI,IAAyB,EAAA;AACjFqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQvD,SAAS,CAAC9nI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AAC3B,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AAhMaoF,IAAAA,cAAAA,CAkMNoC,oBAEN,GAFD,SAAOA,oBAAqB9F,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QACtEP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AApMamD,IAAAA,cAAAA,CAsMNqC,eAEN,GAFD,SAAOA,eAAgB/F,CAAAA,OAA2B,EAAEgG,kBAAqC,EAAA;QACvFhG,OAAQxD,CAAAA,cAAc,CAAC,EAAA,EAAIwJ,kBAAoB,EAAA,CAAA,CAAA,CAAA;AACjD,KAAA,CAAA;AAxMatC,IAAAA,cAAAA,CA0MNuC,sBAEN,GAFD,SAAOA,sBAAuBjG,CAAAA,OAA2B,EAAEkG,yBAA4C,EAAA;QACrGlG,OAAQxD,CAAAA,cAAc,CAAC,EAAA,EAAI0J,yBAA2B,EAAA,CAAA,CAAA,CAAA;AACxD,KAAA,CAAA;AA5MaxC,IAAAA,cAAAA,CAmNNyC,+BAMN,GAND,SAAOA,+BAAgCnG,CAAAA,OAA2B,EAAErrI,IAAqC,EAAA;AACvGqrI,QAAAA,OAAAA,CAAQ7B,WAAW,CAAC,CAAGxpI,EAAAA,IAAAA,CAAKnS,MAAM,EAAE,CAAA,CAAA,CAAA;QACpC,IAAK,IAAIO,IAAI4R,IAAKnS,CAAAA,MAAM,GAAG,CAAGO,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AACzCi9I,YAAAA,OAAAA,CAAQlE,UAAU,CAACnnI,IAAI,CAAC5R,CAAE,CAAA,CAAA,CAAA;AAC5B,SAAA;AACA,QAAA,OAAOi9I,QAAQ1B,SAAS,EAAA,CAAA;AAC1B,KAAA,CAAA;AAzNaoF,IAAAA,cAAAA,CA2NN0C,8BAEN,GAFD,SAAOA,8BAA+BpG,CAAAA,OAA2B,EAAEO,QAAe,EAAA;QAChFP,OAAQ7B,CAAAA,WAAW,CAAC,CAAA,EAAGoC,QAAU,EAAA,CAAA,CAAA,CAAA;AACnC,KAAA,CAAA;AA7NamD,IAAAA,cAAAA,CA+NN2C,iBAGN,GAHD,SAAOA,iBAAAA,CAAkBrG,OAA2B,EAAA;QAClD,IAAMp6I,MAAAA,GAASo6I,QAAQjD,SAAS,EAAA,CAAA;QAChC,OAAOn3I,MAAAA,CAAAA;AACT,KAAA,CAAA;AAlOa89I,IAAAA,OAAAA,cAAAA,CAAAA;AAqQZ,CAAA,EAAA,CAAA;AAEM,IAAA,eAAMU,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,eAAAA,CAEX,EAAwC,EACjCp/I,IAAmC,EACnC8kI,UAAqC,EAC5C,WAA8B,EAC9B,WAA8B,EAC9B,SAAqC,EAC9Bp9D,IAAgB,EACvB,MAA4C,EAC5C,UAAkC,EAC3Bo3E,SAA0B,EAC1BE,YAA2C,EAClD,mBAA2C,EAAA;AAX3C,QAAA,IAAOjiI,eAAAA,EAA6B,GAAA,IAAA,CAAA;AACpC,QAAA,IAAO/c,iBAAAA,IAA+B,GAAA,IAAA,CAAA;AACtC,QAAA,IAAO8kI,uBAAAA,UAAiC,GAAA,IAAA,CAAA;AACxC,QAAA,IAAOE,wBAAAA,WAAsB,GAAA,CAAA,CAAA;AAC7B,QAAA,IAAO3/C,wBAAAA,WAAsB,GAAA,CAAA,CAAA;QAC7B,IAAOrjB,SAAAA,KAAAA,KAAAA,CAAAA,EAAAA,YAA4B,EAAE,CAAA;AACrC,QAAA,IAAO0F,iBAAAA,IAAe,GAAA,CAAA,CAAA;AACtB,QAAA,IAAOvlE,mBAAAA,MAAiC,GAAA,IAAA,CAAA;QACxC,IAAOsjI,UAAAA,KAAAA,KAAAA,CAAAA,EAAAA,aAAyB,EAAE,CAAA;QAClC,IAAOqZ,SAAAA,KAAAA,KAAAA,CAAAA,EAAAA,YAAwB,EAAE,CAAA;AACjC,QAAA,IAAOE,yBAAAA,YAAuC,GAAA,IAAA,CAAA;QAC9C,IAAOC,mBAAAA,KAAAA,KAAAA,CAAAA,EAAAA,sBAAkC,EAAE,CAAA;aAXpCliI,EAAAA,GAAAA,EAAAA,CAAAA;aACA/c,IAAAA,GAAAA,IAAAA,CAAAA;aACA8kI,UAAAA,GAAAA,UAAAA,CAAAA;aACAE,WAAAA,GAAAA,WAAAA,CAAAA;aACA3/C,WAAAA,GAAAA,WAAAA,CAAAA;aACArjB,SAAAA,GAAAA,SAAAA,CAAAA;aACA0F,IAAAA,GAAAA,IAAAA,CAAAA;aACAvlE,MAAAA,GAAAA,MAAAA,CAAAA;aACAsjI,UAAAA,GAAAA,UAAAA,CAAAA;aACAqZ,SAAAA,GAAAA,SAAAA,CAAAA;aACAE,YAAAA,GAAAA,YAAAA,CAAAA;aACAC,mBAAAA,GAAAA,mBAAAA,CAAAA;;AAbIG,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AAiBbvF,IAAAA,MAAAA,CAAAA,IA0BC,GA1BDA,SAAAA,IAAAA,CAAKmB,OAA2B,EAAA;AAC9B,QAAA,IAAMj+H,EAAM,GAAA,IAAI,CAACA,EAAE,KAAK,IAAA,GAAOi+H,OAAQxB,CAAAA,YAAY,CAAC,IAAI,CAACz8H,EAAE,CAAK,GAAA,CAAA,CAAA;AAChE,QAAA,IAAM/c,IAAQ,GAAA,IAAI,CAACA,IAAI,KAAK,IAAA,GAAOg7I,OAAQxB,CAAAA,YAAY,CAAC,IAAI,CAACx5I,IAAI,CAAK,GAAA,CAAA,CAAA;AACtE,QAAA,IAAM8kI,UAAc,GAAA,IAAI,CAACA,UAAU,KAAK,IAAA,GAAO,IAAI,CAACA,UAAU,CAAE+U,IAAI,CAACmB,OAAW,CAAA,GAAA,CAAA,CAAA;QAChF,IAAMh5E,SAAAA,GAAY08E,cAAewB,CAAAA,qBAAqB,CAAClF,OAAAA,EAASA,QAAQlB,sBAAsB,CAAC,IAAI,CAAC93E,SAAS,CAAA,CAAA,CAAA;AAC7G,QAAA,IAAM7/D,MAAU,GAAA,IAAI,CAACA,MAAM,KAAK,IAAA,GAAO64I,OAAQxB,CAAAA,YAAY,CAAC,IAAI,CAACr3I,MAAM,CAAK,GAAA,CAAA,CAAA;AAC5E,QAAA,IAAMsjI,aAAaiZ,cAAe+B,CAAAA,sBAAsB,CAACzF,OAAS,EAAA,IAAI,CAACvV,UAAU,CAAA,CAAA;QACjF,IAAMqZ,SAAAA,GAAYJ,cAAemC,CAAAA,qBAAqB,CAAC7F,OAAAA,EAASA,QAAQlB,sBAAsB,CAAC,IAAI,CAACgF,SAAS,CAAA,CAAA,CAAA;AAC7G,QAAA,IAAME,YAAgB,GAAA,IAAI,CAACA,YAAY,KAAK,IAAA,GAAOhE,OAAQxB,CAAAA,YAAY,CAAC,IAAI,CAACwF,YAAY,CAAK,GAAA,CAAA,CAAA;AAC9F,QAAA,IAAMC,sBAAsBP,cAAeyC,CAAAA,+BAA+B,CAACnG,OAAS,EAAA,IAAI,CAACiE,mBAAmB,CAAA,CAAA;AAE5GP,QAAAA,cAAAA,CAAea,mBAAmB,CAACvE,OAAAA,CAAAA,CAAAA;QACnC0D,cAAec,CAAAA,KAAK,CAACxE,OAASj+H,EAAAA,EAAAA,CAAAA,CAAAA;QAC9B2hI,cAAegB,CAAAA,OAAO,CAAC1E,OAASh7I,EAAAA,IAAAA,CAAAA,CAAAA;QAChC0+I,cAAekB,CAAAA,aAAa,CAAC5E,OAASlW,EAAAA,UAAAA,CAAAA,CAAAA;AACtC4Z,QAAAA,cAAAA,CAAeoB,cAAc,CAAC9E,OAAS,EAAA,IAAI,CAAChW,WAAW,CAAA,CAAA;AACvD0Z,QAAAA,cAAAA,CAAeqB,cAAc,CAAC/E,OAAS,EAAA,IAAI,CAAC31D,WAAW,CAAA,CAAA;QACvDq5D,cAAesB,CAAAA,YAAY,CAAChF,OAASh5E,EAAAA,SAAAA,CAAAA,CAAAA;AACrC08E,QAAAA,cAAAA,CAAe0B,OAAO,CAACpF,OAAS,EAAA,IAAI,CAACtzE,IAAI,CAAA,CAAA;QACzCg3E,cAAe2B,CAAAA,SAAS,CAACrF,OAAS74I,EAAAA,MAAAA,CAAAA,CAAAA;QAClCu8I,cAAe6B,CAAAA,aAAa,CAACvF,OAASvV,EAAAA,UAAAA,CAAAA,CAAAA;QACtCiZ,cAAeiC,CAAAA,YAAY,CAAC3F,OAAS8D,EAAAA,SAAAA,CAAAA,CAAAA;QACrCJ,cAAeqC,CAAAA,eAAe,CAAC/F,OAASgE,EAAAA,YAAAA,CAAAA,CAAAA;QACxCN,cAAeuC,CAAAA,sBAAsB,CAACjG,OAASiE,EAAAA,mBAAAA,CAAAA,CAAAA;QAE/C,OAAOP,cAAAA,CAAe2C,iBAAiB,CAACrG,OAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AA3CaoE,IAAAA,OAAAA,eAAAA,CAAAA;AA4CZ,CAAA,EAAA;;ACjTD;;AAEC,IACM,IAAA,cAAMkC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,cAAAA,GAAAA;AAEXC,QAAAA,IAAAA,CAAAA,iBAAAA,GAA8C,EAAE,CAAA;;AAFrCD,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAIXnG,IAAAA,MAAAA,CAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAASvc,iBAAyC,EAAA;AAChD,QAAA,IAAI,CAAC2iB,iBAAiB,CAAC7hJ,IAAI,CAACk/H,iBAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;IAEA4iB,MAAAA,CAAAA,iBAyBC,GAzBDA,SAAAA,iBAAAA,GAAAA;AACE,QAAA,IAAMC,GAAM,GAAA,IAAI3G,OAAmB,CAAC,CAAA,CAAA,CAAA;AACpC,QAAA,IAAM4G,iBAAiB,IAAI7F,qBAAAA,EAAAA,CAAAA;AAC3B,QAAA,IAAMF,gBAAgB,EAAE,CAAA;QAExB,IAAgC,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAAC4F,iBAAiB,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAA7C3iB,YAAAA,IAAAA,iBAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI+iB,sBAAAA,KAAAA,CAAAA,CAAAA;AAEJ,YAAA,IAAI/iB,kBAAkBvjD,QAAQ,KAAK35D,QAAa,CAACqgD,QAAQ,EAAE;AACzD4/E,gBAAAA,mBAAAA,GAAsB,IAAIlH,oBACxB,CAAA,UAAA,EACA,IAAI,CAACmH,oBAAoB,CAAChjB,iBAAAA,CAAAA,CAAAA,CAAAA;AAE9B,aAAA;AAEA,YAAA,IAAI,CAAC+iB,mBAAqB,EAAA;AACxB,gBAAA,SAAA;AACF,aAAA;AACAhG,YAAAA,aAAAA,CAAcj8I,IAAI,CAACiiJ,mBAAAA,CAAAA,CAAAA;AACrB,SAAA;AACAD,QAAAA,cAAAA,CAAe/F,aAAa,GAAGA,aAAAA,CAAAA;AAE/BD,QAAAA,oBAAAA,CAAqBY,gCAAgC,CAACmF,GAAKC,EAAAA,cAAAA,CAAe7H,IAAI,CAAC4H,GAAAA,CAAAA,CAAAA,CAAAA;QAE/E,OAAOA,GAAAA,CAAIrL,YAAY,EAAA,CAAA;AACzB,KAAA,CAAA;AAEAyL,IAAAA,MAAAA,CAAAA,qBA4BC,GA5BDA,SAAAA,qBAAAA,CAAuB1/I,MAAkB,EAAA;AACvC,QAAA,IAAMnB,GAAM,GAAA,IAAI85I,UAAsB,CAAC34I,MAAAA,CAAAA,CAAAA;QACvC,IAAM2/I,gBAAAA,GAAmBpG,oBAAqBI,CAAAA,6BAA6B,CAAC96I,GAAAA,CAAAA,CAAAA;AAE5E,QAAA,IAAK,IAAIjD,CAAI,GAAA,CAAA,EAAGA,IAAI+jJ,gBAAiBlG,CAAAA,mBAAmB,IAAI79I,CAAK,EAAA,CAAA;YAC/D,IAAM4jJ,mBAAAA,GAAsBG,gBAAiBnG,CAAAA,aAAa,CAAC59I,CAAAA,CAAAA,CAAAA;AAE3D,YAAA,IAAI,CAAC4jJ,mBAAqB,EAAA;AACxB,gBAAA,SAAA;AACF,aAAA;YAEA,IAAMxL,UAAAA,GAAawL,oBAAoBpH,SAAS,EAAA,CAAA;YAChD,IAAMl/D,QAAAA,GAAWsmE,oBAAoBtmE,QAAQ,EAAA,CAAA;AAE7C,YAAA,IAAI,CAAC86D,UAAY,EAAA;AACf,gBAAA,SAAA;AACF,aAAA;AACA,YAAA,IAAIvX,oBAAAA,KAAAA,CAAAA,CAAAA;AAEJ,YAAA,IAAIvjD,QAAa35D,KAAAA,QAAa,CAACqgD,QAAQ,EAAE;gBACvC68D,iBAAoB,GAAA,IAAI,CAACmjB,oBAAoB,CAAC5L,UAAAA,CAAAA,CAAAA;AAChD,aAAA;AAEA,YAAA,IAAI,CAACvX,iBAAmB,EAAA;AACtB,gBAAA,SAAA;AACF,aAAA;AACA,YAAA,IAAI,CAAC2iB,iBAAiB,CAAC7hJ,IAAI,CAACk/H,iBAAAA,CAAAA,CAAAA;AAC9B,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQgjB,oBAqDP,GArDD,SAAQA,oBAAAA,CAAsBje,YAA+B,EAAA;AAC3D,QAAA,IAAM8d,GAAM,GAAA,IAAI3G,OAAmB,CAAC,CAAA,CAAA,CAAA;AACpC,QAAA,IAAMkH,iBAAiB,IAAI5C,eAAAA,EAAAA,CAAAA;AAC3B,QAAA,IACEpa,WAKErB,GAAAA,YAAAA,CALFqB,WAAa3/C,EAAAA,WAAAA,GAKXs+C,aALWt+C,WAAa3d,EAAAA,IAAAA,GAKxBi8D,YALwBj8D,CAAAA,IAAAA,EAAM3qD,EAK9B4mH,GAAAA,YAAAA,CAL8B5mH,EAAI+nH,EAAAA,UAAAA,GAKlCnB,aALkCmB,UAKlCnB,EAAAA,uBAAAA,GAAAA,YAAAA,CAJFmb,SAAAA,EAAAA,SAAAA,GAAAA,uBAAAA,KAAAA,KAAAA,CAAAA,GAAY,EAAE,GAAA,uBAAA,EAAA,0BAAA,GAIZnb,YAHFqb,CAAAA,YAAAA,EAAAA,uDAAe,EAGbrb,GAAAA,0BAAAA,EAAAA,iCAAAA,GAAAA,YAAAA,CAFFsb,mBAAAA,EAAAA,mBAAAA,GAAAA,iCAAAA,KAAAA,KAAAA,CAAAA,GAAsB,EAAE,GAAA,iCAAA,EAAA,wBAAA,GAEtBtb,YADF8B,CAAAA,UAAAA,EAAAA,mDAAa,EAAE,GAAA,wBAAA,CAAA;AAGjBuc,QAAAA,cAAAA,CAAehd,WAAW,GAAGA,WAAAA,CAAAA;AAC7Bgd,QAAAA,cAAAA,CAAe38D,WAAW,GAAGA,WAAAA,CAAAA;AAC7B28D,QAAAA,cAAAA,CAAet6E,IAAI,GAAGA,IAAAA,CAAAA;AACtBs6E,QAAAA,cAAAA,CAAejlI,EAAE,GAAGA,EAAAA,CAAAA;AACpBilI,QAAAA,cAAAA,CAAelD,SAAS,GAAGA,SAAAA,CAAAA;AAC3BkD,QAAAA,cAAAA,CAAehD,YAAY,GAAGA,YAAAA,CAAAA;AAC9BgD,QAAAA,cAAAA,CAAe/C,mBAAmB,GAAGA,mBAAAA,CAAAA;AACrC+C,QAAAA,cAAAA,CAAevc,UAAU,GAAGA,UAAAA,CAAAA;AAC5B,QAAA,IAAMwc,eAAe,IAAIjE,aAAAA,EAAAA,CAAAA;QAEzBiE,YAAar9D,CAAAA,WAAW,GAAGkgD,UAAAA,CAAWlgD,WAAW,CAAA;QACjDq9D,YAAald,CAAAA,QAAQ,GAAG,EAAE,CAAA;QAC1B,IAAsBD,IAAAA,SAAAA,GAAAA,oCAAAA,CAAAA,UAAAA,CAAWC,QAAQ,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAhChvE,YAAAA,IAAAA,OAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAQkvE,QAAmDlvE,GAAAA,OAAAA,CAAnDkvE,QAAUrkI,EAAAA,MAAAA,GAAyCm1D,OAAzCn1D,CAAAA,MAAAA,EAAQsQ,MAAiC6kD,GAAAA,OAAAA,CAAjC7kD,MAAQi0H,EAAAA,SAAAA,GAAyBpvE,OAAzBovE,CAAAA,SAAAA,EAAW7+H,YAAcyvD,OAAdzvD,CAAAA,SAAAA,CAAAA;AAC7C,YAAA,IAAM47I,YAAY,IAAI/E,gBAAAA,CACpBlY,QACArkI,EAAAA,MAAAA,EACAsQ,QACAi0H,SACA7+H,EAAAA,SAAAA,CAAAA,CAAAA;YAGF27I,YAAald,CAAAA,QAAQ,CAACrlI,IAAI,CAACwiJ,SAAAA,CAAAA,CAAAA;AAC7B,SAAA;AACAF,QAAAA,cAAAA,CAAeld,UAAU,GAAGmd,YAAAA,CAAAA;AAC5B,QAAA,IAAME,cAAc,EAAE,CAAA;QAEtB,IAAsBxe,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,YAAAA,CAAa3hE,SAAS,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAnCmyB,YAAAA,IAAAA,OAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAQvzF,UAAoCuzF,OAApCvzF,CAAAA,MAAAA,EAAQ+jF,aAA4BwP,OAA5BxP,CAAAA,UAAAA,EAAYC,cAAgBuP,OAAhBvP,CAAAA,WAAAA,CAAAA;AAC5B,YAAA,IAAMw9D,SAAY,GAAA,IAAI1F,UACpB97I,CAAAA,OAAAA,EACA+jF,UACAC,EAAAA,WAAAA,CAAAA,CAAAA;AAGFu9D,YAAAA,WAAAA,CAAYziJ,IAAI,CAAC0iJ,SAAAA,CAAAA,CAAAA;AACnB,SAAA;AACAJ,QAAAA,cAAAA,CAAehgF,SAAS,GAAGmgF,WAAAA,CAAAA;AAE3BzG,QAAAA,oBAAAA,CAAqBY,gCAAgC,CAACmF,GAAKO,EAAAA,cAAAA,CAAenI,IAAI,CAAC4H,GAAAA,CAAAA,CAAAA,CAAAA;QAE/E,OAAOA,GAAAA,CAAIrL,YAAY,EAAA,CAAA;AACzB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQ2L,oBAwEP,GAxED,SAAQA,oBAAAA,CAAsB5/I,MAAkB,EAAA;AAC9C,QAAA,IAAMnB,GAAM,GAAA,IAAI85I,UAAsB,CAAC34I,MAAAA,CAAAA,CAAAA;QACvC,IAAM6/I,cAAAA,GAAiBtD,cAAeW,CAAAA,uBAAuB,CAACr+I,GAAAA,CAAAA,CAAAA;AAC9D,QAAA,IAAM8jI,UAA8B,GAAA;YAClClgD,WAAa,EAAA,CAAA;AACbmgD,YAAAA,QAAAA,EAAU,EAAE;AACd,SAAA,CAAA;QACA,IAAMsd,YAAAA,GAAeL,eAAeld,UAAU,EAAA,CAAA;AAE9C,QAAA,IAAIud,YAAc,EAAA;YAChBvd,UAAWlgD,CAAAA,WAAW,GAAGy9D,YAAAA,CAAaz9D,WAAW,EAAA,CAAA;AAEjD,YAAA,IAAK,IAAI7mF,CAAI,GAAA,CAAA,EAAGA,IAAIskJ,YAAatE,CAAAA,cAAc,IAAIhgJ,CAAK,EAAA,CAAA;gBACtD,IAAMg4D,OAAAA,GAAUssF,YAAatd,CAAAA,QAAQ,CAAChnI,CAAAA,CAAAA,CAAAA;AAEtC,gBAAA,IAAI,CAACg4D,OAAS,EAAA;AACZ,oBAAA,SAAA;AACF,iBAAA;AAEYA,gBAAAA,IAAAA,iBAAAA,CAAAA;AADZ,gBAAA,IAAMusF,aAAoC,GAAA;AACxCrd,oBAAAA,QAAAA,EAAUlvE,CAAAA,iBAAAA,GAAAA,OAAQkvE,CAAAA,QAAQ,cAAhBlvE,iBAAsB,GAAA,EAAA;AAChCn1D,oBAAAA,MAAAA,EAAQm1D,QAAQn1D,MAAM,EAAA;AACtBsQ,oBAAAA,MAAAA,EAAQ6kD,QAAQ7kD,MAAM,EAAA;AACtBi0H,oBAAAA,SAAAA,EAAWpvE,QAAQovE,SAAS,EAAA;AAC5B7+H,oBAAAA,SAAAA,EAAUyvD,QAAQzvD,SAAS,EAAA;AAC7B,iBAAA,CAAA;gBAEAw+H,UAAWC,CAAAA,QAAQ,CAACrlI,IAAI,CAAC4iJ,aAAAA,CAAAA,CAAAA;AAC3B,aAAA;AACF,SAAA;AAEA,QAAA,IAAMtgF,YAA4B,EAAE,CAAA;AAEpC,QAAA,IAAK,IAAIjkE,EAAI,GAAA,CAAA,EAAGA,KAAIikJ,cAAerD,CAAAA,eAAe,IAAI5gJ,EAAK,EAAA,CAAA;YACzD,IAAMqkJ,SAAAA,GAAYJ,cAAehgF,CAAAA,SAAS,CAACjkE,EAAAA,CAAAA,CAAAA;AAE3C,YAAA,IAAI,CAACqkJ,SAAW,EAAA;AACd,gBAAA,SAAA;AACF,aAAA;AACA,YAAA,IAAMjuD,OAAwB,GAAA;AAC5BvzF,gBAAAA,MAAAA,EAAQwhJ,UAAUxhJ,MAAM,EAAA;AACxBgkF,gBAAAA,WAAAA,EAAaw9D,UAAUx9D,WAAW,EAAA;AAClCD,gBAAAA,UAAAA,EAAYy9D,UAAUz9D,UAAU,EAAA;AAClC,aAAA,CAAA;AAEA3iB,YAAAA,SAAAA,CAAUtiE,IAAI,CAACy0F,OAAAA,CAAAA,CAAAA;AACjB,SAAA;AAEA,QAAA,IAAM2qD,YAAY,EAAE,CAAA;AAEpB,QAAA,IAAK,IAAI/gJ,EAAI,GAAA,CAAA,EAAGA,KAAIikJ,cAAejD,CAAAA,eAAe,IAAIhhJ,EAAK,EAAA,CAAA;YACzD,IAAM06B,QAAAA,GAAWupH,cAAelD,CAAAA,SAAS,CAAC/gJ,EAAAA,CAAAA,CAAAA;AAE1C+gJ,YAAAA,SAAAA,CAAUp/I,IAAI,CAAC+4B,QAAAA,CAAAA,CAAAA;AACjB,SAAA;QAEA,IAAM0mH,wBAAAA,GAA2B6C,eAAe7C,wBAAwB,EAAA,CAAA;AAO9D6C,QAAAA,IAAAA,sBAAAA,EAEMA,8BAEFA,+BACRA,EAAAA,kBAAAA,CAAAA;AAXN,QAAA,IAAMre,YAAkC,GAAA;YACtCmB,UAAAA,EAAAA,UAAAA;AACAE,YAAAA,WAAAA,EAAagd,eAAehd,WAAW,EAAA;AACvC3/C,YAAAA,WAAAA,EAAa28D,eAAe38D,WAAW,EAAA;YACvCrjB,SAAAA,EAAAA,SAAAA;AACA0F,YAAAA,IAAAA,EAAMs6E,eAAet6E,IAAI,EAAA;AACzBvlE,YAAAA,MAAAA,EAAQ6/I,CAAAA,sBAAAA,GAAAA,cAAe7/I,CAAAA,MAAM,cAArB6/I,sBAA2B,GAAA,EAAA;YACnClD,SAAAA,EAAAA,SAAAA;AACAE,YAAAA,YAAAA,EAAcgD,CAAAA,4BAAAA,GAAAA,cAAehD,CAAAA,YAAY,cAA3BgD,4BAAiC,GAAA,EAAA;AAC/C/C,YAAAA,mBAAAA,EAAqBE,wBAA2B35I,GAAAA,KAAAA,CAAMoV,IAAI,CAACukI,wBAA4BziJ,CAAAA,GAAAA,SAAAA;AACvF+oI,YAAAA,UAAAA,EAAYuc,CAAAA,+BAAAA,GAAAA,cAAenD,CAAAA,eAAe,cAA9BmD,+BAAoCtlJ,GAAAA,SAAAA;AAChDqgB,YAAAA,EAAAA,EAAIilI,CAAAA,kBAAAA,GAAAA,cAAejlI,CAAAA,EAAE,cAAjBilI,kBAAuB,GAAA,EAAA;YAC3B3mE,QAAU35D,EAAAA,QAAa,CAACqgD,QAAQ;AAClC,SAAA,CAAA;QAEA,OAAO4hE,YAAAA,CAAAA;AACT,KAAA,CAAA;AAhMW2d,IAAAA,OAAAA,cAAAA,CAAAA;AAiMZ,CAAA;;AC9MM,IAAMiB,cAAc,GAAG;AAE9B;;AAEC,IACM,IAAA,MAAMC,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,MAAAA,CAYEC,GAAiB,EAAA;AAAjBA,QAAAA,IAAAA,gBAAAA,GAAMF,GAAAA,WAAAA,CAAAA;aATX9uE,MAAS,GAAA,IAAA,CAAA;aACTie,QAAW,GAAA,CAAA,CAAA;;aAMX5tF,EAAK,GAAA,CAAA,CAAA;QAGX,IAAI,CAAC4+I,MAAM,CAACD,GAAAA,CAAAA,CAAAA;QACZ,IAAI,CAACE,OAAO,GAAG,EAAE,CAAA;;AAdRH,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;AAwBX;;MAGAI,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAAA,GAAAA;QACE,OAAO,IAAI,CAACC,SAAS,CAAA;AACvB,KAAA,CAAA;AACAH,IAAAA,MAAAA,CAAAA,MAMC,GANDA,SAAAA,MAAAA,CAAQD,GAAW,EAAA;AACjB,QAAA,IAAI,CAACI,SAAS,GAAGx+I,OAAAA,CAAMo+I,KAAK,CAAG,EAAA,GAAA,CAAA,CAAA;;;;AAI/B,QAAA,IAAI,CAAChlG,QAAQ,GAAGl7C,KAAK0D,KAAK,CAAC,OAAOw8I,GAAO,CAAA,GAAA,CAAA,CAAA;AAC3C,KAAA,CAAA;AAEA;;;MAIAjsE,MAAAA,CAAAA,SAEC,GAFDA,SAAAA,SAAAA,GAAAA;QACE,OAAO,IAAI,CAAC/C,MAAM,CAAA;AACpB,KAAA,CAAA;AAEA;;MAGArjE,MAAAA,CAAAA,KAkBC,GAlBDA,SAAAA,KAAAA,GAAAA;;QACE,IAAI,CAACqjE,MAAM,GAAG,KAAA,CAAA;QACd,IAAI,CAAC3vE,EAAE,GAAG,CAAA,CAAA;AAEV,QAAA,IAAI,CAAC,IAAI,CAACg/I,UAAU,EAAE;AACpB,YAAA,IAAI,CAACpxD,QAAQ,GAAGzD,WAAAA,CAAYC,GAAG,EAAA,CAAA;YAC/B,IAAM60D,GAAAA,GAAMC,qBAAyB,IAAA,SAAUx/F,IAAI,EAAA;gBACjD,OAAOp1C,MAAAA,CAAOggD,UAAU,CAAC5K,IAAM,EAAA,IAAA,CAAA,CAAA;AACjC,aAAA,CAAA;AACA,YAAA,IAAMy/F,OAAU,GAAA,WAAA;gBACd,KAAKH,CAAAA,UAAU,GAAGC,GAAIE,CAAAA,OAAAA,CAAAA,CAAAA;gBACtB,IAAI,CAAC,KAAKxvE,CAAAA,MAAM,EAAE;AAChB,oBAAA,KAAA,CAAKZ,IAAI,EAAA,CAAA;AACX,iBAAA;AACF,aAAA,CAAA;AAEAowE,YAAAA,OAAAA,EAAAA,CAAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;MAGAp1I,MAAAA,CAAAA,IAOC,GAPDA,SAAAA,IAAAA,GAAAA;AACGq1I,QAAAA,CAAAA,wBAAwB90I,MAAOwgI,CAAAA,YAAY,EAAE,IAAI,CAACkU,UAAU,CAAA,CAAA;QAC7D,IAAI,CAACA,UAAU,GAAG,CAAA,CAAA;QAClB,IAAI,CAACpxD,QAAQ,GAAG,CAAA,CAAA;QAChB,IAAI,CAACje,MAAM,GAAG,IAAA,CAAA;QACd,IAAI,CAAC3vE,EAAE,GAAG,CAAA,CAAA;QACV,IAAI,CAAC6+I,OAAO,GAAG,EAAE,CAAA;AACnB,KAAA,CAAA;AAEA;;MAGApsE,MAAAA,CAAAA,KAGC,GAHDA,SAAAA,KAAAA,GAAAA;QACE,IAAI,CAAC9C,MAAM,GAAG,IAAA,CAAA;QACd,IAAI,CAAC3vE,EAAE,GAAG,CAAA,CAAA;AACZ,KAAA,CAAA;AAEA;;MAGAwyE,MAAAA,CAAAA,MAGC,GAHDA,SAAAA,MAAAA,GAAAA;QACE,IAAI,CAAC7C,MAAM,GAAG,KAAA,CAAA;QACd,IAAI,CAAC3vE,EAAE,GAAG,CAAA,CAAA;AACZ,KAAA,CAAA;AAEA;;MAGA+uE,MAAAA,CAAAA,IAmBC,GAnBDA,SAAAA,IAAAA,GAAAA;QACE,IAAI,IAAI,CAACY,MAAM,EAAE;AACf,YAAA,OAAA;AACF,SAAA;QACA,IAAMD,SAAAA,GAAYya,YAAYC,GAAG,EAAA,CAAA;AAEjC,QAAA,IAAI,CAACpqF,EAAE,GAAG0vE,SAAY,GAAA,IAAI,CAACke,QAAQ,CAAA;AACnC,QAAA,IAAI,IAAI,CAAC5tF,EAAE,IAAI,IAAI,CAAC25C,QAAQ,EAAE;YAC5B,IAAI,CAACi0C,QAAQ,GAAGle,SAAAA,CAAAA;YAEhB,IAAI,IAAI,CAAC2vE,YAAY,EAAE;gBACrB,IAAI,CAACR,OAAO,GAAG,IAAI,CAACA,OAAO,CAACx3E,MAAM,CAAC0H,SAAAA,IAAAA,EAAAA;AAAQA,oBAAAA,OAAAA,IAAAA,CAAAA;;gBAC3C,IAAI,CAACswE,YAAY,GAAG,KAAA,CAAA;AACtB,aAAA;YAEA,IAAmB,IAAA,SAAA,GAAA,oCAAA,CAAA,IAAI,CAACR,OAAO,CAAE,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAtB9vE,gBAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;gBACTA,IAAK,CAAA,IAAI,CAAC/uE,EAAE,CAAA,CAAA;AACd,aAAA;AACF,SAAA;AACF,KAAA,CAAA;AAEA;;;AAGC,MACDyB,MAAAA,CAAAA,GAKC,GALDA,SAAAA,IAAK69I,MAA4B,EAAA;QAC/B,IAAI,OAAOA,WAAW,UAAY,EAAA;AAChC,YAAA,MAAM,IAAIrjJ,KAAM,CAAA,iDAAA,CAAA,CAAA;AAClB,SAAA;AACA,QAAA,IAAI,CAAC4iJ,OAAO,CAACjjJ,IAAI,CAAC0jJ,MAAAA,CAAAA,CAAAA;AACpB,KAAA,CAAA;AAlIWZ,IAAAA,aAAAA,CAAAA,MAAAA,EAAAA;;YAoBP/hI,GAAAA,EAAAA,WAAAA;;;MAAJ,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC3c,EAAE,CAAA;AAChB,aAAA;;;AAtBW0+I,IAAAA,OAAAA,MAAAA,CAAAA;AAmIZ,CAAA;;AC7FD;;AAEC,IACM,IAAA,MAAMa,iBAAD,SAAL,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,MAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,MA2DEjxI,CAAAA,MAAyB,EAAErR,OAAuB,EAAA;;;cA1D/Df,IAAO,GAAA,WAAA,CAAA;cACPozE,KAAQ,GAAA,CAAA,CAAA;cAERkwE,YAAe,GAAA,CAAA,CAAA;cACfC,aAAgB,GAAA,KAAA,CAAA;AAkBhB;;AAEC,MAAA,KAAA,CACDxiC,eAA2B,IAAI77C,GAAAA,EAAAA,CAAAA;AAC/BwP,QAAAA,KAAAA,CAAAA,YAAAA,GAA8B,EAAE,CAAA;AAChC8uE,QAAAA,KAAAA,CAAAA,aAAAA,GAAgC,EAAE,CAAA;cAGlClrE,GAAM,GAAA,EAAA,CAAA;AACN;;;AAGC,MAAA,KAAA,CACD8qE,MAAwB,GAAA,IAAA,CAAA;cAOdK,SAAY,GAAA,KAAA,CAAA;AACZ92F,QAAAA,KAAAA,CAAAA,QAAAA,GAAsB,EAAE,CAAA;AACxB3vB,QAAAA,KAAAA,CAAAA,SAAAA,GAAwB,EAAE,CAAA;AAC1B4lC,QAAAA,KAAAA,CAAAA,UAAAA,GAAyB,EAAE,CAAA;AAC3BnJ,QAAAA,KAAAA,CAAAA,MAAAA,GAAiB,EAAE,CAAA;AACnB4P,QAAAA,KAAAA,CAAAA,YAAAA,GAA6B,EAAE,CAAA;AAavC,QAAA,KAAA,CAAKj3D,MAAM,GAAGA,MAAAA,CAAAA;AACHrR,QAAAA,IAAAA,YAAAA,CAAAA;QAAX,KAAKu3E,CAAAA,GAAG,GAAGv3E,CAAAA,YAAAA,GAAAA,2BAAAA,OAASu3E,CAAAA,GAAG,YAAZv3E,YAAgB,GAAA,EAAA,CAAA;AACfA,QAAAA,IAAAA,aAAAA,CAAAA;QAAZ,KAAKf,CAAAA,IAAI,GAAGe,CAAAA,aAAAA,GAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAASf,IAAI,KAAA,IAAA,GAAbe,aAAiB,GAAA,KAAA,CAAKf,IAAI,CAAA;AACpBe,QAAAA,IAAAA,mBAAAA,CAAAA;QAAlB,KAAK2iJ,CAAAA,UAAU,GAAG3iJ,CAAAA,mBAAAA,GAAAA,2BAAAA,OAAS2iJ,CAAAA,UAAU,YAAnB3iJ,mBAAuBoN,GAAAA,aAAAA,EAAAA,CAAAA;QACzC,KAAK4wH,CAAAA,aAAa,GAAG,EAAC,CAAA;QACtB,KAAKiS,CAAAA,cAAc,GAAG,EAAC,CAAA;AACvB,QAAA,KAAA,CAAKtvD,YAAY,GAAGnrB,oBAAAA,CAAAA,wBAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AACpB,QAAA,KAAA,CAAKg6E,kBAAkB,GAAG/5E,0BAAAA,CAAAA,wBAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAE1B,QAAA,IAAI,EAACz1D,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAS4iJ,CAAAA,YAAY,CAAE,EAAA;AAC1B,YAAA,KAAA,CAAKP,MAAM,GAAG,IAAIZ,MAAOzhJ,CAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAS0hJ,GAAG,CAAA,CAAA;AACrC,YAAA,KAAA,CAAKmB,aAAa,CAAC,KAAK1mH,CAAAA,MAAM,CAAC58B,IAAI,CAAA,wBAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AACrC,SAAA;AAEyCS,QAAAA,IAAAA,oBAAAA,CAAAA;QAAzC,KAAKoyF,CAAAA,WAAW,GAAG,IAAIhG,WAAkBpsF,CAAAA,wBAAAA,CAAAA,KAAAA,CAAAA,EAAAA,CAAAA,uBAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS8iJ,WAAW,KAAA,IAAA,GAApB9iJ,oBAAwB,GAAA,KAAA,CAAA,CAAA;AACtCA,QAAAA,IAAAA,oBAAAA,CAAAA;QAA3B,KAAKoyF,CAAAA,WAAW,CAAC32D,OAAO,GAAGz7B,CAAAA,uBAAAA,OAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAAA,CAAS20E,WAAW,KAAA,IAAA,GAApB30E,oBAAwB,GAAA,KAAA,CAAA;AACnD,QAAA,KAAA,CAAKoyF,WAAW,CAAC3F,aAAa,CAAC,MAAKp7E,MAAM,CAAA,CAAA;QAE1C,KAAK0xI,CAAAA,WAAW,GAAG,IAAIrlB,WAAAA,CAAAA,wBAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;QACvB,KAAKslB,CAAAA,YAAY,GAAG,IAAI1T,YAAAA,CAAAA,wBAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;;;AAhFfgT,IAAAA,IAAAA,MAAAA,GAAAA,MAAAA,CAAAA,SAAAA,CAAAA;IAwFXW,MAAAA,CAAAA,cAGC,GAHDA,SAAAA,cAAAA,GAAAA;QACE,IAAI,CAACjlB,aAAa,GAAG,EAAC,CAAA;QACtB,IAAI,CAACiS,cAAc,GAAG,EAAC,CAAA;AACzB,KAAA,CAAA;AAEAiT,IAAAA,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,oBAAAA,CAAsBt0I,IAA4B,EAAA;AAChD,QAAA,IAAI,CAACovH,aAAa,CAACpvH,IAAKoN,CAAAA,EAAE,CAAC,GAAGpN,IAAAA,CAAAA;AAChC,KAAA,CAAA;AAEAisE,IAAAA,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,CAAuBkjD,IAAY,EAAA;AACjC,QAAA,OAAO,IAAI,CAACC,aAAa,CAACD,IAAK,CAAA,CAAA;AACjC,KAAA,CAAA;AAEAriH,IAAAA,MAAAA,CAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAa2gH,aAA4B,EAAA;AACvC,QAAA,IAAI,CAAC4T,cAAc,CAAC5T,aAAc1gH,CAAAA,aAAa,GAAG,GAAG0gH,aAAAA,CAAAA;AACvD,KAAA,CAAA;AAEA;;AAEC,MACD/8G,MAAAA,CAAAA,UAaC,GAbDA,SAAAA,WAAc9D,IAAmB,EAAA;;QAE/B,IAAI,CAAE3K,cAAc2K,IAAQ,CAAA,EAAA;YAC1B,OAAOA,IAAAA,CAAAA;AACT,SAAA;AAEA,QAAA,IAAI,IAAI,CAACy0H,cAAc,CAACz0H,IAAKQ,CAAAA,EAAE,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI,CAACi0H,cAAc,CAACz0H,IAAAA,CAAKQ,EAAE,CAAC,CAAA;AACrC,SAAA;AAEA,QAAA,IAAM8E,SAAS,IAAI,CAACiiI,WAAW,CAACplB,QAAQ,CAAIniH,IAAAA,CAAAA,CAAAA;QAE5C,OAAOsF,MAAAA,CAAAA;AACT,KAAA,CAAA;AAEAjF,IAAAA,MAAAA,CAAAA,cAEC,GAFDA,SAAAA,cAAAA,CAAgBG,EAAU,EAAA;AACxB,QAAA,OAAO,IAAI,CAACi0H,cAAc,CAACj0H,EAAG,CAAA,CAAA;AAChC,KAAA,CAAA;AAEAg0H,IAAAA,MAAAA,CAAAA,eAyDC,GAzDDA,SAAAA,eAAAA,CAAiBh8H,KAAY,EAAA;AAC3B,QAAA,IAAQq/D,YAAmCr/D,KAAnCq/D,CAAAA,SAAAA,EAAAA,qBAAAA,GAAmCr/D,KAAxB0+C,CAAAA,cAAAA,EAAAA,oDAAiB,EAAE,GAAA,qBAAA,CAAA;AACtC,QAAA,IAAA,gBAAA,GAGI2gB,UAFFnwB,KAAAA,EAAAA,KAAAA,GAAAA,gBAAAA,KAAAA,KAAAA,CAAAA,GAAQ,EAAE,GAERmwB,gBAAAA,EAAAA,oBAAAA,GAAAA,SAAAA,CAFUp3C,WAAAA,SAAY,GAAA,oBAAA,KAAA,KAAA,CAAA,GAAA,EAAE,GAExBo3C,oBAAAA,EAAAA,kBAAAA,GAAAA,SAAAA,CAF0BmyD,SAAAA,OAAU,GAAA,kBAAA,KAAA,KAAA,CAAA,GAAA,EAAE,+CAEtCnyD,SAFwCxR,CAAAA,UAAAA,EAAAA,gDAAa,EAAE,GAAA,qBAAA,EAAA,qBAAA,GAEvDwR,SAFyD33C,CAAAA,UAAAA,EAAAA,gDAAa,EAAE,GAAA,qBAAA,EAAA,qBAAA,GAExE23C,UADFoyD,UAAAA,EAAAA,UAAAA,GAAAA,qBAAAA,KAAAA,KAAAA,CAAAA,GAAa,EAAE,GACbpyD,qBAAAA,EAAAA,eAAAA,GAAAA,SAAAA,CADe1gB,MAAAA,IAAO,GAAA,eAAA,KAAA,KAAA,CAAA,GAAA,EAAE,uCACxB0gB,SAD0BqyD,CAAAA,KAAAA,EAAAA,sCAAQ,EAAE,GAAA,gBAAA,EAAE/xD,eACtCN,SADsCM,CAAAA,YAAAA,CAAAA;AAG1C,QAAA,IAAA,IAAA,SAAA,GAAA,oCAAA,CAA8BA,YAAc,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,KAAA,GAAA,SAAA,EAAA,EAAA,IAAA,EAAA;AAAjC2xD,YAAAA,IAAAA,eAAAA,GAAAA,KAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAAC4d,oBAAoB,CAAC5d,eAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA0BpiF,KAAO,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAtBigG,YAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;AACT,YAAA,IAAI,CAACnY,eAAgBmY,CAAAA,WAAAA,CAAY3vE,WAAW,EAAEx/D,KAAAA,CAAMw/D,WAAW,CAAG,EAAA;gBAChE2vE,WAAYznH,CAAAA,UAAU,GAAG,EAAE,CAAA;AAC3BynH,gBAAAA,WAAAA,CAAYzwI,IAAI,GAAGiO,QAAa,CAAC46D,IAAI,CAAA;AACvC,aAAA;YACA,IAAI,CAAC2nE,oBAAoB,CAACC,WAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA2BlnH,SAAW,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA3BmnH,YAAAA,IAAAA,YAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACF,oBAAoB,CAACE,YAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAyB5d,OAAS,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAvB3qE,YAAAA,IAAAA,UAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACqoF,oBAAoB,CAACroF,UAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA2BgH,UAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA5B+gE,YAAAA,IAAAA,YAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACsgB,oBAAoB,CAACtgB,YAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA4BlnG,UAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA7B+mG,YAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACygB,oBAAoB,CAACzgB,aAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA4BgD,UAAY,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA7B4d,YAAAA,IAAAA,aAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACH,oBAAoB,CAACG,aAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAAuB3d,KAAO,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAnB4d,YAAAA,IAAAA,QAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAACJ,oBAAoB,CAACI,QAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACA,QAAA,IAAK,IAAItmJ,CAAI,GAAA,CAAA,EAAGA,IAAI21D,IAAKl2D,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACpC,IAAM0nI,UAAAA,GAAa/xE,IAAI,CAAC31D,CAAE,CAAA,CAAA;AAC1B,YAAA,IAAMumJ,YAAevvI,GAAAA,KAAAA,CAAM2+C,IAAI,CAAC31D,CAAE,CAAA,CAAA;AAElC,YAAA,IAAI0nI,WAAWpqD,QAAQ,KAAK35D,QAAa,CAACw7G,WAAW,EAAE;;AAErDuI,gBAAAA,UAAAA,CAAWtjI,MAAM,GAAGmiJ,YAAAA,CAAAA;gBACpB,IAAI7e,UAAAA,CAAW1oH,EAAE,EAAE;oBACjB,IAAI,CAACknI,oBAAoB,CAACxe,UAAAA,CAAAA,CAAAA;AAC5B,iBAAA;aACK,MAAA;AACL,gBAAA,IAAMic,iBAAiB,IAAIJ,cAAAA,EAAAA,CAAAA;gBAE3BI,cAAeG,CAAAA,qBAAqB,CAAC,IAAI1hJ,UAAWmkJ,CAAAA,YAAAA,CAAAA,CAAAA,CAAAA;gBACpD,IAAgC5C,IAAAA,UAAAA,GAAAA,oCAAAA,CAAAA,cAAAA,CAAeH,iBAAiB,CAAE,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAAvD3iB,oBAAAA,IAAAA,iBAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;oBACT,IAAI,CAACqlB,oBAAoB,CAACrlB,iBAAAA,CAAAA,CAAAA;AAC5B,iBAAA;AACF,aAAA;AACF,SAAA;AACA,QAAA,IAAA,IAAA,UAAA,GAAA,oCAAA,CAA0BnrE,cAAgB,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,GAAA,UAAA,EAAA,EAAA,IAAA,EAAA;AAA/ByE,YAAAA,IAAAA,WAAAA,GAAAA,MAAAA,CAAAA,KAAAA,CAAAA;YACT,IAAI,CAAC+rF,oBAAoB,CAAC/rF,WAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AAEA0rF,IAAAA,MAAAA,CAAAA,aAEC,GAFDA,SAAAA,aAAAA,CAAeW,cAAoC,EAAA;AACjD,QAAA,IAAA,YAAA,CAAA;AAAA,QAAA,CAAA,YAAA,GAAA,IAAI,CAACnB,MAAM,KAAX,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAa79I,GAAG,CAACg/I,cAAAA,CAAAA,CAAAA;AACnB,KAAA,CAAA;AAEArnH,IAAAA,MAAAA,CAAAA,MA4CC,GA5CDA,SAAAA,MAAAA,CAAQp5B,EAAU,EAAA;QAChB,IAAQi9G,YAAiB,GAAA,IAAI,CAArBA,YAAAA,CAAAA;QAER,IAAIA,YAAAA,CAAaz+G,IAAI,GAAG,CAAG,EAAA;;AAGzB,YAAA,YAAA,CAAA;YAFA,IAAI,CAAC+vE,IAAI,CAAC,aAAA,EAAe0uC,aAAav7D,MAAM,EAAA,CAAGxmD,IAAI,EAAA,CAAGlD,KAAK,CAAA,CAAA;AAE3D,YAAA,CAAA,YAAA,GAAA,IAAI,CAACsnJ,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX,aAAa7sE,KAAK,EAAA,CAAA;AACpB,SAAA;AACAzyE,QAAAA,EAAAA,GAAKvB,KAAKI,GAAG,CAACmB,IAAI,EAAM,CAAA,GAAA,IAAI,CAACsvE,KAAK,CAAA;QAClC,IAAMoxE,KAAAA,GAAQ,IAAI,CAAC9vE,YAAY,CAAA;AAC/B,QAAA,IAAI+vE,UAAa,GAAA,KAAA,CAAA;QAEjBD,KAAMz2I,CAAAA,IAAI,CAAC,SAACvK,CAAGC,EAAAA,CAAAA,EAAAA;mBAAMD,CAAE0yE,CAAAA,QAAQ,EAAKzyE,GAAAA,CAAAA,CAAEyyE,QAAQ,EAAA,CAAA;;AAE9C,QAAA,IAAK,IAAIn4E,CAAI,GAAA,CAAA,EAAGA,IAAIymJ,KAAMhnJ,CAAAA,MAAM,EAAEO,CAAK,EAAA,CAAA;YACrC,IAAM+W,WAAAA,GAAc0vI,KAAK,CAACzmJ,CAAE,CAAA,CAAA;YAE5B,IAAI+W,WAAAA,CAAYgkE,gBAAgB,EAAE;gBAChC2rE,UAAa,GAAA,IAAA,CAAA;AACblzI,gBAAAA,MAAAA,CAAOxV,KAAK,CAAE,cAAc+Y,GAAAA,WAAAA,CAAY9U,IAAI,GAAC,kCAAA,CAAA,CAAA;AAC7C,gBAAA,SAAA;AACF,aAAA;AACA8U,YAAAA,WAAAA,CAAY6L,MAAM,CAAC7c,EAAAA,CAAAA,CAAAA;AACrB,SAAA;AAEA,QAAA,IAAI2gJ,UAAY,EAAA;AAGP,YAAA,IAAA,aAAA,CAAA;AAFP,YAAA,IAAI,CAACpyE,IAAI,CAAC,aAAA,EAAe,IAAItyE,KAAM,CAAA,8BAAA,CAAA,CAAA,CAAA;AAEnC,YAAA,OAAA,CAAO,gBAAA,IAAI,CAACqjJ,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX,cAAa7sE,KAAK,EAAA,CAAA;AAC3B,SAAA;AACA,QAAA,IAAI,CAACp5C,QAAQ,CAACy9B,cAAc,CAAC,IAAA,CAAA,CAAA;AAC7B,QAAA,IAAI,CAACz9B,QAAQ,CAAC+5B,KAAK,CAAC;AAClB6D,YAAAA,aAAAA,EAAe3O,kBAAkB8K,KAAK;YACtCqhB,YAAc,EAAA,CAAA;AACdzd,YAAAA,WAAAA,EAAa1O,kBAAkB8K,KAAK;YACpCshB,UAAY,EAAA,CAAA;AACZ3d,YAAAA,WAAAA,EAAazO,kBAAkB8K,KAAK;YACpCuhB,UAAY,EAAA;AAAC,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAG,gBAAA,CAAA;AAAE,aAAA;AAC1B,SAAA,CAAA,CAAA;AACA,QAAA,IAAK,IAAI16E,EAAI,GAAA,CAAA,EAAGA,KAAIymJ,KAAMhnJ,CAAAA,MAAM,EAAEO,EAAK,EAAA,CAAA;AACrC,YAAA,CAACymJ,KAAK,CAACzmJ,EAAAA,CAAE,CAACq/B,WAAW,CAACi9B,UAAU,IAAI,IAAI,CAACl9B,QAAQ,CAACw0C,iBAAiB,CAAC6yE,KAAK,CAACzmJ,EAAAA,CAAE,CAACq/B,WAAW,CAAA,CAAA;AAC1F,SAAA;AAEA,QAAA,IAAI,CAACD,QAAQ,CAAC6zC,gBAAgB,CAAC/O,KAAK,EAAA,CAAA;AACtC,KAAA,CAAA;AAEA;;MAGAxV,MAAAA,CAAAA,MA6CC,GA7CDA,SAAAA,MAAAA,GAAAA;AACE,QAAA,IAAM,aAAEi4F,GAAkB,IAAI,CAACtyI,MAAM,CAA7BsyI,aAAAA,CAAAA;QACR,IAAIC,cAAAA,CAAAA;QACJ,IAAIC,eAAAA,CAAAA;QACJ,IAAIrzE,WAAAA,CAAAA;QACJ,IAAIC,YAAAA,CAAAA;AAEJ,QAAA,IAAIkzE,aAAe,EAAA;AACjB,YAAA,IAAMpiJ,IAAO,GAAA,IAAI,CAACuiJ,aAAa,CAACH,aAAAA,CAAAA,CAAAA;YAEhCC,cAAiBriJ,GAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;YACxBsiJ,eAAkBtiJ,GAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;YACzBivE,WAAcjvE,GAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;YACrBkvE,YAAelvE,GAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;SACjB,MAAA;AACLqiJ,YAAAA,cAAAA,GAAiBpzE,WAAc,GAAA,IAAI,CAACn/D,MAAM,CAAC3C,KAAK,CAAA;AAChDm1I,YAAAA,eAAAA,GAAkBpzE,YAAe,GAAA,IAAI,CAACp/D,MAAM,CAAC1C,MAAM,CAAA;AACrD,SAAA;AACA,QAAA,IAAMu1B,SAAS0/G,cAAiBC,GAAAA,eAAAA,CAAAA;AAEhC,QAAA,IAAID,kBAAkBC,eAAiB,EAAA;AACrC,YAAA,IAAME,aAAgBnyF,GAAAA,QAAAA,CAASoyF,eAAe,CAACC,WAAW,CAAA;YAE1D,IAAIzzE,WAAAA,GAAcuzE,gBAAgB,CAAG,EAAA;gBACnCvzI,MAAOxV,CAAAA,KAAK,CAAE,wBAAwBw1E,GAAAA,WAAAA,GAAY,kCAAkCuzE,GAAAA,aAAAA,GAAc,QAAQzuG,GAAAA,SAAS,CAAC,gBAAA,CAAiB,GAAC,GAAA,CAAA,CAAA;AACxI,aAAA;AACA,YAAA,IAAMp0C,OAAU,GAAA,IAAI,CAACq2E,GAAG,GAAG,IAAI,CAACrP,aAAa,CAACC,MAAM,CAACwF,cAAc,GAAG,IAAA,CAAA;YAEtE,IAAK6C,WAAAA,GAActvE,OAAWuvE,IAAAA,YAAAA,GAAevvE,OAAU,EAAA;gBACrDsP,MAAOxV,CAAAA,KAAK,CAAE,4BAA4Bw1E,GAAAA,WAAAA,GAAY,GAAGC,GAAAA,YAAAA,GAAa,QAAQn7B,GAAAA,SAAS,CAAC,2BAAA,CAA4B,GAAC,GAAA,CAAA,CAAA;AACrH,gBAAA,IAAIpR,SAAS,CAAG,EAAA;oBACdssC,WAAchvE,GAAAA,IAAAA,CAAK2D,KAAK,CAACjE,OAAAA,CAAAA,CAAAA;oBACzBuvE,YAAejvE,GAAAA,IAAAA,CAAK2D,KAAK,CAACjE,OAAUgjC,GAAAA,MAAAA,CAAAA,CAAAA;iBAC/B,MAAA;oBACLusC,YAAejvE,GAAAA,IAAAA,CAAK2D,KAAK,CAACjE,OAAAA,CAAAA,CAAAA;oBAC1BsvE,WAAchvE,GAAAA,IAAAA,CAAK2D,KAAK,CAACjE,OAAUgjC,GAAAA,MAAAA,CAAAA,CAAAA;AACrC,iBAAA;AACF,aAAA;AAEA,YAAA,IAAI,CAAC7yB,MAAM,CAAC+xG,KAAK,CAAC10G,KAAK,GAAGk1I,cAAiB,GAAA,IAAA,CAAA;AAC3C,YAAA,IAAI,CAACvyI,MAAM,CAAC+xG,KAAK,CAACz0G,MAAM,GAAGk1I,eAAkB,GAAA,IAAA,CAAA;AAC7CrzI,YAAAA,MAAAA,CAAO1V,IAAI,CAAC,gBAAC,GAAgB,IAAI,CAACmE,IAAI,GAAC,IAAA,GAAIuxE,cAAY,GAAGC,GAAAA,YAAAA,GAAa,GAAGmzE,GAAAA,cAAAA,GAAe,MAAGC,eAAgB,GAAA,IAAA,CAAA,CAAA;YAE5G,IAAI,CAACzzG,OAAO,CAACogC,WAAaC,EAAAA,YAAAA,CAAAA,CAAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AAEArgC,IAAAA,MAAAA,CAAAA,OASC,GATDA,SAAAA,OAAS1hC,CAAAA,KAAa,EAAEC,MAAc,EAAA;;AAGpC,QAAA,IAAA,kBAAA,CAAA;;AADA,QAAA,IAAI,CAACytB,QAAQ,CAACsvB,MAAM,CAACh9C,KAAOC,EAAAA,MAAAA,CAAAA,CAAAA;AAC5B,QAAA,CAAA,kBAAA,GAAA,IAAI,CAACglE,YAAY,qBAAjB,kBAAmBjnE,CAAAA,OAAO,CAAC0H,SAAAA,IAAAA,EAAAA;AACzBA,YAAAA,IAAAA,CAAKmgC,MAAM,CAACrQ,MAAM,GAAGx1B,KAAQC,GAAAA,MAAAA,CAAAA;AAC7ByF,YAAAA,IAAAA,CAAKmgC,MAAM,CAAClC,WAAW,GAAG,KAAKjW,CAAAA,QAAQ,CAACu3B,SAAS,EAAA,CAAA;AACjDv/C,YAAAA,IAAAA,CAAKmgC,MAAM,CAACnC,UAAU,GAAG,KAAKhW,CAAAA,QAAQ,CAACs3B,QAAQ,EAAA,CAAA;AACjD,SAAA,CAAA,CAAA;AACA,QAAA,IAAI,CAAC4d,IAAI,CAAC,QAAA,EAAU,IAAI,CAAA,CAAA;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQwyE,aAiDP,GAjDD,SAAQA,aAAAA,CAAeI,SAAsB,EAAA;QAC3C,IAAIA,SAAAA,KAAcvoJ,SAAauoJ,IAAAA,SAAAA,KAAc,IAAM,EAAA;AACjD,YAAA,MAAM,IAAIllJ,KAAM,CAAC,0CAAuCs2C,SAAS,CAAC,kCAAkC,GAAC,GAAA,CAAA,CAAA;AACvG,SAAA;QACA,IAAM6uG,aAAAA,GAAgB,IAAI,CAACA,aAAa,CAAA;;AAExC,QAAA,IAAMC,gBAAgB/2I,MAAOg3I,CAAAA,gBAAgB,oBAAvBh3I,MAAOg3I,CAAAA,gBAAgB,MAAvBh3I,MAA0B62I,EAAAA,SAAAA,CAAAA,CAAAA;QAChD,IAAII,WAAAA,CAAAA;QACJ,IAAIC,YAAAA,CAAAA;AACJ,QAAA,IAAIC,UAAa,GAAA,CAAA,CAAA;AACjB,QAAA,IAAI3qB,WAAc,GAAA,CAAA,CAAA;AAElB,QAAA,IAAIuqB,aAAe,EAAA;YACjBI,UAAa/6I,GAAAA,QAAAA,CAAS26I,aAAc11I,CAAAA,KAAK,EAAE,EAAA,CAAA,CAAA;YAC3CmrH,WAAcpwH,GAAAA,QAAAA,CAAS26I,aAAcz1I,CAAAA,MAAM,EAAE,EAAA,CAAA,CAAA;SACxC,MAAA;AACL61I,YAAAA,UAAAA,GAAaN,UAAUD,WAAW,CAAA;AAClCpqB,YAAAA,WAAAA,GAAcqqB,UAAUO,YAAY,CAAA;AACtC,SAAA;AAEA,QAAA,IAAIN,aAAe,EAAA;AACjB,YAAA,IAAMO,eAAeF,UAAa3qB,GAAAA,WAAAA,CAAAA;AAElC,YAAA,IAAI6qB,eAAeP,aAAe,EAAA;gBAChCI,YAAe1qB,GAAAA,WAAAA,GAAc,IAAI,CAAC0oB,YAAY,CAAA;AAC9C+B,gBAAAA,WAAAA,GAAcC,YAAeJ,GAAAA,aAAAA,CAAAA;aACxB,MAAA;gBACLG,WAAcE,GAAAA,UAAAA,GAAa,IAAI,CAACjC,YAAY,CAAA;AAC5CgC,gBAAAA,YAAAA,GAAeD,WAAcH,GAAAA,aAAAA,CAAAA;AAC/B,aAAA;SACK,MAAA;YACLG,WAAcE,GAAAA,UAAAA,CAAAA;YACdD,YAAe1qB,GAAAA,WAAAA,CAAAA;AACjB,SAAA;QACA,IAAM5V,KAAAA,GAAQ,IAAI,CAAC0+B,UAAU,CAAA;AAC7B,QAAA,IAAIiB,cAAiBU,GAAAA,WAAAA,CAAAA;AACrB,QAAA,IAAIT,eAAkBU,GAAAA,YAAAA,CAAAA;QAEtBD,WAAc9iJ,GAAAA,IAAAA,CAAK2D,KAAK,CAACm/I,WAAcrgC,GAAAA,KAAAA,CAAAA,CAAAA;QACvCsgC,YAAe/iJ,GAAAA,IAAAA,CAAK2D,KAAK,CAACo/I,YAAetgC,GAAAA,KAAAA,CAAAA,CAAAA;QACzC,IAAIqgC,WAAAA,GAAc,CAAKC,IAAAA,YAAAA,GAAe,CAAG,EAAA;YACvC,IAAI,IAAI,CAAC/B,aAAa,EAAE;gBACtB8B,WAAcC,GAAAA,YAAAA,GAAeX,iBAAiBC,eAAkB,GAAA,CAAA,CAAA;aAC3D,MAAA;gBACL,MAAM,IAAI7kJ,KAAM,CAAC,yBAAyBslJ,GAAAA,WAAAA,GAAY,GAAGC,GAAAA,YAAAA,GAAa,QAAQjvG,GAAAA,SAAS,CAAC,wBAAA,CAAyB,GAAC,GAAA,CAAA,CAAA;AACpH,aAAA;AACF,SAAA;QAEA,OAAO;AAACsuG,YAAAA,cAAAA;AAAgBC,YAAAA,eAAAA;AAAiBS,YAAAA,WAAAA;AAAaC,YAAAA,YAAAA;AAAa,SAAA,CAAA;AACrE,KAAA,CAAA;AAEAI,IAAAA,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAAA,CAAYpsF,GAAY,EAAA;QACtB,IAAI,IAAI,CAACI,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAt4D,OAAQ,CAAA,IAAI,CAACurD,QAAQ,EAAE2M,GAAAA,CAAAA,CAAAA;AACzB,KAAA,CAAA;AAEAqsF,IAAAA,MAAAA,CAAAA,aAKC,GALDA,SAAAA,aAAAA,CAAersF,GAAY,EAAA;QACzB,IAAI,IAAI,CAACI,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAp4D,UAAW,CAAA,IAAI,CAACqrD,QAAQ,EAAE2M,GAAAA,CAAAA,CAAAA;AAC5B,KAAA,CAAA;AAEAssF,IAAAA,MAAAA,CAAAA,WAKC,GALDA,SAAAA,WAAAA,CAAah9H,GAAa,EAAA;QACxB,IAAI,IAAI,CAAC8wC,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAt4D,OAAQ,CAAA,IAAI,CAAC47B,SAAS,EAAEpU,GAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEAi9H,IAAAA,MAAAA,CAAAA,cAKC,GALDA,SAAAA,cAAAA,CAAgBj9H,GAAa,EAAA;QAC3B,IAAI,IAAI,CAAC8wC,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAp4D,UAAW,CAAA,IAAI,CAAC07B,SAAS,EAAEpU,GAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEAk9H,IAAAA,MAAAA,CAAAA,WAKC,GALDA,SAAAA,WAAAA,CAAaC,GAAa,EAAA;QACxB,IAAI,IAAI,CAACrsF,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAt4D,OAAQ,CAAA,IAAI,CAACwhE,UAAU,EAAEmjF,GAAAA,CAAAA,CAAAA;AAC3B,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,cAKC,GALDA,SAAAA,cAAAA,CAAgBD,GAAa,EAAA;QAC3B,IAAI,IAAI,CAACrsF,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAp4D,UAAW,CAAA,IAAI,CAACshE,UAAU,EAAEmjF,GAAAA,CAAAA,CAAAA;AAC9B,KAAA,CAAA;AAEApsF,IAAAA,MAAAA,CAAAA,OAKC,GALDA,SAAAA,OAAAA,CAASC,IAAU,EAAA;QACjB,IAAI,IAAI,CAACF,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAt4D,OAAQ,CAAA,IAAI,CAACq4D,MAAM,EAAEG,IAAAA,CAAAA,CAAAA;AACvB,KAAA,CAAA;AAEAC,IAAAA,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAAA,CAAYD,IAAU,EAAA;QACpB,IAAI,IAAI,CAACF,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAp4D,UAAW,CAAA,IAAI,CAACm4D,MAAM,EAAEG,IAAAA,CAAAA,CAAAA;AAC1B,KAAA,CAAA;AAEA6P,IAAAA,MAAAA,CAAAA,aAKC,GALDA,SAAAA,aAAAA,CAAeE,IAAgB,EAAA;QAC7B,IAAI,IAAI,CAACjQ,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAt4D,OAAQ,CAAA,IAAI,CAACioE,YAAY,EAAEM,IAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEAI,IAAAA,MAAAA,CAAAA,gBAKC,GALDA,SAAAA,gBAAAA,CAAkBJ,IAAgB,EAAA;QAChC,IAAI,IAAI,CAACjQ,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAp4D,UAAW,CAAA,IAAI,CAAC+nE,YAAY,EAAEM,IAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;AAEAsK,IAAAA,MAAAA,CAAAA,cAKC,GALDA,SAAAA,cAAAA,CAAgBn/D,WAAwB,EAAA;QACtC,IAAI,IAAI,CAAC4kD,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAt4D,OAAQ,CAAA,IAAI,CAACszE,YAAY,EAAE5/D,WAAAA,CAAAA,CAAAA;AAC7B,KAAA,CAAA;AAEAujE,IAAAA,MAAAA,CAAAA,iBAKC,GALDA,SAAAA,iBAAAA,CAAmBvjE,WAAwB,EAAA;QACzC,IAAI,IAAI,CAAC4kD,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACAp4D,UAAW,CAAA,IAAI,CAACozE,YAAY,EAAE5/D,WAAAA,CAAAA,CAAAA;AAChC,KAAA,CAAA;IAEA4mD,MAAAA,CAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,GAAAA;AACE,QAAA,OAAO,IAAI,CAACv+B,QAAQ,CAACu+B,gBAAgB,EAAA,CAAA;AACvC,KAAA,CAAA;AAEA;;MAGA1+C,MAAAA,CAAAA,OA2CC,GA3CDA,SAAAA,OAAAA,GAAAA;AAyBE,QAAA,IAAA,YAAA,EACA,iBACA,EAAA,kBAAA,CAAA;QA1BA,IAAI,IAAI,CAAC08C,QAAQ,EAAE;AACjB,YAAA,OAAA;AACF,SAAA;QACA,IAAI,CAAC+pF,SAAS,GAAG,IAAA,CAAA;AAEjB,QAAA,IAAM5nJ,OAAiB,EAAE,CAAA;AAEzB,QAAA,IAAI,IAAI,CAACwtE,YAAY,CAAC7rE,MAAM,GAAG,CAAG,EAAA;YAChC3B,IAAK6D,CAAAA,IAAI,CAAC,OAAC,GAAO,IAAI,CAAC2pE,YAAY,CAAC7rE,MAAM,CAAA,CAAA;AAC5C,SAAA;AACA,QAAA,IAAI,IAAI,CAACi8D,MAAM,CAACj8D,MAAM,GAAG,CAAG,EAAA;YAC1B3B,IAAK6D,CAAAA,IAAI,CAAC,OAAC,GAAO,IAAI,CAAC+5D,MAAM,CAACj8D,MAAM,CAAA,CAAA;AACtC,SAAA;AACA,QAAA,IAAI,IAAI,CAAColE,UAAU,CAACplE,MAAM,GAAG,CAAG,EAAA;YAC9B3B,IAAK6D,CAAAA,IAAI,CAAC,OAAC,GAAO,IAAI,CAACkjE,UAAU,CAACplE,MAAM,CAAA,CAAA;AAC1C,SAAA;AACA,QAAA,IAAI,IAAI,CAACmvD,QAAQ,CAACnvD,MAAM,GAAG,CAAG,EAAA;YAC5B3B,IAAK6D,CAAAA,IAAI,CAAC,MAAC,GAAM,IAAI,CAACitD,QAAQ,CAACnvD,MAAM,CAAA,CAAA;AACvC,SAAA;QAEA,IAAI3B,IAAAA,CAAK2B,MAAM,GAAG,CAAG,EAAA;AACnB+T,YAAAA,MAAAA,CAAOH,IAAI,CAAE,yBAAsBvV,IAAK+oE,CAAAA,IAAI,CAAC,IAAM,CAAA,GAAA,GAAA,CAAA,CAAA;AACrD,SAAA;AAEA,QAAA,CAAA,YAAA,GAAA,IAAI,CAACw+E,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAX,aAAav1I,IAAI,EAAA,CAAA;AACjB,QAAA,CAAA,iBAAA,GAAA,IAAI,CAACslF,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAAhB,kBAAkBn2E,OAAO,EAAA,CAAA;AACzB,QAAA,CAAA,kBAAA,GAAA,IAAI,CAAC+mI,YAAY,KAAA,IAAA,GAAA,KAAA,CAAA,GAAjB,mBAAmB/mI,OAAO,EAAA,CAAA;AAE1B,QAAA,IAAI,CAACqsD,YAAY,CAAC57D,OAAO,CAACk8D,SAAAA,IAAAA,EAAAA;AAAQA,YAAAA,OAAAA,IAAAA,CAAK3sD,OAAO,EAAA,CAAA;;AAC9C,QAAA,IAAI,CAACy8C,MAAM,CAAChsD,OAAO,CAACmsD,SAAAA,IAAAA,EAAAA;AAAQA,YAAAA,OAAAA,IAAAA,CAAK58C,OAAO,EAAA,CAAA;;AACxC,QAAA,IAAI,CAAC4lD,UAAU,CAACn1D,OAAO,CAACs4I,SAAAA,GAAAA,EAAAA;AAAOA,YAAAA,OAAAA,GAAAA,CAAI/oI,OAAO,EAAA,CAAA;;AAC1C,QAAA,IAAI,CAACggB,SAAS,CAACvvB,OAAO,CAACmb,SAAAA,GAAAA,EAAAA;AAAOA,YAAAA,OAAAA,GAAAA,CAAI5L,OAAO,EAAA,CAAA;;AACzC,QAAA,IAAI,CAAC2vC,QAAQ,CAACl/C,OAAO,CAAC6rD,SAAAA,GAAAA,EAAAA;AAAOA,YAAAA,OAAAA,GAAAA,CAAIt8C,OAAO,EAAA,CAAA;;AACxC,QAAA,IAAI,CAACwmI,aAAa,CAAC/1I,OAAO,CAACw4I,SAAAA,YAAAA,EAAAA;AAAgBA,YAAAA,OAAAA,YAAAA,CAAajpI,OAAO,EAAA,CAAA;;AAC/D,QAAA,IAAI,CAAC03D,YAAY,CAACjnE,OAAO,CAAC0H,SAAAA,IAAAA,EAAAA;AAAQA,YAAAA,OAAAA,IAAAA,CAAK6H,OAAO,EAAA,CAAA;;QAE9C,IAAI,CAAC2vC,QAAQ,GAAG,EAAE,CAAA;QAClB,IAAI,CAAC3vB,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC4lC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAACnJ,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC4P,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAACqL,YAAY,GAAG,EAAE,CAAA;AACxB,KAAA,CAAA;AAleW2uE,IAAAA,aAAAA,CAAAA,MAAAA,EAAAA;;YAoDP3pF,GAAAA,EAAAA,UAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,GAAA;gBACE,OAAO,IAAI,CAAC+pF,SAAS,CAAA;AACvB,aAAA;;;AAtDWJ,IAAAA,OAAAA,MAAAA,CAAAA;EAAevxE,YAme3B;;ACjgBD,IAAM7V,GAA8B,GAAA;AAClC/qD,IAAAA,MAAAA,EAAQy9C,UAAUsG,IAAI;AACtBxhD,IAAAA,IAAAA,EAAMk7C,UAAU6G,aAAa;AAC7BN,IAAAA,SAAAA,EAAWvG,UAAU4J,MAAM;AAC3BnD,IAAAA,SAAAA,EAAWzG,UAAU4J,MAAM;AAC3BlD,IAAAA,KAAAA,EAAO1G,UAAU2G,aAAa;AAC9BC,IAAAA,KAAAA,EAAO5G,UAAU2G,aAAa;AAChC,CAAA,CAAA;AACA,IAAM4wF,gBAAgBppJ,MAAO,CAAA,SAAA,CAAA,CAAA;AAEtB,IAAA,gBAAMqpJ,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,gBAAAA,CAKE3wI,MAAc,EAAA;AAJnB4wI,QAAAA,IAAAA,CAAAA,YAAAA,GAAwC,EAAC,CAAA;AACzCC,QAAAA,IAAAA,CAAAA,UAAAA,GAAqC,EAAC,CAAA;QAI5C,IAAI,CAAC7wI,MAAM,GAAGA,MAAAA,CAAAA;;AANL2wI,IAAAA,IAAAA,MAAAA,GAAAA,gBAAAA,CAAAA,SAAAA,CAAAA;AASXG,IAAAA,MAAAA,CAAAA,6BA0CC,GA1CDA,SAAAA,6BAAAA,CAA+BC,OAA4B,EAAA;;AACzD,QAAA,IAAQ92I,QAAwB82I,OAAxB92I,CAAAA,KAAAA,EAAOC,SAAiB62I,OAAjB72I,CAAAA,MAAAA,EAAQ1P,OAASumJ,OAATvmJ,CAAAA,IAAAA,CAAAA;AACvB,QAAA,IAAMe,OAA+B,GAAA;AACnCi0B,YAAAA,UAAAA,EAAYq3B,kBAAkB+M,WAAW;YACzCzpD,IAAM,EAAA;gBACJF,KAAAA,EAAAA,KAAAA;gBACAC,MAAAA,EAAAA,MAAAA;AACF,aAAA;YACA1P,IAAAA,EAAAA,IAAAA;AACF,SAAA,CAAA;AACA,QAAA,IAAM4N,IAA4B,GAAA;AAAC5N,YAAAA,IAAAA;AAAK,SAAA,CAAA;AAExCtC,QAAAA,MAAAA,CAAOsW,mBAAmB,CAACioD,GAAKxuD,CAAAA,CAAAA,OAAO,CAACzN,SAAAA,IAAAA,EAAAA;AACxBumJ,YAAAA,IAAAA,aAAAA,CAAAA;YAAd,IAAMzqJ,KAAAA,GAAQyqJ,CAAAA,aAAAA,GAAAA,OAAO,CAACvmJ,KAAkC,KAA1CumJ,IAAAA,GAAAA,aAAAA,GAAiEtqF,GAAG,CAACj8D,IAAK,CAAA,CAAA;YAExFe,OAAO,CAACf,KAAK,GAAGlE,KAAAA,CAAAA;YAChB8R,IAAKlO,CAAAA,IAAI,CAACM,IAAMlE,EAAAA,KAAAA,CAAAA,CAAAA;AAClB,SAAA,CAAA,CAAA;QAEA,IAAMinG,OAAAA,GAAUn1F,IAAKg3D,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA;AAC1B,QAAA,IAAItL,GAAM,GAAA,IAAI,CAAC8sF,YAAY,CAACrjD,OAAQ,CAAA,CAAA;AAEpC,QAAA,IAAIzpC,GAAK,EAAA;YACP,IAAI,CAAC+sF,UAAU,CAACtjD,OAAQ,CAAA,EAAA,CAAA;SAInB,MAAA;YAEL,IAAMvtF,MAAAA,GAAS,IAAI,CAACA,MAAM,CAAA;YAE1BjF,WAAYiF,CAAAA,MAAAA,CAAAA,CAAAA;YACZ8jD,GAAM/E,GAAAA,OAAAA,CAAQ11D,MAAM,CAAC2W,MAAQzU,EAAAA,OAAAA,CAAAA,CAAAA;AAC7B,YAAA,IAAI,CAACqlJ,YAAY,CAACrjD,OAAAA,CAAQ,GAAGzpC,GAAAA,CAAAA;AAC7B,YAAA,IAAI,CAAC+sF,UAAU,CAACtjD,OAAAA,CAAQ,GAAG,CAAA,CAAA;;AAG3BzpC,YAAAA,GAAG,CAAC4sF,aAAAA,CAAc,GAAG5sF,GAAAA,CAAIt8C,OAAO,CAAA;AAChCs8C,YAAAA,GAAAA,CAAIt8C,OAAO,GAAG,WAAA;AAAM,gBAAA,OAAA,KAAA,CAAK2oI,aAAa,CAAC5iD,OAAAA,CAAAA,CAAAA;;AACzC,SAAA;QAEA,OAAOzpC,GAAAA,CAAAA;AACT,KAAA,CAAA;AAEAqsF,IAAAA,MAAAA,CAAAA,aAoBC,GApBDA,SAAAA,aAAAA,CAAe5oI,EAAU,EAAA;AACvB,QAAA,IAAMypI,QAAW,GAAA,IAAI,CAACH,UAAU,CAACtpI,EAAG,CAAA,CAAA;AAEpC,QAAA,IAAIypI,YAAY,CAAG,EAAA;AACjB,YAAA,IAAIA,WAAW,CAAG,EAAA;AAChBnhJ,gBAAAA,OAAAA,CAAQtJ,KAAK,CAAC,gBAAA,CAAA,CAAA;AAChB,aAAA;AACA,YAAA,IAAMu9D,GAAM,GAAA,IAAI,CAAC8sF,YAAY,CAACrpI,EAAG,CAAA,CAAA;AAEjC,YAAA,IAAIu8C,GAAK,EAAA;;AAEPA,gBAAAA,GAAG,CAAC4sF,aAAc,CAAA,EAAA,CAAA;;AAElB5sF,gBAAAA,GAAAA,CAAIt8C,OAAO,GAAGs8C,GAAG,CAAC4sF,aAAc,CAAA,CAAA;AAClC,aAAA;AACA,YAAA,OAAO,IAAI,CAACE,YAAY,CAACrpI,EAAG,CAAA,CAAA;AAC5B,YAAA,OAAO,IAAI,CAACspI,UAAU,CAACtpI,EAAG,CAAA,CAAA;SACrB,MAAA;AACL,YAAA,IAAI,CAACspI,UAAU,CAACtpI,EAAAA,CAAG,GAAGypI,QAAW,GAAA,CAAA,CAAA;AACnC,SAAA;AACF,KAAA,CAAA;IAEAxpI,MAAAA,CAAAA,OAYC,GAZDA,SAAAA,OAAAA,GAAAA;;QACEtf,MAAOkQ,CAAAA,IAAI,CAAC,IAAI,CAACw4I,YAAY,CAAE34I,CAAAA,OAAO,CAAC9R,SAAAA,GAAAA,EAAAA;AACrC,YAAA,IAAM+5D,OAAU,GAAA,KAAA,CAAK0wF,YAAY,CAACzqJ,GAAI,CAAA,CAAA;;AAGtC+5D,YAAAA,OAAO,CAACwwF,aAAc,CAAA,EAAA,CAAA;;AAEtBxwF,YAAAA,OAAAA,CAAQ14C,OAAO,GAAG04C,OAAO,CAACwwF,aAAc,CAAA,CAAA;AAC1C,SAAA,CAAA,CAAA;QACA,IAAI,CAACE,YAAY,GAAG,EAAC,CAAA;QACrB,IAAI,CAACC,UAAU,GAAG,EAAC,CAAA;QACnB,IAAI,CAAC7wI,MAAM,GAAG9Y,SAAAA,CAAAA;AAChB,KAAA,CAAA;AAvFWypJ,IAAAA,OAAAA,gBAAAA,CAAAA;AAwFZ,CAAA;;AC3GM,IAAA,WAAMM,iBAAD,WAAL;AAAMA,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;IAAAA,WACEhoI,CAAAA,IA2CZ,GA3CD,SAAaA,IAAAA,CAAM1J,KAAqB,EAAES,MAAc,EAAEzU,OAA8B,EAAA;QAA9BA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAA4B,EAAC,CAAA;;eAAvF,mBAAA,CAAA,WAAA;gBAE6ByU,4BAAAA,EAAAA,qBAAAA,EA8B3BA,cA/BMmvC,EAAAA,IAAAA,EACA0qB,kBACAq3E,EAAAA,gBAAAA,EAEAT,cAKAU,WAWA7xI,EAAAA,WAAAA,EAGA8xI,YAMApxE,EAAAA,WAAAA,EAIAga,eACA/Z,EAAAA,cAAAA,CAAAA;;;;AAlCA9wB,wBAAAA,IAAAA,GAAOspC,YAAYC,GAAG,EAAA,CAAA;wBACtB7e,kBAAqB75D,GAAAA,CAAAA,qBAAAA,GAAAA,OAAOyzD,aAAa,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAApBzzD,+BAAAA,qBAAsB0zD,CAAAA,MAAM,KAA5B1zD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,4BAAAA,CAA8B65D,kBAAkB,CAAA;wBACrEq3E,gBAAmBlxI,GAAAA,MAAAA,CAAOk/D,YAAY,CAACl3E,MAAM,CAAA;AAE7CyoJ,wBAAAA,YAAAA,GAAe,IAAIxZ,YAAa1rI,CAAAA,OAAAA,CAAAA,CAAAA;;wBAGtCyU,MAAOguI,CAAAA,aAAa,CAAC9jJ,IAAI,CAACumJ,YAAAA,CAAAA,CAAAA;AAEN,wBAAA,OAAA;;AAAMA,4BAAAA,YAAAA,CAAalZ,SAAS,CAACh4H,KAAOS,EAAAA,MAAAA,CAAO2nB,QAAQ,CAAA;;;wBAAjEwpH,WAAc,GAAA,MAAA,CAAA,IAAA,EAAA,CAAA;AAEpBnxI,wBAAAA,MAAAA,CAAOwuI,cAAc,EAAA,CAAA;;AAGrBrvI,wBAAAA,YAAAA,CAAaY,kBAAkB,CAACoxI,WAAaV,EAAAA,YAAAA,CAAallJ,OAAO,EAAEyU,MAAAA,CAAAA,CAAAA;AAEnEA,wBAAAA,MAAAA,CAAOuuI,YAAY,CAACnT,aAAa,CAAC+V,WAAAA,EAAaA,YAAYhzF,MAAM,CAAA,CAAA;AACjEn+C,wBAAAA,MAAAA,CAAOuuI,YAAY,CAACtT,mBAAmB,CAACkW,WAAAA,EAAa5lJ,QAAQsrI,SAAS,CAAA,CAAA;wBACtE72H,MAAOuuI,CAAAA,YAAY,CAACpT,iBAAiB,CAACgW,WAAAA,CAAAA,CAAAA;AAEhC7xI,wBAAAA,WAAAA,GAAc,KAAK+xI,CAAAA,iBAAiB,CAACF,WAAAA,EAAanxI,MAAQzU,EAAAA,OAAAA,CAAAA,CAAAA;AAEhE+T,wBAAAA,WAAAA,CAAYmhE,QAAQ,CAACywE,gBAAAA,CAAAA,CAAAA;AACfE,wBAAAA,YAAAA,GAAe34D,YAAYC,GAAG,EAAA,CAAA;AAEpC,wBAAA,OAAA;;AAAM,4BAAA,IAAIjyF,QAAQV,SAAAA,OAAAA,EAAAA;AAChBia,gCAAAA,IAAAA,iCAAAA,CAAAA;AAAAA,gCAAAA,CAAAA,iCAAAA,GAAAA,OAAO2nB,QAAQ,CAACu+B,gBAAgB,EAAhClmD,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iCAAAA,CAAoCsxI,iBAAiB,CAAC,WAAA;2CAAMvrJ,OAAQ,CAAA,IAAA,CAAA,CAAA;;AACtE,6BAAA,CAAA;;;AAFA,wBAAA,MAAA,CAAA,IAAA,EAAA,CAAA;wBAIMi6E,WAAcyY,GAAAA,WAAAA,CAAYC,GAAG,EAAK04D,GAAAA,YAAAA,CAAAA;AAExCpxI,wBAAAA,CAAAA,cAAAA,GAAAA,MAAO4tI,CAAAA,MAAM,KAAb5tI,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAAA,CAAepF,KAAK,EAAA,CAAA;AAEdo/E,wBAAAA,eAAAA,GAAkB16E,YAAY9U,IAAI,CAAA;wBAClCy1E,cAAiBwY,GAAAA,WAAAA,CAAYC,GAAG,EAAKvpC,GAAAA,IAAAA,CAAAA;wBAE3C7vC,WAAYsgE,CAAAA,SAAS,CAACI,WAAW,GAAGA,WAAAA,CAAAA;wBACpC1gE,WAAYsgE,CAAAA,SAAS,CAACK,cAAc,GAAGA,cAAAA,CAAAA;wBACvClkE,MAAO1V,CAAAA,IAAI,CAAC,eAAC,GAAe2zF,kBAAgB,KAAK/Z,GAAAA,cAAAA,CAAemqD,OAAO,CAAC,CAAG,CAAA,GAAA,KAAA,CAAA,CAAA;AAC3EruH,wBAAAA,MAAAA,CAAO1V,IAAI,CAAC,SAAC,IAASwzE,kBAAqB,GAAA,OAAA,GAAU,MAAK,CAAA,GAAE,eAAYmgB,eAAgB,GAAA,KAAA,GAAKha,WAAYoqD,CAAAA,OAAO,CAAC,CAAG,CAAA,GAAA,KAAA,CAAA,CAAA;AAEpH,wBAAA,OAAA;;AAAO9qH,4BAAAA,WAAAA;;;;AACT,SAAA,CAAA,EAAA,CAAA;;IA5CW2xI,WA8CII,CAAAA,iBAqBd,GArBD,SAAeA,iBAAAA,CAAmB9xI,KAAY,EAAES,MAAc,EAAEzU,OAA8B,EAAA;QAA9BA,IAAAA,OAAAA,KAAAA,KAAAA,CAAAA,EAAAA,UAA4B,EAAC,CAAA;QAC3F,IAAMo8B,QAAAA,GAAW3nB,OAAO2nB,QAAQ,CAAA;QAChC,IAAMroB,WAAAA,GAAc,IAAIq+D,WAAAA,CAAY,QAC/BpyE,CAAAA,EAAAA,EAAAA,OAAAA,EAAAA;YACHo8B,QAAAA,EAAAA,QAAAA;AACA1tB,YAAAA,KAAAA,EAAO0tB,SAASs3B,QAAQ,EAAA;AACxB/kD,YAAAA,MAAAA,EAAQytB,SAASu3B,SAAS,EAAA;AAC1Bqf,YAAAA,KAAAA,EAAOv+D,OAAO29E,WAAW;AACxBp+E,SAAAA,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA;;QAGH,IAAIS,MAAAA,CAAO4tI,MAAM,IAAIriJ,OAAQwzE,CAAAA,WAAW,KAAK7yD,WAAgB,CAACpW,CAAC,EAAE;YAC/DkK,MAAO4tI,CAAAA,MAAM,CAACV,MAAM,CAACngJ,IAAAA,CAAKI,GAAG,CAAC6S,MAAO4tI,CAAAA,MAAM,CAACR,MAAM,EAAI,EAAA,EAAA,CAAA,CAAA,CAAA;AACxD,SAAA;;QAGA,IAAIptI,MAAAA,CAAO8iE,GAAG,KAAKliC,yBAA2B,EAAA;YAC5C5gC,MAAOuuI,CAAAA,YAAY,CAACtkF,mBAAmB,EAAA,CAAA;AACzC,SAAA;QAEA,OAAO3qD,WAAAA,CAAAA;AACT,KAAA,CAAA;AAnEW2xI,IAAAA,OAAAA,WAAAA,CAAAA;AAoEZ,CAAA;;AC1BDryI,cAAAA,CAAe,QAAUq4E,EAAAA,mBAAAA,CAAAA,CAAAA;AACzBr4E,cAAAA,CAAe,MAAQ4oH,EAAAA,UAAAA,CAAAA,CAAAA;AACvB5oH,cAAAA,CAAe,QAAUigF,EAAAA,YAAAA,CAAAA,CAAAA;AACzBjgF,cAAAA,CAAe,UAAY8tG,EAAAA,cAAAA,CAAAA,CAAAA;AAC3B9tG,cAAAA,CAAe,UAAY27E,EAAAA,cAAAA,CAAAA,CAAAA;AAEpB,IAAMjrB,UAAU,SAAY;AAEnCvzD,MAAAA,CAAO1V,IAAI,CAAC,gBAAC,GAAgBipE,OAAQ,GAAA,GAAA,CAAA;;;;"}