{"version":3,"file":"mosaic-design-infosec-components-directives.mjs","sources":["../../../libs/directives/src/lib/autofocus/autofocus.directive.ts","../../../libs/directives/src/lib/clipboard/clipboard.directive.ts","../../../libs/directives/src/lib/collapsible-container-content/collapsible-container-content.directive.ts","../../../libs/directives/src/lib/collapsible-container-item/collapsible-container-item.directive.ts","../../../libs/directives/src/lib/collapsible-container/collapsible-container.directive.ts","../../../libs/directives/src/lib/form-group-extension/form-group-extension.directive.ts","../../../libs/directives/src/lib/let/let.directive.ts","../../../libs/directives/src/lib/navbar-item-trigger/navbar-item-trigger.directive.ts","../../../libs/directives/src/lib/redraw-when-changed/redraw-when-changed.directive.ts","../../../libs/directives/src/lib/save-tree-display-state/save-tree-display-state.directive.ts","../../../libs/directives/src/lib/theme/theme.directive.ts","../../../libs/directives/src/lib/width-change/width-change.directive.ts","../../../libs/directives/mosaic-design-infosec-components-directives.ts"],"sourcesContent":["import { Directive, ElementRef, Optional, AfterViewInit } from '@angular/core';\nimport { KbqCheckbox } from '@koobiq/components/checkbox';\n\n@Directive({\n    selector: '[icAutofocus]',\n    standalone: true\n})\nexport class IcAutofocusDirective implements AfterViewInit {\n    constructor(\n        private element: ElementRef,\n        @Optional() private kbqCheckbox: KbqCheckbox\n    ) {}\n\n    ngAfterViewInit(): void {\n        setTimeout(() => {\n            const nativeElement = this.element.nativeElement as HTMLElement;\n            // просто фокус не срабатывает на чекбоксе\n            if (nativeElement.tagName === 'KBQ-CHECKBOX') {\n                this.kbqCheckbox.focus();\n            } else {\n                nativeElement.focus();\n            }\n        });\n    }\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { first } from 'rxjs';\n\nimport { copyTextToClipboard } from '@mosaic-design/infosec-components/utils';\n\n@Directive({\n    selector: '[icClipboard]',\n    standalone: true\n})\nexport class IcClipboardDirective {\n    @Input('icClipboard')\n    set value(value: string | undefined) {\n        this._text = value || '';\n    }\n\n    private _text = '';\n\n    @Output() icClipboardCopied = new EventEmitter();\n\n    @HostBinding('class') class = 'ic-clipboard';\n\n    @HostListener('click') onClick(): void {\n        copyTextToClipboard(this._text)\n            .pipe(first())\n            .subscribe(() => {\n                this.icClipboardCopied.emit();\n            });\n    }\n}\n","import { Directive, ElementRef, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { WINDOW, WindowRef } from '@mosaic-design/infosec-components/tokens';\nimport { getElementOuterWidth } from '@mosaic-design/infosec-components/utils';\n\n@Directive({\n    selector: '[icCollapsibleContainerContent]',\n    host: {\n        class: 'ic-collapsible-container__content'\n    },\n    providers: [DestroyService],\n    standalone: true\n})\nexport class IcCollapsibleContainerContentDirective {\n    @Input()\n    set isCollapsed(value: boolean | undefined) {\n        this.#isCollapsed$.next(value ?? false);\n    }\n\n    #isCollapsed$ = new BehaviorSubject<boolean>(false);\n\n    constructor(\n        private view: ViewContainerRef,\n        private templateRef: TemplateRef<unknown>,\n        private elementRef: ElementRef<HTMLElement>,\n        @Inject(WINDOW) private windowRef: WindowRef,\n        private destroyed$: DestroyService\n    ) {\n        this.#isCollapsed$.pipe(distinctUntilChanged(), takeUntil(this.destroyed$)).subscribe((isCollapsed) => {\n            if (isCollapsed) {\n                this.collapse();\n            } else {\n                this.expand();\n            }\n        });\n    }\n\n    get width(): number {\n        const element = this.elementRef.nativeElement;\n\n        return getElementOuterWidth(element, this.windowRef.getComputedStyle(element));\n    }\n\n    get text(): string {\n        return this.elementRef.nativeElement.innerText;\n    }\n\n    private collapse(): void {\n        this.view.clear();\n    }\n\n    private expand(): void {\n        this.view.clear();\n        this.view.createEmbeddedView(this.templateRef);\n    }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Inject, Input } from '@angular/core';\n\nimport { WINDOW, WindowRef } from '@mosaic-design/infosec-components/tokens';\nimport { getElementOuterWidth } from '@mosaic-design/infosec-components/utils';\n\nimport { IcCollapsibleContainerContentDirective } from '../collapsible-container-content/collapsible-container-content.directive';\n\n@Directive({\n    selector: '[icCollapsibleContainerItem]',\n    host: {\n        class: 'ic-collapsible-container__item'\n    },\n    standalone: true\n})\nexport class IcCollapsibleContainerItemDirective {\n    @ContentChild(IcCollapsibleContainerContentDirective) content: IcCollapsibleContainerContentDirective | undefined;\n\n    get isCollapsed(): boolean {\n        return this.#isCollapsed;\n    }\n\n    @HostBinding('class.ic-collapsible-container__item_collapsed')\n    @Input()\n    set isCollapsed(value: boolean) {\n        if (value) {\n            this.#widthBeforeCollapse = this.width;\n        }\n\n        this.#isCollapsed = value;\n\n        if (this.content) {\n            this.content.isCollapsed = value;\n        }\n    }\n\n    #isCollapsed = false;\n\n    get widthBeforeCollapse(): number {\n        return this.#widthBeforeCollapse ?? 0;\n    }\n\n    #widthBeforeCollapse: number | undefined;\n\n    constructor(\n        public elementRef: ElementRef<HTMLElement>,\n        @Inject(WINDOW) private windowRef: WindowRef\n    ) {}\n\n    get width(): number {\n        const element = this.elementRef.nativeElement;\n\n        return getElementOuterWidth(element, this.windowRef.getComputedStyle(element));\n    }\n\n    get contentWidth(): number {\n        return this.content?.width ?? 0;\n    }\n}\n","import {\n    AfterContentInit,\n    ChangeDetectorRef,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    forwardRef,\n    Inject,\n    NgZone,\n    QueryList\n} from '@angular/core';\nimport { filter, map, merge, sampleTime, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { WINDOW, WindowRef } from '@mosaic-design/infosec-components/tokens';\nimport {\n    getElementOuterWidth,\n    nodeMutation$,\n    nodeResize$,\n    parseStyleValue,\n    runInZone\n} from '@mosaic-design/infosec-components/utils';\n\nimport { IcCollapsibleContainerItemDirective } from '../collapsible-container-item/collapsible-container-item.directive';\n\ninterface ItemsStatus {\n    itemsToUpdate: IcCollapsibleContainerItemDirective[];\n    isCollapsed: boolean;\n}\n\n@Directive({\n    selector: '[icCollapsibleContainer]',\n    providers: [DestroyService],\n    host: {\n        class: 'ic-collapsible-container'\n    },\n    standalone: true\n})\nexport class IcCollapsibleContainerDirective implements AfterContentInit {\n    @ContentChildren(forwardRef(() => IcCollapsibleContainerItemDirective), { descendants: true }) collapsibleItems:\n        | QueryList<IcCollapsibleContainerItemDirective>\n        | undefined;\n\n    readonly #timeout = 100;\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private changeDetectorRef: ChangeDetectorRef,\n        @Inject(WINDOW) private windowRef: WindowRef,\n        private ngZone: NgZone,\n        private destroyed$: DestroyService\n    ) {}\n\n    private get width(): number {\n        return this.elementRef.nativeElement.getBoundingClientRect().width;\n    }\n\n    private get totalItemsWidth(): number {\n        const element = this.elementRef.nativeElement;\n\n        const styles = this.windowRef.getComputedStyle(element);\n        const gapWidth = parseStyleValue(styles.gap) * (element.children.length - 1);\n\n        return (\n            Array.from(element.children).reduce(\n                (acc, child) => acc + getElementOuterWidth(child, this.windowRef.getComputedStyle(child)),\n                0\n            ) + gapWidth\n        );\n    }\n\n    ngAfterContentInit(): void {\n        this.collapsibleItems?.changes.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n            this.updateItems();\n        });\n\n        this.createSubscriptions();\n    }\n\n    private findItemsToCollapse(freeSpace: number): IcCollapsibleContainerItemDirective[] {\n        let delta = freeSpace;\n        const result: IcCollapsibleContainerItemDirective[] = [];\n\n        const nonCollapsedItems = this.collapsibleItems?.toArray().filter((item) => !item.isCollapsed) ?? [];\n\n        for (const item of nonCollapsedItems) {\n            result.push(item);\n            delta += item.width;\n\n            if (delta > 0) {\n                break;\n            }\n        }\n\n        return result;\n    }\n\n    private findItemsToExpand(freeSpace: number): IcCollapsibleContainerItemDirective[] {\n        let delta = freeSpace;\n        const result: IcCollapsibleContainerItemDirective[] = [];\n\n        let collapsedItems = this.collapsibleItems?.toArray().filter((item) => item.isCollapsed) ?? [];\n        collapsedItems = collapsedItems.reverse();\n\n        for (const collapsedItem of collapsedItems) {\n            const itemDelta = collapsedItem.widthBeforeCollapse - collapsedItem.width;\n\n            if (delta - itemDelta >= 0) {\n                result.push(collapsedItem);\n                delta -= itemDelta;\n            } else {\n                break;\n            }\n        }\n\n        return result;\n    }\n\n    private mapItemsStatus(): ItemsStatus {\n        const freeSpace = this.width - this.totalItemsWidth;\n        const isNeedToCollapse = freeSpace < 0;\n\n        if (isNeedToCollapse) {\n            return {\n                itemsToUpdate: this.findItemsToCollapse(freeSpace),\n                isCollapsed: true\n            };\n        } else {\n            return {\n                itemsToUpdate: this.findItemsToExpand(freeSpace),\n                isCollapsed: false\n            };\n        }\n    }\n\n    private createSubscriptions(): void {\n        merge(\n            nodeResize$(this.elementRef.nativeElement),\n            nodeMutation$(this.elementRef.nativeElement, { attributes: true })\n        )\n            .pipe(\n                sampleTime(this.#timeout),\n                map(() => this.mapItemsStatus()),\n                filter((status) => status.itemsToUpdate.length > 0),\n                runInZone(this.ngZone),\n                takeUntil(this.destroyed$)\n            )\n            .subscribe((status) => {\n                this.applyStatus(status);\n            });\n    }\n\n    private updateItems(): void {\n        const status = this.mapItemsStatus();\n        this.applyStatus(status);\n    }\n\n    private applyStatus(status: ItemsStatus): void {\n        status.itemsToUpdate.forEach((item) => {\n            item.isCollapsed = status.isCollapsed;\n        });\n\n        this.changeDetectorRef.markForCheck();\n    }\n}\n","import { Directive, EventEmitter, Output } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\n\ntype OnSubmit = (event: Event) => boolean;\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[formGroup]',\n    standalone: true\n})\nexport class IcFormGroupExtensionDirective {\n    @Output() beforeNgSubmit = new EventEmitter<void>();\n\n    constructor(private formGroupDirective: FormGroupDirective) {\n        const defaultSubmit = this.formGroupDirective.onSubmit.bind(this.formGroupDirective) as OnSubmit;\n        this.formGroupDirective.onSubmit = (event: Event): boolean => {\n            this.beforeNgSubmit.emit();\n\n            return defaultSubmit(event);\n        };\n    }\n}\n","import { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class LetContext<T> {\n    constructor(private letDirective: IcLetDirective<T>) {}\n\n    get $implicit(): T {\n        return this.letDirective.value;\n    }\n}\n\n@Directive({\n    selector: '[icLet]',\n    standalone: true\n})\nexport class IcLetDirective<T> {\n    @Input('icLet') value!: T;\n\n    constructor(\n        @Inject(ViewContainerRef) viewContainer: ViewContainerRef,\n        @Inject(TemplateRef) templateRef: TemplateRef<LetContext<T>>\n    ) {\n        viewContainer.createEmbeddedView(templateRef, new LetContext<T>(this));\n    }\n\n    static ngTemplateContextGuard<T>(dir: IcLetDirective<T>, ctx: unknown): ctx is LetContext<T> {\n        return true;\n    }\n}\n","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { TriggerTarget } from '@mosaic-design/infosec-components/types';\nimport { isFunction, isNonNullable } from '@mosaic-design/infosec-components/utils';\n\n@Directive({\n    selector: '[icNavbarItemTrigger]',\n    standalone: true\n})\nexport class IcNavbarItemTriggerDirective {\n    @Input('icNavbarItemTrigger') target: TriggerTarget | undefined;\n\n    @HostBinding('class.kbq-active')\n    get isOpened(): boolean {\n        const { target } = this;\n\n        if (isNonNullable(target) && isNonNullable(target.isOpened)) {\n            return isFunction(target.isOpened) ? target.isOpened() : target.isOpened;\n        } else {\n            return false;\n        }\n    }\n\n    @HostListener('click')\n    @HostListener('keydown.enter')\n    @HostListener('keydown.space')\n    toggle(): void {\n        if (this.isOpened) {\n            this.target?.close();\n        } else {\n            this.target?.open();\n        }\n    }\n\n    @HostListener('keydown.esc')\n    hide(): void {\n        if (this.isOpened) {\n            this.target?.close();\n        }\n    }\n}\n","import { ChangeDetectorRef, Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { Comparer } from '@mosaic-design/infosec-components/types';\n\nexport class RedrawWhenChangedContext<T> {\n    value?: T;\n    comparer?: Comparer<T>;\n}\n\n@Directive({\n    selector: '[icRedrawWhenChanged]',\n    standalone: true\n})\nexport class IcRedrawWhenChangedDirective<T> {\n    @Input('icRedrawWhenChanged')\n    set value(value: T) {\n        this.previousValue = this._value;\n        this._value = value;\n\n        this.updateContext();\n        this.updateViewIfChanged();\n    }\n\n    @Input('icRedrawWhenChangedComparer')\n    set comparer(comparer: Comparer<T>) {\n        this._comparer = comparer;\n\n        this.updateContext();\n        this.updateViewIfChanged();\n    }\n\n    private _value: T | undefined;\n    private _comparer: Comparer<T> | undefined;\n\n    private context = new RedrawWhenChangedContext<T>();\n    private previousValue: T | undefined;\n\n    constructor(\n        private view: ViewContainerRef,\n        private templateRef: TemplateRef<RedrawWhenChangedContext<T>>,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {}\n\n    private defaultComparer: Comparer<T> = (previous, current) => previous === current;\n\n    private updateContext(): void {\n        this.context.value = this._value;\n        this.context.comparer = this._comparer || this.defaultComparer;\n    }\n\n    private updateViewIfChanged(): void {\n        const areSame = this._comparer\n            ? this._comparer(this.previousValue, this._value)\n            : this.defaultComparer(this.previousValue, this._value);\n\n        if (!areSame) {\n            this.view.clear();\n            this.view.createEmbeddedView(this.templateRef, this.context);\n            this.changeDetectorRef.markForCheck();\n        }\n    }\n}\n","import { Directive, Inject, Input, OnInit } from '@angular/core';\nimport { FlatTreeControl, KbqTreeFlatDataSource, KbqTreeSelection } from '@koobiq/components/tree';\nimport { filter, pairwise, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { TREE_DISPLAY_STATE_MANAGER } from '@mosaic-design/infosec-components/tokens';\nimport { BaseTreeDisplayStateManagerService } from '@mosaic-design/infosec-components/types';\nimport { isNonNullable, isObjectEmpty } from '@mosaic-design/infosec-components/utils';\n\n/**\n * @description Директива сохранения состояния дерева. Предназначена для использования в компоненте kbq-tree-selection.\n * Директива при навешивании на дерево сохраняет данные через наш менеджер состояний передаваемый через DI на BE,\n * и восстанавливает состояние дерева при инициализации.\n * настройки хранилища задаются в значении директивы\n * Состояние дерева не сохраняется при фильтрации.\n * Дерево сохраняет состояние даже если нода выделена программно в скрытой ветке. В этом случае ветка раскроется\n * до этой ноды и сохранит текущее состояние.\n * Так же раскрывая ноду часть узлов может быть схлопнута, часть нет.\n * Зависит от того какое состояние пользователь задал у дочерних элементов.\n * При создании ноды в схлопнутой папке если ноду нельзя выделить, то дерево не раскроется.\n */\n@Directive({\n    selector: '[icSaveTreeDisplayState]',\n    standalone: true,\n    providers: [DestroyService]\n})\nexport class IcSaveTreeDisplayStateDirective<T, StorageSettings> implements OnInit {\n    private storageSettings!: StorageSettings;\n    private treeState: Record<string, boolean> = {};\n    private treeControl!: FlatTreeControl<T>;\n    private dataSource!: KbqTreeFlatDataSource<T, T>;\n    private selectedNodes: T[] = [];\n    private isRestoringStateNow = false;\n    private currentFilterValue: string | T[] | null = '';\n\n    @Input() set icSaveTreeDisplayState(storageSettings: StorageSettings) {\n        if (this.treeDisplayStateManagerService.validateKey(storageSettings)) {\n            this.storageSettings = storageSettings;\n        }\n    }\n\n    constructor(\n        private tree: KbqTreeSelection,\n        @Inject(TREE_DISPLAY_STATE_MANAGER)\n        private treeDisplayStateManagerService: BaseTreeDisplayStateManagerService<StorageSettings>,\n        private destroy$: DestroyService\n    ) {}\n\n    ngOnInit(): void {\n        this.treeControl = this.tree.treeControl as FlatTreeControl<T>;\n        this.dataSource = this.tree.dataSource as KbqTreeFlatDataSource<T, T>;\n\n        this.dataSource.flattenedData.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.restoreState();\n            this.openPathForRoot(this.selectedNodes, true);\n        });\n\n        this.tree.selectionModel.changed.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.selectedNodes = this.tree.selectionModel.selected\n                .map((selected) =>\n                    this.dataSource.flattenedData.value.find((x) => {\n                        const checkValue: unknown = this.isSelectionModelOption(selected)\n                            ? selected.value\n                            : this.treeControl.getValue(selected as T);\n\n                        return this.treeControl.getValue(x) === checkValue;\n                    })\n                )\n                .filter(isNonNullable) as T[];\n            this.openPathForRoot(this.selectedNodes, true);\n        });\n\n        this.treeDisplayStateManagerService\n            .getStateValue(this.storageSettings)\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((treeDisplayState) => {\n                this.treeState = treeDisplayState;\n                this.restoreState();\n            });\n\n        this.treeControl.expansionModel.changed\n            .pipe(\n                filter(() => !this.isRestoringStateNow),\n                takeUntil(this.destroy$)\n            )\n            .subscribe((expansionModel) => {\n                if (isNonNullable(this.currentFilterValue)) {\n                    const { added, removed } = expansionModel;\n                    const changedItems = [...added, ...removed];\n                    const data = this.treeState;\n\n                    changedItems.forEach((node) => {\n                        if (node) {\n                            const nodeId = this.getNodeId(node);\n                            data[nodeId] = !removed.find(\n                                (x) => this.treeControl.getValue(node) === this.treeControl.getValue(x)\n                            );\n                        }\n                    });\n\n                    this.treeState = data;\n                    this.saveNewState(data);\n                }\n            });\n\n        this.treeControl.filterValue\n            .asObservable()\n            .pipe(pairwise(), takeUntil(this.destroy$))\n            .subscribe(([oldValue, newValue]) => {\n                this.currentFilterValue = newValue;\n                if (oldValue && !isNonNullable(newValue)) {\n                    this.restoreState();\n                }\n            });\n    }\n\n    /**\n     * Сохранить новое состояние дерева в менеджере состояний\n     *\n     * @param data - новое состояние элементов дерева\n     */\n    private saveNewState(data: Record<string, boolean>): void {\n        this.treeDisplayStateManagerService.setStateValue(this.storageSettings, data);\n    }\n\n    /**\n     * Получить уникальный идентификатор элемента дерева\n     *\n     * @description Данный метод необходим из-за того, что нельзя гарантировать наличие поля id в элементе дерева\n     * @param node - элемент дерева\n     * @returns\n     */\n    private getNodeId(node: T): string {\n        return JSON.stringify(this.treeControl.getValue(node));\n    }\n\n    /**\n     * Применить новые настройки состояния дерева\n     */\n    private restoreState(): void {\n        if (!isObjectEmpty(this.treeState)) {\n            this.isRestoringStateNow = true;\n            this.treeControl.dataNodes.forEach((node) => {\n                const id = this.getNodeId(node);\n                if (this.treeState[id]) {\n                    this.treeControl.expand(node);\n                }\n            });\n            this.isRestoringStateNow = false;\n        }\n    }\n\n    /**\n     * Открытие всех родительских элементов дерева\n     *\n     * @param node - элемент дерева\n     */\n    private setVisibleToRoot(node: T): void {\n        const parents: T[] = [];\n        this.treeControl.getParents(node, parents);\n        this.treeControl.expand(node);\n        parents.forEach((parent) => {\n            this.treeControl.expand(parent);\n        });\n    }\n\n    /**\n     * Открытие всех родительских элементов для выбранных элементов дерева\n     *\n     * @param selectedNodes - выбранные элементы дерева\n     * @param saveState - флаг сохранения состояний\n     */\n    private openPathForRoot(selectedNodes: T[], saveState?: boolean): void {\n        if (selectedNodes.length) {\n            selectedNodes.forEach((node) => {\n                if (!node) return;\n\n                const parent = this.getParent(node);\n                if (parent) {\n                    this.setVisibleToRoot(parent);\n                }\n\n                if (saveState) {\n                    this.openTreeBranch(node);\n                }\n            });\n        }\n    }\n\n    /**\n     * Открыть ветку дерева\n     *\n     * @param node элемент дерева\n     */\n    private openTreeBranch(node: T): void {\n        const parent = this.getParent(node);\n        if (parent) {\n            const parentValue = this.getNodeId(parent);\n            this.treeState[parentValue] = false;\n            this.openTreeBranch(parent);\n        }\n    }\n\n    /**\n     * Получить родительский элемент по элементу дерева если он есть\n     *\n     * @param node - элемент дерева\n     * @returns родительский элемент если он существует\n     */\n    private getParent(node: T): T | undefined {\n        const parents: T[] = [];\n        let parent: T | undefined;\n        this.treeControl.getParents(node, parents);\n\n        if (parents.length) {\n            parent = parents[parents.length - 1];\n        }\n\n        return parent;\n    }\n\n    /**\n     * Проверить принадлежит ли элемент к SelectionModelOption\n     *\n     * @param item выбранный элемент\n     * @returns принадлежит ли элемент к SelectionModelOption\n     */\n    private isSelectionModelOption(item: object): boolean {\n        return 'value' in item && 'id' in item;\n    }\n}\n","import { Directive, ElementRef, NgZone, Renderer2 } from '@angular/core';\nimport { takeUntil } from 'rxjs';\n\nimport { DestroyService, ThemeService } from '@mosaic-design/infosec-components/services';\nimport { Theme } from '@mosaic-design/infosec-components/types';\n\n@Directive({\n    selector: '[icTheme]',\n    providers: [DestroyService],\n    standalone: true\n})\nexport class IcThemeDirective {\n    constructor(\n        private themeService: ThemeService,\n        private renderer: Renderer2,\n        private element: ElementRef<Node>,\n        private ngZone: NgZone,\n        private destroyed$: DestroyService\n    ) {\n        this.ngZone.runOutsideAngular(() => {\n            this.themeService.theme$.pipe(takeUntil(this.destroyed$)).subscribe((value) => {\n                const remove = value === Theme.Dark ? Theme.Light : Theme.Dark;\n                const add = value === Theme.Dark ? Theme.Dark : Theme.Light;\n\n                const node = this.element.nativeElement;\n\n                this.renderer.removeClass(node, remove);\n                this.renderer.addClass(node, add);\n            });\n        });\n    }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, NgZone, Output } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, filter, map, takeUntil } from 'rxjs';\n\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { WidthChangeEvent } from '@mosaic-design/infosec-components/types';\nimport { nodeResize$, runInZone } from '@mosaic-design/infosec-components/utils';\n\n@Directive({\n    selector: '[icWidthChange]',\n    standalone: true,\n    providers: [DestroyService]\n})\nexport class IcWidthChangeDirective implements AfterViewInit {\n    @Output('icWidthChange') widthChange = new EventEmitter<WidthChangeEvent>();\n\n    private readonly timeout = 300;\n    private lastWidth = '';\n\n    constructor(\n        private element: ElementRef<HTMLElement>,\n        private destroyed$: DestroyService,\n        private ngZone: NgZone\n    ) {}\n\n    private getCurrentWidth(): number {\n        const element = this.element.nativeElement;\n        const rect = element.getBoundingClientRect();\n\n        return rect.width;\n    }\n\n    private formatWidth(width: number | undefined): string {\n        return `${width ?? 0}px`;\n    }\n\n    ngAfterViewInit(): void {\n        this.lastWidth = this.formatWidth(this.getCurrentWidth());\n\n        nodeResize$(this.element.nativeElement)\n            .pipe(\n                debounceTime(this.timeout),\n                map((records) => this.formatWidth(records[0]?.contentRect.width ?? this.getCurrentWidth())),\n                distinctUntilChanged(),\n                filter((width) => width !== this.lastWidth),\n                runInZone(this.ngZone),\n                takeUntil(this.destroyed$)\n            )\n            .subscribe((width) => {\n                this.widthChange.emit({\n                    oldWidth: this.lastWidth,\n                    width\n                });\n\n                this.lastWidth = width;\n            });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":";;;;;;;;;;;;;MAOa,oBAAoB,CAAA;AAEjB,IAAA,OAAA,CAAA;AACY,IAAA,WAAA,CAAA;IAFxB,WACY,CAAA,OAAmB,EACP,WAAwB,EAAA;QADpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACP,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC5C;IAEJ,eAAe,GAAA;QACX,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAA4B,CAAC;;AAEhE,YAAA,IAAI,aAAa,CAAC,OAAO,KAAK,cAAc,EAAE;AAC1C,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;aAC5B;iBAAM;gBACH,aAAa,CAAC,KAAK,EAAE,CAAC;aACzB;AACL,SAAC,CAAC,CAAC;KACN;2HAhBQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAIQ,QAAQ;;;MCDJ,oBAAoB,CAAA;IAC7B,IACI,KAAK,CAAC,KAAyB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;KAC5B;IAEO,KAAK,GAAG,EAAE,CAAC;AAET,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;IAE3B,KAAK,GAAG,cAAc,CAAC;IAEtB,OAAO,GAAA;AAC1B,QAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;aAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;aACb,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;KACV;2HAlBQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAGO,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,aAAa,CAAA;gBAOV,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAEe,KAAK,EAAA,CAAA;sBAA1B,WAAW;uBAAC,OAAO,CAAA;gBAEG,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO,CAAA;;;MCNZ,sCAAsC,CAAA;AASnC,IAAA,IAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACgB,IAAA,SAAA,CAAA;AAChB,IAAA,UAAA,CAAA;IAZZ,IACI,WAAW,CAAC,KAA0B,EAAA;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;IAEpD,WACY,CAAA,IAAsB,EACtB,WAAiC,EACjC,UAAmC,EACnB,SAAoB,EACpC,UAA0B,EAAA;QAJ1B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;QACtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QACjC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;QAElC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;YAClG,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,QAAQ,EAAE,CAAC;aACnB;iBAAM;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC;aACjB;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE9C,QAAA,OAAO,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;KAClF;AAED,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;KAClD;IAEO,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;IAEO,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAClD;AAzCQ,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sCAAsC,uGAYnC,MAAM,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAZT,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mCAAA,EAAA,EAAA,SAAA,EAHpC,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGlB,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBARlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,mCAAmC;AAC7C,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAaQ,MAAM;2BAAC,MAAM,CAAA;wEAVd,WAAW,EAAA,CAAA;sBADd,KAAK;;;MCFG,mCAAmC,CAAA;AA8BjC,IAAA,UAAA,CAAA;AACiB,IAAA,SAAA,CAAA;AA9B0B,IAAA,OAAO,CAAqD;AAElH,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAEI,WAAW,CAAC,KAAc,EAAA;QAC1B,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC;SAC1C;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;SACpC;KACJ;IAED,YAAY,GAAG,KAAK,CAAC;AAErB,IAAA,IAAI,mBAAmB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;KACzC;AAED,IAAA,oBAAoB,CAAqB;IAEzC,WACW,CAAA,UAAmC,EAClB,SAAoB,EAAA;QADrC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QAClB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;KAC5C;AAEJ,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAE9C,QAAA,OAAO,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;KAClF;AAED,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;KACnC;AA1CQ,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,4CA+BhC,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA/BT,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,uTAC9B,sCAAsC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAD3C,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAP/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,gCAAgC;AAC1C,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAgCQ,MAAM;2BAAC,MAAM,CAAA;yCA9BoC,OAAO,EAAA,CAAA;sBAA5D,YAAY;uBAAC,sCAAsC,CAAA;gBAQhD,WAAW,EAAA,CAAA;sBAFd,WAAW;uBAAC,gDAAgD,CAAA;;sBAC5D,KAAK;;;MCgBG,+BAA+B,CAAA;AAQ5B,IAAA,UAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AACgB,IAAA,SAAA,CAAA;AAChB,IAAA,MAAA,CAAA;AACA,IAAA,UAAA,CAAA;AAXmF,IAAA,gBAAgB,CAE/F;IAEP,QAAQ,GAAG,GAAG,CAAC;IAExB,WACY,CAAA,UAAmC,EACnC,iBAAoC,EACpB,SAAoB,EACpC,MAAc,EACd,UAA0B,EAAA;QAJ1B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;KAClC;AAEJ,IAAA,IAAY,KAAK,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;KACtE;AAED,IAAA,IAAY,eAAe,GAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACxD,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAE7E,QAAA,QACI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EACzF,CAAC,CACJ,GAAG,QAAQ,EACd;KACL;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;AACvB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAEO,IAAA,mBAAmB,CAAC,SAAiB,EAAA;QACzC,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,MAAM,MAAM,GAA0C,EAAE,CAAC;QAEzD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAErG,QAAA,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE;AAClC,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClB,YAAA,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AAEpB,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,MAAM;aACT;SACJ;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACvC,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,MAAM,MAAM,GAA0C,EAAE,CAAC;QAEzD,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAC/F,QAAA,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;AAE1C,QAAA,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;YACxC,MAAM,SAAS,GAAG,aAAa,CAAC,mBAAmB,GAAG,aAAa,CAAC,KAAK,CAAC;AAE1E,YAAA,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,EAAE;AACxB,gBAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3B,KAAK,IAAI,SAAS,CAAC;aACtB;iBAAM;gBACH,MAAM;aACT;SACJ;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,cAAc,GAAA;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACpD,QAAA,MAAM,gBAAgB,GAAG,SAAS,GAAG,CAAC,CAAC;QAEvC,IAAI,gBAAgB,EAAE;YAClB,OAAO;AACH,gBAAA,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAClD,gBAAA,WAAW,EAAE,IAAI;aACpB,CAAC;SACL;aAAM;YACH,OAAO;AACH,gBAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAChD,gBAAA,WAAW,EAAE,KAAK;aACrB,CAAC;SACL;KACJ;IAEO,mBAAmB,GAAA;QACvB,KAAK,CACD,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAC1C,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACrE;aACI,IAAI,CACD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EACzB,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,EAChC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EACnD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;AACA,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;KACV;IAEO,WAAW,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAC5B;AAEO,IAAA,WAAW,CAAC,MAAmB,EAAA;QACnC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAClC,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACzC;AA7HQ,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,6EAU5B,MAAM,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAVT,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAN7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,+EAOO,mCAAmC,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAD5D,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAR3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;oBACpC,SAAS,EAAE,CAAC,cAAc,CAAC;AAC3B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,0BAA0B;AACpC,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAWQ,MAAM;2BAAC,MAAM,CAAA;6FAT6E,gBAAgB,EAAA,CAAA;sBAA9G,eAAe;uBAAC,UAAU,CAAC,MAAM,mCAAmC,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;;MC7BpF,6BAA6B,CAAA;AAGlB,IAAA,kBAAA,CAAA;AAFV,IAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEpD,IAAA,WAAA,CAAoB,kBAAsC,EAAA;QAAtC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACtD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAa,CAAC;QACjG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,KAAY,KAAa;AACzD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAE3B,YAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,CAAC;KACL;2HAVQ,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;yFAEa,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MCTE,UAAU,CAAA;AACC,IAAA,YAAA,CAAA;AAApB,IAAA,WAAA,CAAoB,YAA+B,EAAA;QAA/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAmB;KAAI;AAEvD,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;AACJ,CAAA;MAMY,cAAc,CAAA;AACP,IAAA,KAAK,CAAK;IAE1B,WAC8B,CAAA,aAA+B,EACpC,WAAuC,EAAA;QAE5D,aAAa,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,UAAU,CAAI,IAAI,CAAC,CAAC,CAAC;KAC1E;AAED,IAAA,OAAO,sBAAsB,CAAI,GAAsB,EAAE,GAAY,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC;KACf;2HAZQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAIX,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAChB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GALd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;0BAKQ,MAAM;2BAAC,gBAAgB,CAAA;;0BACvB,MAAM;2BAAC,WAAW,CAAA;yCAJP,KAAK,EAAA,CAAA;sBAApB,KAAK;uBAAC,OAAO,CAAA;;;MCNL,4BAA4B,CAAA;AACP,IAAA,MAAM,CAA4B;AAEhE,IAAA,IACI,QAAQ,GAAA;AACR,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAExB,QAAA,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACzD,YAAA,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;SAC5E;aAAM;AACH,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ;IAKD,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;SACxB;aAAM;AACH,YAAA,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;SACvB;KACJ;IAGD,IAAI,GAAA;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;SACxB;KACJ;2HA9BQ,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAEiC,MAAM,EAAA,CAAA;sBAAnC,KAAK;uBAAC,qBAAqB,CAAA;gBAGxB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,kBAAkB,CAAA;gBAc/B,MAAM,EAAA,CAAA;sBAHL,YAAY;uBAAC,OAAO,CAAA;;sBACpB,YAAY;uBAAC,eAAe,CAAA;;sBAC5B,YAAY;uBAAC,eAAe,CAAA;gBAU7B,IAAI,EAAA,CAAA;sBADH,YAAY;uBAAC,aAAa,CAAA;;;MC9BlB,wBAAwB,CAAA;AACjC,IAAA,KAAK,CAAK;AACV,IAAA,QAAQ,CAAe;AAC1B,CAAA;MAMY,4BAA4B,CAAA;AAyBzB,IAAA,IAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,iBAAA,CAAA;IA1BZ,IACI,KAAK,CAAC,KAAQ,EAAA;AACd,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;IAED,IACI,QAAQ,CAAC,QAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAEO,IAAA,MAAM,CAAgB;AACtB,IAAA,SAAS,CAA0B;AAEnC,IAAA,OAAO,GAAG,IAAI,wBAAwB,EAAK,CAAC;AAC5C,IAAA,aAAa,CAAgB;AAErC,IAAA,WAAA,CACY,IAAsB,EACtB,WAAqD,EACrD,iBAAoC,EAAA;QAFpC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;QACtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0C;QACrD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;KAC5C;IAEI,eAAe,GAAgB,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,KAAK,OAAO,CAAC;IAE3E,aAAa,GAAA;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC;KAClE;IAEO,mBAAmB,GAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;AAC1B,cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;AACjD,cAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;SACzC;KACJ;2HA/CQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,6BAAA,EAAA,UAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;+IAGO,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,qBAAqB,CAAA;gBAUxB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,6BAA6B,CAAA;;;ACdxC;;;;;;;;;;;AAWG;MAMU,+BAA+B,CAAA;AAgB5B,IAAA,IAAA,CAAA;AAEA,IAAA,8BAAA,CAAA;AACA,IAAA,QAAA,CAAA;AAlBJ,IAAA,eAAe,CAAmB;IAClC,SAAS,GAA4B,EAAE,CAAC;AACxC,IAAA,WAAW,CAAsB;AACjC,IAAA,UAAU,CAA+B;IACzC,aAAa,GAAQ,EAAE,CAAC;IACxB,mBAAmB,GAAG,KAAK,CAAC;IAC5B,kBAAkB,GAAwB,EAAE,CAAC;IAErD,IAAa,sBAAsB,CAAC,eAAgC,EAAA;QAChE,IAAI,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;SAC1C;KACJ;AAED,IAAA,WAAA,CACY,IAAsB,EAEtB,8BAAmF,EACnF,QAAwB,EAAA;QAHxB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;QAEtB,IAA8B,CAAA,8BAAA,GAA9B,8BAA8B,CAAqD;QACnF,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgB;KAChC;IAEJ,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAiC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAyC,CAAC;AAEtE,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ;AACjD,iBAAA,GAAG,CAAC,CAAC,QAAQ,KACV,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC3C,gBAAA,MAAM,UAAU,GAAY,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;sBAC3D,QAAQ,CAAC,KAAK;sBACd,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAa,CAAC,CAAC;gBAE/C,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;AACvD,aAAC,CAAC,CACL;iBACA,MAAM,CAAC,aAAa,CAAQ,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACnD,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,8BAA8B;AAC9B,aAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;AACnC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,gBAAgB,KAAI;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAClC,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO;AAClC,aAAA,IAAI,CACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EACvC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC3B;AACA,aAAA,SAAS,CAAC,CAAC,cAAc,KAAI;AAC1B,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACxC,gBAAA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;gBAC1C,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;AAC5C,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAE5B,gBAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBAC1B,IAAI,IAAI,EAAE;wBACN,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpC,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CACxB,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1E,CAAC;qBACL;AACL,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3B;AACL,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,WAAW,CAAC,WAAW;AACvB,aAAA,YAAY,EAAE;aACd,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1C,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAI;AAChC,YAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;YACnC,IAAI,QAAQ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;gBACtC,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;AACL,SAAC,CAAC,CAAC;KACV;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,IAA6B,EAAA;QAC9C,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;KACjF;AAED;;;;;;AAMG;AACK,IAAA,SAAS,CAAC,IAAO,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1D;AAED;;AAEG;IACK,YAAY,GAAA;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACxC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChC,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBACjC;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACpC;KACJ;AAED;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,IAAO,EAAA;QAC5B,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;AAED;;;;;AAKG;IACK,eAAe,CAAC,aAAkB,EAAE,SAAmB,EAAA;AAC3D,QAAA,IAAI,aAAa,CAAC,MAAM,EAAE;AACtB,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC3B,gBAAA,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAElB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;iBACjC;gBAED,IAAI,SAAS,EAAE;AACX,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBAC7B;AACL,aAAC,CAAC,CAAC;SACN;KACJ;AAED;;;;AAIG;AACK,IAAA,cAAc,CAAC,IAAO,EAAA;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE;YACR,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC/B;KACJ;AAED;;;;;AAKG;AACK,IAAA,SAAS,CAAC,IAAO,EAAA;QACrB,MAAM,OAAO,GAAQ,EAAE,CAAC;AACxB,QAAA,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAE3C,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACxC;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;AAKG;AACK,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACvC,QAAA,OAAO,OAAO,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC;KAC1C;AA3MQ,uBAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,oDAiB5B,0BAA0B,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAjB7B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAF7B,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAElB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC9B,iBAAA,CAAA;;0BAkBQ,MAAM;2BAAC,0BAA0B,CAAA;wEARzB,sBAAsB,EAAA,CAAA;sBAAlC,KAAK;;;MCxBG,gBAAgB,CAAA;AAEb,IAAA,YAAA,CAAA;AACA,IAAA,QAAA,CAAA;AACA,IAAA,OAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,UAAA,CAAA;IALZ,WACY,CAAA,YAA0B,EAC1B,QAAmB,EACnB,OAAyB,EACzB,MAAc,EACd,UAA0B,EAAA;QAJ1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QACzB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;AAElC,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1E,gBAAA,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/D,gBAAA,MAAM,GAAG,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AAE5D,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;gBAExC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;2HAnBQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAHd,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,WAAW;oBACrB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCEY,sBAAsB,CAAA;AAOnB,IAAA,OAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,MAAA,CAAA;AARa,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB,CAAC;IAE3D,OAAO,GAAG,GAAG,CAAC;IACvB,SAAS,GAAG,EAAE,CAAC;AAEvB,IAAA,WAAA,CACY,OAAgC,EAChC,UAA0B,EAC1B,MAAc,EAAA;QAFd,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAChC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;QAC1B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACtB;IAEI,eAAe,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAE7C,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAEO,IAAA,WAAW,CAAC,KAAyB,EAAA;AACzC,QAAA,OAAO,CAAG,EAAA,KAAK,IAAI,CAAC,IAAI,CAAC;KAC5B;IAED,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAE1D,QAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAClC,aAAA,IAAI,CACD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAC1B,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAC3F,oBAAoB,EAAE,EACtB,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,EAC3C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B;AACA,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClB,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,KAAK;AACR,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,SAAC,CAAC,CAAC;KACV;2HA3CQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAFpB,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAElB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,cAAc,CAAC;AAC9B,iBAAA,CAAA;mIAE4B,WAAW,EAAA,CAAA;sBAAnC,MAAM;uBAAC,eAAe,CAAA;;;ACb3B;;AAEG;;;;"}