@ue-too/board 0.17.5 → 0.17.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/boardify/index.d.ts +26 -0
- package/index.js +11 -1
- package/index.js.map +4 -4
- package/package.json +3 -3
package/index.js.map
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"raw-input-publisher.ts"
|
|
43
43
|
],
|
|
44
44
|
"sourcesContent": [
|
|
45
|
-
"import { Point } from '@ue-too/math';\nimport { PointCal } from '@ue-too/math';\n\nimport {\n CameraMux,\n createCameraMuxWithAnimationAndLock,\n} from '../camera/camera-mux';\nimport { CameraRig, DefaultCameraRig } from '../camera/camera-rig';\nimport DefaultBoardCamera from '../camera/default-camera';\nimport { ObservableBoardCamera } from '../camera/interface';\nimport {\n CameraEventMap,\n CameraState,\n UnSubscribe,\n} from '../camera/update-publisher';\nimport {\n halfTranslationHeightOf,\n halfTranslationWidthOf,\n} from '../camera/utils/position';\nimport { InputOrchestrator } from '../input-interpretation/input-orchestrator';\nimport {\n CanvasDimensions,\n CanvasProxy,\n ObservableInputTracker,\n TouchInputTracker,\n createKmtInputStateMachine,\n createTouchInputStateMachine,\n} from '../input-interpretation/input-state-machine';\nimport {\n KMTEventParser,\n VanillaKMTEventParser,\n} from '../input-interpretation/raw-input-parser';\nimport {\n TouchEventParser,\n VanillaTouchEventParser,\n} from '../input-interpretation/raw-input-parser';\nimport {\n RawUserInputEventMap,\n RawUserInputPublisher,\n UnsubscribeToUserRawInput,\n} from '../input-interpretation/raw-input-publisher';\nimport { reverseYAxis } from '../utils';\nimport {\n minZoomLevelBaseOnDimensions,\n minZoomLevelBaseOnWidth,\n zoomLevelBoundariesShouldUpdate,\n} from '../utils';\n\n/**\n * Main user-facing API class that provides an infinite canvas with pan, zoom, and rotate capabilities.\n *\n * The Board class is the primary entry point for using the board package. It integrates all subsystems\n * including camera management, input handling, and state machines into a simple, unified API for\n * creating interactive 2D canvases with advanced camera controls.\n *\n * @remarks\n * ## Architecture Overview\n *\n * The Board class orchestrates several subsystems:\n *\n * - **Camera System**: Manages viewport transformations (pan/zoom/rotate) through {@link ObservableBoardCamera}.\n * The camera can be configured with boundaries, zoom limits, and various movement constraints.\n *\n * - **Input System**: Processes user input through state machines for both mouse/keyboard/trackpad (KMT)\n * and touch events. Input is parsed, interpreted, and translated into camera movements.\n *\n * - **Camera Rig**: Enforces constraints and restrictions on camera movement (boundaries, zoom limits,\n * clamping behavior). See {@link CameraRig} for details.\n *\n * - **Camera Multiplexer**: Coordinates between different camera control sources (user input, animations,\n * programmatic control) to ensure smooth transitions. See {@link CameraMux} for details.\n *\n * ## Coordinate Systems\n *\n * The Board supports three coordinate systems:\n *\n * 1. **World Coordinates**: The infinite canvas space where your content lives. When the camera is at\n * position (0, 0) with no zoom or rotation, world coordinates map directly to viewport coordinates.\n *\n * 2. **Viewport Coordinates**: The visible area of the canvas relative to the camera center. The camera\n * center is at (0, 0) in viewport space, with coordinates extending in both directions based on the\n * canvas size.\n *\n * 3. **Window/Canvas Coordinates**: The browser's coordinate system, with (0, 0) at the top-left corner\n * of the canvas element. Use {@link convertWindowPoint2WorldCoord} to convert from window to world space.\n *\n * By default, {@link alignCoordinateSystem} is `true`, which means the Y-axis points down (standard HTML\n * canvas orientation). Set it to `false` to use a mathematical coordinate system where Y points up.\n *\n * ## Main Features\n *\n * - **Camera Control**: Pan, zoom, and rotate the viewport through user input or programmatic API\n * - **Boundaries**: Define world-space boundaries to constrain camera movement\n * - **Zoom Limits**: Set minimum and maximum zoom levels\n * - **Input Modes**: Support for mouse/keyboard/trackpad and touch input with customizable parsers\n * - **Event System**: Subscribe to camera events (pan, zoom, rotate) and input events\n * - **Coordinate Conversion**: Convert between window and world coordinates\n * - **Flexible Configuration**: Extensive options for restricting/clamping camera movement\n *\n * @example\n * Basic setup with drawing\n * ```typescript\n * const canvasElement = document.querySelector(\"canvas\") as HTMLCanvasElement;\n * const board = new Board(canvasElement);\n *\n * function draw(timestamp: number) {\n * board.step(timestamp);\n *\n * // Because board can be initialized without a canvas element,\n * // the context can be undefined until the canvas is attached\n * if(board.context == undefined) {\n * return;\n * }\n *\n * // Draw after the board has stepped\n * // The coordinate system has (0, 0) at the center of the canvas when camera position is at (0, 0)\n * board.context.beginPath();\n * board.context.rect(0, 0, 100, 100);\n * board.context.fill();\n *\n * requestAnimationFrame(draw);\n * }\n *\n * requestAnimationFrame(draw);\n * ```\n *\n * @example\n * Handling camera and input events\n * ```typescript\n * const board = new Board(canvasElement);\n *\n * // Listen to camera pan events\n * board.on('pan', (event, cameraState) => {\n * console.log('Camera panned to:', cameraState.position);\n * });\n *\n * // Listen to camera zoom events\n * board.on('zoom', (event, cameraState) => {\n * console.log('Camera zoom level:', cameraState.zoomLevel);\n * });\n *\n * // Listen to raw input events (before camera movement)\n * board.onInput('pan', (event) => {\n * console.log('User is panning');\n * });\n * ```\n *\n * @example\n * Configuring boundaries and zoom limits\n * ```typescript\n * const board = new Board(canvasElement);\n *\n * // Set world boundaries\n * board.camera.boundaries = {\n * min: { x: -1000, y: -1000 },\n * max: { x: 1000, y: 1000 }\n * };\n *\n * // Set zoom limits\n * board.camera.setMinZoomLevel(0.1);\n * board.camera.setMaxZoomLevel(5.0);\n *\n * // Ensure entire viewport stays within boundaries\n * board.limitEntireViewPort = true;\n *\n * // Clamp camera position to boundaries\n * board.clampTranslation = true;\n * board.clampZoom = true;\n * ```\n *\n * @example\n * Converting window coordinates to world coordinates\n * ```typescript\n * const board = new Board(canvasElement);\n *\n * canvasElement.addEventListener('click', (event) => {\n * const windowPoint = { x: event.clientX, y: event.clientY };\n * const worldPoint = board.convertWindowPoint2WorldCoord(windowPoint);\n * console.log('Clicked at world position:', worldPoint);\n * });\n * ```\n *\n * @example\n * Initialize board without canvas, attach canvas later\n * ```typescript\n * const board = new Board();\n *\n * // Attach canvas later\n * const canvasElement = document.createElement('canvas');\n * document.body.appendChild(canvasElement);\n * board.attach(canvasElement);\n * ```\n *\n * @category Board\n * @see {@link ObservableBoardCamera} for camera API details\n * @see {@link CameraRig} for camera constraint configuration\n * @see {@link CameraMux} for camera control coordination\n */\nexport default class Board {\n private _context?: CanvasRenderingContext2D;\n private _reversedContext?: CanvasRenderingContext2D;\n private _canvasProxy: CanvasProxy;\n\n private _kmtParser: KMTEventParser;\n private _touchParser: TouchEventParser;\n\n private _alignCoordinateSystem: boolean = true;\n private _fullScreen: boolean = false;\n\n private cameraRig: CameraRig;\n private _cameraMux: CameraMux;\n private boardInputPublisher: RawUserInputPublisher;\n private _observableInputTracker: ObservableInputTracker;\n private _touchInputTracker: TouchInputTracker;\n private _inputOrchestrator: InputOrchestrator;\n\n private _cachedCanvasWidth: number = 0;\n private _cachedCanvasHeight: number = 0;\n private _cachedCanvasPixelRatio: number = 1;\n\n private lastUpdateTime: number = 0;\n\n private _canvasElement: HTMLCanvasElement | undefined;\n\n /**\n * Creates a new Board instance with an optional canvas element.\n *\n * The constructor initializes all subsystems including the camera, input parsers, state machines,\n * and event publishers. The board can be created with or without a canvas element - if no canvas\n * is provided, you can attach one later using {@link attach}.\n *\n * @param canvas - Optional HTMLCanvasElement to attach to the board. If provided, the board will\n * immediately initialize with this canvas. If omitted, you must call {@link attach} before the\n * board can be used.\n * @param debug - Optional debug flag that enables `willReadFrequently` hint on the canvas context,\n * which optimizes the canvas for frequent readback operations. Default is `false`. Only use this\n * if you need to frequently read pixel data from the canvas.\n *\n * @remarks\n * ## Initialization Sequence\n *\n * When the constructor is called, it performs the following initialization:\n *\n * 1. **Camera Setup**: Creates a {@link DefaultBoardCamera} with default boundaries of ±50,000 units\n * in both X and Y directions. This provides a large working area for most use cases.\n *\n * 2. **Canvas Proxy**: Initializes a {@link CanvasProxy} that observes canvas dimension changes and\n * automatically updates the camera's viewport dimensions.\n *\n * 3. **Camera Rig**: Creates a {@link CameraRig} with default configuration:\n * - `limitEntireViewPort: true` - Entire viewport is constrained within boundaries\n * - `clampTranslation: true` - Camera position is clamped to boundaries\n * - `clampZoom: true` - Zoom level is clamped to min/max limits\n * - All translation restrictions are disabled by default\n *\n * 4. **Input System**: Initializes both keyboard/mouse/trackpad (KMT) and touch input parsers,\n * state machines, and the input orchestrator that coordinates camera control.\n *\n * 5. **Canvas Attachment** (if canvas provided): If a canvas element is provided, it's immediately\n * attached and the viewport dimensions are synchronized with the canvas size.\n *\n * ## Default Configuration\n *\n * The board is created with sensible defaults:\n * - World boundaries: (-50000, -50000) to (50000, 50000)\n * - Coordinate system: Aligned with HTML canvas (Y-axis points down)\n * - Camera position: (0, 0)\n * - Zoom level: 1.0\n * - Rotation: 0 radians\n * - Full screen: disabled\n *\n * You can customize these defaults after construction by setting properties on the board or camera.\n *\n * @example\n * Create board with canvas element\n * ```typescript\n * const canvas = document.querySelector('canvas') as HTMLCanvasElement;\n * const board = new Board(canvas);\n * // Board is ready to use immediately\n * ```\n *\n * @example\n * Create board without canvas, attach later\n * ```typescript\n * const board = new Board();\n * // ... later, when canvas is ready\n * const canvas = document.createElement('canvas');\n * document.body.appendChild(canvas);\n * board.attach(canvas);\n * ```\n *\n * @example\n * Enable debug mode for pixel readback\n * ```typescript\n * const board = new Board(canvas, true);\n * // Now getImageData() and similar operations will be optimized\n * ```\n *\n * @group LifeCycle\n * @see {@link attach} for attaching a canvas after construction\n * @see {@link tearDown} for cleanup when done with the board\n */\n constructor(canvas?: HTMLCanvasElement, debug: boolean = false) {\n const camera = new DefaultBoardCamera();\n const bound = 50000;\n camera.boundaries = {\n min: { x: -bound, y: -bound },\n max: { x: bound, y: bound },\n };\n\n this.bindFunctions();\n\n this._canvasProxy = new CanvasProxy(canvas);\n\n this._canvasProxy.subscribe(canvasDimensions => {\n this.syncViewPortDimensions(canvasDimensions);\n this.syncCameraZoomLevel(canvasDimensions);\n });\n\n this.cameraRig = new DefaultCameraRig(\n {\n limitEntireViewPort: true,\n restrictRelativeXTranslation: false,\n restrictRelativeYTranslation: false,\n restrictXTranslation: false,\n restrictYTranslation: false,\n restrictZoom: false,\n clampTranslation: true,\n clampZoom: true,\n },\n camera\n );\n\n this._cameraMux = createCameraMuxWithAnimationAndLock();\n this.boardInputPublisher = new RawUserInputPublisher();\n\n // this._edgeAutoCameraInput = new EdgeAutoCameraInput(this._cameraMux);\n this._observableInputTracker = new ObservableInputTracker(\n this._canvasProxy\n );\n this._touchInputTracker = new TouchInputTracker(this._canvasProxy);\n\n const kmtInputStateMachine = createKmtInputStateMachine(\n this._observableInputTracker\n );\n const touchInputStateMachine = createTouchInputStateMachine(\n this._touchInputTracker\n );\n\n // Create single orchestrator as the point of camera control for both KMT and touch inputs\n // Since both state machines output the same event types (pan, zoom), one orchestrator handles both\n // Orchestrator receives CameraRig to execute camera operations when CameraMux allows passthrough\n this._inputOrchestrator = new InputOrchestrator(\n this._cameraMux,\n this.cameraRig,\n this.boardInputPublisher\n );\n\n // Parsers have direct dependency on state machines, shared orchestrator processes outputs and controls camera\n this._kmtParser = new VanillaKMTEventParser(\n kmtInputStateMachine,\n this._inputOrchestrator,\n canvas\n );\n this._touchParser = new VanillaTouchEventParser(\n touchInputStateMachine,\n this._inputOrchestrator,\n canvas\n );\n\n if (canvas != undefined) {\n this.attach(canvas, debug);\n }\n }\n\n private syncViewPortDimensions(canvasDimensions: {\n width: number;\n height: number;\n }) {\n this.camera.viewPortHeight = canvasDimensions.height;\n this.camera.viewPortWidth = canvasDimensions.width;\n }\n\n /**\n * Attaches a canvas element to the board, enabling rendering and input handling.\n *\n * This method connects a canvas element to the board's rendering and input systems. It must be\n * called before the board can be used if no canvas was provided to the constructor. If a canvas\n * was already attached, this method will replace it with the new canvas.\n *\n * @param canvas - The HTMLCanvasElement to attach to the board. This canvas will be used for\n * rendering and will receive all input events.\n * @param debug - Optional debug flag that enables `willReadFrequently` hint on the canvas context.\n * Default is `false`. Set to `true` if you need to frequently read pixel data from the canvas,\n * which will optimize the context for readback operations.\n *\n * @remarks\n * When a canvas is attached, the following happens:\n *\n * 1. **Context Creation**: A 2D rendering context is obtained from the canvas with the specified\n * debug settings.\n *\n * 2. **Input Parser Attachment**: Both KMT (keyboard/mouse/trackpad) and touch input parsers are\n * attached to the canvas to begin receiving input events.\n *\n * 3. **Canvas Proxy Attachment**: The canvas proxy begins observing the canvas for dimension changes,\n * automatically updating the camera's viewport dimensions when the canvas is resized.\n *\n * 4. **Zoom Level Synchronization**: If {@link limitEntireViewPort} is enabled, the minimum zoom\n * level is calculated and set to ensure the entire viewport can fit within the camera boundaries.\n *\n * 5. **Coordinate System Setup**: Both standard and Y-reversed rendering contexts are created to\n * support both coordinate system modes (see {@link alignCoordinateSystem}).\n *\n * @example\n * Attach canvas during construction\n * ```typescript\n * const canvas = document.querySelector('canvas') as HTMLCanvasElement;\n * const board = new Board(canvas);\n * // No need to call attach() - already attached\n * ```\n *\n * @example\n * Attach canvas after construction\n * ```typescript\n * const board = new Board();\n *\n * // Later, when canvas is ready...\n * const canvas = document.createElement('canvas');\n * canvas.width = 800;\n * canvas.height = 600;\n * document.body.appendChild(canvas);\n *\n * board.attach(canvas);\n * // Board is now ready to use\n * ```\n *\n * @example\n * Switch to a different canvas\n * ```typescript\n * const board = new Board(canvas1);\n *\n * // Later, switch to a different canvas\n * const canvas2 = document.querySelector('#other-canvas') as HTMLCanvasElement;\n * board.attach(canvas2);\n * // Board is now rendering to canvas2\n * ```\n *\n * @group LifeCycle\n * @see {@link tearDown} for detaching and cleaning up\n * @see {@link context} for accessing the rendering context\n */\n attach(canvas: HTMLCanvasElement, debug: boolean = false) {\n this._canvasElement = canvas;\n const newContext = canvas.getContext('2d', {\n willReadFrequently: debug,\n });\n if (newContext == null) {\n console.error('new canvas context is null');\n return;\n }\n this._kmtParser.attach(canvas);\n this._touchParser.attach(canvas);\n this._canvasProxy.attach(canvas);\n\n if (this.limitEntireViewPort) {\n this.syncCameraZoomLevel(this._canvasProxy.dimensions);\n }\n\n this._context = newContext;\n this._reversedContext = reverseYAxis(this._context);\n }\n\n disableEventListeners() {\n this._kmtParser.tearDown();\n this._touchParser.tearDown();\n }\n\n enableEventListeners() {\n this._kmtParser.setUp();\n this._touchParser.setUp();\n }\n\n get inputOrchestrator(): InputOrchestrator {\n return this._inputOrchestrator;\n }\n\n /**\n * @group LifeCycle\n * @description This function is used to clean up the board. It removes all the event listeners and disconnects the resize observer and the attribute observer.\n */\n tearDown() {\n this._kmtParser.tearDown();\n this._touchParser.tearDown();\n this._canvasProxy.tearDown();\n this._canvasElement = undefined;\n this._context = undefined;\n this._reversedContext = undefined;\n }\n\n private bindFunctions() {\n this.step = this.step.bind(this);\n }\n\n get width(): number {\n return this._canvasProxy.width;\n }\n\n get height(): number {\n return this._canvasProxy.height;\n }\n\n /**\n * @description This is an attribute that determines if the coordinate system should be aligned with the one of the HTML canvas element. The default is true.\n * If you set this to true, the coordinate system will be aligned with the one of the HTML canvas element.\n * If you change this value during runtime, you should update the context to be aligned with the new coordinate system. (just call board.context again)\n */\n set alignCoordinateSystem(align: boolean) {\n this._alignCoordinateSystem = align;\n this._observableInputTracker.alignCoordinateSystem = align;\n this._touchInputTracker.alignCoordinateSystem = align;\n }\n\n get alignCoordinateSystem(): boolean {\n return this._alignCoordinateSystem;\n }\n\n /**\n * @description Determines if the board should be full screen. If this is set to true, the width and height of the board will be set to the window's inner width and inner height respectively,\n * and the width and height of the board will resize with the window.\n */\n get fullScreen(): boolean {\n return this._fullScreen;\n }\n\n set fullScreen(value: boolean) {\n this._fullScreen = value;\n if (this._fullScreen) {\n this._canvasProxy.setWidth(window.innerWidth);\n this._canvasProxy.setHeight(window.innerHeight);\n }\n }\n\n /**\n * @description The context used to draw on the canvas.\n * If alignCoordinateSystem is false, this returns a proxy that automatically negates y-coordinates for relevant drawing methods.\n */\n get context(): CanvasRenderingContext2D | undefined {\n if (!this._alignCoordinateSystem) {\n return this._reversedContext;\n }\n return this._context;\n }\n\n /**\n * @description Determines the behavior of the camera when the camera is at the edge of the boundaries. If set to true, the entire view port would not move beyond the boundaries.\n * If set to false, only the center of the camera is bounded by the boundaries.\n */\n set limitEntireViewPort(value: boolean) {\n this.cameraRig.config.limitEntireViewPort = value;\n if (this._canvasProxy.detached) {\n return;\n }\n if (value) {\n this.syncCameraZoomLevel(this._canvasProxy.dimensions);\n }\n }\n\n get limitEntireViewPort(): boolean {\n return this.cameraRig.config.limitEntireViewPort;\n }\n\n /**\n * @description The strategy used to handle the keyboard, mouse events. The default strategy is the DefaultBoardKMTStrategy.\n * You can implement your own strategy by implementing the BoardKMTStrategy interface.\n */\n set kmtParser(parser: KMTEventParser) {\n this._kmtParser.tearDown();\n parser.tearDown();\n if (this._canvasElement != undefined) {\n parser.attach(this._canvasElement);\n }\n parser.setUp();\n this._kmtParser = parser;\n }\n\n get kmtParser(): KMTEventParser {\n return this._kmtParser;\n }\n\n /**\n * @description The parser used to handle touch events. The default parser is the DefaultTouchParser.\n * You can have your own parser by implementing the BoardTouchParser interface.\n */\n set touchParser(parser: TouchEventParser) {\n this._touchParser.tearDown();\n parser.tearDown();\n if (this._canvasElement != undefined) {\n parser.attach(this._canvasElement);\n }\n parser.setUp();\n this._touchParser = parser;\n }\n\n get touchParser(): TouchEventParser {\n return this._touchParser;\n }\n\n /**\n * @description The underlying camera of the board. The camera of the board can be switched.\n * The boundaries are based on camera meaning you can have cameras with different boundaries, and you can switch between them during runtime.\n */\n get camera(): ObservableBoardCamera {\n return this.cameraRig.camera;\n }\n\n set camera(camera: ObservableBoardCamera) {\n if (!this._canvasProxy.detached) {\n camera.viewPortHeight =\n this._canvasProxy.height / window.devicePixelRatio;\n camera.viewPortWidth =\n this._canvasProxy.width / window.devicePixelRatio;\n }\n this.cameraRig.camera = camera;\n }\n\n get cameraMux(): CameraMux {\n return this._cameraMux;\n }\n\n set cameraMux(cameraMux: CameraMux) {\n this._cameraMux = cameraMux;\n // Update all components that depend on cameraMux\n // Note: TouchInputTracker and Orchestrator would need to be recreated or have setter methods\n\n // input orchestrator\n this._inputOrchestrator.cameraMux = cameraMux;\n }\n\n /**\n * @description This is the step function that is called in the animation frame. This function is responsible for updating the canvas context and the camera state.\n * @param timestamp\n */\n public step(timestamp: number) {\n if (this._canvasProxy.detached || this._context == undefined) {\n return;\n }\n\n this.cameraRig.update();\n let deltaTime = timestamp - this.lastUpdateTime;\n this.lastUpdateTime = timestamp;\n deltaTime = deltaTime / 1000;\n\n this._context.reset();\n this._context.clearRect(\n 0,\n 0,\n this._canvasProxy.width * window.devicePixelRatio,\n this._canvasProxy.height * window.devicePixelRatio\n );\n\n if (this._cachedCanvasPixelRatio !== window.devicePixelRatio) {\n this._cachedCanvasPixelRatio = window.devicePixelRatio;\n this._canvasProxy.setCanvasHeight(this._canvasProxy.height);\n this._canvasProxy.setCanvasWidth(this._canvasProxy.width);\n }\n\n if (this._cachedCanvasHeight !== this._canvasProxy.height) {\n this._cachedCanvasHeight = this._canvasProxy.height;\n this._canvasProxy.setCanvasHeight(this._canvasProxy.height);\n }\n if (this._cachedCanvasWidth !== this._canvasProxy.width) {\n this._cachedCanvasWidth = this._canvasProxy.width;\n this._canvasProxy.setCanvasWidth(this._canvasProxy.width);\n }\n\n const transfromMatrix = this.camera.getTransform(\n window.devicePixelRatio,\n this._alignCoordinateSystem\n );\n const currentTransform = this._context.getTransform();\n if (\n currentTransform.a !== transfromMatrix.a ||\n currentTransform.b !== transfromMatrix.b ||\n currentTransform.c !== transfromMatrix.c ||\n currentTransform.d !== transfromMatrix.d ||\n currentTransform.e !== transfromMatrix.e ||\n currentTransform.f !== transfromMatrix.f\n ) {\n this._context.setTransform(\n transfromMatrix.a,\n transfromMatrix.b,\n transfromMatrix.c,\n transfromMatrix.d,\n transfromMatrix.e,\n transfromMatrix.f\n );\n }\n }\n\n /**\n * TODO add the option to make the camera position to be at the top left corner of the canvas; or better yet any point in the viewport (within the viewport boundaries)\n * @description Converts a point from window coordinates to world coordinates.\n * @param clickPointInWindow The point in window coordinates to convert.\n * @returns The converted point in world coordinates.\n */\n convertWindowPoint2WorldCoord(clickPointInWindow: Point): Point {\n const boundingRect = this._canvasProxy.dimensions;\n const cameraCenterInWindow = {\n x: boundingRect.position.x + boundingRect.width / 2,\n y: boundingRect.position.y + boundingRect.height / 2,\n };\n const pointInViewPort = PointCal.subVector(\n clickPointInWindow,\n cameraCenterInWindow\n );\n if (!this._alignCoordinateSystem) {\n pointInViewPort.y = -pointInViewPort.y;\n }\n return this.camera.convertFromViewPort2WorldSpace(pointInViewPort);\n }\n\n /**\n * @description Add an camera movement event listener. The events are \"pan\", \"zoom\", and \"rotate\".\n * There's also an \"all\" event that will be triggered when any of the above events are triggered.\n * @param eventName The event name to listen for. The events are \"pan\", \"zoom\", and \"rotate\".\n * @param callback The callback function to call when the event is triggered. The event provided to the callback is different for the different events.\n * @returns The converted point in world coordinates.\n */\n on<K extends keyof CameraEventMap>(\n eventName: K,\n callback: (event: CameraEventMap[K], cameraState: CameraState) => void\n ): UnSubscribe {\n return this.camera.on(eventName, callback);\n }\n\n /**\n * @description Add an input event listener. The events are \"pan\", \"zoom\", and \"rotate\". This is different from the camera event listener as this is for input events.\n * There's also an \"all\" event that will be triggered when any of the above events are triggered.\n * Input event does not necesarily mean that the camera will move. The input events are the events triggered when the user interacts with the board.\n * @param eventName\n * @param callback\n * @returns\n */\n onInput<K extends keyof RawUserInputEventMap>(\n eventName: K,\n callback: (event: RawUserInputEventMap[K]) => void\n ): UnsubscribeToUserRawInput {\n return this.boardInputPublisher.on(eventName, callback);\n }\n\n /**\n * @description The max translation height of the camera. This is the maximum distance the camera can move in the vertical direction.\n */\n get maxHalfTransHeight(): number | undefined {\n return halfTranslationHeightOf(this.camera.boundaries);\n }\n\n /**\n * @description The max translation width of the camera. This is the maximum distance the camera can move in the horizontal direction.\n */\n get maxHalfTransWidth(): number | undefined {\n return halfTranslationWidthOf(this.camera.boundaries);\n }\n\n private syncCameraZoomLevel(canvasDimensions: CanvasDimensions) {\n if (this.limitEntireViewPort) {\n const targetMinZoomLevel = minZoomLevelBaseOnDimensions(\n this.camera.boundaries,\n canvasDimensions.width,\n canvasDimensions.height,\n this.camera.rotation\n );\n if (\n targetMinZoomLevel != undefined &&\n zoomLevelBoundariesShouldUpdate(\n this.camera.zoomBoundaries,\n targetMinZoomLevel\n )\n ) {\n this.camera.setMinZoomLevel(targetMinZoomLevel);\n }\n }\n }\n\n /**\n * @group Helper Methods\n * @description This function sets the max translation width of the camera while fixing the minimum x boundary.\n */\n setMaxTransWidthWithFixedMinBoundary(value: number) {\n const curBoundaries = this.camera.boundaries;\n const curMin =\n curBoundaries == undefined ? undefined : curBoundaries.min;\n const curHorizontalMin = curMin == undefined ? undefined : curMin.x;\n if (curHorizontalMin == undefined) {\n this.camera.setHorizontalBoundaries(-value, value);\n } else {\n this.camera.setHorizontalBoundaries(\n curHorizontalMin,\n curHorizontalMin + value * 2\n );\n }\n if (this.limitEntireViewPort) {\n const targetMinZoomLevel = minZoomLevelBaseOnWidth(\n this.camera.boundaries,\n this.camera.viewPortWidth,\n this.camera.viewPortHeight,\n this.camera.rotation\n );\n if (\n zoomLevelBoundariesShouldUpdate(\n this.camera.zoomBoundaries,\n targetMinZoomLevel\n )\n ) {\n this.camera.setMinZoomLevel(targetMinZoomLevel);\n }\n }\n }\n\n /**\n * @group Helper Methods\n * @description This function sets the max translation width of the camera while fixing the minimum x boundary.\n */\n setMaxTransWidthWithFixedMaxBoundary(value: number) {\n const curBoundaries = this.camera.boundaries;\n const curMax =\n curBoundaries == undefined ? undefined : curBoundaries.max;\n const curHorizontalMax = curMax == undefined ? undefined : curMax.x;\n if (curHorizontalMax == undefined) {\n this.camera.setHorizontalBoundaries(-value, value);\n } else {\n this.camera.setHorizontalBoundaries(\n curHorizontalMax - value * 2,\n curHorizontalMax\n );\n }\n if (this.limitEntireViewPort) {\n const targetMinZoomLevel = minZoomLevelBaseOnWidth(\n this.camera.boundaries,\n this.camera.viewPortWidth,\n this.camera.viewPortHeight,\n this.camera.rotation\n );\n if (\n zoomLevelBoundariesShouldUpdate(\n this.camera.zoomBoundaries,\n targetMinZoomLevel\n )\n ) {\n this.camera.setMinZoomLevel(targetMinZoomLevel);\n }\n }\n }\n\n get restrictRelativeXTranslation(): boolean {\n return this.cameraRig.config.restrictRelativeXTranslation;\n }\n\n get restrictRelativeYTranslation(): boolean {\n return this.cameraRig.config.restrictRelativeYTranslation;\n }\n\n get restrictXTranslation(): boolean {\n return this.cameraRig.config.restrictXTranslation;\n }\n\n get restrictYTranslation(): boolean {\n return this.cameraRig.config.restrictYTranslation;\n }\n\n set restrictRelativeXTranslation(value: boolean) {\n this.cameraRig.config.restrictRelativeXTranslation = value;\n }\n\n set restrictRelativeYTranslation(value: boolean) {\n this.cameraRig.configure({ restrictRelativeYTranslation: value });\n }\n\n set restrictXTranslation(value: boolean) {\n this.cameraRig.configure({ restrictXTranslation: value });\n }\n\n set restrictYTranslation(value: boolean) {\n this.cameraRig.configure({ restrictYTranslation: value });\n }\n\n get restrictZoom(): boolean {\n return this.cameraRig.config.restrictZoom;\n }\n\n set restrictZoom(value: boolean) {\n this.cameraRig.configure({ restrictZoom: value });\n }\n\n get restrictRotation(): boolean {\n return this.cameraRig.config.restrictRotation;\n }\n\n set restrictRotation(value: boolean) {\n this.cameraRig.configure({ restrictRotation: value });\n }\n\n get clampTranslation(): boolean {\n return this.cameraRig.config.clampTranslation;\n }\n\n set clampTranslation(value: boolean) {\n this.cameraRig.configure({ clampTranslation: value });\n }\n\n get clampZoom(): boolean {\n return this.cameraRig.config.clampZoom;\n }\n\n set clampZoom(value: boolean) {\n this.cameraRig.configure({ clampZoom: value });\n }\n\n get clampRotation(): boolean {\n return this.cameraRig.config.clampRotation;\n }\n\n set clampRotation(value: boolean) {\n this.cameraRig.configure({ clampRotation: value });\n }\n\n getCameraRig(): CameraRig {\n return this.cameraRig;\n }\n\n setInputMode(mode: 'kmt' | 'trackpad'): void {\n this._observableInputTracker.setMode(mode);\n }\n\n onCanvasDimensionChange(callback: (dimensions: CanvasDimensions) => void) {\n return this._canvasProxy.subscribe(callback);\n }\n\n get canvasDimensions(): CanvasDimensions {\n return this._canvasProxy.dimensions;\n }\n}\n",
|
|
45
|
+
"import { Point } from '@ue-too/math';\nimport { PointCal } from '@ue-too/math';\n\nimport {\n CameraMux,\n createCameraMuxWithAnimationAndLock,\n} from '../camera/camera-mux';\nimport { CameraRig, DefaultCameraRig } from '../camera/camera-rig';\nimport DefaultBoardCamera from '../camera/default-camera';\nimport { ObservableBoardCamera } from '../camera/interface';\nimport {\n CameraEventMap,\n CameraState,\n UnSubscribe,\n} from '../camera/update-publisher';\nimport {\n halfTranslationHeightOf,\n halfTranslationWidthOf,\n} from '../camera/utils/position';\nimport { InputOrchestrator } from '../input-interpretation/input-orchestrator';\nimport {\n CanvasDimensions,\n CanvasProxy,\n ObservableInputTracker,\n TouchInputTracker,\n createKmtInputStateMachine,\n createTouchInputStateMachine,\n} from '../input-interpretation/input-state-machine';\nimport {\n KMTEventParser,\n VanillaKMTEventParser,\n} from '../input-interpretation/raw-input-parser';\nimport {\n TouchEventParser,\n VanillaTouchEventParser,\n} from '../input-interpretation/raw-input-parser';\nimport {\n RawUserInputEventMap,\n RawUserInputPublisher,\n UnsubscribeToUserRawInput,\n} from '../input-interpretation/raw-input-publisher';\nimport { reverseYAxis } from '../utils';\nimport {\n minZoomLevelBaseOnDimensions,\n minZoomLevelBaseOnWidth,\n zoomLevelBoundariesShouldUpdate,\n} from '../utils';\n\n/**\n * Main user-facing API class that provides an infinite canvas with pan, zoom, and rotate capabilities.\n *\n * The Board class is the primary entry point for using the board package. It integrates all subsystems\n * including camera management, input handling, and state machines into a simple, unified API for\n * creating interactive 2D canvases with advanced camera controls.\n *\n * @remarks\n * ## Architecture Overview\n *\n * The Board class orchestrates several subsystems:\n *\n * - **Camera System**: Manages viewport transformations (pan/zoom/rotate) through {@link ObservableBoardCamera}.\n * The camera can be configured with boundaries, zoom limits, and various movement constraints.\n *\n * - **Input System**: Processes user input through state machines for both mouse/keyboard/trackpad (KMT)\n * and touch events. Input is parsed, interpreted, and translated into camera movements.\n *\n * - **Camera Rig**: Enforces constraints and restrictions on camera movement (boundaries, zoom limits,\n * clamping behavior). See {@link CameraRig} for details.\n *\n * - **Camera Multiplexer**: Coordinates between different camera control sources (user input, animations,\n * programmatic control) to ensure smooth transitions. See {@link CameraMux} for details.\n *\n * ## Coordinate Systems\n *\n * The Board supports three coordinate systems:\n *\n * 1. **World Coordinates**: The infinite canvas space where your content lives. When the camera is at\n * position (0, 0) with no zoom or rotation, world coordinates map directly to viewport coordinates.\n *\n * 2. **Viewport Coordinates**: The visible area of the canvas relative to the camera center. The camera\n * center is at (0, 0) in viewport space, with coordinates extending in both directions based on the\n * canvas size.\n *\n * 3. **Window/Canvas Coordinates**: The browser's coordinate system, with (0, 0) at the top-left corner\n * of the canvas element. Use {@link convertWindowPoint2WorldCoord} to convert from window to world space.\n *\n * By default, {@link alignCoordinateSystem} is `true`, which means the Y-axis points down (standard HTML\n * canvas orientation). Set it to `false` to use a mathematical coordinate system where Y points up.\n *\n * ## Main Features\n *\n * - **Camera Control**: Pan, zoom, and rotate the viewport through user input or programmatic API\n * - **Boundaries**: Define world-space boundaries to constrain camera movement\n * - **Zoom Limits**: Set minimum and maximum zoom levels\n * - **Input Modes**: Support for mouse/keyboard/trackpad and touch input with customizable parsers\n * - **Event System**: Subscribe to camera events (pan, zoom, rotate) and input events\n * - **Coordinate Conversion**: Convert between window and world coordinates\n * - **Flexible Configuration**: Extensive options for restricting/clamping camera movement\n *\n * @example\n * Basic setup with drawing\n * ```typescript\n * const canvasElement = document.querySelector(\"canvas\") as HTMLCanvasElement;\n * const board = new Board(canvasElement);\n *\n * function draw(timestamp: number) {\n * board.step(timestamp);\n *\n * // Because board can be initialized without a canvas element,\n * // the context can be undefined until the canvas is attached\n * if(board.context == undefined) {\n * return;\n * }\n *\n * // Draw after the board has stepped\n * // The coordinate system has (0, 0) at the center of the canvas when camera position is at (0, 0)\n * board.context.beginPath();\n * board.context.rect(0, 0, 100, 100);\n * board.context.fill();\n *\n * requestAnimationFrame(draw);\n * }\n *\n * requestAnimationFrame(draw);\n * ```\n *\n * @example\n * Handling camera and input events\n * ```typescript\n * const board = new Board(canvasElement);\n *\n * // Listen to camera pan events\n * board.on('pan', (event, cameraState) => {\n * console.log('Camera panned to:', cameraState.position);\n * });\n *\n * // Listen to camera zoom events\n * board.on('zoom', (event, cameraState) => {\n * console.log('Camera zoom level:', cameraState.zoomLevel);\n * });\n *\n * // Listen to raw input events (before camera movement)\n * board.onInput('pan', (event) => {\n * console.log('User is panning');\n * });\n * ```\n *\n * @example\n * Configuring boundaries and zoom limits\n * ```typescript\n * const board = new Board(canvasElement);\n *\n * // Set world boundaries\n * board.camera.boundaries = {\n * min: { x: -1000, y: -1000 },\n * max: { x: 1000, y: 1000 }\n * };\n *\n * // Set zoom limits\n * board.camera.setMinZoomLevel(0.1);\n * board.camera.setMaxZoomLevel(5.0);\n *\n * // Ensure entire viewport stays within boundaries\n * board.limitEntireViewPort = true;\n *\n * // Clamp camera position to boundaries\n * board.clampTranslation = true;\n * board.clampZoom = true;\n * ```\n *\n * @example\n * Converting window coordinates to world coordinates\n * ```typescript\n * const board = new Board(canvasElement);\n *\n * canvasElement.addEventListener('click', (event) => {\n * const windowPoint = { x: event.clientX, y: event.clientY };\n * const worldPoint = board.convertWindowPoint2WorldCoord(windowPoint);\n * console.log('Clicked at world position:', worldPoint);\n * });\n * ```\n *\n * @example\n * Initialize board without canvas, attach canvas later\n * ```typescript\n * const board = new Board();\n *\n * // Attach canvas later\n * const canvasElement = document.createElement('canvas');\n * document.body.appendChild(canvasElement);\n * board.attach(canvasElement);\n * ```\n *\n * @category Board\n * @see {@link ObservableBoardCamera} for camera API details\n * @see {@link CameraRig} for camera constraint configuration\n * @see {@link CameraMux} for camera control coordination\n */\nexport default class Board {\n private _context?: CanvasRenderingContext2D;\n private _reversedContext?: CanvasRenderingContext2D;\n private _canvasProxy: CanvasProxy;\n\n private _kmtParser: KMTEventParser;\n private _touchParser: TouchEventParser;\n\n private _alignCoordinateSystem: boolean = true;\n private _fullScreen: boolean = false;\n\n private cameraRig: CameraRig;\n private _cameraMux: CameraMux;\n private boardInputPublisher: RawUserInputPublisher;\n private _observableInputTracker: ObservableInputTracker;\n private _touchInputTracker: TouchInputTracker;\n private _inputOrchestrator: InputOrchestrator;\n\n private _cachedCanvasWidth: number = 0;\n private _cachedCanvasHeight: number = 0;\n private _cachedCanvasPixelRatio: number = 1;\n\n private lastUpdateTime: number = 0;\n\n private _canvasElement: HTMLCanvasElement | undefined;\n\n /**\n * Creates a new Board instance with an optional canvas element.\n *\n * The constructor initializes all subsystems including the camera, input parsers, state machines,\n * and event publishers. The board can be created with or without a canvas element - if no canvas\n * is provided, you can attach one later using {@link attach}.\n *\n * @param canvas - Optional HTMLCanvasElement to attach to the board. If provided, the board will\n * immediately initialize with this canvas. If omitted, you must call {@link attach} before the\n * board can be used.\n * @param debug - Optional debug flag that enables `willReadFrequently` hint on the canvas context,\n * which optimizes the canvas for frequent readback operations. Default is `false`. Only use this\n * if you need to frequently read pixel data from the canvas.\n *\n * @remarks\n * ## Initialization Sequence\n *\n * When the constructor is called, it performs the following initialization:\n *\n * 1. **Camera Setup**: Creates a {@link DefaultBoardCamera} with default boundaries of ±50,000 units\n * in both X and Y directions. This provides a large working area for most use cases.\n *\n * 2. **Canvas Proxy**: Initializes a {@link CanvasProxy} that observes canvas dimension changes and\n * automatically updates the camera's viewport dimensions.\n *\n * 3. **Camera Rig**: Creates a {@link CameraRig} with default configuration:\n * - `limitEntireViewPort: true` - Entire viewport is constrained within boundaries\n * - `clampTranslation: true` - Camera position is clamped to boundaries\n * - `clampZoom: true` - Zoom level is clamped to min/max limits\n * - All translation restrictions are disabled by default\n *\n * 4. **Input System**: Initializes both keyboard/mouse/trackpad (KMT) and touch input parsers,\n * state machines, and the input orchestrator that coordinates camera control.\n *\n * 5. **Canvas Attachment** (if canvas provided): If a canvas element is provided, it's immediately\n * attached and the viewport dimensions are synchronized with the canvas size.\n *\n * ## Default Configuration\n *\n * The board is created with sensible defaults:\n * - World boundaries: (-50000, -50000) to (50000, 50000)\n * - Coordinate system: Aligned with HTML canvas (Y-axis points down)\n * - Camera position: (0, 0)\n * - Zoom level: 1.0\n * - Rotation: 0 radians\n * - Full screen: disabled\n *\n * You can customize these defaults after construction by setting properties on the board or camera.\n *\n * @example\n * Create board with canvas element\n * ```typescript\n * const canvas = document.querySelector('canvas') as HTMLCanvasElement;\n * const board = new Board(canvas);\n * // Board is ready to use immediately\n * ```\n *\n * @example\n * Create board without canvas, attach later\n * ```typescript\n * const board = new Board();\n * // ... later, when canvas is ready\n * const canvas = document.createElement('canvas');\n * document.body.appendChild(canvas);\n * board.attach(canvas);\n * ```\n *\n * @example\n * Enable debug mode for pixel readback\n * ```typescript\n * const board = new Board(canvas, true);\n * // Now getImageData() and similar operations will be optimized\n * ```\n *\n * @group LifeCycle\n * @see {@link attach} for attaching a canvas after construction\n * @see {@link tearDown} for cleanup when done with the board\n */\n constructor(canvas?: HTMLCanvasElement, debug: boolean = false) {\n const camera = new DefaultBoardCamera();\n const bound = 50000;\n camera.boundaries = {\n min: { x: -bound, y: -bound },\n max: { x: bound, y: bound },\n };\n\n this.bindFunctions();\n\n this._canvasProxy = new CanvasProxy(canvas);\n\n this._canvasProxy.subscribe(canvasDimensions => {\n this.syncViewPortDimensions(canvasDimensions);\n this.syncCameraZoomLevel(canvasDimensions);\n });\n\n this.cameraRig = new DefaultCameraRig(\n {\n limitEntireViewPort: true,\n restrictRelativeXTranslation: false,\n restrictRelativeYTranslation: false,\n restrictXTranslation: false,\n restrictYTranslation: false,\n restrictZoom: false,\n clampTranslation: true,\n clampZoom: true,\n },\n camera\n );\n\n this._cameraMux = createCameraMuxWithAnimationAndLock();\n this.boardInputPublisher = new RawUserInputPublisher();\n\n // this._edgeAutoCameraInput = new EdgeAutoCameraInput(this._cameraMux);\n this._observableInputTracker = new ObservableInputTracker(\n this._canvasProxy\n );\n this._touchInputTracker = new TouchInputTracker(this._canvasProxy);\n\n const kmtInputStateMachine = createKmtInputStateMachine(\n this._observableInputTracker\n );\n const touchInputStateMachine = createTouchInputStateMachine(\n this._touchInputTracker\n );\n\n // Create single orchestrator as the point of camera control for both KMT and touch inputs\n // Since both state machines output the same event types (pan, zoom), one orchestrator handles both\n // Orchestrator receives CameraRig to execute camera operations when CameraMux allows passthrough\n this._inputOrchestrator = new InputOrchestrator(\n this._cameraMux,\n this.cameraRig,\n this.boardInputPublisher\n );\n\n // Parsers have direct dependency on state machines, shared orchestrator processes outputs and controls camera\n this._kmtParser = new VanillaKMTEventParser(\n kmtInputStateMachine,\n this._inputOrchestrator,\n canvas\n );\n this._touchParser = new VanillaTouchEventParser(\n touchInputStateMachine,\n this._inputOrchestrator,\n canvas\n );\n\n if (canvas != undefined) {\n this.attach(canvas, debug);\n }\n }\n\n private syncViewPortDimensions(canvasDimensions: {\n width: number;\n height: number;\n }) {\n this.camera.viewPortHeight = canvasDimensions.height;\n this.camera.viewPortWidth = canvasDimensions.width;\n }\n\n /**\n * Attaches a canvas element to the board, enabling rendering and input handling.\n *\n * This method connects a canvas element to the board's rendering and input systems. It must be\n * called before the board can be used if no canvas was provided to the constructor. If a canvas\n * was already attached, this method will replace it with the new canvas.\n *\n * @param canvas - The HTMLCanvasElement to attach to the board. This canvas will be used for\n * rendering and will receive all input events.\n * @param debug - Optional debug flag that enables `willReadFrequently` hint on the canvas context.\n * Default is `false`. Set to `true` if you need to frequently read pixel data from the canvas,\n * which will optimize the context for readback operations.\n *\n * @remarks\n * When a canvas is attached, the following happens:\n *\n * 1. **Context Creation**: A 2D rendering context is obtained from the canvas with the specified\n * debug settings.\n *\n * 2. **Input Parser Attachment**: Both KMT (keyboard/mouse/trackpad) and touch input parsers are\n * attached to the canvas to begin receiving input events.\n *\n * 3. **Canvas Proxy Attachment**: The canvas proxy begins observing the canvas for dimension changes,\n * automatically updating the camera's viewport dimensions when the canvas is resized.\n *\n * 4. **Zoom Level Synchronization**: If {@link limitEntireViewPort} is enabled, the minimum zoom\n * level is calculated and set to ensure the entire viewport can fit within the camera boundaries.\n *\n * 5. **Coordinate System Setup**: Both standard and Y-reversed rendering contexts are created to\n * support both coordinate system modes (see {@link alignCoordinateSystem}).\n *\n * @example\n * Attach canvas during construction\n * ```typescript\n * const canvas = document.querySelector('canvas') as HTMLCanvasElement;\n * const board = new Board(canvas);\n * // No need to call attach() - already attached\n * ```\n *\n * @example\n * Attach canvas after construction\n * ```typescript\n * const board = new Board();\n *\n * // Later, when canvas is ready...\n * const canvas = document.createElement('canvas');\n * canvas.width = 800;\n * canvas.height = 600;\n * document.body.appendChild(canvas);\n *\n * board.attach(canvas);\n * // Board is now ready to use\n * ```\n *\n * @example\n * Switch to a different canvas\n * ```typescript\n * const board = new Board(canvas1);\n *\n * // Later, switch to a different canvas\n * const canvas2 = document.querySelector('#other-canvas') as HTMLCanvasElement;\n * board.attach(canvas2);\n * // Board is now rendering to canvas2\n * ```\n *\n * @group LifeCycle\n * @see {@link tearDown} for detaching and cleaning up\n * @see {@link context} for accessing the rendering context\n */\n attach(canvas: HTMLCanvasElement, debug: boolean = false) {\n this._canvasElement = canvas;\n const newContext = canvas.getContext('2d', {\n willReadFrequently: debug,\n });\n if (newContext == null) {\n console.error('new canvas context is null');\n return;\n }\n this._kmtParser.attach(canvas);\n this._touchParser.attach(canvas);\n this._canvasProxy.attach(canvas);\n\n if (this.limitEntireViewPort) {\n this.syncCameraZoomLevel(this._canvasProxy.dimensions);\n }\n\n this._context = newContext;\n this._reversedContext = reverseYAxis(this._context);\n }\n\n disableEventListeners() {\n this._kmtParser.tearDown();\n this._touchParser.tearDown();\n }\n\n enableEventListeners() {\n this._kmtParser.setUp();\n this._touchParser.setUp();\n }\n\n get inputOrchestrator(): InputOrchestrator {\n return this._inputOrchestrator;\n }\n\n /**\n * @group LifeCycle\n * @description This function is used to clean up the board. It removes all the event listeners and disconnects the resize observer and the attribute observer.\n */\n tearDown() {\n this._kmtParser.tearDown();\n this._touchParser.tearDown();\n this._canvasProxy.tearDown();\n this._canvasElement = undefined;\n this._context = undefined;\n this._reversedContext = undefined;\n }\n\n private bindFunctions() {\n this.step = this.step.bind(this);\n }\n\n get width(): number {\n return this._canvasProxy.width;\n }\n\n get height(): number {\n return this._canvasProxy.height;\n }\n\n /**\n * @description This is an attribute that determines if the coordinate system should be aligned with the one of the HTML canvas element. The default is true.\n * If you set this to true, the coordinate system will be aligned with the one of the HTML canvas element.\n * If you change this value during runtime, you should update the context to be aligned with the new coordinate system. (just call board.context again)\n */\n set alignCoordinateSystem(align: boolean) {\n this._alignCoordinateSystem = align;\n this._observableInputTracker.alignCoordinateSystem = align;\n this._touchInputTracker.alignCoordinateSystem = align;\n }\n\n get alignCoordinateSystem(): boolean {\n return this._alignCoordinateSystem;\n }\n\n /**\n * @description Determines if the board should be full screen. If this is set to true, the width and height of the board will be set to the window's inner width and inner height respectively,\n * and the width and height of the board will resize with the window.\n */\n get fullScreen(): boolean {\n return this._fullScreen;\n }\n\n set fullScreen(value: boolean) {\n this._fullScreen = value;\n if (this._fullScreen) {\n this._canvasProxy.setWidth(window.innerWidth);\n this._canvasProxy.setHeight(window.innerHeight);\n }\n }\n\n /**\n * @description The context used to draw on the canvas.\n * If alignCoordinateSystem is false, this returns a proxy that automatically negates y-coordinates for relevant drawing methods.\n */\n get context(): CanvasRenderingContext2D | undefined {\n if (!this._alignCoordinateSystem) {\n return this._reversedContext;\n }\n return this._context;\n }\n\n /**\n * @description Determines the behavior of the camera when the camera is at the edge of the boundaries. If set to true, the entire view port would not move beyond the boundaries.\n * If set to false, only the center of the camera is bounded by the boundaries.\n */\n set limitEntireViewPort(value: boolean) {\n this.cameraRig.config.limitEntireViewPort = value;\n if (this._canvasProxy.detached) {\n return;\n }\n if (value) {\n this.syncCameraZoomLevel(this._canvasProxy.dimensions);\n }\n }\n\n get limitEntireViewPort(): boolean {\n return this.cameraRig.config.limitEntireViewPort;\n }\n\n /**\n * @description The strategy used to handle the keyboard, mouse events. The default strategy is the DefaultBoardKMTStrategy.\n * You can implement your own strategy by implementing the BoardKMTStrategy interface.\n */\n set kmtParser(parser: KMTEventParser) {\n this._kmtParser.tearDown();\n parser.tearDown();\n if (this._canvasElement != undefined) {\n parser.attach(this._canvasElement);\n }\n parser.setUp();\n this._kmtParser = parser;\n }\n\n get kmtParser(): KMTEventParser {\n return this._kmtParser;\n }\n\n /**\n * @description The parser used to handle touch events. The default parser is the DefaultTouchParser.\n * You can have your own parser by implementing the BoardTouchParser interface.\n */\n set touchParser(parser: TouchEventParser) {\n this._touchParser.tearDown();\n parser.tearDown();\n if (this._canvasElement != undefined) {\n parser.attach(this._canvasElement);\n }\n parser.setUp();\n this._touchParser = parser;\n }\n\n get touchParser(): TouchEventParser {\n return this._touchParser;\n }\n\n /**\n * @description The underlying camera of the board. The camera of the board can be switched.\n * The boundaries are based on camera meaning you can have cameras with different boundaries, and you can switch between them during runtime.\n */\n get camera(): ObservableBoardCamera {\n return this.cameraRig.camera;\n }\n\n set camera(camera: ObservableBoardCamera) {\n if (!this._canvasProxy.detached) {\n camera.viewPortHeight =\n this._canvasProxy.height / window.devicePixelRatio;\n camera.viewPortWidth =\n this._canvasProxy.width / window.devicePixelRatio;\n }\n this.cameraRig.camera = camera;\n }\n\n get cameraMux(): CameraMux {\n return this._cameraMux;\n }\n\n set cameraMux(cameraMux: CameraMux) {\n this._cameraMux = cameraMux;\n // Update all components that depend on cameraMux\n // Note: TouchInputTracker and Orchestrator would need to be recreated or have setter methods\n\n // input orchestrator\n this._inputOrchestrator.cameraMux = cameraMux;\n }\n\n /**\n * @description This is the step function that is called in the animation frame. This function is responsible for updating the canvas context and the camera state.\n * @param timestamp\n */\n public step(timestamp: number) {\n if (this._canvasProxy.detached || this._context == undefined) {\n return;\n }\n\n this.cameraRig.update();\n let deltaTime = timestamp - this.lastUpdateTime;\n this.lastUpdateTime = timestamp;\n deltaTime = deltaTime / 1000;\n\n this._context.reset();\n this._context.clearRect(\n 0,\n 0,\n this._canvasProxy.width * window.devicePixelRatio,\n this._canvasProxy.height * window.devicePixelRatio\n );\n\n if (this._cachedCanvasPixelRatio !== window.devicePixelRatio) {\n this._cachedCanvasPixelRatio = window.devicePixelRatio;\n this._canvasProxy.setCanvasHeight(this._canvasProxy.height);\n this._canvasProxy.setCanvasWidth(this._canvasProxy.width);\n }\n\n if (this._cachedCanvasHeight !== this._canvasProxy.height) {\n this._cachedCanvasHeight = this._canvasProxy.height;\n this._canvasProxy.setCanvasHeight(this._canvasProxy.height);\n }\n if (this._cachedCanvasWidth !== this._canvasProxy.width) {\n this._cachedCanvasWidth = this._canvasProxy.width;\n this._canvasProxy.setCanvasWidth(this._canvasProxy.width);\n }\n\n const transfromMatrix = this.camera.getTransform(\n window.devicePixelRatio,\n this._alignCoordinateSystem\n );\n const currentTransform = this._context.getTransform();\n if (\n currentTransform.a !== transfromMatrix.a ||\n currentTransform.b !== transfromMatrix.b ||\n currentTransform.c !== transfromMatrix.c ||\n currentTransform.d !== transfromMatrix.d ||\n currentTransform.e !== transfromMatrix.e ||\n currentTransform.f !== transfromMatrix.f\n ) {\n this._context.setTransform(\n transfromMatrix.a,\n transfromMatrix.b,\n transfromMatrix.c,\n transfromMatrix.d,\n transfromMatrix.e,\n transfromMatrix.f\n );\n }\n }\n\n /**\n * TODO add the option to make the camera position to be at the top left corner of the canvas; or better yet any point in the viewport (within the viewport boundaries)\n * @description Converts a point from window coordinates to world coordinates.\n * @param clickPointInWindow The point in window coordinates to convert.\n * @returns The converted point in world coordinates.\n */\n convertWindowPoint2WorldCoord(clickPointInWindow: Point): Point {\n const boundingRect = this._canvasProxy.dimensions;\n const cameraCenterInWindow = {\n x: boundingRect.position.x + boundingRect.width / 2,\n y: boundingRect.position.y + boundingRect.height / 2,\n };\n const pointInViewPort = PointCal.subVector(\n clickPointInWindow,\n cameraCenterInWindow\n );\n if (!this._alignCoordinateSystem) {\n pointInViewPort.y = -pointInViewPort.y;\n }\n return this.camera.convertFromViewPort2WorldSpace(pointInViewPort);\n }\n\n /**\n * @description Add an camera movement event listener. The events are \"pan\", \"zoom\", and \"rotate\".\n * There's also an \"all\" event that will be triggered when any of the above events are triggered.\n * @param eventName The event name to listen for. The events are \"pan\", \"zoom\", and \"rotate\".\n * @param callback The callback function to call when the event is triggered. The event provided to the callback is different for the different events.\n * @returns The converted point in world coordinates.\n */\n on<K extends keyof CameraEventMap>(\n eventName: K,\n callback: (event: CameraEventMap[K], cameraState: CameraState) => void\n ): UnSubscribe {\n return this.camera.on(eventName, callback);\n }\n\n /**\n * @description Add an input event listener. The events are \"pan\", \"zoom\", and \"rotate\". This is different from the camera event listener as this is for input events.\n * There's also an \"all\" event that will be triggered when any of the above events are triggered.\n * Input event does not necesarily mean that the camera will move. The input events are the events triggered when the user interacts with the board.\n * @param eventName\n * @param callback\n * @returns\n */\n onInput<K extends keyof RawUserInputEventMap>(\n eventName: K,\n callback: (event: RawUserInputEventMap[K]) => void\n ): UnsubscribeToUserRawInput {\n return this.boardInputPublisher.on(eventName, callback);\n }\n\n /**\n * @description The max translation height of the camera. This is the maximum distance the camera can move in the vertical direction.\n */\n get maxHalfTransHeight(): number | undefined {\n return halfTranslationHeightOf(this.camera.boundaries);\n }\n\n /**\n * @description The max translation width of the camera. This is the maximum distance the camera can move in the horizontal direction.\n */\n get maxHalfTransWidth(): number | undefined {\n return halfTranslationWidthOf(this.camera.boundaries);\n }\n\n private syncCameraZoomLevel(canvasDimensions: CanvasDimensions) {\n if (this.limitEntireViewPort) {\n const targetMinZoomLevel = minZoomLevelBaseOnDimensions(\n this.camera.boundaries,\n canvasDimensions.width,\n canvasDimensions.height,\n this.camera.rotation\n );\n if (\n targetMinZoomLevel != undefined &&\n zoomLevelBoundariesShouldUpdate(\n this.camera.zoomBoundaries,\n targetMinZoomLevel\n )\n ) {\n this.camera.setMinZoomLevel(targetMinZoomLevel);\n }\n }\n }\n\n /**\n * @group Helper Methods\n * @description This function sets the max translation width of the camera while fixing the minimum x boundary.\n */\n setMaxTransWidthWithFixedMinBoundary(value: number) {\n const curBoundaries = this.camera.boundaries;\n const curMin =\n curBoundaries == undefined ? undefined : curBoundaries.min;\n const curHorizontalMin = curMin == undefined ? undefined : curMin.x;\n if (curHorizontalMin == undefined) {\n this.camera.setHorizontalBoundaries(-value, value);\n } else {\n this.camera.setHorizontalBoundaries(\n curHorizontalMin,\n curHorizontalMin + value * 2\n );\n }\n if (this.limitEntireViewPort) {\n const targetMinZoomLevel = minZoomLevelBaseOnWidth(\n this.camera.boundaries,\n this.camera.viewPortWidth,\n this.camera.viewPortHeight,\n this.camera.rotation\n );\n if (\n zoomLevelBoundariesShouldUpdate(\n this.camera.zoomBoundaries,\n targetMinZoomLevel\n )\n ) {\n this.camera.setMinZoomLevel(targetMinZoomLevel);\n }\n }\n }\n\n /**\n * @group Helper Methods\n * @description This function sets the max translation width of the camera while fixing the minimum x boundary.\n */\n setMaxTransWidthWithFixedMaxBoundary(value: number) {\n const curBoundaries = this.camera.boundaries;\n const curMax =\n curBoundaries == undefined ? undefined : curBoundaries.max;\n const curHorizontalMax = curMax == undefined ? undefined : curMax.x;\n if (curHorizontalMax == undefined) {\n this.camera.setHorizontalBoundaries(-value, value);\n } else {\n this.camera.setHorizontalBoundaries(\n curHorizontalMax - value * 2,\n curHorizontalMax\n );\n }\n if (this.limitEntireViewPort) {\n const targetMinZoomLevel = minZoomLevelBaseOnWidth(\n this.camera.boundaries,\n this.camera.viewPortWidth,\n this.camera.viewPortHeight,\n this.camera.rotation\n );\n if (\n zoomLevelBoundariesShouldUpdate(\n this.camera.zoomBoundaries,\n targetMinZoomLevel\n )\n ) {\n this.camera.setMinZoomLevel(targetMinZoomLevel);\n }\n }\n }\n\n get restrictRelativeXTranslation(): boolean {\n return this.cameraRig.config.restrictRelativeXTranslation;\n }\n\n get restrictRelativeYTranslation(): boolean {\n return this.cameraRig.config.restrictRelativeYTranslation;\n }\n\n get restrictXTranslation(): boolean {\n return this.cameraRig.config.restrictXTranslation;\n }\n\n get restrictYTranslation(): boolean {\n return this.cameraRig.config.restrictYTranslation;\n }\n\n set restrictRelativeXTranslation(value: boolean) {\n this.cameraRig.config.restrictRelativeXTranslation = value;\n }\n\n set restrictRelativeYTranslation(value: boolean) {\n this.cameraRig.configure({ restrictRelativeYTranslation: value });\n }\n\n set restrictXTranslation(value: boolean) {\n this.cameraRig.configure({ restrictXTranslation: value });\n }\n\n set restrictYTranslation(value: boolean) {\n this.cameraRig.configure({ restrictYTranslation: value });\n }\n\n get restrictZoom(): boolean {\n return this.cameraRig.config.restrictZoom;\n }\n\n set restrictZoom(value: boolean) {\n this.cameraRig.configure({ restrictZoom: value });\n }\n\n get restrictRotation(): boolean {\n return this.cameraRig.config.restrictRotation;\n }\n\n set restrictRotation(value: boolean) {\n this.cameraRig.configure({ restrictRotation: value });\n }\n\n get clampTranslation(): boolean {\n return this.cameraRig.config.clampTranslation;\n }\n\n set clampTranslation(value: boolean) {\n this.cameraRig.configure({ clampTranslation: value });\n }\n\n get clampZoom(): boolean {\n return this.cameraRig.config.clampZoom;\n }\n\n set clampZoom(value: boolean) {\n this.cameraRig.configure({ clampZoom: value });\n }\n\n get clampRotation(): boolean {\n return this.cameraRig.config.clampRotation;\n }\n\n set clampRotation(value: boolean) {\n this.cameraRig.configure({ clampRotation: value });\n }\n\n getCameraRig(): CameraRig {\n return this.cameraRig;\n }\n\n setInputMode(mode: 'kmt' | 'trackpad'): void {\n this._observableInputTracker.setMode(mode);\n }\n\n /**\n * The current input modality.\n *\n * @returns `'kmt'` (keyboard-mouse), `'trackpad'`, or `'TBD'` when\n * auto-detection is active and has not yet committed to a mode.\n */\n get inputMode(): 'kmt' | 'trackpad' | 'TBD' {\n return this._observableInputTracker.mode;\n }\n\n /**\n * Flips the input mode between keyboard-mouse and trackpad and locks it,\n * disabling auto-detection.\n *\n * From `'kmt'` this switches to `'trackpad'`; from `'trackpad'` or `'TBD'`\n * it switches to `'kmt'`. (`'TBD'` already behaves like trackpad, so the\n * natural \"other\" mode to toggle into is `'kmt'`.)\n *\n * @see {@link setInputMode} to set a specific mode, and\n * {@link enableAutoInputMode} to return to auto-detection.\n */\n toggleInputMode(): void {\n this.setInputMode(this.inputMode === 'kmt' ? 'trackpad' : 'kmt');\n }\n\n /**\n * Returns the board to auto-detection of input modality after a manual lock\n * set via {@link setInputMode} or {@link toggleInputMode}.\n *\n * The mode reverts to `'TBD'` until auto-detection commits to a mode.\n */\n enableAutoInputMode(): void {\n this._observableInputTracker.enableInputModeDetection();\n }\n\n onCanvasDimensionChange(callback: (dimensions: CanvasDimensions) => void) {\n return this._canvasProxy.subscribe(callback);\n }\n\n get canvasDimensions(): CanvasDimensions {\n return this._canvasProxy.dimensions;\n }\n}\n",
|
|
46
46
|
"import { Point } from '@ue-too/math';\n\nimport {\n CameraMux,\n CameraMuxPanOutput,\n CameraMuxRotationOutput,\n CameraMuxZoomOutput,\n} from './interface';\n\n/**\n * Stateless camera input multiplexer that always allows inputs to pass through.\n * This is the simplest {@link CameraMux} implementation with no filtering or state management.\n *\n * @remarks\n * The Relay class provides a \"transparent\" mux that:\n * - Never blocks inputs\n * - Passes all inputs unchanged\n * - Has no internal state\n * - Acts as a simple conduit between input sources and camera control\n *\n * Use this when you want:\n * - Direct, unfiltered camera control\n * - No animation system or input blocking\n * - Maximum simplicity with minimal overhead\n *\n * For more advanced use cases (animations, input blocking, state management),\n * implement a custom {@link CameraMux} or use a stateful implementation.\n *\n * @example\n * ```typescript\n * const relay = new Relay();\n *\n * // All inputs pass through unchanged\n * const panResult = relay.notifyPanInput({ x: 10, y: 5 });\n * // panResult = { allowPassThrough: true, delta: { x: 10, y: 5 } }\n *\n * const zoomResult = relay.notifyZoomInput(0.5, { x: 100, y: 200 });\n * // zoomResult = { allowPassThrough: true, delta: 0.5, anchorPoint: { x: 100, y: 200 } }\n *\n * const rotateResult = relay.notifyRotationInput(0.1);\n * // rotateResult = { allowPassThrough: true, delta: 0.1 }\n * ```\n *\n * @category Input Flow Control\n * @see {@link CameraMux} for the interface specification\n * @see {@link createDefaultCameraMux} for a factory function\n */\nexport class Relay implements CameraMux {\n /**\n * Creates a new stateless relay multiplexer.\n */\n constructor() {}\n\n /**\n * Processes pan input by always allowing it through unchanged.\n *\n * @param diff - Pan displacement in viewport space\n * @returns Output allowing passthrough with the original delta\n */\n notifyPanInput(diff: Point): CameraMuxPanOutput {\n return { allowPassThrough: true, delta: diff };\n }\n\n /**\n * Processes zoom input by always allowing it through unchanged.\n *\n * @param deltaZoomAmount - Change in zoom level\n * @param anchorPoint - Point to zoom towards in viewport coordinates\n * @returns Output allowing passthrough with the original parameters\n */\n notifyZoomInput(\n deltaZoomAmount: number,\n anchorPoint: Point\n ): CameraMuxZoomOutput {\n return {\n allowPassThrough: true,\n delta: deltaZoomAmount,\n anchorPoint: anchorPoint,\n };\n }\n\n /**\n * Processes rotation input by always allowing it through unchanged.\n *\n * @param deltaRotation - Change in rotation in radians\n * @returns Output allowing passthrough with the original delta\n */\n notifyRotationInput(deltaRotation: number): CameraMuxRotationOutput {\n return { allowPassThrough: true, delta: deltaRotation };\n }\n}\n\n/**\n * Factory function to create a default camera input multiplexer.\n * Returns a {@link Relay} instance that allows all inputs to pass through.\n *\n * @returns A new stateless relay multiplexer\n *\n * @remarks\n * This is a convenience function for creating the simplest possible camera mux.\n * The returned instance has no state and never blocks inputs.\n *\n * @example\n * ```typescript\n * const cameraMux = createDefaultCameraMux();\n *\n * // Use with camera rig or input handlers\n * const cameraRig = new CameraRig(camera, cameraMux);\n * ```\n *\n * @category Input Flow Control\n * @see {@link Relay} for implementation details\n */\nexport function createDefaultCameraMux(): CameraMux {\n return new Relay();\n}\n",
|
|
47
47
|
"import type { BaseContext, EventReactions, State } from '@ue-too/being';\nimport { NO_OP, TemplateState, TemplateStateMachine } from '@ue-too/being';\nimport { Point } from '@ue-too/math';\n\n/**\n * State identifiers for the pan control state machine.\n *\n * @remarks\n * Three states manage pan input and animations:\n * - `ACCEPTING_USER_INPUT`: Normal state, accepts user pan input\n * - `TRANSITION`: Animation/transition state, may block user input\n * - `LOCKED_ON_OBJECT`: Camera locked to follow a specific object/position\n *\n * @category Input Flow Control\n */\nexport type PanControlStates =\n | 'ACCEPTING_USER_INPUT'\n | 'TRANSITION'\n | 'LOCKED_ON_OBJECT';\n\n/**\n * Payload for pan-by input events (relative panning).\n * @category Input Flow Control\n */\nexport type PanByInputEventPayload = {\n /** Pan displacement in viewport coordinates */\n diff: Point;\n};\n\n/**\n * Payload for pan-to input events (absolute panning).\n * @category Input Flow Control\n */\nexport type PanToInputEventPayload = {\n /** Target position to pan to */\n target: Point;\n};\n\n/** Empty payload for events that don't need data */\ntype EmptyPayload = {};\n\n/**\n * Event payload type mapping for the pan control state machine.\n *\n * @remarks\n * Maps event names to their payload types. Events include:\n * - User input events (`userPanByInput`, `userPanToInput`)\n * - Transition/animation events (`transitionPanByInput`, `transitionPanToInput`)\n * - Locked object events (`lockedOnObjectPanByInput`, `lockedOnObjectPanToInput`)\n * - Control events (`unlock`, `initateTransition`)\n *\n * @category Input Flow Control\n */\nexport type PanEventPayloadMapping = {\n userPanByInput: PanByInputEventPayload;\n userPanToInput: PanToInputEventPayload;\n transitionPanByInput: PanByInputEventPayload;\n transitionPanToInput: PanToInputEventPayload;\n lockedOnObjectPanByInput: PanByInputEventPayload;\n lockedOnObjectPanToInput: PanToInputEventPayload;\n unlock: EmptyPayload;\n initateTransition: EmptyPayload;\n};\n\n/**\n * Discriminated union of output events from pan control state machine.\n *\n * @remarks\n * Output events instruct the camera system what pan operation to perform:\n * - `panByViewPort`: Relative pan in viewport coordinates\n * - `panToWorld`: Absolute pan to world position\n * - `none`: No operation (input blocked)\n *\n * @category Input Flow Control\n */\nexport type PanControlOutputEvent =\n | { type: 'panByViewPort'; delta: Point }\n | { type: 'panToWorld'; target: Point }\n | { type: 'none' };\n\n/**\n * Output event type mapping for pan control events.\n * Maps input event names to their corresponding output event types.\n *\n * @category Input Flow Control\n */\nexport type PanControlOutputMapping = {\n userPanByInput: PanControlOutputEvent;\n userPanToInput: PanControlOutputEvent;\n transitionPanByInput: PanControlOutputEvent;\n transitionPanToInput: PanControlOutputEvent;\n lockedOnObjectPanByInput: PanControlOutputEvent;\n lockedOnObjectPanToInput: PanControlOutputEvent;\n};\n\n/**\n * State machine controlling pan input flow and animations.\n *\n * @remarks\n * This state machine manages the lifecycle of pan operations:\n * - **User input handling**: Accepts or blocks user pan gestures based on state\n * - **Animation control**: Manages smooth pan-to animations\n * - **Object tracking**: Supports locking camera to follow objects\n *\n * **State transitions:**\n * - `ACCEPTING_USER_INPUT` → `TRANSITION`: Start animation (`initateTransition`)\n * - `ACCEPTING_USER_INPUT` → `LOCKED_ON_OBJECT`: Lock to object (`lockedOnObjectPan...`)\n * - `TRANSITION` → `ACCEPTING_USER_INPUT`: User input interrupts animation\n * - `LOCKED_ON_OBJECT` → `ACCEPTING_USER_INPUT`: Unlock (`unlock` event)\n *\n * Helper methods simplify event dispatching without memorizing event names.\n *\n * @example\n * ```typescript\n * const stateMachine = createDefaultPanControlStateMachine(cameraRig);\n *\n * // User pans - accepted in ACCEPTING_USER_INPUT state\n * const result = stateMachine.notifyPanInput({ x: 50, y: 30 });\n *\n * // Start animation - transitions to TRANSITION state\n * stateMachine.notifyPanToAnimationInput({ x: 1000, y: 500 });\n *\n * // User input now blocked while animating\n * ```\n *\n * @category Input Flow Control\n * @see {@link createDefaultPanControlStateMachine} for factory function\n */\nexport class PanControlStateMachine extends TemplateStateMachine<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n> {\n constructor(\n states: Record<\n PanControlStates,\n State<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n >\n >,\n initialState: PanControlStates,\n context: BaseContext\n ) {\n super(states, initialState, context);\n }\n\n /**\n * Notifies the state machine of user pan input.\n *\n * @param diff - Pan displacement in viewport coordinates\n * @returns Event handling result with output event\n *\n * @remarks\n * Dispatches `userPanByInput` event. Accepted in `ACCEPTING_USER_INPUT` and `TRANSITION` states,\n * where it may transition back to `ACCEPTING_USER_INPUT` (user interrupting animation).\n */\n notifyPanInput(diff: Point) {\n return this.happens('userPanByInput', { diff: diff });\n }\n\n /**\n * Initiates a pan animation to a target position.\n *\n * @param target - Target position in world coordinates\n * @returns Event handling result\n *\n * @remarks\n * Dispatches `transitionPanToInput` event, starting a pan animation.\n * Transitions to `TRANSITION` state where animation updates occur.\n */\n notifyPanToAnimationInput(target: Point) {\n return this.happens('transitionPanToInput', { target: target });\n }\n\n /**\n * Initiates transition to `TRANSITION` state.\n *\n * @remarks\n * Forces state change to begin animation or transition sequence.\n * Called when starting programmatic camera movements.\n */\n initateTransition() {\n return this.happens('initateTransition');\n }\n}\n\n/**\n * State implementation for accepting user pan input (idle/normal state).\n * Accepts user pan input and can transition to animation or locked states.\n * @category Input Flow Control\n */\nexport class AcceptingUserInputState extends TemplateState<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n> {\n constructor() {\n super();\n }\n\n protected _eventReactions: EventReactions<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n > = {\n userPanByInput: {\n action: this.userPanByInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n userPanToInput: {\n action: this.userPanToInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n lockedOnObjectPanByInput: {\n action: this.lockedOnObjectPanByInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n lockedOnObjectPanToInput: {\n action: this.lockedOnObjectPanToInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n initateTransition: { action: NO_OP, defaultTargetState: 'TRANSITION' },\n };\n\n userPanByInputHandler(\n context: BaseContext,\n payload: PanByInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panByViewPort', delta: payload.diff };\n }\n\n userPanToInputHandler(\n context: BaseContext,\n payload: PanToInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panToWorld', target: payload.target };\n }\n\n lockedOnObjectPanByInputHandler(\n context: BaseContext,\n payload: PanByInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panByViewPort', delta: payload.diff };\n }\n\n lockedOnObjectPanToInputHandler(\n context: BaseContext,\n payload: PanToInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panToWorld', target: payload.target };\n }\n}\n\n/**\n * State implementation for pan animations and transitions.\n * Processes animation updates and allows user input to interrupt.\n * @category Input Flow Control\n */\nexport class TransitionState extends TemplateState<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n> {\n constructor() {\n super();\n }\n\n protected _eventReactions: EventReactions<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n > = {\n userPanByInput: {\n action: this.userPanByInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n userPanToInput: {\n action: this.userPanToInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n transitionPanByInput: {\n action: this.transitionPanByInputHandler,\n defaultTargetState: 'TRANSITION',\n },\n transitionPanToInput: {\n action: this.transitionPanToInputHandler,\n defaultTargetState: 'TRANSITION',\n },\n lockedOnObjectPanByInput: {\n action: this.lockedOnObjectPanByInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n lockedOnObjectPanToInput: {\n action: this.lockedOnObjectPanToInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n };\n\n userPanByInputHandler(\n context: BaseContext,\n payload: PanByInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panByViewPort', delta: payload.diff };\n }\n\n userPanToInputHandler(\n context: BaseContext,\n payload: PanToInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panToWorld', target: payload.target };\n }\n\n transitionPanByInputHandler(\n context: BaseContext,\n payload: PanByInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panByViewPort', delta: payload.diff };\n }\n\n transitionPanToInputHandler(\n context: BaseContext,\n payload: PanToInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panToWorld', target: payload.target };\n }\n\n lockedOnObjectPanByInputHandler(\n context: BaseContext,\n payload: PanByInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panByViewPort', delta: payload.diff };\n }\n\n lockedOnObjectPanToInputHandler(\n context: BaseContext,\n payload: PanToInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panToWorld', target: payload.target };\n }\n}\n\n/**\n * State implementation for camera locked to follow an object.\n * Only accepts locked object pan events until unlocked.\n * @category Input Flow Control\n */\nexport class LockedOnObjectState extends TemplateState<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n> {\n constructor() {\n super();\n }\n\n protected _eventReactions: EventReactions<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n > = {\n unlock: { action: NO_OP, defaultTargetState: 'ACCEPTING_USER_INPUT' },\n lockedOnObjectPanByInput: {\n action: this.lockedOnObjectPanByInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n lockedOnObjectPanToInput: {\n action: this.lockedOnObjectPanToInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n };\n\n lockedOnObjectPanByInputHandler(\n context: BaseContext,\n payload: PanByInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panByViewPort', delta: payload.diff };\n }\n\n lockedOnObjectPanToInputHandler(\n context: BaseContext,\n payload: PanToInputEventPayload\n ): PanControlOutputEvent {\n return { type: 'panToWorld', target: payload.target };\n }\n}\n\n/**\n * Creates the default set of pan control states.\n * @returns State instances for all pan control states\n * @category Input Flow Control\n */\nexport function createDefaultPanControlStates(): Record<\n PanControlStates,\n State<\n PanEventPayloadMapping,\n BaseContext,\n PanControlStates,\n PanControlOutputMapping\n >\n> {\n return {\n ACCEPTING_USER_INPUT: new AcceptingUserInputState(),\n TRANSITION: new TransitionState(),\n LOCKED_ON_OBJECT: new LockedOnObjectState(),\n };\n}\n\n/**\n * Creates a pan control state machine with default configuration.\n *\n * @param context - Camera rig or context for pan operations\n * @returns Configured pan control state machine starting in `ACCEPTING_USER_INPUT` state\n *\n * @remarks\n * Factory function for creating a pan state machine with sensible defaults.\n * The machine starts in `ACCEPTING_USER_INPUT` state, ready to accept user pan gestures.\n *\n * @example\n * ```typescript\n * const cameraRig = createDefaultCameraRig(camera);\n * const panSM = createDefaultPanControlStateMachine(cameraRig);\n * ```\n *\n * @category Input Flow Control\n */\nexport function createDefaultPanControlStateMachine(\n context: BaseContext = { setup: NO_OP, cleanup: NO_OP }\n): PanControlStateMachine {\n return new PanControlStateMachine(\n createDefaultPanControlStates(),\n 'ACCEPTING_USER_INPUT',\n context\n );\n}\n",
|
|
48
48
|
"import type { BaseContext, EventReactions, State } from '@ue-too/being';\nimport { NO_OP, TemplateState, TemplateStateMachine } from '@ue-too/being';\n\n/**\n * State identifiers for the rotation control state machine.\n *\n * @remarks\n * Three states manage rotation input and animations:\n * - `ACCEPTING_USER_INPUT`: Normal state, accepts user rotation input\n * - `TRANSITION`: Animation/transition state, may block user input\n * - `LOCKED_ON_OBJECT`: Camera locked to follow a specific object rotation\n *\n * @category Input Flow Control\n */\nexport type RotateControlStates =\n | 'ACCEPTING_USER_INPUT'\n | 'TRANSITION'\n | 'LOCKED_ON_OBJECT';\n\n/**\n * Payload for rotate-by input events (relative rotation).\n * @category Input Flow Control\n */\nexport type RotateByInputEventPayload = {\n /** Rotation angle delta in radians */\n diff: number;\n};\n\n/**\n * Payload for rotate-to input events (absolute rotation).\n * @category Input Flow Control\n */\nexport type RotateToInputEventPayload = {\n /** Target rotation angle in radians */\n target: number;\n};\n\n/** Empty payload for events that don't need data */\ntype EmptyPayload = {};\n\n/**\n * Event payload type mapping for the rotation control state machine.\n *\n * @remarks\n * Maps event names to their payload types. Events include:\n * - User input events (`userRotateByInput`, `userRotateToInput`)\n * - Transition/animation events (`transitionRotateByInput`, `transitionRotateToInput`)\n * - Locked object events (`lockedOnObjectRotateByInput`, `lockedOnObjectRotateToInput`)\n * - Control events (`unlock`, `initateTransition`)\n *\n * @category Input Flow Control\n */\nexport type RotateEventPayloadMapping = {\n userRotateByInput: RotateByInputEventPayload;\n userRotateToInput: RotateToInputEventPayload;\n transitionRotateByInput: RotateByInputEventPayload;\n transitionRotateToInput: RotateToInputEventPayload;\n lockedOnObjectRotateByInput: RotateByInputEventPayload;\n lockedOnObjectRotateToInput: RotateToInputEventPayload;\n unlock: EmptyPayload;\n initateTransition: EmptyPayload;\n};\n\n/**\n * Discriminated union of output events from rotation control state machine.\n *\n * @remarks\n * Output events instruct the camera system what rotation operation to perform:\n * - `rotateBy`: Relative rotation by delta angle\n * - `rotateTo`: Absolute rotation to target angle\n * - `none`: No operation (input blocked)\n *\n * @category Input Flow Control\n */\nexport type RotateControlOutputEvent =\n | { type: 'rotateBy'; delta: number }\n | { type: 'rotateTo'; target: number }\n | { type: 'none' };\n\n/**\n * Output event type mapping for rotation control events.\n * Maps input event names to their corresponding output event types.\n *\n * @category Input Flow Control\n */\nexport type RotateControlOutputMapping = {\n userRotateByInput: RotateControlOutputEvent;\n userRotateToInput: RotateControlOutputEvent;\n transitionRotateByInput: RotateControlOutputEvent;\n transitionRotateToInput: RotateControlOutputEvent;\n lockedOnObjectRotateByInput: RotateControlOutputEvent;\n lockedOnObjectRotateToInput: RotateControlOutputEvent;\n};\n\n/**\n * State machine controlling rotation input flow and animations.\n *\n * @remarks\n * This state machine manages the lifecycle of rotation operations:\n * - **User input handling**: Accepts or blocks user rotation gestures based on state\n * - **Animation control**: Manages smooth rotate-to animations\n * - **Object tracking**: Supports locking camera to follow objects with rotation\n *\n * **State transitions:**\n * - `ACCEPTING_USER_INPUT` → `TRANSITION`: Start animation (`initateTransition`)\n * - `ACCEPTING_USER_INPUT` → `LOCKED_ON_OBJECT`: Lock to object (`lockedOnObjectRotate...`)\n * - `TRANSITION` → `ACCEPTING_USER_INPUT`: User input interrupts animation\n * - `LOCKED_ON_OBJECT` → `ACCEPTING_USER_INPUT`: Unlock (`unlock` event)\n *\n * Helper methods simplify event dispatching without memorizing event names.\n *\n * @example\n * ```typescript\n * const stateMachine = createDefaultRotateControlStateMachine(cameraRig);\n *\n * // User rotates - accepted in ACCEPTING_USER_INPUT state\n * const result = stateMachine.notifyRotateByInput(Math.PI / 4);\n *\n * // Start animation - transitions to TRANSITION state\n * stateMachine.notifyRotateToAnimationInput(Math.PI);\n *\n * // User input now blocked while animating\n * ```\n *\n * @category Input Flow Control\n * @see {@link createDefaultRotateControlStateMachine} for factory function\n */\nexport class RotateControlStateMachine extends TemplateStateMachine<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n> {\n constructor(\n states: Record<\n RotateControlStates,\n State<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n >\n >,\n initialState: RotateControlStates,\n context: BaseContext\n ) {\n super(states, initialState, context);\n }\n\n /**\n * Notifies the state machine of user rotation input.\n *\n * @param diff - Rotation angle delta in radians\n * @returns Event handling result with output event\n *\n * @remarks\n * Dispatches `userRotateByInput` event. Accepted in `ACCEPTING_USER_INPUT` and `TRANSITION` states,\n * where it may transition back to `ACCEPTING_USER_INPUT` (user interrupting animation).\n */\n notifyRotateByInput(diff: number) {\n return this.happens('userRotateByInput', { diff: diff });\n }\n\n /**\n * Initiates a rotation animation to a target angle.\n *\n * @param target - Target rotation angle in radians\n * @returns Event handling result\n *\n * @remarks\n * Dispatches `transitionRotateToInput` event, starting a rotation animation.\n * Transitions to `TRANSITION` state where animation updates occur.\n */\n notifyRotateToAnimationInput(target: number) {\n return this.happens('transitionRotateToInput', { target: target });\n }\n\n /**\n * Initiates transition to `TRANSITION` state.\n *\n * @remarks\n * Forces state change to begin animation or transition sequence.\n * Called when starting programmatic camera movements.\n */\n initateTransition(): void {\n this.happens('initateTransition');\n }\n}\n\n/**\n * State implementation for accepting user rotation input (idle/normal state).\n * Accepts user rotation input and can transition to animation or locked states.\n * @category Input Flow Control\n */\nexport class RotationAcceptingUserInputState extends TemplateState<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n> {\n constructor() {\n super();\n }\n\n protected _eventReactions: EventReactions<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n > = {\n userRotateByInput: {\n action: this.userRotateByInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n userRotateToInput: {\n action: this.userRotateToInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n lockedOnObjectRotateByInput: {\n action: this.lockedOnObjectRotateByInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n lockedOnObjectRotateToInput: {\n action: this.lockedOnObjectRotateToInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n initateTransition: { action: NO_OP, defaultTargetState: 'TRANSITION' },\n };\n\n userRotateByInputHandler(\n context: BaseContext,\n payload: RotateByInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateBy', delta: payload.diff };\n }\n\n userRotateToInputHandler(\n context: BaseContext,\n payload: RotateToInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateTo', target: payload.target };\n }\n\n lockedOnObjectRotateByInputHandler(\n context: BaseContext,\n payload: RotateByInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateBy', delta: payload.diff };\n }\n\n lockedOnObjectRotateToInputHandler(\n context: BaseContext,\n payload: RotateToInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateTo', target: payload.target };\n }\n}\n\n/**\n * State implementation for rotation animations and transitions.\n * Processes animation updates and allows user input to interrupt.\n * @category Input Flow Control\n */\nexport class RotationTransitionState extends TemplateState<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n> {\n constructor() {\n super();\n }\n\n protected _eventReactions: EventReactions<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n > = {\n userRotateByInput: {\n action: this.userRotateByInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n userRotateToInput: {\n action: this.userRotateToInputHandler,\n defaultTargetState: 'ACCEPTING_USER_INPUT',\n },\n transitionRotateByInput: {\n action: this.transitionRotateByInputHandler,\n defaultTargetState: 'TRANSITION',\n },\n transitionRotateToInput: {\n action: this.transitionRotateToInputHandler,\n defaultTargetState: 'TRANSITION',\n },\n lockedOnObjectRotateByInput: {\n action: this.lockedOnObjectRotateByInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n lockedOnObjectRotateToInput: {\n action: this.lockedOnObjectRotateToInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n };\n\n userRotateByInputHandler(\n context: BaseContext,\n payload: RotateByInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateBy', delta: payload.diff };\n }\n\n userRotateToInputHandler(\n context: BaseContext,\n payload: RotateToInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateTo', target: payload.target };\n }\n\n transitionRotateByInputHandler(\n context: BaseContext,\n payload: RotateByInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateBy', delta: payload.diff };\n }\n\n transitionRotateToInputHandler(\n context: BaseContext,\n payload: RotateToInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateTo', target: payload.target };\n }\n\n lockedOnObjectRotateByInputHandler(\n context: BaseContext,\n payload: RotateByInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateBy', delta: payload.diff };\n }\n\n lockedOnObjectRotateToInputHandler(\n context: BaseContext,\n payload: RotateToInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateTo', target: payload.target };\n }\n}\n\n/**\n * State implementation for camera locked to follow an object rotation.\n * Only accepts locked object rotation events until unlocked.\n * @category Input Flow Control\n */\nexport class RotationLockedOnObjectState extends TemplateState<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n> {\n constructor() {\n super();\n }\n\n protected _eventReactions: EventReactions<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n > = {\n unlock: { action: NO_OP, defaultTargetState: 'ACCEPTING_USER_INPUT' },\n lockedOnObjectRotateByInput: {\n action: this.lockedOnObjectRotateByInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n lockedOnObjectRotateToInput: {\n action: this.lockedOnObjectRotateToInputHandler,\n defaultTargetState: 'LOCKED_ON_OBJECT',\n },\n };\n\n lockedOnObjectRotateByInputHandler(\n context: BaseContext,\n payload: RotateByInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateBy', delta: payload.diff };\n }\n\n lockedOnObjectRotateToInputHandler(\n context: BaseContext,\n payload: RotateToInputEventPayload\n ): RotateControlOutputEvent {\n return { type: 'rotateTo', target: payload.target };\n }\n}\n\n/**\n * Creates the default set of rotation control states.\n * @returns State instances for all rotation control states\n * @category Input Flow Control\n */\nexport function createDefaultRotateControlStates(): Record<\n RotateControlStates,\n State<\n RotateEventPayloadMapping,\n BaseContext,\n RotateControlStates,\n RotateControlOutputMapping\n >\n> {\n return {\n ACCEPTING_USER_INPUT: new RotationAcceptingUserInputState(),\n TRANSITION: new RotationTransitionState(),\n LOCKED_ON_OBJECT: new RotationLockedOnObjectState(),\n };\n}\n\n/**\n * Creates a rotation control state machine with default configuration.\n *\n * @param context - Camera rig or context for rotation operations\n * @returns Configured rotation control state machine starting in `ACCEPTING_USER_INPUT` state\n *\n * @remarks\n * Factory function for creating a rotation state machine with sensible defaults.\n * The machine starts in `ACCEPTING_USER_INPUT` state, ready to accept user rotation gestures.\n *\n * @example\n * ```typescript\n * const cameraRig = createDefaultCameraRig(camera);\n * const rotateSM = createDefaultRotateControlStateMachine(cameraRig);\n * ```\n *\n * @category Input Flow Control\n */\nexport function createDefaultRotateControlStateMachine(\n context: BaseContext = { setup: NO_OP, cleanup: NO_OP }\n): RotateControlStateMachine {\n return new RotateControlStateMachine(\n createDefaultRotateControlStates(),\n 'ACCEPTING_USER_INPUT',\n context\n );\n}\n",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"/**\n * Type definition for an observer callback function.\n *\n * @typeParam T - Tuple type of arguments passed to the observer\n *\n * @remarks\n * Observers are callbacks that get notified when an Observable emits data.\n * The generic type T is a tuple representing the arguments passed to the callback.\n *\n * @example\n * ```typescript\n * // Observer that receives a single string\n * const stringObserver: Observer<[string]> = (message) => {\n * console.log(message);\n * };\n *\n * // Observer that receives multiple arguments\n * const multiObserver: Observer<[number, string, boolean]> = (num, str, flag) => {\n * console.log(num, str, flag);\n * };\n * ```\n *\n * @category Observable Pattern\n */\nexport type Observer<T extends any[]> = (...data: T) => void;\n\n/**\n * Options for subscribing to an Observable.\n *\n * @property signal - Optional AbortSignal for automatic unsubscription\n *\n * @remarks\n * Subscription options allow for automatic cleanup of subscriptions using\n * the AbortController API. When the signal is aborted, the subscription\n * is automatically removed.\n *\n * @example\n * ```typescript\n * const controller = new AbortController();\n *\n * observable.subscribe(\n * (data) => console.log(data),\n * { signal: controller.signal }\n * );\n *\n * // Later, abort to unsubscribe\n * controller.abort();\n * ```\n *\n * @category Observable Pattern\n */\nexport interface SubscriptionOptions {\n signal?: AbortSignal;\n}\n\n/**\n * Interface for the Observable pattern implementation.\n *\n * @typeParam T - Tuple type of data emitted to observers\n *\n * @remarks\n * Observables allow multiple observers to subscribe and receive notifications\n * when data is emitted. This is the pub-sub pattern for event handling.\n *\n * Implementations can be synchronous or asynchronous:\n * - {@link SynchronousObservable}: Notifies observers immediately\n * - {@link AsyncObservable}: Notifies observers via microtasks\n *\n * @category Observable Pattern\n */\nexport interface Observable<T extends any[]> {\n subscribe(observer: Observer<T>, options?: SubscriptionOptions): () => void;\n notify(...data: T): void;\n}\n\n/**\n * Asynchronous Observable implementation that notifies observers via microtasks.\n *\n * @typeParam T - Tuple type of data emitted to observers\n *\n * @remarks\n * This Observable uses `queueMicrotask` to defer observer notifications,\n * ensuring they execute after the current execution context completes but\n * before the next task. This prevents recursive notification issues and\n * allows the notifier to complete before observers run.\n *\n * Use AsyncObservable when:\n * - You want to prevent recursion issues in notifications\n * - Observer execution should not block the notifier\n * - You need guaranteed async behavior\n *\n * @example\n * ```typescript\n * const observable = new AsyncObservable<[string]>();\n *\n * observable.subscribe((message) => {\n * console.log('Observer received:', message);\n * });\n *\n * console.log('Before notify');\n * observable.notify('Hello');\n * console.log('After notify');\n *\n * // Output:\n * // Before notify\n * // After notify\n * // Observer received: Hello\n * ```\n *\n * @category Observable Pattern\n * @see {@link SynchronousObservable} for synchronous notifications\n */\nexport class AsyncObservable<T extends any[]> implements Observable<T> {\n private observers: Observer<T>[] = [];\n\n /**\n * Subscribes an observer to receive notifications.\n *\n * @param observer - The callback function to be notified\n * @param options - Optional subscription options including AbortSignal\n * @returns Unsubscribe function to remove this observer\n *\n * @remarks\n * If an AbortSignal is provided and is already aborted, the observer\n * is not added and the returned unsubscribe function is a no-op.\n */\n subscribe(\n observer: Observer<T>,\n options?: SubscriptionOptions\n ): () => void {\n this.observers.push(observer);\n\n // Handle AbortSignal\n if (options?.signal) {\n // If signal is already aborted, don't add the observer\n if (options.signal.aborted) {\n this.observers = this.observers.filter(o => o !== observer);\n return () => { };\n }\n\n // Add abort handler\n const abortHandler = () => {\n this.observers = this.observers.filter(o => o !== observer);\n options.signal?.removeEventListener('abort', abortHandler);\n };\n\n options.signal.addEventListener('abort', abortHandler);\n }\n\n // Return unsubscribe function\n return () => {\n this.observers = this.observers.filter(o => o !== observer);\n };\n }\n\n /**\n * Notifies all observers with the provided data asynchronously.\n *\n * @param data - The data to pass to all observers\n *\n * @remarks\n * Each observer is called via `queueMicrotask`, ensuring async execution.\n * This method returns immediately; observers run later in the event loop.\n */\n notify(...data: T): void {\n this.observers.forEach(observer =>\n queueMicrotask(() => observer(...data))\n );\n }\n}\n\n/**\n * Synchronous Observable implementation that notifies observers immediately.\n *\n * @typeParam T - Tuple type of data emitted to observers\n *\n * @remarks\n * This Observable calls all observers synchronously and immediately when\n * `notify()` is called. The notify method doesn't return until all observers\n * have executed.\n *\n * Use SynchronousObservable when:\n * - You need immediate, guaranteed execution of observers\n * - Observer execution order matters and must be predictable\n * - You're in a performance-critical path (no async overhead)\n *\n * Caution: Can lead to recursion issues if observers trigger notifications.\n *\n * @example\n * ```typescript\n * const observable = new SynchronousObservable<[string]>();\n *\n * observable.subscribe((message) => {\n * console.log('Observer received:', message);\n * });\n *\n * console.log('Before notify');\n * observable.notify('Hello');\n * console.log('After notify');\n *\n * // Output:\n * // Before notify\n * // Observer received: Hello\n * // After notify\n * ```\n *\n * @category Observable Pattern\n * @see {@link AsyncObservable} for asynchronous notifications\n */\nexport class SynchronousObservable<T extends any[]> implements Observable<T> {\n private observers: Observer<T>[] = [];\n\n /**\n * Subscribes an observer to receive notifications.\n *\n * @param observer - The callback function to be notified\n * @param options - Optional subscription options including AbortSignal\n * @returns Unsubscribe function to remove this observer\n *\n * @remarks\n * If an AbortSignal is provided and is already aborted, the observer\n * is not added and the returned unsubscribe function is a no-op.\n */\n subscribe(\n observer: Observer<T>,\n options?: SubscriptionOptions\n ): () => void {\n this.observers.push(observer);\n\n // Handle AbortSignal\n if (options?.signal) {\n // If signal is already aborted, don't add the observer\n if (options.signal.aborted) {\n this.observers = this.observers.filter(o => o !== observer);\n return () => { };\n }\n\n // Add abort handler\n const abortHandler = () => {\n this.observers = this.observers.filter(o => o !== observer);\n options.signal?.removeEventListener('abort', abortHandler);\n };\n\n options.signal.addEventListener('abort', abortHandler);\n }\n\n // Return unsubscribe function\n return () => {\n this.observers = this.observers.filter(o => o !== observer);\n };\n }\n\n /**\n * Notifies all observers with the provided data synchronously.\n *\n * @param data - The data to pass to all observers\n *\n * @remarks\n * Each observer is called immediately in order. This method blocks until\n * all observers have completed execution.\n */\n notify(...data: T): void {\n this.observers.forEach(observer => observer(...data));\n }\n}\n\n// Usage example\n// const observable = new Observable<[string]>();\n\n// Create an AbortController\n// const controller = new AbortController();\n\n// Subscribe with AbortSignal\n// const unsubscribe = observable.subscribe(\n// (data) => console.log('Received:', data),\n// { signal: controller.signal }\n// );\n\n// Example notifications\n// observable.notify('Hello!'); // Observer will receive this\n\n// Abort the subscription\n// controller.abort();\n\n// Observer won't receive this notification\n// observable.notify('World!');\n\n// Alternative way to unsubscribe using the returned function\n// unsubscribe();\n",
|
|
66
66
|
"import { Point } from '@ue-too/math';\n\nimport {\n AsyncObservable,\n Observable,\n Observer,\n SubscriptionOptions,\n} from '../utils/observable';\n\n/**\n * Payload for camera pan (position change) events.\n *\n * @property diff - The displacement vector from previous to new position\n *\n * @category Camera\n */\nexport type CameraPanEventPayload = {\n /** Movement delta in world coordinates */\n diff: Point;\n};\n\n/**\n * Payload for camera zoom (scale change) events.\n *\n * @property deltaZoomAmount - Change in zoom level (positive = zoom in, negative = zoom out)\n *\n * @category Camera\n */\nexport type CameraZoomEventPayload = {\n /** Change in zoom level from previous value */\n deltaZoomAmount: number;\n};\n\n/**\n * Payload for camera rotation events.\n *\n * @property deltaRotation - Change in rotation angle in radians\n *\n * @category Camera\n */\nexport type CameraRotateEventPayload = {\n /** Change in rotation from previous value, in radians */\n deltaRotation: number;\n};\n\n/**\n * Mapping of camera event names to their payload types.\n * Used for type-safe event subscription.\n *\n * @category Camera\n */\nexport type CameraEventMap = {\n /** Position change event */\n pan: CameraPanEventPayload;\n /** Zoom level change event */\n zoom: CameraZoomEventPayload;\n /** Rotation change event */\n rotate: CameraRotateEventPayload;\n /** Any camera change event (union of pan, zoom, rotate) */\n all: AllCameraEventPayload;\n};\n\n/**\n * Rotation event with discriminated type field for 'all' event handling.\n * Includes type discriminator and rotation payload.\n *\n * @category Camera\n */\nexport type CameraRotateEvent = {\n /** Event type discriminator */\n type: 'rotate';\n} & CameraRotateEventPayload;\n\n/**\n * Pan event with discriminated type field for 'all' event handling.\n * Includes type discriminator and pan payload.\n *\n * @category Camera\n */\nexport type CameraPanEvent = {\n /** Event type discriminator */\n type: 'pan';\n} & CameraPanEventPayload;\n\n/**\n * Zoom event with discriminated type field for 'all' event handling.\n * Includes type discriminator and zoom payload.\n *\n * @category Camera\n */\nexport type CameraZoomEvent = {\n /** Event type discriminator */\n type: 'zoom';\n} & CameraZoomEventPayload;\n\n/**\n * Snapshot of camera state at the time an event occurs.\n * Passed to all event callbacks alongside the event payload.\n *\n * @category Camera\n */\nexport type CameraState = {\n /** Camera position in world coordinates */\n position: Point;\n /** Current zoom level */\n zoomLevel: number;\n /** Current rotation in radians */\n rotation: number;\n};\n\n/**\n * Union type of all camera event payloads with type discriminators.\n * Used for the 'all' event which fires for any camera change.\n *\n * @category Camera\n */\nexport type AllCameraEventPayload =\n | CameraRotateEvent\n | CameraPanEvent\n | CameraZoomEvent;\n\n/**\n * Generic callback function type for camera events.\n *\n * @typeParam K - The event type key from CameraEventMap\n * @param event - The event payload specific to this event type\n * @param cameraState - Current camera state snapshot at the time of the event\n *\n * @category Camera\n */\nexport type Callback<K extends keyof CameraEventMap> = (\n event: CameraEventMap[K],\n cameraState: CameraState\n) => void;\n\n/**\n * Callback function type specifically for the 'all' camera event.\n * Receives a discriminated union of all camera events.\n *\n * @category Camera\n */\nexport type ConslidateCallback = (\n payload: AllCameraEventPayload,\n cameraState: CameraState\n) => void;\n\n/**\n * Function returned by event subscriptions that unsubscribes the callback when called.\n *\n * @category Camera\n */\nexport type UnSubscribe = () => void;\n\n/**\n * Callback type for pan (position change) events.\n *\n * @category Camera\n */\nexport type PanObserver = Callback<'pan'>;\n\n/**\n * Callback type for zoom (scale change) events.\n *\n * @category Camera\n */\nexport type ZoomObserver = Callback<'zoom'>;\n\n/**\n * Callback type for rotation events.\n *\n * @category Camera\n */\nexport type RotateObserver = Callback<'rotate'>;\n\n/**\n * Callback type for the 'all' event that fires on any camera change.\n *\n * @category Camera\n */\nexport type AllObserver = Callback<'all'>;\n\n/**\n * Event publisher for camera state changes using the Observable pattern.\n * Manages subscriptions and notifications for pan, zoom, and rotate events.\n *\n * @remarks\n * This class is used internally by {@link DefaultBoardCamera} to implement the event system.\n * You typically don't instantiate this directly unless building custom camera implementations.\n *\n * Each specific event (pan, zoom, rotate) also triggers the 'all' event, allowing\n * listeners to subscribe to any camera change with a single handler.\n *\n * @example\n * ```typescript\n * const publisher = new CameraUpdatePublisher();\n *\n * // Subscribe to pan events\n * publisher.on('pan', (event, state) => {\n * console.log('Camera panned:', event.diff);\n * });\n *\n * // Notify subscribers of a pan event\n * publisher.notifyPan(\n * { diff: { x: 10, y: 20 } },\n * { position: { x: 100, y: 200 }, zoomLevel: 1, rotation: 0 }\n * );\n * ```\n *\n * @category Camera\n * @see {@link DefaultBoardCamera} for the primary consumer of this class\n */\nexport class CameraUpdatePublisher {\n private pan: Observable<Parameters<Callback<'pan'>>>;\n private zoom: Observable<Parameters<Callback<'zoom'>>>;\n private rotate: Observable<Parameters<Callback<'rotate'>>>;\n private all: Observable<Parameters<Callback<'all'>>>;\n\n /**\n * Creates a new camera event publisher with async observables for each event type.\n */\n constructor() {\n this.pan = new AsyncObservable<Parameters<Callback<'pan'>>>();\n this.zoom = new AsyncObservable<Parameters<Callback<'zoom'>>>();\n this.rotate = new AsyncObservable<Parameters<Callback<'rotate'>>>();\n this.all = new AsyncObservable<Parameters<Callback<'all'>>>();\n }\n\n /**\n * Notifies all pan event subscribers.\n * Also triggers the 'all' event with type discrimination.\n *\n * @param event - Pan event payload containing position delta\n * @param cameraState - Current camera state snapshot\n */\n notifyPan(event: CameraEventMap['pan'], cameraState: CameraState): void {\n this.pan.notify(event, cameraState);\n this.all.notify({ type: 'pan', diff: event.diff }, cameraState);\n }\n\n /**\n * Notifies all zoom event subscribers.\n * Also triggers the 'all' event with type discrimination.\n *\n * @param event - Zoom event payload containing zoom delta\n * @param cameraState - Current camera state snapshot\n */\n notifyZoom(event: CameraEventMap['zoom'], cameraState: CameraState): void {\n this.zoom.notify(event, cameraState);\n this.all.notify(\n { type: 'zoom', deltaZoomAmount: event.deltaZoomAmount },\n cameraState\n );\n }\n\n /**\n * Notifies all rotation event subscribers.\n * Also triggers the 'all' event with type discrimination.\n *\n * @param event - Rotation event payload containing rotation delta\n * @param cameraState - Current camera state snapshot\n */\n notifyRotate(\n event: CameraEventMap['rotate'],\n cameraState: CameraState\n ): void {\n this.rotate.notify(event, cameraState);\n this.all.notify(\n { type: 'rotate', deltaRotation: event.deltaRotation },\n cameraState\n );\n }\n\n /**\n * Subscribes to camera events with type-safe callbacks and optional AbortController support.\n *\n * @typeParam K - The event type key from CameraEventMap\n * @param eventName - Event type to subscribe to ('pan', 'zoom', 'rotate', or 'all')\n * @param callback - Function called when the event occurs\n * @param options - Optional subscription options including AbortController signal\n * @returns Function that unsubscribes this callback when called\n *\n * @throws Error if an invalid event name is provided\n *\n * @remarks\n * Use the AbortController pattern for managing multiple subscriptions:\n *\n * @example\n * ```typescript\n * // Basic subscription\n * const unsubscribe = publisher.on('pan', (event, state) => {\n * console.log(`Panned by (${event.diff.x}, ${event.diff.y})`);\n * });\n *\n * // Later: unsubscribe\n * unsubscribe();\n *\n * // Using AbortController for batch management\n * const controller = new AbortController();\n * publisher.on('pan', handlePan, { signal: controller.signal });\n * publisher.on('zoom', handleZoom, { signal: controller.signal });\n *\n * // Unsubscribe all at once\n * controller.abort();\n *\n * // Subscribe to all events with type discrimination\n * publisher.on('all', (event, state) => {\n * switch (event.type) {\n * case 'pan':\n * console.log('Pan:', event.diff);\n * break;\n * case 'zoom':\n * console.log('Zoom:', event.deltaZoomAmount);\n * break;\n * case 'rotate':\n * console.log('Rotate:', event.deltaRotation);\n * break;\n * }\n * });\n * ```\n */\n on<K extends keyof CameraEventMap>(\n eventName: K,\n callback: (event: CameraEventMap[K], cameraState: CameraState) => void,\n options?: SubscriptionOptions\n ): UnSubscribe {\n switch (eventName) {\n case 'pan':\n return this.pan.subscribe(\n callback as Observer<Parameters<Callback<'pan'>>>,\n options\n );\n case 'zoom':\n return this.zoom.subscribe(\n callback as Observer<Parameters<Callback<'zoom'>>>,\n options\n );\n case 'rotate':\n return this.rotate.subscribe(\n callback as Observer<Parameters<Callback<'rotate'>>>,\n options\n );\n case 'all':\n return this.all.subscribe(\n callback as Observer<Parameters<Callback<'all'>>>,\n options\n );\n default:\n throw new Error(`Invalid event name: ${eventName}`);\n }\n }\n}\n",
|
|
67
67
|
"import type { Point } from '@ue-too/math';\n\nimport {\n CameraMux,\n CameraMuxPanOutput,\n CameraMuxRotationOutput,\n CameraMuxZoomOutput,\n} from '../camera/camera-mux';\nimport { CameraRig } from '../camera/camera-rig';\nimport { KmtOutputEvent } from './input-state-machine/kmt-input-state-machine';\nimport { TouchOutputEvent } from './input-state-machine/touch-input-state-machine';\nimport { UserInputPublisher } from './raw-input-publisher/raw-input-publisher';\n\n/**\n * Union type of all output events from state machines.\n *\n * @remarks\n * This type represents the unified output from both KMT (Keyboard/Mouse/Trackpad) and Touch state machines.\n * By unifying these outputs, the orchestrator can handle events from different input modalities uniformly.\n *\n * @category Input Interpretation\n */\nexport type OutputEvent = KmtOutputEvent | TouchOutputEvent;\n\n/**\n * Central orchestrator that coordinates input interpretation and camera control for the infinite canvas.\n *\n * @remarks\n * The InputOrchestrator serves as the mediator between input state machines and camera control systems.\n * It implements a permission-based architecture where:\n *\n * 1. **Event Flow**: State machines produce high-level gesture events (pan, zoom, rotate)\n * 2. **Permission Check**: Events are sent to CameraMux for permission validation\n * 3. **Execution**: If allowed, gestures are executed on CameraRig\n * 4. **Broadcasting**: Raw events are simultaneously broadcast to observers via UserInputPublisher\n *\n * **Architecture Pattern**:\n * ```\n * State Machines → Orchestrator → CameraMux (permission) → CameraRig (execution)\n * ↓\n * UserInputPublisher (observers)\n * ```\n *\n * This design decouples state machines from camera control, allowing state machines to focus solely\n * on gesture recognition while the orchestrator handles the complexities of camera coordination,\n * permission management, and event distribution.\n *\n * **Key Benefits**:\n * - Single point of control for all camera operations\n * - State machines remain unaware of camera implementation\n * - Parallel path for observers to react to raw input events\n * - Consistent handling of KMT and Touch input modalities\n *\n * @category Input Interpretation\n *\n * @example\n * ```typescript\n * // Create the orchestrator\n * const cameraMux = new CameraMux();\n * const cameraRig = new CameraRig(camera, viewport);\n * const publisher = new RawUserInputPublisher();\n * const orchestrator = new InputOrchestrator(cameraMux, cameraRig, publisher);\n *\n * // State machines send their output to the orchestrator\n * const kmtStateMachine = createKmtInputStateMachine(kmtContext);\n * const result = kmtStateMachine.happens(\"leftPointerMove\", {x: 100, y: 200});\n * orchestrator.processInputEventOutput(result.output);\n *\n * // Observers can subscribe to raw input events\n * publisher.on(\"pan\", (event) => {\n * console.log(\"Pan gesture detected:\", event.diff);\n * });\n * ```\n */\nexport class InputOrchestrator {\n private _cameraMux: CameraMux;\n private _cameraRig: CameraRig;\n private _publisher?: UserInputPublisher;\n\n /**\n * Creates a new InputOrchestrator instance.\n *\n * @param cameraMux - The camera multiplexer that validates and controls camera operation permissions\n * @param cameraRig - The camera rig that executes camera transformations\n * @param publisher - Optional publisher for broadcasting raw input events to observers\n *\n * @remarks\n * The publisher parameter is optional to support scenarios where event broadcasting is not needed.\n * When provided, all input events are broadcast in parallel to camera control execution.\n */\n constructor(\n cameraMux: CameraMux,\n cameraRig: CameraRig,\n publisher?: UserInputPublisher\n ) {\n this._cameraMux = cameraMux;\n this._cameraRig = cameraRig;\n this._publisher = publisher;\n }\n\n /**\n * Processes output events from state machines and routes them to camera control and observers.\n *\n * @param output - The output from a state machine, can be a single event, array of events, or any value\n *\n * @remarks\n * This method serves as the main entry point for state machine outputs. It:\n * 1. Validates whether the output is a valid OutputEvent\n * 2. Handles both single events and arrays of events\n * 3. Routes each valid event through the camera control pipeline\n * 4. Broadcasts events to observers via the publisher\n *\n * Called by event parsers after the state machine processes an input and produces output.\n * The method uses type guards to ensure type safety when handling dynamic output types.\n *\n * @example\n * ```typescript\n * const result = stateMachine.happens(\"scroll\", {deltaX: 0, deltaY: 10, x: 100, y: 200});\n * orchestrator.processInputEventOutput(result.output);\n * ```\n */\n public processInputEventOutput(output: any): void {\n // Handle different output types\n if (this.isOutputEvent(output)) {\n this.handleStateMachineOutput(output);\n } else if (Array.isArray(output)) {\n // Handle multiple outputs\n output.forEach(item => {\n if (this.isOutputEvent(item)) {\n this.handleStateMachineOutput(item);\n }\n });\n }\n }\n\n public processInputEvent(input: OutputEvent): void {\n this.handleStateMachineOutput(input);\n }\n\n /**\n * Type guard to check if an output value is a valid OutputEvent.\n *\n * @param output - The value to check\n * @returns True if the output is a valid OutputEvent with a type property\n *\n * @remarks\n * This type guard ensures type safety when processing state machine outputs.\n * It checks for the presence of a 'type' property which is common to all OutputEvent variants.\n */\n private isOutputEvent(output: any): output is OutputEvent {\n return output && typeof output === 'object' && 'type' in output;\n }\n\n /**\n * Handles individual output events from state machines by routing to camera control and observers.\n *\n * @param event - The output event from a state machine (pan, zoom, rotate, cursor, or none)\n *\n * @remarks\n * This method implements a dual-path architecture:\n *\n * **Parallel Path 1 - Observer Notification**:\n * - Immediately broadcasts the event to all subscribers via UserInputPublisher\n * - This allows external systems to react to user input in real-time\n * - Independent of camera permission/execution\n *\n * **Parallel Path 2 - Camera Control**:\n * - Requests permission from CameraMux for the operation\n * - CameraMux may modify the event (e.g., clamp values, deny operation)\n * - If permitted, executes the transformation on CameraRig\n *\n * Event types:\n * - **pan**: Translates the camera viewport\n * - **zoom**: Scales the camera around an anchor point\n * - **rotate**: Rotates the camera view\n * - **cursor**: Changes cursor appearance (handled by state machine)\n * - **none**: No operation needed\n */\n private handleStateMachineOutput(event: OutputEvent): void {\n switch (event.type) {\n case 'pan':\n // Publish to observers (parallel path)\n this._publisher?.notifyPan(event.delta);\n // Ask CameraMux for permission and process its output\n const panOutput = this._cameraMux.notifyPanInput(event.delta);\n this.processPanMuxOutput(panOutput);\n break;\n case 'zoom':\n // Publish to observers (parallel path)\n this._publisher?.notifyZoom(\n event.delta,\n event.anchorPointInViewPort\n );\n // Ask CameraMux for permission and process its output\n const zoomOutput = this._cameraMux.notifyZoomInput(\n event.delta,\n event.anchorPointInViewPort\n );\n this.processZoomMuxOutput(zoomOutput);\n break;\n case 'rotate':\n // Publish to observers (parallel path)\n this._publisher?.notifyRotate(event.deltaRotation);\n // Ask CameraMux for permission and process its output\n const rotateOutput = this._cameraMux.notifyRotationInput(\n event.deltaRotation\n );\n this.processRotateMuxOutput(rotateOutput);\n break;\n case 'cursor':\n // Cursor changes are handled by the state machine's uponEnter/beforeExit methods\n // This case is here for future extension\n break;\n case 'none':\n // No action needed\n break;\n }\n }\n\n /**\n * Processes pan output from CameraMux and executes the pan operation if permitted.\n *\n * @param output - The pan output from CameraMux containing permission and potentially modified delta\n *\n * @remarks\n * CameraMux may deny the operation (allowPassThrough = false) or modify the delta value\n * to enforce constraints like viewport bounds or animation states.\n * Only when permission is granted does the pan execute on CameraRig.\n */\n private processPanMuxOutput(output: CameraMuxPanOutput): void {\n if (output.allowPassThrough) {\n this._cameraRig.panByViewPort(output.delta);\n }\n }\n\n /**\n * Processes zoom output from CameraMux and executes the zoom operation if permitted.\n *\n * @param output - The zoom output from CameraMux containing permission and potentially modified parameters\n *\n * @remarks\n * CameraMux may deny the operation or modify zoom parameters to enforce constraints\n * like minimum/maximum zoom levels or animation states. The anchor point determines\n * the center of the zoom transformation in viewport coordinates.\n */\n private processZoomMuxOutput(output: CameraMuxZoomOutput): void {\n if (output.allowPassThrough) {\n if (output.anchorPoint) {\n this._cameraRig.zoomByAt(output.delta, output.anchorPoint);\n } else {\n this._cameraRig.zoomBy(output.delta);\n }\n }\n }\n\n /**\n * Processes rotation output from CameraMux and executes the rotation operation if permitted.\n *\n * @param output - The rotation output from CameraMux containing permission and potentially modified delta\n *\n * @remarks\n * CameraMux may deny the operation or modify the rotation delta to enforce constraints\n * like rotation limits or animation states.\n */\n private processRotateMuxOutput(output: CameraMuxRotationOutput): void {\n if (output.allowPassThrough) {\n this._cameraRig.rotateBy(output.delta);\n }\n }\n\n /**\n * Gets the UserInputPublisher for direct access to event subscription.\n *\n * @returns The publisher instance, or undefined if not configured\n *\n * @remarks\n * Allows external code to subscribe to raw input events without going through the orchestrator.\n */\n get publisher(): UserInputPublisher | undefined {\n return this._publisher;\n }\n\n /**\n * Gets the CameraMux instance for direct access to permission control.\n *\n * @returns The camera multiplexer instance\n */\n get cameraMux(): CameraMux {\n return this._cameraMux;\n }\n\n /**\n * Sets a new CameraMux instance.\n *\n * @param cameraMux - The new camera multiplexer to use for permission control\n *\n * @remarks\n * Allows dynamic reconfiguration of camera permission logic at runtime.\n */\n set cameraMux(cameraMux: CameraMux) {\n this._cameraMux = cameraMux;\n }\n}\n",
|
|
68
|
-
"import { BaseContext, NO_OP } from '@ue-too/being';\nimport { Point } from '@ue-too/math';\n\nimport {\n CanvasPositionDimensionPublisher,\n Observable,\n Observer,\n SubscriptionOptions,\n SvgPositionDimensionPublisher,\n SynchronousObservable,\n getTrueRect,\n} from '../../utils';\n\n/**\n * Cursor styles used to provide visual feedback for different input states.\n *\n * @remarks\n * These cursor styles indicate the current interaction mode to users:\n * - **GRAB**: Indicates the canvas is ready to be panned (spacebar pressed, no drag yet)\n * - **GRABBING**: Indicates active panning is in progress\n * - **DEFAULT**: Normal cursor state when no special interaction is active\n *\n * @category Input State Machine\n */\nexport enum CursorStyle {\n GRAB = 'grab',\n DEFAULT = 'default',\n GRABBING = 'grabbing',\n}\n\n/**\n * Canvas dimension and position information.\n *\n * @property width - The canvas width in CSS pixels\n * @property height - The canvas height in CSS pixels\n * @property position - The top-left position of the canvas in window coordinates\n *\n * @category Input State Machine\n */\nexport type CanvasDimensions = {\n width: number;\n height: number;\n position: Point;\n};\n\n/**\n * Abstraction interface for canvas element access and manipulation.\n *\n * @remarks\n * This interface provides a decoupled way to access canvas properties without direct DOM access.\n * Multiple implementations exist to support different use cases:\n * - **CanvasProxy**: Full implementation for HTML canvas elements with dimension tracking\n * - **SvgProxy**: Implementation for SVG elements\n * - **DummyCanvas**: No-op implementation for web worker contexts\n * - **WorkerRelayCanvas**: Relays canvas dimension updates to web workers\n * - **CanvasCacheInWebWorker**: Caches canvas dimensions within a web worker\n *\n * The abstraction enables:\n * - Coordinate system transformations (window → canvas → viewport)\n * - Canvas dimension tracking without repeated DOM queries\n * - Cursor style management\n * - Support for both canvas and SVG rendering contexts\n *\n * @category Input State Machine\n */\nexport interface Canvas {\n /** The canvas width in CSS pixels */\n width: number;\n /** The canvas height in CSS pixels */\n height: number;\n /** The top-left position of the canvas in window coordinates */\n position: Point;\n /** Sets the CSS cursor style for visual feedback */\n setCursor: (style: CursorStyle) => void;\n /** Combined dimensions and position information */\n dimensions: CanvasDimensions;\n /** Whether the canvas is currently detached from the DOM */\n detached: boolean;\n /** Cleanup method to dispose of resources and event listeners */\n tearDown: () => void;\n}\n\n/**\n * No-op implementation of Canvas interface for web worker relay contexts.\n *\n * @remarks\n * This class is used when an input state machine is configured to relay events to a web worker\n * rather than perform actual canvas operations. The state machine requires a Canvas in its context,\n * but in the relay scenario, no actual canvas operations are needed - events are simply forwarded\n * to the worker thread.\n *\n * All properties return default/empty values and all methods are no-ops.\n *\n * @category Input State Machine\n *\n * @see {@link DummyKmtInputContext}\n */\nexport class DummyCanvas implements Canvas {\n width: number = 0;\n height: number = 0;\n position: Point = { x: 0, y: 0 };\n setCursor: (style: CursorStyle) => void = NO_OP;\n dimensions: { width: number; height: number; position: Point } = {\n width: 0,\n height: 0,\n position: { x: 0, y: 0 },\n };\n detached: boolean = false;\n tearDown: () => void = NO_OP;\n}\n\nexport class CanvasCacheInWebWorker implements Canvas {\n private _width: number;\n private _height: number;\n private _position: Point;\n private _postMessageFunction: typeof postMessage;\n\n constructor(postMessageFunction: typeof postMessage) {\n this._width = 0;\n this._height = 0;\n this._position = { x: 0, y: 0 };\n this._postMessageFunction = postMessageFunction;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n tearDown(): void {}\n\n set width(width: number) {\n this._width = width;\n }\n\n set height(height: number) {\n this._height = height;\n }\n\n set position(position: Point) {\n this._position = position;\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get position(): Point {\n return this._position;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n this._postMessageFunction({ type: 'setCursor', style });\n }\n\n get detached(): boolean {\n return false;\n }\n}\n\n/**\n * A proxy for the canvas element to prevent constant invoking of the getBoundingClientRect method.\n * @remarks This is mainly used as a proxy to the canvas to prevent invoking the getBoundingClientRect method on the canvas every time a pointer event is triggered or a coordinate conversion is needed. Also to autoscale the canvas buffer depending on the device pixel ratio. It's important to note that in normal circumstances, you would not need to set the size of the canvas manually; you should use the css style width and height to set the size of the canvas.\n * @category Input State Machine\n * @see {@link Canvas} for the interface that this class implements\n * @see {@link Observable} for the observable that this class emits\n * @see {@link Observer} for the observer that can subscribe to the observable\n * @see {@link SubscriptionOptions} for the options that can be passed to the subscribe method\n * @see {@link SynchronousObservable} for the synchronous observable that this class emits\n * @see {@link CanvasPositionDimensionPublisher} for the publisher that is used to publish the canvas dimensions\n */\nexport class CanvasProxy implements Canvas, Observable<[CanvasDimensions]> {\n private _width: number = 0;\n private _height: number = 0;\n private _position: Point = { x: 0, y: 0 };\n private _canvasPositionDimensionPublisher: CanvasPositionDimensionPublisher;\n private _canvas: HTMLCanvasElement | undefined;\n private _internalSizeUpdateObservable: Observable<[CanvasDimensions]>;\n\n constructor(canvas?: HTMLCanvasElement) {\n this._internalSizeUpdateObservable = new SynchronousObservable<\n [CanvasDimensions]\n >();\n\n if (canvas) {\n const boundingRect = canvas.getBoundingClientRect();\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(canvas)\n );\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._canvas = canvas;\n }\n\n this._canvasPositionDimensionPublisher =\n new CanvasPositionDimensionPublisher(canvas);\n this._canvasPositionDimensionPublisher.onPositionUpdate(rect => {\n // the rect is the canvas dimension in the DOM (the width and height attribute would need to multiply by the device pixel ratio)\n if (this._canvas == undefined) {\n console.error(\n 'is not attached to any canvas should not have getting any updates'\n );\n return;\n }\n\n this._width = rect.width;\n this._height = rect.height;\n this._position = { x: rect.left, y: rect.top };\n\n this._internalSizeUpdateObservable.notify({\n width: this._width,\n height: this._height,\n position: this._position,\n });\n });\n }\n\n subscribe(\n observer: Observer<[CanvasDimensions]>,\n options?: SubscriptionOptions\n ): () => void {\n return this._internalSizeUpdateObservable.subscribe(observer, options);\n }\n\n notify(...data: [CanvasDimensions]): void {\n this._internalSizeUpdateObservable.notify(...data);\n }\n\n get detached(): boolean {\n return this._canvas === undefined;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n get width(): number {\n return this._width;\n }\n\n /**\n * set the width of the canvas\n * the width is synonymous with the canvas style width not the canvas width\n */\n setWidth(width: number) {\n if (this._canvas) {\n this._canvas.width = width * window.devicePixelRatio;\n this._canvas.style.width = width + 'px';\n }\n }\n\n setCanvasWidth(width: number) {\n if (\n this._canvas &&\n this._canvas.style.width === '' &&\n this._canvas.style.height === ''\n ) {\n const aspectRatio = this._width / this._height;\n this._canvas.style.aspectRatio = aspectRatio.toString();\n }\n if (this._canvas && this._canvas.style.width !== '') {\n this._canvas.width = width * window.devicePixelRatio;\n } else {\n this.setWidth(width);\n }\n }\n\n /**\n * set the height of the canvas\n * the height is synonymous with the canvas style height not the canvas height\n */\n setHeight(height: number) {\n if (this._canvas) {\n this._canvas.height = height * window.devicePixelRatio;\n this._canvas.style.height = height + 'px';\n }\n }\n\n setCanvasHeight(height: number) {\n if (\n this._canvas &&\n this._canvas.style.width === '' &&\n this._canvas.style.height === ''\n ) {\n const aspectRatio = this._width / this._height;\n this._canvas.style.aspectRatio = aspectRatio.toString();\n }\n if (this._canvas && this._canvas.style.height !== '') {\n this._canvas.height = height * window.devicePixelRatio;\n } else {\n this.setHeight(height);\n }\n }\n\n get height(): number {\n return this._height;\n }\n\n get position(): Point {\n return this._position;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n if (this._canvas) {\n this._canvas.style.cursor = style;\n }\n }\n\n tearDown(): void {\n this._canvasPositionDimensionPublisher.dispose();\n this._canvas = undefined;\n this._width = 0;\n this._height = 0;\n this._position = { x: 0, y: 0 };\n }\n\n attach(canvas: HTMLCanvasElement) {\n this._canvas = canvas;\n this._canvasPositionDimensionPublisher.attach(canvas);\n }\n\n}\n\nexport class SvgProxy implements Canvas, Observable<[CanvasDimensions]> {\n private _width: number = 0;\n private _height: number = 0;\n private _position: Point = { x: 0, y: 0 };\n private _svgPositionDimensionPublisher: SvgPositionDimensionPublisher;\n private _svg: SVGSVGElement | undefined;\n private _internalSizeUpdateObservable: Observable<[CanvasDimensions]>;\n\n constructor(svg?: SVGSVGElement) {\n this._internalSizeUpdateObservable = new SynchronousObservable<\n [CanvasDimensions]\n >();\n\n if (svg) {\n const boundingRect = svg.getBoundingClientRect();\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(svg)\n );\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._svg = svg;\n }\n\n this._svgPositionDimensionPublisher = new SvgPositionDimensionPublisher(\n svg\n );\n this._svgPositionDimensionPublisher.onPositionUpdate(rect => {\n // the rect is the canvas dimension in the DOM (the width and height attribute would need to multiply by the device pixel ratio)\n if (this._svg == undefined) {\n console.error(\n 'is not attached to any canvas should not have getting any updates'\n );\n return;\n }\n\n this._width = rect.width;\n this._height = rect.height;\n this._position = { x: rect.left, y: rect.top };\n\n this._internalSizeUpdateObservable.notify({\n width: this._width,\n height: this._height,\n position: this._position,\n });\n });\n }\n\n subscribe(\n observer: Observer<[CanvasDimensions]>,\n options?: SubscriptionOptions\n ): () => void {\n return this._internalSizeUpdateObservable.subscribe(observer, options);\n }\n\n notify(...data: [CanvasDimensions]): void {\n this._internalSizeUpdateObservable.notify(...data);\n }\n\n get detached(): boolean {\n return this._svg === undefined;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n get width(): number {\n return this._width;\n }\n\n /**\n * set the width of the canvas\n * the width is synonymous with the canvas style width not the canvas width\n */\n setWidth(width: number) {\n if (this._svg) {\n this._svg.style.width = width + 'px';\n }\n }\n\n /**\n * set the height of the canvas\n * the height is synonymous with the canvas style height not the canvas height\n */\n setHeight(height: number) {\n if (this._svg) {\n this._svg.style.height = height + 'px';\n }\n }\n\n get height(): number {\n return this._height;\n }\n\n get position(): Point {\n return this._position;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n if (this._svg) {\n this._svg.style.cursor = style;\n }\n }\n\n tearDown(): void {\n this._svgPositionDimensionPublisher.dispose();\n this._svg = undefined;\n this._width = 0;\n this._height = 0;\n this._position = { x: 0, y: 0 };\n }\n\n attach(svg: SVGSVGElement) {\n this._svgPositionDimensionPublisher.attach(svg);\n this._svg = svg;\n const boundingRect = svg.getBoundingClientRect();\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(svg)\n );\n this._svg.style.width = trueRect.width + 'px';\n this._svg.style.height = trueRect.height + 'px';\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._internalSizeUpdateObservable.notify({\n width: this._width,\n height: this._height,\n position: this._position,\n });\n }\n\n}\n\n/**\n * @description A proxy for the canvas that is used to communicate with the web worker.\n * The primary purpose of this class is to cache the canvas dimensions and position in the DOM to reduce the calling of the getBoundingClientRect method.\n * This class only serves as a relay of the updated canvas dimensions and position to the web worker.\n *\n */\nexport class WorkerRelayCanvas implements Canvas {\n private _width: number;\n private _height: number;\n private _position: Point;\n private _webWorker: Worker;\n private _canvas: HTMLCanvasElement;\n private _canvasDiemsionPublisher: CanvasPositionDimensionPublisher;\n\n constructor(\n canvas: HTMLCanvasElement,\n webWorker: Worker,\n canvasDiemsionPublisher: CanvasPositionDimensionPublisher\n ) {\n const boundingRect = canvas.getBoundingClientRect();\n this._canvas = canvas;\n this._webWorker = webWorker;\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(canvas)\n );\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._webWorker.postMessage({\n type: 'setCanvasDimensions',\n width: boundingRect.width,\n height: boundingRect.height,\n position: { x: boundingRect.left, y: boundingRect.top },\n });\n canvasDiemsionPublisher.onPositionUpdate(rect => {\n this._width = rect.width;\n this._height = rect.height;\n this._position = { x: rect.left, y: rect.top };\n this._webWorker.postMessage({\n type: 'updateCanvasDimensions',\n width: rect.width,\n height: rect.height,\n position: { x: rect.left, y: rect.top },\n });\n });\n this._canvasDiemsionPublisher = canvasDiemsionPublisher;\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n tearDown(): void {\n this._canvasDiemsionPublisher.dispose();\n }\n\n get position(): Point {\n return this._position;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n get detached(): boolean {\n return false;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n this._canvas.style.cursor = style;\n }\n}\n\n/**\n * Context interface for the Keyboard/Mouse/Trackpad (KMT) input state machine.\n *\n * @remarks\n * This context provides the state and behavior needed by the KMT state machine to:\n * 1. Track cursor positions for calculating pan deltas\n * 2. Distinguish between mouse and trackpad input modalities\n * 3. Access canvas dimensions for coordinate transformations\n * 4. Manage coordinate system alignment (inverted Y-axis handling)\n *\n * **Input Modality Detection**:\n * The context uses a scoring system (`kmtTrackpadTrackScore`) to differentiate between\n * mouse and trackpad input, which have different zoom behaviors:\n * - Mouse: Ctrl+Scroll = zoom, Scroll = pan\n * - Trackpad: Scroll = zoom (no Ctrl needed), Two-finger gesture = pan\n *\n * **Coordinate System**:\n * The `alignCoordinateSystem` flag determines Y-axis orientation:\n * - `true`: Standard screen coordinates (Y increases downward)\n * - `false`: Inverted coordinates (Y increases upward)\n *\n * This interface extends BaseContext from the \\@ue-too/being state machine library,\n * inheriting setup() and cleanup() lifecycle methods.\n *\n * @category Input State Machine\n */\nexport interface KmtInputContext extends BaseContext {\n /** Whether to use standard screen coordinate system (vs inverted Y-axis) */\n alignCoordinateSystem: boolean;\n /** Canvas accessor for dimensions and cursor control */\n canvas: Canvas;\n /** Sets the initial cursor position when starting a pan gesture */\n setInitialCursorPosition: (position: Point) => void;\n /** Cancels the current action and resets cursor position */\n cancelCurrentAction: () => void;\n /** The cursor position when a pan gesture started */\n initialCursorPosition: Point;\n /** Score tracking input modality: >0 for mouse, <0 for trackpad, 0 for undetermined */\n kmtTrackpadTrackScore: number;\n /** Decreases the score toward trackpad */\n subtractKmtTrackpadTrackScore: () => void;\n /** Increases the score toward mouse */\n addKmtTrackpadTrackScore: () => void;\n /** Sets the determined input modality */\n setMode: (mode: 'kmt' | 'trackpad' | 'TBD') => void;\n /** The current input modality: 'kmt' (mouse), 'trackpad', or 'TBD' (to be determined) */\n mode: 'kmt' | 'trackpad' | 'TBD';\n}\n\n/**\n * No-op implementation of KmtInputContext for web worker relay scenarios.\n *\n * @remarks\n * Used when the input state machine is configured to relay events to a web worker\n * rather than process them locally. The state machine requires a context, but in\n * the relay scenario, no actual state tracking is needed - events are simply forwarded.\n *\n * All methods are no-ops and all properties return default values.\n *\n * @category Input State Machine\n *\n * @see {@link DummyCanvas}\n */\nexport class DummyKmtInputContext implements KmtInputContext {\n public alignCoordinateSystem: boolean = false;\n public canvas: Canvas = new DummyCanvas();\n public initialCursorPosition: Point = { x: 0, y: 0 };\n\n constructor() {}\n\n toggleOnEdgeAutoCameraInput: () => void = NO_OP;\n toggleOffEdgeAutoCameraInput: () => void = NO_OP;\n setCursorPosition: (position: Point) => void = NO_OP;\n\n setInitialCursorPosition(position: Point): void {}\n\n cleanup(): void {}\n\n setup(): void {}\n\n get kmtTrackpadTrackScore(): number {\n return 0;\n }\n\n subtractKmtTrackpadTrackScore(): void {}\n\n addKmtTrackpadTrackScore(): void {}\n\n setMode(mode: 'kmt' | 'trackpad' | 'TBD'): void {}\n\n get mode(): 'kmt' | 'trackpad' | 'TBD' {\n return 'kmt';\n }\n\n cancelCurrentAction(): void {}\n}\n\n/**\n * Production implementation of KmtInputContext that tracks input state for the state machine.\n *\n * @remarks\n * This class provides the concrete implementation of the KMT input context, maintaining\n * all state required by the state machine to recognize and track gestures:\n *\n * **State Tracking**:\n * - Initial cursor position for calculating pan deltas\n * - Input modality score to distinguish mouse vs trackpad\n * - Determined input mode (kmt/trackpad/TBD)\n * - Coordinate system alignment preference\n *\n * **Input Modality Detection**:\n * The `kmtTrackpadTrackScore` accumulates evidence about the input device:\n * - Positive values indicate mouse behavior (middle-click, no horizontal scroll)\n * - Negative values indicate trackpad behavior (horizontal scroll, two-finger gestures)\n * - Score is used to determine zoom behavior (Ctrl+Scroll for mouse vs Scroll for trackpad)\n *\n * **Design Pattern**:\n * This class follows the Context pattern from the @ue-too/being state machine library,\n * providing stateful data and operations that states can access and modify during transitions.\n *\n * @category Input State Machine\n *\n * @example\n * ```typescript\n * const canvasProxy = new CanvasProxy(canvasElement);\n * const context = new ObservableInputTracker(canvasProxy);\n * const stateMachine = createKmtInputStateMachine(context);\n *\n * // Context tracks state as the state machine processes events\n * stateMachine.happens(\"leftPointerDown\", {x: 100, y: 200});\n * console.log(context.initialCursorPosition); // {x: 100, y: 200}\n * ```\n */\nexport class ObservableInputTracker implements KmtInputContext {\n private _alignCoordinateSystem: boolean;\n private _canvasOperator: Canvas;\n private _initialCursorPosition: Point;\n private _kmtTrackpadTrackScore: number; // > 0 for kmt; < 0 for trackpad; 0 for TBD;\n private _mode: 'kmt' | 'trackpad' | 'TBD';\n private _deciding: boolean = true;\n\n constructor(canvasOperator: Canvas) {\n this._alignCoordinateSystem = true;\n this._canvasOperator = canvasOperator;\n this._initialCursorPosition = { x: 0, y: 0 };\n this._kmtTrackpadTrackScore = 0;\n this._mode = 'TBD';\n }\n\n get mode(): 'kmt' | 'trackpad' | 'TBD' {\n return this._mode;\n }\n\n setMode(mode: 'kmt' | 'trackpad' | 'TBD'): void {\n this._deciding = false;\n this._mode = mode;\n }\n\n enableInputModeDetection(): void {\n this._deciding = true;\n this._kmtTrackpadTrackScore = 0;\n }\n\n get kmtTrackpadTrackScore(): number {\n return this._kmtTrackpadTrackScore;\n }\n\n subtractKmtTrackpadTrackScore(): void {\n if (!this._deciding) {\n return;\n }\n this._kmtTrackpadTrackScore--;\n if (this._kmtTrackpadTrackScore < -5) {\n this._kmtTrackpadTrackScore = 0;\n // this._mode = 'trackpad';\n }\n }\n\n addKmtTrackpadTrackScore(): void {\n if (!this._deciding) {\n return;\n }\n this._kmtTrackpadTrackScore++;\n if (this._kmtTrackpadTrackScore > 5) {\n this._kmtTrackpadTrackScore = 0;\n // this._mode = 'kmt';\n }\n }\n\n get alignCoordinateSystem(): boolean {\n return this._alignCoordinateSystem;\n }\n\n get canvas(): Canvas {\n return this._canvasOperator;\n }\n\n get initialCursorPosition(): Point {\n return this._initialCursorPosition;\n }\n\n set alignCoordinateSystem(value: boolean) {\n this._alignCoordinateSystem = value;\n }\n\n cancelCurrentAction(): void {\n this._initialCursorPosition = { x: 0, y: 0 };\n }\n\n setInitialCursorPosition(position: Point): void {\n this._initialCursorPosition = position;\n }\n\n cleanup(): void {}\n\n setup(): void {}\n}\n\nfunction withinEdgeOfCanvas(\n position: Point,\n boundingBox: { left: number; top: number; width: number; height: number },\n padding: number\n): boolean {\n return (\n position.x <= boundingBox.left + padding ||\n position.x >= boundingBox.left + boundingBox.width - padding ||\n position.y <= boundingBox.top + padding ||\n position.y >= boundingBox.top + boundingBox.height - padding\n );\n}\n\nfunction pointInWhichHorizontalEdgeOfCanvas(\n position: Point,\n boundingBox: { left: number; top: number; width: number; height: number },\n padding: number\n): 'left' | 'right' | 'none' {\n if (position.x <= boundingBox.left + padding) {\n return 'left';\n }\n if (position.x >= boundingBox.left + boundingBox.width - padding) {\n return 'right';\n }\n return 'none';\n}\n\nfunction pointInWhichVerticalEdgeOfCanvas(\n position: Point,\n boundingBox: { left: number; top: number; width: number; height: number },\n padding: number\n): 'up' | 'down' | 'none' {\n if (position.y <= boundingBox.top + padding) {\n return 'up';\n }\n if (position.y >= boundingBox.top + boundingBox.height - padding) {\n return 'down';\n }\n return 'none';\n}\n",
|
|
68
|
+
"import { BaseContext, NO_OP } from '@ue-too/being';\nimport { Point } from '@ue-too/math';\n\nimport {\n CanvasPositionDimensionPublisher,\n Observable,\n Observer,\n SubscriptionOptions,\n SvgPositionDimensionPublisher,\n SynchronousObservable,\n getTrueRect,\n} from '../../utils';\n\n/**\n * Cursor styles used to provide visual feedback for different input states.\n *\n * @remarks\n * These cursor styles indicate the current interaction mode to users:\n * - **GRAB**: Indicates the canvas is ready to be panned (spacebar pressed, no drag yet)\n * - **GRABBING**: Indicates active panning is in progress\n * - **DEFAULT**: Normal cursor state when no special interaction is active\n *\n * @category Input State Machine\n */\nexport enum CursorStyle {\n GRAB = 'grab',\n DEFAULT = 'default',\n GRABBING = 'grabbing',\n}\n\n/**\n * Canvas dimension and position information.\n *\n * @property width - The canvas width in CSS pixels\n * @property height - The canvas height in CSS pixels\n * @property position - The top-left position of the canvas in window coordinates\n *\n * @category Input State Machine\n */\nexport type CanvasDimensions = {\n width: number;\n height: number;\n position: Point;\n};\n\n/**\n * Abstraction interface for canvas element access and manipulation.\n *\n * @remarks\n * This interface provides a decoupled way to access canvas properties without direct DOM access.\n * Multiple implementations exist to support different use cases:\n * - **CanvasProxy**: Full implementation for HTML canvas elements with dimension tracking\n * - **SvgProxy**: Implementation for SVG elements\n * - **DummyCanvas**: No-op implementation for web worker contexts\n * - **WorkerRelayCanvas**: Relays canvas dimension updates to web workers\n * - **CanvasCacheInWebWorker**: Caches canvas dimensions within a web worker\n *\n * The abstraction enables:\n * - Coordinate system transformations (window → canvas → viewport)\n * - Canvas dimension tracking without repeated DOM queries\n * - Cursor style management\n * - Support for both canvas and SVG rendering contexts\n *\n * @category Input State Machine\n */\nexport interface Canvas {\n /** The canvas width in CSS pixels */\n width: number;\n /** The canvas height in CSS pixels */\n height: number;\n /** The top-left position of the canvas in window coordinates */\n position: Point;\n /** Sets the CSS cursor style for visual feedback */\n setCursor: (style: CursorStyle) => void;\n /** Combined dimensions and position information */\n dimensions: CanvasDimensions;\n /** Whether the canvas is currently detached from the DOM */\n detached: boolean;\n /** Cleanup method to dispose of resources and event listeners */\n tearDown: () => void;\n}\n\n/**\n * No-op implementation of Canvas interface for web worker relay contexts.\n *\n * @remarks\n * This class is used when an input state machine is configured to relay events to a web worker\n * rather than perform actual canvas operations. The state machine requires a Canvas in its context,\n * but in the relay scenario, no actual canvas operations are needed - events are simply forwarded\n * to the worker thread.\n *\n * All properties return default/empty values and all methods are no-ops.\n *\n * @category Input State Machine\n *\n * @see {@link DummyKmtInputContext}\n */\nexport class DummyCanvas implements Canvas {\n width: number = 0;\n height: number = 0;\n position: Point = { x: 0, y: 0 };\n setCursor: (style: CursorStyle) => void = NO_OP;\n dimensions: { width: number; height: number; position: Point } = {\n width: 0,\n height: 0,\n position: { x: 0, y: 0 },\n };\n detached: boolean = false;\n tearDown: () => void = NO_OP;\n}\n\nexport class CanvasCacheInWebWorker implements Canvas {\n private _width: number;\n private _height: number;\n private _position: Point;\n private _postMessageFunction: typeof postMessage;\n\n constructor(postMessageFunction: typeof postMessage) {\n this._width = 0;\n this._height = 0;\n this._position = { x: 0, y: 0 };\n this._postMessageFunction = postMessageFunction;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n tearDown(): void {}\n\n set width(width: number) {\n this._width = width;\n }\n\n set height(height: number) {\n this._height = height;\n }\n\n set position(position: Point) {\n this._position = position;\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get position(): Point {\n return this._position;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n this._postMessageFunction({ type: 'setCursor', style });\n }\n\n get detached(): boolean {\n return false;\n }\n}\n\n/**\n * A proxy for the canvas element to prevent constant invoking of the getBoundingClientRect method.\n * @remarks This is mainly used as a proxy to the canvas to prevent invoking the getBoundingClientRect method on the canvas every time a pointer event is triggered or a coordinate conversion is needed. Also to autoscale the canvas buffer depending on the device pixel ratio. It's important to note that in normal circumstances, you would not need to set the size of the canvas manually; you should use the css style width and height to set the size of the canvas.\n * @category Input State Machine\n * @see {@link Canvas} for the interface that this class implements\n * @see {@link Observable} for the observable that this class emits\n * @see {@link Observer} for the observer that can subscribe to the observable\n * @see {@link SubscriptionOptions} for the options that can be passed to the subscribe method\n * @see {@link SynchronousObservable} for the synchronous observable that this class emits\n * @see {@link CanvasPositionDimensionPublisher} for the publisher that is used to publish the canvas dimensions\n */\nexport class CanvasProxy implements Canvas, Observable<[CanvasDimensions]> {\n private _width: number = 0;\n private _height: number = 0;\n private _position: Point = { x: 0, y: 0 };\n private _canvasPositionDimensionPublisher: CanvasPositionDimensionPublisher;\n private _canvas: HTMLCanvasElement | undefined;\n private _internalSizeUpdateObservable: Observable<[CanvasDimensions]>;\n\n constructor(canvas?: HTMLCanvasElement) {\n this._internalSizeUpdateObservable = new SynchronousObservable<\n [CanvasDimensions]\n >();\n\n if (canvas) {\n const boundingRect = canvas.getBoundingClientRect();\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(canvas)\n );\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._canvas = canvas;\n }\n\n this._canvasPositionDimensionPublisher =\n new CanvasPositionDimensionPublisher(canvas);\n this._canvasPositionDimensionPublisher.onPositionUpdate(rect => {\n // the rect is the canvas dimension in the DOM (the width and height attribute would need to multiply by the device pixel ratio)\n if (this._canvas == undefined) {\n console.error(\n 'is not attached to any canvas should not have getting any updates'\n );\n return;\n }\n\n this._width = rect.width;\n this._height = rect.height;\n this._position = { x: rect.left, y: rect.top };\n\n this._internalSizeUpdateObservable.notify({\n width: this._width,\n height: this._height,\n position: this._position,\n });\n });\n }\n\n subscribe(\n observer: Observer<[CanvasDimensions]>,\n options?: SubscriptionOptions\n ): () => void {\n return this._internalSizeUpdateObservable.subscribe(observer, options);\n }\n\n notify(...data: [CanvasDimensions]): void {\n this._internalSizeUpdateObservable.notify(...data);\n }\n\n get detached(): boolean {\n return this._canvas === undefined;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n get width(): number {\n return this._width;\n }\n\n /**\n * set the width of the canvas\n * the width is synonymous with the canvas style width not the canvas width\n */\n setWidth(width: number) {\n if (this._canvas) {\n this._canvas.width = width * window.devicePixelRatio;\n this._canvas.style.width = width + 'px';\n }\n }\n\n setCanvasWidth(width: number) {\n if (\n this._canvas &&\n this._canvas.style.width === '' &&\n this._canvas.style.height === ''\n ) {\n const aspectRatio = this._width / this._height;\n this._canvas.style.aspectRatio = aspectRatio.toString();\n }\n if (this._canvas && this._canvas.style.width !== '') {\n this._canvas.width = width * window.devicePixelRatio;\n } else {\n this.setWidth(width);\n }\n }\n\n /**\n * set the height of the canvas\n * the height is synonymous with the canvas style height not the canvas height\n */\n setHeight(height: number) {\n if (this._canvas) {\n this._canvas.height = height * window.devicePixelRatio;\n this._canvas.style.height = height + 'px';\n }\n }\n\n setCanvasHeight(height: number) {\n if (\n this._canvas &&\n this._canvas.style.width === '' &&\n this._canvas.style.height === ''\n ) {\n const aspectRatio = this._width / this._height;\n this._canvas.style.aspectRatio = aspectRatio.toString();\n }\n if (this._canvas && this._canvas.style.height !== '') {\n this._canvas.height = height * window.devicePixelRatio;\n } else {\n this.setHeight(height);\n }\n }\n\n get height(): number {\n return this._height;\n }\n\n get position(): Point {\n return this._position;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n if (this._canvas) {\n this._canvas.style.cursor = style;\n }\n }\n\n tearDown(): void {\n this._canvasPositionDimensionPublisher.dispose();\n this._canvas = undefined;\n this._width = 0;\n this._height = 0;\n this._position = { x: 0, y: 0 };\n }\n\n attach(canvas: HTMLCanvasElement) {\n this._canvas = canvas;\n this._canvasPositionDimensionPublisher.attach(canvas);\n }\n}\n\nexport class SvgProxy implements Canvas, Observable<[CanvasDimensions]> {\n private _width: number = 0;\n private _height: number = 0;\n private _position: Point = { x: 0, y: 0 };\n private _svgPositionDimensionPublisher: SvgPositionDimensionPublisher;\n private _svg: SVGSVGElement | undefined;\n private _internalSizeUpdateObservable: Observable<[CanvasDimensions]>;\n\n constructor(svg?: SVGSVGElement) {\n this._internalSizeUpdateObservable = new SynchronousObservable<\n [CanvasDimensions]\n >();\n\n if (svg) {\n const boundingRect = svg.getBoundingClientRect();\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(svg)\n );\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._svg = svg;\n }\n\n this._svgPositionDimensionPublisher = new SvgPositionDimensionPublisher(\n svg\n );\n this._svgPositionDimensionPublisher.onPositionUpdate(rect => {\n // the rect is the canvas dimension in the DOM (the width and height attribute would need to multiply by the device pixel ratio)\n if (this._svg == undefined) {\n console.error(\n 'is not attached to any canvas should not have getting any updates'\n );\n return;\n }\n\n this._width = rect.width;\n this._height = rect.height;\n this._position = { x: rect.left, y: rect.top };\n\n this._internalSizeUpdateObservable.notify({\n width: this._width,\n height: this._height,\n position: this._position,\n });\n });\n }\n\n subscribe(\n observer: Observer<[CanvasDimensions]>,\n options?: SubscriptionOptions\n ): () => void {\n return this._internalSizeUpdateObservable.subscribe(observer, options);\n }\n\n notify(...data: [CanvasDimensions]): void {\n this._internalSizeUpdateObservable.notify(...data);\n }\n\n get detached(): boolean {\n return this._svg === undefined;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n get width(): number {\n return this._width;\n }\n\n /**\n * set the width of the canvas\n * the width is synonymous with the canvas style width not the canvas width\n */\n setWidth(width: number) {\n if (this._svg) {\n this._svg.style.width = width + 'px';\n }\n }\n\n /**\n * set the height of the canvas\n * the height is synonymous with the canvas style height not the canvas height\n */\n setHeight(height: number) {\n if (this._svg) {\n this._svg.style.height = height + 'px';\n }\n }\n\n get height(): number {\n return this._height;\n }\n\n get position(): Point {\n return this._position;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n if (this._svg) {\n this._svg.style.cursor = style;\n }\n }\n\n tearDown(): void {\n this._svgPositionDimensionPublisher.dispose();\n this._svg = undefined;\n this._width = 0;\n this._height = 0;\n this._position = { x: 0, y: 0 };\n }\n\n attach(svg: SVGSVGElement) {\n this._svgPositionDimensionPublisher.attach(svg);\n this._svg = svg;\n const boundingRect = svg.getBoundingClientRect();\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(svg)\n );\n this._svg.style.width = trueRect.width + 'px';\n this._svg.style.height = trueRect.height + 'px';\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._internalSizeUpdateObservable.notify({\n width: this._width,\n height: this._height,\n position: this._position,\n });\n }\n}\n\n/**\n * @description A proxy for the canvas that is used to communicate with the web worker.\n * The primary purpose of this class is to cache the canvas dimensions and position in the DOM to reduce the calling of the getBoundingClientRect method.\n * This class only serves as a relay of the updated canvas dimensions and position to the web worker.\n *\n */\nexport class WorkerRelayCanvas implements Canvas {\n private _width: number;\n private _height: number;\n private _position: Point;\n private _webWorker: Worker;\n private _canvas: HTMLCanvasElement;\n private _canvasDiemsionPublisher: CanvasPositionDimensionPublisher;\n\n constructor(\n canvas: HTMLCanvasElement,\n webWorker: Worker,\n canvasDiemsionPublisher: CanvasPositionDimensionPublisher\n ) {\n const boundingRect = canvas.getBoundingClientRect();\n this._canvas = canvas;\n this._webWorker = webWorker;\n const trueRect = getTrueRect(\n boundingRect,\n window.getComputedStyle(canvas)\n );\n this._width = trueRect.width;\n this._height = trueRect.height;\n this._position = { x: trueRect.left, y: trueRect.top };\n this._webWorker.postMessage({\n type: 'setCanvasDimensions',\n width: boundingRect.width,\n height: boundingRect.height,\n position: { x: boundingRect.left, y: boundingRect.top },\n });\n canvasDiemsionPublisher.onPositionUpdate(rect => {\n this._width = rect.width;\n this._height = rect.height;\n this._position = { x: rect.left, y: rect.top };\n this._webWorker.postMessage({\n type: 'updateCanvasDimensions',\n width: rect.width,\n height: rect.height,\n position: { x: rect.left, y: rect.top },\n });\n });\n this._canvasDiemsionPublisher = canvasDiemsionPublisher;\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n tearDown(): void {\n this._canvasDiemsionPublisher.dispose();\n }\n\n get position(): Point {\n return this._position;\n }\n\n get dimensions(): { width: number; height: number; position: Point } {\n return {\n width: this._width,\n height: this._height,\n position: this._position,\n };\n }\n\n get detached(): boolean {\n return false;\n }\n\n setCursor(style: 'grab' | 'default' | 'grabbing'): void {\n this._canvas.style.cursor = style;\n }\n}\n\n/**\n * Context interface for the Keyboard/Mouse/Trackpad (KMT) input state machine.\n *\n * @remarks\n * This context provides the state and behavior needed by the KMT state machine to:\n * 1. Track cursor positions for calculating pan deltas\n * 2. Distinguish between mouse and trackpad input modalities\n * 3. Access canvas dimensions for coordinate transformations\n * 4. Manage coordinate system alignment (inverted Y-axis handling)\n *\n * **Input Modality Detection**:\n * The context uses a scoring system (`kmtTrackpadTrackScore`) to differentiate between\n * mouse and trackpad input, which have different zoom behaviors:\n * - Mouse: Ctrl+Scroll = zoom, Scroll = pan\n * - Trackpad: Scroll = zoom (no Ctrl needed), Two-finger gesture = pan\n *\n * **Coordinate System**:\n * The `alignCoordinateSystem` flag determines Y-axis orientation:\n * - `true`: Standard screen coordinates (Y increases downward)\n * - `false`: Inverted coordinates (Y increases upward)\n *\n * This interface extends BaseContext from the \\@ue-too/being state machine library,\n * inheriting setup() and cleanup() lifecycle methods.\n *\n * @category Input State Machine\n */\nexport interface KmtInputContext extends BaseContext {\n /** Whether to use standard screen coordinate system (vs inverted Y-axis) */\n alignCoordinateSystem: boolean;\n /** Canvas accessor for dimensions and cursor control */\n canvas: Canvas;\n /** Sets the initial cursor position when starting a pan gesture */\n setInitialCursorPosition: (position: Point) => void;\n /** Cancels the current action and resets cursor position */\n cancelCurrentAction: () => void;\n /** The cursor position when a pan gesture started */\n initialCursorPosition: Point;\n /** Score tracking input modality: >0 for mouse, <0 for trackpad, 0 for undetermined */\n kmtTrackpadTrackScore: number;\n /** Decreases the score toward trackpad */\n subtractKmtTrackpadTrackScore: () => void;\n /** Increases the score toward mouse */\n addKmtTrackpadTrackScore: () => void;\n /** Sets the determined input modality */\n setMode: (mode: 'kmt' | 'trackpad' | 'TBD') => void;\n /** The current input modality: 'kmt' (mouse), 'trackpad', or 'TBD' (to be determined) */\n mode: 'kmt' | 'trackpad' | 'TBD';\n}\n\n/**\n * No-op implementation of KmtInputContext for web worker relay scenarios.\n *\n * @remarks\n * Used when the input state machine is configured to relay events to a web worker\n * rather than process them locally. The state machine requires a context, but in\n * the relay scenario, no actual state tracking is needed - events are simply forwarded.\n *\n * All methods are no-ops and all properties return default values.\n *\n * @category Input State Machine\n *\n * @see {@link DummyCanvas}\n */\nexport class DummyKmtInputContext implements KmtInputContext {\n public alignCoordinateSystem: boolean = false;\n public canvas: Canvas = new DummyCanvas();\n public initialCursorPosition: Point = { x: 0, y: 0 };\n\n constructor() {}\n\n toggleOnEdgeAutoCameraInput: () => void = NO_OP;\n toggleOffEdgeAutoCameraInput: () => void = NO_OP;\n setCursorPosition: (position: Point) => void = NO_OP;\n\n setInitialCursorPosition(position: Point): void {}\n\n cleanup(): void {}\n\n setup(): void {}\n\n get kmtTrackpadTrackScore(): number {\n return 0;\n }\n\n subtractKmtTrackpadTrackScore(): void {}\n\n addKmtTrackpadTrackScore(): void {}\n\n setMode(mode: 'kmt' | 'trackpad' | 'TBD'): void {}\n\n get mode(): 'kmt' | 'trackpad' | 'TBD' {\n return 'kmt';\n }\n\n cancelCurrentAction(): void {}\n}\n\n/**\n * Production implementation of KmtInputContext that tracks input state for the state machine.\n *\n * @remarks\n * This class provides the concrete implementation of the KMT input context, maintaining\n * all state required by the state machine to recognize and track gestures:\n *\n * **State Tracking**:\n * - Initial cursor position for calculating pan deltas\n * - Input modality score to distinguish mouse vs trackpad\n * - Determined input mode (kmt/trackpad/TBD)\n * - Coordinate system alignment preference\n *\n * **Input Modality Detection**:\n * The `kmtTrackpadTrackScore` accumulates evidence about the input device:\n * - Positive values indicate mouse behavior (middle-click, no horizontal scroll)\n * - Negative values indicate trackpad behavior (horizontal scroll, two-finger gestures)\n * - Score is used to determine zoom behavior (Ctrl+Scroll for mouse vs Scroll for trackpad)\n *\n * **Design Pattern**:\n * This class follows the Context pattern from the @ue-too/being state machine library,\n * providing stateful data and operations that states can access and modify during transitions.\n *\n * @category Input State Machine\n *\n * @example\n * ```typescript\n * const canvasProxy = new CanvasProxy(canvasElement);\n * const context = new ObservableInputTracker(canvasProxy);\n * const stateMachine = createKmtInputStateMachine(context);\n *\n * // Context tracks state as the state machine processes events\n * stateMachine.happens(\"leftPointerDown\", {x: 100, y: 200});\n * console.log(context.initialCursorPosition); // {x: 100, y: 200}\n * ```\n */\nexport class ObservableInputTracker implements KmtInputContext {\n private _alignCoordinateSystem: boolean;\n private _canvasOperator: Canvas;\n private _initialCursorPosition: Point;\n private _kmtTrackpadTrackScore: number; // > 0 for kmt; < 0 for trackpad; 0 for TBD;\n private _mode: 'kmt' | 'trackpad' | 'TBD';\n private _deciding: boolean = true;\n\n constructor(canvasOperator: Canvas) {\n this._alignCoordinateSystem = true;\n this._canvasOperator = canvasOperator;\n this._initialCursorPosition = { x: 0, y: 0 };\n this._kmtTrackpadTrackScore = 0;\n this._mode = 'TBD';\n }\n\n get mode(): 'kmt' | 'trackpad' | 'TBD' {\n return this._mode;\n }\n\n setMode(mode: 'kmt' | 'trackpad' | 'TBD'): void {\n this._deciding = false;\n this._mode = mode;\n }\n\n enableInputModeDetection(): void {\n this._deciding = true;\n this._kmtTrackpadTrackScore = 0;\n this._mode = 'TBD';\n }\n\n get kmtTrackpadTrackScore(): number {\n return this._kmtTrackpadTrackScore;\n }\n\n subtractKmtTrackpadTrackScore(): void {\n if (!this._deciding) {\n return;\n }\n this._kmtTrackpadTrackScore--;\n if (this._kmtTrackpadTrackScore < -5) {\n this._kmtTrackpadTrackScore = 0;\n // this._mode = 'trackpad';\n }\n }\n\n addKmtTrackpadTrackScore(): void {\n if (!this._deciding) {\n return;\n }\n this._kmtTrackpadTrackScore++;\n if (this._kmtTrackpadTrackScore > 5) {\n this._kmtTrackpadTrackScore = 0;\n // this._mode = 'kmt';\n }\n }\n\n get alignCoordinateSystem(): boolean {\n return this._alignCoordinateSystem;\n }\n\n get canvas(): Canvas {\n return this._canvasOperator;\n }\n\n get initialCursorPosition(): Point {\n return this._initialCursorPosition;\n }\n\n set alignCoordinateSystem(value: boolean) {\n this._alignCoordinateSystem = value;\n }\n\n cancelCurrentAction(): void {\n this._initialCursorPosition = { x: 0, y: 0 };\n }\n\n setInitialCursorPosition(position: Point): void {\n this._initialCursorPosition = position;\n }\n\n cleanup(): void {}\n\n setup(): void {}\n}\n\nfunction withinEdgeOfCanvas(\n position: Point,\n boundingBox: { left: number; top: number; width: number; height: number },\n padding: number\n): boolean {\n return (\n position.x <= boundingBox.left + padding ||\n position.x >= boundingBox.left + boundingBox.width - padding ||\n position.y <= boundingBox.top + padding ||\n position.y >= boundingBox.top + boundingBox.height - padding\n );\n}\n\nfunction pointInWhichHorizontalEdgeOfCanvas(\n position: Point,\n boundingBox: { left: number; top: number; width: number; height: number },\n padding: number\n): 'left' | 'right' | 'none' {\n if (position.x <= boundingBox.left + padding) {\n return 'left';\n }\n if (position.x >= boundingBox.left + boundingBox.width - padding) {\n return 'right';\n }\n return 'none';\n}\n\nfunction pointInWhichVerticalEdgeOfCanvas(\n position: Point,\n boundingBox: { left: number; top: number; width: number; height: number },\n padding: number\n): 'up' | 'down' | 'none' {\n if (position.y <= boundingBox.top + padding) {\n return 'up';\n }\n if (position.y >= boundingBox.top + boundingBox.height - padding) {\n return 'down';\n }\n return 'none';\n}\n",
|
|
69
69
|
"import { Point, PointCal } from '@ue-too/math';\n\nimport { Canvas } from '../../input-interpretation/input-state-machine/kmt-input-context';\n\n/**\n * Converts a point from browser window coordinates to canvas coordinates.\n *\n * @param pointInWindow - The point in window coordinates (relative to browser viewport)\n * @param canvas - The canvas object containing position information\n * @returns The point in canvas coordinates (relative to canvas element)\n *\n * @remarks\n * Window coordinates are relative to the browser's viewport (top-left = 0,0).\n * Canvas coordinates are relative to the canvas element's top-left corner.\n *\n * This conversion is essential for processing mouse and touch events, which\n * provide coordinates relative to the window, not the canvas element.\n *\n * The conversion simply subtracts the canvas position from the window position:\n * ```\n * canvasPoint = windowPoint - canvasPosition\n * ```\n *\n * Note: This function expects the canvas object to have a `position` property\n * containing the canvas element's position in window coordinates (typically\n * from getBoundingClientRect()).\n *\n * @example\n * ```typescript\n * // Mouse click at window position (500, 300)\n * const clickPos = { x: 500, y: 300 };\n *\n * // Canvas positioned at (100, 50) in window\n * const canvas = {\n * position: { x: 100, y: 50 },\n * width: 800,\n * height: 600\n * };\n *\n * const canvasPos = convertFromWindow2Canvas(clickPos, canvas);\n * // Result: { x: 400, y: 250 }\n * // (500 - 100 = 400, 300 - 50 = 250)\n * ```\n *\n * @category Coordinate Conversion\n * @see {@link convertFromCanvas2Window} for inverse conversion\n */\nexport function convertFromWindow2Canvas(\n pointInWindow: Point,\n canvas: Canvas\n): Point {\n return PointCal.subVector(pointInWindow, canvas.position);\n}\n\n/**\n * Converts a point from canvas coordinates to browser window coordinates.\n *\n * @param pointInCanvas - The point in canvas coordinates (relative to canvas element)\n * @param canvas - The canvas object containing position information\n * @returns The point in window coordinates (relative to browser viewport)\n *\n * @remarks\n * This is the inverse of {@link convertFromWindow2Canvas}. It translates canvas-relative\n * coordinates to window-relative coordinates.\n *\n * The conversion adds the canvas position to the canvas-relative point:\n * ```\n * windowPoint = canvasPoint + canvasPosition\n * ```\n *\n * This is useful for positioning DOM elements (like tooltips or menus) at specific\n * canvas coordinates, as DOM elements use window coordinates.\n *\n * @example\n * ```typescript\n * // Point on canvas at (400, 250)\n * const canvasPos = { x: 400, y: 250 };\n *\n * // Canvas positioned at (100, 50) in window\n * const canvas = {\n * position: { x: 100, y: 50 },\n * width: 800,\n * height: 600\n * };\n *\n * const windowPos = convertFromCanvas2Window(canvasPos, canvas);\n * // Result: { x: 500, y: 300 }\n * // (400 + 100 = 500, 250 + 50 = 300)\n *\n * // Use for positioning a tooltip\n * tooltip.style.left = `${windowPos.x}px`;\n * tooltip.style.top = `${windowPos.y}px`;\n * ```\n *\n * @category Coordinate Conversion\n * @see {@link convertFromWindow2Canvas} for inverse conversion\n */\nexport function convertFromCanvas2Window(\n pointInCanvas: Point,\n canvas: Canvas\n): Point {\n return PointCal.addVector(pointInCanvas, canvas.position);\n}\n",
|
|
70
70
|
"import { Point } from '@ue-too/math';\n\nimport { Canvas } from '../input-interpretation/input-state-machine/kmt-input-context';\nimport { convertFromCanvas2ViewPort } from './coordinate-conversions/canvas-viewport';\nimport { convertFromWindow2Canvas } from './coordinate-conversions/window-canvas';\n\n/**\n * Converts an isometric 3D point to a flat 2D world point.\n *\n * @param point - The 3D point in isometric space (with optional z coordinate)\n * @returns The 2D point in flat world coordinates\n *\n * @remarks\n * This function performs an isometric projection transformation, converting 3D\n * coordinates to 2D using standard isometric angles (30 degrees).\n *\n * The transformation uses:\n * - cos(30°) ≈ 0.866 for x-axis projection\n * - cos(60°) = 0.5 for y-axis projection\n * - Z-coordinate is added directly to the y-axis (height)\n *\n * Mathematical formulas:\n * ```\n * x_2d = (x_3d * cos30) - (y_3d * cos30)\n * y_2d = (x_3d * cos60) + (y_3d * cos60) + z_3d\n * ```\n *\n * This creates the classic isometric diamond grid appearance where:\n * - Moving along +X goes down-right\n * - Moving along +Y goes down-left\n * - Moving along +Z goes straight up\n *\n * @example\n * ```typescript\n * // Convert a 3D cube corner to 2D isometric projection\n * const point3D = { x: 10, y: 10, z: 5 };\n * const point2D = pointConversion(point3D);\n * // Result: { x: 0, y: 15 }\n * // x: (10 * 0.866) - (10 * 0.866) = 0\n * // y: (10 * 0.5) + (10 * 0.5) + 5 = 15\n *\n * // 2D point without z-coordinate\n * const flatPoint = { x: 20, y: 0 };\n * const projected = pointConversion(flatPoint);\n * // Result: { x: 17.32, y: 10 }\n * ```\n *\n * @category Coordinate Conversion\n */\nexport function pointConversion(point: Point) {\n const cos30 = Math.cos(Math.PI / 6);\n const cos60 = Math.cos(Math.PI / 3);\n\n return {\n x: point.x * cos30 - point.y * cos30,\n y: point.x * cos60 + point.y * cos60 + (point.z ?? 0),\n };\n}\n\n/**\n * Converts a point from window coordinates to viewport coordinates in one step.\n *\n * @param point - The point in window coordinates (browser viewport)\n * @param canvas - The canvas object with position and dimensions\n * @param viewportOriginInCanvasSpace - Viewport origin in canvas space (default: canvas center)\n * @param viewportHasFlippedYAxis - Whether viewport uses mathematical y-axis (default: false)\n * @returns The point in viewport coordinates\n *\n * @remarks\n * This is a convenience function that combines two conversions:\n * 1. Window to Canvas: {@link convertFromWindow2Canvas}\n * 2. Canvas to Viewport: {@link convertFromCanvas2ViewPort}\n *\n * It's particularly useful for processing input events (mouse clicks, touches)\n * that need to be converted directly to viewport space for interaction handling.\n *\n * The default viewport origin is the canvas center, which is common for\n * mathematical/engineering applications where (0,0) should be in the middle.\n *\n * @example\n * ```typescript\n * // Mouse click event\n * const clickPos = { x: event.clientX, y: event.clientY };\n *\n * const canvas = {\n * position: { x: 100, y: 50 },\n * width: 800,\n * height: 600\n * };\n *\n * // Convert to centered viewport with y-up\n * const viewportPos = convertFromWindow2ViewPortWithCanvasOperator(\n * clickPos,\n * canvas,\n * { x: 400, y: 300 }, // center of canvas\n * true // mathematical coordinates\n * );\n *\n * // viewportPos is now relative to viewport center with y-up\n * ```\n *\n * @category Coordinate Conversion\n * @see {@link convertFromWindow2Canvas} for window to canvas conversion\n * @see {@link convertFromCanvas2ViewPort} for canvas to viewport conversion\n */\nexport function convertFromWindow2ViewPortWithCanvasOperator(\n point: Point,\n canvas: Canvas,\n viewportOriginInCanvasSpace: Point = {\n x: canvas.width / 2,\n y: canvas.height / 2,\n },\n viewportHasFlippedYAxis: boolean = false\n): Point {\n const pointInCanvas = convertFromWindow2Canvas(point, canvas);\n return convertFromCanvas2ViewPort(\n pointInCanvas,\n viewportOriginInCanvasSpace,\n viewportHasFlippedYAxis\n );\n}\n",
|
|
71
71
|
"/**\n * Calculates the order of magnitude (power of 10) of a number.\n *\n * @param value - The number to analyze\n * @returns The power of 10 that best represents this value's magnitude\n *\n * @remarks\n * The order of magnitude helps determine appropriate tick spacing for rulers\n * and grids. For example:\n * - Value 1234 has order 3 (10^3 = 1000)\n * - Value 0.056 has order -2 (10^-2 = 0.01)\n *\n * The calculation finds the largest power of 10 that is less than or equal\n * to the absolute value.\n *\n * Edge cases:\n * - Returns 0 for values <= 0\n * - For values >= 1: Counts powers of 10 until reaching the value\n * - For values < 1: Counts negative powers of 10 until reaching the value\n *\n * This is used by drawing utilities to automatically scale tick marks and\n * grid lines appropriately for different zoom levels.\n *\n * @example\n * ```typescript\n * calculateOrderOfMagnitude(1500); // 3 (between 10^3=1000 and 10^4=10000)\n * calculateOrderOfMagnitude(85); // 1 (between 10^1=10 and 10^2=100)\n * calculateOrderOfMagnitude(7); // 0 (between 10^0=1 and 10^1=10)\n * calculateOrderOfMagnitude(0.05); // -2 (between 10^-2=0.01 and 10^-1=0.1)\n * calculateOrderOfMagnitude(0); // 0 (edge case)\n * calculateOrderOfMagnitude(-100); // 0 (negative edge case)\n * ```\n *\n * @category Drawing Utilities\n * @see {@link drawRuler} for usage in ruler drawing\n */\nexport function calculateOrderOfMagnitude(value: number): number {\n if (value <= 0) return 0;\n let count = 0;\n if (value < 1) {\n let divisor = 1;\n while (divisor > value) {\n divisor /= 10;\n count--;\n }\n } else {\n let divisor = 1;\n while (divisor * 10 <= value) {\n divisor *= 10;\n count++;\n }\n }\n return count;\n}\n",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"import { EventArgs } from '@ue-too/being';\n\nimport { TouchPoints } from '../../input-interpretation/input-state-machine/touch-input-context';\nimport {\n TouchEventMapping,\n TouchInputStateMachine,\n} from '../../input-interpretation/input-state-machine/touch-input-state-machine';\nimport type { InputOrchestrator } from '../input-orchestrator';\n\n/**\n * Interface for touch event parsers.\n *\n * @remarks\n * Touch event parsers bridge DOM TouchEvents and the touch state machine.\n * They provide granular control over which gesture types are enabled.\n *\n * @category Raw Input Parser\n */\nexport interface TouchEventParser {\n /** Whether all touch input is disabled */\n disabled: boolean;\n /** Initializes event listeners */\n setUp(): void;\n /** Removes event listeners and cleans up */\n tearDown(): void;\n /** Attaches to a new canvas element */\n attach(canvas: HTMLCanvasElement): void;\n /** Disables the parser; the event listeners are still attached just not processing any events*/\n disable(): void;\n /** Enables the parser */\n enable(): void;\n}\n\n/**\n * DOM event parser for touch input.\n *\n * @remarks\n * This parser converts raw DOM TouchEvents into state machine events and coordinates\n * with the orchestrator to process outputs. It serves as the entry point for all touch\n * input in the input interpretation pipeline.\n *\n * **Event Flow**:\n * ```\n * DOM TouchEvents → Parser → State Machine → Parser → Orchestrator → Camera/Observers\n * ```\n *\n * **Responsibilities**:\n * 1. Listen for DOM touch events (touchstart/move/end/cancel)\n * 2. Extract touch point data (identifier, x, y)\n * 3. Convert to state machine event format\n * 4. Send events to the state machine\n * 5. Forward state machine outputs to the orchestrator\n *\n * **Touch Point Extraction**:\n * - touchstart/touchend: Uses `changedTouches` (only new/removed touches)\n * - touchmove: Uses `targetTouches` (all touches on the canvas)\n *\n * **Gesture Control**:\n * Individual gesture types (pan, zoom, rotate) can be disabled independently,\n * though currently the state machine outputs are filtered by the orchestrator\n * rather than the parser.\n *\n * The parser prevents default touch behavior to avoid browser scroll/zoom\n * interfering with canvas gestures.\n *\n * @category Raw Input Parser\n *\n * @example\n * ```typescript\n * const canvasElement = document.getElementById(\"canvas\");\n * const stateMachine = createTouchInputStateMachine(context);\n * const orchestrator = new InputOrchestrator(cameraMux, cameraRig, publisher);\n * const parser = new VanillaTouchEventParser(stateMachine, orchestrator, canvasElement);\n *\n * parser.setUp(); // Starts listening for touch events\n *\n * // Disable zoom gestures temporarily\n * parser.zoomDisabled = true;\n *\n * // Cleanup when done\n * parser.tearDown();\n * ```\n */\nexport class VanillaTouchEventParser implements TouchEventParser {\n private _canvas?: HTMLCanvasElement | SVGSVGElement;\n private _disabled: boolean;\n private _panDisabled: boolean = false;\n private _zoomDisabled: boolean = false;\n private _rotateDisabled: boolean = false;\n\n private _stateMachine: TouchInputStateMachine;\n private _orchestrator: InputOrchestrator;\n\n private _abortController: AbortController;\n\n constructor(\n touchInputStateMachine: TouchInputStateMachine,\n orchestrator: InputOrchestrator,\n canvas?: HTMLCanvasElement | SVGSVGElement\n ) {\n this._canvas = canvas;\n this._disabled = false;\n this._stateMachine = touchInputStateMachine;\n this._orchestrator = orchestrator;\n this._abortController = new AbortController();\n\n this.bindListeners();\n }\n\n get orchestrator(): InputOrchestrator {\n return this._orchestrator;\n }\n\n bindListeners(): void {\n this.touchstartHandler = this.touchstartHandler.bind(this);\n this.touchendHandler = this.touchendHandler.bind(this);\n this.touchcancelHandler = this.touchcancelHandler.bind(this);\n this.touchmoveHandler = this.touchmoveHandler.bind(this);\n }\n\n enableStrategy(): void {\n this._disabled = false;\n }\n\n disableStrategy(): void {\n this._disabled = true;\n }\n\n setUp(): void {\n if (this._canvas == undefined) {\n return;\n }\n if (this._abortController.signal.aborted) {\n this._abortController = new AbortController();\n }\n this._canvas.addEventListener(\n 'touchstart',\n this.touchstartHandler as EventListener,\n { signal: this._abortController.signal }\n );\n this._canvas.addEventListener(\n 'touchend',\n this.touchendHandler as EventListener,\n { signal: this._abortController.signal }\n );\n this._canvas.addEventListener(\n 'touchcancel',\n this.touchcancelHandler as EventListener,\n { signal: this._abortController.signal }\n );\n this._canvas.addEventListener(\n 'touchmove',\n this.touchmoveHandler as EventListener,\n { signal: this._abortController.signal }\n );\n }\n\n tearDown(): void {\n this._abortController.abort();\n this._abortController = new AbortController();\n this._canvas = undefined;\n }\n\n get disabled(): boolean {\n return this._disabled;\n }\n\n disable(): void {\n this._disabled = true;\n }\n\n enable(): void {\n this._disabled = false;\n }\n\n private processEvent<K extends keyof TouchEventMapping>(\n ...args: EventArgs<TouchEventMapping, K>\n ): void {\n const result = this._stateMachine.happens(...args);\n if (\n result.handled &&\n 'output' in result &&\n result.output !== undefined\n ) {\n this._orchestrator.processInputEventOutput(result.output);\n }\n }\n\n touchstartHandler(e: TouchEvent) {\n if (this._disabled) {\n return;\n }\n\n const pointsAdded: TouchPoints[] = [];\n for (let i = 0; i < e.changedTouches.length; i++) {\n pointsAdded.push({\n ident: e.changedTouches[i].identifier,\n x: e.changedTouches[i].clientX,\n y: e.changedTouches[i].clientY,\n });\n }\n this.processEvent('touchstart', { points: pointsAdded });\n e.preventDefault();\n }\n\n touchcancelHandler(e: TouchEvent) {\n if (this._disabled) {\n return;\n }\n const pointsRemoved: TouchPoints[] = [];\n for (let i = 0; i < e.changedTouches.length; i++) {\n pointsRemoved.push({\n ident: e.changedTouches[i].identifier,\n x: e.changedTouches[i].clientX,\n y: e.changedTouches[i].clientY,\n });\n }\n this.processEvent('touchend', { points: pointsRemoved });\n }\n\n touchendHandler(e: TouchEvent) {\n if (this._disabled) {\n return;\n }\n const pointsRemoved: TouchPoints[] = [];\n for (let i = 0; i < e.changedTouches.length; i++) {\n pointsRemoved.push({\n ident: e.changedTouches[i].identifier,\n x: e.changedTouches[i].clientX,\n y: e.changedTouches[i].clientY,\n });\n }\n this.processEvent('touchend', { points: pointsRemoved });\n }\n\n touchmoveHandler(e: TouchEvent) {\n if (this._disabled) {\n return;\n }\n e.preventDefault();\n const pointsMoved: TouchPoints[] = [];\n for (let i = 0; i < e.targetTouches.length; i++) {\n pointsMoved.push({\n ident: e.targetTouches[i].identifier,\n x: e.targetTouches[i].clientX,\n y: e.targetTouches[i].clientY,\n });\n }\n this.processEvent('touchmove', { points: pointsMoved });\n }\n\n attach(canvas: HTMLCanvasElement) {\n this.tearDown();\n this._canvas = canvas;\n this.setUp();\n }\n}\n",
|
|
83
83
|
"import type { Point } from '@ue-too/math';\n\nimport { AsyncObservable, Observable, Observer } from '../../utils/observable';\n\n/**\n * Function to unsubscribe from raw user input events.\n *\n * @remarks\n * Calling this function removes the subscriber from the event stream.\n *\n * @category Raw Input Publisher\n */\nexport type UnsubscribeToUserRawInput = () => void;\n\n/**\n * Payload for pan input events.\n *\n * @property diff - The pan delta in viewport pixels\n *\n * @category Raw Input Publisher\n */\nexport type RawUserPanInputEventPayload = {\n diff: Point;\n};\n\n/**\n * Pan input event with discriminated type.\n *\n * @remarks\n * The `type` property allows TypeScript discriminated unions to distinguish\n * between different event types when subscribing to the \"all\" event stream.\n *\n * @category Raw Input Publisher\n */\nexport type RawUserPanInputEvent = {\n type: 'pan';\n} & RawUserPanInputEventPayload;\n\n/**\n * Payload for zoom input events.\n *\n * @property deltaZoomAmount - The zoom delta (scale change)\n * @property anchorPoint - The zoom anchor point in viewport coordinates\n *\n * @category Raw Input Publisher\n */\nexport type RawUserZoomInputEventPayload = {\n deltaZoomAmount: number;\n anchorPoint: Point;\n};\n\n/**\n * Zoom input event with discriminated type.\n *\n * @remarks\n * The `type` property allows TypeScript discriminated unions to distinguish\n * between different event types when subscribing to the \"all\" event stream.\n *\n * @category Raw Input Publisher\n */\nexport type RawUserZoomInputEvent = {\n type: 'zoom';\n} & RawUserZoomInputEventPayload;\n\n/**\n * Payload for rotate input events.\n *\n * @property deltaRotation - The rotation delta in radians\n *\n * @category Raw Input Publisher\n */\nexport type RawUserRotateInputEventPayload = {\n deltaRotation: number;\n};\n\n/**\n * Rotate input event with discriminated type.\n *\n * @remarks\n * The `type` property allows TypeScript discriminated unions to distinguish\n * between different event types when subscribing to the \"all\" event stream.\n *\n * @category Raw Input Publisher\n */\nexport type RawUserRotateInputEvent = {\n type: 'rotate';\n} & RawUserRotateInputEventPayload;\n\n/**\n * Mapping of event names to their payload types.\n *\n * @remarks\n * This type enables type-safe event subscription:\n * - Subscribe to specific events (\"pan\", \"zoom\", \"rotate\") to receive only those payloads\n * - Subscribe to \"all\" to receive all events with discriminated type property\n *\n * @category Raw Input Publisher\n */\nexport type RawUserInputEventMap = {\n pan: RawUserPanInputEventPayload;\n zoom: RawUserZoomInputEventPayload;\n rotate: RawUserRotateInputEventPayload;\n all: RawUserInputEvent;\n};\n\n/**\n * Union type of all raw user input events.\n *\n * @remarks\n * Use the `type` discriminator property to determine which event variant you have.\n *\n * @category Raw Input Publisher\n */\nexport type RawUserInputEvent =\n | RawUserPanInputEvent\n | RawUserZoomInputEvent\n | RawUserRotateInputEvent;\n\n/**\n * Callback function type for raw user input events.\n *\n * @typeParam K - The event name key from RawUserInputEventMap\n *\n * @category Raw Input Publisher\n */\nexport type RawUserInputCallback<K extends keyof RawUserInputEventMap> = (\n event: RawUserInputEventMap[K]\n) => void;\n\n/**\n * Interface for publishing raw user input events to observers.\n *\n * @remarks\n * This interface defines the contract for broadcasting user input events\n * to external subscribers. Implementations provide the observable pattern\n * for input event distribution.\n *\n * @category Raw Input Publisher\n */\nexport interface UserInputPublisher {\n /** Notifies subscribers of a pan gesture */\n notifyPan(diff: Point): void;\n /** Notifies subscribers of a zoom gesture */\n notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void;\n /** Notifies subscribers of a rotate gesture */\n notifyRotate(deltaRotation: number): void;\n /** Subscribes to input events */\n on<K extends keyof RawUserInputEventMap>(\n eventName: K,\n callback: (event: RawUserInputEventMap[K]) => void\n ): UnsubscribeToUserRawInput;\n}\n\n/**\n * Publisher for broadcasting raw user input events to observers.\n *\n * @remarks\n * This class implements the observable pattern to distribute user input events\n * to external subscribers. It operates in parallel to camera control - the\n * orchestrator both sends events to this publisher AND controls the camera.\n *\n * **Architecture**:\n * ```\n * Orchestrator → Publisher → Observers (UI, analytics, etc.)\n * ↓\n * CameraMux → CameraRig\n * ```\n *\n * **Event Streams**:\n * - **Specific streams**: Subscribe to \"pan\", \"zoom\", or \"rotate\" for typed events\n * - **Unified stream**: Subscribe to \"all\" for all events with type discriminator\n *\n * **Use Cases**:\n * - Update UI elements based on user interactions\n * - Log analytics about user gestures\n * - Synchronize secondary views or previews\n * - Implement custom gesture reactions independent of camera\n *\n * **Observable Implementation**:\n * Uses AsyncObservable for asynchronous event delivery, preventing observers\n * from blocking the input processing pipeline.\n *\n * @category Raw Input Publisher\n *\n * @example\n * ```typescript\n * const publisher = new RawUserInputPublisher();\n *\n * // Subscribe to pan events\n * const unsubscribe = publisher.on(\"pan\", (event) => {\n * console.log(\"User panned by:\", event.diff);\n * updateMinimap(event.diff);\n * });\n *\n * // Subscribe to all events\n * publisher.on(\"all\", (event) => {\n * switch (event.type) {\n * case \"pan\":\n * analytics.log(\"pan\", event.diff);\n * break;\n * case \"zoom\":\n * analytics.log(\"zoom\", event.deltaZoomAmount, event.anchorPoint);\n * break;\n * case \"rotate\":\n * analytics.log(\"rotate\", event.deltaRotation);\n * break;\n * }\n * });\n *\n * // Later, unsubscribe\n * unsubscribe();\n * ```\n */\nexport class RawUserInputPublisher implements UserInputPublisher {\n private pan: Observable<Parameters<RawUserInputCallback<'pan'>>>;\n private zoom: Observable<Parameters<RawUserInputCallback<'zoom'>>>;\n private rotate: Observable<Parameters<RawUserInputCallback<'rotate'>>>;\n private all: Observable<Parameters<RawUserInputCallback<'all'>>>;\n\n constructor() {\n this.pan = new AsyncObservable<\n Parameters<RawUserInputCallback<'pan'>>\n >();\n this.zoom = new AsyncObservable<\n Parameters<RawUserInputCallback<'zoom'>>\n >();\n this.rotate = new AsyncObservable<\n Parameters<RawUserInputCallback<'rotate'>>\n >();\n this.all = new AsyncObservable<\n Parameters<RawUserInputCallback<'all'>>\n >();\n }\n\n notifyPan(diff: Point): void {\n this.pan.notify({ diff: diff });\n this.all.notify({ type: 'pan', diff: diff });\n }\n\n notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void {\n this.zoom.notify({\n deltaZoomAmount: deltaZoomAmount,\n anchorPoint: anchorPoint,\n });\n this.all.notify({\n type: 'zoom',\n deltaZoomAmount: deltaZoomAmount,\n anchorPoint: anchorPoint,\n });\n }\n\n notifyRotate(deltaRotation: number): void {\n this.rotate.notify({ deltaRotation: deltaRotation });\n this.all.notify({ type: 'rotate', deltaRotation: deltaRotation });\n }\n\n on<K extends keyof RawUserInputEventMap>(\n eventName: K,\n callback: (event: RawUserInputEventMap[K]) => void\n ): UnsubscribeToUserRawInput {\n switch (eventName) {\n case 'pan':\n return this.pan.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'pan'>>\n >\n );\n case 'zoom':\n return this.zoom.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'zoom'>>\n >\n );\n case 'rotate':\n return this.rotate.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'rotate'>>\n >\n );\n case 'all':\n return this.all.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'all'>>\n >\n );\n default:\n throw new Error('Invalid raw user input event name');\n }\n }\n}\n\n/**\n * Creates a default raw user input publisher.\n *\n * @returns A new RawUserInputPublisher instance\n *\n * @remarks\n * Factory function for creating a standard publisher. Useful for dependency injection\n * and testing scenarios where you want to swap implementations.\n *\n * @category Raw Input Publisher\n */\nexport function createDefaultRawUserInputPublisher(): RawUserInputPublisher {\n return new RawUserInputPublisher();\n}\n\nexport class RawUserInputPublisherWithWebWorkerRelay implements UserInputPublisher {\n private pan: Observable<Parameters<RawUserInputCallback<'pan'>>>;\n private zoom: Observable<Parameters<RawUserInputCallback<'zoom'>>>;\n private rotate: Observable<Parameters<RawUserInputCallback<'rotate'>>>;\n private all: Observable<Parameters<RawUserInputCallback<'all'>>>;\n private webWorker: Worker;\n\n constructor(webWorker: Worker) {\n this.pan = new AsyncObservable<\n Parameters<RawUserInputCallback<'pan'>>\n >();\n this.zoom = new AsyncObservable<\n Parameters<RawUserInputCallback<'zoom'>>\n >();\n this.rotate = new AsyncObservable<\n Parameters<RawUserInputCallback<'rotate'>>\n >();\n this.all = new AsyncObservable<\n Parameters<RawUserInputCallback<'all'>>\n >();\n this.webWorker = webWorker;\n }\n\n notifyPan(diff: Point): void {\n this.webWorker.postMessage({\n type: 'notifyUserInput',\n payload: { type: 'pan', diff: diff },\n });\n this.pan.notify({ diff: diff });\n this.all.notify({ type: 'pan', diff: diff });\n }\n\n notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void {\n this.webWorker.postMessage({\n type: 'notifyUserInput',\n payload: {\n type: 'zoom',\n deltaZoomAmount: deltaZoomAmount,\n anchorPoint: anchorPoint,\n },\n });\n this.zoom.notify({\n deltaZoomAmount: deltaZoomAmount,\n anchorPoint: anchorPoint,\n });\n this.all.notify({\n type: 'zoom',\n deltaZoomAmount: deltaZoomAmount,\n anchorPoint: anchorPoint,\n });\n }\n\n notifyRotate(deltaRotation: number): void {\n this.webWorker.postMessage({\n type: 'notifyUserInput',\n payload: { type: 'rotate', deltaRotation: deltaRotation },\n });\n this.rotate.notify({ deltaRotation: deltaRotation });\n this.all.notify({ type: 'rotate', deltaRotation: deltaRotation });\n }\n\n on<K extends keyof RawUserInputEventMap>(\n eventName: K,\n callback: (event: RawUserInputEventMap[K]) => void\n ): UnsubscribeToUserRawInput {\n switch (eventName) {\n case 'pan':\n return this.pan.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'pan'>>\n >\n );\n case 'zoom':\n return this.zoom.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'zoom'>>\n >\n );\n case 'rotate':\n return this.rotate.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'rotate'>>\n >\n );\n case 'all':\n return this.all.subscribe(\n callback as Observer<\n Parameters<RawUserInputCallback<'all'>>\n >\n );\n default:\n throw new Error('Invalid raw user input event name');\n }\n }\n}\n"
|
|
84
84
|
],
|
|
85
|
-
"mappings": "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",
|
|
86
|
-
"debugId": "
|
|
85
|
+
"mappings": ";AACA,qBAAS;;AC8CF,MAAM,MAA2B;AAAA,EAIpC,WAAW,GAAG;AAAA,EAQd,cAAc,CAAC,MAAiC;AAAA,IAC5C,OAAO,EAAE,kBAAkB,MAAM,OAAO,KAAK;AAAA;AAAA,EAUjD,eAAe,CACX,iBACA,aACmB;AAAA,IACnB,OAAO;AAAA,MACH,kBAAkB;AAAA,MAClB,OAAO;AAAA,MACP;AAAA,IACJ;AAAA;AAAA,EASJ,mBAAmB,CAAC,eAAgD;AAAA,IAChE,OAAO,EAAE,kBAAkB,MAAM,OAAO,cAAc;AAAA;AAE9D;AAuBO,SAAS,sBAAsB,GAAc;AAAA,EAChD,OAAO,IAAI;AAAA;;ACjHf;AAAA;AA+HO,MAAM,+BAA+B,qBAK1C;AAAA,EACE,WAAW,CACP,QASA,cACA,SACF;AAAA,IACE,MAAM,QAAQ,cAAc,OAAO;AAAA;AAAA,EAavC,cAAc,CAAC,MAAa;AAAA,IACxB,OAAO,KAAK,QAAQ,kBAAkB,EAAE,KAAW,CAAC;AAAA;AAAA,EAaxD,yBAAyB,CAAC,QAAe;AAAA,IACrC,OAAO,KAAK,QAAQ,wBAAwB,EAAE,OAAe,CAAC;AAAA;AAAA,EAUlE,iBAAiB,GAAG;AAAA,IAChB,OAAO,KAAK,QAAQ,mBAAmB;AAAA;AAE/C;AAAA;AAOO,MAAM,gCAAgC,cAK3C;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,gBAAgB;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,gBAAgB;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,0BAA0B;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,0BAA0B;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB,EAAE,QAAQ,OAAO,oBAAoB,aAAa;AAAA,EACzE;AAAA,EAEA,qBAAqB,CACjB,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,iBAAiB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGxD,qBAAqB,CACjB,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAGxD,+BAA+B,CAC3B,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,iBAAiB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGxD,+BAA+B,CAC3B,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA;AAE5D;AAAA;AAOO,MAAM,wBAAwB,cAKnC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,gBAAgB;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,gBAAgB;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,sBAAsB;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,sBAAsB;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,0BAA0B;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,0BAA0B;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,qBAAqB,CACjB,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,iBAAiB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGxD,qBAAqB,CACjB,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAGxD,2BAA2B,CACvB,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,iBAAiB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGxD,2BAA2B,CACvB,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAGxD,+BAA+B,CAC3B,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,iBAAiB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGxD,+BAA+B,CAC3B,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA;AAE5D;AAAA;AAOO,MAAM,4BAA4B,cAKvC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,QAAQ,EAAE,QAAQ,OAAO,oBAAoB,uBAAuB;AAAA,IACpE,0BAA0B;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,0BAA0B;AAAA,MACtB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,+BAA+B,CAC3B,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,iBAAiB,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGxD,+BAA+B,CAC3B,SACA,SACqB;AAAA,IACrB,OAAO,EAAE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA;AAE5D;AAOO,SAAS,6BAA6B,GAQ3C;AAAA,EACE,OAAO;AAAA,IACH,sBAAsB,IAAI;AAAA,IAC1B,YAAY,IAAI;AAAA,IAChB,kBAAkB,IAAI;AAAA,EAC1B;AAAA;AAqBG,SAAS,mCAAmC,CAC/C,UAAuB,EAAE,OAAO,OAAO,SAAS,MAAM,GAChC;AAAA,EACtB,OAAO,IAAI,uBACP,8BAA8B,GAC9B,wBACA,OACJ;AAAA;;;ACzbJ,kBAAS,yBAAO,wCAAe;AAAA;AA8HxB,MAAM,kCAAkC,sBAK7C;AAAA,EACE,WAAW,CACP,QASA,cACA,SACF;AAAA,IACE,MAAM,QAAQ,cAAc,OAAO;AAAA;AAAA,EAavC,mBAAmB,CAAC,MAAc;AAAA,IAC9B,OAAO,KAAK,QAAQ,qBAAqB,EAAE,KAAW,CAAC;AAAA;AAAA,EAa3D,4BAA4B,CAAC,QAAgB;AAAA,IACzC,OAAO,KAAK,QAAQ,2BAA2B,EAAE,OAAe,CAAC;AAAA;AAAA,EAUrE,iBAAiB,GAAS;AAAA,IACtB,KAAK,QAAQ,mBAAmB;AAAA;AAExC;AAAA;AAOO,MAAM,wCAAwC,eAKnD;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB,EAAE,QAAQ,QAAO,oBAAoB,aAAa;AAAA,EACzE;AAAA,EAEA,wBAAwB,CACpB,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGnD,wBAAwB,CACpB,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAGtD,kCAAkC,CAC9B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGnD,kCAAkC,CAC9B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,QAAQ,QAAQ,OAAO;AAAA;AAE1D;AAAA;AAOO,MAAM,gCAAgC,eAK3C;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,yBAAyB;AAAA,MACrB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,yBAAyB;AAAA,MACrB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,wBAAwB,CACpB,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGnD,wBAAwB,CACpB,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAGtD,8BAA8B,CAC1B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGnD,8BAA8B,CAC1B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,QAAQ,QAAQ,OAAO;AAAA;AAAA,EAGtD,kCAAkC,CAC9B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGnD,kCAAkC,CAC9B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,QAAQ,QAAQ,OAAO;AAAA;AAE1D;AAAA;AAOO,MAAM,oCAAoC,eAK/C;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,QAAQ,EAAE,QAAQ,QAAO,oBAAoB,uBAAuB;AAAA,IACpE,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,kCAAkC,CAC9B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,OAAO,QAAQ,KAAK;AAAA;AAAA,EAGnD,kCAAkC,CAC9B,SACA,SACwB;AAAA,IACxB,OAAO,EAAE,MAAM,YAAY,QAAQ,QAAQ,OAAO;AAAA;AAE1D;AAOO,SAAS,gCAAgC,GAQ9C;AAAA,EACE,OAAO;AAAA,IACH,sBAAsB,IAAI;AAAA,IAC1B,YAAY,IAAI;AAAA,IAChB,kBAAkB,IAAI;AAAA,EAC1B;AAAA;AAqBG,SAAS,sCAAsC,CAClD,UAAuB,EAAE,OAAO,QAAO,SAAS,OAAM,GAC7B;AAAA,EACzB,OAAO,IAAI,0BACP,iCAAiC,GACjC,wBACA,OACJ;AAAA;;;ACxbJ,kBAAS,yBAAO,wCAAe;AAAA;AAoIxB,MAAM,oCAAoC,eAK/C;AAAA,EACY,kBAKN;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,oBAAoB,EAAE,QAAQ,QAAO,oBAAoB,aAAa;AAAA,EAC1E;AAAA,EAEA,iBAAiB,CACb,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,iBAAiB,CACb,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAER;AAAA;AAOO,MAAM,4BAA4B,eAKvC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,yBAAyB;AAAA,MACrB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,yBAAyB;AAAA,MACrB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,+BAA+B;AAAA,MAC3B,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,8BAA8B;AAAA,MAC1B,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,2BAA2B,CACvB,SACA,SACsB;AAAA,IACtB,OAAO,EAAE,MAAM,UAAU,WAAW,QAAQ,UAAU;AAAA;AAAA,EAG1D,2BAA2B,CACvB,SACA,SACsB;AAAA,IACtB,OAAO,EAAE,MAAM,UAAU,YAAY,QAAQ,WAAW;AAAA;AAAA,EAG5D,iBAAiB,CACb,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,iBAAiB,CACb,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,uBAAuB,CACnB,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,6BAA6B,CACzB,SACA,SACsB;AAAA,IACtB,OAAO,EAAE,MAAM,UAAU,WAAW,QAAQ,UAAU;AAAA;AAAA,EAG1D,uBAAuB,CACnB,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,6BAA6B,CACzB,SACA,SACsB;AAAA,IACtB,OAAO,EAAE,MAAM,UAAU,YAAY,QAAQ,WAAW;AAAA;AAAA,EAG5D,4BAA4B,CACxB,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAER;AAAA;AAOO,MAAM,gCAAgC,eAK3C;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,6BAA6B;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,2BAA2B,CACvB,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,2BAA2B,CACvB,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,iBAAiB,CACb,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAAA,EAGJ,iBAAiB,CACb,SACA,SACsB;AAAA,IACtB,OAAO;AAAA,MACH,MAAM;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,IACzB;AAAA;AAER;AAAA;AAmCO,MAAM,gCAAgC,sBAK3C;AAAA,EACE,WAAW,CACP,QASA,cACA,SACF;AAAA,IACE,MAAM,QAAQ,cAAc,OAAO;AAAA;AAAA,EAavC,mBAAmB,CAAC,OAAe,IAAW;AAAA,IAC1C,OAAO,KAAK,QAAQ,qBAAqB;AAAA,MACrC,WAAW;AAAA,MACX,aAAa;AAAA,IACjB,CAAC;AAAA;AAAA,EAaL,4BAA4B,CAAC,OAAe,IAAW;AAAA,IACnD,OAAO,KAAK,QAAQ,2BAA2B;AAAA,MAC3C,WAAW;AAAA,MACX,aAAa;AAAA,IACjB,CAAC;AAAA;AAAA,EAaL,yBAAyB,CAAC,YAAoB,IAAW;AAAA,IACrD,OAAO,KAAK,QAAQ,iCAAiC;AAAA,MACjD;AAAA,MACA,aAAa;AAAA,IACjB,CAAC;AAAA;AAAA,EAaL,wBAAwB,CAAC,YAAoB,IAAW;AAAA,IACpD,OAAO,KAAK,QAAQ,gCAAgC;AAAA,MAChD;AAAA,MACA,aAAa;AAAA,IACjB,CAAC;AAAA;AAAA,EAUL,iBAAiB,GAAG;AAAA,IAChB,OAAO,KAAK,QAAQ,oBAAoB;AAAA;AAEhD;AAOO,SAAS,8BAA8B,GAQ5C;AAAA,EACE,OAAO;AAAA,IACH,sBAAsB,IAAI;AAAA,IAC1B,YAAY,IAAI;AAAA,IAChB,kBAAkB,IAAI;AAAA,EAC1B;AAAA;AAqBG,SAAS,oCAAoC,CAChD,UAAuB,EAAE,OAAO,QAAO,SAAS,OAAM,GAC/B;AAAA,EACvB,OAAO,IAAI,wBACP,+BAA+B,GAC/B,wBACA,OACJ;AAAA;;;ACzfG,MAAM,8BAAmD;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EAaR,WAAW,CACP,iBACA,kBACA,oBACF;AAAA,IACE,KAAK,mBAAmB;AAAA,IACxB,KAAK,oBAAoB;AAAA,IACzB,KAAK,sBAAsB;AAAA;AAAA,EAwB/B,yBAAyB,CAAC,QAAmC;AAAA,IACzD,MAAM,MAAM,KAAK,iBAAiB,0BAA0B,MAAM;AAAA,IAElE,IAAI,IAAI,SAAS;AAAA,MACb,MAAM,SAAS,IAAI;AAAA,MACnB,IAAI,WAAW,WAAW;AAAA,QACtB,QAAQ,OAAO;AAAA,eACN;AAAA,YACD,OAAO,EAAE,kBAAkB,MAAM,OAAO,OAAO,MAAM;AAAA,eACpD;AAAA,YACD,OAAO,EAAE,kBAAkB,MAAM,OAAO,OAAO,OAAO;AAAA;AAAA,YAEtD,OAAO,EAAE,kBAAkB,MAAM;AAAA;AAAA,MAE7C;AAAA,IACJ;AAAA,IACA,OAAO,EAAE,kBAAkB,MAAM;AAAA;AAAA,EAyBrC,cAAc,CAAC,OAAkC;AAAA,IAC7C,MAAM,SAAS,KAAK,iBAAiB,QAAQ,kBAAkB;AAAA,MAC3D,MAAM;AAAA,IACV,CAAC;AAAA,IACD,IAAI,OAAO,WAAW,YAAY,UAAU,OAAO,QAAQ;AAAA,MACvD,MAAM,SAAS,OAAO;AAAA,MACtB,IAAI,OAAO,SAAS,QAAQ;AAAA,QACxB,OAAO,EAAE,kBAAkB,MAAM,MAAa;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,OAAO,EAAE,kBAAkB,MAAM;AAAA;AAAA,EA0BrC,eAAe,CAAC,OAAe,IAAgC;AAAA,IAC3D,MAAM,SAAS,KAAK,kBAAkB,QAAQ,qBAAqB;AAAA,MAC/D,WAAW;AAAA,MACX,aAAa;AAAA,IACjB,CAAC;AAAA,IACD,IAAI,OAAO,WAAW,YAAY,UAAU,OAAO,QAAQ;AAAA,MACvD,MAAM,SAAS,OAAO;AAAA,MACtB,IAAI,OAAO,SAAS,QAAQ;AAAA,QACxB,OAAO,EAAE,kBAAkB,MAAM;AAAA,MACrC;AAAA,MAGA,IAAI,KAAK,iBAAiB,iBAAiB,oBAAoB;AAAA,QAC3D,OAAO,EAAE,kBAAkB,MAAM,MAAM;AAAA,MAC3C;AAAA,MACA,OAAO,EAAE,kBAAkB,MAAM,OAAO,aAAa,GAAG;AAAA,IAC5D;AAAA,IACA,OAAO,EAAE,kBAAkB,MAAM;AAAA;AAAA,EAarC,mBAAmB,CAAC,OAAe;AAAA,IAC/B,OAAO,KAAK,oBAAoB,oBAAoB,KAAK;AAAA;AAAA,EAa7D,4BAA4B,CAAC,QAAgB;AAAA,IACzC,OAAO,KAAK,oBAAoB,6BAA6B,MAAM;AAAA;AAAA,EAcvE,wBAAwB,CACpB,YACA,KAAY,EAAE,GAAG,GAAG,GAAG,EAAE,GACrB;AAAA,IACJ,KAAK,kBAAkB,0BAA0B,YAAY,EAAE;AAAA;AAAA,EAanE,6BAA6B,CACzB,YACA,KAAY,EAAE,GAAG,GAAG,GAAG,EAAE,GACrB;AAAA,IACJ,KAAK,kBAAkB,yBAAyB,YAAY,EAAE;AAAA;AAAA,EAwBlE,mBAAmB,CAAC,OAAwC;AAAA,IACxD,MAAM,SAAS,KAAK,oBAAoB,QAAQ,qBAAqB;AAAA,MACjE,MAAM;AAAA,IACV,CAAC;AAAA,IACD,IAAI,OAAO,WAAW,YAAY,UAAU,OAAO,QAAQ;AAAA,MACvD,MAAM,SAAS,OAAO;AAAA,MACtB,IAAI,OAAO,SAAS,QAAQ;AAAA,QACxB,OAAO,EAAE,kBAAkB,MAAM,MAAa;AAAA,MAClD;AAAA,IACJ;AAAA,IACA,OAAO,EAAE,kBAAkB,MAAM;AAAA;AAAA,EAUrC,oBAAoB,GAAS;AAAA,IACzB,KAAK,iBAAiB,kBAAkB;AAAA;AAAA,EAU5C,qBAAqB,GAAS;AAAA,IAC1B,KAAK,kBAAkB,kBAAkB;AAAA;AAAA,EAU7C,uBAAuB,GAAS;AAAA,IAC5B,KAAK,oBAAoB,kBAAkB;AAAA;AAAA,MAY3C,kBAAkB,GAA8B;AAAA,IAChD,OAAO,KAAK;AAAA;AAAA,MAYZ,eAAe,GAA2B;AAAA,IAC1C,OAAO,KAAK;AAAA;AAAA,MAYZ,gBAAgB,GAA4B;AAAA,IAC5C,OAAO,KAAK;AAAA;AAEpB;AA0CO,SAAS,mCAAmC,GAAkC;AAAA,EACjF,MAAM,kBAAkB,oCAAoC;AAAA,EAC5D,MAAM,mBAAmB,qCAAqC;AAAA,EAC9D,MAAM,qBAAqB,uCAAuC;AAAA,EAClE,OAAO,IAAI,8BACP,iBACA,kBACA,kBACJ;AAAA;;AC1ZG,SAAS,kBAAyC,IAClD,UACa;AAAA,EAChB,MAAM,qBAAqB,MAAM,QAAQ,SAAS,EAAE,IAC9C,SAAS,KACR;AAAA,EACP,OAAO,CAAC,UAAa,SAAkB;AAAA,IACnC,OAAO,mBAAmB,OACtB,CAAC,KAAK,YAAY,QAAQ,KAAK,GAAG,IAAI,GACtC,KACJ;AAAA;AAAA;;;ACJD,SAAS,sBAAsB,CAClC,iBACO;AAAA,EACP,IAAI,oBAAoB,WAAW;AAAA,IAC/B,OAAO;AAAA,EACX;AAAA,EACA,IACI,gBAAgB,QAAQ,aACxB,gBAAgB,QAAQ,aACxB,gBAAgB,MAAM,gBAAgB,KACxC;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AA0BJ,SAAS,cAAc,CAC1B,WACA,iBACM;AAAA,EACN,IACI,sBAAsB,WAAW,eAAe,KAChD,oBAAoB,WACtB;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,IAAI,gBAAgB,KAAK;AAAA,IACrB,YAAY,KAAK,IAAI,gBAAgB,KAAK,SAAS;AAAA,EACvD;AAAA,EACA,IAAI,gBAAgB,KAAK;AAAA,IACrB,YAAY,KAAK,IAAI,gBAAgB,KAAK,SAAS;AAAA,EACvD;AAAA,EACA,OAAO;AAAA;AAgCJ,SAAS,qBAAqB,CACjC,WACA,iBACO;AAAA,EACP,IAAI,oBAAoB,WAAW;AAAA,IAC/B,OAAO;AAAA,EACX;AAAA,EACA,IACI,aAAa,KACZ,oBAAoB,cACf,gBAAgB,QAAQ,aACtB,gBAAgB,MAAM,aACrB,gBAAgB,QAAQ,aACrB,gBAAgB,MAAM,YACpC;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;;;ACkEJ,SAAS,kBAAkB,CAC9B,aACA,QACA,QACM;AAAA,EACN,IAAI,CAAC,OAAO,WAAW;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACA,OAAO,eAAe,aAAa,OAAO,cAAc;AAAA;AA8CrD,SAAS,kBAAkB,CAC9B,OACA,QACA,QACM;AAAA,EACN,IAAI,CAAC,OAAO,WAAW;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,aAAa,OAAO,YAAY;AAAA,EACpC,aAAa,eAAe,YAAY,OAAO,cAAc;AAAA,EAC7D,QAAQ,aAAa,OAAO;AAAA,EAC5B,OAAO;AAAA;AA0CJ,SAAS,qBAAqB,CACjC,aACA,QACA,QACM;AAAA,EACN,IAAI,OAAO,cAAc;AAAA,IACrB,OAAO,OAAO;AAAA,EAClB;AAAA,EACA,OAAO;AAAA;AAwCJ,SAAS,qBAAqB,CACjC,OACA,QACA,QACM;AAAA,EACN,IAAI,OAAO,cAAc;AAAA,IACrB,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAoDJ,SAAS,8BAA8B,GAA0B;AAAA,EACpE,OAAO,mBACH,oBACA,qBACJ;AAAA;AAsDG,SAAS,8BAA8B,GAA0B;AAAA,EACpE,OAAO,mBACH,oBACA,qBACJ;AAAA;;ACneJ,qBAAgB;;;ACAhB,qBAAgB;;;ACAhB,qBAAgB;;;ACAhB;AAwCO,SAAS,0BAA0B,CACtC,eACA,8BAAqC,EAAE,GAAG,GAAG,GAAG,EAAE,GAClD,0BAAmC,OAC9B;AAAA,EACL,MAAM,MAAM,SAAS,UAAU,eAAe,2BAA2B;AAAA,EACzE,IAAI,yBAAyB;AAAA,IACzB,IAAI,IAAI,CAAC,IAAI;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAyCJ,SAAS,0BAA0B,CACtC,iBACA,8BAAqC,EAAE,GAAG,GAAG,GAAG,EAAE,GAClD,0BAAmC,OAC9B;AAAA,EACL,IAAI,yBAAyB;AAAA,IACzB,gBAAgB,IAAI,CAAC,gBAAgB;AAAA,EACzC;AAAA,EACA,OAAO,SAAS,UAAU,iBAAiB,2BAA2B;AAAA;;;AClG1E,qBAAgB;AAiDT,SAAS,yBAAyB,CACrC,iBACA,4BACA,iBACA,gBACA,uBAAgC,OAC3B;AAAA,EACL,MAAM,aAAa,UAAS,uBACxB,iBACA,IAAI,eACR;AAAA,EACA,MAAM,cAAc,UAAS,YAAY,YAAY,cAAc;AAAA,EACnE,IAAI,sBAAsB;AAAA,IACtB,YAAY,IAAI,CAAC,YAAY;AAAA,EACjC;AAAA,EACA,MAAM,aAAa,UAAS,UACxB,aACA,0BACJ;AAAA,EACA,OAAO;AAAA;AAsDJ,SAAS,yBAAyB,CACrC,cACA,4BACA,iBACA,gBACA,uBAAgC,OAC3B;AAAA,EACL,MAAM,aAAa,UAAS,UACxB,cACA,0BACJ;AAAA,EACA,IAAI,sBAAsB;AAAA,IACtB,WAAW,IAAI,CAAC,WAAW;AAAA,EAC/B;AAAA,EACA,MAAM,SAAS,UAAS,uBAAuB,YAAY,eAAe;AAAA,EAC1E,MAAM,UAAU,UAAS,YAAY,QAAQ,CAAC,cAAc;AAAA,EAC5D,OAAO;AAAA;;;AC5BJ,SAAS,qBAAqB,CACjC,iBACA,kBACA,aACA,cACF;AAAA,EAME,MAAM,IAAI,gBAAgB;AAAA,EAC1B,MAAM,IAAI,gBAAgB;AAAA,EAC1B,MAAM,IAAI,gBAAgB;AAAA,EAC1B,MAAM,IAAI,gBAAgB;AAAA,EAC1B,MAAM,KAAK,gBAAgB;AAAA,EAC3B,MAAM,KAAK,gBAAgB;AAAA,EAI3B,MAAM,WAAW,CAAC,KAAK,MAAM,GAAG,CAAC;AAAA,EAGjC,MAAM,aAAa,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC;AAAA,EAC1C,MAAM,OAAO,aAAa;AAAA,EAO1B,IAAI,UAAU,CAAC,IAAI,EAAE;AAAA,EAGrB,UAAU,CAAC,QAAQ,KAAK,kBAAkB,QAAQ,KAAK,gBAAgB;AAAA,EAGvE,UAAU,CAAC,QAAQ,KAAK,cAAc,GAAG,QAAQ,KAAK,eAAe,CAAC;AAAA,EAGtE,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAAA,EAC/B,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAAA,EAC/B,UAAU;AAAA,IACN,QAAQ,QAAQ,KAAK,QAAQ,QAAQ;AAAA,IACrC,QAAQ,QAAQ,KAAK,QAAQ,QAAQ;AAAA,EACzC;AAAA,EAGA,UAAU,CAAC,QAAQ,KAAK,MAAM,QAAQ,KAAK,IAAI;AAAA,EAG/C,MAAM,UAAU,CAAC,QAAQ;AAAA,EACzB,MAAM,UAAU,CAAC,QAAQ;AAAA,EAEzB,OAAO;AAAA,IACH,UAAU,EAAE,GAAG,SAAS,GAAG,QAAQ;AAAA,IACnC;AAAA,IACA;AAAA,EACJ;AAAA;AAoDG,SAAS,kBAAkB,CAC9B,WACA,MACA,UACA,kBACA,aACA,cACF;AAAA,EAEE,IAAI,SAA+B;AAAA,IAC/B,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EAGA,MAAM,mBAAmB,eAAe,QAAQ;AAAA,IAC5C,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,cAAc;AAAA,IACjB,GAAG,eAAe;AAAA,EACtB,CAAC;AAAA,EAGD,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAAA,EAChC,MAAM,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAAA,EAChC,MAAM,gBAAgB,eAAe,kBAAkB;AAAA,IACnD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,CAAC;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAC;AAAA,EAGD,MAAM,eAAe,eAAe,eAAe;AAAA,IAC/C,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAC;AAAA,EAGD,MAAM,mBAAmB,eAAe,cAAc;AAAA,IAClD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,CAAC,UAAU;AAAA,IACd,GAAG,CAAC,UAAU;AAAA,EAClB,CAAC;AAAA,EACD,OAAO;AAAA;AAoDJ,SAAS,cAAc,CAC1B,IACA,IACF;AAAA,EACE,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,MAAM,GAAG;AAAA,EACf,MAAM,MAAM,GAAG;AAAA,EAEf,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,MAAM,GAAG;AAAA,EACf,MAAM,MAAM,GAAG;AAAA,EAEf,OAAO;AAAA,IACH,GAAG,KAAK,KAAK,KAAK;AAAA,IAClB,GAAG,KAAK,KAAK,KAAK;AAAA,IAClB,GAAG,KAAK,KAAK,KAAK;AAAA,IAClB,GAAG,KAAK,KAAK,KAAK;AAAA,IAClB,GAAG,KAAK,MAAM,KAAK,MAAM;AAAA,IACzB,GAAG,KAAK,MAAM,KAAK,MAAM;AAAA,EAC7B;AAAA;AAWG,SAAS,YAAY,CAAC,QAI3B;AAAA,EACE,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM;AAAA,EAG7B,MAAM,cAAc,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAMjC,MAAM,MAAM,IAAI,IAAI,IAAI;AAAA,EACxB,IAAI,KAAK,IAAI,GAAG,IAAI,cAAO;AAAA,IAEvB,MAAM,IAAI,MAAM,6CAA6C;AAAA,EACjE;AAAA,EAIA,MAAM,WAAW,KAAK,MAAM,GAAG,CAAC;AAAA,EAGhC,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAAA,EAC/B,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAAA,EAI/B,MAAM,SAAS,IAAI,QAAQ,IAAI;AAAA,EAC/B,MAAM,SAAS,IAAI,CAAC,QAAQ,IAAI;AAAA,EAGhC,IAAI,gBAAgB;AAAA,EACpB,IAAI,cAAc;AAAA,EAClB,IAAI,cAAc;AAAA,EAElB,IAAI,SAAS,GAAG;AAAA,IACZ,cAAc,CAAC;AAAA,IACf,iBAAiB,KAAK;AAAA,EAC1B;AAAA,EACA,IAAI,SAAS,GAAG;AAAA,IACZ,cAAc,CAAC;AAAA,IACf,iBAAiB,KAAK;AAAA,EAC1B;AAAA,EAGA,OAAO,gBAAgB,KAAK;AAAA,IAAI,iBAAiB,IAAI,KAAK;AAAA,EAC1D,OAAO,gBAAgB,CAAC,KAAK;AAAA,IAAI,iBAAiB,IAAI,KAAK;AAAA,EAE3D,OAAO;AAAA,IACH;AAAA,IACA,UAAU;AAAA,IACV,OAAO,EAAE,GAAG,aAAa,GAAG,YAAY;AAAA,EAC5C;AAAA;AAyCG,SAAS,eAAe,CAC3B,aACA,UACA,OACoB;AAAA,EACpB,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAAA,EAC/B,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAAA,EAE/B,OAAO;AAAA,IACH,GAAG,MAAM,IAAI;AAAA,IACb,GAAG,MAAM,IAAI;AAAA,IACb,GAAG,CAAC,MAAM,IAAI;AAAA,IACd,GAAG,MAAM,IAAI;AAAA,IACb,GAAG,YAAY;AAAA,IACf,GAAG,YAAY;AAAA,EACnB;AAAA;AAYG,SAAS,eAAe,CAAC,QAI9B;AAAA,EACE,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM;AAAA,EAG7B,MAAM,cAAc,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAGjC,MAAM,MAAM,GACR,MAAM;AAAA,EACV,MAAM,MAAM,GACR,MAAM;AAAA,EAMV,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,EAChC,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,EAChC,MAAM,QAAQ;AAAA,EACd,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,EAGhC,MAAM,QAAQ,QAAQ;AAAA,EACtB,MAAM,MAAM,QAAQ,QAAQ,QAAQ;AAAA,EACpC,MAAM,eAAe,QAAQ,QAAQ,IAAI;AAAA,EAEzC,IAAI,eAAe,GAAG;AAAA,IAClB,MAAM,IAAI,MAAM,+BAA+B;AAAA,EACnD;AAAA,EAEA,MAAM,WAAW,KAAK,KAAK,YAAY;AAAA,EACvC,MAAM,WAAW,QAAQ,YAAY;AAAA,EACrC,MAAM,WAAW,QAAQ,YAAY;AAAA,EAGrC,MAAM,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;AAAA,EACzC,MAAM,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;AAAA,EAGzC,MAAM,QAAQ,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,EAI7B,IAAI,WAAW;AAAA,EAEf,IAAI,KAAK,cAAO;AAAA,IAEZ,MAAM,MAAM;AAAA,IACZ,MAAM,MAAM,UAAU;AAAA,IACtB,MAAM,MAAM,UAAU;AAAA,IACtB,MAAM,MAAM;AAAA,IAGZ,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,MAAM,GAAG;AAAA,IAC9C,MAAM,SAAS,KAAK,KAAK,MAAM,MAAM,MAAM,GAAG;AAAA,IAE9C,IAAI,SAAS,gBAAS,SAAS,cAAO;AAAA,MAClC,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,OAAO,MAAM;AAAA,MACnB,MAAM,OAAO,MAAM;AAAA,MAGnB,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;AAAA,MACxC,MAAM,OAAO,MAAM,OAAO,MAAM,QAAQ;AAAA,MAExC,WAAW,KAAK,MAAM,KAAK,GAAG;AAAA,IAClC;AAAA,EACJ;AAAA,EAEA,OAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA;;;AHzgBG,SAAS,qBAAqB,CACjC,gBACA,eACA,eACA,gBACA,iBACA,gBACK;AAAA,EACL,MAAM,0BAA0B,2BAC5B,eACA,EAAE,GAAG,gBAAgB,GAAG,GAAG,iBAAiB,EAAE,GAC9C,KACJ;AAAA,EACA,OAAO,0BACH,yBACA,gBACA,iBACA,gBACA,KACJ;AAAA;AAmCG,SAAS,kBAAkB,CAC9B,OACA,eACA,gBACA,gBACA,iBACA,gBACK;AAAA,EACL,MAAM,kBAAkB,2BACpB,OACA,EAAE,GAAG,gBAAgB,GAAG,GAAG,iBAAiB,EAAE,GAC9C,KACJ;AAAA,EACA,OAAO,0BACH,iBACA,gBACA,iBACA,gBACA,KACJ;AAAA;AA6CG,SAAS,gCAAgC,CAC5C,OACA,gBACA,iBACA,gBACK;AAAA,EACL,OAAO,0BACH,OACA,gBACA,iBACA,gBACA,KACJ;AAAA;AAsCG,SAAS,mCAAmC,CAC/C,OACA,gBACA,iBACA,gBACK;AAAA,EACL,OAAO,0BACH,OACA,gBACA,iBACA,gBACA,KACJ;AAAA;AAmCG,SAAS,oBAAoB,CAChC,OACA,eACA,gBACA,gBACA,iBACA,gBACK;AAAA,EACL,MAAM,kBAAkB,0BACpB,OACA,gBACA,iBACA,gBACA,KACJ;AAAA,EACA,OAAO,2BACH,iBACA,EAAE,GAAG,gBAAgB,GAAG,GAAG,iBAAiB,EAAE,GAC9C,KACJ;AAAA;AAgCG,SAAS,iBAAiB,CAC7B,OACA,eACA,gBACA,gBACA,iBACA,gBACO;AAAA,EACP,MAAM,qBAAqB,qBACvB,OACA,eACA,gBACA,gBACA,iBACA,cACJ;AAAA,EACA,IACI,mBAAmB,IAAI,KACvB,mBAAmB,IAAI,iBACvB,mBAAmB,IAAI,KACvB,mBAAmB,IAAI,gBACzB;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAkCJ,SAAS,kCAAkC,CAC9C,OACA,iBACA,gBACK;AAAA,EACL,OAAO,UAAS,uBACZ,UAAS,YAAY,OAAO,cAAc,GAC1C,IAAI,eACR;AAAA;AAiCG,SAAS,kCAAkC,CAC9C,OACA,iBACA,gBACK;AAAA,EACL,OAAO,UAAS,uBACZ,UAAS,YAAY,OAAO,CAAC,cAAc,GAC3C,eACJ;AAAA;AA+CG,SAAS,mBAAmB,CAC/B,cACA,mBACA,iBACA,gBACK;AAAA,EACL,MAAM,SAAS,UAAS,uBACpB,mBACA,IAAI,eACR;AAAA,EACA,MAAM,UAAU,UAAS,YAAY,QAAQ,cAAc;AAAA,EAC3D,OAAO,UAAS,UAAU,cAAc,OAAO;AAAA;AAoB5C,SAAS,8BAA8B,CAC1C,gBACA,iBACA,gBACoB;AAAA,EACpB,MAAM,MAAM,KAAK,IAAI,cAAc;AAAA,EACnC,MAAM,MAAM,KAAK,IAAI,cAAc;AAAA,EACnC,MAAM,WAAW,eACb;AAAA,IACI,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,eAAe;AAAA,IAClB,GAAG,eAAe;AAAA,EACtB,GACA;AAAA,IACI,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,CAAC;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CACJ;AAAA,EACA,MAAM,YAAY,eAAe,UAAU;AAAA,IACvC,GAAG,IAAI;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,IAAI;AAAA,IACP,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAC;AAAA,EACD,OAAO;AAAA;AAmCJ,SAAS,0CAA0C,CACtD,OACA,sBACK;AAAA,EACL,OAAO;AAAA,IACH,GACI,MAAM,IAAI,qBAAqB,IAC/B,MAAM,IAAI,qBAAqB,IAC/B,qBAAqB;AAAA,IACzB,GACI,MAAM,IAAI,qBAAqB,IAC/B,MAAM,IAAI,qBAAqB,IAC/B,qBAAqB;AAAA,EAC7B;AAAA;;;ADnfG,SAAS,gBAAgB,CAC5B,OACA,YACO;AAAA,EACP,IAAI,cAAc,WAAW;AAAA,IAEzB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,WAAW;AAAA,EACf,IAAI,YAAY;AAAA,EAChB,IAAI,UAAU;AAAA,EACd,IAAI,aAAa;AAAA,EAEjB,IACI,WAAW,OAAO,aAClB,WAAW,IAAI,KAAK,aACpB,MAAM,KAAK,WAAW,IAAI,GAC5B;AAAA,IACE,YAAY;AAAA,EAChB;AAAA,EACA,IACI,WAAW,OAAO,aAClB,WAAW,IAAI,KAAK,aACpB,MAAM,KAAK,WAAW,IAAI,GAC5B;AAAA,IACE,WAAW;AAAA,EACf;AAAA,EACA,IACI,WAAW,OAAO,aAClB,WAAW,IAAI,KAAK,aACpB,MAAM,KAAK,WAAW,IAAI,GAC5B;AAAA,IACE,UAAU;AAAA,EACd;AAAA,EACA,IACI,WAAW,OAAO,aAClB,WAAW,IAAI,KAAK,aACpB,MAAM,KAAK,WAAW,IAAI,GAC5B;AAAA,IACE,aAAa;AAAA,EACjB;AAAA,EACA,OAAO,YAAY,aAAa,WAAW;AAAA;AA6BxC,SAAS,iBAAiB,CAAC,YAA6C;AAAA,EAC3E,IAAI,cAAc,WAAW;AAAA,IACzB,OAAO;AAAA,EACX;AAAA,EACA,MAAM,OAAO,WAAW,KAAK;AAAA,EAC7B,MAAM,OAAO,WAAW,KAAK;AAAA,EAC7B,IAAI,QAAQ,QAAa,QAAQ,QAAa,QAAQ,MAAM;AAAA,IACxD,OAAO;AAAA,EACX;AAAA,EACA,MAAM,OAAO,WAAW,KAAK;AAAA,EAC7B,MAAM,OAAO,WAAW,KAAK;AAAA,EAC7B,IAAI,QAAQ,QAAa,QAAQ,QAAa,QAAQ,MAAM;AAAA,IACxD,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AA+BJ,SAAS,sBAAsB,CAClC,YAIF;AAAA,EACE,IAAI,cAAc,WAAW;AAAA,IACzB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,WAAW,OAAO,aAAa,WAAW,OAAO,WAAW;AAAA,IAC5D,OAAO;AAAA,EACX;AAAA,EACA,IACI,WAAW,IAAI,KAAK,aACpB,WAAW,IAAI,KAAK,aACpB,WAAW,IAAI,KAAK,aACpB,WAAW,IAAI,KAAK,WACtB;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAgCJ,SAAS,UAAU,CACtB,OACA,YACK;AAAA,EACL,IAAI,iBAAiB,OAAO,UAAU,KAAK,cAAc,WAAW;AAAA,IAChE,OAAO;AAAA,EACX;AAAA,EACA,IAAI,kBAAkB,EAAE,GAAG,MAAM,GAAG,GAAG,MAAM,EAAE;AAAA,EAC/C,IAAI,QAAQ,WAAW;AAAA,EACvB,IAAI,SAAS,MAAW;AAAA,IACpB,IAAI,MAAM,KAAK,MAAW;AAAA,MACtB,gBAAgB,IAAI,KAAK,IAAI,gBAAgB,GAAG,MAAM,CAAC;AAAA,IAC3D;AAAA,IACA,IAAI,MAAM,KAAK,MAAW;AAAA,MACtB,gBAAgB,IAAI,KAAK,IAAI,gBAAgB,GAAG,MAAM,CAAC;AAAA,IAC3D;AAAA,EACJ;AAAA,EACA,QAAQ,WAAW;AAAA,EACnB,IAAI,SAAS,MAAW;AAAA,IACpB,IAAI,MAAM,KAAK,MAAW;AAAA,MACtB,gBAAgB,IAAI,KAAK,IAAI,gBAAgB,GAAG,MAAM,CAAC;AAAA,IAC3D;AAAA,IACA,IAAI,MAAM,KAAK,MAAW;AAAA,MACtB,gBAAgB,IAAI,KAAK,IAAI,gBAAgB,GAAG,MAAM,CAAC;AAAA,IAC3D;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AA0BJ,SAAS,kBAAkB,CAC9B,YACkB;AAAA,EAClB,IACI,cAAc,aACd,WAAW,OAAO,aAClB,WAAW,OAAO,aAClB,WAAW,IAAI,KAAK,aACpB,WAAW,IAAI,KAAK,WACtB;AAAA,IACE;AAAA,EACJ;AAAA,EACA,OAAO,WAAW,IAAI,IAAI,WAAW,IAAI;AAAA;AAuBtC,SAAS,sBAAsB,CAClC,YACkB;AAAA,EAClB,MAAM,mBAAmB,mBAAmB,UAAU;AAAA,EACtD,OAAO,oBAAoB,OAAY,mBAAmB,IAAI;AAAA;AA0B3D,SAAS,mBAAmB,CAC/B,YACkB;AAAA,EAClB,IACI,cAAc,aACd,WAAW,OAAO,aAClB,WAAW,OAAO,aAClB,WAAW,IAAI,KAAK,aACpB,WAAW,IAAI,KAAK,WACtB;AAAA,IACE;AAAA,EACJ;AAAA,EACA,OAAO,WAAW,IAAI,IAAI,WAAW,IAAI;AAAA;AAuBtC,SAAS,uBAAuB,CACnC,YACkB;AAAA,EAClB,MAAM,oBAAoB,oBAAoB,UAAU;AAAA,EACxD,OAAO,qBAAqB,OAAY,oBAAoB,IAAI;AAAA;AAoD7D,SAAS,wBAAwB,CACpC,OACA,eACA,gBACA,YACA,iBACA,gBACK;AAAA,EACL,IAAI,cAAc,WAAW;AAAA,IACzB,OAAO;AAAA,EACX;AAAA,EACA,IAAI,gBAAgB,sBAChB,OACA,EAAE,GAAG,GAAG,GAAG,eAAe,GAC1B,eACA,gBACA,iBACA,cACJ;AAAA,EACA,IAAI,mBAAmB,sBACnB,OACA,EAAE,GAAG,GAAG,GAAG,EAAE,GACb,eACA,gBACA,iBACA,cACJ;AAAA,EACA,IAAI,iBAAiB,sBACjB,OACA,EAAE,GAAG,eAAe,GAAG,eAAe,GACtC,eACA,gBACA,iBACA,cACJ;AAAA,EACA,IAAI,oBAAoB,sBACpB,OACA,EAAE,GAAG,eAAe,GAAG,EAAE,GACzB,eACA,gBACA,iBACA,cACJ;AAAA,EACA,IAAI,uBAAuB,WAAW,eAAe,UAAU;AAAA,EAC/D,IAAI,wBAAwB,WAAW,gBAAgB,UAAU;AAAA,EACjE,IAAI,0BAA0B,WAAW,kBAAkB,UAAU;AAAA,EACrE,IAAI,2BAA2B,WAAW,mBAAmB,UAAU;AAAA,EACvE,IAAI,oBAAoB,UAAS,UAC7B,sBACA,aACJ;AAAA,EACA,IAAI,qBAAqB,UAAS,UAC9B,uBACA,cACJ;AAAA,EACA,IAAI,uBAAuB,UAAS,UAChC,yBACA,gBACJ;AAAA,EACA,IAAI,wBAAwB,UAAS,UACjC,0BACA,iBACJ;AAAA,EACA,IAAI,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACA,IAAI,WAAW,KAAK,IAAI,MAAM,GAAG,CAAC;AAAA,EAClC,IAAI,WAAW,KAAK,IAAI,MAAM,GAAG,CAAC;AAAA,EAClC,IAAI,QAAQ,MAAM;AAAA,EAClB,MAAM,QAAQ,UAAQ;AAAA,IAClB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,UAAU;AAAA,MAC7B,WAAW,KAAK,IAAI,KAAK,CAAC;AAAA,MAC1B,MAAM,IAAI,KAAK;AAAA,IACnB;AAAA,IACA,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,UAAU;AAAA,MAC7B,WAAW,KAAK,IAAI,KAAK,CAAC;AAAA,MAC1B,MAAM,IAAI,KAAK;AAAA,IACnB;AAAA,GACH;AAAA,EACD,OAAO,UAAS,UAAU,OAAO,KAAK;AAAA;;;ADxRnC,SAAS,yBAAyB,GAAyB;AAAA,EAC9D,OAAO,mBACH,sBACA,cACJ;AAAA;AAkDG,SAAS,yBAAyB,GAAyB;AAAA,EAC9D,OAAO,mBACH,sBACA,cACJ;AAAA;AA2CG,SAAS,oBAAoB,CAChC,aACA,QACA,QACK;AAAA,EACL,IAAI,QAAQ,UAAS,UAAU,aAAa,OAAO,QAAQ;AAAA,EAC3D,QAAQ,oCAAoC,OAAO,QAAQ,MAAM;AAAA,EACjE,IAAI,MAAM,MAAM,KAAK,MAAM,MAAM,GAAG;AAAA,IAChC,OAAO;AAAA,EACX;AAAA,EACA,MAAM,OAAO,UAAS,UAAU,OAAO,UAAU,KAAK;AAAA,EACtD,OAAO;AAAA;AAyCJ,SAAS,oBAAoB,CAChC,OACA,QACA,QACK;AAAA,EACL,QAAQ,oCAAoC,OAAO,QAAQ,MAAM;AAAA,EACjE,OAAO;AAAA;AAkDJ,SAAS,cAAc,CAC1B,aACA,QACA,QACK;AAAA,EACL,IAAI,CAAC,OAAO,kBAAkB;AAAA,IAC1B,OAAO;AAAA,EACX;AAAA,EACA,IAAI,aAAa,WAAW,aAAa,OAAO,UAAU;AAAA,EAC1D,IAAI,OAAO,qBAAqB;AAAA,IAC5B,aAAa,yBACT,aACA,OAAO,eACP,OAAO,gBACP,OAAO,YACP,OAAO,WACP,OAAO,QACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAkDJ,SAAS,cAAc,CAC1B,OACA,QACA,QACK;AAAA,EACL,IAAI,CAAC,OAAO,kBAAkB;AAAA,IAC1B,OAAO;AAAA,EACX;AAAA,EACA,IAAI,cAAc,UAAS,UACvB,WACI,UAAS,UAAU,OAAO,UAAU,KAAK,GACzC,OAAO,UACX,GACA,OAAO,QACX;AAAA,EACA,IAAI,OAAO,qBAAqB;AAAA,IAC5B,cAAc,UAAS,UACnB,yBACI,UAAS,UAAU,OAAO,UAAU,KAAK,GACzC,OAAO,eACP,OAAO,gBACP,OAAO,YACP,OAAO,WACP,OAAO,QACX,GACA,OAAO,QACX;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAoEJ,SAAS,mCAAmC,CAC/C,OACA,QACA,QACK;AAAA,EACL,IAAI,OAAO,wBAAwB,OAAO,sBAAsB;AAAA,IAC5D,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACxB;AAAA,EACA,IACI,OAAO,gCACP,OAAO,8BACT;AAAA,IACE,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACxB;AAAA,EACA,IAAI,OAAO,sBAAsB;AAAA,IAC7B,MAAM,IAAI;AAAA,EACd;AAAA,EACA,IAAI,OAAO,sBAAsB;AAAA,IAC7B,MAAM,IAAI;AAAA,EACd;AAAA,EACA,IAAI,OAAO,8BAA8B;AAAA,IACrC,MAAM,cAAc,UAAS,YACzB,EAAE,GAAG,GAAG,GAAG,EAAE,GACb,OAAO,QACX;AAAA,IACA,MAAM,QAAQ,UAAS,WAAW,aAAa,KAAK;AAAA,IACpD,QAAQ,UAAS,uBAAuB,aAAa,KAAK;AAAA,EAC9D;AAAA,EACA,IAAI,OAAO,8BAA8B;AAAA,IACrC,MAAM,iBAAiB,UAAS,YAC5B,EAAE,GAAG,GAAG,GAAG,EAAE,GACb,OAAO,QACX;AAAA,IACA,MAAM,QAAQ,UAAS,WAAW,gBAAgB,KAAK;AAAA,IACvD,QAAQ,UAAS,uBAAuB,gBAAgB,KAAK;AAAA,EACjE;AAAA,EACA,OAAO;AAAA;AA8CJ,SAAS,kCAAkC,CAC9C,OACA,QACK;AAAA,EACL,OAAO,UAAS,uBACZ,UAAS,YAAY,OAAO,OAAO,QAAQ,GAC3C,IAAI,OAAO,SACf;AAAA;;AM1oBG,SAAS,aAAa,CACzB,UACA,gBACM;AAAA,EACN,IACI,qBAAqB,UAAU,cAAc,KAC7C,mBAAmB,WACrB;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,WAAW,yBAAyB,QAAQ;AAAA,EAC5C,MAAM,qBAAqB,UAAU,eAAe,OAAO,QAAQ;AAAA,EACnE,MAAM,mBAAmB,UAAU,eAAe,KAAK,QAAQ;AAAA,EAC/D,IACK,eAAe,QACX,qBAAqB,KAAK,mBAAmB,MACjD,CAAC,eAAe,QACZ,qBAAqB,KAAK,mBAAmB,IACpD;AAAA,IAEE,IAAI,KAAK,IAAI,kBAAkB,MAAM,KAAK,IAAI,gBAAgB,GAAG;AAAA,MAC7D,OAAO,eAAe,oBAChB,eAAe,QACf,eAAe;AAAA,IACzB;AAAA,IACA,MAAM,gBACF,KAAK,IAAI,kBAAkB,IAAI,KAAK,IAAI,gBAAgB;AAAA,IAC5D,OAAO,gBAAgB,eAAe,QAAQ,eAAe;AAAA,EACjE;AAAA,EACA,OAAO;AAAA;AA8BJ,SAAS,oBAAoB,CAChC,UACA,gBACO;AAAA,EACP,IAAI,mBAAmB,WAAW;AAAA,IAC9B,OAAO;AAAA,EACX;AAAA,EACA,IACI,yBAAyB,eAAe,KAAK,MAC7C,yBAAyB,eAAe,GAAG,GAC7C;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,IACI,yBAAyB,eAAe,QAAQ,IAAI,MACpD,yBAAyB,eAAe,MAAM,IAAI,GACpD;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,MAAM,qBAAqB,yBAAyB,QAAQ;AAAA,EAC5D,MAAM,qBAAqB,UACvB,eAAe,OACf,kBACJ;AAAA,EACA,MAAM,mBAAmB,UAAU,eAAe,KAAK,kBAAkB;AAAA,EACzE,IACK,eAAe,QACX,qBAAqB,KAAK,mBAAmB,MACjD,CAAC,eAAe,QACZ,qBAAqB,KAAK,mBAAmB,IACpD;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAgBJ,SAAS,sBAAsB,CAClC,UACA,kBACO;AAAA,EACP,IACI,yBAAyB,iBAAiB,KAAK,MAC/C,yBAAyB,iBAAiB,GAAG,GAC/C;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,IACI,yBAAyB,iBAAiB,QAAQ,IAAI,MACtD,yBAAyB,iBAAiB,MAAM,IAAI,GACtD;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,MAAM,qBAAqB,yBAAyB,QAAQ;AAAA,EAE5D,IAAI,iBACA,qBAAqB,yBAAyB,iBAAiB,KAAK;AAAA,EACxE,IAAI,iBAAiB,GAAG;AAAA,IACpB,kBAAkB,KAAK,KAAK;AAAA,EAChC;AAAA,EACA,IAAI,CAAC,iBAAiB,qBAAqB,iBAAiB,GAAG;AAAA,IAC3D,iBAAiB,KAAK,KAAK,IAAI;AAAA,EACnC;AAAA,EAEA,IAAI,aACA,yBAAyB,iBAAiB,GAAG,IAC7C,yBAAyB,iBAAiB,KAAK;AAAA,EACnD,IAAI,aAAa,GAAG;AAAA,IAChB,cAAc,KAAK,KAAK;AAAA,EAC5B;AAAA,EACA,IAAI,CAAC,iBAAiB,qBAAqB,aAAa,GAAG;AAAA,IACvD,aAAa,KAAK,KAAK,IAAI;AAAA,EAC/B;AAAA,EAEA,OAAO,cAAc;AAAA;AAwBlB,SAAS,wBAAwB,CAAC,OAAe;AAAA,EAEpD,QAAQ,SAAS,KAAK,KAAK;AAAA,EAG3B,SAAS,QAAQ,KAAK,KAAK,MAAM,KAAK,KAAK;AAAA,EAC3C,OAAO;AAAA;AA2BJ,SAAS,SAAS,CAAC,MAAc,IAAoB;AAAA,EAExD,OAAO,yBAAyB,IAAI;AAAA,EACpC,KAAK,yBAAyB,EAAE;AAAA,EAChC,IAAI,YAAY,KAAK;AAAA,EAErB,IAAI,YAAY,KAAK,IAAI;AAAA,IACrB,YAAY,EAAE,KAAK,KAAK,IAAI;AAAA,EAChC;AAAA,EAEA,IAAI,YAAY,CAAC,KAAK,IAAI;AAAA,IACtB,aAAa,KAAK,KAAK;AAAA,EAC3B;AAAA,EACA,OAAO;AAAA;AAoBJ,SAAS,OAAO,CAAC,KAAqB;AAAA,EACzC,OAAQ,MAAM,KAAK,KAAM;AAAA;AAoBtB,SAAS,OAAO,CAAC,KAAqB;AAAA,EACzC,OAAQ,MAAM,MAAO,KAAK;AAAA;;;ACtFvB,SAAS,oBAAoB,CAChC,OACA,QACA,QACM;AAAA,EACN,IAAI,CAAC,OAAO,eAAe;AAAA,IACvB,OAAO;AAAA,EACX;AAAA,EACA,MAAM,iBAAiB,yBAAyB,OAAO,WAAW,KAAK;AAAA,EACvE,MAAM,kBAAkB,cACpB,gBACA,OAAO,kBACX;AAAA,EACA,MAAM,OAAO,UAAU,OAAO,UAAU,eAAe;AAAA,EACvD,OAAO;AAAA;AAgCJ,SAAS,uBAAuB,CACnC,OACA,QACA,QACM;AAAA,EACN,IAAI,OAAO,kBAAkB;AAAA,IACzB,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAwCJ,SAAS,oBAAoB,CAChC,gBACA,QACA,QACM;AAAA,EACN,IAAI,CAAC,OAAO,eAAe;AAAA,IACvB,OAAO;AAAA,EACX;AAAA,EACA,MAAM,kBAAkB,cACpB,gBACA,OAAO,kBACX;AAAA,EACA,OAAO;AAAA;AAkCJ,SAAS,uBAAuB,CACnC,gBACA,QACA,QACM;AAAA,EACN,IAAI,OAAO,kBAAkB;AAAA,IACzB,OAAO,OAAO;AAAA,EAClB;AAAA,EACA,OAAO;AAAA;AAuCJ,SAAS,4BAA4B,GAA4B;AAAA,EACpE,OAAO,mBACH,yBACA,oBACJ;AAAA;AAqDG,SAAS,4BAA4B,GAA4B;AAAA,EACpE,OAAO,mBACH,yBACA,oBACJ;AAAA;;ACxeJ,qBAAS;;;ACDT,qBAAgB;;;ACChB,qBAAS;AA0ET,MAAqB,WAAkC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAoBA;AAAA,EASA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAuCR,WAAW,CAAC,SAAwB;AAAA,IAChC;AAAA,MACI,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MACxB,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,aAAa;AAAA,QACT,KAAK,EAAE,GAAG,MAAQ,GAAG,KAAO;AAAA,QAC5B,KAAK,EAAE,GAAG,KAAO,GAAG,IAAM;AAAA,MAC9B;AAAA,MACA,sBAAsB,EAAE,KAAK,KAAK,KAAK,GAAG;AAAA,MAC1C,qBAAqB;AAAA,QACrB;AAAA,IACJ,KAAK,YAAY;AAAA,IACjB,KAAK,aAAa;AAAA,IAClB,KAAK,YAAY;AAAA,IACjB,KAAK,kBAAkB;AAAA,IACvB,KAAK,iBAAiB;AAAA,IACtB,KAAK,kBAAkB;AAAA,IACvB,KAAK,sBAAsB;AAAA,IAC3B,KAAK,cAAc;AAAA;AAAA,MAQnB,UAAU,GAA2B;AAAA,IACrC,OAAO,KAAK;AAAA;AAAA,MAQZ,UAAU,CAAC,YAAoC;AAAA,IAC/C,KAAK,cAAc;AAAA;AAAA,MAQnB,aAAa,GAAW;AAAA,IACxB,OAAO,KAAK;AAAA;AAAA,MASZ,aAAa,CAAC,OAAe;AAAA,IAC7B,KAAK,iBAAiB;AAAA;AAAA,MAQtB,cAAc,GAAW;AAAA,IACzB,OAAO,KAAK;AAAA;AAAA,MASZ,cAAc,CAAC,QAAgB;AAAA,IAC/B,KAAK,kBAAkB;AAAA;AAAA,MAQvB,QAAQ,GAAU;AAAA,IAClB,OAAO,KAAK,KAAK,UAAU;AAAA;AAAA,EAwB/B,WAAW,CAAC,aAAoB;AAAA,IAC5B,IAAI,CAAC,iBAAiB,aAAa,KAAK,WAAW,GAAG;AAAA,MAClD,OAAO;AAAA,IACX;AAAA,IACA,MAAM,OAAO,UAAS,UAAU,aAAa,KAAK,SAAS;AAAA,IAC3D,IACI,UAAS,UAAU,IAAI,IAAI,eAC3B,UAAS,UAAU,IAAI,IAAI,IAAI,KAAK,YACtC;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,KAAK,YAAY;AAAA,IACjB,OAAO;AAAA;AAAA,MAQP,SAAS,GAAW;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,MAQZ,cAAc,GAAgC;AAAA,IAC9C,OAAO,KAAK;AAAA;AAAA,MAWZ,cAAc,CAAC,gBAA6C;AAAA,IAC5D,MAAM,oBAAoB,KAAK,eAAe;AAAA,IAC9C,IACI,sBAAsB,aACtB,kBAAkB,QAAQ,aAC1B,kBAAkB,QAAQ,aAC1B,kBAAkB,MAAM,kBAAkB,KAC5C;AAAA,MACE,IAAI,OAAO,kBAAkB;AAAA,MAC7B,kBAAkB,MAAM,kBAAkB;AAAA,MAC1C,kBAAkB,MAAM;AAAA,IAC5B;AAAA,IACA,KAAK,kBAAkB;AAAA;AAAA,EAc3B,eAAe,CAAC,cAAsB;AAAA,IAClC,IAAI,KAAK,mBAAmB,WAAW;AAAA,MACnC,KAAK,kBAAkB,EAAE,KAAK,WAAW,KAAK,UAAU;AAAA,IAC5D;AAAA,IACA,IACK,KAAK,gBAAgB,OAAO,QACzB,KAAK,gBAAgB,MAAM,gBAC/B,KAAK,aAAa,cACpB;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,KAAK,gBAAgB,MAAM;AAAA,IAC3B,OAAO;AAAA;AAAA,EAaX,eAAe,CAAC,cAAsB;AAAA,IAClC,IAAI,KAAK,mBAAmB,WAAW;AAAA,MACnC,KAAK,kBAAkB,EAAE,KAAK,WAAW,KAAK,UAAU;AAAA,IAC5D;AAAA,IACA,IACI,KAAK,gBAAgB,OAAO,QAC5B,KAAK,gBAAgB,MAAM,cAC7B;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,KAAK,gBAAgB,MAAM;AAAA,IAC3B,IAAI,KAAK,aAAa,cAAc;AAAA,MAChC,KAAK,aAAa;AAAA,IACtB;AAAA,IACA,OAAO;AAAA;AAAA,EAqBX,YAAY,CAAC,WAAmB;AAAA,IAC5B,IAAI,CAAC,sBAAsB,WAAW,KAAK,eAAe,GAAG;AAAA,MACzD,OAAO;AAAA,IACX;AAAA,IACA,IACI,KAAK,oBAAoB,aACzB,KAAK,gBAAgB,QAAQ,aAC7B,eAAe,WAAW,KAAK,eAAe,KAC9C,KAAK,gBAAgB,OACrB,KAAK,cAAc,KAAK,gBAAgB,KAC1C;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,IACI,KAAK,oBAAoB,aACzB,KAAK,gBAAgB,QAAQ,aAC7B,eAAe,WAAW,KAAK,eAAe,KAC9C,KAAK,gBAAgB,OACrB,KAAK,cAAc,KAAK,gBAAgB,KAC1C;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,KAAK,aAAa;AAAA,IAClB,OAAO;AAAA;AAAA,MAQP,QAAQ,GAAW;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,MAQZ,kBAAkB,GAA+B;AAAA,IACjD,OAAO,KAAK;AAAA;AAAA,MAWZ,kBAAkB,CAAC,oBAAgD;AAAA,IACnE,IACI,uBAAuB,aACvB,mBAAmB,UAAU,aAC7B,mBAAmB,QAAQ,aAC3B,mBAAmB,QAAQ,mBAAmB,KAChD;AAAA,MACE,IAAI,OAAO,mBAAmB;AAAA,MAC9B,mBAAmB,MAAM,mBAAmB;AAAA,MAC5C,mBAAmB,QAAQ;AAAA,IAC/B;AAAA,IACA,KAAK,sBAAsB;AAAA;AAAA,EAkC/B,YAAY,CACR,mBAA2B,GAC3B,kBAA2B,MAC7B;AAAA,IACE,IACI,KAAK,2BAA2B,aAChC,KAAK,uBAAuB,qBAAqB,oBACjD,KAAK,uBAAuB,oBAAoB,mBAChD,KAAK,uBAAuB,SAAS,MAAM,KAAK,UAAU,KAC1D,KAAK,uBAAuB,SAAS,MAAM,KAAK,UAAU,KAC1D,KAAK,uBAAuB,aAAa,KAAK,aAC9C,KAAK,uBAAuB,cAAc,KAAK,cAC/C,KAAK,uBAAuB,kBAAkB,KAAK,kBACnD,KAAK,uBAAuB,mBAAmB,KAAK,iBACtD;AAAA,MACE,OAAO,KAAK,KAAK,uBAAuB,WAAW,QAAQ,KAAK;AAAA,IACpE;AAAA,IAEA,MAAM,KAAM,mBAAmB,KAAK,iBAAkB;AAAA,IACtD,MAAM,KAAM,mBAAmB,KAAK,kBAAmB;AAAA,IAEvD,MAAM,MAAM,CAAC,KAAK,UAAU;AAAA,IAC5B,MAAM,MAAM,kBAAkB,CAAC,KAAK,UAAU,IAAI,KAAK,UAAU;AAAA,IAEjE,MAAM,IAAI;AAAA,IACV,MAAM,KAAK,KAAK;AAAA,IAChB,MAAM,IAAG,kBAAkB,CAAC,KAAK,YAAY,KAAK;AAAA,IAElD,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,IACtB,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,IAEtB,MAAM,IAAI,KAAK,IAAI;AAAA,IACnB,MAAM,IAAI,KAAK,IAAI;AAAA,IACnB,MAAM,IAAI,CAAC,IAAI,KAAK;AAAA,IACpB,MAAM,IAAI,KAAK,IAAI;AAAA,IACnB,MAAM,IAAI,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,MAAM,MAAM;AAAA,IACpD,MAAM,IAAI,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,MAAM,MAAM;AAAA,IACpD,KAAK,yBAAyB;AAAA,MAC1B,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;AAAA,MAC9B,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,MACA,eAAe,KAAK;AAAA,MACpB,gBAAgB,KAAK;AAAA,IACzB;AAAA,IACA,OAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,QAAQ,MAAM;AAAA;AAAA,EAc7C,MAAM,CAAC,mBAA2B,GAAG,kBAA2B,MAAM;AAAA,IAClE,MAAM,YAAY,KAAK,aAAa,kBAAkB,eAAe;AAAA,IACrE,IACI,KAAK,qBAAqB,aAC1B,KAAK,iBAAiB,gBAAgB,MAAM,UAAU,KACtD,KAAK,iBAAiB,gBAAgB,MAAM,UAAU,KACtD,KAAK,iBAAiB,gBAAgB,MAAM,UAAU,KACtD,KAAK,iBAAiB,gBAAgB,MAAM,UAAU,KACtD,KAAK,iBAAiB,gBAAgB,MAAM,UAAU,KACtD,KAAK,iBAAiB,gBAAgB,MAAM,UAAU,GACxD;AAAA,MACE,OAAO;AAAA,QACH,OAAO,KAAK,iBAAiB;AAAA,QAC7B,UAAU,KAAK,iBAAiB;AAAA,QAChC,aAAa,KAAK,iBAAiB;AAAA,QACnC,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,MAAM,mBAAmB,aAAa,SAAS;AAAA,IAC/C,KAAK,mBAAmB;AAAA,MACpB,OAAO,iBAAiB;AAAA,MACxB,UAAU,iBAAiB;AAAA,MAC3B,aAAa,iBAAiB;AAAA,MAC9B,iBAAiB;AAAA,IACrB;AAAA,IACA,OAAO;AAAA,MACH,OAAO,iBAAiB;AAAA,MACxB,UAAU,iBAAiB;AAAA,MAC3B,aAAa,iBAAiB;AAAA,MAC9B,QAAQ;AAAA,IACZ;AAAA;AAAA,EAsBJ,4BAA4B,CACxB,sBACA,mBAA2B,GAC7B;AAAA,IACE,MAAM,aAAa,sBACf,sBACA,kBACA,KAAK,gBACL,KAAK,eACT;AAAA,IAGA,KAAK,YAAY,WAAW,QAAQ;AAAA,IACpC,KAAK,YAAY,WAAW,QAAQ;AAAA,IACpC,KAAK,aAAa,WAAW,IAAI;AAAA;AAAA,EAqBrC,WAAW,CAAC,UAAkB;AAAA,IAC1B,IAAI,CAAC,qBAAqB,UAAU,KAAK,mBAAmB,GAAG;AAAA,MAC3D,OAAO;AAAA,IACX;AAAA,IACA,WAAW,yBAAyB,QAAQ;AAAA,IAC5C,IACI,KAAK,wBAAwB,aAC7B,KAAK,oBAAoB,QAAQ,aACjC,cAAc,UAAU,KAAK,mBAAmB,KAChD,KAAK,oBAAoB,OACzB,KAAK,aAAa,KAAK,oBAAoB,KAC7C;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,IACI,KAAK,wBAAwB,aAC7B,KAAK,oBAAoB,UAAU,aACnC,cAAc,UAAU,KAAK,mBAAmB,KAChD,KAAK,oBAAoB,SACzB,KAAK,aAAa,KAAK,oBAAoB,OAC7C;AAAA,MACE,OAAO;AAAA,IACX;AAAA,IACA,KAAK,YAAY;AAAA,IACjB,OAAO;AAAA;AAAA,EAwBX,8BAA8B,CAAC,OAAqB;AAAA,IAChD,OAAO,iCACH,OACA,KAAK,WACL,KAAK,YACL,KAAK,SACT;AAAA;AAAA,EAqBJ,yBAAyB,CAAC,OAAqB;AAAA,IAC3C,OAAO,oCACH,OACA,KAAK,WACL,KAAK,YACL,KAAK,SACT;AAAA;AAAA,EAcJ,6BAA6B,CAAC,OAAqB;AAAA,IAC/C,IAAI,oBAAoB;AAAA,MACpB,GAAG,KAAK,gBAAgB;AAAA,MACxB,GAAG,KAAK,kBAAkB;AAAA,IAC9B;AAAA,IACA,IAAI,cAAc,UAAS,UAAU,OAAO,KAAK,SAAS;AAAA,IAC1D,cAAc,UAAS,YAAY,aAAa,CAAC,KAAK,SAAS;AAAA,IAC/D,cAAc,UAAS,uBACnB,aACA,KAAK,UACT;AAAA,IACA,OAAO,UAAS,UAAU,mBAAmB,WAAW;AAAA;AAAA,EAmB5D,uBAAuB,CAAC,KAAa,KAAa;AAAA,IAC9C,IAAI,MAAM,KAAK;AAAA,MACX,IAAI,OAAO;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,IAAI,KAAK,eAAe,WAAW;AAAA,MAC/B,KAAK,cAAc;AAAA,QACf,KAAK,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,QAClC,KAAK,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,MACtC;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,YAAY,OAAO,WAAW;AAAA,MACnC,KAAK,YAAY,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACxD;AAAA,IACA,IAAI,KAAK,YAAY,OAAO,WAAW;AAAA,MACnC,KAAK,YAAY,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACxD;AAAA,IACA,KAAK,YAAY,IAAI,IAAI;AAAA,IACzB,KAAK,YAAY,IAAI,IAAI;AAAA;AAAA,EAuB7B,qBAAqB,CAAC,KAAa,KAAa;AAAA,IAC5C,IAAI,MAAM,KAAK;AAAA,MACX,IAAI,OAAO;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,IAAI,KAAK,eAAe,WAAW;AAAA,MAC/B,KAAK,cAAc;AAAA,QACf,KAAK,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,QAClC,KAAK,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,MACtC;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,YAAY,OAAO,WAAW;AAAA,MACnC,KAAK,YAAY,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACxD;AAAA,IACA,IAAI,KAAK,YAAY,OAAO,WAAW;AAAA,MACnC,KAAK,YAAY,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACxD;AAAA,IACA,KAAK,YAAY,IAAI,IAAI;AAAA,IACzB,KAAK,YAAY,IAAI,IAAI;AAAA;AAAA,EAsB7B,oBAAoB,CAAC,kBAA2B,MAG9C;AAAA,IACE,MAAM,gBAAgB,iCAClB;AAAA,MACI,GAAG,CAAC,KAAK,iBAAiB;AAAA,MAC1B,GAAG,kBACG,CAAC,KAAK,kBAAkB,IACxB,KAAK,kBAAkB;AAAA,IACjC,GACA,KAAK,WACL,KAAK,YACL,KAAK,SACT;AAAA,IACA,MAAM,iBAAiB,iCACnB;AAAA,MACI,GAAG,KAAK,iBAAiB;AAAA,MACzB,GAAG,kBACG,CAAC,KAAK,kBAAkB,IACxB,KAAK,kBAAkB;AAAA,IACjC,GACA,KAAK,WACL,KAAK,YACL,KAAK,SACT;AAAA,IACA,MAAM,mBAAmB,iCACrB;AAAA,MACI,GAAG,CAAC,KAAK,iBAAiB;AAAA,MAC1B,GAAG,kBACG,KAAK,kBAAkB,IACvB,CAAC,KAAK,kBAAkB;AAAA,IAClC,GACA,KAAK,WACL,KAAK,YACL,KAAK,SACT;AAAA,IACA,MAAM,oBAAoB,iCACtB;AAAA,MACI,GAAG,KAAK,iBAAiB;AAAA,MACzB,GAAG,kBACG,KAAK,kBAAkB,IACvB,CAAC,KAAK,kBAAkB;AAAA,IAClC,GACA,KAAK,WACL,KAAK,YACL,KAAK,SACT;AAAA,IAEA,OAAO;AAAA,MACH,KAAK,EAAE,MAAM,eAAe,OAAO,eAAe;AAAA,MAClD,QAAQ,EAAE,MAAM,kBAAkB,OAAO,kBAAkB;AAAA,IAC/D;AAAA;AAAA,EA4BJ,YAAY,CAAC,iBAAuD;AAAA,IAChE;AAAA,MACI,OAAO,MAAM,SAAS,OAAO;AAAA,MAC7B,UAAU,MAAM,YAAY,OAAO;AAAA,QACnC,KAAK,qBAAqB,eAAe;AAAA,IAE7C,OAAO;AAAA,MACH,KAAK;AAAA,QACD,GAAG,KAAK,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAAA,QAC9D,GAAG,KAAK,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAAA,MAClE;AAAA,MACA,KAAK;AAAA,QACD,GAAG,KAAK,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAAA,QAC9D,GAAG,KAAK,IAAI,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAAA,MAClE;AAAA,IACJ;AAAA;AAER;;;AC5zBO,MAAM,gBAA0D;AAAA,EAC3D,YAA2B,CAAC;AAAA,EAapC,SAAS,CACL,UACA,SACU;AAAA,IACV,KAAK,UAAU,KAAK,QAAQ;AAAA,IAG5B,IAAI,SAAS,QAAQ;AAAA,MAEjB,IAAI,QAAQ,OAAO,SAAS;AAAA,QACxB,KAAK,YAAY,KAAK,UAAU,OAAO,OAAK,MAAM,QAAQ;AAAA,QAC1D,OAAO,MAAM;AAAA,MACjB;AAAA,MAGA,MAAM,eAAe,MAAM;AAAA,QACvB,KAAK,YAAY,KAAK,UAAU,OAAO,OAAK,MAAM,QAAQ;AAAA,QAC1D,QAAQ,QAAQ,oBAAoB,SAAS,YAAY;AAAA;AAAA,MAG7D,QAAQ,OAAO,iBAAiB,SAAS,YAAY;AAAA,IACzD;AAAA,IAGA,OAAO,MAAM;AAAA,MACT,KAAK,YAAY,KAAK,UAAU,OAAO,OAAK,MAAM,QAAQ;AAAA;AAAA;AAAA,EAalE,MAAM,IAAI,MAAe;AAAA,IACrB,KAAK,UAAU,QAAQ,cACnB,eAAe,MAAM,SAAS,GAAG,IAAI,CAAC,CAC1C;AAAA;AAER;AAAA;AAwCO,MAAM,sBAAgE;AAAA,EACjE,YAA2B,CAAC;AAAA,EAapC,SAAS,CACL,UACA,SACU;AAAA,IACV,KAAK,UAAU,KAAK,QAAQ;AAAA,IAG5B,IAAI,SAAS,QAAQ;AAAA,MAEjB,IAAI,QAAQ,OAAO,SAAS;AAAA,QACxB,KAAK,YAAY,KAAK,UAAU,OAAO,OAAK,MAAM,QAAQ;AAAA,QAC1D,OAAO,MAAM;AAAA,MACjB;AAAA,MAGA,MAAM,eAAe,MAAM;AAAA,QACvB,KAAK,YAAY,KAAK,UAAU,OAAO,OAAK,MAAM,QAAQ;AAAA,QAC1D,QAAQ,QAAQ,oBAAoB,SAAS,YAAY;AAAA;AAAA,MAG7D,QAAQ,OAAO,iBAAiB,SAAS,YAAY;AAAA,IACzD;AAAA,IAGA,OAAO,MAAM;AAAA,MACT,KAAK,YAAY,KAAK,UAAU,OAAO,OAAK,MAAM,QAAQ;AAAA;AAAA;AAAA,EAalE,MAAM,IAAI,MAAe;AAAA,IACrB,KAAK,UAAU,QAAQ,cAAY,SAAS,GAAG,IAAI,CAAC;AAAA;AAE5D;;;ACrDO,MAAM,sBAAsB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAKR,WAAW,GAAG;AAAA,IACV,KAAK,MAAM,IAAI;AAAA,IACf,KAAK,OAAO,IAAI;AAAA,IAChB,KAAK,SAAS,IAAI;AAAA,IAClB,KAAK,MAAM,IAAI;AAAA;AAAA,EAUnB,SAAS,CAAC,OAA8B,aAAgC;AAAA,IACpE,KAAK,IAAI,OAAO,OAAO,WAAW;AAAA,IAClC,KAAK,IAAI,OAAO,EAAE,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG,WAAW;AAAA;AAAA,EAUlE,UAAU,CAAC,OAA+B,aAAgC;AAAA,IACtE,KAAK,KAAK,OAAO,OAAO,WAAW;AAAA,IACnC,KAAK,IAAI,OACL,EAAE,MAAM,QAAQ,iBAAiB,MAAM,gBAAgB,GACvD,WACJ;AAAA;AAAA,EAUJ,YAAY,CACR,OACA,aACI;AAAA,IACJ,KAAK,OAAO,OAAO,OAAO,WAAW;AAAA,IACrC,KAAK,IAAI,OACL,EAAE,MAAM,UAAU,eAAe,MAAM,cAAc,GACrD,WACJ;AAAA;AAAA,EAmDJ,EAAkC,CAC9B,WACA,UACA,SACW;AAAA,IACX,QAAQ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,IAAI,UACZ,UACA,OACJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,KAAK,UACb,UACA,OACJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,OAAO,UACf,UACA,OACJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,IAAI,UACZ,UACA,OACJ;AAAA;AAAA,QAEA,MAAM,IAAI,MAAM,uBAAuB,WAAW;AAAA;AAAA;AAGlE;;;AH7UO,IAAM,sCAAsC;AAG5C,IAAM,uCAAuC;AAG7C,IAAM,uCAAwD;AAAA,EACjE,KAAK;AAAA,EACL,KAAK;AACT;AAGO,IAAM,kCAA8C;AAAA,EACvD,KAAK,EAAE,GAAG,MAAQ,GAAG,KAAO;AAAA,EAC5B,KAAK,EAAE,GAAG,KAAO,GAAG,IAAM;AAC9B;AAGO,IAAM,2CAEK;AAEX,IAAM,+BAA8C;AAAA,EACvD,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACvB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,qBAAqB;AAAA,EACrB,oBAAoB;AACxB;AAAA;AAwCA,MAAqB,mBAAoD;AAAA,EAC7D;AAAA,EACA;AAAA,EAiCR,WAAW,CAAC,UAAyB,8BAA8B;AAAA,IAC/D;AAAA,MACI,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MACxB;AAAA,MACA,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,sBAAsB;AAAA,MACtB,qBAAqB;AAAA,QACrB;AAAA,IAEJ,KAAK,cAAc,IAAI,WAAW;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,KAAK,YAAY,IAAI;AAAA;AAAA,MAQrB,UAAU,GAA2B;AAAA,IACrC,OAAO,KAAK,YAAY;AAAA;AAAA,MAGxB,UAAU,CAAC,YAAoC;AAAA,IAC/C,KAAK,YAAY,aAAa;AAAA;AAAA,MAQ9B,aAAa,GAAW;AAAA,IACxB,OAAO,KAAK,YAAY;AAAA;AAAA,MAGxB,aAAa,CAAC,OAAe;AAAA,IAC7B,KAAK,YAAY,gBAAgB;AAAA;AAAA,MAQjC,cAAc,GAAW;AAAA,IACzB,OAAO,KAAK,YAAY;AAAA;AAAA,MAGxB,cAAc,CAAC,QAAgB;AAAA,IAC/B,KAAK,YAAY,iBAAiB;AAAA;AAAA,MAQlC,QAAQ,GAAU;AAAA,IAClB,OAAO,KAAK,YAAY;AAAA;AAAA,EAsB5B,WAAW,CAAC,aAAoB;AAAA,IAC5B,MAAM,kBAAkB,KAAK,KAAK,YAAY,SAAS;AAAA,IACvD,IAAI,CAAC,KAAK,YAAY,YAAY,WAAW,GAAG;AAAA,MAC5C,OAAO;AAAA,IACX;AAAA,IACA,KAAK,UAAU,UACX,EAAE,MAAM,UAAS,UAAU,aAAa,eAAe,EAAE,GACzD;AAAA,MACI,UAAU,KAAK,YAAY;AAAA,MAC3B,UAAU,KAAK,YAAY;AAAA,MAC3B,WAAW,KAAK,YAAY;AAAA,IAChC,CACJ;AAAA,IACA,OAAO;AAAA;AAAA,MAQP,SAAS,GAAW;AAAA,IACpB,OAAO,KAAK,YAAY;AAAA;AAAA,MAQxB,cAAc,GAAgC;AAAA,IAC9C,OAAO,KAAK,YAAY;AAAA;AAAA,MAGxB,cAAc,CAAC,gBAA6C;AAAA,IAC5D,KAAK,YAAY,iBAAiB;AAAA;AAAA,EAGtC,eAAe,CAAC,cAAsB;AAAA,IAClC,MAAM,mBAAmB,KAAK,YAAY;AAAA,IAC1C,IAAI,CAAC,KAAK,YAAY,gBAAgB,YAAY,GAAG;AAAA,MACjD,OAAO;AAAA,IACX;AAAA,IASA,OAAO;AAAA;AAAA,EAGX,eAAe,CAAC,cAAsB;AAAA,IAClC,IAAI,CAAC,KAAK,YAAY,gBAAgB,YAAY,GAAG;AAAA,MACjD,OAAO;AAAA,IACX;AAAA,IACA,OAAO;AAAA;AAAA,EAuBX,YAAY,CAAC,WAAmB;AAAA,IAC5B,MAAM,mBAAmB,KAAK,YAAY;AAAA,IAC1C,IAAI,CAAC,KAAK,YAAY,aAAa,SAAS,GAAG;AAAA,MAC3C,OAAO;AAAA,IACX;AAAA,IACA,KAAK,UAAU,WACX,EAAE,iBAAiB,KAAK,YAAY,YAAY,iBAAiB,GACjE;AAAA,MACI,UAAU,KAAK,YAAY;AAAA,MAC3B,UAAU,KAAK,YAAY;AAAA,MAC3B,WAAW,KAAK,YAAY;AAAA,IAChC,CACJ;AAAA,IACA,OAAO;AAAA;AAAA,MAQP,QAAQ,GAAW;AAAA,IACnB,OAAO,KAAK,YAAY;AAAA;AAAA,MAQxB,kBAAkB,GAA+B;AAAA,IACjD,OAAO,KAAK,YAAY;AAAA;AAAA,MAGxB,kBAAkB,CAAC,oBAAgD;AAAA,IACnE,KAAK,YAAY,qBAAqB;AAAA;AAAA,EAe1C,YAAY,CACR,mBAA2B,GAC3B,kBAA2B,MACP;AAAA,IACpB,OAAO,KAAK,YAAY,aAAa,kBAAkB,eAAe;AAAA;AAAA,EAuB1E,WAAW,CAAC,UAAkB;AAAA,IAC1B,MAAM,kBAAkB,KAAK,YAAY;AAAA,IACzC,IAAI,CAAC,KAAK,YAAY,YAAY,QAAQ,GAAG;AAAA,MACzC,OAAO;AAAA,IACX;AAAA,IACA,KAAK,UAAU,aACX,EAAE,eAAe,WAAW,gBAAgB,GAC5C;AAAA,MACI,UAAU,KAAK,YAAY;AAAA,MAC3B,UAAU,KAAK,YAAY;AAAA,MAC3B,WAAW,KAAK,YAAY;AAAA,IAChC,CACJ;AAAA,IACA,OAAO;AAAA;AAAA,EAUX,uBAAuB,CAAC,gBAA8B;AAAA,IAClD,OAAO;AAAA;AAAA,EASX,8BAA8B,CAAC,OAAqB;AAAA,IAChD,OAAO,iCACH,OACA,KAAK,YAAY,UACjB,KAAK,YAAY,WACjB,KAAK,YAAY,QACrB;AAAA;AAAA,EASJ,yBAAyB,CAAC,OAAqB;AAAA,IAC3C,OAAO,oCACH,OACA,KAAK,YAAY,UACjB,KAAK,YAAY,WACjB,KAAK,YAAY,QACrB;AAAA;AAAA,EASJ,6BAA6B,CAAC,OAAqB;AAAA,IAC/C,IAAI,oBAAoB;AAAA,MACpB,GAAG,KAAK,YAAY,gBAAgB;AAAA,MACpC,GAAG,KAAK,YAAY,iBAAiB;AAAA,IACzC;AAAA,IACA,IAAI,cAAc,UAAS,UAAU,OAAO,KAAK,YAAY,QAAQ;AAAA,IACrE,cAAc,UAAS,YACnB,aACA,CAAC,KAAK,YAAY,QACtB;AAAA,IACA,cAAc,UAAS,uBACnB,aACA,KAAK,YAAY,SACrB;AAAA,IACA,OAAO,UAAS,UAAU,mBAAmB,WAAW;AAAA;AAAA,EAG5D,uBAAuB,CAAC,KAAa,KAAa;AAAA,IAC9C,IAAI,MAAM,KAAK;AAAA,MACX,IAAI,OAAO;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,IAAI,KAAK,YAAY,cAAc,WAAW;AAAA,MAC1C,KAAK,YAAY,aAAa,EAAE,KAAK,WAAW,KAAK,UAAU;AAAA,IACnE;AAAA,IACA,IAAI,KAAK,YAAY,WAAW,OAAO,WAAW;AAAA,MAC9C,KAAK,YAAY,WAAW,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACnE;AAAA,IACA,IAAI,KAAK,YAAY,WAAW,OAAO,WAAW;AAAA,MAC9C,KAAK,YAAY,WAAW,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACnE;AAAA,IACA,KAAK,YAAY,WAAW,IAAI,IAAI;AAAA,IACpC,KAAK,YAAY,WAAW,IAAI,IAAI;AAAA;AAAA,EAOxC,qBAAqB,CAAC,KAAa,KAAa;AAAA,IAC5C,IAAI,MAAM,KAAK;AAAA,MACX,IAAI,OAAO;AAAA,MACX,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAAA,IACA,IAAI,KAAK,YAAY,cAAc,WAAW;AAAA,MAC1C,KAAK,YAAY,aAAa,EAAE,KAAK,WAAW,KAAK,UAAU;AAAA,IACnE;AAAA,IACA,IAAI,KAAK,YAAY,WAAW,OAAO,WAAW;AAAA,MAC9C,KAAK,YAAY,WAAW,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACnE;AAAA,IACA,IAAI,KAAK,YAAY,WAAW,OAAO,WAAW;AAAA,MAC9C,KAAK,YAAY,WAAW,MAAM,EAAE,GAAG,WAAW,GAAG,UAAU;AAAA,IACnE;AAAA,IACA,KAAK,YAAY,WAAW,IAAI,IAAI;AAAA,IACpC,KAAK,YAAY,WAAW,IAAI,IAAI;AAAA;AAAA,EAqDxC,EAAkC,CAC9B,WACA,UACA,SACW;AAAA,IACX,OAAO,KAAK,UAAU,GAAG,WAAW,UAAU,OAAO;AAAA;AAAA,EAGzD,MAAM,CACF,mBAA2B,GAC3B,wBAAiC,MAMnC;AAAA,IACE,OAAO,KAAK,YAAY,OAAO,kBAAkB,qBAAqB;AAAA;AAAA,EAG1E,4BAA4B,CACxB,sBACA,mBAA2B,GAC7B;AAAA,IACE,KAAK,YAAY,6BACb,sBACA,gBACJ;AAAA;AAAA,EAGJ,oBAAoB,CAAC,kBAA2B,MAG9C;AAAA,IACE,OAAO,KAAK,YAAY,qBAAqB,eAAe;AAAA;AAAA,EAGhE,YAAY,CAAC,kBAA2B,MAAkC;AAAA,IACtE,OAAO,KAAK,YAAY,aAAa,eAAe;AAAA;AAE5D;;AD3XO,MAAM,iBAAsC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EA0BR,WAAW,CACP,QACA,SAAgC,IAAI,oBACtC;AAAA,IACE,KAAK,SAAS,0BAA0B;AAAA,IACxC,KAAK,SAAS,0BAA0B;AAAA,IACxC,KAAK,UAAU,+BAA+B;AAAA,IAC9C,KAAK,UAAU,+BAA+B;AAAA,IAC9C,KAAK,YAAY,6BAA6B;AAAA,IAC9C,KAAK,YAAY,6BAA6B;AAAA,IAC9C,KAAK,UAAU;AAAA,SACR;AAAA,MACH,kBAAkB;AAAA,MAClB,eAAe;AAAA,IACnB;AAAA,IACA,KAAK,UAAU;AAAA;AAAA,EA2BnB,QAAQ,CAAC,YAAoB,IAAiB;AAAA,IAC1C,IAAI,wBACA,KAAK,QAAQ,+BAA+B,EAAE;AAAA,IAClD,MAAM,kBAAkB,KAAK,QACzB,YACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,aAAa,eAAe;AAAA,IACzC,IAAI,yBACA,KAAK,QAAQ,+BAA+B,EAAE;AAAA,IAClD,MAAM,qBAAqB,UAAS,UAChC,uBACA,sBACJ;AAAA,IACA,MAAM,gCAAgC,KAAK,OACvC,oBACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YACT,UAAS,UACL,KAAK,QAAQ,UACb,6BACJ,CACJ;AAAA;AAAA,EA6BJ,QAAQ,CAAC,OAAe,IAAiB;AAAA,IACrC,MAAM,iBAAiB,QAAQ,KAAK,QAAQ;AAAA,IAC5C,IAAI,wBACA,KAAK,QAAQ,+BAA+B,EAAE;AAAA,IAClD,MAAM,mBAAmB,KAAK,QAC1B,gBACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,aAAa,KAAK,QAAQ,YAAY,gBAAgB;AAAA,IACnE,IAAI,yBACA,KAAK,QAAQ,+BAA+B,EAAE;AAAA,IAClD,MAAM,OAAO,UAAS,UAClB,uBACA,sBACJ;AAAA,IACA,MAAM,kBAAkB,KAAK,OAAO,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,IACpE,KAAK,QAAQ,YACT,UAAS,UAAU,KAAK,QAAQ,UAAU,eAAe,CAC7D;AAAA;AAAA,EA2BJ,MAAM,CAAC,YAA0B;AAAA,IAC7B,MAAM,oBAAoB,KAAK,QAC3B,YACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,aAAa,iBAAiB;AAAA;AAAA,EAyB/C,MAAM,CAAC,OAAqB;AAAA,IACxB,MAAM,mBAAmB,KAAK,QAC1B,OACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,aAAa,KAAK,QAAQ,YAAY,gBAAgB;AAAA;AAAA,EA8BvE,aAAa,CAAC,YAAoB,IAAiB;AAAA,IAC/C,IAAI,2BACA,KAAK,QAAQ,0BAA0B,EAAE;AAAA,IAC7C,MAAM,oBAAoB,KAAK,QAC3B,YACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,aAAa,iBAAiB;AAAA,IAC3C,IAAI,4BACA,KAAK,QAAQ,0BAA0B,EAAE;AAAA,IAC7C,MAAM,+BAA+B,UAAS,UAC1C,2BACA,wBACJ;AAAA,IACA,MAAM,4BAA4B,mCAC9B,8BACA,KAAK,QAAQ,WACb,KAAK,QAAQ,QACjB;AAAA,IACA,MAAM,gCAAgC,KAAK,OACvC,2BACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YACT,UAAS,UACL,KAAK,QAAQ,UACb,6BACJ,CACJ;AAAA;AAAA,EAwBJ,aAAa,CAAC,OAAe,IAAiB;AAAA,IAC1C,IAAI,6BACA,KAAK,QAAQ,0BAA0B,EAAE;AAAA,IAC7C,MAAM,mBAAmB,KAAK,QAC1B,OACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,aAAa,KAAK,QAAQ,YAAY,gBAAgB;AAAA,IACnE,IAAI,4BACA,KAAK,QAAQ,0BAA0B,EAAE;AAAA,IAC7C,MAAM,iBAAiB,UAAS,UAC5B,2BACA,0BACJ;AAAA,IACA,MAAM,cAAc,mCAChB,gBACA,KAAK,QAAQ,WACb,KAAK,QAAQ,QACjB;AAAA,IACA,MAAM,kBAAkB,KAAK,OACzB,aACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YACT,UAAS,UAAU,KAAK,QAAQ,UAAU,eAAe,CAC7D;AAAA;AAAA,EA+BJ,aAAa,CAAC,OAAoB;AAAA,IAC9B,MAAM,cAAc,UAAS,uBACzB,UAAS,YAAY,OAAO,KAAK,QAAQ,QAAQ,GACjD,IAAI,KAAK,QAAQ,SACrB;AAAA,IACA,KAAK,WAAW,WAAW;AAAA;AAAA,EA6B/B,UAAU,CAAC,OAAoB;AAAA,IAC3B,MAAM,mBAAmB,KAAK,OAAO,OAAO,KAAK,SAAS,KAAK,OAAO;AAAA,IACtE,KAAK,QAAQ,YACT,UAAS,UAAU,KAAK,QAAQ,UAAU,gBAAgB,CAC9D;AAAA;AAAA,EAiCJ,UAAU,CAAC,QAAqB;AAAA,IAC5B,MAAM,oBAAoB,KAAK,OAC3B,QACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YAAY,iBAAiB;AAAA;AAAA,EAsB9C,aAAa,CAAC,QAAqB;AAAA,IAC/B,MAAM,gBACF,KAAK,QAAQ,+BAA+B,MAAM;AAAA,IACtD,KAAK,WAAW,aAAa;AAAA;AAAA,EA4BjC,QAAQ,CAAC,OAAqB;AAAA,IAC1B,MAAM,mBAAmB,KAAK,UAC1B,OACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YAAY,KAAK,QAAQ,WAAW,gBAAgB;AAAA,IACjE,IAAI,CAAC,KAAK,QAAQ,qBAAqB;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,MAAM,qBAAqB,yBACvB,KAAK,QAAQ,UACb,KAAK,QAAQ,eACb,KAAK,QAAQ,gBACb,KAAK,QAAQ,YACb,KAAK,QAAQ,WACb,KAAK,QAAQ,QACjB;AAAA,IACA,MAAM,yBAAyB,KAAK,OAChC,oBACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YAAY,sBAAsB;AAAA;AAAA,EA4BnD,QAAQ,CAAC,QAAsB;AAAA,IAC3B,MAAM,oBAAoB,KAAK,UAC3B,QACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YAAY,iBAAiB;AAAA,IAC1C,IAAI,CAAC,KAAK,QAAQ,qBAAqB;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,MAAM,qBAAqB,yBACvB,KAAK,QAAQ,UACb,KAAK,QAAQ,eACb,KAAK,QAAQ,gBACb,KAAK,QAAQ,YACb,KAAK,QAAQ,WACb,KAAK,QAAQ,QACjB;AAAA,IACA,MAAM,yBAAyB,KAAK,OAChC,oBACA,KAAK,SACL,KAAK,OACT;AAAA,IACA,KAAK,QAAQ,YAAY,sBAAsB;AAAA;AAAA,MAY/C,mBAAmB,CAAC,OAAgB;AAAA,IACpC,KAAK,QAAQ,sBAAsB;AAAA;AAAA,MAQnC,mBAAmB,GAAY;AAAA,IAC/B,OAAO,KAAK,QAAQ;AAAA;AAAA,MAQpB,MAAM,GAA0B;AAAA,IAChC,OAAO,KAAK;AAAA;AAAA,MAYZ,MAAM,CAAC,QAA+B;AAAA,IACtC,KAAK,UAAU;AAAA;AAAA,MAYf,MAAM,GAAoB;AAAA,IAC1B,OAAO,KAAK;AAAA;AAAA,MAYZ,MAAM,CAAC,QAAyB;AAAA,IAChC,KAAK,UAAU,KAAK,OAAO;AAAA;AAAA,EAwB/B,SAAS,CAAC,QAAkC;AAAA,IACxC,KAAK,UAAU,KAAK,KAAK,YAAY,OAAO;AAAA;AAAA,EAUhD,OAAO,GAAS;AAAA,EAShB,KAAK,GAAS;AAAA,EAcd,MAAM,GAAS;AACnB;AA6CO,SAAS,sBAAsB,CAClC,QACS;AAAA,EACT,OAAO,IAAI,iBACP;AAAA,IACI,qBAAqB;AAAA,IACrB,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,IAC9B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,WAAW;AAAA,EACf,GACA,MACJ;AAAA;;AKh3BG,MAAM,kBAAkB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EAaR,WAAW,CACP,WACA,WACA,WACF;AAAA,IACE,KAAK,aAAa;AAAA,IAClB,KAAK,aAAa;AAAA,IAClB,KAAK,aAAa;AAAA;AAAA,EAwBf,uBAAuB,CAAC,QAAmB;AAAA,IAE9C,IAAI,KAAK,cAAc,MAAM,GAAG;AAAA,MAC5B,KAAK,yBAAyB,MAAM;AAAA,IACxC,EAAO,SAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,MAE9B,OAAO,QAAQ,UAAQ;AAAA,QACnB,IAAI,KAAK,cAAc,IAAI,GAAG;AAAA,UAC1B,KAAK,yBAAyB,IAAI;AAAA,QACtC;AAAA,OACH;AAAA,IACL;AAAA;AAAA,EAGG,iBAAiB,CAAC,OAA0B;AAAA,IAC/C,KAAK,yBAAyB,KAAK;AAAA;AAAA,EAa/B,aAAa,CAAC,QAAoC;AAAA,IACtD,OAAO,UAAU,OAAO,WAAW,YAAY,UAAU;AAAA;AAAA,EA4BrD,wBAAwB,CAAC,OAA0B;AAAA,IACvD,QAAQ,MAAM;AAAA,WACL;AAAA,QAED,KAAK,YAAY,UAAU,MAAM,KAAK;AAAA,QAEtC,MAAM,YAAY,KAAK,WAAW,eAAe,MAAM,KAAK;AAAA,QAC5D,KAAK,oBAAoB,SAAS;AAAA,QAClC;AAAA,WACC;AAAA,QAED,KAAK,YAAY,WACb,MAAM,OACN,MAAM,qBACV;AAAA,QAEA,MAAM,aAAa,KAAK,WAAW,gBAC/B,MAAM,OACN,MAAM,qBACV;AAAA,QACA,KAAK,qBAAqB,UAAU;AAAA,QACpC;AAAA,WACC;AAAA,QAED,KAAK,YAAY,aAAa,MAAM,aAAa;AAAA,QAEjD,MAAM,eAAe,KAAK,WAAW,oBACjC,MAAM,aACV;AAAA,QACA,KAAK,uBAAuB,YAAY;AAAA,QACxC;AAAA,WACC;AAAA,QAGD;AAAA,WACC;AAAA,QAED;AAAA;AAAA;AAAA,EAcJ,mBAAmB,CAAC,QAAkC;AAAA,IAC1D,IAAI,OAAO,kBAAkB;AAAA,MACzB,KAAK,WAAW,cAAc,OAAO,KAAK;AAAA,IAC9C;AAAA;AAAA,EAaI,oBAAoB,CAAC,QAAmC;AAAA,IAC5D,IAAI,OAAO,kBAAkB;AAAA,MACzB,IAAI,OAAO,aAAa;AAAA,QACpB,KAAK,WAAW,SAAS,OAAO,OAAO,OAAO,WAAW;AAAA,MAC7D,EAAO;AAAA,QACH,KAAK,WAAW,OAAO,OAAO,KAAK;AAAA;AAAA,IAE3C;AAAA;AAAA,EAYI,sBAAsB,CAAC,QAAuC;AAAA,IAClE,IAAI,OAAO,kBAAkB;AAAA,MACzB,KAAK,WAAW,SAAS,OAAO,KAAK;AAAA,IACzC;AAAA;AAAA,MAWA,SAAS,GAAmC;AAAA,IAC5C,OAAO,KAAK;AAAA;AAAA,MAQZ,SAAS,GAAc;AAAA,IACvB,OAAO,KAAK;AAAA;AAAA,MAWZ,SAAS,CAAC,WAAsB;AAAA,IAChC,KAAK,aAAa;AAAA;AAE1B;;;AC9SA,kBAAsB;;;ACAtB,qBAAgB;AA+CT,SAAS,wBAAwB,CACpC,eACA,QACK;AAAA,EACL,OAAO,UAAS,UAAU,eAAe,OAAO,QAAQ;AAAA;AA8CrD,SAAS,wBAAwB,CACpC,eACA,QACK;AAAA,EACL,OAAO,UAAS,UAAU,eAAe,OAAO,QAAQ;AAAA;;;ACpDrD,SAAS,eAAe,CAAC,OAAc;AAAA,EAC1C,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,EAClC,MAAM,QAAQ,KAAK,IAAI,KAAK,KAAK,CAAC;AAAA,EAElC,OAAO;AAAA,IACH,GAAG,MAAM,IAAI,QAAQ,MAAM,IAAI;AAAA,IAC/B,GAAG,MAAM,IAAI,QAAQ,MAAM,IAAI,SAAS,MAAM,KAAK;AAAA,EACvD;AAAA;AAiDG,SAAS,4CAA4C,CACxD,OACA,QACA,8BAAqC;AAAA,EACjC,GAAG,OAAO,QAAQ;AAAA,EAClB,GAAG,OAAO,SAAS;AACvB,GACA,0BAAmC,OAC9B;AAAA,EACL,MAAM,gBAAgB,yBAAyB,OAAO,MAAM;AAAA,EAC5D,OAAO,2BACH,eACA,6BACA,uBACJ;AAAA;;ACnFG,SAAS,yBAAyB,CAAC,OAAuB;AAAA,EAC7D,IAAI,SAAS;AAAA,IAAG,OAAO;AAAA,EACvB,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ,GAAG;AAAA,IACX,IAAI,UAAU;AAAA,IACd,OAAO,UAAU,OAAO;AAAA,MACpB,WAAW;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,EAAO;AAAA,IACH,IAAI,UAAU;AAAA,IACd,OAAO,UAAU,MAAM,OAAO;AAAA,MAC1B,WAAW;AAAA,MACX;AAAA,IACJ;AAAA;AAAA,EAEJ,OAAO;AAAA;;ACbJ,MAAM,8BAA8B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAWR,WAAW,CAAC,QAAwB;AAAA,IAChC,KAAK,aAAa,IAAI;AAAA,IAEtB,KAAK,iBAAiB,IAAI,gBACrB,CAAC,YAAmC;AAAA,MACjC,WAAW,SAAS,SAAS;AAAA,QACzB,MAAM,UAAU,MAAM,OAAO,sBAAsB;AAAA,QACnD,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,MAAM,CACxC;AAAA,QACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,UACtC,KAAK,sBAAsB,QAAQ;AAAA,UACnC,KAAK,WAAW;AAAA,QACpB;AAAA,MACJ;AAAA,OACD,KAAK,IAAI,CAChB;AAAA,IAEA,KAAK,uBAAuB,IAAI,sBAC3B,CAAC,YAAyC;AAAA,MACvC,IAAI,KAAK,aAAa,WAAW;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,WAAW,SAAS,SAAS;AAAA,QACzB,IAAI,MAAM,gBAAgB;AAAA,UACtB,MAAM,UAAU,MAAM;AAAA,UACtB,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,MAAM,CACxC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ;AAAA,MACJ;AAAA,OACD,KAAK,IAAI,CAChB;AAAA,IAEA,KAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACzD,KAAK,mBAAmB,IAAI,iBAAiB,KAAK,iBAAiB;AAAA,IAEnE,IAAI,QAAQ;AAAA,MACR,KAAK,OAAO,MAAM;AAAA,IACtB;AAAA;AAAA,EAWG,OAAO,GAAS;AAAA,IACnB,KAAK,eAAe,WAAW;AAAA,IAC/B,KAAK,qBAAqB,WAAW;AAAA,IACrC,KAAK,iBAAiB,WAAW;AAAA,IACjC,IAAI,KAAK,eAAe;AAAA,MACpB,OAAO,oBAAoB,UAAU,KAAK,aAAa;AAAA,IAC3D;AAAA,IACA,IAAI,KAAK,eAAe;AAAA,MACpB,OAAO,oBAAoB,UAAU,KAAK,aAAa;AAAA,IAC3D;AAAA;AAAA,EAeJ,MAAM,CAAC,QAAuB;AAAA,IAC1B,KAAK,QAAQ;AAAA,IACb,KAAK,eAAe,QAAQ,MAAM;AAAA,IAClC,KAAK,qBAAqB,QAAQ,MAAM;AAAA,IACxC,KAAK,iBAAiB,QAAQ,QAAQ;AAAA,MAClC,YAAY;AAAA,MACZ,iBAAiB,CAAC,SAAS,UAAU,OAAO;AAAA,IAChD,CAAC;AAAA,IACD,MAAM,eAAe,OAAO,sBAAsB;AAAA,IAClD,MAAM,WAAW,YACb,cACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,IACA,KAAK,WAAW;AAAA,IAEhB,KAAK,iBAAiB,MAAM;AAAA,MACxB,IAAI,KAAK,aAAa,WAAW;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,MAAM,UAAU,OAAO,sBAAsB;AAAA,MAC7C,MAAM,YAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,MACA,IAAI,YAAY,KAAK,UAAU,SAAQ,GAAG;AAAA,QACtC,KAAK,sBAAsB,SAAQ;AAAA,QACnC,KAAK,WAAW;AAAA,MACpB;AAAA,OACD,KAAK,IAAI;AAAA,IACZ,KAAK,iBAAiB,MAAM;AAAA,MACxB,IAAI,KAAK,aAAa,WAAW;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,MAAM,UAAU,OAAO,sBAAsB;AAAA,MAC7C,MAAM,YAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,MACA,IAAI,YAAY,KAAK,UAAU,SAAQ,GAAG;AAAA,QACtC,KAAK,sBAAsB,SAAQ;AAAA,QACnC,KAAK,WAAW;AAAA,MACpB;AAAA,OACD,KAAK,IAAI;AAAA,IACZ,OAAO,iBAAiB,UAAU,KAAK,eAAe;AAAA,MAClD,SAAS;AAAA,IACb,CAAC;AAAA,IACD,OAAO,iBAAiB,UAAU,KAAK,eAAe;AAAA,MAClD,SAAS;AAAA,IACb,CAAC;AAAA;AAAA,EAGG,qBAAqB,CAAC,MAAe;AAAA,IACzC,KAAK,WAAW,OAAO,IAAI;AAAA;AAAA,EAyB/B,gBAAgB,CACZ,UACA,SACF;AAAA,IACE,OAAO,KAAK,WAAW,UAAU,UAAU,OAAO;AAAA;AAAA,EAG9C,iBAAiB,CACrB,eACA,UACF;AAAA,IACE,SAAS,YAAY,eAAe;AAAA,MAChC,IAAI,SAAS,SAAS,cAAc;AAAA,QAChC,IAAI,SAAS,kBAAkB,SAAS;AAAA,UACpC,MAAM,SAAS,SAAS;AAAA,UACxB,MAAM,UAAU,OAAO,sBAAsB;AAAA,UAC7C,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ,EAAO,SAAI,SAAS,kBAAkB,UAAU;AAAA,UAC5C,MAAM,SAAS,SAAS;AAAA,UACxB,MAAM,UAAU,OAAO,sBAAsB;AAAA,UAC7C,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ,EAAO,SAAI,SAAS,kBAAkB,SAAS;AAAA,UAC3C,MAAM,SAAS,SAAS;AAAA,UACxB,MAAM,UAAU,OAAO,sBAAsB;AAAA,UAC7C,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAER;AAAA;AAuCO,MAAM,iCAAiC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EAUR,WAAW,CAAC,QAA4B;AAAA,IACpC,KAAK,mBAAmB,IAAI;AAAA,IAC5B,KAAK,6BAA6B,IAAI;AAAA,IACtC,KAAK,aAAa,IAAI;AAAA,IAEtB,KAAK,iBAAiB,IAAI,gBACrB,CAAC,YAAmC;AAAA,MACjC,WAAW,SAAS,SAAS;AAAA,QACzB,MAAM,UAAU,MAAM,OAAO,sBAAsB;AAAA,QACnD,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,MAAM,CACxC;AAAA,QACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,UACtC,KAAK,sBAAsB,QAAQ;AAAA,UACnC,KAAK,WAAW;AAAA,QACpB;AAAA,MACJ;AAAA,OACD,KAAK,IAAI,CAChB;AAAA,IAEA,KAAK,uBAAuB,IAAI,sBAC3B,CAAC,YAAyC;AAAA,MACvC,IAAI,KAAK,aAAa,WAAW;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,WAAW,SAAS,SAAS;AAAA,QACzB,IAAI,MAAM,gBAAgB;AAAA,UACtB,MAAM,UAAU,MAAM;AAAA,UACtB,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,MAAM,CACxC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ;AAAA,MACJ;AAAA,OACD,KAAK,IAAI,CAChB;AAAA,IAEA,KAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACzD,KAAK,mBAAmB,IAAI,iBAAiB,KAAK,iBAAiB;AAAA,IAEnE,IAAI,QAAQ;AAAA,MACR,KAAK,OAAO,MAAM;AAAA,IACtB;AAAA;AAAA,EAUG,OAAO,GAAS;AAAA,IACnB,KAAK,eAAe,WAAW;AAAA,IAC/B,KAAK,qBAAqB,WAAW;AAAA,IACrC,KAAK,iBAAiB,WAAW;AAAA,IACjC,KAAK,iBAAiB,MAAM;AAAA,IAC5B,KAAK,2BAA2B,MAAM;AAAA;AAAA,EAa1C,MAAM,CAAC,QAA2B;AAAA,IAC9B,KAAK,QAAQ;AAAA,IACb,KAAK,iBAAiB,MAAM;AAAA,IAC5B,KAAK,mBAAmB,IAAI;AAAA,IAC5B,KAAK,2BAA2B,MAAM;AAAA,IACtC,KAAK,6BAA6B,IAAI;AAAA,IACtC,KAAK,eAAe,QAAQ,MAAM;AAAA,IAClC,KAAK,qBAAqB,QAAQ,MAAM;AAAA,IACxC,KAAK,iBAAiB,QAAQ,QAAQ;AAAA,MAClC,YAAY;AAAA,MACZ,iBAAiB,CAAC,SAAS,UAAU,OAAO;AAAA,IAChD,CAAC;AAAA,IACD,MAAM,eAAe,OAAO,sBAAsB;AAAA,IAClD,MAAM,WAAW,YACb,cACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,IACA,KAAK,sBAAsB,QAAQ;AAAA,IACnC,KAAK,WAAW;AAAA,IAChB,KAAK,iBAAiB,MAAM;AAAA,MACxB,IAAI,KAAK,aAAa,WAAW;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,MAAM,UAAU,OAAO,sBAAsB;AAAA,MAC7C,MAAM,YAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,MACA,IAAI,YAAY,KAAK,UAAU,SAAQ,GAAG;AAAA,QACtC,KAAK,sBAAsB,SAAQ;AAAA,QACnC,KAAK,WAAW;AAAA,MACpB;AAAA,OACD,KAAK,IAAI;AAAA,IACZ,KAAK,iBAAiB,MAAM;AAAA,MACxB,IAAI,KAAK,aAAa,WAAW;AAAA,QAC7B;AAAA,MACJ;AAAA,MACA,MAAM,UAAU,OAAO,sBAAsB;AAAA,MAC7C,MAAM,YAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,MACA,IAAI,YAAY,KAAK,UAAU,SAAQ,GAAG;AAAA,QACtC,KAAK,sBAAsB,SAAQ;AAAA,QACnC,KAAK,WAAW;AAAA,MACpB;AAAA,OACD,KAAK,IAAI;AAAA,IACZ,OAAO,iBAAiB,UAAU,KAAK,eAAe;AAAA,MAClD,SAAS;AAAA,MACT,QAAQ,KAAK,iBAAiB;AAAA,IAClC,CAAC;AAAA,IACD,OAAO,iBAAiB,UAAU,KAAK,eAAe;AAAA,MAClD,SAAS;AAAA,MACT,QAAQ,KAAK,iBAAiB;AAAA,IAClC,CAAC;AAAA,IAED,MAAM,oBAAoB,MAAM;AAAA,MAC5B,KAAK,2BAA2B,MAAM;AAAA,MACtC,KAAK,6BAA6B,IAAI;AAAA,MAEtC,MAAM,UAAU,OAAO,sBAAsB;AAAA,MAC7C,MAAM,YAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,MACA,KAAK,sBAAsB,SAAQ;AAAA,MAEnC,MAAM,WAAW,gBAAgB,OAAO;AAAA,MACxC,MAAM,QAAQ,WAAW,QAAQ;AAAA,MACjC,MAAM,iBAAiB,UAAU,kBAAkB;AAAA,QAC/C,QAAQ,KAAK,2BAA2B;AAAA,MAC5C,CAAC;AAAA,OACF,KAAK,IAAI;AAAA,IACZ,iBAAiB;AAAA;AAAA,EAGb,qBAAqB,CAAC,MAAe;AAAA,IACzC,KAAK,WAAW,OAAO,IAAI;AAAA;AAAA,EAe/B,gBAAgB,CACZ,UACA,SACF;AAAA,IACE,OAAO,KAAK,WAAW,UAAU,UAAU,OAAO;AAAA;AAAA,EAgB9C,iBAAiB,CACrB,eACA,UACF;AAAA,IACE,SAAS,YAAY,eAAe;AAAA,MAChC,IAAI,SAAS,SAAS,cAAc;AAAA,QAChC,IAAI,SAAS,kBAAkB,SAAS;AAAA,UACpC,MAAM,SAAS,SAAS;AAAA,UAExB,MAAM,UAAU,OAAO,sBAAsB;AAAA,UAC7C,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ,EAAO,SAAI,SAAS,kBAAkB,UAAU;AAAA,UAC5C,MAAM,SAAS,SAAS;AAAA,UAExB,MAAM,UAAU,OAAO,sBAAsB;AAAA,UAC7C,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ,EAAO,SAAI,SAAS,kBAAkB,SAAS;AAAA,UAC3C,MAAM,SAAS,SAAS;AAAA,UAWxB,MAAM,UAAU,OAAO,sBAAsB;AAAA,UAC7C,MAAM,WAAW,YACb,SACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,UACA,IAAI,YAAY,KAAK,UAAU,QAAQ,GAAG;AAAA,YACtC,KAAK,sBAAsB,QAAQ;AAAA,YACnC,KAAK,WAAW;AAAA,UACpB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAER;AA+BO,SAAS,WAAW,CAAC,MAAe,eAAoC;AAAA,EAC3E,MAAM,cAAc,WAAW,cAAc,WAAW;AAAA,EACxD,MAAM,aAAa,WAAW,cAAc,UAAU;AAAA,EACtD,MAAM,eAAe,WAAW,cAAc,YAAY;AAAA,EAC1D,MAAM,gBAAgB,WAAW,cAAc,aAAa;AAAA,EAE5D,MAAM,aAAa,WAAW,cAAc,eAAe;AAAA,EAC3D,MAAM,YAAY,WAAW,cAAc,cAAc;AAAA,EACzD,MAAM,cAAc,WAAW,cAAc,gBAAgB;AAAA,EAC7D,MAAM,eAAe,WAAW,cAAc,iBAAiB;AAAA,EAE/D,MAAM,WAAW,KAAK,OAAO,cAAc;AAAA,EAC3C,MAAM,UAAU,KAAK,MAAM,aAAa;AAAA,EACxC,MAAM,YACF,KAAK,QAAQ,cAAc,eAAe,aAAa;AAAA,EAC3D,MAAM,aACF,KAAK,SAAS,aAAa,gBAAgB,YAAY;AAAA,EAC3D,OAAO,IAAI,QAAQ,UAAU,SAAS,WAAW,UAAU;AAAA;AAgB/D,SAAS,WAAW,CAAC,IAAyB,IAAa;AAAA,EACvD,IAAI,OAAO,WAAW;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACA,OACI,GAAG,QAAQ,GAAG,OACd,GAAG,SAAS,GAAG,QACf,GAAG,UAAU,GAAG,SAChB,GAAG,WAAW,GAAG;AAAA;AAkBzB,IAAM,gBAA0C;AAAA,EAC5C,UAAU,CAAC,GAAG,CAAC;AAAA,EACf,YAAY,CAAC,GAAG,CAAC;AAAA,EACjB,UAAU,CAAC,CAAC;AAAA,EACZ,YAAY,CAAC,CAAC;AAAA,EACd,QAAQ,CAAC,CAAC;AAAA,EACV,QAAQ,CAAC,CAAC;AAAA,EACV,kBAAkB,CAAC,GAAG,CAAC;AAAA,EACvB,eAAe,CAAC,GAAG,GAAG,CAAC;AAAA,EACvB,KAAK,CAAC,CAAC;AAAA,EACP,WAAW,CAAC,CAAC;AAAA,EACb,MAAM,CAAC,GAAG,CAAC;AAAA,EACX,WAAW,CAAC,GAAG,CAAC;AACpB;AAsCO,SAAS,YAAY,CACxB,SACwB;AAAA,EACxB,OAAO,IAAI,MAAM,SAAS;AAAA,IACtB,GAAG,CACC,QACA,MACA,UACG;AAAA,MACH,MAAM,QAAQ,QAAQ,IAAI,QAAQ,MAAM,MAAM;AAAA,MAG9C,IACI,OAAO,SAAS,YAChB,QAAQ,iBACR,OAAO,UAAU,YACnB;AAAA,QACE,OAAO,QAAS,IAAI,MAAa;AAAA,UAE7B,MAAM,UAAU,CAAC,GAAG,IAAI;AAAA,UAGxB,IAAI,SAAS,eAAe,KAAK,WAAW,GAAG;AAAA,YAC3C,MAAM,gBACF,iCAAiC,IAAI;AAAA,YACzC,OAAO,MAAM,MAAM,QAAQ,aAAa;AAAA,UAC5C,EAAO;AAAA,YAEH,MAAM,WAAW,cAAc;AAAA,YAC/B,WAAW,SAAS,UAAU;AAAA,cAC1B,IAAI,QAAQ,QAAQ,QAAQ;AAAA,gBACxB,QAAQ,SAAS,CAAC,QAAQ;AAAA,cAC9B;AAAA,YACJ;AAAA,YAEA,IAAI,SAAS,eAAe,KAAK,WAAW,GAAG;AAAA,cAC3C,QAAQ,MAAM,QAAQ;AAAA,YAC1B;AAAA;AAAA,UAIJ,OAAO,MAAM,MAAM,QAAQ,OAAO;AAAA;AAAA,MAE1C;AAAA,MAGA,IAAI,OAAO,UAAU,YAAY;AAAA,QAC7B,OAAO,QAAS,IAAI,MAAa;AAAA,UAC7B,OAAO,MAAM,MAAM,QAAQ,IAAI;AAAA;AAAA,MAEvC;AAAA,MAEA,OAAO;AAAA;AAAA,IAEX,GAAG,CAAC,QAAQ,MAAM,OAAgB;AAAA,MAC9B,OAAO,QAAQ,IAAI,QAAQ,MAAM,KAAK;AAAA;AAAA,EAE9C,CAAC;AAAA;AAiCE,SAAS,gCAAgC,CAAC,MAA0B;AAAA,EACvE,IAAI,KAAK,WAAW,GAAG;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACA,MAAM,UAAU,CAAC,GAAG,IAAI;AAAA,EACxB,MAAM,cAAc,KAAK,GAAG;AAAA,EAC5B,IAAI,gBAAgB,WAAW;AAAA,IAC3B,QAAQ,KAAK,cAAc,QAAQ;AAAA,IACnC,QAAQ,KAAK,CAAC,QAAQ;AAAA,IACtB,QAAQ,MAAM,QAAQ;AAAA,IACtB,QAAQ,KAAK,CAAC,QAAQ;AAAA,EAC1B;AAAA,EACA,OAAO;AAAA;;ACzyBX,qBAAS;AAgBF,SAAS,aAAa,CACzB,SACA,KACA,iBACA,uBACA,MACA,QAAgB,OACZ;AAAA,EAEJ,IAAI,WAAW,OAAO;AAAA,EACtB,WAAW,WAAW;AAAA,EACtB,QAAQ,UAAU;AAAA,EAClB,QAAQ,cAAc;AAAA,EACtB,QAAQ,YAAY,IAAI;AAAA,EACxB,IAAI,uBAAuB;AAAA,IACvB,QAAQ,OAAO,IAAI,IAAI,UAAU,IAAI,CAAC;AAAA,IACtC,QAAQ,OAAO,IAAI,IAAI,UAAU,IAAI,CAAC;AAAA,IACtC,QAAQ,OAAO,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAA,IACtC,QAAQ,OAAO,IAAI,GAAG,IAAI,IAAI,QAAQ;AAAA,EAC1C,EAAO;AAAA,IACH,QAAQ,OAAO,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;AAAA,IACvC,QAAQ,OAAO,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;AAAA,IACvC,QAAQ,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ;AAAA,IACvC,QAAQ,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ;AAAA;AAAA,EAE3C,QAAQ,OAAO;AAAA,EACf,QAAQ,YAAY;AAAA;AASjB,SAAS,eAAe,CAC3B,SACA,YACA,uBACI;AAAA,EACJ,IAAI,CAAC,uBAAuB,UAAU,GAAG;AAAA,IACrC;AAAA,EACJ;AAAA,EACA,MAAM,QAAQ,mBAAmB,UAAU;AAAA,EAC3C,MAAM,SAAS,oBAAoB,UAAU;AAAA,EAC7C,MAAM,SAAS,cAAc,YAAY,YAAY,WAAW;AAAA,EAChE,MAAM,UAAU,UAAU,YAAY,YAAY,OAAO;AAAA,EACzD,MAAM,UAAU,UAAU,YAAY,YAAY,OAAO;AAAA,EACzD,IACI,WAAW,aACX,WAAW,aACX,SAAS,aACT,UAAU,WACZ;AAAA,IACE;AAAA,EACJ;AAAA,EACA,QAAQ,UAAU;AAAA,EAClB,QAAQ,cAAc;AAAA,EACtB,QAAQ,YAAY;AAAA,EACpB,IAAI,uBAAuB;AAAA,IACvB,QAAQ,UAAU,SAAS,SAAS,OAAO,QAAQ,CAAC;AAAA,EACxD,EAAO;AAAA,IACH,QAAQ,UAAU,SAAS,CAAC,SAAS,OAAO,CAAC,QAAQ,CAAC;AAAA;AAAA,EAE1D,QAAQ,OAAO;AAAA,EACf,QAAQ,YAAY;AAAA,EACpB,QAAQ,cAAc;AAAA;AASnB,SAAS,QAAQ,CACpB,SACA,YACA,WACA,uBACI;AAAA,EACJ,IAAI,CAAC,uBAAuB,UAAU,GAAG;AAAA,IAErC;AAAA,EACJ;AAAA,EACA,MAAM,QAAQ,mBAAmB,UAAU;AAAA,EAC3C,MAAM,SAAS,oBAAoB,UAAU;AAAA,EAC7C,MAAM,SAAS,cAAc,YAAY,YAAY,WAAW;AAAA,EAChE,MAAM,UAAU,UAAU,YAAY,YAAY,OAAO;AAAA,EACzD,MAAM,UAAU,UAAU,YAAY,YAAY,OAAO;AAAA,EACzD,IACI,WAAW,aACX,WAAW,aACX,SAAS,aACT,UAAU,WACZ;AAAA,IACE;AAAA,EACJ;AAAA,EACA,QAAQ,YAAY,IAAI;AAAA,EAExB,QAAQ,UAAU;AAAA,EAClB,QAAQ,cAAc;AAAA,EACtB,QAAQ,OAAO,GAAG,CAAC;AAAA,EACnB,IAAI,uBAAuB;AAAA,IACvB,QAAQ,OAAO,GAAG,UAAU,MAAM;AAAA,EACtC,EAAO;AAAA,IACH,QAAQ,OAAO,GAAG,CAAC,UAAU,MAAM;AAAA;AAAA,EAEvC,QAAQ,OAAO;AAAA,EAGf,QAAQ,UAAU;AAAA,EAClB,QAAQ,cAAc;AAAA,EACtB,QAAQ,OAAO,GAAG,CAAC;AAAA,EACnB,QAAQ,OAAO,UAAU,OAAO,CAAC;AAAA,EACjC,QAAQ,OAAO;AAAA,EACf,QAAQ,cAAc;AAAA;AAUnB,SAAS,QAAQ,CACpB,SACA,eACA,gBACA,kBACA,mBACA,uBACA,iBACI;AAAA,EACJ,IAAI,qBAAqB,WAAS,kBAC9B,eACA,cACJ;AAAA,EACA,IAAI,mBAAmB,WAAS,kBAC5B,kBACA,aACJ;AAAA,EACA,IAAI,QAAQ,WAAS,sBAAsB,eAAe,cAAc;AAAA,EACxE,IAAI,SAAS,WAAS,sBAClB,eACA,gBACJ;AAAA,EACA,IAAI,mBAAmB,0BAA0B,KAAK;AAAA,EACtD,IAAI,UAAU,KAAK,IAAI,IAAI,gBAAgB;AAAA,EAC3C,IAAI,aAAa,UAAU;AAAA,EAC3B,IAAI,yBACA,KAAK,KAAK,cAAc,IAAI,UAAU,IAAI;AAAA,EAC9C,IAAI,yBACA,KAAK,MAAM,eAAe,IAAI,UAAU,IAAI;AAAA,EAChD,IAAI,uBAAuB,wBACrB,KAAK,MAAM,cAAc,IAAI,UAAU,IAAI,aAC3C,KAAK,KAAK,iBAAiB,IAAI,UAAU,IAAI;AAAA,EACnD,IAAI,uBAAuB,wBACrB,KAAK,KAAK,iBAAiB,IAAI,UAAU,IAAI,aAC7C,KAAK,MAAM,cAAc,IAAI,UAAU,IAAI;AAAA,EAGjD,SACQ,IAAI,uBACR,KAAK,wBACL,KAAK,YACP;AAAA,IACE,MAAM,aAAa,WAAS,UACxB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBAAuB,oBAAoB,UAAU,CAClE;AAAA,IACA,MAAM,WAAW,WAAS,UACtB,EAAE,GAAG,GAAG,GAAG,iBAAiB,EAAE,GAC9B,WAAS,uBAAuB,oBAAoB,UAAU,CAClE;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,MAAM;AAAA,IAC1B,QAAQ,OAAO,WAAW,GAAG,WAAW,CAAC;AAAA,IACzC,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA,IACrC,QAAQ,OAAO;AAAA,EACnB;AAAA,EACA,SACQ,IAAI,qBACR,KAAK,sBACL,KAAK,YACP;AAAA,IACE,MAAM,aAAa,WAAS,UACxB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBAAuB,kBAAkB,UAAU,CAChE;AAAA,IACA,MAAM,WAAW,WAAS,UACtB,EAAE,GAAG,eAAe,GAAG,GAAG,EAAE,GAC5B,WAAS,uBAAuB,kBAAkB,UAAU,CAChE;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,MAAM;AAAA,IAC1B,QAAQ,OAAO,WAAW,GAAG,WAAW,CAAC;AAAA,IACzC,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA,IACrC,QAAQ,OAAO;AAAA,EACnB;AAAA;AAUG,SAAS,eAAe,CAC3B,SACA,eACA,gBACA,kBACA,mBACA,uBACA,iBACI;AAAA,EACJ,IAAI,qBAAqB,WAAS,kBAC9B,eACA,cACJ;AAAA,EACA,IAAI,mBAAmB,WAAS,kBAC5B,kBACA,aACJ;AAAA,EACA,IAAI,QAAQ,WAAS,sBAAsB,eAAe,cAAc;AAAA,EACxE,IAAI,mBAAmB,0BAA0B,KAAK;AAAA,EACtD,IAAI,UAAU,KAAK,IAAI,IAAI,gBAAgB;AAAA,EAC3C,IAAI,cAAc,UAAU;AAAA,EAC5B,IAAI,aAAa,UAAU;AAAA,EAC3B,IAAI,UAAU;AAAA,EACd,IAAI,oBAAoB,GAAG;AAAA,IACvB,UAAU,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC;AAAA,EAChD;AAAA,EACA,IAAI,yBAAyB,KAAK,KAAK,cAAc,IAAI,OAAO,IAAI;AAAA,EACpE,IAAI,yBACA,KAAK,MAAM,eAAe,IAAI,OAAO,IAAI;AAAA,EAC7C,IAAI,uBAAuB,wBACrB,KAAK,KAAK,cAAc,IAAI,OAAO,IAAI,UACvC,KAAK,MAAM,iBAAiB,IAAI,OAAO,IAAI;AAAA,EACjD,IAAI,uBAAuB,wBACrB,KAAK,MAAM,iBAAiB,IAAI,OAAO,IAAI,UAC3C,KAAK,KAAK,cAAc,IAAI,OAAO,IAAI;AAAA,EAC7C,IAAI,0BACA,KAAK,KAAK,cAAc,IAAI,WAAW,IAAI;AAAA,EAC/C,IAAI,0BACA,KAAK,MAAM,eAAe,IAAI,WAAW,IAAI;AAAA,EACjD,IAAI,wBAAwB,wBACtB,KAAK,KAAK,cAAc,IAAI,WAAW,IAAI,cAC3C,KAAK,MAAM,iBAAiB,IAAI,WAAW,IAAI;AAAA,EACrD,IAAI,wBAAwB,wBACtB,KAAK,MAAM,iBAAiB,IAAI,WAAW,IAAI,cAC/C,KAAK,KAAK,cAAc,IAAI,WAAW,IAAI;AAAA,EACjD,IAAI,yBACA,KAAK,KAAK,cAAc,IAAI,UAAU,IAAI;AAAA,EAC9C,IAAI,yBACA,KAAK,MAAM,eAAe,IAAI,UAAU,IAAI;AAAA,EAChD,IAAI,uBAAuB,wBACrB,KAAK,KAAK,cAAc,IAAI,UAAU,IAAI,aAC1C,KAAK,MAAM,iBAAiB,IAAI,UAAU,IAAI;AAAA,EACpD,IAAI,uBAAuB,wBACrB,KAAK,MAAM,iBAAiB,IAAI,UAAU,IAAI,aAC9C,KAAK,KAAK,cAAc,IAAI,UAAU,IAAI;AAAA,EAEhD,IAAI,uBAAuB,UAAU;AAAA,EACrC,IAAI,2BAA2B,cAAc;AAAA,EAC7C,IAAI,0BAA0B,aAAa;AAAA,EAE3C,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAC5B,MAAM,4BAA4B,QAAQ,YACtC,GAAG,EAAE,cAAc,0BACvB;AAAA,EACA,MAAM,oBACF,0BAA0B,wBAC1B,0BAA0B;AAAA,EAC9B,MAAM,4BAA4B,QAAQ,YACtC,GAAG,EAAE,aAAa,yBACtB;AAAA,EACA,MAAM,oBACF,0BAA0B,wBAC1B,0BAA0B;AAAA,EAE9B,MAAM,sBAAsB,KAAK,MAC5B,yBAAyB,0BAA0B,OACxD;AAAA,EACA,SAAS,QAAQ,EAAG,SAAS,qBAAqB,SAAS;AAAA,IACvD,MAAM,IAAI,yBAAyB,QAAQ;AAAA,IAC3C,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,IAAI;AAAA,IACxB,IAAI,WAAW,WAAS,UACpB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBACL,kBACA,KAAK,eACT,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,WAAW,WAAS,UAChB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBACL,kBACA,MAAM,eACV,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,QAAQ,YAAY;AAAA,IACpB,QAAQ,eAAe;AAAA,IACvB,QAAQ,OAAO,QAAQ,KAAK;AAAA,IAC5B,MAAM,iBAAiB,QAAQ,YAC3B,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GACxD;AAAA,IACA,MAAM,SACF,eAAe,wBACf,eAAe;AAAA,IACnB,IAAI,CAAC,uBAAuB;AAAA,MACxB,WAAW,WAAS,UAAU,UAAU;AAAA,QACpC,GAAG;AAAA,QACH,GAAG,CAAC,SAAS,IAAI,SAAS;AAAA,MAC9B,CAAC;AAAA,MACD,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,CAAC,SAAS,CACd;AAAA,IACJ,EAAO;AAAA,MACH,WAAW,WAAS,UAAU,UAAU;AAAA,QACpC,GAAG;AAAA,QACH,GAAG,SAAS,IAAI,SAAS;AAAA,MAC7B,CAAC;AAAA,MACD,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,SAAS,CACb;AAAA;AAAA,IAEJ,QAAQ,OAAO;AAAA,EACnB;AAAA,EACA,MAAM,oBAAoB,KAAK,MAC1B,yBAAyB,0BAA0B,OACxD;AAAA,EACA,SAAS,QAAQ,EAAG,SAAS,mBAAmB,SAAS;AAAA,IACrD,MAAM,IAAI,uBAAuB,QAAQ;AAAA,IACzC,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,IAAI;AAAA,IACxB,IAAI,WAAW,WAAS,UACpB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBACL,oBACA,MAAM,eACV,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,WAAW,WAAS,UAChB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBACL,oBACA,KAAK,eACT,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,QAAQ,YAAY;AAAA,IACpB,QAAQ,eAAe;AAAA,IACvB,QAAQ,OAAO,QAAQ,KAAK;AAAA,IAE5B,MAAM,iBAAiB,QAAQ,YAC3B,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GACxD;AAAA,IACA,WAAW,WAAS,UAAU,UAAU;AAAA,MACpC,GAAG,eAAe,QAAQ,IAAI,eAAe,QAAQ;AAAA,MACrD,GAAG;AAAA,IACP,CAAC;AAAA,IACD,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,CAAC,SAAS,CACd;AAAA,IACJ,EAAO;AAAA,MACH,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,SAAS,CACb;AAAA;AAAA,IAEJ,QAAQ,OAAO;AAAA,EACnB;AAAA,EAEA,MAAM,uBAAuB,KAAK,MAC7B,0BAA0B,2BAA2B,WAC1D;AAAA,EACA,SAAS,QAAQ,EAAG,SAAS,sBAAsB,SAAS;AAAA,IACxD,MAAM,IAAI,0BAA0B,QAAQ;AAAA,IAC5C,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,UAAU,OAAO,KAAK;AAAA,MAC3D;AAAA,IACJ,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,IAAI;AAAA,IACxB,IAAI,WAAW,WAAS,UACpB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBACL,kBACA,KAAK,eACT,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,WAAW,WAAS,UAChB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBACL,kBACA,MAAM,eACV,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,QAAQ,OAAO,GAAG,KAAK;AAAA,IACvB,MAAM,iBAAiB,QAAQ,YAC3B,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GACxD;AAAA,IACA,IAAI,2BAA2B,0BAA0B,QAAQ,GAAG;AAAA,MAChE,QAAQ,YAAY;AAAA,MACpB,QAAQ,eAAe;AAAA,MACvB,MAAM,SACF,eAAe,wBACf,eAAe;AAAA,MACnB,IAAI,CAAC,uBAAuB;AAAA,QACxB,WAAW,WAAS,UAAU,UAAU;AAAA,UACpC,GAAG;AAAA,UACH,GAAG,CAAC,SAAS,IAAI,SAAS;AAAA,QAC9B,CAAC;AAAA,QACD,WAAW,WAAS,UAAU,QAAQ;AAAA,MAC1C,EAAO;AAAA,QACH,WAAW,WAAS,UAAU,UAAU;AAAA,UACpC,GAAG;AAAA,UACH,GAAG,SAAS,IAAI,SAAS;AAAA,QAC7B,CAAC;AAAA;AAAA,MAEL,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,SAAS,CACb;AAAA,IACJ;AAAA,IACA,QAAQ,OAAO;AAAA,EACnB;AAAA,EACA,MAAM,qBAAqB,KAAK,MAC3B,wBAAwB,yBAAyB,WACtD;AAAA,EACA,SAAS,QAAQ,EAAG,SAAS,oBAAoB,SAAS;AAAA,IACtD,MAAM,IAAI,wBAAwB,QAAQ;AAAA,IAC1C,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,UAAU,OAAO,KAAK;AAAA,MAC3D;AAAA,IACJ,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,IAAI;AAAA,IACxB,IAAI,WAAW,WAAS,UACpB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBACL,oBACA,MAAM,eACV,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,WAAW,WAAS,UAChB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBACL,oBACA,KAAK,eACT,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,QAAQ,OAAO,GAAG,KAAK;AAAA,IACvB,MAAM,iBAAiB,QAAQ,YAC3B,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GACxD;AAAA,IACA,MAAM,SACF,eAAe,wBACf,eAAe;AAAA,IACnB,IAAI,2BAA2B,oBAAoB,GAAG;AAAA,MAClD,QAAQ,YAAY;AAAA,MACpB,QAAQ,eAAe;AAAA,MACvB,WAAW,WAAS,UAAU,UAAU;AAAA,QACpC,GAAG,eAAe,QAAQ,IAAI,eAAe,QAAQ;AAAA,QACrD,GAAG;AAAA,MACP,CAAC;AAAA,MACD,IAAI,CAAC,uBAAuB;AAAA,QACxB,WAAW,WAAS,UAAU,QAAQ;AAAA,MAC1C;AAAA,MACA,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,SAAS,CACb;AAAA,IACJ;AAAA,IACA,QAAQ,OAAO;AAAA,EACnB;AAAA,EACA,MAAM,sBAAsB,KAAK,MAC5B,yBAAyB,0BAA0B,UACxD;AAAA,EACA,SAAS,QAAQ,EAAG,SAAS,qBAAqB,SAAS;AAAA,IACvD,MAAM,IAAI,yBAAyB,QAAQ;AAAA,IAC3C,IACI,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,UAAU,OAAO,KAAK,KAC3D,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,cAAc,OAAO,KAAK;AAAA,MAE/D;AAAA,IACJ,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,IAAI;AAAA,IACxB,IAAI,WAAW,WAAS,UACpB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBACL,kBACA,OAAO,eACX,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,WAAW,WAAS,UAChB,EAAE,GAAG,GAAG,GAAG,cAAc,EAAE,GAC3B,WAAS,uBACL,kBACA,QAAQ,eACZ,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,QAAQ,OAAO,GAAG,KAAK;AAAA,IACvB,MAAM,iBAAiB,QAAQ,YAC3B,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GACxD;AAAA,IACA,IAAI,0BAA0B,0BAA0B,QAAQ,GAAG;AAAA,MAC/D,QAAQ,YAAY;AAAA,MACpB,QAAQ,eAAe;AAAA,MACvB,MAAM,SACF,eAAe,wBACf,eAAe;AAAA,MACnB,IAAI,CAAC,uBAAuB;AAAA,QACxB,WAAW,WAAS,UAAU,UAAU;AAAA,UACpC,GAAG;AAAA,UACH,GAAG,CAAC,SAAS,IAAI,SAAS;AAAA,QAC9B,CAAC;AAAA,QACD,WAAW,WAAS,UAAU,QAAQ;AAAA,MAC1C,EAAO;AAAA,QACH,WAAW,WAAS,UAAU,UAAU;AAAA,UACpC,GAAG;AAAA,UACH,GAAG,SAAS,IAAI,SAAS;AAAA,QAC7B,CAAC;AAAA;AAAA,MAEL,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,SAAS,CACb;AAAA,IACJ;AAAA,IACA,QAAQ,OAAO;AAAA,EACnB;AAAA,EACA,MAAM,oBAAoB,KAAK,MAC1B,uBAAuB,wBAAwB,UACpD;AAAA,EACA,SAAS,QAAQ,EAAG,SAAS,mBAAmB,SAAS;AAAA,IACrD,MAAM,IAAI,uBAAuB,QAAQ;AAAA,IACzC,IACI,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,UAAU,OAAO,KAAK,KAC3D,KAAK,MAAM,IAAI,OAAO,IAAI,KAAK,MAAM,cAAc,OAAO,KAAK;AAAA,MAE/D;AAAA,IACJ,QAAQ,UAAU;AAAA,IAClB,QAAQ,cAAc;AAAA,IACtB,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY,IAAI;AAAA,IACxB,IAAI,WAAW,WAAS,UACpB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBACL,oBACA,QAAQ,eACZ,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,WAAW,WAAS,UAChB,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE,GAC3B,WAAS,uBACL,oBACA,OAAO,eACX,CACJ;AAAA,IACA,IAAI,CAAC,uBAAuB;AAAA,MACxB,QAAQ,OAAO,SAAS,GAAG,CAAC,SAAS,CAAC;AAAA,IAC1C,EAAO;AAAA,MACH,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA;AAAA,IAEzC,QAAQ,OAAO,GAAG,KAAK;AAAA,IACvB,MAAM,iBAAiB,QAAQ,YAC3B,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,GACxD;AAAA,IACA,MAAM,SACF,eAAe,wBACf,eAAe;AAAA,IACnB,IAAI,0BAA0B,oBAAoB,GAAG;AAAA,MACjD,QAAQ,YAAY;AAAA,MACpB,QAAQ,eAAe;AAAA,MACvB,WAAW,WAAS,UAAU,UAAU;AAAA,QACpC,GAAG,eAAe,QAAQ,IAAI,eAAe,QAAQ;AAAA,QACrD,GAAG;AAAA,MACP,CAAC;AAAA,MACD,IAAI,CAAC,uBAAuB;AAAA,QACxB,WAAW,WAAS,UAAU,QAAQ;AAAA,MAC1C;AAAA,MACA,QAAQ,SACJ,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KACpD,SAAS,GACT,SAAS,CACb;AAAA,IACJ;AAAA,IACA,QAAQ,OAAO;AAAA,EACnB;AAAA;AAUG,SAAS,gBAAgB,CAC5B,SACA,KACA,iBACA,uBACA,SAAiB,IACjB,QAAgB,OACZ;AAAA,EACJ,SAAS,SAAS;AAAA,EAClB,QAAQ,OAAO,GAAG,KAAK;AAAA,EACvB,QAAQ,YAAY;AAAA,EACpB,IAAI,uBAAuB;AAAA,IACvB,QAAQ,SACJ,MAAM,IAAI,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,QAAQ,CAAC,KAC7C,IAAI,IAAI,QACR,IAAI,IAAI,MACZ;AAAA,EACJ,EAAO;AAAA,IACH,QAAQ,SACJ,MAAM,IAAI,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE,QAAQ,CAAC,KAC7C,IAAI,IAAI,QACR,CAAC,IAAI,IAAI,MACb;AAAA;AAAA,EAEJ,QAAQ,YAAY;AAAA;AAUjB,SAAS,mBAAmB,CAC/B,SACA,KACA,uBACI;AAAA,EACJ,QAAQ,UAAU;AAAA,EAClB,QAAQ,cAAc;AAAA,EAEtB,IAAI,uBAAuB;AAAA,IACvB,QAAQ,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,EAC/C,EAAO;AAAA,IACH,QAAQ,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA;AAAA,EAEhD,QAAQ,OAAO;AAAA,EACf,QAAQ,cAAc;AAAA;;ACvuB1B,qBAAgB;AA2CT,SAAS,SAAS,CACrB,SACA,iBACA,YACA,UACA,QAAgB,GAChB,aAAqB,KACvB;AAAA,EACE,MAAM,SAAS,WAAS,sBAAsB,YAAY,QAAQ;AAAA,EAClE,MAAM,cACF,KAAK,SAAS,kBAAkB,MAC1B,KAAK,kBACL,SAAS;AAAA,EACnB,MAAM,eAAe,SAAS;AAAA,EAC9B,MAAM,cAAc,WAAS,oBACzB,YACA,UACA,eAAe,MACnB;AAAA,EACA,QAAQ,UAAU;AAAA,EAClB,QAAQ,YAAY,QAAQ;AAAA,EAC5B,QAAQ,OAAO,WAAW,GAAG,WAAW,CAAC;AAAA,EACzC,QAAQ,OAAO,YAAY,GAAG,YAAY,CAAC;AAAA,EAC3C,QAAQ,OAAO;AAAA,EACf,MAAM,aAAa,WAAS,YACxB,WAAS,kBAAkB,UAAU,UAAU,GAC/C,KAAK,KAAK,CACd;AAAA,EACA,MAAM,cAAc,WAAS,UACzB,aACA,WAAS,uBAAuB,YAAY,cAAc,GAAG,CACjE;AAAA,EACA,MAAM,cAAc,WAAS,UACzB,aACA,WAAS,uBAAuB,YAAY,cAAc,GAAG,CACjE;AAAA,EACA,QAAQ,UAAU;AAAA,EAClB,QAAQ,OAAO,SAAS,GAAG,SAAS,CAAC;AAAA,EACrC,QAAQ,OAAO,YAAY,GAAG,YAAY,CAAC;AAAA,EAC3C,QAAQ,OAAO,YAAY,GAAG,YAAY,CAAC;AAAA,EAC3C,QAAQ,UAAU;AAAA,EAClB,QAAQ,KAAK;AAAA;AAOV,IAAM,oBAAoB;AAM1B,IAAM,oBAAoB,oBAAoB;AAM9C,IAAM,mBAAmB,oBAAoB;AAM7C,IAAM,yBAAyB;AAM/B,IAAM,wBAAwB;AAM9B,IAAM,4BAA4B;AAMlC,IAAM,2BAA2B;AA8CjC,SAAS,SAAS,CACrB,SACA,eACA,gBACA,kBACA,uBACA,iBACI;AAAA,EAEJ;AAAA,IACI;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACA,oBAAoB,cAAc,GAAG,eAAe,CAAC;AAAA,EAEzD,QAAQ,KAAK;AAAA,EACb,QAAQ,cAAc;AAAA,EACtB,SACQ,IAAI,kBACR,KAAK,mBACL,KAAK,eACP;AAAA,IACE,MAAM,iBAAiB;AAAA,MACnB,GAAG,IAAI;AAAA,MACP,GAAG,cAAc;AAAA,IACrB;AAAA,IACA,MAAM,kBAAkB,wBAClB,oBAAoB,kBACpB,CAAC,oBAAoB;AAAA,IAC3B,MAAM,aAAa,wBACb,yBAAyB,kBACzB,CAAC,yBAAyB;AAAA,IAChC,cACI,SACA,iBACA,gBACA,iBACA,IAAI,uBACJ,EAAE,YAAY,UAAU,0BAA0B,CACtD;AAAA,EACJ;AAAA,EAEA,SAAS,IAAI,gBAAiB,KAAK,iBAAiB,KAAK,aAAa;AAAA,IAClE,IAAI,IAAI,kBAAkB,GAAG;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,IAAI,IAAI,iBAAiB,GAAG;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,MAAM,eAAe;AAAA,MACjB,GAAG,IAAI;AAAA,MACP,GAAG,cAAc;AAAA,IACrB;AAAA,IACA,MAAM,gBAAgB,wBAChB,oBAAoB,kBACpB,CAAC,oBAAoB;AAAA,IAC3B,cAAc,SAAS,iBAAiB,cAAc,eAAe,CAAC;AAAA,EAC1E;AAAA,EAEA,SAAS,IAAI,iBAAkB,KAAK,kBAAkB,KAAK,cAAc;AAAA,IACrE,IAAI,IAAI,kBAAkB,GAAG;AAAA,MACzB;AAAA,IACJ;AAAA,IACA,MAAM,gBAAgB;AAAA,MAClB,GAAG,IAAI;AAAA,MACP,GAAG,cAAc;AAAA,IACrB;AAAA,IACA,MAAM,iBAAiB,wBACjB,mBAAmB,kBACnB,CAAC,mBAAmB;AAAA,IAC1B,MAAM,aAAa,wBACb,wBAAwB,kBACxB,CAAC,wBAAwB;AAAA,IAC/B,cACI,SACA,iBACA,eACA,gBACA,IAAI,uBACJ,EAAE,YAAY,UAAU,0BAA0B,OAAO,MAAM,CACnE;AAAA,EACJ;AAAA,EAEA,QAAQ,QAAQ;AAAA,EAGhB;AAAA,IACI,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,cAAc;AAAA,IACd,uBAAuB;AAAA,MACvB,oBACA,cAAc,GACd,iBAAiB,GACjB,0BACJ;AAAA,EAEA,QAAQ,KAAK;AAAA,EACb,QAAQ,cAAc;AAAA,EACtB,SACQ,IAAI,mBACR,KAAK,oBACL,KAAK,gBACP;AAAA,IACE,MAAM,iBAAiB;AAAA,MACnB,GAAG,cAAc;AAAA,MACjB,GAAG,IAAI;AAAA,IACX;AAAA,IACA,MAAM,kBAAkB,oBAAoB;AAAA,IAC5C,MAAM,aAAa,yBAAyB;AAAA,IAC5C,cACI,SACA,iBACA,gBACA,iBACA,GACA,EAAE,YAAY,UAAU,0BAA0B,CACtD;AAAA,EACJ;AAAA,EAEA,SACQ,IAAI,kBACR,KAAK,mBACL,KAAK,eACP;AAAA,IACE,IAAI,IAAI,mBAAmB,GAAG;AAAA,MAC1B;AAAA,IACJ;AAAA,IACA,MAAM,gBAAgB;AAAA,MAClB,GAAG,cAAc;AAAA,MACjB,GAAG,IAAI;AAAA,IACX;AAAA,IACA,MAAM,iBAAiB,mBAAmB;AAAA,IAC1C,MAAM,aAAa,wBAAwB;AAAA,IAC3C,cACI,SACA,iBACA,eACA,gBACA,GACA,EAAE,YAAY,UAAU,yBAAyB,CACrD;AAAA,EACJ;AAAA,EAEA,SAAS,IAAI,iBAAkB,KAAK,kBAAkB,KAAK,cAAc;AAAA,IACrE,IAAI,IAAI,mBAAmB,GAAG;AAAA,MAC1B;AAAA,IACJ;AAAA,IACA,MAAM,eAAe;AAAA,MACjB,GAAG,cAAc;AAAA,MACjB,GAAG,IAAI;AAAA,IACX;AAAA,IACA,MAAM,gBAAgB,oBAAoB;AAAA,IAC1C,cAAc,SAAS,iBAAiB,cAAc,eAAe,CAAC;AAAA,EAC1E;AAAA,EACA,QAAQ,QAAQ;AAAA;AAGpB,SAAS,aAAa,CAClB,SACA,iBACA,gBACA,iBACA,WACA,YAKF;AAAA,EACE,MAAM,WAAW,eAAe;AAAA,EAChC,QAAQ,KAAK;AAAA,EACb,QAAQ,YAAY,IAAI;AAAA,EACxB,QAAQ,UAAU;AAAA,EAClB,QAAQ,OAAO,eAAe,GAAG,eAAe,CAAC;AAAA,EACjD,QAAQ,OAAO,eAAe,IAAI,iBAAiB,eAAe,CAAC;AAAA,EACnE,QAAQ,OAAO;AAAA,EACf,QAAQ,QAAQ;AAAA,EAChB,IAAI,CAAC,UAAU;AAAA,IACX;AAAA,EACJ;AAAA,EACA,MAAM,QAAQ,WAAW,SAAS;AAAA,EAClC,QAAQ,KAAK;AAAA,EACb,QAAQ,YAAY;AAAA,EACpB,QAAQ,eAAe;AAAA,EACvB,QAAQ,YAAY;AAAA,EACpB,QAAQ,OAAO,GAAG,WAAW,WAAW;AAAA,EACxC,MAAM,gBAAgB,YAAY,KAAK,IAAI,YAAY,UAAU,QAAQ,CAAC;AAAA,EAC1E,QAAQ,SACJ,GAAG,iBACH,eAAe,IAAI,kBAAkB,WAAW,YAChD,eAAe,CACnB;AAAA,EACA,QAAQ,QAAQ;AAAA;AAGpB,SAAS,aAAa,CAClB,SACA,iBACA,gBACA,iBACA,WACA,YAKF;AAAA,EACE,MAAM,WAAW,eAAe;AAAA,EAChC,QAAQ,KAAK;AAAA,EACb,QAAQ,YAAY,IAAI;AAAA,EACxB,QAAQ,UAAU;AAAA,EAClB,QAAQ,OAAO,eAAe,GAAG,eAAe,CAAC;AAAA,EACjD,QAAQ,OAAO,eAAe,GAAG,eAAe,IAAI,eAAe;AAAA,EACnE,QAAQ,OAAO;AAAA,EACf,QAAQ,QAAQ;AAAA,EAChB,IAAI,CAAC,UAAU;AAAA,IACX;AAAA,EACJ;AAAA,EACA,MAAM,QAAQ,WAAW,SAAS;AAAA,EAClC,QAAQ,KAAK;AAAA,EACb,QAAQ,YAAY;AAAA,EACpB,QAAQ,eAAe;AAAA,EACvB,QAAQ,YAAY;AAAA,EACpB,QAAQ,OAAO,GAAG,WAAW,WAAW;AAAA,EACxC,MAAM,gBAAgB,YAAY,KAAK,IAAI,YAAY,UAAU,QAAQ,CAAC;AAAA,EAC1E,QAAQ,SACJ,GAAG,iBACH,eAAe,GACf,eAAe,IAAI,kBAAkB,WAAW,UACpD;AAAA,EACA,QAAQ,QAAQ;AAAA;AA+Cb,SAAS,mBAAmB,CAC/B,UACA,UACA,kBACF;AAAA,EACE,MAAM,eAAe,KAAK,IAAI,UAAU,QAAQ;AAAA,EAChD,MAAM,eAAe,KAAK,IAAI,UAAU,QAAQ;AAAA,EAEhD,MAAM,QAAQ,eAAe;AAAA,EAC7B,MAAM,uBAAuB,mBACvB,mBACA,0BAA0B,KAAK;AAAA,EAErC,MAAM,6BAA6B,KAAK,IAAI,GAAG,oBAAoB;AAAA,EACnE,MAAM,wBAAwB,KAAK,IAC/B,IACA,6BAA6B,oBACjC;AAAA,EAEA,MAAM,yBACF,WAAW,IACL,KAAK,MACA,eAAe,wBACZ,KAAK,IAAI,IAAI,0BAA0B,CAC/C,IACA,KAAK,KACA,eAAe,wBACZ,KAAK,IAAI,IAAI,0BAA0B,CAC/C;AAAA,EACV,MAAM,oBACF,yBAAyB,KAAK,IAAI,IAAI,0BAA0B;AAAA,EACpE,MAAM,yBACF,WAAW,IACL,KAAK,MACA,eAAe,wBACZ,KAAK,IAAI,IAAI,0BAA0B,CAC/C,IACA,KAAK,KACA,eAAe,wBACZ,KAAK,IAAI,IAAI,0BAA0B,CAC/C;AAAA,EACV,MAAM,oBACF,yBAAyB,KAAK,IAAI,IAAI,0BAA0B;AAAA,EACpE,MAAM,gBAAgB,KAAK,IAAI,IAAI,0BAA0B;AAAA,EAG7D,MAAM,0BAA0B,6BAA6B;AAAA,EAC7D,MAAM,uBACF,WAAW,IACL,KAAK,MACA,eAAe,wBACZ,KAAK,IAAI,IAAI,uBAAuB,CAC5C,IACA,KAAK,KACA,eAAe,wBACZ,KAAK,IAAI,IAAI,uBAAuB,CAC5C;AAAA,EACV,MAAM,kBACF,uBAAuB,KAAK,IAAI,IAAI,uBAAuB;AAAA,EAC/D,MAAM,uBACF,WAAW,IACL,KAAK,MACA,eAAe,wBACZ,KAAK,IAAI,IAAI,uBAAuB,CAC5C,IACA,KAAK,KACA,eAAe,wBACZ,KAAK,IAAI,IAAI,uBAAuB,CAC5C;AAAA,EACV,MAAM,kBACF,uBAAuB,KAAK,IAAI,IAAI,uBAAuB;AAAA,EAC/D,MAAM,cAAc,KAAK,IAAI,IAAI,uBAAuB;AAAA,EAExD,MAAM,eAAe,gBAAgB;AAAA,EACrC,MAAM,wBACF,WAAW,IACL,KAAK,MAAO,eAAe,wBAAyB,YAAY,IAChE,KAAK,KAAM,eAAe,wBAAyB,YAAY;AAAA,EACzE,MAAM,mBAAmB,wBAAwB;AAAA,EACjD,MAAM,wBACF,WAAW,IACL,KAAK,MAAO,eAAe,wBAAyB,YAAY,IAChE,KAAK,KAAM,eAAe,wBAAyB,YAAY;AAAA,EACzE,MAAM,mBAAmB,wBAAwB;AAAA,EAEjD,OAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,uBAAuB,IAAI;AAAA,IAC3B;AAAA,EACJ;AAAA;;AC1fG,SAAS,4BAA4B,CACxC,YACA,aACA,cACA,gBACkB;AAAA,EAClB,MAAM,QAAQ,mBAAmB,UAAU;AAAA,EAC3C,MAAM,SAAS,oBAAoB,UAAU;AAAA,EAC7C,IAAI,SAAS,aAAa,UAAU,WAAW;AAAA,IAC3C;AAAA,EACJ;AAAA,EACA,MAAM,uBAAuB,KAAK,IAAI,QAAQ,KAAK,IAAI,cAAc,CAAC;AAAA,EACtE,MAAM,wBAAwB,KAAK,IAAI,SAAS,KAAK,IAAI,cAAc,CAAC;AAAA,EACxE,MAAM,wBAAwB,KAAK,IAAI,QAAQ,KAAK,IAAI,cAAc,CAAC;AAAA,EACvE,MAAM,yBAAyB,KAAK,IAAI,SAAS,KAAK,IAAI,cAAc,CAAC;AAAA,EACzE,IAAI,yBAAyB,cAAc;AAAA,EAC3C,IAAI,0BAA0B,cAAc;AAAA,EAC5C,IAAI,0BAA0B,eAAe;AAAA,EAC7C,IAAI,2BAA2B,eAAe;AAAA,EAC9C,IAAI,0BAA0B,UAAU;AAAA,IACpC,yBAAyB;AAAA,EAC7B;AAAA,EACA,IAAI,2BAA2B,UAAU;AAAA,IACrC,0BAA0B;AAAA,EAC9B;AAAA,EACA,IAAI,2BAA2B,UAAU;AAAA,IACrC,0BAA0B;AAAA,EAC9B;AAAA,EACA,IAAI,4BAA4B,UAAU;AAAA,IACtC,2BAA2B;AAAA,EAC/B;AAAA,EAEA,MAAM,qBAAqB,eAAe;AAAA,EAC1C,MAAM,oBAAoB,cAAc;AAAA,EACxC,MAAM,eAAe,KAAK,IACtB,oBACA,mBACA,wBACA,yBACA,yBACA,wBACJ;AAAA,EACA,OAAO;AAAA;AA0CJ,SAAS,+BAA+B,CAC3C,qBACA,oBAC4B;AAAA,EAC5B,IAAI,sBAAsB,WAAW;AAAA,IACjC,OAAO;AAAA,EACX;AAAA,EACA,IAAI,uBAAuB,WAAW;AAAA,IAClC,OAAO;AAAA,EACX;AAAA,EACA,IAAI,sBAAsB,UAAU;AAAA,IAChC,OAAO;AAAA,EACX;AAAA,EACA,IACI,wBAAwB,cACvB,oBAAoB,OAAO,aACxB,qBAAqB,oBAAoB,MAC/C;AAAA,IACE,OAAO;AAAA,EACX;AAAA,EACA,OAAO;AAAA;AAsCJ,SAAS,uBAAuB,CACnC,YACA,aACA,cACA,gBACkB;AAAA,EAClB,MAAM,QAAQ,mBAAmB,UAAU;AAAA,EAC3C,IAAI,SAAS,WAAW;AAAA,IACpB;AAAA,EACJ;AAAA,EACA,MAAM,uBAAuB,KAAK,IAAI,QAAQ,KAAK,IAAI,cAAc,CAAC;AAAA,EACtE,MAAM,wBAAwB,KAAK,IAAI,QAAQ,KAAK,IAAI,cAAc,CAAC;AAAA,EACvE,MAAM,yBAAyB,cAAc;AAAA,EAC7C,MAAM,0BAA0B,eAAe;AAAA,EAC/C,IAAI,0BAA0B,UAAU;AAAA,IACpC,OAAO;AAAA,EACX;AAAA,EACA,MAAM,eAAe,KAAK,IACtB,cAAc,sBACd,eAAe,qBACnB;AAAA,EACA,OAAO;AAAA;AAsCJ,SAAS,wBAAwB,CACpC,YACA,aACA,cACA,gBACkB;AAAA,EAClB,MAAM,SAAS,oBAAoB,UAAU;AAAA,EAC7C,IAAI,UAAU,WAAW;AAAA,IACrB;AAAA,EACJ;AAAA,EACA,MAAM,wBAAwB,KAAK,IAAI,SAAS,KAAK,IAAI,cAAc,CAAC;AAAA,EACxE,MAAM,yBAAyB,KAAK,IAAI,SAAS,KAAK,IAAI,cAAc,CAAC;AAAA,EACzE,MAAM,0BAA0B,cAAc;AAAA,EAC9C,MAAM,2BAA2B,eAAe;AAAA,EAChD,IAAI,4BAA4B,UAAU;AAAA,IACtC,OAAO;AAAA,EACX;AAAA,EACA,MAAM,eAAe,KAAK,IACtB,yBACA,wBACJ;AAAA,EACA,OAAO;AAAA;;ACtRX,qBAAS;AAAA;AAoDF,MAAM,oBAAoB;AAAA,EACrB;AAAA,EACA,SAA4B;AAAA,EAC5B,SAAiB;AAAA,EAEjB,uBAAkD;AAAA,EAClD,qBAA6C;AAAA,EAOrD,WAAW,CAAC,WAAsB;AAAA,IAC9B,KAAK,aAAa;AAAA;AAAA,EAOtB,SAAS,GAAG;AAAA,IACR,KAAK,SAAS;AAAA;AAAA,EAOlB,QAAQ,GAAG;AAAA,IACP,KAAK,SAAS;AAAA;AAAA,EAoBlB,YAAY,CACR,qBACA,mBACI;AAAA,IACJ,KAAK,uBAAuB;AAAA,IAC5B,KAAK,qBAAqB;AAAA;AAAA,EA8B9B,MAAM,CAAC,WAAmB;AAAA,IACtB,IAAI,KAAK,WAAW,QAAQ;AAAA,MACxB;AAAA,IACJ;AAAA,IAEA,MAAM,YAAY;AAAA,MACd,GACI,KAAK,yBAAyB,SACxB,KACA,KAAK,yBAAyB,UAC5B,IACA;AAAA,MACZ,GACI,KAAK,uBAAuB,OACtB,KACA,KAAK,uBAAuB,SAC1B,IACA;AAAA,IAChB;AAAA,IAEA,MAAM,WAAW,KAAK,SAAS;AAAA,IAE/B,MAAM,cAAc,WAAS,uBACzB,WACA,QACJ;AAAA,IAEA,KAAK,WAAW,eAAe,WAAW;AAAA;AAElD;;AC/JO,IAAM,wBAAwB,CACjC,gBAC2C;AAAA,EAC3C,IAAI,YAAY,YAAY,GAAG;AAAA,IAC3B,OAAO,EAAE,YAAY,GAAG,UAAU,EAAE;AAAA,EACxC;AAAA,EAEA,MAAM,aAAa,YAAY;AAAA,EAC/B,IAAI,cAAc,WAAW;AAAA,IACzB,OAAO,EAAE,YAAY,GAAG,UAAU,EAAE;AAAA,EACxC;AAAA,EACA,MAAM,QAAQ,mBAAmB,UAAU;AAAA,EAC3C,MAAM,SAAS,oBAAoB,UAAU;AAAA,EAE7C,IAAI,cAAc;AAAA,EAClB,IAAI,eAAe;AAAA,EACnB,IAAI,SAAS,MAAW;AAAA,IACpB,cAAc,YAAY,gBAAgB,YAAY,YAAY;AAAA,EACtE;AAAA,EACA,IAAI,UAAU,MAAW;AAAA,IACrB,eACI,YAAY,iBAAiB,YAAY,YAAY;AAAA,EAC7D;AAAA,EACA,OAAO,EAAE,YAAY,aAAa,UAAU,aAAa;AAAA;AAQtD,IAAM,uBAAuB,CAChC,gBACmE;AAAA,EACnE,IAAI,YAAY,YAAY,GAAG;AAAA,IAC3B,OAAO,EAAE,YAAY,WAAW,UAAU,UAAU;AAAA,EACxD;AAAA,EAEA,IAAI,CAAC,uBAAuB,YAAY,UAAU,GAAG;AAAA,IACjD,OAAO,EAAE,YAAY,WAAW,UAAU,UAAU;AAAA,EACxD;AAAA,EAEA,IAAI,qBAAqB;AAAA,EACzB,IAAI,mBAAmB;AAAA,EAGvB,MAAM,UAAU,YAAY,+BAA+B;AAAA,IACvD,GAAG,CAAC,YAAY,gBAAgB;AAAA,IAChC,GAAG,CAAC,YAAY,iBAAiB;AAAA,EACrC,CAAC;AAAA,EACD,MAAM,cAAc,YAAY,+BAA+B;AAAA,IAC3D,GAAG,YAAY,gBAAgB;AAAA,IAC/B,GAAG,YAAY,iBAAiB;AAAA,EACpC,CAAC;AAAA,EAED,MAAM,0BAA0B,KAAK,IAAI,QAAQ,GAAG,YAAY,CAAC;AAAA,EACjE,MAAM,wBAAwB,KAAK,IAAI,QAAQ,GAAG,YAAY,CAAC;AAAA,EAE/D,sBACK,0BAA0B,YAAY,WAAW,IAAI,MACrD,YAAY,WAAW,IAAI,IAAI,YAAY,WAAW,IAAI;AAAA,EAC/D,oBACK,wBAAwB,YAAY,WAAW,IAAI,MACnD,YAAY,WAAW,IAAI,IAAI,YAAY,WAAW,IAAI;AAAA,EAE/D,OAAO,EAAE,YAAY,oBAAoB,UAAU,iBAAiB;AAAA;AAGjE,IAAM,eAAe,CACxB,WAMC;AAAA,EACD,MAAM,YAAW,qBAAqB,MAAM;AAAA,EAC5C,MAAM,YAAY,sBAAsB,MAAM;AAAA,EAE9C,MAAM,MAAM;AAAA,IACR,kBAAkB,UAAU,aAAa,OAAO;AAAA,IAChD,gBAAgB,UAAU,WAAW,OAAO;AAAA,IAC5C,YACI,UAAS,cAAc,OACjB,UAAS,aAAa,OAAO,gBAC7B;AAAA,IACV,UACI,UAAS,YAAY,OACf,UAAS,WAAW,OAAO,iBAC3B;AAAA,EACd;AAAA,EAEA,OAAO;AAAA;;AT3EJ,IAAK;AAAA,CAAL,CAAK,iBAAL;AAAA,EACH,uBAAO;AAAA,EACP,0BAAU;AAAA,EACV,2BAAW;AAAA,GAHH;AAAA;AAyEL,MAAM,YAA8B;AAAA,EACvC,QAAgB;AAAA,EAChB,SAAiB;AAAA,EACjB,WAAkB,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAC/B,YAA0C;AAAA,EAC1C,aAAiE;AAAA,IAC7D,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAC3B;AAAA,EACA,WAAoB;AAAA,EACpB,WAAuB;AAC3B;AAAA;AAEO,MAAM,uBAAyC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,qBAAyC;AAAA,IACjD,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,YAAY,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,IAC9B,KAAK,uBAAuB;AAAA;AAAA,MAG5B,UAAU,GAAuD;AAAA,IACjE,OAAO;AAAA,MACH,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,IACnB;AAAA;AAAA,EAGJ,QAAQ,GAAS;AAAA,MAEb,KAAK,CAAC,OAAe;AAAA,IACrB,KAAK,SAAS;AAAA;AAAA,MAGd,MAAM,CAAC,QAAgB;AAAA,IACvB,KAAK,UAAU;AAAA;AAAA,MAGf,QAAQ,CAAC,WAAiB;AAAA,IAC1B,KAAK,YAAY;AAAA;AAAA,MAGjB,KAAK,GAAW;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAGZ,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAGZ,QAAQ,GAAU;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,EAGhB,SAAS,CAAC,OAA8C;AAAA,IACpD,KAAK,qBAAqB,EAAE,MAAM,aAAa,MAAM,CAAC;AAAA;AAAA,MAGtD,QAAQ,GAAY;AAAA,IACpB,OAAO;AAAA;AAEf;AAAA;AAaO,MAAM,YAA8D;AAAA,EAC/D,SAAiB;AAAA,EACjB,UAAkB;AAAA,EAClB,YAAmB,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,QAA4B;AAAA,IACpC,KAAK,gCAAgC,IAAI;AAAA,IAIzC,IAAI,QAAQ;AAAA,MACR,MAAM,eAAe,OAAO,sBAAsB;AAAA,MAClD,MAAM,WAAW,YACb,cACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,MACA,KAAK,SAAS,SAAS;AAAA,MACvB,KAAK,UAAU,SAAS;AAAA,MACxB,KAAK,YAAY,EAAE,GAAG,SAAS,MAAM,GAAG,SAAS,IAAI;AAAA,MACrD,KAAK,UAAU;AAAA,IACnB;AAAA,IAEA,KAAK,oCACD,IAAI,iCAAiC,MAAM;AAAA,IAC/C,KAAK,kCAAkC,iBAAiB,UAAQ;AAAA,MAE5D,IAAI,KAAK,WAAW,WAAW;AAAA,QAC3B,QAAQ,MACJ,mEACJ;AAAA,QACA;AAAA,MACJ;AAAA,MAEA,KAAK,SAAS,KAAK;AAAA,MACnB,KAAK,UAAU,KAAK;AAAA,MACpB,KAAK,YAAY,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI;AAAA,MAE7C,KAAK,8BAA8B,OAAO;AAAA,QACtC,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK;AAAA,MACnB,CAAC;AAAA,KACJ;AAAA;AAAA,EAGL,SAAS,CACL,UACA,SACU;AAAA,IACV,OAAO,KAAK,8BAA8B,UAAU,UAAU,OAAO;AAAA;AAAA,EAGzE,MAAM,IAAI,MAAgC;AAAA,IACtC,KAAK,8BAA8B,OAAO,GAAG,IAAI;AAAA;AAAA,MAGjD,QAAQ,GAAY;AAAA,IACpB,OAAO,KAAK,YAAY;AAAA;AAAA,MAGxB,UAAU,GAAuD;AAAA,IACjE,OAAO;AAAA,MACH,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,IACnB;AAAA;AAAA,MAGA,KAAK,GAAW;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAOhB,QAAQ,CAAC,OAAe;AAAA,IACpB,IAAI,KAAK,SAAS;AAAA,MACd,KAAK,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MACpC,KAAK,QAAQ,MAAM,QAAQ,QAAQ;AAAA,IACvC;AAAA;AAAA,EAGJ,cAAc,CAAC,OAAe;AAAA,IAC1B,IACI,KAAK,WACL,KAAK,QAAQ,MAAM,UAAU,MAC7B,KAAK,QAAQ,MAAM,WAAW,IAChC;AAAA,MACE,MAAM,cAAc,KAAK,SAAS,KAAK;AAAA,MACvC,KAAK,QAAQ,MAAM,cAAc,YAAY,SAAS;AAAA,IAC1D;AAAA,IACA,IAAI,KAAK,WAAW,KAAK,QAAQ,MAAM,UAAU,IAAI;AAAA,MACjD,KAAK,QAAQ,QAAQ,QAAQ,OAAO;AAAA,IACxC,EAAO;AAAA,MACH,KAAK,SAAS,KAAK;AAAA;AAAA;AAAA,EAQ3B,SAAS,CAAC,QAAgB;AAAA,IACtB,IAAI,KAAK,SAAS;AAAA,MACd,KAAK,QAAQ,SAAS,SAAS,OAAO;AAAA,MACtC,KAAK,QAAQ,MAAM,SAAS,SAAS;AAAA,IACzC;AAAA;AAAA,EAGJ,eAAe,CAAC,QAAgB;AAAA,IAC5B,IACI,KAAK,WACL,KAAK,QAAQ,MAAM,UAAU,MAC7B,KAAK,QAAQ,MAAM,WAAW,IAChC;AAAA,MACE,MAAM,cAAc,KAAK,SAAS,KAAK;AAAA,MACvC,KAAK,QAAQ,MAAM,cAAc,YAAY,SAAS;AAAA,IAC1D;AAAA,IACA,IAAI,KAAK,WAAW,KAAK,QAAQ,MAAM,WAAW,IAAI;AAAA,MAClD,KAAK,QAAQ,SAAS,SAAS,OAAO;AAAA,IAC1C,EAAO;AAAA,MACH,KAAK,UAAU,MAAM;AAAA;AAAA;AAAA,MAIzB,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAGZ,QAAQ,GAAU;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,EAGhB,SAAS,CAAC,OAA8C;AAAA,IACpD,IAAI,KAAK,SAAS;AAAA,MACd,KAAK,QAAQ,MAAM,SAAS;AAAA,IAChC;AAAA;AAAA,EAGJ,QAAQ,GAAS;AAAA,IACb,KAAK,kCAAkC,QAAQ;AAAA,IAC/C,KAAK,UAAU;AAAA,IACf,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,YAAY,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA;AAAA,EAGlC,MAAM,CAAC,QAA2B;AAAA,IAC9B,KAAK,UAAU;AAAA,IACf,KAAK,kCAAkC,OAAO,MAAM;AAAA;AAE5D;AAAA;AAEO,MAAM,SAA2D;AAAA,EAC5D,SAAiB;AAAA,EACjB,UAAkB;AAAA,EAClB,YAAmB,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,KAAqB;AAAA,IAC7B,KAAK,gCAAgC,IAAI;AAAA,IAIzC,IAAI,KAAK;AAAA,MACL,MAAM,eAAe,IAAI,sBAAsB;AAAA,MAC/C,MAAM,WAAW,YACb,cACA,OAAO,iBAAiB,GAAG,CAC/B;AAAA,MACA,KAAK,SAAS,SAAS;AAAA,MACvB,KAAK,UAAU,SAAS;AAAA,MACxB,KAAK,YAAY,EAAE,GAAG,SAAS,MAAM,GAAG,SAAS,IAAI;AAAA,MACrD,KAAK,OAAO;AAAA,IAChB;AAAA,IAEA,KAAK,iCAAiC,IAAI,8BACtC,GACJ;AAAA,IACA,KAAK,+BAA+B,iBAAiB,UAAQ;AAAA,MAEzD,IAAI,KAAK,QAAQ,WAAW;AAAA,QACxB,QAAQ,MACJ,mEACJ;AAAA,QACA;AAAA,MACJ;AAAA,MAEA,KAAK,SAAS,KAAK;AAAA,MACnB,KAAK,UAAU,KAAK;AAAA,MACpB,KAAK,YAAY,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI;AAAA,MAE7C,KAAK,8BAA8B,OAAO;AAAA,QACtC,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,UAAU,KAAK;AAAA,MACnB,CAAC;AAAA,KACJ;AAAA;AAAA,EAGL,SAAS,CACL,UACA,SACU;AAAA,IACV,OAAO,KAAK,8BAA8B,UAAU,UAAU,OAAO;AAAA;AAAA,EAGzE,MAAM,IAAI,MAAgC;AAAA,IACtC,KAAK,8BAA8B,OAAO,GAAG,IAAI;AAAA;AAAA,MAGjD,QAAQ,GAAY;AAAA,IACpB,OAAO,KAAK,SAAS;AAAA;AAAA,MAGrB,UAAU,GAAuD;AAAA,IACjE,OAAO;AAAA,MACH,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,IACnB;AAAA;AAAA,MAGA,KAAK,GAAW;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAOhB,QAAQ,CAAC,OAAe;AAAA,IACpB,IAAI,KAAK,MAAM;AAAA,MACX,KAAK,KAAK,MAAM,QAAQ,QAAQ;AAAA,IACpC;AAAA;AAAA,EAOJ,SAAS,CAAC,QAAgB;AAAA,IACtB,IAAI,KAAK,MAAM;AAAA,MACX,KAAK,KAAK,MAAM,SAAS,SAAS;AAAA,IACtC;AAAA;AAAA,MAGA,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAGZ,QAAQ,GAAU;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,EAGhB,SAAS,CAAC,OAA8C;AAAA,IACpD,IAAI,KAAK,MAAM;AAAA,MACX,KAAK,KAAK,MAAM,SAAS;AAAA,IAC7B;AAAA;AAAA,EAGJ,QAAQ,GAAS;AAAA,IACb,KAAK,+BAA+B,QAAQ;AAAA,IAC5C,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,YAAY,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA;AAAA,EAGlC,MAAM,CAAC,KAAoB;AAAA,IACvB,KAAK,+BAA+B,OAAO,GAAG;AAAA,IAC9C,KAAK,OAAO;AAAA,IACZ,MAAM,eAAe,IAAI,sBAAsB;AAAA,IAC/C,MAAM,WAAW,YACb,cACA,OAAO,iBAAiB,GAAG,CAC/B;AAAA,IACA,KAAK,KAAK,MAAM,QAAQ,SAAS,QAAQ;AAAA,IACzC,KAAK,KAAK,MAAM,SAAS,SAAS,SAAS;AAAA,IAC3C,KAAK,SAAS,SAAS;AAAA,IACvB,KAAK,UAAU,SAAS;AAAA,IACxB,KAAK,YAAY,EAAE,GAAG,SAAS,MAAM,GAAG,SAAS,IAAI;AAAA,IACrD,KAAK,8BAA8B,OAAO;AAAA,MACtC,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,IACnB,CAAC;AAAA;AAET;AAAA;AAQO,MAAM,kBAAoC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CACP,QACA,WACA,yBACF;AAAA,IACE,MAAM,eAAe,OAAO,sBAAsB;AAAA,IAClD,KAAK,UAAU;AAAA,IACf,KAAK,aAAa;AAAA,IAClB,MAAM,WAAW,YACb,cACA,OAAO,iBAAiB,MAAM,CAClC;AAAA,IACA,KAAK,SAAS,SAAS;AAAA,IACvB,KAAK,UAAU,SAAS;AAAA,IACxB,KAAK,YAAY,EAAE,GAAG,SAAS,MAAM,GAAG,SAAS,IAAI;AAAA,IACrD,KAAK,WAAW,YAAY;AAAA,MACxB,MAAM;AAAA,MACN,OAAO,aAAa;AAAA,MACpB,QAAQ,aAAa;AAAA,MACrB,UAAU,EAAE,GAAG,aAAa,MAAM,GAAG,aAAa,IAAI;AAAA,IAC1D,CAAC;AAAA,IACD,wBAAwB,iBAAiB,UAAQ;AAAA,MAC7C,KAAK,SAAS,KAAK;AAAA,MACnB,KAAK,UAAU,KAAK;AAAA,MACpB,KAAK,YAAY,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI;AAAA,MAC7C,KAAK,WAAW,YAAY;AAAA,QACxB,MAAM;AAAA,QACN,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,UAAU,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI;AAAA,MAC1C,CAAC;AAAA,KACJ;AAAA,IACD,KAAK,2BAA2B;AAAA;AAAA,MAGhC,KAAK,GAAW;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,MAGZ,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAGhB,QAAQ,GAAS;AAAA,IACb,KAAK,yBAAyB,QAAQ;AAAA;AAAA,MAGtC,QAAQ,GAAU;AAAA,IAClB,OAAO,KAAK;AAAA;AAAA,MAGZ,UAAU,GAAuD;AAAA,IACjE,OAAO;AAAA,MACH,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,UAAU,KAAK;AAAA,IACnB;AAAA;AAAA,MAGA,QAAQ,GAAY;AAAA,IACpB,OAAO;AAAA;AAAA,EAGX,SAAS,CAAC,OAA8C;AAAA,IACpD,KAAK,QAAQ,MAAM,SAAS;AAAA;AAEpC;AAAA;AAiEO,MAAM,qBAAgD;AAAA,EAClD,wBAAiC;AAAA,EACjC,SAAiB,IAAI;AAAA,EACrB,wBAA+B,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EAEnD,WAAW,GAAG;AAAA,EAEd,8BAA0C;AAAA,EAC1C,+BAA2C;AAAA,EAC3C,oBAA+C;AAAA,EAE/C,wBAAwB,CAAC,WAAuB;AAAA,EAEhD,OAAO,GAAS;AAAA,EAEhB,KAAK,GAAS;AAAA,MAEV,qBAAqB,GAAW;AAAA,IAChC,OAAO;AAAA;AAAA,EAGX,6BAA6B,GAAS;AAAA,EAEtC,wBAAwB,GAAS;AAAA,EAEjC,OAAO,CAAC,MAAwC;AAAA,MAE5C,IAAI,GAA+B;AAAA,IACnC,OAAO;AAAA;AAAA,EAGX,mBAAmB,GAAS;AAChC;AAAA;AAsCO,MAAM,uBAAkD;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAqB;AAAA,EAE7B,WAAW,CAAC,gBAAwB;AAAA,IAChC,KAAK,yBAAyB;AAAA,IAC9B,KAAK,kBAAkB;AAAA,IACvB,KAAK,yBAAyB,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,IAC3C,KAAK,yBAAyB;AAAA,IAC9B,KAAK,QAAQ;AAAA;AAAA,MAGb,IAAI,GAA+B;AAAA,IACnC,OAAO,KAAK;AAAA;AAAA,EAGhB,OAAO,CAAC,MAAwC;AAAA,IAC5C,KAAK,YAAY;AAAA,IACjB,KAAK,QAAQ;AAAA;AAAA,EAGjB,wBAAwB,GAAS;AAAA,IAC7B,KAAK,YAAY;AAAA,IACjB,KAAK,yBAAyB;AAAA,IAC9B,KAAK,QAAQ;AAAA;AAAA,MAGb,qBAAqB,GAAW;AAAA,IAChC,OAAO,KAAK;AAAA;AAAA,EAGhB,6BAA6B,GAAS;AAAA,IAClC,IAAI,CAAC,KAAK,WAAW;AAAA,MACjB;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,IACL,IAAI,KAAK,yBAAyB,IAAI;AAAA,MAClC,KAAK,yBAAyB;AAAA,IAElC;AAAA;AAAA,EAGJ,wBAAwB,GAAS;AAAA,IAC7B,IAAI,CAAC,KAAK,WAAW;AAAA,MACjB;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,IACL,IAAI,KAAK,yBAAyB,GAAG;AAAA,MACjC,KAAK,yBAAyB;AAAA,IAElC;AAAA;AAAA,MAGA,qBAAqB,GAAY;AAAA,IACjC,OAAO,KAAK;AAAA;AAAA,MAGZ,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,MAGZ,qBAAqB,GAAU;AAAA,IAC/B,OAAO,KAAK;AAAA;AAAA,MAGZ,qBAAqB,CAAC,OAAgB;AAAA,IACtC,KAAK,yBAAyB;AAAA;AAAA,EAGlC,mBAAmB,GAAS;AAAA,IACxB,KAAK,yBAAyB,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA;AAAA,EAG/C,wBAAwB,CAAC,WAAuB;AAAA,IAC5C,KAAK,yBAAyB;AAAA;AAAA,EAGlC,OAAO,GAAS;AAAA,EAEhB,KAAK,GAAS;AAClB;;AUnqBO,MAAM,kBAA0C;AAAA,EAC3C,kBAA4C,IAAI;AAAA,EAIhD;AAAA,EACA;AAAA,EAER,WAAW,CAAC,QAAgB;AAAA,IACxB,KAAK,UAAU;AAAA,IACf,KAAK,yBAAyB;AAAA;AAAA,EAGlC,cAAc,CAAC,QAA6B;AAAA,IACxC,OAAO,QAAQ,WAAS;AAAA,MACpB,KAAK,gBAAgB,IAAI,MAAM,OAAO,KAAK,MAAM,CAAC;AAAA,KACrD;AAAA;AAAA,EAGL,iBAAiB,CAAC,aAA6B;AAAA,IAC3C,YAAY,QAAQ,WAAS;AAAA,MACzB,IAAI,KAAK,gBAAgB,IAAI,KAAK,GAAG;AAAA,QACjC,KAAK,gBAAgB,OAAO,KAAK;AAAA,MACrC;AAAA,KACH;AAAA;AAAA,EAGL,0BAA0B,GAAW;AAAA,IACjC,OAAO,KAAK,gBAAgB;AAAA;AAAA,EAGhC,8BAA8B,CAAC,QAAiC;AAAA,IAC5D,MAAM,MAAqB,CAAC;AAAA,IAC5B,OAAO,QAAQ,WAAS;AAAA,MACpB,IAAI,KAAK,gBAAgB,IAAI,KAAK,GAAG;AAAA,QACjC,MAAM,QAAQ,KAAK,gBAAgB,IAAI,KAAK;AAAA,QAC5C,IAAI,OAAO;AAAA,UACP,IAAI,KAAK,KAAK;AAAA,QAClB;AAAA,MACJ;AAAA,KACH;AAAA,IACD,OAAO;AAAA;AAAA,EAGX,iBAAiB,CAAC,aAAkC;AAAA,IAChD,YAAY,QAAQ,WAAS;AAAA,MACzB,IAAI,KAAK,gBAAgB,IAAI,MAAM,KAAK,GAAG;AAAA,QACvC,KAAK,gBAAgB,IAAI,MAAM,OAAO,KAAK,MAAM,CAAC;AAAA,MACtD;AAAA,KACH;AAAA;AAAA,MAGD,qBAAqB,GAAY;AAAA,IACjC,OAAO,KAAK;AAAA;AAAA,MAGZ,qBAAqB,CAAC,OAAgB;AAAA,IACtC,KAAK,yBAAyB;AAAA;AAAA,MAG9B,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK;AAAA;AAAA,EAGhB,OAAO,GAAS;AAAA,EAEhB,KAAK,GAAS;AAClB;;ACrKA;AAAA,mBAII;AAAA,0BACA;AAAA;AAEJ,qBAAS;AAAA;AAqGF,MAAM,kBAAkB,eAK7B;AAAA,EACY,kBAKN;AAAA,IACA,YAAY;AAAA,MACR,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEU,UAAmD;AAAA,IACzD,mBAAmB,CAAC,YAA0B;AAAA,MAC1C,OAAO,QAAQ,2BAA2B,MAAM;AAAA,OACjD,KAAK,IAAI;AAAA,EAChB;AAAA,EAEU,eAON;AAAA,IACA,YAAY;AAAA,MACR;AAAA,QACI,OAAO;AAAA,QACP,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,MACN;AAAA,QACI,OAAO;AAAA,QACP,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,UAAU,CAAC,SAAuB,SAAkC;AAAA,IAChE,QAAQ,eAAe,QAAQ,MAAM;AAAA;AAAA,EAGzC,QAAQ,CAAC,SAAuB,SAAkC;AAAA,IAC9D,QAAQ,kBAAkB,QAAQ,OAAO,IAAI,OAAK,EAAE,KAAK,CAAC;AAAA;AAElE;AAAA;AAOO,MAAM,qBAAqB,eAKhC;AAAA,EACY,kBAKN;AAAA,IACA,YAAY;AAAA,MACR,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,WAAW;AAAA,MACP,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,UAAU,CAAC,SAAuB,SAAkC;AAAA,IAChE,QAAQ,eAAe,QAAQ,MAAM;AAAA;AAAA,EAGzC,QAAQ,CAAC,SAAuB,SAAkC;AAAA,IAC9D,QAAQ,kBAAkB,QAAQ,OAAO,IAAI,OAAK,EAAE,KAAK,CAAC;AAAA;AAAA,EAG9D,SAAS,CACL,SACA,SACgB;AAAA,IAChB,MAAM,SAAS,QAAQ,OAAO,IAAI,OAAK,EAAE,KAAK;AAAA,IAC9C,MAAM,mBAAmB,QAAQ,+BAA+B,MAAM;AAAA,IACtE,MAAM,mBAAmB,QAAQ;AAAA,IACjC,MAAM,6BAA6B,WAAS,sBACxC,iBAAiB,IACjB,iBAAiB,EACrB;AAAA,IACA,MAAM,6BAA6B,WAAS,sBACxC,iBAAiB,IACjB,iBAAiB,EACrB;AAAA,IACA,MAAM,WAAW,WAAS,oBACtB,iBAAiB,IACjB,iBAAiB,IACjB,GACJ;AAAA,IACA,MAAM,kBAAkB,WAAS,oBAC7B,iBAAiB,IACjB,iBAAiB,IACjB,GACJ;AAAA,IACA,MAAM,gBAAgB,WAAS,UAAU,UAAU,eAAe;AAAA,IAClE,MAAM,uBAAuB;AAAA,MACzB,GAAG,QAAQ,OAAO,SAAS,IAAI,QAAQ,OAAO,QAAQ;AAAA,MACtD,GAAG,QAAQ,OAAO,SAAS,IAAI,QAAQ,OAAO,SAAS;AAAA,IAC3D;AAAA,IACA,MAAM,qBAAqB,WAAS,UAChC,UACA,oBACJ;AAAA,IACA,IAAI,UACA,KAAK,IAAI,6BAA6B,0BAA0B,IAChE,WAAS,sBAAsB,UAAU,eAAe,IAClD,YACA;AAAA,IAEV,QAAQ,kBAAkB,gBAAgB;AAAA,IAC1C,QAAQ;AAAA,WACC;AAAA,QACD,OAAO;AAAA,UACH,MAAM;AAAA,UACN,QACK,6BACG,8BACJ;AAAA,UACJ,uBAAuB;AAAA,QAC3B;AAAA,WACC;AAAA,QACD,OAAO;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,QACX;AAAA;AAAA,QAEA,QAAQ,KAAK,yBAAyB,OAAO;AAAA,QAC7C,OAAO,EAAE,MAAM,OAAO;AAAA;AAAA;AAGtC;AAAA;AAOO,MAAM,wBAAwB,eAKnC;AAAA,EACY,kBAKN;AAAA,IACA,WAAW;AAAA,MACP,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,YAAY;AAAA,MACR,QAAQ,MAAM;AAAA,MACd,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,SAAS,CACL,SACA,SACgB;AAAA,IAChB,MAAM,SAAS,QAAQ,OAAO,IAAI,OAAK,EAAE,KAAK;AAAA,IAC9C,MAAM,mBAAmB,QAAQ,+BAA+B,MAAM;AAAA,IACtE,MAAM,mBAAmB,QAAQ;AAAA,IACjC,MAAM,6BAA6B,WAAS,sBACxC,iBAAiB,IACjB,iBAAiB,EACrB;AAAA,IACA,MAAM,6BAA6B,WAAS,sBACxC,iBAAiB,IACjB,iBAAiB,EACrB;AAAA,IACA,MAAM,WAAW,WAAS,oBACtB,iBAAiB,IACjB,iBAAiB,IACjB,GACJ;AAAA,IACA,MAAM,kBAAkB,WAAS,oBAC7B,iBAAiB,IACjB,iBAAiB,IACjB,GACJ;AAAA,IACA,MAAM,gBAAgB,WAAS,UAAU,UAAU,eAAe;AAAA,IAClE,MAAM,uBAAuB;AAAA,MACzB,GAAG,QAAQ,OAAO,SAAS,IAAI,QAAQ,OAAO,QAAQ;AAAA,MACtD,GAAG,QAAQ,OAAO,SAAS,IAAI,QAAQ,OAAO,SAAS;AAAA,IAC3D;AAAA,IACA,MAAM,qBAAqB,WAAS,UAChC,UACA,oBACJ;AAAA,IACA,IAAI,UACA,KAAK,IAAI,6BAA6B,0BAA0B,IAChE,WAAS,sBAAsB,UAAU,eAAe,IAClD,YACA;AAAA,IAEV,QAAQ,kBAAkB,gBAAgB;AAAA,IAC1C,QAAQ;AAAA,WACC;AAAA,QACD,IAAI,CAAC,QAAQ,uBAAuB;AAAA,UAChC,mBAAmB,IAAI,CAAC,mBAAmB;AAAA,QAC/C;AAAA,QACA,OAAO;AAAA,UACH,MAAM;AAAA,UACN,OACI,EACI,6BACA,8BACA;AAAA,UACR,uBAAuB;AAAA,QAC3B;AAAA,WACC;AAAA,QACD,IAAI,CAAC,QAAQ,uBAAuB;AAAA,UAChC,cAAc,IAAI,CAAC,cAAc;AAAA,QACrC;AAAA,QACA,OAAO;AAAA,UACH,MAAM;AAAA,UACN,OAAO;AAAA,QACX;AAAA;AAAA,QAEA,QAAQ,KAAK,yBAAyB,OAAO;AAAA,QAC7C,OAAO,EAAE,MAAM,OAAO;AAAA;AAAA;AAAA,EAIlC,QAAQ,CAAC,SAAuB,SAAkC;AAAA,IAC9D,QAAQ,kBAAkB,QAAQ,OAAO,IAAI,OAAK,EAAE,KAAK,CAAC;AAAA;AAElE;AA6DO,SAAS,4BAA4B,CACxC,SACsB;AAAA,EACtB,OAAO,IAAI,sBAMP;AAAA,IACI,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,IACb,aAAa,IAAI;AAAA,EACrB,GACA,QACA,OACJ;AAAA;;ACjcJ;AAAA,WAOI;AAAA,mBACA;AAAA,0BACA;AAAA;AA+NG,MAAM,qBAAqB,eAKhC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,UAA4C;AAAA,IAClD,QAAQ,MAAM;AAAA,EAClB;AAAA,EAEU,eAON,CAAC;AAAA,EAGL,YAAY,CACR,SACA,YACiB;AAAA,IACjB,MAAM,QAAQ,KAAK,QAAQ;AAAA,IAC3B,IAAI,CAAC,QAAQ,uBAAuB;AAAA,MAChC,MAAM,SAAS,CAAC,MAAM;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,MACN,OAAO,EAAE,GAAG,MAAM,QAAQ,GAAG,MAAM,OAAO;AAAA,IAC9C;AAAA;AAAA,EAGJ,aAAa,CACT,SACA,YACiB;AAAA,IACjB,IAAI,oBAAoB;AAAA,IACxB,IAAI,KAAK,IAAI,QAAQ,MAAM,IAAI,KAAK;AAAA,MAChC,oBAAoB;AAAA,IACxB;AAAA,IACA,MAAM,aAAa,QAAQ,SAAS;AAAA,IACpC,MAAM,iBAAiB,EAAE,GAAG,QAAQ,GAAG,GAAG,QAAQ,EAAE;AAAA,IACpD,MAAM,wBACF,6CACI,gBACA,QAAQ,QACR,EAAE,GAAG,QAAQ,OAAO,QAAQ,GAAG,GAAG,QAAQ,OAAO,SAAS,EAAE,GAC5D,CAAC,QAAQ,qBACb;AAAA,IACJ,OAAO;AAAA,MACH,MAAM;AAAA,MACN,OAAO,EAAE,aAAa;AAAA,MACtB;AAAA,IACJ;AAAA;AAAA,EAGJ,gBAAgB,CACZ,SACA,YACiB;AAAA,IACjB,IAAI,QAAQ,WAAW,KAAK,QAAQ,WAAW,GAAG;AAAA,MAC9C,QAAQ,yBAAyB;AAAA,IACrC,EAAO,SAAI,QAAQ,WAAW,KAAK,QAAQ,WAAW,GAAG;AAAA,MACrD,QAAQ,8BAA8B;AAAA,IAC1C;AAAA,IACA,IAAI,QAAQ,SAAS,OAAO;AAAA,MACxB,OAAO,KAAK,WAAW,SAAS,OAAO;AAAA,IAC3C,EAAO;AAAA,MACH,OAAO,KAAK,UAAU,SAAS,OAAO;AAAA;AAAA;AAAA,EAI9C,wBAAwB,CACpB,SACA,YACiB;AAAA,IACjB,OAAO,KAAK,WAAW,SAAS,OAAO;AAAA;AAAA,EAGjC,kBAKN;AAAA,IACI,cAAc;AAAA,MACV,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,MACJ,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,gBAAgB;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,SAAS;AAAA,MACL,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEJ,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,iCAA6B;AAAA;AAAA,EAGhD,mBAAmB,CACf,SACA,SACM;AAAA,IAEN,OAAO;AAAA;AAAA,EAGX,wBAAwB,CACpB,SACA,SACI;AAAA,IAEJ,QAAQ,yBAAyB;AAAA,IACjC,IAAI,QAAQ,SAAS,OAAO;AAAA,MACxB,QAAQ,QAAQ,KAAK;AAAA,IACzB;AAAA,IACA,QAAQ,yBAAyB,EAAE,GAAG,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA;AAEvE;AAAA;AAEO,MAAM,sBAAsB,eAKjC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGV,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,iCAA6B;AAAA;AAAA,EAIhD,UAAU,CAAC,SAAgC;AAAA,EAIjC,kBAKN;AAAA,IACI,QAAQ;AAAA,MACJ,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,EACJ;AACR;AAAA;AAOO,MAAM,mCAAmC,eAK9C;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACI,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,SAAS;AAAA,MACL,QAAQ,aAAW,QAAQ,oBAAoB;AAAA,MAC/C,oBAAoB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACb,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEJ,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,2BAA0B;AAAA;AAAA,EAG7C,sBAAsB,CAClB,SACA,SACI;AAAA,IACJ,QAAQ,yBAAyB,EAAE,GAAG,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA;AAEvE;AAAA;AAOO,MAAM,wBAAwB,eAKnC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACI,eAAe;AAAA,MACX,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,YAAY;AAAA,MACR,QAAQ,MAAM;AAAA,MACd,oBAAoB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACb,QAAQ,MAAM;AAAA,MACd,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEJ,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,mCAA8B;AAAA;AAAA,EAGjD,sBAAsB,CAClB,SACA,SACc;AAAA,IACd,MAAM,QAAQ;AAAA,MACV,GAAG,QAAQ,sBAAsB,IAAI,QAAQ;AAAA,MAC7C,GAAG,QAAQ,sBAAsB,IAAI,QAAQ;AAAA,IACjD;AAAA,IACA,IAAI,CAAC,QAAQ,uBAAuB;AAAA,MAChC,MAAM,IAAI,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,QAAQ,yBAAyB,EAAE,GAAG,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA,IAC/D,OAAO;AAAA,MACH,MAAM;AAAA,MACN;AAAA,IACJ;AAAA;AAER;AAAA;AAOO,MAAM,sCAAsC,eAKjD;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACI,iBAAiB;AAAA,MACb,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEJ,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,mCAA8B;AAAA;AAErD;AAAA;AAOO,MAAM,iBAAiB,eAK5B;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAAA,EAGA,kBAKN;AAAA,IACI,eAAe;AAAA,MACX,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,IACA,iBAAiB;AAAA,MACb,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IACA,YAAY;AAAA,MACR,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEJ,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,mCAA8B;AAAA;AAAA,EAGjD,UAAU,CAAC,SAAgC;AAAA,IACvC,QAAQ,OAAO,iCAA6B;AAAA;AAAA,EAGhD,sBAAsB,CAClB,SACA,SACc;AAAA,IACd,MAAM,QAAQ;AAAA,MACV,GAAG,QAAQ,sBAAsB,IAAI,QAAQ;AAAA,MAC7C,GAAG,QAAQ,sBAAsB,IAAI,QAAQ;AAAA,IACjD;AAAA,IACA,IAAI,CAAC,QAAQ,uBAAuB;AAAA,MAChC,MAAM,IAAI,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,QAAQ,yBAAyB,EAAE,GAAG,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA,IAC/D,OAAO;AAAA,MACH,MAAM;AAAA,MACN;AAAA,IACJ;AAAA;AAER;AAAA;AAOO,MAAM,+BAA+B,eAK1C;AAAA,EACY,kBAKN;AAAA,IACI,iBAAiB;AAAA,MACb,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACxB;AAAA,IACA,mBAAmB;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,EACJ;AAAA,EAEJ,wBAAwB,CACpB,SACA,SACc;AAAA,IACd,MAAM,QAAQ;AAAA,MACV,GAAG,QAAQ,sBAAsB,IAAI,QAAQ;AAAA,MAC7C,GAAG,QAAQ,sBAAsB,IAAI,QAAQ;AAAA,IACjD;AAAA,IACA,IAAI,CAAC,QAAQ,uBAAuB;AAAA,MAChC,MAAM,IAAI,CAAC,MAAM;AAAA,IACrB;AAAA,IACA,QAAQ,yBAAyB,EAAE,GAAG,QAAQ,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA,IAC/D,OAAO;AAAA,MACH,MAAM;AAAA,MACN;AAAA,IACJ;AAAA;AAAA,EAGJ,SAAS,CAAC,SAAgC;AAAA,IACtC,QAAQ,OAAO,mCAA8B;AAAA;AAErD;AAAA;AAEO,MAAM,sBAAsB,eAKjC;AAAA,EACE,WAAW,GAAG;AAAA,IACV,MAAM;AAAA;AAEd;AA4DO,SAAS,0BAA0B,CACtC,SACoB;AAAA,EACpB,MAAM,SAAS;AAAA,IACX,MAAM,IAAI;AAAA,IACV,2BAA2B,IAAI;AAAA,IAC/B,aAAa,IAAI;AAAA,IACjB,KAAK,IAAI;AAAA,IACT,+BAA+B,IAAI;AAAA,IACnC,sBAAsB,IAAI;AAAA,IAC1B,UAAU,IAAI;AAAA,EAClB;AAAA,EACA,OAAO,IAAI,sBAKT,QAAQ,QAAQ,OAAO;AAAA;AAGtB,SAAS,oCAAoC,CAChD,QACoB;AAAA,EACpB,MAAM,UAAU,IAAI,uBAAuB,MAAM;AAAA,EAEjD,OAAO,2BAA2B,OAAO;AAAA;AAAA;AAGtC,MAAM,2CAA2C,sBAKtD;AAAA,EACU;AAAA,EAER,WAAW,CAAC,WAAmB;AAAA,IAC3B,MACI;AAAA,MACI,MAAM,IAAI;AAAA,MACV,2BAA2B,IAAI;AAAA,MAC/B,aAAa,IAAI;AAAA,MACjB,KAAK,IAAI;AAAA,MACT,+BAA+B,IAAI;AAAA,MACnC,sBAAsB,IAAI;AAAA,MAC1B,UAAU,IAAI;AAAA,IAClB,GACA,QACA,IAAI,oBACR;AAAA,IACA,KAAK,aAAa;AAAA;AAAA,EAGtB,OAAO,IACA,MAIwB;AAAA,IAC3B,KAAK,WAAW,YAAY;AAAA,MACxB,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,SAAS,KAAK;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,EAAE,SAAS,MAAM,WAAW,OAAO;AAAA;AAElD;;ACznBO,MAAM,sBAAgD;AAAA,EACjD,YAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACE;AAAA,EAEV,WAAW,CACP,sBACA,cACA,QACF;AAAA,IACE,KAAK,UAAU;AAAA,IACf,KAAK,cAAc;AAAA,IACnB,KAAK,mBAAmB,IAAI;AAAA,IAC5B,KAAK,gBAAgB;AAAA,IACrB,KAAK,gBAAgB;AAAA,IACrB,KAAK,mBAAmB,IAAI;AAAA;AAAA,MAG5B,QAAQ,GAAY;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,EAGhB,OAAO,GAAS;AAAA,IACZ,KAAK,YAAY;AAAA;AAAA,EAGrB,MAAM,GAAS;AAAA,IACX,KAAK,YAAY;AAAA;AAAA,EAGrB,iBAAiB,CAAC,QAAqB;AAAA,IACnC,IAAI,KAAK,WAAW,WAAW;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ,iBACT,eACA,KAAK,oBACL,EAAE,OAAO,CACb;AAAA,IACA,KAAK,QAAQ,iBACT,aACA,KAAK,kBACL,EAAE,OAAO,CACb;AAAA,IACA,KAAK,QAAQ,iBACT,eACA,KAAK,oBACL,EAAE,OAAO,CACb;AAAA,IACA,KAAK,QAAQ,iBACT,SACA,KAAK,eACL,EAAE,OAAO,CACb;AAAA,IACA,OAAO,iBAAiB,WAAW,KAAK,iBAAiB,EAAE,OAAO,CAAC;AAAA,IACnE,OAAO,iBAAiB,SAAS,KAAK,cAAc,EAAE,OAAO,CAAC;AAAA;AAAA,EAGlE,KAAK,GAAS;AAAA,IACV,IAAI,KAAK,iBAAiB,OAAO,SAAS;AAAA,MACtC,KAAK,mBAAmB,IAAI;AAAA,IAChC;AAAA,IACA,KAAK,kBAAkB,KAAK,iBAAiB,MAAM;AAAA;AAAA,EAGvD,QAAQ,GAAS;AAAA,IACb,KAAK,iBAAiB,MAAM;AAAA,IAC5B,KAAK,mBAAmB,IAAI;AAAA,IAC5B,KAAK,UAAU;AAAA;AAAA,EAGnB,aAAa,GAAS;AAAA,IAClB,KAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAAA,IAC3D,KAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AAAA,IACvD,KAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAAA,IAC3D,KAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI;AAAA,IACjD,KAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AAAA,IACrD,KAAK,eAAe,KAAK,aAAa,KAAK,IAAI;AAAA;AAAA,EAGzC,YAAkD,IACrD,MACC;AAAA,IACJ,MAAM,SAAS,KAAK,cAAc,QAAQ,GAAG,IAAI;AAAA,IACjD,IACI,OAAO,WACP,YAAY,UACZ,OAAO,WAAW,WACpB;AAAA,MACE,KAAK,cAAc,wBAAwB,OAAO,MAAM;AAAA,IAC5D;AAAA;AAAA,EAGJ,kBAAkB,CAAC,GAAiB;AAAA,IAChC,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,EAAE,WAAW,KAAK,EAAE,gBAAgB,SAAS;AAAA,MAC7C,KAAK,aAAa,mBAAmB;AAAA,QACjC,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACJ;AAAA,IACA,IAAI,EAAE,WAAW,KAAK,EAAE,gBAAgB,SAAS;AAAA,MAC7C,KAAK,aAAa,qBAAqB;AAAA,QACnC,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACJ;AAAA;AAAA,EAGJ,gBAAgB,CAAC,GAAiB;AAAA,IAC9B,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,EAAE,WAAW,KAAK,EAAE,gBAAgB,SAAS;AAAA,MAC7C,KAAK,aAAa,iBAAiB,EAAE,GAAG,EAAE,SAAS,GAAG,EAAE,QAAQ,CAAC;AAAA,MACjE;AAAA,IACJ;AAAA,IACA,IAAI,EAAE,WAAW,KAAK,EAAE,gBAAgB,SAAS;AAAA,MAC7C,KAAK,aAAa,mBAAmB;AAAA,QACjC,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACJ;AAAA;AAAA,EAGJ,kBAAkB,CAAC,GAAiB;AAAA,IAChC,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,IAAI,EAAE,YAAY,KAAK,EAAE,gBAAgB,SAAS;AAAA,MAC9C,KAAK,aAAa,mBAAmB;AAAA,QACjC,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACJ;AAAA,IACA,IAAI,EAAE,YAAY,KAAK,EAAE,gBAAgB,SAAS;AAAA,MAC9C,KAAK,aAAa,qBAAqB;AAAA,QACnC,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACJ;AAAA,IACA,KAAK,aAAa,eAAe,EAAE,GAAG,EAAE,SAAS,GAAG,EAAE,QAAQ,CAAC;AAAA;AAAA,EAGnE,aAAa,CAAC,GAAe;AAAA,IACzB,IAAI,KAAK;AAAA,MAAW;AAAA,IACpB,EAAE,eAAe;AAAA,IACjB,IAAI,EAAE,SAAS;AAAA,MACX,KAAK,aAAa,kBAAkB;AAAA,QAChC,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,QACL,QAAQ,EAAE;AAAA,QACV,QAAQ,EAAE;AAAA,MACd,CAAC;AAAA,IACL,EAAO;AAAA,MACH,KAAK,aAAa,UAAU;AAAA,QACxB,GAAG,EAAE;AAAA,QACL,GAAG,EAAE;AAAA,QACL,QAAQ,EAAE;AAAA,QACV,QAAQ,EAAE;AAAA,MACd,CAAC;AAAA;AAAA;AAAA,EAIT,eAAe,CAAC,GAAkB;AAAA,IAC9B,IAAI,EAAE,WAAW,SAAS,MAAM;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,iBAAiB,IAAI,EAAE,GAAG,GAAG;AAAA,MAClC;AAAA,IACJ;AAAA,IACA,KAAK,iBAAiB,IAAI,EAAE,KAAK,IAAI;AAAA,IACrC,IAAI,EAAE,QAAQ,KAAK;AAAA,MACf,KAAK,aAAa,cAAc;AAAA,IACpC;AAAA,IACA,IAAI,EAAE,QAAQ,UAAU;AAAA,MACpB,KAAK,aAAa,WAAW;AAAA,IACjC;AAAA,IACA,IAAI,EAAE,QAAQ,WAAW;AAAA,MACrB,KAAK,aAAa,SAAS;AAAA,IAC/B;AAAA,IACA,IAAI,EAAE,QAAQ,aAAa;AAAA,MACvB,KAAK,aAAa,WAAW;AAAA,IACjC;AAAA,IACA,IAAI,EAAE,QAAQ,KAAK;AAAA,MACf,KAAK,aAAa,GAAG;AAAA,IACzB;AAAA,IACA,IAAI,EAAE,QAAQ,KAAK;AAAA,MACf,KAAK,aAAa,GAAG;AAAA,IACzB;AAAA,IACA,IAAI,EAAE,QAAQ,KAAK;AAAA,MACf,KAAK,aAAa,GAAG;AAAA,IACzB;AAAA;AAAA,EAGJ,YAAY,CAAC,GAAkB;AAAA,IAC3B,IAAI,KAAK,iBAAiB,IAAI,EAAE,GAAG,GAAG;AAAA,MAClC,KAAK,iBAAiB,OAAO,EAAE,GAAG;AAAA,IACtC;AAAA,IACA,IAAI,EAAE,QAAQ,KAAK;AAAA,MACf,KAAK,aAAa,YAAY;AAAA,IAClC;AAAA;AAAA,EAGJ,MAAM,CAAC,QAA2B;AAAA,IAC9B,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,MAAM;AAAA;AAAA,MAGX,YAAY,CAAC,cAA4B;AAAA,IACzC,KAAK,gBAAgB;AAAA;AAE7B;;ACjTO,MAAM,wBAAoD;AAAA,EACrD;AAAA,EACA;AAAA,EACA,eAAwB;AAAA,EACxB,gBAAyB;AAAA,EACzB,kBAA2B;AAAA,EAE3B;AAAA,EACA;AAAA,EAEA;AAAA,EAER,WAAW,CACP,wBACA,cACA,QACF;AAAA,IACE,KAAK,UAAU;AAAA,IACf,KAAK,YAAY;AAAA,IACjB,KAAK,gBAAgB;AAAA,IACrB,KAAK,gBAAgB;AAAA,IACrB,KAAK,mBAAmB,IAAI;AAAA,IAE5B,KAAK,cAAc;AAAA;AAAA,MAGnB,YAAY,GAAsB;AAAA,IAClC,OAAO,KAAK;AAAA;AAAA,EAGhB,aAAa,GAAS;AAAA,IAClB,KAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACzD,KAAK,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AAAA,IACrD,KAAK,qBAAqB,KAAK,mBAAmB,KAAK,IAAI;AAAA,IAC3D,KAAK,mBAAmB,KAAK,iBAAiB,KAAK,IAAI;AAAA;AAAA,EAG3D,cAAc,GAAS;AAAA,IACnB,KAAK,YAAY;AAAA;AAAA,EAGrB,eAAe,GAAS;AAAA,IACpB,KAAK,YAAY;AAAA;AAAA,EAGrB,KAAK,GAAS;AAAA,IACV,IAAI,KAAK,WAAW,WAAW;AAAA,MAC3B;AAAA,IACJ;AAAA,IACA,IAAI,KAAK,iBAAiB,OAAO,SAAS;AAAA,MACtC,KAAK,mBAAmB,IAAI;AAAA,IAChC;AAAA,IACA,KAAK,QAAQ,iBACT,cACA,KAAK,mBACL,EAAE,QAAQ,KAAK,iBAAiB,OAAO,CAC3C;AAAA,IACA,KAAK,QAAQ,iBACT,YACA,KAAK,iBACL,EAAE,QAAQ,KAAK,iBAAiB,OAAO,CAC3C;AAAA,IACA,KAAK,QAAQ,iBACT,eACA,KAAK,oBACL,EAAE,QAAQ,KAAK,iBAAiB,OAAO,CAC3C;AAAA,IACA,KAAK,QAAQ,iBACT,aACA,KAAK,kBACL,EAAE,QAAQ,KAAK,iBAAiB,OAAO,CAC3C;AAAA;AAAA,EAGJ,QAAQ,GAAS;AAAA,IACb,KAAK,iBAAiB,MAAM;AAAA,IAC5B,KAAK,mBAAmB,IAAI;AAAA,IAC5B,KAAK,UAAU;AAAA;AAAA,MAGf,QAAQ,GAAY;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,EAGhB,OAAO,GAAS;AAAA,IACZ,KAAK,YAAY;AAAA;AAAA,EAGrB,MAAM,GAAS;AAAA,IACX,KAAK,YAAY;AAAA;AAAA,EAGb,YAA+C,IAChD,MACC;AAAA,IACJ,MAAM,SAAS,KAAK,cAAc,QAAQ,GAAG,IAAI;AAAA,IACjD,IACI,OAAO,WACP,YAAY,UACZ,OAAO,WAAW,WACpB;AAAA,MACE,KAAK,cAAc,wBAAwB,OAAO,MAAM;AAAA,IAC5D;AAAA;AAAA,EAGJ,iBAAiB,CAAC,GAAe;AAAA,IAC7B,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IAEA,MAAM,cAA6B,CAAC;AAAA,IACpC,SAAS,IAAI,EAAG,IAAI,EAAE,eAAe,QAAQ,KAAK;AAAA,MAC9C,YAAY,KAAK;AAAA,QACb,OAAO,EAAE,eAAe,GAAG;AAAA,QAC3B,GAAG,EAAE,eAAe,GAAG;AAAA,QACvB,GAAG,EAAE,eAAe,GAAG;AAAA,MAC3B,CAAC;AAAA,IACL;AAAA,IACA,KAAK,aAAa,cAAc,EAAE,QAAQ,YAAY,CAAC;AAAA,IACvD,EAAE,eAAe;AAAA;AAAA,EAGrB,kBAAkB,CAAC,GAAe;AAAA,IAC9B,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,MAAM,gBAA+B,CAAC;AAAA,IACtC,SAAS,IAAI,EAAG,IAAI,EAAE,eAAe,QAAQ,KAAK;AAAA,MAC9C,cAAc,KAAK;AAAA,QACf,OAAO,EAAE,eAAe,GAAG;AAAA,QAC3B,GAAG,EAAE,eAAe,GAAG;AAAA,QACvB,GAAG,EAAE,eAAe,GAAG;AAAA,MAC3B,CAAC;AAAA,IACL;AAAA,IACA,KAAK,aAAa,YAAY,EAAE,QAAQ,cAAc,CAAC;AAAA;AAAA,EAG3D,eAAe,CAAC,GAAe;AAAA,IAC3B,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,MAAM,gBAA+B,CAAC;AAAA,IACtC,SAAS,IAAI,EAAG,IAAI,EAAE,eAAe,QAAQ,KAAK;AAAA,MAC9C,cAAc,KAAK;AAAA,QACf,OAAO,EAAE,eAAe,GAAG;AAAA,QAC3B,GAAG,EAAE,eAAe,GAAG;AAAA,QACvB,GAAG,EAAE,eAAe,GAAG;AAAA,MAC3B,CAAC;AAAA,IACL;AAAA,IACA,KAAK,aAAa,YAAY,EAAE,QAAQ,cAAc,CAAC;AAAA;AAAA,EAG3D,gBAAgB,CAAC,GAAe;AAAA,IAC5B,IAAI,KAAK,WAAW;AAAA,MAChB;AAAA,IACJ;AAAA,IACA,EAAE,eAAe;AAAA,IACjB,MAAM,cAA6B,CAAC;AAAA,IACpC,SAAS,IAAI,EAAG,IAAI,EAAE,cAAc,QAAQ,KAAK;AAAA,MAC7C,YAAY,KAAK;AAAA,QACb,OAAO,EAAE,cAAc,GAAG;AAAA,QAC1B,GAAG,EAAE,cAAc,GAAG;AAAA,QACtB,GAAG,EAAE,cAAc,GAAG;AAAA,MAC1B,CAAC;AAAA,IACL;AAAA,IACA,KAAK,aAAa,aAAa,EAAE,QAAQ,YAAY,CAAC;AAAA;AAAA,EAG1D,MAAM,CAAC,QAA2B;AAAA,IAC9B,KAAK,SAAS;AAAA,IACd,KAAK,UAAU;AAAA,IACf,KAAK,MAAM;AAAA;AAEnB;;AC3CO,MAAM,sBAAoD;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,GAAG;AAAA,IACV,KAAK,MAAM,IAAI;AAAA,IAGf,KAAK,OAAO,IAAI;AAAA,IAGhB,KAAK,SAAS,IAAI;AAAA,IAGlB,KAAK,MAAM,IAAI;AAAA;AAAA,EAKnB,SAAS,CAAC,MAAmB;AAAA,IACzB,KAAK,IAAI,OAAO,EAAE,KAAW,CAAC;AAAA,IAC9B,KAAK,IAAI,OAAO,EAAE,MAAM,OAAO,KAAW,CAAC;AAAA;AAAA,EAG/C,UAAU,CAAC,iBAAyB,aAA0B;AAAA,IAC1D,KAAK,KAAK,OAAO;AAAA,MACb;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,KAAK,IAAI,OAAO;AAAA,MACZ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA;AAAA,EAGL,YAAY,CAAC,eAA6B;AAAA,IACtC,KAAK,OAAO,OAAO,EAAE,cAA6B,CAAC;AAAA,IACnD,KAAK,IAAI,OAAO,EAAE,MAAM,UAAU,cAA6B,CAAC;AAAA;AAAA,EAGpE,EAAwC,CACpC,WACA,UACyB;AAAA,IACzB,QAAQ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,IAAI,UACZ,QAGJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,KAAK,UACb,QAGJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,OAAO,UACf,QAGJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,IAAI,UACZ,QAGJ;AAAA;AAAA,QAEA,MAAM,IAAI,MAAM,mCAAmC;AAAA;AAAA;AAGnE;AAaO,SAAS,kCAAkC,GAA0B;AAAA,EACxE,OAAO,IAAI;AAAA;AAAA;AAGR,MAAM,wCAAsE;AAAA,EACvE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAER,WAAW,CAAC,WAAmB;AAAA,IAC3B,KAAK,MAAM,IAAI;AAAA,IAGf,KAAK,OAAO,IAAI;AAAA,IAGhB,KAAK,SAAS,IAAI;AAAA,IAGlB,KAAK,MAAM,IAAI;AAAA,IAGf,KAAK,YAAY;AAAA;AAAA,EAGrB,SAAS,CAAC,MAAmB;AAAA,IACzB,KAAK,UAAU,YAAY;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,EAAE,MAAM,OAAO,KAAW;AAAA,IACvC,CAAC;AAAA,IACD,KAAK,IAAI,OAAO,EAAE,KAAW,CAAC;AAAA,IAC9B,KAAK,IAAI,OAAO,EAAE,MAAM,OAAO,KAAW,CAAC;AAAA;AAAA,EAG/C,UAAU,CAAC,iBAAyB,aAA0B;AAAA,IAC1D,KAAK,UAAU,YAAY;AAAA,MACvB,MAAM;AAAA,MACN,SAAS;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,IACD,KAAK,KAAK,OAAO;AAAA,MACb;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,IACD,KAAK,IAAI,OAAO;AAAA,MACZ,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA;AAAA,EAGL,YAAY,CAAC,eAA6B;AAAA,IACtC,KAAK,UAAU,YAAY;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,EAAE,MAAM,UAAU,cAA6B;AAAA,IAC5D,CAAC;AAAA,IACD,KAAK,OAAO,OAAO,EAAE,cAA6B,CAAC;AAAA,IACnD,KAAK,IAAI,OAAO,EAAE,MAAM,UAAU,cAA6B,CAAC;AAAA;AAAA,EAGpE,EAAwC,CACpC,WACA,UACyB;AAAA,IACzB,QAAQ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,IAAI,UACZ,QAGJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,KAAK,UACb,QAGJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,OAAO,UACf,QAGJ;AAAA,WACC;AAAA,QACD,OAAO,KAAK,IAAI,UACZ,QAGJ;AAAA;AAAA,QAEA,MAAM,IAAI,MAAM,mCAAmC;AAAA;AAAA;AAGnE;;AtC1MA,MAAqB,MAAM;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA,yBAAkC;AAAA,EAClC,cAAuB;AAAA,EAEvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,qBAA6B;AAAA,EAC7B,sBAA8B;AAAA,EAC9B,0BAAkC;AAAA,EAElC,iBAAyB;AAAA,EAEzB;AAAA,EAgFR,WAAW,CAAC,QAA4B,QAAiB,OAAO;AAAA,IAC5D,MAAM,SAAS,IAAI;AAAA,IACnB,MAAM,QAAQ;AAAA,IACd,OAAO,aAAa;AAAA,MAChB,KAAK,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM;AAAA,MAC5B,KAAK,EAAE,GAAG,OAAO,GAAG,MAAM;AAAA,IAC9B;AAAA,IAEA,KAAK,cAAc;AAAA,IAEnB,KAAK,eAAe,IAAI,YAAY,MAAM;AAAA,IAE1C,KAAK,aAAa,UAAU,sBAAoB;AAAA,MAC5C,KAAK,uBAAuB,gBAAgB;AAAA,MAC5C,KAAK,oBAAoB,gBAAgB;AAAA,KAC5C;AAAA,IAED,KAAK,YAAY,IAAI,iBACjB;AAAA,MACI,qBAAqB;AAAA,MACrB,8BAA8B;AAAA,MAC9B,8BAA8B;AAAA,MAC9B,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,WAAW;AAAA,IACf,GACA,MACJ;AAAA,IAEA,KAAK,aAAa,oCAAoC;AAAA,IACtD,KAAK,sBAAsB,IAAI;AAAA,IAG/B,KAAK,0BAA0B,IAAI,uBAC/B,KAAK,YACT;AAAA,IACA,KAAK,qBAAqB,IAAI,kBAAkB,KAAK,YAAY;AAAA,IAEjE,MAAM,uBAAuB,2BACzB,KAAK,uBACT;AAAA,IACA,MAAM,yBAAyB,6BAC3B,KAAK,kBACT;AAAA,IAKA,KAAK,qBAAqB,IAAI,kBAC1B,KAAK,YACL,KAAK,WACL,KAAK,mBACT;AAAA,IAGA,KAAK,aAAa,IAAI,sBAClB,sBACA,KAAK,oBACL,MACJ;AAAA,IACA,KAAK,eAAe,IAAI,wBACpB,wBACA,KAAK,oBACL,MACJ;AAAA,IAEA,IAAI,UAAU,MAAW;AAAA,MACrB,KAAK,OAAO,QAAQ,KAAK;AAAA,IAC7B;AAAA;AAAA,EAGI,sBAAsB,CAAC,kBAG5B;AAAA,IACC,KAAK,OAAO,iBAAiB,iBAAiB;AAAA,IAC9C,KAAK,OAAO,gBAAgB,iBAAiB;AAAA;AAAA,EAwEjD,MAAM,CAAC,QAA2B,QAAiB,OAAO;AAAA,IACtD,KAAK,iBAAiB;AAAA,IACtB,MAAM,aAAa,OAAO,WAAW,MAAM;AAAA,MACvC,oBAAoB;AAAA,IACxB,CAAC;AAAA,IACD,IAAI,cAAc,MAAM;AAAA,MACpB,QAAQ,MAAM,4BAA4B;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,KAAK,WAAW,OAAO,MAAM;AAAA,IAC7B,KAAK,aAAa,OAAO,MAAM;AAAA,IAC/B,KAAK,aAAa,OAAO,MAAM;AAAA,IAE/B,IAAI,KAAK,qBAAqB;AAAA,MAC1B,KAAK,oBAAoB,KAAK,aAAa,UAAU;AAAA,IACzD;AAAA,IAEA,KAAK,WAAW;AAAA,IAChB,KAAK,mBAAmB,aAAa,KAAK,QAAQ;AAAA;AAAA,EAGtD,qBAAqB,GAAG;AAAA,IACpB,KAAK,WAAW,SAAS;AAAA,IACzB,KAAK,aAAa,SAAS;AAAA;AAAA,EAG/B,oBAAoB,GAAG;AAAA,IACnB,KAAK,WAAW,MAAM;AAAA,IACtB,KAAK,aAAa,MAAM;AAAA;AAAA,MAGxB,iBAAiB,GAAsB;AAAA,IACvC,OAAO,KAAK;AAAA;AAAA,EAOhB,QAAQ,GAAG;AAAA,IACP,KAAK,WAAW,SAAS;AAAA,IACzB,KAAK,aAAa,SAAS;AAAA,IAC3B,KAAK,aAAa,SAAS;AAAA,IAC3B,KAAK,iBAAiB;AAAA,IACtB,KAAK,WAAW;AAAA,IAChB,KAAK,mBAAmB;AAAA;AAAA,EAGpB,aAAa,GAAG;AAAA,IACpB,KAAK,OAAO,KAAK,KAAK,KAAK,IAAI;AAAA;AAAA,MAG/B,KAAK,GAAW;AAAA,IAChB,OAAO,KAAK,aAAa;AAAA;AAAA,MAGzB,MAAM,GAAW;AAAA,IACjB,OAAO,KAAK,aAAa;AAAA;AAAA,MAQzB,qBAAqB,CAAC,OAAgB;AAAA,IACtC,KAAK,yBAAyB;AAAA,IAC9B,KAAK,wBAAwB,wBAAwB;AAAA,IACrD,KAAK,mBAAmB,wBAAwB;AAAA;AAAA,MAGhD,qBAAqB,GAAY;AAAA,IACjC,OAAO,KAAK;AAAA;AAAA,MAOZ,UAAU,GAAY;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,MAGZ,UAAU,CAAC,OAAgB;AAAA,IAC3B,KAAK,cAAc;AAAA,IACnB,IAAI,KAAK,aAAa;AAAA,MAClB,KAAK,aAAa,SAAS,OAAO,UAAU;AAAA,MAC5C,KAAK,aAAa,UAAU,OAAO,WAAW;AAAA,IAClD;AAAA;AAAA,MAOA,OAAO,GAAyC;AAAA,IAChD,IAAI,CAAC,KAAK,wBAAwB;AAAA,MAC9B,OAAO,KAAK;AAAA,IAChB;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,MAOZ,mBAAmB,CAAC,OAAgB;AAAA,IACpC,KAAK,UAAU,OAAO,sBAAsB;AAAA,IAC5C,IAAI,KAAK,aAAa,UAAU;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,IAAI,OAAO;AAAA,MACP,KAAK,oBAAoB,KAAK,aAAa,UAAU;AAAA,IACzD;AAAA;AAAA,MAGA,mBAAmB,GAAY;AAAA,IAC/B,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAO7B,SAAS,CAAC,QAAwB;AAAA,IAClC,KAAK,WAAW,SAAS;AAAA,IACzB,OAAO,SAAS;AAAA,IAChB,IAAI,KAAK,kBAAkB,MAAW;AAAA,MAClC,OAAO,OAAO,KAAK,cAAc;AAAA,IACrC;AAAA,IACA,OAAO,MAAM;AAAA,IACb,KAAK,aAAa;AAAA;AAAA,MAGlB,SAAS,GAAmB;AAAA,IAC5B,OAAO,KAAK;AAAA;AAAA,MAOZ,WAAW,CAAC,QAA0B;AAAA,IACtC,KAAK,aAAa,SAAS;AAAA,IAC3B,OAAO,SAAS;AAAA,IAChB,IAAI,KAAK,kBAAkB,MAAW;AAAA,MAClC,OAAO,OAAO,KAAK,cAAc;AAAA,IACrC;AAAA,IACA,OAAO,MAAM;AAAA,IACb,KAAK,eAAe;AAAA;AAAA,MAGpB,WAAW,GAAqB;AAAA,IAChC,OAAO,KAAK;AAAA;AAAA,MAOZ,MAAM,GAA0B;AAAA,IAChC,OAAO,KAAK,UAAU;AAAA;AAAA,MAGtB,MAAM,CAAC,QAA+B;AAAA,IACtC,IAAI,CAAC,KAAK,aAAa,UAAU;AAAA,MAC7B,OAAO,iBACH,KAAK,aAAa,SAAS,OAAO;AAAA,MACtC,OAAO,gBACH,KAAK,aAAa,QAAQ,OAAO;AAAA,IACzC;AAAA,IACA,KAAK,UAAU,SAAS;AAAA;AAAA,MAGxB,SAAS,GAAc;AAAA,IACvB,OAAO,KAAK;AAAA;AAAA,MAGZ,SAAS,CAAC,WAAsB;AAAA,IAChC,KAAK,aAAa;AAAA,IAKlB,KAAK,mBAAmB,YAAY;AAAA;AAAA,EAOjC,IAAI,CAAC,WAAmB;AAAA,IAC3B,IAAI,KAAK,aAAa,YAAY,KAAK,YAAY,WAAW;AAAA,MAC1D;AAAA,IACJ;AAAA,IAEA,KAAK,UAAU,OAAO;AAAA,IACtB,IAAI,YAAY,YAAY,KAAK;AAAA,IACjC,KAAK,iBAAiB;AAAA,IACtB,YAAY,YAAY;AAAA,IAExB,KAAK,SAAS,MAAM;AAAA,IACpB,KAAK,SAAS,UACV,GACA,GACA,KAAK,aAAa,QAAQ,OAAO,kBACjC,KAAK,aAAa,SAAS,OAAO,gBACtC;AAAA,IAEA,IAAI,KAAK,4BAA4B,OAAO,kBAAkB;AAAA,MAC1D,KAAK,0BAA0B,OAAO;AAAA,MACtC,KAAK,aAAa,gBAAgB,KAAK,aAAa,MAAM;AAAA,MAC1D,KAAK,aAAa,eAAe,KAAK,aAAa,KAAK;AAAA,IAC5D;AAAA,IAEA,IAAI,KAAK,wBAAwB,KAAK,aAAa,QAAQ;AAAA,MACvD,KAAK,sBAAsB,KAAK,aAAa;AAAA,MAC7C,KAAK,aAAa,gBAAgB,KAAK,aAAa,MAAM;AAAA,IAC9D;AAAA,IACA,IAAI,KAAK,uBAAuB,KAAK,aAAa,OAAO;AAAA,MACrD,KAAK,qBAAqB,KAAK,aAAa;AAAA,MAC5C,KAAK,aAAa,eAAe,KAAK,aAAa,KAAK;AAAA,IAC5D;AAAA,IAEA,MAAM,kBAAkB,KAAK,OAAO,aAChC,OAAO,kBACP,KAAK,sBACT;AAAA,IACA,MAAM,mBAAmB,KAAK,SAAS,aAAa;AAAA,IACpD,IACI,iBAAiB,MAAM,gBAAgB,KACvC,iBAAiB,MAAM,gBAAgB,KACvC,iBAAiB,MAAM,gBAAgB,KACvC,iBAAiB,MAAM,gBAAgB,KACvC,iBAAiB,MAAM,gBAAgB,KACvC,iBAAiB,MAAM,gBAAgB,GACzC;AAAA,MACE,KAAK,SAAS,aACV,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,CACpB;AAAA,IACJ;AAAA;AAAA,EASJ,6BAA6B,CAAC,oBAAkC;AAAA,IAC5D,MAAM,eAAe,KAAK,aAAa;AAAA,IACvC,MAAM,uBAAuB;AAAA,MACzB,GAAG,aAAa,SAAS,IAAI,aAAa,QAAQ;AAAA,MAClD,GAAG,aAAa,SAAS,IAAI,aAAa,SAAS;AAAA,IACvD;AAAA,IACA,MAAM,kBAAkB,WAAS,UAC7B,oBACA,oBACJ;AAAA,IACA,IAAI,CAAC,KAAK,wBAAwB;AAAA,MAC9B,gBAAgB,IAAI,CAAC,gBAAgB;AAAA,IACzC;AAAA,IACA,OAAO,KAAK,OAAO,+BAA+B,eAAe;AAAA;AAAA,EAUrE,EAAkC,CAC9B,WACA,UACW;AAAA,IACX,OAAO,KAAK,OAAO,GAAG,WAAW,QAAQ;AAAA;AAAA,EAW7C,OAA6C,CACzC,WACA,UACyB;AAAA,IACzB,OAAO,KAAK,oBAAoB,GAAG,WAAW,QAAQ;AAAA;AAAA,MAMtD,kBAAkB,GAAuB;AAAA,IACzC,OAAO,wBAAwB,KAAK,OAAO,UAAU;AAAA;AAAA,MAMrD,iBAAiB,GAAuB;AAAA,IACxC,OAAO,uBAAuB,KAAK,OAAO,UAAU;AAAA;AAAA,EAGhD,mBAAmB,CAAC,kBAAoC;AAAA,IAC5D,IAAI,KAAK,qBAAqB;AAAA,MAC1B,MAAM,qBAAqB,6BACvB,KAAK,OAAO,YACZ,iBAAiB,OACjB,iBAAiB,QACjB,KAAK,OAAO,QAChB;AAAA,MACA,IACI,sBAAsB,QACtB,gCACI,KAAK,OAAO,gBACZ,kBACJ,GACF;AAAA,QACE,KAAK,OAAO,gBAAgB,kBAAkB;AAAA,MAClD;AAAA,IACJ;AAAA;AAAA,EAOJ,oCAAoC,CAAC,OAAe;AAAA,IAChD,MAAM,gBAAgB,KAAK,OAAO;AAAA,IAClC,MAAM,SACF,iBAAiB,YAAY,YAAY,cAAc;AAAA,IAC3D,MAAM,mBAAmB,UAAU,YAAY,YAAY,OAAO;AAAA,IAClE,IAAI,oBAAoB,WAAW;AAAA,MAC/B,KAAK,OAAO,wBAAwB,CAAC,OAAO,KAAK;AAAA,IACrD,EAAO;AAAA,MACH,KAAK,OAAO,wBACR,kBACA,mBAAmB,QAAQ,CAC/B;AAAA;AAAA,IAEJ,IAAI,KAAK,qBAAqB;AAAA,MAC1B,MAAM,qBAAqB,wBACvB,KAAK,OAAO,YACZ,KAAK,OAAO,eACZ,KAAK,OAAO,gBACZ,KAAK,OAAO,QAChB;AAAA,MACA,IACI,gCACI,KAAK,OAAO,gBACZ,kBACJ,GACF;AAAA,QACE,KAAK,OAAO,gBAAgB,kBAAkB;AAAA,MAClD;AAAA,IACJ;AAAA;AAAA,EAOJ,oCAAoC,CAAC,OAAe;AAAA,IAChD,MAAM,gBAAgB,KAAK,OAAO;AAAA,IAClC,MAAM,SACF,iBAAiB,YAAY,YAAY,cAAc;AAAA,IAC3D,MAAM,mBAAmB,UAAU,YAAY,YAAY,OAAO;AAAA,IAClE,IAAI,oBAAoB,WAAW;AAAA,MAC/B,KAAK,OAAO,wBAAwB,CAAC,OAAO,KAAK;AAAA,IACrD,EAAO;AAAA,MACH,KAAK,OAAO,wBACR,mBAAmB,QAAQ,GAC3B,gBACJ;AAAA;AAAA,IAEJ,IAAI,KAAK,qBAAqB;AAAA,MAC1B,MAAM,qBAAqB,wBACvB,KAAK,OAAO,YACZ,KAAK,OAAO,eACZ,KAAK,OAAO,gBACZ,KAAK,OAAO,QAChB;AAAA,MACA,IACI,gCACI,KAAK,OAAO,gBACZ,kBACJ,GACF;AAAA,QACE,KAAK,OAAO,gBAAgB,kBAAkB;AAAA,MAClD;AAAA,IACJ;AAAA;AAAA,MAGA,4BAA4B,GAAY;AAAA,IACxC,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,4BAA4B,GAAY;AAAA,IACxC,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,oBAAoB,GAAY;AAAA,IAChC,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,oBAAoB,GAAY;AAAA,IAChC,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,4BAA4B,CAAC,OAAgB;AAAA,IAC7C,KAAK,UAAU,OAAO,+BAA+B;AAAA;AAAA,MAGrD,4BAA4B,CAAC,OAAgB;AAAA,IAC7C,KAAK,UAAU,UAAU,EAAE,8BAA8B,MAAM,CAAC;AAAA;AAAA,MAGhE,oBAAoB,CAAC,OAAgB;AAAA,IACrC,KAAK,UAAU,UAAU,EAAE,sBAAsB,MAAM,CAAC;AAAA;AAAA,MAGxD,oBAAoB,CAAC,OAAgB;AAAA,IACrC,KAAK,UAAU,UAAU,EAAE,sBAAsB,MAAM,CAAC;AAAA;AAAA,MAGxD,YAAY,GAAY;AAAA,IACxB,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,YAAY,CAAC,OAAgB;AAAA,IAC7B,KAAK,UAAU,UAAU,EAAE,cAAc,MAAM,CAAC;AAAA;AAAA,MAGhD,gBAAgB,GAAY;AAAA,IAC5B,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,gBAAgB,CAAC,OAAgB;AAAA,IACjC,KAAK,UAAU,UAAU,EAAE,kBAAkB,MAAM,CAAC;AAAA;AAAA,MAGpD,gBAAgB,GAAY;AAAA,IAC5B,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,gBAAgB,CAAC,OAAgB;AAAA,IACjC,KAAK,UAAU,UAAU,EAAE,kBAAkB,MAAM,CAAC;AAAA;AAAA,MAGpD,SAAS,GAAY;AAAA,IACrB,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,SAAS,CAAC,OAAgB;AAAA,IAC1B,KAAK,UAAU,UAAU,EAAE,WAAW,MAAM,CAAC;AAAA;AAAA,MAG7C,aAAa,GAAY;AAAA,IACzB,OAAO,KAAK,UAAU,OAAO;AAAA;AAAA,MAG7B,aAAa,CAAC,OAAgB;AAAA,IAC9B,KAAK,UAAU,UAAU,EAAE,eAAe,MAAM,CAAC;AAAA;AAAA,EAGrD,YAAY,GAAc;AAAA,IACtB,OAAO,KAAK;AAAA;AAAA,EAGhB,YAAY,CAAC,MAAgC;AAAA,IACzC,KAAK,wBAAwB,QAAQ,IAAI;AAAA;AAAA,MASzC,SAAS,GAA+B;AAAA,IACxC,OAAO,KAAK,wBAAwB;AAAA;AAAA,EAcxC,eAAe,GAAS;AAAA,IACpB,KAAK,aAAa,KAAK,cAAc,QAAQ,aAAa,KAAK;AAAA;AAAA,EASnE,mBAAmB,GAAS;AAAA,IACxB,KAAK,wBAAwB,yBAAyB;AAAA;AAAA,EAG1D,uBAAuB,CAAC,UAAkD;AAAA,IACtE,OAAO,KAAK,aAAa,UAAU,QAAQ;AAAA;AAAA,MAG3C,gBAAgB,GAAqB;AAAA,IACrC,OAAO,KAAK,aAAa;AAAA;AAEjC;",
|
|
86
|
+
"debugId": "A2D65F1C764E7BEC64756E2164756E21",
|
|
87
87
|
"names": []
|
|
88
88
|
}
|