@ai-table/grid 0.0.65 → 0.0.67
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/cell-editors/abstract-cell-editor.component.d.ts +3 -3
- package/components/cell-editors/abstract-cell-editor.component.d.ts.map +1 -1
- package/components/cell-editors/date/date-editor.component.d.ts +1 -1
- package/components/cell-editors/date/date-editor.component.d.ts.map +1 -1
- package/components/cell-editors/link/link-editor.component.d.ts.map +1 -1
- package/components/cell-editors/select/select-editor.component.d.ts +1 -1
- package/components/cell-editors/select/select-editor.component.d.ts.map +1 -1
- package/components/cell-views/select/option.component.d.ts +1 -1
- package/components/cell-views/select/option.component.d.ts.map +1 -1
- package/components/drag/drag.component.d.ts +1 -1
- package/components/drag/drag.component.d.ts.map +1 -1
- package/components/drag/drag.component.scss +1 -1
- package/components/field-menu/field-menu.component.d.ts +2 -1
- package/components/field-menu/field-menu.component.d.ts.map +1 -1
- package/components/field-setting/field-setting.component.d.ts +2 -1
- package/components/field-setting/field-setting.component.d.ts.map +1 -1
- package/constants/editor.d.ts +1 -1
- package/constants/editor.d.ts.map +1 -1
- package/constants/grid.d.ts +1 -1
- package/constants/grid.d.ts.map +1 -1
- package/core/constants/field.d.ts +2 -1
- package/core/constants/field.d.ts.map +1 -1
- package/core/context.d.ts +2 -1
- package/core/context.d.ts.map +1 -1
- package/core/coordinate.d.ts +2 -1
- package/core/coordinate.d.ts.map +1 -1
- package/core/types/ai-table.d.ts +2 -1
- package/core/types/ai-table.d.ts.map +1 -1
- package/core/types/core.d.ts +1 -188
- package/core/types/core.d.ts.map +1 -1
- package/core/utils/common.d.ts +2 -1
- package/core/utils/common.d.ts.map +1 -1
- package/core/utils/field.d.ts +2 -1
- package/core/utils/field.d.ts.map +1 -1
- package/core/utils/index.d.ts.map +1 -1
- package/core/utils/queries.d.ts +2 -1
- package/core/utils/queries.d.ts.map +1 -1
- package/dom-grid.component.d.ts +1 -1
- package/dom-grid.component.d.ts.map +1 -1
- package/esm2022/components/cell-editors/abstract-cell-editor.component.mjs +1 -1
- package/esm2022/components/cell-editors/date/date-editor.component.mjs +1 -1
- package/esm2022/components/cell-editors/link/link-editor.component.mjs +2 -1
- package/esm2022/components/cell-editors/select/select-editor.component.mjs +3 -2
- package/esm2022/components/cell-views/select/option.component.mjs +2 -2
- package/esm2022/components/drag/drag.component.mjs +4 -4
- package/esm2022/components/field-menu/field-menu.component.mjs +1 -1
- package/esm2022/components/field-setting/field-setting.component.mjs +3 -2
- package/esm2022/constants/editor.mjs +2 -2
- package/esm2022/constants/grid.mjs +2 -2
- package/esm2022/core/constants/field.mjs +2 -2
- package/esm2022/core/context.mjs +1 -1
- package/esm2022/core/coordinate.mjs +2 -2
- package/esm2022/core/types/ai-table.mjs +1 -1
- package/esm2022/core/types/core.mjs +2 -58
- package/esm2022/core/utils/common.mjs +1 -1
- package/esm2022/core/utils/field.mjs +2 -2
- package/esm2022/core/utils/index.mjs +1 -1
- package/esm2022/core/utils/queries.mjs +2 -2
- package/esm2022/dom-grid.component.mjs +1 -1
- package/esm2022/grid-base.component.mjs +3 -2
- package/esm2022/grid.component.mjs +3 -2
- package/esm2022/pipes/grid.pipe.mjs +1 -1
- package/esm2022/renderer/components/cells/attachment.component.mjs +2 -2
- package/esm2022/renderer/components/cells/cells.mjs +1 -1
- package/esm2022/renderer/components/cells/link.component.mjs +3 -3
- package/esm2022/renderer/components/cells/progress.component.mjs +2 -2
- package/esm2022/renderer/components/cells/rate.component.mjs +2 -2
- package/esm2022/renderer/components/cells/rich-text.component.mjs +2 -2
- package/esm2022/renderer/components/field-icon.component.mjs +2 -2
- package/esm2022/renderer/components/hover-cell.component.mjs +2 -3
- package/esm2022/renderer/components/hover-row-heads.component.mjs +2 -2
- package/esm2022/renderer/components/icon.component.mjs +2 -2
- package/esm2022/renderer/creations/create-cells.mjs +1 -1
- package/esm2022/renderer/drawers/cell-drawer.mjs +3 -2
- package/esm2022/renderer/interfaces/hover-cell.mjs +1 -1
- package/esm2022/services/event.service.mjs +6 -4
- package/esm2022/services/selection.service.mjs +3 -2
- package/esm2022/types/canvas.mjs +1 -1
- package/esm2022/types/cell.mjs +1 -1
- package/esm2022/types/component-config.mjs +1 -1
- package/esm2022/types/field.mjs +1 -1
- package/esm2022/types/grid.mjs +1 -6
- package/esm2022/types/index.mjs +1 -2
- package/esm2022/utils/build.mjs +1 -1
- package/esm2022/utils/cell.mjs +2 -2
- package/esm2022/utils/clipboard/copy.mjs +4 -3
- package/esm2022/utils/clipboard/paste.mjs +4 -3
- package/esm2022/utils/common.mjs +1 -11
- package/esm2022/utils/field/field-operable.mjs +2 -0
- package/esm2022/utils/field/field.mjs +20 -0
- package/esm2022/utils/field/index.mjs +4 -0
- package/esm2022/utils/field/model/attachment.mjs +7 -26
- package/esm2022/utils/field/model/date.mjs +8 -17
- package/esm2022/utils/field/model/index.mjs +12 -28
- package/esm2022/utils/field/model/link.mjs +6 -22
- package/esm2022/utils/field/model/member.mjs +6 -26
- package/esm2022/utils/field/model/number.mjs +7 -14
- package/esm2022/utils/field/model/progress.mjs +7 -18
- package/esm2022/utils/field/model/rate.mjs +7 -12
- package/esm2022/utils/field/model/rich-text.mjs +7 -11
- package/esm2022/utils/field/model/select.mjs +7 -21
- package/esm2022/utils/field/model/text.mjs +6 -11
- package/esm2022/utils/field/operate.mjs +27 -2
- package/esm2022/utils/index.mjs +2 -3
- package/esm2022/utils/match-keywords.mjs +2 -2
- package/esm2022/utils/position.mjs +1 -1
- package/esm2022/utils/visible-range.mjs +1 -1
- package/fesm2022/ai-table-grid.mjs +234 -425
- package/fesm2022/ai-table-grid.mjs.map +1 -1
- package/grid-base.component.d.ts +3 -2
- package/grid-base.component.d.ts.map +1 -1
- package/grid.component.d.ts +2 -1
- package/grid.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/pipes/grid.pipe.d.ts +4 -3
- package/pipes/grid.pipe.d.ts.map +1 -1
- package/renderer/components/cells/attachment.component.d.ts +1 -1
- package/renderer/components/cells/attachment.component.d.ts.map +1 -1
- package/renderer/components/cells/cells.d.ts +1 -1
- package/renderer/components/cells/cells.d.ts.map +1 -1
- package/renderer/components/cells/link.component.d.ts +1 -1
- package/renderer/components/cells/link.component.d.ts.map +1 -1
- package/renderer/components/cells/progress.component.d.ts +1 -1
- package/renderer/components/cells/progress.component.d.ts.map +1 -1
- package/renderer/components/cells/rate.component.d.ts +1 -1
- package/renderer/components/cells/rate.component.d.ts.map +1 -1
- package/renderer/components/cells/rich-text.component.d.ts +1 -1
- package/renderer/components/cells/rich-text.component.d.ts.map +1 -1
- package/renderer/components/field-head.component.d.ts +1 -1
- package/renderer/components/hover-cell.component.d.ts +2 -2
- package/renderer/components/hover-cell.component.d.ts.map +1 -1
- package/renderer/components/hover-row-heads.component.d.ts.map +1 -1
- package/renderer/creations/create-cells.d.ts +2 -1
- package/renderer/creations/create-cells.d.ts.map +1 -1
- package/renderer/drawers/cell-drawer.d.ts +1 -1
- package/renderer/drawers/cell-drawer.d.ts.map +1 -1
- package/renderer/interfaces/hover-cell.d.ts +1 -1
- package/renderer/interfaces/hover-cell.d.ts.map +1 -1
- package/renderer/renderer.component.d.ts +2 -2
- package/renderer/renderer.component.d.ts.map +1 -1
- package/services/event.service.d.ts +3 -2
- package/services/event.service.d.ts.map +1 -1
- package/services/selection.service.d.ts +2 -1
- package/services/selection.service.d.ts.map +1 -1
- package/types/canvas.d.ts +1 -1
- package/types/canvas.d.ts.map +1 -1
- package/types/cell.d.ts +3 -2
- package/types/cell.d.ts.map +1 -1
- package/types/component-config.d.ts +4 -2
- package/types/component-config.d.ts.map +1 -1
- package/types/field.d.ts +2 -1
- package/types/field.d.ts.map +1 -1
- package/types/grid.d.ts +2 -42
- package/types/grid.d.ts.map +1 -1
- package/types/index.d.ts +0 -1
- package/types/index.d.ts.map +1 -1
- package/utils/build.d.ts +2 -1
- package/utils/build.d.ts.map +1 -1
- package/utils/cell.d.ts +2 -2
- package/utils/cell.d.ts.map +1 -1
- package/utils/clipboard/copy.d.ts.map +1 -1
- package/utils/clipboard/paste.d.ts +2 -2
- package/utils/clipboard/paste.d.ts.map +1 -1
- package/utils/common.d.ts +0 -1
- package/utils/common.d.ts.map +1 -1
- package/utils/field/field-operable.d.ts +17 -0
- package/utils/field/field-operable.d.ts.map +1 -0
- package/utils/field/field.d.ts +4 -0
- package/utils/field/field.d.ts.map +1 -0
- package/utils/field/index.d.ts +4 -0
- package/utils/field/index.d.ts.map +1 -0
- package/utils/field/model/attachment.d.ts +5 -6
- package/utils/field/model/attachment.d.ts.map +1 -1
- package/utils/field/model/date.d.ts +4 -6
- package/utils/field/model/date.d.ts.map +1 -1
- package/utils/field/model/index.d.ts +11 -3
- package/utils/field/model/index.d.ts.map +1 -1
- package/utils/field/model/link.d.ts +3 -7
- package/utils/field/model/link.d.ts.map +1 -1
- package/utils/field/model/member.d.ts +4 -6
- package/utils/field/model/member.d.ts.map +1 -1
- package/utils/field/model/number.d.ts +4 -6
- package/utils/field/model/number.d.ts.map +1 -1
- package/utils/field/model/progress.d.ts +4 -6
- package/utils/field/model/progress.d.ts.map +1 -1
- package/utils/field/model/rate.d.ts +4 -5
- package/utils/field/model/rate.d.ts.map +1 -1
- package/utils/field/model/rich-text.d.ts +5 -5
- package/utils/field/model/rich-text.d.ts.map +1 -1
- package/utils/field/model/select.d.ts +5 -5
- package/utils/field/model/select.d.ts.map +1 -1
- package/utils/field/model/text.d.ts +3 -5
- package/utils/field/model/text.d.ts.map +1 -1
- package/utils/field/operate.d.ts +7 -0
- package/utils/field/operate.d.ts.map +1 -1
- package/utils/hover-cell.d.ts +1 -1
- package/utils/index.d.ts +1 -2
- package/utils/index.d.ts.map +1 -1
- package/utils/match-keywords.d.ts +2 -2
- package/utils/match-keywords.d.ts.map +1 -1
- package/utils/position.d.ts +2 -1
- package/utils/position.d.ts.map +1 -1
- package/utils/visible-range.d.ts +2 -1
- package/utils/visible-range.d.ts.map +1 -1
- package/esm2022/types/view.mjs +0 -18
- package/esm2022/utils/field/model/field.mjs +0 -37
- package/types/view.d.ts +0 -23
- package/types/view.d.ts.map +0 -1
- package/utils/field/model/field.d.ts +0 -21
- package/utils/field/model/field.d.ts.map +0 -1
@@ -2,7 +2,7 @@ import { afterNextRender, ChangeDetectionStrategy, Component, computed, effect,
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
3
3
|
import { filter, fromEvent } from 'rxjs';
|
4
4
|
import { AI_TABLE_CELL, AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_ADD_BUTTON, AI_TABLE_FIELD_ADD_BUTTON_WIDTH, AI_TABLE_FIELD_HEAD, AI_TABLE_FIELD_HEAD_HEIGHT, AI_TABLE_FIELD_HEAD_MORE, AI_TABLE_FIELD_HEAD_OPACITY_LINE, AI_TABLE_FIELD_HEAD_SELECT_CHECKBOX, AI_TABLE_PREVENT_CLEAR_SELECTION_CLASS, AI_TABLE_ROW_ADD_BUTTON, AI_TABLE_ROW_DRAG, AI_TABLE_ROW_HEAD, AI_TABLE_ROW_HEAD_WIDTH, AI_TABLE_ROW_SELECT_CHECKBOX, DBL_CLICK_EDIT_TYPE, DEFAULT_POINT_POSITION, DEFAULT_SCROLL_STATE } from './constants';
|
5
|
-
import { Coordinate, RendererContext,
|
5
|
+
import { Coordinate, RendererContext, AITable } from './core';
|
6
6
|
import { AITableGridBase } from './grid-base.component';
|
7
7
|
import { AITableRenderer } from './renderer/renderer.component';
|
8
8
|
import { AITableGridEventService } from './services/event.service';
|
@@ -15,6 +15,7 @@ import { AITableDragComponent } from './components/drag/drag.component';
|
|
15
15
|
import { buildClipboardData, writeToClipboard, writeToAITable } from './utils/clipboard';
|
16
16
|
import { ThyNotifyService } from 'ngx-tethys/notify';
|
17
17
|
import { isNumber } from 'lodash';
|
18
|
+
import { DragType } from '@ai-table/utils';
|
18
19
|
import * as i0 from "@angular/core";
|
19
20
|
export class AITableGrid extends AITableGridBase {
|
20
21
|
constructor() {
|
@@ -634,4 +635,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
634
635
|
class: 'ai-table-grid'
|
635
636
|
}, imports: [AITableRenderer, AITableDragComponent], providers: [AITableGridEventService, AITableGridFieldService, AITableGridSelectionService], template: "<div #container class=\"ai-table-grid-view\">\n @if (hasContainerRect()) {\n <ai-table-renderer\n [config]=\"rendererConfig()\"\n (koMousemove)=\"stageMousemove($event)\"\n (koMousedown)=\"stageMousedown($event)\"\n (koMouseup)=\"stageMouseup($event)\"\n (koContextmenu)=\"stageContextmenu($event)\"\n (koClick)=\"stageClick($event)\"\n (koDblclick)=\"stageDblclick($event)\"\n (koMouseleave)=\"stageMouseleave($event)\"\n >\n <div #horizontalBar class=\"ai-table-horizontal-scroll-bar-wrapper\" [style.width.px]=\"containerRect().width\">\n <div class=\"ai-table-scroll-bar-inner\" [style.width.px]=\"scrollbarWidth()\"></div>\n </div>\n <div\n #verticalBar\n class=\"ai-table-vertical-scroll-bar-wrapper\"\n [style.height.px]=\"containerRect().height - fieldHeadHeight\"\n [style.top.px]=\"fieldHeadHeight\"\n >\n <div class=\"ai-table-scroll-bar-inner\" [style.height.px]=\"scrollTotalHeight()\"></div>\n </div>\n </ai-table-renderer>\n }\n <ai-table-drag (dragEnd)=\"dragEnd($event)\"></ai-table-drag>\n</div>\n" }]
|
636
637
|
}], ctorParameters: () => [] });
|
637
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQ0gsYUFBYSxFQUNiLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUlILFVBQVUsRUFDVixlQUFlLEVBR2YsUUFBUSxFQUVSLE9BQU8sRUFFVixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSx1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QUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBVyxDQUFDO3dCQUNqRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO3FCQUM5QixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFDRCxPQUFPO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqRCxDQUFDOytHQXJzQlEsV0FBVzttR0FBWCxXQUFXLHVHQUZULENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUMsNllDMUY5Rixnd0NBMkJBLDRDRDhEYyxlQUFlLDZNQUFFLG9CQUFvQjs7NEZBR3RDLFdBQVc7a0JBWHZCLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsZUFBZTtxQkFDekIsV0FDUSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxhQUNyQyxDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpZ25hbCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZmlsdGVyLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtvRXZlbnRPYmplY3QgfSBmcm9tICcuL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9DRUxMLFxuICAgIEFJX1RBQkxFX0NFTExfUEFERElORyxcbiAgICBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OLFxuICAgIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEgsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkUsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRF9PUEFDSVRZX0xJTkUsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRF9TRUxFQ1RfQ0hFQ0tCT1gsXG4gICAgQUlfVEFCTEVfUFJFVkVOVF9DTEVBUl9TRUxFQ1RJT05fQ0xBU1MsXG4gICAgQUlfVEFCTEVfUk9XX0FERF9CVVRUT04sXG4gICAgQUlfVEFCTEVfUk9XX0RSQUcsXG4gICAgQUlfVEFCTEVfUk9XX0hFQUQsXG4gICAgQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgsXG4gICAgQUlfVEFCTEVfUk9XX1NFTEVDVF9DSEVDS0JPWCxcbiAgICBEQkxfQ0xJQ0tfRURJVF9UWVBFLFxuICAgIERFRkFVTFRfUE9JTlRfUE9TSVRJT04sXG4gICAgREVGQVVMVF9TQ1JPTExfU1RBVEVcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBBZGRGaWVsZE9wdGlvbnMsXG4gICAgQWRkUmVjb3JkT3B0aW9ucyxcbiAgICBBSVRhYmxlRmllbGQsXG4gICAgQ29vcmRpbmF0ZSxcbiAgICBSZW5kZXJlckNvbnRleHQsXG4gICAgVXBkYXRlRmllbGRWYWx1ZU9wdGlvbnMsXG4gICAgRHJhZ0VuZERhdGEsXG4gICAgRHJhZ1R5cGUsXG4gICAgQUlSZWNvcmRGaWVsZElkUGF0aCxcbiAgICBBSVRhYmxlLFxuICAgIElkUGF0aFxufSBmcm9tICcuL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZUdyaWRCYXNlIH0gZnJvbSAnLi9ncmlkLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFJVGFibGVSZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFJVGFibGVHcmlkRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkRmllbGRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBBSVRhYmxlQXJlYVR5cGUsXG4gICAgQUlUYWJsZUNvbnRleHRNZW51SXRlbSxcbiAgICBBSVRhYmxlTW91c2VEb3duVHlwZSxcbiAgICBBSVRhYmxlUmVuZGVyZXJDb25maWcsXG4gICAgQUlUYWJsZVNlbGVjdEFsbFN0YXRlLFxuICAgIFNjcm9sbEFjdGlvbk9wdGlvbnNcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICAgIEFJVGFibGVHcmlkSTE4bktleSxcbiAgICBidWlsZEdyaWRMaW5lYXJSb3dzLFxuICAgIGdldENvbHVtbkluZGljZXNTaXplTWFwLFxuICAgIGdldERldGFpbEJ5VGFyZ2V0TmFtZSxcbiAgICBnZXRJMThuVGV4dEJ5S2V5LFxuICAgIGhhbmRsZU1vdXNlU3R5bGUsXG4gICAgaXNDZWxsTWF0Y2hLZXl3b3JkcyxcbiAgICBpc1dpbmRvd3Ncbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZXRNb3VzZVBvc2l0aW9uIH0gZnJvbSAnLi91dGlscy9wb3NpdGlvbic7XG5pbXBvcnQgeyBBSVRhYmxlRHJhZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kcmFnL2RyYWcuY29tcG9uZW50JztcbmltcG9ydCB7IGJ1aWxkQ2xpcGJvYXJkRGF0YSwgd3JpdGVUb0NsaXBib2FyZCwgd3JpdGVUb0FJVGFibGUsIEFJVGFibGVBY3Rpb25zIH0gZnJvbSAnLi91dGlscy9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1ncmlkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnYWktdGFibGUtZ3JpZCdcbiAgICB9LFxuICAgIGltcG9ydHM6IFtBSVRhYmxlUmVuZGVyZXIsIEFJVGFibGVEcmFnQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtBSVRhYmxlR3JpZEV2ZW50U2VydmljZSwgQUlUYWJsZUdyaWRGaWVsZFNlcnZpY2UsIEFJVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUdyaWQgZXh0ZW5kcyBBSVRhYmxlR3JpZEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gICAgcHJpdmF0ZSBpc0RyYWdTZWxlY3RpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZHJhZ1NlbGVjdGlvblN0YXJ0OiBBSVJlY29yZEZpZWxkSWRQYXRoIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2UgPSBpbmplY3QoVGh5Tm90aWZ5U2VydmljZSk7XG5cbiAgICBwcml2YXRlIGlzUG9wb3Zlck9wZW4gPSBmYWxzZTtcblxuICAgIHRpbWVyITogbnVtYmVyIHwgbnVsbDtcblxuICAgIHJlc2l6ZU9ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgICBmaWVsZEhlYWRIZWlnaHQgPSBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVDtcblxuICAgIGNvbnRhaW5lclJlY3QgPSBzaWduYWwoeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0pO1xuXG4gICAgZnJvemVuQ29sdW1uQ291bnQgPSBzaWduYWwoMSk7XG5cbiAgICBoYXNDb250YWluZXJSZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJSZWN0KCkud2lkdGggPiAwICYmIHRoaXMuY29udGFpbmVyUmVjdCgpLmhlaWdodCA+IDA7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2NvbnRhaW5lcicpO1xuXG4gICAgdmVydGljYWxCYXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ3ZlcnRpY2FsQmFyJyk7XG5cbiAgICBob3Jpem9udGFsQmFyUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdob3Jpem9udGFsQmFyJyk7XG5cbiAgICBsaW5lYXJSb3dzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gYnVpbGRHcmlkTGluZWFyUm93cyh0aGlzLmdyaWREYXRhKCkucmVjb3JkcywgIXRoaXMuYWlSZWFkb25seSgpKTtcbiAgICB9KTtcblxuICAgIHZpc2libGVDb2x1bW5zSW5kZXhNYXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBBSVRhYmxlLmdldFZpc2libGVGaWVsZHModGhpcy5haVRhYmxlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoY29sdW1ucz8ubWFwKChpdGVtLCBpbmRleCkgPT4gW2l0ZW0uX2lkLCBpbmRleF0pKTtcbiAgICB9KTtcblxuICAgIHZpc2libGVSb3dzSW5kZXhNYXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwKHRoaXMubGluZWFyUm93cygpLm1hcCgocm93LCBpbmRleCkgPT4gW3Jvdy5faWQsIGluZGV4XSkpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyKCkhLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfSk7XG5cbiAgICByZW5kZXJlckNvbmZpZzogU2lnbmFsPEFJVGFibGVSZW5kZXJlckNvbmZpZz4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IEFJVGFibGUuZ2V0VmlzaWJsZUZpZWxkcyh0aGlzLmFpVGFibGUpO1xuICAgICAgICBjb25zdCBjb29yZGluYXRlID0gbmV3IENvb3JkaW5hdGUoe1xuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKSxcbiAgICAgICAgICAgIHJvd0hlaWdodDogQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsXG4gICAgICAgICAgICByb3dDb3VudDogdGhpcy5saW5lYXJSb3dzKCkubGVuZ3RoLFxuICAgICAgICAgICAgY29sdW1uQ291bnQ6IGZpZWxkcy5sZW5ndGgsXG4gICAgICAgICAgICByb3dJbml0U2l6ZTogQUlfVEFCTEVfRklFTERfSEVBRF9IRUlHSFQsXG4gICAgICAgICAgICBjb2x1bW5Jbml0U2l6ZTogQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgsXG4gICAgICAgICAgICByb3dJbmRpY2VzU2l6ZU1hcDoge30sXG4gICAgICAgICAgICBjb2x1bW5JbmRpY2VzU2l6ZU1hcDogZ2V0Q29sdW1uSW5kaWNlc1NpemVNYXAodGhpcy5haVRhYmxlLCBmaWVsZHMpLFxuICAgICAgICAgICAgZnJvemVuQ29sdW1uQ291bnQ6IHRoaXMuZnJvemVuQ29sdW1uQ291bnQoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFpVGFibGU6IHRoaXMuYWlUYWJsZSxcbiAgICAgICAgICAgIGdyaWREYXRhOiB0aGlzLmdyaWREYXRhKCksXG4gICAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLFxuICAgICAgICAgICAgY29vcmRpbmF0ZTogY29vcmRpbmF0ZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiB0aGlzLmNvbnRhaW5lclJlY3QoKS53aWR0aCxcbiAgICAgICAgICAgIGNvbnRhaW5lckhlaWdodDogdGhpcy5jb250YWluZXJSZWN0KCkuaGVpZ2h0LFxuICAgICAgICAgICAgcmVmZXJlbmNlczogdGhpcy5haVJlZmVyZW5jZXMoKSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLmFpUmVhZG9ubHkoKSxcbiAgICAgICAgICAgIHJvd0RyYWdEaXNhYmxlZDogdGhpcy5haVJvd0RyYWdEaXNhYmxlZCgpLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUZpZWxkVmFsdWU6IChvcHRpb25zOiBVcGRhdGVGaWVsZFZhbHVlT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVXBkYXRlRmllbGRWYWx1ZS5lbWl0KG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvb3JkaW5hdGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyQ29uZmlnKCkuY29vcmRpbmF0ZTtcbiAgICB9KTtcblxuICAgIHNjcm9sbFRvdGFsSGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5jb29yZGluYXRlKCkudG90YWxIZWlnaHQsIHRoaXMuY29udGFpbmVyUmVjdCgpLmhlaWdodCAtIHRoaXMuZmllbGRIZWFkSGVpZ2h0KTtcbiAgICB9KTtcblxuICAgIHNjcm9sbGJhcldpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb29yZGluYXRlKCkudG90YWxXaWR0aCArIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEg7XG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGFpbmVyUmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5iaW5kR2xvYmFsTW91c2Vkb3duKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lclJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRXaGVlbCgpO1xuICAgICAgICAgICAgdGhpcy5iaW5kQ2xpcGJvYXJkU2hvcnRjdXRzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ29udGFpbmVyUmVjdCgpICYmIHRoaXMuaG9yaXpvbnRhbEJhclJlZigpICYmIHRoaXMudmVydGljYWxCYXJSZWYoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmluZFNjcm9sbEJhclNjcm9sbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0S2V5d29yZHNNYXRjaGVkQ2VsbHMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIOW9k+aWsOWinuihjOmAieS4reeahGNlbGws57yW6L6R5ZCO77yMYWN0aXZlQ2VsbCDkuI3lnKjmlrDlop7nmoTooYzkuK3ml7bvvIzmoLnmja7nrZvpgIkg6L+H5ruk6KGM5pWw5o2uLOinpuWPkemHjeaWsOa4suafk1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNlbGxQYXRoID0gdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLmFjdGl2ZUNlbGw7XG4gICAgICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmVDZWxsUGF0aCB8fCAhdGhpcy5haVRhYmxlLnJlY29yZHNXaWxsSGlkZGVuKCkuaW5jbHVkZXMoYWN0aXZlQ2VsbFBhdGhbMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5haVRhYmxlLnJlY29yZHNXaWxsSGlkZGVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZS5yZWNvcmRzV2lsbEhpZGRlbi5zZXQoW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZElkU2V0ID0gbmV3IFNldDxzdHJpbmc+KHRoaXMuYWlUYWJsZS5yZWNvcmRzKCkubWFwKChpdGVtKSA9PiBpdGVtLl9pZCkpO1xuICAgICAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkcyA9IHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHM7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRSZWNvcmRJZCBvZiBzZWxlY3RlZFJlY29yZHMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVjb3JkSWRTZXQuaGFzKHNlbGVjdGVkUmVjb3JkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSZWNvcmRzLmRlbGV0ZShzZWxlY3RlZFJlY29yZElkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGUuc2VsZWN0aW9uLnVwZGF0ZSgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmVjb3JkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxTdGF0ZTogdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0QWxsU3RhdGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaW5pdENvbnRleHQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdENvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuYWlUYWJsZS5jb250ZXh0ID0gbmV3IFJlbmRlcmVyQ29udGV4dCh7XG4gICAgICAgICAgICBsaW5lYXJSb3dzOiB0aGlzLmxpbmVhclJvd3MsXG4gICAgICAgICAgICB2aXNpYmxlQ29sdW1uc0luZGV4TWFwOiB0aGlzLnZpc2libGVDb2x1bW5zSW5kZXhNYXAsXG4gICAgICAgICAgICB2aXNpYmxlUm93c0luZGV4TWFwOiB0aGlzLnZpc2libGVSb3dzSW5kZXhNYXAsXG4gICAgICAgICAgICBwb2ludFBvc2l0aW9uOiBzaWduYWwoREVGQVVMVF9QT0lOVF9QT1NJVElPTiksXG4gICAgICAgICAgICBzY3JvbGxTdGF0ZTogc2lnbmFsKERFRkFVTFRfU0NST0xMX1NUQVRFKSxcbiAgICAgICAgICAgIGZyb3plbkNvbHVtbkNvdW50OiB0aGlzLmZyb3plbkNvbHVtbkNvdW50LFxuICAgICAgICAgICAgcmVmZXJlbmNlczogdGhpcy5haVJlZmVyZW5jZXMsXG4gICAgICAgICAgICBhaUZpZWxkQ29uZmlnOiB0aGlzLmFpRmllbGRDb25maWcsXG4gICAgICAgICAgICBzY3JvbGxBY3Rpb246IHRoaXMuc2Nyb2xsQWN0aW9uXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0S2V5d29yZHNNYXRjaGVkQ2VsbHMoKSB7XG4gICAgICAgIGNvbnN0IGtleXdvcmRzID0gdGhpcy5haUtleXdvcmRzKCk7XG4gICAgICAgIGxldCBtYXRjaGVkQ2VsbHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICBpZiAoa2V5d29yZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSB0aGlzLmFpUmVmZXJlbmNlcygpO1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlLnJlY29yZHMoKS5mb3JFYWNoKChyZWNvcmQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGUuZmllbGRzKCkuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ2VsbE1hdGNoS2V5d29yZHModGhpcy5haVRhYmxlLCBmaWVsZCwgcmVjb3JkLl9pZCwga2V5d29yZHMsIHJlZmVyZW5jZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkQ2VsbHMuYWRkKGAke3JlY29yZC5faWR9OiR7ZmllbGQuX2lkfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWlUYWJsZS5rZXl3b3Jkc01hdGNoZWRDZWxscy5zZXQobWF0Y2hlZENlbGxzKTtcbiAgICB9XG5cbiAgICBzdGFnZU1vdXNlbW92ZShlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldE5hbWUgPSBlLmV2ZW50LnRhcmdldC5uYW1lKCk7XG4gICAgICAgICAgICBjb25zdCBncmlkU3RhZ2UgPSBlLmV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0U3RhZ2UoKTtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IGdyaWRTdGFnZT8uZ2V0UG9pbnRlclBvc2l0aW9uKCk7XG4gICAgICAgICAgICBpZiAocG9zID09IG51bGwpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHsgY29udGV4dCB9ID0gdGhpcy5haVRhYmxlO1xuICAgICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBwb3M7XG4gICAgICAgICAgICBjb25zdCBjdXJNb3VzZVBvc2l0aW9uID0gZ2V0TW91c2VQb3NpdGlvbihcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGUsXG4gICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICB5LFxuICAgICAgICAgICAgICAgIHRoaXMuY29vcmRpbmF0ZSgpLFxuICAgICAgICAgICAgICAgIEFJVGFibGUuZ2V0VmlzaWJsZUZpZWxkcyh0aGlzLmFpVGFibGUpLFxuICAgICAgICAgICAgICAgIGNvbnRleHQhLFxuICAgICAgICAgICAgICAgIHRhcmdldE5hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBoYW5kbGVNb3VzZVN0eWxlKFxuICAgICAgICAgICAgICAgIGN1ck1vdXNlUG9zaXRpb24ucmVhbFRhcmdldE5hbWUsXG4gICAgICAgICAgICAgICAgY3VyTW91c2VQb3NpdGlvbi5hcmVhVHlwZSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKSxcbiAgICAgICAgICAgICAgICB0aGlzLmFpUmVhZG9ubHkoKSxcbiAgICAgICAgICAgICAgICB0aGlzLmFpUm93RHJhZ0Rpc2FibGVkKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoY3VyTW91c2VQb3NpdGlvbi5hcmVhVHlwZSAhPT0gQUlUYWJsZUFyZWFUeXBlLm5vbmUpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0IS5zZXRQb2ludFBvc2l0aW9uKGN1ck1vdXNlUG9zaXRpb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRQb2ludFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ1NlbGVjdGluZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmllbGRJZCwgcmVjb3JkSWQgfSA9IGdldERldGFpbEJ5VGFyZ2V0TmFtZShjdXJNb3VzZVBvc2l0aW9uLnJlYWxUYXJnZXROYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGRJZCAmJiByZWNvcmRJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydENlbGwgPSB0aGlzLmRyYWdTZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kQ2VsbDogQUlSZWNvcmRGaWVsZElkUGF0aCA9IFtyZWNvcmRJZCwgZmllbGRJZF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydENlbGwgJiYgISFzdGFydENlbGwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5zZWxlY3RDZWxscyhzdGFydENlbGwsIGVuZENlbGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGFnZU1vdXNlZG93bihlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBlLmV2ZW50LmV2dDtcbiAgICAgICAgY29uc3QgX3RhcmdldE5hbWUgPSBlLmV2ZW50LnRhcmdldC5uYW1lKCk7XG5cbiAgICAgICAgY29uc3QgeyB0YXJnZXROYW1lLCBmaWVsZElkLCByZWNvcmRJZCB9ID0gZ2V0RGV0YWlsQnlUYXJnZXROYW1lKF90YXJnZXROYW1lKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgbW91c2VFdmVudC5idXR0b24gPT09IEFJVGFibGVNb3VzZURvd25UeXBlLlJpZ2h0ICYmXG4gICAgICAgICAgICByZWNvcmRJZCAmJlxuICAgICAgICAgICAgZmllbGRJZCAmJlxuICAgICAgICAgICAgKHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHMuaGFzKHJlY29yZElkKSB8fCB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRDZWxscy5oYXMoYCR7cmVjb3JkSWR9OiR7ZmllbGRJZH1gKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRhcmdldE5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfRklFTERfSEVBRDpcbiAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWVsZElkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0RmllbGQoZmllbGRJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWVsZERyYWdTdGFydCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfRklFTERfSEVBRF9PUEFDSVRZX0xJTkU6XG4gICAgICAgICAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmICghZmllbGRJZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRmllbGRXaWR0aERyYWdTdGFydChmaWVsZElkKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX0NFTEw6XG4gICAgICAgICAgICAgICAgaWYgKCFyZWNvcmRJZCB8fCAhZmllbGRJZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdTZWxlY3Rpb25TdGFydDogQUlSZWNvcmRGaWVsZElkUGF0aCA9IFtyZWNvcmRJZCwgZmllbGRJZF07XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEcmFnU2VsZWN0aW9uU3RhdGUodHJ1ZSwgZHJhZ1NlbGVjdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5zZWxlY3RDZWxscyhkcmFnU2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfUk9XX0RSQUc6XG4gICAgICAgICAgICAgICAgaWYgKCFyZWNvcmRJZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFJlY29yZHMgPSB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRSZWNvcmRzO1xuICAgICAgICAgICAgICAgIGxldCBkcmFnUmVjb3Jkczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRSZWNvcmRzLmhhcyhyZWNvcmRJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZHJhZ1JlY29yZHMgPSBbcmVjb3JkSWQsIC4uLnNlbGVjdGVkUmVjb3Jkcy52YWx1ZXMoKV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN5ouW5ou96KGM5LiN5Zyo6YCJ5Lit6KGM5Lit77yM5Y+q5ouW5ou95b2T5YmN6KGMXG4gICAgICAgICAgICAgICAgICAgIGRyYWdSZWNvcmRzID0gW3JlY29yZElkXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSb3dEcmFnU3RhcnQoZHJhZ1JlY29yZHMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfUk9XX0FERF9CVVRUT046XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT046XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX1JPV19IRUFEOlxuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9ST1dfU0VMRUNUX0NIRUNLQk9YOlxuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9IRUFEX1NFTEVDVF9DSEVDS0JPWDpcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGFnZU1vdXNldXAoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICB0aGlzLnVwZGF0ZURyYWdTZWxlY3Rpb25TdGF0ZShmYWxzZSwgbnVsbCk7XG4gICAgfVxuXG4gICAgc3RhZ2VNb3VzZWxlYXZlKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQb3BvdmVyT3Blbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFBvaW50UG9zaXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhZ2VDb250ZXh0bWVudShlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBlLmV2ZW50LmV2dDtcbiAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmFpUmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0TmFtZSA9IGUuZXZlbnQudGFyZ2V0Lm5hbWUoKTtcbiAgICAgICAgY29uc3QgeyBmaWVsZElkLCByZWNvcmRJZCB9ID0gZ2V0RGV0YWlsQnlUYXJnZXROYW1lKHRhcmdldE5hbWUpO1xuICAgICAgICBpZiAoIXJlY29yZElkIHx8ICFmaWVsZElkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIHg6IG1vdXNlRXZlbnQueCxcbiAgICAgICAgICAgIHk6IG1vdXNlRXZlbnQueVxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG1lbnVJdGVtczogQUlUYWJsZUNvbnRleHRNZW51SXRlbVtdID0gW107XG4gICAgICAgIGlmICh0aGlzLmFpQ29udGV4dE1lbnVJdGVtcygpKSB7XG4gICAgICAgICAgICBtZW51SXRlbXMucHVzaCguLi50aGlzLmFpQ29udGV4dE1lbnVJdGVtcygpISh0aGlzLmFpVGFibGUpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1lbnVJdGVtcy5sZW5ndGggfHwgbWVudUl0ZW1zLmV2ZXJ5KChpdGVtKSA9PiAhIShpdGVtLmhpZGRlbiAmJiBpdGVtLmhpZGRlbih0aGlzLmFpVGFibGUsIHRhcmdldE5hbWUsIHBvc2l0aW9uKSkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm9wZW5Db250ZXh0TWVudSh0aGlzLmFpVGFibGUsIHtcbiAgICAgICAgICAgIG9yaWdpbjogdGhpcy5jb250YWluZXJFbGVtZW50KCksXG4gICAgICAgICAgICBtZW51SXRlbXMsXG4gICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgIHRhcmdldE5hbWUsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWZcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhZ2VDbGljayhlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGNvbnN0IHRhcmdldE5hbWVEZXRhaWwgPSBnZXREZXRhaWxCeVRhcmdldE5hbWUoZS5ldmVudC50YXJnZXQubmFtZSgpKTtcbiAgICAgICAgdGhpcy5haUNsaWNrLmVtaXQoe1xuICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgIHRhcmdldE5hbWVEZXRhaWxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG1vdXNlRXZlbnQgPSBlLmV2ZW50LmV2dDtcbiAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLmNsb3NlQ2VsbEVkaXRvcigpO1xuXG4gICAgICAgIGNvbnN0IHsgY29udGV4dCB9ID0gdGhpcy5haVRhYmxlO1xuICAgICAgICBjb25zdCB7IHRhcmdldE5hbWUsIHJvd0luZGV4OiBwb2ludFJvd0luZGV4IH0gPSBjb250ZXh0IS5wb2ludFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChtb3VzZUV2ZW50LmJ1dHRvbiAhPT0gQUlUYWJsZU1vdXNlRG93blR5cGUuTGVmdCB8fCAodGFyZ2V0TmFtZSAhPT0gQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFICYmIHRoaXMuYWlSZWFkb25seSgpKSkgcmV0dXJuO1xuICAgICAgICBzd2l0Y2ggKHRhcmdldE5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfUk9XX0FERF9CVVRUT046IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkUmVjb3JkKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZWNvcmRzLCBmaWVsZHMgfSA9IHRoaXMuZ3JpZERhdGEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5zZXRBY3RpdmVDZWxsKFtyZWNvcmRzW3JlY29yZHMubGVuZ3RoIC0gMV0uX2lkLCBmaWVsZHNbMF0uX2lkXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX1JPV19TRUxFQ1RfQ0hFQ0tCT1g6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludFJlY29yZElkID0gY29udGV4dCEubGluZWFyUm93cygpW3BvaW50Um93SW5kZXhdPy5faWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RSZWNvcmQocG9pbnRSZWNvcmRJZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDaGVja2VkID0gdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdEFsbFN0YXRlID09PSBBSVRhYmxlU2VsZWN0QWxsU3RhdGUuYWxsO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0QWxsKCFpc0NoZWNrZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZEdyb3VwUmVjdCA9IGUuZXZlbnQudGFyZ2V0LmdldFBhcmVudCgpPy5nZXRDbGllbnRSZWN0KCkhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEZpZWxkKHRoaXMuY29udGFpbmVyRWxlbWVudCgpLCB7XG4gICAgICAgICAgICAgICAgICAgIHg6IGZpZWxkR3JvdXBSZWN0LnggKyBjb250YWluZXJSZWN0LngsXG4gICAgICAgICAgICAgICAgICAgIHk6IGNvbnRhaW5lclJlY3QueSArIGZpZWxkR3JvdXBSZWN0LnkgKyBmaWVsZEdyb3VwUmVjdC5oZWlnaHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFOlxuICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBfdGFyZ2V0TmFtZSA9IGUuZXZlbnQudGFyZ2V0Lm5hbWUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGZpZWxkSWQgfSA9IGdldERldGFpbEJ5VGFyZ2V0TmFtZShfdGFyZ2V0TmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9yZVJlY3QgPSBlLmV2ZW50LnRhcmdldC5nZXRDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkR3JvdXBSZWN0ID0gZS5ldmVudC50YXJnZXQuZ2V0UGFyZW50KCk/LmdldFBhcmVudCgpPy5nZXRDbGllbnRSZWN0KCkhO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gdGhpcy5jb250YWluZXJFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4OiBjb250YWluZXJSZWN0LnggKyBtb3JlUmVjdC54LFxuICAgICAgICAgICAgICAgICAgICAgICAgeTogY29udGFpbmVyUmVjdC55ICsgbW9yZVJlY3QueSArIG1vcmVSZWN0LmhlaWdodFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlZGl0RmllbGRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGNvbnRhaW5lclJlY3QueCArIGZpZWxkR3JvdXBSZWN0LnggLSBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBjb250YWluZXJSZWN0LnkgKyBmaWVsZEdyb3VwUmVjdC55ICsgZmllbGRHcm91cFJlY3QuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRpdE9yaWdpbiA9IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5rb252YWpzLWNvbnRlbnQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVudVJlZiA9IHRoaXMuYWlUYWJsZUdyaWRGaWVsZFNlcnZpY2Uub3BlbkZpZWxkTWVudSh0aGlzLmFpVGFibGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1lbnVzOiB0aGlzLmZpZWxkTWVudXMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbjogdGhpcy5jb250YWluZXJFbGVtZW50KCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRPcmlnaW46IGVkaXRPcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0RmllbGRQb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1lbnVSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNQb3BvdmVyT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFBvaW50UG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1BvcG92ZXJPcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhZ2VEYmxjbGljayhlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGNvbnN0IF90YXJnZXROYW1lID0gZS5ldmVudC50YXJnZXQubmFtZSgpO1xuICAgICAgICBjb25zdCB0YXJnZXROYW1lRGV0YWlsID0gZ2V0RGV0YWlsQnlUYXJnZXROYW1lKF90YXJnZXROYW1lKTtcbiAgICAgICAgdGhpcy5haURiQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgdGFyZ2V0TmFtZURldGFpbFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5haVJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgZmllbGRJZCwgcmVjb3JkSWQgfSA9IHRhcmdldE5hbWVEZXRhaWw7XG4gICAgICAgIGlmICghcmVjb3JkSWQgfHwgIWZpZWxkSWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuYWlUYWJsZS5maWVsZHNNYXAoKVtmaWVsZElkXTtcbiAgICAgICAgY29uc3QgZmllbGRUeXBlID0gZmllbGQudHlwZTtcbiAgICAgICAgaWYgKERCTF9DTElDS19FRElUX1RZUEUuaW5jbHVkZXMoZmllbGRUeXBlKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5vcGVuQ2VsbEVkaXRvcih0aGlzLmFpVGFibGUsIHtcbiAgICAgICAgICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLFxuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlOiB0aGlzLmNvb3JkaW5hdGUoKSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRJZDogZmllbGRJZCEsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZElkOiByZWNvcmRJZCEsXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IHRoaXMuYWlSZWZlcmVuY2VzKCksXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZpZWxkVmFsdWU6ICh2YWx1ZTogVXBkYXRlRmllbGRWYWx1ZU9wdGlvbnM8YW55PikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5haVVwZGF0ZUZpZWxkVmFsdWUuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kV2hlZWwoKSB7XG4gICAgICAgIGZyb21FdmVudDxXaGVlbEV2ZW50Pih0aGlzLmNvbnRhaW5lckVsZW1lbnQoKSwgJ3doZWVsJywgeyBwYXNzaXZlOiBmYWxzZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChlOiBXaGVlbEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuY2xvc2VDZWxsRWRpdG9yKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxBY3Rpb24oeyBkZWx0YVg6IGUuZGVsdGFYLCBkZWx0YVk6IGUuZGVsdGFZLCBzaGlmdEtleTogZS5zaGlmdEtleSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNjcm9sbEFjdGlvbiA9IChvcHRpb25zOiBTY3JvbGxBY3Rpb25PcHRpb25zKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLnRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGVsdGFYLCBkZWx0YVksIHNoaWZ0S2V5IH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgZml4ZWREZWx0YVkgPSBzaGlmdEtleSAmJiBpc1dpbmRvd3MgPyAwIDogZGVsdGFZO1xuICAgICAgICAgICAgY29uc3QgZml4ZWREZWx0YVggPSBzaGlmdEtleSAmJiBpc1dpbmRvd3MgPyBkZWx0YVkgOiBkZWx0YVg7XG4gICAgICAgICAgICBjb25zdCBob3Jpem9udGFsQmFyID0gdGhpcy5ob3Jpem9udGFsQmFyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB2ZXJ0aWNhbEJhciA9IHRoaXMudmVydGljYWxCYXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChob3Jpem9udGFsQmFyKSB7XG4gICAgICAgICAgICAgICAgaG9yaXpvbnRhbEJhci5zY3JvbGxMZWZ0ID0gaG9yaXpvbnRhbEJhci5zY3JvbGxMZWZ0ICsgZml4ZWREZWx0YVg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmVydGljYWxCYXIpIHtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbEJhci5zY3JvbGxUb3AgPSB2ZXJ0aWNhbEJhci5zY3JvbGxUb3AgKyBmaXhlZERlbHRhWTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMuY2FsbGJhY2sgJiYgb3B0aW9ucy5jYWxsYmFjaygpO1xuICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRQb2ludFBvc2l0aW9uKCkge1xuICAgICAgICBjb25zdCB7IGNvbnRleHQgfSA9IHRoaXMuYWlUYWJsZTtcbiAgICAgICAgY29udGV4dCEuc2V0UG9pbnRQb3NpdGlvbihERUZBVUxUX1BPSU5UX1BPU0lUSU9OKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRTY3JvbGxCYXJTY3JvbGwoKSB7XG4gICAgICAgIGZyb21FdmVudDxXaGVlbEV2ZW50Pih0aGlzLmhvcml6b250YWxCYXJSZWYoKSEubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsU2Nyb2xsKGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgZnJvbUV2ZW50PFdoZWVsRXZlbnQ+KHRoaXMudmVydGljYWxCYXJSZWYoKSEubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52ZXJ0aWNhbFNjcm9sbChlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZEdsb2JhbE1vdXNlZG93bigpIHtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vkb3duJywgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5jb250YWluZXJFbGVtZW50KCkuY29udGFpbnMoZS50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhZS50YXJnZXQuY2xvc2VzdChBSV9UQUJMRV9QUkVWRU5UX0NMRUFSX1NFTEVDVElPTl9DTEFTUylcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURyYWdTZWxlY3Rpb25TdGF0ZShmYWxzZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlRHJhZ1NlbGVjdGlvblN0YXRlKGlzRHJhZ1NlbGVjdGluZzogYm9vbGVhbiwgZHJhZ1NlbGVjdGlvblN0YXJ0OiBBSVJlY29yZEZpZWxkSWRQYXRoIHwgbnVsbCkge1xuICAgICAgICB0aGlzLmlzRHJhZ1NlbGVjdGluZyA9IGlzRHJhZ1NlbGVjdGluZztcbiAgICAgICAgdGhpcy5kcmFnU2VsZWN0aW9uU3RhcnQgPSBkcmFnU2VsZWN0aW9uU3RhcnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNjcm9sbGluZyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5haVRhYmxlLmNvbnRleHQhLnNldFNjcm9sbFN0YXRlKHtcbiAgICAgICAgICAgIGlzU2Nyb2xsaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBob3Jpem9udGFsU2Nyb2xsID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB7IHNjcm9sbExlZnQgfSA9IGUudGFyZ2V0O1xuICAgICAgICB0aGlzLmFpVGFibGUuY29udGV4dCEuc2V0U2Nyb2xsU3RhdGUoe1xuICAgICAgICAgICAgc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgIGlzU2Nyb2xsaW5nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsaW5nKCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgdmVydGljYWxTY3JvbGwoZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wIH0gPSBlLnRhcmdldDtcbiAgICAgICAgdGhpcy5haVRhYmxlLmNvbnRleHQhLnNldFNjcm9sbFN0YXRlKHtcbiAgICAgICAgICAgIHNjcm9sbFRvcCxcbiAgICAgICAgICAgIGlzU2Nyb2xsaW5nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsaW5nKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb250YWluZXJSZWN0KCkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lclJlY3Quc2V0KHtcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKS5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5jb250YWluZXJFbGVtZW50KCkub2Zmc2V0SGVpZ2h0XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udGFpbmVyUmVzaXplTGlzdGVuZXIoKSB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSB0aGlzLmNvb3JkaW5hdGUoKS50b3RhbFdpZHRoICsgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSDtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGFpbmVyUmVjdCgpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcldpZHRoID49IHRvdGFsV2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGUuY29udGV4dCEuc2V0U2Nyb2xsU3RhdGUoeyBzY3JvbGxMZWZ0OiAwIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRhaW5lckVsZW1lbnQoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kQ2xpcGJvYXJkU2hvcnRjdXRzKCkge1xuICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIChldmVudC5rZXkgPT09ICdjJyB8fCBldmVudC5rZXkgPT09ICd2JykpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFpUmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzU2VsZWN0ZWRDZWxscyA9IHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZENlbGxzLnNpemUgPiAwO1xuICAgICAgICAgICAgICAgIGlmICghaGFzU2VsZWN0ZWRDZWxscykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzRWRpdGluZ0NlbGwgPSAhIXRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuZ2V0Q3VycmVudEVkaXRDZWxsKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGJ1aWxkQ2xpcGJvYXJkRGF0YSh0aGlzLmFpVGFibGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVUb0NsaXBib2FyZChjbGlwYm9hcmREYXRhKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3BpZWRDZWxsc0NvdW50ID0gdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkQ2VsbHMuc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZ2V0STE4blRleHRCeUtleSh0aGlzLmFpVGFibGUsIEFJVGFibGVHcmlkSTE4bktleS5jb3BpZWRDZWxscykucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tjb3VudH0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3BpZWRDZWxsc0NvdW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5zdWNjZXNzKG1lc3NhZ2UsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ3YnICYmICFoYXNFZGl0aW5nQ2VsbCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnM6IEFJVGFibGVBY3Rpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRmllbGRWYWx1ZTogKGRhdGE6IFVwZGF0ZUZpZWxkVmFsdWVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5haVVwZGF0ZUZpZWxkVmFsdWUuZW1pdChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWVsZDogKGZpZWxkOiBBSVRhYmxlRmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFpU2V0RmllbGQuZW1pdChmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRmllbGQ6IChkYXRhOiBBZGRGaWVsZE9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFpQWRkRmllbGQuZW1pdChkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRSZWNvcmQ6IChkYXRhOiBBZGRSZWNvcmRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRSZWNvcmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICB3cml0ZVRvQUlUYWJsZSh0aGlzLmFpVGFibGUsIGFjdGlvbnMpLnRoZW4oKGlzUGFzdGVTdWNjZXNzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUGFzdGVTdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmVycm9yKGdldEkxOG5UZXh0QnlLZXkodGhpcy5haVRhYmxlLCBBSVRhYmxlR3JpZEkxOG5LZXkuaW52YWxpZFBhc3RlQ29udGVudCksIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUZpZWxkRHJhZ1N0YXJ0KCkge1xuICAgICAgICBpZiAoIXRoaXMuYWlSZWFkb25seSgpICYmIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkRmllbGRzLnNpemUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5kcmFnKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEcmFnVHlwZS5maWVsZCxcbiAgICAgICAgICAgICAgICBzb3VyY2VJZHM6IHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGVkRmllbGRzLFxuICAgICAgICAgICAgICAgIHNjcm9sbDogdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLFxuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRoaXMuY29vcmRpbmF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRmllbGRXaWR0aERyYWdTdGFydChmaWVsZElkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFpUmVhZG9ubHkoKSAmJiBmaWVsZElkKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5kcmFnKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEcmFnVHlwZS5jb2x1bW5XaWR0aCxcbiAgICAgICAgICAgICAgICBzb3VyY2VJZHM6IG5ldyBTZXQoW2ZpZWxkSWRdKSxcbiAgICAgICAgICAgICAgICBzY3JvbGw6IHRoaXMuZ2V0U2Nyb2xsUG9zaXRpb24oKSxcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlOiB0aGlzLmNvb3JkaW5hdGUoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVJvd0RyYWdTdGFydChyZWNvcmRJZHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGlmICghdGhpcy5haVJlYWRvbmx5KCkgJiYgIXRoaXMuYWlSb3dEcmFnRGlzYWJsZWQoKSAmJiByZWNvcmRJZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuZHJhZyh7XG4gICAgICAgICAgICAgICAgdHlwZTogRHJhZ1R5cGUucmVjb3JkLFxuICAgICAgICAgICAgICAgIHNvdXJjZUlkczogbmV3IFNldChyZWNvcmRJZHMpLFxuICAgICAgICAgICAgICAgIHNjcm9sbDogdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLFxuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRoaXMuY29vcmRpbmF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2Nyb2xsUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGhvcml6b250YWxCYXIgPSB0aGlzLmhvcml6b250YWxCYXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgdmVydGljYWxCYXIgPSB0aGlzLnZlcnRpY2FsQmFyUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCBzY3JvbGxMZWZ0ID0gaG9yaXpvbnRhbEJhcj8uc2Nyb2xsTGVmdCB8fCAwO1xuICAgICAgICBsZXQgc2Nyb2xsVG9wID0gdmVydGljYWxCYXI/LnNjcm9sbFRvcCB8fCAwO1xuICAgICAgICByZXR1cm4geyB4OiBzY3JvbGxMZWZ0LCB5OiBzY3JvbGxUb3AgfTtcbiAgICB9XG5cbiAgICBkcmFnRW5kKGRhdGE6IERyYWdFbmREYXRhKSB7XG4gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLmZpZWxkOlxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpZWxkc0luZGV4ICYmIGlzTnVtYmVyKGRhdGEudGFyZ2V0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5maWVsZHNJbmRleC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5haU1vdmVGaWVsZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbZGF0YS5maWVsZHNJbmRleFtpXV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGF0aDogW2RhdGEudGFyZ2V0SW5kZXggKyBpXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLmNvbHVtbldpZHRoOlxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmZpZWxkSWRzICYmIGlzTnVtYmVyKGRhdGEud2lkdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkSWQgPSBkYXRhLmZpZWxkSWRzLnZhbHVlcygpLm5leHQoKS52YWx1ZSE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWlTZXRGaWVsZFdpZHRoLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogW2ZpZWxkSWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGRhdGEud2lkdGhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEcmFnVHlwZS5yZWNvcmQ6XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEucmVjb3JkSWRzICYmIGlzTnVtYmVyKGRhdGEudGFyZ2V0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWlNb3ZlUmVjb3Jkcy5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZElkczogQXJyYXkuZnJvbShkYXRhLnJlY29yZElkcykubWFwKChpZCkgPT4gW2lkXSBhcyBJZFBhdGgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGF0aDogW2RhdGEudGFyZ2V0SW5kZXhdXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuY2xlYXJEcmFnKCk7XG4gICAgfVxufVxuIiwiPGRpdiAjY29udGFpbmVyIGNsYXNzPVwiYWktdGFibGUtZ3JpZC12aWV3XCI+XG4gICAgQGlmIChoYXNDb250YWluZXJSZWN0KCkpIHtcbiAgICAgICAgPGFpLXRhYmxlLXJlbmRlcmVyXG4gICAgICAgICAgICBbY29uZmlnXT1cInJlbmRlcmVyQ29uZmlnKClcIlxuICAgICAgICAgICAgKGtvTW91c2Vtb3ZlKT1cInN0YWdlTW91c2Vtb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgKGtvTW91c2Vkb3duKT1cInN0YWdlTW91c2Vkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGtvTW91c2V1cCk9XCJzdGFnZU1vdXNldXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29Db250ZXh0bWVudSk9XCJzdGFnZUNvbnRleHRtZW51KCRldmVudClcIlxuICAgICAgICAgICAgKGtvQ2xpY2spPVwic3RhZ2VDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrb0RibGNsaWNrKT1cInN0YWdlRGJsY2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29Nb3VzZWxlYXZlKT1cInN0YWdlTW91c2VsZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAjaG9yaXpvbnRhbEJhciBjbGFzcz1cImFpLXRhYmxlLWhvcml6b250YWwtc2Nyb2xsLWJhci13cmFwcGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRhaW5lclJlY3QoKS53aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10YWJsZS1zY3JvbGwtYmFyLWlubmVyXCIgW3N0eWxlLndpZHRoLnB4XT1cInNjcm9sbGJhcldpZHRoKClcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICN2ZXJ0aWNhbEJhclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWktdGFibGUtdmVydGljYWwtc2Nyb2xsLWJhci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbnRhaW5lclJlY3QoKS5oZWlnaHQgLSBmaWVsZEhlYWRIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiZmllbGRIZWFkSGVpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktdGFibGUtc2Nyb2xsLWJhci1pbm5lclwiIFtzdHlsZS5oZWlnaHQucHhdPVwic2Nyb2xsVG90YWxIZWlnaHQoKVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYWktdGFibGUtcmVuZGVyZXI+XG4gICAgfVxuICAgIDxhaS10YWJsZS1kcmFnIChkcmFnRW5kKT1cImRyYWdFbmQoJGV2ZW50KVwiPjwvYWktdGFibGUtZHJhZz5cbjwvZGl2PlxuIl19
|
638
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3BhY2thZ2VzL2dyaWQvc3JjL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sTUFBTSxFQUlOLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQ0gsYUFBYSxFQUNiLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUNoQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qiw0QkFBNEIsRUFDNUIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUNILGVBQWUsRUFFZixvQkFBb0IsRUFFcEIscUJBQXFCLEVBRXhCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsU0FBUyxFQUNaLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQWtCLE1BQU0sbUJBQW1CLENBQUM7QUFDekcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBTUgsUUFBUSxFQUdYLE1BQU0saUJBQWlCLENBQUM7O0FBYXpCLE1BQU0sT0FBTyxXQUFZLFNBQVEsZUFBZTtJQTJGNUM7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQTNGSixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1QyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4Qix1QkFBa0IsR0FBK0IsSUFBSSxDQUFDO1FBRXRELGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFekMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFNOUIsb0JBQWUsR0FBRywwQkFBMEIsQ0FBQztRQUU3QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFaEQsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3RSxDQUFDLENBQUMsQ0FBQztRQUVILGNBQVMsR0FBRyxTQUFTLENBQWEsV0FBVyxDQUFDLENBQUM7UUFFL0MsbUJBQWMsR0FBRyxTQUFTLENBQWEsYUFBYSxDQUFDLENBQUM7UUFFdEQscUJBQWdCLEdBQUcsU0FBUyxDQUFhLGVBQWUsQ0FBQyxDQUFDO1FBRTFELGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBRUgsMkJBQXNCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFFSCx3QkFBbUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRyxDQUFDLGFBQWEsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFjLEdBQWtDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDMUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQztnQkFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDbEMsU0FBUyxFQUFFLDBCQUEwQjtnQkFDckMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNO2dCQUNsQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQzFCLFdBQVcsRUFBRSwwQkFBMEI7Z0JBQ3ZDLGNBQWMsRUFBRSx1QkFBdUI7Z0JBQ3ZDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ3JCLG9CQUFvQixFQUFFLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO2dCQUNuRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7YUFDOUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztnQkFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNsQyxVQUFVLEVBQUUsVUFBVTtnQkFDdEIsY0FBYyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLO2dCQUMxQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU07Z0JBQzVDLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDM0IsZUFBZSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDekMsT0FBTyxFQUFFO29CQUNMLGdCQUFnQixFQUFFLENBQUMsT0FBZ0MsRUFBRSxFQUFFO3dCQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMxQyxDQUFDO2lCQUNKO2FBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RyxDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLEdBQUcsK0JBQStCLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUE2WEgsaUJBQVksR0FBRyxDQUFDLE9BQTRCLEVBQUUsRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUNwQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQzdDLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN2RCxNQUFNLFdBQVcsR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDNUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsYUFBYSxDQUFDO2dCQUM3RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsYUFBYSxDQUFDO2dCQUN6RCxJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNoQixhQUFhLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO2dCQUN0RSxDQUFDO2dCQUNELElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2QsV0FBVyxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFDaEUsQ0FBQztnQkFDRCxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUEyQ00sbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFRLENBQUMsY0FBYyxDQUFDO2dCQUNqQyxXQUFXLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUM7UUFFTSxxQkFBZ0IsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBUSxDQUFDLGNBQWMsQ0FBQztnQkFDakMsVUFBVTtnQkFDVixXQUFXLEVBQUUsSUFBSTthQUNwQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDO1FBcGNFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FDRixHQUFHLEVBQUU7WUFDRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDOUIsQ0FBQztRQUNGLE1BQU0sQ0FDRixHQUFHLEVBQUU7WUFDRCx3REFBd0Q7WUFDeEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDM0QsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNuRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM5QixDQUFDO1FBRUYsTUFBTSxDQUNGLEdBQUcsRUFBRTtZQUNELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFTLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNYLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUNqRSxLQUFLLE1BQU0sZ0JBQWdCLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQzt3QkFDckMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ25DLE9BQU87d0JBQ0gsR0FBRyxJQUFJO3dCQUNQLGVBQWU7d0JBQ2YsY0FBYyxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEVBQUU7cUJBQ3BFLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM5QixDQUFDO0lBQ04sQ0FBQztJQUVRLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sV0FBVztRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQ25ELG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDN0MsYUFBYSxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztZQUM3QyxXQUFXLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixDQUFDO1lBQ3pDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzdCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHVCQUF1QjtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsSUFBSSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVyQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQzt3QkFDN0UsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ25ELENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQTRCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2Isb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuRCxNQUFNLEdBQUcsR0FBRyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLEdBQUcsSUFBSSxJQUFJO2dCQUFFLE9BQU87WUFDeEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDakMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FDckMsSUFBSSxDQUFDLE9BQU8sRUFDWixDQUFDLEVBQ0QsQ0FBQyxFQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsRUFDakIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDdEMsT0FBUSxFQUNSLFVBQVUsQ0FDYixDQUFDO1lBQ0YsZ0JBQWdCLENBQ1osZ0JBQWdCLENBQUMsY0FBYyxFQUMvQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQ2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUMzQixDQUFDO1lBQ0YsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyRCxPQUFRLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNoRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNyRixJQUFJLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO29CQUMxQyxNQUFNLE9BQU8sR0FBd0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3pELElBQUksU0FBUyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2xDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNyRSxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLENBQTRCO1FBQ3ZDLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdFLElBQ0ksVUFBVSxDQUFDLE1BQU0sS0FBSyxvQkFBb0IsQ0FBQyxLQUFLO1lBQ2hELFFBQVE7WUFDUixPQUFPO1lBQ1AsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFDbEksQ0FBQztZQUNDLE9BQU87UUFDWCxDQUFDO1FBRUQsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNqQixLQUFLLG1CQUFtQjtnQkFDcEIsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsT0FBTztvQkFBRSxPQUFPO2dCQUNyQixJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsT0FBTztZQUNYLEtBQUssZ0NBQWdDO2dCQUNqQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxPQUFPO29CQUFFLE9BQU87Z0JBQ3JCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEMsT0FBTztZQUNYLEtBQUssYUFBYTtnQkFDZCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTztvQkFBRSxPQUFPO2dCQUNsQyxNQUFNLGtCQUFrQixHQUF3QixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2pFLE9BQU87WUFDWCxLQUFLLGlCQUFpQjtnQkFDbEIsSUFBSSxDQUFDLFFBQVE7b0JBQUUsT0FBTztnQkFDdEIsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDakUsSUFBSSxXQUFXLEdBQWEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsV0FBVyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzFELENBQUM7cUJBQU0sQ0FBQztvQkFDSixxQkFBcUI7b0JBQ3JCLFdBQVcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO2dCQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDckMsT0FBTztZQUNYLEtBQUssdUJBQXVCLENBQUM7WUFDN0IsS0FBSyx5QkFBeUIsQ0FBQztZQUMvQixLQUFLLGlCQUFpQixDQUFDO1lBQ3ZCLEtBQUssNEJBQTRCLENBQUM7WUFDbEMsS0FBSyxtQ0FBbUM7Z0JBQ3BDLE9BQU87WUFDWDtnQkFDSSxJQUFJLENBQUMsMkJBQTJCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUQsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBNEI7UUFDckMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQTRCO1FBQ3hDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2Isb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsT0FBTztZQUNYLENBQUM7WUFDRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUE0QjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUc7WUFDYixDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDZixDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDbEIsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JILE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZELE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDL0IsU0FBUztZQUNULFFBQVE7WUFDUixVQUFVO1lBQ1YsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUMxQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLENBQTRCO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNkLEdBQUcsQ0FBQztZQUNKLGdCQUFnQjtTQUNuQixDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRS9DLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6RSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssb0JBQW9CLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLHdCQUF3QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUFFLE9BQU87UUFDOUgsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNqQixLQUFLLHVCQUF1QixDQUFDLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsMkJBQTJCLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNqRyxNQUFNO1lBQ1YsQ0FBQztZQUNELEtBQUssNEJBQTRCLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNLGFBQWEsR0FBRyxPQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNO1lBQ1YsQ0FBQztZQUNELEtBQUssbUNBQW1DLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsS0FBSyxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDakMsTUFBTTtZQUNWLENBQUM7WUFDRCxLQUFLLHlCQUF5QixDQUFDLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxhQUFhLEVBQUcsQ0FBQztnQkFDcEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtvQkFDbkMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7b0JBQ3JDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU07aUJBQ2hFLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1YsQ0FBQztZQUNELEtBQUssd0JBQXdCO2dCQUN6QixVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMxQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3ZELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1YsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ2hELE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLGFBQWEsRUFBRyxDQUFDO29CQUNqRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUV0RSxNQUFNLFFBQVEsR0FBRzt3QkFDYixDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQzt3QkFDL0IsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTTtxQkFDcEQsQ0FBQztvQkFDRixNQUFNLGlCQUFpQixHQUFHO3dCQUN0QixDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxHQUFHLHFCQUFxQjt3QkFDN0QsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTTtxQkFDaEUsQ0FBQztvQkFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQWdCLENBQUM7b0JBQzVGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTt3QkFDckUsT0FBTyxFQUFFLE9BQU87d0JBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO3dCQUM3QixNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO3dCQUMvQixRQUFRO3dCQUNSLFVBQVUsRUFBRSxVQUFVO3dCQUN0QixpQkFBaUI7cUJBQ3BCLENBQUMsQ0FBQztvQkFDSCxJQUFJLE9BQU8sRUFBRSxDQUFDO3dCQUNWLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFOzRCQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQzs0QkFDM0IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7d0JBQ25DLENBQUMsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUM5QixDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTTtRQUNkLENBQUM7UUFDRCxPQUFPO0lBQ1gsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUE0QjtRQUN0QyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxNQUFNLGdCQUFnQixHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQztZQUNKLGdCQUFnQjtTQUNuQixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDdEQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtvQkFDdkMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQzdCLE9BQU8sRUFBRSxPQUFRO29CQUNqQixRQUFRLEVBQUUsUUFBUztvQkFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQy9CLGdCQUFnQixFQUFFLENBQUMsS0FBbUMsRUFBRSxFQUFFO3dCQUN0RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN4QyxDQUFDO2lCQUNKLENBQUMsQ0FBQztZQUNQLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDTCxDQUFDO0lBRU8sU0FBUztRQUNiLFNBQVMsQ0FBYSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDdEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxDQUFhLEVBQUUsRUFBRTtZQUN6QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBdUJPLHVCQUF1QjtRQUMzQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxPQUFRLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLFNBQVMsQ0FBYSxJQUFJLENBQUMsZ0JBQWdCLEVBQUcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3JGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFUCxTQUFTLENBQWEsSUFBSSxDQUFDLGNBQWMsRUFBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDbkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLFNBQVMsQ0FBYSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzFELElBQUksQ0FDRCxNQUFNLENBQ0YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNGLENBQUMsQ0FBQyxNQUFNLFlBQVksT0FBTztZQUMzQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FDaEUsRUFDRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3RDO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLHdCQUF3QixDQUFDLGVBQXdCLEVBQUUsa0JBQThDO1FBQ3JHLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUNqRCxDQUFDO0lBaUJPLGNBQWMsQ0FBQyxDQUFNO1FBQ3pCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBUSxDQUFDLGNBQWMsQ0FBQztZQUNqQyxTQUFTO1lBQ1QsV0FBVyxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVc7WUFDMUMsTUFBTSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFlBQVk7U0FDL0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHVCQUF1QjtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUMxQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDM0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsR0FBRywrQkFBK0IsQ0FBQztZQUNsRixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLGNBQWMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hELE9BQU87WUFDWCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsU0FBUyxDQUFnQixRQUFRLEVBQUUsU0FBUyxDQUFDO2FBQ3hDLElBQUksQ0FDRCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQy9GLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDdEM7YUFDQSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3BCLE9BQU87WUFDWCxDQUFDO1lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNwQixPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUUzRSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDaEIsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQ3JFLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUNsRixTQUFTLEVBQ1QsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQzlCLENBQUM7d0JBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTs0QkFDM0MsU0FBUyxFQUFFLFlBQVk7eUJBQzFCLENBQUMsQ0FBQztvQkFDUCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFFdkIsTUFBTSxPQUFPLEdBQW1CO29CQUM1QixnQkFBZ0IsRUFBRSxDQUFDLElBQTZCLEVBQUUsRUFBRTt3QkFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFtQixFQUFFLEVBQUU7d0JBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELFFBQVEsRUFBRSxDQUFDLElBQXFCLEVBQUUsRUFBRTt3QkFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9CLENBQUM7b0JBQ0QsU0FBUyxFQUFFLENBQUMsSUFBc0IsRUFBRSxFQUFFO3dCQUNsQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3JCLENBQUM7aUJBQ0osQ0FBQztnQkFFRixjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtvQkFDMUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxFQUFFOzRCQUN4RyxTQUFTLEVBQUUsWUFBWTt5QkFDMUIsQ0FBQyxDQUFDO29CQUNQLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQztnQkFDbEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGNBQWM7Z0JBQzFELE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ2hDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRU8seUJBQXlCLENBQUMsT0FBZTtRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xDLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVztnQkFDMUIsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ2hDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsU0FBbUI7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQztnQkFDbEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dCQUNyQixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUM3QixNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNoQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxhQUFhLENBQUM7UUFDN0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUN6RCxJQUFJLFVBQVUsR0FBRyxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLFNBQVMsR0FBRyxXQUFXLEVBQUUsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFpQjtRQUNyQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNmLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ2pELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzs0QkFDbEIsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDM0IsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7eUJBQ2xDLENBQUMsQ0FBQztvQkFDUCxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLFdBQVc7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBTSxDQUFDO29CQUNyRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQzt3QkFDdEIsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO3dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztxQkFDcEIsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssUUFBUSxDQUFDLE1BQU07Z0JBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBVyxDQUFDO3dCQUNqRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO3FCQUM5QixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztnQkFDRCxPQUFPO1FBQ2YsQ0FBQztRQUNELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqRCxDQUFDOytHQXJzQlEsV0FBVzttR0FBWCxXQUFXLHVHQUZULENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUMsNllDeEY5Rixnd0NBMkJBLDRDRDREYyxlQUFlLDZNQUFFLG9CQUFvQjs7NEZBR3RDLFdBQVc7a0JBWHZCLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixLQUFLLEVBQUUsZUFBZTtxQkFDekIsV0FDUSxDQUFDLGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxhQUNyQyxDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGluamVjdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpZ25hbCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgZmlsdGVyLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtvRXZlbnRPYmplY3QgfSBmcm9tICcuL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHtcbiAgICBBSV9UQUJMRV9DRUxMLFxuICAgIEFJX1RBQkxFX0NFTExfUEFERElORyxcbiAgICBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OLFxuICAgIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT05fV0lEVEgsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkUsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRF9PUEFDSVRZX0xJTkUsXG4gICAgQUlfVEFCTEVfRklFTERfSEVBRF9TRUxFQ1RfQ0hFQ0tCT1gsXG4gICAgQUlfVEFCTEVfUFJFVkVOVF9DTEVBUl9TRUxFQ1RJT05fQ0xBU1MsXG4gICAgQUlfVEFCTEVfUk9XX0FERF9CVVRUT04sXG4gICAgQUlfVEFCTEVfUk9XX0RSQUcsXG4gICAgQUlfVEFCTEVfUk9XX0hFQUQsXG4gICAgQUlfVEFCTEVfUk9XX0hFQURfV0lEVEgsXG4gICAgQUlfVEFCTEVfUk9XX1NFTEVDVF9DSEVDS0JPWCxcbiAgICBEQkxfQ0xJQ0tfRURJVF9UWVBFLFxuICAgIERFRkFVTFRfUE9JTlRfUE9TSVRJT04sXG4gICAgREVGQVVMVF9TQ1JPTExfU1RBVEVcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29vcmRpbmF0ZSwgUmVuZGVyZXJDb250ZXh0LCBBSVRhYmxlIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVHcmlkQmFzZSB9IGZyb20gJy4vZ3JpZC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlUmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyL3JlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZEV2ZW50U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBBSVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQUlUYWJsZUFyZWFUeXBlLFxuICAgIEFJVGFibGVDb250ZXh0TWVudUl0ZW0sXG4gICAgQUlUYWJsZU1vdXNlRG93blR5cGUsXG4gICAgQUlUYWJsZVJlbmRlcmVyQ29uZmlnLFxuICAgIEFJVGFibGVTZWxlY3RBbGxTdGF0ZSxcbiAgICBTY3JvbGxBY3Rpb25PcHRpb25zXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBBSVRhYmxlR3JpZEkxOG5LZXksXG4gICAgYnVpbGRHcmlkTGluZWFyUm93cyxcbiAgICBnZXRDb2x1bW5JbmRpY2VzU2l6ZU1hcCxcbiAgICBnZXREZXRhaWxCeVRhcmdldE5hbWUsXG4gICAgZ2V0STE4blRleHRCeUtleSxcbiAgICBoYW5kbGVNb3VzZVN0eWxlLFxuICAgIGlzQ2VsbE1hdGNoS2V5d29yZHMsXG4gICAgaXNXaW5kb3dzXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZ2V0TW91c2VQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMvcG9zaXRpb24nO1xuaW1wb3J0IHsgQUlUYWJsZURyYWdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJhZy9kcmFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBidWlsZENsaXBib2FyZERhdGEsIHdyaXRlVG9DbGlwYm9hcmQsIHdyaXRlVG9BSVRhYmxlLCBBSVRhYmxlQWN0aW9ucyB9IGZyb20gJy4vdXRpbHMvY2xpcGJvYXJkJztcbmltcG9ydCB7IFRoeU5vdGlmeVNlcnZpY2UgfSBmcm9tICduZ3gtdGV0aHlzL25vdGlmeSc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICAgIEFkZEZpZWxkT3B0aW9ucyxcbiAgICBBZGRSZWNvcmRPcHRpb25zLFxuICAgIEFJUmVjb3JkRmllbGRJZFBhdGgsXG4gICAgQUlUYWJsZUZpZWxkLFxuICAgIERyYWdFbmREYXRhLFxuICAgIERyYWdUeXBlLFxuICAgIElkUGF0aCxcbiAgICBVcGRhdGVGaWVsZFZhbHVlT3B0aW9uc1xufSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWdyaWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdhaS10YWJsZS1ncmlkJ1xuICAgIH0sXG4gICAgaW1wb3J0czogW0FJVGFibGVSZW5kZXJlciwgQUlUYWJsZURyYWdDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW0FJVGFibGVHcmlkRXZlbnRTZXJ2aWNlLCBBSVRhYmxlR3JpZEZpZWxkU2VydmljZSwgQUlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlR3JpZCBleHRlbmRzIEFJVGFibGVHcmlkQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBwcml2YXRlIGlzRHJhZ1NlbGVjdGluZyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkcmFnU2VsZWN0aW9uU3RhcnQ6IEFJUmVjb3JkRmllbGRJZFBhdGggfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZSA9IGluamVjdChUaHlOb3RpZnlTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgaXNQb3BvdmVyT3BlbiA9IGZhbHNlO1xuXG4gICAgdGltZXIhOiBudW1iZXIgfCBudWxsO1xuXG4gICAgcmVzaXplT2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcblxuICAgIGZpZWxkSGVhZEhlaWdodCA9IEFJX1RBQkxFX0ZJRUxEX0hFQURfSEVJR0hUO1xuXG4gICAgY29udGFpbmVyUmVjdCA9IHNpZ25hbCh7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSk7XG5cbiAgICBmcm96ZW5Db2x1bW5Db3VudCA9IHNpZ25hbCgxKTtcblxuICAgIGhhc0NvbnRhaW5lclJlY3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lclJlY3QoKS53aWR0aCA+IDAgJiYgdGhpcy5jb250YWluZXJSZWN0KCkuaGVpZ2h0ID4gMDtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29udGFpbmVyJyk7XG5cbiAgICB2ZXJ0aWNhbEJhclJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigndmVydGljYWxCYXInKTtcblxuICAgIGhvcml6b250YWxCYXJSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2hvcml6b250YWxCYXInKTtcblxuICAgIGxpbmVhclJvd3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBidWlsZEdyaWRMaW5lYXJSb3dzKHRoaXMuZ3JpZERhdGEoKS5yZWNvcmRzLCAhdGhpcy5haVJlYWRvbmx5KCkpO1xuICAgIH0pO1xuXG4gICAgdmlzaWJsZUNvbHVtbnNJbmRleE1hcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IEFJVGFibGUuZ2V0VmlzaWJsZUZpZWxkcyh0aGlzLmFpVGFibGUpO1xuICAgICAgICByZXR1cm4gbmV3IE1hcChjb2x1bW5zPy5tYXAoKGl0ZW0sIGluZGV4KSA9PiBbaXRlbS5faWQsIGluZGV4XSkpO1xuICAgIH0pO1xuXG4gICAgdmlzaWJsZVJvd3NJbmRleE1hcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXAodGhpcy5saW5lYXJSb3dzKCkubWFwKChyb3csIGluZGV4KSA9PiBbcm93Ll9pZCwgaW5kZXhdKSk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXJFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIoKSEubmF0aXZlRWxlbWVudDtcbiAgICB9KTtcblxuICAgIHJlbmRlcmVyQ29uZmlnOiBTaWduYWw8QUlUYWJsZVJlbmRlcmVyQ29uZmlnPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRzID0gQUlUYWJsZS5nZXRWaXNpYmxlRmllbGRzKHRoaXMuYWlUYWJsZSk7XG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGUgPSBuZXcgQ29vcmRpbmF0ZSh7XG4gICAgICAgICAgICBjb250YWluZXI6IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLFxuICAgICAgICAgICAgcm93SGVpZ2h0OiBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICAgICAgICAgIHJvd0NvdW50OiB0aGlzLmxpbmVhclJvd3MoKS5sZW5ndGgsXG4gICAgICAgICAgICBjb2x1bW5Db3VudDogZmllbGRzLmxlbmd0aCxcbiAgICAgICAgICAgIHJvd0luaXRTaXplOiBBSV9UQUJMRV9GSUVMRF9IRUFEX0hFSUdIVCxcbiAgICAgICAgICAgIGNvbHVtbkluaXRTaXplOiBBSV9UQUJMRV9ST1dfSEVBRF9XSURUSCxcbiAgICAgICAgICAgIHJvd0luZGljZXNTaXplTWFwOiB7fSxcbiAgICAgICAgICAgIGNvbHVtbkluZGljZXNTaXplTWFwOiBnZXRDb2x1bW5JbmRpY2VzU2l6ZU1hcCh0aGlzLmFpVGFibGUsIGZpZWxkcyksXG4gICAgICAgICAgICBmcm96ZW5Db2x1bW5Db3VudDogdGhpcy5mcm96ZW5Db2x1bW5Db3VudCgpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWlUYWJsZTogdGhpcy5haVRhYmxlLFxuICAgICAgICAgICAgZ3JpZERhdGE6IHRoaXMuZ3JpZERhdGEoKSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXJFbGVtZW50KCksXG4gICAgICAgICAgICBjb29yZGluYXRlOiBjb29yZGluYXRlLFxuICAgICAgICAgICAgY29udGFpbmVyV2lkdGg6IHRoaXMuY29udGFpbmVyUmVjdCgpLndpZHRoLFxuICAgICAgICAgICAgY29udGFpbmVySGVpZ2h0OiB0aGlzLmNvbnRhaW5lclJlY3QoKS5oZWlnaHQsXG4gICAgICAgICAgICByZWZlcmVuY2VzOiB0aGlzLmFpUmVmZXJlbmNlcygpLFxuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMuYWlSZWFkb25seSgpLFxuICAgICAgICAgICAgcm93RHJhZ0Rpc2FibGVkOiB0aGlzLmFpUm93RHJhZ0Rpc2FibGVkKCksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgdXBkYXRlRmllbGRWYWx1ZTogKG9wdGlvbnM6IFVwZGF0ZUZpZWxkVmFsdWVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWlVcGRhdGVGaWVsZFZhbHVlLmVtaXQob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29vcmRpbmF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyZXJDb25maWcoKS5jb29yZGluYXRlO1xuICAgIH0pO1xuXG4gICAgc2Nyb2xsVG90YWxIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmNvb3JkaW5hdGUoKS50b3RhbEhlaWdodCwgdGhpcy5jb250YWluZXJSZWN0KCkuaGVpZ2h0IC0gdGhpcy5maWVsZEhlYWRIZWlnaHQpO1xuICAgIH0pO1xuXG4gICAgc2Nyb2xsYmFyV2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvb3JkaW5hdGUoKS50b3RhbFdpZHRoICsgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTl9XSURUSDtcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRDb250YWluZXJSZWN0KCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRHbG9iYWxNb3VzZWRvd24oKTtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyUmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMuYmluZFdoZWVsKCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRDbGlwYm9hcmRTaG9ydGN1dHMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNDb250YWluZXJSZWN0KCkgJiYgdGhpcy5ob3Jpem9udGFsQmFyUmVmKCkgJiYgdGhpcy52ZXJ0aWNhbEJhclJlZigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iaW5kU2Nyb2xsQmFyU2Nyb2xsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRLZXl3b3Jkc01hdGNoZWRDZWxscygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8g5b2T5paw5aKe6KGM6YCJ5Lit55qEY2VsbCznvJbovpHlkI7vvIxhY3RpdmVDZWxsIOS4jeWcqOaWsOWinueahOihjOS4reaXtu+8jOagueaNruetm+mAiSDov4fmu6TooYzmlbDmja4s6Kem5Y+R6YeN5paw5riy5p+TXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlQ2VsbFBhdGggPSB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuYWN0aXZlQ2VsbDtcbiAgICAgICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZUNlbGxQYXRoIHx8ICF0aGlzLmFpVGFibGUucmVjb3Jkc1dpbGxIaWRkZW4oKS5pbmNsdWRlcyhhY3RpdmVDZWxsUGF0aFswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFpVGFibGUucmVjb3Jkc1dpbGxIaWRkZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlLnJlY29yZHNXaWxsSGlkZGVuLnNldChbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcblxuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkSWRTZXQgPSBuZXcgU2V0PHN0cmluZz4odGhpcy5haVRhYmxlLnJlY29yZHMoKS5tYXAoKGl0ZW0pID0+IGl0ZW0uX2lkKSk7XG4gICAgICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRzID0gdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3JkcztcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RlZFJlY29yZElkIG9mIHNlbGVjdGVkUmVjb3Jkcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWNvcmRJZFNldC5oYXMoc2VsZWN0ZWRSZWNvcmRJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJlY29yZHMuZGVsZXRlKHNlbGVjdGVkUmVjb3JkSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24udXBkYXRlKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSZWNvcmRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEFsbFN0YXRlOiB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5zZWxlY3RBbGxTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pbml0Q29udGV4dCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Q29udGV4dCgpIHtcbiAgICAgICAgdGhpcy5haVRhYmxlLmNvbnRleHQgPSBuZXcgUmVuZGVyZXJDb250ZXh0KHtcbiAgICAgICAgICAgIGxpbmVhclJvd3M6IHRoaXMubGluZWFyUm93cyxcbiAgICAgICAgICAgIHZpc2libGVDb2x1bW5zSW5kZXhNYXA6IHRoaXMudmlzaWJsZUNvbHVtbnNJbmRleE1hcCxcbiAgICAgICAgICAgIHZpc2libGVSb3dzSW5kZXhNYXA6IHRoaXMudmlzaWJsZVJvd3NJbmRleE1hcCxcbiAgICAgICAgICAgIHBvaW50UG9zaXRpb246IHNpZ25hbChERUZBVUxUX1BPSU5UX1BPU0lUSU9OKSxcbiAgICAgICAgICAgIHNjcm9sbFN0YXRlOiBzaWduYWwoREVGQVVMVF9TQ1JPTExfU1RBVEUpLFxuICAgICAgICAgICAgZnJvemVuQ29sdW1uQ291bnQ6IHRoaXMuZnJvemVuQ29sdW1uQ291bnQsXG4gICAgICAgICAgICByZWZlcmVuY2VzOiB0aGlzLmFpUmVmZXJlbmNlcyxcbiAgICAgICAgICAgIGFpRmllbGRDb25maWc6IHRoaXMuYWlGaWVsZENvbmZpZyxcbiAgICAgICAgICAgIHNjcm9sbEFjdGlvbjogdGhpcy5zY3JvbGxBY3Rpb25cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRLZXl3b3Jkc01hdGNoZWRDZWxscygpIHtcbiAgICAgICAgY29uc3Qga2V5d29yZHMgPSB0aGlzLmFpS2V5d29yZHMoKTtcbiAgICAgICAgbGV0IG1hdGNoZWRDZWxscyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgIGlmIChrZXl3b3Jkcykge1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHRoaXMuYWlSZWZlcmVuY2VzKCk7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGUucmVjb3JkcygpLmZvckVhY2goKHJlY29yZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZS5maWVsZHMoKS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDZWxsTWF0Y2hLZXl3b3Jkcyh0aGlzLmFpVGFibGUsIGZpZWxkLCByZWNvcmQuX2lkLCBrZXl3b3JkcywgcmVmZXJlbmNlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRDZWxscy5hZGQoYCR7cmVjb3JkLl9pZH06JHtmaWVsZC5faWR9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5haVRhYmxlLmtleXdvcmRzTWF0Y2hlZENlbGxzLnNldChtYXRjaGVkQ2VsbHMpO1xuICAgIH1cblxuICAgIHN0YWdlTW91c2Vtb3ZlKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0TmFtZSA9IGUuZXZlbnQudGFyZ2V0Lm5hbWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGdyaWRTdGFnZSA9IGUuZXZlbnQuY3VycmVudFRhcmdldC5nZXRTdGFnZSgpO1xuICAgICAgICAgICAgY29uc3QgcG9zID0gZ3JpZFN0YWdlPy5nZXRQb2ludGVyUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmIChwb3MgPT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgeyBjb250ZXh0IH0gPSB0aGlzLmFpVGFibGU7XG4gICAgICAgICAgICBjb25zdCB7IHgsIHkgfSA9IHBvcztcbiAgICAgICAgICAgIGNvbnN0IGN1ck1vdXNlUG9zaXRpb24gPSBnZXRNb3VzZVBvc2l0aW9uKFxuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZSxcbiAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgIHksXG4gICAgICAgICAgICAgICAgdGhpcy5jb29yZGluYXRlKCksXG4gICAgICAgICAgICAgICAgQUlUYWJsZS5nZXRWaXNpYmxlRmllbGRzKHRoaXMuYWlUYWJsZSksXG4gICAgICAgICAgICAgICAgY29udGV4dCEsXG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGhhbmRsZU1vdXNlU3R5bGUoXG4gICAgICAgICAgICAgICAgY3VyTW91c2VQb3NpdGlvbi5yZWFsVGFyZ2V0TmFtZSxcbiAgICAgICAgICAgICAgICBjdXJNb3VzZVBvc2l0aW9uLmFyZWFUeXBlLFxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudCgpLFxuICAgICAgICAgICAgICAgIHRoaXMuYWlSZWFkb25seSgpLFxuICAgICAgICAgICAgICAgIHRoaXMuYWlSb3dEcmFnRGlzYWJsZWQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChjdXJNb3VzZVBvc2l0aW9uLmFyZWFUeXBlICE9PSBBSVRhYmxlQXJlYVR5cGUubm9uZSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQhLnNldFBvaW50UG9zaXRpb24oY3VyTW91c2VQb3NpdGlvbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFBvaW50UG9zaXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnU2VsZWN0aW5nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBmaWVsZElkLCByZWNvcmRJZCB9ID0gZ2V0RGV0YWlsQnlUYXJnZXROYW1lKGN1ck1vdXNlUG9zaXRpb24ucmVhbFRhcmdldE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZElkICYmIHJlY29yZElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuZHJhZ1NlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRDZWxsOiBBSVJlY29yZEZpZWxkSWRQYXRoID0gW3JlY29yZElkLCBmaWVsZElkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0Q2VsbCAmJiAhIXN0YXJ0Q2VsbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdENlbGxzKHN0YXJ0Q2VsbCwgZW5kQ2VsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YWdlTW91c2Vkb3duKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgY29uc3QgbW91c2VFdmVudCA9IGUuZXZlbnQuZXZ0O1xuICAgICAgICBjb25zdCBfdGFyZ2V0TmFtZSA9IGUuZXZlbnQudGFyZ2V0Lm5hbWUoKTtcblxuICAgICAgICBjb25zdCB7IHRhcmdldE5hbWUsIGZpZWxkSWQsIHJlY29yZElkIH0gPSBnZXREZXRhaWxCeVRhcmdldE5hbWUoX3RhcmdldE5hbWUpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBtb3VzZUV2ZW50LmJ1dHRvbiA9PT0gQUlUYWJsZU1vdXNlRG93blR5cGUuUmlnaHQgJiZcbiAgICAgICAgICAgIHJlY29yZElkICYmXG4gICAgICAgICAgICBmaWVsZElkICYmXG4gICAgICAgICAgICAodGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkUmVjb3Jkcy5oYXMocmVjb3JkSWQpIHx8IHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZENlbGxzLmhhcyhgJHtyZWNvcmRJZH06JHtmaWVsZElkfWApKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGFyZ2V0TmFtZSkge1xuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9IRUFEOlxuICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZpZWxkSWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5zZWxlY3RGaWVsZChmaWVsZElkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUZpZWxkRHJhZ1N0YXJ0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9IRUFEX09QQUNJVFlfTElORTpcbiAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWVsZElkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWVsZFdpZHRoRHJhZ1N0YXJ0KGZpZWxkSWQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfQ0VMTDpcbiAgICAgICAgICAgICAgICBpZiAoIXJlY29yZElkIHx8ICFmaWVsZElkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhZ1NlbGVjdGlvblN0YXJ0OiBBSVJlY29yZEZpZWxkSWRQYXRoID0gW3JlY29yZElkLCBmaWVsZElkXTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURyYWdTZWxlY3Rpb25TdGF0ZSh0cnVlLCBkcmFnU2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdENlbGxzKGRyYWdTZWxlY3Rpb25TdGFydCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9ST1dfRFJBRzpcbiAgICAgICAgICAgICAgICBpZiAoIXJlY29yZElkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkcyA9IHRoaXMuYWlUYWJsZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJlY29yZHM7XG4gICAgICAgICAgICAgICAgbGV0IGRyYWdSZWNvcmRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFJlY29yZHMuaGFzKHJlY29yZElkKSkge1xuICAgICAgICAgICAgICAgICAgICBkcmFnUmVjb3JkcyA9IFtyZWNvcmRJZCwgLi4uc2VsZWN0ZWRSZWNvcmRzLnZhbHVlcygpXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyDlvZPliY3mi5bmi73ooYzkuI3lnKjpgInkuK3ooYzkuK3vvIzlj6rmi5bmi73lvZPliY3ooYxcbiAgICAgICAgICAgICAgICAgICAgZHJhZ1JlY29yZHMgPSBbcmVjb3JkSWRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJvd0RyYWdTdGFydChkcmFnUmVjb3Jkcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTjpcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfRklFTERfQUREX0JVVFRPTjpcbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfUk9XX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX1JPV19TRUxFQ1RfQ0hFQ0tCT1g6XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0hFQURfU0VMRUNUX0NIRUNLQk9YOlxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YWdlTW91c2V1cChlOiBLb0V2ZW50T2JqZWN0PE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIHRoaXMudXBkYXRlRHJhZ1NlbGVjdGlvblN0YXRlKGZhbHNlLCBudWxsKTtcbiAgICB9XG5cbiAgICBzdGFnZU1vdXNlbGVhdmUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1lciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0UG9pbnRQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGFnZUNvbnRleHRtZW51KGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgY29uc3QgbW91c2VFdmVudCA9IGUuZXZlbnQuZXZ0O1xuICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYWlSZWFkb25seSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXROYW1lID0gZS5ldmVudC50YXJnZXQubmFtZSgpO1xuICAgICAgICBjb25zdCB7IGZpZWxkSWQsIHJlY29yZElkIH0gPSBnZXREZXRhaWxCeVRhcmdldE5hbWUodGFyZ2V0TmFtZSk7XG4gICAgICAgIGlmICghcmVjb3JkSWQgfHwgIWZpZWxkSWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0ge1xuICAgICAgICAgICAgeDogbW91c2VFdmVudC54LFxuICAgICAgICAgICAgeTogbW91c2VFdmVudC55XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbWVudUl0ZW1zOiBBSVRhYmxlQ29udGV4dE1lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuYWlDb250ZXh0TWVudUl0ZW1zKCkpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtcy5wdXNoKC4uLnRoaXMuYWlDb250ZXh0TWVudUl0ZW1zKCkhKHRoaXMuYWlUYWJsZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWVudUl0ZW1zLmxlbmd0aCB8fCBtZW51SXRlbXMuZXZlcnkoKGl0ZW0pID0+ICEhKGl0ZW0uaGlkZGVuICYmIGl0ZW0uaGlkZGVuKHRoaXMuYWlUYWJsZSwgdGFyZ2V0TmFtZSwgcG9zaXRpb24pKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2Uub3BlbkNvbnRleHRNZW51KHRoaXMuYWlUYWJsZSwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKSxcbiAgICAgICAgICAgIG1lbnVJdGVtcyxcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgdGFyZ2V0TmFtZSxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGFnZUNsaWNrKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0TmFtZURldGFpbCA9IGdldERldGFpbEJ5VGFyZ2V0TmFtZShlLmV2ZW50LnRhcmdldC5uYW1lKCkpO1xuICAgICAgICB0aGlzLmFpQ2xpY2suZW1pdCh7XG4gICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgdGFyZ2V0TmFtZURldGFpbFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbW91c2VFdmVudCA9IGUuZXZlbnQuZXZ0O1xuICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuYWlUYWJsZUdyaWRFdmVudFNlcnZpY2UuY2xvc2VDZWxsRWRpdG9yKCk7XG5cbiAgICAgICAgY29uc3QgeyBjb250ZXh0IH0gPSB0aGlzLmFpVGFibGU7XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0TmFtZSwgcm93SW5kZXg6IHBvaW50Um93SW5kZXggfSA9IGNvbnRleHQhLnBvaW50UG9zaXRpb24oKTtcbiAgICAgICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uICE9PSBBSVRhYmxlTW91c2VEb3duVHlwZS5MZWZ0IHx8ICh0YXJnZXROYW1lICE9PSBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkUgJiYgdGhpcy5haVJlYWRvbmx5KCkpKSByZXR1cm47XG4gICAgICAgIHN3aXRjaCAodGFyZ2V0TmFtZSkge1xuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9ST1dfQUREX0JVVFRPTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRSZWNvcmQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlY29yZHMsIGZpZWxkcyB9ID0gdGhpcy5ncmlkRGF0YSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLnNldEFjdGl2ZUNlbGwoW3JlY29yZHNbcmVjb3Jkcy5sZW5ndGggLSAxXS5faWQsIGZpZWxkc1swXS5faWRdKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfUk9XX1NFTEVDVF9DSEVDS0JPWDoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50UmVjb3JkSWQgPSBjb250ZXh0IS5saW5lYXJSb3dzKClbcG9pbnRSb3dJbmRleF0/Ll9pZDtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFJlY29yZChwb2ludFJlY29yZElkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQUlfVEFCTEVfRklFTERfSEVBRF9TRUxFQ1RfQ0hFQ0tCT1g6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0NoZWNrZWQgPSB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0QWxsU3RhdGUgPT09IEFJVGFibGVTZWxlY3RBbGxTdGF0ZS5hbGw7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3RBbGwoIWlzQ2hlY2tlZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFJX1RBQkxFX0ZJRUxEX0FERF9CVVRUT046IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkR3JvdXBSZWN0ID0gZS5ldmVudC50YXJnZXQuZ2V0UGFyZW50KCk/LmdldENsaWVudFJlY3QoKSE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkRmllbGQodGhpcy5jb250YWluZXJFbGVtZW50KCksIHtcbiAgICAgICAgICAgICAgICAgICAgeDogZmllbGRHcm91cFJlY3QueCArIGNvbnRhaW5lclJlY3QueCxcbiAgICAgICAgICAgICAgICAgICAgeTogY29udGFpbmVyUmVjdC55ICsgZmllbGRHcm91cFJlY3QueSArIGZpZWxkR3JvdXBSZWN0LmhlaWdodFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkU6XG4gICAgICAgICAgICAgICAgbW91c2VFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IF90YXJnZXROYW1lID0gZS5ldmVudC50YXJnZXQubmFtZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZmllbGRJZCB9ID0gZ2V0RGV0YWlsQnlUYXJnZXROYW1lKF90YXJnZXROYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGRJZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb3JlUmVjdCA9IGUuZXZlbnQudGFyZ2V0LmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRHcm91cFJlY3QgPSBlLmV2ZW50LnRhcmdldC5nZXRQYXJlbnQoKT8uZ2V0UGFyZW50KCk/LmdldENsaWVudFJlY3QoKSE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHg6IGNvbnRhaW5lclJlY3QueCArIG1vcmVSZWN0LngsXG4gICAgICAgICAgICAgICAgICAgICAgICB5OiBjb250YWluZXJSZWN0LnkgKyBtb3JlUmVjdC55ICsgbW9yZVJlY3QuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVkaXRGaWVsZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgeDogY29udGFpbmVyUmVjdC54ICsgZmllbGRHcm91cFJlY3QueCAtIEFJX1RBQkxFX0NFTExfUEFERElORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHk6IGNvbnRhaW5lclJlY3QueSArIGZpZWxkR3JvdXBSZWN0LnkgKyBmaWVsZEdyb3VwUmVjdC5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlZGl0T3JpZ2luID0gdGhpcy5jb250YWluZXJFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmtvbnZhanMtY29udGVudCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZW51UmVmID0gdGhpcy5haVRhYmxlR3JpZEZpZWxkU2VydmljZS5vcGVuRmllbGRNZW51KHRoaXMuYWlUYWJsZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZDogZmllbGRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTWVudXM6IHRoaXMuZmllbGRNZW51cygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdE9yaWdpbjogZWRpdE9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRGaWVsZFBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVudVJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVudVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1BvcG92ZXJPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0UG9pbnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzUG9wb3Zlck9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGFnZURibGNsaWNrKGU6IEtvRXZlbnRPYmplY3Q8TW91c2VFdmVudD4pIHtcbiAgICAgICAgY29uc3QgX3RhcmdldE5hbWUgPSBlLmV2ZW50LnRhcmdldC5uYW1lKCk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5hbWVEZXRhaWwgPSBnZXREZXRhaWxCeVRhcmdldE5hbWUoX3RhcmdldE5hbWUpO1xuICAgICAgICB0aGlzLmFpRGJDbGljay5lbWl0KHtcbiAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICB0YXJnZXROYW1lRGV0YWlsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmFpUmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBmaWVsZElkLCByZWNvcmRJZCB9ID0gdGFyZ2V0TmFtZURldGFpbDtcbiAgICAgICAgaWYgKCFyZWNvcmRJZCB8fCAhZmllbGRJZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5haVRhYmxlLmZpZWxkc01hcCgpW2ZpZWxkSWRdO1xuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBmaWVsZC50eXBlO1xuICAgICAgICBpZiAoREJMX0NMSUNLX0VESVRfVFlQRS5pbmNsdWRlcyhmaWVsZFR5cGUpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkRXZlbnRTZXJ2aWNlLm9wZW5DZWxsRWRpdG9yKHRoaXMuYWlUYWJsZSwge1xuICAgICAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogdGhpcy5jb250YWluZXJFbGVtZW50KCksXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRoaXMuY29vcmRpbmF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZElkOiBmaWVsZElkISxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWQ6IHJlY29yZElkISxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlczogdGhpcy5haVJlZmVyZW5jZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlRmllbGRWYWx1ZTogKHZhbHVlOiBVcGRhdGVGaWVsZFZhbHVlT3B0aW9uczxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVXBkYXRlRmllbGRWYWx1ZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRXaGVlbCgpIHtcbiAgICAgICAgZnJvbUV2ZW50PFdoZWVsRXZlbnQ+KHRoaXMuY29udGFpbmVyRWxlbWVudCgpLCAnd2hlZWwnLCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IFdoZWVsRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5jbG9zZUNlbGxFZGl0b3IoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEFjdGlvbih7IGRlbHRhWDogZS5kZWx0YVgsIGRlbHRhWTogZS5kZWx0YVksIHNoaWZ0S2V5OiBlLnNoaWZ0S2V5IH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2Nyb2xsQWN0aW9uID0gKG9wdGlvbnM6IFNjcm9sbEFjdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMudGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkZWx0YVgsIGRlbHRhWSwgc2hpZnRLZXkgfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBmaXhlZERlbHRhWSA9IHNoaWZ0S2V5ICYmIGlzV2luZG93cyA/IDAgOiBkZWx0YVk7XG4gICAgICAgICAgICBjb25zdCBmaXhlZERlbHRhWCA9IHNoaWZ0S2V5ICYmIGlzV2luZG93cyA/IGRlbHRhWSA6IGRlbHRhWDtcbiAgICAgICAgICAgIGNvbnN0IGhvcml6b250YWxCYXIgPSB0aGlzLmhvcml6b250YWxCYXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHZlcnRpY2FsQmFyID0gdGhpcy52ZXJ0aWNhbEJhclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGhvcml6b250YWxCYXIpIHtcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsQmFyLnNjcm9sbExlZnQgPSBob3Jpem9udGFsQmFyLnNjcm9sbExlZnQgKyBmaXhlZERlbHRhWDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2ZXJ0aWNhbEJhcikge1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsQmFyLnNjcm9sbFRvcCA9IHZlcnRpY2FsQmFyLnNjcm9sbFRvcCArIGZpeGVkRGVsdGFZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFjayAmJiBvcHRpb25zLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFBvaW50UG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHsgY29udGV4dCB9ID0gdGhpcy5haVRhYmxlO1xuICAgICAgICBjb250ZXh0IS5zZXRQb2ludFBvc2l0aW9uKERFRkFVTFRfUE9JTlRfUE9TSVRJT04pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmluZFNjcm9sbEJhclNjcm9sbCgpIHtcbiAgICAgICAgZnJvbUV2ZW50PFdoZWVsRXZlbnQ+KHRoaXMuaG9yaXpvbnRhbEJhclJlZigpIS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJywgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvcml6b250YWxTY3JvbGwoZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBmcm9tRXZlbnQ8V2hlZWxFdmVudD4odGhpcy52ZXJ0aWNhbEJhclJlZigpIS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJywgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnRpY2FsU2Nyb2xsKGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kR2xvYmFsTW91c2Vkb3duKCkge1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZWRvd24nLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmNvbnRhaW5lckVsZW1lbnQoKS5jb250YWlucyhlLnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFlLnRhcmdldC5jbG9zZXN0KEFJX1RBQkxFX1BSRVZFTlRfQ0xFQVJfU0VMRUNUSU9OX0NMQVNTKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHJhZ1NlbGVjdGlvblN0YXRlKGZhbHNlLCBudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5jbGVhclNlbGVjdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEcmFnU2VsZWN0aW9uU3RhdGUoaXNEcmFnU2VsZWN0aW5nOiBib29sZWFuLCBkcmFnU2VsZWN0aW9uU3RhcnQ6IEFJUmVjb3JkRmllbGRJZFBhdGggfCBudWxsKSB7XG4gICAgICAgIHRoaXMuaXNEcmFnU2VsZWN0aW5nID0gaXNEcmFnU2VsZWN0aW5nO1xuICAgICAgICB0aGlzLmRyYWdTZWxlY3Rpb25TdGFydCA9IGRyYWdTZWxlY3Rpb25TdGFydDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0U2Nyb2xsaW5nID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmFpVGFibGUuY29udGV4dCEuc2V0U2Nyb2xsU3RhdGUoe1xuICAgICAgICAgICAgaXNTY3JvbGxpbmc6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGhvcml6b250YWxTY3JvbGwgPSAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsTGVmdCB9ID0gZS50YXJnZXQ7XG4gICAgICAgIHRoaXMuYWlUYWJsZS5jb250ZXh0IS5zZXRTY3JvbGxTdGF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxMZWZ0LFxuICAgICAgICAgICAgaXNTY3JvbGxpbmc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzZXRTY3JvbGxpbmcoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB2ZXJ0aWNhbFNjcm9sbChlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AgfSA9IGUudGFyZ2V0O1xuICAgICAgICB0aGlzLmFpVGFibGUuY29udGV4dCEuc2V0U2Nyb2xsU3RhdGUoe1xuICAgICAgICAgICAgc2Nyb2xsVG9wLFxuICAgICAgICAgICAgaXNTY3JvbGxpbmc6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVzZXRTY3JvbGxpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvbnRhaW5lclJlY3QoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyUmVjdC5zZXQoe1xuICAgICAgICAgICAgd2lkdGg6IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmNvbnRhaW5lckVsZW1lbnQoKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb250YWluZXJSZXNpemVMaXN0ZW5lcigpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuY29udGFpbmVyRWxlbWVudCgpLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IHRoaXMuY29vcmRpbmF0ZSgpLnRvdGFsV2lkdGggKyBBSV9UQUJMRV9GSUVMRF9BRERfQlVUVE9OX1dJRFRIO1xuICAgICAgICAgICAgdGhpcy5zZXRDb250YWluZXJSZWN0KCk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyV2lkdGggPj0gdG90YWxXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWlUYWJsZS5jb250ZXh0IS5zZXRTY3JvbGxTdGF0ZSh7IHNjcm9sbExlZnQ6IDAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGFpbmVyRWxlbWVudCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRDbGlwYm9hcmRTaG9ydGN1dHMoKSB7XG4gICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgKGV2ZW50LmtleSA9PT0gJ2MnIHx8IGV2ZW50LmtleSA9PT0gJ3YnKSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWlSZWFkb25seSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNTZWxlY3RlZENlbGxzID0gdGhpcy5haVRhYmxlLnNlbGVjdGlvbigpLnNlbGVjdGVkQ2VsbHMuc2l6ZSA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNTZWxlY3RlZENlbGxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFZGl0aW5nQ2VsbCA9ICEhdGhpcy5haVRhYmxlR3JpZEV2ZW50U2VydmljZS5nZXRDdXJyZW50RWRpdENlbGwoKTtcblxuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdjJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlwYm9hcmREYXRhID0gYnVpbGRDbGlwYm9hcmREYXRhKHRoaXMuYWlUYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGlwYm9hcmREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVRvQ2xpcGJvYXJkKGNsaXBib2FyZERhdGEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcGllZENlbGxzQ291bnQgPSB0aGlzLmFpVGFibGUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRDZWxscy5zaXplO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRJMThuVGV4dEJ5S2V5KHRoaXMuYWlUYWJsZSwgQUlUYWJsZUdyaWRJMThuS2V5LmNvcGllZENlbGxzKS5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2NvdW50fScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZENlbGxzQ291bnQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLnN1Y2Nlc3MobWVzc2FnZSwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAndicgJiYgIWhhc0VkaXRpbmdDZWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uczogQUlUYWJsZUFjdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVGaWVsZFZhbHVlOiAoZGF0YTogVXBkYXRlRmllbGRWYWx1ZU9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFpVXBkYXRlRmllbGRWYWx1ZS5lbWl0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpZWxkOiAoZmllbGQ6IEFJVGFibGVGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWlTZXRGaWVsZC5lbWl0KGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRGaWVsZDogKGRhdGE6IEFkZEZpZWxkT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWlBZGRGaWVsZC5lbWl0KGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJlY29yZDogKGRhdGE6IEFkZFJlY29yZE9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFJlY29yZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlVG9BSVRhYmxlKHRoaXMuYWlUYWJsZSwgYWN0aW9ucykudGhlbigoaXNQYXN0ZVN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNQYXN0ZVN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuZXJyb3IoZ2V0STE4blRleHRCeUtleSh0aGlzLmFpVGFibGUsIEFJVGFibGVHcmlkSTE4bktleS5pbnZhbGlkUGFzdGVDb250ZW50KSwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRmllbGREcmFnU3RhcnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5haVJlYWRvbmx5KCkgJiYgdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRGaWVsZHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmRyYWcoe1xuICAgICAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLmZpZWxkLFxuICAgICAgICAgICAgICAgIHNvdXJjZUlkczogdGhpcy5haVRhYmxlR3JpZFNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0ZWRGaWVsZHMsXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiB0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZTogdGhpcy5jb29yZGluYXRlKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVGaWVsZFdpZHRoRHJhZ1N0YXJ0KGZpZWxkSWQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMuYWlSZWFkb25seSgpICYmIGZpZWxkSWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWlUYWJsZUdyaWRTZWxlY3Rpb25TZXJ2aWNlLmRyYWcoe1xuICAgICAgICAgICAgICAgIHR5cGU6IERyYWdUeXBlLmNvbHVtbldpZHRoLFxuICAgICAgICAgICAgICAgIHNvdXJjZUlkczogbmV3IFNldChbZmllbGRJZF0pLFxuICAgICAgICAgICAgICAgIHNjcm9sbDogdGhpcy5nZXRTY3JvbGxQb3NpdGlvbigpLFxuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRoaXMuY29vcmRpbmF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUm93RHJhZ1N0YXJ0KHJlY29yZElkczogc3RyaW5nW10pIHtcbiAgICAgICAgaWYgKCF0aGlzLmFpUmVhZG9ubHkoKSAmJiAhdGhpcy5haVJvd0RyYWdEaXNhYmxlZCgpICYmIHJlY29yZElkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5kcmFnKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBEcmFnVHlwZS5yZWNvcmQsXG4gICAgICAgICAgICAgICAgc291cmNlSWRzOiBuZXcgU2V0KHJlY29yZElkcyksXG4gICAgICAgICAgICAgICAgc2Nyb2xsOiB0aGlzLmdldFNjcm9sbFBvc2l0aW9uKCksXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZTogdGhpcy5jb29yZGluYXRlKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY3JvbGxQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbEJhciA9IHRoaXMuaG9yaXpvbnRhbEJhclJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbEJhciA9IHRoaXMudmVydGljYWxCYXJSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHNjcm9sbExlZnQgPSBob3Jpem9udGFsQmFyPy5zY3JvbGxMZWZ0IHx8IDA7XG4gICAgICAgIGxldCBzY3JvbGxUb3AgPSB2ZXJ0aWNhbEJhcj8uc2Nyb2xsVG9wIHx8IDA7XG4gICAgICAgIHJldHVybiB7IHg6IHNjcm9sbExlZnQsIHk6IHNjcm9sbFRvcCB9O1xuICAgIH1cblxuICAgIGRyYWdFbmQoZGF0YTogRHJhZ0VuZERhdGEpIHtcbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUuZmllbGQ6XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuZmllbGRzSW5kZXggJiYgaXNOdW1iZXIoZGF0YS50YXJnZXRJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmZpZWxkc0luZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFpTW92ZUZpZWxkLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFtkYXRhLmZpZWxkc0luZGV4W2ldXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXRoOiBbZGF0YS50YXJnZXRJbmRleCArIGldXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRHJhZ1R5cGUuY29sdW1uV2lkdGg6XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuZmllbGRJZHMgJiYgaXNOdW1iZXIoZGF0YS53aWR0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRJZCA9IGRhdGEuZmllbGRJZHMudmFsdWVzKCkubmV4dCgpLnZhbHVlITtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5haVNldEZpZWxkV2lkdGguZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbZmllbGRJZF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogZGF0YS53aWR0aFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERyYWdUeXBlLnJlY29yZDpcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZWNvcmRJZHMgJiYgaXNOdW1iZXIoZGF0YS50YXJnZXRJbmRleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5haU1vdmVSZWNvcmRzLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWRzOiBBcnJheS5mcm9tKGRhdGEucmVjb3JkSWRzKS5tYXAoKGlkKSA9PiBbaWRdIGFzIElkUGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXRoOiBbZGF0YS50YXJnZXRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFpVGFibGVHcmlkU2VsZWN0aW9uU2VydmljZS5jbGVhckRyYWcoKTtcbiAgICB9XG59XG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJhaS10YWJsZS1ncmlkLXZpZXdcIj5cbiAgICBAaWYgKGhhc0NvbnRhaW5lclJlY3QoKSkge1xuICAgICAgICA8YWktdGFibGUtcmVuZGVyZXJcbiAgICAgICAgICAgIFtjb25maWddPVwicmVuZGVyZXJDb25maWcoKVwiXG4gICAgICAgICAgICAoa29Nb3VzZW1vdmUpPVwic3RhZ2VNb3VzZW1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29Nb3VzZWRvd24pPVwic3RhZ2VNb3VzZWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29Nb3VzZXVwKT1cInN0YWdlTW91c2V1cCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChrb0NvbnRleHRtZW51KT1cInN0YWdlQ29udGV4dG1lbnUoJGV2ZW50KVwiXG4gICAgICAgICAgICAoa29DbGljayk9XCJzdGFnZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgKGtvRGJsY2xpY2spPVwic3RhZ2VEYmxjbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChrb01vdXNlbGVhdmUpPVwic3RhZ2VNb3VzZWxlYXZlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2ICNob3Jpem9udGFsQmFyIGNsYXNzPVwiYWktdGFibGUtaG9yaXpvbnRhbC1zY3JvbGwtYmFyLXdyYXBwZXJcIiBbc3R5bGUud2lkdGgucHhdPVwiY29udGFpbmVyUmVjdCgpLndpZHRoXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXRhYmxlLXNjcm9sbC1iYXItaW5uZXJcIiBbc3R5bGUud2lkdGgucHhdPVwic2Nyb2xsYmFyV2lkdGgoKVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI3ZlcnRpY2FsQmFyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhaS10YWJsZS12ZXJ0aWNhbC1zY3JvbGwtYmFyLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29udGFpbmVyUmVjdCgpLmhlaWdodCAtIGZpZWxkSGVhZEhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJmaWVsZEhlYWRIZWlnaHRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS10YWJsZS1zY3JvbGwtYmFyLWlubmVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJzY3JvbGxUb3RhbEhlaWdodCgpXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9haS10YWJsZS1yZW5kZXJlcj5cbiAgICB9XG4gICAgPGFpLXRhYmxlLWRyYWcgKGRyYWdFbmQpPVwiZHJhZ0VuZCgkZXZlbnQpXCI+PC9haS10YWJsZS1kcmFnPlxuPC9kaXY+XG4iXX0=
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
107
107
|
standalone: true
|
108
108
|
}]
|
109
109
|
}] });
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZ3JpZC9zcmMvcGlwZXMvZ3JpZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBVXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFNNUMsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixTQUFTLENBQUMsR0FBVyxFQUFFLE9BQThCO1FBQ2pELE9BQU8sT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7K0dBSFEsZ0JBQWdCOzZHQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBSjVCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7QUFXRCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFNBQVMsQ0FBQyxHQUFhLEVBQUUsVUFBaUMsRUFBRTtRQUN4RCxPQUFPLENBQ0gsQ0FBQyxHQUFHLEVBQUUsTUFBTTtZQUNSLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFVLEVBQUUsRUFBRTtnQkFDbkIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1lBQ1AsRUFBRSxDQUNMLENBQUM7SUFDTixDQUFDOytHQVRRLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxlQUFlO29CQUNyQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBaUJELE1BQU0sT0FBTyxrQkFBa0I7SUFDM0IsU0FBUyxDQUFDLFFBQWdCLEVBQUUsU0FBMkI7UUFDbkQsT0FBTyxTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDOytHQUhRLGtCQUFrQjs2R0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUo5QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7QUFXRCxNQUFNLE9BQU8sUUFBUTtJQUNqQixTQUFTLENBQUMsTUFBZ0IsRUFBRSxVQUE2QjtRQUNyRCxPQUFPLENBQ0gsQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztZQUNQLEVBQUUsQ0FDTCxDQUFDO0lBQ04sQ0FBQzsrR0FUUSxRQUFROzZHQUFSLFFBQVE7OzRGQUFSLFFBQVE7a0JBSnBCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLE1BQU07b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQWlCRCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLFNBQVMsQ0FBQyxRQUE4QjtRQUNwQyxPQUFPLFFBQTBCLENBQUM7SUFDdEMsQ0FBQzsrR0FIUSxpQkFBaUI7NkdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQVdELE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsU0FBUyxDQUFDLFFBQThCO1FBQ3BDLE9BQU8sUUFBMEIsQ0FBQztJQUN0QyxDQUFDOytHQUhRLGlCQUFpQjs2R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxlQUFlO29CQUNyQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7O0FBV0QsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxTQUFTLENBQUMsV0FBK0IsRUFBRSxLQUE0QjtRQUNuRSxPQUFPLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQUhRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUp4QyxJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxtQkFBbUI7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFJVGFibGVSZWZlcmVuY2VzIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcbmltcG9ydCB7XG4gICAgQUlUYWJsZUZpZWxkLFxuICAgIEFJVGFibGVGaWVsZE9wdGlvbixcbiAgICBBSVRhYmxlRmllbGRTZXR0aW5ncyxcbiAgICBBSVRhYmxlU2VsZWN0T3B0aW9uLFxuICAgIE1lbWJlclNldHRpbmdzLFxuICAgIFNlbGVjdFNldHRpbmdzXG59IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBpc1NhbWVGaWVsZE9wdGlvbiB9IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHsgQUlUYWJsZVNlbGVjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbkBQaXBlKHtcbiAgICBuYW1lOiAnc2VsZWN0T3B0aW9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdE9wdGlvblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oX2lkOiBzdHJpbmcsIG9wdGlvbnM6IEFJVGFibGVTZWxlY3RPcHRpb25bXSkge1xuICAgICAgICByZXR1cm4gb3B0aW9ucz8ubGVuZ3RoICYmIG9wdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IF9pZCk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ3NlbGVjdE9wdGlvbnMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oaWRzOiBzdHJpbmdbXSwgb3B0aW9uczogQUlUYWJsZVNlbGVjdE9wdGlvbltdID0gW10pIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChpZHM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGlkcy5tYXAoKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5faWQgPT09IGlkKTtcbiAgICAgICAgICAgICAgICB9KSkgfHxcbiAgICAgICAgICAgIFtdXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lzU2VsZWN0UmVjb3JkJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElzU2VsZWN0UmVjb3JkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShyZWNvcmRJZDogc3RyaW5nLCBzZWxlY3Rpb246IEFJVGFibGVTZWxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5zZWxlY3RlZFJlY29yZHMuaGFzKHJlY29yZElkKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAndXNlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZXM6IHN0cmluZ1tdLCByZWZlcmVuY2VzOiBBSVRhYmxlUmVmZXJlbmNlcykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHZhbHVlcy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICB2YWx1ZXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzLm1lbWJlcnNbaXRlbV0gfHwge307XG4gICAgICAgICAgICAgICAgfSkpIHx8XG4gICAgICAgICAgICBbXVxuICAgICAgICApO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIG5hbWU6ICdzZWxlY3RTZXR0aW5nJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdFNldHRpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHNldHRpbmdzOiBBSVRhYmxlRmllbGRTZXR0aW5ncykge1xuICAgICAgICByZXR1cm4gc2V0dGluZ3MgYXMgU2VsZWN0U2V0dGluZ3M7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgbmFtZTogJ21lbWJlclNldHRpbmcnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVyU2V0dGluZ1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oc2V0dGluZ3M6IEFJVGFibGVGaWVsZFNldHRpbmdzKSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5ncyBhcyBNZW1iZXJTZXR0aW5ncztcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZmllbGRJc1NhbWVPcHRpb24nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUZpZWxkSXNTYW1lT3B0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShmaWVsZE9wdGlvbjogQUlUYWJsZUZpZWxkT3B0aW9uLCBmaWVsZDogUGFydGlhbDxBSVRhYmxlRmllbGQ+KSB7XG4gICAgICAgIHJldHVybiBpc1NhbWVGaWVsZE9wdGlvbihmaWVsZE9wdGlvbiwgZmllbGQpO1xuICAgIH1cbn1cbiJdfQ==
|
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/co
|
|
2
2
|
import { KoShape } from '../../../angular-konva/components/shape.component';
|
3
3
|
import { AddOutlinedPath, AI_TABLE_ACTION_COMMON_RADIUS, AI_TABLE_ACTION_COMMON_RIGHT_PADDING, AI_TABLE_ACTION_COMMON_SIZE, AI_TABLE_CELL, AI_TABLE_CELL_ATTACHMENT_ADD, AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_ITEM_MARGIN_RIGHT, AI_TABLE_FILE_ICON_SIZE, AI_TABLE_OFFSET, AI_TABLE_ROW_BLANK_HEIGHT, Colors } from '../../../constants';
|
4
4
|
import { generateTargetName, getFileThumbnailSvgString } from '../../../utils';
|
5
|
-
import { AITableFieldType } from '
|
5
|
+
import { AITableFieldType } from '@ai-table/utils';
|
6
6
|
import { AITableActionIcon } from '../action-icon.component';
|
7
7
|
import * as i0 from "@angular/core";
|
8
8
|
export class AITableCellAttachment {
|
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
104
104
|
changeDetection: ChangeDetectionStrategy.OnPush
|
105
105
|
}]
|
106
106
|
}] });
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2NlbGxzL2F0dGFjaG1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUUsT0FBTyxFQUNILGVBQWUsRUFDZiw2QkFBNkIsRUFDN0Isb0NBQW9DLEVBQ3BDLDJCQUEyQixFQUMzQixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQixnQ0FBZ0MsRUFDaEMsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsTUFBTSxFQUNULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQWM3RCxNQUFNLE9BQU8scUJBQXFCO0lBWmxDO1FBZUksV0FBTSxHQUFHLEtBQUssRUFBMEIsQ0FBQztRQUV6QyxnQkFBVyxHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFO1lBQ25ELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRyxDQUFDO1lBRXRFLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUNuQixNQUFNLEVBQUUsY0FBYyxFQUFF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LENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUMvQyxDQUFDO2dCQUNGLENBQUMsRUFBRSxPQUFPO2dCQUNWLENBQUMsRUFBRSxPQUFPO2dCQUNWLElBQUksRUFBRSxlQUFlO2dCQUNyQixJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3BCLFNBQVMsRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDekIsZUFBZSxFQUFFLDJCQUEyQjtnQkFDNUMsZ0JBQWdCLEVBQUUsMkJBQTJCO2dCQUM3QyxZQUFZLEVBQUUsNkJBQTZCO2dCQUMzQyxTQUFTLEVBQUUsSUFBSTthQUNsQixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7S0FDTjthQWpGVSxjQUFTLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxBQUE5QixDQUErQjsrR0FEdEMscUJBQXFCO21HQUFyQixxQkFBcUIsdU5BVnBCOzs7OztLQUtULDREQUVTLE9BQU8sK2hCQUFFLGlCQUFpQjs7NEZBRzNCLHFCQUFxQjtrQkFaakMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7O0tBS1Q7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQztvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLb1NoYXBlIH0gZnJvbSAnLi4vLi4vLi4vYW5ndWxhci1rb252YS9jb21wb25lbnRzL3NoYXBlLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEFkZE91dGxpbmVkUGF0aCxcbiAgICBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1JBRElVUyxcbiAgICBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1JJR0hUX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfQUNUSU9OX0NPTU1PTl9TSVpFLFxuICAgIEFJX1RBQkxFX0NFTEwsXG4gICAgQUlfVEFCTEVfQ0VMTF9BVFRBQ0hNRU5UX0FERCxcbiAgICBBSV9UQUJMRV9DRUxMX1BBRERJTkcsXG4gICAgQUlfVEFCTEVfRklFTERfSVRFTV9NQVJHSU5fUklHSFQsXG4gICAgQUlfVEFCTEVfRklMRV9JQ09OX1NJWkUsXG4gICAgQUlfVEFCTEVfT0ZGU0VULFxuICAgIEFJX1RBQkxFX1JPV19CTEFOS19IRUlHSFQsXG4gICAgQ29sb3JzXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVRhcmdldE5hbWUsIGdldEZpbGVUaHVtYm5haWxTdmdTdHJpbmcgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBBSVRhYmxlQWN0aW9uSWNvbkNvbmZpZywgQUlUYWJsZUF0dGFjaG1lbnRDb25maWcsIEFJVGFibGVIb3ZlckNlbGxDb25maWcgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBIb3ZlckNlbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFJVGFibGVBY3Rpb25JY29uIH0gZnJvbSAnLi4vYWN0aW9uLWljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhaS10YWJsZS1hdHRhY2htZW50cycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGZvciAoYXR0YWNobWVudCBvZiBhdHRhY2htZW50cygpOyB0cmFjayBhdHRhY2htZW50LmF0dGFjaG1lbnRJbmZvLl9pZCkge1xuICAgICAgICAgICAgPGtvLWltYWdlIFtjb25maWddPVwiYXR0YWNobWVudFwiPjwva28taW1hZ2U+XG4gICAgICAgIH1cbiAgICAgICAgPGFpLXRhYmxlLWFjdGlvbi1pY29uIFtjb25maWddPVwiaWNvbkNvbmZpZygpXCI+PC9haS10YWJsZS1hY3Rpb24taWNvbj5cbiAgICBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0tvU2hhcGUsIEFJVGFibGVBY3Rpb25JY29uXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBSVRhYmxlQ2VsbEF0dGFjaG1lbnQgaW1wbGVtZW50cyBIb3ZlckNlbGxDb21wb25lbnQge1xuICAgIHN0YXRpYyBmaWVsZFR5cGUgPSBBSVRhYmxlRmllbGRUeXBlLmF0dGFjaG1lbnQ7XG5cbiAgICBjb25maWcgPSBpbnB1dDxBSVRhYmxlSG92ZXJDZWxsQ29uZmlnPigpO1xuXG4gICAgYXR0YWNobWVudHMgPSBjb21wdXRlZDxBSVRhYmxlQXR0YWNobWVudENvbmZpZ1tdPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgcmVuZGVyLCBhaVRhYmxlLCBmaWVsZCwgcmVjb3JkSWQsIHJlYWRvbmx5IH0gPSB0aGlzLmNvbmZpZygpITtcblxuICAgICAgICBpZiAocmVuZGVyKSB7XG4gICAgICAgICAgICBjb25zdCB7fSA9IGFpVGFibGU7XG4gICAgICAgICAgICBjb25zdCB7IHRyYW5zZm9ybVZhbHVlLCByZWZlcmVuY2VzLCBjb2x1bW5XaWR0aCB9ID0gcmVuZGVyO1xuICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1WYWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZT8ubWFwKChhdHRhY2htZW50SWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSBBSV9UQUJMRV9GSUxFX0lDT05fU0laRSArIEFJX1RBQkxFX0ZJRUxEX0lURU1fTUFSR0lOX1JJR0hUO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50WCA9IEFJX1RBQkxFX0NFTExfUEFERElORyArIGluZGV4ICogaXRlbVdpZHRoICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFkgPSAoQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCAtIEFJX1RBQkxFX0ZJTEVfSUNPTl9TSVpFKSAvIDIgKyBBSV9UQUJMRV9PRkZTRVQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5XaWR0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlvZPotoXlh7rliJflrr3ml7bvvIzkuI3kvJrmuLLmn5PlkI7nu63lhoXlrrlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50WCA+PSBjb2x1bW5XaWR0aCAtIEFJX1RBQkxFX0FDVElPTl9DT01NT05fU0laRSAtIDIgKiBBSV9UQUJMRV9DRUxMX1BBRERJTkcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRJbmZvID0gcmVmZXJlbmNlcyEuYXR0YWNobWVudHNbYXR0YWNobWVudElkXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdmdTdHJpbmcgPSBnZXRGaWxlVGh1bWJuYWlsU3ZnU3RyaW5nKGF0dGFjaG1lbnRJbmZvLmFkZGl0aW9uLmV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gYGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCR7ZW5jb2RlVVJJQ29tcG9uZW50KHN2Z1N0cmluZyl9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudEluZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZ2VuZXJhdGVUYXJnZXROYW1lKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfQ0VMTCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRJZDogZmllbGQuX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VTdHlsZTogcmVhZG9ubHkgPyAnZGVmYXVsdCcgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogYXR0YWNobWVudEluZm8uX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogY3VycmVudFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogY3VycmVudFksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IEFJX1RBQkxFX0ZJTEVfSUNPTl9TSVpFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogQUlfVEFCTEVfRklMRV9JQ09OX1NJWkUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0pIHx8IFtdO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5maWx0ZXIoKGl0ZW06IEFJVGFibGVBdHRhY2htZW50Q29uZmlnKSA9PiAhIWl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH0pO1xuXG4gICAgaWNvbkNvbmZpZyA9IGNvbXB1dGVkPEFJVGFibGVBY3Rpb25JY29uQ29uZmlnPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY29vcmRpbmF0ZSwgcmVuZGVyLCBmaWVsZCwgcmVjb3JkSWQsIHJlYWRvbmx5IH0gPSB0aGlzLmNvbmZpZygpITtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IHJlbmRlci5jb2x1bW5XaWR0aCAtIEFJX1RBQkxFX0FDVElPTl9DT01NT05fU0laRSAtIEFJX1RBQkxFX0FDVElPTl9DT01NT05fUklHSFRfUEFERElORztcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IChjb29yZGluYXRlLnJvd0luaXRTaXplIC0gQUlfVEFCTEVfQUNUSU9OX0NPTU1PTl9TSVpFKSAvIDI7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvb3JkaW5hdGUsXG4gICAgICAgICAgICByZWFkb25seSxcbiAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TmFtZTogQUlfVEFCTEVfQ0VMTCxcbiAgICAgICAgICAgICAgICBmaWVsZElkOiBmaWVsZC5faWQsXG4gICAgICAgICAgICAgICAgcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgc291cmNlOiBBSV9UQUJMRV9DRUxMX0FUVEFDSE1FTlRfQURELFxuICAgICAgICAgICAgICAgIG1vdXNlU3R5bGU6IHJlYWRvbmx5ID8gJ2RlZmF1bHQnIDogJ3BvaW50ZXInXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHg6IG9mZnNldFgsXG4gICAgICAgICAgICB5OiBvZmZzZXRZLFxuICAgICAgICAgICAgZGF0YTogQWRkT3V0bGluZWRQYXRoLFxuICAgICAgICAgICAgZmlsbDogQ29sb3JzLmdyYXk2MDAsXG4gICAgICAgICAgICBob3ZlckZpbGw6IENvbG9ycy5wcmltYXJ5LFxuICAgICAgICAgICAgYmFja2dyb3VuZFdpZHRoOiBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1NJWkUsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kSGVpZ2h0OiBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1NJWkUsXG4gICAgICAgICAgICBjb3JuZXJSYWRpdXM6IEFJX1RBQkxFX0FDVElPTl9DT01NT05fUkFESVVTLFxuICAgICAgICAgICAgbGlzdGVuaW5nOiB0cnVlXG4gICAgICAgIH07XG4gICAgfSk7XG59XG4iXX0=
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2NlbGxzL2F0dGFjaG1lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUUsT0FBTyxFQUNILGVBQWUsRUFDZiw2QkFBNkIsRUFDN0Isb0NBQW9DLEVBQ3BDLDJCQUEyQixFQUMzQixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQixnQ0FBZ0MsRUFDaEMsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsTUFBTSxFQUNULE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBYzdELE1BQU0sT0FBTyxxQkFBcUI7SUFabEM7UUFlSSxXQUFNLEdBQUcsS0FBSyxFQUEwQixDQUFDO1FBRXpDLGdCQUFXLEdBQUcsUUFBUSxDQUE0QixHQUFHLEVBQUU7WUFDbkQsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUM7WUFFdEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxjQUFjLEVB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QUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQy9DLENBQUM7Z0JBQ0YsQ0FBQyxFQUFFLE9BQU87Z0JBQ1YsQ0FBQyxFQUFFLE9BQU87Z0JBQ1YsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDcEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPO2dCQUN6QixlQUFlLEVBQUUsMkJBQTJCO2dCQUM1QyxnQkFBZ0IsRUFBRSwyQkFBMkI7Z0JBQzdDLFlBQVksRUFBRSw2QkFBNkI7Z0JBQzNDLFNBQVMsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztLQUNOO2FBakZVLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLEFBQTlCLENBQStCOytHQUR0QyxxQkFBcUI7bUdBQXJCLHFCQUFxQix1TkFWcEI7Ozs7O0tBS1QsNERBRVMsT0FBTywraEJBQUUsaUJBQWlCOzs0RkFHM0IscUJBQXFCO2tCQVpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRTs7Ozs7S0FLVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtvU2hhcGUgfSBmcm9tICcuLi8uLi8uLi9hbmd1bGFyLWtvbnZhL2NvbXBvbmVudHMvc2hhcGUuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQWRkT3V0bGluZWRQYXRoLFxuICAgIEFJX1RBQkxFX0FDVElPTl9DT01NT05fUkFESVVTLFxuICAgIEFJX1RBQkxFX0FDVElPTl9DT01NT05fUklHSFRfUEFERElORyxcbiAgICBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1NJWkUsXG4gICAgQUlfVEFCTEVfQ0VMTCxcbiAgICBBSV9UQUJMRV9DRUxMX0FUVEFDSE1FTlRfQURELFxuICAgIEFJX1RBQkxFX0NFTExfUEFERElORyxcbiAgICBBSV9UQUJMRV9GSUVMRF9JVEVNX01BUkdJTl9SSUdIVCxcbiAgICBBSV9UQUJMRV9GSUxFX0lDT05fU0laRSxcbiAgICBBSV9UQUJMRV9PRkZTRVQsXG4gICAgQUlfVEFCTEVfUk9XX0JMQU5LX0hFSUdIVCxcbiAgICBDb2xvcnNcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdlbmVyYXRlVGFyZ2V0TmFtZSwgZ2V0RmlsZVRodW1ibmFpbFN2Z1N0cmluZyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEFJVGFibGVBY3Rpb25JY29uQ29uZmlnLCBBSVRhYmxlQXR0YWNobWVudENvbmZpZywgQUlUYWJsZUhvdmVyQ2VsbENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEFJVGFibGVGaWVsZFR5cGUgfSBmcm9tICdAYWktdGFibGUvdXRpbHMnO1xuaW1wb3J0IHsgSG92ZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBSVRhYmxlQWN0aW9uSWNvbiB9IGZyb20gJy4uL2FjdGlvbi1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWktdGFibGUtYXR0YWNobWVudHMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBmb3IgKGF0dGFjaG1lbnQgb2YgYXR0YWNobWVudHMoKTsgdHJhY2sgYXR0YWNobWVudC5hdHRhY2htZW50SW5mby5faWQpIHtcbiAgICAgICAgICAgIDxrby1pbWFnZSBbY29uZmlnXT1cImF0dGFjaG1lbnRcIj48L2tvLWltYWdlPlxuICAgICAgICB9XG4gICAgICAgIDxhaS10YWJsZS1hY3Rpb24taWNvbiBbY29uZmlnXT1cImljb25Db25maWcoKVwiPjwvYWktdGFibGUtYWN0aW9uLWljb24+XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtLb1NoYXBlLCBBSVRhYmxlQWN0aW9uSWNvbl0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUNlbGxBdHRhY2htZW50IGltcGxlbWVudHMgSG92ZXJDZWxsQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgZmllbGRUeXBlID0gQUlUYWJsZUZpZWxkVHlwZS5hdHRhY2htZW50O1xuXG4gICAgY29uZmlnID0gaW5wdXQ8QUlUYWJsZUhvdmVyQ2VsbENvbmZpZz4oKTtcblxuICAgIGF0dGFjaG1lbnRzID0gY29tcHV0ZWQ8QUlUYWJsZUF0dGFjaG1lbnRDb25maWdbXT4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHJlbmRlciwgYWlUYWJsZSwgZmllbGQsIHJlY29yZElkLCByZWFkb25seSB9ID0gdGhpcy5jb25maWcoKSE7XG5cbiAgICAgICAgaWYgKHJlbmRlcikge1xuICAgICAgICAgICAgY29uc3Qge30gPSBhaVRhYmxlO1xuICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1WYWx1ZSwgcmVmZXJlbmNlcywgY29sdW1uV2lkdGggfSA9IHJlbmRlcjtcbiAgICAgICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtVmFsdWU/Lm1hcCgoYXR0YWNobWVudElkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbVdpZHRoID0gQUlfVEFCTEVfRklMRV9JQ09OX1NJWkUgKyBBSV9UQUJMRV9GSUVMRF9JVEVNX01BUkdJTl9SSUdIVDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBBSV9UQUJMRV9DRUxMX1BBRERJTkcgKyBpbmRleCAqIGl0ZW1XaWR0aCArIEFJX1RBQkxFX09GRlNFVDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRZID0gKEFJX1RBQkxFX1JPV19CTEFOS19IRUlHSFQgLSBBSV9UQUJMRV9GSUxFX0lDT05fU0laRSkgLyAyICsgQUlfVEFCTEVfT0ZGU0VUO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uV2lkdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5b2T6LaF5Ye65YiX5a695pe277yM5LiN5Lya5riy5p+T5ZCO57ut5YaF5a65XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFggPj0gY29sdW1uV2lkdGggLSBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1NJWkUgLSAyICogQUlfVEFCTEVfQ0VMTF9QQURESU5HKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50SW5mbyA9IHJlZmVyZW5jZXMhLmF0dGFjaG1lbnRzW2F0dGFjaG1lbnRJZF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50SW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3ZnU3RyaW5nID0gZ2V0RmlsZVRodW1ibmFpbFN2Z1N0cmluZyhhdHRhY2htZW50SW5mby5hZGRpdGlvbi5leHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChzdmdTdHJpbmcpfWA7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGdlbmVyYXRlVGFyZ2V0TmFtZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IEFJX1RBQkxFX0NFTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGZpZWxkLl9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlU3R5bGU6IHJlYWRvbmx5ID8gJ2RlZmF1bHQnIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IGF0dGFjaG1lbnRJbmZvLl9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IGN1cnJlbnRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6IGN1cnJlbnRZLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBBSV9UQUJMRV9GSUxFX0lDT05fU0laRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IEFJX1RBQkxFX0ZJTEVfSUNPTl9TSVpFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmluZzogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9KSB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuZmlsdGVyKChpdGVtOiBBSVRhYmxlQXR0YWNobWVudENvbmZpZykgPT4gISFpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9KTtcblxuICAgIGljb25Db25maWcgPSBjb21wdXRlZDxBSVRhYmxlQWN0aW9uSWNvbkNvbmZpZz4oKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNvb3JkaW5hdGUsIHJlbmRlciwgZmllbGQsIHJlY29yZElkLCByZWFkb25seSB9ID0gdGhpcy5jb25maWcoKSE7XG4gICAgICAgIGNvbnN0IG9mZnNldFggPSByZW5kZXIuY29sdW1uV2lkdGggLSBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1NJWkUgLSBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1JJR0hUX1BBRERJTkc7XG4gICAgICAgIGNvbnN0IG9mZnNldFkgPSAoY29vcmRpbmF0ZS5yb3dJbml0U2l6ZSAtIEFJX1RBQkxFX0FDVElPTl9DT01NT05fU0laRSkgLyAyO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb29yZGluYXRlLFxuICAgICAgICAgICAgcmVhZG9ubHksXG4gICAgICAgICAgICBuYW1lOiBnZW5lcmF0ZVRhcmdldE5hbWUoe1xuICAgICAgICAgICAgICAgIHRhcmdldE5hbWU6IEFJX1RBQkxFX0NFTEwsXG4gICAgICAgICAgICAgICAgZmllbGRJZDogZmllbGQuX2lkLFxuICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogQUlfVEFCTEVfQ0VMTF9BVFRBQ0hNRU5UX0FERCxcbiAgICAgICAgICAgICAgICBtb3VzZVN0eWxlOiByZWFkb25seSA/ICdkZWZhdWx0JyA6ICdwb2ludGVyJ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB4OiBvZmZzZXRYLFxuICAgICAgICAgICAgeTogb2Zmc2V0WSxcbiAgICAgICAgICAgIGRhdGE6IEFkZE91dGxpbmVkUGF0aCxcbiAgICAgICAgICAgIGZpbGw6IENvbG9ycy5ncmF5NjAwLFxuICAgICAgICAgICAgaG92ZXJGaWxsOiBDb2xvcnMucHJpbWFyeSxcbiAgICAgICAgICAgIGJhY2tncm91bmRXaWR0aDogQUlfVEFCTEVfQUNUSU9OX0NPTU1PTl9TSVpFLFxuICAgICAgICAgICAgYmFja2dyb3VuZEhlaWdodDogQUlfVEFCTEVfQUNUSU9OX0NPTU1PTl9TSVpFLFxuICAgICAgICAgICAgY29ybmVyUmFkaXVzOiBBSV9UQUJMRV9BQ1RJT05fQ09NTU9OX1JBRElVUyxcbiAgICAgICAgICAgIGxpc3RlbmluZzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH0pO1xufVxuIl19
|
@@ -3,4 +3,4 @@ export const componentMap = {};
|
|
3
3
|
Object.values(cellComponents).forEach((cellComponent) => {
|
4
4
|
componentMap[cellComponent.fieldType] = cellComponent;
|
5
5
|
});
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2NlbGxzL2NlbGxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sS0FBSyxjQUFjLE1BQU0sR0FBRyxDQUFDO0FBRXBDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBdUUsRUFBRSxDQUFDO0FBRW5HLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7SUFDcEQsWUFBWSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxhQUFhLENBQUM7QUFDMUQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBBSVRhYmxlRmllbGRUeXBlIH0gZnJvbSAnQGFpLXRhYmxlL3V0aWxzJztcbmltcG9ydCB7IEhvdmVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBjZWxsQ29tcG9uZW50cyBmcm9tICcuJztcblxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudE1hcDogUGFydGlhbDxSZWNvcmQ8QUlUYWJsZUZpZWxkVHlwZSwgQ29uc3RydWN0b3I8SG92ZXJDZWxsQ29tcG9uZW50Pj4+ID0ge307XG5cbk9iamVjdC52YWx1ZXMoY2VsbENvbXBvbmVudHMpLmZvckVhY2goKGNlbGxDb21wb25lbnQpID0+IHtcbiAgICBjb21wb25lbnRNYXBbY2VsbENvbXBvbmVudC5maWVsZFR5cGVdID0gY2VsbENvbXBvbmVudDtcbn0pO1xuIl19
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
|
2
2
|
import { AI_TABLE_CELL_PADDING, AI_TABLE_FIELD_HEAD_ICON_GAP_SIZE, AI_TABLE_FIELD_HEAD_MORE, Colors } from '../../../constants';
|
3
|
-
import { getMousePosition, handleMouseStyle } from '../../../utils';
|
3
|
+
import { AITable, getMousePosition, handleMouseStyle } from '../../../utils';
|
4
4
|
import { AITableText } from '../text.component';
|
5
|
-
import {
|
5
|
+
import { AITableFieldType } from '@ai-table/utils';
|
6
6
|
import { drawer } from '../../drawers/drawer';
|
7
7
|
import * as i0 from "@angular/core";
|
8
8
|
export class AITableCellLink {
|
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
86
86
|
changeDetection: ChangeDetectionStrategy.OnPush
|
87
87
|
}]
|
88
88
|
}] });
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9ncmlkL3NyYy9yZW5kZXJlci9jb21wb25lbnRzL2NlbGxzL2xpbmsuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUNBQWlDLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBYzlDLE1BQU0sT0FBTyxlQUFlO0lBWDVCO1FBY0ksV0FBTSxHQUFHLEtBQUssRUFBc0MsQ0FBQztRQUVyRCxlQUFVLEdBQUcscUJBQXFCLEdBQUcsaUNBQWlDLENBQUM7UUFFdkUsV0FBTSxHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTFFLG1CQUFjLEdBQUcsUUFBUSxDQUFnQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFOUYsYUFBUSxHQUFHLFFBQVEsQ0FBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWxFLGVBQVUsR0FBRyxRQUFRLENB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RyxDQUFDOytHQWxFUSxlQUFlO21HQUFmLGVBQWUsZ05BVGQ7Ozs7S0FJVCw0REFFUyxXQUFXOzs0RkFHWixlQUFlO2tCQVgzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUU7Ozs7S0FJVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO29CQUN0QixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFJX1RBQkxFX0NFTExfUEFERElORywgQUlfVEFCTEVfRklFTERfSEVBRF9JQ09OX0dBUF9TSVpFLCBBSV9UQUJMRV9GSUVMRF9IRUFEX01PUkUsIENvbG9ycyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBSVRhYmxlLCBnZXRNb3VzZVBvc2l0aW9uLCBoYW5kbGVNb3VzZVN0eWxlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQUlUYWJsZVRleHQgfSBmcm9tICcuLi90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSVRhYmxlSG92ZXJDZWxsQ29uZmlnLCBBSVRhYmxlUmVuZGVyIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgS29FdmVudE9iamVjdCB9IGZyb20gJy4uLy4uLy4uL2FuZ3VsYXIta29udmEnO1xuaW1wb3J0IHsgQUlUYWJsZUZpZWxkVHlwZSB9IGZyb20gJ0BhaS10YWJsZS91dGlscyc7XG5pbXBvcnQgeyBUZXh0Q29uZmlnIH0gZnJvbSAna29udmEvbGliL3NoYXBlcy9UZXh0JztcbmltcG9ydCB7IGRyYXdlciB9IGZyb20gJy4uLy4uL2RyYXdlcnMvZHJhd2VyJztcbmltcG9ydCB7IEhvdmVyQ2VsbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FpLXRhYmxlLWxpbmsnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoc2hvd0xpbmsoKSkge1xuICAgICAgICAgICAgPGFpLXRhYmxlLXRleHQgW2NvbmZpZ109XCJ0ZXh0Q29uZmlnKCkhXCIgKGtvQ2xpY2spPVwibGlua0NsaWNrKCRldmVudClcIiAoa29Nb3VzZU1vdmUpPVwibGlua01vdXNlTW92ZSgkZXZlbnQpXCI+PC9haS10YWJsZS10ZXh0PlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtBSVRhYmxlVGV4dF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQUlUYWJsZUNlbGxMaW5rIGltcGxlbWVudHMgSG92ZXJDZWxsQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgZmllbGRUeXBlID0gQUlUYWJsZUZpZWxkVHlwZS5saW5rO1xuXG4gICAgY29uZmlnID0gaW5wdXQ8QUlUYWJsZUhvdmVyQ2VsbENvbmZpZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIHRleHRPZmZzZXQgPSBBSV9UQUJMRV9DRUxMX1BBRERJTkcgKyBBSV9UQUJMRV9GSUVMRF9IRUFEX0lDT05fR0FQX1NJWkU7XG5cbiAgICByZW5kZXIgPSBjb21wdXRlZDxBSVRhYmxlUmVuZGVyIHwgdW5kZWZpbmVkPigoKSA9PiB0aGlzLmNvbmZpZygpPy5yZW5kZXIpO1xuXG4gICAgdHJhbnNmb3JtVmFsdWUgPSBjb21wdXRlZDx7IHRleHQ6IHN0cmluZzsgdXJsOiBzdHJpbmcgfT4oKCkgPT4gdGhpcy5yZW5kZXIoKT8udHJhbnNmb3JtVmFsdWUpO1xuXG4gICAgc2hvd0xpbmsgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiAhIXRoaXMudHJhbnNmb3JtVmFsdWUoKT8udGV4dCk7XG5cbiAgICB0ZXh0Q29uZmlnID0gY29tcHV0ZWQ8VGV4dENvbmZpZyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICBjb25zdCByZW5kZXIgPSB0aGlzLmNvbmZpZygpPy5yZW5kZXI7XG4gICAgICAgIGlmIChyZW5kZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgeCwgeSwgdHJhbnNmb3JtVmFsdWUsIGNvbHVtbldpZHRoLCByb3dIZWlnaHQsIHN0eWxlLCB6SW5kZXggfSA9IHJlbmRlcjtcbiAgICAgICAgICAgIGxldCB0ZXh0UmVuZGVyOiBzdHJpbmcgfCBudWxsID0gdHJhbnNmb3JtVmFsdWUudGV4dDtcbiAgICAgICAgICAgIGlmICh0ZXh0UmVuZGVyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRleHRSZW5kZXIgPSB0ZXh0UmVuZGVyLnJlcGxhY2UoL1xccnxcXG4vZywgJyAnKTtcbiAgICAgICAgICAgIGNvbnN0IGZvbnRXZWlnaHQgPSBzdHlsZT8uZm9udFdlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHRleHRNYXhXaWR0aCA9IGNvbHVtbldpZHRoIC0gMiAqIEFJX1RBQkxFX0NFTExfUEFERElORztcbiAgICAgICAgICAgIGNvbnN0IHsgdGV4dCwgdGV4dFdpZHRoIH0gPSBkcmF3ZXIudGV4dEVsbGlwc2lzKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0UmVuZGVyLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiB0ZXh0TWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgZm9udFdlaWdodFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICB5LFxuICAgICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgICAgd3JhcDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0ZXh0V2lkdGgsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBDb2xvcnMucHJpbWFyeSxcbiAgICAgICAgICAgICAgICBmaWxsOiBDb2xvcnMucHJpbWFyeSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHJvd0hlaWdodCArIDIsXG4gICAgICAgICAgICAgICAgbGluZUhlaWdodDogMS44NCxcbiAgICAgICAgICAgICAgICBsaXN0ZW5pbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgZWxsaXBzaXM6IHRydWUsXG4gICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnLFxuICAgICAgICAgICAgICAgIHpJbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSk7XG5cbiAgICBsaW5rQ2xpY2soZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBlLmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMudHJhbnNmb3JtVmFsdWUoKS51cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICAgIH1cblxuICAgIGxpbmtNb3VzZU1vdmUoZTogS29FdmVudE9iamVjdDxNb3VzZUV2ZW50Pikge1xuICAgICAgICBlLmV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHsgYWlUYWJsZSwgY29vcmRpbmF0ZSB9ID0gdGhpcy5jb25maWcoKSE7XG4gICAgICAgIGNvbnN0IHRhcmdldE5hbWUgPSBlLmV2ZW50LnRhcmdldC5uYW1lKCk7XG4gICAgICAgIGNvbnN0IGdyaWRTdGFnZSA9IGUuZXZlbnQuY3VycmVudFRhcmdldC5nZXRTdGFnZSgpO1xuICAgICAgICBjb25zdCBwb3MgPSBncmlkU3RhZ2U/LmdldFBvaW50ZXJQb3NpdGlvbigpO1xuICAgICAgICBpZiAocG9zID09IG51bGwpIHJldHVybjtcbiAgICAgICAgY29uc3QgeyBjb250ZXh0IH0gPSBhaVRhYmxlO1xuICAgICAgICBjb25zdCB7IHgsIHkgfSA9IHBvcztcbiAgICAgICAgY29uc3QgY3VyTW91c2VQb3NpdGlvbiA9IGdldE1vdXNlUG9zaXRpb24oYWlUYWJsZSwgeCwgeSwgY29vcmRpbmF0ZSwgQUlUYWJsZS5nZXRWaXNpYmxlRmllbGRzKGFpVGFibGUpLCBjb250ZXh0ISwgdGFyZ2V0TmFtZSk7XG4gICAgICAgIGhhbmRsZU1vdXNlU3R5bGUoQUlfVEFCTEVfRklFTERfSEVBRF9NT1JFLCBjdXJNb3VzZVBvc2l0aW9uLmFyZWFUeXBlLCBjb29yZGluYXRlLmNvbnRhaW5lcik7XG4gICAgfVxufVxuIl19
|