@acorex/components 21.0.1-next.6 → 21.0.1-next.8

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.
@@ -248,7 +248,7 @@ class AXKanbanComponent extends NXComponent {
248
248
  }
249
249
  /**
250
250
  * Emit beforeDrop event and return whether to continue with the drop operation.
251
- * Supports both synchronous and asynchronous event handlers.
251
+ * Supports both synchronous and asynchronous event handlers via the `wait()` method.
252
252
  * @param item The original item from dataSource that is being moved
253
253
  * @param previousStatusKey The status key the item is moving from
254
254
  * @param currentStatusKey The status key the item is moving to
@@ -258,6 +258,8 @@ class AXKanbanComponent extends NXComponent {
258
258
  * @returns Promise<boolean> - true if the drop should proceed, false if it should be canceled
259
259
  */
260
260
  async emitBeforeDropEvent(item, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent) {
261
+ // Collect promises registered via wait()
262
+ const waitPromises = [];
261
263
  const beforeDropEvent = {
262
264
  sender: this,
263
265
  nativeEvent,
@@ -267,32 +269,13 @@ class AXKanbanComponent extends NXComponent {
267
269
  previousIndex,
268
270
  currentIndex,
269
271
  canceled: false,
272
+ wait: (promise) => waitPromises.push(promise),
270
273
  };
271
- // Manually invoke handlers to collect and await promises from async handlers
272
- const outputRef = this.onBeforeDrop;
273
- const emitter = outputRef._emitRef?.() || outputRef.emitRef?.();
274
- const promises = [];
275
- if (emitter?.observers || emitter?._observers) {
276
- const observers = emitter.observers || emitter._observers || [];
277
- observers.forEach((observer) => {
278
- try {
279
- const result = observer.next?.(beforeDropEvent) || observer(beforeDropEvent);
280
- if (result instanceof Promise) {
281
- promises.push(result);
282
- }
283
- }
284
- catch (error) {
285
- console.error('Error in onBeforeDrop handler:', error);
286
- }
287
- });
288
- }
289
- else {
290
- // Fallback: emit normally
291
- this.onBeforeDrop.emit(beforeDropEvent);
292
- }
293
- // Wait for all async handlers to complete
294
- if (promises.length > 0) {
295
- await Promise.all(promises);
274
+ // Emit the event - handlers can call event.wait() to register async operations
275
+ this.onBeforeDrop.emit(beforeDropEvent);
276
+ // Wait for all registered promises to complete
277
+ if (waitPromises.length > 0) {
278
+ await Promise.all(waitPromises);
296
279
  }
297
280
  return !beforeDropEvent.canceled;
298
281
  }
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-kanban.mjs","sources":["../tmp-esm2022/kanban/lib/kanban.component.js","../tmp-esm2022/kanban/acorex-components-kanban.js"],"sourcesContent":["import { NXComponent } from '@acorex/cdk/common';\nimport { AXDragDirective, AXDropListDirective } from '@acorex/cdk/drag-drop';\nimport { AXDecoratorGenericComponent, AXDecoratorHeadingComponent, AXDecoratorIconComponent, } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXKanbanComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.hasActions = input(false, ...(ngDevMode ? [{ debugName: \"hasActions\" }] : []));\n this.dragStartDelay = input(0, ...(ngDevMode ? [{ debugName: \"dragStartDelay\" }] : []));\n this.statuses = input([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n this.dataSource = input(...(ngDevMode ? [undefined, { debugName: \"dataSource\" }] : []));\n this.keyField = input('id', ...(ngDevMode ? [{ debugName: \"keyField\" }] : []));\n this.indexField = input('index', ...(ngDevMode ? [{ debugName: \"indexField\" }] : []));\n this.titleField = input('title', ...(ngDevMode ? [{ debugName: \"titleField\" }] : []));\n this.cssClassField = input('cssClass', ...(ngDevMode ? [{ debugName: \"cssClassField\" }] : []));\n this.priorityField = input('priority', ...(ngDevMode ? [{ debugName: \"priorityField\" }] : []));\n this.statusKeyField = input('statusKey', ...(ngDevMode ? [{ debugName: \"statusKeyField\" }] : []));\n this.descriptionField = input('description', ...(ngDevMode ? [{ debugName: \"descriptionField\" }] : []));\n this.emptyTemplate = input(...(ngDevMode ? [undefined, { debugName: \"emptyTemplate\" }] : []));\n this.headerTemplate = input(...(ngDevMode ? [undefined, { debugName: \"headerTemplate\" }] : []));\n this.footerTemplate = input(...(ngDevMode ? [undefined, { debugName: \"footerTemplate\" }] : []));\n this.contentFooterTemplate = input(...(ngDevMode ? [undefined, { debugName: \"contentFooterTemplate\" }] : []));\n this.tooltipTemplate = input(...(ngDevMode ? [undefined, { debugName: \"tooltipTemplate\" }] : []));\n this.onBeforeDrop = output();\n this.onSortChanged = output();\n this.onItemClick = output();\n this.onActionClick = output();\n this.onItemDblClick = output();\n this.onItemRightClick = output();\n this.items = computed(() => {\n // ... your excellent gap-filling index logic remains the same ...\n const dataSource = this.dataSource() || [];\n const mappedItems = dataSource.map((item) => ({\n id: item[this.keyField()],\n index: item[this.indexField()],\n title: item[this.titleField()],\n cssClass: item[this.cssClassField()],\n priority: item[this.priorityField()],\n statusKey: item[this.statusKeyField()],\n description: item[this.descriptionField()],\n }));\n const itemsByStatus = new Map();\n for (const item of mappedItems) {\n if (!itemsByStatus.has(item.statusKey)) {\n itemsByStatus.set(item.statusKey, []);\n }\n itemsByStatus.get(item.statusKey).push(item);\n }\n const finalProcessedItems = [];\n for (const group of itemsByStatus.values()) {\n const correctlyIndexedItems = [];\n const itemsToBeIndexed = [];\n const takenIndices = new Set();\n for (const item of group) {\n const hasValidIndex = item.index != null && typeof item.index === 'number' && !takenIndices.has(item.index);\n if (hasValidIndex) {\n takenIndices.add(item.index);\n correctlyIndexedItems.push(item);\n }\n else {\n itemsToBeIndexed.push(item);\n }\n }\n let currentIndex = 0;\n for (const item of itemsToBeIndexed) {\n while (takenIndices.has(currentIndex)) {\n currentIndex++;\n }\n item.index = currentIndex;\n currentIndex++;\n }\n const processedGroup = [...correctlyIndexedItems, ...itemsToBeIndexed];\n processedGroup.sort((a, b) => a.index - b.index);\n finalProcessedItems.push(...processedGroup);\n }\n return finalProcessedItems;\n }, ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.filteredStatuses = computed(() => this.statuses().sort((a, b) => a.index - b.index), ...(ngDevMode ? [{ debugName: \"filteredStatuses\" }] : []));\n }\n /**\n * Handles a drop operation to reorder items or move them between statuses.\n * It uses the component's current rendered state (`this.items`) as the source\n * of truth, performs precise re-indexing, and emits a comprehensive event with\n * the updated data source.\n *\n * @param event AXDropListDroppedEvent - The drag-and-drop event including indices and container information.\n * @returns Promise<void>\n */\n async drop(event) {\n const { item: droppedItemDirective, currentIndex, previousIndex, container, previousContainer } = event;\n // --- 1. Get identifiers and the item's original data ---\n const currentStatusKey = JSON.parse(container.element.id);\n const previousStatusKey = JSON.parse(previousContainer.element.id);\n const movedItemOriginalData = droppedItemDirective.dragData();\n if (!movedItemOriginalData) {\n console.warn('AXKanban: Dragged item has no [dragData]. Sort event cannot be emitted.');\n return;\n }\n // --- 2. Get the original item from dataSource ---\n const originalItemFromDataSource = this.dataSource().find((item) => item[this.keyField()] === movedItemOriginalData.id);\n if (!originalItemFromDataSource) {\n console.warn('AXKanban: Item not found in dataSource.');\n return;\n }\n // --- 3. Perform the move operation ---\n await this.performMove(originalItemFromDataSource, previousStatusKey, currentStatusKey, previousIndex, currentIndex, event.nativeEvent);\n }\n /**\n * Programmatically move an item to a different status or reorder within the same status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItem(itemId, targetStatusKey, targetIndex) {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const previousStatusKey = originalItem[statusKeyField];\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n // If target index is not provided, append to the end\n let currentIndex = targetIndex;\n if (currentIndex === undefined) {\n const targetStatusItems = this.items().filter((i) => i.statusKey === targetStatusKey);\n currentIndex = targetStatusItems.length;\n }\n // Perform the move\n return await this.performMove(originalItem, previousStatusKey, targetStatusKey, previousIndex, currentIndex, null);\n }\n /**\n * Programmatically reorder an item within the same status.\n * @param itemId The ID of the item to reorder (using keyField)\n * @param newIndex The new index position within the same status\n * @returns Promise<boolean> - true if the reorder was successful, false otherwise\n */\n async reorderItem(itemId, newIndex) {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const statusKey = originalItem[statusKeyField];\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n // Perform the move (same status, different index)\n return await this.performMove(originalItem, statusKey, statusKey, previousIndex, newIndex, null);\n }\n /**\n * Programmatically move an item to a different status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItemToStatus(itemId, targetStatusKey, targetIndex) {\n return await this.moveItem(itemId, targetStatusKey, targetIndex);\n }\n /**\n * Core method that performs the move operation, handles re-indexing, and emits events.\n * This is used by both drag-and-drop operations and programmatic moves.\n *\n * @param originalItem The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async performMove(originalItem, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent) {\n // --- 1. Emit beforeDrop event and check if drop should be canceled ---\n const shouldProceed = await this.emitBeforeDropEvent(originalItem, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent);\n if (!shouldProceed) {\n return false;\n }\n // --- 2. Use the `items` computed property as the source of truth for the operation ---\n // This is the CRUCIAL FIX. We operate on the data as it was rendered.\n const currentItemsState = structuredClone(this.items());\n // --- 3. Perform the move operation based on the scenario ---\n if (previousStatusKey === currentStatusKey) {\n // --- Scenario A: Reordering within the same list ---\n const list = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from the old position and insert into the new position\n const [movedItem] = list.splice(previousIndex, 1);\n list.splice(currentIndex, 0, movedItem);\n // Re-index only this modified list\n list.forEach((item, idx) => (item.index = idx));\n }\n else {\n // --- Scenario B: Moving to a different list ---\n const sourceList = currentItemsState.filter((i) => i.statusKey === previousStatusKey);\n const destList = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from source list\n const [movedItem] = sourceList.splice(previousIndex, 1);\n // Update its status and add to destination list\n movedItem.statusKey = currentStatusKey;\n destList.splice(currentIndex, 0, movedItem);\n // Re-index both affected lists\n sourceList.forEach((item, idx) => (item.index = idx));\n destList.forEach((item, idx) => (item.index = idx));\n }\n // --- 4. Map the changes back to a new version of the original dataSource ---\n // This preserves any extra properties the user might have on their data objects.\n const keyField = this.keyField();\n const statusKeyField = this.statusKeyField();\n const indexField = this.indexField();\n const updatedItemsMap = new Map(currentItemsState.map((i) => [i.id, i]));\n const finalDataSource = structuredClone(this.dataSource());\n finalDataSource.forEach((originalItem) => {\n const updatedItem = updatedItemsMap.get(originalItem[keyField]);\n if (updatedItem) {\n originalItem[indexField] = updatedItem.index;\n originalItem[statusKeyField] = updatedItem.statusKey;\n }\n });\n const movedItemId = originalItem[keyField];\n const finalOriginalItemFromDataSource = finalDataSource.find((item) => item[keyField] === movedItemId);\n // --- 5. Emit the final, comprehensive event ---\n this.onSortChanged.emit({\n sender: this,\n nativeEvent: nativeEvent,\n // The original data object that was moved\n item: finalOriginalItemFromDataSource,\n // The complete, precisely re-indexed data source, ready for state update\n allItems: finalDataSource,\n currentIndex,\n previousIndex,\n currentStatusKey,\n previousStatusKey,\n });\n return true;\n }\n /**\n * Emit beforeDrop event and return whether to continue with the drop operation.\n * Supports both synchronous and asynchronous event handlers.\n * @param item The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the drop should proceed, false if it should be canceled\n */\n async emitBeforeDropEvent(item, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent) {\n const beforeDropEvent = {\n sender: this,\n nativeEvent,\n item,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n canceled: false,\n };\n // Manually invoke handlers to collect and await promises from async handlers\n const outputRef = this.onBeforeDrop;\n const emitter = outputRef._emitRef?.() || outputRef.emitRef?.();\n const promises = [];\n if (emitter?.observers || emitter?._observers) {\n const observers = emitter.observers || emitter._observers || [];\n observers.forEach((observer) => {\n try {\n const result = observer.next?.(beforeDropEvent) || observer(beforeDropEvent);\n if (result instanceof Promise) {\n promises.push(result);\n }\n }\n catch (error) {\n console.error('Error in onBeforeDrop handler:', error);\n }\n });\n }\n else {\n // Fallback: emit normally\n this.onBeforeDrop.emit(beforeDropEvent);\n }\n // Wait for all async handlers to complete\n if (promises.length > 0) {\n await Promise.all(promises);\n }\n return !beforeDropEvent.canceled;\n }\n getItemsById(key) {\n return this.items().filter((e) => e.statusKey === key);\n }\n getOriginalItemsById(key) {\n return this.dataSource().filter((e) => e[this.statusKeyField()] === key);\n }\n stringify(value) {\n return JSON.stringify(value);\n }\n handleActionClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onActionClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n handleClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onItemClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n handleDblClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onItemDblClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n handleRightClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onItemRightClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: AXKanbanComponent, isStandalone: true, selector: \"ax-kanban\", inputs: { hasActions: { classPropertyName: \"hasActions\", publicName: \"hasActions\", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: \"dragStartDelay\", publicName: \"dragStartDelay\", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: \"statuses\", publicName: \"statuses\", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: \"keyField\", publicName: \"keyField\", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: \"indexField\", publicName: \"indexField\", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: \"titleField\", publicName: \"titleField\", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: \"cssClassField\", publicName: \"cssClassField\", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: \"priorityField\", publicName: \"priorityField\", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: \"statusKeyField\", publicName: \"statusKeyField\", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: \"descriptionField\", publicName: \"descriptionField\", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: \"headerTemplate\", publicName: \"headerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: \"footerTemplate\", publicName: \"footerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: \"contentFooterTemplate\", publicName: \"contentFooterTemplate\", isSignal: true, isRequired: false, transformFunction: null }, tooltipTemplate: { classPropertyName: \"tooltipTemplate\", publicName: \"tooltipTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBeforeDrop: \"onBeforeDrop\", onSortChanged: \"onSortChanged\", onItemClick: \"onItemClick\", onActionClick: \"onActionClick\", onItemDblClick: \"onItemDblClick\", onItemRightClick: \"onItemRightClick\" }, usesInheritance: true, ngImport: i0, template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n class=\\\"{{ item.cssClass }}\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ax-heading>\\n <ax-title>\\n <span class=\\\"ax-kanban-truncate\\\">{{ item.title }}</span>\\n @if (hasActions()) {\\n <ax-icon\\n class=\\\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\\\"\\n (click)=\\\"handleActionClick($event, item)\\\"\\n >\\n </ax-icon>\\n }\\n </ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXDragDirective, selector: \"[axDrag]\", inputs: [\"axDrag\", \"dragData\", \"dragDisabled\", \"dragTransition\", \"dragElementClone\", \"dropZoneGroup\", \"dragStartDelay\", \"dragResetOnDblClick\", \"dragLockAxis\", \"dragClonedTemplate\", \"dragCursor\", \"dragBoundary\", \"dragTransitionDuration\"], outputs: [\"dragPositionChanged\"] }, { kind: \"directive\", type: AXDropListDirective, selector: \"[axDropList]\", inputs: [\"axDropList\", \"sortingDisabled\", \"dropListGroup\", \"dropListOrientation\"], outputs: [\"dropListDropped\"], exportAs: [\"axDropList\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDecoratorHeadingComponent, selector: \"ax-heading\", inputs: [\"darkMode\", \"color\", \"weight\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXKanbanComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-kanban', encapsulation: ViewEncapsulation.None, imports: [\n NgClass,\n NgTemplateOutlet,\n AXDragDirective,\n AXDropListDirective,\n AXDecoratorGenericComponent,\n AXDecoratorHeadingComponent,\n AXDecoratorIconComponent,\n AXTooltipDirective,\n ], template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n class=\\\"{{ item.cssClass }}\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ax-heading>\\n <ax-title>\\n <span class=\\\"ax-kanban-truncate\\\">{{ item.title }}</span>\\n @if (hasActions()) {\\n <ax-icon\\n class=\\\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\\\"\\n (click)=\\\"handleActionClick($event, item)\\\"\\n >\\n </ax-icon>\\n }\\n </ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"] }]\n }], propDecorators: { hasActions: [{ type: i0.Input, args: [{ isSignal: true, alias: \"hasActions\", required: false }] }], dragStartDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dragStartDelay\", required: false }] }], statuses: [{ type: i0.Input, args: [{ isSignal: true, alias: \"statuses\", required: false }] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"itemTemplate\", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: false }] }], keyField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"keyField\", required: false }] }], indexField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"indexField\", required: false }] }], titleField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"titleField\", required: false }] }], cssClassField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"cssClassField\", required: false }] }], priorityField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"priorityField\", required: false }] }], statusKeyField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"statusKeyField\", required: false }] }], descriptionField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"descriptionField\", required: false }] }], emptyTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"emptyTemplate\", required: false }] }], headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"headerTemplate\", required: false }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"footerTemplate\", required: false }] }], contentFooterTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"contentFooterTemplate\", required: false }] }], tooltipTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tooltipTemplate\", required: false }] }], onBeforeDrop: [{ type: i0.Output, args: [\"onBeforeDrop\"] }], onSortChanged: [{ type: i0.Output, args: [\"onSortChanged\"] }], onItemClick: [{ type: i0.Output, args: [\"onItemClick\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }], onItemDblClick: [{ type: i0.Output, args: [\"onItemDblClick\"] }], onItemRightClick: [{ type: i0.Output, args: [\"onItemRightClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHdCQUF3QixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXlCbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUFoQmxEOztRQWlCRSxlQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssc0RBQUMsQ0FBQztRQUMxQixtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLDBEQUFDLENBQUM7UUFDMUIsYUFBUSxHQUFHLEtBQUssQ0FBbUIsRUFBRSxvREFBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxrRUFBd0IsQ0FBQztRQUM3QyxlQUFVLEdBQUcsS0FBSyxnRUFBMEIsQ0FBQztRQUU3QyxhQUFRLEdBQUcsS0FBSyxDQUFTLElBQUksb0RBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsS0FBSyxD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TSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckcsQ0FBQzsrR0EzWVUsaUJBQWlCO21HQUFqQixpQkFBaUIscXJGQ2xDOUIsbzNHQTBGQSxvdklEbEVJLE9BQU8sb0ZBQ1AsZ0JBQWdCLG9KQUNoQixlQUFlLHFVQUNmLG1CQUFtQixvTUFDbkIsMkJBQTJCLHlMQUMzQiwyQkFBMkIsZ0dBQzNCLHdCQUF3QixzRUFDeEIsa0JBQWtCOzs0RkFHVCxpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNFLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3dCQUMzQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjtxQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERyYWdEaXJlY3RpdmUsIEFYRHJvcExpc3REaXJlY3RpdmUsIEFYRHJvcExpc3REcm9wcGVkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICBBWERlY29yYXRvckhlYWRpbmdDb21wb25lbnQsXG4gIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYS2FuYmFuQmVmb3JlRHJvcEV2ZW50LFxuICBBWEthbmJhbkl0ZW0sXG4gIEFYS2FuYmFuTW91c2VFdmVudCxcbiAgQVhLYW5iYW5Tb3J0RXZlbnQsXG4gIEFYS2FuYmFuU3RhdHVzLFxufSBmcm9tICcuL2thbmJhbi5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWthbmJhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9rYW5iYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9rYW5iYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBBWERyYWdEaXJlY3RpdmUsXG4gICAgQVhEcm9wTGlzdERpcmVjdGl2ZSxcbiAgICBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JIZWFkaW5nQ29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgICBBWFRvb2x0aXBEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYS2FuYmFuQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBoYXNBY3Rpb25zID0gaW5wdXQoZmFsc2UpO1xuICBkcmFnU3RhcnREZWxheSA9IGlucHV0KDApO1xuICBzdGF0dXNlcyA9IGlucHV0PEFYS2FuYmFuU3RhdHVzW10+KFtdKTtcbiAgaXRlbVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dDxBWEthbmJhbkl0ZW1bXSB8IGFueVtdPigpO1xuXG4gIGtleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignaWQnKTtcbiAgaW5kZXhGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2luZGV4Jyk7XG4gIHRpdGxlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCd0aXRsZScpO1xuICBjc3NDbGFzc0ZpZWxkID0gaW5wdXQ8c3RyaW5nPignY3NzQ2xhc3MnKTtcbiAgcHJpb3JpdHlGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3ByaW9yaXR5Jyk7XG4gIHN0YXR1c0tleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignc3RhdHVzS2V5Jyk7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdkZXNjcmlwdGlvbicpO1xuICBlbXB0eVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGZvb3RlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGNvbnRlbnRGb290ZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xuICB0b29sdGlwVGVtcGxhdGUgPSBpbnB1dDxzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcblxuICBvbkJlZm9yZURyb3AgPSBvdXRwdXQ8QVhLYW5iYW5CZWZvcmVEcm9wRXZlbnQ+KCk7XG4gIG9uU29ydENoYW5nZWQgPSBvdXRwdXQ8QVhLYW5iYW5Tb3J0RXZlbnQ+KCk7XG4gIG9uSXRlbUNsaWNrID0gb3V0cHV0PEFYS2FuYmFuTW91c2VFdmVudD4oKTtcbiAgb25BY3Rpb25DbGljayA9IG91dHB1dDxBWEthbmJhbk1vdXNlRXZlbnQ+KCk7XG4gIG9uSXRlbURibENsaWNrID0gb3V0cHV0PEFYS2FuYmFuTW91c2VFdmVudD4oKTtcbiAgb25JdGVtUmlnaHRDbGljayA9IG91dHB1dDxBWEthbmJhbk1vdXNlRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGl0ZW1zID0gY29tcHV0ZWQ8QVhLYW5iYW5JdGVtW10+KCgpID0+IHtcbiAgICAvLyAuLi4geW91ciBleGNlbGxlbnQgZ2FwLWZpbGxpbmcgaW5kZXggbG9naWMgcmVtYWlucyB0aGUgc2FtZSAuLi5cbiAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkgfHwgW107XG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBkYXRhU291cmNlLm1hcDxBWEthbmJhbkl0ZW0+KChpdGVtOiBhbnkpID0+ICh7XG4gICAgICBpZDogaXRlbVt0aGlzLmtleUZpZWxkKCldLFxuICAgICAgaW5kZXg6IGl0ZW1bdGhpcy5pbmRleEZpZWxkKCldLFxuICAgICAgdGl0bGU6IGl0ZW1bdGhpcy50aXRsZUZpZWxkKCldLFxuICAgICAgY3NzQ2xhc3M6IGl0ZW1bdGhpcy5jc3NDbGFzc0ZpZWxkKCldLFxuICAgICAgcHJpb3JpdHk6IGl0ZW1bdGhpcy5wcmlvcml0eUZpZWxkKCldLFxuICAgICAgc3RhdHVzS2V5OiBpdGVtW3RoaXMuc3RhdHVzS2V5RmllbGQoKV0sXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbVt0aGlzLmRlc2NyaXB0aW9uRmllbGQoKV0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgaXRlbXNCeVN0YXR1cyA9IG5ldyBNYXA8YW55LCBBWEthbmJhbkl0ZW1bXT4oKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbWFwcGVkSXRlbXMpIHtcbiAgICAgIGlmICghaXRlbXNCeVN0YXR1cy5oYXMoaXRlbS5zdGF0dXNLZXkpKSB7XG4gICAgICAgIGl0ZW1zQnlTdGF0dXMuc2V0KGl0ZW0uc3RhdHVzS2V5LCBbXSk7XG4gICAgICB9XG4gICAgICBpdGVtc0J5U3RhdHVzLmdldChpdGVtLnN0YXR1c0tleSkucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbFByb2Nlc3NlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgaXRlbXNCeVN0YXR1cy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgY29ycmVjdGx5SW5kZXhlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgaXRlbXNUb0JlSW5kZXhlZDogQVhLYW5iYW5JdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHRha2VuSW5kaWNlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwKSB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbGlkSW5kZXggPSBpdGVtLmluZGV4ICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0uaW5kZXggPT09ICdudW1iZXInICYmICF0YWtlbkluZGljZXMuaGFzKGl0ZW0uaW5kZXgpO1xuICAgICAgICBpZiAoaGFzVmFsaWRJbmRleCkge1xuICAgICAgICAgIHRha2VuSW5kaWNlcy5hZGQoaXRlbS5pbmRleCk7XG4gICAgICAgICAgY29ycmVjdGx5SW5kZXhlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXNUb0JlSW5kZXhlZC5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVJbmRleGVkKSB7XG4gICAgICAgIHdoaWxlICh0YWtlbkluZGljZXMuaGFzKGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmluZGV4ID0gY3VycmVudEluZGV4O1xuICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb2Nlc3NlZEdyb3VwID0gWy4uLmNvcnJlY3RseUluZGV4ZWRJdGVtcywgLi4uaXRlbXNUb0JlSW5kZXhlZF07XG4gICAgICBwcm9jZXNzZWRHcm91cC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICBmaW5hbFByb2Nlc3NlZEl0ZW1zLnB1c2goLi4ucHJvY2Vzc2VkR3JvdXApO1xuICAgIH1cbiAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRJdGVtcztcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGZpbHRlcmVkU3RhdHVzZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1c2VzKCkuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpKTtcblxuICAvKipcbiAgICogSGFuZGxlcyBhIGRyb3Agb3BlcmF0aW9uIHRvIHJlb3JkZXIgaXRlbXMgb3IgbW92ZSB0aGVtIGJldHdlZW4gc3RhdHVzZXMuXG4gICAqIEl0IHVzZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnQgcmVuZGVyZWQgc3RhdGUgKGB0aGlzLml0ZW1zYCkgYXMgdGhlIHNvdXJjZVxuICAgKiBvZiB0cnV0aCwgcGVyZm9ybXMgcHJlY2lzZSByZS1pbmRleGluZywgYW5kIGVtaXRzIGEgY29tcHJlaGVuc2l2ZSBldmVudCB3aXRoXG4gICAqIHRoZSB1cGRhdGVkIGRhdGEgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgQVhEcm9wTGlzdERyb3BwZWRFdmVudCAtIFRoZSBkcmFnLWFuZC1kcm9wIGV2ZW50IGluY2x1ZGluZyBpbmRpY2VzIGFuZCBjb250YWluZXIgaW5mb3JtYXRpb24uXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cbiAgICovXG4gIGFzeW5jIGRyb3AoZXZlbnQ6IEFYRHJvcExpc3REcm9wcGVkRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGl0ZW06IGRyb3BwZWRJdGVtRGlyZWN0aXZlLCBjdXJyZW50SW5kZXgsIHByZXZpb3VzSW5kZXgsIGNvbnRhaW5lciwgcHJldmlvdXNDb250YWluZXIgfSA9IGV2ZW50O1xuXG4gICAgLy8gLS0tIDEuIEdldCBpZGVudGlmaWVycyBhbmQgdGhlIGl0ZW0ncyBvcmlnaW5hbCBkYXRhIC0tLVxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXNLZXkgPSBKU09OLnBhcnNlKGNvbnRhaW5lci5lbGVtZW50LmlkKTtcbiAgICBjb25zdCBwcmV2aW91c1N0YXR1c0tleSA9IEpTT04ucGFyc2UocHJldmlvdXNDb250YWluZXIuZWxlbWVudC5pZCk7XG4gICAgY29uc3QgbW92ZWRJdGVtT3JpZ2luYWxEYXRhID0gZHJvcHBlZEl0ZW1EaXJlY3RpdmUuZHJhZ0RhdGEoKSBhcyBBWEthbmJhbkl0ZW07XG5cbiAgICBpZiAoIW1vdmVkSXRlbU9yaWdpbmFsRGF0YSkge1xuICAgICAgY29uc29sZS53YXJuKCdBWEthbmJhbjogRHJhZ2dlZCBpdGVtIGhhcyBubyBbZHJhZ0RhdGFdLiBTb3J0IGV2ZW50IGNhbm5vdCBiZSBlbWl0dGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIC0tLSAyLiBHZXQgdGhlIG9yaWdpbmFsIGl0ZW0gZnJvbSBkYXRhU291cmNlIC0tLVxuICAgIGNvbnN0IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkuZmluZChcbiAgICAgIChpdGVtKSA9PiBpdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IG1vdmVkSXRlbU9yaWdpbmFsRGF0YS5pZCxcbiAgICApO1xuXG4gICAgaWYgKCFvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSkge1xuICAgICAgY29uc29sZS53YXJuKCdBWEthbmJhbjogSXRlbSBub3QgZm91bmQgaW4gZGF0YVNvdXJjZS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAtLS0gMy4gUGVyZm9ybSB0aGUgbW92ZSBvcGVyYXRpb24gLS0tXG4gICAgYXdhaXQgdGhpcy5wZXJmb3JtTW92ZShcbiAgICAgIG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlLFxuICAgICAgcHJldmlvdXNTdGF0dXNLZXksXG4gICAgICBjdXJyZW50U3RhdHVzS2V5LFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIGN1cnJlbnRJbmRleCxcbiAgICAgIGV2ZW50Lm5hdGl2ZUV2ZW50LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSBtb3ZlIGFuIGl0ZW0gdG8gYSBkaWZmZXJlbnQgc3RhdHVzIG9yIHJlb3JkZXIgd2l0aGluIHRoZSBzYW1lIHN0YXR1cy5cbiAgICogQHBhcmFtIGl0ZW1JZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gbW92ZSAodXNpbmcga2V5RmllbGQpXG4gICAqIEBwYXJhbSB0YXJnZXRTdGF0dXNLZXkgVGhlIHRhcmdldCBzdGF0dXMga2V5IHRvIG1vdmUgdGhlIGl0ZW0gdG9cbiAgICogQHBhcmFtIHRhcmdldEluZGV4IE9wdGlvbmFsIHRhcmdldCBpbmRleCB3aXRoaW4gdGhlIHRhcmdldCBzdGF0dXMuIElmIG5vdCBwcm92aWRlZCwgaXRlbSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj4gLSB0cnVlIGlmIHRoZSBtb3ZlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGFzeW5jIG1vdmVJdGVtKGl0ZW1JZDogYW55LCB0YXJnZXRTdGF0dXNLZXk6IGFueSwgdGFyZ2V0SW5kZXg/OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBrZXlGaWVsZCA9IHRoaXMua2V5RmllbGQoKTtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gaXRlbUlkKTtcblxuICAgIGlmICghb3JpZ2luYWxJdGVtKSB7XG4gICAgICBjb25zb2xlLndhcm4oYEFYS2FuYmFuOiBJdGVtIHdpdGggaWQgXCIke2l0ZW1JZH1cIiBub3QgZm91bmQgaW4gZGF0YVNvdXJjZS5gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBHZXQgY3VycmVudCBzdGF0dXMgZnJvbSBkYXRhU291cmNlXG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3QgcHJldmlvdXNTdGF0dXNLZXkgPSBvcmlnaW5hbEl0ZW1bc3RhdHVzS2V5RmllbGRdO1xuXG4gICAgLy8gR2V0IGN1cnJlbnQgaW5kZXggZnJvbSB0aGUgY29tcHV0ZWQgaXRlbXMgc3RhdGUgKG1vcmUgYWNjdXJhdGUgdGhhbiBkYXRhU291cmNlIGZpZWxkKVxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5pdGVtcygpLmZpbmQoKGkpID0+IGkuaWQgPT09IGl0ZW1JZCk7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGN1cnJlbnRJdGVtPy5pbmRleCA/PyAwO1xuXG4gICAgLy8gSWYgdGFyZ2V0IGluZGV4IGlzIG5vdCBwcm92aWRlZCwgYXBwZW5kIHRvIHRoZSBlbmRcbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGFyZ2V0SW5kZXg7XG4gICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0YXJnZXRTdGF0dXNJdGVtcyA9IHRoaXMuaXRlbXMoKS5maWx0ZXIoKGkpID0+IGkuc3RhdHVzS2V5ID09PSB0YXJnZXRTdGF0dXNLZXkpO1xuICAgICAgY3VycmVudEluZGV4ID0gdGFyZ2V0U3RhdHVzSXRlbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gdGhlIG1vdmVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJmb3JtTW92ZShvcmlnaW5hbEl0ZW0sIHByZXZpb3VzU3RhdHVzS2V5LCB0YXJnZXRTdGF0dXNLZXksIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSByZW9yZGVyIGFuIGl0ZW0gd2l0aGluIHRoZSBzYW1lIHN0YXR1cy5cbiAgICogQHBhcmFtIGl0ZW1JZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVvcmRlciAodXNpbmcga2V5RmllbGQpXG4gICAqIEBwYXJhbSBuZXdJbmRleCBUaGUgbmV3IGluZGV4IHBvc2l0aW9uIHdpdGhpbiB0aGUgc2FtZSBzdGF0dXNcbiAgICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPiAtIHRydWUgaWYgdGhlIHJlb3JkZXIgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYXN5bmMgcmVvcmRlckl0ZW0oaXRlbUlkOiBhbnksIG5ld0luZGV4OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBrZXlGaWVsZCA9IHRoaXMua2V5RmllbGQoKTtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gaXRlbUlkKTtcblxuICAgIGlmICghb3JpZ2luYWxJdGVtKSB7XG4gICAgICBjb25zb2xlLndhcm4oYEFYS2FuYmFuOiBJdGVtIHdpdGggaWQgXCIke2l0ZW1JZH1cIiBub3QgZm91bmQgaW4gZGF0YVNvdXJjZS5gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBHZXQgY3VycmVudCBzdGF0dXMgZnJvbSBkYXRhU291cmNlXG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3Qgc3RhdHVzS2V5ID0gb3JpZ2luYWxJdGVtW3N0YXR1c0tleUZpZWxkXTtcblxuICAgIC8vIEdldCBjdXJyZW50IGluZGV4IGZyb20gdGhlIGNvbXB1dGVkIGl0ZW1zIHN0YXRlIChtb3JlIGFjY3VyYXRlIHRoYW4gZGF0YVNvdXJjZSBmaWVsZClcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaXRlbXMoKS5maW5kKChpKSA9PiBpLmlkID09PSBpdGVtSWQpO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBjdXJyZW50SXRlbT8uaW5kZXggPz8gMDtcblxuICAgIC8vIFBlcmZvcm0gdGhlIG1vdmUgKHNhbWUgc3RhdHVzLCBkaWZmZXJlbnQgaW5kZXgpXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucGVyZm9ybU1vdmUob3JpZ2luYWxJdGVtLCBzdGF0dXNLZXksIHN0YXR1c0tleSwgcHJldmlvdXNJbmRleCwgbmV3SW5kZXgsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2dyYW1tYXRpY2FsbHkgbW92ZSBhbiBpdGVtIHRvIGEgZGlmZmVyZW50IHN0YXR1cy5cbiAgICogQHBhcmFtIGl0ZW1JZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gbW92ZSAodXNpbmcga2V5RmllbGQpXG4gICAqIEBwYXJhbSB0YXJnZXRTdGF0dXNLZXkgVGhlIHRhcmdldCBzdGF0dXMga2V5IHRvIG1vdmUgdGhlIGl0ZW0gdG9cbiAgICogQHBhcmFtIHRhcmdldEluZGV4IE9wdGlvbmFsIHRhcmdldCBpbmRleCB3aXRoaW4gdGhlIHRhcmdldCBzdGF0dXMuIElmIG5vdCBwcm92aWRlZCwgaXRlbSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj4gLSB0cnVlIGlmIHRoZSBtb3ZlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGFzeW5jIG1vdmVJdGVtVG9TdGF0dXMoaXRlbUlkOiBhbnksIHRhcmdldFN0YXR1c0tleTogYW55LCB0YXJnZXRJbmRleD86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm1vdmVJdGVtKGl0ZW1JZCwgdGFyZ2V0U3RhdHVzS2V5LCB0YXJnZXRJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQ29yZSBtZXRob2QgdGhhdCBwZXJmb3JtcyB0aGUgbW92ZSBvcGVyYXRpb24sIGhhbmRsZXMgcmUtaW5kZXhpbmcsIGFuZCBlbWl0cyBldmVudHMuXG4gICAqIFRoaXMgaXMgdXNlZCBieSBib3RoIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9ucyBhbmQgcHJvZ3JhbW1hdGljIG1vdmVzLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxJdGVtIFRoZSBvcmlnaW5hbCBpdGVtIGZyb20gZGF0YVNvdXJjZSB0aGF0IGlzIGJlaW5nIG1vdmVkXG4gICAqIEBwYXJhbSBwcmV2aW91c1N0YXR1c0tleSBUaGUgc3RhdHVzIGtleSB0aGUgaXRlbSBpcyBtb3ZpbmcgZnJvbVxuICAgKiBAcGFyYW0gY3VycmVudFN0YXR1c0tleSBUaGUgc3RhdHVzIGtleSB0aGUgaXRlbSBpcyBtb3ZpbmcgdG9cbiAgICogQHBhcmFtIHByZXZpb3VzSW5kZXggVGhlIGluZGV4IHRoZSBpdGVtIGlzIG1vdmluZyBmcm9tXG4gICAqIEBwYXJhbSBjdXJyZW50SW5kZXggVGhlIGluZGV4IHRoZSBpdGVtIGlzIG1vdmluZyB0b1xuICAgKiBAcGFyYW0gbmF0aXZlRXZlbnQgVGhlIG5hdGl2ZSBtb3VzZSBldmVudCAobnVsbCBmb3IgcHJvZ3JhbW1hdGljIG1vdmVzKVxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gdHJ1ZSBpZiB0aGUgbW92ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBlcmZvcm1Nb3ZlKFxuICAgIG9yaWdpbmFsSXRlbTogYW55LFxuICAgIHByZXZpb3VzU3RhdHVzS2V5OiBhbnksXG4gICAgY3VycmVudFN0YXR1c0tleTogYW55LFxuICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcixcbiAgICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgICBuYXRpdmVFdmVudDogTW91c2VFdmVudCB8IG51bGwsXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIC0tLSAxLiBFbWl0IGJlZm9yZURyb3AgZXZlbnQgYW5kIGNoZWNrIGlmIGRyb3Agc2hvdWxkIGJlIGNhbmNlbGVkIC0tLVxuICAgIGNvbnN0IHNob3VsZFByb2NlZWQgPSBhd2FpdCB0aGlzLmVtaXRCZWZvcmVEcm9wRXZlbnQoXG4gICAgICBvcmlnaW5hbEl0ZW0sXG4gICAgICBwcmV2aW91c1N0YXR1c0tleSxcbiAgICAgIGN1cnJlbnRTdGF0dXNLZXksXG4gICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgY3VycmVudEluZGV4LFxuICAgICAgbmF0aXZlRXZlbnQsXG4gICAgKTtcbiAgICBpZiAoIXNob3VsZFByb2NlZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAtLS0gMi4gVXNlIHRoZSBgaXRlbXNgIGNvbXB1dGVkIHByb3BlcnR5IGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBvcGVyYXRpb24gLS0tXG4gICAgLy8gVGhpcyBpcyB0aGUgQ1JVQ0lBTCBGSVguIFdlIG9wZXJhdGUgb24gdGhlIGRhdGEgYXMgaXQgd2FzIHJlbmRlcmVkLlxuICAgIGNvbnN0IGN1cnJlbnRJdGVtc1N0YXRlID0gc3RydWN0dXJlZENsb25lKHRoaXMuaXRlbXMoKSk7XG5cbiAgICAvLyAtLS0gMy4gUGVyZm9ybSB0aGUgbW92ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHNjZW5hcmlvIC0tLVxuICAgIGlmIChwcmV2aW91c1N0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSkge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEE6IFJlb3JkZXJpbmcgd2l0aGluIHRoZSBzYW1lIGxpc3QgLS0tXG4gICAgICBjb25zdCBsaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBvbGQgcG9zaXRpb24gYW5kIGluc2VydCBpbnRvIHRoZSBuZXcgcG9zaXRpb25cbiAgICAgIGNvbnN0IFttb3ZlZEl0ZW1dID0gbGlzdC5zcGxpY2UocHJldmlvdXNJbmRleCwgMSk7XG4gICAgICBsaXN0LnNwbGljZShjdXJyZW50SW5kZXgsIDAsIG1vdmVkSXRlbSk7XG5cbiAgICAgIC8vIFJlLWluZGV4IG9ubHkgdGhpcyBtb2RpZmllZCBsaXN0XG4gICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGlkeCkgPT4gKGl0ZW0uaW5kZXggPSBpZHgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEI6IE1vdmluZyB0byBhIGRpZmZlcmVudCBsaXN0IC0tLVxuICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGN1cnJlbnRJdGVtc1N0YXRlLmZpbHRlcigoaSkgPT4gaS5zdGF0dXNLZXkgPT09IHByZXZpb3VzU3RhdHVzS2V5KTtcbiAgICAgIGNvbnN0IGRlc3RMaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHNvdXJjZSBsaXN0XG4gICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IHNvdXJjZUxpc3Quc3BsaWNlKHByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAvLyBVcGRhdGUgaXRzIHN0YXR1cyBhbmQgYWRkIHRvIGRlc3RpbmF0aW9uIGxpc3RcbiAgICAgIG1vdmVkSXRlbS5zdGF0dXNLZXkgPSBjdXJyZW50U3RhdHVzS2V5O1xuICAgICAgZGVzdExpc3Quc3BsaWNlKGN1cnJlbnRJbmRleCwgMCwgbW92ZWRJdGVtKTtcblxuICAgICAgLy8gUmUtaW5kZXggYm90aCBhZmZlY3RlZCBsaXN0c1xuICAgICAgc291cmNlTGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgICBkZXN0TGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgfVxuXG4gICAgLy8gLS0tIDQuIE1hcCB0aGUgY2hhbmdlcyBiYWNrIHRvIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9yaWdpbmFsIGRhdGFTb3VyY2UgLS0tXG4gICAgLy8gVGhpcyBwcmVzZXJ2ZXMgYW55IGV4dHJhIHByb3BlcnRpZXMgdGhlIHVzZXIgbWlnaHQgaGF2ZSBvbiB0aGVpciBkYXRhIG9iamVjdHMuXG4gICAgY29uc3Qga2V5RmllbGQgPSB0aGlzLmtleUZpZWxkKCk7XG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3QgaW5kZXhGaWVsZCA9IHRoaXMuaW5kZXhGaWVsZCgpO1xuXG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zTWFwID0gbmV3IE1hcChjdXJyZW50SXRlbXNTdGF0ZS5tYXAoKGkpID0+IFtpLmlkLCBpXSkpO1xuICAgIGNvbnN0IGZpbmFsRGF0YVNvdXJjZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTb3VyY2UoKSk7XG5cbiAgICBmaW5hbERhdGFTb3VyY2UuZm9yRWFjaCgob3JpZ2luYWxJdGVtKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkSXRlbSA9IHVwZGF0ZWRJdGVtc01hcC5nZXQob3JpZ2luYWxJdGVtW2tleUZpZWxkXSk7XG4gICAgICBpZiAodXBkYXRlZEl0ZW0pIHtcbiAgICAgICAgb3JpZ2luYWxJdGVtW2luZGV4RmllbGRdID0gdXBkYXRlZEl0ZW0uaW5kZXg7XG4gICAgICAgIG9yaWdpbmFsSXRlbVtzdGF0dXNLZXlGaWVsZF0gPSB1cGRhdGVkSXRlbS5zdGF0dXNLZXk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBtb3ZlZEl0ZW1JZCA9IG9yaWdpbmFsSXRlbVtrZXlGaWVsZF07XG4gICAgY29uc3QgZmluYWxPcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSA9IGZpbmFsRGF0YVNvdXJjZS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gbW92ZWRJdGVtSWQpO1xuXG4gICAgLy8gLS0tIDUuIEVtaXQgdGhlIGZpbmFsLCBjb21wcmVoZW5zaXZlIGV2ZW50IC0tLVxuICAgIHRoaXMub25Tb3J0Q2hhbmdlZC5lbWl0KHtcbiAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgIG5hdGl2ZUV2ZW50OiBuYXRpdmVFdmVudCxcbiAgICAgIC8vIFRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCB0aGF0IHdhcyBtb3ZlZFxuICAgICAgaXRlbTogZmluYWxPcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSxcbiAgICAgIC8vIFRoZSBjb21wbGV0ZSwgcHJlY2lzZWx5IHJlLWluZGV4ZWQgZGF0YSBzb3VyY2UsIHJlYWR5IGZvciBzdGF0ZSB1cGRhdGVcbiAgICAgIGFsbEl0ZW1zOiBmaW5hbERhdGFTb3VyY2UsXG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgY3VycmVudFN0YXR1c0tleSxcbiAgICAgIHByZXZpb3VzU3RhdHVzS2V5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBiZWZvcmVEcm9wIGV2ZW50IGFuZCByZXR1cm4gd2hldGhlciB0byBjb250aW51ZSB3aXRoIHRoZSBkcm9wIG9wZXJhdGlvbi5cbiAgICogU3VwcG9ydHMgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgb3JpZ2luYWwgaXRlbSBmcm9tIGRhdGFTb3VyY2UgdGhhdCBpcyBiZWluZyBtb3ZlZFxuICAgKiBAcGFyYW0gcHJldmlvdXNTdGF0dXNLZXkgVGhlIHN0YXR1cyBrZXkgdGhlIGl0ZW0gaXMgbW92aW5nIGZyb21cbiAgICogQHBhcmFtIGN1cnJlbnRTdGF0dXNLZXkgVGhlIHN0YXR1cyBrZXkgdGhlIGl0ZW0gaXMgbW92aW5nIHRvXG4gICAqIEBwYXJhbSBwcmV2aW91c0luZGV4IFRoZSBpbmRleCB0aGUgaXRlbSBpcyBtb3ZpbmcgZnJvbVxuICAgKiBAcGFyYW0gY3VycmVudEluZGV4IFRoZSBpbmRleCB0aGUgaXRlbSBpcyBtb3ZpbmcgdG9cbiAgICogQHBhcmFtIG5hdGl2ZUV2ZW50IFRoZSBuYXRpdmUgbW91c2UgZXZlbnQgKG51bGwgZm9yIHByb2dyYW1tYXRpYyBtb3ZlcylcbiAgICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPiAtIHRydWUgaWYgdGhlIGRyb3Agc2hvdWxkIHByb2NlZWQsIGZhbHNlIGlmIGl0IHNob3VsZCBiZSBjYW5jZWxlZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBlbWl0QmVmb3JlRHJvcEV2ZW50KFxuICAgIGl0ZW06IGFueSxcbiAgICBwcmV2aW91c1N0YXR1c0tleTogYW55LFxuICAgIGN1cnJlbnRTdGF0dXNLZXk6IGFueSxcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgbmF0aXZlRXZlbnQ6IE1vdXNlRXZlbnQgfCBudWxsLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBiZWZvcmVEcm9wRXZlbnQ6IEFYS2FuYmFuQmVmb3JlRHJvcEV2ZW50ID0ge1xuICAgICAgc2VuZGVyOiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICBpdGVtLFxuICAgICAgcHJldmlvdXNTdGF0dXNLZXksXG4gICAgICBjdXJyZW50U3RhdHVzS2V5LFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIGN1cnJlbnRJbmRleCxcbiAgICAgIGNhbmNlbGVkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gTWFudWFsbHkgaW52b2tlIGhhbmRsZXJzIHRvIGNvbGxlY3QgYW5kIGF3YWl0IHByb21pc2VzIGZyb20gYXN5bmMgaGFuZGxlcnNcbiAgICBjb25zdCBvdXRwdXRSZWYgPSB0aGlzLm9uQmVmb3JlRHJvcCBhcyBhbnk7XG4gICAgY29uc3QgZW1pdHRlciA9IG91dHB1dFJlZi5fZW1pdFJlZj8uKCkgfHwgb3V0cHV0UmVmLmVtaXRSZWY/LigpO1xuICAgIGNvbnN0IHByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcblxuICAgIGlmIChlbWl0dGVyPy5vYnNlcnZlcnMgfHwgZW1pdHRlcj8uX29ic2VydmVycykge1xuICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gZW1pdHRlci5vYnNlcnZlcnMgfHwgZW1pdHRlci5fb2JzZXJ2ZXJzIHx8IFtdO1xuICAgICAgb2JzZXJ2ZXJzLmZvckVhY2goKG9ic2VydmVyOiBhbnkpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBvYnNlcnZlci5uZXh0Py4oYmVmb3JlRHJvcEV2ZW50KSB8fCBvYnNlcnZlcihiZWZvcmVEcm9wRXZlbnQpO1xuICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIG9uQmVmb3JlRHJvcCBoYW5kbGVyOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZhbGxiYWNrOiBlbWl0IG5vcm1hbGx5XG4gICAgICB0aGlzLm9uQmVmb3JlRHJvcC5lbWl0KGJlZm9yZURyb3BFdmVudCk7XG4gICAgfVxuXG4gICAgLy8gV2FpdCBmb3IgYWxsIGFzeW5jIGhhbmRsZXJzIHRvIGNvbXBsZXRlXG4gICAgaWYgKHByb21pc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWJlZm9yZURyb3BFdmVudC5jYW5jZWxlZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtc0J5SWQoa2V5OiBhbnkpOiBBWEthbmJhbkl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKS5maWx0ZXIoKGUpID0+IGUuc3RhdHVzS2V5ID09PSBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE9yaWdpbmFsSXRlbXNCeUlkKGtleTogYW55KTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UoKS5maWx0ZXIoKGUpID0+IGVbdGhpcy5zdGF0dXNLZXlGaWVsZCgpXSA9PT0ga2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdHJpbmdpZnkodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBY3Rpb25DbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogQVhLYW5iYW5JdGVtKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKFxuICAgICAgKG9yaWdpbmFsSXRlbSkgPT4gb3JpZ2luYWxJdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IGl0ZW0uaWQsXG4gICAgKTtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW06IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlLCBuYXRpdmVFdmVudDogZXZlbnQsIHNlbmRlcjogdGhpcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogQVhLYW5iYW5JdGVtKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKFxuICAgICAgKG9yaWdpbmFsSXRlbSkgPT4gb3JpZ2luYWxJdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IGl0ZW0uaWQsXG4gICAgKTtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoeyBpdGVtOiBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSwgbmF0aXZlRXZlbnQ6IGV2ZW50LCBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEFYS2FuYmFuSXRlbSkge1xuICAgIGNvbnN0IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkuZmluZChcbiAgICAgIChvcmlnaW5hbEl0ZW0pID0+IG9yaWdpbmFsSXRlbVt0aGlzLmtleUZpZWxkKCldID09PSBpdGVtLmlkLFxuICAgICk7XG4gICAgdGhpcy5vbkl0ZW1EYmxDbGljay5lbWl0KHsgaXRlbTogb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UsIG5hdGl2ZUV2ZW50OiBldmVudCwgc2VuZGVyOiB0aGlzIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IEFYS2FuYmFuSXRlbSkge1xuICAgIGNvbnN0IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkuZmluZChcbiAgICAgIChvcmlnaW5hbEl0ZW0pID0+IG9yaWdpbmFsSXRlbVt0aGlzLmtleUZpZWxkKCldID09PSBpdGVtLmlkLFxuICAgICk7XG4gICAgdGhpcy5vbkl0ZW1SaWdodENsaWNrLmVtaXQoeyBpdGVtOiBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSwgbmF0aXZlRXZlbnQ6IGV2ZW50LCBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cbn1cbiIsIkBmb3IgKHN0YXR1cyBvZiBmaWx0ZXJlZFN0YXR1c2VzKCk7IHRyYWNrIHN0YXR1cy5rZXkpIHtcbiAgPGRpdiBjbGFzcz1cImF4LWthbmJhbi1zdGF0dXMge3sgc3RhdHVzLmNzc0NsYXNzIH19XCI+XG4gICAgPGF4LWhlYWRlcj5cbiAgICAgIEBpZiAoaGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGUoKVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBzdGF0dXMgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8YXgtdGl0bGU+e3sgc3RhdHVzLnRpdGxlIH19PC9heC10aXRsZT5cbiAgICAgIH1cbiAgICA8L2F4LWhlYWRlcj5cbiAgICA8YXgtY29udGVudCBheERyb3BMaXN0IGRyb3BMaXN0R3JvdXA9XCJrYW5iYW5cIiBbaWRdPVwic3RyaW5naWZ5KHN0YXR1cy5rZXkpXCIgKGRyb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSgpICYmIGdldE9yaWdpbmFsSXRlbXNCeUlkKHN0YXR1cy5rZXkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtVGVtcGxhdGUoKSkge1xuICAgICAgICBAZm9yIChpdGVtIG9mIGdldE9yaWdpbmFsSXRlbXNCeUlkKHN0YXR1cy5rZXkpOyB0cmFjayBpdGVtW2tleUZpZWxkKCldKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgYXhEcmFnXG4gICAgICAgICAgICBbZHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGl0ZW0uY3NzQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW2RyYWdTdGFydERlbGF5XT1cImRyYWdTdGFydERlbGF5KClcIlxuICAgICAgICAgICAgW2F4VG9vbHRpcERpc2FibGVkXT1cInRvb2x0aXBUZW1wbGF0ZSgpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgIFtheFRvb2x0aXBdPVwidG9vbHRpcFRlbXBsYXRlKClcIlxuICAgICAgICAgICAgW2F4VG9vbHRpcENvbnRleHRdPVwiaXRlbVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAoZGJsY2xpY2spPVwiaGFuZGxlRGJsQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAoY29udGV4dG1lbnUpPVwiaGFuZGxlUmlnaHRDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGZvciAoaXRlbSBvZiBnZXRJdGVtc0J5SWQoc3RhdHVzLmtleSk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBheERyYWdcbiAgICAgICAgICAgIFtkcmFnRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgIFtkcmFnQ3Vyc29yXT1cIidncmFiJ1wiXG4gICAgICAgICAgICBbZHJhZ1N0YXJ0RGVsYXldPVwiZHJhZ1N0YXJ0RGVsYXkoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWthbmJhbi1pdGVtICB7eyBpdGVtLmNzc0NsYXNzIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImBheC1rYW5iYW4tJHtpdGVtLnByaW9yaXR5ID8/ICdwcmltYXJ5J30tcGVyaW9yaXR5YFwiXG4gICAgICAgICAgICBbYXhUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcFRlbXBsYXRlKCkgPyBmYWxzZSA6IHRydWVcIlxuICAgICAgICAgICAgW2F4VG9vbHRpcF09XCJ0b29sdGlwVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbYXhUb29sdGlwQ29udGV4dF09XCJpdGVtXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJoYW5kbGVEYmxDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJoYW5kbGVSaWdodENsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1oZWFkaW5nPlxuICAgICAgICAgICAgICA8YXgtdGl0bGU+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1rYW5iYW4tdHJ1bmNhdGVcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoaGFzQWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1tb3JlLWhvcml6b250YWwgYXgta2FuYmFuLWFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9heC10aXRsZT5cbiAgICAgICAgICAgICAgPGF4LXN1YnRpdGxlPnt7IGl0ZW0uZGVzY3JpcHRpb24gfX08L2F4LXN1YnRpdGxlPlxuICAgICAgICAgICAgPC9heC1oZWFkaW5nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaWYgKGNvbnRlbnRGb290ZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxheC1mb290ZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudEZvb3RlclRlbXBsYXRlKClcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBzdGF0dXMgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2F4LWZvb3Rlcj5cbiAgICAgIH1cbiAgICA8L2F4LWNvbnRlbnQ+XG4gICAgQGlmIChmb290ZXJUZW1wbGF0ZSgpKSB7XG4gICAgICA8YXgtZm9vdGVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGUoKVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBzdGF0dXMgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXgtZm9vdGVyPlxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMta2FuYmFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9rYW5iYW4vc3JjL2Fjb3JleC1jb21wb25lbnRzLWthbmJhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-kanban.mjs","sources":["../tmp-esm2022/kanban/lib/kanban.component.js","../tmp-esm2022/kanban/acorex-components-kanban.js"],"sourcesContent":["import { NXComponent } from '@acorex/cdk/common';\nimport { AXDragDirective, AXDropListDirective } from '@acorex/cdk/drag-drop';\nimport { AXDecoratorGenericComponent, AXDecoratorHeadingComponent, AXDecoratorIconComponent, } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXKanbanComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.hasActions = input(false, ...(ngDevMode ? [{ debugName: \"hasActions\" }] : []));\n this.dragStartDelay = input(0, ...(ngDevMode ? [{ debugName: \"dragStartDelay\" }] : []));\n this.statuses = input([], ...(ngDevMode ? [{ debugName: \"statuses\" }] : []));\n this.itemTemplate = input(...(ngDevMode ? [undefined, { debugName: \"itemTemplate\" }] : []));\n this.dataSource = input(...(ngDevMode ? [undefined, { debugName: \"dataSource\" }] : []));\n this.keyField = input('id', ...(ngDevMode ? [{ debugName: \"keyField\" }] : []));\n this.indexField = input('index', ...(ngDevMode ? [{ debugName: \"indexField\" }] : []));\n this.titleField = input('title', ...(ngDevMode ? [{ debugName: \"titleField\" }] : []));\n this.cssClassField = input('cssClass', ...(ngDevMode ? [{ debugName: \"cssClassField\" }] : []));\n this.priorityField = input('priority', ...(ngDevMode ? [{ debugName: \"priorityField\" }] : []));\n this.statusKeyField = input('statusKey', ...(ngDevMode ? [{ debugName: \"statusKeyField\" }] : []));\n this.descriptionField = input('description', ...(ngDevMode ? [{ debugName: \"descriptionField\" }] : []));\n this.emptyTemplate = input(...(ngDevMode ? [undefined, { debugName: \"emptyTemplate\" }] : []));\n this.headerTemplate = input(...(ngDevMode ? [undefined, { debugName: \"headerTemplate\" }] : []));\n this.footerTemplate = input(...(ngDevMode ? [undefined, { debugName: \"footerTemplate\" }] : []));\n this.contentFooterTemplate = input(...(ngDevMode ? [undefined, { debugName: \"contentFooterTemplate\" }] : []));\n this.tooltipTemplate = input(...(ngDevMode ? [undefined, { debugName: \"tooltipTemplate\" }] : []));\n this.onBeforeDrop = output();\n this.onSortChanged = output();\n this.onItemClick = output();\n this.onActionClick = output();\n this.onItemDblClick = output();\n this.onItemRightClick = output();\n this.items = computed(() => {\n // ... your excellent gap-filling index logic remains the same ...\n const dataSource = this.dataSource() || [];\n const mappedItems = dataSource.map((item) => ({\n id: item[this.keyField()],\n index: item[this.indexField()],\n title: item[this.titleField()],\n cssClass: item[this.cssClassField()],\n priority: item[this.priorityField()],\n statusKey: item[this.statusKeyField()],\n description: item[this.descriptionField()],\n }));\n const itemsByStatus = new Map();\n for (const item of mappedItems) {\n if (!itemsByStatus.has(item.statusKey)) {\n itemsByStatus.set(item.statusKey, []);\n }\n itemsByStatus.get(item.statusKey).push(item);\n }\n const finalProcessedItems = [];\n for (const group of itemsByStatus.values()) {\n const correctlyIndexedItems = [];\n const itemsToBeIndexed = [];\n const takenIndices = new Set();\n for (const item of group) {\n const hasValidIndex = item.index != null && typeof item.index === 'number' && !takenIndices.has(item.index);\n if (hasValidIndex) {\n takenIndices.add(item.index);\n correctlyIndexedItems.push(item);\n }\n else {\n itemsToBeIndexed.push(item);\n }\n }\n let currentIndex = 0;\n for (const item of itemsToBeIndexed) {\n while (takenIndices.has(currentIndex)) {\n currentIndex++;\n }\n item.index = currentIndex;\n currentIndex++;\n }\n const processedGroup = [...correctlyIndexedItems, ...itemsToBeIndexed];\n processedGroup.sort((a, b) => a.index - b.index);\n finalProcessedItems.push(...processedGroup);\n }\n return finalProcessedItems;\n }, ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.filteredStatuses = computed(() => this.statuses().sort((a, b) => a.index - b.index), ...(ngDevMode ? [{ debugName: \"filteredStatuses\" }] : []));\n }\n /**\n * Handles a drop operation to reorder items or move them between statuses.\n * It uses the component's current rendered state (`this.items`) as the source\n * of truth, performs precise re-indexing, and emits a comprehensive event with\n * the updated data source.\n *\n * @param event AXDropListDroppedEvent - The drag-and-drop event including indices and container information.\n * @returns Promise<void>\n */\n async drop(event) {\n const { item: droppedItemDirective, currentIndex, previousIndex, container, previousContainer } = event;\n // --- 1. Get identifiers and the item's original data ---\n const currentStatusKey = JSON.parse(container.element.id);\n const previousStatusKey = JSON.parse(previousContainer.element.id);\n const movedItemOriginalData = droppedItemDirective.dragData();\n if (!movedItemOriginalData) {\n console.warn('AXKanban: Dragged item has no [dragData]. Sort event cannot be emitted.');\n return;\n }\n // --- 2. Get the original item from dataSource ---\n const originalItemFromDataSource = this.dataSource().find((item) => item[this.keyField()] === movedItemOriginalData.id);\n if (!originalItemFromDataSource) {\n console.warn('AXKanban: Item not found in dataSource.');\n return;\n }\n // --- 3. Perform the move operation ---\n await this.performMove(originalItemFromDataSource, previousStatusKey, currentStatusKey, previousIndex, currentIndex, event.nativeEvent);\n }\n /**\n * Programmatically move an item to a different status or reorder within the same status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItem(itemId, targetStatusKey, targetIndex) {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const previousStatusKey = originalItem[statusKeyField];\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n // If target index is not provided, append to the end\n let currentIndex = targetIndex;\n if (currentIndex === undefined) {\n const targetStatusItems = this.items().filter((i) => i.statusKey === targetStatusKey);\n currentIndex = targetStatusItems.length;\n }\n // Perform the move\n return await this.performMove(originalItem, previousStatusKey, targetStatusKey, previousIndex, currentIndex, null);\n }\n /**\n * Programmatically reorder an item within the same status.\n * @param itemId The ID of the item to reorder (using keyField)\n * @param newIndex The new index position within the same status\n * @returns Promise<boolean> - true if the reorder was successful, false otherwise\n */\n async reorderItem(itemId, newIndex) {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const statusKey = originalItem[statusKeyField];\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n // Perform the move (same status, different index)\n return await this.performMove(originalItem, statusKey, statusKey, previousIndex, newIndex, null);\n }\n /**\n * Programmatically move an item to a different status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItemToStatus(itemId, targetStatusKey, targetIndex) {\n return await this.moveItem(itemId, targetStatusKey, targetIndex);\n }\n /**\n * Core method that performs the move operation, handles re-indexing, and emits events.\n * This is used by both drag-and-drop operations and programmatic moves.\n *\n * @param originalItem The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async performMove(originalItem, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent) {\n // --- 1. Emit beforeDrop event and check if drop should be canceled ---\n const shouldProceed = await this.emitBeforeDropEvent(originalItem, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent);\n if (!shouldProceed) {\n return false;\n }\n // --- 2. Use the `items` computed property as the source of truth for the operation ---\n // This is the CRUCIAL FIX. We operate on the data as it was rendered.\n const currentItemsState = structuredClone(this.items());\n // --- 3. Perform the move operation based on the scenario ---\n if (previousStatusKey === currentStatusKey) {\n // --- Scenario A: Reordering within the same list ---\n const list = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from the old position and insert into the new position\n const [movedItem] = list.splice(previousIndex, 1);\n list.splice(currentIndex, 0, movedItem);\n // Re-index only this modified list\n list.forEach((item, idx) => (item.index = idx));\n }\n else {\n // --- Scenario B: Moving to a different list ---\n const sourceList = currentItemsState.filter((i) => i.statusKey === previousStatusKey);\n const destList = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from source list\n const [movedItem] = sourceList.splice(previousIndex, 1);\n // Update its status and add to destination list\n movedItem.statusKey = currentStatusKey;\n destList.splice(currentIndex, 0, movedItem);\n // Re-index both affected lists\n sourceList.forEach((item, idx) => (item.index = idx));\n destList.forEach((item, idx) => (item.index = idx));\n }\n // --- 4. Map the changes back to a new version of the original dataSource ---\n // This preserves any extra properties the user might have on their data objects.\n const keyField = this.keyField();\n const statusKeyField = this.statusKeyField();\n const indexField = this.indexField();\n const updatedItemsMap = new Map(currentItemsState.map((i) => [i.id, i]));\n const finalDataSource = structuredClone(this.dataSource());\n finalDataSource.forEach((originalItem) => {\n const updatedItem = updatedItemsMap.get(originalItem[keyField]);\n if (updatedItem) {\n originalItem[indexField] = updatedItem.index;\n originalItem[statusKeyField] = updatedItem.statusKey;\n }\n });\n const movedItemId = originalItem[keyField];\n const finalOriginalItemFromDataSource = finalDataSource.find((item) => item[keyField] === movedItemId);\n // --- 5. Emit the final, comprehensive event ---\n this.onSortChanged.emit({\n sender: this,\n nativeEvent: nativeEvent,\n // The original data object that was moved\n item: finalOriginalItemFromDataSource,\n // The complete, precisely re-indexed data source, ready for state update\n allItems: finalDataSource,\n currentIndex,\n previousIndex,\n currentStatusKey,\n previousStatusKey,\n });\n return true;\n }\n /**\n * Emit beforeDrop event and return whether to continue with the drop operation.\n * Supports both synchronous and asynchronous event handlers via the `wait()` method.\n * @param item The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the drop should proceed, false if it should be canceled\n */\n async emitBeforeDropEvent(item, previousStatusKey, currentStatusKey, previousIndex, currentIndex, nativeEvent) {\n // Collect promises registered via wait()\n const waitPromises = [];\n const beforeDropEvent = {\n sender: this,\n nativeEvent,\n item,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n canceled: false,\n wait: (promise) => waitPromises.push(promise),\n };\n // Emit the event - handlers can call event.wait() to register async operations\n this.onBeforeDrop.emit(beforeDropEvent);\n // Wait for all registered promises to complete\n if (waitPromises.length > 0) {\n await Promise.all(waitPromises);\n }\n return !beforeDropEvent.canceled;\n }\n getItemsById(key) {\n return this.items().filter((e) => e.statusKey === key);\n }\n getOriginalItemsById(key) {\n return this.dataSource().filter((e) => e[this.statusKeyField()] === key);\n }\n stringify(value) {\n return JSON.stringify(value);\n }\n handleActionClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onActionClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n handleClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onItemClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n handleDblClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onItemDblClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n handleRightClick(event, item) {\n const originalItemFromDataSource = this.dataSource().find((originalItem) => originalItem[this.keyField()] === item.id);\n this.onItemRightClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: AXKanbanComponent, isStandalone: true, selector: \"ax-kanban\", inputs: { hasActions: { classPropertyName: \"hasActions\", publicName: \"hasActions\", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: \"dragStartDelay\", publicName: \"dragStartDelay\", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: \"statuses\", publicName: \"statuses\", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: \"keyField\", publicName: \"keyField\", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: \"indexField\", publicName: \"indexField\", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: \"titleField\", publicName: \"titleField\", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: \"cssClassField\", publicName: \"cssClassField\", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: \"priorityField\", publicName: \"priorityField\", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: \"statusKeyField\", publicName: \"statusKeyField\", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: \"descriptionField\", publicName: \"descriptionField\", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: \"headerTemplate\", publicName: \"headerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: \"footerTemplate\", publicName: \"footerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: \"contentFooterTemplate\", publicName: \"contentFooterTemplate\", isSignal: true, isRequired: false, transformFunction: null }, tooltipTemplate: { classPropertyName: \"tooltipTemplate\", publicName: \"tooltipTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBeforeDrop: \"onBeforeDrop\", onSortChanged: \"onSortChanged\", onItemClick: \"onItemClick\", onActionClick: \"onActionClick\", onItemDblClick: \"onItemDblClick\", onItemRightClick: \"onItemRightClick\" }, usesInheritance: true, ngImport: i0, template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n class=\\\"{{ item.cssClass }}\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ax-heading>\\n <ax-title>\\n <span class=\\\"ax-kanban-truncate\\\">{{ item.title }}</span>\\n @if (hasActions()) {\\n <ax-icon\\n class=\\\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\\\"\\n (click)=\\\"handleActionClick($event, item)\\\"\\n >\\n </ax-icon>\\n }\\n </ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXDragDirective, selector: \"[axDrag]\", inputs: [\"axDrag\", \"dragData\", \"dragDisabled\", \"dragTransition\", \"dragElementClone\", \"dropZoneGroup\", \"dragStartDelay\", \"dragResetOnDblClick\", \"dragLockAxis\", \"dragClonedTemplate\", \"dragCursor\", \"dragBoundary\", \"dragTransitionDuration\"], outputs: [\"dragPositionChanged\"] }, { kind: \"directive\", type: AXDropListDirective, selector: \"[axDropList]\", inputs: [\"axDropList\", \"sortingDisabled\", \"dropListGroup\", \"dropListOrientation\"], outputs: [\"dropListDropped\"], exportAs: [\"axDropList\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXDecoratorHeadingComponent, selector: \"ax-heading\", inputs: [\"darkMode\", \"color\", \"weight\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"axTooltipDisabled\", \"axTooltip\", \"axTooltipContext\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXKanbanComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-kanban', encapsulation: ViewEncapsulation.None, imports: [\n NgClass,\n NgTemplateOutlet,\n AXDragDirective,\n AXDropListDirective,\n AXDecoratorGenericComponent,\n AXDecoratorHeadingComponent,\n AXDecoratorIconComponent,\n AXTooltipDirective,\n ], template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n class=\\\"{{ item.cssClass }}\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n [axTooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n [axTooltipContext]=\\\"item\\\"\\n (click)=\\\"handleClick($event, item)\\\"\\n (dblclick)=\\\"handleDblClick($event, item)\\\"\\n (contextmenu)=\\\"handleRightClick($event, item)\\\"\\n >\\n <ax-heading>\\n <ax-title>\\n <span class=\\\"ax-kanban-truncate\\\">{{ item.title }}</span>\\n @if (hasActions()) {\\n <ax-icon\\n class=\\\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\\\"\\n (click)=\\\"handleActionClick($event, item)\\\"\\n >\\n </ax-icon>\\n }\\n </ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"] }]\n }], propDecorators: { hasActions: [{ type: i0.Input, args: [{ isSignal: true, alias: \"hasActions\", required: false }] }], dragStartDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dragStartDelay\", required: false }] }], statuses: [{ type: i0.Input, args: [{ isSignal: true, alias: \"statuses\", required: false }] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"itemTemplate\", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: \"dataSource\", required: false }] }], keyField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"keyField\", required: false }] }], indexField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"indexField\", required: false }] }], titleField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"titleField\", required: false }] }], cssClassField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"cssClassField\", required: false }] }], priorityField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"priorityField\", required: false }] }], statusKeyField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"statusKeyField\", required: false }] }], descriptionField: [{ type: i0.Input, args: [{ isSignal: true, alias: \"descriptionField\", required: false }] }], emptyTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"emptyTemplate\", required: false }] }], headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"headerTemplate\", required: false }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"footerTemplate\", required: false }] }], contentFooterTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"contentFooterTemplate\", required: false }] }], tooltipTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tooltipTemplate\", required: false }] }], onBeforeDrop: [{ type: i0.Output, args: [\"onBeforeDrop\"] }], onSortChanged: [{ type: i0.Output, args: [\"onSortChanged\"] }], onItemClick: [{ type: i0.Output, args: [\"onItemClick\"] }], onActionClick: [{ type: i0.Output, args: [\"onActionClick\"] }], onItemDblClick: [{ type: i0.Output, args: [\"onItemDblClick\"] }], onItemRightClick: [{ type: i0.Output, args: [\"onItemRightClick\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHdCQUF3QixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXlCbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUFoQmxEOztRQWlCRSxlQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssc0RBQUMsQ0FBQztRQUMxQixtQkFBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLDBEQUFDLENBQUM7UUFDMUIsYUFBUSxHQUFHLEtBQUssQ0FBbUIsRUFBRSxvREFBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxrRUFBd0IsQ0FBQztRQUM3QyxlQUFVLEdBQUcsS0FBSyxnRUFBMEIsQ0FBQztRQUU3QyxhQUFRLEdBQUcsS0FBSyxDQUFTLElBQUksb0RBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsS0FBSyxDQUFTLE9BQU8sc0RBQUMsQ0FBQztRQUNwQyxlQUFVLEdBQUcsS0FBSyxDQUFTLE9BQU8sc0RBQUMsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxVQUFVLHlEQUFDLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxLQUFLLENBQVMsVUFBVSx5REFBQyxDQUFDO1FBQzFDLG1CQUFjLEdBQUcsS0FBSyxDQUFTLFdBQVcsMERBQUMsQ0FBQztRQUM1QyxxQkFBZ0IsR0FBRyxLQUFLLENBQVMsYUFBYSw0REFBQyxDQUFDO1FBQ2hELGtCQUFhLEdBQUcsS0FBSyxtRUFBd0IsQ0FBQztRQUM5QyxtQkFBYyxHQUFHLEtBQUssb0VBQXdCLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxLQUFLLG9FQUF3QixDQUFDO1FBQy9DLDBCQUFxQixHQUFHLEtBQUssMkVBQXdCLENBQUM7UUFDdEQsb0JBQWUsR0FBRyxLQUFLLHFFQUFpQyxDQUFDO1FBRXpELGlCQUFZLEdBQUcsTUFBTSxFQUEyQixDQUFDO1FBQ2pELGtCQUFhLEdBQUcsTUFBTSxFQUFxQixDQUFDO1FBQzVDLGdCQUFXLEdBQUcsTUFBTSxFQUFzQixDQUFDO1FBQzNDLGtCQUFhLEdBQUcsTUFBTSxFQUFzQixDQUFDO1FBQzdDLG1CQUFjLEdBQUcsTUFBTSxFQUFzQixDQUFDO1FBQzlDLHFCQUFnQixHQUFHLE1BQU0sRUFBc0IsQ0FBQztRQUV0QyxVQUFLLEdBQUcsUUFBUSxDQUFpQixHQUFHLEVBQUU7WUFDOUMsa0VBQWtFO1lBQ2xFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBZSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDOUIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3BDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUMzQyxDQUFDLENBQUMsQ0FBQztZQUVKLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO1lBQ3JELEtBQUssTUFBTSxJQUFJLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUN2QyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQ0QsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFFRCxNQUFNLG1CQUFtQixHQUFtQixFQUFFLENBQUM7WUFDL0MsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxxQkFBcUIsR0FBbUIsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLGdCQUFnQixHQUFtQixFQUFFLENBQUM7Z0JBQzVDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7Z0JBQ3ZDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUcsSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDbEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzdCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbkMsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFDckIsS0FBSyxNQUFNLElBQUksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNwQyxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQzt3QkFDdEMsWUFBWSxFQUFFLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7b0JBQzFCLFlBQVksRUFBRSxDQUFDO2dCQUNqQixDQUFDO2dCQUNELE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3ZFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakQsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUNELE9BQU8sbUJBQW1CLENBQUM7UUFDN0IsQ0FBQyxpREFBQyxDQUFDO1FBRU8scUJBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsNERBQUMsQ0FBQztLQWdUaEc7SUE5U0M7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQTZCO1FBQ3RDLE1BQU0sRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFeEcsMERBQTBEO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsTUFBTSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLEVBQWtCLENBQUM7UUFFOUUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO1lBQ3hGLE9BQU87UUFDVCxDQUFDO1FBRUQsbURBQW1EO1FBQ25ELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDdkQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxxQkFBcUIsQ0FBQyxFQUFFLENBQzdELENBQUM7UUFFRixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDeEQsT0FBTztRQUNULENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUNwQiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsWUFBWSxFQUNaLEtBQUssQ0FBQyxXQUFXLENBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFXLEVBQUUsZUFBb0IsRUFBRSxXQUFvQjtRQUNwRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBRWpGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixNQUFNLDRCQUE0QixDQUFDLENBQUM7WUFDNUUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUV2RCx3RkFBd0Y7UUFDeEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBRyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUU5QyxxREFBcUQ7UUFDckQsSUFBSSxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsQ0FBQztZQUN0RixZQUFZLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQzFDLENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBVyxFQUFFLFFBQWdCO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUM7UUFFakYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE1BQU0sNEJBQTRCLENBQUMsQ0FBQztZQUM1RSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUvQyx3RkFBd0Y7UUFDeEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztRQUM5RCxNQUFNLGFBQWEsR0FBRyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUU5QyxrREFBa0Q7UUFDbEQsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQVcsRUFBRSxlQUFvQixFQUFFLFdBQW9CO1FBQzVFLE9BQU8sTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ssS0FBSyxDQUFDLFdBQVcsQ0FDdkIsWUFBaUIsRUFDakIsaUJBQXNCLEVBQ3RCLGdCQUFxQixFQUNyQixhQUFxQixFQUNyQixZQUFvQixFQUNwQixXQUE4QjtRQUU5Qix3RUFBd0U7UUFDeEUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQ2xELFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixZQUFZLEVBQ1osV0FBVyxDQUNaLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsd0ZBQXdGO1FBQ3hGLHNFQUFzRTtRQUN0RSxNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUV4RCw4REFBOEQ7UUFDOUQsSUFBSSxpQkFBaUIsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNDLHNEQUFzRDtZQUN0RCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztZQUUvRSxnRUFBZ0U7WUFDaEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUV4QyxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04saURBQWlEO1lBQ2pELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRW5GLDBCQUEwQjtZQUMxQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEQsZ0RBQWdEO1lBQ2hELFNBQVMsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7WUFDdkMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTVDLCtCQUErQjtZQUMvQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCw4RUFBOEU7UUFDOUUsaUZBQWlGO1FBQ2pGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXJDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFM0QsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQzdDLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQ3ZELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxNQUFNLCtCQUErQixHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUV2RyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDdEIsTUFBTSxFQUFFLElBQUk7WUFDWixXQUFXLEVBQUUsV0FBVztZQUN4QiwwQ0FBMEM7WUFDMUMsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyx5RUFBeUU7WUFDekUsUUFBUSxFQUFFLGVBQWU7WUFDekIsWUFBWTtZQUNaLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsaUJBQWlCO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSyxLQUFLLENBQUMsbUJBQW1CLENBQy9CLElBQVMsRUFDVCxpQkFBc0IsRUFDdEIsZ0JBQXFCLEVBQ3JCLGFBQXFCLEVBQ3JCLFlBQW9CLEVBQ3BCLFdBQThCO1FBRTlCLHlDQUF5QztRQUN6QyxNQUFNLFlBQVksR0FBb0IsRUFBRSxDQUFDO1FBRXpDLE1BQU0sZUFBZSxHQUE0QjtZQUMvQyxNQUFNLEVBQUUsSUFBSTtZQUNaLFdBQVc7WUFDWCxJQUFJO1lBQ0osaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsWUFBWTtZQUNaLFFBQVEsRUFBRSxLQUFLO1lBQ2YsSUFBSSxFQUFFLENBQUMsT0FBc0IsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDN0QsQ0FBQztRQUVGLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QywrQ0FBK0M7UUFDL0MsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVTLFlBQVksQ0FBQyxHQUFRO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRVMsb0JBQW9CLENBQUMsR0FBUTtRQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQVU7UUFDNUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxLQUFpQixFQUFFLElBQWtCO1FBQy9ELE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDdkQsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUM1RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRVMsV0FBVyxDQUFDLEtBQWlCLEVBQUUsSUFBa0I7UUFDekQsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUN2RCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQzVELENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBaUIsRUFBRSxJQUFrQjtRQUM1RCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQ3ZELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FDNUQsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVTLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsSUFBa0I7UUFDOUQsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUN2RCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQzVELENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckcsQ0FBQzsrR0E1WFUsaUJBQWlCO21HQUFqQixpQkFBaUIscXJGQ2xDOUIsbzNHQTBGQSxvdklEbEVJLE9BQU8sb0ZBQ1AsZ0JBQWdCLG9KQUNoQixlQUFlLHFVQUNmLG1CQUFtQixvTUFDbkIsMkJBQTJCLHlMQUMzQiwyQkFBMkIsZ0dBQzNCLHdCQUF3QixzRUFDeEIsa0JBQWtCOzs0RkFHVCxpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNFLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3dCQUMzQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjtxQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOWENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWERyYWdEaXJlY3RpdmUsIEFYRHJvcExpc3REaXJlY3RpdmUsIEFYRHJvcExpc3REcm9wcGVkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICBBWERlY29yYXRvckhlYWRpbmdDb21wb25lbnQsXG4gIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCwgb3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFYS2FuYmFuQmVmb3JlRHJvcEV2ZW50LFxuICBBWEthbmJhbkl0ZW0sXG4gIEFYS2FuYmFuTW91c2VFdmVudCxcbiAgQVhLYW5iYW5Tb3J0RXZlbnQsXG4gIEFYS2FuYmFuU3RhdHVzLFxufSBmcm9tICcuL2thbmJhbi5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWthbmJhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9rYW5iYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9rYW5iYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBBWERyYWdEaXJlY3RpdmUsXG4gICAgQVhEcm9wTGlzdERpcmVjdGl2ZSxcbiAgICBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JIZWFkaW5nQ29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9ySWNvbkNvbXBvbmVudCxcbiAgICBBWFRvb2x0aXBEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYS2FuYmFuQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBoYXNBY3Rpb25zID0gaW5wdXQoZmFsc2UpO1xuICBkcmFnU3RhcnREZWxheSA9IGlucHV0KDApO1xuICBzdGF0dXNlcyA9IGlucHV0PEFYS2FuYmFuU3RhdHVzW10+KFtdKTtcbiAgaXRlbVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dDxBWEthbmJhbkl0ZW1bXSB8IGFueVtdPigpO1xuXG4gIGtleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignaWQnKTtcbiAgaW5kZXhGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2luZGV4Jyk7XG4gIHRpdGxlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCd0aXRsZScpO1xuICBjc3NDbGFzc0ZpZWxkID0gaW5wdXQ8c3RyaW5nPignY3NzQ2xhc3MnKTtcbiAgcHJpb3JpdHlGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3ByaW9yaXR5Jyk7XG4gIHN0YXR1c0tleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignc3RhdHVzS2V5Jyk7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdkZXNjcmlwdGlvbicpO1xuICBlbXB0eVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGZvb3RlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGNvbnRlbnRGb290ZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xuICB0b29sdGlwVGVtcGxhdGUgPSBpbnB1dDxzdHJpbmcgfCBUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcblxuICBvbkJlZm9yZURyb3AgPSBvdXRwdXQ8QVhLYW5iYW5CZWZvcmVEcm9wRXZlbnQ+KCk7XG4gIG9uU29ydENoYW5nZWQgPSBvdXRwdXQ8QVhLYW5iYW5Tb3J0RXZlbnQ+KCk7XG4gIG9uSXRlbUNsaWNrID0gb3V0cHV0PEFYS2FuYmFuTW91c2VFdmVudD4oKTtcbiAgb25BY3Rpb25DbGljayA9IG91dHB1dDxBWEthbmJhbk1vdXNlRXZlbnQ+KCk7XG4gIG9uSXRlbURibENsaWNrID0gb3V0cHV0PEFYS2FuYmFuTW91c2VFdmVudD4oKTtcbiAgb25JdGVtUmlnaHRDbGljayA9IG91dHB1dDxBWEthbmJhbk1vdXNlRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGl0ZW1zID0gY29tcHV0ZWQ8QVhLYW5iYW5JdGVtW10+KCgpID0+IHtcbiAgICAvLyAuLi4geW91ciBleGNlbGxlbnQgZ2FwLWZpbGxpbmcgaW5kZXggbG9naWMgcmVtYWlucyB0aGUgc2FtZSAuLi5cbiAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkgfHwgW107XG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBkYXRhU291cmNlLm1hcDxBWEthbmJhbkl0ZW0+KChpdGVtOiBhbnkpID0+ICh7XG4gICAgICBpZDogaXRlbVt0aGlzLmtleUZpZWxkKCldLFxuICAgICAgaW5kZXg6IGl0ZW1bdGhpcy5pbmRleEZpZWxkKCldLFxuICAgICAgdGl0bGU6IGl0ZW1bdGhpcy50aXRsZUZpZWxkKCldLFxuICAgICAgY3NzQ2xhc3M6IGl0ZW1bdGhpcy5jc3NDbGFzc0ZpZWxkKCldLFxuICAgICAgcHJpb3JpdHk6IGl0ZW1bdGhpcy5wcmlvcml0eUZpZWxkKCldLFxuICAgICAgc3RhdHVzS2V5OiBpdGVtW3RoaXMuc3RhdHVzS2V5RmllbGQoKV0sXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbVt0aGlzLmRlc2NyaXB0aW9uRmllbGQoKV0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgaXRlbXNCeVN0YXR1cyA9IG5ldyBNYXA8YW55LCBBWEthbmJhbkl0ZW1bXT4oKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbWFwcGVkSXRlbXMpIHtcbiAgICAgIGlmICghaXRlbXNCeVN0YXR1cy5oYXMoaXRlbS5zdGF0dXNLZXkpKSB7XG4gICAgICAgIGl0ZW1zQnlTdGF0dXMuc2V0KGl0ZW0uc3RhdHVzS2V5LCBbXSk7XG4gICAgICB9XG4gICAgICBpdGVtc0J5U3RhdHVzLmdldChpdGVtLnN0YXR1c0tleSkucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbFByb2Nlc3NlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgaXRlbXNCeVN0YXR1cy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgY29ycmVjdGx5SW5kZXhlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgaXRlbXNUb0JlSW5kZXhlZDogQVhLYW5iYW5JdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHRha2VuSW5kaWNlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwKSB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbGlkSW5kZXggPSBpdGVtLmluZGV4ICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0uaW5kZXggPT09ICdudW1iZXInICYmICF0YWtlbkluZGljZXMuaGFzKGl0ZW0uaW5kZXgpO1xuICAgICAgICBpZiAoaGFzVmFsaWRJbmRleCkge1xuICAgICAgICAgIHRha2VuSW5kaWNlcy5hZGQoaXRlbS5pbmRleCk7XG4gICAgICAgICAgY29ycmVjdGx5SW5kZXhlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXNUb0JlSW5kZXhlZC5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVJbmRleGVkKSB7XG4gICAgICAgIHdoaWxlICh0YWtlbkluZGljZXMuaGFzKGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmluZGV4ID0gY3VycmVudEluZGV4O1xuICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb2Nlc3NlZEdyb3VwID0gWy4uLmNvcnJlY3RseUluZGV4ZWRJdGVtcywgLi4uaXRlbXNUb0JlSW5kZXhlZF07XG4gICAgICBwcm9jZXNzZWRHcm91cC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICBmaW5hbFByb2Nlc3NlZEl0ZW1zLnB1c2goLi4ucHJvY2Vzc2VkR3JvdXApO1xuICAgIH1cbiAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRJdGVtcztcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGZpbHRlcmVkU3RhdHVzZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1c2VzKCkuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpKTtcblxuICAvKipcbiAgICogSGFuZGxlcyBhIGRyb3Agb3BlcmF0aW9uIHRvIHJlb3JkZXIgaXRlbXMgb3IgbW92ZSB0aGVtIGJldHdlZW4gc3RhdHVzZXMuXG4gICAqIEl0IHVzZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnQgcmVuZGVyZWQgc3RhdGUgKGB0aGlzLml0ZW1zYCkgYXMgdGhlIHNvdXJjZVxuICAgKiBvZiB0cnV0aCwgcGVyZm9ybXMgcHJlY2lzZSByZS1pbmRleGluZywgYW5kIGVtaXRzIGEgY29tcHJlaGVuc2l2ZSBldmVudCB3aXRoXG4gICAqIHRoZSB1cGRhdGVkIGRhdGEgc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgQVhEcm9wTGlzdERyb3BwZWRFdmVudCAtIFRoZSBkcmFnLWFuZC1kcm9wIGV2ZW50IGluY2x1ZGluZyBpbmRpY2VzIGFuZCBjb250YWluZXIgaW5mb3JtYXRpb24uXG4gICAqIEByZXR1cm5zIFByb21pc2U8dm9pZD5cbiAgICovXG4gIGFzeW5jIGRyb3AoZXZlbnQ6IEFYRHJvcExpc3REcm9wcGVkRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGl0ZW06IGRyb3BwZWRJdGVtRGlyZWN0aXZlLCBjdXJyZW50SW5kZXgsIHByZXZpb3VzSW5kZXgsIGNvbnRhaW5lciwgcHJldmlvdXNDb250YWluZXIgfSA9IGV2ZW50O1xuXG4gICAgLy8gLS0tIDEuIEdldCBpZGVudGlmaWVycyBhbmQgdGhlIGl0ZW0ncyBvcmlnaW5hbCBkYXRhIC0tLVxuICAgIGNvbnN0IGN1cnJlbnRTdGF0dXNLZXkgPSBKU09OLnBhcnNlKGNvbnRhaW5lci5lbGVtZW50LmlkKTtcbiAgICBjb25zdCBwcmV2aW91c1N0YXR1c0tleSA9IEpTT04ucGFyc2UocHJldmlvdXNDb250YWluZXIuZWxlbWVudC5pZCk7XG4gICAgY29uc3QgbW92ZWRJdGVtT3JpZ2luYWxEYXRhID0gZHJvcHBlZEl0ZW1EaXJlY3RpdmUuZHJhZ0RhdGEoKSBhcyBBWEthbmJhbkl0ZW07XG5cbiAgICBpZiAoIW1vdmVkSXRlbU9yaWdpbmFsRGF0YSkge1xuICAgICAgY29uc29sZS53YXJuKCdBWEthbmJhbjogRHJhZ2dlZCBpdGVtIGhhcyBubyBbZHJhZ0RhdGFdLiBTb3J0IGV2ZW50IGNhbm5vdCBiZSBlbWl0dGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIC0tLSAyLiBHZXQgdGhlIG9yaWdpbmFsIGl0ZW0gZnJvbSBkYXRhU291cmNlIC0tLVxuICAgIGNvbnN0IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkuZmluZChcbiAgICAgIChpdGVtKSA9PiBpdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IG1vdmVkSXRlbU9yaWdpbmFsRGF0YS5pZCxcbiAgICApO1xuXG4gICAgaWYgKCFvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSkge1xuICAgICAgY29uc29sZS53YXJuKCdBWEthbmJhbjogSXRlbSBub3QgZm91bmQgaW4gZGF0YVNvdXJjZS4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAtLS0gMy4gUGVyZm9ybSB0aGUgbW92ZSBvcGVyYXRpb24gLS0tXG4gICAgYXdhaXQgdGhpcy5wZXJmb3JtTW92ZShcbiAgICAgIG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlLFxuICAgICAgcHJldmlvdXNTdGF0dXNLZXksXG4gICAgICBjdXJyZW50U3RhdHVzS2V5LFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIGN1cnJlbnRJbmRleCxcbiAgICAgIGV2ZW50Lm5hdGl2ZUV2ZW50LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSBtb3ZlIGFuIGl0ZW0gdG8gYSBkaWZmZXJlbnQgc3RhdHVzIG9yIHJlb3JkZXIgd2l0aGluIHRoZSBzYW1lIHN0YXR1cy5cbiAgICogQHBhcmFtIGl0ZW1JZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gbW92ZSAodXNpbmcga2V5RmllbGQpXG4gICAqIEBwYXJhbSB0YXJnZXRTdGF0dXNLZXkgVGhlIHRhcmdldCBzdGF0dXMga2V5IHRvIG1vdmUgdGhlIGl0ZW0gdG9cbiAgICogQHBhcmFtIHRhcmdldEluZGV4IE9wdGlvbmFsIHRhcmdldCBpbmRleCB3aXRoaW4gdGhlIHRhcmdldCBzdGF0dXMuIElmIG5vdCBwcm92aWRlZCwgaXRlbSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj4gLSB0cnVlIGlmIHRoZSBtb3ZlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGFzeW5jIG1vdmVJdGVtKGl0ZW1JZDogYW55LCB0YXJnZXRTdGF0dXNLZXk6IGFueSwgdGFyZ2V0SW5kZXg/OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBrZXlGaWVsZCA9IHRoaXMua2V5RmllbGQoKTtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gaXRlbUlkKTtcblxuICAgIGlmICghb3JpZ2luYWxJdGVtKSB7XG4gICAgICBjb25zb2xlLndhcm4oYEFYS2FuYmFuOiBJdGVtIHdpdGggaWQgXCIke2l0ZW1JZH1cIiBub3QgZm91bmQgaW4gZGF0YVNvdXJjZS5gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBHZXQgY3VycmVudCBzdGF0dXMgZnJvbSBkYXRhU291cmNlXG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3QgcHJldmlvdXNTdGF0dXNLZXkgPSBvcmlnaW5hbEl0ZW1bc3RhdHVzS2V5RmllbGRdO1xuXG4gICAgLy8gR2V0IGN1cnJlbnQgaW5kZXggZnJvbSB0aGUgY29tcHV0ZWQgaXRlbXMgc3RhdGUgKG1vcmUgYWNjdXJhdGUgdGhhbiBkYXRhU291cmNlIGZpZWxkKVxuICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gdGhpcy5pdGVtcygpLmZpbmQoKGkpID0+IGkuaWQgPT09IGl0ZW1JZCk7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleCA9IGN1cnJlbnRJdGVtPy5pbmRleCA/PyAwO1xuXG4gICAgLy8gSWYgdGFyZ2V0IGluZGV4IGlzIG5vdCBwcm92aWRlZCwgYXBwZW5kIHRvIHRoZSBlbmRcbiAgICBsZXQgY3VycmVudEluZGV4ID0gdGFyZ2V0SW5kZXg7XG4gICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0YXJnZXRTdGF0dXNJdGVtcyA9IHRoaXMuaXRlbXMoKS5maWx0ZXIoKGkpID0+IGkuc3RhdHVzS2V5ID09PSB0YXJnZXRTdGF0dXNLZXkpO1xuICAgICAgY3VycmVudEluZGV4ID0gdGFyZ2V0U3RhdHVzSXRlbXMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gdGhlIG1vdmVcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJmb3JtTW92ZShvcmlnaW5hbEl0ZW0sIHByZXZpb3VzU3RhdHVzS2V5LCB0YXJnZXRTdGF0dXNLZXksIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCwgbnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSByZW9yZGVyIGFuIGl0ZW0gd2l0aGluIHRoZSBzYW1lIHN0YXR1cy5cbiAgICogQHBhcmFtIGl0ZW1JZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVvcmRlciAodXNpbmcga2V5RmllbGQpXG4gICAqIEBwYXJhbSBuZXdJbmRleCBUaGUgbmV3IGluZGV4IHBvc2l0aW9uIHdpdGhpbiB0aGUgc2FtZSBzdGF0dXNcbiAgICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPiAtIHRydWUgaWYgdGhlIHJlb3JkZXIgd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYXN5bmMgcmVvcmRlckl0ZW0oaXRlbUlkOiBhbnksIG5ld0luZGV4OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBrZXlGaWVsZCA9IHRoaXMua2V5RmllbGQoKTtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW0gPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gaXRlbUlkKTtcblxuICAgIGlmICghb3JpZ2luYWxJdGVtKSB7XG4gICAgICBjb25zb2xlLndhcm4oYEFYS2FuYmFuOiBJdGVtIHdpdGggaWQgXCIke2l0ZW1JZH1cIiBub3QgZm91bmQgaW4gZGF0YVNvdXJjZS5gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBHZXQgY3VycmVudCBzdGF0dXMgZnJvbSBkYXRhU291cmNlXG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3Qgc3RhdHVzS2V5ID0gb3JpZ2luYWxJdGVtW3N0YXR1c0tleUZpZWxkXTtcblxuICAgIC8vIEdldCBjdXJyZW50IGluZGV4IGZyb20gdGhlIGNvbXB1dGVkIGl0ZW1zIHN0YXRlIChtb3JlIGFjY3VyYXRlIHRoYW4gZGF0YVNvdXJjZSBmaWVsZClcbiAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaXRlbXMoKS5maW5kKChpKSA9PiBpLmlkID09PSBpdGVtSWQpO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBjdXJyZW50SXRlbT8uaW5kZXggPz8gMDtcblxuICAgIC8vIFBlcmZvcm0gdGhlIG1vdmUgKHNhbWUgc3RhdHVzLCBkaWZmZXJlbnQgaW5kZXgpXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucGVyZm9ybU1vdmUob3JpZ2luYWxJdGVtLCBzdGF0dXNLZXksIHN0YXR1c0tleSwgcHJldmlvdXNJbmRleCwgbmV3SW5kZXgsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2dyYW1tYXRpY2FsbHkgbW92ZSBhbiBpdGVtIHRvIGEgZGlmZmVyZW50IHN0YXR1cy5cbiAgICogQHBhcmFtIGl0ZW1JZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gbW92ZSAodXNpbmcga2V5RmllbGQpXG4gICAqIEBwYXJhbSB0YXJnZXRTdGF0dXNLZXkgVGhlIHRhcmdldCBzdGF0dXMga2V5IHRvIG1vdmUgdGhlIGl0ZW0gdG9cbiAgICogQHBhcmFtIHRhcmdldEluZGV4IE9wdGlvbmFsIHRhcmdldCBpbmRleCB3aXRoaW4gdGhlIHRhcmdldCBzdGF0dXMuIElmIG5vdCBwcm92aWRlZCwgaXRlbSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQuXG4gICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj4gLSB0cnVlIGlmIHRoZSBtb3ZlIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGFzeW5jIG1vdmVJdGVtVG9TdGF0dXMoaXRlbUlkOiBhbnksIHRhcmdldFN0YXR1c0tleTogYW55LCB0YXJnZXRJbmRleD86IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLm1vdmVJdGVtKGl0ZW1JZCwgdGFyZ2V0U3RhdHVzS2V5LCB0YXJnZXRJbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogQ29yZSBtZXRob2QgdGhhdCBwZXJmb3JtcyB0aGUgbW92ZSBvcGVyYXRpb24sIGhhbmRsZXMgcmUtaW5kZXhpbmcsIGFuZCBlbWl0cyBldmVudHMuXG4gICAqIFRoaXMgaXMgdXNlZCBieSBib3RoIGRyYWctYW5kLWRyb3Agb3BlcmF0aW9ucyBhbmQgcHJvZ3JhbW1hdGljIG1vdmVzLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxJdGVtIFRoZSBvcmlnaW5hbCBpdGVtIGZyb20gZGF0YVNvdXJjZSB0aGF0IGlzIGJlaW5nIG1vdmVkXG4gICAqIEBwYXJhbSBwcmV2aW91c1N0YXR1c0tleSBUaGUgc3RhdHVzIGtleSB0aGUgaXRlbSBpcyBtb3ZpbmcgZnJvbVxuICAgKiBAcGFyYW0gY3VycmVudFN0YXR1c0tleSBUaGUgc3RhdHVzIGtleSB0aGUgaXRlbSBpcyBtb3ZpbmcgdG9cbiAgICogQHBhcmFtIHByZXZpb3VzSW5kZXggVGhlIGluZGV4IHRoZSBpdGVtIGlzIG1vdmluZyBmcm9tXG4gICAqIEBwYXJhbSBjdXJyZW50SW5kZXggVGhlIGluZGV4IHRoZSBpdGVtIGlzIG1vdmluZyB0b1xuICAgKiBAcGFyYW0gbmF0aXZlRXZlbnQgVGhlIG5hdGl2ZSBtb3VzZSBldmVudCAobnVsbCBmb3IgcHJvZ3JhbW1hdGljIG1vdmVzKVxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gdHJ1ZSBpZiB0aGUgbW92ZSB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBlcmZvcm1Nb3ZlKFxuICAgIG9yaWdpbmFsSXRlbTogYW55LFxuICAgIHByZXZpb3VzU3RhdHVzS2V5OiBhbnksXG4gICAgY3VycmVudFN0YXR1c0tleTogYW55LFxuICAgIHByZXZpb3VzSW5kZXg6IG51bWJlcixcbiAgICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgICBuYXRpdmVFdmVudDogTW91c2VFdmVudCB8IG51bGwsXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIC0tLSAxLiBFbWl0IGJlZm9yZURyb3AgZXZlbnQgYW5kIGNoZWNrIGlmIGRyb3Agc2hvdWxkIGJlIGNhbmNlbGVkIC0tLVxuICAgIGNvbnN0IHNob3VsZFByb2NlZWQgPSBhd2FpdCB0aGlzLmVtaXRCZWZvcmVEcm9wRXZlbnQoXG4gICAgICBvcmlnaW5hbEl0ZW0sXG4gICAgICBwcmV2aW91c1N0YXR1c0tleSxcbiAgICAgIGN1cnJlbnRTdGF0dXNLZXksXG4gICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgY3VycmVudEluZGV4LFxuICAgICAgbmF0aXZlRXZlbnQsXG4gICAgKTtcbiAgICBpZiAoIXNob3VsZFByb2NlZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAtLS0gMi4gVXNlIHRoZSBgaXRlbXNgIGNvbXB1dGVkIHByb3BlcnR5IGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBvcGVyYXRpb24gLS0tXG4gICAgLy8gVGhpcyBpcyB0aGUgQ1JVQ0lBTCBGSVguIFdlIG9wZXJhdGUgb24gdGhlIGRhdGEgYXMgaXQgd2FzIHJlbmRlcmVkLlxuICAgIGNvbnN0IGN1cnJlbnRJdGVtc1N0YXRlID0gc3RydWN0dXJlZENsb25lKHRoaXMuaXRlbXMoKSk7XG5cbiAgICAvLyAtLS0gMy4gUGVyZm9ybSB0aGUgbW92ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHNjZW5hcmlvIC0tLVxuICAgIGlmIChwcmV2aW91c1N0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSkge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEE6IFJlb3JkZXJpbmcgd2l0aGluIHRoZSBzYW1lIGxpc3QgLS0tXG4gICAgICBjb25zdCBsaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBvbGQgcG9zaXRpb24gYW5kIGluc2VydCBpbnRvIHRoZSBuZXcgcG9zaXRpb25cbiAgICAgIGNvbnN0IFttb3ZlZEl0ZW1dID0gbGlzdC5zcGxpY2UocHJldmlvdXNJbmRleCwgMSk7XG4gICAgICBsaXN0LnNwbGljZShjdXJyZW50SW5kZXgsIDAsIG1vdmVkSXRlbSk7XG5cbiAgICAgIC8vIFJlLWluZGV4IG9ubHkgdGhpcyBtb2RpZmllZCBsaXN0XG4gICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGlkeCkgPT4gKGl0ZW0uaW5kZXggPSBpZHgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEI6IE1vdmluZyB0byBhIGRpZmZlcmVudCBsaXN0IC0tLVxuICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGN1cnJlbnRJdGVtc1N0YXRlLmZpbHRlcigoaSkgPT4gaS5zdGF0dXNLZXkgPT09IHByZXZpb3VzU3RhdHVzS2V5KTtcbiAgICAgIGNvbnN0IGRlc3RMaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHNvdXJjZSBsaXN0XG4gICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IHNvdXJjZUxpc3Quc3BsaWNlKHByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAvLyBVcGRhdGUgaXRzIHN0YXR1cyBhbmQgYWRkIHRvIGRlc3RpbmF0aW9uIGxpc3RcbiAgICAgIG1vdmVkSXRlbS5zdGF0dXNLZXkgPSBjdXJyZW50U3RhdHVzS2V5O1xuICAgICAgZGVzdExpc3Quc3BsaWNlKGN1cnJlbnRJbmRleCwgMCwgbW92ZWRJdGVtKTtcblxuICAgICAgLy8gUmUtaW5kZXggYm90aCBhZmZlY3RlZCBsaXN0c1xuICAgICAgc291cmNlTGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgICBkZXN0TGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgfVxuXG4gICAgLy8gLS0tIDQuIE1hcCB0aGUgY2hhbmdlcyBiYWNrIHRvIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9yaWdpbmFsIGRhdGFTb3VyY2UgLS0tXG4gICAgLy8gVGhpcyBwcmVzZXJ2ZXMgYW55IGV4dHJhIHByb3BlcnRpZXMgdGhlIHVzZXIgbWlnaHQgaGF2ZSBvbiB0aGVpciBkYXRhIG9iamVjdHMuXG4gICAgY29uc3Qga2V5RmllbGQgPSB0aGlzLmtleUZpZWxkKCk7XG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3QgaW5kZXhGaWVsZCA9IHRoaXMuaW5kZXhGaWVsZCgpO1xuXG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zTWFwID0gbmV3IE1hcChjdXJyZW50SXRlbXNTdGF0ZS5tYXAoKGkpID0+IFtpLmlkLCBpXSkpO1xuICAgIGNvbnN0IGZpbmFsRGF0YVNvdXJjZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTb3VyY2UoKSk7XG5cbiAgICBmaW5hbERhdGFTb3VyY2UuZm9yRWFjaCgob3JpZ2luYWxJdGVtKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkSXRlbSA9IHVwZGF0ZWRJdGVtc01hcC5nZXQob3JpZ2luYWxJdGVtW2tleUZpZWxkXSk7XG4gICAgICBpZiAodXBkYXRlZEl0ZW0pIHtcbiAgICAgICAgb3JpZ2luYWxJdGVtW2luZGV4RmllbGRdID0gdXBkYXRlZEl0ZW0uaW5kZXg7XG4gICAgICAgIG9yaWdpbmFsSXRlbVtzdGF0dXNLZXlGaWVsZF0gPSB1cGRhdGVkSXRlbS5zdGF0dXNLZXk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBtb3ZlZEl0ZW1JZCA9IG9yaWdpbmFsSXRlbVtrZXlGaWVsZF07XG4gICAgY29uc3QgZmluYWxPcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSA9IGZpbmFsRGF0YVNvdXJjZS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gbW92ZWRJdGVtSWQpO1xuXG4gICAgLy8gLS0tIDUuIEVtaXQgdGhlIGZpbmFsLCBjb21wcmVoZW5zaXZlIGV2ZW50IC0tLVxuICAgIHRoaXMub25Tb3J0Q2hhbmdlZC5lbWl0KHtcbiAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgIG5hdGl2ZUV2ZW50OiBuYXRpdmVFdmVudCxcbiAgICAgIC8vIFRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCB0aGF0IHdhcyBtb3ZlZFxuICAgICAgaXRlbTogZmluYWxPcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSxcbiAgICAgIC8vIFRoZSBjb21wbGV0ZSwgcHJlY2lzZWx5IHJlLWluZGV4ZWQgZGF0YSBzb3VyY2UsIHJlYWR5IGZvciBzdGF0ZSB1cGRhdGVcbiAgICAgIGFsbEl0ZW1zOiBmaW5hbERhdGFTb3VyY2UsXG4gICAgICBjdXJyZW50SW5kZXgsXG4gICAgICBwcmV2aW91c0luZGV4LFxuICAgICAgY3VycmVudFN0YXR1c0tleSxcbiAgICAgIHByZXZpb3VzU3RhdHVzS2V5LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBiZWZvcmVEcm9wIGV2ZW50IGFuZCByZXR1cm4gd2hldGhlciB0byBjb250aW51ZSB3aXRoIHRoZSBkcm9wIG9wZXJhdGlvbi5cbiAgICogU3VwcG9ydHMgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGV2ZW50IGhhbmRsZXJzIHZpYSB0aGUgYHdhaXQoKWAgbWV0aG9kLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgb3JpZ2luYWwgaXRlbSBmcm9tIGRhdGFTb3VyY2UgdGhhdCBpcyBiZWluZyBtb3ZlZFxuICAgKiBAcGFyYW0gcHJldmlvdXNTdGF0dXNLZXkgVGhlIHN0YXR1cyBrZXkgdGhlIGl0ZW0gaXMgbW92aW5nIGZyb21cbiAgICogQHBhcmFtIGN1cnJlbnRTdGF0dXNLZXkgVGhlIHN0YXR1cyBrZXkgdGhlIGl0ZW0gaXMgbW92aW5nIHRvXG4gICAqIEBwYXJhbSBwcmV2aW91c0luZGV4IFRoZSBpbmRleCB0aGUgaXRlbSBpcyBtb3ZpbmcgZnJvbVxuICAgKiBAcGFyYW0gY3VycmVudEluZGV4IFRoZSBpbmRleCB0aGUgaXRlbSBpcyBtb3ZpbmcgdG9cbiAgICogQHBhcmFtIG5hdGl2ZUV2ZW50IFRoZSBuYXRpdmUgbW91c2UgZXZlbnQgKG51bGwgZm9yIHByb2dyYW1tYXRpYyBtb3ZlcylcbiAgICogQHJldHVybnMgUHJvbWlzZTxib29sZWFuPiAtIHRydWUgaWYgdGhlIGRyb3Agc2hvdWxkIHByb2NlZWQsIGZhbHNlIGlmIGl0IHNob3VsZCBiZSBjYW5jZWxlZFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBlbWl0QmVmb3JlRHJvcEV2ZW50KFxuICAgIGl0ZW06IGFueSxcbiAgICBwcmV2aW91c1N0YXR1c0tleTogYW55LFxuICAgIGN1cnJlbnRTdGF0dXNLZXk6IGFueSxcbiAgICBwcmV2aW91c0luZGV4OiBudW1iZXIsXG4gICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgbmF0aXZlRXZlbnQ6IE1vdXNlRXZlbnQgfCBudWxsLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBDb2xsZWN0IHByb21pc2VzIHJlZ2lzdGVyZWQgdmlhIHdhaXQoKVxuICAgIGNvbnN0IHdhaXRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdID0gW107XG5cbiAgICBjb25zdCBiZWZvcmVEcm9wRXZlbnQ6IEFYS2FuYmFuQmVmb3JlRHJvcEV2ZW50ID0ge1xuICAgICAgc2VuZGVyOiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICBpdGVtLFxuICAgICAgcHJldmlvdXNTdGF0dXNLZXksXG4gICAgICBjdXJyZW50U3RhdHVzS2V5LFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIGN1cnJlbnRJbmRleCxcbiAgICAgIGNhbmNlbGVkOiBmYWxzZSxcbiAgICAgIHdhaXQ6IChwcm9taXNlOiBQcm9taXNlPHZvaWQ+KSA9PiB3YWl0UHJvbWlzZXMucHVzaChwcm9taXNlKSxcbiAgICB9O1xuXG4gICAgLy8gRW1pdCB0aGUgZXZlbnQgLSBoYW5kbGVycyBjYW4gY2FsbCBldmVudC53YWl0KCkgdG8gcmVnaXN0ZXIgYXN5bmMgb3BlcmF0aW9uc1xuICAgIHRoaXMub25CZWZvcmVEcm9wLmVtaXQoYmVmb3JlRHJvcEV2ZW50KTtcblxuICAgIC8vIFdhaXQgZm9yIGFsbCByZWdpc3RlcmVkIHByb21pc2VzIHRvIGNvbXBsZXRlXG4gICAgaWYgKHdhaXRQcm9taXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbCh3YWl0UHJvbWlzZXMpO1xuICAgIH1cblxuICAgIHJldHVybiAhYmVmb3JlRHJvcEV2ZW50LmNhbmNlbGVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1zQnlJZChrZXk6IGFueSk6IEFYS2FuYmFuSXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcygpLmZpbHRlcigoZSkgPT4gZS5zdGF0dXNLZXkgPT09IGtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0T3JpZ2luYWxJdGVtc0J5SWQoa2V5OiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcigoZSkgPT4gZVt0aGlzLnN0YXR1c0tleUZpZWxkKCldID09PSBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0cmluZ2lmeSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFjdGlvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBBWEthbmJhbkl0ZW0pIHtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpLmZpbmQoXG4gICAgICAob3JpZ2luYWxJdGVtKSA9PiBvcmlnaW5hbEl0ZW1bdGhpcy5rZXlGaWVsZCgpXSA9PT0gaXRlbS5pZCxcbiAgICApO1xuICAgIHRoaXMub25BY3Rpb25DbGljay5lbWl0KHsgaXRlbTogb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UsIG5hdGl2ZUV2ZW50OiBldmVudCwgc2VuZGVyOiB0aGlzIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBBWEthbmJhbkl0ZW0pIHtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpLmZpbmQoXG4gICAgICAob3JpZ2luYWxJdGVtKSA9PiBvcmlnaW5hbEl0ZW1bdGhpcy5rZXlGaWVsZCgpXSA9PT0gaXRlbS5pZCxcbiAgICApO1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7IGl0ZW06IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlLCBuYXRpdmVFdmVudDogZXZlbnQsIHNlbmRlcjogdGhpcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEYmxDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogQVhLYW5iYW5JdGVtKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKFxuICAgICAgKG9yaWdpbmFsSXRlbSkgPT4gb3JpZ2luYWxJdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IGl0ZW0uaWQsXG4gICAgKTtcbiAgICB0aGlzLm9uSXRlbURibENsaWNrLmVtaXQoeyBpdGVtOiBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSwgbmF0aXZlRXZlbnQ6IGV2ZW50LCBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogQVhLYW5iYW5JdGVtKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2UoKS5maW5kKFxuICAgICAgKG9yaWdpbmFsSXRlbSkgPT4gb3JpZ2luYWxJdGVtW3RoaXMua2V5RmllbGQoKV0gPT09IGl0ZW0uaWQsXG4gICAgKTtcbiAgICB0aGlzLm9uSXRlbVJpZ2h0Q2xpY2suZW1pdCh7IGl0ZW06IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlLCBuYXRpdmVFdmVudDogZXZlbnQsIHNlbmRlcjogdGhpcyB9KTtcbiAgfVxufVxuIiwiQGZvciAoc3RhdHVzIG9mIGZpbHRlcmVkU3RhdHVzZXMoKTsgdHJhY2sgc3RhdHVzLmtleSkge1xuICA8ZGl2IGNsYXNzPVwiYXgta2FuYmFuLXN0YXR1cyB7eyBzdGF0dXMuY3NzQ2xhc3MgfX1cIj5cbiAgICA8YXgtaGVhZGVyPlxuICAgICAgQGlmIChoZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxheC10aXRsZT57eyBzdGF0dXMudGl0bGUgfX08L2F4LXRpdGxlPlxuICAgICAgfVxuICAgIDwvYXgtaGVhZGVyPlxuICAgIDxheC1jb250ZW50IGF4RHJvcExpc3QgZHJvcExpc3RHcm91cD1cImthbmJhblwiIFtpZF09XCJzdHJpbmdpZnkoc3RhdHVzLmtleSlcIiAoZHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgQGlmIChlbXB0eVRlbXBsYXRlKCkgJiYgZ2V0T3JpZ2luYWxJdGVtc0J5SWQoc3RhdHVzLmtleSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlKClcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogc3RhdHVzIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW1UZW1wbGF0ZSgpKSB7XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0T3JpZ2luYWxJdGVtc0J5SWQoc3RhdHVzLmtleSk7IHRyYWNrIGl0ZW1ba2V5RmllbGQoKV0pIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBheERyYWdcbiAgICAgICAgICAgIFtkcmFnRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgIGNsYXNzPVwie3sgaXRlbS5jc3NDbGFzcyB9fVwiXG4gICAgICAgICAgICBbZHJhZ1N0YXJ0RGVsYXldPVwiZHJhZ1N0YXJ0RGVsYXkoKVwiXG4gICAgICAgICAgICBbYXhUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcFRlbXBsYXRlKCkgPyBmYWxzZSA6IHRydWVcIlxuICAgICAgICAgICAgW2F4VG9vbHRpcF09XCJ0b29sdGlwVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbYXhUb29sdGlwQ29udGV4dF09XCJpdGVtXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJoYW5kbGVEYmxDbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgIChjb250ZXh0bWVudSk9XCJoYW5kbGVSaWdodENsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlKClcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChpdGVtIG9mIGdldEl0ZW1zQnlJZChzdGF0dXMua2V5KTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGF4RHJhZ1xuICAgICAgICAgICAgW2RyYWdEYXRhXT1cIml0ZW1cIlxuICAgICAgICAgICAgW2RyYWdDdXJzb3JdPVwiJ2dyYWInXCJcbiAgICAgICAgICAgIFtkcmFnU3RhcnREZWxheV09XCJkcmFnU3RhcnREZWxheSgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXgta2FuYmFuLWl0ZW0gIHt7IGl0ZW0uY3NzQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiYGF4LWthbmJhbi0ke2l0ZW0ucHJpb3JpdHkgPz8gJ3ByaW1hcnknfS1wZXJpb3JpdHlgXCJcbiAgICAgICAgICAgIFtheFRvb2x0aXBEaXNhYmxlZF09XCJ0b29sdGlwVGVtcGxhdGUoKSA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgICBbYXhUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFtheFRvb2x0aXBDb250ZXh0XT1cIml0ZW1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKGRibGNsaWNrKT1cImhhbmRsZURibENsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cImhhbmRsZVJpZ2h0Q2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWhlYWRpbmc+XG4gICAgICAgICAgICAgIDxheC10aXRsZT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWthbmJhbi10cnVuY2F0ZVwiPnt7IGl0ZW0udGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChoYXNBY3Rpb25zKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtaWNvbiBheC1pY29uLW1vcmUtaG9yaXpvbnRhbCBheC1rYW5iYW4tYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2F4LXRpdGxlPlxuICAgICAgICAgICAgICA8YXgtc3VidGl0bGU+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvYXgtc3VidGl0bGU+XG4gICAgICAgICAgICA8L2F4LWhlYWRpbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udGVudEZvb3RlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgPGF4LWZvb3Rlcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50Rm9vdGVyVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYXgtZm9vdGVyPlxuICAgICAgfVxuICAgIDwvYXgtY29udGVudD5cbiAgICBAaWYgKGZvb3RlclRlbXBsYXRlKCkpIHtcbiAgICAgIDxheC1mb290ZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9heC1mb290ZXI+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMta2FuYmFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9rYW5iYW4vc3JjL2Fjb3JleC1jb21wb25lbnRzLWthbmJhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -52,12 +52,20 @@ class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookCom
52
52
  this.setCountries();
53
53
  this.cdr.detectChanges();
54
54
  this.selectBox().refresh();
55
- this.selectedCountry.set(this.countries()[0]);
56
55
  }, ...(ngDevMode ? [{ debugName: "#countriesChanged" }] : []));
56
+ this.#eff = effect(() => {
57
+ if (this.country()) {
58
+ this.selectedCountry.set(this.countries().find((c) => c.code === this.country()));
59
+ }
60
+ setTimeout(() => {
61
+ if (!this.value)
62
+ this.selectedCountry.set(this.countries()[0]);
63
+ });
64
+ }, ...(ngDevMode ? [{ debugName: "#eff" }] : []));
57
65
  /** @ignore */
58
66
  this.countries = signal([], ...(ngDevMode ? [{ debugName: "countries" }] : []));
59
67
  /** @ignore */
60
- this.selectedCountry = signal(COUNTRIES[0], ...(ngDevMode ? [{ debugName: "selectedCountry" }] : []));
68
+ this.selectedCountry = signal(null, ...(ngDevMode ? [{ debugName: "selectedCountry" }] : []));
61
69
  /** @ignore */
62
70
  this.dataSource = new AXDataSource({
63
71
  pageSize: 10,
@@ -79,16 +87,6 @@ class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookCom
79
87
  /** @ignore */
80
88
  this.#init = afterNextRender(() => {
81
89
  this.setCountries();
82
- this.setDefaultValue();
83
- setTimeout(() => {
84
- if (!this.value)
85
- return;
86
- const result = this.parsePhoneNumber(this.value);
87
- if (result.country) {
88
- this.selectedCountry.set(result.country);
89
- this.value = result.nationalNumber;
90
- }
91
- });
92
90
  });
93
91
  /**
94
92
  * Determines if the keyboard event is a valid action based on allowed keys and key codes.
@@ -113,6 +111,7 @@ class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookCom
113
111
  return await this.translationService.translateAsync('@acorex:validation.messages.phone');
114
112
  }
115
113
  #countriesChanged;
114
+ #eff;
116
115
  /** @ignore */
117
116
  _handleModelChange(value) {
118
117
  // Prevent value change if component is disabled or readonly
@@ -129,6 +128,15 @@ class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookCom
129
128
  }
130
129
  /** @ignore */
131
130
  #init;
131
+ internalValueChanged(value) {
132
+ if (!value)
133
+ return;
134
+ const result = this.parsePhoneNumber(value);
135
+ if (result.country) {
136
+ this.selectedCountry.set(result.country);
137
+ this.commitValue(result.nationalNumber);
138
+ }
139
+ }
132
140
  /**
133
141
  * Updates the list of countries based on included or excluded codes.
134
142
  *
@@ -146,19 +154,6 @@ class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookCom
146
154
  }
147
155
  this.flags.set(COUNTRIES_FLAG_BASE64);
148
156
  }
149
- /**
150
- * Sets the default selected country based on the provided country code or the first country in the list.
151
- *
152
- * @returns void - No return value. Updates the selected country.
153
- */
154
- setDefaultValue() {
155
- if (this.country()) {
156
- this.selectedCountry.set(this.countries().find((c) => c.code === this.country()));
157
- }
158
- else {
159
- this.selectedCountry.set(this.countries()[0]);
160
- }
161
- }
162
157
  handleKeyDown(e) {
163
158
  // Prevent all keyboard actions if component is disabled
164
159
  if (this.disabled) {
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-components-phone-box.mjs","sources":["../tmp-esm2022/phone-box/lib/phone-box.component.js","../tmp-esm2022/phone-box/lib/phone-box.module.js","../tmp-esm2022/phone-box/acorex-components-phone-box.js"],"sourcesContent":["import { AXClearableComponent, AXComponent, AXDataSource, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/cdk/common';\nimport { AXDecoratorClearButtonComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTextBoxComponent } from '@acorex/components/text-box';\nimport { COUNTRIES, COUNTRIES_FLAG_BASE64 } from '@acorex/core/constants';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild, ViewEncapsulation, afterNextRender, effect, forwardRef, inject, input, model, signal, viewChild, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filter } from 'lodash-es';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/form\";\n/**\n * @category\n * A component that handles phone number input with various configurations.\n */\nexport class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {\n constructor() {\n super(...arguments);\n /** @ignore */\n this._updateOn = 'change';\n this.flags = signal(COUNTRIES_FLAG_BASE64, ...(ngDevMode ? [{ debugName: \"flags\" }] : []));\n this.translationService = inject(AXTranslationService);\n this.messageError = this.callTranslate();\n /**\n * static precode.\n */\n this.precode = input(...(ngDevMode ? [undefined, { debugName: \"precode\" }] : []));\n /**\n * The default country value for the component.\n */\n this.country = model('', ...(ngDevMode ? [{ debugName: \"country\" }] : []));\n /**\n * List of included values for the component.\n */\n this.included = input([], ...(ngDevMode ? [{ debugName: \"included\" }] : []));\n /**\n * List of excluded values for the component.\n */\n this.excluded = input([], ...(ngDevMode ? [{ debugName: \"excluded\" }] : []));\n this.selectBox = viewChild('s', ...(ngDevMode ? [{ debugName: \"selectBox\" }] : []));\n this.#countriesChanged = effect(() => {\n this.included();\n this.excluded();\n this.setCountries();\n this.cdr.detectChanges();\n this.selectBox().refresh();\n this.selectedCountry.set(this.countries()[0]);\n }, ...(ngDevMode ? [{ debugName: \"#countriesChanged\" }] : []));\n /** @ignore */\n this.countries = signal([], ...(ngDevMode ? [{ debugName: \"countries\" }] : []));\n /** @ignore */\n this.selectedCountry = signal(COUNTRIES[0], ...(ngDevMode ? [{ debugName: \"selectedCountry\" }] : []));\n /** @ignore */\n this.dataSource = new AXDataSource({\n pageSize: 10,\n load: (e) => {\n return new Promise((resolve) => {\n const list = this.countries();\n const result = e.filter\n ? filter(list, (c) => c.name.toUpperCase().includes(e.filter.value.toUpperCase()) ||\n c.iso2code.toUpperCase().includes(e.filter.value.toUpperCase()) ||\n c.code.toUpperCase().includes(e.filter.value.toUpperCase()))\n : list;\n resolve({\n items: result.slice(e.skip, e.skip + e.take),\n total: result.length,\n });\n });\n },\n });\n /** @ignore */\n this.#init = afterNextRender(() => {\n this.setCountries();\n this.setDefaultValue();\n setTimeout(() => {\n if (!this.value)\n return;\n const result = this.parsePhoneNumber(this.value);\n if (result.country) {\n this.selectedCountry.set(result.country);\n this.value = result.nationalNumber;\n }\n });\n });\n /**\n * Determines if the keyboard event is a valid action based on allowed keys and key codes.\n *\n * @param event - The keyboard event to validate\n * @returns boolean - True if the key action is valid, false otherwise\n */\n this.isValidKeyboardAction = (event) => {\n const _code = parseInt(event.key);\n const ALLOWED_KEY = ['Backspace', 'ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Tab'];\n const IS_CTRL_A = () => (event.ctrlKey && event.key === 'a') || (event.ctrlKey && event.key === 'A');\n // eslint-disable-next-line no-constant-condition\n if ((_code >= 0 && _code <= 9) || ALLOWED_KEY.includes(event.key) || IS_CTRL_A()) {\n return true;\n }\n else {\n return false;\n }\n };\n }\n async callTranslate() {\n return await this.translationService.translateAsync('@acorex:validation.messages.phone');\n }\n #countriesChanged;\n /** @ignore */\n _handleModelChange(value) {\n // Prevent value change if component is disabled or readonly\n if (this.disabled || this.readonly) {\n return;\n }\n this.commitValue(value, true);\n }\n /** @ignore */\n handleCountryOnClosed() {\n setTimeout(() => {\n this.textbox?.focus();\n }, 300);\n }\n /** @ignore */\n #init;\n /**\n * Updates the list of countries based on included or excluded codes.\n *\n * @returns void - No return value. Updates the internal countries list.\n */\n setCountries() {\n if (this.included().length) {\n this.countries.set(COUNTRIES.filter((c) => this.included().includes(c.code)));\n }\n else if (this.excluded().length) {\n this.countries.set(COUNTRIES.filter((c) => !this.excluded().includes(c.code)));\n }\n else {\n this.countries.set(COUNTRIES);\n }\n this.flags.set(COUNTRIES_FLAG_BASE64);\n }\n /**\n * Sets the default selected country based on the provided country code or the first country in the list.\n *\n * @returns void - No return value. Updates the selected country.\n */\n setDefaultValue() {\n if (this.country()) {\n this.selectedCountry.set(this.countries().find((c) => c.code === this.country()));\n }\n else {\n this.selectedCountry.set(this.countries()[0]);\n }\n }\n handleKeyDown(e) {\n // Prevent all keyboard actions if component is disabled\n if (this.disabled) {\n e.preventDefault();\n e.stopImmediatePropagation();\n return;\n }\n // In readonly state, only allow copy operations (Ctrl+C, Ctrl+A)\n if (this.readonly) {\n const isCopyOperation = (e.ctrlKey && (e.key === 'c' || e.key === 'C')) || (e.ctrlKey && (e.key === 'a' || e.key === 'A'));\n if (!isCopyOperation) {\n e.preventDefault();\n e.stopImmediatePropagation();\n return;\n }\n }\n if (this.isValidKeyboardAction(e)) {\n this.emitOnKeydownEvent(e);\n }\n else {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n parsePhoneNumber(fullNumber) {\n // 1) Normalize input\n let normalized = fullNumber.replace(/[^0-9+]/g, '');\n // convert 00... → +...\n if (normalized.startsWith('00')) {\n normalized = '+' + normalized.slice(2);\n }\n // 2) Sort countries by longest prefix first\n const sorted = [...COUNTRIES].sort((a, b) => b.iso2code.length - a.iso2code.length);\n // 3) Match the country code\n for (const country of sorted) {\n if (normalized.startsWith(country.iso2code)) {\n const countryCode = country.iso2code;\n const nationalNumber = normalized.slice(countryCode.length);\n return {\n country,\n countryCode,\n nationalNumber,\n };\n }\n }\n // 4) No match found\n return {\n country: null,\n countryCode: null,\n nationalNumber: normalized,\n };\n }\n /** @ignore */\n _handleCountryValueChanged(event) {\n // Prevent value change if component is disabled or readonly\n if (this.disabled || this.readonly) {\n return;\n }\n this.selectedCountry.set(event.component.selectedItems[0]);\n }\n get __hostName() {\n return this.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: AXPhoneBoxComponent, isStandalone: true, selector: \"ax-phone-box\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: \"state\", publicName: \"state\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: false, isRequired: false, transformFunction: null }, allowNull: { classPropertyName: \"allowNull\", publicName: \"allowNull\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, autoComplete: { classPropertyName: \"autoComplete\", publicName: \"autoComplete\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, classNames: { classPropertyName: \"classNames\", publicName: \"class\", isSignal: false, isRequired: false, transformFunction: null }, precode: { classPropertyName: \"precode\", publicName: \"precode\", isSignal: true, isRequired: false, transformFunction: null }, country: { classPropertyName: \"country\", publicName: \"country\", isSignal: true, isRequired: false, transformFunction: null }, included: { classPropertyName: \"included\", publicName: \"included\", isSignal: true, isRequired: false, transformFunction: null }, excluded: { classPropertyName: \"excluded\", publicName: \"excluded\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: \"onBlur\", onFocus: \"onFocus\", valueChange: \"valueChange\", stateChange: \"stateChange\", onValueChanged: \"onValueChanged\", readonlyChange: \"readonlyChange\", disabledChange: \"disabledChange\", onKeyDown: \"onKeyDown\", onKeyUp: \"onKeyUp\", onKeyPress: \"onKeyPress\", country: \"countryChange\" }, host: { attributes: { \"ngSkipHydration\": \"true\" }, properties: { \"class.ax-state-disabled\": \"disabled\", \"class.ax-state-readonly\": \"readonly\", \"attr.name\": \"this.__hostName\" } }, providers: [\n { provide: AXComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXClearableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXValuableComponent, useExisting: AXPhoneBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXPhoneBoxComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"selectBox\", first: true, predicate: [\"s\"], descendants: true, isSignal: true }, { propertyName: \"textbox\", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ax-text-box\\n dir=\\\"ltr\\\"\\n [look]=\\\"look\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [mask-options]=\\\"{ mask: selectedCountry()?.format }\\\"\\n [placeholder]=\\\"selectedCountry()?.format\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n (onBlur)=\\\"emitOnBlurEvent($event.nativeEvent)\\\"\\n (onFocus)=\\\"emitOnFocusEvent($event.nativeEvent)\\\"\\n (onKeyDown)=\\\"handleKeyDown($event.nativeEvent)\\\"\\n (onKeyPress)=\\\"emitOnKeypressEvent($event.nativeEvent)\\\"\\n (onKeyUp)=\\\"emitOnKeyupEvent($event.nativeEvent)\\\"\\n>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n @for (regex of [selectedCountry()?.regex]; track regex) {\\n @if (regex && messageError) {\\n <ax-validation-rule\\n rule=\\\"regex\\\"\\n [options]=\\\"{\\n message: messageError,\\n pattern: regex,\\n }\\\"\\n >\\n </ax-validation-rule>\\n }\\n }\\n\\n <ax-prefix>\\n @if (precode()) {\\n <ax-text>{{ precode() }}</ax-text>\\n } @else {\\n <ax-select-box\\n #s\\n look=\\\"blank\\\"\\n [disabled]=\\\"disabled || readonly\\\"\\n [readonly]=\\\"readonly\\\"\\n [dropdownWidth]=\\\"'320px'\\\"\\n [dataSource]=\\\"dataSource\\\"\\n [ngModel]=\\\"selectedCountry()\\\"\\n [textField]=\\\"'iso2code'\\\"\\n [multiple]=\\\"false\\\"\\n [valueField]=\\\"'code'\\\"\\n [itemTemplate]=\\\"customItemTemplate\\\"\\n [selectedTemplate]=\\\"selectedTemplate\\\"\\n (onValueChanged)=\\\"_handleCountryValueChanged($event)\\\"\\n (onClosed)=\\\"handleCountryOnClosed()\\\"\\n [tabIndex]=\\\"included().length === 1 ? '-1' : '1'\\\"\\n >\\n <ax-search-box class=\\\"ax-sm\\\" look=\\\"fill\\\">\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-template #customItemTemplate let-item>\\n <div class=\\\"ax-country-item\\\">\\n <div\\n class=\\\"ax-country-flag\\\"\\n [ngStyle]=\\\"{\\n 'background-position': item.data.bkPosition?.x + ' ' + item.data.bkPosition?.y,\\n 'background-image': 'url(' + flags() + ')',\\n }\\\"\\n ></div>\\n <div>\\n <span class=\\\"ax-country-name\\\">{{ item.data.name }}</span>\\n <span class=\\\"ax-iso2code\\\">{{ item.data.iso2code }}</span>\\n </div>\\n </div>\\n </ng-template>\\n <ng-template #selectedTemplate let-item>\\n <div class=\\\"ax-selected-country\\\">\\n <span>{{ item.data.iso2code }}</span>\\n </div>\\n </ng-template>\\n <ng-template #loading></ng-template>\\n </ax-select-box>\\n }\\n </ax-prefix>\\n</ax-text-box>\\n\\n<ng-content select=\\\"ax-clear-button \\\"></ng-content>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-phone-box .ax-editor-container{--ax-comp-editor-space-start-size: 0}ax-phone-box.ax-state-disabled ax-text-box{pointer-events:auto;opacity:.6;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-text-box .ax-editor,ax-phone-box.ax-state-disabled ax-text-box .ax-input{pointer-events:auto;cursor:not-allowed;-webkit-user-select:none;user-select:none}ax-phone-box.ax-state-disabled ax-select-box{pointer-events:none;opacity:.6}ax-phone-box.ax-state-disabled ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-select-box .ax-editor-button{pointer-events:none;cursor:not-allowed}ax-phone-box.ax-state-readonly ax-text-box .ax-editor,ax-phone-box.ax-state-readonly ax-text-box .ax-input{-webkit-user-select:text;user-select:text}ax-phone-box.ax-state-readonly ax-select-box{pointer-events:none}ax-phone-box.ax-state-readonly ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:default}ax-phone-box.ax-state-readonly ax-select-box .ax-editor-button{pointer-events:none;cursor:default}ax-phone-box ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important}ax-phone-box ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-box-outline-width: 0;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-editor,ax-phone-box ax-select-box ax-dropdown-box .ax-input{--ax-comp-editor-space-start-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-content{padding-top:0!important}.ax-country-item{padding:.75rem .5rem;cursor:pointer;display:flex;gap:.5rem;align-items:center}.ax-country-item:hover{background-color:rgba(var(--ax-sys-color-ghost-lighter-surface))}.ax-country-item .ax-country-name{font-weight:500;margin-inline-end:.5rem}.ax-country-item .ax-iso2code{opacity:.7}.ax-country-flag{width:25px!important;height:20px!important;background-repeat:no-repeat}.ax-selected-country{display:flex;gap:.5rem;align-items:center;padding-inline-start:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"itemHeight\", \"maxVisibleItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"component\", type: AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"directive\", type: i2.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-phone-box', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n ngSkipHydration: 'true',\n '[class.ax-state-disabled]': 'disabled',\n '[class.ax-state-readonly]': 'readonly',\n }, inputs: [\n 'disabled',\n 'tabIndex',\n 'readonly',\n 'value',\n 'state',\n 'name',\n 'id',\n 'placeholder',\n 'maxLength',\n 'allowNull',\n 'type',\n 'autoComplete',\n 'look',\n ], outputs: [\n 'onBlur',\n 'onFocus',\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'readonlyChange',\n 'disabledChange',\n 'onKeyDown',\n 'onKeyUp',\n 'onKeyPress',\n ], providers: [\n { provide: AXComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXClearableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXValuableComponent, useExisting: AXPhoneBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXPhoneBoxComponent),\n multi: true,\n },\n ], imports: [\n AXTextBoxComponent,\n FormsModule,\n AXDecoratorGenericComponent,\n AXSelectBoxComponent,\n AXSearchBoxComponent,\n AXDecoratorClearButtonComponent,\n NgStyle,\n AXFormModule,\n ], template: \"<ax-text-box\\n dir=\\\"ltr\\\"\\n [look]=\\\"look\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [mask-options]=\\\"{ mask: selectedCountry()?.format }\\\"\\n [placeholder]=\\\"selectedCountry()?.format\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n (onBlur)=\\\"emitOnBlurEvent($event.nativeEvent)\\\"\\n (onFocus)=\\\"emitOnFocusEvent($event.nativeEvent)\\\"\\n (onKeyDown)=\\\"handleKeyDown($event.nativeEvent)\\\"\\n (onKeyPress)=\\\"emitOnKeypressEvent($event.nativeEvent)\\\"\\n (onKeyUp)=\\\"emitOnKeyupEvent($event.nativeEvent)\\\"\\n>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n @for (regex of [selectedCountry()?.regex]; track regex) {\\n @if (regex && messageError) {\\n <ax-validation-rule\\n rule=\\\"regex\\\"\\n [options]=\\\"{\\n message: messageError,\\n pattern: regex,\\n }\\\"\\n >\\n </ax-validation-rule>\\n }\\n }\\n\\n <ax-prefix>\\n @if (precode()) {\\n <ax-text>{{ precode() }}</ax-text>\\n } @else {\\n <ax-select-box\\n #s\\n look=\\\"blank\\\"\\n [disabled]=\\\"disabled || readonly\\\"\\n [readonly]=\\\"readonly\\\"\\n [dropdownWidth]=\\\"'320px'\\\"\\n [dataSource]=\\\"dataSource\\\"\\n [ngModel]=\\\"selectedCountry()\\\"\\n [textField]=\\\"'iso2code'\\\"\\n [multiple]=\\\"false\\\"\\n [valueField]=\\\"'code'\\\"\\n [itemTemplate]=\\\"customItemTemplate\\\"\\n [selectedTemplate]=\\\"selectedTemplate\\\"\\n (onValueChanged)=\\\"_handleCountryValueChanged($event)\\\"\\n (onClosed)=\\\"handleCountryOnClosed()\\\"\\n [tabIndex]=\\\"included().length === 1 ? '-1' : '1'\\\"\\n >\\n <ax-search-box class=\\\"ax-sm\\\" look=\\\"fill\\\">\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-template #customItemTemplate let-item>\\n <div class=\\\"ax-country-item\\\">\\n <div\\n class=\\\"ax-country-flag\\\"\\n [ngStyle]=\\\"{\\n 'background-position': item.data.bkPosition?.x + ' ' + item.data.bkPosition?.y,\\n 'background-image': 'url(' + flags() + ')',\\n }\\\"\\n ></div>\\n <div>\\n <span class=\\\"ax-country-name\\\">{{ item.data.name }}</span>\\n <span class=\\\"ax-iso2code\\\">{{ item.data.iso2code }}</span>\\n </div>\\n </div>\\n </ng-template>\\n <ng-template #selectedTemplate let-item>\\n <div class=\\\"ax-selected-country\\\">\\n <span>{{ item.data.iso2code }}</span>\\n </div>\\n </ng-template>\\n <ng-template #loading></ng-template>\\n </ax-select-box>\\n }\\n </ax-prefix>\\n</ax-text-box>\\n\\n<ng-content select=\\\"ax-clear-button \\\"></ng-content>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-phone-box .ax-editor-container{--ax-comp-editor-space-start-size: 0}ax-phone-box.ax-state-disabled ax-text-box{pointer-events:auto;opacity:.6;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-text-box .ax-editor,ax-phone-box.ax-state-disabled ax-text-box .ax-input{pointer-events:auto;cursor:not-allowed;-webkit-user-select:none;user-select:none}ax-phone-box.ax-state-disabled ax-select-box{pointer-events:none;opacity:.6}ax-phone-box.ax-state-disabled ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-select-box .ax-editor-button{pointer-events:none;cursor:not-allowed}ax-phone-box.ax-state-readonly ax-text-box .ax-editor,ax-phone-box.ax-state-readonly ax-text-box .ax-input{-webkit-user-select:text;user-select:text}ax-phone-box.ax-state-readonly ax-select-box{pointer-events:none}ax-phone-box.ax-state-readonly ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:default}ax-phone-box.ax-state-readonly ax-select-box .ax-editor-button{pointer-events:none;cursor:default}ax-phone-box ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important}ax-phone-box ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-box-outline-width: 0;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-editor,ax-phone-box ax-select-box ax-dropdown-box .ax-input{--ax-comp-editor-space-start-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-content{padding-top:0!important}.ax-country-item{padding:.75rem .5rem;cursor:pointer;display:flex;gap:.5rem;align-items:center}.ax-country-item:hover{background-color:rgba(var(--ax-sys-color-ghost-lighter-surface))}.ax-country-item .ax-country-name{font-weight:500;margin-inline-end:.5rem}.ax-country-item .ax-iso2code{opacity:.7}.ax-country-flag{width:25px!important;height:20px!important;background-repeat:no-repeat}.ax-selected-country{display:flex;gap:.5rem;align-items:center;padding-inline-start:.5rem}\\n\"] }]\n }], propDecorators: { textbox: [{\n type: ViewChild,\n args: [AXTextBoxComponent, { static: true }]\n }], classNames: [{\n type: Input,\n args: ['class']\n }], precode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"precode\", required: false }] }], country: [{ type: i0.Input, args: [{ isSignal: true, alias: \"country\", required: false }] }, { type: i0.Output, args: [\"countryChange\"] }], included: [{ type: i0.Input, args: [{ isSignal: true, alias: \"included\", required: false }] }], excluded: [{ type: i0.Input, args: [{ isSignal: true, alias: \"excluded\", required: false }] }], selectBox: [{ type: i0.ViewChild, args: ['s', { isSignal: true }] }], __hostName: [{\n type: HostBinding,\n args: ['attr.name']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcGhvbmUtYm94L3NyYy9saWIvcGhvbmUtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcGhvbmUtYm94L3NyYy9saWIvcGhvbmUtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBRW5CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQWUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQUVuQzs7O0dBR0c7QUE2REgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLE9BQU8sQ0FBQyxDQUFBLHlCQUFpQyxDQUFBLEVBQUUsZUFBZSxDQUFDO0lBNURwRzs7UUE2REUsY0FBYztRQUNKLGNBQVMsR0FBaUMsUUFBUSxDQUFDO1FBTW5ELFVBQUssR0FBRyxNQUFNLENBQUMscUJBQXFCLGlEQUFDLENBQUM7UUFFeEMsdUJBQWtCLEdBQXlCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXRFLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBWTlDOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEtBQUssNkRBQUUsQ0FBQztRQUVsQjs7V0FFRztRQUNILFlBQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxtREFBQyxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBVyxFQUFFLG9EQUFDLENBQUM7UUFFL0I7O1dBRUc7UUFDSCxhQUFRLEdBQUcsS0FBSyxDQUFXLEVBQUUsb0RBQUMsQ0FBQztRQUV2QixjQUFTLEdBQUcsU0FBUyxDQUF1QixHQUFHLHFEQUFDLENBQUM7UUFFekQsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDLDZEQUFDLENBQUM7UUFFSCxjQUFjO1FBQ0osY0FBUyxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxxREFBQyxDQUFDO1FBRWhELGNBQWM7UUFDSixvQkFBZSxHQUFHLE1BQU0sQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLDJEQUFDLENBQUM7UUFZOUQsY0FBYztRQUNKLGVBQVUsR0FBRyxJQUFJLFlBQVksQ0FBYztZQUNuRCxRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNWLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUM5QixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTTt3QkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FDSixJQUFJLEVBQ0osQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDdkUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUMzRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDMUU7d0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDVCxPQUFPLENBQUM7d0JBQ04sS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQzVDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTTtxQkFDckIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUNGLENBQUMsQ0FBQztRQVNILGNBQWM7UUFDZCxVQUFLLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztnQkFDckMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSDs7Ozs7V0FLRztRQUNILDBCQUFxQixHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQy9DLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFbEMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTVGLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ3JHLGlEQUFpRDtZQUNqRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDakYsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQyxDQUFDO0tBOEdIO0lBdE9DLEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE9BQU8sTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQThCRCxpQkFBaUIsQ0FPZDtJQVFILGNBQWM7SUFDSixrQkFBa0IsQ0FBQyxLQUFvQjtRQUMvQyw0REFBNEQ7UUFDNUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUF5QkQsY0FBYztJQUNKLHFCQUFxQjtRQUM3QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsY0FBYztJQUNkLEtBQUssQ0FZRjtJQXNCSDs7OztPQUlHO0lBQ0gsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRVMsYUFBYSxDQUFDLENBQWdCO1FBQ3RDLHdEQUF3RDtRQUN4RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFFRCxpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxlQUFlLEdBQ25CLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFckcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUM3QixPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFVBQWtCO1FBS3pDLHFCQUFxQjtRQUNyQixJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVwRCx1QkFBdUI7UUFDdkIsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEMsVUFBVSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEYsNEJBQTRCO1FBQzVCLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO2dCQUNyQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFNUQsT0FBTztvQkFDTCxPQUFPO29CQUNQLFdBQVc7b0JBQ1gsY0FBYztpQkFDZixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJO1lBQ2IsV0FBVyxFQUFFLElBQUk7WUFDakIsY0FBYyxFQUFFLFVBQVU7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO0lBQ2QsMEJBQTBCLENBQUMsS0FBMEI7UUFDbkQsNERBQTREO1FBQzVELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUNZLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7K0dBblBVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHl4RkF0Qm5CO1lBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRTtZQUMxRCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUU7WUFDbkUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFO1lBQ25FLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRTtZQUNsRTtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysb0tBaUJVLGtCQUFrQixxRkMzRy9CLHd0RkFpRkEsczFFRFdJLGtCQUFrQixpWUFDbEIsV0FBVywrVkFDWCwyQkFBMkIseUxBQzNCLG9CQUFvQiwycUJBQ3BCLG9CQUFvQixxV0FDcEIsK0JBQStCLDhFQUMvQixPQUFPLDBFQUNQLFlBQVk7OzRGQUdILG1CQUFtQjtrQkE1RC9CLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLGVBQWUsRUFBRSxNQUFNO3dCQUN2QiwyQkFBMkIsRUFBRSxVQUFVO3dCQUN2QywyQkFBMkIsRUFBRSxVQUFVO3FCQUN4QyxVQUNPO3dCQUNOLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixVQUFVO3dCQUNWLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxNQUFNO3dCQUNOLElBQUk7d0JBQ0osYUFBYTt3QkFDYixXQUFXO3dCQUNYLFdBQVc7d0JBQ1gsTUFBTTt3QkFDTixjQUFjO3dCQUNkLE1BQU07cUJBQ1AsV0FDUTt3QkFDUCxRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxZQUFZO3FCQUNiLGFBQ1U7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQzFELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQ25FLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQ25FLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQ2xFOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixXQUNRO3dCQUNQLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCwyQkFBMkI7d0JBQzNCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiwrQkFBK0I7d0JBQy9CLE9BQU87d0JBQ1AsWUFBWTtxQkFDYjs7c0JBT0EsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O3NCQWdCOUMsS0FBSzt1QkFBQyxPQUFPO21lQXVCc0MsR0FBRztzQkFvTXRELFdBQVc7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xlYXJhYmxlQ29tcG9uZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhEYXRhU291cmNlLFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1ZUNoYW5nZWRFdmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JDbGVhckJ1dHRvbkNvbXBvbmVudCwgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYVGV4dEJveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBDT1VOVFJJRVMsIENPVU5UUklFU19GTEFHX0JBU0U2NCwgQ291bnRyeUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG4vKipcbiAqIEBjYXRlZ29yeVxuICogQSBjb21wb25lbnQgdGhhdCBoYW5kbGVzIHBob25lIG51bWJlciBpbnB1dCB3aXRoIHZhcmlvdXMgY29uZmlndXJhdGlvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXBob25lLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9waG9uZS1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9waG9uZS1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyxcbiAgICAnW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5heC1zdGF0ZS1yZWFkb25seV0nOiAncmVhZG9ubHknLFxuICB9LFxuICBpbnB1dHM6IFtcbiAgICAnZGlzYWJsZWQnLFxuICAgICd0YWJJbmRleCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICdzdGF0ZScsXG4gICAgJ25hbWUnLFxuICAgICdpZCcsXG4gICAgJ3BsYWNlaG9sZGVyJyxcbiAgICAnbWF4TGVuZ3RoJyxcbiAgICAnYWxsb3dOdWxsJyxcbiAgICAndHlwZScsXG4gICAgJ2F1dG9Db21wbGV0ZScsXG4gICAgJ2xvb2snLFxuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uQmx1cicsXG4gICAgJ29uRm9jdXMnLFxuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdyZWFkb25seUNoYW5nZScsXG4gICAgJ2Rpc2FibGVkQ2hhbmdlJyxcbiAgICAnb25LZXlEb3duJyxcbiAgICAnb25LZXlVcCcsXG4gICAgJ29uS2V5UHJlc3MnLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQaG9uZUJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBob25lQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWENsZWFyYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGhvbmVCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBob25lQm94Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWFBob25lQm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWFRleHRCb3hDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYU2VsZWN0Qm94Q29tcG9uZW50LFxuICAgIEFYU2VhcmNoQm94Q29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9yQ2xlYXJCdXR0b25Db21wb25lbnQsXG4gICAgTmdTdHlsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUGhvbmVCb3hDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQ8c3RyaW5nPiwgTVhMb29rQ29tcG9uZW50KSB7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfdXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcgPSAnY2hhbmdlJztcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSB0ZXh0Ym94OiBBWFRleHRCb3hDb21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIGZsYWdzID0gc2lnbmFsKENPVU5UUklFU19GTEFHX0JBU0U2NCk7XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgbWVzc2FnZUVycm9yID0gdGhpcy5jYWxsVHJhbnNsYXRlKCk7XG5cbiAgYXN5bmMgY2FsbFRyYW5zbGF0ZSgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6dmFsaWRhdGlvbi5tZXNzYWdlcy5waG9uZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoJ2NsYXNzJylcbiAgY2xhc3NOYW1lczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzdGF0aWMgcHJlY29kZS5cbiAgICovXG4gIHByZWNvZGUgPSBpbnB1dCgpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBjb3VudHJ5IHZhbHVlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY291bnRyeSA9IG1vZGVsPHN0cmluZz4oJycpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGluY2x1ZGVkIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGluY2x1ZGVkID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcblxuICAvKipcbiAgICogTGlzdCBvZiBleGNsdWRlZCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBleGNsdWRlZCA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RCb3ggPSB2aWV3Q2hpbGQ8QVhTZWxlY3RCb3hDb21wb25lbnQ+KCdzJyk7XG5cbiAgI2NvdW50cmllc0NoYW5nZWQgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuaW5jbHVkZWQoKTtcbiAgICB0aGlzLmV4Y2x1ZGVkKCk7XG4gICAgdGhpcy5zZXRDb3VudHJpZXMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZWxlY3RCb3goKS5yZWZyZXNoKCk7XG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KHRoaXMuY291bnRyaWVzKClbMF0pO1xuICB9KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY291bnRyaWVzID0gc2lnbmFsPENvdW50cnlJdGVtW10+KFtdKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb3VudHJ5ID0gc2lnbmFsPENvdW50cnlJdGVtPihDT1VOVFJJRVNbMF0pO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfaGFuZGxlTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICAvLyBQcmV2ZW50IHZhbHVlIGNoYW5nZSBpZiBjb21wb25lbnQgaXMgZGlzYWJsZWQgb3IgcmVhZG9ubHlcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jb21taXRWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgZGF0YVNvdXJjZSA9IG5ldyBBWERhdGFTb3VyY2U8Q291bnRyeUl0ZW0+KHtcbiAgICBwYWdlU2l6ZTogMTAsXG4gICAgbG9hZDogKGUpID0+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5jb3VudHJpZXMoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZS5maWx0ZXJcbiAgICAgICAgICA/IGZpbHRlcihcbiAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgKGMpID0+XG4gICAgICAgICAgICAgICAgYy5uYW1lLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoKGUuZmlsdGVyLnZhbHVlIGFzIHN0cmluZykudG9VcHBlckNhc2UoKSkgfHxcbiAgICAgICAgICAgICAgICBjLmlzbzJjb2RlLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoKGUuZmlsdGVyLnZhbHVlIGFzIHN0cmluZykudG9VcHBlckNhc2UoKSkgfHxcbiAgICAgICAgICAgICAgICBjLmNvZGUudG9VcHBlckNhc2UoKS5pbmNsdWRlcygoZS5maWx0ZXIudmFsdWUgYXMgc3RyaW5nKS50b1VwcGVyQ2FzZSgpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IGxpc3Q7XG4gICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgIGl0ZW1zOiByZXN1bHQuc2xpY2UoZS5za2lwLCBlLnNraXAgKyBlLnRha2UpLFxuICAgICAgICAgIHRvdGFsOiByZXN1bHQubGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBoYW5kbGVDb3VudHJ5T25DbG9zZWQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRleHRib3g/LmZvY3VzKCk7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gICNpbml0ID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICB0aGlzLnNldENvdW50cmllcygpO1xuICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkgcmV0dXJuO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wYXJzZVBob25lTnVtYmVyKHRoaXMudmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdC5jb3VudHJ5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnNldChyZXN1bHQuY291bnRyeSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSByZXN1bHQubmF0aW9uYWxOdW1iZXI7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBrZXlib2FyZCBldmVudCBpcyBhIHZhbGlkIGFjdGlvbiBiYXNlZCBvbiBhbGxvd2VkIGtleXMgYW5kIGtleSBjb2Rlcy5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGtleWJvYXJkIGV2ZW50IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIGJvb2xlYW4gLSBUcnVlIGlmIHRoZSBrZXkgYWN0aW9uIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzVmFsaWRLZXlib2FyZEFjdGlvbiA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGNvbnN0IF9jb2RlID0gcGFyc2VJbnQoZXZlbnQua2V5KTtcblxuICAgIGNvbnN0IEFMTE9XRURfS0VZID0gWydCYWNrc3BhY2UnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nLCAnQXJyb3dSaWdodCcsICdBcnJvd0xlZnQnLCAnVGFiJ107XG5cbiAgICBjb25zdCBJU19DVFJMX0EgPSAoKSA9PiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5rZXkgPT09ICdhJykgfHwgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQua2V5ID09PSAnQScpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICBpZiAoKF9jb2RlID49IDAgJiYgX2NvZGUgPD0gOSkgfHwgQUxMT1dFRF9LRVkuaW5jbHVkZXMoZXZlbnQua2V5KSB8fCBJU19DVFJMX0EoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGxpc3Qgb2YgY291bnRyaWVzIGJhc2VkIG9uIGluY2x1ZGVkIG9yIGV4Y2x1ZGVkIGNvZGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLiBVcGRhdGVzIHRoZSBpbnRlcm5hbCBjb3VudHJpZXMgbGlzdC5cbiAgICovXG4gIHNldENvdW50cmllcygpIHtcbiAgICBpZiAodGhpcy5pbmNsdWRlZCgpLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb3VudHJpZXMuc2V0KENPVU5UUklFUy5maWx0ZXIoKGMpID0+IHRoaXMuaW5jbHVkZWQoKS5pbmNsdWRlcyhjLmNvZGUpKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmV4Y2x1ZGVkKCkubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvdW50cmllcy5zZXQoQ09VTlRSSUVTLmZpbHRlcigoYykgPT4gIXRoaXMuZXhjbHVkZWQoKS5pbmNsdWRlcyhjLmNvZGUpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY291bnRyaWVzLnNldChDT1VOVFJJRVMpO1xuICAgIH1cbiAgICB0aGlzLmZsYWdzLnNldChDT1VOVFJJRVNfRkxBR19CQVNFNjQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgc2VsZWN0ZWQgY291bnRyeSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY291bnRyeSBjb2RlIG9yIHRoZSBmaXJzdCBjb3VudHJ5IGluIHRoZSBsaXN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkIC0gTm8gcmV0dXJuIHZhbHVlLiBVcGRhdGVzIHRoZSBzZWxlY3RlZCBjb3VudHJ5LlxuICAgKi9cbiAgc2V0RGVmYXVsdFZhbHVlKCkge1xuICAgIGlmICh0aGlzLmNvdW50cnkoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KHRoaXMuY291bnRyaWVzKCkuZmluZCgoYykgPT4gYy5jb2RlID09PSB0aGlzLmNvdW50cnkoKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5zZXQodGhpcy5jb3VudHJpZXMoKVswXSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleURvd24oZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIC8vIFByZXZlbnQgYWxsIGtleWJvYXJkIGFjdGlvbnMgaWYgY29tcG9uZW50IGlzIGRpc2FibGVkXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gcmVhZG9ubHkgc3RhdGUsIG9ubHkgYWxsb3cgY29weSBvcGVyYXRpb25zIChDdHJsK0MsIEN0cmwrQSlcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgY29uc3QgaXNDb3B5T3BlcmF0aW9uID1cbiAgICAgICAgKGUuY3RybEtleSAmJiAoZS5rZXkgPT09ICdjJyB8fCBlLmtleSA9PT0gJ0MnKSkgfHwgKGUuY3RybEtleSAmJiAoZS5rZXkgPT09ICdhJyB8fCBlLmtleSA9PT0gJ0EnKSk7XG5cbiAgICAgIGlmICghaXNDb3B5T3BlcmF0aW9uKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmlzVmFsaWRLZXlib2FyZEFjdGlvbihlKSkge1xuICAgICAgdGhpcy5lbWl0T25LZXlkb3duRXZlbnQoZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVBob25lTnVtYmVyKGZ1bGxOdW1iZXI6IHN0cmluZyk6IHtcbiAgICBjb3VudHJ5OiBDb3VudHJ5SXRlbSB8IG51bGw7XG4gICAgY291bnRyeUNvZGU6IHN0cmluZyB8IG51bGw7XG4gICAgbmF0aW9uYWxOdW1iZXI6IHN0cmluZztcbiAgfSB7XG4gICAgLy8gMSkgTm9ybWFsaXplIGlucHV0XG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBmdWxsTnVtYmVyLnJlcGxhY2UoL1teMC05K10vZywgJycpO1xuXG4gICAgLy8gY29udmVydCAwMC4uLiDihpIgKy4uLlxuICAgIGlmIChub3JtYWxpemVkLnN0YXJ0c1dpdGgoJzAwJykpIHtcbiAgICAgIG5vcm1hbGl6ZWQgPSAnKycgKyBub3JtYWxpemVkLnNsaWNlKDIpO1xuICAgIH1cblxuICAgIC8vIDIpIFNvcnQgY291bnRyaWVzIGJ5IGxvbmdlc3QgcHJlZml4IGZpcnN0XG4gICAgY29uc3Qgc29ydGVkID0gWy4uLkNPVU5UUklFU10uc29ydCgoYSwgYikgPT4gYi5pc28yY29kZS5sZW5ndGggLSBhLmlzbzJjb2RlLmxlbmd0aCk7XG5cbiAgICAvLyAzKSBNYXRjaCB0aGUgY291bnRyeSBjb2RlXG4gICAgZm9yIChjb25zdCBjb3VudHJ5IG9mIHNvcnRlZCkge1xuICAgICAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aChjb3VudHJ5LmlzbzJjb2RlKSkge1xuICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IGNvdW50cnkuaXNvMmNvZGU7XG4gICAgICAgIGNvbnN0IG5hdGlvbmFsTnVtYmVyID0gbm9ybWFsaXplZC5zbGljZShjb3VudHJ5Q29kZS5sZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY291bnRyeSxcbiAgICAgICAgICBjb3VudHJ5Q29kZSxcbiAgICAgICAgICBuYXRpb25hbE51bWJlcixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0KSBObyBtYXRjaCBmb3VuZFxuICAgIHJldHVybiB7XG4gICAgICBjb3VudHJ5OiBudWxsLFxuICAgICAgY291bnRyeUNvZGU6IG51bGwsXG4gICAgICBuYXRpb25hbE51bWJlcjogbm9ybWFsaXplZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgX2hhbmRsZUNvdW50cnlWYWx1ZUNoYW5nZWQoZXZlbnQ6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICAvLyBQcmV2ZW50IHZhbHVlIGNoYW5nZSBpZiBjb21wb25lbnQgaXMgZGlzYWJsZWQgb3IgcmVhZG9ubHlcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnNldChldmVudC5jb21wb25lbnQuc2VsZWN0ZWRJdGVtc1swXSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIubmFtZScpXG4gIHByaXZhdGUgZ2V0IF9faG9zdE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG59XG4iLCI8YXgtdGV4dC1ib3hcbiAgZGlyPVwibHRyXCJcbiAgW2xvb2tdPVwibG9va1wiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFttYXNrLW9wdGlvbnNdPVwieyBtYXNrOiBzZWxlY3RlZENvdW50cnkoKT8uZm9ybWF0IH1cIlxuICBbcGxhY2Vob2xkZXJdPVwic2VsZWN0ZWRDb3VudHJ5KCk/LmZvcm1hdFwiXG4gIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwiX2hhbmRsZU1vZGVsQ2hhbmdlKCRldmVudClcIlxuICAob25CbHVyKT1cImVtaXRPbkJsdXJFdmVudCgkZXZlbnQubmF0aXZlRXZlbnQpXCJcbiAgKG9uRm9jdXMpPVwiZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQubmF0aXZlRXZlbnQpXCJcbiAgKG9uS2V5RG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudC5uYXRpdmVFdmVudClcIlxuICAob25LZXlQcmVzcyk9XCJlbWl0T25LZXlwcmVzc0V2ZW50KCRldmVudC5uYXRpdmVFdmVudClcIlxuICAob25LZXlVcCk9XCJlbWl0T25LZXl1cEV2ZW50KCRldmVudC5uYXRpdmVFdmVudClcIlxuPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuICBAZm9yIChyZWdleCBvZiBbc2VsZWN0ZWRDb3VudHJ5KCk/LnJlZ2V4XTsgdHJhY2sgcmVnZXgpIHtcbiAgICBAaWYgKHJlZ2V4ICYmIG1lc3NhZ2VFcnJvcikge1xuICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZVxuICAgICAgICBydWxlPVwicmVnZXhcIlxuICAgICAgICBbb3B0aW9uc109XCJ7XG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZUVycm9yLFxuICAgICAgICAgIHBhdHRlcm46IHJlZ2V4LFxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgIH1cbiAgfVxuXG4gIDxheC1wcmVmaXg+XG4gICAgQGlmIChwcmVjb2RlKCkpIHtcbiAgICAgIDxheC10ZXh0Pnt7IHByZWNvZGUoKSB9fTwvYXgtdGV4dD5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxheC1zZWxlY3QtYm94XG4gICAgICAgICNzXG4gICAgICAgIGxvb2s9XCJibGFua1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCByZWFkb25seVwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFtkcm9wZG93bldpZHRoXT1cIiczMjBweCdcIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRDb3VudHJ5KClcIlxuICAgICAgICBbdGV4dEZpZWxkXT1cIidpc28yY29kZSdcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgICBbdmFsdWVGaWVsZF09XCInY29kZSdcIlxuICAgICAgICBbaXRlbVRlbXBsYXRlXT1cImN1c3RvbUl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgIFtzZWxlY3RlZFRlbXBsYXRlXT1cInNlbGVjdGVkVGVtcGxhdGVcIlxuICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiX2hhbmRsZUNvdW50cnlWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsb3NlZCk9XCJoYW5kbGVDb3VudHJ5T25DbG9zZWQoKVwiXG4gICAgICAgIFt0YWJJbmRleF09XCJpbmNsdWRlZCgpLmxlbmd0aCA9PT0gMSA/ICctMScgOiAnMSdcIlxuICAgICAgPlxuICAgICAgICA8YXgtc2VhcmNoLWJveCBjbGFzcz1cImF4LXNtXCIgbG9vaz1cImZpbGxcIj5cbiAgICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgICA8L2F4LXNlYXJjaC1ib3g+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tSXRlbVRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb3VudHJ5LWl0ZW1cIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1jb3VudHJ5LWZsYWdcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtcG9zaXRpb24nOiBpdGVtLmRhdGEuYmtQb3NpdGlvbj8ueCArICcgJyArIGl0ZW0uZGF0YS5ia1Bvc2l0aW9uPy55LFxuICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgZmxhZ3MoKSArICcpJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWNvdW50cnktbmFtZVwiPnt7IGl0ZW0uZGF0YS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWlzbzJjb2RlXCI+e3sgaXRlbS5kYXRhLmlzbzJjb2RlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0ZWRUZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtc2VsZWN0ZWQtY291bnRyeVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5kYXRhLmlzbzJjb2RlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRpbmc+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICB9XG4gIDwvYXgtcHJlZml4PlxuPC9heC10ZXh0LWJveD5cblxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY2xlYXItYnV0dG9uIFwiPjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJheC1lcnJvci1jb250YWluZXJcIj48L2Rpdj5cbiJdfQ==","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IMaskModule } from 'angular-imask';\nimport { AXPhoneBoxComponent } from './phone-box.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXPhoneBoxComponent];\nconst MODULES = [\n CommonModule,\n FormsModule,\n IMaskModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTextBoxModule,\n];\nexport class AXPhoneBoxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, imports: [CommonModule,\n FormsModule,\n IMaskModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTextBoxModule, AXPhoneBoxComponent], exports: [AXPhoneBoxComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, imports: [MODULES, COMPONENT] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcGhvbmUtYm94L3NyYy9saWIvcGhvbmUtYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU1RCxNQUFNLFNBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDeEMsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsZUFBZTtDQUNoQixDQUFDO0FBT0YsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsWUFmM0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGVBQWUsRUFURSxtQkFBbUIsYUFBbkIsbUJBQW1CO2dIQWlCekIsZ0JBQWdCLFlBSmQsT0FBTyxFQUFLLFNBQVM7OzRGQUl2QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYXNrTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgeyBBWFBob25lQm94Q29tcG9uZW50IH0gZnJvbSAnLi9waG9uZS1ib3guY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UID0gW0FYUGhvbmVCb3hDb21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBGb3Jtc01vZHVsZSxcbiAgSU1hc2tNb2R1bGUsXG4gIEFYU2VsZWN0Qm94TW9kdWxlLFxuICBBWFNlYXJjaEJveE1vZHVsZSxcbiAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gIEFYQnV0dG9uTW9kdWxlLFxuICBBWFRleHRCb3hNb2R1bGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUGhvbmVCb3hNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcGhvbmUtYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9waG9uZS1ib3gvc3JjL2Fjb3JleC1jb21wb25lbnRzLXBob25lLWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-components-phone-box.mjs","sources":["../tmp-esm2022/phone-box/lib/phone-box.component.js","../tmp-esm2022/phone-box/lib/phone-box.module.js","../tmp-esm2022/phone-box/acorex-components-phone-box.js"],"sourcesContent":["import { AXClearableComponent, AXComponent, AXDataSource, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/cdk/common';\nimport { AXDecoratorClearButtonComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxComponent } from '@acorex/components/search-box';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXTextBoxComponent } from '@acorex/components/text-box';\nimport { COUNTRIES, COUNTRIES_FLAG_BASE64 } from '@acorex/core/constants';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild, ViewEncapsulation, afterNextRender, effect, forwardRef, inject, input, model, signal, viewChild, } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filter } from 'lodash-es';\nimport { classes } from 'polytype';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/form\";\n/**\n * @category\n * A component that handles phone number input with various configurations.\n */\nexport class AXPhoneBoxComponent extends classes((MXInputBaseValueComponent), MXLookComponent) {\n constructor() {\n super(...arguments);\n /** @ignore */\n this._updateOn = 'change';\n this.flags = signal(COUNTRIES_FLAG_BASE64, ...(ngDevMode ? [{ debugName: \"flags\" }] : []));\n this.translationService = inject(AXTranslationService);\n this.messageError = this.callTranslate();\n /**\n * static precode.\n */\n this.precode = input(...(ngDevMode ? [undefined, { debugName: \"precode\" }] : []));\n /**\n * The default country value for the component.\n */\n this.country = model('', ...(ngDevMode ? [{ debugName: \"country\" }] : []));\n /**\n * List of included values for the component.\n */\n this.included = input([], ...(ngDevMode ? [{ debugName: \"included\" }] : []));\n /**\n * List of excluded values for the component.\n */\n this.excluded = input([], ...(ngDevMode ? [{ debugName: \"excluded\" }] : []));\n this.selectBox = viewChild('s', ...(ngDevMode ? [{ debugName: \"selectBox\" }] : []));\n this.#countriesChanged = effect(() => {\n this.included();\n this.excluded();\n this.setCountries();\n this.cdr.detectChanges();\n this.selectBox().refresh();\n }, ...(ngDevMode ? [{ debugName: \"#countriesChanged\" }] : []));\n this.#eff = effect(() => {\n if (this.country()) {\n this.selectedCountry.set(this.countries().find((c) => c.code === this.country()));\n }\n setTimeout(() => {\n if (!this.value)\n this.selectedCountry.set(this.countries()[0]);\n });\n }, ...(ngDevMode ? [{ debugName: \"#eff\" }] : []));\n /** @ignore */\n this.countries = signal([], ...(ngDevMode ? [{ debugName: \"countries\" }] : []));\n /** @ignore */\n this.selectedCountry = signal(null, ...(ngDevMode ? [{ debugName: \"selectedCountry\" }] : []));\n /** @ignore */\n this.dataSource = new AXDataSource({\n pageSize: 10,\n load: (e) => {\n return new Promise((resolve) => {\n const list = this.countries();\n const result = e.filter\n ? filter(list, (c) => c.name.toUpperCase().includes(e.filter.value.toUpperCase()) ||\n c.iso2code.toUpperCase().includes(e.filter.value.toUpperCase()) ||\n c.code.toUpperCase().includes(e.filter.value.toUpperCase()))\n : list;\n resolve({\n items: result.slice(e.skip, e.skip + e.take),\n total: result.length,\n });\n });\n },\n });\n /** @ignore */\n this.#init = afterNextRender(() => {\n this.setCountries();\n });\n /**\n * Determines if the keyboard event is a valid action based on allowed keys and key codes.\n *\n * @param event - The keyboard event to validate\n * @returns boolean - True if the key action is valid, false otherwise\n */\n this.isValidKeyboardAction = (event) => {\n const _code = parseInt(event.key);\n const ALLOWED_KEY = ['Backspace', 'ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft', 'Tab'];\n const IS_CTRL_A = () => (event.ctrlKey && event.key === 'a') || (event.ctrlKey && event.key === 'A');\n // eslint-disable-next-line no-constant-condition\n if ((_code >= 0 && _code <= 9) || ALLOWED_KEY.includes(event.key) || IS_CTRL_A()) {\n return true;\n }\n else {\n return false;\n }\n };\n }\n async callTranslate() {\n return await this.translationService.translateAsync('@acorex:validation.messages.phone');\n }\n #countriesChanged;\n #eff;\n /** @ignore */\n _handleModelChange(value) {\n // Prevent value change if component is disabled or readonly\n if (this.disabled || this.readonly) {\n return;\n }\n this.commitValue(value, true);\n }\n /** @ignore */\n handleCountryOnClosed() {\n setTimeout(() => {\n this.textbox?.focus();\n }, 300);\n }\n /** @ignore */\n #init;\n internalValueChanged(value) {\n if (!value)\n return;\n const result = this.parsePhoneNumber(value);\n if (result.country) {\n this.selectedCountry.set(result.country);\n this.commitValue(result.nationalNumber);\n }\n }\n /**\n * Updates the list of countries based on included or excluded codes.\n *\n * @returns void - No return value. Updates the internal countries list.\n */\n setCountries() {\n if (this.included().length) {\n this.countries.set(COUNTRIES.filter((c) => this.included().includes(c.code)));\n }\n else if (this.excluded().length) {\n this.countries.set(COUNTRIES.filter((c) => !this.excluded().includes(c.code)));\n }\n else {\n this.countries.set(COUNTRIES);\n }\n this.flags.set(COUNTRIES_FLAG_BASE64);\n }\n handleKeyDown(e) {\n // Prevent all keyboard actions if component is disabled\n if (this.disabled) {\n e.preventDefault();\n e.stopImmediatePropagation();\n return;\n }\n // In readonly state, only allow copy operations (Ctrl+C, Ctrl+A)\n if (this.readonly) {\n const isCopyOperation = (e.ctrlKey && (e.key === 'c' || e.key === 'C')) || (e.ctrlKey && (e.key === 'a' || e.key === 'A'));\n if (!isCopyOperation) {\n e.preventDefault();\n e.stopImmediatePropagation();\n return;\n }\n }\n if (this.isValidKeyboardAction(e)) {\n this.emitOnKeydownEvent(e);\n }\n else {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n }\n parsePhoneNumber(fullNumber) {\n // 1) Normalize input\n let normalized = fullNumber.replace(/[^0-9+]/g, '');\n // convert 00... → +...\n if (normalized.startsWith('00')) {\n normalized = '+' + normalized.slice(2);\n }\n // 2) Sort countries by longest prefix first\n const sorted = [...COUNTRIES].sort((a, b) => b.iso2code.length - a.iso2code.length);\n // 3) Match the country code\n for (const country of sorted) {\n if (normalized.startsWith(country.iso2code)) {\n const countryCode = country.iso2code;\n const nationalNumber = normalized.slice(countryCode.length);\n return {\n country,\n countryCode,\n nationalNumber,\n };\n }\n }\n // 4) No match found\n return {\n country: null,\n countryCode: null,\n nationalNumber: normalized,\n };\n }\n /** @ignore */\n _handleCountryValueChanged(event) {\n // Prevent value change if component is disabled or readonly\n if (this.disabled || this.readonly) {\n return;\n }\n this.selectedCountry.set(event.component.selectedItems[0]);\n }\n get __hostName() {\n return this.name;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.15\", type: AXPhoneBoxComponent, isStandalone: true, selector: \"ax-phone-box\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: false, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: false, isRequired: false, transformFunction: null }, state: { classPropertyName: \"state\", publicName: \"state\", isSignal: false, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: false, isRequired: false, transformFunction: null }, id: { classPropertyName: \"id\", publicName: \"id\", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: false, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: \"maxLength\", publicName: \"maxLength\", isSignal: false, isRequired: false, transformFunction: null }, allowNull: { classPropertyName: \"allowNull\", publicName: \"allowNull\", isSignal: false, isRequired: false, transformFunction: null }, type: { classPropertyName: \"type\", publicName: \"type\", isSignal: false, isRequired: false, transformFunction: null }, autoComplete: { classPropertyName: \"autoComplete\", publicName: \"autoComplete\", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: false, isRequired: false, transformFunction: null }, classNames: { classPropertyName: \"classNames\", publicName: \"class\", isSignal: false, isRequired: false, transformFunction: null }, precode: { classPropertyName: \"precode\", publicName: \"precode\", isSignal: true, isRequired: false, transformFunction: null }, country: { classPropertyName: \"country\", publicName: \"country\", isSignal: true, isRequired: false, transformFunction: null }, included: { classPropertyName: \"included\", publicName: \"included\", isSignal: true, isRequired: false, transformFunction: null }, excluded: { classPropertyName: \"excluded\", publicName: \"excluded\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBlur: \"onBlur\", onFocus: \"onFocus\", valueChange: \"valueChange\", stateChange: \"stateChange\", onValueChanged: \"onValueChanged\", readonlyChange: \"readonlyChange\", disabledChange: \"disabledChange\", onKeyDown: \"onKeyDown\", onKeyUp: \"onKeyUp\", onKeyPress: \"onKeyPress\", country: \"countryChange\" }, host: { attributes: { \"ngSkipHydration\": \"true\" }, properties: { \"class.ax-state-disabled\": \"disabled\", \"class.ax-state-readonly\": \"readonly\", \"attr.name\": \"this.__hostName\" } }, providers: [\n { provide: AXComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXClearableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXValuableComponent, useExisting: AXPhoneBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXPhoneBoxComponent),\n multi: true,\n },\n ], viewQueries: [{ propertyName: \"selectBox\", first: true, predicate: [\"s\"], descendants: true, isSignal: true }, { propertyName: \"textbox\", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<ax-text-box\\n dir=\\\"ltr\\\"\\n [look]=\\\"look\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [mask-options]=\\\"{ mask: selectedCountry()?.format }\\\"\\n [placeholder]=\\\"selectedCountry()?.format\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n (onBlur)=\\\"emitOnBlurEvent($event.nativeEvent)\\\"\\n (onFocus)=\\\"emitOnFocusEvent($event.nativeEvent)\\\"\\n (onKeyDown)=\\\"handleKeyDown($event.nativeEvent)\\\"\\n (onKeyPress)=\\\"emitOnKeypressEvent($event.nativeEvent)\\\"\\n (onKeyUp)=\\\"emitOnKeyupEvent($event.nativeEvent)\\\"\\n>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n @for (regex of [selectedCountry()?.regex]; track regex) {\\n @if (regex && messageError) {\\n <ax-validation-rule\\n rule=\\\"regex\\\"\\n [options]=\\\"{\\n message: messageError,\\n pattern: regex,\\n }\\\"\\n >\\n </ax-validation-rule>\\n }\\n }\\n\\n <ax-prefix>\\n @if (precode()) {\\n <ax-text>{{ precode() }}</ax-text>\\n } @else {\\n <ax-select-box\\n #s\\n look=\\\"blank\\\"\\n [disabled]=\\\"disabled || readonly\\\"\\n [readonly]=\\\"readonly\\\"\\n [dropdownWidth]=\\\"'320px'\\\"\\n [dataSource]=\\\"dataSource\\\"\\n [ngModel]=\\\"selectedCountry()\\\"\\n [textField]=\\\"'iso2code'\\\"\\n [multiple]=\\\"false\\\"\\n [valueField]=\\\"'code'\\\"\\n [itemTemplate]=\\\"customItemTemplate\\\"\\n [selectedTemplate]=\\\"selectedTemplate\\\"\\n (onValueChanged)=\\\"_handleCountryValueChanged($event)\\\"\\n (onClosed)=\\\"handleCountryOnClosed()\\\"\\n [tabIndex]=\\\"included().length === 1 ? '-1' : '1'\\\"\\n >\\n <ax-search-box class=\\\"ax-sm\\\" look=\\\"fill\\\">\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-template #customItemTemplate let-item>\\n <div class=\\\"ax-country-item\\\">\\n <div\\n class=\\\"ax-country-flag\\\"\\n [ngStyle]=\\\"{\\n 'background-position': item.data.bkPosition?.x + ' ' + item.data.bkPosition?.y,\\n 'background-image': 'url(' + flags() + ')',\\n }\\\"\\n ></div>\\n <div>\\n <span class=\\\"ax-country-name\\\">{{ item.data.name }}</span>\\n <span class=\\\"ax-iso2code\\\">{{ item.data.iso2code }}</span>\\n </div>\\n </div>\\n </ng-template>\\n <ng-template #selectedTemplate let-item>\\n <div class=\\\"ax-selected-country\\\">\\n <span>{{ item.data.iso2code }}</span>\\n </div>\\n </ng-template>\\n <ng-template #loading></ng-template>\\n </ax-select-box>\\n }\\n </ax-prefix>\\n</ax-text-box>\\n\\n<ng-content select=\\\"ax-clear-button \\\"></ng-content>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-phone-box .ax-editor-container{--ax-comp-editor-space-start-size: 0}ax-phone-box.ax-state-disabled ax-text-box{pointer-events:auto;opacity:.6;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-text-box .ax-editor,ax-phone-box.ax-state-disabled ax-text-box .ax-input{pointer-events:auto;cursor:not-allowed;-webkit-user-select:none;user-select:none}ax-phone-box.ax-state-disabled ax-select-box{pointer-events:none;opacity:.6}ax-phone-box.ax-state-disabled ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-select-box .ax-editor-button{pointer-events:none;cursor:not-allowed}ax-phone-box.ax-state-readonly ax-text-box .ax-editor,ax-phone-box.ax-state-readonly ax-text-box .ax-input{-webkit-user-select:text;user-select:text}ax-phone-box.ax-state-readonly ax-select-box{pointer-events:none}ax-phone-box.ax-state-readonly ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:default}ax-phone-box.ax-state-readonly ax-select-box .ax-editor-button{pointer-events:none;cursor:default}ax-phone-box ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important}ax-phone-box ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-box-outline-width: 0;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-editor,ax-phone-box ax-select-box ax-dropdown-box .ax-input{--ax-comp-editor-space-start-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-content{padding-top:0!important}.ax-country-item{padding:.75rem .5rem;cursor:pointer;display:flex;gap:.5rem;align-items:center}.ax-country-item:hover{background-color:rgba(var(--ax-sys-color-ghost-lighter-surface))}.ax-country-item .ax-country-name{font-weight:500;margin-inline-end:.5rem}.ax-country-item .ax-iso2code{opacity:.7}.ax-country-flag{width:25px!important;height:20px!important;background-repeat:no-repeat}.ax-selected-country{display:flex;gap:.5rem;align-items:center;padding-inline-start:.5rem}\\n\"], dependencies: [{ kind: \"component\", type: AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"isItemTruncated\", \"showItemTooltip\", \"itemHeight\", \"maxVisibleItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\", \"onItemSelected\", \"onItemClick\"] }, { kind: \"component\", type: AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\", \"autoSearch\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"directive\", type: NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"directive\", type: i2.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-phone-box', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n ngSkipHydration: 'true',\n '[class.ax-state-disabled]': 'disabled',\n '[class.ax-state-readonly]': 'readonly',\n }, inputs: [\n 'disabled',\n 'tabIndex',\n 'readonly',\n 'value',\n 'state',\n 'name',\n 'id',\n 'placeholder',\n 'maxLength',\n 'allowNull',\n 'type',\n 'autoComplete',\n 'look',\n ], outputs: [\n 'onBlur',\n 'onFocus',\n 'valueChange',\n 'stateChange',\n 'onValueChanged',\n 'readonlyChange',\n 'disabledChange',\n 'onKeyDown',\n 'onKeyUp',\n 'onKeyPress',\n ], providers: [\n { provide: AXComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXFocusableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXClearableComponent, useExisting: AXPhoneBoxComponent },\n { provide: AXValuableComponent, useExisting: AXPhoneBoxComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXPhoneBoxComponent),\n multi: true,\n },\n ], imports: [\n AXTextBoxComponent,\n FormsModule,\n AXDecoratorGenericComponent,\n AXSelectBoxComponent,\n AXSearchBoxComponent,\n AXDecoratorClearButtonComponent,\n NgStyle,\n AXFormModule,\n ], template: \"<ax-text-box\\n dir=\\\"ltr\\\"\\n [look]=\\\"look\\\"\\n [disabled]=\\\"disabled\\\"\\n [readonly]=\\\"readonly\\\"\\n [mask-options]=\\\"{ mask: selectedCountry()?.format }\\\"\\n [placeholder]=\\\"selectedCountry()?.format\\\"\\n [ngModel]=\\\"value\\\"\\n (ngModelChange)=\\\"_handleModelChange($event)\\\"\\n (onBlur)=\\\"emitOnBlurEvent($event.nativeEvent)\\\"\\n (onFocus)=\\\"emitOnFocusEvent($event.nativeEvent)\\\"\\n (onKeyDown)=\\\"handleKeyDown($event.nativeEvent)\\\"\\n (onKeyPress)=\\\"emitOnKeypressEvent($event.nativeEvent)\\\"\\n (onKeyUp)=\\\"emitOnKeyupEvent($event.nativeEvent)\\\"\\n>\\n <ng-content select=\\\"ax-validation-rule\\\"> </ng-content>\\n @for (regex of [selectedCountry()?.regex]; track regex) {\\n @if (regex && messageError) {\\n <ax-validation-rule\\n rule=\\\"regex\\\"\\n [options]=\\\"{\\n message: messageError,\\n pattern: regex,\\n }\\\"\\n >\\n </ax-validation-rule>\\n }\\n }\\n\\n <ax-prefix>\\n @if (precode()) {\\n <ax-text>{{ precode() }}</ax-text>\\n } @else {\\n <ax-select-box\\n #s\\n look=\\\"blank\\\"\\n [disabled]=\\\"disabled || readonly\\\"\\n [readonly]=\\\"readonly\\\"\\n [dropdownWidth]=\\\"'320px'\\\"\\n [dataSource]=\\\"dataSource\\\"\\n [ngModel]=\\\"selectedCountry()\\\"\\n [textField]=\\\"'iso2code'\\\"\\n [multiple]=\\\"false\\\"\\n [valueField]=\\\"'code'\\\"\\n [itemTemplate]=\\\"customItemTemplate\\\"\\n [selectedTemplate]=\\\"selectedTemplate\\\"\\n (onValueChanged)=\\\"_handleCountryValueChanged($event)\\\"\\n (onClosed)=\\\"handleCountryOnClosed()\\\"\\n [tabIndex]=\\\"included().length === 1 ? '-1' : '1'\\\"\\n >\\n <ax-search-box class=\\\"ax-sm\\\" look=\\\"fill\\\">\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n <ng-template #customItemTemplate let-item>\\n <div class=\\\"ax-country-item\\\">\\n <div\\n class=\\\"ax-country-flag\\\"\\n [ngStyle]=\\\"{\\n 'background-position': item.data.bkPosition?.x + ' ' + item.data.bkPosition?.y,\\n 'background-image': 'url(' + flags() + ')',\\n }\\\"\\n ></div>\\n <div>\\n <span class=\\\"ax-country-name\\\">{{ item.data.name }}</span>\\n <span class=\\\"ax-iso2code\\\">{{ item.data.iso2code }}</span>\\n </div>\\n </div>\\n </ng-template>\\n <ng-template #selectedTemplate let-item>\\n <div class=\\\"ax-selected-country\\\">\\n <span>{{ item.data.iso2code }}</span>\\n </div>\\n </ng-template>\\n <ng-template #loading></ng-template>\\n </ax-select-box>\\n }\\n </ax-prefix>\\n</ax-text-box>\\n\\n<ng-content select=\\\"ax-clear-button \\\"></ng-content>\\n<div class=\\\"ax-error-container\\\"></div>\\n\", styles: [\"ax-phone-box .ax-editor-container{--ax-comp-editor-space-start-size: 0}ax-phone-box.ax-state-disabled ax-text-box{pointer-events:auto;opacity:.6;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-text-box .ax-editor,ax-phone-box.ax-state-disabled ax-text-box .ax-input{pointer-events:auto;cursor:not-allowed;-webkit-user-select:none;user-select:none}ax-phone-box.ax-state-disabled ax-select-box{pointer-events:none;opacity:.6}ax-phone-box.ax-state-disabled ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:not-allowed}ax-phone-box.ax-state-disabled ax-select-box .ax-editor-button{pointer-events:none;cursor:not-allowed}ax-phone-box.ax-state-readonly ax-text-box .ax-editor,ax-phone-box.ax-state-readonly ax-text-box .ax-input{-webkit-user-select:text;user-select:text}ax-phone-box.ax-state-readonly ax-select-box{pointer-events:none}ax-phone-box.ax-state-readonly ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important;cursor:default}ax-phone-box.ax-state-readonly ax-select-box .ax-editor-button{pointer-events:none;cursor:default}ax-phone-box ax-select-box ax-dropdown-box{--ax-comp-editor-bg-color: transparent;--ax-comp-editor-border-width: 0px !important;--ax-comp-editor-border-color: transparent !important}ax-phone-box ax-select-box ax-dropdown-box.ax-editor-container{--ax-comp-editor-box-outline-width: 0;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-editor,ax-phone-box ax-select-box ax-dropdown-box .ax-input{--ax-comp-editor-space-start-size: 0}ax-phone-box ax-select-box ax-dropdown-box .ax-content{padding-top:0!important}.ax-country-item{padding:.75rem .5rem;cursor:pointer;display:flex;gap:.5rem;align-items:center}.ax-country-item:hover{background-color:rgba(var(--ax-sys-color-ghost-lighter-surface))}.ax-country-item .ax-country-name{font-weight:500;margin-inline-end:.5rem}.ax-country-item .ax-iso2code{opacity:.7}.ax-country-flag{width:25px!important;height:20px!important;background-repeat:no-repeat}.ax-selected-country{display:flex;gap:.5rem;align-items:center;padding-inline-start:.5rem}\\n\"] }]\n }], propDecorators: { textbox: [{\n type: ViewChild,\n args: [AXTextBoxComponent, { static: true }]\n }], classNames: [{\n type: Input,\n args: ['class']\n }], precode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"precode\", required: false }] }], country: [{ type: i0.Input, args: [{ isSignal: true, alias: \"country\", required: false }] }, { type: i0.Output, args: [\"countryChange\"] }], included: [{ type: i0.Input, args: [{ isSignal: true, alias: \"included\", required: false }] }], excluded: [{ type: i0.Input, args: [{ isSignal: true, alias: \"excluded\", required: false }] }], selectBox: [{ type: i0.ViewChild, args: ['s', { isSignal: true }] }], __hostName: [{\n type: HostBinding,\n args: ['attr.name']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcGhvbmUtYm94L3NyYy9saWIvcGhvbmUtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcGhvbmUtYm94L3NyYy9saWIvcGhvbmUtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBRW5CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQWUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0s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QUFvQixFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQ25FLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcscUJBQXFCLEVBQUU7d0JBQ2xFOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixXQUNRO3dCQUNQLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCwyQkFBMkI7d0JBQzNCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiwrQkFBK0I7d0JBQy9CLE9BQU87d0JBQ1AsWUFBWTtxQkFDYjs7c0JBT0EsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O3NCQWdCOUMsS0FBSzt1QkFBQyxPQUFPO21lQXVCc0MsR0FBRztzQkE4THRELFdBQVc7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYQ2xlYXJhYmxlQ29tcG9uZW50LFxuICBBWENvbXBvbmVudCxcbiAgQVhEYXRhU291cmNlLFxuICBBWEZvY3VzYWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgQVhWYWx1ZUNoYW5nZWRFdmVudCxcbiAgTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudCxcbiAgTVhMb29rQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JDbGVhckJ1dHRvbkNvbXBvbmVudCwgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zZWxlY3QtYm94JztcbmltcG9ydCB7IEFYVGV4dEJveENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90ZXh0LWJveCc7XG5pbXBvcnQgeyBDT1VOVFJJRVMsIENPVU5UUklFU19GTEFHX0JBU0U2NCwgQ291bnRyeUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjbGFzc2VzIH0gZnJvbSAncG9seXR5cGUnO1xuXG4vKipcbiAqIEBjYXRlZ29yeVxuICogQSBjb21wb25lbnQgdGhhdCBoYW5kbGVzIHBob25lIG51bWJlciBpbnB1dCB3aXRoIHZhcmlvdXMgY29uZmlndXJhdGlvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LXBob25lLWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9waG9uZS1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9waG9uZS1ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyxcbiAgICAnW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5heC1zdGF0ZS1yZWFkb25seV0nOiAncmVhZG9ubHknLFxuICB9LFxuICBpbnB1dHM6IFtcbiAgICAnZGlzYWJsZWQnLFxuICAgICd0YWJJbmRleCcsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAndmFsdWUnLFxuICAgICdzdGF0ZScsXG4gICAgJ25hbWUnLFxuICAgICdpZCcsXG4gICAgJ3BsYWNlaG9sZGVyJyxcbiAgICAnbWF4TGVuZ3RoJyxcbiAgICAnYWxsb3dOdWxsJyxcbiAgICAndHlwZScsXG4gICAgJ2F1dG9Db21wbGV0ZScsXG4gICAgJ2xvb2snLFxuICBdLFxuICBvdXRwdXRzOiBbXG4gICAgJ29uQmx1cicsXG4gICAgJ29uRm9jdXMnLFxuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdyZWFkb25seUNoYW5nZScsXG4gICAgJ2Rpc2FibGVkQ2hhbmdlJyxcbiAgICAnb25LZXlEb3duJyxcbiAgICAnb25LZXlVcCcsXG4gICAgJ29uS2V5UHJlc3MnLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQaG9uZUJveENvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBob25lQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWENsZWFyYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUGhvbmVCb3hDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFBob25lQm94Q29tcG9uZW50IH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBWFBob25lQm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBBWFRleHRCb3hDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JHZW5lcmljQ29tcG9uZW50LFxuICAgIEFYU2VsZWN0Qm94Q29tcG9uZW50LFxuICAgIEFYU2VhcmNoQm94Q29tcG9uZW50LFxuICAgIEFYRGVjb3JhdG9yQ2xlYXJCdXR0b25Db21wb25lbnQsXG4gICAgTmdTdHlsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUGhvbmVCb3hDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQ8c3RyaW5nPiwgTVhMb29rQ29tcG9uZW50KSB7XG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfdXBkYXRlT246ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCcgPSAnY2hhbmdlJztcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSB0ZXh0Ym94OiBBWFRleHRCb3hDb21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIGZsYWdzID0gc2lnbmFsKENPVU5UUklFU19GTEFHX0JBU0U2NCk7XG5cbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgbWVzc2FnZUVycm9yID0gdGhpcy5jYWxsVHJhbnNsYXRlKCk7XG5cbiAgYXN5bmMgY2FsbFRyYW5zbGF0ZSgpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BhY29yZXg6dmFsaWRhdGlvbi5tZXNzYWdlcy5waG9uZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzc2VzIHRvIGFwcGx5IHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoJ2NsYXNzJylcbiAgY2xhc3NOYW1lczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzdGF0aWMgcHJlY29kZS5cbiAgICovXG4gIHByZWNvZGUgPSBpbnB1dCgpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBjb3VudHJ5IHZhbHVlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY291bnRyeSA9IG1vZGVsPHN0cmluZz4oJycpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGluY2x1ZGVkIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGluY2x1ZGVkID0gaW5wdXQ8c3RyaW5nW10+KFtdKTtcblxuICAvKipcbiAgICogTGlzdCBvZiBleGNsdWRlZCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBleGNsdWRlZCA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RCb3ggPSB2aWV3Q2hpbGQ8QVhTZWxlY3RCb3hDb21wb25lbnQ+KCdzJyk7XG5cbiAgI2NvdW50cmllc0NoYW5nZWQgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuaW5jbHVkZWQoKTtcbiAgICB0aGlzLmV4Y2x1ZGVkKCk7XG4gICAgdGhpcy5zZXRDb3VudHJpZXMoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZWxlY3RCb3goKS5yZWZyZXNoKCk7XG4gIH0pO1xuXG4gICNlZmYgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aGlzLmNvdW50cnkoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KHRoaXMuY291bnRyaWVzKCkuZmluZCgoYykgPT4gYy5jb2RlID09PSB0aGlzLmNvdW50cnkoKSkpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy52YWx1ZSkgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KHRoaXMuY291bnRyaWVzKClbMF0pO1xuICAgIH0pO1xuICB9KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgY291bnRyaWVzID0gc2lnbmFsPENvdW50cnlJdGVtW10+KFtdKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRDb3VudHJ5ID0gc2lnbmFsPENvdW50cnlJdGVtPihudWxsKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZU1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgLy8gUHJldmVudCB2YWx1ZSBjaGFuZ2UgaWYgY29tcG9uZW50IGlzIGRpc2FibGVkIG9yIHJlYWRvbmx5XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY29tbWl0VmFsdWUodmFsdWUsIHRydWUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIGRhdGFTb3VyY2UgPSBuZXcgQVhEYXRhU291cmNlPENvdW50cnlJdGVtPih7XG4gICAgcGFnZVNpemU6IDEwLFxuICAgIGxvYWQ6IChlKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMuY291bnRyaWVzKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGUuZmlsdGVyXG4gICAgICAgICAgPyBmaWx0ZXIoXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgIGMubmFtZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKChlLmZpbHRlci52YWx1ZSBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgICAgYy5pc28yY29kZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKChlLmZpbHRlci52YWx1ZSBhcyBzdHJpbmcpLnRvVXBwZXJDYXNlKCkpIHx8XG4gICAgICAgICAgICAgICAgYy5jb2RlLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoKGUuZmlsdGVyLnZhbHVlIGFzIHN0cmluZykudG9VcHBlckNhc2UoKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBsaXN0O1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICBpdGVtczogcmVzdWx0LnNsaWNlKGUuc2tpcCwgZS5za2lwICsgZS50YWtlKSxcbiAgICAgICAgICB0b3RhbDogcmVzdWx0Lmxlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICB9KTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ291bnRyeU9uQ2xvc2VkKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50ZXh0Ym94Py5mb2N1cygpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy5zZXRDb3VudHJpZXMoKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wYXJzZVBob25lTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAocmVzdWx0LmNvdW50cnkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnNldChyZXN1bHQuY291bnRyeSk7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKHJlc3VsdC5uYXRpb25hbE51bWJlcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGtleWJvYXJkIGV2ZW50IGlzIGEgdmFsaWQgYWN0aW9uIGJhc2VkIG9uIGFsbG93ZWQga2V5cyBhbmQga2V5IGNvZGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUga2V5Ym9hcmQgZXZlbnQgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgYm9vbGVhbiAtIFRydWUgaWYgdGhlIGtleSBhY3Rpb24gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaXNWYWxpZEtleWJvYXJkQWN0aW9uID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgY29uc3QgX2NvZGUgPSBwYXJzZUludChldmVudC5rZXkpO1xuXG4gICAgY29uc3QgQUxMT1dFRF9LRVkgPSBbJ0JhY2tzcGFjZScsICdBcnJvd1VwJywgJ0Fycm93RG93bicsICdBcnJvd1JpZ2h0JywgJ0Fycm93TGVmdCcsICdUYWInXTtcblxuICAgIGNvbnN0IElTX0NUUkxfQSA9ICgpID0+IChldmVudC5jdHJsS2V5ICYmIGV2ZW50LmtleSA9PT0gJ2EnKSB8fCAoZXZlbnQuY3RybEtleSAmJiBldmVudC5rZXkgPT09ICdBJyk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgIGlmICgoX2NvZGUgPj0gMCAmJiBfY29kZSA8PSA5KSB8fCBBTExPV0VEX0tFWS5pbmNsdWRlcyhldmVudC5rZXkpIHx8IElTX0NUUkxfQSgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgbGlzdCBvZiBjb3VudHJpZXMgYmFzZWQgb24gaW5jbHVkZWQgb3IgZXhjbHVkZWQgY29kZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHZvaWQgLSBObyByZXR1cm4gdmFsdWUuIFVwZGF0ZXMgdGhlIGludGVybmFsIGNvdW50cmllcyBsaXN0LlxuICAgKi9cbiAgc2V0Q291bnRyaWVzKCkge1xuICAgIGlmICh0aGlzLmluY2x1ZGVkKCkubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvdW50cmllcy5zZXQoQ09VTlRSSUVTLmZpbHRlcigoYykgPT4gdGhpcy5pbmNsdWRlZCgpLmluY2x1ZGVzKGMuY29kZSkpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZXhjbHVkZWQoKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY291bnRyaWVzLnNldChDT1VOVFJJRVMuZmlsdGVyKChjKSA9PiAhdGhpcy5leGNsdWRlZCgpLmluY2x1ZGVzKGMuY29kZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb3VudHJpZXMuc2V0KENPVU5UUklFUyk7XG4gICAgfVxuICAgIHRoaXMuZmxhZ3Muc2V0KENPVU5UUklFU19GTEFHX0JBU0U2NCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gUHJldmVudCBhbGwga2V5Ym9hcmQgYWN0aW9ucyBpZiBjb21wb25lbnQgaXMgZGlzYWJsZWRcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJbiByZWFkb25seSBzdGF0ZSwgb25seSBhbGxvdyBjb3B5IG9wZXJhdGlvbnMgKEN0cmwrQywgQ3RybCtBKVxuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICBjb25zdCBpc0NvcHlPcGVyYXRpb24gPVxuICAgICAgICAoZS5jdHJsS2V5ICYmIChlLmtleSA9PT0gJ2MnIHx8IGUua2V5ID09PSAnQycpKSB8fCAoZS5jdHJsS2V5ICYmIChlLmtleSA9PT0gJ2EnIHx8IGUua2V5ID09PSAnQScpKTtcblxuICAgICAgaWYgKCFpc0NvcHlPcGVyYXRpb24pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNWYWxpZEtleWJvYXJkQWN0aW9uKGUpKSB7XG4gICAgICB0aGlzLmVtaXRPbktleWRvd25FdmVudChlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlUGhvbmVOdW1iZXIoZnVsbE51bWJlcjogc3RyaW5nKToge1xuICAgIGNvdW50cnk6IENvdW50cnlJdGVtIHwgbnVsbDtcbiAgICBjb3VudHJ5Q29kZTogc3RyaW5nIHwgbnVsbDtcbiAgICBuYXRpb25hbE51bWJlcjogc3RyaW5nO1xuICB9IHtcbiAgICAvLyAxKSBOb3JtYWxpemUgaW5wdXRcbiAgICBsZXQgbm9ybWFsaXplZCA9IGZ1bGxOdW1iZXIucmVwbGFjZSgvW14wLTkrXS9nLCAnJyk7XG5cbiAgICAvLyBjb252ZXJ0IDAwLi4uIOKGkiArLi4uXG4gICAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnMDAnKSkge1xuICAgICAgbm9ybWFsaXplZCA9ICcrJyArIG5vcm1hbGl6ZWQuc2xpY2UoMik7XG4gICAgfVxuXG4gICAgLy8gMikgU29ydCBjb3VudHJpZXMgYnkgbG9uZ2VzdCBwcmVmaXggZmlyc3RcbiAgICBjb25zdCBzb3J0ZWQgPSBbLi4uQ09VTlRSSUVTXS5zb3J0KChhLCBiKSA9PiBiLmlzbzJjb2RlLmxlbmd0aCAtIGEuaXNvMmNvZGUubGVuZ3RoKTtcblxuICAgIC8vIDMpIE1hdGNoIHRoZSBjb3VudHJ5IGNvZGVcbiAgICBmb3IgKGNvbnN0IGNvdW50cnkgb2Ygc29ydGVkKSB7XG4gICAgICBpZiAobm9ybWFsaXplZC5zdGFydHNXaXRoKGNvdW50cnkuaXNvMmNvZGUpKSB7XG4gICAgICAgIGNvbnN0IGNvdW50cnlDb2RlID0gY291bnRyeS5pc28yY29kZTtcbiAgICAgICAgY29uc3QgbmF0aW9uYWxOdW1iZXIgPSBub3JtYWxpemVkLnNsaWNlKGNvdW50cnlDb2RlLmxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb3VudHJ5LFxuICAgICAgICAgIGNvdW50cnlDb2RlLFxuICAgICAgICAgIG5hdGlvbmFsTnVtYmVyLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDQpIE5vIG1hdGNoIGZvdW5kXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvdW50cnk6IG51bGwsXG4gICAgICBjb3VudHJ5Q29kZTogbnVsbCxcbiAgICAgIG5hdGlvbmFsTnVtYmVyOiBub3JtYWxpemVkLFxuICAgIH07XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfaGFuZGxlQ291bnRyeVZhbHVlQ2hhbmdlZChldmVudDogQVhWYWx1ZUNoYW5nZWRFdmVudCkge1xuICAgIC8vIFByZXZlbnQgdmFsdWUgY2hhbmdlIGlmIGNvbXBvbmVudCBpcyBkaXNhYmxlZCBvciByZWFkb25seVxuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnkuc2V0KGV2ZW50LmNvbXBvbmVudC5zZWxlY3RlZEl0ZW1zWzBdKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5uYW1lJylcbiAgcHJpdmF0ZSBnZXQgX19ob3N0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cbn1cbiIsIjxheC10ZXh0LWJveFxuICBkaXI9XCJsdHJcIlxuICBbbG9va109XCJsb29rXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgW21hc2stb3B0aW9uc109XCJ7IG1hc2s6IHNlbGVjdGVkQ291bnRyeSgpPy5mb3JtYXQgfVwiXG4gIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZENvdW50cnkoKT8uZm9ybWF0XCJcbiAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAobmdNb2RlbENoYW5nZSk9XCJfaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gIChvbkJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudC5uYXRpdmVFdmVudClcIlxuICAob25Gb2N1cyk9XCJlbWl0T25Gb2N1c0V2ZW50KCRldmVudC5uYXRpdmVFdmVudClcIlxuICAob25LZXlEb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50Lm5hdGl2ZUV2ZW50KVwiXG4gIChvbktleVByZXNzKT1cImVtaXRPbktleXByZXNzRXZlbnQoJGV2ZW50Lm5hdGl2ZUV2ZW50KVwiXG4gIChvbktleVVwKT1cImVtaXRPbktleXVwRXZlbnQoJGV2ZW50Lm5hdGl2ZUV2ZW50KVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXZhbGlkYXRpb24tcnVsZVwiPiA8L25nLWNvbnRlbnQ+XG4gIEBmb3IgKHJlZ2V4IG9mIFtzZWxlY3RlZENvdW50cnkoKT8ucmVnZXhdOyB0cmFjayByZWdleCkge1xuICAgIEBpZiAocmVnZXggJiYgbWVzc2FnZUVycm9yKSB7XG4gICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlXG4gICAgICAgIHJ1bGU9XCJyZWdleFwiXG4gICAgICAgIFtvcHRpb25zXT1cIntcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlRXJyb3IsXG4gICAgICAgICAgcGF0dGVybjogcmVnZXgsXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgPC9heC12YWxpZGF0aW9uLXJ1bGU+XG4gICAgfVxuICB9XG5cbiAgPGF4LXByZWZpeD5cbiAgICBAaWYgKHByZWNvZGUoKSkge1xuICAgICAgPGF4LXRleHQ+e3sgcHJlY29kZSgpIH19PC9heC10ZXh0PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGF4LXNlbGVjdC1ib3hcbiAgICAgICAgI3NcbiAgICAgICAgbG9vaz1cImJsYW5rXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJlYWRvbmx5XCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2Ryb3Bkb3duV2lkdGhdPVwiJzMyMHB4J1wiXG4gICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZENvdW50cnkoKVwiXG4gICAgICAgIFt0ZXh0RmllbGRdPVwiJ2lzbzJjb2RlJ1wiXG4gICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXG4gICAgICAgIFt2YWx1ZUZpZWxkXT1cIidjb2RlJ1wiXG4gICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiY3VzdG9tSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgW3NlbGVjdGVkVGVtcGxhdGVdPVwic2VsZWN0ZWRUZW1wbGF0ZVwiXG4gICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJfaGFuZGxlQ291bnRyeVZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2xvc2VkKT1cImhhbmRsZUNvdW50cnlPbkNsb3NlZCgpXCJcbiAgICAgICAgW3RhYkluZGV4XT1cImluY2x1ZGVkKCkubGVuZ3RoID09PSAxID8gJy0xJyA6ICcxJ1wiXG4gICAgICA+XG4gICAgICAgIDxheC1zZWFyY2gtYm94IGNsYXNzPVwiYXgtc21cIiBsb29rPVwiZmlsbFwiPlxuICAgICAgICAgIDxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+XG4gICAgICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjdXN0b21JdGVtVGVtcGxhdGUgbGV0LWl0ZW0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNvdW50cnktaXRlbVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LWNvdW50cnktZmxhZ1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1wb3NpdGlvbic6IGl0ZW0uZGF0YS5ia1Bvc2l0aW9uPy54ICsgJyAnICsgaXRlbS5kYXRhLmJrUG9zaXRpb24/LnksXG4gICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtaW1hZ2UnOiAndXJsKCcgKyBmbGFncygpICsgJyknLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtY291bnRyeS1uYW1lXCI+e3sgaXRlbS5kYXRhLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtaXNvMmNvZGVcIj57eyBpdGVtLmRhdGEuaXNvMmNvZGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3RlZFRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1zZWxlY3RlZC1jb3VudHJ5XCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmRhdGEuaXNvMmNvZGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGluZz48L25nLXRlbXBsYXRlPlxuICAgICAgPC9heC1zZWxlY3QtYm94PlxuICAgIH1cbiAgPC9heC1wcmVmaXg+XG48L2F4LXRleHQtYm94PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJheC1jbGVhci1idXR0b24gXCI+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImF4LWVycm9yLWNvbnRhaW5lclwiPjwvZGl2PlxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { IMaskModule } from 'angular-imask';\nimport { AXPhoneBoxComponent } from './phone-box.component';\nimport * as i0 from \"@angular/core\";\nconst COMPONENT = [AXPhoneBoxComponent];\nconst MODULES = [\n CommonModule,\n FormsModule,\n IMaskModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTextBoxModule,\n];\nexport class AXPhoneBoxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, imports: [CommonModule,\n FormsModule,\n IMaskModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTextBoxModule, AXPhoneBoxComponent], exports: [AXPhoneBoxComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, imports: [MODULES, COMPONENT] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPhoneBoxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvcGhvbmUtYm94L3NyYy9saWIvcGhvbmUtYm94Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU1RCxNQUFNLFNBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDeEMsTUFBTSxPQUFPLEdBQUc7SUFDZCxZQUFZO0lBQ1osV0FBVztJQUNYLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsZUFBZTtDQUNoQixDQUFDO0FBT0YsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsWUFmM0IsWUFBWTtZQUNaLFdBQVc7WUFDWCxXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGVBQWUsRUFURSxtQkFBbUIsYUFBbkIsbUJBQW1CO2dIQWlCekIsZ0JBQWdCLFlBSmQsT0FBTyxFQUFLLFNBQVM7OzRGQUl2QixnQkFBZ0I7a0JBTDVCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO29CQUN2QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGV4dC1ib3gnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYXNrTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1pbWFzayc7XG5pbXBvcnQgeyBBWFBob25lQm94Q29tcG9uZW50IH0gZnJvbSAnLi9waG9uZS1ib3guY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UID0gW0FYUGhvbmVCb3hDb21wb25lbnRdO1xuY29uc3QgTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBGb3Jtc01vZHVsZSxcbiAgSU1hc2tNb2R1bGUsXG4gIEFYU2VsZWN0Qm94TW9kdWxlLFxuICBBWFNlYXJjaEJveE1vZHVsZSxcbiAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gIEFYQnV0dG9uTW9kdWxlLFxuICBBWFRleHRCb3hNb2R1bGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbLi4uTU9EVUxFUywgLi4uQ09NUE9ORU5UXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUGhvbmVCb3hNb2R1bGUge31cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtcGhvbmUtYm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9waG9uZS1ib3gvc3JjL2Fjb3JleC1jb21wb25lbnRzLXBob25lLWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
package/kanban/index.d.ts CHANGED
@@ -77,7 +77,7 @@ declare class AXKanbanComponent extends NXComponent {
77
77
  private performMove;
78
78
  /**
79
79
  * Emit beforeDrop event and return whether to continue with the drop operation.
80
- * Supports both synchronous and asynchronous event handlers.
80
+ * Supports both synchronous and asynchronous event handlers via the `wait()` method.
81
81
  * @param item The original item from dataSource that is being moved
82
82
  * @param previousStatusKey The status key the item is moving from
83
83
  * @param currentStatusKey The status key the item is moving to
@@ -131,6 +131,12 @@ interface AXKanbanBeforeDropEvent extends NXNativeEvent<AXKanbanComponent, Mouse
131
131
  previousIndex: number;
132
132
  currentIndex: number;
133
133
  canceled: boolean;
134
+ /**
135
+ * Register a promise that must complete before the drop operation proceeds.
136
+ * Use this to execute async operations (like showing dialogs) and cancel the drop if needed.
137
+ * @param promise A promise that will be awaited before checking the `canceled` property
138
+ */
139
+ wait: (promise: Promise<void>) => void;
134
140
  }
135
141
 
136
142
  export { AXKanbanComponent };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "21.0.1-next.6",
3
+ "version": "21.0.1-next.8",
4
4
  "peerDependencies": {
5
- "@acorex/core": "21.0.1-next.6",
6
- "@acorex/cdk": "21.0.1-next.6",
5
+ "@acorex/core": "21.0.1-next.8",
6
+ "@acorex/cdk": "21.0.1-next.8",
7
7
  "@angular/common": "^20.0.0",
8
8
  "@angular/core": "^20.0.0",
9
9
  "@angular/cdk": "^20.0.0",
@@ -361,6 +361,10 @@
361
361
  "types": "./range-slider/index.d.ts",
362
362
  "default": "./fesm2022/acorex-components-range-slider.mjs"
363
363
  },
364
+ "./rate-picker": {
365
+ "types": "./rate-picker/index.d.ts",
366
+ "default": "./fesm2022/acorex-components-rate-picker.mjs"
367
+ },
364
368
  "./rest-api-generator": {
365
369
  "types": "./rest-api-generator/index.d.ts",
366
370
  "default": "./fesm2022/acorex-components-rest-api-generator.mjs"
@@ -381,10 +385,6 @@
381
385
  "types": "./scheduler/index.d.ts",
382
386
  "default": "./fesm2022/acorex-components-scheduler.mjs"
383
387
  },
384
- "./rate-picker": {
385
- "types": "./rate-picker/index.d.ts",
386
- "default": "./fesm2022/acorex-components-rate-picker.mjs"
387
- },
388
388
  "./scheduler-picker": {
389
389
  "types": "./scheduler-picker/index.d.ts",
390
390
  "default": "./fesm2022/acorex-components-scheduler-picker.mjs"
@@ -61,6 +61,7 @@ declare class AXPhoneBoxComponent extends AXPhoneBoxComponent_base {
61
61
  protected dataSource: AXDataSource<CountryItem>;
62
62
  /** @ignore */
63
63
  protected handleCountryOnClosed(): void;
64
+ protected internalValueChanged(value: any): void;
64
65
  /**
65
66
  * Determines if the keyboard event is a valid action based on allowed keys and key codes.
66
67
  *
@@ -74,12 +75,6 @@ declare class AXPhoneBoxComponent extends AXPhoneBoxComponent_base {
74
75
  * @returns void - No return value. Updates the internal countries list.
75
76
  */
76
77
  setCountries(): void;
77
- /**
78
- * Sets the default selected country based on the provided country code or the first country in the list.
79
- *
80
- * @returns void - No return value. Updates the selected country.
81
- */
82
- setDefaultValue(): void;
83
78
  protected handleKeyDown(e: KeyboardEvent): void;
84
79
  private parsePhoneNumber;
85
80
  /** @ignore */