@micjanic/recursive-grid 1.0.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGLRenderer-BYTBSbn-.js","sources":["../node_modules/pixi.js/lib/rendering/batcher/gl/GlBatchAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBuffer.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/buffer/GlBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/context/GlContextSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/const.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/geometry/utils/getGlTypeFromFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/geometry/GlGeometrySystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlBackBufferSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlColorMaskSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlEncoderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlLimitsSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlRenderTarget.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlStencilSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboElementsSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateArraySyncSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/createUboSyncSTD40.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/GlUboSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/renderTarget/GlRenderTargetSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GenerateShaderSyncCode.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlProgramData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/compileShader.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/defaultValue.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/mapType.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/extractAttributesFromGlProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUboData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/getUniformData.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/logProgramError.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/program/generateProgram.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlShaderSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSyncTypes.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/utils/generateUniformsSync.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/shader/GlUniformGroupSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/state/mapWebGLBlendModesToPixi.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/state/GlStateSystem.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTexture.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadBufferImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadCompressedTextureResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadImageResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/uploaders/glUploadVideoResource.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/pixiToGlMaps.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/applyStyleParams.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlInternalFormat.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/utils/mapFormatToGlType.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/texture/GlTextureSystem.mjs","../node_modules/pixi.js/lib/scene/graphics/gl/GlGraphicsAdaptor.mjs","../node_modules/pixi.js/lib/scene/mesh/gl/GlMeshAdaptor.mjs","../node_modules/pixi.js/lib/rendering/renderers/gl/WebGLRenderer.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\n\n\"use strict\";\nclass GlBatchAdaptor {\n constructor() {\n this._tempState = State.for2d();\n /**\n * We only want to sync the a batched shaders uniforms once on first use\n * this is a hash of shader uids to a boolean value. When the shader is first bound\n * we set the value to true. When the shader is bound again we check the value and\n * if it is true we know that the uniforms have already been synced and we skip it.\n */\n this._didUploadHash = {};\n }\n init(batcherPipe) {\n batcherPipe.renderer.runners.contextChange.add(this);\n }\n contextChange() {\n this._didUploadHash = {};\n }\n start(batchPipe, geometry, shader) {\n const renderer = batchPipe.renderer;\n const didUpload = this._didUploadHash[shader.uid];\n renderer.shader.bind(shader, didUpload);\n if (!didUpload) {\n this._didUploadHash[shader.uid] = true;\n }\n renderer.shader.updateUniformGroup(renderer.globalUniforms.uniformGroup);\n renderer.geometry.bind(geometry, shader.glProgram);\n }\n execute(batchPipe, batch) {\n const renderer = batchPipe.renderer;\n this._tempState.blendMode = batch.blendMode;\n renderer.state.set(this._tempState);\n const textures = batch.textures.textures;\n for (let i = 0; i < batch.textures.count; i++) {\n renderer.texture.bind(textures[i], i);\n }\n renderer.geometry.draw(batch.topology, batch.size, batch.start);\n }\n}\n/** @ignore */\nGlBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GlBatchAdaptor };\n//# sourceMappingURL=GlBatchAdaptor.mjs.map\n","\"use strict\";\nvar BUFFER_TYPE = /* @__PURE__ */ ((BUFFER_TYPE2) => {\n BUFFER_TYPE2[BUFFER_TYPE2[\"ELEMENT_ARRAY_BUFFER\"] = 34963] = \"ELEMENT_ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"ARRAY_BUFFER\"] = 34962] = \"ARRAY_BUFFER\";\n BUFFER_TYPE2[BUFFER_TYPE2[\"UNIFORM_BUFFER\"] = 35345] = \"UNIFORM_BUFFER\";\n return BUFFER_TYPE2;\n})(BUFFER_TYPE || {});\n\nexport { BUFFER_TYPE };\n//# sourceMappingURL=const.mjs.map\n","\"use strict\";\nclass GlBuffer {\n constructor(buffer, type) {\n this._lastBindBaseLocation = -1;\n this._lastBindCallId = -1;\n this.buffer = buffer || null;\n this.updateID = -1;\n this.byteLength = -1;\n this.type = type;\n }\n}\n\nexport { GlBuffer };\n//# sourceMappingURL=GlBuffer.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { BufferUsage } from '../../shared/buffer/const.mjs';\nimport { BUFFER_TYPE } from './const.mjs';\nimport { GlBuffer } from './GlBuffer.mjs';\n\n\"use strict\";\nclass GlBufferSystem {\n /**\n * @param {Renderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n /** Cache keeping track of the base bound buffer bases */\n this._boundBufferBases = /* @__PURE__ */ Object.create(null);\n this._minBaseLocation = 0;\n this._nextBindBaseIndex = this._minBaseLocation;\n this._bindCallId = 0;\n this._renderer = renderer;\n this._renderer.renderableGC.addManagedHash(this, \"_gpuBuffers\");\n }\n /** @ignore */\n destroy() {\n this._renderer = null;\n this._gl = null;\n this._gpuBuffers = null;\n this._boundBufferBases = null;\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n this._gl = this._renderer.gl;\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n this._maxBindings = this._renderer.limits.maxUniformBindings;\n }\n getGlBuffer(buffer) {\n return this._gpuBuffers[buffer.uid] || this.createGLBuffer(buffer);\n }\n /**\n * This binds specified buffer. On first run, it will create the webGL buffers for the context too\n * @param buffer - the buffer to bind to the renderer\n */\n bind(buffer) {\n const { _gl: gl } = this;\n const glBuffer = this.getGlBuffer(buffer);\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n }\n /**\n * Binds an uniform buffer to at the given index.\n *\n * A cache is used so a buffer will not be bound again if already bound.\n * @param glBuffer - the buffer to bind\n * @param index - the base index to bind it to.\n */\n bindBufferBase(glBuffer, index) {\n const { _gl: gl } = this;\n if (this._boundBufferBases[index] !== glBuffer) {\n this._boundBufferBases[index] = glBuffer;\n glBuffer._lastBindBaseLocation = index;\n gl.bindBufferBase(gl.UNIFORM_BUFFER, index, glBuffer.buffer);\n }\n }\n nextBindBase(hasTransformFeedback) {\n this._bindCallId++;\n this._minBaseLocation = 0;\n if (hasTransformFeedback) {\n this._boundBufferBases[0] = null;\n this._minBaseLocation = 1;\n if (this._nextBindBaseIndex < 1) {\n this._nextBindBaseIndex = 1;\n }\n }\n }\n freeLocationForBufferBase(glBuffer) {\n let freeIndex = this.getLastBindBaseLocation(glBuffer);\n if (freeIndex >= this._minBaseLocation) {\n glBuffer._lastBindCallId = this._bindCallId;\n return freeIndex;\n }\n let loop = 0;\n let nextIndex = this._nextBindBaseIndex;\n while (loop < 2) {\n if (nextIndex >= this._maxBindings) {\n nextIndex = this._minBaseLocation;\n loop++;\n }\n const curBuf = this._boundBufferBases[nextIndex];\n if (curBuf && curBuf._lastBindCallId === this._bindCallId) {\n nextIndex++;\n continue;\n }\n break;\n }\n freeIndex = nextIndex;\n this._nextBindBaseIndex = nextIndex + 1;\n if (loop >= 2) {\n return -1;\n }\n glBuffer._lastBindCallId = this._bindCallId;\n this._boundBufferBases[freeIndex] = null;\n return freeIndex;\n }\n getLastBindBaseLocation(glBuffer) {\n const index = glBuffer._lastBindBaseLocation;\n if (this._boundBufferBases[index] === glBuffer) {\n return index;\n }\n return -1;\n }\n /**\n * Binds a buffer whilst also binding its range.\n * This will make the buffer start from the offset supplied rather than 0 when it is read.\n * @param glBuffer - the buffer to bind\n * @param index - the base index to bind at, defaults to 0\n * @param offset - the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc\n * @param size - the size to bind at (this is blocks of 256).\n */\n bindBufferRange(glBuffer, index, offset, size) {\n const { _gl: gl } = this;\n offset || (offset = 0);\n index || (index = 0);\n this._boundBufferBases[index] = null;\n gl.bindBufferRange(gl.UNIFORM_BUFFER, index || 0, glBuffer.buffer, offset * 256, size || 256);\n }\n /**\n * Will ensure the data in the buffer is uploaded to the GPU.\n * @param {Buffer} buffer - the buffer to update\n */\n updateBuffer(buffer) {\n const { _gl: gl } = this;\n const glBuffer = this.getGlBuffer(buffer);\n if (buffer._updateID === glBuffer.updateID) {\n return glBuffer;\n }\n glBuffer.updateID = buffer._updateID;\n gl.bindBuffer(glBuffer.type, glBuffer.buffer);\n const data = buffer.data;\n const drawType = buffer.descriptor.usage & BufferUsage.STATIC ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW;\n if (data) {\n if (glBuffer.byteLength >= data.byteLength) {\n gl.bufferSubData(glBuffer.type, 0, data, 0, buffer._updateSize / data.BYTES_PER_ELEMENT);\n } else {\n glBuffer.byteLength = data.byteLength;\n gl.bufferData(glBuffer.type, data, drawType);\n }\n } else {\n glBuffer.byteLength = buffer.descriptor.size;\n gl.bufferData(glBuffer.type, glBuffer.byteLength, drawType);\n }\n return glBuffer;\n }\n /** dispose all WebGL resources of all managed buffers */\n destroyAll() {\n const gl = this._gl;\n for (const id in this._gpuBuffers) {\n gl.deleteBuffer(this._gpuBuffers[id].buffer);\n }\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n }\n /**\n * Disposes buffer\n * @param {Buffer} buffer - buffer with data\n * @param {boolean} [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n onBufferDestroy(buffer, contextLost) {\n const glBuffer = this._gpuBuffers[buffer.uid];\n const gl = this._gl;\n if (!contextLost) {\n gl.deleteBuffer(glBuffer.buffer);\n }\n this._gpuBuffers[buffer.uid] = null;\n }\n /**\n * creates and attaches a GLBuffer object tied to the current context.\n * @param buffer\n * @protected\n */\n createGLBuffer(buffer) {\n const { _gl: gl } = this;\n let type = BUFFER_TYPE.ARRAY_BUFFER;\n if (buffer.descriptor.usage & BufferUsage.INDEX) {\n type = BUFFER_TYPE.ELEMENT_ARRAY_BUFFER;\n } else if (buffer.descriptor.usage & BufferUsage.UNIFORM) {\n type = BUFFER_TYPE.UNIFORM_BUFFER;\n }\n const glBuffer = new GlBuffer(gl.createBuffer(), type);\n this._gpuBuffers[buffer.uid] = glBuffer;\n buffer.on(\"destroy\", this.onBufferDestroy, this);\n return glBuffer;\n }\n resetState() {\n this._boundBufferBases = /* @__PURE__ */ Object.create(null);\n }\n}\n/** @ignore */\nGlBufferSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"buffer\"\n};\n\nexport { GlBufferSystem };\n//# sourceMappingURL=GlBufferSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\n\n\"use strict\";\nconst _GlContextSystem = class _GlContextSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /**\n * Features supported by current renderer.\n * @type {object}\n * @readonly\n */\n this.supports = {\n /** Support for 32-bit indices buffer. */\n uint32Indices: true,\n /** Support for UniformBufferObjects */\n uniformBufferObject: true,\n /** Support for VertexArrayObjects */\n vertexArrayObject: true,\n /** Support for SRGB texture format */\n srgbTextures: true,\n /** Support for wrapping modes if a texture is non-power of two */\n nonPowOf2wrapping: true,\n /** Support for MSAA (antialiasing of dynamic textures) */\n msaa: true,\n /** Support for mipmaps if a texture is non-power of two */\n nonPowOf2mipmaps: true\n };\n this._renderer = renderer;\n this.extensions = /* @__PURE__ */ Object.create(null);\n this.handleContextLost = this.handleContextLost.bind(this);\n this.handleContextRestored = this.handleContextRestored.bind(this);\n }\n /**\n * `true` if the context is lost\n * @readonly\n */\n get isLost() {\n return !this.gl || this.gl.isContextLost();\n }\n /**\n * Handles the context change event.\n * @param {WebGLRenderingContext} gl - New WebGL context.\n */\n contextChange(gl) {\n this.gl = gl;\n this._renderer.gl = gl;\n }\n init(options) {\n options = { ..._GlContextSystem.defaultOptions, ...options };\n let multiView = this.multiView = options.multiView;\n if (options.context && multiView) {\n warn(\"Renderer created with both a context and multiview enabled. Disabling multiView as both cannot work together.\");\n multiView = false;\n }\n if (multiView) {\n this.canvas = DOMAdapter.get().createCanvas(this._renderer.canvas.width, this._renderer.canvas.height);\n } else {\n this.canvas = this._renderer.view.canvas;\n }\n if (options.context) {\n this.initFromContext(options.context);\n } else {\n const alpha = this._renderer.background.alpha < 1;\n const premultipliedAlpha = options.premultipliedAlpha ?? true;\n const antialias = options.antialias && !this._renderer.backBuffer.useBackBuffer;\n this.createContext(options.preferWebGLVersion, {\n alpha,\n premultipliedAlpha,\n antialias,\n stencil: true,\n preserveDrawingBuffer: options.preserveDrawingBuffer,\n powerPreference: options.powerPreference ?? \"default\"\n });\n }\n }\n ensureCanvasSize(targetCanvas) {\n if (!this.multiView) {\n if (targetCanvas !== this.canvas) {\n warn(\"multiView is disabled, but targetCanvas is not the main canvas\");\n }\n return;\n }\n const { canvas } = this;\n if (canvas.width < targetCanvas.width || canvas.height < targetCanvas.height) {\n canvas.width = Math.max(targetCanvas.width, targetCanvas.width);\n canvas.height = Math.max(targetCanvas.height, targetCanvas.height);\n }\n }\n /**\n * Initializes the context.\n * @protected\n * @param {WebGLRenderingContext} gl - WebGL context\n */\n initFromContext(gl) {\n this.gl = gl;\n this.webGLVersion = gl instanceof DOMAdapter.get().getWebGLRenderingContext() ? 1 : 2;\n this.getExtensions();\n this.validateContext(gl);\n this._renderer.runners.contextChange.emit(gl);\n const element = this._renderer.view.canvas;\n element.addEventListener(\"webglcontextlost\", this.handleContextLost, false);\n element.addEventListener(\"webglcontextrestored\", this.handleContextRestored, false);\n }\n /**\n * Initialize from context options\n * @protected\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n * @param preferWebGLVersion\n * @param {object} options - context attributes\n */\n createContext(preferWebGLVersion, options) {\n let gl;\n const canvas = this.canvas;\n if (preferWebGLVersion === 2) {\n gl = canvas.getContext(\"webgl2\", options);\n }\n if (!gl) {\n gl = canvas.getContext(\"webgl\", options);\n if (!gl) {\n throw new Error(\"This browser does not support WebGL. Try using the canvas renderer\");\n }\n }\n this.gl = gl;\n this.initFromContext(this.gl);\n }\n /** Auto-populate the {@link GlContextSystem.extensions extensions}. */\n getExtensions() {\n const { gl } = this;\n const common = {\n anisotropicFiltering: gl.getExtension(\"EXT_texture_filter_anisotropic\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n s3tc: gl.getExtension(\"WEBGL_compressed_texture_s3tc\"),\n s3tc_sRGB: gl.getExtension(\"WEBGL_compressed_texture_s3tc_srgb\"),\n // eslint-disable-line camelcase\n etc: gl.getExtension(\"WEBGL_compressed_texture_etc\"),\n etc1: gl.getExtension(\"WEBGL_compressed_texture_etc1\"),\n pvrtc: gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\"),\n atc: gl.getExtension(\"WEBGL_compressed_texture_atc\"),\n astc: gl.getExtension(\"WEBGL_compressed_texture_astc\"),\n bptc: gl.getExtension(\"EXT_texture_compression_bptc\"),\n rgtc: gl.getExtension(\"EXT_texture_compression_rgtc\"),\n loseContext: gl.getExtension(\"WEBGL_lose_context\")\n };\n if (this.webGLVersion === 1) {\n this.extensions = {\n ...common,\n drawBuffers: gl.getExtension(\"WEBGL_draw_buffers\"),\n depthTexture: gl.getExtension(\"WEBGL_depth_texture\"),\n vertexArrayObject: gl.getExtension(\"OES_vertex_array_object\") || gl.getExtension(\"MOZ_OES_vertex_array_object\") || gl.getExtension(\"WEBKIT_OES_vertex_array_object\"),\n uint32ElementIndex: gl.getExtension(\"OES_element_index_uint\"),\n // Floats and half-floats\n floatTexture: gl.getExtension(\"OES_texture_float\"),\n floatTextureLinear: gl.getExtension(\"OES_texture_float_linear\"),\n textureHalfFloat: gl.getExtension(\"OES_texture_half_float\"),\n textureHalfFloatLinear: gl.getExtension(\"OES_texture_half_float_linear\"),\n vertexAttribDivisorANGLE: gl.getExtension(\"ANGLE_instanced_arrays\"),\n srgb: gl.getExtension(\"EXT_sRGB\")\n };\n } else {\n this.extensions = {\n ...common,\n colorBufferFloat: gl.getExtension(\"EXT_color_buffer_float\")\n };\n const provokeExt = gl.getExtension(\"WEBGL_provoking_vertex\");\n if (provokeExt) {\n provokeExt.provokingVertexWEBGL(provokeExt.FIRST_VERTEX_CONVENTION_WEBGL);\n }\n }\n }\n /**\n * Handles a lost webgl context\n * @param {WebGLContextEvent} event - The context lost event.\n */\n handleContextLost(event) {\n event.preventDefault();\n if (this._contextLossForced) {\n this._contextLossForced = false;\n setTimeout(() => {\n if (this.gl.isContextLost()) {\n this.extensions.loseContext?.restoreContext();\n }\n }, 0);\n }\n }\n /** Handles a restored webgl context. */\n handleContextRestored() {\n this.getExtensions();\n this._renderer.runners.contextChange.emit(this.gl);\n }\n destroy() {\n const element = this._renderer.view.canvas;\n this._renderer = null;\n element.removeEventListener(\"webglcontextlost\", this.handleContextLost);\n element.removeEventListener(\"webglcontextrestored\", this.handleContextRestored);\n this.gl.useProgram(null);\n this.extensions.loseContext?.loseContext();\n }\n /**\n * this function can be called to force a webGL context loss\n * this will release all resources on the GPU.\n * Useful if you need to put Pixi to sleep, and save some GPU memory\n *\n * As soon as render is called - all resources will be created again.\n */\n forceContextLoss() {\n this.extensions.loseContext?.loseContext();\n this._contextLossForced = true;\n }\n /**\n * Validate context.\n * @param {WebGLRenderingContext} gl - Render context.\n */\n validateContext(gl) {\n const attributes = gl.getContextAttributes();\n if (attributes && !attributes.stencil) {\n warn(\"Provided WebGL context does not have a stencil buffer, masks may not render correctly\");\n }\n const supports = this.supports;\n const isWebGl2 = this.webGLVersion === 2;\n const extensions = this.extensions;\n supports.uint32Indices = isWebGl2 || !!extensions.uint32ElementIndex;\n supports.uniformBufferObject = isWebGl2;\n supports.vertexArrayObject = isWebGl2 || !!extensions.vertexArrayObject;\n supports.srgbTextures = isWebGl2 || !!extensions.srgb;\n supports.nonPowOf2wrapping = isWebGl2;\n supports.nonPowOf2mipmaps = isWebGl2;\n supports.msaa = isWebGl2;\n if (!supports.uint32Indices) {\n warn(\"Provided WebGL context does not support 32 index buffer, large scenes may not render correctly\");\n }\n }\n};\n/** @ignore */\n_GlContextSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"context\"\n};\n/** The default options for the system. */\n_GlContextSystem.defaultOptions = {\n /**\n * {@link WebGLOptions.context}\n * @default null\n */\n context: null,\n /**\n * {@link WebGLOptions.premultipliedAlpha}\n * @default true\n */\n premultipliedAlpha: true,\n /**\n * {@link WebGLOptions.preserveDrawingBuffer}\n * @default false\n */\n preserveDrawingBuffer: false,\n /**\n * {@link WebGLOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * {@link WebGLOptions.webGLVersion}\n * @default 2\n */\n preferWebGLVersion: 2,\n /**\n * {@link WebGLOptions.multiView}\n * @default false\n */\n multiView: false\n};\nlet GlContextSystem = _GlContextSystem;\n\nexport { GlContextSystem };\n//# sourceMappingURL=GlContextSystem.mjs.map\n","\"use strict\";\nvar GL_FORMATS = /* @__PURE__ */ ((GL_FORMATS2) => {\n GL_FORMATS2[GL_FORMATS2[\"RGBA\"] = 6408] = \"RGBA\";\n GL_FORMATS2[GL_FORMATS2[\"RGB\"] = 6407] = \"RGB\";\n GL_FORMATS2[GL_FORMATS2[\"RG\"] = 33319] = \"RG\";\n GL_FORMATS2[GL_FORMATS2[\"RED\"] = 6403] = \"RED\";\n GL_FORMATS2[GL_FORMATS2[\"RGBA_INTEGER\"] = 36249] = \"RGBA_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RGB_INTEGER\"] = 36248] = \"RGB_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RG_INTEGER\"] = 33320] = \"RG_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"RED_INTEGER\"] = 36244] = \"RED_INTEGER\";\n GL_FORMATS2[GL_FORMATS2[\"ALPHA\"] = 6406] = \"ALPHA\";\n GL_FORMATS2[GL_FORMATS2[\"LUMINANCE\"] = 6409] = \"LUMINANCE\";\n GL_FORMATS2[GL_FORMATS2[\"LUMINANCE_ALPHA\"] = 6410] = \"LUMINANCE_ALPHA\";\n GL_FORMATS2[GL_FORMATS2[\"DEPTH_COMPONENT\"] = 6402] = \"DEPTH_COMPONENT\";\n GL_FORMATS2[GL_FORMATS2[\"DEPTH_STENCIL\"] = 34041] = \"DEPTH_STENCIL\";\n return GL_FORMATS2;\n})(GL_FORMATS || {});\nvar GL_TARGETS = /* @__PURE__ */ ((GL_TARGETS2) => {\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_2D\"] = 3553] = \"TEXTURE_2D\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP\"] = 34067] = \"TEXTURE_CUBE_MAP\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_2D_ARRAY\"] = 35866] = \"TEXTURE_2D_ARRAY\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_X\"] = 34069] = \"TEXTURE_CUBE_MAP_POSITIVE_X\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_X\"] = 34070] = \"TEXTURE_CUBE_MAP_NEGATIVE_X\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Y\"] = 34071] = \"TEXTURE_CUBE_MAP_POSITIVE_Y\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Y\"] = 34072] = \"TEXTURE_CUBE_MAP_NEGATIVE_Y\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_POSITIVE_Z\"] = 34073] = \"TEXTURE_CUBE_MAP_POSITIVE_Z\";\n GL_TARGETS2[GL_TARGETS2[\"TEXTURE_CUBE_MAP_NEGATIVE_Z\"] = 34074] = \"TEXTURE_CUBE_MAP_NEGATIVE_Z\";\n return GL_TARGETS2;\n})(GL_TARGETS || {});\nvar GL_WRAP_MODES = /* @__PURE__ */ ((GL_WRAP_MODES2) => {\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"CLAMP\"] = 33071] = \"CLAMP\";\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"REPEAT\"] = 10497] = \"REPEAT\";\n GL_WRAP_MODES2[GL_WRAP_MODES2[\"MIRRORED_REPEAT\"] = 33648] = \"MIRRORED_REPEAT\";\n return GL_WRAP_MODES2;\n})(GL_WRAP_MODES || {});\nvar GL_TYPES = /* @__PURE__ */ ((GL_TYPES2) => {\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_BYTE\"] = 5121] = \"UNSIGNED_BYTE\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT\"] = 5123] = \"UNSIGNED_SHORT\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_5_6_5\"] = 33635] = \"UNSIGNED_SHORT_5_6_5\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_4_4_4_4\"] = 32819] = \"UNSIGNED_SHORT_4_4_4_4\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_SHORT_5_5_5_1\"] = 32820] = \"UNSIGNED_SHORT_5_5_5_1\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT\"] = 5125] = \"UNSIGNED_INT\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_10F_11F_11F_REV\"] = 35899] = \"UNSIGNED_INT_10F_11F_11F_REV\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_2_10_10_10_REV\"] = 33640] = \"UNSIGNED_INT_2_10_10_10_REV\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_24_8\"] = 34042] = \"UNSIGNED_INT_24_8\";\n GL_TYPES2[GL_TYPES2[\"UNSIGNED_INT_5_9_9_9_REV\"] = 35902] = \"UNSIGNED_INT_5_9_9_9_REV\";\n GL_TYPES2[GL_TYPES2[\"BYTE\"] = 5120] = \"BYTE\";\n GL_TYPES2[GL_TYPES2[\"SHORT\"] = 5122] = \"SHORT\";\n GL_TYPES2[GL_TYPES2[\"INT\"] = 5124] = \"INT\";\n GL_TYPES2[GL_TYPES2[\"FLOAT\"] = 5126] = \"FLOAT\";\n GL_TYPES2[GL_TYPES2[\"FLOAT_32_UNSIGNED_INT_24_8_REV\"] = 36269] = \"FLOAT_32_UNSIGNED_INT_24_8_REV\";\n GL_TYPES2[GL_TYPES2[\"HALF_FLOAT\"] = 36193] = \"HALF_FLOAT\";\n return GL_TYPES2;\n})(GL_TYPES || {});\n\nexport { GL_FORMATS, GL_TARGETS, GL_TYPES, GL_WRAP_MODES };\n//# sourceMappingURL=const.mjs.map\n","import { GL_TYPES } from '../../texture/const.mjs';\n\n\"use strict\";\nconst infoMap = {\n uint8x2: GL_TYPES.UNSIGNED_BYTE,\n uint8x4: GL_TYPES.UNSIGNED_BYTE,\n sint8x2: GL_TYPES.BYTE,\n sint8x4: GL_TYPES.BYTE,\n unorm8x2: GL_TYPES.UNSIGNED_BYTE,\n unorm8x4: GL_TYPES.UNSIGNED_BYTE,\n snorm8x2: GL_TYPES.BYTE,\n snorm8x4: GL_TYPES.BYTE,\n uint16x2: GL_TYPES.UNSIGNED_SHORT,\n uint16x4: GL_TYPES.UNSIGNED_SHORT,\n sint16x2: GL_TYPES.SHORT,\n sint16x4: GL_TYPES.SHORT,\n unorm16x2: GL_TYPES.UNSIGNED_SHORT,\n unorm16x4: GL_TYPES.UNSIGNED_SHORT,\n snorm16x2: GL_TYPES.SHORT,\n snorm16x4: GL_TYPES.SHORT,\n float16x2: GL_TYPES.HALF_FLOAT,\n float16x4: GL_TYPES.HALF_FLOAT,\n float32: GL_TYPES.FLOAT,\n float32x2: GL_TYPES.FLOAT,\n float32x3: GL_TYPES.FLOAT,\n float32x4: GL_TYPES.FLOAT,\n uint32: GL_TYPES.UNSIGNED_INT,\n uint32x2: GL_TYPES.UNSIGNED_INT,\n uint32x3: GL_TYPES.UNSIGNED_INT,\n uint32x4: GL_TYPES.UNSIGNED_INT,\n sint32: GL_TYPES.INT,\n sint32x2: GL_TYPES.INT,\n sint32x3: GL_TYPES.INT,\n sint32x4: GL_TYPES.INT\n};\nfunction getGlTypeFromFormat(format) {\n return infoMap[format] ?? infoMap.float32;\n}\n\nexport { getGlTypeFromFormat };\n//# sourceMappingURL=getGlTypeFromFormat.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { getAttributeInfoFromFormat } from '../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { ensureAttributes } from '../shader/program/ensureAttributes.mjs';\nimport { getGlTypeFromFormat } from './utils/getGlTypeFromFormat.mjs';\n\n\"use strict\";\nconst topologyToGlMap = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 3,\n \"triangle-list\": 4,\n \"triangle-strip\": 5\n};\nclass GlGeometrySystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n this._geometryVaoHash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n this._activeGeometry = null;\n this._activeVao = null;\n this.hasVao = true;\n this.hasInstance = true;\n this._renderer.renderableGC.addManagedHash(this, \"_geometryVaoHash\");\n }\n /** Sets up the renderer context and necessary buffers. */\n contextChange() {\n const gl = this.gl = this._renderer.gl;\n if (!this._renderer.context.supports.vertexArrayObject) {\n throw new Error(\"[PixiJS] Vertex Array Objects are not supported on this device\");\n }\n const nativeVaoExtension = this._renderer.context.extensions.vertexArrayObject;\n if (nativeVaoExtension) {\n gl.createVertexArray = () => nativeVaoExtension.createVertexArrayOES();\n gl.bindVertexArray = (vao) => nativeVaoExtension.bindVertexArrayOES(vao);\n gl.deleteVertexArray = (vao) => nativeVaoExtension.deleteVertexArrayOES(vao);\n }\n const nativeInstancedExtension = this._renderer.context.extensions.vertexAttribDivisorANGLE;\n if (nativeInstancedExtension) {\n gl.drawArraysInstanced = (a, b, c, d) => {\n nativeInstancedExtension.drawArraysInstancedANGLE(a, b, c, d);\n };\n gl.drawElementsInstanced = (a, b, c, d, e) => {\n nativeInstancedExtension.drawElementsInstancedANGLE(a, b, c, d, e);\n };\n gl.vertexAttribDivisor = (a, b) => nativeInstancedExtension.vertexAttribDivisorANGLE(a, b);\n }\n this._activeGeometry = null;\n this._activeVao = null;\n this._geometryVaoHash = /* @__PURE__ */ Object.create(null);\n }\n /**\n * Binds geometry so that is can be drawn. Creating a Vao if required\n * @param geometry - Instance of geometry to bind.\n * @param program - Instance of program to use vao for.\n */\n bind(geometry, program) {\n const gl = this.gl;\n this._activeGeometry = geometry;\n const vao = this.getVao(geometry, program);\n if (this._activeVao !== vao) {\n this._activeVao = vao;\n gl.bindVertexArray(vao);\n }\n this.updateBuffers();\n }\n /** Reset and unbind any active VAO and geometry. */\n resetState() {\n this.unbind();\n }\n /** Update buffers of the currently bound geometry. */\n updateBuffers() {\n const geometry = this._activeGeometry;\n const bufferSystem = this._renderer.buffer;\n for (let i = 0; i < geometry.buffers.length; i++) {\n const buffer = geometry.buffers[i];\n bufferSystem.updateBuffer(buffer);\n }\n }\n /**\n * Check compatibility between a geometry and a program\n * @param geometry - Geometry instance.\n * @param program - Program instance.\n */\n checkCompatibility(geometry, program) {\n const geometryAttributes = geometry.attributes;\n const shaderAttributes = program._attributeData;\n for (const j in shaderAttributes) {\n if (!geometryAttributes[j]) {\n throw new Error(`shader and geometry incompatible, geometry missing the \"${j}\" attribute`);\n }\n }\n }\n /**\n * Takes a geometry and program and generates a unique signature for them.\n * @param geometry - To get signature from.\n * @param program - To test geometry against.\n * @returns - Unique signature of the geometry and program\n */\n getSignature(geometry, program) {\n const attribs = geometry.attributes;\n const shaderAttributes = program._attributeData;\n const strings = [\"g\", geometry.uid];\n for (const i in attribs) {\n if (shaderAttributes[i]) {\n strings.push(i, shaderAttributes[i].location);\n }\n }\n return strings.join(\"-\");\n }\n getVao(geometry, program) {\n return this._geometryVaoHash[geometry.uid]?.[program._key] || this.initGeometryVao(geometry, program);\n }\n /**\n * Creates or gets Vao with the same structure as the geometry and stores it on the geometry.\n * If vao is created, it is bound automatically. We use a shader to infer what and how to set up the\n * attribute locations.\n * @param geometry - Instance of geometry to to generate Vao for.\n * @param program\n * @param _incRefCount - Increment refCount of all geometry buffers.\n */\n initGeometryVao(geometry, program, _incRefCount = true) {\n const gl = this._renderer.gl;\n const bufferSystem = this._renderer.buffer;\n this._renderer.shader._getProgramData(program);\n this.checkCompatibility(geometry, program);\n const signature = this.getSignature(geometry, program);\n if (!this._geometryVaoHash[geometry.uid]) {\n this._geometryVaoHash[geometry.uid] = /* @__PURE__ */ Object.create(null);\n geometry.on(\"destroy\", this.onGeometryDestroy, this);\n }\n const vaoObjectHash = this._geometryVaoHash[geometry.uid];\n let vao = vaoObjectHash[signature];\n if (vao) {\n vaoObjectHash[program._key] = vao;\n return vao;\n }\n ensureAttributes(geometry, program._attributeData);\n const buffers = geometry.buffers;\n vao = gl.createVertexArray();\n gl.bindVertexArray(vao);\n for (let i = 0; i < buffers.length; i++) {\n const buffer = buffers[i];\n bufferSystem.bind(buffer);\n }\n this.activateVao(geometry, program);\n vaoObjectHash[program._key] = vao;\n vaoObjectHash[signature] = vao;\n gl.bindVertexArray(null);\n return vao;\n }\n /**\n * Disposes geometry.\n * @param geometry - Geometry with buffers. Only VAO will be disposed\n * @param [contextLost=false] - If context was lost, we suppress deleteVertexArray\n */\n onGeometryDestroy(geometry, contextLost) {\n const vaoObjectHash = this._geometryVaoHash[geometry.uid];\n const gl = this.gl;\n if (vaoObjectHash) {\n if (contextLost) {\n for (const i in vaoObjectHash) {\n if (this._activeVao !== vaoObjectHash[i]) {\n this.unbind();\n }\n gl.deleteVertexArray(vaoObjectHash[i]);\n }\n }\n this._geometryVaoHash[geometry.uid] = null;\n }\n }\n /**\n * Dispose all WebGL resources of all managed geometries.\n * @param [contextLost=false] - If context was lost, we suppress `gl.delete` calls\n */\n destroyAll(contextLost = false) {\n const gl = this.gl;\n for (const i in this._geometryVaoHash) {\n if (contextLost) {\n for (const j in this._geometryVaoHash[i]) {\n const vaoObjectHash = this._geometryVaoHash[i];\n if (this._activeVao !== vaoObjectHash) {\n this.unbind();\n }\n gl.deleteVertexArray(vaoObjectHash[j]);\n }\n }\n this._geometryVaoHash[i] = null;\n }\n }\n /**\n * Activate vertex array object.\n * @param geometry - Geometry instance.\n * @param program - Shader program instance.\n */\n activateVao(geometry, program) {\n const gl = this._renderer.gl;\n const bufferSystem = this._renderer.buffer;\n const attributes = geometry.attributes;\n if (geometry.indexBuffer) {\n bufferSystem.bind(geometry.indexBuffer);\n }\n let lastBuffer = null;\n for (const j in attributes) {\n const attribute = attributes[j];\n const buffer = attribute.buffer;\n const glBuffer = bufferSystem.getGlBuffer(buffer);\n const programAttrib = program._attributeData[j];\n if (programAttrib) {\n if (lastBuffer !== glBuffer) {\n bufferSystem.bind(buffer);\n lastBuffer = glBuffer;\n }\n const location = programAttrib.location;\n gl.enableVertexAttribArray(location);\n const attributeInfo = getAttributeInfoFromFormat(attribute.format);\n const type = getGlTypeFromFormat(attribute.format);\n if (programAttrib.format?.substring(1, 4) === \"int\") {\n gl.vertexAttribIPointer(\n location,\n attributeInfo.size,\n type,\n attribute.stride,\n attribute.offset\n );\n } else {\n gl.vertexAttribPointer(\n location,\n attributeInfo.size,\n type,\n attributeInfo.normalised,\n attribute.stride,\n attribute.offset\n );\n }\n if (attribute.instance) {\n if (this.hasInstance) {\n const divisor = attribute.divisor ?? 1;\n gl.vertexAttribDivisor(location, divisor);\n } else {\n throw new Error(\"geometry error, GPU Instancing is not supported on this device\");\n }\n }\n }\n }\n }\n /**\n * Draws the currently bound geometry.\n * @param topology - The type primitive to render.\n * @param size - The number of elements to be rendered. If not specified, all vertices after the\n * starting vertex will be drawn.\n * @param start - The starting vertex in the geometry to start drawing from. If not specified,\n * drawing will start from the first vertex.\n * @param instanceCount - The number of instances of the set of elements to execute. If not specified,\n * all instances will be drawn.\n * @returns This instance of the geometry system.\n */\n draw(topology, size, start, instanceCount) {\n const { gl } = this._renderer;\n const geometry = this._activeGeometry;\n const glTopology = topologyToGlMap[topology || geometry.topology];\n instanceCount ?? (instanceCount = geometry.instanceCount);\n if (geometry.indexBuffer) {\n const byteSize = geometry.indexBuffer.data.BYTES_PER_ELEMENT;\n const glType = byteSize === 2 ? gl.UNSIGNED_SHORT : gl.UNSIGNED_INT;\n if (instanceCount > 1) {\n gl.drawElementsInstanced(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize, instanceCount);\n } else {\n gl.drawElements(glTopology, size || geometry.indexBuffer.data.length, glType, (start || 0) * byteSize);\n }\n } else if (instanceCount > 1) {\n gl.drawArraysInstanced(glTopology, start || 0, size || geometry.getSize(), instanceCount);\n } else {\n gl.drawArrays(glTopology, start || 0, size || geometry.getSize());\n }\n return this;\n }\n /** Unbind/reset everything. */\n unbind() {\n this.gl.bindVertexArray(null);\n this._activeVao = null;\n this._activeGeometry = null;\n }\n destroy() {\n this._renderer = null;\n this.gl = null;\n this._activeVao = null;\n this._activeGeometry = null;\n }\n}\n/** @ignore */\nGlGeometrySystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"geometry\"\n};\n\nexport { GlGeometrySystem };\n//# sourceMappingURL=GlGeometrySystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\nimport { Geometry } from '../shared/geometry/Geometry.mjs';\nimport { Shader } from '../shared/shader/Shader.mjs';\nimport { State } from '../shared/state/State.mjs';\nimport { TextureSource } from '../shared/texture/sources/TextureSource.mjs';\nimport { Texture } from '../shared/texture/Texture.mjs';\nimport { GlProgram } from './shader/GlProgram.mjs';\n\n\"use strict\";\nconst bigTriangleGeometry = new Geometry({\n attributes: {\n aPosition: [\n -1,\n -1,\n // Bottom left corner\n 3,\n -1,\n // Bottom right corner, extending beyond right edge\n -1,\n 3\n // Top left corner, extending beyond top edge\n ]\n }\n});\nconst _GlBackBufferSystem = class _GlBackBufferSystem {\n constructor(renderer) {\n /** if true, the back buffer is used */\n this.useBackBuffer = false;\n this._useBackBufferThisRender = false;\n this._renderer = renderer;\n }\n init(options = {}) {\n const { useBackBuffer, antialias } = { ..._GlBackBufferSystem.defaultOptions, ...options };\n this.useBackBuffer = useBackBuffer;\n this._antialias = antialias;\n if (!this._renderer.context.supports.msaa) {\n warn(\"antialiasing, is not supported on when using the back buffer\");\n this._antialias = false;\n }\n this._state = State.for2d();\n const bigTriangleProgram = new GlProgram({\n vertex: `\n attribute vec2 aPosition;\n out vec2 vUv;\n\n void main() {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n\n vUv = (aPosition + 1.0) / 2.0;\n\n // flip dem UVs\n vUv.y = 1.0 - vUv.y;\n }`,\n fragment: `\n in vec2 vUv;\n out vec4 finalColor;\n\n uniform sampler2D uTexture;\n\n void main() {\n finalColor = texture(uTexture, vUv);\n }`,\n name: \"big-triangle\"\n });\n this._bigTriangleShader = new Shader({\n glProgram: bigTriangleProgram,\n resources: {\n uTexture: Texture.WHITE.source\n }\n });\n }\n /**\n * This is called before the RenderTargetSystem is started. This is where\n * we replace the target with the back buffer if required.\n * @param options - The options for this render.\n */\n renderStart(options) {\n const renderTarget = this._renderer.renderTarget.getRenderTarget(options.target);\n this._useBackBufferThisRender = this.useBackBuffer && !!renderTarget.isRoot;\n if (this._useBackBufferThisRender) {\n const renderTarget2 = this._renderer.renderTarget.getRenderTarget(options.target);\n this._targetTexture = renderTarget2.colorTexture;\n options.target = this._getBackBufferTexture(renderTarget2.colorTexture);\n }\n }\n renderEnd() {\n this._presentBackBuffer();\n }\n _presentBackBuffer() {\n const renderer = this._renderer;\n renderer.renderTarget.finishRenderPass();\n if (!this._useBackBufferThisRender)\n return;\n renderer.renderTarget.bind(this._targetTexture, false);\n this._bigTriangleShader.resources.uTexture = this._backBufferTexture.source;\n renderer.encoder.draw({\n geometry: bigTriangleGeometry,\n shader: this._bigTriangleShader,\n state: this._state\n });\n }\n _getBackBufferTexture(targetSourceTexture) {\n this._backBufferTexture = this._backBufferTexture || new Texture({\n source: new TextureSource({\n width: targetSourceTexture.width,\n height: targetSourceTexture.height,\n resolution: targetSourceTexture._resolution,\n antialias: this._antialias\n })\n });\n this._backBufferTexture.source.resize(\n targetSourceTexture.width,\n targetSourceTexture.height,\n targetSourceTexture._resolution\n );\n return this._backBufferTexture;\n }\n /** destroys the back buffer */\n destroy() {\n if (this._backBufferTexture) {\n this._backBufferTexture.destroy();\n this._backBufferTexture = null;\n }\n }\n};\n/** @ignore */\n_GlBackBufferSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"backBuffer\",\n priority: 1\n};\n/** default options for the back buffer system */\n_GlBackBufferSystem.defaultOptions = {\n /** if true will use the back buffer where required */\n useBackBuffer: false\n};\nlet GlBackBufferSystem = _GlBackBufferSystem;\n\nexport { GlBackBufferSystem };\n//# sourceMappingURL=GlBackBufferSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GlColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask)\n return;\n this._colorMaskCache = colorMask;\n this._renderer.gl.colorMask(\n !!(colorMask & 8),\n !!(colorMask & 4),\n !!(colorMask & 2),\n !!(colorMask & 1)\n );\n }\n}\n/** @ignore */\nGlColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GlColorMaskSystem };\n//# sourceMappingURL=GlColorMaskSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GlEncoderSystem {\n constructor(renderer) {\n this.commandFinished = Promise.resolve();\n this._renderer = renderer;\n }\n setGeometry(geometry, shader) {\n this._renderer.geometry.bind(geometry, shader.glProgram);\n }\n finishRenderPass() {\n }\n draw(options) {\n const renderer = this._renderer;\n const { geometry, shader, state, skipSync, topology: type, size, start, instanceCount } = options;\n renderer.shader.bind(shader, skipSync);\n renderer.geometry.bind(geometry, renderer.shader._activeProgram);\n if (state) {\n renderer.state.set(state);\n }\n renderer.geometry.draw(type, size, start, instanceCount ?? geometry.instanceCount);\n }\n destroy() {\n this._renderer = null;\n }\n}\n/** @ignore */\nGlEncoderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"encoder\"\n};\n\nexport { GlEncoderSystem };\n//# sourceMappingURL=GlEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { checkMaxIfStatementsInShader } from '../../batcher/gl/utils/checkMaxIfStatementsInShader.mjs';\n\n\"use strict\";\nclass GlLimitsSystem {\n constructor(renderer) {\n this._renderer = renderer;\n }\n contextChange() {\n const gl = this._renderer.gl;\n this.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n this.maxBatchableTextures = checkMaxIfStatementsInShader(this.maxTextures, gl);\n this.maxUniformBindings = gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS);\n }\n destroy() {\n }\n}\n/** @ignore */\nGlLimitsSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"limits\"\n};\n\nexport { GlLimitsSystem };\n//# sourceMappingURL=GlLimitsSystem.mjs.map\n","\"use strict\";\nclass GlRenderTarget {\n constructor() {\n this.width = -1;\n this.height = -1;\n this.msaa = false;\n this.msaaRenderBuffer = [];\n }\n}\n\nexport { GlRenderTarget };\n//# sourceMappingURL=GlRenderTarget.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuStencilModesToPixi } from '../gpu/state/GpuStencilModesToPixi.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GlStencilSystem {\n constructor(renderer) {\n this._stencilCache = {\n enabled: false,\n stencilReference: 0,\n stencilMode: STENCIL_MODES.NONE\n };\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n contextChange(gl) {\n this._gl = gl;\n this._comparisonFuncMapping = {\n always: gl.ALWAYS,\n never: gl.NEVER,\n equal: gl.EQUAL,\n \"not-equal\": gl.NOTEQUAL,\n less: gl.LESS,\n \"less-equal\": gl.LEQUAL,\n greater: gl.GREATER,\n \"greater-equal\": gl.GEQUAL\n };\n this._stencilOpsMapping = {\n keep: gl.KEEP,\n zero: gl.ZERO,\n replace: gl.REPLACE,\n invert: gl.INVERT,\n \"increment-clamp\": gl.INCR,\n \"decrement-clamp\": gl.DECR,\n \"increment-wrap\": gl.INCR_WRAP,\n \"decrement-wrap\": gl.DECR_WRAP\n };\n this.resetState();\n }\n onRenderTargetChange(renderTarget) {\n if (this._activeRenderTarget === renderTarget)\n return;\n this._activeRenderTarget = renderTarget;\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n resetState() {\n this._stencilCache.enabled = false;\n this._stencilCache.stencilMode = STENCIL_MODES.NONE;\n this._stencilCache.stencilReference = 0;\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n const gl = this._gl;\n const mode = GpuStencilModesToPixi[stencilMode];\n const _stencilCache = this._stencilCache;\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n if (stencilMode === STENCIL_MODES.DISABLED) {\n if (this._stencilCache.enabled) {\n this._stencilCache.enabled = false;\n gl.disable(gl.STENCIL_TEST);\n }\n return;\n }\n if (!this._stencilCache.enabled) {\n this._stencilCache.enabled = true;\n gl.enable(gl.STENCIL_TEST);\n }\n if (stencilMode !== _stencilCache.stencilMode || _stencilCache.stencilReference !== stencilReference) {\n _stencilCache.stencilMode = stencilMode;\n _stencilCache.stencilReference = stencilReference;\n gl.stencilFunc(this._comparisonFuncMapping[mode.stencilBack.compare], stencilReference, 255);\n gl.stencilOp(gl.KEEP, gl.KEEP, this._stencilOpsMapping[mode.stencilBack.passOp]);\n }\n }\n}\n/** @ignore */\nGlStencilSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"stencil\"\n};\n\nexport { GlStencilSystem };\n//# sourceMappingURL=GlStencilSystem.mjs.map\n","\"use strict\";\nconst WGSL_TO_STD40_SIZE = {\n f32: 4,\n i32: 4,\n \"vec2<f32>\": 8,\n \"vec3<f32>\": 12,\n \"vec4<f32>\": 16,\n \"vec2<i32>\": 8,\n \"vec3<i32>\": 12,\n \"vec4<i32>\": 16,\n \"mat2x2<f32>\": 16 * 2,\n \"mat3x3<f32>\": 16 * 3,\n \"mat4x4<f32>\": 16 * 4\n // TODO - not essential for now but support these in the future\n // int: 4,\n // ivec2: 8,\n // ivec3: 12,\n // ivec4: 16,\n // uint: 4,\n // uvec2: 8,\n // uvec3: 12,\n // uvec4: 16,\n // bool: 4,\n // bvec2: 8,\n // bvec3: 12,\n // bvec4: 16,\n // mat2: 16 * 2,\n // mat3: 16 * 3,\n // mat4: 16 * 4,\n};\nfunction createUboElementsSTD40(uniformData) {\n const uboElements = uniformData.map((data) => ({\n data,\n offset: 0,\n size: 0\n }));\n const chunkSize = 16;\n let size = 0;\n let offset = 0;\n for (let i = 0; i < uboElements.length; i++) {\n const uboElement = uboElements[i];\n size = WGSL_TO_STD40_SIZE[uboElement.data.type];\n if (!size) {\n throw new Error(`Unknown type ${uboElement.data.type}`);\n }\n if (uboElement.data.size > 1) {\n size = Math.max(size, chunkSize) * uboElement.data.size;\n }\n const boundary = size === 12 ? 16 : size;\n uboElement.size = size;\n const curOffset = offset % chunkSize;\n if (curOffset > 0 && chunkSize - curOffset < boundary) {\n offset += (chunkSize - curOffset) % 16;\n } else {\n offset += (size - curOffset % size) % size;\n }\n uboElement.offset = offset;\n offset += size;\n }\n offset = Math.ceil(offset / 16) * 16;\n return { uboElements, size: offset };\n}\n\nexport { WGSL_TO_STD40_SIZE, createUboElementsSTD40 };\n//# sourceMappingURL=createUboElementsSTD40.mjs.map\n","import { WGSL_TO_STD40_SIZE } from './createUboElementsSTD40.mjs';\n\n\"use strict\";\nfunction generateArraySyncSTD40(uboElement, offsetToAdd) {\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = uboElement.data.value.length / uboElement.data.size;\n const remainder = (4 - elementSize % 4) % 4;\n const data = uboElement.data.type.indexOf(\"i32\") >= 0 ? \"dataInt32\" : \"data\";\n return `\n v = uv.${uboElement.data.name};\n offset += ${offsetToAdd};\n\n arrayOffset = offset;\n\n t = 0;\n\n for(var i=0; i < ${uboElement.data.size * rowSize}; i++)\n {\n for(var j = 0; j < ${elementSize}; j++)\n {\n ${data}[arrayOffset++] = v[t++];\n }\n ${remainder !== 0 ? `arrayOffset += ${remainder};` : \"\"}\n }\n `;\n}\n\nexport { generateArraySyncSTD40 };\n//# sourceMappingURL=generateArraySyncSTD40.mjs.map\n","import { createUboSyncFunction } from '../../../shared/shader/utils/createUboSyncFunction.mjs';\nimport { uboSyncFunctionsSTD40 } from '../../../shared/shader/utils/uboSyncFunctions.mjs';\nimport { generateArraySyncSTD40 } from './generateArraySyncSTD40.mjs';\n\n\"use strict\";\nfunction createUboSyncFunctionSTD40(uboElements) {\n return createUboSyncFunction(\n uboElements,\n \"uboStd40\",\n generateArraySyncSTD40,\n uboSyncFunctionsSTD40\n );\n}\n\nexport { createUboSyncFunctionSTD40 };\n//# sourceMappingURL=createUboSyncSTD40.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { UboSystem } from '../shared/shader/UboSystem.mjs';\nimport { createUboElementsSTD40 } from './shader/utils/createUboElementsSTD40.mjs';\nimport { createUboSyncFunctionSTD40 } from './shader/utils/createUboSyncSTD40.mjs';\n\n\"use strict\";\nclass GlUboSystem extends UboSystem {\n constructor() {\n super({\n createUboElements: createUboElementsSTD40,\n generateUboSync: createUboSyncFunctionSTD40\n });\n }\n}\n/** @ignore */\nGlUboSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"ubo\"\n};\n\nexport { GlUboSystem };\n//# sourceMappingURL=GlUboSystem.mjs.map\n","import { Rectangle } from '../../../../maths/shapes/Rectangle.mjs';\nimport { warn } from '../../../../utils/logging/warn.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { CLEAR } from '../const.mjs';\nimport { GlRenderTarget } from '../GlRenderTarget.mjs';\n\n\"use strict\";\nclass GlRenderTargetAdaptor {\n constructor() {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n }\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n renderer.runners.contextChange.add(this);\n }\n contextChange() {\n this._clearColorCache = [0, 0, 0, 0];\n this._viewPortCache = new Rectangle();\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderTargetSystem = this._renderTargetSystem;\n const renderer = this._renderer;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(sourceRenderSurfaceTexture);\n const gl = renderer.gl;\n this.finishRenderPass(sourceRenderSurfaceTexture);\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n renderer.texture.bind(destinationTexture, 0);\n gl.copyTexSubImage2D(\n gl.TEXTURE_2D,\n 0,\n originDest.x,\n originDest.y,\n originSrc.x,\n originSrc.y,\n size.width,\n size.height\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport) {\n const renderTargetSystem = this._renderTargetSystem;\n const source = renderTarget.colorTexture;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n let viewPortY = viewport.y;\n if (renderTarget.isRoot) {\n viewPortY = source.pixelHeight - viewport.height;\n }\n renderTarget.colorTextures.forEach((texture) => {\n this._renderer.texture.unbind(texture);\n });\n const gl = this._renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, gpuRenderTarget.framebuffer);\n const viewPortCache = this._viewPortCache;\n if (viewPortCache.x !== viewport.x || viewPortCache.y !== viewPortY || viewPortCache.width !== viewport.width || viewPortCache.height !== viewport.height) {\n viewPortCache.x = viewport.x;\n viewPortCache.y = viewPortY;\n viewPortCache.width = viewport.width;\n viewPortCache.height = viewport.height;\n gl.viewport(\n viewport.x,\n viewPortY,\n viewport.width,\n viewport.height\n );\n }\n if (!gpuRenderTarget.depthStencilRenderBuffer && (renderTarget.stencil || renderTarget.depth)) {\n this._initStencil(gpuRenderTarget);\n }\n this.clear(renderTarget, clear, clearColor);\n }\n finishRenderPass(renderTarget) {\n const renderTargetSystem = this._renderTargetSystem;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (!glRenderTarget.msaa)\n return;\n const gl = this._renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.resolveTargetFramebuffer);\n gl.bindFramebuffer(gl.READ_FRAMEBUFFER, glRenderTarget.framebuffer);\n gl.blitFramebuffer(\n 0,\n 0,\n glRenderTarget.width,\n glRenderTarget.height,\n 0,\n 0,\n glRenderTarget.width,\n glRenderTarget.height,\n gl.COLOR_BUFFER_BIT,\n gl.NEAREST\n );\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenderTarget.framebuffer);\n }\n initGpuRenderTarget(renderTarget) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const glRenderTarget = new GlRenderTarget();\n const colorTexture = renderTarget.colorTexture;\n if (colorTexture instanceof CanvasSource) {\n this._renderer.context.ensureCanvasSize(renderTarget.colorTexture.resource);\n glRenderTarget.framebuffer = null;\n return glRenderTarget;\n }\n this._initColor(renderTarget, glRenderTarget);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return glRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n const gl = this._renderer.gl;\n if (gpuRenderTarget.framebuffer) {\n gl.deleteFramebuffer(gpuRenderTarget.framebuffer);\n gpuRenderTarget.framebuffer = null;\n }\n if (gpuRenderTarget.resolveTargetFramebuffer) {\n gl.deleteFramebuffer(gpuRenderTarget.resolveTargetFramebuffer);\n gpuRenderTarget.resolveTargetFramebuffer = null;\n }\n if (gpuRenderTarget.depthStencilRenderBuffer) {\n gl.deleteRenderbuffer(gpuRenderTarget.depthStencilRenderBuffer);\n gpuRenderTarget.depthStencilRenderBuffer = null;\n }\n gpuRenderTarget.msaaRenderBuffer.forEach((renderBuffer) => {\n gl.deleteRenderbuffer(renderBuffer);\n });\n gpuRenderTarget.msaaRenderBuffer = null;\n }\n clear(_renderTarget, clear, clearColor) {\n if (!clear)\n return;\n const renderTargetSystem = this._renderTargetSystem;\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const gl = this._renderer.gl;\n if (clear & CLEAR.COLOR) {\n clearColor ?? (clearColor = renderTargetSystem.defaultClearColor);\n const clearColorCache = this._clearColorCache;\n const clearColorArray = clearColor;\n if (clearColorCache[0] !== clearColorArray[0] || clearColorCache[1] !== clearColorArray[1] || clearColorCache[2] !== clearColorArray[2] || clearColorCache[3] !== clearColorArray[3]) {\n clearColorCache[0] = clearColorArray[0];\n clearColorCache[1] = clearColorArray[1];\n clearColorCache[2] = clearColorArray[2];\n clearColorCache[3] = clearColorArray[3];\n gl.clearColor(clearColorArray[0], clearColorArray[1], clearColorArray[2], clearColorArray[3]);\n }\n }\n gl.clear(clear);\n }\n resizeGpuRenderTarget(renderTarget) {\n if (renderTarget.isRoot)\n return;\n const renderTargetSystem = this._renderTargetSystem;\n const glRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n this._resizeColor(renderTarget, glRenderTarget);\n if (renderTarget.stencil || renderTarget.depth) {\n this._resizeStencil(glRenderTarget);\n }\n }\n _initColor(renderTarget, glRenderTarget) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const resolveTargetFramebuffer = gl.createFramebuffer();\n glRenderTarget.resolveTargetFramebuffer = resolveTargetFramebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, resolveTargetFramebuffer);\n glRenderTarget.width = renderTarget.colorTexture.source.pixelWidth;\n glRenderTarget.height = renderTarget.colorTexture.source.pixelHeight;\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const source = colorTexture.source;\n if (source.antialias) {\n if (renderer.context.supports.msaa) {\n glRenderTarget.msaa = true;\n } else {\n warn(\"[RenderTexture] Antialiasing on textures is not supported in WebGL1\");\n }\n }\n renderer.texture.bindSource(source, 0);\n const glSource = renderer.texture.getGlSource(source);\n const glTexture = glSource.texture;\n gl.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n 3553,\n // texture.target,\n glTexture,\n 0\n );\n });\n if (glRenderTarget.msaa) {\n const viewFramebuffer = gl.createFramebuffer();\n glRenderTarget.framebuffer = viewFramebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n renderTarget.colorTextures.forEach((_, i) => {\n const msaaRenderBuffer = gl.createRenderbuffer();\n glRenderTarget.msaaRenderBuffer[i] = msaaRenderBuffer;\n });\n } else {\n glRenderTarget.framebuffer = resolveTargetFramebuffer;\n }\n this._resizeColor(renderTarget, glRenderTarget);\n }\n _resizeColor(renderTarget, glRenderTarget) {\n const source = renderTarget.colorTexture.source;\n glRenderTarget.width = source.pixelWidth;\n glRenderTarget.height = source.pixelHeight;\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (i === 0)\n return;\n colorTexture.source.resize(source.width, source.height, source._resolution);\n });\n if (glRenderTarget.msaa) {\n const renderer = this._renderer;\n const gl = renderer.gl;\n const viewFramebuffer = glRenderTarget.framebuffer;\n gl.bindFramebuffer(gl.FRAMEBUFFER, viewFramebuffer);\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const source2 = colorTexture.source;\n renderer.texture.bindSource(source2, 0);\n const glSource = renderer.texture.getGlSource(source2);\n const glInternalFormat = glSource.internalFormat;\n const msaaRenderBuffer = glRenderTarget.msaaRenderBuffer[i];\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n glInternalFormat,\n source2.pixelWidth,\n source2.pixelHeight\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0 + i,\n gl.RENDERBUFFER,\n msaaRenderBuffer\n );\n });\n }\n }\n _initStencil(glRenderTarget) {\n if (glRenderTarget.framebuffer === null)\n return;\n const gl = this._renderer.gl;\n const depthStencilRenderBuffer = gl.createRenderbuffer();\n glRenderTarget.depthStencilRenderBuffer = depthStencilRenderBuffer;\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_STENCIL_ATTACHMENT,\n gl.RENDERBUFFER,\n depthStencilRenderBuffer\n );\n this._resizeStencil(glRenderTarget);\n }\n _resizeStencil(glRenderTarget) {\n const gl = this._renderer.gl;\n gl.bindRenderbuffer(\n gl.RENDERBUFFER,\n glRenderTarget.depthStencilRenderBuffer\n );\n if (glRenderTarget.msaa) {\n gl.renderbufferStorageMultisample(\n gl.RENDERBUFFER,\n 4,\n gl.DEPTH24_STENCIL8,\n glRenderTarget.width,\n glRenderTarget.height\n );\n } else {\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n this._renderer.context.webGLVersion === 2 ? gl.DEPTH24_STENCIL8 : gl.DEPTH_STENCIL,\n glRenderTarget.width,\n glRenderTarget.height\n );\n }\n }\n prerender(renderTarget) {\n const resource = renderTarget.colorTexture.resource;\n if (this._renderer.context.multiView && CanvasSource.test(resource)) {\n this._renderer.context.ensureCanvasSize(resource);\n }\n }\n postrender(renderTarget) {\n if (!this._renderer.context.multiView)\n return;\n if (CanvasSource.test(renderTarget.colorTexture.resource)) {\n const contextCanvas = this._renderer.context.canvas;\n const canvasSource = renderTarget.colorTexture;\n canvasSource.context2D.drawImage(\n contextCanvas,\n 0,\n canvasSource.pixelHeight - contextCanvas.height\n );\n }\n }\n}\n\nexport { GlRenderTargetAdaptor };\n//# sourceMappingURL=GlRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GlRenderTargetAdaptor } from './GlRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GlRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GlRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGlRenderTargetSystem.extension = {\n type: [ExtensionType.WebGLSystem],\n name: \"renderTarget\"\n};\n\nexport { GlRenderTargetSystem };\n//# sourceMappingURL=GlRenderTargetSystem.mjs.map\n","import { BufferResource } from '../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../shared/shader/UniformGroup.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\n\n\"use strict\";\nfunction generateShaderSyncCode(shader, shaderSystem) {\n const funcFragments = [];\n const headerFragments = [`\n var g = s.groups;\n var sS = r.shader;\n var p = s.glProgram;\n var ugS = r.uniformGroup;\n var resources;\n `];\n let addedTextreSystem = false;\n let textureCount = 0;\n const programData = shaderSystem._getProgramData(shader.glProgram);\n for (const i in shader.groups) {\n const group = shader.groups[i];\n funcFragments.push(`\n resources = g[${i}].resources;\n `);\n for (const j in group.resources) {\n const resource = group.resources[j];\n if (resource instanceof UniformGroup) {\n if (resource.ubo) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else {\n funcFragments.push(`\n ugS.updateUniformGroup(resources[${j}], p, sD);\n `);\n }\n } else if (resource instanceof BufferResource) {\n const resName = shader._uniformBindMap[i][Number(j)];\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n } else if (resource instanceof TextureSource) {\n const uniformName = shader._uniformBindMap[i][j];\n const uniformData = programData.uniformData[uniformName];\n if (uniformData) {\n if (!addedTextreSystem) {\n addedTextreSystem = true;\n headerFragments.push(`\n var tS = r.texture;\n `);\n }\n shaderSystem._gl.uniform1i(uniformData.location, textureCount);\n funcFragments.push(`\n tS.bind(resources[${j}], ${textureCount});\n `);\n textureCount++;\n }\n }\n }\n }\n const functionSource = [...headerFragments, ...funcFragments].join(\"\\n\");\n return new Function(\"r\", \"s\", \"sD\", functionSource);\n}\n\nexport { generateShaderSyncCode };\n//# sourceMappingURL=GenerateShaderSyncCode.mjs.map\n","\"use strict\";\nclass IGLUniformData {\n}\nclass GlProgramData {\n /**\n * Makes a new Pixi program.\n * @param program - webgl program\n * @param uniformData - uniforms\n */\n constructor(program, uniformData) {\n this.program = program;\n this.uniformData = uniformData;\n this.uniformGroups = {};\n this.uniformDirtyGroups = {};\n this.uniformBlockBindings = {};\n }\n /** Destroys this program. */\n destroy() {\n this.uniformData = null;\n this.uniformGroups = null;\n this.uniformDirtyGroups = null;\n this.uniformBlockBindings = null;\n this.program = null;\n }\n}\n\nexport { GlProgramData, IGLUniformData };\n//# sourceMappingURL=GlProgramData.mjs.map\n","\"use strict\";\nfunction compileShader(gl, type, src) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, src);\n gl.compileShader(shader);\n return shader;\n}\n\nexport { compileShader };\n//# sourceMappingURL=compileShader.mjs.map\n","\"use strict\";\nfunction booleanArray(size) {\n const array = new Array(size);\n for (let i = 0; i < array.length; i++) {\n array[i] = false;\n }\n return array;\n}\nfunction defaultValue(type, size) {\n switch (type) {\n case \"float\":\n return 0;\n case \"vec2\":\n return new Float32Array(2 * size);\n case \"vec3\":\n return new Float32Array(3 * size);\n case \"vec4\":\n return new Float32Array(4 * size);\n case \"int\":\n case \"uint\":\n case \"sampler2D\":\n case \"sampler2DArray\":\n return 0;\n case \"ivec2\":\n return new Int32Array(2 * size);\n case \"ivec3\":\n return new Int32Array(3 * size);\n case \"ivec4\":\n return new Int32Array(4 * size);\n case \"uvec2\":\n return new Uint32Array(2 * size);\n case \"uvec3\":\n return new Uint32Array(3 * size);\n case \"uvec4\":\n return new Uint32Array(4 * size);\n case \"bool\":\n return false;\n case \"bvec2\":\n return booleanArray(2 * size);\n case \"bvec3\":\n return booleanArray(3 * size);\n case \"bvec4\":\n return booleanArray(4 * size);\n case \"mat2\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 1\n ]);\n case \"mat3\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 1\n ]);\n case \"mat4\":\n return new Float32Array([\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 1\n ]);\n }\n return null;\n}\n\nexport { defaultValue };\n//# sourceMappingURL=defaultValue.mjs.map\n","\"use strict\";\nlet GL_TABLE = null;\nconst GL_TO_GLSL_TYPES = {\n FLOAT: \"float\",\n FLOAT_VEC2: \"vec2\",\n FLOAT_VEC3: \"vec3\",\n FLOAT_VEC4: \"vec4\",\n INT: \"int\",\n INT_VEC2: \"ivec2\",\n INT_VEC3: \"ivec3\",\n INT_VEC4: \"ivec4\",\n UNSIGNED_INT: \"uint\",\n UNSIGNED_INT_VEC2: \"uvec2\",\n UNSIGNED_INT_VEC3: \"uvec3\",\n UNSIGNED_INT_VEC4: \"uvec4\",\n BOOL: \"bool\",\n BOOL_VEC2: \"bvec2\",\n BOOL_VEC3: \"bvec3\",\n BOOL_VEC4: \"bvec4\",\n FLOAT_MAT2: \"mat2\",\n FLOAT_MAT3: \"mat3\",\n FLOAT_MAT4: \"mat4\",\n SAMPLER_2D: \"sampler2D\",\n INT_SAMPLER_2D: \"sampler2D\",\n UNSIGNED_INT_SAMPLER_2D: \"sampler2D\",\n SAMPLER_CUBE: \"samplerCube\",\n INT_SAMPLER_CUBE: \"samplerCube\",\n UNSIGNED_INT_SAMPLER_CUBE: \"samplerCube\",\n SAMPLER_2D_ARRAY: \"sampler2DArray\",\n INT_SAMPLER_2D_ARRAY: \"sampler2DArray\",\n UNSIGNED_INT_SAMPLER_2D_ARRAY: \"sampler2DArray\"\n};\nconst GLSL_TO_VERTEX_TYPES = {\n float: \"float32\",\n vec2: \"float32x2\",\n vec3: \"float32x3\",\n vec4: \"float32x4\",\n int: \"sint32\",\n ivec2: \"sint32x2\",\n ivec3: \"sint32x3\",\n ivec4: \"sint32x4\",\n uint: \"uint32\",\n uvec2: \"uint32x2\",\n uvec3: \"uint32x3\",\n uvec4: \"uint32x4\",\n bool: \"uint32\",\n bvec2: \"uint32x2\",\n bvec3: \"uint32x3\",\n bvec4: \"uint32x4\"\n};\nfunction mapType(gl, type) {\n if (!GL_TABLE) {\n const typeNames = Object.keys(GL_TO_GLSL_TYPES);\n GL_TABLE = {};\n for (let i = 0; i < typeNames.length; ++i) {\n const tn = typeNames[i];\n GL_TABLE[gl[tn]] = GL_TO_GLSL_TYPES[tn];\n }\n }\n return GL_TABLE[type];\n}\nfunction mapGlToVertexFormat(gl, type) {\n const typeValue = mapType(gl, type);\n return GLSL_TO_VERTEX_TYPES[typeValue] || \"float32\";\n}\n\nexport { mapGlToVertexFormat, mapType };\n//# sourceMappingURL=mapType.mjs.map\n","import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs';\nimport { mapGlToVertexFormat } from './mapType.mjs';\n\n\"use strict\";\nfunction extractAttributesFromGlProgram(program, gl, sortAttributes = false) {\n const attributes = {};\n const totalAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n for (let i = 0; i < totalAttributes; i++) {\n const attribData = gl.getActiveAttrib(program, i);\n if (attribData.name.startsWith(\"gl_\")) {\n continue;\n }\n const format = mapGlToVertexFormat(gl, attribData.type);\n attributes[attribData.name] = {\n location: 0,\n // set further down..\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0\n };\n }\n const keys = Object.keys(attributes);\n if (sortAttributes) {\n keys.sort((a, b) => a > b ? 1 : -1);\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = i;\n gl.bindAttribLocation(program, i, keys[i]);\n }\n gl.linkProgram(program);\n } else {\n for (let i = 0; i < keys.length; i++) {\n attributes[keys[i]].location = gl.getAttribLocation(program, keys[i]);\n }\n }\n return attributes;\n}\n\nexport { extractAttributesFromGlProgram };\n//# sourceMappingURL=extractAttributesFromGlProgram.mjs.map\n","\"use strict\";\nfunction getUboData(program, gl) {\n if (!gl.ACTIVE_UNIFORM_BLOCKS)\n return {};\n const uniformBlocks = {};\n const totalUniformsBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let i = 0; i < totalUniformsBlocks; i++) {\n const name = gl.getActiveUniformBlockName(program, i);\n const uniformBlockIndex = gl.getUniformBlockIndex(program, name);\n const size = gl.getActiveUniformBlockParameter(program, i, gl.UNIFORM_BLOCK_DATA_SIZE);\n uniformBlocks[name] = {\n name,\n index: uniformBlockIndex,\n size\n };\n }\n return uniformBlocks;\n}\n\nexport { getUboData };\n//# sourceMappingURL=getUboData.mjs.map\n","import { defaultValue } from './defaultValue.mjs';\nimport { mapType } from './mapType.mjs';\n\n\"use strict\";\nfunction getUniformData(program, gl) {\n const uniforms = {};\n const totalUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < totalUniforms; i++) {\n const uniformData = gl.getActiveUniform(program, i);\n const name = uniformData.name.replace(/\\[.*?\\]$/, \"\");\n const isArray = !!uniformData.name.match(/\\[.*?\\]$/);\n const type = mapType(gl, uniformData.type);\n uniforms[name] = {\n name,\n index: i,\n type,\n size: uniformData.size,\n isArray,\n value: defaultValue(type, uniformData.size)\n };\n }\n return uniforms;\n}\n\nexport { getUniformData };\n//# sourceMappingURL=getUniformData.mjs.map\n","\"use strict\";\nfunction logPrettyShaderError(gl, shader) {\n const shaderSrc = gl.getShaderSource(shader).split(\"\\n\").map((line, index) => `${index}: ${line}`);\n const shaderLog = gl.getShaderInfoLog(shader);\n const splitShader = shaderLog.split(\"\\n\");\n const dedupe = {};\n const lineNumbers = splitShader.map((line) => parseFloat(line.replace(/^ERROR\\: 0\\:([\\d]+)\\:.*$/, \"$1\"))).filter((n) => {\n if (n && !dedupe[n]) {\n dedupe[n] = true;\n return true;\n }\n return false;\n });\n const logArgs = [\"\"];\n lineNumbers.forEach((number) => {\n shaderSrc[number - 1] = `%c${shaderSrc[number - 1]}%c`;\n logArgs.push(\"background: #FF0000; color:#FFFFFF; font-size: 10px\", \"font-size: 10px\");\n });\n const fragmentSourceToLog = shaderSrc.join(\"\\n\");\n logArgs[0] = fragmentSourceToLog;\n console.error(shaderLog);\n console.groupCollapsed(\"click to view full shader code\");\n console.warn(...logArgs);\n console.groupEnd();\n}\nfunction logProgramError(gl, program, vertexShader, fragmentShader) {\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, vertexShader);\n }\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n logPrettyShaderError(gl, fragmentShader);\n }\n console.error(\"PixiJS Error: Could not initialize shader.\");\n if (gl.getProgramInfoLog(program) !== \"\") {\n console.warn(\"PixiJS Warning: gl.getProgramInfoLog()\", gl.getProgramInfoLog(program));\n }\n }\n}\n\nexport { logProgramError };\n//# sourceMappingURL=logProgramError.mjs.map\n","import { warn } from '../../../../../utils/logging/warn.mjs';\nimport { GlProgramData } from '../GlProgramData.mjs';\nimport { compileShader } from './compileShader.mjs';\nimport { defaultValue } from './defaultValue.mjs';\nimport { extractAttributesFromGlProgram } from './extractAttributesFromGlProgram.mjs';\nimport { getUboData } from './getUboData.mjs';\nimport { getUniformData } from './getUniformData.mjs';\nimport { logProgramError } from './logProgramError.mjs';\n\n\"use strict\";\nfunction generateProgram(gl, program) {\n const glVertShader = compileShader(gl, gl.VERTEX_SHADER, program.vertex);\n const glFragShader = compileShader(gl, gl.FRAGMENT_SHADER, program.fragment);\n const webGLProgram = gl.createProgram();\n gl.attachShader(webGLProgram, glVertShader);\n gl.attachShader(webGLProgram, glFragShader);\n const transformFeedbackVaryings = program.transformFeedbackVaryings;\n if (transformFeedbackVaryings) {\n if (typeof gl.transformFeedbackVaryings !== \"function\") {\n warn(`TransformFeedback is not supported but TransformFeedbackVaryings are given.`);\n } else {\n gl.transformFeedbackVaryings(\n webGLProgram,\n transformFeedbackVaryings.names,\n transformFeedbackVaryings.bufferMode === \"separate\" ? gl.SEPARATE_ATTRIBS : gl.INTERLEAVED_ATTRIBS\n );\n }\n }\n gl.linkProgram(webGLProgram);\n if (!gl.getProgramParameter(webGLProgram, gl.LINK_STATUS)) {\n logProgramError(gl, webGLProgram, glVertShader, glFragShader);\n }\n program._attributeData = extractAttributesFromGlProgram(\n webGLProgram,\n gl,\n !/^[ \\t]*#[ \\t]*version[ \\t]+300[ \\t]+es[ \\t]*$/m.test(program.vertex)\n );\n program._uniformData = getUniformData(webGLProgram, gl);\n program._uniformBlockData = getUboData(webGLProgram, gl);\n gl.deleteShader(glVertShader);\n gl.deleteShader(glFragShader);\n const uniformData = {};\n for (const i in program._uniformData) {\n const data = program._uniformData[i];\n uniformData[i] = {\n location: gl.getUniformLocation(webGLProgram, i),\n value: defaultValue(data.type, data.size)\n };\n }\n const glProgram = new GlProgramData(webGLProgram, uniformData);\n return glProgram;\n}\n\nexport { generateProgram };\n//# sourceMappingURL=generateProgram.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateShaderSyncCode } from './GenerateShaderSyncCode.mjs';\nimport { generateProgram } from './program/generateProgram.mjs';\n\n\"use strict\";\nconst defaultSyncData = {\n textureCount: 0,\n blockIndex: 0\n};\nclass GlShaderSystem {\n constructor(renderer) {\n /** @internal */\n this._activeProgram = null;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n this._renderer.renderableGC.addManagedHash(this, \"_programDataHash\");\n }\n contextChange(gl) {\n this._gl = gl;\n this._programDataHash = /* @__PURE__ */ Object.create(null);\n this._shaderSyncFunctions = /* @__PURE__ */ Object.create(null);\n this._activeProgram = null;\n }\n /**\n * Changes the current shader to the one given in parameter.\n * @param shader - the new shader\n * @param skipSync - false if the shader should automatically sync its uniforms.\n * @returns the glProgram that belongs to the shader.\n */\n bind(shader, skipSync) {\n this._setProgram(shader.glProgram);\n if (skipSync)\n return;\n defaultSyncData.textureCount = 0;\n defaultSyncData.blockIndex = 0;\n let syncFunction = this._shaderSyncFunctions[shader.glProgram._key];\n if (!syncFunction) {\n syncFunction = this._shaderSyncFunctions[shader.glProgram._key] = this._generateShaderSync(shader, this);\n }\n this._renderer.buffer.nextBindBase(!!shader.glProgram.transformFeedbackVaryings);\n syncFunction(this._renderer, shader, defaultSyncData);\n }\n /**\n * Updates the uniform group.\n * @param uniformGroup - the uniform group to update\n */\n updateUniformGroup(uniformGroup) {\n this._renderer.uniformGroup.updateUniformGroup(uniformGroup, this._activeProgram, defaultSyncData);\n }\n /**\n * Binds a uniform block to the shader.\n * @param uniformGroup - the uniform group to bind\n * @param name - the name of the uniform block\n * @param index - the index of the uniform block\n */\n bindUniformBlock(uniformGroup, name, index = 0) {\n const bufferSystem = this._renderer.buffer;\n const programData = this._getProgramData(this._activeProgram);\n const isBufferResource = uniformGroup._bufferResource;\n if (!isBufferResource) {\n this._renderer.ubo.updateUniformGroup(uniformGroup);\n }\n const buffer = uniformGroup.buffer;\n const glBuffer = bufferSystem.updateBuffer(buffer);\n const boundLocation = bufferSystem.freeLocationForBufferBase(glBuffer);\n if (isBufferResource) {\n const { offset, size } = uniformGroup;\n if (offset === 0 && size === buffer.data.byteLength) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n } else {\n bufferSystem.bindBufferRange(glBuffer, boundLocation, offset);\n }\n } else if (bufferSystem.getLastBindBaseLocation(glBuffer) !== boundLocation) {\n bufferSystem.bindBufferBase(glBuffer, boundLocation);\n }\n const uniformBlockIndex = this._activeProgram._uniformBlockData[name].index;\n if (programData.uniformBlockBindings[index] === boundLocation)\n return;\n programData.uniformBlockBindings[index] = boundLocation;\n this._renderer.gl.uniformBlockBinding(programData.program, uniformBlockIndex, boundLocation);\n }\n _setProgram(program) {\n if (this._activeProgram === program)\n return;\n this._activeProgram = program;\n const programData = this._getProgramData(program);\n this._gl.useProgram(programData.program);\n }\n /**\n * @param program - the program to get the data for\n * @internal\n */\n _getProgramData(program) {\n return this._programDataHash[program._key] || this._createProgramData(program);\n }\n _createProgramData(program) {\n const key = program._key;\n this._programDataHash[key] = generateProgram(this._gl, program);\n return this._programDataHash[key];\n }\n destroy() {\n for (const key of Object.keys(this._programDataHash)) {\n const programData = this._programDataHash[key];\n programData.destroy();\n this._programDataHash[key] = null;\n }\n this._programDataHash = null;\n }\n /**\n * Creates a function that can be executed that will sync the shader as efficiently as possible.\n * Overridden by the unsafe eval package if you don't want eval used in your project.\n * @param shader - the shader to generate the sync function for\n * @param shaderSystem - the shader system to use\n * @returns - the generated sync function\n * @ignore\n */\n _generateShaderSync(shader, shaderSystem) {\n return generateShaderSyncCode(shader, shaderSystem);\n }\n resetState() {\n this._activeProgram = null;\n }\n}\n/** @ignore */\nGlShaderSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"shader\"\n};\n\nexport { GlShaderSystem };\n//# sourceMappingURL=GlShaderSystem.mjs.map\n","\"use strict\";\nconst UNIFORM_TO_SINGLE_SETTERS = {\n f32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1f(location, v);\n }`,\n \"vec2<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(location, v[0], v[1]);\n }`,\n \"vec3<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3f(location, v[0], v[1], v[2]);\n }`,\n \"vec4<f32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }`,\n i32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<i32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n u32: `if (cv !== v) {\n cu.value = v;\n gl.uniform1ui(location, v);\n }`,\n \"vec2<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2ui(location, v[0], v[1]);\n }`,\n \"vec3<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }`,\n \"vec4<u32>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }`,\n bool: `if (cv !== v) {\n cu.value = v;\n gl.uniform1i(location, v);\n }`,\n \"vec2<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1]) {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2i(location, v[0], v[1]);\n }`,\n \"vec3<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n gl.uniform3i(location, v[0], v[1], v[2]);\n }`,\n \"vec4<bool>\": `if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3]) {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`\n};\nconst UNIFORM_TO_ARRAY_SETTERS = {\n f32: `gl.uniform1fv(location, v);`,\n \"vec2<f32>\": `gl.uniform2fv(location, v);`,\n \"vec3<f32>\": `gl.uniform3fv(location, v);`,\n \"vec4<f32>\": `gl.uniform4fv(location, v);`,\n \"mat2x2<f32>\": `gl.uniformMatrix2fv(location, false, v);`,\n \"mat3x3<f32>\": `gl.uniformMatrix3fv(location, false, v);`,\n \"mat4x4<f32>\": `gl.uniformMatrix4fv(location, false, v);`,\n i32: `gl.uniform1iv(location, v);`,\n \"vec2<i32>\": `gl.uniform2iv(location, v);`,\n \"vec3<i32>\": `gl.uniform3iv(location, v);`,\n \"vec4<i32>\": `gl.uniform4iv(location, v);`,\n u32: `gl.uniform1iv(location, v);`,\n \"vec2<u32>\": `gl.uniform2iv(location, v);`,\n \"vec3<u32>\": `gl.uniform3iv(location, v);`,\n \"vec4<u32>\": `gl.uniform4iv(location, v);`,\n bool: `gl.uniform1iv(location, v);`,\n \"vec2<bool>\": `gl.uniform2iv(location, v);`,\n \"vec3<bool>\": `gl.uniform3iv(location, v);`,\n \"vec4<bool>\": `gl.uniform4iv(location, v);`\n};\n\nexport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS };\n//# sourceMappingURL=generateUniformsSyncTypes.mjs.map\n","import { BufferResource } from '../../../shared/buffer/BufferResource.mjs';\nimport { UniformGroup } from '../../../shared/shader/UniformGroup.mjs';\nimport { uniformParsers } from '../../../shared/shader/utils/uniformParsers.mjs';\nimport { UNIFORM_TO_SINGLE_SETTERS, UNIFORM_TO_ARRAY_SETTERS } from './generateUniformsSyncTypes.mjs';\n\n\"use strict\";\nfunction generateUniformsSync(group, uniformData) {\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n var name = null;\n `];\n for (const i in group.uniforms) {\n if (!uniformData[i]) {\n if (group.uniforms[i] instanceof UniformGroup) {\n if (group.uniforms[i].ubo) {\n funcFragments.push(`\n renderer.shader.bindUniformBlock(uv.${i}, \"${i}\");\n `);\n } else {\n funcFragments.push(`\n renderer.shader.updateUniformGroup(uv.${i});\n `);\n }\n } else if (group.uniforms[i] instanceof BufferResource) {\n funcFragments.push(`\n renderer.shader.bindBufferResource(uv.${i}, \"${i}\");\n `);\n }\n continue;\n }\n const uniform = group.uniformStructures[i];\n let parsed = false;\n for (let j = 0; j < uniformParsers.length; j++) {\n const parser = uniformParsers[j];\n if (uniform.type === parser.type && parser.test(uniform)) {\n funcFragments.push(`name = \"${i}\";`, uniformParsers[j].uniform);\n parsed = true;\n break;\n }\n }\n if (!parsed) {\n const templateType = uniform.size === 1 ? UNIFORM_TO_SINGLE_SETTERS : UNIFORM_TO_ARRAY_SETTERS;\n const template = templateType[uniform.type].replace(\"location\", `ud[\"${i}\"].location`);\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n return new Function(\"ud\", \"uv\", \"renderer\", \"syncData\", funcFragments.join(\"\\n\"));\n}\n\nexport { generateUniformsSync };\n//# sourceMappingURL=generateUniformsSync.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { generateUniformsSync } from './utils/generateUniformsSync.mjs';\n\n\"use strict\";\nclass GlUniformGroupSystem {\n /** @param renderer - The renderer this System works for. */\n constructor(renderer) {\n /** Cache to holds the generated functions. Stored against UniformObjects unique signature. */\n this._cache = {};\n this._uniformGroupSyncHash = {};\n this._renderer = renderer;\n this.gl = null;\n this._cache = {};\n }\n contextChange(gl) {\n this.gl = gl;\n }\n /**\n * Uploads the uniforms values to the currently bound shader.\n * @param group - the uniforms values that be applied to the current shader\n * @param program\n * @param syncData\n * @param syncData.textureCount\n */\n updateUniformGroup(group, program, syncData) {\n const programData = this._renderer.shader._getProgramData(program);\n if (!group.isStatic || group._dirtyId !== programData.uniformDirtyGroups[group.uid]) {\n programData.uniformDirtyGroups[group.uid] = group._dirtyId;\n const syncFunc = this._getUniformSyncFunction(group, program);\n syncFunc(programData.uniformData, group.uniforms, this._renderer, syncData);\n }\n }\n /**\n * Overridable by the pixi.js/unsafe-eval package to use static syncUniforms instead.\n * @param group\n * @param program\n */\n _getUniformSyncFunction(group, program) {\n return this._uniformGroupSyncHash[group._signature]?.[program._key] || this._createUniformSyncFunction(group, program);\n }\n _createUniformSyncFunction(group, program) {\n const uniformGroupSyncHash = this._uniformGroupSyncHash[group._signature] || (this._uniformGroupSyncHash[group._signature] = {});\n const id = this._getSignature(group, program._uniformData, \"u\");\n if (!this._cache[id]) {\n this._cache[id] = this._generateUniformsSync(group, program._uniformData);\n }\n uniformGroupSyncHash[program._key] = this._cache[id];\n return uniformGroupSyncHash[program._key];\n }\n _generateUniformsSync(group, uniformData) {\n return generateUniformsSync(group, uniformData);\n }\n /**\n * Takes a uniform group and data and generates a unique signature for them.\n * @param group - The uniform group to get signature of\n * @param group.uniforms\n * @param uniformData - Uniform information generated by the shader\n * @param preFix\n * @returns Unique signature of the uniform group\n */\n _getSignature(group, uniformData, preFix) {\n const uniforms = group.uniforms;\n const strings = [`${preFix}-`];\n for (const i in uniforms) {\n strings.push(i);\n if (uniformData[i]) {\n strings.push(uniformData[i].type);\n }\n }\n return strings.join(\"-\");\n }\n /** Destroys this System and removes all its textures. */\n destroy() {\n this._renderer = null;\n this._cache = null;\n }\n}\n/** @ignore */\nGlUniformGroupSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"uniformGroup\"\n};\n\nexport { GlUniformGroupSystem };\n//# sourceMappingURL=GlUniformGroupSystem.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\n\n\"use strict\";\nfunction mapWebGLBlendModesToPixi(gl) {\n const blendMap = {};\n blendMap.normal = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.add = [gl.ONE, gl.ONE];\n blendMap.multiply = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.screen = [gl.ONE, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.none = [0, 0];\n blendMap[\"normal-npm\"] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap[\"add-npm\"] = [gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE];\n blendMap[\"screen-npm\"] = [gl.SRC_ALPHA, gl.ONE_MINUS_SRC_COLOR, gl.ONE, gl.ONE_MINUS_SRC_ALPHA];\n blendMap.erase = [gl.ZERO, gl.ONE_MINUS_SRC_ALPHA];\n const isWebGl2 = !(gl instanceof DOMAdapter.get().getWebGLRenderingContext());\n if (isWebGl2) {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MIN, gl.MIN];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, gl.MAX, gl.MAX];\n } else {\n const ext = gl.getExtension(\"EXT_blend_minmax\");\n if (ext) {\n blendMap.min = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MIN_EXT, ext.MIN_EXT];\n blendMap.max = [gl.ONE, gl.ONE, gl.ONE, gl.ONE, ext.MAX_EXT, ext.MAX_EXT];\n }\n }\n return blendMap;\n}\n\nexport { mapWebGLBlendModesToPixi };\n//# sourceMappingURL=mapWebGLBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { mapWebGLBlendModesToPixi } from './mapWebGLBlendModesToPixi.mjs';\n\n\"use strict\";\nconst BLEND = 0;\nconst OFFSET = 1;\nconst CULLING = 2;\nconst DEPTH_TEST = 3;\nconst WINDING = 4;\nconst DEPTH_MASK = 5;\nconst _GlStateSystem = class _GlStateSystem {\n constructor(renderer) {\n /**\n * Whether to invert the front face when rendering\n * This is used for render textures where the Y-coordinate is flipped\n * @default false\n */\n this._invertFrontFace = false;\n this.gl = null;\n this.stateId = 0;\n this.polygonOffset = 0;\n this.blendMode = \"none\";\n this._blendEq = false;\n this.map = [];\n this.map[BLEND] = this.setBlend;\n this.map[OFFSET] = this.setOffset;\n this.map[CULLING] = this.setCullFace;\n this.map[DEPTH_TEST] = this.setDepthTest;\n this.map[WINDING] = this.setFrontFace;\n this.map[DEPTH_MASK] = this.setDepthMask;\n this.checks = [];\n this.defaultState = State.for2d();\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n this._invertFrontFace = !renderTarget.isRoot;\n if (this._cullFace) {\n this.setFrontFace(this._frontFace);\n } else {\n this._frontFaceDirty = true;\n }\n }\n contextChange(gl) {\n this.gl = gl;\n this.blendModesMap = mapWebGLBlendModesToPixi(gl);\n this.resetState();\n }\n /**\n * Sets the current state\n * @param {*} state - The state to set.\n */\n set(state) {\n state || (state = this.defaultState);\n if (this.stateId !== state.data) {\n let diff = this.stateId ^ state.data;\n let i = 0;\n while (diff) {\n if (diff & 1) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n diff >>= 1;\n i++;\n }\n this.stateId = state.data;\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n }\n /**\n * Sets the state, when previous state is unknown.\n * @param {*} state - The state to set\n */\n forceState(state) {\n state || (state = this.defaultState);\n for (let i = 0; i < this.map.length; i++) {\n this.map[i].call(this, !!(state.data & 1 << i));\n }\n for (let i = 0; i < this.checks.length; i++) {\n this.checks[i](this, state);\n }\n this.stateId = state.data;\n }\n /**\n * Sets whether to enable or disable blending.\n * @param value - Turn on or off WebGl blending.\n */\n setBlend(value) {\n this._updateCheck(_GlStateSystem._checkBlendMode, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.BLEND);\n }\n /**\n * Sets whether to enable or disable polygon offset fill.\n * @param value - Turn on or off webgl polygon offset testing.\n */\n setOffset(value) {\n this._updateCheck(_GlStateSystem._checkPolygonOffset, value);\n this.gl[value ? \"enable\" : \"disable\"](this.gl.POLYGON_OFFSET_FILL);\n }\n /**\n * Sets whether to enable or disable depth test.\n * @param value - Turn on or off webgl depth testing.\n */\n setDepthTest(value) {\n this.gl[value ? \"enable\" : \"disable\"](this.gl.DEPTH_TEST);\n }\n /**\n * Sets whether to enable or disable depth mask.\n * @param value - Turn on or off webgl depth mask.\n */\n setDepthMask(value) {\n this.gl.depthMask(value);\n }\n /**\n * Sets whether to enable or disable cull face.\n * @param {boolean} value - Turn on or off webgl cull face.\n */\n setCullFace(value) {\n this._cullFace = value;\n this.gl[value ? \"enable\" : \"disable\"](this.gl.CULL_FACE);\n if (this._cullFace && this._frontFaceDirty) {\n this.setFrontFace(this._frontFace);\n }\n }\n /**\n * Sets the gl front face.\n * @param {boolean} value - true is clockwise and false is counter-clockwise\n */\n setFrontFace(value) {\n this._frontFace = value;\n this._frontFaceDirty = false;\n const faceMode = this._invertFrontFace ? !value : value;\n if (this._glFrontFace !== faceMode) {\n this._glFrontFace = faceMode;\n this.gl.frontFace(this.gl[faceMode ? \"CW\" : \"CCW\"]);\n }\n }\n /**\n * Sets the blend mode.\n * @param {number} value - The blend mode to set to.\n */\n setBlendMode(value) {\n if (!this.blendModesMap[value]) {\n value = \"normal\";\n }\n if (value === this.blendMode) {\n return;\n }\n this.blendMode = value;\n const mode = this.blendModesMap[value];\n const gl = this.gl;\n if (mode.length === 2) {\n gl.blendFunc(mode[0], mode[1]);\n } else {\n gl.blendFuncSeparate(mode[0], mode[1], mode[2], mode[3]);\n }\n if (mode.length === 6) {\n this._blendEq = true;\n gl.blendEquationSeparate(mode[4], mode[5]);\n } else if (this._blendEq) {\n this._blendEq = false;\n gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD);\n }\n }\n /**\n * Sets the polygon offset.\n * @param {number} value - the polygon offset\n * @param {number} scale - the polygon offset scale\n */\n setPolygonOffset(value, scale) {\n this.gl.polygonOffset(value, scale);\n }\n /** Resets all the logic and disables the VAOs. */\n resetState() {\n this._glFrontFace = false;\n this._frontFace = false;\n this._cullFace = false;\n this._frontFaceDirty = false;\n this._invertFrontFace = false;\n this.gl.frontFace(this.gl.CCW);\n this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);\n this.forceState(this.defaultState);\n this._blendEq = true;\n this.blendMode = \"\";\n this.setBlendMode(\"normal\");\n }\n /**\n * Checks to see which updates should be checked based on which settings have been activated.\n *\n * For example, if blend is enabled then we should check the blend modes each time the state is changed\n * or if polygon fill is activated then we need to check if the polygon offset changes.\n * The idea is that we only check what we have too.\n * @param func - the checking function to add or remove\n * @param value - should the check function be added or removed.\n */\n _updateCheck(func, value) {\n const index = this.checks.indexOf(func);\n if (value && index === -1) {\n this.checks.push(func);\n } else if (!value && index !== -1) {\n this.checks.splice(index, 1);\n }\n }\n /**\n * A private little wrapper function that we call to check the blend mode.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static _checkBlendMode(system, state) {\n system.setBlendMode(state.blendMode);\n }\n /**\n * A private little wrapper function that we call to check the polygon offset.\n * @param system - the System to perform the state check on\n * @param state - the state that the blendMode will pulled from\n */\n static _checkPolygonOffset(system, state) {\n system.setPolygonOffset(1, state.polygonOffset);\n }\n /** @ignore */\n destroy() {\n this.gl = null;\n this.checks.length = 0;\n }\n};\n/** @ignore */\n_GlStateSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"state\"\n};\nlet GlStateSystem = _GlStateSystem;\n\nexport { GlStateSystem };\n//# sourceMappingURL=GlStateSystem.mjs.map\n","import { GL_TARGETS, GL_TYPES, GL_FORMATS } from './const.mjs';\n\n\"use strict\";\nclass GlTexture {\n constructor(texture) {\n this.target = GL_TARGETS.TEXTURE_2D;\n this.texture = texture;\n this.width = -1;\n this.height = -1;\n this.type = GL_TYPES.UNSIGNED_BYTE;\n this.internalFormat = GL_FORMATS.RGBA;\n this.format = GL_FORMATS.RGBA;\n this.samplerType = 0;\n }\n}\n\nexport { GlTexture };\n//# sourceMappingURL=GlTexture.mjs.map\n","\"use strict\";\nconst glUploadBufferImageResource = {\n id: \"buffer\",\n upload(source, glTexture, gl) {\n if (glTexture.width === source.width || glTexture.height === source.height) {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n source.width,\n source.height,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n source.width,\n source.height,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n glTexture.width = source.width;\n glTexture.height = source.height;\n }\n};\n\nexport { glUploadBufferImageResource };\n//# sourceMappingURL=glUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst compressedFormatMap = {\n \"bc1-rgba-unorm\": true,\n \"bc1-rgba-unorm-srgb\": true,\n \"bc2-rgba-unorm\": true,\n \"bc2-rgba-unorm-srgb\": true,\n \"bc3-rgba-unorm\": true,\n \"bc3-rgba-unorm-srgb\": true,\n \"bc4-r-unorm\": true,\n \"bc4-r-snorm\": true,\n \"bc5-rg-unorm\": true,\n \"bc5-rg-snorm\": true,\n \"bc6h-rgb-ufloat\": true,\n \"bc6h-rgb-float\": true,\n \"bc7-rgba-unorm\": true,\n \"bc7-rgba-unorm-srgb\": true,\n // ETC2 compressed formats usable if \"texture-compression-etc2\" is both\n // supported by the device/user agent and enabled in requestDevice.\n \"etc2-rgb8unorm\": true,\n \"etc2-rgb8unorm-srgb\": true,\n \"etc2-rgb8a1unorm\": true,\n \"etc2-rgb8a1unorm-srgb\": true,\n \"etc2-rgba8unorm\": true,\n \"etc2-rgba8unorm-srgb\": true,\n \"eac-r11unorm\": true,\n \"eac-r11snorm\": true,\n \"eac-rg11unorm\": true,\n \"eac-rg11snorm\": true,\n // ASTC compressed formats usable if \"texture-compression-astc\" is both\n // supported by the device/user agent and enabled in requestDevice.\n \"astc-4x4-unorm\": true,\n \"astc-4x4-unorm-srgb\": true,\n \"astc-5x4-unorm\": true,\n \"astc-5x4-unorm-srgb\": true,\n \"astc-5x5-unorm\": true,\n \"astc-5x5-unorm-srgb\": true,\n \"astc-6x5-unorm\": true,\n \"astc-6x5-unorm-srgb\": true,\n \"astc-6x6-unorm\": true,\n \"astc-6x6-unorm-srgb\": true,\n \"astc-8x5-unorm\": true,\n \"astc-8x5-unorm-srgb\": true,\n \"astc-8x6-unorm\": true,\n \"astc-8x6-unorm-srgb\": true,\n \"astc-8x8-unorm\": true,\n \"astc-8x8-unorm-srgb\": true,\n \"astc-10x5-unorm\": true,\n \"astc-10x5-unorm-srgb\": true,\n \"astc-10x6-unorm\": true,\n \"astc-10x6-unorm-srgb\": true,\n \"astc-10x8-unorm\": true,\n \"astc-10x8-unorm-srgb\": true,\n \"astc-10x10-unorm\": true,\n \"astc-10x10-unorm-srgb\": true,\n \"astc-12x10-unorm\": true,\n \"astc-12x10-unorm-srgb\": true,\n \"astc-12x12-unorm\": true,\n \"astc-12x12-unorm-srgb\": true\n};\nconst glUploadCompressedTextureResource = {\n id: \"compressed\",\n upload(source, glTexture, gl) {\n gl.pixelStorei(gl.UNPACK_ALIGNMENT, 4);\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const compressed = !!compressedFormatMap[source.format];\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n if (compressed) {\n gl.compressedTexImage2D(\n gl.TEXTURE_2D,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n levelBuffer\n );\n } else {\n gl.texImage2D(\n gl.TEXTURE_2D,\n i,\n glTexture.internalFormat,\n mipWidth,\n mipHeight,\n 0,\n glTexture.format,\n glTexture.type,\n levelBuffer\n );\n }\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { glUploadCompressedTextureResource };\n//# sourceMappingURL=glUploadCompressedTextureResource.mjs.map\n","\"use strict\";\nconst glUploadImageResource = {\n id: \"image\",\n upload(source, glTexture, gl, webGLVersion) {\n const glWidth = glTexture.width;\n const glHeight = glTexture.height;\n const textureWidth = source.pixelWidth;\n const textureHeight = source.pixelHeight;\n const resourceWidth = source.resourceWidth;\n const resourceHeight = source.resourceHeight;\n if (resourceWidth < textureWidth || resourceHeight < textureHeight) {\n if (glWidth !== textureWidth || glHeight !== textureHeight) {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n }\n if (webGLVersion === 2) {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n resourceWidth,\n resourceHeight,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n } else if (glWidth === textureWidth && glHeight === textureHeight) {\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n 0,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else if (webGLVersion === 2) {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n textureWidth,\n textureHeight,\n 0,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n } else {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n glTexture.format,\n glTexture.type,\n source.resource\n );\n }\n glTexture.width = textureWidth;\n glTexture.height = textureHeight;\n }\n};\n\nexport { glUploadImageResource };\n//# sourceMappingURL=glUploadImageResource.mjs.map\n","import { glUploadImageResource } from './glUploadImageResource.mjs';\n\n\"use strict\";\nconst glUploadVideoResource = {\n id: \"video\",\n upload(source, glTexture, gl, webGLVersion) {\n if (!source.isValid) {\n gl.texImage2D(\n glTexture.target,\n 0,\n glTexture.internalFormat,\n 1,\n 1,\n 0,\n glTexture.format,\n glTexture.type,\n null\n );\n return;\n }\n glUploadImageResource.upload(source, glTexture, gl, webGLVersion);\n }\n};\n\nexport { glUploadVideoResource };\n//# sourceMappingURL=glUploadVideoResource.mjs.map\n","\"use strict\";\nconst scaleModeToGlFilter = {\n linear: 9729,\n nearest: 9728\n};\nconst mipmapScaleModeToGlFilter = {\n linear: {\n linear: 9987,\n nearest: 9985\n },\n nearest: {\n linear: 9986,\n nearest: 9984\n }\n};\nconst wrapModeToGlAddress = {\n \"clamp-to-edge\": 33071,\n repeat: 10497,\n \"mirror-repeat\": 33648\n};\nconst compareModeToGlCompare = {\n never: 512,\n less: 513,\n equal: 514,\n \"less-equal\": 515,\n greater: 516,\n \"not-equal\": 517,\n \"greater-equal\": 518,\n always: 519\n};\n\nexport { compareModeToGlCompare, mipmapScaleModeToGlFilter, scaleModeToGlFilter, wrapModeToGlAddress };\n//# sourceMappingURL=pixiToGlMaps.mjs.map\n","import { wrapModeToGlAddress, scaleModeToGlFilter, mipmapScaleModeToGlFilter, compareModeToGlCompare } from './pixiToGlMaps.mjs';\n\n\"use strict\";\nfunction applyStyleParams(style, gl, mipmaps, anisotropicExt, glFunctionName, firstParam, forceClamp, firstCreation) {\n const castParam = firstParam;\n if (!firstCreation || style.addressModeU !== \"repeat\" || style.addressModeV !== \"repeat\" || style.addressModeW !== \"repeat\") {\n const wrapModeS = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeU];\n const wrapModeT = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeV];\n const wrapModeR = wrapModeToGlAddress[forceClamp ? \"clamp-to-edge\" : style.addressModeW];\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_S, wrapModeS);\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_T, wrapModeT);\n if (gl.TEXTURE_WRAP_R)\n gl[glFunctionName](castParam, gl.TEXTURE_WRAP_R, wrapModeR);\n }\n if (!firstCreation || style.magFilter !== \"linear\") {\n gl[glFunctionName](castParam, gl.TEXTURE_MAG_FILTER, scaleModeToGlFilter[style.magFilter]);\n }\n if (mipmaps) {\n if (!firstCreation || style.mipmapFilter !== \"linear\") {\n const glFilterMode = mipmapScaleModeToGlFilter[style.minFilter][style.mipmapFilter];\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, glFilterMode);\n }\n } else {\n gl[glFunctionName](castParam, gl.TEXTURE_MIN_FILTER, scaleModeToGlFilter[style.minFilter]);\n }\n if (anisotropicExt && style.maxAnisotropy > 1) {\n const level = Math.min(style.maxAnisotropy, gl.getParameter(anisotropicExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT));\n gl[glFunctionName](castParam, anisotropicExt.TEXTURE_MAX_ANISOTROPY_EXT, level);\n }\n if (style.compare) {\n gl[glFunctionName](castParam, gl.TEXTURE_COMPARE_FUNC, compareModeToGlCompare[style.compare]);\n }\n}\n\nexport { applyStyleParams };\n//# sourceMappingURL=applyStyleParams.mjs.map\n","\"use strict\";\nfunction mapFormatToGlFormat(gl) {\n return {\n // 8-bit formats\n r8unorm: gl.RED,\n r8snorm: gl.RED,\n r8uint: gl.RED,\n r8sint: gl.RED,\n // 16-bit formats\n r16uint: gl.RED,\n r16sint: gl.RED,\n r16float: gl.RED,\n rg8unorm: gl.RG,\n rg8snorm: gl.RG,\n rg8uint: gl.RG,\n rg8sint: gl.RG,\n // 32-bit formats\n r32uint: gl.RED,\n r32sint: gl.RED,\n r32float: gl.RED,\n rg16uint: gl.RG,\n rg16sint: gl.RG,\n rg16float: gl.RG,\n rgba8unorm: gl.RGBA,\n \"rgba8unorm-srgb\": gl.RGBA,\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA,\n rgba8uint: gl.RGBA,\n rgba8sint: gl.RGBA,\n bgra8unorm: gl.RGBA,\n \"bgra8unorm-srgb\": gl.RGBA,\n rgb9e5ufloat: gl.RGB,\n rgb10a2unorm: gl.RGBA,\n rg11b10ufloat: gl.RGB,\n // 64-bit formats\n rg32uint: gl.RG,\n rg32sint: gl.RG,\n rg32float: gl.RG,\n rgba16uint: gl.RGBA,\n rgba16sint: gl.RGBA,\n rgba16float: gl.RGBA,\n // 128-bit formats\n rgba32uint: gl.RGBA,\n rgba32sint: gl.RGBA,\n rgba32float: gl.RGBA,\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT,\n depth24plus: gl.DEPTH_COMPONENT,\n \"depth24plus-stencil8\": gl.DEPTH_STENCIL,\n depth32float: gl.DEPTH_COMPONENT,\n \"depth32float-stencil8\": gl.DEPTH_STENCIL\n };\n}\n\nexport { mapFormatToGlFormat };\n//# sourceMappingURL=mapFormatToGlFormat.mjs.map\n","import { DOMAdapter } from '../../../../../environment/adapter.mjs';\n\n\"use strict\";\nfunction mapFormatToGlInternalFormat(gl, extensions) {\n let srgb = {};\n let bgra8unorm = gl.RGBA;\n if (!(gl instanceof DOMAdapter.get().getWebGLRenderingContext())) {\n srgb = {\n \"rgba8unorm-srgb\": gl.SRGB8_ALPHA8,\n \"bgra8unorm-srgb\": gl.SRGB8_ALPHA8\n };\n bgra8unorm = gl.RGBA8;\n } else if (extensions.srgb) {\n srgb = {\n \"rgba8unorm-srgb\": extensions.srgb.SRGB8_ALPHA8_EXT,\n \"bgra8unorm-srgb\": extensions.srgb.SRGB8_ALPHA8_EXT\n };\n }\n return {\n // 8-bit formats\n r8unorm: gl.R8,\n r8snorm: gl.R8_SNORM,\n r8uint: gl.R8UI,\n r8sint: gl.R8I,\n // 16-bit formats\n r16uint: gl.R16UI,\n r16sint: gl.R16I,\n r16float: gl.R16F,\n rg8unorm: gl.RG8,\n rg8snorm: gl.RG8_SNORM,\n rg8uint: gl.RG8UI,\n rg8sint: gl.RG8I,\n // 32-bit formats\n r32uint: gl.R32UI,\n r32sint: gl.R32I,\n r32float: gl.R32F,\n rg16uint: gl.RG16UI,\n rg16sint: gl.RG16I,\n rg16float: gl.RG16F,\n rgba8unorm: gl.RGBA,\n ...srgb,\n // Packed 32-bit formats\n rgba8snorm: gl.RGBA8_SNORM,\n rgba8uint: gl.RGBA8UI,\n rgba8sint: gl.RGBA8I,\n bgra8unorm,\n rgb9e5ufloat: gl.RGB9_E5,\n rgb10a2unorm: gl.RGB10_A2,\n rg11b10ufloat: gl.R11F_G11F_B10F,\n // 64-bit formats\n rg32uint: gl.RG32UI,\n rg32sint: gl.RG32I,\n rg32float: gl.RG32F,\n rgba16uint: gl.RGBA16UI,\n rgba16sint: gl.RGBA16I,\n rgba16float: gl.RGBA16F,\n // 128-bit formats\n rgba32uint: gl.RGBA32UI,\n rgba32sint: gl.RGBA32I,\n rgba32float: gl.RGBA32F,\n // Depth/stencil formats\n stencil8: gl.STENCIL_INDEX8,\n depth16unorm: gl.DEPTH_COMPONENT16,\n depth24plus: gl.DEPTH_COMPONENT24,\n \"depth24plus-stencil8\": gl.DEPTH24_STENCIL8,\n depth32float: gl.DEPTH_COMPONENT32F,\n \"depth32float-stencil8\": gl.DEPTH32F_STENCIL8,\n // Compressed formats\n ...extensions.s3tc ? {\n \"bc1-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT1_EXT,\n \"bc2-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT3_EXT,\n \"bc3-rgba-unorm\": extensions.s3tc.COMPRESSED_RGBA_S3TC_DXT5_EXT\n } : {},\n ...extensions.s3tc_sRGB ? {\n \"bc1-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,\n \"bc2-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,\n \"bc3-rgba-unorm-srgb\": extensions.s3tc_sRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT\n } : {},\n ...extensions.rgtc ? {\n \"bc4-r-unorm\": extensions.rgtc.COMPRESSED_RED_RGTC1_EXT,\n \"bc4-r-snorm\": extensions.rgtc.COMPRESSED_SIGNED_RED_RGTC1_EXT,\n \"bc5-rg-unorm\": extensions.rgtc.COMPRESSED_RED_GREEN_RGTC2_EXT,\n \"bc5-rg-snorm\": extensions.rgtc.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT\n } : {},\n ...extensions.bptc ? {\n \"bc6h-rgb-float\": extensions.bptc.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,\n \"bc6h-rgb-ufloat\": extensions.bptc.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,\n \"bc7-rgba-unorm\": extensions.bptc.COMPRESSED_RGBA_BPTC_UNORM_EXT,\n \"bc7-rgba-unorm-srgb\": extensions.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT\n } : {},\n ...extensions.etc ? {\n \"etc2-rgb8unorm\": extensions.etc.COMPRESSED_RGB8_ETC2,\n \"etc2-rgb8unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_ETC2,\n \"etc2-rgb8a1unorm\": extensions.etc.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n \"etc2-rgb8a1unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,\n \"etc2-rgba8unorm\": extensions.etc.COMPRESSED_RGBA8_ETC2_EAC,\n \"etc2-rgba8unorm-srgb\": extensions.etc.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,\n \"eac-r11unorm\": extensions.etc.COMPRESSED_R11_EAC,\n // 'eac-r11snorm'\n \"eac-rg11unorm\": extensions.etc.COMPRESSED_SIGNED_RG11_EAC\n // 'eac-rg11snorm'\n } : {},\n ...extensions.astc ? {\n \"astc-4x4-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_4x4_KHR,\n \"astc-4x4-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,\n \"astc-5x4-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_5x4_KHR,\n \"astc-5x4-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,\n \"astc-5x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_5x5_KHR,\n \"astc-5x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,\n \"astc-6x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_6x5_KHR,\n \"astc-6x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,\n \"astc-6x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_6x6_KHR,\n \"astc-6x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,\n \"astc-8x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x5_KHR,\n \"astc-8x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,\n \"astc-8x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x6_KHR,\n \"astc-8x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,\n \"astc-8x8-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_8x8_KHR,\n \"astc-8x8-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,\n \"astc-10x5-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x5_KHR,\n \"astc-10x5-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,\n \"astc-10x6-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x6_KHR,\n \"astc-10x6-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,\n \"astc-10x8-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x8_KHR,\n \"astc-10x8-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,\n \"astc-10x10-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_10x10_KHR,\n \"astc-10x10-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,\n \"astc-12x10-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_12x10_KHR,\n \"astc-12x10-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,\n \"astc-12x12-unorm\": extensions.astc.COMPRESSED_RGBA_ASTC_12x12_KHR,\n \"astc-12x12-unorm-srgb\": extensions.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR\n } : {}\n };\n}\n\nexport { mapFormatToGlInternalFormat };\n//# sourceMappingURL=mapFormatToGlInternalFormat.mjs.map\n","\"use strict\";\nfunction mapFormatToGlType(gl) {\n return {\n // 8-bit formats\n r8unorm: gl.UNSIGNED_BYTE,\n r8snorm: gl.BYTE,\n r8uint: gl.UNSIGNED_BYTE,\n r8sint: gl.BYTE,\n // 16-bit formats\n r16uint: gl.UNSIGNED_SHORT,\n r16sint: gl.SHORT,\n r16float: gl.HALF_FLOAT,\n rg8unorm: gl.UNSIGNED_BYTE,\n rg8snorm: gl.BYTE,\n rg8uint: gl.UNSIGNED_BYTE,\n rg8sint: gl.BYTE,\n // 32-bit formats\n r32uint: gl.UNSIGNED_INT,\n r32sint: gl.INT,\n r32float: gl.FLOAT,\n rg16uint: gl.UNSIGNED_SHORT,\n rg16sint: gl.SHORT,\n rg16float: gl.HALF_FLOAT,\n rgba8unorm: gl.UNSIGNED_BYTE,\n \"rgba8unorm-srgb\": gl.UNSIGNED_BYTE,\n // Packed 32-bit formats\n rgba8snorm: gl.BYTE,\n rgba8uint: gl.UNSIGNED_BYTE,\n rgba8sint: gl.BYTE,\n bgra8unorm: gl.UNSIGNED_BYTE,\n \"bgra8unorm-srgb\": gl.UNSIGNED_BYTE,\n rgb9e5ufloat: gl.UNSIGNED_INT_5_9_9_9_REV,\n rgb10a2unorm: gl.UNSIGNED_INT_2_10_10_10_REV,\n rg11b10ufloat: gl.UNSIGNED_INT_10F_11F_11F_REV,\n // 64-bit formats\n rg32uint: gl.UNSIGNED_INT,\n rg32sint: gl.INT,\n rg32float: gl.FLOAT,\n rgba16uint: gl.UNSIGNED_SHORT,\n rgba16sint: gl.SHORT,\n rgba16float: gl.HALF_FLOAT,\n // 128-bit formats\n rgba32uint: gl.UNSIGNED_INT,\n rgba32sint: gl.INT,\n rgba32float: gl.FLOAT,\n // Depth/stencil formats\n stencil8: gl.UNSIGNED_BYTE,\n depth16unorm: gl.UNSIGNED_SHORT,\n depth24plus: gl.UNSIGNED_INT,\n \"depth24plus-stencil8\": gl.UNSIGNED_INT_24_8,\n depth32float: gl.FLOAT,\n \"depth32float-stencil8\": gl.FLOAT_32_UNSIGNED_INT_24_8_REV\n };\n}\n\nexport { mapFormatToGlType };\n//# sourceMappingURL=mapFormatToGlType.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { Texture } from '../../shared/texture/Texture.mjs';\nimport { GlTexture } from './GlTexture.mjs';\nimport { glUploadBufferImageResource } from './uploaders/glUploadBufferImageResource.mjs';\nimport { glUploadCompressedTextureResource } from './uploaders/glUploadCompressedTextureResource.mjs';\nimport { glUploadImageResource } from './uploaders/glUploadImageResource.mjs';\nimport { glUploadVideoResource } from './uploaders/glUploadVideoResource.mjs';\nimport { applyStyleParams } from './utils/applyStyleParams.mjs';\nimport { mapFormatToGlFormat } from './utils/mapFormatToGlFormat.mjs';\nimport { mapFormatToGlInternalFormat } from './utils/mapFormatToGlInternalFormat.mjs';\nimport { mapFormatToGlType } from './utils/mapFormatToGlType.mjs';\nimport './utils/unpremultiplyAlpha.mjs';\n\n\"use strict\";\nconst BYTES_PER_PIXEL = 4;\nclass GlTextureSystem {\n constructor(renderer) {\n this.managedTextures = [];\n this._glTextures = /* @__PURE__ */ Object.create(null);\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundTextures = [];\n this._activeTextureLocation = -1;\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._uploads = {\n image: glUploadImageResource,\n buffer: glUploadBufferImageResource,\n video: glUploadVideoResource,\n compressed: glUploadCompressedTextureResource\n };\n this._premultiplyAlpha = false;\n // TODO - separate samplers will be a cool thing to add, but not right now!\n this._useSeparateSamplers = false;\n this._renderer = renderer;\n this._renderer.renderableGC.addManagedHash(this, \"_glTextures\");\n this._renderer.renderableGC.addManagedHash(this, \"_glSamplers\");\n }\n contextChange(gl) {\n this._gl = gl;\n if (!this._mapFormatToInternalFormat) {\n this._mapFormatToInternalFormat = mapFormatToGlInternalFormat(gl, this._renderer.context.extensions);\n this._mapFormatToType = mapFormatToGlType(gl);\n this._mapFormatToFormat = mapFormatToGlFormat(gl);\n }\n this._glTextures = /* @__PURE__ */ Object.create(null);\n this._glSamplers = /* @__PURE__ */ Object.create(null);\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n this._premultiplyAlpha = false;\n for (let i = 0; i < 16; i++) {\n this.bind(Texture.EMPTY, i);\n }\n }\n /**\n * Initializes a texture source, if it has already been initialized nothing will happen.\n * @param source - The texture source to initialize.\n * @returns The initialized texture source.\n */\n initSource(source) {\n this.bind(source);\n }\n bind(texture, location = 0) {\n const source = texture.source;\n if (texture) {\n this.bindSource(source, location);\n if (this._useSeparateSamplers) {\n this._bindSampler(source.style, location);\n }\n } else {\n this.bindSource(null, location);\n if (this._useSeparateSamplers) {\n this._bindSampler(null, location);\n }\n }\n }\n bindSource(source, location = 0) {\n const gl = this._gl;\n source._touched = this._renderer.textureGC.count;\n if (this._boundTextures[location] !== source) {\n this._boundTextures[location] = source;\n this._activateLocation(location);\n source || (source = Texture.EMPTY.source);\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, glTexture.texture);\n }\n }\n _bindSampler(style, location = 0) {\n const gl = this._gl;\n if (!style) {\n this._boundSamplers[location] = null;\n gl.bindSampler(location, null);\n return;\n }\n const sampler = this._getGlSampler(style);\n if (this._boundSamplers[location] !== sampler) {\n this._boundSamplers[location] = sampler;\n gl.bindSampler(location, sampler);\n }\n }\n unbind(texture) {\n const source = texture.source;\n const boundTextures = this._boundTextures;\n const gl = this._gl;\n for (let i = 0; i < boundTextures.length; i++) {\n if (boundTextures[i] === source) {\n this._activateLocation(i);\n const glTexture = this.getGlSource(source);\n gl.bindTexture(glTexture.target, null);\n boundTextures[i] = null;\n }\n }\n }\n _activateLocation(location) {\n if (this._activeTextureLocation !== location) {\n this._activeTextureLocation = location;\n this._gl.activeTexture(this._gl.TEXTURE0 + location);\n }\n }\n _initSource(source) {\n const gl = this._gl;\n const glTexture = new GlTexture(gl.createTexture());\n glTexture.type = this._mapFormatToType[source.format];\n glTexture.internalFormat = this._mapFormatToInternalFormat[source.format];\n glTexture.format = this._mapFormatToFormat[source.format];\n if (source.autoGenerateMipmaps && (this._renderer.context.supports.nonPowOf2mipmaps || source.isPowerOfTwo)) {\n const biggestDimension = Math.max(source.width, source.height);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n this._glTextures[source.uid] = glTexture;\n if (!this.managedTextures.includes(source)) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceUpdate, this);\n source.on(\"styleChange\", this.onStyleChange, this);\n source.on(\"destroy\", this.onSourceDestroy, this);\n source.on(\"unload\", this.onSourceUnload, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.push(source);\n }\n this.onSourceUpdate(source);\n this.updateStyle(source, false);\n return glTexture;\n }\n onStyleChange(source) {\n this.updateStyle(source, false);\n }\n updateStyle(source, firstCreation) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(gl.TEXTURE_2D, glTexture.texture);\n this._boundTextures[this._activeTextureLocation] = source;\n applyStyleParams(\n source.style,\n gl,\n source.mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n \"texParameteri\",\n gl.TEXTURE_2D,\n // will force a clamp to edge if the texture is not a power of two\n !this._renderer.context.supports.nonPowOf2wrapping && !source.isPowerOfTwo,\n firstCreation\n );\n }\n onSourceUnload(source) {\n const glTexture = this._glTextures[source.uid];\n if (!glTexture)\n return;\n this.unbind(source);\n this._glTextures[source.uid] = null;\n this._gl.deleteTexture(glTexture.texture);\n }\n onSourceUpdate(source) {\n const gl = this._gl;\n const glTexture = this.getGlSource(source);\n gl.bindTexture(gl.TEXTURE_2D, glTexture.texture);\n this._boundTextures[this._activeTextureLocation] = source;\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n if (this._premultiplyAlpha !== premultipliedAlpha) {\n this._premultiplyAlpha = premultipliedAlpha;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha);\n }\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, glTexture, gl, this._renderer.context.webGLVersion);\n } else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, source.pixelWidth, source.pixelHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source, false);\n }\n }\n onUpdateMipmaps(source, bind = true) {\n if (bind)\n this.bindSource(source, 0);\n const glTexture = this.getGlSource(source);\n this._gl.generateMipmap(glTexture.target);\n }\n onSourceDestroy(source) {\n source.off(\"destroy\", this.onSourceDestroy, this);\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"resize\", this.onSourceUpdate, this);\n source.off(\"unload\", this.onSourceUnload, this);\n source.off(\"styleChange\", this.onStyleChange, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n this.onSourceUnload(source);\n }\n _initSampler(style) {\n const gl = this._gl;\n const glSampler = this._gl.createSampler();\n this._glSamplers[style._resourceId] = glSampler;\n applyStyleParams(\n style,\n gl,\n this._boundTextures[this._activeTextureLocation].mipLevelCount > 1,\n this._renderer.context.extensions.anisotropicFiltering,\n \"samplerParameteri\",\n glSampler,\n false,\n true\n );\n return this._glSamplers[style._resourceId];\n }\n _getGlSampler(sampler) {\n return this._glSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGlSource(source) {\n return this._glTextures[source.uid] || this._initSource(source);\n }\n generateCanvas(texture) {\n const { pixels, width, height } = this.getPixels(texture);\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n }\n return canvas;\n }\n getPixels(texture) {\n const resolution = texture.source.resolution;\n const frame = texture.frame;\n const width = Math.max(Math.round(frame.width * resolution), 1);\n const height = Math.max(Math.round(frame.height * resolution), 1);\n const pixels = new Uint8Array(BYTES_PER_PIXEL * width * height);\n const renderer = this._renderer;\n const renderTarget = renderer.renderTarget.getRenderTarget(texture);\n const glRenterTarget = renderer.renderTarget.getGpuRenderTarget(renderTarget);\n const gl = renderer.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, glRenterTarget.resolveTargetFramebuffer);\n gl.readPixels(\n Math.round(frame.x * resolution),\n Math.round(frame.y * resolution),\n width,\n height,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n pixels\n );\n if (false) {\n unpremultiplyAlpha(pixels);\n }\n return { pixels: new Uint8ClampedArray(pixels.buffer), width, height };\n }\n destroy() {\n this.managedTextures.slice().forEach((source) => this.onSourceDestroy(source));\n this.managedTextures = null;\n this._renderer = null;\n }\n resetState() {\n this._activeTextureLocation = -1;\n this._boundTextures.fill(Texture.EMPTY.source);\n this._boundSamplers = /* @__PURE__ */ Object.create(null);\n const gl = this._gl;\n this._premultiplyAlpha = false;\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this._premultiplyAlpha);\n }\n}\n/** @ignore */\nGlTextureSystem.extension = {\n type: [\n ExtensionType.WebGLSystem\n ],\n name: \"texture\"\n};\n\nexport { GlTextureSystem };\n//# sourceMappingURL=GlTextureSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBitGl } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBitGl } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { getBatchSamplersUniformGroup } from '../../../rendering/renderers/gl/shader/getBatchSamplersUniformGroup.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GlGraphicsAdaptor {\n contextChange(renderer) {\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 uRound: { value: 0, type: \"f32\" }\n });\n const maxTextures = renderer.limits.maxBatchableTextures;\n const glProgram = compileHighShaderGlProgram({\n name: \"graphics\",\n bits: [\n colorBitGl,\n generateTextureBatchBitGl(maxTextures),\n localUniformBitGl,\n roundPixelsBitGl\n ]\n });\n this.shader = new Shader({\n glProgram,\n resources: {\n localUniforms: uniforms,\n batchSamplers: getBatchSamplersUniformGroup(maxTextures)\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n batcher,\n instructions\n } = contextSystem.getContextRenderData(context);\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n renderer.state.set(graphicsPipe.state);\n renderer.shader.bind(shader);\n renderer.geometry.bind(batcher.geometry, shader.glProgram);\n const batches = instructions.instructions;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n if (batch.size) {\n for (let j = 0; j < batch.textures.count; j++) {\n renderer.texture.bind(batch.textures.textures[j], j);\n }\n renderer.geometry.draw(batch.topology, batch.size, batch.start);\n }\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGlGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GlGraphicsAdaptor };\n//# sourceMappingURL=GlGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GlMeshAdaptor {\n init() {\n const glProgram = compileHighShaderGlProgram({\n name: \"mesh\",\n bits: [\n localUniformBitGl,\n textureBitGl,\n roundPixelsBitGl\n ]\n });\n this._shader = new Shader({\n glProgram,\n resources: {\n uTexture: Texture.EMPTY.source,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n const texture = mesh.texture;\n const source = texture.source;\n shader.resources.uTexture = source;\n shader.resources.uSampler = source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;\n } else if (!shader.glProgram) {\n warn(\"Mesh shader has no glProgram\", mesh.shader);\n return;\n }\n shader.groups[100] = renderer.globalUniforms.bindGroup;\n shader.groups[101] = meshPipe.localUniformsBindGroup;\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\nGlMeshAdaptor.extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GlMeshAdaptor };\n//# sourceMappingURL=GlMeshAdaptor.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GlGraphicsAdaptor } from '../../../scene/graphics/gl/GlGraphicsAdaptor.mjs';\nimport { GlMeshAdaptor } from '../../../scene/mesh/gl/GlMeshAdaptor.mjs';\nimport { GlBatchAdaptor } from '../../batcher/gl/GlBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { GlBufferSystem } from './buffer/GlBufferSystem.mjs';\nimport { GlContextSystem } from './context/GlContextSystem.mjs';\nimport { GlGeometrySystem } from './geometry/GlGeometrySystem.mjs';\nimport { GlBackBufferSystem } from './GlBackBufferSystem.mjs';\nimport { GlColorMaskSystem } from './GlColorMaskSystem.mjs';\nimport { GlEncoderSystem } from './GlEncoderSystem.mjs';\nimport { GlLimitsSystem } from './GlLimitsSystem.mjs';\nimport { GlStencilSystem } from './GlStencilSystem.mjs';\nimport { GlUboSystem } from './GlUboSystem.mjs';\nimport { GlRenderTargetSystem } from './renderTarget/GlRenderTargetSystem.mjs';\nimport { GlShaderSystem } from './shader/GlShaderSystem.mjs';\nimport { GlUniformGroupSystem } from './shader/GlUniformGroupSystem.mjs';\nimport { GlStateSystem } from './state/GlStateSystem.mjs';\nimport { GlTextureSystem } from './texture/GlTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGLSystems = [\n ...SharedSystems,\n GlUboSystem,\n GlBackBufferSystem,\n GlContextSystem,\n GlLimitsSystem,\n GlBufferSystem,\n GlTextureSystem,\n GlRenderTargetSystem,\n GlGeometrySystem,\n GlUniformGroupSystem,\n GlShaderSystem,\n GlEncoderSystem,\n GlStateSystem,\n GlStencilSystem,\n GlColorMaskSystem\n];\nconst DefaultWebGLPipes = [...SharedRenderPipes];\nconst DefaultWebGLAdapters = [GlBatchAdaptor, GlMeshAdaptor, GlGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGLSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGLPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGLPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGLSystems, ...DefaultWebGLPipes, ...DefaultWebGLAdapters);\nclass WebGLRenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgl\",\n type: RendererType.WEBGL,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGLRenderer };\n//# sourceMappingURL=WebGLRenderer.mjs.map\n"],"names":["GlBatchAdaptor","State","batcherPipe","batchPipe","geometry","shader","renderer","didUpload","batch","textures","ExtensionType","BUFFER_TYPE","BUFFER_TYPE2","GlBuffer","buffer","type","GlBufferSystem","gl","glBuffer","index","hasTransformFeedback","freeIndex","loop","nextIndex","curBuf","offset","size","data","drawType","BufferUsage","id","contextLost","_GlContextSystem","options","multiView","warn","DOMAdapter","alpha","premultipliedAlpha","antialias","targetCanvas","canvas","element","preferWebGLVersion","common","provokeExt","event","_a","attributes","supports","isWebGl2","extensions","GlContextSystem","GL_FORMATS","GL_FORMATS2","GL_TARGETS","GL_TARGETS2","GL_TYPES","GL_TYPES2","infoMap","getGlTypeFromFormat","format","topologyToGlMap","GlGeometrySystem","nativeVaoExtension","vao","nativeInstancedExtension","a","b","c","d","e","program","bufferSystem","i","geometryAttributes","shaderAttributes","j","attribs","strings","_incRefCount","signature","vaoObjectHash","ensureAttributes","buffers","lastBuffer","attribute","programAttrib","location","attributeInfo","getAttributeInfoFromFormat","divisor","topology","start","instanceCount","glTopology","byteSize","glType","bigTriangleGeometry","Geometry","_GlBackBufferSystem","useBackBuffer","bigTriangleProgram","GlProgram","Shader","Texture","renderTarget","renderTarget2","targetSourceTexture","TextureSource","GlBackBufferSystem","GlColorMaskSystem","colorMask","GlEncoderSystem","state","skipSync","GlLimitsSystem","checkMaxIfStatementsInShader","GlRenderTarget","GlStencilSystem","STENCIL_MODES","stencilState","stencilMode","stencilReference","mode","GpuStencilModesToPixi","_stencilCache","WGSL_TO_STD40_SIZE","createUboElementsSTD40","uniformData","uboElements","chunkSize","uboElement","boundary","curOffset","generateArraySyncSTD40","offsetToAdd","rowSize","elementSize","remainder","createUboSyncFunctionSTD40","createUboSyncFunction","uboSyncFunctionsSTD40","GlUboSystem","UboSystem","GlRenderTargetAdaptor","Rectangle","renderTargetSystem","sourceRenderSurfaceTexture","destinationTexture","originSrc","originDest","glRenderTarget","clear","clearColor","viewport","source","gpuRenderTarget","viewPortY","texture","viewPortCache","CanvasSource","renderBuffer","_renderTarget","CLEAR","clearColorCache","clearColorArray","resolveTargetFramebuffer","colorTexture","glTexture","viewFramebuffer","_","msaaRenderBuffer","source2","glInternalFormat","depthStencilRenderBuffer","resource","contextCanvas","canvasSource","GlRenderTargetSystem","RenderTargetSystem","generateShaderSyncCode","shaderSystem","funcFragments","headerFragments","addedTextreSystem","textureCount","programData","group","UniformGroup","resName","BufferResource","uniformName","functionSource","GlProgramData","compileShader","src","booleanArray","array","defaultValue","GL_TABLE","GL_TO_GLSL_TYPES","GLSL_TO_VERTEX_TYPES","mapType","typeNames","tn","mapGlToVertexFormat","typeValue","extractAttributesFromGlProgram","sortAttributes","totalAttributes","attribData","keys","getUboData","uniformBlocks","totalUniformsBlocks","name","uniformBlockIndex","getUniformData","uniforms","totalUniforms","isArray","logPrettyShaderError","shaderSrc","line","shaderLog","splitShader","dedupe","lineNumbers","n","logArgs","number","fragmentSourceToLog","logProgramError","vertexShader","fragmentShader","generateProgram","glVertShader","glFragShader","webGLProgram","transformFeedbackVaryings","defaultSyncData","GlShaderSystem","syncFunction","uniformGroup","isBufferResource","boundLocation","key","UNIFORM_TO_SINGLE_SETTERS","UNIFORM_TO_ARRAY_SETTERS","generateUniformsSync","uniform","parsed","uniformParsers","parser","template","GlUniformGroupSystem","syncData","uniformGroupSyncHash","preFix","mapWebGLBlendModesToPixi","blendMap","ext","BLEND","OFFSET","CULLING","DEPTH_TEST","WINDING","DEPTH_MASK","_GlStateSystem","diff","value","faceMode","scale","func","system","GlStateSystem","GlTexture","glUploadBufferImageResource","compressedFormatMap","glUploadCompressedTextureResource","mipWidth","mipHeight","compressed","levelBuffer","glUploadImageResource","webGLVersion","glWidth","glHeight","textureWidth","textureHeight","resourceWidth","resourceHeight","glUploadVideoResource","scaleModeToGlFilter","mipmapScaleModeToGlFilter","wrapModeToGlAddress","compareModeToGlCompare","applyStyleParams","style","mipmaps","anisotropicExt","glFunctionName","firstParam","forceClamp","firstCreation","castParam","wrapModeS","wrapModeT","wrapModeR","glFilterMode","level","mapFormatToGlFormat","mapFormatToGlInternalFormat","srgb","bgra8unorm","mapFormatToGlType","BYTES_PER_PIXEL","GlTextureSystem","sampler","boundTextures","biggestDimension","bind","glSampler","pixels","width","height","ctx","imageData","resolution","frame","glRenterTarget","GlGraphicsAdaptor","Matrix","maxTextures","glProgram","compileHighShaderGlProgram","colorBitGl","generateTextureBatchBitGl","localUniformBitGl","roundPixelsBitGl","getBatchSamplersUniformGroup","graphicsPipe","renderable","context","contextSystem","batcher","instructions","batches","GlMeshAdaptor","textureBitGl","meshPipe","mesh","DefaultWebGLSystems","SharedSystems","DefaultWebGLPipes","SharedRenderPipes","DefaultWebGLAdapters","systems","renderPipes","renderPipeAdaptors","WebGLRenderer","AbstractRenderer","systemConfig","RendererType"],"mappings":";;;AAIA,MAAMA,EAAe;AAAA,EACnB,cAAc;AACZ,SAAK,aAAaC,EAAM,MAAK,GAO7B,KAAK,iBAAiB,CAAA;AAAA,EACxB;AAAA,EACA,KAAKC,GAAa;AAChB,IAAAA,EAAY,SAAS,QAAQ,cAAc,IAAI,IAAI;AAAA,EACrD;AAAA,EACA,gBAAgB;AACd,SAAK,iBAAiB,CAAA;AAAA,EACxB;AAAA,EACA,MAAMC,GAAWC,GAAUC,GAAQ;AACjC,UAAMC,IAAWH,EAAU,UACrBI,IAAY,KAAK,eAAeF,EAAO,GAAG;AAChD,IAAAC,EAAS,OAAO,KAAKD,GAAQE,CAAS,GACjCA,MACH,KAAK,eAAeF,EAAO,GAAG,IAAI,KAEpCC,EAAS,OAAO,mBAAmBA,EAAS,eAAe,YAAY,GACvEA,EAAS,SAAS,KAAKF,GAAUC,EAAO,SAAS;AAAA,EACnD;AAAA,EACA,QAAQF,GAAWK,GAAO;AACxB,UAAMF,IAAWH,EAAU;AAC3B,SAAK,WAAW,YAAYK,EAAM,WAClCF,EAAS,MAAM,IAAI,KAAK,UAAU;AAClC,UAAMG,IAAWD,EAAM,SAAS;AAChC,aAAS,IAAI,GAAG,IAAIA,EAAM,SAAS,OAAO;AACxC,MAAAF,EAAS,QAAQ,KAAKG,EAAS,CAAC,GAAG,CAAC;AAEtC,IAAAH,EAAS,SAAS,KAAKE,EAAM,UAAUA,EAAM,MAAMA,EAAM,KAAK;AAAA,EAChE;AACF;AAEAR,EAAe,YAAY;AAAA,EACzB,MAAM;AAAA,IACJU,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AC/CA,IAAIC,IAA+B,kBAACC,OAClCA,EAAaA,EAAa,uBAA0B,KAAK,IAAI,wBAC7DA,EAAaA,EAAa,eAAkB,KAAK,IAAI,gBACrDA,EAAaA,EAAa,iBAAoB,KAAK,IAAI,kBAChDA,IACND,KAAe,CAAA,CAAE;ACLpB,MAAME,GAAS;AAAA,EACb,YAAYC,GAAQC,GAAM;AACxB,SAAK,wBAAwB,IAC7B,KAAK,kBAAkB,IACvB,KAAK,SAASD,KAAU,MACxB,KAAK,WAAW,IAChB,KAAK,aAAa,IAClB,KAAK,OAAOC;AAAA,EACd;AACF;ACJA,MAAMC,GAAe;AAAA;AAAA;AAAA;AAAA,EAInB,YAAYV,GAAU;AACpB,SAAK,cAA8B,uBAAO,OAAO,IAAI,GAErD,KAAK,oBAAoC,uBAAO,OAAO,IAAI,GAC3D,KAAK,mBAAmB,GACxB,KAAK,qBAAqB,KAAK,kBAC/B,KAAK,cAAc,GACnB,KAAK,YAAYA,GACjB,KAAK,UAAU,aAAa,eAAe,MAAM,aAAa;AAAA,EAChE;AAAA;AAAA,EAEA,UAAU;AACR,SAAK,YAAY,MACjB,KAAK,MAAM,MACX,KAAK,cAAc,MACnB,KAAK,oBAAoB;AAAA,EAC3B;AAAA;AAAA,EAEA,gBAAgB;AACd,SAAK,MAAM,KAAK,UAAU,IAC1B,KAAK,cAA8B,uBAAO,OAAO,IAAI,GACrD,KAAK,eAAe,KAAK,UAAU,OAAO;AAAA,EAC5C;AAAA,EACA,YAAYQ,GAAQ;AAClB,WAAO,KAAK,YAAYA,EAAO,GAAG,KAAK,KAAK,eAAeA,CAAM;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAKA,GAAQ;AACX,UAAM,EAAE,KAAKG,EAAE,IAAK,MACdC,IAAW,KAAK,YAAYJ,CAAM;AACxC,IAAAG,EAAG,WAAWC,EAAS,MAAMA,EAAS,MAAM;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAeA,GAAUC,GAAO;AAC9B,UAAM,EAAE,KAAKF,EAAE,IAAK;AACpB,IAAI,KAAK,kBAAkBE,CAAK,MAAMD,MACpC,KAAK,kBAAkBC,CAAK,IAAID,GAChCA,EAAS,wBAAwBC,GACjCF,EAAG,eAAeA,EAAG,gBAAgBE,GAAOD,EAAS,MAAM;AAAA,EAE/D;AAAA,EACA,aAAaE,GAAsB;AACjC,SAAK,eACL,KAAK,mBAAmB,GACpBA,MACF,KAAK,kBAAkB,CAAC,IAAI,MAC5B,KAAK,mBAAmB,GACpB,KAAK,qBAAqB,MAC5B,KAAK,qBAAqB;AAAA,EAGhC;AAAA,EACA,0BAA0BF,GAAU;AAClC,QAAIG,IAAY,KAAK,wBAAwBH,CAAQ;AACrD,QAAIG,KAAa,KAAK;AACpB,aAAAH,EAAS,kBAAkB,KAAK,aACzBG;AAET,QAAIC,IAAO,GACPC,IAAY,KAAK;AACrB,WAAOD,IAAO,KAAG;AACf,MAAIC,KAAa,KAAK,iBACpBA,IAAY,KAAK,kBACjBD;AAEF,YAAME,IAAS,KAAK,kBAAkBD,CAAS;AAC/C,UAAIC,KAAUA,EAAO,oBAAoB,KAAK,aAAa;AACzD,QAAAD;AACA;AAAA,MACF;AACA;AAAA,IACF;AAGA,WAFAF,IAAYE,GACZ,KAAK,qBAAqBA,IAAY,GAClCD,KAAQ,IACH,MAETJ,EAAS,kBAAkB,KAAK,aAChC,KAAK,kBAAkBG,CAAS,IAAI,MAC7BA;AAAA,EACT;AAAA,EACA,wBAAwBH,GAAU;AAChC,UAAMC,IAAQD,EAAS;AACvB,WAAI,KAAK,kBAAkBC,CAAK,MAAMD,IAC7BC,IAEF;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,gBAAgBD,GAAUC,GAAOM,GAAQC,GAAM;AAC7C,UAAM,EAAE,KAAKT,EAAE,IAAK;AACpB,IAAAQ,MAAWA,IAAS,IACpBN,MAAUA,IAAQ,IAClB,KAAK,kBAAkBA,CAAK,IAAI,MAChCF,EAAG,gBAAgBA,EAAG,gBAAgBE,KAAS,GAAGD,EAAS,QAAQO,IAAS,KAAKC,KAAQ,GAAG;AAAA,EAC9F;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaZ,GAAQ;AACnB,UAAM,EAAE,KAAKG,EAAE,IAAK,MACdC,IAAW,KAAK,YAAYJ,CAAM;AACxC,QAAIA,EAAO,cAAcI,EAAS;AAChC,aAAOA;AAET,IAAAA,EAAS,WAAWJ,EAAO,WAC3BG,EAAG,WAAWC,EAAS,MAAMA,EAAS,MAAM;AAC5C,UAAMS,IAAOb,EAAO,MACdc,IAAWd,EAAO,WAAW,QAAQe,EAAY,SAASZ,EAAG,cAAcA,EAAG;AACpF,WAAIU,IACET,EAAS,cAAcS,EAAK,aAC9BV,EAAG,cAAcC,EAAS,MAAM,GAAGS,GAAM,GAAGb,EAAO,cAAca,EAAK,iBAAiB,KAEvFT,EAAS,aAAaS,EAAK,YAC3BV,EAAG,WAAWC,EAAS,MAAMS,GAAMC,CAAQ,MAG7CV,EAAS,aAAaJ,EAAO,WAAW,MACxCG,EAAG,WAAWC,EAAS,MAAMA,EAAS,YAAYU,CAAQ,IAErDV;AAAA,EACT;AAAA;AAAA,EAEA,aAAa;AACX,UAAMD,IAAK,KAAK;AAChB,eAAWa,KAAM,KAAK;AACpB,MAAAb,EAAG,aAAa,KAAK,YAAYa,CAAE,EAAE,MAAM;AAE7C,SAAK,cAA8B,uBAAO,OAAO,IAAI;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgBhB,GAAQiB,GAAa;AACnC,UAAMb,IAAW,KAAK,YAAYJ,EAAO,GAAG,GACtCG,IAAK,KAAK;AAChB,IAAKc,KACHd,EAAG,aAAaC,EAAS,MAAM,GAEjC,KAAK,YAAYJ,EAAO,GAAG,IAAI;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAeA,GAAQ;AACrB,UAAM,EAAE,KAAKG,EAAE,IAAK;AACpB,QAAIF,IAAOJ,EAAY;AACvB,IAAIG,EAAO,WAAW,QAAQe,EAAY,QACxCd,IAAOJ,EAAY,uBACVG,EAAO,WAAW,QAAQe,EAAY,YAC/Cd,IAAOJ,EAAY;AAErB,UAAMO,IAAW,IAAIL,GAASI,EAAG,aAAY,GAAIF,CAAI;AACrD,gBAAK,YAAYD,EAAO,GAAG,IAAII,GAC/BJ,EAAO,GAAG,WAAW,KAAK,iBAAiB,IAAI,GACxCI;AAAA,EACT;AAAA,EACA,aAAa;AACX,SAAK,oBAAoC,uBAAO,OAAO,IAAI;AAAA,EAC7D;AACF;AAEAF,GAAe,YAAY;AAAA,EACzB,MAAM;AAAA,IACJN,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;ACjMA,MAAMsB,IAAmB,MAAMA,GAAiB;AAAA;AAAA,EAE9C,YAAY1B,GAAU;AAMpB,SAAK,WAAW;AAAA;AAAA,MAEd,eAAe;AAAA;AAAA,MAEf,qBAAqB;AAAA;AAAA,MAErB,mBAAmB;AAAA;AAAA,MAEnB,cAAc;AAAA;AAAA,MAEd,mBAAmB;AAAA;AAAA,MAEnB,MAAM;AAAA;AAAA,MAEN,kBAAkB;AAAA,IACxB,GACI,KAAK,YAAYA,GACjB,KAAK,aAA6B,uBAAO,OAAO,IAAI,GACpD,KAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI,GACzD,KAAK,wBAAwB,KAAK,sBAAsB,KAAK,IAAI;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAS;AACX,WAAO,CAAC,KAAK,MAAM,KAAK,GAAG,cAAa;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAcW,GAAI;AAChB,SAAK,KAAKA,GACV,KAAK,UAAU,KAAKA;AAAA,EACtB;AAAA,EACA,KAAKgB,GAAS;AACZ,IAAAA,IAAU,EAAE,GAAGD,GAAiB,gBAAgB,GAAGC,EAAO;AAC1D,QAAIC,IAAY,KAAK,YAAYD,EAAQ;AAUzC,QATIA,EAAQ,WAAWC,MACrBC,EAAK,+GAA+G,GACpHD,IAAY,KAEVA,IACF,KAAK,SAASE,EAAW,IAAG,EAAG,aAAa,KAAK,UAAU,OAAO,OAAO,KAAK,UAAU,OAAO,MAAM,IAErG,KAAK,SAAS,KAAK,UAAU,KAAK,QAEhCH,EAAQ;AACV,WAAK,gBAAgBA,EAAQ,OAAO;AAAA,SAC/B;AACL,YAAMI,IAAQ,KAAK,UAAU,WAAW,QAAQ,GAC1CC,IAAqBL,EAAQ,sBAAsB,IACnDM,IAAYN,EAAQ,aAAa,CAAC,KAAK,UAAU,WAAW;AAClE,WAAK,cAAcA,EAAQ,oBAAoB;AAAA,QAC7C,OAAAI;AAAA,QACA,oBAAAC;AAAA,QACA,WAAAC;AAAA,QACA,SAAS;AAAA,QACT,uBAAuBN,EAAQ;AAAA,QAC/B,iBAAiBA,EAAQ,mBAAmB;AAAA,MACpD,CAAO;AAAA,IACH;AAAA,EACF;AAAA,EACA,iBAAiBO,GAAc;AAC7B,QAAI,CAAC,KAAK,WAAW;AACnB,MAAIA,MAAiB,KAAK,UACxBL,EAAK,gEAAgE;AAEvE;AAAA,IACF;AACA,UAAM,EAAE,QAAAM,EAAM,IAAK;AACnB,KAAIA,EAAO,QAAQD,EAAa,SAASC,EAAO,SAASD,EAAa,YACpEC,EAAO,QAAQ,KAAK,IAAID,EAAa,OAAOA,EAAa,KAAK,GAC9DC,EAAO,SAAS,KAAK,IAAID,EAAa,QAAQA,EAAa,MAAM;AAAA,EAErE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAgBvB,GAAI;AAClB,SAAK,KAAKA,GACV,KAAK,eAAeA,aAAcmB,EAAW,IAAG,EAAG,yBAAwB,IAAK,IAAI,GACpF,KAAK,cAAa,GAClB,KAAK,gBAAgBnB,CAAE,GACvB,KAAK,UAAU,QAAQ,cAAc,KAAKA,CAAE;AAC5C,UAAMyB,IAAU,KAAK,UAAU,KAAK;AACpC,IAAAA,EAAQ,iBAAiB,oBAAoB,KAAK,mBAAmB,EAAK,GAC1EA,EAAQ,iBAAiB,wBAAwB,KAAK,uBAAuB,EAAK;AAAA,EACpF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAcC,GAAoBV,GAAS;AACzC,QAAIhB;AACJ,UAAMwB,IAAS,KAAK;AAIpB,QAHIE,MAAuB,MACzB1B,IAAKwB,EAAO,WAAW,UAAUR,CAAO,IAEtC,CAAChB,MACHA,IAAKwB,EAAO,WAAW,SAASR,CAAO,GACnC,CAAChB;AACH,YAAM,IAAI,MAAM,oEAAoE;AAGxF,SAAK,KAAKA,GACV,KAAK,gBAAgB,KAAK,EAAE;AAAA,EAC9B;AAAA;AAAA,EAEA,gBAAgB;AACd,UAAM,EAAE,IAAAA,EAAE,IAAK,MACT2B,IAAS;AAAA,MACb,sBAAsB3B,EAAG,aAAa,gCAAgC;AAAA,MACtE,oBAAoBA,EAAG,aAAa,0BAA0B;AAAA,MAC9D,MAAMA,EAAG,aAAa,+BAA+B;AAAA,MACrD,WAAWA,EAAG,aAAa,oCAAoC;AAAA;AAAA,MAE/D,KAAKA,EAAG,aAAa,8BAA8B;AAAA,MACnD,MAAMA,EAAG,aAAa,+BAA+B;AAAA,MACrD,OAAOA,EAAG,aAAa,gCAAgC,KAAKA,EAAG,aAAa,uCAAuC;AAAA,MACnH,KAAKA,EAAG,aAAa,8BAA8B;AAAA,MACnD,MAAMA,EAAG,aAAa,+BAA+B;AAAA,MACrD,MAAMA,EAAG,aAAa,8BAA8B;AAAA,MACpD,MAAMA,EAAG,aAAa,8BAA8B;AAAA,MACpD,aAAaA,EAAG,aAAa,oBAAoB;AAAA,IACvD;AACI,QAAI,KAAK,iBAAiB;AACxB,WAAK,aAAa;AAAA,QAChB,GAAG2B;AAAA,QACH,aAAa3B,EAAG,aAAa,oBAAoB;AAAA,QACjD,cAAcA,EAAG,aAAa,qBAAqB;AAAA,QACnD,mBAAmBA,EAAG,aAAa,yBAAyB,KAAKA,EAAG,aAAa,6BAA6B,KAAKA,EAAG,aAAa,gCAAgC;AAAA,QACnK,oBAAoBA,EAAG,aAAa,wBAAwB;AAAA;AAAA,QAE5D,cAAcA,EAAG,aAAa,mBAAmB;AAAA,QACjD,oBAAoBA,EAAG,aAAa,0BAA0B;AAAA,QAC9D,kBAAkBA,EAAG,aAAa,wBAAwB;AAAA,QAC1D,wBAAwBA,EAAG,aAAa,+BAA+B;AAAA,QACvE,0BAA0BA,EAAG,aAAa,wBAAwB;AAAA,QAClE,MAAMA,EAAG,aAAa,UAAU;AAAA,MACxC;AAAA,SACW;AACL,WAAK,aAAa;AAAA,QAChB,GAAG2B;AAAA,QACH,kBAAkB3B,EAAG,aAAa,wBAAwB;AAAA,MAClE;AACM,YAAM4B,IAAa5B,EAAG,aAAa,wBAAwB;AAC3D,MAAI4B,KACFA,EAAW,qBAAqBA,EAAW,6BAA6B;AAAA,IAE5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkBC,GAAO;AACvB,IAAAA,EAAM,eAAc,GAChB,KAAK,uBACP,KAAK,qBAAqB,IAC1B,WAAW,MAAM;;AACf,MAAI,KAAK,GAAG,qBACVC,IAAA,KAAK,WAAW,gBAAhB,QAAAA,EAA6B;AAAA,IAEjC,GAAG,CAAC;AAAA,EAER;AAAA;AAAA,EAEA,wBAAwB;AACtB,SAAK,cAAa,GAClB,KAAK,UAAU,QAAQ,cAAc,KAAK,KAAK,EAAE;AAAA,EACnD;AAAA,EACA,UAAU;;AACR,UAAML,IAAU,KAAK,UAAU,KAAK;AACpC,SAAK,YAAY,MACjBA,EAAQ,oBAAoB,oBAAoB,KAAK,iBAAiB,GACtEA,EAAQ,oBAAoB,wBAAwB,KAAK,qBAAqB,GAC9E,KAAK,GAAG,WAAW,IAAI,IACvBK,IAAA,KAAK,WAAW,gBAAhB,QAAAA,EAA6B;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB;;AACjB,KAAAA,IAAA,KAAK,WAAW,gBAAhB,QAAAA,EAA6B,eAC7B,KAAK,qBAAqB;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB9B,GAAI;AAClB,UAAM+B,IAAa/B,EAAG,qBAAoB;AAC1C,IAAI+B,KAAc,CAACA,EAAW,WAC5Bb,EAAK,uFAAuF;AAE9F,UAAMc,IAAW,KAAK,UAChBC,IAAW,KAAK,iBAAiB,GACjCC,IAAa,KAAK;AACxB,IAAAF,EAAS,gBAAgBC,KAAY,CAAC,CAACC,EAAW,oBAClDF,EAAS,sBAAsBC,GAC/BD,EAAS,oBAAoBC,KAAY,CAAC,CAACC,EAAW,mBACtDF,EAAS,eAAeC,KAAY,CAAC,CAACC,EAAW,MACjDF,EAAS,oBAAoBC,GAC7BD,EAAS,mBAAmBC,GAC5BD,EAAS,OAAOC,GACXD,EAAS,iBACZd,EAAK,gGAAgG;AAAA,EAEzG;AACF;AAEAH,EAAiB,YAAY;AAAA,EAC3B,MAAM;AAAA,IACJtB,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AAEAsB,EAAiB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhC,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKT,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,WAAW;AACb;AACA,IAAIoB,KAAkBpB;ACjRtB,IAAIqB,IAA8B,kBAACC,OACjCA,EAAYA,EAAY,OAAU,IAAI,IAAI,QAC1CA,EAAYA,EAAY,MAAS,IAAI,IAAI,OACzCA,EAAYA,EAAY,KAAQ,KAAK,IAAI,MACzCA,EAAYA,EAAY,MAAS,IAAI,IAAI,OACzCA,EAAYA,EAAY,eAAkB,KAAK,IAAI,gBACnDA,EAAYA,EAAY,cAAiB,KAAK,IAAI,eAClDA,EAAYA,EAAY,aAAgB,KAAK,IAAI,cACjDA,EAAYA,EAAY,cAAiB,KAAK,IAAI,eAClDA,EAAYA,EAAY,QAAW,IAAI,IAAI,SAC3CA,EAAYA,EAAY,YAAe,IAAI,IAAI,aAC/CA,EAAYA,EAAY,kBAAqB,IAAI,IAAI,mBACrDA,EAAYA,EAAY,kBAAqB,IAAI,IAAI,mBACrDA,EAAYA,EAAY,gBAAmB,KAAK,IAAI,iBAC7CA,IACND,KAAc,CAAA,CAAE,GACfE,KAA8B,kBAACC,OACjCA,EAAYA,EAAY,aAAgB,IAAI,IAAI,cAChDA,EAAYA,EAAY,mBAAsB,KAAK,IAAI,oBACvDA,EAAYA,EAAY,mBAAsB,KAAK,IAAI,oBACvDA,EAAYA,EAAY,8BAAiC,KAAK,IAAI,+BAClEA,EAAYA,EAAY,8BAAiC,KAAK,IAAI,+BAClEA,EAAYA,EAAY,8BAAiC,KAAK,IAAI,+BAClEA,EAAYA,EAAY,8BAAiC,KAAK,IAAI,+BAClEA,EAAYA,EAAY,8BAAiC,KAAK,IAAI,+BAClEA,EAAYA,EAAY,8BAAiC,KAAK,IAAI,+BAC3DA,IACND,MAAc,CAAA,CAAE,GAOfE,IAA4B,kBAACC,OAC/BA,EAAUA,EAAU,gBAAmB,IAAI,IAAI,iBAC/CA,EAAUA,EAAU,iBAAoB,IAAI,IAAI,kBAChDA,EAAUA,EAAU,uBAA0B,KAAK,IAAI,wBACvDA,EAAUA,EAAU,yBAA4B,KAAK,IAAI,0BACzDA,EAAUA,EAAU,yBAA4B,KAAK,IAAI,0BACzDA,EAAUA,EAAU,eAAkB,IAAI,IAAI,gBAC9CA,EAAUA,EAAU,+BAAkC,KAAK,IAAI,gCAC/DA,EAAUA,EAAU,8BAAiC,KAAK,IAAI,+BAC9DA,EAAUA,EAAU,oBAAuB,KAAK,IAAI,qBACpDA,EAAUA,EAAU,2BAA8B,KAAK,IAAI,4BAC3DA,EAAUA,EAAU,OAAU,IAAI,IAAI,QACtCA,EAAUA,EAAU,QAAW,IAAI,IAAI,SACvCA,EAAUA,EAAU,MAAS,IAAI,IAAI,OACrCA,EAAUA,EAAU,QAAW,IAAI,IAAI,SACvCA,EAAUA,EAAU,iCAAoC,KAAK,IAAI,kCACjEA,EAAUA,EAAU,aAAgB,KAAK,IAAI,cACtCA,IACND,KAAY,CAAA,CAAE;AClDjB,MAAME,IAAU;AAAA,EACd,SAASF,EAAS;AAAA,EAClB,SAASA,EAAS;AAAA,EAClB,SAASA,EAAS;AAAA,EAClB,SAASA,EAAS;AAAA,EAClB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,SAASA,EAAS;AAAA,EAClB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,WAAWA,EAAS;AAAA,EACpB,QAAQA,EAAS;AAAA,EACjB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,QAAQA,EAAS;AAAA,EACjB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AAAA,EACnB,UAAUA,EAAS;AACrB;AACA,SAASG,GAAoBC,GAAQ;AACnC,SAAOF,EAAQE,CAAM,KAAKF,EAAQ;AACpC;AC/BA,MAAMG,KAAkB;AAAA,EACtB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AACA,MAAMC,GAAiB;AAAA;AAAA,EAErB,YAAYzD,GAAU;AACpB,SAAK,mBAAmC,uBAAO,OAAO,IAAI,GAC1D,KAAK,YAAYA,GACjB,KAAK,kBAAkB,MACvB,KAAK,aAAa,MAClB,KAAK,SAAS,IACd,KAAK,cAAc,IACnB,KAAK,UAAU,aAAa,eAAe,MAAM,kBAAkB;AAAA,EACrE;AAAA;AAAA,EAEA,gBAAgB;AACd,UAAMW,IAAK,KAAK,KAAK,KAAK,UAAU;AACpC,QAAI,CAAC,KAAK,UAAU,QAAQ,SAAS;AACnC,YAAM,IAAI,MAAM,gEAAgE;AAElF,UAAM+C,IAAqB,KAAK,UAAU,QAAQ,WAAW;AAC7D,IAAIA,MACF/C,EAAG,oBAAoB,MAAM+C,EAAmB,qBAAoB,GACpE/C,EAAG,kBAAkB,CAACgD,MAAQD,EAAmB,mBAAmBC,CAAG,GACvEhD,EAAG,oBAAoB,CAACgD,MAAQD,EAAmB,qBAAqBC,CAAG;AAE7E,UAAMC,IAA2B,KAAK,UAAU,QAAQ,WAAW;AACnE,IAAIA,MACFjD,EAAG,sBAAsB,CAACkD,GAAGC,GAAGC,GAAGC,MAAM;AACvC,MAAAJ,EAAyB,yBAAyBC,GAAGC,GAAGC,GAAGC,CAAC;AAAA,IAC9D,GACArD,EAAG,wBAAwB,CAACkD,GAAGC,GAAGC,GAAGC,GAAGC,MAAM;AAC5C,MAAAL,EAAyB,2BAA2BC,GAAGC,GAAGC,GAAGC,GAAGC,CAAC;AAAA,IACnE,GACAtD,EAAG,sBAAsB,CAACkD,GAAGC,MAAMF,EAAyB,yBAAyBC,GAAGC,CAAC,IAE3F,KAAK,kBAAkB,MACvB,KAAK,aAAa,MAClB,KAAK,mBAAmC,uBAAO,OAAO,IAAI;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,KAAKhE,GAAUoE,GAAS;AACtB,UAAMvD,IAAK,KAAK;AAChB,SAAK,kBAAkBb;AACvB,UAAM6D,IAAM,KAAK,OAAO7D,GAAUoE,CAAO;AACzC,IAAI,KAAK,eAAeP,MACtB,KAAK,aAAaA,GAClBhD,EAAG,gBAAgBgD,CAAG,IAExB,KAAK,cAAa;AAAA,EACpB;AAAA;AAAA,EAEA,aAAa;AACX,SAAK,OAAM;AAAA,EACb;AAAA;AAAA,EAEA,gBAAgB;AACd,UAAM7D,IAAW,KAAK,iBAChBqE,IAAe,KAAK,UAAU;AACpC,aAASC,IAAI,GAAGA,IAAItE,EAAS,QAAQ,QAAQsE,KAAK;AAChD,YAAM5D,IAASV,EAAS,QAAQsE,CAAC;AACjC,MAAAD,EAAa,aAAa3D,CAAM;AAAA,IAClC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmBV,GAAUoE,GAAS;AACpC,UAAMG,IAAqBvE,EAAS,YAC9BwE,IAAmBJ,EAAQ;AACjC,eAAWK,KAAKD;AACd,UAAI,CAACD,EAAmBE,CAAC;AACvB,cAAM,IAAI,MAAM,2DAA2DA,CAAC,aAAa;AAAA,EAG/F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAazE,GAAUoE,GAAS;AAC9B,UAAMM,IAAU1E,EAAS,YACnBwE,IAAmBJ,EAAQ,gBAC3BO,IAAU,CAAC,KAAK3E,EAAS,GAAG;AAClC,eAAWsE,KAAKI;AACd,MAAIF,EAAiBF,CAAC,KACpBK,EAAQ,KAAKL,GAAGE,EAAiBF,CAAC,EAAE,QAAQ;AAGhD,WAAOK,EAAQ,KAAK,GAAG;AAAA,EACzB;AAAA,EACA,OAAO3E,GAAUoE,GAAS;;AACxB,aAAOzB,IAAA,KAAK,iBAAiB3C,EAAS,GAAG,MAAlC,gBAAA2C,EAAsCyB,EAAQ,UAAS,KAAK,gBAAgBpE,GAAUoE,CAAO;AAAA,EACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,gBAAgBpE,GAAUoE,GAASQ,IAAe,IAAM;AACtD,UAAM/D,IAAK,KAAK,UAAU,IACpBwD,IAAe,KAAK,UAAU;AACpC,SAAK,UAAU,OAAO,gBAAgBD,CAAO,GAC7C,KAAK,mBAAmBpE,GAAUoE,CAAO;AACzC,UAAMS,IAAY,KAAK,aAAa7E,GAAUoE,CAAO;AACrD,IAAK,KAAK,iBAAiBpE,EAAS,GAAG,MACrC,KAAK,iBAAiBA,EAAS,GAAG,IAAoB,uBAAO,OAAO,IAAI,GACxEA,EAAS,GAAG,WAAW,KAAK,mBAAmB,IAAI;AAErD,UAAM8E,IAAgB,KAAK,iBAAiB9E,EAAS,GAAG;AACxD,QAAI6D,IAAMiB,EAAcD,CAAS;AACjC,QAAIhB;AACF,aAAAiB,EAAcV,EAAQ,IAAI,IAAIP,GACvBA;AAET,IAAAkB,GAAiB/E,GAAUoE,EAAQ,cAAc;AACjD,UAAMY,IAAUhF,EAAS;AACzB,IAAA6D,IAAMhD,EAAG,kBAAiB,GAC1BA,EAAG,gBAAgBgD,CAAG;AACtB,aAASS,IAAI,GAAGA,IAAIU,EAAQ,QAAQV,KAAK;AACvC,YAAM5D,IAASsE,EAAQV,CAAC;AACxB,MAAAD,EAAa,KAAK3D,CAAM;AAAA,IAC1B;AACA,gBAAK,YAAYV,GAAUoE,CAAO,GAClCU,EAAcV,EAAQ,IAAI,IAAIP,GAC9BiB,EAAcD,CAAS,IAAIhB,GAC3BhD,EAAG,gBAAgB,IAAI,GAChBgD;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB7D,GAAU2B,GAAa;AACvC,UAAMmD,IAAgB,KAAK,iBAAiB9E,EAAS,GAAG,GAClDa,IAAK,KAAK;AAChB,QAAIiE,GAAe;AACjB,UAAInD;AACF,mBAAW,KAAKmD;AACd,UAAI,KAAK,eAAeA,EAAc,CAAC,KACrC,KAAK,OAAM,GAEbjE,EAAG,kBAAkBiE,EAAc,CAAC,CAAC;AAGzC,WAAK,iBAAiB9E,EAAS,GAAG,IAAI;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW2B,IAAc,IAAO;AAC9B,UAAMd,IAAK,KAAK;AAChB,eAAWyD,KAAK,KAAK,kBAAkB;AACrC,UAAI3C;AACF,mBAAW8C,KAAK,KAAK,iBAAiBH,CAAC,GAAG;AACxC,gBAAMQ,IAAgB,KAAK,iBAAiBR,CAAC;AAC7C,UAAI,KAAK,eAAeQ,KACtB,KAAK,OAAM,GAEbjE,EAAG,kBAAkBiE,EAAcL,CAAC,CAAC;AAAA,QACvC;AAEF,WAAK,iBAAiBH,CAAC,IAAI;AAAA,IAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAYtE,GAAUoE,GAAS;;AAC7B,UAAMvD,IAAK,KAAK,UAAU,IACpBwD,IAAe,KAAK,UAAU,QAC9BzB,IAAa5C,EAAS;AAC5B,IAAIA,EAAS,eACXqE,EAAa,KAAKrE,EAAS,WAAW;AAExC,QAAIiF,IAAa;AACjB,eAAWR,KAAK7B,GAAY;AAC1B,YAAMsC,IAAYtC,EAAW6B,CAAC,GACxB/D,IAASwE,EAAU,QACnBpE,IAAWuD,EAAa,YAAY3D,CAAM,GAC1CyE,IAAgBf,EAAQ,eAAeK,CAAC;AAC9C,UAAIU,GAAe;AACjB,QAAIF,MAAenE,MACjBuD,EAAa,KAAK3D,CAAM,GACxBuE,IAAanE;AAEf,cAAMsE,IAAWD,EAAc;AAC/B,QAAAtE,EAAG,wBAAwBuE,CAAQ;AACnC,cAAMC,IAAgBC,EAA2BJ,EAAU,MAAM,GAC3DvE,IAAO6C,GAAoB0B,EAAU,MAAM;AAmBjD,cAlBIvC,IAAAwC,EAAc,WAAd,gBAAAxC,EAAsB,UAAU,GAAG,QAAO,QAC5C9B,EAAG;AAAA,UACDuE;AAAA,UACAC,EAAc;AAAA,UACd1E;AAAA,UACAuE,EAAU;AAAA,UACVA,EAAU;AAAA,QACtB,IAEUrE,EAAG;AAAA,UACDuE;AAAA,UACAC,EAAc;AAAA,UACd1E;AAAA,UACA0E,EAAc;AAAA,UACdH,EAAU;AAAA,UACVA,EAAU;AAAA,QACtB,GAEYA,EAAU;AACZ,cAAI,KAAK,aAAa;AACpB,kBAAMK,KAAUL,EAAU,WAAW;AACrC,YAAArE,EAAG,oBAAoBuE,GAAUG,EAAO;AAAA,UAC1C;AACE,kBAAM,IAAI,MAAM,gEAAgE;AAAA,MAGtF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,KAAKC,GAAUlE,GAAMmE,GAAOC,GAAe;AACzC,UAAM,EAAE,IAAA7E,MAAO,KAAK,WACdb,IAAW,KAAK,iBAChB2F,IAAajC,GAAgB8B,KAAYxF,EAAS,QAAQ;AAEhE,QADA0F,MAAkBA,IAAgB1F,EAAS,gBACvCA,EAAS,aAAa;AACxB,YAAM4F,IAAW5F,EAAS,YAAY,KAAK,mBACrC6F,IAASD,MAAa,IAAI/E,EAAG,iBAAiBA,EAAG;AACvD,MAAI6E,IAAgB,IAClB7E,EAAG,sBAAsB8E,GAAYrE,KAAQtB,EAAS,YAAY,KAAK,QAAQ6F,IAASJ,KAAS,KAAKG,GAAUF,CAAa,IAE7H7E,EAAG,aAAa8E,GAAYrE,KAAQtB,EAAS,YAAY,KAAK,QAAQ6F,IAASJ,KAAS,KAAKG,CAAQ;AAAA,IAEzG,MAAO,CAAIF,IAAgB,IACzB7E,EAAG,oBAAoB8E,GAAYF,KAAS,GAAGnE,KAAQtB,EAAS,QAAO,GAAI0F,CAAa,IAExF7E,EAAG,WAAW8E,GAAYF,KAAS,GAAGnE,KAAQtB,EAAS,SAAS;AAElE,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,SAAS;AACP,SAAK,GAAG,gBAAgB,IAAI,GAC5B,KAAK,aAAa,MAClB,KAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,UAAU;AACR,SAAK,YAAY,MACjB,KAAK,KAAK,MACV,KAAK,aAAa,MAClB,KAAK,kBAAkB;AAAA,EACzB;AACF;AAEA2D,GAAiB,YAAY;AAAA,EAC3B,MAAM;AAAA,IACJrD,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AC7RA,MAAMwF,KAAsB,IAAIC,GAAS;AAAA,EACvC,YAAY;AAAA,IACV,WAAW;AAAA,MACT;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA,IAEN;AAAA,EACA;AACA,CAAC,GACKC,IAAsB,MAAMA,GAAoB;AAAA,EACpD,YAAY9F,GAAU;AAEpB,SAAK,gBAAgB,IACrB,KAAK,2BAA2B,IAChC,KAAK,YAAYA;AAAA,EACnB;AAAA,EACA,KAAK2B,IAAU,IAAI;AACjB,UAAM,EAAE,eAAAoE,GAAe,WAAA9D,EAAS,IAAK,EAAE,GAAG6D,GAAoB,gBAAgB,GAAGnE,EAAO;AACxF,SAAK,gBAAgBoE,GACrB,KAAK,aAAa9D,GACb,KAAK,UAAU,QAAQ,SAAS,SACnCJ,EAAK,8DAA8D,GACnE,KAAK,aAAa,KAEpB,KAAK,SAASlC,EAAM,MAAK;AACzB,UAAMqG,IAAqB,IAAIC,GAAU;AAAA,MACvC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYR,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASV,MAAM;AAAA,IACZ,CAAK;AACD,SAAK,qBAAqB,IAAIC,EAAO;AAAA,MACnC,WAAWF;AAAA,MACX,WAAW;AAAA,QACT,UAAUG,EAAQ,MAAM;AAAA,MAChC;AAAA,IACA,CAAK;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAYxE,GAAS;AACnB,UAAMyE,IAAe,KAAK,UAAU,aAAa,gBAAgBzE,EAAQ,MAAM;AAE/E,QADA,KAAK,2BAA2B,KAAK,iBAAiB,CAAC,CAACyE,EAAa,QACjE,KAAK,0BAA0B;AACjC,YAAMC,IAAgB,KAAK,UAAU,aAAa,gBAAgB1E,EAAQ,MAAM;AAChF,WAAK,iBAAiB0E,EAAc,cACpC1E,EAAQ,SAAS,KAAK,sBAAsB0E,EAAc,YAAY;AAAA,IACxE;AAAA,EACF;AAAA,EACA,YAAY;AACV,SAAK,mBAAkB;AAAA,EACzB;AAAA,EACA,qBAAqB;AACnB,UAAMrG,IAAW,KAAK;AAEtB,IADAA,EAAS,aAAa,iBAAgB,GACjC,KAAK,6BAEVA,EAAS,aAAa,KAAK,KAAK,gBAAgB,EAAK,GACrD,KAAK,mBAAmB,UAAU,WAAW,KAAK,mBAAmB,QACrEA,EAAS,QAAQ,KAAK;AAAA,MACpB,UAAU4F;AAAA,MACV,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IAClB,CAAK;AAAA,EACH;AAAA,EACA,sBAAsBU,GAAqB;AACzC,gBAAK,qBAAqB,KAAK,sBAAsB,IAAIH,EAAQ;AAAA,MAC/D,QAAQ,IAAII,EAAc;AAAA,QACxB,OAAOD,EAAoB;AAAA,QAC3B,QAAQA,EAAoB;AAAA,QAC5B,YAAYA,EAAoB;AAAA,QAChC,WAAW,KAAK;AAAA,MACxB,CAAO;AAAA,IACP,CAAK,GACD,KAAK,mBAAmB,OAAO;AAAA,MAC7BA,EAAoB;AAAA,MACpBA,EAAoB;AAAA,MACpBA,EAAoB;AAAA,IAC1B,GACW,KAAK;AAAA,EACd;AAAA;AAAA,EAEA,UAAU;AACR,IAAI,KAAK,uBACP,KAAK,mBAAmB,QAAO,GAC/B,KAAK,qBAAqB;AAAA,EAE9B;AACF;AAEAR,EAAoB,YAAY;AAAA,EAC9B,MAAM;AAAA,IACJ1F,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ;AAEA0F,EAAoB,iBAAiB;AAAA;AAAA,EAEnC,eAAe;AACjB;AACA,IAAIU,KAAqBV;ACxIzB,MAAMW,GAAkB;AAAA,EACtB,YAAYzG,GAAU;AACpB,SAAK,kBAAkB,IACvB,KAAK,YAAYA;AAAA,EACnB;AAAA,EACA,QAAQ0G,GAAW;AACjB,IAAI,KAAK,oBAAoBA,MAE7B,KAAK,kBAAkBA,GACvB,KAAK,UAAU,GAAG;AAAA,MAChB,CAAC,EAAEA,IAAY;AAAA,MACf,CAAC,EAAEA,IAAY;AAAA,MACf,CAAC,EAAEA,IAAY;AAAA,MACf,CAAC,EAAEA,IAAY;AAAA,IACrB;AAAA,EACE;AACF;AAEAD,GAAkB,YAAY;AAAA,EAC5B,MAAM;AAAA,IACJrG,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;ACvBA,MAAMuG,GAAgB;AAAA,EACpB,YAAY3G,GAAU;AACpB,SAAK,kBAAkB,QAAQ,QAAO,GACtC,KAAK,YAAYA;AAAA,EACnB;AAAA,EACA,YAAYF,GAAUC,GAAQ;AAC5B,SAAK,UAAU,SAAS,KAAKD,GAAUC,EAAO,SAAS;AAAA,EACzD;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,EACA,KAAK4B,GAAS;AACZ,UAAM3B,IAAW,KAAK,WAChB,EAAE,UAAAF,GAAU,QAAAC,GAAQ,OAAA6G,GAAO,UAAAC,GAAU,UAAUpG,GAAM,MAAAW,GAAM,OAAAmE,GAAO,eAAAC,EAAa,IAAK7D;AAC1F,IAAA3B,EAAS,OAAO,KAAKD,GAAQ8G,CAAQ,GACrC7G,EAAS,SAAS,KAAKF,GAAUE,EAAS,OAAO,cAAc,GAC3D4G,KACF5G,EAAS,MAAM,IAAI4G,CAAK,GAE1B5G,EAAS,SAAS,KAAKS,GAAMW,GAAMmE,GAAOC,KAAiB1F,EAAS,aAAa;AAAA,EACnF;AAAA,EACA,UAAU;AACR,SAAK,YAAY;AAAA,EACnB;AACF;AAEA6G,GAAgB,YAAY;AAAA,EAC1B,MAAM;AAAA,IACJvG,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AC7BA,MAAM0G,GAAe;AAAA,EACnB,YAAY9G,GAAU;AACpB,SAAK,YAAYA;AAAA,EACnB;AAAA,EACA,gBAAgB;AACd,UAAMW,IAAK,KAAK,UAAU;AAC1B,SAAK,cAAcA,EAAG,aAAaA,EAAG,uBAAuB,GAC7D,KAAK,uBAAuBoG,GAA6B,KAAK,aAAapG,CAAE,GAC7E,KAAK,qBAAqBA,EAAG,aAAaA,EAAG,2BAA2B;AAAA,EAC1E;AAAA,EACA,UAAU;AAAA,EACV;AACF;AAEAmG,GAAe,YAAY;AAAA,EACzB,MAAM;AAAA,IACJ1G,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;ACtBA,MAAM4G,GAAe;AAAA,EACnB,cAAc;AACZ,SAAK,QAAQ,IACb,KAAK,SAAS,IACd,KAAK,OAAO,IACZ,KAAK,mBAAmB,CAAA;AAAA,EAC1B;AACF;ACHA,MAAMC,GAAgB;AAAA,EACpB,YAAYjH,GAAU;AACpB,SAAK,gBAAgB;AAAA,MACnB,SAAS;AAAA,MACT,kBAAkB;AAAA,MAClB,aAAakH,EAAc;AAAA,IACjC,GACI,KAAK,4BAA4C,uBAAO,OAAO,IAAI,GACnElH,EAAS,aAAa,qBAAqB,IAAI,IAAI;AAAA,EACrD;AAAA,EACA,cAAcW,GAAI;AAChB,SAAK,MAAMA,GACX,KAAK,yBAAyB;AAAA,MAC5B,QAAQA,EAAG;AAAA,MACX,OAAOA,EAAG;AAAA,MACV,OAAOA,EAAG;AAAA,MACV,aAAaA,EAAG;AAAA,MAChB,MAAMA,EAAG;AAAA,MACT,cAAcA,EAAG;AAAA,MACjB,SAASA,EAAG;AAAA,MACZ,iBAAiBA,EAAG;AAAA,IAC1B,GACI,KAAK,qBAAqB;AAAA,MACxB,MAAMA,EAAG;AAAA,MACT,MAAMA,EAAG;AAAA,MACT,SAASA,EAAG;AAAA,MACZ,QAAQA,EAAG;AAAA,MACX,mBAAmBA,EAAG;AAAA,MACtB,mBAAmBA,EAAG;AAAA,MACtB,kBAAkBA,EAAG;AAAA,MACrB,kBAAkBA,EAAG;AAAA,IAC3B,GACI,KAAK,WAAU;AAAA,EACjB;AAAA,EACA,qBAAqByF,GAAc;AACjC,QAAI,KAAK,wBAAwBA;AAC/B;AACF,SAAK,sBAAsBA;AAC3B,QAAIe,IAAe,KAAK,0BAA0Bf,EAAa,GAAG;AAClE,IAAKe,MACHA,IAAe,KAAK,0BAA0Bf,EAAa,GAAG,IAAI;AAAA,MAChE,aAAac,EAAc;AAAA,MAC3B,kBAAkB;AAAA,IAC1B,IAEI,KAAK,eAAeC,EAAa,aAAaA,EAAa,gBAAgB;AAAA,EAC7E;AAAA,EACA,aAAa;AACX,SAAK,cAAc,UAAU,IAC7B,KAAK,cAAc,cAAcD,EAAc,MAC/C,KAAK,cAAc,mBAAmB;AAAA,EACxC;AAAA,EACA,eAAeE,GAAaC,GAAkB;AAC5C,UAAMF,IAAe,KAAK,0BAA0B,KAAK,oBAAoB,GAAG,GAC1ExG,IAAK,KAAK,KACV2G,IAAOC,GAAsBH,CAAW,GACxCI,IAAgB,KAAK;AAG3B,QAFAL,EAAa,cAAcC,GAC3BD,EAAa,mBAAmBE,GAC5BD,MAAgBF,EAAc,UAAU;AAC1C,MAAI,KAAK,cAAc,YACrB,KAAK,cAAc,UAAU,IAC7BvG,EAAG,QAAQA,EAAG,YAAY;AAE5B;AAAA,IACF;AACA,IAAK,KAAK,cAAc,YACtB,KAAK,cAAc,UAAU,IAC7BA,EAAG,OAAOA,EAAG,YAAY,KAEvByG,MAAgBI,EAAc,eAAeA,EAAc,qBAAqBH,OAClFG,EAAc,cAAcJ,GAC5BI,EAAc,mBAAmBH,GACjC1G,EAAG,YAAY,KAAK,uBAAuB2G,EAAK,YAAY,OAAO,GAAGD,GAAkB,GAAG,GAC3F1G,EAAG,UAAUA,EAAG,MAAMA,EAAG,MAAM,KAAK,mBAAmB2G,EAAK,YAAY,MAAM,CAAC;AAAA,EAEnF;AACF;AAEAL,GAAgB,YAAY;AAAA,EAC1B,MAAM;AAAA,IACJ7G,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;ACxFA,MAAMqH,KAAqB;AAAA,EACzB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBjB;AACA,SAASC,GAAuBC,GAAa;AAC3C,QAAMC,IAAcD,EAAY,IAAI,CAACtG,OAAU;AAAA,IAC7C,MAAAA;AAAA,IACA,QAAQ;AAAA,IACR,MAAM;AAAA,EACV,EAAI,GACIwG,IAAY;AAClB,MAAIzG,IAAO,GACPD,IAAS;AACb,WAAS,IAAI,GAAG,IAAIyG,EAAY,QAAQ,KAAK;AAC3C,UAAME,IAAaF,EAAY,CAAC;AAEhC,QADAxG,IAAOqG,GAAmBK,EAAW,KAAK,IAAI,GAC1C,CAAC1G;AACH,YAAM,IAAI,MAAM,gBAAgB0G,EAAW,KAAK,IAAI,EAAE;AAExD,IAAIA,EAAW,KAAK,OAAO,MACzB1G,IAAO,KAAK,IAAIA,GAAMyG,CAAS,IAAIC,EAAW,KAAK;AAErD,UAAMC,IAAW3G,MAAS,KAAK,KAAKA;AACpC,IAAA0G,EAAW,OAAO1G;AAClB,UAAM4G,IAAY7G,IAAS0G;AAC3B,IAAIG,IAAY,KAAKH,IAAYG,IAAYD,IAC3C5G,MAAW0G,IAAYG,KAAa,KAEpC7G,MAAWC,IAAO4G,IAAY5G,KAAQA,GAExC0G,EAAW,SAAS3G,GACpBA,KAAUC;AAAA,EACZ;AACA,SAAAD,IAAS,KAAK,KAAKA,IAAS,EAAE,IAAI,IAC3B,EAAE,aAAAyG,GAAa,MAAMzG,EAAM;AACpC;AC1DA,SAAS8G,GAAuBH,GAAYI,GAAa;AACvD,QAAMC,IAAU,KAAK,IAAIV,GAAmBK,EAAW,KAAK,IAAI,IAAI,IAAI,CAAC,GACnEM,IAAcN,EAAW,KAAK,MAAM,SAASA,EAAW,KAAK,MAC7DO,KAAa,IAAID,IAAc,KAAK,GACpC/G,IAAOyG,EAAW,KAAK,KAAK,QAAQ,KAAK,KAAK,IAAI,cAAc;AACtE,SAAO;AAAA,iBACQA,EAAW,KAAK,IAAI;AAAA,oBACjBI,CAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMJJ,EAAW,KAAK,OAAOK,CAAO;AAAA;AAAA,iCAExBC,CAAW;AAAA;AAAA,kBAE1B/G,CAAI;AAAA;AAAA,cAERgH,MAAc,IAAI,kBAAkBA,CAAS,MAAM,EAAE;AAAA;AAAA;AAGnE;ACpBA,SAASC,GAA2BV,GAAa;AAC/C,SAAOW;AAAA,IACLX;AAAA,IACA;AAAA,IACAK;AAAA,IACAO;AAAA,EACJ;AACA;ACNA,MAAMC,WAAoBC,GAAU;AAAA,EAClC,cAAc;AACZ,UAAM;AAAA,MACJ,mBAAmBhB;AAAA,MACnB,iBAAiBY;AAAA,IACvB,CAAK;AAAA,EACH;AACF;AAEAG,GAAY,YAAY;AAAA,EACtB,MAAM,CAACrI,EAAc,WAAW;AAAA,EAChC,MAAM;AACR;ACXA,MAAMuI,GAAsB;AAAA,EAC1B,cAAc;AACZ,SAAK,mBAAmB,CAAC,GAAG,GAAG,GAAG,CAAC,GACnC,KAAK,iBAAiB,IAAIC,EAAS;AAAA,EACrC;AAAA,EACA,KAAK5I,GAAU6I,GAAoB;AACjC,SAAK,YAAY7I,GACjB,KAAK,sBAAsB6I,GAC3B7I,EAAS,QAAQ,cAAc,IAAI,IAAI;AAAA,EACzC;AAAA,EACA,gBAAgB;AACd,SAAK,mBAAmB,CAAC,GAAG,GAAG,GAAG,CAAC,GACnC,KAAK,iBAAiB,IAAI4I,EAAS;AAAA,EACrC;AAAA,EACA,cAAcE,GAA4BC,GAAoBC,GAAW5H,GAAM6H,GAAY;AACzF,UAAMJ,IAAqB,KAAK,qBAC1B7I,IAAW,KAAK,WAChBkJ,IAAiBL,EAAmB,mBAAmBC,CAA0B,GACjFnI,IAAKX,EAAS;AACpB,gBAAK,iBAAiB8I,CAA0B,GAChDnI,EAAG,gBAAgBA,EAAG,aAAauI,EAAe,wBAAwB,GAC1ElJ,EAAS,QAAQ,KAAK+I,GAAoB,CAAC,GAC3CpI,EAAG;AAAA,MACDA,EAAG;AAAA,MACH;AAAA,MACAsI,EAAW;AAAA,MACXA,EAAW;AAAA,MACXD,EAAU;AAAA,MACVA,EAAU;AAAA,MACV5H,EAAK;AAAA,MACLA,EAAK;AAAA,IACX,GACW2H;AAAA,EACT;AAAA,EACA,gBAAgB3C,GAAc+C,IAAQ,IAAMC,GAAYC,GAAU;AAChE,UAAMR,IAAqB,KAAK,qBAC1BS,IAASlD,EAAa,cACtBmD,IAAkBV,EAAmB,mBAAmBzC,CAAY;AAC1E,QAAIoD,IAAYH,EAAS;AACzB,IAAIjD,EAAa,WACfoD,IAAYF,EAAO,cAAcD,EAAS,SAE5CjD,EAAa,cAAc,QAAQ,CAACqD,MAAY;AAC9C,WAAK,UAAU,QAAQ,OAAOA,CAAO;AAAA,IACvC,CAAC;AACD,UAAM9I,IAAK,KAAK,UAAU;AAC1B,IAAAA,EAAG,gBAAgBA,EAAG,aAAa4I,EAAgB,WAAW;AAC9D,UAAMG,IAAgB,KAAK;AAC3B,KAAIA,EAAc,MAAML,EAAS,KAAKK,EAAc,MAAMF,KAAaE,EAAc,UAAUL,EAAS,SAASK,EAAc,WAAWL,EAAS,YACjJK,EAAc,IAAIL,EAAS,GAC3BK,EAAc,IAAIF,GAClBE,EAAc,QAAQL,EAAS,OAC/BK,EAAc,SAASL,EAAS,QAChC1I,EAAG;AAAA,MACD0I,EAAS;AAAA,MACTG;AAAA,MACAH,EAAS;AAAA,MACTA,EAAS;AAAA,IACjB,IAEQ,CAACE,EAAgB,6BAA6BnD,EAAa,WAAWA,EAAa,UACrF,KAAK,aAAamD,CAAe,GAEnC,KAAK,MAAMnD,GAAc+C,GAAOC,CAAU;AAAA,EAC5C;AAAA,EACA,iBAAiBhD,GAAc;AAE7B,UAAM8C,IADqB,KAAK,oBACU,mBAAmB9C,CAAY;AACzE,QAAI,CAAC8C,EAAe;AAClB;AACF,UAAMvI,IAAK,KAAK,UAAU;AAC1B,IAAAA,EAAG,gBAAgBA,EAAG,aAAauI,EAAe,wBAAwB,GAC1EvI,EAAG,gBAAgBA,EAAG,kBAAkBuI,EAAe,WAAW,GAClEvI,EAAG;AAAA,MACD;AAAA,MACA;AAAA,MACAuI,EAAe;AAAA,MACfA,EAAe;AAAA,MACf;AAAA,MACA;AAAA,MACAA,EAAe;AAAA,MACfA,EAAe;AAAA,MACfvI,EAAG;AAAA,MACHA,EAAG;AAAA,IACT,GACIA,EAAG,gBAAgBA,EAAG,aAAauI,EAAe,WAAW;AAAA,EAC/D;AAAA,EACA,oBAAoB9C,GAAc;AAEhC,UAAMzF,IADW,KAAK,UACF,IACduI,IAAiB,IAAIlC,GAAc;AAEzC,WADqBZ,EAAa,wBACNuD,KAC1B,KAAK,UAAU,QAAQ,iBAAiBvD,EAAa,aAAa,QAAQ,GAC1E8C,EAAe,cAAc,MACtBA,MAET,KAAK,WAAW9C,GAAc8C,CAAc,GAC5CvI,EAAG,gBAAgBA,EAAG,aAAa,IAAI,GAChCuI;AAAA,EACT;AAAA,EACA,uBAAuBK,GAAiB;AACtC,UAAM5I,IAAK,KAAK,UAAU;AAC1B,IAAI4I,EAAgB,gBAClB5I,EAAG,kBAAkB4I,EAAgB,WAAW,GAChDA,EAAgB,cAAc,OAE5BA,EAAgB,6BAClB5I,EAAG,kBAAkB4I,EAAgB,wBAAwB,GAC7DA,EAAgB,2BAA2B,OAEzCA,EAAgB,6BAClB5I,EAAG,mBAAmB4I,EAAgB,wBAAwB,GAC9DA,EAAgB,2BAA2B,OAE7CA,EAAgB,iBAAiB,QAAQ,CAACK,MAAiB;AACzD,MAAAjJ,EAAG,mBAAmBiJ,CAAY;AAAA,IACpC,CAAC,GACDL,EAAgB,mBAAmB;AAAA,EACrC;AAAA,EACA,MAAMM,GAAeV,GAAOC,GAAY;AACtC,QAAI,CAACD;AACH;AACF,UAAMN,IAAqB,KAAK;AAChC,IAAI,OAAOM,KAAU,cACnBA,IAAQA,IAAQW,EAAM,MAAMA,EAAM;AAEpC,UAAMnJ,IAAK,KAAK,UAAU;AAC1B,QAAIwI,IAAQW,EAAM,OAAO;AACvB,MAAAV,MAAeA,IAAaP,EAAmB;AAC/C,YAAMkB,IAAkB,KAAK,kBACvBC,IAAkBZ;AACxB,OAAIW,EAAgB,CAAC,MAAMC,EAAgB,CAAC,KAAKD,EAAgB,CAAC,MAAMC,EAAgB,CAAC,KAAKD,EAAgB,CAAC,MAAMC,EAAgB,CAAC,KAAKD,EAAgB,CAAC,MAAMC,EAAgB,CAAC,OACjLD,EAAgB,CAAC,IAAIC,EAAgB,CAAC,GACtCD,EAAgB,CAAC,IAAIC,EAAgB,CAAC,GACtCD,EAAgB,CAAC,IAAIC,EAAgB,CAAC,GACtCD,EAAgB,CAAC,IAAIC,EAAgB,CAAC,GACtCrJ,EAAG,WAAWqJ,EAAgB,CAAC,GAAGA,EAAgB,CAAC,GAAGA,EAAgB,CAAC,GAAGA,EAAgB,CAAC,CAAC;AAAA,IAEhG;AACA,IAAArJ,EAAG,MAAMwI,CAAK;AAAA,EAChB;AAAA,EACA,sBAAsB/C,GAAc;AAClC,QAAIA,EAAa;AACf;AAEF,UAAM8C,IADqB,KAAK,oBACU,mBAAmB9C,CAAY;AACzE,SAAK,aAAaA,GAAc8C,CAAc,IAC1C9C,EAAa,WAAWA,EAAa,UACvC,KAAK,eAAe8C,CAAc;AAAA,EAEtC;AAAA,EACA,WAAW9C,GAAc8C,GAAgB;AACvC,UAAMlJ,IAAW,KAAK,WAChBW,IAAKX,EAAS,IACdiK,IAA2BtJ,EAAG,kBAAiB;AA0BrD,QAzBAuI,EAAe,2BAA2Be,GAC1CtJ,EAAG,gBAAgBA,EAAG,aAAasJ,CAAwB,GAC3Df,EAAe,QAAQ9C,EAAa,aAAa,OAAO,YACxD8C,EAAe,SAAS9C,EAAa,aAAa,OAAO,aACzDA,EAAa,cAAc,QAAQ,CAAC8D,GAAc9F,MAAM;AACtD,YAAMkF,IAASY,EAAa;AAC5B,MAAIZ,EAAO,cACLtJ,EAAS,QAAQ,SAAS,OAC5BkJ,EAAe,OAAO,KAEtBrH,EAAK,qEAAqE,IAG9E7B,EAAS,QAAQ,WAAWsJ,GAAQ,CAAC;AAErC,YAAMa,IADWnK,EAAS,QAAQ,YAAYsJ,CAAM,EACzB;AAC3B,MAAA3I,EAAG;AAAA,QACDA,EAAG;AAAA,QACHA,EAAG,oBAAoByD;AAAA,QACvB;AAAA;AAAA,QAEA+F;AAAA,QACA;AAAA,MACR;AAAA,IACI,CAAC,GACGjB,EAAe,MAAM;AACvB,YAAMkB,IAAkBzJ,EAAG,kBAAiB;AAC5C,MAAAuI,EAAe,cAAckB,GAC7BzJ,EAAG,gBAAgBA,EAAG,aAAayJ,CAAe,GAClDhE,EAAa,cAAc,QAAQ,CAACiE,GAAGjG,MAAM;AAC3C,cAAMkG,IAAmB3J,EAAG,mBAAkB;AAC9C,QAAAuI,EAAe,iBAAiB9E,CAAC,IAAIkG;AAAA,MACvC,CAAC;AAAA,IACH;AACE,MAAApB,EAAe,cAAce;AAE/B,SAAK,aAAa7D,GAAc8C,CAAc;AAAA,EAChD;AAAA,EACA,aAAa9C,GAAc8C,GAAgB;AACzC,UAAMI,IAASlD,EAAa,aAAa;AAQzC,QAPA8C,EAAe,QAAQI,EAAO,YAC9BJ,EAAe,SAASI,EAAO,aAC/BlD,EAAa,cAAc,QAAQ,CAAC8D,GAAc,MAAM;AACtD,MAAI,MAAM,KAEVA,EAAa,OAAO,OAAOZ,EAAO,OAAOA,EAAO,QAAQA,EAAO,WAAW;AAAA,IAC5E,CAAC,GACGJ,EAAe,MAAM;AACvB,YAAMlJ,IAAW,KAAK,WAChBW,IAAKX,EAAS,IACdoK,IAAkBlB,EAAe;AACvC,MAAAvI,EAAG,gBAAgBA,EAAG,aAAayJ,CAAe,GAClDhE,EAAa,cAAc,QAAQ,CAAC8D,GAAc9F,MAAM;AACtD,cAAMmG,IAAUL,EAAa;AAC7B,QAAAlK,EAAS,QAAQ,WAAWuK,GAAS,CAAC;AAEtC,cAAMC,IADWxK,EAAS,QAAQ,YAAYuK,CAAO,EACnB,gBAC5BD,IAAmBpB,EAAe,iBAAiB9E,CAAC;AAC1D,QAAAzD,EAAG;AAAA,UACDA,EAAG;AAAA,UACH2J;AAAA,QACV,GACQ3J,EAAG;AAAA,UACDA,EAAG;AAAA,UACH;AAAA,UACA6J;AAAA,UACAD,EAAQ;AAAA,UACRA,EAAQ;AAAA,QAClB,GACQ5J,EAAG;AAAA,UACDA,EAAG;AAAA,UACHA,EAAG,oBAAoByD;AAAA,UACvBzD,EAAG;AAAA,UACH2J;AAAA,QACV;AAAA,MACM,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,aAAapB,GAAgB;AAC3B,QAAIA,EAAe,gBAAgB;AACjC;AACF,UAAMvI,IAAK,KAAK,UAAU,IACpB8J,IAA2B9J,EAAG,mBAAkB;AACtD,IAAAuI,EAAe,2BAA2BuB,GAC1C9J,EAAG;AAAA,MACDA,EAAG;AAAA,MACH8J;AAAA,IACN,GACI9J,EAAG;AAAA,MACDA,EAAG;AAAA,MACHA,EAAG;AAAA,MACHA,EAAG;AAAA,MACH8J;AAAA,IACN,GACI,KAAK,eAAevB,CAAc;AAAA,EACpC;AAAA,EACA,eAAeA,GAAgB;AAC7B,UAAMvI,IAAK,KAAK,UAAU;AAC1B,IAAAA,EAAG;AAAA,MACDA,EAAG;AAAA,MACHuI,EAAe;AAAA,IACrB,GACQA,EAAe,OACjBvI,EAAG;AAAA,MACDA,EAAG;AAAA,MACH;AAAA,MACAA,EAAG;AAAA,MACHuI,EAAe;AAAA,MACfA,EAAe;AAAA,IACvB,IAEMvI,EAAG;AAAA,MACDA,EAAG;AAAA,MACH,KAAK,UAAU,QAAQ,iBAAiB,IAAIA,EAAG,mBAAmBA,EAAG;AAAA,MACrEuI,EAAe;AAAA,MACfA,EAAe;AAAA,IACvB;AAAA,EAEE;AAAA,EACA,UAAU9C,GAAc;AACtB,UAAMsE,IAAWtE,EAAa,aAAa;AAC3C,IAAI,KAAK,UAAU,QAAQ,aAAauD,EAAa,KAAKe,CAAQ,KAChE,KAAK,UAAU,QAAQ,iBAAiBA,CAAQ;AAAA,EAEpD;AAAA,EACA,WAAWtE,GAAc;AACvB,QAAK,KAAK,UAAU,QAAQ,aAExBuD,EAAa,KAAKvD,EAAa,aAAa,QAAQ,GAAG;AACzD,YAAMuE,IAAgB,KAAK,UAAU,QAAQ,QACvCC,IAAexE,EAAa;AAClC,MAAAwE,EAAa,UAAU;AAAA,QACrBD;AAAA,QACA;AAAA,QACAC,EAAa,cAAcD,EAAc;AAAA,MACjD;AAAA,IACI;AAAA,EACF;AACF;ACxSA,MAAME,WAA6BC,GAAmB;AAAA,EACpD,YAAY9K,GAAU;AACpB,UAAMA,CAAQ,GACd,KAAK,UAAU,IAAI2I,GAAqB,GACxC,KAAK,QAAQ,KAAK3I,GAAU,IAAI;AAAA,EAClC;AACF;AAEA6K,GAAqB,YAAY;AAAA,EAC/B,MAAM,CAACzK,EAAc,WAAW;AAAA,EAChC,MAAM;AACR;ACXA,SAAS2K,GAAuBhL,GAAQiL,GAAc;AACpD,QAAMC,IAAgB,CAAA,GAChBC,IAAkB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMtB;AACH,MAAIC,IAAoB,IACpBC,IAAe;AACnB,QAAMC,IAAcL,EAAa,gBAAgBjL,EAAO,SAAS;AACjE,aAAWqE,KAAKrE,EAAO,QAAQ;AAC7B,UAAMuL,IAAQvL,EAAO,OAAOqE,CAAC;AAC7B,IAAA6G,EAAc,KAAK;AAAA,4BACK7G,CAAC;AAAA,SACpB;AACL,eAAWG,KAAK+G,EAAM,WAAW;AAC/B,YAAMZ,IAAWY,EAAM,UAAU/G,CAAC;AAClC,UAAImG,aAAoBa;AACtB,YAAIb,EAAS,KAAK;AAChB,gBAAMc,IAAUzL,EAAO,gBAAgBqE,CAAC,EAAE,OAAOG,CAAC,CAAC;AACnD,UAAA0G,EAAc,KAAK;AAAA;AAAA,wCAEW1G,CAAC;AAAA,+BACViH,CAAO;AAAA,8BACRzL,EAAO,UAAU,kBAAkByL,CAAO,EAAE,KAAK;AAAA;AAAA,qBAE1D;AAAA,QACb;AACE,UAAAP,EAAc,KAAK;AAAA,2DAC8B1G,CAAC;AAAA,qBACvC;AAAA,eAEJmG,aAAoBe,GAAgB;AAC7C,cAAMD,IAAUzL,EAAO,gBAAgBqE,CAAC,EAAE,OAAOG,CAAC,CAAC;AACnD,QAAA0G,EAAc,KAAK;AAAA;AAAA,oCAES1G,CAAC;AAAA,2BACViH,CAAO;AAAA,0BACRzL,EAAO,UAAU,kBAAkByL,CAAO,EAAE,KAAK;AAAA;AAAA,iBAE1D;AAAA,MACX,WAAWd,aAAoBnE,GAAe;AAC5C,cAAMmF,IAAc3L,EAAO,gBAAgBqE,CAAC,EAAEG,CAAC,GACzCoD,IAAc0D,EAAY,YAAYK,CAAW;AACvD,QAAI/D,MACGwD,MACHA,IAAoB,IACpBD,EAAgB,KAAK;AAAA;AAAA,yBAER,IAEfF,EAAa,IAAI,UAAUrD,EAAY,UAAUyD,CAAY,GAC7DH,EAAc,KAAK;AAAA,4CACe1G,CAAC,MAAM6G,CAAY;AAAA,qBAC1C,GACXA;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AACA,QAAMO,IAAiB,CAAC,GAAGT,GAAiB,GAAGD,CAAa,EAAE,KAAK;AAAA,CAAI;AACvE,SAAO,IAAI,SAAS,KAAK,KAAK,MAAMU,CAAc;AACpD;AClEA,MAAMC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMlB,YAAY1H,GAASyD,GAAa;AAChC,SAAK,UAAUzD,GACf,KAAK,cAAcyD,GACnB,KAAK,gBAAgB,CAAA,GACrB,KAAK,qBAAqB,CAAA,GAC1B,KAAK,uBAAuB,CAAA;AAAA,EAC9B;AAAA;AAAA,EAEA,UAAU;AACR,SAAK,cAAc,MACnB,KAAK,gBAAgB,MACrB,KAAK,qBAAqB,MAC1B,KAAK,uBAAuB,MAC5B,KAAK,UAAU;AAAA,EACjB;AACF;ACvBA,SAASkE,EAAclL,GAAIF,GAAMqL,GAAK;AACpC,QAAM/L,IAASY,EAAG,aAAaF,CAAI;AACnC,SAAAE,EAAG,aAAaZ,GAAQ+L,CAAG,GAC3BnL,EAAG,cAAcZ,CAAM,GAChBA;AACT;ACLA,SAASgM,EAAa3K,GAAM;AAC1B,QAAM4K,IAAQ,IAAI,MAAM5K,CAAI;AAC5B,WAASgD,IAAI,GAAGA,IAAI4H,EAAM,QAAQ5H;AAChC,IAAA4H,EAAM5H,CAAC,IAAI;AAEb,SAAO4H;AACT;AACA,SAASC,GAAaxL,GAAMW,GAAM;AAChC,UAAQX,GAAI;AAAA,IACV,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,IAAI,aAAa,IAAIW,CAAI;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,aAAa,IAAIA,CAAI;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,aAAa,IAAIA,CAAI;AAAA,IAClC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,IAAI,WAAW,IAAIA,CAAI;AAAA,IAChC,KAAK;AACH,aAAO,IAAI,WAAW,IAAIA,CAAI;AAAA,IAChC,KAAK;AACH,aAAO,IAAI,WAAW,IAAIA,CAAI;AAAA,IAChC,KAAK;AACH,aAAO,IAAI,YAAY,IAAIA,CAAI;AAAA,IACjC,KAAK;AACH,aAAO,IAAI,YAAY,IAAIA,CAAI;AAAA,IACjC,KAAK;AACH,aAAO,IAAI,YAAY,IAAIA,CAAI;AAAA,IACjC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO2K,EAAa,IAAI3K,CAAI;AAAA,IAC9B,KAAK;AACH,aAAO2K,EAAa,IAAI3K,CAAI;AAAA,IAC9B,KAAK;AACH,aAAO2K,EAAa,IAAI3K,CAAI;AAAA,IAC9B,KAAK;AACH,aAAO,IAAI,aAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACH,KAAK;AACH,aAAO,IAAI,aAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACH,KAAK;AACH,aAAO,IAAI,aAAa;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACR,CAAO;AAAA,EACP;AACE,SAAO;AACT;AClFA,IAAI8K,IAAW;AACf,MAAMC,IAAmB;AAAA,EACvB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,+BAA+B;AACjC,GACMC,KAAuB;AAAA,EAC3B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACT;AACA,SAASC,GAAQ1L,GAAIF,GAAM;AACzB,MAAI,CAACyL,GAAU;AACb,UAAMI,IAAY,OAAO,KAAKH,CAAgB;AAC9C,IAAAD,IAAW,CAAA;AACX,aAAS9H,IAAI,GAAGA,IAAIkI,EAAU,QAAQ,EAAElI,GAAG;AACzC,YAAMmI,IAAKD,EAAUlI,CAAC;AACtB,MAAA8H,EAASvL,EAAG4L,CAAE,CAAC,IAAIJ,EAAiBI,CAAE;AAAA,IACxC;AAAA,EACF;AACA,SAAOL,EAASzL,CAAI;AACtB;AACA,SAAS+L,GAAoB7L,GAAIF,GAAM;AACrC,QAAMgM,IAAYJ,GAAQ1L,GAAIF,CAAI;AAClC,SAAO2L,GAAqBK,CAAS,KAAK;AAC5C;AC5DA,SAASC,GAA+BxI,GAASvD,GAAIgM,IAAiB,IAAO;AAC3E,QAAMjK,IAAa,CAAA,GACbkK,IAAkBjM,EAAG,oBAAoBuD,GAASvD,EAAG,iBAAiB;AAC5E,WAASyD,IAAI,GAAGA,IAAIwI,GAAiBxI,KAAK;AACxC,UAAMyI,IAAalM,EAAG,gBAAgBuD,GAASE,CAAC;AAChD,QAAIyI,EAAW,KAAK,WAAW,KAAK;AAClC;AAEF,UAAMtJ,IAASiJ,GAAoB7L,GAAIkM,EAAW,IAAI;AACtD,IAAAnK,EAAWmK,EAAW,IAAI,IAAI;AAAA,MAC5B,UAAU;AAAA;AAAA,MAEV,QAAAtJ;AAAA,MACA,QAAQ6B,EAA2B7B,CAAM,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,OAAO;AAAA,IACb;AAAA,EACE;AACA,QAAMuJ,IAAO,OAAO,KAAKpK,CAAU;AACnC,MAAIiK,GAAgB;AAClB,IAAAG,EAAK,KAAK,CAAC,GAAGhJ,MAAM,IAAIA,IAAI,IAAI,EAAE;AAClC,aAASM,IAAI,GAAGA,IAAI0I,EAAK,QAAQ1I;AAC/B,MAAA1B,EAAWoK,EAAK1I,CAAC,CAAC,EAAE,WAAWA,GAC/BzD,EAAG,mBAAmBuD,GAASE,GAAG0I,EAAK1I,CAAC,CAAC;AAE3C,IAAAzD,EAAG,YAAYuD,CAAO;AAAA,EACxB;AACE,aAASE,IAAI,GAAGA,IAAI0I,EAAK,QAAQ1I;AAC/B,MAAA1B,EAAWoK,EAAK1I,CAAC,CAAC,EAAE,WAAWzD,EAAG,kBAAkBuD,GAAS4I,EAAK1I,CAAC,CAAC;AAGxE,SAAO1B;AACT;ACpCA,SAASqK,GAAW7I,GAASvD,GAAI;AAC/B,MAAI,CAACA,EAAG;AACN,WAAO,CAAA;AACT,QAAMqM,IAAgB,CAAA,GAChBC,IAAsBtM,EAAG,oBAAoBuD,GAASvD,EAAG,qBAAqB;AACpF,WAASyD,IAAI,GAAGA,IAAI6I,GAAqB7I,KAAK;AAC5C,UAAM8I,IAAOvM,EAAG,0BAA0BuD,GAASE,CAAC,GAC9C+I,IAAoBxM,EAAG,qBAAqBuD,GAASgJ,CAAI,GACzD9L,IAAOT,EAAG,+BAA+BuD,GAASE,GAAGzD,EAAG,uBAAuB;AACrF,IAAAqM,EAAcE,CAAI,IAAI;AAAA,MACpB,MAAAA;AAAA,MACA,OAAOC;AAAA,MACP,MAAA/L;AAAA,IACN;AAAA,EACE;AACA,SAAO4L;AACT;ACbA,SAASI,GAAelJ,GAASvD,GAAI;AACnC,QAAM0M,IAAW,CAAA,GACXC,IAAgB3M,EAAG,oBAAoBuD,GAASvD,EAAG,eAAe;AACxE,WAASyD,IAAI,GAAGA,IAAIkJ,GAAelJ,KAAK;AACtC,UAAMuD,IAAchH,EAAG,iBAAiBuD,GAASE,CAAC,GAC5C8I,IAAOvF,EAAY,KAAK,QAAQ,YAAY,EAAE,GAC9C4F,IAAU,CAAC,CAAC5F,EAAY,KAAK,MAAM,UAAU,GAC7ClH,IAAO4L,GAAQ1L,GAAIgH,EAAY,IAAI;AACzC,IAAA0F,EAASH,CAAI,IAAI;AAAA,MACf,MAAAA;AAAA,MACA,OAAO9I;AAAA,MACP,MAAA3D;AAAA,MACA,MAAMkH,EAAY;AAAA,MAClB,SAAA4F;AAAA,MACA,OAAOtB,GAAaxL,GAAMkH,EAAY,IAAI;AAAA,IAChD;AAAA,EACE;AACA,SAAO0F;AACT;ACrBA,SAASG,EAAqB7M,GAAIZ,GAAQ;AACxC,QAAM0N,IAAY9M,EAAG,gBAAgBZ,CAAM,EAAE,MAAM;AAAA,CAAI,EAAE,IAAI,CAAC2N,GAAM7M,MAAU,GAAGA,CAAK,KAAK6M,CAAI,EAAE,GAC3FC,IAAYhN,EAAG,iBAAiBZ,CAAM,GACtC6N,IAAcD,EAAU,MAAM;AAAA,CAAI,GAClCE,IAAS,CAAA,GACTC,IAAcF,EAAY,IAAI,CAACF,MAAS,WAAWA,EAAK,QAAQ,4BAA4B,IAAI,CAAC,CAAC,EAAE,OAAO,CAACK,MAC5GA,KAAK,CAACF,EAAOE,CAAC,KAChBF,EAAOE,CAAC,IAAI,IACL,MAEF,EACR,GACKC,IAAU,CAAC,EAAE;AACnB,EAAAF,EAAY,QAAQ,CAACG,MAAW;AAC9B,IAAAR,EAAUQ,IAAS,CAAC,IAAI,KAAKR,EAAUQ,IAAS,CAAC,CAAC,MAClDD,EAAQ,KAAK,uDAAuD,iBAAiB;AAAA,EACvF,CAAC;AACD,QAAME,IAAsBT,EAAU,KAAK;AAAA,CAAI;AAC/C,EAAAO,EAAQ,CAAC,IAAIE,GACb,QAAQ,MAAMP,CAAS,GACvB,QAAQ,eAAe,gCAAgC,GACvD,QAAQ,KAAK,GAAGK,CAAO,GACvB,QAAQ,SAAQ;AAClB;AACA,SAASG,GAAgBxN,GAAIuD,GAASkK,GAAcC,GAAgB;AAClE,EAAK1N,EAAG,oBAAoBuD,GAASvD,EAAG,WAAW,MAC5CA,EAAG,mBAAmByN,GAAczN,EAAG,cAAc,KACxD6M,EAAqB7M,GAAIyN,CAAY,GAElCzN,EAAG,mBAAmB0N,GAAgB1N,EAAG,cAAc,KAC1D6M,EAAqB7M,GAAI0N,CAAc,GAEzC,QAAQ,MAAM,4CAA4C,GACtD1N,EAAG,kBAAkBuD,CAAO,MAAM,MACpC,QAAQ,KAAK,0CAA0CvD,EAAG,kBAAkBuD,CAAO,CAAC;AAG1F;AC5BA,SAASoK,GAAgB3N,GAAIuD,GAAS;AACpC,QAAMqK,IAAe1C,EAAclL,GAAIA,EAAG,eAAeuD,EAAQ,MAAM,GACjEsK,IAAe3C,EAAclL,GAAIA,EAAG,iBAAiBuD,EAAQ,QAAQ,GACrEuK,IAAe9N,EAAG,cAAa;AACrC,EAAAA,EAAG,aAAa8N,GAAcF,CAAY,GAC1C5N,EAAG,aAAa8N,GAAcD,CAAY;AAC1C,QAAME,IAA4BxK,EAAQ;AAC1C,EAAIwK,MACE,OAAO/N,EAAG,6BAA8B,aAC1CkB,EAAK,6EAA6E,IAElFlB,EAAG;AAAA,IACD8N;AAAA,IACAC,EAA0B;AAAA,IAC1BA,EAA0B,eAAe,aAAa/N,EAAG,mBAAmBA,EAAG;AAAA,EACvF,IAGEA,EAAG,YAAY8N,CAAY,GACtB9N,EAAG,oBAAoB8N,GAAc9N,EAAG,WAAW,KACtDwN,GAAgBxN,GAAI8N,GAAcF,GAAcC,CAAY,GAE9DtK,EAAQ,iBAAiBwI;AAAA,IACvB+B;AAAA,IACA9N;AAAA,IACA,CAAC,iDAAiD,KAAKuD,EAAQ,MAAM;AAAA,EACzE,GACEA,EAAQ,eAAekJ,GAAeqB,GAAc9N,CAAE,GACtDuD,EAAQ,oBAAoB6I,GAAW0B,GAAc9N,CAAE,GACvDA,EAAG,aAAa4N,CAAY,GAC5B5N,EAAG,aAAa6N,CAAY;AAC5B,QAAM7G,IAAc,CAAA;AACpB,aAAWvD,KAAKF,EAAQ,cAAc;AACpC,UAAM7C,IAAO6C,EAAQ,aAAaE,CAAC;AACnC,IAAAuD,EAAYvD,CAAC,IAAI;AAAA,MACf,UAAUzD,EAAG,mBAAmB8N,GAAcrK,CAAC;AAAA,MAC/C,OAAO6H,GAAa5K,EAAK,MAAMA,EAAK,IAAI;AAAA,IAC9C;AAAA,EACE;AAEA,SADkB,IAAIuK,GAAc6C,GAAc9G,CAAW;AAE/D;AC9CA,MAAMgH,IAAkB;AAAA,EACtB,cAAc;AAAA,EACd,YAAY;AACd;AACA,MAAMC,GAAe;AAAA,EACnB,YAAY5O,GAAU;AAEpB,SAAK,iBAAiB,MACtB,KAAK,mBAAmC,uBAAO,OAAO,IAAI,GAC1D,KAAK,uBAAuC,uBAAO,OAAO,IAAI,GAC9D,KAAK,YAAYA,GACjB,KAAK,UAAU,aAAa,eAAe,MAAM,kBAAkB;AAAA,EACrE;AAAA,EACA,cAAcW,GAAI;AAChB,SAAK,MAAMA,GACX,KAAK,mBAAmC,uBAAO,OAAO,IAAI,GAC1D,KAAK,uBAAuC,uBAAO,OAAO,IAAI,GAC9D,KAAK,iBAAiB;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAKZ,GAAQ8G,GAAU;AAErB,QADA,KAAK,YAAY9G,EAAO,SAAS,GAC7B8G;AACF;AACF,IAAA8H,EAAgB,eAAe,GAC/BA,EAAgB,aAAa;AAC7B,QAAIE,IAAe,KAAK,qBAAqB9O,EAAO,UAAU,IAAI;AAClE,IAAK8O,MACHA,IAAe,KAAK,qBAAqB9O,EAAO,UAAU,IAAI,IAAI,KAAK,oBAAoBA,GAAQ,IAAI,IAEzG,KAAK,UAAU,OAAO,aAAa,CAAC,CAACA,EAAO,UAAU,yBAAyB,GAC/E8O,EAAa,KAAK,WAAW9O,GAAQ4O,CAAe;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmBG,GAAc;AAC/B,SAAK,UAAU,aAAa,mBAAmBA,GAAc,KAAK,gBAAgBH,CAAe;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiBG,GAAc5B,GAAMrM,IAAQ,GAAG;AAC9C,UAAMsD,IAAe,KAAK,UAAU,QAC9BkH,IAAc,KAAK,gBAAgB,KAAK,cAAc,GACtD0D,IAAmBD,EAAa;AACtC,IAAKC,KACH,KAAK,UAAU,IAAI,mBAAmBD,CAAY;AAEpD,UAAMtO,IAASsO,EAAa,QACtBlO,IAAWuD,EAAa,aAAa3D,CAAM,GAC3CwO,IAAgB7K,EAAa,0BAA0BvD,CAAQ;AACrE,QAAImO,GAAkB;AACpB,YAAM,EAAE,QAAA5N,GAAQ,MAAAC,EAAI,IAAK0N;AACzB,MAAI3N,MAAW,KAAKC,MAASZ,EAAO,KAAK,aACvC2D,EAAa,eAAevD,GAAUoO,CAAa,IAEnD7K,EAAa,gBAAgBvD,GAAUoO,GAAe7N,CAAM;AAAA,IAEhE,MAAO,CAAIgD,EAAa,wBAAwBvD,CAAQ,MAAMoO,KAC5D7K,EAAa,eAAevD,GAAUoO,CAAa;AAErD,UAAM7B,IAAoB,KAAK,eAAe,kBAAkBD,CAAI,EAAE;AACtE,IAAI7B,EAAY,qBAAqBxK,CAAK,MAAMmO,MAEhD3D,EAAY,qBAAqBxK,CAAK,IAAImO,GAC1C,KAAK,UAAU,GAAG,oBAAoB3D,EAAY,SAAS8B,GAAmB6B,CAAa;AAAA,EAC7F;AAAA,EACA,YAAY9K,GAAS;AACnB,QAAI,KAAK,mBAAmBA;AAC1B;AACF,SAAK,iBAAiBA;AACtB,UAAMmH,IAAc,KAAK,gBAAgBnH,CAAO;AAChD,SAAK,IAAI,WAAWmH,EAAY,OAAO;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgBnH,GAAS;AACvB,WAAO,KAAK,iBAAiBA,EAAQ,IAAI,KAAK,KAAK,mBAAmBA,CAAO;AAAA,EAC/E;AAAA,EACA,mBAAmBA,GAAS;AAC1B,UAAM+K,IAAM/K,EAAQ;AACpB,gBAAK,iBAAiB+K,CAAG,IAAIX,GAAgB,KAAK,KAAKpK,CAAO,GACvD,KAAK,iBAAiB+K,CAAG;AAAA,EAClC;AAAA,EACA,UAAU;AACR,eAAWA,KAAO,OAAO,KAAK,KAAK,gBAAgB;AAEjD,MADoB,KAAK,iBAAiBA,CAAG,EACjC,QAAO,GACnB,KAAK,iBAAiBA,CAAG,IAAI;AAE/B,SAAK,mBAAmB;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,oBAAoBlP,GAAQiL,GAAc;AACxC,WAAOD,GAAuBhL,GAAQiL,CAAY;AAAA,EACpD;AAAA,EACA,aAAa;AACX,SAAK,iBAAiB;AAAA,EACxB;AACF;AAEA4D,GAAe,YAAY;AAAA,EACzB,MAAM;AAAA,IACJxO,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;ACjIA,MAAM8O,KAA4B;AAAA,EAChC,KAAK;AAAA;AAAA;AAAA;AAAA,EAIL,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMb,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOb,KAAK;AAAA;AAAA;AAAA;AAAA,EAIL,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMb,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOb,KAAK;AAAA;AAAA;AAAA;AAAA,EAIL,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMb,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOb,MAAM;AAAA;AAAA;AAAA;AAAA,EAIN,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAKd,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMd,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB,GACMC,KAA2B;AAAA,EAC/B,KAAK;AAAA,EACL,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,KAAK;AAAA,EACL,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,KAAK;AAAA,EACL,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,MAAM;AAAA,EACN,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAChB;AC5GA,SAASC,GAAqB9D,GAAO3D,GAAa;AAChD,QAAMsD,IAAgB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOpB;AACH,aAAW7G,KAAKkH,EAAM,UAAU;AAC9B,QAAI,CAAC3D,EAAYvD,CAAC,GAAG;AACnB,MAAIkH,EAAM,SAASlH,CAAC,aAAamH,IAC3BD,EAAM,SAASlH,CAAC,EAAE,MACpB6G,EAAc,KAAK;AAAA,8DACiC7G,CAAC,MAAMA,CAAC;AAAA,qBACjD,IAEX6G,EAAc,KAAK;AAAA,gEACmC7G,CAAC;AAAA,qBAC5C,IAEJkH,EAAM,SAASlH,CAAC,aAAaqH,KACtCR,EAAc,KAAK;AAAA,gEACqC7G,CAAC,MAAMA,CAAC;AAAA,qBACnD;AAEf;AAAA,IACF;AACA,UAAMiL,IAAU/D,EAAM,kBAAkBlH,CAAC;AACzC,QAAIkL,IAAS;AACb,aAAS/K,IAAI,GAAGA,IAAIgL,EAAe,QAAQhL,KAAK;AAC9C,YAAMiL,IAASD,EAAehL,CAAC;AAC/B,UAAI8K,EAAQ,SAASG,EAAO,QAAQA,EAAO,KAAKH,CAAO,GAAG;AACxD,QAAApE,EAAc,KAAK,WAAW7G,CAAC,MAAMmL,EAAehL,CAAC,EAAE,OAAO,GAC9D+K,IAAS;AACT;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAACA,GAAQ;AAEX,YAAMG,KADeJ,EAAQ,SAAS,IAAIH,KAA4BC,IACxCE,EAAQ,IAAI,EAAE,QAAQ,YAAY,OAAOjL,CAAC,aAAa;AACrF,MAAA6G,EAAc,KAAK;AAAA,uBACF7G,CAAC;AAAA;AAAA,sBAEFA,CAAC;AAAA,cACTqL,CAAQ,GAAG;AAAA,IACrB;AAAA,EACF;AACA,SAAO,IAAI,SAAS,MAAM,MAAM,YAAY,YAAYxE,EAAc,KAAK;AAAA,CAAI,CAAC;AAClF;ACnDA,MAAMyE,GAAqB;AAAA;AAAA,EAEzB,YAAY1P,GAAU;AAEpB,SAAK,SAAS,CAAA,GACd,KAAK,wBAAwB,CAAA,GAC7B,KAAK,YAAYA,GACjB,KAAK,KAAK,MACV,KAAK,SAAS,CAAA;AAAA,EAChB;AAAA,EACA,cAAcW,GAAI;AAChB,SAAK,KAAKA;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,mBAAmB2K,GAAOpH,GAASyL,GAAU;AAC3C,UAAMtE,IAAc,KAAK,UAAU,OAAO,gBAAgBnH,CAAO;AACjE,KAAI,CAACoH,EAAM,YAAYA,EAAM,aAAaD,EAAY,mBAAmBC,EAAM,GAAG,OAChFD,EAAY,mBAAmBC,EAAM,GAAG,IAAIA,EAAM,UACjC,KAAK,wBAAwBA,GAAOpH,CAAO,EACnDmH,EAAY,aAAaC,EAAM,UAAU,KAAK,WAAWqE,CAAQ;AAAA,EAE9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,wBAAwBrE,GAAOpH,GAAS;;AACtC,aAAOzB,IAAA,KAAK,sBAAsB6I,EAAM,UAAU,MAA3C,gBAAA7I,EAA+CyB,EAAQ,UAAS,KAAK,2BAA2BoH,GAAOpH,CAAO;AAAA,EACvH;AAAA,EACA,2BAA2BoH,GAAOpH,GAAS;AACzC,UAAM0L,IAAuB,KAAK,sBAAsBtE,EAAM,UAAU,MAAM,KAAK,sBAAsBA,EAAM,UAAU,IAAI,CAAA,IACvH9J,IAAK,KAAK,cAAc8J,GAAOpH,EAAQ,cAAc,GAAG;AAC9D,WAAK,KAAK,OAAO1C,CAAE,MACjB,KAAK,OAAOA,CAAE,IAAI,KAAK,sBAAsB8J,GAAOpH,EAAQ,YAAY,IAE1E0L,EAAqB1L,EAAQ,IAAI,IAAI,KAAK,OAAO1C,CAAE,GAC5CoO,EAAqB1L,EAAQ,IAAI;AAAA,EAC1C;AAAA,EACA,sBAAsBoH,GAAO3D,GAAa;AACxC,WAAOyH,GAAqB9D,GAAO3D,CAAW;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc2D,GAAO3D,GAAakI,GAAQ;AACxC,UAAMxC,IAAW/B,EAAM,UACjB7G,IAAU,CAAC,GAAGoL,CAAM,GAAG;AAC7B,eAAWzL,KAAKiJ;AACd,MAAA5I,EAAQ,KAAKL,CAAC,GACVuD,EAAYvD,CAAC,KACfK,EAAQ,KAAKkD,EAAYvD,CAAC,EAAE,IAAI;AAGpC,WAAOK,EAAQ,KAAK,GAAG;AAAA,EACzB;AAAA;AAAA,EAEA,UAAU;AACR,SAAK,YAAY,MACjB,KAAK,SAAS;AAAA,EAChB;AACF;AAEAiL,GAAqB,YAAY;AAAA,EAC/B,MAAM;AAAA,IACJtP,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AChFA,SAAS0P,GAAyBnP,GAAI;AACpC,QAAMoP,IAAW,CAAA;AAWjB,MAVAA,EAAS,SAAS,CAACpP,EAAG,KAAKA,EAAG,mBAAmB,GACjDoP,EAAS,MAAM,CAACpP,EAAG,KAAKA,EAAG,GAAG,GAC9BoP,EAAS,WAAW,CAACpP,EAAG,WAAWA,EAAG,qBAAqBA,EAAG,KAAKA,EAAG,mBAAmB,GACzFoP,EAAS,SAAS,CAACpP,EAAG,KAAKA,EAAG,qBAAqBA,EAAG,KAAKA,EAAG,mBAAmB,GACjFoP,EAAS,OAAO,CAAC,GAAG,CAAC,GACrBA,EAAS,YAAY,IAAI,CAACpP,EAAG,WAAWA,EAAG,qBAAqBA,EAAG,KAAKA,EAAG,mBAAmB,GAC9FoP,EAAS,SAAS,IAAI,CAACpP,EAAG,WAAWA,EAAG,KAAKA,EAAG,KAAKA,EAAG,GAAG,GAC3DoP,EAAS,YAAY,IAAI,CAACpP,EAAG,WAAWA,EAAG,qBAAqBA,EAAG,KAAKA,EAAG,mBAAmB,GAC9FoP,EAAS,QAAQ,CAACpP,EAAG,MAAMA,EAAG,mBAAmB,GAChC,EAAEA,aAAcmB,EAAW,IAAG,EAAG;AAEhD,IAAAiO,EAAS,MAAM,CAACpP,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,GAAG,GAC9DoP,EAAS,MAAM,CAACpP,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,GAAG;AAAA,OACzD;AACL,UAAMqP,IAAMrP,EAAG,aAAa,kBAAkB;AAC9C,IAAIqP,MACFD,EAAS,MAAM,CAACpP,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKqP,EAAI,SAASA,EAAI,OAAO,GACxED,EAAS,MAAM,CAACpP,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKA,EAAG,KAAKqP,EAAI,SAASA,EAAI,OAAO;AAAA,EAE5E;AACA,SAAOD;AACT;ACrBA,MAAME,KAAQ,GACRC,KAAS,GACTC,KAAU,GACVC,KAAa,GACbC,KAAU,GACVC,KAAa,GACbC,KAAiB,MAAMA,EAAe;AAAA,EAC1C,YAAYvQ,GAAU;AAMpB,SAAK,mBAAmB,IACxB,KAAK,KAAK,MACV,KAAK,UAAU,GACf,KAAK,gBAAgB,GACrB,KAAK,YAAY,QACjB,KAAK,WAAW,IAChB,KAAK,MAAM,CAAA,GACX,KAAK,IAAIiQ,EAAK,IAAI,KAAK,UACvB,KAAK,IAAIC,EAAM,IAAI,KAAK,WACxB,KAAK,IAAIC,EAAO,IAAI,KAAK,aACzB,KAAK,IAAIC,EAAU,IAAI,KAAK,cAC5B,KAAK,IAAIC,EAAO,IAAI,KAAK,cACzB,KAAK,IAAIC,EAAU,IAAI,KAAK,cAC5B,KAAK,SAAS,CAAA,GACd,KAAK,eAAe3Q,EAAM,MAAK,GAC/BK,EAAS,aAAa,qBAAqB,IAAI,IAAI;AAAA,EACrD;AAAA,EACA,qBAAqBoG,GAAc;AACjC,SAAK,mBAAmB,CAACA,EAAa,QAClC,KAAK,YACP,KAAK,aAAa,KAAK,UAAU,IAEjC,KAAK,kBAAkB;AAAA,EAE3B;AAAA,EACA,cAAczF,GAAI;AAChB,SAAK,KAAKA,GACV,KAAK,gBAAgBmP,GAAyBnP,CAAE,GAChD,KAAK,WAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAIiG,GAAO;AAET,QADAA,MAAUA,IAAQ,KAAK,eACnB,KAAK,YAAYA,EAAM,MAAM;AAC/B,UAAI4J,IAAO,KAAK,UAAU5J,EAAM,MAC5BxC,IAAI;AACR,aAAOoM;AACL,QAAIA,IAAO,KACT,KAAK,IAAIpM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAEwC,EAAM,OAAO,KAAKxC,EAAE,GAEhDoM,MAAS,GACTpM;AAEF,WAAK,UAAUwC,EAAM;AAAA,IACvB;AACA,aAASxC,IAAI,GAAGA,IAAI,KAAK,OAAO,QAAQA;AACtC,WAAK,OAAOA,CAAC,EAAE,MAAMwC,CAAK;AAAA,EAE9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWA,GAAO;AAChB,IAAAA,MAAUA,IAAQ,KAAK;AACvB,aAASxC,IAAI,GAAGA,IAAI,KAAK,IAAI,QAAQA;AACnC,WAAK,IAAIA,CAAC,EAAE,KAAK,MAAM,CAAC,EAAEwC,EAAM,OAAO,KAAKxC,EAAE;AAEhD,aAASA,IAAI,GAAGA,IAAI,KAAK,OAAO,QAAQA;AACtC,WAAK,OAAOA,CAAC,EAAE,MAAMwC,CAAK;AAE5B,SAAK,UAAUA,EAAM;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS6J,GAAO;AACd,SAAK,aAAaF,EAAe,iBAAiBE,CAAK,GACvD,KAAK,GAAGA,IAAQ,WAAW,SAAS,EAAE,KAAK,GAAG,KAAK;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAUA,GAAO;AACf,SAAK,aAAaF,EAAe,qBAAqBE,CAAK,GAC3D,KAAK,GAAGA,IAAQ,WAAW,SAAS,EAAE,KAAK,GAAG,mBAAmB;AAAA,EACnE;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaA,GAAO;AAClB,SAAK,GAAGA,IAAQ,WAAW,SAAS,EAAE,KAAK,GAAG,UAAU;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaA,GAAO;AAClB,SAAK,GAAG,UAAUA,CAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAYA,GAAO;AACjB,SAAK,YAAYA,GACjB,KAAK,GAAGA,IAAQ,WAAW,SAAS,EAAE,KAAK,GAAG,SAAS,GACnD,KAAK,aAAa,KAAK,mBACzB,KAAK,aAAa,KAAK,UAAU;AAAA,EAErC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaA,GAAO;AAClB,SAAK,aAAaA,GAClB,KAAK,kBAAkB;AACvB,UAAMC,IAAW,KAAK,mBAAmB,CAACD,IAAQA;AAClD,IAAI,KAAK,iBAAiBC,MACxB,KAAK,eAAeA,GACpB,KAAK,GAAG,UAAU,KAAK,GAAGA,IAAW,OAAO,KAAK,CAAC;AAAA,EAEtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaD,GAAO;AAIlB,QAHK,KAAK,cAAcA,CAAK,MAC3BA,IAAQ,WAENA,MAAU,KAAK;AACjB;AAEF,SAAK,YAAYA;AACjB,UAAMnJ,IAAO,KAAK,cAAcmJ,CAAK,GAC/B9P,IAAK,KAAK;AAChB,IAAI2G,EAAK,WAAW,IAClB3G,EAAG,UAAU2G,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC,IAE7B3G,EAAG,kBAAkB2G,EAAK,CAAC,GAAGA,EAAK,CAAC,GAAGA,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC,GAErDA,EAAK,WAAW,KAClB,KAAK,WAAW,IAChB3G,EAAG,sBAAsB2G,EAAK,CAAC,GAAGA,EAAK,CAAC,CAAC,KAChC,KAAK,aACd,KAAK,WAAW,IAChB3G,EAAG,sBAAsBA,EAAG,UAAUA,EAAG,QAAQ;AAAA,EAErD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB8P,GAAOE,GAAO;AAC7B,SAAK,GAAG,cAAcF,GAAOE,CAAK;AAAA,EACpC;AAAA;AAAA,EAEA,aAAa;AACX,SAAK,eAAe,IACpB,KAAK,aAAa,IAClB,KAAK,YAAY,IACjB,KAAK,kBAAkB,IACvB,KAAK,mBAAmB,IACxB,KAAK,GAAG,UAAU,KAAK,GAAG,GAAG,GAC7B,KAAK,GAAG,YAAY,KAAK,GAAG,qBAAqB,EAAK,GACtD,KAAK,WAAW,KAAK,YAAY,GACjC,KAAK,WAAW,IAChB,KAAK,YAAY,IACjB,KAAK,aAAa,QAAQ;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAAaC,GAAMH,GAAO;AACxB,UAAM5P,IAAQ,KAAK,OAAO,QAAQ+P,CAAI;AACtC,IAAIH,KAAS5P,MAAU,KACrB,KAAK,OAAO,KAAK+P,CAAI,IACZ,CAACH,KAAS5P,MAAU,MAC7B,KAAK,OAAO,OAAOA,GAAO,CAAC;AAAA,EAE/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,gBAAgBgQ,GAAQjK,GAAO;AACpC,IAAAiK,EAAO,aAAajK,EAAM,SAAS;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,oBAAoBiK,GAAQjK,GAAO;AACxC,IAAAiK,EAAO,iBAAiB,GAAGjK,EAAM,aAAa;AAAA,EAChD;AAAA;AAAA,EAEA,UAAU;AACR,SAAK,KAAK,MACV,KAAK,OAAO,SAAS;AAAA,EACvB;AACF;AAEA2J,GAAe,YAAY;AAAA,EACzB,MAAM;AAAA,IACJnQ,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AACA,IAAI0Q,KAAgBP;ACtOpB,MAAMQ,GAAU;AAAA,EACd,YAAYtH,GAAS;AACnB,SAAK,SAASxG,GAAW,YACzB,KAAK,UAAUwG,GACf,KAAK,QAAQ,IACb,KAAK,SAAS,IACd,KAAK,OAAOtG,EAAS,eACrB,KAAK,iBAAiBJ,EAAW,MACjC,KAAK,SAASA,EAAW,MACzB,KAAK,cAAc;AAAA,EACrB;AACF;ACbA,MAAMiO,KAA8B;AAAA,EAClC,IAAI;AAAA,EACJ,OAAO1H,GAAQa,GAAWxJ,GAAI;AAC5B,IAAIwJ,EAAU,UAAUb,EAAO,SAASa,EAAU,WAAWb,EAAO,SAClE3I,EAAG;AAAA,MACDA,EAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA2I,EAAO;AAAA,MACPA,EAAO;AAAA,MACPa,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACf,IAEM3I,EAAG;AAAA,MACDwJ,EAAU;AAAA,MACV;AAAA,MACAA,EAAU;AAAA,MACVb,EAAO;AAAA,MACPA,EAAO;AAAA,MACP;AAAA,MACAa,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACf,GAEIa,EAAU,QAAQb,EAAO,OACzBa,EAAU,SAASb,EAAO;AAAA,EAC5B;AACF,GC/BM2H,KAAsB;AAAA,EAC1B,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA;AAAA;AAAA,EAGvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA;AAAA;AAAA,EAGjB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,yBAAyB;AAC3B,GACMC,KAAoC;AAAA,EACxC,IAAI;AAAA,EACJ,OAAO5H,GAAQa,GAAWxJ,GAAI;AAC5B,IAAAA,EAAG,YAAYA,EAAG,kBAAkB,CAAC;AACrC,QAAIwQ,IAAW7H,EAAO,YAClB8H,IAAY9H,EAAO;AACvB,UAAM+H,IAAa,CAAC,CAACJ,GAAoB3H,EAAO,MAAM;AACtD,aAASlF,IAAI,GAAGA,IAAIkF,EAAO,SAAS,QAAQlF,KAAK;AAC/C,YAAMkN,IAAchI,EAAO,SAASlF,CAAC;AACrC,MAAIiN,IACF1Q,EAAG;AAAA,QACDA,EAAG;AAAA,QACHyD;AAAA,QACA+F,EAAU;AAAA,QACVgH;AAAA,QACAC;AAAA,QACA;AAAA,QACAE;AAAA,MACV,IAEQ3Q,EAAG;AAAA,QACDA,EAAG;AAAA,QACHyD;AAAA,QACA+F,EAAU;AAAA,QACVgH;AAAA,QACAC;AAAA,QACA;AAAA,QACAjH,EAAU;AAAA,QACVA,EAAU;AAAA,QACVmH;AAAA,MACV,GAEMH,IAAW,KAAK,IAAIA,KAAY,GAAG,CAAC,GACpCC,IAAY,KAAK,IAAIA,KAAa,GAAG,CAAC;AAAA,IACxC;AAAA,EACF;AACF,GC9FMG,KAAwB;AAAA,EAC5B,IAAI;AAAA,EACJ,OAAOjI,GAAQa,GAAWxJ,GAAI6Q,GAAc;AAC1C,UAAMC,IAAUtH,EAAU,OACpBuH,IAAWvH,EAAU,QACrBwH,IAAerI,EAAO,YACtBsI,IAAgBtI,EAAO,aACvBuI,IAAgBvI,EAAO,eACvBwI,IAAiBxI,EAAO;AAC9B,IAAIuI,IAAgBF,KAAgBG,IAAiBF,MAC/CH,MAAYE,KAAgBD,MAAaE,MAC3CjR,EAAG;AAAA,MACDwJ,EAAU;AAAA,MACV;AAAA,MACAA,EAAU;AAAA,MACVwH;AAAA,MACAC;AAAA,MACA;AAAA,MACAzH,EAAU;AAAA,MACVA,EAAU;AAAA,MACV;AAAA,IACV,GAEUqH,MAAiB,IACnB7Q,EAAG;AAAA,MACDA,EAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACAkR;AAAA,MACAC;AAAA,MACA3H,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACjB,IAEQ3I,EAAG;AAAA,MACDA,EAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACAwJ,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACjB,KAEemI,MAAYE,KAAgBD,MAAaE,IAClDjR,EAAG;AAAA,MACDA,EAAG;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACAwJ,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACf,IACekI,MAAiB,IAC1B7Q,EAAG;AAAA,MACDwJ,EAAU;AAAA,MACV;AAAA,MACAA,EAAU;AAAA,MACVwH;AAAA,MACAC;AAAA,MACA;AAAA,MACAzH,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACf,IAEM3I,EAAG;AAAA,MACDwJ,EAAU;AAAA,MACV;AAAA,MACAA,EAAU;AAAA,MACVA,EAAU;AAAA,MACVA,EAAU;AAAA,MACVb,EAAO;AAAA,IACf,GAEIa,EAAU,QAAQwH,GAClBxH,EAAU,SAASyH;AAAA,EACrB;AACF,GC/EMG,KAAwB;AAAA,EAC5B,IAAI;AAAA,EACJ,OAAOzI,GAAQa,GAAWxJ,GAAI6Q,GAAc;AAC1C,QAAI,CAAClI,EAAO,SAAS;AACnB,MAAA3I,EAAG;AAAA,QACDwJ,EAAU;AAAA,QACV;AAAA,QACAA,EAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACAA,EAAU;AAAA,QACVA,EAAU;AAAA,QACV;AAAA,MACR;AACM;AAAA,IACF;AACA,IAAAoH,GAAsB,OAAOjI,GAAQa,GAAWxJ,GAAI6Q,CAAY;AAAA,EAClE;AACF,GCrBMQ,IAAsB;AAAA,EAC1B,QAAQ;AAAA,EACR,SAAS;AACX,GACMC,KAA4B;AAAA,EAChC,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AAAA,EACE,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AACA,GACMC,IAAsB;AAAA,EAC1B,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AACnB,GACMC,KAAyB;AAAA,EAC7B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AAAA,EACP,cAAc;AAAA,EACd,SAAS;AAAA,EACT,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,QAAQ;AACV;AC1BA,SAASC,EAAiBC,GAAO1R,GAAI2R,GAASC,GAAgBC,GAAgBC,GAAYC,GAAYC,GAAe;AACnH,QAAMC,IAAYH;AAClB,MAAI,CAACE,KAAiBN,EAAM,iBAAiB,YAAYA,EAAM,iBAAiB,YAAYA,EAAM,iBAAiB,UAAU;AAC3H,UAAMQ,IAAYX,EAAoBQ,IAAa,kBAAkBL,EAAM,YAAY,GACjFS,IAAYZ,EAAoBQ,IAAa,kBAAkBL,EAAM,YAAY,GACjFU,IAAYb,EAAoBQ,IAAa,kBAAkBL,EAAM,YAAY;AACvF,IAAA1R,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,gBAAgBkS,CAAS,GAC1DlS,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,gBAAgBmS,CAAS,GACtDnS,EAAG,kBACLA,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,gBAAgBoS,CAAS;AAAA,EAC9D;AAIA,OAHI,CAACJ,KAAiBN,EAAM,cAAc,aACxC1R,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,oBAAoBqR,EAAoBK,EAAM,SAAS,CAAC,GAEvFC;AACF,QAAI,CAACK,KAAiBN,EAAM,iBAAiB,UAAU;AACrD,YAAMW,IAAef,GAA0BI,EAAM,SAAS,EAAEA,EAAM,YAAY;AAClF,MAAA1R,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,oBAAoBqS,CAAY;AAAA,IACnE;AAAA;AAEA,IAAArS,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,oBAAoBqR,EAAoBK,EAAM,SAAS,CAAC;AAE3F,MAAIE,KAAkBF,EAAM,gBAAgB,GAAG;AAC7C,UAAMY,IAAQ,KAAK,IAAIZ,EAAM,eAAe1R,EAAG,aAAa4R,EAAe,8BAA8B,CAAC;AAC1G,IAAA5R,EAAG6R,CAAc,EAAEI,GAAWL,EAAe,4BAA4BU,CAAK;AAAA,EAChF;AACA,EAAIZ,EAAM,WACR1R,EAAG6R,CAAc,EAAEI,GAAWjS,EAAG,sBAAsBwR,GAAuBE,EAAM,OAAO,CAAC;AAEhG;AC/BA,SAASa,GAAoBvS,GAAI;AAC/B,SAAO;AAAA;AAAA,IAEL,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,QAAQA,EAAG;AAAA,IACX,QAAQA,EAAG;AAAA;AAAA,IAEX,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA;AAAA,IAEZ,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,mBAAmBA,EAAG;AAAA;AAAA,IAEtB,YAAYA,EAAG;AAAA,IACf,WAAWA,EAAG;AAAA,IACd,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,mBAAmBA,EAAG;AAAA,IACtB,cAAcA,EAAG;AAAA,IACjB,cAAcA,EAAG;AAAA,IACjB,eAAeA,EAAG;AAAA;AAAA,IAElB,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,YAAYA,EAAG;AAAA,IACf,aAAaA,EAAG;AAAA;AAAA,IAEhB,YAAYA,EAAG;AAAA,IACf,YAAYA,EAAG;AAAA,IACf,aAAaA,EAAG;AAAA;AAAA,IAEhB,UAAUA,EAAG;AAAA,IACb,cAAcA,EAAG;AAAA,IACjB,aAAaA,EAAG;AAAA,IAChB,wBAAwBA,EAAG;AAAA,IAC3B,cAAcA,EAAG;AAAA,IACjB,yBAAyBA,EAAG;AAAA,EAChC;AACA;AClDA,SAASwS,GAA4BxS,GAAIkC,GAAY;AACnD,MAAIuQ,IAAO,CAAA,GACPC,IAAa1S,EAAG;AACpB,SAAMA,aAAcmB,EAAW,IAAG,EAAG,yBAAwB,IAMlDe,EAAW,SACpBuQ,IAAO;AAAA,IACL,mBAAmBvQ,EAAW,KAAK;AAAA,IACnC,mBAAmBA,EAAW,KAAK;AAAA,EACzC,MATIuQ,IAAO;AAAA,IACL,mBAAmBzS,EAAG;AAAA,IACtB,mBAAmBA,EAAG;AAAA,EAC5B,GACI0S,IAAa1S,EAAG,QAOX;AAAA;AAAA,IAEL,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,QAAQA,EAAG;AAAA,IACX,QAAQA,EAAG;AAAA;AAAA,IAEX,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA;AAAA,IAEZ,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,GAAGyS;AAAA;AAAA,IAEH,YAAYzS,EAAG;AAAA,IACf,WAAWA,EAAG;AAAA,IACd,WAAWA,EAAG;AAAA,IACd,YAAA0S;AAAA,IACA,cAAc1S,EAAG;AAAA,IACjB,cAAcA,EAAG;AAAA,IACjB,eAAeA,EAAG;AAAA;AAAA,IAElB,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,YAAYA,EAAG;AAAA,IACf,aAAaA,EAAG;AAAA;AAAA,IAEhB,YAAYA,EAAG;AAAA,IACf,YAAYA,EAAG;AAAA,IACf,aAAaA,EAAG;AAAA;AAAA,IAEhB,UAAUA,EAAG;AAAA,IACb,cAAcA,EAAG;AAAA,IACjB,aAAaA,EAAG;AAAA,IAChB,wBAAwBA,EAAG;AAAA,IAC3B,cAAcA,EAAG;AAAA,IACjB,yBAAyBA,EAAG;AAAA;AAAA,IAE5B,GAAGkC,EAAW,OAAO;AAAA,MACnB,kBAAkBA,EAAW,KAAK;AAAA,MAClC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,kBAAkBA,EAAW,KAAK;AAAA,IACxC,IAAQ,CAAA;AAAA,IACJ,GAAGA,EAAW,YAAY;AAAA,MACxB,uBAAuBA,EAAW,UAAU;AAAA,MAC5C,uBAAuBA,EAAW,UAAU;AAAA,MAC5C,uBAAuBA,EAAW,UAAU;AAAA,IAClD,IAAQ,CAAA;AAAA,IACJ,GAAGA,EAAW,OAAO;AAAA,MACnB,eAAeA,EAAW,KAAK;AAAA,MAC/B,eAAeA,EAAW,KAAK;AAAA,MAC/B,gBAAgBA,EAAW,KAAK;AAAA,MAChC,gBAAgBA,EAAW,KAAK;AAAA,IACtC,IAAQ,CAAA;AAAA,IACJ,GAAGA,EAAW,OAAO;AAAA,MACnB,kBAAkBA,EAAW,KAAK;AAAA,MAClC,mBAAmBA,EAAW,KAAK;AAAA,MACnC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,IAC7C,IAAQ,CAAA;AAAA,IACJ,GAAGA,EAAW,MAAM;AAAA,MAClB,kBAAkBA,EAAW,IAAI;AAAA,MACjC,uBAAuBA,EAAW,IAAI;AAAA,MACtC,oBAAoBA,EAAW,IAAI;AAAA,MACnC,yBAAyBA,EAAW,IAAI;AAAA,MACxC,mBAAmBA,EAAW,IAAI;AAAA,MAClC,wBAAwBA,EAAW,IAAI;AAAA,MACvC,gBAAgBA,EAAW,IAAI;AAAA;AAAA,MAE/B,iBAAiBA,EAAW,IAAI;AAAA;AAAA,IAEtC,IAAQ,CAAA;AAAA,IACJ,GAAGA,EAAW,OAAO;AAAA,MACnB,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,kBAAkBA,EAAW,KAAK;AAAA,MAClC,uBAAuBA,EAAW,KAAK;AAAA,MACvC,mBAAmBA,EAAW,KAAK;AAAA,MACnC,wBAAwBA,EAAW,KAAK;AAAA,MACxC,mBAAmBA,EAAW,KAAK;AAAA,MACnC,wBAAwBA,EAAW,KAAK;AAAA,MACxC,mBAAmBA,EAAW,KAAK;AAAA,MACnC,wBAAwBA,EAAW,KAAK;AAAA,MACxC,oBAAoBA,EAAW,KAAK;AAAA,MACpC,yBAAyBA,EAAW,KAAK;AAAA,MACzC,oBAAoBA,EAAW,KAAK;AAAA,MACpC,yBAAyBA,EAAW,KAAK;AAAA,MACzC,oBAAoBA,EAAW,KAAK;AAAA,MACpC,yBAAyBA,EAAW,KAAK;AAAA,IAC/C,IAAQ,CAAA;AAAA,EACR;AACA;ACpIA,SAASyQ,GAAkB3S,GAAI;AAC7B,SAAO;AAAA;AAAA,IAEL,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,QAAQA,EAAG;AAAA,IACX,QAAQA,EAAG;AAAA;AAAA,IAEX,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA;AAAA,IAEZ,SAASA,EAAG;AAAA,IACZ,SAASA,EAAG;AAAA,IACZ,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,mBAAmBA,EAAG;AAAA;AAAA,IAEtB,YAAYA,EAAG;AAAA,IACf,WAAWA,EAAG;AAAA,IACd,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,mBAAmBA,EAAG;AAAA,IACtB,cAAcA,EAAG;AAAA,IACjB,cAAcA,EAAG;AAAA,IACjB,eAAeA,EAAG;AAAA;AAAA,IAElB,UAAUA,EAAG;AAAA,IACb,UAAUA,EAAG;AAAA,IACb,WAAWA,EAAG;AAAA,IACd,YAAYA,EAAG;AAAA,IACf,YAAYA,EAAG;AAAA,IACf,aAAaA,EAAG;AAAA;AAAA,IAEhB,YAAYA,EAAG;AAAA,IACf,YAAYA,EAAG;AAAA,IACf,aAAaA,EAAG;AAAA;AAAA,IAEhB,UAAUA,EAAG;AAAA,IACb,cAAcA,EAAG;AAAA,IACjB,aAAaA,EAAG;AAAA,IAChB,wBAAwBA,EAAG;AAAA,IAC3B,cAAcA,EAAG;AAAA,IACjB,yBAAyBA,EAAG;AAAA,EAChC;AACA;ACtCA,MAAM4S,KAAkB;AACxB,MAAMC,GAAgB;AAAA,EACpB,YAAYxT,GAAU;AACpB,SAAK,kBAAkB,CAAA,GACvB,KAAK,cAA8B,uBAAO,OAAO,IAAI,GACrD,KAAK,cAA8B,uBAAO,OAAO,IAAI,GACrD,KAAK,iBAAiB,CAAA,GACtB,KAAK,yBAAyB,IAC9B,KAAK,iBAAiC,uBAAO,OAAO,IAAI,GACxD,KAAK,WAAW;AAAA,MACd,OAAOuR;AAAA,MACP,QAAQP;AAAA,MACR,OAAOe;AAAA,MACP,YAAYb;AAAA,IAClB,GACI,KAAK,oBAAoB,IAEzB,KAAK,uBAAuB,IAC5B,KAAK,YAAYlR,GACjB,KAAK,UAAU,aAAa,eAAe,MAAM,aAAa,GAC9D,KAAK,UAAU,aAAa,eAAe,MAAM,aAAa;AAAA,EAChE;AAAA,EACA,cAAcW,GAAI;AAChB,SAAK,MAAMA,GACN,KAAK,+BACR,KAAK,6BAA6BwS,GAA4BxS,GAAI,KAAK,UAAU,QAAQ,UAAU,GACnG,KAAK,mBAAmB2S,GAAkB3S,CAAE,GAC5C,KAAK,qBAAqBuS,GAAoBvS,CAAE,IAElD,KAAK,cAA8B,uBAAO,OAAO,IAAI,GACrD,KAAK,cAA8B,uBAAO,OAAO,IAAI,GACrD,KAAK,iBAAiC,uBAAO,OAAO,IAAI,GACxD,KAAK,oBAAoB;AACzB,aAASyD,IAAI,GAAGA,IAAI,IAAIA;AACtB,WAAK,KAAK+B,EAAQ,OAAO/B,CAAC;AAAA,EAE9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAWkF,GAAQ;AACjB,SAAK,KAAKA,CAAM;AAAA,EAClB;AAAA,EACA,KAAKG,GAASvE,IAAW,GAAG;AAC1B,UAAMoE,IAASG,EAAQ;AACvB,IAAIA,KACF,KAAK,WAAWH,GAAQpE,CAAQ,GAC5B,KAAK,wBACP,KAAK,aAAaoE,EAAO,OAAOpE,CAAQ,MAG1C,KAAK,WAAW,MAAMA,CAAQ,GAC1B,KAAK,wBACP,KAAK,aAAa,MAAMA,CAAQ;AAAA,EAGtC;AAAA,EACA,WAAWoE,GAAQpE,IAAW,GAAG;AAC/B,UAAMvE,IAAK,KAAK;AAEhB,QADA2I,EAAO,WAAW,KAAK,UAAU,UAAU,OACvC,KAAK,eAAepE,CAAQ,MAAMoE,GAAQ;AAC5C,WAAK,eAAepE,CAAQ,IAAIoE,GAChC,KAAK,kBAAkBpE,CAAQ,GAC/BoE,MAAWA,IAASnD,EAAQ,MAAM;AAClC,YAAMgE,IAAY,KAAK,YAAYb,CAAM;AACzC,MAAA3I,EAAG,YAAYwJ,EAAU,QAAQA,EAAU,OAAO;AAAA,IACpD;AAAA,EACF;AAAA,EACA,aAAakI,GAAOnN,IAAW,GAAG;AAChC,UAAMvE,IAAK,KAAK;AAChB,QAAI,CAAC0R,GAAO;AACV,WAAK,eAAenN,CAAQ,IAAI,MAChCvE,EAAG,YAAYuE,GAAU,IAAI;AAC7B;AAAA,IACF;AACA,UAAMuO,IAAU,KAAK,cAAcpB,CAAK;AACxC,IAAI,KAAK,eAAenN,CAAQ,MAAMuO,MACpC,KAAK,eAAevO,CAAQ,IAAIuO,GAChC9S,EAAG,YAAYuE,GAAUuO,CAAO;AAAA,EAEpC;AAAA,EACA,OAAOhK,GAAS;AACd,UAAMH,IAASG,EAAQ,QACjBiK,IAAgB,KAAK,gBACrB/S,IAAK,KAAK;AAChB,aAAS,IAAI,GAAG,IAAI+S,EAAc,QAAQ;AACxC,UAAIA,EAAc,CAAC,MAAMpK,GAAQ;AAC/B,aAAK,kBAAkB,CAAC;AACxB,cAAMa,IAAY,KAAK,YAAYb,CAAM;AACzC,QAAA3I,EAAG,YAAYwJ,EAAU,QAAQ,IAAI,GACrCuJ,EAAc,CAAC,IAAI;AAAA,MACrB;AAAA,EAEJ;AAAA,EACA,kBAAkBxO,GAAU;AAC1B,IAAI,KAAK,2BAA2BA,MAClC,KAAK,yBAAyBA,GAC9B,KAAK,IAAI,cAAc,KAAK,IAAI,WAAWA,CAAQ;AAAA,EAEvD;AAAA,EACA,YAAYoE,GAAQ;AAClB,UAAM3I,IAAK,KAAK,KACVwJ,IAAY,IAAI4G,GAAUpQ,EAAG,cAAa,CAAE;AAIlD,QAHAwJ,EAAU,OAAO,KAAK,iBAAiBb,EAAO,MAAM,GACpDa,EAAU,iBAAiB,KAAK,2BAA2Bb,EAAO,MAAM,GACxEa,EAAU,SAAS,KAAK,mBAAmBb,EAAO,MAAM,GACpDA,EAAO,wBAAwB,KAAK,UAAU,QAAQ,SAAS,oBAAoBA,EAAO,eAAe;AAC3G,YAAMqK,IAAmB,KAAK,IAAIrK,EAAO,OAAOA,EAAO,MAAM;AAC7D,MAAAA,EAAO,gBAAgB,KAAK,MAAM,KAAK,KAAKqK,CAAgB,CAAC,IAAI;AAAA,IACnE;AACA,gBAAK,YAAYrK,EAAO,GAAG,IAAIa,GAC1B,KAAK,gBAAgB,SAASb,CAAM,MACvCA,EAAO,GAAG,UAAU,KAAK,gBAAgB,IAAI,GAC7CA,EAAO,GAAG,UAAU,KAAK,gBAAgB,IAAI,GAC7CA,EAAO,GAAG,eAAe,KAAK,eAAe,IAAI,GACjDA,EAAO,GAAG,WAAW,KAAK,iBAAiB,IAAI,GAC/CA,EAAO,GAAG,UAAU,KAAK,gBAAgB,IAAI,GAC7CA,EAAO,GAAG,iBAAiB,KAAK,iBAAiB,IAAI,GACrD,KAAK,gBAAgB,KAAKA,CAAM,IAElC,KAAK,eAAeA,CAAM,GAC1B,KAAK,YAAYA,GAAQ,EAAK,GACvBa;AAAA,EACT;AAAA,EACA,cAAcb,GAAQ;AACpB,SAAK,YAAYA,GAAQ,EAAK;AAAA,EAChC;AAAA,EACA,YAAYA,GAAQqJ,GAAe;AACjC,UAAMhS,IAAK,KAAK,KACVwJ,IAAY,KAAK,YAAYb,CAAM;AACzC,IAAA3I,EAAG,YAAYA,EAAG,YAAYwJ,EAAU,OAAO,GAC/C,KAAK,eAAe,KAAK,sBAAsB,IAAIb,GACnD8I;AAAA,MACE9I,EAAO;AAAA,MACP3I;AAAA,MACA2I,EAAO,gBAAgB;AAAA,MACvB,KAAK,UAAU,QAAQ,WAAW;AAAA,MAClC;AAAA,MACA3I,EAAG;AAAA;AAAA,MAEH,CAAC,KAAK,UAAU,QAAQ,SAAS,qBAAqB,CAAC2I,EAAO;AAAA,MAC9DqJ;AAAA,IACN;AAAA,EACE;AAAA,EACA,eAAerJ,GAAQ;AACrB,UAAMa,IAAY,KAAK,YAAYb,EAAO,GAAG;AAC7C,IAAKa,MAEL,KAAK,OAAOb,CAAM,GAClB,KAAK,YAAYA,EAAO,GAAG,IAAI,MAC/B,KAAK,IAAI,cAAca,EAAU,OAAO;AAAA,EAC1C;AAAA,EACA,eAAeb,GAAQ;AACrB,UAAM3I,IAAK,KAAK,KACVwJ,IAAY,KAAK,YAAYb,CAAM;AACzC,IAAA3I,EAAG,YAAYA,EAAG,YAAYwJ,EAAU,OAAO,GAC/C,KAAK,eAAe,KAAK,sBAAsB,IAAIb;AACnD,UAAMtH,IAAqBsH,EAAO,cAAc;AAChD,IAAI,KAAK,sBAAsBtH,MAC7B,KAAK,oBAAoBA,GACzBrB,EAAG,YAAYA,EAAG,gCAAgCqB,CAAkB,IAElE,KAAK,SAASsH,EAAO,cAAc,IACrC,KAAK,SAASA,EAAO,cAAc,EAAE,OAAOA,GAAQa,GAAWxJ,GAAI,KAAK,UAAU,QAAQ,YAAY,IAEtGA,EAAG,WAAWA,EAAG,YAAY,GAAGA,EAAG,MAAM2I,EAAO,YAAYA,EAAO,aAAa,GAAG3I,EAAG,MAAMA,EAAG,eAAe,IAAI,GAEhH2I,EAAO,uBAAuBA,EAAO,gBAAgB,KACvD,KAAK,gBAAgBA,GAAQ,EAAK;AAAA,EAEtC;AAAA,EACA,gBAAgBA,GAAQsK,IAAO,IAAM;AACnC,IAAIA,KACF,KAAK,WAAWtK,GAAQ,CAAC;AAC3B,UAAMa,IAAY,KAAK,YAAYb,CAAM;AACzC,SAAK,IAAI,eAAea,EAAU,MAAM;AAAA,EAC1C;AAAA,EACA,gBAAgBb,GAAQ;AACtB,IAAAA,EAAO,IAAI,WAAW,KAAK,iBAAiB,IAAI,GAChDA,EAAO,IAAI,UAAU,KAAK,gBAAgB,IAAI,GAC9CA,EAAO,IAAI,UAAU,KAAK,gBAAgB,IAAI,GAC9CA,EAAO,IAAI,UAAU,KAAK,gBAAgB,IAAI,GAC9CA,EAAO,IAAI,eAAe,KAAK,eAAe,IAAI,GAClDA,EAAO,IAAI,iBAAiB,KAAK,iBAAiB,IAAI,GACtD,KAAK,gBAAgB,OAAO,KAAK,gBAAgB,QAAQA,CAAM,GAAG,CAAC,GACnE,KAAK,eAAeA,CAAM;AAAA,EAC5B;AAAA,EACA,aAAa+I,GAAO;AAClB,UAAM1R,IAAK,KAAK,KACVkT,IAAY,KAAK,IAAI,cAAa;AACxC,gBAAK,YAAYxB,EAAM,WAAW,IAAIwB,GACtCzB;AAAA,MACEC;AAAA,MACA1R;AAAA,MACA,KAAK,eAAe,KAAK,sBAAsB,EAAE,gBAAgB;AAAA,MACjE,KAAK,UAAU,QAAQ,WAAW;AAAA,MAClC;AAAA,MACAkT;AAAA,MACA;AAAA,MACA;AAAA,IACN,GACW,KAAK,YAAYxB,EAAM,WAAW;AAAA,EAC3C;AAAA,EACA,cAAcoB,GAAS;AACrB,WAAO,KAAK,YAAYA,EAAQ,WAAW,KAAK,KAAK,aAAaA,CAAO;AAAA,EAC3E;AAAA,EACA,YAAYnK,GAAQ;AAClB,WAAO,KAAK,YAAYA,EAAO,GAAG,KAAK,KAAK,YAAYA,CAAM;AAAA,EAChE;AAAA,EACA,eAAeG,GAAS;AACtB,UAAM,EAAE,QAAAqK,GAAQ,OAAAC,GAAO,QAAAC,EAAM,IAAK,KAAK,UAAUvK,CAAO,GAClDtH,IAASL,EAAW,IAAG,EAAG,aAAY;AAC5C,IAAAK,EAAO,QAAQ4R,GACf5R,EAAO,SAAS6R;AAChB,UAAMC,IAAM9R,EAAO,WAAW,IAAI;AAClC,QAAI8R,GAAK;AACP,YAAMC,IAAYD,EAAI,gBAAgBF,GAAOC,CAAM;AACnD,MAAAE,EAAU,KAAK,IAAIJ,CAAM,GACzBG,EAAI,aAAaC,GAAW,GAAG,CAAC;AAAA,IAClC;AACA,WAAO/R;AAAA,EACT;AAAA,EACA,UAAUsH,GAAS;AACjB,UAAM0K,IAAa1K,EAAQ,OAAO,YAC5B2K,IAAQ3K,EAAQ,OAChBsK,IAAQ,KAAK,IAAI,KAAK,MAAMK,EAAM,QAAQD,CAAU,GAAG,CAAC,GACxDH,IAAS,KAAK,IAAI,KAAK,MAAMI,EAAM,SAASD,CAAU,GAAG,CAAC,GAC1DL,IAAS,IAAI,WAAWP,KAAkBQ,IAAQC,CAAM,GACxDhU,IAAW,KAAK,WAChBoG,IAAepG,EAAS,aAAa,gBAAgByJ,CAAO,GAC5D4K,IAAiBrU,EAAS,aAAa,mBAAmBoG,CAAY,GACtEzF,IAAKX,EAAS;AACpB,WAAAW,EAAG,gBAAgBA,EAAG,aAAa0T,EAAe,wBAAwB,GAC1E1T,EAAG;AAAA,MACD,KAAK,MAAMyT,EAAM,IAAID,CAAU;AAAA,MAC/B,KAAK,MAAMC,EAAM,IAAID,CAAU;AAAA,MAC/BJ;AAAA,MACAC;AAAA,MACArT,EAAG;AAAA,MACHA,EAAG;AAAA,MACHmT;AAAA,IACN,GAIW,EAAE,QAAQ,IAAI,kBAAkBA,EAAO,MAAM,GAAG,OAAAC,GAAO,QAAAC,EAAM;AAAA,EACtE;AAAA,EACA,UAAU;AACR,SAAK,gBAAgB,MAAK,EAAG,QAAQ,CAAC1K,MAAW,KAAK,gBAAgBA,CAAM,CAAC,GAC7E,KAAK,kBAAkB,MACvB,KAAK,YAAY;AAAA,EACnB;AAAA,EACA,aAAa;AACX,SAAK,yBAAyB,IAC9B,KAAK,eAAe,KAAKnD,EAAQ,MAAM,MAAM,GAC7C,KAAK,iBAAiC,uBAAO,OAAO,IAAI;AACxD,UAAMxF,IAAK,KAAK;AAChB,SAAK,oBAAoB,IACzBA,EAAG,YAAYA,EAAG,gCAAgC,KAAK,iBAAiB;AAAA,EAC1E;AACF;AAEA6S,GAAgB,YAAY;AAAA,EAC1B,MAAM;AAAA,IACJpT,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AChRA,MAAMkU,GAAkB;AAAA,EACtB,cAActU,GAAU;AACtB,UAAMqN,IAAW,IAAI9B,EAAa;AAAA,MAChC,QAAQ,EAAE,OAAO,IAAI,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,YAAW;AAAA,MAClE,kBAAkB,EAAE,OAAO,IAAIgJ,EAAM,GAAI,MAAM,cAAa;AAAA,MAC5D,QAAQ,EAAE,OAAO,GAAG,MAAM,MAAK;AAAA,IACrC,CAAK,GACKC,IAAcxU,EAAS,OAAO,sBAC9ByU,IAAYC,EAA2B;AAAA,MAC3C,MAAM;AAAA,MACN,MAAM;AAAA,QACJC;AAAA,QACAC,GAA0BJ,CAAW;AAAA,QACrCK;AAAA,QACAC;AAAA,MACR;AAAA,IACA,CAAK;AACD,SAAK,SAAS,IAAI5O,EAAO;AAAA,MACvB,WAAAuO;AAAA,MACA,WAAW;AAAA,QACT,eAAepH;AAAA,QACf,eAAe0H,GAA6BP,CAAW;AAAA,MAC/D;AAAA,IACA,CAAK;AAAA,EACH;AAAA,EACA,QAAQQ,GAAcC,GAAY;AAChC,UAAMC,IAAUD,EAAW,SACrBlV,IAASmV,EAAQ,gBAAgB,KAAK,QACtClV,IAAWgV,EAAa,UACxBG,IAAgBnV,EAAS,iBACzB;AAAA,MACJ,SAAAoV;AAAA,MACA,cAAAC;AAAA,IACN,IAAQF,EAAc,qBAAqBD,CAAO;AAC9C,IAAAnV,EAAO,OAAO,CAAC,IAAIC,EAAS,eAAe,WAC3CA,EAAS,MAAM,IAAIgV,EAAa,KAAK,GACrChV,EAAS,OAAO,KAAKD,CAAM,GAC3BC,EAAS,SAAS,KAAKoV,EAAQ,UAAUrV,EAAO,SAAS;AACzD,UAAMuV,IAAUD,EAAa;AAC7B,aAASjR,IAAI,GAAGA,IAAIiR,EAAa,iBAAiBjR,KAAK;AACrD,YAAMlE,IAAQoV,EAAQlR,CAAC;AACvB,UAAIlE,EAAM,MAAM;AACd,iBAASqE,IAAI,GAAGA,IAAIrE,EAAM,SAAS,OAAOqE;AACxC,UAAAvE,EAAS,QAAQ,KAAKE,EAAM,SAAS,SAASqE,CAAC,GAAGA,CAAC;AAErD,QAAAvE,EAAS,SAAS,KAAKE,EAAM,UAAUA,EAAM,MAAMA,EAAM,KAAK;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,OAAO,QAAQ,EAAI,GACxB,KAAK,SAAS;AAAA,EAChB;AACF;AAEAoU,GAAkB,YAAY;AAAA,EAC5B,MAAM;AAAA,IACJlU,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;AC7DA,MAAMmV,GAAc;AAAA,EAClB,OAAO;AACL,UAAMd,IAAYC,EAA2B;AAAA,MAC3C,MAAM;AAAA,MACN,MAAM;AAAA,QACJG;AAAA,QACAW;AAAA,QACAV;AAAA,MACR;AAAA,IACA,CAAK;AACD,SAAK,UAAU,IAAI5O,EAAO;AAAA,MACxB,WAAAuO;AAAA,MACA,WAAW;AAAA,QACT,UAAUtO,EAAQ,MAAM;AAAA,QACxB,iBAAiB;AAAA,UACf,gBAAgB,EAAE,MAAM,eAAe,OAAO,IAAIoO,EAAM,EAAE;AAAA,QACpE;AAAA,MACA;AAAA,IACA,CAAK;AAAA,EACH;AAAA,EACA,QAAQkB,GAAUC,GAAM;AACtB,UAAM1V,IAAWyV,EAAS;AAC1B,QAAI1V,IAAS2V,EAAK;AAClB,QAAK3V;AAOE,UAAI,CAACA,EAAO,WAAW;AAC5B,QAAA8B,EAAK,gCAAgC6T,EAAK,MAAM;AAChD;AAAA,MACF;AAAA,WAVa;AACX,MAAA3V,IAAS,KAAK;AACd,YAAM0J,IAAUiM,EAAK,SACfpM,IAASG,EAAQ;AACvB,MAAA1J,EAAO,UAAU,WAAWuJ,GAC5BvJ,EAAO,UAAU,WAAWuJ,EAAO,OACnCvJ,EAAO,UAAU,gBAAgB,SAAS,iBAAiB0J,EAAQ,cAAc;AAAA,IACnF;AAIA,IAAA1J,EAAO,OAAO,GAAG,IAAIC,EAAS,eAAe,WAC7CD,EAAO,OAAO,GAAG,IAAI0V,EAAS,wBAC9BzV,EAAS,QAAQ,KAAK;AAAA,MACpB,UAAU0V,EAAK;AAAA,MACf,QAAA3V;AAAA,MACA,OAAO2V,EAAK;AAAA,IAClB,CAAK;AAAA,EACH;AAAA,EACA,UAAU;AACR,SAAK,QAAQ,QAAQ,EAAI,GACzB,KAAK,UAAU;AAAA,EACjB;AACF;AACAH,GAAc,YAAY;AAAA,EACxB,MAAM;AAAA,IACJnV,EAAc;AAAA,EAClB;AAAA,EACE,MAAM;AACR;ACxCA,MAAMuV,KAAsB;AAAA,EAC1B,GAAGC;AAAA,EACHnN;AAAA,EACAjC;AAAA,EACA1D;AAAA,EACAgE;AAAA,EACApG;AAAA,EACA8S;AAAA,EACA3I;AAAA,EACApH;AAAA,EACAiM;AAAA,EACAd;AAAA,EACAjI;AAAA,EACAmK;AAAA,EACA7J;AAAA,EACAR;AACF,GACMoP,KAAoB,CAAC,GAAGC,EAAiB,GACzCC,KAAuB,CAACrW,GAAgB6V,IAAejB,EAAiB,GACxE0B,KAAU,CAAA,GACVC,KAAc,CAAA,GACdC,KAAqB,CAAA;AAC3BrT,EAAW,kBAAkBzC,EAAc,aAAa4V,EAAO;AAC/DnT,EAAW,kBAAkBzC,EAAc,YAAY6V,EAAW;AAClEpT,EAAW,kBAAkBzC,EAAc,mBAAmB8V,EAAkB;AAChFrT,EAAW,IAAI,GAAG8S,IAAqB,GAAGE,IAAmB,GAAGE,EAAoB;AACpF,MAAMI,WAAsBC,GAAiB;AAAA,EAC3C,cAAc;AACZ,UAAMC,IAAe;AAAA,MACnB,MAAM;AAAA,MACN,MAAMC,GAAa;AAAA,MACnB,SAAAN;AAAA,MACA,aAAAC;AAAA,MACA,oBAAAC;AAAA,IACN;AACI,UAAMG,CAAY;AAAA,EACpB;AACF;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]}