{"version":3,"file":"kif-lib-autocomplete.mjs","sources":["../../../projects/kif-lib/autocomplete/components/tooltip/tooltip-content.component.ts","../../../projects/kif-lib/autocomplete/components/tooltip/tooltip-content.component.html","../../../projects/kif-lib/autocomplete/components/tooltip/directive/tooltip.directive.ts","../../../projects/kif-lib/autocomplete/autocomplete.component.ts","../../../projects/kif-lib/autocomplete/autocomplete.component.html","../../../projects/kif-lib/autocomplete/components/tooltip/tooltip.module.ts","../../../projects/kif-lib/autocomplete/autocomplete.module.ts","../../../projects/kif-lib/autocomplete/public-api.ts","../../../projects/kif-lib/autocomplete/kif-lib-autocomplete.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, signal, TemplateRef } from '@angular/core';\n\n@Component({\n    selector: 'kit-tooltip-content',\n    templateUrl: './tooltip-content.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n\n})\nexport class TooltipContentComponent {\n    @Input() title?: string;\n    @Input() description?: string;\n    @Input() templateRef?: TemplateRef<any>;\n    @Input() positionType = 'top';\n    @Input() offset = 8;\n    \n    private visibleState = signal(false);\n    private positionCoords = signal({ top: 0, left: 0 });\n    \n    // Expose signal readers for the template\n    visible = this.visibleState.asReadonly();\n    positionState = this.positionCoords.asReadonly();\n    \n    show(x: number, y: number, position?: string): void {\n        if (position) {\n            this.positionType = position;\n        }\n        \n        this.calculatePosition(x, y);\n        this.visibleState.set(true);\n    }\n    \n    hide(): void {\n        this.visibleState.set(false);\n    }\n    \n    private calculatePosition(x: number, y: number): void {\n        let top = 0;\n        let left = 0;\n        \n        // Get tooltip dimensions\n        const tooltipElement = this.elementRef.nativeElement.querySelector('.tooltip-container');\n        const tooltipHeight = tooltipElement.offsetHeight;\n        const tooltipWidth = tooltipElement.offsetWidth;\n        \n        switch (this.positionType) {\n            case 'top':\n                top = y - tooltipHeight - this.offset;\n                left = x - (tooltipWidth / 2);\n                break;\n            case 'bottom':\n                top = y + this.offset;\n                left = x - (tooltipWidth / 2);\n                break;\n            case 'left':\n                top = y - (tooltipHeight / 2);\n                left = x - tooltipWidth - this.offset;\n                break;\n            case 'right':\n                top = y - (tooltipHeight / 2);\n                left = x + this.offset;\n                break;\n        }\n        \n        // Ensure tooltip doesn't go outside viewport\n        const viewportWidth = window.innerWidth;\n        const viewportHeight = window.innerHeight;\n        \n        if (left < 0) left = 0;\n        if (left + tooltipWidth > viewportWidth) left = viewportWidth - tooltipWidth;\n        if (top < 0) top = 0;\n        if (top + tooltipHeight > viewportHeight) top = viewportHeight - tooltipHeight;\n        \n        this.positionCoords.set({ top, left });\n    }\n    \n    constructor(private elementRef: ElementRef) {}\n}\n\n","<div \nclass=\"tooltip-container d-flex flex-column gap-2\" \n[class.visible]=\"visible()\" \n\n[style.top.px]=\"positionState().top\" \n[style.left.px]=\"positionState().left\">\n@if (title) {\n  <div class=\"tooltip-title\">{{ title }}</div>\n}\n@if (description) {\n  <div class=\"tooltip-description\">{{ description }}</div>\n}\n@if (templateRef) {\n  <ng-container [ngTemplateOutlet]=\"templateRef\"></ng-container>\n}","import { ComponentRef, Directive, ElementRef, HostListener, inject, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { TooltipContentComponent } from '../tooltip-content.component';\n\n@Directive({\n    selector: '[kitTooltip]',\n    exportAs: 'kitTooltip'\n})\nexport class TooltipDirective implements OnDestroy {\n    @Input() kitTooltip = '';\n    @Input() tooltipDescription = '';\n    @Input() tooltipTemplate?: TemplateRef<any>;\n    @Input() tooltipPosition: 'top' | 'bottom' | 'left' | 'right' = 'top';\n    @Input() tooltipOffset = 8;\n    @Input() tooltipDelay = 100;\n  \n    private tooltipRef?: ComponentRef<TooltipContentComponent>;\n    private showTimeoutId?: number;\n    private hideTimeoutId?: number;\n    private viewContainerRef = inject(ViewContainerRef);\n    private document = inject(DOCUMENT);\n  \n    constructor(private elementRef: ElementRef) {}\n  \n    @HostListener('mouseenter')\n    onMouseEnter(): void {\n        this.clearTimeouts();\n        \n        this.showTimeoutId = window.setTimeout(() => {\n            this.show();\n        }, this.tooltipDelay);\n    }\n      \n    @HostListener('mouseleave')\n    onMouseLeave(): void {\n        this.clearTimeouts();\n        \n        if (this.tooltipRef) {\n            this.hideTimeoutId = window.setTimeout(() => {\n                this.hide();\n            }, 100);\n        }\n    }\n    \n    private show(): void {\n        if (this.tooltipRef) {\n            return;\n        }\n      \n        // Create tooltip component\n        this.tooltipRef = this.viewContainerRef.createComponent(TooltipContentComponent);\n        \n        // Set inputs\n        this.tooltipRef.instance.title = this.kitTooltip;\n        this.tooltipRef.instance.description = this.tooltipDescription;\n        this.tooltipRef.instance.templateRef = this.tooltipTemplate;\n        this.tooltipRef.instance.positionType = this.tooltipPosition;\n        this.tooltipRef.instance.offset = this.tooltipOffset;\n        \n        // Append to body to avoid clipping issues\n        this.document.body.appendChild(this.tooltipRef.location.nativeElement);\n        \n        // Calculate position and show\n        const rect = this.elementRef.nativeElement.getBoundingClientRect();\n        let x = rect.left + rect.width / 2;\n        let y = 0;\n        \n        switch (this.tooltipPosition) {\n            case 'top':\n                y = rect.top;\n                break;\n            case 'bottom':\n                y = rect.bottom;\n                break;\n            case 'left':\n            case 'right':\n                y = rect.top + rect.height / 2;\n                break;\n        }\n        \n        if (this.tooltipPosition === 'left') {\n            x = rect.left;\n        } else if (this.tooltipPosition === 'right') {\n            x = rect.right;\n        }\n        \n        // Give the browser a chance to render before calculating position\n        setTimeout(() => {\n            this.tooltipRef?.instance.show(x, y, this.tooltipPosition);\n        });\n    }\n    \n    private hide(): void {\n        if (this.tooltipRef) {\n            this.tooltipRef.instance.hide();\n          \n            setTimeout(() => {\n                this.tooltipRef?.destroy();\n                this.tooltipRef = undefined;\n            }, 150);\n        }\n    }\n    \n    private clearTimeouts(): void {\n        if (this.showTimeoutId) {\n            clearTimeout(this.showTimeoutId);\n            this.showTimeoutId = undefined;\n        }\n        \n        if (this.hideTimeoutId) {\n            clearTimeout(this.hideTimeoutId);\n            this.hideTimeoutId = undefined;\n        }\n    }\n    \n    ngOnDestroy(): void {\n        this.clearTimeouts();\n        \n        if (this.tooltipRef) {\n            this.tooltipRef.destroy();\n        }\n    }\n}\n","// autocomplete.component.ts\nimport { Component, Input, OnChanges, OnInit, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { Observable, map, startWith, of } from 'rxjs';\nimport { Search, CircleAlert } from 'lucide-angular';\n\n@Component({\n    selector: 'kit-autocomplete',\n    templateUrl: './autocomplete.component.html',\n})\nexport class AutocompleteComponent implements OnInit, OnChanges {\n    @Input() options?: any[] = [];\n    @Input() placeholderText: string = '';\n    @Input() control?: any;\n    @Input() label: string = '';\n    @Input() minlength?: number;\n    @Input() maxlength?: number;\n    @Input() messageErrorCustom: string = '';\n    @Input() multiSelectMode: boolean = false;\n    @Input() deselectOption?: any;\n    @Input() allowDeselect: boolean = true;\n    @Input() descriptionTooltip: string = '';\n    @Input() enableFontPreview: boolean = false;\n    @Output() optionSelected = new EventEmitter<any>();\n    \n    filteredOptions: Observable<any[]> | undefined;\n    selectedOptions: Set<any> = new Set();\n    readonly searchI = Search;\n    readonly infoCircle = CircleAlert;\n\n    ngOnInit() {\n        this.setupFilteredOptions();\n    }\n    \n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['options']) {\n            this.setupFilteredOptions();\n        }\n        if (changes['multiSelectMode']) {\n            this.selectedOptions.clear();\n        }\n        if (changes['deselectOption'] && changes['deselectOption'].currentValue && this.multiSelectMode) {\n            const optionToDeselect = changes['deselectOption'].currentValue;\n            this.deselectFromParent(optionToDeselect);\n        }\n    }\n\n    private setupFilteredOptions(): void {\n        if (!this.control) {\n            this.filteredOptions = of(this.options?.slice() || []);\n            return;\n        }\n\n        this.filteredOptions = this.control.valueChanges.pipe(\n            startWith(''),\n            map((value: any) => {\n                if (!value || value === '' || this.multiSelectMode) {\n                    return this.options?.slice() || [];\n                }\n                \n                const label = typeof value === 'string' ? value : value?.label;\n                return label ? this._filter(label as string) : this.options?.slice() || [];\n            }),\n        );\n    }\n    \n    getDisplayValue(option: any): string {\n        if (this.multiSelectMode) {\n            return '';\n        }\n        return option && option.label ? option.label : '';\n    }\n\n    isOptionSelected(option: any): boolean {\n        if (!this.multiSelectMode) return false;\n        \n        return Array.from(this.selectedOptions).some(selected => \n            this.compareOptions(selected, option)\n        );\n    }\n\n    private compareOptions(option1: any, option2: any): boolean {\n        if (option1.id && option2.id) {\n            return option1.id === option2.id;\n        }\n        if (option1.value && option2.value) {\n            return option1.value === option2.value;\n        }\n        return option1.label === option2.label;\n    }\n\n    private deselectFromParent(optionToDeselect: any): void {\n\n\n        const wasSelected = this.isOptionSelected(optionToDeselect);\n        \n        if (wasSelected) {\n            this.selectedOptions.forEach(selected => {\n                if (this.compareOptions(selected, optionToDeselect)) {\n                    this.selectedOptions.delete(selected);\n                }\n            });\n            \n            this.optionSelected.emit({\n                option: optionToDeselect,\n                selectedOptions: Array.from(this.selectedOptions),\n                action: 'removed'\n            });\n        }\n    }\n\n    onOptionSelected(option: any): void {\n        if (this.multiSelectMode) {\n            const isCurrentlySelected = this.isOptionSelected(option);\n            \n\n            if (isCurrentlySelected && !this.allowDeselect) {\n                return; \n            }\n            \n            if (isCurrentlySelected) {\n\n                this.selectedOptions.forEach(selected => {\n                    if (this.compareOptions(selected, option)) {\n                        this.selectedOptions.delete(selected);\n                    }\n                });\n                \n                this.optionSelected.emit({\n                    option: option,\n                    selectedOptions: Array.from(this.selectedOptions),\n                    action: 'removed'\n                });\n            } else {\n\n                this.selectedOptions.add(option);\n                this.control?.setValue('');\n                this.optionSelected.emit({\n                    option: option,\n                    selectedOptions: Array.from(this.selectedOptions),\n                    action: 'added'\n                });\n            }\n        } else {\n            this.selectedOptions.clear();\n            this.optionSelected.emit(option);\n        }\n    }\n\n    private _filter(label: string): any[] {\n        const filterValue = label.toLowerCase();\n        \n        return this.options?.filter(option => option.label.toLowerCase().includes(filterValue)) || [];\n    }\n\n    isControlRequired(): boolean {\n        if(this.control && this.control.validator) {\n            const validator = this.control.validator({} as any);\n            return !!(validator && validator.required);\n        }\n        return false\n    \n    }\n}","<!-- autocomplete.component.html -->\n@if(label) {\n    <div class=\"w-100 d-flex justify-content-between align-items-center h-label label-mb \">\n        <mat-label [class.required]=\"isControlRequired()\">{{label}}</mat-label>\n        @if(descriptionTooltip) {\n            <button \n              class=\"action-icon-info d-flex align-items-center justify-content-center p-0 \"\n              matTooltipClass=\"custom-tooltip\">\n                  <lucide-angular\n                    [size]=\"16\"\n                    [color]=\"'#5D6F85'\"\n                    [img]=\"infoCircle\"\n                    [kitTooltip]=\"''\"\n                    [tooltipDescription]=\"descriptionTooltip\"\n                    [tooltipPosition]=\"'top'\">\n                  </lucide-angular>\n            </button>\n        }\n    </div>\n}\n<mat-form-field class=\"example-full-width custom-label-outside autocomplete-custom\" appearance=\"outline\" floatLabel=\"always\">\n\n    <input type=\"text\" matInput [formControl]=\"control || null\" [placeholder]=\"placeholderText\" [matAutocomplete]=\"auto\" />\n    <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"getDisplayValue.bind(this)\" (optionSelected)=\"onOptionSelected($event.option.value)\">\n        @for (option of filteredOptions | async; track option) {\n        <mat-option \n            [value]=\"option\" \n            [class.custom-selected]=\"isOptionSelected(option)\"\n            [attr.aria-selected]=\"isOptionSelected(option)\"\n            [class.hide-auto-checkbox]=\"multiSelectMode\"\n            [class.non-deselectable]=\"!allowDeselect && isOptionSelected(option)\">\n            <div class=\"option-content\">\n                <span class=\"option-label\" [style.font-family]=\"enableFontPreview ? option.value : 'inherit'\">\n                {{ option.label }}\n                </span>\n                @if (option.linkText) {\n                    <div class=\"option-extras\">\n                        <span class=\"option-link\">{{ option.linkText }}</span>\n                    </div>\n                } \n                \n                @if (multiSelectMode && selectedOptions.size > 0) {\n                    <mat-pseudo-checkbox \n                        [state]=\"isOptionSelected(option) ? 'checked' : 'unchecked'\"\n                        aria-hidden=\"true\" \n                        appearance=\"minimal\" \n                        class=\"mat-pseudo-checkbox mat-mdc-option-pseudo-checkbox mat-pseudo-checkbox-minimal custom-checkbox\">\n                    </mat-pseudo-checkbox>\n                }\n\n            </div>\n        </mat-option>\n        }\n    </mat-autocomplete>\n    <lucide-angular matPrefix color=\"#5D6F85\" size=\"16\" [img]=\"searchI\" ></lucide-angular>\n    @if (control.hasError('required')) {\n    <mat-error>{{label ? label: 'Este campo'}} es <strong>requerido</strong></mat-error>\n    }\n    @if (control.hasError('maxlength')) {\n    <mat-error>El máximo permitido son {{maxlength}} caracteres</mat-error>\n    }\n    @if (control.hasError('minlength')) {\n    <mat-error>El mínimo permitido son {{minlength}} caracteres</mat-error>\n    }\n    @if (control.hasError('errorCommons')) {\n    <mat-error>{{messageErrorCustom}}</mat-error>\n    }\n</mat-form-field>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipContentComponent } from './tooltip-content.component';\nimport { TooltipDirective } from './directive/tooltip.directive';\n@NgModule({\n    imports: [\n        CommonModule,\n\n    ],\n    declarations: [\n        TooltipContentComponent,\n        TooltipDirective\n    ],\n    exports:[\n        TooltipDirective\n    ],\n    \n})\nexport class KifTooltipModule { }\n","import { NgModule } from '@angular/core';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatOptionModule, MatPseudoCheckbox } from '@angular/material/core';\nimport { LucideAngularModule } from 'lucide-angular';\nimport { KifTooltipModule } from './components/tooltip/tooltip.module';\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatAutocompleteModule,\n        ReactiveFormsModule,\n        AsyncPipe,\n        MatIconModule,\n        MatOptionModule,\n        LucideAngularModule,\n        MatPseudoCheckbox,\n        KifTooltipModule\n    ],\n    declarations: [AutocompleteComponent],\n    exports:[\n        AutocompleteComponent\n    ]\n})\nexport class KifAutocompleteModule { }\n","/*\n * Public API Surface of kif-lib-input\n */\n\nexport * from './autocomplete.component';\nexport * from './autocomplete.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i7.TooltipDirective","i8"],"mappings":";;;;;;;;;;;;;;;;;;;MAQa,uBAAuB,CAAA;AAchC,IAAA,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,QAAiB,EAAA;AACxC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC/B,QAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/B;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;IAEQ,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAA;QAC1C,IAAI,GAAG,GAAG,CAAC;QACX,IAAI,IAAI,GAAG,CAAC;;AAGZ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC;AACxF,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY;AACjD,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW;QAE/C,QAAQ,IAAI,CAAC,YAAY;AACrB,YAAA,KAAK,KAAK;gBACN,GAAG,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM;gBACrC,IAAI,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;gBAC7B;AACJ,YAAA,KAAK,QAAQ;AACT,gBAAA,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;gBACrB,IAAI,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;gBAC7B;AACJ,YAAA,KAAK,MAAM;gBACP,GAAG,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;gBAC7B,IAAI,GAAG,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM;gBACrC;AACJ,YAAA,KAAK,OAAO;gBACR,GAAG,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;gBACtB;AACP;;AAGD,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;QAEzC,IAAI,IAAI,GAAG,CAAC;YAAE,IAAI,GAAG,CAAC;AACtB,QAAA,IAAI,IAAI,GAAG,YAAY,GAAG,aAAa;AAAE,YAAA,IAAI,GAAG,aAAa,GAAG,YAAY;QAC5E,IAAI,GAAG,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC;AACpB,QAAA,IAAI,GAAG,GAAG,aAAa,GAAG,cAAc;AAAE,YAAA,GAAG,GAAG,cAAc,GAAG,aAAa;QAE9E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1C;AAEA,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QA/DrB,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,MAAM,GAAG,CAAC;AAEX,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGpD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AACxC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;IAuDH;+GAnEpC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+LCRpC,0aAcC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDNY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0aAAA,EAAA;+EAItC,KAAK,EAAA,CAAA;sBAAb;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,MAAM,EAAA,CAAA;sBAAd;;;MELQ,gBAAgB,CAAA;AAczB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QAbrB,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,kBAAkB,GAAG,EAAE;QAEvB,IAAA,CAAA,eAAe,GAAwC,KAAK;QAC5D,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,YAAY,GAAG,GAAG;AAKnB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEU;IAG7C,YAAY,GAAA;QACR,IAAI,CAAC,aAAa,EAAE;QAEpB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;YACxC,IAAI,CAAC,IAAI,EAAE;AACf,QAAA,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;IACzB;IAGA,YAAY,GAAA;QACR,IAAI,CAAC,aAAa,EAAE;QAEpB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;gBACxC,IAAI,CAAC,IAAI,EAAE;YACf,CAAC,EAAE,GAAG,CAAC;AACV,QAAA;IACL;IAEQ,IAAI,GAAA;QACR,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB;AACH,QAAA;;QAGD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,uBAAuB,CAAC;;QAGhF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB;QAC9D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe;QAC3D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe;QAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa;;AAGpD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;;QAGtE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAClE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC;QAET,QAAQ,IAAI,CAAC,eAAe;AACxB,YAAA,KAAK,KAAK;AACN,gBAAA,CAAC,GAAG,IAAI,CAAC,GAAG;gBACZ;AACJ,YAAA,KAAK,QAAQ;AACT,gBAAA,CAAC,GAAG,IAAI,CAAC,MAAM;gBACf;AACJ,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,OAAO;gBACR,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC9B;AACP;AAED,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE;AACjC,YAAA,CAAC,GAAG,IAAI,CAAC,IAAI;AAChB,QAAA;AAAM,aAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;AACzC,YAAA,CAAC,GAAG,IAAI,CAAC,KAAK;AACjB,QAAA;;QAGD,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;AAC9D,QAAA,CAAC,CAAC;IACN;IAEQ,IAAI,GAAA;QACR,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE;YAE/B,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC/B,CAAC,EAAE,GAAG,CAAC;AACV,QAAA;IACL;IAEQ,aAAa,GAAA;QACjB,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AACjC,QAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AACjC,QAAA;IACL;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,aAAa,EAAE;QAEpB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC5B,QAAA;IACL;+GAjHS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE;AACb,iBAAA;+EAEY,UAAU,EAAA,CAAA;sBAAlB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBAWD,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;gBAU1B,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY;;;ACjC9B;MASa,qBAAqB,CAAA;AAJlC,IAAA,WAAA,GAAA;QAKa,IAAA,CAAA,OAAO,GAAW,EAAE;QACpB,IAAA,CAAA,eAAe,GAAW,EAAE;QAE5B,IAAA,CAAA,KAAK,GAAW,EAAE;QAGlB,IAAA,CAAA,kBAAkB,GAAW,EAAE;QAC/B,IAAA,CAAA,eAAe,GAAY,KAAK;QAEhC,IAAA,CAAA,aAAa,GAAY,IAAI;QAC7B,IAAA,CAAA,kBAAkB,GAAW,EAAE;QAC/B,IAAA,CAAA,iBAAiB,GAAY,KAAK;AACjC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAO;AAGlD,QAAA,IAAA,CAAA,eAAe,GAAa,IAAI,GAAG,EAAE;QAC5B,IAAA,CAAA,OAAO,GAAG,MAAM;QAChB,IAAA,CAAA,UAAU,GAAG,WAAW;AAuIpC,IAAA;IArIG,QAAQ,GAAA;QACJ,IAAI,CAAC,oBAAoB,EAAE;IAC/B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACpB,IAAI,CAAC,oBAAoB,EAAE;AAC9B,QAAA;AACD,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC/B,QAAA;AACD,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7F,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,YAAY;AAC/D,YAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;AAC5C,QAAA;IACL;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACtD;AACH,QAAA;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CACjD,SAAS,CAAC,EAAE,CAAC,EACb,GAAG,CAAC,CAAC,KAAU,KAAI;YACf,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;gBAChD,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;AACrC,YAAA;AAED,YAAA,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK;YAC9D,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAe,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9E,CAAC,CAAC,CACL;IACL;AAEA,IAAA,eAAe,CAAC,MAAW,EAAA;QACvB,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,OAAO,EAAE;AACZ,QAAA;AACD,QAAA,OAAO,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE;IACrD;AAEA,IAAA,gBAAgB,CAAC,MAAW,EAAA;QACxB,IAAI,CAAC,IAAI,CAAC,eAAe;AAAE,YAAA,OAAO,KAAK;QAEvC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,IACjD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CACxC;IACL;IAEQ,cAAc,CAAC,OAAY,EAAE,OAAY,EAAA;AAC7C,QAAA,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;AACnC,QAAA;AACD,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;AAChC,YAAA,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;AACzC,QAAA;AACD,QAAA,OAAO,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;IAC1C;AAEQ,IAAA,kBAAkB,CAAC,gBAAqB,EAAA;QAG5C,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAE3D,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,IAAG;gBACpC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE;AACjD,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,gBAAA;AACL,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,gBAAA,MAAM,EAAE,gBAAgB;gBACxB,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;AACL,QAAA;IACL;AAEA,IAAA,gBAAgB,CAAC,MAAW,EAAA;QACxB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAGzD,YAAA,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAC5C;AACH,YAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;AAErB,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,IAAG;oBACpC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AACvC,wBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,oBAAA;AACL,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,oBAAA,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,oBAAA,MAAM,EAAE;AACX,iBAAA,CAAC;AACL,YAAA;AAAM,iBAAA;AAEH,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;AAChC,gBAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,oBAAA,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACjD,oBAAA,MAAM,EAAE;AACX,iBAAA,CAAC;AACL,YAAA;AACJ,QAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,QAAA;IACL;AAEQ,IAAA,OAAO,CAAC,KAAa,EAAA;AACzB,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE;QAEvC,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;IACjG;IAEA,iBAAiB,GAAA;QACb,IAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAS,CAAC;YACnD,OAAO,CAAC,EAAE,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC;AAC7C,QAAA;AACD,QAAA,OAAO,KAAK;IAEhB;+GAxJS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,sfCTlC,yuGAmEiB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD1DJ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,yuGAAA,EAAA;8BAInB,OAAO,EAAA,CAAA;sBAAf;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACS,cAAc,EAAA,CAAA;sBAAvB;;;MEJQ,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBARrB,uBAAuB;YACvB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CALhB,YAAY,CAAA,EAAA,OAAA,EAAA,CAQZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAIX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAZrB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAYP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;AAEf,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,uBAAuB;wBACvB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAC;wBACJ;AACH,qBAAA;AAEJ,iBAAA;;;MCcY,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,YAAA,EAAA,CALf,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAbhC,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,cAAc;YACd,qBAAqB;YACrB,mBAAmB;YACnB,SAAS;YACT,aAAa;YACb,eAAe;YACf,mBAAmB;YACnB,iBAAiB;AACjB,YAAA,gBAAgB,aAIhB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAlB1B,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,cAAc;YACd,qBAAqB;YACrB,mBAAmB;YAEnB,aAAa;YACb,eAAe;YACf,mBAAmB;YACnB,iBAAiB;YACjB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;4FAOX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,kBAAkB;wBAClB,cAAc;wBACd,qBAAqB;wBACrB,mBAAmB;wBACnB,SAAS;wBACT,aAAa;wBACb,eAAe;wBACf,mBAAmB;wBACnB,iBAAiB;wBACjB;AACH,qBAAA;oBACD,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAC;wBACJ;AACH;AACJ,iBAAA;;;AC9BD;;AAEG;;ACFH;;AAEG;;;;"}