ngx-tethys 18.0.1 → 18.0.3
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/CHANGELOG.md +24 -0
- package/anchor/anchor.component.d.ts +2 -3
- package/esm2022/anchor/anchor.component.mjs +5 -6
- package/esm2022/cascader/cascader-search-option.component.mjs +4 -4
- package/esm2022/notify/notify.component.mjs +3 -3
- package/esm2022/tree-select/tree-select.component.mjs +3 -3
- package/esm2022/upload/file-drop.directive.mjs +4 -3
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-anchor.mjs +4 -5
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +3 -3
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +2 -2
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +2 -2
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +2 -1
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
|
@@ -628,7 +628,7 @@ export class ThyTreeSelectNodes {
|
|
|
628
628
|
return index;
|
|
629
629
|
}
|
|
630
630
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTreeSelectNodes, deps: [{ token: ThyTreeSelect }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
631
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ThyTreeSelectNodes, isStandalone: true, selector: "thy-tree-select-nodes", inputs: { treeNodes: "treeNodes", thyVirtualScroll: "thyVirtualScroll" }, host: { properties: { "attr.tabindex": "-1", "class": "this.class" } }, ngImport: i0, template: "<div class=\"thy-tree-select-options\" *ngIf=\"nodeList?.length > 0; else emptyPlaceholder\">\n <div class=\"thy-tree-select-node\">\n <ng-container *ngIf=\"!thyVirtualScroll\">\n <ng-container
|
|
631
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ThyTreeSelectNodes, isStandalone: true, selector: "thy-tree-select-nodes", inputs: { treeNodes: "treeNodes", thyVirtualScroll: "thyVirtualScroll" }, host: { properties: { "attr.tabindex": "-1", "class": "this.class" } }, ngImport: i0, template: "<div class=\"thy-tree-select-options\" *ngIf=\"nodeList?.length > 0; else emptyPlaceholder\">\n <div class=\"thy-tree-select-node\">\n <ng-container *ngIf=\"!thyVirtualScroll\">\n <ng-container\n *ngFor=\"let node of nodeList\"\n [ngTemplateOutlet]=\"treeSelectNode\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n </ng-container>\n\n <cdk-virtual-scroll-viewport #viewport *ngIf=\"thyVirtualScroll\" [itemSize]=\"defaultItemSize\" [style.height]=\"thyVirtualHeight\">\n <ng-container *cdkVirtualFor=\"let node of nodeList; trackBy: tabTrackBy\">\n <ng-template [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </div>\n</div>\n\n<ng-template #emptyPlaceholder>\n <thy-empty class=\"thy-select-empty-content\" thySize=\"sm\" [thyMessage]=\"parent.thyEmptyOptionsText\"></thy-empty>\n</ng-template>\n\n<ng-template #treeSelectNode let-node>\n <ng-container>\n <a\n class=\"thy-option-item\"\n [ngClass]=\"{ active: treeNodeIsSelected(node), 'pl-0': hasNodeChildren }\"\n [class.disabled]=\"treeNodeIsDisable(node)\"\n [ngStyle]=\"{ 'padding-left.px': 20 * node.level + parent.icons.gap }\"\n (click)=\"selectTreeNode($event, node)\"\n *ngIf=\"!treeNodeIsHidden(node)\">\n <span\n class=\"thy-tree-select-option-icon\"\n [class.invisible]=\"!(node.children?.length > 0 || (node[childCountKey] && node[childCountKey] > 0))\"\n (click)=\"nodeExpandToggle($event, node)\">\n <thy-icon class=\"node-expand-icon\" [thyIconName]=\"treeNodeIsExpand(node) ? parent.icons.expand : parent.icons.collapse\"></thy-icon>\n </span>\n <span class=\"thy-tree-select-option-text\" [ngClass]=\"{ 'ml-1': hasNodeChildren }\">\n <ng-template\n *ngIf=\"treeNodeTemplateRef; else defaultNodeText\"\n [ngTemplateOutlet]=\"treeNodeTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n <ng-template #defaultNodeText>\n <span thyFlexibleText [thyTooltipContent]=\"node[showKey]\">{{ node[showKey] }}</span>\n </ng-template>\n </span>\n <thy-icon class=\"checked-icon\" *ngIf=\"isMultiple\" thyIconName=\"check\"></thy-icon>\n </a>\n <ng-container *ngIf=\"!thyVirtualScroll && treeNodeIsExpand(node) && node.children?.length > 0\">\n <ng-container [ngTemplateOutlet]=\"treeSelectNode\" *ngFor=\"let node of node.children\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: ThyEmpty, selector: "thy-empty", inputs: ["thyMessage", "thyTranslationKey", "thyTranslationValues", "thyEntityName", "thyEntityNameTranslateKey", "thyIconName", "thySize", "thyMarginTop", "thyTopAuto", "thyContainer", "thyImageUrl", "thyImageLoading", "thyImageFetchPriority", "thyDescription"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }] }); }
|
|
632
632
|
}
|
|
633
633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTreeSelectNodes, decorators: [{
|
|
634
634
|
type: Component,
|
|
@@ -646,7 +646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
646
646
|
ThyFlexibleText
|
|
647
647
|
], host: {
|
|
648
648
|
'[attr.tabindex]': '-1'
|
|
649
|
-
}, template: "<div class=\"thy-tree-select-options\" *ngIf=\"nodeList?.length > 0; else emptyPlaceholder\">\n <div class=\"thy-tree-select-node\">\n <ng-container *ngIf=\"!thyVirtualScroll\">\n <ng-container
|
|
649
|
+
}, template: "<div class=\"thy-tree-select-options\" *ngIf=\"nodeList?.length > 0; else emptyPlaceholder\">\n <div class=\"thy-tree-select-node\">\n <ng-container *ngIf=\"!thyVirtualScroll\">\n <ng-container\n *ngFor=\"let node of nodeList\"\n [ngTemplateOutlet]=\"treeSelectNode\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-container>\n </ng-container>\n\n <cdk-virtual-scroll-viewport #viewport *ngIf=\"thyVirtualScroll\" [itemSize]=\"defaultItemSize\" [style.height]=\"thyVirtualHeight\">\n <ng-container *cdkVirtualFor=\"let node of nodeList; trackBy: tabTrackBy\">\n <ng-template [ngTemplateOutlet]=\"treeSelectNode\" [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </div>\n</div>\n\n<ng-template #emptyPlaceholder>\n <thy-empty class=\"thy-select-empty-content\" thySize=\"sm\" [thyMessage]=\"parent.thyEmptyOptionsText\"></thy-empty>\n</ng-template>\n\n<ng-template #treeSelectNode let-node>\n <ng-container>\n <a\n class=\"thy-option-item\"\n [ngClass]=\"{ active: treeNodeIsSelected(node), 'pl-0': hasNodeChildren }\"\n [class.disabled]=\"treeNodeIsDisable(node)\"\n [ngStyle]=\"{ 'padding-left.px': 20 * node.level + parent.icons.gap }\"\n (click)=\"selectTreeNode($event, node)\"\n *ngIf=\"!treeNodeIsHidden(node)\">\n <span\n class=\"thy-tree-select-option-icon\"\n [class.invisible]=\"!(node.children?.length > 0 || (node[childCountKey] && node[childCountKey] > 0))\"\n (click)=\"nodeExpandToggle($event, node)\">\n <thy-icon class=\"node-expand-icon\" [thyIconName]=\"treeNodeIsExpand(node) ? parent.icons.expand : parent.icons.collapse\"></thy-icon>\n </span>\n <span class=\"thy-tree-select-option-text\" [ngClass]=\"{ 'ml-1': hasNodeChildren }\">\n <ng-template\n *ngIf=\"treeNodeTemplateRef; else defaultNodeText\"\n [ngTemplateOutlet]=\"treeNodeTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"></ng-template>\n <ng-template #defaultNodeText>\n <span thyFlexibleText [thyTooltipContent]=\"node[showKey]\">{{ node[showKey] }}</span>\n </ng-template>\n </span>\n <thy-icon class=\"checked-icon\" *ngIf=\"isMultiple\" thyIconName=\"check\"></thy-icon>\n </a>\n <ng-container *ngIf=\"!thyVirtualScroll && treeNodeIsExpand(node) && node.children?.length > 0\">\n <ng-container [ngTemplateOutlet]=\"treeSelectNode\" *ngFor=\"let node of node.children\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
|
|
650
650
|
}], ctorParameters: () => [{ type: ThyTreeSelect }], propDecorators: { class: [{
|
|
651
651
|
type: HostBinding,
|
|
652
652
|
args: ['class']
|
|
@@ -655,4 +655,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
655
655
|
}], thyVirtualScroll: [{
|
|
656
656
|
type: Input
|
|
657
657
|
}] } });
|
|
658
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1ub2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLHlDQUF5QyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFILE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUs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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlMsIHNjYWxlWU1vdGlvbiwgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4sIFRoeUNsaWNrRGlzcGF0Y2hlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5U2VsZWN0Q29udHJvbCwgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5VHJlZU5vZGUgfSBmcm9tICduZ3gtdGV0aHlzL3RyZWUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBlbGVtZW50TWF0Y2hDbG9zZXN0LCBpc0FycmF5LCBpc09iamVjdCwgcHJvZHVjZSwgd2FybkRlcHJlY2F0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLCBDZGtWaXJ0dWFsRm9yT2YsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlUcmVlU2VsZWN0Tm9kZSwgVGh5VHJlZVNlbGVjdFR5cGUgfSBmcm9tICcuL3RyZWUtc2VsZWN0LmNsYXNzJztcblxudHlwZSBJbnB1dFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJUcmVlRGF0YSh0cmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10sIHNlYXJjaFRleHQ6IHN0cmluZywgc2VhcmNoS2V5OiBzdHJpbmcgPSAnbmFtZScpIHtcbiAgICBjb25zdCBmaWx0ZXJOb2RlcyA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSwgcmVzdWx0OiBUaHlUcmVlU2VsZWN0Tm9kZVtdKSA9PiB7XG4gICAgICAgIGlmIChub2RlW3NlYXJjaEtleV0gJiYgbm9kZVtzZWFyY2hLZXldLmluZGV4T2Yoc2VhcmNoVGV4dCkgIT09IC0xKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gbm9kZS5jaGlsZHJlbi5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBmaWx0ZXJOb2RlcyhjdXJyZW50LCBwcmV2aW91cyksIFtdIGFzIFRoeVRyZWVTZWxlY3ROb2RlW10pO1xuICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB7IC4uLm5vZGUsIGNoaWxkcmVuOiBub2RlcywgZXhwYW5kOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIGNvbnN0IHRyZWVEYXRhID0gdHJlZU5vZGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IGZpbHRlck5vZGVzKGN1cnJlbnQsIHByZXZpb3VzKSwgW10gYXMgVGh5VHJlZVNlbGVjdE5vZGVbXSk7XG4gICAgcmV0dXJuIHRyZWVEYXRhO1xufVxuXG4vKipcbiAqIOagkemAieaLqee7hOS7tlxuICogQG5hbWUgdGh5LXRyZWUtc2VsZWN0XG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdHJlZS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VHJlZVNlbGVjdCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgVGh5U2VsZWN0Q29udHJvbCxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBUaHlUcmVlU2VsZWN0Tm9kZXMpLFxuICAgICAgICBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCRldmVudCknXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbc2NhbGVZTW90aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0IGV4dGVuZHMgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXNlbGVjdC1jdXN0b20nKSB0cmVlU2VsZWN0Q2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0JykgaXNUcmVlU2VsZWN0ID0gdHJ1ZTtcblxuICAgIC8vIOiPnOWNleaYr+WQpuWxleW8gFxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWVudS1pcy1vcGVuZWQnKSBleHBhbmRUcmVlU2VsZWN0T3B0aW9ucyA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0LWN1c3RvbS0tbXVsdGlwbGUnKSBpc011bHRpID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdO1xuXG4gICAgcHVibGljIHNlbGVjdGVkVmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZE5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlO1xuXG4gICAgcHVibGljIHNlbGVjdGVkTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHB1YmxpYyBmbGF0dGVuVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICB2aXJ0dWFsVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICBwdWJsaWMgY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IDA7XG5cbiAgICBwdWJsaWMgZXhwYW5kZWREcm9wZG93blBvc2l0aW9ucyA9IEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUztcblxuICAgIHB1YmxpYyBpY29uczogeyBleHBhbmQ6IHN0cmluZzsgY29sbGFwc2U6IHN0cmluZzsgZ2FwPzogbnVtYmVyIH0gPSB7XG4gICAgICAgIGV4cGFuZDogJ2FuZ2xlLWRvd24nLFxuICAgICAgICBjb2xsYXBzZTogJ2FuZ2xlLXJpZ2h0JyxcbiAgICAgICAgZ2FwOiAxNVxuICAgIH07XG5cbiAgICBwcml2YXRlIGluaXRpYWxsZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIHZhbHVlSXNPYmplY3QgPSBmYWxzZTtcblxuICAgIG9yaWdpblRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3RoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheScpXG4gICAgdGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgndHJlZU5vZGVUZW1wbGF0ZScpXG4gICAgdHJlZU5vZGVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrT3ZlcmxheU9yaWdpbiwgeyBzdGF0aWM6IHRydWUgfSkgY2RrT3ZlcmxheU9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSwgeyBzdGF0aWM6IHRydWUgfSkgY2RrQ29ubmVjdGVkT3ZlcmxheTogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcblxuICAgIEBWaWV3Q2hpbGQoJ2N1c3RvbURpc3BsYXlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGN1c3RvbURpc3BsYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIHRyZWVOb2RlcyDmlbDmja5cbiAgICAgKiBAdHlwZSBUaHlUcmVlU2VsZWN0Tm9kZVtdXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VHJlZU5vZGVzKHZhbHVlOiBUaHlUcmVlU2VsZWN0Tm9kZVtdKSB7XG4gICAgICAgIHRoaXMudHJlZU5vZGVzID0gdmFsdWU7XG4gICAgICAgIHRoaXMub3JpZ2luVHJlZU5vZGVzID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmxhdHRlblRyZWVOb2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKHRoaXMudHJlZU5vZGVzLCB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMsIFtdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWROb2RlcygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZEZsYXR0ZW5UcmVlTm9kZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOW8gOWQr+iZmuaLn+a7muWKqFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVZpcnR1YWxTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOagkeiKgueCueeahOWUr+S4gOagh+ivhlxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVByaW1hcnlLZXkgPSAnX2lkJztcblxuICAgIC8qKlxuICAgICAqIOagkeiKgueCueeahOaYvuekuueahOWtl+autSBrZXlcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaG93S2V5ID0gJ25hbWUnO1xuXG4gICAgQElucHV0KCkgdGh5Q2hpbGRDb3VudEtleSA9ICdjaGlsZENvdW50JztcblxuICAgIC8qKlxuICAgICAqIOWNlemAieaXtu+8jOaYr+WQpuaYvuekuua4hemZpOaMiemSru+8jOW9k+S4uiB0cnVlIOaXtu+8jOaYvuekuua4hemZpOaMiemSrlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QWxsb3dDbGVhcjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55So5qCR6YCJ5oup5Zmo77yM5b2T5Li6IHRydWUg56aB55So5qCR6YCJ5oup5ZmoXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeURpc2FibGUgPSBmYWxzZTtcblxuICAgIGdldCB0aHlEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5RGlzYWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoJHpgInmi6nmoYbpu5jorqTmloflrZdcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZWhvbGRlciA9ICfor7fpgInmi6noioLngrknO1xuXG4gICAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlQbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmjqfliLbmoJHpgInmi6nnmoTovpPlhaXmoYblpKflsI9cbiAgICAgKiBAdHlwZSB4cyB8IHNtIHwgbWQgfCBkZWZhdWx0IHwgbGdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaXplOiBJbnB1dFNpemU7XG5cbiAgICAvKipcbiAgICAgKiDmlLnlj5jnqbrpgInpobnnmoTmg4XlhrXkuIvnmoTmj5DnpLrmlofmnKxcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFbXB0eU9wdGlvbnNUZXh0ID0gJ+aaguaXtuayoeacieaVsOaNruWPr+mAiSc7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbpmpDol4/oioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+mrmOS6jiB0aHlIaWRkZW5Ob2RlRm5cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIaWRkZW5Ob2RlS2V5ID0gJ2hpZGRlbic7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbnpoHnlKjoioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+mrmOS6jiB0aHlEaXNhYmxlTm9kZUZuXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RGlzYWJsZU5vZGVLZXkgPSAnZGlzYWJsZWQnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byC5q2l5Yqg6L296IqC54K555qE5a2Q6IqC54K5KOaYvuekuuWKoOi9veeKtuaAgSnvvIzlvZPkuLogdHJ1ZSDml7bvvIzlvILmraXojrflj5ZcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QXN5bmNOb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrlhajlkI1cbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U2hvd1dob2xlTmFtZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pCc57SiXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWbvuagh+exu+Wei++8jOaUr+aMgSBkZWZhdWx0IHwgZXNwZWNpYWzvvIzlt7Llup/lvINcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUljb25UeXBlKHR5cGU6IFRoeVRyZWVTZWxlY3RUeXBlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbignVGhpcyBwYXJhbWV0ZXIgaGFzIGJlZW4gZGVwcmVjYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAodHlwZSA9PT0gJ2VzcGVjaWFsJykge1xuICAgICAgICAvLyAgICAgdGhpcy5pY29ucyA9IHsgZXhwYW5kOiAnbWludXMtc3F1YXJlJywgY29sbGFwc2U6ICdwbHVzLXNxdWFyZScsIGdhcDogMjAgfTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuaWNvbnMgPSB7IGV4cGFuZDogJ2NhcmV0LXJpZ2h0LWRvd24nLCBjb2xsYXBzZTogJ2NhcmV0LXJpZ2h0JywgZ2FwOiAxNSB9O1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm6ZqQ6JeP6IqC54K5KOS4jeWPr+i/m+ihjOS7u+S9leaTjeS9nCks5LyY5YWI57qn5L2O5LqOIHRoeUhpZGRlbk5vZGVLZXnjgIJcbiAgICAgKiBAZGVmYXVsdCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SGlkZGVuTm9kZUZuOiAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuaGlkZGVuO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm56aB55So6IqC54K5KOS4jeWPr+i/m+ihjOS7u+S9leaTjeS9nCnvvIzkvJjlhYjnuqfkvY7kuo4gdGh5RGlzYWJsZU5vZGVLZXnjgIJcbiAgICAgKiBAZGVmYXVsdCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuZGlzYWJsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEaXNhYmxlTm9kZUZuOiAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuZGlzYWJsZWQ7XG5cbiAgICAvKipcbiAgICAgKiDojrflj5boioLngrnnmoTlrZDoioLngrnvvIzov5Tlm54gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT7jgIJcbiAgICAgKiBAZGVmYXVsdCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IE9ic2VydmFibGU8VGh5VHJlZVNlbGVjdE5vZGU+ID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBvZihbXSlcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlHZXROb2RlQ2hpbGRyZW46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG9mKFtdKTtcblxuICAgIC8qKlxuICAgICAqIOagkemAieaLqee7hOS7tuWxleW8gOWSjOaKmOWPoOeKtuaAgeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlFeHBhbmRTdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX2dldE5nTW9kZWxUeXBlKCkge1xuICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUlzT2JqZWN0ID0gIXRoaXMuc2VsZWN0ZWRWYWx1ZVswXSB8fCBpc09iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWVbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUlzT2JqZWN0ID0gaXNPYmplY3QodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZEZsYXR0ZW5UcmVlTm9kZXMoKSB7XG4gICAgICAgIHRoaXMudmlydHVhbFRyZWVOb2RlcyA9IHRoaXMuZ2V0RmxhdHRlblRyZWVOb2Rlcyh0aGlzLnRyZWVOb2Rlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGbGF0dGVuVHJlZU5vZGVzKHJvb3RUcmVlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IHRoaXMudHJlZU5vZGVzKSB7XG4gICAgICAgIGNvbnN0IGZvckVhY2hUcmVlID0gKHRyZWU6IFRoeVRyZWVTZWxlY3ROb2RlW10sIGZuOiBhbnksIHJlc3VsdDogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdKSA9PiB7XG4gICAgICAgICAgICB0cmVlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgZm4oaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yRWFjaFRyZWUoaXRlbS5jaGlsZHJlbiwgZm4sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZm9yRWFjaFRyZWUocm9vdFRyZWVzLCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+ICEhbm9kZS5leHBhbmQpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2dldE5nTW9kZWxUeXBlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHRoeUNsaWNrRGlzcGF0Y2hlcjogVGh5Q2xpY2tEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pc011bHRpID0gdGhpcy50aHlNdWx0aXBsZTtcbiAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsbGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld3BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIDEuIFRhYiDogZrnhKblkI7oh6rliqjogZrnhKbliLAgaW5wdXQg6L6T5YWl5qGG77yM5q2k5YiG5pSv5LiL55u05o6l6L+U5Zue77yM5peg6ZyA6Kem5Y+RIG9uVG91Y2hlZEZuXG4gICAgICAgIC8vIDIuIOaJk+W8gOmAieaLqeahhuWQjuWmguaenOeCueWHu+W8ueahhuWGheWvvOiHtCBpbnB1dCDlpLHnhKbvvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoJGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJ3RoeS10cmVlLXNlbGVjdCcsICd0aHktdHJlZS1zZWxlY3Qtbm9kZXMnXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZFZhbHVlT2JqZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRyZWVOb2RlcyA9IGZpbHRlclRyZWVEYXRhKHRoaXMub3JpZ2luVHJlZU5vZGVzLCBzZWFyY2hUZXh0LnRyaW0oKSwgdGhpcy50aHlTaG93S2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RPdmVybGF5V2lkdGggPSB0aGlzLmNka092ZXJsYXlPcmlnaW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlbk5vZGVzKFxuICAgICAgICBub2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICByZXN1bHROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICBwYXJlbnRQcmltYXJ5VmFsdWU6IHN0cmluZ1tdID0gW11cbiAgICApOiBUaHlUcmVlU2VsZWN0Tm9kZVtdIHtcbiAgICAgICAgcmVzdWx0Tm9kZXMgPSByZXN1bHROb2Rlcy5jb25jYXQobm9kZXMpO1xuICAgICAgICBsZXQgbm9kZXNMZWFmczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuICAgICAgICAobm9kZXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnBhcmVudFZhbHVlcyA9IHBhcmVudFByaW1hcnlWYWx1ZTtcbiAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBpdGVtLnBhcmVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUxlYWZzID0gdGhpcy5mbGF0dGVuTm9kZXMoaXRlbS5jaGlsZHJlbiwgcmVzdWx0Tm9kZXMsIFsuLi5wYXJlbnRQcmltYXJ5VmFsdWUsIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XV0pO1xuICAgICAgICAgICAgICAgIG5vZGVzTGVhZnMgPSBbLi4ubm9kZXNMZWFmcywgLi4ubm9kZUxlYWZzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbLi4ubm9kZXMsIC4uLm5vZGVzTGVhZnNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRUcmVlTm9kZSh2YWx1ZTogc3RyaW5nKTogVGh5VHJlZVNlbGVjdE5vZGUge1xuICAgICAgICByZXR1cm4gKHRoaXMuZmxhdHRlblRyZWVOb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgLy8g5aSa6YCJ5pWw5o2u5Yid5aeL5YyWXG4gICAgICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0ICYmIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSkuaW5kZXhPZih0aGlzLnRoeVByaW1hcnlLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kVHJlZU5vZGUoaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRUcmVlTm9kZShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDljZXpgInmlbDmja7liJ3lp4vljJZcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkVmFsdWUpLmluZGV4T2YodGhpcy50aHlQcmltYXJ5S2V5KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy50aHlQcmltYXJ5S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdFBvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IHRoaXMuY2RrT3ZlcmxheU9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSAhdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucztcbiAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkVmFsdWUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGFuZ2VTZWxlY3RWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVJc09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSlcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlTXVsdGlwbGVTZWxlY3RlZE5vZGUoZXZlbnQ6IHsgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGU7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkTm9kZShldmVudC5pdGVtLCBldmVudC4kZXZlbnRPcmlnaW4pO1xuICAgIH1cblxuICAgIC8vIHRoeU11bHRpcGxlID0gdHJ1ZSDml7bvvIznp7vpmaTmlbDmja7ml7bosIPnlKhcbiAgICByZW1vdmVTZWxlY3RlZE5vZGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHByb2R1Y2UodGhpcy5zZWxlY3RlZE5vZGVzKS5yZW1vdmUoKGl0ZW06IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Tm9kZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBub2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWROb2RlKG5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBwcm9kdWNlKHRoaXMuc2VsZWN0ZWROb2RlcykuYWRkKG5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50aHlHZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN1YnNjcmliZSkge1xuICAgICAgICAgICAgcmVzdWx0LnBpcGUoKS5zdWJzY3JpYmUoKGRhdGE6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKGRhdGEsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgWy4uLm5vZGUucGFyZW50VmFsdWVzLCBub2RlW3RoaXMudGh5UHJpbWFyeUtleV1dKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlck5vZGVzID0gbm9kZXMuZmlsdGVyKChpdGVtOiBUaHlUcmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmxhdHRlblRyZWVOb2Rlcy5maW5kKGhhc0l0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0l0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSBbLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVzLCAuLi5vdGhlck5vZGVzXTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgREVGQVVMVF9JVEVNX1NJWkUgPSA0MDtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdC1ub2RlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LW5vZGVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mLFxuICAgICAgICBUaHlFbXB0eSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5RmxleGlibGVUZXh0XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0Tm9kZXMgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzczogc3RyaW5nO1xuXG4gICAgbm9kZUxpc3Q6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCB0cmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgY29uc3QgdHJlZVNlbGVjdEhlaWdodCA9IHRoaXMuZGVmYXVsdEl0ZW1TaXplICogdmFsdWUubGVuZ3RoO1xuICAgICAgICAvLyDniLbnuqforr7nva7kuoZtYXgtaGVpZ2h0OjMwMCAmIHBhZGRpbmc6MTAgMDsg5pWF5q2k5aSE5pyA5aSa6K6+572uMjgw77yM5ZCm5YiZ5bCG5Ye6546w5rua5Yqo5p2hXG4gICAgICAgIHRoaXMudGh5VmlydHVhbEhlaWdodCA9IHRyZWVTZWxlY3RIZWlnaHQgPiAzMDAgPyAnMjgwcHgnIDogYCR7dHJlZVNlbGVjdEhlaWdodH1weGA7XG4gICAgICAgIHRoaXMubm9kZUxpc3QgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5oYXNOb2RlQ2hpbGRyZW4gPSB0aGlzLm5vZGVMaXN0LmV2ZXJ5KFxuICAgICAgICAgICAgaXRlbSA9PiAhaXRlbS5oYXNPd25Qcm9wZXJ0eSgnY2hpbGRyZW4nKSB8fCAoIWl0ZW0/LmNoaWxkcmVuPy5sZW5ndGggJiYgIWl0ZW0/LmNoaWxkQ291bnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgdGh5VmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHByaW1hcnlLZXkgPSB0aGlzLnBhcmVudC50aHlQcmltYXJ5S2V5O1xuXG4gICAgcHVibGljIHNob3dLZXkgPSB0aGlzLnBhcmVudC50aHlTaG93S2V5O1xuXG4gICAgcHVibGljIGlzTXVsdGlwbGUgPSB0aGlzLnBhcmVudC50aHlNdWx0aXBsZTtcblxuICAgIHB1YmxpYyB2YWx1ZUlzT2JqZWN0ID0gdGhpcy5wYXJlbnQudmFsdWVJc09iamVjdDtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFZhbHVlID0gdGhpcy5wYXJlbnQuc2VsZWN0ZWRWYWx1ZTtcblxuICAgIHB1YmxpYyBjaGlsZENvdW50S2V5ID0gdGhpcy5wYXJlbnQudGh5Q2hpbGRDb3VudEtleTtcblxuICAgIHB1YmxpYyB0cmVlTm9kZVRlbXBsYXRlUmVmID0gdGhpcy5wYXJlbnQudHJlZU5vZGVUZW1wbGF0ZVJlZjtcblxuICAgIHB1YmxpYyBkZWZhdWx0SXRlbVNpemUgPSBERUZBVUxUX0lURU1fU0laRTtcblxuICAgIHB1YmxpYyB0aHlWaXJ0dWFsSGVpZ2h0OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgcHVibGljIGhhc05vZGVDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHBhcmVudDogVGh5VHJlZVNlbGVjdCkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNsYXNzID0gdGhpcy5pc011bHRpcGxlID8gJ3RoeS10cmVlLXNlbGVjdC1kcm9wZG93biB0aHktdHJlZS1zZWxlY3QtZHJvcGRvd24tbXVsdGlwbGUnIDogJ3RoeS10cmVlLXNlbGVjdC1kcm9wZG93bic7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc1NlbGVjdGVkKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVzIHx8IFtdKS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW3RoaXMucHJpbWFyeUtleV0gPT09IG5vZGVbdGhpcy5wcmltYXJ5S2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZSAmJiB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVbdGhpcy5wcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnByaW1hcnlLZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc0hpZGRlbihub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVbdGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUtleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeUhpZGRlbk5vZGVGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnRoeUhpZGRlbk5vZGVGbihub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc0Rpc2FibGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVt0aGlzLnBhcmVudC50aHlEaXNhYmxlTm9kZUtleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlRm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC50aHlEaXNhYmxlTm9kZUZuKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzRXhwYW5kKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGxldCBpc1NlbGVjdGVkTm9kZVBhcmVudCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gISEodGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wYXJlbnRWYWx1ZXMuaW5kZXhPZihub2RlW3RoaXMucHJpbWFyeUtleV0pID4gLTE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlXG4gICAgICAgICAgICAgICAgPyB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGUucGFyZW50VmFsdWVzLmluZGV4T2Yobm9kZVt0aGlzLnByaW1hcnlLZXldKSA+IC0xXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0V4cGFuZCA9IG5vZGUuZXhwYW5kIHx8IChPYmplY3Qua2V5cyhub2RlKS5pbmRleE9mKCdleHBhbmQnKSA8IDAgJiYgaXNTZWxlY3RlZE5vZGVQYXJlbnQpO1xuICAgICAgICBub2RlLmV4cGFuZCA9IGlzRXhwYW5kO1xuICAgICAgICByZXR1cm4gaXNFeHBhbmQ7XG4gICAgfVxuXG4gICAgZ2V0Tm9kZUNoaWxkcmVuKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgfVxuXG4gICAgc2VsZWN0VHJlZU5vZGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudHJlZU5vZGVJc0Rpc2FibGUobm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnNlbGVjdE5vZGUobm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlRXhwYW5kVG9nZ2xlKGV2ZW50OiBFdmVudCwgbm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhub2RlKS5pbmRleE9mKCdleHBhbmQnKSA+IC0xKSB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZCA9ICFub2RlLmV4cGFuZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVOb2RlSXNFeHBhbmQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBub2RlLmV4cGFuZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLmV4cGFuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5leHBhbmQgJiYgdGhpcy5wYXJlbnQudGh5QXN5bmNOb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmdldE5vZGVDaGlsZHJlbihub2RlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLnBhcmVudC5zZXRQb3NpdGlvbigpO1xuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5idWlsZEZsYXR0ZW5UcmVlTm9kZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRhYlRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgY2RrT3ZlcmxheU9yaWdpblxuICB0aHlTZWxlY3RDb250cm9sXG4gIChjbGljayk9XCJvcGVuU2VsZWN0UG9wKClcIlxuICAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gIFt0aHlQYW5lbE9wZW5lZF09XCJleHBhbmRUcmVlU2VsZWN0T3B0aW9uc1wiXG4gIFt0aHlTZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRWYWx1ZU9iamVjdFwiXG4gIFt0aHlJc011bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgW3RoeUFsbG93Q2xlYXJdPVwidGh5QWxsb3dDbGVhclwiXG4gIFt0aHlTaXplXT1cInRoeVNpemVcIlxuICBbdGh5UGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbY3VzdG9tRGlzcGxheVRlbXBsYXRlXT1cImN1c3RvbURpc3BsYXlUZW1wbGF0ZVwiXG4gIFt0aHlTaG93U2VhcmNoXT1cInRoeVNob3dTZWFyY2hcIlxuICBbdGh5RGlzYWJsZWRdPVwidGh5RGlzYWJsZVwiXG4gICh0aHlPbkJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAodGh5T25DbGVhcik9XCJjbGVhclNlbGVjdGVkVmFsdWUoJGV2ZW50KVwiXG4gICh0aHlPblJlbW92ZSk9XCJyZW1vdmVNdWx0aXBsZVNlbGVjdGVkTm9kZSgkZXZlbnQpXCJcbiAgKHRoeU9uU2VhcmNoKT1cInNlYXJjaFZhbHVlKCRldmVudClcIj5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b21EaXNwbGF5VGVtcGxhdGUgbGV0LW5vZGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheVJlZjsgZWxzZSBub25lVGVtcGxhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlUcmVlU2VsZWN0VHJpZ2dlckRpc3BsYXlSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub25lVGVtcGxhdGU+XG4gICAgICB7eyBub2RlW3RoeVNob3dLZXldIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cImZhbHNlXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aF09XCJjZGtDb25uZWN0T3ZlcmxheVdpZHRoXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnNdPVwidHJ1ZVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJleHBhbmRUcmVlU2VsZWN0T3B0aW9uc1wiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5Pbj1cIi50aHktdHJlZS1zZWxlY3QtZHJvcGRvd25cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJleHBhbmRlZERyb3Bkb3duUG9zaXRpb25zXCJcbiAgKGRldGFjaCk9XCJjbG9zZSgpXCI+XG4gIDx0aHktdHJlZS1zZWxlY3Qtbm9kZXNcbiAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICBbdGh5VmlydHVhbFNjcm9sbF09XCJ0aHlWaXJ0dWFsU2Nyb2xsXCJcbiAgICBbdHJlZU5vZGVzXT1cInRoeVZpcnR1YWxTY3JvbGwgPyB2aXJ0dWFsVHJlZU5vZGVzIDogdHJlZU5vZGVzXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCInZW50ZXInXCI+XG4gIDwvdGh5LXRyZWUtc2VsZWN0LW5vZGVzPlxuPC9uZy10ZW1wbGF0ZT5cbiIsIjxkaXYgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uc1wiICpuZ0lmPVwibm9kZUxpc3Q/Lmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlQbGFjZWhvbGRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW5vZGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoeVZpcnR1YWxTY3JvbGxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZUxpc3RcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICN2aWV3cG9ydCAqbmdJZj1cInRoeVZpcnR1YWxTY3JvbGxcIiBbaXRlbVNpemVdPVwiZGVmYXVsdEl0ZW1TaXplXCJcbiAgICAgIFtzdHlsZS5oZWlnaHRdPVwidGh5VmlydHVhbEhlaWdodFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCBub2RlIG9mIG5vZGVMaXN0OyB0cmFja0J5OiB0YWJUcmFja0J5XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XG4gIDx0aHktZW1wdHkgY2xhc3M9XCJ0aHktc2VsZWN0LWVtcHR5LWNvbnRlbnRcIiB0aHlTaXplPVwic21cIiBbdGh5TWVzc2FnZV09XCJwYXJlbnQudGh5RW1wdHlPcHRpb25zVGV4dFwiPjwvdGh5LWVtcHR5PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0cmVlU2VsZWN0Tm9kZSBsZXQtbm9kZT5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8YSBjbGFzcz1cInRoeS1vcHRpb24taXRlbVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiB0cmVlTm9kZUlzU2VsZWN0ZWQobm9kZSkgfVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidHJlZU5vZGVJc0Rpc2FibGUobm9kZSlcIiBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQucHgnOiAyMCAqIG5vZGUubGV2ZWwgKyBwYXJlbnQuaWNvbnMuZ2FwIH1cIlxuICAgICAgW25nQ2xhc3NdPVwieyAncGwtMCc6IGhhc05vZGVDaGlsZHJlbiB9XCIgKGNsaWNrKT1cInNlbGVjdFRyZWVOb2RlKCRldmVudCwgbm9kZSlcIiAqbmdJZj1cIiF0cmVlTm9kZUlzSGlkZGVuKG5vZGUpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRoeS10cmVlLXNlbGVjdC1vcHRpb24taWNvblwiXG4gICAgICAgIFtjbGFzcy5pbnZpc2libGVdPVwiIShub2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8IChub2RlW2NoaWxkQ291bnRLZXldICYmIG5vZGVbY2hpbGRDb3VudEtleV0gPiAwKSlcIlxuICAgICAgICAoY2xpY2spPVwibm9kZUV4cGFuZFRvZ2dsZSgkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgIDx0aHktaWNvbiBjbGFzcz1cIm5vZGUtZXhwYW5kLWljb25cIlxuICAgICAgICAgIFt0aHlJY29uTmFtZV09XCJ0cmVlTm9kZUlzRXhwYW5kKG5vZGUpID8gcGFyZW50Lmljb25zLmV4cGFuZCA6IHBhcmVudC5pY29ucy5jb2xsYXBzZVwiPjwvdGh5LWljb24+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInRoeS10cmVlLXNlbGVjdC1vcHRpb24tdGV4dFwiIFtuZ0NsYXNzXT1cInsgJ21sLTEnOiBoYXNOb2RlQ2hpbGRyZW4gfVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJ0cmVlTm9kZVRlbXBsYXRlUmVmOyBlbHNlIGRlZmF1bHROb2RlVGV4dFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVOb2RlVGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9kZVRleHQ+XG4gICAgICAgICAgPHNwYW4gdGh5RmxleGlibGVUZXh0IFt0aHlUb29sdGlwQ29udGVudF09XCJub2RlW3Nob3dLZXldXCI+e3sgbm9kZVtzaG93S2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDx0aHktaWNvbiBjbGFzcz1cImNoZWNrZWQtaWNvblwiICpuZ0lmPVwiaXNNdWx0aXBsZVwiIHRoeUljb25OYW1lPVwiY2hlY2tcIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoeVZpcnR1YWxTY3JvbGwgJiYgdHJlZU5vZGVJc0V4cGFuZChub2RlKSAmJiBub2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVTZWxlY3ROb2RlXCIgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZS5jaGlsZHJlblwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
658
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyZWUtc2VsZWN0L3RyZWUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCIsIi4uLy4uLy4uLy4uL3NyYy90cmVlLXNlbGVjdC90cmVlLXNlbGVjdC1ub2Rlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLHlDQUF5QyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0ksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFILE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUs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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlMsIHNjYWxlWU1vdGlvbiwgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4sIFRoeUNsaWNrRGlzcGF0Y2hlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5RmxleGlibGVUZXh0IH0gZnJvbSAnbmd4LXRldGh5cy9mbGV4aWJsZS10ZXh0JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgVGh5U2VsZWN0Q29udHJvbCwgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgVGh5VHJlZU5vZGUgfSBmcm9tICduZ3gtdGV0aHlzL3RyZWUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBlbGVtZW50TWF0Y2hDbG9zZXN0LCBpc0FycmF5LCBpc09iamVjdCwgcHJvZHVjZSwgd2FybkRlcHJlY2F0aW9uIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLCBDZGtWaXJ0dWFsRm9yT2YsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlUcmVlU2VsZWN0Tm9kZSwgVGh5VHJlZVNlbGVjdFR5cGUgfSBmcm9tICcuL3RyZWUtc2VsZWN0LmNsYXNzJztcblxudHlwZSBJbnB1dFNpemUgPSAneHMnIHwgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJUcmVlRGF0YSh0cmVlTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10sIHNlYXJjaFRleHQ6IHN0cmluZywgc2VhcmNoS2V5OiBzdHJpbmcgPSAnbmFtZScpIHtcbiAgICBjb25zdCBmaWx0ZXJOb2RlcyA9IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSwgcmVzdWx0OiBUaHlUcmVlU2VsZWN0Tm9kZVtdKSA9PiB7XG4gICAgICAgIGlmIChub2RlW3NlYXJjaEtleV0gJiYgbm9kZVtzZWFyY2hLZXldLmluZGV4T2Yoc2VhcmNoVGV4dCkgIT09IC0xKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gbm9kZS5jaGlsZHJlbi5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiBmaWx0ZXJOb2RlcyhjdXJyZW50LCBwcmV2aW91cyksIFtdIGFzIFRoeVRyZWVTZWxlY3ROb2RlW10pO1xuICAgICAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB7IC4uLm5vZGUsIGNoaWxkcmVuOiBub2RlcywgZXhwYW5kOiB0cnVlIH07XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIGNvbnN0IHRyZWVEYXRhID0gdHJlZU5vZGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IGZpbHRlck5vZGVzKGN1cnJlbnQsIHByZXZpb3VzKSwgW10gYXMgVGh5VHJlZVNlbGVjdE5vZGVbXSk7XG4gICAgcmV0dXJuIHRyZWVEYXRhO1xufVxuXG4vKipcbiAqIOagkemAieaLqee7hOS7tlxuICogQG5hbWUgdGh5LXRyZWUtc2VsZWN0XG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdHJlZS1zZWxlY3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5VHJlZVNlbGVjdCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgVGh5U2VsZWN0Q29udHJvbCxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgZm9yd2FyZFJlZigoKSA9PiBUaHlUcmVlU2VsZWN0Tm9kZXMpLFxuICAgICAgICBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCRldmVudCknXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbc2NhbGVZTW90aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0IGV4dGVuZHMgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LXNlbGVjdC1jdXN0b20nKSB0cmVlU2VsZWN0Q2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0JykgaXNUcmVlU2VsZWN0ID0gdHJ1ZTtcblxuICAgIC8vIOiPnOWNleaYr+WQpuWxleW8gFxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWVudS1pcy1vcGVuZWQnKSBleHBhbmRUcmVlU2VsZWN0T3B0aW9ucyA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktc2VsZWN0LWN1c3RvbS0tbXVsdGlwbGUnKSBpc011bHRpID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgdHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdO1xuXG4gICAgcHVibGljIHNlbGVjdGVkVmFsdWU6IGFueTtcblxuICAgIHB1YmxpYyBzZWxlY3RlZE5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlO1xuXG4gICAgcHVibGljIHNlbGVjdGVkTm9kZXM6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIHB1YmxpYyBmbGF0dGVuVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICB2aXJ0dWFsVHJlZU5vZGVzOiBUaHlUcmVlU2VsZWN0Tm9kZVtdID0gW107XG5cbiAgICBwdWJsaWMgY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IDA7XG5cbiAgICBwdWJsaWMgZXhwYW5kZWREcm9wZG93blBvc2l0aW9ucyA9IEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUztcblxuICAgIHB1YmxpYyBpY29uczogeyBleHBhbmQ6IHN0cmluZzsgY29sbGFwc2U6IHN0cmluZzsgZ2FwPzogbnVtYmVyIH0gPSB7XG4gICAgICAgIGV4cGFuZDogJ2FuZ2xlLWRvd24nLFxuICAgICAgICBjb2xsYXBzZTogJ2FuZ2xlLXJpZ2h0JyxcbiAgICAgICAgZ2FwOiAxNVxuICAgIH07XG5cbiAgICBwcml2YXRlIGluaXRpYWxsZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHVibGljIHZhbHVlSXNPYmplY3QgPSBmYWxzZTtcblxuICAgIG9yaWdpblRyZWVOb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3RoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheScpXG4gICAgdGh5VHJlZVNlbGVjdFRyaWdnZXJEaXNwbGF5UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZCgndHJlZU5vZGVUZW1wbGF0ZScpXG4gICAgdHJlZU5vZGVUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrT3ZlcmxheU9yaWdpbiwgeyBzdGF0aWM6IHRydWUgfSkgY2RrT3ZlcmxheU9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbjtcblxuICAgIEBWaWV3Q2hpbGQoQ2RrQ29ubmVjdGVkT3ZlcmxheSwgeyBzdGF0aWM6IHRydWUgfSkgY2RrQ29ubmVjdGVkT3ZlcmxheTogQ2RrQ29ubmVjdGVkT3ZlcmxheTtcblxuICAgIEBWaWV3Q2hpbGQoJ2N1c3RvbURpc3BsYXlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGN1c3RvbURpc3BsYXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIHRyZWVOb2RlcyDmlbDmja5cbiAgICAgKiBAdHlwZSBUaHlUcmVlU2VsZWN0Tm9kZVtdXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VHJlZU5vZGVzKHZhbHVlOiBUaHlUcmVlU2VsZWN0Tm9kZVtdKSB7XG4gICAgICAgIHRoaXMudHJlZU5vZGVzID0gdmFsdWU7XG4gICAgICAgIHRoaXMub3JpZ2luVHJlZU5vZGVzID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmxhdHRlblRyZWVOb2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKHRoaXMudHJlZU5vZGVzLCB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMsIFtdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWROb2RlcygpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZEZsYXR0ZW5UcmVlTm9kZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOW8gOWQr+iZmuaLn+a7muWKqFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVZpcnR1YWxTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOagkeiKgueCueeahOWUr+S4gOagh+ivhlxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVByaW1hcnlLZXkgPSAnX2lkJztcblxuICAgIC8qKlxuICAgICAqIOagkeiKgueCueeahOaYvuekuueahOWtl+autSBrZXlcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaG93S2V5ID0gJ25hbWUnO1xuXG4gICAgQElucHV0KCkgdGh5Q2hpbGRDb3VudEtleSA9ICdjaGlsZENvdW50JztcblxuICAgIC8qKlxuICAgICAqIOWNlemAieaXtu+8jOaYr+WQpuaYvuekuua4hemZpOaMiemSru+8jOW9k+S4uiB0cnVlIOaXtu+8jOaYvuekuua4hemZpOaMiemSrlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QWxsb3dDbGVhcjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55So5qCR6YCJ5oup5Zmo77yM5b2T5Li6IHRydWUg56aB55So5qCR6YCJ5oup5ZmoXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeURpc2FibGUgPSBmYWxzZTtcblxuICAgIGdldCB0aHlEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5RGlzYWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoJHpgInmi6nmoYbpu5jorqTmloflrZdcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQbGFjZWhvbGRlciA9ICfor7fpgInmi6noioLngrknO1xuXG4gICAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlQbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmjqfliLbmoJHpgInmi6nnmoTovpPlhaXmoYblpKflsI9cbiAgICAgKiBAdHlwZSB4cyB8IHNtIHwgbWQgfCBkZWZhdWx0IHwgbGdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaXplOiBJbnB1dFNpemU7XG5cbiAgICAvKipcbiAgICAgKiDmlLnlj5jnqbrpgInpobnnmoTmg4XlhrXkuIvnmoTmj5DnpLrmlofmnKxcbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFbXB0eU9wdGlvbnNUZXh0ID0gJ+aaguaXtuayoeacieaVsOaNruWPr+mAiSc7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbpmpDol4/oioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+mrmOS6jiB0aHlIaWRkZW5Ob2RlRm5cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlIaWRkZW5Ob2RlS2V5ID0gJ2hpZGRlbic7XG5cbiAgICAvKipcbiAgICAgKiDorr7nva7mmK/lkKbnpoHnlKjoioLngrko5LiN5Y+v6L+b6KGM5Lu75L2V5pON5L2cKe+8jOS8mOWFiOe6p+mrmOS6jiB0aHlEaXNhYmxlTm9kZUZuXG4gICAgICogQHR5cGUgc3RyaW5nXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RGlzYWJsZU5vZGVLZXkgPSAnZGlzYWJsZWQnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byC5q2l5Yqg6L296IqC54K555qE5a2Q6IqC54K5KOaYvuekuuWKoOi9veeKtuaAgSnvvIzlvZPkuLogdHJ1ZSDml7bvvIzlvILmraXojrflj5ZcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QXN5bmNOb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrlhajlkI1cbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U2hvd1dob2xlTmFtZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5bGV56S65pCc57SiXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWbvuagh+exu+Wei++8jOaUr+aMgSBkZWZhdWx0IHwgZXNwZWNpYWzvvIzlt7Llup/lvINcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUljb25UeXBlKHR5cGU6IFRoeVRyZWVTZWxlY3RUeXBlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIHdhcm5EZXByZWNhdGlvbignVGhpcyBwYXJhbWV0ZXIgaGFzIGJlZW4gZGVwcmVjYXRpb24nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAodHlwZSA9PT0gJ2VzcGVjaWFsJykge1xuICAgICAgICAvLyAgICAgdGhpcy5pY29ucyA9IHsgZXhwYW5kOiAnbWludXMtc3F1YXJlJywgY29sbGFwc2U6ICdwbHVzLXNxdWFyZScsIGdhcDogMjAgfTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuaWNvbnMgPSB7IGV4cGFuZDogJ2NhcmV0LXJpZ2h0LWRvd24nLCBjb2xsYXBzZTogJ2NhcmV0LXJpZ2h0JywgZ2FwOiAxNSB9O1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm6ZqQ6JeP6IqC54K5KOS4jeWPr+i/m+ihjOS7u+S9leaTjeS9nCks5LyY5YWI57qn5L2O5LqOIHRoeUhpZGRlbk5vZGVLZXnjgIJcbiAgICAgKiBAZGVmYXVsdCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SGlkZGVuTm9kZUZuOiAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuaGlkZGVuO1xuXG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm56aB55So6IqC54K5KOS4jeWPr+i/m+ihjOS7u+S9leaTjeS9nCnvvIzkvJjlhYjnuqfkvY7kuo4gdGh5RGlzYWJsZU5vZGVLZXnjgIJcbiAgICAgKiBAZGVmYXVsdCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuZGlzYWJsZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlEaXNhYmxlTm9kZUZuOiAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IGJvb2xlYW4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG5vZGUuZGlzYWJsZWQ7XG5cbiAgICAvKipcbiAgICAgKiDojrflj5boioLngrnnmoTlrZDoioLngrnvvIzov5Tlm54gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT7jgIJcbiAgICAgKiBAZGVmYXVsdCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IE9ic2VydmFibGU8VGh5VHJlZVNlbGVjdE5vZGU+ID0gKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiBvZihbXSlcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlHZXROb2RlQ2hpbGRyZW46IChub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkgPT4gT2JzZXJ2YWJsZTxUaHlUcmVlU2VsZWN0Tm9kZT4gPSAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+IG9mKFtdKTtcblxuICAgIC8qKlxuICAgICAqIOagkemAieaLqee7hOS7tuWxleW8gOWSjOaKmOWPoOeKtuaAgeS6i+S7tlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlFeHBhbmRTdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgX2dldE5nTW9kZWxUeXBlKCkge1xuICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUlzT2JqZWN0ID0gIXRoaXMuc2VsZWN0ZWRWYWx1ZVswXSB8fCBpc09iamVjdCh0aGlzLnNlbGVjdGVkVmFsdWVbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52YWx1ZUlzT2JqZWN0ID0gaXNPYmplY3QodGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZEZsYXR0ZW5UcmVlTm9kZXMoKSB7XG4gICAgICAgIHRoaXMudmlydHVhbFRyZWVOb2RlcyA9IHRoaXMuZ2V0RmxhdHRlblRyZWVOb2Rlcyh0aGlzLnRyZWVOb2Rlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGbGF0dGVuVHJlZU5vZGVzKHJvb3RUcmVlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IHRoaXMudHJlZU5vZGVzKSB7XG4gICAgICAgIGNvbnN0IGZvckVhY2hUcmVlID0gKHRyZWU6IFRoeVRyZWVTZWxlY3ROb2RlW10sIGZuOiBhbnksIHJlc3VsdDogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdKSA9PiB7XG4gICAgICAgICAgICB0cmVlLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgZm4oaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yRWFjaFRyZWUoaXRlbS5jaGlsZHJlbiwgZm4sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZm9yRWFjaFRyZWUocm9vdFRyZWVzLCAobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpID0+ICEhbm9kZS5leHBhbmQpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2dldE5nTW9kZWxUeXBlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHRoeUNsaWNrRGlzcGF0Y2hlcjogVGh5Q2xpY2tEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIHZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pc011bHRpID0gdGhpcy50aHlNdWx0aXBsZTtcbiAgICAgICAgdGhpcy5mbGF0dGVuVHJlZU5vZGVzID0gdGhpcy5mbGF0dGVuTm9kZXModGhpcy50cmVlTm9kZXMsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgW10pO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkTm9kZXMoKTtcbiAgICAgICAgdGhpcy5pbml0aWFsbGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmxhdHRlblRyZWVOb2RlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld3BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgIGlucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIC8vIDEuIFRhYiDogZrnhKblkI7oh6rliqjogZrnhKbliLAgaW5wdXQg6L6T5YWl5qGG77yM5q2k5YiG5pSv5LiL55u05o6l6L+U5Zue77yM5peg6ZyA6Kem5Y+RIG9uVG91Y2hlZEZuXG4gICAgICAgIC8vIDIuIOaJk+W8gOmAieaLqeahhuWQjuWmguaenOeCueWHu+W8ueahhuWGheWvvOiHtCBpbnB1dCDlpLHnhKbvvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoJGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJ3RoeS10cmVlLXNlbGVjdCcsICd0aHktdHJlZS1zZWxlY3Qtbm9kZXMnXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIH1cblxuICAgIGdldCBzZWxlY3RlZFZhbHVlT2JqZWN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgIH1cblxuICAgIHNlYXJjaFZhbHVlKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnRyZWVOb2RlcyA9IGZpbHRlclRyZWVEYXRhKHRoaXMub3JpZ2luVHJlZU5vZGVzLCBzZWFyY2hUZXh0LnRyaW0oKSwgdGhpcy50aHlTaG93S2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMubmdab25lLm9uU3RhYmxlXG4gICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RPdmVybGF5V2lkdGggPSB0aGlzLmNka092ZXJsYXlPcmlnaW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmxhdHRlbk5vZGVzKFxuICAgICAgICBub2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICByZXN1bHROb2RlczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdLFxuICAgICAgICBwYXJlbnRQcmltYXJ5VmFsdWU6IHN0cmluZ1tdID0gW11cbiAgICApOiBUaHlUcmVlU2VsZWN0Tm9kZVtdIHtcbiAgICAgICAgcmVzdWx0Tm9kZXMgPSByZXN1bHROb2Rlcy5jb25jYXQobm9kZXMpO1xuICAgICAgICBsZXQgbm9kZXNMZWFmczogVGh5VHJlZVNlbGVjdE5vZGVbXSA9IFtdO1xuICAgICAgICAobm9kZXMgfHwgW10pLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLnBhcmVudFZhbHVlcyA9IHBhcmVudFByaW1hcnlWYWx1ZTtcbiAgICAgICAgICAgIGl0ZW0ubGV2ZWwgPSBpdGVtLnBhcmVudFZhbHVlcy5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZUxlYWZzID0gdGhpcy5mbGF0dGVuTm9kZXMoaXRlbS5jaGlsZHJlbiwgcmVzdWx0Tm9kZXMsIFsuLi5wYXJlbnRQcmltYXJ5VmFsdWUsIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XV0pO1xuICAgICAgICAgICAgICAgIG5vZGVzTGVhZnMgPSBbLi4ubm9kZXNMZWFmcywgLi4ubm9kZUxlYWZzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbLi4ubm9kZXMsIC4uLm5vZGVzTGVhZnNdO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRUcmVlTm9kZSh2YWx1ZTogc3RyaW5nKTogVGh5VHJlZVNlbGVjdE5vZGUge1xuICAgICAgICByZXR1cm4gKHRoaXMuZmxhdHRlblRyZWVOb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2VsZWN0ZWROb2RlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICAgICAgLy8g5aSa6YCJ5pWw5o2u5Yid5aeL5YyWXG4gICAgICAgICAgICBpZiAodGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0ICYmIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRWYWx1ZVswXSkuaW5kZXhPZih0aGlzLnRoeVByaW1hcnlLZXkpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kVHJlZU5vZGUoaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gdGhpcy5zZWxlY3RlZFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmRUcmVlTm9kZShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyDljZXpgInmlbDmja7liJ3lp4vljJZcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZUlzT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkVmFsdWUpLmluZGV4T2YodGhpcy50aHlQcmltYXJ5S2V5KSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWVbdGhpcy50aHlQcmltYXJ5S2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IHRoaXMuX2ZpbmRUcmVlTm9kZSh0aGlzLnNlbGVjdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlblNlbGVjdFBvcCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5RGlzYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdE92ZXJsYXlXaWR0aCA9IHRoaXMuY2RrT3ZlcmxheU9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSAhdGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucztcbiAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZFRyZWVTZWxlY3RPcHRpb25zKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhclNlbGVjdGVkVmFsdWUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IFtdO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jaGFuZ2VTZWxlY3RWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVJc09iamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0ZWROb2RlcyA6IHRoaXMuc2VsZWN0ZWROb2RlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gdGhpcy50aHlNdWx0aXBsZVxuICAgICAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZE5vZGVzLm1hcChpdGVtID0+IGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSlcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWROb2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgIGlmICghdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlTXVsdGlwbGVTZWxlY3RlZE5vZGUoZXZlbnQ6IHsgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGU7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkTm9kZShldmVudC5pdGVtLCBldmVudC4kZXZlbnRPcmlnaW4pO1xuICAgIH1cblxuICAgIC8vIHRoeU11bHRpcGxlID0gdHJ1ZSDml7bvvIznp7vpmaTmlbDmja7ml7bosIPnlKhcbiAgICByZW1vdmVTZWxlY3RlZE5vZGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50aHlEaXNhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlcyA9IHByb2R1Y2UodGhpcy5zZWxlY3RlZE5vZGVzKS5yZW1vdmUoKGl0ZW06IFRoeVRyZWVTZWxlY3ROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Tm9kZShub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVHJlZVNlbGVjdE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5RXhwYW5kU3RhdHVzQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRUcmVlU2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VTZWxlY3RWYWx1ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldID09PSBub2RlW3RoaXMudGh5UHJpbWFyeUtleV07XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWROb2RlKG5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBwcm9kdWNlKHRoaXMuc2VsZWN0ZWROb2RlcykuYWRkKG5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5nZVNlbGVjdFZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROb2RlQ2hpbGRyZW4obm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50aHlHZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN1YnNjcmliZSkge1xuICAgICAgICAgICAgcmVzdWx0LnBpcGUoKS5zdWJzY3JpYmUoKGRhdGE6IFRoeVRyZWVTZWxlY3ROb2RlW10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxhdHRlbk5vZGVzKGRhdGEsIHRoaXMuZmxhdHRlblRyZWVOb2RlcywgWy4uLm5vZGUucGFyZW50VmFsdWVzLCBub2RlW3RoaXMudGh5UHJpbWFyeUtleV1dKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvdGhlck5vZGVzID0gbm9kZXMuZmlsdGVyKChpdGVtOiBUaHlUcmVlTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmxhdHRlblRyZWVOb2Rlcy5maW5kKGhhc0l0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc0l0ZW1bdGhpcy50aHlQcmltYXJ5S2V5XSA9PT0gaXRlbVt0aGlzLnRoeVByaW1hcnlLZXldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5UcmVlTm9kZXMgPSBbLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVzLCAuLi5vdGhlck5vZGVzXTtcbiAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuID0gZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgREVGQVVMVF9JVEVNX1NJWkUgPSA0MDtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10cmVlLXNlbGVjdC1ub2RlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtc2VsZWN0LW5vZGVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbiAgICAgICAgQ2RrRml4ZWRTaXplVmlydHVhbFNjcm9sbCxcbiAgICAgICAgQ2RrVmlydHVhbEZvck9mLFxuICAgICAgICBUaHlFbXB0eSxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgVGh5SWNvbixcbiAgICAgICAgVGh5RmxleGlibGVUZXh0XG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUcmVlU2VsZWN0Tm9kZXMgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzczogc3RyaW5nO1xuXG4gICAgbm9kZUxpc3Q6IFRoeVRyZWVTZWxlY3ROb2RlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpIHNldCB0cmVlTm9kZXModmFsdWU6IFRoeVRyZWVTZWxlY3ROb2RlW10pIHtcbiAgICAgICAgY29uc3QgdHJlZVNlbGVjdEhlaWdodCA9IHRoaXMuZGVmYXVsdEl0ZW1TaXplICogdmFsdWUubGVuZ3RoO1xuICAgICAgICAvLyDniLbnuqforr7nva7kuoZtYXgtaGVpZ2h0OjMwMCAmIHBhZGRpbmc6MTAgMDsg5pWF5q2k5aSE5pyA5aSa6K6+572uMjgw77yM5ZCm5YiZ5bCG5Ye6546w5rua5Yqo5p2hXG4gICAgICAgIHRoaXMudGh5VmlydHVhbEhlaWdodCA9IHRyZWVTZWxlY3RIZWlnaHQgPiAzMDAgPyAnMjgwcHgnIDogYCR7dHJlZVNlbGVjdEhlaWdodH1weGA7XG4gICAgICAgIHRoaXMubm9kZUxpc3QgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5oYXNOb2RlQ2hpbGRyZW4gPSB0aGlzLm5vZGVMaXN0LmV2ZXJ5KFxuICAgICAgICAgICAgaXRlbSA9PiAhaXRlbS5oYXNPd25Qcm9wZXJ0eSgnY2hpbGRyZW4nKSB8fCAoIWl0ZW0/LmNoaWxkcmVuPy5sZW5ndGggJiYgIWl0ZW0/LmNoaWxkQ291bnQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgdGh5VmlydHVhbFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHByaW1hcnlLZXkgPSB0aGlzLnBhcmVudC50aHlQcmltYXJ5S2V5O1xuXG4gICAgcHVibGljIHNob3dLZXkgPSB0aGlzLnBhcmVudC50aHlTaG93S2V5O1xuXG4gICAgcHVibGljIGlzTXVsdGlwbGUgPSB0aGlzLnBhcmVudC50aHlNdWx0aXBsZTtcblxuICAgIHB1YmxpYyB2YWx1ZUlzT2JqZWN0ID0gdGhpcy5wYXJlbnQudmFsdWVJc09iamVjdDtcblxuICAgIHB1YmxpYyBzZWxlY3RlZFZhbHVlID0gdGhpcy5wYXJlbnQuc2VsZWN0ZWRWYWx1ZTtcblxuICAgIHB1YmxpYyBjaGlsZENvdW50S2V5ID0gdGhpcy5wYXJlbnQudGh5Q2hpbGRDb3VudEtleTtcblxuICAgIHB1YmxpYyB0cmVlTm9kZVRlbXBsYXRlUmVmID0gdGhpcy5wYXJlbnQudHJlZU5vZGVUZW1wbGF0ZVJlZjtcblxuICAgIHB1YmxpYyBkZWZhdWx0SXRlbVNpemUgPSBERUZBVUxUX0lURU1fU0laRTtcblxuICAgIHB1YmxpYyB0aHlWaXJ0dWFsSGVpZ2h0OiBzdHJpbmcgPSBudWxsO1xuXG4gICAgcHVibGljIGhhc05vZGVDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHBhcmVudDogVGh5VHJlZVNlbGVjdCkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNsYXNzID0gdGhpcy5pc011bHRpcGxlID8gJ3RoeS10cmVlLXNlbGVjdC1kcm9wZG93biB0aHktdHJlZS1zZWxlY3QtZHJvcGRvd24tbXVsdGlwbGUnIDogJ3RoeS10cmVlLXNlbGVjdC1kcm9wZG93bic7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc1NlbGVjdGVkKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudC50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuICh0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVzIHx8IFtdKS5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW3RoaXMucHJpbWFyeUtleV0gPT09IG5vZGVbdGhpcy5wcmltYXJ5S2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnNlbGVjdGVkTm9kZSAmJiB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGVbdGhpcy5wcmltYXJ5S2V5XSA9PT0gbm9kZVt0aGlzLnByaW1hcnlLZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc0hpZGRlbihub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVbdGhpcy5wYXJlbnQudGh5SGlkZGVuTm9kZUtleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeUhpZGRlbk5vZGVGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LnRoeUhpZGRlbk5vZGVGbihub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJlZU5vZGVJc0Rpc2FibGUobm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVt0aGlzLnBhcmVudC50aHlEaXNhYmxlTm9kZUtleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50LnRoeURpc2FibGVOb2RlRm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC50aHlEaXNhYmxlTm9kZUZuKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cmVlTm9kZUlzRXhwYW5kKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIGxldCBpc1NlbGVjdGVkTm9kZVBhcmVudCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gISEodGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlcyB8fCBbXSkuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wYXJlbnRWYWx1ZXMuaW5kZXhPZihub2RlW3RoaXMucHJpbWFyeUtleV0pID4gLTE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzU2VsZWN0ZWROb2RlUGFyZW50ID0gdGhpcy5wYXJlbnQuc2VsZWN0ZWROb2RlXG4gICAgICAgICAgICAgICAgPyB0aGlzLnBhcmVudC5zZWxlY3RlZE5vZGUucGFyZW50VmFsdWVzLmluZGV4T2Yobm9kZVt0aGlzLnByaW1hcnlLZXldKSA+IC0xXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0V4cGFuZCA9IG5vZGUuZXhwYW5kIHx8IChPYmplY3Qua2V5cyhub2RlKS5pbmRleE9mKCdleHBhbmQnKSA8IDAgJiYgaXNTZWxlY3RlZE5vZGVQYXJlbnQpO1xuICAgICAgICBub2RlLmV4cGFuZCA9IGlzRXhwYW5kO1xuICAgICAgICByZXR1cm4gaXNFeHBhbmQ7XG4gICAgfVxuXG4gICAgZ2V0Tm9kZUNoaWxkcmVuKG5vZGU6IFRoeVRyZWVTZWxlY3ROb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXROb2RlQ2hpbGRyZW4obm9kZSk7XG4gICAgfVxuXG4gICAgc2VsZWN0VHJlZU5vZGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBUaHlUcmVlU2VsZWN0Tm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudHJlZU5vZGVJc0Rpc2FibGUobm9kZSkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnNlbGVjdE5vZGUobm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlRXhwYW5kVG9nZ2xlKGV2ZW50OiBFdmVudCwgbm9kZTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhub2RlKS5pbmRleE9mKCdleHBhbmQnKSA+IC0xKSB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZCA9ICFub2RlLmV4cGFuZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVOb2RlSXNFeHBhbmQobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBub2RlLmV4cGFuZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLmV4cGFuZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5leHBhbmQgJiYgdGhpcy5wYXJlbnQudGh5QXN5bmNOb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmdldE5vZGVDaGlsZHJlbihub2RlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLnBhcmVudC5zZXRQb3NpdGlvbigpO1xuICAgICAgICBpZiAodGhpcy50aHlWaXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5idWlsZEZsYXR0ZW5UcmVlTm9kZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRhYlRyYWNrQnkoaW5kZXg6IG51bWJlciwgaXRlbTogVGh5VHJlZVNlbGVjdE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgY2RrT3ZlcmxheU9yaWdpblxuICB0aHlTZWxlY3RDb250cm9sXG4gIChjbGljayk9XCJvcGVuU2VsZWN0UG9wKClcIlxuICAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gIFt0aHlQYW5lbE9wZW5lZF09XCJleHBhbmRUcmVlU2VsZWN0T3B0aW9uc1wiXG4gIFt0aHlTZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRWYWx1ZU9iamVjdFwiXG4gIFt0aHlJc011bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgW3RoeUFsbG93Q2xlYXJdPVwidGh5QWxsb3dDbGVhclwiXG4gIFt0aHlTaXplXT1cInRoeVNpemVcIlxuICBbdGh5UGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbY3VzdG9tRGlzcGxheVRlbXBsYXRlXT1cImN1c3RvbURpc3BsYXlUZW1wbGF0ZVwiXG4gIFt0aHlTaG93U2VhcmNoXT1cInRoeVNob3dTZWFyY2hcIlxuICBbdGh5RGlzYWJsZWRdPVwidGh5RGlzYWJsZVwiXG4gICh0aHlPbkJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAodGh5T25DbGVhcik9XCJjbGVhclNlbGVjdGVkVmFsdWUoJGV2ZW50KVwiXG4gICh0aHlPblJlbW92ZSk9XCJyZW1vdmVNdWx0aXBsZVNlbGVjdGVkTm9kZSgkZXZlbnQpXCJcbiAgKHRoeU9uU2VhcmNoKT1cInNlYXJjaFZhbHVlKCRldmVudClcIj5cbiAgPG5nLXRlbXBsYXRlICNjdXN0b21EaXNwbGF5VGVtcGxhdGUgbGV0LW5vZGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoeVRyZWVTZWxlY3RUcmlnZ2VyRGlzcGxheVJlZjsgZWxzZSBub25lVGVtcGxhdGVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlUcmVlU2VsZWN0VHJpZ2dlckRpc3BsYXlSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG5vZGUgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub25lVGVtcGxhdGU+XG4gICAgICB7eyBub2RlW3RoeVNob3dLZXldIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cImZhbHNlXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aF09XCJjZGtDb25uZWN0T3ZlcmxheVdpZHRoXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnNdPVwidHJ1ZVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJleHBhbmRUcmVlU2VsZWN0T3B0aW9uc1wiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5Pbj1cIi50aHktdHJlZS1zZWxlY3QtZHJvcGRvd25cIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJleHBhbmRlZERyb3Bkb3duUG9zaXRpb25zXCJcbiAgKGRldGFjaCk9XCJjbG9zZSgpXCI+XG4gIDx0aHktdHJlZS1zZWxlY3Qtbm9kZXNcbiAgICB0aHlTdG9wUHJvcGFnYXRpb25cbiAgICBbdGh5VmlydHVhbFNjcm9sbF09XCJ0aHlWaXJ0dWFsU2Nyb2xsXCJcbiAgICBbdHJlZU5vZGVzXT1cInRoeVZpcnR1YWxTY3JvbGwgPyB2aXJ0dWFsVHJlZU5vZGVzIDogdHJlZU5vZGVzXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCInZW50ZXInXCI+XG4gIDwvdGh5LXRyZWUtc2VsZWN0LW5vZGVzPlxuPC9uZy10ZW1wbGF0ZT5cbiIsIjxkaXYgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uc1wiICpuZ0lmPVwibm9kZUxpc3Q/Lmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlQbGFjZWhvbGRlclwiPlxuICA8ZGl2IGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW5vZGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoeVZpcnR1YWxTY3JvbGxcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZUxpc3RcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmVlU2VsZWN0Tm9kZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0ICN2aWV3cG9ydCAqbmdJZj1cInRoeVZpcnR1YWxTY3JvbGxcIiBbaXRlbVNpemVdPVwiZGVmYXVsdEl0ZW1TaXplXCIgW3N0eWxlLmhlaWdodF09XCJ0aHlWaXJ0dWFsSGVpZ2h0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2Ygbm9kZUxpc3Q7IHRyYWNrQnk6IHRhYlRyYWNrQnlcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVTZWxlY3ROb2RlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlQbGFjZWhvbGRlcj5cbiAgPHRoeS1lbXB0eSBjbGFzcz1cInRoeS1zZWxlY3QtZW1wdHktY29udGVudFwiIHRoeVNpemU9XCJzbVwiIFt0aHlNZXNzYWdlXT1cInBhcmVudC50aHlFbXB0eU9wdGlvbnNUZXh0XCI+PC90aHktZW1wdHk+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RyZWVTZWxlY3ROb2RlIGxldC1ub2RlPlxuICA8bmctY29udGFpbmVyPlxuICAgIDxhXG4gICAgICBjbGFzcz1cInRoeS1vcHRpb24taXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogdHJlZU5vZGVJc1NlbGVjdGVkKG5vZGUpLCAncGwtMCc6IGhhc05vZGVDaGlsZHJlbiB9XCJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0cmVlTm9kZUlzRGlzYWJsZShub2RlKVwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICdwYWRkaW5nLWxlZnQucHgnOiAyMCAqIG5vZGUubGV2ZWwgKyBwYXJlbnQuaWNvbnMuZ2FwIH1cIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdFRyZWVOb2RlKCRldmVudCwgbm9kZSlcIlxuICAgICAgKm5nSWY9XCIhdHJlZU5vZGVJc0hpZGRlbihub2RlKVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJ0aHktdHJlZS1zZWxlY3Qtb3B0aW9uLWljb25cIlxuICAgICAgICBbY2xhc3MuaW52aXNpYmxlXT1cIiEobm9kZS5jaGlsZHJlbj8ubGVuZ3RoID4gMCB8fCAobm9kZVtjaGlsZENvdW50S2V5XSAmJiBub2RlW2NoaWxkQ291bnRLZXldID4gMCkpXCJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGVFeHBhbmRUb2dnbGUoJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJub2RlLWV4cGFuZC1pY29uXCIgW3RoeUljb25OYW1lXT1cInRyZWVOb2RlSXNFeHBhbmQobm9kZSkgPyBwYXJlbnQuaWNvbnMuZXhwYW5kIDogcGFyZW50Lmljb25zLmNvbGxhcHNlXCI+PC90aHktaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGh5LXRyZWUtc2VsZWN0LW9wdGlvbi10ZXh0XCIgW25nQ2xhc3NdPVwieyAnbWwtMSc6IGhhc05vZGVDaGlsZHJlbiB9XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwidHJlZU5vZGVUZW1wbGF0ZVJlZjsgZWxzZSBkZWZhdWx0Tm9kZVRleHRcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVOb2RlVGVtcGxhdGVSZWZcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9kZVRleHQ+XG4gICAgICAgICAgPHNwYW4gdGh5RmxleGlibGVUZXh0IFt0aHlUb29sdGlwQ29udGVudF09XCJub2RlW3Nob3dLZXldXCI+e3sgbm9kZVtzaG93S2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDx0aHktaWNvbiBjbGFzcz1cImNoZWNrZWQtaWNvblwiICpuZ0lmPVwiaXNNdWx0aXBsZVwiIHRoeUljb25OYW1lPVwiY2hlY2tcIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRoeVZpcnR1YWxTY3JvbGwgJiYgdHJlZU5vZGVJc0V4cGFuZChub2RlKSAmJiBub2RlLmNoaWxkcmVuPy5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVTZWxlY3ROb2RlXCIgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZS5jaGlsZHJlblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isEmpty } from 'ngx-tethys/util';
|
|
1
|
+
import { isEmpty, isString } from 'ngx-tethys/util';
|
|
2
2
|
import { fromEvent, Subject } from 'rxjs';
|
|
3
3
|
import { filter, takeUntil, tap } from 'rxjs/operators';
|
|
4
4
|
import { Directive, ElementRef, EventEmitter, HostBinding, Inject, Input, NgZone, Output, Renderer2 } from '@angular/core';
|
|
@@ -110,7 +110,8 @@ export class ThyFileDropDirective extends FileSelectBaseDirective {
|
|
|
110
110
|
filterFilesOrItems(items) {
|
|
111
111
|
if (this.acceptType && this.acceptType != '*/*') {
|
|
112
112
|
return items.filter(item => {
|
|
113
|
-
|
|
113
|
+
const isValidType = isString(item.type) && item.type.length > 0;
|
|
114
|
+
return isValidType && this.acceptType.includes(item.type);
|
|
114
115
|
});
|
|
115
116
|
}
|
|
116
117
|
else {
|
|
@@ -162,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
162
163
|
}], thyFilesReject: [{
|
|
163
164
|
type: Output
|
|
164
165
|
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91cGxvYWQvZmlsZS1kcm9wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdELE9BQU8sRUFBRSwwQkFBMEIsRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFOUU7O0dBRUc7QUFLSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0lBTTdELElBQWEsb0JBQW9CLENBQUMsS0FBYTtRQUMzQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFZRCxZQUNXLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLE1BQWMsRUFDc0IsYUFBOEI7UUFFekUsS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUwxQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNzQixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFyQjdFLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFPVCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV6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IGlzRW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmlsZVNlbGVjdEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2ZpbGUtc2VsZWN0LWJhc2UnO1xuaW1wb3J0IHsgVEhZX1VQTE9BRF9ERUZBVUxUX09QVElPTlMsIFRoeVVwbG9hZENvbmZpZyB9IGZyb20gJy4vdXBsb2FkLmNvbmZpZyc7XG5cbi8qKlxuICogQG5hbWUgdGh5RmlsZURyb3BcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGh5RmlsZURyb3BdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeUZpbGVEcm9wRGlyZWN0aXZlIGV4dGVuZHMgRmlsZVNlbGVjdEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kcm9wLW92ZXInKVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWRyb3Atb3ZlcicpXG4gICAgaXNEcmFnT3ZlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgZHJhZ092ZXJDdXN0b21DbGFzczogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgc2V0IHRoeUZpbGVEcm9wQ2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kcmFnT3ZlckN1c3RvbUNsYXNzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHRoeU9uRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIOW9k+aLluaLveeahOaWh+S7tuS4reacieS4jeespuWQiCB0aHlBY2NlcHRUeXBlIOS4reWumuS5ieeahOexu+Wei+aXtuinpuWPkVxuICAgICAqIEBkZXNjcmlwdGlvbi5lbi11cyBJdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBhcmUgZmlsZXMgaW4gdGhlIGRyYWdnZWQgZmlsZXMgdGhhdCBkbyBub3QgY29uZm9ybSB0byB0aGUgdHlwZXMgZGVmaW5lZCBpbiB0aHlBY2NlcHRUeXBlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlGaWxlc1JlamVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZVtdPigpO1xuXG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoVEhZX1VQTE9BRF9ERUZBVUxUX09QVElPTlMpIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBUaHlVcGxvYWRDb25maWdcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgZGVmYXVsdENvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnZW50ZXInKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMgJiYgZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tSZWplY3RGb2xkZXJBbmRIdG1sRWxlbWVudChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWx0ZXJGaWxlc09ySXRlbXMoQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eShmaWxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZURyb3BPdmVyQ2xhc3NOYW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ292ZXInKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2RyYWdsZWF2ZScpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQuZnJvbUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldERyYWdPdmVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wT3ZlckNsYXNzTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZHJvcCcpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja1JlamVjdEZvbGRlckFuZEh0bWxFbGVtZW50KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbkZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyID8gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIDogW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmZpbHRlckZpbGVzT3JJdGVtcyhvcmlnaW5GaWxlcykgYXMgRmlsZVtdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCAhPT0gb3JpZ2luRmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZlcmVudEZpbGVzID0gb3JpZ2luRmlsZXMuZmlsdGVyKGl0ZW0gPT4gIWZpbGVzLmluY2x1ZGVzKGl0ZW0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aHlGaWxlc1JlamVjdC5lbWl0KGRpZmZlcmVudEZpbGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGZpbGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpbGVzKGV2ZW50LCBmaWxlcywgdGhpcy50aHlPbkRyb3ApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXREcmFnT3ZlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wT3ZlckNsYXNzTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1JlamVjdEZvbGRlckFuZEh0bWxFbGVtZW50KGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgICAgLy8g5o6S6Zmk5paH5Lu25aS55ZKMSFRNTOWFg+e0oOaLluaLvVxuICAgICAgICBjb25zdCBpdGVtczogRGF0YVRyYW5zZmVySXRlbUxpc3QgfCBEYXRhVHJhbnNmZXJJdGVtW10gPSBldmVudC5kYXRhVHJhbnNmZXIgPyBldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMgOiBbXTtcbiAgICAgICAgbGV0IHJlcyA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZ2V0QXNFbnRyeShpdGVtKTtcbiAgICAgICAgICAgIGlmIChpdGVtLmtpbmQgIT09ICdmaWxlJyB8fCAoZW50cnkgJiYgIWVudHJ5LmlzRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKGBmaWxlIGV4dGVuc2lvbnMgbm90IHN1cHBvcnQgZHJhZyB1cGxvYWQsIGtpbmQ6ICR7aXRlbS5raW5kfSwgdHlwZTogJHtpdGVtLnR5cGV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFzRW50cnkoaXRlbTogRGF0YVRyYW5zZmVySXRlbSk6IEZpbGVTeXN0ZW1FbnRyeSB7XG4gICAgICAgIGxldCBlbnRyeTogRmlsZVN5c3RlbUVudHJ5O1xuICAgICAgICBpZiAoaXRlbVsnZ2V0QXNFbnRyeSddKSB7XG4gICAgICAgICAgICAvLyBodHRwczovL3dpa2kud2hhdHdnLm9yZy93aWtpL0RyYWdBbmREcm9wRW50cmllc1xuICAgICAgICAgICAgZW50cnkgPSBpdGVtWydnZXRBc0VudHJ5J10oKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLndlYmtpdEdldEFzRW50cnkpIHtcbiAgICAgICAgICAgIGVudHJ5ID0gaXRlbS53ZWJraXRHZXRBc0VudHJ5KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyRmlsZXNPckl0ZW1zKGl0ZW1zOiBBcnJheTxEYXRhVHJhbnNmZXJJdGVtIHwgRmlsZT4pOiBBcnJheTxEYXRhVHJhbnNmZXJJdGVtIHwgRmlsZT4ge1xuICAgICAgICBpZiAodGhpcy5hY2NlcHRUeXBlICYmIHRoaXMuYWNjZXB0VHlwZSAhPSAnKi8qJykge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hY2NlcHRUeXBlLmluY2x1ZGVzKGl0ZW0udHlwZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheS5mcm9tKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRHJvcE92ZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdPdmVyQ3VzdG9tQ2xhc3MpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ092ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmRyYWdPdmVyQ3VzdG9tQ2xhc3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmRyYWdPdmVyQ3VzdG9tQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREcmFnT3ZlclN0YXRlKGlzRHJhZ092ZXI6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc0RyYWdPdmVyID0gaXNEcmFnT3ZlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0RHJhZ092ZXIoKSB7XG4gICAgICAgIHRoaXMuc2V0RHJhZ092ZXJTdGF0ZShmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91cGxvYWQvZmlsZS1kcm9wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7O0FBRTlFOztHQUVHO0FBS0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtJQU03RCxJQUFhLG9CQUFvQixDQUFDLEtBQWE7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBWUQsWUFDVyxVQUFzQixFQUN0QixRQUFtQixFQUNuQixNQUFjLEVBQ3NCLGFBQThCO1FBRXpFLEtBQUssQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFMMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDc0Isa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBckI3RSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBT1QsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFF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QUFXO3VCQUFDLHFCQUFxQjtnQkFJckIsb0JBQW9CO3NCQUFoQyxLQUFLO2dCQUlJLFNBQVM7c0JBQWxCLE1BQU07Z0JBTUcsY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZpbGVTZWxlY3RCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi9maWxlLXNlbGVjdC1iYXNlJztcbmltcG9ydCB7IFRIWV9VUExPQURfREVGQVVMVF9PUFRJT05TLCBUaHlVcGxvYWRDb25maWcgfSBmcm9tICcuL3VwbG9hZC5jb25maWcnO1xuXG4vKipcbiAqIEBuYW1lIHRoeUZpbGVEcm9wXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoeUZpbGVEcm9wXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUaHlGaWxlRHJvcERpcmVjdGl2ZSBleHRlbmRzIEZpbGVTZWxlY3RCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZHJvcC1vdmVyJylcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1kcm9wLW92ZXInKVxuICAgIGlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRyYWdPdmVyQ3VzdG9tQ2xhc3M6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHNldCB0aHlGaWxlRHJvcENsYXNzTmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZHJhZ092ZXJDdXN0b21DbGFzcyA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSB0aHlPbkRyb3AgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiDlvZPmi5bmi73nmoTmlofku7bkuK3mnInkuI3nrKblkIggdGh5QWNjZXB0VHlwZSDkuK3lrprkuYnnmoTnsbvlnovml7bop6blj5FcbiAgICAgKiBAZGVzY3JpcHRpb24uZW4tdXMgSXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlcmUgYXJlIGZpbGVzIGluIHRoZSBkcmFnZ2VkIGZpbGVzIHRoYXQgZG8gbm90IGNvbmZvcm0gdG8gdGhlIHR5cGVzIGRlZmluZWQgaW4gdGh5QWNjZXB0VHlwZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5RmlsZXNSZWplY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGVbXT4oKTtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHVibGljIG5nWm9uZTogTmdab25lLFxuICAgICAgICBASW5qZWN0KFRIWV9VUExPQURfREVGQVVMVF9PUFRJT05TKSBwdWJsaWMgZGVmYXVsdENvbmZpZzogVGh5VXBsb2FkQ29uZmlnXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGRlZmF1bHRDb25maWcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ2VudGVyJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrUmVqZWN0Rm9sZGVyQW5kSHRtbEVsZW1lbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuZmlsdGVyRmlsZXNPckl0ZW1zKEFycmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkoZmlsZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RyYWdPdmVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wT3ZlckNsYXNzTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2RyYWdvdmVyJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnbGVhdmUnKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LmZyb21FbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXREcmFnT3ZlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHJvcE92ZXJDbGFzc05hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Ryb3AnKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlJCksXG4gICAgICAgICAgICAgICAgICAgIHRhcCgoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tSZWplY3RGb2xkZXJBbmRIdG1sRWxlbWVudChldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5GaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2ZlciA/IEFycmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKSA6IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWx0ZXJGaWxlc09ySXRlbXMob3JpZ2luRmlsZXMpIGFzIEZpbGVbXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggIT09IG9yaWdpbkZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmZXJlbnRGaWxlcyA9IG9yaWdpbkZpbGVzLmZpbHRlcihpdGVtID0+ICFmaWxlcy5pbmNsdWRlcyhpdGVtKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGh5RmlsZXNSZWplY3QuZW1pdChkaWZmZXJlbnRGaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eShmaWxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWxlcyhldmVudCwgZmlsZXMsIHRoaXMudGh5T25Ecm9wKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RHJhZ092ZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlRHJvcE92ZXJDbGFzc05hbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZWplY3RGb2xkZXJBbmRIdG1sRWxlbWVudChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgIC8vIOaOkumZpOaWh+S7tuWkueWSjEhUTUzlhYPntKDmi5bmi71cbiAgICAgICAgY29uc3QgaXRlbXM6IERhdGFUcmFuc2Zlckl0ZW1MaXN0IHwgRGF0YVRyYW5zZmVySXRlbVtdID0gZXZlbnQuZGF0YVRyYW5zZmVyID8gZXZlbnQuZGF0YVRyYW5zZmVyLml0ZW1zIDogW107XG4gICAgICAgIGxldCByZXMgPSB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmdldEFzRW50cnkoaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5raW5kICE9PSAnZmlsZScgfHwgKGVudHJ5ICYmICFlbnRyeS5pc0ZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcihgZmlsZSBleHRlbnNpb25zIG5vdCBzdXBwb3J0IGRyYWcgdXBsb2FkLCBraW5kOiAke2l0ZW0ua2luZH0sIHR5cGU6ICR7aXRlbS50eXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBc0VudHJ5KGl0ZW06IERhdGFUcmFuc2Zlckl0ZW0pOiBGaWxlU3lzdGVtRW50cnkge1xuICAgICAgICBsZXQgZW50cnk6IEZpbGVTeXN0ZW1FbnRyeTtcbiAgICAgICAgaWYgKGl0ZW1bJ2dldEFzRW50cnknXSkge1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9EcmFnQW5kRHJvcEVudHJpZXNcbiAgICAgICAgICAgIGVudHJ5ID0gaXRlbVsnZ2V0QXNFbnRyeSddKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS53ZWJraXRHZXRBc0VudHJ5KSB7XG4gICAgICAgICAgICBlbnRyeSA9IGl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlckZpbGVzT3JJdGVtcyhpdGVtczogQXJyYXk8RGF0YVRyYW5zZmVySXRlbSB8IEZpbGU+KTogQXJyYXk8RGF0YVRyYW5zZmVySXRlbSB8IEZpbGU+IHtcbiAgICAgICAgaWYgKHRoaXMuYWNjZXB0VHlwZSAmJiB0aGlzLmFjY2VwdFR5cGUgIT0gJyovKicpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZFR5cGUgPSBpc1N0cmluZyhpdGVtLnR5cGUpICYmIGl0ZW0udHlwZS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkVHlwZSAmJiB0aGlzLmFjY2VwdFR5cGUuaW5jbHVkZXMoaXRlbS50eXBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0b2dnbGVEcm9wT3ZlckNsYXNzTmFtZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ092ZXJDdXN0b21DbGFzcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnT3Zlcikge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZHJhZ092ZXJDdXN0b21DbGFzcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZHJhZ092ZXJDdXN0b21DbGFzcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERyYWdPdmVyU3RhdGUoaXNEcmFnT3ZlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzRHJhZ092ZXIgPSBpc0RyYWdPdmVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXREcmFnT3ZlcigpIHtcbiAgICAgICAgdGhpcy5zZXREcmFnT3ZlclN0YXRlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|
package/esm2022/version.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Version } from '@angular/core';
|
|
2
|
-
export const VERSION = new Version('18.0.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const VERSION = new Version('18.0.3');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxOC4wLjMnKTtcbiJdfQ==
|
|
@@ -16,14 +16,13 @@ const sharpMatcherRegx = /#([^#]+)$/;
|
|
|
16
16
|
* @name thy-anchor
|
|
17
17
|
*/
|
|
18
18
|
class ThyAnchor {
|
|
19
|
-
constructor(document, cdr, platform, zone, renderer, scrollService
|
|
19
|
+
constructor(document, cdr, platform, zone, renderer, scrollService) {
|
|
20
20
|
this.document = document;
|
|
21
21
|
this.cdr = cdr;
|
|
22
22
|
this.platform = platform;
|
|
23
23
|
this.zone = zone;
|
|
24
24
|
this.renderer = renderer;
|
|
25
25
|
this.scrollService = scrollService;
|
|
26
|
-
this.elementRef = elementRef;
|
|
27
26
|
/**
|
|
28
27
|
* 固定模式
|
|
29
28
|
*/
|
|
@@ -76,7 +75,7 @@ class ThyAnchor {
|
|
|
76
75
|
}
|
|
77
76
|
warningPrompt() {
|
|
78
77
|
if (this.thyDirection === 'horizontal') {
|
|
79
|
-
const hasChildren = this.links.some(link => Array.from(link?.elementRef?.nativeElement?.childNodes)?.some((item) => item?.
|
|
78
|
+
const hasChildren = this.links.some(link => Array.from(link?.elementRef?.nativeElement?.childNodes)?.some((item) => item?.nodeName === 'THY-ANCHOR-LINK'));
|
|
80
79
|
if (hasChildren) {
|
|
81
80
|
console.warn("Anchor link nesting is not supported when 'Anchor' direction is horizontal.");
|
|
82
81
|
}
|
|
@@ -189,7 +188,7 @@ class ThyAnchor {
|
|
|
189
188
|
this.registerScrollEvent();
|
|
190
189
|
}
|
|
191
190
|
}
|
|
192
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyAnchor, deps: [{ token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i2.ThyScrollService }
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyAnchor, deps: [{ token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i2.ThyScrollService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
192
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: ThyAnchor, isStandalone: true, selector: "thy-anchor", inputs: { thyAffix: ["thyAffix", "thyAffix", coerceBooleanProperty], thyBounds: ["thyBounds", "thyBounds", numberAttribute], thyOffsetTop: ["thyOffsetTop", "thyOffsetTop", numberAttribute], thyContainer: "thyContainer", thyDirection: "thyDirection" }, outputs: { thyClick: "thyClick", thyScroll: "thyScroll" }, viewQueries: [{ propertyName: "ink", first: true, predicate: ["ink"], descendants: true }], exportAs: ["thyAnchor"], usesOnChanges: true, ngImport: i0, template: `
|
|
194
193
|
<thy-affix *ngIf="thyAffix; else content" [thyOffsetTop]="thyOffsetTop" [thyContainer]="container">
|
|
195
194
|
<ng-template [ngTemplateOutlet]="content"></ng-template>
|
|
@@ -241,7 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
241
240
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
242
241
|
type: Inject,
|
|
243
242
|
args: [DOCUMENT]
|
|
244
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i2.ThyScrollService }
|
|
243
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i2.ThyScrollService }], propDecorators: { ink: [{
|
|
245
244
|
type: ViewChild,
|
|
246
245
|
args: ['ink']
|
|
247
246
|
}], thyAffix: [{
|