@pepperi-addons/ngx-composite-lib 0.4.2-beta.5 → 0.4.2-beta.51
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/core/common/services/dimx.service.d.ts +4 -0
- package/esm2020/core/common/services/dimx.service.mjs +1 -1
- package/esm2020/flow-picker-button/flow-picker-button.component.mjs +88 -0
- package/esm2020/flow-picker-button/flow-picker-button.module.mjs +36 -0
- package/esm2020/flow-picker-button/flow-picker-button.service.mjs +21 -0
- package/esm2020/flow-picker-button/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +5 -0
- package/esm2020/flow-picker-button/public-api.mjs +6 -0
- package/esm2020/generic-form/generic-form.component.mjs +3 -3
- package/esm2020/generic-list/generic-list.component.mjs +53 -7
- package/esm2020/generic-list/generic-list.service.mjs +6 -2
- package/esm2020/group-buttons-settings/group-buttons-settings.component.mjs +12 -5
- package/esm2020/group-buttons-settings/group-buttons-settings.model.mjs +1 -1
- package/esm2020/icon-picker/icon-picker.component.mjs +76 -0
- package/esm2020/icon-picker/icon-picker.module.mjs +44 -0
- package/esm2020/icon-picker/icon-picker.service.mjs +17 -0
- package/esm2020/icon-picker/pepperi-addons-ngx-composite-lib-icon-picker.mjs +5 -0
- package/esm2020/icon-picker/public-api.mjs +6 -0
- package/esm2020/manage-parameters/manage-parameter/manage-parameter.component.mjs +82 -0
- package/esm2020/manage-parameters/manage-parameters.component.mjs +153 -0
- package/esm2020/manage-parameters/manage-parameters.model.mjs +24 -0
- package/esm2020/manage-parameters/manage-parameters.module.mjs +45 -0
- package/esm2020/manage-parameters/manage-parameters.service.mjs +142 -0
- package/esm2020/manage-parameters/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +5 -0
- package/esm2020/manage-parameters/public-api.mjs +8 -0
- package/esm2020/rich-text/pepperi-addons-ngx-composite-lib-rich-text.mjs +5 -0
- package/esm2020/rich-text/public-api.mjs +6 -0
- package/esm2020/rich-text/rich-text.component.mjs +154 -0
- package/esm2020/rich-text/rich-text.module.mjs +52 -0
- package/esm2020/rich-text/rich-text.service.mjs +21 -0
- package/esm2020/show-if-badge/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +5 -0
- package/esm2020/show-if-badge/public-api.mjs +6 -0
- package/esm2020/show-if-badge/show-if-badge.component.mjs +44 -0
- package/esm2020/show-if-badge/show-if-badge.module.mjs +50 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +155 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +59 -7
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +11 -4
- package/fesm2015/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +143 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +441 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs +234 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +100 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib-show-if-badge.mjs.map +1 -0
- package/fesm2015/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs +149 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-flow-picker-button.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-form.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-form.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +57 -7
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs +11 -4
- package/fesm2020/pepperi-addons-ngx-composite-lib-group-buttons-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs +142 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +438 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-rich-text.mjs +230 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-rich-text.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-show-if-badge.mjs +100 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib-show-if-badge.mjs.map +1 -0
- package/fesm2020/pepperi-addons-ngx-composite-lib.mjs.map +1 -1
- package/flow-picker-button/flow-picker-button.component.d.ts +23 -0
- package/flow-picker-button/flow-picker-button.module.d.ts +11 -0
- package/flow-picker-button/flow-picker-button.service.d.ts +9 -0
- package/flow-picker-button/index.d.ts +5 -0
- package/flow-picker-button/public-api.d.ts +2 -0
- package/generic-list/generic-list.component.d.ts +15 -5
- package/generic-list/generic-list.service.d.ts +2 -1
- package/group-buttons-settings/group-buttons-settings.component.d.ts +1 -1
- package/group-buttons-settings/group-buttons-settings.model.d.ts +1 -1
- package/icon-picker/icon-picker.component.d.ts +22 -0
- package/icon-picker/icon-picker.module.d.ts +13 -0
- package/icon-picker/icon-picker.service.d.ts +8 -0
- package/icon-picker/index.d.ts +5 -0
- package/icon-picker/public-api.d.ts +2 -0
- package/manage-parameters/index.d.ts +5 -0
- package/manage-parameters/manage-parameter/manage-parameter.component.d.ts +28 -0
- package/manage-parameters/manage-parameters.component.d.ts +33 -0
- package/manage-parameters/manage-parameters.model.d.ts +21 -0
- package/manage-parameters/manage-parameters.module.d.ts +14 -0
- package/manage-parameters/manage-parameters.service.d.ts +16 -0
- package/manage-parameters/public-api.d.ts +3 -0
- package/package.json +42 -2
- package/rich-text/index.d.ts +5 -0
- package/rich-text/public-api.d.ts +2 -0
- package/rich-text/rich-text.component.d.ts +43 -0
- package/rich-text/rich-text.module.d.ts +16 -0
- package/rich-text/rich-text.service.d.ts +9 -0
- package/show-if-badge/index.d.ts +5 -0
- package/show-if-badge/public-api.d.ts +2 -0
- package/show-if-badge/show-if-badge.component.d.ts +20 -0
- package/show-if-badge/show-if-badge.module.d.ts +16 -0
- package/src/assets/i18n/en.ngx-composite-lib.json +33 -0
- package/src/assets/images/brand-leaf-full@1x.png +0 -0
- package/src/assets/images/brand-leaf-full@2x.png +0 -0
- package/src/assets/images/brand-leaf-round.png +0 -0
- package/src/assets/images/brand-leaf-round@2x.png +0 -0
- package/src/assets/images/brand-leaf-skiny@1x.png +0 -0
- package/src/assets/images/brand-leaf-skiny@2x.png +0 -0
|
@@ -18,12 +18,13 @@ import * as i10 from "@pepperi-addons/ngx-lib/bread-crumbs";
|
|
|
18
18
|
import * as i11 from "@pepperi-addons/ngx-lib/icon";
|
|
19
19
|
import * as i12 from "@pepperi-addons/ngx-lib/smart-filters";
|
|
20
20
|
export class GenericListComponent {
|
|
21
|
-
constructor(_dataConvertorService, _layoutService, _loaderService, _translate, _genericListService) {
|
|
21
|
+
constructor(_dataConvertorService, _layoutService, _loaderService, _translate, _genericListService, _sessionService) {
|
|
22
22
|
this._dataConvertorService = _dataConvertorService;
|
|
23
23
|
this._layoutService = _layoutService;
|
|
24
24
|
this._loaderService = _loaderService;
|
|
25
25
|
this._translate = _translate;
|
|
26
26
|
this._genericListService = _genericListService;
|
|
27
|
+
this._sessionService = _sessionService;
|
|
27
28
|
this._dataSource = {
|
|
28
29
|
init: async (params) => {
|
|
29
30
|
return {
|
|
@@ -50,6 +51,7 @@ export class GenericListComponent {
|
|
|
50
51
|
this.noDataFoundMsg = '';
|
|
51
52
|
this.selectionType = 'multi';
|
|
52
53
|
this.supportSorting = false;
|
|
54
|
+
this.cacheSize = -1;
|
|
53
55
|
this.hideSelectAll = false;
|
|
54
56
|
this.pager = {
|
|
55
57
|
type: 'scroll'
|
|
@@ -58,9 +60,13 @@ export class GenericListComponent {
|
|
|
58
60
|
this.zebraStripes = false;
|
|
59
61
|
this.showTopBar = false;
|
|
60
62
|
this.breadCrumbsItems = new Array();
|
|
63
|
+
this.selectAll = false;
|
|
64
|
+
this.scrollPosition = 0;
|
|
61
65
|
this.fieldClick = new EventEmitter();
|
|
62
66
|
this.valueChange = new EventEmitter();
|
|
63
67
|
this.breadCrumbItemClick = new EventEmitter();
|
|
68
|
+
this.startIndexChange = new EventEmitter();
|
|
69
|
+
this.listLoad = new EventEmitter();
|
|
64
70
|
this._resize$ = new Subscription();
|
|
65
71
|
this._loader$ = new Subscription();
|
|
66
72
|
this._dataView = {
|
|
@@ -94,10 +100,12 @@ export class GenericListComponent {
|
|
|
94
100
|
this._dataSource = val;
|
|
95
101
|
this._sorting = undefined;
|
|
96
102
|
this.initSearch();
|
|
103
|
+
this.initSmartSearch();
|
|
97
104
|
this.initList();
|
|
98
105
|
}
|
|
99
106
|
set smartFilter(val) {
|
|
100
107
|
this.smartFilters = this._genericListService.convertToSmartFilter(val);
|
|
108
|
+
this._appliedFilters = this.smartFilters.data || [];
|
|
101
109
|
this.showSmartFilter = this.smartFilters.fields.length > 0;
|
|
102
110
|
}
|
|
103
111
|
set pepList(val) {
|
|
@@ -159,6 +167,8 @@ export class GenericListComponent {
|
|
|
159
167
|
componentRef.instance.lockItemInnerEvents = true;
|
|
160
168
|
}
|
|
161
169
|
componentRef.instance.supportSorting = this.listInputs.supportSorting;
|
|
170
|
+
componentRef.instance.sorting = this.listInputs.sorting;
|
|
171
|
+
componentRef.instance.cacheSize = this.listInputs.cacheSize;
|
|
162
172
|
componentRef.instance.selectionTypeForActions = this.listInputs.selectionType;
|
|
163
173
|
componentRef.instance.hideAllSelectionInMulti = this.listInputs.hideSelectAll;
|
|
164
174
|
componentRef.instance.showCardSelection = this.listInputs.selectionType !== 'none';
|
|
@@ -167,7 +177,13 @@ export class GenericListComponent {
|
|
|
167
177
|
componentRef.instance.pageSize = this.listInputs.pager?.size || DEFAULT_PAGE_SIZE;
|
|
168
178
|
componentRef.instance.pageIndex = this.listInputs.pager?.index || 0;
|
|
169
179
|
}
|
|
180
|
+
if (this.selectionType == "multi" && this.selectAll) {
|
|
181
|
+
this._sessionService.setObject('AllSelected', true);
|
|
182
|
+
}
|
|
170
183
|
componentRef.instance.noDataFoundMsg = this.listInputs.noDataFoundMsg;
|
|
184
|
+
componentRef.instance.startIndexChange.subscribe($event => {
|
|
185
|
+
this.startIndexChange.emit($event);
|
|
186
|
+
});
|
|
171
187
|
componentRef.instance.fieldClick.subscribe(($event) => {
|
|
172
188
|
this.onCustomizeFieldClick($event);
|
|
173
189
|
});
|
|
@@ -186,6 +202,10 @@ export class GenericListComponent {
|
|
|
186
202
|
componentRef.instance.sortingChange.subscribe(($event) => {
|
|
187
203
|
this.onSortingChange($event);
|
|
188
204
|
});
|
|
205
|
+
componentRef.instance.listLoad.subscribe(($event) => {
|
|
206
|
+
this.onSelectedItemsChanged(this._pepList.selectedItems.length);
|
|
207
|
+
this.onListLoad();
|
|
208
|
+
});
|
|
189
209
|
let convertedList = [];
|
|
190
210
|
if (data) {
|
|
191
211
|
if (data?.length) {
|
|
@@ -198,6 +218,7 @@ export class GenericListComponent {
|
|
|
198
218
|
}
|
|
199
219
|
componentRef.instance.initListData(uiControl, this.totalRowCount, convertedList);
|
|
200
220
|
}
|
|
221
|
+
componentRef.instance.scrollToIndex(this.scrollPosition);
|
|
201
222
|
}
|
|
202
223
|
}, 0);
|
|
203
224
|
}
|
|
@@ -210,13 +231,16 @@ export class GenericListComponent {
|
|
|
210
231
|
loadTableInputs() {
|
|
211
232
|
this.listInputs = {
|
|
212
233
|
supportSorting: this.supportSorting,
|
|
234
|
+
sorting: this.sorting,
|
|
235
|
+
cacheSize: this.cacheSize,
|
|
213
236
|
hideSelectAll: this.hideSelectAll,
|
|
214
237
|
selectionType: this.selectionType,
|
|
215
238
|
pager: this.pager,
|
|
216
239
|
noDataFoundMsg: this.noDataFoundMsg,
|
|
217
240
|
tableViewType: this.tableViewType,
|
|
218
241
|
zebraStripes: this.zebraStripes,
|
|
219
|
-
emptyState: this.emptyState
|
|
242
|
+
emptyState: this.emptyState,
|
|
243
|
+
selectAll: this.selectAll
|
|
220
244
|
};
|
|
221
245
|
if (this._dataSource.inputs) {
|
|
222
246
|
Object.entries(this._dataSource.inputs).forEach((item) => {
|
|
@@ -279,6 +303,10 @@ export class GenericListComponent {
|
|
|
279
303
|
this.searchString = '';
|
|
280
304
|
this.search?.initSearch();
|
|
281
305
|
}
|
|
306
|
+
initSmartSearch() {
|
|
307
|
+
this._appliedFilters = [];
|
|
308
|
+
this.smartFiltersComponent?.clearFilters();
|
|
309
|
+
}
|
|
282
310
|
async loadData(fromIndex, toIndex) {
|
|
283
311
|
this._loaderService.show();
|
|
284
312
|
let converedData = [];
|
|
@@ -400,6 +428,9 @@ export class GenericListComponent {
|
|
|
400
428
|
this._appliedFilters = filters;
|
|
401
429
|
this.initList();
|
|
402
430
|
}
|
|
431
|
+
onListLoad() {
|
|
432
|
+
this.listLoad.emit();
|
|
433
|
+
}
|
|
403
434
|
ngOnDestroy() {
|
|
404
435
|
if (this._resize$) {
|
|
405
436
|
this._resize$.unsubscribe();
|
|
@@ -409,14 +440,17 @@ export class GenericListComponent {
|
|
|
409
440
|
}
|
|
410
441
|
}
|
|
411
442
|
}
|
|
412
|
-
GenericListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, deps: [{ token: i1.PepDataConvertorService }, { token: i1.PepLayoutService }, { token: i1.PepLoaderService }, { token: i2.TranslateService }, { token: i3.PepGenericListService }], target: i0.ɵɵFactoryTarget.Component });
|
|
413
|
-
GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems" }, outputs: { fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{height:100%;background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr;grid-template-columns:auto 1fr}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .header-area{grid-column:2/3;grid-row:1/2}.inline-container .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container .list-container{grid-column:2/3;grid-row:2/3}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i11.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
|
|
443
|
+
GenericListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, deps: [{ token: i1.PepDataConvertorService }, { token: i1.PepLayoutService }, { token: i1.PepLoaderService }, { token: i2.TranslateService }, { token: i3.PepGenericListService }, { token: i1.PepSessionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
444
|
+
GenericListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: GenericListComponent, selector: "pep-generic-list", inputs: { dataSource: "dataSource", actions: "actions", uuidMapping: "uuidMapping", disabled: "disabled", addPadding: "addPadding", title: "title", description: "description", inline: "inline", showSearch: "showSearch", noDataFoundMsg: "noDataFoundMsg", emptyState: "emptyState", selectionType: "selectionType", supportSorting: "supportSorting", sorting: "sorting", cacheSize: "cacheSize", hideSelectAll: "hideSelectAll", pager: "pager", tableViewType: "tableViewType", zebraStripes: "zebraStripes", smartFilter: "smartFilter", showTopBar: "showTopBar", breadCrumbsItems: "breadCrumbsItems", selectAll: "selectAll", scrollPosition: "scrollPosition" }, outputs: { fieldClick: "fieldClick", valueChange: "valueChange", breadCrumbItemClick: "breadCrumbItemClick", startIndexChange: "startIndexChange", listLoad: "listLoad" }, providers: [PepGenericListService], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }, { propertyName: "smartFiltersComponent", first: true, predicate: ["smartFiltersComponent"], descendants: true }, { propertyName: "pepListContainer", first: true, predicate: ["pepListContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.PepListActionsComponent, selector: "pep-list-actions", inputs: ["actions", "sizeType", "xPosition", "hidden"], outputs: ["actionClick", "stateChange", "menuClick"] }, { kind: "component", type: i5.PepListTotalComponent, selector: "pep-list-total", inputs: ["totalRows", "totalAmount", "isMapView", "sizeType"] }, { kind: "component", type: i6.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i7.PepTopBarComponent, selector: "pep-top-bar", inputs: ["inline", "title"], outputs: ["footerStateChange"] }, { kind: "component", type: i8.PepSideBarComponent, selector: "pep-side-bar", inputs: ["position", "ignoreResize", "showHeader", "showFooter", "showToggle", "useAsWebComponent"], outputs: ["stateChange"] }, { kind: "component", type: i9.PepSearchComponent, selector: "pep-search", inputs: ["triggerOn", "autoCompleteTop", "autoCompleteValues", "shrink", "value", "searchControl", "useAsWebComponent", "sizeType"], outputs: ["search", "autocompleteChange", "stateChange"] }, { kind: "component", type: i10.PepBreadCrumbsComponent, selector: "pep-bread-crumbs", inputs: ["items", "displayType", "addSpacing"], outputs: ["itemClick"] }, { kind: "component", type: i11.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i12.PepSmartFiltersComponent, selector: "pep-smart-filters", inputs: ["title", "filters", "fields", "useAsWebComponent"], outputs: ["filtersChange", "fieldToggleChange"] }] });
|
|
414
445
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: GenericListComponent, decorators: [{
|
|
415
446
|
type: Component,
|
|
416
|
-
args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{height:100
|
|
417
|
-
}], ctorParameters: function () { return [{ type: i1.PepDataConvertorService }, { type: i1.PepLayoutService }, { type: i1.PepLoaderService }, { type: i2.TranslateService }, { type: i3.PepGenericListService }]; }, propDecorators: { search: [{
|
|
447
|
+
args: [{ selector: 'pep-generic-list', providers: [PepGenericListService], template: "<div *ngIf=\"inline\" class=\"inline-container\" [ngClass]=\"{ 'add-padding': addPadding, 'with-smart-filters': showSmartFilter }\">\n <div class=\"header-area\" >\n <div *ngIf=\"showTopBar\" class=\"inline-top-bar-container\">\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </div>\n <ng-container *ngIf=\"description\">\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\">\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n </div>\n <ng-container *ngIf=\"showSmartFilter\">\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!onLoad\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </ng-container>\n</div>\n<pep-page-layout *ngIf=\"!inline\" class=\"none-inline\" [addPadding]=\"addPadding\" [showShadow]=\"showSmartFilter\">\n <ng-container *ngIf=\"showSmartFilter\" pep-side-area>\n <ng-container *ngTemplateOutlet=\"smartFilterTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"showTopBar\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"topBarTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"description\" pep-top-area>\n <div class=\"list-description\">{{description}}</div>\n </ng-container>\n <ng-container *ngIf=\"breadCrumbsItems.length\" pep-top-area>\n <ng-container *ngTemplateOutlet=\"breadCrumbsTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"!onLoad\" pep-main-area class=\"main-area-container\">\n <ng-container *ngTemplateOutlet=\"listTemplate\"></ng-container>\n </div>\n</pep-page-layout>\n\n<ng-template #topBarTemplate>\n <pep-top-bar [title]=\"title\" [inline]=\"inline\">\n <div header-start-content>\n <ng-content select=\"[left-buttons]\"></ng-content>\n </div>\n <div header-end-content>\n <ng-content select=\"[right-buttons]\"></ng-content>\n </div>\n <!-- <div footer-start-content>\n <ng-content select=\"[left-bottom-area]\"></ng-content> \n </div>\n <div footer-end-content>\n <ng-content select=\"[right-bottom-area]\"></ng-content> \n </div> -->\n <pep-list-actions *ngIf=\"menuActions.length > 0\" [sizeType]=\"inline ? 'sm' : 'md'\" [actions]=\"menuActions\"\n (actionClick)=\"onActionItemClicked($event)\"></pep-list-actions>\n <pep-list-total [sizeType]=\"inline ? 'sm' : 'md'\" [totalRows]=\"totalRowCount\">\n </pep-list-total>\n <pep-search #search *ngIf=\"showSearch\" [value]=\"searchString\" [sizeType]=\"inline ? 'sm' : 'md'\"\n (search)=\"onSearchChanged($event)\">\n </pep-search>\n </pep-top-bar>\n</ng-template>\n\n<ng-template #smartFilterTemplate> \n <pep-side-bar #sideNav [ngClass]=\"{'smart-filter-area': inline}\"> \n <pep-smart-filters #smartFiltersComponent [title]=\"smartFilters.title\" [fields]=\"smartFilters.fields\"\n [filters]=\"smartFilters.data\" (filtersChange)=\"onFiltersChange($event)\">\n </pep-smart-filters>\n </pep-side-bar>\n</ng-template>\n\n<ng-template #breadCrumbsTemplate>\n <pep-bread-crumbs class=\"bread-crumbs\" [items]=\"breadCrumbsItems\" [addSpacing]=\"true\" [displayType]=\"'items'\"\n (itemClick)=\"onBreadCrumbItemClick($event)\"></pep-bread-crumbs>\n</ng-template>\n\n<ng-template #listTemplate>\n <div *ngIf=\"showEmptyState\" class=\"list-empty-state\">\n <div class=\"list-empty-title\">{{ listInputs.emptyState.title }}</div>\n <div class=\"list-empty-descr\">{{ listInputs.emptyState.description }}</div>\n <pep-icon name=\"leaf_skiny\" class=\"leaf-skiny\"></pep-icon>\n <pep-icon name=\"leaf_round\" class=\"leaf-round\"></pep-icon>\n <!-- <mat-icon class=\"leaf-skiny\">\n <pep-icon name=\"leaf_skiny\"></pep-icon>\n </mat-icon> -->\n <!-- <mat-icon class=\"leaf-round\">\n <pep-icon name=\"leaf_round\"></pep-icon>\n </mat-icon> -->\n </div>\n <div *ngIf=\"!showEmptyState\" class=\"list-container\">\n <ng-container #pepListContainer></ng-container>\n </div>\n</ng-template>", styles: [":host{height:inherit;display:block}.main-area-container{display:grid;height:inherit}.list-container{height:100%}.list-empty-state{padding-top:var(--pep-spacing-lg, 1rem);height:calc(100% - var(--pep-spacing-lg, 1rem));background:rgb(247,247,247);border-radius:var(--pep-border-radius-md, .25rem);position:relative;overflow:hidden;display:inline-flex!important;align-items:center;justify-content:center;flex-direction:column}.list-empty-state .leaf-skiny{z-index:1;height:52rem;position:absolute;left:-10rem;top:-2rem;pointer-events:none;transform:scale(1.4)}.list-empty-state .leaf-round{z-index:1;height:45rem;position:absolute;right:-13rem;top:-7rem;pointer-events:none;transform:rotate(45deg) scale(1)}.list-empty-state .list-empty-title{font-family:var(--pep-font-family-title, Nexa),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-bold, 600)!important;font-size:var(--pep-font-size-2xl, 1.5rem)!important;line-height:var(--pep-line-height-2xl, 1.875rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}.list-empty-state .list-empty-descr{font-family:var(--pep-font-family-body, Inter),-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif!important;font-weight:var(--pep-font-weight-normal, 400);font-size:var(--pep-font-size-md, 1rem)!important;line-height:var(--pep-line-height-md, 1.25rem)!important;z-index:50;padding-inline:var(--pep-spacing-lg, 1rem)}@media (max-width: 1279px){.list-empty-state .leaf-skiny{top:-5rem;left:-11rem;transform:scale(1.1)}.list-empty-state .leaf-round{right:-12rem;top:-7rem;transform:rotate(45deg) scale(.9)}}@media (max-width: 959px){.list-empty-state .leaf-round{display:none}.list-empty-state .list-empty-title,.list-empty-state .list-empty-descr{padding-inline:var(--pep-spacing-md, .75rem)}}.inline-container{height:inherit;display:grid;grid-template-rows:auto 1fr}.inline-container:not(.with-smart-filters) .header-area{grid-row:1/2}.inline-container:not(.with-smart-filters) .list-container{grid-row:2/3}.inline-container.with-smart-filters{grid-template-columns:auto 1fr}.inline-container.with-smart-filters .header-area{grid-column:2/3;grid-row:1/2}.inline-container.with-smart-filters .smart-filter-area{grid-column:1/2;grid-row:1/3}.inline-container.with-smart-filters .list-container{grid-column:2/3;grid-row:2/3}.inline-container.add-padding{padding-inline:var(--pep-spacing-lg, 1rem)}.inline-container .list-description{font-size:var(--pep-font-size-xs, .75rem);max-width:640px;padding:var(--pep-spacing-sm, .5rem) 0}.inline-container .bread-crumbs{padding:var(--pep-spacing-md, .75rem) 0 var(--pep-spacing-sm, .5rem) 0}.none-inline .list-description{font-size:var(--pep-font-size-sm, .875rem);max-width:720px;padding:var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.none-inline .bread-crumbs{padding:var(--pep-spacing-md, .75rem) var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem) var(--pep-spacing-xs, .25rem)}.noDataFoundMsg{margin:1rem 0;height:calc(100% - 2rem);width:100%;background:hsla(0deg,0%,10%,.12);display:flex;justify-content:center;align-items:center}\n", ".list-empty-state ::ng-deep .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)}\n"] }]
|
|
448
|
+
}], ctorParameters: function () { return [{ type: i1.PepDataConvertorService }, { type: i1.PepLayoutService }, { type: i1.PepLoaderService }, { type: i2.TranslateService }, { type: i3.PepGenericListService }, { type: i1.PepSessionService }]; }, propDecorators: { search: [{
|
|
418
449
|
type: ViewChild,
|
|
419
450
|
args: ['search']
|
|
451
|
+
}], smartFiltersComponent: [{
|
|
452
|
+
type: ViewChild,
|
|
453
|
+
args: ['smartFiltersComponent']
|
|
420
454
|
}], pepListContainer: [{
|
|
421
455
|
type: ViewChild,
|
|
422
456
|
args: ['pepListContainer', { read: ViewContainerRef }]
|
|
@@ -446,6 +480,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
446
480
|
type: Input
|
|
447
481
|
}], supportSorting: [{
|
|
448
482
|
type: Input
|
|
483
|
+
}], sorting: [{
|
|
484
|
+
type: Input
|
|
485
|
+
}], cacheSize: [{
|
|
486
|
+
type: Input
|
|
449
487
|
}], hideSelectAll: [{
|
|
450
488
|
type: Input
|
|
451
489
|
}], pager: [{
|
|
@@ -460,11 +498,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
460
498
|
type: Input
|
|
461
499
|
}], breadCrumbsItems: [{
|
|
462
500
|
type: Input
|
|
501
|
+
}], selectAll: [{
|
|
502
|
+
type: Input
|
|
503
|
+
}], scrollPosition: [{
|
|
504
|
+
type: Input
|
|
463
505
|
}], fieldClick: [{
|
|
464
506
|
type: Output
|
|
465
507
|
}], valueChange: [{
|
|
466
508
|
type: Output
|
|
467
509
|
}], breadCrumbItemClick: [{
|
|
468
510
|
type: Output
|
|
511
|
+
}], startIndexChange: [{
|
|
512
|
+
type: Output
|
|
513
|
+
}], listLoad: [{
|
|
514
|
+
type: Output
|
|
469
515
|
}] } });
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCxnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBR3BCLE1BQU0sOEJBQThCLENBQUM7QUF5QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWEvRCxNQUFNLE9BQU8sb0JBQW9CO0lBdUk3QixZQUNZLHFCQUE4QyxFQUM5QyxjQUFnQyxFQUNoQyxjQUFnQyxFQUNoQyxVQUE0QixFQUM1QixtQkFBMEM7UUFKMUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFuSTlDLGdCQUFXLEdBQThCO1lBQzdDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7Z0JBQ3hCLE9BQU87b0JBQ0gsUUFBUSxFQUFFO3dCQUNOLElBQUksRUFBRSxNQUFNO3FCQUNmO29CQUNELFVBQVUsRUFBRSxDQUFDLENBQUM7b0JBQ2QsS0FBSyxFQUFFLEVBQUU7aUJBQ1osQ0FBQTtZQUNMLENBQUM7U0FDSixDQUFBO1FBVUQsWUFBTyxHQUEyQjtZQUM5QixHQUFHLEVBQUUsS0FBSyxFQUFFLElBQVMsRUFBRSxFQUFFO2dCQUNyQixPQUFPLEVBQUUsQ0FBQTtZQUNiLENBQUM7U0FDSixDQUFDO1FBR0YsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25CLFVBQUssR0FBRyxFQUFFLENBQUM7UUFHWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUdqQixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQU1wQixrQkFBYSxHQUF5QixPQUFPLENBQUM7UUFHOUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdEIsVUFBSyxHQUF5QjtZQUMxQixJQUFJLEVBQUUsUUFBUTtTQUNqQixDQUFBO1FBR0Qsa0JBQWEsR0FBeUIsU0FBUyxDQUFDO1FBR2hELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBU3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFHbkIscUJBQWdCLEdBQXdCLElBQUksS0FBSyxFQUFxQixDQUFDO1FBR3ZFLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUd6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFpQyxDQUFDO1FBR2hFLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO1FBVS9ELGFBQVEsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QyxhQUFRLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUMsY0FBUyxHQUFhO1lBQzFCLElBQUksRUFBRSxNQUFNO1NBQ2YsQ0FBQztRQUVGLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFFZCxrQkFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGlCQUFZLEdBQXFCO1lBQzdCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUUsU0FBUztTQUNuQixDQUFDO1FBQ00sb0JBQWUsR0FBMEIsRUFBRSxDQUFDO1FBQzVDLGFBQVEsR0FBMkMsU0FBUyxDQUFDO1FBRXJFLGlCQUFZLEdBQW1ELEVBQUUsQ0FBQztRQUNsRSxnQkFBVyxHQUF1QixFQUFFLENBQUM7UUFTakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwRSxjQUFjO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUN6RSxFQUFFO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBaEpELElBQ0ksZ0JBQWdCLENBQUMsR0FBcUI7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBYUQsSUFDSSxVQUFVLENBQUMsR0FBOEI7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBd0RELElBQ0ksV0FBVyxDQUFDLEdBQStCO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBaUJELElBQUksT0FBTyxDQUFDLEdBQXFCO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQXlDRCxRQUFRO1FBQ0osRUFBRTtJQUNOLENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUTtRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQiw0Q0FBNEM7Z0JBQzVDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFFdkIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBRWhCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDeEMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQ3JFLE9BQU8sR0FBRyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQy9FO3FCQUFNO29CQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQSx3REFBd0Q7aUJBQ3pFO2dCQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXJELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtvQkFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN4QjtnQkFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsa0JBQWtCO2dCQUNsQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFOzRCQUNuRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO3dCQUM1QyxDQUFDLENBQUMsQ0FBQztxQkFDTjtvQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO3dCQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTs0QkFDekUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDbEQsQ0FBQyxDQUFDLENBQUM7cUJBQ047b0JBQ0QsT0FBTztpQkFDVjtnQkFDRCxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7b0JBQ2xCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO3dCQUN4QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7eUJBQ25DO3dCQUNELE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7d0JBQzFFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFFOUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO3dCQUVyQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQy9GLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO3dCQUNwRSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQzt3QkFDbEUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFOzRCQUNmLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs0QkFDdEMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7eUJBQ3BEO3dCQUNELFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO3dCQUN0RSxZQUFZLENBQUMsUUFBUSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO3dCQUM5RSxZQUFZLENBQUMsUUFBUSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO3dCQUU5RSxZQUFZLENBQUMsUUFBUSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQzt3QkFDbkYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUM3RCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7NEJBQ3hDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxpQkFBaUIsQ0FBQzs0QkFDbEYsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQzt5QkFDdkU7d0JBQ0QsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7d0JBQ3RFLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzRCQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO3dCQUNILFlBQVksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQzNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzdCLENBQUMsQ0FBQyxDQUFDO3dCQUNILFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzRCQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QixDQUFDLENBQUMsQ0FBQzt3QkFDSCxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTt3QkFDL0IsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2pDLENBQUMsQ0FBQyxDQUFDO3dCQUNILElBQUksYUFBYSxHQUFxQixFQUFFLENBQUM7d0JBQ3pDLElBQUksSUFBSSxFQUFFOzRCQUNOLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRTtnQ0FDZCxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDcEU7NEJBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7NEJBQ3ZGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDL0UsSUFBSSxhQUFhLEVBQUUsTUFBTSxFQUFFO2dDQUN2QixZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQzs2QkFDdkQ7NEJBRUQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7eUJBQ3BGO3FCQUNKO2dCQUNMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNUO1FBQ0wsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNkLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNuQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDOUIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUU7WUFDekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUMxRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWE7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVM7UUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNsQyxTQUFTLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUU3QixJQUFJLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDckIsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDN0g7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxLQUFLLE1BQU0sRUFBRTtZQUMxQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUN0QixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUM1QixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWM7UUFDeEIsTUFBTSxHQUFHLEdBQWtCLEVBQUUsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUNMLEdBQUcsRUFBRSxJQUFJO29CQUNULElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztpQkFDbkIsQ0FBQyxDQUFBO1lBQ04sQ0FBQyxDQUFDLENBQUE7U0FDTDtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGNBQWM7UUFDbEIsTUFBTSxXQUFXLEdBQVE7WUFDckIsT0FBTyxFQUFFLEtBQUs7WUFDZCxJQUFJLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRTtTQUMvQixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDM0IsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDMUQ7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBaUIsRUFBRSxPQUFlO1FBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxZQUFZLEdBQWlCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBNEIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUM5RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxTQUFTO1lBQzVDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN2RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTO1lBQ25DLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLE9BQU8sRUFBRSxPQUFPO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFM0Isc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxFQUFFLFVBQVUsSUFBSSxDQUFDLENBQUM7UUFFM0MsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFL0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUM5QyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDOUg7U0FDSjtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFHTyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLFlBQWdDLFNBQVM7UUFDdEcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksWUFBWSxHQUFpQixFQUFFLENBQUM7WUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztnQkFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksU0FBUztnQkFDNUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2RSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTO2dCQUNuQyxTQUFTLEVBQUUsU0FBUztnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFNBQVMsRUFBRSxTQUFTO2FBQ3ZCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFM0IsSUFBSSxRQUFRLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdEIsWUFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDN0g7WUFDRCxPQUFPLFlBQVksQ0FBQztTQUN2QjthQUFNO1lBQ0gsT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBNkI7UUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9FLElBQUksYUFBYSxFQUFFLE1BQU0sRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQTRCO1FBQ2pELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRSxJQUFJLGFBQWEsRUFBRSxNQUFNLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDOUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFVO1FBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDL0M7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDbEMsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQThCO1FBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyRDtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBMkI7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsaUJBQXlCO1FBQzVDLDhEQUE4RDtRQUM5RCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxlQUF3QztRQUMxRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBbUM7UUFDckQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQW9DO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBaUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBOEI7UUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDOztpSEE1ZVEsb0JBQW9CO3FHQUFwQixvQkFBb0IsZ3NCQUZsQixDQUFDLHFCQUFxQixDQUFDLDhNQU1LLGdCQUFnQiw2QkN6RTNELHV5SUEwRmM7MkZEckJELG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDSSxrQkFBa0IsYUFHakIsQ0FBQyxxQkFBcUIsQ0FBQzsrT0FHYixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBSWYsZ0JBQWdCO3NCQURuQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQWlCckQsVUFBVTtzQkFEYixLQUFLO2dCQVNOLE9BQU87c0JBRE4sS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBTU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJRixXQUFXO3NCQURkLEtBQUs7Z0JBT04sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcERhdGFDb252ZXJ0b3JTZXJ2aWNlLFxuICAgIFBlcExheW91dFNlcnZpY2UsXG4gICAgT2JqZWN0c0RhdGFSb3csXG4gICAgUGVwR3VpZCxcbiAgICBVSUNvbnRyb2wsXG4gICAgUGVwTG9hZGVyU2VydmljZSxcbiAgICBQZXBSb3dEYXRhXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9mb3JtJztcbmltcG9ydCB7XG4gICAgUGVwTGlzdENvbXBvbmVudCxcbiAgICBQZXBTZWxlY3Rpb25EYXRhLFxuICAgIElQZXBMaXN0TG9hZFBhZ2VFdmVudCxcbiAgICBQZXBMaXN0U2VsZWN0aW9uVHlwZSxcbiAgICBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCxcbiAgICBERUZBVUxUX1BBR0VfU0laRSxcbiAgICBJUGVwTGlzdExvYWRJdGVtc0V2ZW50LFxuICAgIFBlcExpc3RUYWJsZVZpZXdUeXBlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBQZXBNZW51SXRlbSxcbiAgICBJUGVwTWVudUl0ZW1DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9tZW51JztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcEJyZWFkQ3J1bWJJdGVtLFxuICAgIElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvYnJlYWQtY3J1bWJzJztcbmltcG9ydCB7IElQZXBTZWFyY2hDbGlja0V2ZW50LCBQZXBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zZWFyY2gnO1xuXG5pbXBvcnQge1xuICAgIERhdGFWaWV3LFxuICAgIEdyaWREYXRhVmlld1xufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RJbml0RGF0YSxcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlLFxuICAgIElQZXBHZW5lcmljTGlzdFBhZ2VyLFxuICAgIElQZXBHZW5lcmljTGlzdEFjdGlvbnMsXG4gICAgSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIsXG4gICAgSVBlcFNtYXJ0RmlsdGVycyxcbiAgICBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlXG59IGZyb20gJy4vZ2VuZXJpYy1saXN0Lm1vZGVsJztcbmltcG9ydCB7IFBlcEdlbmVyaWNMaXN0U2VydmljZSB9IGZyb20gJy4vZ2VuZXJpYy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVZpZXdDb252ZXJ0ZXIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvZGF0YS12aWV3cyc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlckRhdGEsXG4gICAgUGVwU21hcnRGaWx0ZXJCYXNlRmllbGRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc21hcnQtZmlsdGVycyc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZ2VuZXJpYy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50LnNjc3MnLCAnLi9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtQZXBHZW5lcmljTGlzdFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEdlbmVyaWNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdzZWFyY2gnKSBzZWFyY2g6IFBlcFNlYXJjaENvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgX3BlcExpc3RDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgncGVwTGlzdENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxuICAgIHNldCBwZXBMaXN0Q29udGFpbmVyKHZhbDogVmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICB0aGlzLl9wZXBMaXN0Q29udGFpbmVyID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2RhdGFTb3VyY2U6IElQZXBHZW5lcmljTGlzdERhdGFTb3VyY2UgPSB7XG4gICAgICAgIGluaXQ6IGFzeW5jIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhVmlldzoge1xuICAgICAgICAgICAgICAgICAgICBUeXBlOiAnR3JpZCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvdGFsQ291bnQ6IC0xLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFTb3VyY2UodmFsOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2YWw7XG4gICAgICAgIHRoaXMuX3NvcnRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBhY3Rpb25zOiBJUGVwR2VuZXJpY0xpc3RBY3Rpb25zID0ge1xuICAgICAgICBnZXQ6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIEBJbnB1dCgpXG4gICAgdXVpZE1hcHBpbmcgPSAna2V5JztcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgYWRkUGFkZGluZyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0aXRsZSA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBpbmxpbmUgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1NlYXJjaCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBub0RhdGFGb3VuZE1zZyA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBlbXB0eVN0YXRlOiBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25UeXBlOiBQZXBMaXN0U2VsZWN0aW9uVHlwZSA9ICdtdWx0aSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHN1cHBvcnRTb3J0aW5nID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGhpZGVTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHBhZ2VyOiBJUGVwR2VuZXJpY0xpc3RQYWdlciA9IHtcbiAgICAgICAgdHlwZTogJ3Njcm9sbCdcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlVmlld1R5cGU6IFBlcExpc3RUYWJsZVZpZXdUeXBlID0gJ3JlZ3VsYXInO1xuXG4gICAgQElucHV0KClcbiAgICB6ZWJyYVN0cmlwZXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHNtYXJ0RmlsdGVyKHZhbDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5zbWFydEZpbHRlcnMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvU21hcnRGaWx0ZXIodmFsKTtcbiAgICAgICAgdGhpcy5zaG93U21hcnRGaWx0ZXIgPSB0aGlzLnNtYXJ0RmlsdGVycy5maWVsZHMubGVuZ3RoID4gMDsgXG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzaG93VG9wQmFyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGJyZWFkQ3J1bWJzSXRlbXM6IFBlcEJyZWFkQ3J1bWJJdGVtW10gPSBuZXcgQXJyYXk8UGVwQnJlYWRDcnVtYkl0ZW0+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWVsZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGJyZWFkQ3J1bWJJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQ+KCk7XG5cbiAgICBzZXQgcGVwTGlzdCh2YWw6IFBlcExpc3RDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5fcGVwTGlzdCA9IHZhbDtcbiAgICB9XG5cbiAgICBnZXQgcGVwTGlzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVzaXplJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUgX2xvYWRlciQ6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIHByaXZhdGUgX2RhdGFWaWV3OiBEYXRhVmlldyA9IHtcbiAgICAgICAgVHlwZTogJ0dyaWQnXG4gICAgfTtcbiAgICBwcml2YXRlIF9wZXBMaXN0OiBhbnk7XG4gICAgb25Mb2FkID0gdHJ1ZTtcbiAgICBsaXN0SW5wdXRzOiBhbnk7XG4gICAgdG90YWxSb3dDb3VudCA9IC0xO1xuICAgIHNlYXJjaFN0cmluZyA9ICcnO1xuICAgIHNob3dTbWFydEZpbHRlciA9IGZhbHNlO1xuICAgIHNob3dFbXB0eVN0YXRlID0gZmFsc2U7XG4gICAgc21hcnRGaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJzID0ge1xuICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgICBkYXRhOiBbXSxcbiAgICAgICAgdGl0bGU6ICdGaWx0ZXJzJ1xuICAgIH07XG4gICAgcHJpdmF0ZSBfYXBwbGllZEZpbHRlcnM6IElQZXBTbWFydEZpbHRlckRhdGFbXSA9IFtdO1xuICAgIHByaXZhdGUgX3NvcnRpbmc6IElQZXBMaXN0U29ydGluZ0NoYW5nZUV2ZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgbWVudUhhbmRsZXJzOiB7IFtrZXk6IHN0cmluZ106IChvYmo6IGFueSkgPT4gUHJvbWlzZTx2b2lkPiB9ID0ge307XG4gICAgbWVudUFjdGlvbnM6IEFycmF5PFBlcE1lbnVJdGVtPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2RhdGFDb252ZXJ0b3JTZXJ2aWNlOiBQZXBEYXRhQ29udmVydG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfbG9hZGVyU2VydmljZTogUGVwTG9hZGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9nZW5lcmljTGlzdFNlcnZpY2U6IFBlcEdlbmVyaWNMaXN0U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9yZXNpemUkID0gdGhpcy5fbGF5b3V0U2VydmljZS5vblJlc2l6ZSQucGlwZSgpLnN1YnNjcmliZSgoc2l6ZSkgPT4geyAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xvYWRlciQgPSB0aGlzLl9sb2FkZXJTZXJ2aWNlLm9uQ2hhbmdlZCQuc3Vic2NyaWJlKChzdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdExpc3QoKSB7XG4gICAgICAgIHRoaXMub25Mb2FkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7IC8vbWFraW5nIHN1cmUgYWxsIGlucHV0IGRhdGEgaXMgYXZhaWxhYmxlXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIC8vbWVyZ2Ugc2VsZWN0b3IgaW5wdXRzIHdpdGggY2FsbGJhY2sgaW5wdXRzXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVGFibGVJbnB1dHMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBmcm9tSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGxldCB0b0luZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICBmcm9tSW5kZXggPSB0aGlzLmxpc3RJbnB1dHMucGFnZXIuc2l6ZSAqIHRoaXMubGlzdElucHV0cy5wYWdlci5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdG9JbmRleCA9IGZyb21JbmRleCArICh0aGlzLmxpc3RJbnB1dHMucGFnZXIuc2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRSkgLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvSW5kZXggPSAxMDA7Ly9UTyBETyAtIGdldCB2YWx1ZSBmcm9tIC0gdGhpcy5jdXN0b21MaXN0LmdldFRvcEl0ZW1zKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sb2FkRGF0YShmcm9tSW5kZXgsIHRvSW5kZXgpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHM/LmVtcHR5U3RhdGU/LnNob3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbXB0eVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy9zaG93IGVtcHR5IHN0YXRlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0VtcHR5U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnR0VORVJJQ19MSVNULkVNUFRZX1NUQVRFLlRJVExFJykuc3Vic2NyaWJlKHRleHQgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSA9IHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdHRU5FUklDX0xJU1QuRU1QVFlfU1RBVEUuREVTQ1JJUFRJT04nKS5zdWJzY3JpYmUodGV4dCA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uID0gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZXBMaXN0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwTGlzdENvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgUGVwTGlzdENvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KCdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9saXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9wZXBMaXN0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChQZXBMaXN0Q29tcG9uZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXBMaXN0ID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld1R5cGUgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0TGlzdFZpZXdUeXBlKHRoaXMuX2RhdGFWaWV3LlR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRhYmxlVmlld1R5cGUgPSB0aGlzLmxpc3RJbnB1dHMudGFibGVWaWV3VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS56ZWJyYVN0cmlwZXMgPSB0aGlzLmxpc3RJbnB1dHMuemVicmFTdHJpcGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2NrSXRlbUlubmVyRXZlbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdXBwb3J0U29ydGluZyA9IHRoaXMubGlzdElucHV0cy5zdXBwb3J0U29ydGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3Rpb25UeXBlRm9yQWN0aW9ucyA9IHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVBbGxTZWxlY3Rpb25Jbk11bHRpID0gdGhpcy5saXN0SW5wdXRzLmhpZGVTZWxlY3RBbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zaG93Q2FyZFNlbGVjdGlvbiA9IHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlICE9PSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZXJUeXBlID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnBhZ2VyLnR5cGUgPT09ICdwYWdlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZVNpemUgPSB0aGlzLmxpc3RJbnB1dHMucGFnZXI/LnNpemUgfHwgREVGQVVMVF9QQUdFX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnBhZ2VJbmRleCA9IHRoaXMubGlzdElucHV0cy5wYWdlcj8uaW5kZXggfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ub0RhdGFGb3VuZE1zZyA9IHRoaXMubGlzdElucHV0cy5ub0RhdGFGb3VuZE1zZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWVsZENsaWNrLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkN1c3RvbWl6ZUZpZWxkQ2xpY2soJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkSXRlbXNDaGFuZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvYWRJdGVtcy5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkSXRlbXMoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmxvYWRQYWdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRQYWdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGluZ0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Tb3J0aW5nQ2hhbmdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0ZWRMaXN0OiBPYmplY3RzRGF0YVJvd1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkTGlzdCA9IHRoaXMuX2RhdGFDb252ZXJ0b3JTZXJ2aWNlLmNvbnZlcnRMaXN0RGF0YShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlDb250cm9sID0gdGhpcy5nZXRVaUNvbnRyb2woRGF0YVZpZXdDb252ZXJ0ZXIudG9VSUNvbnRyb2xEYXRhKHRoaXMuX2RhdGFWaWV3KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaW5pdExpc3REYXRhKHVpQ29udHJvbCwgdGhpcy50b3RhbFJvd0NvdW50LCBjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMubGlzdElucHV0cyA9IHtcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nOiB0aGlzLnN1cHBvcnRTb3J0aW5nLFxuICAgICAgICAgICAgaGlkZVNlbGVjdEFsbDogdGhpcy5oaWRlU2VsZWN0QWxsLFxuICAgICAgICAgICAgc2VsZWN0aW9uVHlwZTogdGhpcy5zZWxlY3Rpb25UeXBlLFxuICAgICAgICAgICAgcGFnZXI6IHRoaXMucGFnZXIsXG4gICAgICAgICAgICBub0RhdGFGb3VuZE1zZzogdGhpcy5ub0RhdGFGb3VuZE1zZyxcbiAgICAgICAgICAgIHRhYmxlVmlld1R5cGU6IHRoaXMudGFibGVWaWV3VHlwZSxcbiAgICAgICAgICAgIHplYnJhU3RyaXBlczogdGhpcy56ZWJyYVN0cmlwZXMsXG4gICAgICAgICAgICBlbXB0eVN0YXRlOiB0aGlzLmVtcHR5U3RhdGVcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh0aGlzLl9kYXRhU291cmNlLmlucHV0cykuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5oYXNQcm9wZXJ0eSh0aGlzLmxpc3RJbnB1dHMsIGl0ZW1bMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0c1tpdGVtWzBdXSA9IGl0ZW1bMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZXRlbWluZXMgd2hldGhlciBlbXB0eSBzdGF0ZSBpcyB0byBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEVtcHR5U3RhdGUoKSB7XG4gICAgICAgIHRoaXMuc2hvd0VtcHR5U3RhdGUgPSB0aGlzLnRvdGFsUm93Q291bnQgPT09IDAgJiZcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID09PSAnJyAmJlxuICAgICAgICAgICAgdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VWlDb250cm9sKGRhdGE6IGFueSk6IFVJQ29udHJvbCB7XG4gICAgICAgIGNvbnN0IHVpQ29udHJvbCA9IG5ldyBVSUNvbnRyb2woKTtcbiAgICAgICAgdWlDb250cm9sLkNvbnRyb2xGaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAoZGF0YT8uQ29udHJvbEZpZWxkcykge1xuICAgICAgICAgICAgdWlDb250cm9sLkNvbnRyb2xGaWVsZHMgPSBkYXRhLkNvbnRyb2xGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvVWlDb250cm9sRmllbGQoZmllbGQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1aUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkTWVudUl0ZW1zKCk6IHZvaWQgeyAvL1RPRE9cbiAgICAgICAgaWYgKHRoaXMubGlzdElucHV0cy5zZWxlY3Rpb25UeXBlICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TWVudUFjdGlvbnMoKS50aGVuKFxuICAgICAgICAgICAgICAgIHggPT4gdGhpcy5tZW51QWN0aW9ucyA9IHhcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE1lbnVBY3Rpb25zKCk6IFByb21pc2U8UGVwTWVudUl0ZW1bXT4ge1xuICAgICAgICBjb25zdCByZXM6IFBlcE1lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRNZW51T2JqZWN0cygpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBhd2FpdCB0aGlzLmFjdGlvbnMuZ2V0KHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzID0ge307XG4gICAgICAgICAgICBhY3Rpb25zPy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSBQZXBHdWlkLm5ld0d1aWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVIYW5kbGVyc1t1dWlkXSA9IGl0ZW0uaGFuZGxlcjtcbiAgICAgICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGtleTogdXVpZCxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50aXRsZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1lbnVPYmplY3RzKCkge1xuICAgICAgICBjb25zdCBtZW51T2JqZWN0czogYW55ID0ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBkYXRhOiBuZXcgUGVwU2VsZWN0aW9uRGF0YSgpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgbWVudU9iamVjdHMuc3VjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5kYXRhID0gdGhpcy5wZXBMaXN0LmdldFNlbGVjdGVkSXRlbXNEYXRhKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVudU9iamVjdHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0cmluZyA9ICcnO1xuICAgICAgICB0aGlzLnNlYXJjaD8uaW5pdFNlYXJjaCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZERhdGEoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcik6IFByb21pc2U8UGVwUm93RGF0YVtdPiB7XG4gICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2Uuc2hvdygpO1xuICAgICAgICBsZXQgY29udmVyZWREYXRhOiBQZXBSb3dEYXRhW10gPSBbXTtcbiAgICAgICAgY29uc3QgZGF0YTogSVBlcEdlbmVyaWNMaXN0SW5pdERhdGEgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlLmluaXQoe1xuICAgICAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPyB0aGlzLl9hcHBsaWVkRmlsdGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuX3NvcnRpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgICAgICAgICB0b0luZGV4OiB0b0luZGV4XG4gICAgICAgIH0pOyAgICAgICAgXG4gICAgICAgIHRoaXMuX2xvYWRlclNlcnZpY2UuaGlkZSgpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgdG90YWwgY291bnRcbiAgICAgICAgdGhpcy50b3RhbFJvd0NvdW50ID0gZGF0YT8udG90YWxDb3VudCB8fCAwO1xuXG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhVmlldyA9IGRhdGEuZGF0YVZpZXc7XG5cbiAgICAgICAgICAgIGlmIChkYXRhLml0ZW1zPy5sZW5ndGggPiAwICYmICFkYXRhLmlzUGVwUm93RGF0YSkgeyAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBjb252ZXJlZERhdGEgPSBkYXRhLml0ZW1zLm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIGRhdGEuZGF0YVZpZXcsIHRoaXMudXVpZE1hcHBpbmcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb252ZXJlZERhdGE7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGFzeW5jIHVwZGF0ZURhdGFMaXN0KGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIsIHBhZ2VJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogUHJvbWlzZTxQZXBSb3dEYXRhW10+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFTb3VyY2UudXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgICAgIGxldCBjb252ZXJlZERhdGE6IFBlcFJvd0RhdGFbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgZGF0YUxpc3QgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgc2VhcmNoU3RyaW5nOiB0aGlzLnNlYXJjaFN0cmluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc29ydGluZzogdGhpcy5fc29ydGluZyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZnJvbUluZGV4OiBmcm9tSW5kZXgsXG4gICAgICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleCxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IHBhZ2VJbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAgICAgaWYgKGRhdGFMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29udmVyZWREYXRhID0gZGF0YUxpc3QubWFwKGl0ZW0gPT4gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbSwgdGhpcy5fZGF0YVZpZXcsIHRoaXMudXVpZE1hcHBpbmcpKTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICByZXR1cm4gY29udmVyZWREYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZHMgdmlydHVhbCBzY3JvbGwgaXRlbXMgZnJvbSBhcGlcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIG9uTG9hZEl0ZW1zKGV2ZW50OiBJUGVwTGlzdExvYWRJdGVtc0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCB0aGlzLnVwZGF0ZURhdGFMaXN0KGV2ZW50LmZyb21JbmRleCwgZXZlbnQudG9JbmRleCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEobGlzdCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyhjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXBMaXN0LnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVwTGlzdC51cGRhdGVJdGVtcyhjb252ZXJ0ZWRMaXN0LCBldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbG9hZHMgcGFnaW5nIGJ1bGsgZnJvbSBhcGlcbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIG9uTG9hZFBhZ2UoZXZlbnQ6IElQZXBMaXN0TG9hZFBhZ2VFdmVudCkge1xuICAgICAgICBjb25zdCBmcm9tSW5kZXggPSBldmVudC5wYWdlSW5kZXggKiBldmVudC5wYWdlU2l6ZTtcbiAgICAgICAgY29uc3QgdG9JbmRleCA9IE1hdGgubWluKGZyb21JbmRleCArIGV2ZW50LnBhZ2VTaXplIC0gMSwgdGhpcy50b3RhbFJvd0NvdW50IC0gMSk7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCB0aGlzLnVwZGF0ZURhdGFMaXN0KGZyb21JbmRleCwgdG9JbmRleCwgZXZlbnQucGFnZUluZGV4KTtcbiAgICAgICAgY29uc3QgY29udmVydGVkTGlzdCA9IHRoaXMuX2RhdGFDb252ZXJ0b3JTZXJ2aWNlLmNvbnZlcnRMaXN0RGF0YShsaXN0KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5nZXRTZWxlY3RlZEl0ZW1zKGNvbnZlcnRlZExpc3QpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBlcExpc3Quc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZXBMaXN0LnVwZGF0ZVBhZ2UoY29udmVydGVkTGlzdCwgZXZlbnQpO1xuICAgIH1cblxuICAgIGdldEl0ZW1CeUlkKGlkOiBzdHJpbmcpOiBPYmplY3RzRGF0YVJvdyB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcGVwTGlzdC5nZXRJdGVtRGF0YUJ5SUQoaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZEl0ZW1zKCk6IFBlcFNlbGVjdGlvbkRhdGEgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UGFnZUluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXBMaXN0LnBhZ2VJbmRleDtcbiAgICB9XG5cbiAgICBvbkFjdGlvbkl0ZW1DbGlja2VkKGFjdGlvbjogSVBlcE1lbnVJdGVtQ2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnNbYWN0aW9uLnNvdXJjZS5rZXldKHJlc3VsdC5kYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uU2VhcmNoQ2hhbmdlZChldmVudDogSVBlcFNlYXJjaENsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBldmVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0ZWRJdGVtc0NoYW5nZWQoc2VsZWN0ZWRSb3dzQ291bnQ6IG51bWJlcikge1xuICAgICAgICAvL2xvYWRpbmcgbWVudSBpdGVtcyBhZnRlciBwZXAtbGlzdCBzZWxlY3RlZCBpdGVtcyBhcmUgdXBkYXRlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZE1lbnVJdGVtcygpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBvbkN1c3RvbWl6ZUZpZWxkQ2xpY2soZmllbGRDbGlja0V2ZW50OiBJUGVwRm9ybUZpZWxkQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLmZpZWxkQ2xpY2suZW1pdChmaWVsZENsaWNrRXZlbnQpO1xuICAgIH1cblxuICAgIG9uQnJlYWRDcnVtYkl0ZW1DbGljayhldmVudDogSVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLmJyZWFkQ3J1bWJJdGVtQ2xpY2suZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZWQoZXZlbnQ6IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25Tb3J0aW5nQ2hhbmdlKGV2ZW50OiBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLl9zb3J0aW5nID0gZXZlbnQ7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlcnNDaGFuZ2UoZmlsdGVyczogSVBlcFNtYXJ0RmlsdGVyRGF0YVtdKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gZmlsdGVycztcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5fcmVzaXplJCkge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9sb2FkZXIkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkZXIkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJpbmxpbmVcIiBjbGFzcz1cImlubGluZS1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdhZGQtcGFkZGluZyc6IGFkZFBhZGRpbmcgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItYXJlYVwiID5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dUb3BCYXJcIiBjbGFzcz1cImlubGluZS10b3AtYmFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcEJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWRlc2NyaXB0aW9uXCI+e3tkZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRDcnVtYnNJdGVtcy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZENydW1ic1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93U21hcnRGaWx0ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNtYXJ0RmlsdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9uTG9hZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxwZXAtcGFnZS1sYXlvdXQgKm5nSWY9XCIhaW5saW5lXCIgY2xhc3M9XCJub25lLWlubGluZVwiIFthZGRQYWRkaW5nXT1cImFkZFBhZGRpbmdcIiBbc2hvd1NoYWRvd109XCJzaG93U21hcnRGaWx0ZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NtYXJ0RmlsdGVyXCIgcGVwLXNpZGUtYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNtYXJ0RmlsdGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RvcEJhclwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcEJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlc2NyaXB0aW9uXCIgcGVwLXRvcC1hcmVhPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZENydW1ic0l0ZW1zLmxlbmd0aFwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJyZWFkQ3J1bWJzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ0lmPVwiIW9uTG9hZFwiIHBlcC1tYWluLWFyZWEgY2xhc3M9XCJtYWluLWFyZWEtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaXN0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvcGVwLXBhZ2UtbGF5b3V0PlxuXG48bmctdGVtcGxhdGUgI3RvcEJhclRlbXBsYXRlPlxuICAgIDxwZXAtdG9wLWJhciBbdGl0bGVdPVwidGl0bGVcIiBbaW5saW5lXT1cImlubGluZVwiPlxuICAgICAgICA8ZGl2IGhlYWRlci1zdGFydC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xlZnQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGhlYWRlci1lbmQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyaWdodC1idXR0b25zXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGRpdiBmb290ZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJvdHRvbS1hcmVhXVwiPjwvbmctY29udGVudD4gICAgICAgICAgICAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgZm9vdGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0LWJvdHRvbS1hcmVhXVwiPjwvbmctY29udGVudD4gICAgIFxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDxwZXAtbGlzdC1hY3Rpb25zICpuZ0lmPVwibWVudUFjdGlvbnMubGVuZ3RoID4gMFwiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiIFthY3Rpb25zXT1cIm1lbnVBY3Rpb25zXCJcbiAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkl0ZW1DbGlja2VkKCRldmVudClcIj48L3BlcC1saXN0LWFjdGlvbnM+XG4gICAgICAgIDxwZXAtbGlzdC10b3RhbCBbc2l6ZVR5cGVdPVwiaW5saW5lID8gJ3NtJyA6ICdtZCdcIiBbdG90YWxSb3dzXT1cInRvdGFsUm93Q291bnRcIj5cbiAgICAgICAgPC9wZXAtbGlzdC10b3RhbD5cbiAgICAgICAgPHBlcC1zZWFyY2ggI3NlYXJjaCAqbmdJZj1cInNob3dTZWFyY2hcIiBbdmFsdWVdPVwic2VhcmNoU3RyaW5nXCIgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCJcbiAgICAgICAgICAgIChzZWFyY2gpPVwib25TZWFyY2hDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc2VhcmNoPlxuICAgIDwvcGVwLXRvcC1iYXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NtYXJ0RmlsdGVyVGVtcGxhdGU+ICAgIFxuICAgIDxwZXAtc2lkZS1iYXIgI3NpZGVOYXYgW25nQ2xhc3NdPVwieydzbWFydC1maWx0ZXItYXJlYSc6IGlubGluZX1cIj4gXG4gICAgICAgIDxwZXAtc21hcnQtZmlsdGVycyBbdGl0bGVdPVwic21hcnRGaWx0ZXJzLnRpdGxlXCIgW2ZpZWxkc109XCJzbWFydEZpbHRlcnMuZmllbGRzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cInNtYXJ0RmlsdGVycy5kYXRhXCIgKGZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc21hcnQtZmlsdGVycz5cbiAgICA8L3BlcC1zaWRlLWJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRDcnVtYnNUZW1wbGF0ZT5cbiAgICA8cGVwLWJyZWFkLWNydW1icyBjbGFzcz1cImJyZWFkLWNydW1ic1wiIFtpdGVtc109XCJicmVhZENydW1ic0l0ZW1zXCIgW2FkZFNwYWNpbmddPVwidHJ1ZVwiIFtkaXNwbGF5VHlwZV09XCInaXRlbXMnXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soJGV2ZW50KVwiPjwvcGVwLWJyZWFkLWNydW1icz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS10aXRsZVwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS1kZXNjclwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfc2tpbnlcIiBjbGFzcz1cImxlYWYtc2tpbnlcIj48L3BlcC1pY29uPlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfcm91bmRcIiBjbGFzcz1cImxlYWYtcm91bmRcIj48L3BlcC1pY29uPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtc2tpbnlcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9za2lueVwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtcm91bmRcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9yb3VuZFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0VtcHR5U3RhdGVcIiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcExpc3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb3NpdGUtbGliL2dlbmVyaWMtbGlzdC9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZ2VuZXJpYy1saXN0L2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUlILE9BQU8sRUFDUCxTQUFTLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFFSCxnQkFBZ0IsRUFJaEIsaUJBQWlCLEVBS3BCLE1BQU0sOEJBQThCLENBQUM7QUF5QnRDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQWMvRCxNQUFNLE9BQU8sb0JBQW9CO0lBNEo3QixZQUNZLHFCQUE4QyxFQUM5QyxjQUFnQyxFQUNoQyxjQUFnQyxFQUNoQyxVQUE0QixFQUM1QixtQkFBMEMsRUFDMUMsZUFBa0M7UUFMbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtRQUM5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBeEp0QyxnQkFB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S0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsbUJBQW1CO3NCQURsQixNQUFNO2dCQUlQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQZXBEYXRhQ29udmVydG9yU2VydmljZSxcbiAgICBQZXBMYXlvdXRTZXJ2aWNlLFxuICAgIE9iamVjdHNEYXRhUm93LFxuICAgIFBlcEd1aWQsXG4gICAgVUlDb250cm9sLFxuICAgIFBlcExvYWRlclNlcnZpY2UsXG4gICAgUGVwUm93RGF0YSxcbiAgICBQZXBTZXNzaW9uU2VydmljZVxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRDbGlja0V2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcExpc3RDb21wb25lbnQsXG4gICAgUGVwU2VsZWN0aW9uRGF0YSxcbiAgICBJUGVwTGlzdExvYWRQYWdlRXZlbnQsXG4gICAgUGVwTGlzdFNlbGVjdGlvblR5cGUsXG4gICAgSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQsXG4gICAgREVGQVVMVF9QQUdFX1NJWkUsXG4gICAgSVBlcExpc3RMb2FkSXRlbXNFdmVudCxcbiAgICBQZXBMaXN0VGFibGVWaWV3VHlwZSxcbiAgICBJUGVwTGlzdFNvcnRpbmdEYXRhLFxuICAgIElQZXBMaXN0U3RhcnRJbmRleENoYW5nZUV2ZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2xpc3QnO1xuaW1wb3J0IHtcbiAgICBQZXBNZW51SXRlbSxcbiAgICBJUGVwTWVudUl0ZW1DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9tZW51JztcbmltcG9ydCB7IElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZm9ybSc7XG5pbXBvcnQge1xuICAgIFBlcEJyZWFkQ3J1bWJJdGVtLFxuICAgIElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnRcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvYnJlYWQtY3J1bWJzJztcbmltcG9ydCB7IElQZXBTZWFyY2hDbGlja0V2ZW50LCBQZXBTZWFyY2hDb21wb25lbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zZWFyY2gnO1xuXG5pbXBvcnQge1xuICAgIERhdGFWaWV3LFxuICAgIEdyaWREYXRhVmlld1xufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RJbml0RGF0YSxcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlLFxuICAgIElQZXBHZW5lcmljTGlzdFBhZ2VyLFxuICAgIElQZXBHZW5lcmljTGlzdEFjdGlvbnMsXG4gICAgSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIsXG4gICAgSVBlcFNtYXJ0RmlsdGVycyxcbiAgICBJUGVwR2VuZXJpY0xpc3RFbXB0eVN0YXRlXG59IGZyb20gJy4vZ2VuZXJpYy1saXN0Lm1vZGVsJztcbmltcG9ydCB7IFBlcEdlbmVyaWNMaXN0U2VydmljZSB9IGZyb20gJy4vZ2VuZXJpYy1saXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVZpZXdDb252ZXJ0ZXIgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvZGF0YS12aWV3cyc7XG5pbXBvcnQge1xuICAgIElQZXBTbWFydEZpbHRlckRhdGEsXG4gICAgUGVwU21hcnRGaWx0ZXJCYXNlRmllbGQsXG4gICAgUGVwU21hcnRGaWx0ZXJzQ29tcG9uZW50XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3NtYXJ0LWZpbHRlcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdlbmVyaWMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5zY3NzJywgJy4vZ2VuZXJpYy1saXN0LmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbUGVwR2VuZXJpY0xpc3RTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoJykgc2VhcmNoOiBQZXBTZWFyY2hDb21wb25lbnQgfCB1bmRlZmluZWQ7XG4gICAgQFZpZXdDaGlsZCgnc21hcnRGaWx0ZXJzQ29tcG9uZW50Jykgc21hcnRGaWx0ZXJzQ29tcG9uZW50OiBQZXBTbWFydEZpbHRlcnNDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIF9wZXBMaXN0Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuICAgIEBWaWV3Q2hpbGQoJ3BlcExpc3RDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICBzZXQgcGVwTGlzdENvbnRhaW5lcih2YWw6IFZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lciA9IHZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kYXRhU291cmNlOiBJUGVwR2VuZXJpY0xpc3REYXRhU291cmNlID0ge1xuICAgICAgICBpbml0OiBhc3luYyAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0YVZpZXc6IHtcbiAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0dyaWQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiAtMSxcbiAgICAgICAgICAgICAgICBpdGVtczogW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhU291cmNlKHZhbDogSVBlcEdlbmVyaWNMaXN0RGF0YVNvdXJjZSkge1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlID0gdmFsO1xuICAgICAgICB0aGlzLl9zb3J0aW5nID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmluaXRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0U21hcnRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5pbml0TGlzdCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgYWN0aW9uczogSVBlcEdlbmVyaWNMaXN0QWN0aW9ucyA9IHtcbiAgICAgICAgZ2V0OiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBASW5wdXQoKVxuICAgIHV1aWRNYXBwaW5nID0gJ2tleSc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFkZFBhZGRpbmcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGl0bGUgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZGVzY3JpcHRpb24gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgaW5saW5lID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbm9EYXRhRm91bmRNc2cgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZW1wdHlTdGF0ZTogSVBlcEdlbmVyaWNMaXN0RW1wdHlTdGF0ZSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0aW9uVHlwZTogUGVwTGlzdFNlbGVjdGlvblR5cGUgPSAnbXVsdGknO1xuXG4gICAgQElucHV0KClcbiAgICBzdXBwb3J0U29ydGluZyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdEYXRhIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBjYWNoZVNpemUgPSAtMTtcblxuICAgIEBJbnB1dCgpXG4gICAgaGlkZVNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgcGFnZXI6IElQZXBHZW5lcmljTGlzdFBhZ2VyID0ge1xuICAgICAgICB0eXBlOiAnc2Nyb2xsJ1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgdGFibGVWaWV3VHlwZTogUGVwTGlzdFRhYmxlVmlld1R5cGUgPSAncmVndWxhcic7XG5cbiAgICBASW5wdXQoKVxuICAgIHplYnJhU3RyaXBlcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgc21hcnRGaWx0ZXIodmFsOiBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcikge1xuICAgICAgICB0aGlzLnNtYXJ0RmlsdGVycyA9IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlcih2YWwpO1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IHRoaXMuc21hcnRGaWx0ZXJzLmRhdGEgfHwgW107XG4gICAgICAgIHRoaXMuc2hvd1NtYXJ0RmlsdGVyID0gdGhpcy5zbWFydEZpbHRlcnMuZmllbGRzLmxlbmd0aCA+IDA7IFxuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RvcEJhciA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBicmVhZENydW1ic0l0ZW1zOiBQZXBCcmVhZENydW1iSXRlbVtdID0gbmV3IEFycmF5PFBlcEJyZWFkQ3J1bWJJdGVtPigpO1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RBbGwgPSBmYWxzZVxuXG4gICAgQElucHV0KClcbiAgICBzY3JvbGxQb3NpdGlvbiA9IDBcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBGb3JtRmllbGRWYWx1ZUNoYW5nZUV2ZW50PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYnJlYWRDcnVtYkl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEJyZWFkQ3J1bWJJdGVtQ2xpY2tFdmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHN0YXJ0SW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBMaXN0U3RhcnRJbmRleENoYW5nZUV2ZW50PigpXG5cbiAgICBAT3V0cHV0KClcbiAgICBsaXN0TG9hZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgc2V0IHBlcExpc3QodmFsOiBQZXBMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuX3BlcExpc3QgPSB2YWw7XG4gICAgfVxuXG4gICAgZ2V0IHBlcExpc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Jlc2l6ZSQ6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIF9sb2FkZXIkOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBwcml2YXRlIF9kYXRhVmlldzogRGF0YVZpZXcgPSB7XG4gICAgICAgIFR5cGU6ICdHcmlkJ1xuICAgIH07XG4gICAgcHJpdmF0ZSBfcGVwTGlzdDogYW55O1xuICAgIG9uTG9hZCA9IHRydWU7XG4gICAgbGlzdElucHV0czogYW55O1xuICAgIHRvdGFsUm93Q291bnQgPSAtMTtcbiAgICBzZWFyY2hTdHJpbmcgPSAnJztcbiAgICBzaG93U21hcnRGaWx0ZXIgPSBmYWxzZTtcbiAgICBzaG93RW1wdHlTdGF0ZSA9IGZhbHNlO1xuICAgIHNtYXJ0RmlsdGVyczogSVBlcFNtYXJ0RmlsdGVycyA9IHtcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgZGF0YTogW10sXG4gICAgICAgIHRpdGxlOiAnRmlsdGVycydcbiAgICB9O1xuICAgIHByaXZhdGUgX2FwcGxpZWRGaWx0ZXJzOiBJUGVwU21hcnRGaWx0ZXJEYXRhW10gPSBbXTtcbiAgICBwcml2YXRlIF9zb3J0aW5nOiBJUGVwTGlzdFNvcnRpbmdDaGFuZ2VFdmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIG1lbnVIYW5kbGVyczogeyBba2V5OiBzdHJpbmddOiAob2JqOiBhbnkpID0+IFByb21pc2U8dm9pZD4gfSA9IHt9O1xuICAgIG1lbnVBY3Rpb25zOiBBcnJheTxQZXBNZW51SXRlbT4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9kYXRhQ29udmVydG9yU2VydmljZTogUGVwRGF0YUNvbnZlcnRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2xvYWRlclNlcnZpY2U6IFBlcExvYWRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZ2VuZXJpY0xpc3RTZXJ2aWNlOiBQZXBHZW5lcmljTGlzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3Nlc3Npb25TZXJ2aWNlOiBQZXBTZXNzaW9uU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl9yZXNpemUkID0gdGhpcy5fbGF5b3V0U2VydmljZS5vblJlc2l6ZSQucGlwZSgpLnN1YnNjcmliZSgoc2l6ZSkgPT4geyAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gICAgICAgICAgICBcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2xvYWRlciQgPSB0aGlzLl9sb2FkZXJTZXJ2aWNlLm9uQ2hhbmdlZCQuc3Vic2NyaWJlKChzdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdExpc3QoKSB7XG4gICAgICAgIHRoaXMub25Mb2FkID0gdHJ1ZTtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7IC8vbWFraW5nIHN1cmUgYWxsIGlucHV0IGRhdGEgaXMgYXZhaWxhYmxlXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIC8vbWVyZ2Ugc2VsZWN0b3IgaW5wdXRzIHdpdGggY2FsbGJhY2sgaW5wdXRzXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkVGFibGVJbnB1dHMoKTtcblxuICAgICAgICAgICAgICAgIGxldCBmcm9tSW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGxldCB0b0luZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICBmcm9tSW5kZXggPSB0aGlzLmxpc3RJbnB1dHMucGFnZXIuc2l6ZSAqIHRoaXMubGlzdElucHV0cy5wYWdlci5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdG9JbmRleCA9IGZyb21JbmRleCArICh0aGlzLmxpc3RJbnB1dHMucGFnZXIuc2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRSkgLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvSW5kZXggPSAxMDA7Ly9UTyBETyAtIGdldCB2YWx1ZSBmcm9tIC0gdGhpcy5jdXN0b21MaXN0LmdldFRvcEl0ZW1zKClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sb2FkRGF0YShmcm9tSW5kZXgsIHRvSW5kZXgpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHM/LmVtcHR5U3RhdGU/LnNob3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRFbXB0eVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMub25Mb2FkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy9zaG93IGVtcHR5IHN0YXRlXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0VtcHR5U3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnR0VORVJJQ19MSVNULkVNUFRZX1NUQVRFLlRJVExFJykuc3Vic2NyaWJlKHRleHQgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSA9IHRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdHRU5FUklDX0xJU1QuRU1QVFlfU1RBVEUuREVTQ1JJUFRJT04nKS5zdWJzY3JpYmUodGV4dCA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdElucHV0cy5lbXB0eVN0YXRlLmRlc2NyaXB0aW9uID0gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZXBMaXN0Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVwTGlzdENvbnRhaW5lci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVwTGlzdENvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgUGVwTGlzdENvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KCdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9saXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9wZXBMaXN0Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChQZXBMaXN0Q29tcG9uZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXBMaXN0ID0gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uudmlld1R5cGUgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0TGlzdFZpZXdUeXBlKHRoaXMuX2RhdGFWaWV3LlR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnRhYmxlVmlld1R5cGUgPSB0aGlzLmxpc3RJbnB1dHMudGFibGVWaWV3VHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS56ZWJyYVN0cmlwZXMgPSB0aGlzLmxpc3RJbnB1dHMuemVicmFTdHJpcGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sb2NrSXRlbUlubmVyRXZlbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zdXBwb3J0U29ydGluZyA9IHRoaXMubGlzdElucHV0cy5zdXBwb3J0U29ydGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zb3J0aW5nID0gdGhpcy5saXN0SW5wdXRzLnNvcnRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2FjaGVTaXplID0gdGhpcy5saXN0SW5wdXRzLmNhY2hlU2l6ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGlvblR5cGVGb3JBY3Rpb25zID0gdGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuaGlkZUFsbFNlbGVjdGlvbkluTXVsdGkgPSB0aGlzLmxpc3RJbnB1dHMuaGlkZVNlbGVjdEFsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNob3dDYXJkU2VsZWN0aW9uID0gdGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlclR5cGUgPSB0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RJbnB1dHMucGFnZXIudHlwZSA9PT0gJ3BhZ2VzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5wYWdlU2l6ZSA9IHRoaXMubGlzdElucHV0cy5wYWdlcj8uc2l6ZSB8fCBERUZBVUxUX1BBR0VfU0laRTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UucGFnZUluZGV4ID0gdGhpcy5saXN0SW5wdXRzLnBhZ2VyPy5pbmRleCB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3Rpb25UeXBlID09IFwibXVsdGlcIiAmJiB0aGlzLnNlbGVjdEFsbCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KCdBbGxTZWxlY3RlZCcsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uubm9EYXRhRm91bmRNc2cgPSB0aGlzLmxpc3RJbnB1dHMubm9EYXRhRm91bmRNc2c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc3RhcnRJbmRleENoYW5nZS5zdWJzY3JpYmUoJGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0SW5kZXhDaGFuZ2UuZW1pdCgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkQ2xpY2suc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ3VzdG9taXplRmllbGRDbGljaygkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9hZEl0ZW1zLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkxvYWRJdGVtcygkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubG9hZFBhZ2Uuc3Vic2NyaWJlKCgkZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9hZFBhZ2UoJGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSgoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZCgkZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc29ydGluZ0NoYW5nZS5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Tb3J0aW5nQ2hhbmdlKCRldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5saXN0TG9hZC5zdWJzY3JpYmUoKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RlZEl0ZW1zQ2hhbmdlZCh0aGlzLl9wZXBMaXN0LnNlbGVjdGVkSXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTGlzdExvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlcnRlZExpc3Q6IE9iamVjdHNEYXRhUm93W10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aUNvbnRyb2wgPSB0aGlzLmdldFVpQ29udHJvbChEYXRhVmlld0NvbnZlcnRlci50b1VJQ29udHJvbERhdGEodGhpcy5fZGF0YVZpZXcpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0U2VsZWN0ZWRJZHMoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbml0TGlzdERhdGEodWlDb250cm9sLCB0aGlzLnRvdGFsUm93Q291bnQsIGNvbnZlcnRlZExpc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnNjcm9sbFRvSW5kZXgodGhpcy5zY3JvbGxQb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBsb2FkcyBpbnB1dHMgaW4gY2FzZSB0aGV5IGFyZSBwcm92aWRlZCBhbmQgbWVyZ2Ugd2l0aCBzZWxlY3RvciBpbnB1dHNcbiAgICAgKiBAcmV0dXJucyBtZXJnZWQgcGVwLWxpc3QgaW5wdXRzXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkVGFibGVJbnB1dHMoKSB7XG4gICAgICAgIHRoaXMubGlzdElucHV0cyA9IHtcbiAgICAgICAgICAgIHN1cHBvcnRTb3J0aW5nOiB0aGlzLnN1cHBvcnRTb3J0aW5nLFxuICAgICAgICAgICAgc29ydGluZzogdGhpcy5zb3J0aW5nLFxuICAgICAgICAgICAgY2FjaGVTaXplOiB0aGlzLmNhY2hlU2l6ZSxcbiAgICAgICAgICAgIGhpZGVTZWxlY3RBbGw6IHRoaXMuaGlkZVNlbGVjdEFsbCxcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6IHRoaXMuc2VsZWN0aW9uVHlwZSxcbiAgICAgICAgICAgIHBhZ2VyOiB0aGlzLnBhZ2VyLFxuICAgICAgICAgICAgbm9EYXRhRm91bmRNc2c6IHRoaXMubm9EYXRhRm91bmRNc2csXG4gICAgICAgICAgICB0YWJsZVZpZXdUeXBlOiB0aGlzLnRhYmxlVmlld1R5cGUsXG4gICAgICAgICAgICB6ZWJyYVN0cmlwZXM6IHRoaXMuemVicmFTdHJpcGVzLFxuICAgICAgICAgICAgZW1wdHlTdGF0ZTogdGhpcy5lbXB0eVN0YXRlLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiB0aGlzLnNlbGVjdEFsbFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGF0YVNvdXJjZS5pbnB1dHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuX2RhdGFTb3VyY2UuaW5wdXRzKS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmhhc1Byb3BlcnR5KHRoaXMubGlzdElucHV0cywgaXRlbVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SW5wdXRzW2l0ZW1bMF1dID0gaXRlbVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRldGVtaW5lcyB3aGV0aGVyIGVtcHR5IHN0YXRlIGlzIHRvIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RW1wdHlTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zaG93RW1wdHlTdGF0ZSA9IHRoaXMudG90YWxSb3dDb3VudCA9PT0gMCAmJlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPT09ICcnICYmXG4gICAgICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRVaUNvbnRyb2woZGF0YTogYW55KTogVUlDb250cm9sIHtcbiAgICAgICAgY29uc3QgdWlDb250cm9sID0gbmV3IFVJQ29udHJvbCgpO1xuICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IFtdO1xuXG4gICAgICAgIGlmIChkYXRhPy5Db250cm9sRmllbGRzKSB7XG4gICAgICAgICAgICB1aUNvbnRyb2wuQ29udHJvbEZpZWxkcyA9IGRhdGEuQ29udHJvbEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9VaUNvbnRyb2xGaWVsZChmaWVsZCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVpQ29udHJvbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNZW51SXRlbXMoKTogdm9pZCB7IC8vVE9ET1xuICAgICAgICBpZiAodGhpcy5saXN0SW5wdXRzLnNlbGVjdGlvblR5cGUgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5nZXRNZW51QWN0aW9ucygpLnRoZW4oXG4gICAgICAgICAgICAgICAgeCA9PiB0aGlzLm1lbnVBY3Rpb25zID0geFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0TWVudUFjdGlvbnMoKTogUHJvbWlzZTxQZXBNZW51SXRlbVtdPiB7XG4gICAgICAgIGNvbnN0IHJlczogUGVwTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldE1lbnVPYmplY3RzKCk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5nZXQocmVzdWx0LmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZW51SGFuZGxlcnMgPSB7fTtcbiAgICAgICAgICAgIGFjdGlvbnM/LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9IFBlcEd1aWQubmV3R3VpZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW3V1aWRdID0gaXRlbS5oYW5kbGVyO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB1dWlkLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRpdGxlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWVudU9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IG1lbnVPYmplY3RzOiBhbnkgPSB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IG5ldyBQZXBTZWxlY3Rpb25EYXRhKClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5wZXBMaXN0KSB7XG4gICAgICAgICAgICBtZW51T2JqZWN0cy5zdWNjZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgIG1lbnVPYmplY3RzLmRhdGEgPSB0aGlzLnBlcExpc3QuZ2V0U2VsZWN0ZWRJdGVtc0RhdGEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZW51T2JqZWN0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoPy5pbml0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U21hcnRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2FwcGxpZWRGaWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuc21hcnRGaWx0ZXJzQ29tcG9uZW50Py5jbGVhckZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWREYXRhKGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpOiBQcm9taXNlPFBlcFJvd0RhdGFbXT4ge1xuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgbGV0IGNvbnZlcmVkRGF0YTogUGVwUm93RGF0YVtdID0gW107XG4gICAgICAgIGNvbnN0IGRhdGE6IElQZXBHZW5lcmljTGlzdEluaXREYXRhID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS5pbml0KHtcbiAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5fYXBwbGllZEZpbHRlcnMubGVuZ3RoID8gdGhpcy5fYXBwbGllZEZpbHRlcnMgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb3J0aW5nOiB0aGlzLl9zb3J0aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgdG9JbmRleDogdG9JbmRleFxuICAgICAgICB9KTsgICAgICAgIFxuICAgICAgICB0aGlzLl9sb2FkZXJTZXJ2aWNlLmhpZGUoKTtcblxuICAgICAgICAvLyBTZXQgdGhlIHRvdGFsIGNvdW50XG4gICAgICAgIHRoaXMudG90YWxSb3dDb3VudCA9IGRhdGE/LnRvdGFsQ291bnQgfHwgMDtcblxuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVZpZXcgPSBkYXRhLmRhdGFWaWV3O1xuXG4gICAgICAgICAgICBpZiAoZGF0YS5pdGVtcz8ubGVuZ3RoID4gMCAmJiAhZGF0YS5pc1BlcFJvd0RhdGEpIHsgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgY29udmVyZWREYXRhID0gZGF0YS5pdGVtcy5tYXAoaXRlbSA9PiB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuY29udmVydFRvUGVwUm93RGF0YShpdGVtLCBkYXRhLmRhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udmVyZWREYXRhO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBhc3luYyB1cGRhdGVEYXRhTGlzdChmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBwYWdlSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFByb21pc2U8UGVwUm93RGF0YVtdPiB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhU291cmNlLnVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5zaG93KCk7XG4gICAgICAgICAgICBsZXQgY29udmVyZWREYXRhOiBQZXBSb3dEYXRhW10gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMaXN0ID0gYXdhaXQgdGhpcy5fZGF0YVNvdXJjZS51cGRhdGUoe1xuICAgICAgICAgICAgICAgIHNlYXJjaFN0cmluZzogdGhpcy5zZWFyY2hTdHJpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZpbHRlcnM6IHRoaXMuX2FwcGxpZWRGaWx0ZXJzLmxlbmd0aCA/IHRoaXMuX2FwcGxpZWRGaWx0ZXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNvcnRpbmc6IHRoaXMuX3NvcnRpbmcgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGZyb21JbmRleDogZnJvbUluZGV4LFxuICAgICAgICAgICAgICAgIHRvSW5kZXg6IHRvSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyU2VydmljZS5oaWRlKCk7XG5cbiAgICAgICAgICAgIGlmIChkYXRhTGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnZlcmVkRGF0YSA9IGRhdGFMaXN0Lm1hcChpdGVtID0+IHRoaXMuX2dlbmVyaWNMaXN0U2VydmljZS5jb252ZXJ0VG9QZXBSb3dEYXRhKGl0ZW0sIHRoaXMuX2RhdGFWaWV3LCB0aGlzLnV1aWRNYXBwaW5nKSk7XG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcmVkRGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHZpcnR1YWwgc2Nyb2xsIGl0ZW1zIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRJdGVtcyhldmVudDogSVBlcExpc3RMb2FkSXRlbXNFdmVudCkge1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChldmVudC5mcm9tSW5kZXgsIGV2ZW50LnRvSW5kZXgpO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRMaXN0ID0gdGhpcy5fZGF0YUNvbnZlcnRvclNlcnZpY2UuY29udmVydExpc3REYXRhKGxpc3QpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5fZ2VuZXJpY0xpc3RTZXJ2aWNlLmdldFNlbGVjdGVkSXRlbXMoY29udmVydGVkTGlzdCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVwTGlzdC5zZXRTZWxlY3RlZElkcyhzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBlcExpc3QudXBkYXRlSXRlbXMoY29udmVydGVkTGlzdCwgZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGxvYWRzIHBhZ2luZyBidWxrIGZyb20gYXBpXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBvbkxvYWRQYWdlKGV2ZW50OiBJUGVwTGlzdExvYWRQYWdlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgZnJvbUluZGV4ID0gZXZlbnQucGFnZUluZGV4ICogZXZlbnQucGFnZVNpemU7XG4gICAgICAgIGNvbnN0IHRvSW5kZXggPSBNYXRoLm1pbihmcm9tSW5kZXggKyBldmVudC5wYWdlU2l6ZSAtIDEsIHRoaXMudG90YWxSb3dDb3VudCAtIDEpO1xuICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy51cGRhdGVEYXRhTGlzdChmcm9tSW5kZXgsIHRvSW5kZXgsIGV2ZW50LnBhZ2VJbmRleCk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZExpc3QgPSB0aGlzLl9kYXRhQ29udmVydG9yU2VydmljZS5jb252ZXJ0TGlzdERhdGEobGlzdCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLl9nZW5lcmljTGlzdFNlcnZpY2UuZ2V0U2VsZWN0ZWRJdGVtcyhjb252ZXJ0ZWRMaXN0KTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXBMaXN0LnNldFNlbGVjdGVkSWRzKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVwTGlzdC51cGRhdGVQYWdlKGNvbnZlcnRlZExpc3QsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXRJdGVtQnlJZChpZDogc3RyaW5nKTogT2JqZWN0c0RhdGFSb3cgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucGVwTGlzdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BlcExpc3QuZ2V0SXRlbURhdGFCeUlEKGlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcygpOiBQZXBTZWxlY3Rpb25EYXRhIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnBlcExpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXBMaXN0LmdldFNlbGVjdGVkSXRlbXNEYXRhKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhZ2VJbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVwTGlzdC5wYWdlSW5kZXg7XG4gICAgfVxuXG4gICAgb25BY3Rpb25JdGVtQ2xpY2tlZChhY3Rpb246IElQZXBNZW51SXRlbUNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRNZW51T2JqZWN0cygpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubWVudUhhbmRsZXJzW2FjdGlvbi5zb3VyY2Uua2V5XShyZXN1bHQuZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlYXJjaENoYW5nZWQoZXZlbnQ6IElQZXBTZWFyY2hDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gZXZlbnQudmFsdWU7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkSXRlbXNDaGFuZ2VkKHNlbGVjdGVkUm93c0NvdW50OiBudW1iZXIpIHtcbiAgICAgICAgLy9sb2FkaW5nIG1lbnUgaXRlbXMgYWZ0ZXIgcGVwLWxpc3Qgc2VsZWN0ZWQgaXRlbXMgYXJlIHVwZGF0ZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNZW51SXRlbXMoKTtcbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgb25DdXN0b21pemVGaWVsZENsaWNrKGZpZWxkQ2xpY2tFdmVudDogSVBlcEZvcm1GaWVsZENsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5maWVsZENsaWNrLmVtaXQoZmllbGRDbGlja0V2ZW50KTtcbiAgICB9XG5cbiAgICBvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soZXZlbnQ6IElQZXBCcmVhZENydW1iSXRlbUNsaWNrRXZlbnQpIHtcbiAgICAgICAgdGhpcy5icmVhZENydW1iSXRlbUNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2VkKGV2ZW50OiBJUGVwRm9ybUZpZWxkVmFsdWVDaGFuZ2VFdmVudCkge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uU29ydGluZ0NoYW5nZShldmVudDogSVBlcExpc3RTb3J0aW5nQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fc29ydGluZyA9IGV2ZW50O1xuICAgICAgICB0aGlzLmluaXRMaXN0KCk7XG4gICAgfVxuXG4gICAgb25GaWx0ZXJzQ2hhbmdlKGZpbHRlcnM6IElQZXBTbWFydEZpbHRlckRhdGFbXSkge1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IGZpbHRlcnM7XG4gICAgICAgIHRoaXMuaW5pdExpc3QoKTtcbiAgICB9XG5cbiAgICBvbkxpc3RMb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxpc3RMb2FkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc2l6ZSQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbG9hZGVyJCkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGVyJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8ZGl2ICpuZ0lmPVwiaW5saW5lXCIgY2xhc3M9XCJpbmxpbmUtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyAnYWRkLXBhZGRpbmcnOiBhZGRQYWRkaW5nLCAnd2l0aC1zbWFydC1maWx0ZXJzJzogc2hvd1NtYXJ0RmlsdGVyIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFyZWFcIiA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VG9wQmFyXCIgY2xhc3M9XCJpbmxpbmUtdG9wLWJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1kZXNjcmlwdGlvblwiPnt7ZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzSXRlbXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnJlYWRDcnVtYnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvbkxvYWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48cGVwLXBhZ2UtbGF5b3V0ICpuZ0lmPVwiIWlubGluZVwiIGNsYXNzPVwibm9uZS1pbmxpbmVcIiBbYWRkUGFkZGluZ109XCJhZGRQYWRkaW5nXCIgW3Nob3dTaGFkb3ddPVwic2hvd1NtYXJ0RmlsdGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dTbWFydEZpbHRlclwiIHBlcC1zaWRlLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzbWFydEZpbHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3BCYXJcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BCYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdGlvblwiIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZGVzY3JpcHRpb25cIj57e2Rlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRDcnVtYnNJdGVtcy5sZW5ndGhcIiBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJicmVhZENydW1ic1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cIiFvbkxvYWRcIiBwZXAtbWFpbi1hcmVhIGNsYXNzPVwibWFpbi1hcmVhLWNvbnRhaW5lclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L3BlcC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICN0b3BCYXJUZW1wbGF0ZT5cbiAgICA8cGVwLXRvcC1iYXIgW3RpdGxlXT1cInRpdGxlXCIgW2lubGluZV09XCJpbmxpbmVcIj5cbiAgICAgICAgPGRpdiBoZWFkZXItc3RhcnQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsZWZ0LWJ1dHRvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcmlnaHQtYnV0dG9uc11cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgZm9vdGVyLXN0YXJ0LWNvbnRlbnQ+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICAgICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZvb3Rlci1lbmQtY29udGVudD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltyaWdodC1ib3R0b20tYXJlYV1cIj48L25nLWNvbnRlbnQ+ICAgICBcbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8cGVwLWxpc3QtYWN0aW9ucyAqbmdJZj1cIm1lbnVBY3Rpb25zLmxlbmd0aCA+IDBcIiBbc2l6ZVR5cGVdPVwiaW5saW5lID8gJ3NtJyA6ICdtZCdcIiBbYWN0aW9uc109XCJtZW51QWN0aW9uc1wiXG4gICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb25JdGVtQ2xpY2tlZCgkZXZlbnQpXCI+PC9wZXAtbGlzdC1hY3Rpb25zPlxuICAgICAgICA8cGVwLWxpc3QtdG90YWwgW3NpemVUeXBlXT1cImlubGluZSA/ICdzbScgOiAnbWQnXCIgW3RvdGFsUm93c109XCJ0b3RhbFJvd0NvdW50XCI+XG4gICAgICAgIDwvcGVwLWxpc3QtdG90YWw+XG4gICAgICAgIDxwZXAtc2VhcmNoICNzZWFyY2ggKm5nSWY9XCJzaG93U2VhcmNoXCIgW3ZhbHVlXT1cInNlYXJjaFN0cmluZ1wiIFtzaXplVHlwZV09XCJpbmxpbmUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAoc2VhcmNoKT1cIm9uU2VhcmNoQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvcGVwLXNlYXJjaD5cbiAgICA8L3BlcC10b3AtYmFyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzbWFydEZpbHRlclRlbXBsYXRlPiAgICBcbiAgICA8cGVwLXNpZGUtYmFyICNzaWRlTmF2IFtuZ0NsYXNzXT1cInsnc21hcnQtZmlsdGVyLWFyZWEnOiBpbmxpbmV9XCI+IFxuICAgICAgICA8cGVwLXNtYXJ0LWZpbHRlcnMgI3NtYXJ0RmlsdGVyc0NvbXBvbmVudCBbdGl0bGVdPVwic21hcnRGaWx0ZXJzLnRpdGxlXCIgW2ZpZWxkc109XCJzbWFydEZpbHRlcnMuZmllbGRzXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cInNtYXJ0RmlsdGVycy5kYXRhXCIgKGZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPC9wZXAtc21hcnQtZmlsdGVycz5cbiAgICA8L3BlcC1zaWRlLWJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnJlYWRDcnVtYnNUZW1wbGF0ZT5cbiAgICA8cGVwLWJyZWFkLWNydW1icyBjbGFzcz1cImJyZWFkLWNydW1ic1wiIFtpdGVtc109XCJicmVhZENydW1ic0l0ZW1zXCIgW2FkZFNwYWNpbmddPVwidHJ1ZVwiIFtkaXNwbGF5VHlwZV09XCInaXRlbXMnXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkJyZWFkQ3J1bWJJdGVtQ2xpY2soJGV2ZW50KVwiPjwvcGVwLWJyZWFkLWNydW1icz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93RW1wdHlTdGF0ZVwiIGNsYXNzPVwibGlzdC1lbXB0eS1zdGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS10aXRsZVwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS50aXRsZSB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1lbXB0eS1kZXNjclwiPnt7IGxpc3RJbnB1dHMuZW1wdHlTdGF0ZS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfc2tpbnlcIiBjbGFzcz1cImxlYWYtc2tpbnlcIj48L3BlcC1pY29uPlxuICAgICAgICA8cGVwLWljb24gbmFtZT1cImxlYWZfcm91bmRcIiBjbGFzcz1cImxlYWYtcm91bmRcIj48L3BlcC1pY29uPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtc2tpbnlcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9za2lueVwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cImxlYWYtcm91bmRcIj5cbiAgICAgICAgICAgIDxwZXAtaWNvbiBuYW1lPVwibGVhZl9yb3VuZFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+IC0tPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0VtcHR5U3RhdGVcIiBjbGFzcz1cImxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3BlcExpc3RDb250YWluZXI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -124,11 +124,15 @@ export class PepGenericListService {
|
|
|
124
124
|
}
|
|
125
125
|
return smartFields;
|
|
126
126
|
}
|
|
127
|
+
// TODO: This func is copy from ngx-lib write it in one place.
|
|
128
|
+
getUniqItemId(itemId, itemType = '') {
|
|
129
|
+
return itemId + ',' + itemType;
|
|
130
|
+
}
|
|
127
131
|
getSelectedItems(items) {
|
|
128
132
|
const selectedItems = [];
|
|
129
133
|
for (let i = 0; i < items.length; i++) {
|
|
130
134
|
if (items[i].IsSelected) {
|
|
131
|
-
selectedItems.push(items[i].UID);
|
|
135
|
+
selectedItems.push(this.getUniqItemId(items[i].UID, items[i].Type?.toString()));
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
138
|
return selectedItems;
|
|
@@ -139,4 +143,4 @@ PepGenericListService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
|
|
|
139
143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGenericListService, decorators: [{
|
|
140
144
|
type: Injectable
|
|
141
145
|
}], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.PepQueryBuilderService }]; } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWxpc3QvZ2VuZXJpYy1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkzQyxPQUFPLEVBQ0gsVUFBVSxFQUViLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBR3pHLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFDWSxVQUE0QixFQUM1QixvQkFBNEM7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUVwRCxFQUFFO0lBQ04sQ0FBQztJQUVEOzs7OztLQUtDO0lBQ0QsV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2hDLFFBQVEsWUFBWSxFQUFFO1lBQ2xCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxPQUFPLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sT0FBTyxDQUFDO1lBQ25CO2dCQUNJLE9BQU8sT0FBTyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsV0FBbUI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLFVBQWUsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxXQUFXLENB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QTBCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkYsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7WUFDM0IsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBdUI7UUFDcEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtnQkFDckIsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEM7U0FDSjtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7O2tIQWpKUSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcixcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkLFxuICAgIElQZXBTbWFydEZpbHRlcnNcbn0gZnJvbSAnLi9nZW5lcmljLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtcbiAgICBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCxcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbWFydC1maWx0ZXJzJztcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlcnZpY2UsIElQZXBRdWVyeUJ1aWxkZXJGaWVsZCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgICBQZXBSb3dEYXRhLFxuICAgIE9iamVjdHNEYXRhUm93XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IEdyaWREYXRhVmlld0ZpZWxkLCBEYXRhVmlld0ZpZWxkVHlwZXMgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuXG5ASW5qZWN0YWJsZSgpIFxuZXhwb3J0IGNsYXNzIFBlcEdlbmVyaWNMaXN0U2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9xdWVyeUJ1aWxkZXJTZXJ2aWNlOiBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAqIEBwYXJhbSBvYmogb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICAgIGhhc1Byb3BlcnR5KG9iajogYW55LCBwcm9wOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIGdldExpc3RWaWV3VHlwZShkYXRhVmlld1R5cGU6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKGRhdGFWaWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnR3JpZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0YWJsZSc7XG4gICAgICAgICAgICBjYXNlICdDYXJkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NhcmRzJztcbiAgICAgICAgICAgIGNhc2UgJ0xpbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGluZXMnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RhYmxlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbTogYW55LCBkYXRhVmlldzogYW55LCB1dWlkTWFwcGluZzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ldyBQZXBSb3dEYXRhKCk7XG4gICAgICAgIGxldCBpdGVtRmllbGRzOiBhbnk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoaXRlbSwgJ2ZpZWxkcycpICYmIHR5cGVvZiBpdGVtLmZpZWxkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtLmZpZWxkcztcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzU2VsZWN0YWJsZUZvckFjdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzU2VsZWN0YWJsZUZvckFjdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgJiYgaXRlbS5pc1NlbGVjdGFibGVGb3JBY3Rpb25zICYmIGl0ZW0uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJvdy5Jc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93LlVVSUQgPSBpdGVtRmllbGRzW3V1aWRNYXBwaW5nXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJvdy5GaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAoZGF0YVZpZXc/LkZpZWxkcyAmJiBkYXRhVmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVZpZXcuRmllbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZGF0YVZpZXcuRmllbGRzW2luZGV4XSBhcyBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkO1xuICAgICAgICAgICAgICAgIHJvdy5GaWVsZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkZpZWxkSUQsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSA/IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGZpZWxkLlRpdGxlKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBYQWxpZ25tZW50OiAxLFxuICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZTogKGl0ZW1GaWVsZHNbZmllbGQuRmllbGRJRF0gfHwgJycpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiAoaXRlbUZpZWxkc1tmaWVsZC5GaWVsZElEXSB8fCAnJykudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGRhdGFWaWV3LkNvbHVtbnNbaW5kZXhdPy5XaWR0aCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxWYWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlcyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlOiBEYXRhVmlld0ZpZWxkVHlwZXNbZmllbGQuVHlwZV0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seSxcbiAgICAgICAgICAgICAgICAgICAgRW5hYmxlZDogIWZpZWxkLlJlYWRPbmx5XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIGNvbnZlcnRUb1VpQ29udHJvbEZpZWxkKGZpZWxkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkFwaU5hbWUsXG4gICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLkZpZWxkVHlwZSxcbiAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSxcbiAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seUZpZWxkLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGZpZWxkLkNvbHVtbldpZHRoLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGhUeXBlOiAxLFxuICAgICAgICAgICAgTGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgWDogZmllbGQuTGF5b3V0LlgsXG4gICAgICAgICAgICAgICAgWTogZmllbGQuTGF5b3V0LlksXG4gICAgICAgICAgICAgICAgV2lkdGg6IGZpZWxkLkxheW91dC5XaWR0aCxcbiAgICAgICAgICAgICAgICBIZWlnaHQ6IGZpZWxkLkxheW91dC5GaWVsZF9IZWlnaHQsXG4gICAgICAgICAgICAgICAgWEFsaWdubWVudDogZmllbGQuTGF5b3V0LnhBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgWUFsaWdubWVudDogZmllbGQuTGF5b3V0LnlBbGlnbm1lbnQsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb252ZXJ0VG9TbWFydEZpbHRlcihpbnB1dDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHsgICAgICAgIFxuICAgICAgICBjb25zdCBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhVmlldykge1xuICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5maWVsZHMgPSB0aGlzLmNyZWF0ZVNtYXJ0RmlsdGVyRmllbGRzKGlucHV0LmRhdGFWaWV3KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5kYXRhID0gaW5wdXQuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBzbWFydEZpbHRlcnMudGl0bGUgPSBpbnB1dC50aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzbWFydEZpbHRlcnM7ICAgICAgICBcbiAgICB9XG5cbiAgICBjcmVhdGVTbWFydEZpbHRlckZpZWxkcyhkYXRhVmlldzogYW55KSB7XG4gICAgICAgIGxldCBzbWFydEZpZWxkczogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGRbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGRhdGFWaWV3LkZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgRmllbGRJRDogZmllbGQuRmllbGRJRCxcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLlR5cGUsXG4gICAgICAgICAgICAgICAgVGl0bGU6IGZpZWxkLlRpdGxlLFxuICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlc1xuICAgICAgICAgICAgfSBhcyBJUGVwUXVlcnlCdWlsZGVyRmllbGRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNtYXJ0RmlsdGVyZmllbGRzID0gdGhpcy5fcXVlcnlCdWlsZGVyU2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlckZpZWxkcyhmaWVsZHMpO1xuICAgICAgICBpZiAoc21hcnRGaWx0ZXJmaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgc21hcnRGaWVsZHMgPSBzbWFydEZpbHRlcmZpZWxkcy5tYXAoKGZpZWxkID0+IGZpZWxkLnNtYXJ0KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc21hcnRGaWVsZHM7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcyhpdGVtczogT2JqZWN0c0RhdGFSb3dbXSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLklzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbXNbaV0uVUlEKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zO1xuICAgIH1cblxuXG59Il19
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWxpc3QvZ2VuZXJpYy1saXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkzQyxPQUFPLEVBQ0gsVUFBVSxFQUViLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBR3pHLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFDWSxVQUE0QixFQUM1QixvQkFBNEM7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF3QjtRQUVwRCxFQUFFO0lBQ04sQ0FBQztJQUVEOzs7OztLQUtDO0lBQ0QsV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2hDLFFBQVEsWUFBWSxFQUFFO1lBQ2xCLEtBQUssTUFBTTtnQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLE1BQU07Z0JBQ1AsT0FBTyxPQUFPLENBQUM7WUFDbkIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sT0FBTyxDQUFDO1lBQ25CO2dCQUNJLE9BQU8sT0FBTyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsV0FBbUI7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLFVBQWUsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxXQUFXLENB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QTBCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkYsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7WUFDM0IsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsOERBQThEO0lBQ3RELGFBQWEsQ0FBQyxNQUFjLEVBQUUsUUFBUSxHQUFHLEVBQUU7UUFDL0MsT0FBTyxNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBdUI7UUFDcEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRTtnQkFDckIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkY7U0FDSjtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7O2tIQXRKUSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBJUGVwR2VuZXJpY0xpc3RTbWFydEZpbHRlcixcbiAgICBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkLFxuICAgIElQZXBTbWFydEZpbHRlcnNcbn0gZnJvbSAnLi9nZW5lcmljLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtcbiAgICBQZXBTbWFydEZpbHRlckJhc2VGaWVsZCxcbiAgICBJUGVwU21hcnRGaWx0ZXJEYXRhLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbWFydC1maWx0ZXJzJztcbmltcG9ydCB7IFBlcFF1ZXJ5QnVpbGRlclNlcnZpY2UsIElQZXBRdWVyeUJ1aWxkZXJGaWVsZCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3F1ZXJ5LWJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgICBQZXBSb3dEYXRhLFxuICAgIE9iamVjdHNEYXRhUm93XG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7IEdyaWREYXRhVmlld0ZpZWxkLCBEYXRhVmlld0ZpZWxkVHlwZXMgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsvZGlzdC9lbnRpdGllcy9kYXRhLXZpZXcnO1xuXG5ASW5qZWN0YWJsZSgpIFxuZXhwb3J0IGNsYXNzIFBlcEdlbmVyaWNMaXN0U2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9xdWVyeUJ1aWxkZXJTZXJ2aWNlOiBQZXBRdWVyeUJ1aWxkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgLyoqXG4gICAqIGNoZWNrcyBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHByb3BlcnR5XG4gICAqIEBwYXJhbSBvYmogb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wIHByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjb250YWlucywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICAgIGhhc1Byb3BlcnR5KG9iajogYW55LCBwcm9wOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIGdldExpc3RWaWV3VHlwZShkYXRhVmlld1R5cGU6IHN0cmluZykge1xuICAgICAgICBzd2l0Y2ggKGRhdGFWaWV3VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnR3JpZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0YWJsZSc7XG4gICAgICAgICAgICBjYXNlICdDYXJkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2NhcmRzJztcbiAgICAgICAgICAgIGNhc2UgJ0xpbmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGluZXMnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RhYmxlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnZlcnRUb1BlcFJvd0RhdGEoaXRlbTogYW55LCBkYXRhVmlldzogYW55LCB1dWlkTWFwcGluZzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IG5ldyBQZXBSb3dEYXRhKCk7XG4gICAgICAgIGxldCBpdGVtRmllbGRzOiBhbnk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydHkoaXRlbSwgJ2ZpZWxkcycpICYmIHR5cGVvZiBpdGVtLmZpZWxkcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtLmZpZWxkcztcbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzU2VsZWN0YWJsZUZvckFjdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcm93LklzU2VsZWN0YWJsZUZvckFjdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmlzRWRpdGFibGUgJiYgaXRlbS5pc1NlbGVjdGFibGVGb3JBY3Rpb25zICYmIGl0ZW0uaXNTZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJvdy5Jc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1GaWVsZHMgPSBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93LlVVSUQgPSBpdGVtRmllbGRzW3V1aWRNYXBwaW5nXSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJvdy5GaWVsZHMgPSBbXTtcblxuICAgICAgICBpZiAoZGF0YVZpZXc/LkZpZWxkcyAmJiBkYXRhVmlldy5Db2x1bW5zKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGF0YVZpZXcuRmllbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZGF0YVZpZXcuRmllbGRzW2luZGV4XSBhcyBJUGVwR2VuZXJpY0xpc3REYXRhVmlld0ZpZWxkO1xuICAgICAgICAgICAgICAgIHJvdy5GaWVsZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkZpZWxkSUQsXG4gICAgICAgICAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSA/IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGZpZWxkLlRpdGxlKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICBYQWxpZ25tZW50OiAxLFxuICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZTogKGl0ZW1GaWVsZHNbZmllbGQuRmllbGRJRF0gfHwgJycpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgIFZhbHVlOiAoaXRlbUZpZWxkc1tmaWVsZC5GaWVsZElEXSB8fCAnJykudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGRhdGFWaWV3LkNvbHVtbnNbaW5kZXhdPy5XaWR0aCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxWYWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlcyB8fCBbXSxcbiAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlOiBEYXRhVmlld0ZpZWxkVHlwZXNbZmllbGQuVHlwZV0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seSxcbiAgICAgICAgICAgICAgICAgICAgRW5hYmxlZDogIWZpZWxkLlJlYWRPbmx5XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93O1xuICAgIH1cblxuICAgIGNvbnZlcnRUb1VpQ29udHJvbEZpZWxkKGZpZWxkOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEFwaU5hbWU6IGZpZWxkLkFwaU5hbWUsXG4gICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLkZpZWxkVHlwZSxcbiAgICAgICAgICAgIFRpdGxlOiBmaWVsZC5UaXRsZSxcbiAgICAgICAgICAgIFJlYWRPbmx5OiBmaWVsZC5SZWFkT25seUZpZWxkLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGg6IGZpZWxkLkNvbHVtbldpZHRoLFxuICAgICAgICAgICAgQ29sdW1uV2lkdGhUeXBlOiAxLFxuICAgICAgICAgICAgTGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgWDogZmllbGQuTGF5b3V0LlgsXG4gICAgICAgICAgICAgICAgWTogZmllbGQuTGF5b3V0LlksXG4gICAgICAgICAgICAgICAgV2lkdGg6IGZpZWxkLkxheW91dC5XaWR0aCxcbiAgICAgICAgICAgICAgICBIZWlnaHQ6IGZpZWxkLkxheW91dC5GaWVsZF9IZWlnaHQsXG4gICAgICAgICAgICAgICAgWEFsaWdubWVudDogZmllbGQuTGF5b3V0LnhBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgWUFsaWdubWVudDogZmllbGQuTGF5b3V0LnlBbGlnbm1lbnQsXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb252ZXJ0VG9TbWFydEZpbHRlcihpbnB1dDogSVBlcEdlbmVyaWNMaXN0U21hcnRGaWx0ZXIpIHsgICAgICAgIFxuICAgICAgICBjb25zdCBzbWFydEZpbHRlcnM6IElQZXBTbWFydEZpbHRlcnMgPSB7XG4gICAgICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICB0aXRsZTogJ0ZpbHRlcnMnXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhVmlldykge1xuICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5maWVsZHMgPSB0aGlzLmNyZWF0ZVNtYXJ0RmlsdGVyRmllbGRzKGlucHV0LmRhdGFWaWV3KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHNtYXJ0RmlsdGVycy5kYXRhID0gaW5wdXQuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5wdXQudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBzbWFydEZpbHRlcnMudGl0bGUgPSBpbnB1dC50aXRsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzbWFydEZpbHRlcnM7ICAgICAgICBcbiAgICB9XG5cbiAgICBjcmVhdGVTbWFydEZpbHRlckZpZWxkcyhkYXRhVmlldzogYW55KSB7XG4gICAgICAgIGxldCBzbWFydEZpZWxkczogUGVwU21hcnRGaWx0ZXJCYXNlRmllbGRbXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGRhdGFWaWV3LkZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgRmllbGRJRDogZmllbGQuRmllbGRJRCxcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGU6IGZpZWxkLlR5cGUsXG4gICAgICAgICAgICAgICAgVGl0bGU6IGZpZWxkLlRpdGxlLFxuICAgICAgICAgICAgICAgIE9wdGlvbmFsVmFsdWVzOiBmaWVsZC5PcHRpb25hbFZhbHVlc1xuICAgICAgICAgICAgfSBhcyBJUGVwUXVlcnlCdWlsZGVyRmllbGRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNtYXJ0RmlsdGVyZmllbGRzID0gdGhpcy5fcXVlcnlCdWlsZGVyU2VydmljZS5jb252ZXJ0VG9TbWFydEZpbHRlckZpZWxkcyhmaWVsZHMpO1xuICAgICAgICBpZiAoc21hcnRGaWx0ZXJmaWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgc21hcnRGaWVsZHMgPSBzbWFydEZpbHRlcmZpZWxkcy5tYXAoKGZpZWxkID0+IGZpZWxkLnNtYXJ0KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc21hcnRGaWVsZHM7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVGhpcyBmdW5jIGlzIGNvcHkgZnJvbSBuZ3gtbGliIHdyaXRlIGl0IGluIG9uZSBwbGFjZS5cbiAgICBwcml2YXRlIGdldFVuaXFJdGVtSWQoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlID0gJycpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbUlkICsgJywnICsgaXRlbVR5cGU7XG4gICAgfVxuXG4gICAgZ2V0U2VsZWN0ZWRJdGVtcyhpdGVtczogT2JqZWN0c0RhdGFSb3dbXSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLklzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2godGhpcy5nZXRVbmlxSXRlbUlkKGl0ZW1zW2ldLlVJRCwgaXRlbXNbaV0uVHlwZT8udG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbXM7XG4gICAgfVxuXG5cbn0iXX0=
|