{"version":3,"file":"fundamental-ngx-core-select.mjs","sources":["../../../../libs/core/select/option/option.component.ts","../../../../libs/core/select/option/option.component.html","../../../../libs/core/select/select-key-manager.service.ts","../../../../libs/core/select/select.interface.ts","../../../../libs/core/select/select-mobile/select-mobile.component.ts","../../../../libs/core/select/select-mobile/select-mobile.component.html","../../../../libs/core/select/select-mobile/select-mobile.module.ts","../../../../libs/core/select/select.component.ts","../../../../libs/core/select/select.component.html","../../../../libs/core/select/select.module.ts","../../../../libs/core/select/fundamental-ngx-core-select.ts"],"sourcesContent":["import { FocusOrigin, FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n    AfterViewChecked,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { ListTitleDirective } from '@fundamental-ngx/core/list';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { startWith } from 'rxjs/operators';\nimport { OptionsInterface } from '../options.interface';\n\nlet optionUniqueId = 0;\n\n/**\n * Event object emitted by OptionComponent when\n * selected or deselected.\n */\nexport class FdOptionSelectionChange {\n    /**\n     * Reference to the OptionComponent that emitted the event.\n     * @param source The option that emitted the event.\n     * @param isUserInput Whether the change in the option's value was a result of a user interaction.\n     */\n    constructor(\n        /** Reference to the option that emitted the event. */\n        readonly source: OptionComponent,\n        /** Whether the change in the option's value was a result of a user action. */\n        readonly isUserInput = false\n    ) {}\n}\n\n/**\n * Used to represent an option of the select component.\n */\n@Component({\n    selector: '[fd-option], fd-option',\n    templateUrl: './option.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-list__item',\n        '[attr.aria-disabled]': 'disabled',\n        '[attr.aria-selected]': 'selected',\n        '[class.is-focus]': 'active',\n        '[attr.id]': 'id',\n        '[tabindex]': '-1',\n        role: 'option',\n        '(click)': '_selectViaInteraction()',\n        '(keydown)': '_handleKeydown($event)'\n    },\n    styles: [\n        `\n            .fd-list__item[aria-disabled='true'],\n            .fd-list__item.is-disabled,\n            .fd-list__item:disabled {\n                opacity: 0.4;\n                cursor: not-allowed;\n            }\n\n            .fd-list__item:disabled:focus {\n                outline: none;\n            }\n        `\n    ],\n    imports: [ListTitleDirective, NgTemplateOutlet]\n})\nexport class OptionComponent implements AfterViewInit, AfterViewChecked, OnDestroy, FocusableOption, OptionsInterface {\n    /** Option id attribute */\n    @Input()\n    id = `fd-option-${optionUniqueId++}`;\n\n    /** Value of the option. Similar to how a native select operates. */\n    @Input()\n    value: any;\n\n    /** Whether to disable this option specifically. */\n    @Input()\n    disabled = false;\n\n    /**\n     * Emits event when option is selected or deselected.\n     */\n    @Output()\n    readonly selectionChange = new EventEmitter<FdOptionSelectionChange>();\n\n    /** @hidden */\n    @HostBinding('class.is-selected')\n    selected = false;\n\n    /** @Hidden */\n    @ContentChildren(ListTitleDirective)\n    _listTitleDirectives: QueryList<ListTitleDirective> | undefined;\n\n    /** @hidden */\n    _renderer: 'plain' | 'title' = 'title';\n\n    /**\n     * The displayed value of the option. It shows the selected option in the select's trigger.\n     */\n    get viewValue(): string {\n        return (this._elementRef.nativeElement.textContent || '').trim();\n    }\n\n    /** used in components like autocomplete where focus must remain on the input.*/\n    get active(): boolean {\n        return this._active;\n    }\n\n    /** @hidden */\n    readonly _stateChanges = new Subject<void>();\n\n    /** @hidden */\n    private _mostRecentViewValue = '';\n\n    /** @hidden */\n    private _active = false;\n\n    /** @hidden */\n    constructor(\n        private _elementRef: ElementRef,\n        private _changeDetectorRef: ChangeDetectorRef\n    ) {}\n\n    /** @Hidden */\n    ngAfterViewInit(): void {\n        this._listTitleDirectives?.changes.pipe(startWith(null)).subscribe(() => {\n            const directivesLength = this._listTitleDirectives?.length ?? 0;\n            this._renderer = directivesLength > 0 ? 'plain' : 'title';\n            this._changeDetectorRef.detectChanges();\n        });\n    }\n\n    /**\n     * @hidden\n     * Since select components could be using the option's label to display the selected values\n     * and they don't have a way of knowing if the option's label has changed\n     * we have to check for changes in the DOM ourselves and dispatch an event\n     */\n    ngAfterViewChecked(): void {\n        if (this.selected) {\n            const viewValue = this.viewValue;\n\n            if (viewValue !== this._mostRecentViewValue) {\n                this._mostRecentViewValue = viewValue;\n                this._stateChanges.next();\n            }\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._stateChanges.complete();\n    }\n\n    /** @hidden\n     * This method sets display styles on the option to make it appear\n     * active. This is used by the ActiveDescendantKeyManager so key\n     * events will display the proper options as active on arrow key events.\n     */\n    setActiveStyles(): void {\n        if (!this._active) {\n            this._active = true;\n            this._changeDetectorRef.markForCheck();\n        }\n    }\n\n    /** @hidden\n     * This method removes display styles on the option that made it appear\n     * active. This is used by the ActiveDescendantKeyManager so key\n     * events will display the proper options as active on arrow key events.\n     */\n    setInactiveStyles(): void {\n        if (this._active) {\n            this._active = false;\n            this._changeDetectorRef.markForCheck();\n        }\n    }\n\n    /** @hidden\n     * Focuses the element. */\n    focus(_origin?: FocusOrigin, options?: FocusOptions): void {\n        const element = this._elementRef.nativeElement;\n\n        if (typeof element.focus === 'function') {\n            element.focus(options);\n        }\n    }\n\n    /** @hidden\n     * option value\n     */\n    getLabel(): string {\n        return this.viewValue;\n    }\n\n    /** @hidden\n     * Returns HTMLElement representation of the component. */\n    _getHtmlElement(): HTMLElement {\n        return this._elementRef.nativeElement as HTMLElement;\n    }\n\n    /** Selects the option.\n     * * @hidden\n     */\n    _select(): void {\n        if (!this.selected) {\n            this.selected = true;\n            this._changeDetectorRef.markForCheck();\n            this.selectionChange.emit(new FdOptionSelectionChange(this, false));\n        }\n    }\n\n    /** @hidden\n     * Deselects the option.\n     */\n    _deselect(): void {\n        if (this.selected) {\n            this.selected = false;\n            this._changeDetectorRef.markForCheck();\n            this.selectionChange.emit(new FdOptionSelectionChange(this, false));\n        }\n    }\n\n    /**\n     * Ensures the option is selected when activated from the keyboard.\n     *\n     * @hidden\n     */\n    _handleKeydown(event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, [ENTER, SPACE]) && !hasModifierKey(event)) {\n            this._selectViaInteraction();\n            event.preventDefault();\n        }\n    }\n\n    /** @hidden */\n    _selectViaInteraction(): void {\n        if (!this.disabled) {\n            this.selected = true;\n            this._changeDetectorRef.markForCheck();\n            this.selectionChange.emit(new FdOptionSelectionChange(this, true));\n        }\n    }\n}\n","@if (_renderer === 'title') {\n    <span fd-list-title>\n        <ng-template [ngTemplateOutlet]=\"plainRenderer\"></ng-template>\n    </span>\n} @else {\n    <ng-template [ngTemplateOutlet]=\"plainRenderer\"></ng-template>\n}\n<ng-template #plainRenderer>\n    <ng-content></ng-content>\n</ng-template>\n<ng-content select=\"[secondary]\"></ng-content>\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, END, ENTER, ESCAPE, HOME, SPACE, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Injectable } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { OptionsInterface } from './options.interface';\nimport { SelectInterface } from './select.interface';\n\n@Injectable()\nexport class SelectKeyManagerService {\n    /** @hidden */\n    _component: SelectInterface;\n\n    /** @hidden */\n    _keyManager: ActiveDescendantKeyManager<OptionsInterface>;\n\n    /**\n     * Sets up a key manager to listen to keyboard events on the overlay panel.\n     * @hidden\n     */\n    _initKeyManager(): void {\n        this._keyManager = new ActiveDescendantKeyManager<OptionsInterface>(this._component._options)\n            .withTypeAhead(this._component.typeaheadDebounceInterval)\n            .withVerticalOrientation()\n            .withHorizontalOrientation(this._component.isRtl() ? 'rtl' : 'ltr')\n            .withAllowedModifierKeys(['shiftKey']);\n\n        this._keyManager.tabOut.pipe(takeUntilDestroyed(this._component._destroy)).subscribe(() => {\n            // tab focus fix for mobile\n            if (!this._isMobile()) {\n                this._component.focus();\n                this._component.close(false, true);\n            }\n        });\n\n        this._keyManager.change.pipe(takeUntilDestroyed(this._component._destroy)).subscribe(() => {\n            if (this._component._isOpen && this._component._optionPanel) {\n                this._scrollActiveOptionIntoView();\n            } else if (!this._component._isOpen && this._keyManager.activeItem) {\n                this._keyManager.activeItem._selectViaInteraction();\n            }\n        });\n    }\n\n    /** @hidden */\n    _scrollActiveOptionIntoView(): void {\n        const activeOptionIndex = this._keyManager.activeItemIndex || 0;\n        this._component._optionPanel.nativeElement.parentElement.scrollTop = this._component._getOptionScrollPosition(\n            activeOptionIndex,\n            this._component._getItemHeight(),\n            this._component._optionPanel.nativeElement.scrollTop\n        );\n    }\n\n    /**\n     * Handles keyboard events while the select is closed.\n     * @hidden\n     */\n    _handleClosedKeydown(event: KeyboardEvent): void {\n        const isOpenKey = KeyUtil.isKeyCode(event, [ENTER, SPACE]);\n        const manager = this._keyManager;\n\n        // Open the select on ALT + arrow key to match the native <select>\n        if (!manager.isTyping() && isOpenKey && !hasModifierKey(event)) {\n            // prevents the page from scrolling down when pressing space\n            event.preventDefault();\n            this._component.open();\n        } else {\n            const previouslySelectedOption = this._component.selected;\n\n            if (KeyUtil.isKeyCode(event, [HOME, END])) {\n                if (KeyUtil.isKeyCode(event, HOME)) {\n                    manager.setFirstItemActive();\n                } else {\n                    manager.setLastItemActive();\n                }\n                event.preventDefault();\n            }\n\n            const selectedOption = this._component.selected;\n\n            // a11y Since the value has changed, we need to announce it.\n            if (selectedOption && previouslySelectedOption !== selectedOption) {\n                this._component._liveAnnouncer.announce((selectedOption as OptionsInterface).viewValue, 10000);\n            }\n            manager.onKeydown(event);\n        }\n    }\n\n    /**\n     * Handles keyboard events when the selected is open.\n     *\n     * @hidden\n     */\n    _handleOpenKeydown(event: KeyboardEvent): void {\n        const manager = this._keyManager;\n        const isArrowKey = KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW]);\n        const isTyping = manager.isTyping();\n\n        if (KeyUtil.isKeyCode(event, [HOME, END])) {\n            event.preventDefault();\n            if (KeyUtil.isKeyCode(event, HOME)) {\n                manager.setFirstItemActive();\n            } else {\n                manager.setLastItemActive();\n            }\n        } else if ((isArrowKey && event.altKey) || KeyUtil.isKeyCode(event, [ESCAPE])) {\n            // Close the select on ALT + arrow key to match the native <select>\n            event.preventDefault();\n            this._component.blur();\n            this._component.close();\n            // When user is typing do nothing,\n            // because the typing sequence can include the space key.\n        } else if (\n            !isTyping &&\n            KeyUtil.isKeyCode(event, [ENTER, SPACE]) &&\n            manager.activeItem &&\n            !hasModifierKey(event)\n        ) {\n            event.preventDefault();\n            manager.activeItem._selectViaInteraction();\n            this._component.blur();\n        } else if (!isTyping && KeyUtil.isKeyCode(event, [TAB])) {\n            if (this._isMobile()) {\n                event.preventDefault();\n            }\n        } else {\n            manager.onKeydown(event);\n        }\n    }\n\n    /**\n     * Checks if the component is in mobile mode.\n     * @hidden\n     */\n    private _isMobile(): boolean {\n        return typeof this._component.mobile === 'function' ? this._component.mobile() : this._component.mobile;\n    }\n}\n","import { DestroyRef, ElementRef, EventEmitter, InjectionToken, QueryList, Signal } from '@angular/core';\n\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { MobileMode, MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { OptionComponent } from './option/option.component';\n\nexport const SELECT_COMPONENT = new InjectionToken<SelectInterface>('SelectInterface');\n\n/**\n * Select Interface to have typing and avoid circular dependency between\n * SelectComponent <==> SelectMobileComponent\n */\nexport interface SelectInterface<TOption = any> extends MobileMode {\n    typeaheadDebounceInterval: number;\n    /** Whether the component is in RTL mode */\n    isRtl: Signal<boolean>;\n    selected: OptionComponent;\n    mobileConfig: MobileModeConfig;\n    _options: QueryList<TOption>;\n    _destroy: DestroyRef;\n    _optionPanel: ElementRef;\n    _isOpen: boolean;\n    _calculatedMaxHeight: number;\n    _liveAnnouncer: LiveAnnouncer;\n\n    isOpenChange: EventEmitter<boolean>;\n    valueChange: EventEmitter<any>;\n\n    close(forceClose?: boolean, tabOut?: boolean): void;\n    open(): void;\n    focus(): void;\n    blur(): void;\n    _getItemHeight(): number;\n    _getOptionScrollPosition(optionIndex: number, optionHeight: number, currentScrollPosition: number): void;\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    HostListener,\n    Inject,\n    OnDestroy,\n    OnInit,\n    TemplateRef,\n    ViewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DynamicComponentService, KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ButtonBarComponent } from '@fundamental-ngx/core/bar';\nimport {\n    DialogBodyComponent,\n    DialogCloseButtonComponent,\n    DialogComponent,\n    DialogFooterComponent,\n    DialogHeaderComponent\n} from '@fundamental-ngx/core/dialog';\nimport { MobileModeBase, MobileModeControl } from '@fundamental-ngx/core/mobile-mode';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { SELECT_COMPONENT, SelectInterface } from '../select.interface';\n\n/**\n * This component provides extended mobile support for Select component to render list of option since full screen\n * dialog.\n */\n@Component({\n    selector: 'fd-select-mobile',\n    templateUrl: './select-mobile.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [DynamicComponentService],\n    imports: [\n        ButtonBarComponent,\n        TitleComponent,\n        TitleComponent,\n        NgTemplateOutlet,\n        ButtonBarComponent,\n        DialogComponent,\n        DialogHeaderComponent,\n        DialogFooterComponent,\n        DialogBodyComponent,\n        DialogCloseButtonComponent,\n        FdTranslatePipe\n    ]\n})\nexport class SelectMobileComponent extends MobileModeBase<SelectInterface> implements OnInit, AfterViewInit, OnDestroy {\n    /** @hidden */\n    @ViewChild('dialogTemplate')\n    _dialogTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden\n     * from mobile class can not prefix _,\n     * to avoid build issues\n     */\n    childContent: TemplateRef<any> | null = null;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    constructor(@Inject(SELECT_COMPONENT) _selectComponent: SelectInterface) {\n        super(_selectComponent, MobileModeControl.SELECT);\n    }\n\n    /** @hidden */\n    @HostListener('keydown', ['$event'])\n    onItemKeydown(event: KeyboardEvent): void {\n        if (event && KeyUtil.isKeyCode(event, [ESCAPE])) {\n            this._component.close(true);\n        }\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._listenOnSelectOpenChange();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._openDialog();\n        this.dialogRef.hide(true);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.dialogRef.close();\n        this._subscriptions.unsubscribe();\n    }\n\n    /**\n     * Only when we have Approve.\n     * @hidden\n     */\n    _cancel(): void {\n        this._component.close(true);\n    }\n\n    /** @hidden */\n    _approve(): void {\n        this._component.close(true);\n    }\n\n    /** @hidden Hide/Show the Dialog when Select Open/Close*/\n    private _listenOnSelectOpenChange(): void {\n        this._subscriptions.add(\n            this._component.isOpenChange.subscribe((isOpen) => {\n                this._elementRef.nativeElement.blur();\n                this.dialogRef.hide(!isOpen);\n            })\n        );\n    }\n\n    /** @hidden */\n    private _openDialog(): void {\n        this.dialogRef = this._dialogService.open(this._dialogTemplate, {\n            ...this.dialogConfig,\n            mobile: true,\n            disablePaddings: true,\n            backdropClickCloseable: false,\n            container: this._elementRef.nativeElement,\n            ariaLabelledBy: 'fd-dialog-header'\n        });\n    }\n}\n","<ng-template [fdDialogTemplate] let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\n    <fd-dialog tabindex=\"-1\" [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n        <fd-dialog-header>\n            @if (mobileConfig.title) {\n                <h1 id=\"fd-dialog-header\" fd-title>{{ mobileConfig.title }}</h1>\n            }\n            @if (mobileConfig.hasCloseButton) {\n                <button\n                    role=\"button\"\n                    [attr.aria-label]=\"('coreSelect.closeButton' | fdTranslate)()\"\n                    fd-dialog-close-button\n                    [mobile]=\"true\"\n                    (click)=\"_cancel()\"\n                ></button>\n            }\n        </fd-dialog-header>\n        <fd-dialog-body>\n            <ng-template [ngTemplateOutlet]=\"childContent\"></ng-template>\n        </fd-dialog-body>\n        @if (mobileConfig.approveButtonText || mobileConfig.cancelButtonText) {\n            <fd-dialog-footer>\n                @if (mobileConfig.approveButtonText) {\n                    <fd-button-bar fdType=\"emphasized\" [label]=\"mobileConfig.approveButtonText!\" (click)=\"_approve()\">\n                    </fd-button-bar>\n                }\n                @if (mobileConfig.cancelButtonText) {\n                    <fd-button-bar [label]=\"mobileConfig.cancelButtonText!\" (click)=\"_cancel()\"> </fd-button-bar>\n                }\n            </fd-dialog-footer>\n        }\n    </fd-dialog>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { DynamicComponentService } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { DialogModule } from '@fundamental-ngx/core/dialog';\nimport { SelectMobileComponent } from './select-mobile.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [DialogModule, ButtonComponent, SelectMobileComponent],\n    exports: [SelectMobileComponent],\n    providers: [DynamicComponentService]\n})\nexport class SelectMobileModule {}\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, ScrollStrategy } from '@angular/cdk/overlay';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    Attribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    QueryList,\n    Self,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n    computed,\n    inject,\n    isDevMode\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { Observable, Subscription, defer, merge } from 'rxjs';\nimport { startWith, switchMap, takeUntil } from 'rxjs/operators';\n\nimport {\n    DynamicComponentService,\n    KeyUtil,\n    ModuleDeprecation,\n    Nullable,\n    RtlService,\n    destroyObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { FormItemControl, registerFormItemControl } from '@fundamental-ngx/core/form';\nimport { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';\nimport { PopoverFillMode } from '@fundamental-ngx/core/shared';\n\nimport { ENTER, ESCAPE, SPACE } from '@angular/cdk/keycodes';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormFieldAdvancedStateMessage, FormStates, SingleDropdownValueControl } from '@fundamental-ngx/cdk/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { ListComponent, ListMessageDirective, ListTitleDirective } from '@fundamental-ngx/core/list';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { FdOptionSelectionChange, OptionComponent } from './option/option.component';\nimport { SelectKeyManagerService } from './select-key-manager.service';\nimport { SelectMobileComponent } from './select-mobile/select-mobile.component';\nimport { SELECT_COMPONENT, SelectInterface } from './select.interface';\n\nlet selectUniqueId = 0;\n\nconst SELECT_HEADER_IDENTIFIER = '.fd-list__group-header';\n\nexport const SELECT_PANEL_MAX_HEIGHT = 250;\n\n/** The height of the select items in `rem` units. */\nexport const SELECT_ITEM_HEIGHT_EM = 4;\n\nexport type TextOverflowMode = 'full' | 'ellipsis';\n\nexport enum TextOverflowModeEnum {\n    FULL = 'full',\n    ELLIPSIS = 'ellipsis'\n}\n\n/**\n * Select component intended to mimic\n * the behaviour of the native select element.\n */\n@Component({\n    selector: 'fd-select',\n    templateUrl: './select.component.html',\n    styleUrl: './select.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-select',\n        '[class.fd-select--inline]': 'inline',\n        // @deprecated leaving class fd-select-custom-class for backwards compatibility\n        '[class.fd-select-custom-class]': 'inline',\n        // @deprecated leaving class fd-select-custom-class--mobile for backwards compatibility\n        '[class.fd-select-custom-class--mobile]': 'mobile'\n    },\n    providers: [\n        {\n            provide: SELECT_COMPONENT,\n            useExisting: SelectComponent\n        },\n        registerFormItemControl(SelectComponent),\n        SelectKeyManagerService,\n        contentDensityObserverProviders()\n    ],\n    imports: [\n        NgTemplateOutlet,\n        PopoverComponent,\n        PopoverControlComponent,\n        PopoverBodyComponent,\n        NgClass,\n        IconComponent,\n        ListComponent,\n        ListMessageDirective,\n        FdTranslatePipe,\n        ButtonComponent,\n        ListTitleDirective\n    ]\n})\nexport class SelectComponent<T = any>\n    implements\n        SingleDropdownValueControl,\n        ControlValueAccessor,\n        SelectInterface,\n        OnInit,\n        AfterViewInit,\n        AfterContentInit,\n        OnChanges,\n        OnDestroy,\n        FormItemControl\n{\n    /** @deprecated\n     * it is handled internally by controlTemplate != null|undefined is\n     * Equal as extendedBodyTemplate as true.\n     * Whether option components contain more than basic text. */\n    @Input()\n    set extendedBodyTemplate(value: boolean) {\n        this._extendedBodyTemplate = value;\n    }\n\n    get extendedBodyTemplate(): boolean {\n        return this._extendedBodyTemplate;\n    }\n\n    /** Scrolling strategy to be used for popover. */\n    @Input()\n    scrollStrategy: ScrollStrategy;\n\n    /**\n     * Controls how long text is displayed in the dropdown list of the Select component.\n     *\n     * - `'ellipsis'`: Truncates the text with an ellipsis (`...`) if it exceeds a certain length.\n     * - `'full'`: Displays the entire text on multiple lines, ensuring full visibility.\n     */\n    @Input()\n    textOverflow: TextOverflowMode = 'ellipsis';\n\n    /** The ID of the control. */\n    @Input()\n    controlId = `fd-select-${selectUniqueId++}`;\n\n    /** Holds the control state of select */\n    @Input()\n    state: Nullable<FormStates>;\n\n    /** Whether the select component should be displayed in mobile mode. */\n    @Input()\n    mobile = false;\n\n    /** Holds the message with respect to state */\n    @Input()\n    stateMessage: Nullable<string>;\n\n    /** Whether the select component is disabled. */\n    @Input()\n    disabled = false;\n\n    /** If it is mandatory field */\n    @Input()\n    required = false;\n\n    /** Whether the select component is readonly. */\n    @Input()\n    readonly = false;\n\n    /** Placeholder for the select. Appears in the triggerbox if no option is selected. */\n    @Input()\n    placeholder: string;\n\n    /** Value of the select control. */\n    @Input()\n    set value(newValue: any) {\n        if (newValue !== this._internalValue) {\n            this.writeValue(newValue);\n            this._internalValue = newValue;\n        }\n    }\n    get value(): any {\n        return this._internalValue;\n    }\n\n    /** Max height of the popover. Any overflowing elements will be accessible through scrolling. */\n    @Input()\n    maxHeight: string;\n\n    /** Glyph to add icon in the select component. */\n    @Input()\n    glyph = 'slim-arrow-down';\n\n    /** Glyph font family */\n    @Input()\n    glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** Whether close the popover on outside click. */\n    @Input()\n    closeOnOutsideClick = true;\n\n    /**\n     * Preset options for the Select body width, whatever is chosen, the body has a 600px limit.\n     * * `at-least` will apply a minimum width to the body equivalent to the width of the control. - Default\n     * * `equal` will apply a width to the body equivalent to the width of the control.\n     * * 'fit-content' will apply width needed to properly display items inside, independent of control.\n     */\n    @Input()\n    fillControlMode: PopoverFillMode = 'at-least';\n\n    /** Custom template used to build control body. */\n    @Input()\n    controlTemplate: TemplateRef<any> | undefined;\n\n    /** The element to which the popover should be appended. */\n    @Input()\n    appendTo: ElementRef;\n\n    /**\n     * If the option should be unselected and value changed to undefined, when the current value is\n     * not presented in option array. Switching it off can be handy, when there is some delay between providing\n     * possible options and chosen value.\n     */\n    @Input()\n    unselectMissingOption = true;\n\n    /** Time to wait in milliseconds after the last keydown before focusing or selecting option based on alphanumeric keys. */\n    @Input()\n    typeaheadDebounceInterval = 250;\n\n    /** Binds to control aria-labelledBy attribute */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /** Sets control aria-label attribute value */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /** Select Input Mobile Configuration */\n    @Input()\n    mobileConfig: MobileModeConfig = { hasCloseButton: true };\n\n    /** Should select be inlined. */\n    @Input()\n    inline = true;\n\n    /** Additional classname for the select control element. */\n    @Input()\n    selectControlClass: Nullable<string>;\n\n    /** Additional classname for the select dropdown button element. */\n    @Input()\n    selectDropdownButtonClass: Nullable<string>;\n\n    /** Holds advanced message renderer with respect to state. */\n    @Input()\n    advancedStateMessage: Nullable<FormFieldAdvancedStateMessage>;\n\n    /**\n     * Action to perform when user shifts focus from the dropdown.\n     * - `close` will close the dropdown preserving previously selected value.\n     * - `closeAndSelect` will close the dropdown and select last focused dropdown item.\n     */\n    @Input()\n    tabOutStrategy: 'close' | 'closeAndSelect' = 'close';\n\n    /** Value for aria-haspopup */\n    @Input()\n    ariaHasPopup = 'listbox';\n\n    /** Value for aria-description */\n    @Input()\n    ariaDescription: string;\n\n    /** Event emitted when the popover open state changes. */\n    @Output()\n    readonly isOpenChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    /** Event emitted when the selected value of the select changes. */\n    @Output()\n    readonly valueChange = new EventEmitter<T>();\n\n    /** @hidden */\n    @ContentChildren(OptionComponent, { descendants: true })\n    _options: QueryList<OptionComponent>;\n\n    /** @hidden */\n    @ViewChild('selectControl')\n    _controlElementRef: ElementRef<HTMLDivElement>;\n\n    /** Reference to element containing list of options */\n    @ViewChild('selectOptionsListTemplate')\n    selectOptionsListTemplate: TemplateRef<any>;\n\n    /** @hidden\n     * Reference to root element for the mobile mode dialog */\n    @ViewChild('dialogContainer')\n    _dialogContainerElementRef: ElementRef;\n\n    /**\n     * Overlay pane containing the options.\n     * @hidden\n     */\n    @ViewChild(CdkConnectedOverlay)\n    _overlayDir: CdkConnectedOverlay;\n\n    /** @hidden\n     * Referent to the option;s container\n     */\n    @ViewChild('optionPanel', { read: ElementRef })\n    _optionPanel: ElementRef;\n\n    /** Whether popover is opened\n     * @hidden\n     */\n    _isOpen = false;\n\n    /** @hidden */\n    _tabIndex: number;\n\n    /** @hidden */\n    _liveAnnouncer: LiveAnnouncer;\n\n    /** @hidden */\n    _internalValue: any;\n\n    /** @hidden */\n    _calculatedMaxHeight: number;\n\n    /** @hidden */\n    _selectionModel: SelectionModel<OptionComponent>;\n\n    /** @hidden */\n    get showEllipsis(): boolean {\n        return this.textOverflow === TextOverflowModeEnum.ELLIPSIS;\n    }\n\n    /**\n     * @hidden\n     * Triggers when component is destroyed\n     */\n    readonly _destroy = inject(DestroyRef);\n\n    /** @hidden */\n    get _selectControlClass(): string {\n        return [this.state ? `is-${this.state}` : '', this.selectControlClass]\n            .filter((className) => !!className)\n            .join(' ');\n    }\n\n    /**\n     * @hidden\n     * Combined stream of all of the child options' change events.\n     */\n    readonly _optionSelectionChanges: Observable<FdOptionSelectionChange> = defer(() => {\n        const _options = this._options;\n\n        return _options?.changes.pipe(\n            startWith(_options),\n            switchMap(() => merge(..._options.map((option) => option.selectionChange)))\n        );\n    });\n\n    /** Selected option. */\n    get selected(): OptionComponent {\n        return this._selectionModel.selected[0];\n    }\n\n    /** Retrieves selected value if any. */\n    get triggerValue(): string {\n        const emptyValue = ' ';\n        if (this._selectionModel.isEmpty()) {\n            return this.placeholder || emptyValue;\n        }\n        return this.selected.viewValue || this.placeholder || emptyValue;\n    }\n\n    /** equal to close\n     * Tells the OptionList if it's closable by simply selecting the item either with CLICK | SPACE | ENTER.\n     * When we are in mobile mode (mobile=true) and have we have enabled confirmation buttons then we\n     * dont close option list. We close only after we hit confirm button.\n     */\n    get canClose(): boolean {\n        return !(this.mobile && this.mobileConfig.approveButtonText);\n    }\n\n    /** Whether control can be interacted with */\n    get isInteractive(): boolean {\n        return !(this.readonly || this.disabled);\n    }\n\n    /**\n     * Check if we can emit a value. They are 3 different paths where we can emit value:\n     *  - We are not in mobile mode [mobile]=false\n     *  - We are in mobile mode [mobile]=true and mobile dialog as just close X button to dismiss it\n     *  - We are in mobile mode [mobile]=true and mobile dialog has ApproveButton available and\n     *  dialog is closed. (meaning we already clicked this button)\n     */\n    get canEmitValueChange(): boolean {\n        return (\n            !this.mobile ||\n            (this.mobile &&\n                // Approve + Cancel\n                !!this.mobileConfig.approveButtonText &&\n                !this._isOpen) ||\n            // CloseButton. Emits when you click on the option item\n            (!!this.mobileConfig.hasCloseButton && !!this.mobileConfig.approveButtonText === false)\n        );\n    }\n\n    /** Function to compare the option values with the selected values. */\n    @Input()\n    set compareWith(fn: (o1: any, o2: any) => boolean) {\n        if (typeof fn !== 'function') {\n            throw Error('compareWith` must be a function.');\n        }\n        this._compareWith = fn;\n        if (this._selectionModel) {\n            // A different comparator means the selection could change.\n            this._initializeSelection();\n        }\n    }\n\n    get compareWith(): (o1: any, o2: any) => boolean {\n        return this._compareWith;\n    }\n\n    /** @hidden */\n    get focused(): boolean {\n        return this._focused || this._isOpen;\n    }\n\n    /** @hidden */\n    get calculatedMaxHeight(): number {\n        return this._maxHeight || this._calculatedMaxHeight;\n    }\n    /** Whether the component is in RTL mode */\n    readonly isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n    private readonly _rtlService = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    private _extendedBodyTemplate = false;\n\n    /** @hidden */\n    private _controlElemFontSize = 0;\n\n    /** @hidden */\n    private _focused = false;\n\n    /**\n     * @hidden\n     * Stored calculated maxHeight from Option Panel\n     */\n    private _maxHeight: number;\n\n    /** @hidden */\n    private _subscriptions: Subscription = new Subscription();\n\n    /** @hidden */\n    constructor(\n        @Attribute('tabindex') _tabIndex: string,\n        private readonly _keyManagerService: SelectKeyManagerService,\n        private readonly _changeDetectorRef: ChangeDetectorRef,\n        private readonly _viewContainerRef: ViewContainerRef,\n        @Optional() private readonly _dynamicComponentService: DynamicComponentService,\n        @Optional() @Self() private readonly ngControl: NgControl,\n        @Optional() private readonly _injector: Injector,\n        readonly _contentDensityObserver: ContentDensityObserver\n    ) {\n        if (this.ngControl) {\n            this.ngControl.valueAccessor = this;\n        }\n        this._tabIndex = parseInt(_tabIndex, 10) || 0;\n    }\n\n    /** @hidden */\n    @HostListener('window:resize')\n    _resizeScrollHandler(): void {\n        this._updateCalculatedHeight();\n    }\n\n    /** @hidden */\n    @HostListener('keydown', ['$event'])\n    _handleKeydown(event: KeyboardEvent): void {\n        if (!this.disabled && !this.readonly) {\n            this._isOpen\n                ? this._keyManagerService._handleOpenKeydown(event)\n                : this._keyManagerService._handleClosedKeydown(event);\n        }\n        if (KeyUtil.isKeyCode(event, [ESCAPE, ENTER, SPACE])) {\n            this._controlElementRef.nativeElement.focus();\n        }\n    }\n\n    /** Toggles the open state of the select. */\n    @HostListener('click')\n    toggle(): void {\n        this._isOpen ? this.close() : this.open();\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        this._tabIndex = this.disabled ? -1 : 0;\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** @hidden */\n    _compareWith = (o1: any, o2: any): boolean => o1 === o2;\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._initializeCommonBehavior();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._keyManagerService._initKeyManager();\n        this._setupMobileMode();\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._registerEventsAfterContentInit();\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['typeaheadDebounceInterval'] && this._keyManagerService._keyManager) {\n            this._keyManagerService._keyManager.withTypeAhead(this.typeaheadDebounceInterval);\n        } else if (changes['disabled']) {\n            this._tabIndex = this.disabled ? -1 : 0;\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /** @hidden */\n    onChange: (value: any) => void = () => {};\n\n    /** @hidden */\n    onTouched = (): void => {};\n\n    /** Opens the select popover body. */\n    open(): void {\n        if (this.disabled || this.readonly || !this._options || !this._getItemCount() || this._isOpen) {\n            return;\n        }\n        this._isOpen = true;\n\n        this._controlElemFontSize = parseInt(\n            getComputedStyle(this._controlElementRef.nativeElement).fontSize || '0',\n            10\n        );\n\n        this._keyManagerService._keyManager.withHorizontalOrientation(null);\n        this._highlightCorrectOption();\n        this._changeDetectorRef.markForCheck();\n        this._controlElementRef.nativeElement.focus();\n        this.isOpenChange.emit(true);\n    }\n\n    /** @hidden */\n    close(forceClose = false, tabOut = false): void {\n        if (this._isOpen || forceClose) {\n            if (tabOut && this.tabOutStrategy === 'closeAndSelect') {\n                this._keyManagerService._keyManager.activeItem?._selectViaInteraction();\n            }\n            this._isOpen = false;\n            this._keyManagerService._keyManager.withHorizontalOrientation(this.isRtl() ? 'rtl' : 'ltr');\n            this._changeDetectorRef.markForCheck();\n            this.onTouched();\n\n            this.isOpenChange.emit(false);\n        }\n    }\n\n    /** Focuses select control. */\n    focus(): void {\n        (this._controlElementRef?.nativeElement as HTMLElement).focus();\n    }\n\n    /** Blurs select control. */\n    blur(): void {\n        (this._controlElementRef?.nativeElement as HTMLElement).blur();\n    }\n\n    /** @hidden */\n    registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    /** @hidden */\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /** @hidden from ControlValue Accessor */\n    writeValue(value: any): void {\n        if (this._options) {\n            this._setSelectionByValue(value);\n        }\n    }\n\n    /** @hidden */\n    _setSelectionByValue(value: any | any[]): void {\n        this._selectionModel.clear();\n        const correspondingOption = this._selectValue(value);\n\n        // Shift focus to the active item. Note that we shouldn't do this in multiple\n        // mode, because we don't know what option the user interacted with last.\n        if (correspondingOption) {\n            this._keyManagerService._keyManager.setActiveItem(correspondingOption);\n        } else if (!this._isOpen) {\n            // Otherwise reset the highlighted option. Note that we only want to do this while\n            // closed, because doing it while open can shift the user's focus unnecessarily.\n            this._keyManagerService._keyManager.setActiveItem(-1);\n        }\n\n        this._changeDetectorRef.markForCheck();\n    }\n\n    /** @hidden */\n    _selectValue(value: any): OptionComponent | undefined {\n        const correspondingOption = this._options.find((option: OptionComponent) => {\n            try {\n                // Treat null as a special reset value.\n                return option.value != null && this._compareWith(option.value, value);\n            } catch (error) {\n                if (isDevMode()) {\n                    // Notify developers of errors in their comparator.\n                    console.warn(error);\n                }\n                return false;\n            }\n        });\n\n        if (correspondingOption) {\n            this._selectionModel.select(correspondingOption);\n        }\n\n        return correspondingOption;\n    }\n\n    /** @hidden */\n    _popoverOpenChangeHandle(isOpen: boolean): void {\n        isOpen ? this.open() : this.close();\n    }\n\n    /** @hidden Returns _keyManagerService. */\n    _getKeyService(): SelectKeyManagerService {\n        return this._keyManagerService;\n    }\n\n    /** @hidden */\n    _setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        this._changeDetectorRef.markForCheck();\n\n        this._tabIndex = -1;\n    }\n\n    /** @hidden */\n    _highlightCorrectOption(): void {\n        if (this._keyManagerService._keyManager && this._selectionModel.isEmpty()) {\n            this._keyManagerService._keyManager.setFirstItemActive();\n        } else if (this._keyManagerService._keyManager && !this._selectionModel.isEmpty()) {\n            this._keyManagerService._keyManager.setActiveItem(this.selected);\n        }\n    }\n\n    /** @hidden */\n    _initializeSelection(): void {\n        // Defer setting the value in order to avoid the \"Expression\n        // has changed after it was checked\" errors from Angular.\n        Promise.resolve().then(() => {\n            this._setSelectionByValue(this.ngControl ? this.ngControl.value : this._internalValue);\n        });\n    }\n\n    /**\n     * Expose outside of this mixin to give component ability\n     * to update caluclatedMaxHeight if needed\n     * @hidden\n     */\n    _updateCalculatedHeight(): void {\n        this._calculatedMaxHeight = window.innerHeight * 0.45;\n    }\n\n    /** @hidden */\n    _getOptionScrollPosition(optionIndex: number, itemHeight: number, currentScrollPosition: number): number {\n        const optionHeight = this._options.get(optionIndex)?._getHtmlElement().offsetHeight || itemHeight;\n        const optionOffset = optionIndex * optionHeight;\n        if (optionOffset < currentScrollPosition) {\n            return optionOffset;\n        }\n\n        if (optionOffset + optionHeight > currentScrollPosition + SELECT_PANEL_MAX_HEIGHT) {\n            return Math.max(0, optionOffset - SELECT_PANEL_MAX_HEIGHT + optionHeight);\n        }\n        return currentScrollPosition;\n    }\n\n    /** @hidden */\n    _getItemHeight(): number {\n        // also include border with default value 1.\n        return this._controlElemFontSize * SELECT_ITEM_HEIGHT_EM + 1;\n    }\n\n    /** @hidden */\n    _initializeCommonBehavior(): void {\n        this._selectionModel = new SelectionModel<OptionComponent>(false);\n        this._keyManagerService._component = this;\n\n        this._updateCalculatedHeight();\n    }\n\n    /** @hidden */\n    _registerEventsAfterContentInit(): void {\n        this._selectionModel.changed.pipe(takeUntilDestroyed(this._destroy)).subscribe((event) => {\n            event.added.forEach((option) => option._select());\n            event.removed.forEach((option) => option._deselect());\n        });\n\n        this._options.changes.pipe(startWith(null), takeUntilDestroyed(this._destroy)).subscribe(() => {\n            this._resetOptions();\n            this._initializeSelection();\n        });\n    }\n\n    /** @hidden */\n    _getAriaActiveDescendant(): string | null {\n        if (this._isOpen && this._keyManagerService._keyManager && this._keyManagerService._keyManager.activeItem) {\n            return this._keyManagerService._keyManager.activeItem.id;\n        }\n        return null;\n    }\n\n    /** @hidden */\n    _onFocus(): void {\n        if (!this.disabled) {\n            this._focused = true;\n            this._changeDetectorRef.markForCheck();\n        }\n    }\n\n    /** @hidden */\n    _onBlur(): void {\n        this._focused = false;\n\n        if (!this.disabled && !this._isOpen) {\n            this.onTouched();\n            this._changeDetectorRef.markForCheck();\n        }\n    }\n\n    /** @hidden */\n    _buttonClick(): void {}\n\n    /** @hidden */\n    private _resetOptions(): void {\n        const changedOrDestroyed = merge(this._options.changes, destroyObservable(this._destroy));\n\n        this._optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe((event) => {\n            this._onSelect(event.source, event.isUserInput);\n\n            if (event.isUserInput && this._isOpen) {\n                this.close();\n                this.focus();\n            }\n        });\n\n        // Listen to changes in the internal state of the _options and react accordingly.\n        // Handles cases like the labels of the selected _options changing.\n        merge(...this._options.map((option) => option._stateChanges))\n            .pipe(takeUntil(changedOrDestroyed))\n            .subscribe(() => {\n                this._changeDetectorRef.markForCheck();\n            });\n    }\n\n    /**\n     * @hidden\n     * Invoked when an option is clicked.\n     */\n    private _onSelect(option: OptionComponent, isUserInput: boolean): void {\n        const wasSelected = this._selectionModel.isSelected(option);\n        if ((option.value === null || option.value === undefined) && this.unselectMissingOption) {\n            option._deselect();\n            this._selectionModel.clear();\n            this._emitSelectChange(option.value);\n        } else {\n            if (wasSelected !== option.selected) {\n                option.selected ? this._selectionModel.select(option) : this._selectionModel.deselect(option);\n            }\n            if (isUserInput) {\n                this._keyManagerService._keyManager.setActiveItem(option);\n            }\n        }\n\n        if (wasSelected !== this._selectionModel.isSelected(option) || this.mobile) {\n            this._emitSelectChange();\n        }\n    }\n\n    /** @hidden */\n    private _emitSelectChange(defaultVal?: any): void {\n        if (this.canEmitValueChange) {\n            this._internalValue =\n                this._selectionModel.selected && this._selectionModel.selected.length !== 0\n                    ? (this.selected as OptionComponent).value\n                    : defaultVal;\n            this.valueChange.emit(this._internalValue);\n            this.onChange(this._internalValue);\n            this._changeDetectorRef.markForCheck();\n        }\n    }\n\n    /** @hidden */\n    private _getItemCount(): number {\n        if (this._optionPanel && this._headerElements().length > 0) {\n            return this._options.length + this._headerElements().length;\n        }\n        return this._options.length;\n    }\n\n    /** @hidden */\n    private _headerElements(): NodeListOf<Element> {\n        return this._optionPanel?.nativeElement.querySelectorAll(SELECT_HEADER_IDENTIFIER);\n    }\n\n    /** @hidden */\n    private async _setupMobileMode(): Promise<void> {\n        if (!this.mobile) {\n            return;\n        }\n\n        const injector = Injector.create({\n            providers: [{ provide: SELECT_COMPONENT, useValue: this }],\n            parent: this._injector\n        });\n\n        this._dynamicComponentService.createDynamicComponent(\n            this.selectOptionsListTemplate,\n            SelectMobileComponent,\n            {\n                containerRef: this._viewContainerRef\n            },\n            { injector }\n        );\n    }\n}\n\nexport class DeprecatedSelectCSSClasses implements ModuleDeprecation {\n    /** @hidden */\n    message = `Select CSS classes fd-select--compact, fd-select--compact--mobile, fd-popover-custom-select-body, fd-popover-custom-list are deprecated`;\n\n    /** @hidden */\n    alternative = {\n        name: 'Inspect the elements of the Select component to see the new classes',\n        link: ['/core', 'select']\n    };\n}\n","<ng-template [ngTemplateOutlet]=\"mobile ? mobileTemplate : desktopTemplate\"></ng-template>\n<ng-template #desktopTemplate>\n    <!-- &#64;deprecated leaving class fd-popover-custom-list to support backwards compatibility-->\n    <fd-popover\n        additionalBodyClass=\"fd-select-dropdown fd-popover-custom-list\"\n        [isOpen]=\"_isOpen\"\n        [triggers]=\"[]\"\n        [focusTrapped]=\"true\"\n        [disabled]=\"disabled || readonly\"\n        [appendTo]=\"appendTo\"\n        [scrollStrategy]=\"scrollStrategy\"\n        [closeOnEscapeKey]=\"true\"\n        [fillControlMode]=\"fillControlMode\"\n        [maxWidth]=\"fillControlMode !== 'equal' ? 600 : null\"\n        [closeOnOutsideClick]=\"closeOnOutsideClick\"\n        (isOpenChange)=\"_popoverOpenChangeHandle($event)\"\n    >\n        <fd-popover-control>\n            <ng-template [ngTemplateOutlet]=\"selectInputControlTemplate\"></ng-template>\n        </fd-popover-control>\n        <!-- &#64;deprecated leaving class fd-popover-custom-select-body to support backwards compatibility-->\n        <fd-popover-body class=\"fd-popover-custom-select-body\">\n            <ng-template [ngTemplateOutlet]=\"selectOptionsListTemplate\"></ng-template>\n        </fd-popover-body>\n    </fd-popover>\n</ng-template>\n<ng-template #selectInputControlTemplate>\n    <div\n        class=\"fd-select__control\"\n        #selectControl\n        [class]=\"_selectControlClass\"\n        [class.is-active]=\"_isOpen\"\n        [class.is-expanded]=\"_isOpen\"\n        [class.is-disabled]=\"disabled\"\n        [class.is-readonly]=\"readonly\"\n        [class.is-placeholder]=\"!selected\"\n        [attr.tabindex]=\"_tabIndex\"\n        [attr.id]=\"controlId\"\n        [attr.aria-active]=\"_isOpen\"\n        aria-live=\"polite\"\n        role=\"combobox\"\n        [attr.aria-haspopup]=\"ariaHasPopup\"\n        [attr.aria-description]=\"ariaDescription\"\n        aria-roledescription=\"listbox\"\n        [attr.aria-expanded]=\"_isOpen\"\n        [attr.aria-disabled]=\"disabled\"\n        [attr.aria-controls]=\"controlId + '-list-box'\"\n        [attr.aria-required]=\"required\"\n        [attr.title]=\"triggerValue\"\n        [attr.aria-label]=\"ariaLabel || ('platformSelect.selectOptionLabel' | fdTranslate)()\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n        [attr.aria-activedescendant]=\"_getAriaActiveDescendant()\"\n        (focus)=\"_onFocus()\"\n        (blur)=\"_onBlur()\"\n    >\n        <div class=\"fd-select__text-content\">\n            <ng-template\n                [ngTemplateOutlet]=\"controlTemplate ? controlTemplate : defaultSelectContent\"\n                [ngTemplateOutletContext]=\"{ $implicit: triggerValue, selected: selected }\"\n            >\n            </ng-template>\n            <ng-template #defaultSelectContent>\n                {{ triggerValue }}\n            </ng-template>\n        </div>\n        @if (!readonly) {\n            <span\n                fd-button\n                fdType=\"transparent\"\n                class=\"fd-select__button\"\n                [ngClass]=\"selectDropdownButtonClass\"\n                [class.is-disabled]=\"disabled\"\n            >\n                <fd-icon [ariaHidden]=\"true\" [glyph]=\"glyph\" [font]=\"glyphFont\"></fd-icon>\n            </span>\n        }\n    </div>\n</ng-template>\n<ng-template #selectOptionsListTemplate>\n    <ul\n        #optionPanel\n        fd-list\n        class=\"fd-select-options\"\n        role=\"listbox\"\n        tabindex=\"-1\"\n        [mobileMode]=\"mobile\"\n        [dropdownMode]=\"true\"\n        [hasMessage]=\"!!stateMessage || (!!advancedStateMessage?.hasErrors && !!advancedStateMessage?.template)\"\n        [attr.id]=\"controlId + '-list-box'\"\n        [style.max-height]=\"maxHeight || calculatedMaxHeight + 'px'\"\n        [style.padding-block-start.rem]=\"showEllipsis && stateMessage ? 2 : 0\"\n        [attr.tooltip]=\"triggerValue\"\n    >\n        @if (stateMessage) {\n            <li\n                [attr.aria-label]=\"stateMessage\"\n                fd-list-message\n                [class.fd-select-message]=\"!showEllipsis\"\n                tabindex=\"-1\"\n                role=\"presentation\"\n                [type]=\"state || 'default'\"\n            >\n                @if (!showEllipsis) {\n                    <span fd-list-title>\n                        {{ stateMessage }}\n                    </span>\n                } @else {\n                    <span>\n                        {{ stateMessage }}\n                    </span>\n                }\n            </li>\n        }\n        @if (advancedStateMessage?.hasErrors && advancedStateMessage?.template) {\n            <li fd-list-message tabindex=\"-1\" role=\"presentation\" [type]=\"state || 'default'\">\n                <ng-template [ngTemplateOutlet]=\"advancedStateMessage!.template!\"></ng-template>\n            </li>\n        }\n        <ng-content></ng-content>\n    </ul>\n</ng-template>\n<ng-template #mobileTemplate>\n    <ng-template [ngTemplateOutlet]=\"selectInputControlTemplate\"></ng-template>\n    <div #dialogContainer></div>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { OptionComponent } from './option/option.component';\nimport { SelectComponent } from './select.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    exports: [SelectComponent, OptionComponent],\n    imports: [SelectComponent, OptionComponent]\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SelectKeyManagerService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,IAAI,cAAc,GAAG,CAAC;AAEtB;;;AAGG;MACU,uBAAuB,CAAA;AAChC;;;;AAIG;AACH,IAAA,WAAA;;IAEa,MAAuB;;AAEvB,IAAA,WAAA,GAAc,KAAK,EAAA;QAFnB,IAAA,CAAA,MAAM,GAAN,MAAM;QAEN,IAAA,CAAA,WAAW,GAAX,WAAW;IACrB;AACN;AAED;;AAEG;MAiCU,eAAe,CAAA;AA8BxB;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;IACpE;;AAGA,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO;IACvB;;IAYA,WAAA,CACY,WAAuB,EACvB,kBAAqC,EAAA;QADrC,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;;AAnD9B,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,UAAA,EAAa,cAAc,EAAE,EAAE;;QAQpC,IAAA,CAAA,QAAQ,GAAG,KAAK;AAEhB;;AAEG;AAEM,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA2B;;QAItE,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAOhB,IAAA,CAAA,SAAS,GAAsB,OAAO;;AAe7B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;;QAGpC,IAAA,CAAA,oBAAoB,GAAG,EAAE;;QAGzB,IAAA,CAAA,OAAO,GAAG,KAAK;IAMpB;;IAGH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAC/D,YAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO;AACzD,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;AAC3C,QAAA,CAAC,CAAC;IACN;AAEA;;;;;AAKG;IACH,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;AAEhC,YAAA,IAAI,SAAS,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACzC,gBAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS;AACrC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC7B;QACJ;IACJ;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IACjC;AAEA;;;;AAIG;IACH,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;AAEA;;;;AAIG;IACH,iBAAiB,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;AAEA;AAC0B;IAC1B,KAAK,CAAC,OAAqB,EAAE,OAAsB,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAE9C,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACrC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC1B;IACJ;AAEA;;AAEG;IACH,QAAQ,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS;IACzB;AAEA;AAC0D;IAC1D,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAA4B;IACxD;AAEA;;AAEG;IACH,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvE;IACJ;AAEA;;AAEG;IACH,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvE;IACJ;AAEA;;;;AAIG;AACH,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACpE,IAAI,CAAC,qBAAqB,EAAE;YAC5B,KAAK,CAAC,cAAc,EAAE;QAC1B;IACJ;;IAGA,qBAAqB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE;IACJ;8GAhLS,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,kkBAwBP,kBAAkB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1GvC,qWAWA,EAAA,MAAA,EAAA,CAAA,mKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDqEc,kBAAkB,kHAAE,gBAAgB,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,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAErC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhC3B,SAAS;+BACI,wBAAwB,EAAA,aAAA,EAEnB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,YAAY,EAAE,IAAI;AAClB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,SAAS,EAAE,yBAAyB;AACpC,wBAAA,WAAW,EAAE;AAChB,qBAAA,EAAA,OAAA,EAeQ,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,qWAAA,EAAA,MAAA,EAAA,CAAA,mKAAA,CAAA,EAAA;;sBAI9C;;sBAIA;;sBAIA;;sBAMA;;sBAIA,WAAW;uBAAC,mBAAmB;;sBAI/B,eAAe;uBAAC,kBAAkB;;;MEhG1B,uBAAuB,CAAA;AAOhC;;;AAGG;IACH,eAAe,GAAA;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,0BAA0B,CAAmB,IAAI,CAAC,UAAU,CAAC,QAAQ;AACvF,aAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB;AACvD,aAAA,uBAAuB;AACvB,aAAA,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,KAAK;AACjE,aAAA,uBAAuB,CAAC,CAAC,UAAU,CAAC,CAAC;QAE1C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;AAEtF,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;YACtC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACtF,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;gBACzD,IAAI,CAAC,2BAA2B,EAAE;YACtC;AAAO,iBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAChE,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,qBAAqB,EAAE;YACvD;AACJ,QAAA,CAAC,CAAC;IACN;;IAGA,2BAA2B,GAAA;QACvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC;AAC/D,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,wBAAwB,CACzG,iBAAiB,EACjB,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAChC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CACvD;IACL;AAEA;;;AAGG;AACH,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;;AAGhC,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;YAE5D,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAC1B;aAAO;AACH,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AAEzD,YAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE;gBACvC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;oBAChC,OAAO,CAAC,kBAAkB,EAAE;gBAChC;qBAAO;oBACH,OAAO,CAAC,iBAAiB,EAAE;gBAC/B;gBACA,KAAK,CAAC,cAAc,EAAE;YAC1B;AAEA,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;;AAG/C,YAAA,IAAI,cAAc,IAAI,wBAAwB,KAAK,cAAc,EAAE;AAC/D,gBAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAE,cAAmC,CAAC,SAAS,EAAE,KAAK,CAAC;YAClG;AACA,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QAC5B;IACJ;AAEA;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW;AAChC,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnE,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE;AAEnC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE;YACvC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;gBAChC,OAAO,CAAC,kBAAkB,EAAE;YAChC;iBAAO;gBACH,OAAO,CAAC,iBAAiB,EAAE;YAC/B;QACJ;AAAO,aAAA,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;;YAE3E,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;;;QAG3B;AAAO,aAAA,IACH,CAAC,QAAQ;YACT,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,YAAA,OAAO,CAAC,UAAU;AAClB,YAAA,CAAC,cAAc,CAAC,KAAK,CAAC,EACxB;YACE,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE;AAC1C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAC1B;AAAO,aAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;AACrD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBAClB,KAAK,CAAC,cAAc,EAAE;YAC1B;QACJ;aAAO;AACH,YAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QAC5B;IACJ;AAEA;;;AAGG;IACK,SAAS,GAAA;QACb,OAAO,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;IAC3G;8GAhIS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;MCHY,gBAAgB,GAAG,IAAI,cAAc,CAAkB,iBAAiB;;ACuBrF;;;AAGG;AAoBG,MAAO,qBAAsB,SAAQ,cAA+B,CAAA;;AAgBtE,IAAA,WAAA,CAAsC,gBAAiC,EAAA;AACnE,QAAA,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,MAAM,CAAC;AAZrD;;;;AAIG;QACH,IAAA,CAAA,YAAY,GAA4B,IAAI;;AAGpC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;IAK3C;;AAIA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B;IACJ;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,yBAAyB,EAAE;IACpC;;IAGA,eAAe,GAAA;QACX,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;AAEA;;;AAGG;IACH,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/B;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/B;;IAGQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAC9C,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,CACL;IACL;;IAGQ,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC5D,GAAG,IAAI,CAAC,YAAY;AACpB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;AACzC,YAAA,cAAc,EAAE;AACnB,SAAA,CAAC;IACN;AA9ES,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAgBV,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAhB3B,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAfnB,CAAC,uBAAuB,CAAC,oKCrCxC,49CAgCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOQ,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,cAAc,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEd,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,6DACrB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAC1B,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAnBjC,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAEX,uBAAuB,CAAC,MAAM,aACpC,CAAC,uBAAuB,CAAC,EAAA,OAAA,EAC3B;wBACL,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,eAAe;wBACf,qBAAqB;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB,0BAA0B;wBAC1B;AACH,qBAAA,EAAA,QAAA,EAAA,49CAAA,EAAA;;0BAkBY,MAAM;2BAAC,gBAAgB;;sBAdnC,SAAS;uBAAC,gBAAgB;;sBAmB1B,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEnEvC;;;AAGG;MAMU,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAJjB,YAAY,EAAE,eAAe,EAAE,qBAAqB,aACpD,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAGtB,kBAAkB,EAAA,SAAA,EAFhB,CAAC,uBAAuB,CAAC,YAF1B,YAAY,EAAE,eAAe,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAIrD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,qBAAqB,CAAC;oBAC/D,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,SAAS,EAAE,CAAC,uBAAuB;AACtC,iBAAA;;;ACkDD,IAAI,cAAc,GAAG,CAAC;AAEtB,MAAM,wBAAwB,GAAG,wBAAwB;AAElD,MAAM,uBAAuB,GAAG;AAEvC;AACO,MAAM,qBAAqB,GAAG;IAIzB;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACzB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAKhC;;;AAGG;MAsCU,eAAe,CAAA;AAYxB;;;AAG6D;IAC7D,IACI,oBAAoB,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;IACtC;AAEA,IAAA,IAAI,oBAAoB,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB;IACrC;;IAgDA,IACI,KAAK,CAAC,QAAa,EAAA;AACnB,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;QAClC;IACJ;AACA,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,cAAc;IAC9B;;AAsJA,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,oBAAoB,CAAC,QAAQ;IAC9D;;AASA,IAAA,IAAI,mBAAmB,GAAA;QACnB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,EAAE,EAAE,IAAI,CAAC,kBAAkB;aAChE,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;aACjC,IAAI,CAAC,GAAG,CAAC;IAClB;;AAgBA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C;;AAGA,IAAA,IAAI,YAAY,GAAA;QACZ,MAAM,UAAU,GAAG,GAAG;AACtB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,WAAW,IAAI,UAAU;QACzC;QACA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU;IACpE;AAEA;;;;AAIG;AACH,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;IAChE;;AAGA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;IAC5C;AAEA;;;;;;AAMG;AACH,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,QACI,CAAC,IAAI,CAAC,MAAM;aACX,IAAI,CAAC,MAAM;;AAER,gBAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB;gBACrC,CAAC,IAAI,CAAC,OAAO,CAAC;;AAElB,aAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,KAAK,KAAK,CAAC;IAE/F;;IAGA,IACI,WAAW,CAAC,EAAiC,EAAA;AAC7C,QAAA,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAC1B,YAAA,MAAM,KAAK,CAAC,kCAAkC,CAAC;QACnD;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;YAEtB,IAAI,CAAC,oBAAoB,EAAE;QAC/B;IACJ;AAEA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;;AAGA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;IACxC;;AAGA,IAAA,IAAI,mBAAmB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB;IACvD;;AA2BA,IAAA,WAAA,CAC2B,SAAiB,EACvB,kBAA2C,EAC3C,kBAAqC,EACrC,iBAAmC,EACvB,wBAAiD,EACzC,SAAoB,EAC5B,SAAmB,EACvC,uBAA+C,EAAA;QANvC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACL,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;QAChB,IAAA,CAAA,SAAS,GAAT,SAAS;QACjB,IAAA,CAAA,SAAS,GAAT,SAAS;QAC7B,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;AAlVpC;;;;;AAKG;QAEH,IAAA,CAAA,YAAY,GAAqB,UAAU;;AAI3C,QAAA,IAAA,CAAA,SAAS,GAAG,CAAA,UAAA,EAAa,cAAc,EAAE,EAAE;;QAQ3C,IAAA,CAAA,MAAM,GAAG,KAAK;;QAQd,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAIhB,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAIhB,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAwBhB,IAAA,CAAA,KAAK,GAAG,iBAAiB;;QAIzB,IAAA,CAAA,SAAS,GAAa,2BAA2B;;QAIjD,IAAA,CAAA,mBAAmB,GAAG,IAAI;AAE1B;;;;;AAKG;QAEH,IAAA,CAAA,eAAe,GAAoB,UAAU;AAU7C;;;;AAIG;QAEH,IAAA,CAAA,qBAAqB,GAAG,IAAI;;QAI5B,IAAA,CAAA,yBAAyB,GAAG,GAAG;;AAY/B,QAAA,IAAA,CAAA,YAAY,GAAqB,EAAE,cAAc,EAAE,IAAI,EAAE;;QAIzD,IAAA,CAAA,MAAM,GAAG,IAAI;AAcb;;;;AAIG;QAEH,IAAA,CAAA,cAAc,GAA+B,OAAO;;QAIpD,IAAA,CAAA,YAAY,GAAG,SAAS;;AAQf,QAAA,IAAA,CAAA,YAAY,GAA0B,IAAI,YAAY,EAAW;;AAIjE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAK;AAgC5C;;AAEG;QACH,IAAA,CAAA,OAAO,GAAG,KAAK;AAsBf;;;AAGG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AAStC;;;AAGG;AACM,QAAA,IAAA,CAAA,uBAAuB,GAAwC,KAAK,CAAC,MAAK;AAC/E,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAE9B,YAAA,OAAO,QAAQ,EAAE,OAAO,CAAC,IAAI,CACzB,SAAS,CAAC,QAAQ,CAAC,EACnB,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAC9E;AACL,QAAA,CAAC,CAAC;;AA4EO,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,KAAK,iDAAC;AAEhD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE;AAC9C,YAAA,QAAQ,EAAE;AACb,SAAA,CAAC;;QAGM,IAAA,CAAA,qBAAqB,GAAG,KAAK;;QAG7B,IAAA,CAAA,oBAAoB,GAAG,CAAC;;QAGxB,IAAA,CAAA,QAAQ,GAAG,KAAK;;AAShB,QAAA,IAAA,CAAA,cAAc,GAAiB,IAAI,YAAY,EAAE;;QAoDzD,IAAA,CAAA,YAAY,GAAG,CAAC,EAAO,EAAE,EAAO,KAAc,EAAE,KAAK,EAAE;;AAiCvD,QAAA,IAAA,CAAA,QAAQ,GAAyB,MAAK,EAAE,CAAC;;AAGzC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAW,EAAE,CAAC;AA3EtB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACvC;QACA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC;IACjD;;IAIA,oBAAoB,GAAA;QAChB,IAAI,CAAC,uBAAuB,EAAE;IAClC;;AAIA,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC;kBACC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,KAAK;kBAChD,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAC7D;AACA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,EAAE;QACjD;IACJ;;IAIA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;IAC7C;;AAGA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC1C;;IAMA,QAAQ,GAAA;QACJ,IAAI,CAAC,yBAAyB,EAAE;IACpC;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;QACzC,IAAI,CAAC,gBAAgB,EAAE;IAC3B;;IAGA,kBAAkB,GAAA;QACd,IAAI,CAAC,+BAA+B,EAAE;IAC1C;;AAGA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAC9B,IAAI,OAAO,CAAC,2BAA2B,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC7E,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACrF;AAAO,aAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;QAC3C;IACJ;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;;IASA,IAAI,GAAA;QACA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAC3F;QACJ;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QAEnB,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAChC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,QAAQ,IAAI,GAAG,EACvE,EAAE,CACL;QAED,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC;QACnE,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,EAAE;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;;AAGA,IAAA,KAAK,CAAC,UAAU,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,EAAE;YAC5B,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,gBAAgB,EAAE;gBACpD,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,EAAE;YAC3E;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3F,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;YACtC,IAAI,CAAC,SAAS,EAAE;AAEhB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC;IACJ;;IAGA,KAAK,GAAA;QACD,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAA6B,EAAC,KAAK,EAAE;IACnE;;IAGA,IAAI,GAAA;QACA,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAA6B,EAAC,IAAI,EAAE;IAClE;;AAGA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;;AAGA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;;AAGA,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACpC;IACJ;;AAGA,IAAA,oBAAoB,CAAC,KAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;;;QAIpD,IAAI,mBAAmB,EAAE;YACrB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC;QAC1E;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;;YAGtB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACzD;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC1C;;AAGA,IAAA,YAAY,CAAC,KAAU,EAAA;QACnB,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAuB,KAAI;AACvE,YAAA,IAAI;;AAEA,gBAAA,OAAO,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;YACzE;YAAE,OAAO,KAAK,EAAE;gBACZ,IAAI,SAAS,EAAE,EAAE;;AAEb,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACvB;AACA,gBAAA,OAAO,KAAK;YAChB;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,mBAAmB,EAAE;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACpD;AAEA,QAAA,OAAO,mBAAmB;IAC9B;;AAGA,IAAA,wBAAwB,CAAC,MAAe,EAAA;AACpC,QAAA,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;IACvC;;IAGA,cAAc,GAAA;QACV,OAAO,IAAI,CAAC,kBAAkB;IAClC;;AAGA,IAAA,iBAAiB,CAAC,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAEtC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB;;IAGA,uBAAuB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;AACvE,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,kBAAkB,EAAE;QAC5D;AAAO,aAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;YAC/E,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpE;IACJ;;IAGA,oBAAoB,GAAA;;;AAGhB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;AAC1F,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;IACH,uBAAuB,GAAA;QACnB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI;IACzD;;AAGA,IAAA,wBAAwB,CAAC,WAAmB,EAAE,UAAkB,EAAE,qBAA6B,EAAA;AAC3F,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC,YAAY,IAAI,UAAU;AACjG,QAAA,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY;AAC/C,QAAA,IAAI,YAAY,GAAG,qBAAqB,EAAE;AACtC,YAAA,OAAO,YAAY;QACvB;QAEA,IAAI,YAAY,GAAG,YAAY,GAAG,qBAAqB,GAAG,uBAAuB,EAAE;AAC/E,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,uBAAuB,GAAG,YAAY,CAAC;QAC7E;AACA,QAAA,OAAO,qBAAqB;IAChC;;IAGA,cAAc,GAAA;;AAEV,QAAA,OAAO,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,GAAG,CAAC;IAChE;;IAGA,yBAAyB,GAAA;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAkB,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI;QAEzC,IAAI,CAAC,uBAAuB,EAAE;IAClC;;IAGA,+BAA+B,GAAA;QAC3B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrF,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;AACjD,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;AACzD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1F,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,oBAAoB,EAAE;AAC/B,QAAA,CAAC,CAAC;IACN;;IAGA,wBAAwB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,UAAU,EAAE;YACvG,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;QAC5D;AACA,QAAA,OAAO,IAAI;IACf;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;;IAGA,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QAErB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;;AAGA,IAAA,YAAY,KAAU;;IAGd,aAAa,GAAA;AACjB,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACjF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC;YAE/C,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE;gBACnC,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,EAAE;YAChB;AACJ,QAAA,CAAC,CAAC;;;AAIF,QAAA,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,aAAa,CAAC;AACvD,aAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;aAClC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,QAAA,CAAC,CAAC;IACV;AAEA;;;AAGG;IACK,SAAS,CAAC,MAAuB,EAAE,WAAoB,EAAA;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3D,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,KAAK,IAAI,CAAC,qBAAqB,EAAE;YACrF,MAAM,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;QACxC;aAAO;AACH,YAAA,IAAI,WAAW,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACjC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjG;YACA,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC;YAC7D;QACJ;AAEA,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YACxE,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;;AAGQ,IAAA,iBAAiB,CAAC,UAAgB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc;AACf,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,KAAK;AACtE,sBAAG,IAAI,CAAC,QAA4B,CAAC;sBACnC,UAAU;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AAClC,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;;IAGQ,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM;QAC/D;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;IAC/B;;IAGQ,eAAe,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;IACtF;;AAGQ,IAAA,MAAM,gBAAgB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;QAEF,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAChD,IAAI,CAAC,yBAAyB,EAC9B,qBAAqB,EACrB;YACI,YAAY,EAAE,IAAI,CAAC;AACtB,SAAA,EACD,EAAE,QAAQ,EAAE,CACf;IACL;AAjvBS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAwWT,UAAU,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxWhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAvBb;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,WAAW,EAAE;AAChB,aAAA;YACD,uBAAuB,CAAC,eAAe,CAAC;YACxC,uBAAuB;AACvB,YAAA,+BAA+B;AAClC,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAmMgB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoBrB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMI,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvUhD,2iKA6HA,EAAA,MAAA,EAAA,CAAA,wpjFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,uBAAuB,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,aAAa,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEpB,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFlB,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKV,eAAe,EAAA,UAAA,EAAA,CAAA;kBArC3B,SAAS;+BACI,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,2BAA2B,EAAE,QAAQ;;AAErC,wBAAA,gCAAgC,EAAE,QAAQ;;AAE1C,wBAAA,wCAAwC,EAAE;qBAC7C,EAAA,SAAA,EACU;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,WAAW,EAAA;AACd,yBAAA;AACD,wBAAA,uBAAuB,CAAA,eAAA,CAAiB;wBACxC,uBAAuB;AACvB,wBAAA,+BAA+B;qBAClC,EAAA,OAAA,EACQ;wBACL,gBAAgB;wBAChB,gBAAgB;wBAChB,uBAAuB;wBACvB,oBAAoB;wBACpB,OAAO;wBACP,aAAa;wBACb,aAAa;wBACb,oBAAoB;wBACpB,eAAe;wBACf,eAAe;wBACf;AACH,qBAAA,EAAA,QAAA,EAAA,2iKAAA,EAAA,MAAA,EAAA,CAAA,wpjFAAA,CAAA,EAAA;;0BA0WI,SAAS;2BAAC,UAAU;;0BAIpB;;0BACA;;0BAAY;;0BACZ;;sBA9VJ;;sBAUA;;sBASA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAYA;;sBAIA;;sBAIA;;sBAIA;;sBASA;;sBAIA;;sBAIA;;sBAQA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAQA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAItD,SAAS;uBAAC,eAAe;;sBAIzB,SAAS;uBAAC,2BAA2B;;sBAKrC,SAAS;uBAAC,iBAAiB;;sBAO3B,SAAS;uBAAC,mBAAmB;;sBAM7B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAsG7C;;sBAoEA,YAAY;uBAAC,eAAe;;sBAM5B,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAalC,YAAY;uBAAC,OAAO;;MAyWZ,0BAA0B,CAAA;AAAvC,IAAA,WAAA,GAAA;;QAEI,IAAA,CAAA,OAAO,GAAG,yIAAyI;;AAGnJ,QAAA,IAAA,CAAA,WAAW,GAAG;AACV,YAAA,IAAI,EAAE,qEAAqE;AAC3E,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ;SAC3B;IACL;AAAC;;AEj3BD;;;AAGG;MAKU,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAFX,eAAe,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CADhC,eAAe,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;AAGjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAFX,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAEhB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,eAAe;AAC7C,iBAAA;;;ACZD;;AAEG;;;;"}