{"version":3,"file":"CanvasRenderer.mjs","sources":["../src/CanvasRenderer.ts"],"sourcesContent":["import {\n    extensions,\n    ExtensionType,\n    RENDERER_TYPE,\n    settings,\n    SystemManager,\n    utils\n} from '@pixi/core';\n\nimport type {\n    BackgroundSystem,\n    BLEND_MODES,\n    ColorSource,\n    ExtensionMetadata,\n    GenerateTextureSystem,\n    ICanvas,\n    ICanvasRenderingContext2D,\n    IGenerateTextureOptions,\n    IRenderableObject,\n    IRenderer,\n    IRendererOptions,\n    IRendererPlugins,\n    IRendererRenderOptions,\n    Matrix,\n    PluginSystem,\n    Rectangle,\n    RenderTexture,\n    StartupSystem,\n    ViewSystem,\n} from '@pixi/core';\nimport type { DisplayObject } from '@pixi/display';\nimport type { CanvasContextSystem, SmoothingEnabledProperties } from './CanvasContextSystem';\nimport type { CanvasMaskSystem } from './CanvasMaskSystem';\nimport type { CanvasObjectRendererSystem } from './CanvasObjectRendererSystem';\n\nconst { deprecation } = utils;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface CanvasRenderer extends GlobalMixins.CanvasRenderer {}\n\n/**\n * The CanvasRenderer draws the scene and all its content onto a 2d canvas.\n *\n * This renderer should be used for browsers that support WebGL.\n *\n * This renderer should be used for browsers that do not support WebGL.\n * Don't forget to add the view to your DOM or you will not see anything!\n *\n * Renderer is composed of systems that manage specific tasks. The following systems are added by default\n * whenever you create a renderer:\n *\n * | System                               | Description                                                                   |\n * | ------------------------------------ | ----------------------------------------------------------------------------- |\n *\n * | Generic Systems                      | Systems that manage functionality that all renderer types share               |\n * | ------------------------------------ | ----------------------------------------------------------------------------- |\n * | {@link PIXI.ViewSystem}              | This manages the main view of the renderer usually a Canvas                   |\n * | {@link PIXI.PluginSystem}            | This manages plugins for the renderer                                         |\n * | {@link PIXI.BackgroundSystem}        | This manages the main views background color and alpha                        |\n * | {@link PIXI.StartupSystem}           | Boots up a renderer and initiatives all the systems                           |\n * | {@link PIXI.EventSystem}             | This manages UI events.                                                       |\n * | {@link PIXI.GenerateTextureSystem}   | This adds the ability to generate textures from any PIXI.DisplayObject        |\n *\n * | PixiJS High-Level Systems            | Set of specific systems designed to work with PixiJS objects                  |\n * | ------------------------------------ | ----------------------------------------------------------------------------- |\n * | {@link PIXI.CanvasContextSystem}     | This manages the canvas `2d` contexts and their state                         |\n * | {@link PIXI.CanvasMaskSystem}        | This manages masking operations.                                              |\n * | {@link PIXI.CanvasExtract}           | This extracts image data from a PIXI.DisplayObject                            |\n * | {@link PIXI.CanvasPrepare}           | This prepares a PIXI.DisplayObject async for rendering                        |\n *\n * The breadth of the API surface provided by the renderer is contained within these systems.\n * @class\n * @memberof PIXI\n */\nexport class CanvasRenderer extends SystemManager<CanvasRenderer> implements IRenderer\n{\n    /** @ignore */\n    static extension: ExtensionMetadata = {\n        type: ExtensionType.Renderer,\n        priority: 0,\n    };\n\n    /**\n     * Options passed to the constructor.\n     * @member {PIXI.IRendererOptions}\n     */\n    public readonly options: IRendererOptions;\n\n    /**\n     * Used with autoDetectRenderer, this is always supported for any environment, so return true.\n     * @ignore\n     */\n    static test(): boolean\n    {\n        return true;\n    }\n\n    /**\n     * Fired after rendering finishes.\n     * @event PIXI.CanvasRenderer#postrender\n     */\n    /**\n     * Fired before rendering starts.\n     * @event PIXI.CanvasRenderer#prerender\n     */\n\n    /**\n     * The type of the renderer. will be PIXI.RENDERER_TYPE.CANVAS\n     * @member {number}\n     * @see PIXI.RENDERER_TYPE\n     */\n    public readonly type = RENDERER_TYPE.CANVAS;\n\n    /** When logging Pixi to the console, this is the name we will show */\n    public readonly rendererLogId = 'Canvas';\n\n    // systems..\n    /**\n     * textureGenerator system instance\n     * @readonly\n     */\n    public textureGenerator: GenerateTextureSystem;\n\n    /**\n     * background system instance\n     * @readonly\n     */\n    public background: BackgroundSystem;\n\n    /**\n     * canvas mask system instance\n     * @readonly\n     */\n    public mask: CanvasMaskSystem;\n\n    /**\n     * plugin system instance\n     * @readonly\n     */\n    public _plugin: PluginSystem;\n\n    /**\n     * Canvas context system instance\n     * @readonly\n     */\n    public canvasContext: CanvasContextSystem;\n\n    /**\n     * Startup system instance\n     * @readonly\n     */\n    public startup: StartupSystem;\n\n    /**\n     * View system instance\n     * @readonly\n     */\n    public _view: ViewSystem;\n\n    /**\n     * renderer system instance\n     * @readonly\n     */\n    public objectRenderer: CanvasObjectRendererSystem;\n\n    /**\n     * @param {PIXI.IRendererOptions} [options] - See {@link PIXI.settings.RENDER_OPTIONS} for defaults.\n     */\n    constructor(options?: Partial<IRendererOptions>)\n    {\n        super();\n\n        // Add the default render options\n        options = Object.assign({}, settings.RENDER_OPTIONS, options);\n\n        const systemConfig = {\n            runners: [\n                'init',\n                'destroy',\n                'contextChange',\n                'resolutionChange',\n                'reset',\n                'update',\n                'postrender',\n                'prerender',\n                'resize'\n            ],\n            systems: CanvasRenderer.__systems,\n            priority: [\n                'textureGenerator',\n                'background',\n                '_view',\n                '_plugin',\n                'startup',\n                'mask',\n                'canvasContext',\n                'objectRenderer'\n            ],\n        };\n\n        this.setup(systemConfig);\n\n        if ('useContextAlpha' in options)\n        {\n            if (process.env.DEBUG)\n            {\n                deprecation('7.0.0', 'options.useContextAlpha is deprecated, use options.backgroundAlpha instead');\n            }\n            options.backgroundAlpha = options.useContextAlpha === false ? 1 : options.backgroundAlpha;\n        }\n\n        // convert our big blob of options into system specific ones..\n        this._plugin.rendererPlugins = CanvasRenderer.__plugins;\n        this.options = options as IRendererOptions;\n        this.startup.run(this.options);\n    }\n\n    /**\n     * Useful function that returns a texture of the display object that can then be used to create sprites\n     * This can be quite useful if your displayObject is complicated and needs to be reused multiple times.\n     * @param displayObject - The displayObject the object will be generated from.\n     * @param {IGenerateTextureOptions} options - Generate texture options.\n     * @param {PIXI.Rectangle} options.region - The region of the displayObject, that shall be rendered,\n     *        if no region is specified, defaults to the local bounds of the displayObject.\n     * @param {number} [options.resolution] - If not given, the renderer's resolution is used.\n     * @param {PIXI.MSAA_QUALITY} [options.multisample] - If not given, the renderer's multisample is used.\n     * @returns A texture of the graphics object.\n     */\n    generateTexture(displayObject: IRenderableObject, options?: IGenerateTextureOptions): RenderTexture\n    {\n        return this.textureGenerator.generateTexture(displayObject, options);\n    }\n\n    reset(): void\n    {\n        // nothing to be done :D\n    }\n\n    /**\n     * Renders the object to its WebGL view.\n     * @param displayObject - The object to be rendered.\n     * @param options - Object to use for render options.\n     * @param {PIXI.RenderTexture} [options.renderTexture] - The render texture to render to.\n     * @param {boolean} [options.clear=true] - Should the canvas be cleared before the new render.\n     * @param {PIXI.Matrix} [options.transform] - A transform to apply to the render texture before rendering.\n     * @param {boolean} [options.skipUpdateTransform=false] - Should we skip the update transform pass?\n     */\n    render(displayObject: DisplayObject, options?: IRendererRenderOptions): void\n    {\n        this.objectRenderer.render(displayObject, options);\n    }\n\n    /** Clear the canvas of renderer. */\n    public clear(): void\n    {\n        this.canvasContext.clear();\n    }\n\n    /**\n     * Removes everything from the renderer and optionally removes the Canvas DOM element.\n     * @param {boolean} [removeView=false] - Removes the Canvas element from the DOM.\n     */\n    public destroy(removeView?: boolean): void\n    {\n        this.runners.destroy.items.reverse();\n\n        this.emitWithCustomOptions(this.runners.destroy, {\n            _view: removeView,\n        });\n\n        super.destroy();\n    }\n\n    /** Collection of plugins */\n    get plugins(): IRendererPlugins\n    {\n        return this._plugin.plugins;\n    }\n\n    /**\n     * Resizes the canvas view to the specified width and height.\n     * @param desiredScreenWidth - the desired width of the screen\n     * @param desiredScreenHeight - the desired height of the screen\n     */\n    public resize(desiredScreenWidth: number, desiredScreenHeight: number): void\n    {\n        this._view.resizeView(desiredScreenWidth, desiredScreenHeight);\n    }\n\n    /**\n     * Same as view.width, actual number of pixels in the canvas by horizontal.\n     * @member {number}\n     * @readonly\n     * @default 800\n     */\n    get width(): number\n    {\n        return this._view.element.width;\n    }\n\n    /**\n     * Same as view.height, actual number of pixels in the canvas by vertical.\n     * @member {number}\n     * @readonly\n     * @default 600\n     */\n    get height(): number\n    {\n        return this._view.element.height;\n    }\n\n    /** The resolution / device pixel ratio of the renderer. */\n    get resolution(): number\n    {\n        return this._view.resolution;\n    }\n    set resolution(value: number)\n    {\n        this._view.resolution = value;\n        this.runners.resolutionChange.emit(value);\n    }\n\n    /** Whether CSS dimensions of canvas view should be resized to screen dimensions automatically. */\n    get autoDensity(): boolean\n    {\n        return this._view.autoDensity;\n    }\n\n    /** The canvas element that everything is drawn to.*/\n    get view(): ICanvas\n    {\n        return this._view.element;\n    }\n\n    /**\n     * Measurements of the screen. (0, 0, screenWidth, screenHeight).\n     * Its safe to use as filterArea or hitArea for the whole stage.\n     */\n    get screen(): Rectangle\n    {\n        return this._view.screen;\n    }\n\n    /** the last object rendered by the renderer. Useful for other plugins like interaction managers */\n    get lastObjectRendered(): IRenderableObject\n    {\n        return this.objectRenderer.lastObjectRendered;\n    }\n\n    /** Flag if we are rendering to the screen vs renderTexture */\n    get renderingToScreen(): boolean\n    {\n        return this.objectRenderer.renderingToScreen;\n    }\n\n    /**\n     * This sets if the CanvasRenderer will clear the canvas or not before the new render pass.\n     * If the scene is NOT transparent PixiJS will use a canvas sized fillRect operation every\n     * frame to set the canvas background color. If the scene is transparent PixiJS will use clearRect\n     * to clear the canvas every frame. Disable this by setting this to false. For example, if\n     * your game has a canvas filling background image you often don't need this set.\n     */\n    get clearBeforeRender(): boolean\n    {\n        return this.background.clearBeforeRender;\n    }\n\n    // deprecated zone..\n\n    /**\n     * Tracks the blend modes useful for this renderer.\n     * @deprecated since 7.0.0 use `renderer.canvasContext.blendModes` instead\n     */\n    get blendModes(): string[]\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.blendModes has been deprecated, please use renderer.canvasContext.blendModes instead');\n        }\n\n        return this.canvasContext.blendModes;\n    }\n\n    /**\n     * system that manages canvas masks\n     * @deprecated since 7.0.0 use `renderer.canvasContext.mask`\n     */\n    get maskManager(): CanvasMaskSystem\n    {\n        deprecation('7.0.0', 'renderer.maskManager has been deprecated, please use renderer.mask instead');\n\n        return this.mask;\n    }\n\n    /**\n     * Boolean flag controlling canvas refresh.\n     * @deprecated since 7.0.0\n     */\n    get refresh(): boolean\n    {\n        if (process.env.DEBUG)\n        {\n            deprecation('7.0.0', 'renderer.refresh has been deprecated');\n        }\n\n        return true;\n    }\n\n    /**\n     * The root canvas 2d context that everything is drawn with.\n     * @deprecated since 7.0.0 Use `renderer.canvasContext.rootContext instead\n     */\n    get rootContext(): ICanvasRenderingContext2D\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.rootContext has been deprecated, please use renderer.canvasContext.rootContext instead');\n        }\n\n        return this.canvasContext.rootContext;\n    }\n\n    /**\n     * The currently active canvas 2d context (could change with renderTextures)\n     * @deprecated since 7.0.0 Use `renderer.canvasContext.activeContext instead\n     */\n    get context(): ICanvasRenderingContext2D\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.context has been deprecated, please use renderer.canvasContext.activeContext instead');\n        }\n\n        return this.canvasContext.activeContext;\n    }\n\n    /**\n     * The canvas property used to set the canvas smoothing property.\n     * @deprecated since 7.0.0 Use `renderer.canvasContext.smoothProperty` instead.\n     */\n    get smoothProperty(): SmoothingEnabledProperties\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.smoothProperty has been deprecated, please use renderer.canvasContext.smoothProperty instead');\n        }\n\n        return this.canvasContext.smoothProperty;\n    }\n\n    /**\n     * Sets the blend mode of the renderer.\n     * @param {number} blendMode - See {@link PIXI.BLEND_MODES} for valid values.\n     * @param {boolean} [readyForOuterBlend=false] - Some blendModes are dangerous, they affect outer space of sprite.\n     * Pass `true` only if you are ready to use them.\n     * @deprecated since 7.0.0 Use `renderer.canvasContext.setBlendMode` instead.\n     */\n    setBlendMode(blendMode: BLEND_MODES, readyForOuterBlend?: boolean): void\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.setBlendMode has been deprecated, use renderer.canvasContext.setBlendMode instead');\n        }\n\n        this.canvasContext.setBlendMode(blendMode, readyForOuterBlend);\n    }\n\n    /**\n     * Checks if blend mode has changed.\n     * @deprecated since 7.0.0 Use `renderer.canvasContext.invalidateBlendMode` instead.\n     */\n    invalidateBlendMode(): void\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.invalidateBlendMode has been deprecated, use renderer.canvasContext.invalidateBlendMode instead');\n        }\n\n        this.canvasContext.invalidateBlendMode();\n    }\n\n    /**\n     * Sets matrix of context.\n     * called only from render() methods\n     * takes care about resolution\n     * @param transform - world matrix of current element\n     * @param roundPixels - whether to round (tx,ty) coords\n     * @param localResolution - If specified, used instead of `renderer.resolution` for local scaling\n     * @deprecated since 7.0.0 - Use `renderer.canvasContext.setContextTransform` instead.\n     */\n    setContextTransform(transform: Matrix, roundPixels?: boolean, localResolution?: number): void\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.setContextTransform has been deprecated, use renderer.canvasContext.setContextTransform instead');\n        }\n\n        this.canvasContext.setContextTransform(transform, roundPixels, localResolution);\n    }\n\n    /**\n     * The background color to fill if not transparent\n     * @deprecated since 7.0.0\n     */\n    get backgroundColor(): ColorSource\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.backgroundColor has been deprecated, use renderer.background.color instead.');\n        }\n\n        return this.background.color;\n    }\n\n    /**\n     * @deprecated since 7.0.0\n     * @ignore\n     */\n    set backgroundColor(value: ColorSource)\n    {\n        if (process.env.DEBUG)\n        {\n            deprecation('7.0.0', 'renderer.backgroundColor has been deprecated, use renderer.background.color instead.');\n        }\n\n        this.background.color = value;\n    }\n\n    /**\n     * The background color alpha. Setting this to 0 will make the canvas transparent.\n     * @member {number}\n     * @deprecated since 7.0.0\n     */\n    get backgroundAlpha(): number\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.');\n        }\n\n        return this.background.alpha;\n    }\n\n    /**\n     * @deprecated since 7.0.0\n     * @ignore\n     */\n    set backgroundAlpha(value: number)\n    {\n        if (process.env.DEBUG)\n        {\n            // eslint-disable-next-line max-len\n            deprecation('7.0.0', 'renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.');\n        }\n\n        this.background.alpha = value;\n    }\n\n    /**\n     * old abstract function not used by canvas renderer\n     * @deprecated since 7.0.0\n     */\n    get preserveDrawingBuffer(): boolean\n    {\n        if (process.env.DEBUG)\n        {\n            deprecation('7.0.0', 'renderer.preserveDrawingBuffer has been deprecated');\n        }\n\n        return false;\n    }\n\n    /**\n     * old abstract function not used by canvas renderer\n     * @deprecated since 7.0.0\n     */\n    get useContextAlpha(): boolean\n    {\n        if (process.env.DEBUG)\n        {\n            deprecation('7.0.0', 'renderer.useContextAlpha has been deprecated');\n        }\n\n        return false;\n    }\n\n    /** @private */\n    static readonly __plugins: IRendererPlugins = {};\n\n    /** @private */\n    static readonly __systems: Record<string, any> = {};\n\n    /**\n     * Collection of installed plugins. These are included by default in PIXI, but can be excluded\n     * by creating a custom build. Consult the README for more information about creating custom\n     * builds and excluding plugins.\n     * @member {object} plugins\n     * @readonly\n     * @property {PIXI.AccessibilityManager} accessibility Support tabbing interactive elements.\n     */\n}\n\nextensions.handleByMap(ExtensionType.CanvasRendererPlugin, CanvasRenderer.__plugins);\nextensions.handleByMap(ExtensionType.CanvasRendererSystem, CanvasRenderer.__systems);\nextensions.add(CanvasRenderer);\n"],"names":["_CanvasRenderer"],"mappings":";AAmCA,MAAM,EAAE,YAAY,IAAI,OAuCX,kBAAN,MAAMA,yBAAuB,cACpC;AAAA;AAAA;AAAA;AAAA,EA6FI,YAAY,SACZ;AACU,aA3DV,KAAgB,OAAO,cAAc,QAGrC,KAAgB,gBAAgB,UA2D5B,UAAU,OAAO,OAAO,CAAA,GAAI,SAAS,gBAAgB,OAAO;AAE5D,UAAM,eAAe;AAAA,MACjB,SAAS;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA,SAASA,iBAAe;AAAA,MACxB,UAAU;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IAAA;AAGJ,SAAK,MAAM,YAAY,GAEnB,qBAAqB,YAIjB,YAAY,SAAS,4EAA4E,GAErG,QAAQ,kBAAkB,QAAQ,oBAAoB,KAAQ,IAAI,QAAQ,kBAI9E,KAAK,QAAQ,kBAAkBA,iBAAe,WAC9C,KAAK,UAAU,SACf,KAAK,QAAQ,IAAI,KAAK,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EA3HA,OAAO,OACP;AACW,WAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqIA,gBAAgB,eAAkC,SAClD;AACI,WAAO,KAAK,iBAAiB,gBAAgB,eAAe,OAAO;AAAA,EACvE;AAAA,EAEA,QACA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,eAA8B,SACrC;AACS,SAAA,eAAe,OAAO,eAAe,OAAO;AAAA,EACrD;AAAA;AAAA,EAGO,QACP;AACI,SAAK,cAAc;EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,QAAQ,YACf;AACS,SAAA,QAAQ,QAAQ,MAAM,QAAA,GAE3B,KAAK,sBAAsB,KAAK,QAAQ,SAAS;AAAA,MAC7C,OAAO;AAAA,IAAA,CACV,GAED,MAAM;EACV;AAAA;AAAA,EAGA,IAAI,UACJ;AACI,WAAO,KAAK,QAAQ;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,OAAO,oBAA4B,qBAC1C;AACS,SAAA,MAAM,WAAW,oBAAoB,mBAAmB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,QACJ;AACW,WAAA,KAAK,MAAM,QAAQ;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,SACJ;AACW,WAAA,KAAK,MAAM,QAAQ;AAAA,EAC9B;AAAA;AAAA,EAGA,IAAI,aACJ;AACI,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA,EACA,IAAI,WAAW,OACf;AACI,SAAK,MAAM,aAAa,OACxB,KAAK,QAAQ,iBAAiB,KAAK,KAAK;AAAA,EAC5C;AAAA;AAAA,EAGA,IAAI,cACJ;AACI,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA;AAAA,EAGA,IAAI,OACJ;AACI,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,SACJ;AACI,WAAO,KAAK,MAAM;AAAA,EACtB;AAAA;AAAA,EAGA,IAAI,qBACJ;AACI,WAAO,KAAK,eAAe;AAAA,EAC/B;AAAA;AAAA,EAGA,IAAI,oBACJ;AACI,WAAO,KAAK,eAAe;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,oBACJ;AACI,WAAO,KAAK,WAAW;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,aACJ;AAIQ,WAAA,YAAY,SAAS,+FAA+F,GAGjH,KAAK,cAAc;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cACJ;AACgB,WAAA,YAAA,SAAS,4EAA4E,GAE1F,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,UACJ;AAGoB,WAAA,YAAA,SAAS,sCAAsC,GAGxD;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,cACJ;AAIQ,WAAA,YAAY,SAAS,iGAAiG,GAGnH,KAAK,cAAc;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,UACJ;AAIQ,WAAA,YAAY,SAAS,+FAA+F,GAGjH,KAAK,cAAc;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,iBACJ;AAIQ,WAAA,YAAY,SAAS,uGAAuG,GAGzH,KAAK,cAAc;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa,WAAwB,oBACrC;AAIQ,gBAAY,SAAS,4FAA4F,GAGrH,KAAK,cAAc,aAAa,WAAW,kBAAkB;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBACA;AAIQ,gBAAY,SAAS,0GAA0G,GAGnI,KAAK,cAAc;EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,oBAAoB,WAAmB,aAAuB,iBAC9D;AAIoB,gBAAA,SAAS,0GAA0G,GAGnI,KAAK,cAAc,oBAAoB,WAAW,aAAa,eAAe;AAAA,EAClF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,kBACJ;AAIQ,WAAA,YAAY,SAAS,sFAAsF,GAGxG,KAAK,WAAW;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,gBAAgB,OACpB;AAGQ,gBAAY,SAAS,sFAAsF,GAG/G,KAAK,WAAW,QAAQ;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,kBACJ;AAIQ,WAAA,YAAY,SAAS,sFAAsF,GAGxG,KAAK,WAAW;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,gBAAgB,OACpB;AAIQ,gBAAY,SAAS,sFAAsF,GAG/G,KAAK,WAAW,QAAQ;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,wBACJ;AAGoB,WAAA,YAAA,SAAS,oDAAoD,GAGtE;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,kBACJ;AAGoB,WAAA,YAAA,SAAS,8CAA8C,GAGhE;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBJ;AAvhBa,gBAGF,YAA+B;AAAA,EAClC,MAAM,cAAc;AAAA,EACpB,UAAU;AACd;AANS,gBA0gBO,YAA8B,CAAC;AA1gBtC,gBA6gBO,YAAiC,CAAA;AA7gB9C,IAAM,iBAAN;AAyhBP,WAAW,YAAY,cAAc,sBAAsB,eAAe,SAAS;AACnF,WAAW,YAAY,cAAc,sBAAsB,eAAe,SAAS;AACnF,WAAW,IAAI,cAAc;"}