ngx-tethys 14.2.10 → 14.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/esm2020/cascader/cascader.component.mjs +4 -3
- package/esm2020/color-picker/color-picker-panel.component.mjs +5 -3
- package/esm2020/image/image.service.mjs +18 -1
- package/esm2020/image/preview/image-preview-ref.mjs +4 -1
- package/esm2020/image/preview/image-preview.component.mjs +8 -4
- package/esm2020/pagination/pagination.component.mjs +1 -1
- package/esm2020/progress/index.mjs +5 -4
- package/esm2020/progress/interfaces.mjs +1 -1
- package/esm2020/progress/progress-circle.component.mjs +144 -0
- package/esm2020/progress/progress-strip.component.mjs +66 -0
- package/esm2020/progress/progress.component.mjs +53 -10
- package/esm2020/progress/progress.module.mjs +6 -5
- package/esm2020/select/custom-select/custom-select.component.mjs +60 -6
- package/esm2020/table/table-column.component.mjs +3 -3
- package/esm2020/table/table.component.mjs +3 -3
- package/esm2020/version.mjs +2 -2
- package/fesm2015/ngx-tethys-cascader.mjs +4 -2
- package/fesm2015/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2015/ngx-tethys-color-picker.mjs +4 -2
- package/fesm2015/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2015/ngx-tethys-image.mjs +26 -4
- package/fesm2015/ngx-tethys-image.mjs.map +1 -1
- package/fesm2015/ngx-tethys-pagination.mjs +1 -1
- package/fesm2015/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2015/ngx-tethys-progress.mjs +197 -19
- package/fesm2015/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2015/ngx-tethys-select.mjs +59 -5
- package/fesm2015/ngx-tethys-select.mjs.map +1 -1
- package/fesm2015/ngx-tethys-table.mjs +4 -4
- package/fesm2015/ngx-tethys-table.mjs.map +1 -1
- package/fesm2015/ngx-tethys.mjs +1 -1
- package/fesm2015/ngx-tethys.mjs.map +1 -1
- package/fesm2020/ngx-tethys-cascader.mjs +3 -2
- package/fesm2020/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2020/ngx-tethys-color-picker.mjs +4 -2
- package/fesm2020/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2020/ngx-tethys-image.mjs +26 -4
- package/fesm2020/ngx-tethys-image.mjs.map +1 -1
- package/fesm2020/ngx-tethys-pagination.mjs +1 -1
- package/fesm2020/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2020/ngx-tethys-progress.mjs +197 -19
- package/fesm2020/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2020/ngx-tethys-select.mjs +59 -5
- package/fesm2020/ngx-tethys-select.mjs.map +1 -1
- package/fesm2020/ngx-tethys-table.mjs +4 -4
- package/fesm2020/ngx-tethys-table.mjs.map +1 -1
- package/fesm2020/ngx-tethys.mjs +1 -1
- package/fesm2020/ngx-tethys.mjs.map +1 -1
- package/image/image.service.d.ts +7 -1
- package/image/preview/image-preview-ref.d.ts +3 -1
- package/image/preview/image-preview.component.d.ts +3 -2
- package/package.json +1 -1
- package/progress/examples/circle/circle.component.scss +4 -0
- package/progress/index.d.ts +4 -3
- package/progress/interfaces.d.ts +10 -0
- package/progress/progress-circle.component.d.ts +33 -0
- package/progress/{bar/progress-bar.component.d.ts → progress-strip.component.d.ts} +6 -6
- package/progress/progress.component.d.ts +29 -8
- package/progress/progress.module.d.ts +5 -4
- package/progress/styles/progress-circle.scss +39 -0
- package/progress/styles/progress-strip.scss +51 -0
- package/progress/styles/progress.scss +29 -62
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/select/custom-select/custom-select.component.d.ts +81 -1
- package/shared/option/styles/option.mixin.scss +26 -0
- package/styles/variables.scss +4 -1
- package/table/table-column.component.d.ts +1 -1
- package/table/table.component.d.ts +1 -1
- package/esm2020/progress/bar/progress-bar.component.mjs +0 -67
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
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
|
+
## [14.2.11](https://github.com/atinc/ngx-tethys/compare/14.2.10...14.2.11) (2023-01-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **cascader:** display labels correctly when get options by async way #INFR-6044 ([#2477](https://github.com/atinc/ngx-tethys/issues/2477)) ([e7d1658](https://github.com/atinc/ngx-tethys/commit/e7d165823d90bc4b538b88b0cfc2156ed9e44b9a)), closes [#INFR-6044](https://github.com/atinc/ngx-tethys/issues/INFR-6044)
|
|
11
|
+
* **color-picker:** hide transparentColorSelect change style paddingTop [@wanghuan](https://github.com/wanghuan) ([#2475](https://github.com/atinc/ngx-tethys/issues/2475)) ([a897ebf](https://github.com/atinc/ngx-tethys/commit/a897ebf06ed03832856ac657394d6c3e635e45e4))
|
|
12
|
+
* **option:** #INFR-6128 fix icon color error when option is active [@haifeng](https://github.com/haifeng) ([#2480](https://github.com/atinc/ngx-tethys/issues/2480)) ([6a3a9a9](https://github.com/atinc/ngx-tethys/commit/6a3a9a945b252d18bb637a4c8cd57399e7eeadd7))
|
|
13
|
+
* **table:** remove thy-grid selector #INFR-6124 ([#2479](https://github.com/atinc/ngx-tethys/issues/2479)) ([fe1b5a8](https://github.com/atinc/ngx-tethys/commit/fe1b5a870521252d741e0b5ffc7b203ee07160b1)), closes [#INFR-6124](https://github.com/atinc/ngx-tethys/issues/INFR-6124)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* **image:** support ThyImageService support downloadClicked$ #INFR-6120 ([1d25519](https://github.com/atinc/ngx-tethys/commit/1d25519f3496a21c5fe29fbae4c6e5527ed695c6)), closes [#INFR-6120](https://github.com/atinc/ngx-tethys/issues/INFR-6120)
|
|
19
|
+
* **progress:** progress support circle mode #INFR-5999 ([0f6f241](https://github.com/atinc/ngx-tethys/commit/0f6f2413d621eb5733d5ddbf4a22aebfb68d2bf0)), closes [#INFR-5999](https://github.com/atinc/ngx-tethys/issues/INFR-5999)
|
|
20
|
+
* **select:** custom-select 支持自定义 origin #INFR-5676 ([#2476](https://github.com/atinc/ngx-tethys/issues/2476)) ([eff0157](https://github.com/atinc/ngx-tethys/commit/eff01577899d571f2ab44a35ce3adb01aaeef2f7)), closes [#INFR-5676](https://github.com/atinc/ngx-tethys/issues/INFR-5676)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### BREAKING CHANGES
|
|
24
|
+
|
|
25
|
+
* **table:** table thy-grid selector deprecated
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
5
29
|
## [14.2.10](https://github.com/atinc/ngx-tethys/compare/14.2.9...14.2.10) (2023-01-06)
|
|
6
30
|
|
|
7
31
|
|
|
@@ -565,8 +565,9 @@ export class ThyCascaderComponent {
|
|
|
565
565
|
}
|
|
566
566
|
this.activatedOptions[index] = option;
|
|
567
567
|
for (let i = index - 1; i >= 0; i--) {
|
|
568
|
-
|
|
569
|
-
|
|
568
|
+
const originOption = this.activatedOptions[i + 1]?.parent;
|
|
569
|
+
if (!this.activatedOptions[i] || originOption?._id !== this.activatedOptions[i]._id) {
|
|
570
|
+
this.activatedOptions[i] = originOption ?? this.activatedOptions[i];
|
|
570
571
|
}
|
|
571
572
|
}
|
|
572
573
|
if (index < this.activatedOptions.length - 1) {
|
|
@@ -837,4 +838,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
837
838
|
type: HostListener,
|
|
838
839
|
args: ['mouseover', ['$event']]
|
|
839
840
|
}] } });
|
|
840
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBMEQsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEksT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUdqRCxTQUFTLE9BQU8sQ0FBSSxLQUFjO0lBQzlCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1FBQ2YsR0FBRyxHQUFHLEVBQUUsQ0FBQztLQUNaO1NBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FB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QkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRVcsd0JBQXdCO3NCQUF2RixZQUFZO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFWixtQkFBbUI7c0JBQXBFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVVLE9BQU87c0JBQWhFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwQyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBRUMsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQXdYVixXQUFXO3NCQURqQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZMUIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUywgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciwgU2Nyb2xsVG9TZXJ2aWNlLCBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFNlbGVjdENvbnRyb2xTaXplLCBTZWxlY3RPcHRpb25CYXNlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgaGVscGVycywgaXNBcnJheSwgaXNFbXB0eSwgc2V0IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlciwgVGh5Q2FzY2FkZXJPcHRpb24sIFRoeUNhc2NhZGVyVHJpZ2dlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gdG9BcnJheTxUPih2YWx1ZTogVCB8IFRbXSk6IFRbXSB7XG4gICAgbGV0IHJldDogVFtdO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldCA9IFtdO1xuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldCA9IFt2YWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0ID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGFycmF5RXF1YWxzPFQ+KGFycmF5MTogVFtdLCBhcnJheTI6IFRbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJyYXkxIHx8ICFhcnJheTIgfHwgYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGVuID0gYXJyYXkxLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJheTFbaV0gIT09IGFycmF5MltpXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5jb25zdCBkZWZhdWx0RGlzcGxheVJlbmRlciA9IChsYWJlbDogYW55KSA9PiBsYWJlbC5qb2luKCcgLyAnKTtcblxuLyoqXG4gKiDnuqfogZTpgInmi6noj5zljZVcbiAqIEBuYW1lIHRoeS1jYXNjYWRlclxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jYXNjYWRlcixbdGh5LWNhc2NhZGVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVXBkYXRlSG9zdENsYXNzU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlDYXNjYWRlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgLnRoeS1jYXNjYWRlci1tZW51cyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICBgXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlDYXNjYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5a6e6ZmF5YC855qE5bGe5oCn5ZCNXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VmFsdWVQcm9wZXJ0eSA9ICd2YWx1ZSc7XG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTmmL7npLrlgLznmoTlsZ7mgKflkI1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlMYWJlbFByb3BlcnR5ID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIOaPj+i/sOi+k+WFpeWtl+autemihOacn+WAvOeahOeugOefreeahOaPkOekuuS/oeaBr1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlaG9sZGVyID0gJ+ivt+mAieaLqSc7XG5cbiAgICAvKipcbiAgICAgKiDmjqfliLblpKflsI/vvIg056eN77yJ77yMYHNtYCwgYG1kYCwgYGRlZmF1bHRgLCBgbGdgXG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFNlbGVjdENvbnRyb2xTaXplID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDmlbDmja7poblcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlck9wdGlvbltdXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlPcHRpb25zKG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGggPyBbb3B0aW9uc10gOiBbXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdE9wdGlvbnMoMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vniLbnuqfoj5zljZXpgInpobnml7bvvIzlj6/pgJrov4for6Xlh73mlbDliKTmlq3mmK/lkKblhYHorrjlgLznmoTlj5jljJZcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDaGFuZ2VPbjogKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGxldmVsOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vpobnml7bvvIzooajljZXmmK/lkKbliqjmgIHlsZXnpLrmlbDmja7poblcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlDaGFuZ2VPblNlbGVjdCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5pi+56S66L6T5YWl5qGGXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeVNob3dJbnB1dCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDnlKjmiLfoh6rlrprkuYnmqKHniYhcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlMYWJlbFJlbmRlcih2YWx1ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLmxhYmVsUmVuZGVyVHBsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICBnZXQgdGh5TGFiZWxSZW5kZXIoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsUmVuZGVyVHBsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeUqOS6juWKqOaAgeWKoOi9vemAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxvYWREYXRhOiAobm9kZTogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4PzogbnVtYmVyKSA9PiBQcm9taXNlTGlrZTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICog5o6n5Yi26Kem5Y+R54q25oCBLCDmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAZGVmYXVsdCBbJ2NsaWNrJ11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUcmlnZ2VyQWN0aW9uOiBUaHlDYXNjYWRlclRyaWdnZXJUeXBlIHwgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZVtdID0gWydjbGljayddO1xuXG4gICAgLyoqXG4gICAgICog6byg5qCH57uP6L+H5LiL5pa55YiX6KGo6aG55pe277yM5piv5ZCm6Ieq5Yqo5bGV5byA5YiX6KGoLCDmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAZGVmYXVsdCBbJ2NsaWNrJ11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFeHBhbmRUcmlnZ2VyQWN0aW9uOiBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXIgfCBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXJbXSA9IFsnY2xpY2snXTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguagt+W8j1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU1lbnVTdHlsZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguexu+WQjVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeU1lbnVDbGFzc05hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1lbnVDbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TWVudUNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51Q2xhc3NOYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFx06Ieq5a6a5LmJ5rWu5bGC5YiX57G75ZCNXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q29sdW1uQ2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5DbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5Q29sdW1uQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblj6ror7tcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RGlzYWJsZWQnKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOepuueKtuaAgeS4i+eahOWxleekuuaWh+Wtl1xuICAgICAqIEBkZWZhdWx0ICfmmoLml6Dlj6/pgInpobknXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5RW1wdHlTdGF0ZVRleHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVtcHR5U3RhdGVUZXh0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCB0aHlNdWx0aXBsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTXVsdGlwbGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5aSa6YCJ5pe25pyA5aSn5pi+56S655qE5qCH562+5pWw6YeP77yMMCDooajnpLrkuI3pmZDliLZcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5TWF4VGFnQ291bnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGUg5b2T5aSa6YCJ5pe25piv5ZCm5Y+q6IO96YCJ5oup5Y+25a2Q6aG5LCDmmoLml6Dlrp7njrBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHRoeUlzT25seVNlbGVjdExlYWYgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5YC85Y+R55Sf5Y+Y5YyW5pe26Kem5Y+RLOi/lOWbnumAieaLqemhueeahOWAvFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gICAgLyoqXG4gICAgICog5YC85Y+R55Sf5Y+Y5YyW5pe26Kem5Y+RLOi/lOWbnumAieaLqemhueWIl+ihqFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeUNhc2NhZGVyT3B0aW9uW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiDpgInmi6npgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb247XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlIOaaguaXoOWunueOsFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlEZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDmuIXnqbrpgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Q2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXksIHsgc3RhdGljOiB0cnVlIH0pIGNka0Nvbm5lY3RlZE92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlcjogRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnUnKSBtZW51OiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIGRyb3BEb3duUG9zaXRpb24gPSAnYm90dG9tJztcbiAgICBwdWJsaWMgbWVudVZpc2libGUgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dTZWFyY2ggPSBmYWxzZTtcbiAgICBwdWJsaWMgbGFiZWxSZW5kZXJUZXh0OiBzdHJpbmc7XG4gICAgcHVibGljIGxhYmVsUmVuZGVyQ29udGV4dDogYW55ID0ge307XG4gICAgcHVibGljIGlzTGFiZWxSZW5kZXJUZW1wbGF0ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyB0cmlnZ2VyUmVjdDogRE9NUmVjdDtcbiAgICBwdWJsaWMgY29sdW1uczogVGh5Q2FzY2FkZXJPcHRpb25bXVtdID0gW107XG4gICAgcHVibGljIGVtcHR5U3RhdGVUZXh0ID0gJ+aaguaXoOWPr+mAiemhuSc7XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPFNlbGVjdE9wdGlvbkJhc2U+O1xuICAgIHByaXZhdGUgcHJlZml4Q2xzID0gJ3RoeS1jYXNjYWRlcic7XG4gICAgcHJpdmF0ZSBtZW51Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBjb2x1bW5DbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIF9tZW51Q29sdW1uQ2xzOiBhbnk7XG4gICAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX21lbnVDbHM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICAgIHByaXZhdGUgX2xhYmVsQ2xzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbiAgICBwcml2YXRlIGxhYmVsUmVuZGVyVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIG9uQ2hhbmdlOiBhbnkgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gICAgb25Ub3VjaGVkOiBhbnkgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gICAgcHJpdmF0ZSBjYXNjYWRlclBvc2l0aW9uID0gWy4uLkVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OU107XG4gICAgcG9zaXRpb25zOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW107XG5cbiAgICBwcml2YXRlIHZhbHVlOiBhbnlbXTtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRPcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdID0gW107XG5cbiAgICBwcml2YXRlIGFjdGl2YXRlZE9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gPSBbXTtcblxuICAgIGdldCBzZWxlY3RlZCgpOiBTZWxlY3RPcHRpb25CYXNlIHwgU2VsZWN0T3B0aW9uQmFzZVtdIHtcbiAgICAgICAgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Py5vdmVybGF5UmVmPy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQgOiB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBwcmV2U2VsZWN0ZWRPcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdID0gW107XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgICAgICB0aGlzLnNldE1lbnVDb2x1bW5DbGFzcygpO1xuICAgICAgICB0aGlzLnNldExhYmVsQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5pbml0UG9zaXRpb24oKTtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPFNlbGVjdE9wdGlvbkJhc2U+KHRoaXMudGh5TXVsdGlwbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld1BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgxMDApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJSZWN0ID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbCh0aGlzLmlzTXVsdGlwbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMuY2FzY2FkZXJQb3NpdGlvblswXS5vZmZzZXRZID0gMTA7IC8vIOW3puS4i1xuICAgICAgICB0aGlzLmNhc2NhZGVyUG9zaXRpb25bMV0ub2Zmc2V0WSA9IDEwOyAvLyDlj7PkuItcbiAgICAgICAgdGhpcy5jYXNjYWRlclBvc2l0aW9uWzJdLm9mZnNldFkgPSAtMTA7IC8vIOWPs+S4i1xuICAgICAgICB0aGlzLmNhc2NhZGVyUG9zaXRpb25bM10ub2Zmc2V0WSA9IC0xMDsgLy8g5Y+z5LiLXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYXNjYWRlclBvc2l0aW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdE9wdGlvbnMoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCB2cyA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgICAgICBjb25zdCBsb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZU9uSW5pdChpbmRleCwgdnNbaW5kZXhdKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHZzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zKGluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHZzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyV3JpdGVWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKGluZGV4KSB8fCAhdGhpcy50aHlMb2FkRGF0YSkge1xuICAgICAgICAgICAgbG9hZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpbmRleCAtIDFdIHx8IHt9O1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4obm9kZSwgaW5kZXggLSAxLCBsb2FkLCB0aGlzLmFmdGVyV3JpdGVWYWx1ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVPbkluaXQoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5maW5kT3B0aW9uKHZhbHVlLCBpbmRleCk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICBvcHRpb24gPVxuICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ake3RoaXMudGh5VmFsdWVQcm9wZXJ0eSB8fCAndmFsdWUnfWBdOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ake3RoaXMudGh5TGFiZWxQcm9wZXJ0eSB8fCAnbGFiZWwnfWBdOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVQcmV2U2VsZWN0ZWRPcHRpb25zKG9wdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKG9wdGlvbiwgaW5kZXgsIGZhbHNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmV2U2VsZWN0ZWRPcHRpb25zKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGlzQWN0aXZhdGVJbml0ID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzQWN0aXZhdGVJbml0KSB7XG4gICAgICAgICAgICBzZXQob3B0aW9uLCAnc2VsZWN0ZWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMucHJldlNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gIW9wdGlvbi5zZWxlY3RlZDtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnByZXZTZWxlY3RlZE9wdGlvbnMubGVuZ3RoICYmICF0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgc2V0KHRoaXMucHJldlNlbGVjdGVkT3B0aW9ucy5wb3AoKSwgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0KG9wdGlvbiwgJ3NlbGVjdGVkJywgaXNTZWxlY3RlZCk7XG4gICAgICAgICAgICB0aGlzLnByZXZTZWxlY3RlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgdnMgPSAodGhpcy5kZWZhdWx0VmFsdWUgPSB0b0FycmF5KHZhbHVlKSk7XG4gICAgICAgICAgICBpZiAodnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0T3B0aW9ucygwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZzO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJXcml0ZVZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB0b0FycmF5KHZhbHVlKTtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZzID0gKHRoaXMuZGVmYXVsdFZhbHVlID0gdG9BcnJheShpdGVtKSk7XG4gICAgICAgICAgICAgICAgaWYgKHZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zKDApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJXcml0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZnRlcldyaXRlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRTdWJtaXRWYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkU2VsZWN0ZWRTdGF0ZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYnVpbGREaXNwbGF5TGFiZWwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFNlbGVjdGVkU3RhdGUoc2VsZWN0T3B0aW9uczogVGh5Q2FzY2FkZXJPcHRpb25bXSkge1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlICYmIHRoaXMudGh5SXNPbmx5U2VsZWN0TGVhZikge1xuICAgICAgICAgICAgc2VsZWN0T3B0aW9ucy5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdC5pc0xlYWYpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2V0KG9wdCwgJ3NlbGVjdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3NpdGlvbkNoYW5nZShwb3NpdGlvbjogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcG9zaXRpb24uY29ubmVjdGlvblBhaXIub3JpZ2luWSA9PT0gJ2JvdHRvbScgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICBpZiAodGhpcy5kcm9wRG93blBvc2l0aW9uICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93blBvc2l0aW9uID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTG9hZGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uc1tpbmRleF0gJiYgdGhpcy5jb2x1bW5zW2luZGV4XS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcHRpb25MYWJlbChvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uKTogYW55IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvblt0aGlzLnRoeUxhYmVsUHJvcGVydHkgfHwgJ2xhYmVsJ107XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9wdGlvblZhbHVlKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24pOiBhbnkge1xuICAgICAgICByZXR1cm4gb3B0aW9uW3RoaXMudGh5VmFsdWVQcm9wZXJ0eSB8fCAndmFsdWUnXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlT3B0ID0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zW2luZGV4XTtcbiAgICAgICAgICAgIHJldHVybiBhY3RpdmVPcHQgPT09IG9wdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvcHRpb24uaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5zZWxlY3RlZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRzID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCBhcHBlYXJJbmRleCA9IHNlbGVjdGVkT3B0cy5maW5kSW5kZXgoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IGhlbHBlcnMuZ2V0KGl0ZW0sIGB0aHlSYXdWYWx1ZS52YWx1ZS4ke2luZGV4fWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGVscGVycy5zaGFsbG93RXF1YWwoc2VsZWN0ZWRJdGVtLCBvcHRpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHBlYXJJbmRleCA+PSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkucG9zaXRpb25DaGFuZ2UucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5zZWxlY3RlZE9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlT3B0aW9ucyA9IHRoaXMuY2FzY2FkZXJPcHRpb25zLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RoeS1jYXNjYWRlci1tZW51LWl0ZW0tYWN0aXZlJylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FzY2FkZXJPcHRpb25Db250YWluZXJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8PSBhY3RpdmVPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbFRvU2VydmljZS5zY3JvbGxUb0VsZW1lbnQoYWN0aXZlT3B0aW9uc1tpbmRleF0ubmF0aXZlRWxlbWVudCwgaXRlbS5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRPcHRpb24ob3B0aW9uOiBhbnksIGluZGV4OiBudW1iZXIpOiBUaHlDYXNjYWRlck9wdGlvbiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gPSB0aGlzLmNvbHVtbnNbaW5kZXhdO1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSA6IG9wdGlvbjtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiB2YWx1ZSA9PT0gdGhpcy5nZXRPcHRpb25WYWx1ZShvKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZERpc3BsYXlMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICAgICAgY29uc3QgbGFiZWxzOiBzdHJpbmdbXSA9IHNlbGVjdGVkT3B0aW9ucy5tYXAobyA9PiB0aGlzLmdldE9wdGlvbkxhYmVsKG8pKTtcbiAgICAgICAgaWYgKGxhYmVscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGFiZWxSZW5kZXJDb250ZXh0O1xuICAgICAgICBsZXQgbGFiZWxSZW5kZXJUZXh0O1xuICAgICAgICBpZiAodGhpcy5pc0xhYmVsUmVuZGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGxhYmVsUmVuZGVyQ29udGV4dCA9IHsgbGFiZWxzLCBzZWxlY3RlZE9wdGlvbnMgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhYmVsUmVuZGVyVGV4dCA9IGRlZmF1bHREaXNwbGF5UmVuZGVyLmNhbGwodGhpcywgbGFiZWxzLCBzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5sYWJlbFJlbmRlclRleHQgPSBsYWJlbFJlbmRlclRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGFiZWxSZW5kZXJUZXh0IHx8IHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGE6IFNlbGVjdE9wdGlvbkJhc2UgPSB7XG4gICAgICAgICAgICAgICAgdGh5UmF3VmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0OiBsYWJlbFJlbmRlclRleHQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsUmVuZGVyQ29udGV4dDogbGFiZWxSZW5kZXJDb250ZXh0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aHlWYWx1ZTogbGFiZWxzLFxuICAgICAgICAgICAgICAgIHRoeUxhYmVsVGV4dDogbGFiZWxSZW5kZXJUZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qoc2VsZWN0ZWREYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc01lbnVWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51VmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TWVudVZpc2libGUobWVudVZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGUgIT09IG1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlID0gbWVudVZpc2libGU7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdEFjdGl2YXRlZE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclJlY3QgPSB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEFjdGl2YXRlZE9wdGlvbnMoKSB7XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMuc2VsZWN0ZWRPcHRpb25zKSB8fCAhdGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uc107XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pICYmICFpdGVtLmlzTGVhZikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1tpbmRleCArIDFdID0gaXRlbS5jaGlsZHJlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51Q2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51Q2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWVudUNsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51Q2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51c2BdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51cy1oaWRkZW5gXTogIXRoaXMubWVudVZpc2libGUsXG4gICAgICAgICAgICBbYCR7dGhpcy50aHlNZW51Q2xhc3NOYW1lfWBdOiB0aGlzLnRoeU1lbnVDbGFzc05hbWUsXG4gICAgICAgICAgICBbYHctMTAwYF06IHRoaXMuY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVDb2x1bW5DbHMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVDb2x1bW5DbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNZW51Q29sdW1uQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVDb2x1bW5DbHMgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1lbnVgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnRoeUNvbHVtbkNsYXNzTmFtZX1gXTogdGhpcy50aHlDb2x1bW5DbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsQ2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbENscztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExhYmVsQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhYmVsQ2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItbGFiZWxgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tc2hvdy1zZWFyY2hgXTogZmFsc2UsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWZvY3VzZWRgXTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENsYXNzTWFwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc31gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LSR7dGhpcy50aHlTaXplfWBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItZGlzYWJsZWRgXTogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLW9wZW5gXTogdGhpcy5tZW51VmlzaWJsZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UudXBkYXRlQ2xhc3NCeU1hcChjbGFzc01hcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NsaWNrVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnY2xpY2snO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignY2xpY2snKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyRXhwYW5kVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlFeHBhbmRUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVDbGljaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDbGlja1RyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSghdGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVIb3ZlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSghdGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIGlmIChldmVudCBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICAgIC8vICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmIChvcHRpb24uaXNMZWFmICYmIGV2ZW50IGluc3RhbmNlb2YgRXZlbnQgJiYgdGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZU9wdGlvbihvcHRpb24sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VvdmVyT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNIb3ZlckV4cGFuZFRyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKG9wdGlvbiwgaW5kZXgsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VsZWF2ZU1lbnUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoIXRoaXMubWVudVZpc2libGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgc2VsZWN0OiBib29sZWFuLCBsb2FkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghb3B0aW9uIHx8IG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpbmRleF0gPSBvcHRpb247XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpXSB8fCB0aGlzLmFjdGl2YXRlZE9wdGlvbnNbaSArIDFdLnBhcmVudC5faWQgIT09IHRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpXS5faWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZE9wdGlvbnNbaV0gPSB0aGlzLmFjdGl2YXRlZE9wdGlvbnNbaSArIDFdLnBhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmFjdGl2YXRlZE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRPcHRpb25zID0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zLnNsaWNlKDAsIGluZGV4ICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXJyYXkob3B0aW9uLmNoaWxkcmVuKSAmJiBvcHRpb24uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICBvcHRpb24uaXNMZWFmID0gZmFsc2U7XG4gICAgICAgICAgICBvcHRpb24uY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiAoY2hpbGQucGFyZW50ID0gb3B0aW9uKSk7XG4gICAgICAgICAgICB0aGlzLnNldENvbHVtbkRhdGEob3B0aW9uLmNoaWxkcmVuLCBpbmRleCArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb24uaXNMZWFmICYmIGxvYWRDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4ob3B0aW9uLCBpbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnRoeVNlbGVjdC5lbWl0KHsgb3B0aW9uLCBpbmRleCB9KTtcbiAgICAgICAgY29uc3QgaXNPcHRpb25DYW5TZWxlY3QgPSB0aGlzLnRoeUNoYW5nZU9uU2VsZWN0ICYmICF0aGlzLmlzTXVsdGlwbGU7XG4gICAgICAgIGlmIChvcHRpb24uaXNMZWFmIHx8IGlzT3B0aW9uQ2FuU2VsZWN0IHx8IHRoaXMuc2hvdWxkUGVyZm9ybVNlbGVjdGlvbihvcHRpb24sIGluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLmFjdGl2YXRlZE9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZTZWxlY3RlZE9wdGlvbnMob3B0aW9uKTtcbiAgICAgICAgICAgIGlmIChvcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGlzcGxheUxhYmVsKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gc2VsZWN0ZWRJdGVtcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBoZWxwZXJzLmdldChpdGVtLCBgdGh5UmF3VmFsdWUudmFsdWUuJHtpbmRleH1gKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhlbHBlcnMuc2hhbGxvd0VxdWFsKHNlbGVjdGVkSXRlbSwgb3B0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KGN1cnJlbnRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9uLmlzTGVhZiAmJiAhdGhpcy50aHlNdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlU2VsZWN0ZWRJdGVtKGV2ZW50OiB7IGl0ZW06IFNlbGVjdE9wdGlvbkJhc2U7ICRldmVudE9yaWdpbjogRXZlbnQgfSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDtcbiAgICAgICAgZXZlbnQuJGV2ZW50T3JpZ2luLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHNlbGVjdGVkSXRlbXMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiBoZWxwZXJzLnNoYWxsb3dFcXVhbChpdGVtLnRoeVZhbHVlLCBldmVudC5pdGVtLnRoeVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RPcHRpb24oY3VycmVudEl0ZW0pO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KGN1cnJlbnRJdGVtKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzZWxlY3RPcHRpb24ob3B0aW9uOiBTZWxlY3RPcHRpb25CYXNlKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlOiBUaHlDYXNjYWRlck9wdGlvbltdID0gb3B0aW9uLnRoeVJhd1ZhbHVlLnZhbHVlO1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaXNMZWFmICYmIGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZXQoaXRlbSwgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3VsZFBlcmZvcm1TZWxlY3Rpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgbGV2ZWw6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMudGh5Q2hhbmdlT24gPT09ICdmdW5jdGlvbicgPyB0aGlzLnRoeUNoYW5nZU9uKG9wdGlvbiwgbGV2ZWwpID09PSB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlcygpO1xuICAgICAgICBpZiAoIWFycmF5RXF1YWxzKHRoaXMudmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRoeUNsZWFyLmVtaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudGh5U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy50aHlDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbHVlcygpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZC5tYXAoaXRlbSA9PiB0aGlzLmdldFN1Ym1pdFZhbHVlKGl0ZW0udGh5UmF3VmFsdWUudmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNdWx0aXBsZSA/IHNlbGVjdGVkSXRlbXMgOiBzZWxlY3RlZEl0ZW1zWzBdID8/IHNlbGVjdGVkSXRlbXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyU2VsZWN0aW9uKCRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYWJlbFJlbmRlclRleHQgPSAnJztcbiAgICAgICAgdGhpcy5sYWJlbFJlbmRlckNvbnRleHQgPSB7fTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGxTZWxlY3RlZCgpO1xuICAgICAgICB0aGlzLnNldE1lbnVWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzZWxlY3RBbGxTZWxlY3RlZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDtcbiAgICAgICAgc2VsZWN0ZWRPcHRpb25zLmZvckVhY2goaXRlbSA9PiB0aGlzLmRlc2VsZWN0T3B0aW9uKGl0ZW0pKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZENoaWxkcmVuKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIsIHN1Y2Nlc3M/OiAoKSA9PiB2b2lkLCBmYWlsdXJlPzogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50aHlMb2FkRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50aHlMb2FkRGF0YShvcHRpb24sIGluZGV4KS50aGVuKFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmxvYWRpbmcgPSB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiAoY2hpbGQucGFyZW50ID0gaW5kZXggPCAwID8gdW5kZWZpbmVkIDogb3B0aW9uKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldENvbHVtbkRhdGEob3B0aW9uLmNoaWxkcmVuLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmxvYWRpbmcgPSB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb24uaXNMZWFmID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWx1cmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldENvbHVtbkRhdGEob3B0aW9uLmNoaWxkcmVuIHx8IFtdLCBpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDb2x1bW5EYXRhKG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcnJheUVxdWFscyh0aGlzLmNvbHVtbnNbaW5kZXhdLCBvcHRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zW2luZGV4XSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmNvbHVtbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1ucy5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdWJtaXRWYWx1ZShvcmlnaW5PcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdKTogYW55W10ge1xuICAgICAgICBjb25zdCB2YWx1ZXM6IGFueVtdID0gW107XG4gICAgICAgIChvcmlnaW5PcHRpb25zIHx8IFtdKS5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLmdldE9wdGlvblZhbHVlKG9wdGlvbikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdXBkYXRlSG9zdENsYXNzU2VydmljZTogVXBkYXRlSG9zdENsYXNzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3UG9ydFJ1bGVyOiBWaWV3cG9ydFJ1bGVyXG4gICAgKSB7XG4gICAgICAgIHVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UuaW5pdGlhbGl6ZUVsZW1lbnQoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IFRoeUNhc2NhZGVyT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBpdGVtPy52YWx1ZSB8fCBpdGVtPy5faWQgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjZGtPdmVybGF5T3JpZ2luICNvcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCIgI3RyaWdnZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aHlTaG93SW5wdXRcIj5cbiAgICA8ZGl2XG4gICAgICB0aHlTZWxlY3RDb250cm9sXG4gICAgICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgICAgIFt0aHlBbGxvd0NsZWFyXT1cInRydWVcIlxuICAgICAgW3RoeVNlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZFwiXG4gICAgICBbdGh5TWF4VGFnQ291bnRdPVwidGh5TWF4VGFnQ291bnRcIlxuICAgICAgKHRoeU9uUmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQpXCJcbiAgICAgICh0aHlPbkNsZWFyKT1cImNsZWFyU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgW3RoeURpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFt0aHlJc011bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgIFt0aHlQYW5lbE9wZW5lZF09XCJtZW51VmlzaWJsZVwiXG4gICAgICBbdGh5UGxhY2Vob2xkZXJdPVwidGh5UGxhY2Vob2xkZXJcIlxuICAgICAgW2N1c3RvbURpc3BsYXlUZW1wbGF0ZV09XCJjdXN0b21EaXNwbGF5VGVtcGxhdGVcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY3VzdG9tRGlzcGxheVRlbXBsYXRlIGxldC12YWx1ZT5cbiAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwibGFiZWxDbHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTGFiZWxSZW5kZXJUZW1wbGF0ZTsgZWxzZSBsYWJlbFRlbXBsYXRlXCI+e3sgdmFsdWUubGFiZWxUZXh0IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNsYWJlbFRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRoeUxhYmVsUmVuZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInZhbHVlLmxhYmVsUmVuZGVyQ29udGV4dFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwidGh5LWNhc2NhZGVyLWJhY2tkcm9wXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwib3JpZ2luXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwicG9zaXRpb25zXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJ0cmlnZ2VyUmVjdD8ud2lkdGhcIlxuICAoYmFja2Ryb3BDbGljayk9XCJjbG9zZU1lbnUoKVwiXG4gIChkZXRhY2gpPVwiY2xvc2VNZW51KClcIlxuICAoYXR0YWNoKT1cImF0dGFjaGVkKClcIlxuICAocG9zaXRpb25DaGFuZ2UpPVwicG9zaXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJtZW51VmlzaWJsZVwiXG4+XG4gIDxkaXYgI21lbnUgW25nQ2xhc3NdPVwibWVudUNsc1wiIFtuZ1N0eWxlXT1cInRoeU1lbnVTdHlsZVwiIChtb3VzZWxlYXZlKT1cIm1vdXNlbGVhdmVNZW51KCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1ucy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgIDx1bCAjY2FzY2FkZXJPcHRpb25Db250YWluZXJzICpuZ0Zvcj1cImxldCBvcHRpb25zIG9mIGNvbHVtbnM7IGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCJtZW51Q29sdW1uQ2xzXCI+XG4gICAgICAgIDxsaVxuICAgICAgICAgICNjYXNjYWRlck9wdGlvbnNcbiAgICAgICAgICB0aHktY2FzY2FkZXItb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgIFtvcHRpb25dPVwib3B0aW9uXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwidGh5TXVsdGlwbGVcIlxuICAgICAgICAgIFtpc09ubHlTZWxlY3RMZWFmXT1cInRoeUlzT25seVNlbGVjdExlYWZcIlxuICAgICAgICAgIFtsYWJlbFByb3BlcnR5XT1cInRoeUxhYmVsUHJvcGVydHlcIlxuICAgICAgICAgIFthY3RpdmVdPVwiaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uLCBpKVwiXG4gICAgICAgICAgKHRvZ2dsZVNlbGVjdENoYW5nZSk9XCJjbGlja09wdGlvbihvcHRpb24sIGksICRldmVudClcIlxuICAgICAgICAgIChjbGljayk9XCJjbGlja09wdGlvbihvcHRpb24sIGksICRldmVudClcIlxuICAgICAgICAgIChtb3VzZW92ZXIpPVwibW91c2VvdmVyT3B0aW9uKG9wdGlvbiwgaSwgJGV2ZW50KVwiXG4gICAgICAgID48L2xpPlxuICAgICAgPC91bD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5UGxhY2Vob2xkZXI+XG4gICAgICA8dGh5LWVtcHR5IGNsYXNzPVwidGh5LXNlbGVjdC1lbXB0eS1jb250ZW50IFwiIHRoeVNpemU9XCJzbVwiIFt0aHlNZXNzYWdlXT1cImVtcHR5U3RhdGVUZXh0XCI+PC90aHktZW1wdHk+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
841
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxtQkFBbUIsRUFBMEQsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEksT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUdqRCxTQUFTLE9BQU8sQ0FBSSxLQUFjO0lBQzlCLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1FBQ2YsR0FBRyxHQUFHLEVBQUUsQ0FBQztLQUNaO1NBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FB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ZTtzQkFBckUsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRVcsd0JBQXdCO3NCQUF2RixZQUFZO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFWixtQkFBbUI7c0JBQXBFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVVLE9BQU87c0JBQWhFLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVwQyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBRUMsSUFBSTtzQkFBdEIsU0FBUzt1QkFBQyxNQUFNO2dCQXdYVixXQUFXO3NCQURqQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZMUIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OUywgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciwgU2Nyb2xsVG9TZXJ2aWNlLCBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFNlbGVjdENvbnRyb2xTaXplLCBTZWxlY3RPcHRpb25CYXNlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuaW1wb3J0IHsgaGVscGVycywgaXNBcnJheSwgaXNFbXB0eSwgc2V0IH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRoeUNhc2NhZGVyRXhwYW5kVHJpZ2dlciwgVGh5Q2FzY2FkZXJPcHRpb24sIFRoeUNhc2NhZGVyVHJpZ2dlclR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gdG9BcnJheTxUPih2YWx1ZTogVCB8IFRbXSk6IFRbXSB7XG4gICAgbGV0IHJldDogVFtdO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldCA9IFtdO1xuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldCA9IFt2YWx1ZV07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0ID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGFycmF5RXF1YWxzPFQ+KGFycmF5MTogVFtdLCBhcnJheTI6IFRbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghYXJyYXkxIHx8ICFhcnJheTIgfHwgYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGVuID0gYXJyYXkxLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChhcnJheTFbaV0gIT09IGFycmF5MltpXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5jb25zdCBkZWZhdWx0RGlzcGxheVJlbmRlciA9IChsYWJlbDogYW55KSA9PiBsYWJlbC5qb2luKCcgLyAnKTtcblxuLyoqXG4gKiDnuqfogZTpgInmi6noj5zljZVcbiAqIEBuYW1lIHRoeS1jYXNjYWRlclxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jYXNjYWRlcixbdGh5LWNhc2NhZGVyXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVXBkYXRlSG9zdENsYXNzU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlDYXNjYWRlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgLnRoeS1jYXNjYWRlci1tZW51cyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICBgXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlDYXNjYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5a6e6ZmF5YC855qE5bGe5oCn5ZCNXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VmFsdWVQcm9wZXJ0eSA9ICd2YWx1ZSc7XG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTmmL7npLrlgLznmoTlsZ7mgKflkI1cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlMYWJlbFByb3BlcnR5ID0gJ2xhYmVsJztcblxuICAgIC8qKlxuICAgICAqIOaPj+i/sOi+k+WFpeWtl+autemihOacn+WAvOeahOeugOefreeahOaPkOekuuS/oeaBr1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBsYWNlaG9sZGVyID0gJ+ivt+mAieaLqSc7XG5cbiAgICAvKipcbiAgICAgKiDmjqfliLblpKflsI/vvIg056eN77yJ77yMYHNtYCwgYG1kYCwgYGRlZmF1bHRgLCBgbGdgXG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFNlbGVjdENvbnRyb2xTaXplID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiDmlbDmja7poblcbiAgICAgKiBAdHlwZSBUaHlDYXNjYWRlck9wdGlvbltdXG4gICAgICogQGRlZmF1bHQgW11cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlPcHRpb25zKG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGggPyBbb3B0aW9uc10gOiBbXTtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdE9wdGlvbnMoMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vniLbnuqfoj5zljZXpgInpobnml7bvvIzlj6/pgJrov4for6Xlh73mlbDliKTmlq3mmK/lkKblhYHorrjlgLznmoTlj5jljJZcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDaGFuZ2VPbjogKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGxldmVsOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDngrnlh7vpobnml7bvvIzooajljZXmmK/lkKbliqjmgIHlsZXnpLrmlbDmja7poblcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlDaGFuZ2VPblNlbGVjdCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5pi+56S66L6T5YWl5qGGXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeVNob3dJbnB1dCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDnlKjmiLfoh6rlrprkuYnmqKHniYhcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlMYWJlbFJlbmRlcih2YWx1ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgICAgICB0aGlzLmxhYmVsUmVuZGVyVHBsID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlID0gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgICB9XG5cbiAgICBnZXQgdGh5TGFiZWxSZW5kZXIoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhYmVsUmVuZGVyVHBsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOeUqOS6juWKqOaAgeWKoOi9vemAiemhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUxvYWREYXRhOiAobm9kZTogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4PzogbnVtYmVyKSA9PiBQcm9taXNlTGlrZTxhbnk+O1xuXG4gICAgLyoqXG4gICAgICog5o6n5Yi26Kem5Y+R54q25oCBLCDmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAZGVmYXVsdCBbJ2NsaWNrJ11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUcmlnZ2VyQWN0aW9uOiBUaHlDYXNjYWRlclRyaWdnZXJUeXBlIHwgVGh5Q2FzY2FkZXJUcmlnZ2VyVHlwZVtdID0gWydjbGljayddO1xuXG4gICAgLyoqXG4gICAgICog6byg5qCH57uP6L+H5LiL5pa55YiX6KGo6aG55pe277yM5piv5ZCm6Ieq5Yqo5bGV5byA5YiX6KGoLCDmlK/mjIEgYGNsaWNrYCB8IGBob3ZlcmBcbiAgICAgKiBAZGVmYXVsdCBbJ2NsaWNrJ11cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFeHBhbmRUcmlnZ2VyQWN0aW9uOiBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXIgfCBUaHlDYXNjYWRlckV4cGFuZFRyaWdnZXJbXSA9IFsnY2xpY2snXTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguagt+W8j1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeU1lbnVTdHlsZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iea1ruWxguexu+WQjVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeU1lbnVDbGFzc05hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1lbnVDbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TWVudUNsYXNzTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51Q2xhc3NOYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFx06Ieq5a6a5LmJ5rWu5bGC5YiX57G75ZCNXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5Q29sdW1uQ2xhc3NOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5DbGFzc05hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRNZW51Q2xhc3MoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5Q29sdW1uQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbkNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblj6ror7tcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgndGh5RGlzYWJsZWQnKSBASW5wdXRCb29sZWFuKCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOepuueKtuaAgeS4i+eahOWxleekuuaWh+Wtl1xuICAgICAqIEBkZWZhdWx0ICfmmoLml6Dlj6/pgInpobknXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5RW1wdHlTdGF0ZVRleHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVtcHR5U3RhdGVUZXh0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCB0aHlNdWx0aXBsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTXVsdGlwbGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICB9XG5cbiAgICBnZXQgdGh5TXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTXVsdGlwbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5aSa6YCJ5pe25pyA5aSn5pi+56S655qE5qCH562+5pWw6YeP77yMMCDooajnpLrkuI3pmZDliLZcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5TWF4VGFnQ291bnQgPSAwO1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGUg5b2T5aSa6YCJ5pe25piv5ZCm5Y+q6IO96YCJ5oup5Y+25a2Q6aG5LCDmmoLml6Dlrp7njrBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHRoeUlzT25seVNlbGVjdExlYWYgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5YC85Y+R55Sf5Y+Y5YyW5pe26Kem5Y+RLOi/lOWbnumAieaLqemhueeahOWAvFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gICAgLyoqXG4gICAgICog5YC85Y+R55Sf5Y+Y5YyW5pe26Kem5Y+RLOi/lOWbnumAieaLqemhueWIl+ihqFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRoeUNhc2NhZGVyT3B0aW9uW10+KCk7XG5cbiAgICAvKipcbiAgICAgKiDpgInmi6npgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb247XG4gICAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBwcml2YXRlIOaaguaXoOWunueOsFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlEZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuICAgICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICAvKipcbiAgICAgKiDmuIXnqbrpgInpobnml7bop6blj5FcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5Q2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkcmVuKCdjYXNjYWRlck9wdGlvbkNvbnRhaW5lcnMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2FzY2FkZXJPcHRpb25Db250YWluZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBAVmlld0NoaWxkKENka0Nvbm5lY3RlZE92ZXJsYXksIHsgc3RhdGljOiB0cnVlIH0pIGNka0Nvbm5lY3RlZE92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgdHJpZ2dlcjogRWxlbWVudFJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ21lbnUnKSBtZW51OiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIGRyb3BEb3duUG9zaXRpb24gPSAnYm90dG9tJztcbiAgICBwdWJsaWMgbWVudVZpc2libGUgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHVibGljIHNob3dTZWFyY2ggPSBmYWxzZTtcbiAgICBwdWJsaWMgbGFiZWxSZW5kZXJUZXh0OiBzdHJpbmc7XG4gICAgcHVibGljIGxhYmVsUmVuZGVyQ29udGV4dDogYW55ID0ge307XG4gICAgcHVibGljIGlzTGFiZWxSZW5kZXJUZW1wbGF0ZSA9IGZhbHNlO1xuICAgIHB1YmxpYyB0cmlnZ2VyUmVjdDogRE9NUmVjdDtcbiAgICBwdWJsaWMgY29sdW1uczogVGh5Q2FzY2FkZXJPcHRpb25bXVtdID0gW107XG4gICAgcHVibGljIGVtcHR5U3RhdGVUZXh0ID0gJ+aaguaXoOWPr+mAiemhuSc7XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPFNlbGVjdE9wdGlvbkJhc2U+O1xuICAgIHByaXZhdGUgcHJlZml4Q2xzID0gJ3RoeS1jYXNjYWRlcic7XG4gICAgcHJpdmF0ZSBtZW51Q2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBjb2x1bW5DbGFzc05hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIF9tZW51Q29sdW1uQ2xzOiBhbnk7XG4gICAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX21lbnVDbHM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICAgIHByaXZhdGUgX2xhYmVsQ2xzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbiAgICBwcml2YXRlIGxhYmVsUmVuZGVyVHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIG9uQ2hhbmdlOiBhbnkgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gICAgb25Ub3VjaGVkOiBhbnkgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gICAgcHJpdmF0ZSBjYXNjYWRlclBvc2l0aW9uID0gWy4uLkVYUEFOREVEX0RST1BET1dOX1BPU0lUSU9OU107XG4gICAgcG9zaXRpb25zOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW107XG5cbiAgICBwcml2YXRlIHZhbHVlOiBhbnlbXTtcblxuICAgIHByaXZhdGUgc2VsZWN0ZWRPcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdID0gW107XG5cbiAgICBwcml2YXRlIGFjdGl2YXRlZE9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gPSBbXTtcblxuICAgIGdldCBzZWxlY3RlZCgpOiBTZWxlY3RPcHRpb25CYXNlIHwgU2VsZWN0T3B0aW9uQmFzZVtdIHtcbiAgICAgICAgdGhpcy5jZGtDb25uZWN0ZWRPdmVybGF5Py5vdmVybGF5UmVmPy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICByZXR1cm4gdGhpcy50aHlNdWx0aXBsZSA/IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQgOiB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBwcmV2U2VsZWN0ZWRPcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdID0gW107XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRDbGFzc01hcCgpO1xuICAgICAgICB0aGlzLnNldE1lbnVDbGFzcygpO1xuICAgICAgICB0aGlzLnNldE1lbnVDb2x1bW5DbGFzcygpO1xuICAgICAgICB0aGlzLnNldExhYmVsQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5pbml0UG9zaXRpb24oKTtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbk1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsPFNlbGVjdE9wdGlvbkJhc2U+KHRoaXMudGh5TXVsdGlwbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlld1BvcnRSdWxlclxuICAgICAgICAgICAgLmNoYW5nZSgxMDApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJSZWN0ID0gdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNlbGVjdGlvbk1vZGVsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbCh0aGlzLmlzTXVsdGlwbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0UG9zaXRpb24oKSB7XG4gICAgICAgIHRoaXMuY2FzY2FkZXJQb3NpdGlvblswXS5vZmZzZXRZID0gMTA7IC8vIOW3puS4i1xuICAgICAgICB0aGlzLmNhc2NhZGVyUG9zaXRpb25bMV0ub2Zmc2V0WSA9IDEwOyAvLyDlj7PkuItcbiAgICAgICAgdGhpcy5jYXNjYWRlclBvc2l0aW9uWzJdLm9mZnNldFkgPSAtMTA7IC8vIOWPs+S4i1xuICAgICAgICB0aGlzLmNhc2NhZGVyUG9zaXRpb25bM10ub2Zmc2V0WSA9IC0xMDsgLy8g5Y+z5LiLXG4gICAgICAgIHRoaXMucG9zaXRpb25zID0gdGhpcy5jYXNjYWRlclBvc2l0aW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdE9wdGlvbnMoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCB2cyA9IHRoaXMuZGVmYXVsdFZhbHVlO1xuICAgICAgICBjb25zdCBsb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZU9uSW5pdChpbmRleCwgdnNbaW5kZXhdKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA8IHZzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zKGluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHZzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyV3JpdGVWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKGluZGV4KSB8fCAhdGhpcy50aHlMb2FkRGF0YSkge1xuICAgICAgICAgICAgbG9hZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpbmRleCAtIDFdIHx8IHt9O1xuICAgICAgICAgICAgdGhpcy5sb2FkQ2hpbGRyZW4obm9kZSwgaW5kZXggLSAxLCBsb2FkLCB0aGlzLmFmdGVyV3JpdGVWYWx1ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWN0aXZhdGVPbkluaXQoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgb3B0aW9uID0gdGhpcy5maW5kT3B0aW9uKHZhbHVlLCBpbmRleCk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICBvcHRpb24gPVxuICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ake3RoaXMudGh5VmFsdWVQcm9wZXJ0eSB8fCAndmFsdWUnfWBdOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ake3RoaXMudGh5TGFiZWxQcm9wZXJ0eSB8fCAnbGFiZWwnfWBdOiB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVQcmV2U2VsZWN0ZWRPcHRpb25zKG9wdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKG9wdGlvbiwgaW5kZXgsIGZhbHNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVQcmV2U2VsZWN0ZWRPcHRpb25zKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGlzQWN0aXZhdGVJbml0ID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzQWN0aXZhdGVJbml0KSB7XG4gICAgICAgICAgICBzZXQob3B0aW9uLCAnc2VsZWN0ZWQnLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMucHJldlNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpc1NlbGVjdGVkID0gIW9wdGlvbi5zZWxlY3RlZDtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnByZXZTZWxlY3RlZE9wdGlvbnMubGVuZ3RoICYmICF0aGlzLnRoeU11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgc2V0KHRoaXMucHJldlNlbGVjdGVkT3B0aW9ucy5wb3AoKSwgJ3NlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0KG9wdGlvbiwgJ3NlbGVjdGVkJywgaXNTZWxlY3RlZCk7XG4gICAgICAgICAgICB0aGlzLnByZXZTZWxlY3RlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgdnMgPSAodGhpcy5kZWZhdWx0VmFsdWUgPSB0b0FycmF5KHZhbHVlKSk7XG4gICAgICAgICAgICBpZiAodnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0T3B0aW9ucygwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZzO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJXcml0ZVZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB0b0FycmF5KHZhbHVlKTtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZzID0gKHRoaXMuZGVmYXVsdFZhbHVlID0gdG9BcnJheShpdGVtKSk7XG4gICAgICAgICAgICAgICAgaWYgKHZzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zKDApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJXcml0ZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZnRlcldyaXRlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXRTdWJtaXRWYWx1ZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYWRkU2VsZWN0ZWRTdGF0ZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuYnVpbGREaXNwbGF5TGFiZWwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFNlbGVjdGVkU3RhdGUoc2VsZWN0T3B0aW9uczogVGh5Q2FzY2FkZXJPcHRpb25bXSkge1xuICAgICAgICBpZiAodGhpcy5pc011bHRpcGxlICYmIHRoaXMudGh5SXNPbmx5U2VsZWN0TGVhZikge1xuICAgICAgICAgICAgc2VsZWN0T3B0aW9ucy5mb3JFYWNoKG9wdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdC5pc0xlYWYpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2V0KG9wdCwgJ3NlbGVjdGVkJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBwb3NpdGlvbkNoYW5nZShwb3NpdGlvbjogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcG9zaXRpb24uY29ubmVjdGlvblBhaXIub3JpZ2luWSA9PT0gJ2JvdHRvbScgPyAnYm90dG9tJyA6ICd0b3AnO1xuICAgICAgICBpZiAodGhpcy5kcm9wRG93blBvc2l0aW9uICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93blBvc2l0aW9uID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTG9hZGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uc1tpbmRleF0gJiYgdGhpcy5jb2x1bW5zW2luZGV4XS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcHRpb25MYWJlbChvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uKTogYW55IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvblt0aGlzLnRoeUxhYmVsUHJvcGVydHkgfHwgJ2xhYmVsJ107XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9wdGlvblZhbHVlKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24pOiBhbnkge1xuICAgICAgICByZXR1cm4gb3B0aW9uW3RoaXMudGh5VmFsdWVQcm9wZXJ0eSB8fCAndmFsdWUnXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBY3RpdmF0ZWRPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlT3B0ID0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zW2luZGV4XTtcbiAgICAgICAgICAgIHJldHVybiBhY3RpdmVPcHQgPT09IG9wdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvcHRpb24uaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5zZWxlY3RlZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRzID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCBhcHBlYXJJbmRleCA9IHNlbGVjdGVkT3B0cy5maW5kSW5kZXgoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IGhlbHBlcnMuZ2V0KGl0ZW0sIGB0aHlSYXdWYWx1ZS52YWx1ZS4ke2luZGV4fWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGVscGVycy5zaGFsbG93RXF1YWwoc2VsZWN0ZWRJdGVtLCBvcHRpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBhcHBlYXJJbmRleCA+PSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGF0dGFjaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNka0Nvbm5lY3RlZE92ZXJsYXkucG9zaXRpb25DaGFuZ2UucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzRW1wdHkodGhpcy5zZWxlY3RlZE9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlT3B0aW9ucyA9IHRoaXMuY2FzY2FkZXJPcHRpb25zLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RoeS1jYXNjYWRlci1tZW51LWl0ZW0tYWN0aXZlJylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FzY2FkZXJPcHRpb25Db250YWluZXJzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA8PSBhY3RpdmVPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbFRvU2VydmljZS5zY3JvbGxUb0VsZW1lbnQoYWN0aXZlT3B0aW9uc1tpbmRleF0ubmF0aXZlRWxlbWVudCwgaXRlbS5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRPcHRpb24ob3B0aW9uOiBhbnksIGluZGV4OiBudW1iZXIpOiBUaHlDYXNjYWRlck9wdGlvbiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IFRoeUNhc2NhZGVyT3B0aW9uW10gPSB0aGlzLmNvbHVtbnNbaW5kZXhdO1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyA/IHRoaXMuZ2V0T3B0aW9uVmFsdWUob3B0aW9uKSA6IG9wdGlvbjtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiB2YWx1ZSA9PT0gdGhpcy5nZXRPcHRpb25WYWx1ZShvKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBidWlsZERpc3BsYXlMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICAgICAgY29uc3QgbGFiZWxzOiBzdHJpbmdbXSA9IHNlbGVjdGVkT3B0aW9ucy5tYXAobyA9PiB0aGlzLmdldE9wdGlvbkxhYmVsKG8pKTtcbiAgICAgICAgaWYgKGxhYmVscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGFiZWxSZW5kZXJDb250ZXh0O1xuICAgICAgICBsZXQgbGFiZWxSZW5kZXJUZXh0O1xuICAgICAgICBpZiAodGhpcy5pc0xhYmVsUmVuZGVyVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIGxhYmVsUmVuZGVyQ29udGV4dCA9IHsgbGFiZWxzLCBzZWxlY3RlZE9wdGlvbnMgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhYmVsUmVuZGVyVGV4dCA9IGRlZmF1bHREaXNwbGF5UmVuZGVyLmNhbGwodGhpcywgbGFiZWxzLCBzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5sYWJlbFJlbmRlclRleHQgPSBsYWJlbFJlbmRlclRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGFiZWxSZW5kZXJUZXh0IHx8IHRoaXMuaXNMYWJlbFJlbmRlclRlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGE6IFNlbGVjdE9wdGlvbkJhc2UgPSB7XG4gICAgICAgICAgICAgICAgdGh5UmF3VmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0OiBsYWJlbFJlbmRlclRleHQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsUmVuZGVyQ29udGV4dDogbGFiZWxSZW5kZXJDb250ZXh0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0aHlWYWx1ZTogbGFiZWxzLFxuICAgICAgICAgICAgICAgIHRoeUxhYmVsVGV4dDogbGFiZWxSZW5kZXJUZXh0XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qoc2VsZWN0ZWREYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc01lbnVWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51VmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TWVudVZpc2libGUobWVudVZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVZpc2libGUgIT09IG1lbnVWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVWaXNpYmxlID0gbWVudVZpc2libGU7XG5cbiAgICAgICAgICAgIHRoaXMuaW5pdEFjdGl2YXRlZE9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudUNsYXNzKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclJlY3QgPSB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEFjdGl2YXRlZE9wdGlvbnMoKSB7XG4gICAgICAgIGlmIChpc0VtcHR5KHRoaXMuc2VsZWN0ZWRPcHRpb25zKSB8fCAhdGhpcy5tZW51VmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uc107XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KGl0ZW0uY2hpbGRyZW4pICYmICFpdGVtLmlzTGVhZikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1tpbmRleCArIDFdID0gaXRlbS5jaGlsZHJlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51Q2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51Q2xzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWVudUNsYXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51Q2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51c2BdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1tZW51cy1oaWRkZW5gXTogIXRoaXMubWVudVZpc2libGUsXG4gICAgICAgICAgICBbYCR7dGhpcy50aHlNZW51Q2xhc3NOYW1lfWBdOiB0aGlzLnRoeU1lbnVDbGFzc05hbWUsXG4gICAgICAgICAgICBbYHctMTAwYF06IHRoaXMuY29sdW1ucy5sZW5ndGggPT09IDBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1lbnVDb2x1bW5DbHMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbnVDb2x1bW5DbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNZW51Q29sdW1uQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21lbnVDb2x1bW5DbHMgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LW1lbnVgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnRoeUNvbHVtbkNsYXNzTmFtZX1gXTogdGhpcy50aHlDb2x1bW5DbGFzc05hbWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxhYmVsQ2xzKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbENscztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExhYmVsQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhYmVsQ2xzID0ge1xuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItbGFiZWxgXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tc2hvdy1zZWFyY2hgXTogZmFsc2UsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWZvY3VzZWRgXTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENsYXNzTWFwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFzc01hcCA9IHtcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc31gXTogdHJ1ZSxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyYF06IHRydWUsXG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LSR7dGhpcy50aHlTaXplfWBdOiB0cnVlLFxuICAgICAgICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1waWNrZXItZGlzYWJsZWRgXTogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tcGlja2VyLW9wZW5gXTogdGhpcy5tZW51VmlzaWJsZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UudXBkYXRlQ2xhc3NCeU1hcChjbGFzc01hcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NsaWNrVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnY2xpY2snO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignY2xpY2snKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeVRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0hvdmVyRXhwYW5kVHJpZ2dlckFjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50aHlFeHBhbmRUcmlnZ2VyQWN0aW9uID09PSAnaG92ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRoeUV4cGFuZFRyaWdnZXJBY3Rpb24uaW5kZXhPZignaG92ZXInKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVDbGljaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNDbGlja1RyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSghdGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyB0b2dnbGVIb3ZlcigkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZSghdGhpcy5tZW51VmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xpY2tPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIGlmIChldmVudCBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICAgIC8vICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGlmIChvcHRpb24uaXNMZWFmICYmIGV2ZW50IGluc3RhbmNlb2YgRXZlbnQgJiYgdGhpcy5pc011bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZU9wdGlvbihvcHRpb24sIGluZGV4LCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VvdmVyT3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbiAmJiBvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNIb3ZlckV4cGFuZFRyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlT3B0aW9uKG9wdGlvbiwgaW5kZXgsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbW91c2VsZWF2ZU1lbnUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuaXNIb3ZlclRyaWdnZXJBY3Rpb24oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoIXRoaXMubWVudVZpc2libGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZU1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBY3RpdmVPcHRpb24ob3B0aW9uOiBUaHlDYXNjYWRlck9wdGlvbiwgaW5kZXg6IG51bWJlciwgc2VsZWN0OiBib29sZWFuLCBsb2FkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghb3B0aW9uIHx8IG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpbmRleF0gPSBvcHRpb247XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5PcHRpb24gPSB0aGlzLmFjdGl2YXRlZE9wdGlvbnNbaSArIDFdPy5wYXJlbnQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpXSB8fCBvcmlnaW5PcHRpb24/Ll9pZCAhPT0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zW2ldLl9pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9uc1tpXSA9IG9yaWdpbk9wdGlvbiA/PyB0aGlzLmFjdGl2YXRlZE9wdGlvbnNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5hY3RpdmF0ZWRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucyA9IHRoaXMuYWN0aXZhdGVkT3B0aW9ucy5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FycmF5KG9wdGlvbi5jaGlsZHJlbikgJiYgb3B0aW9uLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgb3B0aW9uLmlzTGVhZiA9IGZhbHNlO1xuICAgICAgICAgICAgb3B0aW9uLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gKGNoaWxkLnBhcmVudCA9IG9wdGlvbikpO1xuICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5EYXRhKG9wdGlvbi5jaGlsZHJlbiwgaW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIGlmICghb3B0aW9uLmlzTGVhZiAmJiBsb2FkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZENoaWxkcmVuKG9wdGlvbiwgaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5jb2x1bW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbihvcHRpb24sIGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0T3B0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50aHlTZWxlY3QuZW1pdCh7IG9wdGlvbiwgaW5kZXggfSk7XG4gICAgICAgIGNvbnN0IGlzT3B0aW9uQ2FuU2VsZWN0ID0gdGhpcy50aHlDaGFuZ2VPblNlbGVjdCAmJiAhdGhpcy5pc011bHRpcGxlO1xuICAgICAgICBpZiAob3B0aW9uLmlzTGVhZiB8fCBpc09wdGlvbkNhblNlbGVjdCB8fCB0aGlzLnNob3VsZFBlcmZvcm1TZWxlY3Rpb24ob3B0aW9uLCBpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5hY3RpdmF0ZWRPcHRpb25zO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2U2VsZWN0ZWRPcHRpb25zKG9wdGlvbik7XG4gICAgICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZERpc3BsYXlMYWJlbCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHNlbGVjdGVkSXRlbXMuZmluZChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gaGVscGVycy5nZXQoaXRlbSwgYHRoeVJhd1ZhbHVlLnZhbHVlLiR7aW5kZXh9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoZWxwZXJzLnNoYWxsb3dFcXVhbChzZWxlY3RlZEl0ZW0sIG9wdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdChjdXJyZW50SXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbi5pc0xlYWYgJiYgIXRoaXMudGh5TXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TWVudVZpc2libGUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVNlbGVjdGVkSXRlbShldmVudDogeyBpdGVtOiBTZWxlY3RPcHRpb25CYXNlOyAkZXZlbnRPcmlnaW46IEV2ZW50IH0pIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ7XG4gICAgICAgIGV2ZW50LiRldmVudE9yaWdpbi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBzZWxlY3RlZEl0ZW1zLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaGVscGVycy5zaGFsbG93RXF1YWwoaXRlbS50aHlWYWx1ZSwgZXZlbnQuaXRlbS50aHlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRlc2VsZWN0T3B0aW9uKGN1cnJlbnRJdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdChjdXJyZW50SXRlbSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0T3B0aW9uKG9wdGlvbjogU2VsZWN0T3B0aW9uQmFzZSkge1xuICAgICAgICBjb25zdCB2YWx1ZTogVGh5Q2FzY2FkZXJPcHRpb25bXSA9IG9wdGlvbi50aHlSYXdWYWx1ZS52YWx1ZTtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlzTGVhZiAmJiBpdGVtLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0KGl0ZW0sICdzZWxlY3RlZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRQZXJmb3JtU2VsZWN0aW9uKG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb24sIGxldmVsOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLnRoeUNoYW5nZU9uID09PSAnZnVuY3Rpb24nID8gdGhpcy50aHlDaGFuZ2VPbihvcHRpb24sIGxldmVsKSA9PT0gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsdWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZXMoKTtcbiAgICAgICAgaWYgKCFhcnJheUVxdWFscyh0aGlzLnZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aHlDbGVhci5lbWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMudGh5Q2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZXMoKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkO1xuICAgICAgICBzZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWQubWFwKGl0ZW0gPT4gdGhpcy5nZXRTdWJtaXRWYWx1ZShpdGVtLnRoeVJhd1ZhbHVlLnZhbHVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTXVsdGlwbGUgPyBzZWxlY3RlZEl0ZW1zIDogc2VsZWN0ZWRJdGVtc1swXSA/PyBzZWxlY3RlZEl0ZW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGFiZWxSZW5kZXJUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMubGFiZWxSZW5kZXJDb250ZXh0ID0ge307XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIHRoaXMuYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsU2VsZWN0ZWQoKTtcbiAgICAgICAgdGhpcy5zZXRNZW51VmlzaWJsZShmYWxzZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc2VsZWN0QWxsU2VsZWN0ZWQoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ7XG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5kZXNlbGVjdE9wdGlvbihpdGVtKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRDaGlsZHJlbihvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uLCBpbmRleDogbnVtYmVyLCBzdWNjZXNzPzogKCkgPT4gdm9pZCwgZmFpbHVyZT86ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGh5TG9hZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudGh5TG9hZERhdGEob3B0aW9uLCBpbmRleCkudGhlbihcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbi5sb2FkaW5nID0gdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbi5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gKGNoaWxkLnBhcmVudCA9IGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IG9wdGlvbikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5EYXRhKG9wdGlvbi5jaGlsZHJlbiwgaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbi5sb2FkaW5nID0gdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmlzTGVhZiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWlsdXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRDb2x1bW5EYXRhKG9wdGlvbi5jaGlsZHJlbiB8fCBbXSwgaW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29sdW1uRGF0YShvcHRpb25zOiBUaHlDYXNjYWRlck9wdGlvbltdLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghYXJyYXlFcXVhbHModGhpcy5jb2x1bW5zW2luZGV4XSwgb3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1tpbmRleF0gPSBvcHRpb25zO1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5jb2x1bW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3VibWl0VmFsdWUob3JpZ2luT3B0aW9uczogVGh5Q2FzY2FkZXJPcHRpb25bXSk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgdmFsdWVzOiBhbnlbXSA9IFtdO1xuICAgICAgICAob3JpZ2luT3B0aW9ucyB8fCBbXSkuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2godGhpcy5nZXRPcHRpb25WYWx1ZShvcHRpb24pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHVwZGF0ZUhvc3RDbGFzc1NlcnZpY2U6IFVwZGF0ZUhvc3RDbGFzc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld1BvcnRSdWxlcjogVmlld3BvcnRSdWxlclxuICAgICkge1xuICAgICAgICB1cGRhdGVIb3N0Q2xhc3NTZXJ2aWNlLmluaXRpYWxpemVFbGVtZW50KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBUaHlDYXNjYWRlck9wdGlvbikge1xuICAgICAgICByZXR1cm4gaXRlbT8udmFsdWUgfHwgaXRlbT8uX2lkIHx8IGluZGV4O1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2RrT3ZlcmxheU9yaWdpbiAjb3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiICN0cmlnZ2VyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5U2hvd0lucHV0XCI+XG4gICAgPGRpdlxuICAgICAgdGh5U2VsZWN0Q29udHJvbFxuICAgICAgW3RoeVNpemVdPVwidGh5U2l6ZVwiXG4gICAgICBbdGh5QWxsb3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgIFt0aHlTZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRcIlxuICAgICAgW3RoeU1heFRhZ0NvdW50XT1cInRoeU1heFRhZ0NvdW50XCJcbiAgICAgICh0aHlPblJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50KVwiXG4gICAgICAodGh5T25DbGVhcik9XCJjbGVhclNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgIFt0aHlEaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbdGh5SXNNdWx0aXBsZV09XCJ0aHlNdWx0aXBsZVwiXG4gICAgICBbdGh5UGFuZWxPcGVuZWRdPVwibWVudVZpc2libGVcIlxuICAgICAgW3RoeVBsYWNlaG9sZGVyXT1cInRoeVBsYWNlaG9sZGVyXCJcbiAgICAgIFtjdXN0b21EaXNwbGF5VGVtcGxhdGVdPVwiY3VzdG9tRGlzcGxheVRlbXBsYXRlXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbURpc3BsYXlUZW1wbGF0ZSBsZXQtdmFsdWU+XG4gICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImxhYmVsQ2xzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xhYmVsUmVuZGVyVGVtcGxhdGU7IGVsc2UgbGFiZWxUZW1wbGF0ZVwiPnt7IHZhbHVlLmxhYmVsVGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlMYWJlbFJlbmRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ2YWx1ZS5sYWJlbFJlbmRlckNvbnRleHRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cInRoeS1jYXNjYWRlci1iYWNrZHJvcFwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cIm9yaWdpblwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cInBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwidHJpZ2dlclJlY3Q/LndpZHRoXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VNZW51KClcIlxuICAoZGV0YWNoKT1cImNsb3NlTWVudSgpXCJcbiAgKGF0dGFjaCk9XCJhdHRhY2hlZCgpXCJcbiAgKHBvc2l0aW9uQ2hhbmdlKT1cInBvc2l0aW9uQ2hhbmdlKCRldmVudClcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwibWVudVZpc2libGVcIlxuPlxuICA8ZGl2ICNtZW51IFtuZ0NsYXNzXT1cIm1lbnVDbHNcIiBbbmdTdHlsZV09XCJ0aHlNZW51U3R5bGVcIiAobW91c2VsZWF2ZSk9XCJtb3VzZWxlYXZlTWVudSgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbnMubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVBsYWNlaG9sZGVyXCI+XG4gICAgICA8dWwgI2Nhc2NhZGVyT3B0aW9uQ29udGFpbmVycyAqbmdGb3I9XCJsZXQgb3B0aW9ucyBvZiBjb2x1bW5zOyBsZXQgaSA9IGluZGV4XCIgW25nQ2xhc3NdPVwibWVudUNvbHVtbkNsc1wiPlxuICAgICAgICA8bGlcbiAgICAgICAgICAjY2FzY2FkZXJPcHRpb25zXG4gICAgICAgICAgdGh5LWNhc2NhZGVyLW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICBbb3B0aW9uXT1cIm9wdGlvblwiXG4gICAgICAgICAgW211bHRpcGxlXT1cInRoeU11bHRpcGxlXCJcbiAgICAgICAgICBbaXNPbmx5U2VsZWN0TGVhZl09XCJ0aHlJc09ubHlTZWxlY3RMZWFmXCJcbiAgICAgICAgICBbbGFiZWxQcm9wZXJ0eV09XCJ0aHlMYWJlbFByb3BlcnR5XCJcbiAgICAgICAgICBbYWN0aXZlXT1cImlzQWN0aXZhdGVkT3B0aW9uKG9wdGlvbiwgaSlcIlxuICAgICAgICAgICh0b2dnbGVTZWxlY3RDaGFuZ2UpPVwiY2xpY2tPcHRpb24ob3B0aW9uLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2tPcHRpb24ob3B0aW9uLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAobW91c2VvdmVyKT1cIm1vdXNlb3Zlck9wdGlvbihvcHRpb24sIGksICRldmVudClcIlxuICAgICAgICA+PC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eVBsYWNlaG9sZGVyPlxuICAgICAgPHRoeS1lbXB0eSBjbGFzcz1cInRoeS1zZWxlY3QtZW1wdHktY29udGVudCBcIiB0aHlTaXplPVwic21cIiBbdGh5TWVzc2FnZV09XCJlbXB0eVN0YXRlVGV4dFwiPjwvdGh5LWVtcHR5PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -76,14 +76,16 @@ export class ThyColorPickerPanelComponent {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
ThyColorPickerPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyColorPickerPanelComponent, deps: [{ token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
-
ThyColorPickerPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyColorPickerPanelComponent, selector: "thy-color-picker-panel", inputs: { color: "color", colorChange: "colorChange", defaultColor: "defaultColor", transparentColorSelectable: "transparentColorSelectable", defaultColors: "defaultColors" }, host: { properties: { "class.thy-color-picker-panel": "this.className" } }, ngImport: i0, template: "<ng-container *ngIf=\"customDefaultColor\">\n <div class=\"quick-color\" [ngClass]=\"transparentColorSelectable ? ' mb-0 pb-0' : ''\" (click)=\"selectColor(defaultColor)\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: defaultColor }\"></ng-template>\n <span class=\"ml-2 font-size-sm text-secondary\">\u9ED8\u8BA4\u989C\u8272</span>\n </div>\n</ng-container>\n<div\n *ngIf=\"transparentColorSelectable\"\n class=\"quick-color\"\n [ngClass]=\"customDefaultColor ? 'mt-0 pt-0' : ''\"\n (click)=\"selectColor('transparent')\"\n>\n <div class=\"color-block\"></div>\n <span class=\"ml-2 font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <ng-container *ngFor=\"let item of defaultColors\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <ng-container *ngFor=\"let item of recentColors\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n\n<ng-template #checkIconTpl let-colorItem>\n <div\n class=\"color-item\"\n [ngStyle]=\"{ background: colorItem }\"\n [ngClass]=\"colorItem === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(colorItem)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === colorItem ? (getIconColor(colorItem) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
79
|
+
ThyColorPickerPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyColorPickerPanelComponent, selector: "thy-color-picker-panel", inputs: { color: "color", colorChange: "colorChange", defaultColor: "defaultColor", transparentColorSelectable: "transparentColorSelectable", defaultColors: "defaultColors" }, host: { properties: { "class.pt-4": "!transparentColorSelectable", "class.thy-color-picker-panel": "this.className" } }, ngImport: i0, template: "<ng-container *ngIf=\"customDefaultColor\">\n <div class=\"quick-color\" [ngClass]=\"transparentColorSelectable ? ' mb-0 pb-0' : ''\" (click)=\"selectColor(defaultColor)\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: defaultColor }\"></ng-template>\n <span class=\"ml-2 font-size-sm text-secondary\">\u9ED8\u8BA4\u989C\u8272</span>\n </div>\n</ng-container>\n<div\n *ngIf=\"transparentColorSelectable\"\n class=\"quick-color\"\n [ngClass]=\"customDefaultColor ? 'mt-0 pt-0' : ''\"\n (click)=\"selectColor('transparent')\"\n>\n <div class=\"color-block\"></div>\n <span class=\"ml-2 font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <ng-container *ngFor=\"let item of defaultColors\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <ng-container *ngFor=\"let item of recentColors\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n\n<ng-template #checkIconTpl let-colorItem>\n <div\n class=\"color-item\"\n [ngStyle]=\"{ background: colorItem }\"\n [ngClass]=\"colorItem === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(colorItem)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === colorItem ? (getIconColor(colorItem) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
80
80
|
__decorate([
|
|
81
81
|
InputBoolean(),
|
|
82
82
|
__metadata("design:type", Boolean)
|
|
83
83
|
], ThyColorPickerPanelComponent.prototype, "transparentColorSelectable", void 0);
|
|
84
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyColorPickerPanelComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
86
|
-
args: [{ selector: 'thy-color-picker-panel', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
86
|
+
args: [{ selector: 'thy-color-picker-panel', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
87
|
+
'[class.pt-4]': '!transparentColorSelectable'
|
|
88
|
+
}, template: "<ng-container *ngIf=\"customDefaultColor\">\n <div class=\"quick-color\" [ngClass]=\"transparentColorSelectable ? ' mb-0 pb-0' : ''\" (click)=\"selectColor(defaultColor)\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: defaultColor }\"></ng-template>\n <span class=\"ml-2 font-size-sm text-secondary\">\u9ED8\u8BA4\u989C\u8272</span>\n </div>\n</ng-container>\n<div\n *ngIf=\"transparentColorSelectable\"\n class=\"quick-color\"\n [ngClass]=\"customDefaultColor ? 'mt-0 pt-0' : ''\"\n (click)=\"selectColor('transparent')\"\n>\n <div class=\"color-block\"></div>\n <span class=\"ml-2 font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <ng-container *ngFor=\"let item of defaultColors\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <ng-container *ngFor=\"let item of recentColors\">\n <ng-template [ngTemplateOutlet]=\"checkIconTpl\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </ng-container>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n\n<ng-template #checkIconTpl let-colorItem>\n <div\n class=\"color-item\"\n [ngStyle]=\"{ background: colorItem }\"\n [ngClass]=\"colorItem === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(colorItem)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === colorItem ? (getIconColor(colorItem) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n</ng-template>\n" }]
|
|
87
89
|
}], ctorParameters: function () { return [{ type: i1.ThyPopover }, { type: i0.ViewContainerRef }, { type: i1.ThyPopoverRef }]; }, propDecorators: { className: [{
|
|
88
90
|
type: HostBinding,
|
|
89
91
|
args: ['class.thy-color-picker-panel']
|
|
@@ -98,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
98
100
|
}], defaultColors: [{
|
|
99
101
|
type: Input
|
|
100
102
|
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBRTdDOztHQUVHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQTJCckMsWUFDWSxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsYUFBMEQ7UUFGMUQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUE2QztRQTdCekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQW9COUQsaUJBQVksR0FBYSxFQUFFLENBQUM7SUFVekIsQ0FBQztJQXhCSixJQUFhLFlBQVksQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENB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LFlBQVksRUFBRTs7Z0ZBQXFDOzJGQWZwRCw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNOzRKQUdGLFNBQVM7c0JBQXJELFdBQVc7dUJBQUMsOEJBQThCO2dCQUVsQyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFTyxZQUFZO3NCQUF4QixLQUFLO2dCQVFtQiwwQkFBMEI7c0JBQWxELEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlDb2xvclBpY2tlckN1c3RvbVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvci1waWNrZXItY3VzdG9tLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgVGh5Q29sb3IgZnJvbSAnLi9oZWxwZXJzL2NvbG9yLmNsYXNzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktY29sb3ItcGlja2VyLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jb2xvci1waWNrZXItcGFuZWwnKSBjbGFzc05hbWUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNvbG9yQ2hhbmdlOiAoY29sb3I6IHN0cmluZykgPT4ge307XG5cbiAgICBASW5wdXQoKSBzZXQgZGVmYXVsdENvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jdXN0b21EZWZhdWx0Q29sb3IgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdENvbG9yKCkge1xuICAgICAgICByZXR1cm4gbmV3IFRoeUNvbG9yKHRoaXMuY3VzdG9tRGVmYXVsdENvbG9yKS50b0hleFN0cmluZyh0cnVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkZWZhdWx0Q29sb3JzOiBzdHJpbmdbXTtcblxuICAgIHB1YmxpYyBjdXN0b21EZWZhdWx0Q29sb3I6IHN0cmluZztcblxuICAgIHJlY2VudENvbG9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIG5ld0NvbG9yOiBzdHJpbmc7XG5cbiAgICBjdXN0b21QYW5lbFBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGh5Q29sb3JQaWNrZXJDdXN0b21QYW5lbENvbXBvbmVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVjZW50Q29sb3JzJyk7XG4gICAgICAgIGlmIChjb2xvcnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzID0gSlNPTi5wYXJzZShjb2xvcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gICAgICAgIHRoaXMuY29sb3JDaGFuZ2UodGhpcy5jb2xvcik7XG4gICAgICAgIHRoaXMudGh5UG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHNob3dNb3JlQ29sb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jdXN0b21QYW5lbFBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tUGFuZWxQb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oVGh5Q29sb3JQaWNrZXJDdXN0b21QYW5lbENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IC00LFxuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ3JpZ2h0Qm90dG9tJyxcbiAgICAgICAgICAgICAgICBtYW51YWxDbG9zdXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjYwcHgnLFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICd0aHktY29sb3ItcGlja2VyLWFjdGl2ZScsXG4gICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICBwaWNrZXJDb2xvckNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Q29sb3IgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXN0b21QYW5lbFBvcG92ZXJSZWY/LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY2VudENvbG9ycy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLm5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnVuc2hpZnQodGhpcy5uZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRDb2xvcnMgPSB0aGlzLnJlY2VudENvbG9ycy5zbGljZSgwLCAxMCk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlY2VudENvbG9ycycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50Q29sb3JzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbkNvbG9yKGl0ZW06IHN0cmluZykge1xuICAgICAgICBjb25zdCByZ2JhID0gbmV3IFRoeUNvbG9yKGl0ZW0pLnJnYmE7XG4gICAgICAgIGNvbnN0IGhzcCA9IDAuMjk5ICogcmdiYS5yZWQgKyAwLjU4NyAqIHJnYmEuZ3JlZW4gKyAwLjExNCAqIHJnYmEuYmx1ZTtcbiAgICAgICAgcmV0dXJuIGhzcCA+IDE5MiA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21EZWZhdWx0Q29sb3JcIj5cbiAgPGRpdiBjbGFzcz1cInF1aWNrLWNvbG9yXCIgW25nQ2xhc3NdPVwidHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGUgPyAnIG1iLTAgcGItMCcgOiAnJ1wiIChjbGljayk9XCJzZWxlY3RDb2xvcihkZWZhdWx0Q29sb3IpXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoZWNrSWNvblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZGVmYXVsdENvbG9yIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwibWwtMiBmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnlcIj7pu5jorqTpopzoibI8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48ZGl2XG4gICpuZ0lmPVwidHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGVcIlxuICBjbGFzcz1cInF1aWNrLWNvbG9yXCJcbiAgW25nQ2xhc3NdPVwiY3VzdG9tRGVmYXVsdENvbG9yID8gJ210LTAgcHQtMCcgOiAnJ1wiXG4gIChjbGljayk9XCJzZWxlY3RDb2xvcigndHJhbnNwYXJlbnQnKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb2xvci1ibG9ja1wiPjwvZGl2PlxuICA8c3BhbiBjbGFzcz1cIm1sLTIgZm9udC1zaXplLXNtIHRleHQtc2Vjb25kYXJ5XCI+5peg5aGr5YWF6ImyPC9zcGFuPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWNvbG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0Q29sb3JzXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tJY29uVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnkgcmVjZW50LXRleHRcIj7mnIDov5Hkvb/nlKjoh6rlrprkuYnpopzoibI8L3A+XG4gIDxkaXYgY2xhc3M9XCJyZWNlbnQtY29sb3ItY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZWNlbnRDb2xvcnNcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja0ljb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZvbnQtc2l6ZS1zbSBweC0xIHRleHQtbXV0ZWRcIiAqbmdJZj1cInJlY2VudENvbG9ycy5sZW5ndGggPT09IDBcIj5cbiAgICAgIOaaguaXoFxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vcmUtY29sb3JcIiAoY2xpY2spPVwic2hvd01vcmVDb2xvcigkZXZlbnQpXCI+XG4gIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInBhbGV0dGVcIiBjbGFzcz1cIm1yLTJcIj48L3RoeS1pY29uPlxuICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS1zbSBjdXN0b20tdGV4dFwiPuiHquWumuS5ieminOiJsjwvc3Bhbj5cbiAgPHRoeS1pY29uIHRoeURyb3Bkb3duTWVudUl0ZW1FeHRlbmRJY29uIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHRcIj48L3RoeS1pY29uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2hlY2tJY29uVHBsIGxldC1jb2xvckl0ZW0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbG9yLWl0ZW1cIlxuICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogY29sb3JJdGVtIH1cIlxuICAgIFtuZ0NsYXNzXT1cImNvbG9ySXRlbSA9PT0gJyNGRkZGRkYnID8gJ2l0ZW0tYm9yZGVyJyA6ICcnXCJcbiAgICAoY2xpY2spPVwic2VsZWN0Q29sb3IoY29sb3JJdGVtKVwiXG4gID5cbiAgICA8dGh5LWljb25cbiAgICAgIHRoeUljb25OYW1lPVwiY2hlY2stdGhpY2tcIlxuICAgICAgY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbG9yID09PSBjb2xvckl0ZW0gPyAoZ2V0SWNvbkNvbG9yKGNvbG9ySXRlbSkgPT09ICd3aGl0ZScgPyAnY2hlY2tlZCB3aGl0ZS1jaGVjaycgOiAnY2hlY2tlZCBibGFjay1jaGVjaycpIDogJydcIlxuICAgID48L3RoeS1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxRQUFRLE1BQU0sdUJBQXVCLENBQUM7Ozs7O0FBRTdDOztHQUVHO0FBU0gsTUFBTSxPQUFPLDRCQUE0QjtJQTJCckMsWUFDWSxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsYUFBMEQ7UUFGMUQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUE2QztRQTdCekIsY0FBUyxHQUFHLElBQUksQ0FBQztRQW9COUQsaUJBQVksR0FBYSxFQUFFLENBQUM7SUFVekIsQ0FBQztJQXhCSixJQUFhLFlBQVksQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFvQkQsUUFBUTtRQUNKLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVk7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUU7Z0JBQ2xGLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBNEI7Z0JBQzFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ1YsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixLQUFLLEVBQUUsT0FBTztnQkFDZCxXQUFXLEVBQUUsS0FBSztnQkFDbEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtnQkFDdkMsaUJBQWlCLEVBQUUseUJBQXlCO2dCQUM1QyxZQUFZLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixpQkFBaUIsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFO3dCQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzt3QkFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUIsQ0FBQztpQkFDSjthQUNKLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNmLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN6QyxDQUFDOzt5SEFwRlEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdVdDakJ6Qyw0dEVBbURBOztJRG5CYyxZQUFZLEVBQUU7O2dGQUFxQzsyRkFmcEQsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNJLHdCQUF3QixtQkFFakIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDRixjQUFjLEVBQUUsNkJBQTZCO3FCQUNoRDs0SkFHNEMsU0FBUztzQkFBckQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBRWxDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBUW1CLDBCQUEwQjtzQkFBbEQsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCB7IFRoeUNvbG9yUGlja2VyQ3VzdG9tUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbG9yLXBpY2tlci1jdXN0b20tcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCBUaHlDb2xvciBmcm9tICcuL2hlbHBlcnMvY29sb3IuY2xhc3MnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jb2xvci1waWNrZXItcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5wdC00XSc6ICchdHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGUnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jb2xvci1waWNrZXItcGFuZWwnKSBjbGFzc05hbWUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNvbG9yQ2hhbmdlOiAoY29sb3I6IHN0cmluZykgPT4ge307XG5cbiAgICBASW5wdXQoKSBzZXQgZGVmYXVsdENvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jdXN0b21EZWZhdWx0Q29sb3IgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdENvbG9yKCkge1xuICAgICAgICByZXR1cm4gbmV3IFRoeUNvbG9yKHRoaXMuY3VzdG9tRGVmYXVsdENvbG9yKS50b0hleFN0cmluZyh0cnVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGU6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBkZWZhdWx0Q29sb3JzOiBzdHJpbmdbXTtcblxuICAgIHB1YmxpYyBjdXN0b21EZWZhdWx0Q29sb3I6IHN0cmluZztcblxuICAgIHJlY2VudENvbG9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIG5ld0NvbG9yOiBzdHJpbmc7XG5cbiAgICBjdXN0b21QYW5lbFBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGh5Q29sb3JQaWNrZXJDdXN0b21QYW5lbENvbXBvbmVudD47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVjZW50Q29sb3JzJyk7XG4gICAgICAgIGlmIChjb2xvcnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzID0gSlNPTi5wYXJzZShjb2xvcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gICAgICAgIHRoaXMuY29sb3JDaGFuZ2UodGhpcy5jb2xvcik7XG4gICAgICAgIHRoaXMudGh5UG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHNob3dNb3JlQ29sb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jdXN0b21QYW5lbFBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tUGFuZWxQb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oVGh5Q29sb3JQaWNrZXJDdXN0b21QYW5lbENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IC00LFxuICAgICAgICAgICAgICAgIHBsYWNlbWVudDogJ3JpZ2h0Qm90dG9tJyxcbiAgICAgICAgICAgICAgICBtYW51YWxDbG9zdXJlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMjYwcHgnLFxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICd0aHktY29sb3ItcGlja2VyLWFjdGl2ZScsXG4gICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICBwaWNrZXJDb2xvckNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Q29sb3IgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sb3JDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXN0b21QYW5lbFBvcG92ZXJSZWY/LmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY2VudENvbG9ycy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLm5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnVuc2hpZnQodGhpcy5uZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRDb2xvcnMgPSB0aGlzLnJlY2VudENvbG9ycy5zbGljZSgwLCAxMCk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlY2VudENvbG9ycycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50Q29sb3JzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbkNvbG9yKGl0ZW06IHN0cmluZykge1xuICAgICAgICBjb25zdCByZ2JhID0gbmV3IFRoeUNvbG9yKGl0ZW0pLnJnYmE7XG4gICAgICAgIGNvbnN0IGhzcCA9IDAuMjk5ICogcmdiYS5yZWQgKyAwLjU4NyAqIHJnYmEuZ3JlZW4gKyAwLjExNCAqIHJnYmEuYmx1ZTtcbiAgICAgICAgcmV0dXJuIGhzcCA+IDE5MiA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21EZWZhdWx0Q29sb3JcIj5cbiAgPGRpdiBjbGFzcz1cInF1aWNrLWNvbG9yXCIgW25nQ2xhc3NdPVwidHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGUgPyAnIG1iLTAgcGItMCcgOiAnJ1wiIChjbGljayk9XCJzZWxlY3RDb2xvcihkZWZhdWx0Q29sb3IpXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoZWNrSWNvblRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogZGVmYXVsdENvbG9yIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwibWwtMiBmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnlcIj7pu5jorqTpopzoibI8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48ZGl2XG4gICpuZ0lmPVwidHJhbnNwYXJlbnRDb2xvclNlbGVjdGFibGVcIlxuICBjbGFzcz1cInF1aWNrLWNvbG9yXCJcbiAgW25nQ2xhc3NdPVwiY3VzdG9tRGVmYXVsdENvbG9yID8gJ210LTAgcHQtMCcgOiAnJ1wiXG4gIChjbGljayk9XCJzZWxlY3RDb2xvcigndHJhbnNwYXJlbnQnKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb2xvci1ibG9ja1wiPjwvZGl2PlxuICA8c3BhbiBjbGFzcz1cIm1sLTIgZm9udC1zaXplLXNtIHRleHQtc2Vjb25kYXJ5XCI+5peg5aGr5YWF6ImyPC9zcGFuPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWNvbG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0Q29sb3JzXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tJY29uVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnkgcmVjZW50LXRleHRcIj7mnIDov5Hkvb/nlKjoh6rlrprkuYnpopzoibI8L3A+XG4gIDxkaXYgY2xhc3M9XCJyZWNlbnQtY29sb3ItY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiByZWNlbnRDb2xvcnNcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja0ljb25UcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZvbnQtc2l6ZS1zbSBweC0xIHRleHQtbXV0ZWRcIiAqbmdJZj1cInJlY2VudENvbG9ycy5sZW5ndGggPT09IDBcIj5cbiAgICAgIOaaguaXoFxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1vcmUtY29sb3JcIiAoY2xpY2spPVwic2hvd01vcmVDb2xvcigkZXZlbnQpXCI+XG4gIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInBhbGV0dGVcIiBjbGFzcz1cIm1yLTJcIj48L3RoeS1pY29uPlxuICA8c3BhbiBjbGFzcz1cImZvbnQtc2l6ZS1zbSBjdXN0b20tdGV4dFwiPuiHquWumuS5ieminOiJsjwvc3Bhbj5cbiAgPHRoeS1pY29uIHRoeURyb3Bkb3duTWVudUl0ZW1FeHRlbmRJY29uIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHRcIj48L3RoeS1pY29uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2hlY2tJY29uVHBsIGxldC1jb2xvckl0ZW0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbG9yLWl0ZW1cIlxuICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogY29sb3JJdGVtIH1cIlxuICAgIFtuZ0NsYXNzXT1cImNvbG9ySXRlbSA9PT0gJyNGRkZGRkYnID8gJ2l0ZW0tYm9yZGVyJyA6ICcnXCJcbiAgICAoY2xpY2spPVwic2VsZWN0Q29sb3IoY29sb3JJdGVtKVwiXG4gID5cbiAgICA8dGh5LWljb25cbiAgICAgIHRoeUljb25OYW1lPVwiY2hlY2stdGhpY2tcIlxuICAgICAgY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbG9yID09PSBjb2xvckl0ZW0gPyAoZ2V0SWNvbkNvbG9yKGNvbG9ySXRlbSkgPT09ICd3aGl0ZScgPyAnY2hlY2tlZCB3aGl0ZS1jaGVjaycgOiAnY2hlY2tlZCBibGFjay1jaGVjaycpIDogJydcIlxuICAgID48L3RoeS1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -3,6 +3,8 @@ import { ThyImagePreviewConfig, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS } from './imag
|
|
|
3
3
|
import { ThyImagePreviewComponent } from './preview/image-preview.component';
|
|
4
4
|
import { ThyDialog, ThyDialogSizes } from 'ngx-tethys/dialog';
|
|
5
5
|
import { ThyImagePreviewRef } from './preview/image-preview-ref';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
7
|
+
import { takeUntil } from 'rxjs/operators';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
import * as i1 from "ngx-tethys/dialog";
|
|
8
10
|
import * as i2 from "./image.config";
|
|
@@ -12,6 +14,8 @@ import * as i2 from "./image.config";
|
|
|
12
14
|
export class ThyImageService {
|
|
13
15
|
constructor(thyDialog, defaultConfig) {
|
|
14
16
|
this.thyDialog = thyDialog;
|
|
17
|
+
this.downloadClicked$ = new Subject();
|
|
18
|
+
this.ngUnsubscribe$ = new Subject();
|
|
15
19
|
this.defaultConfig = defaultConfig;
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
@@ -31,8 +35,21 @@ export class ThyImageService {
|
|
|
31
35
|
...config
|
|
32
36
|
});
|
|
33
37
|
const imagePreviewRef = new ThyImagePreviewRef(dialogRef.componentInstance, { ...this.defaultConfig, ...options }, dialogRef);
|
|
38
|
+
imagePreviewRef
|
|
39
|
+
.downloadClicked()
|
|
40
|
+
.pipe(takeUntil(this.ngUnsubscribe$))
|
|
41
|
+
.subscribe(image => {
|
|
42
|
+
this.downloadClicked$.next(image);
|
|
43
|
+
});
|
|
34
44
|
return imagePreviewRef;
|
|
35
45
|
}
|
|
46
|
+
downloadClicked() {
|
|
47
|
+
return this.downloadClicked$.asObservable();
|
|
48
|
+
}
|
|
49
|
+
ngOnDestroy() {
|
|
50
|
+
this.ngUnsubscribe$.next();
|
|
51
|
+
this.ngUnsubscribe$.complete();
|
|
52
|
+
}
|
|
36
53
|
}
|
|
37
54
|
ThyImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyImageService, deps: [{ token: i1.ThyDialog }, { token: THY_IMAGE_DEFAULT_PREVIEW_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
55
|
ThyImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyImageService });
|
|
@@ -44,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
44
61
|
type: Inject,
|
|
45
62
|
args: [THY_IMAGE_DEFAULT_PREVIEW_OPTIONS]
|
|
46
63
|
}] }]; } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbWFnZS9pbWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFVeEIsWUFDVyxTQUFvQixFQUczQixhQUFvQztRQUg3QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBTHZCLHFCQUFnQixHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBRS9DLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVF6QyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsTUFBc0IsRUFBRSxPQUEwRDtRQUN0RixNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFO1lBQzVELFlBQVksRUFBRTtnQkFDVixNQUFNO2dCQUNOLFlBQVksRUFBRSxPQUFPLEVBQUUsVUFBVSxJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RHLGFBQWEsRUFBRSxNQUFNO2FBQ3hCO1lBQ0QsYUFBYSxFQUFFLDRCQUE0QjtZQUMzQyxVQUFVLEVBQUUsNkJBQTZCO1lBQ3pDLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTtZQUN6QixHQUFHLE1BQU07U0FDWixDQUFDLENBQUM7UUFDSCxNQUFNLGVBQWUsR0FBRyxJQUFJLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzlILGVBQWU7YUFDVixlQUFlLEVBQUU7YUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNQLE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7NEdBcERRLGVBQWUsMkNBYVosaUNBQWlDO2dIQWJwQyxlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQWFGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlJbWFnZVByZXZpZXdDb25maWcsIFRIWV9JTUFHRV9ERUZBVUxUX1BSRVZJRVdfT1BUSU9OUyB9IGZyb20gJy4vaW1hZ2UuY29uZmlnJztcbmltcG9ydCB7IFRoeUltYWdlSW5mbywgVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucyB9IGZyb20gJy4vaW1hZ2UuY2xhc3MnO1xuaW1wb3J0IHsgVGh5SW1hZ2VQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9wcmV2aWV3L2ltYWdlLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeURpYWxvZywgVGh5RGlhbG9nU2l6ZXMgfSBmcm9tICduZ3gtdGV0aHlzL2RpYWxvZyc7XG5pbXBvcnQgeyBUaHlJbWFnZVByZXZpZXdSZWYgfSBmcm9tICcuL3ByZXZpZXcvaW1hZ2UtcHJldmlldy1yZWYnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIOWbvueJh+mihOiniOacjeWKoVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGh5SW1hZ2VTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiDlm77niYfpooTop4jpu5jorqTphY3nva7vvIzlpJbpg6jlj6/pgJrov4fms6jlhaUgVEhZX0lNQUdFX0RFRkFVTFRfUFJFVklFV19PUFRJT05TIOi/m+ihjOmFjee9rlxuICAgICAqL1xuICAgIGRlZmF1bHRDb25maWc6IFRoeUltYWdlUHJldmlld0NvbmZpZztcblxuICAgIHByaXZhdGUgZG93bmxvYWRDbGlja2VkJCA9IG5ldyBTdWJqZWN0PFRoeUltYWdlSW5mbz4oKTtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB0aHlEaWFsb2c6IFRoeURpYWxvZyxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUSFlfSU1BR0VfREVGQVVMVF9QUkVWSUVXX09QVElPTlMpXG4gICAgICAgIGRlZmF1bHRDb25maWc6IFRoeUltYWdlUHJldmlld0NvbmZpZ1xuICAgICkge1xuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSBkZWZhdWx0Q29uZmlnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWbvueJh+mihOiniOaWueazlVxuICAgICAqL1xuICAgIHByZXZpZXcoaW1hZ2VzOiBUaHlJbWFnZUluZm9bXSwgb3B0aW9ucz86IFRoeUltYWdlUHJldmlld09wdGlvbnMgJiB7IHN0YXJ0SW5kZXg/OiBudW1iZXIgfSk6IFRoeUltYWdlUHJldmlld1JlZiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4udGhpcy5kZWZhdWx0Q29uZmlnLCAuLi5vcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMudGh5RGlhbG9nLm9wZW4oVGh5SW1hZ2VQcmV2aWV3Q29tcG9uZW50LCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBpbWFnZXMsXG4gICAgICAgICAgICAgICAgcHJldmlld0luZGV4OiBvcHRpb25zPy5zdGFydEluZGV4ID49IDAgJiYgb3B0aW9ucz8uc3RhcnRJbmRleCA8IGltYWdlcy5sZW5ndGggPyBvcHRpb25zLnN0YXJ0SW5kZXggOiAwLFxuICAgICAgICAgICAgICAgIHByZXZpZXdDb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICd0aHktaW1hZ2UtcHJldmlldy1iYWNrZHJvcCcsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAndGh5LWltYWdlLXByZXZpZXctY29udGFpbmVyJyxcbiAgICAgICAgICAgIHNpemU6IFRoeURpYWxvZ1NpemVzLmZ1bGwsXG4gICAgICAgICAgICAuLi5jb25maWdcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGltYWdlUHJldmlld1JlZiA9IG5ldyBUaHlJbWFnZVByZXZpZXdSZWYoZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLCB7IC4uLnRoaXMuZGVmYXVsdENvbmZpZywgLi4ub3B0aW9ucyB9LCBkaWFsb2dSZWYpO1xuICAgICAgICBpbWFnZVByZXZpZXdSZWZcbiAgICAgICAgICAgIC5kb3dubG9hZENsaWNrZWQoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShpbWFnZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZENsaWNrZWQkLm5leHQoaW1hZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbWFnZVByZXZpZXdSZWY7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDbGlja2VkKCk6IE9ic2VydmFibGU8VGh5SW1hZ2VJbmZvPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkQ2xpY2tlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -25,5 +25,8 @@ export class ThyImagePreviewRef {
|
|
|
25
25
|
prev() {
|
|
26
26
|
this.previewInstance.prev();
|
|
27
27
|
}
|
|
28
|
+
downloadClicked() {
|
|
29
|
+
return this.previewInstance.downloadClicked.asObservable();
|
|
30
|
+
}
|
|
28
31
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcHJldmlldy1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvaW1hZ2UvcHJldmlldy9pbWFnZS1wcmV2aWV3LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSWhFLE1BQU0sT0FBTyxrQkFBa0I7SUFLM0IsWUFDVyxlQUF5QyxFQUN4QyxNQUE4QixFQUM5QixTQUFpRDtRQUZsRCxvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFFekQsU0FBUzthQUNKLGFBQWEsRUFBRTthQUNmLElBQUksRUFBRTthQUNOLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMseUJBQXlCLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNmO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtnQkFDcEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2Y7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFwQkQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQzVDLENBQUM7SUFvQkQsSUFBSTtRQUNBLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlJbWFnZVByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeURpYWxvZ1JlZiB9IGZyb20gJ25neC10ZXRoeXMvZGlhbG9nJztcbmltcG9ydCB7IExFRlRfQVJST1csIFJJR0hUX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFRoeUltYWdlSW5mbywgVGh5SW1hZ2VQcmV2aWV3T3B0aW9ucyB9IGZyb20gJy4uL2ltYWdlLmNsYXNzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFRoeUltYWdlUHJldmlld1JlZiB7XG4gICAgZ2V0IGNvbXBvbmVudEluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBwcmV2aWV3SW5zdGFuY2U6IFRoeUltYWdlUHJldmlld0NvbXBvbmVudCxcbiAgICAgICAgcHJpdmF0ZSBjb25maWc6IFRoeUltYWdlUHJldmlld09wdGlvbnMsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nUmVmOiBUaHlEaWFsb2dSZWY8VGh5SW1hZ2VQcmV2aWV3Q29tcG9uZW50PlxuICAgICkge1xuICAgICAgICBkaWFsb2dSZWZcbiAgICAgICAgICAgIC5rZXlkb3duRXZlbnRzKClcbiAgICAgICAgICAgIC5waXBlKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY29uZmlnLmRpc2FibGVLZXlib2FyZFNlbGVjdGFibGUgJiYgZXZlbnQua2V5Q29kZSA9PT0gTEVGVF9BUlJPVykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXYoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFjb25maWcuZGlzYWJsZUtleWJvYXJkU2VsZWN0YWJsZSAmJiBldmVudC5rZXlDb2RlID09PSBSSUdIVF9BUlJPVykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXh0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdJbnN0YW5jZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJldigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3SW5zdGFuY2UucHJldigpO1xuICAgIH1cblxuICAgIGRvd25sb2FkQ2xpY2tlZCgpOiBPYnNlcnZhYmxlPFRoeUltYWdlSW5mbz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aWV3SW5zdGFuY2UuZG93bmxvYWRDbGlja2VkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbn1cbiJdfQ==
|