@dangl/angular-ava 1.0.0 → 1.0.1-beta0001
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/README.md +181 -181
- package/esm2022/lib/angular-ava.module.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/components/ava-tree/ava-tree.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/list-structure/list-structure.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/table-structure/table-structure.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/tree-item/tree-item.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/tree-node/tree-node.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/components/tree-structure/tree-structure.component.mjs +3 -3
- package/esm2022/lib/ava-tree/tree/constants/defaultFilters.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/constants/defaultTextWords.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/constants/defaults.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/constants/index.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/directives/save-changing-view.directive.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/ava-models.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/context-menu-data.model.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/function-view-line.model.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/index.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/selecting.model.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/tableColumnType.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/model/tree-mode.model.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/pipes/element-icon-name.pipe.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/pipes/element-item-number.pipe.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/pipes/element-text.pipe.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/pipes/group-child-elements.pipe.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/services/expand-parent-group.service.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/services/flat-elements.service.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/services/keyboard-operation.service.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/services/select-element.service.mjs +1 -1
- package/esm2022/lib/ava-tree/tree/services/tree-node-selection.service.mjs +1 -1
- package/esm2022/lib/version.mjs +6 -6
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/dangl-angular-ava.mjs +17 -17
- package/fesm2022/dangl-angular-ava.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -361,11 +361,11 @@ export class AvaTreeComponent {
|
|
|
361
361
|
});
|
|
362
362
|
}
|
|
363
363
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AvaTreeComponent, deps: [{ token: i1.FlatElementsService, self: true }, { token: i2.SelectElementService, self: true }, { token: i3.TreeNodeSelectionService, self: true }, { token: i4.ExpandParentGroupService, self: true }, { token: i5.KeyboardOperationService, self: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: AvaTreeComponent, selector: "ava-tree", inputs: { project: "project", expansionState: "expansionState", selectedNodeId: "selectedNodeId", indent: "indent", selectedColor: "selectedColor", modeView: "modeView", allowDblClick: "allowDblClick", isSelectionMode: "isSelectionMode", initiallySelectedElements: "initiallySelectedElements", textWords: "textWords", mouseAwareKeyboardControl: "mouseAwareKeyboardControl", customKeyboardOperationConfig: "customKeyboardOperationConfig", listFilterFunc: "listFilterFunc", addTableColumns: "addTableColumns", functionView: "functionView" }, outputs: { selectClick: "selectClick", selectDblClick: "selectDblClick", contextMenuEvent: "contextMenuEvent", selectedElementsChanged: "selectedElementsChanged" }, providers: [FlatElementsService, SelectElementService, TreeNodeSelectionService, ExpandParentGroupService, KeyboardOperationService], viewQueries: [{ propertyName: "avaTreeWrapper", first: true, predicate: ["avaTreeWrapper"], descendants: true }, { propertyName: "avaMainWrapper", first: true, predicate: ["avaMainWrapper"], descendants: true }, { propertyName: "avaTreeFilterInput", first: true, predicate: ["avaTreeFilterInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\
|
|
364
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: AvaTreeComponent, selector: "ava-tree", inputs: { project: "project", expansionState: "expansionState", selectedNodeId: "selectedNodeId", indent: "indent", selectedColor: "selectedColor", modeView: "modeView", allowDblClick: "allowDblClick", isSelectionMode: "isSelectionMode", initiallySelectedElements: "initiallySelectedElements", textWords: "textWords", mouseAwareKeyboardControl: "mouseAwareKeyboardControl", customKeyboardOperationConfig: "customKeyboardOperationConfig", listFilterFunc: "listFilterFunc", addTableColumns: "addTableColumns", functionView: "functionView" }, outputs: { selectClick: "selectClick", selectDblClick: "selectDblClick", contextMenuEvent: "contextMenuEvent", selectedElementsChanged: "selectedElementsChanged" }, providers: [FlatElementsService, SelectElementService, TreeNodeSelectionService, ExpandParentGroupService, KeyboardOperationService], viewQueries: [{ propertyName: "avaTreeWrapper", first: true, predicate: ["avaTreeWrapper"], descendants: true }, { propertyName: "avaMainWrapper", first: true, predicate: ["avaMainWrapper"], descendants: true }, { propertyName: "avaTreeFilterInput", first: true, predicate: ["avaTreeFilterInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"main-wrapper\"\n #avaMainWrapper\n>\n <div\n class=\"control\"\n #control\n >\n <mat-form-field class=\"control-filter\">\n <mat-label>{{ textWords?.textSearch }}</mat-label>\n <input\n matInput\n [ngModel]=\"filterInput\"\n (ngModelChange)=\"onFilter($event)\"\n #avaTreeFilterInput\n />\n </mat-form-field>\n <ng-container *ngIf=\"modeView === listModeViewType.Tree\">\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(true)\"\n [matTooltip]=\"textWords?.tooltipAllOpen || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">add</mat-icon>\n </button>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(false)\"\n [matTooltip]=\"textWords?.tooltipAllClose || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">remove</mat-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"isSelectionMode\">\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(true)\"\n [matTooltip]=\"textWords?.tooltipAllAdd || ''\"\n class=\"control-button\"\n >\n <mat-icon>add</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(false)\"\n [matTooltip]=\"textWords?.tooltipAllRemove || ''\"\n class=\"control-button\"\n >\n <mat-icon>remove</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n </ng-container>\n </div>\n <div\n [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n class=\"ava-tree-wrapper\"\n #avaTreeWrapper\n >\n <ng-container *ngIf=\"flatElements?.length; else nothing\">\n <ng-container *ngIf=\"filteredElementList?.length; else nothingFiltered\">\n <ava-tree-structure\n *ngIf=\"modeView === listModeViewType.Tree && !avaTreeFilterInput.value\"\n [serviceSpecification]=\"serviceSpecification\"\n [indent]=\"indent\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-tree-structure>\n <ava-list-structure\n *ngIf=\"modeView === listModeViewType.List || (modeView === listModeViewType.Tree && avaTreeFilterInput.value)\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-list-structure>\n <ava-table-structure\n *ngIf=\"modeView === listModeViewType.Table\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [addTableColumns]=\"addTableColumns\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-table-structure>\n </ng-container>\n </ng-container>\n </div>\n</div>\n<ng-template #nothing>\n {{ textWords?.textNothing }}\n</ng-template>\n<ng-template #nothingFiltered>\n {{ textWords?.textNothingFiltered }}\n</ng-template>\n", styles: [".main-wrapper{max-height:100%;height:100%;overflow-y:auto;overflow-x:hidden}.control{display:flex;align-items:center;gap:5px;padding:4px}.control-filter{flex-grow:1}.control-icon{width:36px;height:36px;padding:0}.control-button{padding:0 5px}.ava-tree-wrapper{overflow-y:auto;overflow-x:hidden}::ng-deep .control .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .control .control-filter .mat-mdc-form-field-infix{min-height:auto;padding-top:10px;padding-bottom:2px}::ng-deep .control .control-filter .mat-mdc-floating-label{top:18px}::ng-deep .control .control-filter .mdc-text-field{padding:0 6px}.layer-background{font-size:36px;width:36px;height:36px}.layer-icon{width:36px;height:36px;position:absolute;inset:1px 0 0;color:#fff}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i11.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i13.TreeStructureComponent, selector: "ava-tree-structure", inputs: ["serviceSpecification", "indent", "expansionState", "isSelectionMode", "selectedColor", "allowDblClick"] }, { kind: "component", type: i14.ListStructureComponent, selector: "ava-list-structure", inputs: ["filteredElementList", "isSelectionMode", "selectedColor", "allowDblClick"] }, { kind: "component", type: i15.TableStructureComponent, selector: "ava-table-structure", inputs: ["filteredElementList", "isSelectionMode", "addTableColumns", "selectedColor", "allowDblClick"] }] }); }
|
|
365
365
|
}
|
|
366
366
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AvaTreeComponent, decorators: [{
|
|
367
367
|
type: Component,
|
|
368
|
-
args: [{ selector: 'ava-tree', providers: [FlatElementsService, SelectElementService, TreeNodeSelectionService, ExpandParentGroupService, KeyboardOperationService], template: "<div\
|
|
368
|
+
args: [{ selector: 'ava-tree', providers: [FlatElementsService, SelectElementService, TreeNodeSelectionService, ExpandParentGroupService, KeyboardOperationService], template: "<div\n class=\"main-wrapper\"\n #avaMainWrapper\n>\n <div\n class=\"control\"\n #control\n >\n <mat-form-field class=\"control-filter\">\n <mat-label>{{ textWords?.textSearch }}</mat-label>\n <input\n matInput\n [ngModel]=\"filterInput\"\n (ngModelChange)=\"onFilter($event)\"\n #avaTreeFilterInput\n />\n </mat-form-field>\n <ng-container *ngIf=\"modeView === listModeViewType.Tree\">\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(true)\"\n [matTooltip]=\"textWords?.tooltipAllOpen || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">add</mat-icon>\n </button>\n <button\n class=\"control-icon\"\n mat-icon-button\n color=\"primary\"\n (click)=\"changeAllElementsExpansionStatus(false)\"\n [matTooltip]=\"textWords?.tooltipAllClose || ''\"\n >\n <mat-icon class=\"layer-background\">layers</mat-icon>\n <mat-icon class=\"layer-icon\">remove</mat-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"isSelectionMode\">\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(true)\"\n [matTooltip]=\"textWords?.tooltipAllAdd || ''\"\n class=\"control-button\"\n >\n <mat-icon>add</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n <button\n mat-raised-button\n (click)=\"selectOrDeselectAll(false)\"\n [matTooltip]=\"textWords?.tooltipAllRemove || ''\"\n class=\"control-button\"\n >\n <mat-icon>remove</mat-icon>\n <span>{{ textWords?.textAll }}</span>\n </button>\n </ng-container>\n </div>\n <div\n [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n class=\"ava-tree-wrapper\"\n #avaTreeWrapper\n >\n <ng-container *ngIf=\"flatElements?.length; else nothing\">\n <ng-container *ngIf=\"filteredElementList?.length; else nothingFiltered\">\n <ava-tree-structure\n *ngIf=\"modeView === listModeViewType.Tree && !avaTreeFilterInput.value\"\n [serviceSpecification]=\"serviceSpecification\"\n [indent]=\"indent\"\n [expansionState]=\"expansionState\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-tree-structure>\n <ava-list-structure\n *ngIf=\"modeView === listModeViewType.List || (modeView === listModeViewType.Tree && avaTreeFilterInput.value)\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-list-structure>\n <ava-table-structure\n *ngIf=\"modeView === listModeViewType.Table\"\n [filteredElementList]=\"filteredElementList\"\n [isSelectionMode]=\"isSelectionMode\"\n [addTableColumns]=\"addTableColumns\"\n [selectedColor]=\"selectedColor\"\n [allowDblClick]=\"allowDblClick\"\n >\n </ava-table-structure>\n </ng-container>\n </ng-container>\n </div>\n</div>\n<ng-template #nothing>\n {{ textWords?.textNothing }}\n</ng-template>\n<ng-template #nothingFiltered>\n {{ textWords?.textNothingFiltered }}\n</ng-template>\n", styles: [".main-wrapper{max-height:100%;height:100%;overflow-y:auto;overflow-x:hidden}.control{display:flex;align-items:center;gap:5px;padding:4px}.control-filter{flex-grow:1}.control-icon{width:36px;height:36px;padding:0}.control-button{padding:0 5px}.ava-tree-wrapper{overflow-y:auto;overflow-x:hidden}::ng-deep .control .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .control .control-filter .mat-mdc-form-field-infix{min-height:auto;padding-top:10px;padding-bottom:2px}::ng-deep .control .control-filter .mat-mdc-floating-label{top:18px}::ng-deep .control .control-filter .mdc-text-field{padding:0 6px}.layer-background{font-size:36px;width:36px;height:36px}.layer-icon{width:36px;height:36px;position:absolute;inset:1px 0 0;color:#fff}\n"] }]
|
|
369
369
|
}], ctorParameters: () => [{ type: i1.FlatElementsService, decorators: [{
|
|
370
370
|
type: Self
|
|
371
371
|
}] }, { type: i2.SelectElementService, decorators: [{
|
|
@@ -424,4 +424,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
424
424
|
type: ViewChild,
|
|
425
425
|
args: ['avaTreeFilterInput']
|
|
426
426
|
}] } });
|
|
427
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhLXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvYXZhLXRyZWUvYXZhLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvYXZhLXRyZWUvYXZhLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRixPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEUsT0FBTyxFQUlMLFlBQVksRUFLYixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQTRCLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEksT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRGLE1BQU0sT0FBTyxnQkFBZ0I7SUF3RDNCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFD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LGNBQWM7c0JBQXRCLEtBQUs7Z0JBWUcsZUFBZTtzQkFBdkIsS0FBSztnQkFrQkcsWUFBWTtzQkFBcEIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLGNBQWM7c0JBQXZCLE1BQU07Z0JBS0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQVFHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0UsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ00sa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTZWxmLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZnJvbUV2ZW50LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IERFRkFVTFRfRklMVEVSUywgREVGQVVMVF9URVhUX1dPUkRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSVRleHRXb3JkcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9kZWZhdWx0VGV4dFdvcmRzJztcclxuaW1wb3J0IHtcclxuICBDb250ZXh0TWVudURhdGFUeXBlLFxyXG4gIElFbGVtZW50RHRvLFxyXG4gIElGdW5jdGlvblZpZXdMaW5lLFxyXG4gIE1vZGVWaWV3VHlwZSxcclxuICBQcm9qZWN0RHRvLFxyXG4gIFNlbGVjdGVkRWxlbWVudCxcclxuICBTZXJ2aWNlU3BlY2lmaWNhdGlvbkR0byxcclxuICBUYWJsZUNvbHVtblR5cGVcclxufSBmcm9tICcuLi8uLi9tb2RlbCc7XHJcbmltcG9ydCB7IFNlbGVjdGluZ0VsZW1lbnRzVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL3NlbGVjdGluZy5tb2RlbCc7XHJcbmltcG9ydCB7IEV4cGFuZFBhcmVudEdyb3VwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4cGFuZC1wYXJlbnQtZ3JvdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IEZsYXRFbGVtZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbGF0LWVsZW1lbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJS2V5Ym9hcmRPcGVyYXRpb25Db25maWcsIEtleWJvYXJkT3BlcmF0aW9uU2VydmljZSwgS2V5Ym9hcmRPcGVyYXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMva2V5Ym9hcmQtb3BlcmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZWxlY3RFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdC1lbGVtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZVNlbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmVlLW5vZGUtc2VsZWN0aW9uLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdmEtdHJlZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YS10cmVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdmEtdHJlZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0ZsYXRFbGVtZW50c1NlcnZpY2UsIFNlbGVjdEVsZW1lbnRTZXJ2aWNlLCBUcmVlTm9kZVNlbGVjdGlvblNlcnZpY2UsIEV4cGFuZFBhcmVudEdyb3VwU2VydmljZSwgS2V5Ym9hcmRPcGVyYXRpb25TZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXZhVHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKlxyXG4gICAqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBlbGVtZW50IGZvciB0aGUgdHJlZSBzdHJ1Y3R1cmUuIFlvdSBzaG91bGQgc3VwcGx5IGEgUHJvamVjdER0byB3aXRoXHJcbiAgICogZXhhY3RseSBvbmUgc2VydmljZSBzcGVjaWZpY2F0aW9uIGluIGl0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHByb2plY3Q6IFByb2plY3REdG8gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWxseSwgeW91IGNhbiBzdXBwbHkgYSBtYXAgb2YgZXhwYW5zaW9uIHN0YXRlcyBmb3IgdGhlIHRyZWUuIFRoZSBrZXlzIHNob3VsZCBiZSB0aGVcclxuICAgKiBpZCBwcm9wZXJ0aWVzIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgdHJlZSwgYW5kIHRoZSB2YWx1ZXMgc2hvdWxkIGJlIHRydWUgaWYgdGhlIGVsZW1lbnQgaXNcclxuICAgKiBleHBhbmRlZCwgYW5kIGZhbHNlIGlmIGl0IGlzIGNvbGxhcHNlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBleHBhbnNpb25TdGF0ZTogeyBbaWQ6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbGx5LCB5b3UgY2FuIHN1cHBseSB0aGUgaWQgb2YgdGhlIG5vZGUgdGhhdCBzaG91bGQgYmUgc2VsZWN0ZWQgaW4gdGhlIHRyZWUgaW5pdGlhbGx5LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkTm9kZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogT3B0aW9uYWwsIGRlZmF1bHRzIHRvIDIwcHguIElmIHRoaXMgaXMgc2V0LCB0aGVuIHRoZSB0cmVlIHdpbGwgYmUgaW5kZW50ZWQgYnkgdGhlIGdpdmVuIHZhbHVlIGVhY2ggbGV2ZWwuXHJcbiAgICogVGhpcyBjYW4gYmUgYW55IHZhbGlkIENTUyB2YWx1ZSBmb3IgdGhlIHBhZGRpbmctbGVmdCBwcm9wZXJ0eSwgc3VjaCBhcyAyMHB4LCAxZW0sIG9yIDUlLlxyXG4gICAqXHJcbiAgICovXHJcbiAgQElucHV0KCkgaW5kZW50ID0gJzIwcHgnO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbCwgeW91IGNhbiBzdXBwbHkgYSBjb2xvciB0byBiZSB1c2VkIGFzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgc2VsZWN0ZWQgbGluZS4gRGVmYXVsdHMgdG8gdGhlIHByaW1hcnlcclxuICAgKiBjb2xvciBmcm9tIHRoZSBNYXRlcmlhbCB0aGVtZSwgd2hpY2ggaXMgIzAwYWNjMS5cclxuICAgKi9cclxuICBASW5wdXQoKSBzZWxlY3RlZENvbG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogWW91IGNhbiBzcGVjaWZ5IHdoaWNoIHZpZXcgdHlwZSB0byB1c2UgZm9yIHRoZSB0cmVlLiBUaGUgZGVmYXVsdCBpcyBNb2RlVmlld1R5cGUuVHJlZSwgYnV0IHlvdSBjYW4gYWxzbyB1c2VcclxuICAgKiBNb2RlVmlld1R5cGUuTGlzdCBvciBNb2RlVmlld1R5cGUuVGFibGUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgbW9kZVZpZXc6IE1vZGVWaWV3VHlwZSA9IE1vZGVWaWV3VHlwZS5UcmVlO1xyXG5cclxuICAvKiogT3B0aW9uYWwsIGRlZmF1bHRzIHRvIHRydWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHRoZW4gdGhlIGRvdWJsZSBjbGljayBldmVudCBmb3IgZWxlbWVudHMgaXMgbm90IHJhaXNlZCxcclxuICAgKiBhbmQgY2xpY2tpbmcgb24gYW4gZWxlbXQgc2VuZHMgYW4gaW1tZWRpYXRlIHJlc3VsdCBzaW5jZSB0aGUgY29tcG9uZW50IGhhcyBub3QgdG8gd2FpdCBhbmQgY2hlY2sgaWYgYSBkb3VibGUgY2xpY2sgZXZlbnRcclxuICAgKiBpcyBmaXJlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBhbGxvd0RibENsaWNrID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgdHJlZSB3aWxsIGJlIGluIHNlbGVjdGlvbiBtb2RlLCBhbmQgdGhlIHVzZXIgY2FuIHNlbGVjdCBlbGVtZW50c1xyXG4gICAqIGJ5IGNsaWNraW5nIG9uIHRoZW0uIFRoZSBzZWxlY3RlZCBlbGVtZW50cyB3aWxsIGJlIGVtaXR0ZWQgaW4gdGhlIHNlbGVjdGVkRWxlbWVudHNDaGFuZ2VkIGV2ZW50LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGlzU2VsZWN0aW9uTW9kZSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBZb3UgY2FuIG9wdGlvbmFsbHkgc3VwcGx5IGEgbGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSBzZWxlY3RlZCBpbml0aWFsbHkuIFRoaXMgaXMgb25seSB1c2VkIGlmXHJcbiAgICogaXNTZWxlY3Rpb25Nb2RlIGlzIHRydWUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgaW5pdGlhbGx5U2VsZWN0ZWRFbGVtZW50czogU2VsZWN0ZWRFbGVtZW50W10gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogWW91IGNhbiBzdXBwbHkgYSBtYXAgb2Ygc3RyaW5ncyB0byBiZSB1c2VkIGZvciB0aGUgdGV4dCBpbiB0aGUgdHJlZS4gVGhpcyBhbGxvd3MgeW91IHRvIHRyYW5zbGF0ZVxyXG4gICAqIHRoZSB0ZXh0IGluIHRoZSB0cmVlIHRvIG90aGVyIGxhbmd1YWdlcy5cclxuICAgKiB7XHJcbiAgICogICB0ZXh0U2VhcmNoOiBzdHJpbmcsXHJcbiAgICogICB0ZXh0Tm90aGluZzogc3RyaW5nLFxyXG4gICAqICAgdGV4dE5vdGhpbmdGaWx0ZXJlZDogc3RyaW5nLFxyXG4gICAqICAgdGV4dEFsbDogc3RyaW5nLFxyXG4gICAqICAgdG9vbHRpcEFsbE9wZW46IHN0cmluZyxcclxuICAgKiAgIHRvb2x0aXBBbGxDbG9zZTogc3RyaW5nLFxyXG4gICAqICAgdG9vbHRpcEFsbEFkZDpzdHJpbmcsXHJcbiAgICogICB0b29sdGlwQWxsUmVtb3ZlOiBzdHJpbmcsXHJcbiAgICogfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNldCB0ZXh0V29yZHMod29yZHM6IElUZXh0V29yZHMgfCBudWxsKSB7XHJcbiAgICB0aGlzLl90ZXh0V29yZHMgPSB7IC4uLnRoaXMudGV4dFdvcmRzLCAuLi53b3JkcyB9O1xyXG4gIH0gLy8gYWxsb3cgdG8gdHJhbnNsYXRlIGFsbCB0ZXh0cyB0byBvdGhlciBsYW5ndWFnZVxyXG4gIGdldCB0ZXh0V29yZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGV4dFdvcmRzO1xyXG4gIH1cclxuICBwcml2YXRlIF90ZXh0V29yZHM6IElUZXh0V29yZHMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdHMgdG8gdHJ1ZS4gSWYgdGhpcyBpcyBlbmFibGVkLCB0aGVuIG5hdmlnYXRpbmcgaW4gdGhlIHRyZWUgd2l0aCB0aGUga2V5Ym9hcmQgb25seSB3b3Jrc1xyXG4gICAqIGlmIHRoZSBtb3VzZSBpcyBvdmVyIHRoZSB0cmVlIGFyZWEuIFRoaXMgbGltaXRhdGlvbiBpcyB1c2VmdWwgaWYgeW91IGhhdmUgbXVsdGlwbGUgdHJlZXMgb3Igb3RoZXIgY29tcG9uZW50c1xyXG4gICAqIHRoYXQgbWlnaHQgYmUgdXNpbmcga2V5Ym9hcmQgaW5wdXQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgbW91c2VBd2FyZUtleWJvYXJkQ29udHJvbCA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdpdGggdGhpcyBwYXJhbWV0ZXIsIHlvdSBjYW4gY29uZmlndXJlIHdoaWNoIGtleXMgd2lsbCBiZSBsaXN0ZW5lbmQgdG8gdG8gc3dpdGNoIHRoZSB0cmVlIGVsZW1lbnRzLFxyXG4gICAqIGFuZCBhbHNvIHRvIGRpc2FibGUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGtleXMgKi9cclxuICBASW5wdXQoKSBzZXQgY3VzdG9tS2V5Ym9hcmRPcGVyYXRpb25Db25maWcoY29uZmlnOiBJS2V5Ym9hcmRPcGVyYXRpb25Db25maWcpIHtcclxuICAgIHRoaXMua2V5Ym9hcmRPcGVyYXRpb25TZXJ2aWNlLm1lcmdlQ29uZmlnT3BlcmF0aW9uKGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBZb3UgY2FuIHN1cHBseSBjdXN0b20gZmlsdGVycyB0aGF0IGFyZSBwcm9jZXNzZWQgd2hlbiB0aGUgZmlsdGVyIGlucHV0IGlzIGNoYW5nZWQuIERlZmF1bHQgZmlsdGVycyBhcmUgdXNlZFxyXG4gICAqIHRoYXQgY2hlY2sgZm9yIHNob3J0IHRleHQgYW5kIGl0ZW0gbnVtYmVyIG1hdGNoZXMsIGFuZCB5b3UgY2FuIGVpdGhlciBhZGQgY3VzdG9tIGZpbHRlcnMgb3IgcmVwbGFjZSB0aGUgZGVmYXVsdCBvbmVzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxpc3RGaWx0ZXJGdW5jID0gREVGQVVMVF9GSUxURVJTO1xyXG5cclxuICAvKipcclxuICAgKiBPcHRpb25hbC4gRm9yIHRhYmxlIHZpZXdzLCB0aGlzIGFsbG93cyB5b3UgdG8gYWRkIGN1c3RvbSBjb2x1bW5zIHRvIHRoZSB0YWJsZS5cclxuICAgKiBhZGRUYWJsZUNvbHVtbnM6IEFycmF5IG9mIG9iamVjdHNcclxuICAgKiB7XHJcbiAgICogICBuYW1lOiBzdHJpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWUgb2YgY29sdW1uXHJcbiAgICogICB0aXRsZTogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNob3dlZCB0aXRsZSBvZiBjb2x1bW5cclxuICAgKiAgIGFsaWduPzogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3B0aW9uYWwgYWxpZ2h0OiBsZWZ0KGRlZmF1bHQpIC8gY2VudGVyIC8gcmlnaHRcclxuICAgKiAgIG51bWJlckZvcm1hdD86IHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3B0aW9uYWwgZm9ybWF0IG9mIG51bWJlciB2YWx1ZSwgZXhhbXBsZTogJzEuMi0yJ1xyXG4gICAqIH1cclxuICAgKi9cclxuICBASW5wdXQoKSBhZGRUYWJsZUNvbHVtbnM6IFRhYmxlQ29sdW1uVHlwZVtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgYWxsb3dzIHlvdSB0byBzdXBwbHkgYSBsaXN0IG9mIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNoYW5nZSB0aGUgYXBwZWFyYW5jZSBvZiBlbGVtZW50cy5cclxuICAgKiBUaGV5IG9iamVjdHMgY29udGFpbiBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0aGF0IGlzIGV2YWx1YXRlZCwgYWxvbmcgd2l0aCBhbiBvcHRpb24gdG8gY29uZmlndXJlIHRoZVxyXG4gICAqIGFwcGVhcmFuY2Ugb2YgdGhlIGVsZW1lbnQuXHJcbiAgICogICBmdW5jdGlvblZpZXc6IEFycmF5IG9mIG9iamVjdHNcclxuICAgKiAgIHtcclxuICAgKiAgICAgbmFtZTogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSBvZiB2aWV3IHBhcnQ6IHlvdSBjYW4gYWRkL3JlbW92ZSBpdCB3aGVuIGl0IG5lZWRcclxuICAgKiAgICAgZnVuYzogKGVsZW1lbnQ6IGFueSwgcmVzdWx0PzogYW55KSA9PiBib29sZWFuLCAgLy8gdGhpcyBmaWx0ZXIgZnVuY3Rpb24gY2FsY3VsYXRlIGNvbmRpdGlvbiB0byBjaGFuZ2Ugdmlld1xyXG4gICAqICAgICB2aWV3OiB7XHJcbiAgICogICAgICAgaWNvbk5hbWU/OiBzdHJpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgbmFtZSBvZiBpY29uXHJcbiAgICogICAgICAgaWNvbkNvbG9yPzogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgY29sb3Igb2YgaWNvblxyXG4gICAqICAgICAgIHRleHRCb2xkPzogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2VkIHdlaWdodCBvZiB0ZXh0XHJcbiAgICogICAgICAgdGV4dENvbG9yPzogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgY29sb3Igb2YgdGV4dFxyXG4gICAqICAgICB9XHJcbiAgICogICB9XHJcbiAgICovXHJcbiAgQElucHV0KCkgZnVuY3Rpb25WaWV3OiBJRnVuY3Rpb25WaWV3TGluZVtdIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgaXMgZW1pdHRlZCB3aGVuIGFuIGVsZW1lbnQgaXMgc2VsZWN0ZWQgYnkgY2xpY2tpbmcgb24gaXQuIFRoZSBzZWxlY3RlZCBlbGVtZW50IGlzIGVtaXR0ZWQgYXMgdGhlIGV2ZW50IHZhbHVlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUVsZW1lbnREdG8gfCBudWxsPigpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGlzIGVtaXR0ZWQgd2hlbiBhbiBlbGVtZW50IGlzIHNlbGVjdGVkIGJ5IGRvdWJsZSBjbGlja2luZyBvbiBpdC4gVGhlIHNlbGVjdGVkIGVsZW1lbnQgaXMgZW1pdHRlZCBhcyB0aGUgZXZlbnQgdmFsdWUuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIHNlbGVjdERibENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJRWxlbWVudER0bz4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBpcyBlbWl0dGVkIHdoZW4gYW4gZWxlbWVudCBpcyBzZWxlY3RlZCBieSByaWdodCBjbGlja2luZyBvbiBpdC4gVGhlIHNlbGVjdGVkIGVsZW1lbnQgaXMgZW1pdHRlZCBhcyB0aGUgZXZlbnQgdmFsdWUuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGNvbnRleHRNZW51RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRleHRNZW51RGF0YVR5cGU+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgaXMgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBlbGVtZW50cyBpbiB0aGUgdHJlZSBhcmUgY2hhbmdlZC4gVGhlIHNlbGVjdGVkIGVsZW1lbnRzIGFyZSBlbWl0dGVkIGFzIHRoZSBldmVudCB2YWx1ZS5cclxuICAgKiBTZWxlY3RlZCBlbGVtZW50cyBhcmUgZWxlbWVudHMgd2hvc2UgY2hlY2tib3hlcyBhcmUgY2hlY2tlZCwgYW5kIGFyZSBkaWZmZXJlbnQgdGhhbiBlbGVtZW50cyB0aGF0IGFyZSBpbiBhbiBhY3RpdmUgc2VsZWN0aW9uIHN0YXRlLlxyXG4gICAqIFR5cGNpYWwgdXNlIGNhc2VzIGZvciB0aGlzIGluY2x1ZGUgZS5nLiBzZWxlY3RpbmcgbXVsdGlwbGUgZWxlbWVudHMgd2l0aGluIGEgc2VydmljZSBzcGVjaWZpY2F0aW9uIHdpdGhvdXRcclxuICAgKiBhY3R1YWxseSBmb2N1c3NpbmcgdGhlbSwgZS5nLiBmb3IgZnVydGhlciBwcm9jZXNzaW5nLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEVsZW1lbnRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0ZWRFbGVtZW50W10+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2F2YVRyZWVXcmFwcGVyJykgYXZhVHJlZVdyYXBwZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdhdmFNYWluV3JhcHBlcicpIGF2YU1haW5XcmFwcGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnYXZhVHJlZUZpbHRlcklucHV0JykgYXZhVHJlZUZpbHRlcklucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuICBzZWxlY3RlZEVsZW1lbnQ6IElFbGVtZW50RHRvIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VydmljZVNwZWNpZmljYXRpb24hOiBTZXJ2aWNlU3BlY2lmaWNhdGlvbkR0bztcclxuICBpc0xpc3RlbktleWJvYXJkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0VtaXRlU2VsZWN0ZWRFbGVtZW50cyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgc2VsZWN0aW5nRWxlbWVudHNUcmVlRGF0YTogU2VsZWN0aW5nRWxlbWVudHNUeXBlW10gPSBbXTtcclxuICBmbGF0RWxlbWVudHM6IElFbGVtZW50RHRvW10gfCBudWxsID0gbnVsbDtcclxuICBwcmVzZWxlY3RlZEVsZW1lbnQ6IElFbGVtZW50RHRvIHwgbnVsbCA9IG51bGw7XHJcbiAgZmlsdGVySW5wdXQgPSAnJztcclxuICBsaXN0TW9kZVZpZXdUeXBlID0gTW9kZVZpZXdUeXBlO1xyXG4gIHByaXZhdGUgZmlsdGVyID0gJyc7XHJcbiAgcHJpdmF0ZSAkZmlsdGVyID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcclxuICBmaWx0ZXJlZEVsZW1lbnRMaXN0OiBJRWxlbWVudER0b1tdID0gW107XHJcbiAgcHJpdmF0ZSAkZGVzdHJveSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIGZsYXRFbGVtZW50c1NlcnZpY2U6IEZsYXRFbGVtZW50c1NlcnZpY2UsXHJcbiAgICBAU2VsZigpIHByaXZhdGUgc2VsZWN0RWxlbWVudFNlcnZpY2U6IFNlbGVjdEVsZW1lbnRTZXJ2aWNlLFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIHRyZWVOb2RlU2VsZWN0aW9uU2VydmljZTogVHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIGV4cGFuZFBhcmVudEdyb3VwU2VydmljZTogRXhwYW5kUGFyZW50R3JvdXBTZXJ2aWNlLFxyXG4gICAgQFNlbGYoKSBwcml2YXRlIGtleWJvYXJkT3BlcmF0aW9uU2VydmljZTogS2V5Ym9hcmRPcGVyYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge1xyXG4gICAgdGhpcy5fdGV4dFdvcmRzID0geyAuLi5ERUZBVUxUX1RFWFRfV09SRFMgfTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5wcmVzZWxlY3RlZEVsZW1lbnQucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZSkgPT4gKHRoaXMucHJlc2VsZWN0ZWRFbGVtZW50ID0gZSkpO1xyXG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5zZWxlY3RDbGlja0VsZW1lbnQucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IGU7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q2xpY2suZW1pdChlKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5zZWxlY3REYmxDbGlja0VsZW1lbnQucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZSkgPT4gdGhpcy5zZWxlY3REYmxDbGljay5lbWl0KGUpKTtcclxuICAgIHRoaXMuc2VsZWN0RWxlbWVudFNlcnZpY2Uuc2VsZWN0Q29udGV4dE1lbnVFbGVtZW50LnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpKS5zdWJzY3JpYmUoKGUpID0+IHRoaXMuY29udGV4dE1lbnVFdmVudC5lbWl0KGUpKTtcclxuICAgIHRoaXMuZmxhdEVsZW1lbnRzU2VydmljZS5mbGF0RWxlbWVudHNEdG8ucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLmZsYXRFbGVtZW50cyA9IGU7XHJcbiAgICAgIHRoaXMuZ2V0RmlsdGVyZWRMaXN0KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLiRmaWx0ZXIucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSksIGRlYm91bmNlVGltZSgyNTApKS5zdWJzY3JpYmUoKGZpbHRlcikgPT4ge1xyXG4gICAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjtcclxuICAgICAgdGhpcy5nZXRGaWx0ZXJlZExpc3QoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplRXZlbnRMaXN0ZW5lcnMoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuZmxhdEVsZW1lbnRzU2VydmljZS5saXN0RmlsdGVyRnVuYyA9IHRoaXMubGlzdEZpbHRlckZ1bmM7XHJcbiAgICB0aGlzLmZsYXRFbGVtZW50c1NlcnZpY2UuZnVuY3Rpb25WaWV3ID0gdGhpcy5mdW5jdGlvblZpZXc7XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3Byb2plY3QnXSAmJiB0aGlzLnByb2plY3Q/LnNlcnZpY2VTcGVjaWZpY2F0aW9ucz8uWzBdKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZVNwZWNpZmljYXRpb24gPSB0aGlzLnByb2plY3Quc2VydmljZVNwZWNpZmljYXRpb25zWzBdO1xyXG4gICAgICB0aGlzLmZsYXRFbGVtZW50c1NlcnZpY2Uuc2V0RWxlbWVudHNEdG8odGhpcy5zZXJ2aWNlU3BlY2lmaWNhdGlvbik7XHJcblxyXG4gICAgICBpZiAodGhpcy5pc1NlbGVjdGlvbk1vZGUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGluZ0VsZW1lbnRzVHJlZURhdGEgPSB0aGlzLnRyZWVOb2RlU2VsZWN0aW9uU2VydmljZS5sb2FkU2VsZWN0aW5nRWxlbWVudHModGhpcy5zZXJ2aWNlU3BlY2lmaWNhdGlvbi5lbGVtZW50cyk7XHJcbiAgICAgICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UudHJlZU5vZGVTZWxlY3RpbmcucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pc0VtaXRlU2VsZWN0ZWRFbGVtZW50cykge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RpbmdUcmVlID0gdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZ2V0VHJlZVJvb3QodGhpcy5zZWxlY3RpbmdFbGVtZW50c1RyZWVEYXRhKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudHNDaGFuZ2VkLmVtaXQoc2VsZWN0aW5nVHJlZSk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKChjaGFuZ2VzWydzZWxlY3RlZE5vZGVJZCddICYmIHRoaXMucHJvamVjdCkgfHwgY2hhbmdlc1sncHJvamVjdCddKSB7XHJcbiAgICAgIHRoaXMuZmxhdEVsZW1lbnRzU2VydmljZS5nZXRPbmVFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkTm9kZUlkKS5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5zZXRDbGlja0VsZW1lbnQoZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvbk1vZGUgJiYgKGNoYW5nZXNbJ2luaXRpYWxseVNlbGVjdGVkRWxlbWVudHMnXSB8fCBjaGFuZ2VzWydwcm9qZWN0J10pKSB7XHJcbiAgICAgIHRoaXMuZm9ybVNlbGVjdGluZ0xpc3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy4kZGVzdHJveS5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb3VzZU92ZXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNMaXN0ZW5LZXlib2FyZCkge1xyXG4gICAgICB0aGlzLmlzTGlzdGVuS2V5Ym9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmF2YVRyZWVGaWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb3VzZU91dCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNMaXN0ZW5LZXlib2FyZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVHbG9iYWxLZXlib2FyZEV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgY29uc3Qga2V5RXZlbnQgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xyXG4gICAgICBpZiAoIXRoaXMubW91c2VBd2FyZUtleWJvYXJkQ29udHJvbCB8fCB0aGlzLmlzTGlzdGVuS2V5Ym9hcmQpIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5wcmVzZWxlY3RlZEVsZW1lbnQgfHwgdGhpcy5zZWxlY3RlZEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgb3BlcmF0aW9uLCBuZXh0RWxlbWVudCB9ID0gdGhpcy5rZXlib2FyZE9wZXJhdGlvblNlcnZpY2UuaGFuZGxlS2V5Ym9hcmRFdmVudChrZXlFdmVudCwgZWxlbWVudCkgfHwgeyBuZXh0RWxlbWVudDogbnVsbCB9O1xyXG4gICAgICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICBjYXNlIEtleWJvYXJkT3BlcmF0aW9uVHlwZS5Nb3ZlU2VsZWN0ZWRQb3NpdGlvblVwOlxyXG4gICAgICAgICAgICB0aGlzLnNob3dFbGVtZW50KG5leHRFbGVtZW50LCAnLnNlbGVjdCcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgS2V5Ym9hcmRPcGVyYXRpb25UeXBlLk1vdmVTZWxlY3RlZFBvc2l0aW9uRG93bjpcclxuICAgICAgICAgICAgdGhpcy5zaG93RWxlbWVudChuZXh0RWxlbWVudCwgJy5zZWxlY3QnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIEtleWJvYXJkT3BlcmF0aW9uVHlwZS5Nb3ZlQ2hvc2VuUG9zaXRpb25Eb3duOlxyXG4gICAgICAgICAgICB0aGlzLnNob3dFbGVtZW50KG5leHRFbGVtZW50LCBuZXh0RWxlbWVudD8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5pZCA/ICcuc2VsZWN0JyA6ICcuY2hvb3NlJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBLZXlib2FyZE9wZXJhdGlvblR5cGUuTW92ZUNob3NlblBvc2l0aW9uVXA6XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0VsZW1lbnQobmV4dEVsZW1lbnQsIG5leHRFbGVtZW50Py5pZCA9PT0gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmlkID8gJy5zZWxlY3QnIDogJy5jaG9vc2UnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93RWxlbWVudChlbGVtZW50OiBJRWxlbWVudER0byB8IG51bGwsIG5hbWVRdWVyeTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlVmlldyA9PT0gTW9kZVZpZXdUeXBlLlRyZWUpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZFBhcmVudEdyb3VwcyhlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsTGluZShuYW1lUXVlcnkpLCAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Nyb2xsTGluZShuYW1lUXVlcnk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgcGFyZW50UmVjdCA9IHRoaXMuYXZhVHJlZVdyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBzaG93ZWRFbGVtZW50ID0gdGhpcy5hdmFUcmVlV3JhcHBlcj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKG5hbWVRdWVyeSkgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKCFzaG93ZWRFbGVtZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjaGlsZFJlY3QgPSBzaG93ZWRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBjaGlsZFJlY3QuYm90dG9tID4gcGFyZW50UmVjdC5ib3R0b20gfHxcclxuICAgICAgY2hpbGRSZWN0LnRvcCA8IHBhcmVudFJlY3QudG9wIHx8XHJcbiAgICAgICh0aGlzLm1vZGVWaWV3ID09PSBNb2RlVmlld1R5cGUuVGFibGUgJiYgY2hpbGRSZWN0LnRvcCA8IHBhcmVudFJlY3QudG9wICsgMjQpXHJcbiAgICApIHtcclxuICAgICAgc2hvd2VkRWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgdGhpcy5hdmFUcmVlV3JhcHBlcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7IGxlZnQ6IDAgfSk7XHJcbiAgICAgIGlmICh0aGlzLm1vZGVWaWV3ID09PSBNb2RlVmlld1R5cGUuVGFibGUpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29ycmVjdFNjcm9sbFRhYmxlTGluZShzaG93ZWRFbGVtZW50LCBwYXJlbnRSZWN0KSwgMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29ycmVjdFNjcm9sbFRhYmxlTGluZShzaG93ZWRFbGVtZW50OiBIVE1MRWxlbWVudCwgcGFyZW50UmVjdDogRE9NUmVjdCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2hpbGRSZWN0ID0gc2hvd2VkRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGlmIChjaGlsZFJlY3QudG9wIDwgcGFyZW50UmVjdC50b3AgKyAyNCkge1xyXG4gICAgICB0aGlzLmF2YVRyZWVXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wIC09IDI0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwYW5kUGFyZW50R3JvdXBzKGVsZW1lbnQ6IElFbGVtZW50RHRvKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZFBhcmVudEdyb3VwU2VydmljZS5leHBhbmRQYXJlbnRHcm91cHMoZWxlbWVudCwgdGhpcy5mbGF0RWxlbWVudHMsIHRoaXMuZXhwYW5zaW9uU3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy4kZmlsdGVyLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlQWxsRWxlbWVudHNFeHBhbnNpb25TdGF0dXMoaXNFeHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXhwYW5zaW9uU3RhdGUpLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IGRlbGV0ZSB0aGlzLmV4cGFuc2lvblN0YXRlW2lkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZsYXRFbGVtZW50cz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmVsZW1lbnRUeXBlRGlzY3JpbWluYXRvciA9PT0gJ1NlcnZpY2VTcGVjaWZpY2F0aW9uR3JvdXBEdG8nKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuc2lvblN0YXRlW2l0ZW0uaWRdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtU2VsZWN0aW5nTGlzdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNFbWl0ZVNlbGVjdGVkRWxlbWVudHMgPSBmYWxzZTtcclxuICAgIGlmICghdGhpcy5pbml0aWFsbHlTZWxlY3RlZEVsZW1lbnRzKSB7XHJcbiAgICAgIHRoaXMuaXNFbWl0ZVNlbGVjdGVkRWxlbWVudHMgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZ2V0RmxhdFNlbGVjdGVkTGlzdElkKHRoaXMuaW5pdGlhbGx5U2VsZWN0ZWRFbGVtZW50cyk7XHJcbiAgICB0aGlzLnRyZWVOb2RlU2VsZWN0aW9uU2VydmljZS5mbGF0U2VsZWN0ZWRMaXN0SWQuZm9yRWFjaCgoaWQsIGluZGV4KSA9PiB7XHJcbiAgICAgIHRoaXMudHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlLmNoYW5nZVNlbGVjdGluZyh0cnVlLCBpZCk7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZmxhdFNlbGVjdGVkTGlzdElkLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICB0aGlzLmlzRW1pdGVTZWxlY3RlZEVsZW1lbnRzID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPckRlc2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyZWVOb2RlU2VsZWN0aW9uU2VydmljZS5jaGFuZ2VBbGwodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWx0ZXJlZExpc3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mbGF0RWxlbWVudHM/Lmxlbmd0aCkge1xyXG4gICAgICBpZiAoIXRoaXMuZmlsdGVyKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZEVsZW1lbnRMaXN0ID0gdGhpcy5mbGF0RWxlbWVudHM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZEVsZW1lbnRMaXN0ID0gdGhpcy5mbGF0RWxlbWVudHMuZmlsdGVyKChpdGVtKSA9PiB0aGlzLmZsYXRFbGVtZW50c1NlcnZpY2UuY2hlY2tGaWx0ZXJWYWx1ZShpdGVtLCB0aGlzLmZpbHRlcikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgZnJvbUV2ZW50KHRoaXMuYXZhTWFpbldyYXBwZXIubmF0aXZlRWxlbWVudCwgJ21vdXNlbGVhdmUnKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubW91c2VPdXQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGZyb21FdmVudCh0aGlzLmF2YU1haW5XcmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJylcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1vdXNlT3ZlcigpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0aW9uTW9kZSkge1xyXG4gICAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2tleWRvd24nKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSxcclxuICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLm1vdXNlQXdhcmVLZXlib2FyZENvbnRyb2wgfHwgdGhpcy5pc0xpc3RlbktleWJvYXJkKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlR2xvYmFsS2V5Ym9hcmRFdmVudChldmVudCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm1haW4td3JhcHBlclwiXHJcbiAgI2F2YU1haW5XcmFwcGVyXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNvbnRyb2xcIlxyXG4gICAgI2NvbnRyb2xcclxuICA+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb250cm9sLWZpbHRlclwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7IHRleHRXb3Jkcz8udGV4dFNlYXJjaCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgIFtuZ01vZGVsXT1cImZpbHRlcklucHV0XCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAjYXZhVHJlZUZpbHRlcklucHV0XHJcbiAgICAgIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVWaWV3ID09PSBsaXN0TW9kZVZpZXdUeXBlLlRyZWVcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIGNsYXNzPVwiY29udHJvbC1pY29uXCJcclxuICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VBbGxFbGVtZW50c0V4cGFuc2lvblN0YXR1cyh0cnVlKVwiXHJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwidGV4dFdvcmRzPy50b29sdGlwQWxsT3BlbiB8fCAnJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsYXllci1iYWNrZ3JvdW5kXCI+bGF5ZXJzPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsYXllci1pY29uXCI+YWRkPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBjbGFzcz1cImNvbnRyb2wtaWNvblwiXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAoY2xpY2spPVwiY2hhbmdlQWxsRWxlbWVudHNFeHBhbnNpb25TdGF0dXMoZmFsc2UpXCJcclxuICAgICAgICBbbWF0VG9vbHRpcF09XCJ0ZXh0V29yZHM/LnRvb2x0aXBBbGxDbG9zZSB8fCAnJ1wiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsYXllci1iYWNrZ3JvdW5kXCI+bGF5ZXJzPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsYXllci1pY29uXCI+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1NlbGVjdGlvbk1vZGVcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9yRGVzZWxlY3RBbGwodHJ1ZSlcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRleHRXb3Jkcz8udG9vbHRpcEFsbEFkZCB8fCAnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjb250cm9sLWJ1dHRvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3Bhbj57eyB0ZXh0V29yZHM/LnRleHRBbGwgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JEZXNlbGVjdEFsbChmYWxzZSlcIlxyXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRleHRXb3Jkcz8udG9vbHRpcEFsbFJlbW92ZSB8fCAnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjb250cm9sLWJ1dHRvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgICA8c3Bhbj57eyB0ZXh0V29yZHM/LnRleHRBbGwgfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCInY2FsYygxMDAlIC0gJyArIGNvbnRyb2wub2Zmc2V0SGVpZ2h0ICsgJ3B4KSdcIlxyXG4gICAgY2xhc3M9XCJhdmEtdHJlZS13cmFwcGVyXCJcclxuICAgICNhdmFUcmVlV3JhcHBlclxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmbGF0RWxlbWVudHM/Lmxlbmd0aDsgZWxzZSBub3RoaW5nXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZEVsZW1lbnRMaXN0Py5sZW5ndGg7IGVsc2Ugbm90aGluZ0ZpbHRlcmVkXCI+XHJcbiAgICAgICAgPGF2YS10cmVlLXN0cnVjdHVyZVxyXG4gICAgICAgICAgKm5nSWY9XCJtb2RlVmlldyA9PT0gbGlzdE1vZGVWaWV3VHlwZS5UcmVlICYmICFhdmFUcmVlRmlsdGVySW5wdXQudmFsdWVcIlxyXG4gICAgICAgICAgW3NlcnZpY2VTcGVjaWZpY2F0aW9uXT1cInNlcnZpY2VTcGVjaWZpY2F0aW9uXCJcclxuICAgICAgICAgIFtpbmRlbnRdPVwiaW5kZW50XCJcclxuICAgICAgICAgIFtleHBhbnNpb25TdGF0ZV09XCJleHBhbnNpb25TdGF0ZVwiXHJcbiAgICAgICAgICBbaXNTZWxlY3Rpb25Nb2RlXT1cImlzU2VsZWN0aW9uTW9kZVwiXHJcbiAgICAgICAgICBbc2VsZWN0ZWRDb2xvcl09XCJzZWxlY3RlZENvbG9yXCJcclxuICAgICAgICAgIFthbGxvd0RibENsaWNrXT1cImFsbG93RGJsQ2xpY2tcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2F2YS10cmVlLXN0cnVjdHVyZT5cclxuICAgICAgICA8YXZhLWxpc3Qtc3RydWN0dXJlXHJcbiAgICAgICAgICAqbmdJZj1cIm1vZGVWaWV3ID09PSBsaXN0TW9kZVZpZXdUeXBlLkxpc3QgfHwgKG1vZGVWaWV3ID09PSBsaXN0TW9kZVZpZXdUeXBlLlRyZWUgJiYgYXZhVHJlZUZpbHRlcklucHV0LnZhbHVlKVwiXHJcbiAgICAgICAgICBbZmlsdGVyZWRFbGVtZW50TGlzdF09XCJmaWx0ZXJlZEVsZW1lbnRMaXN0XCJcclxuICAgICAgICAgIFtpc1NlbGVjdGlvbk1vZGVdPVwiaXNTZWxlY3Rpb25Nb2RlXCJcclxuICAgICAgICAgIFtzZWxlY3RlZENvbG9yXT1cInNlbGVjdGVkQ29sb3JcIlxyXG4gICAgICAgICAgW2FsbG93RGJsQ2xpY2tdPVwiYWxsb3dEYmxDbGlja1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvYXZhLWxpc3Qtc3RydWN0dXJlPlxyXG4gICAgICAgIDxhdmEtdGFibGUtc3RydWN0dXJlXHJcbiAgICAgICAgICAqbmdJZj1cIm1vZGVWaWV3ID09PSBsaXN0TW9kZVZpZXdUeXBlLlRhYmxlXCJcclxuICAgICAgICAgIFtmaWx0ZXJlZEVsZW1lbnRMaXN0XT1cImZpbHRlcmVkRWxlbWVudExpc3RcIlxyXG4gICAgICAgICAgW2lzU2VsZWN0aW9uTW9kZV09XCJpc1NlbGVjdGlvbk1vZGVcIlxyXG4gICAgICAgICAgW2FkZFRhYmxlQ29sdW1uc109XCJhZGRUYWJsZUNvbHVtbnNcIlxyXG4gICAgICAgICAgW3NlbGVjdGVkQ29sb3JdPVwic2VsZWN0ZWRDb2xvclwiXHJcbiAgICAgICAgICBbYWxsb3dEYmxDbGlja109XCJhbGxvd0RibENsaWNrXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9hdmEtdGFibGUtc3RydWN0dXJlPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNub3RoaW5nPlxyXG4gIHt7IHRleHRXb3Jkcz8udGV4dE5vdGhpbmcgfX1cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNub3RoaW5nRmlsdGVyZWQ+XHJcbiAge3sgdGV4dFdvcmRzPy50ZXh0Tm90aGluZ0ZpbHRlcmVkIH19XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
427
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhLXRyZWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvYXZhLXRyZWUvYXZhLXRyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvYXZhLXRyZWUvYXZhLXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFDTixJQUFJLEVBRUosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRixPQUFPLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEUsT0FBTyxFQUlMLFlBQVksRUFLYixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQTRCLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdEksT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXRGLE1BQU0sT0FBTyxnQkFBZ0I7SUF3RDNCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFD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LGNBQWM7c0JBQXRCLEtBQUs7Z0JBWUcsZUFBZTtzQkFBdkIsS0FBSztnQkFrQkcsWUFBWTtzQkFBcEIsS0FBSztnQkFLSSxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLGNBQWM7c0JBQXZCLE1BQU07Z0JBS0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQVFHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ0UsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBQ00sa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZyb21FdmVudCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERFRkFVTFRfRklMVEVSUywgREVGQVVMVF9URVhUX1dPUkRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IElUZXh0V29yZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZGVmYXVsdFRleHRXb3Jkcyc7XG5pbXBvcnQge1xuICBDb250ZXh0TWVudURhdGFUeXBlLFxuICBJRWxlbWVudER0byxcbiAgSUZ1bmN0aW9uVmlld0xpbmUsXG4gIE1vZGVWaWV3VHlwZSxcbiAgUHJvamVjdER0byxcbiAgU2VsZWN0ZWRFbGVtZW50LFxuICBTZXJ2aWNlU3BlY2lmaWNhdGlvbkR0byxcbiAgVGFibGVDb2x1bW5UeXBlXG59IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IFNlbGVjdGluZ0VsZW1lbnRzVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL3NlbGVjdGluZy5tb2RlbCc7XG5pbXBvcnQgeyBFeHBhbmRQYXJlbnRHcm91cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBhbmQtcGFyZW50LWdyb3VwLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxhdEVsZW1lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZsYXQtZWxlbWVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBJS2V5Ym9hcmRPcGVyYXRpb25Db25maWcsIEtleWJvYXJkT3BlcmF0aW9uU2VydmljZSwgS2V5Ym9hcmRPcGVyYXRpb25UeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMva2V5Ym9hcmQtb3BlcmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0RWxlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWxlY3QtZWxlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFRyZWVOb2RlU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyZWUtbm9kZS1zZWxlY3Rpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F2YS10cmVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YS10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXZhLXRyZWUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmxhdEVsZW1lbnRzU2VydmljZSwgU2VsZWN0RWxlbWVudFNlcnZpY2UsIFRyZWVOb2RlU2VsZWN0aW9uU2VydmljZSwgRXhwYW5kUGFyZW50R3JvdXBTZXJ2aWNlLCBLZXlib2FyZE9wZXJhdGlvblNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEF2YVRyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBlbGVtZW50IGZvciB0aGUgdHJlZSBzdHJ1Y3R1cmUuIFlvdSBzaG91bGQgc3VwcGx5IGEgUHJvamVjdER0byB3aXRoXG4gICAqIGV4YWN0bHkgb25lIHNlcnZpY2Ugc3BlY2lmaWNhdGlvbiBpbiBpdC5cbiAgICovXG4gIEBJbnB1dCgpIHByb2plY3Q6IFByb2plY3REdG8gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSwgeW91IGNhbiBzdXBwbHkgYSBtYXAgb2YgZXhwYW5zaW9uIHN0YXRlcyBmb3IgdGhlIHRyZWUuIFRoZSBrZXlzIHNob3VsZCBiZSB0aGVcbiAgICogaWQgcHJvcGVydGllcyBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHRyZWUsIGFuZCB0aGUgdmFsdWVzIHNob3VsZCBiZSB0cnVlIGlmIHRoZSBlbGVtZW50IGlzXG4gICAqIGV4cGFuZGVkLCBhbmQgZmFsc2UgaWYgaXQgaXMgY29sbGFwc2VkLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5zaW9uU3RhdGU6IHsgW2lkOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAvKipcbiAgICogT3B0aW9uYWxseSwgeW91IGNhbiBzdXBwbHkgdGhlIGlkIG9mIHRoZSBub2RlIHRoYXQgc2hvdWxkIGJlIHNlbGVjdGVkIGluIHRoZSB0cmVlIGluaXRpYWxseS5cbiAgICovXG4gIEBJbnB1dCgpIHNlbGVjdGVkTm9kZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogT3B0aW9uYWwsIGRlZmF1bHRzIHRvIDIwcHguIElmIHRoaXMgaXMgc2V0LCB0aGVuIHRoZSB0cmVlIHdpbGwgYmUgaW5kZW50ZWQgYnkgdGhlIGdpdmVuIHZhbHVlIGVhY2ggbGV2ZWwuXG4gICAqIFRoaXMgY2FuIGJlIGFueSB2YWxpZCBDU1MgdmFsdWUgZm9yIHRoZSBwYWRkaW5nLWxlZnQgcHJvcGVydHksIHN1Y2ggYXMgMjBweCwgMWVtLCBvciA1JS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgpIGluZGVudCA9ICcyMHB4JztcblxuICAvKipcbiAgICogT3B0aW9uYWwsIHlvdSBjYW4gc3VwcGx5IGEgY29sb3IgdG8gYmUgdXNlZCBhcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIHNlbGVjdGVkIGxpbmUuIERlZmF1bHRzIHRvIHRoZSBwcmltYXJ5XG4gICAqIGNvbG9yIGZyb20gdGhlIE1hdGVyaWFsIHRoZW1lLCB3aGljaCBpcyAjMDBhY2MxLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRDb2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gc3BlY2lmeSB3aGljaCB2aWV3IHR5cGUgdG8gdXNlIGZvciB0aGUgdHJlZS4gVGhlIGRlZmF1bHQgaXMgTW9kZVZpZXdUeXBlLlRyZWUsIGJ1dCB5b3UgY2FuIGFsc28gdXNlXG4gICAqIE1vZGVWaWV3VHlwZS5MaXN0IG9yIE1vZGVWaWV3VHlwZS5UYWJsZS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGVWaWV3OiBNb2RlVmlld1R5cGUgPSBNb2RlVmlld1R5cGUuVHJlZTtcblxuICAvKiogT3B0aW9uYWwsIGRlZmF1bHRzIHRvIHRydWUuIElmIHRoaXMgaXMgZGlzYWJsZWQsIHRoZW4gdGhlIGRvdWJsZSBjbGljayBldmVudCBmb3IgZWxlbWVudHMgaXMgbm90IHJhaXNlZCxcbiAgICogYW5kIGNsaWNraW5nIG9uIGFuIGVsZW10IHNlbmRzIGFuIGltbWVkaWF0ZSByZXN1bHQgc2luY2UgdGhlIGNvbXBvbmVudCBoYXMgbm90IHRvIHdhaXQgYW5kIGNoZWNrIGlmIGEgZG91YmxlIGNsaWNrIGV2ZW50XG4gICAqIGlzIGZpcmVkLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dEYmxDbGljayA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIHRyZWUgd2lsbCBiZSBpbiBzZWxlY3Rpb24gbW9kZSwgYW5kIHRoZSB1c2VyIGNhbiBzZWxlY3QgZWxlbWVudHNcbiAgICogYnkgY2xpY2tpbmcgb24gdGhlbS4gVGhlIHNlbGVjdGVkIGVsZW1lbnRzIHdpbGwgYmUgZW1pdHRlZCBpbiB0aGUgc2VsZWN0ZWRFbGVtZW50c0NoYW5nZWQgZXZlbnQuXG4gICAqL1xuICBASW5wdXQoKSBpc1NlbGVjdGlvbk1vZGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogWW91IGNhbiBvcHRpb25hbGx5IHN1cHBseSBhIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgc2VsZWN0ZWQgaW5pdGlhbGx5LiBUaGlzIGlzIG9ubHkgdXNlZCBpZlxuICAgKiBpc1NlbGVjdGlvbk1vZGUgaXMgdHJ1ZS5cbiAgICovXG4gIEBJbnB1dCgpIGluaXRpYWxseVNlbGVjdGVkRWxlbWVudHM6IFNlbGVjdGVkRWxlbWVudFtdIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gc3VwcGx5IGEgbWFwIG9mIHN0cmluZ3MgdG8gYmUgdXNlZCBmb3IgdGhlIHRleHQgaW4gdGhlIHRyZWUuIFRoaXMgYWxsb3dzIHlvdSB0byB0cmFuc2xhdGVcbiAgICogdGhlIHRleHQgaW4gdGhlIHRyZWUgdG8gb3RoZXIgbGFuZ3VhZ2VzLlxuICAgKiB7XG4gICAqICAgdGV4dFNlYXJjaDogc3RyaW5nLFxuICAgKiAgIHRleHROb3RoaW5nOiBzdHJpbmcsXG4gICAqICAgdGV4dE5vdGhpbmdGaWx0ZXJlZDogc3RyaW5nLFxuICAgKiAgIHRleHRBbGw6IHN0cmluZyxcbiAgICogICB0b29sdGlwQWxsT3Blbjogc3RyaW5nLFxuICAgKiAgIHRvb2x0aXBBbGxDbG9zZTogc3RyaW5nLFxuICAgKiAgIHRvb2x0aXBBbGxBZGQ6c3RyaW5nLFxuICAgKiAgIHRvb2x0aXBBbGxSZW1vdmU6IHN0cmluZyxcbiAgICogfVxuICAgKi9cbiAgQElucHV0KCkgc2V0IHRleHRXb3Jkcyh3b3JkczogSVRleHRXb3JkcyB8IG51bGwpIHtcbiAgICB0aGlzLl90ZXh0V29yZHMgPSB7IC4uLnRoaXMudGV4dFdvcmRzLCAuLi53b3JkcyB9O1xuICB9IC8vIGFsbG93IHRvIHRyYW5zbGF0ZSBhbGwgdGV4dHMgdG8gb3RoZXIgbGFuZ3VhZ2VcbiAgZ2V0IHRleHRXb3JkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dFdvcmRzO1xuICB9XG4gIHByaXZhdGUgX3RleHRXb3JkczogSVRleHRXb3JkcyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLiBJZiB0aGlzIGlzIGVuYWJsZWQsIHRoZW4gbmF2aWdhdGluZyBpbiB0aGUgdHJlZSB3aXRoIHRoZSBrZXlib2FyZCBvbmx5IHdvcmtzXG4gICAqIGlmIHRoZSBtb3VzZSBpcyBvdmVyIHRoZSB0cmVlIGFyZWEuIFRoaXMgbGltaXRhdGlvbiBpcyB1c2VmdWwgaWYgeW91IGhhdmUgbXVsdGlwbGUgdHJlZXMgb3Igb3RoZXIgY29tcG9uZW50c1xuICAgKiB0aGF0IG1pZ2h0IGJlIHVzaW5nIGtleWJvYXJkIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgbW91c2VBd2FyZUtleWJvYXJkQ29udHJvbCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdpdGggdGhpcyBwYXJhbWV0ZXIsIHlvdSBjYW4gY29uZmlndXJlIHdoaWNoIGtleXMgd2lsbCBiZSBsaXN0ZW5lbmQgdG8gdG8gc3dpdGNoIHRoZSB0cmVlIGVsZW1lbnRzLFxuICAgKiBhbmQgYWxzbyB0byBkaXNhYmxlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBrZXlzICovXG4gIEBJbnB1dCgpIHNldCBjdXN0b21LZXlib2FyZE9wZXJhdGlvbkNvbmZpZyhjb25maWc6IElLZXlib2FyZE9wZXJhdGlvbkNvbmZpZykge1xuICAgIHRoaXMua2V5Ym9hcmRPcGVyYXRpb25TZXJ2aWNlLm1lcmdlQ29uZmlnT3BlcmF0aW9uKGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogWW91IGNhbiBzdXBwbHkgY3VzdG9tIGZpbHRlcnMgdGhhdCBhcmUgcHJvY2Vzc2VkIHdoZW4gdGhlIGZpbHRlciBpbnB1dCBpcyBjaGFuZ2VkLiBEZWZhdWx0IGZpbHRlcnMgYXJlIHVzZWRcbiAgICogdGhhdCBjaGVjayBmb3Igc2hvcnQgdGV4dCBhbmQgaXRlbSBudW1iZXIgbWF0Y2hlcywgYW5kIHlvdSBjYW4gZWl0aGVyIGFkZCBjdXN0b20gZmlsdGVycyBvciByZXBsYWNlIHRoZSBkZWZhdWx0IG9uZXMuXG4gICAqL1xuICBASW5wdXQoKSBsaXN0RmlsdGVyRnVuYyA9IERFRkFVTFRfRklMVEVSUztcblxuICAvKipcbiAgICogT3B0aW9uYWwuIEZvciB0YWJsZSB2aWV3cywgdGhpcyBhbGxvd3MgeW91IHRvIGFkZCBjdXN0b20gY29sdW1ucyB0byB0aGUgdGFibGUuXG4gICAqIGFkZFRhYmxlQ29sdW1uczogQXJyYXkgb2Ygb2JqZWN0c1xuICAgKiB7XG4gICAqICAgbmFtZTogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuYW1lIG9mIGNvbHVtblxuICAgKiAgIHRpdGxlOiBzdHJpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hvd2VkIHRpdGxlIG9mIGNvbHVtblxuICAgKiAgIGFsaWduPzogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3B0aW9uYWwgYWxpZ2h0OiBsZWZ0KGRlZmF1bHQpIC8gY2VudGVyIC8gcmlnaHRcbiAgICogICBudW1iZXJGb3JtYXQ/OiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9wdGlvbmFsIGZvcm1hdCBvZiBudW1iZXIgdmFsdWUsIGV4YW1wbGU6ICcxLjItMidcbiAgICogfVxuICAgKi9cbiAgQElucHV0KCkgYWRkVGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtblR5cGVbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGlzIGFsbG93cyB5b3UgdG8gc3VwcGx5IGEgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIGFwcGVhcmFuY2Ugb2YgZWxlbWVudHMuXG4gICAqIFRoZXkgb2JqZWN0cyBjb250YWluIGEgcHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgaXMgZXZhbHVhdGVkLCBhbG9uZyB3aXRoIGFuIG9wdGlvbiB0byBjb25maWd1cmUgdGhlXG4gICAqIGFwcGVhcmFuY2Ugb2YgdGhlIGVsZW1lbnQuXG4gICAqICAgZnVuY3Rpb25WaWV3OiBBcnJheSBvZiBvYmplY3RzXG4gICAqICAge1xuICAgKiAgICAgbmFtZTogc3RyaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSBvZiB2aWV3IHBhcnQ6IHlvdSBjYW4gYWRkL3JlbW92ZSBpdCB3aGVuIGl0IG5lZWRcbiAgICogICAgIGZ1bmM6IChlbGVtZW50OiBhbnksIHJlc3VsdD86IGFueSkgPT4gYm9vbGVhbiwgIC8vIHRoaXMgZmlsdGVyIGZ1bmN0aW9uIGNhbGN1bGF0ZSBjb25kaXRpb24gdG8gY2hhbmdlIHZpZXdcbiAgICogICAgIHZpZXc6IHtcbiAgICogICAgICAgaWNvbk5hbWU/OiBzdHJpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgbmFtZSBvZiBpY29uXG4gICAqICAgICAgIGljb25Db2xvcj86IHN0cmluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2VkIGNvbG9yIG9mIGljb25cbiAgICogICAgICAgdGV4dEJvbGQ/OiBzdHJpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgd2VpZ2h0IG9mIHRleHRcbiAgICogICAgICAgdGV4dENvbG9yPzogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgY29sb3Igb2YgdGV4dFxuICAgKiAgICAgfVxuICAgKiAgIH1cbiAgICovXG4gIEBJbnB1dCgpIGZ1bmN0aW9uVmlldzogSUZ1bmN0aW9uVmlld0xpbmVbXSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGVtaXR0ZWQgd2hlbiBhbiBlbGVtZW50IGlzIHNlbGVjdGVkIGJ5IGNsaWNraW5nIG9uIGl0LiBUaGUgc2VsZWN0ZWQgZWxlbWVudCBpcyBlbWl0dGVkIGFzIHRoZSBldmVudCB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUVsZW1lbnREdG8gfCBudWxsPigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGVtaXR0ZWQgd2hlbiBhbiBlbGVtZW50IGlzIHNlbGVjdGVkIGJ5IGRvdWJsZSBjbGlja2luZyBvbiBpdC4gVGhlIHNlbGVjdGVkIGVsZW1lbnQgaXMgZW1pdHRlZCBhcyB0aGUgZXZlbnQgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0RGJsQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElFbGVtZW50RHRvPigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGVtaXR0ZWQgd2hlbiBhbiBlbGVtZW50IGlzIHNlbGVjdGVkIGJ5IHJpZ2h0IGNsaWNraW5nIG9uIGl0LiBUaGUgc2VsZWN0ZWQgZWxlbWVudCBpcyBlbWl0dGVkIGFzIHRoZSBldmVudCB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZXh0TWVudUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb250ZXh0TWVudURhdGFUeXBlPigpO1xuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0ZWQgZWxlbWVudHMgaW4gdGhlIHRyZWUgYXJlIGNoYW5nZWQuIFRoZSBzZWxlY3RlZCBlbGVtZW50cyBhcmUgZW1pdHRlZCBhcyB0aGUgZXZlbnQgdmFsdWUuXG4gICAqIFNlbGVjdGVkIGVsZW1lbnRzIGFyZSBlbGVtZW50cyB3aG9zZSBjaGVja2JveGVzIGFyZSBjaGVja2VkLCBhbmQgYXJlIGRpZmZlcmVudCB0aGFuIGVsZW1lbnRzIHRoYXQgYXJlIGluIGFuIGFjdGl2ZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAqIFR5cGNpYWwgdXNlIGNhc2VzIGZvciB0aGlzIGluY2x1ZGUgZS5nLiBzZWxlY3RpbmcgbXVsdGlwbGUgZWxlbWVudHMgd2l0aGluIGEgc2VydmljZSBzcGVjaWZpY2F0aW9uIHdpdGhvdXRcbiAgICogYWN0dWFsbHkgZm9jdXNzaW5nIHRoZW0sIGUuZy4gZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEVsZW1lbnRzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0ZWRFbGVtZW50W10+KCk7XG5cbiAgQFZpZXdDaGlsZCgnYXZhVHJlZVdyYXBwZXInKSBhdmFUcmVlV3JhcHBlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdhdmFNYWluV3JhcHBlcicpIGF2YU1haW5XcmFwcGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2F2YVRyZWVGaWx0ZXJJbnB1dCcpIGF2YVRyZWVGaWx0ZXJJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIHNlbGVjdGVkRWxlbWVudDogSUVsZW1lbnREdG8gfCBudWxsID0gbnVsbDtcbiAgc2VydmljZVNwZWNpZmljYXRpb24hOiBTZXJ2aWNlU3BlY2lmaWNhdGlvbkR0bztcbiAgaXNMaXN0ZW5LZXlib2FyZCA9IGZhbHNlO1xuICBwcml2YXRlIGlzRW1pdGVTZWxlY3RlZEVsZW1lbnRzID0gZmFsc2U7XG4gIHByaXZhdGUgc2VsZWN0aW5nRWxlbWVudHNUcmVlRGF0YTogU2VsZWN0aW5nRWxlbWVudHNUeXBlW10gPSBbXTtcbiAgZmxhdEVsZW1lbnRzOiBJRWxlbWVudER0b1tdIHwgbnVsbCA9IG51bGw7XG4gIHByZXNlbGVjdGVkRWxlbWVudDogSUVsZW1lbnREdG8gfCBudWxsID0gbnVsbDtcbiAgZmlsdGVySW5wdXQgPSAnJztcbiAgbGlzdE1vZGVWaWV3VHlwZSA9IE1vZGVWaWV3VHlwZTtcbiAgcHJpdmF0ZSBmaWx0ZXIgPSAnJztcbiAgcHJpdmF0ZSAkZmlsdGVyID0gbmV3IFJlcGxheVN1YmplY3Q8c3RyaW5nPigxKTtcbiAgZmlsdGVyZWRFbGVtZW50TGlzdDogSUVsZW1lbnREdG9bXSA9IFtdO1xuICBwcml2YXRlICRkZXN0cm95ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgZmxhdEVsZW1lbnRzU2VydmljZTogRmxhdEVsZW1lbnRzU2VydmljZSxcbiAgICBAU2VsZigpIHByaXZhdGUgc2VsZWN0RWxlbWVudFNlcnZpY2U6IFNlbGVjdEVsZW1lbnRTZXJ2aWNlLFxuICAgIEBTZWxmKCkgcHJpdmF0ZSB0cmVlTm9kZVNlbGVjdGlvblNlcnZpY2U6IFRyZWVOb2RlU2VsZWN0aW9uU2VydmljZSxcbiAgICBAU2VsZigpIHByaXZhdGUgZXhwYW5kUGFyZW50R3JvdXBTZXJ2aWNlOiBFeHBhbmRQYXJlbnRHcm91cFNlcnZpY2UsXG4gICAgQFNlbGYoKSBwcml2YXRlIGtleWJvYXJkT3BlcmF0aW9uU2VydmljZTogS2V5Ym9hcmRPcGVyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5fdGV4dFdvcmRzID0geyAuLi5ERUZBVUxUX1RFWFRfV09SRFMgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0RWxlbWVudFNlcnZpY2UucHJlc2VsZWN0ZWRFbGVtZW50LnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpKS5zdWJzY3JpYmUoKGUpID0+ICh0aGlzLnByZXNlbGVjdGVkRWxlbWVudCA9IGUpKTtcbiAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNlbGVjdENsaWNrRWxlbWVudC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IGU7XG4gICAgICB0aGlzLnNlbGVjdENsaWNrLmVtaXQoZSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5zZWxlY3REYmxDbGlja0VsZW1lbnQucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZSkgPT4gdGhpcy5zZWxlY3REYmxDbGljay5lbWl0KGUpKTtcbiAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNlbGVjdENvbnRleHRNZW51RWxlbWVudC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChlKSA9PiB0aGlzLmNvbnRleHRNZW51RXZlbnQuZW1pdChlKSk7XG4gICAgdGhpcy5mbGF0RWxlbWVudHNTZXJ2aWNlLmZsYXRFbGVtZW50c0R0by5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLmZsYXRFbGVtZW50cyA9IGU7XG4gICAgICB0aGlzLmdldEZpbHRlcmVkTGlzdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kZmlsdGVyLnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMjUwKSkuc3Vic2NyaWJlKChmaWx0ZXIpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xuICAgICAgdGhpcy5nZXRGaWx0ZXJlZExpc3QoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVFdmVudExpc3RlbmVycygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuZmxhdEVsZW1lbnRzU2VydmljZS5saXN0RmlsdGVyRnVuYyA9IHRoaXMubGlzdEZpbHRlckZ1bmM7XG4gICAgdGhpcy5mbGF0RWxlbWVudHNTZXJ2aWNlLmZ1bmN0aW9uVmlldyA9IHRoaXMuZnVuY3Rpb25WaWV3O1xuXG4gICAgaWYgKGNoYW5nZXNbJ3Byb2plY3QnXSAmJiB0aGlzLnByb2plY3Q/LnNlcnZpY2VTcGVjaWZpY2F0aW9ucz8uWzBdKSB7XG4gICAgICB0aGlzLnNlcnZpY2VTcGVjaWZpY2F0aW9uID0gdGhpcy5wcm9qZWN0LnNlcnZpY2VTcGVjaWZpY2F0aW9uc1swXTtcbiAgICAgIHRoaXMuZmxhdEVsZW1lbnRzU2VydmljZS5zZXRFbGVtZW50c0R0byh0aGlzLnNlcnZpY2VTcGVjaWZpY2F0aW9uKTtcblxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25Nb2RlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW5nRWxlbWVudHNUcmVlRGF0YSA9IHRoaXMudHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlLmxvYWRTZWxlY3RpbmdFbGVtZW50cyh0aGlzLnNlcnZpY2VTcGVjaWZpY2F0aW9uLmVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UudHJlZU5vZGVTZWxlY3RpbmcucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNFbWl0ZVNlbGVjdGVkRWxlbWVudHMpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RpbmdUcmVlID0gdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZ2V0VHJlZVJvb3QodGhpcy5zZWxlY3RpbmdFbGVtZW50c1RyZWVEYXRhKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRzQ2hhbmdlZC5lbWl0KHNlbGVjdGluZ1RyZWUpO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoKGNoYW5nZXNbJ3NlbGVjdGVkTm9kZUlkJ10gJiYgdGhpcy5wcm9qZWN0KSB8fCBjaGFuZ2VzWydwcm9qZWN0J10pIHtcbiAgICAgIHRoaXMuZmxhdEVsZW1lbnRzU2VydmljZS5nZXRPbmVFbGVtZW50QnlJZCh0aGlzLnNlbGVjdGVkTm9kZUlkKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNldENsaWNrRWxlbWVudChlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25Nb2RlICYmIChjaGFuZ2VzWydpbml0aWFsbHlTZWxlY3RlZEVsZW1lbnRzJ10gfHwgY2hhbmdlc1sncHJvamVjdCddKSkge1xuICAgICAgdGhpcy5mb3JtU2VsZWN0aW5nTGlzdCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuJGRlc3Ryb3kubmV4dCh0cnVlKTtcbiAgICB0aGlzLiRkZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIG1vdXNlT3ZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNMaXN0ZW5LZXlib2FyZCkge1xuICAgICAgdGhpcy5pc0xpc3RlbktleWJvYXJkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYXZhVHJlZUZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3VzZU91dCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTGlzdGVuS2V5Ym9hcmQgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsS2V5Ym9hcmRFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3Qga2V5RXZlbnQgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xuICAgICAgaWYgKCF0aGlzLm1vdXNlQXdhcmVLZXlib2FyZENvbnRyb2wgfHwgdGhpcy5pc0xpc3RlbktleWJvYXJkKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnByZXNlbGVjdGVkRWxlbWVudCB8fCB0aGlzLnNlbGVjdGVkRWxlbWVudDtcblxuICAgICAgICBjb25zdCB7IG9wZXJhdGlvbiwgbmV4dEVsZW1lbnQgfSA9IHRoaXMua2V5Ym9hcmRPcGVyYXRpb25TZXJ2aWNlLmhhbmRsZUtleWJvYXJkRXZlbnQoa2V5RXZlbnQsIGVsZW1lbnQpIHx8IHsgbmV4dEVsZW1lbnQ6IG51bGwgfTtcbiAgICAgICAgc3dpdGNoIChvcGVyYXRpb24pIHtcbiAgICAgICAgICBjYXNlIEtleWJvYXJkT3BlcmF0aW9uVHlwZS5Nb3ZlU2VsZWN0ZWRQb3NpdGlvblVwOlxuICAgICAgICAgICAgdGhpcy5zaG93RWxlbWVudChuZXh0RWxlbWVudCwgJy5zZWxlY3QnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgS2V5Ym9hcmRPcGVyYXRpb25UeXBlLk1vdmVTZWxlY3RlZFBvc2l0aW9uRG93bjpcbiAgICAgICAgICAgIHRoaXMuc2hvd0VsZW1lbnQobmV4dEVsZW1lbnQsICcuc2VsZWN0Jyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEtleWJvYXJkT3BlcmF0aW9uVHlwZS5Nb3ZlQ2hvc2VuUG9zaXRpb25Eb3duOlxuICAgICAgICAgICAgdGhpcy5zaG93RWxlbWVudChuZXh0RWxlbWVudCwgbmV4dEVsZW1lbnQ/LmlkID09PSB0aGlzLnNlbGVjdGVkRWxlbWVudD8uaWQgPyAnLnNlbGVjdCcgOiAnLmNob29zZScpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBLZXlib2FyZE9wZXJhdGlvblR5cGUuTW92ZUNob3NlblBvc2l0aW9uVXA6XG4gICAgICAgICAgICB0aGlzLnNob3dFbGVtZW50KG5leHRFbGVtZW50LCBuZXh0RWxlbWVudD8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5pZCA/ICcuc2VsZWN0JyA6ICcuY2hvb3NlJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd0VsZW1lbnQoZWxlbWVudDogSUVsZW1lbnREdG8gfCBudWxsLCBuYW1lUXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBpZiAodGhpcy5tb2RlVmlldyA9PT0gTW9kZVZpZXdUeXBlLlRyZWUpIHtcbiAgICAgICAgdGhpcy5leHBhbmRQYXJlbnRHcm91cHMoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2Nyb2xsTGluZShuYW1lUXVlcnkpLCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbExpbmUobmFtZVF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5hdmFUcmVlV3JhcHBlcj8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzaG93ZWRFbGVtZW50ID0gdGhpcy5hdmFUcmVlV3JhcHBlcj8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKG5hbWVRdWVyeSkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoIXNob3dlZEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjaGlsZFJlY3QgPSBzaG93ZWRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChcbiAgICAgIGNoaWxkUmVjdC5ib3R0b20gPiBwYXJlbnRSZWN0LmJvdHRvbSB8fFxuICAgICAgY2hpbGRSZWN0LnRvcCA8IHBhcmVudFJlY3QudG9wIHx8XG4gICAgICAodGhpcy5tb2RlVmlldyA9PT0gTW9kZVZpZXdUeXBlLlRhYmxlICYmIGNoaWxkUmVjdC50b3AgPCBwYXJlbnRSZWN0LnRvcCArIDI0KVxuICAgICkge1xuICAgICAgc2hvd2VkRWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgIHRoaXMuYXZhVHJlZVdyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG8oeyBsZWZ0OiAwIH0pO1xuICAgICAgaWYgKHRoaXMubW9kZVZpZXcgPT09IE1vZGVWaWV3VHlwZS5UYWJsZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29ycmVjdFNjcm9sbFRhYmxlTGluZShzaG93ZWRFbGVtZW50LCBwYXJlbnRSZWN0KSwgMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb3JyZWN0U2Nyb2xsVGFibGVMaW5lKHNob3dlZEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwYXJlbnRSZWN0OiBET01SZWN0KTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRSZWN0ID0gc2hvd2VkRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoY2hpbGRSZWN0LnRvcCA8IHBhcmVudFJlY3QudG9wICsgMjQpIHtcbiAgICAgIHRoaXMuYXZhVHJlZVdyYXBwZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgLT0gMjQ7XG4gICAgfVxuICB9XG5cbiAgZXhwYW5kUGFyZW50R3JvdXBzKGVsZW1lbnQ6IElFbGVtZW50RHRvKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRQYXJlbnRHcm91cFNlcnZpY2UuZXhwYW5kUGFyZW50R3JvdXBzKGVsZW1lbnQsIHRoaXMuZmxhdEVsZW1lbnRzLCB0aGlzLmV4cGFuc2lvblN0YXRlKTtcbiAgfVxuXG4gIG9uRmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiRmaWx0ZXIubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBjaGFuZ2VBbGxFbGVtZW50c0V4cGFuc2lvblN0YXR1cyhpc0V4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFpc0V4cGFuZGVkKSB7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmV4cGFuc2lvblN0YXRlKS5mb3JFYWNoKChpZDogc3RyaW5nKSA9PiBkZWxldGUgdGhpcy5leHBhbnNpb25TdGF0ZVtpZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZsYXRFbGVtZW50cz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5lbGVtZW50VHlwZURpc2NyaW1pbmF0b3IgPT09ICdTZXJ2aWNlU3BlY2lmaWNhdGlvbkdyb3VwRHRvJykge1xuICAgICAgICAgIHRoaXMuZXhwYW5zaW9uU3RhdGVbaXRlbS5pZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvcm1TZWxlY3RpbmdMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNFbWl0ZVNlbGVjdGVkRWxlbWVudHMgPSBmYWxzZTtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbGx5U2VsZWN0ZWRFbGVtZW50cykge1xuICAgICAgdGhpcy5pc0VtaXRlU2VsZWN0ZWRFbGVtZW50cyA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZ2V0RmxhdFNlbGVjdGVkTGlzdElkKHRoaXMuaW5pdGlhbGx5U2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZmxhdFNlbGVjdGVkTGlzdElkLmZvckVhY2goKGlkLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuY2hhbmdlU2VsZWN0aW5nKHRydWUsIGlkKTtcbiAgICAgIGlmIChpbmRleCA9PT0gdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuZmxhdFNlbGVjdGVkTGlzdElkLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy5pc0VtaXRlU2VsZWN0ZWRFbGVtZW50cyA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZWxlY3RPckRlc2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50cmVlTm9kZVNlbGVjdGlvblNlcnZpY2UuY2hhbmdlQWxsKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRMaXN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsYXRFbGVtZW50cz8ubGVuZ3RoKSB7XG4gICAgICBpZiAoIXRoaXMuZmlsdGVyKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRFbGVtZW50TGlzdCA9IHRoaXMuZmxhdEVsZW1lbnRzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZEVsZW1lbnRMaXN0ID0gdGhpcy5mbGF0RWxlbWVudHMuZmlsdGVyKChpdGVtKSA9PiB0aGlzLmZsYXRFbGVtZW50c1NlcnZpY2UuY2hlY2tGaWx0ZXJWYWx1ZShpdGVtLCB0aGlzLmZpbHRlcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGZyb21FdmVudCh0aGlzLmF2YU1haW5XcmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWxlYXZlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm1vdXNlT3V0KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBmcm9tRXZlbnQodGhpcy5hdmFNYWluV3JhcHBlci5uYXRpdmVFbGVtZW50LCAnbW91c2VlbnRlcicpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tb3VzZU92ZXIoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGlmICghdGhpcy5pc1NlbGVjdGlvbk1vZGUpIHtcbiAgICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy4kZGVzdHJveSksXG4gICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMubW91c2VBd2FyZUtleWJvYXJkQ29udHJvbCB8fCB0aGlzLmlzTGlzdGVuS2V5Ym9hcmQpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVHbG9iYWxLZXlib2FyZEV2ZW50KGV2ZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIm1haW4td3JhcHBlclwiXG4gICNhdmFNYWluV3JhcHBlclxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb250cm9sXCJcbiAgICAjY29udHJvbFxuICA+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiY29udHJvbC1maWx0ZXJcIj5cbiAgICAgIDxtYXQtbGFiZWw+e3sgdGV4dFdvcmRzPy50ZXh0U2VhcmNoIH19PC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiZmlsdGVySW5wdXRcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgI2F2YVRyZWVGaWx0ZXJJbnB1dFxuICAgICAgLz5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlVmlldyA9PT0gbGlzdE1vZGVWaWV3VHlwZS5UcmVlXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiY29udHJvbC1pY29uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VBbGxFbGVtZW50c0V4cGFuc2lvblN0YXR1cyh0cnVlKVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRleHRXb3Jkcz8udG9vbHRpcEFsbE9wZW4gfHwgJydcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsYXllci1iYWNrZ3JvdW5kXCI+bGF5ZXJzPC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibGF5ZXItaWNvblwiPmFkZDwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJjb250cm9sLWljb25cIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cImNoYW5nZUFsbEVsZW1lbnRzRXhwYW5zaW9uU3RhdHVzKGZhbHNlKVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRleHRXb3Jkcz8udG9vbHRpcEFsbENsb3NlIHx8ICcnXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibGF5ZXItYmFja2dyb3VuZFwiPmxheWVyczwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImxheWVyLWljb25cIj5yZW1vdmU8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2VsZWN0aW9uTW9kZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2VsZWN0T3JEZXNlbGVjdEFsbCh0cnVlKVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRleHRXb3Jkcz8udG9vbHRpcEFsbEFkZCB8fCAnJ1wiXG4gICAgICAgIGNsYXNzPVwiY29udHJvbC1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3sgdGV4dFdvcmRzPy50ZXh0QWxsIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RPckRlc2VsZWN0QWxsKGZhbHNlKVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInRleHRXb3Jkcz8udG9vbHRpcEFsbFJlbW92ZSB8fCAnJ1wiXG4gICAgICAgIGNsYXNzPVwiY29udHJvbC1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3sgdGV4dFdvcmRzPy50ZXh0QWxsIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgW3N0eWxlLmhlaWdodF09XCInY2FsYygxMDAlIC0gJyArIGNvbnRyb2wub2Zmc2V0SGVpZ2h0ICsgJ3B4KSdcIlxuICAgIGNsYXNzPVwiYXZhLXRyZWUtd3JhcHBlclwiXG4gICAgI2F2YVRyZWVXcmFwcGVyXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmxhdEVsZW1lbnRzPy5sZW5ndGg7IGVsc2Ugbm90aGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkRWxlbWVudExpc3Q/Lmxlbmd0aDsgZWxzZSBub3RoaW5nRmlsdGVyZWRcIj5cbiAgICAgICAgPGF2YS10cmVlLXN0cnVjdHVyZVxuICAgICAgICAgICpuZ0lmPVwibW9kZVZpZXcgPT09IGxpc3RNb2RlVmlld1R5cGUuVHJlZSAmJiAhYXZhVHJlZUZpbHRlcklucHV0LnZhbHVlXCJcbiAgICAgICAgICBbc2VydmljZVNwZWNpZmljYXRpb25dPVwic2VydmljZVNwZWNpZmljYXRpb25cIlxuICAgICAgICAgIFtpbmRlbnRdPVwiaW5kZW50XCJcbiAgICAgICAgICBbZXhwYW5zaW9uU3RhdGVdPVwiZXhwYW5zaW9uU3RhdGVcIlxuICAgICAgICAgIFtpc1NlbGVjdGlvbk1vZGVdPVwiaXNTZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgICBbc2VsZWN0ZWRDb2xvcl09XCJzZWxlY3RlZENvbG9yXCJcbiAgICAgICAgICBbYWxsb3dEYmxDbGlja109XCJhbGxvd0RibENsaWNrXCJcbiAgICAgICAgPlxuICAgICAgICA8L2F2YS10cmVlLXN0cnVjdHVyZT5cbiAgICAgICAgPGF2YS1saXN0LXN0cnVjdHVyZVxuICAgICAgICAgICpuZ0lmPVwibW9kZVZpZXcgPT09IGxpc3RNb2RlVmlld1R5cGUuTGlzdCB8fCAobW9kZVZpZXcgPT09IGxpc3RNb2RlVmlld1R5cGUuVHJlZSAmJiBhdmFUcmVlRmlsdGVySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICBbZmlsdGVyZWRFbGVtZW50TGlzdF09XCJmaWx0ZXJlZEVsZW1lbnRMaXN0XCJcbiAgICAgICAgICBbaXNTZWxlY3Rpb25Nb2RlXT1cImlzU2VsZWN0aW9uTW9kZVwiXG4gICAgICAgICAgW3NlbGVjdGVkQ29sb3JdPVwic2VsZWN0ZWRDb2xvclwiXG4gICAgICAgICAgW2FsbG93RGJsQ2xpY2tdPVwiYWxsb3dEYmxDbGlja1wiXG4gICAgICAgID5cbiAgICAgICAgPC9hdmEtbGlzdC1zdHJ1Y3R1cmU+XG4gICAgICAgIDxhdmEtdGFibGUtc3RydWN0dXJlXG4gICAgICAgICAgKm5nSWY9XCJtb2RlVmlldyA9PT0gbGlzdE1vZGVWaWV3VHlwZS5UYWJsZVwiXG4gICAgICAgICAgW2ZpbHRlcmVkRWxlbWVudExpc3RdPVwiZmlsdGVyZWRFbGVtZW50TGlzdFwiXG4gICAgICAgICAgW2lzU2VsZWN0aW9uTW9kZV09XCJpc1NlbGVjdGlvbk1vZGVcIlxuICAgICAgICAgIFthZGRUYWJsZUNvbHVtbnNdPVwiYWRkVGFibGVDb2x1bW5zXCJcbiAgICAgICAgICBbc2VsZWN0ZWRDb2xvcl09XCJzZWxlY3RlZENvbG9yXCJcbiAgICAgICAgICBbYWxsb3dEYmxDbGlja109XCJhbGxvd0RibENsaWNrXCJcbiAgICAgICAgPlxuICAgICAgICA8L2F2YS10YWJsZS1zdHJ1Y3R1cmU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm90aGluZz5cbiAge3sgdGV4dFdvcmRzPy50ZXh0Tm90aGluZyB9fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm90aGluZ0ZpbHRlcmVkPlxuICB7eyB0ZXh0V29yZHM/LnRleHROb3RoaW5nRmlsdGVyZWQgfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -24,11 +24,11 @@ export class ListStructureComponent {
|
|
|
24
24
|
this.$destroy.complete();
|
|
25
25
|
}
|
|
26
26
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ListStructureComponent, deps: [{ token: i1.SelectElementService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ListStructureComponent, selector: "ava-list-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<ng-container *ngFor=\"let element of filteredElementList\">\
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ListStructureComponent, selector: "ava-list-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<ng-container *ngFor=\"let element of filteredElementList\">\n <div\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.background]=\"!isSelectionMode && element.id === selectedElement?.id ? selectedColor || '' : ''\"\n >\n <ava-tree-item\n [element]=\"element\"\n [isSelectionMode]=\"isSelectionMode\"\n [allowDblClick]=\"allowDblClick\"\n ></ava-tree-item>\n </div>\n</ng-container>\n", styles: [".select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.TreeItemComponent, selector: "ava-tree-item", inputs: ["element", "expansionState", "isSelectionMode", "allowDblClick"] }] }); }
|
|
28
28
|
}
|
|
29
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ListStructureComponent, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
|
-
args: [{ selector: 'ava-list-structure', template: "<ng-container *ngFor=\"let element of filteredElementList\">\
|
|
31
|
+
args: [{ selector: 'ava-list-structure', template: "<ng-container *ngFor=\"let element of filteredElementList\">\n <div\n [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n [style.background]=\"!isSelectionMode && element.id === selectedElement?.id ? selectedColor || '' : ''\"\n >\n <ava-tree-item\n [element]=\"element\"\n [isSelectionMode]=\"isSelectionMode\"\n [allowDblClick]=\"allowDblClick\"\n ></ava-tree-item>\n </div>\n</ng-container>\n", styles: [".select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}\n"] }]
|
|
32
32
|
}], ctorParameters: () => [{ type: i1.SelectElementService }], propDecorators: { filteredElementList: [{
|
|
33
33
|
type: Input
|
|
34
34
|
}], isSelectionMode: [{
|
|
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
38
38
|
}], allowDblClick: [{
|
|
39
39
|
type: Input
|
|
40
40
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zdHJ1Y3R1cmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvbGlzdC1zdHJ1Y3R1cmUvbGlzdC1zdHJ1Y3R1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvbGlzdC1zdHJ1Y3R1cmUvbGlzdC1zdHJ1Y3R1cmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVUxQyxNQUFNLE9BQU8sc0JBQXNCO0lBU2pDLFlBQW1CLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBUnBELHdCQUFtQixHQUFrQixFQUFFLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTlCLG9CQUFlLEdBQXVCLElBQUksQ0FBQztRQUNuQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVzQixDQUFDO0lBRWpFLFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNoRyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQXBCVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixzTkNabkMsbWNBWUE7OzJGREFhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxvQkFBb0I7eUZBS3JCLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJRWxlbWVudER0byB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IFNlbGVjdEVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VsZWN0LWVsZW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F2YS1saXN0LXN0cnVjdHVyZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXN0cnVjdHVyZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3Qtc3RydWN0dXJlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTGlzdFN0cnVjdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KCkgZmlsdGVyZWRFbGVtZW50TGlzdDogSUVsZW1lbnREdG9bXSA9IFtdO1xuICBASW5wdXQoKSBpc1NlbGVjdGlvbk1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VsZWN0ZWRDb2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGFsbG93RGJsQ2xpY2sgPSB0cnVlO1xuXG4gIHNlbGVjdGVkRWxlbWVudDogSUVsZW1lbnREdG8gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSAkZGVzdHJveSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHNlbGVjdEVsZW1lbnRTZXJ2aWNlOiBTZWxlY3RFbGVtZW50U2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNlbGVjdENsaWNrRWxlbWVudC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChlbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiRkZXN0cm95Lm5leHQodHJ1ZSk7XG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIGZpbHRlcmVkRWxlbWVudExpc3RcIj5cbiAgPGRpdlxuICAgIFtjbGFzcy5zZWxlY3RdPVwiIWlzU2VsZWN0aW9uTW9kZSAmJiBlbGVtZW50LmlkID09PSBzZWxlY3RlZEVsZW1lbnQ/LmlkXCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZF09XCIhaXNTZWxlY3Rpb25Nb2RlICYmIGVsZW1lbnQuaWQgPT09IHNlbGVjdGVkRWxlbWVudD8uaWQgPyBzZWxlY3RlZENvbG9yIHx8ICcnIDogJydcIlxuICA+XG4gICAgPGF2YS10cmVlLWl0ZW1cbiAgICAgIFtlbGVtZW50XT1cImVsZW1lbnRcIlxuICAgICAgW2lzU2VsZWN0aW9uTW9kZV09XCJpc1NlbGVjdGlvbk1vZGVcIlxuICAgICAgW2FsbG93RGJsQ2xpY2tdPVwiYWxsb3dEYmxDbGlja1wiXG4gICAgPjwvYXZhLXRyZWUtaXRlbT5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -91,11 +91,11 @@ export class TableStructureComponent {
|
|
|
91
91
|
this.treeNodeSelectionService.changeSelecting(event, element.id);
|
|
92
92
|
}
|
|
93
93
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TableStructureComponent, deps: [{ token: i1.SelectElementService }, { token: i2.TreeNodeSelectionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: TableStructureComponent, selector: "ava-table-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", addTableColumns: "addTableColumns", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<table\
|
|
94
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: TableStructureComponent, selector: "ava-table-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", addTableColumns: "addTableColumns", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let oneColumn of addTableColumns\">\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.SaveChangingViewDirective, selector: "[saveChangingView]", inputs: ["attributeValue"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i9.ElementIconNamePipe, name: "elementIconName" }, { kind: "pipe", type: i10.ElementTextPipe, name: "elementText" }, { kind: "pipe", type: i11.ElementItemNumberPipe, name: "elementItemNumber" }] }); }
|
|
95
95
|
}
|
|
96
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TableStructureComponent, decorators: [{
|
|
97
97
|
type: Component,
|
|
98
|
-
args: [{ selector: 'ava-table-structure', template: "<table\
|
|
98
|
+
args: [{ selector: 'ava-table-structure', template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let oneColumn of addTableColumns\">\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"] }]
|
|
99
99
|
}], ctorParameters: () => [{ type: i1.SelectElementService }, { type: i2.TreeNodeSelectionService }, { type: i0.ChangeDetectorRef }], propDecorators: { filteredElementList: [{
|
|
100
100
|
type: Input
|
|
101
101
|
}], isSelectionMode: [{
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
|
|
|
107
107
|
}], allowDblClick: [{
|
|
108
108
|
type: Input
|
|
109
109
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RydWN0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXZhL3NyYy9saWIvYXZhLXRyZWUvdHJlZS9jb21wb25lbnRzL3RhYmxlLXN0cnVjdHVyZS90YWJsZS1zdHJ1Y3R1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvdGFibGUtc3RydWN0dXJlL3RhYmxlLXN0cnVjdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVczQyxNQUFNLE9BQU8sdUJBQXVCO0lBaUJsQyxZQUNTLG9CQUEwQyxFQUN6Qyx3QkFBa0QsRUFDbEQsR0FBc0I7UUFGdkIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUN6Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkJ2Qix3QkFBbUIsR0FBa0IsRUFBRSxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFlLEdBQXNCLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDOUIscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQy9CLG9CQUFlLEdBQXVCLElBQUksQ0FBQztRQUMzQyx1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ckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IElFbGVtZW50RHRvLCBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbCc7XHJcbmltcG9ydCB7IFNlbGVjdGluZ0VsZW1lbnRzVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL3NlbGVjdGluZy5tb2RlbCc7XHJcbmltcG9ydCB7IFNlbGVjdEVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VsZWN0LWVsZW1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRyZWVOb2RlU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyZWUtbm9kZS1zZWxlY3Rpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F2YS10YWJsZS1zdHJ1Y3R1cmUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1zdHJ1Y3R1cmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLXN0cnVjdHVyZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVN0cnVjdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBmaWx0ZXJlZEVsZW1lbnRMaXN0OiBJRWxlbWVudER0b1tdID0gW107XHJcbiAgQElucHV0KCkgaXNTZWxlY3Rpb25Nb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWRkVGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtblR5cGVbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGFsbG93RGJsQ2xpY2sgPSB0cnVlO1xyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgcHJpdmF0ZSBpc0FsbG93T25lQ2xpY2sgPSB0cnVlO1xyXG4gIHNlbGVjdGVkRWxlbWVudDogSUVsZW1lbnREdG8gfCBudWxsID0gbnVsbDtcclxuICBwcmVzZWxlY3RlZEVsZW1lbnQ6IElFbGVtZW50RHRvIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB0aW1lclN0b3A6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XHJcbiAgY2hlY2tlZEVsZW1lbnRzOiB7XHJcbiAgICBbZWxlbWVudElkOiBzdHJpbmddOiBTZWxlY3RpbmdFbGVtZW50c1R5cGU7XHJcbiAgfSA9IHt9O1xyXG5cclxuICBwcml2YXRlICRkZXN0cm95ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VsZWN0RWxlbWVudFNlcnZpY2U6IFNlbGVjdEVsZW1lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmVlTm9kZVNlbGVjdGlvblNlcnZpY2U6IFRyZWVOb2RlU2VsZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNlbGVjdENsaWNrRWxlbWVudC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gZWxlbWVudDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5wcmVzZWxlY3RlZEVsZW1lbnQucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZWxlbWVudCkgPT4ge1xyXG4gICAgICB0aGlzLnByZXNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvbk1vZGUpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydpY29uJywgJ2NoZWNrYm94JywgJ2l0ZW1OdW1iZXInLCAndGV4dCcsIC4uLnRoaXMuYWRkVGFibGVDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKV07XHJcbiAgICAgIHRoaXMudHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlLnRyZWVOb2RlU2VsZWN0aW5nLnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpKS5zdWJzY3JpYmUoKHRyZWVOb2RlU2VsZWN0aW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja2VkRWxlbWVudHMgPSB0cmVlTm9kZVNlbGVjdGluZztcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydpY29uJywgJ2l0ZW1OdW1iZXInLCAndGV4dCcsIC4uLnRoaXMuYWRkVGFibGVDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5uYW1lKV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGltZXJTdG9wICYmIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyU3RvcCk7XHJcblxyXG4gICAgdGhpcy4kZGVzdHJveS5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0KHJvdzogSUVsZW1lbnREdG8pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzU2VsZWN0aW9uTW9kZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2xpY2tFbGVtZW50ID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNldENsaWNrRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudD8uaWQgPT09IHJvdy5pZCA/IG51bGwgOiByb3cpO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYWxsb3dEYmxDbGljaykge1xyXG4gICAgICBjbGlja0VsZW1lbnQoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FsbG93T25lQ2xpY2spIHtcclxuICAgICAgdGhpcy5pc0FsbG93T25lQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy50aW1lclN0b3AgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjbGlja0VsZW1lbnQoKTtcclxuICAgICAgICB0aGlzLmlzQWxsb3dPbmVDbGljayA9IHRydWU7XHJcbiAgICAgIH0sIGRlZmF1bHRzLmRvdWJsZUNsaWNrVGltZW91dEluTWlsbGlzZWNvbmRzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRibFNlbGVjdChyb3c6IElFbGVtZW50RHRvKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuYWxsb3dEYmxDbGljaykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25Nb2RlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRpbWVyU3RvcCAmJiBjbGVhclRpbWVvdXQodGhpcy50aW1lclN0b3ApO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0RWxlbWVudFNlcnZpY2Uuc2V0RGJsQ2xpY2tFbGVtZW50KHJvdyk7XHJcbiAgICB0aGlzLmlzQWxsb3dPbmVDbGljayA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvcGVuQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogSUVsZW1lbnREdG8pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNldENvbnRleHRNZW51RWxlbWVudCh7IHBvc2l0aW9uOiB7IHg6IGAke2V2ZW50Lnh9cHhgLCB5OiBgJHtldmVudC55fXB4YCB9LCBub2RlOiByb3cgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VTZWxlY3RpbmcoZWxlbWVudDogSUVsZW1lbnREdG8sIGV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyZWVOb2RlU2VsZWN0aW9uU2VydmljZS5jaGFuZ2VTZWxlY3RpbmcoZXZlbnQsIGVsZW1lbnQuaWQpO1xyXG4gIH1cclxufVxyXG4iLCI8dGFibGVcclxuICBtYXQtdGFibGVcclxuICBbZGF0YVNvdXJjZV09XCJmaWx0ZXJlZEVsZW1lbnRMaXN0XCJcclxuPlxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaWNvblwiPlxyXG4gICAgPHRoXHJcbiAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgPjwvdGg+XHJcbiAgICA8dGRcclxuICAgICAgbWF0LWNlbGxcclxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsLXNtYWxsLXdpZHRoXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgY2xhc3M9XCJpY29uLWVsZW1lbnRcIlxyXG4gICAgICAgIHNhdmVDaGFuZ2luZ1ZpZXc9XCJpY29uXCJcclxuICAgICAgICBbaWRdPVwicm93LmlkXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHJvdyB8IGVsZW1lbnRJY29uTmFtZSB9fVxyXG4gICAgICA8L21hdC1pY29uPlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjaGVja2JveFwiPlxyXG4gICAgPHRoXHJcbiAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgPjwvdGg+XHJcbiAgICA8dGRcclxuICAgICAgbWF0LWNlbGxcclxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiXHJcbiAgICAgIGNsYXNzPVwidGFibGUtY2VsbC1zbWFsbC13aWR0aFwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIFtpbmRldGVybWluYXRlXT1cImNoZWNrZWRFbGVtZW50c1tlbGVtZW50LmlkXS5pbmRldGVybWluYXRlXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNrZWRFbGVtZW50c1tlbGVtZW50LmlkXS5jaGVja2VkXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VTZWxlY3RpbmcoZWxlbWVudCwgJGV2ZW50KVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIml0ZW1OdW1iZXJcIj5cclxuICAgIDx0aFxyXG4gICAgICBtYXQtaGVhZGVyLWNlbGxcclxuICAgICAgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgID5cclxuICAgICAgT1pcclxuICAgIDwvdGg+XHJcbiAgICA8dGRcclxuICAgICAgbWF0LWNlbGxcclxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcclxuICAgICAgW3N0eWxlLndpZHRoLmNoXT1cInJvdz8uaXRlbU51bWJlcj8uc3RyaW5nUmVwcmVzZW50YXRpb24ubGVuZ3RoXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1lbGVtZW50XCJcclxuICAgICAgICBzYXZlQ2hhbmdpbmdWaWV3PVwidGV4dFwiXHJcbiAgICAgICAgW2lkXT1cInJvdy5pZFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyByb3cgfCBlbGVtZW50SXRlbU51bWJlciB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidGV4dFwiPlxyXG4gICAgPHRoXHJcbiAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgPlxyXG4gICAgICBUZXh0XHJcbiAgICA8L3RoPlxyXG4gICAgPHRkXHJcbiAgICAgIG1hdC1jZWxsXHJcbiAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXHJcbiAgICAgIGNsYXNzPVwidGFibGUtdGV4dFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRleHQtZWxlbWVudFwiXHJcbiAgICAgICAgc2F2ZUNoYW5naW5nVmlldz1cInRleHRcIlxyXG4gICAgICAgIFtpZF09XCJyb3cuaWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgcm93IHwgZWxlbWVudFRleHQgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvbmVDb2x1bW4gb2YgYWRkVGFibGVDb2x1bW5zXCI+XHJcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IG9uZUNvbHVtbi5uYW1lIH19XCI+XHJcbiAgICAgIDx0aFxyXG4gICAgICAgIG1hdC1oZWFkZXItY2VsbFxyXG4gICAgICAgICptYXRIZWFkZXJDZWxsRGVmXHJcbiAgICAgID5cclxuICAgICAgICB7eyBvbmVDb2x1bW4udGl0bGUgfX1cclxuICAgICAgPC90aD5cclxuICAgICAgPHRkXHJcbiAgICAgICAgbWF0LWNlbGxcclxuICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW3N0eWxlLnRleHRBbGlnbl09XCJvbmVDb2x1bW4uYWxpZ25cIlxyXG4gICAgICAgICAgc2F2ZUNoYW5naW5nVmlldz1cInRleHRcIlxyXG4gICAgICAgICAgW2lkXT1cInJvdy5pZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgIW9uZUNvbHVtbi5udW1iZXJGb3JtYXQgPyByb3dbb25lQ29sdW1uLm5hbWVdIDogKHJvd1tvbmVDb2x1bW4ubmFtZV0gfCBudW1iZXI6IG9uZUNvbHVtbi5udW1iZXJGb3JtYXQpIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPHRyXHJcbiAgICBtYXQtaGVhZGVyLXJvd1xyXG4gICAgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiXHJcbiAgICBjbGFzcz1cIm1hdC1oZWFkZXItcm93XCJcclxuICA+PC90cj5cclxuICA8dHJcclxuICAgIG1hdC1yb3dcclxuICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCJcclxuICAgIChjbGljayk9XCJzZWxlY3Qocm93KVwiXHJcbiAgICAoZGJsY2xpY2spPVwiZGJsU2VsZWN0KHJvdylcIlxyXG4gICAgKGNvbnRleHRtZW51KT1cIm9wZW5Db250ZXh0TWVudSgkZXZlbnQsIHJvdylcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICBjaG9vc2U6ICFpc1NlbGVjdGlvbk1vZGUgJiYgcm93LmlkID09PSBwcmVzZWxlY3RlZEVsZW1lbnQ/LmlkLFxyXG4gICAgICBzZWxlY3Q6ICFpc1NlbGVjdGlvbk1vZGUgJiYgcm93LmlkID09PSBzZWxlY3RlZEVsZW1lbnQ/LmlkXHJcbiAgICB9XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIiFpc1NlbGVjdGlvbk1vZGUgJiYgcm93LmlkID09PSBzZWxlY3RlZEVsZW1lbnQ/LmlkID8gc2VsZWN0ZWRDb2xvciB8fCAnJyA6ICcnXCJcclxuICAgIFtpZF09XCJyb3cuaWRcIlxyXG4gID48L3RyPlxyXG48L3RhYmxlPlxyXG4iXX0=
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RydWN0dXJlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItYXZhL3NyYy9saWIvYXZhLXRyZWUvdHJlZS9jb21wb25lbnRzL3RhYmxlLXN0cnVjdHVyZS90YWJsZS1zdHJ1Y3R1cmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1hdmEvc3JjL2xpYi9hdmEtdHJlZS90cmVlL2NvbXBvbmVudHMvdGFibGUtc3RydWN0dXJlL3RhYmxlLXN0cnVjdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVczQyxNQUFNLE9BQU8sdUJBQXVCO0lBaUJsQyxZQUNTLG9CQUEwQyxFQUN6Qyx3QkFBa0QsRUFDbEQsR0FBc0I7UUFGdkIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUN6Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkJ2Qix3QkFBbUIsR0FBa0IsRUFBRSxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFlLEdBQXNCLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDOUIscUJBQWdCLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQy9CLG9CQUFlLEdBQXVCLElBQUksQ0FBQztRQUMzQyx1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ckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSUVsZW1lbnREdG8sIFRhYmxlQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IFNlbGVjdGluZ0VsZW1lbnRzVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsL3NlbGVjdGluZy5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlbGVjdC1lbGVtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJlZS1ub2RlLXNlbGVjdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXZhLXRhYmxlLXN0cnVjdHVyZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1zdHJ1Y3R1cmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1zdHJ1Y3R1cmUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVN0cnVjdHVyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZmlsdGVyZWRFbGVtZW50TGlzdDogSUVsZW1lbnREdG9bXSA9IFtdO1xuICBASW5wdXQoKSBpc1NlbGVjdGlvbk1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgYWRkVGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtblR5cGVbXSA9IFtdO1xuICBASW5wdXQoKSBzZWxlY3RlZENvbG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgYWxsb3dEYmxDbGljayA9IHRydWU7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaXNBbGxvd09uZUNsaWNrID0gdHJ1ZTtcbiAgc2VsZWN0ZWRFbGVtZW50OiBJRWxlbWVudER0byB8IG51bGwgPSBudWxsO1xuICBwcmVzZWxlY3RlZEVsZW1lbnQ6IElFbGVtZW50RHRvIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdGltZXJTdG9wOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBjaGVja2VkRWxlbWVudHM6IHtcbiAgICBbZWxlbWVudElkOiBzdHJpbmddOiBTZWxlY3RpbmdFbGVtZW50c1R5cGU7XG4gIH0gPSB7fTtcblxuICBwcml2YXRlICRkZXN0cm95ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VsZWN0RWxlbWVudFNlcnZpY2U6IFNlbGVjdEVsZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlOiBUcmVlTm9kZVNlbGVjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdEVsZW1lbnRTZXJ2aWNlLnNlbGVjdENsaWNrRWxlbWVudC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChlbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5wcmVzZWxlY3RlZEVsZW1lbnQucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZWxlbWVudCkgPT4ge1xuICAgICAgdGhpcy5wcmVzZWxlY3RlZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25Nb2RlKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBbJ2ljb24nLCAnY2hlY2tib3gnLCAnaXRlbU51bWJlcicsICd0ZXh0JywgLi4udGhpcy5hZGRUYWJsZUNvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpXTtcbiAgICAgIHRoaXMudHJlZU5vZGVTZWxlY3Rpb25TZXJ2aWNlLnRyZWVOb2RlU2VsZWN0aW5nLnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpKS5zdWJzY3JpYmUoKHRyZWVOb2RlU2VsZWN0aW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tlZEVsZW1lbnRzID0gdHJlZU5vZGVTZWxlY3Rpbmc7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBbJ2ljb24nLCAnaXRlbU51bWJlcicsICd0ZXh0JywgLi4udGhpcy5hZGRUYWJsZUNvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLm5hbWUpXTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVyU3RvcCAmJiBjbGVhclRpbWVvdXQodGhpcy50aW1lclN0b3ApO1xuXG4gICAgdGhpcy4kZGVzdHJveS5uZXh0KHRydWUpO1xuICAgIHRoaXMuJGRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG4gIHNlbGVjdChyb3c6IElFbGVtZW50RHRvKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3Rpb25Nb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2xpY2tFbGVtZW50ID0gKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5zZXRDbGlja0VsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmlkID09PSByb3cuaWQgPyBudWxsIDogcm93KTtcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmFsbG93RGJsQ2xpY2spIHtcbiAgICAgIGNsaWNrRWxlbWVudCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FsbG93T25lQ2xpY2spIHtcbiAgICAgIHRoaXMuaXNBbGxvd09uZUNsaWNrID0gZmFsc2U7XG4gICAgICB0aGlzLnRpbWVyU3RvcCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjbGlja0VsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5pc0FsbG93T25lQ2xpY2sgPSB0cnVlO1xuICAgICAgfSwgZGVmYXVsdHMuZG91YmxlQ2xpY2tUaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICAgIH1cbiAgfVxuXG4gIGRibFNlbGVjdChyb3c6IElFbGVtZW50RHRvKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFsbG93RGJsQ2xpY2spIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGlvbk1vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpbWVyU3RvcCAmJiBjbGVhclRpbWVvdXQodGhpcy50aW1lclN0b3ApO1xuXG4gICAgdGhpcy5zZWxlY3RFbGVtZW50U2VydmljZS5zZXREYmxDbGlja0VsZW1lbnQocm93KTtcbiAgICB0aGlzLmlzQWxsb3dPbmVDbGljayA9IHRydWU7XG4gIH1cblxuICBvcGVuQ29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIHJvdzogSUVsZW1lbnREdG8pOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuc2VsZWN0RWxlbWVudFNlcnZpY2Uuc2V0Q29udGV4dE1lbnVFbGVtZW50KHsgcG9zaXRpb246IHsgeDogYCR7ZXZlbnQueH1weGAsIHk6IGAke2V2ZW50Lnl9cHhgIH0sIG5vZGU6IHJvdyB9KTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGluZyhlbGVtZW50OiBJRWxlbWVudER0bywgZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnRyZWVOb2RlU2VsZWN0aW9uU2VydmljZS5jaGFuZ2VTZWxlY3RpbmcoZXZlbnQsIGVsZW1lbnQuaWQpO1xuICB9XG59XG4iLCI8dGFibGVcbiAgbWF0LXRhYmxlXG4gIFtkYXRhU291cmNlXT1cImZpbHRlcmVkRWxlbWVudExpc3RcIlxuPlxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImljb25cIj5cbiAgICA8dGhcbiAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICA+PC90aD5cbiAgICA8dGRcbiAgICAgIG1hdC1jZWxsXG4gICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsLXNtYWxsLXdpZHRoXCJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgY2xhc3M9XCJpY29uLWVsZW1lbnRcIlxuICAgICAgICBzYXZlQ2hhbmdpbmdWaWV3PVwiaWNvblwiXG4gICAgICAgIFtpZF09XCJyb3cuaWRcIlxuICAgICAgPlxuICAgICAgICB7eyByb3cgfCBlbGVtZW50SWNvbk5hbWUgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjaGVja2JveFwiPlxuICAgIDx0aFxuICAgICAgbWF0LWhlYWRlci1jZWxsXG4gICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgID48L3RoPlxuICAgIDx0ZFxuICAgICAgbWF0LWNlbGxcbiAgICAgICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIlxuICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsLXNtYWxsLXdpZHRoXCJcbiAgICA+XG4gICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgIGNsYXNzPVwiY2hlY2tib3hcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJjaGVja2VkRWxlbWVudHNbZWxlbWVudC5pZF0uaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tlZEVsZW1lbnRzW2VsZW1lbnQuaWRdLmNoZWNrZWRcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VTZWxlY3RpbmcoZWxlbWVudCwgJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpdGVtTnVtYmVyXCI+XG4gICAgPHRoXG4gICAgICBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgPlxuICAgICAgT1pcbiAgICA8L3RoPlxuICAgIDx0ZFxuICAgICAgbWF0LWNlbGxcbiAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXG4gICAgICBbc3R5bGUud2lkdGguY2hdPVwicm93Py5pdGVtTnVtYmVyPy5zdHJpbmdSZXByZXNlbnRhdGlvbi5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsZW1lbnRcIlxuICAgICAgICBzYXZlQ2hhbmdpbmdWaWV3PVwidGV4dFwiXG4gICAgICAgIFtpZF09XCJyb3cuaWRcIlxuICAgICAgPlxuICAgICAgICB7eyByb3cgfCBlbGVtZW50SXRlbU51bWJlciB9fVxuICAgICAgPC9kaXY+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ0ZXh0XCI+XG4gICAgPHRoXG4gICAgICBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgPlxuICAgICAgVGV4dFxuICAgIDwvdGg+XG4gICAgPHRkXG4gICAgICBtYXQtY2VsbFxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcbiAgICAgIGNsYXNzPVwidGFibGUtdGV4dFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRleHQtZWxlbWVudFwiXG4gICAgICAgIHNhdmVDaGFuZ2luZ1ZpZXc9XCJ0ZXh0XCJcbiAgICAgICAgW2lkXT1cInJvdy5pZFwiXG4gICAgICA+XG4gICAgICAgIHt7IHJvdyB8IGVsZW1lbnRUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvbmVDb2x1bW4gb2YgYWRkVGFibGVDb2x1bW5zXCI+XG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBvbmVDb2x1bW4ubmFtZSB9fVwiPlxuICAgICAgPHRoXG4gICAgICAgIG1hdC1oZWFkZXItY2VsbFxuICAgICAgICAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgPlxuICAgICAgICB7eyBvbmVDb2x1bW4udGl0bGUgfX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS50ZXh0QWxpZ25dPVwib25lQ29sdW1uLmFsaWduXCJcbiAgICAgICAgICBzYXZlQ2hhbmdpbmdWaWV3PVwidGV4dFwiXG4gICAgICAgICAgW2lkXT1cInJvdy5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAhb25lQ29sdW1uLm51bWJlckZvcm1hdCA/IHJvd1tvbmVDb2x1bW4ubmFtZV0gOiAocm93W29uZUNvbHVtbi5uYW1lXSB8IG51bWJlcjogb25lQ29sdW1uLm51bWJlckZvcm1hdCkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8dHJcbiAgICBtYXQtaGVhZGVyLXJvd1xuICAgICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIlxuICAgIGNsYXNzPVwibWF0LWhlYWRlci1yb3dcIlxuICA+PC90cj5cbiAgPHRyXG4gICAgbWF0LXJvd1xuICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zXCJcbiAgICAoY2xpY2spPVwic2VsZWN0KHJvdylcIlxuICAgIChkYmxjbGljayk9XCJkYmxTZWxlY3Qocm93KVwiXG4gICAgKGNvbnRleHRtZW51KT1cIm9wZW5Db250ZXh0TWVudSgkZXZlbnQsIHJvdylcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIGNob29zZTogIWlzU2VsZWN0aW9uTW9kZSAmJiByb3cuaWQgPT09IHByZXNlbGVjdGVkRWxlbWVudD8uaWQsXG4gICAgICBzZWxlY3Q6ICFpc1NlbGVjdGlvbk1vZGUgJiYgcm93LmlkID09PSBzZWxlY3RlZEVsZW1lbnQ/LmlkXG4gICAgfVwiXG4gICAgW3N0eWxlLmJhY2tncm91bmRdPVwiIWlzU2VsZWN0aW9uTW9kZSAmJiByb3cuaWQgPT09IHNlbGVjdGVkRWxlbWVudD8uaWQgPyBzZWxlY3RlZENvbG9yIHx8ICcnIDogJydcIlxuICAgIFtpZF09XCJyb3cuaWRcIlxuICA+PC90cj5cbjwvdGFibGU+XG4iXX0=
|