myrta-ui 17.1.0 → 17.1.2
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/esm2022/lib/components/form/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/lib/components/form/checkbox-group/checkbox-group.component.mjs +1 -1
- package/esm2022/lib/components/form/editor/editor.component.mjs +1 -1
- package/esm2022/lib/components/form/formula-editor/formula-editor.component.mjs +1 -1
- package/esm2022/lib/components/form/input-date-time/input-date-time.component.mjs +1 -1
- package/esm2022/lib/components/form/input-datepicker/input-datepicker.component.mjs +1 -1
- package/esm2022/lib/components/form/input-number/input-number.component.mjs +1 -1
- package/esm2022/lib/components/form/input-phone/input-phone.component.mjs +1 -1
- package/esm2022/lib/components/form/input-select/input-select.component.mjs +1 -1
- package/esm2022/lib/components/form/input-tel/input-tel.component.mjs +1 -1
- package/esm2022/lib/components/form/input-tel/models/country.model.mjs +1 -1
- package/esm2022/lib/components/form/input-text/input-text.component.mjs +1 -1
- package/esm2022/lib/components/form/input-textarea/input-textarea.component.mjs +1 -1
- package/esm2022/lib/components/form/input-timepicker/input-timepicker.component.mjs +1 -1
- package/esm2022/lib/components/form/json-editor/json-editor.component.mjs +1 -1
- package/esm2022/lib/components/form/radio-group/radio-group.component.mjs +1 -1
- package/esm2022/lib/components/form/select/select.component.mjs +1 -1
- package/esm2022/lib/components/form/switch/switch.component.mjs +1 -1
- package/esm2022/lib/components/gallery/components/gallery-item/gallery-item.component.mjs +21 -21
- package/esm2022/lib/components/gallery/gallery.module.mjs +4 -8
- package/esm2022/lib/components/save-state/components/save-state-checkbox/save-state-checkbox.component.mjs +1 -1
- package/esm2022/lib/components/save-state/components/save-state-checkbox-group/save-state-checkbox-group.component.mjs +1 -1
- package/esm2022/lib/components/save-state/components/save-state-editor/save-state-editor.component.mjs +1 -1
- package/esm2022/lib/components/save-state/components/save-state-input/save-state-input.component.mjs +1 -1
- package/esm2022/lib/components/save-state/components/save-state-switch/save-state-switch.component.mjs +1 -1
- package/esm2022/lib/components/save-state/save-state.component.mjs +1 -1
- package/esm2022/lib/services/index.mjs +2 -5
- package/esm2022/lib/services/save-store/auto-save.store.mjs +135 -0
- package/esm2022/lib/services/save-store/index.mjs +3 -0
- package/esm2022/lib/services/save-store/models/field.model.mjs +2 -0
- package/esm2022/lib/services/save-store/models/index.mjs +3 -0
- package/esm2022/lib/services/save-store/models/state.model.mjs +2 -0
- package/fesm2022/myrta-ui.mjs +160 -257
- package/fesm2022/myrta-ui.mjs.map +1 -1
- package/lib/components/form/checkbox/checkbox.component.d.ts +1 -1
- package/lib/components/form/checkbox-group/checkbox-group.component.d.ts +1 -1
- package/lib/components/form/editor/editor.component.d.ts +1 -1
- package/lib/components/form/formula-editor/formula-editor.component.d.ts +1 -1
- package/lib/components/form/input-date-time/input-date-time.component.d.ts +1 -1
- package/lib/components/form/input-datepicker/input-datepicker.component.d.ts +1 -1
- package/lib/components/form/input-number/input-number.component.d.ts +1 -1
- package/lib/components/form/input-phone/input-phone.component.d.ts +1 -1
- package/lib/components/form/input-select/input-select.component.d.ts +1 -1
- package/lib/components/form/input-tel/input-tel.component.d.ts +1 -1
- package/lib/components/form/input-tel/models/country.model.d.ts +1 -0
- package/lib/components/form/input-text/input-text.component.d.ts +1 -1
- package/lib/components/form/input-textarea/input-textarea.component.d.ts +1 -1
- package/lib/components/form/input-timepicker/input-timepicker.component.d.ts +1 -1
- package/lib/components/form/json-editor/json-editor.component.d.ts +1 -1
- package/lib/components/form/radio-group/radio-group.component.d.ts +1 -1
- package/lib/components/form/select/select.component.d.ts +1 -1
- package/lib/components/form/switch/switch.component.d.ts +1 -1
- package/lib/components/gallery/components/gallery-item/gallery-item.component.d.ts +5 -5
- package/lib/components/gallery/gallery.module.d.ts +1 -2
- package/lib/components/save-state/components/save-state-checkbox/save-state-checkbox.component.d.ts +2 -2
- package/lib/components/save-state/components/save-state-checkbox-group/save-state-checkbox-group.component.d.ts +2 -2
- package/lib/components/save-state/components/save-state-editor/save-state-editor.component.d.ts +2 -2
- package/lib/components/save-state/components/save-state-input/save-state-input.component.d.ts +2 -2
- package/lib/components/save-state/components/save-state-switch/save-state-switch.component.d.ts +2 -2
- package/lib/components/save-state/save-state.component.d.ts +2 -2
- package/lib/services/index.d.ts +1 -4
- package/lib/services/save-store/auto-save.store.d.ts +27 -0
- package/lib/services/save-store/index.d.ts +2 -0
- package/lib/services/save-store/models/field.model.d.ts +6 -0
- package/lib/services/save-store/models/index.d.ts +2 -0
- package/lib/services/save-store/models/state.model.d.ts +1 -0
- package/package.json +1 -1
- package/esm2022/lib/services/mrx-autosave/mrx-autosave.service.mjs +0 -43
- package/esm2022/lib/services/save-store/constants/constants.mjs +0 -2
- package/esm2022/lib/services/save-store/models/save-store.model.mjs +0 -2
- package/esm2022/lib/services/save-store/save-store.module.mjs +0 -29
- package/esm2022/lib/services/save-store/store/actions.mjs +0 -23
- package/esm2022/lib/services/save-store/store/effect.mjs +0 -61
- package/esm2022/lib/services/save-store/store/reducer.mjs +0 -79
- package/esm2022/lib/services/save-store/store/selectors.mjs +0 -5
- package/esm2022/lib/services/save-store/store/state.mjs +0 -4
- package/lib/services/mrx-autosave/mrx-autosave.service.d.ts +0 -19
- package/lib/services/save-store/constants/constants.d.ts +0 -1
- package/lib/services/save-store/models/save-store.model.d.ts +0 -4
- package/lib/services/save-store/save-store.module.d.ts +0 -9
- package/lib/services/save-store/store/actions.d.ts +0 -21
- package/lib/services/save-store/store/effect.d.ts +0 -10
- package/lib/services/save-store/store/reducer.d.ts +0 -3
- package/lib/services/save-store/store/selectors.d.ts +0 -3
- package/lib/services/save-store/store/state.d.ts +0 -11
|
@@ -676,4 +676,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
676
676
|
type: ViewChild,
|
|
677
677
|
args: ['phoneInput']
|
|
678
678
|
}] } });
|
|
679
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJdkUsT0FBTyxLQUFLLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBSXBCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFFBQVEsRUFBUyxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFzQjVDLE1BQU0sT0FB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QU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFzQm1CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvdW50cnlDb2RlIH0gZnJvbSAnLi9kYXRhL2NvdW50cnktY29kZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcGhvbmVOdW1iZXJWYWxpZGF0b3IgfSBmcm9tICcuL2lucHV0LXBob25lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0IH0gZnJvbSAnLi9lbnVtcy9waG9uZS1udW1iZXItZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICcuL2VudW1zL3NlYXJjaC1jb3VudHJ5LWZpZWxkLmVudW0nO1xyXG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS5tb2RlbCc7XHJcbmltcG9ydCB7IENoYW5nZURhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMvY2hhbmdlLWRhdGEnO1xyXG5cclxuaW1wb3J0ICogYXMgbHBuIGZyb20gJ2dvb2dsZS1saWJwaG9uZW51bWJlcic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXRQaG9uZVNpemVzRW51bSxcclxuICBJbnB1dFBob25lU2l6ZXNUeXBlcyxcclxuICBJbnB1dFBob25lVmFsdWVUeXBlcyxcclxuICBJbnB1dFBob25lVmFsdWVXaXRoSWRcclxufSBmcm9tICcuL2VudW1zL2lucHV0LXBob25lLmVudW0nO1xyXG5pbXBvcnQgeyBNYXNrQ29kZSwgTWFza0kgfSBmcm9tICcuL2VudW1zL21hc2suZW51bSc7XHJcbmltcG9ydCB7IENvdW50cnlJU08gfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1waG9uZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXBob25lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1waG9uZS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ291bnRyeUNvZGUsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFBob25lQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VWYWx1ZTogcGhvbmVOdW1iZXJWYWxpZGF0b3IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0UGhvbmVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHB1YmxpYyBpbm5lck1hc2sgPSAnJ1xyXG4gIHB1YmxpYyBpbm5lck1hc2tQcmVmaXggPSAnJ1xyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KClcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBJbnB1dFBob25lVmFsdWVUeXBlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVBsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXN0b21QbGFjZWhvbGRlciE6IHN0cmluZztcclxuICBASW5wdXQoKSBudW1iZXJGb3JtYXQ6IFBob25lTnVtYmVyRm9ybWF0ID0gUGhvbmVOdW1iZXJGb3JtYXQuSW50ZXJuYXRpb25hbDtcclxuICBASW5wdXQoKSBjc3NDbGFzcyA9ICdmb3JtLWNvbnRyb2wnO1xyXG4gIEBJbnB1dCgpIG9ubHlDb3VudHJpZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBASW5wdXQoKSBlbmFibGVBdXRvQ291bnRyeVNlbGVjdCA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VhcmNoQ291bnRyeUZsYWcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5RmllbGQ6IFNlYXJjaENvdW50cnlGaWVsZFtdID0gW1NlYXJjaENvdW50cnlGaWVsZC5BbGxdO1xyXG4gIEBJbnB1dCgpIHNlYXJjaENvdW50cnlQbGFjZWhvbGRlciA9ICdTZWFyY2ggQ291bnRyeSc7XHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1pbkxlbmd0aCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzZWxlY3RGaXJzdENvdW50cnkgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ291bnRyeUlTTzogYW55ID0gQ291bnRyeUlTTy5SdXNzaWE7XHJcbiAgQElucHV0KCkgcGhvbmVWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpbnB1dElkID0gJ3Bob25lJztcclxuICBASW5wdXQoKSBzZXBhcmF0ZURpYWxDb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZTogSW5wdXRQaG9uZVNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG5cclxuICAvLyBNQVNLXHJcbiAgQElucHV0KCkgYXV0b01hc2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXNrID0gJyc7XHJcbiAgQElucHV0KCkgbWFza1ByZWZpeCA9ICcnO1xyXG4gIEBJbnB1dCgpIHNob3dNYXNrVHlwZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXNrRHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiBib29sZWFuIHwgc3RyaW5nW10gPSB0cnVlO1xyXG5cclxuICAvLyBWQUxJREFUSU9OXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHNlcGFyYXRlRGlhbENvZGVDbGFzcyE6IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNvdW50cnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvdW50cnk+KCk7XHJcbiAgQE91dHB1dCgpIG51bWJlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlRGF0YSB8IG51bGw+KClcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXRQaG9uZVZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRQaG9uZVZhbHVlV2l0aElkPigpO1xyXG5cclxuICBzZWxlY3RlZENvdW50cnk6IENvdW50cnkgPSB7XHJcbiAgICBhcmVhQ29kZXM6IHVuZGVmaW5lZCxcclxuICAgIGRpYWxDb2RlOiAnJyxcclxuICAgIGh0bWxJZDogJycsXHJcbiAgICBmbGFnQ2xhc3M6ICcnLFxyXG4gICAgaXNvMjogJycsXHJcbiAgICBuYW1lOiAnJyxcclxuICAgIHBsYWNlSG9sZGVyOiAnJyxcclxuICAgIHByaW9yaXR5OiAwLFxyXG4gIH07XHJcblxyXG4gIHBob25lTnVtYmVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBhbGxDb3VudHJpZXM6IEFycmF5PENvdW50cnk+ID0gW107XHJcbiAgcHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bjogQXJyYXk8Q291bnRyeT4gPSBbXTtcclxuICAvLyBIYXMgdG8gYmUgJ2FueScgdG8gcHJldmVudCBhIG5lZWQgdG8gaW5zdGFsbCBAdHlwZXMvZ29vZ2xlLWxpYnBob25lbnVtYmVyIGJ5IHRoZSBwYWNrYWdlIHVzZXIuLi5cclxuICBwaG9uZVV0aWw6IGFueSA9IGxwbi5QaG9uZU51bWJlclV0aWwuZ2V0SW5zdGFuY2UoKTtcclxuXHJcbiAgZXJyb3JzOiBBcnJheTxhbnk+ID0gWydQaG9uZSBudW1iZXIgaXMgcmVxdWlyZWQuJ107XHJcbiAgY291bnRyeVNlYXJjaFRleHQgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgnY291bnRyeUxpc3QnKSBjb3VudHJ5TGlzdCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcpIHBob25lSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuICAvLyBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogQ2hhbmdlRGF0YSkgPT4ge307XHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IHN0cmluZykgPT4ge1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY291bnRyeUNvZGVEYXRhOiBDb3VudHJ5Q29kZSwgcHJpdmF0ZSBzYW5pdGl6YXRpb246IERvbVNhbml0aXplcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0UGhvbmVTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZVZhbGlkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZT8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTWFzaygpOiBNYXNrSSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBdXRvTWFza09iamVjdFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRBdXRvTWFza09iamVjdCgpOiBNYXNrSSB7XHJcbiAgICBpZiAodGhpcy5hdXRvTWFzayAmJiB0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge21hc2s6IHRoaXMubWFzaywgbWFza1ByZWZpeDogdGhpcy5tYXNrUHJlZml4fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGJhc2VWYWxpZGF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1pbkxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElTTyA9IGNoYW5nZXNbJ3NlbGVjdGVkQ291bnRyeUlTTyddO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFsbENvdW50cmllcyAmJlxyXG4gICAgICBzZWxlY3RlZElTTyAmJlxyXG4gICAgICBzZWxlY3RlZElTTy5jdXJyZW50VmFsdWUgIT09IHNlbGVjdGVkSVNPLnByZXZpb3VzVmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ291bnRyeSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3ByZWZlcnJlZENvdW50cmllcyddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJlZmVycmVkQ291bnRyaWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTYWZlVXJsKGZpbGVQcmV2aWV3VXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXphdGlvbi5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoJ3VybChcXCcnICsgZmlsZVByZXZpZXdVcmwgKyAnXFwnKScpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIFRoaXMgaXMgYSB3cmFwcGVyIG1ldGhvZCB0byBhdm9pZCBjYWxsaW5nIHRoaXMubmdPbkluaXQoKSBpbiB3cml0ZVZhbHVlKCkuXHJcbiAgICBSZWY6IGh0dHA6Ly9jb2RlbHl6ZXIuY29tL3J1bGVzL25vLWxpZmUtY3ljbGUtY2FsbC9cclxuICAqL1xyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLmZldGNoQ291bnRyeURhdGEoKTtcclxuXHJcbiAgICBpZiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJlZmVycmVkQ291bnRyaWVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vbmx5Q291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsbENvdW50cmllcyA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbHRlcigoYykgPT5cclxuICAgICAgICB0aGlzLm9ubHlDb3VudHJpZXMuaW5jbHVkZXMoYy5pc28yKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0Rmlyc3RDb3VudHJ5KSB7XHJcbiAgICAgIGlmICh0aGlzLnByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENvdW50cnkodGhpcy5wcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duWzBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ291bnRyeSh0aGlzLmFsbENvdW50cmllc1swXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb3VudHJ5KCk7XHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcbiAgICB0aGlzLl91cGRhdGVNYXNrKClcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkQ291bnRyeShjb3VudHJ5OiBDb3VudHJ5KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cnk7XHJcbiAgICB0aGlzLmNvdW50cnlDaGFuZ2UuZW1pdChjb3VudHJ5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjbGVhbmVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXFxzLSgpXS9nLCAnJylcclxuXHJcbiAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRoaXMuaW5uZXJNYXNrUHJlZml4ID8gJycgOiBjbGVhbmVkVmFsdWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBjbGVhbmVkVmFsdWUubGVuZ3RoID09PSB0aGlzLm1hc2tQcmVmaXgubGVuZ3RoID8gJycgOiBjbGVhbmVkVmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZU1hc2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICB0aGlzLmlubmVyTWFzayA9ICcnXHJcbiAgICAgIHRoaXMuaW5uZXJNYXNrUHJlZml4ID0gJydcclxuXHJcbiAgICAgIGlmICh0aGlzLnBob25lSW5wdXQpIHtcclxuICAgICAgICB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcgJ1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAnICdcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyID0gJyAnXHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2spIHtcclxuICAgICAgICAgIHRoaXMuaW5uZXJNYXNrID0gdGhpcy5zZWxlY3RlZENvdW50cnkubWFzay5tYXNrXHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFza1ByZWZpeCA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2subWFza1ByZWZpeFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFzayA9ICcnXHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFza1ByZWZpeCA9ICcnXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlYXJjaENvdW50cnkoKSB7XHJcbiAgICBpZiAoIXRoaXMuY291bnRyeVNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5jb3VudHJ5TGlzdC5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5tcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbGlzdCBsaScpXHJcbiAgICAgICAgLnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgICBpbmxpbmU6ICduZWFyZXN0JyxcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY291bnRyeVNlYXJjaFRleHRMb3dlciA9IHRoaXMuY291bnRyeVNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLmFsbENvdW50cmllcy5maWx0ZXIoKGMpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkLmluZGV4T2YoU2VhcmNoQ291bnRyeUZpZWxkLkFsbCkgPiAtMSkge1xyXG4gICAgICAgIC8vIFNlYXJjaCBpbiBhbGwgZmllbGRzXHJcbiAgICAgICAgaWYgKGMuaXNvMi50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY291bnRyeVNlYXJjaFRleHRMb3dlcikpIHtcclxuICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYy5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjb3VudHJ5U2VhcmNoVGV4dExvd2VyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5jb3VudHJ5U2VhcmNoVGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBPciBzZWFyY2ggYnkgc3BlY2lmaWMgU2VhcmNoQ291bnRyeUZpZWxkKHMpXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkLmluZGV4T2YoU2VhcmNoQ291bnRyeUZpZWxkLklzbzIpID4gLTEpIHtcclxuICAgICAgICAgIGlmIChjLmlzbzIudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGNvdW50cnlTZWFyY2hUZXh0TG93ZXIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQuaW5kZXhPZihTZWFyY2hDb3VudHJ5RmllbGQuTmFtZSkgPiAtMSkge1xyXG4gICAgICAgICAgaWYgKGMubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY291bnRyeVNlYXJjaFRleHRMb3dlcikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENvdW50cnlGaWVsZC5pbmRleE9mKFNlYXJjaENvdW50cnlGaWVsZC5EaWFsQ29kZSkgPiAtMSkge1xyXG4gICAgICAgICAgaWYgKGMuZGlhbENvZGUuc3RhcnRzV2l0aCh0aGlzLmNvdW50cnlTZWFyY2hUZXh0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChjb3VudHJ5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZWwgPSB0aGlzLmNvdW50cnlMaXN0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAnIycgKyBjb3VudHJ5WzBdLmh0bWxJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZWwpIHtcclxuICAgICAgICBlbC5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXHJcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxyXG4gICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QaG9uZU51bWJlckNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGxldCBjb3VudHJ5Q29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2VyIHNldHMgdGhlIHZhbHVlIHByb2dyYW1hdGljYWxseSBiYXNlZCBvbiBhIHBlcnNpc3RlZCBDaGFuZ2VEYXRhIG9iai5cclxuICAgIGlmICh0aGlzLnBob25lTnVtYmVyICYmIHR5cGVvZiB0aGlzLnBob25lTnVtYmVyID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBjb25zdCBudW1iZXJPYmo6IENoYW5nZURhdGEgPSB0aGlzLnBob25lTnVtYmVyO1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gbnVtYmVyT2JqLm51bWJlcjtcclxuICAgICAgY291bnRyeUNvZGUgPSBudW1iZXJPYmouY291bnRyeUNvZGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICBjb3VudHJ5Q29kZSA9IGNvdW50cnlDb2RlIHx8IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzI7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLmdldFBhcnNlZE51bWJlcih0aGlzLnBob25lTnVtYmVyLCBjb3VudHJ5Q29kZSk7XHJcblxyXG4gICAgLy8gYXV0byBzZWxlY3QgY291bnRyeSBiYXNlZCBvbiB0aGUgZXh0ZW5zaW9uIChhbmQgYXJlYUNvZGUgaWYgbmVlZGVkKSAoZS5nIHNlbGVjdCBDYW5hZGEgaWYgbnVtYmVyIHN0YXJ0cyB3aXRoICsxIDQxNilcclxuICAgIGlmICh0aGlzLmVuYWJsZUF1dG9Db3VudHJ5U2VsZWN0KSB7XHJcbiAgICAgIGNvdW50cnlDb2RlID1cclxuICAgICAgICBudW1iZXIgJiYgbnVtYmVyLmdldENvdW50cnlDb2RlKClcclxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgID8gdGhpcy5nZXRDb3VudHJ5SXNvQ29kZShudW1iZXIuZ2V0Q291bnRyeUNvZGUoKSwgbnVtYmVyKVxyXG4gICAgICAgICAgOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yO1xyXG4gICAgICBpZiAoY291bnRyeUNvZGUgJiYgY291bnRyeUNvZGUgIT09IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIpIHtcclxuICAgICAgICBjb25zdCBuZXdDb3VudHJ5ID0gdGhpcy5hbGxDb3VudHJpZXNcclxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZmluZCgoYykgPT4gYy5pc28yID09PSBjb3VudHJ5Q29kZSk7XHJcbiAgICAgICAgaWYgKG5ld0NvdW50cnkpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbmV3Q291bnRyeTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvdW50cnlDb2RlID0gY291bnRyeUNvZGUgPyBjb3VudHJ5Q29kZSA6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzI7XHJcblxyXG4gICAgdGhpcy5jaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpO1xyXG5cclxuICAgIGlmICghdGhpcy52YWx1ZSB8fCAodGhpcy5hdXRvTWFzayAmJiB0aGlzLmlubmVyTWFza1ByZWZpeCA9PT0gdGhpcy52YWx1ZSkpIHtcclxuICAgICAgLy8gUmVhc29uOiBhdm9pZCBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTQzNTgxMzMvMTYxNzU5MFxyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW51bGwta2V5d29yZFxyXG5cclxuICAgICAgdGhpcy52YWx1ZSA9ICcnXHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQobnVsbClcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbnRsTm8gPSBudW1iZXJcclxuICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMKVxyXG4gICAgICAgIDogJyc7XHJcblxyXG4gICAgICAvLyBwYXJzZSBwaG9uZU51bWJlciBpZiBzZXBhcmF0ZSBkaWFsIGNvZGUgaXMgbmVlZGVkXHJcbiAgICAgIGlmICh0aGlzLnNlcGFyYXRlRGlhbENvZGUgJiYgaW50bE5vKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmVtb3ZlRGlhbENvZGUoaW50bE5vKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSlcclxuICAgICAgY29uc3QgZW1pdFZhbHVlID0ge1xyXG4gICAgICAgIG51bWJlcjogdGhpcy52YWx1ZSxcclxuICAgICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyOiBpbnRsTm8sXHJcbiAgICAgICAgbmF0aW9uYWxOdW1iZXI6IG51bWJlclxyXG4gICAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUwpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGUxNjROdW1iZXI6IG51bWJlclxyXG4gICAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuRTE2NClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgY291bnRyeUNvZGU6IGNvdW50cnlDb2RlLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgZGlhbENvZGU6ICcrJyArIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlLFxyXG4gICAgICAgIHVuRm9ybWF0TnVtYmVyOiB0aGlzLmZvcm1hdFZhbHVlKHRoaXMudmFsdWUpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChlbWl0VmFsdWUpXHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGVtaXRWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Db3VudHJ5U2VsZWN0KGNvdW50cnk6IENvdW50cnksIGVsOiB7IGZvY3VzOiAoKSA9PiB2b2lkOyB9KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b01hc2spIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZENvdW50cnkoKHtcclxuICAgICAgICBhcmVhQ29kZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICBkaWFsQ29kZTogJycsXHJcbiAgICAgICAgaHRtbElkOiAnJyxcclxuICAgICAgICBmbGFnQ2xhc3M6ICcnLFxyXG4gICAgICAgIGlzbzI6ICcnLFxyXG4gICAgICAgIG5hbWU6ICcnLFxyXG4gICAgICAgIHBsYWNlSG9sZGVyOiAnJyxcclxuICAgICAgICBwcmlvcml0eTogMCxcclxuICAgICAgfSkpXHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJ1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb3VudHJ5KGNvdW50cnkpO1xyXG5cclxuICAgIHRoaXMuY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5waG9uZU51bWJlciAmJiB0aGlzLnBob25lTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICAgIGNvbnN0IG51bWJlciA9IHRoaXMuZ2V0UGFyc2VkTnVtYmVyKFxyXG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMlxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBpbnRsTm8gPSBudW1iZXJcclxuICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMKVxyXG4gICAgICAgIDogJyc7XHJcbiAgICAgIC8vIHBhcnNlIHBob25lTnVtYmVyIGlmIHNlcGFyYXRlIGRpYWwgY29kZSBpcyBuZWVkZWRcclxuICAgICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSAmJiBpbnRsTm8pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5yZW1vdmVEaWFsQ29kZShpbnRsTm8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBlbWl0VmFsdWUgPSB7XHJcbiAgICAgICAgbnVtYmVyOiB0aGlzLnZhbHVlLFxyXG4gICAgICAgIGludGVybmF0aW9uYWxOdW1iZXI6IGludGxObyxcclxuICAgICAgICBuYXRpb25hbE51bWJlcjogbnVtYmVyXHJcbiAgICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5OQVRJT05BTClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgZTE2NE51bWJlcjogbnVtYmVyXHJcbiAgICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5FMTY0KVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgIGRpYWxDb2RlOiAnKycgKyB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgICB1bkZvcm1hdE51bWJlcjogdGhpcy5mb3JtYXRWYWx1ZSh0aGlzLnZhbHVlKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KGVtaXRWYWx1ZSlcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogZW1pdFZhbHVlLCBpZDogdGhpcy51dWlkfSlcclxuXHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSgnJyk7XHJcblxyXG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KG51bGwpXHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IG51bGwsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5fdXBkYXRlTWFzaygpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JbnB1dEtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBhbGxvd2VkQ2hhcnMgPSAvWzAtOVxcK1xcLVxcKFxcKVxcIF0vO1xyXG4gICAgY29uc3QgYWxsb3dlZEN0cmxDaGFycyA9IC9bYXhjdl0vO1xyXG4gICAgY29uc3QgYWxsb3dlZE90aGVyS2V5cyA9IFtcclxuICAgICAgJ0Fycm93TGVmdCcsXHJcbiAgICAgICdBcnJvd1VwJyxcclxuICAgICAgJ0Fycm93UmlnaHQnLFxyXG4gICAgICAnQXJyb3dEb3duJyxcclxuICAgICAgJ0hvbWUnLFxyXG4gICAgICAnRW5kJyxcclxuICAgICAgJ0luc2VydCcsXHJcbiAgICAgICdEZWxldGUnLFxyXG4gICAgICAnQmFja3NwYWNlJyxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhYWxsb3dlZENoYXJzLnRlc3QoZXZlbnQua2V5KSAmJlxyXG4gICAgICAhKGV2ZW50LmN0cmxLZXkgJiYgYWxsb3dlZEN0cmxDaGFycy50ZXN0KGV2ZW50LmtleSkpICYmXHJcbiAgICAgICFhbGxvd2VkT3RoZXJLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSlcclxuICAgICkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBob25lTnVtYmVyID0gb2JqO1xyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGlmICh0aGlzLmN1c3RvbVBsYWNlaG9sZGVyKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5jdXN0b21QbGFjZWhvbGRlcjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZENvdW50cnkucGxhY2VIb2xkZXIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5wbGFjZUhvbGRlcjtcclxuICAgICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSkge1xyXG4gICAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5yZW1vdmVEaWFsQ29kZShwbGFjZWhvbGRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcclxuICB9XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBwYXJzZSBQaG9uZU51bWJlciBvYmplY3QuXHJcbiAgICogQHBhcmFtIHBob25lTnVtYmVyIHN0cmluZ1xyXG4gICAqIEBwYXJhbSBjb3VudHJ5Q29kZSBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdldFBhcnNlZE51bWJlcihcclxuICAgIHBob25lTnVtYmVyOiBzdHJpbmcsXHJcbiAgICBjb3VudHJ5Q29kZTogc3RyaW5nXHJcbiAgKTogbHBuLlBob25lTnVtYmVyIHtcclxuICAgIGxldCBudW1iZXI6IGxwbi5QaG9uZU51bWJlcjtcclxuICAgIHRyeSB7XHJcbiAgICAgIG51bWJlciA9IHRoaXMucGhvbmVVdGlsLnBhcnNlKHBob25lTnVtYmVyLCBjb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBudW1iZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGp1c3RzIGlucHV0IGFsaWdubWVudCBiYXNlZCBvbiB0aGUgZGlhbCBjb2RlIHByZXNlbnRhdGlvbiBzdHlsZS5cclxuICAgKi9cclxuICBwcml2YXRlIGNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSAmJiB0aGlzLnNlbGVjdGVkQ291bnRyeSkge1xyXG4gICAgICBjb25zdCBjbnRyeUNkID0gdGhpcy5zZWxlY3RlZENvdW50cnkuZGlhbENvZGU7XHJcbiAgICAgIHRoaXMuc2VwYXJhdGVEaWFsQ29kZUNsYXNzID1cclxuICAgICAgICAnc2VwYXJhdGUtZGlhbC1jb2RlIGl0aS1zZGMtJyArIChjbnRyeUNkLmxlbmd0aCArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXBhcmF0ZURpYWxDb2RlQ2xhc3MgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFucyBkaWFsY29kZSBmcm9tIHBob25lIG51bWJlciBzdHJpbmcuXHJcbiAgICogQHBhcmFtIHBob25lTnVtYmVyIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlRGlhbENvZGUocGhvbmVOdW1iZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLmdldFBhcnNlZE51bWJlcihwaG9uZU51bWJlciwgdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMik7XHJcbiAgICBwaG9uZU51bWJlciA9IHRoaXMucGhvbmVVdGlsLmZvcm1hdChcclxuICAgICAgbnVtYmVyLFxyXG4gICAgICBscG4uUGhvbmVOdW1iZXJGb3JtYXRbdGhpcy5udW1iZXJGb3JtYXRdXHJcbiAgICApO1xyXG4gICAgaWYgKHBob25lTnVtYmVyLnN0YXJ0c1dpdGgoJysnKSAmJiB0aGlzLnNlcGFyYXRlRGlhbENvZGUpIHtcclxuICAgICAgcGhvbmVOdW1iZXIgPSBwaG9uZU51bWJlci5zdWJzdHIocGhvbmVOdW1iZXIuaW5kZXhPZignICcpICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGhvbmVOdW1iZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaWZ0cyB0aHJvdWdoIGFsbCBjb3VudHJpZXMgYW5kIHJldHVybnMgaXNvIGNvZGUgb2YgdGhlIHByaW1hcnkgY291bnRyeVxyXG4gICAqIGJhc2VkIG9uIHRoZSBudW1iZXIgcHJvdmlkZWQuXHJcbiAgICogQHBhcmFtIGNvdW50cnlDb2RlIGNvdW50cnkgY29kZSBpbiBudW1iZXIgZm9ybWF0XHJcbiAgICogQHBhcmFtIG51bWJlciBQaG9uZU51bWJlciBvYmplY3RcclxuICAgKi9cclxuICBwcml2YXRlIGdldENvdW50cnlJc29Db2RlKFxyXG4gICAgY291bnRyeUNvZGU6IG51bWJlcixcclxuICAgIG51bWJlcjogbHBuLlBob25lTnVtYmVyXHJcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIFdpbGwgdXNlIHRoaXMgdG8gbWF0Y2ggYXJlYSBjb2RlIGZyb20gdGhlIGZpcnN0IG51bWJlcnNcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IHJhd051bWJlciA9IG51bWJlclsndmFsdWVzXyddWycyJ10udG9TdHJpbmcoKTtcclxuICAgIC8vIExpc3Qgb2YgYWxsIGNvdW50cmllcyB3aXRoIGNvdW50cnlDb2RlIChjYW4gYmUgbW9yZSB0aGFuIG9uZS4gZS54LiBVUywgQ0EsIERPLCBQUiBhbGwgaGF2ZSArMSBjb3VudHJ5Q29kZSlcclxuICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbHRlcihcclxuICAgICAgKGMpID0+IGMuZGlhbENvZGUgPT09IGNvdW50cnlDb2RlLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICAvLyBNYWluIGNvdW50cnkgaXMgdGhlIGNvdW50cnksIHdoaWNoIGhhcyBubyBhcmVhQ29kZXMgc3BlY2lmaWVkIGluIGNvdW50cnktY29kZS50cyBmaWxlLlxyXG4gICAgY29uc3QgbWFpbkNvdW50cnkgPSBjb3VudHJpZXMuZmluZCgoYykgPT4gYy5hcmVhQ29kZXMgPT09IHVuZGVmaW5lZCk7XHJcbiAgICAvLyBTZWNvbmRhcnkgY291bnRyaWVzIGFyZSBhbGwgY291bnRyaWVzLCB3aGljaCBoYXZlIGFyZWFDb2RlcyBzcGVjaWZpZWQgaW4gY291bnRyeS1jb2RlLnRzIGZpbGUuXHJcbiAgICBjb25zdCBzZWNvbmRhcnlDb3VudHJpZXMgPSBjb3VudHJpZXMuZmlsdGVyKFxyXG4gICAgICAoYykgPT4gYy5hcmVhQ29kZXMgIT09IHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICAgIGxldCBtYXRjaGVkQ291bnRyeSA9IG1haW5Db3VudHJ5ID8gbWFpbkNvdW50cnkuaXNvMiA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKlxyXG4gICAgICBJdGVyYXRlIG92ZXIgZWFjaCBzZWNvbmRhcnkgY291bnRyeSBhbmQgY2hlY2sgaWYgbmF0aW9uYWxOdW1iZXIgc3RhcnRzIHdpdGggYW55IG9mIGFyZWFDb2RlcyBhdmFpbGFibGUuXHJcbiAgICAgIElmIG5vIG1hdGNoZXMgZm91bmQsIGZhbGxiYWNrIHRvIHRoZSBtYWluIGNvdW50cnkuXHJcbiAgICAqL1xyXG4gICAgc2Vjb25kYXJ5Q291bnRyaWVzLmZvckVhY2goKGNvdW50cnkpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb3VudHJ5LmFyZWFDb2Rlcy5mb3JFYWNoKChhcmVhQ29kZSkgPT4ge1xyXG4gICAgICAgIGlmIChyYXdOdW1iZXIuc3RhcnRzV2l0aChhcmVhQ29kZSkpIHtcclxuICAgICAgICAgIG1hdGNoZWRDb3VudHJ5ID0gY291bnRyeS5pc28yO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZENvdW50cnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGZvcm1hdHRlZCBleGFtcGxlIHBob25lIG51bWJlciBmcm9tIHBob25lVXRpbC5cclxuICAgKiBAcGFyYW0gY291bnRyeUNvZGUgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldFBob25lTnVtYmVyUGxhY2VIb2xkZXIoY291bnRyeUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5waG9uZVV0aWwuZm9ybWF0KFxyXG4gICAgICAgIHRoaXMucGhvbmVVdGlsLmdldEV4YW1wbGVOdW1iZXIoY291bnRyeUNvZGUpLFxyXG4gICAgICAgIGxwbi5QaG9uZU51bWJlckZvcm1hdFt0aGlzLm51bWJlckZvcm1hdF1cclxuICAgICAgKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRQaG9uZU51bWJlck1hc2soY291bnRyeUNvZGU6IHN0cmluZyk6IE1hc2tJIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBNYXNrQ29kZVtjb3VudHJ5Q29kZV1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyaW5nIHRoZSBsaXN0IHRvIGF2b2lkIGR1cGxpY2F0ZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjYXQxMjM0NS9uZ3gtaW50bC10ZWwtaW5wdXQvaXNzdWVzLzI0OClcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZmV0Y2hDb3VudHJ5RGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxsQ291bnRyaWVzID0gW107XHJcblxyXG4gICAgdGhpcy5jb3VudHJ5Q29kZURhdGEuYWxsQ291bnRyaWVzLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IHtcclxuICAgICAgICBuYW1lOiBjWzBdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgaXNvMjogY1sxXS50b1N0cmluZygpLFxyXG4gICAgICAgIGRpYWxDb2RlOiBjWzJdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgcHJpb3JpdHk6ICtjWzNdIHx8IDAsXHJcbiAgICAgICAgYXJlYUNvZGVzOiAoY1s0XSBhcyBzdHJpbmdbXSkgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGh0bWxJZDogYGl0aS0wX19pdGVtLSR7Y1sxXS50b1N0cmluZygpfWAsXHJcbiAgICAgICAgZmxhZ0NsYXNzOiBgaXRpX18ke2NbMV0udG9TdHJpbmcoKS50b0xvY2FsZUxvd2VyQ2FzZSgpfWAsXHJcbiAgICAgICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKHRoaXMuZW5hYmxlUGxhY2Vob2xkZXIpIHtcclxuICAgICAgICBjb3VudHJ5LnBsYWNlSG9sZGVyID0gdGhpcy5nZXRQaG9uZU51bWJlclBsYWNlSG9sZGVyKFxyXG4gICAgICAgICAgY291bnRyeS5pc28yLnRvVXBwZXJDYXNlKClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICAgIGNvdW50cnkubWFzayA9IHRoaXMuZ2V0UGhvbmVOdW1iZXJNYXNrKGNvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFsbENvdW50cmllcy5wdXNoKGNvdW50cnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3B1bGF0ZXMgcHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93biB3aXRoIHByZWZmZXJyZWQgY291bnRyaWVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlUHJlZmVycmVkQ291bnRyaWVzKCkge1xyXG4gICAgaWYgKHRoaXMucHJlZmVycmVkQ291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24gPSBbXTtcclxuICAgICAgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMuZm9yRWFjaCgoaXNvMikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByZWZlcnJlZENvdW50cnkgPSB0aGlzLmFsbENvdW50cmllcy5maWx0ZXIoKGMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBjLmlzbzIgPT09IGlzbzI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bi5wdXNoKHByZWZlcnJlZENvdW50cnlbMF0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgc2VsZWN0ZWRDb3VudHJ5LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRDb3VudHJ5KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5SVNPKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSB0aGlzLmFsbENvdW50cmllcy5maW5kKChjKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGMuaXNvMi50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnNlbGVjdGVkQ291bnRyeUlTTy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGhvbmVOdW1iZXIpIHtcclxuICAgICAgICAgIHRoaXMub25QaG9uZU51bWJlckNoYW5nZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSgnJyk7XHJcbiAgICAgICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KG51bGwpXHJcbiAgICAgICAgICAvLyB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBudWxsLCBpZDogdGhpcy51dWlkfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZVwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCIgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fd3JhcHBlclwiIFtuZ0NsYXNzXT1cInNlcGFyYXRlRGlhbENvZGVDbGFzc1wiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNwaG9uZUlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZWxcIlxyXG4gICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvblBob25lTnVtYmVyQ2hhbmdlKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXHJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiJ29mZidcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZVBsYWNlaG9sZGVyKClcIlxyXG4gICAgICBbYXR0ci5tYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgW2F0dHIudmFsaWRhdGlvbl09XCJwaG9uZVZhbGlkYXRpb25cIlxyXG4gICAgICBbbWFza109XCJpbm5lck1hc2sgfHwgbWFza1wiXHJcbiAgICAgIFtwcmVmaXhdPVwiaW5uZXJNYXNrUHJlZml4IHx8IG1hc2tQcmVmaXhcIlxyXG4gICAgICBbc2hvd01hc2tUeXBlZF09XCJzaG93TWFza1R5cGVkXCJcclxuICAgICAgW2Ryb3BTcGVjaWFsQ2hhcmFjdGVyc109XCJhdXRvTWFzayA/IGZhbHNlIDogbWFza0Ryb3BTcGVjaWFsQ2hhcmFjdGVyc1wiXHJcbiAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcclxuICAgICAgKGtleXByZXNzKT1cIm9uSW5wdXRLZXlQcmVzcygkZXZlbnQpXCJcclxuICAgICAgI2ZvY3VzYWJsZVxyXG4gICAgPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZy1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogZGlzYWJsZWR9XCI+XHJcbiAgICAgIDxtcngtZHJvcGRvd24gY3VzdG9tQ2xhc3Nlcz1cImgtMTAwXCIgW21haW5QbGFjZW1lbnRdPVwiJ2JvdHRvbS1zdGFydCdcIiBbZmFsbGJhY2tQbGFjZW1lbnRzXT1cIlsndG9wLXN0YXJ0J11cIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fc2VsZWN0ZWQtZmxhZyBkcm9wZG93bi10b2dnbGVcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZENvdW50cnkuZmxhZ0NsYXNzIHx8ICcnXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VwYXJhdGVEaWFsQ29kZVwiIGNsYXNzPVwic2VsZWN0ZWQtZGlhbC1jb2RlXCI+K3t7c2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fYXJyb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1kb3duXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIiAqbmdJZj1cInNlYXJjaENvdW50cnlGbGFnICYmIHNlYXJjaENvdW50cnlGaWVsZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJjb3VudHJ5LXNlYXJjaC1ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb3VudHJ5U2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwic2VhcmNoQ291bnRyeSgpXCJcclxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaENvdW50cnlQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbGlzdFwiICNjb3VudHJ5TGlzdD5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5IGl0aV9fcHJlZmVycmVkXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIHByZWZlcnJlZENvdW50cmllc0luRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ291bnRyeVNlbGVjdChjb3VudHJ5LCBmb2N1c2FibGUpXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJjb3VudHJ5Lmh0bWxJZCsnLXByZWZlcnJlZCdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvdW50cnkuZmxhZ0NsYXNzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbmFtZVwiPnt7Y291bnRyeS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2RpYWwtY29kZVwiPit7e2NvdW50cnkuZGlhbENvZGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZGl2aWRlclwiICpuZ0lmPVwicHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bj8ubGVuZ3RoXCI+PC9saT5cclxuXHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fY291bnRyeSBpdGlfX3N0YW5kYXJkXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGFsbENvdW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Db3VudHJ5U2VsZWN0KGNvdW50cnksIGZvY3VzYWJsZSlcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImNvdW50cnkuaHRtbElkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWdcIiBbbmdDbGFzc109XCJjb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5LW5hbWVcIj57e2NvdW50cnkubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19kaWFsLWNvZGVcIj4re3tjb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21yeC1kcm9wZG93bj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAgICpuZ0lmPVwiKCFpc1ZhbGlkIHx8IGludmFsaWQpICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuICA+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
679
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFJdkUsT0FBTyxLQUFLLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQztBQUU3QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQ0wsbUJBQW1CLEVBSXBCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLFFBQVEsRUFBUyxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUF1QjVDLE1BQU0sT0FB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QU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFzQm1CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvdW50cnlDb2RlIH0gZnJvbSAnLi9kYXRhL2NvdW50cnktY29kZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcGhvbmVOdW1iZXJWYWxpZGF0b3IgfSBmcm9tICcuL2lucHV0LXBob25lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0IH0gZnJvbSAnLi9lbnVtcy9waG9uZS1udW1iZXItZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICcuL2VudW1zL3NlYXJjaC1jb3VudHJ5LWZpZWxkLmVudW0nO1xyXG5pbXBvcnQgeyBDb3VudHJ5IH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS5tb2RlbCc7XHJcbmltcG9ydCB7IENoYW5nZURhdGEgfSBmcm9tICcuL2ludGVyZmFjZXMvY2hhbmdlLWRhdGEnO1xyXG5cclxuaW1wb3J0ICogYXMgbHBuIGZyb20gJ2dvb2dsZS1saWJwaG9uZW51bWJlcic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHtcclxuICBJbnB1dFBob25lU2l6ZXNFbnVtLFxyXG4gIElucHV0UGhvbmVTaXplc1R5cGVzLFxyXG4gIElucHV0UGhvbmVWYWx1ZVR5cGVzLFxyXG4gIElucHV0UGhvbmVWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vZW51bXMvaW5wdXQtcGhvbmUuZW51bSc7XHJcbmltcG9ydCB7IE1hc2tDb2RlLCBNYXNrSSB9IGZyb20gJy4vZW51bXMvbWFzay5lbnVtJztcclxuaW1wb3J0IHsgQ291bnRyeUlTTyB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYXZlLXN0b3JlL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21yeC1pbnB1dC1waG9uZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXBob25lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1waG9uZS5jb21wb25lbnQubGVzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ291bnRyeUNvZGUsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFBob25lQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VWYWx1ZTogcGhvbmVOdW1iZXJWYWxpZGF0b3IsXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0UGhvbmVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIHB1YmxpYyBpbm5lck1hc2sgPSAnJ1xyXG4gIHB1YmxpYyBpbm5lck1hc2tQcmVmaXggPSAnJ1xyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KClcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBJbnB1dFBob25lVmFsdWVUeXBlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIEBJbnB1dCgpIGVuYWJsZVBsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXN0b21QbGFjZWhvbGRlciE6IHN0cmluZztcclxuICBASW5wdXQoKSBudW1iZXJGb3JtYXQ6IFBob25lTnVtYmVyRm9ybWF0ID0gUGhvbmVOdW1iZXJGb3JtYXQuSW50ZXJuYXRpb25hbDtcclxuICBASW5wdXQoKSBjc3NDbGFzcyA9ICdmb3JtLWNvbnRyb2wnO1xyXG4gIEBJbnB1dCgpIG9ubHlDb3VudHJpZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBASW5wdXQoKSBlbmFibGVBdXRvQ291bnRyeVNlbGVjdCA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VhcmNoQ291bnRyeUZsYWcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5RmllbGQ6IFNlYXJjaENvdW50cnlGaWVsZFtdID0gW1NlYXJjaENvdW50cnlGaWVsZC5BbGxdO1xyXG4gIEBJbnB1dCgpIHNlYXJjaENvdW50cnlQbGFjZWhvbGRlciA9ICdTZWFyY2ggQ291bnRyeSc7XHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIG1pbkxlbmd0aCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBzZWxlY3RGaXJzdENvdW50cnkgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ291bnRyeUlTTzogYW55ID0gQ291bnRyeUlTTy5SdXNzaWE7XHJcbiAgQElucHV0KCkgcGhvbmVWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpbnB1dElkID0gJ3Bob25lJztcclxuICBASW5wdXQoKSBzZXBhcmF0ZURpYWxDb2RlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZTogSW5wdXRQaG9uZVNpemVzVHlwZXMgPSAnbGFyZ2UnO1xyXG5cclxuICAvLyBNQVNLXHJcbiAgQElucHV0KCkgYXV0b01hc2sgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXNrID0gJyc7XHJcbiAgQElucHV0KCkgbWFza1ByZWZpeCA9ICcnO1xyXG4gIEBJbnB1dCgpIHNob3dNYXNrVHlwZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXNrRHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiBib29sZWFuIHwgc3RyaW5nW10gPSB0cnVlO1xyXG5cclxuICAvLyBWQUxJREFUSU9OXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHNlcGFyYXRlRGlhbENvZGVDbGFzcyE6IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNvdW50cnlDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvdW50cnk+KCk7XHJcbiAgQE91dHB1dCgpIG51bWJlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlRGF0YSB8IG51bGw+KClcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5wdXRQaG9uZVZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRQaG9uZVZhbHVlV2l0aElkPigpO1xyXG5cclxuICBzZWxlY3RlZENvdW50cnk6IENvdW50cnkgPSB7XHJcbiAgICBhcmVhQ29kZXM6IHVuZGVmaW5lZCxcclxuICAgIGRpYWxDb2RlOiAnJyxcclxuICAgIGh0bWxJZDogJycsXHJcbiAgICBmbGFnQ2xhc3M6ICcnLFxyXG4gICAgaXNvMjogJycsXHJcbiAgICBuYW1lOiAnJyxcclxuICAgIHBsYWNlSG9sZGVyOiAnJyxcclxuICAgIHByaW9yaXR5OiAwLFxyXG4gIH07XHJcblxyXG4gIHBob25lTnVtYmVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuICBhbGxDb3VudHJpZXM6IEFycmF5PENvdW50cnk+ID0gW107XHJcbiAgcHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bjogQXJyYXk8Q291bnRyeT4gPSBbXTtcclxuICAvLyBIYXMgdG8gYmUgJ2FueScgdG8gcHJldmVudCBhIG5lZWQgdG8gaW5zdGFsbCBAdHlwZXMvZ29vZ2xlLWxpYnBob25lbnVtYmVyIGJ5IHRoZSBwYWNrYWdlIHVzZXIuLi5cclxuICBwaG9uZVV0aWw6IGFueSA9IGxwbi5QaG9uZU51bWJlclV0aWwuZ2V0SW5zdGFuY2UoKTtcclxuXHJcbiAgZXJyb3JzOiBBcnJheTxhbnk+ID0gWydQaG9uZSBudW1iZXIgaXMgcmVxdWlyZWQuJ107XHJcbiAgY291bnRyeVNlYXJjaFRleHQgPSAnJztcclxuXHJcbiAgQFZpZXdDaGlsZCgnY291bnRyeUxpc3QnKSBjb3VudHJ5TGlzdCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcpIHBob25lSW5wdXQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuICAvLyBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogQ2hhbmdlRGF0YSkgPT4ge307XHJcbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IHN0cmluZykgPT4ge1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY291bnRyeUNvZGVEYXRhOiBDb3VudHJ5Q29kZSwgcHJpdmF0ZSBzYW5pdGl6YXRpb246IERvbVNhbml0aXplcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0UGhvbmVTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZVZhbGlkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZT8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkTWFzaygpOiBNYXNrSSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBdXRvTWFza09iamVjdFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRBdXRvTWFza09iamVjdCgpOiBNYXNrSSB7XHJcbiAgICBpZiAodGhpcy5hdXRvTWFzayAmJiB0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge21hc2s6IHRoaXMubWFzaywgbWFza1ByZWZpeDogdGhpcy5tYXNrUHJlZml4fVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGJhc2VWYWxpZGF0ZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLm1pbkxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElTTyA9IGNoYW5nZXNbJ3NlbGVjdGVkQ291bnRyeUlTTyddO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmFsbENvdW50cmllcyAmJlxyXG4gICAgICBzZWxlY3RlZElTTyAmJlxyXG4gICAgICBzZWxlY3RlZElTTy5jdXJyZW50VmFsdWUgIT09IHNlbGVjdGVkSVNPLnByZXZpb3VzVmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ291bnRyeSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3ByZWZlcnJlZENvdW50cmllcyddKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJlZmVycmVkQ291bnRyaWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTYWZlVXJsKGZpbGVQcmV2aWV3VXJsOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnNhbml0aXphdGlvbi5ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUoJ3VybChcXCcnICsgZmlsZVByZXZpZXdVcmwgKyAnXFwnKScpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgIFRoaXMgaXMgYSB3cmFwcGVyIG1ldGhvZCB0byBhdm9pZCBjYWxsaW5nIHRoaXMubmdPbkluaXQoKSBpbiB3cml0ZVZhbHVlKCkuXHJcbiAgICBSZWY6IGh0dHA6Ly9jb2RlbHl6ZXIuY29tL3J1bGVzL25vLWxpZmUtY3ljbGUtY2FsbC9cclxuICAqL1xyXG4gIGluaXQoKSB7XHJcbiAgICB0aGlzLmZldGNoQ291bnRyeURhdGEoKTtcclxuXHJcbiAgICBpZiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlUHJlZmVycmVkQ291bnRyaWVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vbmx5Q291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsbENvdW50cmllcyA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbHRlcigoYykgPT5cclxuICAgICAgICB0aGlzLm9ubHlDb3VudHJpZXMuaW5jbHVkZXMoYy5pc28yKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0Rmlyc3RDb3VudHJ5KSB7XHJcbiAgICAgIGlmICh0aGlzLnByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENvdW50cnkodGhpcy5wcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duWzBdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ291bnRyeSh0aGlzLmFsbENvdW50cmllc1swXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb3VudHJ5KCk7XHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcbiAgICB0aGlzLl91cGRhdGVNYXNrKClcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkQ291bnRyeShjb3VudHJ5OiBDb3VudHJ5KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGNvdW50cnk7XHJcbiAgICB0aGlzLmNvdW50cnlDaGFuZ2UuZW1pdChjb3VudHJ5KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjbGVhbmVkVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXFxzLSgpXS9nLCAnJylcclxuXHJcbiAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRoaXMuaW5uZXJNYXNrUHJlZml4ID8gJycgOiBjbGVhbmVkVmFsdWVcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBjbGVhbmVkVmFsdWUubGVuZ3RoID09PSB0aGlzLm1hc2tQcmVmaXgubGVuZ3RoID8gJycgOiBjbGVhbmVkVmFsdWVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZU1hc2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICB0aGlzLmlubmVyTWFzayA9ICcnXHJcbiAgICAgIHRoaXMuaW5uZXJNYXNrUHJlZml4ID0gJydcclxuXHJcbiAgICAgIGlmICh0aGlzLnBob25lSW5wdXQpIHtcclxuICAgICAgICB0aGlzLnBob25lSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcgJ1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAnICdcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyID0gJyAnXHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2spIHtcclxuICAgICAgICAgIHRoaXMuaW5uZXJNYXNrID0gdGhpcy5zZWxlY3RlZENvdW50cnkubWFzay5tYXNrXHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFza1ByZWZpeCA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2subWFza1ByZWZpeFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFzayA9ICcnXHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFza1ByZWZpeCA9ICcnXHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlYXJjaENvdW50cnkoKSB7XHJcbiAgICBpZiAoIXRoaXMuY291bnRyeVNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5jb3VudHJ5TGlzdC5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJy5tcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbGlzdCBsaScpXHJcbiAgICAgICAgLnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgICBpbmxpbmU6ICduZWFyZXN0JyxcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY291bnRyeVNlYXJjaFRleHRMb3dlciA9IHRoaXMuY291bnRyeVNlYXJjaFRleHQudG9Mb3dlckNhc2UoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLmFsbENvdW50cmllcy5maWx0ZXIoKGMpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkLmluZGV4T2YoU2VhcmNoQ291bnRyeUZpZWxkLkFsbCkgPiAtMSkge1xyXG4gICAgICAgIC8vIFNlYXJjaCBpbiBhbGwgZmllbGRzXHJcbiAgICAgICAgaWYgKGMuaXNvMi50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY291bnRyeVNlYXJjaFRleHRMb3dlcikpIHtcclxuICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYy5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjb3VudHJ5U2VhcmNoVGV4dExvd2VyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5jb3VudHJ5U2VhcmNoVGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBPciBzZWFyY2ggYnkgc3BlY2lmaWMgU2VhcmNoQ291bnRyeUZpZWxkKHMpXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkLmluZGV4T2YoU2VhcmNoQ291bnRyeUZpZWxkLklzbzIpID4gLTEpIHtcclxuICAgICAgICAgIGlmIChjLmlzbzIudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGNvdW50cnlTZWFyY2hUZXh0TG93ZXIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQuaW5kZXhPZihTZWFyY2hDb3VudHJ5RmllbGQuTmFtZSkgPiAtMSkge1xyXG4gICAgICAgICAgaWYgKGMubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY291bnRyeVNlYXJjaFRleHRMb3dlcikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENvdW50cnlGaWVsZC5pbmRleE9mKFNlYXJjaENvdW50cnlGaWVsZC5EaWFsQ29kZSkgPiAtMSkge1xyXG4gICAgICAgICAgaWYgKGMuZGlhbENvZGUuc3RhcnRzV2l0aCh0aGlzLmNvdW50cnlTZWFyY2hUZXh0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChjb3VudHJ5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZWwgPSB0aGlzLmNvdW50cnlMaXN0Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAnIycgKyBjb3VudHJ5WzBdLmh0bWxJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZWwpIHtcclxuICAgICAgICBlbC5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXHJcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxyXG4gICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QaG9uZU51bWJlckNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGxldCBjb3VudHJ5Q29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSB1c2VyIHNldHMgdGhlIHZhbHVlIHByb2dyYW1hdGljYWxseSBiYXNlZCBvbiBhIHBlcnNpc3RlZCBDaGFuZ2VEYXRhIG9iai5cclxuICAgIGlmICh0aGlzLnBob25lTnVtYmVyICYmIHR5cGVvZiB0aGlzLnBob25lTnVtYmVyID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBjb25zdCBudW1iZXJPYmo6IENoYW5nZURhdGEgPSB0aGlzLnBob25lTnVtYmVyO1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gbnVtYmVyT2JqLm51bWJlcjtcclxuICAgICAgY291bnRyeUNvZGUgPSBudW1iZXJPYmouY291bnRyeUNvZGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICBjb3VudHJ5Q29kZSA9IGNvdW50cnlDb2RlIHx8IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzI7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLmdldFBhcnNlZE51bWJlcih0aGlzLnBob25lTnVtYmVyLCBjb3VudHJ5Q29kZSk7XHJcblxyXG4gICAgLy8gYXV0byBzZWxlY3QgY291bnRyeSBiYXNlZCBvbiB0aGUgZXh0ZW5zaW9uIChhbmQgYXJlYUNvZGUgaWYgbmVlZGVkKSAoZS5nIHNlbGVjdCBDYW5hZGEgaWYgbnVtYmVyIHN0YXJ0cyB3aXRoICsxIDQxNilcclxuICAgIGlmICh0aGlzLmVuYWJsZUF1dG9Db3VudHJ5U2VsZWN0KSB7XHJcbiAgICAgIGNvdW50cnlDb2RlID1cclxuICAgICAgICBudW1iZXIgJiYgbnVtYmVyLmdldENvdW50cnlDb2RlKClcclxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgID8gdGhpcy5nZXRDb3VudHJ5SXNvQ29kZShudW1iZXIuZ2V0Q291bnRyeUNvZGUoKSwgbnVtYmVyKVxyXG4gICAgICAgICAgOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yO1xyXG4gICAgICBpZiAoY291bnRyeUNvZGUgJiYgY291bnRyeUNvZGUgIT09IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIpIHtcclxuICAgICAgICBjb25zdCBuZXdDb3VudHJ5ID0gdGhpcy5hbGxDb3VudHJpZXNcclxuICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLnByaW9yaXR5IC0gYi5wcmlvcml0eTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZmluZCgoYykgPT4gYy5pc28yID09PSBjb3VudHJ5Q29kZSk7XHJcbiAgICAgICAgaWYgKG5ld0NvdW50cnkpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbmV3Q291bnRyeTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvdW50cnlDb2RlID0gY291bnRyeUNvZGUgPyBjb3VudHJ5Q29kZSA6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzI7XHJcblxyXG4gICAgdGhpcy5jaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpO1xyXG5cclxuICAgIGlmICghdGhpcy52YWx1ZSB8fCAodGhpcy5hdXRvTWFzayAmJiB0aGlzLmlubmVyTWFza1ByZWZpeCA9PT0gdGhpcy52YWx1ZSkpIHtcclxuICAgICAgLy8gUmVhc29uOiBhdm9pZCBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTQzNTgxMzMvMTYxNzU5MFxyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW51bGwta2V5d29yZFxyXG5cclxuICAgICAgdGhpcy52YWx1ZSA9ICcnXHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcbiAgICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQobnVsbClcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbnRsTm8gPSBudW1iZXJcclxuICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMKVxyXG4gICAgICAgIDogJyc7XHJcblxyXG4gICAgICAvLyBwYXJzZSBwaG9uZU51bWJlciBpZiBzZXBhcmF0ZSBkaWFsIGNvZGUgaXMgbmVlZGVkXHJcbiAgICAgIGlmICh0aGlzLnNlcGFyYXRlRGlhbENvZGUgJiYgaW50bE5vKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmVtb3ZlRGlhbENvZGUoaW50bE5vKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSlcclxuICAgICAgY29uc3QgZW1pdFZhbHVlID0ge1xyXG4gICAgICAgIG51bWJlcjogdGhpcy52YWx1ZSxcclxuICAgICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyOiBpbnRsTm8sXHJcbiAgICAgICAgbmF0aW9uYWxOdW1iZXI6IG51bWJlclxyXG4gICAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUwpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGUxNjROdW1iZXI6IG51bWJlclxyXG4gICAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuRTE2NClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgY291bnRyeUNvZGU6IGNvdW50cnlDb2RlLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgZGlhbENvZGU6ICcrJyArIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlLFxyXG4gICAgICAgIHVuRm9ybWF0TnVtYmVyOiB0aGlzLmZvcm1hdFZhbHVlKHRoaXMudmFsdWUpXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChlbWl0VmFsdWUpXHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGVtaXRWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Db3VudHJ5U2VsZWN0KGNvdW50cnk6IENvdW50cnksIGVsOiB7IGZvY3VzOiAoKSA9PiB2b2lkOyB9KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b01hc2spIHtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZENvdW50cnkoKHtcclxuICAgICAgICBhcmVhQ29kZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICBkaWFsQ29kZTogJycsXHJcbiAgICAgICAgaHRtbElkOiAnJyxcclxuICAgICAgICBmbGFnQ2xhc3M6ICcnLFxyXG4gICAgICAgIGlzbzI6ICcnLFxyXG4gICAgICAgIG5hbWU6ICcnLFxyXG4gICAgICAgIHBsYWNlSG9sZGVyOiAnJyxcclxuICAgICAgICBwcmlvcml0eTogMCxcclxuICAgICAgfSkpXHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJ1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRDb3VudHJ5KGNvdW50cnkpO1xyXG5cclxuICAgIHRoaXMuY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5waG9uZU51bWJlciAmJiB0aGlzLnBob25lTnVtYmVyLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICAgIGNvbnN0IG51bWJlciA9IHRoaXMuZ2V0UGFyc2VkTnVtYmVyKFxyXG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIsXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMlxyXG4gICAgICApO1xyXG4gICAgICBjb25zdCBpbnRsTm8gPSBudW1iZXJcclxuICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5JTlRFUk5BVElPTkFMKVxyXG4gICAgICAgIDogJyc7XHJcbiAgICAgIC8vIHBhcnNlIHBob25lTnVtYmVyIGlmIHNlcGFyYXRlIGRpYWwgY29kZSBpcyBuZWVkZWRcclxuICAgICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSAmJiBpbnRsTm8pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5yZW1vdmVEaWFsQ29kZShpbnRsTm8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBlbWl0VmFsdWUgPSB7XHJcbiAgICAgICAgbnVtYmVyOiB0aGlzLnZhbHVlLFxyXG4gICAgICAgIGludGVybmF0aW9uYWxOdW1iZXI6IGludGxObyxcclxuICAgICAgICBuYXRpb25hbE51bWJlcjogbnVtYmVyXHJcbiAgICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5OQVRJT05BTClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgZTE2NE51bWJlcjogbnVtYmVyXHJcbiAgICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5FMTY0KVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgIGRpYWxDb2RlOiAnKycgKyB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgICB1bkZvcm1hdE51bWJlcjogdGhpcy5mb3JtYXRWYWx1ZSh0aGlzLnZhbHVlKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KGVtaXRWYWx1ZSlcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogZW1pdFZhbHVlLCBpZDogdGhpcy51dWlkfSlcclxuXHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSgnJyk7XHJcblxyXG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KG51bGwpXHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IG51bGwsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgfVxyXG4gICAgdGhpcy5fdXBkYXRlTWFzaygpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JbnB1dEtleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBhbGxvd2VkQ2hhcnMgPSAvWzAtOVxcK1xcLVxcKFxcKVxcIF0vO1xyXG4gICAgY29uc3QgYWxsb3dlZEN0cmxDaGFycyA9IC9bYXhjdl0vO1xyXG4gICAgY29uc3QgYWxsb3dlZE90aGVyS2V5cyA9IFtcclxuICAgICAgJ0Fycm93TGVmdCcsXHJcbiAgICAgICdBcnJvd1VwJyxcclxuICAgICAgJ0Fycm93UmlnaHQnLFxyXG4gICAgICAnQXJyb3dEb3duJyxcclxuICAgICAgJ0hvbWUnLFxyXG4gICAgICAnRW5kJyxcclxuICAgICAgJ0luc2VydCcsXHJcbiAgICAgICdEZWxldGUnLFxyXG4gICAgICAnQmFja3NwYWNlJyxcclxuICAgIF07XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhYWxsb3dlZENoYXJzLnRlc3QoZXZlbnQua2V5KSAmJlxyXG4gICAgICAhKGV2ZW50LmN0cmxLZXkgJiYgYWxsb3dlZEN0cmxDaGFycy50ZXN0KGV2ZW50LmtleSkpICYmXHJcbiAgICAgICFhbGxvd2VkT3RoZXJLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSlcclxuICAgICkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAob2JqID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBob25lTnVtYmVyID0gb2JqO1xyXG4gIH1cclxuXHJcbiAgcmVzb2x2ZVBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGlmICh0aGlzLmN1c3RvbVBsYWNlaG9sZGVyKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5jdXN0b21QbGFjZWhvbGRlcjtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZENvdW50cnkucGxhY2VIb2xkZXIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5wbGFjZUhvbGRlcjtcclxuICAgICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSkge1xyXG4gICAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5yZW1vdmVEaWFsQ29kZShwbGFjZWhvbGRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcclxuICB9XHJcblxyXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBwYXJzZSBQaG9uZU51bWJlciBvYmplY3QuXHJcbiAgICogQHBhcmFtIHBob25lTnVtYmVyIHN0cmluZ1xyXG4gICAqIEBwYXJhbSBjb3VudHJ5Q29kZSBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGdldFBhcnNlZE51bWJlcihcclxuICAgIHBob25lTnVtYmVyOiBzdHJpbmcsXHJcbiAgICBjb3VudHJ5Q29kZTogc3RyaW5nXHJcbiAgKTogbHBuLlBob25lTnVtYmVyIHtcclxuICAgIGxldCBudW1iZXI6IGxwbi5QaG9uZU51bWJlcjtcclxuICAgIHRyeSB7XHJcbiAgICAgIG51bWJlciA9IHRoaXMucGhvbmVVdGlsLnBhcnNlKHBob25lTnVtYmVyLCBjb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgIH1cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHJldHVybiBudW1iZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGp1c3RzIGlucHV0IGFsaWdubWVudCBiYXNlZCBvbiB0aGUgZGlhbCBjb2RlIHByZXNlbnRhdGlvbiBzdHlsZS5cclxuICAgKi9cclxuICBwcml2YXRlIGNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSAmJiB0aGlzLnNlbGVjdGVkQ291bnRyeSkge1xyXG4gICAgICBjb25zdCBjbnRyeUNkID0gdGhpcy5zZWxlY3RlZENvdW50cnkuZGlhbENvZGU7XHJcbiAgICAgIHRoaXMuc2VwYXJhdGVEaWFsQ29kZUNsYXNzID1cclxuICAgICAgICAnc2VwYXJhdGUtZGlhbC1jb2RlIGl0aS1zZGMtJyArIChjbnRyeUNkLmxlbmd0aCArIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXBhcmF0ZURpYWxDb2RlQ2xhc3MgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFucyBkaWFsY29kZSBmcm9tIHBob25lIG51bWJlciBzdHJpbmcuXHJcbiAgICogQHBhcmFtIHBob25lTnVtYmVyIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlRGlhbENvZGUocGhvbmVOdW1iZXI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLmdldFBhcnNlZE51bWJlcihwaG9uZU51bWJlciwgdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMik7XHJcbiAgICBwaG9uZU51bWJlciA9IHRoaXMucGhvbmVVdGlsLmZvcm1hdChcclxuICAgICAgbnVtYmVyLFxyXG4gICAgICBscG4uUGhvbmVOdW1iZXJGb3JtYXRbdGhpcy5udW1iZXJGb3JtYXRdXHJcbiAgICApO1xyXG4gICAgaWYgKHBob25lTnVtYmVyLnN0YXJ0c1dpdGgoJysnKSAmJiB0aGlzLnNlcGFyYXRlRGlhbENvZGUpIHtcclxuICAgICAgcGhvbmVOdW1iZXIgPSBwaG9uZU51bWJlci5zdWJzdHIocGhvbmVOdW1iZXIuaW5kZXhPZignICcpICsgMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGhvbmVOdW1iZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaWZ0cyB0aHJvdWdoIGFsbCBjb3VudHJpZXMgYW5kIHJldHVybnMgaXNvIGNvZGUgb2YgdGhlIHByaW1hcnkgY291bnRyeVxyXG4gICAqIGJhc2VkIG9uIHRoZSBudW1iZXIgcHJvdmlkZWQuXHJcbiAgICogQHBhcmFtIGNvdW50cnlDb2RlIGNvdW50cnkgY29kZSBpbiBudW1iZXIgZm9ybWF0XHJcbiAgICogQHBhcmFtIG51bWJlciBQaG9uZU51bWJlciBvYmplY3RcclxuICAgKi9cclxuICBwcml2YXRlIGdldENvdW50cnlJc29Db2RlKFxyXG4gICAgY291bnRyeUNvZGU6IG51bWJlcixcclxuICAgIG51bWJlcjogbHBuLlBob25lTnVtYmVyXHJcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIFdpbGwgdXNlIHRoaXMgdG8gbWF0Y2ggYXJlYSBjb2RlIGZyb20gdGhlIGZpcnN0IG51bWJlcnNcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IHJhd051bWJlciA9IG51bWJlclsndmFsdWVzXyddWycyJ10udG9TdHJpbmcoKTtcclxuICAgIC8vIExpc3Qgb2YgYWxsIGNvdW50cmllcyB3aXRoIGNvdW50cnlDb2RlIChjYW4gYmUgbW9yZSB0aGFuIG9uZS4gZS54LiBVUywgQ0EsIERPLCBQUiBhbGwgaGF2ZSArMSBjb3VudHJ5Q29kZSlcclxuICAgIGNvbnN0IGNvdW50cmllcyA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbHRlcihcclxuICAgICAgKGMpID0+IGMuZGlhbENvZGUgPT09IGNvdW50cnlDb2RlLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICAvLyBNYWluIGNvdW50cnkgaXMgdGhlIGNvdW50cnksIHdoaWNoIGhhcyBubyBhcmVhQ29kZXMgc3BlY2lmaWVkIGluIGNvdW50cnktY29kZS50cyBmaWxlLlxyXG4gICAgY29uc3QgbWFpbkNvdW50cnkgPSBjb3VudHJpZXMuZmluZCgoYykgPT4gYy5hcmVhQ29kZXMgPT09IHVuZGVmaW5lZCk7XHJcbiAgICAvLyBTZWNvbmRhcnkgY291bnRyaWVzIGFyZSBhbGwgY291bnRyaWVzLCB3aGljaCBoYXZlIGFyZWFDb2RlcyBzcGVjaWZpZWQgaW4gY291bnRyeS1jb2RlLnRzIGZpbGUuXHJcbiAgICBjb25zdCBzZWNvbmRhcnlDb3VudHJpZXMgPSBjb3VudHJpZXMuZmlsdGVyKFxyXG4gICAgICAoYykgPT4gYy5hcmVhQ29kZXMgIT09IHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICAgIGxldCBtYXRjaGVkQ291bnRyeSA9IG1haW5Db3VudHJ5ID8gbWFpbkNvdW50cnkuaXNvMiA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKlxyXG4gICAgICBJdGVyYXRlIG92ZXIgZWFjaCBzZWNvbmRhcnkgY291bnRyeSBhbmQgY2hlY2sgaWYgbmF0aW9uYWxOdW1iZXIgc3RhcnRzIHdpdGggYW55IG9mIGFyZWFDb2RlcyBhdmFpbGFibGUuXHJcbiAgICAgIElmIG5vIG1hdGNoZXMgZm91bmQsIGZhbGxiYWNrIHRvIHRoZSBtYWluIGNvdW50cnkuXHJcbiAgICAqL1xyXG4gICAgc2Vjb25kYXJ5Q291bnRyaWVzLmZvckVhY2goKGNvdW50cnkpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb3VudHJ5LmFyZWFDb2Rlcy5mb3JFYWNoKChhcmVhQ29kZSkgPT4ge1xyXG4gICAgICAgIGlmIChyYXdOdW1iZXIuc3RhcnRzV2l0aChhcmVhQ29kZSkpIHtcclxuICAgICAgICAgIG1hdGNoZWRDb3VudHJ5ID0gY291bnRyeS5pc28yO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlZENvdW50cnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIGZvcm1hdHRlZCBleGFtcGxlIHBob25lIG51bWJlciBmcm9tIHBob25lVXRpbC5cclxuICAgKiBAcGFyYW0gY291bnRyeUNvZGUgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGdldFBob25lTnVtYmVyUGxhY2VIb2xkZXIoY291bnRyeUNvZGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5waG9uZVV0aWwuZm9ybWF0KFxyXG4gICAgICAgIHRoaXMucGhvbmVVdGlsLmdldEV4YW1wbGVOdW1iZXIoY291bnRyeUNvZGUpLFxyXG4gICAgICAgIGxwbi5QaG9uZU51bWJlckZvcm1hdFt0aGlzLm51bWJlckZvcm1hdF1cclxuICAgICAgKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRQaG9uZU51bWJlck1hc2soY291bnRyeUNvZGU6IHN0cmluZyk6IE1hc2tJIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiBNYXNrQ29kZVtjb3VudHJ5Q29kZV1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICByZXR1cm4gZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyaW5nIHRoZSBsaXN0IHRvIGF2b2lkIGR1cGxpY2F0ZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjYXQxMjM0NS9uZ3gtaW50bC10ZWwtaW5wdXQvaXNzdWVzLzI0OClcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZmV0Y2hDb3VudHJ5RGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxsQ291bnRyaWVzID0gW107XHJcblxyXG4gICAgdGhpcy5jb3VudHJ5Q29kZURhdGEuYWxsQ291bnRyaWVzLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgY29uc3QgY291bnRyeTogQ291bnRyeSA9IHtcclxuICAgICAgICBuYW1lOiBjWzBdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgaXNvMjogY1sxXS50b1N0cmluZygpLFxyXG4gICAgICAgIGRpYWxDb2RlOiBjWzJdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgcHJpb3JpdHk6ICtjWzNdIHx8IDAsXHJcbiAgICAgICAgYXJlYUNvZGVzOiAoY1s0XSBhcyBzdHJpbmdbXSkgfHwgdW5kZWZpbmVkLFxyXG4gICAgICAgIGh0bWxJZDogYGl0aS0wX19pdGVtLSR7Y1sxXS50b1N0cmluZygpfWAsXHJcbiAgICAgICAgZmxhZ0NsYXNzOiBgaXRpX18ke2NbMV0udG9TdHJpbmcoKS50b0xvY2FsZUxvd2VyQ2FzZSgpfWAsXHJcbiAgICAgICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKHRoaXMuZW5hYmxlUGxhY2Vob2xkZXIpIHtcclxuICAgICAgICBjb3VudHJ5LnBsYWNlSG9sZGVyID0gdGhpcy5nZXRQaG9uZU51bWJlclBsYWNlSG9sZGVyKFxyXG4gICAgICAgICAgY291bnRyeS5pc28yLnRvVXBwZXJDYXNlKClcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICAgIGNvdW50cnkubWFzayA9IHRoaXMuZ2V0UGhvbmVOdW1iZXJNYXNrKGNvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFsbENvdW50cmllcy5wdXNoKGNvdW50cnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3B1bGF0ZXMgcHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93biB3aXRoIHByZWZmZXJyZWQgY291bnRyaWVzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlUHJlZmVycmVkQ291bnRyaWVzKCkge1xyXG4gICAgaWYgKHRoaXMucHJlZmVycmVkQ291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24gPSBbXTtcclxuICAgICAgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMuZm9yRWFjaCgoaXNvMikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByZWZlcnJlZENvdW50cnkgPSB0aGlzLmFsbENvdW50cmllcy5maWx0ZXIoKGMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBjLmlzbzIgPT09IGlzbzI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bi5wdXNoKHByZWZlcnJlZENvdW50cnlbMF0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgc2VsZWN0ZWRDb3VudHJ5LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRDb3VudHJ5KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5SVNPKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSB0aGlzLmFsbENvdW50cmllcy5maW5kKChjKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGMuaXNvMi50b0xvd2VyQ2FzZSgpID09PSB0aGlzLnNlbGVjdGVkQ291bnRyeUlTTy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5KSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGhvbmVOdW1iZXIpIHtcclxuICAgICAgICAgIHRoaXMub25QaG9uZU51bWJlckNoYW5nZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSgnJyk7XHJcbiAgICAgICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KG51bGwpXHJcbiAgICAgICAgICAvLyB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBudWxsLCBpZDogdGhpcy51dWlkfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZVwiIFtjbGFzc109XCJnZXRDbGFzc2VzXCIgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fd3JhcHBlclwiIFtuZ0NsYXNzXT1cInNlcGFyYXRlRGlhbENvZGVDbGFzc1wiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgICNwaG9uZUlucHV0XHJcbiAgICAgIHR5cGU9XCJ0ZWxcIlxyXG4gICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJvblBob25lTnVtYmVyQ2hhbmdlKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJjc3NDbGFzc1wiXHJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiJ29mZidcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZVBsYWNlaG9sZGVyKClcIlxyXG4gICAgICBbYXR0ci5tYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgW2F0dHIudmFsaWRhdGlvbl09XCJwaG9uZVZhbGlkYXRpb25cIlxyXG4gICAgICBbbWFza109XCJpbm5lck1hc2sgfHwgbWFza1wiXHJcbiAgICAgIFtwcmVmaXhdPVwiaW5uZXJNYXNrUHJlZml4IHx8IG1hc2tQcmVmaXhcIlxyXG4gICAgICBbc2hvd01hc2tUeXBlZF09XCJzaG93TWFza1R5cGVkXCJcclxuICAgICAgW2Ryb3BTcGVjaWFsQ2hhcmFjdGVyc109XCJhdXRvTWFzayA/IGZhbHNlIDogbWFza0Ryb3BTcGVjaWFsQ2hhcmFjdGVyc1wiXHJcbiAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcclxuICAgICAgKGtleXByZXNzKT1cIm9uSW5wdXRLZXlQcmVzcygkZXZlbnQpXCJcclxuICAgICAgI2ZvY3VzYWJsZVxyXG4gICAgPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZy1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogZGlzYWJsZWR9XCI+XHJcbiAgICAgIDxtcngtZHJvcGRvd24gY3VzdG9tQ2xhc3Nlcz1cImgtMTAwXCIgW21haW5QbGFjZW1lbnRdPVwiJ2JvdHRvbS1zdGFydCdcIiBbZmFsbGJhY2tQbGFjZW1lbnRzXT1cIlsndG9wLXN0YXJ0J11cIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fc2VsZWN0ZWQtZmxhZyBkcm9wZG93bi10b2dnbGVcIj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZENvdW50cnkuZmxhZ0NsYXNzIHx8ICcnXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VwYXJhdGVEaWFsQ29kZVwiIGNsYXNzPVwic2VsZWN0ZWQtZGlhbC1jb2RlXCI+K3t7c2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fYXJyb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1kb3duXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIiAqbmdJZj1cInNlYXJjaENvdW50cnlGbGFnICYmIHNlYXJjaENvdW50cnlGaWVsZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJjb3VudHJ5LXNlYXJjaC1ib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb3VudHJ5U2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwic2VhcmNoQ291bnRyeSgpXCJcclxuICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaENvdW50cnlQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICBhdXRvZm9jdXM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbGlzdFwiICNjb3VudHJ5TGlzdD5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5IGl0aV9fcHJlZmVycmVkXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIHByZWZlcnJlZENvdW50cmllc0luRHJvcERvd25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ291bnRyeVNlbGVjdChjb3VudHJ5LCBmb2N1c2FibGUpXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJjb3VudHJ5Lmh0bWxJZCsnLXByZWZlcnJlZCdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvdW50cnkuZmxhZ0NsYXNzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbmFtZVwiPnt7Y291bnRyeS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2RpYWwtY29kZVwiPit7e2NvdW50cnkuZGlhbENvZGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZGl2aWRlclwiICpuZ0lmPVwicHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bj8ubGVuZ3RoXCI+PC9saT5cclxuXHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fY291bnRyeSBpdGlfX3N0YW5kYXJkXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb3VudHJ5IG9mIGFsbENvdW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Db3VudHJ5U2VsZWN0KGNvdW50cnksIGZvY3VzYWJsZSlcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImNvdW50cnkuaHRtbElkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWdcIiBbbmdDbGFzc109XCJjb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5LW5hbWVcIj57e2NvdW50cnkubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19kaWFsLWNvZGVcIj4re3tjb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21yeC1kcm9wZG93bj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAgICpuZ0lmPVwiKCFpc1ZhbGlkIHx8IGludmFsaWQpICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuICA+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -253,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
253
253
|
}], searched: [{
|
|
254
254
|
type: Output
|
|
255
255
|
}] } });
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LXNlbGVjdC9pbnB1dC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQWlCN0IsTUFBTSxPQUFPLG9CQUFvQjtJQUV4QixnQkFBZ0IsQ0FBVTtJQUMxQixNQUFNLEdBQTBCLEVBQUUsQ0FBQztJQUUxQyxhQUFhO0lBQ04sSUFBSSxHQUFXLE1BQU0sRUFBRSxDQUFBO0lBQ2QsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUVyQixJQUFJLEdBQXlCLE9BQU8sQ0FBQztJQUVyQyxRQUFRLENBQWtCO0lBQzFCLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDMUIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lB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dGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBZGRUYWdGbiB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0L2xpYi9uZy1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXRTZWxlY3RTaXplRW51bSxcclxuICBJbnB1dFNlbGVjdFNpemVUeXBlcyxcclxuICBJbnB1dFNlbGVjdFZhbHVlVHlwZXMsXHJcbiAgSW5wdXRTZWxlY3RWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vaW5wdXQtc2VsZWN0LmVudW0nO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgRHJvcGRvd25Qb3NpdGlvbiB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0L2xpYi9uZy1zZWxlY3QudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0U2VsZWN0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbntcclxuICBwdWJsaWMgbWF4U2VsZWN0ZWRJdGVtcyE6IG51bWJlcjtcclxuICBwdWJsaWMgX3ZhbHVlOiBJbnB1dFNlbGVjdFZhbHVlVHlwZXMgPSBbXTtcclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0U2VsZWN0U2l6ZVR5cGVzID0gJ2xhcmdlJztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkITogb2JqZWN0IHwgYW55W107XHJcbiAgQElucHV0KCkgcHVibGljIGJpbmRWYWx1ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBiaW5kTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB3cmFwcGVyQ3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGFkZFRhZzogYm9vbGVhbiB8IEFkZFRhZ0ZuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNsZWFyYWJsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEJ5OiBzdHJpbmcgfCAoKHZhbHVlOiBhbnkpID0+IGFueSkgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZW1wdHlWYWx1ZTogYW55O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHRyYWNrQnlGbjogYW55O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5VmFsdWUhOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWRGcm9tRGlzcGxheSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVNlYXJjaEZuPzogKHRlcm06IHN0cmluZywgaXRlbTogYW55KSA9PiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgaXNCb3R0b21MYWJlbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2ggPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0VtcHR5RmllbGRzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIHNlYXJjaGFibGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgbm90Rm91bmRUZXh0ID0gJ9Cd0LUg0L3QsNC50LTQtdC90L4nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlDb2xsYXBzZUNvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogRHJvcGRvd25Qb3NpdGlvbiAgPSAnYXV0byc7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIExBQkVMXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsUmVxdWlyZWRIaWRkZW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxFeHRyYUNsYXNzOiBvYmplY3QgfCBzdHJpbmcgPSAnJztcclxuXHJcbiAgLy8gVE9PTFRJUFxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBIaWRkZW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgLy8gUkVGU1xyXG4gIEBDb250ZW50Q2hpbGQoJ3NlbGVjdE9wdGlvbnNUZW1wbGF0ZScpIHNlbGVjdE9wdGlvbnNUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHtpdGVtOiBhbnksIGNsZWFyOiBhbnl9PjtcclxuICBAQ29udGVudENoaWxkKCdsYWJlbFRlbXBsYXRlJykgbGFiZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHtpdGVtOiBhbnksIGNsZWFyOiBhbnl9PjtcclxuICBAQ29udGVudENoaWxkKCd0YWdUZW1wbGF0ZScpIHRhZ1RlbXBsYXRlITogVGVtcGxhdGVSZWY8e2l0ZW1zOiBhbnl9PjtcclxuICBAQ29udGVudENoaWxkKCdtdWx0aUxhYmVsVGVtcGxhdGUnKSBtdWx0aUxhYmVsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjx7aXRlbXM6IGFueSwgY2xlYXI6IGFueX0+O1xyXG5cclxuICBASW5wdXQoJ21heFNlbGVjdGVkSXRlbXMnKVxyXG4gIHNldCBzZXRNYXhTZWxlY3RlZEl0ZW1zKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMubWF4U2VsZWN0ZWRJdGVtcyA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5wdXRTZWxlY3RWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRTZWxlY3RWYWx1ZVR5cGVzPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dFNlbGVjdFZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRTZWxlY3RWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHNlYXJjaGVkOiBFdmVudEVtaXR0ZXI8eyB0ZXJtOiBzdHJpbmc7IGl0ZW1zOiBhbnlbXSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0ZXJtOiBzdHJpbmc7IGl0ZW1zOiBhbnlbXSB9PigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWZXJpZmllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhKFxyXG4gICAgICB0aGlzLnZhbHVlID09PSBudWxsIHx8XHJcbiAgICAgIHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICB0aGlzLnZhbHVlID09PSB0aGlzLmVtcHR5VmFsdWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsdWU6IElucHV0U2VsZWN0VmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlPy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGludmFsaWRNZXNzYWdlQXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmludmFsaWRNZXNzYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gQXJyYXkodGhpcy5pbnZhbGlkTWVzc2FnZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnZhbGlkTWVzc2FnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9ICR7SW5wdXRTZWxlY3RTaXplRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY2hlY2tMb2FkaW5nfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrTG9hZGluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGluZyA/ICdtcngtaW5wdXQtbG9hZGluZycgOiAnJztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkNoYW5nZSh2YWw6IGFueSk6IHZvaWQge31cclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IElucHV0U2VsZWN0VmFsdWVUeXBlcyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVNlYXJjaChldmVudDogeyB0ZXJtOiBzdHJpbmc7IGl0ZW1zOiBhbnlbXSB9KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaGVkLmVtaXQoeyB0ZXJtOiBldmVudC50ZXJtLCBpdGVtczogZXZlbnQuaXRlbXN9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXNlbGVjdFwiIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiaW52YWxpZFwiIFtjbGFzc109XCJ3cmFwcGVyQ3VzdG9tQ2xhc3Nlc1wiPlxyXG4gIDxkaXYgW2NsYXNzLmlucHV0Ym94LWVycm9yXT1cInNob3dFbXB0eUZpZWxkcyAmJiByZXF1aXJlZCAmJiAhaXNWZXJpZmllZFwiXHJcbiAgICAgICBbY2xhc3MuaW5wdXRib3gtc3VjY2Vzc109XCJzaG93RW1wdHlGaWVsZHMgJiYgcmVxdWlyZWQgJiYgaXNWZXJpZmllZFwiPlxyXG5cclxuICAgIDxuZy1zZWxlY3RcclxuICAgICAgW2l0ZW1zXT1cIml0ZW1zXCJcclxuICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICBbYWRkVGFnXT1cImFkZFRhZ1wiXHJcbiAgICAgIFtiaW5kVmFsdWVdPVwiYmluZFZhbHVlXCJcclxuICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWxcIlxyXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gICAgICBbbWF4U2VsZWN0ZWRJdGVtc109XCJtYXhTZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgW2dyb3VwQnldPVwiZ3JvdXBCeSA/IGdyb3VwQnkgOiAnJ1wiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFt0cmFja0J5Rm5dPVwidHJhY2tCeUZuXCJcclxuICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXHJcbiAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXHJcbiAgICAgIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICAgICAgW3NlYXJjaGFibGVdPVwic2VhcmNoYWJsZVwiXHJcbiAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImNsb3NlT25TZWxlY3RcIlxyXG4gICAgICBbc2VhcmNoRm5dPVwiY3VzdG9tU2VhcmNoRm5cIlxyXG4gICAgICBbbm90Rm91bmRUZXh0XT1cIm5vdEZvdW5kVGV4dFwiXHJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoLnRvU3RyaW5nKCkgfHwgJ25vbmUnXCJcclxuICAgICAgW2Ryb3Bkb3duUG9zaXRpb25dPVwiZHJvcGRvd25Qb3NpdGlvblwiXHJcbiAgICAgIGNsZWFyQWxsVGV4dD1cItCe0YfQuNGB0YLQuNGC0YxcIlxyXG4gICAgICBhZGRUYWdUZXh0PVwi0JTQvtCx0LDQstC40YLRjFwiXHJcbiAgICAgIGxvYWRpbmdUZXh0PVwi0JfQsNCz0YDRg9C30LrQsC4uLlwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoKT1cInVwZGF0ZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiAqbmdJZj1cImRpc2FibGVkICYmIGRpc2FibGVkRnJvbURpc3BsYXlcIj5cclxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfX1cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNsZWFyPVwiY2xlYXJcIiAqbmdJZj1cInNlbGVjdE9wdGlvbnNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RPcHRpb25zVGVtcGxhdGU7IGNvbnRleHQ6e2l0ZW06IGl0ZW0sIGNsZWFyOiBjbGVhcn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwibGFiZWxUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlOyBjb250ZXh0OntpdGVtOiBpdGVtLCBjbGVhcjogY2xlYXJ9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy10YWctdG1wIGxldC1pdGVtcz1cIml0ZW1zXCIgKm5nSWY9XCJ0YWdUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWdUZW1wbGF0ZTsgY29udGV4dDp7aXRlbXM6IGl0ZW1zfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctbG9hZGluZ3RleHQtdG1wPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZy1vcHRpb24gZGlzYWJsZWRcIj57eyBsb2FkTGFiZWwgfHwgJ9CX0LDQs9GA0YPQt9C60LAnIH19PC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwibXVsdGlMYWJlbFRlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm11bHRpTGFiZWxUZW1wbGF0ZTsgY29udGV4dDp7aXRlbXM6IGl0ZW1zLCBjbGVhcjogY2xlYXJ9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwibXVsdGlDb2xsYXBzZUNvdW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlLmxlbmd0aCA8IG11bHRpQ29sbGFwc2VDb3VudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7IGl0ZW1bJ2xhYmVsJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtaWNvbiByaWdodFwiIChjbGljayk9XCJjbGVhcihpdGVtKVwiPsOXPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInZhbHVlLmxlbmd0aCA+PSBtdWx0aUNvbGxhcHNlQ291bnRcIiBjbGFzcz1cIm5nLXN1bW1hcnktbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlIG5nLXZhbHVlLWVtcHR5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj7QktGL0LHRgNCw0L3Qvjoge3sgdmFsdWUubGVuZ3RoIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgICAgPG1yeC1sb2FkZXJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntkaXNwbGF5OiAnZmxleCd9XCJcclxuICAgICAgICAgIFtjb2xvcl09XCInYnJhbmQnXCIgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgIGN1c3RvbUNsYXNzZXM9XCJhbGlnbi1zZWxmLWNlbnRlciBtci0yXCJcclxuICAgICAgICA+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1zZWxlY3Q+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCJpbnZhbGlkICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuICA+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LXNlbGVjdC9pbnB1dC1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQWlCN0IsTUFBTSxPQUFPLG9CQUFvQjtJQUV4QixnQkFBZ0IsQ0FBVTtJQUMxQixNQUFNLEdBQTBCLEVBQUUsQ0FBQztJQUUxQyxhQUFhO0lBQ04sSUFBSSxHQUFXLE1BQU0sRUFBRSxDQUFBO0lBQ2QsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUVyQixJQUFJLEdBQXlCLE9BQU8sQ0FBQztJQUVyQyxRQUFRLENBQWtCO0lBQzFCLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ2YsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFDMUIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lB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dGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBZGRUYWdGbiB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0L2xpYi9uZy1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXRTZWxlY3RTaXplRW51bSxcclxuICBJbnB1dFNlbGVjdFNpemVUeXBlcyxcclxuICBJbnB1dFNlbGVjdFZhbHVlVHlwZXMsXHJcbiAgSW5wdXRTZWxlY3RWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vaW5wdXQtc2VsZWN0LmVudW0nO1xyXG5pbXBvcnQgeyBEcm9wZG93blBvc2l0aW9uIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QvbGliL25nLXNlbGVjdC50eXBlcyc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2F2ZS1zdG9yZS9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1zZWxlY3QuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0U2VsZWN0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbntcclxuICBwdWJsaWMgbWF4U2VsZWN0ZWRJdGVtcyE6IG51bWJlcjtcclxuICBwdWJsaWMgX3ZhbHVlOiBJbnB1dFNlbGVjdFZhbHVlVHlwZXMgPSBbXTtcclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0U2VsZWN0U2l6ZVR5cGVzID0gJ2xhcmdlJztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkITogb2JqZWN0IHwgYW55W107XHJcbiAgQElucHV0KCkgcHVibGljIGJpbmRWYWx1ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBiaW5kTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB3cmFwcGVyQ3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGFkZFRhZzogYm9vbGVhbiB8IEFkZFRhZ0ZuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGNsZWFyYWJsZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEJ5OiBzdHJpbmcgfCAoKHZhbHVlOiBhbnkpID0+IGFueSkgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgZW1wdHlWYWx1ZTogYW55O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHRyYWNrQnlGbjogYW55O1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5VmFsdWUhOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWRGcm9tRGlzcGxheSE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aCA9IDA7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbVNlYXJjaEZuPzogKHRlcm06IHN0cmluZywgaXRlbTogYW55KSA9PiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgaXNCb3R0b21MYWJlbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2ggPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0VtcHR5RmllbGRzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIHNlYXJjaGFibGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkTGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgbm90Rm91bmRUZXh0ID0gJ9Cd0LUg0L3QsNC50LTQtdC90L4nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uU2VsZWN0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbXVsdGlDb2xsYXBzZUNvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25Qb3NpdGlvbjogRHJvcGRvd25Qb3NpdGlvbiAgPSAnYXV0byc7XHJcblxyXG4gIC8vIEVSUk9SXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIExBQkVMXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsUmVxdWlyZWRIaWRkZW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxFeHRyYUNsYXNzOiBvYmplY3QgfCBzdHJpbmcgPSAnJztcclxuXHJcbiAgLy8gVE9PTFRJUFxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXBIaWRkZW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuXHJcbiAgLy8gUkVGU1xyXG4gIEBDb250ZW50Q2hpbGQoJ3NlbGVjdE9wdGlvbnNUZW1wbGF0ZScpIHNlbGVjdE9wdGlvbnNUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHtpdGVtOiBhbnksIGNsZWFyOiBhbnl9PjtcclxuICBAQ29udGVudENoaWxkKCdsYWJlbFRlbXBsYXRlJykgbGFiZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPHtpdGVtOiBhbnksIGNsZWFyOiBhbnl9PjtcclxuICBAQ29udGVudENoaWxkKCd0YWdUZW1wbGF0ZScpIHRhZ1RlbXBsYXRlITogVGVtcGxhdGVSZWY8e2l0ZW1zOiBhbnl9PjtcclxuICBAQ29udGVudENoaWxkKCdtdWx0aUxhYmVsVGVtcGxhdGUnKSBtdWx0aUxhYmVsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjx7aXRlbXM6IGFueSwgY2xlYXI6IGFueX0+O1xyXG5cclxuICBASW5wdXQoJ21heFNlbGVjdGVkSXRlbXMnKVxyXG4gIHNldCBzZXRNYXhTZWxlY3RlZEl0ZW1zKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMubWF4U2VsZWN0ZWRJdGVtcyA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SW5wdXRTZWxlY3RWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRTZWxlY3RWYWx1ZVR5cGVzPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dFNlbGVjdFZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRTZWxlY3RWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHNlYXJjaGVkOiBFdmVudEVtaXR0ZXI8eyB0ZXJtOiBzdHJpbmc7IGl0ZW1zOiBhbnlbXSB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0ZXJtOiBzdHJpbmc7IGl0ZW1zOiBhbnlbXSB9PigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWZXJpZmllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhKFxyXG4gICAgICB0aGlzLnZhbHVlID09PSBudWxsIHx8XHJcbiAgICAgIHRoaXMudmFsdWUgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICB0aGlzLnZhbHVlID09PSB0aGlzLmVtcHR5VmFsdWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdmFsdWUodmFsdWU6IElucHV0U2VsZWN0VmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlPy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGludmFsaWRNZXNzYWdlQXJyYXkoKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmludmFsaWRNZXNzYWdlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gQXJyYXkodGhpcy5pbnZhbGlkTWVzc2FnZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbnZhbGlkTWVzc2FnZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9ICR7SW5wdXRTZWxlY3RTaXplRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY2hlY2tMb2FkaW5nfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrTG9hZGluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZGluZyA/ICdtcngtaW5wdXQtbG9hZGluZycgOiAnJztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbkNoYW5nZSh2YWw6IGFueSk6IHZvaWQge31cclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IElucHV0U2VsZWN0VmFsdWVUeXBlcyk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVNlYXJjaChldmVudDogeyB0ZXJtOiBzdHJpbmc7IGl0ZW1zOiBhbnlbXSB9KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaGVkLmVtaXQoeyB0ZXJtOiBldmVudC50ZXJtLCBpdGVtczogZXZlbnQuaXRlbXN9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXNlbGVjdFwiIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiaW52YWxpZFwiIFtjbGFzc109XCJ3cmFwcGVyQ3VzdG9tQ2xhc3Nlc1wiPlxyXG4gIDxkaXYgW2NsYXNzLmlucHV0Ym94LWVycm9yXT1cInNob3dFbXB0eUZpZWxkcyAmJiByZXF1aXJlZCAmJiAhaXNWZXJpZmllZFwiXHJcbiAgICAgICBbY2xhc3MuaW5wdXRib3gtc3VjY2Vzc109XCJzaG93RW1wdHlGaWVsZHMgJiYgcmVxdWlyZWQgJiYgaXNWZXJpZmllZFwiPlxyXG5cclxuICAgIDxuZy1zZWxlY3RcclxuICAgICAgW2l0ZW1zXT1cIml0ZW1zXCJcclxuICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICBbYWRkVGFnXT1cImFkZFRhZ1wiXHJcbiAgICAgIFtiaW5kVmFsdWVdPVwiYmluZFZhbHVlXCJcclxuICAgICAgW2JpbmRMYWJlbF09XCJiaW5kTGFiZWxcIlxyXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxyXG4gICAgICBbbWF4U2VsZWN0ZWRJdGVtc109XCJtYXhTZWxlY3RlZEl0ZW1zXCJcclxuICAgICAgW2dyb3VwQnldPVwiZ3JvdXBCeSA/IGdyb3VwQnkgOiAnJ1wiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFt0cmFja0J5Rm5dPVwidHJhY2tCeUZuXCJcclxuICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwidmlydHVhbFNjcm9sbFwiXHJcbiAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXHJcbiAgICAgIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICAgICAgW3NlYXJjaGFibGVdPVwic2VhcmNoYWJsZVwiXHJcbiAgICAgIFtjbG9zZU9uU2VsZWN0XT1cImNsb3NlT25TZWxlY3RcIlxyXG4gICAgICBbc2VhcmNoRm5dPVwiY3VzdG9tU2VhcmNoRm5cIlxyXG4gICAgICBbbm90Rm91bmRUZXh0XT1cIm5vdEZvdW5kVGV4dFwiXHJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoLnRvU3RyaW5nKCkgfHwgJ25vbmUnXCJcclxuICAgICAgW2Ryb3Bkb3duUG9zaXRpb25dPVwiZHJvcGRvd25Qb3NpdGlvblwiXHJcbiAgICAgIGNsZWFyQWxsVGV4dD1cItCe0YfQuNGB0YLQuNGC0YxcIlxyXG4gICAgICBhZGRUYWdUZXh0PVwi0JTQvtCx0LDQstC40YLRjFwiXHJcbiAgICAgIGxvYWRpbmdUZXh0PVwi0JfQsNCz0YDRg9C30LrQsC4uLlwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCRldmVudClcIlxyXG4gICAgICAoc2VhcmNoKT1cInVwZGF0ZVNlYXJjaCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiAqbmdJZj1cImRpc2FibGVkICYmIGRpc2FibGVkRnJvbURpc3BsYXlcIj5cclxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfX1cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNsZWFyPVwiY2xlYXJcIiAqbmdJZj1cInNlbGVjdE9wdGlvbnNUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RPcHRpb25zVGVtcGxhdGU7IGNvbnRleHQ6e2l0ZW06IGl0ZW0sIGNsZWFyOiBjbGVhcn1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwibGFiZWxUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlOyBjb250ZXh0OntpdGVtOiBpdGVtLCBjbGVhcjogY2xlYXJ9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy10YWctdG1wIGxldC1pdGVtcz1cIml0ZW1zXCIgKm5nSWY9XCJ0YWdUZW1wbGF0ZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWdUZW1wbGF0ZTsgY29udGV4dDp7aXRlbXM6IGl0ZW1zfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbmctbG9hZGluZ3RleHQtdG1wPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuZy1vcHRpb24gZGlzYWJsZWRcIj57eyBsb2FkTGFiZWwgfHwgJ9CX0LDQs9GA0YPQt9C60LAnIH19PC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwibXVsdGlMYWJlbFRlbXBsYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm11bHRpTGFiZWxUZW1wbGF0ZTsgY29udGV4dDp7aXRlbXM6IGl0ZW1zLCBjbGVhcjogY2xlYXJ9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiICpuZ0lmPVwibXVsdGlDb2xsYXBzZUNvdW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhbHVlLmxlbmd0aCA8IG11bHRpQ29sbGFwc2VDb3VudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZy12YWx1ZS1sYWJlbFwiPnt7IGl0ZW1bJ2xhYmVsJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtaWNvbiByaWdodFwiIChjbGljayk9XCJjbGVhcihpdGVtKVwiPsOXPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInZhbHVlLmxlbmd0aCA+PSBtdWx0aUNvbGxhcHNlQ291bnRcIiBjbGFzcz1cIm5nLXN1bW1hcnktbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5nLXZhbHVlIG5nLXZhbHVlLWVtcHR5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmctdmFsdWUtbGFiZWxcIj7QktGL0LHRgNCw0L3Qvjoge3sgdmFsdWUubGVuZ3RoIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+XHJcbiAgICAgICAgPG1yeC1sb2FkZXJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntkaXNwbGF5OiAnZmxleCd9XCJcclxuICAgICAgICAgIFtjb2xvcl09XCInYnJhbmQnXCIgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgIGN1c3RvbUNsYXNzZXM9XCJhbGlnbi1zZWxmLWNlbnRlciBtci0yXCJcclxuICAgICAgICA+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1zZWxlY3Q+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCJpbnZhbGlkICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuICA+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -419,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
419
419
|
}], modelChange: [{
|
|
420
420
|
type: Output
|
|
421
421
|
}] } });
|
|
422
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LXRlbC9pbnB1dC10ZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtdGVsL2lucHV0LXRlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUNoRCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBcUIsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0UsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxpQkFBaUIsRUFBMkMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7QUFnQnBHLE1BQU0sT0FBTyxpQkFBaUI7SUF1RGxCO0lBdERGLE9BQU8sQ0FBUztJQUV4QixhQUFhO0lBQ04sSUFBSSxHQUFXLE1BQU0sRUFBRSxDQUFDO0lBQ2YsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUVyQixRQUFRLEdB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QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUUwQixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVwQixPQUFPO3NCQUFoQixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIExPQ0FMRV9JRCwgSW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGdldEFzWW91VHlwZSwgZ2V0RXhhbXBsZSwgUGFyc2VkUGhvbmVOdW1iZXIgfSBmcm9tICdhd2Vzb21lLXBob25lbnVtYmVyJztcclxuaW1wb3J0IHsgQ291bnRyaWVzSVNPIH0gZnJvbSAnLi9kYXRhL2NvdW50cnktaXNvLmVudW0nO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICcuL2RhdGEvc2VhcmNoLWNvdW50cnktZmllbGQuZW51bSc7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0VHlwZSB9IGZyb20gJy4vZGF0YS9waG9uZS1udW1iZXItZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBDb3VudHJ5LCBJbnB1dFZhbHVlIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS5tb2RlbCc7XHJcbmltcG9ydCB7IGNvdW50cnlEYXRhIH0gZnJvbSAnLi9kYXRhL2FsbC1jb3VudHJpZXMnO1xyXG5pbXBvcnQgeyBkcm9wZG93bk9wZW4sIGRyb3Bkb3duQ2xvc2UsIGZsYWdQbGFjZWhvbGRlciB9IGZyb20gJy4vYXNzZXRzL2Jhc2U2NCc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBJbnB1dFRlbFNpemVzRW51bSwgSW5wdXRUZWxTaXplc1R5cGVzLCBJbnB1dFRlbFZhbHVlV2l0aElkIH0gZnJvbSAnLi9lbnVtcy9pbnB1dC10ZWwuZW51bSc7XHJcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LXRlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXRlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGVsLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFRlbENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRlbENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG4gIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXRUZWxTaXplc1R5cGVzID0gJ2xhcmdlJztcclxuXHJcbiAgQElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogKENvdW50cmllc0lTTylbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG9ubHlDb3VudHJpZXM6IChDb3VudHJpZXNJU08pW10gPSBbXTtcclxuICBASW5wdXQoKSBlbmFibGVBdXRvQ291bnRyeVNlbGVjdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZW5hYmxlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBudW1iZXJGb3JtYXQ6IFBob25lTnVtYmVyRm9ybWF0VHlwZSA9ICdpbnRlcm5hdGlvbmFsJztcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaENvdW50cnlGaWVsZDogU2VhcmNoQ291bnRyeUZpZWxkID0gU2VhcmNoQ291bnRyeUZpZWxkLkFsbDtcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICfQn9C+0LjRgdC6INC/0L4g0YHRgtGA0LDQvdCw0LwnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0Q291bnRyeTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGhvbmVWYWxpZGF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgPSAncGhvbmUnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ291bnRyeUlTTzogQ291bnRyaWVzSVNPIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgc2VwYXJhdGVEaWFsQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9EZWFsQ29kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9DbG9zZURyb3Bkb3duID0gZmFsc2U7XHJcblxyXG4gIC8vIFZBTElEQVRJT05cclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZFBob25lTWVzc2FnZTogc3RyaW5nID0gJ9Cd0LXQutC+0YDRgNC10LrRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1JztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Db21wb25lbnQnKSBkcm9wZG93bkNvbXBvbmVudCE6IERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0VmFsdWU+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dFZhbHVlPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dFRlbFZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRUZWxWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgcHVibGljIGFsbENvdW50cmllczogKENvdW50cnkpW107XHJcbiAgcHVibGljIHNlbGVjdGVkQ291bnRyeTogQ291bnRyeTtcclxuICBwdWJsaWMgc2VhcmNoRmlsdGVyOiBzdHJpbmc7XHJcbiAgcHVibGljIHNjcm9sbFRpbWVvdXQ6IGFueTtcclxuICBwdWJsaWMgcGhvbmVOdW1iZXI6IGFueTtcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBpc0lucHV0VmFsaWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHBhcnNlZFBob25lTnVtYmVyPzogUGFyc2VkUGhvbmVOdW1iZXI7XHJcbiAgcHVibGljIGlubmVySW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbm5lckludmFsaWRNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlOiBzdHJpbmdcclxuICApIHtcclxuICAgIHRoaXMuYWxsQ291bnRyaWVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZ2V0RGVmYXVsdENvdW50cnkoKTtcclxuICAgIHRoaXMuc2VhcmNoRmlsdGVyID0gJyc7XHJcbiAgICB0aGlzLnBob25lTnVtYmVyID0gbnVsbDtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW5wdXRWYWxpZCA9IHRydWU7XHJcbiAgICB0aGlzLl9sb2NhbGUgPSBsb2NhbGU7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlKSB7XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSBvdXRzaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMuZm9ybWF0UGhvbmVOdW1iZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ291bnRyeURhdGEoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdFNlbGVjdGVkQ291bnRyeSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbihwYXJzZWROdW1iZXI6IFBhcnNlZFBob25lTnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDb3VudHJ5KSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cnkgPSB0aGlzLmZpbmRDb3VudHJ5QnlJc28yKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIpO1xyXG5cclxuICAgIGlmIChwYXJzZWROdW1iZXIubnVtYmVyPy5pbnRlcm5hdGlvbmFsIHx8IHBhcnNlZE51bWJlci5udW1iZXI/Lm5hdGlvbmFsKSB7XHJcbiAgICAgIGlmIChwYXJzZWROdW1iZXIubnVtYmVyLmludGVybmF0aW9uYWwpIHtcclxuICAgICAgICBjb25zdCBwaG9uZSA9IHBhcnNlZE51bWJlci5udW1iZXIuaW50ZXJuYXRpb25hbC50cmltKCk7XHJcbiAgICAgICAgY29uc3QgYSA9IHBob25lLnN0YXJ0c1dpdGgoJysnKSA/IHBob25lLnN1YnN0cmluZygxKS50cmltKCkgOiBwaG9uZTtcclxuICAgICAgICBjb25zdCBiID0gYS5zdGFydHNXaXRoKHNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSkgPyBhLnN1YnN0cmluZyhzZWxlY3RlZENvdW50cnkuZGlhbENvZGUubGVuZ3RoKS50cmltKCkgOiBhO1xyXG5cclxuICAgICAgICByZXR1cm4gQm9vbGVhbihzZWxlY3RlZENvdW50cnk/LmFyZWFDb2Rlcz8uZmlsdGVyKChjb2RlOiBzdHJpbmcpID0+IGIuc3RhcnRzV2l0aChjb2RlKSkubGVuZ3RoKTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZWROdW1iZXIubnVtYmVyLm5hdGlvbmFsKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRUZWxTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHByZWZlcnJlZENvdW50cmllc0xpc3RHZXQoKTogKENvdW50cnkpW10ge1xyXG4gICAgY29uc3QgbGlzdDogKENvdW50cnkpW10gPSBbXVxyXG5cclxuICAgIGZvciAobGV0IGNvdW50cnkgb2YgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMpIHtcclxuICAgICAgY29uc3QgZmluZCA9IHRoaXMuY291bnRyaWVzVG9TaG93R2V0LmZpbmQoY29uID0+IGNvbi5pc28yID09IGNvdW50cnkpXHJcblxyXG4gICAgICBpZiAoZmluZCkge1xyXG4gICAgICAgIGxpc3QucHVzaChmaW5kKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxpc3RcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY291bnRyaWVzVG9TaG93R2V0KCk6IChDb3VudHJ5KVtdIHtcclxuICAgIGNvbnN0IGxpc3Q6IChDb3VudHJ5KVtdID0gW11cclxuXHJcbiAgICBpZiAodGhpcy5vbmx5Q291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBjb3VudHJ5IG9mIHRoaXMub25seUNvdW50cmllcykge1xyXG4gICAgICAgIGNvbnN0IGZpbmQgPSB0aGlzLmFsbENvdW50cmllcy5maW5kKGNvbiA9PiBjb24uaXNvMiA9PSBjb3VudHJ5KVxyXG5cclxuICAgICAgICBpZiAoZmluZCkge1xyXG4gICAgICAgICAgbGlzdC5wdXNoKGZpbmQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbGlzdFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsQ291bnRyaWVzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkQ291bnRyeUdldCgpOiBDb3VudHJ5IHtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmNvdW50cmllc1RvU2hvd0dldFxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnRyeSAmJiAhbGlzdC5maW5kKGMgPT4gYy5pc28yID09PSB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGxpc3RbMF1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENvdW50cnlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpIHtcclxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbjtcclxuICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlQ291bnRyeURhdGEoKSB7XHJcbiAgICB0aGlzLmFsbENvdW50cmllcyA9IGNvdW50cnlEYXRhLm1hcChjb24gPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IHRoaXMuX2xvY2FsZSA9PT0gJ3J1JyA/IGNvbls1XS50b1N0cmluZygpIDogY29uWzBdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgaXNvMjogY29uWzFdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgZGlhbENvZGU6IGNvblsyXS50b1N0cmluZygpLFxyXG4gICAgICAgIHByaW9yaXR5OiArY29uWzNdIHx8IDAsXHJcbiAgICAgICAgYXJlYUNvZGVzOiAoY29uWzRdIGFzIHN0cmluZ1tdKSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgaHRtbElkOiBgJHt0aGlzLnV1aWR9LSR7Y29uWzFdLnRvU3RyaW5nKCl9YCxcclxuICAgICAgICBmbGFnQ2xhc3M6IGBmbGFnX18ke2NvblsxXS50b1N0cmluZygpfWAsXHJcbiAgICAgICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RGVmYXVsdENvdW50cnkoKTogQ291bnRyeSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnbmFtZSc6ICcnLFxyXG4gICAgICAnaXNvMic6ICcnLFxyXG4gICAgICAnZGlhbENvZGUnOiAnJyxcclxuICAgICAgJ3ByaW9yaXR5JzogMCxcclxuICAgICAgJ2h0bWxJZCc6ICcnLFxyXG4gICAgICAnZmxhZ0NsYXNzJzogZmxhZ1BsYWNlaG9sZGVyLFxyXG4gICAgICAncGxhY2VIb2xkZXInOiAnJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdEludGVsTnVtYmVyKG51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmF1dG9EZWFsQ29kZSkge1xyXG4gICAgICByZXR1cm4gbnVtYmVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXhUb1NwbGl0ID0gbnVtYmVyLmluZGV4T2YoJyAnKSArIDE7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlcGFyYXRlRGlhbENvZGUgPyBudW1iZXIuc3Vic3RyaW5nKGluZGV4VG9TcGxpdCkgOiBudW1iZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9ybWF0UGhvbmVOdW1iZXIoKSB7XHJcbiAgICBjb25zdCBheXQgPSBnZXRBc1lvdVR5cGUodGhpcy5zZWxlY3RlZENvdW50cnk/LmlzbzIudG9VcHBlckNhc2UoKSk7XHJcbiAgICBheXQucmVzZXQodGhpcy5waG9uZU51bWJlcik7XHJcbiAgICBjb25zdCByZXM6IFBhcnNlZFBob25lTnVtYmVyID0gYXl0LmdldFBob25lTnVtYmVyKCk7XHJcblxyXG4gICAgdGhpcy5wYXJzZWRQaG9uZU51bWJlciA9IHJlcztcclxuXHJcbiAgICBpZiAodGhpcy5udW1iZXJGb3JtYXQgPT09ICdpbnRlcm5hdGlvbmFsJykge1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gcmVzLm51bWJlcj8uaW50ZXJuYXRpb25hbCA/IHRoaXMuZm9ybWF0SW50ZWxOdW1iZXIocmVzLm51bWJlci5pbnRlcm5hdGlvbmFsKSA6IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gcmVzLm51bWJlcj8ubmF0aW9uYWwgPyByZXMubnVtYmVyLm5hdGlvbmFsIDogdGhpcy5waG9uZU51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5udW1iZXJGb3JtYXQgPT09ICdpbnRlcm5hdGlvbmFsJykge1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVBdXRvQ291bnRyeVNlbGVjdCAmJiByZXMucmVnaW9uQ29kZSAhPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8uaXNvMi50b1VwcGVyQ2FzZSgpKSB7XHJcbiAgICAgICAgcmVzLnJlZ2lvbkNvZGUgJiYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5maW5kQ291bnRyeUJ5SXNvMihyZXMucmVnaW9uQ29kZSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVBdXRvQ291bnRyeVNlbGVjdCAmJiByZXMucmVnaW9uQ29kZSAhPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8uaXNvMi50b1VwcGVyQ2FzZSgpKSB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFyZXMudmFsaWQgfHwgcmVzLnJlZ2lvbkNvZGUgIT0gdGhpcy5zZWxlY3RlZENvdW50cnk/LmlzbzIudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWxpZCA9IHRoaXMuX3ZhbGlkYXRpb24ocmVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbGlkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2hGaWx0ZXJDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIGlmICh0aGlzLnNjcm9sbFRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBmaWx0ZXJlZDogQ291bnRyeVtdO1xyXG4gICAgLy8gaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkID09ICduYW1lJykge1xyXG4gICAgLy8gICBmaWx0ZXJlZCA9IHRoaXMuY291bnRyaWVzVG9TaG93LmZpbHRlcihjb24gPT4gY29uLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoRmlsdGVyLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQgPT0gJ2lzbzInKSB7XHJcbiAgICAvLyAgIGZpbHRlcmVkID0gdGhpcy5jb3VudHJpZXNUb1Nob3cuZmlsdGVyKGNvbiA9PiBjb24uaXNvMi5zdGFydHNXaXRoKHRoaXMuc2VhcmNoRmlsdGVyLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQgPT0gJ2RpYWxDb2RlJykge1xyXG4gICAgLy8gICBmaWx0ZXJlZCA9IHRoaXMuY291bnRyaWVzVG9TaG93LmZpbHRlcihjb24gPT4gY29uLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIpKTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGZpbHRlcmVkID0gdGhpcy5jb3VudHJpZXNUb1Nob3cuZmlsdGVyKGNvbiA9PiBjb24ubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIudG9Mb3dlckNhc2UoKSkgfHwgY29uLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIpIHx8IGNvbi5pc28yLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgLy8gfVxyXG4gICAgLy9cclxuICAgIC8vIGlmICghZmlsdGVyZWQubGVuZ3RoKSByZXR1cm47XHJcbiAgICAvLyB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgY29uc3QgZWw6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlcmVkWzBdLmh0bWxJZCk7XHJcbiAgICAvLyAgIGVsLnNjcm9sbEludG9WaWV3KCk7XHJcbiAgICAvLyB9LCAxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvdW50cnlCeUlzbzIoaXNvMjogc3RyaW5nKTogQ291bnRyeSB8IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb3VudHJpZXNUb1Nob3dHZXQuZmluZChjb24gPT4gY29uLmlzbzIgPT0gaXNvMi50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREZWZhdWx0U2VsZWN0ZWRDb3VudHJ5KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5SVNPKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5maW5kQ291bnRyeUJ5SXNvMih0aGlzLnNlbGVjdGVkQ291bnRyeUlTTyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0Rmlyc3RDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnByZWZlcnJlZENvdW50cmllc0xpc3RHZXRcclxuXHJcbiAgICAgIGlmIChsaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbGlzdFswXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5jb3VudHJpZXNUb1Nob3dHZXRbMF1cclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZ2V0RGVmYXVsdENvdW50cnkoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5wbGFjZUhvbGRlciA9IHRoaXMuZ2V0UGxhY2VIb2xkZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3QoY291bnRyeTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnBsYWNlSG9sZGVyID0gdGhpcy5nZXRQbGFjZUhvbGRlcigpO1xyXG4gICAgdGhpcy5zZWFyY2hGaWx0ZXIgPSAnJztcclxuICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJztcclxuICAgIHRoaXMuaXNJbnB1dFZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b0Nsb3NlRHJvcGRvd24pIHtcclxuICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TnVtYmVyRXhhbXBsZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0RXhhbXBsZU51bWJlciA9IChudW1iZXI6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICAgIHJldHVybiBudW1iZXI7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV4YW1wbGVOdW1iZXIgPSB0aGlzLm51bWJlckZvcm1hdCA9PT0gJ2ludGVybmF0aW9uYWwnID9cclxuICAgICAgdGhpcy5mb3JtYXRJbnRlbE51bWJlcihnZXRFeGFtcGxlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIudG9VcHBlckNhc2UoKSwgJ21vYmlsZScpLm51bWJlcj8uaW50ZXJuYXRpb25hbCB8fCAnJykgOlxyXG4gICAgICB0aGlzLmZvcm1hdEludGVsTnVtYmVyKGdldEV4YW1wbGUodGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpLCAnbW9iaWxlJykubnVtYmVyPy5uYXRpb25hbCB8fCAnJyk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdEV4YW1wbGVOdW1iZXIoZXhhbXBsZU51bWJlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGxhY2VIb2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVQbGFjZWhvbGRlcikgcmV0dXJuICcnO1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tUGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmN1c3RvbVBsYWNlaG9sZGVyO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIgPT0gJycpIHJldHVybiAnJztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJFeGFtcGxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RHJvcGRvd25JY29uUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bk9wZW4gPyBkcm9wZG93bkNsb3NlIDogZHJvcGRvd25PcGVuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9EZWFsQ29kZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkIHx8ICh0aGlzLnNlcGFyYXRlRGlhbENvZGUgJiYgdGhpcy5udW1iZXJGb3JtYXQgPT09ICdpbnRlcm5hdGlvbmFsJykgfHwgdGhpcy5udW1iZXJGb3JtYXQgPT09ICduYXRpb25hbCcgfHwgdGhpcy5waG9uZU51bWJlcikgcmV0dXJuO1xyXG4gICAgdGhpcy5waG9uZU51bWJlciA9ICcrJyArIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlICsgJyAnO1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGhvbmVJbnB1dEJsdXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbnB1dFZhbGlkICYmIHRoaXMucGhvbmVOdW1iZXIgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbm5lckludmFsaWRNZXNzYWdlID0gdGhpcy5pbnZhbGlkUGhvbmVNZXNzYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRWYWxpZGF0ZSgpIHtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlubmVySW52YWxpZE1lc3NhZ2UgPSAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZSgpIHtcclxuICAgIHRoaXMuX3Jlc2V0VmFsaWRhdGUoKTtcclxuICAgIHRoaXMuZm9ybWF0UGhvbmVOdW1iZXIoKTtcclxuXHJcbiAgICBjb25zdCBvdXRzaWRlVmFsdWUgPSB7XHJcbiAgICAgIHBob25lTnVtYmVyOiB0aGlzLnBob25lTnVtYmVyLFxyXG4gICAgICB1bkZvcm1hdHRlZE51bWJlcjogdGhpcy5waG9uZU51bWJlci5yZXBsYWNlKC9bXFxzLSgpXS9nLCAnJyksXHJcbiAgICAgIHNlbGVjdGVkQ291bnRyeTogdGhpcy5zZWxlY3RlZENvdW50cnk/Lm5hbWUgfHwgJycsXHJcbiAgICAgIGlzbzJDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeT8uaXNvMiB8fCAnJyxcclxuICAgICAgZGlhbENvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5kaWFsQ29kZSB8fCAnJyxcclxuICAgICAgbnVtYmVyRm9ybWF0OiB0aGlzLm51bWJlckZvcm1hdCxcclxuICAgICAgaXNOdW1iZXJWYWxpZDogdGhpcy5pc0lucHV0VmFsaWQsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KG91dHNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBvdXRzaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgIHRoaXMub25DaGFuZ2Uob3V0c2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm1yeC1pbnB1dC10ZWxcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX3dyYXBwZXJcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICBmb3JtYXR0ZXJQaG9uZVxyXG4gICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgIHR5cGU9XCJ0ZWxcIlxyXG4gICAgICBjbGFzcz1cInBob25lSW5wdXQge3tjc3NDbGFzc319XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwaG9uZU51bWJlclwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZENvdW50cnlHZXQgJiYgc2VsZWN0ZWRDb3VudHJ5R2V0LnBsYWNlSG9sZGVyID8gc2VsZWN0ZWRDb3VudHJ5R2V0LnBsYWNlSG9sZGVyIDogJydcIlxyXG4gICAgICBbY2xhc3MuaW5WYWxpZF09XCJwaG9uZVZhbGlkYXRpb24gJiYgIWlzSW5wdXRWYWxpZFwiXHJcbiAgICAgIFtjdXN0b21NYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgW3BhcnNlZFBob25lTnVtYmVyXT1cInBhcnNlZFBob25lTnVtYmVyXCJcclxuICAgICAgKGZvY3VzKT1cIm9uUGhvbmVJbnB1dEZvY3VzKClcIlxyXG4gICAgICAoYmx1cik9XCJvblBob25lSW5wdXRCbHVyKClcIlxyXG4gICAgICAoY2hhbmdlTW9kZWwpPVwidXBkYXRlVmFsdWUoKVwiXHJcbiAgICAvPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2ZsYWctY29udGFpbmVyXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgIDxtcngtZHJvcGRvd25cclxuICAgICAgICAjZHJvcGRvd25Db21wb25lbnRcclxuICAgICAgICBjdXN0b21DbGFzc2VzPVwiaC0xMDBcIlxyXG4gICAgICAgIFttYWluUGxhY2VtZW50XT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICBbZmFsbGJhY2tQbGFjZW1lbnRzXT1cIlsndG9wLXN0YXJ0J11cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19zZWxlY3RlZC1mbGFnIGRyb3Bkb3duLXRvZ2dsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19mbGFnXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZENvdW50cnlHZXQgJiYgc2VsZWN0ZWRDb3VudHJ5R2V0LmZsYWdDbGFzcyA/IHNlbGVjdGVkQ291bnRyeUdldC5mbGFnQ2xhc3MgOiAnJ1wiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIEBpZiAoc2VwYXJhdGVEaWFsQ29kZSkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1kaWFsLWNvZGVcIj5cclxuICAgICAgICAgICAgICAgICt7eyBzZWxlY3RlZENvdW50cnlHZXQgJiYgc2VsZWN0ZWRDb3VudHJ5R2V0LmRpYWxDb2RlID8gc2VsZWN0ZWRDb3VudHJ5R2V0LmRpYWxDb2RlIDogJycgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2Fycm93IG10LTFcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1kb3duXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hDb3VudHJ5RmxhZyAmJiBzZWFyY2hDb3VudHJ5RmllbGQpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaEZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHNlYXJjaENvdW50cnlQbGFjZWhvbGRlciB9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaENvdW50cnlfX2lucHV0XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19jb3VudHJ5LWxpc3RcIiAjY291bnRyeUxpc3Q+XHJcbiAgICAgICAgICAgIEBmb3IgKHByZWZlcnJlZENvdW50cnkgb2YgcHJlZmVycmVkQ291bnRyaWVzTGlzdEdldDsgdHJhY2sgcHJlZmVycmVkQ291bnRyeS5pc28yKSB7XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fY291bnRyeSBpdGlfX3ByZWZlcnJlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNvdW50cnlTZWxlY3QocHJlZmVycmVkQ291bnRyeSlcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwicHJlZmVycmVkQ291bnRyeS5odG1sSWQrJy1wcmVmZXJyZWQnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2ZsYWdcIiBbbmdDbGFzc109XCJwcmVmZXJyZWRDb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2NvdW50cnktbmFtZVwiPnt7IHByZWZlcnJlZENvdW50cnkubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZGlhbC1jb2RlXCI+K3t7IHByZWZlcnJlZENvdW50cnkuZGlhbENvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChwcmVmZXJyZWRDb3VudHJpZXNMaXN0R2V0ICYmIHByZWZlcnJlZENvdW50cmllc0xpc3RHZXQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZGl2aWRlclwiPjwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBmb3IgKGNvdW50cnkgb2YgY291bnRyaWVzVG9TaG93R2V0OyB0cmFjayBjb3VudHJ5LmlzbzIpIHtcclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19jb3VudHJ5IGl0aV9fc3RhbmRhcmRcIiBbaWRdPVwiY291bnRyeS5odG1sSWRcIiAoY2xpY2spPVwib25Db3VudHJ5U2VsZWN0KGNvdW50cnkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2ZsYWdcIiBbbmdDbGFzc109XCJjb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2NvdW50cnktbmFtZVwiPnt7IGNvdW50cnkubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZGlhbC1jb2RlXCI+K3t7IGNvdW50cnkuZGlhbENvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21yeC1kcm9wZG93bj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICBAaWYgKCghaXNWYWxpZCB8fCBpbm5lckludmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZSkge1xyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlIFtpbnZhbGlkTWVzc2FnZV09XCJpbm5lckludmFsaWRNZXNzYWdlIHx8IGludmFsaWRNZXNzYWdlXCI+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuICB9XHJcblxyXG4gIDxtcngtc2F2ZS1zdGF0ZSBbaWRdPVwidXVpZFwiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
422
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LXRlbC9pbnB1dC10ZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtdGVsL2lucHV0LXRlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVix1QkFBdUIsRUFDdkIsU0FBUyxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUNoRCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBcUIsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0UsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBMkMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7QUFpQnBHLE1BQU0sT0FBTyxpQkFBaUI7SUF1RGxCO0lBdERGLE9BQU8sQ0FBUztJQUV4QixhQUFhO0lBQ04sSUFBSSxHQUFXLE1BQU0sRUFBRSxDQUFDO0lBQ2YsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUVyQixRQUFRLEdB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QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUUwQixpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUVwQixPQUFPO3NCQUFoQixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIFZpZXdDaGlsZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIExPQ0FMRV9JRCwgSW5qZWN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGdldEFzWW91VHlwZSwgZ2V0RXhhbXBsZSwgUGFyc2VkUGhvbmVOdW1iZXIgfSBmcm9tICdhd2Vzb21lLXBob25lbnVtYmVyJztcclxuaW1wb3J0IHsgQ291bnRyaWVzSVNPIH0gZnJvbSAnLi9kYXRhL2NvdW50cnktaXNvLmVudW0nO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICcuL2RhdGEvc2VhcmNoLWNvdW50cnktZmllbGQuZW51bSc7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0VHlwZSB9IGZyb20gJy4vZGF0YS9waG9uZS1udW1iZXItZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBDb3VudHJ5LCBJbnB1dFZhbHVlIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS5tb2RlbCc7XHJcbmltcG9ydCB7IGNvdW50cnlEYXRhIH0gZnJvbSAnLi9kYXRhL2FsbC1jb3VudHJpZXMnO1xyXG5pbXBvcnQgeyBkcm9wZG93bk9wZW4sIGRyb3Bkb3duQ2xvc2UsIGZsYWdQbGFjZWhvbGRlciB9IGZyb20gJy4vYXNzZXRzL2Jhc2U2NCc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IElucHV0VGVsU2l6ZXNFbnVtLCBJbnB1dFRlbFNpemVzVHlwZXMsIElucHV0VGVsVmFsdWVXaXRoSWQgfSBmcm9tICcuL2VudW1zL2lucHV0LXRlbC5lbnVtJztcclxuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NhdmUtc3RvcmUvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LXRlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXRlbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtdGVsLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFRlbENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRlbENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xyXG4gIHByaXZhdGUgX2xvY2FsZTogc3RyaW5nO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogSW5wdXRUZWxTaXplc1R5cGVzID0gJ2xhcmdlJztcclxuXHJcbiAgQElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHByZWZlcnJlZENvdW50cmllczogKENvdW50cmllc0lTTylbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIG9ubHlDb3VudHJpZXM6IChDb3VudHJpZXNJU08pW10gPSBbXTtcclxuICBASW5wdXQoKSBlbmFibGVBdXRvQ291bnRyeVNlbGVjdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZW5hYmxlUGxhY2Vob2xkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBudW1iZXJGb3JtYXQ6IFBob25lTnVtYmVyRm9ybWF0VHlwZSA9ICdpbnRlcm5hdGlvbmFsJztcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaENvdW50cnlGaWVsZDogU2VhcmNoQ291bnRyeUZpZWxkID0gU2VhcmNoQ291bnRyeUZpZWxkLkFsbDtcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5UGxhY2Vob2xkZXI6IHN0cmluZyA9ICfQn9C+0LjRgdC6INC/0L4g0YHRgtGA0LDQvdCw0LwnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0Q291bnRyeTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgcGhvbmVWYWxpZGF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgPSAncGhvbmUnO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQ291bnRyeUlTTzogQ291bnRyaWVzSVNPIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgc2VwYXJhdGVEaWFsQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9EZWFsQ29kZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGF1dG9DbG9zZURyb3Bkb3duID0gZmFsc2U7XHJcblxyXG4gIC8vIFZBTElEQVRJT05cclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZFBob25lTWVzc2FnZTogc3RyaW5nID0gJ9Cd0LXQutC+0YDRgNC10LrRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1JztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25Db21wb25lbnQnKSBkcm9wZG93bkNvbXBvbmVudCE6IERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0VmFsdWU+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dFZhbHVlPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dFRlbFZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRUZWxWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgcHVibGljIGFsbENvdW50cmllczogKENvdW50cnkpW107XHJcbiAgcHVibGljIHNlbGVjdGVkQ291bnRyeTogQ291bnRyeTtcclxuICBwdWJsaWMgc2VhcmNoRmlsdGVyOiBzdHJpbmc7XHJcbiAgcHVibGljIHNjcm9sbFRpbWVvdXQ6IGFueTtcclxuICBwdWJsaWMgcGhvbmVOdW1iZXI6IGFueTtcclxuICBwdWJsaWMgaXNGb2N1c2VkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBpc0lucHV0VmFsaWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHBhcnNlZFBob25lTnVtYmVyPzogUGFyc2VkUGhvbmVOdW1iZXI7XHJcbiAgcHVibGljIGlubmVySW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpbm5lckludmFsaWRNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlOiBzdHJpbmdcclxuICApIHtcclxuICAgIHRoaXMuYWxsQ291bnRyaWVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZ2V0RGVmYXVsdENvdW50cnkoKTtcclxuICAgIHRoaXMuc2VhcmNoRmlsdGVyID0gJyc7XHJcbiAgICB0aGlzLnBob25lTnVtYmVyID0gbnVsbDtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzSW5wdXRWYWxpZCA9IHRydWU7XHJcbiAgICB0aGlzLl9sb2NhbGUgPSBsb2NhbGU7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlKSB7XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSBvdXRzaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMuZm9ybWF0UGhvbmVOdW1iZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ291bnRyeURhdGEoKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdFNlbGVjdGVkQ291bnRyeSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbihwYXJzZWROdW1iZXI6IFBhcnNlZFBob25lTnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDb3VudHJ5KSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cnkgPSB0aGlzLmZpbmRDb3VudHJ5QnlJc28yKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIpO1xyXG5cclxuICAgIGlmIChwYXJzZWROdW1iZXIubnVtYmVyPy5pbnRlcm5hdGlvbmFsIHx8IHBhcnNlZE51bWJlci5udW1iZXI/Lm5hdGlvbmFsKSB7XHJcbiAgICAgIGlmIChwYXJzZWROdW1iZXIubnVtYmVyLmludGVybmF0aW9uYWwpIHtcclxuICAgICAgICBjb25zdCBwaG9uZSA9IHBhcnNlZE51bWJlci5udW1iZXIuaW50ZXJuYXRpb25hbC50cmltKCk7XHJcbiAgICAgICAgY29uc3QgYSA9IHBob25lLnN0YXJ0c1dpdGgoJysnKSA/IHBob25lLnN1YnN0cmluZygxKS50cmltKCkgOiBwaG9uZTtcclxuICAgICAgICBjb25zdCBiID0gYS5zdGFydHNXaXRoKHNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSkgPyBhLnN1YnN0cmluZyhzZWxlY3RlZENvdW50cnkuZGlhbENvZGUubGVuZ3RoKS50cmltKCkgOiBhO1xyXG5cclxuICAgICAgICByZXR1cm4gQm9vbGVhbihzZWxlY3RlZENvdW50cnk/LmFyZWFDb2Rlcz8uZmlsdGVyKChjb2RlOiBzdHJpbmcpID0+IGIuc3RhcnRzV2l0aChjb2RlKSkubGVuZ3RoKTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJzZWROdW1iZXIubnVtYmVyLm5hdGlvbmFsKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRUZWxTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHByZWZlcnJlZENvdW50cmllc0xpc3RHZXQoKTogKENvdW50cnkpW10ge1xyXG4gICAgY29uc3QgbGlzdDogKENvdW50cnkpW10gPSBbXVxyXG5cclxuICAgIGZvciAobGV0IGNvdW50cnkgb2YgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXMpIHtcclxuICAgICAgY29uc3QgZmluZCA9IHRoaXMuY291bnRyaWVzVG9TaG93R2V0LmZpbmQoY29uID0+IGNvbi5pc28yID09IGNvdW50cnkpXHJcblxyXG4gICAgICBpZiAoZmluZCkge1xyXG4gICAgICAgIGxpc3QucHVzaChmaW5kKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxpc3RcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY291bnRyaWVzVG9TaG93R2V0KCk6IChDb3VudHJ5KVtdIHtcclxuICAgIGNvbnN0IGxpc3Q6IChDb3VudHJ5KVtdID0gW11cclxuXHJcbiAgICBpZiAodGhpcy5vbmx5Q291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBjb3VudHJ5IG9mIHRoaXMub25seUNvdW50cmllcykge1xyXG4gICAgICAgIGNvbnN0IGZpbmQgPSB0aGlzLmFsbENvdW50cmllcy5maW5kKGNvbiA9PiBjb24uaXNvMiA9PSBjb3VudHJ5KVxyXG5cclxuICAgICAgICBpZiAoZmluZCkge1xyXG4gICAgICAgICAgbGlzdC5wdXNoKGZpbmQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbGlzdFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYWxsQ291bnRyaWVzXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkQ291bnRyeUdldCgpOiBDb3VudHJ5IHtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmNvdW50cmllc1RvU2hvd0dldFxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnRyeSAmJiAhbGlzdC5maW5kKGMgPT4gYy5pc28yID09PSB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yKSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IGxpc3RbMF1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENvdW50cnlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bigpIHtcclxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbjtcclxuICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnQuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlQ291bnRyeURhdGEoKSB7XHJcbiAgICB0aGlzLmFsbENvdW50cmllcyA9IGNvdW50cnlEYXRhLm1hcChjb24gPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IHRoaXMuX2xvY2FsZSA9PT0gJ3J1JyA/IGNvbls1XS50b1N0cmluZygpIDogY29uWzBdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgaXNvMjogY29uWzFdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgZGlhbENvZGU6IGNvblsyXS50b1N0cmluZygpLFxyXG4gICAgICAgIHByaW9yaXR5OiArY29uWzNdIHx8IDAsXHJcbiAgICAgICAgYXJlYUNvZGVzOiAoY29uWzRdIGFzIHN0cmluZ1tdKSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgaHRtbElkOiBgJHt0aGlzLnV1aWR9LSR7Y29uWzFdLnRvU3RyaW5nKCl9YCxcclxuICAgICAgICBmbGFnQ2xhc3M6IGBmbGFnX18ke2NvblsxXS50b1N0cmluZygpfWAsXHJcbiAgICAgICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RGVmYXVsdENvdW50cnkoKTogQ291bnRyeSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnbmFtZSc6ICcnLFxyXG4gICAgICAnaXNvMic6ICcnLFxyXG4gICAgICAnZGlhbENvZGUnOiAnJyxcclxuICAgICAgJ3ByaW9yaXR5JzogMCxcclxuICAgICAgJ2h0bWxJZCc6ICcnLFxyXG4gICAgICAnZmxhZ0NsYXNzJzogZmxhZ1BsYWNlaG9sZGVyLFxyXG4gICAgICAncGxhY2VIb2xkZXInOiAnJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdEludGVsTnVtYmVyKG51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmF1dG9EZWFsQ29kZSkge1xyXG4gICAgICByZXR1cm4gbnVtYmVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXhUb1NwbGl0ID0gbnVtYmVyLmluZGV4T2YoJyAnKSArIDE7XHJcbiAgICAgIHJldHVybiB0aGlzLnNlcGFyYXRlRGlhbENvZGUgPyBudW1iZXIuc3Vic3RyaW5nKGluZGV4VG9TcGxpdCkgOiBudW1iZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZm9ybWF0UGhvbmVOdW1iZXIoKSB7XHJcbiAgICBjb25zdCBheXQgPSBnZXRBc1lvdVR5cGUodGhpcy5zZWxlY3RlZENvdW50cnk/LmlzbzIudG9VcHBlckNhc2UoKSk7XHJcbiAgICBheXQucmVzZXQodGhpcy5waG9uZU51bWJlcik7XHJcbiAgICBjb25zdCByZXM6IFBhcnNlZFBob25lTnVtYmVyID0gYXl0LmdldFBob25lTnVtYmVyKCk7XHJcblxyXG4gICAgdGhpcy5wYXJzZWRQaG9uZU51bWJlciA9IHJlcztcclxuXHJcbiAgICBpZiAodGhpcy5udW1iZXJGb3JtYXQgPT09ICdpbnRlcm5hdGlvbmFsJykge1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gcmVzLm51bWJlcj8uaW50ZXJuYXRpb25hbCA/IHRoaXMuZm9ybWF0SW50ZWxOdW1iZXIocmVzLm51bWJlci5pbnRlcm5hdGlvbmFsKSA6IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gcmVzLm51bWJlcj8ubmF0aW9uYWwgPyByZXMubnVtYmVyLm5hdGlvbmFsIDogdGhpcy5waG9uZU51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5udW1iZXJGb3JtYXQgPT09ICdpbnRlcm5hdGlvbmFsJykge1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVBdXRvQ291bnRyeVNlbGVjdCAmJiByZXMucmVnaW9uQ29kZSAhPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8uaXNvMi50b1VwcGVyQ2FzZSgpKSB7XHJcbiAgICAgICAgcmVzLnJlZ2lvbkNvZGUgJiYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5maW5kQ291bnRyeUJ5SXNvMihyZXMucmVnaW9uQ29kZSkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVBdXRvQ291bnRyeVNlbGVjdCAmJiByZXMucmVnaW9uQ29kZSAhPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8uaXNvMi50b1VwcGVyQ2FzZSgpKSB7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFyZXMudmFsaWQgfHwgcmVzLnJlZ2lvbkNvZGUgIT0gdGhpcy5zZWxlY3RlZENvdW50cnk/LmlzbzIudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLmlzSW5wdXRWYWxpZCA9IHRoaXMuX3ZhbGlkYXRpb24ocmVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNJbnB1dFZhbGlkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2hGaWx0ZXJDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIGlmICh0aGlzLnNjcm9sbFRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnNjcm9sbFRpbWVvdXQpO1xyXG4gICAgLy9cclxuICAgIC8vIGxldCBmaWx0ZXJlZDogQ291bnRyeVtdO1xyXG4gICAgLy8gaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkID09ICduYW1lJykge1xyXG4gICAgLy8gICBmaWx0ZXJlZCA9IHRoaXMuY291bnRyaWVzVG9TaG93LmZpbHRlcihjb24gPT4gY29uLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuc2VhcmNoRmlsdGVyLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQgPT0gJ2lzbzInKSB7XHJcbiAgICAvLyAgIGZpbHRlcmVkID0gdGhpcy5jb3VudHJpZXNUb1Nob3cuZmlsdGVyKGNvbiA9PiBjb24uaXNvMi5zdGFydHNXaXRoKHRoaXMuc2VhcmNoRmlsdGVyLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIC8vIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQgPT0gJ2RpYWxDb2RlJykge1xyXG4gICAgLy8gICBmaWx0ZXJlZCA9IHRoaXMuY291bnRyaWVzVG9TaG93LmZpbHRlcihjb24gPT4gY29uLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIpKTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIGZpbHRlcmVkID0gdGhpcy5jb3VudHJpZXNUb1Nob3cuZmlsdGVyKGNvbiA9PiBjb24ubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIudG9Mb3dlckNhc2UoKSkgfHwgY29uLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIpIHx8IGNvbi5pc28yLnN0YXJ0c1dpdGgodGhpcy5zZWFyY2hGaWx0ZXIudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgLy8gfVxyXG4gICAgLy9cclxuICAgIC8vIGlmICghZmlsdGVyZWQubGVuZ3RoKSByZXR1cm47XHJcbiAgICAvLyB0aGlzLnNjcm9sbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgY29uc3QgZWw6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlcmVkWzBdLmh0bWxJZCk7XHJcbiAgICAvLyAgIGVsLnNjcm9sbEludG9WaWV3KCk7XHJcbiAgICAvLyB9LCAxKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvdW50cnlCeUlzbzIoaXNvMjogc3RyaW5nKTogQ291bnRyeSB8IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb3VudHJpZXNUb1Nob3dHZXQuZmluZChjb24gPT4gY29uLmlzbzIgPT0gaXNvMi50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREZWZhdWx0U2VsZWN0ZWRDb3VudHJ5KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5SVNPKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5maW5kQ291bnRyeUJ5SXNvMih0aGlzLnNlbGVjdGVkQ291bnRyeUlTTyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0Rmlyc3RDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnByZWZlcnJlZENvdW50cmllc0xpc3RHZXRcclxuXHJcbiAgICAgIGlmIChsaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbGlzdFswXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5jb3VudHJpZXNUb1Nob3dHZXRbMF1cclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuZ2V0RGVmYXVsdENvdW50cnkoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5wbGFjZUhvbGRlciA9IHRoaXMuZ2V0UGxhY2VIb2xkZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3QoY291bnRyeTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnBsYWNlSG9sZGVyID0gdGhpcy5nZXRQbGFjZUhvbGRlcigpO1xyXG4gICAgdGhpcy5zZWFyY2hGaWx0ZXIgPSAnJztcclxuICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJztcclxuICAgIHRoaXMuaXNJbnB1dFZhbGlkID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b0Nsb3NlRHJvcGRvd24pIHtcclxuICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TnVtYmVyRXhhbXBsZSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZm9ybWF0RXhhbXBsZU51bWJlciA9IChudW1iZXI6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICAgIHJldHVybiBudW1iZXI7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGV4YW1wbGVOdW1iZXIgPSB0aGlzLm51bWJlckZvcm1hdCA9PT0gJ2ludGVybmF0aW9uYWwnID9cclxuICAgICAgdGhpcy5mb3JtYXRJbnRlbE51bWJlcihnZXRFeGFtcGxlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIudG9VcHBlckNhc2UoKSwgJ21vYmlsZScpLm51bWJlcj8uaW50ZXJuYXRpb25hbCB8fCAnJykgOlxyXG4gICAgICB0aGlzLmZvcm1hdEludGVsTnVtYmVyKGdldEV4YW1wbGUodGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpLCAnbW9iaWxlJykubnVtYmVyPy5uYXRpb25hbCB8fCAnJyk7XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdEV4YW1wbGVOdW1iZXIoZXhhbXBsZU51bWJlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGxhY2VIb2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5lbmFibGVQbGFjZWhvbGRlcikgcmV0dXJuICcnO1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tUGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmN1c3RvbVBsYWNlaG9sZGVyO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIgPT0gJycpIHJldHVybiAnJztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJFeGFtcGxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RHJvcGRvd25JY29uUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNEcm9wZG93bk9wZW4gPyBkcm9wZG93bkNsb3NlIDogZHJvcGRvd25PcGVuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCkge1xyXG4gICAgaWYgKCF0aGlzLmF1dG9EZWFsQ29kZSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuaXNGb2N1c2VkIHx8ICh0aGlzLnNlcGFyYXRlRGlhbENvZGUgJiYgdGhpcy5udW1iZXJGb3JtYXQgPT09ICdpbnRlcm5hdGlvbmFsJykgfHwgdGhpcy5udW1iZXJGb3JtYXQgPT09ICduYXRpb25hbCcgfHwgdGhpcy5waG9uZU51bWJlcikgcmV0dXJuO1xyXG4gICAgdGhpcy5waG9uZU51bWJlciA9ICcrJyArIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlICsgJyAnO1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGhvbmVJbnB1dEJsdXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbnB1dFZhbGlkICYmIHRoaXMucGhvbmVOdW1iZXIgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJJbnZhbGlkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbm5lckludmFsaWRNZXNzYWdlID0gdGhpcy5pbnZhbGlkUGhvbmVNZXNzYWdlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzZXRWYWxpZGF0ZSgpIHtcclxuICAgIHRoaXMuaW5uZXJJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlubmVySW52YWxpZE1lc3NhZ2UgPSAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZSgpIHtcclxuICAgIHRoaXMuX3Jlc2V0VmFsaWRhdGUoKTtcclxuICAgIHRoaXMuZm9ybWF0UGhvbmVOdW1iZXIoKTtcclxuXHJcbiAgICBjb25zdCBvdXRzaWRlVmFsdWUgPSB7XHJcbiAgICAgIHBob25lTnVtYmVyOiB0aGlzLnBob25lTnVtYmVyLFxyXG4gICAgICB1bkZvcm1hdHRlZE51bWJlcjogdGhpcy5waG9uZU51bWJlci5yZXBsYWNlKC9bXFxzLSgpXS9nLCAnJyksXHJcbiAgICAgIHNlbGVjdGVkQ291bnRyeTogdGhpcy5zZWxlY3RlZENvdW50cnk/Lm5hbWUgfHwgJycsXHJcbiAgICAgIGlzbzJDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeT8uaXNvMiB8fCAnJyxcclxuICAgICAgZGlhbENvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5Py5kaWFsQ29kZSB8fCAnJyxcclxuICAgICAgbnVtYmVyRm9ybWF0OiB0aGlzLm51bWJlckZvcm1hdCxcclxuICAgICAgaXNOdW1iZXJWYWxpZDogdGhpcy5pc0lucHV0VmFsaWQsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KG91dHNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBvdXRzaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgIHRoaXMub25DaGFuZ2Uob3V0c2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cIm1yeC1pbnB1dC10ZWxcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIlxyXG4gIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX3dyYXBwZXJcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICBmb3JtYXR0ZXJQaG9uZVxyXG4gICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgIHR5cGU9XCJ0ZWxcIlxyXG4gICAgICBjbGFzcz1cInBob25lSW5wdXQge3tjc3NDbGFzc319XCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwaG9uZU51bWJlclwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZENvdW50cnlHZXQgJiYgc2VsZWN0ZWRDb3VudHJ5R2V0LnBsYWNlSG9sZGVyID8gc2VsZWN0ZWRDb3VudHJ5R2V0LnBsYWNlSG9sZGVyIDogJydcIlxyXG4gICAgICBbY2xhc3MuaW5WYWxpZF09XCJwaG9uZVZhbGlkYXRpb24gJiYgIWlzSW5wdXRWYWxpZFwiXHJcbiAgICAgIFtjdXN0b21NYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcclxuICAgICAgW3BhcnNlZFBob25lTnVtYmVyXT1cInBhcnNlZFBob25lTnVtYmVyXCJcclxuICAgICAgKGZvY3VzKT1cIm9uUGhvbmVJbnB1dEZvY3VzKClcIlxyXG4gICAgICAoYmx1cik9XCJvblBob25lSW5wdXRCbHVyKClcIlxyXG4gICAgICAoY2hhbmdlTW9kZWwpPVwidXBkYXRlVmFsdWUoKVwiXHJcbiAgICAvPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2ZsYWctY29udGFpbmVyXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgIDxtcngtZHJvcGRvd25cclxuICAgICAgICAjZHJvcGRvd25Db21wb25lbnRcclxuICAgICAgICBjdXN0b21DbGFzc2VzPVwiaC0xMDBcIlxyXG4gICAgICAgIFttYWluUGxhY2VtZW50XT1cIidib3R0b20tc3RhcnQnXCJcclxuICAgICAgICBbZmFsbGJhY2tQbGFjZW1lbnRzXT1cIlsndG9wLXN0YXJ0J11cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19zZWxlY3RlZC1mbGFnIGRyb3Bkb3duLXRvZ2dsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19mbGFnXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RlZENvdW50cnlHZXQgJiYgc2VsZWN0ZWRDb3VudHJ5R2V0LmZsYWdDbGFzcyA/IHNlbGVjdGVkQ291bnRyeUdldC5mbGFnQ2xhc3MgOiAnJ1wiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIEBpZiAoc2VwYXJhdGVEaWFsQ29kZSkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1kaWFsLWNvZGVcIj5cclxuICAgICAgICAgICAgICAgICt7eyBzZWxlY3RlZENvdW50cnlHZXQgJiYgc2VsZWN0ZWRDb3VudHJ5R2V0LmRpYWxDb2RlID8gc2VsZWN0ZWRDb3VudHJ5R2V0LmRpYWxDb2RlIDogJycgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2Fycm93IG10LTFcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hldnJvbi1kb3duXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgQGlmIChzZWFyY2hDb3VudHJ5RmxhZyAmJiBzZWFyY2hDb3VudHJ5RmllbGQpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaEZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHNlYXJjaENvdW50cnlQbGFjZWhvbGRlciB9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaENvdW50cnlfX2lucHV0XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19jb3VudHJ5LWxpc3RcIiAjY291bnRyeUxpc3Q+XHJcbiAgICAgICAgICAgIEBmb3IgKHByZWZlcnJlZENvdW50cnkgb2YgcHJlZmVycmVkQ291bnRyaWVzTGlzdEdldDsgdHJhY2sgcHJlZmVycmVkQ291bnRyeS5pc28yKSB7XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fY291bnRyeSBpdGlfX3ByZWZlcnJlZFwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNvdW50cnlTZWxlY3QocHJlZmVycmVkQ291bnRyeSlcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwicHJlZmVycmVkQ291bnRyeS5odG1sSWQrJy1wcmVmZXJyZWQnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2ZsYWdcIiBbbmdDbGFzc109XCJwcmVmZXJyZWRDb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2NvdW50cnktbmFtZVwiPnt7IHByZWZlcnJlZENvdW50cnkubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZGlhbC1jb2RlXCI+K3t7IHByZWZlcnJlZENvdW50cnkuZGlhbENvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChwcmVmZXJyZWRDb3VudHJpZXNMaXN0R2V0ICYmIHByZWZlcnJlZENvdW50cmllc0xpc3RHZXQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZGl2aWRlclwiPjwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBmb3IgKGNvdW50cnkgb2YgY291bnRyaWVzVG9TaG93R2V0OyB0cmFjayBjb3VudHJ5LmlzbzIpIHtcclxuICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtcngtaW5wdXQtdGVsX19jb3VudHJ5IGl0aV9fc3RhbmRhcmRcIiBbaWRdPVwiY291bnRyeS5odG1sSWRcIiAoY2xpY2spPVwib25Db3VudHJ5U2VsZWN0KGNvdW50cnkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2ZsYWdcIiBbbmdDbGFzc109XCJjb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC10ZWxfX2NvdW50cnktbmFtZVwiPnt7IGNvdW50cnkubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXRlbF9fZGlhbC1jb2RlXCI+K3t7IGNvdW50cnkuZGlhbENvZGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC91bD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21yeC1kcm9wZG93bj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICBAaWYgKCghaXNWYWxpZCB8fCBpbm5lckludmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZSkge1xyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlIFtpbnZhbGlkTWVzc2FnZV09XCJpbm5lckludmFsaWRNZXNzYWdlIHx8IGludmFsaWRNZXNzYWdlXCI+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuICB9XHJcblxyXG4gIDxtcngtc2F2ZS1zdGF0ZSBbaWRdPVwidXVpZFwiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcblxyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LXRlbC9tb2RlbHMvY291bnRyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaXNvMjogc3RyaW5nO1xyXG4gIGRpYWxDb2RlOiBzdHJpbmc7XHJcbiAgcHJpb3JpdHk6IG51bWJlcjtcclxuICBhcmVhQ29kZXM/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LXRlbC9tb2RlbHMvY291bnRyeS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb3VudHJ5IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaXNvMjogc3RyaW5nO1xyXG4gIGRpYWxDb2RlOiBzdHJpbmc7XHJcbiAgcHJpb3JpdHk6IG51bWJlcjtcclxuICBhcmVhQ29kZXM/OiBzdHJpbmdbXTtcclxuICBodG1sSWQ6IHN0cmluZztcclxuICBmbGFnQ2xhc3M6IHN0cmluZztcclxuICBwbGFjZUhvbGRlcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElucHV0VmFsdWUge1xyXG4gIHBob25lTnVtYmVyOiBzdHJpbmcsXHJcbiAgdW5Gb3JtYXR0ZWROdW1iZXI6IHN0cmluZyxcclxuICBzZWxlY3RlZENvdW50cnk6IHN0cmluZyxcclxuICBpc28yQ29kZTogc3RyaW5nLFxyXG4gIGRpYWxDb2RlOiBzdHJpbmcsXHJcbiAgbnVtYmVyRm9ybWF0OiBzdHJpbmcsXHJcbiAgaXNOdW1iZXJWYWxpZDogYm9vbGVhbixcclxufVxyXG4iXX0=
|