@midscene/android-playground 1.0.1-beta-20251217082334.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/package.json +5 -5
  2. package/static/index.html +1 -1
  3. package/static/static/css/index.3784ddf6.css +2 -0
  4. package/static/static/css/index.3784ddf6.css.map +1 -0
  5. package/static/static/js/861.1a36955c.js +641 -0
  6. package/static/static/js/{861.9eedad91.js.map → 861.1a36955c.js.map} +1 -1
  7. package/static/static/js/async/195.05312dd9.js +3 -0
  8. package/static/static/js/async/{195.35f1e68e.js.map → 195.05312dd9.js.map} +1 -1
  9. package/static/static/js/async/{199.ea3634f6.js → 199.de925865.js} +11 -11
  10. package/static/static/js/async/{199.ea3634f6.js.map → 199.de925865.js.map} +1 -1
  11. package/static/static/js/async/{221.3f81253d.js → 221.213edee4.js} +3 -3
  12. package/static/static/js/async/{221.3f81253d.js.map → 221.213edee4.js.map} +1 -1
  13. package/static/static/js/async/271.1691b0d2.js +30 -0
  14. package/static/static/js/async/{271.aad1ebb5.js.map → 271.1691b0d2.js.map} +1 -1
  15. package/static/static/js/async/35.918ea007.js +1 -0
  16. package/static/static/js/async/{467.887e5efa.js → 467.9dc30840.js} +1 -1
  17. package/static/static/js/async/652.af2f1788.js +3 -0
  18. package/static/static/js/async/{652.26c99dbf.js.map → 652.af2f1788.js.map} +1 -1
  19. package/static/static/js/async/856.379e0ce3.js +158 -0
  20. package/static/static/js/async/{856.20036e0a.js.map → 856.379e0ce3.js.map} +1 -1
  21. package/static/static/js/async/860.baac349b.js +2 -0
  22. package/static/static/js/async/{860.9fc10f4b.js.map → 860.baac349b.js.map} +1 -1
  23. package/static/static/js/async/990.bb6496cd.js +26 -0
  24. package/static/static/js/async/{990.65e3a3ab.js.map → 990.bb6496cd.js.map} +1 -1
  25. package/static/static/js/{index.42c1f21d.js → index.2c951054.js} +5 -5
  26. package/static/static/js/index.2c951054.js.map +1 -0
  27. package/static/static/js/lib-react.574e3de9.js +3 -0
  28. package/static/static/js/{lib-react.d7dec362.js.map → lib-react.574e3de9.js.map} +1 -1
  29. package/static/static/css/index.10e8f99b.css +0 -2
  30. package/static/static/css/index.10e8f99b.css.map +0 -1
  31. package/static/static/js/861.9eedad91.js +0 -641
  32. package/static/static/js/async/195.35f1e68e.js +0 -3
  33. package/static/static/js/async/271.aad1ebb5.js +0 -30
  34. package/static/static/js/async/35.c1ca8ab2.js +0 -1
  35. package/static/static/js/async/652.26c99dbf.js +0 -3
  36. package/static/static/js/async/856.20036e0a.js +0 -158
  37. package/static/static/js/async/860.9fc10f4b.js +0 -2
  38. package/static/static/js/async/990.65e3a3ab.js +0 -26
  39. package/static/static/js/index.42c1f21d.js.map +0 -1
  40. package/static/static/js/lib-react.d7dec362.js +0 -3
  41. /package/static/static/js/{861.9eedad91.js.LICENSE.txt → 861.1a36955c.js.LICENSE.txt} +0 -0
  42. /package/static/static/js/{index.42c1f21d.js.LICENSE.txt → index.2c951054.js.LICENSE.txt} +0 -0
  43. /package/static/static/js/{lib-react.d7dec362.js.LICENSE.txt → lib-react.574e3de9.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/js/async/856.20036e0a.js","sources":["../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/ResizePlugin.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/TickerPlugin.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getFastGlobalBounds.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getRenderableBounds.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/batchSamplersUniformGroup.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/shared/GraphicsPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/BatchableMesh.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh-plane/PlaneGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceSpritePipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/TilingSpriteShader.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/tilingBit.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/QuadGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/TilingSpritePipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setUvs.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setPositions.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/applyMatrix.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/AbstractBitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/utils/resolveCharacters.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/DynamicBitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/utils/getBitmapTextLayout.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFontManager.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontTextParser.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLParser.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLStringParser.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/loadBitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/localUniformMSDFBit.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/mSDFBit.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/SdfShader.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapTextPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/measureHtmlText.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextRenderData.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/textStyleToCSS.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HtmlTextStyle.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontAsBase64.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontCSS.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getFontCss.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadSVGImage.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/extractFontFamilies.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getSVGUrl.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/browser/isSafari.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getTemporaryCanvasFromImage.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/utils/getCanvasFillStyle.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/canvas/getCanvasBoundingBox.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/utils/getPo2TextureFromSource.mjs"],"sourcesContent":["import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ResizePlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n Object.defineProperty(\n this,\n \"resizeTo\",\n /**\n * The HTML element or window to automatically resize the\n * renderer's view element to match width and height.\n * @member {Window|HTMLElement}\n * @name resizeTo\n * @memberof app.Application#\n */\n {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n }\n );\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this._cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n /**\n * Clean up the ticker, scoped to application\n * @static\n * @private\n */\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._cancelResize();\n this._cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\n/** @ignore */\nResizePlugin.extension = ExtensionType.Application;\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { UPDATE_PRIORITY } from '../ticker/const.mjs';\nimport { Ticker } from '../ticker/Ticker.mjs';\n\n\"use strict\";\nclass TickerPlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(\n this,\n \"ticker\",\n {\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n }\n );\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n /**\n * Clean up the ticker, scoped to application.\n * @static\n * @private\n */\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\n/** @ignore */\nTickerPlugin.extension = ExtensionType.Application;\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { ResizePlugin } from './ResizePlugin.mjs';\nimport { TickerPlugin } from './TickerPlugin.mjs';\n\n\"use strict\";\nextensions.add(ResizePlugin);\nextensions.add(TickerPlugin);\n//# sourceMappingURL=init.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass FilterPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n push(filterEffect, container, instructionSet) {\n const renderPipes = this._renderer.renderPipes;\n renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n canBundle: false,\n action: \"pushFilter\",\n container,\n filterEffect\n });\n }\n pop(_filterEffect, _container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n action: \"popFilter\",\n canBundle: false\n });\n }\n execute(instruction) {\n if (instruction.action === \"pushFilter\") {\n this._renderer.filter.push(instruction);\n } else if (instruction.action === \"popFilter\") {\n this._renderer.filter.pop();\n }\n }\n destroy() {\n this._renderer = null;\n }\n}\nFilterPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"filter\"\n};\n\nexport { FilterPipe };\n//# sourceMappingURL=FilterPipe.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { boundsPool } from './utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nfunction getFastGlobalBounds(target, bounds) {\n bounds.clear();\n _getGlobalBoundsRecursive(target, bounds);\n if (!bounds.isValid) {\n bounds.set(0, 0, 0, 0);\n }\n if (!target.isRenderGroupRoot) {\n bounds.applyMatrix(target.renderGroup.worldTransform);\n } else {\n bounds.applyMatrix(target.renderGroup.localTransform);\n }\n return bounds;\n}\nfunction _getGlobalBoundsRecursive(target, bounds) {\n if (target.localDisplayStatus !== 7 || !target.measurable) {\n return;\n }\n const manageEffects = !!target.effects.length;\n let localBounds = bounds;\n if (target.isRenderGroupRoot || manageEffects) {\n localBounds = boundsPool.get().clear();\n }\n if (target.boundsArea) {\n bounds.addRect(target.boundsArea, target.worldTransform);\n } else {\n if (target.renderPipeId) {\n const viewBounds = target.bounds;\n localBounds.addFrame(\n viewBounds.minX,\n viewBounds.minY,\n viewBounds.maxX,\n viewBounds.maxY,\n target.groupTransform\n );\n }\n const children = target.children;\n for (let i = 0; i < children.length; i++) {\n _getGlobalBoundsRecursive(children[i], localBounds);\n }\n }\n if (manageEffects) {\n let advanced = false;\n for (let i = 0; i < target.effects.length; i++) {\n if (target.effects[i].addBounds) {\n if (!advanced) {\n advanced = true;\n localBounds.applyMatrix(target.renderGroup.worldTransform);\n }\n target.effects[i].addBounds(localBounds, true);\n }\n }\n if (advanced) {\n localBounds.applyMatrix(target.renderGroup.worldTransform.copyTo(tempMatrix).invert());\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n }\n bounds.addBounds(localBounds);\n boundsPool.return(localBounds);\n } else if (target.isRenderGroupRoot) {\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n boundsPool.return(localBounds);\n }\n}\n\nexport { _getGlobalBoundsRecursive, getFastGlobalBounds };\n//# sourceMappingURL=getFastGlobalBounds.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { Matrix } from '../maths/matrix/Matrix.mjs';\nimport { Point } from '../maths/point/Point.mjs';\nimport { BindGroup } from '../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { Geometry } from '../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { UniformGroup } from '../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture.mjs';\nimport { TexturePool } from '../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { RendererType } from '../rendering/renderers/types.mjs';\nimport { Bounds } from '../scene/container/bounds/Bounds.mjs';\nimport { getFastGlobalBounds } from '../scene/container/bounds/getFastGlobalBounds.mjs';\nimport { getGlobalRenderableBounds } from '../scene/container/bounds/getRenderableBounds.mjs';\nimport { warn } from '../utils/logging/warn.mjs';\n\n\"use strict\";\nconst quadGeometry = new Geometry({\n attributes: {\n aPosition: {\n buffer: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n location: 0,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer: new Uint32Array([0, 1, 2, 0, 2, 3])\n});\nclass FilterSystem {\n constructor(renderer) {\n this._filterStackIndex = 0;\n this._filterStack = [];\n this._filterGlobalUniforms = new UniformGroup({\n uInputSize: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uInputPixel: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uInputClamp: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uOutputFrame: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uGlobalFrame: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uOutputTexture: { value: new Float32Array(4), type: \"vec4<f32>\" }\n });\n this._globalFilterBindGroup = new BindGroup({});\n this.renderer = renderer;\n }\n /**\n * The back texture of the currently active filter. Requires the filter to have `blendRequired` set to true.\n * @readonly\n */\n get activeBackTexture() {\n return this._activeFilterData?.backTexture;\n }\n push(instruction) {\n const renderer = this.renderer;\n const filters = instruction.filterEffect.filters;\n if (!this._filterStack[this._filterStackIndex]) {\n this._filterStack[this._filterStackIndex] = this._getFilterData();\n }\n const filterData = this._filterStack[this._filterStackIndex];\n this._filterStackIndex++;\n if (filters.length === 0) {\n filterData.skip = true;\n return;\n }\n const bounds = filterData.bounds;\n if (instruction.renderables) {\n getGlobalRenderableBounds(instruction.renderables, bounds);\n } else if (instruction.filterEffect.filterArea) {\n bounds.clear();\n bounds.addRect(instruction.filterEffect.filterArea);\n bounds.applyMatrix(instruction.container.worldTransform);\n } else {\n getFastGlobalBounds(instruction.container, bounds);\n }\n const colorTextureSource = renderer.renderTarget.rootRenderTarget.colorTexture.source;\n let resolution = colorTextureSource._resolution;\n let padding = 0;\n let antialias = colorTextureSource.antialias;\n let blendRequired = false;\n let enabled = false;\n for (let i = 0; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution);\n padding += filter.padding;\n if (filter.antialias !== \"inherit\") {\n if (filter.antialias === \"on\") {\n antialias = true;\n } else {\n antialias = false;\n }\n }\n const isCompatible = !!(filter.compatibleRenderers & renderer.type);\n if (!isCompatible) {\n enabled = false;\n break;\n }\n if (filter.blendRequired && !(renderer.backBuffer?.useBackBuffer ?? true)) {\n warn(\"Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options.\");\n enabled = false;\n break;\n }\n enabled = filter.enabled || enabled;\n blendRequired = blendRequired || filter.blendRequired;\n }\n if (!enabled) {\n filterData.skip = true;\n return;\n }\n const viewPort = renderer.renderTarget.rootViewPort;\n bounds.scale(resolution).fitBounds(0, viewPort.width, 0, viewPort.height).scale(1 / resolution).pad(padding).ceil();\n if (!bounds.isPositive) {\n filterData.skip = true;\n return;\n }\n filterData.skip = false;\n filterData.bounds = bounds;\n filterData.blendRequired = blendRequired;\n filterData.container = instruction.container;\n filterData.filterEffect = instruction.filterEffect;\n filterData.previousRenderSurface = renderer.renderTarget.renderSurface;\n filterData.inputTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n antialias\n );\n renderer.renderTarget.bind(filterData.inputTexture, true);\n renderer.globalUniforms.push({\n offset: bounds\n });\n }\n pop() {\n const renderer = this.renderer;\n this._filterStackIndex--;\n const filterData = this._filterStack[this._filterStackIndex];\n if (filterData.skip) {\n return;\n }\n this._activeFilterData = filterData;\n const inputTexture = filterData.inputTexture;\n const bounds = filterData.bounds;\n let backTexture = Texture.EMPTY;\n renderer.renderTarget.finishRenderPass();\n if (filterData.blendRequired) {\n const previousBounds = this._filterStackIndex > 0 ? this._filterStack[this._filterStackIndex - 1].bounds : null;\n const renderTarget = renderer.renderTarget.getRenderTarget(filterData.previousRenderSurface);\n backTexture = this.getBackTexture(renderTarget, bounds, previousBounds);\n }\n filterData.backTexture = backTexture;\n const filters = filterData.filterEffect.filters;\n this._globalFilterBindGroup.setResource(inputTexture.source.style, 2);\n this._globalFilterBindGroup.setResource(backTexture.source, 3);\n renderer.globalUniforms.pop();\n if (filters.length === 1) {\n filters[0].apply(this, inputTexture, filterData.previousRenderSurface, false);\n TexturePool.returnTexture(inputTexture);\n } else {\n let flip = filterData.inputTexture;\n let flop = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n flip.source._resolution,\n false\n );\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n const filter = filters[i];\n filter.apply(this, flip, flop, true);\n const t = flip;\n flip = flop;\n flop = t;\n }\n filters[i].apply(this, flip, filterData.previousRenderSurface, false);\n TexturePool.returnTexture(flip);\n TexturePool.returnTexture(flop);\n }\n if (filterData.blendRequired) {\n TexturePool.returnTexture(backTexture);\n }\n }\n getBackTexture(lastRenderSurface, bounds, previousBounds) {\n const backgroundResolution = lastRenderSurface.colorTexture.source._resolution;\n const backTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n backgroundResolution,\n false\n );\n let x = bounds.minX;\n let y = bounds.minY;\n if (previousBounds) {\n x -= previousBounds.minX;\n y -= previousBounds.minY;\n }\n x = Math.floor(x * backgroundResolution);\n y = Math.floor(y * backgroundResolution);\n const width = Math.ceil(bounds.width * backgroundResolution);\n const height = Math.ceil(bounds.height * backgroundResolution);\n this.renderer.renderTarget.copyToTexture(\n lastRenderSurface,\n backTexture,\n { x, y },\n { width, height },\n { x: 0, y: 0 }\n );\n return backTexture;\n }\n applyFilter(filter, input, output, clear) {\n const renderer = this.renderer;\n const filterData = this._filterStack[this._filterStackIndex];\n const bounds = filterData.bounds;\n const offset = Point.shared;\n const previousRenderSurface = filterData.previousRenderSurface;\n const isFinalTarget = previousRenderSurface === output;\n let resolution = this.renderer.renderTarget.rootRenderTarget.colorTexture.source._resolution;\n let currentIndex = this._filterStackIndex - 1;\n while (currentIndex > 0 && this._filterStack[currentIndex].skip) {\n --currentIndex;\n }\n if (currentIndex > 0) {\n resolution = this._filterStack[currentIndex].inputTexture.source._resolution;\n }\n const filterUniforms = this._filterGlobalUniforms;\n const uniforms = filterUniforms.uniforms;\n const outputFrame = uniforms.uOutputFrame;\n const inputSize = uniforms.uInputSize;\n const inputPixel = uniforms.uInputPixel;\n const inputClamp = uniforms.uInputClamp;\n const globalFrame = uniforms.uGlobalFrame;\n const outputTexture = uniforms.uOutputTexture;\n if (isFinalTarget) {\n let lastIndex = this._filterStackIndex;\n while (lastIndex > 0) {\n lastIndex--;\n const filterData2 = this._filterStack[this._filterStackIndex - 1];\n if (!filterData2.skip) {\n offset.x = filterData2.bounds.minX;\n offset.y = filterData2.bounds.minY;\n break;\n }\n }\n outputFrame[0] = bounds.minX - offset.x;\n outputFrame[1] = bounds.minY - offset.y;\n } else {\n outputFrame[0] = 0;\n outputFrame[1] = 0;\n }\n outputFrame[2] = input.frame.width;\n outputFrame[3] = input.frame.height;\n inputSize[0] = input.source.width;\n inputSize[1] = input.source.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n inputPixel[0] = input.source.pixelWidth;\n inputPixel[1] = input.source.pixelHeight;\n inputPixel[2] = 1 / inputPixel[0];\n inputPixel[3] = 1 / inputPixel[1];\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = input.frame.width * inputSize[2] - 0.5 * inputPixel[2];\n inputClamp[3] = input.frame.height * inputSize[3] - 0.5 * inputPixel[3];\n const rootTexture = this.renderer.renderTarget.rootRenderTarget.colorTexture;\n globalFrame[0] = offset.x * resolution;\n globalFrame[1] = offset.y * resolution;\n globalFrame[2] = rootTexture.source.width * resolution;\n globalFrame[3] = rootTexture.source.height * resolution;\n const renderTarget = this.renderer.renderTarget.getRenderTarget(output);\n renderer.renderTarget.bind(output, !!clear);\n if (output instanceof Texture) {\n outputTexture[0] = output.frame.width;\n outputTexture[1] = output.frame.height;\n } else {\n outputTexture[0] = renderTarget.width;\n outputTexture[1] = renderTarget.height;\n }\n outputTexture[2] = renderTarget.isRoot ? -1 : 1;\n filterUniforms.update();\n if (renderer.renderPipes.uniformBatch) {\n const batchUniforms = renderer.renderPipes.uniformBatch.getUboResource(filterUniforms);\n this._globalFilterBindGroup.setResource(batchUniforms, 0);\n } else {\n this._globalFilterBindGroup.setResource(filterUniforms, 0);\n }\n this._globalFilterBindGroup.setResource(input.source, 1);\n this._globalFilterBindGroup.setResource(input.source.style, 2);\n filter.groups[0] = this._globalFilterBindGroup;\n renderer.encoder.draw({\n geometry: quadGeometry,\n shader: filter,\n state: filter._state,\n topology: \"triangle-list\"\n });\n if (renderer.type === RendererType.WEBGL) {\n renderer.renderTarget.finishRenderPass();\n }\n }\n _getFilterData() {\n return {\n skip: false,\n inputTexture: null,\n bounds: new Bounds(),\n container: null,\n filterEffect: null,\n blendRequired: false,\n previousRenderSurface: null\n };\n }\n /**\n * Multiply _input normalized coordinates_ to this matrix to get _sprite texture normalized coordinates_.\n *\n * Use `outputMatrix * vTextureCoord` in the shader.\n * @param outputMatrix - The matrix to output to.\n * @param {Sprite} sprite - The sprite to map to.\n * @returns The mapped matrix.\n */\n calculateSpriteMatrix(outputMatrix, sprite) {\n const data = this._activeFilterData;\n const mappedMatrix = outputMatrix.set(\n data.inputTexture._source.width,\n 0,\n 0,\n data.inputTexture._source.height,\n data.bounds.minX,\n data.bounds.minY\n );\n const worldTransform = sprite.worldTransform.copyTo(Matrix.shared);\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(\n 1 / sprite.texture.frame.width,\n 1 / sprite.texture.frame.height\n );\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n return mappedMatrix;\n }\n}\n/** @ignore */\nFilterSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"filter\"\n};\n\nexport { FilterSystem };\n//# sourceMappingURL=FilterSystem.mjs.map\n","\"use strict\";\nfunction getGlobalRenderableBounds(renderables, bounds) {\n bounds.clear();\n const tempMatrix = bounds.matrix;\n for (let i = 0; i < renderables.length; i++) {\n const renderable = renderables[i];\n if (renderable.globalDisplayStatus < 7) {\n continue;\n }\n bounds.matrix = renderable.worldTransform;\n renderable.addBounds(bounds);\n }\n bounds.matrix = tempMatrix;\n return bounds;\n}\n\nexport { getGlobalRenderableBounds };\n//# sourceMappingURL=getRenderableBounds.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { FilterPipe } from './FilterPipe.mjs';\nimport { FilterSystem } from './FilterSystem.mjs';\n\n\"use strict\";\nextensions.add(FilterSystem);\nextensions.add(FilterPipe);\n//# sourceMappingURL=init.mjs.map\n","import { MAX_TEXTURES } from '../../../batcher/shared/const.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nconst sampleValues = new Int32Array(MAX_TEXTURES);\nfor (let i = 0; i < MAX_TEXTURES; i++) {\n sampleValues[i] = i;\n}\nconst batchSamplersUniformGroup = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: MAX_TEXTURES }\n}, { isStatic: true });\n\nexport { batchSamplersUniformGroup };\n//# sourceMappingURL=batchSamplersUniformGroup.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { nextPow2 } from '../../../../maths/misc/pow2.mjs';\n\n\"use strict\";\nclass CanvasPoolClass {\n constructor(canvasOptions) {\n this._canvasPool = /* @__PURE__ */ Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n _createCanvasAndContext(pixelWidth, pixelHeight) {\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n const key = (minWidth << 17) + (minHeight << 1);\n if (!this._canvasPool[key]) {\n this._canvasPool[key] = [];\n }\n let canvasAndContext = this._canvasPool[key].pop();\n if (!canvasAndContext) {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n return canvasAndContext;\n }\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n returnCanvasAndContext(canvasAndContext) {\n const { width, height } = canvasAndContext.canvas;\n const key = (width << 17) + (height << 1);\n this._canvasPool[key].push(canvasAndContext);\n }\n clear() {\n this._canvasPool = {};\n }\n}\nconst CanvasPool = new CanvasPoolClass();\n\nexport { CanvasPool, CanvasPoolClass };\n//# sourceMappingURL=CanvasPool.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../../rendering/renderers/shared/state/State.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { color32BitToUniform } from '../gpu/colorToUniform.mjs';\nimport { BatchableGraphics } from './BatchableGraphics.mjs';\n\n\"use strict\";\nclass GraphicsPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n // batchable graphics list, used to render batches\n this._graphicsBatchesHash = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(graphics) {\n const context = graphics.context;\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(context);\n if (gpuContext.isBatchable || wasBatched !== gpuContext.isBatchable) {\n return true;\n }\n return false;\n }\n addRenderable(graphics, instructionSet) {\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n if (graphics._didGraphicsUpdate) {\n graphics._didGraphicsUpdate = false;\n this._rebuild(graphics);\n }\n if (gpuContext.isBatchable) {\n this._addToBatcher(graphics, instructionSet);\n } else {\n this.renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(graphics);\n }\n }\n updateRenderable(graphics) {\n const batches = this._graphicsBatchesHash[graphics.uid];\n if (batches) {\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batch.batcher.updateElement(batch);\n }\n }\n }\n destroyRenderable(graphics) {\n if (this._graphicsBatchesHash[graphics.uid]) {\n this._removeBatchForRenderable(graphics.uid);\n }\n }\n execute(graphics) {\n if (!graphics.isRenderable)\n return;\n const renderer = this.renderer;\n const context = graphics.context;\n const contextSystem = renderer.graphicsContext;\n if (!contextSystem.getGpuContext(context).batches.length) {\n return;\n }\n const shader = context.customShader || this._adaptor.shader;\n this.state.blendMode = graphics.groupBlendMode;\n const localUniforms = shader.resources.localUniforms.uniforms;\n localUniforms.uTransformMatrix = graphics.groupTransform;\n localUniforms.uRound = renderer._roundPixels | graphics._roundPixels;\n color32BitToUniform(\n graphics.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n this._adaptor.execute(this, graphics);\n }\n _rebuild(graphics) {\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n if (wasBatched) {\n this._removeBatchForRenderable(graphics.uid);\n }\n if (gpuContext.isBatchable) {\n this._initBatchesForRenderable(graphics);\n }\n graphics.batched = gpuContext.isBatchable;\n }\n _addToBatcher(graphics, instructionSet) {\n const batchPipe = this.renderer.renderPipes.batch;\n const batches = this._getBatchesForRenderable(graphics);\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batchPipe.addToBatch(batch, instructionSet);\n }\n }\n _getBatchesForRenderable(graphics) {\n return this._graphicsBatchesHash[graphics.uid] || this._initBatchesForRenderable(graphics);\n }\n _initBatchesForRenderable(graphics) {\n const context = graphics.context;\n const gpuContext = this.renderer.graphicsContext.getGpuContext(context);\n const roundPixels = this.renderer._roundPixels | graphics._roundPixels;\n const batches = gpuContext.batches.map((batch) => {\n const batchClone = BigPool.get(BatchableGraphics);\n batch.copyTo(batchClone);\n batchClone.renderable = graphics;\n batchClone.roundPixels = roundPixels;\n return batchClone;\n });\n this._graphicsBatchesHash[graphics.uid] = batches;\n graphics.on(\"destroyed\", () => {\n this.destroyRenderable(graphics);\n });\n return batches;\n }\n _removeBatchForRenderable(graphicsUid) {\n this._graphicsBatchesHash[graphicsUid].forEach((batch) => {\n BigPool.return(batch);\n });\n this._graphicsBatchesHash[graphicsUid] = null;\n }\n destroy() {\n this.renderer = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.state = null;\n for (const i in this._graphicsBatchesHash) {\n this._removeBatchForRenderable(i);\n }\n this._graphicsBatchesHash = null;\n }\n}\n/** @ignore */\nGraphicsPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"graphics\"\n};\n\nexport { GraphicsPipe };\n//# sourceMappingURL=GraphicsPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { GraphicsContextSystem } from './shared/GraphicsContextSystem.mjs';\nimport { GraphicsPipe } from './shared/GraphicsPipe.mjs';\n\n\"use strict\";\nextensions.add(GraphicsPipe);\nextensions.add(GraphicsContextSystem);\n//# sourceMappingURL=init.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { BindGroup } from '../../../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { color32BitToUniform } from '../../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from './BatchableMesh.mjs';\n\n\"use strict\";\nclass MeshPipe {\n constructor(renderer, adaptor) {\n this.localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n this.localUniformsBindGroup = new BindGroup({\n 0: this.localUniforms\n });\n this._meshDataHash = /* @__PURE__ */ Object.create(null);\n this._gpuBatchableMeshHash = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(mesh) {\n const meshData = this._getMeshData(mesh);\n const wasBatched = meshData.batched;\n const isBatched = mesh.batched;\n meshData.batched = isBatched;\n if (wasBatched !== isBatched) {\n return true;\n } else if (isBatched) {\n const geometry = mesh._geometry;\n if (geometry.indices.length !== meshData.indexSize || geometry.positions.length !== meshData.vertexSize) {\n meshData.indexSize = geometry.indices.length;\n meshData.vertexSize = geometry.positions.length;\n return true;\n }\n const batchableMesh = this._getBatchableMesh(mesh);\n const texture = mesh.texture;\n if (batchableMesh.texture._source !== texture._source) {\n if (batchableMesh.texture._source !== texture._source) {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, texture);\n }\n }\n }\n return false;\n }\n addRenderable(mesh, instructionSet) {\n const batcher = this.renderer.renderPipes.batch;\n const { batched } = this._getMeshData(mesh);\n if (batched) {\n const gpuBatchableMesh = this._getBatchableMesh(mesh);\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n batcher.addToBatch(gpuBatchableMesh);\n } else {\n batcher.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"mesh\",\n mesh\n });\n }\n }\n updateRenderable(mesh) {\n if (mesh.batched) {\n const gpuBatchableMesh = this._gpuBatchableMeshHash[mesh.uid];\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n gpuBatchableMesh.batcher.updateElement(gpuBatchableMesh);\n }\n }\n destroyRenderable(mesh) {\n this._meshDataHash[mesh.uid] = null;\n const gpuMesh = this._gpuBatchableMeshHash[mesh.uid];\n if (gpuMesh) {\n BigPool.return(gpuMesh);\n this._gpuBatchableMeshHash[mesh.uid] = null;\n }\n }\n execute({ mesh }) {\n if (!mesh.isRenderable)\n return;\n mesh.state.blendMode = mesh.groupBlendMode;\n const localUniforms = this.localUniforms;\n localUniforms.uniforms.uTransformMatrix = mesh.groupTransform;\n localUniforms.uniforms.uRound = this.renderer._roundPixels | mesh._roundPixels;\n localUniforms.update();\n color32BitToUniform(\n mesh.groupColorAlpha,\n localUniforms.uniforms.uColor,\n 0\n );\n this._adaptor.execute(this, mesh);\n }\n _getMeshData(mesh) {\n return this._meshDataHash[mesh.uid] || this._initMeshData(mesh);\n }\n _initMeshData(mesh) {\n this._meshDataHash[mesh.uid] = {\n batched: mesh.batched,\n indexSize: mesh._geometry.indices?.length,\n vertexSize: mesh._geometry.positions?.length\n };\n mesh.on(\"destroyed\", () => {\n this.destroyRenderable(mesh);\n });\n return this._meshDataHash[mesh.uid];\n }\n _getBatchableMesh(mesh) {\n return this._gpuBatchableMeshHash[mesh.uid] || this._initBatchableMesh(mesh);\n }\n _initBatchableMesh(mesh) {\n const gpuMesh = BigPool.get(BatchableMesh);\n gpuMesh.mesh = mesh;\n gpuMesh.texture = mesh._texture;\n gpuMesh.roundPixels = this.renderer._roundPixels | mesh._roundPixels;\n this._gpuBatchableMeshHash[mesh.uid] = gpuMesh;\n gpuMesh.mesh = mesh;\n return gpuMesh;\n }\n destroy() {\n for (const i in this._gpuBatchableMeshHash) {\n if (this._gpuBatchableMeshHash[i]) {\n BigPool.return(this._gpuBatchableMeshHash[i]);\n }\n }\n this._gpuBatchableMeshHash = null;\n this._meshDataHash = null;\n this.localUniforms = null;\n this.localUniformsBindGroup = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.renderer = null;\n }\n}\n/** @ignore */\nMeshPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"mesh\"\n};\n\nexport { MeshPipe };\n//# sourceMappingURL=MeshPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { MeshPipe } from './shared/MeshPipe.mjs';\n\n\"use strict\";\nextensions.add(MeshPipe);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nclass BatchableMesh {\n constructor() {\n this.batcher = null;\n this.batch = null;\n this.roundPixels = 0;\n this._uvUpdateId = -1;\n this._textureMatrixUpdateId = -1;\n }\n get blendMode() {\n return this.mesh.groupBlendMode;\n }\n reset() {\n this.mesh = null;\n this.texture = null;\n this.batcher = null;\n this.batch = null;\n }\n packIndex(indexBuffer, index, indicesOffset) {\n const indices = this.geometry.indices;\n for (let i = 0; i < indices.length; i++) {\n indexBuffer[index++] = indices[i] + indicesOffset;\n }\n }\n packAttributes(float32View, uint32View, index, textureId) {\n const mesh = this.mesh;\n const geometry = this.geometry;\n const wt = mesh.groupTransform;\n const textureIdAndRound = textureId << 16 | this.roundPixels & 65535;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const positions = geometry.positions;\n const uvBuffer = geometry.getBuffer(\"aUV\");\n const uvs = uvBuffer.data;\n let transformedUvs = uvs;\n const textureMatrix = this.texture.textureMatrix;\n if (!textureMatrix.isSimple) {\n transformedUvs = this._transformedUvs;\n if (this._textureMatrixUpdateId !== textureMatrix._updateID || this._uvUpdateId !== uvBuffer._updateID) {\n if (!transformedUvs || transformedUvs.length < uvs.length) {\n transformedUvs = this._transformedUvs = new Float32Array(uvs.length);\n }\n this._textureMatrixUpdateId = textureMatrix._updateID;\n this._uvUpdateId = uvBuffer._updateID;\n textureMatrix.multiplyUvs(uvs, transformedUvs);\n }\n }\n const abgr = mesh.groupColorAlpha;\n for (let i = 0; i < positions.length; i += 2) {\n const x = positions[i];\n const y = positions[i + 1];\n float32View[index] = a * x + c * y + tx;\n float32View[index + 1] = b * x + d * y + ty;\n float32View[index + 2] = transformedUvs[i];\n float32View[index + 3] = transformedUvs[i + 1];\n uint32View[index + 4] = abgr;\n uint32View[index + 5] = textureIdAndRound;\n index += 6;\n }\n }\n get vertexSize() {\n return this.geometry.positions.length / 2;\n }\n get indexSize() {\n return this.geometry.indices.length;\n }\n}\n\nexport { BatchableMesh };\n//# sourceMappingURL=BatchableMesh.mjs.map\n","import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../../rendering/renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _MeshGeometry = class _MeshGeometry extends Geometry {\n constructor(...args) {\n let options = args[0] ?? {};\n if (options instanceof Float32Array) {\n deprecation(v8_0_0, \"use new MeshGeometry({ positions, uvs, indices }) instead\");\n options = {\n positions: options,\n uvs: args[1],\n indices: args[2]\n };\n }\n options = { ..._MeshGeometry.defaultOptions, ...options };\n const positions = options.positions || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const uvs = options.uvs || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const indices = options.indices || new Uint32Array([0, 1, 2, 0, 2, 3]);\n const shrinkToFit = options.shrinkBuffersToFit;\n const positionBuffer = new Buffer({\n data: positions,\n label: \"attribute-mesh-positions\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const uvBuffer = new Buffer({\n data: uvs,\n label: \"attribute-mesh-uvs\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const indexBuffer = new Buffer({\n data: indices,\n label: \"index-mesh-buffer\",\n shrinkToFit,\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST\n });\n super({\n attributes: {\n aPosition: {\n buffer: positionBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n },\n aUV: {\n buffer: uvBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer,\n topology: options.topology\n });\n this.batchMode = \"auto\";\n }\n /** The positions of the mesh. */\n get positions() {\n return this.attributes.aPosition.buffer.data;\n }\n set positions(value) {\n this.attributes.aPosition.buffer.data = value;\n }\n /** The UVs of the mesh. */\n get uvs() {\n return this.attributes.aUV.buffer.data;\n }\n set uvs(value) {\n this.attributes.aUV.buffer.data = value;\n }\n /** The indices of the mesh. */\n get indices() {\n return this.indexBuffer.data;\n }\n set indices(value) {\n this.indexBuffer.data = value;\n }\n};\n_MeshGeometry.defaultOptions = {\n topology: \"triangle-list\",\n shrinkBuffersToFit: false\n};\nlet MeshGeometry = _MeshGeometry;\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","import { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nconst _PlaneGeometry = class _PlaneGeometry extends MeshGeometry {\n constructor(...args) {\n super({});\n let options = args[0] ?? {};\n if (typeof options === \"number\") {\n deprecation(v8_0_0, \"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead\");\n options = {\n width: options,\n height: args[1],\n verticesX: args[2],\n verticesY: args[3]\n };\n }\n this.build(options);\n }\n /**\n * Refreshes plane coordinates\n * @param options - Options to be applied to plane geometry\n */\n build(options) {\n options = { ..._PlaneGeometry.defaultOptions, ...options };\n this.verticesX = this.verticesX ?? options.verticesX;\n this.verticesY = this.verticesY ?? options.verticesY;\n this.width = this.width ?? options.width;\n this.height = this.height ?? options.height;\n const total = this.verticesX * this.verticesY;\n const verts = [];\n const uvs = [];\n const indices = [];\n const verticesX = this.verticesX - 1;\n const verticesY = this.verticesY - 1;\n const sizeX = this.width / verticesX;\n const sizeY = this.height / verticesY;\n for (let i = 0; i < total; i++) {\n const x = i % this.verticesX;\n const y = i / this.verticesX | 0;\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / verticesX, y / verticesY);\n }\n const totalSub = verticesX * verticesY;\n for (let i = 0; i < totalSub; i++) {\n const xpos = i % verticesX;\n const ypos = i / verticesX | 0;\n const value = ypos * this.verticesX + xpos;\n const value2 = ypos * this.verticesX + xpos + 1;\n const value3 = (ypos + 1) * this.verticesX + xpos;\n const value4 = (ypos + 1) * this.verticesX + xpos + 1;\n indices.push(\n value,\n value2,\n value3,\n value2,\n value4,\n value3\n );\n }\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint32Array(indices);\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n};\n_PlaneGeometry.defaultOptions = {\n width: 100,\n height: 100,\n verticesX: 10,\n verticesY: 10\n};\nlet PlaneGeometry = _PlaneGeometry;\n\nexport { PlaneGeometry };\n//# sourceMappingURL=PlaneGeometry.mjs.map\n","import { PlaneGeometry } from '../mesh-plane/PlaneGeometry.mjs';\n\n\"use strict\";\nconst _NineSliceGeometry = class _NineSliceGeometry extends PlaneGeometry {\n constructor(options = {}) {\n options = { ..._NineSliceGeometry.defaultOptions, ...options };\n super({\n width: options.width,\n height: options.height,\n verticesX: 4,\n verticesY: 4\n });\n this.update(options);\n }\n /**\n * Updates the NineSliceGeometry with the options.\n * @param options - The options of the NineSliceGeometry.\n */\n update(options) {\n this.width = options.width ?? this.width;\n this.height = options.height ?? this.height;\n this._originalWidth = options.originalWidth ?? this._originalWidth;\n this._originalHeight = options.originalHeight ?? this._originalHeight;\n this._leftWidth = options.leftWidth ?? this._leftWidth;\n this._rightWidth = options.rightWidth ?? this._rightWidth;\n this._topHeight = options.topHeight ?? this._topHeight;\n this._bottomHeight = options.bottomHeight ?? this._bottomHeight;\n this.updateUvs();\n this.updatePositions();\n }\n /** Updates the positions of the vertices. */\n updatePositions() {\n const positions = this.positions;\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this.width > w ? 1 : this.width / w;\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this.height > h ? 1 : this.height / h;\n const scale = Math.min(scaleW, scaleH);\n positions[9] = positions[11] = positions[13] = positions[15] = this._topHeight * scale;\n positions[17] = positions[19] = positions[21] = positions[23] = this.height - this._bottomHeight * scale;\n positions[25] = positions[27] = positions[29] = positions[31] = this.height;\n positions[2] = positions[10] = positions[18] = positions[26] = this._leftWidth * scale;\n positions[4] = positions[12] = positions[20] = positions[28] = this.width - this._rightWidth * scale;\n positions[6] = positions[14] = positions[22] = positions[30] = this.width;\n this.getBuffer(\"aPosition\").update();\n }\n /** Updates the UVs of the vertices. */\n updateUvs() {\n const uvs = this.uvs;\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n const _uvw = 1 / this._originalWidth;\n const _uvh = 1 / this._originalHeight;\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth;\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight;\n this.getBuffer(\"aUV\").update();\n }\n};\n/** The default options for the NineSliceGeometry. */\n_NineSliceGeometry.defaultOptions = {\n /** The width of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n width: 100,\n /** The height of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n height: 100,\n /** The width of the left column. */\n leftWidth: 10,\n /** The height of the top row. */\n topHeight: 10,\n /** The width of the right column. */\n rightWidth: 10,\n /** The height of the bottom row. */\n bottomHeight: 10,\n /** The original width of the texture */\n originalWidth: 100,\n /** The original height of the texture */\n originalHeight: 100\n};\nlet NineSliceGeometry = _NineSliceGeometry;\n\nexport { NineSliceGeometry };\n//# sourceMappingURL=NineSliceGeometry.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs';\nimport { NineSliceGeometry } from './NineSliceGeometry.mjs';\n\n\"use strict\";\nclass NineSliceSpritePipe {\n constructor(renderer) {\n this._gpuSpriteHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n addRenderable(sprite, _instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n if (gpuSprite.texture._source !== texture._source) {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n return false;\n }\n destroyRenderable(sprite) {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n BigPool.return(batchableSprite);\n this._gpuSpriteHash[sprite.uid] = null;\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n sprite._didSpriteUpdate = false;\n batchableSprite.geometry.update(sprite);\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableMesh = new BatchableMesh();\n batchableMesh.geometry = new NineSliceGeometry();\n batchableMesh.mesh = sprite;\n batchableMesh.texture = sprite._texture;\n batchableMesh.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n this._gpuSpriteHash[sprite.uid] = batchableMesh;\n sprite.on(\"destroyed\", () => {\n this.destroyRenderable(sprite);\n });\n return batchableMesh;\n }\n destroy() {\n for (const i in this._gpuSpriteHash) {\n const batchableMesh = this._gpuSpriteHash[i];\n batchableMesh.geometry.destroy();\n }\n this._gpuSpriteHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nNineSliceSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"nineSliceSprite\"\n};\n\nexport { NineSliceSpritePipe };\n//# sourceMappingURL=NineSliceSpritePipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { NineSliceSpritePipe } from './NineSliceSpritePipe.mjs';\n\n\"use strict\";\nextensions.add(NineSliceSpritePipe);\n//# sourceMappingURL=init.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram, compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit, localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { tilingBit, tilingBitGl } from './tilingBit.mjs';\n\n\"use strict\";\nlet gpuProgram;\nlet glProgram;\nclass TilingSpriteShader extends Shader {\n constructor() {\n gpuProgram ?? (gpuProgram = compileHighShaderGpuProgram({\n name: \"tiling-sprite-shader\",\n bits: [\n localUniformBit,\n tilingBit,\n roundPixelsBit\n ]\n }));\n glProgram ?? (glProgram = compileHighShaderGlProgram({\n name: \"tiling-sprite-shader\",\n bits: [\n localUniformBitGl,\n tilingBitGl,\n roundPixelsBitGl\n ]\n }));\n const tilingUniforms = new UniformGroup({\n uMapCoord: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uClampFrame: { value: new Float32Array([0, 0, 1, 1]), type: \"vec4<f32>\" },\n uClampOffset: { value: new Float32Array([0, 0]), type: \"vec2<f32>\" },\n uTextureTransform: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uSizeAnchor: { value: new Float32Array([100, 100, 0.5, 0.5]), type: \"vec4<f32>\" }\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n }),\n tilingUniforms,\n uTexture: Texture.EMPTY.source,\n uSampler: Texture.EMPTY.source.style\n }\n });\n }\n updateUniforms(width, height, matrix, anchorX, anchorY, texture) {\n const tilingUniforms = this.resources.tilingUniforms;\n const textureWidth = texture.width;\n const textureHeight = texture.height;\n const textureMatrix = texture.textureMatrix;\n const uTextureTransform = tilingUniforms.uniforms.uTextureTransform;\n uTextureTransform.set(\n matrix.a * textureWidth / width,\n matrix.b * textureWidth / height,\n matrix.c * textureHeight / width,\n matrix.d * textureHeight / height,\n matrix.tx / width,\n matrix.ty / height\n );\n uTextureTransform.invert();\n tilingUniforms.uniforms.uMapCoord = textureMatrix.mapCoord;\n tilingUniforms.uniforms.uClampFrame = textureMatrix.uClampFrame;\n tilingUniforms.uniforms.uClampOffset = textureMatrix.uClampOffset;\n tilingUniforms.uniforms.uTextureTransform = uTextureTransform;\n tilingUniforms.uniforms.uSizeAnchor[0] = width;\n tilingUniforms.uniforms.uSizeAnchor[1] = height;\n tilingUniforms.uniforms.uSizeAnchor[2] = anchorX;\n tilingUniforms.uniforms.uSizeAnchor[3] = anchorY;\n if (texture) {\n this.resources.uTexture = texture.source;\n this.resources.uSampler = texture.source.style;\n }\n }\n}\n\nexport { TilingSpriteShader };\n//# sourceMappingURL=TilingSpriteShader.mjs.map\n","\"use strict\";\nconst tilingBit = {\n name: \"tiling-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n `\n ),\n main: (\n /* wgsl */\n `\n uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;\n\n position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n `\n ),\n main: (\n /* wgsl */\n `\n\n var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);\n coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;\n var unclamped = coord;\n coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);\n\n var bias = 0.;\n\n if(unclamped.x == coord.x && unclamped.y == coord.y)\n {\n bias = -32.;\n } \n\n outColor = textureSampleBias(uTexture, uSampler, coord, bias);\n `\n )\n }\n};\nconst tilingBitGl = {\n name: \"tiling-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTextureTransform;\n uniform vec4 uSizeAnchor;\n \n `\n ),\n main: (\n /* glsl */\n `\n uv = (uTextureTransform * vec3(aUV, 1.0)).xy;\n\n position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform sampler2D uTexture;\n uniform mat3 uMapCoord;\n uniform vec4 uClampFrame;\n uniform vec2 uClampOffset;\n `\n ),\n main: (\n /* glsl */\n `\n\n vec2 coord = vUV + ceil(uClampOffset - vUV);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n \n outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0\n \n `\n )\n }\n};\n\nexport { tilingBit, tilingBitGl };\n//# sourceMappingURL=tilingBit.mjs.map\n","import { MeshGeometry } from '../../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nclass QuadGeometry extends MeshGeometry {\n constructor() {\n super({\n positions: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n uvs: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n indices: new Uint32Array([0, 1, 2, 0, 2, 3])\n });\n }\n}\n\nexport { QuadGeometry };\n//# sourceMappingURL=QuadGeometry.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { State } from '../../rendering/renderers/shared/state/State.mjs';\nimport { RendererType } from '../../rendering/renderers/types.mjs';\nimport { color32BitToUniform } from '../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\nimport { TilingSpriteShader } from './shader/TilingSpriteShader.mjs';\nimport { QuadGeometry } from './utils/QuadGeometry.mjs';\nimport { setPositions } from './utils/setPositions.mjs';\nimport { setUvs } from './utils/setUvs.mjs';\n\n\"use strict\";\nconst sharedQuad = new QuadGeometry();\nclass TilingSpritePipe {\n constructor(renderer) {\n this._tilingSpriteDataHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(renderable) {\n const tilingSpriteData = this._getTilingSpriteData(renderable);\n const couldBatch = tilingSpriteData.canBatch;\n this._updateCanBatch(renderable);\n const canBatch = tilingSpriteData.canBatch;\n if (canBatch && canBatch === couldBatch) {\n const { batchableMesh } = tilingSpriteData;\n if (batchableMesh.texture._source !== renderable.texture._source) {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, renderable.texture);\n }\n }\n return couldBatch !== canBatch;\n }\n addRenderable(tilingSprite, instructionSet) {\n const batcher = this._renderer.renderPipes.batch;\n this._updateCanBatch(tilingSprite);\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n const { geometry, canBatch } = tilingSpriteData;\n if (canBatch) {\n tilingSpriteData.batchableMesh || (tilingSpriteData.batchableMesh = new BatchableMesh());\n const batchableMesh = tilingSpriteData.batchableMesh;\n if (tilingSprite._didTilingSpriteUpdate) {\n tilingSprite._didTilingSpriteUpdate = false;\n this._updateBatchableMesh(tilingSprite);\n batchableMesh.geometry = geometry;\n batchableMesh.mesh = tilingSprite;\n batchableMesh.texture = tilingSprite._texture;\n }\n batchableMesh.roundPixels = this._renderer._roundPixels | tilingSprite._roundPixels;\n batcher.addToBatch(batchableMesh);\n } else {\n batcher.break(instructionSet);\n tilingSpriteData.shader || (tilingSpriteData.shader = new TilingSpriteShader());\n this.updateRenderable(tilingSprite);\n instructionSet.add(tilingSprite);\n }\n }\n execute(tilingSprite) {\n const { shader } = this._tilingSpriteDataHash[tilingSprite.uid];\n shader.groups[0] = this._renderer.globalUniforms.bindGroup;\n const localUniforms = shader.resources.localUniforms.uniforms;\n localUniforms.uTransformMatrix = tilingSprite.groupTransform;\n localUniforms.uRound = this._renderer._roundPixels | tilingSprite._roundPixels;\n color32BitToUniform(\n tilingSprite.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n this._renderer.encoder.draw({\n geometry: sharedQuad,\n shader,\n state: State.default2d\n });\n }\n updateRenderable(tilingSprite) {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n const { canBatch } = tilingSpriteData;\n if (canBatch) {\n const { batchableMesh } = tilingSpriteData;\n if (tilingSprite._didTilingSpriteUpdate)\n this._updateBatchableMesh(tilingSprite);\n batchableMesh.batcher.updateElement(batchableMesh);\n } else if (tilingSprite._didTilingSpriteUpdate) {\n const { shader } = tilingSpriteData;\n shader.updateUniforms(\n tilingSprite.width,\n tilingSprite.height,\n tilingSprite._tileTransform.matrix,\n tilingSprite.anchor.x,\n tilingSprite.anchor.y,\n tilingSprite.texture\n );\n }\n tilingSprite._didTilingSpriteUpdate = false;\n }\n destroyRenderable(tilingSprite) {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n tilingSpriteData.batchableMesh = null;\n tilingSpriteData.shader?.destroy();\n this._tilingSpriteDataHash[tilingSprite.uid] = null;\n }\n _getTilingSpriteData(renderable) {\n return this._tilingSpriteDataHash[renderable.uid] || this._initTilingSpriteData(renderable);\n }\n _initTilingSpriteData(tilingSprite) {\n const geometry = new MeshGeometry({\n indices: sharedQuad.indices,\n positions: sharedQuad.positions.slice(),\n uvs: sharedQuad.uvs.slice()\n });\n this._tilingSpriteDataHash[tilingSprite.uid] = {\n canBatch: true,\n renderable: tilingSprite,\n geometry\n };\n tilingSprite.on(\"destroyed\", () => {\n this.destroyRenderable(tilingSprite);\n });\n return this._tilingSpriteDataHash[tilingSprite.uid];\n }\n _updateBatchableMesh(tilingSprite) {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const { geometry } = renderableData;\n const style = tilingSprite.texture.source.style;\n if (style.addressMode !== \"repeat\") {\n style.addressMode = \"repeat\";\n style.update();\n }\n setUvs(tilingSprite, geometry.uvs);\n setPositions(tilingSprite, geometry.positions);\n }\n destroy() {\n for (const i in this._tilingSpriteDataHash) {\n this.destroyRenderable(this._tilingSpriteDataHash[i].renderable);\n }\n this._tilingSpriteDataHash = null;\n this._renderer = null;\n }\n _updateCanBatch(tilingSprite) {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const texture = tilingSprite.texture;\n let _nonPowOf2wrapping = true;\n if (this._renderer.type === RendererType.WEBGL) {\n _nonPowOf2wrapping = this._renderer.context.supports.nonPowOf2wrapping;\n }\n renderableData.canBatch = texture.textureMatrix.isSimple && (_nonPowOf2wrapping || texture.source.isPowerOfTwo);\n return renderableData.canBatch;\n }\n}\n/** @ignore */\nTilingSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"tilingSprite\"\n};\n\nexport { TilingSpritePipe };\n//# sourceMappingURL=TilingSpritePipe.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { applyMatrix } from './applyMatrix.mjs';\n\n\"use strict\";\nfunction setUvs(tilingSprite, uvs) {\n const texture = tilingSprite.texture;\n const width = texture.frame.width;\n const height = texture.frame.height;\n let anchorX = 0;\n let anchorY = 0;\n if (tilingSprite._applyAnchorToTexture) {\n anchorX = tilingSprite.anchor.x;\n anchorY = tilingSprite.anchor.y;\n }\n uvs[0] = uvs[6] = -anchorX;\n uvs[2] = uvs[4] = 1 - anchorX;\n uvs[1] = uvs[3] = -anchorY;\n uvs[5] = uvs[7] = 1 - anchorY;\n const textureMatrix = Matrix.shared;\n textureMatrix.copyFrom(tilingSprite._tileTransform.matrix);\n textureMatrix.tx /= tilingSprite.width;\n textureMatrix.ty /= tilingSprite.height;\n textureMatrix.invert();\n textureMatrix.scale(tilingSprite.width / width, tilingSprite.height / height);\n applyMatrix(uvs, 2, 0, textureMatrix);\n}\n\nexport { setUvs };\n//# sourceMappingURL=setUvs.mjs.map\n","\"use strict\";\nfunction setPositions(tilingSprite, positions) {\n const anchorX = tilingSprite.anchor.x;\n const anchorY = tilingSprite.anchor.y;\n positions[0] = -anchorX * tilingSprite.width;\n positions[1] = -anchorY * tilingSprite.height;\n positions[2] = (1 - anchorX) * tilingSprite.width;\n positions[3] = -anchorY * tilingSprite.height;\n positions[4] = (1 - anchorX) * tilingSprite.width;\n positions[5] = (1 - anchorY) * tilingSprite.height;\n positions[6] = -anchorX * tilingSprite.width;\n positions[7] = (1 - anchorY) * tilingSprite.height;\n}\n\nexport { setPositions };\n//# sourceMappingURL=setPositions.mjs.map\n","\"use strict\";\nfunction applyMatrix(array, stride, offset, matrix) {\n let index = 0;\n const size = array.length / (stride || 2);\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n offset *= stride;\n while (index < size) {\n const x = array[offset];\n const y = array[offset + 1];\n array[offset] = a * x + c * y + tx;\n array[offset + 1] = b * x + d * y + ty;\n offset += stride;\n index++;\n }\n}\n\nexport { applyMatrix };\n//# sourceMappingURL=applyMatrix.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { TilingSpritePipe } from './TilingSpritePipe.mjs';\n\n\"use strict\";\nextensions.add(TilingSpritePipe);\n//# sourceMappingURL=init.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nclass AbstractBitmapFont extends EventEmitter {\n constructor() {\n super(...arguments);\n /** The map of characters by character code. */\n this.chars = /* @__PURE__ */ Object.create(null);\n /**\n * The line-height of the font face in pixels.\n * @type {number}\n */\n this.lineHeight = 0;\n /**\n * The name of the font face\n * @type {string}\n */\n this.fontFamily = \"\";\n /** The metrics of the font face. */\n this.fontMetrics = { fontSize: 0, ascent: 0, descent: 0 };\n /**\n * The offset of the font face from the baseline.\n * @type {number}\n */\n this.baseLineOffset = 0;\n /** The range and type of the distance field for this font. */\n this.distanceField = { type: \"none\", range: 0 };\n /** The map of base page textures (i.e., sheets of glyphs). */\n this.pages = [];\n /** The size of the font face in pixels. */\n this.baseMeasurementFontSize = 100;\n this.baseRenderedFontSize = 100;\n }\n /**\n * The name of the font face.\n * @deprecated since 8.0.0 Use `fontFamily` instead.\n */\n get font() {\n deprecation(v8_0_0, \"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead.\");\n return this.fontFamily;\n }\n /**\n * The map of base page textures (i.e., sheets of glyphs).\n * @deprecated since 8.0.0 Use `pages` instead.\n */\n get pageTextures() {\n deprecation(v8_0_0, \"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.\");\n return this.pages;\n }\n /**\n * The size of the font face in pixels.\n * @deprecated since 8.0.0 Use `fontMetrics.fontSize` instead.\n */\n get size() {\n deprecation(v8_0_0, \"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead.\");\n return this.fontMetrics.fontSize;\n }\n /**\n * The kind of distance field for this font or \"none\".\n * @deprecated since 8.0.0 Use `distanceField.type` instead.\n */\n get distanceFieldRange() {\n deprecation(v8_0_0, \"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead.\");\n return this.distanceField.range;\n }\n /**\n * The range of the distance field in pixels.\n * @deprecated since 8.0.0 Use `distanceField.range` instead.\n */\n get distanceFieldType() {\n deprecation(v8_0_0, \"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead.\");\n return this.distanceField.type;\n }\n destroy(destroyTextures = false) {\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n for (const i in this.chars) {\n this.chars[i].texture.destroy();\n }\n this.chars = null;\n if (destroyTextures) {\n this.pages.forEach((page) => page.texture.destroy(true));\n this.pages = null;\n }\n }\n}\n\nexport { AbstractBitmapFont };\n//# sourceMappingURL=AbstractBitmapFont.mjs.map\n","\"use strict\";\nfunction resolveCharacters(chars) {\n if (chars === \"\") {\n return [];\n }\n if (typeof chars === \"string\") {\n chars = [chars];\n }\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2) {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n if (item[0].length === 0 || item[1].length === 0) {\n throw new Error(\"[BitmapFont]: Invalid character delimiter.\");\n }\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n if (endCode < startCode) {\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n }\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++) {\n result.push(String.fromCharCode(i2));\n }\n } else {\n result.push(...Array.from(item));\n }\n }\n if (result.length === 0) {\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n }\n return result;\n}\n\nexport { resolveCharacters };\n//# sourceMappingURL=resolveCharacters.mjs.map\n","import { Color } from '../../color/Color.mjs';\nimport { Rectangle } from '../../maths/shapes/Rectangle.mjs';\nimport { CanvasPool } from '../../rendering/renderers/shared/texture/CanvasPool.mjs';\nimport { ImageSource } from '../../rendering/renderers/shared/texture/sources/ImageSource.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { CanvasTextMetrics } from '../text/canvas/CanvasTextMetrics.mjs';\nimport { fontStringFromTextStyle } from '../text/canvas/utils/fontStringFromTextStyle.mjs';\nimport { getCanvasFillStyle } from '../text/canvas/utils/getCanvasFillStyle.mjs';\nimport { AbstractBitmapFont } from './AbstractBitmapFont.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\n\n\"use strict\";\nclass DynamicBitmapFont extends AbstractBitmapFont {\n /**\n * @param options - The options for the dynamic bitmap font.\n */\n constructor(options) {\n super();\n /**\n * this is a resolution modifier for the font size..\n * texture resolution will also be used to scale texture according to its font size also\n */\n this.resolution = 1;\n /** The pages of the font. */\n this.pages = [];\n this._padding = 4;\n this._measureCache = /* @__PURE__ */ Object.create(null);\n this._currentChars = [];\n this._currentX = 0;\n this._currentY = 0;\n this._currentPageIndex = -1;\n this._skipKerning = false;\n const dynamicOptions = options;\n const style = dynamicOptions.style.clone();\n if (dynamicOptions.overrideFill) {\n style._fill.color = 16777215;\n style._fill.alpha = 1;\n style._fill.texture = Texture.WHITE;\n style._fill.fill = null;\n }\n const requestedFontSize = style.fontSize;\n style.fontSize = this.baseMeasurementFontSize;\n const font = fontStringFromTextStyle(style);\n if (dynamicOptions.overrideSize) {\n if (style._stroke) {\n style._stroke.width *= this.baseRenderedFontSize / requestedFontSize;\n }\n } else {\n style.fontSize = this.baseRenderedFontSize = requestedFontSize;\n }\n this._style = style;\n this._skipKerning = dynamicOptions.skipKerning ?? false;\n this.resolution = dynamicOptions.resolution ?? 1;\n this._padding = dynamicOptions.padding ?? 4;\n this.fontMetrics = CanvasTextMetrics.measureFont(font);\n this.lineHeight = style.lineHeight || this.fontMetrics.fontSize || style.fontSize;\n }\n ensureCharacters(chars) {\n const charList = resolveCharacters(chars).filter((char) => !this._currentChars.includes(char)).filter((char, index, self) => self.indexOf(char) === index);\n if (!charList.length)\n return;\n this._currentChars = [...this._currentChars, ...charList];\n let pageData;\n if (this._currentPageIndex === -1) {\n pageData = this._nextPage();\n } else {\n pageData = this.pages[this._currentPageIndex];\n }\n let { canvas, context } = pageData.canvasAndContext;\n let textureSource = pageData.texture.source;\n const style = this._style;\n let currentX = this._currentX;\n let currentY = this._currentY;\n const fontScale = this.baseRenderedFontSize / this.baseMeasurementFontSize;\n const padding = this._padding * fontScale;\n const widthScale = style.fontStyle === \"italic\" ? 2 : 1;\n let maxCharHeight = 0;\n let skipTexture = false;\n for (let i = 0; i < charList.length; i++) {\n const char = charList[i];\n const metrics = CanvasTextMetrics.measureText(char, style, canvas, false);\n metrics.lineHeight = metrics.height;\n const width = widthScale * metrics.width * fontScale;\n const height = metrics.height * fontScale;\n const paddedWidth = width + padding * 2;\n const paddedHeight = height + padding * 2;\n skipTexture = false;\n if (char !== \"\\n\" && char !== \"\\r\" && char !== \"\t\" && char !== \" \") {\n skipTexture = true;\n maxCharHeight = Math.ceil(Math.max(paddedHeight, maxCharHeight));\n }\n if (currentX + paddedWidth > 512) {\n currentY += maxCharHeight;\n maxCharHeight = paddedHeight;\n currentX = 0;\n if (currentY + maxCharHeight > 512) {\n textureSource.update();\n const pageData2 = this._nextPage();\n canvas = pageData2.canvasAndContext.canvas;\n context = pageData2.canvasAndContext.context;\n textureSource = pageData2.texture.source;\n currentY = 0;\n }\n }\n const xAdvance = width / fontScale - (style.dropShadow?.distance ?? 0) - (style._stroke?.width ?? 0);\n this.chars[char] = {\n id: char.codePointAt(0),\n xOffset: -this._padding,\n yOffset: -this._padding,\n xAdvance,\n kerning: {}\n };\n if (skipTexture) {\n this._drawGlyph(\n context,\n metrics,\n currentX + padding,\n currentY + padding,\n fontScale,\n style\n );\n const px = textureSource.width * fontScale;\n const py = textureSource.height * fontScale;\n const frame = new Rectangle(\n currentX / px * textureSource.width,\n currentY / py * textureSource.height,\n paddedWidth / px * textureSource.width,\n paddedHeight / py * textureSource.height\n );\n this.chars[char].texture = new Texture({\n source: textureSource,\n frame\n });\n currentX += Math.ceil(paddedWidth);\n }\n }\n textureSource.update();\n this._currentX = currentX;\n this._currentY = currentY;\n this._skipKerning && this._applyKerning(charList, context);\n }\n /**\n * @deprecated since 8.0.0\n * The map of base page textures (i.e., sheets of glyphs).\n */\n get pageTextures() {\n deprecation(v8_0_0, \"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.\");\n return this.pages;\n }\n _applyKerning(newChars, context) {\n const measureCache = this._measureCache;\n for (let i = 0; i < newChars.length; i++) {\n const first = newChars[i];\n for (let j = 0; j < this._currentChars.length; j++) {\n const second = this._currentChars[j];\n let c1 = measureCache[first];\n if (!c1)\n c1 = measureCache[first] = context.measureText(first).width;\n let c2 = measureCache[second];\n if (!c2)\n c2 = measureCache[second] = context.measureText(second).width;\n let total = context.measureText(first + second).width;\n let amount = total - (c1 + c2);\n if (amount) {\n this.chars[first].kerning[second] = amount;\n }\n total = context.measureText(first + second).width;\n amount = total - (c1 + c2);\n if (amount) {\n this.chars[second].kerning[first] = amount;\n }\n }\n }\n }\n _nextPage() {\n this._currentPageIndex++;\n const textureResolution = this.resolution;\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(512, 512, textureResolution);\n this._setupContext(canvasAndContext.context, this._style, textureResolution);\n const resolution = textureResolution * (this.baseRenderedFontSize / this.baseMeasurementFontSize);\n const texture = new Texture({\n source: new ImageSource({\n resource: canvasAndContext.canvas,\n resolution,\n alphaMode: \"premultiply-alpha-on-upload\"\n })\n });\n const pageData = {\n canvasAndContext,\n texture\n };\n this.pages[this._currentPageIndex] = pageData;\n return pageData;\n }\n // canvas style!\n _setupContext(context, style, resolution) {\n style.fontSize = this.baseRenderedFontSize;\n context.scale(resolution, resolution);\n context.font = fontStringFromTextStyle(style);\n style.fontSize = this.baseMeasurementFontSize;\n context.textBaseline = style.textBaseline;\n const stroke = style._stroke;\n const strokeThickness = stroke?.width ?? 0;\n if (stroke) {\n context.lineWidth = strokeThickness;\n context.lineJoin = stroke.join;\n context.miterLimit = stroke.miterLimit;\n context.strokeStyle = getCanvasFillStyle(stroke, context);\n }\n if (style._fill) {\n context.fillStyle = getCanvasFillStyle(style._fill, context);\n }\n if (style.dropShadow) {\n const shadowOptions = style.dropShadow;\n const rgb = Color.shared.setValue(shadowOptions.color).toArray();\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${shadowOptions.alpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance;\n } else {\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n }\n _drawGlyph(context, metrics, x, y, fontScale, style) {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n const stroke = style._stroke;\n const strokeThickness = (stroke?.width ?? 0) * fontScale;\n const tx = x + strokeThickness / 2;\n const ty = y - strokeThickness / 2;\n const descent = fontProperties.descent * fontScale;\n const lineHeight = metrics.lineHeight * fontScale;\n if (style.stroke && strokeThickness) {\n context.strokeText(char, tx, ty + lineHeight - descent);\n }\n if (style._fill) {\n context.fillText(char, tx, ty + lineHeight - descent);\n }\n }\n destroy() {\n super.destroy();\n for (let i = 0; i < this.pages.length; i++) {\n const { canvasAndContext, texture } = this.pages[i];\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n texture.destroy(true);\n }\n this.pages = null;\n }\n}\n\nexport { DynamicBitmapFont };\n//# sourceMappingURL=DynamicBitmapFont.mjs.map\n","\"use strict\";\nfunction getBitmapTextLayout(chars, style, font) {\n const layoutData = {\n width: 0,\n height: 0,\n offsetY: 0,\n scale: style.fontSize / font.baseMeasurementFontSize,\n lines: [{\n width: 0,\n charPositions: [],\n spaceWidth: 0,\n spacesIndex: [],\n chars: []\n }]\n };\n layoutData.offsetY = font.baseLineOffset;\n let currentLine = layoutData.lines[0];\n let previousChar = null;\n let firstWord = true;\n const currentWord = {\n spaceWord: false,\n width: 0,\n start: 0,\n index: 0,\n // use index to not modify the array as we use it a lot!\n positions: [],\n chars: []\n };\n const nextWord = (word) => {\n const start = currentLine.width;\n for (let j = 0; j < currentWord.index; j++) {\n const position = word.positions[j];\n currentLine.chars.push(word.chars[j]);\n currentLine.charPositions.push(position + start);\n }\n currentLine.width += word.width;\n firstWord = false;\n currentWord.width = 0;\n currentWord.index = 0;\n currentWord.chars.length = 0;\n };\n const nextLine = () => {\n let index = currentLine.chars.length - 1;\n let lastChar = currentLine.chars[index];\n while (lastChar === \" \") {\n currentLine.width -= font.chars[lastChar].xAdvance;\n lastChar = currentLine.chars[--index];\n }\n layoutData.width = Math.max(layoutData.width, currentLine.width);\n currentLine = {\n width: 0,\n charPositions: [],\n chars: [],\n spaceWidth: 0,\n spacesIndex: []\n };\n firstWord = true;\n layoutData.lines.push(currentLine);\n layoutData.height += font.lineHeight;\n };\n const scale = font.baseMeasurementFontSize / style.fontSize;\n const adjustedLetterSpacing = style.letterSpacing * scale;\n const adjustedWordWrapWidth = style.wordWrapWidth * scale;\n for (let i = 0; i < chars.length + 1; i++) {\n let char;\n const isEnd = i === chars.length;\n if (!isEnd) {\n char = chars[i];\n }\n const charData = font.chars[char] || font.chars[\" \"];\n const isSpace = /(?:\\s)/.test(char);\n const isWordBreak = isSpace || char === \"\\r\" || char === \"\\n\" || isEnd;\n if (isWordBreak) {\n const addWordToNextLine = !firstWord && style.wordWrap && currentLine.width + currentWord.width - adjustedLetterSpacing > adjustedWordWrapWidth;\n if (addWordToNextLine) {\n nextLine();\n nextWord(currentWord);\n if (!isEnd) {\n currentLine.charPositions.push(0);\n }\n } else {\n currentWord.start = currentLine.width;\n nextWord(currentWord);\n if (!isEnd) {\n currentLine.charPositions.push(0);\n }\n }\n if (char === \"\\r\" || char === \"\\n\") {\n if (currentLine.width !== 0) {\n nextLine();\n }\n } else if (!isEnd) {\n const spaceWidth = charData.xAdvance + (charData.kerning[previousChar] || 0) + adjustedLetterSpacing;\n currentLine.width += spaceWidth;\n currentLine.spaceWidth = spaceWidth;\n currentLine.spacesIndex.push(currentLine.charPositions.length);\n currentLine.chars.push(char);\n }\n } else {\n const kerning = charData.kerning[previousChar] || 0;\n const nextCharWidth = charData.xAdvance + kerning + adjustedLetterSpacing;\n currentWord.positions[currentWord.index++] = currentWord.width + kerning;\n currentWord.chars.push(char);\n currentWord.width += nextCharWidth;\n }\n previousChar = char;\n }\n nextLine();\n if (style.align === \"center\") {\n alignCenter(layoutData);\n } else if (style.align === \"right\") {\n alignRight(layoutData);\n } else if (style.align === \"justify\") {\n alignJustify(layoutData);\n }\n return layoutData;\n}\nfunction alignCenter(measurementData) {\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n const offset = measurementData.width / 2 - line.width / 2;\n for (let j = 0; j < line.charPositions.length; j++) {\n line.charPositions[j] += offset;\n }\n }\n}\nfunction alignRight(measurementData) {\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n const offset = measurementData.width - line.width;\n for (let j = 0; j < line.charPositions.length; j++) {\n line.charPositions[j] += offset;\n }\n }\n}\nfunction alignJustify(measurementData) {\n const width = measurementData.width;\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n let indy = 0;\n let spaceIndex = line.spacesIndex[indy++];\n let offset = 0;\n const totalSpaces = line.spacesIndex.length;\n const newSpaceWidth = (width - line.width) / totalSpaces;\n const spaceWidth = newSpaceWidth;\n for (let j = 0; j < line.charPositions.length; j++) {\n if (j === spaceIndex) {\n spaceIndex = line.spacesIndex[indy++];\n offset += spaceWidth;\n }\n line.charPositions[j] += offset;\n }\n }\n}\n\nexport { getBitmapTextLayout };\n//# sourceMappingURL=getBitmapTextLayout.mjs.map\n","import { Cache } from '../../assets/cache/Cache.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { TextStyle } from '../text/TextStyle.mjs';\nimport { DynamicBitmapFont } from './DynamicBitmapFont.mjs';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\n\n\"use strict\";\nclass BitmapFontManagerClass {\n constructor() {\n /**\n * This character set includes all the letters in the alphabet (both lower- and upper- case).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.ALPHA })\n */\n this.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"];\n /**\n * This character set includes all decimal digits (from 0 to 9).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.NUMERIC })\n */\n this.NUMERIC = [[\"0\", \"9\"]];\n /**\n * This character set is the union of `BitmapFont.ALPHA` and `BitmapFont.NUMERIC`.\n * @type {string[][]}\n */\n this.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"];\n /**\n * This character set consists of all the ASCII table.\n * @member {string[][]}\n * @see http://www.asciitable.com/\n */\n this.ASCII = [[\" \", \"~\"]];\n /** Default options for installing a new BitmapFont. */\n this.defaultOptions = {\n chars: this.ALPHANUMERIC,\n resolution: 1,\n padding: 4,\n skipKerning: false\n };\n }\n /**\n * Get a font for the specified text and style.\n * @param text - The text to get the font for\n * @param style - The style to use\n */\n getFont(text, style) {\n let fontFamilyKey = `${style.fontFamily}-bitmap`;\n let overrideFill = true;\n if (style._fill.fill) {\n fontFamilyKey += style._fill.fill.uid;\n overrideFill = false;\n }\n if (!Cache.has(fontFamilyKey)) {\n const fnt = new DynamicBitmapFont({\n style,\n overrideFill,\n overrideSize: true,\n ...this.defaultOptions\n });\n fnt.once(\"destroy\", () => Cache.remove(fontFamilyKey));\n Cache.set(\n fontFamilyKey,\n fnt\n );\n }\n const dynamicFont = Cache.get(fontFamilyKey);\n dynamicFont.ensureCharacters?.(text);\n return dynamicFont;\n }\n /**\n * Get the layout of a text for the specified style.\n * @param text - The text to get the layout for\n * @param style - The style to use\n */\n getLayout(text, style) {\n const bitmapFont = this.getFont(text, style);\n return getBitmapTextLayout(text.split(\"\"), style, bitmapFont);\n }\n /**\n * Measure the text using the specified style.\n * @param text - The text to measure\n * @param style - The style to use\n */\n measureText(text, style) {\n return this.getLayout(text, style);\n }\n // eslint-disable-next-line max-len\n install(...args) {\n let options = args[0];\n if (typeof options === \"string\") {\n options = {\n name: options,\n style: args[1],\n chars: args[2]?.chars,\n resolution: args[2]?.resolution,\n padding: args[2]?.padding,\n skipKerning: args[2]?.skipKerning\n };\n deprecation(v8_0_0, \"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})\");\n }\n const name = options?.name;\n if (!name) {\n throw new Error(\"[BitmapFontManager] Property `name` is required.\");\n }\n options = { ...this.defaultOptions, ...options };\n const textStyle = options.style;\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const overrideFill = style._fill.fill !== null && style._fill.fill !== void 0;\n const font = new DynamicBitmapFont({\n style,\n overrideFill,\n skipKerning: options.skipKerning,\n padding: options.padding,\n resolution: options.resolution,\n overrideSize: false\n });\n const flatChars = resolveCharacters(options.chars);\n font.ensureCharacters(flatChars.join(\"\"));\n Cache.set(`${name}-bitmap`, font);\n font.once(\"destroy\", () => Cache.remove(`${name}-bitmap`));\n return font;\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n uninstall(name) {\n const cacheKey = `${name}-bitmap`;\n const font = Cache.get(cacheKey);\n if (font) {\n Cache.remove(cacheKey);\n font.destroy();\n }\n }\n}\nconst BitmapFontManager = new BitmapFontManagerClass();\n\nexport { BitmapFontManager };\n//# sourceMappingURL=BitmapFontManager.mjs.map\n","import { Rectangle } from '../../maths/shapes/Rectangle.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { AbstractBitmapFont } from './AbstractBitmapFont.mjs';\nimport { BitmapFontManager } from './BitmapFontManager.mjs';\n\n\"use strict\";\nclass BitmapFont extends AbstractBitmapFont {\n constructor(options, url) {\n super();\n const { textures, data } = options;\n Object.keys(data.pages).forEach((key) => {\n const pageData = data.pages[parseInt(key, 10)];\n const texture = textures[pageData.id];\n this.pages.push({ texture });\n });\n Object.keys(data.chars).forEach((key) => {\n const charData = data.chars[key];\n const {\n frame: textureFrame,\n source: textureSource\n } = textures[charData.page];\n const frameReal = new Rectangle(\n charData.x + textureFrame.x,\n charData.y + textureFrame.y,\n charData.width,\n charData.height\n );\n const texture = new Texture({\n source: textureSource,\n frame: frameReal\n });\n this.chars[key] = {\n id: key.codePointAt(0),\n xOffset: charData.xOffset,\n yOffset: charData.yOffset,\n xAdvance: charData.xAdvance,\n kerning: charData.kerning ?? {},\n texture\n };\n });\n this.baseRenderedFontSize = data.fontSize;\n this.baseMeasurementFontSize = data.fontSize;\n this.fontMetrics = {\n ascent: 0,\n descent: 0,\n fontSize: data.fontSize\n };\n this.baseLineOffset = data.baseLineOffset;\n this.lineHeight = data.lineHeight;\n this.fontFamily = data.fontFamily;\n this.distanceField = data.distanceField ?? {\n type: \"none\",\n range: 0\n };\n this.url = url;\n }\n /** Destroys the BitmapFont object. */\n destroy() {\n super.destroy();\n for (let i = 0; i < this.pages.length; i++) {\n const { texture } = this.pages[i];\n texture.destroy(true);\n }\n this.pages = null;\n }\n /**\n * Generates a bitmap-font for the given style and character set\n * @param options - Setup options for font generation.\n * @returns Font generated by style options.\n * @example\n * import { BitmapFont, BitmapText } from 'pixi.js';\n *\n * BitmapFont.install('TitleFont', {\n * fontFamily: 'Arial',\n * fontSize: 12,\n * strokeThickness: 2,\n * fill: 'purple',\n * });\n *\n * const title = new BitmapText({ text: 'This is the title', fontFamily: 'TitleFont' });\n */\n static install(options) {\n BitmapFontManager.install(options);\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n static uninstall(name) {\n BitmapFontManager.uninstall(name);\n }\n}\n\nexport { BitmapFont };\n//# sourceMappingURL=BitmapFont.mjs.map\n","\"use strict\";\nconst bitmapFontTextParser = {\n test(data) {\n return typeof data === \"string\" && data.startsWith(\"info face=\");\n },\n parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0];\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n const itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\");\n const key = split[0];\n const strValue = split[1].replace(/\"/gm, \"\");\n const floatValue = parseFloat(strValue);\n const value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: \"\",\n distanceField: null,\n baseLineOffset: 0\n };\n const [info] = rawData.info;\n const [common] = rawData.common;\n const [distanceField] = rawData.distanceField ?? [];\n if (distanceField) {\n font.distanceField = {\n range: parseInt(distanceField.distanceRange, 10),\n type: distanceField.fieldType\n };\n }\n font.fontSize = parseInt(info.size, 10);\n font.fontFamily = info.face;\n font.lineHeight = parseInt(common.lineHeight, 10);\n const page = rawData.page;\n for (let i = 0; i < page.length; i++) {\n font.pages.push({\n id: parseInt(page[i].id, 10) || 0,\n file: page[i].file\n });\n }\n const map = {};\n font.baseLineOffset = font.lineHeight - parseInt(common.base, 10);\n const char = rawData.char;\n for (let i = 0; i < char.length; i++) {\n const charNode = char[i];\n const id = parseInt(charNode.id, 10);\n let letter = charNode.letter ?? charNode.char ?? String.fromCharCode(id);\n if (letter === \"space\")\n letter = \" \";\n map[id] = letter;\n font.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.page, 10) || 0,\n x: parseInt(charNode.x, 10),\n y: parseInt(charNode.y, 10),\n width: parseInt(charNode.width, 10),\n height: parseInt(charNode.height, 10),\n xOffset: parseInt(charNode.xoffset, 10),\n yOffset: parseInt(charNode.yoffset, 10),\n xAdvance: parseInt(charNode.xadvance, 10),\n kerning: {}\n };\n }\n const kerning = rawData.kerning || [];\n for (let i = 0; i < kerning.length; i++) {\n const first = parseInt(kerning[i].first, 10);\n const second = parseInt(kerning[i].second, 10);\n const amount = parseInt(kerning[i].amount, 10);\n font.chars[map[second]].kerning[map[first]] = amount;\n }\n return font;\n }\n};\n\nexport { bitmapFontTextParser };\n//# sourceMappingURL=bitmapFontTextParser.mjs.map\n","\"use strict\";\nconst bitmapFontXMLParser = {\n test(data) {\n const xml = data;\n return typeof xml !== \"string\" && \"getElementsByTagName\" in xml && xml.getElementsByTagName(\"page\").length && xml.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n },\n parse(xml) {\n const data = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: \"\",\n distanceField: null,\n baseLineOffset: 0\n };\n const info = xml.getElementsByTagName(\"info\")[0];\n const common = xml.getElementsByTagName(\"common\")[0];\n const distanceField = xml.getElementsByTagName(\"distanceField\")[0];\n if (distanceField) {\n data.distanceField = {\n type: distanceField.getAttribute(\"fieldType\"),\n range: parseInt(distanceField.getAttribute(\"distanceRange\"), 10)\n };\n }\n const page = xml.getElementsByTagName(\"page\");\n const char = xml.getElementsByTagName(\"char\");\n const kerning = xml.getElementsByTagName(\"kerning\");\n data.fontSize = parseInt(info.getAttribute(\"size\"), 10);\n data.fontFamily = info.getAttribute(\"face\");\n data.lineHeight = parseInt(common.getAttribute(\"lineHeight\"), 10);\n for (let i = 0; i < page.length; i++) {\n data.pages.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n }\n const map = {};\n data.baseLineOffset = data.lineHeight - parseInt(common.getAttribute(\"base\"), 10);\n for (let i = 0; i < char.length; i++) {\n const charNode = char[i];\n const id = parseInt(charNode.getAttribute(\"id\"), 10);\n let letter = charNode.getAttribute(\"letter\") ?? charNode.getAttribute(\"char\") ?? String.fromCharCode(id);\n if (letter === \"space\")\n letter = \" \";\n map[id] = letter;\n data.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.getAttribute(\"page\"), 10) || 0,\n x: parseInt(charNode.getAttribute(\"x\"), 10),\n y: parseInt(charNode.getAttribute(\"y\"), 10),\n width: parseInt(charNode.getAttribute(\"width\"), 10),\n height: parseInt(charNode.getAttribute(\"height\"), 10),\n // render deets..\n xOffset: parseInt(charNode.getAttribute(\"xoffset\"), 10),\n yOffset: parseInt(charNode.getAttribute(\"yoffset\"), 10),\n // + baseLineOffset,\n xAdvance: parseInt(charNode.getAttribute(\"xadvance\"), 10),\n kerning: {}\n };\n }\n for (let i = 0; i < kerning.length; i++) {\n const first = parseInt(kerning[i].getAttribute(\"first\"), 10);\n const second = parseInt(kerning[i].getAttribute(\"second\"), 10);\n const amount = parseInt(kerning[i].getAttribute(\"amount\"), 10);\n data.chars[map[second]].kerning[map[first]] = amount;\n }\n return data;\n }\n};\n\nexport { bitmapFontXMLParser };\n//# sourceMappingURL=bitmapFontXMLParser.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { bitmapFontXMLParser } from './bitmapFontXMLParser.mjs';\n\n\"use strict\";\nconst bitmapFontXMLStringParser = {\n test(data) {\n if (typeof data === \"string\" && data.includes(\"<font>\")) {\n return bitmapFontXMLParser.test(DOMAdapter.get().parseXML(data));\n }\n return false;\n },\n parse(data) {\n return bitmapFontXMLParser.parse(DOMAdapter.get().parseXML(data));\n }\n};\n\nexport { bitmapFontXMLStringParser };\n//# sourceMappingURL=bitmapFontXMLStringParser.mjs.map\n","import { LoaderParserPriority } from '../../../assets/loader/parsers/LoaderParser.mjs';\nimport { copySearchParams } from '../../../assets/utils/copySearchParams.mjs';\nimport { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { path } from '../../../utils/path.mjs';\nimport { BitmapFont } from '../BitmapFont.mjs';\nimport { bitmapFontTextParser } from './bitmapFontTextParser.mjs';\nimport { bitmapFontXMLStringParser } from './bitmapFontXMLStringParser.mjs';\n\n\"use strict\";\nconst validExtensions = [\".xml\", \".fnt\"];\nconst bitmapFontCachePlugin = {\n extension: ExtensionType.CacheParser,\n test: (asset) => asset instanceof BitmapFont,\n getCacheableAssets(keys, asset) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n out[`${asset.fontFamily}-bitmap`] = asset;\n return out;\n }\n};\nconst loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n test(url) {\n return validExtensions.includes(path.extname(url).toLowerCase());\n },\n async testParse(data) {\n return bitmapFontTextParser.test(data) || bitmapFontXMLStringParser.test(data);\n },\n async parse(asset, data, loader) {\n const bitmapFontData = bitmapFontTextParser.test(asset) ? bitmapFontTextParser.parse(asset) : bitmapFontXMLStringParser.parse(asset);\n const { src } = data;\n const { pages } = bitmapFontData;\n const textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n let imagePath = path.join(path.dirname(src), pageFile);\n imagePath = copySearchParams(imagePath, src);\n textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n const bitmapFont = new BitmapFont({\n data: bitmapFontData,\n textures\n }, src);\n return bitmapFont;\n },\n async load(url, _options) {\n const response = await DOMAdapter.get().fetch(url);\n return await response.text();\n },\n async unload(bitmapFont, _resolvedAsset, loader) {\n await Promise.all(bitmapFont.pages.map((page) => loader.unload(page.texture.source._sourceOrigin)));\n bitmapFont.destroy();\n }\n};\n\nexport { bitmapFontCachePlugin, loadBitmapFont };\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","\"use strict\";\nconst localUniformMSDFBit = {\n name: \"local-uniform-msdf-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct LocalUniforms {\n uColor:vec4<f32>,\n uTransformMatrix:mat3x3<f32>,\n uDistance: f32,\n uRound:f32,\n }\n\n @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `\n ),\n end: (\n /* wgsl */\n `\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n struct LocalUniforms {\n uColor:vec4<f32>,\n uTransformMatrix:mat3x3<f32>,\n uDistance: f32\n }\n\n @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n ` \n outColor = vColor * calculateMSDFAlpha(outColor, localUniforms.uDistance);\n `\n )\n }\n};\nconst localUniformMSDFBitGl = {\n name: \"local-uniform-msdf-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= uColor;\n modelMatrix *= uTransformMatrix;\n `\n ),\n end: (\n /* glsl */\n `\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform float uDistance;\n `\n ),\n main: (\n /* glsl */\n ` \n outColor = vColor * calculateMSDFAlpha(outColor, uDistance);\n `\n )\n }\n};\n\nexport { localUniformMSDFBit, localUniformMSDFBitGl };\n//# sourceMappingURL=localUniformMSDFBit.mjs.map\n","\"use strict\";\nconst mSDFBit = {\n name: \"msdf-bit\",\n fragment: {\n header: (\n /* wgsl */\n `\n fn calculateMSDFAlpha(msdfColor:vec4<f32>, distance:f32) -> f32 {\n \n // MSDF\n var median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n\n var screenPxDistance = distance * (median - 0.5);\n var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `\n )\n }\n};\nconst mSDFBitGl = {\n name: \"msdf-bit\",\n fragment: {\n header: (\n /* glsl */\n `\n float calculateMSDFAlpha(vec4 msdfColor, float distance) {\n \n // MSDF\n float median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n \n float screenPxDistance = distance * (median - 0.5);\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n \n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `\n )\n }\n};\n\nexport { mSDFBit, mSDFBitGl };\n//# sourceMappingURL=mSDFBit.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const.mjs';\nimport { compileHighShaderGpuProgram, compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit, colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit, generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { batchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/batchSamplersUniformGroup.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { localUniformMSDFBit, localUniformMSDFBitGl } from './shader-bits/localUniformMSDFBit.mjs';\nimport { mSDFBit, mSDFBitGl } from './shader-bits/mSDFBit.mjs';\n\n\"use strict\";\nclass SdfShader extends Shader {\n constructor() {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uDistance: { value: 4, type: \"f32\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"sdf-shader\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n localUniformMSDFBit,\n mSDFBit,\n roundPixelsBit\n ]\n });\n const glProgram = compileHighShaderGlProgram({\n name: \"sdf-shader\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(MAX_TEXTURES),\n localUniformMSDFBitGl,\n mSDFBitGl,\n roundPixelsBitGl\n ]\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: batchSamplersUniformGroup\n }\n });\n }\n}\n\nexport { SdfShader };\n//# sourceMappingURL=SdfShader.mjs.map\n","import { Cache } from '../../assets/cache/Cache.mjs';\nimport { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { Graphics } from '../graphics/shared/Graphics.mjs';\nimport { SdfShader } from '../text/sdfShader/SdfShader.mjs';\nimport { BitmapFontManager } from './BitmapFontManager.mjs';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout.mjs';\n\n\"use strict\";\nclass BitmapTextPipe {\n constructor(renderer) {\n this._gpuBitmapText = {};\n this._renderer = renderer;\n }\n validateRenderable(bitmapText) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n if (bitmapText._didTextUpdate) {\n bitmapText._didTextUpdate = false;\n this._updateContext(bitmapText, graphicsRenderable);\n }\n return this._renderer.renderPipes.graphics.validateRenderable(graphicsRenderable);\n }\n addRenderable(bitmapText, instructionSet) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n syncWithProxy(bitmapText, graphicsRenderable);\n if (bitmapText._didTextUpdate) {\n bitmapText._didTextUpdate = false;\n this._updateContext(bitmapText, graphicsRenderable);\n }\n this._renderer.renderPipes.graphics.addRenderable(graphicsRenderable, instructionSet);\n if (graphicsRenderable.context.customShader) {\n this._updateDistanceField(bitmapText);\n }\n }\n destroyRenderable(bitmapText) {\n this._destroyRenderableByUid(bitmapText.uid);\n }\n _destroyRenderableByUid(renderableUid) {\n BigPool.return(this._gpuBitmapText[renderableUid]);\n this._gpuBitmapText[renderableUid] = null;\n }\n updateRenderable(bitmapText) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n syncWithProxy(bitmapText, graphicsRenderable);\n this._renderer.renderPipes.graphics.updateRenderable(graphicsRenderable);\n if (graphicsRenderable.context.customShader) {\n this._updateDistanceField(bitmapText);\n }\n }\n _updateContext(bitmapText, proxyGraphics) {\n const { context } = proxyGraphics;\n const bitmapFont = BitmapFontManager.getFont(bitmapText.text, bitmapText._style);\n context.clear();\n if (bitmapFont.distanceField.type !== \"none\") {\n if (!context.customShader) {\n if (!this._sdfShader) {\n this._sdfShader = new SdfShader();\n }\n context.customShader = this._sdfShader;\n }\n }\n const chars = Array.from(bitmapText.text);\n const style = bitmapText._style;\n let currentY = (style._stroke?.width || 0) / 2;\n currentY += bitmapFont.baseLineOffset;\n const bitmapTextLayout = getBitmapTextLayout(chars, style, bitmapFont);\n let index = 0;\n const padding = style.padding;\n const scale = bitmapTextLayout.scale;\n context.translate(\n -bitmapText._anchor._x * bitmapTextLayout.width - padding,\n -bitmapText._anchor._y * (bitmapTextLayout.height + bitmapTextLayout.offsetY) - padding\n ).scale(scale, scale);\n const tint = style._fill.color;\n for (let i = 0; i < bitmapTextLayout.lines.length; i++) {\n const line = bitmapTextLayout.lines[i];\n for (let j = 0; j < line.charPositions.length; j++) {\n const char = chars[index++];\n const charData = bitmapFont.chars[char];\n if (charData?.texture) {\n context.texture(\n charData.texture,\n tint ? tint : \"black\",\n Math.round(line.charPositions[j] + charData.xOffset),\n Math.round(currentY + charData.yOffset)\n );\n }\n }\n currentY += bitmapFont.lineHeight;\n }\n }\n _getGpuBitmapText(bitmapText) {\n return this._gpuBitmapText[bitmapText.uid] || this.initGpuText(bitmapText);\n }\n initGpuText(bitmapText) {\n const proxyRenderable = BigPool.get(Graphics);\n this._gpuBitmapText[bitmapText.uid] = proxyRenderable;\n this._updateContext(bitmapText, proxyRenderable);\n bitmapText.on(\"destroyed\", () => {\n this.destroyRenderable(bitmapText);\n });\n return this._gpuBitmapText[bitmapText.uid];\n }\n _updateDistanceField(bitmapText) {\n const context = this._getGpuBitmapText(bitmapText).context;\n const fontFamily = bitmapText._style.fontFamily;\n const dynamicFont = Cache.get(`${fontFamily}-bitmap`);\n const { a, b, c, d } = bitmapText.groupTransform;\n const dx = Math.sqrt(a * a + b * b);\n const dy = Math.sqrt(c * c + d * d);\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n const fontScale = dynamicFont.baseRenderedFontSize / bitmapText._style.fontSize;\n const resolution = bitmapText.resolution ?? this._renderer.resolution;\n const distance = worldScale * dynamicFont.distanceField.range * (1 / fontScale) * resolution;\n context.customShader.resources.localUniforms.uniforms.uDistance = distance;\n }\n destroy() {\n for (const uid in this._gpuBitmapText) {\n this._destroyRenderableByUid(uid);\n }\n this._gpuBitmapText = null;\n this._sdfShader?.destroy(true);\n this._sdfShader = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBitmapTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"bitmapText\"\n};\nfunction syncWithProxy(container, proxy) {\n proxy.groupTransform = container.groupTransform;\n proxy.groupColorAlpha = container.groupColorAlpha;\n proxy.groupColor = container.groupColor;\n proxy.groupBlendMode = container.groupBlendMode;\n proxy.globalDisplayStatus = container.globalDisplayStatus;\n proxy.groupTransform = container.groupTransform;\n proxy.localDisplayStatus = container.localDisplayStatus;\n proxy.groupAlpha = container.groupAlpha;\n proxy._roundPixels = container._roundPixels;\n}\n\nexport { BitmapTextPipe };\n//# sourceMappingURL=BitmapTextPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { loadBitmapFont, bitmapFontCachePlugin } from './asset/loadBitmapFont.mjs';\nimport { BitmapTextPipe } from './BitmapTextPipe.mjs';\n\n\"use strict\";\nextensions.add(BitmapTextPipe, loadBitmapFont, bitmapFontCachePlugin);\n//# sourceMappingURL=init.mjs.map\n","import { CanvasTextMetrics } from '../../text/canvas/CanvasTextMetrics.mjs';\nimport { HTMLTextRenderData } from '../HTMLTextRenderData.mjs';\n\n\"use strict\";\nlet tempHTMLTextRenderData;\nfunction measureHtmlText(text, style, fontStyleCSS, htmlTextRenderData) {\n htmlTextRenderData = htmlTextRenderData || tempHTMLTextRenderData || (tempHTMLTextRenderData = new HTMLTextRenderData());\n const { domElement, styleElement, svgRoot } = htmlTextRenderData;\n domElement.innerHTML = `<style>${style.cssStyle}</style><div>${text}</div>`;\n domElement.setAttribute(\"style\", \"transform-origin: top left; display: inline-block\");\n if (fontStyleCSS) {\n styleElement.textContent = fontStyleCSS;\n }\n document.body.appendChild(svgRoot);\n const contentBounds = domElement.getBoundingClientRect();\n svgRoot.remove();\n const descenderPadding = CanvasTextMetrics.measureFont(style.fontStyle).descent;\n return {\n width: contentBounds.width,\n height: contentBounds.height + descenderPadding\n };\n}\n\nexport { measureHtmlText };\n//# sourceMappingURL=measureHtmlText.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { updateQuadBounds } from '../../utils/data/updateQuadBounds.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../sprite/BatchableSprite.mjs';\n\n\"use strict\";\nclass HTMLTextPipe {\n constructor(renderer) {\n this._gpuText = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const newKey = htmlText._getKey();\n if (gpuText.textureNeedsUploading) {\n gpuText.textureNeedsUploading = false;\n return true;\n }\n if (gpuText.currentKey !== newKey) {\n return true;\n }\n return false;\n }\n addRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (htmlText._didTextUpdate) {\n this._updateText(htmlText);\n }\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n updateRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (htmlText._didTextUpdate) {\n this._updateText(htmlText);\n }\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n destroyRenderable(htmlText) {\n this._destroyRenderableById(htmlText.uid);\n }\n _destroyRenderableById(htmlTextUid) {\n const gpuText = this._gpuText[htmlTextUid];\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n BigPool.return(gpuText.batchableSprite);\n this._gpuText[htmlTextUid] = null;\n }\n _updateText(htmlText) {\n const newKey = htmlText._getKey();\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.currentKey !== newKey) {\n this._updateGpuText(htmlText).catch((e) => {\n console.error(e);\n });\n }\n htmlText._didTextUpdate = false;\n const padding = htmlText._style.padding;\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n async _updateGpuText(htmlText) {\n htmlText._didTextUpdate = false;\n const gpuText = this._getGpuText(htmlText);\n if (gpuText.generatingTexture)\n return;\n const newKey = htmlText._getKey();\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n gpuText.generatingTexture = true;\n gpuText.currentKey = newKey;\n const resolution = htmlText.resolution ?? this._renderer.resolution;\n const texture = await this._renderer.htmlText.getManagedTexture(\n htmlText.text,\n resolution,\n htmlText._style,\n htmlText._getKey()\n );\n const batchableSprite = gpuText.batchableSprite;\n batchableSprite.texture = gpuText.texture = texture;\n gpuText.generatingTexture = false;\n gpuText.textureNeedsUploading = true;\n htmlText.onViewUpdate();\n const padding = htmlText._style.padding;\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n _getGpuText(htmlText) {\n return this._gpuText[htmlText.uid] || this.initGpuText(htmlText);\n }\n initGpuText(htmlText) {\n const gpuTextData = {\n texture: Texture.EMPTY,\n currentKey: \"--\",\n batchableSprite: BigPool.get(BatchableSprite),\n textureNeedsUploading: false,\n generatingTexture: false\n };\n const batchableSprite = gpuTextData.batchableSprite;\n batchableSprite.renderable = htmlText;\n batchableSprite.texture = Texture.EMPTY;\n batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n batchableSprite.roundPixels = this._renderer._roundPixels | htmlText._roundPixels;\n this._gpuText[htmlText.uid] = gpuTextData;\n htmlText.on(\"destroyed\", () => {\n this.destroyRenderable(htmlText);\n });\n return gpuTextData;\n }\n destroy() {\n for (const i in this._gpuText) {\n this._destroyRenderableById(i);\n }\n this._gpuText = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nHTMLTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"htmlText\"\n};\n\nexport { HTMLTextPipe };\n//# sourceMappingURL=HTMLTextPipe.mjs.map\n","\"use strict\";\nconst nssvg = \"http://www.w3.org/2000/svg\";\nconst nsxhtml = \"http://www.w3.org/1999/xhtml\";\nclass HTMLTextRenderData {\n constructor() {\n this.svgRoot = document.createElementNS(nssvg, \"svg\");\n this.foreignObject = document.createElementNS(nssvg, \"foreignObject\");\n this.domElement = document.createElementNS(nsxhtml, \"div\");\n this.styleElement = document.createElementNS(nsxhtml, \"style\");\n this.image = new Image();\n const { foreignObject, svgRoot, styleElement, domElement } = this;\n foreignObject.setAttribute(\"width\", \"10000\");\n foreignObject.setAttribute(\"height\", \"10000\");\n foreignObject.style.overflow = \"hidden\";\n svgRoot.appendChild(foreignObject);\n foreignObject.appendChild(styleElement);\n foreignObject.appendChild(domElement);\n }\n}\n\nexport { HTMLTextRenderData, nssvg, nsxhtml };\n//# sourceMappingURL=HTMLTextRenderData.mjs.map\n","import { Color } from '../../../color/Color.mjs';\n\n\"use strict\";\nfunction textStyleToCSS(style) {\n const stroke = style._stroke;\n const fill = style._fill;\n const cssStyleString = [\n `color: ${Color.shared.setValue(fill.color).toHex()}`,\n `font-size: ${style.fontSize}px`,\n `font-family: ${style.fontFamily}`,\n `font-weight: ${style.fontWeight}`,\n `font-style: ${style.fontStyle}`,\n `font-variant: ${style.fontVariant}`,\n `letter-spacing: ${style.letterSpacing}px`,\n `text-align: ${style.align}`,\n `padding: ${style.padding}px`,\n `white-space: ${style.whiteSpace === \"pre\" && style.wordWrap ? \"pre-wrap\" : style.whiteSpace}`,\n ...style.lineHeight ? [`line-height: ${style.lineHeight}px`] : [],\n ...style.wordWrap ? [\n `word-wrap: ${style.breakWords ? \"break-all\" : \"break-word\"}`,\n `max-width: ${style.wordWrapWidth}px`\n ] : [],\n ...stroke ? [strokeToCSS(stroke)] : [],\n ...style.dropShadow ? [dropShadowToCSS(style.dropShadow)] : [],\n ...style.cssOverrides\n ].join(\";\");\n const cssStyles = [`div { ${cssStyleString} }`];\n tagStyleToCSS(style.tagStyles, cssStyles);\n return cssStyles.join(\" \");\n}\nfunction dropShadowToCSS(dropShadowStyle) {\n const color = Color.shared.setValue(dropShadowStyle.color).setAlpha(dropShadowStyle.alpha).toHexa();\n const x = Math.round(Math.cos(dropShadowStyle.angle) * dropShadowStyle.distance);\n const y = Math.round(Math.sin(dropShadowStyle.angle) * dropShadowStyle.distance);\n const position = `${x}px ${y}px`;\n if (dropShadowStyle.blur > 0) {\n return `text-shadow: ${position} ${dropShadowStyle.blur}px ${color}`;\n }\n return `text-shadow: ${position} ${color}`;\n}\nfunction strokeToCSS(stroke) {\n return [\n `-webkit-text-stroke-width: ${stroke.width}px`,\n `-webkit-text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n `text-stroke-width: ${stroke.width}px`,\n `text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n \"paint-order: stroke\"\n ].join(\";\");\n}\nconst templates = {\n fontSize: `font-size: {{VALUE}}px`,\n fontFamily: `font-family: {{VALUE}}`,\n fontWeight: `font-weight: {{VALUE}}`,\n fontStyle: `font-style: {{VALUE}}`,\n fontVariant: `font-variant: {{VALUE}}`,\n letterSpacing: `letter-spacing: {{VALUE}}px`,\n align: `text-align: {{VALUE}}`,\n padding: `padding: {{VALUE}}px`,\n whiteSpace: `white-space: {{VALUE}}`,\n lineHeight: `line-height: {{VALUE}}px`,\n wordWrapWidth: `max-width: {{VALUE}}px`\n};\nconst transform = {\n fill: (value) => `color: ${Color.shared.setValue(value).toHex()}`,\n breakWords: (value) => `word-wrap: ${value ? \"break-all\" : \"break-word\"}`,\n stroke: strokeToCSS,\n dropShadow: dropShadowToCSS\n};\nfunction tagStyleToCSS(tagStyles, out) {\n for (const i in tagStyles) {\n const tagStyle = tagStyles[i];\n const cssTagStyle = [];\n for (const j in tagStyle) {\n if (transform[j]) {\n cssTagStyle.push(transform[j](tagStyle[j]));\n } else if (templates[j]) {\n cssTagStyle.push(templates[j].replace(\"{{VALUE}}\", tagStyle[j]));\n }\n }\n out.push(`${i} { ${cssTagStyle.join(\";\")} }`);\n }\n}\n\nexport { textStyleToCSS };\n//# sourceMappingURL=textStyleToCSS.mjs.map\n","import { warn } from '../../utils/logging/warn.mjs';\nimport { TextStyle } from '../text/TextStyle.mjs';\nimport { generateTextStyleKey } from '../text/utils/generateTextStyleKey.mjs';\nimport { textStyleToCSS } from './utils/textStyleToCSS.mjs';\n\n\"use strict\";\nclass HTMLTextStyle extends TextStyle {\n constructor(options = {}) {\n super(options);\n this._cssOverrides = [];\n this.cssOverrides ?? (this.cssOverrides = options.cssOverrides);\n this.tagStyles = options.tagStyles ?? {};\n }\n /** List of style overrides that will be applied to the HTML text. */\n set cssOverrides(value) {\n this._cssOverrides = value instanceof Array ? value : [value];\n this.update();\n }\n get cssOverrides() {\n return this._cssOverrides;\n }\n _generateKey() {\n this._styleKey = generateTextStyleKey(this) + this._cssOverrides.join(\"-\");\n return this._styleKey;\n }\n update() {\n this._cssStyle = null;\n super.update();\n }\n /**\n * Creates a new HTMLTextStyle object with the same values as this one.\n * @returns New cloned HTMLTextStyle object\n */\n clone() {\n return new HTMLTextStyle({\n align: this.align,\n breakWords: this.breakWords,\n dropShadow: this.dropShadow,\n fill: this._fill,\n fontFamily: this.fontFamily,\n fontSize: this.fontSize,\n fontStyle: this.fontStyle,\n fontVariant: this.fontVariant,\n fontWeight: this.fontWeight,\n letterSpacing: this.letterSpacing,\n lineHeight: this.lineHeight,\n padding: this.padding,\n stroke: this._stroke,\n whiteSpace: this.whiteSpace,\n wordWrap: this.wordWrap,\n wordWrapWidth: this.wordWrapWidth,\n cssOverrides: this.cssOverrides\n });\n }\n get cssStyle() {\n if (!this._cssStyle) {\n this._cssStyle = textStyleToCSS(this);\n }\n return this._cssStyle;\n }\n /**\n * Add a style override, this can be any CSS property\n * it will override any built-in style. This is the\n * property and the value as a string (e.g., `color: red`).\n * This will override any other internal style.\n * @param {string} value - CSS style(s) to add.\n * @example\n * style.addOverride('background-color: red');\n */\n addOverride(...value) {\n const toAdd = value.filter((v) => !this.cssOverrides.includes(v));\n if (toAdd.length > 0) {\n this.cssOverrides.push(...toAdd);\n this.update();\n }\n }\n /**\n * Remove any overrides that match the value.\n * @param {string} value - CSS style to remove.\n * @example\n * style.removeOverride('background-color: red');\n */\n removeOverride(...value) {\n const toRemove = value.filter((v) => this.cssOverrides.includes(v));\n if (toRemove.length > 0) {\n this.cssOverrides = this.cssOverrides.filter((v) => !toRemove.includes(v));\n this.update();\n }\n }\n set fill(value) {\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n warn(\"[HTMLTextStyle] only color fill is not supported by HTMLText\");\n }\n super.fill = value;\n }\n set stroke(value) {\n if (value && typeof value !== \"string\" && typeof value !== \"number\") {\n warn(\"[HTMLTextStyle] only color stroke is not supported by HTMLText\");\n }\n super.stroke = value;\n }\n}\n\nexport { HTMLTextStyle };\n//# sourceMappingURL=HtmlTextStyle.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\n\n\"use strict\";\nasync function loadFontAsBase64(url) {\n const response = await DOMAdapter.get().fetch(url);\n const blob = await response.blob();\n const reader = new FileReader();\n const dataSrc = await new Promise((resolve, reject) => {\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n return dataSrc;\n}\n\nexport { loadFontAsBase64 };\n//# sourceMappingURL=loadFontAsBase64.mjs.map\n","import { loadFontAsBase64 } from './loadFontAsBase64.mjs';\n\n\"use strict\";\nasync function loadFontCSS(style, url) {\n const dataSrc = await loadFontAsBase64(url);\n return `@font-face {\n font-family: \"${style.fontFamily}\";\n src: url('${dataSrc}');\n font-weight: ${style.fontWeight};\n font-style: ${style.fontStyle};\n }`;\n}\n\nexport { loadFontCSS };\n//# sourceMappingURL=loadFontCSS.mjs.map\n","import { Cache } from '../../../assets/cache/Cache.mjs';\nimport { loadFontCSS } from './loadFontCSS.mjs';\n\n\"use strict\";\nconst FontStylePromiseCache = /* @__PURE__ */ new Map();\nasync function getFontCss(fontFamilies, style, defaultOptions) {\n const fontPromises = fontFamilies.filter((fontFamily) => Cache.has(`${fontFamily}-and-url`)).map((fontFamily, i) => {\n if (!FontStylePromiseCache.has(fontFamily)) {\n const { url } = Cache.get(`${fontFamily}-and-url`);\n if (i === 0) {\n FontStylePromiseCache.set(fontFamily, loadFontCSS(style, url));\n } else {\n FontStylePromiseCache.set(fontFamily, loadFontCSS({\n fontWeight: defaultOptions.fontWeight,\n fontStyle: defaultOptions.fontStyle,\n fontFamily\n }, url));\n }\n }\n return FontStylePromiseCache.get(fontFamily);\n });\n return (await Promise.all(fontPromises)).join(\"\\n\");\n}\n\nexport { FontStylePromiseCache, getFontCss };\n//# sourceMappingURL=getFontCss.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { RendererType } from '../../rendering/renderers/types.mjs';\nimport { isSafari } from '../../utils/browser/isSafari.mjs';\nimport { warn } from '../../utils/logging/warn.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { getPo2TextureFromSource } from '../text/utils/getPo2TextureFromSource.mjs';\nimport { HTMLTextRenderData } from './HTMLTextRenderData.mjs';\nimport { HTMLTextStyle } from './HtmlTextStyle.mjs';\nimport { extractFontFamilies } from './utils/extractFontFamilies.mjs';\nimport { getFontCss } from './utils/getFontCss.mjs';\nimport { getSVGUrl } from './utils/getSVGUrl.mjs';\nimport { getTemporaryCanvasFromImage } from './utils/getTemporaryCanvasFromImage.mjs';\nimport { loadSVGImage } from './utils/loadSVGImage.mjs';\nimport { measureHtmlText } from './utils/measureHtmlText.mjs';\n\n\"use strict\";\nclass HTMLTextSystem {\n constructor(renderer) {\n this._activeTextures = {};\n this._renderer = renderer;\n this._createCanvas = renderer.type === RendererType.WEBGPU;\n }\n getTexture(options) {\n return this._buildTexturePromise(\n options.text,\n options.resolution,\n options.style\n );\n }\n getManagedTexture(text, resolution, style, textKey) {\n if (this._activeTextures[textKey]) {\n this._increaseReferenceCount(textKey);\n return this._activeTextures[textKey].promise;\n }\n const promise = this._buildTexturePromise(text, resolution, style).then((texture) => {\n this._activeTextures[textKey].texture = texture;\n return texture;\n });\n this._activeTextures[textKey] = {\n texture: null,\n promise,\n usageCount: 1\n };\n return promise;\n }\n async _buildTexturePromise(text, resolution, style) {\n const htmlTextData = BigPool.get(HTMLTextRenderData);\n const fontFamilies = extractFontFamilies(text, style);\n const fontCSS = await getFontCss(\n fontFamilies,\n style,\n HTMLTextStyle.defaultTextStyle\n );\n const measured = measureHtmlText(text, style, fontCSS, htmlTextData);\n const width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n const height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n const image = htmlTextData.image;\n image.width = width | 0;\n image.height = height | 0;\n const svgURL = getSVGUrl(text, style, resolution, fontCSS, htmlTextData);\n await loadSVGImage(image, svgURL, isSafari() && fontFamilies.length > 0);\n let resource = image;\n if (this._createCanvas) {\n resource = getTemporaryCanvasFromImage(image, resolution);\n }\n const texture = getPo2TextureFromSource(resource, image.width, image.height, resolution);\n if (this._createCanvas) {\n this._renderer.texture.initSource(texture.source);\n }\n BigPool.return(htmlTextData);\n return texture;\n }\n _increaseReferenceCount(textKey) {\n this._activeTextures[textKey].usageCount++;\n }\n decreaseReferenceCount(textKey) {\n const activeTexture = this._activeTextures[textKey];\n if (!activeTexture)\n return;\n activeTexture.usageCount--;\n if (activeTexture.usageCount === 0) {\n if (activeTexture.texture) {\n this._cleanUp(activeTexture);\n } else {\n activeTexture.promise.then((texture) => {\n activeTexture.texture = texture;\n this._cleanUp(activeTexture);\n }).catch(() => {\n warn(\"HTMLTextSystem: Failed to clean texture\");\n });\n }\n this._activeTextures[textKey] = null;\n }\n }\n _cleanUp(activeTexture) {\n TexturePool.returnTexture(activeTexture.texture);\n activeTexture.texture.source.resource = null;\n activeTexture.texture.source.uploadMethodId = \"unknown\";\n }\n getReferenceCount(textKey) {\n return this._activeTextures[textKey].usageCount;\n }\n destroy() {\n this._activeTextures = null;\n }\n}\n/** @ignore */\nHTMLTextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"htmlText\"\n};\nHTMLTextSystem.defaultFontOptions = {\n fontFamily: \"Arial\",\n fontStyle: \"normal\",\n fontWeight: \"normal\"\n};\n\nexport { HTMLTextSystem };\n//# sourceMappingURL=HTMLTextSystem.mjs.map\n","\"use strict\";\nfunction loadSVGImage(image, url, delay) {\n return new Promise(async (resolve) => {\n if (delay) {\n await new Promise((resolve2) => setTimeout(resolve2, 100));\n }\n image.onload = () => {\n resolve();\n };\n image.src = `data:image/svg+xml;charset=utf8,${encodeURIComponent(url)}`;\n image.crossOrigin = \"anonymous\";\n });\n}\n\nexport { loadSVGImage };\n//# sourceMappingURL=loadSVGImage.mjs.map\n","\"use strict\";\nfunction extractFontFamilies(text, style) {\n const fontFamily = style.fontFamily;\n const fontFamilies = [];\n const dedupe = {};\n const regex = /font-family:([^;\"\\s]+)/g;\n const matches = text.match(regex);\n function addFontFamily(fontFamily2) {\n if (!dedupe[fontFamily2]) {\n fontFamilies.push(fontFamily2);\n dedupe[fontFamily2] = true;\n }\n }\n if (Array.isArray(fontFamily)) {\n for (let i = 0; i < fontFamily.length; i++) {\n addFontFamily(fontFamily[i]);\n }\n } else {\n addFontFamily(fontFamily);\n }\n if (matches) {\n matches.forEach((match) => {\n const fontFamily2 = match.split(\":\")[1].trim();\n addFontFamily(fontFamily2);\n });\n }\n for (const i in style.tagStyles) {\n const fontFamily2 = style.tagStyles[i].fontFamily;\n addFontFamily(fontFamily2);\n }\n return fontFamilies;\n}\n\nexport { extractFontFamilies };\n//# sourceMappingURL=extractFontFamilies.mjs.map\n","\"use strict\";\nfunction getSVGUrl(text, style, resolution, fontCSS, htmlTextData) {\n const { domElement, styleElement, svgRoot } = htmlTextData;\n domElement.innerHTML = `<style>${style.cssStyle}</style><div>${text}</div>`;\n domElement.setAttribute(\"style\", `transform: scale(${resolution});transform-origin: top left; display: inline-block`);\n styleElement.textContent = fontCSS;\n const { width, height } = htmlTextData.image;\n svgRoot.setAttribute(\"width\", width.toString());\n svgRoot.setAttribute(\"height\", height.toString());\n return new XMLSerializer().serializeToString(svgRoot);\n}\n\nexport { getSVGUrl };\n//# sourceMappingURL=getSVGUrl.mjs.map\n","import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nfunction isSafari() {\n const { userAgent } = DOMAdapter.get().getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n}\n\nexport { isSafari };\n//# sourceMappingURL=isSafari.mjs.map\n","import { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool.mjs';\n\n\"use strict\";\nfunction getTemporaryCanvasFromImage(image, resolution) {\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(\n image.width,\n image.height,\n resolution\n );\n const { context } = canvasAndContext;\n context.clearRect(0, 0, image.width, image.height);\n context.drawImage(image, 0, 0);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return canvasAndContext.canvas;\n}\n\nexport { getTemporaryCanvasFromImage };\n//# sourceMappingURL=getTemporaryCanvasFromImage.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { HTMLTextPipe } from './HTMLTextPipe.mjs';\nimport { HTMLTextSystem } from './HTMLTextSystem.mjs';\n\n\"use strict\";\nextensions.add(HTMLTextSystem);\nextensions.add(HTMLTextPipe);\n//# sourceMappingURL=init.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { FillGradient } from '../../../graphics/shared/fill/FillGradient.mjs';\nimport { FillPattern } from '../../../graphics/shared/fill/FillPattern.mjs';\n\n\"use strict\";\nfunction getCanvasFillStyle(fillStyle, context) {\n if (fillStyle.texture === Texture.WHITE && !fillStyle.fill) {\n return Color.shared.setValue(fillStyle.color).toHex();\n } else if (!fillStyle.fill) {\n const pattern = context.createPattern(fillStyle.texture.source.resource, \"repeat\");\n const tempMatrix = fillStyle.matrix.copyTo(Matrix.shared);\n tempMatrix.scale(fillStyle.texture.frame.width, fillStyle.texture.frame.height);\n pattern.setTransform(tempMatrix);\n return pattern;\n } else if (fillStyle.fill instanceof FillPattern) {\n const fillPattern = fillStyle.fill;\n const pattern = context.createPattern(fillPattern.texture.source.resource, \"repeat\");\n const tempMatrix = fillPattern.transform.copyTo(Matrix.shared);\n tempMatrix.scale(\n fillPattern.texture.frame.width,\n fillPattern.texture.frame.height\n );\n pattern.setTransform(tempMatrix);\n return pattern;\n } else if (fillStyle.fill instanceof FillGradient) {\n const fillGradient = fillStyle.fill;\n if (fillGradient.type === \"linear\") {\n const gradient = context.createLinearGradient(\n fillGradient.x0,\n fillGradient.y0,\n fillGradient.x1,\n fillGradient.y1\n );\n fillGradient.gradientStops.forEach((stop) => {\n gradient.addColorStop(stop.offset, Color.shared.setValue(stop.color).toHex());\n });\n return gradient;\n }\n }\n warn(\"FillStyle not recognised\", fillStyle);\n return \"red\";\n}\n\nexport { getCanvasFillStyle };\n//# sourceMappingURL=getCanvasFillStyle.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { updateQuadBounds } from '../../../utils/data/updateQuadBounds.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../../sprite/BatchableSprite.mjs';\n\n\"use strict\";\nclass CanvasTextPipe {\n constructor(renderer) {\n this._gpuText = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(text) {\n const gpuText = this._getGpuText(text);\n const newKey = text._getKey();\n if (gpuText.currentKey !== newKey) {\n const resolution = text.resolution ?? this._renderer.resolution;\n const { width, height } = this._renderer.canvasText.getTextureSize(\n text.text,\n resolution,\n text._style\n );\n if (\n // is only being used by this text:\n this._renderer.canvasText.getReferenceCount(gpuText.currentKey) === 1 && width === gpuText.texture._source.width && height === gpuText.texture._source.height\n ) {\n return false;\n }\n return true;\n }\n return false;\n }\n addRenderable(text, _instructionSet) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (text._didTextUpdate) {\n this._updateText(text);\n }\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n updateRenderable(text) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (text._didTextUpdate) {\n this._updateText(text);\n }\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n destroyRenderable(text) {\n this._destroyRenderableById(text.uid);\n }\n _destroyRenderableById(textUid) {\n const gpuText = this._gpuText[textUid];\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n BigPool.return(gpuText.batchableSprite);\n this._gpuText[textUid] = null;\n }\n _updateText(text) {\n const newKey = text._getKey();\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.currentKey !== newKey) {\n this._updateGpuText(text);\n }\n text._didTextUpdate = false;\n const padding = text._style.padding;\n updateQuadBounds(batchableSprite.bounds, text._anchor, batchableSprite.texture, padding);\n }\n _updateGpuText(text) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.texture) {\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n }\n gpuText.texture = batchableSprite.texture = this._renderer.canvasText.getManagedTexture(text);\n gpuText.currentKey = text._getKey();\n batchableSprite.texture = gpuText.texture;\n }\n _getGpuText(text) {\n return this._gpuText[text.uid] || this.initGpuText(text);\n }\n initGpuText(text) {\n const gpuTextData = {\n texture: null,\n currentKey: \"--\",\n batchableSprite: BigPool.get(BatchableSprite)\n };\n gpuTextData.batchableSprite.renderable = text;\n gpuTextData.batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n gpuTextData.batchableSprite.roundPixels = this._renderer._roundPixels | text._roundPixels;\n this._gpuText[text.uid] = gpuTextData;\n this._updateText(text);\n text.on(\"destroyed\", () => {\n this.destroyRenderable(text);\n });\n return gpuTextData;\n }\n destroy() {\n for (const i in this._gpuText) {\n this._destroyRenderableById(i);\n }\n this._gpuText = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nCanvasTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"text\"\n};\n\nexport { CanvasTextPipe };\n//# sourceMappingURL=CanvasTextPipe.mjs.map\n","import { Rectangle } from '../../maths/shapes/Rectangle.mjs';\n\n\"use strict\";\nfunction checkRow(data, width, y) {\n for (let x = 0, index = 4 * y * width; x < width; ++x, index += 4) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction checkColumn(data, width, x, top, bottom) {\n const stride = 4 * width;\n for (let y = top, index = top * stride + 4 * x; y <= bottom; ++y, index += stride) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction getCanvasBoundingBox(canvas, resolution = 1) {\n const { width, height } = canvas;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n if (context === null) {\n throw new TypeError(\"Failed to get canvas 2D context\");\n }\n const imageData = context.getImageData(0, 0, width, height);\n const data = imageData.data;\n let left = 0;\n let top = 0;\n let right = width - 1;\n let bottom = height - 1;\n while (top < height && checkRow(data, width, top))\n ++top;\n if (top === height)\n return Rectangle.EMPTY;\n while (checkRow(data, width, bottom))\n --bottom;\n while (checkColumn(data, width, left, top, bottom))\n ++left;\n while (checkColumn(data, width, right, top, bottom))\n --right;\n ++right;\n ++bottom;\n return new Rectangle(left / resolution, top / resolution, (right - left) / resolution, (bottom - top) / resolution);\n}\n\nexport { getCanvasBoundingBox };\n//# sourceMappingURL=getCanvasBoundingBox.mjs.map\n","import { Color } from '../../../color/Color.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { nextPow2 } from '../../../maths/misc/pow2.mjs';\nimport { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool.mjs';\nimport { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { getCanvasBoundingBox } from '../../../utils/canvas/getCanvasBoundingBox.mjs';\nimport { deprecation } from '../../../utils/logging/deprecation.mjs';\nimport { TextStyle } from '../TextStyle.mjs';\nimport { getPo2TextureFromSource } from '../utils/getPo2TextureFromSource.mjs';\nimport { CanvasTextMetrics } from './CanvasTextMetrics.mjs';\nimport { fontStringFromTextStyle } from './utils/fontStringFromTextStyle.mjs';\nimport { getCanvasFillStyle } from './utils/getCanvasFillStyle.mjs';\n\n\"use strict\";\nclass CanvasTextSystem {\n constructor(_renderer) {\n this._activeTextures = {};\n this._renderer = _renderer;\n }\n getTextureSize(text, resolution, style) {\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n let width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n let height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n width = Math.ceil(width - 1e-6);\n height = Math.ceil(height - 1e-6);\n width = nextPow2(width);\n height = nextPow2(height);\n return { width, height };\n }\n getTexture(options, resolution, style, _textKey) {\n if (typeof options === \"string\") {\n deprecation(\"8.0.0\", \"CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments\");\n options = {\n text: options,\n style,\n resolution\n };\n }\n if (!(options.style instanceof TextStyle)) {\n options.style = new TextStyle(options.style);\n }\n const { texture, canvasAndContext } = this.createTextureAndCanvas(\n options\n );\n this._renderer.texture.initSource(texture._source);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return texture;\n }\n createTextureAndCanvas(options) {\n const { text, style } = options;\n const resolution = options.resolution ?? this._renderer.resolution;\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n const width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n const height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(width, height);\n const { canvas } = canvasAndContext;\n this.renderTextToCanvas(text, style, resolution, canvasAndContext);\n const texture = getPo2TextureFromSource(canvas, width, height, resolution);\n if (style.trim) {\n const trimmed = getCanvasBoundingBox(canvas, resolution);\n texture.frame.copyFrom(trimmed);\n texture.updateUvs();\n }\n return { texture, canvasAndContext };\n }\n getManagedTexture(text) {\n const textKey = text._getKey();\n if (this._activeTextures[textKey]) {\n this._increaseReferenceCount(textKey);\n return this._activeTextures[textKey].texture;\n }\n const { texture, canvasAndContext } = this.createTextureAndCanvas(text);\n this._activeTextures[textKey] = {\n canvasAndContext,\n texture,\n usageCount: 1\n };\n return texture;\n }\n _increaseReferenceCount(textKey) {\n this._activeTextures[textKey].usageCount++;\n }\n decreaseReferenceCount(textKey) {\n const activeTexture = this._activeTextures[textKey];\n activeTexture.usageCount--;\n if (activeTexture.usageCount === 0) {\n CanvasPool.returnCanvasAndContext(activeTexture.canvasAndContext);\n TexturePool.returnTexture(activeTexture.texture);\n const source = activeTexture.texture.source;\n source.resource = null;\n source.uploadMethodId = \"unknown\";\n source.alphaMode = \"no-premultiply-alpha\";\n this._activeTextures[textKey] = null;\n }\n }\n getReferenceCount(textKey) {\n return this._activeTextures[textKey].usageCount;\n }\n /**\n * Renders text to its canvas, and updates its texture.\n *\n * By default this is used internally to ensure the texture is correct before rendering,\n * but it can be used called externally, for example from this class to 'pre-generate' the texture from a piece of text,\n * and then shared across multiple Sprites.\n * @param text\n * @param style\n * @param resolution\n * @param canvasAndContext\n */\n renderTextToCanvas(text, style, resolution, canvasAndContext) {\n const { canvas, context } = canvasAndContext;\n const font = fontStringFromTextStyle(style);\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n const height = canvas.height;\n context.resetTransform();\n context.scale(resolution, resolution);\n const padding = style.padding * 2;\n context.clearRect(0, 0, measured.width + 4 + padding, measured.height + 4 + padding);\n if (style._stroke?.width) {\n const strokeStyle = style._stroke;\n context.lineWidth = strokeStyle.width;\n context.miterLimit = strokeStyle.miterLimit;\n context.lineJoin = strokeStyle.join;\n context.lineCap = strokeStyle.cap;\n }\n context.font = font;\n let linePositionX;\n let linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0;\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0;\n const dsOffsetShadow = dsOffsetText * resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\";\n context.strokeStyle = \"black\";\n const shadowOptions = style.dropShadow;\n const dropShadowColor = shadowOptions.color;\n const dropShadowAlpha = shadowOptions.alpha;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(dropShadowAlpha).toRgbaString();\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance + dsOffsetShadow;\n } else {\n context.globalAlpha = style._fill?.alpha ?? 1;\n context.fillStyle = style._fill ? getCanvasFillStyle(style._fill, context) : null;\n if (style._stroke?.width) {\n context.strokeStyle = getCanvasFillStyle(style._stroke, context);\n }\n context.shadowColor = \"black\";\n }\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n if (lineHeight - fontProperties.fontSize < 0) {\n linePositionYShift = 0;\n }\n const strokeWidth = style._stroke?.width ?? 0;\n for (let i2 = 0; i2 < lines.length; i2++) {\n linePositionX = strokeWidth / 2;\n linePositionY = strokeWidth / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift;\n if (style.align === \"right\") {\n linePositionX += maxLineWidth - lineWidths[i2];\n } else if (style.align === \"center\") {\n linePositionX += (maxLineWidth - lineWidths[i2]) / 2;\n }\n if (style._stroke?.width) {\n this._drawLetterSpacing(\n lines[i2],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText,\n true\n );\n }\n if (style._fill !== void 0) {\n this._drawLetterSpacing(\n lines[i2],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText\n );\n }\n }\n }\n }\n /**\n * Render the text with letter-spacing.\n * @param text - The text to draw\n * @param style\n * @param canvasAndContext\n * @param x - Horizontal position to draw the text\n * @param y - Vertical position to draw the text\n * @param isStroke - Is this drawing for the outside stroke of the\n * text? If not, it's for the inside fill\n */\n _drawLetterSpacing(text, style, canvasAndContext, x, y, isStroke = false) {\n const { context } = canvasAndContext;\n const letterSpacing = style.letterSpacing;\n let useExperimentalLetterSpacing = false;\n if (CanvasTextMetrics.experimentalLetterSpacingSupported) {\n if (CanvasTextMetrics.experimentalLetterSpacing) {\n context.letterSpacing = `${letterSpacing}px`;\n context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n } else {\n context.letterSpacing = \"0px\";\n context.textLetterSpacing = \"0px\";\n }\n }\n if (letterSpacing === 0 || useExperimentalLetterSpacing) {\n if (isStroke) {\n context.strokeText(text, x, y);\n } else {\n context.fillText(text, x, y);\n }\n return;\n }\n let currentPosition = x;\n const stringArray = CanvasTextMetrics.graphemeSegmenter(text);\n let previousWidth = context.measureText(text).width;\n let currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n if (isStroke) {\n context.strokeText(currentChar, currentPosition, y);\n } else {\n context.fillText(currentChar, currentPosition, y);\n }\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j) {\n textStr += stringArray[j];\n }\n currentWidth = context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n destroy() {\n this._activeTextures = null;\n }\n}\n/** @ignore */\nCanvasTextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"canvasText\"\n};\n\nexport { CanvasTextSystem };\n//# sourceMappingURL=CanvasTextSystem.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { CanvasTextPipe } from './canvas/CanvasTextPipe.mjs';\nimport { CanvasTextSystem } from './canvas/CanvasTextSystem.mjs';\n\n\"use strict\";\nextensions.add(CanvasTextSystem);\nextensions.add(CanvasTextPipe);\n//# sourceMappingURL=init.mjs.map\n","import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { Bounds } from '../../container/bounds/Bounds.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nfunction getPo2TextureFromSource(image, width, height, resolution) {\n const bounds = tempBounds;\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = image.width / resolution | 0;\n bounds.maxY = image.height / resolution | 0;\n const texture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n false\n );\n texture.source.uploadMethodId = \"image\";\n texture.source.resource = image;\n texture.source.alphaMode = \"premultiply-alpha-on-upload\";\n texture.frame.width = width / resolution;\n texture.frame.height = height / resolution;\n texture.source.emit(\"update\", texture.source);\n texture.updateUvs();\n return texture;\n}\n\nexport { getPo2TextureFromSource };\n//# sourceMappingURL=getPo2TextureFromSource.mjs.map\n"],"names":["Object","globalThis","requestAnimationFrame","cancelAnimationFrame","Float32Array","Uint32Array","t","Math","o","f","s","Int32Array","r","i","c","arguments","Array","Error","String","m","parseInt","parseFloat","isNaN","Promise","e","console","document","Image","FileReader","F","Map","h","XMLSerializer","setTimeout","encodeURIComponent","TypeError","d","l"],"mappings":"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"}
1
+ {"version":3,"file":"static/js/async/856.379e0ce3.js","sources":["../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/ResizePlugin.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/TickerPlugin.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/app/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getFastGlobalBounds.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/FilterSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/container/bounds/getRenderableBounds.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/filters/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gl/shader/batchSamplersUniformGroup.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/shared/GraphicsPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/BatchableMesh.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/shared/MeshGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh-plane/PlaneGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/NineSliceSpritePipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-nine-slice/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/TilingSpriteShader.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/shader/tilingBit.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/QuadGeometry.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/TilingSpritePipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setUvs.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/setPositions.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/utils/applyMatrix.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/sprite-tiling/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/AbstractBitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/utils/resolveCharacters.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/DynamicBitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/utils/getBitmapTextLayout.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFontManager.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontTextParser.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLParser.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/bitmapFontXMLStringParser.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/asset/loadBitmapFont.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/localUniformMSDFBit.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/shader-bits/mSDFBit.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/sdfShader/SdfShader.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/BitmapTextPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-bitmap/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/measureHtmlText.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextRenderData.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/textStyleToCSS.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HtmlTextStyle.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontAsBase64.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadFontCSS.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getFontCss.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/HTMLTextSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/loadSVGImage.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/extractFontFamilies.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getSVGUrl.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/browser/isSafari.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/utils/getTemporaryCanvasFromImage.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text-html/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/utils/getCanvasFillStyle.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextPipe.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/utils/canvas/getCanvasBoundingBox.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/canvas/CanvasTextSystem.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/init.mjs","../../../../../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/text/utils/getPo2TextureFromSource.mjs"],"sourcesContent":["import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass ResizePlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n Object.defineProperty(\n this,\n \"resizeTo\",\n /**\n * The HTML element or window to automatically resize the\n * renderer's view element to match width and height.\n * @member {Window|HTMLElement}\n * @name resizeTo\n * @memberof app.Application#\n */\n {\n set(dom) {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._resizeTo = dom;\n if (dom) {\n globalThis.addEventListener(\"resize\", this.queueResize);\n this.resize();\n }\n },\n get() {\n return this._resizeTo;\n }\n }\n );\n this.queueResize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n this._resizeId = requestAnimationFrame(() => this.resize());\n };\n this._cancelResize = () => {\n if (this._resizeId) {\n cancelAnimationFrame(this._resizeId);\n this._resizeId = null;\n }\n };\n this.resize = () => {\n if (!this._resizeTo) {\n return;\n }\n this._cancelResize();\n let width;\n let height;\n if (this._resizeTo === globalThis.window) {\n width = globalThis.innerWidth;\n height = globalThis.innerHeight;\n } else {\n const { clientWidth, clientHeight } = this._resizeTo;\n width = clientWidth;\n height = clientHeight;\n }\n this.renderer.resize(width, height);\n this.render();\n };\n this._resizeId = null;\n this._resizeTo = null;\n this.resizeTo = options.resizeTo || null;\n }\n /**\n * Clean up the ticker, scoped to application\n * @static\n * @private\n */\n static destroy() {\n globalThis.removeEventListener(\"resize\", this.queueResize);\n this._cancelResize();\n this._cancelResize = null;\n this.queueResize = null;\n this.resizeTo = null;\n this.resize = null;\n }\n}\n/** @ignore */\nResizePlugin.extension = ExtensionType.Application;\n\nexport { ResizePlugin };\n//# sourceMappingURL=ResizePlugin.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { UPDATE_PRIORITY } from '../ticker/const.mjs';\nimport { Ticker } from '../ticker/Ticker.mjs';\n\n\"use strict\";\nclass TickerPlugin {\n /**\n * Initialize the plugin with scope of application instance\n * @static\n * @private\n * @param {object} [options] - See application options\n */\n static init(options) {\n options = Object.assign({\n autoStart: true,\n sharedTicker: false\n }, options);\n Object.defineProperty(\n this,\n \"ticker\",\n {\n set(ticker) {\n if (this._ticker) {\n this._ticker.remove(this.render, this);\n }\n this._ticker = ticker;\n if (ticker) {\n ticker.add(this.render, this, UPDATE_PRIORITY.LOW);\n }\n },\n get() {\n return this._ticker;\n }\n }\n );\n this.stop = () => {\n this._ticker.stop();\n };\n this.start = () => {\n this._ticker.start();\n };\n this._ticker = null;\n this.ticker = options.sharedTicker ? Ticker.shared : new Ticker();\n if (options.autoStart) {\n this.start();\n }\n }\n /**\n * Clean up the ticker, scoped to application.\n * @static\n * @private\n */\n static destroy() {\n if (this._ticker) {\n const oldTicker = this._ticker;\n this.ticker = null;\n oldTicker.destroy();\n }\n }\n}\n/** @ignore */\nTickerPlugin.extension = ExtensionType.Application;\n\nexport { TickerPlugin };\n//# sourceMappingURL=TickerPlugin.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { ResizePlugin } from './ResizePlugin.mjs';\nimport { TickerPlugin } from './TickerPlugin.mjs';\n\n\"use strict\";\nextensions.add(ResizePlugin);\nextensions.add(TickerPlugin);\n//# sourceMappingURL=init.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\n\n\"use strict\";\nclass FilterPipe {\n constructor(renderer) {\n this._renderer = renderer;\n }\n push(filterEffect, container, instructionSet) {\n const renderPipes = this._renderer.renderPipes;\n renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n canBundle: false,\n action: \"pushFilter\",\n container,\n filterEffect\n });\n }\n pop(_filterEffect, _container, instructionSet) {\n this._renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"filter\",\n action: \"popFilter\",\n canBundle: false\n });\n }\n execute(instruction) {\n if (instruction.action === \"pushFilter\") {\n this._renderer.filter.push(instruction);\n } else if (instruction.action === \"popFilter\") {\n this._renderer.filter.pop();\n }\n }\n destroy() {\n this._renderer = null;\n }\n}\nFilterPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"filter\"\n};\n\nexport { FilterPipe };\n//# sourceMappingURL=FilterPipe.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { boundsPool } from './utils/matrixAndBoundsPool.mjs';\n\n\"use strict\";\nconst tempMatrix = new Matrix();\nfunction getFastGlobalBounds(target, bounds) {\n bounds.clear();\n _getGlobalBoundsRecursive(target, bounds);\n if (!bounds.isValid) {\n bounds.set(0, 0, 0, 0);\n }\n if (!target.isRenderGroupRoot) {\n bounds.applyMatrix(target.renderGroup.worldTransform);\n } else {\n bounds.applyMatrix(target.renderGroup.localTransform);\n }\n return bounds;\n}\nfunction _getGlobalBoundsRecursive(target, bounds) {\n if (target.localDisplayStatus !== 7 || !target.measurable) {\n return;\n }\n const manageEffects = !!target.effects.length;\n let localBounds = bounds;\n if (target.isRenderGroupRoot || manageEffects) {\n localBounds = boundsPool.get().clear();\n }\n if (target.boundsArea) {\n bounds.addRect(target.boundsArea, target.worldTransform);\n } else {\n if (target.renderPipeId) {\n const viewBounds = target.bounds;\n localBounds.addFrame(\n viewBounds.minX,\n viewBounds.minY,\n viewBounds.maxX,\n viewBounds.maxY,\n target.groupTransform\n );\n }\n const children = target.children;\n for (let i = 0; i < children.length; i++) {\n _getGlobalBoundsRecursive(children[i], localBounds);\n }\n }\n if (manageEffects) {\n let advanced = false;\n for (let i = 0; i < target.effects.length; i++) {\n if (target.effects[i].addBounds) {\n if (!advanced) {\n advanced = true;\n localBounds.applyMatrix(target.renderGroup.worldTransform);\n }\n target.effects[i].addBounds(localBounds, true);\n }\n }\n if (advanced) {\n localBounds.applyMatrix(target.renderGroup.worldTransform.copyTo(tempMatrix).invert());\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n }\n bounds.addBounds(localBounds);\n boundsPool.return(localBounds);\n } else if (target.isRenderGroupRoot) {\n bounds.addBounds(localBounds, target.relativeGroupTransform);\n boundsPool.return(localBounds);\n }\n}\n\nexport { _getGlobalBoundsRecursive, getFastGlobalBounds };\n//# sourceMappingURL=getFastGlobalBounds.mjs.map\n","import { ExtensionType } from '../extensions/Extensions.mjs';\nimport { Matrix } from '../maths/matrix/Matrix.mjs';\nimport { Point } from '../maths/point/Point.mjs';\nimport { BindGroup } from '../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { Geometry } from '../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { UniformGroup } from '../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { Texture } from '../rendering/renderers/shared/texture/Texture.mjs';\nimport { TexturePool } from '../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { RendererType } from '../rendering/renderers/types.mjs';\nimport { Bounds } from '../scene/container/bounds/Bounds.mjs';\nimport { getFastGlobalBounds } from '../scene/container/bounds/getFastGlobalBounds.mjs';\nimport { getGlobalRenderableBounds } from '../scene/container/bounds/getRenderableBounds.mjs';\nimport { warn } from '../utils/logging/warn.mjs';\n\n\"use strict\";\nconst quadGeometry = new Geometry({\n attributes: {\n aPosition: {\n buffer: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n location: 0,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer: new Uint32Array([0, 1, 2, 0, 2, 3])\n});\nclass FilterSystem {\n constructor(renderer) {\n this._filterStackIndex = 0;\n this._filterStack = [];\n this._filterGlobalUniforms = new UniformGroup({\n uInputSize: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uInputPixel: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uInputClamp: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uOutputFrame: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uGlobalFrame: { value: new Float32Array(4), type: \"vec4<f32>\" },\n uOutputTexture: { value: new Float32Array(4), type: \"vec4<f32>\" }\n });\n this._globalFilterBindGroup = new BindGroup({});\n this.renderer = renderer;\n }\n /**\n * The back texture of the currently active filter. Requires the filter to have `blendRequired` set to true.\n * @readonly\n */\n get activeBackTexture() {\n return this._activeFilterData?.backTexture;\n }\n push(instruction) {\n const renderer = this.renderer;\n const filters = instruction.filterEffect.filters;\n if (!this._filterStack[this._filterStackIndex]) {\n this._filterStack[this._filterStackIndex] = this._getFilterData();\n }\n const filterData = this._filterStack[this._filterStackIndex];\n this._filterStackIndex++;\n if (filters.length === 0) {\n filterData.skip = true;\n return;\n }\n const bounds = filterData.bounds;\n if (instruction.renderables) {\n getGlobalRenderableBounds(instruction.renderables, bounds);\n } else if (instruction.filterEffect.filterArea) {\n bounds.clear();\n bounds.addRect(instruction.filterEffect.filterArea);\n bounds.applyMatrix(instruction.container.worldTransform);\n } else {\n getFastGlobalBounds(instruction.container, bounds);\n }\n const colorTextureSource = renderer.renderTarget.rootRenderTarget.colorTexture.source;\n let resolution = colorTextureSource._resolution;\n let padding = 0;\n let antialias = colorTextureSource.antialias;\n let blendRequired = false;\n let enabled = false;\n for (let i = 0; i < filters.length; i++) {\n const filter = filters[i];\n resolution = Math.min(resolution, filter.resolution);\n padding += filter.padding;\n if (filter.antialias !== \"inherit\") {\n if (filter.antialias === \"on\") {\n antialias = true;\n } else {\n antialias = false;\n }\n }\n const isCompatible = !!(filter.compatibleRenderers & renderer.type);\n if (!isCompatible) {\n enabled = false;\n break;\n }\n if (filter.blendRequired && !(renderer.backBuffer?.useBackBuffer ?? true)) {\n warn(\"Blend filter requires backBuffer on WebGL renderer to be enabled. Set `useBackBuffer: true` in the renderer options.\");\n enabled = false;\n break;\n }\n enabled = filter.enabled || enabled;\n blendRequired = blendRequired || filter.blendRequired;\n }\n if (!enabled) {\n filterData.skip = true;\n return;\n }\n const viewPort = renderer.renderTarget.rootViewPort;\n bounds.scale(resolution).fitBounds(0, viewPort.width, 0, viewPort.height).scale(1 / resolution).pad(padding).ceil();\n if (!bounds.isPositive) {\n filterData.skip = true;\n return;\n }\n filterData.skip = false;\n filterData.bounds = bounds;\n filterData.blendRequired = blendRequired;\n filterData.container = instruction.container;\n filterData.filterEffect = instruction.filterEffect;\n filterData.previousRenderSurface = renderer.renderTarget.renderSurface;\n filterData.inputTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n antialias\n );\n renderer.renderTarget.bind(filterData.inputTexture, true);\n renderer.globalUniforms.push({\n offset: bounds\n });\n }\n pop() {\n const renderer = this.renderer;\n this._filterStackIndex--;\n const filterData = this._filterStack[this._filterStackIndex];\n if (filterData.skip) {\n return;\n }\n this._activeFilterData = filterData;\n const inputTexture = filterData.inputTexture;\n const bounds = filterData.bounds;\n let backTexture = Texture.EMPTY;\n renderer.renderTarget.finishRenderPass();\n if (filterData.blendRequired) {\n const previousBounds = this._filterStackIndex > 0 ? this._filterStack[this._filterStackIndex - 1].bounds : null;\n const renderTarget = renderer.renderTarget.getRenderTarget(filterData.previousRenderSurface);\n backTexture = this.getBackTexture(renderTarget, bounds, previousBounds);\n }\n filterData.backTexture = backTexture;\n const filters = filterData.filterEffect.filters;\n this._globalFilterBindGroup.setResource(inputTexture.source.style, 2);\n this._globalFilterBindGroup.setResource(backTexture.source, 3);\n renderer.globalUniforms.pop();\n if (filters.length === 1) {\n filters[0].apply(this, inputTexture, filterData.previousRenderSurface, false);\n TexturePool.returnTexture(inputTexture);\n } else {\n let flip = filterData.inputTexture;\n let flop = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n flip.source._resolution,\n false\n );\n let i = 0;\n for (i = 0; i < filters.length - 1; ++i) {\n const filter = filters[i];\n filter.apply(this, flip, flop, true);\n const t = flip;\n flip = flop;\n flop = t;\n }\n filters[i].apply(this, flip, filterData.previousRenderSurface, false);\n TexturePool.returnTexture(flip);\n TexturePool.returnTexture(flop);\n }\n if (filterData.blendRequired) {\n TexturePool.returnTexture(backTexture);\n }\n }\n getBackTexture(lastRenderSurface, bounds, previousBounds) {\n const backgroundResolution = lastRenderSurface.colorTexture.source._resolution;\n const backTexture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n backgroundResolution,\n false\n );\n let x = bounds.minX;\n let y = bounds.minY;\n if (previousBounds) {\n x -= previousBounds.minX;\n y -= previousBounds.minY;\n }\n x = Math.floor(x * backgroundResolution);\n y = Math.floor(y * backgroundResolution);\n const width = Math.ceil(bounds.width * backgroundResolution);\n const height = Math.ceil(bounds.height * backgroundResolution);\n this.renderer.renderTarget.copyToTexture(\n lastRenderSurface,\n backTexture,\n { x, y },\n { width, height },\n { x: 0, y: 0 }\n );\n return backTexture;\n }\n applyFilter(filter, input, output, clear) {\n const renderer = this.renderer;\n const filterData = this._filterStack[this._filterStackIndex];\n const bounds = filterData.bounds;\n const offset = Point.shared;\n const previousRenderSurface = filterData.previousRenderSurface;\n const isFinalTarget = previousRenderSurface === output;\n let resolution = this.renderer.renderTarget.rootRenderTarget.colorTexture.source._resolution;\n let currentIndex = this._filterStackIndex - 1;\n while (currentIndex > 0 && this._filterStack[currentIndex].skip) {\n --currentIndex;\n }\n if (currentIndex > 0) {\n resolution = this._filterStack[currentIndex].inputTexture.source._resolution;\n }\n const filterUniforms = this._filterGlobalUniforms;\n const uniforms = filterUniforms.uniforms;\n const outputFrame = uniforms.uOutputFrame;\n const inputSize = uniforms.uInputSize;\n const inputPixel = uniforms.uInputPixel;\n const inputClamp = uniforms.uInputClamp;\n const globalFrame = uniforms.uGlobalFrame;\n const outputTexture = uniforms.uOutputTexture;\n if (isFinalTarget) {\n let lastIndex = this._filterStackIndex;\n while (lastIndex > 0) {\n lastIndex--;\n const filterData2 = this._filterStack[this._filterStackIndex - 1];\n if (!filterData2.skip) {\n offset.x = filterData2.bounds.minX;\n offset.y = filterData2.bounds.minY;\n break;\n }\n }\n outputFrame[0] = bounds.minX - offset.x;\n outputFrame[1] = bounds.minY - offset.y;\n } else {\n outputFrame[0] = 0;\n outputFrame[1] = 0;\n }\n outputFrame[2] = input.frame.width;\n outputFrame[3] = input.frame.height;\n inputSize[0] = input.source.width;\n inputSize[1] = input.source.height;\n inputSize[2] = 1 / inputSize[0];\n inputSize[3] = 1 / inputSize[1];\n inputPixel[0] = input.source.pixelWidth;\n inputPixel[1] = input.source.pixelHeight;\n inputPixel[2] = 1 / inputPixel[0];\n inputPixel[3] = 1 / inputPixel[1];\n inputClamp[0] = 0.5 * inputPixel[2];\n inputClamp[1] = 0.5 * inputPixel[3];\n inputClamp[2] = input.frame.width * inputSize[2] - 0.5 * inputPixel[2];\n inputClamp[3] = input.frame.height * inputSize[3] - 0.5 * inputPixel[3];\n const rootTexture = this.renderer.renderTarget.rootRenderTarget.colorTexture;\n globalFrame[0] = offset.x * resolution;\n globalFrame[1] = offset.y * resolution;\n globalFrame[2] = rootTexture.source.width * resolution;\n globalFrame[3] = rootTexture.source.height * resolution;\n const renderTarget = this.renderer.renderTarget.getRenderTarget(output);\n renderer.renderTarget.bind(output, !!clear);\n if (output instanceof Texture) {\n outputTexture[0] = output.frame.width;\n outputTexture[1] = output.frame.height;\n } else {\n outputTexture[0] = renderTarget.width;\n outputTexture[1] = renderTarget.height;\n }\n outputTexture[2] = renderTarget.isRoot ? -1 : 1;\n filterUniforms.update();\n if (renderer.renderPipes.uniformBatch) {\n const batchUniforms = renderer.renderPipes.uniformBatch.getUboResource(filterUniforms);\n this._globalFilterBindGroup.setResource(batchUniforms, 0);\n } else {\n this._globalFilterBindGroup.setResource(filterUniforms, 0);\n }\n this._globalFilterBindGroup.setResource(input.source, 1);\n this._globalFilterBindGroup.setResource(input.source.style, 2);\n filter.groups[0] = this._globalFilterBindGroup;\n renderer.encoder.draw({\n geometry: quadGeometry,\n shader: filter,\n state: filter._state,\n topology: \"triangle-list\"\n });\n if (renderer.type === RendererType.WEBGL) {\n renderer.renderTarget.finishRenderPass();\n }\n }\n _getFilterData() {\n return {\n skip: false,\n inputTexture: null,\n bounds: new Bounds(),\n container: null,\n filterEffect: null,\n blendRequired: false,\n previousRenderSurface: null\n };\n }\n /**\n * Multiply _input normalized coordinates_ to this matrix to get _sprite texture normalized coordinates_.\n *\n * Use `outputMatrix * vTextureCoord` in the shader.\n * @param outputMatrix - The matrix to output to.\n * @param {Sprite} sprite - The sprite to map to.\n * @returns The mapped matrix.\n */\n calculateSpriteMatrix(outputMatrix, sprite) {\n const data = this._activeFilterData;\n const mappedMatrix = outputMatrix.set(\n data.inputTexture._source.width,\n 0,\n 0,\n data.inputTexture._source.height,\n data.bounds.minX,\n data.bounds.minY\n );\n const worldTransform = sprite.worldTransform.copyTo(Matrix.shared);\n worldTransform.invert();\n mappedMatrix.prepend(worldTransform);\n mappedMatrix.scale(\n 1 / sprite.texture.frame.width,\n 1 / sprite.texture.frame.height\n );\n mappedMatrix.translate(sprite.anchor.x, sprite.anchor.y);\n return mappedMatrix;\n }\n}\n/** @ignore */\nFilterSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem\n ],\n name: \"filter\"\n};\n\nexport { FilterSystem };\n//# sourceMappingURL=FilterSystem.mjs.map\n","\"use strict\";\nfunction getGlobalRenderableBounds(renderables, bounds) {\n bounds.clear();\n const tempMatrix = bounds.matrix;\n for (let i = 0; i < renderables.length; i++) {\n const renderable = renderables[i];\n if (renderable.globalDisplayStatus < 7) {\n continue;\n }\n bounds.matrix = renderable.worldTransform;\n renderable.addBounds(bounds);\n }\n bounds.matrix = tempMatrix;\n return bounds;\n}\n\nexport { getGlobalRenderableBounds };\n//# sourceMappingURL=getRenderableBounds.mjs.map\n","import { extensions } from '../extensions/Extensions.mjs';\nimport { FilterPipe } from './FilterPipe.mjs';\nimport { FilterSystem } from './FilterSystem.mjs';\n\n\"use strict\";\nextensions.add(FilterSystem);\nextensions.add(FilterPipe);\n//# sourceMappingURL=init.mjs.map\n","import { MAX_TEXTURES } from '../../../batcher/shared/const.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nconst sampleValues = new Int32Array(MAX_TEXTURES);\nfor (let i = 0; i < MAX_TEXTURES; i++) {\n sampleValues[i] = i;\n}\nconst batchSamplersUniformGroup = new UniformGroup({\n uTextures: { value: sampleValues, type: `i32`, size: MAX_TEXTURES }\n}, { isStatic: true });\n\nexport { batchSamplersUniformGroup };\n//# sourceMappingURL=batchSamplersUniformGroup.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { nextPow2 } from '../../../../maths/misc/pow2.mjs';\n\n\"use strict\";\nclass CanvasPoolClass {\n constructor(canvasOptions) {\n this._canvasPool = /* @__PURE__ */ Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n _createCanvasAndContext(pixelWidth, pixelHeight) {\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n const key = (minWidth << 17) + (minHeight << 1);\n if (!this._canvasPool[key]) {\n this._canvasPool[key] = [];\n }\n let canvasAndContext = this._canvasPool[key].pop();\n if (!canvasAndContext) {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n return canvasAndContext;\n }\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n returnCanvasAndContext(canvasAndContext) {\n const { width, height } = canvasAndContext.canvas;\n const key = (width << 17) + (height << 1);\n this._canvasPool[key].push(canvasAndContext);\n }\n clear() {\n this._canvasPool = {};\n }\n}\nconst CanvasPool = new CanvasPoolClass();\n\nexport { CanvasPool, CanvasPoolClass };\n//# sourceMappingURL=CanvasPool.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../../rendering/renderers/shared/state/State.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { color32BitToUniform } from '../gpu/colorToUniform.mjs';\nimport { BatchableGraphics } from './BatchableGraphics.mjs';\n\n\"use strict\";\nclass GraphicsPipe {\n constructor(renderer, adaptor) {\n this.state = State.for2d();\n // batchable graphics list, used to render batches\n this._graphicsBatchesHash = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(graphics) {\n const context = graphics.context;\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(context);\n if (gpuContext.isBatchable || wasBatched !== gpuContext.isBatchable) {\n return true;\n }\n return false;\n }\n addRenderable(graphics, instructionSet) {\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n if (graphics._didGraphicsUpdate) {\n graphics._didGraphicsUpdate = false;\n this._rebuild(graphics);\n }\n if (gpuContext.isBatchable) {\n this._addToBatcher(graphics, instructionSet);\n } else {\n this.renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(graphics);\n }\n }\n updateRenderable(graphics) {\n const batches = this._graphicsBatchesHash[graphics.uid];\n if (batches) {\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batch.batcher.updateElement(batch);\n }\n }\n }\n destroyRenderable(graphics) {\n if (this._graphicsBatchesHash[graphics.uid]) {\n this._removeBatchForRenderable(graphics.uid);\n }\n }\n execute(graphics) {\n if (!graphics.isRenderable)\n return;\n const renderer = this.renderer;\n const context = graphics.context;\n const contextSystem = renderer.graphicsContext;\n if (!contextSystem.getGpuContext(context).batches.length) {\n return;\n }\n const shader = context.customShader || this._adaptor.shader;\n this.state.blendMode = graphics.groupBlendMode;\n const localUniforms = shader.resources.localUniforms.uniforms;\n localUniforms.uTransformMatrix = graphics.groupTransform;\n localUniforms.uRound = renderer._roundPixels | graphics._roundPixels;\n color32BitToUniform(\n graphics.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n this._adaptor.execute(this, graphics);\n }\n _rebuild(graphics) {\n const wasBatched = !!this._graphicsBatchesHash[graphics.uid];\n const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context);\n if (wasBatched) {\n this._removeBatchForRenderable(graphics.uid);\n }\n if (gpuContext.isBatchable) {\n this._initBatchesForRenderable(graphics);\n }\n graphics.batched = gpuContext.isBatchable;\n }\n _addToBatcher(graphics, instructionSet) {\n const batchPipe = this.renderer.renderPipes.batch;\n const batches = this._getBatchesForRenderable(graphics);\n for (let i = 0; i < batches.length; i++) {\n const batch = batches[i];\n batchPipe.addToBatch(batch, instructionSet);\n }\n }\n _getBatchesForRenderable(graphics) {\n return this._graphicsBatchesHash[graphics.uid] || this._initBatchesForRenderable(graphics);\n }\n _initBatchesForRenderable(graphics) {\n const context = graphics.context;\n const gpuContext = this.renderer.graphicsContext.getGpuContext(context);\n const roundPixels = this.renderer._roundPixels | graphics._roundPixels;\n const batches = gpuContext.batches.map((batch) => {\n const batchClone = BigPool.get(BatchableGraphics);\n batch.copyTo(batchClone);\n batchClone.renderable = graphics;\n batchClone.roundPixels = roundPixels;\n return batchClone;\n });\n this._graphicsBatchesHash[graphics.uid] = batches;\n graphics.on(\"destroyed\", () => {\n this.destroyRenderable(graphics);\n });\n return batches;\n }\n _removeBatchForRenderable(graphicsUid) {\n this._graphicsBatchesHash[graphicsUid].forEach((batch) => {\n BigPool.return(batch);\n });\n this._graphicsBatchesHash[graphicsUid] = null;\n }\n destroy() {\n this.renderer = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.state = null;\n for (const i in this._graphicsBatchesHash) {\n this._removeBatchForRenderable(i);\n }\n this._graphicsBatchesHash = null;\n }\n}\n/** @ignore */\nGraphicsPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"graphics\"\n};\n\nexport { GraphicsPipe };\n//# sourceMappingURL=GraphicsPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { GraphicsContextSystem } from './shared/GraphicsContextSystem.mjs';\nimport { GraphicsPipe } from './shared/GraphicsPipe.mjs';\n\n\"use strict\";\nextensions.add(GraphicsPipe);\nextensions.add(GraphicsContextSystem);\n//# sourceMappingURL=init.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { BindGroup } from '../../../rendering/renderers/gpu/shader/BindGroup.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { color32BitToUniform } from '../../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from './BatchableMesh.mjs';\n\n\"use strict\";\nclass MeshPipe {\n constructor(renderer, adaptor) {\n this.localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n this.localUniformsBindGroup = new BindGroup({\n 0: this.localUniforms\n });\n this._meshDataHash = /* @__PURE__ */ Object.create(null);\n this._gpuBatchableMeshHash = /* @__PURE__ */ Object.create(null);\n this.renderer = renderer;\n this._adaptor = adaptor;\n this._adaptor.init();\n }\n validateRenderable(mesh) {\n const meshData = this._getMeshData(mesh);\n const wasBatched = meshData.batched;\n const isBatched = mesh.batched;\n meshData.batched = isBatched;\n if (wasBatched !== isBatched) {\n return true;\n } else if (isBatched) {\n const geometry = mesh._geometry;\n if (geometry.indices.length !== meshData.indexSize || geometry.positions.length !== meshData.vertexSize) {\n meshData.indexSize = geometry.indices.length;\n meshData.vertexSize = geometry.positions.length;\n return true;\n }\n const batchableMesh = this._getBatchableMesh(mesh);\n const texture = mesh.texture;\n if (batchableMesh.texture._source !== texture._source) {\n if (batchableMesh.texture._source !== texture._source) {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, texture);\n }\n }\n }\n return false;\n }\n addRenderable(mesh, instructionSet) {\n const batcher = this.renderer.renderPipes.batch;\n const { batched } = this._getMeshData(mesh);\n if (batched) {\n const gpuBatchableMesh = this._getBatchableMesh(mesh);\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n batcher.addToBatch(gpuBatchableMesh);\n } else {\n batcher.break(instructionSet);\n instructionSet.add({\n renderPipeId: \"mesh\",\n mesh\n });\n }\n }\n updateRenderable(mesh) {\n if (mesh.batched) {\n const gpuBatchableMesh = this._gpuBatchableMeshHash[mesh.uid];\n gpuBatchableMesh.texture = mesh._texture;\n gpuBatchableMesh.geometry = mesh._geometry;\n gpuBatchableMesh.batcher.updateElement(gpuBatchableMesh);\n }\n }\n destroyRenderable(mesh) {\n this._meshDataHash[mesh.uid] = null;\n const gpuMesh = this._gpuBatchableMeshHash[mesh.uid];\n if (gpuMesh) {\n BigPool.return(gpuMesh);\n this._gpuBatchableMeshHash[mesh.uid] = null;\n }\n }\n execute({ mesh }) {\n if (!mesh.isRenderable)\n return;\n mesh.state.blendMode = mesh.groupBlendMode;\n const localUniforms = this.localUniforms;\n localUniforms.uniforms.uTransformMatrix = mesh.groupTransform;\n localUniforms.uniforms.uRound = this.renderer._roundPixels | mesh._roundPixels;\n localUniforms.update();\n color32BitToUniform(\n mesh.groupColorAlpha,\n localUniforms.uniforms.uColor,\n 0\n );\n this._adaptor.execute(this, mesh);\n }\n _getMeshData(mesh) {\n return this._meshDataHash[mesh.uid] || this._initMeshData(mesh);\n }\n _initMeshData(mesh) {\n this._meshDataHash[mesh.uid] = {\n batched: mesh.batched,\n indexSize: mesh._geometry.indices?.length,\n vertexSize: mesh._geometry.positions?.length\n };\n mesh.on(\"destroyed\", () => {\n this.destroyRenderable(mesh);\n });\n return this._meshDataHash[mesh.uid];\n }\n _getBatchableMesh(mesh) {\n return this._gpuBatchableMeshHash[mesh.uid] || this._initBatchableMesh(mesh);\n }\n _initBatchableMesh(mesh) {\n const gpuMesh = BigPool.get(BatchableMesh);\n gpuMesh.mesh = mesh;\n gpuMesh.texture = mesh._texture;\n gpuMesh.roundPixels = this.renderer._roundPixels | mesh._roundPixels;\n this._gpuBatchableMeshHash[mesh.uid] = gpuMesh;\n gpuMesh.mesh = mesh;\n return gpuMesh;\n }\n destroy() {\n for (const i in this._gpuBatchableMeshHash) {\n if (this._gpuBatchableMeshHash[i]) {\n BigPool.return(this._gpuBatchableMeshHash[i]);\n }\n }\n this._gpuBatchableMeshHash = null;\n this._meshDataHash = null;\n this.localUniforms = null;\n this.localUniformsBindGroup = null;\n this._adaptor.destroy();\n this._adaptor = null;\n this.renderer = null;\n }\n}\n/** @ignore */\nMeshPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"mesh\"\n};\n\nexport { MeshPipe };\n//# sourceMappingURL=MeshPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { MeshPipe } from './shared/MeshPipe.mjs';\n\n\"use strict\";\nextensions.add(MeshPipe);\n//# sourceMappingURL=init.mjs.map\n","\"use strict\";\nclass BatchableMesh {\n constructor() {\n this.batcher = null;\n this.batch = null;\n this.roundPixels = 0;\n this._uvUpdateId = -1;\n this._textureMatrixUpdateId = -1;\n }\n get blendMode() {\n return this.mesh.groupBlendMode;\n }\n reset() {\n this.mesh = null;\n this.texture = null;\n this.batcher = null;\n this.batch = null;\n }\n packIndex(indexBuffer, index, indicesOffset) {\n const indices = this.geometry.indices;\n for (let i = 0; i < indices.length; i++) {\n indexBuffer[index++] = indices[i] + indicesOffset;\n }\n }\n packAttributes(float32View, uint32View, index, textureId) {\n const mesh = this.mesh;\n const geometry = this.geometry;\n const wt = mesh.groupTransform;\n const textureIdAndRound = textureId << 16 | this.roundPixels & 65535;\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n const positions = geometry.positions;\n const uvBuffer = geometry.getBuffer(\"aUV\");\n const uvs = uvBuffer.data;\n let transformedUvs = uvs;\n const textureMatrix = this.texture.textureMatrix;\n if (!textureMatrix.isSimple) {\n transformedUvs = this._transformedUvs;\n if (this._textureMatrixUpdateId !== textureMatrix._updateID || this._uvUpdateId !== uvBuffer._updateID) {\n if (!transformedUvs || transformedUvs.length < uvs.length) {\n transformedUvs = this._transformedUvs = new Float32Array(uvs.length);\n }\n this._textureMatrixUpdateId = textureMatrix._updateID;\n this._uvUpdateId = uvBuffer._updateID;\n textureMatrix.multiplyUvs(uvs, transformedUvs);\n }\n }\n const abgr = mesh.groupColorAlpha;\n for (let i = 0; i < positions.length; i += 2) {\n const x = positions[i];\n const y = positions[i + 1];\n float32View[index] = a * x + c * y + tx;\n float32View[index + 1] = b * x + d * y + ty;\n float32View[index + 2] = transformedUvs[i];\n float32View[index + 3] = transformedUvs[i + 1];\n uint32View[index + 4] = abgr;\n uint32View[index + 5] = textureIdAndRound;\n index += 6;\n }\n }\n get vertexSize() {\n return this.geometry.positions.length / 2;\n }\n get indexSize() {\n return this.geometry.indices.length;\n }\n}\n\nexport { BatchableMesh };\n//# sourceMappingURL=BatchableMesh.mjs.map\n","import { Buffer } from '../../../rendering/renderers/shared/buffer/Buffer.mjs';\nimport { BufferUsage } from '../../../rendering/renderers/shared/buffer/const.mjs';\nimport { Geometry } from '../../../rendering/renderers/shared/geometry/Geometry.mjs';\nimport { deprecation, v8_0_0 } from '../../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nconst _MeshGeometry = class _MeshGeometry extends Geometry {\n constructor(...args) {\n let options = args[0] ?? {};\n if (options instanceof Float32Array) {\n deprecation(v8_0_0, \"use new MeshGeometry({ positions, uvs, indices }) instead\");\n options = {\n positions: options,\n uvs: args[1],\n indices: args[2]\n };\n }\n options = { ..._MeshGeometry.defaultOptions, ...options };\n const positions = options.positions || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const uvs = options.uvs || new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\n const indices = options.indices || new Uint32Array([0, 1, 2, 0, 2, 3]);\n const shrinkToFit = options.shrinkBuffersToFit;\n const positionBuffer = new Buffer({\n data: positions,\n label: \"attribute-mesh-positions\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const uvBuffer = new Buffer({\n data: uvs,\n label: \"attribute-mesh-uvs\",\n shrinkToFit,\n usage: BufferUsage.VERTEX | BufferUsage.COPY_DST\n });\n const indexBuffer = new Buffer({\n data: indices,\n label: \"index-mesh-buffer\",\n shrinkToFit,\n usage: BufferUsage.INDEX | BufferUsage.COPY_DST\n });\n super({\n attributes: {\n aPosition: {\n buffer: positionBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n },\n aUV: {\n buffer: uvBuffer,\n format: \"float32x2\",\n stride: 2 * 4,\n offset: 0\n }\n },\n indexBuffer,\n topology: options.topology\n });\n this.batchMode = \"auto\";\n }\n /** The positions of the mesh. */\n get positions() {\n return this.attributes.aPosition.buffer.data;\n }\n set positions(value) {\n this.attributes.aPosition.buffer.data = value;\n }\n /** The UVs of the mesh. */\n get uvs() {\n return this.attributes.aUV.buffer.data;\n }\n set uvs(value) {\n this.attributes.aUV.buffer.data = value;\n }\n /** The indices of the mesh. */\n get indices() {\n return this.indexBuffer.data;\n }\n set indices(value) {\n this.indexBuffer.data = value;\n }\n};\n_MeshGeometry.defaultOptions = {\n topology: \"triangle-list\",\n shrinkBuffersToFit: false\n};\nlet MeshGeometry = _MeshGeometry;\n\nexport { MeshGeometry };\n//# sourceMappingURL=MeshGeometry.mjs.map\n","import { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nconst _PlaneGeometry = class _PlaneGeometry extends MeshGeometry {\n constructor(...args) {\n super({});\n let options = args[0] ?? {};\n if (typeof options === \"number\") {\n deprecation(v8_0_0, \"PlaneGeometry constructor changed please use { width, height, verticesX, verticesY } instead\");\n options = {\n width: options,\n height: args[1],\n verticesX: args[2],\n verticesY: args[3]\n };\n }\n this.build(options);\n }\n /**\n * Refreshes plane coordinates\n * @param options - Options to be applied to plane geometry\n */\n build(options) {\n options = { ..._PlaneGeometry.defaultOptions, ...options };\n this.verticesX = this.verticesX ?? options.verticesX;\n this.verticesY = this.verticesY ?? options.verticesY;\n this.width = this.width ?? options.width;\n this.height = this.height ?? options.height;\n const total = this.verticesX * this.verticesY;\n const verts = [];\n const uvs = [];\n const indices = [];\n const verticesX = this.verticesX - 1;\n const verticesY = this.verticesY - 1;\n const sizeX = this.width / verticesX;\n const sizeY = this.height / verticesY;\n for (let i = 0; i < total; i++) {\n const x = i % this.verticesX;\n const y = i / this.verticesX | 0;\n verts.push(x * sizeX, y * sizeY);\n uvs.push(x / verticesX, y / verticesY);\n }\n const totalSub = verticesX * verticesY;\n for (let i = 0; i < totalSub; i++) {\n const xpos = i % verticesX;\n const ypos = i / verticesX | 0;\n const value = ypos * this.verticesX + xpos;\n const value2 = ypos * this.verticesX + xpos + 1;\n const value3 = (ypos + 1) * this.verticesX + xpos;\n const value4 = (ypos + 1) * this.verticesX + xpos + 1;\n indices.push(\n value,\n value2,\n value3,\n value2,\n value4,\n value3\n );\n }\n this.buffers[0].data = new Float32Array(verts);\n this.buffers[1].data = new Float32Array(uvs);\n this.indexBuffer.data = new Uint32Array(indices);\n this.buffers[0].update();\n this.buffers[1].update();\n this.indexBuffer.update();\n }\n};\n_PlaneGeometry.defaultOptions = {\n width: 100,\n height: 100,\n verticesX: 10,\n verticesY: 10\n};\nlet PlaneGeometry = _PlaneGeometry;\n\nexport { PlaneGeometry };\n//# sourceMappingURL=PlaneGeometry.mjs.map\n","import { PlaneGeometry } from '../mesh-plane/PlaneGeometry.mjs';\n\n\"use strict\";\nconst _NineSliceGeometry = class _NineSliceGeometry extends PlaneGeometry {\n constructor(options = {}) {\n options = { ..._NineSliceGeometry.defaultOptions, ...options };\n super({\n width: options.width,\n height: options.height,\n verticesX: 4,\n verticesY: 4\n });\n this.update(options);\n }\n /**\n * Updates the NineSliceGeometry with the options.\n * @param options - The options of the NineSliceGeometry.\n */\n update(options) {\n this.width = options.width ?? this.width;\n this.height = options.height ?? this.height;\n this._originalWidth = options.originalWidth ?? this._originalWidth;\n this._originalHeight = options.originalHeight ?? this._originalHeight;\n this._leftWidth = options.leftWidth ?? this._leftWidth;\n this._rightWidth = options.rightWidth ?? this._rightWidth;\n this._topHeight = options.topHeight ?? this._topHeight;\n this._bottomHeight = options.bottomHeight ?? this._bottomHeight;\n this.updateUvs();\n this.updatePositions();\n }\n /** Updates the positions of the vertices. */\n updatePositions() {\n const positions = this.positions;\n const w = this._leftWidth + this._rightWidth;\n const scaleW = this.width > w ? 1 : this.width / w;\n const h = this._topHeight + this._bottomHeight;\n const scaleH = this.height > h ? 1 : this.height / h;\n const scale = Math.min(scaleW, scaleH);\n positions[9] = positions[11] = positions[13] = positions[15] = this._topHeight * scale;\n positions[17] = positions[19] = positions[21] = positions[23] = this.height - this._bottomHeight * scale;\n positions[25] = positions[27] = positions[29] = positions[31] = this.height;\n positions[2] = positions[10] = positions[18] = positions[26] = this._leftWidth * scale;\n positions[4] = positions[12] = positions[20] = positions[28] = this.width - this._rightWidth * scale;\n positions[6] = positions[14] = positions[22] = positions[30] = this.width;\n this.getBuffer(\"aPosition\").update();\n }\n /** Updates the UVs of the vertices. */\n updateUvs() {\n const uvs = this.uvs;\n uvs[0] = uvs[8] = uvs[16] = uvs[24] = 0;\n uvs[1] = uvs[3] = uvs[5] = uvs[7] = 0;\n uvs[6] = uvs[14] = uvs[22] = uvs[30] = 1;\n uvs[25] = uvs[27] = uvs[29] = uvs[31] = 1;\n const _uvw = 1 / this._originalWidth;\n const _uvh = 1 / this._originalHeight;\n uvs[2] = uvs[10] = uvs[18] = uvs[26] = _uvw * this._leftWidth;\n uvs[9] = uvs[11] = uvs[13] = uvs[15] = _uvh * this._topHeight;\n uvs[4] = uvs[12] = uvs[20] = uvs[28] = 1 - _uvw * this._rightWidth;\n uvs[17] = uvs[19] = uvs[21] = uvs[23] = 1 - _uvh * this._bottomHeight;\n this.getBuffer(\"aUV\").update();\n }\n};\n/** The default options for the NineSliceGeometry. */\n_NineSliceGeometry.defaultOptions = {\n /** The width of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n width: 100,\n /** The height of the NineSlicePlane, setting this will actually modify the vertices and UV's of this plane. */\n height: 100,\n /** The width of the left column. */\n leftWidth: 10,\n /** The height of the top row. */\n topHeight: 10,\n /** The width of the right column. */\n rightWidth: 10,\n /** The height of the bottom row. */\n bottomHeight: 10,\n /** The original width of the texture */\n originalWidth: 100,\n /** The original height of the texture */\n originalHeight: 100\n};\nlet NineSliceGeometry = _NineSliceGeometry;\n\nexport { NineSliceGeometry };\n//# sourceMappingURL=NineSliceGeometry.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs';\nimport { NineSliceGeometry } from './NineSliceGeometry.mjs';\n\n\"use strict\";\nclass NineSliceSpritePipe {\n constructor(renderer) {\n this._gpuSpriteHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n addRenderable(sprite, _instructionSet) {\n const gpuSprite = this._getGpuSprite(sprite);\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n this._renderer.renderPipes.batch.addToBatch(gpuSprite);\n }\n updateRenderable(sprite) {\n const gpuSprite = this._gpuSpriteHash[sprite.uid];\n if (sprite._didSpriteUpdate)\n this._updateBatchableSprite(sprite, gpuSprite);\n gpuSprite.batcher.updateElement(gpuSprite);\n }\n validateRenderable(sprite) {\n const texture = sprite._texture;\n const gpuSprite = this._getGpuSprite(sprite);\n if (gpuSprite.texture._source !== texture._source) {\n return !gpuSprite.batcher.checkAndUpdateTexture(gpuSprite, texture);\n }\n return false;\n }\n destroyRenderable(sprite) {\n const batchableSprite = this._gpuSpriteHash[sprite.uid];\n BigPool.return(batchableSprite);\n this._gpuSpriteHash[sprite.uid] = null;\n }\n _updateBatchableSprite(sprite, batchableSprite) {\n sprite._didSpriteUpdate = false;\n batchableSprite.geometry.update(sprite);\n batchableSprite.texture = sprite._texture;\n }\n _getGpuSprite(sprite) {\n return this._gpuSpriteHash[sprite.uid] || this._initGPUSprite(sprite);\n }\n _initGPUSprite(sprite) {\n const batchableMesh = new BatchableMesh();\n batchableMesh.geometry = new NineSliceGeometry();\n batchableMesh.mesh = sprite;\n batchableMesh.texture = sprite._texture;\n batchableMesh.roundPixels = this._renderer._roundPixels | sprite._roundPixels;\n this._gpuSpriteHash[sprite.uid] = batchableMesh;\n sprite.on(\"destroyed\", () => {\n this.destroyRenderable(sprite);\n });\n return batchableMesh;\n }\n destroy() {\n for (const i in this._gpuSpriteHash) {\n const batchableMesh = this._gpuSpriteHash[i];\n batchableMesh.geometry.destroy();\n }\n this._gpuSpriteHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nNineSliceSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"nineSliceSprite\"\n};\n\nexport { NineSliceSpritePipe };\n//# sourceMappingURL=NineSliceSpritePipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { NineSliceSpritePipe } from './NineSliceSpritePipe.mjs';\n\n\"use strict\";\nextensions.add(NineSliceSpritePipe);\n//# sourceMappingURL=init.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram, compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit, localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { tilingBit, tilingBitGl } from './tilingBit.mjs';\n\n\"use strict\";\nlet gpuProgram;\nlet glProgram;\nclass TilingSpriteShader extends Shader {\n constructor() {\n gpuProgram ?? (gpuProgram = compileHighShaderGpuProgram({\n name: \"tiling-sprite-shader\",\n bits: [\n localUniformBit,\n tilingBit,\n roundPixelsBit\n ]\n }));\n glProgram ?? (glProgram = compileHighShaderGlProgram({\n name: \"tiling-sprite-shader\",\n bits: [\n localUniformBitGl,\n tilingBitGl,\n roundPixelsBitGl\n ]\n }));\n const tilingUniforms = new UniformGroup({\n uMapCoord: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uClampFrame: { value: new Float32Array([0, 0, 1, 1]), type: \"vec4<f32>\" },\n uClampOffset: { value: new Float32Array([0, 0]), type: \"vec2<f32>\" },\n uTextureTransform: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uSizeAnchor: { value: new Float32Array([100, 100, 0.5, 0.5]), type: \"vec4<f32>\" }\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n }),\n tilingUniforms,\n uTexture: Texture.EMPTY.source,\n uSampler: Texture.EMPTY.source.style\n }\n });\n }\n updateUniforms(width, height, matrix, anchorX, anchorY, texture) {\n const tilingUniforms = this.resources.tilingUniforms;\n const textureWidth = texture.width;\n const textureHeight = texture.height;\n const textureMatrix = texture.textureMatrix;\n const uTextureTransform = tilingUniforms.uniforms.uTextureTransform;\n uTextureTransform.set(\n matrix.a * textureWidth / width,\n matrix.b * textureWidth / height,\n matrix.c * textureHeight / width,\n matrix.d * textureHeight / height,\n matrix.tx / width,\n matrix.ty / height\n );\n uTextureTransform.invert();\n tilingUniforms.uniforms.uMapCoord = textureMatrix.mapCoord;\n tilingUniforms.uniforms.uClampFrame = textureMatrix.uClampFrame;\n tilingUniforms.uniforms.uClampOffset = textureMatrix.uClampOffset;\n tilingUniforms.uniforms.uTextureTransform = uTextureTransform;\n tilingUniforms.uniforms.uSizeAnchor[0] = width;\n tilingUniforms.uniforms.uSizeAnchor[1] = height;\n tilingUniforms.uniforms.uSizeAnchor[2] = anchorX;\n tilingUniforms.uniforms.uSizeAnchor[3] = anchorY;\n if (texture) {\n this.resources.uTexture = texture.source;\n this.resources.uSampler = texture.source.style;\n }\n }\n}\n\nexport { TilingSpriteShader };\n//# sourceMappingURL=TilingSpriteShader.mjs.map\n","\"use strict\";\nconst tilingBit = {\n name: \"tiling-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n `\n ),\n main: (\n /* wgsl */\n `\n uv = (tilingUniforms.uTextureTransform * vec3(uv, 1.0)).xy;\n\n position = (position - tilingUniforms.uSizeAnchor.zw) * tilingUniforms.uSizeAnchor.xy;\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n struct TilingUniforms {\n uMapCoord:mat3x3<f32>,\n uClampFrame:vec4<f32>,\n uClampOffset:vec2<f32>,\n uTextureTransform:mat3x3<f32>,\n uSizeAnchor:vec4<f32>\n };\n\n @group(2) @binding(0) var<uniform> tilingUniforms: TilingUniforms;\n @group(2) @binding(1) var uTexture: texture_2d<f32>;\n @group(2) @binding(2) var uSampler: sampler;\n `\n ),\n main: (\n /* wgsl */\n `\n\n var coord = vUV + ceil(tilingUniforms.uClampOffset - vUV);\n coord = (tilingUniforms.uMapCoord * vec3(coord, 1.0)).xy;\n var unclamped = coord;\n coord = clamp(coord, tilingUniforms.uClampFrame.xy, tilingUniforms.uClampFrame.zw);\n\n var bias = 0.;\n\n if(unclamped.x == coord.x && unclamped.y == coord.y)\n {\n bias = -32.;\n } \n\n outColor = textureSampleBias(uTexture, uSampler, coord, bias);\n `\n )\n }\n};\nconst tilingBitGl = {\n name: \"tiling-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTextureTransform;\n uniform vec4 uSizeAnchor;\n \n `\n ),\n main: (\n /* glsl */\n `\n uv = (uTextureTransform * vec3(aUV, 1.0)).xy;\n\n position = (position - uSizeAnchor.zw) * uSizeAnchor.xy;\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform sampler2D uTexture;\n uniform mat3 uMapCoord;\n uniform vec4 uClampFrame;\n uniform vec2 uClampOffset;\n `\n ),\n main: (\n /* glsl */\n `\n\n vec2 coord = vUV + ceil(uClampOffset - vUV);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n \n outColor = texture(uTexture, coord, unclamped == coord ? 0.0 : -32.0);// lod-bias very negative to force lod 0\n \n `\n )\n }\n};\n\nexport { tilingBit, tilingBitGl };\n//# sourceMappingURL=tilingBit.mjs.map\n","import { MeshGeometry } from '../../mesh/shared/MeshGeometry.mjs';\n\n\"use strict\";\nclass QuadGeometry extends MeshGeometry {\n constructor() {\n super({\n positions: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n uvs: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]),\n indices: new Uint32Array([0, 1, 2, 0, 2, 3])\n });\n }\n}\n\nexport { QuadGeometry };\n//# sourceMappingURL=QuadGeometry.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { State } from '../../rendering/renderers/shared/state/State.mjs';\nimport { RendererType } from '../../rendering/renderers/types.mjs';\nimport { color32BitToUniform } from '../graphics/gpu/colorToUniform.mjs';\nimport { BatchableMesh } from '../mesh/shared/BatchableMesh.mjs';\nimport { MeshGeometry } from '../mesh/shared/MeshGeometry.mjs';\nimport { TilingSpriteShader } from './shader/TilingSpriteShader.mjs';\nimport { QuadGeometry } from './utils/QuadGeometry.mjs';\nimport { setPositions } from './utils/setPositions.mjs';\nimport { setUvs } from './utils/setUvs.mjs';\n\n\"use strict\";\nconst sharedQuad = new QuadGeometry();\nclass TilingSpritePipe {\n constructor(renderer) {\n this._tilingSpriteDataHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(renderable) {\n const tilingSpriteData = this._getTilingSpriteData(renderable);\n const couldBatch = tilingSpriteData.canBatch;\n this._updateCanBatch(renderable);\n const canBatch = tilingSpriteData.canBatch;\n if (canBatch && canBatch === couldBatch) {\n const { batchableMesh } = tilingSpriteData;\n if (batchableMesh.texture._source !== renderable.texture._source) {\n return !batchableMesh.batcher.checkAndUpdateTexture(batchableMesh, renderable.texture);\n }\n }\n return couldBatch !== canBatch;\n }\n addRenderable(tilingSprite, instructionSet) {\n const batcher = this._renderer.renderPipes.batch;\n this._updateCanBatch(tilingSprite);\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n const { geometry, canBatch } = tilingSpriteData;\n if (canBatch) {\n tilingSpriteData.batchableMesh || (tilingSpriteData.batchableMesh = new BatchableMesh());\n const batchableMesh = tilingSpriteData.batchableMesh;\n if (tilingSprite._didTilingSpriteUpdate) {\n tilingSprite._didTilingSpriteUpdate = false;\n this._updateBatchableMesh(tilingSprite);\n batchableMesh.geometry = geometry;\n batchableMesh.mesh = tilingSprite;\n batchableMesh.texture = tilingSprite._texture;\n }\n batchableMesh.roundPixels = this._renderer._roundPixels | tilingSprite._roundPixels;\n batcher.addToBatch(batchableMesh);\n } else {\n batcher.break(instructionSet);\n tilingSpriteData.shader || (tilingSpriteData.shader = new TilingSpriteShader());\n this.updateRenderable(tilingSprite);\n instructionSet.add(tilingSprite);\n }\n }\n execute(tilingSprite) {\n const { shader } = this._tilingSpriteDataHash[tilingSprite.uid];\n shader.groups[0] = this._renderer.globalUniforms.bindGroup;\n const localUniforms = shader.resources.localUniforms.uniforms;\n localUniforms.uTransformMatrix = tilingSprite.groupTransform;\n localUniforms.uRound = this._renderer._roundPixels | tilingSprite._roundPixels;\n color32BitToUniform(\n tilingSprite.groupColorAlpha,\n localUniforms.uColor,\n 0\n );\n this._renderer.encoder.draw({\n geometry: sharedQuad,\n shader,\n state: State.default2d\n });\n }\n updateRenderable(tilingSprite) {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n const { canBatch } = tilingSpriteData;\n if (canBatch) {\n const { batchableMesh } = tilingSpriteData;\n if (tilingSprite._didTilingSpriteUpdate)\n this._updateBatchableMesh(tilingSprite);\n batchableMesh.batcher.updateElement(batchableMesh);\n } else if (tilingSprite._didTilingSpriteUpdate) {\n const { shader } = tilingSpriteData;\n shader.updateUniforms(\n tilingSprite.width,\n tilingSprite.height,\n tilingSprite._tileTransform.matrix,\n tilingSprite.anchor.x,\n tilingSprite.anchor.y,\n tilingSprite.texture\n );\n }\n tilingSprite._didTilingSpriteUpdate = false;\n }\n destroyRenderable(tilingSprite) {\n const tilingSpriteData = this._getTilingSpriteData(tilingSprite);\n tilingSpriteData.batchableMesh = null;\n tilingSpriteData.shader?.destroy();\n this._tilingSpriteDataHash[tilingSprite.uid] = null;\n }\n _getTilingSpriteData(renderable) {\n return this._tilingSpriteDataHash[renderable.uid] || this._initTilingSpriteData(renderable);\n }\n _initTilingSpriteData(tilingSprite) {\n const geometry = new MeshGeometry({\n indices: sharedQuad.indices,\n positions: sharedQuad.positions.slice(),\n uvs: sharedQuad.uvs.slice()\n });\n this._tilingSpriteDataHash[tilingSprite.uid] = {\n canBatch: true,\n renderable: tilingSprite,\n geometry\n };\n tilingSprite.on(\"destroyed\", () => {\n this.destroyRenderable(tilingSprite);\n });\n return this._tilingSpriteDataHash[tilingSprite.uid];\n }\n _updateBatchableMesh(tilingSprite) {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const { geometry } = renderableData;\n const style = tilingSprite.texture.source.style;\n if (style.addressMode !== \"repeat\") {\n style.addressMode = \"repeat\";\n style.update();\n }\n setUvs(tilingSprite, geometry.uvs);\n setPositions(tilingSprite, geometry.positions);\n }\n destroy() {\n for (const i in this._tilingSpriteDataHash) {\n this.destroyRenderable(this._tilingSpriteDataHash[i].renderable);\n }\n this._tilingSpriteDataHash = null;\n this._renderer = null;\n }\n _updateCanBatch(tilingSprite) {\n const renderableData = this._getTilingSpriteData(tilingSprite);\n const texture = tilingSprite.texture;\n let _nonPowOf2wrapping = true;\n if (this._renderer.type === RendererType.WEBGL) {\n _nonPowOf2wrapping = this._renderer.context.supports.nonPowOf2wrapping;\n }\n renderableData.canBatch = texture.textureMatrix.isSimple && (_nonPowOf2wrapping || texture.source.isPowerOfTwo);\n return renderableData.canBatch;\n }\n}\n/** @ignore */\nTilingSpritePipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"tilingSprite\"\n};\n\nexport { TilingSpritePipe };\n//# sourceMappingURL=TilingSpritePipe.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { applyMatrix } from './applyMatrix.mjs';\n\n\"use strict\";\nfunction setUvs(tilingSprite, uvs) {\n const texture = tilingSprite.texture;\n const width = texture.frame.width;\n const height = texture.frame.height;\n let anchorX = 0;\n let anchorY = 0;\n if (tilingSprite._applyAnchorToTexture) {\n anchorX = tilingSprite.anchor.x;\n anchorY = tilingSprite.anchor.y;\n }\n uvs[0] = uvs[6] = -anchorX;\n uvs[2] = uvs[4] = 1 - anchorX;\n uvs[1] = uvs[3] = -anchorY;\n uvs[5] = uvs[7] = 1 - anchorY;\n const textureMatrix = Matrix.shared;\n textureMatrix.copyFrom(tilingSprite._tileTransform.matrix);\n textureMatrix.tx /= tilingSprite.width;\n textureMatrix.ty /= tilingSprite.height;\n textureMatrix.invert();\n textureMatrix.scale(tilingSprite.width / width, tilingSprite.height / height);\n applyMatrix(uvs, 2, 0, textureMatrix);\n}\n\nexport { setUvs };\n//# sourceMappingURL=setUvs.mjs.map\n","\"use strict\";\nfunction setPositions(tilingSprite, positions) {\n const anchorX = tilingSprite.anchor.x;\n const anchorY = tilingSprite.anchor.y;\n positions[0] = -anchorX * tilingSprite.width;\n positions[1] = -anchorY * tilingSprite.height;\n positions[2] = (1 - anchorX) * tilingSprite.width;\n positions[3] = -anchorY * tilingSprite.height;\n positions[4] = (1 - anchorX) * tilingSprite.width;\n positions[5] = (1 - anchorY) * tilingSprite.height;\n positions[6] = -anchorX * tilingSprite.width;\n positions[7] = (1 - anchorY) * tilingSprite.height;\n}\n\nexport { setPositions };\n//# sourceMappingURL=setPositions.mjs.map\n","\"use strict\";\nfunction applyMatrix(array, stride, offset, matrix) {\n let index = 0;\n const size = array.length / (stride || 2);\n const a = matrix.a;\n const b = matrix.b;\n const c = matrix.c;\n const d = matrix.d;\n const tx = matrix.tx;\n const ty = matrix.ty;\n offset *= stride;\n while (index < size) {\n const x = array[offset];\n const y = array[offset + 1];\n array[offset] = a * x + c * y + tx;\n array[offset + 1] = b * x + d * y + ty;\n offset += stride;\n index++;\n }\n}\n\nexport { applyMatrix };\n//# sourceMappingURL=applyMatrix.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { TilingSpritePipe } from './TilingSpritePipe.mjs';\n\n\"use strict\";\nextensions.add(TilingSpritePipe);\n//# sourceMappingURL=init.mjs.map\n","import EventEmitter from 'eventemitter3';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\n\n\"use strict\";\nclass AbstractBitmapFont extends EventEmitter {\n constructor() {\n super(...arguments);\n /** The map of characters by character code. */\n this.chars = /* @__PURE__ */ Object.create(null);\n /**\n * The line-height of the font face in pixels.\n * @type {number}\n */\n this.lineHeight = 0;\n /**\n * The name of the font face\n * @type {string}\n */\n this.fontFamily = \"\";\n /** The metrics of the font face. */\n this.fontMetrics = { fontSize: 0, ascent: 0, descent: 0 };\n /**\n * The offset of the font face from the baseline.\n * @type {number}\n */\n this.baseLineOffset = 0;\n /** The range and type of the distance field for this font. */\n this.distanceField = { type: \"none\", range: 0 };\n /** The map of base page textures (i.e., sheets of glyphs). */\n this.pages = [];\n /** The size of the font face in pixels. */\n this.baseMeasurementFontSize = 100;\n this.baseRenderedFontSize = 100;\n }\n /**\n * The name of the font face.\n * @deprecated since 8.0.0 Use `fontFamily` instead.\n */\n get font() {\n deprecation(v8_0_0, \"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead.\");\n return this.fontFamily;\n }\n /**\n * The map of base page textures (i.e., sheets of glyphs).\n * @deprecated since 8.0.0 Use `pages` instead.\n */\n get pageTextures() {\n deprecation(v8_0_0, \"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.\");\n return this.pages;\n }\n /**\n * The size of the font face in pixels.\n * @deprecated since 8.0.0 Use `fontMetrics.fontSize` instead.\n */\n get size() {\n deprecation(v8_0_0, \"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead.\");\n return this.fontMetrics.fontSize;\n }\n /**\n * The kind of distance field for this font or \"none\".\n * @deprecated since 8.0.0 Use `distanceField.type` instead.\n */\n get distanceFieldRange() {\n deprecation(v8_0_0, \"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead.\");\n return this.distanceField.range;\n }\n /**\n * The range of the distance field in pixels.\n * @deprecated since 8.0.0 Use `distanceField.range` instead.\n */\n get distanceFieldType() {\n deprecation(v8_0_0, \"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead.\");\n return this.distanceField.type;\n }\n destroy(destroyTextures = false) {\n this.emit(\"destroy\", this);\n this.removeAllListeners();\n for (const i in this.chars) {\n this.chars[i].texture.destroy();\n }\n this.chars = null;\n if (destroyTextures) {\n this.pages.forEach((page) => page.texture.destroy(true));\n this.pages = null;\n }\n }\n}\n\nexport { AbstractBitmapFont };\n//# sourceMappingURL=AbstractBitmapFont.mjs.map\n","\"use strict\";\nfunction resolveCharacters(chars) {\n if (chars === \"\") {\n return [];\n }\n if (typeof chars === \"string\") {\n chars = [chars];\n }\n const result = [];\n for (let i = 0, j = chars.length; i < j; i++) {\n const item = chars[i];\n if (Array.isArray(item)) {\n if (item.length !== 2) {\n throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${item.length}.`);\n }\n if (item[0].length === 0 || item[1].length === 0) {\n throw new Error(\"[BitmapFont]: Invalid character delimiter.\");\n }\n const startCode = item[0].charCodeAt(0);\n const endCode = item[1].charCodeAt(0);\n if (endCode < startCode) {\n throw new Error(\"[BitmapFont]: Invalid character range.\");\n }\n for (let i2 = startCode, j2 = endCode; i2 <= j2; i2++) {\n result.push(String.fromCharCode(i2));\n }\n } else {\n result.push(...Array.from(item));\n }\n }\n if (result.length === 0) {\n throw new Error(\"[BitmapFont]: Empty set when resolving characters.\");\n }\n return result;\n}\n\nexport { resolveCharacters };\n//# sourceMappingURL=resolveCharacters.mjs.map\n","import { Color } from '../../color/Color.mjs';\nimport { Rectangle } from '../../maths/shapes/Rectangle.mjs';\nimport { CanvasPool } from '../../rendering/renderers/shared/texture/CanvasPool.mjs';\nimport { ImageSource } from '../../rendering/renderers/shared/texture/sources/ImageSource.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { CanvasTextMetrics } from '../text/canvas/CanvasTextMetrics.mjs';\nimport { fontStringFromTextStyle } from '../text/canvas/utils/fontStringFromTextStyle.mjs';\nimport { getCanvasFillStyle } from '../text/canvas/utils/getCanvasFillStyle.mjs';\nimport { AbstractBitmapFont } from './AbstractBitmapFont.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\n\n\"use strict\";\nclass DynamicBitmapFont extends AbstractBitmapFont {\n /**\n * @param options - The options for the dynamic bitmap font.\n */\n constructor(options) {\n super();\n /**\n * this is a resolution modifier for the font size..\n * texture resolution will also be used to scale texture according to its font size also\n */\n this.resolution = 1;\n /** The pages of the font. */\n this.pages = [];\n this._padding = 4;\n this._measureCache = /* @__PURE__ */ Object.create(null);\n this._currentChars = [];\n this._currentX = 0;\n this._currentY = 0;\n this._currentPageIndex = -1;\n this._skipKerning = false;\n const dynamicOptions = options;\n const style = dynamicOptions.style.clone();\n if (dynamicOptions.overrideFill) {\n style._fill.color = 16777215;\n style._fill.alpha = 1;\n style._fill.texture = Texture.WHITE;\n style._fill.fill = null;\n }\n const requestedFontSize = style.fontSize;\n style.fontSize = this.baseMeasurementFontSize;\n const font = fontStringFromTextStyle(style);\n if (dynamicOptions.overrideSize) {\n if (style._stroke) {\n style._stroke.width *= this.baseRenderedFontSize / requestedFontSize;\n }\n } else {\n style.fontSize = this.baseRenderedFontSize = requestedFontSize;\n }\n this._style = style;\n this._skipKerning = dynamicOptions.skipKerning ?? false;\n this.resolution = dynamicOptions.resolution ?? 1;\n this._padding = dynamicOptions.padding ?? 4;\n this.fontMetrics = CanvasTextMetrics.measureFont(font);\n this.lineHeight = style.lineHeight || this.fontMetrics.fontSize || style.fontSize;\n }\n ensureCharacters(chars) {\n const charList = resolveCharacters(chars).filter((char) => !this._currentChars.includes(char)).filter((char, index, self) => self.indexOf(char) === index);\n if (!charList.length)\n return;\n this._currentChars = [...this._currentChars, ...charList];\n let pageData;\n if (this._currentPageIndex === -1) {\n pageData = this._nextPage();\n } else {\n pageData = this.pages[this._currentPageIndex];\n }\n let { canvas, context } = pageData.canvasAndContext;\n let textureSource = pageData.texture.source;\n const style = this._style;\n let currentX = this._currentX;\n let currentY = this._currentY;\n const fontScale = this.baseRenderedFontSize / this.baseMeasurementFontSize;\n const padding = this._padding * fontScale;\n const widthScale = style.fontStyle === \"italic\" ? 2 : 1;\n let maxCharHeight = 0;\n let skipTexture = false;\n for (let i = 0; i < charList.length; i++) {\n const char = charList[i];\n const metrics = CanvasTextMetrics.measureText(char, style, canvas, false);\n metrics.lineHeight = metrics.height;\n const width = widthScale * metrics.width * fontScale;\n const height = metrics.height * fontScale;\n const paddedWidth = width + padding * 2;\n const paddedHeight = height + padding * 2;\n skipTexture = false;\n if (char !== \"\\n\" && char !== \"\\r\" && char !== \"\t\" && char !== \" \") {\n skipTexture = true;\n maxCharHeight = Math.ceil(Math.max(paddedHeight, maxCharHeight));\n }\n if (currentX + paddedWidth > 512) {\n currentY += maxCharHeight;\n maxCharHeight = paddedHeight;\n currentX = 0;\n if (currentY + maxCharHeight > 512) {\n textureSource.update();\n const pageData2 = this._nextPage();\n canvas = pageData2.canvasAndContext.canvas;\n context = pageData2.canvasAndContext.context;\n textureSource = pageData2.texture.source;\n currentY = 0;\n }\n }\n const xAdvance = width / fontScale - (style.dropShadow?.distance ?? 0) - (style._stroke?.width ?? 0);\n this.chars[char] = {\n id: char.codePointAt(0),\n xOffset: -this._padding,\n yOffset: -this._padding,\n xAdvance,\n kerning: {}\n };\n if (skipTexture) {\n this._drawGlyph(\n context,\n metrics,\n currentX + padding,\n currentY + padding,\n fontScale,\n style\n );\n const px = textureSource.width * fontScale;\n const py = textureSource.height * fontScale;\n const frame = new Rectangle(\n currentX / px * textureSource.width,\n currentY / py * textureSource.height,\n paddedWidth / px * textureSource.width,\n paddedHeight / py * textureSource.height\n );\n this.chars[char].texture = new Texture({\n source: textureSource,\n frame\n });\n currentX += Math.ceil(paddedWidth);\n }\n }\n textureSource.update();\n this._currentX = currentX;\n this._currentY = currentY;\n this._skipKerning && this._applyKerning(charList, context);\n }\n /**\n * @deprecated since 8.0.0\n * The map of base page textures (i.e., sheets of glyphs).\n */\n get pageTextures() {\n deprecation(v8_0_0, \"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead.\");\n return this.pages;\n }\n _applyKerning(newChars, context) {\n const measureCache = this._measureCache;\n for (let i = 0; i < newChars.length; i++) {\n const first = newChars[i];\n for (let j = 0; j < this._currentChars.length; j++) {\n const second = this._currentChars[j];\n let c1 = measureCache[first];\n if (!c1)\n c1 = measureCache[first] = context.measureText(first).width;\n let c2 = measureCache[second];\n if (!c2)\n c2 = measureCache[second] = context.measureText(second).width;\n let total = context.measureText(first + second).width;\n let amount = total - (c1 + c2);\n if (amount) {\n this.chars[first].kerning[second] = amount;\n }\n total = context.measureText(first + second).width;\n amount = total - (c1 + c2);\n if (amount) {\n this.chars[second].kerning[first] = amount;\n }\n }\n }\n }\n _nextPage() {\n this._currentPageIndex++;\n const textureResolution = this.resolution;\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(512, 512, textureResolution);\n this._setupContext(canvasAndContext.context, this._style, textureResolution);\n const resolution = textureResolution * (this.baseRenderedFontSize / this.baseMeasurementFontSize);\n const texture = new Texture({\n source: new ImageSource({\n resource: canvasAndContext.canvas,\n resolution,\n alphaMode: \"premultiply-alpha-on-upload\"\n })\n });\n const pageData = {\n canvasAndContext,\n texture\n };\n this.pages[this._currentPageIndex] = pageData;\n return pageData;\n }\n // canvas style!\n _setupContext(context, style, resolution) {\n style.fontSize = this.baseRenderedFontSize;\n context.scale(resolution, resolution);\n context.font = fontStringFromTextStyle(style);\n style.fontSize = this.baseMeasurementFontSize;\n context.textBaseline = style.textBaseline;\n const stroke = style._stroke;\n const strokeThickness = stroke?.width ?? 0;\n if (stroke) {\n context.lineWidth = strokeThickness;\n context.lineJoin = stroke.join;\n context.miterLimit = stroke.miterLimit;\n context.strokeStyle = getCanvasFillStyle(stroke, context);\n }\n if (style._fill) {\n context.fillStyle = getCanvasFillStyle(style._fill, context);\n }\n if (style.dropShadow) {\n const shadowOptions = style.dropShadow;\n const rgb = Color.shared.setValue(shadowOptions.color).toArray();\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n context.shadowColor = `rgba(${rgb[0] * 255},${rgb[1] * 255},${rgb[2] * 255},${shadowOptions.alpha})`;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance;\n } else {\n context.shadowColor = \"black\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n }\n _drawGlyph(context, metrics, x, y, fontScale, style) {\n const char = metrics.text;\n const fontProperties = metrics.fontProperties;\n const stroke = style._stroke;\n const strokeThickness = (stroke?.width ?? 0) * fontScale;\n const tx = x + strokeThickness / 2;\n const ty = y - strokeThickness / 2;\n const descent = fontProperties.descent * fontScale;\n const lineHeight = metrics.lineHeight * fontScale;\n if (style.stroke && strokeThickness) {\n context.strokeText(char, tx, ty + lineHeight - descent);\n }\n if (style._fill) {\n context.fillText(char, tx, ty + lineHeight - descent);\n }\n }\n destroy() {\n super.destroy();\n for (let i = 0; i < this.pages.length; i++) {\n const { canvasAndContext, texture } = this.pages[i];\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n texture.destroy(true);\n }\n this.pages = null;\n }\n}\n\nexport { DynamicBitmapFont };\n//# sourceMappingURL=DynamicBitmapFont.mjs.map\n","\"use strict\";\nfunction getBitmapTextLayout(chars, style, font) {\n const layoutData = {\n width: 0,\n height: 0,\n offsetY: 0,\n scale: style.fontSize / font.baseMeasurementFontSize,\n lines: [{\n width: 0,\n charPositions: [],\n spaceWidth: 0,\n spacesIndex: [],\n chars: []\n }]\n };\n layoutData.offsetY = font.baseLineOffset;\n let currentLine = layoutData.lines[0];\n let previousChar = null;\n let firstWord = true;\n const currentWord = {\n spaceWord: false,\n width: 0,\n start: 0,\n index: 0,\n // use index to not modify the array as we use it a lot!\n positions: [],\n chars: []\n };\n const nextWord = (word) => {\n const start = currentLine.width;\n for (let j = 0; j < currentWord.index; j++) {\n const position = word.positions[j];\n currentLine.chars.push(word.chars[j]);\n currentLine.charPositions.push(position + start);\n }\n currentLine.width += word.width;\n firstWord = false;\n currentWord.width = 0;\n currentWord.index = 0;\n currentWord.chars.length = 0;\n };\n const nextLine = () => {\n let index = currentLine.chars.length - 1;\n let lastChar = currentLine.chars[index];\n while (lastChar === \" \") {\n currentLine.width -= font.chars[lastChar].xAdvance;\n lastChar = currentLine.chars[--index];\n }\n layoutData.width = Math.max(layoutData.width, currentLine.width);\n currentLine = {\n width: 0,\n charPositions: [],\n chars: [],\n spaceWidth: 0,\n spacesIndex: []\n };\n firstWord = true;\n layoutData.lines.push(currentLine);\n layoutData.height += font.lineHeight;\n };\n const scale = font.baseMeasurementFontSize / style.fontSize;\n const adjustedLetterSpacing = style.letterSpacing * scale;\n const adjustedWordWrapWidth = style.wordWrapWidth * scale;\n for (let i = 0; i < chars.length + 1; i++) {\n let char;\n const isEnd = i === chars.length;\n if (!isEnd) {\n char = chars[i];\n }\n const charData = font.chars[char] || font.chars[\" \"];\n const isSpace = /(?:\\s)/.test(char);\n const isWordBreak = isSpace || char === \"\\r\" || char === \"\\n\" || isEnd;\n if (isWordBreak) {\n const addWordToNextLine = !firstWord && style.wordWrap && currentLine.width + currentWord.width - adjustedLetterSpacing > adjustedWordWrapWidth;\n if (addWordToNextLine) {\n nextLine();\n nextWord(currentWord);\n if (!isEnd) {\n currentLine.charPositions.push(0);\n }\n } else {\n currentWord.start = currentLine.width;\n nextWord(currentWord);\n if (!isEnd) {\n currentLine.charPositions.push(0);\n }\n }\n if (char === \"\\r\" || char === \"\\n\") {\n if (currentLine.width !== 0) {\n nextLine();\n }\n } else if (!isEnd) {\n const spaceWidth = charData.xAdvance + (charData.kerning[previousChar] || 0) + adjustedLetterSpacing;\n currentLine.width += spaceWidth;\n currentLine.spaceWidth = spaceWidth;\n currentLine.spacesIndex.push(currentLine.charPositions.length);\n currentLine.chars.push(char);\n }\n } else {\n const kerning = charData.kerning[previousChar] || 0;\n const nextCharWidth = charData.xAdvance + kerning + adjustedLetterSpacing;\n currentWord.positions[currentWord.index++] = currentWord.width + kerning;\n currentWord.chars.push(char);\n currentWord.width += nextCharWidth;\n }\n previousChar = char;\n }\n nextLine();\n if (style.align === \"center\") {\n alignCenter(layoutData);\n } else if (style.align === \"right\") {\n alignRight(layoutData);\n } else if (style.align === \"justify\") {\n alignJustify(layoutData);\n }\n return layoutData;\n}\nfunction alignCenter(measurementData) {\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n const offset = measurementData.width / 2 - line.width / 2;\n for (let j = 0; j < line.charPositions.length; j++) {\n line.charPositions[j] += offset;\n }\n }\n}\nfunction alignRight(measurementData) {\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n const offset = measurementData.width - line.width;\n for (let j = 0; j < line.charPositions.length; j++) {\n line.charPositions[j] += offset;\n }\n }\n}\nfunction alignJustify(measurementData) {\n const width = measurementData.width;\n for (let i = 0; i < measurementData.lines.length; i++) {\n const line = measurementData.lines[i];\n let indy = 0;\n let spaceIndex = line.spacesIndex[indy++];\n let offset = 0;\n const totalSpaces = line.spacesIndex.length;\n const newSpaceWidth = (width - line.width) / totalSpaces;\n const spaceWidth = newSpaceWidth;\n for (let j = 0; j < line.charPositions.length; j++) {\n if (j === spaceIndex) {\n spaceIndex = line.spacesIndex[indy++];\n offset += spaceWidth;\n }\n line.charPositions[j] += offset;\n }\n }\n}\n\nexport { getBitmapTextLayout };\n//# sourceMappingURL=getBitmapTextLayout.mjs.map\n","import { Cache } from '../../assets/cache/Cache.mjs';\nimport { deprecation, v8_0_0 } from '../../utils/logging/deprecation.mjs';\nimport { TextStyle } from '../text/TextStyle.mjs';\nimport { DynamicBitmapFont } from './DynamicBitmapFont.mjs';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout.mjs';\nimport { resolveCharacters } from './utils/resolveCharacters.mjs';\n\n\"use strict\";\nclass BitmapFontManagerClass {\n constructor() {\n /**\n * This character set includes all the letters in the alphabet (both lower- and upper- case).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.ALPHA })\n */\n this.ALPHA = [[\"a\", \"z\"], [\"A\", \"Z\"], \" \"];\n /**\n * This character set includes all decimal digits (from 0 to 9).\n * @type {string[][]}\n * @example\n * BitmapFont.from('ExampleFont', style, { chars: BitmapFont.NUMERIC })\n */\n this.NUMERIC = [[\"0\", \"9\"]];\n /**\n * This character set is the union of `BitmapFont.ALPHA` and `BitmapFont.NUMERIC`.\n * @type {string[][]}\n */\n this.ALPHANUMERIC = [[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \" \"];\n /**\n * This character set consists of all the ASCII table.\n * @member {string[][]}\n * @see http://www.asciitable.com/\n */\n this.ASCII = [[\" \", \"~\"]];\n /** Default options for installing a new BitmapFont. */\n this.defaultOptions = {\n chars: this.ALPHANUMERIC,\n resolution: 1,\n padding: 4,\n skipKerning: false\n };\n }\n /**\n * Get a font for the specified text and style.\n * @param text - The text to get the font for\n * @param style - The style to use\n */\n getFont(text, style) {\n let fontFamilyKey = `${style.fontFamily}-bitmap`;\n let overrideFill = true;\n if (style._fill.fill) {\n fontFamilyKey += style._fill.fill.uid;\n overrideFill = false;\n }\n if (!Cache.has(fontFamilyKey)) {\n const fnt = new DynamicBitmapFont({\n style,\n overrideFill,\n overrideSize: true,\n ...this.defaultOptions\n });\n fnt.once(\"destroy\", () => Cache.remove(fontFamilyKey));\n Cache.set(\n fontFamilyKey,\n fnt\n );\n }\n const dynamicFont = Cache.get(fontFamilyKey);\n dynamicFont.ensureCharacters?.(text);\n return dynamicFont;\n }\n /**\n * Get the layout of a text for the specified style.\n * @param text - The text to get the layout for\n * @param style - The style to use\n */\n getLayout(text, style) {\n const bitmapFont = this.getFont(text, style);\n return getBitmapTextLayout(text.split(\"\"), style, bitmapFont);\n }\n /**\n * Measure the text using the specified style.\n * @param text - The text to measure\n * @param style - The style to use\n */\n measureText(text, style) {\n return this.getLayout(text, style);\n }\n // eslint-disable-next-line max-len\n install(...args) {\n let options = args[0];\n if (typeof options === \"string\") {\n options = {\n name: options,\n style: args[1],\n chars: args[2]?.chars,\n resolution: args[2]?.resolution,\n padding: args[2]?.padding,\n skipKerning: args[2]?.skipKerning\n };\n deprecation(v8_0_0, \"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})\");\n }\n const name = options?.name;\n if (!name) {\n throw new Error(\"[BitmapFontManager] Property `name` is required.\");\n }\n options = { ...this.defaultOptions, ...options };\n const textStyle = options.style;\n const style = textStyle instanceof TextStyle ? textStyle : new TextStyle(textStyle);\n const overrideFill = style._fill.fill !== null && style._fill.fill !== void 0;\n const font = new DynamicBitmapFont({\n style,\n overrideFill,\n skipKerning: options.skipKerning,\n padding: options.padding,\n resolution: options.resolution,\n overrideSize: false\n });\n const flatChars = resolveCharacters(options.chars);\n font.ensureCharacters(flatChars.join(\"\"));\n Cache.set(`${name}-bitmap`, font);\n font.once(\"destroy\", () => Cache.remove(`${name}-bitmap`));\n return font;\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n uninstall(name) {\n const cacheKey = `${name}-bitmap`;\n const font = Cache.get(cacheKey);\n if (font) {\n Cache.remove(cacheKey);\n font.destroy();\n }\n }\n}\nconst BitmapFontManager = new BitmapFontManagerClass();\n\nexport { BitmapFontManager };\n//# sourceMappingURL=BitmapFontManager.mjs.map\n","import { Rectangle } from '../../maths/shapes/Rectangle.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { AbstractBitmapFont } from './AbstractBitmapFont.mjs';\nimport { BitmapFontManager } from './BitmapFontManager.mjs';\n\n\"use strict\";\nclass BitmapFont extends AbstractBitmapFont {\n constructor(options, url) {\n super();\n const { textures, data } = options;\n Object.keys(data.pages).forEach((key) => {\n const pageData = data.pages[parseInt(key, 10)];\n const texture = textures[pageData.id];\n this.pages.push({ texture });\n });\n Object.keys(data.chars).forEach((key) => {\n const charData = data.chars[key];\n const {\n frame: textureFrame,\n source: textureSource\n } = textures[charData.page];\n const frameReal = new Rectangle(\n charData.x + textureFrame.x,\n charData.y + textureFrame.y,\n charData.width,\n charData.height\n );\n const texture = new Texture({\n source: textureSource,\n frame: frameReal\n });\n this.chars[key] = {\n id: key.codePointAt(0),\n xOffset: charData.xOffset,\n yOffset: charData.yOffset,\n xAdvance: charData.xAdvance,\n kerning: charData.kerning ?? {},\n texture\n };\n });\n this.baseRenderedFontSize = data.fontSize;\n this.baseMeasurementFontSize = data.fontSize;\n this.fontMetrics = {\n ascent: 0,\n descent: 0,\n fontSize: data.fontSize\n };\n this.baseLineOffset = data.baseLineOffset;\n this.lineHeight = data.lineHeight;\n this.fontFamily = data.fontFamily;\n this.distanceField = data.distanceField ?? {\n type: \"none\",\n range: 0\n };\n this.url = url;\n }\n /** Destroys the BitmapFont object. */\n destroy() {\n super.destroy();\n for (let i = 0; i < this.pages.length; i++) {\n const { texture } = this.pages[i];\n texture.destroy(true);\n }\n this.pages = null;\n }\n /**\n * Generates a bitmap-font for the given style and character set\n * @param options - Setup options for font generation.\n * @returns Font generated by style options.\n * @example\n * import { BitmapFont, BitmapText } from 'pixi.js';\n *\n * BitmapFont.install('TitleFont', {\n * fontFamily: 'Arial',\n * fontSize: 12,\n * strokeThickness: 2,\n * fill: 'purple',\n * });\n *\n * const title = new BitmapText({ text: 'This is the title', fontFamily: 'TitleFont' });\n */\n static install(options) {\n BitmapFontManager.install(options);\n }\n /**\n * Uninstalls a bitmap font from the cache.\n * @param {string} name - The name of the bitmap font to uninstall.\n */\n static uninstall(name) {\n BitmapFontManager.uninstall(name);\n }\n}\n\nexport { BitmapFont };\n//# sourceMappingURL=BitmapFont.mjs.map\n","\"use strict\";\nconst bitmapFontTextParser = {\n test(data) {\n return typeof data === \"string\" && data.startsWith(\"info face=\");\n },\n parse(txt) {\n const items = txt.match(/^[a-z]+\\s+.+$/gm);\n const rawData = {\n info: [],\n common: [],\n page: [],\n char: [],\n chars: [],\n kerning: [],\n kernings: [],\n distanceField: []\n };\n for (const i in items) {\n const name = items[i].match(/^[a-z]+/gm)[0];\n const attributeList = items[i].match(/[a-zA-Z]+=([^\\s\"']+|\"([^\"]*)\")/gm);\n const itemData = {};\n for (const i2 in attributeList) {\n const split = attributeList[i2].split(\"=\");\n const key = split[0];\n const strValue = split[1].replace(/\"/gm, \"\");\n const floatValue = parseFloat(strValue);\n const value = isNaN(floatValue) ? strValue : floatValue;\n itemData[key] = value;\n }\n rawData[name].push(itemData);\n }\n const font = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: \"\",\n distanceField: null,\n baseLineOffset: 0\n };\n const [info] = rawData.info;\n const [common] = rawData.common;\n const [distanceField] = rawData.distanceField ?? [];\n if (distanceField) {\n font.distanceField = {\n range: parseInt(distanceField.distanceRange, 10),\n type: distanceField.fieldType\n };\n }\n font.fontSize = parseInt(info.size, 10);\n font.fontFamily = info.face;\n font.lineHeight = parseInt(common.lineHeight, 10);\n const page = rawData.page;\n for (let i = 0; i < page.length; i++) {\n font.pages.push({\n id: parseInt(page[i].id, 10) || 0,\n file: page[i].file\n });\n }\n const map = {};\n font.baseLineOffset = font.lineHeight - parseInt(common.base, 10);\n const char = rawData.char;\n for (let i = 0; i < char.length; i++) {\n const charNode = char[i];\n const id = parseInt(charNode.id, 10);\n let letter = charNode.letter ?? charNode.char ?? String.fromCharCode(id);\n if (letter === \"space\")\n letter = \" \";\n map[id] = letter;\n font.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.page, 10) || 0,\n x: parseInt(charNode.x, 10),\n y: parseInt(charNode.y, 10),\n width: parseInt(charNode.width, 10),\n height: parseInt(charNode.height, 10),\n xOffset: parseInt(charNode.xoffset, 10),\n yOffset: parseInt(charNode.yoffset, 10),\n xAdvance: parseInt(charNode.xadvance, 10),\n kerning: {}\n };\n }\n const kerning = rawData.kerning || [];\n for (let i = 0; i < kerning.length; i++) {\n const first = parseInt(kerning[i].first, 10);\n const second = parseInt(kerning[i].second, 10);\n const amount = parseInt(kerning[i].amount, 10);\n font.chars[map[second]].kerning[map[first]] = amount;\n }\n return font;\n }\n};\n\nexport { bitmapFontTextParser };\n//# sourceMappingURL=bitmapFontTextParser.mjs.map\n","\"use strict\";\nconst bitmapFontXMLParser = {\n test(data) {\n const xml = data;\n return typeof xml !== \"string\" && \"getElementsByTagName\" in xml && xml.getElementsByTagName(\"page\").length && xml.getElementsByTagName(\"info\")[0].getAttribute(\"face\") !== null;\n },\n parse(xml) {\n const data = {\n chars: {},\n pages: [],\n lineHeight: 0,\n fontSize: 0,\n fontFamily: \"\",\n distanceField: null,\n baseLineOffset: 0\n };\n const info = xml.getElementsByTagName(\"info\")[0];\n const common = xml.getElementsByTagName(\"common\")[0];\n const distanceField = xml.getElementsByTagName(\"distanceField\")[0];\n if (distanceField) {\n data.distanceField = {\n type: distanceField.getAttribute(\"fieldType\"),\n range: parseInt(distanceField.getAttribute(\"distanceRange\"), 10)\n };\n }\n const page = xml.getElementsByTagName(\"page\");\n const char = xml.getElementsByTagName(\"char\");\n const kerning = xml.getElementsByTagName(\"kerning\");\n data.fontSize = parseInt(info.getAttribute(\"size\"), 10);\n data.fontFamily = info.getAttribute(\"face\");\n data.lineHeight = parseInt(common.getAttribute(\"lineHeight\"), 10);\n for (let i = 0; i < page.length; i++) {\n data.pages.push({\n id: parseInt(page[i].getAttribute(\"id\"), 10) || 0,\n file: page[i].getAttribute(\"file\")\n });\n }\n const map = {};\n data.baseLineOffset = data.lineHeight - parseInt(common.getAttribute(\"base\"), 10);\n for (let i = 0; i < char.length; i++) {\n const charNode = char[i];\n const id = parseInt(charNode.getAttribute(\"id\"), 10);\n let letter = charNode.getAttribute(\"letter\") ?? charNode.getAttribute(\"char\") ?? String.fromCharCode(id);\n if (letter === \"space\")\n letter = \" \";\n map[id] = letter;\n data.chars[letter] = {\n id,\n // texture deets..\n page: parseInt(charNode.getAttribute(\"page\"), 10) || 0,\n x: parseInt(charNode.getAttribute(\"x\"), 10),\n y: parseInt(charNode.getAttribute(\"y\"), 10),\n width: parseInt(charNode.getAttribute(\"width\"), 10),\n height: parseInt(charNode.getAttribute(\"height\"), 10),\n // render deets..\n xOffset: parseInt(charNode.getAttribute(\"xoffset\"), 10),\n yOffset: parseInt(charNode.getAttribute(\"yoffset\"), 10),\n // + baseLineOffset,\n xAdvance: parseInt(charNode.getAttribute(\"xadvance\"), 10),\n kerning: {}\n };\n }\n for (let i = 0; i < kerning.length; i++) {\n const first = parseInt(kerning[i].getAttribute(\"first\"), 10);\n const second = parseInt(kerning[i].getAttribute(\"second\"), 10);\n const amount = parseInt(kerning[i].getAttribute(\"amount\"), 10);\n data.chars[map[second]].kerning[map[first]] = amount;\n }\n return data;\n }\n};\n\nexport { bitmapFontXMLParser };\n//# sourceMappingURL=bitmapFontXMLParser.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { bitmapFontXMLParser } from './bitmapFontXMLParser.mjs';\n\n\"use strict\";\nconst bitmapFontXMLStringParser = {\n test(data) {\n if (typeof data === \"string\" && data.includes(\"<font>\")) {\n return bitmapFontXMLParser.test(DOMAdapter.get().parseXML(data));\n }\n return false;\n },\n parse(data) {\n return bitmapFontXMLParser.parse(DOMAdapter.get().parseXML(data));\n }\n};\n\nexport { bitmapFontXMLStringParser };\n//# sourceMappingURL=bitmapFontXMLStringParser.mjs.map\n","import { LoaderParserPriority } from '../../../assets/loader/parsers/LoaderParser.mjs';\nimport { copySearchParams } from '../../../assets/utils/copySearchParams.mjs';\nimport { DOMAdapter } from '../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { path } from '../../../utils/path.mjs';\nimport { BitmapFont } from '../BitmapFont.mjs';\nimport { bitmapFontTextParser } from './bitmapFontTextParser.mjs';\nimport { bitmapFontXMLStringParser } from './bitmapFontXMLStringParser.mjs';\n\n\"use strict\";\nconst validExtensions = [\".xml\", \".fnt\"];\nconst bitmapFontCachePlugin = {\n extension: ExtensionType.CacheParser,\n test: (asset) => asset instanceof BitmapFont,\n getCacheableAssets(keys, asset) {\n const out = {};\n keys.forEach((key) => {\n out[key] = asset;\n });\n out[`${asset.fontFamily}-bitmap`] = asset;\n return out;\n }\n};\nconst loadBitmapFont = {\n extension: {\n type: ExtensionType.LoadParser,\n priority: LoaderParserPriority.Normal\n },\n test(url) {\n return validExtensions.includes(path.extname(url).toLowerCase());\n },\n async testParse(data) {\n return bitmapFontTextParser.test(data) || bitmapFontXMLStringParser.test(data);\n },\n async parse(asset, data, loader) {\n const bitmapFontData = bitmapFontTextParser.test(asset) ? bitmapFontTextParser.parse(asset) : bitmapFontXMLStringParser.parse(asset);\n const { src } = data;\n const { pages } = bitmapFontData;\n const textureUrls = [];\n for (let i = 0; i < pages.length; ++i) {\n const pageFile = pages[i].file;\n let imagePath = path.join(path.dirname(src), pageFile);\n imagePath = copySearchParams(imagePath, src);\n textureUrls.push(imagePath);\n }\n const loadedTextures = await loader.load(textureUrls);\n const textures = textureUrls.map((url) => loadedTextures[url]);\n const bitmapFont = new BitmapFont({\n data: bitmapFontData,\n textures\n }, src);\n return bitmapFont;\n },\n async load(url, _options) {\n const response = await DOMAdapter.get().fetch(url);\n return await response.text();\n },\n async unload(bitmapFont, _resolvedAsset, loader) {\n await Promise.all(bitmapFont.pages.map((page) => loader.unload(page.texture.source._sourceOrigin)));\n bitmapFont.destroy();\n }\n};\n\nexport { bitmapFontCachePlugin, loadBitmapFont };\n//# sourceMappingURL=loadBitmapFont.mjs.map\n","\"use strict\";\nconst localUniformMSDFBit = {\n name: \"local-uniform-msdf-bit\",\n vertex: {\n header: (\n /* wgsl */\n `\n struct LocalUniforms {\n uColor:vec4<f32>,\n uTransformMatrix:mat3x3<f32>,\n uDistance: f32,\n uRound:f32,\n }\n\n @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n `\n vColor *= localUniforms.uColor;\n modelMatrix *= localUniforms.uTransformMatrix;\n `\n ),\n end: (\n /* wgsl */\n `\n if(localUniforms.uRound == 1)\n {\n vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);\n }\n `\n )\n },\n fragment: {\n header: (\n /* wgsl */\n `\n struct LocalUniforms {\n uColor:vec4<f32>,\n uTransformMatrix:mat3x3<f32>,\n uDistance: f32\n }\n\n @group(2) @binding(0) var<uniform> localUniforms : LocalUniforms;\n `\n ),\n main: (\n /* wgsl */\n ` \n outColor = vColor * calculateMSDFAlpha(outColor, localUniforms.uDistance);\n `\n )\n }\n};\nconst localUniformMSDFBitGl = {\n name: \"local-uniform-msdf-bit\",\n vertex: {\n header: (\n /* glsl */\n `\n uniform mat3 uTransformMatrix;\n uniform vec4 uColor;\n uniform float uRound;\n `\n ),\n main: (\n /* glsl */\n `\n vColor *= uColor;\n modelMatrix *= uTransformMatrix;\n `\n ),\n end: (\n /* glsl */\n `\n if(uRound == 1.)\n {\n gl_Position.xy = roundPixels(gl_Position.xy, uResolution);\n }\n `\n )\n },\n fragment: {\n header: (\n /* glsl */\n `\n uniform float uDistance;\n `\n ),\n main: (\n /* glsl */\n ` \n outColor = vColor * calculateMSDFAlpha(outColor, uDistance);\n `\n )\n }\n};\n\nexport { localUniformMSDFBit, localUniformMSDFBitGl };\n//# sourceMappingURL=localUniformMSDFBit.mjs.map\n","\"use strict\";\nconst mSDFBit = {\n name: \"msdf-bit\",\n fragment: {\n header: (\n /* wgsl */\n `\n fn calculateMSDFAlpha(msdfColor:vec4<f32>, distance:f32) -> f32 {\n \n // MSDF\n var median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n\n var screenPxDistance = distance * (median - 0.5);\n var alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `\n )\n }\n};\nconst mSDFBitGl = {\n name: \"msdf-bit\",\n fragment: {\n header: (\n /* glsl */\n `\n float calculateMSDFAlpha(vec4 msdfColor, float distance) {\n \n // MSDF\n float median = msdfColor.r + msdfColor.g + msdfColor.b -\n min(msdfColor.r, min(msdfColor.g, msdfColor.b)) -\n max(msdfColor.r, max(msdfColor.g, msdfColor.b));\n \n // SDF\n median = min(median, msdfColor.a);\n \n float screenPxDistance = distance * (median - 0.5);\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\n \n if (median < 0.01) {\n alpha = 0.0;\n } else if (median > 0.99) {\n alpha = 1.0;\n }\n\n return alpha;\n }\n `\n )\n }\n};\n\nexport { mSDFBit, mSDFBitGl };\n//# sourceMappingURL=mSDFBit.mjs.map\n","import { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const.mjs';\nimport { compileHighShaderGpuProgram, compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit, colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit, generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBit, roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { batchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/batchSamplersUniformGroup.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\nimport { localUniformMSDFBit, localUniformMSDFBitGl } from './shader-bits/localUniformMSDFBit.mjs';\nimport { mSDFBit, mSDFBitGl } from './shader-bits/mSDFBit.mjs';\n\n\"use strict\";\nclass SdfShader extends Shader {\n constructor() {\n const uniforms = new UniformGroup({\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uDistance: { value: 4, type: \"f32\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"sdf-shader\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n localUniformMSDFBit,\n mSDFBit,\n roundPixelsBit\n ]\n });\n const glProgram = compileHighShaderGlProgram({\n name: \"sdf-shader\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(MAX_TEXTURES),\n localUniformMSDFBitGl,\n mSDFBitGl,\n roundPixelsBitGl\n ]\n });\n super({\n glProgram,\n gpuProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: batchSamplersUniformGroup\n }\n });\n }\n}\n\nexport { SdfShader };\n//# sourceMappingURL=SdfShader.mjs.map\n","import { Cache } from '../../assets/cache/Cache.mjs';\nimport { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { Graphics } from '../graphics/shared/Graphics.mjs';\nimport { SdfShader } from '../text/sdfShader/SdfShader.mjs';\nimport { BitmapFontManager } from './BitmapFontManager.mjs';\nimport { getBitmapTextLayout } from './utils/getBitmapTextLayout.mjs';\n\n\"use strict\";\nclass BitmapTextPipe {\n constructor(renderer) {\n this._gpuBitmapText = {};\n this._renderer = renderer;\n }\n validateRenderable(bitmapText) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n if (bitmapText._didTextUpdate) {\n bitmapText._didTextUpdate = false;\n this._updateContext(bitmapText, graphicsRenderable);\n }\n return this._renderer.renderPipes.graphics.validateRenderable(graphicsRenderable);\n }\n addRenderable(bitmapText, instructionSet) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n syncWithProxy(bitmapText, graphicsRenderable);\n if (bitmapText._didTextUpdate) {\n bitmapText._didTextUpdate = false;\n this._updateContext(bitmapText, graphicsRenderable);\n }\n this._renderer.renderPipes.graphics.addRenderable(graphicsRenderable, instructionSet);\n if (graphicsRenderable.context.customShader) {\n this._updateDistanceField(bitmapText);\n }\n }\n destroyRenderable(bitmapText) {\n this._destroyRenderableByUid(bitmapText.uid);\n }\n _destroyRenderableByUid(renderableUid) {\n BigPool.return(this._gpuBitmapText[renderableUid]);\n this._gpuBitmapText[renderableUid] = null;\n }\n updateRenderable(bitmapText) {\n const graphicsRenderable = this._getGpuBitmapText(bitmapText);\n syncWithProxy(bitmapText, graphicsRenderable);\n this._renderer.renderPipes.graphics.updateRenderable(graphicsRenderable);\n if (graphicsRenderable.context.customShader) {\n this._updateDistanceField(bitmapText);\n }\n }\n _updateContext(bitmapText, proxyGraphics) {\n const { context } = proxyGraphics;\n const bitmapFont = BitmapFontManager.getFont(bitmapText.text, bitmapText._style);\n context.clear();\n if (bitmapFont.distanceField.type !== \"none\") {\n if (!context.customShader) {\n if (!this._sdfShader) {\n this._sdfShader = new SdfShader();\n }\n context.customShader = this._sdfShader;\n }\n }\n const chars = Array.from(bitmapText.text);\n const style = bitmapText._style;\n let currentY = (style._stroke?.width || 0) / 2;\n currentY += bitmapFont.baseLineOffset;\n const bitmapTextLayout = getBitmapTextLayout(chars, style, bitmapFont);\n let index = 0;\n const padding = style.padding;\n const scale = bitmapTextLayout.scale;\n context.translate(\n -bitmapText._anchor._x * bitmapTextLayout.width - padding,\n -bitmapText._anchor._y * (bitmapTextLayout.height + bitmapTextLayout.offsetY) - padding\n ).scale(scale, scale);\n const tint = style._fill.color;\n for (let i = 0; i < bitmapTextLayout.lines.length; i++) {\n const line = bitmapTextLayout.lines[i];\n for (let j = 0; j < line.charPositions.length; j++) {\n const char = chars[index++];\n const charData = bitmapFont.chars[char];\n if (charData?.texture) {\n context.texture(\n charData.texture,\n tint ? tint : \"black\",\n Math.round(line.charPositions[j] + charData.xOffset),\n Math.round(currentY + charData.yOffset)\n );\n }\n }\n currentY += bitmapFont.lineHeight;\n }\n }\n _getGpuBitmapText(bitmapText) {\n return this._gpuBitmapText[bitmapText.uid] || this.initGpuText(bitmapText);\n }\n initGpuText(bitmapText) {\n const proxyRenderable = BigPool.get(Graphics);\n this._gpuBitmapText[bitmapText.uid] = proxyRenderable;\n this._updateContext(bitmapText, proxyRenderable);\n bitmapText.on(\"destroyed\", () => {\n this.destroyRenderable(bitmapText);\n });\n return this._gpuBitmapText[bitmapText.uid];\n }\n _updateDistanceField(bitmapText) {\n const context = this._getGpuBitmapText(bitmapText).context;\n const fontFamily = bitmapText._style.fontFamily;\n const dynamicFont = Cache.get(`${fontFamily}-bitmap`);\n const { a, b, c, d } = bitmapText.groupTransform;\n const dx = Math.sqrt(a * a + b * b);\n const dy = Math.sqrt(c * c + d * d);\n const worldScale = (Math.abs(dx) + Math.abs(dy)) / 2;\n const fontScale = dynamicFont.baseRenderedFontSize / bitmapText._style.fontSize;\n const resolution = bitmapText.resolution ?? this._renderer.resolution;\n const distance = worldScale * dynamicFont.distanceField.range * (1 / fontScale) * resolution;\n context.customShader.resources.localUniforms.uniforms.uDistance = distance;\n }\n destroy() {\n for (const uid in this._gpuBitmapText) {\n this._destroyRenderableByUid(uid);\n }\n this._gpuBitmapText = null;\n this._sdfShader?.destroy(true);\n this._sdfShader = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBitmapTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"bitmapText\"\n};\nfunction syncWithProxy(container, proxy) {\n proxy.groupTransform = container.groupTransform;\n proxy.groupColorAlpha = container.groupColorAlpha;\n proxy.groupColor = container.groupColor;\n proxy.groupBlendMode = container.groupBlendMode;\n proxy.globalDisplayStatus = container.globalDisplayStatus;\n proxy.groupTransform = container.groupTransform;\n proxy.localDisplayStatus = container.localDisplayStatus;\n proxy.groupAlpha = container.groupAlpha;\n proxy._roundPixels = container._roundPixels;\n}\n\nexport { BitmapTextPipe };\n//# sourceMappingURL=BitmapTextPipe.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { loadBitmapFont, bitmapFontCachePlugin } from './asset/loadBitmapFont.mjs';\nimport { BitmapTextPipe } from './BitmapTextPipe.mjs';\n\n\"use strict\";\nextensions.add(BitmapTextPipe, loadBitmapFont, bitmapFontCachePlugin);\n//# sourceMappingURL=init.mjs.map\n","import { CanvasTextMetrics } from '../../text/canvas/CanvasTextMetrics.mjs';\nimport { HTMLTextRenderData } from '../HTMLTextRenderData.mjs';\n\n\"use strict\";\nlet tempHTMLTextRenderData;\nfunction measureHtmlText(text, style, fontStyleCSS, htmlTextRenderData) {\n htmlTextRenderData = htmlTextRenderData || tempHTMLTextRenderData || (tempHTMLTextRenderData = new HTMLTextRenderData());\n const { domElement, styleElement, svgRoot } = htmlTextRenderData;\n domElement.innerHTML = `<style>${style.cssStyle}</style><div>${text}</div>`;\n domElement.setAttribute(\"style\", \"transform-origin: top left; display: inline-block\");\n if (fontStyleCSS) {\n styleElement.textContent = fontStyleCSS;\n }\n document.body.appendChild(svgRoot);\n const contentBounds = domElement.getBoundingClientRect();\n svgRoot.remove();\n const descenderPadding = CanvasTextMetrics.measureFont(style.fontStyle).descent;\n return {\n width: contentBounds.width,\n height: contentBounds.height + descenderPadding\n };\n}\n\nexport { measureHtmlText };\n//# sourceMappingURL=measureHtmlText.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs';\nimport { updateQuadBounds } from '../../utils/data/updateQuadBounds.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../sprite/BatchableSprite.mjs';\n\n\"use strict\";\nclass HTMLTextPipe {\n constructor(renderer) {\n this._gpuText = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const newKey = htmlText._getKey();\n if (gpuText.textureNeedsUploading) {\n gpuText.textureNeedsUploading = false;\n return true;\n }\n if (gpuText.currentKey !== newKey) {\n return true;\n }\n return false;\n }\n addRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (htmlText._didTextUpdate) {\n this._updateText(htmlText);\n }\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n updateRenderable(htmlText) {\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (htmlText._didTextUpdate) {\n this._updateText(htmlText);\n }\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n destroyRenderable(htmlText) {\n this._destroyRenderableById(htmlText.uid);\n }\n _destroyRenderableById(htmlTextUid) {\n const gpuText = this._gpuText[htmlTextUid];\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n BigPool.return(gpuText.batchableSprite);\n this._gpuText[htmlTextUid] = null;\n }\n _updateText(htmlText) {\n const newKey = htmlText._getKey();\n const gpuText = this._getGpuText(htmlText);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.currentKey !== newKey) {\n this._updateGpuText(htmlText).catch((e) => {\n console.error(e);\n });\n }\n htmlText._didTextUpdate = false;\n const padding = htmlText._style.padding;\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n async _updateGpuText(htmlText) {\n htmlText._didTextUpdate = false;\n const gpuText = this._getGpuText(htmlText);\n if (gpuText.generatingTexture)\n return;\n const newKey = htmlText._getKey();\n this._renderer.htmlText.decreaseReferenceCount(gpuText.currentKey);\n gpuText.generatingTexture = true;\n gpuText.currentKey = newKey;\n const resolution = htmlText.resolution ?? this._renderer.resolution;\n const texture = await this._renderer.htmlText.getManagedTexture(\n htmlText.text,\n resolution,\n htmlText._style,\n htmlText._getKey()\n );\n const batchableSprite = gpuText.batchableSprite;\n batchableSprite.texture = gpuText.texture = texture;\n gpuText.generatingTexture = false;\n gpuText.textureNeedsUploading = true;\n htmlText.onViewUpdate();\n const padding = htmlText._style.padding;\n updateQuadBounds(batchableSprite.bounds, htmlText._anchor, batchableSprite.texture, padding);\n }\n _getGpuText(htmlText) {\n return this._gpuText[htmlText.uid] || this.initGpuText(htmlText);\n }\n initGpuText(htmlText) {\n const gpuTextData = {\n texture: Texture.EMPTY,\n currentKey: \"--\",\n batchableSprite: BigPool.get(BatchableSprite),\n textureNeedsUploading: false,\n generatingTexture: false\n };\n const batchableSprite = gpuTextData.batchableSprite;\n batchableSprite.renderable = htmlText;\n batchableSprite.texture = Texture.EMPTY;\n batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n batchableSprite.roundPixels = this._renderer._roundPixels | htmlText._roundPixels;\n this._gpuText[htmlText.uid] = gpuTextData;\n htmlText.on(\"destroyed\", () => {\n this.destroyRenderable(htmlText);\n });\n return gpuTextData;\n }\n destroy() {\n for (const i in this._gpuText) {\n this._destroyRenderableById(i);\n }\n this._gpuText = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nHTMLTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"htmlText\"\n};\n\nexport { HTMLTextPipe };\n//# sourceMappingURL=HTMLTextPipe.mjs.map\n","\"use strict\";\nconst nssvg = \"http://www.w3.org/2000/svg\";\nconst nsxhtml = \"http://www.w3.org/1999/xhtml\";\nclass HTMLTextRenderData {\n constructor() {\n this.svgRoot = document.createElementNS(nssvg, \"svg\");\n this.foreignObject = document.createElementNS(nssvg, \"foreignObject\");\n this.domElement = document.createElementNS(nsxhtml, \"div\");\n this.styleElement = document.createElementNS(nsxhtml, \"style\");\n this.image = new Image();\n const { foreignObject, svgRoot, styleElement, domElement } = this;\n foreignObject.setAttribute(\"width\", \"10000\");\n foreignObject.setAttribute(\"height\", \"10000\");\n foreignObject.style.overflow = \"hidden\";\n svgRoot.appendChild(foreignObject);\n foreignObject.appendChild(styleElement);\n foreignObject.appendChild(domElement);\n }\n}\n\nexport { HTMLTextRenderData, nssvg, nsxhtml };\n//# sourceMappingURL=HTMLTextRenderData.mjs.map\n","import { Color } from '../../../color/Color.mjs';\n\n\"use strict\";\nfunction textStyleToCSS(style) {\n const stroke = style._stroke;\n const fill = style._fill;\n const cssStyleString = [\n `color: ${Color.shared.setValue(fill.color).toHex()}`,\n `font-size: ${style.fontSize}px`,\n `font-family: ${style.fontFamily}`,\n `font-weight: ${style.fontWeight}`,\n `font-style: ${style.fontStyle}`,\n `font-variant: ${style.fontVariant}`,\n `letter-spacing: ${style.letterSpacing}px`,\n `text-align: ${style.align}`,\n `padding: ${style.padding}px`,\n `white-space: ${style.whiteSpace === \"pre\" && style.wordWrap ? \"pre-wrap\" : style.whiteSpace}`,\n ...style.lineHeight ? [`line-height: ${style.lineHeight}px`] : [],\n ...style.wordWrap ? [\n `word-wrap: ${style.breakWords ? \"break-all\" : \"break-word\"}`,\n `max-width: ${style.wordWrapWidth}px`\n ] : [],\n ...stroke ? [strokeToCSS(stroke)] : [],\n ...style.dropShadow ? [dropShadowToCSS(style.dropShadow)] : [],\n ...style.cssOverrides\n ].join(\";\");\n const cssStyles = [`div { ${cssStyleString} }`];\n tagStyleToCSS(style.tagStyles, cssStyles);\n return cssStyles.join(\" \");\n}\nfunction dropShadowToCSS(dropShadowStyle) {\n const color = Color.shared.setValue(dropShadowStyle.color).setAlpha(dropShadowStyle.alpha).toHexa();\n const x = Math.round(Math.cos(dropShadowStyle.angle) * dropShadowStyle.distance);\n const y = Math.round(Math.sin(dropShadowStyle.angle) * dropShadowStyle.distance);\n const position = `${x}px ${y}px`;\n if (dropShadowStyle.blur > 0) {\n return `text-shadow: ${position} ${dropShadowStyle.blur}px ${color}`;\n }\n return `text-shadow: ${position} ${color}`;\n}\nfunction strokeToCSS(stroke) {\n return [\n `-webkit-text-stroke-width: ${stroke.width}px`,\n `-webkit-text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n `text-stroke-width: ${stroke.width}px`,\n `text-stroke-color: ${Color.shared.setValue(stroke.color).toHex()}`,\n \"paint-order: stroke\"\n ].join(\";\");\n}\nconst templates = {\n fontSize: `font-size: {{VALUE}}px`,\n fontFamily: `font-family: {{VALUE}}`,\n fontWeight: `font-weight: {{VALUE}}`,\n fontStyle: `font-style: {{VALUE}}`,\n fontVariant: `font-variant: {{VALUE}}`,\n letterSpacing: `letter-spacing: {{VALUE}}px`,\n align: `text-align: {{VALUE}}`,\n padding: `padding: {{VALUE}}px`,\n whiteSpace: `white-space: {{VALUE}}`,\n lineHeight: `line-height: {{VALUE}}px`,\n wordWrapWidth: `max-width: {{VALUE}}px`\n};\nconst transform = {\n fill: (value) => `color: ${Color.shared.setValue(value).toHex()}`,\n breakWords: (value) => `word-wrap: ${value ? \"break-all\" : \"break-word\"}`,\n stroke: strokeToCSS,\n dropShadow: dropShadowToCSS\n};\nfunction tagStyleToCSS(tagStyles, out) {\n for (const i in tagStyles) {\n const tagStyle = tagStyles[i];\n const cssTagStyle = [];\n for (const j in tagStyle) {\n if (transform[j]) {\n cssTagStyle.push(transform[j](tagStyle[j]));\n } else if (templates[j]) {\n cssTagStyle.push(templates[j].replace(\"{{VALUE}}\", tagStyle[j]));\n }\n }\n out.push(`${i} { ${cssTagStyle.join(\";\")} }`);\n }\n}\n\nexport { textStyleToCSS };\n//# sourceMappingURL=textStyleToCSS.mjs.map\n","import { warn } from '../../utils/logging/warn.mjs';\nimport { TextStyle } from '../text/TextStyle.mjs';\nimport { generateTextStyleKey } from '../text/utils/generateTextStyleKey.mjs';\nimport { textStyleToCSS } from './utils/textStyleToCSS.mjs';\n\n\"use strict\";\nclass HTMLTextStyle extends TextStyle {\n constructor(options = {}) {\n super(options);\n this._cssOverrides = [];\n this.cssOverrides ?? (this.cssOverrides = options.cssOverrides);\n this.tagStyles = options.tagStyles ?? {};\n }\n /** List of style overrides that will be applied to the HTML text. */\n set cssOverrides(value) {\n this._cssOverrides = value instanceof Array ? value : [value];\n this.update();\n }\n get cssOverrides() {\n return this._cssOverrides;\n }\n _generateKey() {\n this._styleKey = generateTextStyleKey(this) + this._cssOverrides.join(\"-\");\n return this._styleKey;\n }\n update() {\n this._cssStyle = null;\n super.update();\n }\n /**\n * Creates a new HTMLTextStyle object with the same values as this one.\n * @returns New cloned HTMLTextStyle object\n */\n clone() {\n return new HTMLTextStyle({\n align: this.align,\n breakWords: this.breakWords,\n dropShadow: this.dropShadow,\n fill: this._fill,\n fontFamily: this.fontFamily,\n fontSize: this.fontSize,\n fontStyle: this.fontStyle,\n fontVariant: this.fontVariant,\n fontWeight: this.fontWeight,\n letterSpacing: this.letterSpacing,\n lineHeight: this.lineHeight,\n padding: this.padding,\n stroke: this._stroke,\n whiteSpace: this.whiteSpace,\n wordWrap: this.wordWrap,\n wordWrapWidth: this.wordWrapWidth,\n cssOverrides: this.cssOverrides\n });\n }\n get cssStyle() {\n if (!this._cssStyle) {\n this._cssStyle = textStyleToCSS(this);\n }\n return this._cssStyle;\n }\n /**\n * Add a style override, this can be any CSS property\n * it will override any built-in style. This is the\n * property and the value as a string (e.g., `color: red`).\n * This will override any other internal style.\n * @param {string} value - CSS style(s) to add.\n * @example\n * style.addOverride('background-color: red');\n */\n addOverride(...value) {\n const toAdd = value.filter((v) => !this.cssOverrides.includes(v));\n if (toAdd.length > 0) {\n this.cssOverrides.push(...toAdd);\n this.update();\n }\n }\n /**\n * Remove any overrides that match the value.\n * @param {string} value - CSS style to remove.\n * @example\n * style.removeOverride('background-color: red');\n */\n removeOverride(...value) {\n const toRemove = value.filter((v) => this.cssOverrides.includes(v));\n if (toRemove.length > 0) {\n this.cssOverrides = this.cssOverrides.filter((v) => !toRemove.includes(v));\n this.update();\n }\n }\n set fill(value) {\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n warn(\"[HTMLTextStyle] only color fill is not supported by HTMLText\");\n }\n super.fill = value;\n }\n set stroke(value) {\n if (value && typeof value !== \"string\" && typeof value !== \"number\") {\n warn(\"[HTMLTextStyle] only color stroke is not supported by HTMLText\");\n }\n super.stroke = value;\n }\n}\n\nexport { HTMLTextStyle };\n//# sourceMappingURL=HtmlTextStyle.mjs.map\n","import { DOMAdapter } from '../../../environment/adapter.mjs';\n\n\"use strict\";\nasync function loadFontAsBase64(url) {\n const response = await DOMAdapter.get().fetch(url);\n const blob = await response.blob();\n const reader = new FileReader();\n const dataSrc = await new Promise((resolve, reject) => {\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n return dataSrc;\n}\n\nexport { loadFontAsBase64 };\n//# sourceMappingURL=loadFontAsBase64.mjs.map\n","import { loadFontAsBase64 } from './loadFontAsBase64.mjs';\n\n\"use strict\";\nasync function loadFontCSS(style, url) {\n const dataSrc = await loadFontAsBase64(url);\n return `@font-face {\n font-family: \"${style.fontFamily}\";\n src: url('${dataSrc}');\n font-weight: ${style.fontWeight};\n font-style: ${style.fontStyle};\n }`;\n}\n\nexport { loadFontCSS };\n//# sourceMappingURL=loadFontCSS.mjs.map\n","import { Cache } from '../../../assets/cache/Cache.mjs';\nimport { loadFontCSS } from './loadFontCSS.mjs';\n\n\"use strict\";\nconst FontStylePromiseCache = /* @__PURE__ */ new Map();\nasync function getFontCss(fontFamilies, style, defaultOptions) {\n const fontPromises = fontFamilies.filter((fontFamily) => Cache.has(`${fontFamily}-and-url`)).map((fontFamily, i) => {\n if (!FontStylePromiseCache.has(fontFamily)) {\n const { url } = Cache.get(`${fontFamily}-and-url`);\n if (i === 0) {\n FontStylePromiseCache.set(fontFamily, loadFontCSS(style, url));\n } else {\n FontStylePromiseCache.set(fontFamily, loadFontCSS({\n fontWeight: defaultOptions.fontWeight,\n fontStyle: defaultOptions.fontStyle,\n fontFamily\n }, url));\n }\n }\n return FontStylePromiseCache.get(fontFamily);\n });\n return (await Promise.all(fontPromises)).join(\"\\n\");\n}\n\nexport { FontStylePromiseCache, getFontCss };\n//# sourceMappingURL=getFontCss.mjs.map\n","import { ExtensionType } from '../../extensions/Extensions.mjs';\nimport { TexturePool } from '../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { RendererType } from '../../rendering/renderers/types.mjs';\nimport { isSafari } from '../../utils/browser/isSafari.mjs';\nimport { warn } from '../../utils/logging/warn.mjs';\nimport { BigPool } from '../../utils/pool/PoolGroup.mjs';\nimport { getPo2TextureFromSource } from '../text/utils/getPo2TextureFromSource.mjs';\nimport { HTMLTextRenderData } from './HTMLTextRenderData.mjs';\nimport { HTMLTextStyle } from './HtmlTextStyle.mjs';\nimport { extractFontFamilies } from './utils/extractFontFamilies.mjs';\nimport { getFontCss } from './utils/getFontCss.mjs';\nimport { getSVGUrl } from './utils/getSVGUrl.mjs';\nimport { getTemporaryCanvasFromImage } from './utils/getTemporaryCanvasFromImage.mjs';\nimport { loadSVGImage } from './utils/loadSVGImage.mjs';\nimport { measureHtmlText } from './utils/measureHtmlText.mjs';\n\n\"use strict\";\nclass HTMLTextSystem {\n constructor(renderer) {\n this._activeTextures = {};\n this._renderer = renderer;\n this._createCanvas = renderer.type === RendererType.WEBGPU;\n }\n getTexture(options) {\n return this._buildTexturePromise(\n options.text,\n options.resolution,\n options.style\n );\n }\n getManagedTexture(text, resolution, style, textKey) {\n if (this._activeTextures[textKey]) {\n this._increaseReferenceCount(textKey);\n return this._activeTextures[textKey].promise;\n }\n const promise = this._buildTexturePromise(text, resolution, style).then((texture) => {\n this._activeTextures[textKey].texture = texture;\n return texture;\n });\n this._activeTextures[textKey] = {\n texture: null,\n promise,\n usageCount: 1\n };\n return promise;\n }\n async _buildTexturePromise(text, resolution, style) {\n const htmlTextData = BigPool.get(HTMLTextRenderData);\n const fontFamilies = extractFontFamilies(text, style);\n const fontCSS = await getFontCss(\n fontFamilies,\n style,\n HTMLTextStyle.defaultTextStyle\n );\n const measured = measureHtmlText(text, style, fontCSS, htmlTextData);\n const width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n const height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n const image = htmlTextData.image;\n image.width = width | 0;\n image.height = height | 0;\n const svgURL = getSVGUrl(text, style, resolution, fontCSS, htmlTextData);\n await loadSVGImage(image, svgURL, isSafari() && fontFamilies.length > 0);\n let resource = image;\n if (this._createCanvas) {\n resource = getTemporaryCanvasFromImage(image, resolution);\n }\n const texture = getPo2TextureFromSource(resource, image.width, image.height, resolution);\n if (this._createCanvas) {\n this._renderer.texture.initSource(texture.source);\n }\n BigPool.return(htmlTextData);\n return texture;\n }\n _increaseReferenceCount(textKey) {\n this._activeTextures[textKey].usageCount++;\n }\n decreaseReferenceCount(textKey) {\n const activeTexture = this._activeTextures[textKey];\n if (!activeTexture)\n return;\n activeTexture.usageCount--;\n if (activeTexture.usageCount === 0) {\n if (activeTexture.texture) {\n this._cleanUp(activeTexture);\n } else {\n activeTexture.promise.then((texture) => {\n activeTexture.texture = texture;\n this._cleanUp(activeTexture);\n }).catch(() => {\n warn(\"HTMLTextSystem: Failed to clean texture\");\n });\n }\n this._activeTextures[textKey] = null;\n }\n }\n _cleanUp(activeTexture) {\n TexturePool.returnTexture(activeTexture.texture);\n activeTexture.texture.source.resource = null;\n activeTexture.texture.source.uploadMethodId = \"unknown\";\n }\n getReferenceCount(textKey) {\n return this._activeTextures[textKey].usageCount;\n }\n destroy() {\n this._activeTextures = null;\n }\n}\n/** @ignore */\nHTMLTextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"htmlText\"\n};\nHTMLTextSystem.defaultFontOptions = {\n fontFamily: \"Arial\",\n fontStyle: \"normal\",\n fontWeight: \"normal\"\n};\n\nexport { HTMLTextSystem };\n//# sourceMappingURL=HTMLTextSystem.mjs.map\n","\"use strict\";\nfunction loadSVGImage(image, url, delay) {\n return new Promise(async (resolve) => {\n if (delay) {\n await new Promise((resolve2) => setTimeout(resolve2, 100));\n }\n image.onload = () => {\n resolve();\n };\n image.src = `data:image/svg+xml;charset=utf8,${encodeURIComponent(url)}`;\n image.crossOrigin = \"anonymous\";\n });\n}\n\nexport { loadSVGImage };\n//# sourceMappingURL=loadSVGImage.mjs.map\n","\"use strict\";\nfunction extractFontFamilies(text, style) {\n const fontFamily = style.fontFamily;\n const fontFamilies = [];\n const dedupe = {};\n const regex = /font-family:([^;\"\\s]+)/g;\n const matches = text.match(regex);\n function addFontFamily(fontFamily2) {\n if (!dedupe[fontFamily2]) {\n fontFamilies.push(fontFamily2);\n dedupe[fontFamily2] = true;\n }\n }\n if (Array.isArray(fontFamily)) {\n for (let i = 0; i < fontFamily.length; i++) {\n addFontFamily(fontFamily[i]);\n }\n } else {\n addFontFamily(fontFamily);\n }\n if (matches) {\n matches.forEach((match) => {\n const fontFamily2 = match.split(\":\")[1].trim();\n addFontFamily(fontFamily2);\n });\n }\n for (const i in style.tagStyles) {\n const fontFamily2 = style.tagStyles[i].fontFamily;\n addFontFamily(fontFamily2);\n }\n return fontFamilies;\n}\n\nexport { extractFontFamilies };\n//# sourceMappingURL=extractFontFamilies.mjs.map\n","\"use strict\";\nfunction getSVGUrl(text, style, resolution, fontCSS, htmlTextData) {\n const { domElement, styleElement, svgRoot } = htmlTextData;\n domElement.innerHTML = `<style>${style.cssStyle}</style><div>${text}</div>`;\n domElement.setAttribute(\"style\", `transform: scale(${resolution});transform-origin: top left; display: inline-block`);\n styleElement.textContent = fontCSS;\n const { width, height } = htmlTextData.image;\n svgRoot.setAttribute(\"width\", width.toString());\n svgRoot.setAttribute(\"height\", height.toString());\n return new XMLSerializer().serializeToString(svgRoot);\n}\n\nexport { getSVGUrl };\n//# sourceMappingURL=getSVGUrl.mjs.map\n","import { DOMAdapter } from '../../environment/adapter.mjs';\n\n\"use strict\";\nfunction isSafari() {\n const { userAgent } = DOMAdapter.get().getNavigator();\n return /^((?!chrome|android).)*safari/i.test(userAgent);\n}\n\nexport { isSafari };\n//# sourceMappingURL=isSafari.mjs.map\n","import { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool.mjs';\n\n\"use strict\";\nfunction getTemporaryCanvasFromImage(image, resolution) {\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(\n image.width,\n image.height,\n resolution\n );\n const { context } = canvasAndContext;\n context.clearRect(0, 0, image.width, image.height);\n context.drawImage(image, 0, 0);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return canvasAndContext.canvas;\n}\n\nexport { getTemporaryCanvasFromImage };\n//# sourceMappingURL=getTemporaryCanvasFromImage.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { HTMLTextPipe } from './HTMLTextPipe.mjs';\nimport { HTMLTextSystem } from './HTMLTextSystem.mjs';\n\n\"use strict\";\nextensions.add(HTMLTextSystem);\nextensions.add(HTMLTextPipe);\n//# sourceMappingURL=init.mjs.map\n","import { Color } from '../../../../color/Color.mjs';\nimport { Matrix } from '../../../../maths/matrix/Matrix.mjs';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { FillGradient } from '../../../graphics/shared/fill/FillGradient.mjs';\nimport { FillPattern } from '../../../graphics/shared/fill/FillPattern.mjs';\n\n\"use strict\";\nfunction getCanvasFillStyle(fillStyle, context) {\n if (fillStyle.texture === Texture.WHITE && !fillStyle.fill) {\n return Color.shared.setValue(fillStyle.color).toHex();\n } else if (!fillStyle.fill) {\n const pattern = context.createPattern(fillStyle.texture.source.resource, \"repeat\");\n const tempMatrix = fillStyle.matrix.copyTo(Matrix.shared);\n tempMatrix.scale(fillStyle.texture.frame.width, fillStyle.texture.frame.height);\n pattern.setTransform(tempMatrix);\n return pattern;\n } else if (fillStyle.fill instanceof FillPattern) {\n const fillPattern = fillStyle.fill;\n const pattern = context.createPattern(fillPattern.texture.source.resource, \"repeat\");\n const tempMatrix = fillPattern.transform.copyTo(Matrix.shared);\n tempMatrix.scale(\n fillPattern.texture.frame.width,\n fillPattern.texture.frame.height\n );\n pattern.setTransform(tempMatrix);\n return pattern;\n } else if (fillStyle.fill instanceof FillGradient) {\n const fillGradient = fillStyle.fill;\n if (fillGradient.type === \"linear\") {\n const gradient = context.createLinearGradient(\n fillGradient.x0,\n fillGradient.y0,\n fillGradient.x1,\n fillGradient.y1\n );\n fillGradient.gradientStops.forEach((stop) => {\n gradient.addColorStop(stop.offset, Color.shared.setValue(stop.color).toHex());\n });\n return gradient;\n }\n }\n warn(\"FillStyle not recognised\", fillStyle);\n return \"red\";\n}\n\nexport { getCanvasFillStyle };\n//# sourceMappingURL=getCanvasFillStyle.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { updateQuadBounds } from '../../../utils/data/updateQuadBounds.mjs';\nimport { BigPool } from '../../../utils/pool/PoolGroup.mjs';\nimport { BatchableSprite } from '../../sprite/BatchableSprite.mjs';\n\n\"use strict\";\nclass CanvasTextPipe {\n constructor(renderer) {\n this._gpuText = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n validateRenderable(text) {\n const gpuText = this._getGpuText(text);\n const newKey = text._getKey();\n if (gpuText.currentKey !== newKey) {\n const resolution = text.resolution ?? this._renderer.resolution;\n const { width, height } = this._renderer.canvasText.getTextureSize(\n text.text,\n resolution,\n text._style\n );\n if (\n // is only being used by this text:\n this._renderer.canvasText.getReferenceCount(gpuText.currentKey) === 1 && width === gpuText.texture._source.width && height === gpuText.texture._source.height\n ) {\n return false;\n }\n return true;\n }\n return false;\n }\n addRenderable(text, _instructionSet) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (text._didTextUpdate) {\n this._updateText(text);\n }\n this._renderer.renderPipes.batch.addToBatch(batchableSprite);\n }\n updateRenderable(text) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (text._didTextUpdate) {\n this._updateText(text);\n }\n batchableSprite.batcher.updateElement(batchableSprite);\n }\n destroyRenderable(text) {\n this._destroyRenderableById(text.uid);\n }\n _destroyRenderableById(textUid) {\n const gpuText = this._gpuText[textUid];\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n BigPool.return(gpuText.batchableSprite);\n this._gpuText[textUid] = null;\n }\n _updateText(text) {\n const newKey = text._getKey();\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.currentKey !== newKey) {\n this._updateGpuText(text);\n }\n text._didTextUpdate = false;\n const padding = text._style.padding;\n updateQuadBounds(batchableSprite.bounds, text._anchor, batchableSprite.texture, padding);\n }\n _updateGpuText(text) {\n const gpuText = this._getGpuText(text);\n const batchableSprite = gpuText.batchableSprite;\n if (gpuText.texture) {\n this._renderer.canvasText.decreaseReferenceCount(gpuText.currentKey);\n }\n gpuText.texture = batchableSprite.texture = this._renderer.canvasText.getManagedTexture(text);\n gpuText.currentKey = text._getKey();\n batchableSprite.texture = gpuText.texture;\n }\n _getGpuText(text) {\n return this._gpuText[text.uid] || this.initGpuText(text);\n }\n initGpuText(text) {\n const gpuTextData = {\n texture: null,\n currentKey: \"--\",\n batchableSprite: BigPool.get(BatchableSprite)\n };\n gpuTextData.batchableSprite.renderable = text;\n gpuTextData.batchableSprite.bounds = { minX: 0, maxX: 1, minY: 0, maxY: 0 };\n gpuTextData.batchableSprite.roundPixels = this._renderer._roundPixels | text._roundPixels;\n this._gpuText[text.uid] = gpuTextData;\n this._updateText(text);\n text.on(\"destroyed\", () => {\n this.destroyRenderable(text);\n });\n return gpuTextData;\n }\n destroy() {\n for (const i in this._gpuText) {\n this._destroyRenderableById(i);\n }\n this._gpuText = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nCanvasTextPipe.extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes\n ],\n name: \"text\"\n};\n\nexport { CanvasTextPipe };\n//# sourceMappingURL=CanvasTextPipe.mjs.map\n","import { Rectangle } from '../../maths/shapes/Rectangle.mjs';\n\n\"use strict\";\nfunction checkRow(data, width, y) {\n for (let x = 0, index = 4 * y * width; x < width; ++x, index += 4) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction checkColumn(data, width, x, top, bottom) {\n const stride = 4 * width;\n for (let y = top, index = top * stride + 4 * x; y <= bottom; ++y, index += stride) {\n if (data[index + 3] !== 0)\n return false;\n }\n return true;\n}\nfunction getCanvasBoundingBox(canvas, resolution = 1) {\n const { width, height } = canvas;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n if (context === null) {\n throw new TypeError(\"Failed to get canvas 2D context\");\n }\n const imageData = context.getImageData(0, 0, width, height);\n const data = imageData.data;\n let left = 0;\n let top = 0;\n let right = width - 1;\n let bottom = height - 1;\n while (top < height && checkRow(data, width, top))\n ++top;\n if (top === height)\n return Rectangle.EMPTY;\n while (checkRow(data, width, bottom))\n --bottom;\n while (checkColumn(data, width, left, top, bottom))\n ++left;\n while (checkColumn(data, width, right, top, bottom))\n --right;\n ++right;\n ++bottom;\n return new Rectangle(left / resolution, top / resolution, (right - left) / resolution, (bottom - top) / resolution);\n}\n\nexport { getCanvasBoundingBox };\n//# sourceMappingURL=getCanvasBoundingBox.mjs.map\n","import { Color } from '../../../color/Color.mjs';\nimport { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { nextPow2 } from '../../../maths/misc/pow2.mjs';\nimport { CanvasPool } from '../../../rendering/renderers/shared/texture/CanvasPool.mjs';\nimport { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { getCanvasBoundingBox } from '../../../utils/canvas/getCanvasBoundingBox.mjs';\nimport { deprecation } from '../../../utils/logging/deprecation.mjs';\nimport { TextStyle } from '../TextStyle.mjs';\nimport { getPo2TextureFromSource } from '../utils/getPo2TextureFromSource.mjs';\nimport { CanvasTextMetrics } from './CanvasTextMetrics.mjs';\nimport { fontStringFromTextStyle } from './utils/fontStringFromTextStyle.mjs';\nimport { getCanvasFillStyle } from './utils/getCanvasFillStyle.mjs';\n\n\"use strict\";\nclass CanvasTextSystem {\n constructor(_renderer) {\n this._activeTextures = {};\n this._renderer = _renderer;\n }\n getTextureSize(text, resolution, style) {\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n let width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n let height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n width = Math.ceil(width - 1e-6);\n height = Math.ceil(height - 1e-6);\n width = nextPow2(width);\n height = nextPow2(height);\n return { width, height };\n }\n getTexture(options, resolution, style, _textKey) {\n if (typeof options === \"string\") {\n deprecation(\"8.0.0\", \"CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments\");\n options = {\n text: options,\n style,\n resolution\n };\n }\n if (!(options.style instanceof TextStyle)) {\n options.style = new TextStyle(options.style);\n }\n const { texture, canvasAndContext } = this.createTextureAndCanvas(\n options\n );\n this._renderer.texture.initSource(texture._source);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return texture;\n }\n createTextureAndCanvas(options) {\n const { text, style } = options;\n const resolution = options.resolution ?? this._renderer.resolution;\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n const width = Math.ceil(Math.ceil(Math.max(1, measured.width) + style.padding * 2) * resolution);\n const height = Math.ceil(Math.ceil(Math.max(1, measured.height) + style.padding * 2) * resolution);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(width, height);\n const { canvas } = canvasAndContext;\n this.renderTextToCanvas(text, style, resolution, canvasAndContext);\n const texture = getPo2TextureFromSource(canvas, width, height, resolution);\n if (style.trim) {\n const trimmed = getCanvasBoundingBox(canvas, resolution);\n texture.frame.copyFrom(trimmed);\n texture.updateUvs();\n }\n return { texture, canvasAndContext };\n }\n getManagedTexture(text) {\n const textKey = text._getKey();\n if (this._activeTextures[textKey]) {\n this._increaseReferenceCount(textKey);\n return this._activeTextures[textKey].texture;\n }\n const { texture, canvasAndContext } = this.createTextureAndCanvas(text);\n this._activeTextures[textKey] = {\n canvasAndContext,\n texture,\n usageCount: 1\n };\n return texture;\n }\n _increaseReferenceCount(textKey) {\n this._activeTextures[textKey].usageCount++;\n }\n decreaseReferenceCount(textKey) {\n const activeTexture = this._activeTextures[textKey];\n activeTexture.usageCount--;\n if (activeTexture.usageCount === 0) {\n CanvasPool.returnCanvasAndContext(activeTexture.canvasAndContext);\n TexturePool.returnTexture(activeTexture.texture);\n const source = activeTexture.texture.source;\n source.resource = null;\n source.uploadMethodId = \"unknown\";\n source.alphaMode = \"no-premultiply-alpha\";\n this._activeTextures[textKey] = null;\n }\n }\n getReferenceCount(textKey) {\n return this._activeTextures[textKey].usageCount;\n }\n /**\n * Renders text to its canvas, and updates its texture.\n *\n * By default this is used internally to ensure the texture is correct before rendering,\n * but it can be used called externally, for example from this class to 'pre-generate' the texture from a piece of text,\n * and then shared across multiple Sprites.\n * @param text\n * @param style\n * @param resolution\n * @param canvasAndContext\n */\n renderTextToCanvas(text, style, resolution, canvasAndContext) {\n const { canvas, context } = canvasAndContext;\n const font = fontStringFromTextStyle(style);\n const measured = CanvasTextMetrics.measureText(text || \" \", style);\n const lines = measured.lines;\n const lineHeight = measured.lineHeight;\n const lineWidths = measured.lineWidths;\n const maxLineWidth = measured.maxLineWidth;\n const fontProperties = measured.fontProperties;\n const height = canvas.height;\n context.resetTransform();\n context.scale(resolution, resolution);\n const padding = style.padding * 2;\n context.clearRect(0, 0, measured.width + 4 + padding, measured.height + 4 + padding);\n if (style._stroke?.width) {\n const strokeStyle = style._stroke;\n context.lineWidth = strokeStyle.width;\n context.miterLimit = strokeStyle.miterLimit;\n context.lineJoin = strokeStyle.join;\n context.lineCap = strokeStyle.cap;\n }\n context.font = font;\n let linePositionX;\n let linePositionY;\n const passesCount = style.dropShadow ? 2 : 1;\n for (let i = 0; i < passesCount; ++i) {\n const isShadowPass = style.dropShadow && i === 0;\n const dsOffsetText = isShadowPass ? Math.ceil(Math.max(1, height) + style.padding * 2) : 0;\n const dsOffsetShadow = dsOffsetText * resolution;\n if (isShadowPass) {\n context.fillStyle = \"black\";\n context.strokeStyle = \"black\";\n const shadowOptions = style.dropShadow;\n const dropShadowColor = shadowOptions.color;\n const dropShadowAlpha = shadowOptions.alpha;\n context.shadowColor = Color.shared.setValue(dropShadowColor).setAlpha(dropShadowAlpha).toRgbaString();\n const dropShadowBlur = shadowOptions.blur * resolution;\n const dropShadowDistance = shadowOptions.distance * resolution;\n context.shadowBlur = dropShadowBlur;\n context.shadowOffsetX = Math.cos(shadowOptions.angle) * dropShadowDistance;\n context.shadowOffsetY = Math.sin(shadowOptions.angle) * dropShadowDistance + dsOffsetShadow;\n } else {\n context.globalAlpha = style._fill?.alpha ?? 1;\n context.fillStyle = style._fill ? getCanvasFillStyle(style._fill, context) : null;\n if (style._stroke?.width) {\n context.strokeStyle = getCanvasFillStyle(style._stroke, context);\n }\n context.shadowColor = \"black\";\n }\n let linePositionYShift = (lineHeight - fontProperties.fontSize) / 2;\n if (lineHeight - fontProperties.fontSize < 0) {\n linePositionYShift = 0;\n }\n const strokeWidth = style._stroke?.width ?? 0;\n for (let i2 = 0; i2 < lines.length; i2++) {\n linePositionX = strokeWidth / 2;\n linePositionY = strokeWidth / 2 + i2 * lineHeight + fontProperties.ascent + linePositionYShift;\n if (style.align === \"right\") {\n linePositionX += maxLineWidth - lineWidths[i2];\n } else if (style.align === \"center\") {\n linePositionX += (maxLineWidth - lineWidths[i2]) / 2;\n }\n if (style._stroke?.width) {\n this._drawLetterSpacing(\n lines[i2],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText,\n true\n );\n }\n if (style._fill !== void 0) {\n this._drawLetterSpacing(\n lines[i2],\n style,\n canvasAndContext,\n linePositionX + style.padding,\n linePositionY + style.padding - dsOffsetText\n );\n }\n }\n }\n }\n /**\n * Render the text with letter-spacing.\n * @param text - The text to draw\n * @param style\n * @param canvasAndContext\n * @param x - Horizontal position to draw the text\n * @param y - Vertical position to draw the text\n * @param isStroke - Is this drawing for the outside stroke of the\n * text? If not, it's for the inside fill\n */\n _drawLetterSpacing(text, style, canvasAndContext, x, y, isStroke = false) {\n const { context } = canvasAndContext;\n const letterSpacing = style.letterSpacing;\n let useExperimentalLetterSpacing = false;\n if (CanvasTextMetrics.experimentalLetterSpacingSupported) {\n if (CanvasTextMetrics.experimentalLetterSpacing) {\n context.letterSpacing = `${letterSpacing}px`;\n context.textLetterSpacing = `${letterSpacing}px`;\n useExperimentalLetterSpacing = true;\n } else {\n context.letterSpacing = \"0px\";\n context.textLetterSpacing = \"0px\";\n }\n }\n if (letterSpacing === 0 || useExperimentalLetterSpacing) {\n if (isStroke) {\n context.strokeText(text, x, y);\n } else {\n context.fillText(text, x, y);\n }\n return;\n }\n let currentPosition = x;\n const stringArray = CanvasTextMetrics.graphemeSegmenter(text);\n let previousWidth = context.measureText(text).width;\n let currentWidth = 0;\n for (let i = 0; i < stringArray.length; ++i) {\n const currentChar = stringArray[i];\n if (isStroke) {\n context.strokeText(currentChar, currentPosition, y);\n } else {\n context.fillText(currentChar, currentPosition, y);\n }\n let textStr = \"\";\n for (let j = i + 1; j < stringArray.length; ++j) {\n textStr += stringArray[j];\n }\n currentWidth = context.measureText(textStr).width;\n currentPosition += previousWidth - currentWidth + letterSpacing;\n previousWidth = currentWidth;\n }\n }\n destroy() {\n this._activeTextures = null;\n }\n}\n/** @ignore */\nCanvasTextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem,\n ExtensionType.WebGPUSystem,\n ExtensionType.CanvasSystem\n ],\n name: \"canvasText\"\n};\n\nexport { CanvasTextSystem };\n//# sourceMappingURL=CanvasTextSystem.mjs.map\n","import { extensions } from '../../extensions/Extensions.mjs';\nimport { CanvasTextPipe } from './canvas/CanvasTextPipe.mjs';\nimport { CanvasTextSystem } from './canvas/CanvasTextSystem.mjs';\n\n\"use strict\";\nextensions.add(CanvasTextSystem);\nextensions.add(CanvasTextPipe);\n//# sourceMappingURL=init.mjs.map\n","import { TexturePool } from '../../../rendering/renderers/shared/texture/TexturePool.mjs';\nimport { Bounds } from '../../container/bounds/Bounds.mjs';\n\n\"use strict\";\nconst tempBounds = new Bounds();\nfunction getPo2TextureFromSource(image, width, height, resolution) {\n const bounds = tempBounds;\n bounds.minX = 0;\n bounds.minY = 0;\n bounds.maxX = image.width / resolution | 0;\n bounds.maxY = image.height / resolution | 0;\n const texture = TexturePool.getOptimalTexture(\n bounds.width,\n bounds.height,\n resolution,\n false\n );\n texture.source.uploadMethodId = \"image\";\n texture.source.resource = image;\n texture.source.alphaMode = \"premultiply-alpha-on-upload\";\n texture.frame.width = width / resolution;\n texture.frame.height = height / resolution;\n texture.source.emit(\"update\", texture.source);\n texture.updateUvs();\n return texture;\n}\n\nexport { getPo2TextureFromSource };\n//# sourceMappingURL=getPo2TextureFromSource.mjs.map\n"],"names":["Object","globalThis","requestAnimationFrame","cancelAnimationFrame","Float32Array","Uint32Array","t","Math","o","s","Int32Array","r","i","c","arguments","Array","Error","String","m","parseInt","parseFloat","isNaN","Promise","e","console","document","Image","FileReader","F","Map","h","XMLSerializer","setTimeout","encodeURIComponent","g","TypeError","f","d","l"],"mappings":"qIAGA,OAAM,EAOJ,OAAO,KAAK,CAAO,CAAE,CACnBA,OAAO,cAAc,CACnB,IAAI,CACJ,WAQA,CACE,IAAI,CAAG,EACLC,WAAW,mBAAmB,CAAC,SAAU,IAAI,CAAC,WAAW,EACzD,IAAI,CAAC,SAAS,CAAG,EACb,IACFA,WAAW,gBAAgB,CAAC,SAAU,IAAI,CAAC,WAAW,EACtD,IAAI,CAAC,MAAM,GAEf,EACA,MACE,OAAO,IAAI,CAAC,SAAS,AACvB,CACF,GAEF,IAAI,CAAC,WAAW,CAAG,KACZ,IAAI,CAAC,SAAS,GAGnB,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,SAAS,CAAGC,sBAAsB,IAAM,IAAI,CAAC,MAAM,IAC1D,EACA,IAAI,CAAC,aAAa,CAAG,KACf,IAAI,CAAC,SAAS,GAChBC,qBAAqB,IAAI,CAAC,SAAS,EACnC,IAAI,CAAC,SAAS,CAAG,KAErB,EACA,IAAI,CAAC,MAAM,CAAG,SAKR,EACA,EALJ,GAAK,IAAI,CAAC,SAAS,EAMnB,GAHA,IAAI,CAAC,aAAa,GAGd,IAAI,CAAC,SAAS,GAAKF,WAAW,MAAM,CACtC,EAAQA,WAAW,UAAU,CAC7B,EAASA,WAAW,WAAW,KAC1B,CACL,GAAM,CAAE,aAAW,CAAE,cAAY,CAAE,CAAG,IAAI,CAAC,SAAS,CACpD,EAAQ,EACR,EAAS,CACX,CACA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAO,GAC5B,IAAI,CAAC,MAAM,GACb,EACA,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,QAAQ,CAAG,EAAQ,QAAQ,EAAI,IACtC,CAMA,OAAO,SAAU,CACfA,WAAW,mBAAmB,CAAC,SAAU,IAAI,CAAC,WAAW,EACzD,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,aAAa,CAAG,KACrB,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,MAAM,CAAG,IAChB,CACF,CAEA,EAAa,SAAS,CAAG,gBAAyB,C,wBChFlD,OAAM,EAOJ,OAAO,KAAK,CAAO,CAAE,CACnB,EAAUD,OAAO,MAAM,CAAC,CACtB,UAAW,GACX,aAAc,EAChB,EAAG,GACHA,OAAO,cAAc,CACnB,IAAI,CACJ,SACA,CACE,IAAI,CAAM,EACJ,IAAI,CAAC,OAAO,EACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAE,IAAI,EAEvC,IAAI,CAAC,OAAO,CAAG,EACX,GACF,EAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,IAAI,CAAE,OAAmB,CAErD,EACA,MACE,OAAO,IAAI,CAAC,OAAO,AACrB,CACF,GAEF,IAAI,CAAC,IAAI,CAAG,KACV,IAAI,CAAC,OAAO,CAAC,IAAI,EACnB,EACA,IAAI,CAAC,KAAK,CAAG,KACX,IAAI,CAAC,OAAO,CAAC,KAAK,EACpB,EACA,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,MAAM,CAAG,EAAQ,YAAY,CAAG,UAAa,CAAG,IAAI,GAAM,CAC3D,EAAQ,SAAS,EACnB,IAAI,CAAC,KAAK,EAEd,CAMA,OAAO,SAAU,CACf,GAAI,IAAI,CAAC,OAAO,CAAE,CAChB,IAAM,EAAY,IAAI,CAAC,OAAO,AAC9B,KAAI,CAAC,MAAM,CAAG,KACd,EAAU,OAAO,EACnB,CACF,CACF,CAEA,EAAa,SAAS,CAAG,gBAAyB,CCxDlD,QAAc,CAAC,GACf,QAAc,CAAC,E,6BCHf,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,KAAK,CAAY,CAAE,CAAS,CAAE,CAAc,CAAE,CAE5C,AADoB,IAAI,CAAC,SAAS,CAAC,WAAW,CAClC,KAAK,CAAC,KAAK,CAAC,GACxB,EAAe,GAAG,CAAC,CACjB,aAAc,SACd,UAAW,GACX,OAAQ,aACR,YACA,cACF,EACF,CACA,IAAI,CAAa,CAAE,CAAU,CAAE,CAAc,CAAE,CAC7C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GACvC,EAAe,GAAG,CAAC,CACjB,aAAc,SACd,OAAQ,YACR,UAAW,EACb,EACF,CACA,QAAQ,CAAW,CAAE,CACf,AAAuB,eAAvB,EAAY,MAAM,CACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAClB,AAAuB,cAAvB,EAAY,MAAM,EAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAE7B,CACA,SAAU,CACR,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CACA,EAAW,SAAS,CAAG,CACrB,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,QACR,E,iHCxCA,IAAM,EAAa,IAAI,GAAM,C,eCW7B,IAAM,EAAe,IAAI,GAAQ,CAAC,CAChC,WAAY,CACV,UAAW,CACT,OAAQ,IAAII,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EACjD,SAAU,EACV,OAAQ,YACR,OAAQ,EACR,OAAQ,CACV,CACF,EACA,YAAa,IAAIC,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CACjD,EACA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,iBAAiB,CAAG,EACzB,IAAI,CAAC,YAAY,CAAG,EAAE,CACtB,IAAI,CAAC,qBAAqB,CAAG,IAAI,GAAY,CAAC,CAC5C,WAAY,CAAE,MAAO,IAAID,aAAa,GAAI,KAAM,WAAY,EAC5D,YAAa,CAAE,MAAO,IAAIA,aAAa,GAAI,KAAM,WAAY,EAC7D,YAAa,CAAE,MAAO,IAAIA,aAAa,GAAI,KAAM,WAAY,EAC7D,aAAc,CAAE,MAAO,IAAIA,aAAa,GAAI,KAAM,WAAY,EAC9D,aAAc,CAAE,MAAO,IAAIA,aAAa,GAAI,KAAM,WAAY,EAC9D,eAAgB,CAAE,MAAO,IAAIA,aAAa,GAAI,KAAM,WAAY,CAClE,GACA,IAAI,CAAC,sBAAsB,CAAG,IAAI,GAAS,CAAC,CAAC,GAC7C,IAAI,CAAC,QAAQ,CAAG,CAClB,CAKA,IAAI,mBAAoB,CACtB,OAAO,IAAI,CAAC,iBAAiB,EAAE,WACjC,CACA,KAAK,CAAW,CAAE,CAChB,IAAM,EAAW,IAAI,CAAC,QAAQ,CACxB,EAAU,EAAY,YAAY,CAAC,OAAO,AAC5C,AAAC,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAC5C,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAG,IAAI,CAAC,cAAc,EAAC,EAElE,IAAM,EAAa,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAE5D,GADA,IAAI,CAAC,iBAAiB,GAClB,AAAmB,IAAnB,EAAQ,MAAM,CAAQ,CACxB,EAAW,IAAI,CAAG,GAClB,MACF,CACA,IAAM,EAAS,EAAW,MAAM,CAChC,GAAI,EAAY,WAAW,EACzB,AC9DN,SAAmC,CAAW,CAAE,CAAM,EACpD,EAAO,KAAK,GACZ,IAAM,EAAa,EAAO,MAAM,CAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,MAAM,CAAE,IAAK,CAC3C,IAAM,EAAa,CAAW,CAAC,EAAE,AAC7B,GAAW,mBAAmB,CAAG,IAGrC,EAAO,MAAM,CAAG,EAAW,cAAc,CACzC,EAAW,SAAS,CAAC,GACvB,CACA,EAAO,MAAM,CAAG,CAElB,EDiDgC,EAAY,WAAW,CAAE,QAC9C,GAAI,EAAY,YAAY,CAAC,UAAU,CAC5C,EAAO,KAAK,GACZ,EAAO,OAAO,CAAC,EAAY,YAAY,CAAC,UAAU,EAClD,EAAO,WAAW,CAAC,EAAY,SAAS,CAAC,cAAc,MAEvD,KDhEuB,ICgEH,EAAY,SAAS,CD/D7C,AC+D+C,ED/DxC,KAAK,GACZ,AAWF,SAAS,EAA0BE,CAAM,CAAE,CAAM,EAC/C,GAAIA,AAA8B,IAA9BA,EAAO,kBAAkB,EAAU,CAACA,EAAO,UAAU,CACvD,OAEF,IAAM,EAAgB,CAAC,CAACA,EAAO,OAAO,CAAC,MAAM,CACzC,EAAc,EAIlB,GAHIA,CAAAA,EAAO,iBAAiB,EAAI,CAAY,GAC1C,GAAc,OAAc,GAAG,KAAK,EAAC,EAEnCA,EAAO,UAAU,CACnB,EAAO,OAAO,CAACA,EAAO,UAAU,CAAEA,EAAO,cAAc,MAClD,CACL,GAAIA,EAAO,YAAY,CAAE,CACvB,IAAM,EAAaA,EAAO,MAAM,CAChC,EAAY,QAAQ,CAClB,EAAW,IAAI,CACf,EAAW,IAAI,CACf,EAAW,IAAI,CACf,EAAW,IAAI,CACfA,EAAO,cAAc,CAEzB,CACA,IAAM,EAAWA,EAAO,QAAQ,CAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,MAAM,CAAE,IACnC,EAA0B,CAAQ,CAAC,EAAE,CAAE,EAE3C,CACA,GAAI,EAAe,CACjB,IAAI,EAAW,GACf,IAAK,IAAI,EAAI,EAAG,EAAIA,EAAO,OAAO,CAAC,MAAM,CAAE,IACrCA,EAAO,OAAO,CAAC,EAAE,CAAC,SAAS,GACxB,IACH,EAAW,GACX,EAAY,WAAW,CAACA,EAAO,WAAW,CAAC,cAAc,GAE3DA,EAAO,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,EAAa,KAGzC,IACF,EAAY,WAAW,CAACA,EAAO,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,GAAY,MAAM,IACnF,EAAO,SAAS,CAAC,EAAaA,EAAO,sBAAsB,GAE7D,EAAO,SAAS,CAAC,GACjB,UAAiB,CAAC,EACpB,MAAWA,EAAO,iBAAiB,GACjC,EAAO,SAAS,CAAC,EAAaA,EAAO,sBAAsB,EAC3D,UAAiB,CAAC,GAEtB,EA3D4B,EC8DqB,GD7D3C,AAAC,AC6D0C,ED7DnC,OAAO,EACjB,AC4D6C,ED5DtC,GAAG,CAAC,EAAG,EAAG,EAAG,GAEjB,EAAO,iBAAiB,CAG3B,ACuD6C,EDvDtC,WAAW,CAAC,EAAO,WAAW,CAAC,cAAc,EAFpD,ACyD6C,EDzDtC,WAAW,CAAC,EAAO,WAAW,CAAC,cAAc,CCyDA,CAEpD,IAAM,EAAqB,EAAS,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CACjF,EAAa,EAAmB,WAAW,CAC3C,EAAU,EACV,EAAY,EAAmB,SAAS,CACxC,EAAgB,GAChB,EAAU,GACd,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACvC,IAAM,EAAS,CAAO,CAAC,EAAE,CAWzB,GAVA,EAAaC,KAAK,GAAG,CAAC,EAAY,EAAO,UAAU,EACnD,GAAW,EAAO,OAAO,CACA,YAArB,EAAO,SAAS,GAEhB,EADE,AAAqB,OAArB,EAAO,SAAS,EAOlB,CADoB,GAAO,mBAAmB,CAAG,EAAS,IAAI,AAAD,EAC9C,CACjB,EAAU,GACV,KACF,CACA,GAAI,EAAO,aAAa,EAAI,CAAE,GAAS,UAAU,EAAE,eAAiB,EAAG,EAAI,CACzE,QAAK,wHACL,EAAU,GACV,KACF,CACA,EAAU,EAAO,OAAO,EAAI,EAC5B,EAAgB,GAAiB,EAAO,aAAa,AACvD,CACA,GAAI,CAAC,EAAS,CACZ,EAAW,IAAI,CAAG,GAClB,MACF,CACA,IAAM,EAAW,EAAS,YAAY,CAAC,YAAY,CAEnD,GADA,EAAO,KAAK,CAAC,GAAY,SAAS,CAAC,EAAG,EAAS,KAAK,CAAE,EAAG,EAAS,MAAM,EAAE,KAAK,CAAC,EAAI,GAAY,GAAG,CAAC,GAAS,IAAI,GAC7G,CAAC,EAAO,UAAU,CAAE,CACtB,EAAW,IAAI,CAAG,GAClB,MACF,CACA,EAAW,IAAI,CAAG,GAClB,EAAW,MAAM,CAAG,EACpB,EAAW,aAAa,CAAG,EAC3B,EAAW,SAAS,CAAG,EAAY,SAAS,CAC5C,EAAW,YAAY,CAAG,EAAY,YAAY,CAClD,EAAW,qBAAqB,CAAG,EAAS,YAAY,CAAC,aAAa,CACtE,EAAW,YAAY,CAAG,qBAA6B,CACrD,EAAO,KAAK,CACZ,EAAO,MAAM,CACb,EACA,GAEF,EAAS,YAAY,CAAC,IAAI,CAAC,EAAW,YAAY,CAAE,IACpD,EAAS,cAAc,CAAC,IAAI,CAAC,CAC3B,OAAQ,CACV,EACF,CACA,KAAM,CACJ,IAAM,EAAW,IAAI,CAAC,QAAQ,AAC9B,KAAI,CAAC,iBAAiB,GACtB,IAAM,EAAa,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC5D,GAAI,EAAW,IAAI,CACjB,MAEF,KAAI,CAAC,iBAAiB,CAAG,EACzB,IAAM,EAAe,EAAW,YAAY,CACtC,EAAS,EAAW,MAAM,CAC5B,EAAc,SAAa,CAE/B,GADA,EAAS,YAAY,CAAC,gBAAgB,GAClC,EAAW,aAAa,CAAE,CAC5B,IAAM,EAAiB,IAAI,CAAC,iBAAiB,CAAG,EAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAG,EAAE,CAAC,MAAM,CAAG,KACrG,EAAe,EAAS,YAAY,CAAC,eAAe,CAAC,EAAW,qBAAqB,EAC3F,EAAc,IAAI,CAAC,cAAc,CAAC,EAAc,EAAQ,EAC1D,CACA,EAAW,WAAW,CAAG,EACzB,IAAM,EAAU,EAAW,YAAY,CAAC,OAAO,CAI/C,GAHA,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAa,MAAM,CAAC,KAAK,CAAE,GACnE,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAY,MAAM,CAAE,GAC5D,EAAS,cAAc,CAAC,GAAG,GACvB,AAAmB,IAAnB,EAAQ,MAAM,CAChB,CAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAE,EAAc,EAAW,qBAAqB,CAAE,IACvE,iBAAyB,CAAC,OACrB,CACL,IAAI,EAAO,EAAW,YAAY,CAC9B,EAAO,qBAA6B,CACtC,EAAO,KAAK,CACZ,EAAO,MAAM,CACb,EAAK,MAAM,CAAC,WAAW,CACvB,IAEE,EAAI,EACR,IAAK,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAG,EAAG,EAAE,EAAG,CAEvC,AADe,CAAO,CAAC,EAAE,CAClB,KAAK,CAAC,IAAI,CAAE,EAAM,EAAM,IAC/B,IAAMD,EAAI,EACV,EAAO,EACP,EAAOA,CACT,CACA,CAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAE,EAAM,EAAW,qBAAqB,CAAE,IAC/D,iBAAyB,CAAC,GAC1B,iBAAyB,CAAC,EAC5B,CACI,EAAW,aAAa,EAC1B,iBAAyB,CAAC,EAE9B,CACA,eAAe,CAAiB,CAAE,CAAM,CAAE,CAAc,CAAE,CACxD,IAAM,EAAuB,EAAkB,YAAY,CAAC,MAAM,CAAC,WAAW,CACxE,EAAc,qBAA6B,CAC/C,EAAO,KAAK,CACZ,EAAO,MAAM,CACb,EACA,IAEE,EAAI,EAAO,IAAI,CACf,EAAI,EAAO,IAAI,CACf,IACF,GAAK,EAAe,IAAI,CACxB,GAAK,EAAe,IAAI,EAE1B,EAAIC,KAAK,KAAK,CAAC,EAAI,GACnB,EAAIA,KAAK,KAAK,CAAC,EAAI,GACnB,IAAM,EAAQA,KAAK,IAAI,CAAC,EAAO,KAAK,CAAG,GACjC,EAASA,KAAK,IAAI,CAAC,EAAO,MAAM,CAAG,GAQzC,OAPA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CACtC,EACA,EACA,CAAE,IAAG,GAAE,EACP,CAAE,QAAO,QAAO,EAChB,CAAE,EAAG,EAAG,EAAG,CAAE,GAER,CACT,CACA,YAAY,CAAM,CAAE,CAAK,CAAE,CAAM,CAAE,CAAK,CAAE,CACxC,IAAM,EAAW,IAAI,CAAC,QAAQ,CACxB,EAAa,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CACtD,EAAS,EAAW,MAAM,CAC1BC,EAAS,UAAY,CAErB,EAAgB,AADQ,EAAW,qBAAqB,GACd,EAC5C,EAAa,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CACxF,EAAe,IAAI,CAAC,iBAAiB,CAAG,EAC5C,KAAO,EAAe,GAAK,IAAI,CAAC,YAAY,CAAC,EAAa,CAAC,IAAI,EAC7D,EAAE,CAEA,GAAe,GACjB,GAAa,IAAI,CAAC,YAAY,CAAC,EAAa,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,AAAD,EAE7E,IAAM,EAAiB,IAAI,CAAC,qBAAqB,CAC3C,EAAW,EAAe,QAAQ,CAClC,EAAc,EAAS,YAAY,CACnC,EAAY,EAAS,UAAU,CAC/B,EAAa,EAAS,WAAW,CACjC,EAAa,EAAS,WAAW,CACjC,EAAc,EAAS,YAAY,CACnC,EAAgB,EAAS,cAAc,CAC7C,GAAI,EAAe,CACjB,IAAI,EAAY,IAAI,CAAC,iBAAiB,CACtC,KAAO,EAAY,GAAG,CACpB,IACA,IAAM,EAAc,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAG,EAAE,CACjE,GAAI,CAAC,EAAY,IAAI,CAAE,CACrBA,EAAO,CAAC,CAAG,EAAY,MAAM,CAAC,IAAI,CAClCA,EAAO,CAAC,CAAG,EAAY,MAAM,CAAC,IAAI,CAClC,KACF,CACF,CACA,CAAW,CAAC,EAAE,CAAG,EAAO,IAAI,CAAGA,EAAO,CAAC,CACvC,CAAW,CAAC,EAAE,CAAG,EAAO,IAAI,CAAGA,EAAO,CAAC,AACzC,MACE,CAAW,CAAC,EAAE,CAAG,EACjB,CAAW,CAAC,EAAE,CAAG,CAEnB,EAAW,CAAC,EAAE,CAAG,EAAM,KAAK,CAAC,KAAK,CAClC,CAAW,CAAC,EAAE,CAAG,EAAM,KAAK,CAAC,MAAM,CACnC,CAAS,CAAC,EAAE,CAAG,EAAM,MAAM,CAAC,KAAK,CACjC,CAAS,CAAC,EAAE,CAAG,EAAM,MAAM,CAAC,MAAM,CAClC,CAAS,CAAC,EAAE,CAAG,EAAI,CAAS,CAAC,EAAE,CAC/B,CAAS,CAAC,EAAE,CAAG,EAAI,CAAS,CAAC,EAAE,CAC/B,CAAU,CAAC,EAAE,CAAG,EAAM,MAAM,CAAC,UAAU,CACvC,CAAU,CAAC,EAAE,CAAG,EAAM,MAAM,CAAC,WAAW,CACxC,CAAU,CAAC,EAAE,CAAG,EAAI,CAAU,CAAC,EAAE,CACjC,CAAU,CAAC,EAAE,CAAG,EAAI,CAAU,CAAC,EAAE,CACjC,CAAU,CAAC,EAAE,CAAG,GAAM,CAAU,CAAC,EAAE,CACnC,CAAU,CAAC,EAAE,CAAG,GAAM,CAAU,CAAC,EAAE,CACnC,CAAU,CAAC,EAAE,CAAG,EAAM,KAAK,CAAC,KAAK,CAAG,CAAS,CAAC,EAAE,CAAG,GAAM,CAAU,CAAC,EAAE,CACtE,CAAU,CAAC,EAAE,CAAG,EAAM,KAAK,CAAC,MAAM,CAAG,CAAS,CAAC,EAAE,CAAG,GAAM,CAAU,CAAC,EAAE,CACvE,IAAM,EAAc,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,YAAY,AAC5E,EAAW,CAAC,EAAE,CAAGA,EAAO,CAAC,CAAG,EAC5B,CAAW,CAAC,EAAE,CAAGA,EAAO,CAAC,CAAG,EAC5B,CAAW,CAAC,EAAE,CAAG,EAAY,MAAM,CAAC,KAAK,CAAG,EAC5C,CAAW,CAAC,EAAE,CAAG,EAAY,MAAM,CAAC,MAAM,CAAG,EAC7C,IAAM,EAAe,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC,GAWhE,GAVA,EAAS,YAAY,CAAC,IAAI,CAAC,EAAQ,CAAC,CAAC,GACjC,aAAkB,GAAO,EAC3B,CAAa,CAAC,EAAE,CAAG,EAAO,KAAK,CAAC,KAAK,CACrC,CAAa,CAAC,EAAE,CAAG,EAAO,KAAK,CAAC,MAAM,GAEtC,CAAa,CAAC,EAAE,CAAG,EAAa,KAAK,CACrC,CAAa,CAAC,EAAE,CAAG,EAAa,MAAM,EAExC,CAAa,CAAC,EAAE,CAAG,EAAa,MAAM,CAAG,GAAK,EAC9C,EAAe,MAAM,GACjB,EAAS,WAAW,CAAC,YAAY,CAAE,CACrC,IAAM,EAAgB,EAAS,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,GACvE,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAe,EACzD,MACE,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAgB,GAE1D,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAM,MAAM,CAAE,GACtD,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAM,MAAM,CAAC,KAAK,CAAE,GAC5D,EAAO,MAAM,CAAC,EAAE,CAAG,IAAI,CAAC,sBAAsB,CAC9C,EAAS,OAAO,CAAC,IAAI,CAAC,CACpB,SAAU,EACV,OAAQ,EACR,MAAO,EAAO,MAAM,CACpB,SAAU,eACZ,GACI,EAAS,IAAI,GAAK,SAAkB,EACtC,EAAS,YAAY,CAAC,gBAAgB,EAE1C,CACA,gBAAiB,CACf,MAAO,CACL,KAAM,GACN,aAAc,KACd,OAAQ,IAAI,GAAM,CAClB,UAAW,KACX,aAAc,KACd,cAAe,GACf,sBAAuB,IACzB,CACF,CASA,sBAAsB,CAAY,CAAE,CAAM,CAAE,CAC1C,IAAM,EAAO,IAAI,CAAC,iBAAiB,CAC7B,EAAe,EAAa,GAAG,CACnC,EAAK,YAAY,CAAC,OAAO,CAAC,KAAK,CAC/B,EACA,EACA,EAAK,YAAY,CAAC,OAAO,CAAC,MAAM,CAChC,EAAK,MAAM,CAAC,IAAI,CAChB,EAAK,MAAM,CAAC,IAAI,EAEZ,EAAiB,EAAO,cAAc,CAAC,MAAM,CAAC,UAAa,EAQjE,OAPA,EAAe,MAAM,GACrB,EAAa,OAAO,CAAC,GACrB,EAAa,KAAK,CAChB,EAAI,EAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAC9B,EAAI,EAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAEjC,EAAa,SAAS,CAAC,EAAO,MAAM,CAAC,CAAC,CAAE,EAAO,MAAM,CAAC,CAAC,EAChD,CACT,CACF,CAEA,EAAa,SAAS,CAAG,CACvB,KAAM,CACJ,gBAAyB,CACzB,iBAA0B,CAC3B,CACD,KAAM,QACR,EE/UA,QAAc,CAAC,GACf,QAAc,CAAC,E,+CCFf,IAAMC,EAAe,IAAIC,WAAW,IACpC,IAAK,IAAI,EAAI,EAAG,EAAI,GAAc,IAChCD,CAAY,CAAC,EAAE,CAAG,EAEpB,IAAM,EAA4B,IAAI,GAAY,CAAC,CACjD,UAAW,CAAE,MAAOA,EAAc,KAAM,MAAO,KAAM,EAAa,CACpE,EAAG,CAAE,SAAU,EAAK,E,0DC+CpB,IAAM,EAAa,IArDnB,MACE,YAAY,CAAa,CAAE,CACzB,IAAI,CAAC,WAAW,CAAmBT,OAAO,MAAM,CAAC,MACjD,IAAI,CAAC,aAAa,CAAG,GAAiB,CAAC,EACvC,IAAI,CAAC,gBAAgB,CAAG,EAC1B,CAMA,wBAAwB,CAAU,CAAE,CAAW,CAAE,CAC/C,IAAM,EAAS,OAAc,GAAG,YAAY,EAC5C,GAAO,KAAK,CAAG,EACf,EAAO,MAAM,CAAG,EAChB,IAAM,EAAU,EAAO,UAAU,CAAC,MAClC,MAAO,CAAE,SAAQ,SAAQ,CAC3B,CAQA,2BAA2B,CAAQ,CAAE,CAAS,CAAEW,EAAa,CAAC,CAAE,CAC9D,EAAWJ,KAAK,IAAI,CAAC,EAAWI,EAAa,MAC7C,EAAYJ,KAAK,IAAI,CAAC,EAAYI,EAAa,MAC/C,EAAW,SAAS,GACpB,EAAY,SAAS,GACrB,IAAM,EAAM,AAAC,IAAY,EAAC,EAAM,IAAa,EACzC,AAAC,KAAI,CAAC,WAAW,CAAC,EAAI,EACxB,KAAI,CAAC,WAAW,CAAC,EAAI,CAAG,EAAE,AAAD,EAE3B,IAAI,EAAmB,IAAI,CAAC,WAAW,CAAC,EAAI,CAAC,GAAG,GAIhD,OAHI,AAAC,GACH,GAAmB,IAAI,CAAC,uBAAuB,CAAC,EAAU,EAAS,EAE9D,CACT,CAKA,uBAAuB,CAAgB,CAAE,CACvC,GAAM,CAAE,OAAK,CAAE,QAAM,CAAE,CAAG,EAAiB,MAAM,CAEjD,IAAI,CAAC,WAAW,CADJ,AAAC,IAAS,EAAC,EAAM,IAAU,GAClB,CAAC,IAAI,CAAC,EAC7B,CACA,OAAQ,CACN,IAAI,CAAC,WAAW,CAAG,CAAC,CACtB,CACF,C,oFCjDA,OAAM,EACJ,YAAY,CAAQ,CAAE,CAAO,CAAE,CAC7B,IAAI,CAAC,KAAK,CAAG,SAAW,GAExB,IAAI,CAAC,oBAAoB,CAAmBX,OAAO,MAAM,CAAC,MAC1D,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,EACpB,CACA,mBAAmB,CAAQ,CAAE,CAC3B,IAAM,EAAU,EAAS,OAAO,CAC1B,EAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAS,GAAG,CAAC,CACtD,EAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAC9D,IAAW,WAAW,EAAI,IAAe,EAAW,WAAW,AAIrE,CACA,cAAc,CAAQ,CAAE,CAAc,CAAE,CACtC,IAAM,EAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAS,OAAO,CAC9E,GAAS,kBAAkB,GAC7B,EAAS,kBAAkB,CAAG,GAC9B,IAAI,CAAC,QAAQ,CAAC,IAEZ,EAAW,WAAW,CACxB,IAAI,CAAC,aAAa,CAAC,EAAU,IAE7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GACtC,EAAe,GAAG,CAAC,GAEvB,CACA,iBAAiB,CAAQ,CAAE,CACzB,IAAM,EAAU,IAAI,CAAC,oBAAoB,CAAC,EAAS,GAAG,CAAC,CACvD,GAAI,EACF,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACvC,IAAM,EAAQ,CAAO,CAAC,EAAE,CACxB,EAAM,OAAO,CAAC,aAAa,CAAC,EAC9B,CAEJ,CACA,kBAAkB,CAAQ,CAAE,CACtB,IAAI,CAAC,oBAAoB,CAAC,EAAS,GAAG,CAAC,EACzC,IAAI,CAAC,yBAAyB,CAAC,EAAS,GAAG,CAE/C,CACA,QAAQ,CAAQ,CAAE,CAChB,GAAI,CAAC,EAAS,YAAY,CACxB,OACF,IAAM,EAAW,IAAI,CAAC,QAAQ,CACxB,EAAU,EAAS,OAAO,CAEhC,GAAI,CAAC,AADiB,EAAS,eAAe,CAC3B,aAAa,CAAC,GAAS,OAAO,CAAC,MAAM,CACtD,OAEF,IAAM,EAAS,EAAQ,YAAY,EAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,AAC3D,KAAI,CAAC,KAAK,CAAC,SAAS,CAAG,EAAS,cAAc,CAC9C,IAAM,EAAgB,EAAO,SAAS,CAAC,aAAa,CAAC,QAAQ,AAC7D,GAAc,gBAAgB,CAAG,EAAS,cAAc,CACxD,EAAc,MAAM,CAAG,EAAS,YAAY,CAAG,EAAS,YAAY,CACpE,QACE,EAAS,eAAe,CACxB,EAAc,MAAM,CACpB,GAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAE,EAC9B,CACA,SAAS,CAAQ,CAAE,CACjB,IAAM,EAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAS,GAAG,CAAC,CACtD,EAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAS,OAAO,CAC9E,IACF,IAAI,CAAC,yBAAyB,CAAC,EAAS,GAAG,EAEzC,EAAW,WAAW,EACxB,IAAI,CAAC,yBAAyB,CAAC,GAEjC,EAAS,OAAO,CAAG,EAAW,WAAW,AAC3C,CACA,cAAc,CAAQ,CAAE,CAAc,CAAE,CACtC,IAAM,EAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAC3C,EAAU,IAAI,CAAC,wBAAwB,CAAC,GAC9C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACvC,IAAM,EAAQ,CAAO,CAAC,EAAE,CACxB,EAAU,UAAU,CAAC,EAAO,EAC9B,CACF,CACA,yBAAyB,CAAQ,CAAE,CACjC,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAS,GAAG,CAAC,EAAI,IAAI,CAAC,yBAAyB,CAAC,EACnF,CACA,0BAA0B,CAAQ,CAAE,CAClC,IAAM,EAAU,EAAS,OAAO,CAC1B,EAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,CAAC,GACzD,EAAc,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAG,EAAS,YAAY,CAChE,EAAU,EAAW,OAAO,CAAC,GAAG,CAAC,AAAC,IACtC,IAAM,EAAa,OAAW,CAAC,GAAiB,EAIhD,OAHA,EAAM,MAAM,CAAC,GACb,EAAW,UAAU,CAAG,EACxB,EAAW,WAAW,CAAG,EAClB,CACT,GAKA,OAJA,IAAI,CAAC,oBAAoB,CAAC,EAAS,GAAG,CAAC,CAAG,EAC1C,EAAS,EAAE,CAAC,YAAa,KACvB,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,CACT,CACA,0BAA0B,CAAW,CAAE,CACrC,IAAI,CAAC,oBAAoB,CAAC,EAAY,CAAC,OAAO,CAAC,AAAC,IAC9C,UAAc,CAAC,EACjB,GACA,IAAI,CAAC,oBAAoB,CAAC,EAAY,CAAG,IAC3C,CACA,SAAU,CAKR,IAAK,IAAM,KAJX,IAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,GACrB,IAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,KAAK,CAAG,KACG,IAAI,CAAC,oBAAoB,CACvC,IAAI,CAAC,yBAAyB,CAAC,EAEjC,KAAI,CAAC,oBAAoB,CAAG,IAC9B,CACF,CAEA,EAAa,SAAS,CAAG,CACvB,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,UACR,ECpIA,QAAc,CAAC,GACf,QAAc,CAAC,IAAqB,C,+FCGpC,OAAM,EACJ,YAAY,CAAQ,CAAE,CAAO,CAAE,CAC7B,IAAI,CAAC,aAAa,CAAG,IAAI,GAAY,CAAC,CACpC,iBAAkB,CAAE,MAAO,IAAI,GAAM,CAAI,KAAM,aAAc,EAC7D,OAAQ,CAAE,MAAO,IAAII,aAAa,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,KAAM,WAAY,EACnE,OAAQ,CAAE,MAAO,EAAG,KAAM,KAAM,CAClC,GACA,IAAI,CAAC,sBAAsB,CAAG,IAAI,GAAS,CAAC,CAC1C,EAAG,IAAI,CAAC,aAAa,AACvB,GACA,IAAI,CAAC,aAAa,CAAmBJ,OAAO,MAAM,CAAC,MACnD,IAAI,CAAC,qBAAqB,CAAmBA,OAAO,MAAM,CAAC,MAC3D,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,EACpB,CACA,mBAAmB,CAAI,CAAE,CACvB,IAAM,EAAW,IAAI,CAAC,YAAY,CAAC,GAC7B,EAAa,EAAS,OAAO,CAC7BY,EAAY,EAAK,OAAO,CAE9B,GADA,EAAS,OAAO,CAAGA,EACf,IAAeA,EACjB,MAAO,GACF,GAAIA,EAAW,CACpB,IAAM,EAAW,EAAK,SAAS,CAC/B,GAAI,EAAS,OAAO,CAAC,MAAM,GAAK,EAAS,SAAS,EAAI,EAAS,SAAS,CAAC,MAAM,GAAK,EAAS,UAAU,CAGrG,OAFA,EAAS,SAAS,CAAG,EAAS,OAAO,CAAC,MAAM,CAC5C,EAAS,UAAU,CAAG,EAAS,SAAS,CAAC,MAAM,CACxC,GAET,IAAM,EAAgB,IAAI,CAAC,iBAAiB,CAAC,GACvC,EAAU,EAAK,OAAO,CAC5B,GAAI,EAAc,OAAO,CAAC,OAAO,GAAK,EAAQ,OAAO,EAC/C,EAAc,OAAO,CAAC,OAAO,GAAK,EAAQ,OAAO,CACnD,MAAO,CAAC,EAAc,OAAO,CAAC,qBAAqB,CAAC,EAAe,EAGzE,CACA,MAAO,EACT,CACA,cAAc,CAAI,CAAE,CAAc,CAAE,CAClC,IAAM,EAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CACzC,CAAE,SAAO,CAAE,CAAG,IAAI,CAAC,YAAY,CAAC,GACtC,GAAI,EAAS,CACX,IAAM,EAAmB,IAAI,CAAC,iBAAiB,CAAC,EAChD,GAAiB,OAAO,CAAG,EAAK,QAAQ,CACxC,EAAiB,QAAQ,CAAG,EAAK,SAAS,CAC1C,EAAQ,UAAU,CAAC,EACrB,MACE,EAAQ,KAAK,CAAC,GACd,EAAe,GAAG,CAAC,CACjB,aAAc,OACd,MACF,EAEJ,CACA,iBAAiB,CAAI,CAAE,CACrB,GAAI,EAAK,OAAO,CAAE,CAChB,IAAM,EAAmB,IAAI,CAAC,qBAAqB,CAAC,EAAK,GAAG,CAAC,AAC7D,GAAiB,OAAO,CAAG,EAAK,QAAQ,CACxC,EAAiB,QAAQ,CAAG,EAAK,SAAS,CAC1C,EAAiB,OAAO,CAAC,aAAa,CAAC,EACzC,CACF,CACA,kBAAkB,CAAI,CAAE,CACtB,IAAI,CAAC,aAAa,CAAC,EAAK,GAAG,CAAC,CAAG,KAC/B,IAAM,EAAU,IAAI,CAAC,qBAAqB,CAAC,EAAK,GAAG,CAAC,CAChD,IACF,UAAc,CAAC,GACf,IAAI,CAAC,qBAAqB,CAAC,EAAK,GAAG,CAAC,CAAG,KAE3C,CACA,QAAQ,CAAE,MAAI,CAAE,CAAE,CAChB,GAAI,CAAC,EAAK,YAAY,CACpB,MACF,GAAK,KAAK,CAAC,SAAS,CAAG,EAAK,cAAc,CAC1C,IAAM,EAAgB,IAAI,CAAC,aAAa,AACxC,GAAc,QAAQ,CAAC,gBAAgB,CAAG,EAAK,cAAc,CAC7D,EAAc,QAAQ,CAAC,MAAM,CAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAG,EAAK,YAAY,CAC9E,EAAc,MAAM,GACpB,QACE,EAAK,eAAe,CACpB,EAAc,QAAQ,CAAC,MAAM,CAC7B,GAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAE,EAC9B,CACA,aAAa,CAAI,CAAE,CACjB,OAAO,IAAI,CAAC,aAAa,CAAC,EAAK,GAAG,CAAC,EAAI,IAAI,CAAC,aAAa,CAAC,EAC5D,CACA,cAAc,CAAI,CAAE,CASlB,OARA,IAAI,CAAC,aAAa,CAAC,EAAK,GAAG,CAAC,CAAG,CAC7B,QAAS,EAAK,OAAO,CACrB,UAAW,EAAK,SAAS,CAAC,OAAO,EAAE,OACnC,WAAY,EAAK,SAAS,CAAC,SAAS,EAAE,MACxC,EACA,EAAK,EAAE,CAAC,YAAa,KACnB,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,IAAI,CAAC,aAAa,CAAC,EAAK,GAAG,CAAC,AACrC,CACA,kBAAkB,CAAI,CAAE,CACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAK,GAAG,CAAC,EAAI,IAAI,CAAC,kBAAkB,CAAC,EACzE,CACA,mBAAmB,CAAI,CAAE,CACvB,IAAM,EAAU,OAAW,CAAC,GAAa,EAMzC,OALA,EAAQ,IAAI,CAAG,EACf,EAAQ,OAAO,CAAG,EAAK,QAAQ,CAC/B,EAAQ,WAAW,CAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAG,EAAK,YAAY,CACpE,IAAI,CAAC,qBAAqB,CAAC,EAAK,GAAG,CAAC,CAAG,EACvC,EAAQ,IAAI,CAAG,EACR,CACT,CACA,SAAU,CACR,IAAK,IAAM,KAAK,IAAI,CAAC,qBAAqB,CACpC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAC/B,UAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAGhD,KAAI,CAAC,qBAAqB,CAAG,KAC7B,IAAI,CAAC,aAAa,CAAG,KACrB,IAAI,CAAC,aAAa,CAAG,KACrB,IAAI,CAAC,sBAAsB,CAAG,KAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,GACrB,IAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,QAAQ,CAAG,IAClB,CACF,CAEA,EAAS,SAAS,CAAG,CACnB,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,MACR,EC7IA,QAAc,CAAC,E,+BCHf,OAAM,EACJ,aAAc,CACZ,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,WAAW,CAAG,EACnB,IAAI,CAAC,WAAW,CAAG,GACnB,IAAI,CAAC,sBAAsB,CAAG,EAChC,CACA,IAAI,WAAY,CACd,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,AACjC,CACA,OAAQ,CACN,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,KAAK,CAAG,IACf,CACA,UAAU,CAAW,CAAE,CAAK,CAAE,CAAa,CAAE,CAC3C,IAAMA,EAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,CACrC,IAAK,IAAI,EAAI,EAAG,EAAIA,EAAQ,MAAM,CAAE,IAClC,CAAW,CAAC,IAAQ,CAAGA,CAAO,CAAC,EAAE,CAAG,CAExC,CACA,eAAe,CAAW,CAAE,CAAU,CAAE,CAAK,CAAE,CAAS,CAAE,CACxD,IAAM,EAAO,IAAI,CAAC,IAAI,CAChB,EAAW,IAAI,CAAC,QAAQ,CACxB,EAAK,EAAK,cAAc,CACxB,EAAoB,GAAa,GAAK,AAAmB,MAAnB,IAAI,CAAC,WAAW,CACtD,EAAI,EAAG,CAAC,CACR,EAAI,EAAG,CAAC,CACR,EAAI,EAAG,CAAC,CACR,EAAI,EAAG,CAAC,CACR,EAAK,EAAG,EAAE,CACV,EAAK,EAAG,EAAE,CACV,EAAY,EAAS,SAAS,CAC9B,EAAW,EAAS,SAAS,CAAC,OAC9B,EAAM,EAAS,IAAI,CACrB,EAAiB,EACf,EAAgB,IAAI,CAAC,OAAO,CAAC,aAAa,AAC3C,GAAc,QAAQ,GACzB,EAAiB,IAAI,CAAC,eAAe,CACjC,KAAI,CAAC,sBAAsB,GAAK,EAAc,SAAS,EAAI,IAAI,CAAC,WAAW,GAAK,EAAS,SAAS,AAAD,IAC/F,EAAC,GAAkB,EAAe,MAAM,CAAG,EAAI,MAAM,AAAD,GACtD,GAAiB,IAAI,CAAC,eAAe,CAAG,IAAIR,aAAa,EAAI,MAAM,GAErE,IAAI,CAAC,sBAAsB,CAAG,EAAc,SAAS,CACrD,IAAI,CAAC,WAAW,CAAG,EAAS,SAAS,CACrC,EAAc,WAAW,CAAC,EAAK,KAGnC,IAAM,EAAO,EAAK,eAAe,CACjC,IAAK,IAAIQ,EAAI,EAAGA,EAAI,EAAU,MAAM,CAAEA,GAAK,EAAG,CAC5C,IAAM,EAAI,CAAS,CAACA,EAAE,CAChB,EAAI,CAAS,CAACA,EAAI,EAAE,AAC1B,EAAW,CAAC,EAAM,CAAG,EAAI,EAAI,EAAI,EAAI,EACrC,CAAW,CAAC,EAAQ,EAAE,CAAG,EAAI,EAAI,EAAI,EAAI,EACzC,CAAW,CAAC,EAAQ,EAAE,CAAG,CAAc,CAACA,EAAE,CAC1C,CAAW,CAAC,EAAQ,EAAE,CAAG,CAAc,CAACA,EAAI,EAAE,CAC9C,CAAU,CAAC,EAAQ,EAAE,CAAG,EACxB,CAAU,CAAC,EAAQ,EAAE,CAAG,EACxB,GAAS,CACX,CACF,CACA,IAAI,YAAa,CACf,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAG,CAC1C,CACA,IAAI,WAAY,CACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,AACrC,CACF,C,8EChEA,IAAM,EAAgB,MAAM,UAAsB,GAAQ,CACxD,YAAY,GAAG,CAAI,CAAE,CACnB,IAAI,EAAU,CAAI,CAAC,EAAE,EAAI,CAAC,EACtB,aAAmBR,eACrB,QAAY,QAAQ,6DACpB,EAAU,CACR,UAAW,EACX,IAAK,CAAI,CAAC,EAAE,CACZ,QAAS,CAAI,CAAC,EAAE,AAClB,GAGF,MAAM,EAAY,AADlB,GAAU,CAAE,GAAG,EAAc,cAAc,CAAE,GAAG,CAAO,AAAC,GAC9B,SAAS,EAAI,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAC1E,EAAM,EAAQ,GAAG,EAAI,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAC9D,EAAU,EAAQ,OAAO,EAAI,IAAIC,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAC/D,EAAc,EAAQ,kBAAkB,CACxC,EAAiB,IAAI,GAAM,CAAC,CAChC,KAAM,EACN,MAAO,2BACP,cACA,MAAO,UAAkB,CAAG,YAAoB,AAClD,GAaA,KAAK,CAAC,CACJ,WAAY,CACV,UAAW,CACT,OAAQ,EACR,OAAQ,YACR,OAAQ,EACR,OAAQ,CACV,EACA,IAAK,CACH,OArBW,IAAI,GAAM,CAAC,CAC1B,KAAM,EACN,MAAO,qBACP,cACA,MAAO,UAAkB,CAAG,YAAoB,AAClD,GAiBM,OAAQ,YACR,OAAQ,EACR,OAAQ,CACV,CACF,EACA,YArBkB,IAAI,GAAM,CAAC,CAC7B,KAAM,EACN,MAAO,oBACP,cACA,MAAO,SAAiB,CAAG,YAAoB,AACjD,GAiBE,SAAU,EAAQ,QAAQ,AAC5B,GACA,IAAI,CAAC,SAAS,CAAG,MACnB,CAEA,IAAI,WAAY,CACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,AAC9C,CACA,IAAI,UAAU,CAAK,CAAE,CACnB,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAG,CAC1C,CAEA,IAAI,KAAM,CACR,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,AACxC,CACA,IAAI,IAAI,CAAK,CAAE,CACb,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAG,CACpC,CAEA,IAAI,SAAU,CACZ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,AAC9B,CACA,IAAI,QAAQ,CAAK,CAAE,CACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAG,CAC1B,CACF,CACA,GAAc,cAAc,CAAG,CAC7B,SAAU,gBACV,mBAAoB,EACtB,EACA,IAAI,EAAe,C,yEClFnB,IAAM,EAAiB,MAAM,UAAuB,GAAY,CAC9D,YAAY,GAAG,CAAI,CAAE,CACnB,KAAK,CAAC,CAAC,GACP,IAAI,EAAU,CAAI,CAAC,EAAE,EAAI,CAAC,CACH,WAAnB,OAAO,IACT,QAAY,QAAQ,gGACpB,EAAU,CACR,MAAO,EACP,OAAQ,CAAI,CAAC,EAAE,CACf,UAAW,CAAI,CAAC,EAAE,CAClB,UAAW,CAAI,CAAC,EAAE,AACpB,GAEF,IAAI,CAAC,KAAK,CAAC,EACb,CAKA,MAAM,CAAO,CAAE,CACb,EAAU,CAAE,GAAG,EAAe,cAAc,CAAE,GAAG,CAAO,AAAC,EACzD,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,SAAS,EAAI,EAAQ,SAAS,CACpD,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,SAAS,EAAI,EAAQ,SAAS,CACpD,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,KAAK,EAAI,EAAQ,KAAK,CACxC,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,MAAM,EAAI,EAAQ,MAAM,CAC3C,IAAM,EAAQ,IAAI,CAAC,SAAS,CAAG,IAAI,CAAC,SAAS,CACvC,EAAQ,EAAE,CACV,EAAM,EAAE,CACR,EAAU,EAAE,CACZ,EAAY,IAAI,CAAC,SAAS,CAAG,EAC7B,EAAY,IAAI,CAAC,SAAS,CAAG,EAC7B,EAAQ,IAAI,CAAC,KAAK,CAAG,EACrB,EAAQ,IAAI,CAAC,MAAM,CAAG,EAC5B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,IAAM,EAAI,EAAI,IAAI,CAAC,SAAS,CACtB,EAAI,EAAI,IAAI,CAAC,SAAS,CAAG,EAC/B,EAAM,IAAI,CAAC,EAAI,EAAO,EAAI,GAC1B,EAAI,IAAI,CAAC,EAAI,EAAW,EAAI,EAC9B,CACA,IAAM,EAAW,EAAY,EAC7B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,IAAK,CACjC,IAAM,EAAO,EAAI,EACX,EAAO,EAAI,EAAY,EACvB,EAAQ,EAAO,IAAI,CAAC,SAAS,CAAG,EAChC,EAAS,EAAO,IAAI,CAAC,SAAS,CAAG,EAAO,EACxC,EAAS,AAAC,GAAO,GAAK,IAAI,CAAC,SAAS,CAAG,EACvC,EAAS,AAAC,GAAO,GAAK,IAAI,CAAC,SAAS,CAAG,EAAO,EACpD,EAAQ,IAAI,CACV,EACA,EACA,EACA,EACA,EACA,EAEJ,CACA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAG,IAAID,aAAa,GACxC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAG,IAAIA,aAAa,GACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAG,IAAIC,YAAY,GACxC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,GACtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,GACtB,IAAI,CAAC,WAAW,CAAC,MAAM,EACzB,CACF,CACA,GAAe,cAAc,CAAG,CAC9B,MAAO,IACP,OAAQ,IACR,UAAW,GACX,UAAW,EACb,EACA,IAAI,EAAgB,ECvEd,EAAqB,MAAM,UAA2B,EAC1D,YAAY,EAAU,CAAC,CAAC,CAAE,CACxB,EAAU,CAAE,GAAG,EAAmB,cAAc,CAAE,GAAG,CAAO,AAAC,EAC7D,KAAK,CAAC,CACJ,MAAO,EAAQ,KAAK,CACpB,OAAQ,EAAQ,MAAM,CACtB,UAAW,EACX,UAAW,CACb,GACA,IAAI,CAAC,MAAM,CAAC,EACd,CAKA,OAAO,CAAO,CAAE,CACd,IAAI,CAAC,KAAK,CAAG,EAAQ,KAAK,EAAI,IAAI,CAAC,KAAK,CACxC,IAAI,CAAC,MAAM,CAAG,EAAQ,MAAM,EAAI,IAAI,CAAC,MAAM,CAC3C,IAAI,CAAC,cAAc,CAAG,EAAQ,aAAa,EAAI,IAAI,CAAC,cAAc,CAClE,IAAI,CAAC,eAAe,CAAG,EAAQ,cAAc,EAAI,IAAI,CAAC,eAAe,CACrE,IAAI,CAAC,UAAU,CAAG,EAAQ,SAAS,EAAI,IAAI,CAAC,UAAU,CACtD,IAAI,CAAC,WAAW,CAAG,EAAQ,UAAU,EAAI,IAAI,CAAC,WAAW,CACzD,IAAI,CAAC,UAAU,CAAG,EAAQ,SAAS,EAAI,IAAI,CAAC,UAAU,CACtD,IAAI,CAAC,aAAa,CAAG,EAAQ,YAAY,EAAI,IAAI,CAAC,aAAa,CAC/D,IAAI,CAAC,SAAS,GACd,IAAI,CAAC,eAAe,EACtB,CAEA,iBAAkB,CAChB,IAAM,EAAY,IAAI,CAAC,SAAS,CAC1B,EAAI,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,WAAW,CACtC,EAAS,IAAI,CAAC,KAAK,CAAG,EAAI,EAAI,IAAI,CAAC,KAAK,CAAG,EAC3C,EAAI,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,aAAa,CAExCI,EAAQF,KAAK,GAAG,CAAC,EADR,IAAI,CAAC,MAAM,CAAG,EAAI,EAAI,IAAI,CAAC,MAAM,CAAG,EAEnD,EAAS,CAAC,EAAE,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,IAAI,CAAC,UAAU,CAAGE,EACjF,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,IAAI,CAAC,MAAM,CAAG,IAAI,CAAC,aAAa,CAAGA,EACnG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,IAAI,CAAC,MAAM,CAC3E,CAAS,CAAC,EAAE,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,IAAI,CAAC,UAAU,CAAGA,EACjF,CAAS,CAAC,EAAE,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,IAAI,CAAC,KAAK,CAAG,IAAI,CAAC,WAAW,CAAGA,EAC/F,CAAS,CAAC,EAAE,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,CAAS,CAAC,GAAG,CAAG,IAAI,CAAC,KAAK,CACzE,IAAI,CAAC,SAAS,CAAC,aAAa,MAAM,EACpC,CAEA,WAAY,CACV,IAAM,EAAM,IAAI,CAAC,GAAG,AACpB,EAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EACtC,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,EACpC,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EACvC,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EACxC,IAAM,EAAO,EAAI,IAAI,CAAC,cAAc,CAC9B,EAAO,EAAI,IAAI,CAAC,eAAe,AACrC,EAAG,CAAC,EAAE,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EAAO,IAAI,CAAC,UAAU,CAC7D,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EAAO,IAAI,CAAC,UAAU,CAC7D,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EAAI,EAAO,IAAI,CAAC,WAAW,CAClE,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,CAAG,CAAC,GAAG,CAAG,EAAI,EAAO,IAAI,CAAC,aAAa,CACrE,IAAI,CAAC,SAAS,CAAC,OAAO,MAAM,EAC9B,CACF,CAEA,GAAmB,cAAc,CAAG,CAElC,MAAO,IAEP,OAAQ,IAER,UAAW,GAEX,UAAW,GAEX,WAAY,GAEZ,aAAc,GAEd,cAAe,IAEf,eAAgB,GAClB,CC1EA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,cAAc,CAAmBT,OAAO,MAAM,CAAC,MACpD,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,cAAc,CAAM,CAAE,CAAe,CAAE,CACrC,IAAM,EAAY,IAAI,CAAC,aAAa,CAAC,EACjC,GAAO,gBAAgB,EACzB,IAAI,CAAC,sBAAsB,CAAC,EAAQ,GACtC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAC9C,CACA,iBAAiB,CAAM,CAAE,CACvB,IAAM,EAAY,IAAI,CAAC,cAAc,CAAC,EAAO,GAAG,CAAC,AAC7C,GAAO,gBAAgB,EACzB,IAAI,CAAC,sBAAsB,CAAC,EAAQ,GACtC,EAAU,OAAO,CAAC,aAAa,CAAC,EAClC,CACA,mBAAmB,CAAM,CAAE,CACzB,IAAMM,EAAU,EAAO,QAAQ,CACzB,EAAY,IAAI,CAAC,aAAa,CAAC,UACrC,AAAI,EAAU,OAAO,CAAC,OAAO,GAAKA,EAAQ,OAAO,EACxC,CAAC,EAAU,OAAO,CAAC,qBAAqB,CAAC,EAAWA,EAG/D,CACA,kBAAkB,CAAM,CAAE,CACxB,IAAM,EAAkB,IAAI,CAAC,cAAc,CAAC,EAAO,GAAG,CAAC,CACvD,UAAc,CAAC,GACf,IAAI,CAAC,cAAc,CAAC,EAAO,GAAG,CAAC,CAAG,IACpC,CACA,uBAAuB,CAAM,CAAE,CAAe,CAAE,CAC9C,EAAO,gBAAgB,CAAG,GAC1B,EAAgB,QAAQ,CAAC,MAAM,CAAC,GAChC,EAAgB,OAAO,CAAG,EAAO,QAAQ,AAC3C,CACA,cAAc,CAAM,CAAE,CACpB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAO,GAAG,CAAC,EAAI,IAAI,CAAC,cAAc,CAAC,EAChE,CACA,eAAe,CAAM,CAAE,CACrB,IAAM,EAAgB,IAAI,GAAa,CASvC,OARA,EAAc,QAAQ,CAAG,IDmCL,EClCpB,EAAc,IAAI,CAAG,EACrB,EAAc,OAAO,CAAG,EAAO,QAAQ,CACvC,EAAc,WAAW,CAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAG,EAAO,YAAY,CAC7E,IAAI,CAAC,cAAc,CAAC,EAAO,GAAG,CAAC,CAAG,EAClC,EAAO,EAAE,CAAC,YAAa,KACrB,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,CACT,CACA,SAAU,CACR,IAAK,IAAM,KAAK,IAAI,CAAC,cAAc,CAEjC,AADsB,IAAI,CAAC,cAAc,CAAC,EAAE,CAC9B,QAAQ,CAAC,OAAO,EAEhC,KAAI,CAAC,cAAc,CAAG,KACtB,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAEA,EAAoB,SAAS,CAAG,CAC9B,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,iBACR,ECrEA,QAAc,CAAC,E,mBCMX,EACA,E,mJCVJ,IAAM,EAAY,CAChB,KAAM,aACN,OAAQ,CACN,OAEE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,CAAC,CAEL,KAEE;AACN;;AAEA;AACA,QAAQ,CAAC,AAEP,EACA,SAAU,CACR,OAEE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,CAAC,CAEL,KAEE;;AAEN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,CAAC,AAEP,CACF,EACM,EAAc,CAClB,KAAM,aACN,OAAQ,CACN,OAEE;AACN;AACA;AACA;AACA,QAAQ,CAAC,CAEL,KAEE;AACN;;AAEA;AACA,QAAQ,CAAC,AAEP,EACA,SAAU,CACR,OAEE;AACN;AACA;AACA;AACA;AACA,QAAQ,CAAC,CAEL,KAEE;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC,AAEP,CACF,CDnGA,OAAM,UAA2B,GAAM,CACrC,aAAc,CACZ,GAAe,GAAa,GAAAO,EAAA,GAA4B,CACtD,KAAM,uBACN,KAAM,CACJ,IAAe,CACf,EACA,GAAc,CACf,AACH,EAAC,EACD,GAAc,GAAY,GAAAA,EAAA,GAA2B,CACnD,KAAM,uBACN,KAAM,CACJ,IAAiB,CACjB,EACA,GAAgB,CACjB,AACH,EAAC,EAQD,KAAK,CAAC,CACJ,YACA,aACA,UAAW,CACT,cAAe,IAAI,GAAY,CAAC,CAC9B,iBAAkB,CAAE,MAAO,IAAI,GAAM,CAAI,KAAM,aAAc,EAC7D,OAAQ,CAAE,MAAO,IAAIT,aAAa,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,KAAM,WAAY,EACnE,OAAQ,CAAE,MAAO,EAAG,KAAM,KAAM,CAClC,GACA,eAhBmB,IAAI,GAAY,CAAC,CACtC,UAAW,CAAE,MAAO,IAAI,GAAM,CAAI,KAAM,aAAc,EACtD,YAAa,CAAE,MAAO,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,KAAM,WAAY,EACxE,aAAc,CAAE,MAAO,IAAIA,aAAa,CAAC,EAAG,EAAE,EAAG,KAAM,WAAY,EACnE,kBAAmB,CAAE,MAAO,IAAI,GAAM,CAAI,KAAM,aAAc,EAC9D,YAAa,CAAE,MAAO,IAAIA,aAAa,CAAC,IAAK,IAAK,GAAK,GAAI,EAAG,KAAM,WAAY,CAClF,GAWI,SAAU,gBAAoB,CAC9B,SAAU,sBAA0B,AACtC,CACF,EACF,CACA,eAAe,CAAK,CAAE,CAAM,CAAE,CAAM,CAAE,CAAO,CAAE,CAAO,CAAE,CAAO,CAAE,CAC/D,IAAM,EAAiB,IAAI,CAAC,SAAS,CAAC,cAAc,CAC9C,EAAe,EAAQ,KAAK,CAC5B,EAAgB,EAAQ,MAAM,CAC9B,EAAgB,EAAQ,aAAa,CACrC,EAAoB,EAAe,QAAQ,CAAC,iBAAiB,CACnE,EAAkB,GAAG,CACnB,EAAO,CAAC,CAAG,EAAe,EAC1B,EAAO,CAAC,CAAG,EAAe,EAC1B,EAAO,CAAC,CAAG,EAAgB,EAC3B,EAAO,CAAC,CAAG,EAAgB,EAC3B,EAAO,EAAE,CAAG,EACZ,EAAO,EAAE,CAAG,GAEd,EAAkB,MAAM,GACxB,EAAe,QAAQ,CAAC,SAAS,CAAG,EAAc,QAAQ,CAC1D,EAAe,QAAQ,CAAC,WAAW,CAAG,EAAc,WAAW,CAC/D,EAAe,QAAQ,CAAC,YAAY,CAAG,EAAc,YAAY,CACjE,EAAe,QAAQ,CAAC,iBAAiB,CAAG,EAC5C,EAAe,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAG,EACzC,EAAe,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAG,EACzC,EAAe,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAG,EACzC,EAAe,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAG,EACrC,IACF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAG,EAAQ,MAAM,CACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAG,EAAQ,MAAM,CAAC,KAAK,CAElD,CACF,CE7EA,MAAM,UAAqB,GAAY,CACrC,aAAc,CACZ,KAAK,CAAC,CACJ,UAAW,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EACpD,IAAK,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,EAC9C,QAAS,IAAIC,YAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAE,CAC7C,EACF,CACF,CCCA,IAAM,EAAa,IAAI,CACvB,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,qBAAqB,CAAmBL,OAAO,MAAM,CAAC,MAC3D,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,mBAAmB,CAAU,CAAE,CAC7B,IAAMM,EAAmB,IAAI,CAAC,oBAAoB,CAAC,GAC7C,EAAaA,EAAiB,QAAQ,CAC5C,IAAI,CAAC,eAAe,CAAC,GACrB,IAAM,EAAWA,EAAiB,QAAQ,CAC1C,GAAI,GAAY,IAAa,EAAY,CACvC,GAAM,CAAE,eAAa,CAAE,CAAGA,EAC1B,GAAI,EAAc,OAAO,CAAC,OAAO,GAAK,EAAW,OAAO,CAAC,OAAO,CAC9D,MAAO,CAAC,EAAc,OAAO,CAAC,qBAAqB,CAAC,EAAe,EAAW,OAAO,CAEzF,CACA,OAAO,IAAe,CACxB,CACA,cAAc,CAAY,CAAE,CAAc,CAAE,CAC1C,IAAM,EAAU,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAChD,IAAI,CAAC,eAAe,CAAC,GACrB,IAAM,EAAmB,IAAI,CAAC,oBAAoB,CAAC,GAC7C,CAAE,UAAQ,CAAE,UAAQ,CAAE,CAAG,EAC/B,GAAI,EAAU,CACZ,EAAiB,aAAa,EAAK,GAAiB,aAAa,CAAG,IAAI,GAAa,AAAC,EACtF,IAAM,EAAgB,EAAiB,aAAa,AAChD,GAAa,sBAAsB,GACrC,EAAa,sBAAsB,CAAG,GACtC,IAAI,CAAC,oBAAoB,CAAC,GAC1B,EAAc,QAAQ,CAAG,EACzB,EAAc,IAAI,CAAG,EACrB,EAAc,OAAO,CAAG,EAAa,QAAQ,EAE/C,EAAc,WAAW,CAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAG,EAAa,YAAY,CACnF,EAAQ,UAAU,CAAC,EACrB,MACE,EAAQ,KAAK,CAAC,GACd,EAAiB,MAAM,EAAK,GAAiB,MAAM,CAAG,IAAI,CAAmB,EAC7E,IAAI,CAAC,gBAAgB,CAAC,GACtB,EAAe,GAAG,CAAC,EAEvB,CACA,QAAQ,CAAY,CAAE,CACpB,GAAM,CAAE,QAAM,CAAE,CAAG,IAAI,CAAC,qBAAqB,CAAC,EAAa,GAAG,CAAC,AAC/D,GAAO,MAAM,CAAC,EAAE,CAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAC1D,IAAM,EAAgB,EAAO,SAAS,CAAC,aAAa,CAAC,QAAQ,AAC7D,GAAc,gBAAgB,CAAG,EAAa,cAAc,CAC5D,EAAc,MAAM,CAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAG,EAAa,YAAY,CAC9E,QACE,EAAa,eAAe,CAC5B,EAAc,MAAM,CACpB,GAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAC1B,SAAU,EACV,SACA,MAAO,aAAe,AACxB,EACF,CACA,iBAAiB,CAAY,CAAE,CAC7B,IAAMA,EAAmB,IAAI,CAAC,oBAAoB,CAAC,GAC7C,CAAE,UAAQ,CAAE,CAAGA,EACrB,GAAI,EAAU,CACZ,GAAM,CAAE,eAAa,CAAE,CAAGA,CACtB,GAAa,sBAAsB,EACrC,IAAI,CAAC,oBAAoB,CAAC,GAC5B,EAAc,OAAO,CAAC,aAAa,CAAC,EACtC,MAAO,GAAI,EAAa,sBAAsB,CAAE,CAC9C,GAAM,CAAE,QAAM,CAAE,CAAGA,EACnB,EAAO,cAAc,CACnB,EAAa,KAAK,CAClB,EAAa,MAAM,CACnB,EAAa,cAAc,CAAC,MAAM,CAClC,EAAa,MAAM,CAAC,CAAC,CACrB,EAAa,MAAM,CAAC,CAAC,CACrB,EAAa,OAAO,CAExB,CACA,EAAa,sBAAsB,CAAG,EACxC,CACA,kBAAkB,CAAY,CAAE,CAC9B,IAAMA,EAAmB,IAAI,CAAC,oBAAoB,CAAC,EACnDA,CAAAA,EAAiB,aAAa,CAAG,KACjCA,EAAiB,MAAM,EAAE,UACzB,IAAI,CAAC,qBAAqB,CAAC,EAAa,GAAG,CAAC,CAAG,IACjD,CACA,qBAAqB,CAAU,CAAE,CAC/B,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAW,GAAG,CAAC,EAAI,IAAI,CAAC,qBAAqB,CAAC,EAClF,CACA,sBAAsB,CAAY,CAAE,CAClC,IAAM,EAAW,IAAI,GAAY,CAAC,CAChC,QAAS,EAAW,OAAO,CAC3B,UAAW,EAAW,SAAS,CAAC,KAAK,GACrC,IAAK,EAAW,GAAG,CAAC,KAAK,EAC3B,GASA,OARA,IAAI,CAAC,qBAAqB,CAAC,EAAa,GAAG,CAAC,CAAG,CAC7C,SAAU,GACV,WAAY,EACZ,UACF,EACA,EAAa,EAAE,CAAC,YAAa,KAC3B,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,IAAI,CAAC,qBAAqB,CAAC,EAAa,GAAG,CAAC,AACrD,CACA,qBAAqB,CAAY,CAAE,KClHP,ECHM,EFuHhC,ICnHI,EACA,EACA,EACF,EACA,EASE,EChBA,EACA,EFqHE,CAAE,UAAQ,CAAE,CADK,IAAI,CAAC,oBAAoB,CAAC,GAE3C,EAAQ,EAAa,OAAO,CAAC,MAAM,CAAC,KAAK,AACrB,YAAtB,EAAM,WAAW,GACnB,EAAM,WAAW,CAAG,SACpB,EAAM,MAAM,ICxHY,ED0HL,EAAS,GAAG,CCxH7B,EAAQ,CADR,EAAU,ADyHP,ECzHoB,OAAO,EACd,KAAK,CAAC,KAAK,CAC3B,EAAS,EAAQ,KAAK,CAAC,MAAM,CAC/B,EAAU,EACV,EAAU,EACV,ADoHK,ECpHQ,qBAAqB,GACpC,EAAU,ADmHH,ECnHgB,MAAM,CAAC,CAAC,CAC/B,EAAU,ADkHH,EClHgB,MAAM,CAAC,CAAC,EAEjC,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,CAAC,EACnB,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,EAAI,EACtB,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,CAAC,EACnB,CAAG,CAAC,EAAE,CAAG,CAAG,CAAC,EAAE,CAAG,EAAI,EAEtB,CADM,EAAgB,UAAa,EACrB,QAAQ,CAAC,AD2Gd,EC3G2B,cAAc,CAAC,MAAM,EACzD,EAAc,EAAE,EAAI,AD0GX,EC1GwB,KAAK,CACtC,EAAc,EAAE,EAAI,ADyGX,ECzGwB,MAAM,CACvC,EAAc,MAAM,GACpB,EAAc,KAAK,CAAC,ADuGX,ECvGwB,KAAK,CAAG,EAAO,ADuGvC,ECvGoD,MAAM,CAAG,GACtE,AEvBF,SAAqB,CAAK,CAAE,CAAM,CAAE,CAAM,CAAE,CAAM,EAChD,IAAI,EAAQ,EACN,EAAO,EAAM,MAAM,CFqBR,EEpBX,EAAI,EAAO,CAAC,CACZ,EAAI,EAAO,CAAC,CACZ,EAAI,EAAO,CAAC,CACZ,EAAI,EAAO,CAAC,CACZ,EAAK,EAAO,EAAE,CACd,EAAK,EAAO,EAAE,CAEpB,IADA,GFciB,EEbV,EAAQ,GAAM,CACnB,IAAM,EAAI,CAAK,CAAC,EAAO,CACjB,EAAI,CAAK,CAAC,EAAS,EAAE,AAC3B,EAAK,CAAC,EAAO,CAAG,EAAI,EAAI,EAAI,EAAI,EAChC,CAAK,CAAC,EAAS,EAAE,CAAG,EAAI,EAAI,EAAI,EAAI,EACpC,GFQe,EEPf,GACF,CACF,EFKc,EAAK,EAAG,EAAG,GCvBW,EF8HL,EAAS,SAAS,CE7HzC,EAAU,AF6HD,EE7Hc,MAAM,CAAC,CAAC,CAC/B,EAAU,AF4HD,EE5Hc,MAAM,CAAC,CAAC,CACrC,CAAS,CAAC,EAAE,CAAG,CAAC,EAAU,AF2HX,EE3HwB,KAAK,CAC5C,CAAS,CAAC,EAAE,CAAG,CAAC,EAAU,AF0HX,EE1HwB,MAAM,CAC7C,CAAS,CAAC,EAAE,CAAG,AAAC,GAAI,CAAM,EAAK,AFyHhB,EEzH6B,KAAK,CACjD,CAAS,CAAC,EAAE,CAAG,CAAC,EAAU,AFwHX,EExHwB,MAAM,CAC7C,CAAS,CAAC,EAAE,CAAG,AAAC,GAAI,CAAM,EAAK,AFuHhB,EEvH6B,KAAK,CACjD,CAAS,CAAC,EAAE,CAAG,AAAC,GAAI,CAAM,EAAK,AFsHhB,EEtH6B,MAAM,CAClD,CAAS,CAAC,EAAE,CAAG,CAAC,EAAU,AFqHX,EErHwB,KAAK,CAC5C,CAAS,CAAC,EAAE,CAAG,AAAC,GAAI,CAAM,EAAK,AFoHhB,EEpH6B,MAAM,AFqHlD,CACA,SAAU,CACR,IAAK,IAAM,KAAK,IAAI,CAAC,qBAAqB,CACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,UAAU,CAEjE,KAAI,CAAC,qBAAqB,CAAG,KAC7B,IAAI,CAAC,SAAS,CAAG,IACnB,CACA,gBAAgB,CAAY,CAAE,CAC5B,IAAM,EAAiB,IAAI,CAAC,oBAAoB,CAAC,GAC3C,EAAU,EAAa,OAAO,CAChC,EAAqB,GAKzB,OAJI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAK,SAAkB,EAC5C,GAAqB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,AAAD,EAEvE,EAAe,QAAQ,CAAG,EAAQ,aAAa,CAAC,QAAQ,EAAK,IAAsB,EAAQ,MAAM,CAAC,YAAY,AAAD,EACtG,EAAe,QAAQ,AAChC,CACF,CAEA,EAAiB,SAAS,CAAG,CAC3B,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,cACR,EIvJA,QAAc,CAAC,E,oHCAf,OAAM,UAA2B,GAAY,CAC3C,aAAc,CACZ,KAAK,IAAIQ,WAET,IAAI,CAAC,KAAK,CAAmBd,OAAO,MAAM,CAAC,MAK3C,IAAI,CAAC,UAAU,CAAG,EAKlB,IAAI,CAAC,UAAU,CAAG,GAElB,IAAI,CAAC,WAAW,CAAG,CAAE,SAAU,EAAG,OAAQ,EAAG,QAAS,CAAE,EAKxD,IAAI,CAAC,cAAc,CAAG,EAEtB,IAAI,CAAC,aAAa,CAAG,CAAE,KAAM,OAAQ,MAAO,CAAE,EAE9C,IAAI,CAAC,KAAK,CAAG,EAAE,CAEf,IAAI,CAAC,uBAAuB,CAAG,IAC/B,IAAI,CAAC,oBAAoB,CAAG,GAC9B,CAKA,IAAI,MAAO,CAET,MADA,QAAY,QAAQ,4EACb,IAAI,CAAC,UAAU,AACxB,CAKA,IAAI,cAAe,CAEjB,MADA,QAAY,QAAQ,+EACb,IAAI,CAAC,KAAK,AACnB,CAKA,IAAI,MAAO,CAET,MADA,QAAY,QAAQ,sFACb,IAAI,CAAC,WAAW,CAAC,QAAQ,AAClC,CAKA,IAAI,oBAAqB,CAEvB,MADA,QAAY,QAAQ,mGACb,IAAI,CAAC,aAAa,CAAC,KAAK,AACjC,CAKA,IAAI,mBAAoB,CAEtB,MADA,QAAY,QAAQ,iGACb,IAAI,CAAC,aAAa,CAAC,IAAI,AAChC,CACA,QAAQ,EAAkB,EAAK,CAAE,CAG/B,IAAK,IAAM,KAFX,IAAI,CAAC,IAAI,CAAC,UAAW,IAAI,EACzB,IAAI,CAAC,kBAAkB,GACP,IAAI,CAAC,KAAK,CACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAE/B,KAAI,CAAC,KAAK,CAAG,KACT,IACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,AAAC,GAAS,EAAK,OAAO,CAAC,OAAO,CAAC,KAClD,IAAI,CAAC,KAAK,CAAG,KAEjB,CACF,C,0FCrFA,SAAS,EAAkB,CAAK,EAC9B,GAAI,AAAU,KAAV,EACF,MAAO,EAAE,AAEP,AAAiB,WAAjB,OAAO,GACT,GAAQ,CAAC,EAAM,AAAD,EAEhB,IAAM,EAAS,EAAE,CACjB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,CAAE,EAAI,EAAG,IAAK,CAC5C,IAAMY,EAAO,CAAK,CAAC,EAAE,CACrB,GAAIG,MAAM,OAAO,CAACH,GAAO,CACvB,GAAIA,AAAgB,IAAhBA,EAAK,MAAM,CACb,MAAM,AAAII,MAAM,CAAC,8DAA8D,EAAEJ,EAAK,MAAM,CAAC,CAAC,CAAC,EAEjG,GAAIA,AAAmB,IAAnBA,CAAI,CAAC,EAAE,CAAC,MAAM,EAAUA,AAAmB,IAAnBA,CAAI,CAAC,EAAE,CAAC,MAAM,CACxC,MAAM,AAAII,MAAM,8CAElB,IAAM,EAAYJ,CAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAC/B,EAAUA,CAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GACnC,GAAI,EAAU,EACZ,MAAM,AAAII,MAAM,0CAElB,IAAK,IAAIJ,EAAK,EAAyBA,GAAT,EAAmBA,IAC/C,EAAO,IAAI,CAACK,OAAO,YAAY,CAACL,GAEpC,MACE,EAAO,IAAI,IAAIG,MAAM,IAAI,CAACH,GAE9B,CACA,GAAI,AAAkB,IAAlB,EAAO,MAAM,CACf,MAAM,AAAII,MAAM,sDAElB,OAAO,CACT,CCrBA,MAAM,UAA0B,EAI9B,YAAY,CAAO,CAAE,CACnB,KAAK,GAKL,IAAI,CAAC,UAAU,CAAG,EAElB,IAAI,CAAC,KAAK,CAAG,EAAE,CACf,IAAI,CAAC,QAAQ,CAAG,EAChB,IAAI,CAAC,aAAa,CAAmBhB,OAAO,MAAM,CAAC,MACnD,IAAI,CAAC,aAAa,CAAG,EAAE,CACvB,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,iBAAiB,CAAG,GACzB,IAAI,CAAC,YAAY,CAAG,GAEpB,MAAM,EAAQ,AADS,EACM,KAAK,CAAC,KAAK,EACpC,CAFmB,EAEJ,YAAY,GAC7B,EAAM,KAAK,CAAC,KAAK,CAAG,SACpB,EAAM,KAAK,CAAC,KAAK,CAAG,EACpB,EAAM,KAAK,CAAC,OAAO,CAAG,SAAa,CACnC,EAAM,KAAK,CAAC,IAAI,CAAG,MAErB,MAAMW,EAAoB,EAAM,QAAQ,AACxC,GAAM,QAAQ,CAAG,IAAI,CAAC,uBAAuB,CAC7C,MAAM,EAAO,QAAwB,EACjC,CAXmB,EAWJ,YAAY,CACzB,EAAM,OAAO,EACf,GAAM,OAAO,CAAC,KAAK,EAAI,IAAI,CAAC,oBAAoB,CAAGA,CAAgB,EAGrE,EAAM,QAAQ,CAAG,IAAI,CAAC,oBAAoB,CAAGA,EAE/C,IAAI,CAAC,MAAM,CAAG,EACd,IAAI,CAAC,YAAY,CAAG,AAnBG,EAmBY,WAAW,EAAI,GAClD,IAAI,CAAC,UAAU,CAAG,AApBK,EAoBU,UAAU,EAAI,EAC/C,IAAI,CAAC,QAAQ,CAAG,AArBO,EAqBQ,OAAO,EAAI,EAC1C,IAAI,CAAC,WAAW,CAAG,eAA6B,CAAC,GACjD,IAAI,CAAC,UAAU,CAAG,EAAM,UAAU,EAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAI,EAAM,QAAQ,AACnF,CACA,iBAAiB,CAAK,CAAE,CACtB,IAII,EAJE,EAAW,EAAkB,GAAO,MAAM,CAAC,AAAC,GAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAO,MAAM,CAAC,CAAC,EAAM,EAAO,IAAS,EAAK,OAAO,CAAC,KAAU,GACpJ,GAAI,CAAC,EAAS,MAAM,CAClB,MACF,KAAI,CAAC,aAAa,CAAG,IAAI,IAAI,CAAC,aAAa,IAAK,EAAS,CAOzD,GAAI,CAAE,QAAM,CAAE,SAAO,CAAE,CAAG,CAJxB,EADE,AAA2B,KAA3B,IAAI,CAAC,iBAAiB,CACb,IAAI,CAAC,SAAS,GAEd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAEZ,gBAAgB,CAC/C,EAAgB,EAAS,OAAO,CAAC,MAAM,CACrC,EAAQ,IAAI,CAAC,MAAM,CACrB,EAAW,IAAI,CAAC,SAAS,CACzB,EAAW,IAAI,CAAC,SAAS,CACvB,EAAY,IAAI,CAAC,oBAAoB,CAAG,IAAI,CAAC,uBAAuB,CACpE,EAAU,IAAI,CAAC,QAAQ,CAAG,EAC1B,EAAa,AAAoB,WAApB,EAAM,SAAS,CAAgB,EAAI,EAClD,EAAgB,EAChB,EAAc,GAClB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,MAAM,CAAE,IAAK,CACxC,IAAM,EAAO,CAAQ,CAAC,EAAE,CAClBO,EAAU,eAA6B,CAAC,EAAM,EAAO,EAAQ,GACnEA,CAAAA,EAAQ,UAAU,CAAGA,EAAQ,MAAM,CACnC,IAAM,EAAQ,EAAaA,EAAQ,KAAK,CAAG,EACrC,EAASA,EAAQ,MAAM,CAAG,EAC1B,EAAc,EAAQ,AAAU,EAAV,EACtB,EAAe,EAAS,AAAU,EAAV,EAM9B,GALA,EAAc,GACD,OAAT,GAAiB,AAAS,OAAT,GAAiB,AAAS,MAAT,GAAgB,AAAS,MAAT,IACpD,EAAc,GACd,EAAgBX,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAc,KAE/C,EAAW,EAAc,MAG3B,EAAW,EACP,AAHJ,IAAY,CAAY,EACxB,GAAgB,CAAW,EAEI,KAAK,CAClC,EAAc,MAAM,GACpB,IAAM,EAAY,IAAI,CAAC,SAAS,GAChC,EAAS,EAAU,gBAAgB,CAAC,MAAM,CAC1C,EAAU,EAAU,gBAAgB,CAAC,OAAO,CAC5C,EAAgB,EAAU,OAAO,CAAC,MAAM,CACxC,EAAW,CACb,CAEF,IAAM,EAAW,EAAQ,EAAa,GAAM,UAAU,EAAE,UAAY,GAAM,GAAM,OAAO,EAAE,OAAS,GAQlG,GAPA,IAAI,CAAC,KAAK,CAAC,EAAK,CAAG,CACjB,GAAI,EAAK,WAAW,CAAC,GACrB,QAAS,CAAC,IAAI,CAAC,QAAQ,CACvB,QAAS,CAAC,IAAI,CAAC,QAAQ,CACvB,WACA,QAAS,CAAC,CACZ,EACI,EAAa,CACf,IAAI,CAAC,UAAU,CACb,EACAW,EACA,EAAW,EACX,EAAW,EACX,EACA,GAEF,IAAM,EAAK,EAAc,KAAK,CAAG,EAC3B,EAAK,EAAc,MAAM,CAAG,EAC5B,EAAQ,IAAI,GAAS,CACzB,EAAW,EAAK,EAAc,KAAK,CACnC,EAAW,EAAK,EAAc,MAAM,CACpC,EAAc,EAAK,EAAc,KAAK,CACtC,EAAe,EAAK,EAAc,MAAM,CAE1C,KAAI,CAAC,KAAK,CAAC,EAAK,CAAC,OAAO,CAAG,IAAI,GAAO,CAAC,CACrC,OAAQ,EACR,OACF,GACA,GAAYX,KAAK,IAAI,CAAC,EACxB,CACF,CACA,EAAc,MAAM,GACpB,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,YAAY,EAAI,IAAI,CAAC,aAAa,CAAC,EAAU,EACpD,CAKA,IAAI,cAAe,CAEjB,MADA,QAAY,QAAQ,+EACb,IAAI,CAAC,KAAK,AACnB,CACA,cAAc,CAAQ,CAAE,CAAO,CAAE,CAC/B,IAAM,EAAe,IAAI,CAAC,aAAa,CACvC,IAAK,IAAIK,EAAI,EAAGA,EAAI,EAAS,MAAM,CAAEA,IAAK,CACxC,IAAM,EAAQ,CAAQ,CAACA,EAAE,CACzB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAE,IAAK,CAClD,IAAM,EAAS,IAAI,CAAC,aAAa,CAAC,EAAE,CAChC,EAAK,CAAY,CAAC,EAAM,AACxB,CAAC,GACH,GAAK,CAAY,CAAC,EAAM,CAAG,EAAQ,WAAW,CAAC,GAAO,KAAK,AAAD,EAC5D,IAAI,EAAK,CAAY,CAAC,EAAO,AACzB,CAAC,GACH,GAAK,CAAY,CAAC,EAAO,CAAG,EAAQ,WAAW,CAAC,GAAQ,KAAK,AAAD,EAC9D,IAAI,EAAQ,EAAQ,WAAW,CAAC,EAAQ,GAAQ,KAAK,CACjD,EAAS,EAAS,GAAK,CAAC,CACxB,IACF,KAAI,CAAC,KAAK,CAAC,EAAM,CAAC,OAAO,CAAC,EAAO,CAAG,CAAK,EAIvC,AADJ,GAAS,AADT,GAAQ,EAAQ,WAAW,CAAC,EAAQ,GAAQ,KAAK,AAAD,EAC9B,GAAK,CAAC,CAAC,GAEvB,KAAI,CAAC,KAAK,CAAC,EAAO,CAAC,OAAO,CAAC,EAAM,CAAG,CAAK,CAE7C,CACF,CACF,CACA,WAAY,CACV,IAAI,CAAC,iBAAiB,GACtB,IAAM,EAAoB,IAAI,CAAC,UAAU,CACnC,EAAmB,8BAAqC,CAAC,IAAK,IAAK,GACzE,IAAI,CAAC,aAAa,CAAC,EAAiB,OAAO,CAAE,IAAI,CAAC,MAAM,CAAE,GAC1D,IAAMD,EAAa,EAAqB,KAAI,CAAC,oBAAoB,CAAG,IAAI,CAAC,uBAAuB,AAAD,EACzF,EAAU,IAAI,GAAO,CAAC,CAC1B,OAAQ,IAAI,GAAW,CAAC,CACtB,SAAU,EAAiB,MAAM,CACjCA,WAAAA,EACA,UAAW,6BACb,EACF,GACM,EAAW,CACf,mBACA,SACF,EAEA,OADA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAG,EAC9B,CACT,CAEA,cAAc,CAAO,CAAE,CAAK,CAAEA,CAAU,CAAE,CACxC,EAAM,QAAQ,CAAG,IAAI,CAAC,oBAAoB,CAC1C,EAAQ,KAAK,CAACA,EAAYA,GAC1B,EAAQ,IAAI,CAAG,QAAwB,GACvC,EAAM,QAAQ,CAAG,IAAI,CAAC,uBAAuB,CAC7C,EAAQ,YAAY,CAAG,EAAM,YAAY,CACzC,IAAM,EAAS,EAAM,OAAO,CACtBF,EAAkB,GAAQ,OAAS,EAUzC,GATI,IACF,EAAQ,SAAS,CAAGA,EACpB,EAAQ,QAAQ,CAAG,EAAO,IAAI,CAC9B,EAAQ,UAAU,CAAG,EAAO,UAAU,CACtC,EAAQ,WAAW,CAAG,QAAmB,EAAQ,IAE/C,EAAM,KAAK,EACb,GAAQ,SAAS,CAAG,QAAmB,EAAM,KAAK,CAAE,EAAO,EAEzD,EAAM,UAAU,CAAE,CACpB,IAAM,EAAgB,EAAM,UAAU,CAChC,EAAM,mBAAqB,CAAC,EAAc,KAAK,EAAE,OAAO,GACxD,EAAiB,EAAc,IAAI,CAAGE,EACtC,EAAqB,EAAc,QAAQ,CAAGA,CACpD,GAAQ,WAAW,CAAG,CAAC,KAAK,EAAE,AAAS,IAAT,CAAG,CAAC,EAAE,CAAO,CAAC,EAAE,AAAS,IAAT,CAAG,CAAC,EAAE,CAAO,CAAC,EAAE,AAAS,IAAT,CAAG,CAAC,EAAE,CAAO,CAAC,EAAE,EAAc,KAAK,CAAC,CAAC,CAAC,CACpG,EAAQ,UAAU,CAAG,EACrB,EAAQ,aAAa,CAAGJ,KAAK,GAAG,CAAC,EAAc,KAAK,EAAI,EACxD,EAAQ,aAAa,CAAGA,KAAK,GAAG,CAAC,EAAc,KAAK,EAAI,CAC1D,MACE,EAAQ,WAAW,CAAG,QACtB,EAAQ,UAAU,CAAG,EACrB,EAAQ,aAAa,CAAG,EACxB,EAAQ,aAAa,CAAG,CAE5B,CACA,WAAW,CAAO,CAAE,CAAO,CAAE,CAAC,CAAE,CAAC,CAAE,CAAS,CAAE,CAAK,CAAE,CACnD,IAAM,EAAO,EAAQ,IAAI,CACnB,EAAiB,EAAQ,cAAc,CACvC,EAAS,EAAM,OAAO,CACtB,EAAkB,AAAC,IAAQ,OAAS,GAAK,EACzC,EAAK,EAAI,EAAkB,EAC3B,EAAK,EAAI,EAAkB,EAC3B,EAAU,EAAe,OAAO,CAAG,EACnC,EAAa,EAAQ,UAAU,CAAG,CACpC,GAAM,MAAM,EAAI,GAClB,EAAQ,UAAU,CAAC,EAAM,EAAI,EAAK,EAAa,GAE7C,EAAM,KAAK,EACb,EAAQ,QAAQ,CAAC,EAAM,EAAI,EAAK,EAAa,EAEjD,CACA,SAAU,CACR,KAAK,CAAC,UACN,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,IAAK,CAC1C,GAAM,CAAE,kBAAgB,CAAE,SAAO,CAAE,CAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CACnD,0BAAiC,CAAC,GAClC,EAAQ,OAAO,CAAC,GAClB,CACA,IAAI,CAAC,KAAK,CAAG,IACf,CACF,CC7PA,SAAS,EAAoB,CAAK,CAAE,CAAK,CAAE,CAAI,EAC7C,IAAM,EAAa,CACjB,MAAO,EACP,OAAQ,EACR,QAAS,EACT,MAAO,EAAM,QAAQ,CAAG,EAAK,uBAAuB,CACpD,MAAO,CAAC,CACN,MAAO,EACP,cAAe,EAAE,CACjB,WAAY,EACZ,YAAa,EAAE,CACf,MAAO,EAAE,AACX,EAAE,AACJ,CACA,GAAW,OAAO,CAAG,EAAK,cAAc,CACxC,IAAI,EAAc,EAAW,KAAK,CAAC,EAAE,CACjC,EAAe,KACf,EAAY,GACV,EAAc,CAClB,UAAW,GACX,MAAO,EACP,MAAO,EACP,MAAO,EAEP,UAAW,EAAE,CACb,MAAO,EAAE,AACX,EACM,EAAW,AAAC,IAChB,IAAM,EAAQ,EAAY,KAAK,CAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,KAAK,CAAE,IAAK,CAC1C,IAAM,EAAW,EAAK,SAAS,CAAC,EAAE,CAClC,EAAY,KAAK,CAAC,IAAI,CAAC,EAAK,KAAK,CAAC,EAAE,EACpC,EAAY,aAAa,CAAC,IAAI,CAAC,EAAW,EAC5C,CACA,EAAY,KAAK,EAAI,EAAK,KAAK,CAC/B,EAAY,GACZ,EAAY,KAAK,CAAG,EACpB,EAAY,KAAK,CAAG,EACpB,EAAY,KAAK,CAAC,MAAM,CAAG,CAC7B,EACM,EAAW,KACf,IAAI,EAAQ,EAAY,KAAK,CAAC,MAAM,CAAG,EACnC,EAAW,EAAY,KAAK,CAAC,EAAM,CACvC,KAAO,AAAa,MAAb,GACL,EAAY,KAAK,EAAI,EAAK,KAAK,CAAC,EAAS,CAAC,QAAQ,CAClD,EAAW,EAAY,KAAK,CAAC,EAAE,EAAM,AAEvC,GAAW,KAAK,CAAGA,KAAK,GAAG,CAAC,EAAW,KAAK,CAAE,EAAY,KAAK,EAC/D,EAAc,CACZ,MAAO,EACP,cAAe,EAAE,CACjB,MAAO,EAAE,CACT,WAAY,EACZ,YAAa,EAAE,AACjB,EACA,EAAY,GACZ,EAAW,KAAK,CAAC,IAAI,CAAC,GACtB,EAAW,MAAM,EAAI,EAAK,UAAU,AACtC,EACM,EAAQ,EAAK,uBAAuB,CAAG,EAAM,QAAQ,CACrD,EAAwB,EAAM,aAAa,CAAG,EAC9C,EAAwB,EAAM,aAAa,CAAG,EACpD,IAAK,IAAIK,EAAI,EAAGA,EAAI,EAAM,MAAM,CAAG,EAAGA,IAAK,CAEzC,IADI,EACE,EAAQA,IAAM,EAAM,MAAM,AAC5B,CAAC,GACH,GAAO,CAAK,CAACA,EAAE,AAAD,EAEhB,IAAM,EAAW,EAAK,KAAK,CAAC,EAAK,EAAI,EAAK,KAAK,CAAC,IAAI,CAGpD,GADoB,AADJ,SAAS,IAAI,CAAC,IACC,AAAS,OAAT,GAAiB,AAAS,OAAT,GAAiB,EAgB/D,IAd0B,CAAC,GAAa,EAAM,QAAQ,EAAI,EAAY,KAAK,CAAG,EAAY,KAAK,CAAG,EAAwB,EAExH,IAMA,EAAY,KAAK,CAAG,EAAY,KAAK,CACrC,EAAS,GACL,AAAC,GACH,EAAY,aAAa,CAAC,IAAI,CAAC,GAG/B,AAAS,OAAT,GAAiB,AAAS,OAAT,EACf,AAAsB,IAAtB,EAAY,KAAK,EACnB,SAEG,GAAI,CAAC,EAAO,CACjB,IAAM,EAAa,EAAS,QAAQ,CAAI,GAAS,OAAO,CAAC,EAAa,EAAI,GAAK,CAC/E,GAAY,KAAK,EAAI,EACrB,EAAY,UAAU,CAAG,EACzB,EAAY,WAAW,CAAC,IAAI,CAAC,EAAY,aAAa,CAAC,MAAM,EAC7D,EAAY,KAAK,CAAC,IAAI,CAAC,EACzB,MACK,CACL,IAAM,EAAU,EAAS,OAAO,CAAC,EAAa,EAAI,EAC5C,EAAgB,EAAS,QAAQ,CAAG,EAAU,CACpD,GAAY,SAAS,CAAC,EAAY,KAAK,GAAG,CAAG,EAAY,KAAK,CAAG,EACjE,EAAY,KAAK,CAAC,IAAI,CAAC,GACvB,EAAY,KAAK,EAAI,CACvB,CACA,EAAe,CACjB,CASA,OARA,IACI,AAAgB,WAAhB,EAAM,KAAK,CACb,AAQJ,SAAqB,CAAe,EAClC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAgB,KAAK,CAAC,MAAM,CAAE,IAAK,CACrD,IAAM,EAAO,EAAgB,KAAK,CAAC,EAAE,CAC/B,EAAS,EAAgB,KAAK,CAAG,EAAI,EAAK,KAAK,CAAG,EACxD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,aAAa,CAAC,MAAM,CAAE,IAC7C,EAAK,aAAa,CAAC,EAAE,EAAI,CAE7B,CACF,EAhBgB,GACH,AAAgB,UAAhB,EAAM,KAAK,CACpB,AAeJ,SAAoB,CAAe,EACjC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAgB,KAAK,CAAC,MAAM,CAAE,IAAK,CACrD,IAAM,EAAO,EAAgB,KAAK,CAAC,EAAE,CAC/B,EAAS,EAAgB,KAAK,CAAG,EAAK,KAAK,CACjD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,aAAa,CAAC,MAAM,CAAE,IAC7C,EAAK,aAAa,CAAC,EAAE,EAAI,CAE7B,CACF,EAvBe,GACF,AAAgB,YAAhB,EAAM,KAAK,EACpB,AAsBJ,SAAsB,CAAe,EACnC,IAAM,EAAQ,EAAgB,KAAK,CACnC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAgB,KAAK,CAAC,MAAM,CAAE,IAAK,CACrD,IAAM,EAAO,EAAgB,KAAK,CAAC,EAAE,CACjC,EAAO,EACP,EAAa,EAAK,WAAW,CAAC,IAAO,CACrC,EAAS,EACP,EAAc,EAAK,WAAW,CAAC,MAAM,CACrC,EAAgB,AAAC,GAAQ,EAAK,KAAK,AAAD,EAAK,EAE7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,aAAa,CAAC,MAAM,CAAE,IACzC,IAAM,IACR,EAAa,EAAK,WAAW,CAAC,IAAO,CACrC,GAJe,GAMjB,EAAK,aAAa,CAAC,EAAE,EAAI,CAE7B,CACF,EAxCiB,GAER,CACT,CCsBA,IAAM,EAAoB,IAlI1B,MACE,aAAc,CAOZ,IAAI,CAAC,KAAK,CAAG,CAAC,CAAC,IAAK,IAAI,CAAE,CAAC,IAAK,IAAI,CAAE,IAAI,CAO1C,IAAI,CAAC,OAAO,CAAG,CAAC,CAAC,IAAK,IAAI,CAAC,CAK3B,IAAI,CAAC,YAAY,CAAG,CAAC,CAAC,IAAK,IAAI,CAAE,CAAC,IAAK,IAAI,CAAE,CAAC,IAAK,IAAI,CAAE,IAAI,CAM7D,IAAI,CAAC,KAAK,CAAG,CAAC,CAAC,IAAK,IAAI,CAAC,CAEzB,IAAI,CAAC,cAAc,CAAG,CACpB,MAAO,IAAI,CAAC,YAAY,CACxB,WAAY,EACZ,QAAS,EACT,YAAa,EACf,CACF,CAMA,QAAQ,CAAI,CAAE,CAAK,CAAE,CACnB,IAAI,EAAgB,CAAC,EAAE,EAAM,UAAU,CAAC,OAAO,CAAC,CAC5C,EAAe,GAKnB,GAJI,EAAM,KAAK,CAAC,IAAI,GAClB,GAAiB,EAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CACrC,EAAe,IAEb,CAAC,OAAS,CAAC,GAAgB,CAC7B,IAAM,EAAM,IAAI,EAAkB,CAChC,QACA,eACA,aAAc,GACd,GAAG,IAAI,CAAC,cAAc,AACxB,GACA,EAAI,IAAI,CAAC,UAAW,IAAM,UAAY,CAAC,IACvC,OAAS,CACP,EACA,EAEJ,CACA,IAAM,EAAc,OAAS,CAAC,GAE9B,OADA,EAAY,gBAAgB,GAAG,GACxB,CACT,CAMA,UAAU,CAAI,CAAE,CAAK,CAAE,CACrB,IAAM,EAAa,IAAI,CAAC,OAAO,CAAC,EAAM,GACtC,OAAO,EAAoB,EAAK,KAAK,CAAC,IAAK,EAAO,EACpD,CAMA,YAAY,CAAI,CAAE,CAAK,CAAE,CACvB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAM,EAC9B,CAEA,QAAQ,GAAG,CAAI,CAAE,CACf,IAAI,EAAU,CAAI,CAAC,EAAE,AACE,WAAnB,OAAO,IACT,EAAU,CACR,KAAM,EACN,MAAO,CAAI,CAAC,EAAE,CACd,MAAO,CAAI,CAAC,EAAE,EAAE,MAChB,WAAY,CAAI,CAAC,EAAE,EAAE,WACrB,QAAS,CAAI,CAAC,EAAE,EAAE,QAClB,YAAa,CAAI,CAAC,EAAE,EAAE,WACxB,EACA,QAAY,QAAQ,4HAEtB,IAAM,EAAO,GAAS,KACtB,GAAI,CAAC,EACH,MAAM,AAAII,MAAM,oDAGlB,IAAM,EAAY,AADlB,GAAU,CAAE,GAAG,IAAI,CAAC,cAAc,CAAE,GAAG,CAAO,AAAC,GACrB,KAAK,CACzBP,EAAQ,aAAqB,GAAS,CAAG,EAAY,IAAI,GAAS,CAAC,GACnE,EAAeA,AAAqB,OAArBA,EAAM,KAAK,CAAC,IAAI,EAAaA,AAAqB,KAAK,IAA1BA,EAAM,KAAK,CAAC,IAAI,CAC5D,EAAO,IAAI,EAAkB,CACjCA,MAAAA,EACA,eACA,YAAa,EAAQ,WAAW,CAChC,QAAS,EAAQ,OAAO,CACxB,WAAY,EAAQ,UAAU,CAC9B,aAAc,EAChB,GACM,EAAY,EAAkB,EAAQ,KAAK,EAIjD,OAHA,EAAK,gBAAgB,CAAC,EAAU,IAAI,CAAC,KACrC,OAAS,CAAC,CAAC,EAAE,EAAK,OAAO,CAAC,CAAE,GAC5B,EAAK,IAAI,CAAC,UAAW,IAAM,UAAY,CAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GACjD,CACT,CAKA,UAAU,CAAI,CAAE,CACd,IAAM,EAAW,CAAC,EAAE,EAAK,OAAO,CAAC,CAC3B,EAAO,OAAS,CAAC,GACnB,IACF,UAAY,CAAC,GACb,EAAK,OAAO,GAEhB,CACF,CCnIA,OAAM,UAAmB,EACvB,YAAY,CAAO,CAAE,CAAG,CAAE,CACxB,KAAK,GACL,KAAM,CAAE,UAAQ,CAAE,MAAI,CAAE,CAAG,EAC3BT,OAAO,IAAI,CAAC,EAAK,KAAK,EAAE,OAAO,CAAC,AAAC,IAE/B,IAAMM,EAAU,CAAQ,CAAC,AADR,EAAK,KAAK,CAACa,SAAS,EAAK,IAAI,CACZ,EAAE,CAAC,CACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAEb,QAAAA,CAAQ,EAC5B,GACAN,OAAO,IAAI,CAAC,EAAK,KAAK,EAAE,OAAO,CAAC,AAAC,IAC/B,IAAM,EAAW,EAAK,KAAK,CAAC,EAAI,CAC1B,CACJ,MAAO,CAAY,CACnB,OAAQ,CAAa,CACtB,CAAG,CAAQ,CAAC,EAAS,IAAI,CAAC,CACrB,EAAY,IAAI,GAAS,CAC7B,EAAS,CAAC,CAAG,EAAa,CAAC,CAC3B,EAAS,CAAC,CAAG,EAAa,CAAC,CAC3B,EAAS,KAAK,CACd,EAAS,MAAM,EAEX,EAAU,IAAI,GAAO,CAAC,CAC1B,OAAQ,EACR,MAAO,CACT,EACA,KAAI,CAAC,KAAK,CAAC,EAAI,CAAG,CAChB,GAAI,EAAI,WAAW,CAAC,GACpB,QAAS,EAAS,OAAO,CACzB,QAAS,EAAS,OAAO,CACzB,SAAU,EAAS,QAAQ,CAC3B,QAAS,EAAS,OAAO,EAAI,CAAC,EAC9B,SACF,CACF,GACA,IAAI,CAAC,oBAAoB,CAAG,EAAK,QAAQ,CACzC,IAAI,CAAC,uBAAuB,CAAG,EAAK,QAAQ,CAC5C,IAAI,CAAC,WAAW,CAAG,CACjB,OAAQ,EACR,QAAS,EACT,SAAU,EAAK,QAAQ,AACzB,EACA,IAAI,CAAC,cAAc,CAAG,EAAK,cAAc,CACzC,IAAI,CAAC,UAAU,CAAG,EAAK,UAAU,CACjC,IAAI,CAAC,UAAU,CAAG,EAAK,UAAU,CACjC,IAAI,CAAC,aAAa,CAAG,EAAK,aAAa,EAAI,CACzC,KAAM,OACN,MAAO,CACT,EACA,IAAI,CAAC,GAAG,CAAG,CACb,CAEA,SAAU,CACR,KAAK,CAAC,UACN,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,IAAK,CAC1C,GAAM,CAAEM,QAAAA,CAAO,CAAE,CAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CACjCA,EAAQ,OAAO,CAAC,GAClB,CACA,IAAI,CAAC,KAAK,CAAG,IACf,CAiBA,OAAO,QAAQ,CAAO,CAAE,CACtB,EAAkB,OAAO,CAAC,EAC5B,CAKA,OAAO,UAAU,CAAI,CAAE,CACrB,EAAkB,SAAS,CAAC,EAC9B,CACF,CC1FA,IAAM,EAAuB,CAC3B,KAAK,GACI,AAAgB,UAAhB,OAAO,GAAqB,EAAK,UAAU,CAAC,cAErD,MAAM,CAAG,EACP,IAAM,EAAQ,EAAI,KAAK,CAAC,mBAClBK,EAAU,CACd,KAAM,EAAE,CACR,OAAQ,EAAE,CACV,KAAM,EAAE,CACR,KAAM,EAAE,CACR,MAAO,EAAE,CACT,QAAS,EAAE,CACX,SAAU,EAAE,CACZ,cAAe,EAAE,AACnB,EACA,IAAK,IAAM,KAAK,EAAO,CACrB,IAAM,EAAO,CAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CACrC,EAAgB,CAAK,CAAC,EAAE,CAAC,KAAK,CAAC,oCAC/B,EAAW,CAAC,EAClB,IAAK,IAAM,KAAM,EAAe,CAC9B,IAAM,EAAQ,CAAa,CAAC,EAAG,CAAC,KAAK,CAAC,KAChC,EAAM,CAAK,CAAC,EAAE,CACd,EAAW,CAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAO,IACnC,EAAaS,WAAW,GACxB,EAAQC,MAAM,GAAc,EAAW,CAC7C,EAAQ,CAAC,EAAI,CAAG,CAClB,CACAV,CAAO,CAAC,EAAK,CAAC,IAAI,CAAC,EACrB,CACA,IAAM,EAAO,CACX,MAAO,CAAC,EACR,MAAO,EAAE,CACT,WAAY,EACZ,SAAU,EACV,WAAY,GACZ,cAAe,KACf,eAAgB,CAClB,EACM,CAAC,EAAK,CAAGA,EAAQ,IAAI,CACrB,CAAC,EAAO,CAAGA,EAAQ,MAAM,CACzB,CAAC,EAAc,CAAGA,EAAQ,aAAa,EAAI,EAAE,AAC/C,IACF,GAAK,aAAa,CAAG,CACnB,MAAOQ,SAAS,EAAc,aAAa,CAAE,IAC7C,KAAM,EAAc,SAAS,AAC/B,GAEF,EAAK,QAAQ,CAAGA,SAAS,EAAK,IAAI,CAAE,IACpC,EAAK,UAAU,CAAG,EAAK,IAAI,CAC3B,EAAK,UAAU,CAAGA,SAAS,EAAO,UAAU,CAAE,IAC9C,IAAM,EAAOR,EAAQ,IAAI,CACzB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAC/B,EAAK,KAAK,CAAC,IAAI,CAAC,CACd,GAAIQ,SAAS,CAAI,CAAC,EAAE,CAAC,EAAE,CAAE,KAAO,EAChC,KAAM,CAAI,CAAC,EAAE,CAAC,IAAI,AACpB,GAEF,IAAM,EAAM,CAAC,CACb,GAAK,cAAc,CAAG,EAAK,UAAU,CAAGA,SAAS,EAAO,IAAI,CAAE,IAC9D,IAAM,EAAOR,EAAQ,IAAI,CACzB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAAK,CACpC,IAAM,EAAW,CAAI,CAAC,EAAE,CAClB,EAAKQ,SAAS,EAAS,EAAE,CAAE,IAC7B,EAAS,EAAS,MAAM,EAAI,EAAS,IAAI,EAAIF,OAAO,YAAY,CAAC,EACjE,AAAW,WAAX,GACF,GAAS,GAAE,EACb,CAAG,CAAC,EAAG,CAAG,EACV,EAAK,KAAK,CAAC,EAAO,CAAG,CACnB,KAEA,KAAME,SAAS,EAAS,IAAI,CAAE,KAAO,EACrC,EAAGA,SAAS,EAAS,CAAC,CAAE,IACxB,EAAGA,SAAS,EAAS,CAAC,CAAE,IACxB,MAAOA,SAAS,EAAS,KAAK,CAAE,IAChC,OAAQA,SAAS,EAAS,MAAM,CAAE,IAClC,QAASA,SAAS,EAAS,OAAO,CAAE,IACpC,QAASA,SAAS,EAAS,OAAO,CAAE,IACpC,SAAUA,SAAS,EAAS,QAAQ,CAAE,IACtC,QAAS,CAAC,CACZ,CACF,CACA,IAAM,EAAUR,EAAQ,OAAO,EAAI,EAAE,CACrC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACvC,IAAM,EAAQQ,SAAS,CAAO,CAAC,EAAE,CAAC,KAAK,CAAE,IACnC,EAASA,SAAS,CAAO,CAAC,EAAE,CAAC,MAAM,CAAE,IACrC,EAASA,SAAS,CAAO,CAAC,EAAE,CAAC,MAAM,CAAE,GAC3C,GAAK,KAAK,CAAC,CAAG,CAAC,EAAO,CAAC,CAAC,OAAO,CAAC,CAAG,CAAC,EAAM,CAAC,CAAG,CAChD,CACA,OAAO,CACT,CACF,EC3FM,EAAsB,CAC1B,KAAK,GAEI,AAAe,UAAf,OADK,GACsB,yBADtB,GACuD,AADvD,EAC2D,oBAAoB,CAAC,QAAQ,MAAM,EAAI,AAA6D,OAA7D,AADlG,EACsG,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,QAEjK,MAAM,CAAG,EACP,IAAM,EAAO,CACX,MAAO,CAAC,EACR,MAAO,EAAE,CACT,WAAY,EACZ,SAAU,EACV,WAAY,GACZ,cAAe,KACf,eAAgB,CAClB,EACM,EAAO,EAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAC1C,EAAS,EAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAC9C,EAAgB,EAAI,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,AAC9D,IACF,GAAK,aAAa,CAAG,CACnB,KAAM,EAAc,YAAY,CAAC,aACjC,MAAOA,SAAS,EAAc,YAAY,CAAC,iBAAkB,GAC/D,GAEF,IAAM,EAAO,EAAI,oBAAoB,CAAC,QAChC,EAAO,EAAI,oBAAoB,CAAC,QAChC,EAAU,EAAI,oBAAoB,CAAC,UACzC,GAAK,QAAQ,CAAGA,SAAS,EAAK,YAAY,CAAC,QAAS,IACpD,EAAK,UAAU,CAAG,EAAK,YAAY,CAAC,QACpC,EAAK,UAAU,CAAGA,SAAS,EAAO,YAAY,CAAC,cAAe,IAC9D,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAC/B,EAAK,KAAK,CAAC,IAAI,CAAC,CACd,GAAIA,SAAS,CAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAO,KAAO,EAChD,KAAM,CAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAC7B,GAEF,IAAM,EAAM,CAAC,CACb,GAAK,cAAc,CAAG,EAAK,UAAU,CAAGA,SAAS,EAAO,YAAY,CAAC,QAAS,IAC9E,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,MAAM,CAAE,IAAK,CACpC,IAAM,EAAW,CAAI,CAAC,EAAE,CAClBP,EAAKO,SAAS,EAAS,YAAY,CAAC,MAAO,IAC7C,EAAS,EAAS,YAAY,CAAC,WAAa,EAAS,YAAY,CAAC,SAAWF,OAAO,YAAY,CAACL,EACjG,AAAW,WAAX,GACF,GAAS,GAAE,EACb,CAAG,CAACA,EAAG,CAAG,EACV,EAAK,KAAK,CAAC,EAAO,CAAG,CACnBA,GAAAA,EAEA,KAAMO,SAAS,EAAS,YAAY,CAAC,QAAS,KAAO,EACrD,EAAGA,SAAS,EAAS,YAAY,CAAC,KAAM,IACxC,EAAGA,SAAS,EAAS,YAAY,CAAC,KAAM,IACxC,MAAOA,SAAS,EAAS,YAAY,CAAC,SAAU,IAChD,OAAQA,SAAS,EAAS,YAAY,CAAC,UAAW,IAElD,QAASA,SAAS,EAAS,YAAY,CAAC,WAAY,IACpD,QAASA,SAAS,EAAS,YAAY,CAAC,WAAY,IAEpD,SAAUA,SAAS,EAAS,YAAY,CAAC,YAAa,IACtD,QAAS,CAAC,CACZ,CACF,CACA,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,MAAM,CAAE,IAAK,CACvC,IAAM,EAAQA,SAAS,CAAO,CAAC,EAAE,CAAC,YAAY,CAAC,SAAU,IACnD,EAASA,SAAS,CAAO,CAAC,EAAE,CAAC,YAAY,CAAC,UAAW,IACrD,EAASA,SAAS,CAAO,CAAC,EAAE,CAAC,YAAY,CAAC,UAAW,GAC3D,GAAK,KAAK,CAAC,CAAG,CAAC,EAAO,CAAC,CAAC,OAAO,CAAC,CAAG,CAAC,EAAM,CAAC,CAAG,CAChD,CACA,OAAO,CACT,CACF,ICjEE,AAAK,GACH,EAAI,CAAgB,UAAhB,OAAO,GAAqB,EAAK,QAAQ,CAAC,SAAQ,GAC7C,EAAoB,IAAI,CAAC,OAAc,GAAG,QAAQ,CAAC,MAI9D,AAAM,GACG,EAAoB,KAAK,CAAC,OAAc,GAAG,QAAQ,CAAC,ICFzD,EAAkB,CAAC,OAAQ,OAAO,CAClC,EAAwB,CAC5B,UAAW,gBAAyB,CACpC,KAAM,AAAC,GAAU,aAAiB,EAClC,mBAAmB,CAAI,CAAE,CAAK,EAC5B,IAAM,EAAM,CAAC,EAKb,OAJA,EAAK,OAAO,CAAC,AAAC,IACZ,CAAG,CAAC,EAAI,CAAG,CACb,GACA,CAAG,CAAC,CAAC,EAAE,EAAM,UAAU,CAAC,OAAO,CAAC,CAAC,CAAG,EAC7B,CACT,CACF,EACM,EAAiB,CACrB,UAAW,CACT,KAAM,eAAwB,CAC9B,SAAU,UAA2B,AACvC,EACA,KAAK,GACI,EAAgB,QAAQ,CAAC,WAAY,CAAC,GAAK,WAAW,IAEzD,UAAN,MAAgB,GACP,EAAqB,IAAI,CAAC,IAAS,EAA+B,GAE3E,MAAM,MAAM,CAAK,CAAE,CAAI,CAAE,CAAM,EAC7B,IAAM,EAAiB,EAAqB,IAAI,CAAC,GAAS,EAAqB,KAAK,CAAC,GAAS,EAAgC,GACxH,CAAEV,IAAAA,CAAG,CAAE,CAAG,EACV,CAAE,OAAK,CAAE,CAAG,EACZ,EAAc,EAAE,CACtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,CAAE,EAAE,EAAG,CACrC,IAAM,EAAW,CAAK,CAAC,EAAE,CAAC,IAAI,CAC1B,EAAY,QAAS,CAAC,WAAY,CAACA,GAAM,GAC7C,EAAY,QAAiB,EAAWA,GACxC,EAAY,IAAI,CAAC,EACnB,CACA,IAAM,EAAiB,MAAM,EAAO,IAAI,CAAC,GAMzC,OAJmB,IAAI,EAAW,CAChC,KAAM,EACN,SAHe,EAAY,GAAG,CAAC,AAAC,GAAQ,CAAc,CAAC,EAAI,CAI7D,EAAGA,EAEL,EACA,MAAM,KAAK,CAAG,CAAE,CAAQ,EACtB,IAAME,EAAW,MAAM,OAAc,GAAG,KAAK,CAAC,GAC9C,OAAO,MAAMA,EAAS,IAAI,EAC5B,EACA,MAAM,OAAO,CAAU,CAAE,CAAc,CAAE,CAAM,EAC7C,MAAMW,QAAQ,GAAG,CAAC,EAAW,KAAK,CAAC,GAAG,CAAC,AAAC,GAAS,EAAO,MAAM,CAAC,EAAK,OAAO,CAAC,MAAM,CAAC,aAAa,IAChG,EAAW,OAAO,EACpB,CACF,E,kHC5DA,IAAM,EAAsB,CAC1B,KAAM,yBACN,OAAQ,CACN,OAEE;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,CAAC,CAEL,KAEE;AACN;AACA;AACA,QAAQ,CAAC,CAEL,IAEE;AACN;AACA;AACA;AACA;AACA,QAAQ,CAAC,AAEP,EACA,SAAU,CACR,OAEE;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,CAAC,CAEN,KAEE,CAAC;AACP;AACA,QAAQ,CAAC,AAEP,CACF,EACM,EAAwB,CAC5B,KAAM,yBACN,OAAQ,CACN,OAEE;AACN;AACA;AACA;AACA,QAAQ,CAAC,CAEL,KAEE;AACN;AACA;AACA,QAAQ,CAAC,CAEL,IAEE;AACN;AACA;AACA;AACA;AACA,QAAQ,CAAC,AAEP,EACA,SAAU,CACR,OAEE;AACN;AACA,SAAS,CAAC,CAEN,KAEE,CAAC;AACP;AACA,QAAQ,CAAC,AAEP,CACF,EChGM,EAAU,CACd,KAAM,WACN,SAAU,CACR,OAEE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,CAAC,AAEP,CACF,EACM,EAAY,CAChB,KAAM,WACN,SAAU,CACR,OAEE;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,CAAC,AAEP,CACF,CChDA,OAAM,UAAkB,GAAM,CAC5B,aAAc,CACZ,MAAM,EAAW,IAAI,GAAY,CAAC,CAChC,OAAQ,CAAE,MAAO,IAAIlB,aAAa,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,KAAM,WAAY,EACnE,iBAAkB,CAAE,MAAO,IAAI,GAAM,CAAI,KAAM,aAAc,EAC7D,UAAW,CAAE,MAAO,EAAG,KAAM,KAAM,EACnC,OAAQ,CAAE,MAAO,EAAG,KAAM,KAAM,CAClC,GAqBA,KAAK,CAAC,CACJ,UAXgB,QAA2B,CAC3C,KAAM,aACN,KAAM,CACJ,GAAU,CACV,QAA0B,IAC1B,EACA,EACA,GAAgB,CACjB,AACH,GAGE,WAtBiB,QAA4B,CAC7C,KAAM,aACN,KAAM,CACJ,GAAQ,CACR,QAAwB,IACxB,EACA,EACA,GAAc,CACf,AACH,GAcE,UAAW,CACT,cAAe,EACf,cAAe,GAAyB,AAC1C,CACF,EACF,CACF,CCzCA,MAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,cAAc,CAAG,CAAC,EACvB,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,mBAAmB,CAAU,CAAE,CAC7B,IAAM,EAAqB,IAAI,CAAC,iBAAiB,CAAC,GAKlD,OAJI,EAAW,cAAc,GAC3B,EAAW,cAAc,CAAG,GAC5B,IAAI,CAAC,cAAc,CAAC,EAAY,IAE3B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAChE,CACA,cAAc,CAAU,CAAE,CAAc,CAAE,CACxC,IAAM,EAAqB,IAAI,CAAC,iBAAiB,CAAC,GAClD,EAAc,EAAY,GACtB,EAAW,cAAc,GAC3B,EAAW,cAAc,CAAG,GAC5B,IAAI,CAAC,cAAc,CAAC,EAAY,IAElC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAoB,GAClE,EAAmB,OAAO,CAAC,YAAY,EACzC,IAAI,CAAC,oBAAoB,CAAC,EAE9B,CACA,kBAAkB,CAAU,CAAE,CAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAW,GAAG,CAC7C,CACA,wBAAwB,CAAa,CAAE,CACrC,UAAc,CAAC,IAAI,CAAC,cAAc,CAAC,EAAc,EACjD,IAAI,CAAC,cAAc,CAAC,EAAc,CAAG,IACvC,CACA,iBAAiB,CAAU,CAAE,CAC3B,IAAM,EAAqB,IAAI,CAAC,iBAAiB,CAAC,GAClD,EAAc,EAAY,GAC1B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GACjD,EAAmB,OAAO,CAAC,YAAY,EACzC,IAAI,CAAC,oBAAoB,CAAC,EAE9B,CACA,eAAe,CAAU,CAAE,CAAa,CAAE,CACxC,GAAM,CAAE,SAAO,CAAE,CAAG,EACd,EAAa,EAAkB,OAAO,CAAC,EAAW,IAAI,CAAE,EAAW,MAAM,EAC/E,EAAQ,KAAK,GACyB,SAAlC,EAAW,aAAa,CAAC,IAAI,EAC1B,EAAQ,YAAY,GACnB,AAAC,IAAI,CAAC,UAAU,EAClB,KAAI,CAAC,UAAU,CAAG,IAAI,CAAU,EAElC,EAAQ,YAAY,CAAG,IAAI,CAAC,UAAU,EAG1C,IAAM,EAAQW,MAAM,IAAI,CAAC,EAAW,IAAI,EAClC,EAAQ,EAAW,MAAM,CAC3B,EAAW,AAAC,GAAM,OAAO,EAAE,OAAS,GAAK,EAC7C,GAAY,EAAW,cAAc,CACrC,IAAM,EAAmB,EAAoB,EAAO,EAAO,GACvD,EAAQ,EACN,EAAU,EAAM,OAAO,CACvB,EAAQ,EAAiB,KAAK,CACpC,EAAQ,SAAS,CACf,CAAC,EAAW,OAAO,CAAC,EAAE,CAAG,EAAiB,KAAK,CAAG,EAClD,CAAC,EAAW,OAAO,CAAC,EAAE,CAAI,GAAiB,MAAM,CAAG,EAAiB,OAAO,AAAD,EAAK,GAChF,KAAK,CAAC,EAAO,GACf,IAAM,EAAO,EAAM,KAAK,CAAC,KAAK,CAC9B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAiB,KAAK,CAAC,MAAM,CAAE,IAAK,CACtD,IAAM,EAAO,EAAiB,KAAK,CAAC,EAAE,CACtC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,aAAa,CAAC,MAAM,CAAE,IAAK,CAClD,IAAM,EAAO,CAAK,CAAC,IAAQ,CACrB,EAAW,EAAW,KAAK,CAAC,EAAK,AACnC,IAAU,SACZ,EAAQ,OAAO,CACb,EAAS,OAAO,CAChB,GAAc,QACdR,KAAK,KAAK,CAAC,EAAK,aAAa,CAAC,EAAE,CAAG,EAAS,OAAO,EACnDA,KAAK,KAAK,CAAC,EAAW,EAAS,OAAO,EAG5C,CACA,GAAY,EAAW,UAAU,AACnC,CACF,CACA,kBAAkB,CAAU,CAAE,CAC5B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAW,GAAG,CAAC,EAAI,IAAI,CAAC,WAAW,CAAC,EACjE,CACA,YAAY,CAAU,CAAE,CACtB,IAAM,EAAkB,OAAW,CAAC,GAAQ,EAM5C,OALA,IAAI,CAAC,cAAc,CAAC,EAAW,GAAG,CAAC,CAAG,EACtC,IAAI,CAAC,cAAc,CAAC,EAAY,GAChC,EAAW,EAAE,CAAC,YAAa,KACzB,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,IAAI,CAAC,cAAc,CAAC,EAAW,GAAG,CAAC,AAC5C,CACA,qBAAqB,CAAU,CAAE,CAC/B,IAAM,EAAU,IAAI,CAAC,iBAAiB,CAAC,GAAY,OAAO,CACpD,EAAa,EAAW,MAAM,CAAC,UAAU,CACzC,EAAc,OAAS,CAAC,CAAC,EAAE,EAAW,OAAO,CAAC,EAC9C,CAAE,GAAC,CAAE,GAAC,CAAE,GAAC,CAAE,GAAC,CAAE,CAAG,EAAW,cAAc,CAG1C,EAAa,AAACA,CAAAA,KAAK,GAAG,CAFjBA,KAAK,IAAI,CAAC,EAAI,EAAI,EAAI,IAEEA,KAAK,GAAG,CADhCA,KAAK,IAAI,CAAC,EAAI,EAAI,EAAI,GACa,EAAK,EAC7C,EAAY,EAAY,oBAAoB,CAAG,EAAW,MAAM,CAAC,QAAQ,CACzE,EAAa,EAAW,UAAU,EAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAC/D,EAAW,EAAa,EAAY,aAAa,CAAC,KAAK,CAAI,GAAI,CAAQ,EAAK,CAClF,GAAQ,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAG,CACpE,CACA,SAAU,CACR,IAAK,IAAM,KAAO,IAAI,CAAC,cAAc,CACnC,IAAI,CAAC,uBAAuB,CAAC,EAE/B,KAAI,CAAC,cAAc,CAAG,KACtB,IAAI,CAAC,UAAU,EAAE,QAAQ,IACzB,IAAI,CAAC,UAAU,CAAG,KAClB,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAUA,SAAS,EAAc,CAAS,CAAE,CAAK,EACrC,EAAM,cAAc,CAAG,EAAU,cAAc,CAC/C,EAAM,eAAe,CAAG,EAAU,eAAe,CACjD,EAAM,UAAU,CAAG,EAAU,UAAU,CACvC,EAAM,cAAc,CAAG,EAAU,cAAc,CAC/C,EAAM,mBAAmB,CAAG,EAAU,mBAAmB,CACzD,EAAM,cAAc,CAAG,EAAU,cAAc,CAC/C,EAAM,kBAAkB,CAAG,EAAU,kBAAkB,CACvD,EAAM,UAAU,CAAG,EAAU,UAAU,CACvC,EAAM,YAAY,CAAG,EAAU,YAAY,AAC7C,CAlBA,EAAe,SAAS,CAAG,CACzB,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,YACR,ECjIA,QAAc,CAAC,EAAgB,EAAgB,E,kBCD3C,E,0DCGJ,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,QAAQ,CAAmBP,OAAO,MAAM,CAAC,MAC9C,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,mBAAmB,CAAQ,CAAE,CAC3B,IAAM,EAAU,IAAI,CAAC,WAAW,CAAC,GAC3B,EAAS,EAAS,OAAO,UAC/B,AAAI,EAAQ,qBAAqB,EAC/B,EAAQ,qBAAqB,CAAG,GACzB,IAEL,EAAQ,UAAU,GAAK,CAI7B,CACA,cAAc,CAAQ,CAAE,CAEtB,IAAM,EAAkB,AADR,IAAI,CAAC,WAAW,CAAC,GACD,eAAe,AAC3C,GAAS,cAAc,EACzB,IAAI,CAAC,WAAW,CAAC,GAEnB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAC9C,CACA,iBAAiB,CAAQ,CAAE,CAEzB,IAAM,EAAkB,AADR,IAAI,CAAC,WAAW,CAAC,GACD,eAAe,AAC3C,GAAS,cAAc,EACzB,IAAI,CAAC,WAAW,CAAC,GAEnB,EAAgB,OAAO,CAAC,aAAa,CAAC,EACxC,CACA,kBAAkB,CAAQ,CAAE,CAC1B,IAAI,CAAC,sBAAsB,CAAC,EAAS,GAAG,CAC1C,CACA,uBAAuB,CAAW,CAAE,CAClC,IAAM,EAAU,IAAI,CAAC,QAAQ,CAAC,EAAY,CAC1C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAQ,UAAU,EACjE,UAAc,CAAC,EAAQ,eAAe,EACtC,IAAI,CAAC,QAAQ,CAAC,EAAY,CAAG,IAC/B,CACA,YAAY,CAAQ,CAAE,CACpB,IAAM,EAAS,EAAS,OAAO,GACzB,EAAU,IAAI,CAAC,WAAW,CAAC,GAC3B,EAAkB,EAAQ,eAAe,AAC3C,GAAQ,UAAU,GAAK,GACzB,IAAI,CAAC,cAAc,CAAC,GAAU,KAAK,CAAC,AAACuB,IACnCC,QAAQ,KAAK,CAACD,EAChB,GAEF,EAAS,cAAc,CAAG,GAC1B,IAAM,EAAU,EAAS,MAAM,CAAC,OAAO,CACvC,QAAiB,EAAgB,MAAM,CAAE,EAAS,OAAO,CAAE,EAAgB,OAAO,CAAE,EACtF,CACA,MAAM,eAAe,CAAQ,CAAE,CAC7B,EAAS,cAAc,CAAG,GAC1B,IAAM,EAAU,IAAI,CAAC,WAAW,CAAC,GACjC,GAAI,EAAQ,iBAAiB,CAC3B,OACF,IAAM,EAAS,EAAS,OAAO,GAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAQ,UAAU,EACjE,EAAQ,iBAAiB,CAAG,GAC5B,EAAQ,UAAU,CAAG,EACrB,IAAM,EAAa,EAAS,UAAU,EAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAC7D,EAAU,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAC7D,EAAS,IAAI,CACb,EACA,EAAS,MAAM,CACf,EAAS,OAAO,IAEZ,EAAkB,EAAQ,eAAe,AAC/C,GAAgB,OAAO,CAAG,EAAQ,OAAO,CAAG,EAC5C,EAAQ,iBAAiB,CAAG,GAC5B,EAAQ,qBAAqB,CAAG,GAChC,EAAS,YAAY,GACrB,IAAM,EAAU,EAAS,MAAM,CAAC,OAAO,CACvC,QAAiB,EAAgB,MAAM,CAAE,EAAS,OAAO,CAAE,EAAgB,OAAO,CAAE,EACtF,CACA,YAAY,CAAQ,CAAE,CACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAS,GAAG,CAAC,EAAI,IAAI,CAAC,WAAW,CAAC,EACzD,CACA,YAAY,CAAQ,CAAE,CACpB,IAAM,EAAc,CAClB,QAAS,SAAa,CACtB,WAAY,KACZ,gBAAiB,OAAW,CAAC,GAAe,EAC5C,sBAAuB,GACvB,kBAAmB,EACrB,EACM,EAAkB,EAAY,eAAe,CASnD,OARA,EAAgB,UAAU,CAAG,EAC7B,EAAgB,OAAO,CAAG,SAAa,CACvC,EAAgB,MAAM,CAAG,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,CAAE,EAC9D,EAAgB,WAAW,CAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAG,EAAS,YAAY,CACjF,IAAI,CAAC,QAAQ,CAAC,EAAS,GAAG,CAAC,CAAG,EAC9B,EAAS,EAAE,CAAC,YAAa,KACvB,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,CACT,CACA,SAAU,CACR,IAAK,IAAM,KAAK,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,sBAAsB,CAAC,EAE9B,KAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAEA,EAAa,SAAS,CAAG,CACvB,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,UACR,E,2DC3HA,IAAM,EAAQ,6BACR,EAAU,8BAChB,OAAM,EACJ,aAAc,CACZ,IAAI,CAAC,OAAO,CAAGE,SAAS,eAAe,CAAC,EAAO,OAC/C,IAAI,CAAC,aAAa,CAAGA,SAAS,eAAe,CAAC,EAAO,iBACrD,IAAI,CAAC,UAAU,CAAGA,SAAS,eAAe,CAAC,EAAS,OACpD,IAAI,CAAC,YAAY,CAAGA,SAAS,eAAe,CAAC,EAAS,SACtD,IAAI,CAAC,KAAK,CAAG,IAAIC,MACjB,KAAM,CAAE,eAAa,CAAE,SAAO,CAAE,cAAY,CAAE,YAAU,CAAE,CAAG,IAAI,CACjE,EAAc,YAAY,CAAC,QAAS,SACpC,EAAc,YAAY,CAAC,SAAU,SACrC,EAAc,KAAK,CAAC,QAAQ,CAAG,SAC/B,EAAQ,WAAW,CAAC,GACpB,EAAc,WAAW,CAAC,GAC1B,EAAc,WAAW,CAAC,EAC5B,CACF,C,qCCYA,SAAS,EAAgB,CAAe,EACtC,IAAM,EAAQ,mBAAqB,CAAC,EAAgB,KAAK,EAAE,QAAQ,CAAC,EAAgB,KAAK,EAAE,MAAM,GAC3F,EAAInB,KAAK,KAAK,CAACA,KAAK,GAAG,CAAC,EAAgB,KAAK,EAAI,EAAgB,QAAQ,EACzE,EAAIA,KAAK,KAAK,CAACA,KAAK,GAAG,CAAC,EAAgB,KAAK,EAAI,EAAgB,QAAQ,EACzE,EAAW,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,QAChC,AAAI,EAAgB,IAAI,CAAG,EAClB,CAAC,aAAa,EAAE,EAAS,CAAC,EAAE,EAAgB,IAAI,CAAC,GAAG,EAAE,EAAM,CAAC,CAE/D,CAAC,aAAa,EAAE,EAAS,CAAC,EAAE,EAAM,CAAC,AAC5C,CACA,SAAS,EAAY,CAAM,EACzB,MAAO,8BACyB,EAAO,KAAK,iCACZ,mBAAqB,CAAC,EAAO,KAAK,EAAE,KAAK,yBACjD,EAAO,KAAK,yBACZ,mBAAqB,CAAC,EAAO,KAAK,EAAE,KAAK,wBAEhE,AACH,CACA,IAAM,EAAY,CAChB,SAAU,yBACV,WAAY,yBACZ,WAAY,yBACZ,UAAW,wBACX,YAAa,0BACb,cAAe,8BACf,MAAO,wBACP,QAAS,uBACT,WAAY,yBACZ,WAAY,2BACZ,cAAe,wBACjB,EACM,EAAY,CAChB,KAAM,AAAC,GAAU,CAAC,OAAO,EAAE,mBAAqB,CAAC,GAAO,KAAK,GAAG,CAAC,CACjE,WAAY,AAAC,GAAU,CAAC,WAAW,EAAE,EAAQ,YAAc,aAAa,CAAC,CACzE,OAAQ,EACR,WAAY,CACd,CC7DA,OAAM,UAAsB,GAAS,CACnC,YAAY,EAAU,CAAC,CAAC,CAAE,CACxB,KAAK,CAAC,GACN,IAAI,CAAC,aAAa,CAAG,EAAE,CACvB,IAAI,CAAC,YAAY,EAAK,KAAI,CAAC,YAAY,CAAG,EAAQ,YAAY,AAAD,EAC7D,IAAI,CAAC,SAAS,CAAG,EAAQ,SAAS,EAAI,CAAC,CACzC,CAEA,IAAI,aAAa,CAAK,CAAE,CACtB,IAAI,CAAC,aAAa,CAAG,aAAiBQ,MAAQ,EAAQ,CAAC,EAAM,CAC7D,IAAI,CAAC,MAAM,EACb,CACA,IAAI,cAAe,CACjB,OAAO,IAAI,CAAC,aAAa,AAC3B,CACA,cAAe,CAEb,OADA,IAAI,CAAC,SAAS,CAAG,QAAqB,IAAI,EAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAC/D,IAAI,CAAC,SAAS,AACvB,CACA,QAAS,CACP,IAAI,CAAC,SAAS,CAAG,KACjB,KAAK,CAAC,QACR,CAKA,OAAQ,CACN,OAAO,IAAI,EAAc,CACvB,MAAO,IAAI,CAAC,KAAK,CACjB,WAAY,IAAI,CAAC,UAAU,CAC3B,WAAY,IAAI,CAAC,UAAU,CAC3B,KAAM,IAAI,CAAC,KAAK,CAChB,WAAY,IAAI,CAAC,UAAU,CAC3B,SAAU,IAAI,CAAC,QAAQ,CACvB,UAAW,IAAI,CAAC,SAAS,CACzB,YAAa,IAAI,CAAC,WAAW,CAC7B,WAAY,IAAI,CAAC,UAAU,CAC3B,cAAe,IAAI,CAAC,aAAa,CACjC,WAAY,IAAI,CAAC,UAAU,CAC3B,QAAS,IAAI,CAAC,OAAO,CACrB,OAAQ,IAAI,CAAC,OAAO,CACpB,WAAY,IAAI,CAAC,UAAU,CAC3B,SAAU,IAAI,CAAC,QAAQ,CACvB,cAAe,IAAI,CAAC,aAAa,CACjC,aAAc,IAAI,CAAC,YAAY,AACjC,EACF,CACA,IAAI,UAAW,KDlDT,EACA,EACA,EAoBA,ECgCJ,OAHI,AAAC,IAAI,CAAC,SAAS,EACjB,KAAI,CAAC,SAAS,EDpDZ,EAAS,ACoDqB,IAAI,CDpDnB,OAAO,CACtB,EAAO,ACmDuB,IAAI,CDnDrB,KAAK,CAClB,EAAiB,CACrB,CAAC,OAAO,EAAE,mBAAqB,CAAC,EAAK,KAAK,EAAE,KAAK,GAAG,CAAC,CACrD,CAAC,WAAW,EAAE,ACgDoB,IAAI,CDhDlB,QAAQ,CAAC,EAAE,CAAC,CAChC,CAAC,aAAa,EAAE,AC+CkB,IAAI,CD/ChB,UAAU,CAAC,CAAC,CAClC,CAAC,aAAa,EAAE,AC8CkB,IAAI,CD9ChB,UAAU,CAAC,CAAC,CAClC,CAAC,YAAY,EAAE,AC6CmB,IAAI,CD7CjB,SAAS,CAAC,CAAC,CAChC,CAAC,cAAc,EAAE,AC4CiB,IAAI,CD5Cf,WAAW,CAAC,CAAC,CACpC,CAAC,gBAAgB,EAAE,AC2Ce,IAAI,CD3Cb,aAAa,CAAC,EAAE,CAAC,CAC1C,CAAC,YAAY,EAAE,AC0CmB,IAAI,CD1CjB,KAAK,CAAC,CAAC,CAC5B,CAAC,SAAS,EAAE,ACyCsB,IAAI,CDzCpB,OAAO,CAAC,EAAE,CAAC,CAC7B,CAAC,aAAa,EAAE,AAAqB,QAArB,ACwCkB,IAAI,CDxChB,UAAU,EAAc,ACwCZ,IAAI,CDxCc,QAAQ,CAAG,WAAa,ACwC1C,IAAI,CDxC4C,UAAU,CAAC,CAAC,IAC3F,ACuC+B,IAAI,CDvC7B,UAAU,CAAG,CAAC,CAAC,aAAa,EAAE,ACuCL,IAAI,CDvCO,UAAU,CAAC,EAAE,CAAC,CAAC,CAAG,EAAE,IAC9D,ACsC+B,IAAI,CDtC7B,QAAQ,CAAG,CAClB,CAAC,WAAW,EAAE,ACqCkB,IAAI,CDrChB,UAAU,CAAG,YAAc,aAAa,CAAC,CAC7D,CAAC,WAAW,EAAE,ACoCkB,IAAI,CDpChB,aAAa,CAAC,EAAE,CAAC,CACtC,CAAG,EAAE,IACH,EAAS,CAAC,EAAY,GAAQ,CAAG,EAAE,IACnC,ACiC+B,IAAI,CDjC7B,UAAU,CAAG,CAAC,EAAgB,ACiCL,IAAI,CDjCO,UAAU,EAAE,CAAG,EAAE,IAC3D,ACgC+B,IAAI,CDhC7B,YAAY,CACtB,CAAC,IAAI,CAAC,KACD,EAAY,CAAC,CAAC,MAAM,EAAE,EAAe,EAAE,CAAC,CAAC,CAC/C,AAyCF,SAAuB,CAAS,CAAE,CAAG,EACnC,IAAK,IAAM,KAAK,EAAW,CACzB,IAAM,EAAW,CAAS,CAAC,EAAE,CACvB,EAAc,EAAE,CACtB,IAAK,IAAM,KAAK,EACV,CAAS,CAAC,EAAE,CACd,EAAY,IAAI,CAAC,CAAS,CAAC,EAAE,CAAC,CAAQ,CAAC,EAAE,GAChC,CAAS,CAAC,EAAE,EACrB,EAAY,IAAI,CAAC,CAAS,CAAC,EAAE,CAAC,OAAO,CAAC,YAAa,CAAQ,CAAC,EAAE,GAGlE,EAAI,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAC9C,CACF,EAtDgB,AC6BsB,IAAI,CD7BpB,SAAS,CAAE,GACxB,EAAU,IAAI,CAAC,KC4BkB,EAE/B,IAAI,CAAC,SAAS,AACvB,CAUA,YAAY,GAAG,CAAK,CAAE,CACpB,IAAMT,EAAQ,EAAM,MAAM,CAAC,AAAC,GAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAC1DA,CAAAA,EAAM,MAAM,CAAG,IACjB,IAAI,CAAC,YAAY,CAAC,IAAI,IAAIA,GAC1B,IAAI,CAAC,MAAM,GAEf,CAOA,eAAe,GAAG,CAAK,CAAE,CACvB,IAAMA,EAAW,EAAM,MAAM,CAAC,AAAC,GAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAC5DA,CAAAA,EAAS,MAAM,CAAG,IACpB,IAAI,CAAC,YAAY,CAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,AAAC,GAAM,CAACA,EAAS,QAAQ,CAAC,IACvE,IAAI,CAAC,MAAM,GAEf,CACA,IAAI,KAAK,CAAK,CAAE,CACV,AAAiB,UAAjB,OAAO,GAAsB,AAAiB,UAAjB,OAAO,GACtC,QAAK,gEAEP,KAAK,CAAC,KAAO,CACf,CACA,IAAI,OAAO,CAAK,CAAE,CACZ,GAAS,AAAiB,UAAjB,OAAO,GAAsB,AAAiB,UAAjB,OAAO,GAC/C,QAAK,kEAEP,KAAK,CAAC,OAAS,CACjB,CACF,C,cClGA,eAAe,EAAiB,CAAG,EACjC,IAAM,EAAW,MAAM,OAAc,GAAG,KAAK,CAAC,GACxC,EAAO,MAAM,EAAS,IAAI,GAC1B,EAAS,IAAIqB,WAMnB,OALgB,MAAM,IAAIL,QAAQ,CAAC,EAAS,KAC1C,EAAO,SAAS,CAAG,IAAM,EAAQ,EAAO,MAAM,EAC9C,EAAO,OAAO,CAAG,EACjB,EAAO,aAAa,CAAC,EACvB,EAEF,CCVA,eAAe,EAAY,CAAK,CAAE,CAAG,EACnC,IAAM,EAAU,MAAM,EAAiB,GACvC,MAAO,CAAC;AACV,sBAAsB,EAAE,EAAM,UAAU,CAAC;AACzC,kBAAkB,EAAE,EAAQ;AAC5B,qBAAqB,EAAE,EAAM,UAAU,CAAC;AACxC,oBAAoB,EAAE,EAAM,SAAS,CAAC;AACtC,KAAK,CAAC,AACN,CCPA,IAAMM,EAAwC,IAAIC,IAClD,eAAe,EAAW,CAAY,CAAE,CAAK,CAAE,CAAc,EAC3D,IAAM,EAAe,EAAa,MAAM,CAAC,AAAC,GAAe,OAAS,CAAC,CAAC,EAAE,EAAW,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,EAAYjB,KAC5G,GAAI,CAACgB,EAAsB,GAAG,CAAC,GAAa,CAC1C,GAAM,CAAE,KAAG,CAAE,CAAG,OAAS,CAAC,CAAC,EAAE,EAAW,QAAQ,CAAC,CAC7ChB,AAAM,KAANA,EACFgB,EAAsB,GAAG,CAAC,EAAY,EAAY,EAAO,IAEzDA,EAAsB,GAAG,CAAC,EAAY,EAAY,CAChD,WAAY,EAAe,UAAU,CACrC,UAAW,EAAe,SAAS,CACnC,YACF,EAAG,GAEP,CACA,OAAOA,EAAsB,GAAG,CAAC,EACnC,GACA,MAAO,AAAC,OAAMN,QAAQ,GAAG,CAAC,EAAY,EAAG,IAAI,CAAC,KAChD,C,wBCLA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,eAAe,CAAG,CAAC,EACxB,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,aAAa,CAAG,EAAS,IAAI,GAAK,UAAmB,AAC5D,CACA,WAAW,CAAO,CAAE,CAClB,OAAO,IAAI,CAAC,oBAAoB,CAC9B,EAAQ,IAAI,CACZ,EAAQ,UAAU,CAClB,EAAQ,KAAK,CAEjB,CACA,kBAAkB,CAAI,CAAE,CAAU,CAAE,CAAK,CAAE,CAAO,CAAE,CAClD,GAAI,IAAI,CAAC,eAAe,CAAC,EAAQ,CAE/B,OADA,IAAI,CAAC,uBAAuB,CAAC,GACtB,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAC,OAAO,CAE9C,IAAM,EAAU,IAAI,CAAC,oBAAoB,CAAC,EAAM,EAAY,GAAO,IAAI,CAAC,AAAC,IACvE,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAC,OAAO,CAAG,EACjC,IAOT,OALA,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAG,CAC9B,QAAS,KACT,UACA,WAAY,CACd,EACO,CACT,CACA,MAAM,qBAAqB,CAAI,CAAE,CAAU,CAAE,CAAK,CAAE,KC7CpB,ED8C9B,IAAM,EAAe,OAAW,CAAC,GAC3B,EAAe,AE/CzB,SAA6B,CAAI,CAAE,CAAK,EACtC,IAAM,EAAa,EAAM,UAAU,CAC7B,EAAe,EAAE,CACjB,EAAS,CAAC,EAEV,EAAU,EAAK,KAAK,CADZ,2BAEd,SAAS,EAAc,CAAW,EAC3B,CAAM,CAAC,EAAY,GACtB,EAAa,IAAI,CAAC,GAClB,CAAM,CAAC,EAAY,CAAG,GAE1B,CACA,GAAIP,MAAM,OAAO,CAAC,GAChB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,MAAM,CAAE,IACrC,EAAc,CAAU,CAAC,EAAE,OAG7B,EAAc,GAQhB,IAAK,IAAM,KANP,GACF,EAAQ,OAAO,CAAC,AAAC,IAEf,EADoB,EAAM,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAE9C,GAEc,EAAM,SAAS,CAE7B,EADoB,EAAM,SAAS,CAAC,EAAE,CAAC,UAAU,EAGnD,OAAO,CACT,EFiB6C,EAAM,GACzC,EAAU,MAAM,EACpB,EACA,EACA,EAAc,gBAAgB,EAE1B,EAAW,ARjDrB,SAAyB,CAAI,CAAE,CAAK,CAAE,CAAY,CAAE,CAAkB,EAEpE,GAAM,CAAE,YAAU,CAAE,cAAY,CAAE,SAAO,CAAE,CAD3C,EAAqB,GAAsB,GAA2B,GAAyB,IAAI,CAAmB,CAEtH,GAAW,SAAS,CAAG,CAAC,OAAO,EAAE,EAAM,QAAQ,CAAC,aAAa,EAAE,EAAK,MAAM,CAAC,CAC3E,EAAW,YAAY,CAAC,QAAS,qDAC7B,GACF,GAAa,WAAW,CAAG,CAAW,EAExCU,SAAS,IAAI,CAAC,WAAW,CAAC,GAC1B,IAAM,EAAgB,EAAW,qBAAqB,GACtD,EAAQ,MAAM,GACd,IAAM,EAAmB,eAA6B,CAAC,EAAM,SAAS,EAAE,OAAO,CAC/E,MAAO,CACL,MAAO,EAAc,KAAK,CAC1B,OAAQ,EAAc,MAAM,CAAG,CACjC,CACF,EQiCqC,EAAM,EAAO,EAAS,GACjD,EAAQlB,KAAK,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,EAAS,KAAK,EAAI,AAAgB,EAAhB,EAAM,OAAO,EAAQ,GAC/E,EAASA,KAAK,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,EAAS,MAAM,EAAI,AAAgB,EAAhB,EAAM,OAAO,EAAQ,GACjF,EAAQ,EAAa,KAAK,AAChC,GAAM,KAAK,CAAG,AAAQ,EAAR,EACd,EAAM,MAAM,CAAG,AAAS,EAAT,EACf,IAAM,EAAS,AG3DnB,SAAmB,CAAI,CAAE,CAAK,CAAEI,CAAU,CAAE,CAAO,CAAE,CAAY,EAC/D,GAAM,CAAE,YAAU,CAAE,cAAY,CAAE,SAAO,CAAE,CAAG,CAC9C,GAAW,SAAS,CAAG,CAAC,OAAO,EAAE,EAAM,QAAQ,CAAC,aAAa,EAAE,EAAK,MAAM,CAAC,CAC3E,EAAW,YAAY,CAAC,QAAS,CAAC,iBAAiB,EAAEA,EAAW,mDAAmD,CAAC,EACpH,EAAa,WAAW,CAAG,EAC3B,GAAM,CAAE,OAAK,CAAEmB,OAAAA,CAAM,CAAE,CAAG,EAAa,KAAK,CAG5C,OAFA,EAAQ,YAAY,CAAC,QAAS,EAAM,QAAQ,IAC5C,EAAQ,YAAY,CAAC,SAAUA,EAAO,QAAQ,IACvC,IAAIC,gBAAgB,iBAAiB,CAAC,EAC/C,EHkD6B,EAAM,EAAO,EAAY,EAAS,EAC3D,QC5D8B,ED4DI,AI1DtC,WACE,GAAM,CAAE,WAAS,CAAE,CAAG,OAAc,GAAG,YAAY,GACnD,MAAO,iCAAiC,IAAI,CAAC,EAC/C,KJuDoD,EAAa,MAAM,CAAG,EC3DjE,IAAIT,QAAQ,MAAO,IACpB,GACF,MAAM,IAAIA,QAAQ,AAAC,GAAaU,WAAW,EAAU,MAEvD,ADuDmB,ECvDb,MAAM,CAAG,KACb,GACF,EACA,ADoDmB,ECpDb,GAAG,CAAG,CAAC,gCAAgC,EAAEC,mBDoDrB,GCpD6C,CAAC,CACxE,ADmDmB,ECnDb,WAAW,CAAG,WACtB,IDmDE,IAAI,EAAW,CACX,KAAI,CAAC,aAAa,EACpB,GAAW,AK7DjB,SAAqC,CAAK,CAAE,CAAU,EACpD,IAAM,EAAmB,8BAAqC,CAC5D,EAAM,KAAK,CACX,EAAM,MAAM,CACZ,GAEI,CAAE,SAAO,CAAE,CAAG,EAIpB,OAHA,EAAQ,SAAS,CAAC,EAAG,EAAG,EAAM,KAAK,CAAE,EAAM,MAAM,EACjD,EAAQ,SAAS,CAAC,EAAO,EAAG,GAC5B,0BAAiC,CAAC,GAC3B,EAAiB,MAAM,AAChC,ELkD6C,EAAO,EAAU,EAE1D,IAAM,EAAU,GAAAC,EAAA,GAAwB,EAAU,EAAM,KAAK,CAAE,EAAM,MAAM,CAAE,GAK7E,OAJI,IAAI,CAAC,aAAa,EACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAQ,MAAM,EAElD,UAAc,CAAC,GACR,CACT,CACA,wBAAwB,CAAO,CAAE,CAC/B,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAC,UAAU,EAC1C,CACA,uBAAuB,CAAO,CAAE,CAC9B,IAAM,EAAgB,IAAI,CAAC,eAAe,CAAC,EAAQ,CAC9C,IAEL,EAAc,UAAU,GACS,IAA7B,EAAc,UAAU,GACtB,EAAc,OAAO,CACvB,IAAI,CAAC,QAAQ,CAAC,GAEd,EAAc,OAAO,CAAC,IAAI,CAAC,AAAC,IAC1B,EAAc,OAAO,CAAG,EACxB,IAAI,CAAC,QAAQ,CAAC,EAChB,GAAG,KAAK,CAAC,KACP,QAAK,0CACP,GAEF,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAG,MAEpC,CACA,SAAS,CAAa,CAAE,CACtB,iBAAyB,CAAC,EAAc,OAAO,EAC/C,EAAc,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAG,KACxC,EAAc,OAAO,CAAC,MAAM,CAAC,cAAc,CAAG,SAChD,CACA,kBAAkB,CAAO,CAAE,CACzB,OAAO,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAC,UAAU,AACjD,CACA,SAAU,CACR,IAAI,CAAC,eAAe,CAAG,IACzB,CACF,CAEA,EAAe,SAAS,CAAG,CACzB,KAAM,CACJ,gBAAyB,CACzB,iBAA0B,CAC1B,iBAA0B,CAC3B,CACD,KAAM,UACR,EACA,EAAe,kBAAkB,CAAG,CAClC,WAAY,QACZ,UAAW,SACX,WAAY,QACd,EMnHA,QAAc,CAAC,GACf,QAAc,CAAC,E,sGCEf,SAAS,EAAmB,CAAS,CAAE,CAAO,EAC5C,GAAI,EAAU,OAAO,GAAK,SAAa,EAAI,CAAC,EAAU,IAAI,CACxD,OAAO,mBAAqB,CAAC,EAAU,KAAK,EAAE,KAAK,GAC9C,GAAK,EAAU,IAAI,CAMnB,IAAI,EAAU,IAAI,YAAY,GAAW,CAAE,CAChD,IAAM,EAAc,EAAU,IAAI,CAC5B,EAAU,EAAQ,aAAa,CAAC,EAAY,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAE,UACrE,EAAa,EAAY,SAAS,CAAC,MAAM,CAAC,UAAa,EAM7D,OALA,EAAW,KAAK,CACd,EAAY,OAAO,CAAC,KAAK,CAAC,KAAK,CAC/B,EAAY,OAAO,CAAC,KAAK,CAAC,MAAM,EAElC,EAAQ,YAAY,CAAC,GACd,CACT,MAAO,GAAI,EAAU,IAAI,YAAY,GAAY,CAAE,CACjD,IAAM,EAAe,EAAU,IAAI,CACnC,GAAI,AAAsB,WAAtB,EAAa,IAAI,CAAe,CAClC,IAAM,EAAW,EAAQ,oBAAoB,CAC3C,EAAa,EAAE,CACf,EAAa,EAAE,CACf,EAAa,EAAE,CACf,EAAa,EAAE,EAKjB,OAHA,EAAa,aAAa,CAAC,OAAO,CAAC,AAAC,IAClC,EAAS,YAAY,CAAC,EAAK,MAAM,CAAE,mBAAqB,CAAC,EAAK,KAAK,EAAE,KAAK,GAC5E,GACO,CACT,CACF,MA9B4B,CAC1B,IAAM,EAAU,EAAQ,aAAa,CAAC,EAAU,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAE,UACnE,EAAa,EAAU,MAAM,CAAC,MAAM,CAAC,UAAa,EAGxD,OAFA,EAAW,KAAK,CAAC,EAAU,OAAO,CAAC,KAAK,CAAC,KAAK,CAAE,EAAU,OAAO,CAAC,KAAK,CAAC,MAAM,EAC9E,EAAQ,YAAY,CAAC,GACd,CACT,CA0BA,MADA,QAAK,2BAA4B,GAC1B,KACT,C,6DCtCA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,QAAQ,CAAmBlC,OAAO,MAAM,CAAC,MAC9C,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,mBAAmB,CAAI,CAAE,CACvB,IAAM,EAAU,IAAI,CAAC,WAAW,CAAC,GAC3B,EAAS,EAAK,OAAO,GAC3B,GAAI,EAAQ,UAAU,GAAK,EAAQ,CACjC,IAAMW,EAAa,EAAK,UAAU,EAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CACzD,CAAE,OAAK,CAAE,QAAM,CAAE,CAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAChE,EAAK,IAAI,CACTA,EACA,EAAK,MAAM,SAIX,AAAoE,IAApE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAQ,UAAU,GAAW,IAAU,EAAQ,OAAO,CAAC,OAAO,CAAC,KAAK,EAAI,IAAW,EAAQ,OAAO,CAAC,OAAO,CAAC,MAAM,AAKjK,CACA,MAAO,EACT,CACA,cAAc,CAAI,CAAE,CAAe,CAAE,CAEnC,IAAM,EAAkB,AADR,IAAI,CAAC,WAAW,CAAC,GACD,eAAe,AAC3C,GAAK,cAAc,EACrB,IAAI,CAAC,WAAW,CAAC,GAEnB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAC9C,CACA,iBAAiB,CAAI,CAAE,CAErB,IAAM,EAAkB,AADR,IAAI,CAAC,WAAW,CAAC,GACD,eAAe,AAC3C,GAAK,cAAc,EACrB,IAAI,CAAC,WAAW,CAAC,GAEnB,EAAgB,OAAO,CAAC,aAAa,CAAC,EACxC,CACA,kBAAkB,CAAI,CAAE,CACtB,IAAI,CAAC,sBAAsB,CAAC,EAAK,GAAG,CACtC,CACA,uBAAuB,CAAO,CAAE,CAC9B,IAAM,EAAU,IAAI,CAAC,QAAQ,CAAC,EAAQ,CACtC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAQ,UAAU,EACnE,UAAc,CAAC,EAAQ,eAAe,EACtC,IAAI,CAAC,QAAQ,CAAC,EAAQ,CAAG,IAC3B,CACA,YAAY,CAAI,CAAE,CAChB,IAAM,EAAS,EAAK,OAAO,GACrB,EAAU,IAAI,CAAC,WAAW,CAAC,GAC3B,EAAkB,EAAQ,eAAe,AAC3C,GAAQ,UAAU,GAAK,GACzB,IAAI,CAAC,cAAc,CAAC,GAEtB,EAAK,cAAc,CAAG,GACtB,IAAM,EAAU,EAAK,MAAM,CAAC,OAAO,CACnC,QAAiB,EAAgB,MAAM,CAAE,EAAK,OAAO,CAAE,EAAgB,OAAO,CAAE,EAClF,CACA,eAAe,CAAI,CAAE,CACnB,IAAM,EAAU,IAAI,CAAC,WAAW,CAAC,GAC3B,EAAkB,EAAQ,eAAe,AAC3C,GAAQ,OAAO,EACjB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAQ,UAAU,EAErE,EAAQ,OAAO,CAAG,EAAgB,OAAO,CAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,GACxF,EAAQ,UAAU,CAAG,EAAK,OAAO,GACjC,EAAgB,OAAO,CAAG,EAAQ,OAAO,AAC3C,CACA,YAAY,CAAI,CAAE,CAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAK,GAAG,CAAC,EAAI,IAAI,CAAC,WAAW,CAAC,EACrD,CACA,YAAY,CAAI,CAAE,CAChB,IAAM,EAAc,CAClB,QAAS,KACT,WAAY,KACZ,gBAAiB,OAAW,CAAC,GAAe,CAC9C,EASA,OARA,EAAY,eAAe,CAAC,UAAU,CAAG,EACzC,EAAY,eAAe,CAAC,MAAM,CAAG,CAAE,KAAM,EAAG,KAAM,EAAG,KAAM,EAAG,KAAM,CAAE,EAC1E,EAAY,eAAe,CAAC,WAAW,CAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAG,EAAK,YAAY,CACzF,IAAI,CAAC,QAAQ,CAAC,EAAK,GAAG,CAAC,CAAG,EAC1B,IAAI,CAAC,WAAW,CAAC,GACjB,EAAK,EAAE,CAAC,YAAa,KACnB,IAAI,CAAC,iBAAiB,CAAC,EACzB,GACO,CACT,CACA,SAAU,CACR,IAAK,IAAM,KAAK,IAAI,CAAC,QAAQ,CAC3B,IAAI,CAAC,sBAAsB,CAAC,EAE9B,KAAI,CAAC,QAAQ,CAAG,KAChB,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAEA,EAAe,SAAS,CAAG,CACzB,KAAM,CACJ,eAAwB,CACxB,gBAAyB,CACzB,gBAAyB,CAC1B,CACD,KAAM,MACR,E,2DC7GA,SAAS,EAAS,CAAI,CAAE,CAAK,CAAE,CAAC,EAC9B,IAAK,IAAI,EAAI,EAAG,EAAQ,EAAI,EAAI,EAAO,EAAI,EAAO,EAAE,EAAG,GAAS,EAC9D,GAAI,AAAoB,IAApB,CAAI,CAAC,EAAQ,EAAE,CACjB,MAAO,GAEX,MAAO,EACT,CACA,SAAS,EAAY,CAAI,CAAE,CAAK,CAAE,CAAC,CAAE,CAAG,CAAE,CAAM,EAC9C,IAAM,EAAS,EAAI,EACnB,IAAK,IAAI,EAAI,EAAK,EAAQ,EAAM,EAAS,EAAI,EAAG,GAAK,EAAQ,EAAE,EAAG,GAAS,EACzE,GAAI,AAAoB,IAApB,CAAI,CAAC,EAAQ,EAAE,CACjB,MAAO,GAEX,MAAO,EACT,C,oECHA,OAAM,EACJ,YAAY,CAAS,CAAE,CACrB,IAAI,CAAC,eAAe,CAAG,CAAC,EACxB,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,eAAe,CAAI,CAAE,CAAU,CAAE,CAAK,CAAE,CACtC,IAAM,EAAW,eAA6B,CAAC,GAAQ,IAAK,GACxD,EAAQJ,KAAK,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,EAAS,KAAK,EAAI,AAAgB,EAAhB,EAAM,OAAO,EAAQ,GAC/E,EAASA,KAAK,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,EAAS,MAAM,EAAI,AAAgB,EAAhB,EAAM,OAAO,EAAQ,GAKrF,OAJA,EAAQA,KAAK,IAAI,CAAC,EAAQ,MAC1B,EAASA,KAAK,IAAI,CAAC,EAAS,MAGrB,CAAE,MAFT,EAAQ,SAAS,GAED,OADhB,EAAS,SAAS,EACK,CACzB,CACA,WAAW,CAAO,CAAE,CAAU,CAAE,CAAK,CAAE,CAAQ,CAAE,CACxB,UAAnB,OAAO,IACT,QAAY,QAAS,qFACrB,EAAU,CACR,KAAM,EACN,QACA,YACF,GAEE,AAAE,EAAQ,KAAK,YAAY,GAAS,EACtC,GAAQ,KAAK,CAAG,IAAI,GAAS,CAAC,EAAQ,KAAK,GAE7C,GAAM,CAAE,SAAO,CAAE,kBAAgB,CAAE,CAAG,IAAI,CAAC,sBAAsB,CAC/D,GAIF,OAFA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAQ,OAAO,EACjD,0BAAiC,CAAC,GAC3B,CACT,CACA,uBAAuB,CAAO,CAAE,CAC9B,GAAM,CAAED,KAAAA,CAAI,CAAE,OAAK,CAAE,CAAG,EAClB,EAAa,EAAQ,UAAU,EAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAC5D,EAAW,eAA6B,CAACA,GAAQ,IAAK,GACtD,EAAQC,KAAK,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,EAAS,KAAK,EAAI,AAAgB,EAAhB,EAAM,OAAO,EAAQ,GAC/E,EAASA,KAAK,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,EAAS,MAAM,EAAI,AAAgB,EAAhB,EAAM,OAAO,EAAQ,GACjF,EAAmB,8BAAqC,CAAC,EAAO,GAChE,CAAE,QAAM,CAAE,CAAG,EACnB,IAAI,CAAC,kBAAkB,CAACD,EAAM,EAAO,EAAY,GACjD,IAAM,EAAU,QAAwB,EAAQ,EAAO,EAAQ,GAC/D,GAAI,EAAM,IAAI,CAAE,CACd,IAAM,EAAU,ADzCtB,SAA8B,CAAM,CAAE,EAAa,CAAC,EAClD,GAAM,CAAE,OAAK,CAAE,QAAM,CAAE,CAAG,EACpB,EAAU,EAAO,UAAU,CAAC,KAAM,CACtC,mBAAoB,EACtB,GACA,GAAI,AAAY,OAAZ,EACF,MAAM,AAAI6B,UAAU,mCAGtB,IAAM,EAAO,AADK,EAAQ,YAAY,CAAC,EAAG,EAAG,EAAO,GAC7B,IAAI,CACvB,EAAO,EACP,EAAM,EACN,EAAQ,EAAQ,EAChB,EAAS,EAAS,EACtB,KAAO,EAAM,GAAU,EAAS,EAAM,EAAO,IAC3C,EAAE,EACJ,GAAI,IAAQ,EACV,OAAO,SAAe,CACxB,KAAO,EAAS,EAAM,EAAO,IAC3B,EAAE,EACJ,KAAO,EAAY,EAAM,EAAO,EAAM,EAAK,IACzC,EAAE,EACJ,KAAO,EAAY,EAAM,EAAO,EAAO,EAAK,IAC1C,EAAE,EAGJ,MAFA,EAAE,EACF,EAAE,EACK,IAAI,GAAS,CAAC,EAAO,EAAY,EAAM,EAAY,AAAC,GAAQ,CAAG,EAAK,EAAY,AAAC,GAAS,CAAE,EAAK,EAC1G,ECc2C,EAAQ,GAC7C,EAAQ,KAAK,CAAC,QAAQ,CAAC,GACvB,EAAQ,SAAS,EACnB,CACA,MAAO,CAAE,UAAS,kBAAiB,CACrC,CACA,kBAAkB,CAAI,CAAE,CACtB,IAAM7B,EAAU,EAAK,OAAO,GAC5B,GAAI,IAAI,CAAC,eAAe,CAACA,EAAQ,CAE/B,OADA,IAAI,CAAC,uBAAuB,CAACA,GACtB,IAAI,CAAC,eAAe,CAACA,EAAQ,CAAC,OAAO,CAE9C,GAAM,CAAE,SAAO,CAAE,kBAAgB,CAAE,CAAG,IAAI,CAAC,sBAAsB,CAAC,GAMlE,OALA,IAAI,CAAC,eAAe,CAACA,EAAQ,CAAG,CAC9B,mBACA,UACA,WAAY,CACd,EACO,CACT,CACA,wBAAwB,CAAO,CAAE,CAC/B,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAC,UAAU,EAC1C,CACA,uBAAuB,CAAO,CAAE,CAC9B,IAAM,EAAgB,IAAI,CAAC,eAAe,CAAC,EAAQ,CAEnD,GADA,EAAc,UAAU,GACpB,AAA6B,IAA7B,EAAc,UAAU,CAAQ,CAClC,0BAAiC,CAAC,EAAc,gBAAgB,EAChE,iBAAyB,CAAC,EAAc,OAAO,EAC/C,IAAM,EAAS,EAAc,OAAO,CAAC,MAAM,AAC3C,GAAO,QAAQ,CAAG,KAClB,EAAO,cAAc,CAAG,UACxB,EAAO,SAAS,CAAG,uBACnB,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAG,IAClC,CACF,CACA,kBAAkB,CAAO,CAAE,CACzB,OAAO,IAAI,CAAC,eAAe,CAAC,EAAQ,CAAC,UAAU,AACjD,CAYA,mBAAmB,CAAI,CAAE,CAAK,CAAEK,CAAU,CAAE,CAAgB,CAAE,CAC5D,IAqBI,EACA,EAtBE,CAAE,QAAM,CAAE,SAAO,CAAE,CAAG,EACtB,EAAO,QAAwB,GAC/B,EAAW,eAA6B,CAAC,GAAQ,IAAK,GACtD,EAAQ,EAAS,KAAK,CACtB,EAAa,EAAS,UAAU,CAChC,EAAa,EAAS,UAAU,CAChC,EAAe,EAAS,YAAY,CACpCyB,EAAiB,EAAS,cAAc,CACxC,EAAS,EAAO,MAAM,CAC5B,EAAQ,cAAc,GACtB,EAAQ,KAAK,CAACzB,EAAYA,GAC1B,IAAM,EAAU,AAAgB,EAAhB,EAAM,OAAO,CAE7B,GADA,EAAQ,SAAS,CAAC,EAAG,EAAG,EAAS,KAAK,CAAG,EAAI,EAAS,EAAS,MAAM,CAAG,EAAI,GACxE,EAAM,OAAO,EAAE,MAAO,CACxB,IAAM,EAAc,EAAM,OAAO,AACjC,GAAQ,SAAS,CAAG,EAAY,KAAK,CACrC,EAAQ,UAAU,CAAG,EAAY,UAAU,CAC3C,EAAQ,QAAQ,CAAG,EAAY,IAAI,CACnC,EAAQ,OAAO,CAAG,EAAY,GAAG,AACnC,CACA,EAAQ,IAAI,CAAG,EAGf,IAAM,EAAc,EAAM,UAAU,CAAG,EAAI,EAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,IAAM,EAAe,EAAM,UAAU,EAAI,AAAM,IAAN,EACnC,EAAe,EAAeJ,KAAK,IAAI,CAACA,KAAK,GAAG,CAAC,EAAG,GAAU,AAAgB,EAAhB,EAAM,OAAO,EAAQ,EACnF8B,EAAiB,EAAe1B,EACtC,GAAI,EAAc,CAChB,EAAQ,SAAS,CAAG,QACpB,EAAQ,WAAW,CAAG,QACtB,IAAM,EAAgB,EAAM,UAAU,CAChC,EAAkB,EAAc,KAAK,CACrC,EAAkB,EAAc,KAAK,AAC3C,GAAQ,WAAW,CAAG,mBAAqB,CAAC,GAAiB,QAAQ,CAAC,GAAiB,YAAY,GACnG,IAAM,EAAiB,EAAc,IAAI,CAAGA,EACtC,EAAqB,EAAc,QAAQ,CAAGA,CACpD,GAAQ,UAAU,CAAG,EACrB,EAAQ,aAAa,CAAGJ,KAAK,GAAG,CAAC,EAAc,KAAK,EAAI,EACxD,EAAQ,aAAa,CAAGA,KAAK,GAAG,CAAC,EAAc,KAAK,EAAI,EAAqB8B,CAC/E,MACE,EAAQ,WAAW,CAAG,EAAM,KAAK,EAAE,OAAS,EAC5C,EAAQ,SAAS,CAAG,EAAM,KAAK,CAAG,QAAmB,EAAM,KAAK,CAAE,GAAW,KACzE,EAAM,OAAO,EAAE,OACjB,GAAQ,WAAW,CAAG,QAAmB,EAAM,OAAO,CAAE,EAAO,EAEjE,EAAQ,WAAW,CAAG,QAExB,IAAI,EAAqB,AAAC,GAAaD,EAAe,QAAQ,AAAD,EAAK,CAC9D,GAAaA,EAAe,QAAQ,CAAG,GACzC,GAAqB,GAEvB,IAAM,EAAc,EAAM,OAAO,EAAE,OAAS,EAC5C,IAAK,IAAI,EAAK,EAAG,EAAK,EAAM,MAAM,CAAE,IAClC,EAAgB,EAAc,EAC9B,EAAgB,EAAc,EAAI,EAAK,EAAaA,EAAe,MAAM,CAAG,EACxE,AAAgB,UAAhB,EAAM,KAAK,CACb,GAAiB,EAAe,CAAU,CAAC,EAAG,CACrC,AAAgB,WAAhB,EAAM,KAAK,EACpB,IAAiB,AAAC,GAAe,CAAU,CAAC,EAAG,AAAD,EAAK,GAEjD,EAAM,OAAO,EAAE,OACjB,IAAI,CAAC,kBAAkB,CACrB,CAAK,CAAC,EAAG,CACT,EACA,EACA,EAAgB,EAAM,OAAO,CAC7B,EAAgB,EAAM,OAAO,CAAG,EAChC,IAGA,AAAgB,KAAK,IAArB,EAAM,KAAK,EACb,IAAI,CAAC,kBAAkB,CACrB,CAAK,CAAC,EAAG,CACT,EACA,EACA,EAAgB,EAAM,OAAO,CAC7B,EAAgB,EAAM,OAAO,CAAG,EAIxC,CACF,CAWA,mBAAmB,CAAI,CAAE,CAAK,CAAE,CAAgB,CAAE,CAAC,CAAE,CAAC,CAAE,EAAW,EAAK,CAAE,CACxE,GAAM,CAAE,SAAO,CAAE,CAAG,EACdE,EAAgB,EAAM,aAAa,CACrC,EAA+B,GAWnC,GAVI,sCAAoD,GAClD,6BAA2C,EAC7C,EAAQ,aAAa,CAAG,CAAC,EAAEA,EAAc,EAAE,CAAC,CAC5C,EAAQ,iBAAiB,CAAG,CAAC,EAAEA,EAAc,EAAE,CAAC,CAChD,EAA+B,KAE/B,EAAQ,aAAa,CAAG,MACxB,EAAQ,iBAAiB,CAAG,QAG5BA,AAAkB,IAAlBA,GAAuB,EAA8B,YACnD,EACF,EAAQ,UAAU,CAAC,EAAM,EAAG,GAE5B,EAAQ,QAAQ,CAAC,EAAM,EAAG,IAI9B,IAAI,EAAkB,EAChB,EAAc,qBAAmC,CAAC,GACpD,EAAgB,EAAQ,WAAW,CAAC,GAAM,KAAK,CAC/CzB,EAAe,EACnB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAY,MAAM,CAAE,EAAE,EAAG,CAC3C,IAAM,EAAc,CAAW,CAAC,EAAE,CAC9B,EACF,EAAQ,UAAU,CAAC,EAAa,EAAiB,GAEjD,EAAQ,QAAQ,CAAC,EAAa,EAAiB,GAEjD,IAAI,EAAU,GACd,IAAK,IAAI,EAAI,EAAI,EAAG,EAAI,EAAY,MAAM,CAAE,EAAE,EAC5C,GAAW,CAAW,CAAC,EAAE,CAG3B,GAAmB,EADnBA,CAAAA,EAAe,EAAQ,WAAW,CAAC,GAAS,KAAK,AAAD,EACEyB,EAClD,EAAgBzB,CAClB,CACF,CACA,SAAU,CACR,IAAI,CAAC,eAAe,CAAG,IACzB,CACF,CAEA,EAAiB,SAAS,CAAG,CAC3B,KAAM,CACJ,gBAAyB,CACzB,iBAA0B,CAC1B,iBAA0B,CAC3B,CACD,KAAM,YACR,EC5PA,QAAc,CAAC,GACf,QAAc,CAAC,E,+CCFf,IAAM,EAAa,GAAI,A,WAAA,CAAM,CAC7B,SAAS,EAAwB,CAAK,CAAE,CAAK,CAAE,CAAM,CAAE,CAAU,EAE/D,AADe,EACR,IAAI,CAAG,EACd,AAFe,EAER,IAAI,CAAG,EACd,AAHe,EAGR,IAAI,CAAG,EAAM,KAAK,CAAG,EAAa,EACzC,AAJe,EAIR,IAAI,CAAG,EAAM,MAAM,CAAG,EAAa,EAC1C,IAAM,EAAU,qBAA6B,CAC3C,AANa,EAMN,KAAK,CACZ,AAPa,EAON,MAAM,CACb,EACA,IASF,OAPA,EAAQ,MAAM,CAAC,cAAc,CAAG,QAChC,EAAQ,MAAM,CAAC,QAAQ,CAAG,EAC1B,EAAQ,MAAM,CAAC,SAAS,CAAG,8BAC3B,EAAQ,KAAK,CAAC,KAAK,CAAG,EAAQ,EAC9B,EAAQ,KAAK,CAAC,MAAM,CAAG,EAAS,EAChC,EAAQ,MAAM,CAAC,IAAI,CAAC,SAAU,EAAQ,MAAM,EAC5C,EAAQ,SAAS,GACV,CACT,C"}