@acorex/components 21.0.0-next.54 → 21.0.0-next.55

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.
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-data-list.mjs","sources":["../tmp-esm2022/data-list/lib/data-list.component.js","../tmp-esm2022/data-list/index.js","../tmp-esm2022/data-list/acorex-components-data-list.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, EventEmitter, input, model, Output, signal, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { MXValueComponent, AXListDataSource } from '@acorex/cdk/common';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/cdk/scrolling\";\nexport class AXDataListComponent extends MXValueComponent {\n constructor() {\n super();\n // Inputs\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.config = input({}, ...(ngDevMode ? [{ debugName: \"config\" }] : []));\n this.multiple = input(false, ...(ngDevMode ? [{ debugName: \"multiple\" }] : []));\n this.showCheckbox = input(true, ...(ngDevMode ? [{ debugName: \"showCheckbox\" }] : []));\n this.itemHeight = input(40, ...(ngDevMode ? [{ debugName: \"itemHeight\" }] : []));\n this.isItemTruncated = input(true, ...(ngDevMode ? [{ debugName: \"isItemTruncated\" }] : []));\n this.showItemTooltip = input(true, ...(ngDevMode ? [{ debugName: \"showItemTooltip\" }] : []));\n this.disabledField = input('disabled', ...(ngDevMode ? [{ debugName: \"disabledField\" }] : []));\n this.tooltipField = input('tooltip', ...(ngDevMode ? [{ debugName: \"tooltipField\" }] : []));\n this.textField = input('text', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.descriptionField = input('description', ...(ngDevMode ? [{ debugName: \"descriptionField\" }] : []));\n this.levelField = input('level', ...(ngDevMode ? [{ debugName: \"levelField\" }] : []));\n this.childrenField = input('children', ...(ngDevMode ? [{ debugName: \"childrenField\" }] : []));\n this.expandedField = input('expanded', ...(ngDevMode ? [{ debugName: \"expandedField\" }] : []));\n // Templates\n this.itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n this.emptyTemplate = input(...(ngDevMode ? [undefined, { debugName: \"emptyTemplate\" }] : []));\n this.loadingTemplate = input(...(ngDevMode ? [undefined, { debugName: \"loadingTemplate\" }] : []));\n // Outputs\n this.selectionChange = new EventEmitter();\n this.itemClick = new EventEmitter();\n this.itemDoubleClick = new EventEmitter();\n this.expandChange = new EventEmitter();\n // Internal signals\n this.loading = signal(false, ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.totalItems = signal(0, ...(ngDevMode ? [{ debugName: \"totalItems\" }] : []));\n this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: \"selectedItems\" }] : []));\n this.selectedKeys = signal([], ...(ngDevMode ? [{ debugName: \"selectedKeys\" }] : []));\n this.focusedIndex = signal(-1, ...(ngDevMode ? [{ debugName: \"focusedIndex\" }] : []));\n this.expandedItems = signal(new Set(), ...(ngDevMode ? [{ debugName: \"expandedItems\" }] : []));\n // List data source for virtual scrolling\n this.listDataSource = null;\n // Computed values\n this.hasItems = computed(() => {\n const dataSourceItems = this.listDataSource?.source?.cachedItems?.length > 0;\n return dataSourceItems;\n }, ...(ngDevMode ? [{ debugName: \"hasItems\" }] : []));\n this.isEmpty = computed(() => {\n const notLoading = !this.loading();\n const noDataSourceItems = !this.listDataSource?.source?.cachedItems?.length;\n return notLoading && noDataSourceItems;\n }, ...(ngDevMode ? [{ debugName: \"isEmpty\" }] : []));\n this.isMultipleSelection = computed(() => this.multiple(), ...(ngDevMode ? [{ debugName: \"isMultipleSelection\" }] : []));\n this.showCheckboxes = computed(() => this.showCheckbox(), ...(ngDevMode ? [{ debugName: \"showCheckboxes\" }] : []));\n // Selection model\n this.selectionModel = model(...(ngDevMode ? [undefined, { debugName: \"selectionModel\" }] : []));\n // Track by function for virtual scrolling\n this.trackByFn = (index, item) => {\n if (!item) {\n return `loading-${index}`;\n }\n return this.getItemKey(item);\n };\n // Effect to sync selection model with internal state\n effect(() => {\n const selection = this.selectionModel();\n if (selection) {\n if (Array.isArray(selection)) {\n this.selectedKeys.set(selection);\n }\n else {\n this.selectedKeys.set([selection]);\n }\n this.updateSelectedItems();\n }\n });\n // Effect to emit selection changes\n effect(() => {\n const selectedItems = this.selectedItems();\n const selectedKeys = this.selectedKeys();\n const isMultiple = this.isMultipleSelection();\n if (selectedItems.length > 0 || selectedKeys.length > 0) {\n this.selectionChange.emit({\n selectedItems,\n selectedKeys,\n isMultiple,\n });\n }\n });\n // Effect to watch for dataSource changes and create listDataSource\n effect(() => {\n const dataSource = this.dataSource();\n if (dataSource) {\n console.log('Data source changed, creating AXListDataSource...');\n this.listDataSource = new AXListDataSource({\n source: dataSource,\n debounceTime: 100, // Add debounce to prevent too many page requests\n });\n console.log('Created AXListDataSource:', this.listDataSource);\n // Set up subscriptions\n this.setupDataSourceSubscription();\n }\n });\n }\n ngOnInit() {\n super.ngOnInit();\n // Data loading is now handled by the effect watching dataSource changes\n }\n setupDataSourceSubscription() {\n if (!this.dataSource() || !this.listDataSource)\n return;\n console.log('Setting up data source subscription for:', this.dataSource());\n // Subscribe to data source changes\n this.dataSource().onChanged.subscribe((data) => {\n console.log('Data source changed:', data);\n if (data && data.cachedItems) {\n this.totalItems.set(data.totalCount || data.cachedItems.length);\n }\n });\n this.dataSource().onLoadingChanged.subscribe((loading) => {\n console.log('Loading changed:', loading);\n this.loading.set(loading);\n });\n // Load initial data - just trigger the first page load\n // The AXListDataSource will handle subsequent pages automatically\n this.dataSource().setPage(0);\n }\n // Selection management\n selectItem(item, event) {\n if (event && typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n if (this.isItemDisabled(item))\n return;\n if (this.isMultipleSelection()) {\n this.toggleMultipleSelection(item);\n }\n else {\n this.setSingleSelection(item);\n }\n }\n toggleMultipleSelection(item) {\n const currentKeys = this.selectedKeys();\n const itemKey = this.getItemKey(item);\n if (currentKeys.includes(itemKey)) {\n this.selectedKeys.set(currentKeys.filter(key => key !== itemKey));\n }\n else {\n this.selectedKeys.set([...currentKeys, itemKey]);\n }\n this.updateSelectedItems();\n }\n setSingleSelection(item) {\n const itemKey = this.getItemKey(item);\n this.selectedKeys.set([itemKey]);\n this.updateSelectedItems();\n }\n deselectItem(item) {\n const currentKeys = this.selectedKeys();\n const itemKey = this.getItemKey(item);\n const newKeys = currentKeys.filter(key => key !== itemKey);\n this.selectedKeys.set(newKeys);\n this.updateSelectedItems();\n }\n updateSelectedItems() {\n const keys = this.selectedKeys();\n const dataSource = this.listDataSource?.source;\n if (!dataSource)\n return;\n const selected = dataSource.cachedItems.filter(item => keys.includes(this.getItemKey(item)));\n this.selectedItems.set(selected);\n // Update selection model\n if (this.isMultipleSelection()) {\n this.selectionModel.set(keys);\n }\n else {\n this.selectionModel.set(keys[0] || '');\n }\n }\n isItemSelected(item) {\n return this.selectedKeys().includes(this.getItemKey(item));\n }\n isItemDisabled(item) {\n const disabledField = this.disabledField();\n if (!disabledField)\n return false;\n const disabled = item[disabledField];\n return Boolean(disabled);\n }\n getItemKey(item) {\n if (item.id !== undefined && item.id !== null) {\n return String(item.id);\n }\n // Fallback to other potential key fields\n if (item['key'] !== undefined && item['key'] !== null) {\n return String(item['key']);\n }\n if (item['value'] !== undefined && item['value'] !== null) {\n return String(item['value']);\n }\n // Last resort: use the item itself as a string\n return String(item);\n }\n // Tree grouping\n toggleExpanded(item, event) {\n if (event && typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n if (!this.hasChildren(item))\n return;\n const currentExpanded = this.expandedItems();\n const itemKey = this.getItemKey(item);\n if (currentExpanded.has(itemKey)) {\n currentExpanded.delete(itemKey);\n }\n else {\n currentExpanded.add(itemKey);\n }\n this.expandedItems.set(new Set(currentExpanded));\n this.expandChange.emit({ item, expanded: currentExpanded.has(itemKey) });\n }\n hasChildren(item) {\n const childrenField = this.childrenField();\n if (!childrenField)\n return false;\n const children = item[childrenField];\n return Array.isArray(children) && children.length > 0;\n }\n isExpanded(item) {\n const expandedField = this.expandedField();\n if (expandedField) {\n const expanded = item[expandedField];\n if (expanded !== undefined && expanded !== null) {\n return Boolean(expanded);\n }\n }\n return this.expandedItems().has(this.getItemKey(item));\n }\n getItemLevel(item) {\n const levelField = this.levelField();\n if (!levelField)\n return 0;\n const level = item[levelField];\n return level !== undefined && level !== null ? Number(level) : 0;\n }\n // Keyboard navigation\n onKeyDown(event, item, index) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem(index);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem(index);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectItem(item);\n break;\n case 'Escape':\n this.focusedIndex.set(-1);\n break;\n }\n }\n focusNextItem(currentIndex) {\n const dataSource = this.listDataSource?.source;\n if (!dataSource || dataSource.cachedItems.length === 0)\n return;\n const nextIndex = Math.min(currentIndex + 1, dataSource.cachedItems.length - 1);\n this.focusedIndex.set(nextIndex);\n this.scrollToIndex(nextIndex);\n }\n focusPreviousItem(currentIndex) {\n const dataSource = this.listDataSource?.source;\n if (!dataSource || dataSource.cachedItems.length === 0)\n return;\n const prevIndex = Math.max(currentIndex - 1, 0);\n this.focusedIndex.set(prevIndex);\n this.scrollToIndex(prevIndex);\n }\n scrollToIndex(index) {\n if (this.viewport && typeof index === 'number' && index >= 0) {\n this.viewport.scrollToIndex(index);\n }\n }\n // Item interaction\n onItemClick(item, event) {\n if (this.isItemDisabled(item))\n return;\n this.itemClick.emit(item);\n this.selectItem(item, event);\n }\n onCheckboxChange(item, checked) {\n if (this.isItemDisabled(item))\n return;\n if (checked) {\n this.selectItem(item);\n }\n else {\n this.deselectItem(item);\n }\n }\n onCheckboxClick(event) {\n if (typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n }\n onItemDoubleClick(item) {\n if (this.isItemDisabled(item))\n return;\n this.itemDoubleClick.emit(item);\n }\n // Utility methods\n getItemText(item) {\n const textField = this.textField();\n if (textField) {\n const text = item[textField];\n if (text !== undefined && text !== null) {\n return String(text);\n }\n }\n return item.text || '';\n }\n getItemDescription(item) {\n const descriptionField = this.descriptionField();\n if (descriptionField) {\n const description = item[descriptionField];\n if (description !== undefined && description !== null) {\n return String(description);\n }\n }\n return item.description || '';\n }\n getItemTooltip(item) {\n const tooltipField = this.tooltipField();\n if (tooltipField) {\n const tooltip = item[tooltipField];\n if (tooltip !== undefined && tooltip !== null) {\n return String(tooltip);\n }\n }\n return item.tooltip || '';\n }\n shouldShowTooltip(item) {\n return this.showItemTooltip() && !!this.getItemTooltip(item);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.9\", type: AXDataListComponent, isStandalone: true, selector: \"ax-data-list\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: \"showCheckbox\", publicName: \"showCheckbox\", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: true, isRequired: false, transformFunction: null }, isItemTruncated: { classPropertyName: \"isItemTruncated\", publicName: \"isItemTruncated\", isSignal: true, isRequired: false, transformFunction: null }, showItemTooltip: { classPropertyName: \"showItemTooltip\", publicName: \"showItemTooltip\", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: \"disabledField\", publicName: \"disabledField\", isSignal: true, isRequired: false, transformFunction: null }, tooltipField: { classPropertyName: \"tooltipField\", publicName: \"tooltipField\", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: \"textField\", publicName: \"textField\", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: \"descriptionField\", publicName: \"descriptionField\", isSignal: true, isRequired: false, transformFunction: null }, levelField: { classPropertyName: \"levelField\", publicName: \"levelField\", isSignal: true, isRequired: false, transformFunction: null }, childrenField: { classPropertyName: \"childrenField\", publicName: \"childrenField\", isSignal: true, isRequired: false, transformFunction: null }, expandedField: { classPropertyName: \"expandedField\", publicName: \"expandedField\", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: true, isRequired: false, transformFunction: null }, loadingTemplate: { classPropertyName: \"loadingTemplate\", publicName: \"loadingTemplate\", isSignal: true, isRequired: false, transformFunction: null }, selectionModel: { classPropertyName: \"selectionModel\", publicName: \"selectionModel\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: \"selectionChange\", itemClick: \"itemClick\", itemDoubleClick: \"itemDoubleClick\", expandChange: \"expandChange\", selectionModel: \"selectionModelChange\" }, viewQueries: [{ propertyName: \"viewport\", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-data-list\\\" [class.ax-data-list--loading]=\\\"loading()\\\">\\n <!-- Loading State -->\\n @if (loading()) {\\n <div class=\\\"ax-data-list__loading\\\">\\n <ng-container *ngTemplateOutlet=\\\"loadingTemplate() || defaultLoadingTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- Empty State -->\\n @if (isEmpty()) {\\n <div class=\\\"ax-data-list__empty\\\">\\n <ng-container *ngTemplateOutlet=\\\"emptyTemplate() || defaultEmptyTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- List Content -->\\n @if (hasItems() && listDataSource !== null) {\\n <div class=\\\"ax-data-list__content\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight()\\\"\\n class=\\\"ax-data-list__viewport\\\"\\n [class.ax-data-list__viewport--truncated]=\\\"isItemTruncated()\\\"\\n >\\n <ng-container *cdkVirtualFor=\\\"let item of listDataSource; let i = index; trackBy: trackByFn\\\">\\n @if (item) {\\n <div\\n class=\\\"ax-data-list__item\\\"\\n [class.ax-data-list__item--selected]=\\\"isItemSelected(item)\\\"\\n [class.ax-data-list__item--disabled]=\\\"isItemDisabled(item)\\\"\\n [class.ax-data-list__item--focused]=\\\"focusedIndex() === i\\\"\\n [class]=\\\"'ax-data-list__item--level-' + getItemLevel(item)\\\"\\n [style.height.px]=\\\"itemHeight()\\\"\\n (click)=\\\"onItemClick(item, $event)\\\"\\n (dblclick)=\\\"onItemDoubleClick(item)\\\"\\n (keydown)=\\\"onKeyDown($event, item, i)\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"listitem\\\"\\n [attr.aria-selected]=\\\"isItemSelected(item)\\\"\\n [attr.aria-disabled]=\\\"isItemDisabled(item)\\\"\\n [attr.aria-level]=\\\"getItemLevel(item) + 1\\\"\\n >\\n <!-- Checkbox -->\\n @if (showCheckboxes()) {\\n <div class=\\\"ax-data-list__checkbox\\\" (click)=\\\"onCheckboxClick($event)\\\">\\n <ax-check-box\\n [value]=\\\"isItemSelected(item)\\\"\\n [disabled]=\\\"isItemDisabled(item)\\\"\\n (valueChange)=\\\"onCheckboxChange(item, $event)\\\"\\n >\\n </ax-check-box>\\n </div>\\n }\\n\\n <!-- Expand/Collapse Button for Tree Items -->\\n @if (hasChildren(item)) {\\n <div\\n class=\\\"ax-data-list__expand-button\\\"\\n [class.ax-data-list__expand-button--expanded]=\\\"isExpanded(item)\\\"\\n (click)=\\\"toggleExpanded(item, $event)\\\"\\n role=\\\"button\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-expanded]=\\\"isExpanded(item)\\\"\\n >\\n <svg class=\\\"ax-data-list__expand-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path d=\\\"M7 10l5 5 5-5z\\\" />\\n </svg>\\n </div>\\n }\\n\\n <!-- Item Content -->\\n <div class=\\\"ax-data-list__content-wrapper\\\">\\n <!-- Custom Item Template -->\\n @if (itemTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate();\\n context: {\\n $implicit: item,\\n index: i,\\n selected: isItemSelected(item),\\n disabled: isItemDisabled(item),\\n }\\n \\\"\\n ></ng-container>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"defaultItemTemplate\\\"></ng-container>\\n }\\n\\n <!-- Default Item Template -->\\n <ng-template #defaultItemTemplate>\\n <div\\n class=\\\"ax-data-list__text\\\"\\n [class.ax-data-list__text--truncated]=\\\"isItemTruncated()\\\"\\n [axTooltip]=\\\"shouldShowTooltip(item) ? getItemTooltip(item) : null\\\"\\n [axTooltipDisabled]=\\\"!shouldShowTooltip(item)\\\"\\n >\\n {{ getItemText(item) }}\\n </div>\\n\\n @if (getItemDescription(item)) {\\n <div\\n class=\\\"ax-data-list__description\\\"\\n [class.ax-data-list__description--truncated]=\\\"isItemTruncated()\\\"\\n >\\n {{ getItemDescription(item) }}\\n </div>\\n }\\n </ng-template>\\n </div>\\n </div>\\n } @else {\\n <!-- Loading skeleton for null items -->\\n <div class=\\\"ax-data-list__item ax-data-list__item--loading\\\" [style.height.px]=\\\"itemHeight()\\\">\\n <div class=\\\"ax-data-list__loading-skeleton\\\">\\n <div class=\\\"ax-data-list__skeleton-checkbox\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-content\\\">\\n <div class=\\\"ax-data-list__skeleton-text\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-description\\\"></div>\\n </div>\\n </div>\\n </div>\\n }\\n </ng-container>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n }\\n</div>\\n\\n<!-- Default Loading Template -->\\n<ng-template #defaultLoadingTemplate>\\n <div class=\\\"ax-data-list__loading-default\\\">\\n <div class=\\\"ax-data-list__loading-spinner\\\"></div>\\n <span>Loading...</span>\\n </div>\\n</ng-template>\\n\\n<!-- Default Empty Template -->\\n<ng-template #defaultEmptyTemplate>\\n <div class=\\\"ax-data-list__empty-default\\\">\\n <svg class=\\\"ax-data-list__empty-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path\\n d=\\\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\\\"\\n />\\n </svg>\\n <span>No items to display</span>\\n </div>\\n</ng-template>\\n\", styles: [\".ax-data-list{display:flex;flex-direction:column;width:100%;height:100%;background:var(--ax-color-background, #ffffff);border:1px solid var(--ax-color-border, #e5e7eb);border-radius:var(--ax-border-radius, .375rem);overflow:hidden}.ax-data-list--loading .ax-data-list__content{opacity:.6;pointer-events:none}.ax-data-list__loading{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__loading-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__loading-spinner{width:2rem;height:2rem;border:2px solid var(--ax-color-border, #e5e7eb);border-top:2px solid var(--ax-color-primary, #3b82f6);border-radius:50%;animation:spin 1s linear infinite}.ax-data-list__empty{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__empty-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280);text-align:center}.ax-data-list__empty-icon{width:3rem;height:3rem;opacity:.5}.ax-data-list__content{flex:1;overflow:hidden}.ax-data-list__viewport{height:100%;width:100%}.ax-data-list__viewport--truncated .ax-data-list__text,.ax-data-list__viewport--truncated .ax-data-list__description{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__item{display:flex;align-items:center;padding:.5rem 1rem;cursor:pointer;transition:all .15s ease-in-out;border-bottom:1px solid var(--ax-color-border-light, #f3f4f6);position:relative}.ax-data-list__item:hover:not(.ax-data-list__item--disabled){background-color:var(--ax-color-hover, #f9fafb)}.ax-data-list__item:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--selected{background-color:var(--ax-color-primary-light, #dbeafe);color:var(--ax-color-primary, #3b82f6);border-color:var(--ax-color-primary, #3b82f6)}.ax-data-list__item--selected:hover{background-color:var(--ax-color-primary-light-hover, #bfdbfe)}.ax-data-list__item--disabled{cursor:not-allowed;opacity:.6;background-color:var(--ax-color-disabled, #f9fafb);color:var(--ax-color-text-disabled, #9ca3af)}.ax-data-list__item--disabled:hover{background-color:var(--ax-color-disabled, #f9fafb)}.ax-data-list__item--focused{background-color:var(--ax-color-focus, #eff6ff);outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--loading{cursor:default;pointer-events:none;background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--loading:hover{background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--level-0{padding-left:1rem}.ax-data-list__item--level-1{padding-left:2.5rem}.ax-data-list__item--level-2{padding-left:4rem}.ax-data-list__item--level-3{padding-left:5.5rem}.ax-data-list__item--level-4{padding-left:7rem}.ax-data-list__item--level-5{padding-left:8.5rem}.ax-data-list__checkbox{margin-right:.75rem;flex-shrink:0}.ax-data-list__expand-button{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-right:.5rem;cursor:pointer;border-radius:.25rem;transition:all .15s ease-in-out;flex-shrink:0}.ax-data-list__expand-button:hover{background-color:var(--ax-color-hover, #f3f4f6)}.ax-data-list__expand-button:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:2px}.ax-data-list__expand-button--expanded .ax-data-list__expand-icon{transform:rotate(90deg)}.ax-data-list__expand-icon{width:1rem;height:1rem;transition:transform .15s ease-in-out;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__content-wrapper{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.ax-data-list__text{font-weight:500;color:var(--ax-color-text, #111827);line-height:1.25}.ax-data-list__text--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__description{font-size:.875rem;color:var(--ax-color-text-secondary, #6b7280);line-height:1.25}.ax-data-list__description--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.ax-data-list__item{padding:.75rem 1rem}.ax-data-list__item--level-1{padding-left:2rem}.ax-data-list__item--level-2{padding-left:3rem}.ax-data-list__item--level-3{padding-left:4rem}.ax-data-list__item--level-4{padding-left:5rem}.ax-data-list__item--level-5{padding-left:6rem}.ax-data-list__checkbox{margin-right:.5rem}.ax-data-list__expand-button{margin-right:.25rem}}@media (prefers-contrast: high){.ax-data-list{border-width:2px}.ax-data-list__item{border-bottom-width:2px}.ax-data-list__item:focus{outline-width:3px}.ax-data-list__item--selected{border-width:2px}.ax-data-list__expand-button:focus{outline-width:3px}}@media (prefers-reduced-motion: reduce){.ax-data-list__item,.ax-data-list__expand-icon{transition:none}.ax-data-list__loading-spinner{animation:none}}.ax-data-list__loading-skeleton{display:flex;align-items:center;width:100%;gap:.75rem}.ax-data-list__skeleton-checkbox{width:1rem;height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;flex-shrink:0}.ax-data-list__skeleton-content{flex:1;display:flex;flex-direction:column;gap:.5rem}.ax-data-list__skeleton-text{height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:80%}.ax-data-list__skeleton-description{height:.75rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:60%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: ScrollingModule }, { kind: \"directive\", type: i2.CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { kind: \"directive\", type: i2.CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }, { kind: \"component\", type: i2.CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }, { kind: \"component\", type: AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDataListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-data-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [\n CommonModule,\n FormsModule,\n ScrollingModule,\n AXTooltipDirective,\n AXCheckBoxComponent,\n ], template: \"<div class=\\\"ax-data-list\\\" [class.ax-data-list--loading]=\\\"loading()\\\">\\n <!-- Loading State -->\\n @if (loading()) {\\n <div class=\\\"ax-data-list__loading\\\">\\n <ng-container *ngTemplateOutlet=\\\"loadingTemplate() || defaultLoadingTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- Empty State -->\\n @if (isEmpty()) {\\n <div class=\\\"ax-data-list__empty\\\">\\n <ng-container *ngTemplateOutlet=\\\"emptyTemplate() || defaultEmptyTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- List Content -->\\n @if (hasItems() && listDataSource !== null) {\\n <div class=\\\"ax-data-list__content\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight()\\\"\\n class=\\\"ax-data-list__viewport\\\"\\n [class.ax-data-list__viewport--truncated]=\\\"isItemTruncated()\\\"\\n >\\n <ng-container *cdkVirtualFor=\\\"let item of listDataSource; let i = index; trackBy: trackByFn\\\">\\n @if (item) {\\n <div\\n class=\\\"ax-data-list__item\\\"\\n [class.ax-data-list__item--selected]=\\\"isItemSelected(item)\\\"\\n [class.ax-data-list__item--disabled]=\\\"isItemDisabled(item)\\\"\\n [class.ax-data-list__item--focused]=\\\"focusedIndex() === i\\\"\\n [class]=\\\"'ax-data-list__item--level-' + getItemLevel(item)\\\"\\n [style.height.px]=\\\"itemHeight()\\\"\\n (click)=\\\"onItemClick(item, $event)\\\"\\n (dblclick)=\\\"onItemDoubleClick(item)\\\"\\n (keydown)=\\\"onKeyDown($event, item, i)\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"listitem\\\"\\n [attr.aria-selected]=\\\"isItemSelected(item)\\\"\\n [attr.aria-disabled]=\\\"isItemDisabled(item)\\\"\\n [attr.aria-level]=\\\"getItemLevel(item) + 1\\\"\\n >\\n <!-- Checkbox -->\\n @if (showCheckboxes()) {\\n <div class=\\\"ax-data-list__checkbox\\\" (click)=\\\"onCheckboxClick($event)\\\">\\n <ax-check-box\\n [value]=\\\"isItemSelected(item)\\\"\\n [disabled]=\\\"isItemDisabled(item)\\\"\\n (valueChange)=\\\"onCheckboxChange(item, $event)\\\"\\n >\\n </ax-check-box>\\n </div>\\n }\\n\\n <!-- Expand/Collapse Button for Tree Items -->\\n @if (hasChildren(item)) {\\n <div\\n class=\\\"ax-data-list__expand-button\\\"\\n [class.ax-data-list__expand-button--expanded]=\\\"isExpanded(item)\\\"\\n (click)=\\\"toggleExpanded(item, $event)\\\"\\n role=\\\"button\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-expanded]=\\\"isExpanded(item)\\\"\\n >\\n <svg class=\\\"ax-data-list__expand-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path d=\\\"M7 10l5 5 5-5z\\\" />\\n </svg>\\n </div>\\n }\\n\\n <!-- Item Content -->\\n <div class=\\\"ax-data-list__content-wrapper\\\">\\n <!-- Custom Item Template -->\\n @if (itemTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate();\\n context: {\\n $implicit: item,\\n index: i,\\n selected: isItemSelected(item),\\n disabled: isItemDisabled(item),\\n }\\n \\\"\\n ></ng-container>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"defaultItemTemplate\\\"></ng-container>\\n }\\n\\n <!-- Default Item Template -->\\n <ng-template #defaultItemTemplate>\\n <div\\n class=\\\"ax-data-list__text\\\"\\n [class.ax-data-list__text--truncated]=\\\"isItemTruncated()\\\"\\n [axTooltip]=\\\"shouldShowTooltip(item) ? getItemTooltip(item) : null\\\"\\n [axTooltipDisabled]=\\\"!shouldShowTooltip(item)\\\"\\n >\\n {{ getItemText(item) }}\\n </div>\\n\\n @if (getItemDescription(item)) {\\n <div\\n class=\\\"ax-data-list__description\\\"\\n [class.ax-data-list__description--truncated]=\\\"isItemTruncated()\\\"\\n >\\n {{ getItemDescription(item) }}\\n </div>\\n }\\n </ng-template>\\n </div>\\n </div>\\n } @else {\\n <!-- Loading skeleton for null items -->\\n <div class=\\\"ax-data-list__item ax-data-list__item--loading\\\" [style.height.px]=\\\"itemHeight()\\\">\\n <div class=\\\"ax-data-list__loading-skeleton\\\">\\n <div class=\\\"ax-data-list__skeleton-checkbox\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-content\\\">\\n <div class=\\\"ax-data-list__skeleton-text\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-description\\\"></div>\\n </div>\\n </div>\\n </div>\\n }\\n </ng-container>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n }\\n</div>\\n\\n<!-- Default Loading Template -->\\n<ng-template #defaultLoadingTemplate>\\n <div class=\\\"ax-data-list__loading-default\\\">\\n <div class=\\\"ax-data-list__loading-spinner\\\"></div>\\n <span>Loading...</span>\\n </div>\\n</ng-template>\\n\\n<!-- Default Empty Template -->\\n<ng-template #defaultEmptyTemplate>\\n <div class=\\\"ax-data-list__empty-default\\\">\\n <svg class=\\\"ax-data-list__empty-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path\\n d=\\\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\\\"\\n />\\n </svg>\\n <span>No items to display</span>\\n </div>\\n</ng-template>\\n\", styles: [\".ax-data-list{display:flex;flex-direction:column;width:100%;height:100%;background:var(--ax-color-background, #ffffff);border:1px solid var(--ax-color-border, #e5e7eb);border-radius:var(--ax-border-radius, .375rem);overflow:hidden}.ax-data-list--loading .ax-data-list__content{opacity:.6;pointer-events:none}.ax-data-list__loading{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__loading-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__loading-spinner{width:2rem;height:2rem;border:2px solid var(--ax-color-border, #e5e7eb);border-top:2px solid var(--ax-color-primary, #3b82f6);border-radius:50%;animation:spin 1s linear infinite}.ax-data-list__empty{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__empty-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280);text-align:center}.ax-data-list__empty-icon{width:3rem;height:3rem;opacity:.5}.ax-data-list__content{flex:1;overflow:hidden}.ax-data-list__viewport{height:100%;width:100%}.ax-data-list__viewport--truncated .ax-data-list__text,.ax-data-list__viewport--truncated .ax-data-list__description{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__item{display:flex;align-items:center;padding:.5rem 1rem;cursor:pointer;transition:all .15s ease-in-out;border-bottom:1px solid var(--ax-color-border-light, #f3f4f6);position:relative}.ax-data-list__item:hover:not(.ax-data-list__item--disabled){background-color:var(--ax-color-hover, #f9fafb)}.ax-data-list__item:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--selected{background-color:var(--ax-color-primary-light, #dbeafe);color:var(--ax-color-primary, #3b82f6);border-color:var(--ax-color-primary, #3b82f6)}.ax-data-list__item--selected:hover{background-color:var(--ax-color-primary-light-hover, #bfdbfe)}.ax-data-list__item--disabled{cursor:not-allowed;opacity:.6;background-color:var(--ax-color-disabled, #f9fafb);color:var(--ax-color-text-disabled, #9ca3af)}.ax-data-list__item--disabled:hover{background-color:var(--ax-color-disabled, #f9fafb)}.ax-data-list__item--focused{background-color:var(--ax-color-focus, #eff6ff);outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--loading{cursor:default;pointer-events:none;background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--loading:hover{background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--level-0{padding-left:1rem}.ax-data-list__item--level-1{padding-left:2.5rem}.ax-data-list__item--level-2{padding-left:4rem}.ax-data-list__item--level-3{padding-left:5.5rem}.ax-data-list__item--level-4{padding-left:7rem}.ax-data-list__item--level-5{padding-left:8.5rem}.ax-data-list__checkbox{margin-right:.75rem;flex-shrink:0}.ax-data-list__expand-button{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-right:.5rem;cursor:pointer;border-radius:.25rem;transition:all .15s ease-in-out;flex-shrink:0}.ax-data-list__expand-button:hover{background-color:var(--ax-color-hover, #f3f4f6)}.ax-data-list__expand-button:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:2px}.ax-data-list__expand-button--expanded .ax-data-list__expand-icon{transform:rotate(90deg)}.ax-data-list__expand-icon{width:1rem;height:1rem;transition:transform .15s ease-in-out;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__content-wrapper{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.ax-data-list__text{font-weight:500;color:var(--ax-color-text, #111827);line-height:1.25}.ax-data-list__text--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__description{font-size:.875rem;color:var(--ax-color-text-secondary, #6b7280);line-height:1.25}.ax-data-list__description--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.ax-data-list__item{padding:.75rem 1rem}.ax-data-list__item--level-1{padding-left:2rem}.ax-data-list__item--level-2{padding-left:3rem}.ax-data-list__item--level-3{padding-left:4rem}.ax-data-list__item--level-4{padding-left:5rem}.ax-data-list__item--level-5{padding-left:6rem}.ax-data-list__checkbox{margin-right:.5rem}.ax-data-list__expand-button{margin-right:.25rem}}@media (prefers-contrast: high){.ax-data-list{border-width:2px}.ax-data-list__item{border-bottom-width:2px}.ax-data-list__item:focus{outline-width:3px}.ax-data-list__item--selected{border-width:2px}.ax-data-list__expand-button:focus{outline-width:3px}}@media (prefers-reduced-motion: reduce){.ax-data-list__item,.ax-data-list__expand-icon{transition:none}.ax-data-list__loading-spinner{animation:none}}.ax-data-list__loading-skeleton{display:flex;align-items:center;width:100%;gap:.75rem}.ax-data-list__skeleton-checkbox{width:1rem;height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;flex-shrink:0}.ax-data-list__skeleton-content{flex:1;display:flex;flex-direction:column;gap:.5rem}.ax-data-list__skeleton-text{height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:80%}.ax-data-list__skeleton-description{height:.75rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:60%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: \"config\", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: \"multiple\", required: false }] }], showCheckbox: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showCheckbox\", required: false }] }], itemHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: \"itemHeight\", required: false }] }], isItemTruncated: [{ type: i0.Input, args: [{ isSignal: true, alias: \"isItemTruncated\", required: false }] }], showItemTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showItemTooltip\", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disabledField\", required: false }] }], tooltipField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tooltipField\", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"textField\", required: false }] }], descriptionField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"descriptionField\", required: false }] }], levelField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"levelField\", required: false }] }], childrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"childrenField\", required: false }] }], expandedField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"expandedField\", required: false }] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"itemTemplate\", required: false }] }], emptyTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"emptyTemplate\", required: false }] }], loadingTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"loadingTemplate\", required: false }] }], selectionChange: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], itemDoubleClick: [{\n type: Output\n }], expandChange: [{\n type: Output\n }], viewport: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport]\n }], selectionModel: [{ type: i0.Input, args: [{ isSignal: true, alias: \"selectionModel\", required: false }] }, { type: i0.Output, args: [\"selectionModelChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS1saXN0L3NyYy9saWIvZGF0YS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS1saXN0L3NyYy9saWIvZGF0YS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBbUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQThDbkUsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQTREckQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQTVEWixTQUFTO1FBQ1QsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLHFEQUFnQyxDQUFDO1FBQzVELFdBQU0sR0FBRyxLQUFLLENBQW1CLEVBQUUsa0RBQUMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztR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Q2YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25DLElBQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRVMsaUJBQWlCLENBQUMsSUFBb0I7UUFDNUMsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQzs4R0F4WVEsbUJBQW1CO2tHQUFuQixtQkFBbUIsMHhGQTZCakIsd0JBQXdCLHVFQ2hHdkMsbTRMQW1KQSxzdUxEdkZRLFlBQVkscU1BQ1osV0FBVyw4QkFDWCxlQUFlLDRqQkFDZixrQkFBa0IsbU9BQ2xCLG1CQUFtQjs7MkZBR2QsbUJBQW1CO2tCQWYvQixTQUFTOytCQUNJLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixtQkFBbUI7cUJBQ3RCOztzQkF5QkEsTUFBTTs7c0JBQ04sTUFBTTs7c0JBQ04sTUFBTTs7c0JBQ04sTUFBTTs7c0JBR04sU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5wdXQsXG4gICAgbW9kZWwsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYRGF0YVNvdXJjZVF1ZXJ5LCBNWFZhbHVlQ29tcG9uZW50LCBBWExpc3REYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IEFYQ2hlY2tCb3hDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcblxuLy8gVHlwZXMgZm9yIHRoZSBjb21wb25lbnRcbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRhTGlzdEl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICB0b29sdGlwPzogc3RyaW5nO1xuICAgIGxldmVsPzogbnVtYmVyO1xuICAgIGNoaWxkcmVuPzogQVhEYXRhTGlzdEl0ZW1bXTtcbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YUxpc3RDb25maWcge1xuICAgIGRpc2FibGVkRmllbGQ/OiBzdHJpbmc7XG4gICAgdG9vbHRpcEZpZWxkPzogc3RyaW5nO1xuICAgIHRleHRGaWVsZD86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbkZpZWxkPzogc3RyaW5nO1xuICAgIGxldmVsRmllbGQ/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW5GaWVsZD86IHN0cmluZztcbiAgICBleHBhbmRlZEZpZWxkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YUxpc3RTZWxlY3Rpb25DaGFuZ2Uge1xuICAgIHNlbGVjdGVkSXRlbXM6IEFYRGF0YUxpc3RJdGVtW107XG4gICAgc2VsZWN0ZWRLZXlzOiBzdHJpbmdbXTtcbiAgICBpc011bHRpcGxlOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4LWRhdGEtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0YS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2Nyb2xsaW5nTW9kdWxlLFxuICAgICAgICBBWFRvb2x0aXBEaXJlY3RpdmUsXG4gICAgICAgIEFYQ2hlY2tCb3hDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhEYXRhTGlzdENvbXBvbmVudCBleHRlbmRzIE1YVmFsdWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8vIElucHV0c1xuICAgIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxBWERhdGFTb3VyY2U8QVhEYXRhTGlzdEl0ZW0+PigpO1xuICAgIGNvbmZpZyA9IGlucHV0PEFYRGF0YUxpc3RDb25maWc+KHt9KTtcbiAgICBtdWx0aXBsZSA9IGlucHV0KGZhbHNlKTtcbiAgICBzaG93Q2hlY2tib3ggPSBpbnB1dCh0cnVlKTtcbiAgICBpdGVtSGVpZ2h0ID0gaW5wdXQoNDApO1xuICAgIGlzSXRlbVRydW5jYXRlZCA9IGlucHV0KHRydWUpO1xuICAgIHNob3dJdGVtVG9vbHRpcCA9IGlucHV0KHRydWUpO1xuICAgIGRpc2FibGVkRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdkaXNhYmxlZCcpO1xuICAgIHRvb2x0aXBGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3Rvb2x0aXAnKTtcbiAgICB0ZXh0RmllbGQgPSBpbnB1dDxzdHJpbmc+KCd0ZXh0Jyk7XG4gICAgZGVzY3JpcHRpb25GaWVsZCA9IGlucHV0PHN0cmluZz4oJ2Rlc2NyaXB0aW9uJyk7XG4gICAgbGV2ZWxGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2xldmVsJyk7XG4gICAgY2hpbGRyZW5GaWVsZCA9IGlucHV0PHN0cmluZz4oJ2NoaWxkcmVuJyk7XG4gICAgZXhwYW5kZWRGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2V4cGFuZGVkJyk7XG5cbiAgICAvLyBUZW1wbGF0ZXNcbiAgICBpdGVtVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIGVtcHR5VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICAgIGxvYWRpbmdUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgICAvLyBPdXRwdXRzXG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhTGlzdFNlbGVjdGlvbkNoYW5nZT4oKTtcbiAgICBAT3V0cHV0KCkgaXRlbUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFMaXN0SXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgaXRlbURvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFMaXN0SXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgZXhwYW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGl0ZW06IEFYRGF0YUxpc3RJdGVtOyBleHBhbmRlZDogYm9vbGVhbiB9PigpO1xuXG4gICAgLy8gVmlld0NoaWxkXG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdwb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgLy8gSW50ZXJuYWwgc2lnbmFsc1xuICAgIHByb3RlY3RlZCBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgICBwcm90ZWN0ZWQgdG90YWxJdGVtcyA9IHNpZ25hbCgwKTtcbiAgICBwcm90ZWN0ZWQgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxBWERhdGFMaXN0SXRlbVtdPihbXSk7XG4gICAgcHJvdGVjdGVkIHNlbGVjdGVkS2V5cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICAgIHByb3RlY3RlZCBmb2N1c2VkSW5kZXggPSBzaWduYWwoLTEpO1xuICAgIHByb3RlY3RlZCBleHBhbmRlZEl0ZW1zID0gc2lnbmFsPFNldDxzdHJpbmc+PihuZXcgU2V0KCkpO1xuXG4gICAgLy8gTGlzdCBkYXRhIHNvdXJjZSBmb3IgdmlydHVhbCBzY3JvbGxpbmdcbiAgICBwcm90ZWN0ZWQgbGlzdERhdGFTb3VyY2U6IEFYTGlzdERhdGFTb3VyY2U8QVhEYXRhTGlzdEl0ZW0+IHwgbnVsbCA9IG51bGw7XG5cblxuXG4gICAgLy8gQ29tcHV0ZWQgdmFsdWVzXG4gICAgcHJvdGVjdGVkIGhhc0l0ZW1zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlSXRlbXMgPSB0aGlzLmxpc3REYXRhU291cmNlPy5zb3VyY2U/LmNhY2hlZEl0ZW1zPy5sZW5ndGggPiAwO1xuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZUl0ZW1zO1xuICAgIH0pO1xuICAgIHByb3RlY3RlZCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBub3RMb2FkaW5nID0gIXRoaXMubG9hZGluZygpO1xuICAgICAgICBjb25zdCBub0RhdGFTb3VyY2VJdGVtcyA9ICF0aGlzLmxpc3REYXRhU291cmNlPy5zb3VyY2U/LmNhY2hlZEl0ZW1zPy5sZW5ndGg7XG4gICAgICAgIHJldHVybiBub3RMb2FkaW5nICYmIG5vRGF0YVNvdXJjZUl0ZW1zO1xuICAgIH0pO1xuICAgIHByb3RlY3RlZCBpc011bHRpcGxlU2VsZWN0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tdWx0aXBsZSgpKTtcbiAgICBwcm90ZWN0ZWQgc2hvd0NoZWNrYm94ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNob3dDaGVja2JveCgpKTtcblxuICAgIC8vIFNlbGVjdGlvbiBtb2RlbFxuICAgIHB1YmxpYyBzZWxlY3Rpb25Nb2RlbCA9IG1vZGVsPHN0cmluZyB8IHN0cmluZ1tdPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLy8gRWZmZWN0IHRvIHN5bmMgc2VsZWN0aW9uIG1vZGVsIHdpdGggaW50ZXJuYWwgc3RhdGVcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLnNldChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLnNldChbc2VsZWN0aW9uXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBFZmZlY3QgdG8gZW1pdCBzZWxlY3Rpb24gY2hhbmdlc1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5zZWxlY3RlZEtleXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb24oKTtcblxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXMsXG4gICAgICAgICAgICAgICAgICAgIGlzTXVsdGlwbGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEVmZmVjdCB0byB3YXRjaCBmb3IgZGF0YVNvdXJjZSBjaGFuZ2VzIGFuZCBjcmVhdGUgbGlzdERhdGFTb3VyY2VcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgIGlmIChkYXRhU291cmNlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0RhdGEgc291cmNlIGNoYW5nZWQsIGNyZWF0aW5nIEFYTGlzdERhdGFTb3VyY2UuLi4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3REYXRhU291cmNlID0gbmV3IEFYTGlzdERhdGFTb3VyY2U8QVhEYXRhTGlzdEl0ZW0+KHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWU6IDEwMCwgLy8gQWRkIGRlYm91bmNlIHRvIHByZXZlbnQgdG9vIG1hbnkgcGFnZSByZXF1ZXN0c1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIEFYTGlzdERhdGFTb3VyY2U6JywgdGhpcy5saXN0RGF0YVNvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTZXQgdXAgc3Vic2NyaXB0aW9uc1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBEYXRhU291cmNlU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBEYXRhIGxvYWRpbmcgaXMgbm93IGhhbmRsZWQgYnkgdGhlIGVmZmVjdCB3YXRjaGluZyBkYXRhU291cmNlIGNoYW5nZXNcbiAgICB9XG5cblxuXG4gICAgcHJpdmF0ZSBzZXR1cERhdGFTb3VyY2VTdWJzY3JpcHRpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhU291cmNlKCkgfHwgIXRoaXMubGlzdERhdGFTb3VyY2UpIHJldHVybjtcblxuICAgICAgICBjb25zb2xlLmxvZygnU2V0dGluZyB1cCBkYXRhIHNvdXJjZSBzdWJzY3JpcHRpb24gZm9yOicsIHRoaXMuZGF0YVNvdXJjZSgpKTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gZGF0YSBzb3VyY2UgY2hhbmdlc1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UoKS5vbkNoYW5nZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRGF0YSBzb3VyY2UgY2hhbmdlZDonLCBkYXRhKTtcbiAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2FjaGVkSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMuc2V0KGRhdGEudG90YWxDb3VudCB8fCBkYXRhLmNhY2hlZEl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSgpLm9uTG9hZGluZ0NoYW5nZWQuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTG9hZGluZyBjaGFuZ2VkOicsIGxvYWRpbmcpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChsb2FkaW5nKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTG9hZCBpbml0aWFsIGRhdGEgLSBqdXN0IHRyaWdnZXIgdGhlIGZpcnN0IHBhZ2UgbG9hZFxuICAgICAgICAvLyBUaGUgQVhMaXN0RGF0YVNvdXJjZSB3aWxsIGhhbmRsZSBzdWJzZXF1ZW50IHBhZ2VzIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgdGhpcy5kYXRhU291cmNlKCkuc2V0UGFnZSgwKTtcbiAgICB9XG5cblxuXG4gICAgLy8gU2VsZWN0aW9uIG1hbmFnZW1lbnRcbiAgICBwcm90ZWN0ZWQgc2VsZWN0SXRlbShpdGVtOiBBWERhdGFMaXN0SXRlbSwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQgJiYgdHlwZW9mIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVNdWx0aXBsZVNlbGVjdGlvbihpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2luZ2xlU2VsZWN0aW9uKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHRvZ2dsZU11bHRpcGxlU2VsZWN0aW9uKGl0ZW06IEFYRGF0YUxpc3RJdGVtKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gdGhpcy5zZWxlY3RlZEtleXMoKTtcbiAgICAgICAgY29uc3QgaXRlbUtleSA9IHRoaXMuZ2V0SXRlbUtleShpdGVtKTtcblxuICAgICAgICBpZiAoY3VycmVudEtleXMuaW5jbHVkZXMoaXRlbUtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLnNldChjdXJyZW50S2V5cy5maWx0ZXIoa2V5ID0+IGtleSAhPT0gaXRlbUtleSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEtleXMuc2V0KFsuLi5jdXJyZW50S2V5cywgaXRlbUtleV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFNpbmdsZVNlbGVjdGlvbihpdGVtOiBBWERhdGFMaXN0SXRlbSkge1xuICAgICAgICBjb25zdCBpdGVtS2V5ID0gdGhpcy5nZXRJdGVtS2V5KGl0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdGVkS2V5cy5zZXQoW2l0ZW1LZXldKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlc2VsZWN0SXRlbShpdGVtOiBBWERhdGFMaXN0SXRlbSkge1xuICAgICAgICBjb25zdCBjdXJyZW50S2V5cyA9IHRoaXMuc2VsZWN0ZWRLZXlzKCk7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLmdldEl0ZW1LZXkoaXRlbSk7XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBjdXJyZW50S2V5cy5maWx0ZXIoa2V5ID0+IGtleSAhPT0gaXRlbUtleSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLnNldChuZXdLZXlzKTtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNlbGVjdGVkSXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSB0aGlzLnNlbGVjdGVkS2V5cygpO1xuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5saXN0RGF0YVNvdXJjZT8uc291cmNlO1xuICAgICAgICBpZiAoIWRhdGFTb3VyY2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IGRhdGFTb3VyY2UuY2FjaGVkSXRlbXMuZmlsdGVyKGl0ZW0gPT4ga2V5cy5pbmNsdWRlcyh0aGlzLmdldEl0ZW1LZXkoaXRlbSkpKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNldChzZWxlY3RlZCk7XG5cbiAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBtb2RlbFxuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlU2VsZWN0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2V0KGtleXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZXQoa2V5c1swXSB8fCAnJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNJdGVtU2VsZWN0ZWQoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRLZXlzKCkuaW5jbHVkZXModGhpcy5nZXRJdGVtS2V5KGl0ZW0pKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNJdGVtRGlzYWJsZWQoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZGlzYWJsZWRGaWVsZCA9IHRoaXMuZGlzYWJsZWRGaWVsZCgpO1xuICAgICAgICBpZiAoIWRpc2FibGVkRmllbGQpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGl0ZW1bZGlzYWJsZWRGaWVsZF07XG4gICAgICAgIHJldHVybiBCb29sZWFuKGRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SXRlbUtleShpdGVtOiBBWERhdGFMaXN0SXRlbSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChpdGVtLmlkICE9PSB1bmRlZmluZWQgJiYgaXRlbS5pZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhpdGVtLmlkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZhbGxiYWNrIHRvIG90aGVyIHBvdGVudGlhbCBrZXkgZmllbGRzXG4gICAgICAgIGlmIChpdGVtWydrZXknXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bJ2tleSddICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKGl0ZW1bJ2tleSddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtWyd2YWx1ZSddICE9PSB1bmRlZmluZWQgJiYgaXRlbVsndmFsdWUnXSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhpdGVtWyd2YWx1ZSddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExhc3QgcmVzb3J0OiB1c2UgdGhlIGl0ZW0gaXRzZWxmIGFzIGEgc3RyaW5nXG4gICAgICAgIHJldHVybiBTdHJpbmcoaXRlbSk7XG4gICAgfVxuXG4gICAgLy8gVHJlZSBncm91cGluZ1xuICAgIHByb3RlY3RlZCB0b2dnbGVFeHBhbmRlZChpdGVtOiBBWERhdGFMaXN0SXRlbSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudCAmJiB0eXBlb2YgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbihpdGVtKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWRJdGVtcygpO1xuICAgICAgICBjb25zdCBpdGVtS2V5ID0gdGhpcy5nZXRJdGVtS2V5KGl0ZW0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50RXhwYW5kZWQuaGFzKGl0ZW1LZXkpKSB7XG4gICAgICAgICAgICBjdXJyZW50RXhwYW5kZWQuZGVsZXRlKGl0ZW1LZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudEV4cGFuZGVkLmFkZChpdGVtS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhwYW5kZWRJdGVtcy5zZXQobmV3IFNldChjdXJyZW50RXhwYW5kZWQpKTtcbiAgICAgICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdCh7IGl0ZW0sIGV4cGFuZGVkOiBjdXJyZW50RXhwYW5kZWQuaGFzKGl0ZW1LZXkpIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYXNDaGlsZHJlbihpdGVtOiBBWERhdGFMaXN0SXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjaGlsZHJlbkZpZWxkID0gdGhpcy5jaGlsZHJlbkZpZWxkKCk7XG4gICAgICAgIGlmICghY2hpbGRyZW5GaWVsZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaXRlbVtjaGlsZHJlbkZpZWxkXTtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzRXhwYW5kZWQoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXhwYW5kZWRGaWVsZCA9IHRoaXMuZXhwYW5kZWRGaWVsZCgpO1xuICAgICAgICBpZiAoZXhwYW5kZWRGaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBpdGVtW2V4cGFuZGVkRmllbGRdO1xuICAgICAgICAgICAgaWYgKGV4cGFuZGVkICE9PSB1bmRlZmluZWQgJiYgZXhwYW5kZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbihleHBhbmRlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5leHBhbmRlZEl0ZW1zKCkuaGFzKHRoaXMuZ2V0SXRlbUtleShpdGVtKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEl0ZW1MZXZlbChpdGVtOiBBWERhdGFMaXN0SXRlbSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGxldmVsRmllbGQgPSB0aGlzLmxldmVsRmllbGQoKTtcbiAgICAgICAgaWYgKCFsZXZlbEZpZWxkKSByZXR1cm4gMDtcblxuICAgICAgICBjb25zdCBsZXZlbCA9IGl0ZW1bbGV2ZWxGaWVsZF07XG4gICAgICAgIHJldHVybiBsZXZlbCAhPT0gdW5kZWZpbmVkICYmIGxldmVsICE9PSBudWxsID8gTnVtYmVyKGxldmVsKSA6IDA7XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvblxuICAgIHByb3RlY3RlZCBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGl0ZW06IEFYRGF0YUxpc3RJdGVtLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c05leHRJdGVtKGluZGV4KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSXRlbShpbmRleCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KC0xKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBmb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB0aGlzLmxpc3REYXRhU291cmNlPy5zb3VyY2U7XG4gICAgICAgIGlmICghZGF0YVNvdXJjZSB8fCBkYXRhU291cmNlLmNhY2hlZEl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IE1hdGgubWluKGN1cnJlbnRJbmRleCArIDEsIGRhdGFTb3VyY2UuY2FjaGVkSXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChuZXh0SW5kZXgpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXgobmV4dEluZGV4KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMubGlzdERhdGFTb3VyY2U/LnNvdXJjZTtcbiAgICAgICAgaWYgKCFkYXRhU291cmNlIHx8IGRhdGFTb3VyY2UuY2FjaGVkSXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcHJldkluZGV4ID0gTWF0aC5tYXgoY3VycmVudEluZGV4IC0gMSwgMCk7XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldChwcmV2SW5kZXgpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXgocHJldkluZGV4KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLnZpZXdwb3J0ICYmIHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicgJiYgaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy52aWV3cG9ydC5zY3JvbGxUb0luZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEl0ZW0gaW50ZXJhY3Rpb25cbiAgICBwcm90ZWN0ZWQgb25JdGVtQ2xpY2soaXRlbTogQVhEYXRhTGlzdEl0ZW0sIGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoaXRlbSk7XG4gICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtLCBldmVudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2hlY2tib3hDaGFuZ2UoaXRlbTogQVhEYXRhTGlzdEl0ZW0sIGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNJdGVtRGlzYWJsZWQoaXRlbSkpIHJldHVybjtcblxuICAgICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DaGVja2JveENsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodHlwZW9mIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25JdGVtRG91YmxlQ2xpY2soaXRlbTogQVhEYXRhTGlzdEl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNJdGVtRGlzYWJsZWQoaXRlbSkpIHJldHVybjtcblxuICAgICAgICB0aGlzLml0ZW1Eb3VibGVDbGljay5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIC8vIFV0aWxpdHkgbWV0aG9kc1xuICAgIHByb3RlY3RlZCBnZXRJdGVtVGV4dChpdGVtOiBBWERhdGFMaXN0SXRlbSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRleHRGaWVsZCA9IHRoaXMudGV4dEZpZWxkKCk7XG4gICAgICAgIGlmICh0ZXh0RmllbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBpdGVtW3RleHRGaWVsZF07XG4gICAgICAgICAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkICYmIHRleHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW0udGV4dCB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SXRlbURlc2NyaXB0aW9uKGl0ZW06IEFYRGF0YUxpc3RJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb25GaWVsZCA9IHRoaXMuZGVzY3JpcHRpb25GaWVsZCgpO1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25GaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBpdGVtW2Rlc2NyaXB0aW9uRmllbGRdO1xuICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQgJiYgZGVzY3JpcHRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtLmRlc2NyaXB0aW9uIHx8ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJdGVtVG9vbHRpcChpdGVtOiBBWERhdGFMaXN0SXRlbSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBGaWVsZCA9IHRoaXMudG9vbHRpcEZpZWxkKCk7XG4gICAgICAgIGlmICh0b29sdGlwRmllbGQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb2x0aXAgPSBpdGVtW3Rvb2x0aXBGaWVsZF07XG4gICAgICAgICAgICBpZiAodG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIHRvb2x0aXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHRvb2x0aXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW0udG9vbHRpcCB8fCAnJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2hvdWxkU2hvd1Rvb2x0aXAoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd0l0ZW1Ub29sdGlwKCkgJiYgISF0aGlzLmdldEl0ZW1Ub29sdGlwKGl0ZW0pO1xuICAgIH1cblxuICAgIC8vIFRyYWNrIGJ5IGZ1bmN0aW9uIGZvciB2aXJ0dWFsIHNjcm9sbGluZ1xuICAgIHByb3RlY3RlZCB0cmFja0J5Rm4gPSAoaW5kZXg6IG51bWJlciwgaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBzdHJpbmcgPT4ge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBgbG9hZGluZy0ke2luZGV4fWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUtleShpdGVtKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtZGF0YS1saXN0XCIgW2NsYXNzLmF4LWRhdGEtbGlzdC0tbG9hZGluZ109XCJsb2FkaW5nKClcIj5cbiAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICBAaWYgKGxvYWRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX2xvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVGVtcGxhdGUoKSB8fCBkZWZhdWx0TG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICBAaWYgKGlzRW1wdHkoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX2VtcHR5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZSgpIHx8IGRlZmF1bHRFbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIExpc3QgQ29udGVudCAtLT5cbiAgQGlmIChoYXNJdGVtcygpICYmIGxpc3REYXRhU291cmNlICE9PSBudWxsKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fY29udGVudFwiPlxuICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgICBbaXRlbVNpemVdPVwiaXRlbUhlaWdodCgpXCJcbiAgICAgICAgY2xhc3M9XCJheC1kYXRhLWxpc3RfX3ZpZXdwb3J0XCJcbiAgICAgICAgW2NsYXNzLmF4LWRhdGEtbGlzdF9fdmlld3BvcnQtLXRydW5jYXRlZF09XCJpc0l0ZW1UcnVuY2F0ZWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgQGlmIChpdGVtKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS1saXN0X19pdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtbGlzdF9faXRlbS0tc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS1saXN0X19pdGVtLS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLWxpc3RfX2l0ZW0tLWZvY3VzZWRdPVwiZm9jdXNlZEluZGV4KCkgPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2F4LWRhdGEtbGlzdF9faXRlbS0tbGV2ZWwtJyArIGdldEl0ZW1MZXZlbChpdGVtKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaXRlbUhlaWdodCgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25JdGVtRG91YmxlQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJnZXRJdGVtTGV2ZWwoaXRlbSkgKyAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3hlcygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fY2hlY2tib3hcIiAoY2xpY2spPVwib25DaGVja2JveENsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1jaGVjay1ib3hcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gRXhwYW5kL0NvbGxhcHNlIEJ1dHRvbiBmb3IgVHJlZSBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgQGlmIChoYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS1saXN0X19leHBhbmQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLWxpc3RfX2V4cGFuZC1idXR0b24tLWV4cGFuZGVkXT1cImlzRXhwYW5kZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0V4cGFuZGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiYXgtZGF0YS1saXN0X19leHBhbmQtaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxMGw1IDUgNS01elwiIC8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gSXRlbSBDb250ZW50IC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF0YS1saXN0X19jb250ZW50LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEN1c3RvbSBJdGVtIFRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbVRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBpc0l0ZW1TZWxlY3RlZChpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpc0l0ZW1EaXNhYmxlZChpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBJdGVtIFRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLWxpc3RfX3RleHRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS1saXN0X190ZXh0LS10cnVuY2F0ZWRdPVwiaXNJdGVtVHJ1bmNhdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXhUb29sdGlwXT1cInNob3VsZFNob3dUb29sdGlwKGl0ZW0pID8gZ2V0SXRlbVRvb2x0aXAoaXRlbSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F4VG9vbHRpcERpc2FibGVkXT1cIiFzaG91bGRTaG93VG9vbHRpcChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1UZXh0KGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRJdGVtRGVzY3JpcHRpb24oaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS1saXN0X19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtbGlzdF9fZGVzY3JpcHRpb24tLXRydW5jYXRlZF09XCJpc0l0ZW1UcnVuY2F0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRJdGVtRGVzY3JpcHRpb24oaXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBmb3IgbnVsbCBpdGVtcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX2l0ZW0gYXgtZGF0YS1saXN0X19pdGVtLS1sb2FkaW5nXCIgW3N0eWxlLmhlaWdodC5weF09XCJpdGVtSGVpZ2h0KClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fbG9hZGluZy1za2VsZXRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX3NrZWxldG9uLWNoZWNrYm94XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fc2tlbGV0b24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fc2tlbGV0b24tdGV4dFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fc2tlbGV0b24tZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48IS0tIERlZmF1bHQgTG9hZGluZyBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvYWRpbmdUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fbG9hZGluZy1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fbG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gICAgPHNwYW4+TG9hZGluZy4uLjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIERlZmF1bHQgRW1wdHkgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiYXgtZGF0YS1saXN0X19lbXB0eS1kZWZhdWx0XCI+XG4gICAgPHN2ZyBjbGFzcz1cImF4LWRhdGEtbGlzdF9fZW1wdHktaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuPk5vIGl0ZW1zIHRvIGRpc3BsYXk8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","// Secondary entry point for @acorex/components/data-list\nexport * from './lib/data-list.component';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtbGlzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBRXpELGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWNvbmRhcnkgZW50cnkgcG9pbnQgZm9yIEBhY29yZXgvY29tcG9uZW50cy9kYXRhLWxpc3RcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS1saXN0LmNvbXBvbmVudCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0YS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLWxpc3Qvc3JjL2Fjb3JleC1jb21wb25lbnRzLWRhdGEtbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-data-list.mjs","sources":["../tmp-esm2022/data-list/lib/data-list.component.js","../tmp-esm2022/data-list/index.js","../tmp-esm2022/data-list/acorex-components-data-list.js"],"sourcesContent":["import { AXListDataSource, MXValueComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, EventEmitter, input, model, Output, signal, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/cdk/scrolling\";\nexport class AXDataListComponent extends MXValueComponent {\n constructor() {\n super();\n // Inputs\n this.dataSource = input.required(...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.config = input({}, ...(ngDevMode ? [{ debugName: \"config\" }] : []));\n this.multiple = input(false, ...(ngDevMode ? [{ debugName: \"multiple\" }] : []));\n this.showCheckbox = input(true, ...(ngDevMode ? [{ debugName: \"showCheckbox\" }] : []));\n this.itemHeight = input(40, ...(ngDevMode ? [{ debugName: \"itemHeight\" }] : []));\n this.isItemTruncated = input(true, ...(ngDevMode ? [{ debugName: \"isItemTruncated\" }] : []));\n this.showItemTooltip = input(true, ...(ngDevMode ? [{ debugName: \"showItemTooltip\" }] : []));\n this.disabledField = input('disabled', ...(ngDevMode ? [{ debugName: \"disabledField\" }] : []));\n this.tooltipField = input('tooltip', ...(ngDevMode ? [{ debugName: \"tooltipField\" }] : []));\n this.textField = input('text', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.descriptionField = input('description', ...(ngDevMode ? [{ debugName: \"descriptionField\" }] : []));\n this.levelField = input('level', ...(ngDevMode ? [{ debugName: \"levelField\" }] : []));\n this.childrenField = input('children', ...(ngDevMode ? [{ debugName: \"childrenField\" }] : []));\n this.expandedField = input('expanded', ...(ngDevMode ? [{ debugName: \"expandedField\" }] : []));\n // Templates\n this.itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n this.emptyTemplate = input(...(ngDevMode ? [undefined, { debugName: \"emptyTemplate\" }] : []));\n this.loadingTemplate = input(...(ngDevMode ? [undefined, { debugName: \"loadingTemplate\" }] : []));\n // Outputs\n this.selectionChange = new EventEmitter();\n this.itemClick = new EventEmitter();\n this.itemDoubleClick = new EventEmitter();\n this.expandChange = new EventEmitter();\n // Internal signals\n this.loading = signal(false, ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.totalItems = signal(0, ...(ngDevMode ? [{ debugName: \"totalItems\" }] : []));\n this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: \"selectedItems\" }] : []));\n this.selectedKeys = signal([], ...(ngDevMode ? [{ debugName: \"selectedKeys\" }] : []));\n this.focusedIndex = signal(-1, ...(ngDevMode ? [{ debugName: \"focusedIndex\" }] : []));\n this.expandedItems = signal(new Set(), ...(ngDevMode ? [{ debugName: \"expandedItems\" }] : []));\n // List data source for virtual scrolling\n this.listDataSource = null;\n // Computed values\n this.hasItems = computed(() => {\n const dataSourceItems = this.listDataSource?.source?.cachedItems?.length > 0;\n return dataSourceItems;\n }, ...(ngDevMode ? [{ debugName: \"hasItems\" }] : []));\n this.isEmpty = computed(() => {\n const notLoading = !this.loading();\n const noDataSourceItems = !this.listDataSource?.source?.cachedItems?.length;\n return notLoading && noDataSourceItems;\n }, ...(ngDevMode ? [{ debugName: \"isEmpty\" }] : []));\n this.isMultipleSelection = computed(() => this.multiple(), ...(ngDevMode ? [{ debugName: \"isMultipleSelection\" }] : []));\n this.showCheckboxes = computed(() => this.showCheckbox(), ...(ngDevMode ? [{ debugName: \"showCheckboxes\" }] : []));\n // Selection model\n this.selectionModel = model(...(ngDevMode ? [undefined, { debugName: \"selectionModel\" }] : []));\n // Track by function for virtual scrolling\n this.trackByFn = (index, item) => {\n if (!item) {\n return `loading-${index}`;\n }\n return this.getItemKey(item);\n };\n // Effect to sync selection model with internal state\n effect(() => {\n const selection = this.selectionModel();\n if (selection) {\n if (Array.isArray(selection)) {\n this.selectedKeys.set(selection);\n }\n else {\n this.selectedKeys.set([selection]);\n }\n this.updateSelectedItems();\n }\n });\n // Effect to emit selection changes\n effect(() => {\n const selectedItems = this.selectedItems();\n const selectedKeys = this.selectedKeys();\n const isMultiple = this.isMultipleSelection();\n if (selectedItems.length > 0 || selectedKeys.length > 0) {\n this.selectionChange.emit({\n selectedItems,\n selectedKeys,\n isMultiple,\n });\n }\n });\n // Effect to watch for dataSource changes and create listDataSource\n effect(() => {\n const dataSource = this.dataSource();\n if (dataSource) {\n this.listDataSource = new AXListDataSource({\n source: dataSource,\n debounceTime: 100, // Add debounce to prevent too many page requests\n });\n // Set up subscriptions\n this.setupDataSourceSubscription();\n }\n });\n }\n ngOnInit() {\n super.ngOnInit();\n // Data loading is now handled by the effect watching dataSource changes\n }\n setupDataSourceSubscription() {\n if (!this.dataSource() || !this.listDataSource)\n return;\n // Subscribe to data source changes\n this.dataSource().onChanged.subscribe((data) => {\n if (data && data.cachedItems) {\n this.totalItems.set(data.totalCount || data.cachedItems.length);\n }\n });\n this.dataSource().onLoadingChanged.subscribe((loading) => {\n this.loading.set(loading);\n });\n // Load initial data - just trigger the first page load\n // The AXListDataSource will handle subsequent pages automatically\n this.dataSource().setPage(0);\n }\n // Selection management\n selectItem(item, event) {\n if (event && typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n if (this.isItemDisabled(item))\n return;\n if (this.isMultipleSelection()) {\n this.toggleMultipleSelection(item);\n }\n else {\n this.setSingleSelection(item);\n }\n }\n toggleMultipleSelection(item) {\n const currentKeys = this.selectedKeys();\n const itemKey = this.getItemKey(item);\n if (currentKeys.includes(itemKey)) {\n this.selectedKeys.set(currentKeys.filter((key) => key !== itemKey));\n }\n else {\n this.selectedKeys.set([...currentKeys, itemKey]);\n }\n this.updateSelectedItems();\n }\n setSingleSelection(item) {\n const itemKey = this.getItemKey(item);\n this.selectedKeys.set([itemKey]);\n this.updateSelectedItems();\n }\n deselectItem(item) {\n const currentKeys = this.selectedKeys();\n const itemKey = this.getItemKey(item);\n const newKeys = currentKeys.filter((key) => key !== itemKey);\n this.selectedKeys.set(newKeys);\n this.updateSelectedItems();\n }\n updateSelectedItems() {\n const keys = this.selectedKeys();\n const dataSource = this.listDataSource?.source;\n if (!dataSource)\n return;\n const selected = dataSource.cachedItems.filter((item) => keys.includes(this.getItemKey(item)));\n this.selectedItems.set(selected);\n // Update selection model\n if (this.isMultipleSelection()) {\n this.selectionModel.set(keys);\n }\n else {\n this.selectionModel.set(keys[0] || '');\n }\n }\n isItemSelected(item) {\n return this.selectedKeys().includes(this.getItemKey(item));\n }\n isItemDisabled(item) {\n const disabledField = this.disabledField();\n if (!disabledField)\n return false;\n const disabled = item[disabledField];\n return Boolean(disabled);\n }\n getItemKey(item) {\n if (item.id !== undefined && item.id !== null) {\n return String(item.id);\n }\n // Fallback to other potential key fields\n if (item['key'] !== undefined && item['key'] !== null) {\n return String(item['key']);\n }\n if (item['value'] !== undefined && item['value'] !== null) {\n return String(item['value']);\n }\n // Last resort: use the item itself as a string\n return String(item);\n }\n // Tree grouping\n toggleExpanded(item, event) {\n if (event && typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n if (!this.hasChildren(item))\n return;\n const currentExpanded = this.expandedItems();\n const itemKey = this.getItemKey(item);\n if (currentExpanded.has(itemKey)) {\n currentExpanded.delete(itemKey);\n }\n else {\n currentExpanded.add(itemKey);\n }\n this.expandedItems.set(new Set(currentExpanded));\n this.expandChange.emit({ item, expanded: currentExpanded.has(itemKey) });\n }\n hasChildren(item) {\n const childrenField = this.childrenField();\n if (!childrenField)\n return false;\n const children = item[childrenField];\n return Array.isArray(children) && children.length > 0;\n }\n isExpanded(item) {\n const expandedField = this.expandedField();\n if (expandedField) {\n const expanded = item[expandedField];\n if (expanded !== undefined && expanded !== null) {\n return Boolean(expanded);\n }\n }\n return this.expandedItems().has(this.getItemKey(item));\n }\n getItemLevel(item) {\n const levelField = this.levelField();\n if (!levelField)\n return 0;\n const level = item[levelField];\n return level !== undefined && level !== null ? Number(level) : 0;\n }\n // Keyboard navigation\n onKeyDown(event, item, index) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem(index);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem(index);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.selectItem(item);\n break;\n case 'Escape':\n this.focusedIndex.set(-1);\n break;\n }\n }\n focusNextItem(currentIndex) {\n const dataSource = this.listDataSource?.source;\n if (!dataSource || dataSource.cachedItems.length === 0)\n return;\n const nextIndex = Math.min(currentIndex + 1, dataSource.cachedItems.length - 1);\n this.focusedIndex.set(nextIndex);\n this.scrollToIndex(nextIndex);\n }\n focusPreviousItem(currentIndex) {\n const dataSource = this.listDataSource?.source;\n if (!dataSource || dataSource.cachedItems.length === 0)\n return;\n const prevIndex = Math.max(currentIndex - 1, 0);\n this.focusedIndex.set(prevIndex);\n this.scrollToIndex(prevIndex);\n }\n scrollToIndex(index) {\n if (this.viewport && typeof index === 'number' && index >= 0) {\n this.viewport.scrollToIndex(index);\n }\n }\n // Item interaction\n onItemClick(item, event) {\n if (this.isItemDisabled(item))\n return;\n this.itemClick.emit(item);\n this.selectItem(item, event);\n }\n onCheckboxChange(item, checked) {\n if (this.isItemDisabled(item))\n return;\n if (checked) {\n this.selectItem(item);\n }\n else {\n this.deselectItem(item);\n }\n }\n onCheckboxClick(event) {\n if (typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n }\n onItemDoubleClick(item) {\n if (this.isItemDisabled(item))\n return;\n this.itemDoubleClick.emit(item);\n }\n // Utility methods\n getItemText(item) {\n const textField = this.textField();\n if (textField) {\n const text = item[textField];\n if (text !== undefined && text !== null) {\n return String(text);\n }\n }\n return item.text || '';\n }\n getItemDescription(item) {\n const descriptionField = this.descriptionField();\n if (descriptionField) {\n const description = item[descriptionField];\n if (description !== undefined && description !== null) {\n return String(description);\n }\n }\n return item.description || '';\n }\n getItemTooltip(item) {\n const tooltipField = this.tooltipField();\n if (tooltipField) {\n const tooltip = item[tooltipField];\n if (tooltip !== undefined && tooltip !== null) {\n return String(tooltip);\n }\n }\n return item.tooltip || '';\n }\n shouldShowTooltip(item) {\n return this.showItemTooltip() && !!this.getItemTooltip(item);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.9\", type: AXDataListComponent, isStandalone: true, selector: \"ax-data-list\", inputs: { dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: \"showCheckbox\", publicName: \"showCheckbox\", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: \"itemHeight\", publicName: \"itemHeight\", isSignal: true, isRequired: false, transformFunction: null }, isItemTruncated: { classPropertyName: \"isItemTruncated\", publicName: \"isItemTruncated\", isSignal: true, isRequired: false, transformFunction: null }, showItemTooltip: { classPropertyName: \"showItemTooltip\", publicName: \"showItemTooltip\", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: \"disabledField\", publicName: \"disabledField\", isSignal: true, isRequired: false, transformFunction: null }, tooltipField: { classPropertyName: \"tooltipField\", publicName: \"tooltipField\", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: \"textField\", publicName: \"textField\", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: \"descriptionField\", publicName: \"descriptionField\", isSignal: true, isRequired: false, transformFunction: null }, levelField: { classPropertyName: \"levelField\", publicName: \"levelField\", isSignal: true, isRequired: false, transformFunction: null }, childrenField: { classPropertyName: \"childrenField\", publicName: \"childrenField\", isSignal: true, isRequired: false, transformFunction: null }, expandedField: { classPropertyName: \"expandedField\", publicName: \"expandedField\", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: true, isRequired: false, transformFunction: null }, loadingTemplate: { classPropertyName: \"loadingTemplate\", publicName: \"loadingTemplate\", isSignal: true, isRequired: false, transformFunction: null }, selectionModel: { classPropertyName: \"selectionModel\", publicName: \"selectionModel\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: \"selectionChange\", itemClick: \"itemClick\", itemDoubleClick: \"itemDoubleClick\", expandChange: \"expandChange\", selectionModel: \"selectionModelChange\" }, viewQueries: [{ propertyName: \"viewport\", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-data-list\\\" [class.ax-data-list--loading]=\\\"loading()\\\">\\n <!-- Loading State -->\\n @if (loading()) {\\n <div class=\\\"ax-data-list__loading\\\">\\n <ng-container *ngTemplateOutlet=\\\"loadingTemplate() || defaultLoadingTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- Empty State -->\\n @if (isEmpty()) {\\n <div class=\\\"ax-data-list__empty\\\">\\n <ng-container *ngTemplateOutlet=\\\"emptyTemplate() || defaultEmptyTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- List Content -->\\n @if (hasItems() && listDataSource !== null) {\\n <div class=\\\"ax-data-list__content\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight()\\\"\\n class=\\\"ax-data-list__viewport\\\"\\n [class.ax-data-list__viewport--truncated]=\\\"isItemTruncated()\\\"\\n >\\n <ng-container *cdkVirtualFor=\\\"let item of listDataSource; let i = index; trackBy: trackByFn\\\">\\n @if (item) {\\n <div\\n class=\\\"ax-data-list__item\\\"\\n [class.ax-data-list__item--selected]=\\\"isItemSelected(item)\\\"\\n [class.ax-data-list__item--disabled]=\\\"isItemDisabled(item)\\\"\\n [class.ax-data-list__item--focused]=\\\"focusedIndex() === i\\\"\\n [class]=\\\"'ax-data-list__item--level-' + getItemLevel(item)\\\"\\n [style.height.px]=\\\"itemHeight()\\\"\\n (click)=\\\"onItemClick(item, $event)\\\"\\n (dblclick)=\\\"onItemDoubleClick(item)\\\"\\n (keydown)=\\\"onKeyDown($event, item, i)\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"listitem\\\"\\n [attr.aria-selected]=\\\"isItemSelected(item)\\\"\\n [attr.aria-disabled]=\\\"isItemDisabled(item)\\\"\\n [attr.aria-level]=\\\"getItemLevel(item) + 1\\\"\\n >\\n <!-- Checkbox -->\\n @if (showCheckboxes()) {\\n <div class=\\\"ax-data-list__checkbox\\\" (click)=\\\"onCheckboxClick($event)\\\">\\n <ax-check-box\\n [value]=\\\"isItemSelected(item)\\\"\\n [disabled]=\\\"isItemDisabled(item)\\\"\\n (valueChange)=\\\"onCheckboxChange(item, $event)\\\"\\n >\\n </ax-check-box>\\n </div>\\n }\\n\\n <!-- Expand/Collapse Button for Tree Items -->\\n @if (hasChildren(item)) {\\n <div\\n class=\\\"ax-data-list__expand-button\\\"\\n [class.ax-data-list__expand-button--expanded]=\\\"isExpanded(item)\\\"\\n (click)=\\\"toggleExpanded(item, $event)\\\"\\n role=\\\"button\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-expanded]=\\\"isExpanded(item)\\\"\\n >\\n <svg class=\\\"ax-data-list__expand-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path d=\\\"M7 10l5 5 5-5z\\\" />\\n </svg>\\n </div>\\n }\\n\\n <!-- Item Content -->\\n <div class=\\\"ax-data-list__content-wrapper\\\">\\n <!-- Custom Item Template -->\\n @if (itemTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate();\\n context: {\\n $implicit: item,\\n index: i,\\n selected: isItemSelected(item),\\n disabled: isItemDisabled(item),\\n }\\n \\\"\\n ></ng-container>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"defaultItemTemplate\\\"></ng-container>\\n }\\n\\n <!-- Default Item Template -->\\n <ng-template #defaultItemTemplate>\\n <div\\n class=\\\"ax-data-list__text\\\"\\n [class.ax-data-list__text--truncated]=\\\"isItemTruncated()\\\"\\n [axTooltip]=\\\"shouldShowTooltip(item) ? getItemTooltip(item) : null\\\"\\n [axTooltipDisabled]=\\\"!shouldShowTooltip(item)\\\"\\n >\\n {{ getItemText(item) }}\\n </div>\\n\\n @if (getItemDescription(item)) {\\n <div\\n class=\\\"ax-data-list__description\\\"\\n [class.ax-data-list__description--truncated]=\\\"isItemTruncated()\\\"\\n >\\n {{ getItemDescription(item) }}\\n </div>\\n }\\n </ng-template>\\n </div>\\n </div>\\n } @else {\\n <!-- Loading skeleton for null items -->\\n <div class=\\\"ax-data-list__item ax-data-list__item--loading\\\" [style.height.px]=\\\"itemHeight()\\\">\\n <div class=\\\"ax-data-list__loading-skeleton\\\">\\n <div class=\\\"ax-data-list__skeleton-checkbox\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-content\\\">\\n <div class=\\\"ax-data-list__skeleton-text\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-description\\\"></div>\\n </div>\\n </div>\\n </div>\\n }\\n </ng-container>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n }\\n</div>\\n\\n<!-- Default Loading Template -->\\n<ng-template #defaultLoadingTemplate>\\n <div class=\\\"ax-data-list__loading-default\\\">\\n <div class=\\\"ax-data-list__loading-spinner\\\"></div>\\n <span>Loading...</span>\\n </div>\\n</ng-template>\\n\\n<!-- Default Empty Template -->\\n<ng-template #defaultEmptyTemplate>\\n <div class=\\\"ax-data-list__empty-default\\\">\\n <svg class=\\\"ax-data-list__empty-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path\\n d=\\\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\\\"\\n />\\n </svg>\\n <span>No items to display</span>\\n </div>\\n</ng-template>\\n\", styles: [\".ax-data-list{display:flex;flex-direction:column;width:100%;height:100%;background:var(--ax-color-background, #ffffff);border:1px solid var(--ax-color-border, #e5e7eb);border-radius:var(--ax-border-radius, .375rem);overflow:hidden}.ax-data-list--loading .ax-data-list__content{opacity:.6;pointer-events:none}.ax-data-list__loading{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__loading-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__loading-spinner{width:2rem;height:2rem;border:2px solid var(--ax-color-border, #e5e7eb);border-top:2px solid var(--ax-color-primary, #3b82f6);border-radius:50%;animation:spin 1s linear infinite}.ax-data-list__empty{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__empty-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280);text-align:center}.ax-data-list__empty-icon{width:3rem;height:3rem;opacity:.5}.ax-data-list__content{flex:1;overflow:hidden}.ax-data-list__viewport{height:100%;width:100%}.ax-data-list__viewport--truncated .ax-data-list__text,.ax-data-list__viewport--truncated .ax-data-list__description{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__item{display:flex;align-items:center;padding:.5rem 1rem;cursor:pointer;transition:all .15s ease-in-out;border-bottom:1px solid var(--ax-color-border-light, #f3f4f6);position:relative}.ax-data-list__item:hover:not(.ax-data-list__item--disabled){background-color:var(--ax-color-hover, #f9fafb)}.ax-data-list__item:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--selected{background-color:var(--ax-color-primary-light, #dbeafe);color:var(--ax-color-primary, #3b82f6);border-color:var(--ax-color-primary, #3b82f6)}.ax-data-list__item--selected:hover{background-color:var(--ax-color-primary-light-hover, #bfdbfe)}.ax-data-list__item--disabled{cursor:not-allowed;opacity:.6;background-color:var(--ax-color-disabled, #f9fafb);color:var(--ax-color-text-disabled, #9ca3af)}.ax-data-list__item--disabled:hover{background-color:var(--ax-color-disabled, #f9fafb)}.ax-data-list__item--focused{background-color:var(--ax-color-focus, #eff6ff);outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--loading{cursor:default;pointer-events:none;background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--loading:hover{background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--level-0{padding-left:1rem}.ax-data-list__item--level-1{padding-left:2.5rem}.ax-data-list__item--level-2{padding-left:4rem}.ax-data-list__item--level-3{padding-left:5.5rem}.ax-data-list__item--level-4{padding-left:7rem}.ax-data-list__item--level-5{padding-left:8.5rem}.ax-data-list__checkbox{margin-right:.75rem;flex-shrink:0}.ax-data-list__expand-button{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-right:.5rem;cursor:pointer;border-radius:.25rem;transition:all .15s ease-in-out;flex-shrink:0}.ax-data-list__expand-button:hover{background-color:var(--ax-color-hover, #f3f4f6)}.ax-data-list__expand-button:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:2px}.ax-data-list__expand-button--expanded .ax-data-list__expand-icon{transform:rotate(90deg)}.ax-data-list__expand-icon{width:1rem;height:1rem;transition:transform .15s ease-in-out;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__content-wrapper{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.ax-data-list__text{font-weight:500;color:var(--ax-color-text, #111827);line-height:1.25}.ax-data-list__text--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__description{font-size:.875rem;color:var(--ax-color-text-secondary, #6b7280);line-height:1.25}.ax-data-list__description--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.ax-data-list__item{padding:.75rem 1rem}.ax-data-list__item--level-1{padding-left:2rem}.ax-data-list__item--level-2{padding-left:3rem}.ax-data-list__item--level-3{padding-left:4rem}.ax-data-list__item--level-4{padding-left:5rem}.ax-data-list__item--level-5{padding-left:6rem}.ax-data-list__checkbox{margin-right:.5rem}.ax-data-list__expand-button{margin-right:.25rem}}@media (prefers-contrast: high){.ax-data-list{border-width:2px}.ax-data-list__item{border-bottom-width:2px}.ax-data-list__item:focus{outline-width:3px}.ax-data-list__item--selected{border-width:2px}.ax-data-list__expand-button:focus{outline-width:3px}}@media (prefers-reduced-motion: reduce){.ax-data-list__item,.ax-data-list__expand-icon{transition:none}.ax-data-list__loading-spinner{animation:none}}.ax-data-list__loading-skeleton{display:flex;align-items:center;width:100%;gap:.75rem}.ax-data-list__skeleton-checkbox{width:1rem;height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;flex-shrink:0}.ax-data-list__skeleton-content{flex:1;display:flex;flex-direction:column;gap:.5rem}.ax-data-list__skeleton-text{height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:80%}.ax-data-list__skeleton-description{height:.75rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:60%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"ngmodule\", type: ScrollingModule }, { kind: \"directive\", type: i2.CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: [\"itemSize\", \"minBufferPx\", \"maxBufferPx\"] }, { kind: \"directive\", type: i2.CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: [\"cdkVirtualForOf\", \"cdkVirtualForTrackBy\", \"cdkVirtualForTemplate\", \"cdkVirtualForTemplateCacheSize\"] }, { kind: \"component\", type: i2.CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: [\"orientation\", \"appendOnly\"], outputs: [\"scrolledIndexChange\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }, { kind: \"component\", type: AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDataListComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-data-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, FormsModule, ScrollingModule, AXTooltipDirective, AXCheckBoxComponent], template: \"<div class=\\\"ax-data-list\\\" [class.ax-data-list--loading]=\\\"loading()\\\">\\n <!-- Loading State -->\\n @if (loading()) {\\n <div class=\\\"ax-data-list__loading\\\">\\n <ng-container *ngTemplateOutlet=\\\"loadingTemplate() || defaultLoadingTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- Empty State -->\\n @if (isEmpty()) {\\n <div class=\\\"ax-data-list__empty\\\">\\n <ng-container *ngTemplateOutlet=\\\"emptyTemplate() || defaultEmptyTemplate\\\"></ng-container>\\n </div>\\n }\\n\\n <!-- List Content -->\\n @if (hasItems() && listDataSource !== null) {\\n <div class=\\\"ax-data-list__content\\\">\\n <cdk-virtual-scroll-viewport\\n [itemSize]=\\\"itemHeight()\\\"\\n class=\\\"ax-data-list__viewport\\\"\\n [class.ax-data-list__viewport--truncated]=\\\"isItemTruncated()\\\"\\n >\\n <ng-container *cdkVirtualFor=\\\"let item of listDataSource; let i = index; trackBy: trackByFn\\\">\\n @if (item) {\\n <div\\n class=\\\"ax-data-list__item\\\"\\n [class.ax-data-list__item--selected]=\\\"isItemSelected(item)\\\"\\n [class.ax-data-list__item--disabled]=\\\"isItemDisabled(item)\\\"\\n [class.ax-data-list__item--focused]=\\\"focusedIndex() === i\\\"\\n [class]=\\\"'ax-data-list__item--level-' + getItemLevel(item)\\\"\\n [style.height.px]=\\\"itemHeight()\\\"\\n (click)=\\\"onItemClick(item, $event)\\\"\\n (dblclick)=\\\"onItemDoubleClick(item)\\\"\\n (keydown)=\\\"onKeyDown($event, item, i)\\\"\\n tabindex=\\\"0\\\"\\n role=\\\"listitem\\\"\\n [attr.aria-selected]=\\\"isItemSelected(item)\\\"\\n [attr.aria-disabled]=\\\"isItemDisabled(item)\\\"\\n [attr.aria-level]=\\\"getItemLevel(item) + 1\\\"\\n >\\n <!-- Checkbox -->\\n @if (showCheckboxes()) {\\n <div class=\\\"ax-data-list__checkbox\\\" (click)=\\\"onCheckboxClick($event)\\\">\\n <ax-check-box\\n [value]=\\\"isItemSelected(item)\\\"\\n [disabled]=\\\"isItemDisabled(item)\\\"\\n (valueChange)=\\\"onCheckboxChange(item, $event)\\\"\\n >\\n </ax-check-box>\\n </div>\\n }\\n\\n <!-- Expand/Collapse Button for Tree Items -->\\n @if (hasChildren(item)) {\\n <div\\n class=\\\"ax-data-list__expand-button\\\"\\n [class.ax-data-list__expand-button--expanded]=\\\"isExpanded(item)\\\"\\n (click)=\\\"toggleExpanded(item, $event)\\\"\\n role=\\\"button\\\"\\n tabindex=\\\"0\\\"\\n [attr.aria-expanded]=\\\"isExpanded(item)\\\"\\n >\\n <svg class=\\\"ax-data-list__expand-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path d=\\\"M7 10l5 5 5-5z\\\" />\\n </svg>\\n </div>\\n }\\n\\n <!-- Item Content -->\\n <div class=\\\"ax-data-list__content-wrapper\\\">\\n <!-- Custom Item Template -->\\n @if (itemTemplate()) {\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n itemTemplate();\\n context: {\\n $implicit: item,\\n index: i,\\n selected: isItemSelected(item),\\n disabled: isItemDisabled(item),\\n }\\n \\\"\\n ></ng-container>\\n } @else {\\n <ng-container *ngTemplateOutlet=\\\"defaultItemTemplate\\\"></ng-container>\\n }\\n\\n <!-- Default Item Template -->\\n <ng-template #defaultItemTemplate>\\n <div\\n class=\\\"ax-data-list__text\\\"\\n [class.ax-data-list__text--truncated]=\\\"isItemTruncated()\\\"\\n [axTooltip]=\\\"shouldShowTooltip(item) ? getItemTooltip(item) : null\\\"\\n [axTooltipDisabled]=\\\"!shouldShowTooltip(item)\\\"\\n >\\n {{ getItemText(item) }}\\n </div>\\n\\n @if (getItemDescription(item)) {\\n <div\\n class=\\\"ax-data-list__description\\\"\\n [class.ax-data-list__description--truncated]=\\\"isItemTruncated()\\\"\\n >\\n {{ getItemDescription(item) }}\\n </div>\\n }\\n </ng-template>\\n </div>\\n </div>\\n } @else {\\n <!-- Loading skeleton for null items -->\\n <div class=\\\"ax-data-list__item ax-data-list__item--loading\\\" [style.height.px]=\\\"itemHeight()\\\">\\n <div class=\\\"ax-data-list__loading-skeleton\\\">\\n <div class=\\\"ax-data-list__skeleton-checkbox\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-content\\\">\\n <div class=\\\"ax-data-list__skeleton-text\\\"></div>\\n <div class=\\\"ax-data-list__skeleton-description\\\"></div>\\n </div>\\n </div>\\n </div>\\n }\\n </ng-container>\\n </cdk-virtual-scroll-viewport>\\n </div>\\n }\\n</div>\\n\\n<!-- Default Loading Template -->\\n<ng-template #defaultLoadingTemplate>\\n <div class=\\\"ax-data-list__loading-default\\\">\\n <div class=\\\"ax-data-list__loading-spinner\\\"></div>\\n <span>Loading...</span>\\n </div>\\n</ng-template>\\n\\n<!-- Default Empty Template -->\\n<ng-template #defaultEmptyTemplate>\\n <div class=\\\"ax-data-list__empty-default\\\">\\n <svg class=\\\"ax-data-list__empty-icon\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"currentColor\\\">\\n <path\\n d=\\\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z\\\"\\n />\\n </svg>\\n <span>No items to display</span>\\n </div>\\n</ng-template>\\n\", styles: [\".ax-data-list{display:flex;flex-direction:column;width:100%;height:100%;background:var(--ax-color-background, #ffffff);border:1px solid var(--ax-color-border, #e5e7eb);border-radius:var(--ax-border-radius, .375rem);overflow:hidden}.ax-data-list--loading .ax-data-list__content{opacity:.6;pointer-events:none}.ax-data-list__loading{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__loading-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__loading-spinner{width:2rem;height:2rem;border:2px solid var(--ax-color-border, #e5e7eb);border-top:2px solid var(--ax-color-primary, #3b82f6);border-radius:50%;animation:spin 1s linear infinite}.ax-data-list__empty{display:flex;align-items:center;justify-content:center;padding:2rem;min-height:200px}.ax-data-list__empty-default{display:flex;flex-direction:column;align-items:center;gap:1rem;color:var(--ax-color-text-secondary, #6b7280);text-align:center}.ax-data-list__empty-icon{width:3rem;height:3rem;opacity:.5}.ax-data-list__content{flex:1;overflow:hidden}.ax-data-list__viewport{height:100%;width:100%}.ax-data-list__viewport--truncated .ax-data-list__text,.ax-data-list__viewport--truncated .ax-data-list__description{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__item{display:flex;align-items:center;padding:.5rem 1rem;cursor:pointer;transition:all .15s ease-in-out;border-bottom:1px solid var(--ax-color-border-light, #f3f4f6);position:relative}.ax-data-list__item:hover:not(.ax-data-list__item--disabled){background-color:var(--ax-color-hover, #f9fafb)}.ax-data-list__item:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--selected{background-color:var(--ax-color-primary-light, #dbeafe);color:var(--ax-color-primary, #3b82f6);border-color:var(--ax-color-primary, #3b82f6)}.ax-data-list__item--selected:hover{background-color:var(--ax-color-primary-light-hover, #bfdbfe)}.ax-data-list__item--disabled{cursor:not-allowed;opacity:.6;background-color:var(--ax-color-disabled, #f9fafb);color:var(--ax-color-text-disabled, #9ca3af)}.ax-data-list__item--disabled:hover{background-color:var(--ax-color-disabled, #f9fafb)}.ax-data-list__item--focused{background-color:var(--ax-color-focus, #eff6ff);outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:-2px}.ax-data-list__item--loading{cursor:default;pointer-events:none;background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--loading:hover{background-color:var(--ax-color-background, #ffffff)}.ax-data-list__item--level-0{padding-left:1rem}.ax-data-list__item--level-1{padding-left:2.5rem}.ax-data-list__item--level-2{padding-left:4rem}.ax-data-list__item--level-3{padding-left:5.5rem}.ax-data-list__item--level-4{padding-left:7rem}.ax-data-list__item--level-5{padding-left:8.5rem}.ax-data-list__checkbox{margin-right:.75rem;flex-shrink:0}.ax-data-list__expand-button{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-right:.5rem;cursor:pointer;border-radius:.25rem;transition:all .15s ease-in-out;flex-shrink:0}.ax-data-list__expand-button:hover{background-color:var(--ax-color-hover, #f3f4f6)}.ax-data-list__expand-button:focus{outline:2px solid var(--ax-color-primary, #3b82f6);outline-offset:2px}.ax-data-list__expand-button--expanded .ax-data-list__expand-icon{transform:rotate(90deg)}.ax-data-list__expand-icon{width:1rem;height:1rem;transition:transform .15s ease-in-out;color:var(--ax-color-text-secondary, #6b7280)}.ax-data-list__content-wrapper{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.ax-data-list__text{font-weight:500;color:var(--ax-color-text, #111827);line-height:1.25}.ax-data-list__text--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ax-data-list__description{font-size:.875rem;color:var(--ax-color-text-secondary, #6b7280);line-height:1.25}.ax-data-list__description--truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.ax-data-list__item{padding:.75rem 1rem}.ax-data-list__item--level-1{padding-left:2rem}.ax-data-list__item--level-2{padding-left:3rem}.ax-data-list__item--level-3{padding-left:4rem}.ax-data-list__item--level-4{padding-left:5rem}.ax-data-list__item--level-5{padding-left:6rem}.ax-data-list__checkbox{margin-right:.5rem}.ax-data-list__expand-button{margin-right:.25rem}}@media (prefers-contrast: high){.ax-data-list{border-width:2px}.ax-data-list__item{border-bottom-width:2px}.ax-data-list__item:focus{outline-width:3px}.ax-data-list__item--selected{border-width:2px}.ax-data-list__expand-button:focus{outline-width:3px}}@media (prefers-reduced-motion: reduce){.ax-data-list__item,.ax-data-list__expand-icon{transition:none}.ax-data-list__loading-spinner{animation:none}}.ax-data-list__loading-skeleton{display:flex;align-items:center;width:100%;gap:.75rem}.ax-data-list__skeleton-checkbox{width:1rem;height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;flex-shrink:0}.ax-data-list__skeleton-content{flex:1;display:flex;flex-direction:column;gap:.5rem}.ax-data-list__skeleton-text{height:1rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:80%}.ax-data-list__skeleton-description{height:.75rem;background:linear-gradient(90deg,#f3f4f6 25%,#e5e7eb,#f3f4f6 75%);background-size:200% 100%;border-radius:.25rem;animation:shimmer 1.5s infinite;width:60%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: true }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: \"config\", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: \"multiple\", required: false }] }], showCheckbox: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showCheckbox\", required: false }] }], itemHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: \"itemHeight\", required: false }] }], isItemTruncated: [{ type: i0.Input, args: [{ isSignal: true, alias: \"isItemTruncated\", required: false }] }], showItemTooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showItemTooltip\", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disabledField\", required: false }] }], tooltipField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tooltipField\", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"textField\", required: false }] }], descriptionField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"descriptionField\", required: false }] }], levelField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"levelField\", required: false }] }], childrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"childrenField\", required: false }] }], expandedField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"expandedField\", required: false }] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"itemTemplate\", required: false }] }], emptyTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"emptyTemplate\", required: false }] }], loadingTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"loadingTemplate\", required: false }] }], selectionChange: [{\n type: Output\n }], itemClick: [{\n type: Output\n }], itemDoubleClick: [{\n type: Output\n }], expandChange: [{\n type: Output\n }], viewport: [{\n type: ViewChild,\n args: [CdkVirtualScrollViewport]\n }], selectionModel: [{ type: i0.Input, args: [{ isSignal: true, alias: \"selectionModel\", required: false }] }, { type: i0.Output, args: [\"selectionModelChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS1saXN0L3NyYy9saWIvZGF0YS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZGF0YS1saXN0L3NyYy9saWIvZGF0YS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQXdDN0MsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQTBEdkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQTFEVixTQUFTO1FBQ1QsZUFBVSxHQUFHLEtBQUssQ0FBQyxRQUFRLHFEQUFnQyxDQUFDO1FBQzVELFdBQU0sR0FBRyxLQUFLLENBQW1CLEVBQUUsa0RBQUMsQ0FBQztRQUNyQyxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztR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LENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7OEdBNVhVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDB4RkE2Qm5CLHdCQUF3Qix1RUN6RnJDLG00TEFtSkEsc3VMRHpGWSxZQUFZLHFNQUFFLFdBQVcsOEJBQUUsZUFBZSw0akJBQUUsa0JBQWtCLG1PQUFFLG1CQUFtQjs7MkZBRWxGLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7O3NCQXlCN0YsTUFBTTs7c0JBQ04sTUFBTTs7c0JBQ04sTUFBTTs7c0JBQ04sTUFBTTs7c0JBR04sU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYTGlzdERhdGFTb3VyY2UsIE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhDaGVja0JveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFdmVudEVtaXR0ZXIsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIFR5cGVzIGZvciB0aGUgY29tcG9uZW50XG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YUxpc3RJdGVtIHtcbiAgaWQ6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBsZXZlbD86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiBBWERhdGFMaXN0SXRlbVtdO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFMaXN0Q29uZmlnIHtcbiAgZGlzYWJsZWRGaWVsZD86IHN0cmluZztcbiAgdG9vbHRpcEZpZWxkPzogc3RyaW5nO1xuICB0ZXh0RmllbGQ/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uRmllbGQ/OiBzdHJpbmc7XG4gIGxldmVsRmllbGQ/OiBzdHJpbmc7XG4gIGNoaWxkcmVuRmllbGQ/OiBzdHJpbmc7XG4gIGV4cGFuZGVkRmllbGQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRhTGlzdFNlbGVjdGlvbkNoYW5nZSB7XG4gIHNlbGVjdGVkSXRlbXM6IEFYRGF0YUxpc3RJdGVtW107XG4gIHNlbGVjdGVkS2V5czogc3RyaW5nW107XG4gIGlzTXVsdGlwbGU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGEtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGUsIEFYVG9vbHRpcERpcmVjdGl2ZSwgQVhDaGVja0JveENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYRGF0YUxpc3RDb21wb25lbnQgZXh0ZW5kcyBNWFZhbHVlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gSW5wdXRzXG4gIGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxBWERhdGFTb3VyY2U8QVhEYXRhTGlzdEl0ZW0+PigpO1xuICBjb25maWcgPSBpbnB1dDxBWERhdGFMaXN0Q29uZmlnPih7fSk7XG4gIG11bHRpcGxlID0gaW5wdXQoZmFsc2UpO1xuICBzaG93Q2hlY2tib3ggPSBpbnB1dCh0cnVlKTtcbiAgaXRlbUhlaWdodCA9IGlucHV0KDQwKTtcbiAgaXNJdGVtVHJ1bmNhdGVkID0gaW5wdXQodHJ1ZSk7XG4gIHNob3dJdGVtVG9vbHRpcCA9IGlucHV0KHRydWUpO1xuICBkaXNhYmxlZEZpZWxkID0gaW5wdXQ8c3RyaW5nPignZGlzYWJsZWQnKTtcbiAgdG9vbHRpcEZpZWxkID0gaW5wdXQ8c3RyaW5nPigndG9vbHRpcCcpO1xuICB0ZXh0RmllbGQgPSBpbnB1dDxzdHJpbmc+KCd0ZXh0Jyk7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdkZXNjcmlwdGlvbicpO1xuICBsZXZlbEZpZWxkID0gaW5wdXQ8c3RyaW5nPignbGV2ZWwnKTtcbiAgY2hpbGRyZW5GaWVsZCA9IGlucHV0PHN0cmluZz4oJ2NoaWxkcmVuJyk7XG4gIGV4cGFuZGVkRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdleHBhbmRlZCcpO1xuXG4gIC8vIFRlbXBsYXRlc1xuICBpdGVtVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBlbXB0eVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgbG9hZGluZ1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcblxuICAvLyBPdXRwdXRzXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUxpc3RTZWxlY3Rpb25DaGFuZ2U+KCk7XG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUxpc3RJdGVtPigpO1xuICBAT3V0cHV0KCkgaXRlbURvdWJsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFMaXN0SXRlbT4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBpdGVtOiBBWERhdGFMaXN0SXRlbTsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcblxuICAvLyBWaWV3Q2hpbGRcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdwb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIC8vIEludGVybmFsIHNpZ25hbHNcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgdG90YWxJdGVtcyA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkSXRlbXMgPSBzaWduYWw8QVhEYXRhTGlzdEl0ZW1bXT4oW10pO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRLZXlzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XG4gIHByb3RlY3RlZCBmb2N1c2VkSW5kZXggPSBzaWduYWwoLTEpO1xuICBwcm90ZWN0ZWQgZXhwYW5kZWRJdGVtcyA9IHNpZ25hbDxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKTtcblxuICAvLyBMaXN0IGRhdGEgc291cmNlIGZvciB2aXJ0dWFsIHNjcm9sbGluZ1xuICBwcm90ZWN0ZWQgbGlzdERhdGFTb3VyY2U6IEFYTGlzdERhdGFTb3VyY2U8QVhEYXRhTGlzdEl0ZW0+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gQ29tcHV0ZWQgdmFsdWVzXG4gIHByb3RlY3RlZCBoYXNJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBkYXRhU291cmNlSXRlbXMgPSB0aGlzLmxpc3REYXRhU291cmNlPy5zb3VyY2U/LmNhY2hlZEl0ZW1zPy5sZW5ndGggPiAwO1xuICAgIHJldHVybiBkYXRhU291cmNlSXRlbXM7XG4gIH0pO1xuICBwcm90ZWN0ZWQgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub3RMb2FkaW5nID0gIXRoaXMubG9hZGluZygpO1xuICAgIGNvbnN0IG5vRGF0YVNvdXJjZUl0ZW1zID0gIXRoaXMubGlzdERhdGFTb3VyY2U/LnNvdXJjZT8uY2FjaGVkSXRlbXM/Lmxlbmd0aDtcbiAgICByZXR1cm4gbm90TG9hZGluZyAmJiBub0RhdGFTb3VyY2VJdGVtcztcbiAgfSk7XG4gIHByb3RlY3RlZCBpc011bHRpcGxlU2VsZWN0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tdWx0aXBsZSgpKTtcbiAgcHJvdGVjdGVkIHNob3dDaGVja2JveGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zaG93Q2hlY2tib3goKSk7XG5cbiAgLy8gU2VsZWN0aW9uIG1vZGVsXG4gIHB1YmxpYyBzZWxlY3Rpb25Nb2RlbCA9IG1vZGVsPHN0cmluZyB8IHN0cmluZ1tdPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICAvLyBFZmZlY3QgdG8gc3luYyBzZWxlY3Rpb24gbW9kZWwgd2l0aCBpbnRlcm5hbCBzdGF0ZVxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbk1vZGVsKCk7XG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGlvbikpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkS2V5cy5zZXQoc2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkS2V5cy5zZXQoW3NlbGVjdGlvbl0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gRWZmZWN0IHRvIGVtaXQgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcygpO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5zZWxlY3RlZEtleXMoKTtcbiAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb24oKTtcblxuICAgICAgaWYgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBzZWxlY3RlZEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgIHNlbGVjdGVkS2V5cyxcbiAgICAgICAgICBpc011bHRpcGxlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEVmZmVjdCB0byB3YXRjaCBmb3IgZGF0YVNvdXJjZSBjaGFuZ2VzIGFuZCBjcmVhdGUgbGlzdERhdGFTb3VyY2VcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpO1xuICAgICAgaWYgKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgdGhpcy5saXN0RGF0YVNvdXJjZSA9IG5ldyBBWExpc3REYXRhU291cmNlPEFYRGF0YUxpc3RJdGVtPih7XG4gICAgICAgICAgc291cmNlOiBkYXRhU291cmNlLFxuICAgICAgICAgIGRlYm91bmNlVGltZTogMTAwLCAvLyBBZGQgZGVib3VuY2UgdG8gcHJldmVudCB0b28gbWFueSBwYWdlIHJlcXVlc3RzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFNldCB1cCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMuc2V0dXBEYXRhU291cmNlU3Vic2NyaXB0aW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIC8vIERhdGEgbG9hZGluZyBpcyBub3cgaGFuZGxlZCBieSB0aGUgZWZmZWN0IHdhdGNoaW5nIGRhdGFTb3VyY2UgY2hhbmdlc1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cERhdGFTb3VyY2VTdWJzY3JpcHRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UoKSB8fCAhdGhpcy5saXN0RGF0YVNvdXJjZSkgcmV0dXJuO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGRhdGEgc291cmNlIGNoYW5nZXNcbiAgICB0aGlzLmRhdGFTb3VyY2UoKS5vbkNoYW5nZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLmNhY2hlZEl0ZW1zKSB7XG4gICAgICAgIHRoaXMudG90YWxJdGVtcy5zZXQoZGF0YS50b3RhbENvdW50IHx8IGRhdGEuY2FjaGVkSXRlbXMubGVuZ3RoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZSgpLm9uTG9hZGluZ0NoYW5nZWQuc3Vic2NyaWJlKChsb2FkaW5nKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGxvYWRpbmcpO1xuICAgIH0pO1xuXG4gICAgLy8gTG9hZCBpbml0aWFsIGRhdGEgLSBqdXN0IHRyaWdnZXIgdGhlIGZpcnN0IHBhZ2UgbG9hZFxuICAgIC8vIFRoZSBBWExpc3REYXRhU291cmNlIHdpbGwgaGFuZGxlIHN1YnNlcXVlbnQgcGFnZXMgYXV0b21hdGljYWxseVxuICAgIHRoaXMuZGF0YVNvdXJjZSgpLnNldFBhZ2UoMCk7XG4gIH1cblxuICAvLyBTZWxlY3Rpb24gbWFuYWdlbWVudFxuICBwcm90ZWN0ZWQgc2VsZWN0SXRlbShpdGVtOiBBWERhdGFMaXN0SXRlbSwgZXZlbnQ/OiBFdmVudCkge1xuICAgIGlmIChldmVudCAmJiB0eXBlb2YgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZVNlbGVjdGlvbigpKSB7XG4gICAgICB0aGlzLnRvZ2dsZU11bHRpcGxlU2VsZWN0aW9uKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFNpbmdsZVNlbGVjdGlvbihpdGVtKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlTXVsdGlwbGVTZWxlY3Rpb24oaXRlbTogQVhEYXRhTGlzdEl0ZW0pIHtcbiAgICBjb25zdCBjdXJyZW50S2V5cyA9IHRoaXMuc2VsZWN0ZWRLZXlzKCk7XG4gICAgY29uc3QgaXRlbUtleSA9IHRoaXMuZ2V0SXRlbUtleShpdGVtKTtcblxuICAgIGlmIChjdXJyZW50S2V5cy5pbmNsdWRlcyhpdGVtS2V5KSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEtleXMuc2V0KGN1cnJlbnRLZXlzLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09IGl0ZW1LZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEtleXMuc2V0KFsuLi5jdXJyZW50S2V5cywgaXRlbUtleV0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRJdGVtcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldFNpbmdsZVNlbGVjdGlvbihpdGVtOiBBWERhdGFMaXN0SXRlbSkge1xuICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLmdldEl0ZW1LZXkoaXRlbSk7XG4gICAgdGhpcy5zZWxlY3RlZEtleXMuc2V0KFtpdGVtS2V5XSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzZWxlY3RJdGVtKGl0ZW06IEFYRGF0YUxpc3RJdGVtKSB7XG4gICAgY29uc3QgY3VycmVudEtleXMgPSB0aGlzLnNlbGVjdGVkS2V5cygpO1xuICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLmdldEl0ZW1LZXkoaXRlbSk7XG4gICAgY29uc3QgbmV3S2V5cyA9IGN1cnJlbnRLZXlzLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09IGl0ZW1LZXkpO1xuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLnNldChuZXdLZXlzKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVTZWxlY3RlZEl0ZW1zKCkge1xuICAgIGNvbnN0IGtleXMgPSB0aGlzLnNlbGVjdGVkS2V5cygpO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB0aGlzLmxpc3REYXRhU291cmNlPy5zb3VyY2U7XG4gICAgaWYgKCFkYXRhU291cmNlKSByZXR1cm47XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IGRhdGFTb3VyY2UuY2FjaGVkSXRlbXMuZmlsdGVyKChpdGVtKSA9PiBrZXlzLmluY2x1ZGVzKHRoaXMuZ2V0SXRlbUtleShpdGVtKSkpO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zZXQoc2VsZWN0ZWQpO1xuXG4gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBtb2RlbFxuICAgIGlmICh0aGlzLmlzTXVsdGlwbGVTZWxlY3Rpb24oKSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZXQoa2V5cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2V0KGtleXNbMF0gfHwgJycpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpc0l0ZW1TZWxlY3RlZChpdGVtOiBBWERhdGFMaXN0SXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkS2V5cygpLmluY2x1ZGVzKHRoaXMuZ2V0SXRlbUtleShpdGVtKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNJdGVtRGlzYWJsZWQoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBib29sZWFuIHtcbiAgICBjb25zdCBkaXNhYmxlZEZpZWxkID0gdGhpcy5kaXNhYmxlZEZpZWxkKCk7XG4gICAgaWYgKCFkaXNhYmxlZEZpZWxkKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBkaXNhYmxlZCA9IGl0ZW1bZGlzYWJsZWRGaWVsZF07XG4gICAgcmV0dXJuIEJvb2xlYW4oZGlzYWJsZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1LZXkoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBzdHJpbmcge1xuICAgIGlmIChpdGVtLmlkICE9PSB1bmRlZmluZWQgJiYgaXRlbS5pZCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFN0cmluZyhpdGVtLmlkKTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byBvdGhlciBwb3RlbnRpYWwga2V5IGZpZWxkc1xuICAgIGlmIChpdGVtWydrZXknXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bJ2tleSddICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW1bJ2tleSddKTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbVsndmFsdWUnXSAhPT0gdW5kZWZpbmVkICYmIGl0ZW1bJ3ZhbHVlJ10gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaXRlbVsndmFsdWUnXSk7XG4gICAgfVxuXG4gICAgLy8gTGFzdCByZXNvcnQ6IHVzZSB0aGUgaXRlbSBpdHNlbGYgYXMgYSBzdHJpbmdcbiAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICB9XG5cbiAgLy8gVHJlZSBncm91cGluZ1xuICBwcm90ZWN0ZWQgdG9nZ2xlRXhwYW5kZWQoaXRlbTogQVhEYXRhTGlzdEl0ZW0sIGV2ZW50OiBFdmVudCkge1xuICAgIGlmIChldmVudCAmJiB0eXBlb2YgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4oaXRlbSkpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWRJdGVtcygpO1xuICAgIGNvbnN0IGl0ZW1LZXkgPSB0aGlzLmdldEl0ZW1LZXkoaXRlbSk7XG5cbiAgICBpZiAoY3VycmVudEV4cGFuZGVkLmhhcyhpdGVtS2V5KSkge1xuICAgICAgY3VycmVudEV4cGFuZGVkLmRlbGV0ZShpdGVtS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEV4cGFuZGVkLmFkZChpdGVtS2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLmV4cGFuZGVkSXRlbXMuc2V0KG5ldyBTZXQoY3VycmVudEV4cGFuZGVkKSk7XG4gICAgdGhpcy5leHBhbmRDaGFuZ2UuZW1pdCh7IGl0ZW0sIGV4cGFuZGVkOiBjdXJyZW50RXhwYW5kZWQuaGFzKGl0ZW1LZXkpIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhc0NoaWxkcmVuKGl0ZW06IEFYRGF0YUxpc3RJdGVtKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2hpbGRyZW5GaWVsZCA9IHRoaXMuY2hpbGRyZW5GaWVsZCgpO1xuICAgIGlmICghY2hpbGRyZW5GaWVsZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgY2hpbGRyZW4gPSBpdGVtW2NoaWxkcmVuRmllbGRdO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRXhwYW5kZWQoaXRlbTogQVhEYXRhTGlzdEl0ZW0pOiBib29sZWFuIHtcbiAgICBjb25zdCBleHBhbmRlZEZpZWxkID0gdGhpcy5leHBhbmRlZEZpZWxkKCk7XG4gICAgaWYgKGV4cGFuZGVkRmllbGQpIHtcbiAgICAgIGNvbnN0IGV4cGFuZGVkID0gaXRlbVtleHBhbmRlZEZpZWxkXTtcbiAgICAgIGlmIChleHBhbmRlZCAhPT0gdW5kZWZpbmVkICYmIGV4cGFuZGVkICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKGV4cGFuZGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZEl0ZW1zKCkuaGFzKHRoaXMuZ2V0SXRlbUtleShpdGVtKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SXRlbUxldmVsKGl0ZW06IEFYRGF0YUxpc3RJdGVtKTogbnVtYmVyIHtcbiAgICBjb25zdCBsZXZlbEZpZWxkID0gdGhpcy5sZXZlbEZpZWxkKCk7XG4gICAgaWYgKCFsZXZlbEZpZWxkKSByZXR1cm4gMDtcblxuICAgIGNvbnN0IGxldmVsID0gaXRlbVtsZXZlbEZpZWxkXTtcbiAgICByZXR1cm4gbGV2ZWwgIT09IHVuZGVmaW5lZCAmJiBsZXZlbCAhPT0gbnVsbCA/IE51bWJlcihsZXZlbCkgOiAwO1xuICB9XG5cbiAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvblxuICBwcm90ZWN0ZWQgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpdGVtOiBBWERhdGFMaXN0SXRlbSwgaW5kZXg6IG51bWJlcikge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzTmV4dEl0ZW0oaW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmZvY3VzUHJldmlvdXNJdGVtKGluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XG4gICAgICAgIHRoaXMuZm9jdXNlZEluZGV4LnNldCgtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBmb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMubGlzdERhdGFTb3VyY2U/LnNvdXJjZTtcbiAgICBpZiAoIWRhdGFTb3VyY2UgfHwgZGF0YVNvdXJjZS5jYWNoZWRJdGVtcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IG5leHRJbmRleCA9IE1hdGgubWluKGN1cnJlbnRJbmRleCArIDEsIGRhdGFTb3VyY2UuY2FjaGVkSXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgdGhpcy5zY3JvbGxUb0luZGV4KG5leHRJbmRleCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZm9jdXNQcmV2aW91c0l0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5saXN0RGF0YVNvdXJjZT8uc291cmNlO1xuICAgIGlmICghZGF0YVNvdXJjZSB8fCBkYXRhU291cmNlLmNhY2hlZEl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldkluZGV4ID0gTWF0aC5tYXgoY3VycmVudEluZGV4IC0gMSwgMCk7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXguc2V0KHByZXZJbmRleCk7XG4gICAgdGhpcy5zY3JvbGxUb0luZGV4KHByZXZJbmRleCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudmlld3BvcnQgJiYgdHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJyAmJiBpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEl0ZW0gaW50ZXJhY3Rpb25cbiAgcHJvdGVjdGVkIG9uSXRlbUNsaWNrKGl0ZW06IEFYRGF0YUxpc3RJdGVtLCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcbiAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbSwgZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hlY2tib3hDaGFuZ2UoaXRlbTogQVhEYXRhTGlzdEl0ZW0sIGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hlY2tib3hDbGljayhldmVudDogRXZlbnQpIHtcbiAgICBpZiAodHlwZW9mIGV2ZW50LnN0b3BQcm9wYWdhdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uSXRlbURvdWJsZUNsaWNrKGl0ZW06IEFYRGF0YUxpc3RJdGVtKSB7XG4gICAgaWYgKHRoaXMuaXNJdGVtRGlzYWJsZWQoaXRlbSkpIHJldHVybjtcblxuICAgIHRoaXMuaXRlbURvdWJsZUNsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvLyBVdGlsaXR5IG1ldGhvZHNcbiAgcHJvdGVjdGVkIGdldEl0ZW1UZXh0KGl0ZW06IEFYRGF0YUxpc3RJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB0ZXh0RmllbGQgPSB0aGlzLnRleHRGaWVsZCgpO1xuICAgIGlmICh0ZXh0RmllbGQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBpdGVtW3RleHRGaWVsZF07XG4gICAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkICYmIHRleHQgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbS50ZXh0IHx8ICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1EZXNjcmlwdGlvbihpdGVtOiBBWERhdGFMaXN0SXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGVzY3JpcHRpb25GaWVsZCA9IHRoaXMuZGVzY3JpcHRpb25GaWVsZCgpO1xuICAgIGlmIChkZXNjcmlwdGlvbkZpZWxkKSB7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGl0ZW1bZGVzY3JpcHRpb25GaWVsZF07XG4gICAgICBpZiAoZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCAmJiBkZXNjcmlwdGlvbiAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKGRlc2NyaXB0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbS5kZXNjcmlwdGlvbiB8fCAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtVG9vbHRpcChpdGVtOiBBWERhdGFMaXN0SXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9vbHRpcEZpZWxkID0gdGhpcy50b29sdGlwRmllbGQoKTtcbiAgICBpZiAodG9vbHRpcEZpZWxkKSB7XG4gICAgICBjb25zdCB0b29sdGlwID0gaXRlbVt0b29sdGlwRmllbGRdO1xuICAgICAgaWYgKHRvb2x0aXAgIT09IHVuZGVmaW5lZCAmJiB0b29sdGlwICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodG9vbHRpcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0udG9vbHRpcCB8fCAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBzaG91bGRTaG93VG9vbHRpcChpdGVtOiBBWERhdGFMaXN0SXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dJdGVtVG9vbHRpcCgpICYmICEhdGhpcy5nZXRJdGVtVG9vbHRpcChpdGVtKTtcbiAgfVxuXG4gIC8vIFRyYWNrIGJ5IGZ1bmN0aW9uIGZvciB2aXJ0dWFsIHNjcm9sbGluZ1xuICBwcm90ZWN0ZWQgdHJhY2tCeUZuID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IEFYRGF0YUxpc3RJdGVtKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBgbG9hZGluZy0ke2luZGV4fWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldEl0ZW1LZXkoaXRlbSk7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtZGF0YS1saXN0XCIgW2NsYXNzLmF4LWRhdGEtbGlzdC0tbG9hZGluZ109XCJsb2FkaW5nKClcIj5cbiAgPCEtLSBMb2FkaW5nIFN0YXRlIC0tPlxuICBAaWYgKGxvYWRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX2xvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVGVtcGxhdGUoKSB8fCBkZWZhdWx0TG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICBAaWYgKGlzRW1wdHkoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX2VtcHR5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZSgpIHx8IGRlZmF1bHRFbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIExpc3QgQ29udGVudCAtLT5cbiAgQGlmIChoYXNJdGVtcygpICYmIGxpc3REYXRhU291cmNlICE9PSBudWxsKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fY29udGVudFwiPlxuICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgICBbaXRlbVNpemVdPVwiaXRlbUhlaWdodCgpXCJcbiAgICAgICAgY2xhc3M9XCJheC1kYXRhLWxpc3RfX3ZpZXdwb3J0XCJcbiAgICAgICAgW2NsYXNzLmF4LWRhdGEtbGlzdF9fdmlld3BvcnQtLXRydW5jYXRlZF09XCJpc0l0ZW1UcnVuY2F0ZWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaXRlbSBvZiBsaXN0RGF0YVNvdXJjZTsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgICAgICAgQGlmIChpdGVtKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS1saXN0X19pdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtbGlzdF9faXRlbS0tc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS1saXN0X19pdGVtLS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpdGVtKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLWxpc3RfX2l0ZW0tLWZvY3VzZWRdPVwiZm9jdXNlZEluZGV4KCkgPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2F4LWRhdGEtbGlzdF9faXRlbS0tbGV2ZWwtJyArIGdldEl0ZW1MZXZlbChpdGVtKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaXRlbUhlaWdodCgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25JdGVtRG91YmxlQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50LCBpdGVtLCBpKVwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIHJvbGU9XCJsaXN0aXRlbVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJnZXRJdGVtTGV2ZWwoaXRlbSkgKyAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBDaGVja2JveCAtLT5cbiAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tib3hlcygpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fY2hlY2tib3hcIiAoY2xpY2spPVwib25DaGVja2JveENsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1jaGVjay1ib3hcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gRXhwYW5kL0NvbGxhcHNlIEJ1dHRvbiBmb3IgVHJlZSBJdGVtcyAtLT5cbiAgICAgICAgICAgICAgQGlmIChoYXNDaGlsZHJlbihpdGVtKSkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS1saXN0X19leHBhbmQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1kYXRhLWxpc3RfX2V4cGFuZC1idXR0b24tLWV4cGFuZGVkXT1cImlzRXhwYW5kZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKGl0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc0V4cGFuZGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiYXgtZGF0YS1saXN0X19leHBhbmQtaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxMGw1IDUgNS01elwiIC8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gSXRlbSBDb250ZW50IC0tPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZGF0YS1saXN0X19jb250ZW50LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIEN1c3RvbSBJdGVtIFRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbVRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBpc0l0ZW1TZWxlY3RlZChpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBpc0l0ZW1EaXNhYmxlZChpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVmYXVsdEl0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gRGVmYXVsdCBJdGVtIFRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC1kYXRhLWxpc3RfX3RleHRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtZGF0YS1saXN0X190ZXh0LS10cnVuY2F0ZWRdPVwiaXNJdGVtVHJ1bmNhdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXhUb29sdGlwXT1cInNob3VsZFNob3dUb29sdGlwKGl0ZW0pID8gZ2V0SXRlbVRvb2x0aXAoaXRlbSkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F4VG9vbHRpcERpc2FibGVkXT1cIiFzaG91bGRTaG93VG9vbHRpcChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldEl0ZW1UZXh0KGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgQGlmIChnZXRJdGVtRGVzY3JpcHRpb24oaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZGF0YS1saXN0X19kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LWRhdGEtbGlzdF9fZGVzY3JpcHRpb24tLXRydW5jYXRlZF09XCJpc0l0ZW1UcnVuY2F0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRJdGVtRGVzY3JpcHRpb24oaXRlbSkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyBza2VsZXRvbiBmb3IgbnVsbCBpdGVtcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX2l0ZW0gYXgtZGF0YS1saXN0X19pdGVtLS1sb2FkaW5nXCIgW3N0eWxlLmhlaWdodC5weF09XCJpdGVtSGVpZ2h0KClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fbG9hZGluZy1za2VsZXRvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1kYXRhLWxpc3RfX3NrZWxldG9uLWNoZWNrYm94XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fc2tlbGV0b24tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fc2tlbGV0b24tdGV4dFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fc2tlbGV0b24tZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48IS0tIERlZmF1bHQgTG9hZGluZyBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvYWRpbmdUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fbG9hZGluZy1kZWZhdWx0XCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWRhdGEtbGlzdF9fbG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gICAgPHNwYW4+TG9hZGluZy4uLjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIERlZmF1bHQgRW1wdHkgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRFbXB0eVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiYXgtZGF0YS1saXN0X19lbXB0eS1kZWZhdWx0XCI+XG4gICAgPHN2ZyBjbGFzcz1cImF4LWRhdGEtbGlzdF9fZW1wdHktaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyelwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICAgIDxzcGFuPk5vIGl0ZW1zIHRvIGRpc3BsYXk8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","// Secondary entry point for @acorex/components/data-list\nexport * from './lib/data-list.component';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2RhdGEtbGlzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBRXpELGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWNvbmRhcnkgZW50cnkgcG9pbnQgZm9yIEBhY29yZXgvY29tcG9uZW50cy9kYXRhLWxpc3RcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGF0YS1saXN0LmNvbXBvbmVudCc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtZGF0YS1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9kYXRhLWxpc3Qvc3JjL2Fjb3JleC1jb21wb25lbnRzLWRhdGEtbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -375,7 +375,6 @@ class AXDataPagerNumericSelectorComponent extends AXDataPagerChild {
375
375
  data: end + 1,
376
376
  });
377
377
  }
378
- console.log(this._items);
379
378
  this.cdr.detectChanges();
380
379
  }
381
380
  /**