@po-ui/ng-components 5.20.0 → 5.22.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/bundles/po-ui-ng-components.umd.js +59 -9
- package/bundles/po-ui-ng-components.umd.js.map +1 -1
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.js +1 -1
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.js +2 -2
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.js +9 -1
- package/esm2015/lib/components/po-field/po-combo/po-combo-base.component.js +9 -1
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.component.js +4 -3
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.js +1 -1
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.js +12 -5
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-base.component.js +2 -1
- package/esm2015/lib/components/po-field/po-lookup/po-lookup.component.js +7 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-base.component.js +9 -4
- package/esm2015/lib/components/po-field/po-select/po-select.component.js +8 -1
- package/esm2015/lib/components/po-field/po-upload/po-upload-base.component.js +9 -1
- package/fesm2015/po-ui-ng-components.js +59 -9
- package/fesm2015/po-ui-ng-components.js.map +1 -1
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +0 -2
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +8 -0
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +8 -0
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.d.ts +2 -1
- package/lib/components/po-field/po-select/po-select.component.d.ts +7 -0
- package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +8 -0
- package/package.json +5 -5
- package/po-ui-ng-components-5.22.2.tgz +0 -0
- package/po-ui-ng-components.metadata.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/po-ui-ng-components-5.20.0.tgz +0 -0
|
@@ -345,6 +345,7 @@ export class PoLookupBaseComponent {
|
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
347
|
cleanViewValue() {
|
|
348
|
+
this.setDisclaimers([]);
|
|
348
349
|
this.setViewValue('', {});
|
|
349
350
|
this.oldValue = '';
|
|
350
351
|
this.valueToModel = null;
|
|
@@ -447,4 +448,4 @@ __decorate([
|
|
|
447
448
|
__decorate([
|
|
448
449
|
InputBoolean()
|
|
449
450
|
], PoLookupBaseComponent.prototype, "autoHeight", void 0);
|
|
450
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFzRCxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVFOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE1BQU0sT0FBZ0IscUJBQXFCO0lBNll6QyxZQUFvQixjQUFxQyxFQUE0QixRQUFrQjtRQUFuRixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTNZdkc7Ozs7Ozs7Ozs7V0FVRztRQUNvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBaUxsRTs7Ozs7Ozs7V0FRRztRQUN5QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUU1RSxpREFBaUQ7UUFDZixVQUFLLEdBQVksS0FBSyxDQUFDO1FBRXpEOzs7Ozs7Ozs7O1dBVUc7UUFDa0MsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUvRDs7Ozs7Ozs7O1dB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NEJBb0ZqQixLQUFLLFNBQUMsa0JBQWtCOzZCQWtCeEIsS0FBSyxTQUFDLG1CQUFtQjt1QkFnQnpCLEtBQUssU0FBQyxZQUFZO3VCQWtCbEIsS0FBSyxTQUFDLFlBQVk7O0FBeFhvQjtJQUFmLFlBQVksRUFBRTt3REFBNEI7QUEwTHRCO0lBQWYsWUFBWSxFQUFFOzZEQUFpQztBQUcxQztJQUFmLFlBQVksRUFBRTtvREFBd0I7QUFhcEI7SUFBZixZQUFZLEVBQUU7dURBQTJCO0FBWXZCO0lBQWYsWUFBWSxFQUFFO3lEQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdEZsYWdzLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBQb0xvb2t1cEFkdmFuY2VkRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1hZHZhbmNlZC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWxvb2t1cC1maWx0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSB1dGlsaXphZG8gcGFyYSBhYnJpciB1bWEgamFuZWxhIGRlIGJ1c2NhIGNvbSB1bWEgdGFiZWxhIHF1ZSBsaXN0YSBkYWRvcyBkZSB1bSBzZXJ2acOnby4gTmVzdGEgamFuZWxhIMOpIHBvc3PDrXZlbCBidXNjYXIgZVxuICogc2VsZWNpb25hciB1bSBvdSBtYWlzIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIGVudmlhZG9zIHBhcmEgbyBjYW1wby4gTyBgcG8tbG9va3VwYCBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmFcbiAqIGJ1c2NhciB1bSByZWdpc3Ryby5cbiAqXG4gKiA+IENhc28gbyBjYW1wbyBzZWphIGluaWNpYWRvIG91IHByZWVuY2hpZG8gY29tIHVtIHZhbG9yIGluZXhpc3RlbnRlIG5hIGJ1c2NhLCBvIG1lc21vIHNlcsOhIGxpbXBhZG8uXG4gKiBObyBzZWd1bmRvIGNhc28gb2NvcnJlcsOhIGFww7NzIGVzdGUgcGVyZGVyIG8gZm9jbzsgYW1ib3Mgb3MgY2Fzb3MgbyBjYW1wbyBmaWNhcsOhIGludsOhbGlkbyBxdWFuZG8gcmVxdWVyaWRvLlxuICpcbiAqID4gRW5xdWFudG8gbyBjb21wb25lbnRlIHJlYWxpemEgYSByZXF1aXNpw6fDo28gYW8gc2Vydmlkb3IsIG8gY29tcG9uZW50ZSBmaWNhcsOhIGRlc2FiaWxpdGFkbyBlIGNvbSBvIHN0YXR1cyBpbnRlcm5vIGRvXG4gKiBbbW9kZWxvXShodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZm9ybS12YWxpZGF0aW9uI2NyZWF0aW5nLWFzeW5jaHJvbm91cy12YWxpZGF0b3JzKSBjb21vIGBwZW5kaW5nYC5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgbsOjbyDDqSByZWNvbWVuZGFkbyBxdWFuZG8gYSBidXNjYSBkb3MgZGFkb3MgcG9zc3VpciBwb3VjYXMgaW5mb3JtYcOnw7VlcywgcGFyYSBpc3NvIHV0aWxpemUgb3V0cm9zIGNvbXBvbmVudGVzIGNvbW8gb1xuICogYHBvLXNlbGVjdGAgb3UgbyBgcG8tY29tYm9gLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0xvb2t1cEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIExhYmVsIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IFF1YW5kbyB1dGlsaXphciBlc3RhIHByb3ByaWVkYWRlIG8gc2V1IHZhbG9yIHNlcsOhIHV0aWxpemFkbyBjb21vIHTDrXR1bG8gZGEgbW9kYWwgZG8gY29tcG9uZW50ZSBjYXNvIG7Do28gdGVuaGFcbiAgICogc2lkbyBkZWZpbmlkbyB1bSBgbW9kYWxUaXRsZWAgbmEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tbG9va3VwYC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscyA9IHtcbiAgICogICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnLFxuICAgKiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsJyxcbiAgICogICAgbW9kYWxQbGFjZWhvbGRlcjogJ1NlYXJjaCBWYWx1ZScsXG4gICAqICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6ICdObyBjb2x1bW5zJyxcbiAgICogICAgbW9kYWxUYWJsZU5vRGF0YTogJ05vIGRhdGEnLFxuICAgKiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6ICdMb2FkaW5nIGRhdGEnLFxuICAgKiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiAnTG9hZCBtb3JlJyxcbiAgICogICAgbW9kYWxUaXRsZTogJ1NlbGVjdCBhIHVzZXInLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRlcicsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ1JldHVybicsXG4gICAqICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdQcmVzZW50aW5nIHJlc3VsdHMgZmlsdGVyZWQgYnk6J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHMgPSB7XG4gICAqICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWN0J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbG9va3VwXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1sb29rdXA+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIGxpdGVyYWxzPzogUG9Mb29rdXBMaXRlcmFscztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKiogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKiBOb21lIGUgSWQgZG8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyB2YWxvciBkbyBjYW1wby5cbiAgICpcbiAgICogPiBBdGVuw6fDo286IENhc28gbsOjbyBzZWphIHBhc3NhZGEgb3UgdGVuaGEgbyBjb250ZcO6ZG8gaW5jb3JyZXRvLCBuw6NvIGlyw6EgYXR1YWxpemFyIG8gbW9kZWwgZG8gZm9ybXVsw6FyaW8uXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBmaWVsZFZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqIEluZGljYSBhIGNvbHVuYSBxdWUgc2Vyw6EgdXRpbGl6YWRhIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8gZSBjb21vIGZpbHRybyBkZW50cm8gZGEgamFuZWxhLiAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRMYWJlbCA9IHZhbHVlO1xuICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKiBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGNvbW8gcGFyw6JtZXRybyBwYXJhIGEgVVJMIG91IGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvTG9va3VwRmlsdGVyYC4gKi9cbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBmaWx0ZXJQYXJhbXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRm9ybWF0byBkZSBleGliacOnw6NvIGRvIGNhbXBvLlxuICAgKlxuICAgKiBSZWNlYmUgdW1hIGZ1bsOnw6NvIHF1ZSBkZXZlIHJldG9ybmFyIHVtYSAqc3RyaW5nKiBjb20gby9vcyB2YWxvcmVzIGRvIG9iamV0byBmb3JtYXRhZG9zIHBhcmEgZXhpYmnDp8OjbywgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBmaWVsZEZvcm1hdChvYmopIHtcbiAgICogICByZXR1cm4gYCR7b2JqLmlkfSAtICR7b2JqLm5hbWV9YDtcbiAgICogfVxuICAgKiBgYGBcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBvIHZhbG9yIGRhIHByb3ByaWVkYWRlIGBwLWZpZWxkLWxhYmVsYCBuYSBkZXNjcmnDp8OjbyBkbyBjYW1wby5cbiAgICpcbiAgICogUG9kZS1zZSBpbmZvcm1hciB1bWEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXNlamEgZXhpYmlyIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8sIFBvciBleGVtcGxvOlxuICAgKiBgYGBcbiAgICogPHBvLWxvb2t1cFxuICAgKiAgLi4uXG4gICAqICBbcC1maWVsZC1mb3JtYXRdPVwiWydpZCcsJ25pY2tuYW1lJ11cIlxuICAgKiAgLi4uXG4gICAqID5cbiAgICpcbiAgICogT2JqZXRvIHJldG9ybmFkbzpcbiAgICogICB7XG4gICAqICAgICAgaWQ6MTIzLFxuICAgKiAgICAgIG5hbWU6ICdLYWthcm90bycsXG4gICAqICAgICAgbmlja25hbWU6ICdHb2t1JyxcbiAgICogICB9XG4gICAqIEFwcmVzZW50YcOnw6NvIG5vIGNhbXBvOiAxMjMgLSBHb2t1XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IFNlcsOhIHV0aWxpemFkbyBgIC0gYCBjb21vIHNlcGFyYWRvci5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1mb3JtYXQnKSBmaWVsZEZvcm1hdD86ICgodmFsdWUpID0+IHN0cmluZykgfCBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBMaXN0YSBkYXMgY29sdW5hcyBkYSB0YWJlbGEuXG4gICAqIEVzc2EgcHJvcHJpZWRhZGUgZGV2ZSByZWNlYmVyIHVtIGFycmF5IGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIFBvTG9va3VwQ29sdW1uLlxuICAgKi9cbiAgQElucHV0KCdwLWNvbHVtbnMnKSBjb2x1bW5zPzogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgb2JqZXRvcyBkb3MgY2FtcG9zIHF1ZSBzZXLDo28gY3JpYWRvcyBuYSBidXNjYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqID4gQ2FzbyBuw6NvIHNlamEgcGFzc2FkbyB1bSBvYmpldG8gb3UgZW50w6NvIGVsZSBlc3RlamEgZW0gYnJhbmNvIG8gbGluayBkZSBidXNjYSBhdmFuw6dhZGEgZmljYXLDoSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgVVJMIGNvbSBidXNjYSBhdmFuw6dhZGE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJm5hbWU9VG9ueSUyMFN0YXJrJm5pY2tuYW1lPUhvbWVtJTIwZGUlMjBGZXJyb1xuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBhbGd1bSBwYXLDom1ldHJvIHNlamEgdW1hIGxpc3RhLCBhIGNvbmNhdGVuYcOnw6NvIMOpIGZlaXRhIHV0aWxpemFuZG8gdsOtcmd1bGEuXG4gICAqIEV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJm5hbWU9VG9ueSUyMFN0YXJrLFBldGVyJTIwUGFya2VyLEdvaGFuXG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWFkdmFuY2VkLWZpbHRlcnMnKSBhZHZhbmNlZEZpbHRlcnM6IEFycmF5PFBvTG9va3VwQWR2YW5jZWRGaWx0ZXI+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgQElucHV0Qm9vbGVhbigpIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEV4aWJlIHVtIMOtY29uZSBxdWUgcGVybWl0ZSBsaW1wYXIgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWNsZWFuJykgQElucHV0Qm9vbGVhbigpIGNsZWFuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHNlbGXDp8OjbyBkZSBtw7psdGlwbG9zIGl0ZW5zLlxuICAgKlxuICAgKiA+IFF1YW5kbyBoYWJpbGl0YWRvIG8gdmFsb3IgZG8gY2FtcG8gcGFzc2Fyw6EgYSBzZXIgdW1hIGxpc3RhIGRlIHZhbG9yZXMsIHBvciBleGVtcGxvOiBgWyAxMjM0NSwgNjc4OTAgXWBcbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW11bHRpcGxlJykgQElucHV0Qm9vbGVhbigpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIHNlcsOhIGF1dG8gYWp1c3TDoXZlbCwgcG9zc3VpbmRvIHVtYSBhbHR1cmEgbWluaW1hIHBvcsOpbSBhIGFsdHVyYSBtw6F4aW1hIHNlcsOhIGRlIGFjb3Jkb1xuICAgKiBjb20gbyBuw7ptZXJvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIGEgZXh0ZW5zw6NvIGRvcyBtZXNtb3MsIG1hbnRlbmRvLW9zIHNlbXByZSB2aXPDrXZlaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLWhlaWdodCcpIEBJbnB1dEJvb2xlYW4oKSBhdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG9jb3JyZXIgYWxndW0gZXJybyBuYSByZXF1aXNpw6fDo28gZGUgYnVzY2EgZG8gaXRlbS5cbiAgICogU2Vyw6EgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBvIG9iamV0byBkZSBlcnJvIHJldG9ybmFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtZXJyb3InKSBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG9jb3JyZXIgYWxndW1hIHNlbGXDp8Ojby5cbiAgICogU2Vyw6EgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBvIG9iamV0byBjb20gbyB2YWxvciBzZWxlY2lvbmFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc2VsZWN0ZWQnKSBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiAgRXZlbnRvIHF1ZSBzZXLDoSBkaXNwYXJhZG8gYW8gYWx0ZXJhciBvIG1vZGVsLlxuICAgKiAgUG9yIHBhcsOibWV0cm8gc2Vyw6EgcGFzc2FkbyBvIG5vdm8gdmFsb3IuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZXJ2aWNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICBwcm90ZWN0ZWQgZ2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBrZXlzRGVzY3JpcHRpb246IEFycmF5PGFueT47XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCB2YWx1ZVRvTW9kZWw7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZVRvTW9kZWwgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZExhYmVsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b0hlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgYXV0b0hlaWdodEluaXRpYWxWYWx1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBvbkNoYW5nZVByb3BhZ2F0ZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICBwcml2YXRlIGNvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgLyoqXG4gICAqIFNlcnZpw6dvIHJlc3BvbnPDoXZlbCBwb3IgYnVzY2FyIG9zIGRhZG9zIGRhIHRhYmVsYSBuYSBqYW5lbGEuIFBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBxdWUgaW1wbGVtZW50ZSBhIGludGVyZmFjZVxuICAgKiBgUG9Mb29rdXBGaWx0ZXJgIG91IHVtYSBVUkwuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSB1bSBzZXJ2acOnbywgc2Vyw6EgY29uY2F0ZW5hZGEgbmVzdGEgVVJMIG8gdmFsb3IgcXVlIGRlc2VqYS1zZSBmaWx0cmFyLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFyIG9yZGVuYcOnw6NvLCBhIGNvbHVuYSBvcmRlbmFkYSBzZXLDoSBlbnZpYWRhIGF0cmF2w6lzIGRvIHBhcsOibWV0cm8gYG9yZGVyYCwgcG9yIGV4ZW1wbG86XG4gICAqIC0gQ29sdW5hIGRlY3Jlc2NlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyJm9yZGVyPS1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiAtIENvbHVuYSBhc2NlbmRlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyJm9yZGVyPW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkbyBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBvIG1lc21vIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZG8uIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIEFvIGluaWNpYXIgbyBjYW1wbyBjb20gdmFsb3IsIG9zIHJlZ2lzdHJvcyBzZXLDo28gYnVzY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6XG4gICAqIGBgYFxuICAgKiBtb2RlbCA9IDEyMzQ7XG4gICAqXG4gICAqIEdFVCB1cmwvMTIzNFxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBlc3RpdmVyIGNvbSBtw7psdGlwbGEgc2VsZcOnw6NvIGhhYmlsaXRhZGE6XG4gICAqIGBgYFxuICAgKiBtb2RlbCA9IFsxMjM0LCA1Njc4XVxuICAgKlxuICAgKiBHRVQgdXJsPyR7ZmllbGRWYWx1ZX09MTIzNCw1Njc4XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IEVzdGEgVVJMIGRldmUgcmV0b3JuYXIgZSByZWNlYmVyIG9zIGRhZG9zIG5vIHBhZHLDo28gZGUgW0FQSSBkbyBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKSBlIHV0aWxpemEgb3MgdmFsb3Jlc1xuICAgKiBkZWZpbmlkb3MgbmFzIHByb3ByaWVkYWRlcyBgcC1maWVsZC1sYWJlbGAgZSBgcC1maWVsZC12YWx1ZWAgcGFyYSBhIGNvbnN0cnXDp8OjbyBkbyBgcG8tbG9va3VwYC5cbiAgICpcbiAgICogQ2FzbyBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmEgcmVhbGl6YXIgYSBidXNjYSBkZSB1bSByZWdpc3RybyBlc3BlY8OtZmljbywgbyB2YWxvciBxdWUgc2VcbiAgICogZGVzZWphIGZpbHRyYXIgc2Vyw6EgY29kaWZpY2FkbyB1dGlsaXphbmRvIGEgZnVuw6fDo28gW2VuY29kZVVSSUNvbXBvbmVudF0oaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1lbmNvZGV1cmljb21wb25lbnQtdXJpY29tcG9uZW50KVxuICAgKiBlIGNvbmNhdGVuYWRvIG5hIFVSTCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybC92YWxvciUyMHF1ZSUyMHNlJTIwZGVzZWphJTIwZmlsdHJhclxuICAgKiBgYGBcbiAgICpcbiAgICogPiBRdWFuZG8gaW5mb3JtYWRvIHVtIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRlIGEgaW50ZXJmYWNlIGBQb0xvb2t1cEZpbHRlcmAgbyB0cmF0YW1lbnRvIGRlIGVuY29kaW5nIGRvIHZhbG9yIGEgc2VyIGZpbHRyYWRvIGZpY2Fyw6EgYSBjYXJnbyBkbyBkZXNlbnZvbHZlZG9yLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1zZXJ2aWNlJykgc2V0IGZpbHRlclNlcnZpY2UoZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWx0ZXJTZXJ2aWNlID0gZmlsdGVyU2VydmljZTtcbiAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUnKSBzZXQgbm9BdXRvY29tcGxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ub0F1dG9jb21wbGV0ZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5vQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub0F1dG9jb21wbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uIEVzdGEgcHJvcHJpZWRhZGUgw6kgZGVzY29uc2lkZXJhZGEgcXVhbmRvIG8gY2FtcG8gZXN0w6EgZGVzYWJpbGl0YWRvIChwLWRpc2FibGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLnZhbHVlVG9Nb2RlbCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gPGFueT5kaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWZhdWx0U2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLCBASW5qZWN0KEluamVjdG9yKSBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5nZXRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDb250cm9sKCk7XG4gIH1cblxuICBjbGVhbk1vZGVsKCkge1xuICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLm11bHRpcGxlICYmIGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuZmlsdGVyU2VydmljZSwgdGhpcy5maWVsZFZhbHVlLCB0aGlzLm11bHRpcGxlKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uVG91Y2hlZChmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZ1bmM7XG4gIH1cblxuICAvLyBTZWxlY2lvbmEgbyB2YWxvciBkbyBtb2RlbC5cbiAgc2VsZWN0VmFsdWUodmFsdWVTZWxlY3RlZDogYW55KSB7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSB2YWx1ZVNlbGVjdGVkO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMudmFsdWVUb01vZGVsKTtcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWVTZWxlY3RlZCk7XG4gIH1cblxuICBjYWxsT25DaGFuZ2UodmFsdWU6IGFueSkge1xuICAgIC8vIFF1YW5kbyBvIGlucHV0IG7Do28gcG9zc3VpIHVtIGZvcm11bMOhcmlvLCBlbnTDo28gZXN0YSBmdW7Dp8OjbyBuw6NvIMOpIHJlZ2lzdHJhZGEuXG4gICAgaWYgKHRoaXMub25DaGFuZ2VQcm9wYWdhdGUpIHtcbiAgICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9sZFZhbHVlVG9Nb2RlbCAhPT0gdGhpcy52YWx1ZVRvTW9kZWwpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy52YWx1ZVRvTW9kZWwpO1xuICAgIH1cblxuICAgIC8vIEFybWF6ZW5hciBvIHZhbG9yIGFudGlnbyBkbyBtb2RlbFxuICAgIHRoaXMub2xkVmFsdWVUb01vZGVsID0gdGhpcy52YWx1ZVRvTW9kZWw7XG4gIH1cblxuICBzZWFyY2hCeUlkKHZhbHVlKSB7XG4gICAgbGV0IGNoZWNrZWRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgaWYgKHR5cGVvZiBjaGVja2VkVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjaGVja2VkVmFsdWUgPSBjaGVja2VkVmFsdWUudHJpbSgpO1xuICAgIH1cblxuICAgIGlmIChjaGVja2VkVmFsdWUgIT09ICcnKSB7XG4gICAgICBjb25zdCBvbGREaXNhYmxlID0gdGhpcy5kaXNhYmxlZDtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgIC8vIDpUT0RPOiBSZXRpcmFyIG5vIGZ1dHVybyBwb2lzIGVzc2Ugc2V0VGltZW91dCBmb2kgZmVpdG9cbiAgICAgICAgLy8gcG9pcyBxdWFuZG8gbyBjYW1wbyDDqSBhY2lvbmFkbyBwZWxvcyBtw6l0b2RvcyBzZXRWYWx1ZSBvdSBwYXRjaFZhbHVlXG4gICAgICAgIC8vIGEgbXVkYW7Dp2EgbsOjbyDDqSBkZXRlY3RhZGFcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbnRyb2wubWFya0FzUGVuZGluZygpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2VcbiAgICAgICAgLmdldE9iamVjdEJ5VmFsdWUodmFsdWUsIHRoaXMuZmlsdGVyUGFyYW1zKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gb2xkRGlzYWJsZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50Py5sZW5ndGggfHwgKCFBcnJheS5pc0FycmF5KGVsZW1lbnQpICYmIGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQpICYmIGVsZW1lbnQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzY2xhaW1lcnMoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0TW9kZWwodGhpcy5tdWx0aXBsZSA/IGVsZW1lbnQgOiBbZWxlbWVudF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGFic3RyYWN0Q29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlPy5sZW5ndGggfHwgKCFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZSkpIHtcbiAgICAgIC8vIEVzdGEgY29uZGnDp8OjbyDDqSBleGVjdXRhZGEgc29tZW50ZSBxdWFuZG8gw6kgcGFzc2FkbyBvIElEIHBhcmEgcmVhbGl6YXIgYSBidXNjYSBwZWxvIElELlxuICAgICAgdGhpcy5zZWFyY2hCeUlkKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhblZpZXdWYWx1ZSgpIHtcbiAgICB0aGlzLnNldFZpZXdWYWx1ZSgnJywge30pO1xuICAgIHRoaXMub2xkVmFsdWUgPSAnJztcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IG51bGw7XG4gIH1cblxuICAvLyBGb3JtYXRhIGEgbGFiZWwgZG8gY2FtcG8uXG4gIHByb3RlY3RlZCBnZXRGb3JtYXR0ZWRMYWJlbCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmtleXNEZXNjcmlwdGlvbi5tYXAoY29sdW1uID0+IHZhbHVlW2NvbHVtbl0pLmpvaW4oJyAtICcpIDogJyc7XG4gIH1cblxuICAvLyBDaGFtYSBvIG3DqXRvZG8gd3JpdGVWYWx1ZSBlIHByZWVuY2hlIG8gbW9kZWwuXG4gIHByb3RlY3RlZCBzZWxlY3RNb2RlbChvcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFsuLi5vcHRpb25zXTtcblxuICAgICAgY29uc3QgbmV3TW9kZWwgPSB0aGlzLm11bHRpcGxlID8gb3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKSA6IG9wdGlvbnNbMF1bdGhpcy5maWVsZFZhbHVlXTtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUobmV3TW9kZWwpO1xuXG4gICAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IG9wdGlvbnNbMF1bdGhpcy5maWVsZExhYmVsXTtcbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5nZXRGb3JtYXR0ZWRMYWJlbChvcHRpb25zWzBdKSwgb3B0aW9uc1swXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNb2RlbChtb2RlbDogYW55KSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZShtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZXJ2aWNlKHNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKGlzVHlwZW9mKHNlcnZpY2UsICdvYmplY3QnKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gPFBvTG9va3VwRmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgIH1cblxuICAgIGlmIChzZXJ2aWNlICYmIGlzVHlwZW9mKHNlcnZpY2UsICdzdHJpbmcnKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5kZWZhdWx0U2VydmljZTtcbiAgICAgIHRoaXMuc2VydmljZS5zZXRDb25maWcoc2VydmljZSwgdGhpcy5maWVsZFZhbHVlLCB0aGlzLm11bHRpcGxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2woKSB7XG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwsIEluamVjdEZsYWdzLlNlbGYpO1xuXG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sID0gbmdDb250cm9sLmNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29sdW1uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkTGFiZWwpIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW107XG5cbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gdGhpcy5jb2x1bW5zLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuZmllbGRMYWJlbCkubWFwKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9wZXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXRyaWJ1aSB1bSBvdSBtYWlzIHZhbG9yZXMgYW8gY2FtcG8uXG4gIGFic3RyYWN0IHNldFZpZXdWYWx1ZSh2YWx1ZTogYW55LCBvYmplY3Q6IGFueSk6IHZvaWQ7XG5cbiAgLy8gTcOpdG9kbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gcGFyYSBhYnJpciBvIGxvb2t1cC5cbiAgYWJzdHJhY3Qgb3Blbkxvb2t1cCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHNldERpc2NsYWltZXJzKGEpO1xuICBhYnN0cmFjdCB1cGRhdGVWaXNpYmxlSXRlbXMoKTtcbn1cbiJdfQ==
|
|
451
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFzRCxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTVFOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE1BQU0sT0FBZ0IscUJBQXFCO0lBNll6QyxZQUFvQixjQUFxQyxFQUE0QixRQUFrQjtRQUFuRixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTNZdkc7Ozs7Ozs7Ozs7V0FVRztRQUNvQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBaUxsRTs7Ozs7Ozs7V0FRRztRQUN5QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUU1RSxpREFBaUQ7UUFDZixVQUFLLEdBQVksS0FBSyxDQUFDO1FBRXpEOzs7Ozs7Ozs7O1dBVUc7UUFDa0MsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUvRDs7Ozs7Ozs7O1dB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VWhCLE1BQU0sU0FBQyxZQUFZO3FCQVVuQixNQUFNLFNBQUMsVUFBVTs0QkFvRmpCLEtBQUssU0FBQyxrQkFBa0I7NkJBa0J4QixLQUFLLFNBQUMsbUJBQW1CO3VCQWdCekIsS0FBSyxTQUFDLFlBQVk7dUJBa0JsQixLQUFLLFNBQUMsWUFBWTs7QUF4WG9CO0lBQWYsWUFBWSxFQUFFO3dEQUE0QjtBQTBMdEI7SUFBZixZQUFZLEVBQUU7NkRBQWlDO0FBRzFDO0lBQWYsWUFBWSxFQUFFO29EQUF3QjtBQWFwQjtJQUFmLFlBQVksRUFBRTt1REFBMkI7QUFZdkI7SUFBZixZQUFZLEVBQUU7eURBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0RmxhZ3MsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWFkdmFuY2VkLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLWZpbHRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIHV0aWxpemFkbyBwYXJhIGFicmlyIHVtYSBqYW5lbGEgZGUgYnVzY2EgY29tIHVtYSB0YWJlbGEgcXVlIGxpc3RhIGRhZG9zIGRlIHVtIHNlcnZpw6dvLiBOZXN0YSBqYW5lbGEgw6kgcG9zc8OtdmVsIGJ1c2NhciBlXG4gKiBzZWxlY2lvbmFyIHVtIG91IG1haXMgcmVnaXN0cm9zIHF1ZSBzZXLDo28gZW52aWFkb3MgcGFyYSBvIGNhbXBvLiBPIGBwby1sb29rdXBgIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gZGlnaXRlIHVtIHZhbG9yIGUgcHJlc3Npb25lIGEgdGVjbGEgKlRBQiogcGFyYVxuICogYnVzY2FyIHVtIHJlZ2lzdHJvLlxuICpcbiAqID4gQ2FzbyBvIGNhbXBvIHNlamEgaW5pY2lhZG8gb3UgcHJlZW5jaGlkbyBjb20gdW0gdmFsb3IgaW5leGlzdGVudGUgbmEgYnVzY2EsIG8gbWVzbW8gc2Vyw6EgbGltcGFkby5cbiAqIE5vIHNlZ3VuZG8gY2FzbyBvY29ycmVyw6EgYXDDs3MgZXN0ZSBwZXJkZXIgbyBmb2NvOyBhbWJvcyBvcyBjYXNvcyBvIGNhbXBvIGZpY2Fyw6EgaW52w6FsaWRvIHF1YW5kbyByZXF1ZXJpZG8uXG4gKlxuICogPiBFbnF1YW50byBvIGNvbXBvbmVudGUgcmVhbGl6YSBhIHJlcXVpc2nDp8OjbyBhbyBzZXJ2aWRvciwgbyBjb21wb25lbnRlIGZpY2Fyw6EgZGVzYWJpbGl0YWRvIGUgY29tIG8gc3RhdHVzIGludGVybm8gZG9cbiAqIFttb2RlbG9dKGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3JtLXZhbGlkYXRpb24jY3JlYXRpbmctYXN5bmNocm9ub3VzLXZhbGlkYXRvcnMpIGNvbW8gYHBlbmRpbmdgLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSBuw6NvIMOpIHJlY29tZW5kYWRvIHF1YW5kbyBhIGJ1c2NhIGRvcyBkYWRvcyBwb3NzdWlyIHBvdWNhcyBpbmZvcm1hw6fDtWVzLCBwYXJhIGlzc28gdXRpbGl6ZSBvdXRyb3MgY29tcG9uZW50ZXMgY29tbyBvXG4gKiBgcG8tc2VsZWN0YCBvdSBvIGBwby1jb21ib2AuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTG9va3VwQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmFsaWRhdG9yLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTGFiZWwgZG8gY2FtcG8uXG4gICAqXG4gICAqID4gUXVhbmRvIHV0aWxpemFyIGVzdGEgcHJvcHJpZWRhZGUgbyBzZXUgdmFsb3Igc2Vyw6EgdXRpbGl6YWRvIGNvbW8gdMOtdHVsbyBkYSBtb2RhbCBkbyBjb21wb25lbnRlIGNhc28gbsOjbyB0ZW5oYVxuICAgKiBzaWRvIGRlZmluaWRvIHVtIGBtb2RhbFRpdGxlYCBuYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AuXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1sb29rdXBgLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0xvb2t1cExpdGVyYWxzID0ge1xuICAgKiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCcsXG4gICAqICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdDYW5jZWwnLFxuICAgKiAgICBtb2RhbFBsYWNlaG9sZGVyOiAnU2VhcmNoIFZhbHVlJyxcbiAgICogICAgbW9kYWxUYWJsZU5vQ29sdW1uczogJ05vIGNvbHVtbnMnLFxuICAgKiAgICBtb2RhbFRhYmxlTm9EYXRhOiAnTm8gZGF0YScsXG4gICAqICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogJ0xvYWRpbmcgZGF0YScsXG4gICAqICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6ICdMb2FkIG1vcmUnLFxuICAgKiAgICBtb2RhbFRpdGxlOiAnU2VsZWN0IGEgdXNlcicsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdGVyJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnUmV0dXJuJyxcbiAgICogICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ1ByZXNlbnRpbmcgcmVzdWx0cyBmaWx0ZXJlZCBieTonXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscyA9IHtcbiAgICogICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1sb29rdXBcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLWxvb2t1cD5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgbGl0ZXJhbHM/OiBQb0xvb2t1cExpdGVyYWxzO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBkbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBNZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBvIGNhbXBvIG7Do28gZXN0aXZlciBwcmVlbmNoaWRvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqIE5vbWUgZSBJZCBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIHZhbG9yIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IEF0ZW7Dp8OjbzogQ2FzbyBuw6NvIHNlamEgcGFzc2FkYSBvdSB0ZW5oYSBvIGNvbnRlw7pkbyBpbmNvcnJldG8sIG7Do28gaXLDoSBhdHVhbGl6YXIgbyBtb2RlbCBkbyBmb3JtdWzDoXJpby5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIGZpZWxkVmFsdWU6IHN0cmluZztcblxuICAvKiogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wbyBlIGNvbW8gZmlsdHJvIGRlbnRybyBkYSBqYW5lbGEuICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWU7XG4gICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbdGhpcy5maWVsZExhYmVsXTtcbiAgfVxuXG4gIGdldCBmaWVsZExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZExhYmVsO1xuICB9XG5cbiAgLyoqIFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gY29tbyBwYXLDom1ldHJvIHBhcmEgYSBVUkwgb3UgYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9Mb29rdXBGaWx0ZXJgLiAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXBhcmFtcycpIGZpbHRlclBhcmFtcz86IGFueTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZG8gY2FtcG8uXG4gICAqXG4gICAqIFJlY2ViZSB1bWEgZnVuw6fDo28gcXVlIGRldmUgcmV0b3JuYXIgdW1hICpzdHJpbmcqIGNvbSBvL29zIHZhbG9yZXMgZG8gb2JqZXRvIGZvcm1hdGFkb3MgcGFyYSBleGliacOnw6NvLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGZpZWxkRm9ybWF0KG9iaikge1xuICAgKiAgIHJldHVybiBgJHtvYmouaWR9IC0gJHtvYmoubmFtZX1gO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc29icmVww7VlIG8gdmFsb3IgZGEgcHJvcHJpZWRhZGUgYHAtZmllbGQtbGFiZWxgIG5hIGRlc2NyacOnw6NvIGRvIGNhbXBvLlxuICAgKlxuICAgKiBQb2RlLXNlIGluZm9ybWFyIHVtYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRlc2VqYSBleGliaXIgY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wbywgUG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiA8cG8tbG9va3VwXG4gICAqICAuLi5cbiAgICogIFtwLWZpZWxkLWZvcm1hdF09XCJbJ2lkJywnbmlja25hbWUnXVwiXG4gICAqICAuLi5cbiAgICogPlxuICAgKlxuICAgKiBPYmpldG8gcmV0b3JuYWRvOlxuICAgKiAgIHtcbiAgICogICAgICBpZDoxMjMsXG4gICAqICAgICAgbmFtZTogJ0tha2Fyb3RvJyxcbiAgICogICAgICBuaWNrbmFtZTogJ0dva3UnLFxuICAgKiAgIH1cbiAgICogQXByZXNlbnRhw6fDo28gbm8gY2FtcG86IDEyMyAtIEdva3VcbiAgICogYGBgXG4gICAqXG4gICAqID4gU2Vyw6EgdXRpbGl6YWRvIGAgLSBgIGNvbW8gc2VwYXJhZG9yLlxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLWZvcm1hdCcpIGZpZWxkRm9ybWF0PzogKCh2YWx1ZSkgPT4gc3RyaW5nKSB8IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIExpc3RhIGRhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICogRXNzYSBwcm9wcmllZGFkZSBkZXZlIHJlY2ViZXIgdW0gYXJyYXkgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgUG9Mb29rdXBDb2x1bW4uXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIGNvbHVtbnM/OiBBcnJheTxQb0xvb2t1cENvbHVtbj47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBPIGNhbXBvIGNvbnRlciBgcC1yZXF1aXJlZGA7XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9uYWwnKSBvcHRpb25hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBvYmpldG9zIGRvcyBjYW1wb3MgcXVlIHNlcsOjbyBjcmlhZG9zIG5hIGJ1c2NhIGF2YW7Dp2FkYS5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIG9iamV0byBvdSBlbnTDo28gZWxlIGVzdGVqYSBlbSBicmFuY28gbyBsaW5rIGRlIGJ1c2NhIGF2YW7Dp2FkYSBmaWNhcsOhIGVzY29uZGlkby5cbiAgICpcbiAgICogRXhlbXBsbyBkZSBVUkwgY29tIGJ1c2NhIGF2YW7Dp2FkYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmbmFtZT1Ub255JTIwU3Rhcmsmbmlja25hbWU9SG9tZW0lMjBkZSUyMEZlcnJvXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIGFsZ3VtIHBhcsOibWV0cm8gc2VqYSB1bWEgbGlzdGEsIGEgY29uY2F0ZW5hw6fDo28gw6kgZmVpdGEgdXRpbGl6YW5kbyB2w61yZ3VsYS5cbiAgICogRXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmbmFtZT1Ub255JTIwU3RhcmssUGV0ZXIlMjBQYXJrZXIsR29oYW5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYWR2YW5jZWQtZmlsdGVycycpIGFkdmFuY2VkRmlsdGVyczogQXJyYXk8UG9Mb29rdXBBZHZhbmNlZEZpbHRlcj47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBhIHRhYmVsYSBleGliaWRhIG5vIHJldG9ybm8gZGEgY29uc3VsdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwnKSBASW5wdXRCb29sZWFuKCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXhpYmUgdW0gw61jb25lIHF1ZSBwZXJtaXRlIGxpbXBhciBvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtY2xlYW4nKSBASW5wdXRCb29sZWFuKCkgY2xlYW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGEgc2VsZcOnw6NvIGRlIG3Dumx0aXBsb3MgaXRlbnMuXG4gICAqXG4gICAqID4gUXVhbmRvIGhhYmlsaXRhZG8gbyB2YWxvciBkbyBjYW1wbyBwYXNzYXLDoSBhIHNlciB1bWEgbGlzdGEgZGUgdmFsb3JlcywgcG9yIGV4ZW1wbG86IGBbIDEyMzQ1LCA2Nzg5MCBdYFxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbXVsdGlwbGUnKSBASW5wdXRCb29sZWFuKCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgYWx0dXJhIGRvIGNvbXBvbmVudGUgc2Vyw6EgYXV0byBhanVzdMOhdmVsLCBwb3NzdWluZG8gdW1hIGFsdHVyYSBtaW5pbWEgcG9yw6ltIGEgYWx0dXJhIG3DoXhpbWEgc2Vyw6EgZGUgYWNvcmRvXG4gICAqIGNvbSBvIG7Dum1lcm8gZGUgaXRlbnMgc2VsZWNpb25hZG9zIGUgYSBleHRlbnPDo28gZG9zIG1lc21vcywgbWFudGVuZG8tb3Mgc2VtcHJlIHZpc8OtdmVpcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8taGVpZ2h0JykgQElucHV0Qm9vbGVhbigpIGF1dG9IZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bSBlcnJvIG5hIHJlcXVpc2nDp8OjbyBkZSBidXNjYSBkbyBpdGVtLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGRlIGVycm8gcmV0b3JuYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lcnJvcicpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bWEgc2VsZcOnw6NvLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGNvbSBvIHZhbG9yIHNlbGVjaW9uYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zZWxlY3RlZCcpIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqICBFdmVudG8gcXVlIHNlcsOhIGRpc3BhcmFkbyBhbyBhbHRlcmFyIG8gbW9kZWwuXG4gICAqICBQb3IgcGFyw6JtZXRybyBzZXLDoSBwYXNzYWRvIG8gbm92byB2YWxvci5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gIHByb3RlY3RlZCBnZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGtleXNEZXNjcmlwdGlvbjogQXJyYXk8YW55PjtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIHZhbHVlVG9Nb2RlbDtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlVG9Nb2RlbCA9IG51bGw7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmc7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhdXRvSGVpZ2h0SW5pdGlhbFZhbHVlOiBib29sZWFuO1xuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuXG4gIHByaXZhdGUgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcblxuICAvKipcbiAgICogU2VydmnDp28gcmVzcG9uc8OhdmVsIHBvciBidXNjYXIgb3MgZGFkb3MgZGEgdGFiZWxhIG5hIGphbmVsYS4gUG9kZSBzZXIgaW5mb3JtYWRvIHVtIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRlIGEgaW50ZXJmYWNlXG4gICAqIGBQb0xvb2t1cEZpbHRlcmAgb3UgdW1hIFVSTC5cbiAgICpcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHVtIHNlcnZpw6dvLCBzZXLDoSBjb25jYXRlbmFkYSBuZXN0YSBVUkwgbyB2YWxvciBxdWUgZGVzZWphLXNlIGZpbHRyYXIsIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gdXRpbGl6YXIgb3JkZW5hw6fDo28sIGEgY29sdW5hIG9yZGVuYWRhIHNlcsOhIGVudmlhZGEgYXRyYXbDqXMgZG8gcGFyw6JtZXRybyBgb3JkZXJgLCBwb3IgZXhlbXBsbzpcbiAgICogLSBDb2x1bmEgZGVjcmVzY2VudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXImb3JkZXI9LW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIC0gQ29sdW5hIGFzY2VuZGVudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXImb3JkZXI9bmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogU2UgZm9yIGRlZmluaWRvIGEgcHJvcHJpZWRhZGUgYHAtZmlsdGVyLXBhcmFtc2AsIG8gbWVzbW8gdGFtYsOpbSBzZXLDoSBjb25jYXRlbmFkby4gUG9yIGV4ZW1wbG8sIHBhcmEgb1xuICAgKiBwYXLDom1ldHJvIGB7IGFnZTogMjMgfWAgYSBVUkwgZmljYXJpYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmYWdlPTIzJmZpbHRlcj1QZXRlclxuICAgKiBgYGBcbiAgICpcbiAgICogQW8gaW5pY2lhciBvIGNhbXBvIGNvbSB2YWxvciwgb3MgcmVnaXN0cm9zIHNlcsOjbyBidXNjYWRvcyBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIG1vZGVsID0gMTIzNDtcbiAgICpcbiAgICogR0VUIHVybC8xMjM0XG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIGVzdGl2ZXIgY29tIG3Dumx0aXBsYSBzZWxlw6fDo28gaGFiaWxpdGFkYTpcbiAgICogYGBgXG4gICAqIG1vZGVsID0gWzEyMzQsIDU2NzhdXG4gICAqXG4gICAqIEdFVCB1cmw/JHtmaWVsZFZhbHVlfT0xMjM0LDU2NzhcbiAgICogYGBgXG4gICAqXG4gICAqID4gRXN0YSBVUkwgZGV2ZSByZXRvcm5hciBlIHJlY2ViZXIgb3MgZGFkb3Mgbm8gcGFkcsOjbyBkZSBbQVBJIGRvIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpIGUgdXRpbGl6YSBvcyB2YWxvcmVzXG4gICAqIGRlZmluaWRvcyBuYXMgcHJvcHJpZWRhZGVzIGBwLWZpZWxkLWxhYmVsYCBlIGBwLWZpZWxkLXZhbHVlYCBwYXJhIGEgY29uc3RydcOnw6NvIGRvIGBwby1sb29rdXBgLlxuICAgKlxuICAgKiBDYXNvIG8gdXN1w6FyaW8gZGlnaXRlIHVtIHZhbG9yIGUgcHJlc3Npb25lIGEgdGVjbGEgKlRBQiogcGFyYSByZWFsaXphciBhIGJ1c2NhIGRlIHVtIHJlZ2lzdHJvIGVzcGVjw61maWNvLCBvIHZhbG9yIHF1ZSBzZVxuICAgKiBkZXNlamEgZmlsdHJhciBzZXLDoSBjb2RpZmljYWRvIHV0aWxpemFuZG8gYSBmdW7Dp8OjbyBbZW5jb2RlVVJJQ29tcG9uZW50XShodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWVuY29kZXVyaWNvbXBvbmVudC11cmljb21wb25lbnQpXG4gICAqIGUgY29uY2F0ZW5hZG8gbmEgVVJMIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsL3ZhbG9yJTIwcXVlJTIwc2UlMjBkZXNlamElMjBmaWx0cmFyXG4gICAqIGBgYFxuICAgKlxuICAgKiA+IFF1YW5kbyBpbmZvcm1hZG8gdW0gc2VydmnDp28gcXVlIGltcGxlbWVudGUgYSBpbnRlcmZhY2UgYFBvTG9va3VwRmlsdGVyYCBvIHRyYXRhbWVudG8gZGUgZW5jb2RpbmcgZG8gdmFsb3IgYSBzZXIgZmlsdHJhZG8gZmljYXLDoSBhIGNhcmdvIGRvIGRlc2Vudm9sdmVkb3IuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBzZXQgZmlsdGVyU2VydmljZShmaWx0ZXJTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlciB8IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UgPSBmaWx0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICB9XG5cbiAgZ2V0IGZpbHRlclNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby4gRXN0YSBwcm9wcmllZGFkZSDDqSBkZXNjb25zaWRlcmFkYSBxdWFuZG8gbyBjYW1wbyBlc3TDoSBkZXNhYmlsaXRhZG8gKHAtZGlzYWJsZWQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMudmFsdWVUb01vZGVsKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSA8YW55PmRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlZmF1bHRTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlclNlcnZpY2UsIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmdldFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW4oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldENvbnRyb2woKTtcbiAgfVxuXG4gIGNsZWFuTW9kZWwoKSB7XG4gICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMubXVsdGlwbGUgJiYgaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykpIHtcbiAgICAgIHRoaXMuc2VydmljZS5zZXRDb25maWcodGhpcy5maWx0ZXJTZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWwuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSA9IGZ1bmM7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWwuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZnVuYztcbiAgfVxuXG4gIC8vIFNlbGVjaW9uYSBvIHZhbG9yIGRvIG1vZGVsLlxuICBzZWxlY3RWYWx1ZSh2YWx1ZVNlbGVjdGVkOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHZhbHVlU2VsZWN0ZWQ7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy52YWx1ZVRvTW9kZWwpO1xuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZVNlbGVjdGVkKTtcbiAgfVxuXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gUXVhbmRvIG8gaW5wdXQgbsOjbyBwb3NzdWkgdW0gZm9ybXVsw6FyaW8sIGVudMOjbyBlc3RhIGZ1bsOnw6NvIG7Do28gw6kgcmVnaXN0cmFkYS5cbiAgICBpZiAodGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub2xkVmFsdWVUb01vZGVsICE9PSB0aGlzLnZhbHVlVG9Nb2RlbCkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnZhbHVlVG9Nb2RlbCk7XG4gICAgfVxuXG4gICAgLy8gQXJtYXplbmFyIG8gdmFsb3IgYW50aWdvIGRvIG1vZGVsXG4gICAgdGhpcy5vbGRWYWx1ZVRvTW9kZWwgPSB0aGlzLnZhbHVlVG9Nb2RlbDtcbiAgfVxuXG4gIHNlYXJjaEJ5SWQodmFsdWUpIHtcbiAgICBsZXQgY2hlY2tlZFZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIGNoZWNrZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNoZWNrZWRWYWx1ZSA9IGNoZWNrZWRWYWx1ZS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrZWRWYWx1ZSAhPT0gJycpIHtcbiAgICAgIGNvbnN0IG9sZERpc2FibGUgPSB0aGlzLmRpc2FibGVkO1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgLy8gOlRPRE86IFJldGlyYXIgbm8gZnV0dXJvIHBvaXMgZXNzZSBzZXRUaW1lb3V0IGZvaSBmZWl0b1xuICAgICAgICAvLyBwb2lzIHF1YW5kbyBvIGNhbXBvIMOpIGFjaW9uYWRvIHBlbG9zIG3DqXRvZG9zIHNldFZhbHVlIG91IHBhdGNoVmFsdWVcbiAgICAgICAgLy8gYSBtdWRhbsOnYSBuw6NvIMOpIGRldGVjdGFkYVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29udHJvbC5tYXJrQXNQZW5kaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZVxuICAgICAgICAuZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSwgdGhpcy5maWx0ZXJQYXJhbXMpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBvbGREaXNhYmxlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQ/Lmxlbmd0aCB8fCAoIUFycmF5LmlzQXJyYXkoZWxlbWVudCkgJiYgZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudCkgJiYgZWxlbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREaXNjbGFpbWVycyhlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbCh0aGlzLm11bHRpcGxlID8gZWxlbWVudCA6IFtlbGVtZW50XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWU/Lmxlbmd0aCB8fCAoIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlKSkge1xuICAgICAgLy8gRXN0YSBjb25kacOnw6NvIMOpIGV4ZWN1dGFkYSBzb21lbnRlIHF1YW5kbyDDqSBwYXNzYWRvIG8gSUQgcGFyYSByZWFsaXphciBhIGJ1c2NhIHBlbG8gSUQuXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuVmlld1ZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFuVmlld1ZhbHVlKCkge1xuICAgIHRoaXMuc2V0RGlzY2xhaW1lcnMoW10pO1xuICAgIHRoaXMuc2V0Vmlld1ZhbHVlKCcnLCB7fSk7XG4gICAgdGhpcy5vbGRWYWx1ZSA9ICcnO1xuICAgIHRoaXMudmFsdWVUb01vZGVsID0gbnVsbDtcbiAgfVxuXG4gIC8vIEZvcm1hdGEgYSBsYWJlbCBkbyBjYW1wby5cbiAgcHJvdGVjdGVkIGdldEZvcm1hdHRlZExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMua2V5c0Rlc2NyaXB0aW9uLm1hcChjb2x1bW4gPT4gdmFsdWVbY29sdW1uXSkuam9pbignIC0gJykgOiAnJztcbiAgfVxuXG4gIC8vIENoYW1hIG8gbcOpdG9kbyB3cml0ZVZhbHVlIGUgcHJlZW5jaGUgbyBtb2RlbC5cbiAgcHJvdGVjdGVkIHNlbGVjdE1vZGVsKG9wdGlvbnM6IEFycmF5PGFueT4pIHtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gWy4uLm9wdGlvbnNdO1xuXG4gICAgICBjb25zdCBuZXdNb2RlbCA9IHRoaXMubXVsdGlwbGUgPyBvcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pIDogb3B0aW9uc1swXVt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZShuZXdNb2RlbCk7XG5cbiAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gb3B0aW9uc1swXVt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmdldEZvcm1hdHRlZExhYmVsKG9wdGlvbnNbMF0pLCBvcHRpb25zWzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlcnZpY2Uoc2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Mb29rdXBGaWx0ZXJTZXJ2aWNlPnNlcnZpY2U7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyhzZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbCgpIHtcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgSW5qZWN0RmxhZ3MuU2VsZik7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb2x1bW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGRMYWJlbCkge1xuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbdGhpcy5maWVsZExhYmVsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbXTtcblxuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5maWVsZExhYmVsKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LnByb3BlcnR5KTtcbiAgICB9XG4gIH1cblxuICAvLyBBdHJpYnVpIHVtIG91IG1haXMgdmFsb3JlcyBhbyBjYW1wby5cbiAgYWJzdHJhY3Qgc2V0Vmlld1ZhbHVlKHZhbHVlOiBhbnksIG9iamVjdDogYW55KTogdm9pZDtcblxuICAvLyBNw6l0b2RvIGNvbSBhIGltcGxlbWVudGHDp8OjbyBwYXJhIGFicmlyIG8gbG9va3VwLlxuICBhYnN0cmFjdCBvcGVuTG9va3VwKCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3Qgc2V0RGlzY2xhaW1lcnMoYSk7XG4gIGFic3RyYWN0IHVwZGF0ZVZpc2libGVJdGVtcygpO1xufVxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ElementRef, forwardRef, Injector, Renderer2, ViewChild } from '@angular/core';
|
|
2
|
-
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
2
|
+
import { NgControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
3
|
import { PoLookupBaseComponent } from './po-lookup-base.component';
|
|
4
4
|
import { PoLookupFilterService } from './services/po-lookup-filter.service';
|
|
5
5
|
import { PoLookupModalService } from './services/po-lookup-modal.service';
|
|
@@ -18,6 +18,11 @@ const providers = [
|
|
|
18
18
|
// eslint-disable-next-line
|
|
19
19
|
useExisting: forwardRef(() => PoLookupComponent),
|
|
20
20
|
multi: true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
provide: NgControl,
|
|
24
|
+
useExisting: forwardRef(() => PoLookupComponent),
|
|
25
|
+
multi: false
|
|
21
26
|
}
|
|
22
27
|
];
|
|
23
28
|
/**
|
|
@@ -329,4 +334,4 @@ PoLookupComponent.ctorParameters = () => [
|
|
|
329
334
|
PoLookupComponent.propDecorators = {
|
|
330
335
|
inputEl: [{ type: ViewChild, args: ['inp', { read: ElementRef, static: false },] }]
|
|
331
336
|
};
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUdSLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLDBCQUEwQjtBQUMxQixNQUFNLFNBQVMsR0FBRztJQUNoQixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCO1FBQ0UsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRCxLQUFLLEVBQUUsSUFBSTtLQUNaO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsYUFBYTtRQUN0QiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRCxLQUFLLEVBQUUsSUFBSTtLQUNaO0NBQ0YsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdERztBQU1ILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxxQkFBcUI7SUFpQjFELFlBQ1UsUUFBbUIsRUFD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QVE7OztzQkE4RlAsU0FBUyxTQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERvQ2hlY2ssXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvTG9va3VwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbG9va3VwLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTG9va3VwTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtbW9kYWwuc2VydmljZSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTG9va3VwRmlsdGVyU2VydmljZSxcbiAgUG9Mb29rdXBNb2RhbFNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0xvb2t1cENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb29rdXBDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1cbl07XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvTG9va3VwQmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIFF1YW5kbyBleGlzdGUgbXVpdG9zIGRhZG9zIG8gcG8tbG9va3VwIHBvciBwYWRyw6NvIHRyYXogYXBlbmFzIDEwIGl0ZW5zIG5hIHRhYmVsYSBlIG9zIGRlbWFpcyBzw6NvIGNhcnJlZ2Fkb3MgcG9yIGRlbWFuZGEgYXRyYXbDqXMgZG9cbiAqIGJvdMOjbyAnQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zJy4gUGFyYSBxdWUgZnVuY2lvbmUgY29ycmV0YW1lbnRlLCDDqSBpbXBvcnRhbnRlIHF1ZSBvIHNlcnZpw6dvIHNpZ2Egb1xuICogW0d1aWEgZGUgaW1wbGVtZW50YcOnw6NvIGRhcyBBUElzIFRPVFZTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpLlxuICpcbiAqIEltcG9ydGFudGU6XG4gKlxuICogLSBDYXNvIG8gcG8tbG9va3VwIGNvbnRlbmhhIG8gWyhuZ01vZGVsKV0gc2VtIG8gYXRyaWJ1dG8gbmFtZSwgb2NvcnJlcsOhIHVtIGVycm8gZGUgYW5ndWxhci5cbiAqIEVudMOjbyBzZXLDoSBuZWNlc3PDoXJpbyBpbmZvcm1hciBvIGF0cmlidXRvIG5hbWUgb3UgbyBhdHJpYnV0byBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIuXG4gKiBgYGBcbiAqIDxwby1sb29rdXBcbiAqICAgWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVwiXG4gKiAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cbiAqIDwvcG8tbG9va3VwPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLWJhc2ljXCIgdGl0bGU9XCJQTyBMb29rdXAgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1iYXNpYy9zYW1wbGUtcG8tbG9va3VwLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1iYXNpYy9zYW1wbGUtcG8tbG9va3VwLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxvb2t1cC1sYWJzXCIgdGl0bGU9XCJQTyBMb29rdXAgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLWxhYnMvc2FtcGxlLXBvLWxvb2t1cC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1sYWJzL3NhbXBsZS1wby1sb29rdXAtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtaGVyb1wiIHRpdGxlPVwiUE8gTG9va3VwIC0gSGVyb1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLWhlcm8vc2FtcGxlLXBvLWxvb2t1cC1oZXJvLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvL3NhbXBsZS1wby1sb29rdXAtaGVyby5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtaGVyby1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBMb29rdXAgLSBIZXJvIFJlYWN0aXZlIEZvcm1cIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLWhlcm8tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbG9va3VwLWhlcm8tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtc3ctZmlsbXNcIiB0aXRsZT1cIlBPIExvb2t1cCAtIFN0YXIgV2FycyBmaWxtc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zL3NhbXBsZS1wby1sb29rdXAtc3ctZmlsbXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zL3NhbXBsZS1wby1sb29rdXAtc3ctZmlsbXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy9zYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtbXVsdGlwbGVcIiB0aXRsZT1cIlBPIExvb2t1cCAtIE11bHRpcGxlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUvc2FtcGxlLXBvLWxvb2t1cC1tdWx0aXBsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUvc2FtcGxlLXBvLWxvb2t1cC1tdWx0aXBsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlL3NhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWxvb2t1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1sb29rdXAuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9Mb29rdXBDb21wb25lbnQgZXh0ZW5kcyBQb0xvb2t1cEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgRG9DaGVjayB7XG4gIEBWaWV3Q2hpbGQoJ2lucCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuXG4gIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIHRpbWVvdXRSZXNpemU7XG4gIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG5cbiAgZGlzY2xhaW1lcnMgPSBbXTtcbiAgdmlzaWJsZURpc2NsYWltZXJzID0gW107XG5cbiAgcHJpdmF0ZSBtb2RhbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLm5vQXV0b2NvbXBsZXRlID8gJ29mZicgOiAnb24nO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHBvTG9va3VwRmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9Mb29rdXBNb2RhbFNlcnZpY2U6IFBvTG9va3VwTW9kYWxTZXJ2aWNlLFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBzdXBlcihwb0xvb2t1cEZpbHRlclNlcnZpY2UsIGluamVjdG9yKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmlucHV0RWw/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgLy8gUGVybWl0ZSBxdWUgb3MgZGlzY2xhaW1lcnMgc2VqYW0gY2FsY3VsYWRvcyBuYSBwcmltZWlyYSB2ZXogcXVlIG8gY29tcG9uZW50ZSB0b3JuYS1zZSB2aXPDrXZlbCxcbiAgICAvLyBldml0YW5kbyBjb20gaXNzbywgcHJvYmxlbWFzIGNvbSBUYWJzIG91IERpdnMgcXVlIGluaWNpZW0gZXNjb25kaWRhcy5cbiAgICBpZiAoKGlucHV0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkgfHwgKGlucHV0V2lkdGggJiYgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcykpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm1vZGFsU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vZGFsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9Mb29rdXBDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvTG9va3VwQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBsb29rdXA6IFBvTG9va3VwQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0xvb2t1cCgpIHtcbiAgICogICB0aGlzLmxvb2t1cC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Mb29rdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBbGxvd2VkT3Blbk1vZGFsKCkpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWR2YW5jZWRGaWx0ZXJzLFxuICAgICAgICBzZXJ2aWNlLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgIGxpdGVyYWxzLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIGZpZWxkTGFiZWwsXG4gICAgICAgIGZpZWxkVmFsdWVcbiAgICAgIH0gPSB0aGlzO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5jaGVja1NlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZS5vcGVuTW9kYWwoe1xuICAgICAgICBhZHZhbmNlZEZpbHRlcnMsXG4gICAgICAgIHNlcnZpY2UsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFiZWwsXG4gICAgICAgIGxpdGVyYWxzLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgIGZpZWxkTGFiZWwsXG4gICAgICAgIGZpZWxkVmFsdWVcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXRoaXMubW9kYWxTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5tb2RhbFN1YnNjcmlwdGlvbiA9IHRoaXMucG9Mb29rdXBNb2RhbFNlcnZpY2Uuc2VsZWN0VmFsdWVFdmVudC5zdWJzY3JpYmUoc2VsZWN0ZWRPcHRpb25zID0+IHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDEgfHwgdGhpcy5kaXNjbGFpbWVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzY2xhaW1lcnMoc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbChzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja1NlbGVjdGVkSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICghdGhpcy5kaXNjbGFpbWVycy5sZW5ndGggJiYgdGhpcy52YWx1ZVRvTW9kZWw/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW3sgdmFsdWU6IHRoaXMudmFsdWVUb01vZGVsWzBdLCBsYWJlbDogdGhpcy5vbGRWYWx1ZSwgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNbMF0gfV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmRpc2NsYWltZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZVRvTW9kZWw7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzY2xhaW1lcnMoc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5kaXNjbGFpbWVycyA9IHNlbGVjdGVkT3B0aW9ucy5tYXAoc2VsZWN0ZWRPcHRpb24gPT4gKHtcbiAgICAgIHZhbHVlOiBzZWxlY3RlZE9wdGlvblt0aGlzLmZpZWxkVmFsdWVdLFxuICAgICAgbGFiZWw6IHNlbGVjdGVkT3B0aW9uW3RoaXMuZmllbGRMYWJlbF0sXG4gICAgICAuLi5zZWxlY3RlZE9wdGlvblxuICAgIH0pKTtcblxuICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzID0gWy4uLnRoaXMuZGlzY2xhaW1lcnNdO1xuICB9XG5cbiAgc2V0Vmlld1ZhbHVlKHZhbHVlOiBhbnksIG9iamVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbCAmJiB0aGlzLmZpZWxkRm9ybWF0KSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWVXaXBvaWVsZEZvcm1hdChvYmplY3QpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMudmFsdWVUb01vZGVsIHx8IHRoaXMudmFsdWVUb01vZGVsID09PSAwID8gdmFsdWUgOiAnJztcbiAgICB9XG4gIH1cblxuICBnZXRWaWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZWFyY2hFdmVudCgpIHtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZpZXdWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCkgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ5SWQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGlzY2xhaW1lcih2YWx1ZSkge1xuICAgIHRoaXMuZGlzY2xhaW1lcnMgPSB0aGlzLmRpc2NsYWltZXJzLmZpbHRlcihkaXNjbGFpbWVyID0+IGRpc2NsYWltZXIudmFsdWUgIT09IHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsLmZpbHRlcihtb2RlbCA9PiBtb2RlbCAhPT0gdmFsdWUpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbC5sZW5ndGggPyB0aGlzLnZhbHVlVG9Nb2RlbCA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuZGlzY2xhaW1lcnMgJiYgdGhpcy5kaXNjbGFpbWVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFtdLmNvbmNhdCh0aGlzLmRpc2NsYWltZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA0MDtcbiAgfVxuXG4gIGdldERpc2NsYWltZXJzV2lkdGgoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnMgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwby1kaXNjbGFpbWVyJyk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGlzY2xhaW1lcnMpLm1hcChkaXNjbGFpbWVyID0+IGRpc2NsYWltZXJbJ29mZnNldFdpZHRoJ10pO1xuICB9XG5cbiAgY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzV2lkdGggPSB0aGlzLmdldERpc2NsYWltZXJzV2lkdGgoKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5nZXRJbnB1dFdpZHRoKCk7XG4gICAgY29uc3QgZXh0cmFEaXNjbGFpbWVyU2l6ZSA9IDM4O1xuICAgIGNvbnN0IGRpc2NsYWltZXJzVmlzaWJsZSA9IGRpc2NsYWltZXJzV2lkdGhbMF07XG5cbiAgICBjb25zdCBuZXdEaXNjbGFpbWVycyA9IFtdO1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gdGhpcy5kaXNjbGFpbWVycztcblxuICAgIGlmIChpbnB1dFdpZHRoID4gMCkge1xuICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgZGlzY2xhaW1lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3VtICs9IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgIG5ld0Rpc2NsYWltZXJzLnB1c2goZGlzY2xhaW1lcnNbaV0pO1xuXG4gICAgICAgIGlmIChzdW0gPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgc3VtIC09IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNjbGFpbWVyc1Zpc2libGUgfHwgIWRpc2NsYWltZXJzLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSA9PT0gZGlzY2xhaW1lcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdW0gKyBleHRyYURpc2NsYWltZXJTaXplID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMiwgMik7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoICsgMSAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgbmV3RGlzY2xhaW1lcnMucHVzaCh7IHZhbHVlOiAnJywgbGFiZWw6IGxhYmVsIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMSwgMSk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICBuZXdEaXNjbGFpbWVycy5wdXNoKHsgdmFsdWU6ICcnLCBsYWJlbDogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFsuLi5uZXdEaXNjbGFpbWVyc107XG4gIH1cblxuICBwcml2YXRlIGlzQWxsb3dlZE9wZW5Nb2RhbCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgY29uc29sZS53YXJuKCdObyBzZXJ2aWNlIGluZm9ybWVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKHRoaXMuc2VydmljZSAmJiAhdGhpcy5kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEZpZWxkcyhvYmplY3RTZWxlY3RlZCwgcHJvcGVydGllcykge1xuICAgIGxldCBmb3JtYXRlZEZpZWxkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnRpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKG9iamVjdFNlbGVjdGVkICYmIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XSkge1xuICAgICAgICAgIGlmICghZm9ybWF0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IGZvcm1hdGVkRmllbGQgKyAnIC0gJyArIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvcm1hdGVkRmllbGQpIHtcbiAgICAgIGZvcm1hdGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0ZWRGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRWYWx1ZVdpcG9pZWxkRm9ybWF0KG9iamVjdFNlbGVjdGVkOiBhbnkpIHtcbiAgICBjb25zdCBpc0VtcHR5ID0gT2JqZWN0LmtleXMob2JqZWN0U2VsZWN0ZWQpLmxlbmd0aCA9PT0gMDtcbiAgICBsZXQgZmllbGRGb3JtYXRlZDtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5mb3JtYXRGaWVsZHMob2JqZWN0U2VsZWN0ZWQsIHRoaXMuZmllbGRGb3JtYXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5maWVsZEZvcm1hdChvYmplY3RTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbGRWYWx1ZSA9IGlzRW1wdHkgPyAnJyA6IGZpZWxkRm9ybWF0ZWQ7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBpc0VtcHR5ID8gJycgOiBmaWVsZEZvcm1hdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUdSLFNBQVMsRUFDVCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUxRSwwQkFBMEI7QUFDMUIsTUFBTSxTQUFTLEdBQUc7SUFDaEIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQjtRQUNFLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDaEQsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNEO1FBQ0UsT0FBTyxFQUFFLGFBQWE7UUFDdEIsMkJBQTJCO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDaEQsS0FBSyxFQUFFLElBQUk7S0FDWjtJQUNEO1FBQ0UsT0FBTyxFQUFFLFNBQVM7UUFDbEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoRCxLQUFLLEVBQUUsS0FBSztLQUNiO0NBQ0YsQ0FBQztBQUVGOzs7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QTNTRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLG84RUFBeUM7Z0JBQ3pDLFNBQVM7YUFDVjs7O1lBOUZDLFNBQVM7WUFPRixxQkFBcUI7WUFDckIsb0JBQW9CO1lBWDNCLFFBQVE7OztzQkFtR1AsU0FBUyxTQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERvQ2hlY2ssXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUG9Mb29rdXBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1sb29rdXAtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBNb2RhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWxvb2t1cC1tb2RhbC5zZXJ2aWNlJztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAgUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLFxuICBQb0xvb2t1cE1vZGFsU2VydmljZSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvTG9va3VwQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0xvb2t1cENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5nQ29udHJvbCxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0xvb2t1cENvbXBvbmVudCksXG4gICAgbXVsdGk6IGZhbHNlXG4gIH1cbl07XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvTG9va3VwQmFzZUNvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIFF1YW5kbyBleGlzdGUgbXVpdG9zIGRhZG9zIG8gcG8tbG9va3VwIHBvciBwYWRyw6NvIHRyYXogYXBlbmFzIDEwIGl0ZW5zIG5hIHRhYmVsYSBlIG9zIGRlbWFpcyBzw6NvIGNhcnJlZ2Fkb3MgcG9yIGRlbWFuZGEgYXRyYXbDqXMgZG9cbiAqIGJvdMOjbyAnQ2FycmVnYXIgbWFpcyByZXN1bHRhZG9zJy4gUGFyYSBxdWUgZnVuY2lvbmUgY29ycmV0YW1lbnRlLCDDqSBpbXBvcnRhbnRlIHF1ZSBvIHNlcnZpw6dvIHNpZ2Egb1xuICogW0d1aWEgZGUgaW1wbGVtZW50YcOnw6NvIGRhcyBBUElzIFRPVFZTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpLlxuICpcbiAqIEltcG9ydGFudGU6XG4gKlxuICogLSBDYXNvIG8gcG8tbG9va3VwIGNvbnRlbmhhIG8gWyhuZ01vZGVsKV0gc2VtIG8gYXRyaWJ1dG8gbmFtZSwgb2NvcnJlcsOhIHVtIGVycm8gZGUgYW5ndWxhci5cbiAqIEVudMOjbyBzZXLDoSBuZWNlc3PDoXJpbyBpbmZvcm1hciBvIGF0cmlidXRvIG5hbWUgb3UgbyBhdHJpYnV0byBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIuXG4gKiBgYGBcbiAqIDxwby1sb29rdXBcbiAqICAgWyhuZ01vZGVsKV09XCJwZXNzb2Eubm9tZVwiXG4gKiAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cbiAqIDwvcG8tbG9va3VwPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLWJhc2ljXCIgdGl0bGU9XCJQTyBMb29rdXAgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1iYXNpYy9zYW1wbGUtcG8tbG9va3VwLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1iYXNpYy9zYW1wbGUtcG8tbG9va3VwLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxvb2t1cC1sYWJzXCIgdGl0bGU9XCJQTyBMb29rdXAgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLWxhYnMvc2FtcGxlLXBvLWxvb2t1cC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1sYWJzL3NhbXBsZS1wby1sb29rdXAtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtaGVyb1wiIHRpdGxlPVwiUE8gTG9va3VwIC0gSGVyb1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLWhlcm8vc2FtcGxlLXBvLWxvb2t1cC1oZXJvLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvL3NhbXBsZS1wby1sb29rdXAtaGVyby5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtaGVyby1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBMb29rdXAgLSBIZXJvIFJlYWN0aXZlIEZvcm1cIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLWhlcm8tcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tbG9va3VwLWhlcm8tcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtc3ctZmlsbXNcIiB0aXRsZT1cIlBPIExvb2t1cCAtIFN0YXIgV2FycyBmaWxtc1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zL3NhbXBsZS1wby1sb29rdXAtc3ctZmlsbXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zL3NhbXBsZS1wby1sb29rdXAtc3ctZmlsbXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy9zYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtbXVsdGlwbGVcIiB0aXRsZT1cIlBPIExvb2t1cCAtIE11bHRpcGxlXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUvc2FtcGxlLXBvLWxvb2t1cC1tdWx0aXBsZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUvc2FtcGxlLXBvLWxvb2t1cC1tdWx0aXBsZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlL3NhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWxvb2t1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1sb29rdXAuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9Mb29rdXBDb21wb25lbnQgZXh0ZW5kcyBQb0xvb2t1cEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgRG9DaGVjayB7XG4gIEBWaWV3Q2hpbGQoJ2lucCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KSBpbnB1dEVsOiBFbGVtZW50UmVmO1xuXG4gIGluaXRpYWxpemVkID0gZmFsc2U7XG4gIHRpbWVvdXRSZXNpemU7XG4gIHZpc2libGVFbGVtZW50ID0gZmFsc2U7XG5cbiAgZGlzY2xhaW1lcnMgPSBbXTtcbiAgdmlzaWJsZURpc2NsYWltZXJzID0gW107XG5cbiAgcHJpdmF0ZSBtb2RhbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLm5vQXV0b2NvbXBsZXRlID8gJ29mZicgOiAnb24nO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHBvTG9va3VwRmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcG9Mb29rdXBNb2RhbFNlcnZpY2U6IFBvTG9va3VwTW9kYWxTZXJ2aWNlLFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBzdXBlcihwb0xvb2t1cEZpbHRlclNlcnZpY2UsIGluamVjdG9yKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGNvbnN0IGlucHV0V2lkdGggPSB0aGlzLmlucHV0RWw/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgLy8gUGVybWl0ZSBxdWUgb3MgZGlzY2xhaW1lcnMgc2VqYW0gY2FsY3VsYWRvcyBuYSBwcmltZWlyYSB2ZXogcXVlIG8gY29tcG9uZW50ZSB0b3JuYS1zZSB2aXPDrXZlbCxcbiAgICAvLyBldml0YW5kbyBjb20gaXNzbywgcHJvYmxlbWFzIGNvbSBUYWJzIG91IERpdnMgcXVlIGluaWNpZW0gZXNjb25kaWRhcy5cbiAgICBpZiAoKGlucHV0V2lkdGggJiYgIXRoaXMudmlzaWJsZUVsZW1lbnQgJiYgdGhpcy5pbml0aWFsaXplZCkgfHwgKGlucHV0V2lkdGggJiYgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcykpIHtcbiAgICAgIHRoaXMuZGVib3VuY2VSZXNpemUoKTtcbiAgICAgIHRoaXMudmlzaWJsZUVsZW1lbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm1vZGFsU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vZGFsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9Mb29rdXBDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvTG9va3VwQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBsb29rdXA6IFBvTG9va3VwQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c0xvb2t1cCgpIHtcbiAgICogICB0aGlzLmxvb2t1cC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5Mb29rdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBbGxvd2VkT3Blbk1vZGFsKCkpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWR2YW5jZWRGaWx0ZXJzLFxuICAgICAgICBzZXJ2aWNlLFxuICAgICAgICBjb2x1bW5zLFxuICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgIGxpdGVyYWxzLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIGZpZWxkTGFiZWwsXG4gICAgICAgIGZpZWxkVmFsdWVcbiAgICAgIH0gPSB0aGlzO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5jaGVja1NlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZS5vcGVuTW9kYWwoe1xuICAgICAgICBhZHZhbmNlZEZpbHRlcnMsXG4gICAgICAgIHNlcnZpY2UsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFiZWwsXG4gICAgICAgIGxpdGVyYWxzLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgIGZpZWxkTGFiZWwsXG4gICAgICAgIGZpZWxkVmFsdWVcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXRoaXMubW9kYWxTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5tb2RhbFN1YnNjcmlwdGlvbiA9IHRoaXMucG9Mb29rdXBNb2RhbFNlcnZpY2Uuc2VsZWN0VmFsdWVFdmVudC5zdWJzY3JpYmUoc2VsZWN0ZWRPcHRpb25zID0+IHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDEgfHwgdGhpcy5kaXNjbGFpbWVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzY2xhaW1lcnMoc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbChzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjaGVja1NlbGVjdGVkSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGlmICghdGhpcy5kaXNjbGFpbWVycy5sZW5ndGggJiYgdGhpcy52YWx1ZVRvTW9kZWw/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW3sgdmFsdWU6IHRoaXMudmFsdWVUb01vZGVsWzBdLCBsYWJlbDogdGhpcy5vbGRWYWx1ZSwgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNbMF0gfV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmRpc2NsYWltZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZVRvTW9kZWw7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzY2xhaW1lcnMoc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgdGhpcy5kaXNjbGFpbWVycyA9IHNlbGVjdGVkT3B0aW9ucy5tYXAoc2VsZWN0ZWRPcHRpb24gPT4gKHtcbiAgICAgIHZhbHVlOiBzZWxlY3RlZE9wdGlvblt0aGlzLmZpZWxkVmFsdWVdLFxuICAgICAgbGFiZWw6IHNlbGVjdGVkT3B0aW9uW3RoaXMuZmllbGRMYWJlbF0sXG4gICAgICAuLi5zZWxlY3RlZE9wdGlvblxuICAgIH0pKTtcblxuICAgIHRoaXMudmlzaWJsZURpc2NsYWltZXJzID0gWy4uLnRoaXMuZGlzY2xhaW1lcnNdO1xuICB9XG5cbiAgc2V0Vmlld1ZhbHVlKHZhbHVlOiBhbnksIG9iamVjdDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRFbCAmJiB0aGlzLmZpZWxkRm9ybWF0KSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWVXaXBvaWVsZEZvcm1hdChvYmplY3QpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMudmFsdWVUb01vZGVsIHx8IHRoaXMudmFsdWVUb01vZGVsID09PSAwID8gdmFsdWUgOiAnJztcbiAgICB9XG4gIH1cblxuICBnZXRWaWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZWFyY2hFdmVudCgpIHtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZpZXdWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCkgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ5SWQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGlzY2xhaW1lcih2YWx1ZSkge1xuICAgIHRoaXMuZGlzY2xhaW1lcnMgPSB0aGlzLmRpc2NsYWltZXJzLmZpbHRlcihkaXNjbGFpbWVyID0+IGRpc2NsYWltZXIudmFsdWUgIT09IHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsLmZpbHRlcihtb2RlbCA9PiBtb2RlbCAhPT0gdmFsdWUpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbC5sZW5ndGggPyB0aGlzLnZhbHVlVG9Nb2RlbCA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuZGlzY2xhaW1lcnMgJiYgdGhpcy5kaXNjbGFpbWVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFtdLmNvbmNhdCh0aGlzLmRpc2NsYWltZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA0MDtcbiAgfVxuXG4gIGdldERpc2NsYWltZXJzV2lkdGgoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnMgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwby1kaXNjbGFpbWVyJyk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGlzY2xhaW1lcnMpLm1hcChkaXNjbGFpbWVyID0+IGRpc2NsYWltZXJbJ29mZnNldFdpZHRoJ10pO1xuICB9XG5cbiAgY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzV2lkdGggPSB0aGlzLmdldERpc2NsYWltZXJzV2lkdGgoKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5nZXRJbnB1dFdpZHRoKCk7XG4gICAgY29uc3QgZXh0cmFEaXNjbGFpbWVyU2l6ZSA9IDM4O1xuICAgIGNvbnN0IGRpc2NsYWltZXJzVmlzaWJsZSA9IGRpc2NsYWltZXJzV2lkdGhbMF07XG5cbiAgICBjb25zdCBuZXdEaXNjbGFpbWVycyA9IFtdO1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gdGhpcy5kaXNjbGFpbWVycztcblxuICAgIGlmIChpbnB1dFdpZHRoID4gMCkge1xuICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgZGlzY2xhaW1lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3VtICs9IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgIG5ld0Rpc2NsYWltZXJzLnB1c2goZGlzY2xhaW1lcnNbaV0pO1xuXG4gICAgICAgIGlmIChzdW0gPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgc3VtIC09IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNjbGFpbWVyc1Zpc2libGUgfHwgIWRpc2NsYWltZXJzLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSA9PT0gZGlzY2xhaW1lcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdW0gKyBleHRyYURpc2NsYWltZXJTaXplID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMiwgMik7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoICsgMSAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgbmV3RGlzY2xhaW1lcnMucHVzaCh7IHZhbHVlOiAnJywgbGFiZWw6IGxhYmVsIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMSwgMSk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICBuZXdEaXNjbGFpbWVycy5wdXNoKHsgdmFsdWU6ICcnLCBsYWJlbDogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFsuLi5uZXdEaXNjbGFpbWVyc107XG4gIH1cblxuICBwcml2YXRlIGlzQWxsb3dlZE9wZW5Nb2RhbCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgY29uc29sZS53YXJuKCdObyBzZXJ2aWNlIGluZm9ybWVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKHRoaXMuc2VydmljZSAmJiAhdGhpcy5kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEZpZWxkcyhvYmplY3RTZWxlY3RlZCwgcHJvcGVydGllcykge1xuICAgIGxldCBmb3JtYXRlZEZpZWxkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnRpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKG9iamVjdFNlbGVjdGVkICYmIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XSkge1xuICAgICAgICAgIGlmICghZm9ybWF0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IGZvcm1hdGVkRmllbGQgKyAnIC0gJyArIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvcm1hdGVkRmllbGQpIHtcbiAgICAgIGZvcm1hdGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0ZWRGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRWYWx1ZVdpcG9pZWxkRm9ybWF0KG9iamVjdFNlbGVjdGVkOiBhbnkpIHtcbiAgICBjb25zdCBpc0VtcHR5ID0gT2JqZWN0LmtleXMob2JqZWN0U2VsZWN0ZWQpLmxlbmd0aCA9PT0gMDtcbiAgICBsZXQgZmllbGRGb3JtYXRlZDtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5mb3JtYXRGaWVsZHMob2JqZWN0U2VsZWN0ZWQsIHRoaXMuZmllbGRGb3JtYXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5maWVsZEZvcm1hdChvYmplY3RTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbGRWYWx1ZSA9IGlzRW1wdHkgPyAnJyA6IGZpZWxkRm9ybWF0ZWQ7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBpc0VtcHR5ID8gJycgOiBmaWVsZEZvcm1hdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -128,9 +128,11 @@ export class PoMultiselectBaseComponent {
|
|
|
128
128
|
*
|
|
129
129
|
*/
|
|
130
130
|
set filterService(value) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
if (value) {
|
|
132
|
+
this._filterService = value;
|
|
133
|
+
this.autoHeight = this.autoHeightInitialValue !== undefined ? this.autoHeightInitialValue : true;
|
|
134
|
+
this.options = [];
|
|
135
|
+
}
|
|
134
136
|
}
|
|
135
137
|
get filterService() {
|
|
136
138
|
return this._filterService;
|
|
@@ -480,6 +482,9 @@ export class PoMultiselectBaseComponent {
|
|
|
480
482
|
}
|
|
481
483
|
updateSelectedOptions(newOptions, options = this.options) {
|
|
482
484
|
this.selectedOptions = [];
|
|
485
|
+
if (newOptions.length === 0) {
|
|
486
|
+
this.lastLengthModel = 0;
|
|
487
|
+
}
|
|
483
488
|
if (this.filterService) {
|
|
484
489
|
this.selectedOptions = newOptions;
|
|
485
490
|
}
|
|
@@ -568,4 +573,4 @@ __decorate([
|
|
|
568
573
|
__decorate([
|
|
569
574
|
InputBoolean()
|
|
570
575
|
], PoMultiselectBaseComponent.prototype, "autoHeight", null);
|
|
571
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUluRCxNQUFNLG9DQUFvQyxHQUFHLEdBQUcsQ0FBQztBQUNqRCxNQUFNLGtDQUFrQyxHQUFHLE9BQU8sQ0FBQztBQUNuRCxNQUFNLGtDQUFrQyxHQUFHLE9BQU8sQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRztJQUMxQyxFQUFFLEVBQXlCO1FBQ3pCLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLGlCQUFp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d0JsQixLQUFLLFNBQUMsWUFBWTt1QkFrQmxCLEtBQUssU0FBQyxZQUFZO3lCQW9CbEIsS0FBSyxTQUFDLGVBQWU7c0JBeUJyQixLQUFLLFNBQUMsV0FBVzttQkFvQmpCLEtBQUssU0FBQyxRQUFRO3lCQW9CZCxLQUFLLFNBQUMsZUFBZTt5QkErQnJCLEtBQUssU0FBQyxlQUFlO3lCQXdCckIsS0FBSyxTQUFDLGVBQWU7O0FBdFlpQjtJQUFmLFlBQVksRUFBRTs2REFBNEI7QUFpRHRCO0lBQWYsWUFBWSxFQUFFO2lFQUF3QjtBQStGM0I7SUFBZixZQUFZLEVBQUU7NERBR3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0VG9Cb29sZWFuLFxuICBpc1R5cGVvZixcbiAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMsXG4gIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zLFxuICBzb3J0T3B0aW9uc0J5UHJvcGVydHlcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4vLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuXG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyTW9kZSB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3QtZmlsdGVyLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0TGl0ZXJhbHMgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlciB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3QtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UnO1xuXG5jb25zdCBQT19NVUxUSVNFTEVDVF9ERUJPVU5DRV9USU1FX0RFRkFVTFQgPSA0MDA7XG5jb25zdCBQT19NVUxUSVNFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUID0gJ2xhYmVsJztcbmNvbnN0IFBPX01VTFRJU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQgPSAndmFsdWUnO1xuXG5leHBvcnQgY29uc3QgcG9NdWx0aXNlbGVjdExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb011bHRpc2VsZWN0TGl0ZXJhbHM+e1xuICAgIG5vRGF0YTogJ05vIGRhdGEgZm91bmQnLFxuICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAnU2VhcmNoJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY3QgYWxsJ1xuICB9LFxuICBlczogPFBvTXVsdGlzZWxlY3RMaXRlcmFscz57XG4gICAgbm9EYXRhOiAnRGF0b3Mgbm8gZW5jb250cmFkb3MnLFxuICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAnQnVzY2EnLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjY2lvbmFyIHRvZG8nXG4gIH0sXG4gIHB0OiA8UG9NdWx0aXNlbGVjdExpdGVyYWxzPntcbiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJyxcbiAgICBwbGFjZWhvbGRlclNlYXJjaDogJ0J1c2NhcicsXG4gICAgc2VsZWN0QWxsOiAnU2VsZWNpb25hciB0b2RvcydcbiAgfSxcbiAgcnU6IDxQb011bHRpc2VsZWN0TGl0ZXJhbHM+e1xuICAgIG5vRGF0YTogJ9CU0LDQvdC90YvQtSDQvdC1INC90LDQudC00LXQvdGLJyxcbiAgICBwbGFjZWhvbGRlclNlYXJjaDogJ9C40YHQutCw0YLRjCcsXG4gICAgc2VsZWN0QWxsOiAn0JLRi9Cx0YDQsNGC0Ywg0LLRgdC1J1xuICB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gcG8tbXVsdGlzZWxlY3Qgw6kgdW0gY29tcG9uZW50ZSBkZSBtw7psdGlwbGEgc2VsZcOnw6NvLlxuICogRXN0ZSBjb21wb25lbnRlIMOpIHJlY29tZW5kYWRvIHBhcmEgZGFyIGFvIHVzdcOhcmlvIGEgb3DDp8OjbyBkZSBzZWxlY2lvbmFyIHbDoXJpb3MgaXRlbnMgZW0gdW1hIGxpc3RhLlxuICpcbiAqIFF1YW5kbyBhIGxpc3RhIHBvc3N1aXIgcG91Y29zIGl0ZW5zLCBkZXZlLXNlIGRhciBwcmVmZXLDqm5jaWEgcGFyYSBvIHVzbyBkbyBwby1jaGVja2JveC1ncm91cCwgcG9yIHNlciBtYWlzIHNpbXBsZXNcbiAqIGUgbWFpcyByw6FwaWRvIHBhcmEgYSBzZWxlw6fDo28gZG8gdXN1w6FyaW8uXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIHRhbWLDqW0gbsOjbyBkZXZlIHNlciB1dGlsaXphZG8gZW0gY2Fzb3Mgb25kZSBhIHNlbGXDp8OjbyBzZWphIMO6bmljYS4gTmVzc2VzIGNhc29zLCBkZXZlLXNlIHV0aWxpemFyIG9cbiAqIHBvLXNlbGVjdCwgcG8tY29tYm8gb3UgcG8tcmFkaW8tZ3JvdXAuXG4gKlxuICogQ29tIGVsZSB0YW1iw6ltIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBsaXN0YSDDoCBwYXJ0aXIgZGEgcmVxdWlzacOnw6NvIGRlIHVtIHNlcnZpw6dvIGRlZmluaWRvIGVtIGBwLWZpbHRlci1zZXJ2aWNlYC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9NdWx0aXNlbGVjdEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBWYWxpZGF0b3Ige1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTGFiZWwgbm8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIHBhcmEgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqIE1lbnNhZ2VtIGFwcmVzZW50YWRhIGVucXVhbnRvIG8gY2FtcG8gZXN0aXZlciB2YXppby4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBsYWNlaG9sZGVyIGRvIGNhbXBvIGRlIHBlc3F1aXNhLlxuICAgKlxuICAgKiA+IENhc28gbyBtZXNtbyBuw6NvIHNlamEgaW5mb3JtYWRvLCBvIHZhbG9yIHBhZHLDo28gc2Vyw6EgdHJhZHV6aWRvIGNvbSBiYXNlIG5vIGlkaW9tYSBkbyBuYXZlZ2Fkb3IgKHB0LCBlcyBlIGVuKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYEJ1c2NhcmBcbiAgICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlci1zZWFyY2gnKSBwbGFjZWhvbGRlclNlYXJjaD86IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBOb21lIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2Egc2UgbyBjYW1wbyBcIlNlbGVjaW9uYXIgdG9kb3NcIiBzZXLDoSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLXNlbGVjdC1hbGwnKSBASW5wdXRCb29sZWFuKCkgaGlkZVNlbGVjdEFsbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQb2RlIHNlciBpbmZvcm1hZGEgdW1hIGZ1bsOnw6NvIHF1ZSBzZXLDoSBkaXNwYXJhZGEgcXVhbmRvIGhvdXZlciBhbHRlcmHDp8O1ZXMgbm8gbmdNb2RlbC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNlbGVjdGVkT3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4gPSBbXTtcbiAgdmlzaWJsZU9wdGlvbnNEcm9wZG93bjogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4gPSBbXTtcbiAgdmlzaWJsZURpc2NsYWltZXJzID0gW107XG4gIGlzU2VydmVyU2VhcmNoaW5nID0gZmFsc2U7XG4gIGlzRmlyc3RGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBmaWx0ZXJTdWJqZWN0ID0gbmV3IFN1YmplY3QoKTtcbiAgc2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U7XG4gIGRlZmF1bHRTZXJ2aWNlOiBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnkgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBjbGlja091dExpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcm90ZWN0ZWQgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByb3RlY3RlZCBnZXRPYmplY3RzQnlWYWx1ZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIF9maWx0ZXJTZXJ2aWNlPzogUG9NdWx0aXNlbGVjdEZpbHRlciB8IHN0cmluZztcbiAgcHJpdmF0ZSBfZGVib3VuY2VUaW1lPzogbnVtYmVyID0gNDAwO1xuICBwcml2YXRlIF9kaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmlsdGVyTW9kZT86IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlID0gUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgcHJpdmF0ZSBfaGlkZVNlYXJjaD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvTXVsdGlzZWxlY3RMaXRlcmFscztcbiAgcHJpdmF0ZSBfb3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj47XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9zb3J0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw/OiBzdHJpbmcgPSBQT19NVUxUSVNFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUO1xuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gUE9fTVVMVElTRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVDtcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgbGFzdExlbmd0aE1vZGVsO1xuICBwcml2YXRlIG9uTW9kZWxDaGFuZ2U6IGFueTtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcbiAgcHJpdmF0ZSBhdXRvSGVpZ2h0SW5pdGlhbFZhbHVlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIHBvZGUgc2VyIGluZm9ybWFkYSBhIFVSTCBkbyBzZXJ2acOnbyBlbSBxdWUgc2Vyw6EgcmVhbGl6YWRvIG8gZmlsdHJvIHBhcmEgY2FycmVnYW1lbnRvIGRhIGxpc3RhIGRlIGl0ZW5zIG5vIGNvbXBvbmVudGUuXG4gICAqXG4gICAqVGFtYsOpbSBleGlzdGUgYSBwb3NzaWJpbGlkYWRlIGRlIGluZm9ybWFyIHVtIHNlcnZpw6dvIGltcGxlbWVudGFuZG8gYSBpbnRlcmZhY2UgYFBvTXVsdGlzZWxlY3RGaWx0ZXJgLlxuICAgKlxuICAgKkNhc28gdXRpbGl6YWRvIHVtYSBVUkwsIG8gc2VydmnDp28gZGV2ZSBzZXIgcmV0b3JuYWRvIG5vIHBhZHLDo28gW0FQSSBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKSBlIHV0aWxpemFyIGFzIHByb3ByaWVkYWRlcyBgcC1maWVsZC1sYWJlbGAgZSBgcC1maWVsZC12YWx1ZWAgcGFyYSBhIGNvbnN0cnXDp8OjbyBkYSBsaXN0YSBkZSBpdGVucy5cbiAgICpcbiAgICpRdWFuZG8gdXRpbGl6YWRhIHVtYSBVUkwgZGUgc2VydmnDp28sIGVudMOjbyBzZXLDoSBjb25jYXRlbmFkYSBuZXN0YSBVUkwgbyB2YWxvciBxdWUgZGVzZWphLXNlIGZpbHRyYXIgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqYGBgXG4gICAqIC8vIGNhc28gZmlsdHJhciBwb3IgXCJQZXRlclwiXG4gICAqICBodHRwczovL2xvY2FsaG9zdDo4MDgwL2FwaS9oZXJvZXM/ZmlsdGVyPVBldGVyXG4gICAqYGBgXG4gICAqXG4gICAqRSBjYXNvIGluaWNpYXIgbyBjYW1wbyBjb20gdmFsb3IsIG9zIGl0ZW5zIHNlcsOjbyBidXNjYWRvcyBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICpgYGBcbiAgICogLy8gY2FzbyBvIHZhbG9yIGRvIGNhbXBvIGZvciBbMTIzNCwgNTY3OF07XG4gICAqICBodHRwczovL2xvY2FsaG9zdDo4MDgwL2FwaS9oZXJvZXM/dmFsdWU9MTIzNCw1Njc4XG4gICAqXG4gICAqIC8vTyAqdmFsdWUqIMOpIHJlZmVyZW50ZSBhbyBgZmllbGRWYWx1ZWAuXG4gICAqYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBzZXQgZmlsdGVyU2VydmljZSh2YWx1ZTogUG9NdWx0aXNlbGVjdEZpbHRlciB8IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UgPSB2YWx1ZTtcbiAgICB0aGlzLmF1dG9IZWlnaHQgPSB0aGlzLmF1dG9IZWlnaHRJbml0aWFsVmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMuYXV0b0hlaWdodEluaXRpYWxWYWx1ZSA6IHRydWU7XG4gICAgdGhpcy5vcHRpb25zID0gW107XG4gIH1cblxuICBnZXQgZmlsdGVyU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBzZXLDoSBhdXRvIGFqdXN0w6F2ZWwsIHBvc3N1aW5kbyB1bWEgYWx0dXJhIG1pbmltYSBwb3LDqW0gYSBhbHR1cmEgbcOheGltYSBzZXLDoSBkZSBhY29yZG9cbiAgICogY29tIG8gbsO6bWVybyBkZSBpdGVucyBzZWxlY2lvbmFkb3MgZSBhIGV4dGVuc8OjbyBkb3MgbWVzbW9zLCBtYW50ZW5kby1vcyBzZW1wcmUgdmlzw612ZWlzLlxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSBgdHJ1ZWAgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8taGVpZ2h0JykgQElucHV0Qm9vbGVhbigpIHNldCBhdXRvSGVpZ2h0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b0hlaWdodCA9IHZhbHVlO1xuICAgIHRoaXMuYXV0b0hlaWdodEluaXRpYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGF1dG9IZWlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9IZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFc3RhIHByb3ByaWVkYWRlIGRlZmluZSBlbSBxdWFudG8gdGVtcG8gKGVtIG1pbGlzc2VndW5kb3MpLCBhZ3VhcmRhIHBhcmEgYWNpb25hciBvIGV2ZW50byBkZSBmaWx0cm8gYXDDs3MgY2FkYSBwcmVzc2lvbmFtZW50byBkZSB0ZWNsYS5cbiAgICpcbiAgICogPiBTZXLDoSB1dGlsaXphZGEgYXBlbmFzIHF1YW5kbyBob3V2ZXIgc2VydmnDp28gKGBwLWZpbHRlci1zZXJ2aWNlYCkgZSBzb21lbnRlIHNlcsOhIGFjZWl0byB2YWxvciBtYWlvciBkbyBxdWUgKnplcm8qLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNDAwYFxuICAgKi9cbiAgQElucHV0KCdwLWRlYm91bmNlLXRpbWUnKSBzZXQgZGVib3VuY2VUaW1lKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKTtcblxuICAgIHRoaXMuX2RlYm91bmNlVGltZSA9ICFpc05hTihwYXJzZWRWYWx1ZSkgJiYgcGFyc2VkVmFsdWUgPiAwID8gcGFyc2VkVmFsdWUgOiBQT19NVUxUSVNFTEVDVF9ERUJPVU5DRV9USU1FX0RFRkFVTFQ7XG4gIH1cblxuICBnZXQgZGVib3VuY2VUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYm91bmNlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1tdWx0aXNlbGVjdGAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTXVsdGlzZWxlY3RMaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAqICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAnQnVzY2FyJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTXVsdGlzZWxlY3RMaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnU2VtIGRhZG9zJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbXVsdGlzZWxlY3RcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBvLW11bHRpc2VsZWN0PlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTXVsdGlzZWxlY3RMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9NdWx0aXNlbGVjdExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLiBFc3RhIHByb3ByaWVkYWRlIMOpIGRlc2NvbnNpZGVyYWRhIHF1YW5kbyBvIGNhbXBvIGVzdMOhIGRlc2FiaWxpdGFkbyAocC1kaXNhYmxlZCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gPGFueT5yZXF1aXJlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSA8YW55PmRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXNjb25kZSBvIGNhbXBvIGRlIHBlc3F1aXNhIGV4aXN0ZW50ZSBkZW50cm8gZG8gZHJvcGRvd24gZG8gcG8tbXVsdGlzZWxlY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLXNlYXJjaCcpIHNldCBoaWRlU2VhcmNoKGhpZGVTZWFyY2g6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRlU2VhcmNoID0gPGFueT5oaWRlU2VhcmNoID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGhpZGVTZWFyY2gpO1xuICB9XG5cbiAgZ2V0IGhpZGVTZWFyY2goKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVTZWFyY2g7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIGRldmUgc2VyIGRlZmluaWRhIHVtYSBsaXN0YSBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBQb011bHRpc2VsZWN0T3B0aW9uLlxuICAgKiBFc3RhIGxpc3RhIGRldmUgY29udGVyIG9zIHZhbG9yZXMgZSBvcyBsYWJlbHMgcXVlIHNlcsOjbyBhcHJlc2VudGFkb3MgbmEgdGVsYS5cbiAgICpcbiAgICogPiBFc3NhIHByb3ByaWVkYWRlIMOpIGltdXTDoXZlbCwgb3Ugc2VqYSwgc2VtcHJlIHF1ZSBxdWlzZXIgYXR1YWxpemFyIGEgbGlzdGEgZGUgb3DDp8O1ZXMgZGlzcG9uw612ZWlzXG4gICAqIGF0dWFsaXplIGEgcmVmZXLDqm5jaWEgZG8gb2JqZXRvOlxuICAgKlxuICAgKiBgYGBcbiAgICogLy8gYXR1YWxpemEgYSByZWZlcsOqbmNpYSBkbyBvYmpldG8gZ2FyYW50aW5kbyBhIGF0dWFsaXphw6fDo28gZG8gdGVtcGxhdGVcbiAgICogdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9ucywgeyB2YWx1ZTogJ3gnLCBsYWJlbDogJ05vdmEgb3DDp8OjbycgfV07XG4gICAqXG4gICAqIC8vIGV2aXRlLCBwb2lzIG7Do28gYXR1YWxpemEgYSByZWZlcsOqbmNpYSBkbyBvYmpldG8gcG9kZW5kbyBnZXJhciBhdHJhc29zIG5hIGF0dWFsaXphw6fDo28gZG8gdGVtcGxhdGVcbiAgICogdGhpcy5vcHRpb25zLnB1c2goeyB2YWx1ZTogJ3gnLCBsYWJlbDogJ05vdmEgb3DDp8OjbycgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgdGhpcy52YWxpZEFuZFNvcnRPcHRpb25zKCk7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgYSBsaXN0YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBwLW9wdGlvbnMgc2Vyw6Egb3JkZW5hZGEgcGVsbyBsYWJlbCBhbnRlcyBkZSBzZXIgYXByZXNlbnRhZGEgbm9cbiAgICogZHJvcGRvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1zb3J0Jykgc2V0IHNvcnQoc29ydDogYm9vbGVhbikge1xuICAgIHRoaXMuX3NvcnQgPSA8YW55PnNvcnQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oc29ydCk7XG5cbiAgICB0aGlzLnZhbGlkQW5kU29ydE9wdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBzb3J0KCkge1xuICAgIHJldHVybiB0aGlzLl9zb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gY2FtcG8gZGUgYnVzY2EsIHF1YW5kbyBoYWJpbGl0YWRvLlxuICAgKiBWYWxvcmVzIGRlZmluaWRvcyBubyBlbnVtOiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBgc3RhcnRzV2l0aGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIHNldCBmaWx0ZXJNb2RlKGZpbHRlck1vZGU6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlKSB7XG4gICAgdGhpcy5fZmlsdGVyTW9kZSA9IGZpbHRlck1vZGUgaW4gUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUgPyBmaWx0ZXJNb2RlIDogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgICBzd2l0Y2ggKHRoaXMuX2ZpbHRlck1vZGUudG9TdHJpbmcoKSkge1xuICAgICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLmNvbnRhaW5zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLmVuZHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXG4gICAqIChgcC1vcHRpb25zYCksIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgcmVzcG9uc8OhdmVsIHBlbG8gdGV4dG8gZGUgYXByZXNlbnRhw6fDo28gZGUgY2FkYSBpdGVtIGRhIGxpc3RhLlxuICAgKlxuICAgKiBOZWNlc3PDoXJpbyBxdWFuZG8gaW5mb3JtYXIgbyBzZXJ2acOnbyBjb21vIFVSTCBlIG8gbWVzbW8gbsOjbyBlc3RpdmVyIHJldG9ybmFuZG8gdW1hIGxpc3RhIGRlIG9iamV0b3Mgbm8gcGFkcsOjbyBkYSBpbnRlcmZhY2VcbiAgICogYFBvTXVsdGlTZWxlY3RPcHRpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbGFiZWxgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRMYWJlbCA9IHZhbHVlIHx8IFBPX01VTFRJU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG5cbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZmllbGRMYWJlbCA9IHRoaXMuX2ZpZWxkTGFiZWw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIGBQb011bHRpU2VsZWN0T3B0aW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHZhbHVlYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgc2V0IGZpZWxkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19NVUxUSVNFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUO1xuXG4gICAgaWYgKGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpICYmIHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZSkpLFxuICAgICAgICBzd2l0Y2hNYXAoKHNlYXJjaDogc3RyaW5nKSA9PiB0aGlzLmFwcGx5RmlsdGVyKHNlYXJjaCkpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUxpc3QodGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHNldFNlcnZpY2Uoc2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlciB8IHN0cmluZykge1xuICAgIGlmIChpc1R5cGVvZihzZXJ2aWNlLCAnb2JqZWN0JykpIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IDxQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoPHN0cmluZz5zZXJ2aWNlLCB0aGlzLmZpZWxkTGFiZWwsIHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkQW5kU29ydE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9ucyh0aGlzLm9wdGlvbnMpO1xuICAgICAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnModGhpcy5vcHRpb25zKTtcbiAgICAgIHRoaXMuc2V0VW5kZWZpbmVkTGFiZWxzKHRoaXMub3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgICAgc29ydE9wdGlvbnNCeVByb3BlcnR5KHRoaXMub3B0aW9ucywgJ2xhYmVsJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0VW5kZWZpbmVkTGFiZWxzKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgIGlmICghb3B0aW9uWydsYWJlbCddKSB7XG4gICAgICAgIG9wdGlvbi5sYWJlbCA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUxpc3Qob3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4pIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc0Ryb3Bkb3duID0gb3B0aW9ucztcbiAgICB9XG4gIH1cblxuICBjYWxsT25DaGFuZ2Uoc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIGlmICh0aGlzLm9uTW9kZWxDaGFuZ2UpIHtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLmdldFZhbHVlc0Zyb21PcHRpb25zKHNlbGVjdGVkT3B0aW9ucykpO1xuICAgICAgdGhpcy5ldmVudENoYW5nZShzZWxlY3RlZE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGV2ZW50Q2hhbmdlKHNlbGVjdGVkT3B0aW9ucykge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbnMgJiYgdGhpcy5sYXN0TGVuZ3RoTW9kZWwgIT09IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQoc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB9XG4gICAgdGhpcy5sYXN0TGVuZ3RoTW9kZWwgPSBzZWxlY3RlZE9wdGlvbnMgPyBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDogbnVsbDtcbiAgfVxuXG4gIGdldFZhbHVlc0Zyb21PcHRpb25zKHNlbGVjdGVkT3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4pIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPyBzZWxlY3RlZE9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24udmFsdWUpIDogW107XG4gIH1cblxuICBnZXRMYWJlbEJ5VmFsdWUodmFsdWUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbaW5kZXhdLmxhYmVsO1xuICB9XG5cbiAgc2VhcmNoQnlMYWJlbChzZWFyY2g6IHN0cmluZywgb3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4sIGZpbHRlck1vZGU6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlKSB7XG4gICAgaWYgKHNlYXJjaCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXdPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiA9IFtdO1xuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmIChvcHRpb24ubGFiZWwgJiYgdGhpcy5jb21wYXJlTWV0aG9kKHNlYXJjaCwgb3B0aW9uLCBmaWx0ZXJNb2RlKSkge1xuICAgICAgICAgIG5ld09wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNEcm9wZG93biA9IG5ld09wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNEcm9wZG93biA9IFsuLi5vcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBjb21wYXJlTWV0aG9kKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24sIGZpbHRlck1vZGU6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlKSB7XG4gICAgc3dpdGNoIChmaWx0ZXJNb2RlKSB7XG4gICAgICBjYXNlIFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg6XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0c1dpdGgoc2VhcmNoLCBvcHRpb24pO1xuICAgICAgY2FzZSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5jb250YWluczpcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbnMoc2VhcmNoLCBvcHRpb24pO1xuICAgICAgY2FzZSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5lbmRzV2l0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5kc1dpdGgoc2VhcmNoLCBvcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0c1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9NdWx0aXNlbGVjdE9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGNvbnRhaW5zKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gudG9Mb3dlckNhc2UoKSkgPiAtMTtcbiAgfVxuXG4gIGVuZHNXaXRoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGMudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRPcHRpb25zKG5ld09wdGlvbnM6IEFycmF5PGFueT4sIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdPcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdPcHRpb25zLmZvckVhY2gobmV3T3B0aW9uID0+IHtcbiAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PT0gbmV3T3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgdmFsdWVzID0gdmFsdWVzIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdldE9iamVjdHNCeVZhbHVlc1N1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZS5nZXRPYmplY3RzQnlWYWx1ZXModmFsdWVzKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVmFsaWRhciBzZSB0b2RvcyBvcyBpdGVtcyBleGlzdGVtIGVudHJlIG9zIG9wdGlvbnMsIHNlbsOjbyBhdHVhbGl6YXIgbyBtb2RlbFxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbnModmFsdWVzLm1hcCh2YWx1ZSA9PiAoeyB2YWx1ZSB9KSkpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVNb2RlbCgpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgYXBwbHlGaWx0ZXIodmFsdWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+PjtcbiAgYWJzdHJhY3QgdXBkYXRlVmlzaWJsZUl0ZW1zKCk6IHZvaWQ7XG59XG4iXX0=
|
|
576
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUluRCxNQUFNLG9DQUFvQyxHQUFHLEdBQUcsQ0FBQztBQUNqRCxNQUFNLGtDQUFrQyxHQUFHLE9BQU8sQ0FBQztBQUNuRCxNQUFNLGtDQUFrQyxHQUFHLE9BQU8sQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRztJQUMxQyxFQUFFLEVBQXlCO1FBQ3pCLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLGlCQUFp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QUMsVUFBVTs0QkFnRWpCLEtBQUssU0FBQyxrQkFBa0I7eUJBd0J4QixLQUFLLFNBQUMsZUFBZTsyQkFtQnJCLEtBQUssU0FBQyxpQkFBaUI7dUJBNkN2QixLQUFLLFNBQUMsWUFBWTt1QkF3QmxCLEtBQUssU0FBQyxZQUFZO3VCQWtCbEIsS0FBSyxTQUFDLFlBQVk7eUJBb0JsQixLQUFLLFNBQUMsZUFBZTtzQkF5QnJCLEtBQUssU0FBQyxXQUFXO21CQW9CakIsS0FBSyxTQUFDLFFBQVE7eUJBb0JkLEtBQUssU0FBQyxlQUFlO3lCQStCckIsS0FBSyxTQUFDLGVBQWU7eUJBd0JyQixLQUFLLFNBQUMsZUFBZTs7QUF4WWlCO0lBQWYsWUFBWSxFQUFFOzZEQUE0QjtBQWlEdEI7SUFBZixZQUFZLEVBQUU7aUVBQXdCO0FBaUczQjtJQUFmLFlBQVksRUFBRTs0REFHdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRUb0Jvb2xlYW4sXG4gIGlzVHlwZW9mLFxuICByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyxcbiAgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMsXG4gIHNvcnRPcHRpb25zQnlQcm9wZXJ0eVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi8uLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBwb0xvY2FsZURlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXItbW9kZS5lbnVtJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RMaXRlcmFscyB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3QtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5cbmNvbnN0IFBPX01VTFRJU0VMRUNUX0RFQk9VTkNFX1RJTUVfREVGQVVMVCA9IDQwMDtcbmNvbnN0IFBPX01VTFRJU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQgPSAnbGFiZWwnO1xuY29uc3QgUE9fTVVMVElTRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVCA9ICd2YWx1ZSc7XG5cbmV4cG9ydCBjb25zdCBwb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogPFBvTXVsdGlzZWxlY3RMaXRlcmFscz57XG4gICAgbm9EYXRhOiAnTm8gZGF0YSBmb3VuZCcsXG4gICAgcGxhY2Vob2xkZXJTZWFyY2g6ICdTZWFyY2gnLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjdCBhbGwnXG4gIH0sXG4gIGVzOiA8UG9NdWx0aXNlbGVjdExpdGVyYWxzPntcbiAgICBub0RhdGE6ICdEYXRvcyBubyBlbmNvbnRyYWRvcycsXG4gICAgcGxhY2Vob2xkZXJTZWFyY2g6ICdCdXNjYScsXG4gICAgc2VsZWN0QWxsOiAnU2VsZWNjaW9uYXIgdG9kbydcbiAgfSxcbiAgcHQ6IDxQb011bHRpc2VsZWN0TGl0ZXJhbHM+e1xuICAgIG5vRGF0YTogJ05lbmh1bSBkYWRvIGVuY29udHJhZG8nLFxuICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAnQnVzY2FyJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY2lvbmFyIHRvZG9zJ1xuICB9LFxuICBydTogPFBvTXVsdGlzZWxlY3RMaXRlcmFscz57XG4gICAgbm9EYXRhOiAn0JTQsNC90L3Ri9C1INC90LUg0L3QsNC50LTQtdC90YsnLFxuICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAn0LjRgdC60LDRgtGMJyxcbiAgICBzZWxlY3RBbGw6ICfQktGL0LHRgNCw0YLRjCDQstGB0LUnXG4gIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBwby1tdWx0aXNlbGVjdCDDqSB1bSBjb21wb25lbnRlIGRlIG3Dumx0aXBsYSBzZWxlw6fDo28uXG4gKiBFc3RlIGNvbXBvbmVudGUgw6kgcmVjb21lbmRhZG8gcGFyYSBkYXIgYW8gdXN1w6FyaW8gYSBvcMOnw6NvIGRlIHNlbGVjaW9uYXIgdsOhcmlvcyBpdGVucyBlbSB1bWEgbGlzdGEuXG4gKlxuICogUXVhbmRvIGEgbGlzdGEgcG9zc3VpciBwb3Vjb3MgaXRlbnMsIGRldmUtc2UgZGFyIHByZWZlcsOqbmNpYSBwYXJhIG8gdXNvIGRvIHBvLWNoZWNrYm94LWdyb3VwLCBwb3Igc2VyIG1haXMgc2ltcGxlc1xuICogZSBtYWlzIHLDoXBpZG8gcGFyYSBhIHNlbGXDp8OjbyBkbyB1c3XDoXJpby5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgdGFtYsOpbSBuw6NvIGRldmUgc2VyIHV0aWxpemFkbyBlbSBjYXNvcyBvbmRlIGEgc2VsZcOnw6NvIHNlamEgw7puaWNhLiBOZXNzZXMgY2Fzb3MsIGRldmUtc2UgdXRpbGl6YXIgb1xuICogcG8tc2VsZWN0LCBwby1jb21ibyBvdSBwby1yYWRpby1ncm91cC5cbiAqXG4gKiBDb20gZWxlIHRhbWLDqW0gw6kgcG9zc8OtdmVsIGRlZmluaXIgdW1hIGxpc3RhIMOgIHBhcnRpciBkYSByZXF1aXNpw6fDo28gZGUgdW0gc2VydmnDp28gZGVmaW5pZG8gZW0gYHAtZmlsdGVyLXNlcnZpY2VgLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb011bHRpc2VsZWN0QmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIFZhbGlkYXRvciB7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFwbGljYSBmb2NvIG5vIGVsZW1lbnRvIGFvIHNlciBpbmljaWFkby5cbiAgICpcbiAgICogPiBDYXNvIG1haXMgZGUgdW0gZWxlbWVudG8gc2VqYSBjb25maWd1cmFkbyBjb20gZXNzYSBwcm9wcmllZGFkZSwgYXBlbmFzIG8gw7psdGltbyBlbGVtZW50byBkZWNsYXJhZG8gY29tIGVsYSB0ZXLDoSBvIGZvY28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLWZvY3VzJykgQElucHV0Qm9vbGVhbigpIGF1dG9Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBMYWJlbCBubyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gcGFyYSBvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBPIGNhbXBvIGNvbnRlciBgcC1yZXF1aXJlZGA7XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9uYWwnKSBvcHRpb25hbDogYm9vbGVhbjtcblxuICAvKiogTWVuc2FnZW0gYXByZXNlbnRhZGEgZW5xdWFudG8gbyBjYW1wbyBlc3RpdmVyIHZhemlvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcj86IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGxhY2Vob2xkZXIgZG8gY2FtcG8gZGUgcGVzcXVpc2EuXG4gICAqXG4gICAqID4gQ2FzbyBvIG1lc21vIG7Do28gc2VqYSBpbmZvcm1hZG8sIG8gdmFsb3IgcGFkcsOjbyBzZXLDoSB0cmFkdXppZG8gY29tIGJhc2Ugbm8gaWRpb21hIGRvIG5hdmVnYWRvciAocHQsIGVzIGUgZW4pLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgQnVzY2FyYFxuICAgKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyLXNlYXJjaCcpIHBsYWNlaG9sZGVyU2VhcmNoPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqIE5vbWUgZG8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBzZSBvIGNhbXBvIFwiU2VsZWNpb25hciB0b2Rvc1wiIHNlcsOhIGVzY29uZGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtc2VsZWN0LWFsbCcpIEBJbnB1dEJvb2xlYW4oKSBoaWRlU2VsZWN0QWxsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBvZGUgc2VyIGluZm9ybWFkYSB1bWEgZnVuw6fDo28gcXVlIHNlcsOhIGRpc3BhcmFkYSBxdWFuZG8gaG91dmVyIGFsdGVyYcOnw7VlcyBubyBuZ01vZGVsLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiA9IFtdO1xuICB2aXNpYmxlT3B0aW9uc0Ryb3Bkb3duOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiA9IFtdO1xuICB2aXNpYmxlRGlzY2xhaW1lcnMgPSBbXTtcbiAgaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZTtcbiAgaXNGaXJzdEZpbHRlcjogYm9vbGVhbiA9IHRydWU7XG4gIGZpbHRlclN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuICBzZXJ2aWNlOiBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZTtcbiAgZGVmYXVsdFNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBwcm90ZWN0ZWQgb25Nb2RlbFRvdWNoZWQ6IGFueSA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGNsaWNrT3V0TGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gIHByb3RlY3RlZCByZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJvdGVjdGVkIGdldE9iamVjdHNCeVZhbHVlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U/OiBQb011bHRpc2VsZWN0RmlsdGVyIHwgc3RyaW5nO1xuICBwcml2YXRlIF9kZWJvdW5jZVRpbWU/OiBudW1iZXIgPSA0MDA7XG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWx0ZXJNb2RlPzogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUgPSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICBwcml2YXRlIF9oaWRlU2VhcmNoPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9saXRlcmFsczogUG9NdWx0aXNlbGVjdExpdGVyYWxzO1xuICBwcml2YXRlIF9vcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPjtcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3NvcnQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2F1dG9IZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmllbGRMYWJlbD86IHN0cmluZyA9IFBPX01VTFRJU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG4gIHByaXZhdGUgX2ZpZWxkVmFsdWU/OiBzdHJpbmcgPSBQT19NVUxUSVNFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUO1xuICBwcml2YXRlIGxhbmd1YWdlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBsYXN0TGVuZ3RoTW9kZWw7XG4gIHByaXZhdGUgb25Nb2RlbENoYW5nZTogYW55O1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuICBwcml2YXRlIGF1dG9IZWlnaHRJbml0aWFsVmFsdWU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgcG9kZSBzZXIgaW5mb3JtYWRhIGEgVVJMIGRvIHNlcnZpw6dvIGVtIHF1ZSBzZXLDoSByZWFsaXphZG8gbyBmaWx0cm8gcGFyYSBjYXJyZWdhbWVudG8gZGEgbGlzdGEgZGUgaXRlbnMgbm8gY29tcG9uZW50ZS5cbiAgICpcbiAgICpUYW1iw6ltIGV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgaW5mb3JtYXIgdW0gc2VydmnDp28gaW1wbGVtZW50YW5kbyBhIGludGVyZmFjZSBgUG9NdWx0aXNlbGVjdEZpbHRlcmAuXG4gICAqXG4gICAqQ2FzbyB1dGlsaXphZG8gdW1hIFVSTCwgbyBzZXJ2acOnbyBkZXZlIHNlciByZXRvcm5hZG8gbm8gcGFkcsOjbyBbQVBJIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpIGUgdXRpbGl6YXIgYXMgcHJvcHJpZWRhZGVzIGBwLWZpZWxkLWxhYmVsYCBlIGBwLWZpZWxkLXZhbHVlYCBwYXJhIGEgY29uc3RydcOnw6NvIGRhIGxpc3RhIGRlIGl0ZW5zLlxuICAgKlxuICAgKlF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSBzZXJ2acOnbywgZW50w6NvIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICpgYGBcbiAgICogLy8gY2FzbyBmaWx0cmFyIHBvciBcIlBldGVyXCJcbiAgICogIGh0dHBzOi8vbG9jYWxob3N0OjgwODAvYXBpL2hlcm9lcz9maWx0ZXI9UGV0ZXJcbiAgICpgYGBcbiAgICpcbiAgICpFIGNhc28gaW5pY2lhciBvIGNhbXBvIGNvbSB2YWxvciwgb3MgaXRlbnMgc2Vyw6NvIGJ1c2NhZG9zIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKmBgYFxuICAgKiAvLyBjYXNvIG8gdmFsb3IgZG8gY2FtcG8gZm9yIFsxMjM0LCA1Njc4XTtcbiAgICogIGh0dHBzOi8vbG9jYWxob3N0OjgwODAvYXBpL2hlcm9lcz92YWx1ZT0xMjM0LDU2NzhcbiAgICpcbiAgICogLy9PICp2YWx1ZSogw6kgcmVmZXJlbnRlIGFvIGBmaWVsZFZhbHVlYC5cbiAgICpgYGBcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItc2VydmljZScpIHNldCBmaWx0ZXJTZXJ2aWNlKHZhbHVlOiBQb011bHRpc2VsZWN0RmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTZXJ2aWNlID0gdmFsdWU7XG4gICAgICB0aGlzLmF1dG9IZWlnaHQgPSB0aGlzLmF1dG9IZWlnaHRJbml0aWFsVmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMuYXV0b0hlaWdodEluaXRpYWxWYWx1ZSA6IHRydWU7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBzZXLDoSBhdXRvIGFqdXN0w6F2ZWwsIHBvc3N1aW5kbyB1bWEgYWx0dXJhIG1pbmltYSBwb3LDqW0gYSBhbHR1cmEgbcOheGltYSBzZXLDoSBkZSBhY29yZG9cbiAgICogY29tIG8gbsO6bWVybyBkZSBpdGVucyBzZWxlY2lvbmFkb3MgZSBhIGV4dGVuc8OjbyBkb3MgbWVzbW9zLCBtYW50ZW5kby1vcyBzZW1wcmUgdmlzw612ZWlzLlxuICAgKlxuICAgKiA+IE8gdmFsb3IgcGFkcsOjbyBzZXLDoSBgdHJ1ZWAgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8taGVpZ2h0JykgQElucHV0Qm9vbGVhbigpIHNldCBhdXRvSGVpZ2h0KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b0hlaWdodCA9IHZhbHVlO1xuICAgIHRoaXMuYXV0b0hlaWdodEluaXRpYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGF1dG9IZWlnaHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9IZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFc3RhIHByb3ByaWVkYWRlIGRlZmluZSBlbSBxdWFudG8gdGVtcG8gKGVtIG1pbGlzc2VndW5kb3MpLCBhZ3VhcmRhIHBhcmEgYWNpb25hciBvIGV2ZW50byBkZSBmaWx0cm8gYXDDs3MgY2FkYSBwcmVzc2lvbmFtZW50byBkZSB0ZWNsYS5cbiAgICpcbiAgICogPiBTZXLDoSB1dGlsaXphZGEgYXBlbmFzIHF1YW5kbyBob3V2ZXIgc2VydmnDp28gKGBwLWZpbHRlci1zZXJ2aWNlYCkgZSBzb21lbnRlIHNlcsOhIGFjZWl0byB2YWxvciBtYWlvciBkbyBxdWUgKnplcm8qLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNDAwYFxuICAgKi9cbiAgQElucHV0KCdwLWRlYm91bmNlLXRpbWUnKSBzZXQgZGVib3VuY2VUaW1lKHZhbHVlOiBudW1iZXIpIHtcbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IHBhcnNlSW50KDxhbnk+dmFsdWUsIDEwKTtcblxuICAgIHRoaXMuX2RlYm91bmNlVGltZSA9ICFpc05hTihwYXJzZWRWYWx1ZSkgJiYgcGFyc2VkVmFsdWUgPiAwID8gcGFyc2VkVmFsdWUgOiBQT19NVUxUSVNFTEVDVF9ERUJPVU5DRV9USU1FX0RFRkFVTFQ7XG4gIH1cblxuICBnZXQgZGVib3VuY2VUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYm91bmNlVGltZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1tdWx0aXNlbGVjdGAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTXVsdGlzZWxlY3RMaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAqICAgIHBsYWNlaG9sZGVyU2VhcmNoOiAnQnVzY2FyJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTXVsdGlzZWxlY3RMaXRlcmFscyA9IHtcbiAgICogICAgbm9EYXRhOiAnU2VtIGRhZG9zJ1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbXVsdGlzZWxlY3RcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBvLW11bHRpc2VsZWN0PlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTXVsdGlzZWxlY3RMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9NdWx0aXNlbGVjdExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICAgIH1cbiAgfVxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLiBFc3RhIHByb3ByaWVkYWRlIMOpIGRlc2NvbnNpZGVyYWRhIHF1YW5kbyBvIGNhbXBvIGVzdMOhIGRlc2FiaWxpdGFkbyAocC1kaXNhYmxlZCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1yZXF1aXJlZCcpIHNldCByZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gPGFueT5yZXF1aXJlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihyZXF1aXJlZCk7XG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBvIGNhbXBvIHNlcsOhIGRlc2FiaWxpdGFkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSA8YW55PmRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXNjb25kZSBvIGNhbXBvIGRlIHBlc3F1aXNhIGV4aXN0ZW50ZSBkZW50cm8gZG8gZHJvcGRvd24gZG8gcG8tbXVsdGlzZWxlY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLXNlYXJjaCcpIHNldCBoaWRlU2VhcmNoKGhpZGVTZWFyY2g6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRlU2VhcmNoID0gPGFueT5oaWRlU2VhcmNoID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGhpZGVTZWFyY2gpO1xuICB9XG5cbiAgZ2V0IGhpZGVTZWFyY2goKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVTZWFyY2g7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE5lc3RhIHByb3ByaWVkYWRlIGRldmUgc2VyIGRlZmluaWRhIHVtYSBsaXN0YSBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBQb011bHRpc2VsZWN0T3B0aW9uLlxuICAgKiBFc3RhIGxpc3RhIGRldmUgY29udGVyIG9zIHZhbG9yZXMgZSBvcyBsYWJlbHMgcXVlIHNlcsOjbyBhcHJlc2VudGFkb3MgbmEgdGVsYS5cbiAgICpcbiAgICogPiBFc3NhIHByb3ByaWVkYWRlIMOpIGltdXTDoXZlbCwgb3Ugc2VqYSwgc2VtcHJlIHF1ZSBxdWlzZXIgYXR1YWxpemFyIGEgbGlzdGEgZGUgb3DDp8O1ZXMgZGlzcG9uw612ZWlzXG4gICAqIGF0dWFsaXplIGEgcmVmZXLDqm5jaWEgZG8gb2JqZXRvOlxuICAgKlxuICAgKiBgYGBcbiAgICogLy8gYXR1YWxpemEgYSByZWZlcsOqbmNpYSBkbyBvYmpldG8gZ2FyYW50aW5kbyBhIGF0dWFsaXphw6fDo28gZG8gdGVtcGxhdGVcbiAgICogdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9ucywgeyB2YWx1ZTogJ3gnLCBsYWJlbDogJ05vdmEgb3DDp8OjbycgfV07XG4gICAqXG4gICAqIC8vIGV2aXRlLCBwb2lzIG7Do28gYXR1YWxpemEgYSByZWZlcsOqbmNpYSBkbyBvYmpldG8gcG9kZW5kbyBnZXJhciBhdHJhc29zIG5hIGF0dWFsaXphw6fDo28gZG8gdGVtcGxhdGVcbiAgICogdGhpcy5vcHRpb25zLnB1c2goeyB2YWx1ZTogJ3gnLCBsYWJlbDogJ05vdmEgb3DDp8OjbycgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgdGhpcy52YWxpZEFuZFNvcnRPcHRpb25zKCk7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgYSBsaXN0YSBkZWZpbmlkYSBuYSBwcm9wcmllZGFkZSBwLW9wdGlvbnMgc2Vyw6Egb3JkZW5hZGEgcGVsbyBsYWJlbCBhbnRlcyBkZSBzZXIgYXByZXNlbnRhZGEgbm9cbiAgICogZHJvcGRvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1zb3J0Jykgc2V0IHNvcnQoc29ydDogYm9vbGVhbikge1xuICAgIHRoaXMuX3NvcnQgPSA8YW55PnNvcnQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oc29ydCk7XG5cbiAgICB0aGlzLnZhbGlkQW5kU29ydE9wdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBzb3J0KCkge1xuICAgIHJldHVybiB0aGlzLl9zb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIG8gbW9kbyBkZSBwZXNxdWlzYSB1dGlsaXphZG8gbm8gY2FtcG8gZGUgYnVzY2EsIHF1YW5kbyBoYWJpbGl0YWRvLlxuICAgKiBWYWxvcmVzIGRlZmluaWRvcyBubyBlbnVtOiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZVxuICAgKlxuICAgKiBAZGVmYXVsdCBgc3RhcnRzV2l0aGBcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItbW9kZScpIHNldCBmaWx0ZXJNb2RlKGZpbHRlck1vZGU6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlKSB7XG4gICAgdGhpcy5fZmlsdGVyTW9kZSA9IGZpbHRlck1vZGUgaW4gUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUgPyBmaWx0ZXJNb2RlIDogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgICBzd2l0Y2ggKHRoaXMuX2ZpbHRlck1vZGUudG9TdHJpbmcoKSkge1xuICAgICAgY2FzZSAnc3RhcnRzV2l0aCc6XG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLmNvbnRhaW5zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLmVuZHNXaXRoO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgZmlsdGVyTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXG4gICAqIChgcC1vcHRpb25zYCksIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgcmVzcG9uc8OhdmVsIHBlbG8gdGV4dG8gZGUgYXByZXNlbnRhw6fDo28gZGUgY2FkYSBpdGVtIGRhIGxpc3RhLlxuICAgKlxuICAgKiBOZWNlc3PDoXJpbyBxdWFuZG8gaW5mb3JtYXIgbyBzZXJ2acOnbyBjb21vIFVSTCBlIG8gbWVzbW8gbsOjbyBlc3RpdmVyIHJldG9ybmFuZG8gdW1hIGxpc3RhIGRlIG9iamV0b3Mgbm8gcGFkcsOjbyBkYSBpbnRlcmZhY2VcbiAgICogYFBvTXVsdGlTZWxlY3RPcHRpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbGFiZWxgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRMYWJlbCA9IHZhbHVlIHx8IFBPX01VTFRJU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG5cbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZmllbGRMYWJlbCA9IHRoaXMuX2ZpZWxkTGFiZWw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIGBQb011bHRpU2VsZWN0T3B0aW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHZhbHVlYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgc2V0IGZpZWxkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19NVUxUSVNFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUO1xuXG4gICAgaWYgKGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpICYmIHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZSkpLFxuICAgICAgICBzd2l0Y2hNYXAoKHNlYXJjaDogc3RyaW5nKSA9PiB0aGlzLmFwcGx5RmlsdGVyKHNlYXJjaCkpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUxpc3QodGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHNldFNlcnZpY2Uoc2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlciB8IHN0cmluZykge1xuICAgIGlmIChpc1R5cGVvZihzZXJ2aWNlLCAnb2JqZWN0JykpIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IDxQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoPHN0cmluZz5zZXJ2aWNlLCB0aGlzLmZpZWxkTGFiZWwsIHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkQW5kU29ydE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9ucyh0aGlzLm9wdGlvbnMpO1xuICAgICAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnModGhpcy5vcHRpb25zKTtcbiAgICAgIHRoaXMuc2V0VW5kZWZpbmVkTGFiZWxzKHRoaXMub3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLnNvcnQpIHtcbiAgICAgICAgc29ydE9wdGlvbnNCeVByb3BlcnR5KHRoaXMub3B0aW9ucywgJ2xhYmVsJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0VW5kZWZpbmVkTGFiZWxzKG9wdGlvbnMpIHtcbiAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgIGlmICghb3B0aW9uWydsYWJlbCddKSB7XG4gICAgICAgIG9wdGlvbi5sYWJlbCA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUxpc3Qob3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4pIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc0Ryb3Bkb3duID0gb3B0aW9ucztcbiAgICB9XG4gIH1cblxuICBjYWxsT25DaGFuZ2Uoc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIGlmICh0aGlzLm9uTW9kZWxDaGFuZ2UpIHtcbiAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLmdldFZhbHVlc0Zyb21PcHRpb25zKHNlbGVjdGVkT3B0aW9ucykpO1xuICAgICAgdGhpcy5ldmVudENoYW5nZShzZWxlY3RlZE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGV2ZW50Q2hhbmdlKHNlbGVjdGVkT3B0aW9ucykge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbnMgJiYgdGhpcy5sYXN0TGVuZ3RoTW9kZWwgIT09IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQoc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB9XG4gICAgdGhpcy5sYXN0TGVuZ3RoTW9kZWwgPSBzZWxlY3RlZE9wdGlvbnMgPyBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDogbnVsbDtcbiAgfVxuXG4gIGdldFZhbHVlc0Zyb21PcHRpb25zKHNlbGVjdGVkT3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4pIHtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPyBzZWxlY3RlZE9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24udmFsdWUpIDogW107XG4gIH1cblxuICBnZXRMYWJlbEJ5VmFsdWUodmFsdWUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbaW5kZXhdLmxhYmVsO1xuICB9XG5cbiAgc2VhcmNoQnlMYWJlbChzZWFyY2g6IHN0cmluZywgb3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4sIGZpbHRlck1vZGU6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlKSB7XG4gICAgaWYgKHNlYXJjaCAmJiBvcHRpb25zICYmIG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXdPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiA9IFtdO1xuICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgIGlmIChvcHRpb24ubGFiZWwgJiYgdGhpcy5jb21wYXJlTWV0aG9kKHNlYXJjaCwgb3B0aW9uLCBmaWx0ZXJNb2RlKSkge1xuICAgICAgICAgIG5ld09wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNEcm9wZG93biA9IG5ld09wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNEcm9wZG93biA9IFsuLi5vcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBjb21wYXJlTWV0aG9kKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24sIGZpbHRlck1vZGU6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlKSB7XG4gICAgc3dpdGNoIChmaWx0ZXJNb2RlKSB7XG4gICAgICBjYXNlIFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg6XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0c1dpdGgoc2VhcmNoLCBvcHRpb24pO1xuICAgICAgY2FzZSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5jb250YWluczpcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbnMoc2VhcmNoLCBvcHRpb24pO1xuICAgICAgY2FzZSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5lbmRzV2l0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5kc1dpdGgoc2VhcmNoLCBvcHRpb24pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0c1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9NdWx0aXNlbGVjdE9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGNvbnRhaW5zKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2gudG9Mb3dlckNhc2UoKSkgPiAtMTtcbiAgfVxuXG4gIGVuZHNXaXRoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmxhYmVsLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGMudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRPcHRpb25zKG5ld09wdGlvbnM6IEFycmF5PGFueT4sIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMpIHtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKG5ld09wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmxhc3RMZW5ndGhNb2RlbCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdPcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdPcHRpb25zLmZvckVhY2gobmV3T3B0aW9uID0+IHtcbiAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvbi52YWx1ZSA9PT0gbmV3T3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgdmFsdWVzID0gdmFsdWVzIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMuc2VydmljZSAmJiB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmdldE9iamVjdHNCeVZhbHVlc1N1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZS5nZXRPYmplY3RzQnlWYWx1ZXModmFsdWVzKS5zdWJzY3JpYmUob3B0aW9ucyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVmFsaWRhciBzZSB0b2RvcyBvcyBpdGVtcyBleGlzdGVtIGVudHJlIG9zIG9wdGlvbnMsIHNlbsOjbyBhdHVhbGl6YXIgbyBtb2RlbFxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbnModmFsdWVzLm1hcCh2YWx1ZSA9PiAoeyB2YWx1ZSB9KSkpO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbnMgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoIDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgb3MgZXN0YWRvcyBkZSBoYWJpbGl0YWRvIHZpYSBmb3JtcyBhcGlcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVNb2RlbCgpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgYWJzdHJhY3QgYXBwbHlGaWx0ZXIodmFsdWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+PjtcbiAgYWJzdHJhY3QgdXBkYXRlVmlzaWJsZUl0ZW1zKCk6IHZvaWQ7XG59XG4iXX0=
|