{"version":3,"file":"fundamental-ngx-core-toolbar.mjs","sources":["../../../../libs/core/toolbar/abstract-toolbar-item.class.ts","../../../../libs/core/toolbar/tokens.ts","../../../../libs/core/toolbar/toolbar-item.directive.ts","../../../../libs/core/toolbar/toolbar-form-label.directive.ts","../../../../libs/core/toolbar/toolbar-label.directive.ts","../../../../libs/core/toolbar/toolbar-overflow-button-menu.directive.ts","../../../../libs/core/toolbar/toolbar-overflow-button.directive.ts","../../../../libs/core/toolbar/toolbar-separator.component.ts","../../../../libs/core/toolbar/toolbar-spacer.directive.ts","../../../../libs/core/toolbar/toolbar.component.ts","../../../../libs/core/toolbar/toolbar.component.html","../../../../libs/core/toolbar/toolbar.module.ts","../../../../libs/core/toolbar/fundamental-ngx-core-toolbar.ts"],"sourcesContent":["import { OverflowPriority } from '@fundamental-ngx/cdk/utils';\n\nexport abstract class ToolbarItem {\n    abstract element: HTMLElement;\n    abstract isSpacer: boolean;\n    abstract width: number;\n    abstract priority: OverflowPriority;\n    abstract group: number;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_TOOLBAR = new InjectionToken('FdToolbarComponent');\n","import { Directive, ElementRef, forwardRef, inject, Input } from '@angular/core';\nimport { OverflowPriority } from '@fundamental-ngx/cdk/utils';\nimport { ToolbarItem } from './abstract-toolbar-item.class';\nimport { OverflowPriorityEnum } from './toolbar.component';\n\n@Directive({\n    selector: '[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]',\n    providers: [{ provide: ToolbarItem, useExisting: forwardRef(() => ToolbarItemDirective) }],\n    standalone: true\n})\nexport class ToolbarItemDirective implements ToolbarItem {\n    /** The priority of the item. */\n    @Input()\n    fdOverflowPriority: OverflowPriority = OverflowPriorityEnum.HIGH;\n    /** The group number of the item. */\n    @Input()\n    fdOverflowGroup = 0;\n\n    /** @hidden */\n    get group(): number {\n        return this.fdOverflowGroup;\n    }\n\n    /** @hidden */\n    get priority(): OverflowPriority {\n        return this.fdOverflowPriority;\n    }\n\n    /** @hidden */\n    get element(): HTMLElement {\n        return this._elementRef.nativeElement;\n    }\n\n    /** @hidden */\n    get isSpacer(): boolean {\n        return this.element.classList.contains('fd-toolbar__spacer');\n    }\n\n    /** @hidden */\n    get width(): number {\n        if (!this.element.clientWidth) {\n            return this.lastWidth;\n        }\n        this.lastWidth = this.element.clientWidth + 8; // ELEMENT_MARGIN\n        return this.lastWidth;\n    }\n\n    /** @hidden */\n    private lastWidth = 0;\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n}\n","import { Directive } from '@angular/core';\nimport { ToolbarItemDirective } from './toolbar-item.directive';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-toolbar-form-label]',\n    host: {\n        class: 'fd-form-label fd-toolbar__overflow-form-label fd-toolbar__overflow-form-label--text'\n    },\n    standalone: true\n})\nexport class ToolbarFormLabelDirective extends ToolbarItemDirective {}\n","import { Directive } from '@angular/core';\n\nimport { ToolbarItemDirective } from './toolbar-item.directive';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-toolbar-label]',\n    host: {\n        class: 'fd-label fd-toolbar__overflow-label'\n    },\n    standalone: true\n})\nexport class ToolbarLabelDirective extends ToolbarItemDirective {}\n","import { Directive } from '@angular/core';\nimport { ToolbarItemDirective } from './toolbar-item.directive';\n\n@Directive({\n    selector: '[fdToolbarOverflowButtonMenu], [fd-toolbar-overflow-button-menu]',\n    host: {\n        class: 'fd-toolbar__overflow-button--menu'\n    },\n    standalone: true\n})\nexport class ToolbarOverflowButtonMenuDirective extends ToolbarItemDirective {}\n","import { Directive } from '@angular/core';\nimport { ToolbarItemDirective } from './toolbar-item.directive';\n\n@Directive({\n    selector: '[fdToolbarOverflowButton], [fd-toolbar-overflow-button]',\n    host: {\n        class: 'fd-toolbar__overflow-button'\n    },\n    standalone: true\n})\nexport class ToolbarOverflowButtonDirective extends ToolbarItemDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'fd-toolbar-separator',\n    template: '',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-toolbar__separator'\n    },\n    standalone: true\n})\nexport class ToolbarSeparatorComponent {}\n","import { Directive, HostBinding, Input } from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'fd-toolbar-spacer',\n    standalone: true\n})\nexport class ToolbarSpacerDirective {\n    /** Determines the width of spacer when fixed property is set to true\n     * Allowed values: absolute and relative metrics\n     * Default value: 0px\n     */\n    @HostBinding('style.width')\n    @Input()\n    width = '0px';\n\n    /** Property allows user to pass additional class\n     */\n    @Input()\n    class = '';\n\n    /** Determines if spacer should take only size taken from width property\n     * Default value: false\n     * Default behaviour: spacer takes remaining space automatically\n     */\n    @Input()\n    fixed = false;\n\n    /** @hidden */\n    @HostBinding('attr.class')\n    get css(): string {\n        return `fd-toolbar__spacer ${this.fixed ? 'fd-toolbar__spacer--fixed' : ''} ${this.class}`;\n    }\n}\n","import {\n    AfterContentInit,\n    AfterViewChecked,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    contentChildren,\n    DestroyRef,\n    ElementRef,\n    HostBinding,\n    inject,\n    Inject,\n    Injector,\n    Input,\n    Optional,\n    signal,\n    SkipSelf,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { DYNAMIC_PAGE_HEADER_TOKEN, DynamicPageHeader } from '@fundamental-ngx/core/shared';\n\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n    applyCssClass,\n    CssClassBuilder,\n    DynamicPortalComponent,\n    intersectionObservable,\n    Nullable,\n    OVERFLOW_PRIORITY_SCORE,\n    OverflowPriority,\n    ResizeObserverService\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n    ContentDensityMode,\n    ContentDensityObserver,\n    contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { HeadingLevel } from '@fundamental-ngx/core/shared';\nimport { TitleComponent, TitleToken } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { BehaviorSubject, combineLatest, EMPTY, filter, first, map, Observable, of, switchMap } from 'rxjs';\nimport { ToolbarItem } from './abstract-toolbar-item.class';\nimport { FD_TOOLBAR } from './tokens';\nimport { ToolbarSeparatorComponent } from './toolbar-separator.component';\nimport { ToolbarSpacerDirective } from './toolbar-spacer.directive';\n\nconst ELEMENT_MARGIN = 8;\nconst OVERFLOW_BTN_COZY = 36;\nconst OVERFLOW_BTN_COMPACT = 32;\nconst MAX_CONTENT_SIZE = 99999999;\n\nexport type ToolbarType = 'solid' | 'transparent' | 'auto' | 'info';\n\nlet toolbarTitleId = 0;\nlet toolbarId = 0;\n\nexport const enum OverflowPriorityEnum {\n    ALWAYS = 'always',\n    NEVER = 'never',\n    LOW = 'low',\n    HIGH = 'high',\n    DISAPPEAR = 'disappear'\n}\n\n@Component({\n    selector: 'fd-toolbar',\n    templateUrl: './toolbar.component.html',\n    styleUrl: './toolbar.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        contentDensityObserverProviders({\n            defaultContentDensity: ContentDensityMode.COMPACT\n        }),\n        {\n            provide: FD_TOOLBAR,\n            useExisting: ToolbarComponent\n        }\n    ],\n    imports: [\n        ToolbarSpacerDirective,\n        ToolbarSeparatorComponent,\n        PopoverModule,\n        ButtonComponent,\n        DynamicPortalComponent,\n        TitleComponent,\n        FdTranslatePipe\n    ]\n})\nexport class ToolbarComponent implements AfterViewInit, AfterViewChecked, CssClassBuilder, AfterContentInit {\n    /**\n     * The ID of the toolbar title\n     * */\n    @Input()\n    titleId = `fd-toolbar-title-${toolbarTitleId++}`;\n\n    /** Property allows user to pass additional class\n     */\n    @Input()\n    class: string;\n\n    /** Determines if overflow button should be visible\n     * Default value: false\n     */\n    @Input()\n    set shouldOverflow(val: boolean) {\n        this._shouldOverflow = val;\n        this.shouldOverflow$.next(val);\n    }\n\n    get shouldOverflow(): boolean {\n        return this._shouldOverflow;\n    }\n\n    /** Determines the type of toolbar\n     * Available options: 'solid' | 'transparent' | 'auto' | 'info'\n     * Default value: 'solid'\n     */\n    @Input()\n    fdType: ToolbarType = 'solid';\n\n    /** The title for the toolbar. */\n    @Input()\n    title: string;\n\n    /** Determines if toolbar should has active state (only when fdType == 'info')\n     * Default value: false\n     */\n    @Input()\n    active = false;\n\n    /** Determines if toolbar should clear border bottom\n     * Default value: false\n     */\n    @Input()\n    clearBorder = false;\n\n    /** Whether all items should be inside overflow */\n    @Input()\n    forceOverflow = false;\n\n    /** Tabindex of the toolbar element, to be used when fdType=\"info\" */\n    @Input()\n    tabindex = -1;\n\n    /**\n     * Heading level of the toolbar title.\n     */\n    @Input()\n    set headingLevel(level: Nullable<HeadingLevel>) {\n        if (typeof level === 'number') {\n            this._headingLevel = level;\n        } else if (typeof level === 'string') {\n            this._headingLevel = Number.parseInt(level.replace(/\\D/g, ''), 10);\n        }\n    }\n\n    /** Toolbar Aria-label attribute. */\n    @Input()\n    @HostBinding('attr.aria-label')\n    ariaLabel: string;\n\n    /** Toolbar Aria-labelledby attribute. */\n    @Input()\n    @HostBinding('attr.aria-labelledby')\n    ariaLabelledBy: string;\n\n    /** Toolbar Aria-describedby attribute. */\n    @Input()\n    @HostBinding('attr.aria-describedby')\n    ariaDescribedBy: string;\n\n    /** Toolbar Aria-orientation attribute. */\n    @Input()\n    @HostBinding('attr.aria-orientation')\n    ariaOrientation: 'horizontal' | 'vertical' = 'horizontal';\n\n    /**\n     * The ID of the toolbar\n     * */\n    @Input()\n    @HostBinding('attr.id')\n    id = `fd-toolbar-${toolbarId++}`;\n\n    /** @hidden */\n    @ViewChild('titleElement', { read: ElementRef })\n    titleElement: ElementRef<HTMLHeadElement>;\n\n    /** @hidden */\n    @HostBinding('attr.role')\n    protected readonly _role = 'toolbar';\n\n    /** @hidden */\n    readonly toolbarItems = contentChildren(ToolbarItem, { descendants: true });\n\n    /** @hidden */\n    @ContentChild(TitleToken)\n    set titleComponent(title: TitleToken | null) {\n        this._titleComponent$.next(title);\n    }\n\n    get titleComponent(): TitleToken | null {\n        return this._titleComponent$.value;\n    }\n\n    /** @hidden */\n    overflowItems$: Observable<ToolbarItem[]>;\n\n    /** @hidden */\n    overflownItems: ToolbarItem[] = [];\n\n    /** @hidden */\n    spacerUsed = signal(false);\n\n    /** @hidden */\n    spacerDirectives = contentChildren(ToolbarSpacerDirective);\n\n    /** @hidden */\n    separatorDirectives = contentChildren(ToolbarSeparatorComponent);\n\n    /** @hidden */\n    _headingLevel = 2;\n\n    /** HTML Element Reference. */\n    readonly elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private _titleComponent$: BehaviorSubject<TitleToken | null> = new BehaviorSubject<TitleToken | null>(null);\n\n    /** @hidden */\n    private _refreshOverflow$ = new BehaviorSubject<void>(undefined);\n\n    /** @hidden */\n    private get _toolbarWidth(): number {\n        const _overflow_btn_size = this._contentDensityObserver.isCompact ? OVERFLOW_BTN_COMPACT : OVERFLOW_BTN_COZY;\n        return (\n            (this.elementRef.nativeElement as HTMLElement).clientWidth -\n            (_overflow_btn_size + 4 * ELEMENT_MARGIN + 1 + this.separatorDirectives().length)\n        );\n    }\n\n    /** @hidden */\n    private _shouldOverflow = false;\n\n    /** @hidden */\n    private shouldOverflow$ = new BehaviorSubject<boolean>(false);\n\n    /** @hidden */\n    constructor(\n        private _cd: ChangeDetectorRef,\n        readonly _contentDensityObserver: ContentDensityObserver,\n        private readonly _destroyRef: DestroyRef,\n        private resizeObserverService: ResizeObserverService,\n        private readonly _injector: Injector,\n        @Optional() @SkipSelf() @Inject(DYNAMIC_PAGE_HEADER_TOKEN) private _dynamicPageHeader?: DynamicPageHeader\n    ) {\n        _contentDensityObserver.subscribe();\n    }\n\n    /** @hidden */\n    @applyCssClass\n    buildComponentCssClass(): string[] {\n        return [\n            'fd-toolbar',\n            `fd-toolbar--${this.fdType}`,\n            `${this.active && this.fdType === 'info' ? 'fd-toolbar--active' : ''}`,\n            `${this.title || this.titleComponent ? 'fd-toolbar--title' : ''}`,\n            `${this.clearBorder ? 'fd-toolbar--clear' : ''}`,\n            `${this._dynamicPageHeader ? 'fd-dynamic-page__toolbar' : ''}`\n        ];\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._updateSpacerUsed();\n\n        // Observe title element size changes to trigger recalculation when title content changes\n        const titleElementResize$ = this._titleComponent$.pipe(\n            switchMap((titleComponent): Observable<HTMLElement | null> => {\n                const titleElement = titleComponent?.elementRef?.nativeElement ?? this.titleElement?.nativeElement;\n                if (!titleElement) {\n                    return of(null);\n                }\n                // When title element resizes (e.g., text content changes), emit\n                return this.resizeObserverService.observe(titleElement).pipe(map(() => titleElement));\n            })\n        );\n\n        this.overflowItems$ = combineLatest([\n            this.resizeObserverService.observe(this.elementRef.nativeElement).pipe(map(() => this._toolbarWidth)),\n            toObservable(this.toolbarItems, { injector: this._injector }).pipe(\n                map((toolbarItems) => [...toolbarItems])\n            ),\n            titleElementResize$,\n            this.shouldOverflow$,\n            this._refreshOverflow$\n        ]).pipe(\n            map(([toolbarWidth, toolbarItems, titleElement, shouldOverflow]) => {\n                if (shouldOverflow) {\n                    const _sortedByPriorityAndGroupItems = this._getSortedByPriorityAndGroupItems(toolbarItems);\n                    const overflowItems: ToolbarItem[] = [];\n                    _sortedByPriorityAndGroupItems.reduce((_contentWidth, toolbarItem) => {\n                        const itemWidth = toolbarItem.width + 2;\n                        const itemPriority = toolbarItem.priority;\n                        const shouldItemBeRemovedByWidth = itemWidth + _contentWidth > toolbarWidth;\n                        const shouldAlwaysBeInOverflow =\n                            itemPriority === OverflowPriorityEnum.ALWAYS || this.forceOverflow;\n                        const shouldNeverBeInOverflow = itemPriority === OverflowPriorityEnum.NEVER;\n                        if ((shouldItemBeRemovedByWidth && !shouldNeverBeInOverflow) || shouldAlwaysBeInOverflow) {\n                            overflowItems.push(toolbarItem);\n                            return shouldAlwaysBeInOverflow ? _contentWidth : MAX_CONTENT_SIZE;\n                        } else {\n                            return _contentWidth + itemWidth;\n                        }\n                    }, titleElement?.clientWidth || 0);\n                    // Hide orphans\n                    for (const toolbarItem of overflowItems) {\n                        const groupedCollection = this._getGroupedCollection(toolbarItems);\n                        const groupedCollectionPriorities = this._getGroupedCollectionPriority(groupedCollection);\n                        const group = toolbarItem.group;\n                        const itemPriority = toolbarItem.priority;\n                        if (group !== 0 && itemPriority !== OverflowPriorityEnum.DISAPPEAR) {\n                            const itemsFromCurrentGroup =\n                                this._getElementsFromCurrentGroup(\n                                    group,\n                                    groupedCollection,\n                                    groupedCollectionPriorities\n                                ) || [];\n                            itemsFromCurrentGroup.forEach((i) => {\n                                if (overflowItems.indexOf(i) === -1) {\n                                    overflowItems.push(i);\n                                }\n                            });\n                        }\n                    }\n                    return overflowItems.sort((a, b) => this._sortPriorities(a.priority, b.priority));\n                }\n                return [];\n            }),\n            takeUntilDestroyed(this._destroyRef)\n        );\n        this.overflowItems$.subscribe((items) => {\n            this.overflownItems = items;\n            this._cd.detectChanges();\n        });\n        this.buildComponentCssClass();\n\n        // Use IntersectionObserver to detect when toolbar becomes visible\n        // (e.g., when rendered inside a tab that was initially hidden).\n        // This triggers a recalculation once the toolbar is visible and has proper dimensions.\n        this.shouldOverflow$\n            .pipe(\n                switchMap((shouldOverflow) =>\n                    shouldOverflow\n                        ? intersectionObservable(this.elementRef.nativeElement).pipe(\n                              filter((entries) => entries[0]?.isIntersecting),\n                              first()\n                          )\n                        : EMPTY\n                ),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this._refreshOverflow$.next();\n            });\n    }\n\n    /** @hidden */\n    ngAfterViewChecked(): void {\n        this.buildComponentCssClass();\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        if (this.titleComponent) {\n            this.titleComponent.elementRef?.nativeElement.classList.add('fd-toolbar__title');\n            this.buildComponentCssClass();\n        }\n    }\n\n    /** Change detection reference */\n    detectChanges(): void {\n        this._cd.detectChanges();\n    }\n\n    /** Method triggering collapsible toolbar  */\n    updateCollapsibleItems(): void {\n        this._refreshOverflow$.next();\n    }\n\n    /** @hidden */\n    private _updateSpacerUsed(): void {\n        // do not render extra spacer if there is at least one passed by the application\n        // and it is not fixed this.spacerUsed.set(this.spacer.length > 0 && this.spacer.some((spacer) => !spacer.fixed));\n        this.spacerUsed.set(\n            this.spacerDirectives().length > 0 && this.spacerDirectives().some((spacer) => !spacer.fixed)\n        );\n    }\n\n    /** @hidden Get group number with the lowest priority.\n     *  Uses for detecting a group of elements which would be hidden from the toolbar.\n     *  */\n    private _getLowestPriorityFromGroup(\n        itemGroup: number,\n        groupedCollectionPriority?: Record<number, OverflowPriority>\n    ): number {\n        const priority = groupedCollectionPriority;\n        if (!priority || !OVERFLOW_PRIORITY_SCORE.get(priority[itemGroup])) {\n            return itemGroup;\n        }\n\n        const groups = Object.keys(priority);\n\n        return groups.reduce((lowestGroup, currentGroup) => {\n            const lowestGroupPriority = priority[lowestGroup];\n            const currentGroupPriority = priority[currentGroup];\n            if (\n                OVERFLOW_PRIORITY_SCORE.get(currentGroupPriority)! < OVERFLOW_PRIORITY_SCORE.get(lowestGroupPriority)!\n            ) {\n                return +currentGroup;\n            }\n\n            return lowestGroup;\n        }, itemGroup as number);\n    }\n\n    /** @hidden */\n    private _getElementsFromCurrentGroup(\n        itemGroup: number,\n        groupedCollection?: Record<number, ToolbarItem[]>,\n        groupedCollectionPriority?: Record<number, OverflowPriority>\n    ): ToolbarItem[] {\n        const lowestPriorityFromGroup = this._getLowestPriorityFromGroup(itemGroup, groupedCollectionPriority);\n        if (!groupedCollection || !groupedCollectionPriority) {\n            return [];\n        }\n        let itemsToRemove = groupedCollection[lowestPriorityFromGroup];\n\n        delete groupedCollection[lowestPriorityFromGroup];\n        delete groupedCollectionPriority[lowestPriorityFromGroup];\n\n        if (lowestPriorityFromGroup !== itemGroup) {\n            itemsToRemove = [...itemsToRemove, ...groupedCollection[itemGroup]];\n            delete groupedCollection[itemGroup];\n            delete groupedCollectionPriority[itemGroup];\n        }\n\n        return itemsToRemove;\n    }\n\n    /** @hidden Get the object with grouped arrays of elements. */\n    private _getGroupedCollection(toolbarItems: ToolbarItem[]): Record<number, ToolbarItem[]> {\n        return toolbarItems.reduce((acc, item) => {\n            const itemPrio = item.priority;\n            const itemGroup = item.group;\n            if (\n                itemPrio === OverflowPriorityEnum.NEVER ||\n                itemPrio === OverflowPriorityEnum.ALWAYS ||\n                itemGroup === 0\n            ) {\n                return acc;\n            }\n            if (!acc[itemGroup]) {\n                acc[itemGroup] = [];\n            }\n            acc[itemGroup].push(item);\n            return acc;\n        }, {});\n    }\n\n    /** @hidden Get the object with the highest priority for each group of elements. */\n    private _getGroupedCollectionPriority(\n        groupedCollection: Record<number, ToolbarItem[]>\n    ): Record<number, OverflowPriority> {\n        const groups = Object.keys(groupedCollection);\n\n        return groups.reduce((acc, itemGroup) => {\n            const sortedPriorities = groupedCollection![itemGroup]\n                .map((i: ToolbarItem) => i.priority)\n                .filter(\n                    (prio: OverflowPriority) =>\n                        prio !== OverflowPriorityEnum.ALWAYS && prio !== OverflowPriorityEnum.NEVER\n                )\n                .sort(this._sortPriorities);\n\n            acc[itemGroup] = sortedPriorities[0];\n\n            return acc;\n        }, {});\n    }\n\n    /** @hidden Sort priorities of elements/groups. */\n    private _sortPriorities(a: OverflowPriority, b: OverflowPriority): number {\n        return OVERFLOW_PRIORITY_SCORE.get(b)! - OVERFLOW_PRIORITY_SCORE.get(a)!;\n    }\n\n    /** @hidden Sort by group and priority and initial position */\n    private _getSortedByPriorityAndGroupItems(toolbarItems: ToolbarItem[]): ToolbarItem[] {\n        const notSorted = toolbarItems.map((element, index) => ({ element, index }));\n\n        const groups = notSorted.reduce(\n            (gr, item) => {\n                let groupId = item.element.group;\n                const itemPrio = item.element.priority;\n                if (itemPrio === OverflowPriorityEnum.NEVER || itemPrio === OverflowPriorityEnum.ALWAYS) {\n                    groupId = 0;\n                }\n\n                if (!gr[groupId]) {\n                    gr[groupId] = [];\n                }\n\n                gr[groupId].push(item);\n\n                return gr;\n            },\n            {} as Record<number, Array<{ element: ToolbarItem; index: number }>>\n        );\n\n        const groupIds = Object.keys(groups)\n            .map((g) => parseInt(g, 10))\n            .filter((g) => g !== 0);\n\n        return groupIds\n            .map((g) => {\n                let minIndex = Number.MAX_SAFE_INTEGER;\n                let maxPriority = 0;\n                for (const item of groups[g]) {\n                    minIndex = Math.min(minIndex, item.index);\n                    maxPriority = Math.max(\n                        maxPriority,\n                        OVERFLOW_PRIORITY_SCORE.get(item.element.priority) ?? -Infinity\n                    );\n                }\n\n                return { group: groups[g].map(({ element }) => element), minIndex, maxPriority };\n            })\n            .concat(\n                !groups[0]\n                    ? []\n                    : groups[0].map((item) => ({\n                          group: [item.element],\n                          maxPriority: OVERFLOW_PRIORITY_SCORE.get(item.element.priority) ?? -Infinity,\n                          minIndex: item.index\n                      }))\n            )\n            .sort((a, b) => b.maxPriority - a.maxPriority || a.minIndex - b.minIndex)\n            .reduce((arr, i) => arr.concat(i.group), [] as ToolbarItem[]);\n    }\n}\n","@if (title) {\n    <span\n        fd-title\n        role=\"heading\"\n        [headerSize]=\"4\"\n        [attr.aria-level]=\"_headingLevel\"\n        [attr.title]=\"title\"\n        [attr.aria-label]=\"title\"\n        class=\"fd-toolbar__title fd-toolbar__title--truncate\"\n        [id]=\"titleId\"\n        #titleElement\n    >\n        {{ title }}\n    </span>\n}\n<ng-content></ng-content>\n@if (overflownItems.length > 0) {\n    @if (!spacerUsed()) {\n        <fd-toolbar-spacer></fd-toolbar-spacer>\n    }\n    <fd-toolbar-separator></fd-toolbar-separator>\n    <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\" [focusAutoCapture]=\"true\">\n        <fd-popover-control>\n            <button\n                fd-button\n                [title]=\"('coreToolbar.moreButton' | fdTranslate)()\"\n                [attr.aria-label]=\"('coreToolbar.moreButton' | fdTranslate)()\"\n                aria-haspopup=\"true\"\n                fdType=\"transparent\"\n                glyph=\"overflow\"\n            ></button>\n        </fd-popover-control>\n        <fd-popover-body>\n            <div class=\"fd-toolbar__overflow\">\n                @for (overflowedItem of overflownItems; track overflowedItem) {\n                    <fdk-dynamic-portal\n                        [domElement]=\"overflowedItem.element\"\n                        [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n                        [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n                    >\n                    </fdk-dynamic-portal>\n                }\n            </div>\n        </fd-popover-body>\n    </fd-popover>\n}\n","import { NgModule } from '@angular/core';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\nimport { ToolbarFormLabelDirective } from './toolbar-form-label.directive';\nimport { ToolbarItemDirective } from './toolbar-item.directive';\nimport { ToolbarLabelDirective } from './toolbar-label.directive';\nimport { ToolbarOverflowButtonMenuDirective } from './toolbar-overflow-button-menu.directive';\nimport { ToolbarOverflowButtonDirective } from './toolbar-overflow-button.directive';\nimport { ToolbarSeparatorComponent } from './toolbar-separator.component';\nimport { ToolbarSpacerDirective } from './toolbar-spacer.directive';\nimport { ToolbarComponent } from './toolbar.component';\n\nconst components = [\n    ToolbarComponent,\n    ToolbarItemDirective,\n    ToolbarSpacerDirective,\n    ToolbarSeparatorComponent,\n    ToolbarFormLabelDirective,\n    ToolbarLabelDirective,\n    ToolbarOverflowButtonDirective,\n    ToolbarOverflowButtonMenuDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [ContentDensityModule, ...components],\n    exports: [...components, ContentDensityModule]\n})\nexport class ToolbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;MAEsB,WAAW,CAAA;AAMhC;;MCNY,UAAU,GAAG,IAAI,cAAc,CAAC,oBAAoB;;MCQpD,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;;AAQI,QAAA,IAAA,CAAA,kBAAkB,GAAA,MAAA;;QAGlB,IAAA,CAAA,eAAe,GAAG,CAAC;;QAgCX,IAAA,CAAA,SAAS,GAAG,CAAC;;AAGJ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AACpD,IAAA;;AAjCG,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,eAAe;IAC/B;;AAGA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,kBAAkB;IAClC;;AAGA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACzC;;AAGA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChE;;AAGA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3B,OAAO,IAAI,CAAC,SAAS;QACzB;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,SAAS;IACzB;8GAnCS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,mMAHlB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAGjF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4DAA4D;AACtE,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,oBAAqB,CAAC,EAAE,CAAC;AAC1F,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBAGA;;;ACJC,MAAO,yBAA0B,SAAQ,oBAAoB,CAAA;8GAAtD,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qFAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACEK,MAAO,qBAAsB,SAAQ,oBAAoB,CAAA;8GAAlD,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qCAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACDK,MAAO,kCAAmC,SAAQ,oBAAoB,CAAA;8GAA/D,kCAAkC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kEAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mCAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAP9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kEAAkE;AAC5E,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACCK,MAAO,8BAA+B,SAAQ,oBAAoB,CAAA;8GAA3D,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,yDAAyD;AACnE,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCGY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,mIARxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCJY,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAMI;;;AAGG;QAGH,IAAA,CAAA,KAAK,GAAG,KAAK;AAEb;AACG;QAEH,IAAA,CAAA,KAAK,GAAG,EAAE;AAEV;;;AAGG;QAEH,IAAA,CAAA,KAAK,GAAG,KAAK;AAOhB,IAAA;;AAJG,IAAA,IACI,GAAG,GAAA;AACH,QAAA,OAAO,sBAAsB,IAAI,CAAC,KAAK,GAAG,2BAA2B,GAAG,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE;IAC9F;8GAzBS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAMI,WAAW;uBAAC,aAAa;;sBACzB;;sBAKA;;sBAOA;;sBAIA,WAAW;uBAAC,YAAY;;;ACsB7B,MAAM,cAAc,GAAG,CAAC;AACxB,MAAM,iBAAiB,GAAG,EAAE;AAC5B,MAAM,oBAAoB,GAAG,EAAE;AAC/B,MAAM,gBAAgB,GAAG,QAAQ;AAIjC,IAAI,cAAc,GAAG,CAAC;AACtB,IAAI,SAAS,GAAG,CAAC;MAmCJ,gBAAgB,CAAA;AAYzB;;AAEG;IACH,IACI,cAAc,CAAC,GAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;IAClC;AAEA,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,eAAe;IAC/B;AAiCA;;AAEG;IACH,IACI,YAAY,CAAC,KAA6B,EAAA;AAC1C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC9B;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QACtE;IACJ;;IAyCA,IACI,cAAc,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEA,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;IACtC;;AA8BA,IAAA,IAAY,aAAa,GAAA;AACrB,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,GAAG,oBAAoB,GAAG,iBAAiB;AAC5G,QAAA,QACK,IAAI,CAAC,UAAU,CAAC,aAA6B,CAAC,WAAW;AAC1D,aAAC,kBAAkB,GAAG,CAAC,GAAG,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;IAEzF;;IASA,WAAA,CACY,GAAsB,EACrB,uBAA+C,EACvC,WAAuB,EAChC,qBAA4C,EACnC,SAAmB,EAC+B,kBAAsC,EAAA;QALjG,IAAA,CAAA,GAAG,GAAH,GAAG;QACF,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QACpB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACZ,IAAA,CAAA,SAAS,GAAT,SAAS;QACyC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;AApKzF;;AAEK;AAEL,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,iBAAA,EAAoB,cAAc,EAAE,EAAE;AAoBhD;;;AAGG;QAEH,IAAA,CAAA,MAAM,GAAgB,OAAO;AAM7B;;AAEG;QAEH,IAAA,CAAA,MAAM,GAAG,KAAK;AAEd;;AAEG;QAEH,IAAA,CAAA,WAAW,GAAG,KAAK;;QAInB,IAAA,CAAA,aAAa,GAAG,KAAK;;QAIrB,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAC;;QAgCb,IAAA,CAAA,eAAe,GAA8B,YAAY;AAEzD;;AAEK;AAGL,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,WAAA,EAAc,SAAS,EAAE,EAAE;;QAQb,IAAA,CAAA,KAAK,GAAG,SAAS;;QAG3B,IAAA,CAAA,YAAY,GAAG,eAAe,CAAC,WAAW,yDAAI,WAAW,EAAE,IAAI,EAAA,CAAG;;QAgB3E,IAAA,CAAA,cAAc,GAAkB,EAAE;;AAGlC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;;AAG1B,QAAA,IAAA,CAAA,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,4DAAC;;AAG1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,eAAe,CAAC,yBAAyB,+DAAC;;QAGhE,IAAA,CAAA,aAAa,GAAG,CAAC;;AAGR,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,QAAA,IAAA,CAAA,gBAAgB,GAAuC,IAAI,eAAe,CAAoB,IAAI,CAAC;;AAGnG,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAO,SAAS,CAAC;;QAYxD,IAAA,CAAA,eAAe,GAAG,KAAK;;AAGvB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;QAWzD,uBAAuB,CAAC,SAAS,EAAE;IACvC;;IAIA,sBAAsB,GAAA;QAClB,OAAO;YACH,YAAY;YACZ,CAAA,YAAA,EAAe,IAAI,CAAC,MAAM,CAAA,CAAE;AAC5B,YAAA,CAAA,EAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,oBAAoB,GAAG,EAAE,CAAA,CAAE;AACtE,YAAA,CAAA,EAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,GAAG,mBAAmB,GAAG,EAAE,CAAA,CAAE;YACjE,CAAA,EAAG,IAAI,CAAC,WAAW,GAAG,mBAAmB,GAAG,EAAE,CAAA,CAAE;YAChD,CAAA,EAAG,IAAI,CAAC,kBAAkB,GAAG,0BAA0B,GAAG,EAAE,CAAA;SAC/D;IACL;;IAGA,eAAe,GAAA;QACX,IAAI,CAAC,iBAAiB,EAAE;;AAGxB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAClD,SAAS,CAAC,CAAC,cAAc,KAAoC;AACzD,YAAA,MAAM,YAAY,GAAG,cAAc,EAAE,UAAU,EAAE,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa;YAClG,IAAI,CAAC,YAAY,EAAE;AACf,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACnB;;AAEA,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC;QACzF,CAAC,CAAC,CACL;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;YAChC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC;AACrG,YAAA,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAC9D,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAC3C;YACD,mBAAmB;AACnB,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC;AACR,SAAA,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,KAAI;YAC/D,IAAI,cAAc,EAAE;gBAChB,MAAM,8BAA8B,GAAG,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC;gBAC3F,MAAM,aAAa,GAAkB,EAAE;gBACvC,8BAA8B,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,WAAW,KAAI;AACjE,oBAAA,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;AACvC,oBAAA,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ;AACzC,oBAAA,MAAM,0BAA0B,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY;oBAC3E,MAAM,wBAAwB,GAC1B,YAAY,KAAA,QAAA,sCAAoC,IAAI,CAAC,aAAa;AACtE,oBAAA,MAAM,uBAAuB,GAAG,YAAY,KAAA,OAAA;oBAC5C,IAAI,CAAC,0BAA0B,IAAI,CAAC,uBAAuB,KAAK,wBAAwB,EAAE;AACtF,wBAAA,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;wBAC/B,OAAO,wBAAwB,GAAG,aAAa,GAAG,gBAAgB;oBACtE;yBAAO;wBACH,OAAO,aAAa,GAAG,SAAS;oBACpC;AACJ,gBAAA,CAAC,EAAE,YAAY,EAAE,WAAW,IAAI,CAAC,CAAC;;AAElC,gBAAA,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE;oBACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;oBAClE,MAAM,2BAA2B,GAAG,IAAI,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;AACzF,oBAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK;AAC/B,oBAAA,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ;AACzC,oBAAA,IAAI,KAAK,KAAK,CAAC,IAAI,YAAY,KAAA,WAAA,uCAAqC;AAChE,wBAAA,MAAM,qBAAqB,GACvB,IAAI,CAAC,4BAA4B,CAC7B,KAAK,EACL,iBAAiB,EACjB,2BAA2B,CAC9B,IAAI,EAAE;AACX,wBAAA,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;4BAChC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,gCAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;4BACzB;AACJ,wBAAA,CAAC,CAAC;oBACN;gBACJ;gBACA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrF;AACA,YAAA,OAAO,EAAE;QACb,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACvC;QACD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACpC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC5B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,sBAAsB,EAAE;;;;AAK7B,QAAA,IAAI,CAAC;aACA,IAAI,CACD,SAAS,CAAC,CAAC,cAAc,KACrB;AACI,cAAE,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CACtD,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,EAC/C,KAAK,EAAE;cAEX,KAAK,CACd,EACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;AACjC,QAAA,CAAC,CAAC;IACV;;IAGA,kBAAkB,GAAA;QACd,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAChF,IAAI,CAAC,sBAAsB,EAAE;QACjC;IACJ;;IAGA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;;IAGA,sBAAsB,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IACjC;;IAGQ,iBAAiB,GAAA;;;AAGrB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAChG;IACL;AAEA;;AAEM;IACE,2BAA2B,CAC/B,SAAiB,EACjB,yBAA4D,EAAA;QAE5D,MAAM,QAAQ,GAAG,yBAAyB;AAC1C,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;AAChE,YAAA,OAAO,SAAS;QACpB;QAEA,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEpC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,KAAI;AAC/C,YAAA,MAAM,mBAAmB,GAAG,QAAQ,CAAC,WAAW,CAAC;AACjD,YAAA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,YAAY,CAAC;AACnD,YAAA,IACI,uBAAuB,CAAC,GAAG,CAAC,oBAAoB,CAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,CAAE,EACxG;gBACE,OAAO,CAAC,YAAY;YACxB;AAEA,YAAA,OAAO,WAAW;QACtB,CAAC,EAAE,SAAmB,CAAC;IAC3B;;AAGQ,IAAA,4BAA4B,CAChC,SAAiB,EACjB,iBAAiD,EACjD,yBAA4D,EAAA;QAE5D,MAAM,uBAAuB,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,yBAAyB,CAAC;AACtG,QAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC,yBAAyB,EAAE;AAClD,YAAA,OAAO,EAAE;QACb;AACA,QAAA,IAAI,aAAa,GAAG,iBAAiB,CAAC,uBAAuB,CAAC;AAE9D,QAAA,OAAO,iBAAiB,CAAC,uBAAuB,CAAC;AACjD,QAAA,OAAO,yBAAyB,CAAC,uBAAuB,CAAC;AAEzD,QAAA,IAAI,uBAAuB,KAAK,SAAS,EAAE;YACvC,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnE,YAAA,OAAO,iBAAiB,CAAC,SAAS,CAAC;AACnC,YAAA,OAAO,yBAAyB,CAAC,SAAS,CAAC;QAC/C;AAEA,QAAA,OAAO,aAAa;IACxB;;AAGQ,IAAA,qBAAqB,CAAC,YAA2B,EAAA;QACrD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACrC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK;AAC5B,YAAA,IACI,QAAQ,KAAA,OAAA;AACR,gBAAA,QAAQ,KAAA,QAAA;gBACR,SAAS,KAAK,CAAC,EACjB;AACE,gBAAA,OAAO,GAAG;YACd;AACA,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACjB,gBAAA,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB;YACA,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,YAAA,OAAO,GAAG;QACd,CAAC,EAAE,EAAE,CAAC;IACV;;AAGQ,IAAA,6BAA6B,CACjC,iBAAgD,EAAA;QAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAE7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,KAAI;AACpC,YAAA,MAAM,gBAAgB,GAAG,iBAAkB,CAAC,SAAS;iBAChD,GAAG,CAAC,CAAC,CAAc,KAAK,CAAC,CAAC,QAAQ;iBAClC,MAAM,CACH,CAAC,IAAsB,KACnB,IAAI,KAAA,QAAA,sCAAoC,IAAI,KAAA,OAAA;AAEnD,iBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;YAE/B,GAAG,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAEpC,YAAA,OAAO,GAAG;QACd,CAAC,EAAE,EAAE,CAAC;IACV;;IAGQ,eAAe,CAAC,CAAmB,EAAE,CAAmB,EAAA;AAC5D,QAAA,OAAO,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAE;IAC5E;;AAGQ,IAAA,iCAAiC,CAAC,YAA2B,EAAA;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAC3B,CAAC,EAAE,EAAE,IAAI,KAAI;AACT,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtC,YAAA,IAAI,QAAQ,KAAA,OAAA,qCAAmC,QAAQ,KAAA,QAAA,oCAAkC;gBACrF,OAAO,GAAG,CAAC;YACf;AAEA,YAAA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;AACd,gBAAA,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB;YAEA,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAEtB,YAAA,OAAO,EAAE;QACb,CAAC,EACD,EAAoE,CACvE;AAED,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AAC9B,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAE3B,QAAA,OAAO;AACF,aAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACP,YAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,gBAAgB;YACtC,IAAI,WAAW,GAAG,CAAC;YACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC1B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;gBACzC,WAAW,GAAG,IAAI,CAAC,GAAG,CAClB,WAAW,EACX,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAClE;YACL;YAEA,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE;AACpF,QAAA,CAAC;AACA,aAAA,MAAM,CACH,CAAC,MAAM,CAAC,CAAC;AACL,cAAE;AACF,cAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACrB,gBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,gBAAA,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;gBAC5E,QAAQ,EAAE,IAAI,CAAC;AAClB,aAAA,CAAC,CAAC;aAEZ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;AACvE,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAmB,CAAC;IACrE;AA3cS,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,gBAAgB,gLAqKW,yBAAyB,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArKpD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAnBd;AACP,YAAA,+BAA+B,CAAC;gBAC5B,qBAAqB,EAAE,kBAAkB,CAAC;aAC7C,CAAC;AACF,YAAA;AACI,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,WAAW,EAAE;AAChB;SACJ,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAmHuC,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAsBhB,sBAAsB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAGnB,yBAAyB,8EAtBjD,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAXW,UAAU,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9LjD,urDA8CA,EAAA,MAAA,EAAA,CAAA,gkQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDuCQ,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,yBAAyB,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,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,EAAA,EAAA,CAAA,gBAAA,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,EACb,eAAe,sIACf,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,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,MAAA,EAAA,IAAA,EACd,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;;AA+KnB,UAAA,CAAA;IADC,aAAa;;;;AAUb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FArLQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAzB5B,SAAS;+BACI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA,+BAA+B,CAAC;4BAC5B,qBAAqB,EAAE,kBAAkB,CAAC;yBAC7C,CAAC;AACF,wBAAA;AACI,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,OAAA,EACQ;wBACL,sBAAsB;wBACtB,yBAAyB;wBACzB,aAAa;wBACb,eAAe;wBACf,sBAAsB;wBACtB,cAAc;wBACd;AACH,qBAAA,EAAA,QAAA,EAAA,urDAAA,EAAA,MAAA,EAAA,CAAA,gkQAAA,CAAA,EAAA;;0BAuKI;;0BAAY;;0BAAY,MAAM;2BAAC,yBAAyB;;sBAjK5D;;sBAKA;;sBAMA;;sBAcA;;sBAIA;;sBAMA;;sBAMA;;sBAIA;;sBAIA;;sBAMA;;sBAUA;;sBACA,WAAW;uBAAC,iBAAiB;;sBAI7B;;sBACA,WAAW;uBAAC,sBAAsB;;sBAIlC;;sBACA,WAAW;uBAAC,uBAAuB;;sBAInC;;sBACA,WAAW;uBAAC,uBAAuB;;sBAMnC;;sBACA,WAAW;uBAAC,SAAS;;sBAIrB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAI9C,WAAW;uBAAC,WAAW;AAIgB,aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,WAAW,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA;sBAGzE,YAAY;uBAAC,UAAU;AAmBW,aAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,wGAGnB,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;AEpNnE,MAAM,UAAU,GAAG;IACf,gBAAgB;IAChB,oBAAoB;IACpB,sBAAsB;IACtB,yBAAyB;IACzB,yBAAyB;IACzB,qBAAqB;IACrB,8BAA8B;IAC9B;CACH;AAED;;;AAGG;MAKU,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,OAAA,EAAA,CAHZ,oBAAoB,EAf9B,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,yBAAyB;YACzB,yBAAyB;YACzB,qBAAqB;YACrB,8BAA8B;AAC9B,YAAA,kCAAkC,aAPlC,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,yBAAyB;YACzB,yBAAyB;YACzB,qBAAqB;YACrB,8BAA8B;AAC9B,YAAA,kCAAkC,EAST,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEpC,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,aAAa,EAAA,OAAA,EAAA,CAHZ,oBAAoB,EAf9B,gBAAgB,EAgBS,oBAAoB,CAAA,EAAA,CAAA,CAAA;;2FAEpC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,GAAG,UAAU,CAAC;AAC9C,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,oBAAoB;AAChD,iBAAA;;;AC7BD;;AAEG;;;;"}