tin-spa 2.13.13 → 2.13.15
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/esm2020/lib/classes/Classes.mjs +1 -1
- package/esm2020/lib/classes/TinCore.mjs +1 -2
- package/esm2020/lib/components/date/date.component.mjs +3 -6
- package/esm2020/lib/components/form/form.component.mjs +4 -1
- package/esm2020/lib/components/table/detailsDialog.component.mjs +4 -2
- package/esm2020/lib/components/table-internal/detailsDialog-internal.component.mjs +4 -2
- package/esm2020/lib/components/table-lite/detailsDialog-lite.component.mjs +4 -2
- package/esm2020/lib/components/text/text.component.mjs +1 -5
- package/esm2020/lib/pages/users/users.component.mjs +29 -3
- package/esm2020/lib/services/datalib.service.mjs +1 -2
- package/fesm2015/tin-spa.mjs +46 -15
- package/fesm2015/tin-spa.mjs.map +1 -1
- package/fesm2020/tin-spa.mjs +42 -16
- package/fesm2020/tin-spa.mjs.map +1 -1
- package/lib/classes/Classes.d.ts +1 -0
- package/package.json +1 -1
|
@@ -171,6 +171,9 @@ export class FormComponent {
|
|
|
171
171
|
}
|
|
172
172
|
selectChanged(field) {
|
|
173
173
|
this.inputChanged(field, this.data[field.name]);
|
|
174
|
+
if (field.onSelectChange) {
|
|
175
|
+
field.onSelectChange(this.data[field.name], this.data);
|
|
176
|
+
}
|
|
174
177
|
}
|
|
175
178
|
inputChanged(field, value) {
|
|
176
179
|
this.inputChange.emit({ field: field, value: value });
|
|
@@ -290,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
290
293
|
}], inputChange: [{
|
|
291
294
|
type: Output
|
|
292
295
|
}] } });
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVN2QyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFvQixjQUE4QixFQUFVLFdBQTJCLEVBQVUsV0FBd0I7UUFBckcsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFxRnpILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFJVCxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBTW5CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFwR2tGLENBQUM7SUFFOUgsUUFBUTtRQUVOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlC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aEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDekQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3hDO2dCQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDL0I7YUFHRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztJQU1YLENBQUM7OzBHQTFWVSxhQUFhOzhGQUFiLGFBQWEscVNDZDFCLDZ6YUFvSkE7MkZEdElhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsVUFBVTs0SkF5RlcscUJBQXFCO3NCQUFuRCxZQUFZO3VCQUFDLGVBQWU7Z0JBTXBCLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgRmllbGQsIEJ1dHRvbiwgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBDb3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UaW5Db3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuaGFzQWNjZXNzID0gQ29yZS5oYXNGb3JtQWNjZXNzKHRoaXMuY29uZmlnLCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaGFzQWNjZXNzKSB7XHJcbiAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoJ0FjY2VzcyBkZW5pZWQnKTsgLy8gT3B0aW9uYWwgLSBub3RpZnkgdXNlclxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5maWVsZHMpe1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIENvbmZpZ3VyZSBGb3JtIEZpZWxkc1wiKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBsZWFzZSBDb25maWd1cmUgRm9ybSBEYXRhXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuY29uZmlnLmZpZWxkcztcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIEJlaGF2aW9yU3ViamVjdHMgZm9yIGZpZWxkcyB3aXRoIGxvYWRBY3Rpb25zXHJcbiAgICB0aGlzLmZpZWxkcz8uZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5sb2FkQWN0aW9uICYmICFmaWVsZC5vcHRpb25zU3ViamVjdCAmJiAhZmllbGQubWFzdGVyRmllbGQpIHtcclxuICAgICAgICBmaWVsZC5vcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuXHJcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIG9wdGlvbnMgY2hhbmdlc1xyXG4gICAgICAgIGZpZWxkLm9wdGlvbnNTdWJqZWN0LnN1YnNjcmliZShuZXdPcHRpb25zID0+IHtcclxuICAgICAgICAgIGZpZWxkLm9wdGlvbnMgPSBuZXdPcHRpb25zO1xyXG5cclxuICAgICAgICAgIC8vIFVwZGF0ZSBjaGlsZCBmaWVsZHMgdGhhdCBkZXBlbmQgb24gdGhpcyBmaWVsZFxyXG4gICAgICAgICAgaWYgKHRoaXMuY2hpbGRGaWVsZHM/LnNvbWUoeCA9PiB4Lm1hc3RlckZpZWxkID09PSBmaWVsZC5uYW1lKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhmaWVsZC5uYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5tdWx0aUNvbHVtbil7XHJcbiAgICAgIHRoaXMubXVsdGlDb2x1bW4gPSB0aGlzLmNvbmZpZy5tdWx0aUNvbHVtblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubXVsdGlDb2x1bW4gPSB0aGlzLmZpZWxkcy5sZW5ndGggPiAyXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5idXR0b24/LmRpc3BsYXkpe1xyXG4gICAgICB0aGlzLmJ1dHRvbkRpc3BsYXkgPSB0aGlzLmNvbmZpZy5idXR0b24uZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVGaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoeCA9PiB4LnR5cGUgPT0gJ2ZpbGUnKVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZz8uYnV0dG9uPy5hY3Rpb24gJiYgdGhpcy5maWxlRmllbGQgfHwgdGhpcy5jb25maWc/LmJ1dHRvbj8uYWN0aW9uLnVybC5pbmNsdWRlcyhcIi9mb3JtXCIpKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLmJ1dHRvbi5hY3Rpb24uaXNGb3JtRGF0YSA9IHRydWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hpbGRGaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoeCA9PiB4Lm1hc3RlckZpZWxkKVxyXG5cclxuXHJcbiAgICB0aGlzLmNoaWxkRmllbGRzLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICBsZXQgbWFzdGVyID0gdGhpcy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSBjaGlsZC5tYXN0ZXJGaWVsZClcclxuICAgICAgaWYgKGNoaWxkLmxvYWRBY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZE1hc3Rlck9wdGlvbnMoY2hpbGQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhtYXN0ZXIubmFtZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLmxvYWRBY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZE1hc3Rlck9wdGlvbnMoZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb3NpdGVGaWVsZHMoKTtcclxuXHJcblxyXG4gICAgdGhpcy5hcHBseVZhbHVlQ2FsY3VsYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkKCdkeW5hbWljU2VsZWN0JykgZHluYW1pY1NlbGVjdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBoYXNBY2Nlc3MgPSBmYWxzZTtcclxuICBmaWxlTmFtZXNcclxuICBmaWxlRmllbGQ6IEZpZWxkO1xyXG4gIGZpbGVWaWV3RmllbGQ6IEZpZWxkO1xyXG4gIEBJbnB1dCgpIGZpbGVzOiBhbnlbXSA9IFtdO1xyXG4gIGZpZWxkczogRmllbGRbXTtcclxuICBidXR0b25EaXNwbGF5ID0gXCJTdWJtaXRcIjtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aUNvbHVtbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjaGlsZEZpZWxkczogRmllbGRbXTtcclxuXHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogRm9ybUNvbmZpZztcclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBpbml0aWFsaXplQ29tcG9zaXRlRmllbGRzKCkge1xyXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnY29tcG9zaXRlJyAmJiBmaWVsZC5zdWJmaWVsZHMpIHtcclxuICAgICAgICBmaWVsZC5zdWJmaWVsZHMuZm9yRWFjaChzdWJmaWVsZCA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW3N1YmZpZWxkLm5hbWVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhW3N1YmZpZWxkLm5hbWVdID0gQ29yZS5nZXRJbml0aWFsVmFsdWUoc3ViZmllbGQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlWYWx1ZUNhbGN1bGF0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy5kYXRhIHx8ICF0aGlzLmZpZWxkcykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgdmlzaWJsZSBmaWVsZHMgdGhhdCBoYXZlIHZhbHVlQ2FsY3VsYXRpb24gZnVuY3Rpb25zXHJcbiAgICBjb25zdCBjYWxjdWxhdGVkRmllbGRzID0gdGhpcy5nZXRWaXNpYmxlRmllbGRzKClcclxuICAgICAgLmZpbHRlcihmaWVsZCA9PiB0eXBlb2YgZmllbGQudmFsdWVDYWxjdWxhdGlvbiA9PT0gJ2Z1bmN0aW9uJyk7XHJcbiAgICBcclxuICAgIGlmIChjYWxjdWxhdGVkRmllbGRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgXHJcbiAgICAvLyBBcHBseSBjYWxjdWxhdGlvbnMgdG8gZWFjaCBmaWVsZFxyXG4gICAgY2FsY3VsYXRlZEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkVmFsdWUgPSBmaWVsZC52YWx1ZUNhbGN1bGF0aW9uKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgaWYgKGNhbGN1bGF0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFbZmllbGQubmFtZV0gPSBjYWxjdWxhdGVkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGNhbGN1bGF0aW5nIHZhbHVlIGZvciBmaWVsZCAke2ZpZWxkLm5hbWV9OmAsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRWaXNpYmxlU3ViZmllbGRzKGZpZWxkIDogRmllbGQpe1xyXG4gICAgcmV0dXJuIENvcmUuZ2V0VmlzaWJsZVN1YmZpZWxkcyh0aGlzLmNvbmZpZywgdGhpcy5kYXRhLCBmaWVsZCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSk7XHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBnZXRWaXNpYmxlRmllbGRzKCkge1xyXG4gICAgbGV0IHZpc2libGVGaWVsZHMgPSB0aGlzLmZpZWxkcz8uZmlsdGVyKHggPT4gQ29yZS50ZXN0VmlzaWJsZSh0aGlzLmNvbmZpZywgdGhpcy5kYXRhLCB4LCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKSkgPz8gW107XHJcblxyXG4gICAgLy8gRmlsdGVyIG91dCBmaWVsZHMgdW5kZXIgY29sbGFwc2VkIHNlY3Rpb25zXHJcbiAgICByZXR1cm4gdmlzaWJsZUZpZWxkcy5maWx0ZXIoZmllbGQgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlY3Rpb24nKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgaWYgKGZpZWxkLnNlY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBzZWN0aW9uRmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKGYgPT4gZi50eXBlID09PSAnc2VjdGlvbicgJiYgZi5uYW1lID09PSBmaWVsZC5zZWN0aW9uKTtcclxuICAgICAgICByZXR1cm4gIXNlY3Rpb25GaWVsZD8uY29sbGFwc2VkO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0ZXN0UmVhZE9ubHkoZmllbGQ6IEZpZWxkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQ29yZS50ZXN0UmVhZE9ubHkodGhpcy5jb25maWcsIHRoaXMuZGF0YSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgdGVzdFJlcXVpcmVkKGZpZWxkOiBGaWVsZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIENvcmUudGVzdFJlcXVpcmVkKHRoaXMuY29uZmlnLCB0aGlzLmRhdGEsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNlY3Rpb24oZmllbGQ6IEZpZWxkKSB7XHJcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlY3Rpb24nKSB7XHJcbiAgICAgIGZpZWxkLmNvbGxhcHNlZCA9ICFmaWVsZC5jb2xsYXBzZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNTZWN0aW9uRmllbGRzKHNlY3Rpb25OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkcz8uc29tZShmaWVsZCA9PlxyXG4gICAgICBmaWVsZC5zZWN0aW9uID09PSBzZWN0aW9uTmFtZSAmJlxyXG4gICAgICBDb3JlLnRlc3RWaXNpYmxlKHRoaXMuY29uZmlnLCB0aGlzLmRhdGEsIGZpZWxkLCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKVxyXG4gICAgKSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNob3VsZFNlY3Rpb25Db2xsYXBzZShmaWVsZDogRmllbGQpOiBib29sZWFuIHtcclxuICAgIGlmIChmaWVsZC5jb2xsYXBzZWRDb25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmNvbGxhcHNlZENvbmRpdGlvbih0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkLmNvbGxhcHNlZCA/PyBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBvbkluZm9DbGljayhldmVudDogTW91c2VFdmVudCwgaW5mb01lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oaW5mb01lc3NhZ2UpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdENoYW5nZWQoZmllbGQ6IEZpZWxkKXtcclxuICAgIHRoaXMuaW5wdXRDaGFuZ2VkKGZpZWxkLCB0aGlzLmRhdGFbZmllbGQubmFtZV0gKVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBpbnB1dENoYW5nZWQoZmllbGQgOiBGaWVsZCwgdmFsdWUpe1xyXG5cclxuICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh7IGZpZWxkOiBmaWVsZCwgdmFsdWU6IHZhbHVlfSlcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhmaWVsZC5uYW1lKVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcubW9kZSA9PSAnY3JlYXRlJyAmJiBmaWVsZC5jaGlsZHJlbil7XHJcbiAgICAgIGZpZWxkLmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb25maWcgPT4ge1xyXG4gICAgICAgIGxldCBjaGlsZCA9IHRoaXMuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gY2hpbGRDb25maWcuY2hpbGRGaWVsZClcclxuICAgICAgICB0aGlzLmRhdGFbY2hpbGQubmFtZV0gPSBmaWVsZC5vcHRpb25zLmZpbmQoeCA9PiB4W2ZpZWxkLm9wdGlvblZhbHVlID8/ICd2YWx1ZSddID09IHZhbHVlKVtjaGlsZENvbmZpZy5jaGlsZFZhbHVlRmllbGRdXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwbHlWYWx1ZUNhbGN1bGF0aW9ucygpO1xyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoaWxkT3B0aW9ucyhtYXN0ZXJGaWVsZE5hbWU6IHN0cmluZyl7XHJcblxyXG4gICAgbGV0IGNoaWxkID0gdGhpcy5jaGlsZEZpZWxkcy5maW5kKHggPT4geC5tYXN0ZXJGaWVsZCA9PSBtYXN0ZXJGaWVsZE5hbWUpXHJcbiAgICBpZiAoY2hpbGQgIT0gbnVsbCkge1xyXG5cclxuICAgICAgLy9jdXJyZW50IGlzIG1hc3RlclxyXG5cclxuXHJcbiAgICAgIGlmIChjaGlsZC5tYXN0ZXJPcHRpb25zKXtcclxuICAgICAgICBjaGlsZC5vcHRpb25zID0gY2hpbGQubWFzdGVyT3B0aW9ucy5maWx0ZXIoeCA9PiB4W2NoaWxkLm1hc3Rlck9wdGlvblZhbHVlID8/ICdtYXN0ZXJWYWx1ZSddID09IHRoaXMuZGF0YVttYXN0ZXJGaWVsZE5hbWVdKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hc3RlciBPcHRpb25zIG5vdCBmb3VuZFwiKVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ2hpbGRNYXN0ZXJPcHRpb25zKGNoaWxkOiBGaWVsZCkge1xyXG4gICAgaWYgKCFjaGlsZC5sb2FkQWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKGNoaWxkLmxvYWRBY3Rpb24pLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIGNoaWxkLm1hc3Rlck9wdGlvbnMgPSBhcGlSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2hpbGRPcHRpb25zKGNoaWxkLm1hc3RlckZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYnV0dG9uQ2xpY2tlZCgpe1xyXG5cclxuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCh0aGlzLmRhdGEpO1xyXG5cclxuICAgIGxldCBidXR0b24gPSB0aGlzLmNvbmZpZy5idXR0b247XHJcblxyXG4gICAgaWYgKCFidXR0b24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vdmFsaWRhdGlvblxyXG4gICAgbGV0IHJlc3AgPSBDb3JlLnZhbGlkYXRlT2JqZWN0KHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpLHRoaXMuZGF0YSk7XHJcbiAgICBpZiAocmVzcCAhPSAnJyl7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QocmVzcClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoIDwgMSAmJiB0aGlzLmZpbGVGaWVsZD8ucmVxdWlyZWQgJiYgdGhpcy5jb25maWcubW9kZSA9PSdjcmVhdGUnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgYXR0YWNoIGZpbGUocylcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKGJ1dHRvbi5jb25maXJtKXtcclxuXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShgJHtidXR0b24uY29uZmlybS5tZXNzYWdlfWApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NDYWxsKGJ1dHRvbilcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnByb2Nlc3NDYWxsKGJ1dHRvbilcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQ2FsbChidXR0b246IEJ1dHRvbil7XHJcblxyXG4gICAgaWYgKCFidXR0b24uYWN0aW9uKSByZXR1cm5cclxuXHJcbiAgICBsZXQgZGF0YU91dDtcclxuXHJcbiAgICBpZiAoYnV0dG9uLmFjdGlvbi5pc0Zvcm1EYXRhKXtcclxuXHJcbiAgICAgIGxldCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGB1cGxvYWRGaWxlJHtpfWAsIHRoaXMuZmlsZXNbaV0sIHRoaXMuZmlsZXNbaV0ubmFtZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcImRhdGFcIiwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcblxyXG5cclxuICAgICAgZGF0YU91dCA9IGZvcm1EYXRhXHJcbiAgICB9ZWxzZXtcclxuXHJcbiAgICAgIGRhdGFPdXQgPSB0aGlzLmRhdGFcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWVcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShidXR0b24uYWN0aW9uLCBkYXRhT3V0KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2VcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIGlmIChidXR0b24uYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGJ1dHRvbi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiU3VibWl0dGVkXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc2V0KSB7XHJcbiAgICAgICAgICBDb3JlLnJlc2V0T2JqZWN0KHRoaXMuZmllbGRzLCB0aGlzLmRhdGEpXHJcbiAgICAgICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICAgICAgICB0aGlzLmFwcGx5VmFsdWVDYWxjdWxhdGlvbnMoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0Zvcm0oKXtcclxuXHJcblxyXG5cclxuXHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCJcclxuXHJcblxyXG48ZGl2IGNsYXNzPVwidGluLWZvcm0tY29udGFpbmVyXCIgPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiW211bHRpQ29sdW1uID8gJ3Rpbi1ncmlkJyA6ICd0aW4tY29sJywgY29uZmlnLm5vdGVzQ29uZmlnID8gJ3dpZHRoLTc1JyA6ICd3aWR0aC0xMDAnXVwiIGNsYXNzPVwiZm9ybS1tYWluLWNvbnRlbnRcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWhhc0FjY2Vzc1wiIGNsYXNzPVwidGluLWNlbnRlclwiPlxyXG4gICAgICA8cD48ZW0+QWNjZXNzIFJlc3RyaWN0ZWQ8L2VtPjwvcD5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZC5zcGFuIHx8IGZpZWxkLnR5cGUgPT0nc2VjdGlvbicgfHwgZmllbGQudHlwZSA9PSdmaWxlJyB8fCBmaWVsZC50eXBlID09J2ZpbGUtdmlldycgID8gJ3NwYW4tY29sJyA6ICcnXCIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGdldFZpc2libGVGaWVsZHMoKVwiPlxyXG4gIFxyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIiBjbGFzcz1cImhpZ2hsaWdodFwiPlxyXG4gIFxyXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3Rpb24nXCIgY2xhc3M9XCJ0aXRsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oZmllbGQpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2VyO21hcmdpbi1yaWdodDogMTBweDtcIj57e2ZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHN9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpZWxkLmluZm9NZXNzYWdlXCIgKGNsaWNrKT1cIm9uSW5mb0NsaWNrKCRldmVudCwgZmllbGQuaW5mb01lc3NhZ2UpXCIgc3R5bGU9XCJjb2xvcjogc3RlZWxibHVlOyBmb250LXNpemU6IDE0cHg7XCI+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiaW5mby1pY29uLWJ1dHRvblwiICBtYXRUb29sdGlwPVwiSW5mb1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XHJcbiAgXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaGFzU2VjdGlvbkZpZWxkcyhmaWVsZC5uYW1lKVwiPnt7c2hvdWxkU2VjdGlvbkNvbGxhcHNlKGZpZWxkKSA/ICdleHBhbmRfbW9yZScgOiAnZXhwYW5kX2xlc3MnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbWItMlwiICpuZ0lmPVwiY29uZmlnLm1vZGUgIT0ndmlldydcIj5cclxuICAgICAgICAgICAgICA8c3BhLWF0dGFjaCBbbWVzc2FnZV09XCJmaWVsZC5hbGlhcyA/PyAnRHJhZyBhbmQgRHJvcCBmaWxlcyBoZXJlJ1wiIFsoZmlsZXMpXT1cImZpbGVzXCIgW2ZpbGVPcHRpb25zXT1cImZpZWxkLmZpbGVPcHRpb25zXCI+PC9zcGEtYXR0YWNoPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUtdmlldydcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbWItMlwiICpuZ0lmPVwiY29uZmlnLm1vZGUgJiYgY29uZmlnLm1vZGUgIT0nY3JlYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxzcGEtdmlld2VyIFtmaWxlQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIiBbcGF0aF09XCJmaWVsZC5wYXRoXCIgW2ZvbGRlck5hbWVdPVwiZGF0YVtmaWVsZC5rZXlGaWVsZF1cIiA+PC9zcGEtdmlld2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgICAgPHNwYS1odG1sICpuZ1N3aXRjaENhc2U9XCInaHRtbCdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyB8IGNhbWVsVG9Xb3Jkc1wiIFt2YWx1ZV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgW21heEhlaWdodF09XCJmaWVsZC5tYXhIZWlnaHRcIj48L3NwYS1odG1sPlxyXG4gIFxyXG4gICAgICAgICAgPGxhYmVsICpuZ1N3aXRjaENhc2U9XCInYmxhbmsnXCI+PC9sYWJlbD5cclxuICBcclxuICAgICAgICAgIDxsYWJlbCAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZSc6ZmllbGQuc2l6ZSA/PyAnMTRweCd9XCIgPnt7ZGF0YVtmaWVsZC5uYW1lXSA/PyBmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lfX0ge3tmaWVsZC5zdWZmaXggPz8gJyd9fTwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLWxhYmVsICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFt2YWx1ZV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbZm9ybWF0XT1cImZpZWxkLmZvcm1hdCA/PyAndGV4dCdcIiBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtzaXplXT1cImZpZWxkLnNpemVcIj48L3NwYS1sYWJlbD5cclxuICBcclxuICAgICAgICAgIDxzcGEtbnVtYmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKVwiIFtoaW50XT1cImZpZWxkLmhpbnRcIiBbaW5mb01lc3NhZ2VdPVwiZmllbGQuaW5mb01lc3NhZ2VcIiBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtbnVtYmVyPlxyXG4gIFxyXG4gICAgICAgICAgPHNwYS1tb25leSAqbmdTd2l0Y2hDYXNlPVwiJ21vbmV5J1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKVwiIFtoaW50XT1cImZpZWxkLmhpbnRcIiBbaW5mb01lc3NhZ2VdPVwiZmllbGQuaW5mb01lc3NhZ2VcIiBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtbW9uZXk+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLWNoZWNrICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgPjwvc3BhLWNoZWNrPlxyXG4gIFxyXG4gICAgICAgICAgPHNwYS1kYXRlICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cImZpZWxkLndpZHRoXCIgWyh2YWx1ZSldPVwiZGF0YVtmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoZmllbGQsIGRhdGFbZmllbGQubmFtZV0pXCIgW21pbl09XCJmaWVsZD8ubWluXCIgW21heF09XCJmaWVsZD8ubWF4XCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgPjwvc3BhLWRhdGU+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLWRhdGV0aW1lICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1kYXRldGltZT5cclxuICBcclxuICAgICAgICAgIDxzcGEtZW1haWwgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgWyh2YWx1ZSldPVwiZGF0YVtmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoZmllbGQsZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiICBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtZW1haWw+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLXRleHQgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIiBbZm9ybWF0XT1cIidwYXNzd29yZCdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cImZpZWxkLndpZHRoXCIgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZSA/PyAndmFsdWUnXCIgW3Jvd3NdPVwiZmllbGQucm93c1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLGRhdGFbZmllbGQubmFtZV0pXCIgW3JlcXVpcmVkXT1cInRlc3RSZXF1aXJlZChmaWVsZClcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIiBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImZpZWxkLmNsZWFyQ29udGVudFwiPjwvc3BhLXRleHQ+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHluYW1pY1NlbGVjdFRlbXBsYXRlOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBmaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXN0UmVhZE9ubHk6IHRlc3RSZWFkT25seS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlc3RSZXF1aXJlZDogdGVzdFJlcXVpcmVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q2hhbmdlZDogc2VsZWN0Q2hhbmdlZC5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICBcclxuICAgICAgICAgIDxzcGEtbXVsdGktc2VsZWN0ICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIiBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImZpZWxkLmNsZWFyQ29udGVudFwiIFtsb2FkQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIj5cclxuICAgICAgICAgIDwvc3BhLW11bHRpLXNlbGVjdD5cclxuICBcclxuICAgICAgICAgIDxzcGEtbXVsdGktdGV4dCAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpLXRleHQnXCIgW3N0cmljdF09XCJmaWVsZC5zdHJpY3RcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiIFtvcHRpb25EaXNwbGF5XT1cImZpZWxkLm9wdGlvbkRpc3BsYXkgPz8gJ25hbWUnXCIgW29wdGlvblZhbHVlXT1cImZpZWxkLm9wdGlvblZhbHVlID8/ICd2YWx1ZSdcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCxkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIiBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImZpZWxkLmNsZWFyQ29udGVudFwiIFtsb2FkQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIj48L3NwYS1tdWx0aS10ZXh0PlxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbXBvc2l0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvc2l0ZS1maWVsZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9zaXRlLWZpZWxkLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJmaWVsZCBvZiBnZXRWaXNpYmxlU3ViZmllbGRzKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzdWJmaWVsZC50eXBlXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiIFtuZ1N0eWxlXT1cInsnZm9udC1zaXplJzpmaWVsZC5zaXplID8/ICcxNHB4J31cIiA+e3tkYXRhW2ZpZWxkLm5hbWVdID8/IGZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWV9fSB7e2ZpZWxkLnN1ZmZpeCA/PyAnJ319PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhLW51bWJlciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIiBbZGlzcGxheV09XCJzdWJmaWVsZC5hbGlhcyA/PyBzdWJmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cInN1YmZpZWxkLndpZHRoXCIgWyh2YWx1ZSldPVwiZGF0YVtzdWJmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoc3ViZmllbGQsICRldmVudClcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKHN1YmZpZWxkKVwiIFttaW5dPVwic3ViZmllbGQubWluXCIgW21heF09XCJzdWJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW2hpbnRdPVwic3ViZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiICBbc3VmZml4XT1cInN1YmZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJzdWJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwic3ViZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtbnVtYmVyPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGEtbW9uZXkgKm5nU3dpdGNoQ2FzZT1cIidtb25leSdcIiBbZGlzcGxheV09XCJzdWJmaWVsZC5hbGlhcyA/PyBzdWJmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cInN1YmZpZWxkLndpZHRoXCIgWyh2YWx1ZSldPVwiZGF0YVtzdWJmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoc3ViZmllbGQsICRldmVudClcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKHN1YmZpZWxkKVwiIFttaW5dPVwic3ViZmllbGQubWluXCIgW21heF09XCJzdWJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW2hpbnRdPVwic3ViZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiIFtzdWZmaXhdPVwic3ViZmllbGQuc3VmZml4XCIgW2NvcHlDb250ZW50XT1cImZpZWxkLmNvcHlDb250ZW50XCIgW2NsZWFyQ29udGVudF09XCJmaWVsZC5jbGVhckNvbnRlbnRcIj48L3NwYS1tb25leT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhLWNoZWNrICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgW2Rpc3BsYXldPVwic3ViZmllbGQuYWxpYXMgPz8gc3ViZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbc3ViZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKHN1YmZpZWxkLCAkZXZlbnQpXCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZCkgfHwgdGVzdFJlYWRPbmx5KHN1YmZpZWxkKVwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1jaGVjaz5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhLWRhdGUgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiIFtkaXNwbGF5XT1cInN1YmZpZWxkLmFsaWFzID8/IHN1YmZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwic3ViZmllbGQud2lkdGhcIiBbKHZhbHVlKV09XCJkYXRhW3N1YmZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChzdWJmaWVsZCwgJGV2ZW50KVwiIFttaW5dPVwic3ViZmllbGQubWluXCIgW21heF09XCJzdWJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW2hpbnRdPVwic3ViZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1kYXRlPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGEtZGF0ZXRpbWUgKm5nU3dpdGNoQ2FzZT1cIidkYXRldGltZSdcIiBbZGlzcGxheV09XCJzdWJmaWVsZC5hbGlhcyA/PyBzdWJmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgWyh2YWx1ZSldPVwiZGF0YVtzdWJmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoc3ViZmllbGQsICRldmVudClcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW21pbl09XCJzdWJmaWVsZC5taW5cIiBbbWF4XT1cInN1YmZpZWxkLm1heFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1kYXRldGltZT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImR5bmFtaWNTZWxlY3RUZW1wbGF0ZTsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJlYWRPbmx5OiB0ZXN0UmVhZE9ubHkuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RDaGFuZ2VkOiBzZWxlY3RDaGFuZ2VkLmJpbmQodGhpcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYS10ZXh0ICpuZ1N3aXRjaERlZmF1bHQgW2Rpc3BsYXldPVwic3ViZmllbGQuYWxpYXMgPz8gc3ViZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFt3aWR0aF09XCJzdWJmaWVsZC53aWR0aFwiICBbb3B0aW9uc109XCJzdWJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwic3ViZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwic3ViZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFtyb3dzXT1cInN1YmZpZWxkLnJvd3NcIiBbKHZhbHVlKV09XCJkYXRhW3N1YmZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChzdWJmaWVsZCwgJGV2ZW50KVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoc3ViZmllbGQpXCIgW21pbl09XCJzdWJmaWVsZC5taW5cIiBbbWF4XT1cInN1YmZpZWxkLm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpIHx8IHRlc3RSZWFkT25seShzdWJmaWVsZClcIiBbaGludF09XCJzdWJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cInN1YmZpZWxkLmluZm9NZXNzYWdlXCIgIFtzdWZmaXhdPVwic3ViZmllbGQuc3VmZml4XCIgW2NvcHlDb250ZW50XT1cInN1YmZpZWxkLmNvcHlDb250ZW50XCIgW2NsZWFyQ29udGVudF09XCJzdWJmaWVsZC5jbGVhckNvbnRlbnRcIiBbbG9hZEFjdGlvbl09XCJzdWJmaWVsZC5sb2FkQWN0aW9uXCIgW3JlZ2V4XT1cInN1YmZpZWxkLnJlZ2V4XCI+PC9zcGEtdGV4dD5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICBcclxuICAgICAgICAgIDxzcGEtdGV4dCAqbmdTd2l0Y2hEZWZhdWx0IFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFtyb3dzXT1cImZpZWxkLnJvd3NcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCxkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiICBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCIgW2xvYWRBY3Rpb25dPVwiZmllbGQubG9hZEFjdGlvblwiIFtyZWdleF09XCJmaWVsZC5yZWdleFwiPjwvc3BhLXRleHQ+XHJcbiAgXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgPC9kaXY+XHJcbiAgXHJcbiAgXHJcbiAgICA8ZGl2IGNsYXNzPVwic3Bhbi1jb2wtY2VudGVyXCIgKm5nSWY9XCJjb25maWcuYnV0dG9uXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgIChjbGljayk9XCJidXR0b25DbGlja2VkKClcIiAgY2RrRm9jdXNJbml0aWFsPnt7YnV0dG9uRGlzcGxheX19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibm90ZXMtc2VjdGlvblwiICpuZ0lmPVwiY29uZmlnLm5vdGVzQ29uZmlnXCI+XHJcbiAgICA8c3BhLW5vdGVzXHJcbiAgICAgIFt0aXRsZV09XCJjb25maWcubm90ZXNDb25maWcudGl0bGUgfHwgJ05vdGVzJ1wiXHJcbiAgICAgIFtub3Rlc109XCJjb25maWcubm90ZXNDb25maWcubm90ZXMgfHwgW11cIlxyXG4gICAgICBbbG9hZEFjdGlvbl09XCJjb25maWcubm90ZXNDb25maWcubG9hZEFjdGlvblwiXHJcbiAgICAgIFtsb2FkSURGaWVsZF09XCJjb25maWcubm90ZXNDb25maWcubG9hZElERmllbGRcIlxyXG4gICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgW25hbWVGaWVsZF09XCJjb25maWcubm90ZXNDb25maWcubmFtZUZpZWxkIHx8ICdjcmVhdGVkQnlOYW1lJ1wiXHJcbiAgICAgIFtkYXRlRmllbGRdPVwiY29uZmlnLm5vdGVzQ29uZmlnLmRhdGVGaWVsZCB8fCAnY3JlYXRlZERhdGUnXCJcclxuICAgICAgW2NvbW1lbnRGaWVsZF09XCJjb25maWcubm90ZXNDb25maWcuY29tbWVudEZpZWxkIHx8ICdkZXRhaWxzJ1wiPlxyXG4gICAgPC9zcGEtbm90ZXM+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGluLXNwYS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRTFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUc3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVN2QyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFvQixjQUE4QixFQUFVLFdBQTJCLEVBQVUsV0FBd0I7UUFBckcsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFxRnpILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFJVCxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBTW5CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFwR2tGLENBQUM7SUFFOUgsUUFBUTtRQUVOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlC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QUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO1lBRXpCLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFFdkIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDekQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ3hDO2dCQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDL0I7YUFHRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztJQU1YLENBQUM7OzBHQTlWVSxhQUFhOzhGQUFiLGFBQWEscVNDZDFCLDZ6YUFvSkE7MkZEdElhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsVUFBVTs0SkF5RlcscUJBQXFCO3NCQUFuRCxZQUFZO3VCQUFDLGVBQWU7Z0JBTXBCLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgRmllbGQsIEJ1dHRvbiwgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL0NsYXNzZXMnO1xyXG5pbXBvcnQgeyBDb3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9UaW5Db3JlJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzcGEtZm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLCBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuaGFzQWNjZXNzID0gQ29yZS5oYXNGb3JtQWNjZXNzKHRoaXMuY29uZmlnLCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuaGFzQWNjZXNzKSB7XHJcbiAgICAgIC8vIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoJ0FjY2VzcyBkZW5pZWQnKTsgLy8gT3B0aW9uYWwgLSBub3RpZnkgdXNlclxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5maWVsZHMpe1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiUGxlYXNlIENvbmZpZ3VyZSBGb3JtIEZpZWxkc1wiKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBsZWFzZSBDb25maWd1cmUgRm9ybSBEYXRhXCIpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuY29uZmlnLmZpZWxkcztcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIEJlaGF2aW9yU3ViamVjdHMgZm9yIGZpZWxkcyB3aXRoIGxvYWRBY3Rpb25zXHJcbiAgICB0aGlzLmZpZWxkcz8uZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5sb2FkQWN0aW9uICYmICFmaWVsZC5vcHRpb25zU3ViamVjdCAmJiAhZmllbGQubWFzdGVyRmllbGQpIHtcclxuICAgICAgICBmaWVsZC5vcHRpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcclxuXHJcbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIG9wdGlvbnMgY2hhbmdlc1xyXG4gICAgICAgIGZpZWxkLm9wdGlvbnNTdWJqZWN0LnN1YnNjcmliZShuZXdPcHRpb25zID0+IHtcclxuICAgICAgICAgIGZpZWxkLm9wdGlvbnMgPSBuZXdPcHRpb25zO1xyXG5cclxuICAgICAgICAgIC8vIFVwZGF0ZSBjaGlsZCBmaWVsZHMgdGhhdCBkZXBlbmQgb24gdGhpcyBmaWVsZFxyXG4gICAgICAgICAgaWYgKHRoaXMuY2hpbGRGaWVsZHM/LnNvbWUoeCA9PiB4Lm1hc3RlckZpZWxkID09PSBmaWVsZC5uYW1lKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhmaWVsZC5uYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5tdWx0aUNvbHVtbil7XHJcbiAgICAgIHRoaXMubXVsdGlDb2x1bW4gPSB0aGlzLmNvbmZpZy5tdWx0aUNvbHVtblxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMubXVsdGlDb2x1bW4gPSB0aGlzLmZpZWxkcy5sZW5ndGggPiAyXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnPy5idXR0b24/LmRpc3BsYXkpe1xyXG4gICAgICB0aGlzLmJ1dHRvbkRpc3BsYXkgPSB0aGlzLmNvbmZpZy5idXR0b24uZGlzcGxheTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVGaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoeCA9PiB4LnR5cGUgPT0gJ2ZpbGUnKVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZz8uYnV0dG9uPy5hY3Rpb24gJiYgdGhpcy5maWxlRmllbGQgfHwgdGhpcy5jb25maWc/LmJ1dHRvbj8uYWN0aW9uLnVybC5pbmNsdWRlcyhcIi9mb3JtXCIpKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnLmJ1dHRvbi5hY3Rpb24uaXNGb3JtRGF0YSA9IHRydWU7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hpbGRGaWVsZHMgPSB0aGlzLmZpZWxkcy5maWx0ZXIoeCA9PiB4Lm1hc3RlckZpZWxkKVxyXG5cclxuXHJcbiAgICB0aGlzLmNoaWxkRmllbGRzLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICBsZXQgbWFzdGVyID0gdGhpcy5maWVsZHMuZmluZCh4ID0+IHgubmFtZSA9PSBjaGlsZC5tYXN0ZXJGaWVsZClcclxuICAgICAgaWYgKGNoaWxkLmxvYWRBY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZE1hc3Rlck9wdGlvbnMoY2hpbGQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhtYXN0ZXIubmFtZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgaWYgKGZpZWxkLmxvYWRBY3Rpb24pIHtcclxuICAgICAgICB0aGlzLmxvYWRDaGlsZE1hc3Rlck9wdGlvbnMoZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVDb21wb3NpdGVGaWVsZHMoKTtcclxuXHJcblxyXG4gICAgdGhpcy5hcHBseVZhbHVlQ2FsY3VsYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkKCdkeW5hbWljU2VsZWN0JykgZHluYW1pY1NlbGVjdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBoYXNBY2Nlc3MgPSBmYWxzZTtcclxuICBmaWxlTmFtZXNcclxuICBmaWxlRmllbGQ6IEZpZWxkO1xyXG4gIGZpbGVWaWV3RmllbGQ6IEZpZWxkO1xyXG4gIEBJbnB1dCgpIGZpbGVzOiBhbnlbXSA9IFtdO1xyXG4gIGZpZWxkczogRmllbGRbXTtcclxuICBidXR0b25EaXNwbGF5ID0gXCJTdWJtaXRcIjtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtdWx0aUNvbHVtbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjaGlsZEZpZWxkczogRmllbGRbXTtcclxuXHJcbiAgQElucHV0KCkgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogRm9ybUNvbmZpZztcclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBpbml0aWFsaXplQ29tcG9zaXRlRmllbGRzKCkge1xyXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnY29tcG9zaXRlJyAmJiBmaWVsZC5zdWJmaWVsZHMpIHtcclxuICAgICAgICBmaWVsZC5zdWJmaWVsZHMuZm9yRWFjaChzdWJmaWVsZCA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW3N1YmZpZWxkLm5hbWVdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhW3N1YmZpZWxkLm5hbWVdID0gQ29yZS5nZXRJbml0aWFsVmFsdWUoc3ViZmllbGQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlWYWx1ZUNhbGN1bGF0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy5kYXRhIHx8ICF0aGlzLmZpZWxkcykgcmV0dXJuO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgdmlzaWJsZSBmaWVsZHMgdGhhdCBoYXZlIHZhbHVlQ2FsY3VsYXRpb24gZnVuY3Rpb25zXHJcbiAgICBjb25zdCBjYWxjdWxhdGVkRmllbGRzID0gdGhpcy5nZXRWaXNpYmxlRmllbGRzKClcclxuICAgICAgLmZpbHRlcihmaWVsZCA9PiB0eXBlb2YgZmllbGQudmFsdWVDYWxjdWxhdGlvbiA9PT0gJ2Z1bmN0aW9uJyk7XHJcbiAgICBcclxuICAgIGlmIChjYWxjdWxhdGVkRmllbGRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgXHJcbiAgICAvLyBBcHBseSBjYWxjdWxhdGlvbnMgdG8gZWFjaCBmaWVsZFxyXG4gICAgY2FsY3VsYXRlZEZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBjYWxjdWxhdGVkVmFsdWUgPSBmaWVsZC52YWx1ZUNhbGN1bGF0aW9uKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgaWYgKGNhbGN1bGF0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFbZmllbGQubmFtZV0gPSBjYWxjdWxhdGVkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGNhbGN1bGF0aW5nIHZhbHVlIGZvciBmaWVsZCAke2ZpZWxkLm5hbWV9OmAsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRWaXNpYmxlU3ViZmllbGRzKGZpZWxkIDogRmllbGQpe1xyXG4gICAgcmV0dXJuIENvcmUuZ2V0VmlzaWJsZVN1YmZpZWxkcyh0aGlzLmNvbmZpZywgdGhpcy5kYXRhLCBmaWVsZCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSk7XHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBnZXRWaXNpYmxlRmllbGRzKCkge1xyXG4gICAgbGV0IHZpc2libGVGaWVsZHMgPSB0aGlzLmZpZWxkcz8uZmlsdGVyKHggPT4gQ29yZS50ZXN0VmlzaWJsZSh0aGlzLmNvbmZpZywgdGhpcy5kYXRhLCB4LCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKSkgPz8gW107XHJcblxyXG4gICAgLy8gRmlsdGVyIG91dCBmaWVsZHMgdW5kZXIgY29sbGFwc2VkIHNlY3Rpb25zXHJcbiAgICByZXR1cm4gdmlzaWJsZUZpZWxkcy5maWx0ZXIoZmllbGQgPT4ge1xyXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlY3Rpb24nKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgaWYgKGZpZWxkLnNlY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBzZWN0aW9uRmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKGYgPT4gZi50eXBlID09PSAnc2VjdGlvbicgJiYgZi5uYW1lID09PSBmaWVsZC5zZWN0aW9uKTtcclxuICAgICAgICByZXR1cm4gIXNlY3Rpb25GaWVsZD8uY29sbGFwc2VkO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0ZXN0UmVhZE9ubHkoZmllbGQ6IEZpZWxkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQ29yZS50ZXN0UmVhZE9ubHkodGhpcy5jb25maWcsIHRoaXMuZGF0YSwgZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgdGVzdFJlcXVpcmVkKGZpZWxkOiBGaWVsZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIENvcmUudGVzdFJlcXVpcmVkKHRoaXMuY29uZmlnLCB0aGlzLmRhdGEsIGZpZWxkKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNlY3Rpb24oZmllbGQ6IEZpZWxkKSB7XHJcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlY3Rpb24nKSB7XHJcbiAgICAgIGZpZWxkLmNvbGxhcHNlZCA9ICFmaWVsZC5jb2xsYXBzZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYXNTZWN0aW9uRmllbGRzKHNlY3Rpb25OYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkcz8uc29tZShmaWVsZCA9PlxyXG4gICAgICBmaWVsZC5zZWN0aW9uID09PSBzZWN0aW9uTmFtZSAmJlxyXG4gICAgICBDb3JlLnRlc3RWaXNpYmxlKHRoaXMuY29uZmlnLCB0aGlzLmRhdGEsIGZpZWxkLCB0aGlzLmF1dGhTZXJ2aWNlLmN1cnJlbnRSb2xlU291cmNlLnZhbHVlKVxyXG4gICAgKSA/PyBmYWxzZTtcclxuICB9XHJcblxyXG4gIHNob3VsZFNlY3Rpb25Db2xsYXBzZShmaWVsZDogRmllbGQpOiBib29sZWFuIHtcclxuICAgIGlmIChmaWVsZC5jb2xsYXBzZWRDb25kaXRpb24pIHtcclxuICAgICAgcmV0dXJuIGZpZWxkLmNvbGxhcHNlZENvbmRpdGlvbih0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpZWxkLmNvbGxhcHNlZCA/PyBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBvbkluZm9DbGljayhldmVudDogTW91c2VFdmVudCwgaW5mb01lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oaW5mb01lc3NhZ2UpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdENoYW5nZWQoZmllbGQ6IEZpZWxkKXtcclxuICAgIHRoaXMuaW5wdXRDaGFuZ2VkKGZpZWxkLCB0aGlzLmRhdGFbZmllbGQubmFtZV0gKVxyXG4gICAgXHJcbiAgICBpZiAoZmllbGQub25TZWxlY3RDaGFuZ2UpIHtcclxuICAgICAgZmllbGQub25TZWxlY3RDaGFuZ2UodGhpcy5kYXRhW2ZpZWxkLm5hbWVdLCB0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBpbnB1dENoYW5nZWQoZmllbGQgOiBGaWVsZCwgdmFsdWUpe1xyXG5cclxuICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh7IGZpZWxkOiBmaWVsZCwgdmFsdWU6IHZhbHVlfSlcclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNoaWxkT3B0aW9ucyhmaWVsZC5uYW1lKVxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcubW9kZSA9PSAnY3JlYXRlJyAmJiBmaWVsZC5jaGlsZHJlbil7XHJcbiAgICAgIGZpZWxkLmNoaWxkcmVuLmZvckVhY2goY2hpbGRDb25maWcgPT4ge1xyXG4gICAgICAgIGxldCBjaGlsZCA9IHRoaXMuZmllbGRzLmZpbmQoeCA9PiB4Lm5hbWUgPT0gY2hpbGRDb25maWcuY2hpbGRGaWVsZClcclxuICAgICAgICB0aGlzLmRhdGFbY2hpbGQubmFtZV0gPSBmaWVsZC5vcHRpb25zLmZpbmQoeCA9PiB4W2ZpZWxkLm9wdGlvblZhbHVlID8/ICd2YWx1ZSddID09IHZhbHVlKVtjaGlsZENvbmZpZy5jaGlsZFZhbHVlRmllbGRdXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwbHlWYWx1ZUNhbGN1bGF0aW9ucygpO1xyXG5cclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoaWxkT3B0aW9ucyhtYXN0ZXJGaWVsZE5hbWU6IHN0cmluZyl7XHJcblxyXG4gICAgbGV0IGNoaWxkID0gdGhpcy5jaGlsZEZpZWxkcy5maW5kKHggPT4geC5tYXN0ZXJGaWVsZCA9PSBtYXN0ZXJGaWVsZE5hbWUpXHJcbiAgICBpZiAoY2hpbGQgIT0gbnVsbCkge1xyXG5cclxuICAgICAgLy9jdXJyZW50IGlzIG1hc3RlclxyXG5cclxuXHJcbiAgICAgIGlmIChjaGlsZC5tYXN0ZXJPcHRpb25zKXtcclxuICAgICAgICBjaGlsZC5vcHRpb25zID0gY2hpbGQubWFzdGVyT3B0aW9ucy5maWx0ZXIoeCA9PiB4W2NoaWxkLm1hc3Rlck9wdGlvblZhbHVlID8/ICdtYXN0ZXJWYWx1ZSddID09IHRoaXMuZGF0YVttYXN0ZXJGaWVsZE5hbWVdKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1hc3RlciBPcHRpb25zIG5vdCBmb3VuZFwiKVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQ2hpbGRNYXN0ZXJPcHRpb25zKGNoaWxkOiBGaWVsZCkge1xyXG4gICAgaWYgKCFjaGlsZC5sb2FkQWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKGNoaWxkLmxvYWRBY3Rpb24pLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIGNoaWxkLm1hc3Rlck9wdGlvbnMgPSBhcGlSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2hpbGRPcHRpb25zKGNoaWxkLm1hc3RlckZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYnV0dG9uQ2xpY2tlZCgpe1xyXG5cclxuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdCh0aGlzLmRhdGEpO1xyXG5cclxuICAgIGxldCBidXR0b24gPSB0aGlzLmNvbmZpZy5idXR0b247XHJcblxyXG4gICAgaWYgKCFidXR0b24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vdmFsaWRhdGlvblxyXG4gICAgbGV0IHJlc3AgPSBDb3JlLnZhbGlkYXRlT2JqZWN0KHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpLHRoaXMuZGF0YSk7XHJcbiAgICBpZiAocmVzcCAhPSAnJyl7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QocmVzcClcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoIDwgMSAmJiB0aGlzLmZpbGVGaWVsZD8ucmVxdWlyZWQgJiYgdGhpcy5jb25maWcubW9kZSA9PSdjcmVhdGUnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgYXR0YWNoIGZpbGUocylcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKGJ1dHRvbi5jb25maXJtKXtcclxuXHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShgJHtidXR0b24uY29uZmlybS5tZXNzYWdlfWApLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NDYWxsKGJ1dHRvbilcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnByb2Nlc3NDYWxsKGJ1dHRvbilcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQ2FsbChidXR0b246IEJ1dHRvbil7XHJcblxyXG4gICAgaWYgKCFidXR0b24uYWN0aW9uKSByZXR1cm5cclxuXHJcbiAgICBsZXQgZGF0YU91dDtcclxuXHJcbiAgICBpZiAoYnV0dG9uLmFjdGlvbi5pc0Zvcm1EYXRhKXtcclxuXHJcbiAgICAgIGxldCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGB1cGxvYWRGaWxlJHtpfWAsIHRoaXMuZmlsZXNbaV0sIHRoaXMuZmlsZXNbaV0ubmFtZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcImRhdGFcIiwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhKSk7XHJcblxyXG5cclxuICAgICAgZGF0YU91dCA9IGZvcm1EYXRhXHJcbiAgICB9ZWxzZXtcclxuXHJcbiAgICAgIGRhdGFPdXQgPSB0aGlzLmRhdGFcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IHRydWVcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShidXR0b24uYWN0aW9uLCBkYXRhT3V0KS5zdWJzY3JpYmUoKGFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2VcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgIGlmIChidXR0b24uYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGJ1dHRvbi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiU3VibWl0dGVkXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc2V0KSB7XHJcbiAgICAgICAgICBDb3JlLnJlc2V0T2JqZWN0KHRoaXMuZmllbGRzLCB0aGlzLmRhdGEpXHJcbiAgICAgICAgICB0aGlzLmZpbGVzID0gW107XHJcbiAgICAgICAgICB0aGlzLmFwcGx5VmFsdWVDYWxjdWxhdGlvbnMoKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc0Zvcm0oKXtcclxuXHJcblxyXG5cclxuXHJcblxyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iLCJcclxuXHJcblxyXG48ZGl2IGNsYXNzPVwidGluLWZvcm0tY29udGFpbmVyXCIgPlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwiW211bHRpQ29sdW1uID8gJ3Rpbi1ncmlkJyA6ICd0aW4tY29sJywgY29uZmlnLm5vdGVzQ29uZmlnID8gJ3dpZHRoLTc1JyA6ICd3aWR0aC0xMDAnXVwiIGNsYXNzPVwiZm9ybS1tYWluLWNvbnRlbnRcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWhhc0FjY2Vzc1wiIGNsYXNzPVwidGluLWNlbnRlclwiPlxyXG4gICAgICA8cD48ZW0+QWNjZXNzIFJlc3RyaWN0ZWQ8L2VtPjwvcD5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJmaWVsZC5zcGFuIHx8IGZpZWxkLnR5cGUgPT0nc2VjdGlvbicgfHwgZmllbGQudHlwZSA9PSdmaWxlJyB8fCBmaWVsZC50eXBlID09J2ZpbGUtdmlldycgID8gJ3NwYW4tY29sJyA6ICcnXCIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGdldFZpc2libGVGaWVsZHMoKVwiPlxyXG4gIFxyXG4gICAgICA8bmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIiBjbGFzcz1cImhpZ2hsaWdodFwiPlxyXG4gIFxyXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3Rpb24nXCIgY2xhc3M9XCJ0aXRsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oZmllbGQpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZTogbGFyZ2VyO21hcmdpbi1yaWdodDogMTBweDtcIj57e2ZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHN9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpZWxkLmluZm9NZXNzYWdlXCIgKGNsaWNrKT1cIm9uSW5mb0NsaWNrKCRldmVudCwgZmllbGQuaW5mb01lc3NhZ2UpXCIgc3R5bGU9XCJjb2xvcjogc3RlZWxibHVlOyBmb250LXNpemU6IDE0cHg7XCI+aW5mbzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiaW5mby1pY29uLWJ1dHRvblwiICBtYXRUb29sdGlwPVwiSW5mb1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XHJcbiAgXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaGFzU2VjdGlvbkZpZWxkcyhmaWVsZC5uYW1lKVwiPnt7c2hvdWxkU2VjdGlvbkNvbGxhcHNlKGZpZWxkKSA/ICdleHBhbmRfbW9yZScgOiAnZXhwYW5kX2xlc3MnfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmlsZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbWItMlwiICpuZ0lmPVwiY29uZmlnLm1vZGUgIT0ndmlldydcIj5cclxuICAgICAgICAgICAgICA8c3BhLWF0dGFjaCBbbWVzc2FnZV09XCJmaWVsZC5hbGlhcyA/PyAnRHJhZyBhbmQgRHJvcCBmaWxlcyBoZXJlJ1wiIFsoZmlsZXMpXT1cImZpbGVzXCIgW2ZpbGVPcHRpb25zXT1cImZpZWxkLmZpbGVPcHRpb25zXCI+PC9zcGEtYXR0YWNoPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUtdmlldydcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgbWItMlwiICpuZ0lmPVwiY29uZmlnLm1vZGUgJiYgY29uZmlnLm1vZGUgIT0nY3JlYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxzcGEtdmlld2VyIFtmaWxlQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIiBbcGF0aF09XCJmaWVsZC5wYXRoXCIgW2ZvbGRlck5hbWVdPVwiZGF0YVtmaWVsZC5rZXlGaWVsZF1cIiA+PC9zcGEtdmlld2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgICAgICAgPHNwYS1odG1sICpuZ1N3aXRjaENhc2U9XCInaHRtbCdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyB8IGNhbWVsVG9Xb3Jkc1wiIFt2YWx1ZV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgW21heEhlaWdodF09XCJmaWVsZC5tYXhIZWlnaHRcIj48L3NwYS1odG1sPlxyXG4gIFxyXG4gICAgICAgICAgPGxhYmVsICpuZ1N3aXRjaENhc2U9XCInYmxhbmsnXCI+PC9sYWJlbD5cclxuICBcclxuICAgICAgICAgIDxsYWJlbCAqbmdTd2l0Y2hDYXNlPVwiJ3N0cmluZydcIiBbbmdTdHlsZV09XCJ7J2ZvbnQtc2l6ZSc6ZmllbGQuc2l6ZSA/PyAnMTRweCd9XCIgPnt7ZGF0YVtmaWVsZC5uYW1lXSA/PyBmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lfX0ge3tmaWVsZC5zdWZmaXggPz8gJyd9fTwvbGFiZWw+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLWxhYmVsICpuZ1N3aXRjaENhc2U9XCInbGFiZWwnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFt2YWx1ZV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbZm9ybWF0XT1cImZpZWxkLmZvcm1hdCA/PyAndGV4dCdcIiBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtzaXplXT1cImZpZWxkLnNpemVcIj48L3NwYS1sYWJlbD5cclxuICBcclxuICAgICAgICAgIDxzcGEtbnVtYmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKVwiIFtoaW50XT1cImZpZWxkLmhpbnRcIiBbaW5mb01lc3NhZ2VdPVwiZmllbGQuaW5mb01lc3NhZ2VcIiBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtbnVtYmVyPlxyXG4gIFxyXG4gICAgICAgICAgPHNwYS1tb25leSAqbmdTd2l0Y2hDYXNlPVwiJ21vbmV5J1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCwgZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKVwiIFtoaW50XT1cImZpZWxkLmhpbnRcIiBbaW5mb01lc3NhZ2VdPVwiZmllbGQuaW5mb01lc3NhZ2VcIiBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtbW9uZXk+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLWNoZWNrICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgPjwvc3BhLWNoZWNrPlxyXG4gIFxyXG4gICAgICAgICAgPHNwYS1kYXRlICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cImZpZWxkLndpZHRoXCIgWyh2YWx1ZSldPVwiZGF0YVtmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoZmllbGQsIGRhdGFbZmllbGQubmFtZV0pXCIgW21pbl09XCJmaWVsZD8ubWluXCIgW21heF09XCJmaWVsZD8ubWF4XCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgPjwvc3BhLWRhdGU+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLWRhdGV0aW1lICpuZ1N3aXRjaENhc2U9XCInZGF0ZXRpbWUnXCIgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1kYXRldGltZT5cclxuICBcclxuICAgICAgICAgIDxzcGEtZW1haWwgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgWyh2YWx1ZSldPVwiZGF0YVtmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoZmllbGQsZGF0YVtmaWVsZC5uYW1lXSlcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiICBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtZW1haWw+XHJcbiAgXHJcbiAgICAgICAgICA8c3BhLXRleHQgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIiBbZm9ybWF0XT1cIidwYXNzd29yZCdcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cImZpZWxkLndpZHRoXCIgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZSA/PyAndmFsdWUnXCIgW3Jvd3NdPVwiZmllbGQucm93c1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLGRhdGFbZmllbGQubmFtZV0pXCIgW3JlcXVpcmVkXT1cInRlc3RSZXF1aXJlZChmaWVsZClcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIiBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImZpZWxkLmNsZWFyQ29udGVudFwiPjwvc3BhLXRleHQ+XHJcbiAgXHJcbiAgXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHluYW1pY1NlbGVjdFRlbXBsYXRlOyBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBmaWVsZCxcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXN0UmVhZE9ubHk6IHRlc3RSZWFkT25seS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlc3RSZXF1aXJlZDogdGVzdFJlcXVpcmVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q2hhbmdlZDogc2VsZWN0Q2hhbmdlZC5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICBcclxuICAgICAgICAgIDxzcGEtbXVsdGktc2VsZWN0ICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFsodmFsdWUpXT1cImRhdGFbZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKGZpZWxkLCBkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIiBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImZpZWxkLmNsZWFyQ29udGVudFwiIFtsb2FkQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIj5cclxuICAgICAgICAgIDwvc3BhLW11bHRpLXNlbGVjdD5cclxuICBcclxuICAgICAgICAgIDxzcGEtbXVsdGktdGV4dCAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpLXRleHQnXCIgW3N0cmljdF09XCJmaWVsZC5zdHJpY3RcIiBbZGlzcGxheV09XCJmaWVsZC5hbGlhcyA/PyBmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW29wdGlvbnNdPVwiZmllbGQub3B0aW9uc1wiIFtvcHRpb25EaXNwbGF5XT1cImZpZWxkLm9wdGlvbkRpc3BsYXkgPz8gJ25hbWUnXCIgW29wdGlvblZhbHVlXT1cImZpZWxkLm9wdGlvblZhbHVlID8/ICd2YWx1ZSdcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCxkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIiBbaGludF09XCJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cImZpZWxkLmluZm9NZXNzYWdlXCIgW3N1ZmZpeF09XCJmaWVsZC5zdWZmaXhcIiBbY29weUNvbnRlbnRdPVwiZmllbGQuY29weUNvbnRlbnRcIiBbY2xlYXJDb250ZW50XT1cImZpZWxkLmNsZWFyQ29udGVudFwiIFtsb2FkQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIj48L3NwYS1tdWx0aS10ZXh0PlxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbXBvc2l0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBvc2l0ZS1maWVsZC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9zaXRlLWZpZWxkLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJmaWVsZCBvZiBnZXRWaXNpYmxlU3ViZmllbGRzKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzdWJmaWVsZC50eXBlXCI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ1N3aXRjaENhc2U9XCInc3RyaW5nJ1wiIFtuZ1N0eWxlXT1cInsnZm9udC1zaXplJzpmaWVsZC5zaXplID8/ICcxNHB4J31cIiA+e3tkYXRhW2ZpZWxkLm5hbWVdID8/IGZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWV9fSB7e2ZpZWxkLnN1ZmZpeCA/PyAnJ319PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhLW51bWJlciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIiBbZGlzcGxheV09XCJzdWJmaWVsZC5hbGlhcyA/PyBzdWJmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cInN1YmZpZWxkLndpZHRoXCIgWyh2YWx1ZSldPVwiZGF0YVtzdWJmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoc3ViZmllbGQsICRldmVudClcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKHN1YmZpZWxkKVwiIFttaW5dPVwic3ViZmllbGQubWluXCIgW21heF09XCJzdWJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW2hpbnRdPVwic3ViZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiICBbc3VmZml4XT1cInN1YmZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJzdWJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwic3ViZmllbGQuY2xlYXJDb250ZW50XCI+PC9zcGEtbnVtYmVyPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGEtbW9uZXkgKm5nU3dpdGNoQ2FzZT1cIidtb25leSdcIiBbZGlzcGxheV09XCJzdWJmaWVsZC5hbGlhcyA/PyBzdWJmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgW3dpZHRoXT1cInN1YmZpZWxkLndpZHRoXCIgWyh2YWx1ZSldPVwiZGF0YVtzdWJmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoc3ViZmllbGQsICRldmVudClcIiBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKHN1YmZpZWxkKVwiIFttaW5dPVwic3ViZmllbGQubWluXCIgW21heF09XCJzdWJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW2hpbnRdPVwic3ViZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiIFtzdWZmaXhdPVwic3ViZmllbGQuc3VmZml4XCIgW2NvcHlDb250ZW50XT1cImZpZWxkLmNvcHlDb250ZW50XCIgW2NsZWFyQ29udGVudF09XCJmaWVsZC5jbGVhckNvbnRlbnRcIj48L3NwYS1tb25leT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhLWNoZWNrICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCIgW2Rpc3BsYXldPVwic3ViZmllbGQuYWxpYXMgPz8gc3ViZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFsodmFsdWUpXT1cImRhdGFbc3ViZmllbGQubmFtZV1cIiAodmFsdWVDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKHN1YmZpZWxkLCAkZXZlbnQpXCIgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZCkgfHwgdGVzdFJlYWRPbmx5KHN1YmZpZWxkKVwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1jaGVjaz5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8c3BhLWRhdGUgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiIFtkaXNwbGF5XT1cInN1YmZpZWxkLmFsaWFzID8/IHN1YmZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwic3ViZmllbGQud2lkdGhcIiBbKHZhbHVlKV09XCJkYXRhW3N1YmZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChzdWJmaWVsZCwgJGV2ZW50KVwiIFttaW5dPVwic3ViZmllbGQubWluXCIgW21heF09XCJzdWJmaWVsZC5tYXhcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW2hpbnRdPVwic3ViZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1kYXRlPlxyXG4gIFxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGEtZGF0ZXRpbWUgKm5nU3dpdGNoQ2FzZT1cIidkYXRldGltZSdcIiBbZGlzcGxheV09XCJzdWJmaWVsZC5hbGlhcyA/PyBzdWJmaWVsZC5uYW1lIHwgY2FtZWxUb1dvcmRzXCIgWyh2YWx1ZSldPVwiZGF0YVtzdWJmaWVsZC5uYW1lXVwiICh2YWx1ZUNoYW5nZSk9XCJpbnB1dENoYW5nZWQoc3ViZmllbGQsICRldmVudClcIiBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKSB8fCB0ZXN0UmVhZE9ubHkoc3ViZmllbGQpXCIgW21pbl09XCJzdWJmaWVsZC5taW5cIiBbbWF4XT1cInN1YmZpZWxkLm1heFwiIFtpbmZvTWVzc2FnZV09XCJzdWJmaWVsZC5pbmZvTWVzc2FnZVwiID48L3NwYS1kYXRldGltZT5cclxuICBcclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImR5bmFtaWNTZWxlY3RUZW1wbGF0ZTsgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFJlYWRPbmx5OiB0ZXN0UmVhZE9ubHkuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RDaGFuZ2VkOiBzZWxlY3RDaGFuZ2VkLmJpbmQodGhpcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYS10ZXh0ICpuZ1N3aXRjaERlZmF1bHQgW2Rpc3BsYXldPVwic3ViZmllbGQuYWxpYXMgPz8gc3ViZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiIFt3aWR0aF09XCJzdWJmaWVsZC53aWR0aFwiICBbb3B0aW9uc109XCJzdWJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwic3ViZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwic3ViZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFtyb3dzXT1cInN1YmZpZWxkLnJvd3NcIiBbKHZhbHVlKV09XCJkYXRhW3N1YmZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChzdWJmaWVsZCwgJGV2ZW50KVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoc3ViZmllbGQpXCIgW21pbl09XCJzdWJmaWVsZC5taW5cIiBbbWF4XT1cInN1YmZpZWxkLm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpIHx8IHRlc3RSZWFkT25seShzdWJmaWVsZClcIiBbaGludF09XCJzdWJmaWVsZC5oaW50XCIgW2luZm9NZXNzYWdlXT1cInN1YmZpZWxkLmluZm9NZXNzYWdlXCIgIFtzdWZmaXhdPVwic3ViZmllbGQuc3VmZml4XCIgW2NvcHlDb250ZW50XT1cInN1YmZpZWxkLmNvcHlDb250ZW50XCIgW2NsZWFyQ29udGVudF09XCJzdWJmaWVsZC5jbGVhckNvbnRlbnRcIiBbbG9hZEFjdGlvbl09XCJzdWJmaWVsZC5sb2FkQWN0aW9uXCIgW3JlZ2V4XT1cInN1YmZpZWxkLnJlZ2V4XCI+PC9zcGEtdGV4dD5cclxuICBcclxuICBcclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICBcclxuICBcclxuICAgICAgICAgIDxzcGEtdGV4dCAqbmdTd2l0Y2hEZWZhdWx0IFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIiBbd2lkdGhdPVwiZmllbGQud2lkdGhcIiBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCIgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIiBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiIFtyb3dzXT1cImZpZWxkLnJvd3NcIiBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCIgKHZhbHVlQ2hhbmdlKT1cImlucHV0Q2hhbmdlZChmaWVsZCxkYXRhW2ZpZWxkLm5hbWVdKVwiIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFtyZWFkb25seV09XCJ0ZXN0UmVhZE9ubHkoZmllbGQpXCIgW2hpbnRdPVwiZmllbGQuaGludFwiIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiICBbc3VmZml4XT1cImZpZWxkLnN1ZmZpeFwiIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiIFtjbGVhckNvbnRlbnRdPVwiZmllbGQuY2xlYXJDb250ZW50XCIgW2xvYWRBY3Rpb25dPVwiZmllbGQubG9hZEFjdGlvblwiIFtyZWdleF09XCJmaWVsZC5yZWdleFwiPjwvc3BhLXRleHQ+XHJcbiAgXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgXHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gIFxyXG4gICAgPC9kaXY+XHJcbiAgXHJcbiAgXHJcbiAgICA8ZGl2IGNsYXNzPVwic3Bhbi1jb2wtY2VudGVyXCIgKm5nSWY9XCJjb25maWcuYnV0dG9uXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgIChjbGljayk9XCJidXR0b25DbGlja2VkKClcIiAgY2RrRm9jdXNJbml0aWFsPnt7YnV0dG9uRGlzcGxheX19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICBcclxuICBcclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibm90ZXMtc2VjdGlvblwiICpuZ0lmPVwiY29uZmlnLm5vdGVzQ29uZmlnXCI+XHJcbiAgICA8c3BhLW5vdGVzXHJcbiAgICAgIFt0aXRsZV09XCJjb25maWcubm90ZXNDb25maWcudGl0bGUgfHwgJ05vdGVzJ1wiXHJcbiAgICAgIFtub3Rlc109XCJjb25maWcubm90ZXNDb25maWcubm90ZXMgfHwgW11cIlxyXG4gICAgICBbbG9hZEFjdGlvbl09XCJjb25maWcubm90ZXNDb25maWcubG9hZEFjdGlvblwiXHJcbiAgICAgIFtsb2FkSURGaWVsZF09XCJjb25maWcubm90ZXNDb25maWcubG9hZElERmllbGRcIlxyXG4gICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgW25hbWVGaWVsZF09XCJjb25maWcubm90ZXNDb25maWcubmFtZUZpZWxkIHx8ICdjcmVhdGVkQnlOYW1lJ1wiXHJcbiAgICAgIFtkYXRlRmllbGRdPVwiY29uZmlnLm5vdGVzQ29uZmlnLmRhdGVGaWVsZCB8fCAnY3JlYXRlZERhdGUnXCJcclxuICAgICAgW2NvbW1lbnRGaWVsZF09XCJjb25maWcubm90ZXNDb25maWcuY29tbWVudEZpZWxkIHx8ICdkZXRhaWxzJ1wiPlxyXG4gICAgPC9zcGEtbm90ZXM+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuIl19
|
|
@@ -265,7 +265,9 @@ export class DetailsDialog {
|
|
|
265
265
|
}
|
|
266
266
|
processButtonAction(button) {
|
|
267
267
|
if (!button.action) {
|
|
268
|
-
|
|
268
|
+
if (!button.keepOpen) {
|
|
269
|
+
this.dialogRef.close({ message: 'emit', data: this.details });
|
|
270
|
+
}
|
|
269
271
|
return;
|
|
270
272
|
}
|
|
271
273
|
if (button.skipValidation || this.validateForm()) {
|
|
@@ -401,4 +403,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
401
403
|
type: Output
|
|
402
404
|
}] } });
|
|
403
405
|
;
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsc0RpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9kZXRhaWxzRGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2RldGFpbHNEaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBSXpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsT0FBTyxFQUF3QixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWS9ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLGtCQUFzQyxFQUFTLGFBQTRCLEVBQVEsV0FBMkIsRUFBUyxjQUE4QixFQUMvSixTQUFzQyxFQUFrQyxhQUFrQyxFQUFVLGFBQTRCLEVBQ2hKLGFBQTRCLEVBQVUsV0FBd0IsRUFBUyxrQkFBc0M7UUFGbkcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVEsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9KLGNBQVMsR0FBVCxTQUFTLENBQTZCO1FBQWtDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ2hKLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsZ0JBQVcs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SyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDbEU7YUFBSTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDOzswR0FyY1UsYUFBYSx5S0FHa0MsZUFBZTs4RkFIOUQsYUFBYSxrR0NyQjFCLHE0TkFpSkE7MkZENUhhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsbUJBQW1COzswQkFPc0IsTUFBTTsyQkFBQyxlQUFlOytKQXVGL0QsV0FBVztzQkFBcEIsTUFBTTs7QUE2V1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgRmllbGQsIFRhYmxlQ29uZmlnLCBCdXR0b24sIERldGFpbHNEaWFsb2dDb25maWcsIEFjdGlvbiwgQXBpUmVzcG9uc2UsIFN0ZXBDb25maWcsIFN0YXR1c0NvbmZpZywgQ2xvc2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmUsIERldGFpbHNEaWFsb2dQcm9jZXNzb3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RpbkNvcmUnO1xyXG5pbXBvcnQgeyBMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9hZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbmZpZywgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQnV0dG9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1dHRvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1kZXRhaWxzRGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGV0YWlsc0RpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzRGlhbG9nIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLHByaXZhdGUgbG9hZGVyU2VydmljZTogTG9hZGVyU2VydmljZSxwdWJsaWMgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEZXRhaWxzRGlhbG9nPiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnLCBwcml2YXRlIGJ1dHRvblNlcnZpY2U6IEJ1dHRvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwdWJsaWMgdGFibGVDb25maWdTZXJ2aWNlOiBUYWJsZUNvbmZpZ1NlcnZpY2UpXHJcbiAge1xyXG4gICAgLy8gZGV0ZWN0IHNjcmVlbiBzaXplIGNoYW5nZXNcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoW1wiKG1heC13aWR0aDogNjAwcHgpXCJdKS5zdWJzY3JpYmUoKHJlc3VsdDogQnJlYWtwb2ludFN0YXRlKSA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0Lm1hdGNoZXMpIHtcclxuICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gdHJ1ZVxyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IGZhbHNlXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIGNvbnN0IHsgdGFibGVDb25maWcsIHRhYmxlQ29uZmlncywgZm9ybUNvbmZpZywgc3RlcENvbmZpZywgc3RhdHVzQ29uZmlnLCBidXR0b25zIH0gPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLmluaXRpYWxpemVDb25maWdzKHRoaXMuZGV0YWlsc0NvbmZpZyk7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gdGFibGVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlncyA9IHRhYmxlQ29uZmlncztcclxuICAgIHRoaXMuZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XHJcbiAgICB0aGlzLnN0ZXBDb25maWcgPSBzdGVwQ29uZmlnO1xyXG4gICAgdGhpcy5zdGF0dXNDb25maWcgPSBzdGF0dXNDb25maWc7XHJcbiAgICB0aGlzLmJ1dHRvbnMgPSBidXR0b25zO1xyXG5cclxuICAgIGxldCByZXNwID0gRGV0YWlsc0RpYWxvZ1Byb2Nlc3Nvci5oYW5kbGVGb3JtTW9kZSh0aGlzLmRldGFpbHNDb25maWcsIHRoaXMuZm9ybUNvbmZpZywpO1xyXG5cclxuICAgIGlmIChyZXNwLmxvYWRCeUFjdGlvbil7XHJcbiAgICAgIHRoaXMubG9hZEJ5QWN0aW9uID0gdHJ1ZTtcclxuICAgICAgZm9ybUNvbmZpZy5sb2FkQWN0aW9uID0gcmVzcC5hY3Rpb247XHJcbiAgICAgIHRoaXMubG9hZERhdGEocmVzcC5hY3Rpb24sIGZhbHNlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmRldGFpbHMgPSByZXNwLmRldGFpbHM7XHJcbiAgICAgIERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0SGVyb1ZhbHVlKHRoaXMuZGV0YWlsc0NvbmZpZywgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgdGhpcy5sb2FkQnlBY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvYWRDb21wbGV0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlRmllbGQgPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLnNldEZpbGVGaWVsZCh0aGlzLmZvcm1Db25maWcpO1xyXG5cclxuICAgIHRoaXMubG9hZGVyU2VydmljZS5pc0xvYWRpbmcuc3Vic2NyaWJlKHggPT4gdGhpcy5pc1Byb2Nlc3NpbmcgPSB4KTtcclxuXHJcbiAgICBjb25zdCB7IGV4dHJhQnV0dG9ucywgY3JlYXRlQnV0dG9uLCBlZGl0QnV0dG9uLCBkZWxldGVCdXR0b24gfSA9IERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0dXBCdXR0b25zKHRoaXMuYnV0dG9ucyk7XHJcbiAgICB0aGlzLmV4dHJhQnV0dG9ucyA9IGV4dHJhQnV0dG9ucztcclxuICAgIHRoaXMuY3JlYXRlQnV0dG9uID0gY3JlYXRlQnV0dG9uO1xyXG4gICAgdGhpcy5lZGl0QnV0dG9uID0gZWRpdEJ1dHRvbjtcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uID0gZGVsZXRlQnV0dG9uO1xyXG5cclxuICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKTtcclxuICAgIHRoaXMuaW5pdEF1dG9SZWZyZXNoKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbnVwIHN1YnNjcmlwdGlvbiBvbiBjb21wb25lbnQgZGVzdHJveVxyXG4gICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGF1dG9SZWZyZXNoRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIHRpdGxlQWN0aW9uID0gXCJWaWV3XCI7XHJcbiAgbG9hZEJ5QWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIGV4dHJhQnV0dG9uczogQnV0dG9uW107XHJcbiAgYnV0dG9uczogQnV0dG9uW107XHJcbiAgY3JlYXRlQnV0dG9uOiBCdXR0b247XHJcbiAgZWRpdEJ1dHRvbjogQnV0dG9uO1xyXG4gIGRlbGV0ZUJ1dHRvbjogQnV0dG9uO1xyXG5cclxuICAvLyBtb2RlQnV0dG9uIDogQnV0dG9uXHJcbiAgZmlsZUZpZWxkOiBGaWVsZDtcclxuICBmaWxlczogYW55W10gPSBbXTtcclxuXHJcbiAgdGFibGVSZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB0YWJsZUNvbmZpZzogVGFibGVDb25maWdcclxuICB0YWJsZUNvbmZpZ3MgOiBUYWJsZUNvbmZpZ1tdXHJcbiAgZGV0YWlsczogYW55XHJcbiAgZm9ybUNvbmZpZzogRm9ybUNvbmZpZztcclxuICBzdGVwQ29uZmlnIDogU3RlcENvbmZpZztcclxuICBzdGF0dXNDb25maWcgOiBTdGF0dXNDb25maWc7XHJcbiAgc21hbGxTY3JlZW4gPSBmYWxzZTtcclxuXHJcbiAgaXNMb2FkQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzZWxlY3RlZFRhYkluZGV4ID0gMDtcclxuICBvblRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGV2ZW50LmluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0QXV0b1JlZnJlc2goKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmRldGFpbHNDb25maWcuYXV0b1JlZnJlc2hDb25maWc7XHJcbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuO1xyXG5cclxuICAgIC8vIFNldCBpbml0aWFsIHN0YXRlIGJhc2VkIG9uIGRlZmF1bHRPbiBjb25maWd1cmF0aW9uXHJcbiAgICB0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZCA9IGNvbmZpZy5kZWZhdWx0T24gfHwgZmFsc2U7XHJcblxyXG4gICAgLy8gU3RhcnQgYXV0by1yZWZyZXNoIGlmIGVuYWJsZWQgYnkgZGVmYXVsdFxyXG4gICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydEF1dG9SZWZyZXNoKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnKSByZXR1cm47XHJcbiAgICBcclxuICAgIGNvbnN0IHJlZnJlc2hJbnRlcnZhbCA9IHRoaXMuZGV0YWlsc0NvbmZpZy5hdXRvUmVmcmVzaENvbmZpZy5pbnRlcnZhbCB8fCA1MDAwOyAvLyBEZWZhdWx0IHRvIDUgc2Vjb25kc1xyXG4gICAgXHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3Rpbmcgc3Vic2NyaXB0aW9uXHJcbiAgICB0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG4gICAgXHJcbiAgICAvLyBDcmVhdGUgbmV3IHN1YnNjcmlwdGlvblxyXG4gICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwocmVmcmVzaEludGVydmFsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0xvYWRDb21wbGV0ZSAmJiAhdGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdG9wQXV0b1JlZnJlc2goKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXV0b1JlZnJlc2goKSB7XHJcbiAgICAvLyB0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZCA9ICF0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZDtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWREYXRhKGFjdGlvbjogQWN0aW9uLCBjYXVzZVRhYmxlc1JlbG9hZCkge1xyXG5cclxuICAgIGlmIChhY3Rpb24gJiYgdGhpcy5sb2FkQnlBY3Rpb24pIHtcclxuXHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShhY3Rpb24pLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmRldGFpbHMgPSBhcGlSZXNwb25zZS5kYXRhXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZENvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0SGVyb1ZhbHVlKHRoaXMuZGV0YWlsc0NvbmZpZywgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgICAgIGlmKGNhdXNlVGFibGVzUmVsb2FkKSB0aGlzLnRhYmxlUmVsb2FkLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkICYmIGNvbmZpZz8uc3RvcENvbmRpdGlvbiAmJiBjb25maWcuc3RvcENvbmRpdGlvbih0aGlzLmRldGFpbHMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaW5wdXRDaGFuZ2VkKGV2ZW50KSB7XHJcbiAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZXZlbnQuZmllbGQsIHZhbHVlOiBldmVudC52YWx1ZSB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNldE1vZGUobmV3TW9kZSl7XHJcbiAgICB0aGlzLmZvcm1Db25maWcubW9kZSA9IG5ld01vZGVcclxuICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKVxyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGVBY3Rpb24oKXtcclxuICAgIGlmICh0aGlzLmZvcm1Db25maWcuZml4ZWRUaXRsZSkge1xyXG4gICAgICB0aGlzLnRpdGxlQWN0aW9uID0gXCJcIjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGl0bGVBY3Rpb24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0VGl0bGVBY3Rpb24odGhpcy5mb3JtQ29uZmlnLm1vZGUsIHRoaXMuYnV0dG9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b24obmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmdldEJ1dHRvbih0aGlzLmJ1dHRvbnMsIG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgdGVzdERpc2FibGVkKHJvdywgYnV0dG9uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmdldEJ1dHRvbihidXR0b25OYW1lKTtcclxuXHJcbiAgICBpZiAoIWJ1dHRvbikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGJ1dHRvbiB3aXRoIGNvbXBvbmVudCdzIGRldGFpbHNDb25maWdcclxuICAgIGNvbnN0IGJ1dHRvbldpdGhDb25maWcgPSB7XHJcbiAgICAgIC4uLmJ1dHRvbixcclxuICAgICAgZGV0YWlsc0NvbmZpZzogYnV0dG9uLmRldGFpbHNDb25maWcgPyB7IC4uLmJ1dHRvbi5kZXRhaWxzQ29uZmlnIH0gOiB0aGlzLmRldGFpbHNDb25maWdcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uU2VydmljZS50ZXN0RGlzYWJsZWQoYnV0dG9uV2l0aENvbmZpZywgcm93KTtcclxuICB9XHJcblxyXG5cclxuICB0ZXN0VmlzaWJsZShyb3csIGJ1dHRvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5nZXRCdXR0b24oYnV0dG9uTmFtZSk7XHJcbiAgICBpZiAoIWJ1dHRvbikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGJ1dHRvbiB3aXRoIGNvbXBvbmVudCdzIGRldGFpbHNDb25maWdcclxuICAgIGNvbnN0IGJ1dHRvbldpdGhDb25maWcgPSB7XHJcbiAgICAgIC4uLmJ1dHRvbixcclxuICAgICAgZGV0YWlsc0NvbmZpZzogYnV0dG9uLmRldGFpbHNDb25maWcgPyB7IC4uLmJ1dHRvbi5kZXRhaWxzQ29uZmlnIH0gOiB0aGlzLmRldGFpbHNDb25maWdcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uU2VydmljZS50ZXN0VmlzaWJsZShidXR0b25XaXRoQ29uZmlnLCByb3cpXHJcbiAgfVxyXG5cclxuICB0ZXN0VmlzaWJsZVRhYih0YmxDb25maWc6IFRhYmxlQ29uZmlnKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnRhYmxlQ29uZmlnU2VydmljZS5oYXNUYWJsZUFjY2Vzcyh0YmxDb25maWcpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmlzVGFiVmlzaWJsZSh0YmxDb25maWcsIHRoaXMuZGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25Db2xvcihidXR0b246IEJ1dHRvbiwgcm93KSB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmdldEJ1dHRvbkNvbG9yKGJ1dHRvbiwgcm93KTtcclxuICB9XHJcblxyXG4gIGdldFZpc2libGVGaWVsZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnLmZpZWxkcz8uZmlsdGVyKHggPT4gQ29yZS50ZXN0VmlzaWJsZSh0aGlzLmZvcm1Db25maWcsIHRoaXMuZGV0YWlscywgeCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSkpXHJcbiAgfVxyXG5cclxuXHJcbiAgY3JlYXRlKCkge1xyXG4gICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2NyZWF0ZScpO1xyXG4gIH1cclxuXHJcbiAgZWRpdCgpIHtcclxuICAgIHRoaXMuaGFuZGxlQnV0dG9uQWN0aW9uKCdlZGl0Jyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0QnV0dG9uKHRoaXMuYnV0dG9ucywgJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29uZmlybU1lc3NhZ2UgPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0Q29uZmlybU1lc3NhZ2UoYnV0dG9uLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgaWYgKCFjb25maXJtTWVzc2FnZSkge1xyXG4gICAgICBjb25maXJtTWVzc2FnZSA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlID9gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShjb25maXJtTWVzc2FnZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2RlbGV0ZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjdXN0b20oYnV0dG9uOiBCdXR0b24gKSB7XHJcbiAgICBpZiAoYnV0dG9uLmRpYWxvZyAmJiBidXR0b24uZGV0YWlsc0NvbmZpZykge1xyXG4gICAgICB0aGlzLm9wZW5OZXN0ZWREZXRhaWxzRGlhbG9nKGJ1dHRvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZUJ1dHRvbkFjdGlvbihidXR0b24ubmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5OZXN0ZWREZXRhaWxzRGlhbG9nKGJ1dHRvbjogQnV0dG9uKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maWd1cmVkRGV0YWlsc0RpYWxvZyggYnV0dG9uLCB0aGlzLmRldGFpbHMsIERldGFpbHNEaWFsb2cgKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQuYWN0aW9uID09PSAnaW5wdXRDaGFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWQocmVzdWx0LmNoYW5nZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICYmIHJlc3VsdC5tZXNzYWdlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29uZmlnLmxvYWRBY3Rpb24pIHtcclxuICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLmZvcm1Db25maWcubG9hZEFjdGlvbiwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25BY3Rpb24oYnV0dG9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uKGJ1dHRvbk5hbWUpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybjtcclxuICAgXHJcblxyXG4gICAgaWYgKGJ1dHRvbi5vbkNsaWNrKSB7XHJcbiAgICAgIGJ1dHRvbi5vbkNsaWNrKHRoaXMuZGV0YWlscyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcm9jZXNzQnV0dG9uQWN0aW9uKGJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQnV0dG9uQWN0aW9uKGJ1dHRvbiA6IEJ1dHRvbikge1xyXG4gICAgaWYgKCFidXR0b24uYWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ2VtaXQnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYnV0dG9uLnNraXBWYWxpZGF0aW9uIHx8IHRoaXMudmFsaWRhdGVGb3JtKCkpIHtcclxuICAgICAgdGhpcy5leGVjdXRlQWN0aW9uKGJ1dHRvbiwgdGhpcy5kZXRhaWxzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbGlkYXRpb25SZXN1bHQgPSBDb3JlLnZhbGlkYXRlT2JqZWN0KHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QodmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPCAxICYmIHRoaXMuZmlsZUZpZWxkPy5yZXF1aXJlZCAmJiB0aGlzLmZvcm1Db25maWcubW9kZSA9PT0gJ2NyZWF0ZScpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlBsZWFzZSBhdHRhY2ggZmlsZShzKVwiKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYXRlIGNvbXBvc2l0ZSBmaWVsZHNcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5nZXRWaXNpYmxlRmllbGRzKCkpIHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdjb21wb3NpdGUnKSB7XHJcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IENvcmUudmFsaWRhdGVPYmplY3QoQ29yZS5nZXRWaXNpYmxlU3ViZmllbGRzKHRoaXMuZm9ybUNvbmZpZywgdGhpcy5kZXRhaWxzLCBmaWVsZCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSksIHRoaXMuZGV0YWlscywgKTtcclxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCAhPT0gJycpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QodmFsaWRhdGlvblJlc3VsdCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVBY3Rpb25EYXRhKGJ1dHRvbjogQnV0dG9uLCBkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMuYnV0dG9uU2VydmljZS5pc0Zvcm1CdXR0b24oYnV0dG9uKSkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYHVwbG9hZEZpbGUke2l9YCwgdGhpcy5maWxlc1tpXSwgdGhpcy5maWxlc1tpXS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoXCJkYXRhXCIsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgcmV0dXJuIGZvcm1EYXRhO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4ZWN1dGVBY3Rpb24oYnV0dG9uOiBCdXR0b24sIGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgYWN0aW9uRGF0YSA9IHRoaXMucHJlcGFyZUFjdGlvbkRhdGEoYnV0dG9uLCBkYXRhKTtcclxuXHJcbiAgICBpZiAoYnV0dG9uLmNvbmZpcm0pIHtcclxuICAgICAgbGV0IGNvbmZpcm1NZXNzYWdlID0gdGhpcy5idXR0b25TZXJ2aWNlLmdldENvbmZpcm1NZXNzYWdlKGJ1dHRvbiwgdGhpcy5kZXRhaWxzKTtcclxuXHJcbiAgICAgIGlmICghY29uZmlybU1lc3NhZ2UgJiYgYnV0dG9uLm5hbWUgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICBjb25maXJtTWVzc2FnZSA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlID9gO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmNvbmZpcm0oY29uZmlybU1lc3NhZ2UpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnBlcmZvcm1BcGlDYWxsKGJ1dHRvbiwgYWN0aW9uRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnBlcmZvcm1BcGlDYWxsKGJ1dHRvbiwgYWN0aW9uRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwZXJmb3JtQXBpQ2FsbChidXR0b246IEJ1dHRvbiwgZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLkNhbGxBcGkoYnV0dG9uLmFjdGlvbiwgZGF0YSkuc3Vic2NyaWJlKChhcGlSZXNwb25zZTogQXBpUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgIGlmIChhcGlSZXNwb25zZS5kYXRhKXtcclxuICAgICAgICB0aGlzLmRldGFpbHMgPSBhcGlSZXNwb25zZS5kYXRhO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYXBpUmVzcG9uc2Uuc3VjY2Vzcykge1xyXG5cclxuICAgICAgICBpZiAoYXBpUmVzcG9uc2UubWVzc2FnZS5pbmNsdWRlcyhcImFwcHJvdmFsXCIpIHx8IGFwaVJlc3BvbnNlLm1lc3NhZ2UuaW5jbHVkZXMoXCJhcHByb3ZlXCIpIHx8IGFwaVJlc3BvbnNlLm1lc3NhZ2UuaW5jbHVkZXMoXCJkZWNsaW5lXCIpKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uLmFjdGlvbi5zdWNjZXNzTWVzc2FnZSkge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChidXR0b24uYWN0aW9uLnN1Y2Nlc3NNZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFwaVJlc3BvbnNlLm1lc3NhZ2UgIT0gXCJzdWNjZXNzXCIgJiYgYXBpUmVzcG9uc2UubWVzc2FnZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiVXBkYXRlZFwiKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChidXR0b24ub25TdWNjZXNzKSB7XHJcbiAgICAgICAgICBidXR0b24ub25TdWNjZXNzKGFwaVJlc3BvbnNlLmRhdGEsIHRoaXMuZGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uLmtlZXBPcGVuKSB7XHJcbiAgICAgICAgICBpZiAoYnV0dG9uLm5hbWUgPT09ICdjcmVhdGUnICYmIGFwaVJlc3BvbnNlLmRhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0gYXBpUmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRldGFpbHNDb25maWcuaGVyb0ZpZWxkICYmIGFwaVJlc3BvbnNlLmRhdGFbdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF0pIHtcclxuICAgICAgICAgICAgICB0aGlzLmRldGFpbHNDb25maWcuaGVyb1ZhbHVlID0gYXBpUmVzcG9uc2UuZGF0YVt0aGlzLmRldGFpbHNDb25maWcuaGVyb0ZpZWxkXTtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1Db25maWcuaGVyb0ZpZWxkID0gdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZDtcclxuICAgICAgICAgICAgICB0aGlzLmZvcm1Db25maWcuaGVyb1ZhbHVlID0gdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5mb3JtQ29uZmlnLm1vZGUgPSAnZWRpdCc7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRDb21wbGV0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRGF0YSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBtZXNzYWdlOiAnc3VjY2VzcycsIGRhdGE6IHsgLi4uYXBpUmVzcG9uc2UsIGRhdGE6IGJ1dHRvbi5uYW1lID09ICdjcmVhdGUnID8gYXBpUmVzcG9uc2UuZGF0YSA6IHRoaXMuZGV0YWlscyAgfSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIkVycm9yOiBcIiArIGFwaVJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldENsb3NlUG9zaXRpb24oKTogJ3RvcCcgfCAnYm90dG9tJyB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXRhaWxzQ29uZmlnLmNsb3NlT3B0aW9ucz8ucG9zaXRpb24gfHwgJ2JvdHRvbSc7XHJcbiAgfVxyXG5cclxuICBnZXRDbG9zZVRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRldGFpbHNDb25maWcuY2xvc2VPcHRpb25zPy50ZXh0IHx8ICdDYW5jZWwnO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkU2hvd1RvcENsb3NlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2xvc2VQb3NpdGlvbigpID09PSAndG9wJztcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dCb3R0b21DbG9zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldENsb3NlUG9zaXRpb24oKSA9PT0gJ2JvdHRvbSc7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpe1xyXG4gICAgaWYgKHRoaXMuZGV0YWlsc0NvbmZpZy5yZWZyZXNoT25DbG9zZSl7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ3N1Y2Nlc3MnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBtZXNzYWdlOiAnZW1pdCcsIGRhdGE6IHRoaXMuZGV0YWlscyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59O1xyXG4iLCI8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnRcIj5cclxuXHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiICpuZ0lmPVwiaXNQcm9jZXNzaW5nICYmIGRhdGFTZXJ2aWNlLmFwcENvbmZpZy5wcm9ncmVzc0xpbmVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OjUwMDttYXJnaW4tYm90dG9tOiAxMHB4O1wiID57e3RpdGxlQWN0aW9uIHwgdGl0bGVjYXNlfX0ge3tmb3JtQ29uZmlnPy50aXRsZX19PC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG5cclxuICAgICAgICA8c3BhLWNoZWNrICpuZ0lmPVwiZGV0YWlsc0NvbmZpZy5hdXRvUmVmcmVzaENvbmZpZ1wiIGRpc3BsYXk9XCJBdXRvIFJlZnJlc2hcIiBbKHZhbHVlKV09XCJhdXRvUmVmcmVzaEVuYWJsZWRcIiAodmFsdWVDaGFuZ2UpPVwidG9nZ2xlQXV0b1JlZnJlc2goKVwiPjwvc3BhLWNoZWNrPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlPT0ndmlldycgJiYgZWRpdEJ1dHRvbiAmJiB0ZXN0VmlzaWJsZShkZXRhaWxzLGVkaXRCdXR0b24ubmFtZSlcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcD1cIkVkaXRcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2V0TW9kZSgnZWRpdCcpXCIgW2Rpc2FibGVkXT1cInRlc3REaXNhYmxlZChkZXRhaWxzLGVkaXRCdXR0b24ubmFtZSlcIj48bWF0LWljb24+ZWRpdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiICpuZ0lmPVwibG9hZEJ5QWN0aW9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcD1cIlJlZnJlc2hcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwibG9hZERhdGEoZm9ybUNvbmZpZy5sb2FkQWN0aW9uLCBkZXRhaWxzQ29uZmlnLmNhdXNlVGFibGVSZWZyZXNoKVwiPjxtYXQtaWNvbiBjbGFzcz1cInJlZnJlc2hJY29uXCI+Y2FjaGVkPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgICBcclxuICAgICAgICA8IS0tIEFkZGVkOiBUb3AgY2xvc2UgYnV0dG9uIHdoZW4gcG9zaXRpb24gaXMgJ3RvcCcgLS0+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3VsZFNob3dUb3BDbG9zZSgpXCIgW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXA9XCJDbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCI+PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxzcGEtc3RlcHMgKm5nSWY9XCJzdGVwQ29uZmlnICYmIGRldGFpbHMgJiYgc3RlcENvbmZpZy5zdGlja3lcIiBbY29uZmlnXT1cInN0ZXBDb25maWdcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtc3RlcHM+XHJcbiAgICAgIDxzcGEtc3RhdHVzZXMgKm5nSWY9XCJzdGF0dXNDb25maWcgJiYgZGV0YWlscyAmJiBzdGF0dXNDb25maWc/LnN0aWNreVwiIFtjb25maWddPVwic3RhdHVzQ29uZmlnXCIgW2RhdGFdPVwiZGV0YWlsc1wiPjwvc3BhLXN0YXR1c2VzPlxyXG4gICAgICA8c3BhLWFsZXJ0ICpuZ0lmPVwiZm9ybUNvbmZpZy5hbGVydENvbmZpZyAmJiBmb3JtQ29uZmlnLmFsZXJ0Q29uZmlnPy5zdGlja3lcIiBbY29uZmlnXT1cImZvcm1Db25maWcuYWxlcnRDb25maWdcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtYWxlcnQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5IGRpYWxvZy1zY3JvbGwtY29udGVudFwiPlxyXG5cclxuICAgICAgPHNwYS1zdGVwcyAqbmdJZj1cInN0ZXBDb25maWcgJiYgZGV0YWlscyAmJiAhc3RlcENvbmZpZy5zdGlja3lcIiBbY29uZmlnXT1cInN0ZXBDb25maWdcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtc3RlcHM+XHJcbiAgICAgIDxzcGEtc3RhdHVzZXMgKm5nSWY9XCJzdGF0dXNDb25maWcgJiYgZGV0YWlscyAmJiAhc3RhdHVzQ29uZmlnPy5zdGlja3lcIiBbY29uZmlnXT1cInN0YXR1c0NvbmZpZ1wiIFtkYXRhXT1cImRldGFpbHNcIj48L3NwYS1zdGF0dXNlcz5cclxuICAgICAgPHNwYS1hbGVydCAqbmdJZj1cImZvcm1Db25maWcuYWxlcnRDb25maWcgJiYgIWZvcm1Db25maWcuYWxlcnRDb25maWc/LnN0aWNreVwiIFtjb25maWddPVwiZm9ybUNvbmZpZy5hbGVydENvbmZpZ1wiIFtkYXRhXT1cImRldGFpbHNcIj48L3NwYS1hbGVydD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0aW4taW5wdXRcIiBzdHlsZT1cImZvbnQtc2l6ZToxNHB4XCI+XHJcblxyXG4gICAgICAgIDxwICpuZ0lmPVwiZm9ybUNvbmZpZyAmJiAhZGV0YWlsc1wiPjxlbT5Mb2FkaW5nLi4uPC9lbT48L3A+XHJcblxyXG4gICAgICAgIDxzcGEtZm9ybSAqbmdJZj1cImZvcm1Db25maWcgJiYgZGV0YWlsc1wiIFtmaWxlc109XCJmaWxlc1wiIFtkYXRhXT1cImRldGFpbHNcIiBbY29uZmlnXT1cImZvcm1Db25maWdcIiAoaW5wdXRDaGFuZ2UpPVwiaW5wdXRDaGFuZ2VkKCRldmVudClcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHluYW1pY1NlbGVjdCBsZXQtZmllbGQ9XCJmaWVsZFwiIGxldC1kYXRhPVwiZGF0YVwiIGxldC10ZXN0UmVhZE9ubHk9XCJ0ZXN0UmVhZE9ubHlcIiBsZXQtdGVzdFJlcXVpcmVkPVwidGVzdFJlcXVpcmVkXCIgbGV0LXNlbGVjdENoYW5nZWQ9XCJzZWxlY3RDaGFuZ2VkXCI+XHJcbiAgICAgICAgICAgIDxzcGEtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW2Rpc3BsYXldPVwiZmllbGQuYWxpYXMgPz8gZmllbGQubmFtZSB8IGNhbWVsVG9Xb3Jkc1wiXHJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cImZpZWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICBbbnVsbGFibGVdPVwiZmllbGQubnVsbGFibGVcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFttYXN0ZXJPcHRpb25zXT1cImZpZWxkLm1hc3Rlck9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFttYXN0ZXJGaWVsZF09XCJmaWVsZC5tYXN0ZXJGaWVsZFwiXHJcbiAgICAgICAgICAgICAgW29wdGlvbkRpc3BsYXldPVwiZmllbGQub3B0aW9uRGlzcGxheSA/PyAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJmaWVsZC5vcHRpb25WYWx1ZSA/PyAndmFsdWUnXCJcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJkYXRhW2ZpZWxkLm5hbWVdXCJcclxuICAgICAgICAgICAgICBbZGVmYXVsdEZpcnN0VmFsdWVdPVwiZmllbGQuZGVmYXVsdEZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0ZXN0UmVxdWlyZWQoZmllbGQpXCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidGVzdFJlYWRPbmx5KGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgW2hpbnRdPVwiZmllbGQuaGludFwiXHJcbiAgICAgICAgICAgICAgW2RldGFpbHNDb25maWddPVwiZmllbGQuZGV0YWlsc0NvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgW2xvYWRBY3Rpb25dPVwiZmllbGQubG9hZEFjdGlvblwiXHJcbiAgICAgICAgICAgICAgW2xvYWRJREZpZWxkXT1cImZpZWxkLmxvYWRJREZpZWxkXCJcclxuICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgIFtpbmZvTWVzc2FnZV09XCJmaWVsZC5pbmZvTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgW2NvcHlDb250ZW50XT1cImZpZWxkLmNvcHlDb250ZW50XCJcclxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwic2VsZWN0Q2hhbmdlZChmaWVsZClcIlxyXG4gICAgICAgICAgICA+PC9zcGEtc2VsZWN0PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L3NwYS1mb3JtPlxyXG5cclxuXHJcbiAgICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJ0YWJsZUNvbmZpZ3NcIiAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRibCBvZiB0YWJsZUNvbmZpZ1NlcnZpY2UuZ2V0VmlzaWJsZVRhYmxlQ29uZmlncyh0YWJsZUNvbmZpZ3MpIDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICA8bWF0LXRhYiAqbmdJZj1cInRlc3RWaXNpYmxlVGFiKHRibClcIj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFRhYkxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YmwudGFiVGl0bGUgPz8gJ1VudGl0bGVkJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDxzcGEtdGFibGUtaW50ZXJuYWwgXHJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cInRibFwiIFxyXG4gICAgICAgICAgICAgICAgW3JlbG9hZF09XCJ0YWJsZVJlbG9hZFwiIFxyXG4gICAgICAgICAgICAgICAgW2luVGFiXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW2FjdGl2ZVRhYl09XCJzZWxlY3RlZFRhYkluZGV4ID09PSBpXCJcclxuICAgICAgICAgICAgICAgIChhY3Rpb25TdWNjZXNzKT1cInRibC5jYXVzZUZvcm1SZWZyZXNoID8gbG9hZERhdGEoZm9ybUNvbmZpZy5sb2FkQWN0aW9uLCBmYWxzZSkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPC9zcGEtdGFibGUtaW50ZXJuYWw+XHJcblxyXG4gICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxyXG5cclxuXHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cclxuXHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8bWF0LWRpYWxvZy1hY3Rpb25zID5cclxuXHJcbiAgICA8ZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGU9PSdjcmVhdGUnICYmIGNyZWF0ZUJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNyZWF0ZSgpXCIgY2RrRm9jdXNJbml0aWFsPnt7Y3JlYXRlQnV0dG9uLmRpc3BsYXkgPz8gJ1N1Ym1pdCd9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlPT0nZWRpdCcgJiYgZWRpdEJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgKGNsaWNrKT1cImVkaXQoKVwiIGNka0ZvY3VzSW5pdGlhbD57e2VkaXRCdXR0b24uZGlzcGxheSA/PyAnU3VibWl0J319XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIGV4dHJhQnV0dG9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGUgIT09ICdjcmVhdGUnICYmIHRlc3RWaXNpYmxlKGRldGFpbHMsYnRuLm5hbWUpXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmcgfHwgdGVzdERpc2FibGVkKGRldGFpbHMsYnRuLm5hbWUpXCIgW25nU3R5bGVdPVwieydjb2xvcic6IGdldEJ1dHRvbkNvbG9yKGJ0biwgZGV0YWlscyl9XCIgKGNsaWNrKT1cImN1c3RvbShidG4pXCIgY2RrRm9jdXNJbml0aWFsPlxyXG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnRuLmljb25cIiBbbmdTdHlsZV09XCJ7J2NvbG9yJzogZ2V0QnV0dG9uQ29sb3IoYnRuLCBkZXRhaWxzKX1cIj57e2J0bi5pY29uLm5hbWV9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICB7e2J0bi5kaXNwbGF5ID8/IGJ0bi5uYW1lIHwgdGl0bGVjYXNlfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tIENoYW5nZWQ6IEJvdHRvbSBjbG9zZSBidXR0b24gbm93IHVzZXMgY29uZGl0aW9uYWwgZGlzcGxheSBhbmQgY3VzdG9tIHRleHQgLS0+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG91bGRTaG93Qm90dG9tQ2xvc2UoKVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPnt7Z2V0Q2xvc2VUZXh0KCl9fTwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cInNtYWxsU2NyZWVuXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiBzdHlsZT1cImNvbG9yOiByZWQ7XCIgKGNsaWNrKT1cImRlbGV0ZSgpXCIgKm5nSWY9XCJmb3JtQ29uZmlnLm1vZGUhPSdjcmVhdGUnICAmJiBkZWxldGVCdXR0b25cIj48bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XHJcblxyXG5cclxuPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsc0RpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90aW4tc3BhL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9kZXRhaWxzRGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rpbi1zcGEvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2RldGFpbHNEaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBSXpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsT0FBTyxFQUF3QixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWS9ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQW9CLGtCQUFzQyxFQUFTLGFBQTRCLEVBQVEsV0FBMkIsRUFBUyxjQUE4QixFQUMvSixTQUFzQyxFQUFrQyxhQUFrQyxFQUFVLGFBQTRCLEVBQ2hKLGFBQTRCLEVBQVUsV0FBd0IsRUFBUyxrQkFBc0M7UUFGbkcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVEsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9KLGNBQVMsR0FBVCxTQUFTLENBQTZCO1FBQWtDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ2hKLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsZ0JBQVcs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QUMsY0FBYyxFQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDbEU7YUFBSTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDOzswR0F2Y1UsYUFBYSx5S0FHa0MsZUFBZTs4RkFIOUQsYUFBYSxrR0NyQjFCLHE0TkFpSkE7MkZENUhhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsbUJBQW1COzswQkFPc0IsTUFBTTsyQkFBQyxlQUFlOytKQXVGL0QsV0FBVztzQkFBcEIsTUFBTTs7QUErV1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRm9ybUNvbmZpZywgRmllbGQsIFRhYmxlQ29uZmlnLCBCdXR0b24sIERldGFpbHNEaWFsb2dDb25maWcsIEFjdGlvbiwgQXBpUmVzcG9uc2UsIFN0ZXBDb25maWcsIFN0YXR1c0NvbmZpZywgQ2xvc2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9DbGFzc2VzJztcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUxpYiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGFsaWIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmUsIERldGFpbHNEaWFsb2dQcm9jZXNzb3IgfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RpbkNvcmUnO1xyXG5pbXBvcnQgeyBMb2FkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9hZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbmZpZywgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQnV0dG9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2J1dHRvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFRhYkNoYW5nZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYS1kZXRhaWxzRGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGV0YWlsc0RpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzRGlhbG9nIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLHByaXZhdGUgbG9hZGVyU2VydmljZTogTG9hZGVyU2VydmljZSxwdWJsaWMgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlTGliLHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEZXRhaWxzRGlhbG9nPiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkZXRhaWxzQ29uZmlnOiBEZXRhaWxzRGlhbG9nQ29uZmlnLCBwcml2YXRlIGJ1dHRvblNlcnZpY2U6IEJ1dHRvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwdWJsaWMgdGFibGVDb25maWdTZXJ2aWNlOiBUYWJsZUNvbmZpZ1NlcnZpY2UpXHJcbiAge1xyXG4gICAgLy8gZGV0ZWN0IHNjcmVlbiBzaXplIGNoYW5nZXNcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoW1wiKG1heC13aWR0aDogNjAwcHgpXCJdKS5zdWJzY3JpYmUoKHJlc3VsdDogQnJlYWtwb2ludFN0YXRlKSA9PiB7XHJcblxyXG4gICAgICBpZiAocmVzdWx0Lm1hdGNoZXMpIHtcclxuICAgICAgICB0aGlzLnNtYWxsU2NyZWVuID0gdHJ1ZVxyXG4gICAgICB9ZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zbWFsbFNjcmVlbiA9IGZhbHNlXHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG5cclxuICAgIGNvbnN0IHsgdGFibGVDb25maWcsIHRhYmxlQ29uZmlncywgZm9ybUNvbmZpZywgc3RlcENvbmZpZywgc3RhdHVzQ29uZmlnLCBidXR0b25zIH0gPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLmluaXRpYWxpemVDb25maWdzKHRoaXMuZGV0YWlsc0NvbmZpZyk7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnID0gdGFibGVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlncyA9IHRhYmxlQ29uZmlncztcclxuICAgIHRoaXMuZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XHJcbiAgICB0aGlzLnN0ZXBDb25maWcgPSBzdGVwQ29uZmlnO1xyXG4gICAgdGhpcy5zdGF0dXNDb25maWcgPSBzdGF0dXNDb25maWc7XHJcbiAgICB0aGlzLmJ1dHRvbnMgPSBidXR0b25zO1xyXG5cclxuICAgIGxldCByZXNwID0gRGV0YWlsc0RpYWxvZ1Byb2Nlc3Nvci5oYW5kbGVGb3JtTW9kZSh0aGlzLmRldGFpbHNDb25maWcsIHRoaXMuZm9ybUNvbmZpZywpO1xyXG5cclxuICAgIGlmIChyZXNwLmxvYWRCeUFjdGlvbil7XHJcbiAgICAgIHRoaXMubG9hZEJ5QWN0aW9uID0gdHJ1ZTtcclxuICAgICAgZm9ybUNvbmZpZy5sb2FkQWN0aW9uID0gcmVzcC5hY3Rpb247XHJcbiAgICAgIHRoaXMubG9hZERhdGEocmVzcC5hY3Rpb24sIGZhbHNlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmRldGFpbHMgPSByZXNwLmRldGFpbHM7XHJcbiAgICAgIERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0SGVyb1ZhbHVlKHRoaXMuZGV0YWlsc0NvbmZpZywgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgdGhpcy5sb2FkQnlBY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc0xvYWRDb21wbGV0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWxlRmllbGQgPSBEZXRhaWxzRGlhbG9nUHJvY2Vzc29yLnNldEZpbGVGaWVsZCh0aGlzLmZvcm1Db25maWcpO1xyXG5cclxuICAgIHRoaXMubG9hZGVyU2VydmljZS5pc0xvYWRpbmcuc3Vic2NyaWJlKHggPT4gdGhpcy5pc1Byb2Nlc3NpbmcgPSB4KTtcclxuXHJcbiAgICBjb25zdCB7IGV4dHJhQnV0dG9ucywgY3JlYXRlQnV0dG9uLCBlZGl0QnV0dG9uLCBkZWxldGVCdXR0b24gfSA9IERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0dXBCdXR0b25zKHRoaXMuYnV0dG9ucyk7XHJcbiAgICB0aGlzLmV4dHJhQnV0dG9ucyA9IGV4dHJhQnV0dG9ucztcclxuICAgIHRoaXMuY3JlYXRlQnV0dG9uID0gY3JlYXRlQnV0dG9uO1xyXG4gICAgdGhpcy5lZGl0QnV0dG9uID0gZWRpdEJ1dHRvbjtcclxuICAgIHRoaXMuZGVsZXRlQnV0dG9uID0gZGVsZXRlQnV0dG9uO1xyXG5cclxuICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKTtcclxuICAgIHRoaXMuaW5pdEF1dG9SZWZyZXNoKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBDbGVhbnVwIHN1YnNjcmlwdGlvbiBvbiBjb21wb25lbnQgZGVzdHJveVxyXG4gICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGF1dG9SZWZyZXNoRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFxyXG4gIHRpdGxlQWN0aW9uID0gXCJWaWV3XCI7XHJcbiAgbG9hZEJ5QWN0aW9uID0gZmFsc2U7XHJcblxyXG4gIGV4dHJhQnV0dG9uczogQnV0dG9uW107XHJcbiAgYnV0dG9uczogQnV0dG9uW107XHJcbiAgY3JlYXRlQnV0dG9uOiBCdXR0b247XHJcbiAgZWRpdEJ1dHRvbjogQnV0dG9uO1xyXG4gIGRlbGV0ZUJ1dHRvbjogQnV0dG9uO1xyXG5cclxuICAvLyBtb2RlQnV0dG9uIDogQnV0dG9uXHJcbiAgZmlsZUZpZWxkOiBGaWVsZDtcclxuICBmaWxlczogYW55W10gPSBbXTtcclxuXHJcbiAgdGFibGVSZWxvYWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB0YWJsZUNvbmZpZzogVGFibGVDb25maWdcclxuICB0YWJsZUNvbmZpZ3MgOiBUYWJsZUNvbmZpZ1tdXHJcbiAgZGV0YWlsczogYW55XHJcbiAgZm9ybUNvbmZpZzogRm9ybUNvbmZpZztcclxuICBzdGVwQ29uZmlnIDogU3RlcENvbmZpZztcclxuICBzdGF0dXNDb25maWcgOiBTdGF0dXNDb25maWc7XHJcbiAgc21hbGxTY3JlZW4gPSBmYWxzZTtcclxuXHJcbiAgaXNMb2FkQ29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzZWxlY3RlZFRhYkluZGV4ID0gMDtcclxuICBvblRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IGV2ZW50LmluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0QXV0b1JlZnJlc2goKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmRldGFpbHNDb25maWcuYXV0b1JlZnJlc2hDb25maWc7XHJcbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuO1xyXG5cclxuICAgIC8vIFNldCBpbml0aWFsIHN0YXRlIGJhc2VkIG9uIGRlZmF1bHRPbiBjb25maWd1cmF0aW9uXHJcbiAgICB0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZCA9IGNvbmZpZy5kZWZhdWx0T24gfHwgZmFsc2U7XHJcblxyXG4gICAgLy8gU3RhcnQgYXV0by1yZWZyZXNoIGlmIGVuYWJsZWQgYnkgZGVmYXVsdFxyXG4gICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydEF1dG9SZWZyZXNoKCkge1xyXG5cclxuICAgIGlmICghdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnKSByZXR1cm47XHJcbiAgICBcclxuICAgIGNvbnN0IHJlZnJlc2hJbnRlcnZhbCA9IHRoaXMuZGV0YWlsc0NvbmZpZy5hdXRvUmVmcmVzaENvbmZpZy5pbnRlcnZhbCB8fCA1MDAwOyAvLyBEZWZhdWx0IHRvIDUgc2Vjb25kc1xyXG4gICAgXHJcbiAgICAvLyBDbGVhciBhbnkgZXhpc3Rpbmcgc3Vic2NyaXB0aW9uXHJcbiAgICB0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG4gICAgXHJcbiAgICAvLyBDcmVhdGUgbmV3IHN1YnNjcmlwdGlvblxyXG4gICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwocmVmcmVzaEludGVydmFsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc0xvYWRDb21wbGV0ZSAmJiAhdGhpcy5pc1Byb2Nlc3NpbmcpIHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdG9wQXV0b1JlZnJlc2goKSB7XHJcbiAgICBpZiAodGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXV0b1JlZnJlc2goKSB7XHJcbiAgICAvLyB0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZCA9ICF0aGlzLmF1dG9SZWZyZXNoRW5hYmxlZDtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWREYXRhKGFjdGlvbjogQWN0aW9uLCBjYXVzZVRhYmxlc1JlbG9hZCkge1xyXG5cclxuICAgIGlmIChhY3Rpb24gJiYgdGhpcy5sb2FkQnlBY3Rpb24pIHtcclxuXHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuQ2FsbEFwaShhY3Rpb24pLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgIGlmIChhcGlSZXNwb25zZS5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmRldGFpbHMgPSBhcGlSZXNwb25zZS5kYXRhXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZENvbXBsZXRlID0gdHJ1ZTtcclxuICAgICAgICAgIC8vIERldGFpbHNEaWFsb2dQcm9jZXNzb3Iuc2V0SGVyb1ZhbHVlKHRoaXMuZGV0YWlsc0NvbmZpZywgdGhpcy5kZXRhaWxzKTtcclxuICAgICAgICAgIGlmKGNhdXNlVGFibGVzUmVsb2FkKSB0aGlzLnRhYmxlUmVsb2FkLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5kZXRhaWxzQ29uZmlnLmF1dG9SZWZyZXNoQ29uZmlnO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkICYmIGNvbmZpZz8uc3RvcENvbmRpdGlvbiAmJiBjb25maWcuc3RvcENvbmRpdGlvbih0aGlzLmRldGFpbHMpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KFwiRXJyb3I6IFwiICsgYXBpUmVzcG9uc2UubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1JlZnJlc2hFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgaW5wdXRDaGFuZ2VkKGV2ZW50KSB7XHJcbiAgICB0aGlzLmlucHV0Q2hhbmdlLmVtaXQoeyBmaWVsZDogZXZlbnQuZmllbGQsIHZhbHVlOiBldmVudC52YWx1ZSB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNldE1vZGUobmV3TW9kZSl7XHJcbiAgICB0aGlzLmZvcm1Db25maWcubW9kZSA9IG5ld01vZGVcclxuICAgIHRoaXMuc2V0VGl0bGVBY3Rpb24oKVxyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGVBY3Rpb24oKXtcclxuICAgIGlmICh0aGlzLmZvcm1Db25maWcuZml4ZWRUaXRsZSkge1xyXG4gICAgICB0aGlzLnRpdGxlQWN0aW9uID0gXCJcIjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudGl0bGVBY3Rpb24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0VGl0bGVBY3Rpb24odGhpcy5mb3JtQ29uZmlnLm1vZGUsIHRoaXMuYnV0dG9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b24obmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmdldEJ1dHRvbih0aGlzLmJ1dHRvbnMsIG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgdGVzdERpc2FibGVkKHJvdywgYnV0dG9uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmdldEJ1dHRvbihidXR0b25OYW1lKTtcclxuXHJcbiAgICBpZiAoIWJ1dHRvbikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGJ1dHRvbiB3aXRoIGNvbXBvbmVudCdzIGRldGFpbHNDb25maWdcclxuICAgIGNvbnN0IGJ1dHRvbldpdGhDb25maWcgPSB7XHJcbiAgICAgIC4uLmJ1dHRvbixcclxuICAgICAgZGV0YWlsc0NvbmZpZzogYnV0dG9uLmRldGFpbHNDb25maWcgPyB7IC4uLmJ1dHRvbi5kZXRhaWxzQ29uZmlnIH0gOiB0aGlzLmRldGFpbHNDb25maWdcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uU2VydmljZS50ZXN0RGlzYWJsZWQoYnV0dG9uV2l0aENvbmZpZywgcm93KTtcclxuICB9XHJcblxyXG5cclxuICB0ZXN0VmlzaWJsZShyb3csIGJ1dHRvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgYnV0dG9uID0gdGhpcy5nZXRCdXR0b24oYnV0dG9uTmFtZSk7XHJcbiAgICBpZiAoIWJ1dHRvbikgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIGNvcHkgb2YgdGhlIGJ1dHRvbiB3aXRoIGNvbXBvbmVudCdzIGRldGFpbHNDb25maWdcclxuICAgIGNvbnN0IGJ1dHRvbldpdGhDb25maWcgPSB7XHJcbiAgICAgIC4uLmJ1dHRvbixcclxuICAgICAgZGV0YWlsc0NvbmZpZzogYnV0dG9uLmRldGFpbHNDb25maWcgPyB7IC4uLmJ1dHRvbi5kZXRhaWxzQ29uZmlnIH0gOiB0aGlzLmRldGFpbHNDb25maWdcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYnV0dG9uU2VydmljZS50ZXN0VmlzaWJsZShidXR0b25XaXRoQ29uZmlnLCByb3cpXHJcbiAgfVxyXG5cclxuICB0ZXN0VmlzaWJsZVRhYih0YmxDb25maWc6IFRhYmxlQ29uZmlnKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKCF0aGlzLnRhYmxlQ29uZmlnU2VydmljZS5oYXNUYWJsZUFjY2Vzcyh0YmxDb25maWcpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmlzVGFiVmlzaWJsZSh0YmxDb25maWcsIHRoaXMuZGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICBnZXRCdXR0b25Db2xvcihidXR0b246IEJ1dHRvbiwgcm93KSB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25TZXJ2aWNlLmdldEJ1dHRvbkNvbG9yKGJ1dHRvbiwgcm93KTtcclxuICB9XHJcblxyXG4gIGdldFZpc2libGVGaWVsZHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlnLmZpZWxkcz8uZmlsdGVyKHggPT4gQ29yZS50ZXN0VmlzaWJsZSh0aGlzLmZvcm1Db25maWcsIHRoaXMuZGV0YWlscywgeCwgdGhpcy5hdXRoU2VydmljZS5jdXJyZW50Um9sZVNvdXJjZS52YWx1ZSkpXHJcbiAgfVxyXG5cclxuXHJcbiAgY3JlYXRlKCkge1xyXG4gICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2NyZWF0ZScpO1xyXG4gIH1cclxuXHJcbiAgZWRpdCgpIHtcclxuICAgIHRoaXMuaGFuZGxlQnV0dG9uQWN0aW9uKCdlZGl0Jyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUoKSB7XHJcbiAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0QnV0dG9uKHRoaXMuYnV0dG9ucywgJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29uZmlybU1lc3NhZ2UgPSB0aGlzLmJ1dHRvblNlcnZpY2UuZ2V0Q29uZmlybU1lc3NhZ2UoYnV0dG9uLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgaWYgKCFjb25maXJtTWVzc2FnZSkge1xyXG4gICAgICBjb25maXJtTWVzc2FnZSA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlID9gO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY29uZmlybShjb25maXJtTWVzc2FnZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCA9PSBcInllc1wiKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVCdXR0b25BY3Rpb24oJ2RlbGV0ZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBjdXN0b20oYnV0dG9uOiBCdXR0b24gKSB7XHJcbiAgICBpZiAoYnV0dG9uLmRpYWxvZyAmJiBidXR0b24uZGV0YWlsc0NvbmZpZykge1xyXG4gICAgICB0aGlzLm9wZW5OZXN0ZWREZXRhaWxzRGlhbG9nKGJ1dHRvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhhbmRsZUJ1dHRvbkFjdGlvbihidXR0b24ubmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9wZW5OZXN0ZWREZXRhaWxzRGlhbG9nKGJ1dHRvbjogQnV0dG9uKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5Db25maWd1cmVkRGV0YWlsc0RpYWxvZyggYnV0dG9uLCB0aGlzLmRldGFpbHMsIERldGFpbHNEaWFsb2cgKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQuYWN0aW9uID09PSAnaW5wdXRDaGFuZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZWQocmVzdWx0LmNoYW5nZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICYmIHJlc3VsdC5tZXNzYWdlID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICB0aGlzLnJlZnJlc2hEYXRhKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVmcmVzaERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29uZmlnLmxvYWRBY3Rpb24pIHtcclxuICAgICAgdGhpcy5sb2FkRGF0YSh0aGlzLmZvcm1Db25maWcubG9hZEFjdGlvbiwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCdXR0b25BY3Rpb24oYnV0dG9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IGJ1dHRvbiA9IHRoaXMuZ2V0QnV0dG9uKGJ1dHRvbk5hbWUpO1xyXG4gICAgaWYgKCFidXR0b24pIHJldHVybjtcclxuICAgXHJcblxyXG4gICAgaWYgKGJ1dHRvbi5vbkNsaWNrKSB7XHJcbiAgICAgIGJ1dHRvbi5vbkNsaWNrKHRoaXMuZGV0YWlscyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wcm9jZXNzQnV0dG9uQWN0aW9uKGJ1dHRvbik7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQnV0dG9uQWN0aW9uKGJ1dHRvbiA6IEJ1dHRvbikge1xyXG4gICAgaWYgKCFidXR0b24uYWN0aW9uKSB7XHJcbiAgICAgIGlmICghYnV0dG9uLmtlZXBPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoeyBtZXNzYWdlOiAnZW1pdCcsIGRhdGE6IHRoaXMuZGV0YWlscyB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJ1dHRvbi5za2lwVmFsaWRhdGlvbiB8fCB0aGlzLnZhbGlkYXRlRm9ybSgpKSB7XHJcbiAgICAgIHRoaXMuZXhlY3V0ZUFjdGlvbihidXR0b24sIHRoaXMuZGV0YWlscyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlRm9ybSgpOiBib29sZWFuIHtcclxuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gQ29yZS52YWxpZGF0ZU9iamVjdCh0aGlzLmdldFZpc2libGVGaWVsZHMoKSwgdGhpcy5kZXRhaWxzKTtcclxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICE9PSAnJykge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZmlsZXMubGVuZ3RoIDwgMSAmJiB0aGlzLmZpbGVGaWVsZD8ucmVxdWlyZWQgJiYgdGhpcy5mb3JtQ29uZmlnLm1vZGUgPT09ICdjcmVhdGUnKSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJQbGVhc2UgYXR0YWNoIGZpbGUocylcIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBWYWxpZGF0ZSBjb21wb3NpdGUgZmllbGRzXHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpKSB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnY29tcG9zaXRlJykge1xyXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBDb3JlLnZhbGlkYXRlT2JqZWN0KENvcmUuZ2V0VmlzaWJsZVN1YmZpZWxkcyh0aGlzLmZvcm1Db25maWcsIHRoaXMuZGV0YWlscywgZmllbGQsIHRoaXMuYXV0aFNlcnZpY2UuY3VycmVudFJvbGVTb3VyY2UudmFsdWUpLCB0aGlzLmRldGFpbHMsICk7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgIT09ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnRvYXN0KHZhbGlkYXRpb25SZXN1bHQpO1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlQWN0aW9uRGF0YShidXR0b246IEJ1dHRvbiwgZGF0YTogYW55KTogYW55IHtcclxuICAgIGlmICh0aGlzLmJ1dHRvblNlcnZpY2UuaXNGb3JtQnV0dG9uKGJ1dHRvbikpIHtcclxuICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGB1cGxvYWRGaWxlJHtpfWAsIHRoaXMuZmlsZXNbaV0sIHRoaXMuZmlsZXNbaV0ubmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybURhdGEuYXBwZW5kKFwiZGF0YVwiLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgIHJldHVybiBmb3JtRGF0YTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlQWN0aW9uKGJ1dHRvbjogQnV0dG9uLCBkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGFjdGlvbkRhdGEgPSB0aGlzLnByZXBhcmVBY3Rpb25EYXRhKGJ1dHRvbiwgZGF0YSk7XHJcblxyXG4gICAgaWYgKGJ1dHRvbi5jb25maXJtKSB7XHJcbiAgICAgIGxldCBjb25maXJtTWVzc2FnZSA9IHRoaXMuYnV0dG9uU2VydmljZS5nZXRDb25maXJtTWVzc2FnZShidXR0b24sIHRoaXMuZGV0YWlscyk7XHJcblxyXG4gICAgICBpZiAoIWNvbmZpcm1NZXNzYWdlICYmIGJ1dHRvbi5uYW1lID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgY29uZmlybU1lc3NhZ2UgPSBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA/YDtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5jb25maXJtKGNvbmZpcm1NZXNzYWdlKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgPT0gXCJ5ZXNcIikge1xyXG4gICAgICAgICAgdGhpcy5wZXJmb3JtQXBpQ2FsbChidXR0b24sIGFjdGlvbkRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wZXJmb3JtQXBpQ2FsbChidXR0b24sIGFjdGlvbkRhdGEpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGVyZm9ybUFwaUNhbGwoYnV0dG9uOiBCdXR0b24sIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5kYXRhU2VydmljZS5DYWxsQXBpKGJ1dHRvbi5hY3Rpb24sIGRhdGEpLnN1YnNjcmliZSgoYXBpUmVzcG9uc2U6IEFwaVJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICBpZiAoYXBpUmVzcG9uc2UuZGF0YSl7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxzID0gYXBpUmVzcG9uc2UuZGF0YTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGFwaVJlc3BvbnNlLnN1Y2Nlc3MpIHtcclxuXHJcbiAgICAgICAgaWYgKGFwaVJlc3BvbnNlLm1lc3NhZ2UuaW5jbHVkZXMoXCJhcHByb3ZhbFwiKSB8fCBhcGlSZXNwb25zZS5tZXNzYWdlLmluY2x1ZGVzKFwiYXBwcm92ZVwiKSB8fCBhcGlSZXNwb25zZS5tZXNzYWdlLmluY2x1ZGVzKFwiZGVjbGluZVwiKSkge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvbi5hY3Rpb24uc3VjY2Vzc01lc3NhZ2UpIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoYnV0dG9uLmFjdGlvbi5zdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhcGlSZXNwb25zZS5tZXNzYWdlICE9IFwic3VjY2Vzc1wiICYmIGFwaVJlc3BvbnNlLm1lc3NhZ2UgIT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS50b2FzdChcIlVwZGF0ZWRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYnV0dG9uLm9uU3VjY2Vzcykge1xyXG4gICAgICAgICAgYnV0dG9uLm9uU3VjY2VzcyhhcGlSZXNwb25zZS5kYXRhLCB0aGlzLmRldGFpbHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGJ1dHRvbi5rZWVwT3Blbikge1xyXG4gICAgICAgICAgaWYgKGJ1dHRvbi5uYW1lID09PSAnY3JlYXRlJyAmJiBhcGlSZXNwb25zZS5kYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGV0YWlscyA9IGFwaVJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZCAmJiBhcGlSZXNwb25zZS5kYXRhW3RoaXMuZGV0YWlsc0NvbmZpZy5oZXJvRmllbGRdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9WYWx1ZSA9IGFwaVJlc3BvbnNlLmRhdGFbdGhpcy5kZXRhaWxzQ29uZmlnLmhlcm9GaWVsZF07XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29uZmlnLmhlcm9GaWVsZCA9IHRoaXMuZGV0YWlsc0NvbmZpZy5oZXJvRmllbGQ7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29uZmlnLmhlcm9WYWx1ZSA9IHRoaXMuZGV0YWlsc0NvbmZpZy5oZXJvVmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbmZpZy5tb2RlID0gJ2VkaXQnO1xyXG4gICAgICAgICAgICB0aGlzLnNldFRpdGxlQWN0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkQ29tcGxldGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ3N1Y2Nlc3MnLCBkYXRhOiB7IC4uLmFwaVJlc3BvbnNlLCBkYXRhOiBidXR0b24ubmFtZSA9PSAnY3JlYXRlJyA/IGFwaVJlc3BvbnNlLmRhdGEgOiB0aGlzLmRldGFpbHMgIH0gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UudG9hc3QoXCJFcnJvcjogXCIgKyBhcGlSZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDbG9zZVBvc2l0aW9uKCk6ICd0b3AnIHwgJ2JvdHRvbScge1xyXG4gICAgcmV0dXJuIHRoaXMuZGV0YWlsc0NvbmZpZy5jbG9zZU9wdGlvbnM/LnBvc2l0aW9uIHx8ICdib3R0b20nO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2xvc2VUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5kZXRhaWxzQ29uZmlnLmNsb3NlT3B0aW9ucz8udGV4dCB8fCAnQ2FuY2VsJztcclxuICB9XHJcblxyXG4gIHNob3VsZFNob3dUb3BDbG9zZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldENsb3NlUG9zaXRpb24oKSA9PT0gJ3RvcCc7XHJcbiAgfVxyXG5cclxuICBzaG91bGRTaG93Qm90dG9tQ2xvc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDbG9zZVBvc2l0aW9uKCkgPT09ICdib3R0b20nO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKXtcclxuICAgIGlmICh0aGlzLmRldGFpbHNDb25maWcucmVmcmVzaE9uQ2xvc2Upe1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7IG1lc3NhZ2U6ICdzdWNjZXNzJywgZGF0YTogdGhpcy5kZXRhaWxzIH0pO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgbWVzc2FnZTogJ2VtaXQnLCBkYXRhOiB0aGlzLmRldGFpbHMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufTtcclxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy1jb250YWluZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XHJcblxyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImlzUHJvY2Vzc2luZyAmJiBkYXRhU2VydmljZS5hcHBDb25maWcucHJvZ3Jlc3NMaW5lXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuXHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4OyBmb250LXdlaWdodDo1MDA7bWFyZ2luLWJvdHRvbTogMTBweDtcIiA+e3t0aXRsZUFjdGlvbiB8IHRpdGxlY2FzZX19IHt7Zm9ybUNvbmZpZz8udGl0bGV9fTwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHJcbiAgICAgICAgPHNwYS1jaGVjayAqbmdJZj1cImRldGFpbHNDb25maWcuYXV0b1JlZnJlc2hDb25maWdcIiBkaXNwbGF5PVwiQXV0byBSZWZyZXNoXCIgWyh2YWx1ZSldPVwiYXV0b1JlZnJlc2hFbmFibGVkXCIgKHZhbHVlQ2hhbmdlKT1cInRvZ2dsZUF1dG9SZWZyZXNoKClcIj48L3NwYS1jaGVjaz5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1Db25maWcubW9kZT09J3ZpZXcnICYmIGVkaXRCdXR0b24gJiYgdGVzdFZpc2libGUoZGV0YWlscyxlZGl0QnV0dG9uLm5hbWUpXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXA9XCJFZGl0XCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNldE1vZGUoJ2VkaXQnKVwiIFtkaXNhYmxlZF09XCJ0ZXN0RGlzYWJsZWQoZGV0YWlscyxlZGl0QnV0dG9uLm5hbWUpXCI+PG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiAqbmdJZj1cImxvYWRCeUFjdGlvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXA9XCJSZWZyZXNoXCIgY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImxvYWREYXRhKGZvcm1Db25maWcubG9hZEFjdGlvbiwgZGV0YWlsc0NvbmZpZy5jYXVzZVRhYmxlUmVmcmVzaClcIj48bWF0LWljb24gY2xhc3M9XCJyZWZyZXNoSWNvblwiPmNhY2hlZDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPCEtLSBBZGRlZDogVG9wIGNsb3NlIGJ1dHRvbiB3aGVuIHBvc2l0aW9uIGlzICd0b3AnIC0tPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG91bGRTaG93VG9wQ2xvc2UoKVwiIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwPVwiQ2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+PC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2PlxyXG4gICAgICA8c3BhLXN0ZXBzICpuZ0lmPVwic3RlcENvbmZpZyAmJiBkZXRhaWxzICYmIHN0ZXBDb25maWcuc3RpY2t5XCIgW2NvbmZpZ109XCJzdGVwQ29uZmlnXCIgW2RhdGFdPVwiZGV0YWlsc1wiPjwvc3BhLXN0ZXBzPlxyXG4gICAgICA8c3BhLXN0YXR1c2VzICpuZ0lmPVwic3RhdHVzQ29uZmlnICYmIGRldGFpbHMgJiYgc3RhdHVzQ29uZmlnPy5zdGlja3lcIiBbY29uZmlnXT1cInN0YXR1c0NvbmZpZ1wiIFtkYXRhXT1cImRldGFpbHNcIj48L3NwYS1zdGF0dXNlcz5cclxuICAgICAgPHNwYS1hbGVydCAqbmdJZj1cImZvcm1Db25maWcuYWxlcnRDb25maWcgJiYgZm9ybUNvbmZpZy5hbGVydENvbmZpZz8uc3RpY2t5XCIgW2NvbmZpZ109XCJmb3JtQ29uZmlnLmFsZXJ0Q29uZmlnXCIgW2RhdGFdPVwiZGV0YWlsc1wiPjwvc3BhLWFsZXJ0PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeSBkaWFsb2ctc2Nyb2xsLWNvbnRlbnRcIj5cclxuXHJcbiAgICAgIDxzcGEtc3RlcHMgKm5nSWY9XCJzdGVwQ29uZmlnICYmIGRldGFpbHMgJiYgIXN0ZXBDb25maWcuc3RpY2t5XCIgW2NvbmZpZ109XCJzdGVwQ29uZmlnXCIgW2RhdGFdPVwiZGV0YWlsc1wiPjwvc3BhLXN0ZXBzPlxyXG4gICAgICA8c3BhLXN0YXR1c2VzICpuZ0lmPVwic3RhdHVzQ29uZmlnICYmIGRldGFpbHMgJiYgIXN0YXR1c0NvbmZpZz8uc3RpY2t5XCIgW2NvbmZpZ109XCJzdGF0dXNDb25maWdcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtc3RhdHVzZXM+XHJcbiAgICAgIDxzcGEtYWxlcnQgKm5nSWY9XCJmb3JtQ29uZmlnLmFsZXJ0Q29uZmlnICYmICFmb3JtQ29uZmlnLmFsZXJ0Q29uZmlnPy5zdGlja3lcIiBbY29uZmlnXT1cImZvcm1Db25maWcuYWxlcnRDb25maWdcIiBbZGF0YV09XCJkZXRhaWxzXCI+PC9zcGEtYWxlcnQ+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGluLWlucHV0XCIgc3R5bGU9XCJmb250LXNpemU6MTRweFwiPlxyXG5cclxuICAgICAgICA8cCAqbmdJZj1cImZvcm1Db25maWcgJiYgIWRldGFpbHNcIj48ZW0+TG9hZGluZy4uLjwvZW0+PC9wPlxyXG5cclxuICAgICAgICA8c3BhLWZvcm0gKm5nSWY9XCJmb3JtQ29uZmlnICYmIGRldGFpbHNcIiBbZmlsZXNdPVwiZmlsZXNcIiBbZGF0YV09XCJkZXRhaWxzXCIgW2NvbmZpZ109XCJmb3JtQ29uZmlnXCIgKGlucHV0Q2hhbmdlKT1cImlucHV0Q2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2R5bmFtaWNTZWxlY3QgbGV0LWZpZWxkPVwiZmllbGRcIiBsZXQtZGF0YT1cImRhdGFcIiBsZXQtdGVzdFJlYWRPbmx5PVwidGVzdFJlYWRPbmx5XCIgbGV0LXRlc3RSZXF1aXJlZD1cInRlc3RSZXF1aXJlZFwiIGxldC1zZWxlY3RDaGFuZ2VkPVwic2VsZWN0Q2hhbmdlZFwiPlxyXG4gICAgICAgICAgICA8c3BhLXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtkaXNwbGF5XT1cImZpZWxkLmFsaWFzID8/IGZpZWxkLm5hbWUgfCBjYW1lbFRvV29yZHNcIlxyXG4gICAgICAgICAgICAgIFt3aWR0aF09XCJmaWVsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgW251bGxhYmxlXT1cImZpZWxkLm51bGxhYmxlXCJcclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcclxuICAgICAgICAgICAgICBbbWFzdGVyT3B0aW9uc109XCJmaWVsZC5tYXN0ZXJPcHRpb25zXCJcclxuICAgICAgICAgICAgICBbbWFzdGVyRmllbGRdPVwiZmllbGQubWFzdGVyRmllbGRcIlxyXG4gICAgICAgICAgICAgIFtvcHRpb25EaXNwbGF5XT1cImZpZWxkLm9wdGlvbkRpc3BsYXkgPz8gJ25hbWUnXCJcclxuICAgICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwiZmllbGQub3B0aW9uVmFsdWUgPz8gJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiZGF0YVtmaWVsZC5uYW1lXVwiXHJcbiAgICAgICAgICAgICAgW2RlZmF1bHRGaXJzdFZhbHVlXT1cImZpZWxkLmRlZmF1bHRGaXJzdFZhbHVlXCJcclxuICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwidGVzdFJlcXVpcmVkKGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRlc3RSZWFkT25seShmaWVsZClcIlxyXG4gICAgICAgICAgICAgIFtoaW50XT1cImZpZWxkLmhpbnRcIlxyXG4gICAgICAgICAgICAgIFtkZXRhaWxzQ29uZmlnXT1cImZpZWxkLmRldGFpbHNDb25maWdcIlxyXG4gICAgICAgICAgICAgIFtsb2FkQWN0aW9uXT1cImZpZWxkLmxvYWRBY3Rpb25cIlxyXG4gICAgICAgICAgICAgIFtsb2FkSURGaWVsZF09XCJmaWVsZC5sb2FkSURGaWVsZFwiXHJcbiAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICBbZGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgICAgICBbaW5mb01lc3NhZ2VdPVwiZmllbGQuaW5mb01lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgIFtjb3B5Q29udGVudF09XCJmaWVsZC5jb3B5Q29udGVudFwiXHJcbiAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInNlbGVjdENoYW5nZWQoZmllbGQpXCJcclxuICAgICAgICAgICAgPjwvc3BhLXNlbGVjdD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9zcGEtZm9ybT5cclxuXHJcblxyXG4gICAgICAgIDxtYXQtdGFiLWdyb3VwICpuZ0lmPVwidGFibGVDb25maWdzXCIgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0Ymwgb2YgdGFibGVDb25maWdTZXJ2aWNlLmdldFZpc2libGVUYWJsZUNvbmZpZ3ModGFibGVDb25maWdzKSA7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgPG1hdC10YWIgKm5nSWY9XCJ0ZXN0VmlzaWJsZVRhYih0YmwpXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJMYWJlbD5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dGJsLnRhYlRpdGxlID8/ICdVbnRpdGxlZCd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICA8c3BhLXRhYmxlLWludGVybmFsIFxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ0YmxcIiBcclxuICAgICAgICAgICAgICAgIFtyZWxvYWRdPVwidGFibGVSZWxvYWRcIiBcclxuICAgICAgICAgICAgICAgIFtpblRhYl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFthY3RpdmVUYWJdPVwic2VsZWN0ZWRUYWJJbmRleCA9PT0gaVwiXHJcbiAgICAgICAgICAgICAgICAoYWN0aW9uU3VjY2Vzcyk9XCJ0YmwuY2F1c2VGb3JtUmVmcmVzaCA/IGxvYWREYXRhKGZvcm1Db25maWcubG9hZEFjdGlvbiwgZmFsc2UpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDwvc3BhLXRhYmxlLWludGVybmFsPlxyXG5cclxuICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwvbWF0LXRhYi1ncm91cD5cclxuXHJcblxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1hdC1kaWFsb2ctYWN0aW9ucyA+XHJcblxyXG4gICAgPGRpdj5cclxuXHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW2Rpc2FibGVkXT1cImlzUHJvY2Vzc2luZ1wiICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlPT0nY3JlYXRlJyAmJiBjcmVhdGVCdXR0b25cIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJjcmVhdGUoKVwiIGNka0ZvY3VzSW5pdGlhbD57e2NyZWF0ZUJ1dHRvbi5kaXNwbGF5ID8/ICdTdWJtaXQnfX1cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIiAqbmdJZj1cImZvcm1Db25maWcubW9kZT09J2VkaXQnICYmIGVkaXRCdXR0b25cIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgIChjbGljayk9XCJlZGl0KClcIiBjZGtGb2N1c0luaXRpYWw+e3tlZGl0QnV0dG9uLmRpc3BsYXkgPz8gJ1N1Ym1pdCd9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ0biBvZiBleHRyYUJ1dHRvbnNcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlICE9PSAnY3JlYXRlJyAmJiB0ZXN0VmlzaWJsZShkZXRhaWxzLGJ0bi5uYW1lKVwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nIHx8IHRlc3REaXNhYmxlZChkZXRhaWxzLGJ0bi5uYW1lKVwiIFtuZ1N0eWxlXT1cInsnY29sb3InOiBnZXRCdXR0b25Db2xvcihidG4sIGRldGFpbHMpfVwiIChjbGljayk9XCJjdXN0b20oYnRuKVwiIGNka0ZvY3VzSW5pdGlhbD5cclxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImJ0bi5pY29uXCIgW25nU3R5bGVdPVwieydjb2xvcic6IGdldEJ1dHRvbkNvbG9yKGJ0biwgZGV0YWlscyl9XCI+e3tidG4uaWNvbi5uYW1lfX08L21hdC1pY29uPlxyXG4gICAgICAgICAge3tidG4uZGlzcGxheSA/PyBidG4ubmFtZSB8IHRpdGxlY2FzZX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBDaGFuZ2VkOiBCb3R0b20gY2xvc2UgYnV0dG9uIG5vdyB1c2VzIGNvbmRpdGlvbmFsIGRpc3BsYXkgYW5kIGN1c3RvbSB0ZXh0IC0tPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2hvdWxkU2hvd0JvdHRvbUNsb3NlKClcIiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsb3NlKClcIj57e2dldENsb3NlVGV4dCgpfX08L2J1dHRvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCIgKm5nSWY9XCJzbWFsbFNjcmVlblwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXA9XCJEZWxldGVcIiBbZGlzYWJsZWRdPVwiaXNQcm9jZXNzaW5nXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiIChjbGljayk9XCJkZWxldGUoKVwiICpuZ0lmPVwiZm9ybUNvbmZpZy5tb2RlIT0nY3JlYXRlJyAgJiYgZGVsZXRlQnV0dG9uXCI+PG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4iXX0=
|