ngx-tethys 17.0.15 → 17.0.17
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 +18 -0
- package/esm2022/cascader/cascader.component.mjs +8 -1
- package/esm2022/image/image.class.mjs +1 -1
- package/esm2022/image/index.mjs +6 -5
- package/esm2022/image/preview/image-preview.component.mjs +21 -13
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-cascader.mjs +7 -0
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +20 -12
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/image/image.class.d.ts +1 -1
- package/image/index.d.ts +5 -4
- package/image/preview/image-preview.component.d.ts +5 -5
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [17.0.17](https://github.com/atinc/ngx-tethys/compare/17.0.16...17.0.17) (2024-07-26)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **image:** image operation support ThyImagePreviewOperation #INFR-13015 ([f10e483](https://github.com/atinc/ngx-tethys/commit/f10e483ddfb1339f10a2d6719d78bfefd6dc158e)), closes [#INFR-13015](https://github.com/atinc/ngx-tethys/issues/INFR-13015)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [17.0.16](https://github.com/atinc/ngx-tethys/compare/17.0.15...17.0.16) (2024-07-25)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **cascader:** update position when sub menu appears off screen #INFR-12988 ([#3126](https://github.com/atinc/ngx-tethys/issues/3126)) ([a3d568b](https://github.com/atinc/ngx-tethys/commit/a3d568b9c006cf37dc89db3d80008247fba485ad)), closes [#INFR-12988](https://github.com/atinc/ngx-tethys/issues/INFR-12988)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
5
23
|
## [17.0.15](https://github.com/atinc/ngx-tethys/compare/17.0.14...17.0.15) (2024-07-24)
|
|
6
24
|
|
|
7
25
|
|
|
@@ -352,6 +352,13 @@ export class ThyCascader extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
352
352
|
clickOption(option, index, event) {
|
|
353
353
|
this.thyCascaderService.removeCustomOption();
|
|
354
354
|
this.thyCascaderService.clickOption(option, index, event, this.selectOption);
|
|
355
|
+
if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {
|
|
356
|
+
// Make sure to calculate and update the position after the submenu is opened
|
|
357
|
+
this.cdr.detectChanges();
|
|
358
|
+
// Update the position to prevent the submenu from appearing off-screen
|
|
359
|
+
this.cdkConnectedOverlay.overlayRef.updatePosition();
|
|
360
|
+
this.cdr.markForCheck();
|
|
361
|
+
}
|
|
355
362
|
}
|
|
356
363
|
mouseoverOption(option, index, event) {
|
|
357
364
|
if (event) {
|
|
@@ -762,4 +769,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
762
769
|
type: HostListener,
|
|
763
770
|
args: ['mouseleave', ['$event']]
|
|
764
771
|
}] } });
|
|
765
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsa0JBQWtCLEVBQ3JCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQXVDLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQTBELE1BQU0sc0JBQXNCLENBQUM7QUFDckksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixlQUFl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LGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQVFHLFdBQVc7c0JBQXBCLE1BQU07Z0JBUUcsUUFBUTtzQkFBakIsTUFBTTtnQkFLRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBRWdELGVBQWU7c0JBQXJFLFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVXLHdCQUF3QjtzQkFBdkYsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRVosbUJBQW1CO3NCQUFwRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFVSxPQUFPO3NCQUFoRSxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFcEMsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUVDLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTTtnQkF5UlYsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVzFCLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVS9CLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5pbXBvcnQge1xuICAgIEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUyxcbiAgICBTY3JvbGxUb1NlcnZpY2UsXG4gICAgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW4sXG4gICAgVGh5Q2xpY2tEaXNwYXRjaGVyXG59IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvZW1wdHknO1xuaW1wb3J0IHsgVGh5SWNvbiB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBTZWxlY3RDb250cm9sU2l6ZSwgU2VsZWN0T3B0aW9uQmFzZSwgVGh5U2VsZWN0Q29udHJvbCB9IGZyb20gJ25neC10ZXRoeXMvc2hhcmVkJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgZWxlbWVudE1hdGNoQ2xvc2VzdCwgaXNFbXB0eSB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlLCBDb25uZWN0aW9uUG9zaXRpb25QYWlyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBudW1iZXJBdHRyaWJ1dGUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuXG5pbXBvcnQgeyBUaHlDYXNjYWRlck9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY2FzY2FkZXItbGkuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUNhc2NhZGVyU2VhcmNoT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jYXNjYWRlci1zZWFyY2gtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXIsIFRoeUNhc2NhZGVyT3B0aW9uLCBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbiwgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi9jYXNjYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IHNjYWxlWU1vdGlvbiB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlEaXZpZGVyIH0gZnJvbSAnbmd4LXRldGh5cy9kaXZpZGVyJztcblxuLyoqXG4gKiDnuqfogZTpgInmi6noj5zljZVcbiAqIEBuYW1lIHRoeS1jYXNjYWRlclxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jYXNjYWRlcixbdGh5LWNhc2NhZGVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlDYXNjYWRlciksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBUaHlDYXNjYWRlclNlcnZpY2VcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6IGB0YWJJbmRleGAsXG4gICAgICAgICcoZm9jdXMpJzogJ29uRm9jdXMoJGV2ZW50KScsXG4gICAgICAgICcoYmx1ciknOiAnb25CbHVyKCRldmVudCknXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICAgICAgTmdJZixcbiAgICAgICAgVGh5U2VsZWN0Q29udHJvbCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5RW1wdHksXG4gICAgICAgIFRoeUljb24sXG4gICAgICAgIFRoeURpdmlkZXJcbiAgICBdLFxuICAgIGFuaW1hdGlvbnM6IFtzY2FsZVlNb3Rpb25dXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhc2NhZGVyXG4gICAgZXh0ZW5kcyBUYWJJbmRleERpc2FibGVkQ29udHJvbFZhbHVlQWNjZXNzb3JNaXhpblxuICAgIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXRcbntcbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTlrp7pmYXlgLznmoTlsZ7mgKflkI1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlWYWx1ZVByb3BlcnR5ID0gJ3ZhbHVlJztcblxuICAgIC8qKlxuICAgICAqIOmAiemhueeahOaYvuekuuWAvOeahOWxnuaAp+WQjVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxhYmVsUHJvcGVydHkgPSAnbGFiZWwnO1xuXG4gICAgLyoqXG4gICAgICog5o+P6L+w6L6T5YWl5a2X5q616aKE5pyf5YC855qE566A55+t55qE5o+Q56S65L+h5oGvXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UGxhY2Vob2xkZXIgPSAn6K+36YCJ5oupJztcblxuICAgIC8qKlxuICAgICAqIOaOp+WItuWkp+Wwj++8iDTnp43vvIlcbiAgICAgKiBAdHlwZSAnc20nIHwgJ21kJyB8ICdsZycgfCAnJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFNlbGVjdENvbnRyb2xTaXplID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDmlbDmja7poblcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlck9wdGlvbltdXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlPcHRpb25zKG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gfCBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoID8gW29wdGlvbnNdIDogW107XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmluaXRDb2x1bW5zKGNvbHVtbnMpO1xuICAgICAgICBpZiAodGhpcy50aHlDYXNjYWRlclNlcnZpY2UuZGVmYXVsdFZhbHVlICYmIGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pbml0T3B0aW9ucygwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iemAiemhuVxuICAgICAqIEB0eXBlIFRoeUNhc2NhZGVyT3B0aW9uW11cbiAgICAgKiBAZGVmYXVsdCBbXVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlDdXN0b21PcHRpb25zKG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmN1c3RvbU9wdGlvbnMgPSAob3B0aW9ucyB8fCBbXSkubWFwKGl0ZW0gPT4gKHsgLi4uaXRlbSB9KSk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUN1c3RvbU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jdXN0b21PcHRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeCueWHu+eItue6p+iPnOWNlemAiemhueaXtu+8jOWPr+mAmui/h+ivpeWHveaVsOWIpOaWreaYr+WQpuWFgeiuuOWAvOeahOWPmOWMllxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNoYW5nZU9uOiAob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgbGV2ZWw6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+mhueaXtu+8jOihqOWNleaYr+WQpuWKqOaAgeWxleekuuaVsOaNrumhuVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlDaGFuZ2VPblNlbGVjdCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5pi+56S66L6T5YWl5qGGXG4gICAgICogQHR5cGUgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dJbnB1dCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDnlKjmiLfoh6rlrprkuYnpgInpobnmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU9wdGlvblJlbmRlcjogVGVtcGxhdGVSZWY8U2FmZUFueT47XG5cbiAgICAvKipcbiAgICAgKiDnlKjmiLfoh6rlrprkuYnmqKHmnb9cbiAgICAgKiBAdHlwZSBUZW1wbGF0ZVJlZlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUxhYmVsUmVuZGVyKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMubGFiZWxSZW5kZXJUcGwgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pc0xhYmVsUmVuZGVyVGVtcGxhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMoeyBpc0xhYmVsUmVuZGVyVGVtcGxhdGU6IHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlIH0pO1xuICAgIH1cblxuICAgIGdldCB0aHlMYWJlbFJlbmRlcigpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFiZWxSZW5kZXJUcGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog55So5LqO5Yqo5oCB5Yqg6L296YCJ6aG5XG4gICAgICovXG4gICAgQElucHV0KCkgc2V0IHRoeUxvYWREYXRhKHZhbHVlOiAobm9kZTogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4PzogbnVtYmVyKSA9PiBQcm9taXNlTGlrZTxhbnk+KSB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyh7IGxvYWREYXRhOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TG9hZERhdGEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZT8uY2FzY2FkZXJPcHRpb25zPy5sb2FkRGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmjqfliLbop6blj5HnirbmgIEsIOaUr+aMgSBgY2xpY2tgIHwgYGhvdmVyYFxuICAgICAqIEB0eXBlIFRoeUNhc2NhZGVyVHJpZ2dlclR5cGUgfCBUaHlDYXNjYWRlclRyaWdnZXJUeXBlW11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUcmlnZ2VyQWN0aW9uOiBUaHlDYXNjYWRlclRyaWdnZXJUeXBlIHwgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZVtdID0gWydjbGljayddO1xuXG4gICAgLyoqXG4gICAgICog6byg5qCH57uP6L+H5LiL5pa55YiX6KGo6aG55pe277yM5piv5ZCm6Ieq5Yqo5bGV5byA5YiX6KGo77yM5pSv5oyBIGBjbGlja2AgfCBgaG92ZXJgXG4gICAgICogQHR5cGUgVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyIHwgVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyW11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFeHBhbmRUcmlnZ2VyQWN0aW9uOiBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXIgfCBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXJbXSA9IFsnY2xpY2snXTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguagt+W8j1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU1lbnVTdHlsZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5ieaQnOe0ouagt+W8j1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNlYXJjaExpc3RTdHlsZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguexu+WQjVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeU1lbnVDbGFzc05hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1lbnVDbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TWVudUNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51Q2xhc3NOYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguWIl+exu+WQjVxuICAgICAqIEB0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUNvbHVtbkNsYXNzTmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY29sdW1uQ2xhc3NOYW1lID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUNvbHVtbkNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5DbGFzc05hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5Y+q6K+7XG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIG92ZXJyaWRlIHNldCB0aHlEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdmFsdWU7XG4gICAgfVxuICAgIG92ZXJyaWRlIGdldCB0aHlEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOepuueKtuaAgeS4i+eahOWxleekuuaWh+Wtl1xuICAgICAqIEBkZWZhdWx0IOaaguaXoOWPr+mAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUVtcHR5U3RhdGVUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbXB0eVN0YXRlVGV4dCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgc2V0IHRoeU11bHRpcGxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNNdWx0aXBsZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMoeyBpc011bHRpcGxlOiB2YWx1ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5aSa6YCJ5pe25pyA5aSn5pi+56S655qE5qCH562+5pWw6YeP77yMMCDooajnpLrkuI3pmZDliLZcbiAgICAgKiBAdHlwZSBudW1iZXJcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0aHlNYXhUYWdDb3VudCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbku4XlhYHorrjpgInmi6nlj7blrZDpoblcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICB0aHlJc09ubHlTZWxlY3RMZWFmID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOWIneWni+WMluaXtu+8jOaYr+WQpuWxleW8gOmdouadv1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QXV0b0V4cGFuZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaUr+aMgeaQnOe0olxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5U2hvd1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5aSa6YCJ6YCJ5Lit6aG555qE5bGV56S65pa55byP77yM6buY6K6k5Li656m677yM5riy5p+T5paH5a2X5qih5p2/77yM5Lyg5YWldGFn77yM5riy5p+T5bGV56S65qih5p2/LFxuICAgICAqIEBkZWZhdWx0ICcn772cdGFnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UHJlc2V0OiBzdHJpbmcgPSAnJztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuacieW5leW4g1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUhhc0JhY2tkcm9wID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOWAvOWPkeeUn+WPmOWMluaXtuinpuWPke+8jOi/lOWbnumAieaLqemhueeahOWAvFxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxhbnlbXT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICAgIC8qKlxuICAgICAqIOWAvOWPkeeUn+WPmOWMluaXtuinpuWPke+8jOi/lOWbnumAieaLqemhueWIl+ihqFxuICAgICAqIEB0eXBlIEV2ZW50RW1pdHRlcjxUaHlDYXNjYWRlck9wdGlvbltdPlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeUNhc2NhZGVyT3B0aW9uW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiDpgInmi6npgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb247XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlIOaaguaXoOWunueOsFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlEZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDmuIXnqbrpgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Q2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDkuIvmi4npgInpobnlsZXlvIDlkozmipjlj6DnirbmgIHkuovku7ZcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5RXhwYW5kU3RhdHVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXksIHsgc3RhdGljOiB0cnVlIH0pIGNka0Nvbm5lY3RlZE92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlcjogRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnUnKSBtZW51OiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIGRyb3BEb3duUG9zaXRpb24gPSAnYm90dG9tJztcblxuICAgIHB1YmxpYyBtZW51VmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGlzTGFiZWxSZW5kZXJUZW1wbGF0ZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIHRyaWdnZXJSZWN0OiBET01SZWN0O1xuXG4gICAgcHVibGljIGVtcHR5U3RhdGVUZXh0ID0gJ+aaguaXoOWPr+mAiemhuSc7XG5cbiAgICBwcml2YXRlIHByZWZpeENscyA9ICd0aHktY2FzY2FkZXInO1xuXG4gICAgcHJpdmF0ZSBtZW51Q2xhc3NOYW1lOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGNvbHVtbkNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfbWVudUNvbHVtbkNsczogYW55O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9tZW51Q2xzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICAgIHByaXZhdGUgX2xhYmVsQ2xzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICAgIHByaXZhdGUgbGFiZWxSZW5kZXJUcGw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgcHVibGljIHBvc2l0aW9uczogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdO1xuXG4gICAgZ2V0IHNlbGVjdGVkKCk6IFNlbGVjdE9wdGlvbkJhc2UgfCBTZWxlY3RPcHRpb25CYXNlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkIDogdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF07XG4gICAgfVxuICAgIHByaXZhdGUgaXNNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIG1lbnVNaW5XaWR0aCA9IDEyMjtcblxuICAgIHByaXZhdGUgc2VhcmNoVGV4dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcblxuICAgIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0TGlzdCgpOiBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaFJlc3VsdExpc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU2hvd1NlYXJjaFBhbmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDop6PlhrPmkJzntKIm5aSa6YCJ55qE5oOF5Ya15LiL77yM54K55Ye75pCc57Si6aG55Lya5a+86Ie0IHBhbmVsIOmXqueDgVxuICAgICAqIOeUseS6jueCueWHu+WQju+8jHRoeVNlbGVjdGVkT3B0aW9uc+WPmOWMlu+8jOWvvOiHtCB0aHlTZWxlY3RDb250cm9sXG4gICAgICog5Y+I5Lya6Kem5Y+RIHNlYXJjaEZpbHRlciDlh73mlbDvvIzljbMgcmVzZXRTZWFyY2gg5Lya5omn6KGMXG4gICAgICog5Lya5a+86Ie05oGi5aSN57qn6IGU54q25oCB5YaN5Y+Y5Li65pCc57Si54q25oCBXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGluZ1NlYXJjaFN0YXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9hZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlPy5pc0xvYWRpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY29sdW1ucztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFmdGVyQ2hhbmdlRm46ICgpID0+IHZvaWQ7XG5cbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q29sdW1uQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5zZXRMYWJlbENsYXNzKCk7XG4gICAgICAgIHRoaXMuaW5pdFBvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMuaW5pdFNlYXJjaCgpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbGFiZWxQcm9wZXJ0eTogdGhpcy50aHlMYWJlbFByb3BlcnR5LFxuICAgICAgICAgICAgdmFsdWVQcm9wZXJ0eTogdGhpcy50aHlWYWx1ZVByb3BlcnR5LFxuICAgICAgICAgICAgaXNNdWx0aXBsZTogdGhpcy5pc011bHRpcGxlLFxuICAgICAgICAgICAgaXNPbmx5U2VsZWN0TGVhZjogdGhpcy50aHlJc09ubHlTZWxlY3RMZWFmLFxuICAgICAgICAgICAgaXNMYWJlbFJlbmRlclRlbXBsYXRlOiB0aGlzLmlzTGFiZWxSZW5kZXJUZW1wbGF0ZSxcbiAgICAgICAgICAgIGxvYWREYXRhOiB0aGlzLnRoeUxvYWREYXRhXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyhvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jYXNjYWRlclZhbHVlQ2hhbmdlKCkuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzVmFsdWVFcXVhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbihvcHRpb25zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5pc1NlbGVjdGlvbk1vZGVsRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aHlDbGVhci5lbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudGh5U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeUNoYW5nZS5lbWl0KG9wdGlvbnMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFmdGVyQ2hhbmdlRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZnRlckNoYW5nZUZuKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJDaGFuZ2VGbiA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy50aHlDbGlja0Rpc3BhdGNoZXJcbiAgICAgICAgICAgICAgICAuY2xpY2tlZCgwKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLm1lbnU/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGh5QXV0b0V4cGFuZCkge1xuICAgICAgICAgICAgdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWyd0aHlJc09ubHlTZWxlY3RMZWFmJ10pIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldENhc2NhZGVyT3B0aW9ucyh7IGlzT25seVNlbGVjdExlYWY6IGNoYW5nZXNbJ3RoeUlzT25seVNlbGVjdExlYWYnXS5jdXJyZW50VmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3QgY2FzY2FkZXJQb3NpdGlvbjogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gRVhQQU5ERURfRFJPUERPV05fUE9TSVRJT05TLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gY2FzY2FkZXJQb3NpdGlvbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uud3JpdGVDYXNjYWRlclZhbHVlKHZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3NpdGlvbkNoYW5nZShwb3NpdGlvbjogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcG9zaXRpb24uY29ubmVjdGlvblBhaXIub3JpZ2luWSA9PT0gJ2JvdHRvbScgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICBpZiAodGhpcy5kcm9wRG93blBvc2l0aW9uICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93blBvc2l0aW9uID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzSGFsZlNlbGVjdGVkT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmlzSGFsZlNlbGVjdGVkT3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGVjdGVkT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmlzU2VsZWN0ZWRPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5wb3NpdGlvbkNoYW5nZS5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWN0aXZlRWxlbWVudEludG9WaWV3KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2Nyb2xsQWN0aXZlRWxlbWVudEludG9WaWV3KCkge1xuICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25zKSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlT3B0aW9ucyA9IHRoaXMuY2FzY2FkZXJPcHRpb25zXG4gICAgICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RoeS1jYXNjYWRlci1tZW51LWl0ZW0tYWN0aXZlJykpXG4gICAgICAgICAgICAgICAgLy8gZm9yIG11bHRpcGxlIG1vZGVcbiAgICAgICAgICAgICAgICAuc2xpY2UoLXRoaXMuY2FzY2FkZXJPcHRpb25Db250YWluZXJzLmxlbmd0aCk7XG5cbiAgICAgICAgICAgIHRoaXMuY2FzY2FkZXJPcHRpb25Db250YWluZXJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDw9IGFjdGl2ZU9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBTY3JvbGxUb1NlcnZpY2Uuc2Nyb2xsVG9FbGVtZW50KGFjdGl2ZU9wdGlvbnNbaW5kZXhdLm5hdGl2ZUVsZW1lbnQsIGl0ZW0ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNZW51VmlzaWJsZShtZW51VmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSAhPT0gbWVudVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVZpc2libGUgPSBtZW51VmlzaWJsZTtcblxuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaW5pdEFjdGl2YXRlZE9wdGlvbnModGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgICAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgICAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJSZWN0ID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeUV4cGFuZFN0YXR1c0NoYW5nZS5lbWl0KG1lbnVWaXNpYmxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudUNscygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudUNscztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1lbnVDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNscyA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tbWVudXNgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tbWVudXMtaGlkZGVuYF06ICF0aGlzLm1lbnVWaXNpYmxlLFxuICAgICAgICAgICAgW2Ake3RoaXMudGh5TWVudUNsYXNzTmFtZX1gXTogdGhpcy50aHlNZW51Q2xhc3NOYW1lLFxuICAgICAgICAgICAgW2B3LTEwMGBdOiB0aGlzLmNvbHVtbnMubGVuZ3RoID09PSAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51Q29sdW1uQ2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51Q29sdW1uQ2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWVudUNvbHVtbkNsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51Q29sdW1uQ2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51YF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy50aHlDb2x1bW5DbGFzc05hbWV9YF06IHRoaXMudGh5Q29sdW1uQ2xhc3NOYW1lXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsYWJlbENscygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxDbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMYWJlbENsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9sYWJlbENscyA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLWxhYmVsYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXNob3ctc2VhcmNoYF06IGZhbHNlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1mb2N1c2VkYF06IGZhbHNlLFxuICAgICAgICAgICAgJ3RleHQtdHJ1bmNhdGUnOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDbGFzc01hcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xhc3NNYXAgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9YF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXBpY2tlcmBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS0ke3RoaXMudGh5U2l6ZX1gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLWRpc2FibGVkYF06IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXBpY2tlci1vcGVuYF06IHRoaXMubWVudVZpc2libGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3NCeU1hcChjbGFzc01hcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NsaWNrVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnY2xpY2snO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignY2xpY2snKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyRXhwYW5kVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlFeHBhbmRUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVDbGljaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNDbGlja1RyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSghdGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgdG9nZ2xlTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5pc0hvdmVyVHJpZ2dlckFjdGlvbigpIHx8IHRoaXMubWVudVZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUodHJ1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIHRvZ2dsZU1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSB8fCAhdGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhvc3RFbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBtb3VzZVRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGhvc3RFbC5jb250YWlucyhtb3VzZVRhcmdldCkgfHxcbiAgICAgICAgICAgIG1vdXNlVGFyZ2V0Py5jbGFzc0xpc3QuY29udGFpbnMoJ2Nkay1vdmVybGF5LXBhbmUnKSB8fFxuICAgICAgICAgICAgbW91c2VUYXJnZXQ/LmNsYXNzTGlzdC5jb250YWlucygnY2RrLW92ZXJsYXktYmFja2Ryb3AnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja0N1c3RvbU9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQgfCBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jbGlja09wdGlvbihvcHRpb24sIGluZGV4LCBldmVudCwgdGhpcy5zZWxlY3RPcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGlja09wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQgfCBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnJlbW92ZUN1c3RvbU9wdGlvbigpO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jbGlja09wdGlvbihvcHRpb24sIGluZGV4LCBldmVudCwgdGhpcy5zZWxlY3RPcHRpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBtb3VzZW92ZXJPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb24gJiYgb3B0aW9uLmRpc2FibGVkICYmICF0aGlzLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc0hvdmVyRXhwYW5kVHJpZ2dlckFjdGlvbigpICYmICEob3B0aW9uICYmIG9wdGlvbi5kaXNhYmxlZCAmJiB0aGlzLmlzTXVsdGlwbGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRBY3RpdmVPcHRpb24ob3B0aW9uLCBpbmRleCwgZmFsc2UpO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudD86IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgLy8gVGFiIOiBmueEpuWQjuiHquWKqOiBmueEpuWIsCBpbnB1dCDovpPlhaXmoYbvvIzmraTliIbmlK/kuIvnm7TmjqXov5Tlm57vvIzml6DpnIDop6blj5Egb25Ub3VjaGVkRm5cbiAgICAgICAgaWYgKGVsZW1lbnRNYXRjaENsb3Nlc3QoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsIFsnLnRoeS1jYXNjYWRlci1tZW51cycsICd0aHktY2FzY2FkZXInXSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgb25Gb2N1cyhldmVudD86IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50TWF0Y2hDbG9zZXN0KGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBbJy50aHktY2FzY2FkZXItbWVudXMnLCAndGh5LWNhc2NhZGVyJ10pKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgaW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VNZW51KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgICAgICB0aGlzLmlzU2hvd1NlYXJjaFBhbmVsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWFyY2hSZXN1bHRMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWN0aXZlT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIsIHNlbGVjdDogYm9vbGVhbiwgbG9hZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRBY3RpdmVPcHRpb24ob3B0aW9uLCBpbmRleCwgc2VsZWN0LCBsb2FkQ2hpbGRyZW4sIHRoaXMuc2VsZWN0T3B0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdE9wdGlvbiA9IChvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmICgob3B0aW9uLmlzTGVhZiB8fCAhdGhpcy50aHlJc09ubHlTZWxlY3RMZWFmKSAmJiAhdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5hZnRlckNoYW5nZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aHlTZWxlY3QuZW1pdCh7IG9wdGlvbiwgaW5kZXggfSk7XG4gICAgICAgIGNvbnN0IGlzT3B0aW9uQ2FuU2VsZWN0ID0gdGhpcy50aHlDaGFuZ2VPblNlbGVjdCAmJiAhdGhpcy5pc011bHRpcGxlO1xuICAgICAgICBpZiAob3B0aW9uLmlzTGVhZiB8fCAhdGhpcy50aHlJc09ubHlTZWxlY3RMZWFmIHx8IGlzT3B0aW9uQ2FuU2VsZWN0IHx8IHRoaXMuc2hvdWxkUGVyZm9ybVNlbGVjdGlvbihvcHRpb24sIGluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VsZWN0T3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHB1YmxpYyByZW1vdmVTZWxlY3RlZEl0ZW0oZXZlbnQ6IHsgaXRlbTogU2VsZWN0T3B0aW9uQmFzZTsgJGV2ZW50T3JpZ2luOiBFdmVudCB9KSB7XG4gICAgICAgIGV2ZW50LiRldmVudE9yaWdpbi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UucmVtb3ZlU2VsZWN0ZWRJdGVtKGV2ZW50Py5pdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3VsZFBlcmZvcm1TZWxlY3Rpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgbGV2ZWw6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMudGh5Q2hhbmdlT24gPT09ICdmdW5jdGlvbicgPyB0aGlzLnRoeUNoYW5nZU9uKG9wdGlvbiwgbGV2ZWwpID09PSB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZnRlckNoYW5nZUZuID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHRoeUNsaWNrRGlzcGF0Y2hlcjogVGh5Q2xpY2tEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwdWJsaWMgdGh5Q2FzY2FkZXJTZXJ2aWNlOiBUaHlDYXNjYWRlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IFRoeUNhc2NhZGVyT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpdGVtPy52YWx1ZSB8fCBpdGVtPy5faWQgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaEZpbHRlcihzZWFyY2hUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFzZWFyY2hUZXh0ICYmICF0aGlzLmlzU2VsZWN0aW5nU2VhcmNoU3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaFRleHQkLm5leHQoc2VhcmNoVGV4dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIodGV4dCA9PiB0ZXh0ICE9PSAnJylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoc2VhcmNoVGV4dCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuXG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgc2VhcmNoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbkxvY2FsKHNlYXJjaFRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93U2VhcmNoUGFuZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hJbkxvY2FsKHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWFyY2hJbkxvY2FsKHNlYXJjaFRleHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuaXNTaG93U2VhcmNoUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UucmVzZXRTZWFyY2goKTtcbiAgICAgICAgdGhpcy5zY3JvbGxBY3RpdmVFbGVtZW50SW50b1ZpZXcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0U2VhcmNoUmVzdWx0KHNlbGVjdE9wdGlvbkRhdGE6IFRoeUNhc2NhZGVyU2VhcmNoT3B0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgdGh5Um93VmFsdWU6IHNlbGVjdGVkT3B0aW9ucyB9ID0gc2VsZWN0T3B0aW9uRGF0YTtcbiAgICAgICAgaWYgKHNlbGVjdE9wdGlvbkRhdGEuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMuZm9yRWFjaCgoaXRlbTogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKGl0ZW0sIGluZGV4LCBpbmRleCA9PT0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCAtIDEpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGluZ1NlYXJjaFN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNlbGVjdE9wdGlvbkRhdGEuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luU2VhcmNoUmVzdWx0TGlzdCA9IHRoaXMuc2VhcmNoUmVzdWx0TGlzdDtcbiAgICAgICAgICAgIC8vIOS/neaMgeaQnOe0oumAiemhuVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dTZWFyY2hQYW5lbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2VhcmNoUmVzdWx0TGlzdCA9IG9yaWdpblNlYXJjaFJlc3VsdExpc3Q7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1NlbGVjdGluZ1NlYXJjaFN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24gPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlc2l6ZS5vYnNlcnZlKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyUmVjdCA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5ICYmIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdW5zdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZXNpemVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNka092ZXJsYXlPcmlnaW4gI29yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIiAjdHJpZ2dlcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoeVNob3dJbnB1dFwiPlxuICAgIDxkaXZcbiAgICAgIHRoeVNlbGVjdENvbnRyb2xcbiAgICAgIFt0aHlTaG93U2VhcmNoXT1cInRoeVNob3dTZWFyY2hcIlxuICAgICAgW3RoeVNpemVdPVwidGh5U2l6ZVwiXG4gICAgICBbdGh5QWxsb3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgIFt0aHlTZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRcIlxuICAgICAgW3RoeU1heFRhZ0NvdW50XT1cInRoeU1heFRhZ0NvdW50XCJcbiAgICAgICh0aHlPblJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50KVwiXG4gICAgICAodGh5T25DbGVhcik9XCJjbGVhclNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICh0aHlPbkJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgKHRoeU9uU2VhcmNoKT1cInNlYXJjaEZpbHRlcigkZXZlbnQpXCJcbiAgICAgIFt0aHlEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbdGh5SXNNdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgICBbdGh5UGFuZWxPcGVuZWRdPVwibWVudVZpc2libGVcIlxuICAgICAgW3RoeVBsYWNlaG9sZGVyXT1cInRoeVBsYWNlaG9sZGVyXCJcbiAgICAgIFtjdXN0b21EaXNwbGF5VGVtcGxhdGVdPVwiY3VzdG9tRGlzcGxheVRlbXBsYXRlXCJcbiAgICAgIFt0aHlQcmVzZXRdPVwidGh5UHJlc2V0XCI+XG4gICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbURpc3BsYXlUZW1wbGF0ZSBsZXQtdmFsdWU+XG4gICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImxhYmVsQ2xzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xhYmVsUmVuZGVyVGVtcGxhdGU7IGVsc2UgbGFiZWxUZW1wbGF0ZVwiPnt7IHZhbHVlLmxhYmVsVGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlMYWJlbFJlbmRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ2YWx1ZS5sYWJlbFJlbmRlckNvbnRleHRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3BdPVwidGh5SGFzQmFja2Ryb3BcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cInRoeS1jYXNjYWRlci1iYWNrZHJvcFwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIm9yaWdpblwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cInBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPVwibWVudU1pbldpZHRoXCJcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheVRyYW5zZm9ybU9yaWdpbk9uPVwiLnRoeS1jYXNjYWRlci1tZW51c1wiXG4gIChiYWNrZHJvcENsaWNrKT1cImNsb3NlTWVudSgpXCJcbiAgKGRldGFjaCk9XCJjbG9zZU1lbnUoKVwiXG4gIChhdHRhY2gpPVwiYXR0YWNoZWQoKVwiXG4gIChwb3NpdGlvbkNoYW5nZSk9XCJwb3NpdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIm1lbnVWaXNpYmxlXCI+XG4gIDxkaXZcbiAgICBbYXR0ci50YWJpbmRleF09XCItMVwiXG4gICAgI21lbnVcbiAgICBbbmdDbGFzc109XCJtZW51Q2xzXCJcbiAgICBbbmdTdHlsZV09XCJ0aHlNZW51U3R5bGVcIlxuICAgIChtb3VzZWxlYXZlKT1cInRvZ2dsZU1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gICAgW0BzY2FsZVlNb3Rpb25dPVwiJ2VudGVyJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTaG93U2VhcmNoUGFuZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5zLmxlbmd0aCA+IDA7IGVsc2UgZW1wdHlQbGFjZWhvbGRlclwiPlxuICAgICAgICA8dWwgI2Nhc2NhZGVyT3B0aW9uQ29udGFpbmVycyAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4OyBsZXQgaXNGaXJzdCA9IGZpcnN0XCIgW25nQ2xhc3NdPVwibWVudUNvbHVtbkNsc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHlDdXN0b21PcHRpb25zICYmIHRoeUN1c3RvbU9wdGlvbnMubGVuZ3RoID4gMCAmJiBpc0ZpcnN0XCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgI2Nhc2NhZGVyT3B0aW9uc1xuICAgICAgICAgICAgICB0aHktY2FzY2FkZXItb3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjdXN0b21PcHQgb2YgdGh5Q3VzdG9tT3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgW29wdGlvbl09XCJjdXN0b21PcHRcIlxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgICAgICAgICBbaXNPbmx5U2VsZWN0TGVhZl09XCJ0aHlJc09ubHlTZWxlY3RMZWFmXCJcbiAgICAgICAgICAgICAgW2xhYmVsUHJvcGVydHldPVwidGh5TGFiZWxQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmF0ZWRPcHRpb24oY3VzdG9tT3B0LCAwKVwiXG4gICAgICAgICAgICAgIFtoYWxmU2VsZWN0ZWRdPVwiaXNIYWxmU2VsZWN0ZWRPcHRpb24oY3VzdG9tT3B0LCAwKVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkT3B0aW9uKGN1c3RvbU9wdCwgMClcIlxuICAgICAgICAgICAgICAodG9nZ2xlU2VsZWN0Q2hhbmdlKT1cImNsaWNrQ3VzdG9tT3B0aW9uKGN1c3RvbU9wdCwgMCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0N1c3RvbU9wdGlvbihjdXN0b21PcHQsIDAsICRldmVudClcIlxuICAgICAgICAgICAgICAobW91c2VvdmVyKT1cIm1vdXNlb3Zlck9wdGlvbihjdXN0b21PcHQsIDAsICRldmVudClcIj48L2xpPlxuICAgICAgICAgICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibXktMSBteC00XCI+PC90aHktZGl2aWRlcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgI2Nhc2NhZGVyT3B0aW9uc1xuICAgICAgICAgICAgdGh5LWNhc2NhZGVyLW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgW29wdGlvbl09XCJvcHRpb25cIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgICAgICAgIFtpc09ubHlTZWxlY3RMZWFmXT1cInRoeUlzT25seVNlbGVjdExlYWZcIlxuICAgICAgICAgICAgW2xhYmVsUHJvcGVydHldPVwidGh5TGFiZWxQcm9wZXJ0eVwiXG4gICAgICAgICAgICBbYWN0aXZlXT1cImlzQWN0aXZhdGVkT3B0aW9uKG9wdGlvbiwgaSlcIlxuICAgICAgICAgICAgW2hhbGZTZWxlY3RlZF09XCJpc0hhbGZTZWxlY3RlZE9wdGlvbihvcHRpb24sIGkpXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkT3B0aW9uKG9wdGlvbiwgaSlcIlxuICAgICAgICAgICAgW29wdGlvblJlbmRlcl09XCJ0aHlPcHRpb25SZW5kZXJcIlxuICAgICAgICAgICAgKHRvZ2dsZVNlbGVjdENoYW5nZSk9XCJjbGlja09wdGlvbihvcHRpb24sIGksICRldmVudClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrT3B0aW9uKG9wdGlvbiwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2VvdmVyKT1cIm1vdXNlb3Zlck9wdGlvbihvcHRpb24sIGksICRldmVudClcIj48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2hvd1NlYXJjaFBhbmVsXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0TGlzdC5sZW5ndGg7IGVsc2UgZW1wdHlQbGFjZWhvbGRlclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJ0aHktY2FzY2FkZXItc2VhcmNoLWxpc3QgcHktM1wiIFtuZ1N0eWxlXT1cInRoeVNlYXJjaExpc3RTdHlsZVwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgdGh5LWNhc2NhZGVyLXNlYXJjaC1vcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaFJlc3VsdExpc3RcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgICAgICAgIFtpc09ubHlTZWxlY3RMZWFmXT1cInRoeUlzT25seVNlbGVjdExlYWZcIlxuICAgICAgICAgICAgW29wdGlvbl09XCJpdGVtXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbb3B0aW9uUmVuZGVyXT1cInRoeU9wdGlvblJlbmRlclwiXG4gICAgICAgICAgICAodG9nZ2xlU2VsZWN0Q2hhbmdlKT1cInNlbGVjdFNlYXJjaFJlc3VsdCgkZXZlbnQpXCI+PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHlQbGFjZWhvbGRlcj5cbiAgPGRpdiBjbGFzcz1cInRoeS1jYXNjYWRlci1lbXB0eS1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IHRyaWdnZXJSZWN0Py53aWR0aCB9XCI+XG4gICAgPHRoeS1lbXB0eSBjbGFzcz1cInRoeS1zZWxlY3QtZW1wdHktY29udGVudFwiIHRoeVNpemU9XCJzbVwiIFt0aHlNZXNzYWdlXT1cImVtcHR5U3RhdGVUZXh0XCI+PC90aHktZW1wdHk+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
772
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0gsMkJBQTJCLEVBQzNCLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsa0JBQWtCLEVBQ3JCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQXVDLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQTBELE1BQU0sc0JBQXNCLENBQUM7QUFDckksT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixlQUFl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aW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBFWFBBTkRFRF9EUk9QRE9XTl9QT1NJVElPTlMsXG4gICAgU2Nyb2xsVG9TZXJ2aWNlLFxuICAgIFRhYkluZGV4RGlzYWJsZWRDb250cm9sVmFsdWVBY2Nlc3Nvck1peGluLFxuICAgIFRoeUNsaWNrRGlzcGF0Y2hlclxufSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5RW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL2VtcHR5JztcbmltcG9ydCB7IFRoeUljb24gfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgU2VsZWN0Q29udHJvbFNpemUsIFNlbGVjdE9wdGlvbkJhc2UsIFRoeVNlbGVjdENvbnRyb2wgfSBmcm9tICduZ3gtdGV0aHlzL3NoYXJlZCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGVsZW1lbnRNYXRjaENsb3Nlc3QsIGlzRW1wdHkgfSBmcm9tICduZ3gtdGV0aHlzL3V0aWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENka0Nvbm5lY3RlZE92ZXJsYXksIENka092ZXJsYXlPcmlnaW4sIENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSwgQ29ubmVjdGlvblBvc2l0aW9uUGFpciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQTEFURk9STV9JRCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcblxuaW1wb3J0IHsgVGh5Q2FzY2FkZXJPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2Nhc2NhZGVyLWxpLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlDYXNjYWRlclNlYXJjaE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY2FzY2FkZXItc2VhcmNoLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyLCBUaHlDYXNjYWRlck9wdGlvbiwgVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb24sIFRoeUNhc2NhZGVyVHJpZ2dlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFRoeUNhc2NhZGVyU2VydmljZSB9IGZyb20gJy4vY2FzY2FkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBzY2FsZVlNb3Rpb24gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5RGl2aWRlciB9IGZyb20gJ25neC10ZXRoeXMvZGl2aWRlcic7XG5cbi8qKlxuICog57qn6IGU6YCJ5oup6I+c5Y2VXG4gKiBAbmFtZSB0aHktY2FzY2FkZXJcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktY2FzY2FkZXIsW3RoeS1jYXNjYWRlcl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXNjYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGh5Q2FzY2FkZXIpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgVGh5Q2FzY2FkZXJTZXJ2aWNlXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiBgdGFiSW5kZXhgLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigkZXZlbnQpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRoeVNlbGVjdENvbnRyb2wsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIENka0Nvbm5lY3RlZE92ZXJsYXksXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBUaHlDYXNjYWRlck9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb25Db21wb25lbnQsXG4gICAgICAgIFRoeUVtcHR5LFxuICAgICAgICBUaHlJY29uLFxuICAgICAgICBUaHlEaXZpZGVyXG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbc2NhbGVZTW90aW9uXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlDYXNjYWRlclxuICAgIGV4dGVuZHMgVGFiSW5kZXhEaXNhYmxlZENvbnRyb2xWYWx1ZUFjY2Vzc29yTWl4aW5cbiAgICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0XG57XG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5a6e6ZmF5YC855qE5bGe5oCn5ZCNXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VmFsdWVQcm9wZXJ0eSA9ICd2YWx1ZSc7XG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTmmL7npLrlgLznmoTlsZ7mgKflkI1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlMYWJlbFByb3BlcnR5ID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIOaPj+i/sOi+k+WFpeWtl+autemihOacn+WAvOeahOeugOefreeahOaPkOekuuS/oeaBr1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlaG9sZGVyID0gJ+ivt+mAieaLqSc7XG5cbiAgICAvKipcbiAgICAgKiDmjqfliLblpKflsI/vvIg056eN77yJXG4gICAgICogQHR5cGUgJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJydcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaXplOiBTZWxlY3RDb250cm9sU2l6ZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICog5pWw5o2u6aG5XG4gICAgICogQHR5cGUgVGh5Q2FzY2FkZXJPcHRpb25bXVxuICAgICAqIEBkZWZhdWx0IFtdXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5T3B0aW9ucyhvcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdIHwgbnVsbCkge1xuICAgICAgICBjb25zdCBjb2x1bW5zID0gb3B0aW9ucyAmJiBvcHRpb25zLmxlbmd0aCA/IFtvcHRpb25zXSA6IFtdO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pbml0Q29sdW1ucyhjb2x1bW5zKTtcbiAgICAgICAgaWYgKHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmRlZmF1bHRWYWx1ZSAmJiBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuaW5pdE9wdGlvbnMoMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnpgInpoblcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlck9wdGlvbltdXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgdGh5Q3VzdG9tT3B0aW9ucyhvcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5jdXN0b21PcHRpb25zID0gKG9wdGlvbnMgfHwgW10pLm1hcChpdGVtID0+ICh7IC4uLml0ZW0gfSkpO1xuICAgIH1cblxuICAgIGdldCB0aHlDdXN0b21PcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY3VzdG9tT3B0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vniLbnuqfoj5zljZXpgInpobnml7bvvIzlj6/pgJrov4for6Xlh73mlbDliKTmlq3mmK/lkKblhYHorrjlgLznmoTlj5jljJZcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDaGFuZ2VPbjogKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGxldmVsOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vpobnml7bvvIzooajljZXmmK/lkKbliqjmgIHlsZXnpLrmlbDmja7poblcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5Q2hhbmdlT25TZWxlY3QgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOaYvuekuui+k+WFpeahhlxuICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlTaG93SW5wdXQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog55So5oi36Ieq5a6a5LmJ6YCJ6aG55qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlPcHRpb25SZW5kZXI6IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgLyoqXG4gICAgICog55So5oi36Ieq5a6a5LmJ5qih5p2/XG4gICAgICogQHR5cGUgVGVtcGxhdGVSZWZcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlMYWJlbFJlbmRlcih2YWx1ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLmxhYmVsUmVuZGVyVHBsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0Q2FzY2FkZXJPcHRpb25zKHsgaXNMYWJlbFJlbmRlclRlbXBsYXRlOiB0aGlzLmlzTGFiZWxSZW5kZXJUZW1wbGF0ZSB9KTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TGFiZWxSZW5kZXIoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsUmVuZGVyVHBsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeUqOS6juWKqOaAgeWKoOi9vemAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldCB0aHlMb2FkRGF0YSh2YWx1ZTogKG5vZGU6IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZUxpa2U8YW55Pikge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMoeyBsb2FkRGF0YTogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeUxvYWREYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlDYXNjYWRlclNlcnZpY2U/LmNhc2NhZGVyT3B0aW9ucz8ubG9hZERhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5o6n5Yi26Kem5Y+R54q25oCBLCDmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlclRyaWdnZXJUeXBlIHwgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZVtdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VHJpZ2dlckFjdGlvbjogVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZSB8IFRoeUNhc2NhZGVyVHJpZ2dlclR5cGVbXSA9IFsnY2xpY2snXTtcblxuICAgIC8qKlxuICAgICAqIOm8oOagh+e7j+i/h+S4i+aWueWIl+ihqOmhueaXtu+8jOaYr+WQpuiHquWKqOWxleW8gOWIl+ihqO+8jOaUr+aMgSBgY2xpY2tgIHwgYGhvdmVyYFxuICAgICAqIEB0eXBlIFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlciB8IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlcltdXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RXhwYW5kVHJpZ2dlckFjdGlvbjogVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyIHwgVGh5Q2FzY2FkZXJFeHBhbmRUcmlnZ2VyW10gPSBbJ2NsaWNrJ107XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmta7lsYLmoLflvI9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlNZW51U3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmkJzntKLmoLflvI9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTZWFyY2hMaXN0U3R5bGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmta7lsYLnsbvlkI1cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlNZW51Q2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tZW51Q2xhc3NOYW1lID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeU1lbnVDbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudUNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnmta7lsYLliJfnsbvlkI1cbiAgICAgKiBAdHlwZSBzdHJpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlDb2x1bW5DbGFzc05hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbHVtbkNsYXNzTmFtZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgIH1cblxuICAgIGdldCB0aHlDb2x1bW5DbGFzc05hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWPquivu1xuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSlcbiAgICBvdmVycmlkZSBzZXQgdGh5RGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgICBvdmVycmlkZSBnZXQgdGh5RGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDnqbrnirbmgIHkuIvnmoTlsZXnpLrmloflrZdcbiAgICAgKiBAZGVmYXVsdCDmmoLml6Dlj6/pgInpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlFbXB0eVN0YXRlVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZW1wdHlTdGF0ZVRleHQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblpJrpgIlcbiAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHNldCB0aHlNdWx0aXBsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTXVsdGlwbGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2Uuc2V0Q2FzY2FkZXJPcHRpb25zKHsgaXNNdWx0aXBsZTogdmFsdWUgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHRoeU11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc011bHRpcGxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruWkmumAieaXtuacgOWkp+aYvuekuueahOagh+etvuaVsOmHj++8jDAg6KGo56S65LiN6ZmQ5Yi2XG4gICAgICogQHR5cGUgbnVtYmVyXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdGh5TWF4VGFnQ291bnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5LuF5YWB6K646YCJ5oup5Y+25a2Q6aG5XG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgdGh5SXNPbmx5U2VsZWN0TGVhZiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDliJ3lp4vljJbml7bvvIzmmK/lkKblsZXlvIDpnaLmnb9cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeUF1dG9FeHBhbmQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlK/mjIHmkJzntKJcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pIHRoeVNob3dTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWkmumAiemAieS4remhueeahOWxleekuuaWueW8j++8jOm7mOiupOS4uuepuu+8jOa4suafk+aWh+Wtl+aooeadv++8jOS8oOWFpXRhZ++8jOa4suafk+WxleekuuaooeadvyxcbiAgICAgKiBAZGVmYXVsdCAnJ++9nHRhZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVByZXNldDogc3RyaW5nID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmnInluZXluINcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlIYXNCYWNrZHJvcCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDlgLzlj5HnlJ/lj5jljJbml7bop6blj5HvvIzov5Tlm57pgInmi6npobnnmoTlgLxcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8YW55W10+XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlgLzlj5HnlJ/lj5jljJbml7bop6blj5HvvIzov5Tlm57pgInmi6npobnliJfooahcbiAgICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8VGh5Q2FzY2FkZXJPcHRpb25bXT5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5U2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlDYXNjYWRlck9wdGlvbltdPigpO1xuXG4gICAgLyoqXG4gICAgICog6YCJ5oup6YCJ6aG55pe26Kem5Y+RXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZSDmmoLml6Dlrp7njrBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5RGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgb3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbjtcbiAgICAgICAgaW5kZXg6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gICAgLyoqXG4gICAgICog5riF56m66YCJ6aG55pe26Kem5Y+RXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog5LiL5ouJ6YCJ6aG55bGV5byA5ZKM5oqY5Y+g54q25oCB5LqL5Lu2XG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUV4cGFuZFN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZHJlbignY2FzY2FkZXJPcHRpb25zJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNhc2NhZGVyT3B0aW9uczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZHJlbignY2FzY2FkZXJPcHRpb25Db250YWluZXJzJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNhc2NhZGVyT3B0aW9uQ29udGFpbmVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZChDZGtDb25uZWN0ZWRPdmVybGF5LCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtDb25uZWN0ZWRPdmVybGF5OiBDZGtDb25uZWN0ZWRPdmVybGF5O1xuXG4gICAgQFZpZXdDaGlsZCgndHJpZ2dlcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHRyaWdnZXI6IEVsZW1lbnRSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdtZW51JykgbWVudTogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBkcm9wRG93blBvc2l0aW9uID0gJ2JvdHRvbSc7XG5cbiAgICBwdWJsaWMgbWVudVZpc2libGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBpc0xhYmVsUmVuZGVyVGVtcGxhdGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB0cmlnZ2VyUmVjdDogRE9NUmVjdDtcblxuICAgIHB1YmxpYyBlbXB0eVN0YXRlVGV4dCA9ICfmmoLml6Dlj6/pgInpobknO1xuXG4gICAgcHJpdmF0ZSBwcmVmaXhDbHMgPSAndGh5LWNhc2NhZGVyJztcblxuICAgIHByaXZhdGUgbWVudUNsYXNzTmFtZTogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBjb2x1bW5DbGFzc05hbWU6IHN0cmluZztcblxuICAgIHByaXZhdGUgX21lbnVDb2x1bW5DbHM6IGFueTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBfbWVudUNsczogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgICBwcml2YXRlIF9sYWJlbENsczogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgICBwcml2YXRlIGxhYmVsUmVuZGVyVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIHB1YmxpYyBwb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXTtcblxuICAgIGdldCBzZWxlY3RlZCgpOiBTZWxlY3RPcHRpb25CYXNlIHwgU2VsZWN0T3B0aW9uQmFzZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5TXVsdGlwbGUgPyB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZCA6IHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdO1xuICAgIH1cbiAgICBwcml2YXRlIGlzTXVsdGlwbGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBtZW51TWluV2lkdGggPSAxMjI7XG5cbiAgICBwcml2YXRlIHNlYXJjaFRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG5cbiAgICBwdWJsaWMgZ2V0IHNlYXJjaFJlc3VsdExpc3QoKTogVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb25bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWFyY2hSZXN1bHRMaXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1Nob3dTZWFyY2hQYW5lbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog6Kej5Yaz5pCc57SiJuWkmumAieeahOaDheWGteS4i++8jOeCueWHu+aQnOe0oumhueS8muWvvOiHtCBwYW5lbCDpl6rng4FcbiAgICAgKiDnlLHkuo7ngrnlh7vlkI7vvIx0aHlTZWxlY3RlZE9wdGlvbnPlj5jljJbvvIzlr7zoh7QgdGh5U2VsZWN0Q29udHJvbFxuICAgICAqIOWPiOS8muinpuWPkSBzZWFyY2hGaWx0ZXIg5Ye95pWw77yM5Y2zIHJlc2V0U2VhcmNoIOS8muaJp+ihjFxuICAgICAqIOS8muWvvOiHtOaBouWkjee6p+iBlOeKtuaAgeWGjeWPmOS4uuaQnOe0oueKtuaAgVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNTZWxlY3RpbmdTZWFyY2hTdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGdldCBpc0xvYWRpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZT8uaXNMb2FkaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmNvbHVtbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZnRlckNoYW5nZUZuOiAoKSA9PiB2b2lkO1xuXG4gICAgcHJpdmF0ZSByZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENsYXNzTWFwKCk7XG4gICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgICAgIHRoaXMuc2V0TWVudUNvbHVtbkNsYXNzKCk7XG4gICAgICAgIHRoaXMuc2V0TGFiZWxDbGFzcygpO1xuICAgICAgICB0aGlzLmluaXRQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmluaXRTZWFyY2goKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGxhYmVsUHJvcGVydHk6IHRoaXMudGh5TGFiZWxQcm9wZXJ0eSxcbiAgICAgICAgICAgIHZhbHVlUHJvcGVydHk6IHRoaXMudGh5VmFsdWVQcm9wZXJ0eSxcbiAgICAgICAgICAgIGlzTXVsdGlwbGU6IHRoaXMuaXNNdWx0aXBsZSxcbiAgICAgICAgICAgIGlzT25seVNlbGVjdExlYWY6IHRoaXMudGh5SXNPbmx5U2VsZWN0TGVhZixcbiAgICAgICAgICAgIGlzTGFiZWxSZW5kZXJUZW1wbGF0ZTogdGhpcy5pc0xhYmVsUmVuZGVyVGVtcGxhdGUsXG4gICAgICAgICAgICBsb2FkRGF0YTogdGhpcy50aHlMb2FkRGF0YVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2FzY2FkZXJWYWx1ZUNoYW5nZSgpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc1ZhbHVlRXF1YWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4ob3B0aW9ucy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuaXNTZWxlY3Rpb25Nb2RlbEVtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGh5Q2xlYXIuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRoeVNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlDaGFuZ2UuZW1pdChvcHRpb25zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hZnRlckNoYW5nZUZuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJDaGFuZ2VGbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyQ2hhbmdlRm4gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2xpY2tEaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgLmNsaWNrZWQoMClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5tZW51Py5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZW51VmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZU1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeUF1dG9FeHBhbmQpIHtcbiAgICAgICAgICAgIHRpbWVyKDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sndGh5SXNPbmx5U2VsZWN0TGVhZiddKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZXRDYXNjYWRlck9wdGlvbnMoeyBpc09ubHlTZWxlY3RMZWFmOiBjaGFuZ2VzWyd0aHlJc09ubHlTZWxlY3RMZWFmJ10uY3VycmVudFZhbHVlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0UG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGNhc2NhZGVyUG9zaXRpb246IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IGNhc2NhZGVyUG9zaXRpb247XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLndyaXRlQ2FzY2FkZXJWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcG9zaXRpb25DaGFuZ2UocG9zaXRpb246IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHBvc2l0aW9uLmNvbm5lY3Rpb25QYWlyLm9yaWdpblkgPT09ICdib3R0b20nID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICAgICAgaWYgKHRoaXMuZHJvcERvd25Qb3NpdGlvbiAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcERvd25Qb3NpdGlvbiA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzQWN0aXZhdGVkT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmlzQWN0aXZhdGVkT3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0hhbGZTZWxlY3RlZE9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pc0hhbGZTZWxlY3RlZE9wdGlvbihvcHRpb24sIGluZGV4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTZWxlY3RlZE9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5pc1NlbGVjdGVkT3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhdHRhY2hlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkucG9zaXRpb25DaGFuZ2UucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEFjdGl2ZUVsZW1lbnRJbnRvVmlldygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNjcm9sbEFjdGl2ZUVsZW1lbnRJbnRvVmlldygpIHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlbGVjdGVkT3B0aW9ucykpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZU9wdGlvbnMgPSB0aGlzLmNhc2NhZGVyT3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aHktY2FzY2FkZXItbWVudS1pdGVtLWFjdGl2ZScpKVxuICAgICAgICAgICAgICAgIC8vIGZvciBtdWx0aXBsZSBtb2RlXG4gICAgICAgICAgICAgICAgLnNsaWNlKC10aGlzLmNhc2NhZGVyT3B0aW9uQ29udGFpbmVycy5sZW5ndGgpO1xuXG4gICAgICAgICAgICB0aGlzLmNhc2NhZGVyT3B0aW9uQ29udGFpbmVycy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8PSBhY3RpdmVPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgU2Nyb2xsVG9TZXJ2aWNlLnNjcm9sbFRvRWxlbWVudChhY3RpdmVPcHRpb25zW2luZGV4XS5uYXRpdmVFbGVtZW50LCBpdGVtLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TWVudVZpc2libGUobWVudVZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGUgIT09IG1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlID0gbWVudVZpc2libGU7XG5cbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmluaXRBY3RpdmF0ZWRPcHRpb25zKHRoaXMubWVudVZpc2libGUpO1xuICAgICAgICAgICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyUmVjdCA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50aHlFeHBhbmRTdGF0dXNDaGFuZ2UuZW1pdChtZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVDbHMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVDbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNZW51Q2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVDbHMgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1lbnVzYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1lbnVzLWhpZGRlbmBdOiAhdGhpcy5tZW51VmlzaWJsZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnRoeU1lbnVDbGFzc05hbWV9YF06IHRoaXMudGh5TWVudUNsYXNzTmFtZSxcbiAgICAgICAgICAgIFtgdy0xMDBgXTogdGhpcy5jb2x1bW5zLmxlbmd0aCA9PT0gMFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWVudUNvbHVtbkNscygpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVudUNvbHVtbkNscztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1lbnVDb2x1bW5DbGFzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNvbHVtbkNscyA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tbWVudWBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMudGh5Q29sdW1uQ2xhc3NOYW1lfWBdOiB0aGlzLnRoeUNvbHVtbkNsYXNzTmFtZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbGFiZWxDbHMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsQ2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGFiZWxDbGFzcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGFiZWxDbHMgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXBpY2tlci1sYWJlbGBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1zaG93LXNlYXJjaGBdOiBmYWxzZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZm9jdXNlZGBdOiBmYWxzZSxcbiAgICAgICAgICAgICd0ZXh0LXRydW5jYXRlJzogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q2xhc3NNYXAoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsYXNzTWFwID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfWBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXJgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tJHt0aGlzLnRoeVNpemV9YF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LXBpY2tlci1kaXNhYmxlZGBdOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItb3BlbmBdOiB0aGlzLm1lbnVWaXNpYmxlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnVwZGF0ZUNsYXNzQnlNYXAoY2xhc3NNYXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDbGlja1RyaWdnZXJBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJpZ2dlckFjdGlvbiA9PT0gJ2NsaWNrJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uLmluZGV4T2YoJ2NsaWNrJykgIT09IC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNIb3ZlclRyaWdnZXJBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5VHJpZ2dlckFjdGlvbiA9PT0gJ2hvdmVyJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uLmluZGV4T2YoJ2hvdmVyJykgIT09IC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNIb3ZlckV4cGFuZFRyaWdnZXJBY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aHlFeHBhbmRUcmlnZ2VyQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGh5RXhwYW5kVHJpZ2dlckFjdGlvbiA9PT0gJ2hvdmVyJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50aHlFeHBhbmRUcmlnZ2VyQWN0aW9uLmluZGV4T2YoJ2hvdmVyJykgIT09IC0xO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgdG9nZ2xlQ2xpY2soJGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ2xpY2tUcmlnZ2VyQWN0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoIXRoaXMubWVudVZpc2libGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIHRvZ2dsZU1vdXNlRW50ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSB8fCB0aGlzLm1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKHRydWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVNb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLmlzSG92ZXJUcmlnZ2VyQWN0aW9uKCkgfHwgIXRoaXMubWVudVZpc2libGUpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBob3N0RWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbW91c2VUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBob3N0RWwuY29udGFpbnMobW91c2VUYXJnZXQpIHx8XG4gICAgICAgICAgICBtb3VzZVRhcmdldD8uY2xhc3NMaXN0LmNvbnRhaW5zKCdjZGstb3ZlcmxheS1wYW5lJykgfHxcbiAgICAgICAgICAgIG1vdXNlVGFyZ2V0Py5jbGFzc0xpc3QuY29udGFpbnMoJ2Nkay1vdmVybGF5LWJhY2tkcm9wJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tDdXN0b21PcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50IHwgYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2xpY2tPcHRpb24ob3B0aW9uLCBpbmRleCwgZXZlbnQsIHRoaXMuc2VsZWN0T3B0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50IHwgYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5yZW1vdmVDdXN0b21PcHRpb24oKTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2xpY2tPcHRpb24ob3B0aW9uLCBpbmRleCwgZXZlbnQsIHRoaXMuc2VsZWN0T3B0aW9uKTtcblxuICAgICAgICBpZiAodGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5ICYmIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsY3VsYXRlIGFuZCB1cGRhdGUgdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBzdWJtZW51IGlzIG9wZW5lZFxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9uIHRvIHByZXZlbnQgdGhlIHN1Ym1lbnUgZnJvbSBhcHBlYXJpbmcgb2ZmLXNjcmVlblxuICAgICAgICAgICAgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Lm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG1vdXNlb3Zlck9wdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQgJiYgIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzSG92ZXJFeHBhbmRUcmlnZ2VyQWN0aW9uKCkgJiYgIShvcHRpb24gJiYgb3B0aW9uLmRpc2FibGVkICYmIHRoaXMuaXNNdWx0aXBsZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZU9wdGlvbihvcHRpb24sIGluZGV4LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICAvLyBUYWIg6IGa54Sm5ZCO6Ieq5Yqo6IGa54Sm5YiwIGlucHV0IOi+k+WFpeahhu+8jOatpOWIhuaUr+S4i+ebtOaOpei/lOWbnu+8jOaXoOmcgOinpuWPkSBvblRvdWNoZWRGblxuICAgICAgICBpZiAoZWxlbWVudE1hdGNoQ2xvc2VzdChldmVudD8ucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCwgWycudGh5LWNhc2NhZGVyLW1lbnVzJywgJ3RoeS1jYXNjYWRlciddKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKGV2ZW50PzogRm9jdXNFdmVudCkge1xuICAgICAgICBpZiAoIWVsZW1lbnRNYXRjaENsb3Nlc3QoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsIFsnLnRoeS1jYXNjYWRlci1tZW51cycsICd0aHktY2FzY2FkZXInXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0RWxlbWVudDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG4gICAgICAgICAgICBpbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgICAgIHRoaXMuaXNTaG93U2VhcmNoUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaFJlc3VsdExpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgc2VsZWN0OiBib29sZWFuLCBsb2FkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNldEFjdGl2ZU9wdGlvbihvcHRpb24sIGluZGV4LCBzZWxlY3QsIGxvYWRDaGlsZHJlbiwgdGhpcy5zZWxlY3RPcHRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0T3B0aW9uID0gKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKChvcHRpb24uaXNMZWFmIHx8ICF0aGlzLnRoeUlzT25seVNlbGVjdExlYWYpICYmICF0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmFmdGVyQ2hhbmdlRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRoeVNlbGVjdC5lbWl0KHsgb3B0aW9uLCBpbmRleCB9KTtcbiAgICAgICAgY29uc3QgaXNPcHRpb25DYW5TZWxlY3QgPSB0aGlzLnRoeUNoYW5nZU9uU2VsZWN0ICYmICF0aGlzLmlzTXVsdGlwbGU7XG4gICAgICAgIGlmIChvcHRpb24uaXNMZWFmIHx8ICF0aGlzLnRoeUlzT25seVNlbGVjdExlYWYgfHwgaXNPcHRpb25DYW5TZWxlY3QgfHwgdGhpcy5zaG91bGRQZXJmb3JtU2VsZWN0aW9uKG9wdGlvbiwgaW5kZXgpKSB7XG4gICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWxlY3RPcHRpb24ob3B0aW9uLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHVibGljIHJlbW92ZVNlbGVjdGVkSXRlbShldmVudDogeyBpdGVtOiBTZWxlY3RPcHRpb25CYXNlOyAkZXZlbnRPcmlnaW46IEV2ZW50IH0pIHtcbiAgICAgICAgZXZlbnQuJGV2ZW50T3JpZ2luLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5yZW1vdmVTZWxlY3RlZEl0ZW0oZXZlbnQ/Lml0ZW0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdWxkUGVyZm9ybVNlbGVjdGlvbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBsZXZlbDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy50aHlDaGFuZ2VPbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMudGh5Q2hhbmdlT24ob3B0aW9uLCBsZXZlbCkgPT09IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJTZWxlY3Rpb24oJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFmdGVyQ2hhbmdlRm4gPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aHlDYXNjYWRlclNlcnZpY2UuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5Q2xpY2tEaXNwYXRjaGVyOiBUaHlDbGlja0Rpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHB1YmxpYyB0aHlDYXNjYWRlclNlcnZpY2U6IFRoeUNhc2NhZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogVGh5Q2FzY2FkZXJPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/LnZhbHVlIHx8IGl0ZW0/Ll9pZCB8fCBpbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VhcmNoRmlsdGVyKHNlYXJjaFRleHQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXNlYXJjaFRleHQgJiYgIXRoaXMuaXNTZWxlY3RpbmdTZWFyY2hTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCQubmV4dChzZWFyY2hUZXh0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjAwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGZpbHRlcih0ZXh0ID0+IHRleHQgIT09ICcnKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShzZWFyY2hUZXh0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBsb2NhbCBzZWFyY2hcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEluTG9jYWwoc2VhcmNoVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dTZWFyY2hQYW5lbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlYXJjaEluTG9jYWwoc2VhcmNoVGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGh5Q2FzY2FkZXJTZXJ2aWNlLnNlYXJjaEluTG9jYWwoc2VhcmNoVGV4dCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldFNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5pc1Nob3dTZWFyY2hQYW5lbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5yZXNldFNlYXJjaCgpO1xuICAgICAgICB0aGlzLnNjcm9sbEFjdGl2ZUVsZW1lbnRJbnRvVmlldygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RTZWFyY2hSZXN1bHQoc2VsZWN0T3B0aW9uRGF0YTogVGh5Q2FzY2FkZXJTZWFyY2hPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB0aHlSb3dWYWx1ZTogc2VsZWN0ZWRPcHRpb25zIH0gPSBzZWxlY3RPcHRpb25EYXRhO1xuICAgICAgICBpZiAoc2VsZWN0T3B0aW9uRGF0YS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucy5mb3JFYWNoKChpdGVtOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVPcHRpb24oaXRlbSwgaW5kZXgsIGluZGV4ID09PSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoIC0gMSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0aW5nU2VhcmNoU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgc2VsZWN0T3B0aW9uRGF0YS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5TZWFyY2hSZXN1bHRMaXN0ID0gdGhpcy5zZWFyY2hSZXN1bHRMaXN0O1xuICAgICAgICAgICAgLy8g5L+d5oyB5pCc57Si6YCJ6aG5XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1NlYXJjaFBhbmVsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeUNhc2NhZGVyU2VydmljZS5zZWFyY2hSZXN1bHRMaXN0ID0gb3JpZ2luU2VhcmNoUmVzdWx0TGlzdDtcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0aW5nU2VhcmNoU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUcmlnZ2VyUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpO1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemUgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVzaXplLm9ic2VydmUodGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJSZWN0ID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkgJiYgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Lm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZVRyaWdnZXJSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlclJlc2l6ZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2RrT3ZlcmxheU9yaWdpbiAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiICN0cmlnZ2VyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5U2hvd0lucHV0XCI+XG4gICAgPGRpdlxuICAgICAgdGh5U2VsZWN0Q29udHJvbFxuICAgICAgW3RoeVNob3dTZWFyY2hdPVwidGh5U2hvd1NlYXJjaFwiXG4gICAgICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgICAgIFt0aHlBbGxvd0NsZWFyXT1cInRydWVcIlxuICAgICAgW3RoeVNlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFwiXG4gICAgICBbdGh5TWF4VGFnQ291bnRdPVwidGh5TWF4VGFnQ291bnRcIlxuICAgICAgKHRoeU9uUmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQpXCJcbiAgICAgICh0aHlPbkNsZWFyKT1cImNsZWFyU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgKHRoeU9uQmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAodGh5T25TZWFyY2gpPVwic2VhcmNoRmlsdGVyKCRldmVudClcIlxuICAgICAgW3RoeURpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFt0aHlJc011bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgIFt0aHlQYW5lbE9wZW5lZF09XCJtZW51VmlzaWJsZVwiXG4gICAgICBbdGh5UGxhY2Vob2xkZXJdPVwidGh5UGxhY2Vob2xkZXJcIlxuICAgICAgW2N1c3RvbURpc3BsYXlUZW1wbGF0ZV09XCJjdXN0b21EaXNwbGF5VGVtcGxhdGVcIlxuICAgICAgW3RoeVByZXNldF09XCJ0aHlQcmVzZXRcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRGlzcGxheVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwibGFiZWxDbHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTGFiZWxSZW5kZXJUZW1wbGF0ZTsgZWxzZSBsYWJlbFRlbXBsYXRlXCI+e3sgdmFsdWUubGFiZWxUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsYWJlbFRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeUxhYmVsUmVuZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInZhbHVlLmxhYmVsUmVuZGVyQ29udGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0aHlIYXNCYWNrZHJvcFwiXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwidGh5LWNhc2NhZGVyLWJhY2tkcm9wXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwicG9zaXRpb25zXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aF09XCJtZW51TWluV2lkdGhcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT249XCIudGh5LWNhc2NhZGVyLW1lbnVzXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VNZW51KClcIlxuICAoZGV0YWNoKT1cImNsb3NlTWVudSgpXCJcbiAgKGF0dGFjaCk9XCJhdHRhY2hlZCgpXCJcbiAgKHBvc2l0aW9uQ2hhbmdlKT1cInBvc2l0aW9uQ2hhbmdlKCRldmVudClcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwibWVudVZpc2libGVcIj5cbiAgPGRpdlxuICAgIFthdHRyLnRhYmluZGV4XT1cIi0xXCJcbiAgICAjbWVudVxuICAgIFtuZ0NsYXNzXT1cIm1lbnVDbHNcIlxuICAgIFtuZ1N0eWxlXT1cInRoeU1lbnVTdHlsZVwiXG4gICAgKG1vdXNlbGVhdmUpPVwidG9nZ2xlTW91c2VMZWF2ZSgkZXZlbnQpXCJcbiAgICBbQHNjYWxlWU1vdGlvbl09XCInZW50ZXInXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1Nob3dTZWFyY2hQYW5lbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbnMubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDx1bCAjY2FzY2FkZXJPcHRpb25Db250YWluZXJzICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXg7IGxldCBpc0ZpcnN0ID0gZmlyc3RcIiBbbmdDbGFzc109XCJtZW51Q29sdW1uQ2xzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoeUN1c3RvbU9wdGlvbnMgJiYgdGh5Q3VzdG9tT3B0aW9ucy5sZW5ndGggPiAwICYmIGlzRmlyc3RcIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAjY2FzY2FkZXJPcHRpb25zXG4gICAgICAgICAgICAgIHRoeS1jYXNjYWRlci1vcHRpb25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGN1c3RvbU9wdCBvZiB0aHlDdXN0b21PcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICBbb3B0aW9uXT1cImN1c3RvbU9wdFwiXG4gICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgICAgICAgICAgIFtpc09ubHlTZWxlY3RMZWFmXT1cInRoeUlzT25seVNlbGVjdExlYWZcIlxuICAgICAgICAgICAgICBbbGFiZWxQcm9wZXJ0eV09XCJ0aHlMYWJlbFByb3BlcnR5XCJcbiAgICAgICAgICAgICAgW2FjdGl2ZV09XCJpc0FjdGl2YXRlZE9wdGlvbihjdXN0b21PcHQsIDApXCJcbiAgICAgICAgICAgICAgW2hhbGZTZWxlY3RlZF09XCJpc0hhbGZTZWxlY3RlZE9wdGlvbihjdXN0b21PcHQsIDApXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWRPcHRpb24oY3VzdG9tT3B0LCAwKVwiXG4gICAgICAgICAgICAgICh0b2dnbGVTZWxlY3RDaGFuZ2UpPVwiY2xpY2tDdXN0b21PcHRpb24oY3VzdG9tT3B0LCAwLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ3VzdG9tT3B0aW9uKGN1c3RvbU9wdCwgMCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwibW91c2VvdmVyT3B0aW9uKGN1c3RvbU9wdCwgMCwgJGV2ZW50KVwiPjwvbGk+XG4gICAgICAgICAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJteS0xIG14LTRcIj48L3RoeS1kaXZpZGVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICAjY2FzY2FkZXJPcHRpb25zXG4gICAgICAgICAgICB0aHktY2FzY2FkZXItb3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICBbb3B0aW9uXT1cIm9wdGlvblwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgICAgICAgW2lzT25seVNlbGVjdExlYWZdPVwidGh5SXNPbmx5U2VsZWN0TGVhZlwiXG4gICAgICAgICAgICBbbGFiZWxQcm9wZXJ0eV09XCJ0aHlMYWJlbFByb3BlcnR5XCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgICAgICBbaGFsZlNlbGVjdGVkXT1cImlzSGFsZlNlbGVjdGVkT3B0aW9uKG9wdGlvbiwgaSlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWRPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgICAgICBbb3B0aW9uUmVuZGVyXT1cInRoeU9wdGlvblJlbmRlclwiXG4gICAgICAgICAgICAodG9nZ2xlU2VsZWN0Q2hhbmdlKT1cImNsaWNrT3B0aW9uKG9wdGlvbiwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tPcHRpb24ob3B0aW9uLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwibW91c2VvdmVyT3B0aW9uKG9wdGlvbiwgaSwgJGV2ZW50KVwiPjwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93U2VhcmNoUGFuZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hSZXN1bHRMaXN0Lmxlbmd0aDsgZWxzZSBlbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cInRoeS1jYXNjYWRlci1zZWFyY2gtbGlzdCBweS0zXCIgW25nU3R5bGVdPVwidGh5U2VhcmNoTGlzdFN0eWxlXCI+XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICB0aHktY2FzY2FkZXItc2VhcmNoLW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VhcmNoUmVzdWx0TGlzdFwiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgICAgICAgW2lzT25seVNlbGVjdExlYWZdPVwidGh5SXNPbmx5U2VsZWN0TGVhZlwiXG4gICAgICAgICAgICBbb3B0aW9uXT1cIml0ZW1cIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtvcHRpb25SZW5kZXJdPVwidGh5T3B0aW9uUmVuZGVyXCJcbiAgICAgICAgICAgICh0b2dnbGVTZWxlY3RDaGFuZ2UpPVwic2VsZWN0U2VhcmNoUmVzdWx0KCRldmVudClcIj48L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVBsYWNlaG9sZGVyPlxuICA8ZGl2IGNsYXNzPVwidGh5LWNhc2NhZGVyLWVtcHR5LWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cInsgJ3dpZHRoLnB4JzogdHJpZ2dlclJlY3Q/LndpZHRoIH1cIj5cbiAgICA8dGh5LWVtcHR5IGNsYXNzPVwidGh5LXNlbGVjdC1lbXB0eS1jb250ZW50XCIgdGh5U2l6ZT1cInNtXCIgW3RoeU1lc3NhZ2VdPVwiZW1wdHlTdGF0ZVRleHRcIj48L3RoeS1lbXB0eT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1hZ2UvaW1hZ2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBUaHlJbWFnZU1ldGEge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHlJbWFnZUluZm8gZXh0ZW5kcyBUaHlJbWFnZU1ldGEge1xuICAgIHNyYzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgb3JpZ2luPzoge1xuICAgICAgICBzcmM6IHN0cmluZztcbiAgICAgICAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgICAgIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgICAgICAgYWx0Pzogc3RyaW5nO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxJbWFnZUluZm8gZXh0ZW5kcyBUaHlJbWFnZUluZm8ge1xuICAgIG9iamVjdFVSTD86IFNhZmVVcmw7XG4gICAgYmxvYj86IEJsb2I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucyB7XG4gICAgY2xvc2VPbk5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZUtleWJvYXJkU2VsZWN0YWJsZT86IGJvb2xlYW47XG4gICAgem9vbT86IG51bWJlcjtcbiAgICByb3RhdGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1hZ2UvaW1hZ2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBUaHlJbWFnZU1ldGEge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHlJbWFnZUluZm8gZXh0ZW5kcyBUaHlJbWFnZU1ldGEge1xuICAgIHNyYzogc3RyaW5nO1xuICAgIHdpZHRoPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgICBhbHQ/OiBzdHJpbmc7XG4gICAgb3JpZ2luPzoge1xuICAgICAgICBzcmM6IHN0cmluZztcbiAgICAgICAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgICAgIGhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcbiAgICAgICAgYWx0Pzogc3RyaW5nO1xuICAgIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxJbWFnZUluZm8gZXh0ZW5kcyBUaHlJbWFnZUluZm8ge1xuICAgIG9iamVjdFVSTD86IFNhZmVVcmw7XG4gICAgYmxvYj86IEJsb2I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucyB7XG4gICAgY2xvc2VPbk5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG4gICAgZGlzYWJsZUtleWJvYXJkU2VsZWN0YWJsZT86IGJvb2xlYW47XG4gICAgem9vbT86IG51bWJlcjtcbiAgICByb3RhdGU/OiBudW1iZXI7XG4gICAgb3BlcmF0aW9ucz86IChUaHlJbWFnZVByZXZpZXdPcGVyYXRpb25UeXBlIHwgVGh5SW1hZ2VQcmV2aWV3T3BlcmF0aW9uKVtdO1xuICAgIHJlc29sdmVTaXplPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb24ge1xuICAgIGljb246IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uPzogKGltYWdlPzogVGh5SW1hZ2VJbmZvKSA9PiB2b2lkO1xuICAgIHR5cGU/OiBUaHlJbWFnZVByZXZpZXdPcGVyYXRpb25UeXBlO1xufVxuXG5leHBvcnQgdHlwZSBUaHlJbWFnZVByZXZpZXdNb2RlID0gJ29yaWdpbmFsLXNjYWxlJyB8ICdmaXQtc2NyZWVuJztcblxuZXhwb3J0IHR5cGUgVGh5SW1hZ2VQcmV2aWV3T3BlcmF0aW9uVHlwZSA9XG4gICAgfCAnem9vbS1vdXQnXG4gICAgfCAnem9vbS1pbidcbiAgICB8ICdyb3RhdGUtcmlnaHQnXG4gICAgfCAnZG93bmxvYWQnXG4gICAgfCBUaHlJbWFnZVByZXZpZXdNb2RlXG4gICAgfCAnY29weUxpbmsnXG4gICAgfCAndmlldy1vcmlnaW5hbCdcbiAgICB8ICdmdWxsLXNjcmVlbic7XG4iXX0=
|
package/esm2022/image/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export * from './module';
|
|
2
|
-
export * from './image.directive';
|
|
3
1
|
export * from './image-group.component';
|
|
4
|
-
export * from './preview/image-preview.component';
|
|
5
|
-
export * from './image.service';
|
|
6
2
|
export * from './image.class';
|
|
3
|
+
export * from './image.config';
|
|
4
|
+
export * from './image.directive';
|
|
5
|
+
export * from './image.service';
|
|
6
|
+
export * from './module';
|
|
7
7
|
export * from './preview/image-preview-ref';
|
|
8
|
-
|
|
8
|
+
export * from './preview/image-preview.component';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1hZ2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ltYWdlLWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UuY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2UuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL21vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3ByZXZpZXcvaW1hZ2UtcHJldmlldy1yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmV2aWV3L2ltYWdlLXByZXZpZXcuY29tcG9uZW50JztcbiJdfQ==
|