@aquera/nile-elements 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/demo/nxtgen-classes.css +594 -0
- package/demo/nxtgen-dark.css +240 -21
- package/demo/nxtgen-utilities.css +594 -0
- package/demo/nxtgen.css +55 -0
- package/dist/index.js +51 -47
- package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
- package/dist/nile-combobox/nile-combobox.cjs.js.map +1 -1
- package/dist/nile-combobox/nile-combobox.css.cjs.js +1 -1
- package/dist/nile-combobox/nile-combobox.css.cjs.js.map +1 -1
- package/dist/nile-combobox/nile-combobox.css.esm.js +28 -15
- package/dist/nile-combobox/nile-combobox.esm.js +11 -8
- package/dist/nile-combobox/portal-manager.cjs.js +1 -1
- package/dist/nile-combobox/portal-manager.cjs.js.map +1 -1
- package/dist/nile-combobox/portal-manager.esm.js +1 -1
- package/dist/nile-combobox/renderer.cjs.js +1 -1
- package/dist/nile-combobox/renderer.cjs.js.map +1 -1
- package/dist/nile-combobox/renderer.esm.js +31 -43
- package/dist/src/nile-combobox/nile-combobox.css.js +28 -15
- package/dist/src/nile-combobox/nile-combobox.css.js.map +1 -1
- package/dist/src/nile-combobox/nile-combobox.js +49 -10
- package/dist/src/nile-combobox/nile-combobox.js.map +1 -1
- package/dist/src/nile-combobox/portal-manager.js +2 -22
- package/dist/src/nile-combobox/portal-manager.js.map +1 -1
- package/dist/src/nile-combobox/renderer.d.ts +2 -3
- package/dist/src/nile-combobox/renderer.js +14 -45
- package/dist/src/nile-combobox/renderer.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +11 -3
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/version.cjs.js +1 -1
- package/dist/version.cjs.js.map +1 -1
- package/dist/version.esm.js +1 -1
- package/package.json +2 -1
- package/scripts/replace-version.cjs +12 -10
- package/src/nile-combobox/nile-combobox.css.ts +28 -15
- package/src/nile-combobox/nile-combobox.ts +61 -12
- package/src/nile-combobox/portal-manager.ts +4 -22
- package/src/nile-combobox/renderer.ts +26 -69
- package/src/version.ts +11 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-combobox.cjs.js","sources":["../../../src/nile-combobox/nile-combobox.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { Ref, createRef, ref } from 'lit/directives/ref.js';\nimport { styles } from './nile-combobox.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-option/nile-option';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\n\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\n\nimport type {\n ComboboxOption,\n ComboboxRenderItemConfig,\n ComboboxTagLayout,\n ComboboxSize,\n ComboboxPlacement,\n ComboboxRow,\n NileRemoveEvent,\n} from './types.js';\nimport { ComboboxSelectionManager } from './selection-manager.js';\nimport { ComboboxSearchManager } from './search-manager.js';\nimport { ComboboxRenderer } from './renderer.js';\nimport { ComboboxPortalManager } from './portal-manager.js';\nimport { hasGroups, flattenRows, filterRows, getOptionRows } from './group-utils.js';\nimport { VisibilityManager } from '../utilities/visibility-manager.js';\n\n/**\n * @summary A data-driven combobox with virtualized options, inline search, multi-select tags,\n * custom value creation, and full WAI-ARIA Combobox keyboard navigation.\n *\n * @tag nile-combobox\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n * @dependency nile-loader\n *\n * @slot label - The input's label.\n * @slot prefix - Prepend a presentational icon or element before the input.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded/collapsed.\n * @slot help-text - Text that describes how to use the input.\n * @slot footer - Custom footer content (overrides default footer in multi-select mode).\n * @slot no-results - Custom no-results content.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the dropdown opens.\n * @event nile-after-show - Emitted after the dropdown opens and all animations complete.\n * @event nile-hide - Emitted when the dropdown closes.\n * @event nile-after-hide - Emitted after the dropdown closes and all animations complete.\n * @event nile-search - Emitted (debounced) when the user types. Useful for API-driven filtering.\n * @event nile-tag-remove - Emitted when a tag is removed in multi-select mode.\n * @event nile-tag-add - Emitted when a custom value is added via allowCustomValue.\n * @event nile-scroll-end - Emitted when scrolled to the bottom (for infinite loading).\n * @event nile-invalid - Emitted when form validation constraints aren't satisfied.\n * @event nile-select-all - Emitted when the Select all / Deselect all control toggles. Detail: { value, name, action: 'select-all' | 'deselect-all' }.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart combobox - The combobox trigger (input + tags + icons).\n * @csspart input - The text input element.\n * @csspart listbox - The dropdown listbox.\n * @csspart tags - The tags container in multi-select mode.\n * @csspart tag - Each individual tag.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The expand/collapse icon.\n * @csspart top-actions - The sticky row above the option list that contains the Select all checkbox and the Selected / Show all filter toggle. Rendered only when multiple && selectAllEnabled.\n * @csspart select-all - The Select all / Deselect all checkbox wrapper inside top-actions.\n * @csspart show-toggle - The \"Selected / Show all\" filter button inside top-actions.\n * @csspart no-results - The empty-state container shown when a search/filter returns no items. Contains no-results-title and no-results-subtitle.\n * @csspart no-results-title - The title row of the no-results empty state.\n * @csspart no-results-subtitle - The subtitle row of the no-results empty state.\n * @csspart no-data - The empty-state container shown when the dataset is empty (no active search/filter).\n * @csspart footer - The footer with \"Show Selected\" / \"Clear All\".\n * @csspart no-results - The no-results message.\n */\n@customElement('nile-combobox')\nexport class NileCombobox extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(this, 'help-text', 'label');\n private readonly portalManager = new ComboboxPortalManager(this);\n private readonly searchManager = new ComboboxSearchManager();\n\n private scrollElementRef: Ref<HTMLDivElement> = createRef();\n private virtualizerCtrl = new VirtualizerController<HTMLDivElement, Element>(this, {\n getScrollElement: () => this.scrollElementRef.value ?? null,\n count: 0,\n estimateSize: () => 38,\n overscan: 5,\n });\n\n private hScrollElementRef: Ref<HTMLDivElement> = createRef();\n private hVirtualizerCtrl = new VirtualizerController<HTMLDivElement, Element>(this, {\n getScrollElement: () => this.hScrollElementRef.value ?? null,\n count: 0,\n estimateSize: () => 160,\n horizontal: true,\n overscan: 3,\n });\n\n private scrollTimeout: number | undefined;\n private scrolling = false;\n private visibilityManager?: VisibilityManager;\n private keyboardActiveIndex = -1;\n\n @query('.combobox-popup') popup: NilePopup;\n @query('.combobox__trigger') combobox: HTMLElement;\n @query('.combobox__input') inputElement: HTMLInputElement;\n @query('.combobox__value-input') valueInput: HTMLInputElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: ComboboxOption[] = [];\n\n /** The items displayed after filtering. Renderer reads from this. */\n @state() filteredData: any[] = [];\n\n /**\n * Mixed (header + option) row list, only populated when `data` contains\n * group entries (`type: 'group'`). When non-empty, the listbox renders from\n * this instead of `filteredData`. `filteredData` stays in sync as the\n * option-only projection so existing select-all / strict-match / etc. logic\n * keeps working unchanged.\n */\n @state() private filteredRows: ComboboxRow[] = [];\n\n /** The complete unfiltered dataset (preserved for re-filtering). */\n @state() private originalData: any[] = [];\n\n @state() showNoResults = false;\n @state() showListbox = false;\n @state() searchValue = '';\n @state() private showSelectedOnly = false;\n @state() private selectAllChecked = false;\n @state() private selectAllIndeterminate = false;\n\n /**\n * Index into `filteredRows` of the group header that should be pinned at\n * the top of the (virtualized) listbox right now. -1 means none.\n * Recomputed on scroll.\n */\n @state() private stickyHeaderIndex = -1;\n\n // ── Public properties ──\n\n @property() name = '';\n\n @property({ type: Array }) data: any[] = [];\n\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n @defaultValue() defaultValue: string | string[] = '';\n\n @property() size: ComboboxSize = 'medium';\n\n @property() placeholder = 'Type to search...';\n\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n @property() label = '';\n\n @property({ type: Boolean, reflect: true }) required = false;\n\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n @property({ type: Boolean, reflect: true }) loading = false;\n\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** When true, skip local filtering and rely solely on the `nile-search` event for API-driven results. */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** When true, displays a \"+ Add [value]\" option for values not in the data. */\n @property({ type: Boolean, reflect: true }) allowCustomValue = false;\n\n /** When true, typing free text and pressing Enter/Tab adds it as a tag (like nile-chip's acceptUserInput). */\n @property({ type: Boolean, reflect: true }) acceptUserInput = false;\n\n /** When true, custom values added via allowCustomValue or acceptUserInput are also appended to the suggestions list. */\n @property({ type: Boolean, reflect: true }) addToSuggestions = false;\n\n /** When true, value must match an option. On blur, reverts to the last valid value if text doesn't match. */\n @property({ type: Boolean, reflect: true }) strict = false;\n\n /** Max tags visible before showing \"+N more\" (0 = no limit). */\n @property({ attribute: 'max-tags-visible', type: Number }) maxTagsVisible = 3;\n\n /** Controls how tags wrap in multi-select mode. */\n @property() tagLayout: ComboboxTagLayout = 'single-line';\n\n /**\n * Show footer with \"Show Selected\" and \"Clear All\" in multi-select mode.\n * Automatically suppressed when `selectAllEnabled` is true, since the top\n * actions row already provides the same controls.\n */\n @property({ type: Boolean, reflect: true }) showFooter = true;\n\n /**\n * When true (and `multiple` is true), renders a \"Select all\" / \"Deselect all\"\n * checkbox at the top of the listbox. Operates on the currently visible,\n * non-disabled options (respects the active search filter).\n */\n @property({ type: Boolean, reflect: true, attribute: 'select-all-enabled' }) selectAllEnabled = false;\n\n /**\n * When true (default), data-driven group headers stick to the top of the\n * listbox while scrolling through that group's options (Atlassian-style).\n * Works in both plain and virtualized rendering modes. Set to false for\n * inline-only headers that scroll away with their options.\n */\n @property({ type: Boolean, reflect: true, attribute: 'sticky-group-header' }) stickyGroupHeader = true;\n\n @property({ type: Boolean, reflect: true }) portal = false;\n\n @property({ type: Boolean }) hoist = false;\n\n @property({ reflect: true }) placement: ComboboxPlacement = 'bottom';\n\n @property({ reflect: true }) form = '';\n\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n @property({ type: Boolean }) warning = false;\n @property({ type: Boolean }) error = false;\n @property({ type: Boolean }) success = false;\n\n @property({ type: Boolean, reflect: true }) filled = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n\n @property({ type: String }) noResultsMessage = 'No result found';\n @property({ type: String, attribute: 'no-results-subtitle' }) noResultsSubtitle = 'Clear search or change filter';\n @property({ type: String, attribute: 'no-data-message' }) noDataMessage = 'No data available';\n\n /**\n * Pre-defined autocomplete suggestions. Accepts a JSON array string attribute\n * or a JS array property (like nile-chip). When `addToSuggestions` is true,\n * custom values added by the user are appended to this list and persisted.\n */\n @property({\n type: Array,\n converter: {\n fromAttribute: (value: string | null) => {\n if (!value) return [];\n try { return JSON.parse(value); } catch { return []; }\n },\n toAttribute: (value: any[]) => JSON.stringify(value),\n },\n })\n autoCompleteOptions: any[] = [];\n\n /** Debounce interval (ms) for the nile-search event. */\n @property({ type: Number }) debounceMs = 300;\n\n @property({ attribute: false }) renderItemConfig?: ComboboxRenderItemConfig;\n\n @property({ type: Boolean, reflect: true }) allowHtmlLabel = true;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** Number of columns in the dropdown grid (vertical scroll). When > 1, options render in a multi-column grid layout. */\n @property({ attribute: 'grid-columns', type: Number, reflect: true }) gridColumns = 1;\n\n /** Number of visible rows in horizontal grid mode. When > 0, enables horizontal virtual scroll with columns scrolling left/right. */\n @property({ attribute: 'grid-rows', type: Number, reflect: true }) gridRows = 0;\n\n /** Width of each column in horizontal grid mode (px). */\n @property({ attribute: 'grid-column-width', type: Number }) gridColumnWidth = 160;\n\n // ── Accessors ──\n\n get validity() {\n return this.valueInput?.validity;\n }\n\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n // ── Lifecycle ──\n\n connectedCallback() {\n super.connectedCallback();\n this.open = false;\n this.setupBoundHandlers();\n this.emit('nile-init');\n\n this.updateComplete.then(() => {\n if (this.autoCompleteOptions.length > 0 && this.data.length === 0) {\n this.data = [...this.autoCompleteOptions];\n }\n if (this.value && this.data.length > 0) {\n this.syncSelection();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n this.visibilityManager?.cleanup();\n this.searchManager.cancelDebounce();\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n this.portalManager.cleanupPortal();\n }\n\n protected firstUpdated(_changed: PropertyValues) {\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: this.combobox,\n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this.hide();\n this.emit('nile-visibility-change', { visible: false, reason: 'anchor-out-of-view', name: this.name });\n },\n onDocumentHidden: () => {\n this.hide();\n this.emit('nile-visibility-change', { visible: false, reason: 'document-hidden', name: this.name });\n },\n emit: (event: string, detail: any) => this.emit(`nile-${event}`, detail),\n });\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has('value')) {\n this.syncSelection();\n }\n this.updateVirtualizerCount();\n }\n\n private get isHorizontalGrid(): boolean {\n return this.gridRows > 0 && this.gridColumns <= 1;\n }\n\n /** True when the source data contains at least one group entry. */\n private get hasGroupedData(): boolean {\n const base = this.originalData.length > 0 ? this.originalData : this.data;\n return hasGroups(base);\n }\n\n /**\n * Walk filteredRows and find the index of the deepest group header whose\n * virtual position is at or above `scrollTop`. That's the header that\n * should be pinned at the top of the listbox right now.\n */\n private updateStickyHeader(scrollTop: number): void {\n if (!this.stickyGroupHeader || !this.hasGroupedData) {\n if (this.stickyHeaderIndex !== -1) this.stickyHeaderIndex = -1;\n return;\n }\n let offset = 0;\n let stuck = -1;\n for (let i = 0; i < this.filteredRows.length; i++) {\n const row = this.filteredRows[i];\n const size = row.kind === 'header' ? 32 : 38;\n if (offset > scrollTop) break;\n if (row.kind === 'header') stuck = i;\n offset += size;\n }\n if (stuck !== this.stickyHeaderIndex) this.stickyHeaderIndex = stuck;\n }\n\n /** Recursively keep only options whose value is in `selectedSet`; drop empty groups. */\n private pruneTreeBySelection(items: any[], selectedSet: Set<string>): any[] {\n const out: any[] = [];\n for (const item of items) {\n if (item && typeof item === 'object' && item.type === 'group' && Array.isArray(item.options)) {\n const kept = this.pruneTreeBySelection(item.options, selectedSet);\n if (kept.length > 0) out.push({ ...item, options: kept });\n } else if (selectedSet.has(String(this.getItemValue(item)))) {\n out.push(item);\n }\n }\n return out;\n }\n\n private get hasActiveFilter(): boolean {\n return !!this.searchValue || this.showSelectedOnly;\n }\n\n private renderEmptyState(): TemplateResult {\n if (this.hasActiveFilter) {\n return ComboboxRenderer.renderNoResults(this.noResultsMessage, this.noResultsSubtitle);\n }\n return ComboboxRenderer.renderNoData(this.noDataMessage);\n }\n\n private get isBidirectionalGrid(): boolean {\n return this.gridRows > 0 && this.gridColumns > 1;\n }\n\n private get virtualRowCount(): number {\n if (this.gridColumns > 1) {\n return Math.ceil(this.filteredData.length / this.gridColumns);\n }\n if (this.hasGroupedData) {\n return this.filteredRows.length;\n }\n return this.filteredData.length;\n }\n\n private get virtualColumnCount(): number {\n return Math.ceil(this.filteredData.length / Math.max(this.gridRows, 1));\n }\n\n private updateVirtualizerCount(): void {\n if (this.isHorizontalGrid) {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n const colCount = this.virtualColumnCount;\n if (hVirtualizer.options.count !== colCount || hVirtualizer.options.estimateSize(0) !== this.gridColumnWidth) {\n hVirtualizer.setOptions({\n ...hVirtualizer.options,\n count: colCount,\n estimateSize: () => this.gridColumnWidth,\n });\n hVirtualizer.measure();\n }\n } else {\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n const count = this.virtualRowCount;\n const grouped = this.hasGroupedData;\n const countChanged = virtualizer.options.count !== count;\n const modeChanged = this.lastVirtualizerGrouped !== grouped;\n if (countChanged || modeChanged) {\n const estimateSize = grouped\n ? (index: number) => (this.filteredRows[index]?.kind === 'header' ? 32 : 38)\n : () => 38;\n virtualizer.setOptions({\n ...virtualizer.options,\n count,\n estimateSize,\n });\n virtualizer.measure();\n this.lastVirtualizerGrouped = grouped;\n }\n }\n }\n\n private lastVirtualizerGrouped = false;\n\n // ── Data helpers ──\n\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) return this.renderItemConfig.getDisplayText(item);\n return item?.label || item?.name || item?.toString?.() || '';\n }\n\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) return this.renderItemConfig.getValue(item);\n return item?.value ?? item;\n }\n\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) return this.renderItemConfig.getSearchText(item);\n return this.getDisplayText(item);\n }\n\n private getItemDescription(item: any): string {\n return this.renderItemConfig?.getDescription?.(item) ?? item?.description ?? '';\n }\n\n private getItemPrefix(item: any): string {\n return this.renderItemConfig?.getPrefix?.(item) ?? item?.prefix ?? '';\n }\n\n private getItemSuffix(item: any): string {\n return this.renderItemConfig?.getSuffix?.(item) ?? item?.suffix ?? '';\n }\n\n // ── Selection ──\n\n private syncSelection(): void {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n const items = this.hasGroupedData\n ? getOptionRows(flattenRows(baseData)).map(r => r.item)\n : baseData;\n this.selectedOptions = ComboboxSelectionManager.createOptionsFromValues(\n this.value,\n items,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue,\n );\n\n if (!this.multiple) {\n const label = this.selectedOptions[0]?.getTextLabel() ?? '';\n this.displayLabel = label;\n if (label) {\n this.searchValue = label;\n } else if (!this.hasFocus) {\n this.searchValue = '';\n }\n } else {\n this.displayLabel = '';\n }\n\n this.updateValidity();\n this.updateSelectAllState();\n }\n\n // ── Select All ──\n\n /**\n * Returns the options eligible for Select All — the currently filtered data\n * (so the active search/filter is respected) minus any `disabled` items.\n * Mirrors nile-select's `getSelectableOptions()` contract.\n */\n private getSelectableData(): any[] {\n return this.filteredData.filter((item: any) => !item?.disabled);\n }\n\n /**\n * Derives `selectAllChecked` + `selectAllIndeterminate` from the current\n * selection vs. the selectable set. No-op when `multiple` is false.\n *\n * options=0 → both false (nothing to select, e.g. empty search)\n * selected=0 → checked=false, indeterminate=false\n * selected=options → checked=true, indeterminate=false\n * otherwise (partial) → checked=false, indeterminate=true\n */\n private updateSelectAllState(): void {\n if (!this.multiple) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n return;\n }\n const options = this.getSelectableData();\n if (options.length === 0) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n return;\n }\n const selectedValues = Array.isArray(this.value) ? this.value : [];\n const selectedSet = new Set(selectedValues.map(String));\n const selectedInView = options.reduce((n, item) => {\n return n + (selectedSet.has(String(this.getItemValue(item))) ? 1 : 0);\n }, 0);\n\n if (selectedInView === 0) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n } else if (selectedInView === options.length) {\n this.selectAllChecked = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = true;\n }\n }\n\n /**\n * Toggles all selectable, visible options. Indeterminate → clears selection\n * (matches the \"Deselect All\" label flip), empty → selects all,\n * fully-selected → clears.\n */\n private handleSelectAllToggle(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (!this.multiple || !this.selectAllEnabled) return;\n\n const options = this.getSelectableData();\n if (options.length === 0) return;\n\n const shouldUnselectAll = this.selectAllChecked || this.selectAllIndeterminate;\n const current = Array.isArray(this.value) ? [...this.value] : [];\n const inViewValues = options.map(item => String(this.getItemValue(item)));\n const inViewSet = new Set(inViewValues);\n\n let next: string[];\n if (shouldUnselectAll) {\n // Deselect only the in-view options; preserve selections outside the filter.\n next = current.filter(v => !inViewSet.has(String(v)));\n } else {\n // Select all in-view options on top of any existing (out-of-view) selection.\n const merged = new Set(current.map(String));\n inViewValues.forEach(v => merged.add(v));\n next = Array.from(merged);\n }\n\n this.value = next;\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('', true);\n\n this.updateComplete.then(() => {\n this.emit('nile-input', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-select-all', {\n value: this.value,\n name: this.name,\n action: shouldUnselectAll ? 'deselect-all' : 'select-all',\n });\n });\n }\n\n // ── Event handler setup ──\n\n private handleDocumentFocusIn!: (e: FocusEvent) => void;\n private handleDocumentKeyDown!: (e: KeyboardEvent) => void;\n private handleDocumentMouseDown!: (e: MouseEvent) => void;\n private handleWindowError!: (e: ErrorEvent) => void;\n private handleWindowResize!: () => void;\n private handleWindowScroll!: () => void;\n\n private setupBoundHandlers(): void {\n this.handleDocumentFocusIn = (event: FocusEvent) => {\n if (!this.open) return;\n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortal = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n if (!hitSelf && !hitPopup && !hitPortal) this.hide();\n };\n\n this.handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (!this.open && event.key !== 'ArrowDown' && event.key !== 'ArrowUp' && event.key !== 'Enter') return;\n this.onGlobalKeyDown(event);\n };\n\n this.handleDocumentMouseDown = (event: MouseEvent) => {\n if (!this.open) return;\n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortal = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n if (!hitSelf && !hitPopup && !hitPortal) this.hide();\n };\n\n this.handleWindowError = (event: ErrorEvent) => {\n const msg = event.error?.message || event.message || '';\n if (msg.includes(\"Cannot read properties of null (reading 'insertBefore')\")) {\n event.preventDefault();\n }\n };\n\n this.handleWindowResize = () => this.portalManager.updatePosition();\n this.handleWindowScroll = () => this.portalManager.updatePosition();\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n // ── Keyboard navigation (WAI-ARIA Combobox) ──\n\n private onInputKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open) {\n this.show();\n } else {\n this.moveActiveOption(this.gridColumns > 1 ? this.gridColumns : 1);\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open) {\n this.show();\n } else {\n this.moveActiveOption(this.gridColumns > 1 ? -this.gridColumns : -1);\n }\n break;\n case 'ArrowRight':\n if (this.gridColumns > 1 && this.open) {\n event.preventDefault();\n this.moveActiveOption(1);\n }\n break;\n case 'ArrowLeft':\n if (this.gridColumns > 1 && this.open) {\n event.preventDefault();\n this.moveActiveOption(-1);\n }\n break;\n case 'Enter':\n event.preventDefault();\n if (this.open) {\n this.selectActiveOption();\n } else if (this.searchValue.trim() && (this.acceptUserInput || this.allowCustomValue)) {\n this.addCustomValue(this.searchValue.trim());\n } else {\n this.show();\n }\n break;\n case 'Escape':\n if (this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n }\n break;\n case 'Home':\n if (this.open) {\n event.preventDefault();\n this.setActiveOption(0);\n }\n break;\n case 'End':\n if (this.open) {\n event.preventDefault();\n this.setActiveOption(this.filteredData.length - 1);\n }\n break;\n case 'Backspace':\n if (this.multiple && this.searchValue === '' && this.selectedOptions.length > 0) {\n const last = this.selectedOptions[this.selectedOptions.length - 1];\n this.removeTag(last);\n }\n break;\n case 'Tab':\n if (this.multiple && this.acceptUserInput && this.searchValue.trim()) {\n this.addCustomValue(this.searchValue.trim());\n }\n if (this.open) this.hide();\n break;\n }\n }\n\n private onGlobalKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.inputElement?.focus({ preventScroll: true });\n }\n }\n\n private getVisibleOptions(): NodeListOf<Element> | Element[] {\n const root = this.portal ? this.portalManager.portalContainerElement : this.shadowRoot;\n if (!root) return [];\n return root.querySelectorAll('nile-option:not([disabled])');\n }\n\n private moveActiveOption(delta: number): void {\n const options = this.getVisibleOptions();\n if (!options.length) return;\n let next = this.keyboardActiveIndex + delta;\n if (next < 0) next = options.length - 1;\n if (next >= options.length) next = 0;\n this.setActiveOption(next);\n }\n\n private setActiveOption(index: number): void {\n const options = this.getVisibleOptions();\n if (!options.length) return;\n\n options.forEach((opt, i) => {\n const el = opt as HTMLElement;\n if (i === index) {\n el.setAttribute('aria-current', 'true');\n el.classList.add('combobox__option--active');\n el.scrollIntoView?.({ block: 'nearest' });\n } else {\n el.removeAttribute('aria-current');\n el.classList.remove('combobox__option--active');\n }\n });\n\n this.keyboardActiveIndex = index;\n }\n\n private selectActiveOption(): void {\n const options = this.getVisibleOptions();\n if (this.keyboardActiveIndex >= 0 && this.keyboardActiveIndex < options.length) {\n const opt = options[this.keyboardActiveIndex] as any;\n if (opt && !opt.disabled) {\n this.handleOptionSelection(opt.value);\n }\n } else if (this.searchValue.trim() && (this.allowCustomValue || this.acceptUserInput)) {\n this.addCustomValue(this.searchValue.trim());\n }\n }\n\n // ── Input handling ──\n\n private onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n private onInputHandler(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.searchValue = target.value;\n\n if (!this.open) this.show();\n\n this.emit('nile-input', { value: this.searchValue, name: this.name });\n\n if (this.disableLocalSearch) {\n this.searchManager.debounceSearch(\n (q: string) => this.emit('nile-search', { query: q, name: this.name }),\n this.searchValue,\n this.debounceMs,\n );\n } else {\n this.filterOptions(this.searchValue);\n }\n\n this.keyboardActiveIndex = -1;\n }\n\n private filterOptions(search: string, preserveScroll = false): void {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n\n if (this.hasGroupedData) {\n // Grouped path: filter the tree, derive options-only projection.\n let tree = baseData;\n if (this.showSelectedOnly) {\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n const selectedSet = new Set(selectedValues.map(v => String(v)));\n tree = this.pruneTreeBySelection(baseData, selectedSet);\n }\n const { rows } = filterRows(tree, search, this.getSearchText.bind(this));\n this.filteredRows = rows;\n this.filteredData = getOptionRows(rows).map(r => r.item);\n this.showNoResults = this.filteredData.length === 0;\n // Recompute sticky header at current scroll (defaults to top on filter).\n const st = this.scrollElementRef.value?.scrollTop ?? 0;\n this.updateStickyHeader(st);\n } else {\n let source = baseData;\n if (this.showSelectedOnly) {\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n const selectedSet = new Set(selectedValues.map(v => String(v)));\n source = baseData.filter((item: any) => selectedSet.has(String(this.getItemValue(item))));\n }\n const { filteredItems, showNoResults } = this.searchManager.filter(\n search,\n source,\n this.getSearchText.bind(this),\n );\n this.filteredData = filteredItems;\n this.filteredRows = [];\n this.showNoResults = showNoResults;\n }\n\n this.portalManager.resetMeasuredHeight();\n if (!preserveScroll) {\n this.resetScrollPosition();\n }\n this.updateSelectAllState();\n this.requestUpdate();\n }\n\n // ── Focus ──\n\n private onFocusIn(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n if (!this.multiple && this.displayLabel) {\n this.searchValue = this.displayLabel;\n this.requestUpdate();\n this.updateComplete.then(() => {\n this.inputElement?.select();\n });\n }\n }\n\n private onFocusOut(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n\n if (this.open) return;\n\n if (!this.multiple) {\n if (this.strict) {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n const allItems = this.hasGroupedData\n ? getOptionRows(flattenRows(baseData)).map(r => r.item)\n : baseData;\n const match = allItems.find(\n (item: any) => this.getDisplayText(item).toLowerCase() === this.searchValue.toLowerCase(),\n );\n if (match) {\n const val = this.getItemValue(match);\n if (this.value !== val) {\n this.value = val;\n this.syncSelection();\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n } else {\n this.searchValue = this.displayLabel;\n }\n } else {\n this.searchValue = this.displayLabel;\n }\n }\n }\n\n // ── Combobox trigger interaction ──\n\n private onTriggerMouseDown(event: MouseEvent): void {\n if (this.disabled) return;\n const path = event.composedPath();\n if (path.some(el => el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button')) return;\n\n event.preventDefault();\n this.inputElement?.focus({ preventScroll: true });\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n // ── Option click ──\n\n private onOptionClick(event: MouseEvent): void {\n // Use composedPath to find nile-option across shadow boundaries\n const path = event.composedPath();\n const option = path.find((el: EventTarget) => \n (el as HTMLElement).tagName === 'NILE-OPTION'\n ) as any;\n \n if (!option || option.disabled) return;\n this.handleOptionSelection(option.value);\n }\n\n private handleOptionSelection(optionValue: string): void {\n const oldValue = this.value;\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? this.value : [];\n this.value = ComboboxSelectionManager.toggleMultiValue(current, optionValue);\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('', true);\n } else {\n this.value = optionValue;\n this.syncSelection();\n this.searchValue = this.displayLabel;\n this.hide();\n }\n\n if (JSON.stringify(this.value) !== JSON.stringify(oldValue)) {\n this.updateComplete.then(() => {\n this.emit('nile-input', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n });\n }\n\n this.inputElement?.focus({ preventScroll: true });\n }\n\n private addCustomValue(val: string): void {\n if (this.addToSuggestions) {\n const allItems = this.originalData.length > 0 ? this.originalData : this.data;\n const alreadyExists = allItems.some((item: any) =>\n String(this.getItemValue(item)) === val || this.getDisplayText(item) === val,\n );\n if (!alreadyExists) {\n const newItem = this.renderItemConfig?.getValue\n ? { value: val, label: val }\n : val;\n this.originalData = [...allItems, newItem];\n this.data = [...this.originalData];\n this.autoCompleteOptions = [...this.originalData];\n this.filteredData = [...this.originalData];\n }\n }\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? this.value : [];\n if (!current.includes(val)) {\n this.value = [...current, val];\n }\n } else {\n this.value = val;\n this.hide();\n }\n\n this.searchValue = this.multiple ? '' : val;\n this.syncSelection();\n this.filterOptions(this.searchValue);\n\n this.emit('nile-tag-add', { value: val, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Clear ──\n\n private onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('');\n this.emit('nile-clear', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Tags ──\n\n private removeTag(option: ComboboxOption): void {\n if (this.disabled) return;\n const current = Array.isArray(this.value) ? this.value : [];\n this.value = ComboboxSelectionManager.removeValue(current, option.value);\n this.syncSelection();\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Footer ──\n\n private onFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions.length === 0) return;\n\n this.showSelectedOnly = !this.showSelectedOnly;\n if (this.showSelectedOnly) this.searchValue = '';\n this.filterOptions(this.searchValue);\n }\n\n private clearAll(): void {\n this.showSelectedOnly = false;\n this.value = this.multiple ? [] : '';\n this.filterOptions('');\n this.syncSelection();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.value, name: this.name });\n this.resetScrollPosition();\n }\n\n // ── Scroll ──\n\n private onScroll(e: Event): void {\n const target = e.target as HTMLElement;\n this.updateStickyHeader(target.scrollTop);\n if (this.showSelectedOnly) return;\n\n this.emit('nile-scroll', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n this.scrolling = false;\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom) {\n this.emit('nile-scroll-end', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name, isAtBottom: true });\n }\n }\n\n // ── Show / Hide ──\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) return undefined;\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open) return undefined;\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n this.visibilityManager?.setup();\n this.showListbox = true;\n await this.updateComplete;\n await this.doOpen();\n\n if (this.portal) this.portalManager.setupPortal();\n } else {\n this.visibilityManager?.cleanup();\n await this.doClose();\n this.showListbox = false;\n\n if (this.portal) this.portalManager.cleanupPortal();\n }\n }\n\n private async doOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.keyboardActiveIndex = -1;\n\n if (this.originalData.length === 0 && this.data.length > 0) {\n this.originalData = [...this.data];\n }\n if (this.hasGroupedData) {\n this.filterOptions(this.searchValue);\n } else {\n this.filteredData = [...(this.originalData.length > 0 ? this.originalData : this.data)];\n this.filteredRows = [];\n this.showNoResults = this.filteredData.length === 0;\n }\n\n await stopAnimations(this);\n\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = 'hidden';\n }\n\n this.popup.active = true;\n\n await new Promise(r => requestAnimationFrame(r));\n await new Promise(r => requestAnimationFrame(r));\n\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n const { keyframes, options } = getAnimation(this, 'combobox.show', { dir: 'ltr' });\n await animateTo(this.popup.popup, keyframes, options);\n\n this.resetScrollPosition();\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async doClose(): Promise<void> {\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'combobox.hide', { dir: 'ltr' });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n\n if (this.popup?.popup) this.popup.popup.style.visibility = '';\n\n this.showSelectedOnly = false;\n this.portalManager.resetMeasuredHeight();\n\n if (!this.multiple) {\n this.searchValue = this.displayLabel;\n }\n\n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n // ── Watchers ──\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.syncSelection();\n this.requestUpdate();\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && !this.showSelectedOnly) {\n this.originalData = [...this.data];\n }\n if (this.hasGroupedData) {\n this.filterOptions(this.searchValue);\n } else {\n this.filteredData = [...this.data];\n this.filteredRows = [];\n }\n this.syncSelection();\n this.updateSelectAllState();\n\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n\n this.portalManager.resetMeasuredHeight();\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePosition();\n }\n this.requestUpdate();\n }\n\n @watch('autoCompleteOptions', { waitUntilFirstUpdate: true })\n handleAutoCompleteOptionsChange(): void {\n if (this.autoCompleteOptions.length > 0) {\n this.data = [...this.autoCompleteOptions];\n }\n }\n\n @watch('multiple', { waitUntilFirstUpdate: true })\n @watch('selectAllEnabled', { waitUntilFirstUpdate: true })\n handleSelectAllConfigChange(): void {\n this.updateSelectAllState();\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalChange(): void {\n if (this.open) {\n if (this.portal) this.portalManager.setupPortal();\n else this.portalManager.cleanupPortal();\n }\n }\n\n // ── Form integration ──\n\n checkValidity(): boolean { return this.valueInput.checkValidity(); }\n getForm(): HTMLFormElement | null { return this.formControlController.getForm(); }\n reportValidity(): boolean { return this.valueInput.reportValidity(); }\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void { this.inputElement?.focus(options); }\n blur(): void { this.inputElement?.blur(); }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => this.formControlController.updateValidity());\n }\n\n private async resetScrollPosition(): Promise<void> {\n await this.portalManager.resetScrollPosition();\n }\n\n // ── Render ──\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasValue = this.multiple\n ? (Array.isArray(this.value) && this.value.length > 0)\n : (typeof this.value === 'string' && this.value !== '');\n const hasClearIcon = this.clearable && !this.disabled && hasValue;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n const isEmpty = !hasValue;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${() => this.inputElement?.focus()}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n <div part=\"form-control-input\" class=\"form-control-input\">\n <nile-popup\n class=${classMap({\n 'combobox-popup': true,\n 'combobox--open': this.open,\n 'combobox--closed': !this.open,\n 'combobox--disabled': this.disabled,\n 'combobox--focused': this.hasFocus,\n 'combobox--multiple': this.multiple,\n 'combobox--empty': isEmpty,\n 'combobox--small': this.size === 'small',\n 'combobox--medium': this.size === 'medium',\n 'combobox--large': this.size === 'large',\n 'combobox--warning': this.warning,\n 'combobox--error': this.error,\n 'combobox--success': this.success,\n 'combobox--filled': this.filled,\n 'combobox--pill': this.pill,\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n ${this.renderTrigger(hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n\n ${hasHelpText ? html`<nile-form-help-text>${this.helpText}</nile-form-help-text>` : html``}\n ${hasErrorMessage ? html`<nile-form-error-message>${this.errorMessage}</nile-form-error-message>` : html``}\n </div>\n </div>\n `;\n }\n\n private renderTrigger(hasClearIcon: boolean): TemplateResult {\n const hasTags = this.multiple && this.selectedOptions.length > 0;\n const inputPlaceholder = hasTags ? '' : this.placeholder;\n\n return html`\n <div\n part=\"combobox\"\n class=\"combobox__trigger\"\n slot=\"anchor\"\n @mousedown=${this.onTriggerMouseDown}\n >\n <slot part=\"prefix\" name=\"prefix\" class=\"combobox__prefix\"></slot>\n\n <div class=${classMap({\n 'combobox__scroll-area': true,\n 'combobox__scroll-area--single-line': this.multiple && this.tagLayout === 'single-line',\n 'combobox__scroll-area--wrap': this.multiple && (this.tagLayout === 'wrap' || this.tagLayout === 'fixed-height'),\n })}>\n ${hasTags ? this.renderInlineTags() : html``}\n\n <div class=\"combobox__input-wrapper\">\n <input\n part=\"input\"\n class=\"combobox__input\"\n type=\"text\"\n placeholder=${inputPlaceholder}\n .disabled=${this.disabled}\n .value=${this.searchValue}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n aria-activedescendant=${this.keyboardActiveIndex >= 0 ? `option-${this.keyboardActiveIndex}` : ''}\n role=\"combobox\"\n tabindex=\"0\"\n @input=${this.onInputHandler}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onFocusIn}\n @blur=${this.onFocusOut}\n @change=${this.onInputChange}\n />\n </div>\n </div>\n\n <input\n class=\"combobox__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value) ? this.value.join(', ') : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n\n <div class=\"combobox__actions\">\n ${hasClearIcon ? this.renderClearButton() : html``}\n\n <slot name=\"expand-icon\" part=\"expand-icon\" class=\"combobox__expand-icon\">\n <nile-icon\n library=\"system\"\n name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"\n ></nile-icon>\n </slot>\n </div>\n </div>\n `;\n }\n\n private renderInlineTags(): TemplateResult[] {\n const tags: TemplateResult[] = [];\n\n this.selectedOptions.forEach((option, index) => {\n if (this.maxTagsVisible > 0 && index >= this.maxTagsVisible) {\n if (index === this.maxTagsVisible) {\n tags.push(html`<span class=\"combobox__tags-count\">+${this.selectedOptions.length - this.maxTagsVisible} More</span>`);\n }\n return;\n }\n tags.push(html`\n <nile-tag\n part=\"tag\"\n exportparts=\"base:tag__base, content:tag__content, remove-button:tag__remove-button\"\n ?pill=${this.pill}\n size=${this.size}\n removable\n ?disabled=${this.disabled}\n @nile-remove=${(e: NileRemoveEvent) => { e.stopPropagation(); this.removeTag(option); }}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `);\n });\n\n return tags;\n }\n\n private renderClearButton(): TemplateResult {\n return html`\n <button\n part=\"clear-button\"\n class=\"combobox__clear\"\n type=\"button\"\n aria-label=\"Clear\"\n @mousedown=${(e: MouseEvent) => e.stopPropagation()}\n @click=${this.onClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon\n name=\"var(--nile-icon-close, var(--ng-icon-x-close))\"\n size=\"var(--nile-height-14px, var(--ng-height-16px))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n library=\"system\"\n color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"\n ></nile-icon>\n </slot>\n </button>\n `;\n }\n\n private renderStickyHeaderOverlay(grouped: boolean, useVirtual: boolean): TemplateResult {\n if (!this.stickyGroupHeader || !grouped || !useVirtual) return html``;\n const idx = this.stickyHeaderIndex;\n if (idx < 0 || idx >= this.filteredRows.length) return html``;\n const row = this.filteredRows[idx];\n if (row.kind !== 'header') return html``;\n return html`\n <div class=\"combobox__group-sticky-overlay\">\n ${ComboboxRenderer.renderGroupHeader(row)}\n </div>\n `;\n }\n\n private renderListbox(): TemplateResult {\n const showAddOption = this.allowCustomValue\n && this.searchValue.trim()\n && !this.filteredData.some((item: any) => {\n const v = this.getItemValue(item);\n return String(v).toLowerCase() === this.searchValue.trim().toLowerCase();\n })\n && !this.filteredData.some((item: any) => {\n const t = this.getDisplayText(item);\n return t.toLowerCase() === this.searchValue.trim().toLowerCase();\n });\n\n if (this.isHorizontalGrid) {\n return this.renderHorizontalListbox(!!showAddOption);\n }\n\n const isGrid = this.gridColumns > 1 || this.isBidirectionalGrid;\n const grouped = this.hasGroupedData && !isGrid;\n const useVirtual = grouped\n ? this.filteredRows.length >= 5\n : ComboboxRenderer.shouldUseVirtualizer(this.filteredData, this.gridColumns);\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n const virtualItems = (useVirtual || isGrid) ? virtualizer.getVirtualItems() : [];\n const totalSize = (useVirtual || isGrid) ? virtualizer.getTotalSize() : 0;\n\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"combobox__listbox ${this.isBidirectionalGrid ? 'combobox__listbox--bidirectional' : ''} ${this.portal ? 'combobox__portal-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.onOptionClick}\n @scroll=${this.onScroll}\n style=\"${this.portal ? 'display: none;' : ''}${this.isBidirectionalGrid ? `max-height:${this.gridRows * 38 + 16}px;` : ''}\"\n ${ref(this.scrollElementRef)}\n >\n ${this.renderLoader()}\n ${this.renderSelectAll()}\n ${this.renderStickyHeaderOverlay(grouped, useVirtual)}\n ${this.showNoResults && !this.optionsLoading && !this.loading\n ? this.renderEmptyState()\n : isGrid\n ? ComboboxRenderer.renderVirtualizedGrid(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.gridColumns,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n this.isBidirectionalGrid ? this.gridColumnWidth : undefined,\n )\n : grouped\n ? (useVirtual\n ? ComboboxRenderer.renderRowsVirtualized(\n virtualItems,\n totalSize,\n this.filteredRows,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n : ComboboxRenderer.renderRowsPlain(\n this.filteredRows,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.onScroll.bind(this),\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.hasActiveFilter ? this.noResultsSubtitle : undefined,\n ))\n : useVirtual\n ? ComboboxRenderer.renderVirtualizedOptions(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n virtualizer.measureElement,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n : ComboboxRenderer.renderPlainOptions(\n this.filteredData,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.onScroll.bind(this),\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.hasActiveFilter ? this.noResultsSubtitle : undefined,\n )\n }\n ${showAddOption ? html`\n <div @mouseup=${(e: MouseEvent) => { e.stopPropagation(); this.addCustomValue(this.searchValue.trim()); }}>\n ${ComboboxRenderer.renderAddCustomOption(this.searchValue.trim(), this.multiple)}\n </div>\n ` : ''}\n ${this.multiple && this.showFooter && !this.selectAllEnabled ? this.renderFooter() : ''}\n </div>\n `;\n }\n\n private renderHorizontalListbox(showAddOption: boolean): TemplateResult {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n const virtualItems = hVirtualizer.getVirtualItems();\n const totalSize = hVirtualizer.getTotalSize();\n\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"combobox__listbox combobox__listbox--horizontal ${this.portal ? 'combobox__portal-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.onOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n ${ref(this.hScrollElementRef)}\n >\n ${this.renderLoader()}\n ${this.renderSelectAll()}\n ${this.showNoResults && !this.optionsLoading && !this.loading\n ? this.renderEmptyState()\n : ComboboxRenderer.renderHorizontalGrid(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.gridRows,\n this.gridColumnWidth,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n }\n ${showAddOption ? html`\n <div @mouseup=${(e: MouseEvent) => { e.stopPropagation(); this.addCustomValue(this.searchValue.trim()); }}>\n ${ComboboxRenderer.renderAddCustomOption(this.searchValue.trim(), this.multiple)}\n </div>\n ` : ''}\n ${this.multiple && this.showFooter && !this.selectAllEnabled ? this.renderFooter() : ''}\n </div>\n `;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`<span class=\"combobox__loader--center\"><nile-loader size=\"sm\"></nile-loader></span>`;\n }\n if (this.optionsLoading) {\n return html`<span class=\"combobox__loader\"><nile-icon class=\"combobox__loader--icon\" name=\"button-loading-blue\"></nile-icon></span>`;\n }\n return html``;\n }\n\n private renderSelectAll(): TemplateResult {\n if (!this.multiple || !this.selectAllEnabled) return html``;\n const disabled = this.showNoResults || this.optionsLoading || this.loading;\n const anySelected = this.selectAllChecked || this.selectAllIndeterminate;\n const label = anySelected ? 'Deselect all' : 'Select all';\n const showToggleDisabled = this.selectedOptions.length === 0 || this.showNoResults;\n const iconColor = showToggleDisabled\n ? 'var(--nile-colors-primary-500, var(--ng-colors-fg-quaternary-400))'\n : 'var(--nile-colors-primary-600, var(--ng-colors-fg-brand-secondary-600))';\n\n return html`\n <div\n part=\"top-actions\"\n class=\"combobox__top-actions ${disabled ? 'combobox__top-actions--disabled' : ''}\"\n @mousedown=${(e: MouseEvent) => e.preventDefault()}\n >\n <div\n class=\"combobox__select-all\"\n @click=${this.handleSelectAllToggle}\n >\n <nile-checkbox\n ?checked=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${disabled}\n >\n ${label}\n </nile-checkbox>\n </div>\n\n <button\n part=\"show-toggle\"\n class=\"combobox__show-toggle\"\n type=\"button\"\n ?disabled=${showToggleDisabled}\n @click=${this.toggleShowSelected}\n >\n <nile-icon\n library=\"system\"\n name=\"filter\"\n color=${iconColor}\n ></nile-icon>\n ${this.showSelectedOnly ? 'Show all' : 'Selected'}\n </button>\n </div>\n `;\n }\n\n private renderFooter(): TemplateResult {\n return html`\n <div\n part=\"footer\"\n class=\"combobox__footer ${this.loading ? 'loading' : ''}\"\n @click=${this.onFooterClick}\n >\n <span @click=${this.toggleShowSelected} style=\"cursor: pointer;\">\n <nile-checkbox\n ?disabled=${this.selectedOptions.length === 0}\n ?checked=${this.showSelectedOnly}\n >\n Show Selected\n </nile-checkbox>\n </span>\n ${this.selectedOptions.length > 0\n ? html`<span class=\"combobox__footer-clear\" @click=${this.clearAll}>Clear All</span>`\n : ''}\n </div>\n `;\n }\n}\n\n// ── Default animations ──\n\nsetDefaultAnimation('combobox.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('combobox.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileCombobox;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-combobox': NileCombobox;\n }\n}\n"],"names":["NileCombobox","z","constructor","this","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","ComboboxPortalManager","searchManager","ComboboxSearchManager","scrollElementRef","createRef","virtualizerCtrl","VirtualizerController","getScrollElement","value","count","estimateSize","overscan","hScrollElementRef","hVirtualizerCtrl","_this$hScrollElementR","horizontal","scrolling","keyboardActiveIndex","hasFocus","displayLabel","selectedOptions","filteredData","filteredRows","originalData","showNoResults","showListbox","searchValue","showSelectedOnly","selectAllChecked","selectAllIndeterminate","stickyHeaderIndex","name","data","defaultValue","size","placeholder","multiple","label","required","disabled","open","clearable","loading","optionsLoading","disableLocalSearch","allowCustomValue","acceptUserInput","addToSuggestions","strict","maxTagsVisible","tagLayout","showFooter","selectAllEnabled","stickyGroupHeader","portal","hoist","placement","form","helpText","errorMessage","warning","error","success","filled","pill","noResultsMessage","noResultsSubtitle","noDataMessage","autoCompleteOptions","debounceMs","allowHtmlLabel","enableVisibilityEffect","enableTabClose","noWidthSync","gridColumns","gridRows","gridColumnWidth","lastVirtualizerGrouped","_this","_inherits","_y","_createClass","key","get","_this$valueInput","valueInput","validity","_this$valueInput$vali","_this$valueInput2","validationMessage","connectedCallback","super","setupBoundHandlers","emit","updateComplete","then","length","syncSelection","disconnectedCallback","removeOpenListeners","visibilityManager","cleanup","cancelDebounce","scrollTimeout","clearTimeout","undefined","cleanupPortal","firstUpdated","_changed","VisibilityManager","host","target","combobox","isOpen","onAnchorOutOfView","hide","visible","reason","onDocumentHidden","event","detail","updated","changedProperties","has","updateVirtualizerCount","base","hasGroups","updateStickyHeader","scrollTop","hasGroupedData","offset","stuck","i","row","kind","pruneTreeBySelection","items","selectedSet","out","_iterator","_createForOfIteratorHelper","_step","s","n","done","item","_typeof","type","Array","isArray","options","kept","push","String","getItemValue","err","e","f","renderEmptyState","hasActiveFilter","ComboboxRenderer","renderNoResults","renderNoData","isBidirectionalGrid","virtualRowCount","Math","ceil","virtualColumnCount","max","isHorizontalGrid","hVirtualizer","getVirtualizer","colCount","setOptions","_objectSpread","measure","virtualizer","grouped","countChanged","modeChanged","index","_this4$filteredRows$i","getDisplayText","renderItemConfig","toString","getValue","getSearchText","_this$renderItemConfi3","getItemDescription","_ref","_this$renderItemConfi4","_this$renderItemConfi5","getDescription","description","getItemPrefix","_ref2","_this$renderItemConfi7","_this$renderItemConfi8","_this$renderItemConfi9","getPrefix","prefix","getItemSuffix","_ref3","_this$renderItemConfi10","_this$renderItemConfi11","getSuffix","suffix","_this$renderItemConfi13","baseData","getOptionRows","flattenRows","map","r","ComboboxSelectionManager","createOptionsFromValues","bind","_this$selectedOptions","_this$selectedOptions2","getTextLabel","updateValidity","updateSelectAllState","getSelectableData","filter","_this5","selectedValues","Set","selectedInView","reduce","handleSelectAllToggle","_this6","stopPropagation","preventDefault","shouldUnselectAll","current","_toConsumableArray","inViewValues","inViewSet","next","v","merged","forEach","add","from","filterOptions","action","handleDocumentFocusIn","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortal","portalContainerElement","handleDocumentKeyDown","onGlobalKeyDown","handleDocumentMouseDown","handleWindowError","message","handleWindowResize","updatePosition","handleWindowScroll","addOpenListeners","document","addEventListener","window","removeEventListener","onInputKeyDown","moveActiveOption","show","selectActiveOption","trim","addCustomValue","setActiveOption","last","removeTag","inputElement","focus","preventScroll","getVisibleOptions","root","shadowRoot","querySelectorAll","delta","opt","_n$scrollIntoView","el","setAttribute","classList","scrollIntoView","block","removeAttribute","remove","handleOptionSelection","onInputChange","onInputHandler","_this8","debounceSearch","q","query","search","preserveScroll","_this9","_this$scrollElementRe2","_this$scrollElementRe3","tree","_B","filterRows","rows","st","source","_this$searchManager$f","filteredItems","resetMeasuredHeight","resetScrollPosition","requestUpdate","onFocusIn","select","onFocusOut","_this11","match","find","toLowerCase","val","onTriggerMouseDown","_this$inputElement2","some","Element","tagName","onOptionClick","option","optionValue","oldValue","toggleMultiValue","JSON","stringify","_this13","allItems","_this$renderItemConfi14","newItem","onClearClick","removeValue","removedtagvalue","onFooterClick","toggleShowSelected","clearAll","onScroll","scrollLeft","setTimeout","floor","scrollHeight","offsetHeight","isAtBottom","_show","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","waitForEvent","stop","_callee2","_callee2$","_context3","abrupt","_callee3","_this$visibilityManag2","_this$visibilityManag3","_callee3$","_context4","setup","doOpen","setupPortal","doClose","handleOpenChange","_callee4","_this$popup","_this$popup2","_d","_callee4$","_context5","stopAnimations","style","visibility","active","Promise","requestAnimationFrame","getAnimation","dir","keyframes","animateTo","_callee5","_this$popup3","_d2","_callee5$","_context6","handleDisabledChange","handleValueChange","handleDataChange","handleAutoCompleteOptionsChange","handleSelectAllConfigChange","handlePortalChange","checkValidity","getForm","reportValidity","setCustomValidity","blur","handleInvalid","setValidity","emitInvalidEvent","_resetScrollPosition","_callee6","_callee6$","_context7","render","_this16","hasLabelSlot","test","hasLabel","hasValue","hasClearIcon","hasHelpText","hasErrorMessage","isEmpty","html","_templateObject","_taggedTemplateLiteral","classMap","_this16$inputElement","ifDefined","renderTrigger","renderListbox","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","hasTags","inputPlaceholder","_templateObject7","renderInlineTags","_templateObject8","concat","join","renderClearButton","_templateObject9","tags","_templateObject10","_templateObject11","_templateObject12","renderStickyHeaderOverlay","useVirtual","_templateObject13","idx","_templateObject14","_templateObject15","_templateObject16","renderGroupHeader","_this19","_this$renderItemConfi15","_this$renderItemConfi16","_this$renderItemConfi17","_this$renderItemConfi18","_this$renderItemConfi19","_this$renderItemConfi20","_this$renderItemConfi21","_this$renderItemConfi22","_this$renderItemConfi23","_this$renderItemConfi24","_this$renderItemConfi25","_this$renderItemConfi26","_this$renderItemConfi27","_this$renderItemConfi28","_this$renderItemConfi29","showAddOption","renderHorizontalListbox","isGrid","shouldUseVirtualizer","virtualItems","getVirtualItems","totalSize","getTotalSize","_templateObject17","ref","renderLoader","renderSelectAll","renderVirtualizedGrid","renderRowsVirtualized","renderRowsPlain","renderVirtualizedOptions","measureElement","renderPlainOptions","_templateObject18","renderAddCustomOption","renderFooter","_this$renderItemConfi30","_this$renderItemConfi31","_this$renderItemConfi32","_this20","_templateObject19","renderHorizontalGrid","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","showToggleDisabled","iconColor","_templateObject25","_templateObject26","_templateObject27","NileElement","styles","__decorate","prototype","state","property","converter","fromAttribute","split","toAttribute","Boolean","reflect","attribute","Number","parse","_unused","watch","waitUntilFirstUpdate","_export","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"w0sEA6GaA,CAAAA,uBAAAA,EAAAA,EAAN,SAAAC,EAAA,CAAAC,KAAAA,KAAAA,CAAAA,eAAAA,MAAAA,CAAAA,mCAGYC,EAAAA,KAAAA,CAAAC,qBAAwB,CAAA,GAAIC,CAAAA,CAAsBF,CAAAA,sBAAAA,CAAAA,KAAAA,EAAM,CACvEG,mBAAqB,CAAA,CAAC,WAAa,CAAA,YAAA,CAAA,CAAA,CAAA,CAEpBH,KAAAA,CAAiBI,iBAAAA,CAAG,GAAIC,CAAAA,CAAkBL,CAAAA,sBAAAA,CAAAA,KAAAA,EAAM,WAAa,CAAA,OAAA,CAAA,CAC7DA,KAAAA,CAAAM,aAAAA,CAAgB,GAAIC,CAAAA,CAAsBP,CAAAA,sBAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAC1CA,KAAAA,CAAAQ,aAAAA,CAAgB,GAAIC,CAAAA,CAAAA,CAAAA,CAAAA,CAE7BT,KAAAA,CAAgBU,gBAAwBC,CAAAA,CAAAA,CAAAA,CAAAA,CACxCX,KAAAA,CAAAY,eAAAA,CAAkB,GAAIC,CAAAA,CAAAA,CAAAA,sBAAAA,CAAAA,KAAAA,EAAqD,CACjFC,gBAAAA,CAAkB,QAAlBA,CAAAA,gBAAAA,CAAAA,MAAAA,qBAAAA,QAAAA,qBAAAA,CAAwBd,KAAAA,CAAKU,gBAAiBK,CAAAA,KAAAA,UAAAA,qBAAAA,UAAAA,qBAAAA,CAAS,OACvDC,KAAO,CAAA,CAAA,CACPC,YAAc,CAAA,QAAdA,CAAAA,YAAcA,CAAA,QAAM,GACpBC,GAAAA,QAAAA,CAAU,IAGJlB,KAAAA,CAAiBmB,iBAAAA,CAAwBR,CACzCX,CAAAA,CAAAA,CAAAA,KAAAA,CAAAoB,gBAAmB,CAAA,GAAIP,CAAAA,gCAAqD,CAClFC,gBAAkB,CAAA,QAAlBA,CAAAA,gBAAkBA,CAAA,MAAAO,qBAAA,QAAAA,qBAAA,CAAMrB,KAAAA,CAAKmB,iBAAAA,CAAkBJ,oEAAS,IACxDC,GAAAA,KAAAA,CAAO,CACPC,CAAAA,YAAAA,CAAc,QAAdA,CAAAA,YAAAA,CAAAA,QAAoB,IAAA,GACpBK,YAAY,CACZJ,CAAAA,QAAAA,CAAU,CAIJlB,CAAAA,CAAAA,CAAAA,KAAAA,CAASuB,SAAG,CAAA,CAAA,CAAA,CAEZvB,KAAAA,CAAmBwB,mBAAI,CAAA,CAAA,CAAA,CAOdxB,KAAAA,CAAQyB,QAAAA,CAAAA,CAAG,CACnBzB,CAAAA,KAAAA,CAAY0B,aAAG,EACf1B,CAAAA,KAAAA,CAAe2B,eAAqB,CAAA,EAAA,CAGpC3B,KAAAA,CAAY4B,YAAAA,CAAU,GASd5B,KAAAA,CAAY6B,YAAAA,CAAkB,EAG9B7B,CAAAA,KAAAA,CAAY8B,YAAU,CAAA,EAAA,CAE9B9B,KAAAA,CAAa+B,aAAAA,CAAAA,CAAG,CAChB/B,CAAAA,KAAAA,CAAWgC,WAAG,CAAA,CAAA,CAAA,CACdhC,KAAAA,CAAWiC,WAAAA,CAAG,GACNjC,KAAAA,CAAgBkC,gBAAAA,CAAAA,CAAG,CACnBlC,CAAAA,KAAAA,CAAgBmC,gBAAG,CAAA,CAAA,CAAA,CACnBnC,KAAAA,CAAsBoC,sBAAG,CAAA,CAAA,CAAA,CAOzBpC,KAAAA,CAAiBqC,iBAAAA,CAAAA,CAAI,CAI1BrC,CAAAA,KAAAA,CAAIsC,KAAG,EAEQtC,CAAAA,KAAAA,CAAIuC,IAAU,CAAA,EAAA,CAQzCvC,KAAAA,CAAKe,KAAAA,CAAsB,GAEXf,KAAAA,CAAYwC,YAAAA,CAAsB,EAEtCxC,CAAAA,KAAAA,CAAIyC,IAAiB,CAAA,QAAA,CAErBzC,KAAAA,CAAW0C,WAAG,CAAA,mBAAA,CAEkB1C,KAAAA,CAAQ2C,QAAAA,CAAAA,CAAG,CAE3C3C,CAAAA,KAAAA,CAAK4C,MAAG,EAEwB5C,CAAAA,KAAAA,CAAQ6C,QAAG,CAAA,CAAA,CAAA,CAEX7C,KAAAA,CAAQ8C,QAAAA,CAAAA,CAAG,EAEX9C,KAAAA,CAAI+C,IAAAA,CAAAA,CAAG,CAEP/C,CAAAA,KAAAA,CAASgD,SAAG,CAAA,CAAA,CAAA,CAEZhD,KAAAA,CAAOiD,OAAAA,CAAAA,CAAG,CAEVjD,CAAAA,KAAAA,CAAckD,cAAG,CAAA,CAAA,CAAA,CAGjBlD,KAAAA,CAAkBmD,kBAAAA,CAAAA,CAAG,EAGrBnD,KAAAA,CAAgBoD,gBAAAA,CAAAA,CAAG,CAGnBpD,CAAAA,KAAAA,CAAeqD,eAAG,CAAA,CAAA,CAAA,CAGlBrD,KAAAA,CAAgBsD,gBAAG,CAAA,CAAA,CAAA,CAGnBtD,KAAAA,CAAMuD,MAAAA,CAAAA,CAAG,CAGMvD,CAAAA,KAAAA,CAAcwD,eAAG,CAGhExD,CAAAA,KAAAA,CAASyD,SAAsB,CAAA,aAAA,CAOCzD,KAAAA,CAAU0D,UAAAA,CAAAA,CAAG,EAOoB1D,KAAAA,CAAgB2D,gBAAAA,CAAAA,CAAG,CAQlB3D,CAAAA,KAAAA,CAAiB4D,iBAAG,CAAA,CAAA,CAAA,CAEtD5D,KAAAA,CAAM6D,MAAG,CAAA,CAAA,CAAA,CAExB7D,KAAAA,CAAK8D,KAAAA,CAAAA,CAAG,CAER9D,CAAAA,KAAAA,CAAS+D,UAAsB,QAE/B/D,CAAAA,KAAAA,CAAIgE,IAAG,CAAA,EAAA,CAEiBhE,KAAAA,CAAQiE,QAAAA,CAAG,GAEPjE,KAAAA,CAAYkE,YAAAA,CAAG,EAE3ClE,CAAAA,KAAAA,CAAOmE,OAAG,CAAA,CAAA,CAAA,CACVnE,KAAAA,CAAKoE,KAAAA,CAAAA,CAAG,CACRpE,CAAAA,KAAAA,CAAOqE,OAAG,CAAA,CAAA,CAAA,CAEKrE,KAAAA,CAAMsE,MAAAA,CAAAA,CAAG,EACTtE,KAAAA,CAAIuE,IAAAA,CAAAA,CAAG,CAEvBvE,CAAAA,KAAAA,CAAgBwE,gBAAG,CAAA,iBAAA,CACexE,KAAAA,CAAiByE,iBAAG,CAAA,+BAAA,CACxBzE,KAAAA,CAAa0E,aAAAA,CAAG,mBAiB1E1E,CAAAA,KAAAA,CAAmB2E,oBAAU,EAGD3E,CAAAA,KAAAA,CAAU4E,UAAG,CAAA,GAAA,CAIG5E,KAAAA,CAAc6E,cAAAA,CAAAA,CAAG,EAEA7E,KAAAA,CAAsB8E,sBAAAA,CAAAA,CAAG,CACzB9E,CAAAA,KAAAA,CAAc+E,cAAG,CAAA,CAAA,CAAA,CAClC/E,KAAAA,CAAWgF,WAAG,CAAA,CAAA,CAAA,CAGYhF,KAAAA,CAAWiF,WAAAA,CAAG,CAGjBjF,CAAAA,KAAAA,CAAQkF,SAAG,CAGlBlF,CAAAA,KAAAA,CAAemF,eAAG,CAAA,GAAA,CA+KtEnF,KAAAA,CAAsBoF,sBAAAA,CAAAA,CAAG,CAkxClC,QAAAC,KAAA,EA77CCC,SAAA,CAAAxF,CAAA,CAAAyF,EAAA,SAAAC,YAAA,CAAA1F,CAAA,GAAA2F,GAAA,YAAAC,GAAA,UAAAA,IAAA,CACE,KAAAC,gBAAA,CAAA,OAAAA,gBAAA,CAAO3F,IAAK4F,CAAAA,UAAAA,UAAAA,gBAAAA,iBAAL5F,gBAAAA,CAAiB6F,QACzB,EAED,GAAAJ,GAAA,qBAAAC,GAAA,UAAAA,IAAA,CACE,KAAAI,qBAAA,CAAAC,iBAAA,CAAA,OAAAD,qBAAA,EAAAC,iBAAA,CAAO/F,IAAK4F,CAAAA,UAAAA,UAAAA,iBAAAA,iBAAL5F,iBAAAA,CAAiBgG,gFAAqB,EAC9C,EAID,GAAAP,GAAA,qBAAA1E,KAAA,UAAAkF,iBAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACEC,aAAAA,CAAAA,CAAAA,iCACAlG,KAAK+C,IAAO,CAAA,CAAA,CAAA,CACZ/C,IAAKmG,CAAAA,kBAAAA,CAAAA,CAAAA,CACLnG,IAAKoG,CAAAA,IAAAA,CAAK,aAEVpG,IAAKqG,CAAAA,cAAAA,CAAeC,IAAK,CAAA,UAAA,CACnBtG,MAAK2E,CAAAA,mBAAAA,CAAoB4B,OAAS,CAA0B,EAAA,CAAA,GAArBvG,MAAKuC,CAAAA,IAAAA,CAAKgE,MACnDvG,GAAAA,MAAAA,CAAKuC,wBAAWvC,MAAAA,CAAK2E,mBAEnB3E,CAAAA,CAAAA,CAAAA,MAAAA,CAAKe,KAASf,EAAAA,MAAAA,CAAKuC,KAAKgE,MAAS,CAAA,CAAA,EACnCvG,MAAKwG,CAAAA,aAAAA,CAAAA,CACN,EAEJ,CAAA,EAED,GAAAf,GAAA,wBAAA1E,KAAA,UAAA0F,oBAAAA,CAAAA,CACEzG,KAAAA,qBAAAA,CAAAA,IAAAA,CAAK0G,mBACL1G,CAAAA,CAAAA,EAAAA,qBAAAA,CAAAA,IAAAA,CAAK2G,iBAAmBC,UAAAA,qBAAAA,WAAxB5G,qBAAAA,CAAwB4G,OAAAA,CAAAA,CAAAA,CACxB5G,IAAKQ,CAAAA,aAAAA,CAAcqG,cACf7G,CAAAA,CAAAA,CAAAA,IAAAA,CAAK8G,aACPC,GAAAA,YAAAA,CAAa/G,IAAK8G,CAAAA,aAAAA,CAAAA,CAClB9G,KAAK8G,aAAgBE,CAAAA,IAAAA,EAAAA,CAAAA,CAEvBhH,IAAKM,CAAAA,aAAAA,CAAc2G,aACpB,CAAA,CAAA,EAES,GAAAxB,GAAA,gBAAA1E,KAAA,UAAAmG,YAAAA,CAAaC,CAAAA,CAAAA,KAAAA,MAAAA,MACrBnH,IAAK2G,CAAAA,iBAAAA,CAAoB,GAAIS,CAAAA,CAAAA,CAAkB,CAC7CC,IAAMrH,CAAAA,IAAAA,CACNsH,MAAQtH,CAAAA,IAAAA,CAAKuH,QACbzC,CAAAA,sBAAAA,CAAwB9E,KAAK8E,sBAC7BC,CAAAA,cAAAA,CAAgB/E,IAAK+E,CAAAA,cAAAA,CACrByC,MAAQ,CAAA,QAARA,CAAAA,MAAQA,CAAA,QAAMxH,CAAAA,OAAK+C,IACnB0E,GAAAA,iBAAAA,CAAmB,QAAnBA,CAAAA,iBAAAA,CAAAA,CACEzH,CAAAA,MAAAA,CAAK0H,IACL1H,CAAAA,CAAAA,CAAAA,MAAAA,CAAKoG,KAAK,wBAA0B,CAAA,CAAEuB,OAAS,CAAA,CAAA,CAAA,CAAOC,MAAQ,CAAA,oBAAA,CAAsBtF,KAAMtC,MAAKsC,CAAAA,IAAAA,CAAAA,CAAO,EAExGuF,CAAAA,gBAAAA,CAAkB,QAAlBA,CAAAA,gBAAAA,CAAAA,CACE7H,CAAAA,MAAAA,CAAK0H,OACL1H,MAAKoG,CAAAA,IAAAA,CAAK,wBAA0B,CAAA,CAAEuB,OAAS,CAAA,CAAA,CAAA,CAAOC,OAAQ,iBAAmBtF,CAAAA,IAAAA,CAAMtC,MAAKsC,CAAAA,IAAAA,CAAAA,CAAO,EAErG8D,CAAAA,IAAAA,CAAM,QAANA,CAAAA,IAAAA,CAAO0B,CAAeC,CAAAA,CAAAA,QAAgB/H,CAAAA,MAAKoG,CAAAA,IAAAA,SAAAA,MAAAA,CAAa0B,CAAAA,EAASC,MAEpE,EAES,GAAAtC,GAAA,WAAA1E,KAAA,UAAAiH,OAAAA,CAAQC,CAAAA,CAAAA,CACZA,CAAkBC,CAAAA,GAAAA,CAAI,UACxBlI,IAAKwG,CAAAA,aAAAA,CAAAA,CAAAA,CAEPxG,IAAKmI,CAAAA,sBAAAA,CAAAA,CACN,EAED,GAAA1C,GAAA,oBAAAC,GAAA,UAAAA,IAAA,EACE,MAAO1F,KAAAA,CAAKkF,QAAW,CAAA,CAAA,EAAKlF,IAAKiF,CAAAA,WAAAA,EAAe,CACjD,EAGD,GAAAQ,GAAA,kBAAAC,GAAA,UAAAA,IAAA,CACE,CAAA,GAAM0C,CAAAA,CAAOpI,CAAAA,IAAAA,CAAK8B,aAAayE,MAAS,CAAA,CAAA,CAAIvG,IAAK8B,CAAAA,YAAAA,CAAe9B,IAAKuC,CAAAA,IAAAA,CACrE,MAAO8F,CAAAA,CAAAA,CAAUD,CAClB,CAAA,EAOO,GAAA3C,GAAA,sBAAA1E,KAAA,UAAAuH,kBAAAA,CAAmBC,CACzB,CAAA,CAAA,GAAA,CAAKvI,KAAK4D,iBAAsB5D,EAAAA,CAAAA,IAAAA,CAAKwI,cAEnC,CAAA,MAAA,MAAA,CADgC,CAA5BxI,GAAAA,IAAAA,CAAKqC,oBAA0BrC,IAAKqC,CAAAA,iBAAAA,CAAAA,CAAqB,CAG/D,CAAA,CAAA,CAAA,GAAIoG,CAAAA,CAAS,CAAA,CAAA,CACTC,GAAS,CACb,CAAA,IAAK,GAAIC,CAAAA,EAAAA,CAAI,CAAGA,CAAAA,EAAAA,CAAI3I,KAAK6B,YAAa0E,CAAAA,MAAAA,CAAQoC,EAAK,EAAA,CAAA,CACjD,GAAMC,CAAAA,EAAAA,CAAM5I,KAAK6B,YAAa8G,CAAAA,EAAAA,CAAAA,CACxBlG,EAAoB,CAAA,QAAA,GAAbmG,EAAIC,CAAAA,IAAAA,CAAoB,GAAK,EAC1C,CAAA,GAAIJ,CAASF,CAAAA,CAAAA,CAAW,MACP,QAAA,GAAbK,GAAIC,IAAmBH,GAAAA,CAAAA,CAAQC,EACnCF,CAAAA,CAAAA,CAAAA,EAAUhG,EACX,EACGiG,IAAU1I,IAAKqC,CAAAA,iBAAAA,GAAmBrC,IAAKqC,CAAAA,iBAAAA,CAAoBqG,CAChE,CAAA,EAGO,GAAAjD,GAAA,wBAAA1E,KAAA,UAAA+H,oBAAAA,CAAqBC,CAAAA,CAAcC,CACzC,CAAA,CAAA,GAAMC,CAAAA,CAAa,CAAA,EAAA,CACnB,IAAAC,SAAA,CAAAC,0BAAA,CAAmBJ,CACjB,EAAAK,KAAA,KADF,IAAAF,SAAA,CAAAG,CAAA,KAAAD,KAAA,CAAAF,SAAA,CAAAI,CAAA,IAAAC,IAAA,EACE,IADSC,CAAAA,GAAAA,CAAAA,KAAAA,CAAAA,KAAAA,CACT,GAAIA,GAAwB,EAAA,QAAA,EAAAC,OAAA,CAATD,MAAmC,OAAdA,GAAAA,GAAAA,CAAKE,IAAoBC,EAAAA,KAAAA,CAAMC,OAAQJ,CAAAA,GAAAA,CAAKK,SAAU,CAC5F,GAAMC,CAAAA,EAAO9J,CAAAA,IAAAA,CAAK8I,oBAAqBU,CAAAA,GAAAA,CAAKK,QAASb,CACjDc,CAAAA,CAAAA,EAAAA,CAAKvD,MAAS,CAAA,CAAA,EAAG0C,CAAIc,CAAAA,IAAAA,CAAAA,aAAAA,CAAAA,aAAAA,IAAUP,GAAMK,MAAAA,OAAAA,CAASC,EACnD,EAAA,CAAA,EAAA,IAAUd,CAAAA,CAAYd,CAAAA,GAAAA,CAAI8B,OAAOhK,IAAKiK,CAAAA,YAAAA,CAAaT,GAClDP,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAIc,IAAKP,CAAAA,GAAAA,CAAAA,EAGb,OAAAU,GAAA,EAAAhB,SAAA,CAAAiB,CAAA,CAAAD,GAAA,WAAAhB,SAAA,CAAAkB,CAAA,UAAOnB,CAAAA,CACR,EAED,GAAAxD,GAAA,mBAAAC,GAAA,UAAAA,IAAA,CACE,CAAA,MAAA,CAAA,CAAS1F,IAAKiC,CAAAA,WAAAA,EAAejC,KAAKkC,gBACnC,EAEO,GAAAuD,GAAA,oBAAA1E,KAAA,UAAAsJ,gBAAAA,CAAAA,CAAAA,CACN,MAAIrK,KAAAA,CAAKsK,gBACAC,CAAiBC,CAAAA,eAAAA,CAAgBxK,IAAKwE,CAAAA,gBAAAA,CAAkBxE,IAAKyE,CAAAA,iBAAAA,CAAAA,CAE/D8F,EAAiBE,YAAazK,CAAAA,IAAAA,CAAK0E,aAC3C,CAAA,EAED,GAAAe,GAAA,uBAAAC,GAAA,UAAAA,IAAA,CAAYgF,CACV,MAAO1K,KAAKkF,CAAAA,QAAAA,CAAW,CAAKlF,EAAAA,IAAAA,CAAKiF,WAAc,CAAA,CAChD,EAED,GAAAQ,GAAA,mBAAAC,GAAA,UAAAA,IAAA,CAAYiF,CACV,MAAI3K,KAAAA,CAAKiF,WAAc,CAAA,CAAA,CACd2F,KAAKC,IAAK7K,CAAAA,IAAAA,CAAK4B,YAAa2E,CAAAA,MAAAA,CAASvG,IAAKiF,CAAAA,WAAAA,CAAAA,CAE/CjF,KAAKwI,cACAxI,CAAAA,IAAAA,CAAK6B,YAAa0E,CAAAA,MAAAA,CAEpBvG,IAAK4B,CAAAA,YAAAA,CAAa2E,MAC1B,EAED,GAAAd,GAAA,sBAAAC,GAAA,UAAAA,IAAA,CAAYoF,CACV,MAAOF,CAAAA,IAAAA,CAAKC,IAAK7K,CAAAA,IAAAA,CAAK4B,aAAa2E,MAASqE,CAAAA,IAAAA,CAAKG,GAAI/K,CAAAA,IAAAA,CAAKkF,QAAU,CAAA,CAAA,CAAA,CACrE,EAEO,GAAAO,GAAA,0BAAA1E,KAAA,UAAAoH,sBAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACN,GAAInI,IAAAA,CAAKgL,gBAAkB,CAAA,CACzB,GAAMC,CAAAA,GAAejL,CAAAA,IAAAA,CAAKoB,gBAAiB8J,CAAAA,cAAAA,CAAAA,CAAAA,CACrCC,EAAWnL,CAAAA,IAAAA,CAAK8K,mBAClBG,GAAapB,CAAAA,OAAAA,CAAQ7I,KAAUmK,GAAAA,EAAAA,EAAYF,GAAapB,CAAAA,OAAAA,CAAQ5I,aAAa,CAAOjB,CAAAA,GAAAA,IAAAA,CAAKmF,eAC3F8F,GAAAA,GAAAA,CAAaG,UAAW,CAAAC,aAAA,CAAAA,aAAA,IACnBJ,IAAapB,OAChB7I,MAAAA,KAAAA,CAAOmK,EACPlK,CAAAA,YAAAA,CAAc,QAAdA,CAAAA,YAAAA,CAAAA,QAAoBjB,CAAAA,MAAAA,CAAKmF,qBAE3B8F,GAAaK,CAAAA,OAAAA,CAAAA,CAAAA,CAEhB,EAAM,IAAA,CACL,GAAMC,CAAAA,GAAAA,CAAcvL,IAAKY,CAAAA,eAAAA,CAAgBsK,cACnClK,CAAAA,CAAAA,CAAAA,GAAAA,CAAQhB,IAAK2K,CAAAA,eAAAA,CACba,EAAUxL,CAAAA,IAAAA,CAAKwI,eACfiD,GAAeF,CAAAA,GAAAA,CAAY1B,OAAQ7I,CAAAA,KAAAA,GAAUA,GAC7C0K,CAAAA,GAAAA,CAAc1L,KAAKoF,sBAA2BoG,GAAAA,EAAAA,CACpD,GAAIC,GAAAA,EAAgBC,GAAa,CAAA,CAC/B,GAAMzK,CAAAA,GAAeuK,CAAAA,EAAAA,CAChBG,SAAAA,CAAsD,MAAAC,qBAAA,OAAA,QAAA,KAAAA,qBAAA,CAAnC5L,MAAK6B,CAAAA,YAAAA,CAAa8J,kDAAlB3L,qBAAAA,CAA0B6I,IAAoB,EAAA,EAAA,CAAK,EACvE,GAAA,iBAAM,GACV0C,GAAAA,GAAAA,CAAYH,0CACPG,GAAAA,CAAY1B,OACf7I,MAAAA,KAAAA,CAAAA,GAAAA,CACAC,YAEFsK,CAAAA,GAAAA,EAAAA,CAAAA,CAAAA,GAAAA,CAAYD,UACZtL,IAAKoF,CAAAA,sBAAAA,CAAyBoG,EAC/B,EACF,CACF,CAMO,GAAA/F,GAAA,kBAAA1E,KAAA,UAAA8K,cAAAA,CAAerC,CAAAA,CAAAA,KAAAA,qBAAAA,CAAAA,WAAAA,CACrB,MAAIxJ,CAAAA,qBAAAA,KAAAA,CAAK8L,gBAAkBD,UAAAA,qBAAAA,WAAvB7L,qBAAAA,CAAuB6L,cAAAA,CAAuB7L,KAAK8L,gBAAiBD,CAAAA,cAAAA,CAAerC,CAChFA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,iBAAAA,CAAAA,CAAM5G,KAAS4G,IAAAA,CAAAA,SAAAA,CAAAA,iBAAAA,CAAAA,CAAMlH,QAAQkH,CAAMuC,SAANvC,CAAMuC,YAAAA,WAAAA,CAANvC,CAAMuC,CAAAA,QAAAA,UAAAA,WAAAA,iBAANvC,WAAAA,CAAAA,IAAAA,CAAAA,CAAMuC,CAAAA,GAAgB,EAC3D,EAEO,GAAAtG,GAAA,gBAAA1E,KAAA,UAAAkJ,YAAAA,CAAaT,uCACnB,MAAIxJ,CAAAA,sBAAAA,KAAAA,CAAK8L,gBAAkBE,UAAAA,sBAAAA,WAAvBhM,sBAAAA,CAAuBgM,QAAAA,CAAiBhM,IAAK8L,CAAAA,gBAAAA,CAAiBE,SAASxC,CACpEA,CAAAA,EAAAA,QAAAA,CAAAA,CAAAA,SAAAA,CAAAA,iBAAAA,CAAAA,CAAMzI,KAASyI,UAAAA,QAAAA,UAAAA,QAAAA,CAAAA,CACvB,EAEO,GAAA/D,GAAA,iBAAA1E,KAAA,UAAAkL,aAAAA,CAAczC,CACpB,CAAA,KAAA0C,sBAAA,CAAA,MAAIlM,CAAAA,sBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,sBAAAA,WAAL9L,sBAAAA,CAAuBiM,aAAsBjM,CAAAA,IAAAA,CAAK8L,iBAAiBG,aAAczC,CAAAA,CAAAA,CAAAA,CAC9ExJ,IAAK6L,CAAAA,cAAAA,CAAerC,CAC5B,CAAA,EAEO,GAAA/D,GAAA,sBAAA1E,KAAA,UAAAoL,kBAAAA,CAAmB3C,CAAAA,CAAAA,KAAAA,IAAAA,CAAAA,sBAAAA,CAAAA,sBAAAA,CAAAA,sBAAAA,CACzB,OAAA4C,IAAA,EAAAC,sBAAA,EAAAC,sBAAA,CAAOtM,IAAAA,CAAK8L,gBAAkBS,UAAAA,sBAAAA,YAAAA,sBAAAA,CAAvBvM,sBAAAA,CAAuBuM,cAAAA,UAAAA,sBAAAA,iBAAvBvM,sBAAAA,CAAAA,IAAAA,CAAAA,sBAAAA,CAAwCwJ,mEAASA,CAAMgD,SAANhD,CAAMgD,iBAANhD,CAAMgD,CAAAA,WAAAA,UAAAA,IAAAA,UAAAA,IAAAA,CAAe,EAC9E,EAEO,GAAA/G,GAAA,iBAAA1E,KAAA,UAAA0L,aAAAA,CAAcjD,CACpB,CAAA,KAAAkD,KAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAAC,sBAAA,CAAA,OAAAH,KAAA,EAAAC,sBAAA,EAAAC,sBAAA,CAAO5M,IAAK8L,CAAAA,gBAAAA,UAAAA,sBAAAA,YAAAA,sBAAAA,CAAL9L,sBAAAA,CAAuB8M,SAAYtD,UAAAA,sBAAAA,iBAAnCxJ,sBAAAA,CAAAA,IAAAA,CAAAA,sBAAAA,CAAmCwJ,CAAAA,CAAAA,UAAAA,sBAAAA,UAAAA,sBAAAA,CAASA,CAAMuD,SAANvD,CAAMuD,iBAANvD,CAAMuD,CAAAA,MAAAA,UAAAA,KAAAA,UAAAA,KAAAA,CAAU,EACpE,EAEO,GAAAtH,GAAA,iBAAA1E,KAAA,UAAAiM,aAAAA,CAAcxD,CAAAA,CAAAA,KAAAA,KAAAA,CAAAA,uBAAAA,CAAAA,uBAAAA,CAAAA,uBAAAA,CACpB,OAAAyD,KAAA,EAAAC,uBAAA,EAAAC,uBAAA,CAAOnN,IAAAA,CAAK8L,qFAAL9L,uBAAAA,CAAuBoN,SAAY5D,UAAAA,uBAAAA,iBAAnCxJ,uBAAAA,CAAAA,IAAAA,CAAAA,uBAAAA,CAAmCwJ,CAAAA,CAAAA,UAAAA,uBAAAA,UAAAA,uBAAAA,CAASA,CAAM6D,SAAN7D,CAAM6D,iBAAN7D,CAAM6D,CAAAA,MAAAA,UAAAA,KAAAA,UAAAA,KAAAA,CAAU,EACpE,EAIO,GAAA5H,GAAA,iBAAA1E,KAAA,UAAAyF,aAAAA,CAAAA,CACN,KAAA8G,uBAAA,CAAA,GAAMC,CAAAA,CAAWvN,CAAAA,IAAAA,CAAK8B,YAAayE,CAAAA,MAAAA,CAAS,EAAIvG,IAAK8B,CAAAA,YAAAA,CAAe9B,IAAKuC,CAAAA,IAAAA,CACnEwG,CAAQ/I,CAAAA,IAAAA,CAAKwI,eACfgF,CAAcC,CAAAA,CAAAA,CAAYF,CAAWG,CAAAA,CAAAA,CAAAA,GAAAA,CAAIC,SAAAA,CAAKA,QAAAA,CAAAA,CAAAA,CAAEnE,QAChD+D,CAQJ,CAAA,GAPAvN,IAAK2B,CAAAA,eAAAA,CAAkBiM,CAAyBC,CAAAA,uBAAAA,CAC9C7N,KAAKe,KACLgI,CAAAA,CAAAA,CACA/I,IAAK6L,CAAAA,cAAAA,CAAeiC,IAAK9N,CAAAA,IAAAA,CAAAA,EAAAA,uBAAAA,CACzBA,KAAK8L,gBAAkBE,UAAAA,uBAAAA,iBAAvBhM,uBAAAA,CAAuBgM,QAAAA,CAAAA,CAGpBhM,IAAK2C,CAAAA,QAAAA,CASR3C,IAAK0B,CAAAA,YAAAA,CAAe,OATF,KAAAqM,qBAAA,CAAAC,sBAAA,CAClB,GAAMpL,CAAAA,GAAQ5C,EAAAA,qBAAAA,EAAAA,sBAAAA,CAAAA,IAAAA,CAAK2B,eAAgB,CAAA,CAAA,CAAA,UAAAqM,sBAAA,iBAArBhO,sBAAAA,CAAyBiO,6EAAkB,EACzDjO,CAAAA,IAAAA,CAAK0B,YAAekB,CAAAA,GAAAA,CAChBA,GACF5C,CAAAA,IAAAA,CAAKiC,YAAcW,GACT5C,CAAAA,IAAAA,CAAKyB,QACfzB,GAAAA,IAAAA,CAAKiC,WAAc,CAAA,EAAA,CAEtB,EAIDjC,IAAKkO,CAAAA,cAAAA,CAAAA,CAAAA,CACLlO,IAAKmO,CAAAA,oBAAAA,CAAAA,CACN,EASO,GAAA1I,GAAA,qBAAA1E,KAAA,UAAAqN,iBAAAA,CAAAA,EACN,MAAOpO,KAAAA,CAAK4B,YAAayM,CAAAA,MAAAA,CAAQ7E,SAAAA,CAAeA,QAAAA,EAAAA,CAAAA,SAAAA,CAAAA,WAAAA,CAAAA,CAAM1G,YACvD,EAWO,GAAA2C,GAAA,wBAAA1E,KAAA,UAAAoN,oBAAAA,CAAAA,CACN,KAAAG,MAAA,MAAA,GAAA,CAAKtO,IAAK2C,CAAAA,QAAAA,CAGR,MAFA3C,KAAKmC,CAAAA,gBAAAA,CAAAA,CAAmB,CACxBnC,CAAAA,KAAAA,IAAAA,CAAKoC,sBAAyB,CAAA,CAAA,CAAA,CAAA,CAGhC,GAAMyH,CAAAA,CAAAA,CAAU7J,IAAKoO,CAAAA,iBAAAA,CAAAA,CAAAA,CACrB,GAAuB,CAAA,GAAnBvE,CAAQtD,CAAAA,MAAAA,CAGV,MAFAvG,KAAKmC,CAAAA,gBAAAA,CAAAA,CAAmB,CACxBnC,CAAAA,KAAAA,IAAAA,CAAKoC,sBAAyB,CAAA,CAAA,CAAA,CAAA,CAGhC,GAAMmM,CAAAA,CAAiB5E,CAAAA,KAAAA,CAAMC,OAAQ5J,CAAAA,IAAAA,CAAKe,KAASf,CAAAA,CAAAA,IAAAA,CAAKe,MAAQ,EAC1DiI,CAAAA,CAAAA,CAAc,GAAIwF,CAAAA,GAAAA,CAAID,CAAeb,CAAAA,GAAAA,CAAI1D,SACzCyE,CAAiB5E,CAAAA,CAAAA,CAAQ6E,MAAO,CAAA,SAACpF,CAAGE,CAAAA,CAAAA,QACjCF,CAAAA,GAAKN,CAAYd,CAAAA,GAAAA,CAAI8B,MAAOhK,CAAAA,MAAAA,CAAKiK,YAAaT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAU,EAAI,CAClE,CAAA,GAAA,CAAA,CAAA,CAEoB,CAAnBiF,GAAAA,CAAAA,EACFzO,IAAKmC,CAAAA,gBAAAA,CAAAA,CAAmB,EACxBnC,IAAKoC,CAAAA,sBAAAA,CAAAA,CAAyB,CACrBqM,EAAAA,CAAAA,GAAmB5E,CAAQtD,CAAAA,MAAAA,EACpCvG,KAAKmC,gBAAmB,CAAA,CAAA,CAAA,CACxBnC,IAAKoC,CAAAA,sBAAAA,CAAAA,CAAyB,CAE9BpC,GAAAA,IAAAA,CAAKmC,kBAAmB,CACxBnC,CAAAA,IAAAA,CAAKoC,sBAAyB,CAAA,CAAA,CAAA,CAEjC,EAOO,GAAAqD,GAAA,yBAAA1E,KAAA,UAAA4N,qBAAAA,CAAsB7G,CAG5B,CAAA,KAAA8G,MAAA,MAAA,GAFA9G,CAAM+G,CAAAA,eAAAA,CAAAA,CAAAA,CACN/G,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CAAAA,CACD9O,KAAK2C,QAAa3C,EAAAA,CAAAA,IAAAA,CAAK2D,gBAAkB,CAAA,OAE9C,GAAMkG,CAAAA,CAAAA,CAAU7J,KAAKoO,iBACrB,CAAA,CAAA,CAAA,GAAuB,CAAnBvE,GAAAA,CAAAA,CAAQtD,MAAc,CAAA,OAE1B,GAAMwI,CAAAA,CAAoB/O,CAAAA,IAAAA,CAAKmC,gBAAoBnC,EAAAA,IAAAA,CAAKoC,sBAClD4M,CAAAA,CAAAA,CAAUrF,MAAMC,OAAQ5J,CAAAA,IAAAA,CAAKe,KAAS,CAAA,CAAAkO,kBAAA,CAAIjP,IAAKe,CAAAA,KAAAA,EAAS,GACxDmO,CAAerF,CAAAA,CAAAA,CAAQ6D,GAAIlE,CAAAA,SAAAA,CAAAA,QAAQQ,CAAAA,MAAOhK,CAAAA,MAAAA,CAAKiK,YAAaT,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAC5D2F,CAAY,CAAA,GAAIX,CAAAA,GAAIU,CAAAA,CAAAA,CAAAA,CAE1B,GAAIE,CAAAA,CAAAA,CACJ,GAAIL,CAEFK,CAAAA,CAAAA,CAAOJ,CAAQX,CAAAA,MAAAA,CAAOgB,SAAAA,CAAMF,QAAAA,CAAAA,CAAAA,CAAUjH,IAAI8B,MAAOqF,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,IAC5C,CAEL,GAAMC,CAAAA,GAAS,CAAA,GAAId,CAAAA,IAAIQ,CAAQtB,CAAAA,GAAAA,CAAI1D,MACnCkF,CAAAA,CAAAA,CAAAA,CAAAA,CAAaK,OAAQF,CAAAA,SAAAA,CAAAA,QAAKC,CAAAA,IAAOE,GAAIH,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CACrCD,CAAOzF,CAAAA,KAAAA,CAAM8F,IAAKH,CAAAA,GAAAA,CACnB,EAEDtP,IAAKe,CAAAA,KAAAA,CAAQqO,CACbpP,CAAAA,IAAAA,CAAKiC,WAAc,CAAA,EAAA,CACnBjC,KAAKwG,aACLxG,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0P,aAAc,CAAA,EAAA,CAAA,CAAI,CAEvB1P,CAAAA,CAAAA,IAAAA,CAAKqG,eAAeC,IAAK,CAAA,UAAA,CACvBtG,MAAKoG,CAAAA,IAAAA,CAAK,YAAc,CAAA,CAAErF,KAAOf,CAAAA,MAAAA,CAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,MAAKsC,CAAAA,IAAAA,CAAAA,CAAAA,CACxDtC,MAAKoG,CAAAA,IAAAA,CAAK,cAAe,CAAErF,KAAAA,CAAOf,MAAKe,CAAAA,KAAAA,CAAOuB,IAAMtC,CAAAA,MAAAA,CAAKsC,OACzDtC,MAAKoG,CAAAA,IAAAA,CAAK,iBAAmB,CAAA,CAC3BrF,KAAOf,CAAAA,MAAAA,CAAKe,MACZuB,IAAMtC,CAAAA,MAAAA,CAAKsC,IACXqN,CAAAA,MAAAA,CAAQZ,CAAoB,CAAA,cAAA,CAAiB,cAC7C,EAEL,CAAA,EAWO,GAAAtJ,GAAA,sBAAA1E,KAAA,UAAAoF,kBAAAA,CAAAA,CAAAA,KAAAA,MAAAA,MACNnG,IAAK4P,CAAAA,qBAAAA,CAAyB9H,SAAAA,GAC5B,GAAK9H,CAAAA,MAAAA,CAAK+C,IAAM,CAAA,OAChB,GAAM8M,CAAAA,CAAAA,CAAO/H,EAAMgI,YACbC,CAAAA,CAAAA,CAAAA,CAAAA,CAAUF,CAAKG,CAAAA,QAAAA,CAAShQ,MACxBiQ,CAAAA,CAAAA,CAAAA,CAAWjQ,OAAKkQ,KAASL,EAAAA,CAAAA,CAAKG,QAAShQ,CAAAA,MAAAA,CAAKkQ,KAC5CC,CAAAA,CAAAA,CAAAA,CAAYnQ,MAAK6D,CAAAA,MAAAA,EAAU7D,MAAKM,CAAAA,aAAAA,CAAc8P,sBAA0BP,EAAAA,CAAAA,CAAKG,QAAShQ,CAAAA,MAAAA,CAAKM,cAAc8P,sBAC1GL,CAAAA,CAAAA,CAAAA,EAAYE,CAAaE,EAAAA,CAAAA,EAAWnQ,MAAK0H,CAAAA,IAAAA,CAAAA,CAAM,GAGtD1H,IAAKqQ,CAAAA,qBAAAA,CAAyBvI,SAAAA,CACvB9H,CAAAA,CAAAA,CAAAA,MAAAA,CAAK+C,IAAsB,EAAA,WAAA,GAAd+E,EAAMrC,GAAqC,EAAA,SAAA,GAAdqC,CAAMrC,CAAAA,GAAAA,EAAmC,OAAdqC,GAAAA,CAAAA,CAAMrC,MAChFzF,MAAKsQ,CAAAA,eAAAA,CAAgBxI,CAAM,CAAA,EAAA,CAG7B9H,IAAKuQ,CAAAA,uBAAAA,CAA2BzI,SAAAA,GAC9B,GAAK9H,CAAAA,MAAAA,CAAK+C,IAAM,CAAA,OAChB,GAAM8M,CAAAA,CAAAA,CAAO/H,EAAMgI,YACbC,CAAAA,CAAAA,CAAAA,CAAAA,CAAUF,CAAKG,CAAAA,QAAAA,CAAShQ,MACxBiQ,CAAAA,CAAAA,CAAAA,CAAWjQ,OAAKkQ,KAASL,EAAAA,CAAAA,CAAKG,QAAShQ,CAAAA,MAAAA,CAAKkQ,KAC5CC,CAAAA,CAAAA,CAAAA,CAAYnQ,OAAK6D,MAAU7D,EAAAA,MAAAA,CAAKM,aAAc8P,CAAAA,sBAAAA,EAA0BP,CAAKG,CAAAA,QAAAA,CAAShQ,OAAKM,aAAc8P,CAAAA,sBAAAA,CAAAA,CAC1GL,CAAYE,EAAAA,CAAAA,EAAaE,CAAWnQ,EAAAA,MAAAA,CAAK0H,MAAM,EAGtD1H,CAAAA,IAAAA,CAAKwQ,iBAAqB1I,CAAAA,SAAAA,CAAAA,CAAAA,KAAAA,QAAAA,CAAAA,CACZA,EAAAA,QAAAA,CAAAA,CAAM1D,CAAAA,KAAAA,UAAAA,QAAAA,iBAAN0D,QAAAA,CAAa2I,UAAW3I,CAAM2I,CAAAA,OAAAA,EAAW,EAC7CT,EAAAA,QAAAA,CAAS,yDACflI,CAAAA,EAAAA,CAAAA,CAAMgH,gBACP,EAGH9O,CAAAA,IAAAA,CAAK0Q,kBAAqB,CAAA,iBAAM1Q,CAAAA,MAAKM,CAAAA,aAAAA,CAAcqQ,mBACnD3Q,IAAK4Q,CAAAA,kBAAAA,CAAqB,iBAAM5Q,CAAAA,MAAAA,CAAKM,aAAcqQ,CAAAA,cAAAA,CAAAA,CACpD,IAEO,GAAAlL,GAAA,oBAAA1E,KAAA,UAAA8P,gBAAAA,CAAAA,CAAAA,CACNC,QAASC,CAAAA,gBAAAA,CAAiB,SAAW/Q,CAAAA,IAAAA,CAAK4P,uBAC1CkB,QAASC,CAAAA,gBAAAA,CAAiB,SAAW/Q,CAAAA,IAAAA,CAAKqQ,qBAC1CS,CAAAA,CAAAA,QAAAA,CAASC,gBAAiB,CAAA,WAAA,CAAa/Q,IAAKuQ,CAAAA,uBAAAA,CAAAA,CAC5CS,MAAOD,CAAAA,gBAAAA,CAAiB,OAAS/Q,CAAAA,IAAAA,CAAKwQ,mBAClCxQ,IAAK6D,CAAAA,MAAAA,GACPmN,MAAOD,CAAAA,gBAAAA,CAAiB,QAAU/Q,CAAAA,IAAAA,CAAK0Q,oBACvCM,MAAOD,CAAAA,gBAAAA,CAAiB,QAAU/Q,CAAAA,IAAAA,CAAK4Q,kBAAoB,CAAA,CAAA,CAAA,CAAA,CAE9D,EAEO,GAAAnL,GAAA,uBAAA1E,KAAA,UAAA2F,mBAAAA,CAAAA,CAAAA,CACNoK,QAASG,CAAAA,mBAAAA,CAAoB,SAAWjR,CAAAA,IAAAA,CAAK4P,uBAC7CkB,QAASG,CAAAA,mBAAAA,CAAoB,SAAWjR,CAAAA,IAAAA,CAAKqQ,qBAC7CS,CAAAA,CAAAA,QAAAA,CAASG,oBAAoB,WAAajR,CAAAA,IAAAA,CAAKuQ,uBAC/CS,CAAAA,CAAAA,MAAAA,CAAOC,mBAAoB,CAAA,OAAA,CAASjR,KAAKwQ,iBACzCQ,CAAAA,CAAAA,MAAAA,CAAOC,mBAAoB,CAAA,QAAA,CAAUjR,IAAK0Q,CAAAA,kBAAAA,CAAAA,CAC1CM,OAAOC,mBAAoB,CAAA,QAAA,CAAUjR,IAAK4Q,CAAAA,kBAAAA,CAAAA,CAAoB,CAC/D,CAAA,EAIO,GAAAnL,GAAA,kBAAA1E,KAAA,UAAAmQ,cAAAA,CAAepJ,CAAAA,CAAAA,CACrB,OAAQA,CAAAA,CAAMrC,GACZ,EAAA,IAAK,YACHqC,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CACD9O,IAAK+C,CAAAA,IAAAA,CAGR/C,IAAKmR,CAAAA,gBAAAA,CAAiBnR,KAAKiF,WAAc,CAAA,CAAA,CAAIjF,IAAKiF,CAAAA,WAAAA,CAAc,CAFhEjF,CAAAA,CAAAA,IAAAA,CAAKoR,OAIP,MACF,IAAK,SACHtJ,CAAAA,CAAAA,CAAMgH,cACD9O,CAAAA,CAAAA,CAAAA,IAAAA,CAAK+C,KAGR/C,IAAKmR,CAAAA,gBAAAA,CAAiBnR,IAAKiF,CAAAA,WAAAA,CAAc,CAAKjF,CAAAA,CAAAA,IAAAA,CAAKiF,aAAe,CAFlEjF,CAAAA,CAAAA,IAAAA,CAAKoR,IAIP,CAAA,CAAA,CAAA,MACF,IAAK,YAAA,CACCpR,KAAKiF,WAAc,CAAA,CAAA,EAAKjF,IAAK+C,CAAAA,IAAAA,GAC/B+E,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CACN9O,KAAKmR,gBAAiB,CAAA,CAAA,CAAA,CAAA,CAExB,MACF,IAAK,WACCnR,CAAAA,IAAAA,CAAKiF,WAAc,CAAA,CAAA,EAAKjF,IAAK+C,CAAAA,IAAAA,GAC/B+E,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CACN9O,IAAKmR,CAAAA,gBAAAA,CAAAA,CAAkB,IAEzB,MACF,IAAK,OACHrJ,CAAAA,CAAAA,CAAMgH,cACF9O,CAAAA,CAAAA,CAAAA,IAAAA,CAAK+C,KACP/C,IAAKqR,CAAAA,kBAAAA,CAAAA,CAAAA,CACIrR,IAAKiC,CAAAA,WAAAA,CAAYqP,IAAWtR,CAAAA,CAAAA,GAAAA,IAAAA,CAAKqD,iBAAmBrD,IAAKoD,CAAAA,gBAAAA,CAAAA,CAClEpD,IAAKuR,CAAAA,cAAAA,CAAevR,IAAKiC,CAAAA,WAAAA,CAAYqP,QAErCtR,IAAKoR,CAAAA,IAAAA,CAAAA,CAAAA,CAEP,MACF,IAAK,QACCpR,CAAAA,IAAAA,CAAK+C,OACP+E,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CACNhH,CAAM+G,CAAAA,eAAAA,CAAAA,CAAAA,CACN7O,IAAK0H,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAEP,MACF,IAAK,MAAA,CACC1H,IAAK+C,CAAAA,IAAAA,GACP+E,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CACN9O,KAAKwR,eAAgB,CAAA,CAAA,CAAA,CAAA,CAEvB,MACF,IAAK,KACCxR,CAAAA,IAAAA,CAAK+C,OACP+E,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CACN9O,IAAKwR,CAAAA,eAAAA,CAAgBxR,IAAK4B,CAAAA,YAAAA,CAAa2E,OAAS,CAElD,CAAA,CAAA,CAAA,MACF,IAAK,WAAA,CACH,GAAIvG,IAAAA,CAAK2C,UAAiC,EAArB3C,GAAAA,IAAAA,CAAKiC,WAAsBjC,EAAAA,IAAAA,CAAK2B,eAAgB4E,CAAAA,MAAAA,CAAS,EAAG,CAC/E,GAAMkL,CAAAA,GAAOzR,CAAAA,IAAAA,CAAK2B,eAAgB3B,CAAAA,IAAAA,CAAK2B,gBAAgB4E,MAAS,CAAA,CAAA,CAAA,CAChEvG,IAAK0R,CAAAA,SAAAA,CAAUD,GAChB,CAAA,EACD,MACF,IAAK,KAAA,CACCzR,IAAK2C,CAAAA,QAAAA,EAAY3C,IAAKqD,CAAAA,eAAAA,EAAmBrD,KAAKiC,WAAYqP,CAAAA,IAAAA,CAAAA,CAAAA,EAC5DtR,IAAKuR,CAAAA,cAAAA,CAAevR,IAAKiC,CAAAA,WAAAA,CAAYqP,QAEnCtR,IAAK+C,CAAAA,IAAAA,EAAM/C,IAAK0H,CAAAA,IAAAA,CAAAA,CAAAA,EAGzB,CAEO,GAAAjC,GAAA,mBAAA1E,KAAA,UAAAuP,eAAAA,CAAgBxI,CAAAA,CAAAA,KAAAA,kBAAAA,CACJ,QAAdA,GAAAA,CAAAA,CAAMrC,GAAoBzF,EAAAA,IAAAA,CAAK+C,IACjC+E,GAAAA,CAAAA,CAAMgH,iBACNhH,CAAM+G,CAAAA,eAAAA,CAAAA,CAAAA,CACN7O,IAAK0H,CAAAA,IAAAA,CAAAA,CAAAA,EAAAA,kBAAAA,CACL1H,IAAK2R,CAAAA,YAAAA,UAAAA,kBAAAA,iBAAL3R,kBAAAA,CAAmB4R,MAAM,CAAEC,aAAAA,CAAAA,CAAe,CAE7C,CAAA,CAAA,CAAA,EAEO,GAAApM,GAAA,qBAAA1E,KAAA,UAAA+Q,iBAAAA,CAAAA,CAAAA,CACN,GAAMC,CAAAA,CAAO/R,CAAAA,IAAAA,CAAK6D,MAAS7D,CAAAA,IAAAA,CAAKM,aAAc8P,CAAAA,sBAAAA,CAAyBpQ,KAAKgS,UAC5E,CAAA,MAAKD,CAAAA,CACEA,CAAAA,CAAAA,CAAKE,gBAAiB,CAAA,6BAAA,CAAA,CADX,EAEnB,EAEO,GAAAxM,GAAA,oBAAA1E,KAAA,UAAAoQ,gBAAAA,CAAiBe,CAAAA,CAAAA,CACvB,GAAMrI,CAAAA,CAAAA,CAAU7J,KAAK8R,iBACrB,CAAA,CAAA,CAAA,GAAA,CAAKjI,CAAQtD,CAAAA,MAAAA,CAAQ,OACrB,GAAI6I,CAAAA,EAAOpP,IAAKwB,CAAAA,mBAAAA,CAAsB0Q,CAClC9C,CAAAA,CAAAA,CAAO,CAAGA,GAAAA,CAAAA,CAAOvF,CAAQtD,CAAAA,MAAAA,CAAS,CAClC6I,CAAAA,CAAAA,CAAAA,EAAQvF,CAAQtD,CAAAA,MAAAA,GAAQ6I,CAAO,CAAA,CAAA,CAAA,CACnCpP,KAAKwR,eAAgBpC,CAAAA,CAAAA,CACtB,EAEO,GAAA3J,GAAA,mBAAA1E,KAAA,UAAAyQ,eAAAA,CAAgB7F,CAAAA,CAAAA,CACtB,GAAM9B,CAAAA,CAAU7J,CAAAA,IAAAA,CAAK8R,iBAChBjI,CAAAA,CAAAA,CAAAA,CAAAA,CAAQtD,MAEbsD,GAAAA,CAAAA,CAAQ0F,QAAQ,SAAC4C,CAAAA,CAAKxJ,CACpB,CAAA,KAAAyJ,iBAAA,CAAA,GAAMC,CAAAA,CAAKF,CAAAA,CAAAA,CACPxJ,IAAMgD,CACR0G,EAAAA,CAAAA,CAAGC,YAAa,CAAA,cAAA,CAAgB,MAChCD,CAAAA,CAAAA,CAAAA,CAAGE,UAAU/C,GAAI,CAAA,0BAAA,CAAA,EAAA4C,iBAAA,CACjBC,CAAGG,CAAAA,cAAAA,UAAAA,iBAAAA,iBAAHH,iBAAAA,CAAAA,IAAAA,CAAAA,CAAGG,CAAiB,CAAEC,KAAAA,CAAO,cAE7BJ,CAAGK,CAAAA,eAAAA,CAAgB,cACnBL,CAAAA,CAAAA,CAAAA,CAAGE,SAAUI,CAAAA,MAAAA,CAAO,4BACrB,EAGH3S,CAAAA,CAAAA,IAAAA,CAAKwB,mBAAsBmK,CAAAA,CAAAA,CAC5B,EAEO,GAAAlG,GAAA,sBAAA1E,KAAA,UAAAsQ,kBAAAA,CAAAA,CACN,CAAA,GAAMxH,CAAAA,CAAU7J,CAAAA,IAAAA,CAAK8R,iBACrB,CAAA,CAAA,CAAA,GAAI9R,IAAKwB,CAAAA,mBAAAA,EAAuB,GAAKxB,IAAKwB,CAAAA,mBAAAA,CAAsBqI,CAAQtD,CAAAA,MAAAA,CAAQ,CAC9E,GAAM4L,CAAAA,IAAMtI,CAAQ7J,CAAAA,IAAAA,CAAKwB,mBACrB2Q,CAAAA,CAAAA,GAAAA,EAAAA,CAAQA,GAAIrP,CAAAA,QAAAA,EACd9C,KAAK4S,qBAAsBT,CAAAA,GAAAA,CAAIpR,KAElC,CAAA,EAAA,IAAUf,KAAKiC,CAAAA,WAAAA,CAAYqP,SAAWtR,IAAKoD,CAAAA,gBAAAA,EAAoBpD,IAAKqD,CAAAA,eAAAA,CAAAA,EACnErD,IAAKuR,CAAAA,cAAAA,CAAevR,KAAKiC,WAAYqP,CAAAA,IAAAA,CAAAA,CAAAA,CAExC,EAIO,GAAA7L,GAAA,iBAAA1E,KAAA,UAAA8R,aAAAA,CAAc/K,CAAAA,CAAAA,CACpBA,EAAM+G,eACP,CAAA,CAAA,EAEO,GAAApJ,GAAA,kBAAA1E,KAAA,UAAA+R,cAAAA,CAAehL,CACrB,CAAA,KAAAiL,MAAA,MAAA,GAAMzL,CAAAA,EAASQ,CAAMR,CAAAA,MAAAA,CACrBtH,IAAKiC,CAAAA,WAAAA,CAAcqF,CAAOvG,CAAAA,KAAAA,CAErBf,KAAK+C,IAAM/C,EAAAA,IAAAA,CAAKoR,IAErBpR,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoG,IAAK,CAAA,YAAA,CAAc,CAAErF,KAAOf,CAAAA,IAAAA,CAAKiC,WAAaK,CAAAA,IAAAA,CAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAAAA,CAE1DtC,KAAKmD,kBACPnD,CAAAA,IAAAA,CAAKQ,aAAcwS,CAAAA,cAAAA,CAChBC,SAAAA,CAAcjT,QAAAA,CAAAA,MAAAA,CAAKoG,KAAK,aAAe,CAAA,CAAE8M,KAAOD,CAAAA,CAAAA,CAAG3Q,IAAMtC,CAAAA,MAAAA,CAAKsC,SAC/DtC,IAAKiC,CAAAA,WAAAA,CACLjC,IAAK4E,CAAAA,UAAAA,CAAAA,CAGP5E,IAAK0P,CAAAA,aAAAA,CAAc1P,KAAKiC,WAG1BjC,CAAAA,CAAAA,IAAAA,CAAKwB,mBAAuB,CAAA,CAAA,CAC7B,EAEO,GAAAiE,GAAA,iBAAA1E,KAAA,UAAA2O,aAAAA,CAAcyD,CAAgBC,CACpC,KAAAC,MAAA,SADoCD,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,MAAAA,IAAAA,SAAAA,MAAAA,SAAAA,CAAAA,SAAAA,IAAAA,CAAiB,CACrD,CAAA,GAAM7F,CAAAA,CAAWvN,CAAAA,IAAAA,CAAK8B,aAAayE,MAAS,CAAA,CAAA,CAAIvG,IAAK8B,CAAAA,YAAAA,CAAe9B,IAAKuC,CAAAA,IAAAA,CAEzE,GAAIvC,IAAAA,CAAKwI,cAAgB,CAAA,KAAA8K,sBAAA,CAAAC,sBAAA,CAEvB,GAAIC,CAAAA,GAAAA,CAAOjG,CACX,CAAA,GAAIvN,KAAKkC,gBAAkB,CAAA,CACzB,GAAMqM,CAAAA,GAAAA,CAAiB5E,KAAMC,CAAAA,OAAAA,CAAQ5J,KAAKe,KAASf,CAAAA,CAAAA,IAAAA,CAAKe,KAAQ,CAAA,CAACf,IAAKe,CAAAA,KAAAA,CAAAA,CAChEiI,IAAc,GAAIwF,CAAAA,GAAAA,CAAID,GAAeb,CAAAA,GAAAA,CAAI2B,SAAAA,CAAKrF,QAAAA,CAAAA,MAAAA,CAAOqF,OAC3DmE,GAAOxT,CAAAA,IAAAA,CAAK8I,oBAAqByE,CAAAA,CAAAA,CAAUvE,GAC5C,CAAA,EACD,IAAAyK,EAAA,CAAiBC,CAAWF,CAAAA,GAAAA,CAAML,CAAQnT,CAAAA,IAAAA,CAAKiM,cAAc6B,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,CAA1D2T,GAAAA,CAAAA,EAAAA,CAAFA,IAAEA,CACR3T,IAAK6B,CAAAA,YAAAA,CAAe8R,GACpB3T,CAAAA,IAAAA,CAAK4B,aAAe4L,CAAcmG,CAAAA,GAAAA,CAAAA,CAAMjG,GAAIC,CAAAA,SAAAA,CAAAA,QAAKA,CAAAA,CAAEnE,CAAAA,IAAAA,EAAAA,CAAAA,CACnDxJ,KAAK+B,aAA6C,CAAA,CAAA,GAA7B/B,IAAK4B,CAAAA,YAAAA,CAAa2E,MAEvC,CAAA,GAAMqN,CAAAA,oDAAK5T,IAAKU,CAAAA,gBAAAA,CAAiBK,KAAOwH,UAAAA,sBAAAA,iBAA7BvI,sBAAAA,CAA6BuI,SAAAA,UAAAA,sBAAAA,UAAAA,sBAAAA,CAAa,CACrDvI,CAAAA,IAAAA,CAAKsI,mBAAmBsL,GACzB,CAAA,EAAA,IAAM,CACL,GAAIC,CAAAA,GAAStG,CAAAA,CAAAA,CACb,GAAIvN,IAAKkC,CAAAA,gBAAAA,CAAkB,CACzB,GAAMqM,CAAAA,GAAiB5E,CAAAA,KAAAA,CAAMC,QAAQ5J,IAAKe,CAAAA,KAAAA,CAAAA,CAASf,IAAKe,CAAAA,KAAAA,CAAQ,CAACf,IAAAA,CAAKe,OAChEiI,GAAc,CAAA,GAAIwF,CAAAA,GAAID,CAAAA,GAAAA,CAAeb,GAAI2B,CAAAA,SAAAA,CAAAA,QAAKrF,CAAAA,OAAOqF,CAC3DwE,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAStG,CAASc,CAAAA,MAAAA,CAAQ7E,SAAAA,CAAcR,QAAAA,CAAAA,GAAAA,CAAYd,IAAI8B,MAAOhK,CAAAA,MAAAA,CAAKiK,YAAaT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAClF,EACD,IAAAsK,qBAAA,CAAyC9T,IAAKQ,CAAAA,aAAAA,CAAc6N,MAC1D8E,CAAAA,CAAAA,CACAU,IACA7T,IAAKiM,CAAAA,aAAAA,CAAc6B,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,CAHlB+T,GAAAA,CAAAA,qBAAAA,CAAFA,aAAEA,CAAehS,GAAAA,CAAAA,qBAAAA,CAAFA,aAAEA,CAKvB/B,IAAK4B,CAAAA,YAAAA,CAAemS,IACpB/T,IAAK6B,CAAAA,YAAAA,CAAe,EACpB7B,CAAAA,IAAAA,CAAK+B,aAAgBA,CAAAA,GACtB,EAED/B,IAAKM,CAAAA,aAAAA,CAAc0T,mBACdZ,CAAAA,CAAAA,CAAAA,CAAAA,EACHpT,IAAKiU,CAAAA,mBAAAA,CAAAA,CAAAA,CAEPjU,KAAKmO,oBACLnO,CAAAA,CAAAA,CAAAA,IAAAA,CAAKkU,aACN,CAAA,CAAA,EAIO,GAAAzO,GAAA,aAAA1E,KAAA,UAAAoT,SAAAA,CAAAA,CAAAA,KAAAA,OAAAA,MACNnU,KAAKyB,QAAW,CAAA,CAAA,CAAA,CAChBzB,IAAKoG,CAAAA,IAAAA,CAAK,YACLpG,CAAAA,CAAAA,CAAAA,IAAAA,CAAK2C,UAAY3C,IAAK0B,CAAAA,YAAAA,GACzB1B,IAAKiC,CAAAA,WAAAA,CAAcjC,IAAK0B,CAAAA,YAAAA,CACxB1B,KAAKkU,aACLlU,CAAAA,CAAAA,CAAAA,IAAAA,CAAKqG,cAAeC,CAAAA,IAAAA,CAAK,UACvBtG,KAAAA,oBAAAA,CAAAA,CAAAA,oBAAAA,CAAAA,OAAAA,CAAK2R,qDAAL3R,oBAAAA,CAAmBoU,MAAQ,CAAA,CAAA,EAAA,CAAA,CAGhC,EAEO,GAAA3O,GAAA,cAAA1E,KAAA,UAAAsT,UAAAA,CAAAA,CAIN,KAAAC,OAAA,MAAA,GAHAtU,KAAKyB,QAAW,CAAA,CAAA,CAAA,CAChBzB,IAAKoG,CAAAA,IAAAA,CAAK,WAENpG,CAAAA,CAAAA,CAAAA,IAAAA,CAAK+C,OAEJ/C,IAAK2C,CAAAA,QAAAA,CACR,GAAI3C,IAAAA,CAAKuD,MAAQ,CAAA,CACf,GAAMgK,CAAAA,GAAWvN,CAAAA,IAAAA,CAAK8B,YAAayE,CAAAA,MAAAA,CAAS,CAAIvG,CAAAA,IAAAA,CAAK8B,aAAe9B,IAAKuC,CAAAA,IAAAA,CAInEgS,GAHWvU,CAAAA,CAAAA,IAAAA,CAAKwI,cAClBgF,CAAAA,CAAAA,CAAcC,EAAYF,GAAWG,CAAAA,CAAAA,CAAAA,GAAAA,CAAIC,SAAAA,CAAKA,QAAAA,CAAAA,CAAAA,CAAEnE,IAChD+D,EAAAA,CAAAA,CAAAA,GAAAA,EACmBiH,KACpBhL,SAAAA,CAAcxJ,QAAAA,CAAAA,OAAAA,CAAK6L,cAAerC,CAAAA,CAAAA,CAAAA,CAAMiL,WAAkBzU,CAAAA,CAAAA,GAAAA,OAAAA,CAAKiC,YAAYwS,WAE9E,CAAA,CAAA,EAAA,CAAA,CAAA,GAAIF,GAAO,CAAA,CACT,GAAMG,CAAAA,IAAAA,CAAM1U,IAAKiK,CAAAA,YAAAA,CAAasK,GAC1BvU,CAAAA,CAAAA,IAAAA,CAAKe,KAAU2T,GAAAA,IAAAA,GACjB1U,IAAKe,CAAAA,KAAAA,CAAQ2T,KACb1U,IAAKwG,CAAAA,aAAAA,CAAAA,CAAAA,CACLxG,IAAKoG,CAAAA,IAAAA,CAAK,aAAe,CAAA,CAAErF,MAAOf,IAAKe,CAAAA,KAAAA,CAAOuB,IAAMtC,CAAAA,IAAAA,CAAKsC,IAE5D,CAAA,CAAA,CAAA,EAAA,IACCtC,MAAKiC,WAAcjC,CAAAA,IAAAA,CAAK0B,YAE3B,EAAA,IACC1B,KAAKiC,CAAAA,WAAAA,CAAcjC,KAAK0B,YAG7B,EAIO,GAAA+D,GAAA,sBAAA1E,KAAA,UAAA4T,kBAAAA,CAAmB7M,CACzB,CAAA,KAAA8M,mBAAA,CAAA,GAAI5U,KAAK8C,QAAU,CAAA,OACNgF,CAAMgI,CAAAA,YAAAA,CAAAA,CAAAA,CACV+E,IAAKxC,CAAAA,SAAAA,CAAAA,QAAMA,CAAAA,YAAcyC,CAAAA,OAAwC,EAAA,kBAAA,GAA7BzC,CAAG0C,CAAAA,OAAAA,CAAQN,WAExD3M,CAAAA,CAAAA,EAAAA,CAAAA,GAAAA,CAAAA,CAAMgH,sCACN9O,IAAK2R,CAAAA,YAAAA,UAAAA,mBAAAA,WAAL3R,mBAAAA,CAAmB4R,KAAM,CAAA,CAAEC,aAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CACtC7R,IAAK+C,CAAAA,IAAAA,CACP/C,IAAK0H,CAAAA,IAAAA,CAAAA,CAAAA,CAEL1H,IAAKoR,CAAAA,IAAAA,CAAAA,CAAAA,CAER,EAIO,GAAA3L,GAAA,iBAAA1E,KAAA,UAAAiU,aAAAA,CAAclN,CAEpB,CAAA,CAAA,GACMmN,CAAAA,CADOnN,CAAAA,CAAAA,CAAMgI,YACC0E,CAAAA,CAAAA,CAAAA,IAAAA,CAAMnC,SAAAA,SACQ,aAA/BA,GAAAA,CAAAA,CAAmB0C,OAGjBE,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAUA,CAAOnS,CAAAA,QAAAA,EACtB9C,KAAK4S,qBAAsBqC,CAAAA,CAAAA,CAAOlU,KACnC,CAAA,EAEO,GAAA0E,GAAA,yBAAA1E,KAAA,UAAA6R,qBAAAA,CAAsBsC,wCAC5B,GAAMC,CAAAA,CAAAA,CAAWnV,IAAKe,CAAAA,KAAAA,CAEtB,GAAIf,IAAAA,CAAK2C,SAAU,CACjB,GAAMqM,CAAAA,GAAUrF,CAAAA,KAAAA,CAAMC,OAAQ5J,CAAAA,IAAAA,CAAKe,OAASf,IAAKe,CAAAA,KAAAA,CAAQ,EACzDf,CAAAA,IAAAA,CAAKe,KAAQ6M,CAAAA,CAAAA,CAAyBwH,iBAAiBpG,GAASkG,CAAAA,CAAAA,CAAAA,CAChElV,IAAKiC,CAAAA,WAAAA,CAAc,EACnBjC,CAAAA,IAAAA,CAAKwG,aACLxG,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0P,aAAc,CAAA,EAAA,CAAA,CAAI,CACxB,CAAA,EAAA,IACC1P,KAAKe,CAAAA,KAAAA,CAAQmU,EACblV,IAAKwG,CAAAA,aAAAA,CAAAA,CAAAA,CACLxG,IAAKiC,CAAAA,WAAAA,CAAcjC,IAAK0B,CAAAA,YAAAA,CACxB1B,KAAK0H,IAGH2N,CAAAA,CAAAA,CAAAA,IAAAA,CAAKC,SAAUtV,CAAAA,IAAAA,CAAKe,KAAWsU,CAAAA,GAAAA,IAAAA,CAAKC,UAAUH,CAChDnV,CAAAA,EAAAA,IAAAA,CAAKqG,cAAeC,CAAAA,IAAAA,CAAK,UACvBtG,CAAAA,OAAAA,CAAKoG,KAAK,YAAc,CAAA,CAAErF,KAAOf,CAAAA,OAAAA,CAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,QAAKsC,IACxDtC,CAAAA,CAAAA,CAAAA,OAAAA,CAAKoG,IAAK,CAAA,aAAA,CAAe,CAAErF,KAAAA,CAAOf,QAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,OAAKsC,CAAAA,IAAAA,CAAAA,CAAO,EAIpEtC,CAAAA,EAAAA,mBAAAA,CAAAA,IAAAA,CAAK2R,0DAAL3R,mBAAAA,CAAmB4R,KAAM,CAAA,CAAEC,aAAe,CAAA,CAAA,CAAA,CAAA,CAC3C,EAEO,GAAApM,GAAA,kBAAA1E,KAAA,UAAAwQ,cAAAA,CAAemD,CACrB,CAAA,KAAAa,OAAA,MAAA,GAAIvV,IAAKsD,CAAAA,gBAAAA,CAAkB,CACzB,GAAMkS,CAAAA,IAAWxV,IAAK8B,CAAAA,YAAAA,CAAayE,MAAS,CAAA,CAAA,CAAIvG,IAAK8B,CAAAA,YAAAA,CAAe9B,KAAKuC,IAIzE,CAAA,GAAA,CAHsBiT,GAASX,CAAAA,IAAAA,CAAMrL,SAAAA,CACnCQ,QAAAA,CAAAA,MAAAA,CAAOhK,QAAKiK,YAAaT,CAAAA,CAAAA,CAAAA,CAAAA,GAAWkL,CAAO1U,EAAAA,OAAAA,CAAK6L,cAAerC,CAAAA,CAAAA,CAAAA,GAAUkL,KAEvD,KAAAe,uBAAA,CAClB,GAAMC,CAAAA,GAAU1V,CAAAA,CAAAA,uBAAAA,KAAAA,CAAK8L,gBAAkBE,UAAAA,uBAAAA,WAAvBhM,uBAAAA,CAAuBgM,QAAAA,CACnC,CAAEjL,KAAO2T,CAAAA,CAAAA,CAAK9R,KAAO8R,CAAAA,CAAAA,CAAAA,CACrBA,CACJ1U,CAAAA,IAAAA,CAAK8B,0CAAmB0T,GAAAA,GAAUE,GAClC1V,EAAAA,CAAAA,IAAAA,CAAKuC,IAAO,CAAA0M,kBAAA,CAAIjP,KAAK8B,YACrB9B,CAAAA,CAAAA,IAAAA,CAAK2E,mBAAsB,CAAAsK,kBAAA,CAAIjP,IAAK8B,CAAAA,YAAAA,CAAAA,CACpC9B,IAAK4B,CAAAA,YAAAA,CAAAA,kBAAAA,CAAmB5B,IAAAA,CAAK8B,YAC9B,CAAA,EACF,CAED,GAAI9B,KAAK2C,QAAU,CAAA,CACjB,GAAMqM,CAAAA,GAAAA,CAAUrF,KAAMC,CAAAA,OAAAA,CAAQ5J,KAAKe,KAASf,CAAAA,CAAAA,IAAAA,CAAKe,KAAQ,CAAA,EAAA,CACpDiO,GAAQgB,CAAAA,QAAAA,CAAS0E,KACpB1U,IAAKe,CAAAA,KAAAA,IAAAA,MAAAA,CAAAA,kBAAAA,CAAYiO,GAAAA,GAAS0F,CAE7B,EAAA,CAAA,EAAA,IACC1U,MAAKe,KAAQ2T,CAAAA,CAAAA,CACb1U,IAAK0H,CAAAA,IAAAA,CAAAA,CAAAA,CAGP1H,IAAKiC,CAAAA,WAAAA,CAAcjC,KAAK2C,QAAW,CAAA,EAAA,CAAK+R,CACxC1U,CAAAA,IAAAA,CAAKwG,aACLxG,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0P,cAAc1P,IAAKiC,CAAAA,WAAAA,CAAAA,CAExBjC,IAAKoG,CAAAA,IAAAA,CAAK,cAAgB,CAAA,CAAErF,MAAO2T,CAAKpS,CAAAA,IAAAA,CAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAAAA,CACnDtC,IAAKoG,CAAAA,IAAAA,CAAK,cAAe,CAAErF,KAAAA,CAAOf,IAAKe,CAAAA,KAAAA,CAAOuB,IAAMtC,CAAAA,IAAAA,CAAKsC,MAC1D,EAIO,GAAAmD,GAAA,gBAAA1E,KAAA,UAAA4U,YAAAA,CAAa7N,CAAAA,CAAAA,CACnBA,CAAM+G,CAAAA,eAAAA,CAAAA,CAAAA,CACN7O,KAAKe,KAAQf,CAAAA,IAAAA,CAAK2C,QAAW,CAAA,EAAA,CAAK,EAClC3C,CAAAA,IAAAA,CAAKiC,YAAc,EACnBjC,CAAAA,IAAAA,CAAKwG,aACLxG,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0P,aAAc,CAAA,EAAA,CAAA,CACnB1P,KAAKoG,IAAK,CAAA,YAAA,CAAc,CAAErF,KAAAA,CAAOf,IAAKe,CAAAA,KAAAA,CAAOuB,KAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAAAA,CACxDtC,IAAKoG,CAAAA,IAAAA,CAAK,aAAe,CAAA,CAAErF,MAAOf,IAAKe,CAAAA,KAAAA,CAAOuB,IAAMtC,CAAAA,IAAAA,CAAKsC,IAC1D,CAAA,CAAA,EAIO,GAAAmD,GAAA,aAAA1E,KAAA,UAAA2Q,SAAAA,CAAUuD,CAAAA,CAAAA,CAChB,GAAIjV,IAAAA,CAAK8C,QAAU,CAAA,OACnB,GAAMkM,CAAAA,CAAAA,CAAUrF,KAAMC,CAAAA,OAAAA,CAAQ5J,IAAKe,CAAAA,KAAAA,CAAAA,CAASf,IAAKe,CAAAA,KAAAA,CAAQ,GACzDf,IAAKe,CAAAA,KAAAA,CAAQ6M,CAAyBgI,CAAAA,WAAAA,CAAY5G,CAASiG,CAAAA,CAAAA,CAAOlU,OAClEf,IAAKwG,CAAAA,aAAAA,CAAAA,CAAAA,CACLxG,IAAKoG,CAAAA,IAAAA,CAAK,iBAAmB,CAAA,CAAErF,MAAOf,IAAKe,CAAAA,KAAAA,CAAOuB,IAAMtC,CAAAA,IAAAA,CAAKsC,IAAMuT,CAAAA,eAAAA,CAAiBZ,EAAOlU,KAC3Ff,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoG,IAAK,CAAA,aAAA,CAAe,CAAErF,KAAAA,CAAOf,KAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAC1D,EAIO,GAAAmD,GAAA,iBAAA1E,KAAA,UAAA+U,aAAAA,CAAchO,CACpBA,CAAAA,CAAAA,CAAAA,CAAM+G,eACN/G,CAAAA,CAAAA,CAAAA,CAAAA,CAAMgH,cACP,CAAA,CAAA,EAEO,GAAArJ,GAAA,sBAAA1E,KAAA,UAAAgV,kBAAAA,CAAmBjO,CAAAA,CAAAA,CACzBA,CAAM+G,CAAAA,eAAAA,CAAAA,CAAAA,CACN/G,CAAMgH,CAAAA,cAAAA,CAAAA,CAAAA,CAC8B,IAAhC9O,IAAK2B,CAAAA,eAAAA,CAAgB4E,MAEzBvG,GAAAA,IAAAA,CAAKkC,gBAAoBlC,CAAAA,CAAAA,IAAAA,CAAKkC,iBAC1BlC,IAAKkC,CAAAA,gBAAAA,GAAkBlC,IAAKiC,CAAAA,WAAAA,CAAc,EAC9CjC,CAAAA,CAAAA,IAAAA,CAAK0P,cAAc1P,IAAKiC,CAAAA,WAAAA,CAAAA,CACzB,EAEO,GAAAwD,GAAA,YAAA1E,KAAA,UAAAiV,QAAAA,CAAAA,CACNhW,CAAAA,IAAAA,CAAKkC,kBAAmB,CACxBlC,CAAAA,IAAAA,CAAKe,KAAQf,CAAAA,IAAAA,CAAK2C,QAAW,CAAA,EAAA,CAAK,GAClC3C,IAAK0P,CAAAA,aAAAA,CAAc,EACnB1P,CAAAA,CAAAA,IAAAA,CAAKwG,aACLxG,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoG,KAAK,aAAe,CAAA,CAAErF,KAAOf,CAAAA,IAAAA,CAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,KAAKsC,IACzDtC,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoG,IAAK,CAAA,YAAA,CAAc,CAAErF,KAAAA,CAAOf,KAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAAAA,CACxDtC,IAAKiU,CAAAA,mBAAAA,CAAAA,CACN,EAIO,GAAAxO,GAAA,YAAA1E,KAAA,UAAAkV,QAAAA,CAAS9L,CAAAA,CAAAA,KAAAA,OAAAA,MACf,GAAM7C,CAAAA,CAAAA,CAAS6C,CAAE7C,CAAAA,MAAAA,CAEjB,GADAtH,IAAKsI,CAAAA,kBAAAA,CAAmBhB,CAAOiB,CAAAA,SAAAA,CAAAA,CAC3BvI,IAAKkC,CAAAA,gBAAAA,CAAkB,OAE3BlC,IAAKoG,CAAAA,IAAAA,CAAK,aAAe,CAAA,CAAEmC,SAAWjB,CAAAA,CAAAA,CAAOiB,UAAW2N,UAAY5O,CAAAA,CAAAA,CAAO4O,UAAY5T,CAAAA,IAAAA,CAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAAAA,CAE7FtC,KAAKuB,SACRvB,GAAAA,IAAAA,CAAKuB,SAAY,CAAA,CAAA,CAAA,CACjBvB,IAAKoG,CAAAA,IAAAA,CAAK,oBAAqB,CAAEmC,SAAAA,CAAWjB,CAAOiB,CAAAA,SAAAA,CAAW2N,UAAY5O,CAAAA,CAAAA,CAAO4O,WAAY5T,IAAMtC,CAAAA,IAAAA,CAAKsC,IAG1GyE,CAAAA,CAAAA,CAAAA,CAAAA,YAAAA,CAAa/G,IAAK8G,CAAAA,aAAAA,CAAAA,CAClB9G,KAAK8G,aAAgBkK,CAAAA,MAAAA,CAAOmF,UAAW,CAAA,UAAA,CACrCnW,OAAKuB,CAAAA,SAAAA,CAAAA,CAAY,CAAK,EAAA,CACrB,GAEgBqJ,CAAAA,CAAAA,IAAAA,CAAKC,IAAKvD,CAAAA,CAAAA,CAAOiB,SAAcqC,CAAAA,EAAAA,IAAAA,CAAKwL,MAAM9O,CAAO+O,CAAAA,YAAAA,CAAe/O,CAAOgP,CAAAA,YAAAA,CAAAA,EAExFtW,IAAKoG,CAAAA,IAAAA,CAAK,kBAAmB,CAAEmC,SAAAA,CAAWjB,CAAOiB,CAAAA,SAAAA,CAAW2N,UAAY5O,CAAAA,CAAAA,CAAO4O,WAAY5T,IAAMtC,CAAAA,IAAAA,CAAKsC,IAAMiU,CAAAA,UAAAA,CAAAA,CAAY,CAE3H,CAAA,CAAA,EAID,GAAA9Q,GAAA,QAAA1E,KAAA,gBAAAyV,KAAA,CAAAC,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,UAAAC,QAAA,SAAAF,mBAAA,GAAAG,IAAA,UAAAC,SAAAC,SAAA,iBAAAA,SAAA,CAAAC,IAAA,CAAAD,SAAA,CAAA3H,IAAA,cACE,CAAIpP,IAAK+C,CAAAA,IAAAA,EAAAA,CAAQ/C,IAAK8C,CAAAA,QAAAA,GAAAA,SAAAA,CAAAA,IAAAA,iBAAAA,SAAAA,CAAAA,MAAAA,WACtB9C,IAAK+C,CAAAA,IAAAA,CAAAA,CAAO,CACLkU,CAAAA,CAAAA,CAAajX,IAAM,CAAA,iBAAA,CAC3B,2BAAA+W,SAAA,CAAAG,IAAA,MAAAN,OAAA,QAED,gBANMxF,CAAAA,SAAAA,KAAAA,CAAAA,KAAAA,MAAAA,SAAAA,cAAAA,OAAAA,GAAAA,QAAAA,KAAAA,gBAAAA,KAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CAMN,SAAA+F,SAAA,SAAAT,mBAAA,GAAAG,IAAA,UAAAO,UAAAC,SAAA,iBAAAA,SAAA,CAAAL,IAAA,CAAAK,SAAA,CAAAjI,IAAA,aACOpP,IAAAA,CAAK+C,IAEV,EAAAsU,SAAA,CAAAjI,IAAA,iBAAAiI,SAAA,CAAAC,MAAA,WADAtX,KAAK+C,IAAO,CAAA,CAAA,CAAA,CACLkU,CAAajX,CAAAA,IAAAA,CAAM,iBAC3B,CAAA,2BAAAqX,SAAA,CAAAH,IAAA,MAAAC,QAAA,QAGK,WAPAzP,CAAAA,IAAAA,CAAAA,SAAAA,KAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAAA,CAAAA,IAAAA,OAAAA,GAAAA,oBAAAA,KAAAA,gBAAAA,iBAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CAOA,SAAA6P,SAAA,MAAAC,sBAAA,CAAAC,sBAAA,QAAAf,mBAAA,GAAAG,IAAA,UAAAa,UAAAC,SAAA,iBAAAA,SAAA,CAAAX,IAAA,CAAAW,SAAA,CAAAvI,IAAA,cACApP,IAAK+C,CAAAA,IAAAA,EAAAA,CAAS/C,IAAK8C,CAAAA,QAAAA,GAAAA,SAAAA,CAAAA,IAAAA,YAAAA,sBAAAA,CACrB9C,IAAK2G,CAAAA,iBAAAA,UAAAA,sBAAAA,WAAL3G,sBAAAA,CAAwB4X,QACxB5X,IAAKgC,CAAAA,WAAAA,CAAAA,CAAc,CACbhC,CAAAA,SAAAA,CAAAA,IAAAA,SAAAA,KAAAA,CAAKqG,cACLrG,QAAAA,SAAAA,CAAAA,IAAAA,SAAAA,KAAAA,CAAK6X,gBAEP7X,IAAK6D,CAAAA,MAAAA,EAAQ7D,IAAKM,CAAAA,aAAAA,CAAcwX,WAEpC9X,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,IAAAA,mBAAAA,sBAAAA,CAAAA,IAAAA,CAAK2G,4DAAL3G,sBAAAA,CAAwB4G,OAClB5G,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,IAAAA,UAAAA,KAAAA,CAAK+X,OACX/X,CAAAA,CAAAA,SAAAA,IAAAA,CAAKgC,WAAc,CAAA,CAAA,CAAA,CAEfhC,KAAK6D,MAAQ7D,EAAAA,IAAAA,CAAKM,aAAc2G,CAAAA,aAAAA,CAAAA,CAAAA,0BAAAA,SAAAA,CAAAA,IAAAA,MAAAA,QAAAA,QAIhC,WAjBF+Q,CAAAA,gBAAAA,CAAAA,SAAAA,iBAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAAA,CAAAA,gBAAAA,OAAAA,GAAAA,UAAAA,KAAAA,gBAAAA,OAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CAiBE,SAAAC,SAAA,MAAAC,WAAA,CAAAC,YAAA,KAAAC,EAAA,CAAAzP,CAAA,CAAAU,CAAA,QAAAqN,mBAAA,GAAAG,IAAA,UAAAwB,UAAAC,SAAA,iBAAAA,SAAA,CAAAtB,IAAA,CAAAsB,SAAA,CAAAlJ,IAAA,SACNpP,IAAKoG,CAAAA,IAAAA,CAAK,WAAa,CAAA,CAAErF,KAAOf,CAAAA,IAAAA,CAAKe,MAAOuB,IAAMtC,CAAAA,IAAAA,CAAKsC,IACvDtC,CAAAA,CAAAA,CAAAA,IAAAA,CAAK6Q,gBACL7Q,CAAAA,CAAAA,CAAAA,IAAAA,CAAKwB,qBAAuB,CAEK,CAAA,CAAA,GAA7BxB,IAAK8B,CAAAA,YAAAA,CAAayE,MAAgBvG,EAAAA,IAAAA,CAAKuC,KAAKgE,MAAS,CAAA,CAAA,GACvDvG,IAAK8B,CAAAA,YAAAA,CAAAA,kBAAAA,CAAmB9B,IAAAA,CAAKuC,OAE3BvC,IAAKwI,CAAAA,cAAAA,CACPxI,IAAK0P,CAAAA,aAAAA,CAAc1P,IAAKiC,CAAAA,WAAAA,CAAAA,EAExBjC,KAAK4B,YAAe,CAAAqN,kBAAA,CAAKjP,IAAK8B,CAAAA,YAAAA,CAAayE,MAAS,CAAA,CAAA,CAAIvG,KAAK8B,YAAe9B,CAAAA,IAAAA,CAAKuC,IACjFvC,CAAAA,CAAAA,IAAAA,CAAK6B,YAAe,CAAA,EAAA,CACpB7B,KAAK+B,aAA6C,CAAA,CAAA,GAA7B/B,IAAK4B,CAAAA,YAAAA,CAAa2E,MAGnCgS,CAAAA,CAAAA,SAAAA,CAAAA,IAAAA,SAAAA,CAAAA,CAAAA,CAAevY,aAEjBA,CAAAA,WAAAA,KAAKkQ,CAAAA,KAAAA,UAAAA,WAAAA,WAALlQ,WAAAA,CAAYkQ,KACdlQ,GAAAA,IAAAA,CAAKkQ,KAAMA,CAAAA,KAAAA,CAAMsI,MAAMC,UAAa,CAAA,QAAA,CAAA,CAGtCzY,IAAKkQ,CAAAA,KAAAA,CAAMwI,MAAS,CAAA,CAAA,CAAA,CAAAJ,SAAA,CAAAlJ,IAAA,UAEd,IAAIuJ,CAAAA,OAAQhL,CAAAA,SAAAA,CAAAA,QAAKiL,CAAAA,qBAAsBjL,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,SAAAA,SAAAA,CAAAA,IAAAA,UACvC,IAAIgL,CAAAA,OAAAA,CAAQhL,SAAAA,CAAKiL,QAAAA,CAAAA,qBAAAA,CAAsBjL,CAEzC3N,CAAAA,EAAAA,CAAAA,SAAAA,EAAAA,YAAAA,KAAAA,CAAKkQ,KAAOA,UAAAA,YAAAA,iBAAZlQ,YAAAA,CAAYkQ,KAAAA,IACdlQ,IAAKkQ,CAAAA,KAAAA,CAAMA,MAAMsI,KAAMC,CAAAA,UAAAA,CAAa,EAGtC,CAAA,CAAAL,EAAA,CAA+BS,CAAAA,CAAa7Y,IAAM,CAAA,eAAA,CAAiB,CAAE8Y,GAAAA,CAAK,QAAlEC,CAAAA,CAAAA,EAAAA,CAAFA,SAAEA,CAAWlP,CAAYgP,CAAAA,EAAAA,CAAdhP,gCACXmP,CAAAA,CAAUhZ,CAAAA,IAAAA,CAAKkQ,KAAMA,CAAAA,KAAAA,CAAO6I,CAAWlP,CAAAA,CAAAA,CAAAA,SAE7C7J,KAAKiU,mBACLjU,CAAAA,CAAAA,CAAAA,IAAAA,CAAKoG,IAAK,CAAA,iBAAA,CAAmB,CAAErF,KAAAA,CAAOf,KAAKe,KAAOuB,CAAAA,IAAAA,CAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAC9D,0BAAAgW,SAAA,CAAApB,IAAA,MAAAe,QAAA,QAEO,WAtCA,CAAAJ,MAAMA,CAAAA,SAAAA,OAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAN,CAAAA,MAAMA,OAAAA,GAAAA,WAAAA,KAAAA,gBAAAA,QAAAA,CAAAA,iBAAAA,cAAAA,mBAAAA,GAAAA,IAAAA,CAsCN,SAAAoB,SAAA,MAAAC,YAAA,KAAAC,GAAA,CAAAxQ,CAAA,CAAAU,CAAA,QAAAqN,mBAAA,GAAAG,IAAA,UAAAuC,UAAAC,SAAA,iBAAAA,SAAA,CAAArC,IAAA,CAAAqC,SAAA,CAAAjK,IAAA,SACNpP,IAAKoG,CAAAA,IAAAA,CAAK,WAAa,CAAA,CAAErF,KAAOf,CAAAA,IAAAA,CAAKe,MAAOuB,IAAMtC,CAAAA,IAAAA,CAAKsC,IACvDtC,CAAAA,CAAAA,CAAAA,IAAAA,CAAK0G,mBAEC6R,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,IAAAA,SAAAA,CAAAA,CAAAA,CAAevY,IACrB,CAAA,QAAAmZ,GAAA,CAA+BN,CAAa7Y,CAAAA,IAAAA,CAAM,gBAAiB,CAAE8Y,GAAAA,CAAK,KACpEE,CAAAA,CAAAA,CADED,CAAAA,CAAAA,GAAAA,CAAFA,SAAEA,CAAWlP,CAAAA,CAAAA,GAAAA,CAAFA,OAAEA,CAAAA,SAAAA,CAAAA,IAAAA,SACbmP,CAAAA,CAAAA,CAAUhZ,IAAKkQ,CAAAA,KAAAA,CAAMA,MAAO6I,CAAWlP,CAAAA,CAAAA,CAAAA,QAC7C7J,IAAKkQ,CAAAA,KAAAA,CAAMwI,MAAS,CAAA,CAAA,CAAA,CAEhB1Y,CAAAA,YAAAA,MAAKkQ,KAAOA,UAAAA,YAAAA,WAAZlQ,YAAAA,CAAYkQ,KAAAA,GAAOlQ,IAAKkQ,CAAAA,KAAAA,CAAMA,KAAMsI,CAAAA,KAAAA,CAAMC,WAAa,EAE3DzY,CAAAA,CAAAA,IAAAA,CAAKkC,gBAAmB,CAAA,CAAA,CAAA,CACxBlC,IAAKM,CAAAA,aAAAA,CAAc0T,sBAEdhU,IAAK2C,CAAAA,QAAAA,GACR3C,IAAKiC,CAAAA,WAAAA,CAAcjC,IAAK0B,CAAAA,YAAAA,CAAAA,CAG1B1B,KAAKoG,IAAK,CAAA,iBAAA,CAAmB,CAAErF,KAAAA,CAAOf,IAAKe,CAAAA,KAAAA,CAAOuB,KAAMtC,IAAKsC,CAAAA,IAAAA,CAAAA,CAC9D,0BAAA+W,SAAA,CAAAnC,IAAA,MAAA+B,QAAA,QAKD,WAxBQ,CAAAlB,OAAMA,CAAAA,SAAAA,QAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAN,CAAAA,OAAMA,OAAAA,GAAAA,wBAAAA,KAAAA,CAwBd,SAAAuB,oBAAAA,CAAAA,CACMtZ,CAAAA,IAAAA,CAAK8C,QACP9C,GAAAA,IAAAA,CAAK+C,IAAO,CAAA,CAAA,CAAA,CACZ/C,IAAKgY,CAAAA,gBAAAA,CAAAA,CAAAA,CAER,EAGD,GAAAvS,GAAA,qBAAA1E,KAAA,UAAAwY,iBAAAA,CAAAA,EACEvZ,IAAKwG,CAAAA,aAAAA,CAAAA,CAAAA,CACLxG,IAAKkU,CAAAA,aAAAA,CAAAA,CAAAA,CACDlU,IAAK6D,CAAAA,MAAAA,EAAU7D,KAAKM,aAAc8P,CAAAA,sBAAAA,EACpCpQ,IAAKM,CAAAA,aAAAA,CAAcqQ,cAEtB,CAAA,CAAA,EAGD,GAAAlL,GAAA,oBAAA1E,KAAA,UAAAyY,gBAAAA,CAAAA,CACMxZ,CAAAA,IAAAA,CAAKuC,IAAKgE,CAAAA,MAAAA,CAAS,CAAMvG,EAAAA,CAAAA,IAAAA,CAAKkC,mBAChClC,IAAK8B,CAAAA,YAAAA,CAAAA,kBAAAA,CAAmB9B,IAAAA,CAAKuC,IAE3BvC,CAAAA,CAAAA,CAAAA,IAAAA,CAAKwI,eACPxI,IAAK0P,CAAAA,aAAAA,CAAc1P,IAAKiC,CAAAA,WAAAA,CAAAA,EAExBjC,IAAK4B,CAAAA,YAAAA,CAAAA,kBAAAA,CAAmB5B,IAAKuC,CAAAA,IAAAA,CAAAA,CAC7BvC,IAAK6B,CAAAA,YAAAA,CAAe,EAEtB7B,CAAAA,CAAAA,IAAAA,CAAKwG,gBACLxG,IAAKmO,CAAAA,oBAAAA,CAAAA,CAAAA,CAEAnO,IAAKkD,CAAAA,cAAAA,EAAmBlD,IAAKiD,CAAAA,OAAAA,EAAgC,IAArBjD,IAAKuC,CAAAA,IAAAA,CAAKgE,MAE5CvG,CAAAA,IAAAA,CAAKuC,IAAKgE,CAAAA,MAAAA,CAAS,IAC5BvG,IAAK+B,CAAAA,aAAAA,CAAAA,CAAgB,CAFrB/B,CAAAA,CAAAA,IAAAA,CAAK+B,aAAgB,CAAA,CAAA,CAAA,CAKvB/B,KAAKM,aAAc0T,CAAAA,mBAAAA,CAAAA,CAAAA,CACfhU,IAAK6D,CAAAA,MAAAA,EAAU7D,IAAKM,CAAAA,aAAAA,CAAc8P,wBACpCpQ,IAAKM,CAAAA,aAAAA,CAAcqQ,cAErB3Q,CAAAA,CAAAA,CAAAA,IAAAA,CAAKkU,aACN,CAAA,CAAA,EAGD,GAAAzO,GAAA,mCAAA1E,KAAA,UAAA0Y,+BAAAA,CAAAA,CACMzZ,CAAAA,IAAAA,CAAK2E,mBAAoB4B,CAAAA,MAAAA,CAAS,CACpCvG,GAAAA,IAAAA,CAAKuC,wBAAWvC,IAAAA,CAAK2E,mBAExB,CAAA,CAAA,EAID,GAAAc,GAAA,+BAAA1E,KAAA,UAAA2Y,2BAAAA,CAAAA,CAAAA,CACE1Z,KAAKmO,oBACN,CAAA,CAAA,EAGD,GAAA1I,GAAA,sBAAA1E,KAAA,UAAA4Y,kBAAAA,CAAAA,CAAAA,CACM3Z,IAAK+C,CAAAA,IAAAA,GACH/C,KAAK6D,MAAQ7D,CAAAA,IAAAA,CAAKM,aAAcwX,CAAAA,WAAAA,CAAAA,CAAAA,CAC/B9X,IAAKM,CAAAA,aAAAA,CAAc2G,aAE3B,CAAA,CAAA,CAAA,EAID,GAAAxB,GAAA,iBAAA1E,KAAA,UAAA6Y,aAAAA,CAAAA,CAAAA,CAA2B,MAAO5Z,KAAAA,CAAK4F,UAAWgU,CAAAA,aAAAA,CAAAA,CAAkB,EACpE,GAAAnU,GAAA,WAAA1E,KAAA,UAAA8Y,OAAAA,CAAAA,CAAAA,CAAoC,MAAO7Z,KAAAA,CAAKC,qBAAsB4Z,CAAAA,OAAAA,CAAAA,CAAY,EAClF,GAAApU,GAAA,kBAAA1E,KAAA,UAAA+Y,cAAAA,CAAAA,CAAAA,CAA4B,MAAO9Z,KAAAA,CAAK4F,UAAWkU,CAAAA,cAAAA,CAAAA,CAAmB,EACtE,GAAArU,GAAA,qBAAA1E,KAAA,UAAAgZ,iBAAAA,CAAkBtJ,CAChBzQ,CAAAA,CAAAA,IAAAA,CAAK4F,UAAWmU,CAAAA,iBAAAA,CAAkBtJ,GAClCzQ,IAAKC,CAAAA,qBAAAA,CAAsBiO,cAC5B,CAAA,CAAA,EAED,GAAAzI,GAAA,SAAA1E,KAAA,UAAA6Q,KAAAA,CAAM/H,2BAAgC7J,CAAAA,mBAAAA,KAAK2R,CAAAA,YAAAA,UAAAA,mBAAAA,WAAL3R,mBAAAA,CAAmB4R,KAAM/H,CAAAA,CAAAA,CAAW,EAC1E,GAAApE,GAAA,QAAA1E,KAAA,UAAAiZ,IAAAA,CAAAA,0BAAeha,CAAAA,mBAAAA,KAAK2R,CAAAA,YAAAA,UAAAA,mBAAAA,WAAL3R,mBAAAA,CAAmBga,IAAS,CAAA,CAAA,EAEnC,GAAAvU,GAAA,iBAAA1E,KAAA,UAAAkZ,aAAAA,CAAcnS,GACpB9H,IAAKC,CAAAA,qBAAAA,CAAsBia,WAAY,CAAA,CAAA,CAAA,CAAA,CACvCla,IAAKC,CAAAA,qBAAAA,CAAsBka,gBAAiBrS,CAAAA,CAAAA,CAC7C,EAEO,GAAArC,GAAA,kBAAA1E,KAAA,UAAAmN,cAAAA,CAAAA,CACNlO,KAAAA,OAAAA,MAAAA,IAAAA,CAAKqG,cAAeC,CAAAA,IAAAA,CAAK,iBAAMtG,CAAAA,OAAKC,CAAAA,qBAAAA,CAAsBiO,cAC3D,CAAA,CAAA,EAAA,CAAA,EAEO,GAAAzI,GAAA,uBAAA1E,KAAA,gBAAAqZ,oBAAA,CAAA3D,iBAAA,cAAAC,mBAAA,GAAAC,IAAA,UAAA0D,SAAA,SAAA3D,mBAAA,GAAAG,IAAA,UAAAyD,UAAAC,SAAA,iBAAAA,SAAA,CAAAvD,IAAA,CAAAuD,SAAA,CAAAnL,IAAA,SAAAmL,SAAA,CAAAnL,IAAA,SACApP,MAAKM,aAAc2T,CAAAA,mBAAAA,CAAAA,CAC1B,yBAAAsG,SAAA,CAAArD,IAAA,MAAAmD,QAAA,QAID,WANcpG,CAAAA,mBAAAA,CAAAA,SAAAA,oBAAAA,CAAAA,KAAAA,MAAAA,SAAAA,SAAAA,CAAAA,mBAAAA,OAAAA,GAAAA,UAAAA,KAAAA,CAMd,SAAAuG,MAAAA,CAAAA,CACE,KAAAC,OAAA,MAAA,GAAMC,CAAAA,EAAe1a,IAAKI,CAAAA,iBAAAA,CAAkBua,IAAK,CAAA,OAAA,CAAA,CAC3CC,CAAW5a,CAAAA,CAAAA,CAAAA,IAAAA,CAAK4C,SAAiB8X,CACjCG,CAAAA,CAAAA,CAAW7a,IAAK2C,CAAAA,QAAAA,CACjBgH,KAAMC,CAAAA,OAAAA,CAAQ5J,KAAKe,KAAUf,CAAAA,EAAAA,IAAAA,CAAKe,KAAMwF,CAAAA,MAAAA,CAAS,CAC3B,CAAA,QAAA,EAAA,MAAfvG,MAAKe,KAAqC,EAAA,EAAA,GAAff,IAAKe,CAAAA,KAAAA,CACtC+Z,CAAe9a,CAAAA,IAAAA,CAAKgD,YAAchD,IAAK8C,CAAAA,QAAAA,EAAY+X,CACnDE,CAAAA,CAAAA,CAAAA,CAAAA,CAAgB/a,IAAKiE,CAAAA,QAAAA,CACrB+W,CAAoBhb,CAAAA,CAAAA,CAAAA,IAAAA,CAAKkE,YACzB+W,CAAAA,CAAAA,CAAAA,CAAWJ,CAEjB,CAAA,MAAOK,CAAAA,CAAI,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA,oyBAGCC,CAAAA,CAAS,CACf,cAAgB,CAAA,CAAA,CAAA,CAChB,qBAAqC,CAAA,OAAA,GAAdrb,KAAKyC,IAC5B,CAAA,sBAAA,CAAsC,QAAdzC,GAAAA,IAAAA,CAAKyC,KAC7B,qBAAqC,CAAA,OAAA,GAAdzC,KAAKyC,IAC5B,CAAA,yBAAA,CAA2BmY,EAC3B,6BAA+BG,CAAAA,CAAAA,CAAAA,CAAAA,CAOjBH,CAAAA,CAAW,OAAU,CAAA,MAAA,CAC1B,eAAAU,oBAAA,QAAAA,oBAAA,CAAMtb,QAAK2R,YAAcC,UAAAA,oBAAAA,iBAAnB5R,oBAAAA,CAAmB4R,KAAAA,CAAAA,CAAAA,GAEb5R,IAAK4C,CAAAA,KAAAA,CAKhByY,CAAS,CAAA,CACf,kBAAkB,CAClB,CAAA,gBAAA,CAAkBrb,KAAK+C,IACvB,CAAA,kBAAA,CAAA,CAAqB/C,KAAK+C,IAC1B,CAAA,oBAAA,CAAsB/C,KAAK8C,QAC3B,CAAA,mBAAA,CAAqB9C,KAAKyB,QAC1B,CAAA,oBAAA,CAAsBzB,KAAK2C,QAC3B,CAAA,iBAAA,CAAmBsY,EACnB,iBAAiC,CAAA,OAAA,GAAdjb,KAAKyC,IACxB,CAAA,kBAAA,CAAkC,WAAdzC,IAAKyC,CAAAA,IAAAA,CACzB,kBAAiC,OAAdzC,GAAAA,IAAAA,CAAKyC,KACxB,mBAAqBzC,CAAAA,IAAAA,CAAKmE,QAC1B,iBAAmBnE,CAAAA,IAAAA,CAAKoE,MACxB,mBAAqBpE,CAAAA,IAAAA,CAAKqE,QAC1B,kBAAoBrE,CAAAA,IAAAA,CAAKsE,MACzB,CAAA,gBAAA,CAAkBtE,IAAKuE,CAAAA,IAAAA,CAAAA,CAAAA,CAEbvE,IAAK+D,CAAAA,SAAAA,CACN/D,IAAK6D,CAAAA,MAAAA,EAAoB7D,IAAK8D,CAAAA,KAAAA,CAAhB,OAAkC,CAAA,UAAA,EAElD9D,IAAK6D,CAAAA,MAAAA,EACJ7D,IAAK6D,CAAAA,MAAAA,CACR0X,CAAWvb,CAAAA,IAAAA,CAAKgF,gBAAwBgC,EAAV,CAAA,OAAA,CAAA,CAInChH,IAAAA,CAAKwb,aAAcV,CAAAA,CAAAA,CAAAA,CACnB9a,IAAKgC,CAAAA,WAAAA,CAAchC,IAAKyb,CAAAA,aAAAA,CAAAA,CAAAA,CAAkBP,CAAI,CAAAQ,gBAAA,GAAAA,gBAAA,CAAAN,sBAAA,QAAA,CAGhDL,CAAAA,CAAcG,CAAI,CAAAS,gBAAA,GAAAA,gBAAA,CAAAP,sBAAA,sDAAwBpb,IAAKiE,CAAAA,QAAAA,EAAmCiX,CAAI,CAAAU,gBAAA,GAAAA,gBAAA,CAAAR,sBAAA,QAAA,CACtFJ,CAAAA,CAAkBE,CAAI,CAAAW,gBAAA,GAAAA,gBAAA,CAAAT,sBAAA,8DAA4Bpb,IAAKkE,CAAAA,YAAAA,EAA2CgX,CAAI,CAAAY,gBAAA,GAAAA,gBAAA,CAAAV,sBAAA,QAAA,EAI/G,CAEO,GAAA3V,GAAA,iBAAA1E,KAAA,UAAAya,aAAAA,CAAcV,CAAAA,CAAAA,KAAAA,OAAAA,MACpB,GAAMiB,CAAAA,CAAAA,CAAU/b,KAAK2C,QAAY3C,EAAAA,IAAAA,CAAK2B,eAAgB4E,CAAAA,MAAAA,CAAS,EACzDyV,CAAmBD,CAAAA,CAAAA,CAAU,GAAK/b,IAAK0C,CAAAA,WAAAA,CAE7C,MAAOwY,CAAAA,CAAI,CAAAe,gBAAA,GAAAA,gBAAA,CAAAb,sBAAA,07DAKMpb,IAAK2U,CAAAA,kBAAAA,CAIL0G,CAAAA,CAAS,CACpB,uBAAyB,CAAA,CAAA,CAAA,CACzB,oCAAsCrb,CAAAA,IAAAA,CAAK2C,UAA+B,aAAnB3C,GAAAA,IAAAA,CAAKyD,SAC5D,CAAA,6BAAA,CAA+BzD,KAAK2C,QAAgC,GAAA,MAAA,GAAnB3C,IAAKyD,CAAAA,SAAAA,EAA2C,iBAAnBzD,IAAKyD,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAEjFsY,CAAU/b,CAAAA,IAAAA,CAAKkc,mBAAqBhB,CAAI,CAAAiB,gBAAA,GAAAA,gBAAA,CAAAf,sBAAA,QAAA,CAOxBY,CAAAA,CACFhc,IAAK8C,CAAAA,QAAAA,CACR9C,IAAKiC,CAAAA,WAAAA,CAKEjC,IAAAA,CAAK+C,KAAO,MAAS,CAAA,OAAA,CAGrB/C,IAAAA,CAAK8C,SAAW,MAAS,CAAA,OAAA,CAEjB9C,IAAAA,CAAKwB,mBAAuB,EAAA,CAAA,WAAA4a,MAAA,CAAcpc,IAAAA,CAAKwB,mBAAwB,EAAA,EAAA,CAGtFxB,IAAK8S,CAAAA,cAAAA,CACH9S,IAAKkR,CAAAA,cAAAA,CACPlR,IAAKmU,CAAAA,SAAAA,CACNnU,IAAKqU,CAAAA,UAAAA,CACHrU,IAAK6S,CAAAA,aAAAA,CAQP7S,IAAK8C,CAAAA,QAAAA,CACL9C,IAAK6C,CAAAA,QAAAA,CACR8G,KAAAA,CAAMC,QAAQ5J,IAAKe,CAAAA,KAAAA,CAAAA,CAASf,KAAKe,KAAMsb,CAAAA,IAAAA,CAAK,MAAQrc,IAAKe,CAAAA,KAAAA,CAGzD,iBAAMf,CAAAA,OAAK4R,CAAAA,KAAAA,CAAAA,CAAAA,GACT5R,IAAKia,CAAAA,aAAAA,CAIda,CAAe9a,CAAAA,IAAAA,CAAKsc,oBAAsBpB,CAAI,CAAAqB,gBAAA,GAAAA,gBAAA,CAAAnB,sBAAA,QAAA,EAavD,CAEO,GAAA3V,GAAA,oBAAA1E,KAAA,UAAAmb,gBAAAA,CAAAA,CAAAA,KAAAA,OAAAA,MACN,GAAMM,CAAAA,CAAAA,CAAyB,GAwB/B,MAtBAxc,KAAAA,CAAK2B,eAAgB4N,CAAAA,OAAAA,CAAQ,SAAC0F,CAAAA,CAAQtJ,CAChC3L,CAAAA,CAAAA,OAAAA,CAAKwD,eAAiB,CAAKmI,EAAAA,CAAAA,EAAS3L,OAAKwD,CAAAA,cAAAA,CACvCmI,CAAU3L,GAAAA,OAAAA,CAAKwD,cACjBgZ,EAAAA,CAAAA,CAAKzS,KAAKmR,CAAI,CAAAuB,iBAAA,GAAAA,iBAAA,CAAArB,sBAAA,6DAAuCpb,OAAK2B,CAAAA,eAAAA,CAAgB4E,MAASvG,CAAAA,OAAAA,CAAKwD,cAI5FgZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAKzS,KAAKmR,CAAI,CAAAwB,iBAAA,GAAAA,iBAAA,CAAAtB,sBAAA,+TAIFpb,OAAKuE,CAAAA,IAAAA,CACNvE,OAAKyC,CAAAA,IAAAA,CAEAzC,OAAK8C,CAAAA,QAAAA,CACDqH,SAAAA,CAAAA,CAAAA,CAAyBA,CAAE0E,CAAAA,eAAAA,CAAAA,CAAAA,CAAmB7O,OAAK0R,CAAAA,SAAAA,CAAUuD,CAAO,CAAA,EAAA,CAElFA,CAAOhH,CAAAA,YAAAA,CAAAA,CAAAA,CAEX,CAAA,EAAA,CAAA,CAGGuO,CACR,EAEO,GAAA/W,GAAA,qBAAA1E,KAAA,UAAAub,iBAAAA,CAAAA,CAAAA,CACN,MAAOpB,CAAAA,CAAI,CAAAyB,iBAAA,GAAAA,iBAAA,CAAAvB,sBAAA,2qBAMOjR,SAAAA,CAAAA,QAAkBA,CAAAA,CAAE0E,CAAAA,eAAAA,CAAAA,CAAAA,GACzB7O,IAAK2V,CAAAA,YAAAA,EAcnB,CAEO,GAAAlQ,GAAA,6BAAA1E,KAAA,UAAA6b,yBAAAA,CAA0BpR,CAAAA,CAAkBqR,CAClD,CAAA,CAAA,GAAA,CAAK7c,KAAK4D,iBAAsB4H,EAAAA,CAAAA,CAAAA,EAAAA,CAAYqR,CAAY,CAAA,MAAO3B,CAAAA,CAAI,CAAA4B,iBAAA,GAAAA,iBAAA,CAAA1B,sBAAA,SACnE,GAAM2B,CAAAA,CAAM/c,CAAAA,IAAAA,CAAKqC,kBACjB,GAAI0a,CAAAA,CAAM,CAAKA,EAAAA,CAAAA,EAAO/c,KAAK6B,YAAa0E,CAAAA,MAAAA,CAAQ,MAAO2U,CAAAA,CAAI,CAAA8B,iBAAA,GAAAA,iBAAA,CAAA5B,sBAAA,SAC3D,GAAMxS,CAAAA,CAAAA,CAAM5I,IAAK6B,CAAAA,YAAAA,CAAakb,GAC9B,MAAiB,QAAA,GAAbnU,EAAIC,IAA0BqS,CAAAA,CAAI,CAAA+B,iBAAA,GAAAA,iBAAA,CAAA7B,sBAAA,SAC/BF,CAAI,CAAAgC,iBAAA,GAAAA,iBAAA,CAAA9B,sBAAA,+FAEL7Q,CAAAA,CAAiB4S,iBAAkBvU,CAAAA,CAAAA,CAAAA,CAG1C,EAEO,GAAAnD,GAAA,iBAAA1E,KAAA,UAAA0a,aAAAA,CAAAA,CACN,KAAA2B,OAAA,MAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAA,GAAMC,CAAAA,EAAgBpe,IAAKoD,CAAAA,gBAAAA,EACtBpD,KAAKiC,WAAYqP,CAAAA,IAAAA,CAAAA,CAAAA,EAAAA,CAChBtR,IAAK4B,CAAAA,YAAAA,CAAaiT,KAAMrL,SAAAA,CAC1B,CAAA,CAAA,GAAM6F,CAAAA,EAAIrP,OAAKiK,CAAAA,YAAAA,CAAaT,GAC5B,MAAOQ,CAAAA,MAAAA,CAAOqF,CAAGoF,CAAAA,CAAAA,WAAAA,CAAAA,CAAAA,GAAkBzU,QAAKiC,WAAYqP,CAAAA,IAAAA,CAAAA,CAAAA,CAAOmD,aAAa,EAEtEzU,CAAAA,EAAAA,CAAAA,IAAAA,CAAK4B,aAAaiT,IAAMrL,CAAAA,SAAAA,CAAAA,QAChBxJ,CAAAA,QAAK6L,cAAerC,CAAAA,CAAAA,CAAAA,CACrBiL,gBAAkBzU,OAAKiC,CAAAA,WAAAA,CAAYqP,OAAOmD,WAGvD,CAAA,CAAA,EAAA,CAAA,CAAA,GAAIzU,KAAKgL,gBACP,CAAA,MAAOhL,KAAKqe,CAAAA,uBAAAA,CAAAA,CAAAA,CAA0BD,GAGxC,GAAME,CAAAA,CAAAA,CAASte,KAAKiF,WAAc,CAAA,CAAA,EAAKjF,KAAK0K,mBACtCc,CAAAA,CAAAA,CAAUxL,IAAKwI,CAAAA,cAAAA,EAAAA,CAAmB8V,EAClCzB,CAAarR,CAAAA,CAAAA,CACfxL,KAAK6B,YAAa0E,CAAAA,MAAAA,EAAU,EAC5BgE,CAAiBgU,CAAAA,oBAAAA,CAAqBve,IAAK4B,CAAAA,YAAAA,CAAc5B,KAAKiF,WAC5DsG,CAAAA,CAAAA,CAAAA,CAAcvL,KAAKY,eAAgBsK,CAAAA,cAAAA,CAAAA,CAAAA,CACnCsT,EAAgB3B,CAAcyB,EAAAA,CAAAA,CAAU/S,EAAYkT,eAAoB,CAAA,CAAA,CAAA,EAAA,CACxEC,EAAa7B,CAAcyB,EAAAA,CAAAA,CAAU/S,EAAYoT,YAAiB,CAAA,CAAA,CAAA,CAAA,CAExE,MAAOzD,CAAAA,CAAI,CAAA0D,iBAAA,GAAAA,iBAAA,CAAAxD,sBAAA,mcAISpb,IAAAA,CAAK+C,KAAO,MAAS,CAAA,OAAA,CACd/C,IAAAA,CAAK2C,SAAW,MAAS,CAAA,OAAA,CAGrB3C,IAAAA,CAAK0K,mBAAsB,CAAA,kCAAA,CAAqC,EAAM1K,CAAAA,IAAAA,CAAK6D,OAAS,yBAA4B,CAAA,EAAA,CAEhI7D,IAAKgV,CAAAA,aAAAA,CACNhV,IAAKiW,CAAAA,QAAAA,CACNjW,IAAK6D,CAAAA,MAAAA,CAAS,iBAAmB,EAAK7D,CAAAA,IAAAA,CAAK0K,yCAAoD,EAAA,CAAhB1K,IAAKkF,CAAAA,QAAAA,CAAgB,EAAU,QAAA,EAAA,CACrH2Z,CAAAA,CAAI7e,IAAKU,CAAAA,gBAAAA,CAAAA,CAETV,IAAK8e,CAAAA,YAAAA,CAAAA,CAAAA,CACL9e,IAAK+e,CAAAA,eAAAA,CAAAA,CAAAA,CACL/e,IAAAA,CAAK4c,0BAA0BpR,CAASqR,CAAAA,CAAAA,CAAAA,CACxC7c,CAAAA,IAAAA,CAAK+B,aAAkB/B,EAAAA,IAAAA,CAAKkD,cAAmBlD,EAAAA,IAAAA,CAAKiD,OAElDqb,CAAAA,CAAAA,CACE/T,CAAiByU,CAAAA,qBAAAA,CACfR,CACAE,CAAAA,CAAAA,CACA1e,IAAK4B,CAAAA,YAAAA,CACL5B,KAAKe,KACLf,CAAAA,IAAAA,CAAK2C,QACL3C,CAAAA,IAAAA,CAAKiF,WACLjF,CAAAA,IAAAA,CAAK6L,cAAeiC,CAAAA,IAAAA,CAAK9N,MACzBA,IAAKiK,CAAAA,YAAAA,CAAa6D,IAAK9N,CAAAA,IAAAA,CAAAA,CACvBA,IAAKkD,CAAAA,cAAAA,EAAkBlD,IAAKiD,CAAAA,OAAAA,CAC5BjD,KAAK6E,cACL7E,CAAAA,CAAAA,uBAAAA,KAAAA,CAAK8L,gBAAkBS,UAAAA,uBAAAA,WAAvBvM,uBAAAA,CAAuBuM,cAAAA,CAAiBvM,IAAKmM,CAAAA,kBAAAA,CAAmB2B,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,GAC7EhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuB8M,SAAY9M,CAAAA,IAAAA,CAAKyM,aAAcqB,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CACnEhH,CAAAA,uBAAAA,MAAK8L,gBAAkBsB,UAAAA,uBAAAA,WAAvBpN,uBAAAA,CAAuBoN,SAAAA,CAAYpN,IAAKgN,CAAAA,aAAAA,CAAcc,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,EACnEhH,CAAAA,IAAAA,CAAK0K,oBAAsB1K,IAAKmF,CAAAA,eAAAA,CAAAA,IAAkB6B,EAEpDwE,CAAAA,CAAAA,CAAAA,CACGqR,CACGtS,CAAAA,CAAAA,CAAiB0U,qBACfT,CAAAA,CAAAA,CACAE,EACA1e,IAAK6B,CAAAA,YAAAA,CACL7B,IAAKe,CAAAA,KAAAA,CACLf,IAAK2C,CAAAA,QAAAA,CACL3C,IAAK6L,CAAAA,cAAAA,CAAeiC,KAAK9N,IACzBA,CAAAA,CAAAA,IAAAA,CAAKiK,YAAa6D,CAAAA,IAAAA,CAAK9N,IACvBA,CAAAA,CAAAA,IAAAA,CAAKkD,cAAkBlD,EAAAA,IAAAA,CAAKiD,QAC5BjD,IAAK6E,CAAAA,cAAAA,CACL7E,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBuM,cAAiBvM,CAAAA,IAAAA,CAAKmM,kBAAmB2B,CAAAA,IAAAA,CAAK9N,UAAQgH,EAC7EhH,CAAAA,CAAAA,uBAAAA,KAAAA,CAAK8L,gBAAkBgB,UAAAA,uBAAAA,WAAvB9M,uBAAAA,CAAuB8M,SAAAA,CAAY9M,IAAKyM,CAAAA,aAAAA,CAAcqB,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,GACnEhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBoN,SAAYpN,CAAAA,IAAAA,CAAKgN,aAAcc,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CAAAA,CAErEuD,EAAiB2U,eACflf,CAAAA,IAAAA,CAAK6B,YACL7B,CAAAA,IAAAA,CAAKe,KACLf,CAAAA,IAAAA,CAAK2C,QACL3C,CAAAA,IAAAA,CAAK6L,eAAeiC,IAAK9N,CAAAA,IAAAA,CAAAA,CACzBA,IAAKiK,CAAAA,YAAAA,CAAa6D,IAAK9N,CAAAA,IAAAA,CAAAA,CACvBA,IAAK+B,CAAAA,aAAAA,CACL/B,KAAKwE,gBACLxE,CAAAA,IAAAA,CAAKkD,cAAkBlD,EAAAA,IAAAA,CAAKiD,OAC5BjD,CAAAA,IAAAA,CAAKiW,QAASnI,CAAAA,IAAAA,CAAK9N,MACnBA,IAAK6E,CAAAA,cAAAA,CACL7E,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBuM,cAAiBvM,CAAAA,IAAAA,CAAKmM,kBAAmB2B,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CAC7EhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuB8M,SAAY9M,CAAAA,IAAAA,CAAKyM,aAAcqB,CAAAA,IAAAA,CAAK9N,UAAQgH,EACnEhH,CAAAA,CAAAA,uBAAAA,KAAAA,CAAK8L,gBAAkBsB,UAAAA,uBAAAA,WAAvBpN,uBAAAA,CAAuBoN,SAAAA,CAAYpN,IAAKgN,CAAAA,aAAAA,CAAcc,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,OACnEA,EACAhH,CAAAA,IAAAA,CAAKsK,eAAkBtK,CAAAA,IAAAA,CAAKyE,iBAAoBuC,CAAAA,IAAAA,EAAAA,CAAAA,CAEtD6V,CACEtS,CAAAA,CAAAA,CAAiB4U,yBACfX,CACAE,CAAAA,CAAAA,CACA1e,IAAK4B,CAAAA,YAAAA,CACL5B,IAAKe,CAAAA,KAAAA,CACLf,IAAK2C,CAAAA,QAAAA,CACL3C,KAAK6L,cAAeiC,CAAAA,IAAAA,CAAK9N,IACzBA,CAAAA,CAAAA,IAAAA,CAAKiK,YAAa6D,CAAAA,IAAAA,CAAK9N,IACvBA,CAAAA,CAAAA,IAAAA,CAAKkD,gBAAkBlD,IAAKiD,CAAAA,OAAAA,CAC5BjD,IAAK6E,CAAAA,cAAAA,CACL0G,CAAY6T,CAAAA,cAAAA,CACZpf,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBuM,eAAiBvM,IAAKmM,CAAAA,kBAAAA,CAAmB2B,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,EAC7EhH,CAAAA,CAAAA,uBAAAA,KAAAA,CAAK8L,gBAAkBgB,UAAAA,uBAAAA,WAAvB9M,uBAAAA,CAAuB8M,SAAAA,CAAY9M,KAAKyM,aAAcqB,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CACnEhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBoN,SAAYpN,CAAAA,IAAAA,CAAKgN,cAAcc,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,EAErEuD,CAAAA,CAAAA,CAAAA,CAAiB8U,kBACfrf,CAAAA,IAAAA,CAAK4B,YACL5B,CAAAA,IAAAA,CAAKe,MACLf,IAAK2C,CAAAA,QAAAA,CACL3C,IAAK6L,CAAAA,cAAAA,CAAeiC,IAAK9N,CAAAA,IAAAA,CAAAA,CACzBA,IAAKiK,CAAAA,YAAAA,CAAa6D,KAAK9N,IACvBA,CAAAA,CAAAA,IAAAA,CAAK+B,aACL/B,CAAAA,IAAAA,CAAKwE,gBACLxE,CAAAA,IAAAA,CAAKkD,cAAkBlD,EAAAA,IAAAA,CAAKiD,QAC5BjD,IAAKiW,CAAAA,QAAAA,CAASnI,IAAK9N,CAAAA,IAAAA,CAAAA,CACnBA,IAAK6E,CAAAA,cAAAA,CACL7E,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBuM,eAAiBvM,IAAKmM,CAAAA,kBAAAA,CAAmB2B,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,EAC7EhH,CAAAA,CAAAA,uBAAAA,KAAAA,CAAK8L,gBAAkBgB,UAAAA,uBAAAA,WAAvB9M,uBAAAA,CAAuB8M,SAAAA,CAAY9M,KAAKyM,aAAcqB,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CACnEhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBoN,SAAYpN,CAAAA,IAAAA,CAAKgN,cAAcc,IAAK9N,CAAAA,IAAAA,CAAAA,CAAAA,IAAQgH,EACnEA,CAAAA,IAAAA,EAAAA,CACAhH,IAAKsK,CAAAA,eAAAA,CAAkBtK,IAAKyE,CAAAA,iBAAAA,CAAAA,IAAoBuC,IAlFxDhH,IAAKqK,CAAAA,gBAAAA,CAAAA,CAAAA,CAqFP+T,CAAAA,CAAgBlD,CAAI,CAAAoE,iBAAA,GAAAA,iBAAA,CAAAlE,sBAAA,mFACHjR,SAAAA,CAAAA,CAAAA,CAAoBA,EAAE0E,eAAmB7O,CAAAA,CAAAA,CAAAA,OAAAA,CAAKuR,cAAevR,CAAAA,OAAAA,CAAKiC,YAAYqP,IAAO,CAAA,CAAA,CAAA,EAAA,CAClG/G,CAAAA,CAAiBgV,qBAAsBvf,CAAAA,IAAAA,CAAKiC,WAAYqP,CAAAA,IAAAA,CAAAA,CAAAA,CAAQtR,IAAK2C,CAAAA,QAAAA,CAAAA,EAEvE,EAAA,CACF3C,IAAAA,CAAK2C,UAAY3C,IAAK0D,CAAAA,UAAAA,EAAAA,CAAe1D,IAAK2D,CAAAA,gBAAAA,CAAmB3D,KAAKwf,YAAiB,CAAA,CAAA,CAAA,EAAA,EAG1F,CAEO,GAAA/Z,GAAA,2BAAA1E,KAAA,UAAAsd,uBAAAA,CAAwBD,CAC9B,CAAA,KAAAqB,uBAAA,CAAAC,uBAAA,CAAAC,uBAAA,CAAAC,OAAA,MAAA,GAAM3U,CAAAA,EAAejL,IAAKoB,CAAAA,gBAAAA,CAAiB8J,cACrCsT,CAAAA,CAAAA,CAAAA,CAAAA,CAAevT,EAAawT,eAC5BC,CAAAA,CAAAA,CAAAA,CAAAA,CAAYzT,CAAa0T,CAAAA,YAAAA,CAAAA,CAAAA,CAE/B,MAAOzD,CAAAA,CAAI,CAAA2E,iBAAA,GAAAA,iBAAA,CAAAzE,sBAAA,obAISpb,IAAAA,CAAK+C,KAAO,MAAS,CAAA,OAAA,CACd/C,IAAAA,CAAK2C,SAAW,MAAS,CAAA,OAAA,CAGS3C,IAAAA,CAAK6D,OAAS,yBAA4B,CAAA,EAAA,CAExF7D,IAAKgV,CAAAA,aAAAA,CACRhV,IAAAA,CAAK6D,OAAS,gBAAmB,CAAA,EAAA,CACvCgb,CAAAA,CAAI7e,IAAKmB,CAAAA,iBAAAA,CAAAA,CAETnB,IAAK8e,CAAAA,YAAAA,CAAAA,CAAAA,CACL9e,IAAK+e,CAAAA,eAAAA,CAAAA,CAAAA,EACL/e,IAAK+B,CAAAA,aAAAA,EAAkB/B,IAAKkD,CAAAA,cAAAA,EAAmBlD,IAAKiD,CAAAA,OAAAA,CAElDsH,CAAiBuV,CAAAA,oBAAAA,CACftB,CACAE,CAAAA,CAAAA,CACA1e,IAAK4B,CAAAA,YAAAA,CACL5B,IAAKe,CAAAA,KAAAA,CACLf,KAAK2C,QACL3C,CAAAA,IAAAA,CAAKkF,QACLlF,CAAAA,IAAAA,CAAKmF,eACLnF,CAAAA,IAAAA,CAAK6L,cAAeiC,CAAAA,IAAAA,CAAK9N,IACzBA,CAAAA,CAAAA,IAAAA,CAAKiK,YAAa6D,CAAAA,IAAAA,CAAK9N,IACvBA,CAAAA,CAAAA,IAAAA,CAAKkD,gBAAkBlD,IAAKiD,CAAAA,OAAAA,CAC5BjD,IAAK6E,CAAAA,cAAAA,CACL7E,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBuM,cAAiBvM,CAAAA,IAAAA,CAAKmM,kBAAmB2B,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CAC7EhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuB8M,SAAY9M,CAAAA,IAAAA,CAAKyM,aAAcqB,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CACnEhH,CAAAA,uBAAAA,KAAK8L,CAAAA,gBAAAA,UAAAA,uBAAAA,WAAL9L,uBAAAA,CAAuBoN,SAAYpN,CAAAA,IAAAA,CAAKgN,aAAcc,CAAAA,IAAAA,CAAK9N,IAAQgH,CAAAA,CAAAA,IAAAA,EAAAA,CAAAA,CAfrEhH,IAAKqK,CAAAA,gBAAAA,CAAAA,CAAAA,CAkBP+T,CAAAA,CAAgBlD,CAAI,CAAA6E,iBAAA,GAAAA,iBAAA,CAAA3E,sBAAA,mFACHjR,SAAAA,CAAAA,CAAAA,CAAoBA,EAAE0E,eAAmB7O,CAAAA,CAAAA,CAAAA,OAAAA,CAAKuR,cAAevR,CAAAA,OAAAA,CAAKiC,YAAYqP,IAAO,CAAA,CAAA,CAAA,EAAA,CAClG/G,CAAAA,CAAiBgV,qBAAsBvf,CAAAA,IAAAA,CAAKiC,WAAYqP,CAAAA,IAAAA,CAAAA,CAAAA,CAAQtR,IAAK2C,CAAAA,QAAAA,CAAAA,EAEvE,EAAA,CACF3C,IAAAA,CAAK2C,UAAY3C,IAAK0D,CAAAA,UAAAA,EAAAA,CAAe1D,IAAK2D,CAAAA,gBAAAA,CAAmB3D,KAAKwf,YAAiB,CAAA,CAAA,CAAA,EAAA,EAG1F,CAEO,GAAA/Z,GAAA,gBAAA1E,KAAA,UAAA+d,YAAAA,CAAAA,EACN,MAAI9e,KAAAA,CAAKiD,QACAiY,CAAI,CAAA8E,iBAAA,GAAAA,iBAAA,CAAA5E,sBAAA,gGAETpb,IAAKkD,CAAAA,cAAAA,CACAgY,CAAI,CAAA+E,iBAAA,GAAAA,iBAAA,CAAA7E,sBAAA,sIAENF,CAAI,CAAAgF,iBAAA,GAAAA,iBAAA,CAAA9E,sBAAA,QACZ,EAEO,GAAA3V,GAAA,mBAAA1E,KAAA,UAAAge,eAAAA,CAAAA,CAAAA,CACN,GAAK/e,CAAAA,IAAAA,CAAK2C,WAAa3C,IAAK2D,CAAAA,gBAAAA,CAAkB,MAAOuX,CAAAA,CAAI,CAAAiF,iBAAA,GAAAA,iBAAA,CAAA/E,sBAAA,SACzD,GAAMtY,CAAAA,EAAW9C,IAAK+B,CAAAA,aAAAA,EAAiB/B,IAAKkD,CAAAA,cAAAA,EAAkBlD,IAAKiD,CAAAA,OAAAA,CAE7DL,EADc5C,IAAKmC,CAAAA,gBAAAA,EAAoBnC,IAAKoC,CAAAA,sBAAAA,CACtB,cAAiB,CAAA,YAAA,CACvCge,EAAqD,CAAhCpgB,GAAAA,IAAAA,CAAK2B,eAAgB4E,CAAAA,MAAAA,EAAgBvG,IAAK+B,CAAAA,aAAAA,CAC/Dse,EAAYD,CACd,CAAA,oEAAA,CACA,yEAEJ,CAAA,MAAOlF,CAAAA,CAAI,CAAAoF,iBAAA,GAAAA,iBAAA,CAAAlF,sBAAA,8vBAGwBtY,CAAAA,CAAW,iCAAoC,CAAA,EAAA,CAChEqH,SAAAA,CAAAA,QAAkBA,CAAAA,CAAE2E,CAAAA,cAAAA,CAAAA,CAAAA,GAIvB9O,IAAK2O,CAAAA,qBAAAA,CAGD3O,IAAKmC,CAAAA,gBAAAA,CACCnC,IAAKoC,CAAAA,sBAAAA,CACVU,CAAAA,CAEVF,CAAAA,CAQQwd,CAAAA,CACHpgB,IAAK+V,CAAAA,kBAAAA,CAKJsK,CAAAA,CAERrgB,IAAAA,CAAKkC,iBAAmB,UAAa,CAAA,UAAA,EAI9C,CAEO,GAAAuD,GAAA,gBAAA1E,KAAA,UAAAye,YAAAA,CAAAA,CACN,CAAA,MAAOtE,CAAAA,CAAI,CAAAqF,iBAAA,GAAAA,iBAAA,CAAAnF,sBAAA,oXAGmBpb,IAAAA,CAAKiD,QAAU,SAAY,CAAA,EAAA,CAC5CjD,IAAK8V,CAAAA,aAAAA,CAEC9V,IAAK+V,CAAAA,kBAAAA,CAE4B,CAAA,GAAhC/V,KAAK2B,eAAgB4E,CAAAA,MAAAA,CACtBvG,IAAKkC,CAAAA,gBAAAA,CAKlBlC,IAAAA,CAAK2B,gBAAgB4E,MAAS,CAAA,CAAA,CAC5B2U,CAAI,CAAAsF,iBAAA,GAAAA,iBAAA,CAAApF,sBAAA,0EAA+Cpb,KAAKgW,QACxD,EAAA,EAAA,EAGT,CA9oDMnW,MADyB4gB,CAAAA,GACzB5gB,CAAAA,CAAM6gB,OAAmBA,CA+BNC,CAAAA,CAAAA,CAAA,CAAzBzN,CAAM,CAAA,iBAAA,CAAA,CAAA,CAAoCrT,EAAA+gB,SAAA,CAAA,OAAA,CAAA,IAAA,IACdD,CAAA,CAAA,CAA5BzN,EAAM,oBAA4CrT,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CACxBD,CAAA,CAAA,CAA1BzN,CAAM,CAAA,kBAAA,CAAA,CAAA,CAAmDrT,EAAA+gB,SAAA,CAAA,cAAA,CAAA,IAAA,IACzBD,CAAA,CAAA,CAAhCzN,EAAM,wBAAuDrT,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,YAAA,CAAA,IAAA,EAE7CD,CAAAA,CAAAA,CAAAA,CAAA,CAAhBE,CAAiChhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CACzBD,EAAA,CAARE,CAAAA,CAAAA,CAAAA,CAAAA,CAA0BhhB,CAAA+gB,CAAAA,SAAAA,CAAA,cAAA,CAAA,IAAA,EAAA,CAAA,CAClBD,EAAA,CAARE,CAAAA,CAAAA,CAAAA,CAAAA,CAA+ChhB,EAAA+gB,SAAA,CAAA,iBAAA,CAAA,IAAA,IAGvCD,CAAA,CAAA,CAARE,CAAiChhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,cAAA,CAAA,IAAA,IASjBD,CAAA,CAAA,CAAhBE,KAAiDhhB,CAAA+gB,CAAAA,SAAAA,CAAA,mBAAA,EAGjCD,CAAAA,CAAAA,CAAAA,CAAA,CAAhBE,CAAAA,CAAAA,CAAAA,CAAAA,CAAyChhB,CAAA+gB,CAAAA,SAAAA,CAAA,mBAAA,EAEjCD,CAAAA,CAAAA,CAAAA,CAAA,CAARE,CAA8BhhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CACtBD,CAAA,CAAA,CAARE,CAA4BhhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,aAAA,CAAA,IAAA,EAAA,CAAA,CACpBD,EAAA,CAARE,CAAAA,CAAAA,CAAAA,CAAAA,CAAyBhhB,EAAA+gB,SAAA,CAAA,aAAA,CAAA,IAAA,EACTD,CAAAA,CAAAA,CAAAA,CAAA,CAAhBE,CAAAA,CAAAA,CAAAA,CAAAA,CAAyChhB,EAAA+gB,SAAA,CAAA,kBAAA,CAAA,IAAA,IACzBD,CAAA,CAAA,CAAhBE,KAAyChhB,CAAA+gB,CAAAA,SAAAA,CAAA,uBAAA,EACzBD,CAAAA,CAAAA,CAAAA,CAAA,CAAhBE,CAA+ChhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,wBAAA,CAAA,IAAA,EAAA,CAAA,CAO/BD,EAAA,CAAhBE,CAAAA,CAAAA,CAAAA,CAAAA,CAAuChhB,CAAA+gB,CAAAA,SAAAA,CAAA,mBAAA,CAAA,IAAA,EAAA,CAAA,CAI5BD,EAAA,CAAXG,CAAAA,CAAAA,CAAAA,CAAAA,CAAqBjhB,EAAA+gB,SAAA,CAAA,MAAA,CAAA,IAAA,IAEKD,CAAA,CAAA,CAA1BG,CAAS,CAAA,CAAEpX,IAAMC,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA0B9J,EAAA+gB,SAAA,CAAA,MAAA,CAAA,IAAA,IAQ5CD,CAAA,CAAA,CANCG,EAAS,CACRC,SAAAA,CAAW,CACTC,aAAAA,CAAgBjgB,QAAhBigB,CAAAA,aAAAA,CAAgBjgB,CAAkBA,QAAAA,CAAAA,CAAAA,CAAMkgB,MAAM,GAC9CC,CAAAA,GAAAA,WAAAA,CAAcngB,QAAdmgB,CAAAA,WAAAA,CAAcngB,SAAoBA,CAAAA,CAAMsb,CAAAA,IAAAA,CAAK,WAGnBxc,CAAA+gB,CAAAA,SAAAA,CAAA,OAAA,CAAA,IAAA,EAAA,CAAA,CAEdD,CAAA,CAAA,CAAfne,KAAoD3C,CAAA+gB,CAAAA,SAAAA,CAAA,mBAAA,EAEzCD,CAAAA,CAAAA,CAAAA,CAAA,CAAXG,CAAyCjhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,MAAA,CAAA,IAAA,EAE9BD,CAAAA,CAAAA,CAAAA,CAAA,CAAXG,CAA6CjhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,aAAA,CAAA,IAAA,EAAA,CAAA,CAEFD,EAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAyBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,eAAA,EAEjDD,CAAAA,CAAAA,CAAAA,CAAA,CAAXG,CAAsBjhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,OAAA,CAAA,IAAA,EAEqBD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAyBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,eAAA,EAEjBD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAyBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CAEjBD,CAAA,CAAA,CAA3CG,EAAS,CAAEpX,IAAAA,CAAMyX,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqBvhB,EAAA+gB,SAAA,CAAA,MAAA,CAAA,IAAA,EAEbD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAMyX,CAAAA,OAAAA,CAASC,SAAS,CAA0BvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,WAAA,CAAA,IAAA,EAAA,CAAA,CAElBD,CAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAwBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,cAAA,EAEhBD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA+BvhB,EAAA+gB,SAAA,CAAA,gBAAA,CAAA,IAAA,IAGvBD,CAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,IAAMyX,CAAAA,OAAAA,CAASC,SAAS,CAAmCvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,oBAAA,CAAA,IAAA,EAAA,CAAA,CAG3BD,EAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAiCvhB,CAAA+gB,CAAAA,SAAAA,CAAA,uBAAA,EAGzBD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,IAAMyX,CAAAA,OAAAA,CAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgCvhB,EAAA+gB,SAAA,CAAA,iBAAA,CAAA,IAAA,IAGxBD,CAAA,CAAA,CAA3CG,EAAS,CAAEpX,IAAAA,CAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,CAAiCvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,kBAAA,CAAA,IAAA,EAAA,CAAA,CAGzBD,EAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAMyX,CAAAA,OAAAA,CAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,aAAA,EAGAD,CAAAA,CAAAA,CAAAA,CAAA,CAA1DG,CAAS,CAAA,CAAEO,UAAW,kBAAoB3X,CAAAA,IAAAA,CAAM4X,MAA6BzhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,gBAAA,CAAA,IAAA,IAGlED,CAAA,CAAA,CAAXG,KAAwDjhB,CAAA+gB,CAAAA,SAAAA,CAAA,gBAAA,EAObD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA0BvhB,EAAA+gB,SAAA,CAAA,YAAA,CAAA,IAAA,IAOeD,CAAA,CAAA,CAA5EG,CAAS,CAAA,CAAEpX,IAAMyX,CAAAA,OAAAA,CAASC,SAAS,CAAMC,CAAAA,SAAAA,CAAW,wBAAiDxhB,CAAA+gB,CAAAA,SAAAA,CAAA,uBAAA,EAQxBD,CAAAA,CAAAA,CAAAA,CAAA,CAA7EG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,QAASC,OAAS,CAAA,CAAA,CAAA,CAAMC,UAAW,qBAAkDxhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,mBAAA,CAAA,IAAA,EAAA,CAAA,CAE3DD,CAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAAuBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,aAAA,EAE9BD,CAAAA,CAAAA,CAAAA,CAAA,CAA5BG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,WAAyBthB,CAAA+gB,CAAAA,SAAAA,CAAA,YAAA,EAEdD,CAAAA,CAAAA,CAAAA,CAAA,CAA5BG,CAAS,CAAA,CAAEM,SAAS,CAAgDvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,WAAA,CAAA,IAAA,EAAA,CAAA,CAExCD,EAAA,CAA5BG,CAAAA,CAAS,CAAEM,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,MAAA,CAAA,IAAA,EAAA,CAAA,CAEcD,EAAA,CAApDG,CAAAA,CAAS,CAAEO,SAAW,CAAA,WAAA,CAAaD,SAAS,CAAsBvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,UAAA,CAAA,IAAA,EAEVD,CAAAA,CAAAA,CAAAA,CAAA,CAAxDG,CAAS,CAAA,CAAEO,UAAW,eAAiBD,CAAAA,OAAAA,CAAAA,CAAS,KAA0BvhB,CAAA+gB,CAAAA,SAAAA,CAAA,cAAA,CAAA,IAAA,EAAA,CAAA,CAE9CD,CAAA,CAAA,CAA5BG,EAAS,CAAEpX,IAAAA,CAAMyX,WAA2BthB,CAAA+gB,CAAAA,SAAAA,CAAA,cAAA,EAChBD,CAAAA,CAAAA,CAAAA,CAAA,CAA5BG,CAAAA,CAAS,CAAEpX,IAAAA,CAAMyX,WAAyBthB,CAAA+gB,CAAAA,SAAAA,CAAA,YAAA,EACdD,CAAAA,CAAAA,CAAAA,CAAA,CAA5BG,CAAS,CAAA,CAAEpX,IAAMyX,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAA2BthB,CAAA+gB,CAAAA,SAAAA,CAAA,cAAA,EAEDD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,CAAuBvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,QAAA,CAAA,IAAA,IACfD,CAAA,CAAA,CAA3CG,EAAS,CAAEpX,IAAAA,CAAMyX,QAASC,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,MAAA,CAAA,IAAA,EAAA,CAAA,CAE7BD,EAAA,CAA3BG,CAAAA,CAAS,CAAEpX,IAAMM,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAA+CnK,EAAA+gB,SAAA,CAAA,kBAAA,CAAA,IAAA,IACHD,CAAA,CAAA,CAA7DG,EAAS,CAAEpX,IAAAA,CAAMM,OAAQqX,SAAW,CAAA,qBAAA,CAAA,CAAA,CAAA,CAA6ExhB,EAAA+gB,SAAA,CAAA,mBAAA,CAAA,IAAA,EACxDD,CAAAA,CAAAA,CAAAA,CAAA,CAAzDG,CAAAA,CAAS,CAAEpX,IAAMM,CAAAA,MAAAA,CAAQqX,UAAW,iBAAyDxhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAiB9FD,CAAA,CAAA,CAVCG,CAAS,CAAA,CACRpX,KAAMC,KACNoX,CAAAA,SAAAA,CAAW,CACTC,aAAgBjgB,CAAAA,QAAhBigB,CAAAA,aAAgBjgB,CAAAA,CAAAA,CAAAA,CACd,IAAKA,CAAO,CAAA,MAAO,EACnB,CAAA,GAAA,CAAM,MAAOsU,CAAAA,IAAAA,CAAKkM,MAAMxgB,CAAS,CAAA,EAAC,MAAAygB,OAAA,EAAQ,MAAO,EAAK,IAExDN,WAAcngB,CAAAA,QAAdmgB,CAAAA,WAAcngB,CAAAA,CAAAA,QAAiBsU,CAAAA,IAAKC,CAAAA,SAAAA,CAAUvU,CAGlBlB,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,qBAAA,CAAA,IAAA,EAAA,CAAA,CAGJD,EAAA,CAA3BG,CAAAA,CAAS,CAAEpX,IAAM4X,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAA2BzhB,CAAA+gB,CAAAA,SAAAA,CAAA,YAAA,CAAA,IAAA,EAAA,CAAA,CAEbD,EAAA,CAA/BG,CAAAA,CAAS,CAAEO,SAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqDxhB,EAAA+gB,SAAA,CAAA,kBAAA,CAAA,IAAA,EAEhCD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAAA,CAAS,CAAEpX,IAAMyX,CAAAA,OAAAA,CAASC,SAAS,CAA8BvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,gBAAA,CAAA,IAAA,EAAA,CAAA,CAELD,CAAA,CAAA,CAA5DG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,EAAMC,SAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAuCxhB,EAAA+gB,SAAA,CAAA,wBAAA,CAAA,IAAA,IAC/BD,CAAA,CAAA,CAA5DG,EAAS,CAAEpX,IAAAA,CAAMyX,QAASC,OAAS,CAAA,CAAA,CAAA,CAAMC,WAAW,CAA+BxhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,gBAAA,CAAA,IAAA,EACxCD,CAAAA,CAAAA,CAAAA,CAAA,CAA3CG,CAAS,CAAA,CAAEpX,KAAMyX,OAASC,CAAAA,OAAAA,CAAAA,CAAS,KAA4BvhB,CAAA+gB,CAAAA,SAAAA,CAAA,aAAA,CAAA,IAAA,EAAA,CAAA,CAGMD,CAAA,CAAA,CAArEG,EAAS,CAAEO,SAAAA,CAAW,eAAgB3X,IAAM4X,CAAAA,MAAAA,CAAQF,SAAS,CAAwBvhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,aAAA,CAAA,IAAA,EAGnBD,CAAAA,CAAAA,CAAAA,CAAA,CAAlEG,CAAS,CAAA,CAAEO,UAAW,WAAa3X,CAAAA,IAAAA,CAAM4X,OAAQF,OAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAqBvhB,CAAA+gB,CAAAA,SAAAA,CAAA,UAAA,CAAA,IAAA,EAAA,CAAA,CAGpBD,EAAA,CAA3DG,CAAAA,CAAS,CAAEO,SAAW,CAAA,mBAAA,CAAqB3X,KAAM4X,MAAgCzhB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,SAAA,CAAA,iBAAA,CAAA,IAAA,EAqzB5ED,CAAAA,CAAAA,CAAAA,CAAA,CADLc,CAAM,CAAA,MAAA,CAAQ,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAgBtC7hB,EAAA+gB,SAAA,CAAA,kBAAA,CAAA,IAgEDD,CAAAA,CAAAA,CAAAA,CAAA,CADCc,CAAAA,CAAM,WAAY,CAAEC,oBAAAA,CAAAA,CAAsB,KAM1C7hB,CAAA+gB,CAAAA,SAAAA,CAAA,uBAAA,IAGDD,CAAAA,CAAAA,CAAAA,CAAA,CADCc,CAAAA,CAAM,OAAS,CAAA,CAAEC,sBAAsB,CAOvC7hB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,mBAAA,CAAA,IAAA,CAAA,CAGDD,EAAA,CADCc,CAAAA,CAAM,MAAQ,CAAA,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAyBtC7hB,EAAA+gB,SAAA,CAAA,kBAAA,CAAA,MAGDD,CAAA,CAAA,CADCc,EAAM,qBAAuB,CAAA,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKrD7hB,CAAA+gB,CAAAA,SAAAA,CAAA,kCAAA,IAIDD,CAAAA,CAAAA,CAAAA,CAAA,CAFCc,CAAM,CAAA,UAAA,CAAY,CAAEC,oBAAsB,CAAA,CAAA,CAAA,CAAA,CAAA,CAC1CD,CAAM,CAAA,kBAAA,CAAoB,CAAEC,oBAAAA,CAAAA,CAAsB,KAGlD7hB,CAAA+gB,CAAAA,SAAAA,CAAA,8BAAA,IAGDD,CAAAA,CAAAA,CAAAA,CAAA,CADCc,CAAM,CAAA,QAAA,CAAU,CAAEC,oBAAAA,CAAAA,CAAsB,CAMxC7hB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAA+gB,UAAA,oBAAA,CAAA,IAAA,CAAA,CAAAe,OAAA,KAjpCU9hB,EAAY8gB,CAAA,CAAA,CADxBiB,EAAc,eACF/hB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAopDbgiB,CAAoB,CAAA,eAAA,CAAiB,CACnC9I,SAAAA,CAAW,CACT,CAAE+I,OAAAA,CAAS,EAAGC,KAAO,CAAA,EAAA,CAAA,CACrB,CAAED,OAAS,CAAA,CAAA,CAAGC,KAAO,CAAA,CAAA,CAAA,CAAA,CAEvBlY,OAAS,CAAA,CAAEmY,SAAU,GAAKC,CAAAA,MAAAA,CAAQ,UAGpCJ,CAAoB,CAAA,eAAA,CAAiB,CACnC9I,SAAW,CAAA,CACT,CAAE+I,OAAAA,CAAS,CAAGC,CAAAA,KAAAA,CAAO,GACrB,CAAED,OAAAA,CAAS,EAAGC,KAAO,CAAA,EAAA,CAAA,CAAA,CAEvBlY,QAAS,CAAEmY,QAAAA,CAAU,GAAKC,CAAAA,MAAAA,CAAQ"}
|
|
1
|
+
{"version":3,"file":"nile-combobox.cjs.js","sources":["../../../src/nile-combobox/nile-combobox.ts"],"sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { Ref, createRef, ref } from 'lit/directives/ref.js';\nimport { styles } from './nile-combobox.css';\n\nimport '../nile-icon';\nimport '../nile-popup/nile-popup';\nimport '../nile-tag/nile-tag';\nimport '../nile-option/nile-option';\nimport '../nile-checkbox/nile-checkbox';\nimport '../nile-loader/nile-loader';\n\nimport { animateTo, stopAnimations } from '../internal/animate';\nimport { defaultValue } from '../internal/default-value';\nimport { FormControlController } from '../internal/form';\nimport { getAnimation, setDefaultAnimation } from '../utilities/animation-registry';\nimport { HasSlotController } from '../internal/slot';\nimport { waitForEvent } from '../internal/event';\nimport { watch } from '../internal/watch';\nimport NileElement from '../internal/nile-element';\nimport type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';\nimport type { NileFormControl } from '../internal/nile-element';\nimport type NilePopup from '../nile-popup/nile-popup';\nimport { VirtualizerController } from '@tanstack/lit-virtual';\n\nimport type {\n ComboboxOption,\n ComboboxRenderItemConfig,\n ComboboxTagLayout,\n ComboboxSize,\n ComboboxPlacement,\n ComboboxRow,\n NileRemoveEvent,\n} from './types.js';\nimport { ComboboxSelectionManager } from './selection-manager.js';\nimport { ComboboxSearchManager } from './search-manager.js';\nimport { ComboboxRenderer } from './renderer.js';\nimport { ComboboxPortalManager } from './portal-manager.js';\nimport { hasGroups, flattenRows, filterRows, getOptionRows } from './group-utils.js';\nimport { VisibilityManager } from '../utilities/visibility-manager.js';\n\n/**\n * @summary A data-driven combobox with virtualized options, inline search, multi-select tags,\n * custom value creation, and full WAI-ARIA Combobox keyboard navigation.\n *\n * @tag nile-combobox\n * @status stable\n * @since 2.0\n *\n * @dependency nile-icon\n * @dependency nile-popup\n * @dependency nile-tag\n * @dependency nile-checkbox\n * @dependency nile-loader\n *\n * @slot label - The input's label.\n * @slot prefix - Prepend a presentational icon or element before the input.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded/collapsed.\n * @slot help-text - Text that describes how to use the input.\n * @slot footer - Custom footer content (overrides default footer in multi-select mode).\n * @slot no-results - Custom no-results content.\n *\n * @event nile-change - Emitted when the control's value changes.\n * @event nile-clear - Emitted when the control's value is cleared.\n * @event nile-input - Emitted when the control receives input.\n * @event nile-focus - Emitted when the control gains focus.\n * @event nile-blur - Emitted when the control loses focus.\n * @event nile-show - Emitted when the dropdown opens.\n * @event nile-after-show - Emitted after the dropdown opens and all animations complete.\n * @event nile-hide - Emitted when the dropdown closes.\n * @event nile-after-hide - Emitted after the dropdown closes and all animations complete.\n * @event nile-search - Emitted (debounced) when the user types. Useful for API-driven filtering.\n * @event nile-tag-remove - Emitted when a tag is removed in multi-select mode.\n * @event nile-tag-add - Emitted when a custom value is added via allowCustomValue.\n * @event nile-scroll-end - Emitted when scrolled to the bottom (for infinite loading).\n * @event nile-invalid - Emitted when form validation constraints aren't satisfied.\n * @event nile-select-all - Emitted when the Select all / Deselect all control toggles. Detail: { value, name, action: 'select-all' | 'deselect-all' }.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart combobox - The combobox trigger (input + tags + icons).\n * @csspart input - The text input element.\n * @csspart listbox - The dropdown listbox.\n * @csspart tags - The tags container in multi-select mode.\n * @csspart tag - Each individual tag.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The expand/collapse icon.\n * @csspart top-actions - The sticky row above the option list that contains the Select all checkbox and the Selected / Show all filter toggle. Rendered only when multiple && selectAllEnabled.\n * @csspart select-all - The Select all / Deselect all checkbox wrapper inside top-actions.\n * @csspart show-toggle - The \"Selected / Show all\" filter button inside top-actions.\n * @csspart no-results - The empty-state container shown when a search/filter returns no items. Contains no-results-title and no-results-subtitle.\n * @csspart no-results-title - The title row of the no-results empty state.\n * @csspart no-results-subtitle - The subtitle row of the no-results empty state.\n * @csspart no-data - The empty-state container shown when the dataset is empty (no active search/filter).\n * @csspart footer - The footer with \"Show Selected\" / \"Clear All\".\n * @csspart no-results - The no-results message.\n */\n@customElement('nile-combobox')\nexport class NileCombobox extends NileElement implements NileFormControl {\n static styles: CSSResultGroup = styles;\n\n private readonly formControlController = new FormControlController(this, {\n assumeInteractionOn: ['nile-blur', 'nile-input'],\n });\n private readonly hasSlotController = new HasSlotController(this, 'help-text', 'label');\n private readonly portalManager = new ComboboxPortalManager(this);\n private readonly searchManager = new ComboboxSearchManager();\n\n private scrollElementRef: Ref<HTMLDivElement> = createRef();\n private virtualizerCtrl = new VirtualizerController<HTMLDivElement, Element>(this, {\n getScrollElement: () => this.scrollElementRef.value ?? null,\n count: 0,\n estimateSize: () => 38,\n overscan: 5,\n });\n\n private hScrollElementRef: Ref<HTMLDivElement> = createRef();\n private hVirtualizerCtrl = new VirtualizerController<HTMLDivElement, Element>(this, {\n getScrollElement: () => this.hScrollElementRef.value ?? null,\n count: 0,\n estimateSize: () => 160,\n horizontal: true,\n overscan: 3,\n });\n\n private scrollTimeout: number | undefined;\n private scrolling = false;\n private visibilityManager?: VisibilityManager;\n private keyboardActiveIndex = -1;\n\n @query('.combobox-popup') popup: NilePopup;\n @query('.combobox__trigger') combobox: HTMLElement;\n @query('.combobox__input') inputElement: HTMLInputElement;\n @query('.combobox__value-input') valueInput: HTMLInputElement;\n\n @state() private hasFocus = false;\n @state() displayLabel = '';\n @state() selectedOptions: ComboboxOption[] = [];\n\n /** The items displayed after filtering. Renderer reads from this. */\n @state() filteredData: any[] = [];\n\n /**\n * Mixed (header + option) row list, only populated when `data` contains\n * group entries (`type: 'group'`). When non-empty, the listbox renders from\n * this instead of `filteredData`. `filteredData` stays in sync as the\n * option-only projection so existing select-all / strict-match / etc. logic\n * keeps working unchanged.\n */\n @state() private filteredRows: ComboboxRow[] = [];\n\n /** The complete unfiltered dataset (preserved for re-filtering). */\n @state() private originalData: any[] = [];\n\n @state() showNoResults = false;\n @state() showListbox = false;\n @state() searchValue = '';\n @state() private showSelectedOnly = false;\n @state() private selectAllChecked = false;\n @state() private selectAllIndeterminate = false;\n\n /**\n * Index into `filteredRows` of the group header that should be pinned at\n * the top of the (virtualized) listbox right now. -1 means none.\n * Recomputed on scroll.\n */\n @state() private stickyHeaderIndex = -1;\n\n // ── Public properties ──\n\n @property() name = '';\n\n @property({ type: Array }) data: any[] = [];\n\n @property({\n converter: {\n fromAttribute: (value: string) => value.split(' '),\n toAttribute: (value: string[]) => value.join(' '),\n },\n })\n value: string | string[] = '';\n\n @defaultValue() defaultValue: string | string[] = '';\n\n @property() size: ComboboxSize = 'medium';\n\n @property() placeholder = 'Type to search...';\n\n @property({ type: Boolean, reflect: true }) multiple = false;\n\n @property() label = '';\n\n @property({ type: Boolean, reflect: true }) required = false;\n\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: Boolean, reflect: true }) clearable = false;\n\n @property({ type: Boolean, reflect: true }) loading = false;\n\n @property({ type: Boolean, reflect: true }) optionsLoading = false;\n\n /** When true, skip local filtering and rely solely on the `nile-search` event for API-driven results. */\n @property({ type: Boolean, reflect: true }) disableLocalSearch = false;\n\n /** When true, displays a \"+ Add [value]\" option for values not in the data. */\n @property({ type: Boolean, reflect: true }) allowCustomValue = false;\n\n /** When true, typing free text and pressing Enter/Tab adds it as a tag (like nile-chip's acceptUserInput). */\n @property({ type: Boolean, reflect: true }) acceptUserInput = false;\n\n /** When true, custom values added via allowCustomValue or acceptUserInput are also appended to the suggestions list. */\n @property({ type: Boolean, reflect: true }) addToSuggestions = false;\n\n /** When true, value must match an option. On blur, reverts to the last valid value if text doesn't match. */\n @property({ type: Boolean, reflect: true }) strict = false;\n\n /** Max tags visible before showing \"+N more\" (0 = no limit). */\n @property({ attribute: 'max-tags-visible', type: Number }) maxTagsVisible = 3;\n\n /** Controls how tags wrap in multi-select mode. */\n @property() tagLayout: ComboboxTagLayout = 'single-line';\n\n /**\n * Show footer with \"Show Selected\" and \"Clear All\" in multi-select mode.\n * Automatically suppressed when `selectAllEnabled` is true, since the top\n * actions row already provides the same controls.\n */\n @property({ type: Boolean, reflect: true }) showFooter = true;\n\n /**\n * When true (and `multiple` is true), renders a \"Select all\" / \"Deselect all\"\n * checkbox at the top of the listbox. Operates on the currently visible,\n * non-disabled options (respects the active search filter).\n */\n @property({ type: Boolean, reflect: true, attribute: 'select-all-enabled' }) selectAllEnabled = false;\n\n /**\n * When true (default), data-driven group headers stick to the top of the\n * listbox while scrolling through that group's options (Atlassian-style).\n * Works in both plain and virtualized rendering modes. Set to false for\n * inline-only headers that scroll away with their options.\n */\n @property({ type: Boolean, reflect: true, attribute: 'sticky-group-header' }) stickyGroupHeader = true;\n\n @property({ type: Boolean, reflect: true }) portal = false;\n\n @property({ type: Boolean }) hoist = false;\n\n @property({ reflect: true }) placement: ComboboxPlacement = 'bottom';\n\n @property({ reflect: true }) form = '';\n\n @property({ attribute: 'help-text', reflect: true }) helpText = '';\n\n @property({ attribute: 'error-message', reflect: true }) errorMessage = '';\n\n @property({ type: Boolean }) warning = false;\n @property({ type: Boolean }) error = false;\n @property({ type: Boolean }) success = false;\n\n @property({ type: Boolean, reflect: true }) filled = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n\n @property({ type: String }) noResultsMessage = 'No result found';\n @property({ type: String, attribute: 'no-results-subtitle' }) noResultsSubtitle = 'Clear search or change filter';\n @property({ type: String, attribute: 'no-data-message' }) noDataMessage = 'No data available';\n\n /**\n * Pre-defined autocomplete suggestions. Accepts a JSON array string attribute\n * or a JS array property (like nile-chip). When `addToSuggestions` is true,\n * custom values added by the user are appended to this list and persisted.\n */\n @property({\n type: Array,\n converter: {\n fromAttribute: (value: string | null) => {\n if (!value) return [];\n try { return JSON.parse(value); } catch { return []; }\n },\n toAttribute: (value: any[]) => JSON.stringify(value),\n },\n })\n autoCompleteOptions: any[] = [];\n\n /** Debounce interval (ms) for the nile-search event. */\n @property({ type: Number }) debounceMs = 300;\n\n @property({ attribute: false }) renderItemConfig?: ComboboxRenderItemConfig;\n\n @property({ type: Boolean, reflect: true }) allowHtmlLabel = true;\n\n @property({ type: Boolean, reflect: true, attribute: true }) enableVisibilityEffect = false;\n @property({ type: Boolean, reflect: true, attribute: true }) enableTabClose = false;\n @property({ type: Boolean, reflect: true }) noWidthSync = false;\n\n /** Number of columns in the dropdown grid (vertical scroll). When > 1, options render in a multi-column grid layout. */\n @property({ attribute: 'grid-columns', type: Number, reflect: true }) gridColumns = 1;\n\n /** Number of visible rows in horizontal grid mode. When > 0, enables horizontal virtual scroll with columns scrolling left/right. */\n @property({ attribute: 'grid-rows', type: Number, reflect: true }) gridRows = 0;\n\n /** Width of each column in horizontal grid mode (px). */\n @property({ attribute: 'grid-column-width', type: Number }) gridColumnWidth = 160;\n\n // ── Accessors ──\n\n get validity() {\n return this.valueInput?.validity;\n }\n\n get validationMessage() {\n return this.valueInput?.validationMessage ?? '';\n }\n\n // ── Lifecycle ──\n\n connectedCallback() {\n super.connectedCallback();\n this.open = false;\n this.setupBoundHandlers();\n this.emit('nile-init');\n\n this.updateComplete.then(() => {\n if (this.autoCompleteOptions.length > 0 && this.data.length === 0) {\n this.data = [...this.autoCompleteOptions];\n }\n if (this.value && this.data.length > 0) {\n this.syncSelection();\n }\n });\n }\n\n disconnectedCallback() {\n this.removeOpenListeners();\n this.visibilityManager?.cleanup();\n this.searchManager.cancelDebounce();\n if (this.scrollTimeout) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = undefined;\n }\n this.portalManager.cleanupPortal();\n }\n\n protected firstUpdated(_changed: PropertyValues) {\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: this.combobox,\n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this.hide();\n this.emit('nile-visibility-change', { visible: false, reason: 'anchor-out-of-view', name: this.name });\n },\n onDocumentHidden: () => {\n this.hide();\n this.emit('nile-visibility-change', { visible: false, reason: 'document-hidden', name: this.name });\n },\n emit: (event: string, detail: any) => this.emit(`nile-${event}`, detail),\n });\n }\n\n protected updated(changedProperties: PropertyValues): void {\n if (changedProperties.has('value')) {\n this.syncSelection();\n }\n this.updateVirtualizerCount();\n }\n\n private get isHorizontalGrid(): boolean {\n return this.gridRows > 0 && this.gridColumns <= 1;\n }\n\n /** True when the source data contains at least one group entry. */\n private get hasGroupedData(): boolean {\n const base = this.originalData.length > 0 ? this.originalData : this.data;\n return hasGroups(base);\n }\n\n /**\n * Walk filteredRows and find the index of the deepest group header whose\n * virtual position is at or above `scrollTop`. That's the header that\n * should be pinned at the top of the listbox right now.\n */\n private updateStickyHeader(scrollTop: number): void {\n if (!this.stickyGroupHeader || !this.hasGroupedData) {\n if (this.stickyHeaderIndex !== -1) this.stickyHeaderIndex = -1;\n return;\n }\n let offset = 0;\n let stuck = -1;\n for (let i = 0; i < this.filteredRows.length; i++) {\n const row = this.filteredRows[i];\n const size = row.kind === 'header' ? 32 : 38;\n if (offset > scrollTop) break;\n if (row.kind === 'header') stuck = i;\n offset += size;\n }\n if (stuck !== this.stickyHeaderIndex) this.stickyHeaderIndex = stuck;\n }\n\n /** Recursively keep only options whose value is in `selectedSet`; drop empty groups. */\n private pruneTreeBySelection(items: any[], selectedSet: Set<string>): any[] {\n const out: any[] = [];\n for (const item of items) {\n if (item && typeof item === 'object' && item.type === 'group' && Array.isArray(item.options)) {\n const kept = this.pruneTreeBySelection(item.options, selectedSet);\n if (kept.length > 0) out.push({ ...item, options: kept });\n } else if (selectedSet.has(String(this.getItemValue(item)))) {\n out.push(item);\n }\n }\n return out;\n }\n\n private get hasActiveFilter(): boolean {\n return !!this.searchValue || this.showSelectedOnly;\n }\n\n private renderEmptyState(): TemplateResult {\n if (this.hasActiveFilter) {\n return ComboboxRenderer.renderNoResults(this.noResultsMessage, this.noResultsSubtitle);\n }\n return ComboboxRenderer.renderNoData(this.noDataMessage);\n }\n\n private get isBidirectionalGrid(): boolean {\n return this.gridRows > 0 && this.gridColumns > 1;\n }\n\n private get virtualRowCount(): number {\n if (this.gridColumns > 1) {\n return Math.ceil(this.filteredData.length / this.gridColumns);\n }\n if (this.hasGroupedData) {\n return this.filteredRows.length;\n }\n return this.filteredData.length;\n }\n\n private get virtualColumnCount(): number {\n return Math.ceil(this.filteredData.length / Math.max(this.gridRows, 1));\n }\n\n private updateVirtualizerCount(): void {\n if (this.isHorizontalGrid) {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n const colCount = this.virtualColumnCount;\n if (hVirtualizer.options.count !== colCount || hVirtualizer.options.estimateSize(0) !== this.gridColumnWidth) {\n hVirtualizer.setOptions({\n ...hVirtualizer.options,\n count: colCount,\n estimateSize: () => this.gridColumnWidth,\n });\n hVirtualizer.measure();\n }\n } else {\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n const count = this.virtualRowCount;\n const grouped = this.hasGroupedData;\n const countChanged = virtualizer.options.count !== count;\n const modeChanged = this.lastVirtualizerGrouped !== grouped;\n if (countChanged || modeChanged) {\n const estimateSize = grouped\n ? (index: number) => (this.filteredRows[index]?.kind === 'header' ? 32 : 38)\n : () => 38;\n virtualizer.setOptions({\n ...virtualizer.options,\n count,\n estimateSize,\n });\n virtualizer.measure();\n this.lastVirtualizerGrouped = grouped;\n }\n }\n }\n\n private lastVirtualizerGrouped = false;\n\n // ── Data helpers ──\n\n private getDisplayText(item: any): string {\n if (this.renderItemConfig?.getDisplayText) return this.renderItemConfig.getDisplayText(item);\n return item?.label || item?.name || item?.toString?.() || '';\n }\n\n private getItemValue(item: any): string {\n if (this.renderItemConfig?.getValue) return this.renderItemConfig.getValue(item);\n return item?.value ?? item;\n }\n\n private getSearchText(item: any): string {\n if (this.renderItemConfig?.getSearchText) return this.renderItemConfig.getSearchText(item);\n return this.getDisplayText(item);\n }\n\n private getItemDescription(item: any): string {\n return this.renderItemConfig?.getDescription?.(item) ?? item?.description ?? '';\n }\n\n private getItemPrefix(item: any): string {\n return this.renderItemConfig?.getPrefix?.(item) ?? item?.prefix ?? '';\n }\n\n private getItemSuffix(item: any): string {\n return this.renderItemConfig?.getSuffix?.(item) ?? item?.suffix ?? '';\n }\n\n // ── Selection ──\n\n private syncSelection(): void {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n const items = this.hasGroupedData\n ? getOptionRows(flattenRows(baseData)).map(r => r.item)\n : baseData;\n this.selectedOptions = ComboboxSelectionManager.createOptionsFromValues(\n this.value,\n items,\n this.getDisplayText.bind(this),\n this.renderItemConfig?.getValue,\n );\n\n if (!this.multiple) {\n const label = this.selectedOptions[0]?.getTextLabel() ?? '';\n this.displayLabel = label;\n if (label) {\n this.searchValue = label;\n } else if (!this.hasFocus) {\n this.searchValue = '';\n }\n } else {\n this.displayLabel = '';\n }\n\n this.updateValidity();\n this.updateSelectAllState();\n }\n\n // ── Select All ──\n\n /**\n * Returns the options eligible for Select All — the currently filtered data\n * (so the active search/filter is respected) minus any `disabled` items.\n * Mirrors nile-select's `getSelectableOptions()` contract.\n */\n private getSelectableData(): any[] {\n return this.filteredData.filter((item: any) => !item?.disabled);\n }\n\n /**\n * Derives `selectAllChecked` + `selectAllIndeterminate` from the current\n * selection vs. the selectable set. No-op when `multiple` is false.\n *\n * options=0 → both false (nothing to select, e.g. empty search)\n * selected=0 → checked=false, indeterminate=false\n * selected=options → checked=true, indeterminate=false\n * otherwise (partial) → checked=false, indeterminate=true\n */\n private updateSelectAllState(): void {\n if (!this.multiple) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n return;\n }\n const options = this.getSelectableData();\n if (options.length === 0) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n return;\n }\n const selectedValues = Array.isArray(this.value) ? this.value : [];\n const selectedSet = new Set(selectedValues.map(String));\n const selectedInView = options.reduce((n, item) => {\n return n + (selectedSet.has(String(this.getItemValue(item))) ? 1 : 0);\n }, 0);\n\n if (selectedInView === 0) {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = false;\n } else if (selectedInView === options.length) {\n this.selectAllChecked = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllChecked = false;\n this.selectAllIndeterminate = true;\n }\n }\n\n /**\n * Toggles all selectable, visible options. Indeterminate → clears selection\n * (matches the \"Deselect All\" label flip), empty → selects all,\n * fully-selected → clears.\n */\n private handleSelectAllToggle(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (!this.multiple || !this.selectAllEnabled) return;\n\n const options = this.getSelectableData();\n if (options.length === 0) return;\n\n const shouldUnselectAll = this.selectAllChecked || this.selectAllIndeterminate;\n const current = Array.isArray(this.value) ? [...this.value] : [];\n const inViewValues = options.map(item => String(this.getItemValue(item)));\n const inViewSet = new Set(inViewValues);\n\n let next: string[];\n if (shouldUnselectAll) {\n // Deselect only the in-view options; preserve selections outside the filter.\n next = current.filter(v => !inViewSet.has(String(v)));\n } else {\n // Select all in-view options on top of any existing (out-of-view) selection.\n const merged = new Set(current.map(String));\n inViewValues.forEach(v => merged.add(v));\n next = Array.from(merged);\n }\n\n this.value = next;\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('', true);\n\n this.updateComplete.then(() => {\n this.emit('nile-input', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-select-all', {\n value: this.value,\n name: this.name,\n action: shouldUnselectAll ? 'deselect-all' : 'select-all',\n });\n });\n }\n\n // ── Event handler setup ──\n\n private handleDocumentFocusIn!: (e: FocusEvent) => void;\n private handleDocumentKeyDown!: (e: KeyboardEvent) => void;\n private handleDocumentMouseDown!: (e: MouseEvent) => void;\n private handleWindowError!: (e: ErrorEvent) => void;\n private handleWindowResize!: () => void;\n private handleWindowScroll!: () => void;\n\n private setupBoundHandlers(): void {\n this.handleDocumentFocusIn = (event: FocusEvent) => {\n if (!this.open) return;\n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortal = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n if (!hitSelf && !hitPopup && !hitPortal) this.hide();\n };\n\n this.handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (!this.open && event.key !== 'ArrowDown' && event.key !== 'ArrowUp' && event.key !== 'Enter') return;\n this.onGlobalKeyDown(event);\n };\n\n this.handleDocumentMouseDown = (event: MouseEvent) => {\n if (!this.open) return;\n const path = event.composedPath();\n const hitSelf = path.includes(this);\n const hitPopup = this.popup && path.includes(this.popup);\n const hitPortal = this.portal && this.portalManager.portalContainerElement && path.includes(this.portalManager.portalContainerElement);\n if (!hitSelf && !hitPopup && !hitPortal) this.hide();\n };\n\n this.handleWindowError = (event: ErrorEvent) => {\n const msg = event.error?.message || event.message || '';\n if (msg.includes(\"Cannot read properties of null (reading 'insertBefore')\")) {\n event.preventDefault();\n }\n };\n\n this.handleWindowResize = () => this.portalManager.updatePosition();\n this.handleWindowScroll = () => this.portalManager.updatePosition();\n }\n\n private addOpenListeners(): void {\n document.addEventListener('focusin', this.handleDocumentFocusIn);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n window.addEventListener('error', this.handleWindowError);\n if (this.portal) {\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.handleWindowScroll, true);\n }\n }\n\n private removeOpenListeners(): void {\n document.removeEventListener('focusin', this.handleDocumentFocusIn);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n window.removeEventListener('error', this.handleWindowError);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.handleWindowScroll, true);\n }\n\n // ── Keyboard navigation (WAI-ARIA Combobox) ──\n\n private onInputKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.open) {\n this.show();\n } else {\n this.moveActiveOption(this.gridColumns > 1 ? this.gridColumns : 1);\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.open) {\n this.show();\n } else {\n this.moveActiveOption(this.gridColumns > 1 ? -this.gridColumns : -1);\n }\n break;\n case 'ArrowRight':\n if (this.gridColumns > 1 && this.open) {\n event.preventDefault();\n this.moveActiveOption(1);\n }\n break;\n case 'ArrowLeft':\n if (this.gridColumns > 1 && this.open) {\n event.preventDefault();\n this.moveActiveOption(-1);\n }\n break;\n case 'Enter':\n event.preventDefault();\n if (this.open) {\n this.selectActiveOption();\n } else if (this.searchValue.trim() && (this.acceptUserInput || this.allowCustomValue)) {\n this.addCustomValue(this.searchValue.trim());\n } else {\n this.show();\n }\n break;\n case 'Escape':\n if (this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n }\n break;\n case 'Home':\n if (this.open) {\n event.preventDefault();\n this.setActiveOption(0);\n }\n break;\n case 'End':\n if (this.open) {\n event.preventDefault();\n this.setActiveOption(this.filteredData.length - 1);\n }\n break;\n case 'Backspace':\n if (this.multiple && this.searchValue === '' && this.selectedOptions.length > 0) {\n const last = this.selectedOptions[this.selectedOptions.length - 1];\n this.removeTag(last);\n }\n break;\n case 'Tab':\n if (this.multiple && this.acceptUserInput && this.searchValue.trim()) {\n this.addCustomValue(this.searchValue.trim());\n }\n if (this.open) this.hide();\n break;\n }\n }\n\n private onGlobalKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.open) {\n event.preventDefault();\n event.stopPropagation();\n this.hide();\n this.inputElement?.focus({ preventScroll: true });\n }\n }\n\n private getVisibleOptions(): NodeListOf<Element> | Element[] {\n const root = this.portal ? this.portalManager.portalContainerElement : this.shadowRoot;\n if (!root) return [];\n return root.querySelectorAll('nile-option:not([disabled])');\n }\n\n private moveActiveOption(delta: number): void {\n const options = this.getVisibleOptions();\n if (!options.length) return;\n let next = this.keyboardActiveIndex + delta;\n if (next < 0) next = options.length - 1;\n if (next >= options.length) next = 0;\n this.setActiveOption(next);\n }\n\n private setActiveOption(index: number): void {\n const options = this.getVisibleOptions();\n if (!options.length) return;\n\n options.forEach((opt, i) => {\n const el = opt as HTMLElement;\n if (i === index) {\n el.setAttribute('aria-current', 'true');\n el.classList.add('combobox__option--active');\n el.scrollIntoView?.({ block: 'nearest' });\n } else {\n el.removeAttribute('aria-current');\n el.classList.remove('combobox__option--active');\n }\n });\n\n this.keyboardActiveIndex = index;\n }\n\n private selectActiveOption(): void {\n const options = this.getVisibleOptions();\n if (this.keyboardActiveIndex >= 0 && this.keyboardActiveIndex < options.length) {\n const opt = options[this.keyboardActiveIndex] as any;\n if (opt && !opt.disabled) {\n this.handleOptionSelection(opt.value);\n }\n } else if (this.searchValue.trim() && (this.allowCustomValue || this.acceptUserInput)) {\n this.addCustomValue(this.searchValue.trim());\n }\n }\n\n // ── Input handling ──\n\n private onInputChange(event: Event): void {\n event.stopPropagation();\n }\n\n private onInputHandler(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.searchValue = target.value;\n\n if (!this.open) this.show();\n\n this.emit('nile-input', { value: this.searchValue, name: this.name });\n\n if (this.disableLocalSearch) {\n this.searchManager.debounceSearch(\n (q: string) => this.emit('nile-search', { query: q, name: this.name }),\n this.searchValue,\n this.debounceMs,\n );\n } else {\n this.filterOptions(this.searchValue);\n }\n\n this.keyboardActiveIndex = -1;\n }\n\n private filterOptions(search: string, preserveScroll = false): void {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n\n if (this.hasGroupedData) {\n // Grouped path: filter the tree, derive options-only projection.\n let tree = baseData;\n if (this.showSelectedOnly) {\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n const selectedSet = new Set(selectedValues.map(v => String(v)));\n tree = this.pruneTreeBySelection(baseData, selectedSet);\n }\n const { rows } = filterRows(tree, search, this.getSearchText.bind(this));\n this.filteredRows = rows;\n this.filteredData = getOptionRows(rows).map(r => r.item);\n this.showNoResults = this.filteredData.length === 0;\n // Recompute sticky header at current scroll (defaults to top on filter).\n const st = this.scrollElementRef.value?.scrollTop ?? 0;\n this.updateStickyHeader(st);\n } else {\n let source = baseData;\n if (this.showSelectedOnly) {\n const selectedValues = Array.isArray(this.value) ? this.value : [this.value];\n const selectedSet = new Set(selectedValues.map(v => String(v)));\n source = baseData.filter((item: any) => selectedSet.has(String(this.getItemValue(item))));\n }\n const { filteredItems, showNoResults } = this.searchManager.filter(\n search,\n source,\n this.getSearchText.bind(this),\n );\n this.filteredData = filteredItems;\n this.filteredRows = [];\n this.showNoResults = showNoResults;\n }\n\n this.portalManager.resetMeasuredHeight();\n if (!preserveScroll) {\n this.resetScrollPosition();\n }\n this.updateSelectAllState();\n this.requestUpdate();\n }\n\n // ── Focus ──\n\n private onFocusIn(): void {\n this.hasFocus = true;\n this.emit('nile-focus');\n if (!this.multiple && this.displayLabel) {\n this.searchValue = this.displayLabel;\n this.requestUpdate();\n this.updateComplete.then(() => {\n this.inputElement?.select();\n });\n }\n }\n\n private onFocusOut(): void {\n this.hasFocus = false;\n this.emit('nile-blur');\n\n if (this.open) return;\n\n if (!this.multiple) {\n if (this.strict) {\n const baseData = this.originalData.length > 0 ? this.originalData : this.data;\n const allItems = this.hasGroupedData\n ? getOptionRows(flattenRows(baseData)).map(r => r.item)\n : baseData;\n const match = allItems.find(\n (item: any) => this.getDisplayText(item).toLowerCase() === this.searchValue.toLowerCase(),\n );\n if (match) {\n const val = this.getItemValue(match);\n if (this.value !== val) {\n this.value = val;\n this.syncSelection();\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n } else {\n this.searchValue = this.displayLabel;\n }\n } else {\n this.searchValue = this.displayLabel;\n }\n }\n }\n\n // ── Combobox trigger interaction ──\n\n private onTriggerMouseDown(event: MouseEvent): void {\n if (this.disabled) return;\n const path = event.composedPath();\n if (path.some(el => el instanceof Element && el.tagName.toLowerCase() === 'nile-icon-button')) return;\n\n event.preventDefault();\n this.inputElement?.focus({ preventScroll: true });\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n // ── Option click ──\n\n private onOptionClick(event: MouseEvent): void {\n // Use composedPath to find nile-option across shadow boundaries\n const path = event.composedPath();\n const option = path.find((el: EventTarget) =>\n (el as HTMLElement).tagName === 'NILE-OPTION'\n ) as any;\n\n if (!option || option.disabled) return;\n this.handleOptionSelection(option.value);\n }\n\n private handleOptionSelection(optionValue: string): void {\n const oldValue = this.value;\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? this.value : [];\n this.value = ComboboxSelectionManager.toggleMultiValue(current, optionValue);\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('', true);\n } else {\n this.value = optionValue;\n this.syncSelection();\n this.searchValue = this.displayLabel;\n this.hide();\n }\n\n if (JSON.stringify(this.value) !== JSON.stringify(oldValue)) {\n this.updateComplete.then(() => {\n this.emit('nile-input', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n });\n }\n\n this.inputElement?.focus({ preventScroll: true });\n }\n\n private addCustomValue(val: string): void {\n if (this.addToSuggestions) {\n const allItems = this.originalData.length > 0 ? this.originalData : this.data;\n const alreadyExists = allItems.some((item: any) =>\n String(this.getItemValue(item)) === val || this.getDisplayText(item) === val,\n );\n if (!alreadyExists) {\n const newItem = this.renderItemConfig?.getValue\n ? { value: val, label: val }\n : val;\n this.originalData = [...allItems, newItem];\n this.data = [...this.originalData];\n this.autoCompleteOptions = [...this.originalData];\n this.filteredData = [...this.originalData];\n }\n }\n\n if (this.multiple) {\n const current = Array.isArray(this.value) ? this.value : [];\n if (!current.includes(val)) {\n this.value = [...current, val];\n }\n } else {\n this.value = val;\n this.hide();\n }\n\n this.searchValue = this.multiple ? '' : val;\n this.syncSelection();\n this.filterOptions(this.searchValue);\n\n this.emit('nile-tag-add', { value: val, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Clear ──\n\n private onClearClick(event: MouseEvent): void {\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.searchValue = '';\n this.syncSelection();\n this.filterOptions('');\n this.emit('nile-clear', { value: this.value, name: this.name });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Tags ──\n\n private removeTag(option: ComboboxOption): void {\n if (this.disabled) return;\n const current = Array.isArray(this.value) ? this.value : [];\n this.value = ComboboxSelectionManager.removeValue(current, option.value);\n this.syncSelection();\n this.emit('nile-tag-remove', { value: this.value, name: this.name, removedtagvalue: option.value });\n this.emit('nile-change', { value: this.value, name: this.name });\n }\n\n // ── Footer ──\n\n private onFooterClick(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n private toggleShowSelected(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.selectedOptions.length === 0) return;\n\n this.showSelectedOnly = !this.showSelectedOnly;\n if (this.showSelectedOnly) this.searchValue = '';\n this.filterOptions(this.searchValue);\n }\n\n private clearAll(): void {\n this.showSelectedOnly = false;\n this.value = this.multiple ? [] : '';\n this.filterOptions('');\n this.syncSelection();\n this.emit('nile-change', { value: this.value, name: this.name });\n this.emit('nile-clear', { value: this.value, name: this.name });\n this.resetScrollPosition();\n }\n\n // ── Scroll ──\n\n private onScroll(e: Event): void {\n const target = e.target as HTMLElement;\n this.updateStickyHeader(target.scrollTop);\n if (this.showSelectedOnly) return;\n\n this.emit('nile-scroll', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name });\n\n if (!this.scrolling) {\n this.scrolling = true;\n this.emit('nile-scroll-start', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name });\n }\n\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n this.scrolling = false;\n }, 300);\n\n const isAtBottom = Math.ceil(target.scrollTop) >= Math.floor(target.scrollHeight - target.offsetHeight);\n if (isAtBottom) {\n this.emit('nile-scroll-end', { scrollTop: target.scrollTop, scrollLeft: target.scrollLeft, name: this.name, isAtBottom: true });\n }\n }\n\n // ── Show / Hide ──\n\n async show(): Promise<unknown> {\n if (this.open || this.disabled) return undefined;\n this.open = true;\n return waitForEvent(this, 'nile-after-show');\n }\n\n async hide(): Promise<unknown> {\n if (!this.open) return undefined;\n this.open = false;\n return waitForEvent(this, 'nile-after-hide');\n }\n\n @watch('open', { waitUntilFirstUpdate: true })\n async handleOpenChange(): Promise<void> {\n if (this.open && !this.disabled) {\n this.visibilityManager?.setup();\n this.showListbox = true;\n await this.updateComplete;\n await this.doOpen();\n\n if (this.portal) this.portalManager.setupPortal();\n } else {\n this.visibilityManager?.cleanup();\n await this.doClose();\n this.showListbox = false;\n\n if (this.portal) this.portalManager.cleanupPortal();\n }\n }\n\n private async doOpen(): Promise<void> {\n this.emit('nile-show', { value: this.value, name: this.name });\n this.addOpenListeners();\n this.keyboardActiveIndex = -1;\n\n if (this.originalData.length === 0 && this.data.length > 0) {\n this.originalData = [...this.data];\n }\n if (this.hasGroupedData) {\n this.filterOptions(this.searchValue);\n } else {\n this.filteredData = [...(this.originalData.length > 0 ? this.originalData : this.data)];\n this.filteredRows = [];\n this.showNoResults = this.filteredData.length === 0;\n }\n\n await stopAnimations(this);\n\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = 'hidden';\n }\n\n this.popup.active = true;\n\n // Wait for Lit to render the listbox and attach scrollElementRef.\n await this.updateComplete;\n\n const scrollEl = this.isHorizontalGrid\n ? this.hScrollElementRef.value\n : this.scrollElementRef.value;\n\n await new Promise<void>(resolve => {\n let attempts = 0;\n const maxAttempts = 10;\n\n const check = () => {\n attempts++;\n const hasSize = this.isHorizontalGrid\n ? (scrollEl?.offsetWidth ?? 0) > 0\n : (scrollEl?.offsetHeight ?? 0) > 0;\n\n if (hasSize || attempts >= maxAttempts) {\n resolve();\n } else {\n requestAnimationFrame(check);\n }\n };\n\n requestAnimationFrame(check);\n });\n\n if (this.isHorizontalGrid) {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n\n hVirtualizer.scrollOffset = 0;\n hVirtualizer.measure();\n } else {\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n\n virtualizer.scrollOffset = 0;\n virtualizer.measure();\n }\n\n this.requestUpdate();\n await this.updateComplete;\n\n await new Promise<void>(resolve => {\n requestAnimationFrame(() => resolve());\n });\n\n if (this.popup?.popup) {\n this.popup.popup.style.visibility = '';\n }\n\n const { keyframes, options } = getAnimation(this, 'combobox.show', { dir: 'ltr' });\n await animateTo(this.popup.popup, keyframes, options);\n this.resetScrollPosition();\n\n this.emit('nile-after-show', { value: this.value, name: this.name });\n }\n\n private async doClose(): Promise<void> {\n this.emit('nile-hide', { value: this.value, name: this.name });\n this.removeOpenListeners();\n\n await stopAnimations(this);\n const { keyframes, options } = getAnimation(this, 'combobox.hide', { dir: 'ltr' });\n await animateTo(this.popup.popup, keyframes, options);\n this.popup.active = false;\n\n if (this.popup?.popup) this.popup.popup.style.visibility = '';\n\n this.showSelectedOnly = false;\n this.portalManager.resetMeasuredHeight();\n\n if (!this.multiple) {\n this.searchValue = this.displayLabel;\n }\n\n this.emit('nile-after-hide', { value: this.value, name: this.name });\n }\n\n // ── Watchers ──\n\n @watch('disabled', { waitUntilFirstUpdate: true })\n handleDisabledChange(): void {\n if (this.disabled) {\n this.open = false;\n this.handleOpenChange();\n }\n }\n\n @watch('value', { waitUntilFirstUpdate: true })\n handleValueChange(): void {\n this.syncSelection();\n this.requestUpdate();\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePosition();\n }\n }\n\n @watch('data', { waitUntilFirstUpdate: true })\n handleDataChange(): void {\n if (this.data.length > 0 && !this.showSelectedOnly) {\n this.originalData = [...this.data];\n }\n if (this.hasGroupedData) {\n this.filterOptions(this.searchValue);\n } else {\n this.filteredData = [...this.data];\n this.filteredRows = [];\n }\n this.syncSelection();\n this.updateSelectAllState();\n\n if (!this.optionsLoading && !this.loading && this.data.length === 0) {\n this.showNoResults = true;\n } else if (this.data.length > 0) {\n this.showNoResults = false;\n }\n\n this.portalManager.resetMeasuredHeight();\n if (this.portal && this.portalManager.portalContainerElement) {\n this.portalManager.updatePosition();\n }\n this.requestUpdate();\n }\n\n @watch('autoCompleteOptions', { waitUntilFirstUpdate: true })\n handleAutoCompleteOptionsChange(): void {\n if (this.autoCompleteOptions.length > 0) {\n this.data = [...this.autoCompleteOptions];\n }\n }\n\n @watch('multiple', { waitUntilFirstUpdate: true })\n @watch('selectAllEnabled', { waitUntilFirstUpdate: true })\n handleSelectAllConfigChange(): void {\n this.updateSelectAllState();\n }\n\n @watch('portal', { waitUntilFirstUpdate: true })\n handlePortalChange(): void {\n if (this.open) {\n if (this.portal) this.portalManager.setupPortal();\n else this.portalManager.cleanupPortal();\n }\n }\n\n // ── Form integration ──\n\n checkValidity(): boolean { return this.valueInput.checkValidity(); }\n getForm(): HTMLFormElement | null { return this.formControlController.getForm(); }\n reportValidity(): boolean { return this.valueInput.reportValidity(); }\n setCustomValidity(message: string): void {\n this.valueInput.setCustomValidity(message);\n this.formControlController.updateValidity();\n }\n\n focus(options?: FocusOptions): void { this.inputElement?.focus(options); }\n blur(): void { this.inputElement?.blur(); }\n\n private handleInvalid(event: Event): void {\n this.formControlController.setValidity(false);\n this.formControlController.emitInvalidEvent(event);\n }\n\n private updateValidity(): void {\n this.updateComplete.then(() => this.formControlController.updateValidity());\n }\n\n private async resetScrollPosition(): Promise<void> {\n this.stickyHeaderIndex = -1;\n await this.portalManager.resetScrollPosition();\n }\n\n // ── Render ──\n\n render(): TemplateResult {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasValue = this.multiple\n ? (Array.isArray(this.value) && this.value.length > 0)\n : (typeof this.value === 'string' && this.value !== '');\n const hasClearIcon = this.clearable && !this.disabled && hasValue;\n const hasHelpText = !!this.helpText;\n const hasErrorMessage = !!this.errorMessage;\n const isEmpty = !hasValue;\n\n return html`\n <div\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control--small': this.size === 'small',\n 'form-control--medium': this.size === 'medium',\n 'form-control--large': this.size === 'large',\n 'form-control--has-label': hasLabel,\n 'form-control--has-help-text': hasHelpText,\n })}\n >\n <label\n id=\"label\"\n part=\"form-control-label\"\n class=\"form-control__label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${() => this.inputElement?.focus()}\n >\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n <div part=\"form-control-input\" class=\"form-control-input\">\n <nile-popup\n class=${classMap({\n 'combobox-popup': true,\n 'combobox--open': this.open,\n 'combobox--closed': !this.open,\n 'combobox--disabled': this.disabled,\n 'combobox--focused': this.hasFocus,\n 'combobox--multiple': this.multiple,\n 'combobox--empty': isEmpty,\n 'combobox--small': this.size === 'small',\n 'combobox--medium': this.size === 'medium',\n 'combobox--large': this.size === 'large',\n 'combobox--warning': this.warning,\n 'combobox--error': this.error,\n 'combobox--success': this.success,\n 'combobox--filled': this.filled,\n 'combobox--pill': this.pill,\n })}\n placement=${this.placement}\n strategy=${this.portal ? 'fixed' : (this.hoist ? 'fixed' : 'absolute')}\n distance=\"6\"\n ?flip=${!this.portal}\n ?shift=${!this.portal}\n sync=${ifDefined(!this.noWidthSync ? 'width' : undefined)}\n auto-size=\"vertical\"\n auto-size-padding=\"10\"\n >\n ${this.renderTrigger(hasClearIcon)}\n ${this.showListbox ? this.renderListbox() : html``}\n </nile-popup>\n\n ${hasHelpText ? html`<nile-form-help-text>${this.helpText}</nile-form-help-text>` : html``}\n ${hasErrorMessage ? html`<nile-form-error-message>${this.errorMessage}</nile-form-error-message>` : html``}\n </div>\n </div>\n `;\n }\n\n private renderTrigger(hasClearIcon: boolean): TemplateResult {\n const hasTags = this.multiple && this.selectedOptions.length > 0;\n const inputPlaceholder = hasTags ? '' : this.placeholder;\n\n return html`\n <div\n part=\"combobox\"\n class=\"combobox__trigger\"\n slot=\"anchor\"\n @mousedown=${this.onTriggerMouseDown}\n >\n <slot part=\"prefix\" name=\"prefix\" class=\"combobox__prefix\"></slot>\n\n <div class=${classMap({\n 'combobox__scroll-area': true,\n 'combobox__scroll-area--single-line': this.multiple && this.tagLayout === 'single-line',\n 'combobox__scroll-area--wrap': this.multiple && (this.tagLayout === 'wrap' || this.tagLayout === 'fixed-height'),\n })}>\n ${hasTags ? this.renderInlineTags() : html``}\n\n <div class=\"combobox__input-wrapper\">\n <input\n part=\"input\"\n class=\"combobox__input\"\n type=\"text\"\n placeholder=${inputPlaceholder}\n .disabled=${this.disabled}\n .value=${this.searchValue}\n autocomplete=\"off\"\n spellcheck=\"false\"\n autocapitalize=\"off\"\n aria-controls=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-haspopup=\"listbox\"\n aria-labelledby=\"label\"\n aria-disabled=${this.disabled ? 'true' : 'false'}\n aria-describedby=\"help-text\"\n aria-activedescendant=${this.keyboardActiveIndex >= 0 ? `option-${this.keyboardActiveIndex}` : ''}\n role=\"combobox\"\n tabindex=\"0\"\n @input=${this.onInputHandler}\n @keydown=${this.onInputKeyDown}\n @focus=${this.onFocusIn}\n @blur=${this.onFocusOut}\n @change=${this.onInputChange}\n />\n </div>\n </div>\n\n <input\n class=\"combobox__value-input\"\n type=\"text\"\n ?disabled=${this.disabled}\n ?required=${this.required}\n .value=${Array.isArray(this.value) ? this.value.join(', ') : this.value}\n tabindex=\"-1\"\n aria-hidden=\"true\"\n @focus=${() => this.focus()}\n @invalid=${this.handleInvalid}\n />\n\n <div class=\"combobox__actions\">\n ${hasClearIcon ? this.renderClearButton() : html``}\n\n <slot name=\"expand-icon\" part=\"expand-icon\" class=\"combobox__expand-icon\">\n <nile-icon\n library=\"system\"\n name=\"var(--nile-icon-arrow-down, var(--ng-icon-chevron-down))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"\n ></nile-icon>\n </slot>\n </div>\n </div>\n `;\n }\n\n private renderInlineTags(): TemplateResult[] {\n const tags: TemplateResult[] = [];\n\n this.selectedOptions.forEach((option, index) => {\n if (this.maxTagsVisible > 0 && index >= this.maxTagsVisible) {\n if (index === this.maxTagsVisible) {\n tags.push(html`<span class=\"combobox__tags-count\">+${this.selectedOptions.length - this.maxTagsVisible} More</span>`);\n }\n return;\n }\n tags.push(html`\n <nile-tag\n part=\"tag\"\n exportparts=\"base:tag__base, content:tag__content, remove-button:tag__remove-button\"\n ?pill=${this.pill}\n size=${this.size}\n removable\n ?disabled=${this.disabled}\n @nile-remove=${(e: NileRemoveEvent) => { e.stopPropagation(); this.removeTag(option); }}\n >\n ${option.getTextLabel()}\n </nile-tag>\n `);\n });\n\n return tags;\n }\n\n private renderClearButton(): TemplateResult {\n return html`\n <button\n part=\"clear-button\"\n class=\"combobox__clear\"\n type=\"button\"\n aria-label=\"Clear\"\n @mousedown=${(e: MouseEvent) => e.stopPropagation()}\n @click=${this.onClearClick}\n tabindex=\"-1\"\n >\n <slot name=\"clear-icon\">\n <nile-icon\n name=\"var(--nile-icon-close, var(--ng-icon-x-close))\"\n size=\"var(--nile-height-14px, var(--ng-height-16px))\"\n method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\"\n library=\"system\"\n color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\"\n ></nile-icon>\n </slot>\n </button>\n `;\n }\n\n private renderStickyHeaderOverlay(): TemplateResult {\n if (!this.stickyGroupHeader) return html``;\n const idx = this.stickyHeaderIndex;\n if (idx < 0 || idx >= this.filteredRows.length) return html``;\n const row = this.filteredRows[idx];\n if (row.kind !== 'header') return html``;\n return html`\n <div class=\"combobox__group-sticky-overlay\">\n ${ComboboxRenderer.renderGroupHeader(row)}\n </div>\n `;\n }\n\n private renderListbox(): TemplateResult {\n const showAddOption = this.allowCustomValue\n && this.searchValue.trim()\n && !this.filteredData.some((item: any) => {\n const v = this.getItemValue(item);\n return String(v).toLowerCase() === this.searchValue.trim().toLowerCase();\n })\n && !this.filteredData.some((item: any) => {\n const t = this.getDisplayText(item);\n return t.toLowerCase() === this.searchValue.trim().toLowerCase();\n });\n\n if (this.isHorizontalGrid) {\n return this.renderHorizontalListbox(!!showAddOption);\n }\n\n const isGrid = this.gridColumns > 1 || this.isBidirectionalGrid;\n const grouped = this.hasGroupedData && !isGrid;\n const useVirtual = grouped\n ? this.filteredRows.length >= 5\n : ComboboxRenderer.shouldUseVirtualizer(this.filteredData, this.gridColumns);\n const virtualizer = this.virtualizerCtrl.getVirtualizer();\n const virtualItems = (useVirtual || isGrid) ? virtualizer.getVirtualItems() : [];\n const totalSize = (useVirtual || isGrid) ? virtualizer.getTotalSize() : 0;\n\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"combobox__listbox ${this.isBidirectionalGrid ? 'combobox__listbox--bidirectional' : ''} ${this.portal ? 'combobox__portal-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.onOptionClick}\n style=\"${this.portal ? 'display: none;' : ''}${this.isBidirectionalGrid ? `max-height:${this.gridRows * 38 + 16}px;` : ''}\"\n >\n ${this.renderSelectAll()}\n <div\n class=\"combobox__options-scroll\"\n @scroll=${this.onScroll}\n ${ref(this.scrollElementRef)}\n >\n ${this.renderLoader()}\n ${this.showNoResults && !this.optionsLoading && !this.loading\n ? this.renderEmptyState()\n : isGrid\n ? ComboboxRenderer.renderVirtualizedGrid(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.gridColumns,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n this.isBidirectionalGrid ? this.gridColumnWidth : undefined,\n )\n : grouped\n ? (useVirtual\n ? ComboboxRenderer.renderRowsVirtualized(\n virtualItems,\n totalSize,\n this.filteredRows,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.renderStickyHeaderOverlay(),\n this.stickyGroupHeader ? this.stickyHeaderIndex : -1,\n )\n : ComboboxRenderer.renderRowsPlain(\n this.filteredRows,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.onScroll.bind(this),\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.hasActiveFilter ? this.noResultsSubtitle : undefined,\n ))\n : useVirtual\n ? ComboboxRenderer.renderVirtualizedOptions(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n : ComboboxRenderer.renderPlainOptions(\n this.filteredData,\n this.value,\n this.multiple,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.showNoResults,\n this.noResultsMessage,\n this.optionsLoading || this.loading,\n this.onScroll.bind(this),\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n undefined,\n this.hasActiveFilter ? this.noResultsSubtitle : undefined,\n )\n }\n ${showAddOption ? html`\n <div @mouseup=${(e: MouseEvent) => { e.stopPropagation(); this.addCustomValue(this.searchValue.trim()); }}>\n ${ComboboxRenderer.renderAddCustomOption(this.searchValue.trim(), this.multiple)}\n </div>\n ` : ''}\n </div>\n ${this.multiple && this.showFooter && !this.selectAllEnabled ? this.renderFooter() : ''}\n </div>\n `;\n }\n\n private renderHorizontalListbox(showAddOption: boolean): TemplateResult {\n const hVirtualizer = this.hVirtualizerCtrl.getVirtualizer();\n const virtualItems = hVirtualizer.getVirtualItems();\n const totalSize = hVirtualizer.getTotalSize();\n\n return html`\n <div\n id=\"listbox\"\n role=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n aria-labelledby=\"label\"\n part=\"listbox\"\n class=\"combobox__listbox combobox__listbox--horizontal ${this.portal ? 'combobox__portal-hidden' : ''}\"\n tabindex=\"-1\"\n @mouseup=${this.onOptionClick}\n style=${this.portal ? 'display: none;' : ''}\n ${ref(this.hScrollElementRef)}\n >\n ${this.renderLoader()}\n ${this.renderSelectAll()}\n ${this.showNoResults && !this.optionsLoading && !this.loading\n ? this.renderEmptyState()\n : ComboboxRenderer.renderHorizontalGrid(\n virtualItems,\n totalSize,\n this.filteredData,\n this.value,\n this.multiple,\n this.gridRows,\n this.gridColumnWidth,\n this.getDisplayText.bind(this),\n this.getItemValue.bind(this),\n this.optionsLoading || this.loading,\n this.allowHtmlLabel,\n this.renderItemConfig?.getDescription ? this.getItemDescription.bind(this) : undefined,\n this.renderItemConfig?.getPrefix ? this.getItemPrefix.bind(this) : undefined,\n this.renderItemConfig?.getSuffix ? this.getItemSuffix.bind(this) : undefined,\n )\n }\n ${showAddOption ? html`\n <div @mouseup=${(e: MouseEvent) => { e.stopPropagation(); this.addCustomValue(this.searchValue.trim()); }}>\n ${ComboboxRenderer.renderAddCustomOption(this.searchValue.trim(), this.multiple)}\n </div>\n ` : ''}\n ${this.multiple && this.showFooter && !this.selectAllEnabled ? this.renderFooter() : ''}\n </div>\n `;\n }\n\n private renderLoader(): TemplateResult {\n if (this.loading) {\n return html`<span class=\"combobox__loader--center\"><nile-loader size=\"sm\"></nile-loader></span>`;\n }\n if (this.optionsLoading) {\n return html`<span class=\"combobox__loader\"><nile-icon class=\"combobox__loader--icon\" name=\"button-loading-blue\"></nile-icon></span>`;\n }\n return html``;\n }\n\n private renderSelectAll(): TemplateResult {\n if (!this.multiple || !this.selectAllEnabled) return html``;\n const disabled = this.showNoResults || this.optionsLoading || this.loading;\n const anySelected = this.selectAllChecked || this.selectAllIndeterminate;\n const label = anySelected ? 'Deselect all' : 'Select all';\n const showToggleDisabled = this.selectedOptions.length === 0 || this.showNoResults;\n const iconColor = showToggleDisabled\n ? 'var(--nile-colors-primary-500, var(--ng-colors-fg-quaternary-400))'\n : 'var(--nile-colors-primary-600, var(--ng-colors-fg-brand-secondary-600))';\n\n return html`\n <div\n part=\"top-actions\"\n class=\"combobox__top-actions ${disabled ? 'combobox__top-actions--disabled' : ''}\"\n @mousedown=${(e: MouseEvent) => e.preventDefault()}\n >\n <div\n class=\"combobox__select-all\"\n @click=${this.handleSelectAllToggle}\n >\n <nile-checkbox\n ?checked=${this.selectAllChecked}\n ?indeterminate=${this.selectAllIndeterminate}\n ?disabled=${disabled}\n >\n ${label}\n </nile-checkbox>\n </div>\n\n <button\n part=\"show-toggle\"\n class=\"combobox__show-toggle\"\n type=\"button\"\n ?disabled=${showToggleDisabled}\n @click=${this.toggleShowSelected}\n >\n <nile-icon\n library=\"system\"\n name=\"filter\"\n color=${iconColor}\n ></nile-icon>\n ${this.showSelectedOnly ? 'Show all' : 'Selected'}\n </button>\n </div>\n `;\n }\n\n private renderFooter(): TemplateResult {\n return html`\n <div\n part=\"footer\"\n class=\"combobox__footer ${this.loading ? 'loading' : ''}\"\n @click=${this.onFooterClick}\n >\n <span @click=${this.toggleShowSelected} style=\"cursor: pointer;\">\n <nile-checkbox\n ?disabled=${this.selectedOptions.length === 0}\n ?checked=${this.showSelectedOnly}\n >\n Show Selected\n </nile-checkbox>\n </span>\n ${this.selectedOptions.length > 0\n ? html`<span class=\"combobox__footer-clear\" @click=${this.clearAll}>Clear All</span>`\n : ''}\n </div>\n `;\n }\n}\n\n// ── Default animations ──\n\nsetDefaultAnimation('combobox.show', {\n keyframes: [\n { opacity: 0, scale: 0.9 },\n { opacity: 1, scale: 1 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nsetDefaultAnimation('combobox.hide', {\n keyframes: [\n { opacity: 1, scale: 1 },\n { opacity: 0, scale: 0.9 },\n ],\n options: { duration: 100, easing: 'ease' },\n});\n\nexport default NileCombobox;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-combobox': NileCombobox;\n }\n}\n"],"names":["NileCombobox","_y","z","this","formControlController","FormControlController","assumeInteractionOn","hasSlotController","HasSlotController","portalManager","ComboboxPortalManager","searchManager","ComboboxSearchManager","scrollElementRef","createRef","virtualizerCtrl","VirtualizerController","getScrollElement","value","count","estimateSize","overscan","hScrollElementRef","hVirtualizerCtrl","horizontal","scrolling","keyboardActiveIndex","hasFocus","displayLabel","selectedOptions","filteredData","filteredRows","originalData","showNoResults","showListbox","searchValue","showSelectedOnly","selectAllChecked","selectAllIndeterminate","stickyHeaderIndex","name","data","defaultValue","size","placeholder","multiple","label","required","disabled","open","clearable","loading","optionsLoading","disableLocalSearch","allowCustomValue","acceptUserInput","addToSuggestions","strict","maxTagsVisible","tagLayout","showFooter","selectAllEnabled","stickyGroupHeader","portal","hoist","placement","form","helpText","errorMessage","warning","error","success","filled","pill","noResultsMessage","noResultsSubtitle","noDataMessage","autoCompleteOptions","debounceMs","allowHtmlLabel","enableVisibilityEffect","enableTabClose","noWidthSync","gridColumns","gridRows","gridColumnWidth","lastVirtualizerGrouped","_this","_inherits","_createClass","key","get","validity","_this$valueInput","valueInput","validationMessage","_this$valueInput$vali","_this$valueInput2","connectedCallback","super","setupBoundHandlers","emit","updateComplete","then","length","syncSelection","disconnectedCallback","removeOpenListeners","visibilityManager","cleanup","cancelDebounce","scrollTimeout","clearTimeout","undefined","cleanupPortal","firstUpdated","_changed","VisibilityManager","host","target","combobox","isOpen","onAnchorOutOfView","hide","visible","reason","onDocumentHidden","event","detail","updated","changedProperties","has","updateVirtualizerCount","isHorizontalGrid","hasGroupedData","base","hasGroups","updateStickyHeader","scrollTop","offset","stuck","i","row","kind","pruneTreeBySelection","items","selectedSet","out","_iterator","_createForOfIteratorHelper","_step","s","n","done","item","_typeof","type","Array","isArray","options","kept","push","_objectSpread","String","getItemValue","err","e","f","renderEmptyState","hasActiveFilter","ComboboxRenderer","renderNoResults","renderNoData","isBidirectionalGrid","Math","ceil","max","_this4","hVirtualizer","getVirtualizer","colCount","virtualColumnCount","setOptions","measure","virtualizer","virtualRowCount","grouped","countChanged","modeChanged","index","_this4$filteredRows$i","getDisplayText","_this$renderItemConfi","_i$toString","renderItemConfig","toString","_this$renderItemConfi2","_i$value","getValue","getSearchText","_this$renderItemConfi3","getItemDescription","_ref","_this$renderItemConfi4","_this$renderItemConfi5","getDescription","description","getItemPrefix","_ref2","_this$renderItemConfi7","_this$renderItemConfi8","_this$renderItemConfi9","getPrefix","prefix","getItemSuffix","_ref3","_this$renderItemConfi10","_this$renderItemConfi11","getSuffix","suffix","_this$renderItemConfi13","baseData","getOptionRows","flattenRows","map","r","ComboboxSelectionManager","createOptionsFromValues","bind","_this$selectedOptions","_this$selectedOptions2","getTextLabel","updateValidity","updateSelectAllState","getSelectableData","filter","selectedValues","Set","selectedInView","reduce","handleSelectAllToggle","stopPropagation","preventDefault","shouldUnselectAll","current","_toConsumableArray","inViewValues","inViewSet","next","v","merged","forEach","add","from","filterOptions","action","handleDocumentFocusIn","path","composedPath","hitSelf","includes","hitPopup","popup","hitPortal","portalContainerElement","handleDocumentKeyDown","onGlobalKeyDown","handleDocumentMouseDown","handleWindowError","message","handleWindowResize","updatePosition","handleWindowScroll","addOpenListeners","document","addEventListener","window","removeEventListener","onInputKeyDown","moveActiveOption","show","selectActiveOption","trim","addCustomValue","setActiveOption","last","removeTag","_this$inputElement","inputElement","focus","preventScroll","getVisibleOptions","root","shadowRoot","querySelectorAll","delta","opt","el","setAttribute","classList","scrollIntoView","_n$scrollIntoView","block","removeAttribute","remove","handleOptionSelection","onInputChange","onInputHandler","debounceSearch","q","query","search","preserveScroll","_this9","_this$scrollElementRe2","_this$scrollElementRe3","tree","_B","filterRows","rows","st","source","_this$searchManager$f","filteredItems","resetMeasuredHeight","resetScrollPosition","requestUpdate","onFocusIn","_this10$inputElement","select","onFocusOut","match","find","toLowerCase","val","onTriggerMouseDown","_this$inputElement2","some","Element","tagName","onOptionClick","option","optionValue","oldValue","toggleMultiValue","JSON","stringify","_this13","allItems","_this$renderItemConfi14","newItem","onClearClick","removeValue","removedtagvalue","onFooterClick","toggleShowSelected","clearAll","onScroll","_this14","scrollLeft","setTimeout","floor","scrollHeight","offsetHeight","isAtBottom","_show","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context2","prev","abrupt","waitForEvent","stop","_callee2","_callee2$","_context3","_callee3","_this$visibilityManag2","_this$visibilityManag3","_callee3$","_context4","setup","doOpen","setupPortal","doClose","handleOpenChange","_callee4","_this$popup","_this15","_this$popup2","_i11","_i12","_d","o","_callee4$","_context5","stopAnimations","style","visibility","active","scrollEl","Promise","resolve","attempts","check","_i$offsetWidth","_i$offsetHeight","offsetWidth","requestAnimationFrame","scrollOffset","getAnimation","dir","keyframes","animateTo","_callee5","_this$popup3","_d2","_callee5$","_context6","handleDisabledChange","handleValueChange","handleDataChange","handleAutoCompleteOptionsChange","handleSelectAllConfigChange","handlePortalChange","checkValidity","getForm","reportValidity","setCustomValidity","blur","handleInvalid","setValidity","emitInvalidEvent","_resetScrollPosition","_callee6","_callee6$","_context7","render","hasLabelSlot","test","hasLabel","hasValue","hasClearIcon","hasHelpText","hasErrorMessage","isEmpty","html","_templateObject","_taggedTemplateLiteral","classMap","_this17$inputElement","ifDefined","renderTrigger","renderListbox","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","hasTags","inputPlaceholder","_templateObject7","renderInlineTags","_templateObject8","concat","join","renderClearButton","_templateObject9","tags","_templateObject10","_templateObject11","_templateObject12","renderStickyHeaderOverlay","_templateObject13","idx","_templateObject14","_templateObject15","_templateObject16","renderGroupHeader","_this20","_this$renderItemConfi15","_this$renderItemConfi16","_this$renderItemConfi17","_this$renderItemConfi18","_this$renderItemConfi19","_this$renderItemConfi20","_this$renderItemConfi21","_this$renderItemConfi22","_this$renderItemConfi23","_this$renderItemConfi24","_this$renderItemConfi25","_this$renderItemConfi26","_this$renderItemConfi27","_this$renderItemConfi28","_this$renderItemConfi29","showAddOption","renderHorizontalListbox","isGrid","useVirtual","shouldUseVirtualizer","virtualItems","getVirtualItems","totalSize","getTotalSize","_templateObject17","renderSelectAll","ref","renderLoader","renderVirtualizedGrid","renderRowsVirtualized","renderRowsPlain","renderVirtualizedOptions","renderPlainOptions","_templateObject18","renderAddCustomOption","renderFooter","_this$renderItemConfi30","_this$renderItemConfi31","_this$renderItemConfi32","_this21","_templateObject19","renderHorizontalGrid","_templateObject20","_templateObject21","_templateObject22","_templateObject23","_templateObject24","showToggleDisabled","iconColor","_templateObject25","_templateObject26","_templateObject27","NileElement","styles","__decorate","prototype","state","property","converter","fromAttribute","split","toAttribute","Boolean","reflect","attribute","Number","parse","_unused","watch","waitUntilFirstUpdate","_export","customElement","setDefaultAnimation","opacity","scale","duration","easing"],"mappings":"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"}
|