@eo-sdk/client 11.14.30 → 11.14.32
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/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +4 -4
- package/esm2022/app/eo-framework/media/media.component.mjs +4 -1
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +2 -2
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +3 -3
- package/fesm2022/eo-sdk-client.mjs +16 -13
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -66,7 +66,7 @@ let ObjectHistoryComponent = class ObjectHistoryComponent {
|
|
|
66
66
|
res.description = this.translate.instant('eo.object.history.entry.type.' + (res.intent ? res.intent : res.type) + '.description', res.parameter);
|
|
67
67
|
});
|
|
68
68
|
this.completeHistory = reversedRes;
|
|
69
|
-
this.history = reversedRes;
|
|
69
|
+
this.history = reversedRes.filter(entry => this.filters.indexOf(entry.group) === -1);
|
|
70
70
|
this.cd.markForCheck();
|
|
71
71
|
}))
|
|
72
72
|
.subscribe();
|
|
@@ -84,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
84
84
|
}], ctorParameters: () => [{ type: i1.DmsService }, { type: i0.ChangeDetectorRef }, { type: i1.EventService }, { type: i1.TranslateService }], propDecorators: { params: [{
|
|
85
85
|
type: Input
|
|
86
86
|
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWhpc3Rvcnkvb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWhpc3Rvcnkvb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQStDLFVBQVUsRUFBaUMsTUFBTSxjQUFjLENBQUM7QUFDdEgsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFVNUIsSUFBTSxzQkFBc0IsR0FBNUIsTUFBTSxzQkFBc0I7SUFTakMsSUFBSSxPQUFPLENBQUMsVUFBbUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDSSxNQUFNLENBQUMsQ0FBWTtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQW9C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UyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0FsRVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsdUZDYm5DLHFrR0FrRUE7O0FEckRhLHNCQUFzQjtJQVBsQyxZQUFZLEVBQUU7R0FPRixzQkFBc0IsQ0FtRWxDOzsyRkFuRVksc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNO3lLQW9CM0MsTUFBTTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEbXNPYmplY3RIaXN0b3J5RW50cnksIERtc1BhcmFtcywgRG1zU2VydmljZSwgRW5haW9FdmVudCwgRXZlbnRTZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SVZpc2libGVGaWx0ZXJ9IGZyb20gJy4vaGlzdG9yeS1maWx0ZXIvaGlzdG9yeS1maWx0ZXInO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1oaXN0b3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0SGlzdG9yeUNvbXBvbmVudCB7XG5cbiAgX3BhcmFtczogRG1zUGFyYW1zO1xuICBwcml2YXRlIF9oaXN0b3J5OiBEbXNPYmplY3RIaXN0b3J5RW50cnlbXSA9IFtdO1xuICBjb21wbGV0ZUhpc3Rvcnk6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdID0gW107XG4gIGZpbHRlcnM6IHN0cmluZ1tdID0gW107XG4gIGZpbHRlcnRlcm06IHN0cmluZztcbiAgdmlzaWJsZUZpbHRlcjogSVZpc2libGVGaWx0ZXIgPSB7c2VsZWN0OiB0cnVlLCBpbnB1dDogdHJ1ZX07XG5cbiAgc2V0IGhpc3RvcnkoaGlzdG9yeU9iajogRG1zT2JqZWN0SGlzdG9yeUVudHJ5W10pIHtcbiAgICB0aGlzLl9oaXN0b3J5ID0gaGlzdG9yeU9iajtcbiAgfVxuXG4gIGdldCBoaXN0b3J5KCk6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5faGlzdG9yeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwYXJhbXMocDogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5fcGFyYW1zID0gcDtcbiAgICB0aGlzLmZldGNoSGlzdG9yeShwLmlkLCBwLnR5cGUpO1xuICB9XG5cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKS5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiB0aGlzLnBhcmFtcy5pZCA9PT0gZXZlbnQuZGF0YS5pZCkge1xuICAgICAgICAgIHRoaXMucGFyYW1zID0gdGhpcy5wYXJhbXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlRmlsdGVyKGZpbHRlcikge1xuICAgIGNvbnN0IFt0eXBlLCBoYXNGaWx0ZXJdID0gZmlsdGVyO1xuICAgIGlmIChoYXNGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIocyA9PiBzICE9PSB0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzLnB1c2godHlwZSk7XG4gICAgfVxuICAgIHRoaXMuaGlzdG9yeSA9IHRoaXMuY29tcGxldGVIaXN0b3J5LmZpbHRlcihlbnRyeSA9PiB0aGlzLmZpbHRlcnMuaW5kZXhPZihlbnRyeS5ncm91cCkgPT09IC0xKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRtc1NlcnZpY2VcbiAgICAgIC5nZXRIaXN0b3J5KGlkLCB0eXBlLCB0cnVlKVxuICAgICAgLnBpcGUobWFwKChyZXM6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJldmVyc2VkUmVzID0gcmVzLnJldmVyc2UoKTtcbiAgICAgICAgcmV2ZXJzZWRSZXMuZm9yRWFjaChyZXMgPT4ge1xuICAgICAgICAgIHJlcy50aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuJyArIHJlcy50eXBlICsgJy50aXRsZScpO1xuICAgICAgICAgIHJlcy5kZXNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuJyArIChyZXMuaW50ZW50ID8gcmVzLmludGVudCA6IHJlcy50eXBlKSArICcuZGVzY3JpcHRpb24nLCByZXMucGFyYW1ldGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29tcGxldGVIaXN0b3J5ID0gcmV2ZXJzZWRSZXM7XG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IHJldmVyc2VkUmVzO1xuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJvYmplY3QtaGlzdG9yeVwiPlxuXG4gIDxlby1oaXN0b3J5LWZpbHRlciBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgIFtoaXN0b3J5XT1cImhpc3RvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgWyh0ZXJtKV09XCJmaWx0ZXJ0ZXJtXCJcbiAgICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlRmlsdGVyXT1cInZpc2libGVGaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgKG9uVG9nZ2xlRmlsdGVyKT1cInRvZ2dsZUZpbHRlcigkZXZlbnQpXCI+XG4gIDwvZW8taGlzdG9yeS1maWx0ZXI+XG5cblxuICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgIDxkaXYgY2xhc3M9XCJoaXN0b3J5IGVtcHR5XCIgdHJhbnNsYXRlPmVvLnRpbWVsaW5lLmVtcHR5PC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdiBjbGFzcz1cImhpc3RvcnkgZW8tdGltZWxpbmVcIiBbbmdDbGFzc109XCJ7c2luZ2xlOiBoaXN0b3J5Py5sZW5ndGggPT09IDF9XCIgKm5nSWY9XCJoaXN0b3J5Py5sZW5ndGg7IGVsc2UgZW1wdHlcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1lbnRyeVwiIFtuZ0NsYXNzXT1cInt1c2VyOiAhIWVudHJ5LnVzZXIsIGNvbW1lbnQ6IGVudHJ5LmNvbW1lbnR9XCJcbiAgICAgICAgICpuZ0Zvcj1cImxldCBlbnRyeSBvZiBoaXN0b3J5IHwgaGlzdG9yeUZpbHRlcjogZmlsdGVydGVybTsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3aGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlXCI+e3tlbnRyeS50aW1lIHwgbG9jYWxlRGF0ZTogJ2VvU2hvcnREYXRlJ319PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lXCI+e3tlbnRyeS50aW1lIHwgbG9jYWxlRGF0ZTogJ2VvU2hvcnRUaW1lJ319PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZXJcIiBbbmdDbGFzc109XCJ7YnBtOiBlbnRyeS5ncm91cCA9PT0gJ1BST0NFU1MnLCBtb2Q6IGVudHJ5Lmdyb3VwID09PSAnTU9ESUZJQ0FUSU9OJ31cIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3aGF0XCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+PHNwYW4+e3tlbnRyeS50aXRsZX19PC9zcGFuPlxuICAgICAgICAgIDxhIGNsYXNzPVwidmVyc2lvblwiIFtyb3V0ZXJMaW5rXT1cIicvdmVyc2lvbnMvJyArIHBhcmFtcy5pZFwiIFtxdWVyeVBhcmFtc109XCJ7dHlwZTogcGFyYW1zLnR5cGUsIHZlcnNpb246IGVudHJ5LnZlcnNpb259XCI+XG4gICAgICAgICAgICA8c3Bhbj57eydlby5vYmplY3QuaGlzdG9yeS52ZXJzaW9uJyB8IHRyYW5zbGF0ZX19IHt7ZW50cnkudmVyc2lvbn19PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7ZW50cnkuZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudFwiPiZxdW90O3t7ZW50cnkuY29tbWVudH19JnF1b3Q7PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGFcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LnVzZXI/LnR5cGUgPT09ICdzZXJ2ZXJ1c2VyJzsgZWxzZSB1c2VyXCI+e3tlbnRyeS51c2VyPy50aXRsZX19PC9zcGFuPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlcj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnkudXNlcjsgZWxzZSBkZWxldGVkXCIgW25nQ2xhc3NdPVwie2luYWN0aXZlOiAhZW50cnkudXNlcj8uYWN0aXZlfVwiPnt7ZW50cnkudXNlcj8ubGFzdG5hbWV9fSwge3tlbnRyeS51c2VyPy5maXJzdG5hbWV9fSAoe3tlbnRyeS51c2VyPy5uYW1lfX0pPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlbGV0ZWQ+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+ZW8uZm9ybS5wcm9wZXJ0eS5vcmdhbml6YXRpb24uZXJyb3IudXNlcm5vdGZvdW5kPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJicG0tbWV0YVwiICpuZ0lmPVwiZW50cnkucGFyYW1ldGVyICYmIGVudHJ5LnBhcmFtZXRlci50eXBlID09PSAnYnBtJ1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnkucGFyYW1ldGVyLnByb2Nlc3NOYW1lXCI+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+ZW8ub2JqZWN0Lmhpc3Rvcnkud29ya2Zsb3dwcm9jZXNzPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+J3t7ZW50cnkucGFyYW1ldGVyLnByb2Nlc3NOYW1lfX0nPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LnBhcmFtZXRlci5hY3Rpdml0eU5hbWVcIj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5lby5vYmplY3QuaGlzdG9yeS5hY3Rpdml0eTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPid7e2VudHJ5LnBhcmFtZXRlci5hY3Rpdml0eU5hbWV9fSc8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibW92ZS1tZXRhXCIgKm5nSWY9XCJlbnRyeS5wYXJhbWV0ZXIgJiYgZW50cnkudHlwZSA9PT0gJ09CSkVDVF9NT1ZFRCdcIj5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+ZW8ub2JqZWN0Lmhpc3RvcnkuZW50cnkudHlwZS5PQkpFQ1RfTU9WRUQubWV0YS50aXRsZTwvc3Bhbj5cbiAgICAgICAgICA8YSB0cmFuc2xhdGUgW3JvdXRlckxpbmtdPVwiJy9vYmplY3QvJyArIGVudHJ5LnBhcmFtZXRlci5vbGRwYXJlbnRpZFwiPmVvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuT0JKRUNUX01PVkVELm1ldGEub2xkPC9hPlxuICAgICAgICAgIDxzcGFuPiAtLT4gPC9zcGFuPlxuICAgICAgICAgIDxhIHRyYW5zbGF0ZSBbcm91dGVyTGlua109XCInL29iamVjdC8nICsgZW50cnkucGFyYW1ldGVyLm5ld3BhcmVudGlkXCI+ZW8ub2JqZWN0Lmhpc3RvcnkuZW50cnkudHlwZS5PQkpFQ1RfTU9WRUQubWV0YS5uZXc8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWhpc3Rvcnkvb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWhpc3Rvcnkvb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQStDLFVBQVUsRUFBaUMsTUFBTSxjQUFjLENBQUM7QUFDdEgsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFVNUIsSUFBTSxzQkFBc0IsR0FBNUIsTUFBTSxzQkFBc0I7SUFTakMsSUFBSSxPQUFPLENBQUMsVUFBbUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDSSxNQUFNLENBQUMsQ0FBWTtRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQW9C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S0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO2FBQ0YsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs4R0FsRVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsdUZDYm5DLHFrR0FrRUE7O0FEckRhLHNCQUFzQjtJQVBsQyxZQUFZLEVBQUU7R0FPRixzQkFBc0IsQ0FtRWxDOzsyRkFuRVksc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNO3lLQW9CM0MsTUFBTTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEbXNPYmplY3RIaXN0b3J5RW50cnksIERtc1BhcmFtcywgRG1zU2VydmljZSwgRW5haW9FdmVudCwgRXZlbnRTZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SVZpc2libGVGaWx0ZXJ9IGZyb20gJy4vaGlzdG9yeS1maWx0ZXIvaGlzdG9yeS1maWx0ZXInO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1oaXN0b3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0SGlzdG9yeUNvbXBvbmVudCB7XG5cbiAgX3BhcmFtczogRG1zUGFyYW1zO1xuICBwcml2YXRlIF9oaXN0b3J5OiBEbXNPYmplY3RIaXN0b3J5RW50cnlbXSA9IFtdO1xuICBjb21wbGV0ZUhpc3Rvcnk6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdID0gW107XG4gIGZpbHRlcnM6IHN0cmluZ1tdID0gW107XG4gIGZpbHRlcnRlcm06IHN0cmluZztcbiAgdmlzaWJsZUZpbHRlcjogSVZpc2libGVGaWx0ZXIgPSB7c2VsZWN0OiB0cnVlLCBpbnB1dDogdHJ1ZX07XG5cbiAgc2V0IGhpc3RvcnkoaGlzdG9yeU9iajogRG1zT2JqZWN0SGlzdG9yeUVudHJ5W10pIHtcbiAgICB0aGlzLl9oaXN0b3J5ID0gaGlzdG9yeU9iajtcbiAgfVxuXG4gIGdldCBoaXN0b3J5KCk6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdIHtcbiAgICByZXR1cm4gdGhpcy5faGlzdG9yeTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBwYXJhbXMocDogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5fcGFyYW1zID0gcDtcbiAgICB0aGlzLmZldGNoSGlzdG9yeShwLmlkLCBwLnR5cGUpO1xuICB9XG5cbiAgZ2V0IHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKS5waXBlKFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiB0aGlzLnBhcmFtcy5pZCA9PT0gZXZlbnQuZGF0YS5pZCkge1xuICAgICAgICAgIHRoaXMucGFyYW1zID0gdGhpcy5wYXJhbXM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlRmlsdGVyKGZpbHRlcikge1xuICAgIGNvbnN0IFt0eXBlLCBoYXNGaWx0ZXJdID0gZmlsdGVyO1xuICAgIGlmIChoYXNGaWx0ZXIpIHtcbiAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycy5maWx0ZXIocyA9PiBzICE9PSB0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJzLnB1c2godHlwZSk7XG4gICAgfVxuICAgIHRoaXMuaGlzdG9yeSA9IHRoaXMuY29tcGxldGVIaXN0b3J5LmZpbHRlcihlbnRyeSA9PiB0aGlzLmZpbHRlcnMuaW5kZXhPZihlbnRyeS5ncm91cCkgPT09IC0xKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRtc1NlcnZpY2VcbiAgICAgIC5nZXRIaXN0b3J5KGlkLCB0eXBlLCB0cnVlKVxuICAgICAgLnBpcGUobWFwKChyZXM6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJldmVyc2VkUmVzID0gcmVzLnJldmVyc2UoKTtcbiAgICAgICAgcmV2ZXJzZWRSZXMuZm9yRWFjaChyZXMgPT4ge1xuICAgICAgICAgIHJlcy50aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuJyArIHJlcy50eXBlICsgJy50aXRsZScpO1xuICAgICAgICAgIHJlcy5kZXNjcmlwdGlvbiA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuJyArIChyZXMuaW50ZW50ID8gcmVzLmludGVudCA6IHJlcy50eXBlKSArICcuZGVzY3JpcHRpb24nLCByZXMucGFyYW1ldGVyKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29tcGxldGVIaXN0b3J5ID0gcmV2ZXJzZWRSZXM7XG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IHJldmVyc2VkUmVzLmZpbHRlcihlbnRyeSA9PiB0aGlzLmZpbHRlcnMuaW5kZXhPZihlbnRyeS5ncm91cCkgPT09IC0xKTtcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib2JqZWN0LWhpc3RvcnlcIj5cblxuICA8ZW8taGlzdG9yeS1maWx0ZXIgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICBbaGlzdG9yeV09XCJoaXN0b3J5XCJcbiAgICAgICAgICAgICAgICAgICAgIFsodGVybSldPVwiZmlsdGVydGVybVwiXG4gICAgICAgICAgICAgICAgICAgICBbdmlzaWJsZUZpbHRlcl09XCJ2aXNpYmxlRmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgIChvblRvZ2dsZUZpbHRlcik9XCJ0b2dnbGVGaWx0ZXIoJGV2ZW50KVwiPlxuICA8L2VvLWhpc3RvcnktZmlsdGVyPlxuXG5cbiAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICA8ZGl2IGNsYXNzPVwiaGlzdG9yeSBlbXB0eVwiIHRyYW5zbGF0ZT5lby50aW1lbGluZS5lbXB0eTwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxkaXYgY2xhc3M9XCJoaXN0b3J5IGVvLXRpbWVsaW5lXCIgW25nQ2xhc3NdPVwie3NpbmdsZTogaGlzdG9yeT8ubGVuZ3RoID09PSAxfVwiICpuZ0lmPVwiaGlzdG9yeT8ubGVuZ3RoOyBlbHNlIGVtcHR5XCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtZW50cnlcIiBbbmdDbGFzc109XCJ7dXNlcjogISFlbnRyeS51c2VyLCBjb21tZW50OiBlbnRyeS5jb21tZW50fVwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgZW50cnkgb2YgaGlzdG9yeSB8IGhpc3RvcnlGaWx0ZXI6IGZpbHRlcnRlcm07IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwid2hlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZVwiPnt7ZW50cnkudGltZSB8IGxvY2FsZURhdGU6ICdlb1Nob3J0RGF0ZSd9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZVwiPnt7ZW50cnkudGltZSB8IGxvY2FsZURhdGU6ICdlb1Nob3J0VGltZSd9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFya2VyXCIgW25nQ2xhc3NdPVwie2JwbTogZW50cnkuZ3JvdXAgPT09ICdQUk9DRVNTJywgbW9kOiBlbnRyeS5ncm91cCA9PT0gJ01PRElGSUNBVElPTid9XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwid2hhdFwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPjxzcGFuPnt7ZW50cnkudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICA8YSBjbGFzcz1cInZlcnNpb25cIiBbcm91dGVyTGlua109XCInL3ZlcnNpb25zLycgKyBwYXJhbXMuaWRcIiBbcXVlcnlQYXJhbXNdPVwie3R5cGU6IHBhcmFtcy50eXBlLCB2ZXJzaW9uOiBlbnRyeS52ZXJzaW9ufVwiPlxuICAgICAgICAgICAgPHNwYW4+e3snZW8ub2JqZWN0Lmhpc3RvcnkudmVyc2lvbicgfCB0cmFuc2xhdGV9fSB7e2VudHJ5LnZlcnNpb259fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57e2VudHJ5LmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRcIj4mcXVvdDt7e2VudHJ5LmNvbW1lbnR9fSZxdW90OzwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeS51c2VyPy50eXBlID09PSAnc2VydmVydXNlcic7IGVsc2UgdXNlclwiPnt7ZW50cnkudXNlcj8udGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3VzZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LnVzZXI7IGVsc2UgZGVsZXRlZFwiIFtuZ0NsYXNzXT1cIntpbmFjdGl2ZTogIWVudHJ5LnVzZXI/LmFjdGl2ZX1cIj57e2VudHJ5LnVzZXI/Lmxhc3RuYW1lfX0sIHt7ZW50cnkudXNlcj8uZmlyc3RuYW1lfX0gKHt7ZW50cnkudXNlcj8ubmFtZX19KTwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWxldGVkPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmVvLmZvcm0ucHJvcGVydHkub3JnYW5pemF0aW9uLmVycm9yLnVzZXJub3Rmb3VuZDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnBtLW1ldGFcIiAqbmdJZj1cImVudHJ5LnBhcmFtZXRlciAmJiBlbnRyeS5wYXJhbWV0ZXIudHlwZSA9PT0gJ2JwbSdcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5LnBhcmFtZXRlci5wcm9jZXNzTmFtZVwiPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmVvLm9iamVjdC5oaXN0b3J5LndvcmtmbG93cHJvY2Vzczwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPid7e2VudHJ5LnBhcmFtZXRlci5wcm9jZXNzTmFtZX19Jzwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbnRyeS5wYXJhbWV0ZXIuYWN0aXZpdHlOYW1lXCI+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+ZW8ub2JqZWN0Lmhpc3RvcnkuYWN0aXZpdHk8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj4ne3tlbnRyeS5wYXJhbWV0ZXIuYWN0aXZpdHlOYW1lfX0nPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vdmUtbWV0YVwiICpuZ0lmPVwiZW50cnkucGFyYW1ldGVyICYmIGVudHJ5LnR5cGUgPT09ICdPQkpFQ1RfTU9WRUQnXCI+XG4gICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPmVvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuT0JKRUNUX01PVkVELm1ldGEudGl0bGU8L3NwYW4+XG4gICAgICAgICAgPGEgdHJhbnNsYXRlIFtyb3V0ZXJMaW5rXT1cIicvb2JqZWN0LycgKyBlbnRyeS5wYXJhbWV0ZXIub2xkcGFyZW50aWRcIj5lby5vYmplY3QuaGlzdG9yeS5lbnRyeS50eXBlLk9CSkVDVF9NT1ZFRC5tZXRhLm9sZDwvYT5cbiAgICAgICAgICA8c3Bhbj4gLS0+IDwvc3Bhbj5cbiAgICAgICAgICA8YSB0cmFuc2xhdGUgW3JvdXRlckxpbmtdPVwiJy9vYmplY3QvJyArIGVudHJ5LnBhcmFtZXRlci5uZXdwYXJlbnRpZFwiPmVvLm9iamVjdC5oaXN0b3J5LmVudHJ5LnR5cGUuT0JKRUNUX01PVkVELm1ldGEubmV3PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -544,7 +544,7 @@ let PrepareDetailsComponent = class PrepareDetailsComponent {
|
|
|
544
544
|
}
|
|
545
545
|
}
|
|
546
546
|
// set up location info
|
|
547
|
-
if (this.preparedItem.parent.type === 'sysroot') {
|
|
547
|
+
if (!this.preparedItem.parent || this.preparedItem.parent.type === 'sysroot') {
|
|
548
548
|
header.location = {
|
|
549
549
|
label: t['eo.prepare.location.title.sysroot'],
|
|
550
550
|
link: null
|
|
@@ -553,7 +553,7 @@ let PrepareDetailsComponent = class PrepareDetailsComponent {
|
|
|
553
553
|
else {
|
|
554
554
|
const parentType = this.systemService.getObjectType(this.preparedItem.parent.type);
|
|
555
555
|
header.location = {
|
|
556
|
-
label:
|
|
556
|
+
label: `${parentType ? parentType.label + ': ' : ''}${this.preparedItem.parent.title}`,
|
|
557
557
|
link: `/object/${this.preparedItem.parent.id}`
|
|
558
558
|
};
|
|
559
559
|
}
|
|
@@ -634,4 +634,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
634
634
|
type: HostBinding,
|
|
635
635
|
args: ['attr.data-type']
|
|
636
636
|
}] } });
|
|
637
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcHJlcGFyZS1kZXRhaWxzL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFLTCxZQUFZLEVBS1osS0FBSyxFQUNMLFNBQVMsRUFDVixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBUW5FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQi9CLElBQU0sdUJBQXVCLEdBQTdCLE1BQU0sdUJBQXVCO0lBeUJsQyxJQUNJLFlBQVksQ0FBQyxJQUFrQjtRQUNqQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsTUFBTSxtQkFBbUIsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFD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QUdILFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbERlZiwgR3JpZE9wdGlvbnN9IGZyb20gJ0BhZy1ncmlkLWNvbW11bml0eS9jb3JlJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLCBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgT2JqZWN0VHlwZSxcbiAgUHJlcGFyZVNlcnZpY2UsXG4gIFByZXBhcmVkSXRlbSxcbiAgUHJlcGFyZWRJdGVtVGVtcGxhdGUsXG4gIFByZXBhcmVkSXRlbVR5cGUsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFV0aWxzLFxuICBEbXNPYmplY3Rcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge1ByZXZpZXdGaWxlfSBmcm9tICcuLi9tZWRpYS9tZWRpYS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS9pbmRleCc7XG5pbXBvcnQge09iamVjdEZvcm1Db21wb25lbnR9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTaG9ydGN1dH0gZnJvbSAnLi4vc2hvcnRjdXRzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlUGhhc2Uge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRhdGE6IHtcbiAgICBwcmV2aWV3SW5kZXg/OiBudW1iZXIsXG4gICAgcHJldmlld0ZpbGU/OiBQcmV2aWV3RmlsZSxcbiAgICBmaWxlPzogYm9vbGVhbixcbiAgICB3aXRob3V0RmlsZT86IGJvb2xlYW4sXG4gICAgdGVtcGxhdGVzPzogYW55W11cbiAgfTtcbn1cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tcHJlcGFyZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByZXBhcmVEZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zO1xuXG4gIC8vIElEIHNldCBieSBwZW5kaW5nQ2hhbmdlcyBzZXJ2aWNlIHdoZW4gZWRpdGluZyBpbmRleGRhdGFcbiAgLy8gVXNlZCB0byBmaW5pc2ggdGhlIHBlbmRpbmcgdGFzayB3aGVuIGVkaXRpbmcgaXMgZG9uZVxuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBzZWxlY3RlZFR5cGVPYmplY3Q7XG5cbiAgLy8gaGlkZGVuIGZpbGUgaW5wdXQgdG8gdHJpZ2dlciBmaWxlIHVwbG9hZHNcbiAgQFZpZXdDaGlsZCgnZmlsZScpIGZpbGU6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBvYmplY3RGb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjb25maXJtRGVsZXRlJykgY29uZmlybURlbGV0ZUJ1dHRvbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29uZmlybUNvbnRlbnREZWxldGUnKSBjb25maXJtQ29udGVudERlbGV0ZUJ1dHRvbjogRWxlbWVudFJlZjtcblxuICAvLyBwcmVwYXJhdGlvbiBpcyBkaXZpZGVkIGludG8gc2V2ZXJhbCBwaGFzZXNcbiAgLy8gc2VsZWN0IGFuIG9iamVjdCB0eXBlXG4gIFBIQVNFX1RZUEUgPSAndHlwZSc7XG4gIC8vIGFkZCBjb250ZW50XG4gIFBIQVNFX0NPTlRFTlQgPSAnY29udGVudCc7XG4gIC8vIHNldCBpbmRleGRhdGFcbiAgUEhBU0VfSU5ERVhEQVRBID0gJ2luZGV4ZGF0YSc7XG5cbiAgX3ByZXBhcmVkSXRlbTogUHJlcGFyZWRJdGVtO1xuICBwc2V1ZG9EbXNPYmplY3Q6IERtc09iamVjdDtcblxuICBASW5wdXQoJ3ByZXBhcmVkSXRlbScpXG4gIHNldCBwcmVwYXJlZEl0ZW0oaXRlbTogUHJlcGFyZWRJdGVtKSB7XG4gICAgY29uc3Qgb2JqZWN0VG9TdHJpbmdpZmllZFZhbHVlQXJyYXkgPSAob2JqKSA9PiBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhvYmogfHwge30pLnNvcnQoKS5tYXAoa2V5ID0+IG9ialtrZXldKSk7XG4gICAgY29uc3QgaXNQcm9jZXNzaW5nQWxsb3dlZCA9IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5KHRoaXMuX3ByZXBhcmVkSXRlbSkgIT09IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5KGl0ZW0pO1xuICAgIGlmIChpdGVtICYmIGl0ZW0udHlwZXMpIHtcbiAgICAgIGl0ZW0udHlwZXMgPSBpdGVtLnR5cGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnbGFiZWwnKSk7XG4gICAgfVxuICAgIHRoaXMuX3ByZXBhcmVkSXRlbSA9IGl0ZW07XG5cbiAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0gJiYgdGhpcy5wcmVwYXJlZEl0ZW0uaWQgJiYgaXNQcm9jZXNzaW5nQWxsb3dlZCkge1xuICAgICAgdGhpcy5wcm9jZXNzKCk7XG4gICAgICAvLyB3ZSBuZWVkIHRoaXMgZm9yIHRoZSBPMzY1IGludGVncmF0aW9uIFRVSy0zNTc2XG4gICAgICB0aGlzLnBzZXVkb0Rtc09iamVjdCA9IG5ldyBEbXNPYmplY3Qoe2lkOiB0aGlzLnByZXBhcmVkSXRlbS5pZCwgdmVyc2lvbjogMCwgdHlwZTogdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCkubmFtZX0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBwcmVwYXJlZEl0ZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVkSXRlbTtcbiAgfVxuXG5cbiAgQElucHV0KCkgZW1wdHlTdGF0ZSA9IHtpY29uOiAnYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19lcnJvci5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnZGV0YWlscy1lcnJvcid9O1xuXG4gIHByZXBhcmVQaGFzZTogUHJlcGFyZVBoYXNlO1xuICBzZWxlY3RlZFRlbXBsYXRlOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZTtcbiAgc2VsZWN0ZWRUZW1wbGF0ZUZpbGU6IFByZXZpZXdGaWxlO1xuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XG4gIGZvcm1TdGF0ZTogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcbiAgY2hvb3NlVGVtcGxhdGU6IGJvb2xlYW47XG4gIHVwbG9hZEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIGNvbW1pdHRpbmc6IGJvb2xlYW47XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgdGFnRmlsdGVyT3B0aW9uczogYW55O1xuICBfc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBfc2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgZGVsZXRlZENvbnRlbnRJbmRleDogbnVtYmVyO1xuXG4gIC8vIHRpdGxlIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZGV0YWlscyBoZWFkZXJcbiAgaGVhZGVyID0ge1xuICAgIHRpdGxlOiBudWxsLFxuICAgIGxvY2F0aW9uOiB7XG4gICAgICBsYWJlbDogbnVsbCxcbiAgICAgIGxpbms6IG51bGxcbiAgICB9LFxuICAgIHN1YnRpdGxlOiBudWxsXG4gIH07XG5cbiAgY29sRGVmczogQ29sRGVmW10gPSBbe1xuICAgIGhlYWRlck5hbWU6ICcnLFxuICAgIGZpZWxkOiAndGl0bGUnLFxuICAgIGNlbGxSZW5kZXJlcjogdGhpcy5jZWxsUmVuZGVyZXIsXG4gICAgZmlsdGVyOiBmYWxzZVxuICB9XTtcblxuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnO1xuXG4gIEBPdXRwdXQoKSBvbkl0ZW1DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQcmVwYXJlZEl0ZW0+KCk7XG4gIEBPdXRwdXQoKSBvbkNvbW1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25JdGVtUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxQcmVwYXJlZEl0ZW0+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdHlwZScpXG4gIGdldCBkYXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlZEl0ZW0gJiYgdGhpcy5wcmVwYXJlZEl0ZW0uc2VsZWN0ZWR0eXBlID8gdGhpcy5wcmVwYXJlZEl0ZW0uc2VsZWN0ZWR0eXBlLm5hbWUgOiAnbm9uZSc7XG4gIH1cblxuICBzZXQgc2hvd0RlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gdmFsO1xuXG4gICAgaWYgKHRoaXMuX3Nob3dEZWxldGVEaWFsb2cpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtRGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dEZWxldGVEaWFsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dEZWxldGVEaWFsb2c7XG4gIH1cblxuICBzZXQgc2hvd0NvbnRlbnREZWxldGVEaWFsb2codmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSB2YWw7XG5cbiAgICBpZiAodGhpcy5fc2hvd0NvbnRlbnREZWxldGVEaWFsb2cpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtQ29udGVudERlbGV0ZUJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93Q29udGVudERlbGV0ZURpYWxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0NvbnRlbnREZWxldGVEaWFsb2c7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByZXBhcmVTZXJ2aWNlOiBQcmVwYXJlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0ZXM6IENhcGFiaWxpdGllc1NlcnZpY2UpIHtcbiAgfVxuXG4gIGNlbGxSZW5kZXJlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ0ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj4ke3BhcmFtcy5kYXRhLnRpdGxlIHx8ICcnfSR7cGFyYW1zLmRhdGEuY29udGVudCA/ICc8c3BhbiBjbGFzcz1cInRpdGxlXCI+JyArICcgKCcgKyBwYXJhbXMuZGF0YS5jb250ZW50Lm1pbWVncm91cCArICcpJyArICc8L3NwYW4+JyA6ICcnfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj4ke3BhcmFtcy5kYXRhLmRlc2NyaXB0aW9uIHx8ICcnfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFnc1wiPlxuICAgICAgICAgICAgICAgICR7cGFyYW1zLmRhdGEudGFncy5tYXAodGFnID0+IGA8c3BhbiBjbGFzcz1cImNoaXBcIj4ke3RhZ308L3NwYW4+YCkuam9pbignJyl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQZW5kaW5nKCkge1xuICAgIC8vIGJlY2F1c2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZm9ybSBzdGF0dXMgY2hhbmdlcyxcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2sodGhpcy5wZW5kaW5nVGFza0lkIHx8ICcgJykpIHtcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMuZmluaXNoVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQpO1xuICB9XG5cbiAgcHJlcGFyZUZvcm1Db250ZW50KGZvcm1EYXRhPykge1xuICAgIGNvbnN0IGRhdGEgPSBmb3JtRGF0YSB8fCB0aGlzLnNlbGVjdGVkVHlwZU9iamVjdC5kYXRhO1xuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XG4gICAgICBmb3JtTW9kZWw6IHRoaXMuc2VsZWN0ZWRUeXBlT2JqZWN0LmZvcm0sXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfTtcbiAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50KSB7XG4gICAgICB0aGlzLmZvcm1PcHRpb25zLmNvbnRleHQgPSB7XG4gICAgICAgIGlkOiB0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQuaWQsXG4gICAgICAgIHRpdGxlOiB0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudGl0bGUsXG4gICAgICAgIHR5cGVOYW1lOiB0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudHlwZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXNldE9iamVjdFR5cGUoKSB7XG4gICAgdGhpcy5wcmVwYXJlU2VydmljZS51cGRhdGVDaGlsZFR5cGUoJ2RtczpzeXNvYmplY3QnLCB0aGlzLnByZXBhcmVkSXRlbS5pZCkuc3Vic2NyaWJlKHVwZGF0ZWRQcmVwYXJlSXRlbSA9PiB7XG4gICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlSXRlbTtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5lbWl0KHVwZGF0ZWRQcmVwYXJlSXRlbSk7XG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21taXRzIGEgcHJlcGFyZWQgaXRlbS4gVGhpcyB3aWxsIGNhdXNlIHRoZSB0ZW1wb3JhcnkgcHJlcGFyZWQgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZCB0byBhIHJlYWwgRE1TLU9iamVjdC5cbiAgICogQHBhcmFtIG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0IC0gd2hlbiBzZXQgdG8gdHJ1ZSwgYXBwbGljYXRpb24gd2lsbCBuYXZpZ2F0ZSB0byB0aGUgb2JqZWN0cyBsb2NhdGlvblxuICAgKi9cbiAgY29tbWl0KG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0PzogYm9vbGVhbikge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICYmICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gdGhpcy5vYmplY3RGb3JtLmdldEZvcm1EYXRhKCk7XG4gICAgICAgIHRoaXMuY29tbWl0dGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgICAgICAuY29tbWl0UHJlcGFyZWRJdGVtKHRoaXMucHJlcGFyZWRJdGVtLmlkLCB0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKS5uYW1lLCBmb3JtRGF0YSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Db21taXQuZW1pdChyZXMpO1xuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgICBpZiAob3BlbkxvY2F0aW9uQWZ0ZXJDb21taXQpIHtcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgcmVzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgY29uc3Qge2tleSwgY2F1c2UsIHVuaXF1ZWZpZWxkcywgY3JlYXRlZH0gPSBlcnJvci5lcnJvcjtcbiAgICAgICAgICAgIGlmIChrZXkgJiYga2V5ID09PSAnRE1TX01FVEFEQVRBX1VOSVFVRV9WSU9MQVRJT05fRVJST1InKSB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVuaXF1ZS52YWxpZGF0aW9uLmVycm9yLmhpbnQnLCB7ZmllbGQ6IHVuaXF1ZWZpZWxkcy50b1N0cmluZygpfSkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgJiYga2V5ID09PSAnRE1TX1NZTkNIUk9OT1VTX0lOREVYSU5HX0ZBSUxFRCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24ud2FybmluZyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNvbW1pdC5lcnJvci5pbmRleEZhaWxlZCcpKTtcbiAgICAgICAgICAgICAgdGhpcy5vbkNvbW1pdC5lbWl0KGNyZWF0ZWQuaWQpO1xuICAgICAgICAgICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICAgICAgICAgICAgaWYgKG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgY3JlYXRlZC5pZF0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdXNlKSB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKG51bGwsIGNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuY3JlYXRlZC5lcnJvci50aXRsZScpLFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuY3JlYXRlZC5lcnJvci5tZXNzYWdlJylcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVGb3JtQ29udGVudChmb3JtRGF0YSk7XG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShpdGVtOiBQcmVwYXJlZEl0ZW0pIHtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB0aGlzLm9uSXRlbVJlbW92ZS5lbWl0KGl0ZW0pO1xuICAgIHRoaXMuX3Nob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW1Db250ZW50KGl0ZW06IFByZXBhcmVkSXRlbSwgZGVsZXRlZENvbnRlbnRJbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5wcmVwYXJlU2VydmljZS5kZWxldGVQcmVwYXJlZEl0ZW1Db250ZW50KGl0ZW0uaWQsIGRlbGV0ZWRDb250ZW50SW5kZXgpXG4gICAgICAuc3Vic2NyaWJlKCh1cGRhdGVkSXRlbTogUHJlcGFyZWRJdGVtKSA9PiB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gdXBkYXRlZEl0ZW07XG4gICAgICAgIHRoaXMuc2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0RmlsZU5hbWVzKGl0ZW06IFByZXBhcmVkSXRlbSkge1xuICAgIHJldHVybiAoaXRlbS5jb250ZW50cyB8fCBbXSkubWFwKGMgPT4gYy5wYXRoKS5qb2luKCcsICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHRhcmdldCBvYmplY3QgdHlwZSBmb3IgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbS5cbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgb2JqZWN0IHR5cGVzIG5hbWUgdG8gYmUgc2V0IGFzIHRhcmdldFxuICAgKi9cbiAgc2VsZWN0T2JqZWN0VHlwZSh0eXBlOiBQcmVwYXJlZEl0ZW1UeXBlKSB7XG4gICAgdGhpcy5wcmVwYXJlZEl0ZW0udHlwZXNcbiAgICAgIC5mb3JFYWNoKCh0KSA9PiB0LnNlbGVjdGVkID0gKHQubmFtZSA9PT0gdHlwZS5uYW1lKSk7XG5cbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAudXBkYXRlQ2hpbGRUeXBlKHR5cGUubmFtZSwgdGhpcy5wcmVwYXJlZEl0ZW0uaWQpXG4gICAgICAuc3Vic2NyaWJlKHVwZGF0ZWRQcmVwYXJlZEl0ZW0gPT4ge1xuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5lbWl0KHVwZGF0ZWRQcmVwYXJlZEl0ZW0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGVtcGxhdGUgdG8gdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbS5cbiAgICogQHBhcmFtIHRlbXBsYXRlIC0gdGhlIHRlbXBsYXRlIHRvIGJlIGFkZGVkXG4gICAqL1xuICBhZGRUZW1wbGF0ZSh0ZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGUpIHtcblxuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgIC5hZGRUZW1wbGF0ZSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgdGVtcGxhdGUuaWQpXG4gICAgICAuc3Vic2NyaWJlKCh1cGRhdGVkUHJlcGFyZWRJdGVtKSA9PiB7XG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gdXBkYXRlZFByZXBhcmVkSXRlbTtcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VkLmVtaXQodXBkYXRlZFByZXBhcmVkSXRlbSk7XG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLnRlbXBsYXRlLmVycm9yLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUudGVtcGxhdGUuZXJyb3IubWVzc2FnZScpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IGEgdGVtcGxhdGUuIFdpbGwgc2hvdyBwcmV2aWV3IGZvciB0aGUgc2VsZWN0ZWQgdGVtcGxhdGUuXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRoZSB0ZW1wbGF0ZSB0byBiZSBzZWxlY3RlZFxuICAgKi9cbiAgc2VsZWN0VGVtcGxhdGUodGVtcGxhdGU6IFByZXBhcmVkSXRlbVRlbXBsYXRlKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlRmlsZSA9ICEodGVtcGxhdGUgJiYgdGVtcGxhdGUuY29udGVudCkgPyBudWxsIDoge1xuICAgICAgdXJpOiB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFRlbXBsYXRlUHJldmlld1VyaSh0aGlzLnNlbGVjdGVkVGVtcGxhdGUuaWQpLFxuICAgICAgdXJpUGRmOiB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFRlbXBsYXRlUHJldmlld1VyaSh0aGlzLnNlbGVjdGVkVGVtcGxhdGUuaWQsICdQREYnKSxcbiAgICAgIG1pbWV0eXBlOiB0ZW1wbGF0ZS5jb250ZW50Lm1pbWV0eXBlLFxuICAgICAgbWltZWdyb3VwOiB0ZW1wbGF0ZS5jb250ZW50Lm1pbWVncm91cCxcbiAgICAgIHNpemU6IHRlbXBsYXRlLmNvbnRlbnQuc2l6ZVxuICAgIH07XG4gIH1cblxuICBzZXRQcmV2aWV3VXJpKGluZGV4OiBudW1iZXIpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMucHJlcGFyZVBoYXNlLmRhdGEsIHRoaXMuZ2V0UHJldmlld0RhdGEoaW5kZXgpKTtcbiAgfVxuXG4gIC8vIHNraXAgY29udGVudCBzZWxlY3Rpb24gZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW1cbiAgLy8gYW5kIGNvbnRpbnVlIHNldHRpbmcgaW5kZXhkYXRhXG4gIG5vRmlsZSgpIHtcbiAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xuICB9XG5cbiAgLy8gdHJpZ2dlciBmaWxlIHVwbG9hZFxuICB1cGxvYWQoKSB7XG4gICAgLy8gYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0ZWQgYSBmaWxlIGZpbGVDaGFuZ2VMaXN0ZW5lcigpIHdpbGwgY29udGludWVcbiAgICB0aGlzLmZpbGUubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgLy8gb25DaGFuZ2UgbGlzdGVuZXIgb24gaGlkZGVuIGZpbGUgaW5wdXRcbiAgZmlsZUNoYW5nZUxpc3RlbmVyKGV2ZW50KSB7XG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGV2ZW50WzBdO1xuICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgLnVwbG9hZENvbnRlbnQodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGZpbGUpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIC8vIHVwbG9hZCBzdWNjZWVkZWQgc28gd2UgY2FuIGdvIG9uIHRvIHRoZSBuZXh0IHByZXBhcmUgcGhhc2VcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSBuZXcgUHJlcGFyZWRJdGVtKHJlcyk7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5lbWl0KHRoaXMucHJlcGFyZWRJdGVtKTtcbiAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICB9LCBVdGlscy50aHJvdyhlcnJvciA9PiB7XG4gICAgICAgIGlmIChlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5jYXVzZSkge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKG51bGwsIGVycm9yLmVycm9yLmNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKG51bGwsIGVycm9yLmVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuY3JlYXRlZC5lcnJvci50aXRsZScpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci5kZXNjcmlwdGlvbicpXG4gICAgICApKTtcbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0KSB7XG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XG5cbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcbiAgICAgIHRoaXMuc3RhcnRQZW5kaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2VzcygpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZWxlbVJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignW2VvVHJhcEZvY3VzXScpPy5mb2N1cygpO1xuICAgIH0sIDIwMCk7XG4gICAgLy8gdG9kbzogcmVzZXQgc3R1ZmZcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IG51bGw7XG4gICAgdGhpcy5mb3JtT3B0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5nZXRQcmVwYXJlUGhhc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHByZXBhcmUgcGhhc2UgdG8gYmUgaW5pdGlhbGl6ZWQgYmFzZWQgb24gdGhlIGNvbmRpdGlvbnNcbiAgICogb2YgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbS5cbiAgICovXG4gIHByaXZhdGUgZ2V0UHJlcGFyZVBoYXNlKCkge1xuICAgIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCkgJiYgdGhpcy5wcmVwYXJlZEl0ZW0udHlwZXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICAvLyBTdGVwICMxIHNlbGVjdCBhbiBvYmplY3QgdHlwZSBpZiBub3QgeWV0IHNldFxuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uaGFzQ29udGVudCgpKSB7XG4gICAgICAvLyBTdGVwICMyIGFkZCBjb250ZW50IGlmIG5vdCB5ZXQgY29udGFpbmVkXG4gICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9DT05URU5UKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RlcCAjMyBlZGl0IGluZGV4ZGF0YSBhbmQgc2F2ZVxuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICB9XG4gIH1cblxuICAvLyBzaG9ydGN1dCBhY3Rpb25zXG4gIHNob3J0Y3V0czogR2xvYmFsU2hvcnRjdXRDb21wb25lbnQgPSB7XG4gICAgaWQ6ICdlby5vYmplY3QtZGV0YWlscycsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScpLFxuICAgIGxhYmVsS2V5OiAnZW8uc2hvcnRjdXRzLmVvLW9iamVjdC1kZXRhaWxzLnRpdGxlJyxcbiAgICBhY3Rpb25zOiBbe1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcpLFxuICAgICAgbmFtZUtleTogJ2VvLmFjdGlvbi5kb3dubG9hZC5kbXMub2JqZWN0LmNvbnRlbnQubGFiZWwnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnUycsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5kb3dubG9hZCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucHJlcGFyZVBoYXNlLm5hbWUgPT09ICdjb250ZW50JyA/IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgOiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLnRpdGxlJyksXG4gICAgICBuYW1lS2V5OiAnZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cudGl0bGUnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnUicsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLnJlc2V0T2JqZWN0JyksXG4gICAgICBuYW1lS2V5OiAnZW8ucHJlcGFyZS5yZXNldE9iamVjdCcsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdQJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0T2JqZWN0VHlwZSgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXBhcmVQaGFzZS5uYW1lICE9PSAnaW5kZXhkYXRhJztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuc2F2ZScpLFxuICAgICAgbmFtZUtleTogJ2VvLnByZXBhcmUuc2F2ZScsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdYJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbW1pdCgpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAodGhpcy5wcmVwYXJlUGhhc2UubmFtZSAhPT0gJ2luZGV4ZGF0YScpICYmICEodGhpcy5mb3JtU3RhdGU/LmludmFsaWQgfHwgdGhpcy5jb21taXR0aW5nKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByZXBhcmUuc2F2ZW9wZW4nKSxcbiAgICAgIG5hbWVLZXk6ICdlby5wcmVwYXJlLnNhdmVvcGVuJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ00nLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29tbWl0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIGlzSGlkZGVuOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiAodGhpcy5wcmVwYXJlUGhhc2UubmFtZSAhPT0gJ2luZGV4ZGF0YScpICYmICEodGhpcy5mb3JtU3RhdGU/LmludmFsaWQgfHwgdGhpcy5jb21taXR0aW5nKTtcbiAgICAgIH1cbiAgICB9XVxuICB9O1xuXG5cbiAgcHJpdmF0ZSBjcmVhdGVUZW1wbGF0ZShzZWxlY3RlZFR5cGVPYmplY3QpIHtcbiAgICBjb25zdCB0eXBlOiBPYmplY3RUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoc2VsZWN0ZWRUeXBlT2JqZWN0Lm5hbWUpO1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgLmdldFRlbXBsYXRlcyhzZWxlY3RlZFR5cGVPYmplY3QubmFtZSlcbiAgICAgIC5zdWJzY3JpYmUoKHRlbXBsYXRlczogUHJlcGFyZWRJdGVtVGVtcGxhdGVbXSkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlUmVxdWlyZWQgPSB0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS5jb250ZW50c3RhdGUgPT09ICdSRVFVSVJFRCc7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgZmlsZTogdHlwZS5tYXhGaWxlcyA+IDAsXG4gICAgICAgICAgd2l0aG91dEZpbGU6ICEodHlwZS5taW5GaWxlcyA+IDApICYmICFmaWxlUmVxdWlyZWQsXG4gICAgICAgICAgdGVtcGxhdGVzOiB0ZW1wbGF0ZXMgfHwgW11cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBpZiB0aGUgY3VycmVudCBvYmplY3QgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgdXBsb2FkIG9yIHRlbXBsYXRlIGNvbnRlbnRzXG4gICAgICAgIC8vIHdlIHNraXAgY29udGVudCBwaGFzZSBhbmQgbW92ZSBvbiB0byBpbmRleGRhdGEgcGhhc2VcbiAgICAgICAgaWYgKCFkYXRhLmZpbGUpIHtcbiAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJlcGFyZVBoYXNlID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5QSEFTRV9DT05URU5ULFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5zZXR1cFRpdGxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWdGaWx0ZXJPcHRpb25zID0gdGhpcy5jcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlcyk7XG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMgPSB7XG4gICAgICAgICAgY29udGV4dDoge2NvdW50OiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnRlbXBsYXRlcy5sZW5ndGh9LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMucHJlcGFyZVBoYXNlLmRhdGEudGVtcGxhdGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygndGl0bGUnKSksXG4gICAgICAgICAgY29sdW1uRGVmczogdGhpcy5jb2xEZWZzLFxuICAgICAgICAgIHJvd0hlaWdodDogODBcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZVRhZ0ZpbHRlck9wdGlvbnModGVtcGxhdGVzOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdKSB7XG4gICAgbGV0IHRhZ0ZpbHRlck9wdGlvbnMgPSBbXTtcbiAgICB0ZW1wbGF0ZXMuZm9yRWFjaCh0ZW1wbGF0ZSA9PiB7XG4gICAgICB0ZW1wbGF0ZS50YWdzLmZvckVhY2godGFnID0+IHtcbiAgICAgICAgdGFnRmlsdGVyT3B0aW9ucy5wdXNoKHtsYWJlbDogdGFnLCBmaWx0ZXI6IChub2RlKSA9PiBub2RlLmRhdGEudGFncy5pbmNsdWRlcyh0YWcpLCB2YWx1ZTogdHJ1ZX0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFV0aWxzLnVuaXFCeSh0YWdGaWx0ZXJPcHRpb25zLCAnbGFiZWwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGEgc3BlY2lmaWMgcHJlcGFyZSBwaGFzZS5cbiAgICogQHBhcmFtIHBoYXNlIC0gcGhhc2UgdG8gaW5pdCAoUEhBU0VfVFlQRSwgUEhBU0VfQ09OVEVOVCwgUEhBU0VfSU5ERVhEQVRBKVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0UHJlcGFyZVBoYXNlKHBoYXNlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByZXBhcmVQaGFzZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QgPSB0aGlzLnByZXBhcmVkSXRlbS5nZXRTZWxlY3RlZFR5cGVPYmplY3QoKTtcblxuICAgIHN3aXRjaCAocGhhc2UpIHtcbiAgICAgIC8vIGluaXQgcHJlcGFyZSBwaGFzZSBmb3Igc2VsZWN0aW5nIHRoZSB0YXJnZXQgb2JqZWN0IHR5cGVcbiAgICAgIGNhc2UgdGhpcy5QSEFTRV9UWVBFOiB7XG5cbiAgICAgICAgdGhpcy5wcmVwYXJlUGhhc2UgPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy5QSEFTRV9UWVBFLFxuICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0UHJldmlld0RhdGEoKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldHVwVGl0bGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGluaXQgcHJlcGFyZSBwaGFzZSBmb3Igc2V0dGluZyB1cCBjb250ZW50XG4gICAgICBjYXNlIHRoaXMuUEhBU0VfQ09OVEVOVDoge1xuXG4gICAgICAgIHRoaXMuY2hvb3NlVGVtcGxhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gbnVsbDtcblxuICAgICAgICAvLyBjaGVjayB3aGV0aGVyIG9yIG5vdCB0aGUgcHJlcGFyZWRJdGVtIGFscmVhZHkgY29udGFpbnMgYSBmaWxlIG9yIHRlbXBsYXRlXG4gICAgICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5oYXNDb250ZW50KCkpIHtcbiAgICAgICAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBzZWxlY3RlZCB0eXBlIGlzIG5vdCBhbGxvd2VkLCB3ZSdsbCBnbyBiYWNrIHRvIHRoZSB0eXBlIHNlbGVjdCBzdGF0ZSAuLi5cbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyAuLi4gb3RoZXJ3aXNlIHdlIGdvIG9uIHNldHRpbmcgaW5kZXhkYXRhXG4gICAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9JTkRFWERBVEEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS5jb250ZW50c3RhdGUgPT09ICdOT0NPTlRFTlRBTExPV0VEJykge1xuICAgICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVUZW1wbGF0ZSh0aGlzLnNlbGVjdGVkVHlwZU9iamVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gaW5pdCBwcmVwYXJlIHBoYXNlIGZvciBhZGRpbmcgaW5kZXhkYXRhXG4gICAgICBjYXNlIHRoaXMuUEhBU0VfSU5ERVhEQVRBOiB7XG5cbiAgICAgICAgdGhpcy5jaG9vc2VUZW1wbGF0ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUudHlwZXNlbGVjdGVkYWxsb3dlZCkge1xuICAgICAgICAgIC8vIGlmIHRoZSBzZWxlY3RlZCB0eXBlIGlzIG5vdCBhbGxvd2VkLCB3ZSdsbCBnbyBiYWNrIHRvIHRoZSB0eXBlIHNlbGVjdCBzdGF0ZSAuLi5cbiAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIHRoaXMucHJlcGFyZUZvcm1Db250ZW50KCk7XG5cbiAgICAgICAgICB0aGlzLnByZXBhcmVQaGFzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuUEhBU0VfSU5ERVhEQVRBLFxuICAgICAgICAgICAgZGF0YTogdGhpcy5nZXRQcmV2aWV3RGF0YSgpXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnNldHVwVGl0bGUoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByZXZpZXdEYXRhKGluZGV4PzogbnVtYmVyKTogYW55IHtcbiAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0gJiYgdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHMgJiYgdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IGluZGV4IHx8IDA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmV2aWV3SW5kZXg6IGluZGV4LFxuICAgICAgICBwcmV2aWV3RmlsZToge1xuICAgICAgICAgIHVyaTogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmV2aWV3VXJpKHRoaXMucHJlcGFyZWRJdGVtLmlkLCBpbmRleCksXG4gICAgICAgICAgdXJpUGRmOiB0aGlzLnByZXBhcmVTZXJ2aWNlLmdldFByZXZpZXdVcmkodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIGluZGV4LCAnUERGJyksXG4gICAgICAgICAgbWltZXR5cGU6IHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzW2luZGV4XS5taW1ldHlwZSxcbiAgICAgICAgICBtaW1lZ3JvdXA6IHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzW2luZGV4XS5taW1lZ3JvdXAsXG4gICAgICAgICAgcGF0aDogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLnBhdGgsXG4gICAgICAgICAgc2l6ZTogdGhpcy5wcmVwYXJlZEl0ZW0uY29udGVudHNbaW5kZXhdLnNpemVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge3ByZXZpZXdGaWxlOiBudWxsfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXR1cCB0aXRsZSBmb3IgdGhlIGN1cnJlbnQgcHJlcGFyZWQgaXRlbSBiYXNlZCBvbiB0aGVcbiAgICogY3VycmVudCBwcmVwYXJlIHBoYXNlLiBTaG91bGQgYmUgY2FsbGVkIGFmdGVyIHByZXBhcmUgcGhhc2UgaXMgaWRlbnRpZmllZC5cbiAgICovXG4gIHByaXZhdGUgc2V0dXBUaXRsZSgpIHtcblxuICAgIHRoaXMudHJhbnNsYXRlLmdldChbXG4gICAgICAnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5zeXNyb290JyxcbiAgICAgICdlby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnByZWZpeCcsXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUudGl0bGUnLFxuICAgICAgJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnN1YnRpdGxlJyxcbiAgICAgICdlby5wcmVwYXJlLmRldGFpbHMuY29udGVudC5zdWJ0aXRsZScsXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSdcbiAgICBdKS5zdWJzY3JpYmUodCA9PiB7XG5cbiAgICAgIGxldCBoZWFkZXIgPSB7XG4gICAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIGxhYmVsOiBudWxsLFxuICAgICAgICAgIGxpbms6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgc3VidGl0bGU6IG51bGxcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKHRoaXMucHJlcGFyZVBoYXNlLm5hbWUpIHtcbiAgICAgICAgY2FzZSB0aGlzLlBIQVNFX1RZUEU6IHtcbiAgICAgICAgICBoZWFkZXIudGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMudHlwZS50aXRsZSddO1xuICAgICAgICAgIGhlYWRlci5zdWJ0aXRsZSA9IHRbJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnN1YnRpdGxlJ107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSB0aGlzLlBIQVNFX0NPTlRFTlQ6IHtcbiAgICAgICAgICBjb25zdCB0eXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XG4gICAgICAgICAgaGVhZGVyLnRpdGxlID0gdHlwZU9iamVjdCA/IHR5cGVPYmplY3QubGFiZWwgOiAnJztcbiAgICAgICAgICBoZWFkZXIuc3VidGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMuY29udGVudC5zdWJ0aXRsZSddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9JTkRFWERBVEE6IHtcbiAgICAgICAgICBjb25zdCB0eXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XG4gICAgICAgICAgaGVhZGVyLnRpdGxlID0gdHlwZU9iamVjdCA/IHR5cGVPYmplY3QubGFiZWwgOiAnJztcbiAgICAgICAgICBoZWFkZXIuc3VidGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMuaW5kZXhkYXRhLnN1YnRpdGxlJ107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gc2V0IHVwIGxvY2F0aW9uIGluZm9cbiAgICAgIGlmICh0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudHlwZSA9PT0gJ3N5c3Jvb3QnKSB7XG4gICAgICAgIGhlYWRlci5sb2NhdGlvbiA9IHtcbiAgICAgICAgICBsYWJlbDogdFsnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5zeXNyb290J10sXG4gICAgICAgICAgbGluazogbnVsbFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50eXBlKTtcbiAgICAgICAgaGVhZGVyLmxvY2F0aW9uID0ge1xuICAgICAgICAgIGxhYmVsOiBgICR7cGFyZW50VHlwZS5sYWJlbH06ICR7dGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnRpdGxlfWAsXG4gICAgICAgICAgbGluazogYC9vYmplY3QvJHt0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQuaWR9YFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdGhpcy5oZWFkZXIgPSBoZWFkZXI7XG4gICAgfSk7XG4gIH1cblxuICBzaG93VGVtcGxhdGVTZWxlY3RvcihzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5jaG9vc2VUZW1wbGF0ZSA9IHNob3c7XG4gICAgdGhpcy5zZWxlY3RUZW1wbGF0ZSh0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnRlbXBsYXRlc1swXSk7XG4gIH1cblxuICBkb3dubG9hZCgpIHtcbiAgICBpZiAodGhpcy5wcmVwYXJlUGhhc2UpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLnByZXBhcmVQaGFzZS5uYW1lID09PSAnY29udGVudCcgPyB0aGlzLnNlbGVjdGVkVGVtcGxhdGVGaWxlIDogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZTtcbiAgICAgIGZpbGUudXJpID0gZmlsZS51cmkucmVwbGFjZSh0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSwgJycpO1xuICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgdGhpcy5iYWNrZW5kLmRvd25sb2FkKGZpbGUudXJpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYXNUZW1wbGF0ZUNhcGFiaWxpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FwYWJpbGl0ZXMuaGFzQ2FwYWJpbGl0eSgndGVtcGxhdGUnKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SWRGbihpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJbmRleEZuKGluZGV4LCBpdGVtKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uXG4gICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pLmZvY3VzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlczogUHJlcGFyZWRJdGVtKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jb21taXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSByZXM7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicHJlcGFyZURldGFpbHNfX3dyYXBwZXJcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBtYWluU3Bpbm5lclwiPlxuICA8c2VjdGlvbiBjbGFzcz1cInByZXBhcmVEZXRhaWxzXCIgKm5nSWY9XCJwcmVwYXJlZEl0ZW0gJiYgcHJlcGFyZVBoYXNlOyBlbHNlIG5vSXRlbVwiXG4gICAgW25nQ2xhc3NdPVwie211bHRpZmlsZTogcHJlcGFyZWRJdGVtLmNvbnRlbnRjb3VudCA+IDEsIGNvbW1pdHRpbmc6IGNvbW1pdHRpbmd9XCI+XG4gICAgPGRpdiBjbGFzcz1cImVvLWhlYWRcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj57e2hlYWRlci50aXRsZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc3ViLXRpdGxlIGgtbG9jYXRpb25cIiAqbmdJZj1cIiFoZWFkZXIubG9jYXRpb24ubGluazsgZWxzZSBsaW5rZWRcIj57e2hlYWRlci5sb2NhdGlvbi5sYWJlbH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXN1Yi10aXRsZSBoLXN1YnRpdGxlXCI+e3toZWFkZXIuc3VidGl0bGV9fTwvZGl2PlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlua2VkPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItc3ViLXRpdGxlIGgtc3VidGl0bGUtZGV0YWlsZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmxvY2F0aW9uLnRpdGxlLnByZWZpeDwvc3Bhbj5cbiAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cImhlYWRlci5sb2NhdGlvbi5saW5rXCI+e3toZWFkZXIubG9jYXRpb24ubGFiZWx9fTwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ0biBidG4tZG93bmxvYWRcIlxuICAgICAgICAgICpuZ0lmPVwicHJlcGFyZVBoYXNlLm5hbWUgPT09ICdjb250ZW50JyA/IHNlbGVjdGVkVGVtcGxhdGVGaWxlIDogcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGVcIlxuICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NvbnRlbnQtZG93bmxvYWQuc3ZnJ1wiXG4gICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLmFjdGlvbi5kb3dubG9hZC5kbXMub2JqZWN0LmNvbnRlbnQubGFiZWwnIHwgdHJhbnNsYXRlKVwiIChjbGljayk9XCJkb3dubG9hZCgpXCI+PC9lby1pY29uPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ0biBidG4tZGVsZXRlXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdHJhc2guc3ZnJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1wiPjwvZW8taWNvbj5cbiAgICAgICAgPCEtLSBidXR0b25zIHdoaWxlIGNob29zaW5nIGEgdGVtcGxhdGUgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaG9vc2VUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tdHBsLWFib3J0XCIgKGNsaWNrKT1cInNob3dUZW1wbGF0ZVNlbGVjdG9yKGZhbHNlKVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tdHBsLWFwcGx5XCIgKGNsaWNrKT1cImFkZFRlbXBsYXRlKHNlbGVjdGVkVGVtcGxhdGUpXCIgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZFRlbXBsYXRlXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnRlbXBsYXRlLnNlbGVjdDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJlcGFyZVBoYXNlLm5hbWUgPT09ICdpbmRleGRhdGEnXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVzZXRPYmplY3RUeXBlKClcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5yZXNldE9iamVjdDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNvbW1pdCgpXCIgY2xhc3M9XCJidG4taWR4LXNhdmVcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie3ByaW1hcnk6IHByZXBhcmVkSXRlbS5zdGF0ZS5wYXJlbnRpc3Jvb3QgJiYgcHJlcGFyZWRJdGVtLmNvbnRlbnRjb3VudCA+IDF9XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGU/LmludmFsaWQgfHwgY29tbWl0dGluZ1wiIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnNhdmU8L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNvbW1pdCh0cnVlKVwiIFtkaXNhYmxlZF09XCJmb3JtU3RhdGU/LmludmFsaWQgfHwgY29tbWl0dGluZ1wiIGNsYXNzPVwicHJpbWFyeSBidG4taWR4LXNhdmVvcGVuXCJcbiAgICAgICAgICAgIFtoaWRkZW5dPVwicHJlcGFyZWRJdGVtPy5zdGF0ZS5wYXJlbnRpc3Jvb3QgJiYgcHJlcGFyZWRJdGVtPy5jb250ZW50Y291bnQgPiAxXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnNhdmVvcGVuPC9idXR0b24+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIiBbbmdTd2l0Y2hdPVwicHJlcGFyZVBoYXNlLm5hbWVcIiAqbmdJZj1cIiFjb21taXR0aW5nOyBlbHNlIHNwaW5uZXJcIj5cblxuICAgICAgPCEtLSBQSEFTRSBUWVBFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInBoYXNlIHR5cGVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3R5cGUnXCI+XG5cbiAgICAgICAgPCEtLSB3aXRoIHByZXZpZXcgLS0+XG4gICAgICAgIDx5dmMtc3BsaXQtdmlldyAqbmdJZj1cInByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlOyBlbHNlIG5vcHJldmlld1wiXG4gICAgICAgICAgW2xheW91dFNldHRpbmdzSURdPVwiJ3ByZXBhcmUuZGV0YWlscy5waGFzZS50eXBlJ1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiMzBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpbGVzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZS1zZWxlY3QgZW1wdHlcIiAqbmdJZj1cInByZXBhcmVkSXRlbS50eXBlcy5sZW5ndGggPT0gMFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgICBlby5wcmVwYXJlLmRldGFpbHMudHlwZS5lbXB0eTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0IGVtcHR5XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFwcmVwYXJlZEl0ZW0uc3RhdGUudHlwZXNlbGVjdGVkYWxsb3dlZCAmJiBwcmVwYXJlZEl0ZW0uc3RhdGUudHlwZXNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInt0eXBlOiBwcmVwYXJlZEl0ZW0uc2VsZWN0ZWR0eXBlLmxhYmVsLCBmaWxlbmFtZTogZ2V0RmlsZU5hbWVzKHByZXBhcmVkSXRlbSl9XCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUubm90YWxsb3dlZDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGVcIiB0YWJpbmRleD1cIjBcIiBlb1RyYXBGb2N1cyAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RPYmplY3RUeXBlKHR5cGUpXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcHJlcGFyZWRJdGVtLnR5cGVzOyB0cmFja0J5OiB0cmFja0J5SWRGblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T2JqZWN0VHlwZSh0eXBlKVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvbklkXT1cInR5cGUuaWNvbi5pZFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3t0eXBlLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3t0eXBlLmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxoMiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnRzLnRpdGxlPC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBwcmVwYXJlZEl0ZW0uY29udGVudHM7IHRyYWNrQnk6IHRyYWNrQnlJbmRleEZuOyBpbmRleCBhcyBpZHg7XCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4ID09IGlkeH1cIiAoY2xpY2spPVwic2V0UHJldmlld1VyaShpZHgpXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57e2NvbnRlbnQucGF0aH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidG4gYnRuLWRlbGV0ZS1jb250ZW50XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdHJhc2guc3ZnJ1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93Q29udGVudERlbGV0ZURpYWxvZyA9IHRydWU7IGRlbGV0ZWRDb250ZW50SW5kZXggPSBpZHg7XCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQuZXhpc3RzY291bnQgPiAwXCIgY2xhc3M9XCJhdHRlbnRpb25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7J2VvLnByZXBhcmUuY29udGVudC5leGlzdHNjb3VudC5tZXNzYWdlJ3x0cmFuc2xhdGU6ICh7Y291bnQ6IGNvbnRlbnQuZXhpc3RzY291bnR9KX19XCI+IVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjcwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8tbWVkaWEtd3JhcFwiPlxuICAgICAgICAgICAgICA8ZW8tcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvIFtjb250ZW50XT1cInByZXBhcmVkSXRlbS5jb250ZW50c1twcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3SW5kZXhdXCI+XG4gICAgICAgICAgICAgIDwvZW8tcHJlcGFyZS1jb250ZW50LWV4aXN0cy1pbmZvPlxuICAgICAgICAgICAgICA8ZW8tbWVkaWEgW2Rtc09iamVjdF09XCJwc2V1ZG9EbXNPYmplY3RcIiBbcHJldmlld0ZpbGVdPVwicHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGVcIj48L2VvLW1lZGlhPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC95dmMtc3BsaXQtdmlldz5cblxuICAgICAgICA8IS0tIHdpdGhvdXQgcHJldmlldyAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3ByZXZpZXc+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmlsZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZS1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlXCIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcHJlcGFyZWRJdGVtLnR5cGVzOyB0cmFja0J5OiB0cmFja0J5SWRGblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9iamVjdFR5cGUodHlwZSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pY29uXCI+XG4gICAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvbklkXT1cInR5cGUuaWNvbi5pZFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3t0eXBlLmxhYmVsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7dHlwZS5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBIQVNFIENPTlRFTlQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicGhhc2UgY29udGVudFwiICpuZ1N3aXRjaENhc2U9XCInY29udGVudCdcIj5cblxuICAgICAgICA8IS0tIHBhbmVsIGZvciBzZWxlY3RpbmcgYSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGFzIGl0ZW1zIGNvbnRlbnQgLS0+XG4gICAgICAgIDx5dmMtc3BsaXQtdmlldyAqbmdJZj1cImNob29zZVRlbXBsYXRlOyBlbHNlIGF0dGFjaFwiIFtsYXlvdXRTZXR0aW5nc0lEXT1cIidwcmVwYXJlLmRldGFpbHMucGhhc2UuY29udGVudCdcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjQwXCI+XG4gICAgICAgICAgICA8IS0tIGxpc3Qgb2YgYXZhaWxhYmxlIHRlbXBsYXRlcyAtLT5cbiAgICAgICAgICAgIDxlby1saXN0LWNvbnRhaW5lciAjZW9MaXN0IFtsb2FkaW5nXT1cImZhbHNlXCIgY2xhc3M9XCJ0ZW1wbGF0ZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiZW8taGVhZGVyLWljb25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY190ZW1wbGF0ZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiIHRyYW5zbGF0ZT5lby5wcmVwYXJlLnRlbXBsYXRlLmxpc3QudGl0bGU8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWFjdGlvbnNcIj5cblxuICAgICAgICAgICAgICAgICAgPGVvLW92ZXJsYXkgI29GaWx0ZXIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsdGVyLnN2ZydcIiBbaWNvbkNsYXNzXT1cIidwcmltYXJ5J1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmxheS1maWx0ZXJcIiBbdGl0bGVdPVwiJ2VvLmxpc3QuZmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZW8tY3VzdG9tLWZpbHRlciAjY0ZpbHRlciAoY2hhbmdlKT1cImNGaWx0ZXIudXBkYXRlR3JpZChlb0xpc3QuZW9HcmlkU3ViamVjdCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZSk9XCJvRmlsdGVyLm9uQWN0aXZlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGVvLXRleHQtZmlsdGVyIFt0aXRsZV09XCInZW8ucHJlcGFyZS50ZW1wbGF0ZS5maWx0ZXIudGV4dC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdGNoRmllbGRzXT1cIlsndGl0bGUnLCAnZGVzY3JpcHRpb24nLCAndGFncyddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZW8ucHJlcGFyZS50ZW1wbGF0ZS5maWx0ZXIudGV4dC50aXRsZSdcIj48L2VvLXRleHQtZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby1zZXQtZmlsdGVyIFtvcGVyYXRvcl09XCInT1InXCIgW3RpdGxlXT1cIidlby5wcmVwYXJlLnRlbXBsYXRlLmZpbHRlci5zZXQudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFnRmlsdGVyT3B0aW9ucz8ubGVuZ3RoXCIgW29wdGlvbnNdPVwidGFnRmlsdGVyT3B0aW9uc1wiPjwvZW8tc2V0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9lby1jdXN0b20tZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgPC9lby1vdmVybGF5PlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgICAgICAgICAgIDxlby1ncmlkICNlb0dyaWQgKm5nSWY9XCJncmlkT3B0aW9ucz8ucm93RGF0YVwiIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJ0cnVlXCIgW3Nob3dGb290ZXJdPVwiZmFsc2VcIiBbc2VsZWN0aW9uTGltaXRdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAoZW9HcmlkU2VsZWN0aW9uQ2hhbmdlZCk9XCJzZWxlY3RUZW1wbGF0ZSgkZXZlbnRbMF0pXCI+XG4gICAgICAgICAgICAgICAgPC9lby1ncmlkPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZW8tbGlzdC1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNjBcIj5cbiAgICAgICAgICAgIDwhLS0gcHJldmlldyBvZiBzZWxlY3RlZCB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgICAgIDxlby1tZWRpYSBbcHJldmlld0ZpbGVdPVwic2VsZWN0ZWRUZW1wbGF0ZUZpbGVcIj48L2VvLW1lZGlhPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG5cbiAgICAgICAgPCEtLSBhZGQgY29udGVudCBnZW5lcmFsIG92ZXJ2aWV3ICh1cGxvYWQsIHRlbXBsYXRlLCBub25lKSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNhdHRhY2g+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiICpuZ0lmPVwiIXVwbG9hZEluUHJvZ3Jlc3NcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LmluZm88L2Rpdj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAjZmlsZSAoY2hhbmdlKT1cImZpbGVDaGFuZ2VMaXN0ZW5lcigkZXZlbnQudGFyZ2V0LmZpbGVzKVwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzXCIgKm5nSWY9XCIhdXBsb2FkSW5Qcm9ncmVzczsgZWxzZSB1cGxvYWRzcGlubmVyXCI+XG5cbiAgICAgICAgICAgIDwhLS0gdXBsb2FkIGEgZmlsZSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50IGF0dC1maWxlXCIgKm5nSWY9XCJwcmVwYXJlUGhhc2UuZGF0YS5maWxlXCIgKGNsaWNrKT1cInVwbG9hZCgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maWxlX3VwbG9hZC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQudXBsb2FkLnRpdGxlPC9oMz5cbiAgICAgICAgICAgICAgPHAgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC51cGxvYWQuZGVzYzwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIHNlbGVjdCBhIHRlbXBsYXRlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQgYXR0LXRtcGxcIiAqbmdJZj1cInByZXBhcmVQaGFzZS5kYXRhLnRlbXBsYXRlcy5sZW5ndGggPiAwICYmIGhhc1RlbXBsYXRlQ2FwYWJpbGl0eSgpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUZW1wbGF0ZVNlbGVjdG9yKHRydWUpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19wcmVwYXJlX2FkZC5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQudGVtcGxhdGUudGl0bGU8L2gzPlxuICAgICAgICAgICAgICA8cCB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LnRlbXBsYXRlLmRlc2M8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBubyBmaWxlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQgYXR0LW5vbmVcIiAqbmdJZj1cInByZXBhcmVQaGFzZS5kYXRhLndpdGhvdXRGaWxlXCIgKGNsaWNrKT1cIm5vRmlsZSgpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWdcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19uby1maWxlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8aDMgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC5ub2ZpbGUudGl0bGU8L2gzPlxuICAgICAgICAgICAgICA8cCB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50Lm5vZmlsZS5kZXNjPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDwhLS0gdXBsb2FkIHByb2dyZXNzIGluZGljYXRvciAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN1cGxvYWRzcGlubmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidsYXJnZSdcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFBIQVNFIElOREVYREFUQSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwaGFzZSBpbmRleGRhdGFcIiAqbmdTd2l0Y2hDYXNlPVwiJ2luZGV4ZGF0YSdcIj5cblxuICAgICAgICA8IS0tIGZvcm0gYW5kIHByZXZpZXcgLS0+XG4gICAgICAgIDx5dmMtc3BsaXQtdmlldyAqbmdJZj1cInByZXBhcmVkSXRlbS5jb250ZW50czsgZWxzZSBqdXN0Zm9ybVwiIFtsYXlvdXRTZXR0aW5nc0lEXT1cIidwcmVwYXJlLnN0YXRlLmRldGFpbHMnXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmlsZXNcIj5cblxuICAgICAgICAgICAgICA8IS0tIGluZGV4ZGF0YSBmb3JtIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwianVzdGZvcm1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8IS0tIGxpc3Qgb2YgY29udGVudHMgKGluIGNhc2Ugb2YgYnVsayB1cGxvYWQpIHRoYXQgY2FuIGJlIHByZXZpZXdlZCAtLT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtc2VsZWN0XCI+XG5cbiAgICAgICAgICAgICAgICA8aDIgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5jb250ZW50cy50aXRsZTwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcHJlcGFyZWRJdGVtLmNvbnRlbnRzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhGbjsgaW5kZXggYXMgaWR4XCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4ID09PSBpZHh9XCIgKGNsaWNrKT1cInNldFByZXZpZXdVcmkoaWR4KVwiPlxuICAgICAgICAgICAgICAgICAge3tjb250ZW50LnBhdGh9fSA8c3BhbiAqbmdJZj1cImNvbnRlbnQuZXhpc3RzY291bnQgPiAwXCIgY2xhc3M9XCJhdHRlbnRpb25cIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7J2VvLnByZXBhcmUuY29udGVudC5leGlzdHNjb3VudC5tZXNzYWdlJ3x0cmFuc2xhdGU6ICh7Y291bnQ6IGNvbnRlbnQuZXhpc3RzY291bnR9KX19XCI+ITwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLW1lZGlhLXdyYXBcIj5cbiAgICAgICAgICAgICAgPGVvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbyBbY29udGVudF09XCJwcmVwYXJlZEl0ZW0uY29udGVudHNbcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4XVwiPlxuICAgICAgICAgICAgICA8L2VvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbz5cbiAgICAgICAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwicHNldWRvRG1zT2JqZWN0XCIgW3ByZXZpZXdGaWxlXT1cInByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlXCI+PC9lby1tZWRpYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG5cbiAgICAgICAgPCEtLSBqdXN0IHRoZSBmb3JtIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2p1c3Rmb3JtPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRhaW5lciBzaXR1YXRpb24tY3JlYXRlXCIgKm5nSWY9XCJmb3JtT3B0aW9uc1wiPlxuICAgICAgICAgICAgPGVvLW9iamVjdC1mb3JtICNmb3JtIFtmb3JtT3B0aW9uc109XCJmb3JtT3B0aW9uc1wiIChzdGF0dXNDaGFuZ2VkKT1cIm9uRm9ybVN0YXR1c0NoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9lby1vYmplY3QtZm9ybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPG5nLXRlbXBsYXRlICNzcGlubmVyPlxuICAgIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG4gICAgICA8ZW8tbG9hZGluZy1zcGlubmVyIHNpemU9XCJtZWRpdW1cIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWFpblNwaW5uZXI+XG4gIDxkaXYgY2xhc3M9XCJwcmVwYXJlRGV0YWlsc19fbWFpbi1zcGlubmVyXCI+XG4gICAgPGVvLWxvYWRpbmctc3Bpbm5lciBzaXplPVwibWVkaXVtXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuXG48bmctdGVtcGxhdGUgI25vSXRlbT5cbiAgPGVvLWVycm9yLW1lc3NhZ2UgW2VtcHR5U3RhdGVdPVwie2ljb246IGVtcHR5U3RhdGUuaWNvbiwgdGV4dDogZW1wdHlTdGF0ZS50ZXh0LCBjbGFzc05hbWU6IGVtcHR5U3RhdGUuY2xhc3NOYW1lfVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9lby1lcnJvci1tZXNzYWdlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCIncHJlcGFyZS1kZWxldGVfX2RpYWxvZydcIj5cblxuICA8ZGl2Pnt7J2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX08L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgcHJlcGFyZS1kZWxldGUtLWFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybURlbGV0ZSAoY2xpY2spPVwicmVtb3ZlSXRlbShwcmVwYXJlZEl0ZW0pXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cub2s8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuY29udGVudC5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlXCIgWyh2aXNpYmxlKV09XCJzaG93Q29udGVudERlbGV0ZURpYWxvZ1wiXG4gIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCIncHJlcGFyZS1kZWxldGVfX2RpYWxvZydcIj5cblxuICA8ZGl2Pnt7J2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuY29udGVudC5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGU6ICh7Y29udGVudFBhdGg6IHByZXBhcmVkSXRlbT8uY29udGVudHMgP1xuICAgIHByZXBhcmVkSXRlbT8uY29udGVudHNbZGVsZXRlZENvbnRlbnRJbmRleF0/LnBhdGggOiAnJ30pfX08L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgcHJlcGFyZS1kZWxldGUtLWFjdGlvbi1idXR0b25zIGZsZXgtcm93XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dDb250ZW50RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpcm1Db250ZW50RGVsZXRlIChjbGljayk9XCJyZW1vdmVJdGVtQ29udGVudChwcmVwYXJlZEl0ZW0sIGRlbGV0ZWRDb250ZW50SW5kZXgpXCJcbiAgICAgIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cub2s8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz5cbiJdfQ==
|
|
637
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL3ByZXBhcmUtZGV0YWlscy9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvcHJlcGFyZS1kZXRhaWxzL3ByZXBhcmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpILE9BQU8sRUFLTCxZQUFZLEVBS1osS0FBSyxFQUNMLFNBQVMsRUFDVixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBUW5FLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQi9CLElBQU0sdUJBQXVCLEdBQTdCLE1BQU0sdUJBQXVCO0lBeUJsQyxJQUNJLFlBQVksQ0FBQyxJQUFrQjtRQUNqQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsTUFBTSxtQkFBbUIsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFD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YztzQkFBdEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFHSCxRQUFRO3NCQURYLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2xEZWYsIEdyaWRPcHRpb25zfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBCYWNrZW5kU2VydmljZSwgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gIE9iamVjdFR5cGUsXG4gIFByZXBhcmVTZXJ2aWNlLFxuICBQcmVwYXJlZEl0ZW0sXG4gIFByZXBhcmVkSXRlbVRlbXBsYXRlLFxuICBQcmVwYXJlZEl0ZW1UeXBlLFxuICBTeXN0ZW1TZXJ2aWNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBVdGlscyxcbiAgRG1zT2JqZWN0XG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcbmltcG9ydCB7U2VsZWN0aW9uQ29uZmlnLCBTZWxlY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWxlY3Rpb24vc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtQcmV2aWV3RmlsZX0gZnJvbSAnLi4vbWVkaWEvbWVkaWEuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vb2JqZWN0LWZvcm0vaW5kZXgnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtHbG9iYWxTaG9ydGN1dENvbXBvbmVudH0gZnJvbSAnLi4vc2hvcnRjdXRzL2dsb2JhbC1zaG9ydGN1dC1jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7U2hvcnRjdXR9IGZyb20gJy4uL3Nob3J0Y3V0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcGFyZVBoYXNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkYXRhOiB7XG4gICAgcHJldmlld0luZGV4PzogbnVtYmVyLFxuICAgIHByZXZpZXdGaWxlPzogUHJldmlld0ZpbGUsXG4gICAgZmlsZT86IGJvb2xlYW4sXG4gICAgd2l0aG91dEZpbGU/OiBib29sZWFuLFxuICAgIHRlbXBsYXRlcz86IGFueVtdXG4gIH07XG59XG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXByZXBhcmUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmVwYXJlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmVwYXJlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgaW5kZXhkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgc2VsZWN0ZWRUeXBlT2JqZWN0O1xuXG4gIC8vIGhpZGRlbiBmaWxlIGlucHV0IHRvIHRyaWdnZXIgZmlsZSB1cGxvYWRzXG4gIEBWaWV3Q2hpbGQoJ2ZpbGUnKSBmaWxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmb3JtJykgb2JqZWN0Rm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1Db250ZW50RGVsZXRlJykgY29uZmlybUNvbnRlbnREZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgLy8gcHJlcGFyYXRpb24gaXMgZGl2aWRlZCBpbnRvIHNldmVyYWwgcGhhc2VzXG4gIC8vIHNlbGVjdCBhbiBvYmplY3QgdHlwZVxuICBQSEFTRV9UWVBFID0gJ3R5cGUnO1xuICAvLyBhZGQgY29udGVudFxuICBQSEFTRV9DT05URU5UID0gJ2NvbnRlbnQnO1xuICAvLyBzZXQgaW5kZXhkYXRhXG4gIFBIQVNFX0lOREVYREFUQSA9ICdpbmRleGRhdGEnO1xuXG4gIF9wcmVwYXJlZEl0ZW06IFByZXBhcmVkSXRlbTtcbiAgcHNldWRvRG1zT2JqZWN0OiBEbXNPYmplY3Q7XG5cbiAgQElucHV0KCdwcmVwYXJlZEl0ZW0nKVxuICBzZXQgcHJlcGFyZWRJdGVtKGl0ZW06IFByZXBhcmVkSXRlbSkge1xuICAgIGNvbnN0IG9iamVjdFRvU3RyaW5naWZpZWRWYWx1ZUFycmF5ID0gKG9iaikgPT4gSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMob2JqIHx8IHt9KS5zb3J0KCkubWFwKGtleSA9PiBvYmpba2V5XSkpO1xuICAgIGNvbnN0IGlzUHJvY2Vzc2luZ0FsbG93ZWQgPSBvYmplY3RUb1N0cmluZ2lmaWVkVmFsdWVBcnJheSh0aGlzLl9wcmVwYXJlZEl0ZW0pICE9PSBvYmplY3RUb1N0cmluZ2lmaWVkVmFsdWVBcnJheShpdGVtKTtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLnR5cGVzKSB7XG4gICAgICBpdGVtLnR5cGVzID0gaXRlbS50eXBlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuICAgIH1cbiAgICB0aGlzLl9wcmVwYXJlZEl0ZW0gPSBpdGVtO1xuXG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtICYmIHRoaXMucHJlcGFyZWRJdGVtLmlkICYmIGlzUHJvY2Vzc2luZ0FsbG93ZWQpIHtcbiAgICAgIHRoaXMucHJvY2VzcygpO1xuICAgICAgLy8gd2UgbmVlZCB0aGlzIGZvciB0aGUgTzM2NSBpbnRlZ3JhdGlvbiBUVUstMzU3NlxuICAgICAgdGhpcy5wc2V1ZG9EbXNPYmplY3QgPSBuZXcgRG1zT2JqZWN0KHtpZDogdGhpcy5wcmVwYXJlZEl0ZW0uaWQsIHZlcnNpb246IDAsIHR5cGU6IHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpLm5hbWV9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgcHJlcGFyZWRJdGVtKCkge1xuICAgIHJldHVybiB0aGlzLl9wcmVwYXJlZEl0ZW07XG4gIH1cblxuXG4gIEBJbnB1dCgpIGVtcHR5U3RhdGUgPSB7aWNvbjogJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZXJyb3Iuc3ZnJywgdGV4dDogJycsIGNsYXNzTmFtZTogJ2RldGFpbHMtZXJyb3InfTtcblxuICBwcmVwYXJlUGhhc2U6IFByZXBhcmVQaGFzZTtcbiAgc2VsZWN0ZWRUZW1wbGF0ZTogUHJlcGFyZWRJdGVtVGVtcGxhdGU7XG4gIHNlbGVjdGVkVGVtcGxhdGVGaWxlOiBQcmV2aWV3RmlsZTtcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICBmb3JtU3RhdGU6IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQ7XG4gIGNob29zZVRlbXBsYXRlOiBib29sZWFuO1xuICB1cGxvYWRJblByb2dyZXNzOiBib29sZWFuO1xuICBjb21taXR0aW5nOiBib29sZWFuO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIHRhZ0ZpbHRlck9wdGlvbnM6IGFueTtcbiAgX3Nob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIGRlbGV0ZWRDb250ZW50SW5kZXg6IG51bWJlcjtcblxuICAvLyB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGRldGFpbHMgaGVhZGVyXG4gIGhlYWRlciA9IHtcbiAgICB0aXRsZTogbnVsbCxcbiAgICBsb2NhdGlvbjoge1xuICAgICAgbGFiZWw6IG51bGwsXG4gICAgICBsaW5rOiBudWxsXG4gICAgfSxcbiAgICBzdWJ0aXRsZTogbnVsbFxuICB9O1xuXG4gIGNvbERlZnM6IENvbERlZltdID0gW3tcbiAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICBmaWVsZDogJ3RpdGxlJyxcbiAgICBjZWxsUmVuZGVyZXI6IHRoaXMuY2VsbFJlbmRlcmVyLFxuICAgIGZpbHRlcjogZmFsc2VcbiAgfV07XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcblxuICBAT3V0cHV0KCkgb25JdGVtQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJlcGFyZWRJdGVtPigpO1xuICBAT3V0cHV0KCkgb25Db21taXQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIG9uSXRlbVJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8UHJlcGFyZWRJdGVtPigpO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKVxuICBnZXQgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlcGFyZWRJdGVtICYmIHRoaXMucHJlcGFyZWRJdGVtLnNlbGVjdGVkdHlwZSA/IHRoaXMucHJlcGFyZWRJdGVtLnNlbGVjdGVkdHlwZS5uYW1lIDogJ25vbmUnO1xuICB9XG5cbiAgc2V0IHNob3dEZWxldGVEaWFsb2codmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0RlbGV0ZURpYWxvZyA9IHZhbDtcblxuICAgIGlmICh0aGlzLl9zaG93RGVsZXRlRGlhbG9nKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29uZmlybURlbGV0ZUJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlRGlhbG9nKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93RGVsZXRlRGlhbG9nO1xuICB9XG5cbiAgc2V0IHNob3dDb250ZW50RGVsZXRlRGlhbG9nKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nID0gdmFsO1xuXG4gICAgaWYgKHRoaXMuX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29uZmlybUNvbnRlbnREZWxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0NvbnRlbnREZWxldGVEaWFsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dDb250ZW50RGVsZXRlRGlhbG9nO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbVJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNhcGFiaWxpdGVzOiBDYXBhYmlsaXRpZXNTZXJ2aWNlKSB7XG4gIH1cblxuICBjZWxsUmVuZGVyZXIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHtwYXJhbXMuZGF0YS50aXRsZSB8fCAnJ30ke3BhcmFtcy5kYXRhLmNvbnRlbnQgPyAnPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPicgKyAnICgnICsgcGFyYW1zLmRhdGEuY29udGVudC5taW1lZ3JvdXAgKyAnKScgKyAnPC9zcGFuPicgOiAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+JHtwYXJhbXMuZGF0YS5kZXNjcmlwdGlvbiB8fCAnJ308L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3NcIj5cbiAgICAgICAgICAgICAgICAke3BhcmFtcy5kYXRhLnRhZ3MubWFwKHRhZyA9PiBgPHNwYW4gY2xhc3M9XCJjaGlwXCI+JHt0YWd9PC9zcGFuPmApLmpvaW4oJycpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIGA7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIHByZXBhcmVGb3JtQ29udGVudChmb3JtRGF0YT8pIHtcbiAgICBjb25zdCBkYXRhID0gZm9ybURhdGEgfHwgdGhpcy5zZWxlY3RlZFR5cGVPYmplY3QuZGF0YTtcbiAgICB0aGlzLmZvcm1PcHRpb25zID0ge1xuICAgICAgZm9ybU1vZGVsOiB0aGlzLnNlbGVjdGVkVHlwZU9iamVjdC5mb3JtLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudCkge1xuICAgICAgdGhpcy5mb3JtT3B0aW9ucy5jb250ZXh0ID0ge1xuICAgICAgICBpZDogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkLFxuICAgICAgICB0aXRsZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnRpdGxlLFxuICAgICAgICB0eXBlTmFtZTogdGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LnR5cGVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmVzZXRPYmplY3RUeXBlKCkge1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2UudXBkYXRlQ2hpbGRUeXBlKCdkbXM6c3lzb2JqZWN0JywgdGhpcy5wcmVwYXJlZEl0ZW0uaWQpLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZUl0ZW0gPT4ge1xuICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkUHJlcGFyZUl0ZW07XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh1cGRhdGVkUHJlcGFyZUl0ZW0pO1xuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0cyBhIHByZXBhcmVkIGl0ZW0uIFRoaXMgd2lsbCBjYXVzZSB0aGUgdGVtcG9yYXJ5IHByZXBhcmVkIG9iamVjdCB0byBiZSBjb252ZXJ0ZWQgdG8gYSByZWFsIERNUy1PYmplY3QuXG4gICAqIEBwYXJhbSBvcGVuTG9jYXRpb25BZnRlckNvbW1pdCAtIHdoZW4gc2V0IHRvIHRydWUsIGFwcGxpY2F0aW9uIHdpbGwgbmF2aWdhdGUgdG8gdGhlIG9iamVjdHMgbG9jYXRpb25cbiAgICovXG4gIGNvbW1pdChvcGVuTG9jYXRpb25BZnRlckNvbW1pdD86IGJvb2xlYW4pIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IHRoaXMub2JqZWN0Rm9ybS5nZXRGb3JtRGF0YSgpO1xuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAgICAgLmNvbW1pdFByZXBhcmVkSXRlbSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCkubmFtZSwgZm9ybURhdGEpXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ29tbWl0LmVtaXQocmVzKTtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgICAgICAgICAgaWYgKG9wZW5Mb2NhdGlvbkFmdGVyQ29tbWl0KSB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIHJlc10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtrZXksIGNhdXNlLCB1bmlxdWVmaWVsZHMsIGNyZWF0ZWR9ID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICBpZiAoa2V5ICYmIGtleSA9PT0gJ0RNU19NRVRBREFUQV9VTklRVUVfVklPTEFUSU9OX0VSUk9SJykge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51bmlxdWUudmFsaWRhdGlvbi5lcnJvci5oaW50Jywge2ZpZWxkOiB1bmlxdWVmaWVsZHMudG9TdHJpbmcoKX0pKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5ICYmIGtleSA9PT0gJ0RNU19TWU5DSFJPTk9VU19JTkRFWElOR19GQUlMRUQnKSB7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLndhcm5pbmcobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS5jb21taXQuZXJyb3IuaW5kZXhGYWlsZWQnKSk7XG4gICAgICAgICAgICAgIHRoaXMub25Db21taXQuZW1pdChjcmVhdGVkLmlkKTtcbiAgICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgICAgICAgICAgIGlmIChvcGVuTG9jYXRpb25BZnRlckNvbW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL29iamVjdCcsIGNyZWF0ZWQuaWRdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXVzZSkge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBjYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IubWVzc2FnZScpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgICAgICAgICAgdGhpcy5wcmVwYXJlRm9ybUNvbnRlbnQoZm9ybURhdGEpO1xuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogUHJlcGFyZWRJdGVtKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkl0ZW1SZW1vdmUuZW1pdChpdGVtKTtcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICByZW1vdmVJdGVtQ29udGVudChpdGVtOiBQcmVwYXJlZEl0ZW0sIGRlbGV0ZWRDb250ZW50SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2UuZGVsZXRlUHJlcGFyZWRJdGVtQ29udGVudChpdGVtLmlkLCBkZWxldGVkQ29udGVudEluZGV4KVxuICAgICAgLnN1YnNjcmliZSgodXBkYXRlZEl0ZW06IFByZXBhcmVkSXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRJdGVtO1xuICAgICAgICB0aGlzLnNob3dDb250ZW50RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldEZpbGVOYW1lcyhpdGVtOiBQcmVwYXJlZEl0ZW0pIHtcbiAgICByZXR1cm4gKGl0ZW0uY29udGVudHMgfHwgW10pLm1hcChjID0+IGMucGF0aCkuam9pbignLCAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSB0YXJnZXQgb2JqZWN0IHR5cGUgZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXG4gICAqIEBwYXJhbSB0eXBlIC0gdGhlIG9iamVjdCB0eXBlcyBuYW1lIHRvIGJlIHNldCBhcyB0YXJnZXRcbiAgICovXG4gIHNlbGVjdE9iamVjdFR5cGUodHlwZTogUHJlcGFyZWRJdGVtVHlwZSkge1xuICAgIHRoaXMucHJlcGFyZWRJdGVtLnR5cGVzXG4gICAgICAuZm9yRWFjaCgodCkgPT4gdC5zZWxlY3RlZCA9ICh0Lm5hbWUgPT09IHR5cGUubmFtZSkpO1xuXG4gICAgdGhpcy5wcmVwYXJlU2VydmljZVxuICAgICAgLnVwZGF0ZUNoaWxkVHlwZSh0eXBlLm5hbWUsIHRoaXMucHJlcGFyZWRJdGVtLmlkKVxuICAgICAgLnN1YnNjcmliZSh1cGRhdGVkUHJlcGFyZWRJdGVtID0+IHtcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW0gPSB1cGRhdGVkUHJlcGFyZWRJdGVtO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh1cGRhdGVkUHJlcGFyZWRJdGVtKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRlbXBsYXRlIHRvIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSAtIHRoZSB0ZW1wbGF0ZSB0byBiZSBhZGRlZFxuICAgKi9cbiAgYWRkVGVtcGxhdGUodGVtcGxhdGU6IFByZXBhcmVkSXRlbVRlbXBsYXRlKSB7XG5cbiAgICB0aGlzLnByZXBhcmVTZXJ2aWNlXG4gICAgICAuYWRkVGVtcGxhdGUodGhpcy5wcmVwYXJlZEl0ZW0uaWQsIHRlbXBsYXRlLmlkKVxuICAgICAgLnN1YnNjcmliZSgodXBkYXRlZFByZXBhcmVkSXRlbSkgPT4ge1xuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbSA9IHVwZGF0ZWRQcmVwYXJlZEl0ZW07XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlZC5lbWl0KHVwZGF0ZWRQcmVwYXJlZEl0ZW0pO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCxcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS50ZW1wbGF0ZS5lcnJvci50aXRsZScpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLnRlbXBsYXRlLmVycm9yLm1lc3NhZ2UnKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBhIHRlbXBsYXRlLiBXaWxsIHNob3cgcHJldmlldyBmb3IgdGhlIHNlbGVjdGVkIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0gdGVtcGxhdGUgLSB0aGUgdGVtcGxhdGUgdG8gYmUgc2VsZWN0ZWRcbiAgICovXG4gIHNlbGVjdFRlbXBsYXRlKHRlbXBsYXRlOiBQcmVwYXJlZEl0ZW1UZW1wbGF0ZSkge1xuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZUZpbGUgPSAhKHRlbXBsYXRlICYmIHRlbXBsYXRlLmNvbnRlbnQpID8gbnVsbCA6IHtcbiAgICAgIHVyaTogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRUZW1wbGF0ZVByZXZpZXdVcmkodGhpcy5zZWxlY3RlZFRlbXBsYXRlLmlkKSxcbiAgICAgIHVyaVBkZjogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRUZW1wbGF0ZVByZXZpZXdVcmkodGhpcy5zZWxlY3RlZFRlbXBsYXRlLmlkLCAnUERGJyksXG4gICAgICBtaW1ldHlwZTogdGVtcGxhdGUuY29udGVudC5taW1ldHlwZSxcbiAgICAgIG1pbWVncm91cDogdGVtcGxhdGUuY29udGVudC5taW1lZ3JvdXAsXG4gICAgICBzaXplOiB0ZW1wbGF0ZS5jb250ZW50LnNpemVcbiAgICB9O1xuICB9XG5cbiAgc2V0UHJldmlld1VyaShpbmRleDogbnVtYmVyKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnByZXBhcmVQaGFzZS5kYXRhLCB0aGlzLmdldFByZXZpZXdEYXRhKGluZGV4KSk7XG4gIH1cblxuICAvLyBza2lwIGNvbnRlbnQgc2VsZWN0aW9uIGZvciB0aGUgY3VycmVudCBwcmVwYXJlZCBpdGVtXG4gIC8vIGFuZCBjb250aW51ZSBzZXR0aW5nIGluZGV4ZGF0YVxuICBub0ZpbGUoKSB7XG4gICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgfVxuXG4gIC8vIHRyaWdnZXIgZmlsZSB1cGxvYWRcbiAgdXBsb2FkKCkge1xuICAgIC8vIGFmdGVyIHRoZSB1c2VyIHNlbGVjdGVkIGEgZmlsZSBmaWxlQ2hhbmdlTGlzdGVuZXIoKSB3aWxsIGNvbnRpbnVlXG4gICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIC8vIG9uQ2hhbmdlIGxpc3RlbmVyIG9uIGhpZGRlbiBmaWxlIGlucHV0XG4gIGZpbGVDaGFuZ2VMaXN0ZW5lcihldmVudCkge1xuICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBldmVudFswXTtcbiAgICB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgIC51cGxvYWRDb250ZW50KHRoaXMucHJlcGFyZWRJdGVtLmlkLCBmaWxlKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAvLyB1cGxvYWQgc3VjY2VlZGVkIHNvIHdlIGNhbiBnbyBvbiB0byB0aGUgbmV4dCBwcmVwYXJlIHBoYXNlXG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gbmV3IFByZXBhcmVkSXRlbShyZXMpO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZWQuZW1pdCh0aGlzLnByZXBhcmVkSXRlbSk7XG4gICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgICAgIHRoaXMudXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgfSwgVXRpbHMudGhyb3coZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuY2F1c2UpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBlcnJvci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihudWxsLCBlcnJvci5lcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmNyZWF0ZWQuZXJyb3IudGl0bGUnKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbW1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGxvYWRJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKVxuICAgICAgKSk7XG4gIH1cblxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dCkge1xuICAgIHRoaXMuZm9ybVN0YXRlID0gZXZ0O1xuXG4gICAgaWYgKHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3MoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1SZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoJ1tlb1RyYXBGb2N1c10nKT8uZm9jdXMoKTtcbiAgICB9LCAyMDApO1xuICAgIC8vIHRvZG86IHJlc2V0IHN0dWZmXG4gICAgdGhpcy5mb3JtU3RhdGUgPSBudWxsO1xuICAgIHRoaXMuZm9ybU9wdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuZ2V0UHJlcGFyZVBoYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBwcmVwYXJlIHBoYXNlIHRvIGJlIGluaXRpYWxpemVkIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zXG4gICAqIG9mIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0uXG4gICAqL1xuICBwcml2YXRlIGdldFByZXBhcmVQaGFzZSgpIHtcbiAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpICYmIHRoaXMucHJlcGFyZWRJdGVtLnR5cGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgLy8gU3RlcCAjMSBzZWxlY3QgYW4gb2JqZWN0IHR5cGUgaWYgbm90IHlldCBzZXRcbiAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX1RZUEUpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLmhhc0NvbnRlbnQoKSkge1xuICAgICAgLy8gU3RlcCAjMiBhZGQgY29udGVudCBpZiBub3QgeWV0IGNvbnRhaW5lZFxuICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfQ09OVEVOVCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0ZXAgIzMgZWRpdCBpbmRleGRhdGEgYW5kIHNhdmVcbiAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgfVxuICB9XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8ub2JqZWN0LWRldGFpbHMnLFxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuZW8tb2JqZWN0LWRldGFpbHMudGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScsXG4gICAgYWN0aW9uczogW3tcbiAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmFjdGlvbi5kb3dubG9hZC5kbXMub2JqZWN0LmNvbnRlbnQubGFiZWwnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1MnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZG93bmxvYWQoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gISh0aGlzLnByZXBhcmVQaGFzZS5uYW1lID09PSAnY29udGVudCcgPyB0aGlzLnNlbGVjdGVkVGVtcGxhdGVGaWxlIDogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy50aXRsZScpLFxuICAgICAgbmFtZUtleTogJ2VvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLnRpdGxlJyxcbiAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ1InLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XG4gICAgICB9LFxuICAgICAgaXNIaWRkZW46ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJlcGFyZS5yZXNldE9iamVjdCcpLFxuICAgICAgbmFtZUtleTogJ2VvLnByZXBhcmUucmVzZXRPYmplY3QnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnUCcsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldE9iamVjdFR5cGUoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVwYXJlUGhhc2UubmFtZSAhPT0gJ2luZGV4ZGF0YSc7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLnNhdmUnKSxcbiAgICAgIG5hbWVLZXk6ICdlby5wcmVwYXJlLnNhdmUnLFxuICAgICAgc2hvcnRjdXQ6IG5ldyBTaG9ydGN1dCgnWCcsIGZhbHNlLCBmYWxzZSksXG4gICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb21taXQoKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gKHRoaXMucHJlcGFyZVBoYXNlLm5hbWUgIT09ICdpbmRleGRhdGEnKSAmJiAhKHRoaXMuZm9ybVN0YXRlPy5pbnZhbGlkIHx8IHRoaXMuY29tbWl0dGluZyk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcmVwYXJlLnNhdmVvcGVuJyksXG4gICAgICBuYW1lS2V5OiAnZW8ucHJlcGFyZS5zYXZlb3BlbicsXG4gICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdNJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgIG9uRXhlY3V0ZUFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbW1pdCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBpc0hpZGRlbjogKCkgPT4ge1xuICAgICAgICByZXR1cm4gKHRoaXMucHJlcGFyZVBoYXNlLm5hbWUgIT09ICdpbmRleGRhdGEnKSAmJiAhKHRoaXMuZm9ybVN0YXRlPy5pbnZhbGlkIHx8IHRoaXMuY29tbWl0dGluZyk7XG4gICAgICB9XG4gICAgfV1cbiAgfTtcblxuXG4gIHByaXZhdGUgY3JlYXRlVGVtcGxhdGUoc2VsZWN0ZWRUeXBlT2JqZWN0KSB7XG4gICAgY29uc3QgdHlwZTogT2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKHNlbGVjdGVkVHlwZU9iamVjdC5uYW1lKTtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcbiAgICAgIC5nZXRUZW1wbGF0ZXMoc2VsZWN0ZWRUeXBlT2JqZWN0Lm5hbWUpXG4gICAgICAuc3Vic2NyaWJlKCh0ZW1wbGF0ZXM6IFByZXBhcmVkSXRlbVRlbXBsYXRlW10pID0+IHtcbiAgICAgICAgY29uc3QgZmlsZVJlcXVpcmVkID0gdGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUuY29udGVudHN0YXRlID09PSAnUkVRVUlSRUQnO1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgIGZpbGU6IHR5cGUubWF4RmlsZXMgPiAwLFxuICAgICAgICAgIHdpdGhvdXRGaWxlOiAhKHR5cGUubWluRmlsZXMgPiAwKSAmJiAhZmlsZVJlcXVpcmVkLFxuICAgICAgICAgIHRlbXBsYXRlczogdGVtcGxhdGVzIHx8IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgb2JqZWN0IHR5cGUgZG9lcyBub3Qgc3VwcG9ydCBmaWxlIHVwbG9hZCBvciB0ZW1wbGF0ZSBjb250ZW50c1xuICAgICAgICAvLyB3ZSBza2lwIGNvbnRlbnQgcGhhc2UgYW5kIG1vdmUgb24gdG8gaW5kZXhkYXRhIHBoYXNlXG4gICAgICAgIGlmICghZGF0YS5maWxlKSB7XG4gICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnByZXBhcmVQaGFzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuUEhBU0VfQ09OVEVOVCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuc2V0dXBUaXRsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFnRmlsdGVyT3B0aW9ucyA9IHRoaXMuY3JlYXRlVGFnRmlsdGVyT3B0aW9ucyh0ZW1wbGF0ZXMpO1xuICAgICAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgICAgIGNvbnRleHQ6IHtjb3VudDogdGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXMubGVuZ3RofSxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLnByZXBhcmVQaGFzZS5kYXRhLnRlbXBsYXRlcy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ3RpdGxlJykpLFxuICAgICAgICAgIGNvbHVtbkRlZnM6IHRoaXMuY29sRGVmcyxcbiAgICAgICAgICByb3dIZWlnaHQ6IDgwXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGVUYWdGaWx0ZXJPcHRpb25zKHRlbXBsYXRlczogUHJlcGFyZWRJdGVtVGVtcGxhdGVbXSkge1xuICAgIGxldCB0YWdGaWx0ZXJPcHRpb25zID0gW107XG4gICAgdGVtcGxhdGVzLmZvckVhY2godGVtcGxhdGUgPT4ge1xuICAgICAgdGVtcGxhdGUudGFncy5mb3JFYWNoKHRhZyA9PiB7XG4gICAgICAgIHRhZ0ZpbHRlck9wdGlvbnMucHVzaCh7bGFiZWw6IHRhZywgZmlsdGVyOiAobm9kZSkgPT4gbm9kZS5kYXRhLnRhZ3MuaW5jbHVkZXModGFnKSwgdmFsdWU6IHRydWV9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBVdGlscy51bmlxQnkodGFnRmlsdGVyT3B0aW9ucywgJ2xhYmVsJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhIHNwZWNpZmljIHByZXBhcmUgcGhhc2UuXG4gICAqIEBwYXJhbSBwaGFzZSAtIHBoYXNlIHRvIGluaXQgKFBIQVNFX1RZUEUsIFBIQVNFX0NPTlRFTlQsIFBIQVNFX0lOREVYREFUQSlcbiAgICovXG4gIHByaXZhdGUgaW5pdFByZXBhcmVQaGFzZShwaGFzZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmVwYXJlUGhhc2UgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRUeXBlT2JqZWN0ID0gdGhpcy5wcmVwYXJlZEl0ZW0uZ2V0U2VsZWN0ZWRUeXBlT2JqZWN0KCk7XG5cbiAgICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIHNlbGVjdGluZyB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAgICBjYXNlIHRoaXMuUEhBU0VfVFlQRToge1xuXG4gICAgICAgIHRoaXMucHJlcGFyZVBoYXNlID0ge1xuICAgICAgICAgIG5hbWU6IHRoaXMuUEhBU0VfVFlQRSxcbiAgICAgICAgICBkYXRhOiB0aGlzLmdldFByZXZpZXdEYXRhKClcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZXR1cFRpdGxlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBpbml0IHByZXBhcmUgcGhhc2UgZm9yIHNldHRpbmcgdXAgY29udGVudFxuICAgICAgY2FzZSB0aGlzLlBIQVNFX0NPTlRFTlQ6IHtcblxuICAgICAgICB0aGlzLmNob29zZVRlbXBsYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciBvciBub3QgdGhlIHByZXBhcmVkSXRlbSBhbHJlYWR5IGNvbnRhaW5zIGEgZmlsZSBvciB0ZW1wbGF0ZVxuICAgICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0uaGFzQ29udGVudCgpKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnByZXBhcmVkSXRlbS5zdGF0ZS50eXBlc2VsZWN0ZWRhbGxvd2VkKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgdHlwZSBpcyBub3QgYWxsb3dlZCwgd2UnbGwgZ28gYmFjayB0byB0aGUgdHlwZSBzZWxlY3Qgc3RhdGUgLi4uXG4gICAgICAgICAgICB0aGlzLmluaXRQcmVwYXJlUGhhc2UodGhpcy5QSEFTRV9UWVBFKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gLi4uIG90aGVyd2lzZSB3ZSBnbyBvbiBzZXR0aW5nIGluZGV4ZGF0YVxuICAgICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfSU5ERVhEQVRBKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICBpZiAodGhpcy5wcmVwYXJlZEl0ZW0uc3RhdGUuY29udGVudHN0YXRlID09PSAnTk9DT05URU5UQUxMT1dFRCcpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFByZXBhcmVQaGFzZSh0aGlzLlBIQVNFX0lOREVYREFUQSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlVGVtcGxhdGUodGhpcy5zZWxlY3RlZFR5cGVPYmplY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIGluaXQgcHJlcGFyZSBwaGFzZSBmb3IgYWRkaW5nIGluZGV4ZGF0YVxuICAgICAgY2FzZSB0aGlzLlBIQVNFX0lOREVYREFUQToge1xuXG4gICAgICAgIHRoaXMuY2hvb3NlVGVtcGxhdGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQpIHtcbiAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0ZWQgdHlwZSBpcyBub3QgYWxsb3dlZCwgd2UnbGwgZ28gYmFjayB0byB0aGUgdHlwZSBzZWxlY3Qgc3RhdGUgLi4uXG4gICAgICAgICAgdGhpcy5pbml0UHJlcGFyZVBoYXNlKHRoaXMuUEhBU0VfVFlQRSk7XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICB0aGlzLnByZXBhcmVGb3JtQ29udGVudCgpO1xuXG4gICAgICAgICAgdGhpcy5wcmVwYXJlUGhhc2UgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLlBIQVNFX0lOREVYREFUQSxcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuZ2V0UHJldmlld0RhdGEoKVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5zZXR1cFRpdGxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcmV2aWV3RGF0YShpbmRleD86IG51bWJlcik6IGFueSB7XG4gICAgaWYgKHRoaXMucHJlcGFyZWRJdGVtICYmIHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzICYmIHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzLmxlbmd0aCkge1xuICAgICAgaW5kZXggPSBpbmRleCB8fCAwO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJldmlld0luZGV4OiBpbmRleCxcbiAgICAgICAgcHJldmlld0ZpbGU6IHtcbiAgICAgICAgICB1cmk6IHRoaXMucHJlcGFyZVNlcnZpY2UuZ2V0UHJldmlld1VyaSh0aGlzLnByZXBhcmVkSXRlbS5pZCwgaW5kZXgpLFxuICAgICAgICAgIHVyaVBkZjogdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmV2aWV3VXJpKHRoaXMucHJlcGFyZWRJdGVtLmlkLCBpbmRleCwgJ1BERicpLFxuICAgICAgICAgIG1pbWV0eXBlOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ubWltZXR5cGUsXG4gICAgICAgICAgbWltZWdyb3VwOiB0aGlzLnByZXBhcmVkSXRlbS5jb250ZW50c1tpbmRleF0ubWltZWdyb3VwLFxuICAgICAgICAgIHBhdGg6IHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzW2luZGV4XS5wYXRoLFxuICAgICAgICAgIHNpemU6IHRoaXMucHJlcGFyZWRJdGVtLmNvbnRlbnRzW2luZGV4XS5zaXplXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtwcmV2aWV3RmlsZTogbnVsbH07XG4gIH1cblxuICAvKipcbiAgICogU2V0dXAgdGl0bGUgZm9yIHRoZSBjdXJyZW50IHByZXBhcmVkIGl0ZW0gYmFzZWQgb24gdGhlXG4gICAqIGN1cnJlbnQgcHJlcGFyZSBwaGFzZS4gU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBwcmVwYXJlIHBoYXNlIGlzIGlkZW50aWZpZWQuXG4gICAqL1xuICBwcml2YXRlIHNldHVwVGl0bGUoKSB7XG5cbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoW1xuICAgICAgJ2VvLnByZXBhcmUubG9jYXRpb24udGl0bGUuc3lzcm9vdCcsXG4gICAgICAnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5wcmVmaXgnLFxuICAgICAgJ2VvLnByZXBhcmUuZGV0YWlscy50eXBlLnRpdGxlJyxcbiAgICAgICdlby5wcmVwYXJlLmRldGFpbHMudHlwZS5zdWJ0aXRsZScsXG4gICAgICAnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnLFxuICAgICAgJ2VvLnByZXBhcmUuZGV0YWlscy5pbmRleGRhdGEuc3VidGl0bGUnXG4gICAgXSkuc3Vic2NyaWJlKHQgPT4ge1xuXG4gICAgICBsZXQgaGVhZGVyID0ge1xuICAgICAgICB0aXRsZTogbnVsbCxcbiAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgICBsaW5rOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHN1YnRpdGxlOiBudWxsXG4gICAgICB9O1xuICAgICAgc3dpdGNoICh0aGlzLnByZXBhcmVQaGFzZS5uYW1lKSB7XG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9UWVBFOiB7XG4gICAgICAgICAgaGVhZGVyLnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUudGl0bGUnXTtcbiAgICAgICAgICBoZWFkZXIuc3VidGl0bGUgPSB0Wydlby5wcmVwYXJlLmRldGFpbHMudHlwZS5zdWJ0aXRsZSddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgdGhpcy5QSEFTRV9DT05URU5UOiB7XG4gICAgICAgICAgY29uc3QgdHlwZU9iamVjdCA9IHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpO1xuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHR5cGVPYmplY3QgPyB0eXBlT2JqZWN0LmxhYmVsIDogJyc7XG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmNvbnRlbnQuc3VidGl0bGUnXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHRoaXMuUEhBU0VfSU5ERVhEQVRBOiB7XG4gICAgICAgICAgY29uc3QgdHlwZU9iamVjdCA9IHRoaXMucHJlcGFyZWRJdGVtLmdldFNlbGVjdGVkVHlwZU9iamVjdCgpO1xuICAgICAgICAgIGhlYWRlci50aXRsZSA9IHR5cGVPYmplY3QgPyB0eXBlT2JqZWN0LmxhYmVsIDogJyc7XG4gICAgICAgICAgaGVhZGVyLnN1YnRpdGxlID0gdFsnZW8ucHJlcGFyZS5kZXRhaWxzLmluZGV4ZGF0YS5zdWJ0aXRsZSddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB1cCBsb2NhdGlvbiBpbmZvXG4gICAgICBpZiAoIXRoaXMucHJlcGFyZWRJdGVtLnBhcmVudCB8fCB0aGlzLnByZXBhcmVkSXRlbS5wYXJlbnQudHlwZSA9PT0gJ3N5c3Jvb3QnKSB7XG4gICAgICAgIGhlYWRlci5sb2NhdGlvbiA9IHtcbiAgICAgICAgICBsYWJlbDogdFsnZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5zeXNyb290J10sXG4gICAgICAgICAgbGluazogbnVsbFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKHRoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50eXBlKTtcbiAgICAgICAgaGVhZGVyLmxvY2F0aW9uID0ge1xuICAgICAgICAgIGxhYmVsOiBgJHtwYXJlbnRUeXBlID8gcGFyZW50VHlwZS5sYWJlbCArICc6ICcgOiAnJ30ke3RoaXMucHJlcGFyZWRJdGVtLnBhcmVudC50aXRsZX1gLFxuICAgICAgICAgIGxpbms6IGAvb2JqZWN0LyR7dGhpcy5wcmVwYXJlZEl0ZW0ucGFyZW50LmlkfWBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xuICAgIH0pO1xuICB9XG5cbiAgc2hvd1RlbXBsYXRlU2VsZWN0b3Ioc2hvdzogYm9vbGVhbikge1xuICAgIHRoaXMuY2hvb3NlVGVtcGxhdGUgPSBzaG93O1xuICAgIHRoaXMuc2VsZWN0VGVtcGxhdGUodGhpcy5wcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXNbMF0pO1xuICB9XG5cbiAgZG93bmxvYWQoKSB7XG4gICAgaWYgKHRoaXMucHJlcGFyZVBoYXNlKSB7XG4gICAgICBjb25zdCBmaWxlID0gdGhpcy5wcmVwYXJlUGhhc2UubmFtZSA9PT0gJ2NvbnRlbnQnID8gdGhpcy5zZWxlY3RlZFRlbXBsYXRlRmlsZSA6IHRoaXMucHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0ZpbGU7XG4gICAgICBmaWxlLnVyaSA9IGZpbGUudXJpLnJlcGxhY2UodGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCksICcnKTtcbiAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZChmaWxlLnVyaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzVGVtcGxhdGVDYXBhYmlsaXR5KCkge1xuICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdGVzLmhhc0NhcGFiaWxpdHkoJ3RlbXBsYXRlJyk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkRm4oaW5kZXgsIGl0ZW0pIHtcbiAgICByZXR1cm4gaXRlbS5pZDtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXhGbihpbmRleCwgaXRlbSkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKS5mb2N1cyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZXM6IFByZXBhcmVkSXRlbSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY29tbWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucHJlcGFyZWRJdGVtID0gcmVzO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInByZXBhcmVEZXRhaWxzX193cmFwcGVyXCIgW2VvU2hvcnRjdXRzXT1cInNob3J0Y3V0c1wiICpuZ0lmPVwiIWxvYWRpbmc7IGVsc2UgbWFpblNwaW5uZXJcIj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJwcmVwYXJlRGV0YWlsc1wiICpuZ0lmPVwicHJlcGFyZWRJdGVtICYmIHByZXBhcmVQaGFzZTsgZWxzZSBub0l0ZW1cIlxuICAgIFtuZ0NsYXNzXT1cInttdWx0aWZpbGU6IHByZXBhcmVkSXRlbS5jb250ZW50Y291bnQgPiAxLCBjb21taXR0aW5nOiBjb21taXR0aW5nfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItaW5mb1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+e3toZWFkZXIudGl0bGV9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXN1Yi10aXRsZSBoLWxvY2F0aW9uXCIgKm5nSWY9XCIhaGVhZGVyLmxvY2F0aW9uLmxpbms7IGVsc2UgbGlua2VkXCI+e3toZWFkZXIubG9jYXRpb24ubGFiZWx9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1zdWItdGl0bGUgaC1zdWJ0aXRsZVwiPnt7aGVhZGVyLnN1YnRpdGxlfX08L2Rpdj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2xpbmtlZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXN1Yi10aXRsZSBoLXN1YnRpdGxlLWRldGFpbGVkXCI+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5sb2NhdGlvbi50aXRsZS5wcmVmaXg8L3NwYW4+XG4gICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJoZWFkZXIubG9jYXRpb24ubGlua1wiPnt7aGVhZGVyLmxvY2F0aW9uLmxhYmVsfX08L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidG4gYnRuLWRvd25sb2FkXCJcbiAgICAgICAgICAqbmdJZj1cInByZXBhcmVQaGFzZS5uYW1lID09PSAnY29udGVudCcgPyBzZWxlY3RlZFRlbXBsYXRlRmlsZSA6IHByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlXCJcbiAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIlxuICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZG93bmxvYWQoKVwiPjwvZW8taWNvbj5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidG4gYnRuLWRlbGV0ZVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIlxuICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gdHJ1ZTtcIj48L2VvLWljb24+XG4gICAgICAgIDwhLS0gYnV0dG9ucyB3aGlsZSBjaG9vc2luZyBhIHRlbXBsYXRlIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hvb3NlVGVtcGxhdGVcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXRwbC1hYm9ydFwiIChjbGljayk9XCJzaG93VGVtcGxhdGVTZWxlY3RvcihmYWxzZSlcIlxuICAgICAgICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLXRwbC1hcHBseVwiIChjbGljayk9XCJhZGRUZW1wbGF0ZShzZWxlY3RlZFRlbXBsYXRlKVwiIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRUZW1wbGF0ZVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS50ZW1wbGF0ZS5zZWxlY3Q8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByZXBhcmVQaGFzZS5uYW1lID09PSAnaW5kZXhkYXRhJ1wiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlc2V0T2JqZWN0VHlwZSgpXCIgdHJhbnNsYXRlPmVvLnByZXBhcmUucmVzZXRPYmplY3Q8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjb21taXQoKVwiIGNsYXNzPVwiYnRuLWlkeC1zYXZlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntwcmltYXJ5OiBwcmVwYXJlZEl0ZW0uc3RhdGUucGFyZW50aXNyb290ICYmIHByZXBhcmVkSXRlbS5jb250ZW50Y291bnQgPiAxfVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8IGNvbW1pdHRpbmdcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5zYXZlPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjb21taXQodHJ1ZSlcIiBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8IGNvbW1pdHRpbmdcIiBjbGFzcz1cInByaW1hcnkgYnRuLWlkeC1zYXZlb3BlblwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInByZXBhcmVkSXRlbT8uc3RhdGUucGFyZW50aXNyb290ICYmIHByZXBhcmVkSXRlbT8uY29udGVudGNvdW50ID4gMVwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5zYXZlb3BlbjwvYnV0dG9uPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJlby1ib2R5XCIgW25nU3dpdGNoXT1cInByZXBhcmVQaGFzZS5uYW1lXCIgKm5nSWY9XCIhY29tbWl0dGluZzsgZWxzZSBzcGlubmVyXCI+XG5cbiAgICAgIDwhLS0gUEhBU0UgVFlQRSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwaGFzZSB0eXBlXCIgKm5nU3dpdGNoQ2FzZT1cIid0eXBlJ1wiPlxuXG4gICAgICAgIDwhLS0gd2l0aCBwcmV2aWV3IC0tPlxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJwcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZTsgZWxzZSBub3ByZXZpZXdcIlxuICAgICAgICAgIFtsYXlvdXRTZXR0aW5nc0lEXT1cIidwcmVwYXJlLmRldGFpbHMucGhhc2UudHlwZSdcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjMwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1maWxlc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0IGVtcHR5XCIgKm5nSWY9XCJwcmVwYXJlZEl0ZW0udHlwZXMubGVuZ3RoID09IDBcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgZW8ucHJlcGFyZS5kZXRhaWxzLnR5cGUuZW1wdHk8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlLXNlbGVjdCBlbXB0eVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhcHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZGFsbG93ZWQgJiYgcHJlcGFyZWRJdGVtLnN0YXRlLnR5cGVzZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7dHlwZTogcHJlcGFyZWRJdGVtLnNlbGVjdGVkdHlwZS5sYWJlbCwgZmlsZW5hbWU6IGdldEZpbGVOYW1lcyhwcmVwYXJlZEl0ZW0pfVwiXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy50eXBlLm5vdGFsbG93ZWQ8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9iamVjdC10eXBlXCIgdGFiaW5kZXg9XCIwXCIgZW9UcmFwRm9jdXMgKGtleWRvd24uZW50ZXIpPVwic2VsZWN0T2JqZWN0VHlwZSh0eXBlKVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHByZXBhcmVkSXRlbS50eXBlczsgdHJhY2tCeTogdHJhY2tCeUlkRm5cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdE9iamVjdFR5cGUodHlwZSlcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25JZF09XCJ0eXBlLmljb24uaWRcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7dHlwZS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7dHlwZS5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICA8aDIgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5jb250ZW50cy50aXRsZTwvaDI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcHJlcGFyZWRJdGVtLmNvbnRlbnRzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhGbjsgaW5kZXggYXMgaWR4O1wiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdJbmRleCA9PSBpZHh9XCIgKGNsaWNrKT1cInNldFByZXZpZXdVcmkoaWR4KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjb250ZW50LnBhdGh9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnRuIGJ0bi1kZWxldGUtY29udGVudFwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbnRlbnREZWxldGVEaWFsb2cgPSB0cnVlOyBkZWxldGVkQ29udGVudEluZGV4ID0gaWR4O1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50LmV4aXN0c2NvdW50ID4gMFwiIGNsYXNzPVwiYXR0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5wcmVwYXJlLmNvbnRlbnQuZXhpc3RzY291bnQubWVzc2FnZSd8dHJhbnNsYXRlOiAoe2NvdW50OiBjb250ZW50LmV4aXN0c2NvdW50fSl9fVwiPiFcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI3MFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLW1lZGlhLXdyYXBcIj5cbiAgICAgICAgICAgICAgPGVvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbyBbY29udGVudF09XCJwcmVwYXJlZEl0ZW0uY29udGVudHNbcHJlcGFyZVBoYXNlLmRhdGEucHJldmlld0luZGV4XVwiPlxuICAgICAgICAgICAgICA8L2VvLXByZXBhcmUtY29udGVudC1leGlzdHMtaW5mbz5cbiAgICAgICAgICAgICAgPGVvLW1lZGlhIFtkbXNPYmplY3RdPVwicHNldWRvRG1zT2JqZWN0XCIgW3ByZXZpZXdGaWxlXT1cInByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdGaWxlXCI+PC9lby1tZWRpYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwveXZjLXNwbGl0LXZpZXc+XG5cbiAgICAgICAgPCEtLSB3aXRob3V0IHByZXZpZXcgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9wcmV2aWV3PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpbGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LXR5cGUtc2VsZWN0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvYmplY3QtdHlwZVwiICpuZ0Zvcj1cImxldCB0eXBlIG9mIHByZXBhcmVkSXRlbS50eXBlczsgdHJhY2tCeTogdHJhY2tCeUlkRm5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPYmplY3RUeXBlKHR5cGUpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25JZF09XCJ0eXBlLmljb24uaWRcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPnt7dHlwZS5sYWJlbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj57e3R5cGUuZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQSEFTRSBDT05URU5UIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInBoYXNlIGNvbnRlbnRcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NvbnRlbnQnXCI+XG5cbiAgICAgICAgPCEtLSBwYW5lbCBmb3Igc2VsZWN0aW5nIGEgdGVtcGxhdGUgdG8gYmUgdXNlZCBhcyBpdGVtcyBjb250ZW50IC0tPlxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJjaG9vc2VUZW1wbGF0ZTsgZWxzZSBhdHRhY2hcIiBbbGF5b3V0U2V0dGluZ3NJRF09XCIncHJlcGFyZS5kZXRhaWxzLnBoYXNlLmNvbnRlbnQnXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI0MFwiPlxuICAgICAgICAgICAgPCEtLSBsaXN0IG9mIGF2YWlsYWJsZSB0ZW1wbGF0ZXMgLS0+XG4gICAgICAgICAgICA8ZW8tbGlzdC1jb250YWluZXIgI2VvTGlzdCBbbG9hZGluZ109XCJmYWxzZVwiIGNsYXNzPVwidGVtcGxhdGVzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImVvLWhlYWRlci1pY29uXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdGVtcGxhdGUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItdGl0bGVcIiB0cmFuc2xhdGU+ZW8ucHJlcGFyZS50ZW1wbGF0ZS5saXN0LnRpdGxlPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxlby1vdmVybGF5ICNvRmlsdGVyIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2ZpbHRlci5zdmcnXCIgW2ljb25DbGFzc109XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJsYXktZmlsdGVyXCIgW3RpdGxlXT1cIidlby5saXN0LmZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoYWN0aXZlKT1cIm9GaWx0ZXIub25BY3RpdmVDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGVvLWN1c3RvbS1maWx0ZXIgI2NGaWx0ZXIgKGNoYW5nZSk9XCJjRmlsdGVyLnVwZGF0ZUdyaWQoZW9MaXN0LmVvR3JpZFN1YmplY3QsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIChhY3RpdmUpPVwib0ZpbHRlci5vbkFjdGl2ZUNoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxlby10ZXh0LWZpbHRlciBbdGl0bGVdPVwiJ2VvLnByZXBhcmUudGVtcGxhdGUuZmlsdGVyLnRleHQudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRjaEZpZWxkc109XCJbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJywgJ3RhZ3MnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2VvLnByZXBhcmUudGVtcGxhdGUuZmlsdGVyLnRleHQudGl0bGUnXCI+PC9lby10ZXh0LWZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZW8tc2V0LWZpbHRlciBbb3BlcmF0b3JdPVwiJ09SJ1wiIFt0aXRsZV09XCInZW8ucHJlcGFyZS50ZW1wbGF0ZS5maWx0ZXIuc2V0LnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhZ0ZpbHRlck9wdGlvbnM/Lmxlbmd0aFwiIFtvcHRpb25zXT1cInRhZ0ZpbHRlck9wdGlvbnNcIj48L2VvLXNldC1maWx0ZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZW8tY3VzdG9tLWZpbHRlcj5cbiAgICAgICAgICAgICAgICAgIDwvZW8tb3ZlcmxheT5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVvLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8ZW8tZ3JpZCAjZW9HcmlkICpuZ0lmPVwiZ3JpZE9wdGlvbnM/LnJvd0RhdGFcIiBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwidHJ1ZVwiIFtzaG93Rm9vdGVyXT1cImZhbHNlXCIgW3NlbGVjdGlvbkxpbWl0XT1cIjFcIlxuICAgICAgICAgICAgICAgICAgKGVvR3JpZFNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0VGVtcGxhdGUoJGV2ZW50WzBdKVwiPlxuICAgICAgICAgICAgICAgIDwvZW8tZ3JpZD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2VvLWxpc3QtY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgeXZjU3BsaXRBcmVhIFtzaXplXT1cIjYwXCI+XG4gICAgICAgICAgICA8IS0tIHByZXZpZXcgb2Ygc2VsZWN0ZWQgdGVtcGxhdGUgLS0+XG4gICAgICAgICAgICA8ZW8tbWVkaWEgW3ByZXZpZXdGaWxlXT1cInNlbGVjdGVkVGVtcGxhdGVGaWxlXCI+PC9lby1tZWRpYT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3l2Yy1zcGxpdC12aWV3PlxuXG4gICAgICAgIDwhLS0gYWRkIGNvbnRlbnQgZ2VuZXJhbCBvdmVydmlldyAodXBsb2FkLCB0ZW1wbGF0ZSwgbm9uZSkgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjYXR0YWNoPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9cIiAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCIgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC5pbmZvPC9kaXY+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGUgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlTGlzdGVuZXIoJGV2ZW50LnRhcmdldC5maWxlcylcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50c1wiICpuZ0lmPVwiIXVwbG9hZEluUHJvZ3Jlc3M7IGVsc2UgdXBsb2Fkc3Bpbm5lclwiPlxuXG4gICAgICAgICAgICA8IS0tIHVwbG9hZCBhIGZpbGUgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudCBhdHQtZmlsZVwiICpuZ0lmPVwicHJlcGFyZVBoYXNlLmRhdGEuZmlsZVwiIChjbGljayk9XCJ1cGxvYWQoKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nXCI+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmlsZV91cGxvYWQuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LnVwbG9hZC50aXRsZTwvaDM+XG4gICAgICAgICAgICAgIDxwIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQudXBsb2FkLmRlc2M8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBzZWxlY3QgYSB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50IGF0dC10bXBsXCIgKm5nSWY9XCJwcmVwYXJlUGhhc2UuZGF0YS50ZW1wbGF0ZXMubGVuZ3RoID4gMCAmJiBoYXNUZW1wbGF0ZUNhcGFiaWxpdHkoKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVtcGxhdGVTZWxlY3Rvcih0cnVlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nXCI+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcHJlcGFyZV9hZGQuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8ucHJlcGFyZS5hdHRhY2htZW50LnRlbXBsYXRlLnRpdGxlPC9oMz5cbiAgICAgICAgICAgICAgPHAgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC50ZW1wbGF0ZS5kZXNjPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gbm8gZmlsZSAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50IGF0dC1ub25lXCIgKm5nSWY9XCJwcmVwYXJlUGhhc2UuZGF0YS53aXRob3V0RmlsZVwiIChjbGljayk9XCJub0ZpbGUoKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nXCI+XG4gICAgICAgICAgICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbm8tZmlsZS5zdmcnXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmF0dGFjaG1lbnQubm9maWxlLnRpdGxlPC9oMz5cbiAgICAgICAgICAgICAgPHAgdHJhbnNsYXRlPmVvLnByZXBhcmUuYXR0YWNobWVudC5ub2ZpbGUuZGVzYzwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8IS0tIHVwbG9hZCBwcm9ncmVzcyBpbmRpY2F0b3IgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjdXBsb2Fkc3Bpbm5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWluZGljYXRvclwiPlxuICAgICAgICAgICAgPGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInbGFyZ2UnXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQSEFTRSBJTkRFWERBVEEgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicGhhc2UgaW5kZXhkYXRhXCIgKm5nU3dpdGNoQ2FzZT1cIidpbmRleGRhdGEnXCI+XG5cbiAgICAgICAgPCEtLSBmb3JtIGFuZCBwcmV2aWV3IC0tPlxuICAgICAgICA8eXZjLXNwbGl0LXZpZXcgKm5nSWY9XCJwcmVwYXJlZEl0ZW0uY29udGVudHM7IGVsc2UganVzdGZvcm1cIiBbbGF5b3V0U2V0dGluZ3NJRF09XCIncHJlcGFyZS5zdGF0ZS5kZXRhaWxzJ1wiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpbGVzXCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBpbmRleGRhdGEgZm9ybSAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImp1c3Rmb3JtXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPCEtLSBsaXN0IG9mIGNvbnRlbnRzIChpbiBjYXNlIG9mIGJ1bGsgdXBsb2FkKSB0aGF0IGNhbiBiZSBwcmV2aWV3ZWQgLS0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXNlbGVjdFwiPlxuXG4gICAgICAgICAgICAgICAgPGgyIHRyYW5zbGF0ZT5lby5wcmVwYXJlLmRldGFpbHMuY29udGVudHMudGl0bGU8L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIHByZXBhcmVkSXRlbS5jb250ZW50czsgdHJhY2tCeTogdHJhY2tCeUluZGV4Rm47IGluZGV4IGFzIGlkeFwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdJbmRleCA9PT0gaWR4fVwiIChjbGljayk9XCJzZXRQcmV2aWV3VXJpKGlkeClcIj5cbiAgICAgICAgICAgICAgICAgIHt7Y29udGVudC5wYXRofX0gPHNwYW4gKm5nSWY9XCJjb250ZW50LmV4aXN0c2NvdW50ID4gMFwiIGNsYXNzPVwiYXR0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5wcmVwYXJlLmNvbnRlbnQuZXhpc3RzY291bnQubWVzc2FnZSd8dHJhbnNsYXRlOiAoe2NvdW50OiBjb250ZW50LmV4aXN0c2NvdW50fSl9fVwiPiE8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlby1tZWRpYS13cmFwXCI+XG4gICAgICAgICAgICAgIDxlby1wcmVwYXJlLWNvbnRlbnQtZXhpc3RzLWluZm8gW2NvbnRlbnRdPVwicHJlcGFyZWRJdGVtLmNvbnRlbnRzW3ByZXBhcmVQaGFzZS5kYXRhLnByZXZpZXdJbmRleF1cIj5cbiAgICAgICAgICAgICAgPC9lby1wcmVwYXJlLWNvbnRlbnQtZXhpc3RzLWluZm8+XG4gICAgICAgICAgICAgIDxlby1tZWRpYSBbZG1zT2JqZWN0XT1cInBzZXVkb0Rtc09iamVjdFwiIFtwcmV2aWV3RmlsZV09XCJwcmVwYXJlUGhhc2UuZGF0YS5wcmV2aWV3RmlsZVwiPjwvZW8tbWVkaWE+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3l2Yy1zcGxpdC12aWV3PlxuXG4gICAgICAgIDwhLS0ganVzdCB0aGUgZm9ybSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNqdXN0Zm9ybT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgc2l0dWF0aW9uLWNyZWF0ZVwiICpuZ0lmPVwiZm9ybU9wdGlvbnNcIj5cbiAgICAgICAgICAgIDxlby1vYmplY3QtZm9ybSAjZm9ybSBbZm9ybU9wdGlvbnNdPVwiZm9ybU9wdGlvbnNcIiAoc3RhdHVzQ2hhbmdlZCk9XCJvbkZvcm1TdGF0dXNDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvZW8tb2JqZWN0LWZvcm0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxuZy10ZW1wbGF0ZSAjc3Bpbm5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuICAgICAgPGVvLWxvYWRpbmctc3Bpbm5lciBzaXplPVwibWVkaXVtXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI21haW5TcGlubmVyPlxuICA8ZGl2IGNsYXNzPVwicHJlcGFyZURldGFpbHNfX21haW4tc3Bpbm5lclwiPlxuICAgIDxlby1sb2FkaW5nLXNwaW5uZXIgc2l6ZT1cIm1lZGl1bVwiPjwvZW8tbG9hZGluZy1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cblxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxlby1lcnJvci1tZXNzYWdlIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICBbZm9jdXNPblNob3ddPVwiZmFsc2VcIiBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ3ByZXBhcmUtZGVsZXRlX19kaWFsb2cnXCI+XG5cbiAgPGRpdj57eydlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmRpYWxvZy5tZXNzYWdlJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIHByZXBhcmUtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpcm1EZWxldGUgKGNsaWNrKT1cInJlbW92ZUl0ZW0ocHJlcGFyZWRJdGVtKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIidlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmNvbnRlbnQuZGlhbG9nLnRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwic2hvd0NvbnRlbnREZWxldGVEaWFsb2dcIlxuICBbbWluV2lkdGhdPVwiNDAwXCIgW3N0eWxlQ2xhc3NdPVwiJ3ByZXBhcmUtZGVsZXRlX19kaWFsb2cnXCI+XG5cbiAgPGRpdj57eydlby5wcmVwYXJlLmRldGFpbHMuZGVsZXRlLmNvbnRlbnQuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlOiAoe2NvbnRlbnRQYXRoOiBwcmVwYXJlZEl0ZW0/LmNvbnRlbnRzID9cbiAgICBwcmVwYXJlZEl0ZW0/LmNvbnRlbnRzW2RlbGV0ZWRDb250ZW50SW5kZXhdPy5wYXRoIDogJyd9KX19PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIHByZXBhcmUtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93Q29udGVudERlbGV0ZURpYWxvZyA9IGZhbHNlXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNjb25maXJtQ29udGVudERlbGV0ZSAoY2xpY2spPVwicmVtb3ZlSXRlbUNvbnRlbnQocHJlcGFyZWRJdGVtLCBkZWxldGVkQ29udGVudEluZGV4KVwiXG4gICAgICBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgdHJhbnNsYXRlPmVvLnByZXBhcmUuZGV0YWlscy5kZWxldGUuZGlhbG9nLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=
|
|
@@ -5485,7 +5485,7 @@ class CodesystemComponent {
|
|
|
5485
5485
|
}
|
|
5486
5486
|
if (this.multiselect && !this.isTableElement) {
|
|
5487
5487
|
const value = Array.isArray(this.value) ? this.value : this.value?.value;
|
|
5488
|
-
for (let i = 0; i < value
|
|
5488
|
+
for (let i = 0; i < value?.length; i++) {
|
|
5489
5489
|
if (node.data.data === value[i]) {
|
|
5490
5490
|
node.selected = true;
|
|
5491
5491
|
this.selectedNodes.push(node);
|
|
@@ -7504,8 +7504,8 @@ class DynamicListComponent {
|
|
|
7504
7504
|
}
|
|
7505
7505
|
}
|
|
7506
7506
|
else {
|
|
7507
|
-
node[this.valueField] = value;
|
|
7508
|
-
node['value'] = value;
|
|
7507
|
+
node[this.valueField] = this.value;
|
|
7508
|
+
node['value'] = this.value;
|
|
7509
7509
|
}
|
|
7510
7510
|
this.selectedNodes = node;
|
|
7511
7511
|
}
|
|
@@ -7942,7 +7942,7 @@ class DynamicListComponent {
|
|
|
7942
7942
|
if (this.filterFunction && !this.filterFunction(acNodeData)) {
|
|
7943
7943
|
return false;
|
|
7944
7944
|
}
|
|
7945
|
-
if (this.situation === 'SEARCH' && this.selectedNodes?.some((node) => {
|
|
7945
|
+
if (this.situation === 'SEARCH' && Array.isArray(this.selectedNodes) && this.selectedNodes?.some((node) => {
|
|
7946
7946
|
const nodeValue = node.value || node?.data?.[this.valueField];
|
|
7947
7947
|
return acNodeData && nodeValue && acNodeValue === nodeValue;
|
|
7948
7948
|
})) {
|
|
@@ -8956,6 +8956,9 @@ let MediaComponent = class MediaComponent {
|
|
|
8956
8956
|
this.hasContentLoaded.emit(true);
|
|
8957
8957
|
}
|
|
8958
8958
|
set dmsObject(item) {
|
|
8959
|
+
if (!item) {
|
|
8960
|
+
return;
|
|
8961
|
+
}
|
|
8959
8962
|
this._dmsObject = item;
|
|
8960
8963
|
this.dmsObjectTitle = item.title || '...';
|
|
8961
8964
|
this.setAttachments = [];
|
|
@@ -20438,7 +20441,7 @@ let ObjectHistoryComponent = class ObjectHistoryComponent {
|
|
|
20438
20441
|
res.description = this.translate.instant('eo.object.history.entry.type.' + (res.intent ? res.intent : res.type) + '.description', res.parameter);
|
|
20439
20442
|
});
|
|
20440
20443
|
this.completeHistory = reversedRes;
|
|
20441
|
-
this.history = reversedRes;
|
|
20444
|
+
this.history = reversedRes.filter(entry => this.filters.indexOf(entry.group) === -1);
|
|
20442
20445
|
this.cd.markForCheck();
|
|
20443
20446
|
}))
|
|
20444
20447
|
.subscribe();
|
|
@@ -22532,7 +22535,7 @@ let PrepareDetailsComponent = class PrepareDetailsComponent {
|
|
|
22532
22535
|
}
|
|
22533
22536
|
}
|
|
22534
22537
|
// set up location info
|
|
22535
|
-
if (this.preparedItem.parent.type === 'sysroot') {
|
|
22538
|
+
if (!this.preparedItem.parent || this.preparedItem.parent.type === 'sysroot') {
|
|
22536
22539
|
header.location = {
|
|
22537
22540
|
label: t['eo.prepare.location.title.sysroot'],
|
|
22538
22541
|
link: null
|
|
@@ -22541,7 +22544,7 @@ let PrepareDetailsComponent = class PrepareDetailsComponent {
|
|
|
22541
22544
|
else {
|
|
22542
22545
|
const parentType = this.systemService.getObjectType(this.preparedItem.parent.type);
|
|
22543
22546
|
header.location = {
|
|
22544
|
-
label:
|
|
22547
|
+
label: `${parentType ? parentType.label + ': ' : ''}${this.preparedItem.parent.title}`,
|
|
22545
22548
|
link: `/object/${this.preparedItem.parent.id}`
|
|
22546
22549
|
};
|
|
22547
22550
|
}
|
|
@@ -24868,10 +24871,10 @@ class AboutStateComponent {
|
|
|
24868
24871
|
this.config = config;
|
|
24869
24872
|
this.titleService = titleService;
|
|
24870
24873
|
this.translate = translate;
|
|
24871
|
-
this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.14.
|
|
24874
|
+
this.__libraries__ = [{ "name": "@ag-grid-community/angular", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/client-side-row-model", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/core", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/csv-export", "version": "31.3.2", "license": "MIT" }, { "name": "@ag-grid-community/styles", "version": "31.3.2", "license": "MIT" }, { "name": "@angular/animations", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/cdk", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/common", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/compiler", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/core", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/forms", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/platform-browser-dynamic", "version": "18.1.0", "license": "MIT" }, { "name": "@angular/router", "version": "18.1.0", "license": "MIT" }, { "name": "@carbon/charts-angular", "version": "1.16.3", "license": "Apache-2.0" }, { "name": "@eo-sdk/core", "version": "11.14.31", "license": "MIT" }, { "name": "@ngneat/until-destroy", "version": "10.0.0", "license": "MIT" }, { "name": "@ngx-pwa/local-storage", "version": "18.0.0", "license": "MIT" }, { "name": "@ngx-translate/core", "version": "15.0.0", "license": "SEE LICENSE IN LICENSE" }, { "name": "@yuuvis/components", "version": "18.1.23", "license": "MIT" }, { "name": "@yuuvis/widget-grid", "version": "18.0.0", "license": "MIT" }, { "name": "core-js", "version": "2.6.12", "license": "MIT" }, { "name": "fast-xml-parser", "version": "5.4.1", "license": "MIT" }, { "name": "file-saver", "version": "2.0.5", "license": "MIT" }, { "name": "font-awesome", "version": "4.7.0", "license": "(OFL-1.1 AND MIT)" }, { "name": "karma-coverage-istanbul-reporter", "version": "3.0.3", "license": "MIT" }, { "name": "lodash-es", "version": "4.17.21", "license": "MIT" }, { "name": "moment", "version": "2.30.1", "license": "MIT" }, { "name": "ngx-toastr", "version": "19.0.0", "license": "MIT" }, { "name": "rxjs", "version": "7.8.1", "license": "Apache-2.0" }, { "name": "tslib", "version": "2.6.3", "license": "0BSD" }, { "name": "zone.js", "version": "0.14.7", "license": "MIT" }];
|
|
24872
24875
|
this.ctrl = {
|
|
24873
24876
|
componentName: 'yuuvis® RAD client',
|
|
24874
|
-
componentVersion: '11.14.
|
|
24877
|
+
componentVersion: '11.14.32',
|
|
24875
24878
|
productName: '',
|
|
24876
24879
|
productVersion: ''
|
|
24877
24880
|
};
|
|
@@ -26812,23 +26815,23 @@ let CountObjectsWidgetComponent = class CountObjectsWidgetComponent {
|
|
|
26812
26815
|
? this.countTileResult.count >= threshold
|
|
26813
26816
|
: this.countTileResult.count <= threshold;
|
|
26814
26817
|
}
|
|
26815
|
-
onEmitQueryClick() {
|
|
26818
|
+
onEmitQueryClick(event) {
|
|
26816
26819
|
delete this._query.fields;
|
|
26817
26820
|
const uriParam = encodeURIComponent(Utils.formDataStringify(this._query.getQueryJson()));
|
|
26818
26821
|
const uriParamQuery = { queryParams: { 'query': uriParam } };
|
|
26819
26822
|
const queryParams = new URLSearchParams(uriParamQuery.queryParams).toString();
|
|
26820
26823
|
const url = window.location.href.split('/dashboard')[0] + '/result?' + queryParams;
|
|
26821
|
-
window.open(url);
|
|
26824
|
+
window.open(url, event?.ctrlKey || this.preview ? '_blank' : '_self');
|
|
26822
26825
|
}
|
|
26823
26826
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CountObjectsWidgetComponent, deps: [{ token: i0.ElementRef }, { token: i1.SearchService }, { token: i1.SystemService }, { token: i1.StoredQueriesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26824
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: { preview: "preview", widgetConfig: "widgetConfig" }, ngImport: i0, template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled: preview}\"\n (click)=\"onEmitQueryClick()\">\n <div class=\"clr\">\n @if (hitlistResult[0]?.type) {\n <eo-icon [objectType]=\"hitlistResult[0]?.type\"></eo-icon>\n } @else {\n <eo-icon [iconId]=\"defaultIconId\"></eo-icon>\n }\n <div class=\"count\">{{ countTileResult?.count }}</div>\n </div>\n <div class=\"msg\">{{ widgetConfig?.formValue.storedQuery }}</div>\n </a>\n} @else if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{z-index:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info.disabled{cursor:default;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;flex:0 0 auto;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:2.5rem;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}:host .info .clr.success{color:var(--color-success)}:host .info .clr.warning{color:var(--color-warning)}:host .info .clr.error{color:var(--color-error)}:host .empty{display:contents}::ng-deep eo-icon.error__icon{max-width:fit-content;max-height:fit-content}::ng-deep eo-error-message{overflow-y:auto}::ng-deep .error__message{display:contents;max-width:fit-content;max-height:fit-content}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }] }); }
|
|
26827
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: CountObjectsWidgetComponent, selector: "eo-count-objects-widget", inputs: { preview: "preview", widgetConfig: "widgetConfig" }, ngImport: i0, template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled: preview}\"\n (click)=\"onEmitQueryClick($event)\">\n <div class=\"clr\">\n @if (hitlistResult[0]?.type) {\n <eo-icon [objectType]=\"hitlistResult[0]?.type\"></eo-icon>\n } @else {\n <eo-icon [iconId]=\"defaultIconId\"></eo-icon>\n }\n <div class=\"count\">{{ countTileResult?.count }}</div>\n </div>\n <div class=\"msg\">{{ widgetConfig?.formValue.storedQuery }}</div>\n </a>\n} @else if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{z-index:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info.disabled{cursor:default;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;flex:0 0 auto;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:2.5rem;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}:host .info .clr.success{color:var(--color-success)}:host .info .clr.warning{color:var(--color-warning)}:host .info .clr.error{color:var(--color-error)}:host .empty{display:contents}::ng-deep eo-icon.error__icon{max-width:fit-content;max-height:fit-content}::ng-deep eo-error-message{overflow-y:auto}::ng-deep .error__message{display:contents;max-width:fit-content;max-height:fit-content}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }] }); }
|
|
26825
26828
|
};
|
|
26826
26829
|
CountObjectsWidgetComponent = __decorate([
|
|
26827
26830
|
UntilDestroy()
|
|
26828
26831
|
], CountObjectsWidgetComponent);
|
|
26829
26832
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: CountObjectsWidgetComponent, decorators: [{
|
|
26830
26833
|
type: Component,
|
|
26831
|
-
args: [{ selector: 'eo-count-objects-widget', template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled: preview}\"\n (click)=\"onEmitQueryClick()\">\n <div class=\"clr\">\n @if (hitlistResult[0]?.type) {\n <eo-icon [objectType]=\"hitlistResult[0]?.type\"></eo-icon>\n } @else {\n <eo-icon [iconId]=\"defaultIconId\"></eo-icon>\n }\n <div class=\"count\">{{ countTileResult?.count }}</div>\n </div>\n <div class=\"msg\">{{ widgetConfig?.formValue.storedQuery }}</div>\n </a>\n} @else if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{z-index:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info.disabled{cursor:default;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;flex:0 0 auto;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:2.5rem;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}:host .info .clr.success{color:var(--color-success)}:host .info .clr.warning{color:var(--color-warning)}:host .info .clr.error{color:var(--color-error)}:host .empty{display:contents}::ng-deep eo-icon.error__icon{max-width:fit-content;max-height:fit-content}::ng-deep eo-error-message{overflow-y:auto}::ng-deep .error__message{display:contents;max-width:fit-content;max-height:fit-content}\n"] }]
|
|
26834
|
+
args: [{ selector: 'eo-count-objects-widget', template: "@if (hitlistResult && !refreshingRequest) {\n <a class=\"info\" [ngClass]=\"{visible: isVisible, disabled: preview}\"\n (click)=\"onEmitQueryClick($event)\">\n <div class=\"clr\">\n @if (hitlistResult[0]?.type) {\n <eo-icon [objectType]=\"hitlistResult[0]?.type\"></eo-icon>\n } @else {\n <eo-icon [iconId]=\"defaultIconId\"></eo-icon>\n }\n <div class=\"count\">{{ countTileResult?.count }}</div>\n </div>\n <div class=\"msg\">{{ widgetConfig?.formValue.storedQuery }}</div>\n </a>\n} @else if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host-context(.editMode) .info:not(.visible){opacity:1}:host{z-index:1}:host .info{color:var(--color-primary-2);padding:0 var(--app-pane-padding);margin-bottom:calc(var(--app-pane-padding) * 2);text-decoration:none;cursor:pointer}:host .info:not(.visible){opacity:0;pointer-events:none}:host .info.disabled{cursor:default;pointer-events:none}:host .info:focus,:host .info:hover{color:var(--color-accent)}:host .info:focus eo-icon,:host .info:hover eo-icon{background-color:var(--color-accent)}:host .info>div{display:flex;flex:0 0 auto;align-items:center}:host .info eo-icon{flex:0 0 auto;border-radius:2px;background-color:var(--color-primary-2);color:rgba(var(--color-white-rgb),.7);padding:2px}:host .info .count{font-size:2.5rem;line-height:1em;padding:0 var(--app-pane-padding);text-align:right}:host .info .clr.success{color:var(--color-success)}:host .info .clr.warning{color:var(--color-warning)}:host .info .clr.error{color:var(--color-error)}:host .empty{display:contents}::ng-deep eo-icon.error__icon{max-width:fit-content;max-height:fit-content}::ng-deep eo-error-message{overflow-y:auto}::ng-deep .error__message{display:contents;max-width:fit-content;max-height:fit-content}\n"] }]
|
|
26832
26835
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SearchService }, { type: i1.SystemService }, { type: i1.StoredQueriesService }], propDecorators: { preview: [{
|
|
26833
26836
|
type: Input
|
|
26834
26837
|
}], widgetConfig: [{
|