novo-elements 11.2.1 → 11.3.0-next.2
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/elements/data-table/interfaces.d.ts +1 -0
- package/elements/query-builder/condition-builder/condition-builder.component.d.ts +1 -0
- package/elements/query-builder/condition-definitions/boolean-condition.definition.d.ts +1 -0
- package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
- package/fesm2022/novo-elements-elements-query-builder.mjs +51 -15
- package/fesm2022/novo-elements-elements-query-builder.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"novo-elements-elements-data-table.mjs","sources":["../../../projects/novo-elements/src/elements/data-table/data-table.token.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-checkbox-header-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-expand-header-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/services/data-table-filter-utils.ts","../../../projects/novo-elements/src/elements/data-table/state/data-table-state.service.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-direction.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-button.animations.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-button.component.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-button.component.html","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-filter.directive.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-header-cell-filter-header.component.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-header-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-header-cell.directive.ts","../../../projects/novo-elements/src/elements/data-table/cells/data-table-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cells/data-table-checkbox-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cells/data-table-expand-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table-clear-button.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table-expand.directive.ts","../../../projects/novo-elements/src/elements/data-table/data-table.source.ts","../../../projects/novo-elements/src/elements/data-table/services/static-data-table.service.ts","../../../projects/novo-elements/src/elements/data-table/rows/data-table-header-row.component.ts","../../../projects/novo-elements/src/elements/data-table/rows/data-table-row.component.ts","../../../projects/novo-elements/src/elements/data-table/pagination/data-table-pagination.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table.pipes.ts","../../../projects/novo-elements/src/elements/data-table/data-table.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table.component.html","../../../projects/novo-elements/src/elements/data-table/data-table.module.ts","../../../projects/novo-elements/src/elements/data-table/interfaces.ts","../../../projects/novo-elements/src/elements/data-table/services/remote-data-table.service.ts","../../../projects/novo-elements/src/elements/data-table/novo-elements-elements-data-table.ts"],"sourcesContent":["import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DataTableSource } from './data-table.source';\nimport { DataTableState } from './state';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface NovoDataTableRef<T = any> {\n isExpanded(row: T): boolean;\n expandRow(row: T): void;\n isSelected(row: T): boolean;\n selectRow(row: T, evt: string): void;\n selectRows(selected: boolean): void;\n expandRows(expanded: boolean): void;\n allCurrentRowsSelected(): boolean;\n allCurrentRowsExpanded(): boolean;\n allSelected: EventEmitter<any>;\n canSelectAll: boolean;\n allMatchingSelected: boolean;\n state: DataTableState<T>;\n dataSource: DataTableSource<T>;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const NOVO_DATA_TABLE_REF = new InjectionToken<NovoDataTableRef>('NOVO_DATA_TABLE_REF');\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoToastService } from 'novo-elements/elements/toast';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-checkbox-header-cell',\n template: `\n <div class=\"data-table-checkbox\" (click)=\"onClick()\">\n <input type=\"checkbox\" [checked]=\"checked\" />\n <label>\n <i [class.bhi-checkbox-empty]=\"!checked\" [class.bhi-checkbox-filled]=\"checked\"></i>\n </label>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCheckboxHeaderCell<T> extends CdkHeaderCell implements OnDestroy {\n @HostBinding('attr.role')\n public role = 'columnheader';\n @Input()\n public maxSelected: number = undefined;\n\n public checked: boolean = false;\n private selectionSubscription: Subscription;\n private paginationSubscription: Subscription;\n private resetSubscription: Subscription;\n\n get isAtLimit(): boolean {\n return (\n this.maxSelected && this.dataTable.state.selectedRows.size + this.dataTable.dataSource.data.length > this.maxSelected && !this.checked\n );\n }\n\n constructor(\n columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n private toaster: NovoToastService,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-checkbox-column-header-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-checkbox-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-checkbox-header-cell');\n\n this.selectionSubscription = this.dataTable.state.selectionSource.subscribe(() => {\n this.checked = this.dataTable.allCurrentRowsSelected() || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n if (this.dataTable?.canSelectAll) {\n this.selectAllChanged();\n }\n this.ref.markForCheck();\n });\n this.paginationSubscription = this.dataTable.state.paginationSource.subscribe((event: { isPageSizeChange: boolean }) => {\n if (event.isPageSizeChange) {\n this.checked = false;\n if (this.dataTable?.canSelectAll) {\n this.selectAllChanged();\n }\n this.dataTable.selectRows(false);\n this.dataTable.state.checkRetainment('pageSize');\n this.dataTable.state.reset(false, true);\n } else {\n this.checked = this.dataTable.allCurrentRowsSelected() || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n if (this.dataTable?.canSelectAll) {\n this.selectAllChanged();\n }\n }\n this.ref.markForCheck();\n });\n this.resetSubscription = this.dataTable.state.resetSource.subscribe(() => {\n this.checked = false;\n if (this.dataTable?.canSelectAll) {\n this.resetAllMatchingSelected();\n }\n this.ref.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.paginationSubscription) {\n this.paginationSubscription.unsubscribe();\n }\n if (this.resetSubscription) {\n this.resetSubscription.unsubscribe();\n }\n }\n\n public onClick(): void {\n if (this.isAtLimit) {\n this.toaster.alert({\n theme: 'danger',\n position: 'fixedTop',\n message: 'Error, more than 500 items are not able to be selected at one time',\n icon: 'caution',\n });\n } else {\n this.dataTable.selectRows(!this.checked);\n }\n if (this.dataTable?.canSelectAll) {\n if (this.checked) {\n this.resetAllMatchingSelected();\n } else {\n this.selectAllChanged();\n }\n }\n }\n\n private resetAllMatchingSelected(): void {\n this.dataTable.state?.allMatchingSelectedSource?.next(false);\n this.dataTable.state?.onSelectionChange();\n }\n\n public selectAllChanged(): void {\n const allSelectedEvent = {\n allSelected: this.checked,\n selectedCount: this.dataTable?.state?.selected?.length,\n allMatchingSelected: this.dataTable?.allMatchingSelected,\n };\n this.dataTable.allSelected.emit(allSelectedEvent);\n }\n}\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-expand-header-cell',\n template: ' <i class=\"bhi-next data-table-icon\" novo-data-table-expander=\"true\" (click)=\"expandAll()\" [class.expanded]=\"expanded\"></i> ',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableExpandHeaderCell<T> extends CdkHeaderCell implements OnDestroy {\n @HostBinding('attr.role')\n public role = 'columnheader';\n\n public expanded: boolean = false;\n private expandSubscription: Subscription;\n\n constructor(\n columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-expand-column-header-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-expand-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-expand-header-cell');\n\n this.expandSubscription = this.dataTable.state.expandSource.subscribe(() => {\n this.expanded = this.dataTable.allCurrentRowsExpanded();\n this.ref.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n if (this.expandSubscription) {\n this.expandSubscription.unsubscribe();\n }\n }\n\n public expandAll(): void {\n this.dataTable.expandRows(!this.expanded);\n }\n}\n","import { endOfToday, startOfToday } from 'date-fns';\nimport { DateUtil } from 'novo-elements/utils';\n\nexport class NovoDataTableFilterUtils {\n static constructFilter(filter?: any, type?: any, multiSelect?: boolean) {\n let actualFilter = filter;\n if (filter) {\n if (type && type === 'date') {\n if (filter.startDate && filter.endDate) {\n actualFilter = {\n min: DateUtil.startOfDay(filter.startDate.date),\n max: DateUtil.startOfDay(DateUtil.addDays(DateUtil.startOfDay(filter.endDate.date), 1)),\n };\n } else {\n actualFilter = {\n min: filter.min ? DateUtil.addDays(startOfToday(), filter.min) : startOfToday(),\n max: filter.max ? DateUtil.addDays(endOfToday(), filter.max) : endOfToday(),\n };\n }\n }\n\n if (multiSelect && Array.isArray(filter)) {\n actualFilter = filter.map((filterItem) => {\n if (filterItem && filterItem.hasOwnProperty('value')) {\n return filterItem.value;\n }\n return filterItem;\n });\n } else if (actualFilter && actualFilter.hasOwnProperty('value')) {\n actualFilter = filter.value;\n }\n }\n return actualFilter;\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { Helpers } from 'novo-elements/utils';\nimport { Subject } from 'rxjs';\nimport {\n AdaptiveCriteria,\n AppliedSearchType,\n IDataTableChangeEvent,\n IDataTableFilter,\n IDataTablePreferences,\n IDataTableSelectionOption,\n IDataTableSort,\n} from '../interfaces';\nimport { NovoDataTableFilterUtils } from '../services/data-table-filter-utils';\n\n@Injectable()\nexport class DataTableState<T> {\n public selectionSource = new Subject<void>();\n public paginationSource = new Subject();\n public sortFilterSource = new Subject();\n public resetSource = new Subject<void>();\n public expandSource = new Subject();\n public allMatchingSelectedSource = new Subject();\n public dataLoaded = new Subject<void>();\n public dataLoadingSource = new Subject();\n\n sort: IDataTableSort = undefined;\n filter: IDataTableFilter | IDataTableFilter[] = undefined;\n where: { query: string; criteria?: AdaptiveCriteria; form: any } = undefined;\n page: number = 0;\n pageSize: number = undefined;\n globalSearch: string = undefined;\n selectedRows: Map<string, T> = new Map<string, T>();\n expandedRows: Set<string> = new Set<string>();\n outsideFilter: any;\n isForceRefresh: boolean = false;\n selectionOptions: IDataTableSelectionOption[];\n updates: EventEmitter<IDataTableChangeEvent> = new EventEmitter<IDataTableChangeEvent>();\n retainSelected: boolean = false;\n savedSearchName: string = undefined;\n appliedSearchType: AppliedSearchType;\n displayedColumns: string[] = undefined;\n\n get userFiltered(): boolean {\n return !!(this.filter || this.sort || this.globalSearch || this.outsideFilter || this.where);\n }\n\n get userFilteredInternal(): boolean {\n return !!(this.filter || this.sort || this.globalSearch || this.where);\n }\n\n get selected(): T[] {\n return Array.from(this.selectedRows.values());\n }\n\n public reset(fireUpdate: boolean = true, persistUserFilters?): void {\n this.setState({} as IDataTablePreferences, fireUpdate, persistUserFilters)\n }\n\n public clearSort(fireUpdate: boolean = true): void {\n this.sort = undefined;\n this.page = 0;\n this.checkRetainment('sort');\n this.reset(fireUpdate, true);\n this.onSortFilterChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public clearFilter(fireUpdate: boolean = true): void {\n this.filter = undefined;\n this.globalSearch = undefined;\n this.page = 0;\n this.checkRetainment('filter');\n this.reset(fireUpdate, true);\n this.onSortFilterChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public clearQuery(fireUpdate: boolean = true): void {\n this.where = undefined;\n this.page = 0;\n this.checkRetainment('where');\n this.reset(fireUpdate, true);\n this.onSortFilterChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public clearSelected(fireUpdate: boolean = true): void {\n this.allMatchingSelectedSource.next(false);\n this.globalSearch = undefined;\n this.page = 0;\n this.reset(fireUpdate, true);\n this.onSelectionChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public onSelectionChange(): void {\n this.selectionSource.next();\n }\n\n public onExpandChange(targetId?: number): void {\n this.expandSource.next(targetId);\n }\n\n public onPaginationChange(isPageSizeChange: boolean, pageSize: number): void {\n this.checkRetainment('page');\n this.paginationSource.next({ isPageSizeChange, pageSize });\n }\n\n public onSortFilterChange(): void {\n this.checkRetainment('sort');\n this.checkRetainment('filter');\n this.checkRetainment('where');\n this.sortFilterSource.next({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n savedSearchName: this.savedSearchName,\n appliedSearchType: this.appliedSearchType,\n });\n }\n\n public setInitialSortFilter(preferences): void {\n if (preferences) {\n if (preferences.where) {\n this.where = preferences.where;\n }\n\n if (preferences.sort) {\n this.sort = preferences.sort;\n }\n\n if (preferences.filter) {\n this.filter = this.transformFilters(preferences.filter);\n }\n\n if (preferences.globalSearch) {\n this.globalSearch = preferences.globalSearch;\n }\n\n if (preferences.savedSearchName) {\n this.savedSearchName = preferences.savedSearchName;\n }\n\n if (preferences.appliedSearchType) {\n this.appliedSearchType = preferences.appliedSearchType;\n }\n }\n }\n\n public setState(preferences: IDataTablePreferences, fireUpdate = true, persistUserFilters = false): void {\n if (!persistUserFilters) {\n this.where = preferences.where;\n this.sort = preferences.sort;\n this.filter = preferences.filter ? this.transformFilters(preferences.filter) : undefined;\n this.globalSearch = preferences.globalSearch;\n this.savedSearchName = preferences.savedSearchName;\n if (preferences.displayedColumns?.length) {\n this.displayedColumns = preferences.displayedColumns;\n }\n this.appliedSearchType = preferences.appliedSearchType;\n }\n\n this.page = 0;\n if (!this.retainSelected) {\n this.selectedRows.clear();\n this.resetSource.next();\n }\n\n this.onSortFilterChange();\n this.retainSelected = false;\n\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n savedSearchName: this.savedSearchName,\n displayedColumns: this.displayedColumns,\n appliedSearchType: this.appliedSearchType,\n });\n }\n }\n\n public checkRetainment(caller: string, allMatchingSelected = false): void {\n this.retainSelected = this.selectionOptions?.some((option) => option.label === caller) || this.retainSelected || allMatchingSelected;\n }\n\n private transformFilters(filters) {\n const filterArray = Helpers.convertToArray(filters);\n filterArray.forEach((filter) => {\n filter.value =\n filter.selectedOption && filter.type\n ? NovoDataTableFilterUtils.constructFilter(filter.selectedOption, filter.type)\n : filter.value;\n });\n return filterArray;\n }\n}\n","export enum SortDirection {\n ASC = 'ascending',\n DESC = 'descending',\n NONE = 'none',\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { SortDirection } from './sort-direction';\n\nconst activeStyle = { opacity: 1, top: 0 };\nconst inactiveStyle = { opacity: 0 };\n\n/** Animation that moves the sort indicator. */\nexport const sortAscAnim: AnimationTriggerMetadata = trigger('sortAsc', [\n // ...\n state(SortDirection.ASC, style(activeStyle)),\n state(SortDirection.DESC, style(inactiveStyle)),\n state(SortDirection.NONE, style(inactiveStyle)),\n transition('* => ascending', [animate('1s')]),\n transition('ascending => *', [animate('0.5s')]),\n]);\n\nexport const sortDescAnim: AnimationTriggerMetadata = trigger('sortDesc', [\n // ...\n state(SortDirection.ASC, style(inactiveStyle)),\n state(SortDirection.DESC, style(activeStyle)),\n state(SortDirection.NONE, style(inactiveStyle)),\n transition('* => descending', [animate('1s')]),\n transition('descending => *', [animate('0.5s')]),\n]);\n\nexport const sortNoneAnim: AnimationTriggerMetadata = trigger('sortNone', [\n // ...\n state(SortDirection.ASC, style(inactiveStyle)),\n state(SortDirection.DESC, style(inactiveStyle)),\n state(SortDirection.NONE, style(activeStyle)),\n transition('* => none', [animate('1s')]),\n transition('none => *', [animate('0.5s')]),\n]);\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DataTableState } from '../state/data-table-state.service';\nimport { sortAscAnim, sortDescAnim, sortNoneAnim } from './sort-button.animations';\nimport { SortDirection } from './sort-direction';\n@Component({\n selector: 'novo-sort-button',\n styleUrls: ['./sort-button.component.scss'],\n templateUrl: './sort-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [sortAscAnim, sortDescAnim, sortNoneAnim],\n standalone: false,\n})\nexport class NovoDataTableSortButton<T> {\n @Output() sortChange: EventEmitter<SortDirection> = new EventEmitter();\n public SortDirection = SortDirection;\n\n @Input()\n public get value(): SortDirection {\n return this._value;\n }\n public set value(value: SortDirection) {\n this._value = value;\n }\n\n public get isActive() {\n return this.value !== SortDirection.NONE;\n }\n\n private _value: SortDirection = SortDirection.NONE;\n\n constructor(public state: DataTableState<T>, private ref: ChangeDetectorRef, public labels: NovoLabelService) {}\n\n changeSort(dir: SortDirection): void {\n this.value = dir;\n this.sortChange.emit(dir);\n }\n\n clearSort(): void {\n this.state.clearSort();\n this.sortChange.emit(SortDirection.NONE);\n }\n}\n","<novo-icon\n class=\"novo-sort-asc-icon\"\n [class.sort-active]=\"isActive\"\n [class.sort-hidden]=\"value !== SortDirection.ASC\"\n [@sortAsc]=\"value\"\n (click)=\"changeSort(SortDirection.DESC)\">arrow-up</novo-icon>\n<novo-icon\n class=\"novo-sort-desc-icon\"\n [class.sort-active]=\"isActive\"\n [class.sort-hidden]=\"value !== SortDirection.DESC\"\n [@sortDesc]=\"value\"\n (click)=\"changeSort(SortDirection.NONE)\">arrow-down</novo-icon>\n<novo-icon\n class=\"novo-sortable-icon\"\n [class.sort-active]=\"isActive\"\n [class.sort-hidden]=\"value !== SortDirection.NONE\"\n [@sortNone]=\"value\"\n (click)=\"changeSort(SortDirection.ASC)\">sortable</novo-icon>","import { Directive } from '@angular/core';\nimport { Helpers } from 'novo-elements/utils';\nimport { DataTableState } from '../state/data-table-state.service';\n\n@Directive({\n selector: '[novoDataTableSortFilter]',\n standalone: false,\n})\nexport class NovoDataTableSortFilter<T> {\n constructor(private state: DataTableState<T>) {}\n\n public filter(\n id: string,\n type: string,\n value: any,\n transform: Function,\n allowMultipleFilters: boolean = false,\n selectedOption?: Object,\n ): void {\n let filter;\n\n if (allowMultipleFilters) {\n filter = this.resolveMultiFilter(id, type, value, transform, selectedOption);\n } else {\n if (!Helpers.isBlank(value)) {\n filter = { id, type, value, transform, ...(selectedOption && { selectedOption }) };\n } else {\n filter = undefined;\n }\n }\n\n this.state.filter = filter;\n this.state.checkRetainment('filter');\n this.state.reset(false, true);\n this.state.updates.next({ filter, sort: this.state.sort });\n this.state.onSortFilterChange();\n }\n\n public sort(id: string, value: string, transform: Function): void {\n const sort = { id, value, transform };\n this.state.sort = sort;\n this.state.checkRetainment('sort');\n this.state.reset(false, true);\n this.state.updates.next({ sort, filter: this.state.filter });\n this.state.onSortFilterChange();\n }\n\n public resolveMultiFilter(id: string, type: string, value: any, transform: Function, selectedOption: Object) {\n let filter;\n\n filter = Helpers.convertToArray(this.state.filter);\n\n const filterIndex = filter.findIndex((aFilter) => aFilter && aFilter.id === id);\n if (filterIndex > -1) {\n filter.splice(filterIndex, 1);\n }\n\n if (!Helpers.isBlank(value)) {\n filter = [...filter, { id, type, value, transform, ...(selectedOption && { selectedOption }) }];\n }\n\n if (filter.length < 1) {\n filter = undefined;\n }\n\n return filter;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-data-table-cell-filter-header',\n template: `\n <div class=\"header\">\n <novo-label>{{ label || labels.filters }}</novo-label>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n size=\"small\"\n icon=\"times\"\n (click)=\"clearFilter.emit()\"\n *ngIf=\"hasFilter\"\n data-automation-id=\"novo-data-table-filter-clear\">\n {{ labels.clear }}\n </novo-button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCellFilterHeader {\n @Input() label: string | number;\n\n @Input()\n set filter(filter: any) {\n this._filter = filter;\n this.hasFilter = !Helpers.isEmpty(filter);\n }\n get filter(): any {\n return this._filter;\n }\n private _filter: any;\n\n public hasFilter = false;\n\n @Output() clearFilter: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(public changeDetectorRef: ChangeDetectorRef, public labels: NovoLabelService) {}\n}\n","import { CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport { NovoDropdownElement } from 'novo-elements/elements/dropdown';\nimport {\n IDataTableChangeEvent,\n IDataTableColumn,\n IDataTableColumnFilterConfig,\n IDataTableColumnFilterOption,\n IDataTableColumnSortConfig,\n IDataTableSortFilter,\n} from '../interfaces';\nimport { NovoDataTableFilterUtils } from '../services/data-table-filter-utils';\nimport { SortDirection } from '../sort-filter';\nimport { NovoDataTableSortFilter } from '../sort-filter/sort-filter.directive';\nimport { DataTableState } from '../state/data-table-state.service';\n\n@Component({\n selector: '[novo-data-table-cell-config]',\n template: `\n <i class=\"bhi-{{ labelIcon }} label-icon\" *ngIf=\"labelIcon\" data-automation-id=\"novo-data-table-header-icon\"></i>\n <label data-automation-id=\"novo-data-table-label\">{{ label }}</label>\n <div>\n <novo-sort-button\n *ngIf=\"config.sortable\"\n data-automation-id=\"novo-data-table-sort\"\n tooltipPosition=\"left\"\n [tooltip]=\"labels.sort\"\n [attr.data-feature-id]=\"'novo-data-table-sort-' + this.id\"\n (sortChange)=\"sort()\"\n [value]=\"sortValue\"></novo-sort-button>\n <novo-dropdown\n *ngIf=\"config.filterable\"\n side=\"left\"\n parentScrollSelector=\".novo-data-table-container\"\n containerClass=\"data-table-dropdown\"\n data-automation-id=\"novo-data-table-filter\"\n [multiple]=\"multiSelect\">\n <novo-icon\n dropdownTrigger\n class=\"filter-button\"\n [class.filter-active]=\"filterActive\"\n [tooltip]=\"labels.filters\"\n tooltipPosition=\"right\"\n [attr.data-feature-id]=\"'novo-data-table-filter-' + this.id\"\n (click)=\"clickedFilter($event)\">filter</novo-icon>\n <ng-container [ngSwitch]=\"config.filterConfig.type\">\n <ng-container *ngSwitchCase=\"'date'\" (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup>\n <ng-container *ngIf=\"!showCustomRange\">\n <novo-option\n [class.active]=\"activeDateFilter === option.label\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + option.label\">\n <span>{{ option.label }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"activeDateFilter === option.label\">check</novo-icon>\n </novo-option>\n </ng-container>\n <novo-option\n [class.active]=\"labels.customDateRange === activeDateFilter\"\n (click)=\"toggleCustomRange($event, true)\"\n *ngIf=\"config.filterConfig.allowCustomRange && !showCustomRange\">\n <span>{{ labels.customDateRange }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"labels.customDateRange === activeDateFilter\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"showCustomRange\" keepOpen>\n <novo-stack>\n <div class=\"back-link\" (click)=\"toggleCustomRange($event, false)\">\n <i class=\"bhi-previous\"></i>\n {{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"filterData($event)\"\n [(ngModel)]=\"filter\"\n range=\"true\"\n (keydown.escape)=\"handleEscapeKeydown($event)\"></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup>\n <novo-option\n [class.active]=\"filter === option\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + (option?.label || option)\">\n <span>{{ option?.label || option }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"option.hasOwnProperty('value') ? filter === option.value : filter === option\">\n check</novo-icon>\n </novo-option>\n </novo-optgroup>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup class=\"dropdown-list-filter\" (keydown)=\"multiSelectOptionFilterHandleKeydown($event)\">\n <novo-option class=\"filter-search\" novoInert>\n <novo-field flex>\n <input\n novoInput\n [(ngModel)]=\"optionFilter\"\n (ngModelChange)=\"multiSelectOptionFilter($event)\"\n #optionFilterInput\n data-automation-id=\"novo-data-table-multi-select-option-filter-input\"\n (keydown.enter)=\"multiSelectOptionFilterHandleKeydown($event)\" />\n <novo-icon novoSuffix>search</novo-icon>\n <novo-error class=\"error-text\" [hidden]=\"!error || !multiSelectHasVisibleOptions()\">\n {{ labels.selectFilterOptions }}\n </novo-error>\n </novo-field>\n </novo-option>\n </novo-optgroup>\n <novo-optgroup class=\"dropdown-list-options\" (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-option\n *ngFor=\"let option of config.filterConfig.options\"\n [hidden]=\"multiSelectOptionIsHidden(option)\"\n (click)=\"toggleSelection(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + (option?.label || option)\">\n <span>{{ option?.label || option }}</span>\n <novo-icon novoSuffix color=\"positive\">\n {{ isSelected(option, multiSelectedOptions) ? 'checkbox-filled' : 'checkbox-empty' }}\n </novo-icon>\n </novo-option>\n </novo-optgroup>\n <novo-option class=\"filter-null-results\" [hidden]=\"multiSelectHasVisibleOptions()\">{{ labels.pickerEmpty }}</novo-option>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'custom'\">\n <ng-container *ngIf=\"dropdown\">\n <novo-data-table-cell-filter-header *ngIf=\"!config.filterConfig?.useCustomHeader\" [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <ng-container *ngTemplateOutlet=\"filterTemplate; context: { $implicit: config, column, dropdown, filter }\"></ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup>\n <novo-option class=\"filter-search\" novoInert>\n <novo-field flex fullWidth>\n <input\n novoInput\n [type]=\"config.filterConfig.type\"\n [(ngModel)]=\"filter\"\n (ngModelChange)=\"filterData($event)\"\n #filterInput\n data-automation-id=\"novo-data-table-filter-input\"\n (keydown.escape)=\"handleEscapeKeydown($event)\" />\n <novo-icon novoSuffix>search</novo-icon>\n </novo-field>\n </novo-option>\n </novo-optgroup>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"footer\" *ngIf=\"multiSelect\">\n <novo-button theme=\"dialogue\" color=\"dark\" (click)=\"cancel()\" data-automation-id=\"novo-data-table-multi-select-cancel\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"dialogue\"\n color=\"positive\"\n (click)=\"filterMultiSelect()\"\n data-automation-id=\"novo-data-table-multi-select-filter\">\n {{ labels.filters }}\n </novo-button>\n </div>\n </novo-dropdown>\n </div>\n <div class=\"spacer\"></div>\n <div class=\"data-table-header-resizable\" *ngIf=\"config.resizable\"><span (mousedown)=\"startResize($event)\"> </span></div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCellHeader<T> implements IDataTableSortFilter, OnInit, OnDestroy {\n @ViewChild('filterInput')\n filterInput: ElementRef;\n @ViewChild(NovoDropdownElement)\n dropdown: NovoDropdownElement;\n @ViewChild('optionFilterInput')\n optionFilterInput: ElementRef;\n\n @Input()\n defaultSort: { id: string; value: string };\n\n @Input()\n allowMultipleFilters: boolean = false;\n\n @Input()\n resized: EventEmitter<IDataTableColumn<T>>;\n @Input()\n filterTemplate: TemplateRef<any>;\n\n @Output()\n toggledFilter = new EventEmitter<string>();\n @HostBinding('class.resizable')\n public resizable: boolean;\n\n @Input('novo-data-table-cell-config')\n set column(column: IDataTableColumn<T>) {\n this._column = column;\n this.label = column.type === 'action' ? '' : column.label;\n this.labelIcon = column.labelIcon;\n\n this.config = {\n sortable: !!column.sortable,\n filterable: !!column.filterable,\n resizable: !!column.resizable,\n };\n this.resizable = this.config.resizable;\n\n const transforms: { filter?: Function; sort?: Function } = {};\n\n if (column.filterable && Helpers.isObject(column.filterable)) {\n this.config.filterConfig = column.filterable as IDataTableColumnFilterConfig;\n if (!this.config.filterConfig.type) {\n this.config.filterConfig = { type: 'text' };\n }\n if ((column.filterable as IDataTableColumnFilterConfig).transform) {\n transforms.filter = (column.filterable as IDataTableColumnFilterConfig).transform;\n }\n } else {\n this.config.filterConfig = { type: 'text' };\n }\n\n if (column.sortable && Helpers.isObject(column.sortable)) {\n if ((column.sortable as IDataTableColumnSortConfig).transform) {\n transforms.sort = (column.sortable as IDataTableColumnSortConfig).transform;\n }\n }\n\n if (this.config.filterConfig.type === 'date' && !this.config.filterConfig.options) {\n this.config.filterConfig.options = this.getDefaultDateFilterOptions();\n }\n\n this.config.transforms = transforms;\n }\n get column(): IDataTableColumn<T> {\n return this._column;\n }\n private _column: IDataTableColumn<T>;\n\n private _rerenderSubscription: Subscription;\n private changeTimeout: any;\n\n public label: string;\n public icon: string = 'sortable';\n public labelIcon: string;\n public id: string;\n public filter: any;\n public direction: string;\n public filterActive: boolean = false;\n public sortActive: boolean = false;\n public sortValue: SortDirection = SortDirection.NONE;\n public showCustomRange: boolean = false;\n public activeDateFilter: string;\n public config: {\n sortable: boolean;\n filterable: boolean;\n resizable: boolean;\n transforms?: { filter?: Function; sort?: Function };\n filterConfig?: IDataTableColumnFilterConfig;\n };\n public multiSelect: boolean = false;\n public multiSelectedOptions: Array<any> = [];\n private multiSelectedOptionIsHidden: Array<{ option: string | IDataTableColumnFilterOption; hidden: boolean }> = [];\n public optionFilter: string = '';\n public error: boolean = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public labels: NovoLabelService,\n private state: DataTableState<T>,\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Optional() public _sort: NovoDataTableSortFilter<T>,\n @Optional() public _cdkColumnDef: CdkColumnDef,\n ) {\n this._rerenderSubscription = state.updates.subscribe((change: IDataTableChangeEvent) => this.checkSortFilterState(change));\n }\n\n public ngOnInit(): void {\n if (this._cdkColumnDef) {\n this.id = this._cdkColumnDef.name;\n }\n this.setupFilterOptions();\n\n this.changeDetectorRef.markForCheck();\n }\n\n public setupFilterOptions() {\n this.checkSortFilterState({ filter: this.state.filter, sort: this.state.sort }, true);\n\n this.multiSelect = this.config.filterConfig && this.config.filterConfig.type ? this.config.filterConfig.type === 'multi-select' : false;\n if (this.multiSelect) {\n this.multiSelectedOptions = this.filter ? [...this.filter] : [];\n }\n }\n\n public ngOnDestroy(): void {\n this._rerenderSubscription.unsubscribe();\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n }\n\n public checkSortFilterState(sortFilterState: IDataTableChangeEvent, initialConfig: boolean = false): void {\n if (sortFilterState.sort && sortFilterState.sort.id === this.id) {\n this.icon = `sort-${sortFilterState.sort.value}`;\n this.sortValue = sortFilterState.sort.value === 'asc' ? SortDirection.ASC : SortDirection.DESC;\n this.sortActive = true;\n } else {\n this.icon = 'sortable';\n this.sortValue = SortDirection.NONE;\n this.sortActive = false;\n }\n\n const tableFilter = Helpers.convertToArray(sortFilterState.filter);\n const thisFilter = tableFilter.find((filter) => filter && filter.id === this.id);\n\n if (thisFilter) {\n this.filterActive = true;\n if (initialConfig && thisFilter.type === 'date' && thisFilter.selectedOption) {\n this.activeDateFilter = thisFilter.selectedOption.label || this.labels.customDateRange;\n }\n this.filter = thisFilter.value;\n } else {\n this.filterActive = false;\n this.filter = undefined;\n this.activeDateFilter = undefined;\n this.multiSelectedOptions = [];\n }\n if (this.defaultSort && this.id === this.defaultSort.id) {\n this.icon = `sort-${this.defaultSort.value}`;\n this.sortActive = true;\n }\n this.multiSelect = this.config.filterConfig && this.config.filterConfig.type ? this.config.filterConfig.type === 'multi-select' : false;\n if (this.multiSelect) {\n this.multiSelectedOptions = this.filter ? [...this.filter] : [];\n if (this.config.filterConfig.options) {\n if (typeof this.config.filterConfig.options[0] === 'string') {\n this.multiSelectedOptionIsHidden = (this.config.filterConfig.options as string[]).map(\n (\n option: string,\n ): {\n option: string;\n hidden: boolean;\n } => ({ option, hidden: false }),\n );\n } else {\n this.multiSelectedOptionIsHidden = (this.config.filterConfig.options as IDataTableColumnFilterOption[]).map(\n (option: IDataTableColumnFilterOption): { option: IDataTableColumnFilterOption; hidden: boolean } => ({\n option,\n hidden: false,\n }),\n );\n }\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n public isSelected(option, optionsList) {\n if (optionsList) {\n const optionValue = option.hasOwnProperty('value') ? option.value : option;\n\n const found = optionsList.find((item) => this.optionPresentCheck(item, optionValue));\n return found !== undefined;\n }\n return false;\n }\n\n public toggleSelection(option) {\n const optionValue = option.hasOwnProperty('value') ? option.value : option;\n\n const optionIndex = this.multiSelectedOptions.findIndex((item) => this.optionPresentCheck(item, optionValue));\n this.error = false;\n if (optionIndex > -1) {\n this.multiSelectedOptions.splice(optionIndex, 1);\n if (this.optionFilter && !this.getOptionText(option).toLowerCase().startsWith(this.optionFilter.toLowerCase())) {\n this.multiSelectedOptionIsHidden[this.multiSelectedOptionIsHidden.findIndex((record) => record.option === option)].hidden = true;\n }\n } else {\n this.multiSelectedOptions.push(optionValue);\n }\n }\n\n public optionPresentCheck(item, optionValue): boolean {\n if (item.hasOwnProperty('value')) {\n return item.value === optionValue;\n } else {\n return item === optionValue;\n }\n }\n\n public cancel(): void {\n this.multiSelectedOptions = this.filter ? [...this.filter] : [];\n this.dropdown.closePanel();\n this.clearOptionFilter();\n }\n\n public filterMultiSelect(): void {\n if (this.multiSelectedOptions.length === 0 && !this.filter) {\n this.multiSelectHasVisibleOptions() && this.dropdown ? (this.error = true) : null;\n } else {\n this.clearOptionFilter();\n const actualFilter = this.multiSelectedOptions.length > 0 ? [...this.multiSelectedOptions] : undefined;\n this.filterData(actualFilter);\n this.dropdown.closePanel();\n }\n }\n\n public multiSelectOptionFilter(optionFilter: string) {\n this.multiSelectedOptionIsHidden.forEach((record) => {\n if (record.option) {\n record.hidden = !(\n this.getOptionText(record.option).toLowerCase().startsWith(optionFilter.toLowerCase()) ||\n this.isSelected(record.option, this.multiSelectedOptions)\n );\n }\n });\n }\n\n public multiSelectOptionIsHidden(option: string | IDataTableColumnFilterOption): boolean {\n return this.multiSelectedOptionIsHidden.find((record) => record.option === option).hidden;\n }\n\n public multiSelectHasVisibleOptions(): boolean {\n return this.multiSelectedOptionIsHidden.some((record) => !record.hidden);\n }\n\n private getOptionText(option: string | IDataTableColumnFilterOption): string {\n if (typeof option !== 'object') {\n return option.toString();\n } else {\n const opt = option as IDataTableColumnFilterOption;\n return (opt.label.length > 0 ? opt.label : opt.value).toString();\n }\n }\n\n @HostListener('keydown', ['$event'])\n public multiSelectOptionFilterHandleKeydown(event: KeyboardEvent) {\n if (this.multiSelect) {\n this.error = false;\n if (this.dropdown.panelOpen && event.key === Key.Escape) {\n // escape should clear text box and close\n Helpers.swallowEvent(event);\n this.clearOptionFilter();\n this.dropdown.closePanel();\n } else if (event.key === Key.Enter) {\n Helpers.swallowEvent(event);\n this.filterMultiSelect();\n } else if (\n (event.keyCode >= 65 && event.keyCode <= 90) ||\n (event.keyCode >= 96 && event.keyCode <= 105) ||\n (event.keyCode >= 48 && event.keyCode <= 57)\n ) {\n this.optionFilterInput.nativeElement.focus();\n }\n }\n }\n\n @HostListener('keydown.escape', ['$event'])\n public handleEscapeKeydown(event: KeyboardEvent) {\n if (!this.multiSelect) {\n this.error = false;\n this.dropdown.closePanel();\n }\n }\n\n private clearOptionFilter() {\n this.error = false;\n if (this.optionFilter.length > 0) {\n this.optionFilter = '';\n this.multiSelectedOptionIsHidden.forEach((record) => {\n record.hidden = false;\n });\n }\n }\n\n public startResize(mouseDownEvent: MouseEvent): void {\n mouseDownEvent.preventDefault();\n const minimumWidth = 60 + (this.config.filterable ? 30 : 0) + (this.config.sortable ? 30 : 0);\n const startingWidth: number = this.elementRef.nativeElement.getBoundingClientRect().width;\n const mouseMoveSubscription: Subscription = fromEvent(window.document, 'mousemove').subscribe((middleMouseEvent: MouseEvent) => {\n const differenceWidth: number = middleMouseEvent.clientX - mouseDownEvent.clientX;\n let width: number = startingWidth + differenceWidth;\n if (width < minimumWidth) {\n width = minimumWidth;\n }\n this.setWidth(width)\n });\n\n const mouseUpSubscription: Subscription = fromEvent(window.document, 'mouseup').subscribe(() => {\n mouseUpSubscription.unsubscribe();\n mouseMoveSubscription.unsubscribe();\n this.changeDetectorRef.markForCheck();\n });\n this.subscriptions.push(mouseMoveSubscription);\n this.subscriptions.push(mouseUpSubscription);\n }\n\n public setWidth(width: number) {\n this._column.width = width;\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', `${width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', `${width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${width}px`);\n this.changeDetectorRef.markForCheck();\n this.resized.next(this._column);\n }\n\n public toggleCustomRange(event: Event, value: boolean): void {\n Helpers.swallowEvent(event);\n this.showCustomRange = value;\n this.changeDetectorRef.markForCheck();\n this.dropdown.openPanel(); // Ensures that the panel correctly updates to the dynamic size of the dropdown\n }\n\n public clickedFilter(clickEvt: MouseEvent): void {\n if ((typeof this.config.filterConfig === 'object') && this.config.filterConfig.type === 'custom' && !this.filterTemplate) {\n this.toggledFilter.next(this.id);\n clickEvt.stopImmediatePropagation();\n return;\n }\n this.focusInput();\n if (this.multiSelect && this.dropdown) {\n this.dropdown._handleKeydown = (event: KeyboardEvent) => {\n this.multiSelectOptionFilterHandleKeydown(event);\n };\n this.changeDetectorRef.markForCheck();\n }\n }\n\n public focusInput(): void {\n if (this.filterInput?.nativeElement) {\n setTimeout(() => this.filterInput.nativeElement.focus());\n }\n }\n\n public sort(): void {\n if (this.changeTimeout) {\n clearTimeout(this.changeTimeout);\n }\n this.changeTimeout = setTimeout(() => {\n this.direction = this.getNextSortDirection(this.direction);\n this._sort.sort(this.id, this.direction, this.config.transforms.sort);\n this.changeDetectorRef.markForCheck();\n }, 300);\n }\n\n public filterData(filter?: any): void {\n let actualFilter = NovoDataTableFilterUtils.constructFilter(filter, this.config.filterConfig.type, this.multiSelect);\n const selectedOption = this.config.filterConfig.type === 'date' && filter ? filter : undefined;\n this.activeDateFilter = selectedOption ? selectedOption.label : undefined;\n\n if (this.changeTimeout) {\n clearTimeout(this.changeTimeout);\n }\n\n this.changeTimeout = setTimeout(() => {\n if (actualFilter === '') {\n actualFilter = undefined;\n }\n this._sort.filter(\n this.id,\n this.config.filterConfig.type,\n actualFilter,\n this.config.transforms.filter,\n this.allowMultipleFilters,\n selectedOption,\n );\n this.changeDetectorRef.markForCheck();\n }, 300);\n }\n\n public clearFilter(): void {\n this.filter = undefined;\n this.multiSelectedOptions = [];\n this.activeDateFilter = undefined;\n this.filterData(undefined);\n this.clearOptionFilter();\n this.dropdown.closePanel();\n }\n\n private getNextSortDirection(direction: string): string {\n if (!direction) {\n return 'asc';\n }\n if (direction === 'asc') {\n return 'desc';\n }\n return 'asc';\n }\n\n private getDefaultDateFilterOptions(): IDataTableColumnFilterOption[] {\n const opts: IDataTableColumnFilterOption[] = [\n { label: this.labels.past1Day, min: -1, max: 0 },\n { label: this.labels.past7Days, min: -7, max: 0 },\n { label: this.labels.past30Days, min: -30, max: 0 },\n { label: this.labels.past90Days, min: -90, max: 0 },\n { label: this.labels.past1Year, min: -366, max: 0 },\n { label: this.labels.next1Day, min: 0, max: 1 },\n { label: this.labels.next7Days, min: 0, max: 7 },\n { label: this.labels.next30Days, min: 0, max: 30 },\n { label: this.labels.next90Days, min: 0, max: 90 },\n { label: this.labels.next1Year, min: 0, max: 366 },\n ];\n return opts;\n }\n}\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport { Directive, ElementRef, HostBinding, Input, OnInit, Renderer2 } from '@angular/core';\nimport { IDataTableColumn } from '../interfaces';\n\n@Directive({\n selector: 'novo-data-table-header-cell',\n standalone: false,\n})\nexport class NovoDataTableHeaderCell<T> extends CdkHeaderCell implements OnInit {\n @HostBinding('attr.role')\n public role = 'columnheader';\n\n @Input()\n public column: IDataTableColumn<T>;\n\n constructor(columnDef: CdkColumnDef, private elementRef: ElementRef, private renderer: Renderer2) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-column-header-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-header-cell');\n }\n\n public ngOnInit(): void {\n if (this.column.width) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${this.column.width}px`);\n }\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n TemplateRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IDataTableColumn } from '../interfaces';\n\n@Component({\n selector: 'novo-data-table-cell',\n template: ' <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row, col: column }\"></ng-container> ',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCell<T> extends CdkCell implements OnInit, OnDestroy {\n @HostBinding('attr.role') role = 'gridcell';\n\n @Input() row: T;\n @Input() template: TemplateRef<any>;\n @Input() column: IDataTableColumn<T>;\n @Input() resized: EventEmitter<IDataTableColumn<T>>;\n private subscriptions: Subscription[] = [];\n\n constructor(columnDef: CdkColumnDef, private elementRef: ElementRef, private renderer: Renderer2) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-cell');\n }\n\n public ngOnInit(): void {\n if (this.column.cellClass) {\n this.renderer.addClass(this.elementRef.nativeElement, this.column.cellClass(this.row));\n }\n\n if (this.column.rightAlignCellContent) {\n this.renderer.addClass(this.elementRef.nativeElement, 'novo-data-table-cell-align-right');\n }\n\n this.calculateWidths();\n this.subscriptions.push(\n this.resized.subscribe((column: IDataTableColumn<T>) => {\n if (column === this.column) {\n this.calculateWidths();\n }\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n }\n\n private calculateWidths(): void {\n if (this.column.width) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${this.column.width}px`);\n }\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-checkbox-cell',\n template: `\n <div class=\"data-table-checkbox\" (click)=\"onClick()\" [tooltip]=\"getTooltip()\" tooltipPosition=\"right\">\n <input type=\"checkbox\" [checked]=\"checked\" />\n <label>\n <i [class.bhi-checkbox-disabled]=\"isAtLimit\" [class.bhi-checkbox-empty]=\"!checked\" [class.bhi-checkbox-filled]=\"checked\"></i>\n </label>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCheckboxCell<T> extends CdkCell implements OnInit, OnDestroy {\n @HostBinding('attr.role')\n public role = 'gridcell';\n\n @Input()\n public row: T;\n @Input()\n public maxSelected: number = undefined;\n\n public checked: boolean = false;\n\n private selectionSubscription: Subscription;\n private resetSubscription: Subscription;\n\n get isAtLimit(): boolean {\n return this.maxSelected && this.dataTable.state.selectedRows.size >= this.maxSelected && !this.checked;\n }\n\n constructor(\n public columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-checkbox-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-checkbox-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-checkbox-cell');\n\n this.selectionSubscription = this.dataTable.state.selectionSource.subscribe(() => {\n this.checked = this.dataTable.isSelected(this.row) || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n this.ref.markForCheck();\n });\n this.resetSubscription = this.dataTable.state.resetSource.subscribe(() => {\n this.checked = false;\n this.ref.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this.checked = this.dataTable.isSelected(this.row) || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n }\n\n public onClick(): void {\n if (!this.isAtLimit) {\n this.dataTable.selectRow(this.row, 'onClick');\n }\n }\n\n public getTooltip() {\n return this.isAtLimit ? 'More than ' + this.maxSelected + ' items are not able to be selected at one time' : '';\n }\n\n public ngOnDestroy(): void {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.resetSubscription) {\n this.resetSubscription.unsubscribe();\n }\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-expand-cell',\n template: ' <i class=\"bhi-next data-table-icon\" novo-data-table-expander=\"true\" [class.expanded]=\"expanded\"></i> ',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableExpandCell<T> extends CdkCell implements OnInit, OnDestroy {\n @HostBinding('attr.role')\n public role = 'gridcell';\n\n @Input()\n public row: T;\n\n public expanded: boolean = false;\n\n private expandSubscription: Subscription;\n\n constructor(\n public columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-expand-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-expand-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-expand-cell');\n\n this.expandSubscription = this.dataTable.state.expandSource.subscribe(() => {\n this.expanded = this.dataTable.isExpanded(this.row);\n this.ref.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this.expanded = this.dataTable.isExpanded(this.row);\n }\n\n public onClick(): void {\n this.dataTable.expandRow(this.row);\n }\n\n public ngOnDestroy(): void {\n if (this.expandSubscription) {\n this.expandSubscription.unsubscribe();\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DataTableState } from './state/data-table-state.service';\nimport { BooleanInput } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-data-table-clear-button',\n template: `\n <novo-dropdown side=\"bottom-right\" class=\"novo-data-table-clear-button\" data-automation-id=\"novo-data-table-clear-dropdown\">\n <novo-button type=\"button\" theme=\"primary\" color=\"negative\" icon=\"collapse\" data-automation-id=\"novo-data-table-clear-dropdown-btn\">\n {{ labels.clear }}\n </novo-button>\n <list>\n <item\n *ngIf=\"state.selected.length > 0\"\n (click)=\"clearSelected()\"\n data-automation-id=\"novo-data-table-clear-dropdown-clear-selected\"\n >{{ labels.clearSelected }}</item>\n <item *ngIf=\"state.sort\" (click)=\"clearSort()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-sort\">{{\n labels.clearSort\n }}</item>\n <item *ngIf=\"state.filter || state.globalSearch\" (click)=\"clearFilter()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-filter\">{{\n labels.clearFilter\n }}</item>\n <item *ngIf=\"state.where\" (click)=\"clearSearch()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-search\">{{\n labels.clearSearch\n }}</item>\n <item *ngIf=\"(state.sort && (state.filter || state.globalSearch)) || (state.sort && state.where) || (state.where && (state.filter || state.globalSearch))\"\n (click)=\"clearAll()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-all\"><b>{{\n labels.clearAllNormalCase\n }}</b></item>\n </list>\n </novo-dropdown>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableClearButton<T> {\n @Output()\n selectedClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n sortClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n filterClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n queryClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n allClear: EventEmitter<boolean> = new EventEmitter();\n @BooleanInput()\n emitOnly: boolean = false;\n\n constructor(public state: DataTableState<T>, private ref: ChangeDetectorRef, public labels: NovoLabelService) { }\n\n clearSort(): void {\n if (!this.emitOnly) {\n this.state.clearSort();\n }\n this.sortClear.emit(true);\n }\n\n clearFilter(): void {\n if (!this.emitOnly) {\n this.state.clearFilter();\n }\n this.filterClear.emit(true);\n }\n\n clearSearch(): void {\n if (!this.emitOnly) {\n this.state.clearQuery();\n }\n this.queryClear.emit(true);\n }\n\n clearSelected(): void {\n if (!this.emitOnly) {\n this.state.clearSelected();\n }\n this.selectedClear.emit(true);\n }\n\n clearAll(): void {\n if (!this.emitOnly) {\n this.state.reset();\n }\n this.allClear.emit(true);\n this.selectedClear.emit(true);\n this.sortClear.emit(true);\n this.filterClear.emit(true);\n this.queryClear.emit(true);\n }\n}\n","import { Directive, HostListener, Inject, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from './data-table.token';\nimport { DataTableState } from './state/data-table-state.service';\n\n@Directive({\n selector: '[novoDataTableExpand]',\n standalone: false,\n})\nexport class NovoDataTableExpandDirective<T> implements OnDestroy {\n @Input()\n row: T;\n @Input('novoDataTableExpand')\n template: TemplateRef<any>;\n\n private subscription: Subscription;\n\n constructor(\n public vcRef: ViewContainerRef,\n private state: DataTableState<T>,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n ) {\n this.subscription = this.state.expandSource.subscribe((targetId?: number) => {\n if (this.shouldExpandAllRows(targetId) || this.shouldExpandOneRow(targetId)) {\n if (dataTable.isExpanded(this.row)) {\n this.render();\n } else {\n this.clear();\n }\n }\n });\n }\n\n shouldExpandAllRows = (targetId: number): boolean => targetId === undefined;\n\n shouldExpandOneRow = (targetId: number) => targetId === (this.row as unknown as { id: number }).id;\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if ((event.target as Element).hasAttribute('novo-data-table-expander')) {\n Helpers.swallowEvent(event);\n this.dataTable.expandRow(this.row);\n }\n }\n\n private clear(): void {\n this.vcRef.clear();\n }\n\n private render(): void {\n this.vcRef.clear();\n if (this.template && this.row) {\n this.vcRef.createEmbeddedView(this.template, { $implicit: this.row });\n }\n }\n}\n","import { DataSource } from '@angular/cdk/table';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { merge, Observable, of } from 'rxjs';\nimport { catchError, map, startWith, switchMap } from 'rxjs/operators';\nimport { IDataTableService } from './interfaces';\nimport { DataTableState } from './state/data-table-state.service';\n\nexport class DataTableSource<T> extends DataSource<T> {\n public total = 0;\n public currentTotal = 0;\n public current = 0;\n public loading = false;\n public pristine = true;\n public data: T[];\n\n private totalSet: boolean = false;\n\n get totallyEmpty(): boolean {\n return this.total === 0;\n }\n\n get currentlyEmpty(): boolean {\n return this.current === 0;\n }\n\n constructor(private tableService: IDataTableService<T>, private state: DataTableState<T>, private ref: ChangeDetectorRef) {\n super();\n }\n\n public connect(): Observable<any> {\n const displayDataChanges: any = [this.state.updates];\n return merge(...displayDataChanges).pipe(\n startWith(null),\n switchMap(() => {\n this.pristine = false;\n this.loading = true;\n this.state.dataLoadingSource.next(this.loading);\n return this.tableService.getTableResults(\n this.state.sort,\n this.state.filter,\n this.state.page,\n this.state.pageSize,\n this.state.globalSearch,\n this.state.outsideFilter,\n this.state.where,\n );\n }),\n map((data: { results: T[]; total: number }) => {\n if (!this.totalSet || this.state.isForceRefresh) {\n this.total = data.total;\n this.totalSet = true;\n this.state.isForceRefresh = false;\n } else if (data.total > this.total) {\n this.total = data.total;\n }\n this.currentTotal = data.total;\n this.current = data.results.length;\n this.data = data.results;\n // Clear selection\n if (!this.state.retainSelected) {\n this.state.selectedRows.clear();\n }\n this.state.retainSelected = false;\n this.state.onSelectionChange();\n // Mark changes\n setTimeout(() => {\n this.ref.markForCheck();\n setTimeout(() => {\n this.loading = false;\n this.state.dataLoadingSource.next(this.loading);\n this.state.dataLoaded.next();\n this.ref.markForCheck();\n });\n });\n return data.results;\n }),\n catchError((err, caught) => {\n console.error(err, caught);\n this.loading = false;\n return of(null);\n }),\n );\n }\n\n public disconnect(): void {}\n}\n","import { Observable, of } from 'rxjs';\nimport { Helpers } from 'novo-elements/utils';\nimport { IDataTableFilter, IDataTableService, IDataTableSort } from '../interfaces';\n\nexport class StaticDataTableService<T> implements IDataTableService<T> {\n originalData: T[];\n\n constructor(private currentData: T[] = []) {\n this.originalData = [...currentData];\n }\n\n public getTableResults(\n sort: IDataTableSort,\n filter: IDataTableFilter | IDataTableFilter[],\n page: number = 0,\n pageSize: number,\n globalSearch?: string,\n outsideFilter?: any,\n where?: { query: string; form: any },\n ): Observable<{ results: T[]; total: number }> {\n this.currentData = [...this.originalData];\n let total: number = this.originalData.length;\n if (this.currentData.length !== 0) {\n if (globalSearch) {\n this.currentData = this.currentData.filter((item) =>\n Object.keys(item).some((key) => `${item[key]}`.toLowerCase().includes(globalSearch.toLowerCase())),\n );\n total = this.currentData.length;\n }\n if (filter) {\n this.currentData = this.filterData(this.currentData, filter);\n total = this.currentData.length;\n }\n if (sort) {\n this.currentData = this.currentData.sort(Helpers.sortByField(sort.id, sort.value === 'desc'));\n total = this.currentData.length;\n }\n if (!sort && !filter && !globalSearch && !outsideFilter) {\n this.currentData = [...this.originalData];\n }\n if (!Helpers.isBlank(page) && !Helpers.isBlank(pageSize)) {\n this.currentData = this.currentData.slice(page * pageSize, (page + 1) * pageSize);\n }\n }\n return of({ results: this.currentData, total });\n }\n\n public filterData(currentData: T[], filter: IDataTableFilter | IDataTableFilter[]): T[] {\n const filters = Helpers.convertToArray(filter);\n filters.forEach((aFilter) => {\n if (Array.isArray(aFilter.value)) {\n const values = Helpers.convertToArray(aFilter.value).map(Helpers.escapeString);\n currentData = currentData.filter(Helpers.filterByField(aFilter.id, values));\n } else {\n const value = Helpers.escapeString(aFilter.value);\n currentData = currentData.filter(Helpers.filterByField(aFilter.id, value));\n }\n });\n return currentData;\n }\n}\n","import { CdkHeaderRow, CDK_ROW_TEMPLATE } from '@angular/cdk/table';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'novo-data-table-header-row',\n template: CDK_ROW_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableHeaderRow extends CdkHeaderRow {\n @HostBinding('class')\n public rowClass = 'novo-data-table-header-row';\n @HostBinding('class.fixed-header')\n @Input()\n public fixedHeader: boolean = false;\n @HostBinding('attr.role')\n public role = 'row';\n}\n","import { CdkRow, CDK_ROW_TEMPLATE } from '@angular/cdk/table';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'novo-data-table-row',\n template: CDK_ROW_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableRow extends CdkRow {\n @HostBinding('class')\n public rowClass = 'novo-data-table-row';\n @HostBinding('attr.role')\n public role = 'row';\n\n @HostBinding('attr.id')\n @Input()\n id;\n\n @HostBinding('attr.data-automation-id')\n @Input()\n dataAutomationId;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { IDataTablePaginationEvent } from '../interfaces';\nimport { DataTableState } from '../state/data-table-state.service';\n\nconst MAX_PAGES_DISPLAYED = 5;\n\n@Component({\n selector: 'novo-data-table-pagination',\n template: `\n <ng-container *ngIf=\"theme === 'basic' || theme === 'basic-wide'\">\n <div class=\"novo-data-table-pagination-size\">\n <novo-tiles\n class=\"pagination-tiles\"\n *ngIf=\"displayedPageSizeOptions.length > 1\"\n [(ngModel)]=\"pageSize\"\n [options]=\"displayedPageSizeOptions\"\n (onChange)=\"changePageSize($event)\"\n data-automation-id=\"novo-data-table-pagination-tiles\"\n >\n </novo-tiles>\n <div *ngIf=\"displayedPageSizeOptions.length <= 1\">{{ pageSize }}</div>\n </div>\n\n <div class=\"novo-data-table-range-label-long\" data-automation-id=\"novo-data-table-pagination-range-label-long\">\n {{ longRangeLabel }}\n </div>\n <div class=\"novo-data-table-range-label-short\" data-automation-id=\"novo-data-table-pagination-range-label-short\">\n {{ shortRangeLabel }}\n </div>\n <span class=\"spacer novo-data-table-spacer\" *ngIf=\"theme === 'basic-wide'\"></span>\n <novo-button\n theme=\"dialogue\"\n type=\"button\"\n class=\"novo-data-table-pagination-navigation-previous\"\n (click)=\"previousPage()\"\n icon=\"previous\"\n side=\"left\"\n [disabled]=\"!hasPreviousPage()\"\n data-automation-id=\"novo-data-table-pagination-previous\"\n >\n <span>{{ labels.previous }}</span>\n </novo-button>\n <novo-button\n theme=\"dialogue\"\n type=\"button\"\n class=\"novo-data-table-pagination-navigation-next\"\n (click)=\"nextPage()\"\n icon=\"next\"\n side=\"right\"\n [disabled]=\"!hasNextPage()\"\n data-automation-id=\"novo-data-table-pagination-next\"\n >\n <span>{{ labels.next }}</span>\n </novo-button>\n </ng-container>\n <ng-container *ngIf=\"theme === 'standard'\">\n <h5 class=\"rows\">{{ labels.itemsPerPage }}</h5>\n <novo-select\n [options]=\"displayedPageSizeOptions\"\n [placeholder]=\"labels.select\"\n [(ngModel)]=\"pageSize\"\n (onSelect)=\"changePageSize($event.selected)\"\n data-automation-id=\"pager-select\"\n [attr.data-feature-id]=\"dataFeatureId\"\n >\n </novo-select>\n <div *ngIf=\"showPaginationTotalRecordCount && !loading && !errorLoading\" class=\"novo-data-table-of-total-amount\" data-automation-id=\"novo-data-table-of-total-amount\">\n {{ labels.ofXAmount(length) }}\n </div>\n <span class=\"spacer\"></span>\n <ul *ngIf=\"!loading && !errorLoading\" class=\"pager\" data-automation-id=\"pager\">\n <li class=\"page\" (click)=\"selectPage(page - 1)\" [ngClass]=\"{ disabled: page === 0 }\">\n <i class=\"bhi-previous\" data-automation-id=\"pager-previous\"></i>\n </li>\n <li class=\"page\" [ngClass]=\"{ active: p.number === page + 1 }\" *ngFor=\"let p of pages\" (click)=\"selectPage(p.number - 1)\">\n {{ p.text }}\n </li>\n <li class=\"page\" (click)=\"selectPage(page + 1)\" [ngClass]=\"{ disabled: page + 1 === totalPages }\">\n <i class=\"bhi-next\" data-automation-id=\"pager-next\"></i>\n </li>\n </ul>\n <novo-spinner *ngIf=\"loading\"></novo-spinner>\n <button *ngIf=\"errorLoading\"\n theme=\"primary\"\n color=\"negative\"\n icon=\"refresh\"\n (click)=\"paginationRefreshSubject.next()\">{{ labels.refreshPagination }}</button>\n </ng-container>\n `,\n styleUrls: ['./data-table-pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTablePagination<T> implements OnInit, OnDestroy {\n @HostBinding('class')\n @Input()\n theme: string = 'standard';\n\n @Input()\n get page(): number {\n return this._page;\n }\n set page(page: number) {\n this._page = page;\n this.changeDetectorRef.markForCheck();\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.state.page = this._page;\n this.updateDisplayedPageSizeOptions();\n }\n _page: number = 0;\n\n @Input()\n get pageSize(): number {\n return this._pageSize;\n }\n set pageSize(pageSize: number) {\n this._pageSize = pageSize;\n this.updateDisplayedPageSizeOptions();\n this.state.pageSize = this._pageSize;\n }\n private _pageSize: number;\n @Input() dataFeatureId: string;\n\n @Input()\n get pageSizeOptions() {\n return this._pageSizeOptions;\n }\n set pageSizeOptions(pageSizeOptions: any[]) {\n this._pageSizeOptions = pageSizeOptions;\n this.updateDisplayedPageSizeOptions();\n }\n private _pageSizeOptions = [];\n\n @Input()\n public canSelectAll: boolean = false;\n @Input()\n public allMatchingSelected: boolean = false;\n @Input()\n public loading: boolean = false;\n @Input()\n public errorLoading: boolean = false;\n @Input()\n public paginationRefreshSubject = new Subject<void>();\n @Input()\n public showPaginationTotalRecordCount: boolean = false;\n\n @Input()\n get length(): number {\n return this._length;\n }\n set length(length: number) {\n this._length = length;\n this.changeDetectorRef.markForCheck();\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n }\n _length: number = 0;\n\n @Output() pageChange = new EventEmitter<IDataTablePaginationEvent>();\n\n public displayedPageSizeOptions: { value: string; label: string }[];\n public longRangeLabel: string;\n public shortRangeLabel: string;\n public pages: { number: number; text: string; active: boolean }[];\n\n private resetSubscription: Subscription;\n public totalPages: number;\n private _initialized: boolean;\n\n constructor(private changeDetectorRef: ChangeDetectorRef, public labels: NovoLabelService, private state: DataTableState<T>) {\n this.resetSubscription = this.state.resetSource.subscribe(() => {\n this.page = 0;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this._initialized = true;\n this.updateDisplayedPageSizeOptions();\n }\n\n public ngOnDestroy(): void {\n this.resetSubscription.unsubscribe();\n }\n\n public selectPage(page) {\n this.state.checkRetainment('page', this.canSelectAll && this.allMatchingSelected);\n this.page = page;\n this.emitPageEvent();\n }\n\n public nextPage(): void {\n this.state.checkRetainment('page', this.canSelectAll && this.allMatchingSelected);\n if (!this.hasNextPage()) {\n return;\n }\n this.page++;\n this.pages = this.getPages(this.page, this.totalPages);\n this.emitPageEvent();\n }\n\n public previousPage(): void {\n this.state.checkRetainment('page', this.canSelectAll && this.allMatchingSelected);\n if (!this.hasPreviousPage()) {\n return;\n }\n this.page--;\n this.pages = this.getPages(this.page, this.totalPages);\n this.emitPageEvent();\n }\n\n public hasPreviousPage(): boolean {\n return this.page >= 1 && this.pageSize !== 0;\n }\n\n public hasNextPage(): boolean {\n const numberOfPages = Math.ceil(this.length / this.pageSize) - 1;\n return this.page < numberOfPages && this.pageSize !== 0;\n }\n\n public changePageSize(pageSize: number): void {\n this.page = 0;\n this.pageSize = pageSize;\n this.emitPageEvent(true);\n }\n\n private updateDisplayedPageSizeOptions(): void {\n if (!this._initialized) {\n return;\n }\n if (!this.displayedPageSizeOptions) {\n this.displayedPageSizeOptions = [];\n this.pageSizeOptions.forEach((option: any) => {\n if (option.hasOwnProperty('value')) {\n this.displayedPageSizeOptions.push(option);\n } else {\n this.displayedPageSizeOptions.push({\n value: option,\n label: option,\n });\n }\n });\n }\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n this.changeDetectorRef.detectChanges();\n }\n\n private emitPageEvent(isPageSizeChange: boolean = false): void {\n const event = {\n page: this.page,\n pageSize: this.pageSize,\n length: this.length,\n filter: this.state.filter,\n sort: this.state.sort,\n };\n this.pageChange.next(event);\n this.state.page = this.page;\n this.state.pageSize = this.pageSize;\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n this.state.updates.next(event);\n this.state.onPaginationChange(isPageSizeChange, this.pageSize);\n }\n\n private calculateTotalPages() {\n const totalPages = this.pageSize < 1 ? 1 : Math.ceil(this.length / this.pageSize);\n return Math.max(totalPages || 0, 1);\n }\n\n private makePage(number: number, text: string, isActive: boolean): { number: number; text: string; active: boolean } {\n return {\n number,\n text,\n active: isActive,\n };\n }\n\n private getPages(currentPage: number, totalPages: number): { number: number; text: string; active: boolean }[] {\n const pages = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized = MAX_PAGES_DISPLAYED < totalPages;\n\n // Recompute if maxPagesDisplayed\n if (isMaxSized) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(MAX_PAGES_DISPLAYED / 2), 1);\n endPage = startPage + MAX_PAGES_DISPLAYED - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - MAX_PAGES_DISPLAYED + 1;\n }\n }\n\n // Add page number links\n for (let number = startPage; number <= endPage; number++) {\n const page = this.makePage(number, number.toString(), number === currentPage);\n pages.push(page);\n }\n return pages;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { IDataTableColumn } from './interfaces';\n\nexport function interpolateCell<T>(value: any, col: IDataTableColumn<T>): string {\n if (col.format) {\n return Helpers.interpolateWithFallback(col.format, value);\n }\n return value;\n}\n\n@Pipe({\n name: 'dataTableInterpolate',\n pure: true,\n standalone: false,\n})\nexport class DataTableInterpolatePipe<T> implements PipeTransform {\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return interpolateCell<T>(value, column);\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableDateRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableDateRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return column.format ? value : this.labels.formatDate(interpolateCell<T>(value, column));\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableDateTimeRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableDateTimeRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return column.format ? value : this.labels.formatDateShort(interpolateCell<T>(value, column));\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableTimeRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableTimeRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return column.format ? value : this.labels.formatTime(interpolateCell<T>(value, column));\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableNumberRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableNumberRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>, isPercent: boolean = false): string {\n if (!Helpers.isEmpty(value)) {\n let val = interpolateCell<T>(value, column);\n if (isPercent && Helpers.isNumber(val)) {\n val = `${Number(val) * 100}`;\n }\n return `${this.labels.formatNumber(val)}${isPercent ? '%' : ''}`;\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableBigDecimalRenderer',\n pure: true,\n standalone: false,\n})\nexport class DataTableBigDecimalRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n const val = interpolateCell<T>(value, column);\n return this.labels.formatBigDecimal(Number(val), column.configuration);\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableCurrencyRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableCurrencyRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n const val = interpolateCell<T>(value, column);\n return this.labels.formatCurrency(Number(val));\n }\n return '';\n }\n}\n","import { animate, state as animState, style, transition, trigger } from '@angular/animations';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, Helpers, notify } from 'novo-elements/utils';\nimport { NovoTemplate } from 'novo-elements/elements/common';\nimport { NovoDataTableCellHeader } from './cell-headers/data-table-header-cell.component';\nimport { DataTableSource } from './data-table.source';\nimport { NOVO_DATA_TABLE_REF } from './data-table.token';\nimport {\n IDataTableChangeEvent,\n IDataTableColumn,\n IDataTablePaginationOptions,\n IDataTablePreferences,\n IDataTableSearchOptions,\n IDataTableSelectionOption,\n IDataTableService,\n} from './interfaces';\nimport { ListInteractionDictionary, ListInteractionEvent } from './ListInteractionTypes';\nimport { StaticDataTableService } from './services/static-data-table.service';\nimport { DataTableState } from './state/data-table-state.service';\nimport { NovoDragFinishEvent } from 'novo-elements/elements/drag-drop';\n\nexport type DataTablePreferenceUpdateSrc = 'columndrag' | 'input' | 'statesortchange' | 'pagination';\nexport interface IDataTablePreferencesChangeEvent extends IDataTablePreferences {\n eventSrc: DataTablePreferenceUpdateSrc\n}\n\n@Component({\n selector: 'novo-data-table',\n animations: [\n trigger('expand', [\n animState('void', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),\n animState('*', style({ height: '*', visibility: 'visible' })),\n transition('void <=> *', animate('70ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DataTableState, { provide: NOVO_DATA_TABLE_REF, useExisting: NovoDataTable }],\n standalone: false,\n})\nexport class NovoDataTable<T> implements AfterContentInit, OnDestroy {\n @HostBinding('class.global-search-hidden') globalSearchHiddenClassToggle: boolean = false;\n\n @ContentChildren(NovoTemplate) customTemplates: QueryList<NovoTemplate>;\n @ViewChildren(NovoTemplate) defaultTemplates: QueryList<NovoTemplate>;\n @ViewChildren(NovoDataTableCellHeader) cellHeaders: QueryList<NovoDataTableCellHeader<T>>;\n @ViewChild('novoDataTableContainer') novoDataTableContainer: ElementRef;\n @Output() resized: EventEmitter<IDataTableColumn<T>> = new EventEmitter();\n\n @Input()\n set displayedColumns(displayedColumns: string[]) {\n this.updateDisplayedColumns(displayedColumns, 'input');\n }\n\n get displayedColumns(): string[] {\n return this._disabledColumns;\n }\n private _disabledColumns: string[];\n\n @Input() paginationOptions: IDataTablePaginationOptions;\n @Input() searchOptions: IDataTableSearchOptions;\n @Input() selectionOptions: IDataTableSelectionOption[];\n @Input() defaultSort: { id: string; value: string };\n @Input() name = 'novo-data-table';\n @Input() allowMultipleFilters = false;\n @Input() rowIdentifier = 'id';\n @Input() activeRowIdentifier = '';\n // prettier-ignore\n @Input() trackByFn = (index, item) => item.id;\n @Input() templates: { [key: string]: TemplateRef<any> } = {};\n @Input() fixedHeader = false;\n @Input() paginatorDataFeatureId: string;\n @Input() maxSelected: number = undefined;\n @Input() canSelectAll: boolean = false;\n @Input() allMatchingSelected = false;\n @Input() overrideTotal: number;\n @Input() paginationRefreshSubject: Subject<void>;\n @BooleanInput()\n @Input() enableColumnDragging = false;\n\n private dragEnabledByColumn: Map<string, boolean>;\n\n @Input()\n set dataTableService(service: IDataTableService<T>) {\n this.loading = false;\n if (!service) {\n service = new StaticDataTableService([]);\n }\n this.dataSource = new DataTableSource<T>(service, this.state, this.ref);\n this.ref.detectChanges();\n }\n\n @Input()\n set rows(rows: T[]) {\n this.loading = false;\n const service = new StaticDataTableService(rows);\n this.dataSource = new DataTableSource<T>(service, this.state, this.ref);\n this.ref.detectChanges();\n }\n\n @Input()\n set outsideFilter(outsideFilter: EventEmitter<any>) {\n // Unsubscribe\n if (this.outsideFilterSubscription) {\n this.outsideFilterSubscription.unsubscribe();\n }\n if (outsideFilter) {\n // Re-subscribe\n this.outsideFilterSubscription = outsideFilter.subscribe((filter: any) => {\n this.state.outsideFilter = filter;\n this.state.updates.next({ globalSearch: this.state.globalSearch, filter: this.state.filter, sort: this.state.sort, where: this.state.where });\n this.ref.markForCheck();\n });\n }\n }\n\n @Input()\n set refreshSubject(refreshSubject: EventEmitter<void>) {\n // Unsubscribe\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n if (refreshSubject) {\n // Re-subscribe\n this.refreshSubscription = refreshSubject.subscribe(() => {\n this.state.isForceRefresh = true;\n this.state.updates.next({ globalSearch: this.state.globalSearch, filter: this.state.filter, sort: this.state.sort, where: this.state.where });\n this.ref.markForCheck();\n });\n }\n }\n\n @Input()\n set columns(columns: IDataTableColumn<T>[]) {\n this._columns = columns;\n this.configureColumns();\n this.performInteractions('init');\n }\n get columns(): IDataTableColumn<T>[] {\n return this._columns;\n }\n\n @Input()\n set customFilter(v: boolean) {\n this._customFilter = coerceBooleanProperty(v);\n }\n get customFilter() {\n return this._customFilter;\n }\n private _customFilter: boolean;\n\n @Input()\n set hasExandedRows(v: boolean) {\n this._hasExandedRows = coerceBooleanProperty(v);\n }\n get hasExandedRows() {\n return this._hasExandedRows;\n }\n private _hasExandedRows: boolean;\n\n @Input()\n set forceShowHeader(v: boolean) {\n this._forceShowHeader = coerceBooleanProperty(v);\n }\n get forceShowHeader() {\n return this._forceShowHeader;\n }\n private _forceShowHeader: boolean;\n\n @Input()\n set hideGlobalSearch(v: boolean) {\n this._hideGlobalSearch = coerceBooleanProperty(v);\n this.globalSearchHiddenClassToggle = this._hideGlobalSearch;\n }\n get hideGlobalSearch() {\n return this._hideGlobalSearch;\n }\n private _hideGlobalSearch: boolean = true;\n\n @Output() preferencesChanged = new EventEmitter<IDataTablePreferencesChangeEvent>();\n @Output() allSelected: EventEmitter<{ allSelected: boolean; selectedCount: number }> = new EventEmitter<{\n allSelected: boolean;\n selectedCount: number;\n }>();\n @Output() toggledFilter = new EventEmitter<string>();\n\n public dataSource: DataTableSource<T>;\n public loading: boolean = true;\n public columnToTemplate: { [key: string]: TemplateRef<any> } = {};\n public columnsLoaded: boolean = false;\n public selection: Set<string> = new Set();\n public scrollLeft: number = 0;\n public expandable: boolean = false;\n\n private outsideFilterSubscription: Subscription;\n private refreshSubscription: Subscription;\n private resetSubscription: Subscription;\n private paginationSubscription: Subscription;\n private sortFilterSubscription: Subscription;\n private allMatchingSelectedSubscription: Subscription;\n private _columns: IDataTableColumn<T>[];\n private scrollListenerHandler: any;\n private initialized: boolean = false;\n\n @HostBinding('class.empty')\n get empty() {\n return this.useOverrideTotal ? this.overrideTotal === 0 : this.dataSource?.totallyEmpty;\n }\n\n @HostBinding('class.loading')\n get loadingClass() {\n return this.loading || (this.dataSource && this.dataSource.loading);\n }\n\n get useOverrideTotal(): boolean {\n return !Helpers.isBlank(this.overrideTotal)\n }\n\n @Input() listInteractions: ListInteractionDictionary;\n\n constructor(public labels: NovoLabelService, private ref: ChangeDetectorRef, public state: DataTableState<T>) {\n this.scrollListenerHandler = this.scrollListener.bind(this);\n this.sortFilterSubscription = this.state.sortFilterSource.subscribe(\n (event: IDataTableChangeEvent) => {\n if (this.name !== 'novo-data-table') {\n this.preferencesChanged.emit({\n name: this.name,\n sort: event.sort,\n filter: event.filter,\n globalSearch: event.globalSearch,\n where: event.where,\n savedSearchName: event.savedSearchName,\n appliedSearchType: event.appliedSearchType,\n eventSrc: 'statesortchange',\n });\n this.performInteractions('change');\n } else {\n notify('Must have [name] set on data-table to use preferences!');\n }\n },\n );\n this.paginationSubscription = this.state.paginationSource.subscribe((event: { isPageSizeChange: boolean; pageSize: number }) => {\n if (this.name !== 'novo-data-table') {\n if (event.isPageSizeChange) {\n this.preferencesChanged.emit({ name: this.name, pageSize: event.pageSize, eventSrc: 'pagination' });\n }\n } else {\n notify('Must have [name] set on data-table to use preferences!');\n }\n });\n this.resetSubscription = this.state.resetSource.subscribe(() => {\n setTimeout(() => {\n this.ref.detectChanges();\n }, 300);\n });\n this.allMatchingSelectedSubscription = this.state.allMatchingSelectedSource.subscribe((event: boolean) => {\n this.allMatchingSelected = event;\n });\n }\n\n public modifyCellHeaderMultiSelectFilterOptions(column: string, newOptions: { value: any; label: string }[]): void {\n const header = this.cellHeaders.find((cellHeader) => cellHeader.id === column);\n if (header) {\n if (header.config && header.config.filterConfig && header.config.filterConfig.options) {\n const filterOptions: any[] = header.config.filterConfig.options;\n const optionsToKeep = filterOptions.filter(\n (opt) =>\n header.isSelected(opt, header.multiSelectedOptions) &&\n !newOptions.find((newOpt) => opt.value && newOpt.value && newOpt.value === opt.value),\n );\n header.config.filterConfig.options = [...optionsToKeep, ...newOptions];\n } else {\n header.config.filterConfig.options = newOptions;\n }\n header.setupFilterOptions();\n header.changeDetectorRef.markForCheck();\n }\n }\n\n public ngOnDestroy(): void {\n this.outsideFilterSubscription?.unsubscribe();\n this.refreshSubscription?.unsubscribe();\n this.resetSubscription?.unsubscribe();\n this.sortFilterSubscription?.unsubscribe();\n this.allMatchingSelectedSubscription?.unsubscribe();\n if (this.novoDataTableContainer) {\n (this.novoDataTableContainer.nativeElement as Element).removeEventListener('scroll', this.scrollListenerHandler);\n }\n }\n\n public ngAfterContentInit(): void {\n if (this.displayedColumns && this.displayedColumns.length) {\n this.expandable = this.displayedColumns.includes('expand');\n }\n\n // Default templates defined here\n this.defaultTemplates.forEach((item) => {\n // Only override if it doesn't already exist\n if (!this.templates[item.getType()]) {\n this.templates[item.getType()] = item.template;\n }\n });\n // Custom templates passed in\n this.customTemplates.forEach((item) => {\n // Override anything that is custom and in HTML\n this.templates[item.getType()] = item.template;\n });\n // Load columns\n this.configureColumns();\n\n // State\n if (this.paginationOptions && !this.paginationOptions.page) {\n this.paginationOptions.page = 0;\n }\n if (this.paginationOptions && !this.paginationOptions.pageSize) {\n this.paginationOptions.pageSize = 50;\n }\n if (this.paginationOptions && !this.paginationOptions.pageSizeOptions) {\n this.paginationOptions.pageSizeOptions = [10, 25, 50, 100];\n }\n this.state.page = this.paginationOptions ? this.paginationOptions.page : undefined;\n this.state.pageSize = this.paginationOptions ? this.paginationOptions.pageSize : undefined;\n this.state.selectionOptions = this.selectionOptions ?? undefined;\n\n // Scrolling inside table\n (this.novoDataTableContainer.nativeElement as Element).addEventListener('scroll', this.scrollListenerHandler);\n this.initialized = true;\n this.ref.markForCheck();\n }\n\n public onSearchChange(term: string): void {\n this.state.globalSearch = term;\n this.state.reset(false, true);\n this.state.updates.next({ globalSearch: term, filter: this.state.filter, sort: this.state.sort, where: this.state.where });\n }\n\n public trackColumnsBy(index: number, item: IDataTableColumn<T>) {\n return item.id;\n }\n\n public isDisabled(check: any, row: T): boolean {\n if (check.disabled === true) {\n return true;\n }\n if (check.disabledFunc) {\n return check.disabledFunc(row);\n }\n return false;\n }\n\n public isExpanded(row: T): boolean {\n if (!row) {\n return false;\n }\n return this.state.expandedRows.has(`${row[this.rowIdentifier]}`);\n }\n\n public expandRow(row: T): void {\n const expanded = this.isExpanded(row);\n\n if (expanded) {\n this.state.expandedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.expandedRows.add(`${row[this.rowIdentifier]}`);\n }\n this.state.onExpandChange((row as unknown as { id: number }).id);\n }\n\n public expandRows(expand: boolean): void {\n (this.dataSource.data || []).forEach((row: T) => {\n if (!expand) {\n this.state.expandedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.expandedRows.add(`${row[this.rowIdentifier]}`);\n }\n });\n this.state.onExpandChange();\n }\n\n public allCurrentRowsExpanded(): boolean {\n for (let i = 0; i < (this.dataSource.data || []).length; i++) {\n if (!this.isExpanded((this.dataSource.data || [])[i])) {\n return false;\n }\n }\n return true;\n }\n\n public isSelected(row: T): boolean {\n if (!row) {\n return false;\n }\n return this.state.selectedRows.has(`${row[this.rowIdentifier]}`);\n }\n\n public selectRow(row: T, origin?: string): void {\n const selected = this.isSelected(row);\n if (selected) {\n this.state.selectedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n if (this.canSelectAll && this.allMatchingSelected && ['onClick'].includes(origin)) {\n // When all matching records are selected the user could be on another page where all rows only appear selected\n // Need to reset the rows that are actually selected, select rows on the current page and deselect the chosen record\n this.state.selectedRows.clear();\n this.selectRows(true);\n this.state.selectedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.selectedRows.set(`${row[this.rowIdentifier]}`, row);\n }\n }\n this.state.allMatchingSelectedSource.next(false);\n this.state.onSelectionChange();\n }\n\n public selectRows(selected: boolean): void {\n (this.dataSource.data || []).forEach((row: T) => {\n if (!selected) {\n this.state.selectedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.selectedRows.set(`${row[this.rowIdentifier]}`, row);\n }\n });\n this.state.onSelectionChange();\n }\n\n public allCurrentRowsSelected(): boolean {\n if (this.allMatchingSelected) {\n return true;\n }\n if (!this.dataSource?.data?.length) {\n return false;\n }\n for (let i = 0; i < (this.dataSource.data || []).length; i++) {\n if (!this.isSelected((this.dataSource.data || [])[i])) {\n return false;\n }\n }\n return true;\n }\n\n columnDragFilter = (columnName: string) => {\n if (['selection', 'expand'].includes(columnName)) {\n return false;\n }\n return this.dragEnabledByColumn.get(columnName) ?? false;\n }\n\n public columnDragged(event: NovoDragFinishEvent<string>): void {\n this.updateDisplayedColumns(event.allItems, 'columndrag');\n }\n\n private configureLastDisplayedColumn(): void {\n if (this.columns && this.displayedColumns && 0 !== this.columns.length && 0 !== this.displayedColumns.length) {\n this.columns.forEach((column: IDataTableColumn<T>) => {\n if (column.initialResizable) {\n column.resizable = column.initialResizable.resizable;\n column.width = column.initialResizable.width;\n column.initialResizable = undefined;\n }\n });\n const resizableColumns: string[] = this.displayedColumns.filter((name: string): boolean => {\n return (\n this.columns.findIndex((column: IDataTableColumn<T>): boolean => {\n return column.resizable && column.id === name;\n }) !== -1\n );\n });\n if (resizableColumns && resizableColumns.length > 0) {\n const lastResizableColumn: IDataTableColumn<T> = this.columns.find((column: IDataTableColumn<T>) => {\n return column.id === resizableColumns[resizableColumns.length - 1];\n });\n lastResizableColumn.initialResizable = {\n resizable: lastResizableColumn.resizable,\n width: lastResizableColumn.width,\n };\n lastResizableColumn.width = undefined;\n lastResizableColumn.resizable = false;\n }\n }\n }\n\n private configureColumns(): void {\n if (this.columns && this.columns.length !== 0 && Object.keys(this.templates).length !== 0) {\n // Figure the column templates\n if (this.enableColumnDragging) {\n this.dragEnabledByColumn = new Map();\n }\n this.columns.forEach((column: IDataTableColumn<T>) => {\n // Figure the template\n let templateName: string;\n if (column.template) {\n // Pass it in as template\n templateName = column.template;\n } else if (!!this.templates[column.id]) {\n // Custom template for the column id\n templateName = column.id;\n } else {\n // Default to the defaulCellTemplate\n if (column.type === 'action') {\n if (column.action && column.action.options) {\n if (!column.action.icon) {\n column.action.icon = 'collapse';\n }\n templateName = 'dropdownCellTemplate';\n } else {\n templateName = 'buttonCellTemplate';\n }\n } else {\n if (column.type === 'link:tel' || column.type === 'link:mailto') {\n templateName = `${column.type.split(':')[1]}CellTemplate`;\n } else {\n templateName = `${column.type}CellTemplate`;\n }\n }\n }\n this.columnToTemplate[column.id] = this.templates[templateName];\n if (this.enableColumnDragging) {\n const draggable = column.draggable != null ? column.draggable : true;\n this.dragEnabledByColumn.set(column.id, draggable);\n }\n });\n this.configureLastDisplayedColumn();\n this.columnsLoaded = true;\n }\n }\n\n private updateDisplayedColumns(displayedColumns: string[], updateSrc: DataTablePreferenceUpdateSrc) {\n if (this.displayedColumns && this.displayedColumns.length !== 0) {\n if (this.name !== 'novo-data-table') {\n this.preferencesChanged.emit({\n name: this.name,\n displayedColumns,\n eventSrc: updateSrc,\n });\n } else {\n notify('Must have [name] set on data-table to use preferences!');\n }\n }\n this._disabledColumns = displayedColumns;\n this.configureLastDisplayedColumn();\n if (this.initialized) {\n setTimeout(() => {\n this.scrollListener();\n });\n }\n }\n\n private scrollListener(): void {\n const target: Element = this.novoDataTableContainer.nativeElement as Element;\n const left: number = target.scrollLeft;\n if (left !== this.scrollLeft) {\n this.scrollLeft = target.scrollLeft;\n }\n this.ref.markForCheck();\n }\n\n performInteractions(event: ListInteractionEvent): void {\n if (this.listInteractions) {\n for (const column of this.columns) {\n const allListColumnInteractions = this.listInteractions[column.id];\n const listColumnInteraction = allListColumnInteractions && allListColumnInteractions.find((int) => int.event.includes(event));\n if (listColumnInteraction) {\n listColumnInteraction.script(this, column.id);\n }\n }\n }\n }\n}\n","<header\n *ngIf=\"(!(empty && !state.userFiltered) && !loading) || forceShowHeader\"\n [class.empty]=\"hideGlobalSearch && !paginationOptions && !templates['customActions']\"\n [ngClass]=\"{ 'pagination-footer': paginationOptions?.onFooter }\"\n>\n <ng-container *ngTemplateOutlet=\"templates['customHeader']\"></ng-container>\n <novo-search\n alwaysOpen=\"true\"\n (searchChanged)=\"onSearchChange($event)\"\n [(ngModel)]=\"state.globalSearch\"\n *ngIf=\"!hideGlobalSearch\"\n [placeholder]=\"searchOptions?.placeholder\"\n [hint]=\"searchOptions?.tooltip\"\n >\n </novo-search>\n <!-- Updates to novo-data-table-pagination here need to be applied to the footer as well -->\n <novo-data-table-pagination\n *ngIf=\"paginationOptions && !paginationOptions.onFooter\"\n [theme]=\"paginationOptions.theme\"\n [length]=\"useOverrideTotal ? overrideTotal : dataSource?.currentTotal\"\n [page]=\"paginationOptions.page\"\n [pageSize]=\"paginationOptions.pageSize\"\n [pageSizeOptions]=\"paginationOptions.pageSizeOptions\"\n [dataFeatureId]=\"paginatorDataFeatureId\"\n [canSelectAll]=\"canSelectAll\"\n [allMatchingSelected]=\"allMatchingSelected\"\n [loading]=\"paginationOptions.loading\"\n [errorLoading]=\"paginationOptions.errorLoading\"\n [paginationRefreshSubject]=\"paginationRefreshSubject\"\n >\n </novo-data-table-pagination>\n <div class=\"novo-data-table-actions\" *ngIf=\"templates['customActions']\">\n <ng-container *ngTemplateOutlet=\"templates['customActions']\"></ng-container>\n </div>\n</header>\n<div class=\"novo-data-table-loading-mask\" *ngIf=\"dataSource?.loading || loading\" data-automation-id=\"novo-data-table-loading\">\n <novo-loading></novo-loading>\n</div>\n<div class=\"novo-data-table-outside-container\" [ngClass]=\"{ 'novo-data-table-outside-container-fixed': fixedHeader }\">\n <div class=\"novo-data-table-custom-filter\" *ngIf=\"customFilter\">\n <ng-container *ngTemplateOutlet=\"templates['customFilter']\"></ng-container>\n </div>\n <div\n #novoDataTableContainer\n cdkScrollable\n class=\"novo-data-table-container\"\n [ngClass]=\"{ 'novo-data-table-container-fixed': fixedHeader }\"\n [class.empty-user-filtered]=\"dataSource?.currentlyEmpty && state.userFiltered\"\n [class.empty]=\"empty && !dataSource?.loading && !loading && !state.userFiltered && !dataSource.pristine\"\n >\n <cdk-table\n *ngIf=\"columns?.length > 0 && columnsLoaded && dataSource\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"trackByFn\"\n novoDataTableSortFilter\n [class.expandable]=\"expandable\"\n [class.empty]=\"dataSource?.currentlyEmpty && state.userFiltered\"\n [hidden]=\"empty && !state.userFiltered\"\n >\n <ng-container cdkColumnDef=\"selection\">\n <novo-data-table-checkbox-header-cell *cdkHeaderCellDef [maxSelected]=\"maxSelected\"></novo-data-table-checkbox-header-cell>\n <novo-data-table-checkbox-cell\n *cdkCellDef=\"let row; let i = index\"\n [row]=\"row\"\n [maxSelected]=\"maxSelected\"\n ></novo-data-table-checkbox-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"expand\">\n <novo-data-table-expand-header-cell *cdkHeaderCellDef></novo-data-table-expand-header-cell>\n <novo-data-table-expand-cell *cdkCellDef=\"let row; let i = index\" [row]=\"row\"></novo-data-table-expand-cell>\n </ng-container>\n <ng-container *ngFor=\"let column of columns; trackBy: trackColumnsBy\" [cdkColumnDef]=\"column.id\">\n <novo-data-table-header-cell\n *cdkHeaderCellDef\n [column]=\"column\"\n [filterTemplate]=\"templates['column-filter-' + (column.filterable?.customTemplate || column.id)]\"\n (toggledFilter)=\"toggledFilter.next($event)\"\n [novo-data-table-cell-config]=\"column\"\n [resized]=\"resized\"\n [defaultSort]=\"defaultSort\"\n [allowMultipleFilters]=\"allowMultipleFilters\"\n [class.empty]=\"column?.type === 'action' && !column?.label\"\n [class.button-header-cell]=\"column?.type === 'expand' || (column?.type === 'action' && !column?.action?.options)\"\n [class.dropdown-header-cell]=\"column?.type === 'action' && column?.action?.options\"\n [class.fixed-header]=\"fixedHeader\"\n ></novo-data-table-header-cell>\n <novo-data-table-cell\n *cdkCellDef=\"let row\"\n [resized]=\"resized\"\n [column]=\"column\"\n [row]=\"row\"\n [template]=\"columnToTemplate[column.id]\"\n [class.empty]=\"column?.type === 'action' && !column?.label\"\n [class.button-cell]=\"column?.type === 'expand' || (column?.type === 'action' && !column?.action?.options)\"\n [class.dropdown-cell]=\"column?.type === 'action' && column?.action?.options\"\n ></novo-data-table-cell>\n </ng-container>\n <novo-data-table-header-row\n *cdkHeaderRowDef=\"displayedColumns\"\n [novoDragDrop]=\"enableColumnDragging ? displayedColumns : undefined\"\n [novoDragDropFilter]=\"columnDragFilter\"\n (novoDragDropFinish)=\"columnDragged($event)\"\n [fixedHeader]=\"fixedHeader\"\n data-automation-id=\"novo-data-table-header-row\"\n ></novo-data-table-header-row>\n <novo-data-table-row\n *cdkRowDef=\"let row; columns: displayedColumns\"\n [ngClass]=\"{ active: row[rowIdentifier] == activeRowIdentifier }\"\n [novoDataTableExpand]=\"detailRowTemplate\"\n [row]=\"row\"\n [id]=\"name + '-' + row[rowIdentifier]\"\n [dataAutomationId]=\"row[rowIdentifier]\"\n ></novo-data-table-row>\n </cdk-table>\n <div class=\"novo-data-table-footer\" *ngIf=\"templates['footer']\">\n <ng-container *ngTemplateOutlet=\"templates['footer']; context: { $implicit: columns, data: dataSource.data }\"></ng-container>\n </div>\n <div\n class=\"novo-data-table-no-results-container\"\n [style.left.px]=\"scrollLeft\"\n *ngIf=\"dataSource?.currentlyEmpty && state.userFiltered && !dataSource?.loading && !loading && !dataSource.pristine\"\n >\n <div class=\"novo-data-table-empty-message\">\n <ng-container *ngTemplateOutlet=\"templates['noResultsMessage'] || templates['defaultNoResultsMessage']\"></ng-container>\n </div>\n </div>\n <div\n class=\"novo-data-table-no-more-results-container\"\n [style.left.px]=\"scrollLeft\"\n *ngIf=\"!empty && dataSource?.currentlyEmpty && !state.userFiltered && !dataSource?.loading && !loading && !dataSource.pristine\"\n >\n <div class=\"novo-data-table-empty-message\">\n <ng-container *ngTemplateOutlet=\"templates['noMoreResultsMessage'] || templates['defaultNoMoreResultsMessage']\"></ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"novo-data-table-empty-container\"\n *ngIf=\"empty && !dataSource?.loading && !loading && !state.userFiltered && !dataSource.pristine\"\n >\n <div class=\"novo-data-table-empty-message\">\n <ng-container *ngTemplateOutlet=\"templates['emptyMessage'] || templates['defaultNoResultsMessage']\"></ng-container>\n </div>\n </div>\n</div>\n<!-- DEFAULT CELL TEMPLATE -->\n<ng-template novoTemplate=\"textCellTemplate\" let-row let-col=\"col\">\n <span [style.width.px]=\"col?.width\" [style.min-width.px]=\"col?.width\" [style.max-width.px]=\"col?.width\">{{\n row[col.id] | dataTableInterpolate: col\n }}</span>\n</ng-template>\n<ng-template novoTemplate=\"dateCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableDateRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"datetimeCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableDateTimeRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"timeCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableTimeRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"currencyCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableCurrencyRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"bigdecimalCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableBigDecimalRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"numberCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableNumberRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"percentCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableNumberRenderer: col:true }}</span>\n</ng-template>\n<ng-template novoTemplate=\"linkCellTemplate\" let-row let-col=\"col\">\n <a\n [attr.data-feature-id]=\"col?.attributes?.dataFeatureId\"\n (click)=\"col.handlers?.click({ originalEvent: $event, row: row })\"\n [style.width.px]=\"col?.width\"\n [style.min-width.px]=\"col?.width\"\n [style.max-width.px]=\"col?.width\"\n >{{ row[col.id] | dataTableInterpolate: col }}</a\n >\n</ng-template>\n<ng-template novoTemplate=\"telCellTemplate\" let-row let-col=\"col\">\n <a href=\"tel:{{ row[col.id] | dataTableInterpolate: col }}\" [target]=\"col?.attributes?.target\">{{\n row[col.id] | dataTableInterpolate: col\n }}</a>\n</ng-template>\n<ng-template novoTemplate=\"mailtoCellTemplate\" let-row let-col=\"col\">\n <a href=\"mailto:{{ row[col.id] | dataTableInterpolate: col }}\" [target]=\"col?.attributes?.target\">{{\n row[col.id] | dataTableInterpolate: col\n }}</a>\n</ng-template>\n<ng-template novoTemplate=\"buttonCellTemplate\" let-row let-col=\"col\">\n <novo-button\n size=\"small\"\n theme=\"icon\"\n [tooltip]=\"col?.action?.tooltip\"\n tooltipPosition=\"right\"\n [attr.data-feature-id]=\"col?.attributes?.dataFeatureId\"\n [disabled]=\"isDisabled(col, row)\"\n (click)=\"col.handlers?.click({ originalEvent: $event, row: row })\"\n >\n <novo-icon>{{ col?.action?.icon }}</novo-icon>\n </novo-button>\n</ng-template>\n<ng-template novoTemplate=\"dropdownCellTemplate\" let-row let-col=\"col\">\n <novo-dropdown parentScrollSelector=\".novo-data-table-container\" containerClass=\"novo-data-table-dropdown\">\n <novo-button type=\"button\" theme=\"dialogue\" [icon]=\"col.action.icon\" inverse>{{ col.label }}</novo-button>\n <novo-optgroup>\n <novo-option\n *ngFor=\"let option of col?.action?.options\"\n (click)=\"option.handlers.click({ originalEvent: $event?.originalEvent, row: row })\"\n [disabled]=\"isDisabled(option, row)\"\n >\n <span [attr.data-automation-id]=\"option.label\">{{ option.label }}</span>\n </novo-option>\n </novo-optgroup>\n </novo-dropdown>\n</ng-template>\n<ng-template novoTemplate=\"defaultNoResultsMessage\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMatchingRecordsMessage }}</h4>\n</ng-template>\n<ng-template novoTemplate=\"defaultNoMoreResultsMessage\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMoreRecordsMessage }}</h4>\n</ng-template>\n<ng-template novoTemplate=\"defaultEmptyMessage\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.emptyTableMessage }}</h4>\n</ng-template>\n<ng-template novoTemplate=\"expandedRow\"> You did not provide an \"expandedRow\" template! </ng-template>\n<ng-template #detailRowTemplate let-row>\n <div class=\"novo-data-table-detail-row\" [@expand] style=\"overflow: hidden\">\n <ng-container *ngTemplateOutlet=\"templates['expandedRow']; context: { $implicit: row }\"></ng-container>\n </div>\n</ng-template>\n<!-- CUSTOM CELLS PASSED IN -->\n<footer\n *ngIf=\"paginationOptions?.onFooter && ((!(empty && !state.userFiltered) && !loading) || forceShowHeader)\"\n [class.empty]=\"!paginationOptions\"\n>\n <!-- Updates to novo-data-table-pagination here need to be applied to the header as well -->\n <novo-data-table-pagination\n *ngIf=\"paginationOptions?.onFooter\"\n [theme]=\"paginationOptions.theme\"\n [length]=\"useOverrideTotal ? overrideTotal : dataSource?.currentTotal\"\n [page]=\"paginationOptions.page\"\n [pageSize]=\"paginationOptions.pageSize\"\n [pageSizeOptions]=\"paginationOptions.pageSizeOptions\"\n [dataFeatureId]=\"paginatorDataFeatureId\"\n [canSelectAll]=\"canSelectAll\"\n [allMatchingSelected]=\"allMatchingSelected\"\n [loading]=\"paginationOptions.loading\"\n [errorLoading]=\"paginationOptions.errorLoading\"\n [paginationRefreshSubject]=\"paginationRefreshSubject\"\n [showPaginationTotalRecordCount]=\"true\"\n >\n </novo-data-table-pagination>\n</footer>\n<ng-content></ng-content>","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoCommonModule, NovoOptionModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDragDropModule } from 'novo-elements/elements/drag-drop';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoTilesModule } from 'novo-elements/elements/tiles';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoDataTableCheckboxHeaderCell } from './cell-headers/data-table-checkbox-header-cell.component';\nimport { NovoDataTableExpandHeaderCell } from './cell-headers/data-table-expand-header-cell.component';\nimport { NovoDataTableCellFilterHeader } from './cell-headers/data-table-header-cell-filter-header.component';\nimport { NovoDataTableCellHeader } from './cell-headers/data-table-header-cell.component';\nimport { NovoDataTableHeaderCell } from './cell-headers/data-table-header-cell.directive';\nimport { NovoDataTableCell } from './cells/data-table-cell.component';\nimport { NovoDataTableCheckboxCell } from './cells/data-table-checkbox-cell.component';\nimport { NovoDataTableExpandCell } from './cells/data-table-expand-cell.component';\nimport { NovoDataTableClearButton } from './data-table-clear-button.component';\nimport { NovoDataTableExpandDirective } from './data-table-expand.directive';\nimport { NovoDataTable } from './data-table.component';\nimport {\n DataTableBigDecimalRendererPipe,\n DataTableInterpolatePipe,\n DateTableCurrencyRendererPipe,\n DateTableDateRendererPipe,\n DateTableDateTimeRendererPipe,\n DateTableNumberRendererPipe,\n DateTableTimeRendererPipe,\n} from './data-table.pipes';\nimport { NovoDataTablePagination } from './pagination/data-table-pagination.component';\nimport { NovoDataTableHeaderRow } from './rows/data-table-header-row.component';\nimport { NovoDataTableRow } from './rows/data-table-row.component';\nimport { NovoDataTableSortButton } from './sort-filter/sort-button.component';\nimport { NovoDataTableSortFilter } from './sort-filter/sort-filter.directive';\nimport { DataTableState } from './state/data-table-state.service';\n\n@NgModule({\n imports: [\n NovoDatePickerModule,\n CdkTableModule,\n CommonModule,\n FormsModule,\n NovoIconModule,\n NovoButtonModule,\n NovoDropdownModule,\n NovoDragDropModule,\n NovoFormExtrasModule,\n NovoLoadingModule,\n NovoTilesModule,\n NovoSearchBoxModule,\n NovoOptionModule,\n NovoCommonModule,\n NovoSelectModule,\n NovoTooltipModule,\n NovoCheckboxModule,\n NovoFlexModule,\n NovoFieldModule,\n ScrollingModule,\n ],\n declarations: [\n DataTableInterpolatePipe,\n DateTableDateRendererPipe,\n DateTableCurrencyRendererPipe,\n DateTableDateTimeRendererPipe,\n DateTableNumberRendererPipe,\n DateTableTimeRendererPipe,\n DataTableBigDecimalRendererPipe,\n NovoDataTableCellHeader,\n NovoDataTableSortFilter,\n NovoDataTableHeaderCell,\n NovoDataTableCellFilterHeader,\n NovoDataTableCell,\n NovoDataTableHeaderRow,\n NovoDataTableRow,\n NovoDataTablePagination,\n NovoDataTableCheckboxCell,\n NovoDataTableCheckboxHeaderCell,\n NovoDataTableExpandCell,\n NovoDataTableExpandHeaderCell,\n NovoDataTable,\n NovoDataTableExpandDirective,\n NovoDataTableClearButton,\n NovoDataTableSortButton,\n ],\n providers: [DataTableState],\n exports: [\n NovoDataTable,\n DataTableInterpolatePipe,\n DateTableDateRendererPipe,\n DateTableCurrencyRendererPipe,\n DateTableDateTimeRendererPipe,\n DateTableNumberRendererPipe,\n DateTableTimeRendererPipe,\n DataTableBigDecimalRendererPipe,\n NovoDataTableCellFilterHeader,\n NovoDataTableClearButton,\n NovoDataTableSortButton,\n ],\n})\nexport class NovoDataTableModule {}\n","import { Observable } from 'rxjs';\n\nexport interface IDataTablePreferences {\n name: string;\n sort?: IDataTableSort;\n filter?: IDataTableFilter | IDataTableFilter[];\n where?: DataTableWhere;\n globalSearch?: any;\n pageSize?: number;\n displayedColumns?: string[];\n columnWidths?: { id: string; width: number }[];\n savedSearchId?: number;\n savedSearchName?: string;\n savedSearchOwner?: DataTableSavedSearchOwner;\n appliedSearchType?: AppliedSearchType;\n autobuildEntity?: AutobuildEntityData;\n hasUnsavedChanges?: boolean;\n unsavedChanges?: any;\n useBooleanKeywords?: boolean;\n}\n\nexport interface AutobuildEntityData {\n id: number;\n searchEntity: string;\n [key: string]: any;\n}\n\nexport interface DataTableWhere {\n query: string;\n criteria?: AdaptiveCriteria;\n keywords?: SearchKeywords;\n booleanKeywords?: string;\n scoreByEntityId?: number;\n form: any;\n}\n\nexport interface DataTableSavedSearchOwner {\n id: number;\n firstName: string;\n lastName: string;\n}\n\nexport enum AppliedSearchType {\n Saved = 'saved',\n Recent = 'recent',\n None = 'none',\n}\n\nexport interface IDataTableColumn<T> {\n id: string;\n label?: string;\n labelIcon?: string;\n enabled?: boolean;\n type:\n | 'text'\n | 'link'\n | 'link:tel'\n | 'link:mailto'\n | 'date'\n | 'datetime'\n | 'time'\n | 'currency'\n | 'bigdecimal'\n | 'number'\n | 'percent'\n | 'action'\n | 'expand';\n template?: string;\n format?: string | string[];\n disabled?: boolean;\n cellClass?: (row: T) => string;\n disabledFunc?: (row: T) => boolean;\n handlers?: {\n click?(event?: any): any;\n };\n width?: number;\n sortable?: boolean | IDataTableColumnSortConfig;\n filterable?: boolean | IDataTableColumnFilterConfig;\n resizable?: boolean;\n draggable?: boolean;\n action?: {\n icon?: string;\n tooltip?: string;\n options?: {\n label: string;\n handlers: {\n click?(event?: any): any;\n };\n disabled?: boolean;\n disabledFunc?: (row: T) => boolean;\n }[];\n };\n attributes?: { [key: string]: any }; // for any custom config in cells\n initialResizable?: {\n resizable: boolean;\n width: number;\n };\n rightAlignCellContent?: boolean;\n configuration?: any; // intended to be implemented by each column type if and as needed\n}\n\nexport interface IDataTablePaginationOptions {\n theme: 'basic' | 'standard' | 'basic-wide';\n page?: number;\n pageSize: number;\n pageSizeOptions: number[] | { value: string; label: string }[];\n loading?: boolean;\n errorLoading?: boolean;\n onFooter?: boolean;\n}\n\nexport interface IDataTableColumnSortConfig {\n transform?: Function;\n}\n\nexport interface IDataTableColumnFilterConfig {\n type: 'text' | 'number' | 'date' | 'select' | 'multi-select' | 'custom';\n customTemplate?: string;\n useCustomHeader?: boolean;\n options?: string[] | IDataTableColumnFilterOption[];\n allowCustomRange?: boolean;\n transform?: Function;\n}\n\nexport interface IDataTableColumnFilterOption {\n label: string;\n value?: any;\n min?: number;\n max?: number;\n}\n\nexport interface IDataTableSearchOptions {\n placeholder?: string;\n tooltip?: string;\n}\n\nexport interface IDataTableSortFilter {\n id: string;\n direction?: string;\n active?: boolean;\n filter?: string | boolean;\n}\n\nexport interface IDataTableChangeEvent {\n sort?: IDataTableSort;\n filter?: IDataTableFilter | IDataTableFilter[];\n page?: number;\n pageSize?: number;\n globalSearch?: string;\n outsideFilter?: IDataTableFilter | IDataTableFilter[];\n where?: { query: string; form: any };\n savedSearchName?: string;\n displayedColumns?: string[];\n appliedSearchType?: AppliedSearchType;\n}\n\nexport interface IDataTableSelectionChangeEvent {\n selected: any[];\n}\n\nexport interface IDataTableSelectionOption {\n label: 'none' | 'page' | 'pageSize' | 'sort' | 'filter' | 'globalSearch';\n}\n\nexport interface IDataTablePaginationEvent {\n page: number;\n pageSize: number;\n length: number;\n}\n\nexport interface IDataTableSort {\n id: string;\n value: string;\n transform?: Function;\n}\n\nexport interface IDataTableFilter {\n id: string;\n value: any;\n transform?: Function;\n type?: string;\n selectedOption?: Object;\n}\n\nexport interface IDataTableService<T> {\n getTableResults(\n sort: IDataTableSort,\n filter: { id: string; value: string; transform?: Function } | IDataTableFilter | IDataTableFilter[],\n page: number,\n pageSize: number,\n globalSearch?: string,\n outsideFilter?: any,\n where?: { query: string; form: any },\n ): Observable<{ results: T[]; total: number }>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IDataTableCell<T> {}\n\n/**\n * Adaptive criteria syntax is a json representation of a search or query string that supports all current and future search formats.\n */\nexport interface AdaptiveQuery {\n criteria: AdaptiveCriteria;\n\n // a comma separated list of fields to requests\n fields?: string;\n\n // a comma separated string, or a string array with the same data\n orderBy?: string | string[];\n\n pagination?: PaginationObject;\n}\n\nexport interface PaginationObject {\n page: number;\n pageSize: number;\n}\n\nexport type AdaptiveCriteria = AdaptiveCondition | AdaptiveConjunction;\n\n/**\n * Only a single field is valid.\n * Combine multiple fields with conjunctions, not sibling properties.\n * If multiple sibling properties are used in a condition, errors may occur in translation.\n */\nexport interface AdaptiveCondition {\n [fieldName: string]: AdaptiveConditionOperatorObject;\n}\n\n/**\n * Only a single operator for a condition is valid.\n * Combine multiple operators with conjunctions, not sibling properties.\n * If multiple sibling operators are used in a condition, only the first will be used.\n */\nexport type AdaptiveConditionOperatorObject = {\n [K in AdaptiveOperator as `${K}`]?: AdaptiveValue;\n};\n\nexport type AdaptiveValue = string | string[] | boolean | boolean[] | number | number[];\n\nexport type AdaptiveConjunction = AdaptiveAnd | AdaptiveOr | AdaptiveNot;\n\nexport interface AdaptiveAnd {\n and: Array<AdaptiveCriteria>;\n}\n\nexport interface AdaptiveOr {\n or: Array<AdaptiveCriteria>;\n}\n\nexport interface AdaptiveNot {\n not: AdaptiveCriteria;\n}\n\nexport enum AdaptiveConjunctionNames {\n AND = 'and',\n OR = 'or',\n NOT = 'not',\n}\n\nexport enum AdaptiveOperator {\n BeginsWith = 'beginsWith',\n EqualTo = 'equalTo',\n In = 'in',\n IncludeAny = 'includeAny',\n IncludeAll = 'includeAll',\n Is = 'is',\n LessThan = 'lt',\n LessThanEquals = 'lte',\n GreaterThan = 'gt',\n GreaterThanEquals = 'gte',\n Like = 'like',\n StartsWith = 'startsWith',\n EndsWith = 'endsWith',\n Radius = 'radius',\n}\n\nexport interface IKeywordSearchResponse {\n items: IKeywordGroup[];\n meta: {\n currentPage: number;\n itemCount: number;\n itemsPerPage: number;\n totalItems: number;\n totalPages: number;\n };\n}\n\nexport interface IKeyword {\n id: number;\n name: string;\n}\n\nexport interface IKeywordGroup {\n id: number;\n name: string;\n uniqueName?: string;\n keywords?: IKeyword[];\n}\n\nexport interface IKeywordBlock {\n operator?: 'and' | 'or';\n exclude?: boolean;\n keywordGroups: IKeywordGroup[];\n}\n\nexport type NestedKeywordGroups = IKeywordBlock[];\n\nexport type SearchKeywords = string[] | NestedKeywordGroups;\n","import { Observable } from 'rxjs';\nimport { IDataTableFilter, IDataTableService, IDataTableSort } from '../interfaces';\n\nexport abstract class RemoteDataTableService<T> implements IDataTableService<T> {\n abstract getTableResults(\n sort: IDataTableSort,\n filter: IDataTableFilter | IDataTableFilter[],\n page: number,\n pageSize: number,\n globalSearch?: string,\n outsideFilter?: any,\n where?: { query: string; form: any },\n ): Observable<{ results: T[]; total: number }>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataTableState","i2","i1","i3","i4","i2.DataTableState","i3.NovoDataTableSortFilter","i8","i9","i10","i15.NovoDataTableCellFilterHeader","i16.NovoDataTableSortButton","i5","i6","__decorate","i7","i11","i12","i13","i14","i15.NovoDataTableCellHeader","i16.NovoDataTableSortFilter","i17.NovoDataTableHeaderCell","i18.NovoDataTableCell","i19.NovoDataTableHeaderRow","i20.NovoDataTableRow","i21.NovoDataTablePagination","i22.NovoDataTableCheckboxCell","i23.NovoDataTableCheckboxHeaderCell","i24.NovoDataTableExpandCell","i25.NovoDataTableExpandHeaderCell","i26.NovoDataTableExpandDirective","i27.DataTableInterpolatePipe","i27.DateTableDateRendererPipe","i27.DateTableCurrencyRendererPipe","i27.DateTableDateTimeRendererPipe","i27.DateTableNumberRendererPipe","i27.DateTableTimeRendererPipe","i27.DataTableBigDecimalRendererPipe","animState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"novo-elements-elements-data-table.mjs","sources":["../../../projects/novo-elements/src/elements/data-table/data-table.token.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-checkbox-header-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-expand-header-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/services/data-table-filter-utils.ts","../../../projects/novo-elements/src/elements/data-table/state/data-table-state.service.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-direction.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-button.animations.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-button.component.ts","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-button.component.html","../../../projects/novo-elements/src/elements/data-table/sort-filter/sort-filter.directive.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-header-cell-filter-header.component.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-header-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cell-headers/data-table-header-cell.directive.ts","../../../projects/novo-elements/src/elements/data-table/cells/data-table-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cells/data-table-checkbox-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/cells/data-table-expand-cell.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table-clear-button.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table-expand.directive.ts","../../../projects/novo-elements/src/elements/data-table/data-table.source.ts","../../../projects/novo-elements/src/elements/data-table/services/static-data-table.service.ts","../../../projects/novo-elements/src/elements/data-table/rows/data-table-header-row.component.ts","../../../projects/novo-elements/src/elements/data-table/rows/data-table-row.component.ts","../../../projects/novo-elements/src/elements/data-table/pagination/data-table-pagination.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table.pipes.ts","../../../projects/novo-elements/src/elements/data-table/data-table.component.ts","../../../projects/novo-elements/src/elements/data-table/data-table.component.html","../../../projects/novo-elements/src/elements/data-table/data-table.module.ts","../../../projects/novo-elements/src/elements/data-table/interfaces.ts","../../../projects/novo-elements/src/elements/data-table/services/remote-data-table.service.ts","../../../projects/novo-elements/src/elements/data-table/novo-elements-elements-data-table.ts"],"sourcesContent":["import { EventEmitter, InjectionToken } from '@angular/core';\nimport { DataTableSource } from './data-table.source';\nimport { DataTableState } from './state';\n\n/**\n * Describes a parent component that manages a list of options.\n * Contains properties that the options can inherit.\n * @docs-private\n */\nexport interface NovoDataTableRef<T = any> {\n isExpanded(row: T): boolean;\n expandRow(row: T): void;\n isSelected(row: T): boolean;\n selectRow(row: T, evt: string): void;\n selectRows(selected: boolean): void;\n expandRows(expanded: boolean): void;\n allCurrentRowsSelected(): boolean;\n allCurrentRowsExpanded(): boolean;\n allSelected: EventEmitter<any>;\n canSelectAll: boolean;\n allMatchingSelected: boolean;\n state: DataTableState<T>;\n dataSource: DataTableSource<T>;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const NOVO_DATA_TABLE_REF = new InjectionToken<NovoDataTableRef>('NOVO_DATA_TABLE_REF');\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoToastService } from 'novo-elements/elements/toast';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-checkbox-header-cell',\n template: `\n <div class=\"data-table-checkbox\" (click)=\"onClick()\">\n <input type=\"checkbox\" [checked]=\"checked\" />\n <label>\n <i [class.bhi-checkbox-empty]=\"!checked\" [class.bhi-checkbox-filled]=\"checked\"></i>\n </label>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCheckboxHeaderCell<T> extends CdkHeaderCell implements OnDestroy {\n @HostBinding('attr.role')\n public role = 'columnheader';\n @Input()\n public maxSelected: number = undefined;\n\n public checked: boolean = false;\n private selectionSubscription: Subscription;\n private paginationSubscription: Subscription;\n private resetSubscription: Subscription;\n\n get isAtLimit(): boolean {\n return (\n this.maxSelected && this.dataTable.state.selectedRows.size + this.dataTable.dataSource.data.length > this.maxSelected && !this.checked\n );\n }\n\n constructor(\n columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n private toaster: NovoToastService,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-checkbox-column-header-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-checkbox-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-checkbox-header-cell');\n\n this.selectionSubscription = this.dataTable.state.selectionSource.subscribe(() => {\n this.checked = this.dataTable.allCurrentRowsSelected() || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n if (this.dataTable?.canSelectAll) {\n this.selectAllChanged();\n }\n this.ref.markForCheck();\n });\n this.paginationSubscription = this.dataTable.state.paginationSource.subscribe((event: { isPageSizeChange: boolean }) => {\n if (event.isPageSizeChange) {\n this.checked = false;\n if (this.dataTable?.canSelectAll) {\n this.selectAllChanged();\n }\n this.dataTable.selectRows(false);\n this.dataTable.state.checkRetainment('pageSize');\n this.dataTable.state.reset(false, true);\n } else {\n this.checked = this.dataTable.allCurrentRowsSelected() || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n if (this.dataTable?.canSelectAll) {\n this.selectAllChanged();\n }\n }\n this.ref.markForCheck();\n });\n this.resetSubscription = this.dataTable.state.resetSource.subscribe(() => {\n this.checked = false;\n if (this.dataTable?.canSelectAll) {\n this.resetAllMatchingSelected();\n }\n this.ref.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.paginationSubscription) {\n this.paginationSubscription.unsubscribe();\n }\n if (this.resetSubscription) {\n this.resetSubscription.unsubscribe();\n }\n }\n\n public onClick(): void {\n if (this.isAtLimit) {\n this.toaster.alert({\n theme: 'danger',\n position: 'fixedTop',\n message: 'Error, more than 500 items are not able to be selected at one time',\n icon: 'caution',\n });\n } else {\n this.dataTable.selectRows(!this.checked);\n }\n if (this.dataTable?.canSelectAll) {\n if (this.checked) {\n this.resetAllMatchingSelected();\n } else {\n this.selectAllChanged();\n }\n }\n }\n\n private resetAllMatchingSelected(): void {\n this.dataTable.state?.allMatchingSelectedSource?.next(false);\n this.dataTable.state?.onSelectionChange();\n }\n\n public selectAllChanged(): void {\n const allSelectedEvent = {\n allSelected: this.checked,\n selectedCount: this.dataTable?.state?.selected?.length,\n allMatchingSelected: this.dataTable?.allMatchingSelected,\n };\n this.dataTable.allSelected.emit(allSelectedEvent);\n }\n}\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-expand-header-cell',\n template: ' <i class=\"bhi-next data-table-icon\" novo-data-table-expander=\"true\" (click)=\"expandAll()\" [class.expanded]=\"expanded\"></i> ',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableExpandHeaderCell<T> extends CdkHeaderCell implements OnDestroy {\n @HostBinding('attr.role')\n public role = 'columnheader';\n\n public expanded: boolean = false;\n private expandSubscription: Subscription;\n\n constructor(\n columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-expand-column-header-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-expand-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-expand-header-cell');\n\n this.expandSubscription = this.dataTable.state.expandSource.subscribe(() => {\n this.expanded = this.dataTable.allCurrentRowsExpanded();\n this.ref.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n if (this.expandSubscription) {\n this.expandSubscription.unsubscribe();\n }\n }\n\n public expandAll(): void {\n this.dataTable.expandRows(!this.expanded);\n }\n}\n","import { endOfToday, startOfToday } from 'date-fns';\nimport { DateUtil } from 'novo-elements/utils';\n\nexport class NovoDataTableFilterUtils {\n static constructFilter(filter?: any, type?: any, multiSelect?: boolean) {\n let actualFilter = filter;\n if (filter) {\n if (type && type === 'date') {\n if (filter.startDate && filter.endDate) {\n actualFilter = {\n min: DateUtil.startOfDay(filter.startDate.date),\n max: DateUtil.startOfDay(DateUtil.addDays(DateUtil.startOfDay(filter.endDate.date), 1)),\n };\n } else {\n actualFilter = {\n min: filter.min ? DateUtil.addDays(startOfToday(), filter.min) : startOfToday(),\n max: filter.max ? DateUtil.addDays(endOfToday(), filter.max) : endOfToday(),\n };\n }\n }\n\n if (multiSelect && Array.isArray(filter)) {\n actualFilter = filter.map((filterItem) => {\n if (filterItem && filterItem.hasOwnProperty('value')) {\n return filterItem.value;\n }\n return filterItem;\n });\n } else if (actualFilter && actualFilter.hasOwnProperty('value')) {\n actualFilter = filter.value;\n }\n }\n return actualFilter;\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { Helpers } from 'novo-elements/utils';\nimport { Subject } from 'rxjs';\nimport {\n AdaptiveCriteria,\n AppliedSearchType,\n IDataTableChangeEvent,\n IDataTableFilter,\n IDataTablePreferences,\n IDataTableSelectionOption,\n IDataTableSort,\n} from '../interfaces';\nimport { NovoDataTableFilterUtils } from '../services/data-table-filter-utils';\n\n@Injectable()\nexport class DataTableState<T> {\n public selectionSource = new Subject<void>();\n public paginationSource = new Subject();\n public sortFilterSource = new Subject();\n public resetSource = new Subject<void>();\n public expandSource = new Subject();\n public allMatchingSelectedSource = new Subject();\n public dataLoaded = new Subject<void>();\n public dataLoadingSource = new Subject();\n\n sort: IDataTableSort = undefined;\n filter: IDataTableFilter | IDataTableFilter[] = undefined;\n where: { query: string; criteria?: AdaptiveCriteria; form: any } = undefined;\n page: number = 0;\n pageSize: number = undefined;\n globalSearch: string = undefined;\n selectedRows: Map<string, T> = new Map<string, T>();\n expandedRows: Set<string> = new Set<string>();\n outsideFilter: any;\n isForceRefresh: boolean = false;\n selectionOptions: IDataTableSelectionOption[];\n updates: EventEmitter<IDataTableChangeEvent> = new EventEmitter<IDataTableChangeEvent>();\n retainSelected: boolean = false;\n savedSearchName: string = undefined;\n appliedSearchType: AppliedSearchType;\n displayedColumns: string[] = undefined;\n\n get userFiltered(): boolean {\n return !!(this.filter || this.sort || this.globalSearch || this.outsideFilter || this.where);\n }\n\n get userFilteredInternal(): boolean {\n return !!(this.filter || this.sort || this.globalSearch || this.where);\n }\n\n get selected(): T[] {\n return Array.from(this.selectedRows.values());\n }\n\n public reset(fireUpdate: boolean = true, persistUserFilters?): void {\n this.setState({} as IDataTablePreferences, fireUpdate, persistUserFilters)\n }\n\n public clearSort(fireUpdate: boolean = true): void {\n this.sort = undefined;\n this.page = 0;\n this.checkRetainment('sort');\n this.reset(fireUpdate, true);\n this.onSortFilterChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public clearFilter(fireUpdate: boolean = true): void {\n this.filter = undefined;\n this.globalSearch = undefined;\n this.page = 0;\n this.checkRetainment('filter');\n this.reset(fireUpdate, true);\n this.onSortFilterChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public clearQuery(fireUpdate: boolean = true): void {\n this.where = undefined;\n this.page = 0;\n this.checkRetainment('where');\n this.reset(fireUpdate, true);\n this.onSortFilterChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public clearSelected(fireUpdate: boolean = true): void {\n this.allMatchingSelectedSource.next(false);\n this.globalSearch = undefined;\n this.page = 0;\n this.reset(fireUpdate, true);\n this.onSelectionChange();\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n });\n }\n }\n\n public onSelectionChange(): void {\n this.selectionSource.next();\n }\n\n public onExpandChange(targetId?: number): void {\n this.expandSource.next(targetId);\n }\n\n public onPaginationChange(isPageSizeChange: boolean, pageSize: number): void {\n this.checkRetainment('page');\n this.paginationSource.next({ isPageSizeChange, pageSize });\n }\n\n public onSortFilterChange(): void {\n this.checkRetainment('sort');\n this.checkRetainment('filter');\n this.checkRetainment('where');\n this.sortFilterSource.next({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n savedSearchName: this.savedSearchName,\n appliedSearchType: this.appliedSearchType,\n });\n }\n\n public setInitialSortFilter(preferences): void {\n if (preferences) {\n if (preferences.where) {\n this.where = preferences.where;\n }\n\n if (preferences.sort) {\n this.sort = preferences.sort;\n }\n\n if (preferences.filter) {\n this.filter = this.transformFilters(preferences.filter);\n }\n\n if (preferences.globalSearch) {\n this.globalSearch = preferences.globalSearch;\n }\n\n if (preferences.savedSearchName) {\n this.savedSearchName = preferences.savedSearchName;\n }\n\n if (preferences.appliedSearchType) {\n this.appliedSearchType = preferences.appliedSearchType;\n }\n }\n }\n\n public setState(preferences: IDataTablePreferences, fireUpdate = true, persistUserFilters = false): void {\n if (!persistUserFilters) {\n this.where = preferences.where;\n this.sort = preferences.sort;\n this.filter = preferences.filter ? this.transformFilters(preferences.filter) : undefined;\n this.globalSearch = preferences.globalSearch;\n this.savedSearchName = preferences.savedSearchName;\n if (preferences.displayedColumns?.length) {\n this.displayedColumns = preferences.displayedColumns;\n }\n this.appliedSearchType = preferences.appliedSearchType;\n }\n\n this.page = 0;\n if (!this.retainSelected) {\n this.selectedRows.clear();\n this.resetSource.next();\n }\n\n this.onSortFilterChange();\n this.retainSelected = false;\n\n if (fireUpdate) {\n this.updates.emit({\n sort: this.sort,\n filter: this.filter,\n globalSearch: this.globalSearch,\n where: this.where,\n savedSearchName: this.savedSearchName,\n displayedColumns: this.displayedColumns,\n appliedSearchType: this.appliedSearchType,\n });\n }\n }\n\n public checkRetainment(caller: string, allMatchingSelected = false): void {\n this.retainSelected = this.selectionOptions?.some((option) => option.label === caller) || this.retainSelected || allMatchingSelected;\n }\n\n private transformFilters(filters) {\n const filterArray = Helpers.convertToArray(filters);\n filterArray.forEach((filter) => {\n filter.value =\n filter.selectedOption && filter.type\n ? NovoDataTableFilterUtils.constructFilter(filter.selectedOption, filter.type)\n : filter.value;\n });\n return filterArray;\n }\n}\n","export enum SortDirection {\n ASC = 'ascending',\n DESC = 'descending',\n NONE = 'none',\n}\n","import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { SortDirection } from './sort-direction';\n\nconst activeStyle = { opacity: 1, top: 0 };\nconst inactiveStyle = { opacity: 0 };\n\n/** Animation that moves the sort indicator. */\nexport const sortAscAnim: AnimationTriggerMetadata = trigger('sortAsc', [\n // ...\n state(SortDirection.ASC, style(activeStyle)),\n state(SortDirection.DESC, style(inactiveStyle)),\n state(SortDirection.NONE, style(inactiveStyle)),\n transition('* => ascending', [animate('1s')]),\n transition('ascending => *', [animate('0.5s')]),\n]);\n\nexport const sortDescAnim: AnimationTriggerMetadata = trigger('sortDesc', [\n // ...\n state(SortDirection.ASC, style(inactiveStyle)),\n state(SortDirection.DESC, style(activeStyle)),\n state(SortDirection.NONE, style(inactiveStyle)),\n transition('* => descending', [animate('1s')]),\n transition('descending => *', [animate('0.5s')]),\n]);\n\nexport const sortNoneAnim: AnimationTriggerMetadata = trigger('sortNone', [\n // ...\n state(SortDirection.ASC, style(inactiveStyle)),\n state(SortDirection.DESC, style(inactiveStyle)),\n state(SortDirection.NONE, style(activeStyle)),\n transition('* => none', [animate('1s')]),\n transition('none => *', [animate('0.5s')]),\n]);\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DataTableState } from '../state/data-table-state.service';\nimport { sortAscAnim, sortDescAnim, sortNoneAnim } from './sort-button.animations';\nimport { SortDirection } from './sort-direction';\n@Component({\n selector: 'novo-sort-button',\n styleUrls: ['./sort-button.component.scss'],\n templateUrl: './sort-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [sortAscAnim, sortDescAnim, sortNoneAnim],\n standalone: false,\n})\nexport class NovoDataTableSortButton<T> {\n @Output() sortChange: EventEmitter<SortDirection> = new EventEmitter();\n public SortDirection = SortDirection;\n\n @Input()\n public get value(): SortDirection {\n return this._value;\n }\n public set value(value: SortDirection) {\n this._value = value;\n }\n\n public get isActive() {\n return this.value !== SortDirection.NONE;\n }\n\n private _value: SortDirection = SortDirection.NONE;\n\n constructor(public state: DataTableState<T>, private ref: ChangeDetectorRef, public labels: NovoLabelService) {}\n\n changeSort(dir: SortDirection): void {\n this.value = dir;\n this.sortChange.emit(dir);\n }\n\n clearSort(): void {\n this.state.clearSort();\n this.sortChange.emit(SortDirection.NONE);\n }\n}\n","<novo-icon\n class=\"novo-sort-asc-icon\"\n [class.sort-active]=\"isActive\"\n [class.sort-hidden]=\"value !== SortDirection.ASC\"\n [@sortAsc]=\"value\"\n (click)=\"changeSort(SortDirection.DESC)\">arrow-up</novo-icon>\n<novo-icon\n class=\"novo-sort-desc-icon\"\n [class.sort-active]=\"isActive\"\n [class.sort-hidden]=\"value !== SortDirection.DESC\"\n [@sortDesc]=\"value\"\n (click)=\"changeSort(SortDirection.NONE)\">arrow-down</novo-icon>\n<novo-icon\n class=\"novo-sortable-icon\"\n [class.sort-active]=\"isActive\"\n [class.sort-hidden]=\"value !== SortDirection.NONE\"\n [@sortNone]=\"value\"\n (click)=\"changeSort(SortDirection.ASC)\">sortable</novo-icon>","import { Directive } from '@angular/core';\nimport { Helpers } from 'novo-elements/utils';\nimport { DataTableState } from '../state/data-table-state.service';\n\n@Directive({\n selector: '[novoDataTableSortFilter]',\n standalone: false,\n})\nexport class NovoDataTableSortFilter<T> {\n constructor(private state: DataTableState<T>) {}\n\n public filter(\n id: string,\n type: string,\n value: any,\n transform: Function,\n allowMultipleFilters: boolean = false,\n selectedOption?: Object,\n ): void {\n let filter;\n\n if (allowMultipleFilters) {\n filter = this.resolveMultiFilter(id, type, value, transform, selectedOption);\n } else {\n if (!Helpers.isBlank(value)) {\n filter = { id, type, value, transform, ...(selectedOption && { selectedOption }) };\n } else {\n filter = undefined;\n }\n }\n\n this.state.filter = filter;\n this.state.checkRetainment('filter');\n this.state.reset(false, true);\n this.state.updates.next({ filter, sort: this.state.sort });\n this.state.onSortFilterChange();\n }\n\n public sort(id: string, value: string, transform: Function): void {\n const sort = { id, value, transform };\n this.state.sort = sort;\n this.state.checkRetainment('sort');\n this.state.reset(false, true);\n this.state.updates.next({ sort, filter: this.state.filter });\n this.state.onSortFilterChange();\n }\n\n public resolveMultiFilter(id: string, type: string, value: any, transform: Function, selectedOption: Object) {\n let filter;\n\n filter = Helpers.convertToArray(this.state.filter);\n\n const filterIndex = filter.findIndex((aFilter) => aFilter && aFilter.id === id);\n if (filterIndex > -1) {\n filter.splice(filterIndex, 1);\n }\n\n if (!Helpers.isBlank(value)) {\n filter = [...filter, { id, type, value, transform, ...(selectedOption && { selectedOption }) }];\n }\n\n if (filter.length < 1) {\n filter = undefined;\n }\n\n return filter;\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-data-table-cell-filter-header',\n template: `\n <div class=\"header\">\n <novo-label>{{ label || labels.filters }}</novo-label>\n <novo-button\n theme=\"dialogue\"\n color=\"negative\"\n size=\"small\"\n icon=\"times\"\n (click)=\"clearFilter.emit()\"\n *ngIf=\"hasFilter\"\n data-automation-id=\"novo-data-table-filter-clear\">\n {{ labels.clear }}\n </novo-button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCellFilterHeader {\n @Input() label: string | number;\n\n @Input()\n set filter(filter: any) {\n this._filter = filter;\n this.hasFilter = !Helpers.isEmpty(filter);\n }\n get filter(): any {\n return this._filter;\n }\n private _filter: any;\n\n public hasFilter = false;\n\n @Output() clearFilter: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(public changeDetectorRef: ChangeDetectorRef, public labels: NovoLabelService) {}\n}\n","import { CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\nimport { NovoDropdownElement } from 'novo-elements/elements/dropdown';\nimport {\n IDataTableChangeEvent,\n IDataTableColumn,\n IDataTableColumnFilterConfig,\n IDataTableColumnFilterOption,\n IDataTableColumnSortConfig,\n IDataTableSortFilter,\n} from '../interfaces';\nimport { NovoDataTableFilterUtils } from '../services/data-table-filter-utils';\nimport { SortDirection } from '../sort-filter';\nimport { NovoDataTableSortFilter } from '../sort-filter/sort-filter.directive';\nimport { DataTableState } from '../state/data-table-state.service';\n\n@Component({\n selector: '[novo-data-table-cell-config]',\n template: `\n <i class=\"bhi-{{ labelIcon }} label-icon\" *ngIf=\"labelIcon\" data-automation-id=\"novo-data-table-header-icon\"></i>\n <label data-automation-id=\"novo-data-table-label\">{{ label }}</label>\n <div>\n <novo-sort-button\n *ngIf=\"config.sortable\"\n data-automation-id=\"novo-data-table-sort\"\n tooltipPosition=\"left\"\n [tooltip]=\"labels.sort\"\n [attr.data-feature-id]=\"'novo-data-table-sort-' + this.id\"\n (sortChange)=\"sort()\"\n [value]=\"sortValue\"></novo-sort-button>\n <novo-dropdown\n *ngIf=\"config.filterable\"\n side=\"left\"\n parentScrollSelector=\".novo-data-table-container\"\n containerClass=\"data-table-dropdown\"\n data-automation-id=\"novo-data-table-filter\"\n [multiple]=\"multiSelect\">\n <novo-icon\n dropdownTrigger\n class=\"filter-button\"\n [class.filter-active]=\"filterActive\"\n [tooltip]=\"labels.filters\"\n tooltipPosition=\"right\"\n [attr.data-feature-id]=\"'novo-data-table-filter-' + this.id\"\n (click)=\"clickedFilter($event)\">filter</novo-icon>\n <ng-container [ngSwitch]=\"config.filterConfig.type\">\n <ng-container *ngSwitchCase=\"'date'\" (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup>\n <ng-container *ngIf=\"!showCustomRange\">\n <novo-option\n [class.active]=\"activeDateFilter === option.label\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + option.label\">\n <span>{{ option.label }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"activeDateFilter === option.label\">check</novo-icon>\n </novo-option>\n </ng-container>\n <novo-option\n [class.active]=\"labels.customDateRange === activeDateFilter\"\n (click)=\"toggleCustomRange($event, true)\"\n *ngIf=\"config.filterConfig.allowCustomRange && !showCustomRange\">\n <span>{{ labels.customDateRange }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"labels.customDateRange === activeDateFilter\">check</novo-icon>\n </novo-option>\n <novo-option class=\"calendar-container\" *ngIf=\"showCustomRange\" keepOpen>\n <novo-stack>\n <div class=\"back-link\" (click)=\"toggleCustomRange($event, false)\">\n <i class=\"bhi-previous\"></i>\n {{ labels.backToPresetFilters }}\n </div>\n <novo-date-picker\n (onSelect)=\"filterData($event)\"\n [(ngModel)]=\"filter\"\n range=\"true\"\n (keydown.escape)=\"handleEscapeKeydown($event)\"></novo-date-picker>\n </novo-stack>\n </novo-option>\n </novo-optgroup>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'select'\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup>\n <novo-option\n [class.active]=\"filter === option\"\n *ngFor=\"let option of config.filterConfig.options\"\n (click)=\"filterData(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + (option?.label || option)\">\n <span>{{ option?.label || option }}</span>\n <novo-icon novoSuffix color=\"positive\" *ngIf=\"option.hasOwnProperty('value') ? filter === option.value : filter === option\">\n check</novo-icon>\n </novo-option>\n </novo-optgroup>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'multi-select'\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup class=\"dropdown-list-filter\" (keydown)=\"multiSelectOptionFilterHandleKeydown($event)\">\n <novo-option class=\"filter-search\" novoInert>\n <novo-field flex>\n <input\n novoInput\n [(ngModel)]=\"optionFilter\"\n (ngModelChange)=\"multiSelectOptionFilter($event)\"\n #optionFilterInput\n data-automation-id=\"novo-data-table-multi-select-option-filter-input\"\n (keydown.enter)=\"multiSelectOptionFilterHandleKeydown($event)\" />\n <novo-icon novoSuffix>search</novo-icon>\n <novo-error class=\"error-text\" [hidden]=\"!error || !multiSelectHasVisibleOptions()\">\n {{ labels.selectFilterOptions }}\n </novo-error>\n </novo-field>\n </novo-option>\n </novo-optgroup>\n <novo-optgroup class=\"dropdown-list-options\" (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-option\n *ngFor=\"let option of config.filterConfig.options\"\n [hidden]=\"multiSelectOptionIsHidden(option)\"\n (click)=\"toggleSelection(option)\"\n [attr.data-automation-id]=\"'novo-data-table-filter-' + (option?.label || option)\">\n <span>{{ option?.label || option }}</span>\n <novo-icon novoSuffix color=\"positive\">\n {{ isSelected(option, multiSelectedOptions) ? 'checkbox-filled' : 'checkbox-empty' }}\n </novo-icon>\n </novo-option>\n </novo-optgroup>\n <novo-option class=\"filter-null-results\" [hidden]=\"multiSelectHasVisibleOptions()\">{{ labels.pickerEmpty }}</novo-option>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'custom'\">\n <ng-container *ngIf=\"dropdown\">\n <novo-data-table-cell-filter-header *ngIf=\"!config.filterConfig?.useCustomHeader\" [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <ng-container *ngTemplateOutlet=\"filterTemplate; context: { $implicit: config, column, dropdown, filter }\"></ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngSwitchDefault (keydown.escape)=\"handleEscapeKeydown($event)\">\n <novo-data-table-cell-filter-header [filter]=\"filter\" (clearFilter)=\"clearFilter()\"></novo-data-table-cell-filter-header>\n <div class=\"optgroup-container\">\n <novo-optgroup>\n <novo-option class=\"filter-search\" novoInert>\n <novo-field flex fullWidth>\n <input\n novoInput\n [type]=\"config.filterConfig.type\"\n [(ngModel)]=\"filter\"\n (ngModelChange)=\"filterData($event)\"\n #filterInput\n data-automation-id=\"novo-data-table-filter-input\"\n (keydown.escape)=\"handleEscapeKeydown($event)\" />\n <novo-icon novoSuffix>search</novo-icon>\n </novo-field>\n </novo-option>\n </novo-optgroup>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"footer\" *ngIf=\"multiSelect\">\n <novo-button theme=\"dialogue\" color=\"dark\" (click)=\"cancel()\" data-automation-id=\"novo-data-table-multi-select-cancel\">\n {{ labels.cancel }}\n </novo-button>\n <novo-button\n theme=\"dialogue\"\n color=\"positive\"\n (click)=\"filterMultiSelect()\"\n data-automation-id=\"novo-data-table-multi-select-filter\">\n {{ labels.filters }}\n </novo-button>\n </div>\n </novo-dropdown>\n </div>\n <div class=\"spacer\"></div>\n <div class=\"data-table-header-resizable\" *ngIf=\"config.resizable\"><span (mousedown)=\"startResize($event)\"> </span></div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCellHeader<T> implements IDataTableSortFilter, OnInit, OnDestroy {\n @ViewChild('filterInput')\n filterInput: ElementRef;\n @ViewChild(NovoDropdownElement)\n dropdown: NovoDropdownElement;\n @ViewChild('optionFilterInput')\n optionFilterInput: ElementRef;\n\n @Input()\n defaultSort: { id: string; value: string };\n\n @Input()\n allowMultipleFilters: boolean = false;\n\n @Input()\n resized: EventEmitter<IDataTableColumn<T>>;\n @Input()\n filterTemplate: TemplateRef<any>;\n\n @Output()\n toggledFilter = new EventEmitter<string>();\n @HostBinding('class.resizable')\n public resizable: boolean;\n\n @Input('novo-data-table-cell-config')\n set column(column: IDataTableColumn<T>) {\n this._column = column;\n this.label = column.type === 'action' ? '' : column.label;\n this.labelIcon = column.labelIcon;\n\n this.config = {\n sortable: !!column.sortable,\n filterable: !!column.filterable,\n resizable: !!column.resizable,\n };\n this.resizable = this.config.resizable;\n\n const transforms: { filter?: Function; sort?: Function } = {};\n\n if (column.filterable && Helpers.isObject(column.filterable)) {\n this.config.filterConfig = column.filterable as IDataTableColumnFilterConfig;\n if (!this.config.filterConfig.type) {\n this.config.filterConfig = { type: 'text' };\n }\n if ((column.filterable as IDataTableColumnFilterConfig).transform) {\n transforms.filter = (column.filterable as IDataTableColumnFilterConfig).transform;\n }\n } else {\n this.config.filterConfig = { type: 'text' };\n }\n\n if (column.sortable && Helpers.isObject(column.sortable)) {\n if ((column.sortable as IDataTableColumnSortConfig).transform) {\n transforms.sort = (column.sortable as IDataTableColumnSortConfig).transform;\n }\n }\n\n if (this.config.filterConfig.type === 'date' && !this.config.filterConfig.options) {\n this.config.filterConfig.options = this.getDefaultDateFilterOptions();\n }\n\n this.config.transforms = transforms;\n }\n get column(): IDataTableColumn<T> {\n return this._column;\n }\n private _column: IDataTableColumn<T>;\n\n private _rerenderSubscription: Subscription;\n private changeTimeout: any;\n\n public label: string;\n public icon: string = 'sortable';\n public labelIcon: string;\n public id: string;\n public filter: any;\n public direction: string;\n public filterActive: boolean = false;\n public sortActive: boolean = false;\n public sortValue: SortDirection = SortDirection.NONE;\n public showCustomRange: boolean = false;\n public activeDateFilter: string;\n public config: {\n sortable: boolean;\n filterable: boolean;\n resizable: boolean;\n transforms?: { filter?: Function; sort?: Function };\n filterConfig?: IDataTableColumnFilterConfig;\n };\n public multiSelect: boolean = false;\n public multiSelectedOptions: Array<any> = [];\n private multiSelectedOptionIsHidden: Array<{ option: string | IDataTableColumnFilterOption; hidden: boolean }> = [];\n public optionFilter: string = '';\n public error: boolean = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public labels: NovoLabelService,\n private state: DataTableState<T>,\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Optional() public _sort: NovoDataTableSortFilter<T>,\n @Optional() public _cdkColumnDef: CdkColumnDef,\n ) {\n this._rerenderSubscription = state.updates.subscribe((change: IDataTableChangeEvent) => this.checkSortFilterState(change));\n }\n\n public ngOnInit(): void {\n if (this._cdkColumnDef) {\n this.id = this._cdkColumnDef.name;\n }\n this.setupFilterOptions();\n\n this.changeDetectorRef.markForCheck();\n }\n\n public setupFilterOptions() {\n this.checkSortFilterState({ filter: this.state.filter, sort: this.state.sort }, true);\n\n this.multiSelect = this.config.filterConfig && this.config.filterConfig.type ? this.config.filterConfig.type === 'multi-select' : false;\n if (this.multiSelect) {\n this.multiSelectedOptions = this.filter ? [...this.filter] : [];\n }\n }\n\n public ngOnDestroy(): void {\n this._rerenderSubscription.unsubscribe();\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n }\n\n public checkSortFilterState(sortFilterState: IDataTableChangeEvent, initialConfig: boolean = false): void {\n if (sortFilterState.sort && sortFilterState.sort.id === this.id) {\n this.icon = `sort-${sortFilterState.sort.value}`;\n this.sortValue = sortFilterState.sort.value === 'asc' ? SortDirection.ASC : SortDirection.DESC;\n this.sortActive = true;\n } else {\n this.icon = 'sortable';\n this.sortValue = SortDirection.NONE;\n this.sortActive = false;\n }\n\n const tableFilter = Helpers.convertToArray(sortFilterState.filter);\n const thisFilter = tableFilter.find((filter) => filter && filter.id === this.id);\n\n if (thisFilter) {\n this.filterActive = true;\n if (initialConfig && thisFilter.type === 'date' && thisFilter.selectedOption) {\n this.activeDateFilter = thisFilter.selectedOption.label || this.labels.customDateRange;\n }\n this.filter = thisFilter.value;\n } else {\n this.filterActive = false;\n this.filter = undefined;\n this.activeDateFilter = undefined;\n this.multiSelectedOptions = [];\n }\n if (this.defaultSort && this.id === this.defaultSort.id) {\n this.icon = `sort-${this.defaultSort.value}`;\n this.sortActive = true;\n }\n this.multiSelect = this.config.filterConfig && this.config.filterConfig.type ? this.config.filterConfig.type === 'multi-select' : false;\n if (this.multiSelect) {\n this.multiSelectedOptions = this.filter ? [...this.filter] : [];\n if (this.config.filterConfig.options) {\n if (typeof this.config.filterConfig.options[0] === 'string') {\n this.multiSelectedOptionIsHidden = (this.config.filterConfig.options as string[]).map(\n (\n option: string,\n ): {\n option: string;\n hidden: boolean;\n } => ({ option, hidden: false }),\n );\n } else {\n this.multiSelectedOptionIsHidden = (this.config.filterConfig.options as IDataTableColumnFilterOption[]).map(\n (option: IDataTableColumnFilterOption): { option: IDataTableColumnFilterOption; hidden: boolean } => ({\n option,\n hidden: false,\n }),\n );\n }\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n public isSelected(option, optionsList) {\n if (optionsList) {\n const optionValue = option.hasOwnProperty('value') ? option.value : option;\n\n const found = optionsList.find((item) => this.optionPresentCheck(item, optionValue));\n return found !== undefined;\n }\n return false;\n }\n\n public toggleSelection(option) {\n const optionValue = option.hasOwnProperty('value') ? option.value : option;\n\n const optionIndex = this.multiSelectedOptions.findIndex((item) => this.optionPresentCheck(item, optionValue));\n this.error = false;\n if (optionIndex > -1) {\n this.multiSelectedOptions.splice(optionIndex, 1);\n if (this.optionFilter && !this.getOptionText(option).toLowerCase().startsWith(this.optionFilter.toLowerCase())) {\n this.multiSelectedOptionIsHidden[this.multiSelectedOptionIsHidden.findIndex((record) => record.option === option)].hidden = true;\n }\n } else {\n this.multiSelectedOptions.push(optionValue);\n }\n }\n\n public optionPresentCheck(item, optionValue): boolean {\n if (item.hasOwnProperty('value')) {\n return item.value === optionValue;\n } else {\n return item === optionValue;\n }\n }\n\n public cancel(): void {\n this.multiSelectedOptions = this.filter ? [...this.filter] : [];\n this.dropdown.closePanel();\n this.clearOptionFilter();\n }\n\n public filterMultiSelect(): void {\n if (this.multiSelectedOptions.length === 0 && !this.filter) {\n this.multiSelectHasVisibleOptions() && this.dropdown ? (this.error = true) : null;\n } else {\n this.clearOptionFilter();\n const actualFilter = this.multiSelectedOptions.length > 0 ? [...this.multiSelectedOptions] : undefined;\n this.filterData(actualFilter);\n this.dropdown.closePanel();\n }\n }\n\n public multiSelectOptionFilter(optionFilter: string) {\n this.multiSelectedOptionIsHidden.forEach((record) => {\n if (record.option) {\n record.hidden = !(\n this.getOptionText(record.option).toLowerCase().startsWith(optionFilter.toLowerCase()) ||\n this.isSelected(record.option, this.multiSelectedOptions)\n );\n }\n });\n }\n\n public multiSelectOptionIsHidden(option: string | IDataTableColumnFilterOption): boolean {\n return this.multiSelectedOptionIsHidden.find((record) => record.option === option).hidden;\n }\n\n public multiSelectHasVisibleOptions(): boolean {\n return this.multiSelectedOptionIsHidden.some((record) => !record.hidden);\n }\n\n private getOptionText(option: string | IDataTableColumnFilterOption): string {\n if (typeof option !== 'object') {\n return option.toString();\n } else {\n const opt = option as IDataTableColumnFilterOption;\n return (opt.label.length > 0 ? opt.label : opt.value).toString();\n }\n }\n\n @HostListener('keydown', ['$event'])\n public multiSelectOptionFilterHandleKeydown(event: KeyboardEvent) {\n if (this.multiSelect) {\n this.error = false;\n if (this.dropdown.panelOpen && event.key === Key.Escape) {\n // escape should clear text box and close\n Helpers.swallowEvent(event);\n this.clearOptionFilter();\n this.dropdown.closePanel();\n } else if (event.key === Key.Enter) {\n Helpers.swallowEvent(event);\n this.filterMultiSelect();\n } else if (\n (event.keyCode >= 65 && event.keyCode <= 90) ||\n (event.keyCode >= 96 && event.keyCode <= 105) ||\n (event.keyCode >= 48 && event.keyCode <= 57)\n ) {\n this.optionFilterInput.nativeElement.focus();\n }\n }\n }\n\n @HostListener('keydown.escape', ['$event'])\n public handleEscapeKeydown(event: KeyboardEvent) {\n if (!this.multiSelect) {\n this.error = false;\n this.dropdown.closePanel();\n }\n }\n\n private clearOptionFilter() {\n this.error = false;\n if (this.optionFilter.length > 0) {\n this.optionFilter = '';\n this.multiSelectedOptionIsHidden.forEach((record) => {\n record.hidden = false;\n });\n }\n }\n\n public startResize(mouseDownEvent: MouseEvent): void {\n mouseDownEvent.preventDefault();\n const minimumWidth = 60 + (this.config.filterable ? 30 : 0) + (this.config.sortable ? 30 : 0);\n const startingWidth: number = this.elementRef.nativeElement.getBoundingClientRect().width;\n const mouseMoveSubscription: Subscription = fromEvent(window.document, 'mousemove').subscribe((middleMouseEvent: MouseEvent) => {\n const differenceWidth: number = middleMouseEvent.clientX - mouseDownEvent.clientX;\n let width: number = startingWidth + differenceWidth;\n if (width < minimumWidth) {\n width = minimumWidth;\n }\n this.setWidth(width)\n });\n\n const mouseUpSubscription: Subscription = fromEvent(window.document, 'mouseup').subscribe(() => {\n mouseUpSubscription.unsubscribe();\n mouseMoveSubscription.unsubscribe();\n this.changeDetectorRef.markForCheck();\n });\n this.subscriptions.push(mouseMoveSubscription);\n this.subscriptions.push(mouseUpSubscription);\n }\n\n public setWidth(width: number) {\n this._column.width = width;\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', `${width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', `${width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${width}px`);\n this.changeDetectorRef.markForCheck();\n this.resized.next(this._column);\n }\n\n public toggleCustomRange(event: Event, value: boolean): void {\n Helpers.swallowEvent(event);\n this.showCustomRange = value;\n this.changeDetectorRef.markForCheck();\n this.dropdown.openPanel(); // Ensures that the panel correctly updates to the dynamic size of the dropdown\n }\n\n public clickedFilter(clickEvt: MouseEvent): void {\n if ((typeof this.config.filterConfig === 'object') && this.config.filterConfig.type === 'custom' && !this.filterTemplate) {\n this.toggledFilter.next(this.id);\n clickEvt.stopImmediatePropagation();\n return;\n }\n this.focusInput();\n if (this.multiSelect && this.dropdown) {\n this.dropdown._handleKeydown = (event: KeyboardEvent) => {\n this.multiSelectOptionFilterHandleKeydown(event);\n };\n this.changeDetectorRef.markForCheck();\n }\n }\n\n public focusInput(): void {\n if (this.filterInput?.nativeElement) {\n setTimeout(() => this.filterInput.nativeElement.focus());\n }\n }\n\n public sort(): void {\n if (this.changeTimeout) {\n clearTimeout(this.changeTimeout);\n }\n this.changeTimeout = setTimeout(() => {\n this.direction = this.getNextSortDirection(this.direction);\n this._sort.sort(this.id, this.direction, this.config.transforms.sort);\n this.changeDetectorRef.markForCheck();\n }, 300);\n }\n\n public filterData(filter?: any): void {\n let actualFilter = NovoDataTableFilterUtils.constructFilter(filter, this.config.filterConfig.type, this.multiSelect);\n const selectedOption = this.config.filterConfig.type === 'date' && filter ? filter : undefined;\n this.activeDateFilter = selectedOption ? selectedOption.label : undefined;\n\n if (this.changeTimeout) {\n clearTimeout(this.changeTimeout);\n }\n\n this.changeTimeout = setTimeout(() => {\n if (actualFilter === '') {\n actualFilter = undefined;\n }\n this._sort.filter(\n this.id,\n this.config.filterConfig.type,\n actualFilter,\n this.config.transforms.filter,\n this.allowMultipleFilters,\n selectedOption,\n );\n this.changeDetectorRef.markForCheck();\n }, 300);\n }\n\n public clearFilter(): void {\n this.filter = undefined;\n this.multiSelectedOptions = [];\n this.activeDateFilter = undefined;\n this.filterData(undefined);\n this.clearOptionFilter();\n this.dropdown.closePanel();\n }\n\n private getNextSortDirection(direction: string): string {\n if (!direction) {\n return 'asc';\n }\n if (direction === 'asc') {\n return 'desc';\n }\n return 'asc';\n }\n\n private getDefaultDateFilterOptions(): IDataTableColumnFilterOption[] {\n const opts: IDataTableColumnFilterOption[] = [\n { label: this.labels.past1Day, min: -1, max: 0 },\n { label: this.labels.past7Days, min: -7, max: 0 },\n { label: this.labels.past30Days, min: -30, max: 0 },\n { label: this.labels.past90Days, min: -90, max: 0 },\n { label: this.labels.past1Year, min: -366, max: 0 },\n { label: this.labels.next1Day, min: 0, max: 1 },\n { label: this.labels.next7Days, min: 0, max: 7 },\n { label: this.labels.next30Days, min: 0, max: 30 },\n { label: this.labels.next90Days, min: 0, max: 90 },\n { label: this.labels.next1Year, min: 0, max: 366 },\n ];\n return opts;\n }\n}\n","import { CdkColumnDef, CdkHeaderCell } from '@angular/cdk/table';\nimport { Directive, ElementRef, HostBinding, Input, OnInit, Renderer2 } from '@angular/core';\nimport { IDataTableColumn } from '../interfaces';\n\n@Directive({\n selector: 'novo-data-table-header-cell',\n standalone: false,\n})\nexport class NovoDataTableHeaderCell<T> extends CdkHeaderCell implements OnInit {\n @HostBinding('attr.role')\n public role = 'columnheader';\n\n @Input()\n public column: IDataTableColumn<T>;\n\n constructor(columnDef: CdkColumnDef, private elementRef: ElementRef, private renderer: Renderer2) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-column-header-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-header-cell');\n }\n\n public ngOnInit(): void {\n if (this.column.width) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${this.column.width}px`);\n }\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n TemplateRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { IDataTableColumn } from '../interfaces';\n\n@Component({\n selector: 'novo-data-table-cell',\n template: ' <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row, col: column }\"></ng-container> ',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCell<T> extends CdkCell implements OnInit, OnDestroy {\n @HostBinding('attr.role') role = 'gridcell';\n\n @Input() row: T;\n @Input() template: TemplateRef<any>;\n @Input() column: IDataTableColumn<T>;\n @Input() resized: EventEmitter<IDataTableColumn<T>>;\n private subscriptions: Subscription[] = [];\n\n constructor(columnDef: CdkColumnDef, private elementRef: ElementRef, private renderer: Renderer2) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-cell');\n }\n\n public ngOnInit(): void {\n if (this.column.cellClass) {\n this.renderer.addClass(this.elementRef.nativeElement, this.column.cellClass(this.row));\n }\n\n if (this.column.rightAlignCellContent) {\n this.renderer.addClass(this.elementRef.nativeElement, 'novo-data-table-cell-align-right');\n }\n\n this.calculateWidths();\n this.subscriptions.push(\n this.resized.subscribe((column: IDataTableColumn<T>) => {\n if (column === this.column) {\n this.calculateWidths();\n }\n }),\n );\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n }\n\n private calculateWidths(): void {\n if (this.column.width) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'min-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'max-width', `${this.column.width}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${this.column.width}px`);\n }\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-checkbox-cell',\n template: `\n <div class=\"data-table-checkbox\" (click)=\"onClick()\" [tooltip]=\"getTooltip()\" tooltipPosition=\"right\">\n <input type=\"checkbox\" [checked]=\"checked\" />\n <label>\n <i [class.bhi-checkbox-disabled]=\"isAtLimit\" [class.bhi-checkbox-empty]=\"!checked\" [class.bhi-checkbox-filled]=\"checked\"></i>\n </label>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableCheckboxCell<T> extends CdkCell implements OnInit, OnDestroy {\n @HostBinding('attr.role')\n public role = 'gridcell';\n\n @Input()\n public row: T;\n @Input()\n public maxSelected: number = undefined;\n\n public checked: boolean = false;\n\n private selectionSubscription: Subscription;\n private resetSubscription: Subscription;\n\n get isAtLimit(): boolean {\n return this.maxSelected && this.dataTable.state.selectedRows.size >= this.maxSelected && !this.checked;\n }\n\n constructor(\n public columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-checkbox-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-checkbox-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-checkbox-cell');\n\n this.selectionSubscription = this.dataTable.state.selectionSource.subscribe(() => {\n this.checked = this.dataTable.isSelected(this.row) || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n this.ref.markForCheck();\n });\n this.resetSubscription = this.dataTable.state.resetSource.subscribe(() => {\n this.checked = false;\n this.ref.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this.checked = this.dataTable.isSelected(this.row) || (this.dataTable?.canSelectAll && this.dataTable?.allMatchingSelected);\n }\n\n public onClick(): void {\n if (!this.isAtLimit) {\n this.dataTable.selectRow(this.row, 'onClick');\n }\n }\n\n public getTooltip() {\n return this.isAtLimit ? 'More than ' + this.maxSelected + ' items are not able to be selected at one time' : '';\n }\n\n public ngOnDestroy(): void {\n if (this.selectionSubscription) {\n this.selectionSubscription.unsubscribe();\n }\n if (this.resetSubscription) {\n this.resetSubscription.unsubscribe();\n }\n }\n}\n","import { CdkCell, CdkColumnDef } from '@angular/cdk/table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from '../data-table.token';\n\n@Component({\n selector: 'novo-data-table-expand-cell',\n template: ' <i class=\"bhi-next data-table-icon\" novo-data-table-expander=\"true\" [class.expanded]=\"expanded\"></i> ',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableExpandCell<T> extends CdkCell implements OnInit, OnDestroy {\n @HostBinding('attr.role')\n public role = 'gridcell';\n\n @Input()\n public row: T;\n\n public expanded: boolean = false;\n\n private expandSubscription: Subscription;\n\n constructor(\n public columnDef: CdkColumnDef,\n elementRef: ElementRef,\n renderer: Renderer2,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n private ref: ChangeDetectorRef,\n ) {\n super(columnDef, elementRef);\n renderer.setAttribute(elementRef.nativeElement, 'data-automation-id', `novo-expand-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, `novo-expand-column-${columnDef.cssClassFriendlyName}`);\n renderer.addClass(elementRef.nativeElement, 'novo-data-table-expand-cell');\n\n this.expandSubscription = this.dataTable.state.expandSource.subscribe(() => {\n this.expanded = this.dataTable.isExpanded(this.row);\n this.ref.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this.expanded = this.dataTable.isExpanded(this.row);\n }\n\n public onClick(): void {\n this.dataTable.expandRow(this.row);\n }\n\n public ngOnDestroy(): void {\n if (this.expandSubscription) {\n this.expandSubscription.unsubscribe();\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Output } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { DataTableState } from './state/data-table-state.service';\nimport { BooleanInput } from 'novo-elements/utils';\n\n@Component({\n selector: 'novo-data-table-clear-button',\n template: `\n <novo-dropdown side=\"bottom-right\" class=\"novo-data-table-clear-button\" data-automation-id=\"novo-data-table-clear-dropdown\">\n <novo-button type=\"button\" theme=\"primary\" color=\"negative\" icon=\"collapse\" data-automation-id=\"novo-data-table-clear-dropdown-btn\">\n {{ labels.clear }}\n </novo-button>\n <list>\n <item\n *ngIf=\"state.selected.length > 0\"\n (click)=\"clearSelected()\"\n data-automation-id=\"novo-data-table-clear-dropdown-clear-selected\"\n >{{ labels.clearSelected }}</item>\n <item *ngIf=\"state.sort\" (click)=\"clearSort()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-sort\">{{\n labels.clearSort\n }}</item>\n <item *ngIf=\"state.filter || state.globalSearch\" (click)=\"clearFilter()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-filter\">{{\n labels.clearFilter\n }}</item>\n <item *ngIf=\"state.where\" (click)=\"clearSearch()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-search\">{{\n labels.clearSearch\n }}</item>\n <item *ngIf=\"(state.sort && (state.filter || state.globalSearch)) || (state.sort && state.where) || (state.where && (state.filter || state.globalSearch))\"\n (click)=\"clearAll()\" data-automation-id=\"novo-data-table-clear-dropdown-clear-all\"><b>{{\n labels.clearAllNormalCase\n }}</b></item>\n </list>\n </novo-dropdown>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableClearButton<T> {\n @Output()\n selectedClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n sortClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n filterClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n queryClear: EventEmitter<boolean> = new EventEmitter();\n @Output()\n allClear: EventEmitter<boolean> = new EventEmitter();\n @BooleanInput()\n emitOnly: boolean = false;\n\n constructor(public state: DataTableState<T>, private ref: ChangeDetectorRef, public labels: NovoLabelService) { }\n\n clearSort(): void {\n if (!this.emitOnly) {\n this.state.clearSort();\n }\n this.sortClear.emit(true);\n }\n\n clearFilter(): void {\n if (!this.emitOnly) {\n this.state.clearFilter();\n }\n this.filterClear.emit(true);\n }\n\n clearSearch(): void {\n if (!this.emitOnly) {\n this.state.clearQuery();\n }\n this.queryClear.emit(true);\n }\n\n clearSelected(): void {\n if (!this.emitOnly) {\n this.state.clearSelected();\n }\n this.selectedClear.emit(true);\n }\n\n clearAll(): void {\n if (!this.emitOnly) {\n this.state.reset();\n }\n this.allClear.emit(true);\n this.selectedClear.emit(true);\n this.sortClear.emit(true);\n this.filterClear.emit(true);\n this.queryClear.emit(true);\n }\n}\n","import { Directive, HostListener, Inject, Input, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Helpers } from 'novo-elements/utils';\nimport { NovoDataTableRef, NOVO_DATA_TABLE_REF } from './data-table.token';\nimport { DataTableState } from './state/data-table-state.service';\n\n@Directive({\n selector: '[novoDataTableExpand]',\n standalone: false,\n})\nexport class NovoDataTableExpandDirective<T> implements OnDestroy {\n @Input()\n row: T;\n @Input('novoDataTableExpand')\n template: TemplateRef<any>;\n\n private subscription: Subscription;\n\n constructor(\n public vcRef: ViewContainerRef,\n private state: DataTableState<T>,\n @Inject(NOVO_DATA_TABLE_REF) private dataTable: NovoDataTableRef,\n ) {\n this.subscription = this.state.expandSource.subscribe((targetId?: number) => {\n if (this.shouldExpandAllRows(targetId) || this.shouldExpandOneRow(targetId)) {\n if (dataTable.isExpanded(this.row)) {\n this.render();\n } else {\n this.clear();\n }\n }\n });\n }\n\n shouldExpandAllRows = (targetId: number): boolean => targetId === undefined;\n\n shouldExpandOneRow = (targetId: number) => targetId === (this.row as unknown as { id: number }).id;\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if ((event.target as Element).hasAttribute('novo-data-table-expander')) {\n Helpers.swallowEvent(event);\n this.dataTable.expandRow(this.row);\n }\n }\n\n private clear(): void {\n this.vcRef.clear();\n }\n\n private render(): void {\n this.vcRef.clear();\n if (this.template && this.row) {\n this.vcRef.createEmbeddedView(this.template, { $implicit: this.row });\n }\n }\n}\n","import { DataSource } from '@angular/cdk/table';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { merge, Observable, of } from 'rxjs';\nimport { catchError, map, startWith, switchMap } from 'rxjs/operators';\nimport { IDataTableService } from './interfaces';\nimport { DataTableState } from './state/data-table-state.service';\n\nexport class DataTableSource<T> extends DataSource<T> {\n public total = 0;\n public currentTotal = 0;\n public current = 0;\n public loading = false;\n public pristine = true;\n public data: T[];\n\n private totalSet: boolean = false;\n\n get totallyEmpty(): boolean {\n return this.total === 0;\n }\n\n get currentlyEmpty(): boolean {\n return this.current === 0;\n }\n\n constructor(private tableService: IDataTableService<T>, private state: DataTableState<T>, private ref: ChangeDetectorRef) {\n super();\n }\n\n public connect(): Observable<any> {\n const displayDataChanges: any = [this.state.updates];\n return merge(...displayDataChanges).pipe(\n startWith(null),\n switchMap(() => {\n this.pristine = false;\n this.loading = true;\n this.state.dataLoadingSource.next(this.loading);\n return this.tableService.getTableResults(\n this.state.sort,\n this.state.filter,\n this.state.page,\n this.state.pageSize,\n this.state.globalSearch,\n this.state.outsideFilter,\n this.state.where,\n );\n }),\n map((data: { results: T[]; total: number }) => {\n if (!this.totalSet || this.state.isForceRefresh) {\n this.total = data.total;\n this.totalSet = true;\n this.state.isForceRefresh = false;\n } else if (data.total > this.total) {\n this.total = data.total;\n }\n this.currentTotal = data.total;\n this.current = data.results.length;\n this.data = data.results;\n // Clear selection\n if (!this.state.retainSelected) {\n this.state.selectedRows.clear();\n }\n this.state.retainSelected = false;\n this.state.onSelectionChange();\n // Mark changes\n setTimeout(() => {\n this.ref.markForCheck();\n setTimeout(() => {\n this.loading = false;\n this.state.dataLoadingSource.next(this.loading);\n this.state.dataLoaded.next();\n this.ref.markForCheck();\n });\n });\n return data.results;\n }),\n catchError((err, caught) => {\n console.error(err, caught);\n this.loading = false;\n return of(null);\n }),\n );\n }\n\n public disconnect(): void {}\n}\n","import { Observable, of } from 'rxjs';\nimport { Helpers } from 'novo-elements/utils';\nimport { IDataTableFilter, IDataTableService, IDataTableSort } from '../interfaces';\n\nexport class StaticDataTableService<T> implements IDataTableService<T> {\n originalData: T[];\n\n constructor(private currentData: T[] = []) {\n this.originalData = [...currentData];\n }\n\n public getTableResults(\n sort: IDataTableSort,\n filter: IDataTableFilter | IDataTableFilter[],\n page: number = 0,\n pageSize: number,\n globalSearch?: string,\n outsideFilter?: any,\n where?: { query: string; form: any },\n ): Observable<{ results: T[]; total: number }> {\n this.currentData = [...this.originalData];\n let total: number = this.originalData.length;\n if (this.currentData.length !== 0) {\n if (globalSearch) {\n this.currentData = this.currentData.filter((item) =>\n Object.keys(item).some((key) => `${item[key]}`.toLowerCase().includes(globalSearch.toLowerCase())),\n );\n total = this.currentData.length;\n }\n if (filter) {\n this.currentData = this.filterData(this.currentData, filter);\n total = this.currentData.length;\n }\n if (sort) {\n this.currentData = this.currentData.sort(Helpers.sortByField(sort.id, sort.value === 'desc'));\n total = this.currentData.length;\n }\n if (!sort && !filter && !globalSearch && !outsideFilter) {\n this.currentData = [...this.originalData];\n }\n if (!Helpers.isBlank(page) && !Helpers.isBlank(pageSize)) {\n this.currentData = this.currentData.slice(page * pageSize, (page + 1) * pageSize);\n }\n }\n return of({ results: this.currentData, total });\n }\n\n public filterData(currentData: T[], filter: IDataTableFilter | IDataTableFilter[]): T[] {\n const filters = Helpers.convertToArray(filter);\n filters.forEach((aFilter) => {\n if (Array.isArray(aFilter.value)) {\n const values = Helpers.convertToArray(aFilter.value).map(Helpers.escapeString);\n currentData = currentData.filter(Helpers.filterByField(aFilter.id, values));\n } else {\n const value = Helpers.escapeString(aFilter.value);\n currentData = currentData.filter(Helpers.filterByField(aFilter.id, value));\n }\n });\n return currentData;\n }\n}\n","import { CdkHeaderRow, CDK_ROW_TEMPLATE } from '@angular/cdk/table';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'novo-data-table-header-row',\n template: CDK_ROW_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableHeaderRow extends CdkHeaderRow {\n @HostBinding('class')\n public rowClass = 'novo-data-table-header-row';\n @HostBinding('class.fixed-header')\n @Input()\n public fixedHeader: boolean = false;\n @HostBinding('attr.role')\n public role = 'row';\n}\n","import { CdkRow, CDK_ROW_TEMPLATE } from '@angular/cdk/table';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'novo-data-table-row',\n template: CDK_ROW_TEMPLATE,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTableRow extends CdkRow {\n @HostBinding('class')\n public rowClass = 'novo-data-table-row';\n @HostBinding('attr.role')\n public role = 'row';\n\n @HostBinding('attr.id')\n @Input()\n id;\n\n @HostBinding('attr.data-automation-id')\n @Input()\n dataAutomationId;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { IDataTablePaginationEvent } from '../interfaces';\nimport { DataTableState } from '../state/data-table-state.service';\n\nconst MAX_PAGES_DISPLAYED = 5;\n\n@Component({\n selector: 'novo-data-table-pagination',\n template: `\n <ng-container *ngIf=\"theme === 'basic' || theme === 'basic-wide'\">\n <div class=\"novo-data-table-pagination-size\">\n <novo-tiles\n class=\"pagination-tiles\"\n *ngIf=\"displayedPageSizeOptions.length > 1\"\n [(ngModel)]=\"pageSize\"\n [options]=\"displayedPageSizeOptions\"\n (onChange)=\"changePageSize($event)\"\n data-automation-id=\"novo-data-table-pagination-tiles\"\n >\n </novo-tiles>\n <div *ngIf=\"displayedPageSizeOptions.length <= 1\">{{ pageSize }}</div>\n </div>\n\n <div class=\"novo-data-table-range-label-long\" data-automation-id=\"novo-data-table-pagination-range-label-long\">\n {{ longRangeLabel }}\n </div>\n <div class=\"novo-data-table-range-label-short\" data-automation-id=\"novo-data-table-pagination-range-label-short\">\n {{ shortRangeLabel }}\n </div>\n <span class=\"spacer novo-data-table-spacer\" *ngIf=\"theme === 'basic-wide'\"></span>\n <novo-button\n theme=\"dialogue\"\n type=\"button\"\n class=\"novo-data-table-pagination-navigation-previous\"\n (click)=\"previousPage()\"\n icon=\"previous\"\n side=\"left\"\n [disabled]=\"!hasPreviousPage()\"\n data-automation-id=\"novo-data-table-pagination-previous\"\n >\n <span>{{ labels.previous }}</span>\n </novo-button>\n <novo-button\n theme=\"dialogue\"\n type=\"button\"\n class=\"novo-data-table-pagination-navigation-next\"\n (click)=\"nextPage()\"\n icon=\"next\"\n side=\"right\"\n [disabled]=\"!hasNextPage()\"\n data-automation-id=\"novo-data-table-pagination-next\"\n >\n <span>{{ labels.next }}</span>\n </novo-button>\n </ng-container>\n <ng-container *ngIf=\"theme === 'standard'\">\n <h5 class=\"rows\">{{ labels.itemsPerPage }}</h5>\n <novo-select\n [options]=\"displayedPageSizeOptions\"\n [placeholder]=\"labels.select\"\n [(ngModel)]=\"pageSize\"\n (onSelect)=\"changePageSize($event.selected)\"\n data-automation-id=\"pager-select\"\n [attr.data-feature-id]=\"dataFeatureId\"\n >\n </novo-select>\n <div *ngIf=\"showPaginationTotalRecordCount && !loading && !errorLoading\" class=\"novo-data-table-of-total-amount\" data-automation-id=\"novo-data-table-of-total-amount\">\n {{ labels.ofXAmount(length) }}\n </div>\n <span class=\"spacer\"></span>\n <ul *ngIf=\"!loading && !errorLoading\" class=\"pager\" data-automation-id=\"pager\">\n <li class=\"page\" (click)=\"selectPage(page - 1)\" [ngClass]=\"{ disabled: page === 0 }\">\n <i class=\"bhi-previous\" data-automation-id=\"pager-previous\"></i>\n </li>\n <li class=\"page\" [ngClass]=\"{ active: p.number === page + 1 }\" *ngFor=\"let p of pages\" (click)=\"selectPage(p.number - 1)\">\n {{ p.text }}\n </li>\n <li class=\"page\" (click)=\"selectPage(page + 1)\" [ngClass]=\"{ disabled: page + 1 === totalPages }\">\n <i class=\"bhi-next\" data-automation-id=\"pager-next\"></i>\n </li>\n </ul>\n <novo-spinner *ngIf=\"loading\"></novo-spinner>\n <button *ngIf=\"errorLoading\"\n theme=\"primary\"\n color=\"negative\"\n icon=\"refresh\"\n (click)=\"paginationRefreshSubject.next()\">{{ labels.refreshPagination }}</button>\n </ng-container>\n `,\n styleUrls: ['./data-table-pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class NovoDataTablePagination<T> implements OnInit, OnDestroy {\n @HostBinding('class')\n @Input()\n theme: string = 'standard';\n\n @Input()\n get page(): number {\n return this._page;\n }\n set page(page: number) {\n this._page = page;\n this.changeDetectorRef.markForCheck();\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.state.page = this._page;\n this.updateDisplayedPageSizeOptions();\n }\n _page: number = 0;\n\n @Input()\n get pageSize(): number {\n return this._pageSize;\n }\n set pageSize(pageSize: number) {\n this._pageSize = pageSize;\n this.updateDisplayedPageSizeOptions();\n this.state.pageSize = this._pageSize;\n }\n private _pageSize: number;\n @Input() dataFeatureId: string;\n\n @Input()\n get pageSizeOptions() {\n return this._pageSizeOptions;\n }\n set pageSizeOptions(pageSizeOptions: any[]) {\n this._pageSizeOptions = pageSizeOptions;\n this.updateDisplayedPageSizeOptions();\n }\n private _pageSizeOptions = [];\n\n @Input()\n public canSelectAll: boolean = false;\n @Input()\n public allMatchingSelected: boolean = false;\n @Input()\n public loading: boolean = false;\n @Input()\n public errorLoading: boolean = false;\n @Input()\n public paginationRefreshSubject = new Subject<void>();\n @Input()\n public showPaginationTotalRecordCount: boolean = false;\n\n @Input()\n get length(): number {\n return this._length;\n }\n set length(length: number) {\n this._length = length;\n this.changeDetectorRef.markForCheck();\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n }\n _length: number = 0;\n\n @Output() pageChange = new EventEmitter<IDataTablePaginationEvent>();\n\n public displayedPageSizeOptions: { value: string; label: string }[];\n public longRangeLabel: string;\n public shortRangeLabel: string;\n public pages: { number: number; text: string; active: boolean }[];\n\n private resetSubscription: Subscription;\n public totalPages: number;\n private _initialized: boolean;\n\n constructor(private changeDetectorRef: ChangeDetectorRef, public labels: NovoLabelService, private state: DataTableState<T>) {\n this.resetSubscription = this.state.resetSource.subscribe(() => {\n this.page = 0;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n public ngOnInit(): void {\n this._initialized = true;\n this.updateDisplayedPageSizeOptions();\n }\n\n public ngOnDestroy(): void {\n this.resetSubscription.unsubscribe();\n }\n\n public selectPage(page) {\n this.state.checkRetainment('page', this.canSelectAll && this.allMatchingSelected);\n this.page = page;\n this.emitPageEvent();\n }\n\n public nextPage(): void {\n this.state.checkRetainment('page', this.canSelectAll && this.allMatchingSelected);\n if (!this.hasNextPage()) {\n return;\n }\n this.page++;\n this.pages = this.getPages(this.page, this.totalPages);\n this.emitPageEvent();\n }\n\n public previousPage(): void {\n this.state.checkRetainment('page', this.canSelectAll && this.allMatchingSelected);\n if (!this.hasPreviousPage()) {\n return;\n }\n this.page--;\n this.pages = this.getPages(this.page, this.totalPages);\n this.emitPageEvent();\n }\n\n public hasPreviousPage(): boolean {\n return this.page >= 1 && this.pageSize !== 0;\n }\n\n public hasNextPage(): boolean {\n const numberOfPages = Math.ceil(this.length / this.pageSize) - 1;\n return this.page < numberOfPages && this.pageSize !== 0;\n }\n\n public changePageSize(pageSize: number): void {\n this.page = 0;\n this.pageSize = pageSize;\n this.emitPageEvent(true);\n }\n\n private updateDisplayedPageSizeOptions(): void {\n if (!this._initialized) {\n return;\n }\n if (!this.displayedPageSizeOptions) {\n this.displayedPageSizeOptions = [];\n this.pageSizeOptions.forEach((option: any) => {\n if (option.hasOwnProperty('value')) {\n this.displayedPageSizeOptions.push(option);\n } else {\n this.displayedPageSizeOptions.push({\n value: option,\n label: option,\n });\n }\n });\n }\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n this.changeDetectorRef.detectChanges();\n }\n\n private emitPageEvent(isPageSizeChange: boolean = false): void {\n const event = {\n page: this.page,\n pageSize: this.pageSize,\n length: this.length,\n filter: this.state.filter,\n sort: this.state.sort,\n };\n this.pageChange.next(event);\n this.state.page = this.page;\n this.state.pageSize = this.pageSize;\n this.longRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, false);\n this.shortRangeLabel = this.labels.getRangeText(this.page, this.pageSize, this.length, true);\n this.totalPages = this.calculateTotalPages();\n this.pages = this.getPages(this.page, this.totalPages);\n this.state.updates.next(event);\n this.state.onPaginationChange(isPageSizeChange, this.pageSize);\n }\n\n private calculateTotalPages() {\n const totalPages = this.pageSize < 1 ? 1 : Math.ceil(this.length / this.pageSize);\n return Math.max(totalPages || 0, 1);\n }\n\n private makePage(number: number, text: string, isActive: boolean): { number: number; text: string; active: boolean } {\n return {\n number,\n text,\n active: isActive,\n };\n }\n\n private getPages(currentPage: number, totalPages: number): { number: number; text: string; active: boolean }[] {\n const pages = [];\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized = MAX_PAGES_DISPLAYED < totalPages;\n\n // Recompute if maxPagesDisplayed\n if (isMaxSized) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(MAX_PAGES_DISPLAYED / 2), 1);\n endPage = startPage + MAX_PAGES_DISPLAYED - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - MAX_PAGES_DISPLAYED + 1;\n }\n }\n\n // Add page number links\n for (let number = startPage; number <= endPage; number++) {\n const page = this.makePage(number, number.toString(), number === currentPage);\n pages.push(page);\n }\n return pages;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers } from 'novo-elements/utils';\nimport { IDataTableColumn } from './interfaces';\n\nexport function interpolateCell<T>(value: any, col: IDataTableColumn<T>): string {\n if (col.format) {\n return Helpers.interpolateWithFallback(col.format, value);\n }\n return value;\n}\n\n@Pipe({\n name: 'dataTableInterpolate',\n pure: true,\n standalone: false,\n})\nexport class DataTableInterpolatePipe<T> implements PipeTransform {\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return interpolateCell<T>(value, column);\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableDateRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableDateRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return column.format ? value : this.labels.formatDate(interpolateCell<T>(value, column));\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableDateTimeRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableDateTimeRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return column.format ? value : this.labels.formatDateShort(interpolateCell<T>(value, column));\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableTimeRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableTimeRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n return column.format ? value : this.labels.formatTime(interpolateCell<T>(value, column));\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableNumberRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableNumberRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>, isPercent: boolean = false): string {\n if (!Helpers.isEmpty(value)) {\n let val = interpolateCell<T>(value, column);\n if (isPercent && Helpers.isNumber(val)) {\n val = `${Number(val) * 100}`;\n }\n return `${this.labels.formatNumber(val)}${isPercent ? '%' : ''}`;\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableBigDecimalRenderer',\n pure: true,\n standalone: false,\n})\nexport class DataTableBigDecimalRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n const val = interpolateCell<T>(value, column);\n return this.labels.formatBigDecimal(Number(val), column.configuration);\n }\n return '';\n }\n}\n\n@Pipe({\n name: 'dataTableCurrencyRenderer',\n pure: true,\n standalone: false,\n})\nexport class DateTableCurrencyRendererPipe<T> implements PipeTransform {\n constructor(private labels: NovoLabelService) {}\n transform(value: any, column: IDataTableColumn<T>): string {\n if (!Helpers.isEmpty(value)) {\n const val = interpolateCell<T>(value, column);\n return this.labels.formatCurrency(Number(val));\n }\n return '';\n }\n}\n","import { animate, state as animState, style, transition, trigger } from '@angular/animations';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { BooleanInput, Helpers, notify } from 'novo-elements/utils';\nimport { NovoTemplate } from 'novo-elements/elements/common';\nimport { NovoDataTableCellHeader } from './cell-headers/data-table-header-cell.component';\nimport { DataTableSource } from './data-table.source';\nimport { NOVO_DATA_TABLE_REF } from './data-table.token';\nimport {\n IDataTableChangeEvent,\n IDataTableColumn,\n IDataTablePaginationOptions,\n IDataTablePreferences,\n IDataTableSearchOptions,\n IDataTableSelectionOption,\n IDataTableService,\n} from './interfaces';\nimport { ListInteractionDictionary, ListInteractionEvent } from './ListInteractionTypes';\nimport { StaticDataTableService } from './services/static-data-table.service';\nimport { DataTableState } from './state/data-table-state.service';\nimport { NovoDragFinishEvent } from 'novo-elements/elements/drag-drop';\n\nexport type DataTablePreferenceUpdateSrc = 'columndrag' | 'input' | 'statesortchange' | 'pagination';\nexport interface IDataTablePreferencesChangeEvent extends IDataTablePreferences {\n eventSrc: DataTablePreferenceUpdateSrc\n}\n\n@Component({\n selector: 'novo-data-table',\n animations: [\n trigger('expand', [\n animState('void', style({ height: '0px', minHeight: '0', visibility: 'hidden' })),\n animState('*', style({ height: '*', visibility: 'visible' })),\n transition('void <=> *', animate('70ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DataTableState, { provide: NOVO_DATA_TABLE_REF, useExisting: NovoDataTable }],\n standalone: false,\n})\nexport class NovoDataTable<T> implements AfterContentInit, OnDestroy {\n @HostBinding('class.global-search-hidden') globalSearchHiddenClassToggle: boolean = false;\n\n @ContentChildren(NovoTemplate) customTemplates: QueryList<NovoTemplate>;\n @ViewChildren(NovoTemplate) defaultTemplates: QueryList<NovoTemplate>;\n @ViewChildren(NovoDataTableCellHeader) cellHeaders: QueryList<NovoDataTableCellHeader<T>>;\n @ViewChild('novoDataTableContainer') novoDataTableContainer: ElementRef;\n @Output() resized: EventEmitter<IDataTableColumn<T>> = new EventEmitter();\n\n @Input()\n set displayedColumns(displayedColumns: string[]) {\n this.updateDisplayedColumns(displayedColumns, 'input');\n }\n\n get displayedColumns(): string[] {\n return this._disabledColumns;\n }\n private _disabledColumns: string[];\n\n @Input() paginationOptions: IDataTablePaginationOptions;\n @Input() searchOptions: IDataTableSearchOptions;\n @Input() selectionOptions: IDataTableSelectionOption[];\n @Input() defaultSort: { id: string; value: string };\n @Input() name = 'novo-data-table';\n @Input() allowMultipleFilters = false;\n @Input() rowIdentifier = 'id';\n @Input() activeRowIdentifier = '';\n // prettier-ignore\n @Input() trackByFn = (index, item) => item.id;\n @Input() templates: { [key: string]: TemplateRef<any> } = {};\n @Input() fixedHeader = false;\n @Input() paginatorDataFeatureId: string;\n @Input() maxSelected: number = undefined;\n @Input() canSelectAll: boolean = false;\n @Input() allMatchingSelected = false;\n @Input() overrideTotal: number;\n @Input() paginationRefreshSubject: Subject<void>;\n @BooleanInput()\n @Input() enableColumnDragging = false;\n\n private dragEnabledByColumn: Map<string, boolean>;\n\n @Input()\n set dataTableService(service: IDataTableService<T>) {\n this.loading = false;\n if (!service) {\n service = new StaticDataTableService([]);\n }\n this.dataSource = new DataTableSource<T>(service, this.state, this.ref);\n this.ref.detectChanges();\n }\n\n @Input()\n set rows(rows: T[]) {\n this.loading = false;\n const service = new StaticDataTableService(rows);\n this.dataSource = new DataTableSource<T>(service, this.state, this.ref);\n this.ref.detectChanges();\n }\n\n @Input()\n set outsideFilter(outsideFilter: EventEmitter<any>) {\n // Unsubscribe\n if (this.outsideFilterSubscription) {\n this.outsideFilterSubscription.unsubscribe();\n }\n if (outsideFilter) {\n // Re-subscribe\n this.outsideFilterSubscription = outsideFilter.subscribe((filter: any) => {\n this.state.outsideFilter = filter;\n this.state.updates.next({ globalSearch: this.state.globalSearch, filter: this.state.filter, sort: this.state.sort, where: this.state.where });\n this.ref.markForCheck();\n });\n }\n }\n\n @Input()\n set refreshSubject(refreshSubject: EventEmitter<void>) {\n // Unsubscribe\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n if (refreshSubject) {\n // Re-subscribe\n this.refreshSubscription = refreshSubject.subscribe(() => {\n this.state.isForceRefresh = true;\n this.state.updates.next({ globalSearch: this.state.globalSearch, filter: this.state.filter, sort: this.state.sort, where: this.state.where });\n this.ref.markForCheck();\n });\n }\n }\n\n @Input()\n set columns(columns: IDataTableColumn<T>[]) {\n this._columns = columns;\n this.configureColumns();\n this.performInteractions('init');\n }\n get columns(): IDataTableColumn<T>[] {\n return this._columns;\n }\n\n @Input()\n set customFilter(v: boolean) {\n this._customFilter = coerceBooleanProperty(v);\n }\n get customFilter() {\n return this._customFilter;\n }\n private _customFilter: boolean;\n\n @Input()\n set hasExandedRows(v: boolean) {\n this._hasExandedRows = coerceBooleanProperty(v);\n }\n get hasExandedRows() {\n return this._hasExandedRows;\n }\n private _hasExandedRows: boolean;\n\n @Input()\n set forceShowHeader(v: boolean) {\n this._forceShowHeader = coerceBooleanProperty(v);\n }\n get forceShowHeader() {\n return this._forceShowHeader;\n }\n private _forceShowHeader: boolean;\n\n @Input()\n set hideGlobalSearch(v: boolean) {\n this._hideGlobalSearch = coerceBooleanProperty(v);\n this.globalSearchHiddenClassToggle = this._hideGlobalSearch;\n }\n get hideGlobalSearch() {\n return this._hideGlobalSearch;\n }\n private _hideGlobalSearch: boolean = true;\n\n @Output() preferencesChanged = new EventEmitter<IDataTablePreferencesChangeEvent>();\n @Output() allSelected: EventEmitter<{ allSelected: boolean; selectedCount: number }> = new EventEmitter<{\n allSelected: boolean;\n selectedCount: number;\n }>();\n @Output() toggledFilter = new EventEmitter<string>();\n\n public dataSource: DataTableSource<T>;\n public loading: boolean = true;\n public columnToTemplate: { [key: string]: TemplateRef<any> } = {};\n public columnsLoaded: boolean = false;\n public selection: Set<string> = new Set();\n public scrollLeft: number = 0;\n public expandable: boolean = false;\n\n private outsideFilterSubscription: Subscription;\n private refreshSubscription: Subscription;\n private resetSubscription: Subscription;\n private paginationSubscription: Subscription;\n private sortFilterSubscription: Subscription;\n private allMatchingSelectedSubscription: Subscription;\n private _columns: IDataTableColumn<T>[];\n private scrollListenerHandler: any;\n private initialized: boolean = false;\n\n @HostBinding('class.empty')\n get empty() {\n return this.useOverrideTotal ? this.overrideTotal === 0 : this.dataSource?.totallyEmpty;\n }\n\n @HostBinding('class.loading')\n get loadingClass() {\n return this.loading || (this.dataSource && this.dataSource.loading);\n }\n\n get useOverrideTotal(): boolean {\n return !Helpers.isBlank(this.overrideTotal)\n }\n\n @Input() listInteractions: ListInteractionDictionary;\n\n constructor(public labels: NovoLabelService, private ref: ChangeDetectorRef, public state: DataTableState<T>) {\n this.scrollListenerHandler = this.scrollListener.bind(this);\n this.sortFilterSubscription = this.state.sortFilterSource.subscribe(\n (event: IDataTableChangeEvent) => {\n if (this.name !== 'novo-data-table') {\n this.preferencesChanged.emit({\n name: this.name,\n sort: event.sort,\n filter: event.filter,\n globalSearch: event.globalSearch,\n where: event.where,\n savedSearchName: event.savedSearchName,\n appliedSearchType: event.appliedSearchType,\n eventSrc: 'statesortchange',\n });\n this.performInteractions('change');\n } else {\n notify('Must have [name] set on data-table to use preferences!');\n }\n },\n );\n this.paginationSubscription = this.state.paginationSource.subscribe((event: { isPageSizeChange: boolean; pageSize: number }) => {\n if (this.name !== 'novo-data-table') {\n if (event.isPageSizeChange) {\n this.preferencesChanged.emit({ name: this.name, pageSize: event.pageSize, eventSrc: 'pagination' });\n }\n } else {\n notify('Must have [name] set on data-table to use preferences!');\n }\n });\n this.resetSubscription = this.state.resetSource.subscribe(() => {\n setTimeout(() => {\n this.ref.detectChanges();\n }, 300);\n });\n this.allMatchingSelectedSubscription = this.state.allMatchingSelectedSource.subscribe((event: boolean) => {\n this.allMatchingSelected = event;\n });\n }\n\n public modifyCellHeaderMultiSelectFilterOptions(column: string, newOptions: { value: any; label: string }[]): void {\n const header = this.cellHeaders.find((cellHeader) => cellHeader.id === column);\n if (header) {\n if (header.config && header.config.filterConfig && header.config.filterConfig.options) {\n const filterOptions: any[] = header.config.filterConfig.options;\n const optionsToKeep = filterOptions.filter(\n (opt) =>\n header.isSelected(opt, header.multiSelectedOptions) &&\n !newOptions.find((newOpt) => opt.value && newOpt.value && newOpt.value === opt.value),\n );\n header.config.filterConfig.options = [...optionsToKeep, ...newOptions];\n } else {\n header.config.filterConfig.options = newOptions;\n }\n header.setupFilterOptions();\n header.changeDetectorRef.markForCheck();\n }\n }\n\n public ngOnDestroy(): void {\n this.outsideFilterSubscription?.unsubscribe();\n this.refreshSubscription?.unsubscribe();\n this.resetSubscription?.unsubscribe();\n this.sortFilterSubscription?.unsubscribe();\n this.allMatchingSelectedSubscription?.unsubscribe();\n if (this.novoDataTableContainer) {\n (this.novoDataTableContainer.nativeElement as Element).removeEventListener('scroll', this.scrollListenerHandler);\n }\n }\n\n public ngAfterContentInit(): void {\n if (this.displayedColumns && this.displayedColumns.length) {\n this.expandable = this.displayedColumns.includes('expand');\n }\n\n // Default templates defined here\n this.defaultTemplates.forEach((item) => {\n // Only override if it doesn't already exist\n if (!this.templates[item.getType()]) {\n this.templates[item.getType()] = item.template;\n }\n });\n // Custom templates passed in\n this.customTemplates.forEach((item) => {\n // Override anything that is custom and in HTML\n this.templates[item.getType()] = item.template;\n });\n // Load columns\n this.configureColumns();\n\n // State\n if (this.paginationOptions && !this.paginationOptions.page) {\n this.paginationOptions.page = 0;\n }\n if (this.paginationOptions && !this.paginationOptions.pageSize) {\n this.paginationOptions.pageSize = 50;\n }\n if (this.paginationOptions && !this.paginationOptions.pageSizeOptions) {\n this.paginationOptions.pageSizeOptions = [10, 25, 50, 100];\n }\n this.state.page = this.paginationOptions ? this.paginationOptions.page : undefined;\n this.state.pageSize = this.paginationOptions ? this.paginationOptions.pageSize : undefined;\n this.state.selectionOptions = this.selectionOptions ?? undefined;\n\n // Scrolling inside table\n (this.novoDataTableContainer.nativeElement as Element).addEventListener('scroll', this.scrollListenerHandler);\n this.initialized = true;\n this.ref.markForCheck();\n }\n\n public onSearchChange(term: string): void {\n this.state.globalSearch = term;\n this.state.reset(false, true);\n this.state.updates.next({ globalSearch: term, filter: this.state.filter, sort: this.state.sort, where: this.state.where });\n }\n\n public trackColumnsBy(index: number, item: IDataTableColumn<T>) {\n return item.id;\n }\n\n public isDisabled(check: any, row: T): boolean {\n if (check.disabled === true) {\n return true;\n }\n if (check.disabledFunc) {\n return check.disabledFunc(row);\n }\n return false;\n }\n\n public isExpanded(row: T): boolean {\n if (!row) {\n return false;\n }\n return this.state.expandedRows.has(`${row[this.rowIdentifier]}`);\n }\n\n public expandRow(row: T): void {\n const expanded = this.isExpanded(row);\n\n if (expanded) {\n this.state.expandedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.expandedRows.add(`${row[this.rowIdentifier]}`);\n }\n this.state.onExpandChange((row as unknown as { id: number }).id);\n }\n\n public expandRows(expand: boolean): void {\n (this.dataSource.data || []).forEach((row: T) => {\n if (!expand) {\n this.state.expandedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.expandedRows.add(`${row[this.rowIdentifier]}`);\n }\n });\n this.state.onExpandChange();\n }\n\n public allCurrentRowsExpanded(): boolean {\n for (let i = 0; i < (this.dataSource.data || []).length; i++) {\n if (!this.isExpanded((this.dataSource.data || [])[i])) {\n return false;\n }\n }\n return true;\n }\n\n public isSelected(row: T): boolean {\n if (!row) {\n return false;\n }\n return this.state.selectedRows.has(`${row[this.rowIdentifier]}`);\n }\n\n public selectRow(row: T, origin?: string): void {\n const selected = this.isSelected(row);\n if (selected) {\n this.state.selectedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n if (this.canSelectAll && this.allMatchingSelected && ['onClick'].includes(origin)) {\n // When all matching records are selected the user could be on another page where all rows only appear selected\n // Need to reset the rows that are actually selected, select rows on the current page and deselect the chosen record\n this.state.selectedRows.clear();\n this.selectRows(true);\n this.state.selectedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.selectedRows.set(`${row[this.rowIdentifier]}`, row);\n }\n }\n this.state.allMatchingSelectedSource.next(false);\n this.state.onSelectionChange();\n }\n\n public selectRows(selected: boolean): void {\n (this.dataSource.data || []).forEach((row: T) => {\n if (!selected) {\n this.state.selectedRows.delete(`${row[this.rowIdentifier]}`);\n } else {\n this.state.selectedRows.set(`${row[this.rowIdentifier]}`, row);\n }\n });\n this.state.onSelectionChange();\n }\n\n public allCurrentRowsSelected(): boolean {\n if (this.allMatchingSelected) {\n return true;\n }\n if (!this.dataSource?.data?.length) {\n return false;\n }\n for (let i = 0; i < (this.dataSource.data || []).length; i++) {\n if (!this.isSelected((this.dataSource.data || [])[i])) {\n return false;\n }\n }\n return true;\n }\n\n columnDragFilter = (columnName: string) => {\n if (['selection', 'expand'].includes(columnName)) {\n return false;\n }\n return this.dragEnabledByColumn.get(columnName) ?? false;\n }\n\n public columnDragged(event: NovoDragFinishEvent<string>): void {\n this.updateDisplayedColumns(event.allItems, 'columndrag');\n }\n\n private configureLastDisplayedColumn(): void {\n if (this.columns && this.displayedColumns && 0 !== this.columns.length && 0 !== this.displayedColumns.length) {\n this.columns.forEach((column: IDataTableColumn<T>) => {\n if (column.initialResizable) {\n column.resizable = column.initialResizable.resizable;\n column.width = column.initialResizable.width;\n column.initialResizable = undefined;\n }\n });\n const resizableColumns: string[] = this.displayedColumns.filter((name: string): boolean => {\n return (\n this.columns.findIndex((column: IDataTableColumn<T>): boolean => {\n return column.resizable && column.id === name;\n }) !== -1\n );\n });\n if (resizableColumns && resizableColumns.length > 0) {\n const lastResizableColumn: IDataTableColumn<T> = this.columns.find((column: IDataTableColumn<T>) => {\n return column.id === resizableColumns[resizableColumns.length - 1];\n });\n lastResizableColumn.initialResizable = {\n resizable: lastResizableColumn.resizable,\n width: lastResizableColumn.width,\n };\n lastResizableColumn.width = undefined;\n lastResizableColumn.resizable = false;\n }\n }\n }\n\n private configureColumns(): void {\n if (this.columns && this.columns.length !== 0 && Object.keys(this.templates).length !== 0) {\n // Figure the column templates\n if (this.enableColumnDragging) {\n this.dragEnabledByColumn = new Map();\n }\n this.columns.forEach((column: IDataTableColumn<T>) => {\n // Figure the template\n let templateName: string;\n if (column.template) {\n // Pass it in as template\n templateName = column.template;\n } else if (!!this.templates[column.id]) {\n // Custom template for the column id\n templateName = column.id;\n } else {\n // Default to the defaulCellTemplate\n if (column.type === 'action') {\n if (column.action && column.action.options) {\n if (!column.action.icon) {\n column.action.icon = 'collapse';\n }\n templateName = 'dropdownCellTemplate';\n } else {\n templateName = 'buttonCellTemplate';\n }\n } else {\n if (column.type === 'link:tel' || column.type === 'link:mailto') {\n templateName = `${column.type.split(':')[1]}CellTemplate`;\n } else {\n templateName = `${column.type}CellTemplate`;\n }\n }\n }\n this.columnToTemplate[column.id] = this.templates[templateName];\n if (this.enableColumnDragging) {\n const draggable = column.draggable != null ? column.draggable : true;\n this.dragEnabledByColumn.set(column.id, draggable);\n }\n });\n this.configureLastDisplayedColumn();\n this.columnsLoaded = true;\n }\n }\n\n private updateDisplayedColumns(displayedColumns: string[], updateSrc: DataTablePreferenceUpdateSrc) {\n if (this.displayedColumns && this.displayedColumns.length !== 0) {\n if (this.name !== 'novo-data-table') {\n this.preferencesChanged.emit({\n name: this.name,\n displayedColumns,\n eventSrc: updateSrc,\n });\n } else {\n notify('Must have [name] set on data-table to use preferences!');\n }\n }\n this._disabledColumns = displayedColumns;\n this.configureLastDisplayedColumn();\n if (this.initialized) {\n setTimeout(() => {\n this.scrollListener();\n });\n }\n }\n\n private scrollListener(): void {\n const target: Element = this.novoDataTableContainer.nativeElement as Element;\n const left: number = target.scrollLeft;\n if (left !== this.scrollLeft) {\n this.scrollLeft = target.scrollLeft;\n }\n this.ref.markForCheck();\n }\n\n performInteractions(event: ListInteractionEvent): void {\n if (this.listInteractions) {\n for (const column of this.columns) {\n const allListColumnInteractions = this.listInteractions[column.id];\n const listColumnInteraction = allListColumnInteractions && allListColumnInteractions.find((int) => int.event.includes(event));\n if (listColumnInteraction) {\n listColumnInteraction.script(this, column.id);\n }\n }\n }\n }\n}\n","<header\n *ngIf=\"(!(empty && !state.userFiltered) && !loading) || forceShowHeader\"\n [class.empty]=\"hideGlobalSearch && !paginationOptions && !templates['customActions']\"\n [ngClass]=\"{ 'pagination-footer': paginationOptions?.onFooter }\"\n>\n <ng-container *ngTemplateOutlet=\"templates['customHeader']\"></ng-container>\n <novo-search\n alwaysOpen=\"true\"\n (searchChanged)=\"onSearchChange($event)\"\n [(ngModel)]=\"state.globalSearch\"\n *ngIf=\"!hideGlobalSearch\"\n [placeholder]=\"searchOptions?.placeholder\"\n [hint]=\"searchOptions?.tooltip\"\n >\n </novo-search>\n <!-- Updates to novo-data-table-pagination here need to be applied to the footer as well -->\n <novo-data-table-pagination\n *ngIf=\"paginationOptions && !paginationOptions.onFooter\"\n [theme]=\"paginationOptions.theme\"\n [length]=\"useOverrideTotal ? overrideTotal : dataSource?.currentTotal\"\n [page]=\"paginationOptions.page\"\n [pageSize]=\"paginationOptions.pageSize\"\n [pageSizeOptions]=\"paginationOptions.pageSizeOptions\"\n [dataFeatureId]=\"paginatorDataFeatureId\"\n [canSelectAll]=\"canSelectAll\"\n [allMatchingSelected]=\"allMatchingSelected\"\n [loading]=\"paginationOptions.loading\"\n [errorLoading]=\"paginationOptions.errorLoading\"\n [paginationRefreshSubject]=\"paginationRefreshSubject\"\n >\n </novo-data-table-pagination>\n <div class=\"novo-data-table-actions\" *ngIf=\"templates['customActions']\">\n <ng-container *ngTemplateOutlet=\"templates['customActions']\"></ng-container>\n </div>\n</header>\n<div class=\"novo-data-table-loading-mask\" *ngIf=\"dataSource?.loading || loading\" data-automation-id=\"novo-data-table-loading\">\n <novo-loading></novo-loading>\n</div>\n<div class=\"novo-data-table-outside-container\" [ngClass]=\"{ 'novo-data-table-outside-container-fixed': fixedHeader }\">\n <div class=\"novo-data-table-custom-filter\" *ngIf=\"customFilter\">\n <ng-container *ngTemplateOutlet=\"templates['customFilter']\"></ng-container>\n </div>\n <div\n #novoDataTableContainer\n cdkScrollable\n class=\"novo-data-table-container\"\n [ngClass]=\"{ 'novo-data-table-container-fixed': fixedHeader }\"\n [class.empty-user-filtered]=\"dataSource?.currentlyEmpty && state.userFiltered\"\n [class.empty]=\"empty && !dataSource?.loading && !loading && !state.userFiltered && !dataSource.pristine\"\n >\n <cdk-table\n *ngIf=\"columns?.length > 0 && columnsLoaded && dataSource\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"trackByFn\"\n novoDataTableSortFilter\n [class.expandable]=\"expandable\"\n [class.empty]=\"dataSource?.currentlyEmpty && state.userFiltered\"\n [hidden]=\"empty && !state.userFiltered\"\n >\n <ng-container cdkColumnDef=\"selection\">\n <novo-data-table-checkbox-header-cell *cdkHeaderCellDef [maxSelected]=\"maxSelected\"></novo-data-table-checkbox-header-cell>\n <novo-data-table-checkbox-cell\n *cdkCellDef=\"let row; let i = index\"\n [row]=\"row\"\n [maxSelected]=\"maxSelected\"\n ></novo-data-table-checkbox-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"expand\">\n <novo-data-table-expand-header-cell *cdkHeaderCellDef></novo-data-table-expand-header-cell>\n <novo-data-table-expand-cell *cdkCellDef=\"let row; let i = index\" [row]=\"row\"></novo-data-table-expand-cell>\n </ng-container>\n <ng-container *ngFor=\"let column of columns; trackBy: trackColumnsBy\" [cdkColumnDef]=\"column.id\">\n <novo-data-table-header-cell\n *cdkHeaderCellDef\n [column]=\"column\"\n [filterTemplate]=\"templates['column-filter-' + (column.filterable?.customTemplate || column.id)]\"\n (toggledFilter)=\"toggledFilter.next($event)\"\n [novo-data-table-cell-config]=\"column\"\n [resized]=\"resized\"\n [defaultSort]=\"defaultSort\"\n [allowMultipleFilters]=\"allowMultipleFilters\"\n [class.empty]=\"column?.type === 'action' && !column?.label\"\n [class.button-header-cell]=\"column?.type === 'expand' || (column?.type === 'action' && !column?.action?.options)\"\n [class.dropdown-header-cell]=\"column?.type === 'action' && column?.action?.options\"\n [class.fixed-header]=\"fixedHeader\"\n ></novo-data-table-header-cell>\n <novo-data-table-cell\n *cdkCellDef=\"let row\"\n [resized]=\"resized\"\n [column]=\"column\"\n [row]=\"row\"\n [template]=\"columnToTemplate[column.id]\"\n [class.empty]=\"column?.type === 'action' && !column?.label\"\n [class.button-cell]=\"column?.type === 'expand' || (column?.type === 'action' && !column?.action?.options)\"\n [class.dropdown-cell]=\"column?.type === 'action' && column?.action?.options\"\n ></novo-data-table-cell>\n </ng-container>\n <novo-data-table-header-row\n *cdkHeaderRowDef=\"displayedColumns\"\n [novoDragDrop]=\"enableColumnDragging ? displayedColumns : undefined\"\n [novoDragDropFilter]=\"columnDragFilter\"\n (novoDragDropFinish)=\"columnDragged($event)\"\n [fixedHeader]=\"fixedHeader\"\n data-automation-id=\"novo-data-table-header-row\"\n ></novo-data-table-header-row>\n <novo-data-table-row\n *cdkRowDef=\"let row; columns: displayedColumns\"\n [ngClass]=\"{ active: row[rowIdentifier] == activeRowIdentifier }\"\n [novoDataTableExpand]=\"detailRowTemplate\"\n [row]=\"row\"\n [id]=\"name + '-' + row[rowIdentifier]\"\n [dataAutomationId]=\"row[rowIdentifier]\"\n ></novo-data-table-row>\n </cdk-table>\n <div class=\"novo-data-table-footer\" *ngIf=\"templates['footer']\">\n <ng-container *ngTemplateOutlet=\"templates['footer']; context: { $implicit: columns, data: dataSource.data }\"></ng-container>\n </div>\n <div\n class=\"novo-data-table-no-results-container\"\n [style.left.px]=\"scrollLeft\"\n *ngIf=\"dataSource?.currentlyEmpty && state.userFiltered && !dataSource?.loading && !loading && !dataSource.pristine\"\n >\n <div class=\"novo-data-table-empty-message\">\n <ng-container *ngTemplateOutlet=\"templates['noResultsMessage'] || templates['defaultNoResultsMessage']\"></ng-container>\n </div>\n </div>\n <div\n class=\"novo-data-table-no-more-results-container\"\n [style.left.px]=\"scrollLeft\"\n *ngIf=\"!empty && dataSource?.currentlyEmpty && !state.userFiltered && !dataSource?.loading && !loading && !dataSource.pristine\"\n >\n <div class=\"novo-data-table-empty-message\">\n <ng-container *ngTemplateOutlet=\"templates['noMoreResultsMessage'] || templates['defaultNoMoreResultsMessage']\"></ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"novo-data-table-empty-container\"\n *ngIf=\"empty && !dataSource?.loading && !loading && !state.userFiltered && !dataSource.pristine\"\n >\n <div class=\"novo-data-table-empty-message\">\n <ng-container *ngTemplateOutlet=\"templates['emptyMessage'] || templates['defaultNoResultsMessage']\"></ng-container>\n </div>\n </div>\n</div>\n<!-- DEFAULT CELL TEMPLATE -->\n<ng-template novoTemplate=\"textCellTemplate\" let-row let-col=\"col\">\n <span [style.width.px]=\"col?.width\" [style.min-width.px]=\"col?.width\" [style.max-width.px]=\"col?.width\">{{\n row[col.id] | dataTableInterpolate: col\n }}</span>\n</ng-template>\n<ng-template novoTemplate=\"dateCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableDateRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"datetimeCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableDateTimeRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"timeCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableTimeRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"currencyCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableCurrencyRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"bigdecimalCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableBigDecimalRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"numberCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableNumberRenderer: col }}</span>\n</ng-template>\n<ng-template novoTemplate=\"percentCellTemplate\" let-row let-col=\"col\">\n <span>{{ row[col.id] | dataTableInterpolate: col | dataTableNumberRenderer: col:true }}</span>\n</ng-template>\n<ng-template novoTemplate=\"linkCellTemplate\" let-row let-col=\"col\">\n <a\n [attr.data-feature-id]=\"col?.attributes?.dataFeatureId\"\n (click)=\"col.handlers?.click({ originalEvent: $event, row: row })\"\n [style.width.px]=\"col?.width\"\n [style.min-width.px]=\"col?.width\"\n [style.max-width.px]=\"col?.width\"\n >{{ row[col.id] | dataTableInterpolate: col }}</a\n >\n</ng-template>\n<ng-template novoTemplate=\"telCellTemplate\" let-row let-col=\"col\">\n <a href=\"tel:{{ row[col.id] | dataTableInterpolate: col }}\" [target]=\"col?.attributes?.target\">{{\n row[col.id] | dataTableInterpolate: col\n }}</a>\n</ng-template>\n<ng-template novoTemplate=\"mailtoCellTemplate\" let-row let-col=\"col\">\n <a href=\"mailto:{{ row[col.id] | dataTableInterpolate: col }}\" [target]=\"col?.attributes?.target\">{{\n row[col.id] | dataTableInterpolate: col\n }}</a>\n</ng-template>\n<ng-template novoTemplate=\"buttonCellTemplate\" let-row let-col=\"col\">\n <novo-button\n size=\"small\"\n theme=\"icon\"\n [tooltip]=\"col?.action?.tooltip\"\n tooltipPosition=\"right\"\n [attr.data-feature-id]=\"col?.attributes?.dataFeatureId\"\n [disabled]=\"isDisabled(col, row)\"\n (click)=\"col.handlers?.click({ originalEvent: $event, row: row })\"\n >\n <novo-icon>{{ col?.action?.icon }}</novo-icon>\n </novo-button>\n</ng-template>\n<ng-template novoTemplate=\"dropdownCellTemplate\" let-row let-col=\"col\">\n <novo-dropdown parentScrollSelector=\".novo-data-table-container\" containerClass=\"novo-data-table-dropdown\">\n <novo-button type=\"button\" theme=\"dialogue\" [icon]=\"col.action.icon\" inverse>{{ col.label }}</novo-button>\n <novo-optgroup>\n <novo-option\n *ngFor=\"let option of col?.action?.options\"\n (click)=\"option.handlers.click({ originalEvent: $event?.originalEvent, row: row })\"\n [disabled]=\"isDisabled(option, row)\"\n >\n <span [attr.data-automation-id]=\"option.label\">{{ option.label }}</span>\n </novo-option>\n </novo-optgroup>\n </novo-dropdown>\n</ng-template>\n<ng-template novoTemplate=\"defaultNoResultsMessage\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMatchingRecordsMessage }}</h4>\n</ng-template>\n<ng-template novoTemplate=\"defaultNoMoreResultsMessage\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.noMoreRecordsMessage }}</h4>\n</ng-template>\n<ng-template novoTemplate=\"defaultEmptyMessage\">\n <h4><i class=\"bhi-search-question\"></i> {{ labels.emptyTableMessage }}</h4>\n</ng-template>\n<ng-template novoTemplate=\"expandedRow\"> You did not provide an \"expandedRow\" template! </ng-template>\n<ng-template #detailRowTemplate let-row>\n <div class=\"novo-data-table-detail-row\" [@expand] style=\"overflow: hidden\">\n <ng-container *ngTemplateOutlet=\"templates['expandedRow']; context: { $implicit: row }\"></ng-container>\n </div>\n</ng-template>\n<!-- CUSTOM CELLS PASSED IN -->\n<footer\n *ngIf=\"paginationOptions?.onFooter && ((!(empty && !state.userFiltered) && !loading) || forceShowHeader)\"\n [class.empty]=\"!paginationOptions\"\n>\n <!-- Updates to novo-data-table-pagination here need to be applied to the header as well -->\n <novo-data-table-pagination\n *ngIf=\"paginationOptions?.onFooter\"\n [theme]=\"paginationOptions.theme\"\n [length]=\"useOverrideTotal ? overrideTotal : dataSource?.currentTotal\"\n [page]=\"paginationOptions.page\"\n [pageSize]=\"paginationOptions.pageSize\"\n [pageSizeOptions]=\"paginationOptions.pageSizeOptions\"\n [dataFeatureId]=\"paginatorDataFeatureId\"\n [canSelectAll]=\"canSelectAll\"\n [allMatchingSelected]=\"allMatchingSelected\"\n [loading]=\"paginationOptions.loading\"\n [errorLoading]=\"paginationOptions.errorLoading\"\n [paginationRefreshSubject]=\"paginationRefreshSubject\"\n [showPaginationTotalRecordCount]=\"true\"\n >\n </novo-data-table-pagination>\n</footer>\n<ng-content></ng-content>","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoCommonModule, NovoOptionModule } from 'novo-elements/elements/common';\nimport { NovoDatePickerModule } from 'novo-elements/elements/date-picker';\nimport { NovoDragDropModule } from 'novo-elements/elements/drag-drop';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFieldModule } from 'novo-elements/elements/field';\nimport { NovoFlexModule } from 'novo-elements/elements/flex';\nimport { NovoFormExtrasModule } from 'novo-elements/elements/form';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoLoadingModule } from 'novo-elements/elements/loading';\nimport { NovoSearchBoxModule } from 'novo-elements/elements/search';\nimport { NovoSelectModule } from 'novo-elements/elements/select';\nimport { NovoTilesModule } from 'novo-elements/elements/tiles';\nimport { NovoTooltipModule } from 'novo-elements/elements/tooltip';\nimport { NovoDataTableCheckboxHeaderCell } from './cell-headers/data-table-checkbox-header-cell.component';\nimport { NovoDataTableExpandHeaderCell } from './cell-headers/data-table-expand-header-cell.component';\nimport { NovoDataTableCellFilterHeader } from './cell-headers/data-table-header-cell-filter-header.component';\nimport { NovoDataTableCellHeader } from './cell-headers/data-table-header-cell.component';\nimport { NovoDataTableHeaderCell } from './cell-headers/data-table-header-cell.directive';\nimport { NovoDataTableCell } from './cells/data-table-cell.component';\nimport { NovoDataTableCheckboxCell } from './cells/data-table-checkbox-cell.component';\nimport { NovoDataTableExpandCell } from './cells/data-table-expand-cell.component';\nimport { NovoDataTableClearButton } from './data-table-clear-button.component';\nimport { NovoDataTableExpandDirective } from './data-table-expand.directive';\nimport { NovoDataTable } from './data-table.component';\nimport {\n DataTableBigDecimalRendererPipe,\n DataTableInterpolatePipe,\n DateTableCurrencyRendererPipe,\n DateTableDateRendererPipe,\n DateTableDateTimeRendererPipe,\n DateTableNumberRendererPipe,\n DateTableTimeRendererPipe,\n} from './data-table.pipes';\nimport { NovoDataTablePagination } from './pagination/data-table-pagination.component';\nimport { NovoDataTableHeaderRow } from './rows/data-table-header-row.component';\nimport { NovoDataTableRow } from './rows/data-table-row.component';\nimport { NovoDataTableSortButton } from './sort-filter/sort-button.component';\nimport { NovoDataTableSortFilter } from './sort-filter/sort-filter.directive';\nimport { DataTableState } from './state/data-table-state.service';\n\n@NgModule({\n imports: [\n NovoDatePickerModule,\n CdkTableModule,\n CommonModule,\n FormsModule,\n NovoIconModule,\n NovoButtonModule,\n NovoDropdownModule,\n NovoDragDropModule,\n NovoFormExtrasModule,\n NovoLoadingModule,\n NovoTilesModule,\n NovoSearchBoxModule,\n NovoOptionModule,\n NovoCommonModule,\n NovoSelectModule,\n NovoTooltipModule,\n NovoCheckboxModule,\n NovoFlexModule,\n NovoFieldModule,\n ScrollingModule,\n ],\n declarations: [\n DataTableInterpolatePipe,\n DateTableDateRendererPipe,\n DateTableCurrencyRendererPipe,\n DateTableDateTimeRendererPipe,\n DateTableNumberRendererPipe,\n DateTableTimeRendererPipe,\n DataTableBigDecimalRendererPipe,\n NovoDataTableCellHeader,\n NovoDataTableSortFilter,\n NovoDataTableHeaderCell,\n NovoDataTableCellFilterHeader,\n NovoDataTableCell,\n NovoDataTableHeaderRow,\n NovoDataTableRow,\n NovoDataTablePagination,\n NovoDataTableCheckboxCell,\n NovoDataTableCheckboxHeaderCell,\n NovoDataTableExpandCell,\n NovoDataTableExpandHeaderCell,\n NovoDataTable,\n NovoDataTableExpandDirective,\n NovoDataTableClearButton,\n NovoDataTableSortButton,\n ],\n providers: [DataTableState],\n exports: [\n NovoDataTable,\n DataTableInterpolatePipe,\n DateTableDateRendererPipe,\n DateTableCurrencyRendererPipe,\n DateTableDateTimeRendererPipe,\n DateTableNumberRendererPipe,\n DateTableTimeRendererPipe,\n DataTableBigDecimalRendererPipe,\n NovoDataTableCellFilterHeader,\n NovoDataTableClearButton,\n NovoDataTableSortButton,\n ],\n})\nexport class NovoDataTableModule {}\n","import { Observable } from 'rxjs';\n\nexport interface IDataTablePreferences {\n name: string;\n sort?: IDataTableSort;\n filter?: IDataTableFilter | IDataTableFilter[];\n where?: DataTableWhere;\n globalSearch?: any;\n pageSize?: number;\n displayedColumns?: string[];\n columnWidths?: { id: string; width: number }[];\n savedSearchId?: number;\n savedSearchName?: string;\n savedSearchOwner?: DataTableSavedSearchOwner;\n appliedSearchType?: AppliedSearchType;\n autobuildEntity?: AutobuildEntityData;\n hasUnsavedChanges?: boolean;\n unsavedChanges?: any;\n useBooleanKeywords?: boolean;\n}\n\nexport interface AutobuildEntityData {\n id: number;\n searchEntity: string;\n [key: string]: any;\n}\n\nexport interface DataTableWhere {\n query: string;\n criteria?: AdaptiveCriteria;\n keywords?: SearchKeywords;\n booleanKeywords?: string;\n scoreByEntityId?: number;\n matchMetaData?: any;\n form: any;\n}\n\nexport interface DataTableSavedSearchOwner {\n id: number;\n firstName: string;\n lastName: string;\n}\n\nexport enum AppliedSearchType {\n Saved = 'saved',\n Recent = 'recent',\n None = 'none',\n}\n\nexport interface IDataTableColumn<T> {\n id: string;\n label?: string;\n labelIcon?: string;\n enabled?: boolean;\n type:\n | 'text'\n | 'link'\n | 'link:tel'\n | 'link:mailto'\n | 'date'\n | 'datetime'\n | 'time'\n | 'currency'\n | 'bigdecimal'\n | 'number'\n | 'percent'\n | 'action'\n | 'expand';\n template?: string;\n format?: string | string[];\n disabled?: boolean;\n cellClass?: (row: T) => string;\n disabledFunc?: (row: T) => boolean;\n handlers?: {\n click?(event?: any): any;\n };\n width?: number;\n sortable?: boolean | IDataTableColumnSortConfig;\n filterable?: boolean | IDataTableColumnFilterConfig;\n resizable?: boolean;\n draggable?: boolean;\n action?: {\n icon?: string;\n tooltip?: string;\n options?: {\n label: string;\n handlers: {\n click?(event?: any): any;\n };\n disabled?: boolean;\n disabledFunc?: (row: T) => boolean;\n }[];\n };\n attributes?: { [key: string]: any }; // for any custom config in cells\n initialResizable?: {\n resizable: boolean;\n width: number;\n };\n rightAlignCellContent?: boolean;\n configuration?: any; // intended to be implemented by each column type if and as needed\n}\n\nexport interface IDataTablePaginationOptions {\n theme: 'basic' | 'standard' | 'basic-wide';\n page?: number;\n pageSize: number;\n pageSizeOptions: number[] | { value: string; label: string }[];\n loading?: boolean;\n errorLoading?: boolean;\n onFooter?: boolean;\n}\n\nexport interface IDataTableColumnSortConfig {\n transform?: Function;\n}\n\nexport interface IDataTableColumnFilterConfig {\n type: 'text' | 'number' | 'date' | 'select' | 'multi-select' | 'custom';\n customTemplate?: string;\n useCustomHeader?: boolean;\n options?: string[] | IDataTableColumnFilterOption[];\n allowCustomRange?: boolean;\n transform?: Function;\n}\n\nexport interface IDataTableColumnFilterOption {\n label: string;\n value?: any;\n min?: number;\n max?: number;\n}\n\nexport interface IDataTableSearchOptions {\n placeholder?: string;\n tooltip?: string;\n}\n\nexport interface IDataTableSortFilter {\n id: string;\n direction?: string;\n active?: boolean;\n filter?: string | boolean;\n}\n\nexport interface IDataTableChangeEvent {\n sort?: IDataTableSort;\n filter?: IDataTableFilter | IDataTableFilter[];\n page?: number;\n pageSize?: number;\n globalSearch?: string;\n outsideFilter?: IDataTableFilter | IDataTableFilter[];\n where?: { query: string; form: any };\n savedSearchName?: string;\n displayedColumns?: string[];\n appliedSearchType?: AppliedSearchType;\n}\n\nexport interface IDataTableSelectionChangeEvent {\n selected: any[];\n}\n\nexport interface IDataTableSelectionOption {\n label: 'none' | 'page' | 'pageSize' | 'sort' | 'filter' | 'globalSearch';\n}\n\nexport interface IDataTablePaginationEvent {\n page: number;\n pageSize: number;\n length: number;\n}\n\nexport interface IDataTableSort {\n id: string;\n value: string;\n transform?: Function;\n}\n\nexport interface IDataTableFilter {\n id: string;\n value: any;\n transform?: Function;\n type?: string;\n selectedOption?: Object;\n}\n\nexport interface IDataTableService<T> {\n getTableResults(\n sort: IDataTableSort,\n filter: { id: string; value: string; transform?: Function } | IDataTableFilter | IDataTableFilter[],\n page: number,\n pageSize: number,\n globalSearch?: string,\n outsideFilter?: any,\n where?: { query: string; form: any },\n ): Observable<{ results: T[]; total: number }>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IDataTableCell<T> {}\n\n/**\n * Adaptive criteria syntax is a json representation of a search or query string that supports all current and future search formats.\n */\nexport interface AdaptiveQuery {\n criteria: AdaptiveCriteria;\n\n // a comma separated list of fields to requests\n fields?: string;\n\n // a comma separated string, or a string array with the same data\n orderBy?: string | string[];\n\n pagination?: PaginationObject;\n}\n\nexport interface PaginationObject {\n page: number;\n pageSize: number;\n}\n\nexport type AdaptiveCriteria = AdaptiveCondition | AdaptiveConjunction;\n\n/**\n * Only a single field is valid.\n * Combine multiple fields with conjunctions, not sibling properties.\n * If multiple sibling properties are used in a condition, errors may occur in translation.\n */\nexport interface AdaptiveCondition {\n [fieldName: string]: AdaptiveConditionOperatorObject;\n}\n\n/**\n * Only a single operator for a condition is valid.\n * Combine multiple operators with conjunctions, not sibling properties.\n * If multiple sibling operators are used in a condition, only the first will be used.\n */\nexport type AdaptiveConditionOperatorObject = {\n [K in AdaptiveOperator as `${K}`]?: AdaptiveValue;\n};\n\nexport type AdaptiveValue = string | string[] | boolean | boolean[] | number | number[];\n\nexport type AdaptiveConjunction = AdaptiveAnd | AdaptiveOr | AdaptiveNot;\n\nexport interface AdaptiveAnd {\n and: Array<AdaptiveCriteria>;\n}\n\nexport interface AdaptiveOr {\n or: Array<AdaptiveCriteria>;\n}\n\nexport interface AdaptiveNot {\n not: AdaptiveCriteria;\n}\n\nexport enum AdaptiveConjunctionNames {\n AND = 'and',\n OR = 'or',\n NOT = 'not',\n}\n\nexport enum AdaptiveOperator {\n BeginsWith = 'beginsWith',\n EqualTo = 'equalTo',\n In = 'in',\n IncludeAny = 'includeAny',\n IncludeAll = 'includeAll',\n Is = 'is',\n LessThan = 'lt',\n LessThanEquals = 'lte',\n GreaterThan = 'gt',\n GreaterThanEquals = 'gte',\n Like = 'like',\n StartsWith = 'startsWith',\n EndsWith = 'endsWith',\n Radius = 'radius',\n}\n\nexport interface IKeywordSearchResponse {\n items: IKeywordGroup[];\n meta: {\n currentPage: number;\n itemCount: number;\n itemsPerPage: number;\n totalItems: number;\n totalPages: number;\n };\n}\n\nexport interface IKeyword {\n id: number;\n name: string;\n}\n\nexport interface IKeywordGroup {\n id: number;\n name: string;\n uniqueName?: string;\n keywords?: IKeyword[];\n}\n\nexport interface IKeywordBlock {\n operator?: 'and' | 'or';\n exclude?: boolean;\n keywordGroups: IKeywordGroup[];\n}\n\nexport type NestedKeywordGroups = IKeywordBlock[];\n\nexport type SearchKeywords = string[] | NestedKeywordGroups;\n","import { Observable } from 'rxjs';\nimport { IDataTableFilter, IDataTableService, IDataTableSort } from '../interfaces';\n\nexport abstract class RemoteDataTableService<T> implements IDataTableService<T> {\n abstract getTableResults(\n sort: IDataTableSort,\n filter: IDataTableFilter | IDataTableFilter[],\n page: number,\n pageSize: number,\n globalSearch?: string,\n outsideFilter?: any,\n where?: { query: string; form: any },\n ): Observable<{ results: T[]; total: number }>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataTableState","i2","i1","i3","i4","i2.DataTableState","i3.NovoDataTableSortFilter","i8","i9","i10","i15.NovoDataTableCellFilterHeader","i16.NovoDataTableSortButton","i5","i6","__decorate","i7","i11","i12","i13","i14","i15.NovoDataTableCellHeader","i16.NovoDataTableSortFilter","i17.NovoDataTableHeaderCell","i18.NovoDataTableCell","i19.NovoDataTableHeaderRow","i20.NovoDataTableRow","i21.NovoDataTablePagination","i22.NovoDataTableCheckboxCell","i23.NovoDataTableCheckboxHeaderCell","i24.NovoDataTableExpandCell","i25.NovoDataTableExpandHeaderCell","i26.NovoDataTableExpandDirective","i27.DataTableInterpolatePipe","i27.DateTableDateRendererPipe","i27.DateTableCurrencyRendererPipe","i27.DateTableDateTimeRendererPipe","i27.DateTableNumberRendererPipe","i27.DateTableTimeRendererPipe","i27.DataTableBigDecimalRendererPipe","animState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA;;AAEG;MACU,mBAAmB,GAAG,IAAI,cAAc,CAAmB,qBAAqB;;ACCvF,MAAO,+BAAmC,SAAQ,aAAa,CAAA;AAWnE,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QACE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO;;IAI1I,WACE,CAAA,SAAuB,EACvB,UAAsB,EACtB,QAAmB,EACkB,SAA2B,EACxD,GAAsB,EACtB,OAAyB,EAAA;AAEjC,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QAJS,IAAS,CAAA,SAAA,GAAT,SAAS;QACtC,IAAG,CAAA,GAAA,GAAH,GAAG;QACH,IAAO,CAAA,OAAA,GAAP,OAAO;QArBV,IAAI,CAAA,IAAA,GAAG,cAAc;QAErB,IAAW,CAAA,WAAA,GAAW,SAAS;QAE/B,IAAO,CAAA,OAAA,GAAY,KAAK;AAoB7B,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,+BAA+B,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;AACtI,QAAA,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;QACrG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,sCAAsC,CAAC;AAEnF,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,MAAK;YAC/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAC/H,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;gBAChC,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAoC,KAAI;AACrH,YAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;oBAChC,IAAI,CAAC,gBAAgB,EAAE;;AAEzB,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC;gBAChD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;;iBAClC;gBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAC/H,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;oBAChC,IAAI,CAAC,gBAAgB,EAAE;;;AAG3B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AACvE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;gBAChC,IAAI,CAAC,wBAAwB,EAAE;;AAEjC,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;IAGG,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;AAE1C,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;;AAE3C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;;;IAIjC,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACjB,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,OAAO,EAAE,oEAAoE;AAC7E,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA,CAAC;;aACG;YACL,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;;AAE1C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,wBAAwB,EAAE;;iBAC1B;gBACL,IAAI,CAAC,gBAAgB,EAAE;;;;IAKrB,wBAAwB,GAAA;QAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC;AAC5D,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE;;IAGpC,gBAAgB,GAAA;AACrB,QAAA,MAAM,gBAAgB,GAAG;YACvB,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM;AACtD,YAAA,mBAAmB,EAAE,IAAI,CAAC,SAAS,EAAE,mBAAmB;SACzD;QACD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;;AA1GxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,iGAqBhC,mBAAmB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAX9B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIU,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAb3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE;;;;;;;AAOX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAsBI,MAAM;2BAAC,mBAAmB;wGAnBtB,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;gBAGjB,WAAW,EAAA,CAAA;sBADjB;;;ACZG,MAAO,6BAAiC,SAAQ,aAAa,CAAA;IAOjE,WACE,CAAA,SAAuB,EACvB,UAAsB,EACtB,QAAmB,EACkB,SAA2B,EACxD,GAAsB,EAAA;AAE9B,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QAHS,IAAS,CAAA,SAAA,GAAT,SAAS;QACtC,IAAG,CAAA,GAAA,GAAH,GAAG;QAVN,IAAI,CAAA,IAAA,GAAG,cAAc;QAErB,IAAQ,CAAA,QAAA,GAAY,KAAK;AAW9B,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,6BAA6B,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;AACpI,QAAA,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;QACnG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,oCAAoC,CAAC;AAEjF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACvD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;IAGG,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;;;IAIlC,SAAS,GAAA;QACd,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAhChC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,iGAW9B,mBAAmB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAXlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,0KAJ5B,8HAA8H,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAI/H,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,QAAQ,EAAE,8HAA8H;oBACxI,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAYI,MAAM;2BAAC,mBAAmB;yEATtB,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;;;MClBb,wBAAwB,CAAA;AACnC,IAAA,OAAO,eAAe,CAAC,MAAY,EAAE,IAAU,EAAE,WAAqB,EAAA;QACpE,IAAI,YAAY,GAAG,MAAM;QACzB,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;gBAC3B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE;AACtC,oBAAA,YAAY,GAAG;wBACb,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC/C,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;qBACxF;;qBACI;AACL,oBAAA,YAAY,GAAG;wBACb,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE;wBAC/E,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE;qBAC5E;;;YAIL,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACxC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;oBACvC,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;wBACpD,OAAO,UAAU,CAAC,KAAK;;AAEzB,oBAAA,OAAO,UAAU;AACnB,iBAAC,CAAC;;iBACG,IAAI,YAAY,IAAI,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAC/D,gBAAA,YAAY,GAAG,MAAM,CAAC,KAAK;;;AAG/B,QAAA,OAAO,YAAY;;AAEtB;;MCnBY,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAQ;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAE;AAC5B,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,OAAO,EAAE;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAChC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAE;QAExC,IAAI,CAAA,IAAA,GAAmB,SAAS;QAChC,IAAM,CAAA,MAAA,GAA0C,SAAS;QACzD,IAAK,CAAA,KAAA,GAA8D,SAAS;QAC5E,IAAI,CAAA,IAAA,GAAW,CAAC;QAChB,IAAQ,CAAA,QAAA,GAAW,SAAS;QAC5B,IAAY,CAAA,YAAA,GAAW,SAAS;AAChC,QAAA,IAAA,CAAA,YAAY,GAAmB,IAAI,GAAG,EAAa;AACnD,QAAA,IAAA,CAAA,YAAY,GAAgB,IAAI,GAAG,EAAU;QAE7C,IAAc,CAAA,cAAA,GAAY,KAAK;AAE/B,QAAA,IAAA,CAAA,OAAO,GAAwC,IAAI,YAAY,EAAyB;QACxF,IAAc,CAAA,cAAA,GAAY,KAAK;QAC/B,IAAe,CAAA,eAAA,GAAW,SAAS;QAEnC,IAAgB,CAAA,gBAAA,GAAa,SAAS;AA2LvC;AAzLC,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC;;AAG9F,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC;;AAGxE,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;;AAGxC,IAAA,KAAK,CAAC,UAAA,GAAsB,IAAI,EAAE,kBAAmB,EAAA;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAA2B,EAAE,UAAU,EAAE,kBAAkB,CAAC;;IAGrE,SAAS,CAAC,aAAsB,IAAI,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;;;IAIC,WAAW,CAAC,aAAsB,IAAI,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;;;IAIC,UAAU,CAAC,aAAsB,IAAI,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;;;IAIC,aAAa,CAAC,aAAsB,IAAI,EAAA;AAC7C,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;;;IAIC,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;;AAGtB,IAAA,cAAc,CAAC,QAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAG3B,kBAAkB,CAAC,gBAAyB,EAAE,QAAgB,EAAA;AACnE,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;;IAGrD,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AAC1C,SAAA,CAAC;;AAGG,IAAA,oBAAoB,CAAC,WAAW,EAAA;QACrC,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,WAAW,CAAC,KAAK,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;;AAGhC,YAAA,IAAI,WAAW,CAAC,IAAI,EAAE;AACpB,gBAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;;AAG9B,YAAA,IAAI,WAAW,CAAC,MAAM,EAAE;gBACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC;;AAGzD,YAAA,IAAI,WAAW,CAAC,YAAY,EAAE;AAC5B,gBAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;;AAG9C,YAAA,IAAI,WAAW,CAAC,eAAe,EAAE;AAC/B,gBAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe;;AAGpD,YAAA,IAAI,WAAW,CAAC,iBAAiB,EAAE;AACjC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB;;;;IAKrD,QAAQ,CAAC,WAAkC,EAAE,UAAU,GAAG,IAAI,EAAE,kBAAkB,GAAG,KAAK,EAAA;QAC/F,IAAI,CAAC,kBAAkB,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;AAC9B,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS;AACxF,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;AAC5C,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,eAAe;AAClD,YAAA,IAAI,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE;AACxC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB;;AAEtD,YAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,iBAAiB;;AAGxD,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;QAGzB,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAE3B,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AAC1C,aAAA,CAAC;;;AAIC,IAAA,eAAe,CAAC,MAAc,EAAE,mBAAmB,GAAG,KAAK,EAAA;QAChE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,mBAAmB;;AAG9H,IAAA,gBAAgB,CAAC,OAAO,EAAA;QAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC;AACnD,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC7B,YAAA,MAAM,CAAC,KAAK;AACV,gBAAA,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC;AAC9B,sBAAE,wBAAwB,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI;AAC7E,sBAAE,MAAM,CAAC,KAAK;AACpB,SAAC,CAAC;AACF,QAAA,OAAO,WAAW;;+GAlNT,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAd,cAAc,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ICdW;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,KAAA,CAAA,GAAA,WAAiB;AACjB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,YAAmB;AACnB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA;;ACDD,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC1C,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE;AAEpC;AACO,MAAM,WAAW,GAA6B,OAAO,CAAC,SAAS,EAAE;;IAEtE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,UAAU,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,CAAA,CAAC;AAEK,MAAM,YAAY,GAA6B,OAAO,CAAC,UAAU,EAAE;;IAExE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,UAAU,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,UAAU,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,CAAA,CAAC;AAEK,MAAM,YAAY,GAA6B,OAAO,CAAC,UAAU,EAAE;;IAExE,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAA,CAAC;;MCnBW,uBAAuB,CAAA;AAIlC,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;;IAEpB,IAAW,KAAK,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGrB,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI;;AAK1C,IAAA,WAAA,CAAmB,KAAwB,EAAU,GAAsB,EAAS,MAAwB,EAAA;QAAzF,IAAK,CAAA,KAAA,GAAL,KAAK;QAA6B,IAAG,CAAA,GAAA,GAAH,GAAG;QAA4B,IAAM,CAAA,MAAA,GAAN,MAAM;AAjBhF,QAAA,IAAA,CAAA,UAAU,GAAgC,IAAI,YAAY,EAAE;QAC/D,IAAa,CAAA,aAAA,GAAG,aAAa;AAc5B,QAAA,IAAA,CAAA,MAAM,GAAkB,aAAa,CAAC,IAAI;;AAIlD,IAAA,UAAU,CAAC,GAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG3B,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;+GA3B/B,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpC,4qBAiB8D,EDP9C,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG5C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,cACzC,KAAK,EAAA,QAAA,EAAA,4qBAAA,EAAA,MAAA,EAAA,CAAA,iXAAA,CAAA,EAAA;iJAGT,UAAU,EAAA,CAAA;sBAAnB;gBAIU,KAAK,EAAA,CAAA;sBADf;;;METU,uBAAuB,CAAA;AAClC,IAAA,WAAA,CAAoB,KAAwB,EAAA;QAAxB,IAAK,CAAA,KAAA,GAAL,KAAK;;AAElB,IAAA,MAAM,CACX,EAAU,EACV,IAAY,EACZ,KAAU,EACV,SAAmB,EACnB,oBAAA,GAAgC,KAAK,EACrC,cAAuB,EAAA;AAEvB,QAAA,IAAI,MAAM;QAEV,IAAI,oBAAoB,EAAE;AACxB,YAAA,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC;;aACvE;YACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3B,gBAAA,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,cAAc,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE;;iBAC7E;gBACL,MAAM,GAAG,SAAS;;;AAItB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;;AAG1B,IAAA,IAAI,CAAC,EAAU,EAAE,KAAa,EAAE,SAAmB,EAAA;QACxD,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;;IAG1B,kBAAkB,CAAC,EAAU,EAAE,IAAY,EAAE,KAAU,EAAE,SAAmB,EAAE,cAAsB,EAAA;AACzG,QAAA,IAAI,MAAM;QAEV,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAElD,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/E,QAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AACpB,YAAA,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;;QAG/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,cAAc,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;;AAGjG,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,GAAG,SAAS;;AAGpB,QAAA,OAAO,MAAM;;+GAzDJ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;MCiBY,6BAA6B,CAAA;IAGxC,IACI,MAAM,CAAC,MAAW,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;;AAE3C,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAQrB,WAAmB,CAAA,iBAAoC,EAAS,MAAwB,EAAA;QAArE,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAA4B,IAAM,CAAA,MAAA,GAAN,MAAM;QAJ/D,IAAS,CAAA,SAAA,GAAG,KAAK;AAEd,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ;;+GAfzD,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAlB5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;AAcX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBApBzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;uHAEU,KAAK,EAAA,CAAA;sBAAb;gBAGG,MAAM,EAAA,CAAA;sBADT;gBAYS,WAAW,EAAA,CAAA;sBAApB;;;MCmKU,uBAAuB,CAAA;IAwBlC,IACI,MAAM,CAAC,MAA2B,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK;AACzD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;QAEjC,IAAI,CAAC,MAAM,GAAG;AACZ,YAAA,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;AAC3B,YAAA,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;AAC/B,YAAA,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS;SAC9B;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;QAEtC,MAAM,UAAU,GAA2C,EAAE;AAE7D,QAAA,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YAC5D,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,UAA0C;YAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;;AAE7C,YAAA,IAAK,MAAM,CAAC,UAA2C,CAAC,SAAS,EAAE;gBACjE,UAAU,CAAC,MAAM,GAAI,MAAM,CAAC,UAA2C,CAAC,SAAS;;;aAE9E;YACL,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;;AAG7C,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACxD,YAAA,IAAK,MAAM,CAAC,QAAuC,CAAC,SAAS,EAAE;gBAC7D,UAAU,CAAC,IAAI,GAAI,MAAM,CAAC,QAAuC,CAAC,SAAS;;;AAI/E,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;YACjF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE;;AAGvE,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU;;AAErC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAgCrB,IAAA,WAAA,CACS,iBAAoC,EACpC,MAAwB,EACvB,KAAwB,EACxB,QAAmB,EACnB,UAAsB,EACX,KAAiC,EACjC,aAA2B,EAAA;QANvC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACjB,IAAM,CAAA,MAAA,GAAN,MAAM;QACL,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAU,CAAA,UAAA,GAAV,UAAU;QACC,IAAK,CAAA,KAAA,GAAL,KAAK;QACL,IAAa,CAAA,aAAA,GAAb,aAAa;QA3FlC,IAAoB,CAAA,oBAAA,GAAY,KAAK;AAQrC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;QAoDnC,IAAI,CAAA,IAAA,GAAW,UAAU;QAKzB,IAAY,CAAA,YAAA,GAAY,KAAK;QAC7B,IAAU,CAAA,UAAA,GAAY,KAAK;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAkB,aAAa,CAAC,IAAI;QAC7C,IAAe,CAAA,eAAA,GAAY,KAAK;QAShC,IAAW,CAAA,WAAA,GAAY,KAAK;QAC5B,IAAoB,CAAA,oBAAA,GAAe,EAAE;QACpC,IAA2B,CAAA,2BAAA,GAA8E,EAAE;QAC5G,IAAY,CAAA,YAAA,GAAW,EAAE;QACzB,IAAK,CAAA,KAAA,GAAY,KAAK;QACrB,IAAa,CAAA,aAAA,GAAmB,EAAE;QAWxC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAA6B,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;;IAGrH,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;;QAEnC,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGhC,kBAAkB,GAAA;QACvB,IAAI,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC;AAErF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,cAAc,GAAG,KAAK;AACvI,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;;;IAI5D,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;QACxC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAA0B,KAAI;YACxD,YAAY,CAAC,WAAW,EAAE;AAC5B,SAAC,CAAC;;AAGG,IAAA,oBAAoB,CAAC,eAAsC,EAAE,aAAA,GAAyB,KAAK,EAAA;AAChG,QAAA,IAAI,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;YAC/D,IAAI,CAAC,IAAI,GAAG,CAAQ,KAAA,EAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAA,CAAE;YAChD,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,GAAG,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,IAAI;AAC9F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;aACjB;AACL,YAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI;AACnC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;QAGzB,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;QAClE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAEhF,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,aAAa,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE;AAC5E,gBAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe;;AAExF,YAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK;;aACzB;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;;AAEhC,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YACvD,IAAI,CAAC,IAAI,GAAG,CAAQ,KAAA,EAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAA,CAAE;AAC5C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;AAExB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,cAAc,GAAG,KAAK;AACvI,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;AACpC,gBAAA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC3D,oBAAA,IAAI,CAAC,2BAA2B,GAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAoB,CAAC,GAAG,CACnF,CACE,MAAc,MAIV,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CACjC;;qBACI;AACL,oBAAA,IAAI,CAAC,2BAA2B,GAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAA0C,CAAC,GAAG,CACzG,CAAC,MAAoC,MAAiE;wBACpG,MAAM;AACN,wBAAA,MAAM,EAAE,KAAK;AACd,qBAAA,CAAC,CACH;;;;AAIP,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;IAGhC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAA;QACnC,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;YAE1E,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACpF,OAAO,KAAK,KAAK,SAAS;;AAE5B,QAAA,OAAO,KAAK;;AAGP,IAAA,eAAe,CAAC,MAAM,EAAA;AAC3B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;QAE1E,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC7G,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE;gBAC9G,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI;;;aAE7H;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;;;IAIxC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW;;aAC5B;YACL,OAAO,IAAI,KAAK,WAAW;;;IAIxB,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;QAC1B,IAAI,CAAC,iBAAiB,EAAE;;IAGnB,iBAAiB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAC1D,IAAI,CAAC,4BAA4B,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI;;aAC5E;YACL,IAAI,CAAC,iBAAiB,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,SAAS;AACtG,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;;AAIvB,IAAA,uBAAuB,CAAC,YAAoB,EAAA;QACjD,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAClD,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,MAAM,CAAC,MAAM,GAAG,EACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACtF,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAC1D;;AAEL,SAAC,CAAC;;AAGG,IAAA,yBAAyB,CAAC,MAA6C,EAAA;AAC5E,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM;;IAGpF,4BAA4B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGlE,IAAA,aAAa,CAAC,MAA6C,EAAA;AACjE,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,OAAO,MAAM,CAAC,QAAQ,EAAE;;aACnB;YACL,MAAM,GAAG,GAAG,MAAsC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE;;;AAK7D,IAAA,oCAAoC,CAAC,KAAoB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,KAAe,QAAA,mBAAE;;AAEvD,gBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AACrB,iBAAA,IAAI,KAAK,CAAC,GAAG,KAAA,OAAA,kBAAgB;AAClC,gBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,EAAE;;AACnB,iBAAA,IACL,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;iBAC1C,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC;AAC7C,iBAAC,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAC5C;AACA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE;;;;AAM3C,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;;IAItB,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;YACtB,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAClD,gBAAA,MAAM,CAAC,MAAM,GAAG,KAAK;AACvB,aAAC,CAAC;;;AAIC,IAAA,WAAW,CAAC,cAA0B,EAAA;QAC3C,cAAc,CAAC,cAAc,EAAE;AAC/B,QAAA,MAAM,YAAY,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7F,QAAA,MAAM,aAAa,GAAW,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AACzF,QAAA,MAAM,qBAAqB,GAAiB,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,gBAA4B,KAAI;YAC7H,MAAM,eAAe,GAAW,gBAAgB,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO;AACjF,YAAA,IAAI,KAAK,GAAW,aAAa,GAAG,eAAe;AACnD,YAAA,IAAI,KAAK,GAAG,YAAY,EAAE;gBACxB,KAAK,GAAG,YAAY;;AAEtB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtB,SAAC,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAiB,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,MAAK;YAC7F,mBAAmB,CAAC,WAAW,EAAE;YACjC,qBAAqB,CAAC,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;;AAGvC,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC;AAChF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC;AAChF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC;AAC5E,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG1B,iBAAiB,CAAC,KAAY,EAAE,KAAc,EAAA;AACnD,QAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;;AAGrB,IAAA,aAAa,CAAC,QAAoB,EAAA;QACvC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,QAAQ,CAAC,wBAAwB,EAAE;YACnC;;QAEF,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC,KAAoB,KAAI;AACtD,gBAAA,IAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC;AAClD,aAAC;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;;;IAIlC,UAAU,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE;AACnC,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;;;IAIrD,IAAI,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;;AAElC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;YACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACrE,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;SACtC,EAAE,GAAG,CAAC;;AAGF,IAAA,UAAU,CAAC,MAAY,EAAA;QAC5B,IAAI,YAAY,GAAG,wBAAwB,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC;QACpH,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,GAAG,MAAM,GAAG,SAAS;AAC9F,QAAA,IAAI,CAAC,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC,KAAK,GAAG,SAAS;AAEzE,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;;AAGlC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,YAAA,IAAI,YAAY,KAAK,EAAE,EAAE;gBACvB,YAAY,GAAG,SAAS;;AAE1B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CACf,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAC7B,YAAY,EACZ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,EAC7B,IAAI,CAAC,oBAAoB,EACzB,cAAc,CACf;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;SACtC,EAAE,GAAG,CAAC;;IAGF,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAGpB,IAAA,oBAAoB,CAAC,SAAiB,EAAA;QAC5C,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,SAAS,KAAK,KAAK,EAAE;AACvB,YAAA,OAAO,MAAM;;AAEf,QAAA,OAAO,KAAK;;IAGN,2BAA2B,GAAA;AACjC,QAAA,MAAM,IAAI,GAAmC;AAC3C,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAChD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACjD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;AACnD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;AACnD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;AACnD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC/C,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAChD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;AAClD,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;SACnD;AACD,QAAA,OAAO,IAAI;;+GAlbF,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,8CAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGvB,mBAAmB,EAxKlB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiKX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAvKnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiKX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAuGI;;0BACA;yCArGH,WAAW,EAAA,CAAA;sBADV,SAAS;uBAAC,aAAa;gBAGxB,QAAQ,EAAA,CAAA;sBADP,SAAS;uBAAC,mBAAmB;gBAG9B,iBAAiB,EAAA,CAAA;sBADhB,SAAS;uBAAC,mBAAmB;gBAI9B,WAAW,EAAA,CAAA;sBADV;gBAID,oBAAoB,EAAA,CAAA;sBADnB;gBAID,OAAO,EAAA,CAAA;sBADN;gBAGD,cAAc,EAAA,CAAA;sBADb;gBAID,aAAa,EAAA,CAAA;sBADZ;gBAGM,SAAS,EAAA,CAAA;sBADf,WAAW;uBAAC,iBAAiB;gBAI1B,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,6BAA6B;gBAoP7B,oCAAoC,EAAA,CAAA;sBAD1C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;gBAuB5B,mBAAmB,EAAA,CAAA;sBADzB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACnetC,MAAO,uBAA2B,SAAQ,aAAa,CAAA;AAO3D,IAAA,WAAA,CAAY,SAAuB,EAAU,UAAsB,EAAU,QAAmB,EAAA;AAC9F,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QADe,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAL9E,IAAI,CAAA,IAAA,GAAG,cAAc;AAO1B,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,sBAAsB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;AAC7H,QAAA,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAA,YAAA,EAAe,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;QAC5F,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,6BAA6B,CAAC;;IAGrE,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;;;+GAlBjF,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;kIAGQ,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;gBAIjB,MAAM,EAAA,CAAA;sBADZ;;;ACUG,MAAO,iBAAqB,SAAQ,OAAO,CAAA;AAS/C,IAAA,WAAA,CAAY,SAAuB,EAAU,UAAsB,EAAU,QAAmB,EAAA;AAC9F,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QADe,IAAU,CAAA,UAAA,GAAV,UAAU;QAAsB,IAAQ,CAAA,QAAA,GAAR,QAAQ;QAR3D,IAAI,CAAA,IAAA,GAAG,UAAU;QAMnC,IAAa,CAAA,aAAA,GAAmB,EAAE;AAIxC,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,eAAe,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;AACtH,QAAA,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAA,YAAA,EAAe,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;QAC5F,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;;IAG9D,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAGxF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,kCAAkC,CAAC;;QAG3F,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAA2B,KAAI;AACrD,YAAA,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;gBAC1B,IAAI,CAAC,eAAe,EAAE;;SAEzB,CAAC,CACH;;IAGI,WAAW,GAAA;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAA0B,KAAI;YACxD,YAAY,CAAC,WAAW,EAAE;AAC5B,SAAC,CAAC;;IAGI,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,EAAA,CAAA,CAAC;;;+GA7CjF,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,gPAJhB,wGAAwG,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIzG,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,wGAAwG;oBAClH,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;kIAE2B,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;gBAEf,GAAG,EAAA,CAAA;sBAAX;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;;;ACCG,MAAO,yBAA6B,SAAQ,OAAO,CAAA;AAcvD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO;;IAGxG,WACS,CAAA,SAAuB,EAC9B,UAAsB,EACtB,QAAmB,EACkB,SAA2B,EACxD,GAAsB,EAAA;AAE9B,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QANrB,IAAS,CAAA,SAAA,GAAT,SAAS;QAGqB,IAAS,CAAA,SAAA,GAAT,SAAS;QACtC,IAAG,CAAA,GAAA,GAAH,GAAG;QArBN,IAAI,CAAA,IAAA,GAAG,UAAU;QAKjB,IAAW,CAAA,WAAA,GAAW,SAAS;QAE/B,IAAO,CAAA,OAAA,GAAY,KAAK;AAiB7B,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,wBAAwB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;AAC/H,QAAA,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;QACrG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,+BAA+B,CAAC;AAE5E,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,MAAK;YAC/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAC3H,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AACvE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;IAGG,QAAQ,GAAA;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;;IAGtH,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;;;IAI1C,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,gDAAgD,GAAG,EAAE;;IAG1G,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;;AAE1C,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;;;AA3D7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,iGAsB1B,mBAAmB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtBlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAXxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;AAOX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE;;;;;;;AAOX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAuBI,MAAM;2BAAC,mBAAmB;yEApBtB,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;gBAIjB,GAAG,EAAA,CAAA;sBADT;gBAGM,WAAW,EAAA,CAAA;sBADjB;;;ACbG,MAAO,uBAA2B,SAAQ,OAAO,CAAA;IAWrD,WACS,CAAA,SAAuB,EAC9B,UAAsB,EACtB,QAAmB,EACkB,SAA2B,EACxD,GAAsB,EAAA;AAE9B,QAAA,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QANrB,IAAS,CAAA,SAAA,GAAT,SAAS;QAGqB,IAAS,CAAA,SAAA,GAAT,SAAS;QACtC,IAAG,CAAA,GAAA,GAAH,GAAG;QAdN,IAAI,CAAA,IAAA,GAAG,UAAU;QAKjB,IAAQ,CAAA,QAAA,GAAY,KAAK;AAY9B,QAAA,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,aAAa,EAAE,oBAAoB,EAAE,sBAAsB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;AAC7H,QAAA,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAC,oBAAoB,CAAA,CAAE,CAAC;QACnG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,6BAA6B,CAAC;AAE1E,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AACzE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACnD,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,SAAC,CAAC;;IAGG,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG9C,OAAO,GAAA;QACZ,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;;IAG7B,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;;;AAvC9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,iGAexB,mBAAmB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAflB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2LAJtB,wGAAwG,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIzG,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE,wGAAwG;oBAClH,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAgBI,MAAM;2BAAC,mBAAmB;yEAbtB,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;gBAIjB,GAAG,EAAA,CAAA;sBADT;;;;;;;;;;;;MCWU,wBAAwB,CAAA;AAcnC,IAAA,WAAA,CAAmB,KAAwB,EAAU,GAAsB,EAAS,MAAwB,EAAA;QAAzF,IAAK,CAAA,KAAA,GAAL,KAAK;QAA6B,IAAG,CAAA,GAAA,GAAH,GAAG;QAA4B,IAAM,CAAA,MAAA,GAAN,MAAM;AAZ1F,QAAA,IAAA,CAAA,aAAa,GAA0B,IAAI,YAAY,EAAE;AAEzD,QAAA,IAAA,CAAA,SAAS,GAA0B,IAAI,YAAY,EAAE;AAErD,QAAA,IAAA,CAAA,WAAW,GAA0B,IAAI,YAAY,EAAE;AAEvD,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,YAAY,EAAE;AAEtD,QAAA,IAAA,CAAA,QAAQ,GAA0B,IAAI,YAAY,EAAE;QAEpD,IAAQ,CAAA,QAAA,GAAY,KAAK;;IAIzB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;;AAExB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG3B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;;AAE1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG7B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;;AAEzB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG5B,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;;AAE5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG/B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;;AAEpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;+GApDjB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EA9BvB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAgBDC,YAAA,CAAA;AADC,IAAA,YAAY,EAAE;;AACW,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;4FAZf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhCpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BX,EAAA,CAAA;oBACC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;iJAGC,aAAa,EAAA,CAAA;sBADZ;gBAGD,SAAS,EAAA,CAAA;sBADR;gBAGD,WAAW,EAAA,CAAA;sBADV;gBAGD,UAAU,EAAA,CAAA;sBADT;gBAGD,QAAQ,EAAA,CAAA;sBADP;gBAGD,QAAQ,EAAA,EAAA,EAAA,EAAA,CAAA;;MCvCG,4BAA4B,CAAA;AAQvC,IAAA,WAAA,CACS,KAAuB,EACtB,KAAwB,EACK,SAA2B,EAAA;QAFzD,IAAK,CAAA,KAAA,GAAL,KAAK;QACJ,IAAK,CAAA,KAAA,GAAL,KAAK;QACwB,IAAS,CAAA,SAAA,GAAT,SAAS;QAahD,IAAmB,CAAA,mBAAA,GAAG,CAAC,QAAgB,KAAc,QAAQ,KAAK,SAAS;AAE3E,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,QAAgB,KAAK,QAAQ,KAAM,IAAI,CAAC,GAAiC,CAAC,EAAE;AAbhG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAiB,KAAI;AAC1E,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;gBAC3E,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBAClC,IAAI,CAAC,MAAM,EAAE;;qBACR;oBACL,IAAI,CAAC,KAAK,EAAE;;;AAGlB,SAAC,CAAC;;IAOJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;;AAIjC,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,IAAK,KAAK,CAAC,MAAkB,CAAC,YAAY,CAAC,0BAA0B,CAAC,EAAE;AACtE,YAAA,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;;;IAI9B,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;;IAGZ,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;QAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;;;AA/C9D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,6EAW7B,mBAAmB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAXlB,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;0BAYI,MAAM;2BAAC,mBAAmB;yCAT7B,GAAG,EAAA,CAAA;sBADF;gBAGD,QAAQ,EAAA,CAAA;sBADP,KAAK;uBAAC,qBAAqB;gBA8B5B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACnC7B,MAAO,eAAmB,SAAQ,UAAa,CAAA;AAUnD,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC;;AAGzB,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC;;AAG3B,IAAA,WAAA,CAAoB,YAAkC,EAAU,KAAwB,EAAU,GAAsB,EAAA;AACtH,QAAA,KAAK,EAAE;QADW,IAAY,CAAA,YAAA,GAAZ,YAAY;QAAgC,IAAK,CAAA,KAAA,GAAL,KAAK;QAA6B,IAAG,CAAA,GAAA,GAAH,GAAG;QAjB9F,IAAK,CAAA,KAAA,GAAG,CAAC;QACT,IAAY,CAAA,YAAA,GAAG,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,CAAC;QACX,IAAO,CAAA,OAAA,GAAG,KAAK;QACf,IAAQ,CAAA,QAAA,GAAG,IAAI;QAGd,IAAQ,CAAA,QAAA,GAAY,KAAK;;IAc1B,OAAO,GAAA;QACZ,MAAM,kBAAkB,GAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACpD,QAAA,OAAO,KAAK,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,CACtC,SAAS,CAAC,IAAI,CAAC,EACf,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CACtC,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,YAAY,EACvB,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CACjB;AACH,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,IAAqC,KAAI;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;AAC/C,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACvB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK;;iBAC5B,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAClC,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;AAEzB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;YAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;AAClC,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;;AAExB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;;AAEjC,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;;YAE9B,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACvB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;oBACpB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C,oBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,iBAAC,CAAC;AACJ,aAAC,CAAC;YACF,OAAO,IAAI,CAAC,OAAO;SACpB,CAAC,EACF,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;SAChB,CAAC,CACH;;AAGI,IAAA,UAAU;AAClB;;MCjFY,sBAAsB,CAAA;AAGjC,IAAA,WAAA,CAAoB,cAAmB,EAAE,EAAA;QAArB,IAAW,CAAA,WAAA,GAAX,WAAW;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC;;AAG/B,IAAA,eAAe,CACpB,IAAoB,EACpB,MAA6C,EAC7C,IAAe,GAAA,CAAC,EAChB,QAAgB,EAChB,YAAqB,EACrB,aAAmB,EACnB,KAAoC,EAAA;QAEpC,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACzC,QAAA,IAAI,KAAK,GAAW,IAAI,CAAC,YAAY,CAAC,MAAM;QAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CACnG;AACD,gBAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;;YAEjC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;AAC5D,gBAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;;YAEjC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;AAC7F,gBAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM;;AAEjC,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,EAAE;gBACvD,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;;AAE3C,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC;;;AAGrF,QAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;;IAG1C,UAAU,CAAC,WAAgB,EAAE,MAA6C,EAAA;QAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;AAC9C,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;AAC9E,gBAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;iBACtE;gBACL,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;AACjD,gBAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;AAE9E,SAAC,CAAC;AACF,QAAA,OAAO,WAAW;;AAErB;;ACnDK,MAAO,sBAAuB,SAAQ,YAAY,CAAA;AANxD,IAAA,WAAA,GAAA;;QAQS,IAAQ,CAAA,QAAA,GAAG,4BAA4B;QAGvC,IAAW,CAAA,WAAA,GAAY,KAAK;QAE5B,IAAI,CAAA,IAAA,GAAG,KAAK;AACpB;+GARY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;8BAGQ,QAAQ,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;gBAIb,WAAW,EAAA,CAAA;sBAFjB,WAAW;uBAAC,oBAAoB;;sBAChC;gBAGM,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;;;ACNpB,MAAO,gBAAiB,SAAQ,MAAM,CAAA;AAN5C,IAAA,WAAA,GAAA;;QAQS,IAAQ,CAAA,QAAA,GAAG,qBAAqB;QAEhC,IAAI,CAAA,IAAA,GAAG,KAAK;AASpB;+GAbY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;8BAGQ,QAAQ,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;gBAGb,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW;gBAKxB,EAAE,EAAA,CAAA;sBAFD,WAAW;uBAAC,SAAS;;sBACrB;gBAKD,gBAAgB,EAAA,CAAA;sBAFf,WAAW;uBAAC,yBAAyB;;sBACrC;;;ACJH,MAAM,mBAAmB,GAAG,CAAC;MAyFhB,uBAAuB,CAAA;AAKlC,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;;IAEnB,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;QAC5B,IAAI,CAAC,8BAA8B,EAAE;;AAIvC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAEvB,IAAI,QAAQ,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,8BAA8B,EAAE;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS;;AAKtC,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;;IAE9B,IAAI,eAAe,CAAC,eAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;QACvC,IAAI,CAAC,8BAA8B,EAAE;;AAiBvC,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;IAErB,IAAI,MAAM,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5F,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;;AAexD,IAAA,WAAA,CAAoB,iBAAoC,EAAS,MAAwB,EAAU,KAAwB,EAAA;QAAvG,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QAA4B,IAAM,CAAA,MAAA,GAAN,MAAM;QAA4B,IAAK,CAAA,KAAA,GAAL,KAAK;QA5ExG,IAAK,CAAA,KAAA,GAAW,UAAU;QAc1B,IAAK,CAAA,KAAA,GAAW,CAAC;QAsBT,IAAgB,CAAA,gBAAA,GAAG,EAAE;QAGtB,IAAY,CAAA,YAAA,GAAY,KAAK;QAE7B,IAAmB,CAAA,mBAAA,GAAY,KAAK;QAEpC,IAAO,CAAA,OAAA,GAAY,KAAK;QAExB,IAAY,CAAA,YAAA,GAAY,KAAK;AAE7B,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAQ;QAE9C,IAA8B,CAAA,8BAAA,GAAY,KAAK;QActD,IAAO,CAAA,OAAA,GAAW,CAAC;AAET,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAA6B;AAYlE,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AAC7D,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,SAAC,CAAC;;IAGG,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,8BAA8B,EAAE;;IAGhC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;;AAG/B,IAAA,UAAU,CAAC,IAAI,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC;AACjF,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAChB,IAAI,CAAC,aAAa,EAAE;;IAGf,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC;AACjF,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACvB;;QAEF,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,aAAa,EAAE;;IAGf,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC;AACjF,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3B;;QAEF,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,aAAa,EAAE;;IAGf,eAAe,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;;IAGvC,WAAW,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,GAAG,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;;AAGlD,IAAA,cAAc,CAAC,QAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;;IAGlB,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB;;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE;YAClC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,MAAW,KAAI;AAC3C,gBAAA,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAClC,oBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;;qBACrC;AACL,oBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;AACjC,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,KAAK,EAAE,MAAM;AACd,qBAAA,CAAC;;AAEN,aAAC,CAAC;;QAEJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5F,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;AACtD,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;;IAGhC,aAAa,CAAC,mBAA4B,KAAK,EAAA;AACrD,QAAA,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;SACtB;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC5F,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC;;IAGxD,mBAAmB,GAAA;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjF,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC;;AAG7B,IAAA,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,QAAiB,EAAA;QAC9D,OAAO;YACL,MAAM;YACN,IAAI;AACJ,YAAA,MAAM,EAAE,QAAQ;SACjB;;IAGK,QAAQ,CAAC,WAAmB,EAAE,UAAkB,EAAA;QACtD,MAAM,KAAK,GAAG,EAAE;;QAGhB,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,OAAO,GAAG,UAAU;AACxB,QAAA,MAAM,UAAU,GAAG,mBAAmB,GAAG,UAAU;;QAGnD,IAAI,UAAU,EAAE;;AAEd,YAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,YAAA,OAAO,GAAG,SAAS,GAAG,mBAAmB,GAAG,CAAC;;AAG7C,YAAA,IAAI,OAAO,GAAG,UAAU,EAAE;gBACxB,OAAO,GAAG,UAAU;AACpB,gBAAA,SAAS,GAAG,OAAO,GAAG,mBAAmB,GAAG,CAAC;;;;AAKjD,QAAA,KAAK,IAAI,MAAM,GAAG,SAAS,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE,EAAE;AACxD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,KAAK,WAAW,CAAC;AAC7E,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAElB,QAAA,OAAO,KAAK;;+GA1NH,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EArFtB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2gGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAvFnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAC5B,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFX,EAAA,CAAA,EAAA,eAAA,EAEkB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,KAAK,EAAA,MAAA,EAAA,CAAA,2gGAAA,CAAA,EAAA;iJAKnB,KAAK,EAAA,CAAA;sBAFJ,WAAW;uBAAC,OAAO;;sBACnB;gBAIG,IAAI,EAAA,CAAA;sBADP;gBAeG,QAAQ,EAAA,CAAA;sBADX;gBAUQ,aAAa,EAAA,CAAA;sBAArB;gBAGG,eAAe,EAAA,CAAA;sBADlB;gBAWM,YAAY,EAAA,CAAA;sBADlB;gBAGM,mBAAmB,EAAA,CAAA;sBADzB;gBAGM,OAAO,EAAA,CAAA;sBADb;gBAGM,YAAY,EAAA,CAAA;sBADlB;gBAGM,wBAAwB,EAAA,CAAA;sBAD9B;gBAGM,8BAA8B,EAAA,CAAA;sBADpC;gBAIG,MAAM,EAAA,CAAA;sBADT;gBAcS,UAAU,EAAA,CAAA;sBAAnB;;;ACxKa,SAAA,eAAe,CAAI,KAAU,EAAE,GAAwB,EAAA;AACrE,IAAA,IAAI,GAAG,CAAC,MAAM,EAAE;QACd,OAAO,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;;AAE3D,IAAA,OAAO,KAAK;AACd;MAOa,wBAAwB,CAAA;IACnC,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,OAAO,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC;;AAE1C,QAAA,OAAO,EAAE;;+GALA,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,sBAAsB;AAC5B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAeY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAC1B,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC,CAAC;;AAE1F,QAAA,OAAO,EAAE;;+GANA,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAgBY,6BAA6B,CAAA;AACxC,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAC1B,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC,CAAC;;AAE/F,QAAA,OAAO,EAAE;;+GANA,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,2BAA2B;AACjC,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAgBY,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAC1B,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC,CAAC;;AAE1F,QAAA,OAAO,EAAE;;+GANA,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAgBY,2BAA2B,CAAA;AACtC,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;;AAC1B,IAAA,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAE,YAAqB,KAAK,EAAA;QAC3E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,GAAG,GAAG,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC;YAC3C,IAAI,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACtC,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA,CAAE;;YAE9B,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA,EAAG,SAAS,GAAG,GAAG,GAAG,EAAE,EAAE;;AAElE,QAAA,OAAO,EAAE;;+GAVA,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,yBAAyB;AAC/B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAoBY,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAC1B,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,GAAG,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC;AAC7C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC;;AAExE,QAAA,OAAO,EAAE;;+GAPA,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,CAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,6BAA6B;AACnC,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;MAiBY,6BAA6B,CAAA;AACxC,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM;;IAC1B,SAAS,CAAC,KAAU,EAAE,MAA2B,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3B,MAAM,GAAG,GAAG,eAAe,CAAI,KAAK,EAAE,MAAM,CAAC;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;AAEhD,QAAA,OAAO,EAAE;;+GAPA,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,2BAA2B;AACjC,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,KAAK;AACpB,iBAAA;;;;;;;;;;;;MChDY,aAAa,CAAA;IASxB,IACI,gBAAgB,CAAC,gBAA0B,EAAA;AAC7C,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,OAAO,CAAC;;AAGxD,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB;;IA2B9B,IACI,gBAAgB,CAAC,OAA6B,EAAA;AAChD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,GAAG,IAAI,sBAAsB,CAAC,EAAE,CAAC;;AAE1C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAI,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AACvE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,IACI,IAAI,CAAC,IAAS,EAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAI,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;AACvE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,IACI,aAAa,CAAC,aAAgC,EAAA;;AAEhD,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,YAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE;;QAE9C,IAAI,aAAa,EAAE;;YAEjB,IAAI,CAAC,yBAAyB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AACvE,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;AACjC,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAC7I,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,aAAC,CAAC;;;IAIN,IACI,cAAc,CAAC,cAAkC,EAAA;;AAEnD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;;QAExC,IAAI,cAAc,EAAE;;YAElB,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC,SAAS,CAAC,MAAK;AACvD,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI;AAChC,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AAC7I,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,aAAC,CAAC;;;IAIN,IACI,OAAO,CAAC,OAA8B,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACvB,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;;AAElC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;;IAGtB,IACI,YAAY,CAAC,CAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,CAAC,CAAC;;AAE/C,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;IAI3B,IACI,cAAc,CAAC,CAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC;;AAEjD,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAI7B,IACI,eAAe,CAAC,CAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,CAAC,CAAC;;AAElD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;;IAI9B,IACI,gBAAgB,CAAC,CAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,iBAAiB;;AAE7D,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB;;AA6B/B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY;;AAGzF,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;;AAGrE,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;;AAK7C,IAAA,WAAA,CAAmB,MAAwB,EAAU,GAAsB,EAAS,KAAwB,EAAA;QAAzF,IAAM,CAAA,MAAA,GAAN,MAAM;QAA4B,IAAG,CAAA,GAAA,GAAH,GAAG;QAA4B,IAAK,CAAA,KAAA,GAAL,KAAK;QAnL9C,IAA6B,CAAA,6BAAA,GAAY,KAAK;AAM/E,QAAA,IAAA,CAAA,OAAO,GAAsC,IAAI,YAAY,EAAE;QAgBhE,IAAI,CAAA,IAAA,GAAG,iBAAiB;QACxB,IAAoB,CAAA,oBAAA,GAAG,KAAK;QAC5B,IAAa,CAAA,aAAA,GAAG,IAAI;QACpB,IAAmB,CAAA,mBAAA,GAAG,EAAE;;QAExB,IAAS,CAAA,SAAA,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,EAAE;QACpC,IAAS,CAAA,SAAA,GAAwC,EAAE;QACnD,IAAW,CAAA,WAAA,GAAG,KAAK;QAEnB,IAAW,CAAA,WAAA,GAAW,SAAS;QAC/B,IAAY,CAAA,YAAA,GAAY,KAAK;QAC7B,IAAmB,CAAA,mBAAA,GAAG,KAAK;QAI3B,IAAoB,CAAA,oBAAA,GAAG,KAAK;QAmG7B,IAAiB,CAAA,iBAAA,GAAY,IAAI;AAE/B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAoC;AACzE,QAAA,IAAA,CAAA,WAAW,GAAkE,IAAI,YAAY,EAGnG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;QAG7C,IAAO,CAAA,OAAA,GAAY,IAAI;QACvB,IAAgB,CAAA,gBAAA,GAAwC,EAAE;QAC1D,IAAa,CAAA,aAAA,GAAY,KAAK;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAgB,IAAI,GAAG,EAAE;QAClC,IAAU,CAAA,UAAA,GAAW,CAAC;QACtB,IAAU,CAAA,UAAA,GAAY,KAAK;QAU1B,IAAW,CAAA,WAAA,GAAY,KAAK;AA8OpC,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,UAAkB,KAAI;YACxC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAChD,gBAAA,OAAO,KAAK;;YAEd,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK;AAC1D,SAAC;QAhOC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3D,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CACjE,CAAC,KAA4B,KAAI;AAC/B,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE;AACnC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,eAAe,EAAE,KAAK,CAAC,eAAe;oBACtC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;AAC1C,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;;iBAC7B;gBACL,MAAM,CAAC,wDAAwD,CAAC;;AAEpE,SAAC,CACF;AACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAsD,KAAI;AAC7H,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE;AACnC,gBAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;oBAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;;;iBAEhG;gBACL,MAAM,CAAC,wDAAwD,CAAC;;AAEpE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;YAC7D,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;aACzB,EAAE,GAAG,CAAC;AACT,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,KAAc,KAAI;AACvG,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAClC,SAAC,CAAC;;IAGG,wCAAwC,CAAC,MAAc,EAAE,UAA2C,EAAA;AACzG,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC;QAC9E,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBACrF,MAAM,aAAa,GAAU,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO;gBAC/D,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CACxC,CAAC,GAAG,KACF,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,oBAAoB,CAAC;oBACnD,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CACxF;AACD,gBAAA,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC;;iBACjE;gBACL,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,GAAG,UAAU;;YAEjD,MAAM,CAAC,kBAAkB,EAAE;AAC3B,YAAA,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE;;;IAIpC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE;AAC7C,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;AACvC,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE;AACrC,QAAA,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE;AAC1C,QAAA,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE;AACnD,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC9B,YAAA,IAAI,CAAC,sBAAsB,CAAC,aAAyB,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC;;;IAI7G,kBAAkB,GAAA;QACvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC;;;QAI5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;YAErC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ;;AAElD,SAAC,CAAC;;QAEF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;AAEpC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ;AAChD,SAAC,CAAC;;QAEF,IAAI,CAAC,gBAAgB,EAAE;;QAGvB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC1D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC;;QAEjC,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAC9D,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,EAAE;;QAEtC,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE;AACrE,YAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;;QAE5D,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,SAAS;QAClF,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,SAAS;QAC1F,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,SAAS;;AAG/D,QAAA,IAAI,CAAC,sBAAsB,CAAC,aAAyB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC;AAC7G,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGlB,IAAA,cAAc,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI;QAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;;IAGrH,cAAc,CAAC,KAAa,EAAE,IAAyB,EAAA;QAC5D,OAAO,IAAI,CAAC,EAAE;;IAGT,UAAU,CAAC,KAAU,EAAE,GAAM,EAAA;AAClC,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;AAC3B,YAAA,OAAO,IAAI;;AAEb,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;;AAEhC,QAAA,OAAO,KAAK;;AAGP,IAAA,UAAU,CAAC,GAAM,EAAA;QACtB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAG,EAAA,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;AAG3D,IAAA,SAAS,CAAC,GAAM,EAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAErC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;aACvD;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;QAE3D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAE,GAAiC,CAAC,EAAE,CAAC;;AAG3D,IAAA,UAAU,CAAC,MAAe,EAAA;AAC/B,QAAA,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,GAAM,KAAI;YAC9C,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;iBACvD;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;AAE7D,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;;IAGtB,sBAAsB,GAAA;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5D,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;AACrD,gBAAA,OAAO,KAAK;;;AAGhB,QAAA,OAAO,IAAI;;AAGN,IAAA,UAAU,CAAC,GAAM,EAAA;QACtB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,KAAK;;AAEd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAG,EAAA,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;IAG3D,SAAS,CAAC,GAAM,EAAE,MAAe,EAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACrC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;aACvD;AACL,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;;;AAGjF,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;iBACvD;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAG,EAAA,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC;;;QAGlE,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;;AAGzB,IAAA,UAAU,CAAC,QAAiB,EAAA;AACjC,QAAA,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,GAAM,KAAI;YAC9C,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC;;iBACvD;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAG,EAAA,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC;;AAElE,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;;IAGzB,sBAAsB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,OAAO,IAAI;;QAEb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;AAClC,YAAA,OAAO,KAAK;;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5D,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;AACrD,gBAAA,OAAO,KAAK;;;AAGhB,QAAA,OAAO,IAAI;;AAUN,IAAA,aAAa,CAAC,KAAkC,EAAA;QACrD,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC;;IAGnD,4BAA4B,GAAA;QAClC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC5G,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAA2B,KAAI;AACnD,gBAAA,IAAI,MAAM,CAAC,gBAAgB,EAAE;oBAC3B,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS;oBACpD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK;AAC5C,oBAAA,MAAM,CAAC,gBAAgB,GAAG,SAAS;;AAEvC,aAAC,CAAC;YACF,MAAM,gBAAgB,GAAa,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAY,KAAa;gBACxF,QACE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAA2B,KAAa;oBAC9D,OAAO,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI;AAC/C,iBAAC,CAAC,KAAK,CAAC,CAAC;AAEb,aAAC,CAAC;YACF,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnD,MAAM,mBAAmB,GAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAA2B,KAAI;AACjG,oBAAA,OAAO,MAAM,CAAC,EAAE,KAAK,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,iBAAC,CAAC;gBACF,mBAAmB,CAAC,gBAAgB,GAAG;oBACrC,SAAS,EAAE,mBAAmB,CAAC,SAAS;oBACxC,KAAK,EAAE,mBAAmB,CAAC,KAAK;iBACjC;AACD,gBAAA,mBAAmB,CAAC,KAAK,GAAG,SAAS;AACrC,gBAAA,mBAAmB,CAAC,SAAS,GAAG,KAAK;;;;IAKnC,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEzF,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE;;YAEtC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAA2B,KAAI;;AAEnD,gBAAA,IAAI,YAAoB;AACxB,gBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;;AAEnB,oBAAA,YAAY,GAAG,MAAM,CAAC,QAAQ;;qBACzB,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;;AAEtC,oBAAA,YAAY,GAAG,MAAM,CAAC,EAAE;;qBACnB;;AAEL,oBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;wBAC5B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC1C,4BAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AACvB,gCAAA,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU;;4BAEjC,YAAY,GAAG,sBAAsB;;6BAChC;4BACL,YAAY,GAAG,oBAAoB;;;yBAEhC;AACL,wBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;AAC/D,4BAAA,YAAY,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc;;6BACpD;AACL,4BAAA,YAAY,GAAG,CAAG,EAAA,MAAM,CAAC,IAAI,cAAc;;;;AAIjD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC/D,gBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,oBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI;oBACpE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;;AAEtD,aAAC,CAAC;YACF,IAAI,CAAC,4BAA4B,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;;IAIrB,sBAAsB,CAAC,gBAA0B,EAAE,SAAuC,EAAA;AAChG,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE;AACnC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,gBAAgB;AAChB,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAC;;iBACG;gBACL,MAAM,CAAC,wDAAwD,CAAC;;;AAGpE,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;QACxC,IAAI,CAAC,4BAA4B,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,cAAc,EAAE;AACvB,aAAC,CAAC;;;IAIE,cAAc,GAAA;AACpB,QAAA,MAAM,MAAM,GAAY,IAAI,CAAC,sBAAsB,CAAC,aAAwB;AAC5E,QAAA,MAAM,IAAI,GAAW,MAAM,CAAC,UAAU;AACtC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;;AAErC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;AAGzB,IAAA,mBAAmB,CAAC,KAA2B,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClE,MAAM,qBAAqB,GAAG,yBAAyB,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC7H,IAAI,qBAAqB,EAAE;oBACzB,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;;;;;+GA1gB1C,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,aAAA,EAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAHX,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,0DAM1E,YAAY,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EACf,YAAY,EACZ,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,uBAAuB,ECnEvC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mkZAiQyB,EDjNT,MAAA,EAAA,CAAA,64iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,KAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,OAAA,EAAA,OAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,QAAQ,EAAE;AACd,gBAAAC,KAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjF,gBAAAA,KAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7D,gBAAA,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,qCAAqC,CAAC,CAAC;aAC3E,CAAC;AACL,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AA8CM,UAAA,CAAA;AADR,IAAA,YAAY,EAAE;;AACuB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,KAAA,CAAA,CAAA;4FAtC3B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAhBzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACf,UAAA,EAAA;wBACR,OAAO,CAAC,QAAQ,EAAE;AACd,4BAAAA,KAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjF,4BAAAA,KAAS,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7D,4BAAA,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,qCAAqC,CAAC,CAAC;yBAC3E,CAAC;qBACL,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,aACpC,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAe,aAAA,EAAE,CAAC,EAAA,UAAA,EAC7E,KAAK,EAAA,QAAA,EAAA,mkZAAA,EAAA,MAAA,EAAA,CAAA,64iBAAA,CAAA,EAAA;iJAGwB,6BAA6B,EAAA,CAAA;sBAAvE,WAAW;uBAAC,4BAA4B;gBAEV,eAAe,EAAA,CAAA;sBAA7C,eAAe;uBAAC,YAAY;gBACD,gBAAgB,EAAA,CAAA;sBAA3C,YAAY;uBAAC,YAAY;gBACa,WAAW,EAAA,CAAA;sBAAjD,YAAY;uBAAC,uBAAuB;gBACA,sBAAsB,EAAA,CAAA;sBAA1D,SAAS;uBAAC,wBAAwB;gBACzB,OAAO,EAAA,CAAA;sBAAhB;gBAGG,gBAAgB,EAAA,CAAA;sBADnB;gBAUQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,wBAAwB,EAAA,CAAA;sBAAhC;gBAEQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAKG,gBAAgB,EAAA,CAAA;sBADnB;gBAWG,IAAI,EAAA,CAAA;sBADP;gBASG,aAAa,EAAA,CAAA;sBADhB;gBAiBG,cAAc,EAAA,CAAA;sBADjB;gBAiBG,OAAO,EAAA,CAAA;sBADV;gBAWG,YAAY,EAAA,CAAA;sBADf;gBAUG,cAAc,EAAA,CAAA;sBADjB;gBAUG,eAAe,EAAA,CAAA;sBADlB;gBAUG,gBAAgB,EAAA,CAAA;sBADnB;gBAUS,kBAAkB,EAAA,CAAA;sBAA3B;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAIS,aAAa,EAAA,CAAA;sBAAtB;gBAqBG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAMtB,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,eAAe;gBASnB,gBAAgB,EAAA,CAAA;sBAAxB;;;MElIU,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAvC5B,wBAAwB;YACxB,yBAAyB;YACzB,6BAA6B;YAC7B,6BAA6B;YAC7B,2BAA2B;YAC3B,yBAAyB;YACzB,+BAA+B;YAC/B,uBAAuB;YACvB,uBAAuB;YACvB,uBAAuB;YACvB,6BAA6B;YAC7B,iBAAiB;YACjB,sBAAsB;YACtB,gBAAgB;YAChB,uBAAuB;YACvB,yBAAyB;YACzB,+BAA+B;YAC/B,uBAAuB;YACvB,6BAA6B;YAC7B,aAAa;YACb,4BAA4B;YAC5B,wBAAwB;AACxB,YAAA,uBAAuB,aA5CvB,oBAAoB;YACpB,cAAc;YACd,YAAY;YACZ,WAAW;YACX,cAAc;YACd,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,eAAe;AACf,YAAA,eAAe,aA6Bf,aAAa;YACb,wBAAwB;YACxB,yBAAyB;YACzB,6BAA6B;YAC7B,6BAA6B;YAC7B,2BAA2B;YAC3B,yBAAyB;YACzB,+BAA+B;YAC/B,6BAA6B;YAC7B,wBAAwB;YACxB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAfnB,SAAA,EAAA,CAAC,cAAc,CAAC,YA9CzB,oBAAoB;YACpB,cAAc;YACd,YAAY;YACZ,WAAW;YACX,cAAc;YACd,gBAAgB;YAChB,kBAAkB;YAClB,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,eAAe;YACf,eAAe,CAAA,EAAA,CAAA,CAAA;;4FA0CN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA/D/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,cAAc;wBACd,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,kBAAkB;wBAClB,oBAAoB;wBACpB,iBAAiB;wBACjB,eAAe;wBACf,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,gBAAgB;wBAChB,iBAAiB;wBACjB,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,eAAe;AAChB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,yBAAyB;wBACzB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,2BAA2B;wBAC3B,yBAAyB;wBACzB,+BAA+B;wBAC/B,uBAAuB;wBACvB,uBAAuB;wBACvB,uBAAuB;wBACvB,6BAA6B;wBAC7B,iBAAiB;wBACjB,sBAAsB;wBACtB,gBAAgB;wBAChB,uBAAuB;wBACvB,yBAAyB;wBACzB,+BAA+B;wBAC/B,uBAAuB;wBACvB,6BAA6B;wBAC7B,aAAa;wBACb,4BAA4B;wBAC5B,wBAAwB;wBACxB,uBAAuB;AACxB,qBAAA;oBACD,SAAS,EAAE,CAAC,cAAc,CAAC;AAC3B,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,wBAAwB;wBACxB,yBAAyB;wBACzB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,2BAA2B;wBAC3B,yBAAyB;wBACzB,+BAA+B;wBAC/B,6BAA6B;wBAC7B,wBAAwB;wBACxB,uBAAuB;AACxB,qBAAA;AACF,iBAAA;;;IClEW;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAI5B,EAAA,CAAA,CAAA;IAiNW;AAAZ,CAAA,UAAY,wBAAwB,EAAA;AAClC,IAAA,wBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,wBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,wBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAJW,wBAAwB,KAAxB,wBAAwB,GAInC,EAAA,CAAA,CAAA;IAEW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,IAAS;AACT,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,IAAe;AACf,IAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,KAAsB;AACtB,IAAA,gBAAA,CAAA,aAAA,CAAA,GAAA,IAAkB;AAClB,IAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,KAAyB;AACzB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAfW,gBAAgB,KAAhB,gBAAgB,GAe3B,EAAA,CAAA,CAAA;;MClRqB,sBAAsB,CAAA;AAU3C;;ACbD;;AAEG;;;;"}
|