tnx-shared 5.1.239 → 5.1.243
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/assets/gulpfile.js +23 -17
- package/bundles/tnx-shared.umd.js +30 -14
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
- package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
- package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +14 -7
- package/esm2015/services/master-data.service.js +2 -2
- package/esm2015/services/module-config.service.js +15 -6
- package/fesm2015/tnx-shared.js +30 -14
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/module-config.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -27,7 +27,7 @@ export class MasterDataService {
|
|
|
27
27
|
this.administrativeUnit = 'administrative_unit_';
|
|
28
28
|
this.administrativeUnitItem = 'administrative_item_unit_';
|
|
29
29
|
this.env = this._moduleConfigService.getConfig().environment;
|
|
30
|
-
this.apiEndpoint = this.env.apiDomain.
|
|
30
|
+
this.apiEndpoint = this.env.apiDomain.commonMasterDataV5Endpoint;
|
|
31
31
|
this.apiVersion = this.env.apiVersion;
|
|
32
32
|
this.groupCategoryEndpoint = `${this.apiEndpoint}/${this.apiVersion}/Groupcategory`;
|
|
33
33
|
this.singleCategoryEndpoint = `${this.apiEndpoint}/${this.apiVersion}/SingleCategory`;
|
|
@@ -399,4 +399,4 @@ MasterDataService.ctorParameters = () => [
|
|
|
399
399
|
{ type: StorageUpdatedService },
|
|
400
400
|
{ type: ModuleConfigService }
|
|
401
401
|
];
|
|
402
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJzZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQW1CLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLbkUsTUFBTSxPQUFPLGlCQUFpQjtJQWMxQixZQUNZLFdBQXVCLEVBQ3ZCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ25CLHNCQUE2QyxFQUM3QyxvQkFBeUM7UUFKekMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFqQnJELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRVosWUFBTyxHQUFHLFlBQVksQ0FBQztRQUN2QixtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4Qix3QkFB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QUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLFFBQWtCO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7O1lBM2FKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBZFEsVUFBVTtZQU1WLGFBQWE7WUFMRCxRQUFRO1lBT3BCLHFCQUFxQjtZQURyQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hc3RlckRhdGFJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL21hc3Rlci1kYXRhLWl0ZW0nO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VVcGRhdGVkU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS11cGRhdGVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIEdyaWRJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucywgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFzdGVyRGF0YVNlcnZpY2Uge1xyXG5cclxuICAgIHNldHVwU2lnbmFsciA9IGZhbHNlO1xyXG4gICAgYXBpRW5kcG9pbnQ6IGFueTtcclxuICAgIHJlYWRvbmx5IHN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XHJcbiAgICByZWFkb25seSBjYXRlZ29yeVByZWZpeCA9ICdjYXRfJztcclxuICAgIHJlYWRvbmx5IGNhdGVnb3J5R3JvdXBQcmVmaXggPSAnY2F0X2dyb3VwXyc7XHJcbiAgICByZWFkb25seSBhZG1pbmlzdHJhdGl2ZVVuaXQgPSAnYWRtaW5pc3RyYXRpdmVfdW5pdF8nO1xyXG4gICAgcmVhZG9ubHkgYWRtaW5pc3RyYXRpdmVVbml0SXRlbSA9ICdhZG1pbmlzdHJhdGl2ZV9pdGVtX3VuaXRfJztcclxuICAgIHJlYWRvbmx5IGdyb3VwQ2F0ZWdvcnlFbmRwb2ludDtcclxuICAgIHJlYWRvbmx5IHNpbmdsZUNhdGVnb3J5RW5kcG9pbnQ7XHJcbiAgICByZWFkb25seSBhcGlWZXJzaW9uO1xyXG4gICAgcmVhZG9ubHkgZW52O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RvcmFnZVVwZGF0ZWRTZXJ2aWNlOiBTdG9yYWdlVXBkYXRlZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5lbnYgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIHRoaXMuYXBpRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW4uY29tbW9uTWFzdGVyRGF0YUVuZHBvaW50O1xyXG5cclxuICAgICAgICB0aGlzLmFwaVZlcnNpb24gPSB0aGlzLmVudi5hcGlWZXJzaW9uO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBDYXRlZ29yeUVuZHBvaW50ID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vJHt0aGlzLmFwaVZlcnNpb259L0dyb3VwY2F0ZWdvcnlgO1xyXG4gICAgICAgIHRoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9LyR7dGhpcy5hcGlWZXJzaW9ufS9TaW5nbGVDYXRlZ29yeWA7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zZXR1cFNpZ25hbHIpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3RvcmFnZVVwZGF0ZWRTZXJ2aWNlLnN1YnNjcmliZUNoYW5nZWRMb2NhbFN0b3JhZ2UoJ2NhdF8qJywgYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhT2JqO1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YU9iaiA9IEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBkYXRhO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGFPYmopIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGRhdGFPYmoubWVzc2FnZS5jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50LmluZGV4T2YodGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4KSA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGRhdGFPYmoubWVzc2FnZS5jb250ZW50LnJlcGxhY2UodGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4LCAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0R3JvdXBJdGVtQnlDb2RlKGdyb3VwQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlHcm91cFByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmdsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cENvZGUgPSBkYXRhT2JqLm1lc3NhZ2UuY29udGVudC5yZXBsYWNlKHRoaXMuY2F0ZWdvcnlQcmVmaXgsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb0dldEFsbChncm91cENvZGUpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkOiBlbGVtZW50LmlkLCBjb2RlOiBlbGVtZW50LmNvZGUsIG5hbWU6IGVsZW1lbnQubmFtZSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhU291cmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBTaWduYWxyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IGVsZW1lbnQuaWQsIGNvZGU6IGVsZW1lbnQuY29kZSwgbmFtZTogZWxlbWVudC5uYW1lIH1cclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhU291cmNlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhU291cmNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb25maWdCeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY29uZmlnID0gJyc7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oY29kZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRDb25maWdCeUNvZGUoY29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShjb2RlLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbmZpZyA9IDxzdHJpbmc+cmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWcgPSA8c3RyaW5nPkpTT04ucGFyc2UodGhpcy5zdG9yYWdlLmdldEl0ZW0oY29kZSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGNvbmZpZyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RHJvcGRvd24oZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyB0aXRsZTogeC5uYW1lLCBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8U2VsZWN0SXRlbVtdPltdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RE1DaHVuZ0Ryb3Bkb3duKGNvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vR2V0QnlGaWx0ZXJDb2RlQW5kTmFtZUJ5R3JvdXBDb2RlLyR7Y29kZX1gKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1zKGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTZWxlY3RJdGVtW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4oc291cmNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gc291cmNlLm1hcCh4ID0+IDxTZWxlY3RJdGVtPnsgbGFiZWw6IHgubmFtZSwgdmFsdWU6IHguY29kZSB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUob3ApO1xyXG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGdldEdyb3VwQnlDb2RlKGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgLy8gICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgLy8gICAgICAgICAgICAgcmVzb2x2ZShzb3VyY2UpO1xyXG4gICAgLy8gICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPGFueVtdPltdKSk7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgZ2V0RHJvcGRvd25BZGRyZXNzKGlkLCBsZXZlbCA9IDEpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpLnRoZW4oc291cmNlID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wID0gc291cmNlLm1hcCh4ID0+IDxTZWxlY3RJdGVtPnsgdGl0bGU6IHgubmFtZSwgbGFiZWw6IHgubmFtZSwgdmFsdWU6IHguY29kZSB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUob3ApO1xyXG4gICAgICAgICAgICB9LCBlcnJvciA9PiByZWplY3QoPFNlbGVjdEl0ZW1bXT5bXSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFkZHJlc3MoaWQsIGxldmVsID0gMSk6IFByb21pc2U8TWFzdGVyRGF0YUl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhU291cmNlOiBNYXN0ZXJEYXRhSXRlbVtdID0gW107XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXR9LkxldmVsJHtsZXZlbH0uJHtpZH1gKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb2dldEFkZHJlc3MoaWQsIGxldmVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0fS5MZXZlbCR7bGV2ZWx9LiR7aWR9YCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFdhcmRzQnlzdHJlZXQoc3RyZWV0TmFtZTogc3RyaW5nLCBkaXN0cmljdENvZGU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdHJlZXRzID0gYXdhaXQgdGhpcy5nZXRBZGRyZXNzKGRpc3RyaWN0Q29kZSwgMik7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkcyA9IHN0cmVldHMuZmlsdGVyKHggPT4geC5uYW1lID09IHN0cmVldE5hbWUpLm1hcCh4ID0+IHgucGFyZW50SWQpO1xyXG4gICAgICAgICAgICByZXNvbHZlKHBhcmVudElkcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZG9nZXRBZGRyZXNzKGlkOiBzdHJpbmcsIGxldmVsID0gMSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzZXJ2aWNlVXJpID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vQ2l0eUNhdGVnb3J5L0dldEJ5UGFyZW50SWQvJHtpZH0/bGV2ZWw9JHtsZXZlbH1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtRGV0YWlsVW5pdChpZDogc3RyaW5nKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaXRlbURhdGE6IE1hc3RlckRhdGFJdGVtID0gbmV3IE1hc3RlckRhdGFJdGVtKCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXRJdGVtfSR7aWR9YCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlDb2RlLyR7aWR9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGl0ZW1EYXRhID0gPE1hc3RlckRhdGFJdGVtPnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaXRlbURhdGEgPSA8TWFzdGVyRGF0YUl0ZW0+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoaXRlbURhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZG9HZXRDb25maWdCeUNvZGUoY29kZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIC8vICBUT0RPOiBkbyBoaeG7h24gZ2nhu50ga28gZMO5bmcgbsOqbiBmaXggdOG6oW0gdmFsdWUsIHNhdSBz4bq9IHjhu60gbMO9IHRp4bq/cFxyXG4gICAgICAgICAgICByZXNvbHZlKDxSZXNwb25zZVJlc3VsdD57IGRhdGE6IHt9LCBzdWNjZXNzOiB0cnVlIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Db25maWd1cmF0aW9uU2VydmljZS9HZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xyXG5cclxuICAgICAgICAvLyByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgLy8gICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgIC8vICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBkb0dldEFsbChncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBncm91cCA9IGF3YWl0IHRoaXMuZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlKTtcclxuICAgICAgICBpZiAoIWdyb3VwLmRhdGEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoPFJlc3BvbnNlUmVzdWx0Pnsgc3VjY2VzczogdHJ1ZSwgZGF0YTogW10gfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBncmlkSW5mbyA9IG5ldyBHcmlkSW5mbyh7XHJcbiAgICAgICAgICAgIGZpZWxkczogJycsXHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzb3J0czogW3sgZmllbGQ6ICdzb3J0JywgZGlyOiAxIH1dLFxyXG4gICAgICAgICAgICBmaWx0ZXJzOiBbdGhpcy5fY29tbW9uU2VydmljZS5uZXdGaWx0ZXIoJ2dyb3VwQ2F0ZWdvcnlJZCcsIE9wZXJhdG9yLmVxdWFsLCBncm91cC5kYXRhLmlkKV1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0YShgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgLCBncmlkSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXREYXRhKHVyaSwgZ3JpZEluZm86IEdyaWRJbmZvKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LnBvc3Q8UmVzcG9uc2VSZXN1bHQ+KHVyaSwgZ3JpZEluZm8pLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJpID0gYCR7dGhpcy5ncm91cENhdGVnb3J5RW5kcG9pbnR9L2dldEJ5Q29kZS8ke2dyb3VwQ29kZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJpKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRXb3JrRGF5cyhkYXRlOiBzdHJpbmcsIGRheXM6IG51bWJlciwgaXNEYXkgPSAxKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Ib2xpZGF5Q2F0ZWdvcnkvR2V0RGF0ZT9kYXRlPSR7ZGF0ZX0mZGF5cz0ke2RheXN9JmlzRGF5PSR7aXNEYXl9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0ZUJ5RHVyYXRpb24oZGF0ZTogc3RyaW5nLCB0eXBlOiBib29sZWFuLCBkdXJhdGlvbjogbnVtYmVyKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9Ib2xpZGF5Q2F0ZWdvcnkvZ2V0RGF0ZUJ5RHVyYXRpb24/ZGF0ZT0ke2RhdGV9JnR5cGU9JHt0eXBlfSZkdXJhdGlvbj0ke2R1cmF0aW9ufWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1CeUNvZGUoZGF0YVNvdXJjZTogYW55LCBjb2RlOiBzdHJpbmcpOiBNYXN0ZXJEYXRhSXRlbSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5SW5zdGFuY2VJZChkYXRhU291cmNlOiBhbnksIGluc3RhbmNlSWQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4Lmluc3RhbmNlSWQgPT09IGluc3RhbmNlSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1CeUlkKGRhdGFTb3VyY2U6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiBkYXRhU291cmNlLmZpbmQoeCA9PiB4LmlkID09PSBpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5R3JvdXBBbmRDb2RlKGdyb3VwQ29kZTogc3RyaW5nLCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+cmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlID0gPE1hc3RlckRhdGFJdGVtW10+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWApKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhU291cmNlLmZpbmQoeCA9PiB4LmNvZGUgPT09IGNvZGUpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoQ2F0ZWdvcnkoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCh0aGlzLmNhdGVnb3J5UHJlZml4KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGtleS5zcGxpdCgnXycpWzFdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEFkcmVzcyhjaXR5OiBhbnksIGRpc3RyaWN0OiBhbnksIHdhcmQ6IGFueSwgc3RyZWV0OiBhbnksIHN0clRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN0clJlc3VsdCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAoc3RyVGV4dCAmJiBzdHJUZXh0ICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBzdHJSZXN1bHQgKz0gc3RyVGV4dCArICcsICc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHN0cmVldCAmJiBzdHJlZXQgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSBzdHJlZXQgKyAnLCAnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHdhcmQgJiYgd2FyZCAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGF3YWl0IHRoaXMuZ2V0SXRlbURldGFpbFVuaXQod2FyZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWUgKyAnLCAnXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRpc3RyaWN0ICYmIGRpc3RyaWN0ICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gYXdhaXQgdGhpcy5nZXRJdGVtRGV0YWlsVW5pdChkaXN0cmljdCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWUgKyAnLCAnXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNpdHkgJiYgY2l0eSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGF3YWl0IHRoaXMuZ2V0SXRlbURldGFpbFVuaXQoY2l0eSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSB4Lm5hbWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXNvbHZlKHN0clJlc3VsdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFsdWVCeUNvZGUoY29kZTogYW55KTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vZ2V0VmFsdWVCeUNvZGU/Y29kZT0ke2NvZGV9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybClcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRHcm91cEl0ZW1CeUNvZGUoY29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0dyb3VwQ2F0ZWdvcnkvJHtjb2RlfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmwpLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZU1hdGhFeHByZXNzaW9uKGV4cHJlc3Npb246IHN0cmluZywgZGVjaW1hbFBsYWNlczogbnVtYmVyLCBmb3JWaWV0bmFtZXNlOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBleHByZXNzaW9uID0gZW5jb2RlVVJJQ29tcG9uZW50KGV4cHJlc3Npb24pO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L01hdGhFeHByZXNzaW9uL1BhcnNlTWF0aD9leHByZXNzaW9uPSR7ZXhwcmVzc2lvbn0mZGVjaW1hbFBsYWNlcz0ke2RlY2ltYWxQbGFjZXN9JmZvclZpZXRuYW1lc2U9JHtmb3JWaWV0bmFtZXNlfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmwpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QnlHcmlkUmVxdWVzdChncm91cENvZGU6IHN0cmluZywgZ3JpZEluZm86IEdyaWRJbmZvLCBwbHVzVXJsOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZGF0YTogYW55O1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhU3RvcmFnZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCk7XHJcbiAgICAgICAgICAgIGlmICghZGF0YVN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGxldCBhcGlVcmwgPSBgJHt0aGlzLnNpbmdsZUNhdGVnb3J5RW5kcG9pbnR9L2dldERhdGFgO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsdXNVcmwgIT0gbnVsbCAmJiBwbHVzVXJsICE9ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgIGFwaVVybCArPSAnLycgKyBwbHVzVXJsO1xyXG4gICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMuX2h0dHBDbGllbnRcclxuICAgICAgICAgICAgICAgICAgICAucG9zdDxSZXNwb25zZVJlc3VsdD4oYXBpVXJsLCBncmlkSW5mbylcclxuICAgICAgICAgICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSkudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gLCBKU09OLnN0cmluZ2lmeShkYXRhLmRhdGEpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnBhcnNlKGRhdGFTdG9yYWdlKVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdlbmVyYXRlR3JpZEluZm9Ecm9wZG93bihmaWx0ZXJzOiBGaWx0ZXJbXSwgb3B0aW9uczogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgZ3JpZEluZm8gPSB7XHJcbiAgICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IDEwMDAwMFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmaWx0ZXJzLFxyXG4gICAgICAgICAgICBzb3J0czogW10sXHJcbiAgICAgICAgICAgIGZpZWxkczogYCR7b3B0aW9ucy52YWx1ZUZpZWxkfSR7b3B0aW9ucy5kaXNwbGF5RmllbGQgPT0gb3B0aW9ucy52YWx1ZUZpZWxkID8gJycgOiAnLCcgKyBvcHRpb25zLmRpc3BsYXlGaWVsZH0ke29wdGlvbnMuZmllbGRQbHVzfWBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydHMgIT0gbnVsbCAmJiBvcHRpb25zLnNvcnRzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzID0gWy4uLm9wdGlvbnMuc29ydHNdO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnRGaWVsZCAhPSBudWxsICYmIG9wdGlvbnMuc29ydEZpZWxkICE9ICcnKVxyXG4gICAgICAgICAgICBncmlkSW5mby5zb3J0cy5wdXNoKHsgZmllbGQ6IG9wdGlvbnMuc29ydEZpZWxkLCBkaXI6IG9wdGlvbnMuc29ydERpciB9KTtcclxuICAgICAgICByZXR1cm4gZ3JpZEluZm87XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0VmFsdWUob3B0aW9uczogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuZmllbGRQbHVzLmxlbmd0aCA+IDAgJiYgIW9wdGlvbnMuZmllbGRQbHVzLnN0YXJ0c1dpdGgoJywnKSlcclxuICAgICAgICAgICAgb3B0aW9ucy5maWVsZFBsdXMgPSAnLCcgKyBvcHRpb25zLmZpZWxkUGx1cztcclxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0RmllbGQgPT0gJycpXHJcbiAgICAgICAgICAgIG9wdGlvbnMuc29ydEZpZWxkID0gb3B0aW9ucy5kaXNwbGF5RmllbGQ7XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuZnVuY0dldExhYmVsID09IG51bGwgfHwgdHlwZW9mIG9wdGlvbnMuZnVuY0dldExhYmVsICE9ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5mdW5jR2V0TGFiZWwgPSAoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bb3B0aW9ucy5kaXNwbGF5RmllbGRdO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhRHJvcGRvd24oZ3JvdXBDb2RlOiBzdHJpbmcsIGFyclZhbHVlOiBhbnlbXSwgb3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRWYWx1ZShvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmIChhcnJWYWx1ZSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcztcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZmlsdGVyKHggPT4gYXJyVmFsdWUuc29tZSh2ID0+IHYgPT0geFtvcHRpb25zLnZhbHVlRmllbGRdKSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiByZWplY3QoZXJyKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YURyb3Bkb3duQnlGaWx0ZXIoZ3JvdXBDb2RlOiBzdHJpbmcsIGFyclZhbHVlOiBhbnlbXSwgZmlsdGVyczogRmlsdGVyW10sIG9wdGlvbnM/OiBEcm9wZG93bk9wdGlvbnMpOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsdWUob3B0aW9ucyk7XHJcbiAgICAgICAgZmlsdGVycy5zcGxpY2UoMCwgMCwgdGhpcy5fY29tbW9uU2VydmljZS5uZXdGaWx0ZXIoJ2dyb3VwQ2F0ZWdvcnlDb2RlJywgT3BlcmF0b3IuZXF1YWwsIGdyb3VwQ29kZSkpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSlcclxuICAgICAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcnJWYWx1ZSA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZmlsdGVyKHggPT4gYXJyVmFsdWUuc29tZSh2ID0+IHYgPT0geFtvcHRpb25zLnZhbHVlRmllbGRdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBjb25zdCBjb21tb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENvbW1vblNlcnZpY2UpO1xyXG4gICAgICAgIHJldHVybiBjb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVycm9yLCBpbmplY3Rvcik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvIiwic291cmNlcyI6WyJzZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQW1CLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7QUFLbkUsTUFBTSxPQUFPLGlCQUFpQjtJQWMxQixZQUNZLFdBQXVCLEVBQ3ZCLGNBQTZCLEVBQzdCLFNBQW1CLEVBQ25CLHNCQUE2QyxFQUM3QyxvQkFBeUM7UUFKekMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFqQnJELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRVosWUFBTyxHQUFHLFlBQVksQ0FBQztRQUN2QixtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4Qix3QkFB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QUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVSxFQUFFLFFBQWtCO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsT0FBTyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7O1lBM2FKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7O1lBZFEsVUFBVTtZQU1WLGFBQWE7WUFMRCxRQUFRO1lBT3BCLHFCQUFxQjtZQURyQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hc3RlckRhdGFJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL21hc3Rlci1kYXRhLWl0ZW0nO1xyXG5pbXBvcnQgeyBSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4uL21vZGVscy9yZXNwb25zZS1yZXN1bHQnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21tb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZHVsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21vZHVsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VVcGRhdGVkU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS11cGRhdGVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIEdyaWRJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucywgT3BlcmF0b3IgfSBmcm9tICcuLi9jbGFzc2VzL2Zvcm0tc2NoZW1hJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFzdGVyRGF0YVNlcnZpY2Uge1xyXG5cclxuICAgIHNldHVwU2lnbmFsciA9IGZhbHNlO1xyXG4gICAgYXBpRW5kcG9pbnQ6IGFueTtcclxuICAgIHJlYWRvbmx5IHN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2U7XHJcbiAgICByZWFkb25seSBjYXRlZ29yeVByZWZpeCA9ICdjYXRfJztcclxuICAgIHJlYWRvbmx5IGNhdGVnb3J5R3JvdXBQcmVmaXggPSAnY2F0X2dyb3VwXyc7XHJcbiAgICByZWFkb25seSBhZG1pbmlzdHJhdGl2ZVVuaXQgPSAnYWRtaW5pc3RyYXRpdmVfdW5pdF8nO1xyXG4gICAgcmVhZG9ubHkgYWRtaW5pc3RyYXRpdmVVbml0SXRlbSA9ICdhZG1pbmlzdHJhdGl2ZV9pdGVtX3VuaXRfJztcclxuICAgIHJlYWRvbmx5IGdyb3VwQ2F0ZWdvcnlFbmRwb2ludDtcclxuICAgIHJlYWRvbmx5IHNpbmdsZUNhdGVnb3J5RW5kcG9pbnQ7XHJcbiAgICByZWFkb25seSBhcGlWZXJzaW9uO1xyXG4gICAgcmVhZG9ubHkgZW52O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgX2h0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBfY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBfc3RvcmFnZVVwZGF0ZWRTZXJ2aWNlOiBTdG9yYWdlVXBkYXRlZFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBfbW9kdWxlQ29uZmlnU2VydmljZTogTW9kdWxlQ29uZmlnU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5lbnYgPSB0aGlzLl9tb2R1bGVDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmVudmlyb25tZW50O1xyXG4gICAgICAgIHRoaXMuYXBpRW5kcG9pbnQgPSB0aGlzLmVudi5hcGlEb21haW4uY29tbW9uTWFzdGVyRGF0YVY1RW5kcG9pbnQ7XHJcblxyXG4gICAgICAgIHRoaXMuYXBpVmVyc2lvbiA9IHRoaXMuZW52LmFwaVZlcnNpb247XHJcbiAgICAgICAgdGhpcy5ncm91cENhdGVnb3J5RW5kcG9pbnQgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS8ke3RoaXMuYXBpVmVyc2lvbn0vR3JvdXBjYXRlZ29yeWA7XHJcbiAgICAgICAgdGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50ID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vJHt0aGlzLmFwaVZlcnNpb259L1NpbmdsZUNhdGVnb3J5YDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNldHVwU2lnbmFscikge1xyXG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlVXBkYXRlZFNlcnZpY2Uuc3Vic2NyaWJlQ2hhbmdlZExvY2FsU3RvcmFnZSgnY2F0XyonLCBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRhdGFPYmo7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhT2JqID0gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YU9iaiA9IGRhdGE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YU9iaikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQuaW5kZXhPZih0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXgpID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb2RlID0gZGF0YU9iai5tZXNzYWdlLmNvbnRlbnQucmVwbGFjZSh0aGlzLmNhdGVnb3J5R3JvdXBQcmVmaXgsICcnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRHcm91cEl0ZW1CeUNvZGUoZ3JvdXBDb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeUdyb3VwUHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29kZSA9IGRhdGFPYmoubWVzc2FnZS5jb250ZW50LnJlcGxhY2UodGhpcy5jYXRlZ29yeVByZWZpeCwgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvR2V0QWxsKGdyb3VwQ29kZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IGVsZW1lbnQuaWQsIGNvZGU6IGVsZW1lbnQuY29kZSwgbmFtZTogZWxlbWVudC5uYW1lIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KGRhdGFTb3VyY2UpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXR1cFNpZ25hbHIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtW10+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRBbGwoZ3JvdXBDb2RlKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZXN1bHQuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogZWxlbWVudC5pZCwgY29kZTogZWxlbWVudC5jb2RlLCBuYW1lOiBlbGVtZW50Lm5hbWUgfVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KGRhdGFTb3VyY2UpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvbmZpZ0J5Q29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb25maWcgPSAnJztcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShjb2RlKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb0dldENvbmZpZ0J5Q29kZShjb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGNvZGUsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uZmlnID0gPHN0cmluZz5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZyA9IDxzdHJpbmc+SlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2UuZ2V0SXRlbShjb2RlKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoY29uZmlnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREcm9wZG93bihncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHNvdXJjZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHNvdXJjZS5tYXAoeCA9PiA8U2VsZWN0SXRlbT57IHRpdGxlOiB4Lm5hbWUsIGxhYmVsOiB4Lm5hbWUsIHZhbHVlOiB4LmNvZGUgfSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKG9wKTtcclxuICAgICAgICAgICAgfSwgZXJyb3IgPT4gcmVqZWN0KDxTZWxlY3RJdGVtW10+W10pKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRETUNodW5nRHJvcGRvd24oY29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9HZXRCeUZpbHRlckNvZGVBbmROYW1lQnlHcm91cENvZGUvJHtjb2RlfWApXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbXMoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNlbGVjdEl0ZW1bXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8U2VsZWN0SXRlbVtdPltdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2V0R3JvdXBCeUNvZGUoZ3JvdXBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKS50aGVuKHNvdXJjZSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICByZXNvbHZlKHNvdXJjZSk7XHJcbiAgICAvLyAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8YW55W10+W10pKTtcclxuICAgIC8vICAgICB9KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBnZXREcm9wZG93bkFkZHJlc3MoaWQsIGxldmVsID0gMSk6IFByb21pc2U8U2VsZWN0SXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBZGRyZXNzKGlkLCBsZXZlbCkudGhlbihzb3VyY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBzb3VyY2UubWFwKHggPT4gPFNlbGVjdEl0ZW0+eyB0aXRsZTogeC5uYW1lLCBsYWJlbDogeC5uYW1lLCB2YWx1ZTogeC5jb2RlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvcCk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHJlamVjdCg8U2VsZWN0SXRlbVtdPltdKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWRkcmVzcyhpZCwgbGV2ZWwgPSAxKTogUHJvbWlzZTxNYXN0ZXJEYXRhSXRlbVtdPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2U6IE1hc3RlckRhdGFJdGVtW10gPSBbXTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdH0uTGV2ZWwke2xldmVsfS4ke2lkfWApKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvZ2V0QWRkcmVzcyhpZCwgbGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXR9LkxldmVsJHtsZXZlbH0uJHtpZH1gLCBKU09OLnN0cmluZ2lmeShyZXN1bHQuZGF0YSkpO1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IDxNYXN0ZXJEYXRhSXRlbVtdPnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGF0YVNvdXJjZSA9IDxNYXN0ZXJEYXRhSXRlbVtdPkpTT04ucGFyc2UodGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5hZG1pbmlzdHJhdGl2ZVVuaXR9LkxldmVsJHtsZXZlbH0uJHtpZH1gKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YVNvdXJjZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2FyZHNCeXN0cmVldChzdHJlZXROYW1lOiBzdHJpbmcsIGRpc3RyaWN0Q29kZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0cmVldHMgPSBhd2FpdCB0aGlzLmdldEFkZHJlc3MoZGlzdHJpY3RDb2RlLCAyKTtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50SWRzID0gc3RyZWV0cy5maWx0ZXIoeCA9PiB4Lm5hbWUgPT0gc3RyZWV0TmFtZSkubWFwKHggPT4geC5wYXJlbnRJZCk7XHJcbiAgICAgICAgICAgIHJlc29sdmUocGFyZW50SWRzKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkb2dldEFkZHJlc3MoaWQ6IHN0cmluZywgbGV2ZWwgPSAxKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmkgPSBgJHt0aGlzLmFwaUVuZHBvaW50fS9DaXR5Q2F0ZWdvcnkvR2V0QnlQYXJlbnRJZC8ke2lkfT9sZXZlbD0ke2xldmVsfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0PihzZXJ2aWNlVXJpKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1EZXRhaWxVbml0KGlkOiBzdHJpbmcpOiBQcm9taXNlPE1hc3RlckRhdGFJdGVtPiB7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtRGF0YTogTWFzdGVyRGF0YUl0ZW0gPSBuZXcgTWFzdGVyRGF0YUl0ZW0oKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShgJHt0aGlzLmFkbWluaXN0cmF0aXZlVW5pdEl0ZW19JHtpZH1gKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0NpdHlDYXRlZ29yeS9HZXRCeUNvZGUvJHtpZH1gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0SXRlbX0ke2lkfWAsIEpTT04uc3RyaW5naWZ5KHJlc3VsdC5kYXRhKSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaXRlbURhdGEgPSA8TWFzdGVyRGF0YUl0ZW0+cmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtRGF0YSA9IDxNYXN0ZXJEYXRhSXRlbT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuYWRtaW5pc3RyYXRpdmVVbml0SXRlbX0ke2lkfWApKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShpdGVtRGF0YSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBkb0dldENvbmZpZ0J5Q29kZShjb2RlOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgLy8gIFRPRE86IGRvIGhp4buHbiBnaeG7nSBrbyBkw7luZyBuw6puIGZpeCB04bqhbSB2YWx1ZSwgc2F1IHPhur0geOG7rSBsw70gdGnhur9wXHJcbiAgICAgICAgICAgIHJlc29sdmUoPFJlc3BvbnNlUmVzdWx0PnsgZGF0YToge30sIHN1Y2Nlc3M6IHRydWUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0NvbmZpZ3VyYXRpb25TZXJ2aWNlL0dldFZhbHVlQnlDb2RlP2NvZGU9JHtjb2RlfWA7XHJcblxyXG4gICAgICAgIC8vIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcclxuICAgICAgICAvLyAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgLy8gICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIGRvR2V0QWxsKGdyb3VwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gYXdhaXQgdGhpcy5nZXRHcm91cEJ5Q29kZShncm91cENvZGUpO1xyXG4gICAgICAgIGlmICghZ3JvdXAuZGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSg8UmVzcG9uc2VSZXN1bHQ+eyBzdWNjZXNzOiB0cnVlLCBkYXRhOiBbXSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGdyaWRJbmZvID0gbmV3IEdyaWRJbmZvKHtcclxuICAgICAgICAgICAgZmllbGRzOiAnJyxcclxuICAgICAgICAgICAgcGFnZUluZm86IHtcclxuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMTAwMDAsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNvcnRzOiBbeyBmaWVsZDogJ3NvcnQnLCBkaXI6IDEgfV0sXHJcbiAgICAgICAgICAgIGZpbHRlcnM6IFt0aGlzLl9jb21tb25TZXJ2aWNlLm5ld0ZpbHRlcignZ3JvdXBDYXRlZ29yeUlkJywgT3BlcmF0b3IuZXF1YWwsIGdyb3VwLmRhdGEuaWQpXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRhKGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vZ2V0RGF0YWAsIGdyaWRJbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldERhdGEodXJpLCBncmlkSW5mbzogR3JpZEluZm8pOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQucG9zdDxSZXNwb25zZVJlc3VsdD4odXJpLCBncmlkSW5mbykudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRHcm91cEJ5Q29kZShncm91cENvZGU6IHN0cmluZyk6IFByb21pc2U8UmVzcG9uc2VSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCB1cmkgPSBgJHt0aGlzLmdyb3VwQ2F0ZWdvcnlFbmRwb2ludH0vZ2V0QnlDb2RlLyR7Z3JvdXBDb2RlfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBDbGllbnQuZ2V0PFJlc3BvbnNlUmVzdWx0Pih1cmkpLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZFdvcmtEYXlzKGRhdGU6IHN0cmluZywgZGF5czogbnVtYmVyLCBpc0RheSA9IDEpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0hvbGlkYXlDYXRlZ29yeS9HZXREYXRlP2RhdGU9JHtkYXRlfSZkYXlzPSR7ZGF5c30maXNEYXk9JHtpc0RheX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4oc2VydmljZVVyaSlcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRlQnlEdXJhdGlvbihkYXRlOiBzdHJpbmcsIHR5cGU6IGJvb2xlYW4sIGR1cmF0aW9uOiBudW1iZXIpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZVVyaSA9IGAke3RoaXMuYXBpRW5kcG9pbnR9L0hvbGlkYXlDYXRlZ29yeS9nZXREYXRlQnlEdXJhdGlvbj9kYXRlPSR7ZGF0ZX0mdHlwZT0ke3R5cGV9JmR1cmF0aW9uPSR7ZHVyYXRpb259YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHNlcnZpY2VVcmkpXHJcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuX2NvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5Q29kZShkYXRhU291cmNlOiBhbnksIGNvZGU6IHN0cmluZyk6IE1hc3RlckRhdGFJdGVtIHtcclxuICAgICAgICByZXR1cm4gZGF0YVNvdXJjZS5maW5kKHggPT4geC5jb2RlID09PSBjb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtQnlJbnN0YW5jZUlkKGRhdGFTb3VyY2U6IGFueSwgaW5zdGFuY2VJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguaW5zdGFuY2VJZCA9PT0gaW5zdGFuY2VJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUJ5SWQoZGF0YVNvdXJjZTogYW55LCBpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFTb3VyY2UuZmluZCh4ID0+IHguaWQgPT09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRJdGVtQnlHcm91cEFuZENvZGUoZ3JvdXBDb2RlOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8TWFzdGVyRGF0YUl0ZW0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZTogTWFzdGVyRGF0YUl0ZW1bXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZG9HZXRBbGwoZ3JvdXBDb2RlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCwgSlNPTi5zdHJpbmdpZnkocmVzdWx0LmRhdGEpKTtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2UgPSA8TWFzdGVyRGF0YUl0ZW1bXT5KU09OLnBhcnNlKHRoaXMuc3RvcmFnZS5nZXRJdGVtKGAke3RoaXMuY2F0ZWdvcnlQcmVmaXh9JHtncm91cENvZGV9YCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGRhdGFTb3VyY2UuZmluZCh4ID0+IHguY29kZSA9PT0gY29kZSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hDYXRlZ29yeSgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKHRoaXMuY2F0ZWdvcnlQcmVmaXgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBDb2RlID0ga2V5LnNwbGl0KCdfJylbMV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldChncm91cENvZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0QWRyZXNzKGNpdHk6IGFueSwgZGlzdHJpY3Q6IGFueSwgd2FyZDogYW55LCBzdHJlZXQ6IGFueSwgc3RyVGV4dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc3RyUmVzdWx0ID0gJyc7XHJcbiAgICAgICAgICAgIGlmIChzdHJUZXh0ICYmIHN0clRleHQgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHN0clJlc3VsdCArPSBzdHJUZXh0ICsgJywgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3RyZWV0ICYmIHN0cmVldCAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHN0cmVldCArICcsICdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAod2FyZCAmJiB3YXJkICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gYXdhaXQgdGhpcy5nZXRJdGVtRGV0YWlsVW5pdCh3YXJkKTtcclxuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHgubmFtZSArICcsICdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGlzdHJpY3QgJiYgZGlzdHJpY3QgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHggPSBhd2FpdCB0aGlzLmdldEl0ZW1EZXRhaWxVbml0KGRpc3RyaWN0KTtcclxuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHgubmFtZSArICcsICdcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2l0eSAmJiBjaXR5ICE9ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB4ID0gYXdhaXQgdGhpcy5nZXRJdGVtRGV0YWlsVW5pdChjaXR5KTtcclxuICAgICAgICAgICAgICAgIGlmICh4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyUmVzdWx0ICs9IHgubmFtZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc29sdmUoc3RyUmVzdWx0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRWYWx1ZUJ5Q29kZShjb2RlOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5zaW5nbGVDYXRlZ29yeUVuZHBvaW50fS9nZXRWYWx1ZUJ5Q29kZT9jb2RlPSR7Y29kZX1gO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwQ2xpZW50LmdldDxSZXNwb25zZVJlc3VsdD4odXJsKVxyXG4gICAgICAgICAgICAucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdyb3VwSXRlbUJ5Q29kZShjb2RlOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vR3JvdXBDYXRlZ29yeS8ke2NvZGV9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybCkucGlwZShjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLl9jb21tb25TZXJ2aWNlLmhhbmRsZUVycm9yKGVyciwgdGhpcy5faW5qZWN0b3IpKSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcnNlTWF0aEV4cHJlc3Npb24oZXhwcmVzc2lvbjogc3RyaW5nLCBkZWNpbWFsUGxhY2VzOiBudW1iZXIsIGZvclZpZXRuYW1lc2U6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIGV4cHJlc3Npb24gPSBlbmNvZGVVUklDb21wb25lbnQoZXhwcmVzc2lvbik7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcGlFbmRwb2ludH0vTWF0aEV4cHJlc3Npb24vUGFyc2VNYXRoP2V4cHJlc3Npb249JHtleHByZXNzaW9ufSZkZWNpbWFsUGxhY2VzPSR7ZGVjaW1hbFBsYWNlc30mZm9yVmlldG5hbWVzZT0ke2ZvclZpZXRuYW1lc2V9YDtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cENsaWVudC5nZXQ8UmVzcG9uc2VSZXN1bHQ+KHVybClcclxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5fY29tbW9uU2VydmljZS5oYW5kbGVFcnJvcihlcnIsIHRoaXMuX2luamVjdG9yKSkpXHJcbiAgICAgICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRCeUdyaWRSZXF1ZXN0KGdyb3VwQ29kZTogc3RyaW5nLCBncmlkSW5mbzogR3JpZEluZm8sIHBsdXNVcmw6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxSZXNwb25zZVJlc3VsdD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBkYXRhOiBhbnk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTdG9yYWdlID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oYCR7dGhpcy5jYXRlZ29yeVByZWZpeH0ke2dyb3VwQ29kZX1gKTtcclxuICAgICAgICAgICAgaWYgKCFkYXRhU3RvcmFnZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGFwaVVybCA9IGAke3RoaXMuc2luZ2xlQ2F0ZWdvcnlFbmRwb2ludH0vZ2V0RGF0YWA7XHJcbiAgICAgICAgICAgICAgICBpZiAocGx1c1VybCAhPSBudWxsICYmIHBsdXNVcmwgIT0gJycpXHJcbiAgICAgICAgICAgICAgICAgICAgYXBpVXJsICs9ICcvJyArIHBsdXNVcmw7XHJcbiAgICAgICAgICAgICAgICBkYXRhID0gYXdhaXQgdGhpcy5faHR0cENsaWVudFxyXG4gICAgICAgICAgICAgICAgICAgIC5wb3N0PFJlc3BvbnNlUmVzdWx0PihhcGlVcmwsIGdyaWRJbmZvKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyLCB0aGlzLl9pbmplY3RvcikpKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0SXRlbShgJHt0aGlzLmNhdGVnb3J5UHJlZml4fSR7Z3JvdXBDb2RlfWAsIEpTT04uc3RyaW5naWZ5KGRhdGEuZGF0YSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04ucGFyc2UoZGF0YVN0b3JhZ2UpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVHcmlkSW5mb0Ryb3Bkb3duKGZpbHRlcnM6IEZpbHRlcltdLCBvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBncmlkSW5mbyA9IHtcclxuICAgICAgICAgICAgcGFnZUluZm86IHtcclxuICAgICAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMTAwMDAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgICAgICAgZmllbGRzOiBgJHtvcHRpb25zLnZhbHVlRmllbGR9JHtvcHRpb25zLmRpc3BsYXlGaWVsZCA9PSBvcHRpb25zLnZhbHVlRmllbGQgPyAnJyA6ICcsJyArIG9wdGlvbnMuZGlzcGxheUZpZWxkfSR7b3B0aW9ucy5maWVsZFBsdXN9YFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0aW9ucy5zb3J0cyAhPSBudWxsICYmIG9wdGlvbnMuc29ydHMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgZ3JpZEluZm8uc29ydHMgPSBbLi4ub3B0aW9ucy5zb3J0c107XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuc29ydEZpZWxkICE9IG51bGwgJiYgb3B0aW9ucy5zb3J0RmllbGQgIT0gJycpXHJcbiAgICAgICAgICAgIGdyaWRJbmZvLnNvcnRzLnB1c2goeyBmaWVsZDogb3B0aW9ucy5zb3J0RmllbGQsIGRpcjogb3B0aW9ucy5zb3J0RGlyIH0pO1xyXG4gICAgICAgIHJldHVybiBncmlkSW5mbztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldERlZmF1bHRWYWx1ZShvcHRpb25zOiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBpZiAob3B0aW9ucy5maWVsZFBsdXMubGVuZ3RoID4gMCAmJiAhb3B0aW9ucy5maWVsZFBsdXMuc3RhcnRzV2l0aCgnLCcpKVxyXG4gICAgICAgICAgICBvcHRpb25zLmZpZWxkUGx1cyA9ICcsJyArIG9wdGlvbnMuZmllbGRQbHVzO1xyXG4gICAgICAgIGlmIChvcHRpb25zLnNvcnRGaWVsZCA9PSAnJylcclxuICAgICAgICAgICAgb3B0aW9ucy5zb3J0RmllbGQgPSBvcHRpb25zLmRpc3BsYXlGaWVsZDtcclxuICAgICAgICBpZiAob3B0aW9ucy5mdW5jR2V0TGFiZWwgPT0gbnVsbCB8fCB0eXBlb2Ygb3B0aW9ucy5mdW5jR2V0TGFiZWwgIT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICBvcHRpb25zLmZ1bmNHZXRMYWJlbCA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVtvcHRpb25zLmRpc3BsYXlGaWVsZF07XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGFEcm9wZG93bihncm91cENvZGU6IHN0cmluZywgYXJyVmFsdWU6IGFueVtdLCBvcHRpb25zPzogRHJvcGRvd25PcHRpb25zKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFZhbHVlKG9wdGlvbnMpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0KGdyb3VwQ29kZSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGFyclZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcy5maWx0ZXIoeCA9PiBhcnJWYWx1ZS5zb21lKHYgPT4gdiA9PSB4W29wdGlvbnMudmFsdWVGaWVsZF0pKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHJlamVjdChlcnIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhRHJvcGRvd25CeUZpbHRlcihncm91cENvZGU6IHN0cmluZywgYXJyVmFsdWU6IGFueVtdLCBmaWx0ZXJzOiBGaWx0ZXJbXSwgb3B0aW9ucz86IERyb3Bkb3duT3B0aW9ucyk6IFByb21pc2U8YW55W10+IHtcclxuICAgICAgICB0aGlzLnNldERlZmF1bHRWYWx1ZShvcHRpb25zKTtcclxuICAgICAgICBmaWx0ZXJzLnNwbGljZSgwLCAwLCB0aGlzLl9jb21tb25TZXJ2aWNlLm5ld0ZpbHRlcignZ3JvdXBDYXRlZ29yeUNvZGUnLCBPcGVyYXRvci5lcXVhbCwgZ3JvdXBDb2RlKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXQoZ3JvdXBDb2RlKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyclZhbHVlID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcztcclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcy5maWx0ZXIoeCA9PiBhcnJWYWx1ZS5zb21lKHYgPT4gdiA9PSB4W29wdGlvbnMudmFsdWVGaWVsZF0pKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gcmVqZWN0KGVycikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKGVycm9yOiBhbnksIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIGNvbnN0IGNvbW1vblNlcnZpY2UgPSBpbmplY3Rvci5nZXQoQ29tbW9uU2VydmljZSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbW1vblNlcnZpY2UuaGFuZGxlRXJyb3IoZXJyb3IsIGluamVjdG9yKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -5,11 +5,20 @@ export function moduleConfigFunc() {
|
|
|
5
5
|
}
|
|
6
6
|
export class ModuleConfigService {
|
|
7
7
|
constructor(moduleConfigVal = null) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
if (!moduleConfigVal) {
|
|
9
|
+
// get from session storage
|
|
10
|
+
const data = sessionStorage.getItem('moduleConfigVal');
|
|
11
|
+
if (data) {
|
|
12
|
+
this._config = JSON.parse(data);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
console.error('cannot find moduleConfigVal');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this._config = moduleConfigVal();
|
|
20
|
+
sessionStorage.setItem('moduleConfigVal', JSON.stringify(this._config));
|
|
21
|
+
}
|
|
13
22
|
}
|
|
14
23
|
getConfig() {
|
|
15
24
|
return this._config;
|
|
@@ -24,4 +33,4 @@ ModuleConfigService.decorators = [
|
|
|
24
33
|
ModuleConfigService.ctorParameters = () => [
|
|
25
34
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [moduleConfigFunc,] }] }
|
|
26
35
|
];
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWNvbmZpZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3Byb2plY3RzL3RueC1zaGFyZWQvc3JjL2xpYi8iLCJzb3VyY2VzIjpbInNlcnZpY2VzL21vZHVsZS1jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUc3RSxNQUFNLFVBQVUsZ0JBQWdCO0lBQzVCLE9BQU8sSUFBSSxjQUFjLENBQWUsRUFBRSxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUtELE1BQU0sT0FBTyxtQkFBbUI7SUFHNUIsWUFHSSxrQkFBdUIsSUFBSTtRQUUzQixJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2xCLDJCQUEyQjtZQUMzQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdkQsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO2lCQUNJO2dCQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQzthQUNoRDtTQUNKO2FBQ0k7WUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsRUFBRSxDQUFDO1lBQ2pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMzRTtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7Ozs7WUE3QkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCOzs7NENBS1EsUUFBUSxZQUNSLE1BQU0sU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNb2R1bGVDb25maWcgfSBmcm9tICcuLi9jb25maWdzL21vZHVsZS1jb25maWcnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1vZHVsZUNvbmZpZ0Z1bmMoKSB7XHJcbiAgICByZXR1cm4gbmV3IEluamVjdGlvblRva2VuPE1vZHVsZUNvbmZpZz4oJycpO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZHVsZUNvbmZpZ1NlcnZpY2Uge1xyXG4gICAgcHJvdGVjdGVkIF9jb25maWc6IE1vZHVsZUNvbmZpZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBAT3B0aW9uYWwoKVxyXG4gICAgICAgIEBJbmplY3QobW9kdWxlQ29uZmlnRnVuYylcclxuICAgICAgICBtb2R1bGVDb25maWdWYWw6IGFueSA9IG51bGxcclxuICAgICkge1xyXG4gICAgICAgIGlmICghbW9kdWxlQ29uZmlnVmFsKSB7XHJcbiAgICAgICAgICAgIC8vIGdldCBmcm9tIHNlc3Npb24gc3RvcmFnZVxyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbW9kdWxlQ29uZmlnVmFsJyk7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25maWcgPSBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignY2Fubm90IGZpbmQgbW9kdWxlQ29uZmlnVmFsJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZyA9IG1vZHVsZUNvbmZpZ1ZhbCgpO1xyXG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtb2R1bGVDb25maWdWYWwnLCBKU09OLnN0cmluZ2lmeSh0aGlzLl9jb25maWcpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29uZmlnKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWc7XHJcbiAgICB9XHJcbn1cclxuIl19
|